Built motion from commit f541bb3b.|2.6.14
authorsupport <support@xcally.com>
Sun, 31 Jul 2022 21:23:39 +0000 (21:23 +0000)
committersupport <support@xcally.com>
Sun, 31 Jul 2022 21:23:39 +0000 (21:23 +0000)
1271 files changed:
apidoc/api_project.js
apidoc/api_project.json
npm-shrinkwrap.json
package.json
public/app/forgot/i18n/pt-BR.json
public/app/login/i18n/is.json
public/app/login/i18n/pt-BR.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/pt-BR.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/pt-BR.json
public/app/main/apps/fax/i18n/pt-BR.json
public/app/main/apps/help/i18n/pt-BR.json
public/app/main/apps/integrations/i18n/is.json
public/app/main/apps/integrations/i18n/pt-BR.json
public/app/main/apps/jscripty/i18n/is.json
public/app/main/apps/jscripty/i18n/pt-BR.json
public/app/main/apps/mail/i18n/is.json
public/app/main/apps/mail/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/is.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/openchannel/i18n/is.json
public/app/main/apps/openchannel/i18n/pt-BR.json
public/app/main/apps/settings/i18n/is.json
public/app/main/apps/settings/i18n/pt-BR.json
public/app/main/apps/sms/i18n/is.json
public/app/main/apps/sms/i18n/pt-BR.json
public/app/main/apps/staff/i18n/bs.json
public/app/main/apps/staff/i18n/is.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/tools/i18n/is.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/voice/i18n/is.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/quick-panel/i18n/pt-BR.json
public/app/reset/i18n/pt-BR.json
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/bs.json
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/es.json
public/app/toolbar/i18n/et.json
public/app/toolbar/i18n/fa.json
public/app/toolbar/i18n/fi.json
public/app/toolbar/i18n/fr.json
public/app/toolbar/i18n/he.json
public/app/toolbar/i18n/hi.json
public/app/toolbar/i18n/hu.json
public/app/toolbar/i18n/id.json
public/app/toolbar/i18n/is.json
public/app/toolbar/i18n/ja.json
public/app/toolbar/i18n/ko.json
public/app/toolbar/i18n/lt.json
public/app/toolbar/i18n/lv.json
public/app/toolbar/i18n/nl.json
public/app/toolbar/i18n/no.json
public/app/toolbar/i18n/pl.json
public/app/toolbar/i18n/pt-BR.json
public/app/toolbar/i18n/pt-PT.json
public/app/toolbar/i18n/ru.json
public/app/toolbar/i18n/sv.json
public/app/toolbar/i18n/tr.json
public/app/toolbar/i18n/zh-CN.json
public/app/toolbar/i18n/zh-TW.json
public/index.html
public/scripts/app.41cc58a1.js [moved from public/scripts/app.0bca52b6.js with 52% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/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.events.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/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.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/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/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/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/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/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/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.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.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/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.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/cloud-provider.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/api.js
server/errors/index.js
server/migrations/2.6.14.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.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/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.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/voiceQueueSummary.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/realtime/utils.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/cmHopperAdditionalPhone.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/interval.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/tvox.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
server/utils/client-side-logger.js
server/utils/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js

index a4b4972..4847a36 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "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": "2022-07-15T07:47:18.825Z",
+    "time": "2022-07-31T21:16:14.105Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 5e92db8..abac729 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "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": "2022-07-15T07:47:18.825Z",
+    "time": "2022-07-31T21:16:14.105Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 857935c..65f6f96 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "dependencies": {
     "@swc/helpers": {
       "version": "0.3.17",
index 8a7ddc4..e0b9613 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.13",
+  "version": "2.6.14",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index f024ec7..036ec11 100644 (file)
@@ -2,10 +2,10 @@
   "FORGOTPASSWORD": {
     "TITLE": "Recupere sua senha",
     "EMAIL_ADRESS": "Endereço de e-mail",
-    "SEND_RESET_LINK": "Enviar link para reset",
-    "GO_BACK": "Volte para o login",
-    "LINK_SENT": "Link enviado",
-    "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para redefinir sua senha foi enviado para o seu endereço!",
+    "SEND_RESET_LINK": "ENVIAR LINK PARA RESET",
+    "GO_BACK": "Voltar ao login",
+    "LINK_SENT": "Link Enviado",
+    "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para reset de sua senha foi enviado para o seu endereço!",
     "PASSWORD_RESET_ERROR": "Erro ao resetar a senha",
     "ERRORS": {
       "EMAIL_REQUIRED": "Campo obrigatório",
index 261b193..83c91ce 100644 (file)
@@ -1,6 +1,6 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Símanúmr",
+    "TELEPHONES": "Símanúmer",
     "SELECT": "Velja",
     "CANCEL": "Hætta við",
     "TITLE": "Skráðu þig inn",
index d9f974d..59c6c41 100644 (file)
@@ -21,6 +21,6 @@
       "PASSWORD_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório"
     },
-    "WITH_AD": "Faça login com o Active Directory"
+    "WITH_AD": "Login com o Active Directory"
   }
 }
index 90c2dff..c7f2215 100644 (file)
     "STATUS": "Status",
     "OUTPUT": "Saída",
     "REPORTS": "Relatórios",
-    "SEARCH_FOR_FOLDER": "Procurar por Pasta",
+    "SEARCH_FOR_FOLDER": "Procurar por pasta",
     "CREATED_AT": "Criado em",
     "NEW_REPORT": "Novo Relatório",
     "ADD_REPORT": "Adicionar Relatório",
     "COPY_REPORT": "Copiar Relatório",
     "PREVIEW_REPORT": "Pré-visualizar Relatório",
     "RUN_REPORT": "Executar Relatório",
-    "DOWNLOAD_JSON_REPORT": "Exportar Relatório JSON",
+    "DOWNLOAD_JSON_REPORT": "Exportar Relatório em JSON",
     "EDIT_REPORT": "Editar Relatório",
     "DELETE_REPORT": "Excluir Relatório",
     "CREATE": "Criar Pasta",
@@ -53,9 +53,9 @@
     "ERROR": "Erro",
     "QUERY_ERROR": "Erro de Consulta",
     "MESSAGE": "Mensagem",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "FORMAT": "Formato",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FIELDS": "Campos",
     "CONDITION": "Condição",
@@ -65,7 +65,7 @@
     "VALUE": "Valor",
     "PREVIEW": "Pré-visualizar",
     "LIMITED_RESULT": "*Resultados limitados",
-    "NO_DATA": "Nenhum resultado de dados",
+    "NO_DATA": "Nenhum resultado",
     "CONDITIONS": "Condições",
     "ALIAS": "Alias",
     "FUNCTION": "Função",
     "ADD_REPORTFIELD": "Adicionar Campo",
     "EDIT_REPORTFIELD": "Editar Campo",
     "DELETE_REPORTFIELD": "Excluir Campo",
-    "METRIC_NAME": "Nome Métrica",
-    "NO_METRIC_FOUND": "Nenhuma Métrica Encontrada",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "METRIC_NAME": "Nome da Métrica",
+    "NO_METRIC_FOUND": "Nenhuma métrica encontrada",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "CUSTOM_METRIC": "Métrica Personalizada",
     "DELETE_EXTRACTEDREPORT": "Excluir Relatório Extraído",
     "EDIT_EXTRACTEDREPORT": "Editar Relatório Extraído",
     "DOWNLOAD_EXTRACTEDREPORT": "Download do Relatório Extraído",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "WEB_REPORT": "Relatório Web"
   }
index 1cb4fc1..04b4890 100644 (file)
@@ -8,7 +8,7 @@
     "AGENTS": "Agentes",
     "AGI": "AGI",
     "ALL_USERS": "Todos Usuários",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "APIKEY": "Chave API",
     "APPID": "ID do Aplicativo",
     "APPLICATION": "Aplicação",
     "ATTACHMENT_PATH": "Caminho do Anexo",
     "ATTACHMENT_TYPE": "Tipo de Anexo",
     "AUDIO": "Áudio",
-    "AUDIOENCODING": "Codificação de Áudio",
+    "AUDIOENCODING": "Codificação do Áudio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "ID Chave de Acesso",
-    "AWS_BOT_NAME": "Nome Bot",
+    "AWS_ACCESS_KEY_ID": "ID da Chave de Acesso",
+    "AWS_BOT_NAME": "Nome do Bot",
     "AWS_LEX_REGION": "Região",
     "AWS_POLLY_REGION": "Região",
     "AWS_POLLY_VOICE": "Voz",
     "AWS_SECRET_ACCESS_KEY": "Senha da Chave de Acesso",
     "AWS_TEXT_TYPE": "Tipo de texto",
     "BACK": "Voltar",
-    "BCC": "BCC",
+    "BCC": "CCO",
     "BEEP": "Beep",
-    "BODY": "Body",
+    "BODY": "Corpo",
     "CALLBACK": "Callback",
     "CALLBACK_PRIORITY": "Prioridade",
     "CALLYSQUARE": "Cally Square",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Escolha o Anexo",
-    "CLOSE": "Fechar",
+    "CLOSE": "Encerrar",
     "COMMAND": "Comando",
-    "COMPUTEDVARIABLES": "Caminho do script de variáveis computadas",
+    "COMPUTEDVARIABLES": "Caminho do Script de Variáveis Computadas",
     "CONDITION": "Condição",
     "CONTEXT": "Contexto",
     "COPY": "Copiar",
     "DATABASE": "Database",
     "DELAY": "delay [min]",
     "DELETE": "Excluir",
-    "DELETE_ODBC": "Deletar ODBC",
-    "DELETE_PROJECT": "Deletar Projeto",
-    "DELETE_SQUARERECORDING": "Excluir Gravação Cally Square",
+    "DELETE_ODBC": "Excluir ODBC",
+    "DELETE_PROJECT": "Excluir Projeto",
+    "DELETE_SQUARERECORDING": "Excluir Gravação do Cally Square",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
-    "DIALOGFLOW": "Fluxo de diálogo",
+    "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
     "DIGIT": "Max Dígitos",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação Cally Square",
-    "DROP_TO_UPLOAD": "SOLTAR AQUI PARA CARREGAR",
+    "DOWNLOAD_SQUARERECORDING": "Download de Gravação do Cally Square",
+    "DROP_TO_UPLOAD": "SOLTE AQUI PARA UPLOAD",
     "DROP_TO_UPLOAD_MESSAGE": "Você também pode soltar arquivos aqui para fazer o upload. Apenas XML - Máx. 5MB",
     "DSN": "DSN",
     "EDIT": "Editar",
     "EDIT_ODBC": "Editar ODBC",
     "EDIT_PROJECT": "Editar Projeto",
-    "EDIT_SQUARERECORDING": "Editar Gravação Cally Square",
+    "EDIT_SQUARERECORDING": "Editar Gravação do Cally Square",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
     "ERRORS": {
     "EXTEN": "Exten",
     "EXTENSION": "Extensão",
     "EXT_DIAL": "Discagem Externa",
-    "FILE": "Nome do arquivo",
+    "FILE": "Nome do Arquivo",
     "FILENAME": "Nome do Arquivo",
     "FILE_ID": "Áudio",
     "FINALLY": "Finalmente",
     "FINDBY": "Encontrar por",
-    "GETDIGITS": "Obter dígitos",
+    "GETDIGITS": "Obter Dígitos",
     "GETSECRETDIGITS": "Obter Dígitos Secretos",
-    "GOAL": "Objetivo",
-    "GOALNAME": "Nome do Objetivo",
+    "GOAL": "Qualificar",
+    "GOALNAME": "Nome da Qualificação",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Idioma",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GO_TO_PROJECTS": "Ir para projetos",
     "GRAMMAR": "Gramática",
     "HANGUP": "Desligar",
-    "HEADERS": "Cabeçalhos",
+    "HEADERS": "Headers",
     "HELP": {
       "BCC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "CC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MAX_TEXT_TTS": "O número máximo de caracteres suportados é 200",
       "TO": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Número de Dígitos Ocultos",
-    "HIDDENDIGITSPOS": "Posição dos Dígitos Ocultos",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "hidden Digits Position",
     "ID": "Id",
     "IMPORT": "Importar",
     "IMPORT_XML": "Importar XML",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
-    "MAILBOX": "Caixa de Correio",
+    "MAILBOX": "Caixa de Entrada",
     "MATH": "Math",
     "MAXDIGIT": "Dígitos Máximos",
     "MENU": "Menu",
     "NEW_PROJECT": "Novo Projeto",
     "NEW_VARIABLE": "Nova Variável",
     "NOOP": "NoOp",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NUMBER": "Número",
     "ODBC": "ODBC",
     "QUEUE": "Fila",
     "QUEUE_ID": "ID da Fila",
     "RAWBODY": "Corpo",
-    "RAWHEADERS": "Cabeçalhos",
+    "RAWHEADERS": "Headers",
     "RECORD": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
-    "RESPONSE": "Tempo Limite de Resposta",
+    "RESPONSE": "Timeout de Resposta",
     "RESTAPI": "API Rest",
     "RETRY": "Repetições",
     "ROWSPERPAGE": "Linhas por página",
     "SAVE": "Salvar",
     "SAYDIGITS": "Falar Dígitos",
-    "SAYNUMBER": "Falar Numero",
-    "SAYPHONETIC": "Say Phonetics",
+    "SAYNUMBER": "Falar número",
+    "SAYPHONETIC": "Falar Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
     "SELECTED_USERS": "Usuários Selecionados",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
-    "SIP_ID": "ID SIP",
-    "SMS_ACCOUNT_ID": "ID da CONTA SMS",
+    "SIP_ID": "SIP",
+    "SMS_ACCOUNT_ID": "Conta",
     "SMS_TEXT": "Texto",
     "SPEED": "Velocidade",
     "SQUARERECORDINGS": "Gravações",
     "SYSTEM": "Sistema",
     "TELEPHONES": "Telefones",
     "TEMPLATE_ID": "Modelo",
-    "TEST_ODBC": "Teste ODBC",
+    "TEST_ODBC": "Teste de ODBC",
     "TEXT": "Texto",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
     "TO": "Para",
     "TRUNK_NAME": "Nome do Tronco",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
+    "UNIQUEID": "ID Único",
     "UNPAUSE": "Fim da Pausa",
     "UPDATE_DESCRIPTION": "Atualizar Descrição",
-    "UPDATE_INFO": "Update Info",
+    "UPDATE_INFO": "Atualizar Info",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Nome de Usuário",
     "VOICEMAIL": "Correio de Voz",
     "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "Email do Cliente",
-    "DIALOGFLOWV2": "Fluxo de diálogo V2",
+    "DIALOGFLOWV2": "Dialogflow V2",
     "DIALOGFLOWV2_LANGUAGE": "Idioma",
     "DIALOGFLOWV2_PROJECT_ID": "ID do Projeto",
     "PRIVATE_KEY": "Chave Privada",
index b3e621c..8058385 100644 (file)
@@ -2,31 +2,31 @@
   "CHAT": {
     "EDIT_AMAZONLEX": "Editar Amazon Lex",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
+    "ACCESSKEYID": "ID da Chave de Acesso",
+    "SECRETACCESSKEY": "Senha de Chave de Acesso",
     "LEXREGION": "Região",
     "BOTNAME": "Nome do Bot",
     "LOGIN_TIME": "Tempo de login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Ativar notificações entregues / lidas pelo cliente",
+    "ENABLECUSTOMERCHECKMARKS": "Habilitar notificações de entregue/lida para o cliente",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Trasferir de Agente",
-    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
-    "SYSTEMAVATAR": "Avatar do sistema",
-    "SYSTEMALIAS": "Apelido do sistema",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência do Agente",
+    "SYSTEMAVATAR": "Avatar do Sistema",
+    "SYSTEMALIAS": "Apelido do Sistema",
+    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
     "LANGUAGE": "Idioma",
     "EDIT_DIALOGFLOW": "Editar Dialogflow",
     "DIALOGFLOW": "Dialogflow",
     "BACKGROUNDCOLOR": "Cor de Fundo",
-    "MESSAGEFONTSIZE": "Tamanho da fonte da mensagem",
+    "MESSAGEFONTSIZE": "Tamanho da Fonte da Mensagem",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
     "CUSTOMERALIAS": "Apelido \200b\200bdo Cliente",
-    "SNIPPETSWIPEOUT": "Snippet deslize para fora",
+    "SNIPPETSWIPEOUT": "Snippet swipe out",
     "CUSTOMERAVATAR": "Avatar do Cliente",
     "SHOWCUSTOMERAVATAR": "Mostrar avatar do cliente",
     "DEFAULTTITLE": "Título Padrão",
     "ALIGNMENT": "Alinhamento",
     "VERTICALALIGNMENT": "Alinhamento vertical",
     "BOTTOM_RIGHT": "Canto inferior direito",
-    "RIGHT": "Direta",
+    "RIGHT": "Direito",
     "LEFT": "Esquerda",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "AGENTIDENTIFIER": "Identificador",
-    "WEBSITEALIAS": "Nome do site",
+    "WEBSITEALIAS": "Nome do WebSite",
     "AGENTALIAS": "Nome do Agente",
     "AGENTFULLNAME": "Nome Completo do Agente",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
-    "TEXTCOLOR": "Cor do texto",
+    "TEXTCOLOR": "Cor do Texto",
     "FONTSIZE": "Tamanho da Fonte",
     "WEBSCRIPT": "Web Script",
     "CANNEDANSWERS": "Respostas Pré-definidas",
     "CHATCANNEDANSWERS": "Respostas Pré-definidas",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_CHATCANNEDANSWER": "Novo modelo de resposta",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_CHATCANNEDANSWER": "Nova Resposta Pré-definida",
     "ADD_CHATCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_CHATCANNEDANSWER": "Editar",
     "DELETE_CHATCANNEDANSWER": "Excluir",
     "OFFLINEMESSAGEBODY": "Corpo da mensagem",
     "FORMSUBMITSUCCESSMESSAGE": "Mensagem de sucesso no envio de formulário",
     "FORMSUBMITFAILUREMESSAGE": "Mensagem de falha no envio de formulário",
-    "PLACEHOLDERMESSAGE": "Espaço reservado da mensagem",
-    "NOTETITLE": "Título da nota",
-    "CLOSINGQUESTION": "Pergunta de encerramento",
+    "PLACEHOLDERMESSAGE": "Mensagem de marcação de posição",
+    "NOTETITLE": "Título da Observação",
+    "CLOSINGQUESTION": "Pergunta de Encerramento",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Mostrar avatar do agente pessoal",
+    "SHOWAGENTAVATAR": "Mostrar avatar pessoal do agente",
     "AGENTAVATAR": "Avatar do Agente",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_CHATQUEUE": "Ir para a Fila de Webchat em Tempo Real",
+    "SPYINTERACTION": "Espiar",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_CHATQUEUE": "Visualizar Fila do Chat em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Webchat",
+    "AGENTSADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
-    "READY": "Pronto",
+    "READY": "Disponível",
     "WAITING": "Esperando",
-    "WRITING": "Escrita",
-    "CHAT": "WebChat",
+    "WRITING": "Escrevendo",
+    "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pausa",
-    "REALTIME": "Tempo real",
+    "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
-    "UNPAUSE": "Pausa final",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Webchat",
+    "UNPAUSE": "Finalizar Pausa",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Chat",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
-    "NEW_CHATDISPOSITION": "Nova Qualificação Webchat",
-    "ENABLECUSTOMERATTACHMENT": "Ativar Anexos do Cliente",
-    "OFFLINE_CHAT_BUTTON": "Botão Chat off-line",
+    "NEW_CHATDISPOSITION": "Nova Qualificação do Chat",
+    "ENABLECUSTOMERATTACHMENT": "Habilitar Anexos do Cliente",
+    "OFFLINE_CHAT_BUTTON": "Botão de 'Chat Offline'",
     "OFFLINESTATUS": "Status Offline",
     "NAME": "Nome",
-    "CHATQUEUES": "Filas Webchat",
+    "CHATQUEUES": "Filas do Chat",
     "SEARCH_FOR_ANYONE": "Procurar",
     "STRATEGY": "Estratégia",
     "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALIAS": "Alias",
     "VARIABLE": "Variável",
     "INTERVAL": "Intervalo",
     "EDIT_CLOSE": "Editar Encerramento",
     "TIMEZONE": "Fuso horário",
-    "MESSAGE": "Messagem",
+    "MESSAGE": "Mensagem",
     "ADVANCED": "Avançado",
     "FORWARDTRANSCRIPT": "Encaminhar Transcrição",
     "FORWARDTRANSCRIPTMESSAGE": "Mensagem de Encaminhar Transcrição",
-    "SKIPMESSAGEBUTTON": "Ignorar botão de mensagem",
+    "SKIPMESSAGEBUTTON": "Botão de Ignorar Mensagem",
     "EDIT_MESSAGE": "Editar Mensagem",
-    "CONDITION_AGREEMENT": "Condition Agreement",
+    "CONDITION_AGREEMENT": "Condições do Acordo",
     "NONE": "Nenhum",
     "PRIORITY": "Prioridade",
-    "ONLINESTATUS": "Status online",
-    "UNMANAGEDSTATUS": "Status não gerenciado",
+    "ONLINESTATUS": "Status Online",
+    "UNMANAGEDSTATUS": "Status Não Gerenciado",
     "AUTOCLOSE": "Ativar Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Ativar Mensagem não Gerenciada",
+    "ENABLEUNMANAGEDNOTE": "Habilitar Mensagem não Gerenciada",
     "UNMANAGEDMESSAGE": "Messagem",
-    "SKIPUNMANAGED": "Pular Mensagem",
-    "SENDUNMANAGED": "Enviar mensagem",
-    "WEBSITESCRIPT": "Website Script",
+    "SKIPUNMANAGED": "Ignorar Mensagem",
+    "SENDUNMANAGED": "Enviar Mensagem",
+    "WEBSITESCRIPT": "Script do WebSite",
     "DELETE_OFFLINEMESSAGE": "Excluir",
     "OFFLINEMESSAGES": "Mensagens Offline",
     "FORWARD_OFFLINE": "Encaminhar Offline",
     "SHOW_OFFLINEMESSAGE": "Mostrar",
     "FORWARD_OFFLINE_ADDRESS": "Endereço para Encaminhar Offline",
     "CLOSINGFORM": "Formulário de Encerramento",
-    "ENABLERATING": "Ativar Classificação",
+    "ENABLERATING": "Habilitar Classificação",
     "ENABLECUSTOMERWRITING": "Permitir que o cliente escreva antes que seja atribuído ao agente",
-    "ENABLEFEEDBACK": "Ativar Feedback",
+    "ENABLEFEEDBACK": "Habilitar Feedback",
     "RATINGTYPE": "Tipo de Avaliação",
     "CLOSINGMESSAGE": "Mensagem de Encerramento",
     "CLOSINGMESSAGEBUTTON": "Mensagem do Botão de Encerramento",
-    "RATINGSTARSNUMBER": "Número de estrelas de avaliação",
+    "RATINGSTARSNUMBER": "Número de Estrelas de Avaliação",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID da Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "VALUE": "Valor",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Campo Obrigatório",
-      "SECRETACCESSKEY_REQUIRED": "Campo Obrigatório",
-      "ACCESSKEYID_REQUIRED": "Campo Obrigatório",
+      "BOTNAME_REQUIRED": "Campo obrigatório",
+      "SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+      "ACCESSKEYID_REQUIRED": "Campo obrigatório",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "CUSTOMERALIAS_REQUIRED": "Campo Obrigatório",
-      "AGENTALIAS_REQUIRED": "Campo Obrigatório",
-      "SYSTEMALIAS_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "CUSTOMERALIAS_REQUIRED": "Campo obrigatório",
+      "AGENTALIAS_REQUIRED": "Campo obrigatório",
+      "SYSTEMALIAS_REQUIRED": "Campo obrigatório",
       "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "MESSAGEFONTSIZE_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
-      "VERTICALPOSITION_REQUIRED": "Campo Obrigatório",
+      "MESSAGEFONTSIZE_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "VERTICALPOSITION_REQUIRED": "Campo obrigatório",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "FONTSIZE_REQUIRED": "Campo Obrigatório",
+      "FONTSIZE_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "VALUE_REQUIRED": "Campo Obrigatório",
       "CUSTOMERALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "CLOSINGQUESTION_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "HEADER_OFFLINE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "SENDUNMANAGED_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "SENDUNMANAGED_REQUIRED": "Campo obrigatório",
       "SENDUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SKIPUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "UNMANAGEDMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WEBSITEALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "EMAIL_MUST_BE_VALID": "Formato incorreto",
-      "ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ADDRESS_REQUIRED": "Campo obrigatório",
       "ADDRESS_MUST_VALID_URL": "Formato incorreto",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo obrigatório",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITINGMESSAGE_REQUIRED": "Campo Obrigatório",
-      "WAITINGTITLE_REQUIRED": "Campo Obrigatório",
+      "WAITINGMESSAGE_REQUIRED": "Campo obrigatório",
+      "WAITINGTITLE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
       "WAITINGMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WAITINGTITLE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
+      "VIDAOOAPIKEY_REQUIRED": "Campo obrigatório",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "VIDAOOTOPIC_REQUIRED": "Campo obrigatório",
       "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
     },
-    "CM_FIELD": "Contact Manager Field",
+    "CM_FIELD": "Campo do Gestor de Contato",
     "CHATPROACTIVEACTIONS": "Ações Proativas",
-    "NEW_CHATPROACTIVEACTION": "Nova ação proativa",
+    "NEW_CHATPROACTIVEACTION": "Nova Ação Proativa",
     "EDIT_CHATPROACTIVEACTION": "Editar Ação Proativa",
     "DELETE_CHATPROACTIVEACTION": "Excluir Ação Proativa",
     "ADD_CHATPROACTIVEACTION": "Adicionar Ação Proativa",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma ação proativa disponível",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma Ação Proativa disponível",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem off-line disponível",
     "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "TYPE": "Tipo",
     "SELECTOR": "Seletor",
     "AGENT": "Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIf": "Editar GotoIf",
     "EDIT_NOOP": "Editar Noop",
-    "ADD_CHATQUEUE": "Adicionar Fila WebChat",
-    "EDIT_CHATQUEUE": "Editar Fila WebChat",
-    "DELETE_CHATQUEUE": "Excluir Fila de WebChat",
+    "ADD_CHATQUEUE": "Adicionar à Fila de Chat",
+    "EDIT_CHATQUEUE": "Editar Fila do Chat",
+    "DELETE_CHATQUEUE": "Excluir Fila do Chat",
     "SETTINGS": "Configurações",
     "SAVE": "Salvar",
-    "SCRIPT": "Roteiro",
+    "SCRIPT": "Script",
     "TOKEN": "Token",
     "CREATED_AT": "Criado em",
-    "CHATWEBSITES": "Websites do Webchat",
-    "MOTIONADDRESS": "Domínio do site",
-    "MOTIONPROXY": "Domínio de Proxy ou Motion",
-    "ADD_CHATWEBSITE": "Adicionar Website do WebChat",
-    "EDIT_CHATWEBSITE": "Editar Website do Webchat",
-    "DELETE_CHATWEBSITE": "Excluir Website do Webchat",
+    "CHATWEBSITES": "Websites do Chat",
+    "MOTIONADDRESS": "Domínio do Website",
+    "MOTIONPROXY": "Proxy ou Domínio do Motion",
+    "ADD_CHATWEBSITE": "Adicionar Website do Chat",
+    "EDIT_CHATWEBSITE": "Editar Website do Chat",
+    "DELETE_CHATWEBSITE": "Excluir Website do Chat",
     "LIST": "Lista",
-    "SNIPPET": "Fragmento",
+    "SNIPPET": "Snippet",
     "FORMS": "Formulários",
     "UP": "Acima",
     "DOWN": "Baixo",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Ações proativas",
+    "COLLAPSE": "Recolher",
+    "PROACTIVEACTIONS": "Ações Proativas",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ANIMATION": "Animação",
     "DEFAULT": "Padrão",
     "WHITELABEL": "White Label",
-    "LOGO": "Logo",
+    "LOGO": "Logomarca",
     "DOWNLOADTRANSCRIPT": "Download Transcrição",
     "ENQUIRY_ENABLE": "Habilitar Consulta",
     "ENQUIRY_FORWARDING": "Encaminhamento de Consulta",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Cabeçalho Online",
     "ONLINE_MESSAGE": "Mensagem Online",
-    "NAME_TITLE": "Nome da etiqueta de entrada",
-    "USERNAME_PLACEHOLDER": "Local de entrada de nome de usuário",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Espaço reservado para entrada de e-mail",
-    "START_CHAT_BUTTON": "Botão 'Iniciar chat'",
+    "NAME_TITLE": "Nome do Campo de Entrada",
+    "USERNAME_PLACEHOLDER": "Marcação de posição do Nome do Usuário",
+    "EMAIL_TITLE": "Campo para inserir Email",
+    "EMAIL_PLACEHOLDER": "Marcação de posição do Email",
+    "START_CHAT_BUTTON": "Botão 'Iniciar Chat'",
     "AGENTS_BUSY": "Mensagem quando Agentes estão Ocupados",
     "HEADER_OFFLINE": "Cabeçalho Offline",
     "OFFLINE_MESSAGE": "Mensagem Offline",
-    "MESSAGE_TITLE": "Rótulo de Mensagem",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Espaço reservado para entrada de Mensagem de Consulta",
+    "MESSAGE_TITLE": "Título da Mensagem",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Marcação de posição na Consulta",
     "ENQUIRY_BUTTON": "Texto do Botão de Consulta",
     "RATING_MESSAGE": "Mensagem de Avaliação",
-    "RATING_SEND": "Texto do botão de envio de classificação",
-    "RATING_SKIP": "Texto do botão Ignorar classificação",
+    "RATING_SEND": "Texto do botão de Envio de Avaliação",
+    "RATING_SKIP": "Texto do botão de Ignorar Avaliação",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proativo",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Metodo",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Metodo",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
     "CLOSEMETHOD": "Método de Encerramento",
     "CLOSEURL": "URL de Encerramento",
     "EMBEDDING": "Incorporação",
     "GENERAL": "Geral",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "BACK": "Voltar",
     "HELP": {
       "VERTICALPOSITION": "Representa a distância em porcentagem do topo",
-      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Webchat",
+      "AGENTIDENTIFIER": "Representa o identificador do agente dentro da sessão de Chat",
       "HIDEWHENOFFLINE": "Ocultar a janela quando está Offline",
-      "KEY": "Nome abreviado do website (5 caracteres) exibido na guia Agente",
+      "KEY": "Nome abreviado do website (5 caracteres) exibido na aba de atendimento do Agente",
       "TOKEN": "Token gerado automaticamente usado no script",
       "INTEVAL": "A ser selecionado na lista de intervalos disponíveis",
       "TIMEZONE": "Selecione um da lista (padrão = fuso horário local)",
-      "ENABLERATING": "Ative se quiser que o ciente possa avaliar a interação ao encerrar",
+      "ENABLERATING": "Habilite se quiser que o ciente possa avaliar a interação ao encerrar",
       "ENABLEFEEDBACK": "Habilite se você quiser que o cliente possa enviar um feedback (até 150 caracteres) ao encerrar",
-      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do webchat por e-mail",
-      "AUTOCLOSE": "Ative se quiser que as sessões de chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
-      "ENABLEUNMANAGEDNOTE": "Ative se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o webchat for Não Gerenciado",
-      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao visitante da web durante a sessão de bate-papo",
-      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Webchat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus webchats nunca serão Não Gerenciados).",
-      "MAPKEY": "O seguinte campo do Motion Contact Manager:",
-      "FROMKEY": "Será mapeado na sua janela do Webchat como:",
+      "FORWARDTRANSCRIPT": "Habilite se deseja que o cliente receba uma transcrição do chat por e-mail",
+      "AUTOCLOSE": "Habilite se quiser que as sessões de Chat sejam encerradas como Não Gerenciadas, se nenhum agente estiver disponível.",
+      "ENABLEUNMANAGEDNOTE": "Habilite se quiser que o cliente receba uma mensagem quando todos os agentes estiverem ocupados e o quando o Chat for Não Gerenciado",
+      "WEBSITEALIAS": "Um prefixo usado para compor o nome do agente (prefixo + ID do agente) mostrado ao cliente durante a sessão de chat",
+      "ENABLECUSTOMERWRITING": "Habilite se você deseja que o Chat inicie sem esperar atribuir a um agente disponível (atenção: se você ativar, seus chats nunca serão Não Gerenciados).",
+      "MAPKEY": "O seguinte campo da Gestão de Contatos:",
+      "FROMKEY": "Será mapeado na sua janela do Chat como:",
       "COPYSCRIPTTOCLIPBOARD": "Copie e cole este script no seu website",
       "FORWARD_OFFLINE": "Você pode adicionar vários endereços separados por vírgulas (por exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória"
     },
     "ADDRESS": "Endereço",
-    "ONLINESTATE": "Status online",
+    "ONLINESTATE": "Status Online",
     "OFFLINESTATE": "Status Offline",
     "RATINGSTATE": "Status de Avaliação",
     "ENQUIRY": "Consulta",
     "OFFLINETEMPLATE": "Modelo Offline",
-    "CHATDISPOSITIONS": "Qualificações de Webchat",
-    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma disposição de chat disponível",
-    "ADD_CHATDISPOSITION": "Adicionar Qualificação Webchat",
+    "CHATDISPOSITIONS": "Qualificações do Chat",
+    "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Chat disponível",
+    "ADD_CHATDISPOSITION": "Adicionar Qualificação de Chat",
     "DELETE": "Excluir",
-    "EDIT_CHATDISPOSITION": "Editar Qualificação Webchat",
-    "DELETE_CHATDISPOSITION": "Excluir Qualificação Webchat",
+    "EDIT_CHATDISPOSITION": "Editar Qualificação do Chat",
+    "DELETE_CHATDISPOSITION": "Excluir Qualificação Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nova fila de chat",
-    "NEW_CHATWEBSITE": "Novo site de chat",
-    "ROUNDED": "Rounded",
+    "NEW_CHATQUEUE": "Nova Fila do Chat",
+    "NEW_CHATWEBSITE": "Novo WebSite do Chat",
+    "ROUNDED": "Arredondado",
     "SQUARED": "Squared",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "PAGE": "Pagina",
+    "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "of",
     "CONTACT": "Contato",
     "ACCOUNT": "Conta",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
-    "WEBSITE": "Website",
+    "WEBSITE": "WebSite",
     "ALL": "Todos",
-    "SELECT_STATUS": "Selecione um status",
+    "SELECT_STATUS": "Selecione um Status",
     "FILTER": "Filtro",
     "FILTERS": "Filtros",
-    "TEAMADD_CHATQUEUE": "Adicionar equipe à fila de chat",
-    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Webchat",
+    "TEAMADD_CHATQUEUE": "Adicionar Equipe à Fila do Chat",
+    "AGENTADD_CHATQUEUE": "Adicionar Agente à Fila do Chat",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
     "CREATEDAT": "Criado em",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
-    "SELECTED_WEBSITE": "Selecione um site",
+    "SELECTED_WEBSITE": "Selecione um WebSite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "SELECT_WEBSITE": "Selecione um site",
+    "SELECT_WEBSITE": "Selecione um WebSite",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para mensagens off-line",
-    "WAITINGTITLE": "Esperando Título",
-    "WAITINGMESSAGE": "Mensagem de espera",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Ir para Mensagens Offline",
+    "WAITINGTITLE": "Título de Espera",
+    "WAITINGMESSAGE": "Mensagem de Espera",
     "RATING": "Avaliação",
-    "NO_RATINGVALUE": "Sem avaliação",
+    "NO_RATINGVALUE": "Sem Avaliação",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "VOICE": "Voz",
     "INTERACTIONS_CHATWEBSITE": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
     "DELETE_INTERACTION": "Excluir Interação",
-    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Webchat",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "AGENTADD_CHATWEBSITE": "Adicionar Agente ao Website do Chat",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "MANDATORYDISPOSITIONPAUSEID": "Pausa para Qualificação obrigatória",
-    "ENABLESENDBUTTON": "Ativar Botão Enviar",
+    "ENABLESENDBUTTON": "Habilitar Botão Enviar",
     "FEEDBACKTITLE": "Título do Feedback",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem",
     "VIDAOO": "Vidaoo",
-    "VIDAOOAPIKEY": "Vidaoo Api Key",
-    "VIDAOOESCALATION": "Iniciar videochamada",
-    "VIDAOOSESSION": "Iniciar videochamada",
+    "VIDAOOAPIKEY": "Chave API do Vidaoo",
+    "VIDAOOESCALATION": "Iniciar Vídeo Chamada",
+    "VIDAOOSESSION": "Iniciar Vídeo Chamada",
     "VIDEO": "Vídeo",
     "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "EMAIL_ACCOUNT": "Conta de e-mail",
-    "OPEN_NEW_INTERACTION": "Abra uma nova interação",
-    "SUBJECT": "Sujeito",
-    "ADD_NOTE": "Adicionar Nota",
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "EMAIL_ACCOUNT": "Conta de Email",
+    "OPEN_NEW_INTERACTION": "Abrir nova interação",
+    "SUBJECT": "Assunto",
+    "ADD_NOTE": "Adicionar Oberservação",
     "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
     "NOTE": "Observação",
-    "VIDAOOMETADATA": "Vidaoo Metadata",
-    "VIDAOONOTE": "Vidaoo Note",
-    "VIDAOOTOPIC": "Tema Vidaoo",
+    "VIDAOOMETADATA": "Metadata do Vidaoo",
+    "VIDAOONOTE": "Observação do Vidaoo",
+    "VIDAOOTOPIC": "Tema do Vidaoo",
     "CHANNELID": "ID do Canal",
     "EDIT_TVOX": "Editar TVox",
-    "MOTIONTITLE": "Título de Movimento",
-    "MOTIONURL": "URL de movimento",
-    "MOTIONURLONANSWER": "URL de movimento na resposta",
-    "MOTIONURLONRING": "URL de movimento no anel",
-    "SERVICEID": "ID de serviço",
+    "MOTIONTITLE": "Título do Motion",
+    "MOTIONURL": "URL do Motion",
+    "MOTIONURLONANSWER": "URL do Motion no Atendimento",
+    "MOTIONURLONRING": "URL do Motion no Toque",
+    "SERVICEID": "ID de Serviço",
     "SERVICENAME": "Nome do Serviço",
     "TVOX": "TVox",
     "TVOXIP": "Endereço IP da TVox",
-    "TVOXLOGINURL": "URL REST de login da TVox",
+    "TVOXLOGINURL": "URL REST de Login da TVox",
     "TVOXPASSWD": "Senha TVox",
-    "TVOXSESSIONURL": "Url REST da sessão TVox",
-    "TVOXURL": "URL de TVox IP",
-    "TVOXUSERNAME": "Nome de usuário da TVox",
+    "TVOXSESSIONURL": "URL REST de Sessão da TVox",
+    "TVOXURL": "URL da TVox IP",
+    "TVOXUSERNAME": "Nome de Usuário da TVox",
     "LABELTEXT": "Texto da etiqueta",
-    "TEXT_BUTTON_COLOR": "Cor do botão de texto"
+    "TEXT_BUTTON_COLOR": "Cor do Botão de Texto"
   }
 }
index f16f522..87ce427 100644 (file)
@@ -2,12 +2,12 @@
   "CONTACTMANAGER": {
     "SELECT_TAG": "Selecione Tags",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "USERID": "Agent ID Agendamento",
+    "USERID": "ID do Agente no Agendamento",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
     "IMPORT_CONTACTS": "Importar Contatos",
     "PREFIX": "Prefixo de Discagem",
-    "VOICEQUEUEID": "ID Fila de Voz",
+    "VOICEQUEUEID": "ID da Fila de Voz",
     "CAMPAIGNID": "ID Campanha",
     "STATE": "Estado",
     "NAME": "Nome",
@@ -15,7 +15,7 @@
     "UNIQUEID": "ID Único",
     "STATUS": "Status",
     "STARTTIME": "Início",
-    "ENDTIME": "Fim",
+    "ENDTIME": "Hora do Término",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Funil",
     "FINAL": "Finalização",
@@ -26,7 +26,7 @@
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_LIST": "Excluir Lista",
     "DELETE_HOPPER": "Excluir Funil",
-    "RELOAD": "Reload",
+    "RELOAD": "Recarregar",
     "NO_COMPANIES": "Nenhuma Empresa",
     "NO_AVAILABLE_ITEMS": "Nenhum Item Disponível",
     "ADD": "Adicionar",
@@ -51,7 +51,7 @@
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
-    "SELECT_NONE": "Desselecionar",
+    "SELECT_NONE": "Selecione Nenhum",
     "COMPANIES": "Empresas",
     "EDIT_COMPANY": "Editar Empresa",
     "DELETE_COMPANY": "Excluir Empresa",
@@ -89,9 +89,9 @@
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CUSTOMFIELDS": "Campos Personalizados",
-    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado Disponível",
+    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado disponível",
     "ADD_TAG": "Adicionar Tag",
-    "NO_TAG": "Sem Tags",
+    "NO_TAG": "Nenhuma Tags",
     "ALIAS": "Alias",
     "TYPE": "Tipo",
     "VALUE": "Valor",
     "NEW_COMPANY": "Nova Empresa",
     "NEW_CONTACT": "Novo Contato",
     "NEW_TAG": "Nova Tag",
-    "UPLOAD_CONTACTS": "Upload Contatos",
+    "UPLOAD_CONTACTS": "Upload de Contatos",
     "FINISH": "Terminar",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
     "ALL_CONTACTS": "Todos os Contatos",
     "NEW_CUSTOMFIELD": "Novo Campo Personalizado",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz Disponível",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Voz disponível",
     "ADD_VOICEDISPOSITION": "Adicionar Qualificação de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
     "EMAIL_DOMAIN": "Domínio de Email",
     "ADDRESS": "Endereço",
     "POSTAL_CODE": "CEP",
-    "SHIPMENTADDRESS": "Endereço de Envio",
+    "SHIPMENTADDRESS": "Endereço de Entrega",
     "COPY_CONTACT": "Copiar Contato",
     "GOTOCONTACTS_LIST": "Ir para Listas",
     "GOTOCONTACTS_COMPANY": "Ir para Empresas",
     "ADD_AGENT_TO_LIST": "Adicionar Agente à Lista",
     "AGENTADD_LIST": "Adicionar Agentes à Lista",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NONE": "Nenhum",
     "FULLNAME": "Nome Completo",
     "CHECK_DUPLICATES": "Verificar Duplicados",
     "DUPLICATES": "Duplicados",
     "UPLOAD_CSV": "Upload CSV",
     "TAG": "Tag",
-    "UPLOAD": "Envio",
+    "UPLOAD": "Upload",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "DATE_OF_BIRTH": "Data de Nascimento",
       "PHONEBAR_API": "Para habilitar click-to-call, insira o número do telefone e verifique se o controle remoto esta ativo."
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por ágina",
     "OF": "do",
     "SOCIAL": "Social",
     "ROW": "Linha",
     "FLATDISCOUNT": "Desconto da Empresa",
     "INVOICEARTICLE": "Law Articles",
     "ISOCODE": "Código ISO",
-    "PAYMENTMETHOD": "Forma de pagamento",
+    "PAYMENTMETHOD": "Forma de Pagamento",
     "PIVA": "Número de IVA",
     "RELATIONSHIP": "Relacionamento ...",
     "RELATIONSHIPCOMPANY": " ... com",
index 174650f..0661352 100644 (file)
@@ -1,59 +1,59 @@
 {
   "DASHBOARDS": {
     "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Taxa não gerenciada",
-    "UNMANAGED_RATE_TEXT": "Taxa não gerenciada de interações",
-    "VOICE_WAITING": "ESPERANDO",
+    "UNMANAGED_RATE": "Taxa de Não Gerenciado",
+    "UNMANAGED_RATE_TEXT": "Taxa de Interações Não Gerenciadas",
+    "VOICE_WAITING": "AGUARDANDO",
     "VOICE_WAITING_TEXT": "CHAMADAS AGUARDANDO EM FILA",
     "VOICE_TALKING": "FALANDO",
-    "VOICE_TALKING_TEXT": "CHAMADAS DE FILA ATIVAS",
-    "VOICE_ANSWERED": "RESPONDIDAS",
-    "VOICE_ANSWERED_TEXT": "CHAMADAS DE FILA RESPONDIDAS",
+    "VOICE_TALKING_TEXT": "CHAMADAS EM CURSO",
+    "VOICE_ANSWERED": "ATENDIDAS",
+    "VOICE_ANSWERED_TEXT": "CHAMADAS ATENDIDAS",
     "VOICE_ABANDONED": "ABANDONADO",
-    "VOICE_ABANDONED_TEXT": "CHAMADAS DE FILA ABANDONADAS",
+    "VOICE_ABANDONED_TEXT": "CHAMADAS ABANDONADAS",
     "VOICE_TOTAL_OFFERED": "TOTAL OFERECIDO",
     "VOICE_TOTAL_OFFERED_TEXT": "TOTAL DE CHAMADAS NA FILA",
-    "TODAY_INTERACTIONS_STATS": "Interações Estatísticas Diárias",
+    "TODAY_INTERACTIONS_STATS": "Estatísticas Diárias de Interações",
     "VOICE_AVG_HOLD_TIME": "TEMPO MÉDIO DE ESPERA",
-    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA EM FILA",
-    "VOICE_AVG_TALK_TIME": "TEMPO DE CONVERSA MÉDIA",
-    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO DE CONVERSA MÉDIA NA FILA",
-    "VOICE_ANSWER_RATE": "TAXA DE RESPOSTA",
-    "VOICE_ANSWER_RATE_TEXT": "TAXA DE RESPOSTA DA FILA",
+    "VOICE_AVG_HOLD_TIME_TEXT": "TEMPO MÉDIO DE ESPERA",
+    "VOICE_AVG_TALK_TIME": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_AVG_TALK_TIME_TEXT": "TEMPO MÉDIO ATENDIMENTO",
+    "VOICE_ANSWER_RATE": "TAXA DE ATENDIMENTO",
+    "VOICE_ANSWER_RATE_TEXT": "TAXA DE ATENDIMENTO",
     "VOICE_ABANDON_RATE": "TAXA DE ABANDONO",
-    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO DA FILA",
-    "VOICE_UNMANAGED": "NÃO GERIDO",
-    "VOICE_UNMANAGED_TEXT": "NÃO GERIDOS DA FILA",
-    "OPENED_TEXT": "Interações abertas",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "VOICE_ABANDON_RATE_TEXT": "TAXA DE ABANDONO",
+    "VOICE_UNMANAGED": "NÃO GERENCIADO",
+    "VOICE_UNMANAGED_TEXT": "CHAMADAS NÃO GERENCIADAS",
+    "OPENED_TEXT": "Interações Abertas",
+    "MANAGED": "Atendido",
+    "MANAGED_TEXT": "Interações Atendidas",
     "ABANDONED": "Abandonado",
     "ABANDONED_TEXT": "Interações Abandonadas",
-    "ABANDONED_RATE": "Taxa Abandono",
+    "ABANDONED_RATE": "Taxa de Abandono",
     "ABANDONED_RATE_TEXT": "Taxa de Abandono de Interações",
-    "TOTAL_OFFERED": "Total oferecido",
+    "TOTAL_OFFERED": "Total Oferecido",
     "TOTAL_OFFERED_TEXT": "Interações Oferecidas",
-    "AVG_HOLD_TIME_TEXT": "Tempo médio de Espera das Interações",
-    "MANAGED_RATE": "Taxa gerenciada",
-    "MANAGED_RATE_TEXT": "Taxa gerenciada de interações",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "Nenhum conjunto de disposição",
+    "AVG_HOLD_TIME_TEXT": "Tempo Médio de Espera das Interações",
+    "MANAGED_RATE": "Taxa de Atendimento",
+    "MANAGED_RATE_TEXT": "Taxa de Atendimento de Interações",
+    "AVG_MANAGED_TIME": "Tempo Médio de Atendimento",
+    "AVG_MANAGED_TIME_TEXT": "Tempo Médio de Atendimento das Interações",
+    "NO_DISPOSITION_SET": "Nenhum conjunto de qualificação",
     "AGENTS": "Agentes",
     "TRANSFER": "Transferir",
     "NO_DATA_AVAILABLE": "Não há dados disponíveis",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "ME": "Me",
+    "ME": "Eu",
     "CURRENTLY_IN_USE_BY": "Atualmente em uso por",
     "NOTAVAILABLE": "Não disponível",
     "CLICKRELOAD": "Novas chamadas abandonadas! Por favor faça reload",
     "ASSIGNTO": "Atribuir a",
-    "SELECT_CAMPAIGN": "Selecione uma fila",
+    "SELECT_CAMPAIGN": "Selecionar Fila",
     "FREE": "Livre",
     "RESERVED": "Reservado",
     "QUEUECALLEREXITREASON": "Motivo",
-    "QUEUECALLEREXITAT": "Derrubado",
-    "LASTASSIGNEDTO": "Último Atribuído Para",
+    "QUEUECALLEREXITAT": "Perdido",
+    "LASTASSIGNEDTO": "Atribuído por último para",
     "ABANDONEDQUEUECALLS": "Chamadas Abandonadas na Fila",
     "ABANDONAT": "Abandonado",
     "QUEUE": "Fila",
     "READ": "Lido",
     "UNREAD": "Não lido",
     "SELECT_READ_UNREAD": "Selecione Lido/Não Lido",
-    "SELECT_AGENT": "Selecione o agente",
+    "SELECT_AGENT": "Selecione Agente",
     "MARK_AS_UNREAD": "Marcar como não lido",
-    "FILTER_VOICE_QUEUES": "Filtrar Filas de voz",
-    "CHANNEL_WAITING_TEXT": "Interações aguardando em fila",
+    "FILTER_VOICE_QUEUES": "Filtrar Filas de Voz",
+    "CHANNEL_WAITING_TEXT": "Interações Aguardando em Fila",
     "CHANNEL_QUEUE": "Fila",
     "CHANNEL_FROM": "De",
     "LOADING_INTERACTION": "Estamos carregando a interação...",
@@ -85,7 +85,7 @@
     "WED": "Qua",
     "THU": "Qui",
     "FRI": "Sexta",
-    "SAT": "Sab",
+    "SAT": "Sat",
     "SUN": "Dom",
     "DELETE": "Excluir",
     "LAST_3_DAYS": "Últimos 3 dias",
@@ -97,7 +97,7 @@
     "THIS_WEEK": "Esta Semana",
     "YESTERDAY": "Ontem",
     "TODAY": "Hoje",
-    "SELECT_DATE": "Selecione a data de início",
+    "SELECT_DATE": "Selecione a Data de Início",
     "HOME": "Inicio",
     "SET_AS": "Definir como",
     "PENDING": "Pendente",
     "DURATION": "Duração",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "NOT_ASSIGNED": "Não atribuído",
+    "NOT_ASSIGNED": "Não Atribuído",
     "UNKNOWN": "Desconhecido",
-    "SELECT_USER": "Selecione o usuário",
+    "SELECT_USER": "Selecione Usuário",
     "LAST_MESSAGE": "Última mensagem",
     "USER": "Usuário",
     "RATING": "Avaliação",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Assunto",
-    "REFERER": "Referenciador",
+    "REFERER": "Indicador",
     "ACCOUNT": "Conta",
     "WEBSITE": "Website",
     "AGENT": "Agente",
     "DISPOSITION": "Qualificar",
     "CONTACT": "Contato",
     "INTERACTION": "Interação",
-    "BROWSER_NAME": "Nome do Browser",
-    "BROWSER_VERSION": "Versão Browser",
-    "OS_NAME": "Nome do sistema operacional",
-    "OS_VERSION": "Versão do sistema operacional",
+    "BROWSER_NAME": "Nome do Navegador",
+    "BROWSER_VERSION": "Versão do Navegador",
+    "OS_NAME": "Nome do Sistema Operacional",
+    "OS_VERSION": "Versão do Sistema Operacional",
     "DEVICE_MODEL": "Modelo do Dispositivo",
-    "DEVICE_VENDOR": "Fabricante do Dispositivos",
+    "DEVICE_VENDOR": "Fabricante do Dispositivo",
     "DEVICE_TYPE": "Tipo do Dispositivo",
-    "RECALLME": "Lembre-me",
+    "RECALLME": "Agendar",
     "DROP_RATE": "Taxa de Perda",
     "DROPPED": "Perdidas",
     "DROPPED_TEXT": "Chamadas Perdidas em Fila",
     "DETAIL": "Detalhe",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitado",
-    "LIMITED_TEXT": "Campanhas de Ligações URA Originais/Limite",
+    "LIMITED_TEXT": "Campanhas de URA Originado/Limitado",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Gravações",
-    "TODAY_MOTION_BULL_STATS": "Estatísticas diárias das campanhas de filas",
+    "TODAY_MOTION_BULL_STATS": "Estatísticas Diárias das Campanhas de Fila",
     "ORIGINATED": "Originado",
-    "ORIGINATED_TEXT": "Chamadas de Fila Originadas",
+    "ORIGINATED_TEXT": "Chamadas Originadas",
     "UPDATE": "Atualizar",
     "MORE": "Adicionar",
     "MOTIONDIALER": "Motion Bull",
     "DISPOSE": "Encerrar",
     "QUEUES": "Filas",
-    "DIALER_CALL": "Numéro discado",
+    "DIALER_CALL": "Numéro Discado",
     "ELAPSED_TIME": "Tempo de Atendimento",
     "EDIT": "Editar",
     "MERGE": "Mesclar",
     "DUPLICATE": "Duplicado",
-    "UNIQUEID": "Uniqueid",
+    "UNIQUEID": "ID único",
     "CAMPAIGN": "Campanha",
     "NONE": "Nenhum",
     "NAME": "Nome",
     "ANSWER_MACHINE": "Answer Machine",
     "INTERESTED": "Interessado",
-    "NOT_INTERESTED": "Não interessado",
-    "PERSONAL_INFO": "Informação pessoal",
+    "NOT_INTERESTED": "Não Interessado",
+    "PERSONAL_INFO": "Informação Pessoal",
     "SOLD": "Vendido",
     "SPECIAL": "Especial",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reprogramar",
+    "RESCHEDULE": "Reagendar",
     "FIRSTNAME": "Primeiro Nome",
-    "LASTNAME": "Último nome",
-    "MOBILE": "Mobile",
+    "LASTNAME": "Sobrenome",
+    "MOBILE": "Celular",
     "DATE_OF_BIRTH": "Data de Aniversário",
     "COMPANY": "Empresa",
     "TAG": "Tag",
     "CUSTOM_FIELDS": "Campos Personalizados",
     "GENERAL": "Geral",
     "VOICE": "Voz",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas de Campanhas Gerais",
-    "TODAY_INBOUND_STATS": "Estatísticas diárias da fila de entrada",
-    "TODAY_OUTBOUND_STATS": "Estatísticas diárias de saída",
-    "WAITING": "Esperando",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Estatísticas Diárias de Campanhas de URA",
+    "TODAY_INBOUND_STATS": "Estatísticas Diárias da Fila de Entrada",
+    "TODAY_OUTBOUND_STATS": "Estatísticas Diárias de Chamadas de Saída",
+    "WAITING": "Aguardando",
     "TALKING": "Falando",
-    "INBOUND_ANSWERED": "Respondidas",
-    "OUTBOUND_ANSWERED": "Respondidas",
+    "INBOUND_ANSWERED": "Atendidas",
+    "OUTBOUND_ANSWERED": "Atendidas",
     "AVG_HOLD_TIME": "Tempo Médio de Espera",
-    "INBOUND_ANSWER_RATE": "Taxa de resposta",
-    "OUTBOUND_ANSWER_RATE": "Taxa de resposta",
+    "INBOUND_ANSWER_RATE": "Taxa de Atendimento",
+    "OUTBOUND_ANSWER_RATE": "Taxa de Atendimento",
     "ABANDON_RATE": "Taxa de Abandono",
-    "UNMANAGED": "Não gerenciado",
+    "UNMANAGED": "Não Gerenciado",
     "TOTAL": "Total",
     "TOT_DURATION": "Duração Total",
     "AVG_DURATION": "Duração Média",
     "HELP": {
-      "UNMANAGED_RATE": "A taxa não gerenciada de todas as interações",
-      "WAITING": "O número total de interações de espera",
-      "OPENED": "O número total de interações ativas",
-      "MANAGED": "O número total de interações concluídas",
-      "ABANDONED": "O número total de interações abandonadas",
-      "TOTAL_OFFERED": "O número total de interações (concluído + abandonado)",
-      "AVG_HOLD_TIME": "O tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
+      "UNMANAGED_RATE": "Taxa de Não Gerenciada de todas as interações",
+      "WAITING": "Número total de interações em espera",
+      "OPENED": "Número total de Interações Abertas",
+      "MANAGED": "Número total de interações atendidas",
+      "ABANDONED": "Número total de interações abandonadas",
+      "TOTAL_OFFERED": "Número total de interações (concluído + abandonado)",
+      "AVG_HOLD_TIME": "Tempo médio de retenção de interação, ou seja, o tempo médio gasto aguardando a resposta de um agente, para todas as interações existentes",
       "AVG_MANAGED_TIME": "O tempo médio de interação gerenciada, ou seja, o tempo médio gasto durante a conversa",
-      "MANAGED_RATE": "A taxa gerenciada de todas as interações",
-      "ABANDONED_RATE": "A taxa de abandono de todas as interações",
-      "UNMANAGED": "O número total de interações não gerenciadas",
-      "VOICE_WAITING": "O número total de chamadas da fila de espera, para todas as filas existentes",
-      "VOICE_TALKING": "O número total de chamadas da fila ativa, para todas as filas existentes",
-      "VOICE_ANSWERED": "O número total de chamadas de fila concluídas, para todas as filas existentes",
-      "VOICE_ABANDONED": "O número total de Chamadas de Filas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas para timeout e joinempty não serão consideradas",
-      "VOICE_TOTAL_OFFERED": "O número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em um IVR e não em uma fila, não serão consideradas",
-      "VOICE_AVG_TALK_TIME": "O tempo médio de conversa da fila, ou seja, o tempo médio gasto durante a conversa, para todas as filas existentes",
-      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera da fila, ou seja, o tempo médio gasto aguardando a resposta de um agente para todas as filas existentes",
-      "VOICE_ANSWER_RATE": "A taxa de resposta de todas as chamadas de fila",
-      "VOICE_UNMANAGED": "O número total de chamadas de fila não gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas para timeout, joinempty, leavewhenempty e exitwithkey (cfr. Asterisk doc para mais informações)",
-      "ORIGINATED": "Número total de chamadas discadas nas campanhas da fila",
-      "ORIGINATEDLIMITED": "Campanhas de Chamadas Originais / Limite",
-      "DROPPED": "O número total de chamadas de fila ignoradas, para todas as filas existentes",
-      "DROP_RATE": "A taxa de queda de todas as chamadas da fila",
-      "OUTBOUND_ANSWERED": "O número total de chamadas de saída concluídas",
-      "OUTBOUND_ANSWER_RATE": "A taxa de resposta de todas as chamadas de saída",
-      "ABANDON_RATE": "A taxa de abandono de todas as chamadas da fila",
-      "TOTAL": "O número total de chamadas de saída",
-      "TOT_DURATION": "A duração total de todas as chamadas de saída",
-      "AVG_DURATION": "A duração média de todas as chamadas de saída concluídas",
-      "MANDATORY_DISPOSITION_ENABLED": "Disposição obrigatória ativada para esta conta",
+      "MANAGED_RATE": "Taxa de atendimento de todas as interações",
+      "ABANDONED_RATE": "Taxa de abandono de todas as interações",
+      "UNMANAGED": "Número total de interações Não Gerenciadas",
+      "VOICE_WAITING": "Número total de chamadas em espera, para todas as filas existentes",
+      "VOICE_TALKING": "Número total de chamadas de saída, para todas as filas existentes",
+      "VOICE_ANSWERED": "Número total de chamadas atendidas, para todas as filas existentes",
+      "VOICE_ABANDONED": "O número total de Chamadas Abandonadas, considerando todas as Filas existentes. Observe que as chamadas que são abandonadas por timeout e joinempty não serão consideradas",
+      "VOICE_TOTAL_OFFERED": "Número total de chamadas de fila (concluído + abandonado). Observe que as chamadas que entram em uma URA e não em uma fila, não serão consideradas",
+      "VOICE_AVG_TALK_TIME": "Tempo médio de conversação, ou seja, o tempo médio gasto durante o atendimento considerando todas as filas existentes",
+      "VOICE_AVG_HOLD_TIME": "Tempo médio de espera em fila, ou seja, o tempo médio gasto aguardando o atendimento de um agente para todas as filas existentes",
+      "VOICE_ANSWER_RATE": "Taxa de atendimento de todas as filas",
+      "VOICE_UNMANAGED": "Número total de chamadas Não Gerenciadas, para todas as filas existentes. Inclui as chamadas que são abandonadas por timeout, joinempty, leavewhenempty e exitwithkey",
+      "ORIGINATED": "Número total de chamadas feitas pelas Campanhas de Discagem",
+      "ORIGINATEDLIMITED": "Chamadas da Capanha de URA Originadas/Limitada",
+      "DROPPED": "O número total de chamadas perdidas na fila, para todas as filas existentes",
+      "DROP_RATE": "Taxa de perda de todas as chamadas da fila",
+      "OUTBOUND_ANSWERED": "Número total de chamadas de saída concluídas",
+      "OUTBOUND_ANSWER_RATE": "Taxa de atendimento de todas as chamadas de saída",
+      "ABANDON_RATE": "Taxa de abandono de todas as chamadas da fila",
+      "TOTAL": "Número total de chamadas de saída",
+      "TOT_DURATION": "Duração total de todas as chamadas de saída",
+      "AVG_DURATION": "Duração média de todas as chamadas de saída concluídas",
+      "MANDATORY_DISPOSITION_ENABLED": "Qualificação obrigatória habilitada para esta conta",
       "EXACT_MATCH_FILTER": "Procure uma correspondência exata",
       "LIKE_FILTER": "Procure o padrão especificado"
     },
     },
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "WELCOME_TO_MOTION": "Bem vindo ao Motion",
-    "WELCOME_MESSAGE": "Use a barra lateral esquerda para navegar pelas seções disponíveis",
+    "WELCOME_MESSAGE": "Use a barra lateral à esquerda para navegar pelas seções disponíveis",
     "ADD": "Adicionar",
     "CONTACTMANAGER": "Gestão de Contatos",
     "DASHBOARD": "Dashboard",
     "NEW_CONTACT": "Novo Contato",
     "PHONE": "Telefone",
     "SAVE": "Salvar",
-    "INBOUND_WAITING_CALLS": "Chamadas de entrada aguardando",
+    "INBOUND_WAITING_CALLS": "Chamadas em Espera",
     "CONTACTS": "Contatos",
     "MYCONTACTS": "Meus Contatos",
     "ADD_CONTACT": "Adicionar Contato",
     "RELOAD": "Recarregar",
-    "WAITING_TEXT": "Esperando Interações",
+    "WAITING_TEXT": "Interações Aguardando",
     "TALKING_TEXT": "Chamadas de Filas Ativas",
-    "INBOUND_ANSWERED_TEXT": "Chamadas de Filas Respondidas",
+    "INBOUND_ANSWERED_TEXT": "Chamadas Atendidas",
     "DROP_RATE_TEXT": "Taxa de Perda de Chamadas em Fila",
-    "AVG_TALK_TIME_TEXT": "Tempo Total de Conversa de Chamadas em Fila",
-    "INBOUND_ANSWER_RATE_TEXT": "Taxa de resposta de chamadas da fila",
-    "UNMANAGED_TEXT": "Interações não gerenciadas",
-    "TOTAL_TEXT": "Total de chamadas de saída",
+    "AVG_TALK_TIME_TEXT": "Tempo de Conversação de Chamadas em Fila",
+    "INBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento de Chamadas",
+    "UNMANAGED_TEXT": "Interações Não Gerenciadas",
+    "TOTAL_TEXT": "Total de Chamadas de Saída",
     "OUTBOUND_ANSWERED_TEXT": "Chamadas de Saída Atendidas",
-    "TOT_DURATION_TEXT": "Duração total das chamadas de saída",
-    "AVG_DURATION_TEXT": "Duração média das chamadas ativas",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Chamada de saída",
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "TOT_DURATION_TEXT": "Duração Total das Chamadas de Saída",
+    "AVG_DURATION_TEXT": "Duração Média das Chamadas Ativas",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Taxa de Atendimento em Chamadas de Saída",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "REPLY_PLACEHOLDER": "Digite e aperte enter para enviar uma mensagem",
+    "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar uma mensagem",
     "CONTACT_INFO": "Informações de Contato",
     "CLOSE_AND_DISPOSE": "Encerrar e Qualificar",
     "DISPOSITIONS": "Qualificações",
     "REJECT": "Rejeitar",
     "CLOSED": "Encerrar",
     "INFO": "Informações",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "ACCEPT_ELSEWHERE": "Aceito em outro lugar",
     "ATTENTION": "Atenção",
     "SOCIAL": "Social",
     "SHOW_DETAILS": "Mostrar Detalhes",
     "HIDE_DETAILS": "Esconder Detalhes",
     "EXTERNAL_URL": "Link Externo",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma conta de e-mail disponível",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma conta de fax disponível",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "Não há contas SMS disponíveis",
-    "SELECT_DATE_RANGE": "Selecione o período",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Email disponível",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Fax disponível",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Nenhuma Conta de SMS disponível",
+    "SELECT_DATE_RANGE": "Selecione o Período",
     "CLEAR": "Limpar",
     "CALL_NUMBER": "Ligar",
     "TRANSFER_NUMBER": "Transferir",
     "CALL_SAVED": "Chamada devidamente salva",
     "CALL_DISPOSED": "Chamada devidamente qualificada",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "PRIVATE": "Privado",
     "PUBLIC": "Público",
     "PUBLIC_INTERACTION": "A interação é pública",
     "VISIBILITY": "Visibilidade",
-    "INTERACTION_CLOSED": "Interação devidamente fechada",
-    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente fechada e qualificada",
+    "INTERACTION_CLOSED": "Interação devidamente encerradas",
+    "INTERACTION_CLOSED_DISPOSED": "Interação devidamente encerradas e qualificadas",
     "INTERACTION_DISPOSED": "Interação devidamente qualificada",
-    "ASSIGNED_TO_OTHERS": "Atribuído a outros",
-    "SELECT_ALL": "Selecionar tudo",
-    "CHAT_INTERACTIONS": "Interações de Webchat",
+    "ASSIGNED_TO_OTHERS": "Atribuído a outro",
+    "SELECT_ALL": "Selecionar Tudo",
+    "CHAT_INTERACTIONS": "Interações de Chat",
     "FAX_INTERACTIONS": "Interações de Fax",
     "ID": "Id",
-    "MAIL_INTERACTIONS": "Interações por email",
-    "OPENCHANNEL_INTERACTIONS": "Interações de canal aberto",
-    "SMS_INTERACTIONS": "Interações por SMS",
+    "MAIL_INTERACTIONS": "Interações de Email",
+    "OPENCHANNEL_INTERACTIONS": "Interações do Open Channel",
+    "SMS_INTERACTIONS": "Interações de SMS",
     "CANCEL": "Cancelar",
     "DRAFT": "Rascunho",
     "DRAFT_SAVE_WARNING_MESSAGE": "Existe um rascunho salvo para esta interação. Tem certeza de que deseja substituí-lo?",
     "ALL_PRODUCTS": "Todos",
     "ALL_STATUS": "Todos",
     "ALL_STEP": "Todos",
-    "ALL_WORKFLOW": "Todo Fluxo de Trabalho",
+    "ALL_WORKFLOW": "Todo o Fluxo de Trabalho",
     "ATTENDACELASTINVOICE": "Última fatura",
     "ATTENDACENEXTINVOICE": "Próxima fatura",
     "AUTHORIZED": "AUTORIZADO",
     "AUTOPROFORMA": "AUTO-PROFORMA",
     "BALANCE": "SALDO",
     "BY": "Por",
-    "CLONEPROFORMA": "Clone",
+    "CLONEPROFORMA": "Clonar",
     "COMPANIES": "Empresas",
     "COMPANYCITY": "Cidade",
     "COMPANYCOUNTRY": "País",
     "COMPANYDESC": "Descrição",
-    "COMPANYEMAIL": "O email",
+    "COMPANYEMAIL": "Email",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Companhia",
     "COMPANYNATION": "Nação",
     "CREATIONDATE": "Criado em",
     "CREDITINOTENAME": "Nome",
     "CREDITNOTE": "NOTA DE CRÉDITO",
-    "CREDITNOTEDETAILS": "Detalhe da nota de crédito",
-    "CREDITNOTE_INFO": "Nota de crédito",
+    "CREDITNOTEDETAILS": "Detalhe da Nota de Crédito",
+    "CREDITNOTE_INFO": "Nota de Crédito",
     "DELETE_PRODUCT": "Excluir Produto",
     "DEPOSIT": "DEPÓSITO",
     "DETAILS": "Detalhes",
     "DOSSIER": "Dossiê",
     "DOSSIERID": "ID do Dossiê",
     "DOSSIERNAME": "Nome do Dossiê",
-    "DOSSIERNOTES": "Nota",
+    "DOSSIERNOTES": "Observação",
     "DOSSIERS": "Dossiês",
     "DOSSIER_INFO": "Informação",
     "ENDDATE": "Data de Encerramento",
     "FROM": "From",
     "GRAPHINVOICES": "Tabela de emissão de faturas",
-    "INASSET": "De ativos",
+    "INASSET": "Ativos",
     "INVOICE": "FATURA",
     "INVOICEDETAILS": "DETALHES DA FATURA",
     "INVOICEDISCOUNT": "Desconto",
     "INVOICEEMITED": "Emitido",
     "INVOICEID": "Fatura",
-    "INVOICENAME": "Nome da fatura",
+    "INVOICENAME": "Nome da Fatura",
     "INVOICENOPRODUCTAMOUNT": "Montante",
     "INVOICENOPRODUCTDESCRIPTION": "Descrição na fatura",
-    "INVOICENOPRODUCTSAVE": "Salve \e051",
+    "INVOICENOPRODUCTSAVE": "Salvar",
     "INVOICENOPRODUCTUPDATE": "Atualizar",
     "INVOICENOTAXAMOUNT": "IMPOSTO",
-    "INVOICENOTES": "Nota",
+    "INVOICENOTES": "Observação",
     "INVOICEPAYED": "Pago",
     "INVOICES": "FATURAS",
     "INVOICESTATUS": "Estado",
     "INVOICETOTAL": "Total",
     "INVOICE_INFO": "Fatura",
     "MANAGESALES": "Assinaturas",
-    "MOVEASSET": "DE ATIVOS",
-    "MOVECREDITNOTE": "NOTA DE CRÉDITO AUTOMÁTICO",
+    "MOVEASSET": "ATIVOS",
+    "MOVECREDITNOTE": "SELF-CREDIT NOTE",
     "NETPRICE": "Preço",
     "NEW_COMPANY": "Novo",
     "NEW_DOSSIER": "Novo Dossiê",
-    "NEXTINVOICE": "Próxima fatura",
-    "NOTES": "Nota",
+    "NEXTINVOICE": "Próxima Fatura",
+    "NOTES": "Observações",
     "NO_PRODUCTINVOICE_AVAILABLE": "Nenhum produto",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Não há dados disponíveis",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Não há dados disponíveis",
     "NUMBER": "Número",
-    "OPENDATE": "Data aberta",
+    "OPENDATE": "Data de Abertura",
     "ORDER": "Ordem",
     "ORDERCLIENTCODE": "Código do Consumidor",
     "ORDERID": "Ordem",
-    "ORDERNOTES": "Nota",
+    "ORDERNOTES": "Observação",
     "ORDERSTATUS": "Estado",
     "ORDER_INFO": "Ordem",
-    "PAIDANDEXPIRED": "Forma de pagamento",
+    "PAIDANDEXPIRED": "Forma de Pagamento",
     "PAYED_AY": "Pago em",
-    "PAYMENT": "Forma de pagamento",
+    "PAYMENT": "Forma de Pagamento",
     "PAYMENTMETHOD": "Métodos de Pagamento",
     "PAYMENTS": "PAGAMENTOS",
-    "PAYMENT_INFO": "Informação de pagamento",
+    "PAYMENT_INFO": "Informação de Pagamento",
     "PDFCREDITNOTE": "PDF",
     "PDFINVOICE": "PDF",
     "PDFPROFORMA": "PDF",
-    "PRICELIST": "Lista de preços",
+    "PRICELIST": "Lista de Preços",
     "PRICELISTDISCOUNT": "Desconto na lista de preços",
-    "PRICELISTNAME": "Lista de preços",
-    "PRICELISTNETPRICE": "Preço líquido",
+    "PRICELISTNAME": "Lista de Preços",
+    "PRICELISTNETPRICE": "Preço Líquido",
     "PRICESALELISTNETPRICE": "Prezzo listino",
     "PRODUCTATUNIT": "Unidade",
-    "PRODUCTCODE": "Código do produto",
+    "PRODUCTCODE": "Código do Produto",
     "PRODUCTDESCRIPTION": "Descrição",
-    "PRODUCTFILTERNAME": "Nome do filtro",
+    "PRODUCTFILTERNAME": "Nome do Filtro",
     "PRODUCTININVOICE": "Produtos na fatura",
     "PRODUCTINPROFORMA": "Produtos em pró-forma",
     "PRODUCTINQUOTATION": "DETALHES DO PRODUTO",
-    "PRODUCTNAME": "produtos",
-    "PRODUCTNOTE": "Nota",
+    "PRODUCTNAME": "Produtos",
+    "PRODUCTNOTE": "Observação",
     "PRODUCTPRICE": "Preço",
     "PRODUCTQTY": "Quantidade",
     "PRODUCTS": "PRODUTOS",
     "PROFORMAAUTHORIZED": "Proforma autorizado",
     "PROFORMADETAILS": "Detalhes",
     "PROFORMAID": "ID Proforma",
-    "PROFORMANAME": "Nome pró-forma",
-    "PROFORMANOTES": "Nota",
+    "PROFORMANAME": "Nome da Pró-forma",
+    "PROFORMANOTES": "Observação",
     "PROFORMAS": "PROFORMA",
     "PROFORMASTATUS": "Estado",
     "PROFORMA_INFO": "Proforma",
     "QUANTITY": "Quantidade",
     "QUOTATION": "COTAÇÃO",
-    "QUOTATIONDISCOUNT": "Desconto de cotação",
+    "QUOTATIONDISCOUNT": "Desconto de Cotação",
     "QUOTATIONID": "Oferta",
-    "QUOTATIONINVOICEID": "ID da fatura",
-    "QUOTATIONNAME": "Nome da cotação",
-    "QUOTATIONNOTES": "Notas de cotação",
-    "QUOTATIONPRODUCTNOTE": "Nota do produto",
+    "QUOTATIONINVOICEID": "ID da Fatura",
+    "QUOTATIONNAME": "Nome da Cotação",
+    "QUOTATIONNOTES": "Observações da Cotação",
+    "QUOTATIONPRODUCTNOTE": "Observação do Produto",
     "QUOTATIONPRODUCTTYPE": "Tipo",
-    "QUOTATIONPROFORMAID": "ID pró-forma",
+    "QUOTATIONPROFORMAID": "ID da Pró-forma",
     "QUOTATIONQTY": "Quantidade",
     "QUOTATIONSTATUS": "Estado",
     "QUOTATIONSUBSCRIPTION": "Duração",
     "QUOTATIONTOTAL": "TOTAL",
     "QUOTATIONTOTALPRICE": "Total líquido",
     "QUOTATIONTOTALS": "Total",
-    "QUOTATIONTOTALTAX": "Taxa total",
+    "QUOTATIONTOTALTAX": "Imposto total",
     "QUOTATIONUNIT": "Unidade",
-    "QUOTATIONVAT": "CUBA",
-    "QUOTATION_INFO": "cotação",
+    "QUOTATIONVAT": "VAT",
+    "QUOTATION_INFO": "Cotação",
     "REQUEST": "SOLICITAÇÃO",
     "REQUESTID": "Solicitação",
-    "REQUESTNAME": "Nome da solicitação",
-    "REQUESTNOTES": "Solicitar notas",
+    "REQUESTNAME": "Nome da Solicitação",
+    "REQUESTNOTES": "Observações da Solicitação",
     "REQUEST_INFO": "Solicitação",
-    "SELECT_COMPANY": "Selecionar empresa",
-    "SELECT_PERIOD": "Selecionar intervalo",
-    "SELECT_PERIOD_CREATION": "Selecionar data de criação",
-    "SELECT_PERIOD_EXPIRE": "Selecionar data de validade",
+    "SELECT_COMPANY": "Selecionar Empresa",
+    "SELECT_PERIOD": "Selecione período",
+    "SELECT_PERIOD_CREATION": "Selecione Data de Criação",
+    "SELECT_PERIOD_EXPIRE": "Selecione Data de Validade",
     "SELECT_PERIOD_START": "Selecione a data",
     "SELECT_PRODUCT": "Selecionar produto",
-    "SELECT_PRODUCTTYPE": "Selecione o tipo",
-    "SELECT_WORKFLOW": "Selecionar fluxo de trabalho",
-    "SELECT_WORKFLOWSTEPS": "Selecione o estado do fluxo de trabalho",
-    "STARTDATE": "Data da fatura",
+    "SELECT_PRODUCTTYPE": "Selecione tipo",
+    "SELECT_WORKFLOW": "Selecione Fluxo de Trabalho",
+    "SELECT_WORKFLOWSTEPS": "Selecione Estado do Fluxo de Trabalho",
+    "STARTDATE": "Data da Fatura",
     "STATE": "Estado",
-    "STEP": "Degrau",
+    "STEP": "Passo",
     "SUBSCRIPTIONDETAIL": "Detalhe",
-    "SUBSCRIPTIONNAME": "Inscrição",
-    "SUBSCRIPTIONS": "CRONOGRAMA DO CLIENTE",
+    "SUBSCRIPTIONNAME": "Subscrição",
+    "SUBSCRIPTIONS": "CALENDÁRIO DO CLIENTE",
     "TAX": "Imposto",
     "TO": "Para",
     "TOTALPAYMENTS": "Total de pagamentos",
     "UPDATED_AT": "Modificado em",
-    "UPDATE_PRODUCT": "Atualizar produto",
-    "WORKFLOW": "Selecionar fluxo de trabalho",
+    "UPDATE_PRODUCT": "Atualizar Produto",
+    "WORKFLOW": "Selecione Fluxo de Trabalho",
     "YEARS": "Anos",
-    "CUSTOMER_IP": "Endereço IP de origem",
-    "CUSTOMER_PORT": "Porta TCP de origem",
+    "CUSTOMER_IP": "Endereço IP de Origem",
+    "CUSTOMER_PORT": "Porta TCP de Origem",
     "ADVANCED_SEARCH": "Busca Avançada",
     "AND": "E",
     "APPLY": "Aplicar",
     "CONTAINS": "Contém",
     "DISABLED": "Desativado",
-    "ENABLED": "Ativado",
+    "ENABLED": "Habilitado",
     "ENDING_DATE": "Data de Encerramento",
     "ENDING_VALUE": "Valor de Encerramento",
     "ENDS_WITH": "Encerrado com",
     "IS_LESS_THAN_OR_EQUAL_TO": "É menor ou igual a",
     "IS_NOT_AMONG": "Não está entre",
     "IS_NOT_EQUAL": "Não é igual",
-    "MEET_ALL_CONDITIONS": "Conheça todas as condições",
+    "MEET_ALL_CONDITIONS": "Atenda todas as condições",
     "MEET_ANY_CONDITIONS": "Atenda a pelo menos uma condição",
     "NEW_CONDITION": "Nova Condição",
     "SELECT_FIELD": "Selecionar campo",
     "CHOOSE": "Escolher",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
-    "SELECT_QUEUE": "Selecione uma fila",
-    "VIDAOOSESSION": "Iniciar videochamada",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPP_INTERACTIONS": "Interações do conector do WhatsApp",
+    "SELECT_QUEUE": "Selecione Fila",
+    "VIDAOOSESSION": "Iniciar Video Chamada",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPP_INTERACTIONS": "Interações do WhatsApp Connector",
     "LAST_UPDATED": "Ultima atualização",
-    "MATCHING_FIELD": "Campo correspondente",
-    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para número",
+    "MATCHING_FIELD": "Campo de correspondência",
+    "MULTIPLE_CONTACTS_FOUND": "Vários contatos encontrados para o número",
     "SELECT": "Selecione",
-    "SELECT_CONTACT": "Selecione o contato",
+    "SELECT_CONTACT": "Selecione contato",
     "WHICH_ONE_TO_USE": "Qual você deseja usar?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta Whatsapp disponível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta de Whatsapp disponível",
+    "SECOND_LEVEL_DISPOSITION": "Qualificações de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Sua licença está prestes a expirar! Entre em contato com o seu administrador",
     "CREATEDAT": "Criado em",
     "ELAPSED_ANSWERED": "Tempo decorrido desde o início da chamada",
     "ELAPSED_DISPOSED": "Tempo decorrido desde encerramento da chamada",
     "LOST_CONNECTION": "Enfrentando problemas de conectividade de rede. Por favor, verifique sua conexão à internet.",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
-    "AUTOCLOSE": "Encerrar automaticamente a guia de contato após qualificação",
-    "AGENT_PRESENCE": "Agent Presence",
-    "SELECT_TEAM": "Selecionar time",
+    "AUTOCLOSE": "Fechar automaticamente a aba de contato após qualificação",
+    "AGENT_PRESENCE": "Presença do Agente",
+    "SELECT_TEAM": "Selecione Equipe",
     "AVAILABLE": "Disponível",
     "CONFIRM": "Confirme",
     "FILTERS": "Filtros",
-    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Webchat",
+    "FILTER_CHAT_WEBSITES": "Filtrar Websites do Chat",
     "FILTER_FAX_ACCOUNTS": "Filtrar Contas de Fax",
     "FILTER_MAIL_ACCOUNTS": "Filtrar Contas de Email",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas de Open Channel",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtrar Contas do OpenChannel",
     "FILTER_SMS_ACCOUNTS": "Filtrar Contas de SMS",
     "FILTER_WHATSAPP_ACCOUNTS": "Filtrar Contas de Whatsapp",
     "SETFILTERS": "Definir Filtros",
-    "DIAL_TIMEZONE": "Fuso Horário de Discagem",
-    "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
-    "LIST_NAME": "Lista de nomes",
-    "PREVIEW_CALL": "Pré-visualizar chamada",
-    "SYSTEM_TIME": "Hora do sistema",
-    "CONTACT_NAME": "Nome de contato",
+    "DIAL_TIMEZONE": "Fuso horário de Discagem",
+    "LIMIT_TABS_REACHED": "Limite máximo de abas abertas foi atingido",
+    "LIST_NAME": "Nome da lista",
+    "PREVIEW_CALL": "Chamada Preview",
+    "SYSTEM_TIME": "Horário do sistema",
+    "CONTACT_NAME": "Nome de Contato",
     "CONTACT_PHONE": "Telefone de Contato",
-    "RECALLME_CALL_REMINDER": "Lembrete de chamada de Recall Me",
-    "SCHEDULED_TIME": "Hora marcada",
-    "UPCOMING_RECALLME_CALL": "Próxima chamada de Recall Me",
-    "WAITING_CALLS": "Chamadas em espera",
-    "WAITING_INTERACTIONS": "Interações em espera"
+    "RECALLME_CALL_REMINDER": "Lembrete de Agendamento",
+    "SCHEDULED_TIME": "Horário agendado",
+    "UPCOMING_RECALLME_CALL": "Próxima chamada Agendada",
+    "WAITING_CALLS": "Chamadas Aguardando",
+    "WAITING_INTERACTIONS": "Interações Aguardando"
   }
 }
index 0b91115..ed9bd53 100644 (file)
@@ -4,93 +4,93 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferir de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
-    "CANNEDANSWERS": "Respostas Prontas",
-    "FAXCANNEDANSWERS": "Respostas Prontas",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_FAXCANNEDANSWER": "Nova resposta pronta",
-    "ADD_FAXCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_CHATCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_CHATCANNEDANSWER": "Excluir resposta pronta",
-    "SPYINTERACTION": "Espião",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "FAXCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Não há Respostas Pré-definidas disponíveis",
+    "NEW_FAXCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_FAXCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_CHATCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_CHATCANNEDANSWER": "Excluir Resposta Pré-definida",
+    "SPYINTERACTION": "Espiar",
     "TAGS": "Tags",
     "REPLY": "Responder",
     "SEND": "Enviar",
     "TO": "Para",
     "FROM": "De",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_FAXQUEUE": "Ir para a fila de fax em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_FAXQUEUE": "Visualizar Fila de Fax em Tempo Real",
     "EDIT_TRUNK": "Editar Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não registrado",
-    "EDIT_ACCOUNT": "Editar conta de fax",
+    "EDIT_ACCOUNT": "Editar Conta de Fax",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Tempo",
+    "TIMER": "Timer",
     "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "GOTO_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTO_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "ACCOUNTS": "Contas",
-    "GOTOREALTIME_FAXACCOUNT": "Ir para fax em tempo real",
+    "GOTOREALTIME_FAXACCOUNT": "Visualizar Conta de Fax em Tempo Real",
     "TRUNK_STATUS": "Status do Tronco",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Não Registrado",
     "PAUSE": "Pausa",
-    "INFO": "Informarção",
+    "INFO": "Info",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "LOGOUT": "Sair",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar Agente na fila de Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes na fila de Fax",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Fax",
+    "AGENTSADD_QUEUE": "Adicionar Agentes na Fila de Fax",
     "UNPAUSE": "Finalizar Pausa",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "READY": "Pronto",
-    "WAITING": "Esperando",
+    "WAITING": "Aguardando",
     "PRIORITY": "Prioridade",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID da Prioridade caso Falso",
     "VALUE": "Valor",
-    "EDIT_FAXQUEUE": "Editar fila de Fax",
+    "EDIT_FAXQUEUE": "Editar Fila de Fax",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_NOOP": "Editar Noop",
     "EDIT_GOTOP": "Editar GotoP",
     "EDIT_GOTOIF": "Editar GotoIf",
-    "EDIT_QUEUE": "Editar fila de Fax",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_QUEUE": "Editar Fila de Fax",
+    "EDIT_CLOSE": "Editar Encerramento",
     "QUEUE": "Fila",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agente",
-    "NOTES": "Notas",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "REALTIME": "Tempo real",
-    "TEAMADD_FAXQUEUE": "Adicionar equipe à fila de fax",
-    "AGENTADD_FAXQUEUE": "Adicionar agente à fila de fax",
+    "NOTES": "Observações",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "REALTIME": "Tempo Real",
+    "TEAMADD_FAXQUEUE": "Adicionar Equipe à Fila de Fax",
+    "AGENTADD_FAXQUEUE": "Adicionar Agente à Fila de Fax",
     "NAME": "Nome",
     "FAXQUEUES": "Filas de Fax",
     "SEARCH_FOR_ANYONE": "Procurar",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Você deve especificar um status de pausa quando na disposição obrigatória"
     },
     "STRATEGY": "Estratégia",
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_FAXQUEUE": "Adicionar fila de Fax",
-    "DELETE_FAXQUEUE": "Excluir fila de Fax",
+    "ADD_FAXQUEUE": "Adicionar Fila de Fax",
+    "DELETE_FAXQUEUE": "Excluir Fila de Fax",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "FAXACCOUNTS": "Contas de Fax",
     "MOTIONADDRESS": "Endereço do Motion",
-    "ADD_FAXACCOUNT": "Adicionar conta de Fax",
-    "EDIT_FAXACCOUNT": "Editar conta de Fax",
-    "DELETE_FAXACCOUNT": "Excluir conta de Fax",
-    "DISPOSITIONS": "Disposições",
+    "ADD_FAXACCOUNT": "Adicionar Conta de Fax",
+    "EDIT_FAXACCOUNT": "Editar Conta de Fax",
+    "DELETE_FAXACCOUNT": "Excluir Conta de Fax",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "TRUNK": "Tronco",
-    "LOCALSTATIONID": "Identificador de Estação Local",
+    "LOCALSTATIONID": "Identificador da Estação Local",
     "HELP": {
-      "LOCALSTATIONID": "Identificador de estação local (número de telefone)",
-      "HEADERINFO": "Informações de cabeçalho de fax de saída",
-      "MODEM": "Tipo de modem (v17 / v27 / v29)",
-      "GATEWAY": "T.38 Fax Gateway, com tempo limite de atividade de fax opcional em segundos (sim / não / [tempo limite])",
-      "FAXDETECT": "Ativar a detecção de fax com tempo limite opcional em segundos (sim / t38 / cng / [tempo limite] / não)",
-      "T38TIMEOUT": "O tempo limite usado para negociação T.38 (valor mínimo = 1000)",
+      "LOCALSTATIONID": "Identificador da estação local (número de telefone)",
+      "HEADERINFO": "Informações de Header do fax de saída",
+      "MODEM": "Tipo de modem (v17/v27/v29)",
+      "GATEWAY": "T.38 Fax Gateway, com timeout de atividade opcional em segundos (yes/no/[timeout])",
+      "FAXDETECT": "Ativar a Detecção de Fax com timeout opcional em segundos (yes/t38/cng/[timeout]/no)",
+      "T38TIMEOUT": "O timeout usado para negociação do protocolo T.38 (valor mínimo=1000)",
       "ECM": "Error Connection Mode (ECM)",
       "MINRATE": "Taxa de transferência mínima definida antes da transmissão",
-      "MAXRATE": "Taxa de transferência mínima definida antes da transmissão",
+      "MAXRATE": "Taxa de transferência máxima definida antes da transmissão",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para disposição obrigatória"
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para Qualificação obrigatória"
     },
     "ADVANCED": "Avançado",
     "ECM": "ECM",
     "MAXRATE": "Max Rate",
     "MODEM": "Modem",
     "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
+    "FAXDETECT": "Detecção de Fax",
     "T38TIMEOUT": "T.38 Timeout",
     "SIP": "Tecnologia",
-    "HEADERINFO": "Informações do cabeçalho",
+    "HEADERINFO": "Header Info",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "FAX": "Fax",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
-    "FAXDISPOSITIONS": "Disposições do Fax",
-    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma disposição de fax disponível",
-    "NEW_FAXDISPOSITION": "Nova disposição de fax",
-    "ADD_FAXDISPOSITION": "Adicionar disposição de fax",
-    "EDIT_FAXDISPOSITION": "Editar disposição de fax",
-    "DELETE_FAXDISPOSITION": "Excluir disposição de fax",
-    "NEW_FAXQUEUE": "Nova fila de Fax",
-    "NEW_FAXACCOUNT": "Nova conta de Fax",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Qualificações de Fax",
+    "NO_FAXDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Fax disponível",
+    "NEW_FAXDISPOSITION": "Nova Qualificação de Fax",
+    "ADD_FAXDISPOSITION": "Adicionar Qualificação de Fax",
+    "EDIT_FAXDISPOSITION": "Editar Qualificação de Fax",
+    "DELETE_FAXDISPOSITION": "Excluir Qualificação de Fax",
+    "NEW_FAXQUEUE": "Nova Fila de Fax",
+    "NEW_FAXACCOUNT": "Nova Conta de Fax",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DELETE": "Excluir",
-    "KEY": "Key",
+    "KEY": "Chave",
     "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar o Status",
     "ALL": "Todos",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "OPENED": "Aberto",
-    "SELECT_ACCOUNT": "Selecionar conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "INTERACTIONS": "Interações",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "ACCOUNT": "Conta",
     "UNKNOWN": "Desconhecido",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
     "IN_USE": "Em uso",
     "VOICE": "Voz",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "TOTAL": "Total",
-    "IN": "In",
+    "IN": "Em",
     "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
+    "NO_INTERACTION_AVAILABLE": "Não há Interações disponíveis",
     "INTERACTIONS_FAXACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_FAXACCOUNT": "Adicionar agente à conta de fax",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando em disposição obrigatória",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_FAXACCOUNT": "Adicionar Agente à Conta de Fax",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa quando estiver em Qualificação obrigatória",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem"
index 3f58330..0871a9c 100644 (file)
@@ -1,7 +1,7 @@
 {
   "HELP": {
     "ABOUT": "Sobre",
-    "CONTACT_US": "Contate-Nos",
+    "CONTACT_US": "Fale Conosco",
     "HELP": "Ajuda",
     "USEFUL_LINKS": "Links Úteis"
   }
index 09c9339..a21210f 100644 (file)
@@ -1,30 +1,30 @@
 {
   "INTEGRATIONS": {
-    "ZONE": "Svæði",
+    "ZONE": "Zone",
     "ADVANCED": "Sértækt",
-    "MODULE_SEARCH": "Leita að módúl",
-    "MODULE_CREATE": "Stofna módúl",
+    "MODULE_SEARCH": "Module Search",
+    "MODULE_CREATE": "Module Create",
     "LEADS": "Lead",
     "CONTACTS": "CTengiliður",
-    "INTEGRATIONS": "Samþáttanir",
-    "ZENDESKACCOUNTS": "Zendesk reikningur",
-    "ID": "Auðkenni",
-    "NAME": "Nafn",
-    "USERNAME": "Notendanafn",
+    "INTEGRATIONS": "Integrations",
+    "ZENDESKACCOUNTS": "Zendesk Accounts",
+    "ID": "Id",
+    "NAME": "Name",
+    "USERNAME": "Username",
     "URI": "URL",
     "BACK": "Til baka",
-    "SELECTED": "Valið",
-    "SELECT_ALL": "Veljið allt",
-    "SELECT_NONE": "Veljið nafn",
+    "SELECTED": "Selected",
+    "SELECT_ALL": "Select All",
+    "SELECT_NONE": "Select None",
     "EDIT_ZENDESKACCOUNT": "Breyttu Zendesk reikningi",
     "DELETE_ZENDESKACCOUNT": "Eyddu Zendesk reikningi",
-    "NEW_ZENDESKACCOUNT": "Nýr Zendesk reikningur",
+    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
     "AUTHTYPE": "Sannvottunar aðferð",
-    "PASSWORD": "Lykilorð",
+    "PASSWORD": "Password",
     "CONFIRM_PASSWORD": "Staðfesta lykilorð",
     "EMAIL": "Netfang",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "IP tala fyrir Motion eða Proxy",
+    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
     "DESCRIPTION": "Lysing",
     "ADD_ZENDESKACCOUNT": "Bættu við Zendesk reikningi",
     "ERRORS": {
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "TICKETTYPE": "Tiket tegund",
-      "ZONE": "Veldu landsvæði (US, AU, EU, IN, CN) til að virkja rétt lén fyrir Zoho reikninginn þinn",
-      "CLIENTID": "Sérstakt notenda auðkenni fyrir lausnina þína",
-      "CLIENTSECRET": "Sérstakt notenda lyniorð fyrir lausnina þína",
-      "CODE": "Sérstakur kóði frá forritinu",
+      "TICKETTYPE": "Ticket Type",
+      "ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
+      "CLIENTID": "The specific CLient Id of your application",
+      "CLIENTSECRET": "The specific CLientSecret of your application",
+      "CODE": "The specific code generated through Developer Console",
       "REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched.",
-      "LEADID": "Svæðis reitur til að tengja saman verkefni og Lead verkefni",
+      "LEADID": "Field name used to link Case and Lead objects",
       "ADDITIONALSEARCHACCOUNT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í fyrirtækjum/reikningi",
       "ADDITIONALSEARCHCONTACT": "Viðbótar nafna reitur, notaður til að leita að viðskiptavina símanúmeri í tengiliðum",
       "ADDITIONALSEARCHLEAD": "Viðbótar reitur, notaður til að leita að viðskiptavina símanúmeri í Leads",
-      "MODERN_AUTHENTICATION": "Skiptið yfir til að virkja nútýma auðkenningu"
+      "MODERN_AUTHENTICATION": "Switch to enable Modern Authentication"
     },
-    "MODULECREATE": "Stofna modúl",
+    "MODULECREATE": "Module create",
     "CODE": "Forritunar Console lykill",
-    "REFRESHTOKEN": "Endurnýjaðu Token (sem var búið til)",
+    "REFRESHTOKEN": "Refresh Token (generated)",
     "ACCOUNT": "Reikningur",
-    "ZENDESKCONFIGURATIONS": "Zendesk stillingar",
-    "SALESFORCECONFIGURATIONS": "Salesforce Stillingar",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM stillingar",
+    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
+    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
     "FRESHDESKCONFIGURATIONS": "Freshdesk stillingar",
     "GENERAL": "almennt",
     "CREATED_AT": "Stofnað kl.",
-    "SAVE": "Geyma",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Engin Zendesk stilling fáanleg",
-    "NEW_ZENDESKCONFIGURATION": "Ný Zendesk stilling",
+    "SAVE": "Save",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
+    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
     "ADD_ZENDESKCONFIGURATION": "Bættu við Zendesk stillingum",
     "EDIT_ZENDESKCONFIGURATION": "Breyttu Zendesk stillingum",
     "DELETE_ZENDESKCONFIGURATION": "Eyddu Zendesk stillingum",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Engin Salesforce stilling fáanleg",
-    "NEW_SALESFORCECONFIGURATION": "Ný Salesforce stilling",
-    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce Stillingum",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
+    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
+    "ADD_SALESFORCECONFIGURATION": "Bættu við Salesforce stillingum",
     "EDIT_SALESFORCECONFIGURATION": "breyttu Salesforce stillingum",
     "DELETE_SALESFORCECONFIGURATION": "Eyddu Salesforce stillingum",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Engin SugarCRM stilling fáanleg",
-    "NEW_SUGARCRMCONFIGURATION": "Ný SugarCRM stilling",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
+    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
     "ADD_SUGARCRMCONFIGURATION": "Bættu við SugarCRM stillingum",
     "EDIT_SUGARCRMCONFIGURATION": "Breyttu SugarCRM stillingum",
     "DELETE_SUGARCRMCONFIGURATION": "Eyddu SugarCRM stillingum",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Engin Freshdesk stilling fáanleg",
-    "NEW_FRESHDESKCONFIGURATION": "Ný Freshdesk stilling",
-    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk Stillingum",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
+    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
+    "ADD_FRESHDESKCONFIGURATION": "Bættu við Freshdesk stillingum",
     "EDIT_FRESHDESKCONFIGURATION": "Breyttu Freshdesk stillingum",
     "DELETE_FRESHDESKCONFIGURATION": "Eyddu Freshdesk stillingum",
-    "SALESFORCEACCOUNTS": "Salesforce reikningur",
+    "SALESFORCEACCOUNTS": "Salesforce Accounts",
     "EDIT_SALESFORCEACCOUNT": "Breyttu Salesforce reikningi",
     "DELETE_SALESFORCEACCOUNT": "Eyddum Salesforce reikningi",
-    "NEW_SALESFORCEACCOUNT": "Nýr Salesforce reikningur",
+    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
     "ADD_SALESFORCEACCOUNT": "Bættu við Salesforce reikningi",
     "CLIENTID": "Auðkenni notanda",
     "CLIENTSECRET": "Leyniorð notanda",
-    "SECURITYTOKEN": "Öryggis Token",
-    "SEARCH_FOR_ANYONE": "Leita",
+    "SECURITYTOKEN": "Security Token",
+    "SEARCH_FOR_ANYONE": "Search",
     "APIKEY": "Api lykill",
     "FRESHDESKACCOUNTS": "Freshdesk reikningur",
     "EDIT_FRESHDESKACCOUNT": "Breyttu Freshdesk reikningi",
     "DELETE_FRESHDESKACCOUNT": "Eyddu Freshdesk reikningi",
-    "NEW_FRESHDESKACCOUNT": "Nér Freshdesk reikningur",
-    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk Reikningi",
-    "SUGARCRMACCOUNTS": "SugarCRM reikningur",
+    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Bættu við Freshdesk reikningi",
+    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
     "EDIT_SUGARCRMACCOUNT": "Breyttu SugarCRM reikningi",
     "DELETE_SUGARCRMACCOUNT": "Eyddu SugarCRM reikningi",
-    "NEW_SUGARCRMACCOUNT": "Nýr SugarCRM reikningur",
+    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
     "ADD_SUGARCRMACCOUNT": "Bættu við SugarCRM reikningi",
     "CONFIGURATIONS": "Stillingar",
-    "NO_CONFIGURATION_AVAILABLE": "Engin stilling fáanleg",
-    "NEW_CONFIGURATION": "Nýar stillingar",
+    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
+    "NEW_CONFIGURATION": "New Configuration",
     "ADD_CONFIGURATION": "Bættu við stillingum",
     "EDIT_CONFIGURATION": "Breyttu stillingum",
     "DELETE_CONFIGURATION": "Eyddu stillingum",
-    "SUBJECTS": "Efni",
+    "SUBJECTS": "Subjects",
     "DESCRIPTIONS": "Lysing",
     "FIELDS": "Reitir",
-    "TAGS": "Tögg",
-    "TYPE": "Tegund",
+    "TAGS": "Tags",
+    "TYPE": "Type",
     "CONTENT": "Innihald",
     "EDIT_SUBJECT": "Breyttu viðfangsefni",
     "DELETE_SUBJECT": "Eyddu viðfangsefni",
-    "NEW_SUBJECT": "Nýt viðfang",
+    "NEW_SUBJECT": "New Subject",
     "ADD_SUBJECT": "Bættu við viðfangsefni",
     "EDIT_DESCRIPTION": "Breyttu lýsingu",
     "DELETE_DESCRIPTION": "Eyddu lýsingu",
-    "NEW_DESCRIPTION": "Ný lýsing",
+    "NEW_DESCRIPTION": "New Description",
     "ADD_DESCRIPTION": "Bættu við lýsingu",
     "EDIT_FIELD": "Breyttu reit",
     "DELETE_FIELD": "Eyddu reit",
-    "NEW_FIELD": "Nýr reitur",
+    "NEW_FIELD": "New Field",
     "ADD_FIELD": "Bættu við reiti",
     "ADD": "Bæta við",
-    "VOICE": "Tal",
-    "MAIL": "Netfang",
+    "VOICE": "Voice",
+    "MAIL": "Email",
     "CHAT": "Spjall",
     "SMS": "SMS",
-    "OPENCHANNEL": "Opin rás",
-    "INBOUND_IN_QUEUE": "Innkomandi í biðr0ð",
-    "OUTBOUND_CALL": "Útfarandi símtall",
-    "VALUE": "Gildi",
+    "OPENCHANNEL": "Open Channel",
+    "INBOUND_IN_QUEUE": "Inbound in Queue",
+    "OUTBOUND_CALL": "Outbound Call",
+    "VALUE": "Value",
     "FIELD": "Reitur",
-    "KEY": "Lykill",
+    "KEY": "Key",
     "CHANNEL": "Rás",
     "DELETE": "Eyða",
-    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
-    "TEST_ZENDESKACCOUNT": "Prufu Zendesk reikningur",
-    "TEST_FRESHDESKACCOUNT": "Prufu Freshdesk reikningur",
-    "TEST_SUGARCRMACCOUNT": "Prufu SugerCRM reikningur",
-    "TEST_SALESFORCEACCOUNT": "Prufu Salesforce reikningur",
-    "INTEGRATION_TAB": "Samþáttunar flipi",
-    "NEW_TAB": "Nýr flipi",
+    "NO_AVAILABLE_INFO": "No available info",
+    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
+    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
+    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
+    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
+    "INTEGRATION_TAB": "Integration Tab",
+    "NEW_TAB": "New Tab",
     "DESKACCOUNTS": "Desk reikningur",
     "EDIT_DESKACCOUNT": "Breyttu Desk reikningi",
-    "TEST_DESKACCOUNT": "Prufu Desk reikningur",
+    "TEST_DESKACCOUNT": "Test Desk Account",
     "DELETE_DESKACCOUNT": "Eyddu Desk reikningi",
     "CONSUMERKEY": "Lykill fyrir notanda",
     "CONSUMERSECRET": "Leyniorð notanda",
     "TOKENSECRET": "Token Secret",
     "ADD_DESKACCOUNT": "Bættu við reikningi fyrir Desk",
-    "NEW_DESKACCOUNT": "Nýr Desk reikningur",
+    "NEW_DESKACCOUNT": "New Desk Account",
     "ADD_DESKCONFIGURATION": "Bættu við Desk Stillingum",
-    "NEW_DESKCONFIGURATION": "Ný Desk stilling",
+    "NEW_DESKCONFIGURATION": "New Desk Configuration",
     "DELETE_DESKCONFIGURATION": "Eyddu Desk stillingum",
-    "ZOHOACCOUNTS": "Zoho reikningur",
+    "ZOHOACCOUNTS": "Zoho Accounts",
     "EDIT_ZOHOACCOUNT": "Breyttu Zoho reikningi",
-    "TEST_ZOHOACCOUNT": "Prufu Zoho reikningur",
+    "TEST_ZOHOACCOUNT": "Test Zoho Account",
     "DELETE_ZOHOACCOUNT": "Eyddu Zoho reikningi",
     "ADD_ZOHOACCOUNT": "Bættu við Zoho reikningi",
-    "NEW_ZOHOACCOUNT": "Nýr Zoho reikningur",
+    "NEW_ZOHOACCOUNT": "New Zoho Account",
     "ADD_ZOHOCONFIGURATION": "ABættu við Zoho stillingum",
-    "NEW_ZOHOCONFIGURATION": "Nýjar Zoho stillingar",
+    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
     "AUTHTOKEN": "Auðkennis lykill, Token",
-    "HOST": "Hýsill",
+    "HOST": "Host",
     "DELETE_ZOHOCONFIGURATION": "Eyddu Zoho stillingum",
-    "PAGE": "Bls.",
-    "ROWSPERPAGE": "Línur á bls.",
-    "OF": "Slökt",
-    "VTIGERACCOUNTS": "vTiger reikningur",
-    "VTIGER_USER_NAME": "vTiger notenda nafn",
-    "MODULE_NAME": "vTiger módúl nafn",
+    "PAGE": "Page",
+    "ROWSPERPAGE": "Rows per page",
+    "OF": "of",
+    "VTIGERACCOUNTS": "vTiger Accounts",
+    "VTIGER_USER_NAME": "vTiger User Name",
+    "MODULE_NAME": "vTiger Module Name",
     "ACCESS_KEY": "vTiger Aðgangs lykill",
     "ADD_VTIGERACCOUNT": "Bættu við nýjum vTiger reikningi",
     "EDIT_VTIGERACCOUNT": "Breyttu vTiger reikningi",
-    "TEST_VTIGERACCOUNT": "Prufu vTiger reikningur",
+    "TEST_VTIGERACCOUNT": "Test vTiger Account",
     "DELETE_VTIGERACCOUNT": "Eyddu vTiger reikningi",
-    "NEW_VTIGERACCOUNT": "Nýr vTiger reikningur",
-    "NEW_VTIGERCONFIGURATION": "Búðu til vTiger stillingar",
+    "NEW_VTIGERACCOUNT": "New vTiger Account",
+    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
     "DELETE_VTIGERCONFIGURATION": "Eyddu vTiger stillingum",
     "ADD_VTIGERCONFIGURATION": "Bættu við vTiger stillingum",
     "FRESHSALESACCOUNTS": "Freshsales reikningur",
     "EDIT_FRESHSALESACCOUNT": "Breyttu Freshsales reikningi",
     "DELETE_FRESHSALESACCOUNT": "Eyddu Freshsales reikningi",
-    "NEW_FRESHSALESACCOUNT": "Nýr Freshsales reikningur",
+    "NEW_FRESHSALESACCOUNT": "New Freshsales Account",
     "ADD_FRESHSALESACCOUNT": "Bættu við Freshsales reikningi",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Engin Freshsales stilling fáanleg",
-    "NEW_FRESHSALESCONFIGURATION": "Ný Freshsales stilling",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
+    "NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
     "ADD_FRESHSALESCONFIGURATION": "Bættu við Freshsales stillingum",
     "EDIT_FRESHSALESCONFIGURATION": "Breyttu Freshsales stillingum",
     "DELETE_FRESHSALESCONFIGURATION": "Eyddu Freshsales stillingum",
-    "TEST_FRESHSALESACCOUNT": "Prufu Freshsales reikningur",
-    "SERVICENOWACCOUNTS": "ServiceNow reikningur",
+    "TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
+    "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "ADD_SERVICENOWACCOUNT": "Bættu við nýjum ServiceNow reikningi",
     "EDIT_SERVICENOWACCOUNT": "Breyttu ServiceNow reikningi",
-    "TEST_SERVICENOWACCOUNT": "Prufu ServiceNow reikningur",
+    "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "DELETE_SERVICENOWACCOUNT": "Eyddu ServiceNow reikningi",
-    "NEW_SERVICENOWACCOUNT": "Nýr ServiceNow reikningur",
-    "NEW_SERVICENOWCONFIGURATION": "Búðu til Create ServiceNow stillingu",
+    "NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
+    "NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
     "DELETE_SERVICENOWCONFIGURATION": "Eyddu ServiceNow stillingum",
     "ADD_SERVICENOWCONFIGURATION": "Bættu við ServiceNow stillingum",
     "DYNAMICS365ACCOUNTS": "Dynamics365 reikningur",
-    "TENANTID": "Auðkenni notanda",
-    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 Reikningi",
+    "TENANTID": "Tenant Id",
+    "ADD_DYNAMICS365ACCOUNT": "Bættu við nýjum Dynamics365 reikningi",
     "EDIT_DYNAMICS365ACCOUNT": "Breyttu Dynamics365 reikningi",
-    "TEST_DYNAMICS365ACCOUNT": "Prufu Dynamics365 reikningur",
+    "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
     "DELETE_DYNAMICS365ACCOUNT": "Eyddu Dynamics365 reikningi",
-    "NEW_DYNAMICS365ACCOUNT": "Nýr Dynamics365 reikningur",
-    "NEW_DYNAMICS365CONFIGURATION": "Búðu til Dynamics365 stillingar",
+    "NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
+    "NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
     "DELETE_DYNAMICS365CONFIGURATION": "Eyddu Dynamics365 stillingum",
-    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 Stillingum",
-    "TICKETTYPE": "Tiket tegund",
+    "ADD_DYNAMICS365CONFIGURATION": "Bættu við Dynamics365 stillingum",
+    "TICKETTYPE": "Ticket Type",
     "CASE": "Mál",
-    "LEADID": "Lead Auðkenni",
+    "LEADID": "Lead Id",
     "ADDITIONALSEARCHACCOUNT": "Viðbótar leitar reikningur",
     "ADDITIONALSEARCHCONTACT": "Viðbótar leitar tengiliður",
     "ADDITIONALSEARCHLEAD": "Viðbótar leitar Lead",
-    "PHONECALL": "Símtal",
-    "TASK": "Verkefni",
+    "PHONECALL": "Phonecall",
+    "TASK": "Task",
     "DYNAMIC365CONTACT": "Tengiliður",
     "DYNAMIC365NOTHING": "Ekkert",
-    "MODERN_AUTHENTICATION": "Nútíma auðkenning",
-    "OPENNEWTAB": "Opnaðu nýjan flipa"
+    "MODERN_AUTHENTICATION": "Modern Authentication",
+    "OPENNEWTAB": "Open new tab"
   }
 }
index 156770a..8179941 100644 (file)
@@ -1,10 +1,10 @@
 {
   "INTEGRATIONS": {
     "ADVANCED": "Avançado",
-    "MODULE_SEARCH": "Pesquisar Módulo",
+    "MODULE_SEARCH": "Módulo de Pesquisa",
     "MODULE_CREATE": "Módulo Criado",
     "INTEGRATIONS": "Integrações",
-    "ZENDESKACCOUNTS": "Contas Zendesk",
+    "ZENDESKACCOUNTS": "Contas do Zendesk",
     "ID": "Id",
     "NAME": "Nome",
     "USERNAME": "Usuário",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Tudo",
     "SELECT_NONE": "Selecionar Nenhum",
-    "EDIT_ZENDESKACCOUNT": "Editar Conta Zendesk",
-    "DELETE_ZENDESKACCOUNT": "Excluir Conta Zendesk",
-    "NEW_ZENDESKACCOUNT": "Nova Conta Zendesk",
+    "EDIT_ZENDESKACCOUNT": "Editar Conta do Zendesk",
+    "DELETE_ZENDESKACCOUNT": "Excluir Conta do Zendesk",
+    "NEW_ZENDESKACCOUNT": "Nova Conta do Zendesk",
     "AUTHTYPE": "Tipo de Autenticação",
     "PASSWORD": "Senha",
-    "CONFIRM_PASSWORD": "Confirme Senha",
+    "CONFIRM_PASSWORD": "Confirmação de Senha",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Endereço IP Motion ou Proxy",
+    "MOTIONPROXYADDRESS": "Endereço IP do Motion ou Proxy",
     "DESCRIPTION": "Descrição",
-    "ADD_ZENDESKACCOUNT": "Adicionar Conta Zendesk",
+    "ADD_ZENDESKACCOUNT": "Adicionar Conta do Zendesk",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
       "USERNAME_REQUIRED": "Campo obrigatório",
     },
     "HELP": {
       "MOTIONPROXYADDRESS": "Motion (Proxy) Address: é necessario se quiser utilizar o ticket body com Recording URL. Entre com o endereço no seguinte formato: <protocol> : //<ipaddress>[:<port>]. Exemplo: https://X.Y.Z.W",
-      "TICKETTYPE": "Tipo Ticket",
-      "CLIENTID": "O ID do cliente específico do seu aplicativo",
-      "CLIENTSECRET": "O CLientSecret específico do seu aplicativo",
-      "CODE": "O código específico gerado pelo Developer Console",
-      "REFRESHTOKEN": "O token de atualização gerado automaticamente e usado para atualizar os tokens de acesso expirados. Além disso, o token de acesso é gerado automaticamente toda vez que uma API é iniciada.",
+      "TICKETTYPE": "Tipo do Ticket",
+      "CLIENTID": "O ID do Cliente de sua aplicação",
+      "CLIENTSECRET": "O ClientSecret específico de sua aplicação",
+      "CODE": "O código gerado pelo Developer Console",
+      "REFRESHTOKEN": "O token de acesso gerado automaticamente para atualizar os tokens de acessos expirados. Além disso, este token de acesso é atualizado automaticamente toda vez que uma API é iniciada.",
       "ZONE": "Escolha sua zona geográfica (EUA, AU, UE, IN, CN) para ativar o domain-specific da conta Zoho",
-      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em contas",
-      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o número de telefone do cliente em Contatos",
-      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o número de telefone do cliente no Leads",
-      "LEADID": "Nome do campo usado para vincular objetos Caso e Lead",
+      "ADDITIONALSEARCHACCOUNT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contas",
+      "ADDITIONALSEARCHCONTACT": "Nome de campo adicional usado para pesquisar o telefone do cliente em Contatos",
+      "ADDITIONALSEARCHLEAD": "Nome de campo adicional usado para pesquisar o telefone do cliente no Leads",
+      "LEADID": "Nome do campo usado para vincular objetos Case e Lead",
       "MODERN_AUTHENTICATION": "Alterne para habilitar a autenticação moderna"
     },
     "ACCOUNT": "Conta",
-    "ZENDESKCONFIGURATIONS": "Configurações Zendesk",
-    "SALESFORCECONFIGURATIONS": "Configurações Salesforce",
-    "SUGARCRMCONFIGURATIONS": "Configurações SugarCRM",
-    "FRESHDESKCONFIGURATIONS": "Configurações Freshdesk",
+    "ZENDESKCONFIGURATIONS": "Configurações do Zendesk",
+    "SALESFORCECONFIGURATIONS": "Configurações do Salesforce",
+    "SUGARCRMCONFIGURATIONS": "Configurações do SugarCRM",
+    "FRESHDESKCONFIGURATIONS": "Configurações do Freshdesk",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "NO_ZENDESKCONFIGURATION_AVAILABLE": "Nenhuma configuração do Zendesk disponível",
-    "NEW_ZENDESKCONFIGURATION": "Nova Configuração Zendesk",
-    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração Zendesk",
-    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração Zendesk",
-    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração Zendesk",
+    "NEW_ZENDESKCONFIGURATION": "Nova Configuração do Zendesk",
+    "ADD_ZENDESKCONFIGURATION": "Adicionar Configuração do Zendesk",
+    "EDIT_ZENDESKCONFIGURATION": "Editar Configuração do Zendesk",
+    "DELETE_ZENDESKCONFIGURATION": "Excluir Configuração do Zendesk",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Nenhuma configuração do Salesforce disponível",
-    "NEW_SALESFORCECONFIGURATION": "Nova Configuração Salesforce",
-    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração Salesforce",
-    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração Salesforce",
-    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração Salesforce",
+    "NEW_SALESFORCECONFIGURATION": "Nova Configuração do Salesforce",
+    "ADD_SALESFORCECONFIGURATION": "Adicionar Configuração do Salesforce",
+    "EDIT_SALESFORCECONFIGURATION": "Editar Configuração do Salesforce",
+    "DELETE_SALESFORCECONFIGURATION": "Excluir Configuração do Salesforce",
     "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nenhuma configuração do SugarCRM disponível",
-    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração SugarCRM",
-    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração SugarCRM",
-    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração SugarCRM",
-    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração SugarCRM",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações Freshdesk disponíveis",
-    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração Freshdesk",
-    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração Freshdesk",
-    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração Freshdesk",
-    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração Freshdesk",
-    "SALESFORCEACCOUNTS": "Contas Salesforce",
-    "EDIT_SALESFORCEACCOUNT": "Editar Conta Salesforce",
-    "DELETE_SALESFORCEACCOUNT": "Excluir Conta Salesforce",
-    "NEW_SALESFORCEACCOUNT": "Nova Conta Salesforce",
-    "ADD_SALESFORCEACCOUNT": "Adicionar Conta Salesforce",
+    "NEW_SUGARCRMCONFIGURATION": "Nova Configuração do SugarCRM",
+    "ADD_SUGARCRMCONFIGURATION": "Adicionar Configuração do SugarCRM",
+    "EDIT_SUGARCRMCONFIGURATION": "Editar Configuração do SugarCRM",
+    "DELETE_SUGARCRMCONFIGURATION": "Excluir Configuração do SugarCRM",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Não há configurações do Freshdesk disponíveis",
+    "NEW_FRESHDESKCONFIGURATION": "Nova Configuração do Freshdesk",
+    "ADD_FRESHDESKCONFIGURATION": "Adicionar Configuração do Freshdesk",
+    "EDIT_FRESHDESKCONFIGURATION": "Editar Configuração do Freshdesk",
+    "DELETE_FRESHDESKCONFIGURATION": "Excluir Configuração do Freshdesk",
+    "SALESFORCEACCOUNTS": "Contas do Salesforce",
+    "EDIT_SALESFORCEACCOUNT": "Editar Conta do Salesforce",
+    "DELETE_SALESFORCEACCOUNT": "Excluir Conta do Salesforce",
+    "NEW_SALESFORCEACCOUNT": "Nova Conta do Salesforce",
+    "ADD_SALESFORCEACCOUNT": "Adicionar Conta do Salesforce",
     "CLIENTID": "ID do Cliente",
     "CLIENTSECRET": "Senha do Cliente",
     "SECURITYTOKEN": "Token Segurança",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Contas Freshdesk",
-    "EDIT_FRESHDESKACCOUNT": "Editar Conta Freshdesk",
-    "DELETE_FRESHDESKACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_FRESHDESKACCOUNT": "Nova Conta Freshdesk",
-    "ADD_FRESHDESKACCOUNT": "Adicionar Conta Freshdesk",
-    "SUGARCRMACCOUNTS": "Contas SugarCRM",
-    "EDIT_SUGARCRMACCOUNT": "Editar Conta SugarCRM",
-    "DELETE_SUGARCRMACCOUNT": "Excluir Conta Freshdesk",
-    "NEW_SUGARCRMACCOUNT": "Nova Conta SugarCRM",
-    "ADD_SUGARCRMACCOUNT": "Adicionar Conta SugarCRM",
+    "APIKEY": "Chave API",
+    "FRESHDESKACCOUNTS": "Contas do Freshdesk",
+    "EDIT_FRESHDESKACCOUNT": "Editar Conta do Freshdesk",
+    "DELETE_FRESHDESKACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_FRESHDESKACCOUNT": "Nova Conta do Freshdesk",
+    "ADD_FRESHDESKACCOUNT": "Adicionar Conta do Freshdesk",
+    "SUGARCRMACCOUNTS": "Contas do SugarCRM",
+    "EDIT_SUGARCRMACCOUNT": "Editar Conta do SugarCRM",
+    "DELETE_SUGARCRMACCOUNT": "Excluir Conta do Freshdesk",
+    "NEW_SUGARCRMACCOUNT": "Nova Conta do SugarCRM",
+    "ADD_SUGARCRMACCOUNT": "Adicionar Conta do SugarCRM",
     "CONFIGURATIONS": "Configurações",
-    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração Disponível",
+    "NO_CONFIGURATION_AVAILABLE": "Nenhuma Configuração disponível",
     "NEW_CONFIGURATION": "Nova Configuração",
     "ADD_CONFIGURATION": "Adicionar Configuração",
     "EDIT_CONFIGURATION": "Editar Configuração",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "INBOUND_IN_QUEUE": "Entrada na Fila",
-    "OUTBOUND_CALL": "Outbound Call",
+    "OUTBOUND_CALL": "Chamada de Saída",
     "VALUE": "Valor",
     "FIELD": "Campo",
     "KEY": "Key",
     "CHANNEL": "Canal",
     "DELETE": "Excluir",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TEST_ZENDESKACCOUNT": "Testar Conta Zendesk",
-    "TEST_FRESHDESKACCOUNT": "Testar Conta Freshdesk",
-    "TEST_SUGARCRMACCOUNT": "Testar Conta SugerCRM",
-    "TEST_SALESFORCEACCOUNT": "Testar Conta Salesforce",
-    "INTEGRATION_TAB": "Guia Integração",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "TEST_ZENDESKACCOUNT": "Testar Conta do Zendesk",
+    "TEST_FRESHDESKACCOUNT": "Testar Conta do Freshdesk",
+    "TEST_SUGARCRMACCOUNT": "Testar Conta do SugerCRM",
+    "TEST_SALESFORCEACCOUNT": "Testar Conta do Salesforce",
+    "INTEGRATION_TAB": "Aba da Integração",
     "NEW_TAB": "Nova Aba",
-    "DESKACCOUNTS": "Contas Desk",
-    "EDIT_DESKACCOUNT": "Editar Conta Desk",
-    "TEST_DESKACCOUNT": "Contas Desk",
-    "DELETE_DESKACCOUNT": "Excluir conta Desk",
+    "DESKACCOUNTS": "Contas do Desk",
+    "EDIT_DESKACCOUNT": "Editar Conta do Desk",
+    "TEST_DESKACCOUNT": "Testar Conta do Desk",
+    "DELETE_DESKACCOUNT": "Excluir Conta do Desk",
     "CONSUMERKEY": "Chave do Consumidor",
     "CONSUMERSECRET": "Senha do Consumidor",
     "TOKENSECRET": "Senha do Token",
-    "ADD_DESKACCOUNT": "Adicionar Conta Desk",
-    "NEW_DESKACCOUNT": "Nova Conta Desk",
-    "ADD_DESKCONFIGURATION": "Adicionar Configuração Desk",
-    "NEW_DESKCONFIGURATION": "Nova Configuração Desk",
-    "DELETE_DESKCONFIGURATION": "Excluir configuração Desk",
-    "ZOHOACCOUNTS": "Contas Zoho",
-    "EDIT_ZOHOACCOUNT": "Editar Conta Zoho",
-    "TEST_ZOHOACCOUNT": "Testar Conta Zoho",
-    "DELETE_ZOHOACCOUNT": "Excluir Conta Zoho",
-    "ADD_ZOHOACCOUNT": "Adicionar Conta Zoho",
-    "NEW_ZOHOACCOUNT": "Nova Conta Zoho",
-    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração Zoho",
-    "NEW_ZOHOCONFIGURATION": "Nova Configuração Zoho",
+    "ADD_DESKACCOUNT": "Adicionar Conta do Desk",
+    "NEW_DESKACCOUNT": "Nova Conta do Desk",
+    "ADD_DESKCONFIGURATION": "Adicionar Configuração do Desk",
+    "NEW_DESKCONFIGURATION": "Nova Configuração do Desk",
+    "DELETE_DESKCONFIGURATION": "Excluir Configuração do Desk",
+    "ZOHOACCOUNTS": "Contas do Zoho",
+    "EDIT_ZOHOACCOUNT": "Editar Conta do Zoho",
+    "TEST_ZOHOACCOUNT": "Testar Conta do Zoho",
+    "DELETE_ZOHOACCOUNT": "Excluir Conta do Zoho",
+    "ADD_ZOHOACCOUNT": "Adicionar Conta do Zoho",
+    "NEW_ZOHOACCOUNT": "Nova Conta do Zoho",
+    "ADD_ZOHOCONFIGURATION": "Adicionar Configuração do Zoho",
+    "NEW_ZOHOCONFIGURATION": "Nova Configuração do Zoho",
     "AUTHTOKEN": "Token de Autorização",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração Zoho",
+    "DELETE_ZOHOCONFIGURATION": "Excluir Configuração do Zoho",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "OF": "do",
-    "VTIGERACCOUNTS": "Contas vTiger",
-    "VTIGER_USER_NAME": "Nome do Usuário vTiger",
+    "VTIGERACCOUNTS": "Contas do vTiger",
+    "VTIGER_USER_NAME": "Nome do Usuário do vTiger",
     "MODULE_NAME": "Nome do Módulo vTiger",
-    "ACCESS_KEY": "Chave de Acesso vTiger",
-    "ADD_VTIGERACCOUNT": "Adicionar Conta vTiger",
-    "EDIT_VTIGERACCOUNT": "Editar Conta vTiger",
-    "TEST_VTIGERACCOUNT": "Testar Conta vTiger",
-    "DELETE_VTIGERACCOUNT": "Excluir Conta vTiger",
-    "NEW_VTIGERACCOUNT": "Nova Conta vTiger",
-    "NEW_VTIGERCONFIGURATION": "Criar Configuração vTiger",
-    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração vTiger",
-    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração vTiger",
-    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta Dynamics365",
-    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração Dynamics365",
+    "ACCESS_KEY": "Chave de Acesso do vTiger",
+    "ADD_VTIGERACCOUNT": "Adicionar Conta do vTiger",
+    "EDIT_VTIGERACCOUNT": "Editar Conta do vTiger",
+    "TEST_VTIGERACCOUNT": "Testar Conta do vTiger",
+    "DELETE_VTIGERACCOUNT": "Excluir Conta do vTiger",
+    "NEW_VTIGERACCOUNT": "Nova Conta do vTiger",
+    "NEW_VTIGERCONFIGURATION": "Criar Configuração do vTiger",
+    "DELETE_VTIGERCONFIGURATION": "Excluir Configuração do vTiger",
+    "ADD_VTIGERCONFIGURATION": "Adicionar Configuração do vTiger",
+    "ADD_DYNAMICS365ACCOUNT": "Adicionar Conta do Dynamics365",
+    "ADD_DYNAMICS365CONFIGURATION": "Adicionar Configuração do Dynamics365",
     "CASE": "Case",
-    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta Dynamics365",
-    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração Dynamics365",
-    "DYNAMICS365ACCOUNTS": "Contas Dynamics365",
-    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta Dynamics365",
-    "NEW_DYNAMICS365ACCOUNT": "Nova Conta Dynamics365",
-    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração Dynamics365",
-    "PHONECALL": "Chamada telefônica",
+    "DELETE_DYNAMICS365ACCOUNT": "Excluir Conta do Dynamics365",
+    "DELETE_DYNAMICS365CONFIGURATION": "Excluir Configuração do Dynamics365",
+    "DYNAMICS365ACCOUNTS": "Contas do Dynamics365",
+    "EDIT_DYNAMICS365ACCOUNT": "Editar Conta do Dynamics365",
+    "NEW_DYNAMICS365ACCOUNT": "Nova Conta do Dynamics365",
+    "NEW_DYNAMICS365CONFIGURATION": "Criar Configuração do Dynamics365",
+    "PHONECALL": "Phonecall",
     "TENANTID": "Tenant ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testar Conta Dynamics365",
+    "TEST_DYNAMICS365ACCOUNT": "Testar Conta do Dynamics365",
     "TICKETTYPE": "Tipo de Ticket",
-    "ADD_SERVICENOWACCOUNT": "Adicionar Conta ServiceNow",
-    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração ServiceNow",
-    "DELETE_SERVICENOWACCOUNT": "Excluir Conta ServiceNow",
-    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração ServiceNow",
-    "EDIT_SERVICENOWACCOUNT": "Editar Conta ServiceNow",
+    "ADD_SERVICENOWACCOUNT": "Adicionar Conta do ServiceNow",
+    "ADD_SERVICENOWCONFIGURATION": "Adicionar Configuração do ServiceNow",
+    "DELETE_SERVICENOWACCOUNT": "Excluir Conta do ServiceNow",
+    "DELETE_SERVICENOWCONFIGURATION": "Excluir Configuração do ServiceNow",
+    "EDIT_SERVICENOWACCOUNT": "Editar Conta do ServiceNow",
     "EMAIL": "Email",
-    "NEW_SERVICENOWACCOUNT": "Nova Conta ServiceNow",
-    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração ServiceNow",
-    "SERVICENOWACCOUNTS": "Contas ServiceNow",
-    "TEST_SERVICENOWACCOUNT": "Testar Conta ServiceNow",
+    "NEW_SERVICENOWACCOUNT": "Nova Conta do ServiceNow",
+    "NEW_SERVICENOWCONFIGURATION": "Nova Configuração do ServiceNow",
+    "SERVICENOWACCOUNTS": "Contas do ServiceNow",
+    "TEST_SERVICENOWACCOUNT": "Testar Conta do ServiceNow",
     "TASK": "Tarefa",
     "CODE": "Developer Console Code",
     "REFRESHTOKEN": "Atualizar Token (gerado)",
     "ZONE": "Zona",
     "CONTACTS": "Contato",
     "LEADS": "Lead",
-    "MODULECREATE": "Criar Módulo",
-    "ADD_FRESHSALESACCOUNT": "Adicionar Conta Freshsales",
-    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração Freshsales",
-    "DELETE_FRESHSALESACCOUNT": "Excluir Conta Freshsales",
-    "DELETE_FRESHSALESCONFIGURATION": "Excluir configuração Freshsales",
-    "EDIT_FRESHSALESACCOUNT": "Editar Conta Freshsales",
-    "EDIT_FRESHSALESCONFIGURATION": "Editar Configuração Freshsales",
-    "FRESHSALESACCOUNTS": "Contas Freshsales",
-    "NEW_FRESHSALESACCOUNT": "Nova Conta Freshsales",
-    "NEW_FRESHSALESCONFIGURATION": "Nova Configuração Freshsales",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração de Freshsales disponível",
-    "TEST_FRESHSALESACCOUNT": "Testar Conta Freshsales",
-    "ADDITIONALSEARCHACCOUNT": "Conta de Pesquisa Adicional",
-    "ADDITIONALSEARCHCONTACT": "Contato de Pesquisa Adicional",
-    "ADDITIONALSEARCHLEAD": "Lead de Pesquisa Adicional",
+    "MODULECREATE": "Módulo criado",
+    "ADD_FRESHSALESACCOUNT": "Adicionar Conta do Freshsales",
+    "ADD_FRESHSALESCONFIGURATION": "Adicionar Configuração do Freshsales",
+    "DELETE_FRESHSALESACCOUNT": "Excluir Conta do Freshsales",
+    "DELETE_FRESHSALESCONFIGURATION": "Excluir Configuração do Freshsales",
+    "EDIT_FRESHSALESACCOUNT": "Editar Conta do Freshsales",
+    "EDIT_FRESHSALESCONFIGURATION": "Editar Configuração do Freshsales",
+    "FRESHSALESACCOUNTS": "Contas do Freshsales",
+    "NEW_FRESHSALESACCOUNT": "Nova Conta do Freshsales",
+    "NEW_FRESHSALESCONFIGURATION": "Nova Configuração do Freshsales",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração do Freshsales disponível",
+    "TEST_FRESHSALESACCOUNT": "Testar Conta do Freshsales",
+    "ADDITIONALSEARCHACCOUNT": "Conta Adicional de Pesquisa",
+    "ADDITIONALSEARCHCONTACT": "Contato Adicional de Pesquisa ",
+    "ADDITIONALSEARCHLEAD": "Lead Adicional de Pesquisa",
     "LEADID": "Lead ID",
     "DYNAMIC365CONTACT": "Contato",
     "DYNAMIC365NOTHING": "Nothing",
     "MODERN_AUTHENTICATION": "Autenticação Moderna",
-    "OPENNEWTAB": "Abrir Nova Aba"
+    "OPENNEWTAB": "Abrir nova Aba"
   }
 }
index 6221f63..9ffbf6b 100644 (file)
@@ -2,11 +2,11 @@
   "JSCRIPTY": {
     "CLONE_PROJECT": "Afrita verkefni",
     "NAME": "Nafn",
-    "SEARCH_FOR_ANYONE": "Search",
+    "SEARCH_FOR_ANYONE": "Leita",
     "BACK": "Til baka",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja alla",
+    "SELECT_NONE": "Veldu ekkert",
     "DESCRIPTION": "Lýsing",
     "ERRORS": {
       "NAME_REQUIRED": "Skilyrtur reitur",
@@ -25,7 +25,7 @@
     "CREATED_AT": "Búið til kl.",
     "NEW_PROJECT": "Nýtt verkefni",
     "EDIT": "Breyta",
-    "SETTINGS": "Settings",
+    "SETTINGS": "Stillingar",
     "GENERAL": "almennt",
     "BUILDER": "Byggja",
     "PREVIEW": "Forskoðun",
       "SENDUNPAUSEONSUBMIT": "Við lok könnunarinnar, taka af sjálfvirkt af hlé fulltrúans"
     },
     "PAGE": "Bls.",
-    "ROWSPERPAGE": "Rows per page",
+    "ROWSPERPAGE": "Raðir á síðu",
     "OF": "af",
     "JSCRIPTYSESSIONS": "Verkefna hluti",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Lotur",
     "STARTTIME": "Upphafs tími",
     "ENDTIME": "Loka tími",
     "MEMBERNAME": "Nafn á meðlimi",
     "CALLERIDNUM": "Uppkallsnúmer",
     "NO_SESSION_AVAILABLE": "Engin verkhluti tiltækur",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
+    "SESSION_RESULTS": "Niðurstöður lotu",
+    "SHOW_QUESTIONS_SESSION": "Sýna niðurstöður lotu",
     "ANSWERS": "Svarað",
     "NO_RESULTS_AVAILABLE": "Engin niðurstaða tiltæk",
     "TOTAL": "Samtals",
     "EXPORT_TO_CSV": "Flytja út sem CSV skrá",
     "NO_ANSWERS_AVAILABLE": "Ekkert svar tiltækt",
     "DELETE_SESSION": "Eyða verki",
-    "RESET_SESSION": "Reset Session",
+    "RESET_SESSION": "Endurstilla lotu",
     "YES": "Já",
     "NO": "Nei",
     "DO_YOU_WANT_TO_RESET_SESSION": "Viltu endurstilla verkið?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Öll svör í könnuninni munu tapast!",
     "ENABLEUNCOMPLETESAVE": "Leyfa ekki kláraða vistun",
     "SUBMIT": "Sendið",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
+    "PROJECT_NOT_AVAILABLE": "Verkefni er ekki tiltækt. Hafið samband við stjórnanda. ",
     "COMPLETE": "Klárað",
-    "SESSIONS_PROJECT": "Go to Sessions"
+    "SESSIONS_PROJECT": "Fara í lotur"
   },
   "mwForm": {
     "form": {
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Síða {{síða}} of {{allarsíður}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tóm síða"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "Nefnd (named)",
+      "name": "Nafn síðu"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "Eftir síðu {{síða}}:",
+      "afterQuestionAnswer": "Fara á síðu byggt á svari",
+      "goToPage": "Fara á síðu {{síða.númer}}",
+      "goToNextPage": "Halda áfram á næstu síðu ",
+      "submitForm": "Senda inn eyðublað (Submit form)"
     },
     "elements": {
       "question": "Spurning",
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Stuttur texti"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Langur texti"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Útvarp"
         },
         "select": {
-          "name": "Select"
+          "name": "Velja"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Gáttakassi - Checkboxes"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Hnitanet"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Forgangsröðun"
         },
         "division": {
-          "name": "Division"
+          "name": "Deild"
         },
         "number": {
-          "name": "Number"
+          "name": "Númer"
         },
         "date": {
-          "name": "Date"
+          "name": "Dagsetning"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Tími dagsetningu"
         },
         "time": {
-          "name": "Time"
+          "name": "Tími"
         },
         "email": {
-          "name": "Email"
+          "name": "Tölvupóstfang"
         },
         "range": {
-          "name": "Range"
+          "name": "Svið"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Spurningartexti",
+      "type": "Tegund spurningar",
+      "required": "Nauðsynlegt",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Stuttur svartexti ",
+        "textarea": "Langur svartexti",
+        "otherAnswer": "Annað"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Magn",
+        "unit": "Merki einingar - Unit label",
+        "assignedSumLabel": "Úthlutað ",
+        "fromRequiredLabel": "Frá nauðsynlegum - from required"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Flokkað",
+        "available": "Aðgengilegt",
+        "clickToAddItem": "Smelltu til að bæta við hlut"
       },
       "grid": {
         "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "radio": "Útvarp",
+          "checkbox": "Gáttakassi - Checkbox",
+          "text": "Texti",
+          "number": "Númer",
+          "date": "Dagsetning",
+          "time": "Tími"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Röð {{röð}}",
+        "clickToAddRow": "Smelltu til að bæta við röð ",
+        "columnLabel": "Dálkur {{dal}}",
+        "clickToAddColumn": "Smelltu til að bæta við dálk"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Svið frá - Range from",
+        "to": "til"
       },
       "number": {
-        "min": "Min",
-        "max": "Max"
+        "min": "Lágmark",
+        "max": "Hámark"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "Eða",
+      "otherLabel": "Annað: ",
+      "userAnswer": "Svar notenda",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Smelltu til að bæta við valkosti",
+        "addOther": "Bæta við 'Annað'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Velja mynd",
+      "caption": "Myndatexti"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Færa inn málsgreinartexta (Enter paragraph text)"
     },
     "confirmationPage": {
-      "title": "Samþyktar síða",
+      "title": "Samþykktar síða",
       "customMessage": "Sérsniðin samþykktar skilaboð",
       "defaultMessage": "Viðbrögð þín hafa verið vistuð",
       "errorMessage": "Villa! Viðbrögð þín hafa ekki verið vistuð",
index a39d9fd..94109b1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Projeto Clone",
+    "CLONE_PROJECT": "Clonar Projeto",
     "NAME": "Nome",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "DESCRIPTION": "Descrição",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
     "NEW_PROJECT": "Novo Projeto",
     "EDIT": "Editar",
     "SETTINGS": "Configurações",
-    "GENERAL": "Feral",
+    "GENERAL": "Geral",
     "BUILDER": "Builder",
     "PREVIEW": "Visualizar",
-    "OPEN_CONTACT": "Contato aberto",
+    "OPEN_CONTACT": "Contato Aberto",
     "HELP": {
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "ENABLEUNCOMPLETESAVE": "Permitir salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
+      "ENABLEUNCOMPLETESAVE": "Permite salvar a sessão do agente, mesmo que a pesquisa não esteja completa",
       "SENDUNPAUSEONSUBMIT": "No final da pesquisa, interrompa automaticamente a pausa do agente"
     },
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "JSCRIPTYSESSIONS": "Sessões de Projetos",
+    "JSCRIPTYSESSIONS": "Sessões do Projeto",
     "SESSIONS": "Sessões",
-    "STARTTIME": "Hora de início",
-    "ENDTIME": "Hora final",
-    "MEMBERNAME": "Nome do membro",
-    "CALLERIDNUM": "Número do chamador",
+    "STARTTIME": "Hora de Início",
+    "ENDTIME": "Hora do Término",
+    "MEMBERNAME": "Nome do Agente",
+    "CALLERIDNUM": "Caller Number",
     "NO_SESSION_AVAILABLE": "Nenhuma sessão disponível",
-    "SESSION_RESULTS": "Resultados da Sessão",
-    "SHOW_QUESTIONS_SESSION": "Mostrar resultados da sessão",
-    "ANSWERS": "Respostas",
+    "SESSION_RESULTS": "Resultados das Sessões",
+    "SHOW_QUESTIONS_SESSION": "Mostrar Resultados da Sessão",
+    "ANSWERS": "Atendidas",
     "NO_RESULTS_AVAILABLE": "Nenhum resultado disponível",
     "TOTAL": "Total",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "EXPORT_TO_CSV": "Exportar para CSV",
     "NO_ANSWERS_AVAILABLE": "Nenhuma resposta disponível",
-    "DELETE_SESSION": "Excluir sessão",
-    "RESET_SESSION": "Redefinir Sessão",
+    "DELETE_SESSION": "Excluir Sessão",
+    "RESET_SESSION": "Reset da Sessão",
     "YES": "Sim",
     "NO": "Não",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Você deseja redefinir a sessão?",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Deseja reiniciar a sessão?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Todas as respostas da pesquisa serão perdidas!",
-    "ENABLEUNCOMPLETESAVE": "Ativar gravação incompleta",
+    "ENABLEUNCOMPLETESAVE": "Habilitar salvar incompleto",
     "SUBMIT": "Enviar",
     "PROJECT_NOT_AVAILABLE": "Projeto não está disponível. Por favor entre em contato com o administrador",
     "COMPLETE": "Completo",
@@ -73,9 +73,9 @@
       "description": "Descrição"
     },
     "buttons": {
-      "addPage": "Adicionar Página",
+      "addPage": "Adicionar página",
       "moveDown": "Mover para baixo",
-      "moveUp": "Subir",
+      "moveUp": "Mover para cima",
       "removePage": "Remover página",
       "remove": "Remover",
       "addElement": "Adicionar elemento",
       "back": "Voltar",
       "submit": "Enviar",
       "begin": "Começar",
-      "fold": "Dobro",
+      "fold": "Dobrar",
       "unfold": "Desdobrar",
       "edit": "Editar",
-      "clone": "Clone",
-      "view": "Visão"
+      "clone": "Clonar",
+      "view": "Visualizar"
     },
     "page": {
       "tab": {
     "question": {
       "types": {
         "text": {
-          "name": "Pequeno texto"
+          "name": "Texto curto"
         },
         "textarea": {
           "name": "Texto longo"
           "name": "Selecione"
         },
         "checkbox": {
-          "name": "Caixas de seleção"
+          "name": "Checkboxes"
         },
         "grid": {
           "name": "Grade"
           "name": "Data"
         },
         "datetime": {
-          "name": "Data hora"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Tempo"
+          "name": "Time"
         },
         "email": {
           "name": "Email"
         },
         "range": {
-          "name": "Alcance"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         "fromRequiredLabel": "de exigido"
       },
       "priority": {
-        "sorted": "Classificado",
+        "sorted": "Ordenado",
         "available": "Acessível",
         "clickToAddItem": "Clique para adicionar item"
       },
         "cellInputType": "Tipo de entrada de célula",
         "cellInputTypes": {
           "radio": "Radio",
-          "checkbox": "Caixa de seleção",
+          "checkbox": "Checkbox",
           "text": "Texto",
-          "number": "Numero",
+          "number": "Número",
           "date": "Data",
-          "time": "Tempo"
+          "time": "Time"
         },
         "rowLabel": "Linha {{row}}",
         "clickToAddRow": "Clique para adicionar linha",
       "userAnswer": "Resposta do usuário",
       "buttons": {
         "addOption": "Clique para adicionar opção",
-        "addOther": "Adicionar 'outro'"
+        "addOther": "Adicionar 'Outro'"
       }
     },
     "image": {
index 1f72f92..a99796a 100644 (file)
 {
   "MAIL": {
-    "ADVANCED": "Ítarlegt",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
+    "ADVANCED": "Ítarlegri",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Hala niður með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Hala niður án viðhengja ",
+    "DOWNLOAD": "Hala niður",
+    "LOGIN_TIME": "Innskráningartími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Hala niður",
+    "YOU_ARE_REGISTERED_AS_A": "Þú ert skráður sem",
+    "TRANSFER": "Flutningur",
+    "QUEUETRANSFER": "Flutningur raða",
+    "QUEUETRANSFERTIMEOUT": "Tími á flutningi raða runninn út ",
+    "AGENTTRANSFER": "Flutningur þjónustufulltrúa - Agent Transfer",
+    "AGENTTRANSFERTIMEOUT": "Tími runninn út á flutningi þjónustufulltrúa - Agent Transfer Timeout",
+    "TAG": "Merkja",
+    "EDIT_TAG": "Breyta merki",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir úthlutuðum þjónustufulltrúa ",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfi",
+    "COMMAND": "Skipun - Command",
+    "VARIABLE": "Breyta",
+    "SEND_AS": "Senda sem",
+    "NEW_MAILSUBSTATUS": "Ný undirstaða - New Sub Status",
+    "ADD_MAILSUBSTATUS": "Bæta við undirstöðu - Add Sub Status",
+    "MAILSUBSTATUSES": "Undirstöður tölvupósts - Email Sub Statuses",
+    "EDIT_MAILSUBSTATUS": "Breyta",
+    "DELETE_MAILSUBSTATUS": "Eyða",
+    "FONT_FAMILY": "Leturfjölskylda",
+    "FONT_SIZE": "Leturstærð",
+    "MARK_AS_UNREAD": "Merkja sem ólesið ",
     "ACCEPTED": "Samþykkt",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðin svör ",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
+    "CANNEDANSWERS": "Fyrirfram ákveðin svör ",
+    "MAILCANNEDANSWERS": "Fyrirfram ákveðin svör",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Engin fyrirfram ákveðin svör í boði ",
+    "NEW_MAILCANNEDANSWER": "Nýtt fyrirfram ákveðið svar ",
+    "ADD_MAILCANNEDANSWER": "Bæta við fyrirfram ákveðnu svari ",
+    "EDIT_MAILCANNEDANSWER": "Breyta fyrirfram ákveðnu svari ",
+    "DELETE_MAILCANNEDANSWER": "Eyða fyrirfram ákveðnu svari - Delete Canned Answer",
+    "SHOW_ORIGINAL_MESSAGE": "Sýna upprunaleg skilaboðin",
+    "PENDING": "Í bið",
+    "SEND_AS_PENDING": "Senda sem í bið",
+    "SEND_AND_CLOSE": "Senda og loka",
+    "CANNED_ANSWER_NOT_FOUND": "Engin fyrirfram ákveðin svör fundust - No Canned Answers were found",
+    "CANNED_ANSWER_SEARCH": "Sláðu inn texta til að leita að fyrirfram ákveðnu svari - Enter a text to search a Canned Answer",
+    "SPYINTERACTION": "Njósna",
     "ADD_NOTE": "Bæta við athugasemd",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "NOTE": "Athugasemd",
+    "TAGS": "Merki",
+    "NO_AGENT_ONLINE": "Enginn þjónustufulltrúi á netinu",
+    "GOTOREALTIME_MAILQUEUE": "Farðu í rauntíma tölvupóströð ",
+    "PARTIALPAUSE": "Hlé að hluta",
+    "BUSY": "Upptekinn",
+    "TIMER": "Tímamælir",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst - Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "CAPACITY": "Afkastageta",
+    "UNPAUSE": "Enda hlé ",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add agent to Email queue",
+    "VOICE": "Rödd",
+    "CHAT": "Spjall",
+    "SMS": "Smáskilaboð ",
+    "OPENCHANNEL": "Opna rás",
     "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Þjónustufulltrúar ",
-    "QUEUES": "Queues",
+    "REALTIME": "Rauntími",
+    "AGENTS": "Þjónustufulltrúar",
+    "QUEUES": "Raðir",
     "ACCOUNTS": "Reikningar",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innri",
     "PHONE_STATE": "Phone State",
     "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
+    "PAUSE": "Hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Gert hlé",
+    "READY": "Tilbúinn",
+    "WAITING": "Bíða",
+    "TOTAL": "Samtals",
     "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
+    "OUT": "Úti",
+    "IMAP_STATUS": "IMAP staða",
     "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "REPLY_TYPE": "Reply Type",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
+    "DISABLED": "Óvirkt",
+    "CONNECTED": "Tengdur - Connected",
+    "NEVER_VERIFIED": "Aldrei sannreynt",
+    "ERROR": "Villa",
+    "EDIT_ACCOUNT": "Breyta reikningi",
+    "VERIFY_SMTP": "Sannprófa SMTP",
+    "VERIFIED": "Sannprófað",
+    "VERIFYSMTP_MAILACCOUNT": "Sannprófa SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings ",
+    "GOTO_MAILACCOUNT": "Farðu í rauntíma tölvupóstreiknings",
+    "TEXT": "Texti",
+    "TIMES": "Fjöldi skipta á hver samskipti - Number of times per interaction",
+    "REPLY_TYPE": "Tegund svars",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari ",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "SHOW_AUTOREPLY": "Sýna sjálfvirkt svar",
+    "SHOW_DETAILS": "Sýna smáatriði",
+    "HIDE_DETAILS": "Fela smáatriði -  Hide details",
+    "TO": "Til",
+    "FROM": "Frá",
+    "DATE": "Dagsetning",
     "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
+    "REPLY": "Svara",
+    "REPLY_ALL": "Svara öllu",
+    "FORWARD": "Áfram",
+    "SUBJECT": "Efni",
     "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+    "SEND": "Senda",
+    "ATTACHMENT": "Viðhengi",
+    "ATTACHMENTS": "Viðhengi ",
+    "NAME": "Nafn ",
+    "MAILQUEUES": "Tölvupóstraðir ",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Kænska",
+    "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Áskildur reitur",
+      "TAG_REQUIRED": "Áskildur reitur",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
       "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "REPLY_TYPE_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field"
+      "COMMAND_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_REQUIRED": "Áskildur reitur",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TEXT_MAX_LENGTH": "Gildið verður að hafa hámarkslengd jafnt og {{hámark}}",
+      "VALUE_REQUIRED": "Áskildur reitur",
+      "TEXT_REQUIRED": "Áskildur reitur",
+      "REPLY_TYPE_REQUIRED": "Áskildur reitur",
+      "NAME_REQUIRED": "Áskildur reitur",
+      "AGENT_TIMEOUT_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_REQUIRED": "Áskildur reitur",
+      "EMAIL_ADDRESS_MUST_VALID": "Rangt snið",
+      "HOST_REQUIRED": "Áskildur reitur",
+      "USERNAME_REQUIRED": "Áskildur reitur",
+      "PORT_REQUIRED": "Áskildur reitur",
+      "CONNTIMEOUT_REQUIRED": "Áskildur reitur",
+      "AUTHTIMEOUT_REQUIRED": "Áskildur reitur",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Áskildur reitur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "AGENT_REQUIRED": "Áskildur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DISPOSITION_REQUIRED": "Áskildur reitur",
+      "CONDITION_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_REQUIRED": "Áskildur reitur",
+      "FALSEPRIORITY_REQUIRED": "Áskildur reitur",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PRIORITY_REQUIRED": "Áskildur reitur",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUE_REQUIRED": "Áskildur reitur",
+      "LIST_REQUIRED": "Áskildur reitur",
+      "PASSWORD_REQUIRED": "Áskildur reitur",
+      "SERVICE_REQUIRED": "Áskildur reitur",
+      "IMAP_HOST_REQUIRED": "Áskildur reitur",
+      "IMAP_PORT_REQUIRED": "Áskildur reitur",
+      "SMTP_HOST_REQUIRED": "Áskildur reitur",
+      "SMTP_PORT_REQUIRED": "Áskildur reitur",
+      "CONFIRM_NOT_MATCH": "Innslegin lykilorð passa ekki saman - The passwords inserted don't match",
+      "KEY_MAX_LENGTH": "Lykill verður að hafa hámarkslengd sem er jöfn Key must have a maximum length equal to {{max}}",
+      "KEY_REQUIRED": "Áskildur reitur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskildur reitur",
+      "FIELD_REQUIRED": "Áskildur reitur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Bæta við röð tölvupósts ",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Bæta við tölvupóstsreikning",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Account",
-    "DISPOSITIONS": "Dispositions",
+    "AGENT_TIMEOUT": "Tími þjónustufulltrúa runninn út - Agent Timeout",
+    "DESCRIPTION": "Lýsing",
+    "ADD_MAILQUEUE": "Bæta við tölvupóstsröð",
+    "EDIT_MAILQUEUE": "Breyta tölvupóströð ",
+    "DELETE_MAILQUEUE": "Eyða tölvupóströð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "SAVE": "Vista",
+    "MAILACCOUNTS": "Tölvupóstreikningur",
+    "EMAIL_ADDRESS": "Breyta netfangi ",
+    "ADD_MAILACCOUNT": "Bæta við tölvupóstreikningi",
+    "EDIT_MAILACCOUNT": "Breyta tölvupóstreikningi",
+    "DELETE_MAILACCOUNT": "Eyða tölvupóstreikningi - Delete Email Account",
+    "DISPOSITIONS": "Fyrirkomulag",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aðgerðir",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
+    "OTHERS": "Aðrir",
+    "LIST": "Listi",
+    "TEMPLATE": "Sniðmát",
+    "FIDELITY": "Trúnaður",
+    "SERVICE": "Þjónusta",
+    "CREATED_AT": "Stofnað kl.",
     "ACCEPT": "Samþykkja",
     "ACCEPTMETHOD": "Samþykkja aðferð",
     "ACCEPTURL": "Samþykkja URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Hafna aðferð",
+    "REJECTURL": "Hafna URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Aðferð við lokun - Close Method",
+    "CLOSEURL": "Loka url - Close URL",
+    "WHITELABEL": "Hvítt merki",
+    "SIGNATURE": "Undirskrift",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
-    "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "USERNAME": "Notendanafn",
+    "PORT": "Aðgangstengi",
+    "MAILBOX": "Pósthólf",
+    "FILTER": "Sía",
+    "CONNTIMEOUT": "Tímamörk tengingar [sek] - Connection Timeout [sec]",
+    "AUTHTIMEOUT": "Tímamörk auðkenningar  [sek] -  Authentication Timeout [sec]",
+    "DELETE": "Eyða tölvupósti frá netþjóni - Delete Email From Server",
     "SSL": "SSL",
-    "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "KEEPALIVE": "Halda lifandi",
+    "POLLING": "Fyrirspurnarkerfi",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
+    "SELECTED": "Valdnir",
+    "SELECT_ALL": "Veldu alla",
+    "SELECT_NONE": "Veldu engan",
+    "BACK": "Til baka",
+    "MAIL": "Tölvupóstur",
     "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulag tölvupósts ",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "TIMEOUT": "Hlé",
+    "PASSWORD": "Lykilorð",
+    "NO_MAILDISPOSITION_AVAILABLE": "Engin tölvupóstráðstöfun í boði",
+    "ADD_MAILDISPOSITION": "Bæta við fyrirkomulagi tölvupósts ",
+    "NEW_MAILDISPOSITION": "Nýtt fyrirkomulag tölvupósts ",
+    "EDIT_MAILDISPOSITION": "Breyta fyrirkomlagi tölvupósts ",
+    "DELETE_MAILDISPOSITION": "Eyða fyrirkomulagi tölvupósts - Delete Email Disposition",
+    "MAILDISPOSITIONS": "Fyrirkomulag tölvupósts ",
+    "NEW_MAILQUEUE": "Ný tölvupóströð - New Email Queue",
+    "NEW_MAILACCOUNT": "Nýr tölvupóstreikningur ",
+    "NO_AVAILABLE_INFO": "Engar tiltækar upplýsingar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valin teymi",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "CLOUD_PROVIDER": "Cloud Provider used for authentication"
+      "FONT_FAMILY": "Sjálfgefin leturfjölskylda",
+      "FONT_SIZE": "Sjálfgefin leturstærð",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "USERNAME": "Notendarnafn notað til auðkenningar - Username used for authentication",
+      "PASSWORD": "Lykilorð notað til auðkenningar",
+      "SECURE": "Ef satt, mun tengingin nota TLS við tengingu við netþjón - If true, the connection will use TLS when connecting to server",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé ef skyldubundin ráðstöfun er virk - Pause to use when mandatory disposition is enabled",
+      "MARK_AS_UNREAD": "Virkja/Óvirkja þjónustufulltrúa til að merkja við síðustu skilaboð í samskiptum sem ólesin - Unable/Disable  agent to mark as unread the last message of an interaction",
+      "CLOUD_PROVIDER": "Skýjaveita notuð til auðkenningar - Cloud Provider used for authentication"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við biðröð fyrir tölvupóst -  Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "PAGE": "Blaðsíða",
+    "ROWSPERPAGE": "Raðir á síðu\n",
+    "OF": "af",
+    "TEAMADD_MAILQUEUE": "Bættu teymi við tölvupóstsröð",
+    "AGENTADD_MAILQUEUE": "Bæta þjónustufulltrúa við tölvupóströð - Add Agent to Email Queue",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdnir þjónustufulltrúar",
     "AGENT": "Þjónustufulltrúi",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Breyta þjónustufulltrúa",
+    "EDIT_CLOSE": "Breyta loka ",
+    "DISPOSITION": "Fyrirkomulag",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Breyta GotoIf",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Sannur forgangur",
+    "FALSEPRIORITY": "Röng forgangsröðun",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Breyta GotoP",
+    "PRIORITY": "Forgangsröðun",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
+    "EDIT_NOOP": "Breyta Noop",
+    "VALUE": "Gildi",
+    "QUEUE": "Röð",
+    "EDIT_QUEUE": "Breyta röð ",
+    "INTERACTIONS": "Samskipti",
+    "STARTEDAT": "Byrja kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "CONTACT": "Hafðu samband",
+    "CLOSEDAT": "Lokar kl. - Closed At",
+    "NOTES": "Athugasemdir",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipi í boði",
     "ACTIVE": "Virkur",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "SECURE": "Öruggt",
+    "AUTHENTICATION": "Auðkenning",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð - Confirm Password",
+    "SELECT_STATUS": "Veldur staða",
+    "OPENED": "Opna",
+    "CLOSED": "Lokað",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "STATUS": "Staða",
     "ACCOUNT": "Reikningur",
-    "OPEN": "Open",
-    "KEY": "Key",
+    "OPEN": "Opna",
+    "KEY": "Lykill",
     "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstsreikning",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment",
-    "MODERN_AUTHENTICATION": "Modern Authentication",
-    "CLOUD_PROVIDER": "Cloud Provider",
-    "CUSTOM": "Custom",
-    "CREDENTIALS": "Credentials",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráður",
+    "UNAVAILABLE": "Ekki í boði",
+    "NOT_INUSE": "Ekki í notkun ",
+    "REACHABLE": "Hægt að nálgast",
+    "IN_USE": "Í notkun",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúum við tölvupóströð - Add agents to Email Queue",
+    "INFO": "Upplýsingar",
+    "INTERACTIONS_MAILACCOUNT": "Fara í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýja samskipti",
+    "DELETE_INTERACTION": "Eyða samskiptum ",
+    "AGENTADD_MAILACCOUNT": "Bæta þjónustufulltrúa við tölvupóstreikning ",
+    "TEAMS_ASSOCIATION": "Félag teymis",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í vinnslu ",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "DOWNLOAD_WITH_ATTACHMENT": "Hala niður viðhengi ",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Hala niður án viðhengi ",
+    "MODERN_AUTHENTICATION": "Nútíma auðkenning ",
+    "CLOUD_PROVIDER": "Skýjaveita - Cloud Provider",
+    "CUSTOM": "Sérsniðin",
+    "CREDENTIALS": "Skilríki",
     "NOTIFICATIONS": {
-      "ACCOUNT_CREATED_SUCCESS_TITLE": "Account successfully created",
-      "ACCOUNT_SAVED_SUCCESS_TITLE": "Account successfully saved",
-      "ACCOUNT_DELETE_TITLE": "Are you sure want to delete the account?",
-      "ACCOUNT_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ACCOUNT_DELETED_SUCCESS_TITLE": "Account successfully deleted",
-      "ACCOUNT_SERVICE_DELETE": "You cannot delete a service account",
-      "ACCOUNTS_DELETE_TITLE": "Are you sure want to delete the selected accounts?",
-      "ACCOUNTS_DELETE_MESSAGE": "{{ total }} accounts will be deleted",
-      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Accounts successfully deleted",
-      "SMTP_CONNECTION_SUCCESS_TITLE": "Successfully connected to the SMTP server",
-      "SMTP_CONNECTION_FAIL_TITLE": "Unable to connect to the SMTP server",
-      "UNKNOWN_SMTP_SERVER": "Unknown STMP server"
+      "ACCOUNT_CREATED_SUCCESS_TITLE": "Reikningur búinn til",
+      "ACCOUNT_SAVED_SUCCESS_TITLE": "Reikningurinn var vistaður\n",
+      "ACCOUNT_DELETE_TITLE": "Ertu viss um að þú viljir eyða reikningnum?\n",
+      "ACCOUNT_DELETE_MESSAGE": "{{ nafni }} verður eytt\n",
+      "ACCOUNT_DELETED_SUCCESS_TITLE": "Reikningi eytt\n",
+      "ACCOUNT_SERVICE_DELETE": "Þú getur ekki eytt þjónustureikningi\n",
+      "ACCOUNTS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum reikningum?",
+      "ACCOUNTS_DELETE_MESSAGE": "{{ samtals }} reikningum verður eytt ",
+      "ACCOUNTS_DELETED_SUCCESS_TITLE": "Reikningar hafa verið eyddir - Accounts successfully deleted",
+      "SMTP_CONNECTION_SUCCESS_TITLE": "Tenging komin á við SMTP þjóninn - Successfully connected to the SMTP server",
+      "SMTP_CONNECTION_FAIL_TITLE": "Ekki tókst að tengjast SMTP þjóninum\n",
+      "UNKNOWN_SMTP_SERVER": "Óþekktur STMP þjónn"
     }
   }
 }
index 62b01dd..e9754e6 100644 (file)
@@ -8,63 +8,63 @@
     "DOWNLOAD_INTERACTION": "Download",
     "YOU_ARE_REGISTERED_AS_A": "Você está registrado como",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da Fila",
+    "AGENTTRANSFER": "Transferir de Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguardando por um agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
-    "EDIT_SYSTEM": "Editar sistema",
+    "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "SEND_AS": "Enviar como",
-    "NEW_MAILSUBSTATUS": "Novo Sub Status",
-    "ADD_MAILSUBSTATUS": "Adicionar status de sub",
-    "MAILSUBSTATUSES": "Sub-status do email",
+    "NEW_MAILSUBSTATUS": "Novo Sub-status",
+    "ADD_MAILSUBSTATUS": "Adicionar Sub-status de Email",
+    "MAILSUBSTATUSES": "Sub-status do Email",
     "EDIT_MAILSUBSTATUS": "Editar",
     "DELETE_MAILSUBSTATUS": "Excluir",
-    "FONT_FAMILY": "Família de fontes",
-    "FONT_SIZE": "Tamanho da fonte",
+    "FONT_FAMILY": "Fonte do Texto",
+    "FONT_SIZE": "Tamanho da Fonte",
     "MARK_AS_UNREAD": "Marcar como não lido",
     "ACCEPTED": "Aceito",
-    "CANNEDANSWERS": "Respostas prontas",
-    "MAILCANNEDANSWERS": "Respostas prontas",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_MAILCANNEDANSWER": "Nova resposta pronta",
-    "ADD_MAILCANNEDANSWER": "Adicionar resposta pronta",
-    "EDIT_MAILCANNEDANSWER": "Editar resposta pronta",
-    "DELETE_MAILCANNEDANSWER": "Excluir resposta pronta",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "MAILCANNEDANSWERS": "Respostas Pré-definidas",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Nenhuma Respostas Pré-definidas disponíveis",
+    "NEW_MAILCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_MAILCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "EDIT_MAILCANNEDANSWER": "Editar Resposta Pré-definida",
+    "DELETE_MAILCANNEDANSWER": "Excluir Resposta Pré-definida",
     "SHOW_ORIGINAL_MESSAGE": "Mostrar mensagem original",
     "PENDING": "Pendente",
-    "SEND_AS_PENDING": "Enviar como pendente",
-    "SEND_AND_CLOSE": "Enviar e Fechar",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
-    "SPYINTERACTION": "Espião",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
+    "SEND_AS_PENDING": "Enviar como Pendente",
+    "SEND_AND_CLOSE": "Enviar e Encerrar",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
+    "SPYINTERACTION": "Espiar",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_MAILQUEUE": "Ir para a fila de email em tempo real",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_MAILQUEUE": "Visualizar Fila de Email em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
-    "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "TIMER": "Timer",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "UNPAUSE": "Fim da Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de email",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de Email",
     "VOICE": "Voz",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "REALTIME": "Tempo Real",
     "AGENTS": "Agentes",
     "ACCOUNTS": "Contas",
     "FULLNAME": "Nome Completo",
     "INTERNAL": "Interno",
-    "PHONE_STATE": "Estado do telefone",
-    "PHONE_STATUS": "Status do telefone",
+    "PHONE_STATE": "Estado do Telefone",
+    "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
-    "LOGGED_IN": "Logado",
+    "LOGGED_IN": "Logado Em",
     "PAUSED": "Pausado",
     "READY": "Pronto",
     "WAITING": "Esperando",
     "TOTAL": "Total",
     "IN": "In",
-    "OUT": "Out",
+    "OUT": "Saída",
     "IMAP_STATUS": "IMAP Status",
     "SMTP_STATUS": "SMTP Status",
     "DISABLED": "Desativado",
     "CONNECTED": "Conectado",
     "NEVER_VERIFIED": "Nunca Verificado",
     "ERROR": "Erro",
-    "EDIT_ACCOUNT": "Editar conta",
-    "VERIFY_SMTP": "Verificar o SMTP",
+    "EDIT_ACCOUNT": "Editar Conta",
+    "VERIFY_SMTP": "Verificar SMTP",
     "VERIFIED": "Verificado",
-    "VERIFYSMTP_MAILACCOUNT": "Verificar o SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
-    "GOTO_MAILACCOUNT": "Ir para a conta de e-mail em tempo real",
+    "VERIFYSMTP_MAILACCOUNT": "Verificar SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
+    "GOTO_MAILACCOUNT": "Visualizar Conta de Email em Tempo Real",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "AUTOREPLY": "Resposta automatica",
-    "SHOW_AUTOREPLY": "Mostrar resposta automática",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "AUTOREPLY": "Auto Resposta",
+    "SHOW_AUTOREPLY": "Mostrar Auto Resposta",
     "SHOW_DETAILS": "Mostrar detalhes",
-    "HIDE_DETAILS": "Detalhes ocultos",
+    "HIDE_DETAILS": "Ocultar detalhes",
     "TO": "Para",
     "FROM": "De",
     "DATE": "Data",
     "CC": "Cc",
-    "REPLY": "Resposta",
-    "REPLY_ALL": "Responder todos",
-    "FORWARD": "Frente",
-    "SUBJECT": "Sujeito",
-    "BCC": "Bcc",
+    "REPLY": "Responder",
+    "REPLY_ALL": "Responder à Todos",
+    "FORWARD": "Encaminhar",
+    "SUBJECT": "Assunto",
+    "BCC": "Cco",
     "SEND": "Enviar",
     "ATTACHMENT": "Anexo",
     "ATTACHMENTS": "Anexos",
     "NAME": "Nome",
     "MAILQUEUES": "Fila de Emails",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "STRATEGY": "Estrategia",
+    "STRATEGY": "Estratégia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "REPLY_TYPE_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "NAME_MUST_VALID_PATTERN": "Formato errado",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_REQUIRED": "Campo obrigatório",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor precisa ser menor ou igual à",
+      "TEXT_MAX_LENGTH": "O valor precisa ter tamanho máximo de até {{max}}",
+      "VALUE_REQUIRED": "Campo obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_REQUIRED": "Campo obrigatório",
+      "EMAIL_ADDRESS_MUST_VALID": "Formato incorreto",
+      "HOST_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PORT_REQUIRED": "Campo obrigatório",
+      "CONNTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AUTHTIMEOUT_REQUIRED": "Campo obrigatório",
+      "ACCEPTURL_MUST_VALID_URL": "Formato errrado",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
+      "REJECTURL_MUST_VALID_URL": "Formato errado",
+      "CLOSEURL_MUST_VALID_URL": "Formato errado",
+      "AGENT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor precisa ser maior ou igual à",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
+      "SERVICE_REQUIRED": "Campo obrigatório",
+      "IMAP_HOST_REQUIRED": "Campo obrigatório",
+      "IMAP_PORT_REQUIRED": "Campo obrigatório",
+      "SMTP_HOST_REQUIRED": "Campo obrigatório",
+      "SMTP_PORT_REQUIRED": "Campo obrigatório",
+      "CONFIRM_NOT_MATCH": "A senha inserida não confere",
+      "KEY_MAX_LENGTH": "A chave precisa ter tamanho máximo de até {{max}}",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Oobrigatório",
+      "REPLY_TYPE_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_MAILQUEUE": "Adicionar fila de email",
-    "EDIT_MAILQUEUE": "Editar fila de email",
-    "DELETE_MAILQUEUE": "Excluir fila de email",
+    "ADD_MAILQUEUE": "Adicionar Fila de Email",
+    "EDIT_MAILQUEUE": "Editar Fila de Email",
+    "DELETE_MAILQUEUE": "Excluir Fila de Email",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "SAVE": "Salvar",
     "MAILACCOUNTS": "Contas de Email",
     "EMAIL_ADDRESS": "Endereço de Email",
-    "ADD_MAILACCOUNT": "Adicionar conta de Email",
-    "EDIT_MAILACCOUNT": "Editar conta de Email",
-    "DELETE_MAILACCOUNT": "Excluir conta de Email",
-    "DISPOSITIONS": "Disposições",
+    "ADD_MAILACCOUNT": "Adicionar Conta de Email",
+    "EDIT_MAILACCOUNT": "Editar Conta de Email",
+    "DELETE_MAILACCOUNT": "Excluir Conta de Email",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "OTHERS": "Outros",
     "SERVICE": "Serviço",
     "CREATED_AT": "Criado em",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Metodo",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "WHITELABEL": "White Label",
     "SIGNATURE": "Assinatura",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Usuário",
     "PORT": "Porta",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "FILTER": "Filtro",
-    "CONNTIMEOUT": "Tempo limite de conexão [seg]",
-    "AUTHTIMEOUT": "Tempo limite de autenticação [seg]",
-    "DELETE": "Excluir email do servidor",
+    "CONNTIMEOUT": "Timeout de Conexão [seg]",
+    "AUTHTIMEOUT": "Timeout de Autenticação [seg]",
+    "DELETE": "Excluir Email do Servidor",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Sondagem",
     "SMTP": "SMTP",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecionar nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "MAIL": "Email",
     "ID": "Id",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "PASSWORD": "Senha",
-    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma disposição de email disponível",
-    "ADD_MAILDISPOSITION": "Adicionar disposição de email",
-    "NEW_MAILDISPOSITION": "Nova disposição de email",
-    "EDIT_MAILDISPOSITION": "Editar disposição de email",
-    "DELETE_MAILDISPOSITION": "Excluir disposição de email",
-    "MAILDISPOSITIONS": "Disposições de email",
-    "NEW_MAILQUEUE": "Nova fila de email",
-    "NEW_MAILACCOUNT": "Nova conta de email",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "NO_MAILDISPOSITION_AVAILABLE": "Nenhuma Qualificação de Email disponível",
+    "ADD_MAILDISPOSITION": "Adicionar Qualificação de Email",
+    "NEW_MAILDISPOSITION": "Nova Qualificação de Email",
+    "EDIT_MAILDISPOSITION": "Editar Qualificação de Email",
+    "DELETE_MAILDISPOSITION": "Excluir Qualificação de Email",
+    "MAILDISPOSITIONS": "Qualificações de Email",
+    "NEW_MAILQUEUE": "Nova Fila de Email",
+    "NEW_MAILACCOUNT": "Nova Conta de Email",
+    "NO_AVAILABLE_INFO": "Nenhuma Info Disponível",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "CLOUD_PROVIDER": "Provedor de nuvem usado para autenticação"
+      "FONT_FAMILY": "Fonte do Texto Padrão",
+      "FONT_SIZE": "Tamanho da Fonte Padrão",
+      "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
+      "USERNAME": "Username usado para autenticação",
+      "PASSWORD": "Password usado para autenticação",
+      "SECURE": "Se habilitado, a conexão utilizará TLS quando conectar ao servidor",
+      "MARK_AS_UNREAD": "Habilitar/Desabilitar agente a marcar como não lida uma interação",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+      "CLOUD_PROVIDER": "Provedor de Nuvem usado para autenticação"
     },
-    "PAGE": "Pagina",
-    "ROWSPERPAGE": "Linhas por Página",
+    "PAGE": "Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "TEAMADD_MAILQUEUE": "Adicionar equipe à fila de email",
-    "AGENTADD_MAILQUEUE": "Adicionar agente à fila de email",
-    "ALL_AGENTS": "Todos os agentes",
+    "TEAMADD_MAILQUEUE": "Adicionar Equipe à Fila de Email",
+    "AGENTADD_MAILQUEUE": "Adicionar Agente à Fila de Email",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "AGENT": "Agente",
-    "EDIT_AGENT": "Editar agente",
-    "EDIT_CLOSE": "Editar Fechar",
-    "DISPOSITION": "Disposição",
+    "EDIT_AGENT": "Editar Agente",
+    "EDIT_CLOSE": "Editar Encerramento",
+    "DISPOSITION": "Qualificação",
     "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "Id da Prioridade caso Falso",
     "GOTOP": "GotoP",
     "EDIT_GOTOP": "Editar GotoP",
     "PRIORITY": "Prioridade",
     "INTERACTIONS": "Interações",
     "STARTEDAT": "Começou às",
     "CONTACT": "Contato",
-    "CLOSEDAT": "Fechado em",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "ACTIVE": "Ativo",
     "SECURE": "Seguro",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
     "CONFIRM_PASSWORD": "Confirme a Senha",
-    "SELECT_STATUS": "Selecione o status",
+    "SELECT_STATUS": "Selecionar Status",
     "OPENED": "Abrir",
-    "CLOSED": "Fechadas",
+    "CLOSED": "Encerradas",
     "ALL": "Todos",
-    "SELECT_ACCOUNT": "Selecione uma conta",
+    "SELECT_ACCOUNT": "Selecionar Conta",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de email",
+    "IN_USE": "Ocupado",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Email",
     "INFO": "Info",
     "INTERACTIONS_MAILACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_MAILACCOUNT": "Adicionar agente à conta de email",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_MAILACCOUNT": "Adicionar Agente à Conta de Email",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada se Qualificação obrigatória estiver habilitada",
     "ADVANCED": "Avançado",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
     "REPLY_TYPE": "Tipo de Resposta",
-    "CLOUD_PROVIDER": "Provedor de nuvem",
+    "CLOUD_PROVIDER": "Provedor de Nuvem",
     "CREDENTIALS": "Credenciais",
     "CUSTOM": "Personalizado",
-    "MODERN_AUTHENTICATION": "Autenticação moderna"
+    "MODERN_AUTHENTICATION": "Autenticação Moderna"
   }
 }
index 6b63309..546b431 100644 (file)
 {
   "MOTIONDIALER": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "ONE_CALL_EVERY": "One call every",
-    "CURRENT_INTERVAL": "Current Interval",
-    "PREVIOUS_INTERVAL": "Previous Interval",
-    "PREDICTIVE_IS_RUNNING": "Predictive is running",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-    "AVG_TALK_TIME": "Avg Talk Time",
-    "ANSWERED_CALLS": "Answered Calls",
-    "TOTAL_CALLS": "Total Calls",
-    "THRESHOLDS": "Thresholds",
-    "PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-    "REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-    "RECALLINQUEUE": "Recall in queue",
-    "SELECT_DATE": "Select Date",
-    "SELECT_TYPE": "Select Type",
-    "SELECT_CAMPAIGN": "Select Campaign",
-    "SCHEDULED_CALLS": "Scheduled Calls",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "ANSWERING_MACHINE": "Answering machine",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðja stigs ráðstöfun",
+    "ONE_CALL_EVERY": "Eitt símtal alltaf",
+    "CURRENT_INTERVAL": "Núverandi bil",
+    "PREVIOUS_INTERVAL": "Fyrra tímabil",
+    "PREDICTIVE_IS_RUNNING": "Forsjá er virk, í gangi",
+    "PREDICTIVE_IS_NOT_RUNNING": "Forsjá er ekki virk, í gangi",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Gagnasöfnun í áföngum - Data collection in Progressive",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Sýna forsjárgildis upplýsingar",
+    "AVG_TALK_TIME": "Meðal taltími",
+    "ANSWERED_CALLS": "Símtölum svarað",
+    "TOTAL_CALLS": "Heildar fjöldi hringinga",
+    "THRESHOLDS": "Þrösköldar",
+    "PREDICTIVEMAXTHRESHOLD": "Forsjár hámarks þröskuldur [%]",
+    "PREDICTIVEMINTHRESHOLD": "Forsjár lámarks þröskuldur [%]",
+    "REFRESH_SCHEDULED_CALLS": "Endurnýjaðu skipulögð köll",
+    "RECALLINQUEUE": "Endurhringin er í röðinni",
+    "SELECT_DATE": "Veldu dag",
+    "SELECT_TYPE": "Veldu tegun",
+    "SELECT_CAMPAIGN": "Velja herferð",
+    "SCHEDULED_CALLS": "Skipulögð símtöl",
+    "LOGIN_TIME": "Innskráður tími",
+    "PAUSE_TIME": "Tími á hléinu",
+    "PREVIEW_RECALL_ME_REMINDER": "Minna mig á mín skilaboð",
+    "CUTDIGIT": "Klipptu tölustafi",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Handahófs úthringi auðkenni",
+    "CLONE_IVRCAMPAIGN": "Klóna herferð ",
+    "CLONE_QUEUECAMPAIGN": "Klóna herferð raðar",
+    "ABANDONEDCALLS": "Hringingar í biðröð sem var hætt við",
+    "HOPPERWIDGET": "Samantekt",
+    "RESETLIST_IVRCAMPAIGN": "Endursetja lista",
+    "RESETLIST_QUEUECAMPAIGN": "endursetja lista",
+    "RESET": "Endursetja",
+    "RESETLIST": "endursetja lista",
+    "SELECTALL": "Velja allt",
+    "UNSELECTALL": "Hætta við að velja allt",
+    "NO_AVAILABLE_INFO": "Engar aupplýsingar fáanlegar",
+    "TIMEOUT": "Tími rann út",
+    "CALLYSQUAREPROJECTPREVIEW": "Forskoðun Cally Square verkefnisins",
+    "CALLYSQUAREPROJECTPREVIEW2": "Verkefni Cally Square eftir forskoðun ",
+    "RUNIFHANGUPAGENT": "Keyrðu Cally Square verkefnið aftur þótt fulltrúinn skelli á",
+    "CALLYSQUAREPROJECT2": "Verkefni Cally Square eftir röð ",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "PARTIALPAUSE": "Stutt hlé",
+    "ALL": "Allir",
+    "IDLE": "Laust",
+    "TIMER": "Teljari",
+    "MOVE_HOPPERFINAL": "Endurheimta tengilið",
+    "RESTORECONTACTS": "Endursetja tengilið",
+    "NO_SUCH_NUMBER": "ekkert slíkt númer",
+    "ANSWERING_MACHINE": "Símsvari",
+    "DIALORDERBYSCHEDULEDAT": "Panta hringingu ",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "Hringdu aftur í fulltrúann",
+    "DIALRECALLINQUEUE": "Muna eftir hringingu í biðröð",
+    "DIALRECALLMETIMEOUT": "Tímamörk áminningu [mín]",
+    "RECALLME": "Hringdu í mig",
+    "RECALLFAILEDTIMEOUT": "Hringing mistókst",
+    "PREVIEW_CAMPAIGN": "Forskoða herferð",
+    "PREVIEW_CAMPAIGNS": "forskoða herferð",
+    "AMD": "Asterisk símsvörun skynjuð (AMD)",
+    "AMDTOTALANALYSISTIME": "Heildar greiningartími",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "Upphafsþögn",
+    "AMDGREETING": "Kveðja",
+    "AMDAFTERGREETINGSILENCE": "Þögn eftir kveðju\n",
+    "AMDSILENCETHRESHOLD": "Viðmiðunarmörk þagnar",
+    "AMDMINWORDLENGTH": "Lágmarks lengd orða ",
+    "AMDBETWEENWORDSSILENCE": "Þögn á milli orða\n",
+    "AMDMAXIMUMWORDLENGTH": "Hámarkslengd orða",
+    "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða",
+    "GOTO_QUEUECAMPAIGN": "Fara í rauntíma biðraða herferða",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Fara í rauntíma röð herferðar ",
+    "GOTO_IVRCAMPAIGN": "Fara í rauntíma IVR herferða",
+    "GOTOREALTIME_IVRCAMPAIGN": "Fara í rauntíma IVR herferðar",
+    "LOGOUT": "Útskráning",
+    "EDIT_CAMPAIGN": "Breyta herferð",
+    "LIMITED": "Takmarkað",
+    "IVR_CAMPAIGNS": "IVR herferð",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
+    "QUEUECAMPAIGNS": "Biðraðarherferð",
+    "IVRCAMPAIGNS": "IVR herferð",
+    "MANAGED": "Stjórnað",
+    "AVAILABLE_CONTACTS_FINISHED": "Tiltækum tengiliðum lokið",
+    "HISTORY": "Sagan",
+    "SCHEDULEDAT": "Stillt kl.",
+    "HOPPERBLACKS": "Hopper Svarti listinn",
     "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
+    "HOPPERFINALS": "Hopper Loka",
     "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
+    "HOPPERHISTORIES": "Símtala skrá",
     "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
+    "DELETE_HOPPERHISTORY": "Eyða",
+    "DELETE_HOPPERFINAL": "Eyða",
+    "CONTACTID": "Auðkenni tengiliðs",
+    "STARTTIME": "Upphafstími",
+    "RESPONSETIME": "Svörunar tími",
+    "ENDTIME": "Lokatími",
+    "STATUS": "Staða",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
+    "NO_HOPPER_AVAILABLE": "Engir hlutir í boði",
+    "EDIT_HOPPER": "Breyta Hopper",
+    "DELETE_HOPPER": "Eyða Hopper",
+    "FINAL": "Loka",
+    "BLACKLIST": "Svarti listinn",
+    "NAME": "Nafn",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "DELETE_VOICEDISPOSITION": "Eyða ráðstöfun raddar",
+    "EDIT_VOICEDISPOSITION": "Breyta raddráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta raddbiðröð",
+    "DELETE_VOICEQUEUE": "Eyða raddröð\n",
+    "MOHSOUNDS": "Moh Hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "INTERVAL": "Tímabil",
+    "ADD_VOICEQUEUE": "Bæta við raddröð",
+    "NEW_QUEUECAMPAIGN": "Ný biðraða herferð",
+    "ACTIVE": "Virkur",
+    "METHOD": "Aðferð",
+    "POWERLEVEL": "Orku staða",
     "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "NOSUCHNUMBER": "No such number",
-    "NOSUCHNUMBERMAXRETRY": "Max Retries",
-    "NOSUCHNUMBERRETRYTIME": "Retry Time [min]",
+    "AGENTBUSYFACTOR": "Þjónustufulltrúi upptekinn",
+    "PREDICTIVEOPTIMIZATION": "Bestun forsjár",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "% forsjár bestunar",
+    "PREDICTIVEINTERVAL": "Forsjár tímabil",
+    "ADD_QUEUECAMPAIGN": "Bæta við herferð í biðröð",
+    "CAMPAIGN": "Herferð",
+    "MAXCONCURRENTCALLS": "Hámarks fjöldi samtíma samtala",
+    "CONCURRENTCALLS": "Hámarksfjöldi samhliða símtala",
+    "ORIGINATE": "Upphafsaðili",
+    "ORIGINATECALLERIDNAME": "Nafn á úthringingu",
+    "ORIGINATECALLERIDNUMBER": "Númer á úthringingu",
+    "ORIGINATETIMEOUT": "Útruninn tími á upphafsaðila",
+    "QUEUEOPTIONS": "Biðraðar möguleikar",
+    "QUEUETIMEOUT": "Útrunninn tími á biðröð",
+    "CALLYSQUAREPROJECT": "Verkefni Cally Square ",
+    "RETRYANDFREQUENCY": "Stillingar á endurstillingum",
+    "GLOBAL": "Alþjóðlegt",
+    "GLOBALMAXRETRY": "Hámark endurtekninga",
+    "CONGESTION": "Þrengsli",
+    "CONGESTIONMAXRETRY": "Hámark endurtekninga",
+    "CONGESTIONRETRYTIME": "Tími endurtekninga [mín]",
+    "BUSYMAXRETRY": "Hámark endurtekninga",
+    "BUSYRETRYTIME": "Tími endurtekninga [mín]",
+    "NOANSWER": "Ekki svarað",
+    "NOANSWERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOANSWERRETRYTIME": "Endurtekningar tími [mín]",
+    "NOSUCHNUMBER": "Ekkert slík númer",
+    "NOSUCHNUMBERMAXRETRY": "Hámarks fjöldi tilrauna",
+    "NOSUCHNUMBERRETRYTIME": "Endurtekningar tími [mín]",
     "DROP": "Drop",
-    "DROPMAXRETRY": "Max Retries",
-    "DROPRETRYTIME": "Retry Time [min]",
-    "ABANDONEDMAXRETRY": "Max Retries",
-    "ABANDONEDRETRYTIME": "Retry Time [min]",
-    "MACHINE": "Machine",
-    "MACHINEMAXRETRY": "Max Retries",
-    "MACHINERETRYTIME": "Retry Time [min]",
-    "AGENTREJECT": "Agent Reject",
-    "AGENTREJECTMAXRETRY": "Max Retries",
-    "AGENTREJECTRETRYTIME": "Retry Time [min]",
-    "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]",
-    "ADDITIONALPHONES": "Additional phones",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
+    "DROPMAXRETRY": "Hámark endurtekninga",
+    "DROPRETRYTIME": "Endurtekningartími [mín] ",
+    "ABANDONEDMAXRETRY": "Hámark endurtekna",
+    "ABANDONEDRETRYTIME": "Tími endurtekningar [mín]",
+    "MACHINE": "Tölvan",
+    "MACHINEMAXRETRY": "Hámarks fjöldi endurtekninga",
+    "MACHINERETRYTIME": "Endurtekna tími [min]",
+    "AGENTREJECT": "Höfnun þjónustufulltrúa",
+    "AGENTREJECTMAXRETRY": "Hámark endurtekningar",
+    "AGENTREJECTRETRYTIME": "Tími endurtekningar [mín]",
+    "CALLADDITIONALPHONEAFTERMIN": "Hringja í viðbótarsíma eftir [min] ",
+    "ADDITIONALPHONES": "Auka símar",
+    "QUEUE_PARAMS": "Breytur fyrir biðröð",
+    "ORIGINATED": "Upphafsaðili",
+    "MESSAGE": "Skilaboð",
     "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "CREATED_AT": "Stofnað kl.",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Sér forrit"
     },
     "ERRORS": {
-      "AGENT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
+      "AGENT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_REQUIRED": "Áskilinn reitur",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Áskilinn reitur",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_REQUIRED": "Áskilinn reitur",
+      "INTERVAL_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUIRED": "Áskilinn reitur",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "PREFIX_MUST_VALID_PATTERN": "Rangt snið",
+      "NAME_REQUIRED": "Áskilinn reitur",
+      "TIMEOUT_REQUIRED": "Áskilinn reitur",
+      "PHONENUMBER_REQUIRED": "Áskilinn reitur",
+      "CONTEXT_REQUIRED": "Áskilinn reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Áskilinn reitur",
+      "FULLNAME_REQUIRED": "Áskilinn reitur",
+      "EMAIL_REQUUIRED": "Áskilinn reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Áskilinn reitur",
+      "PASSWORD_REQUIRED": "Áskilinn reitur",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Mandatory field",
-      "DROPMAXRETRY_REQUIRED": "Mandatory field",
-      "DROPRETRYTIME_REQUIRED": "Mandatory field",
-      "ABANDONEDMAXRETRY_REQUIRED": "Mandatory field",
-      "ABANDONEDRETRYTIME_REQUIRED": "Mandatory field",
-      "MACHINEMAXRETRY_REQUIRED": "Mandatory field",
-      "MACHINERETRYTIME_REQUIRED": "Mandatory field",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Mandatory field",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to"
+      "TIMEZONE_REQUIRED": "Áskilinn reitur",
+      "PREFIX_REQUIRED": "Áskilinn reitur",
+      "OPTIONS_REQUIRED": "Áskilinn reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Áskilinn reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Áskilinn reitur",
+      "PHONE_REQUIRED": "Áskilinn reitur",
+      "VALUE_REQUIRED": "Áskilinn reitur",
+      "EXTENSION_REQUIRED": "Áskilinn reitur",
+      "PRIORITY_REQUIRED": "Áskilinn reitur",
+      "GLOBALMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "CONGESTIONRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "BUSYMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "BUSYRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "NOANSWERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOANSWERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "QUEUETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "ORIGINATETIMEOUT_REQUIRED": "Áskilinn reitur",
+      "GLOBALINTERVAL_REQUIRED": "Áskilinn reitur",
+      "MAXCONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "CONCURRENTCALLS_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "DROPMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "DROPRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "ABANDONEDRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "MACHINEMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "MACHINERETRYTIME_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Áskilinn reitur",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Áskilinn reitur",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt ",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Áskilinn reitur",
+      "CALLYSQUAREPROJECT_REQUIRED": "Áskilinn reitur",
+      "TRUNK_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Áskilinn reitur",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Almennt",
+    "AGENTTIMEOUT": "Tími þjónustufulltrúa runninn út ",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Tími eftir samtal",
+    "WEIGHT": "Þyngd",
+    "JOINWHENEMPTY": "Vertu með ef tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir ef tómt",
     "HELP": {
-      "PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-      "PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "TIMEZONE": "Specify timezone",
-      "PREVIEW_RECALL_ME_REMINDER": "If enabled, the system will send a notification to the agent n minutes (according to time interval set in general settings) before generating the recall me",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number",
-      "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number",
-      "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop",
-      "DROPRETRYTIME": "Time in minutes before trying to call again a failed contact due to drop",
-      "ABANDONEDMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for abandon",
-      "ABANDONEDRETRYTIME": "Time in minutes before trying to call again a failed contact due to abandon",
-      "MACHINEMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for machine",
-      "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine",
-      "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject",
-      "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject",
-      "CALLADDITIONALPHONEAFTERMIN": "",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually"
+      "PREDICTIVEMAXTHRESHOLD": "Ef hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fjölda fulltrúa sem eru tiltækir þegar spáin var gerð, fer yfir stillt hámarksmörk, endurreikur spáin spána ",
+      "PREDICTIVEMINTHRESHOLD": "\nEf hlutfall fulltrúa sem eru tiltækir í tímaglugganum, samanborið við fulltrúa sem eru tiltækir á þeim tíma sem spáin er gerð, fer yfir stillt lágmarksmörk, endurreikur spáin spána.",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Ef það er stærra en 0 myndar það af handahófi samsvarandi síðustu tölustaöfum í Caller ID númeri",
+      "TIMEOUT": "Fjöldi sekúndna til að hringja í fulltrúa í biðröð",
+      "CALLYSQUAREPROJECTPREVIEW": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar fulltrúi svarar (IVR verður beint til fulltrúans)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR þegar viðskiptavinurinn leggur á eða ekki er hægt að ná í hann (IVR verður beint til fulltrúans)",
+      "RUNIFHANGUPAGENT": "Keyra Cally Square verkefnið aftur jafnvel þótt fulltrúi leggi á",
+      "CALLYSQUAREPROJECT2": "Með því að velja IVR verkefnið mun forritið áframsenda símtalið til IVR eftir biðröðina (ef biðröðinni lýkur með tímamörkum)",
+      "DIALORDERBYSCHEDULEDAT": "Fáðu tengilið frá hopper (lækkandi eða hækkandi).",
+      "DIALRECALLINQUEUE": "Endurskipuleggja símtal á fulltrúa í röðinni",
+      "DIALRECALLMETIMEOUT": "Tímabil (í mínutum) áður en valið er að hringja aftur",
+      "PRIORITY": "Forgangur á listanum",
+      "TIMEZONE": "Tilgreindu tímabelti",
+      "PREVIEW_RECALL_ME_REMINDER": "Ef þetta er virkjað mun kerfið senda tilkynningu til fulltrúa n mínútum (samkvæmt tímabili sem er stillt í almennum stillingum) áður en búið er til endurkall",
+      "AMDMAXIMUMWORDLENGTH": "Leyfileg hámarkslengd stakra tilsvara",
+      "AMDMINWORDLENGTH": "Lágmarkstími raddar sem á að telja sem orð",
+      "AMDSILENCETHRESHOLD": "Ef meðaltalshávaði í sýni nær ekki þessu gildi, frá kvarðanum 0 til 32767, þá munum við líta á það sem hljóðlátt.",
+      "AMDTOTALANALYSISTIME": "Hámarkstími sem reikniritið má nota til að ákveða hvort hljóðið táknar MANN eða VÉL",
+      "AMDAFTERGREETINGSILENCE": "Þögn eftir að hafa greint kveðju. Ef farið er yfir mörkin er niðurstaðan greind sem sem MAÐUR",
+      "AMDGREETING": "Hámarkslengd á kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDINITIALSILENCE": "Hámarkslengd þagnar á undan kveðju. Ef farið er yfir mörkin, þá er niðurstaðan greind sem VÉL",
+      "AMDACTIVE": "Virkjaðu eða slökktu á skynjunartilraunum ef um símsvara er að ræða",
+      "AMDBETWEENWORDSSILENCE": "Lágmarkstími þagnar á eftir orði til að greina hljóð sem kemur á eftir sem nýtt orð",
+      "AMDMAXIMUMNUMBEROFWORDS": "Hámarksfjöldi orða í kveðjunni. Ef því er NÁÐ, er niðustaðan greind sem VÉL",
+      "CALLYSQUAREPROJECT": "Með því að velja IVR verkefni mun forritið áframsenda símtalið til IVR fyrir biðröðina",
+      "PREFIX": "Forskeyti númers",
+      "ACTIVE": "Virkur",
+      "AGENTTIMEOUT": "Hversu lengi (í sekúndum) á að hringja í fulltrúa",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja út og meiga vera í biðröð (0=ótakmarkað)",
+      "RETRY": "Hversu lengi (í sekúndum) á að bíða áður en hringt er í næsta lausa fulltrúa í biðröðinni þegar tíminn er útrunninn",
+      "WRAPUPTIME": "Notað til að ákvarða forgang ef umboðsmenn eru tengdir við fleiri en eina biðröð",
+      "WEIGHT": "Notað til að ákvarða forgang ef fulltrúar eru tengdir við fleiri en eina biðröð",
+      "JOINWHENEMPTY": "Ef hringt er í biðröðina, og engir fulltrúar eru tiltækir",
+      "LEAVEWHENEMPTY": "Ef sá sem hringir er vísað úr biðröðinni vegna þess að einginn fulltrúi er til að svara",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (0=slökkva)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Notað ef þú hefur skilgreint tilkynningarstöðu sem annað hvort 'takmark' eða 'meira'",
+      "AFTERCALLWORKDURATION": " Lengd biðtíma sem virkjast af valkostunum eftir símtal",
+      "MEMBERDELAY": "Settu inn töf áður en sá sem hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistar tegund til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilar tilkynningu til þjónustufulltrúa sem svarar símtalinu (t.d. til að láta hann vita úr hvaða röð sá sem hringir kemur)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, spilar það reglubundnar tilkynningar í handahófskenndri röð",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk ",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að skrá biðtíma þjónustufulltrúa fyir tengingu",
+      "PERIODICANNOUNCE": "Textar af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engin tilkynning",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynning",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef það er virkt verður þjónustufulltrúinn stilltur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "Virkjar/Óvirkjar á sjálfvirkt hlé á þjónustufulltrúum sem svara ekki símtali. Ef það er virkt veldur það því að þjónustufulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima biðraðar sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá samtalinu",
+      "MONITORFORMAT": "Tilgreinir skráarsniðið sem á að nota við upptöku. Ef skrárnið er óskilgreint verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir hringjara að fara úr biðröðinni með því að ýta á einn DTMF tón/tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar ",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúa verða nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion. com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https: //wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)ue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl:<a target=\"_blank\"href=\"https://wiki.xcallymotion .com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">smelltu hér</a>)",
+      "RECORDING": "Virkja upptöku samtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegrar framlengingar ",
+      "METHOD": "Aðferð úthringivers",
+      "POWERLEVEL": "Fjöldi tengiliða til að hringja í fyrir alla tiltæka fulltrúa",
+      "PREDICTIVEOPTIMIZATION": "Stuðull til að fínstilla í forspáralgrímið",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Hlutfall byggt á völdum forspárhagræðingarstuðli ",
+      "PREDICTIVEINTERVAL": "Tímabil (í mínútum) talið fyrir forspáralgrími til að reikna út fjölda símtala sem á að búa til til að hámarka niðurstöðuna",
+      "MAXCONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem forritið leyfir við þessa herferðð (0=ótakmarkað)",
+      "CONCURRENTCALLS": "Hámarksfjöldi samtíma símtala sem hringir út fyrir þessa herferð mun koma frá",
+      "ORIGINATECALLERIDNAME": "Auðkenni út hringingar \"Caller Id Nafn\"",
+      "ORIGINATECALLERIDNUMBER": "Auðkenni út hringinar \"Outgoing Caller Id númer\"",
+      "ORIGINATETIMEOUT": "Tími (í sekúndum) fyrir úthringinguna til að tengjast, annars er staðan stillt á ekki svarað ",
+      "QUEUETIMEOUT": "Tími (í sekúndum) sem símtal bíður í biðröð áður en því er sleppt (Min 1 og Max 999)",
+      "GLOBALMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaðan",
+      "CONGESTIONMAXRETRY": "Hámarksfjöldi sem hringt er í tengilið áður en forrið telur hann lokaðan, eða þegar símtalið mistókst vegna þess að ekki tókst að ná sambandi",
+      "CONGESTIONRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki náðist í",
+      "BUSYMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum við hann sé álitið lokið, þegar símtalið mistókst vegna anna",
+      "BUSYRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur, tengiliður var upptekin",
+      "NOANSWERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki tókst að ná sambandi",
+      "NOANSWERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "NOSUCHNUMBERMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talinn lokaður, þegar ekki er svarað",
+      "NOSUCHNUMBERRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið, því númerið svarar ekki",
+      "DROPMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en talið er að hann sé lokaður, þegar símtalið mistókst",
+      "DROPRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið ef símtalið mistókst",
+      "ABANDONEDMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann telur hann lokaðan, þegar það mistekst að hætta við símtal.",
+      "ABANDONEDRETRYTIME": "Tími í mínútum áður en reynt er að hringja afur vegna þess að ekki var svarað áður",
+      "MACHINEMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en hann er talin lokaður ef samtalið mistekst",
+      "MACHINERETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið sem ekki svaraði",
+      "AGENTREJECTMAXRETRY": "Hámarksfjöldi skipta sem hringt er í tengilið áður en samskiptum er álitið lokið, þegar símtal mistókst vegna höfnunar þjónustufulltrúa",
+      "AGENTREJECTRETRYTIME": "Tími í mínútum áður en reynt er að hringja aftur í tengilið þar sem samskipti rofnuðu vegna höfnun þjónustufulltrúa",
+      "CALLADDITIONALPHONEAFTERMIN": "Settu inn biðtíma",
+      "GLOBALINTERVAL": "Tímabil kl. frá til, þar sem forritið hefur leyfi til að hringja í tengiliði. Við tökum ekki ábyrgð á því: vinsamlega veittu því athygli þegar þú breytir þessum reit, vegna þess að þú gætir farið út fyrir leyfilegan tíma samkvæmt landslögum og reglugerðum um sjálfvirka hringingu.",
+      "NAME": "Aðeins tölur, stafir og sérták (._) eru studdir",
+      "MANDATORYDISPOSITIONPAUSEID": "Tími á nauðsynlegu hléi á milli úthringinga",
+      "PREVIEW_AUTO_RECALL_ME": "Ef þetta er virkjað mun kerfið sjálfkrafa búa sjálfvirkt uppkall; annars verður fulltrúinn að gera það handvirkt"
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynna til þjónustufulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCEDPREVIEW": "Ítarlegt",
+    "ADVANCED": "Ítarlegt",
+    "ADVANCE": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tilkynna tíðni",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni skilaboða",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni endurtekningar á tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahófs reglubundin tilkynning",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna um stöðu þess sem hringir",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna afmarkaða stöðu",
+    "REPORTHOLDTIMEAGENT": "Skýrsla um hlé tíma fulltrúa",
+    "PERIODICANNOUNCE": "Endurteknar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' skilaboð",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Bið skilaboð",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Áætlaður biðtími tilkynntur",
+    "MINUTESANNOUNCE": "Tími tilkynningar",
+    "MINUTEANNOUNCE": "Tími tilkynningar",
+    "SECONDSANNOUNCE": "Tilkynningar sekúndur",
+    "THANKYOUANNOUNCE": "'TTakk fyrir' Tilkynning",
+    "AUTOPAUSE": "Sjálfvirk pása",
+    "AFTERCALLWORK": "Seinna símtal - After Call Work",
+    "AFTERCALLWORKDURATION": "Lengd eftir vinnu símtal",
+    "RINGINUSE": "Hringingar í notkun",
+    "MEMBERDELAY": "Notanda seinkun",
+    "TIMEOUTRESTART": "Endursetning á útrunnum tíma",
+    "MONITORFORMAT": "Snið á upptöku",
+    "SETINTERFACEVARIABLES": "Stillingar á viðmótsbreytum",
+    "SETQUEUEVARIABLES": "Stilla biðraða breytum",
+    "SETQUEUEENTRYVARIABLES": "Stillingar á biðraðar grunn breytum",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi reglur",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bæta við innhringi reglu",
+    "EDIT_INBOUNDROUTE": "Breyta innleið ",
+    "DELETE_INBOUNDROUTE": "Eyða innleið",
+    "ACTIONS": "Aðgerðir ",
+    "OUTBOUNDROUTES": "Úthringi reglur",
+    "DESTINATIONPATTERN": "Mynstur áfangastaðar ",
+    "ADD_OUTBOUNDROUTE": "Bæta við útleið",
+    "EDIT_OUTBOUNDROUTE": "Breyta útleið",
+    "DELETE_OUTBOUNDROUTE": "Eyða útleið",
+    "CUTDIGITS": "Klipptu tölustafi\n",
+    "RECORDING": "Upptaka",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss routing",
+    "ADD_INTERNALROUTE": "Bæta við innanahús reglu",
+    "EDIT_INTERNALROUTE": "Breyta innri leið",
+    "DELETE_INTERNALROUTE": "Eyða innri leið",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bæta við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi\n",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bæta við talhólf",
+    "EDIT_VOICEMAIL": "Breyta talhólfsskilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talhólfsskilaboðum\n",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Hengdu við",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Meginmál tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupósts\n",
+    "MAXSECONDS": "Hámark í sekúndum",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Raða",
+    "ADD_MUSICONHOLD": "Bæta við tónlist á bið",
+    "MUSICONHOLDS": "Tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta tónlist í bið",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið ",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóðskrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bæta við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Þjónustufulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Biðraðir",
+    "QUEUE_CALLS": "Biðraðar hringing",
+    "QUEUE_PARAMETERS": "Stillingar á biðröð",
+    "ABANDONED_CALLS": "Hringingar sem hætt var við ",
+    "OUTBOUND_CALLS": "Úthringi samtal",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Hringdu",
+    "INTERNALDIAL": "Hringja innanhúss",
+    "EXTERNALDIAL": "Utanaðkomandi hringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Biðröð",
+    "SET": "Sett",
+    "VOICEMAIL": "Talskilaboð",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Skella á ",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
+    "TECHNOLOGY/RESOURCE": "Tæknigrunnur",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta umsókn",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn\n",
+    "INTERVALS": "Iímabilum",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóðskrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrift",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svara",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Framlenging",
+    "PRIORITY": "forgangur",
+    "HANGUP_CAUSE": "Orsök þess að það var skellt á ",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni þess sem hringir",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð ",
+    "NO_SOUND_AVAILABLE": "Ekkert hljóð til staðar",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
     "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "VOICEMAIL_CONTEXT": "Innihald",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bæta við tónlist á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist á bið",
+    "DELETE_MOHSOUND": "Eyða tónlist á bið ",
+    "UNIQUEID": "Einkvætt auðkenni",
+    "AGENT": "Þjónustufulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "RatingEinkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dagsetning",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Ný innhringi regla",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Ný innanhús regla",
+    "NEW_CONTEXT": "Nýtt innihald",
+    "NEW_VOICEMAIL": "Ný talhólfa skilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bæta við teymi við Raddröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bæta þjónustufulltrúa við raddbiðröð",
+    "EDIT_DIAL": "Breyta hringja",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta úthringingum",
+    "EDIT_RINGGROUP": "Breyta Ring Group",
+    "EDIT_PLAYBACK": "Breyta bili\n",
+    "EDIT_QUEUE": "Breyta röð ",
+    "EDIT_SET": "Breyta Set",
+    "EDIT_GOTO": "Breyta GoTo",
+    "EDIT_HANGUP": "Breyta skella á ",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtalshreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Númeri breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður í ólagi",
+    "HANGUPCAUSE_38": "38 = Netkerfi ekki í lagi\n",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófs",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður raddupptöku",
+    "DELETE_VOICERECORDING": "Eyða raddupptöku\n",
+    "INTERNAL": "innanhúss",
+    "PHONE_STATE": "Staða á símanum",
+    "PHONE_STATUS": "Staða á símanum",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekktur",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekinn",
+    "INVALID": "Ekki gilt",
+    "UNAVAILABLE": "Ekki hægt að ná í",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "UPP",
+    "INFO": "Uppl.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Skráning",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráning (SIP connected)",
+    "PAUSED": "Hlé",
+    "DISPOSITION": "Fyrirkomulag",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjandi",
+    "TOTAL": "Samtals",
+    "ANSWERED": "Svarað",
+    "ABANDONED": "Hætt við ",
+    "UNMANAGED": "Óstjórnað",
+    "REDIRECT_TO_NUMBER": "Færðu á númer",
+    "REDIRECT_TO_AGENT": "Færðu til fulltrúa",
+    "CLOSING": "Lokun",
+    "AVG_HOLD_TIME": "Meðal biðtími",
+    "AVG_DURATION": "Meðal engd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta raddupptöku",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "EDIT_QUEUECAMPAIGN": "Breyta herferð\n",
+    "LISTADD_QUEUECAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Bæta við svarta listann",
+    "TEAMADD_QUEUECAMPAIGN": "Bættu við hópi",
+    "AGENTADD_QUEUECAMPAIGN": "Bæta við þjónustufulltrúa",
+    "DELETE_QUEUECAMPAIGN": "Eyða herferð",
+    "DELETE_IVRCAMPAIGN": "Eyða herferð",
+    "EDIT_IVRCAMPAIGN": "Breyta herferð",
+    "NEW_IVRCAMPAIGN": "Ný IVR herferð",
+    "ADD_IVRCAMPAIGN": "Bæta við IVR herferð",
+    "LISTADD_IVRCAMPAIGN": "Bættu við lista",
+    "BLACKLISTADD_IVRCAMPAIGN": "Bæta við svarta listann ",
+    "ENABLED": "Virkt",
+    "READY": "Tilbúinn",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Sjálfgefið hlé\n",
+    "AGENTADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "AGENTSADD_QUEUE": "Bæta þjónustufulltrúa við röð herferðar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_LISTS": "Allir listar",
+    "SELECTED_LISTS": "Valdir listar",
+    "ALL_AGENTS": "Allir þjónustufulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "TOTAL_OFFERED": "Samtals í boði",
+    "RUNNING": "Keyrir",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk er ekki hægt að tengja",
+    "AGENTS_NOT_LOGGED": "Þjónustufulltrúi ekki skráður inn",
+    "NOT_ACTIVE": "Ekki virkur",
+    "IS_DISACTIVED": "Afvirkjað",
+    "BACKUPTRUNK": "Bakgrunnsfylling",
+    "GLOBALINTERVAL": "Alþjóðlegt bil",
+    "RESCHEDULED_CONTACTS": "endurraða tengiliðum",
+    "INTERVAL_IS_OVERTIME": "Ötan marka",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Utan bils (Alþjóðlegt) - Out of Interval (Global)",
+    "INTERVAL_IS_NULL": "Tímabil er ekkert",
+    "TIMEZONE_UNKNOW": "Tímabelti óþekkt",
+    "INTERVAL_IS_EMPTY": "Tímabil er autt",
+    "TOTAL_MANAGED": "Samtals stjórnað",
+    "OPEN": "Opið",
+    "FRESH": "Ferskt",
+    "CLOSED": "Lokað",
+    "ALWAYS": "Alltaf",
+    "NEVER": "Aldrey",
+    "ONLY_IF_OPEN": "Aðeins ef opið",
+    "CHECKDUPLICATE": "Athuga tvíendurtekningar",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
+    "OPENCHANNEL": "Opnar rásir",
     "FAX": "Fax",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls"
+    "TEAMS_ASSOCIATION": "Liðsfélagar",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Skilyrt pása staða",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjáupptaka í boði",
+    "PREVIEW_AUTO_RECALL_ME": "Sjálfvirknivæað endurtekningu á mínum símtölum"
   }
 }
index ee8630a..58a50e1 100644 (file)
@@ -1,12 +1,12 @@
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Tempo de Login",
-    "PAUSE_TIME": "Tempo de Pausa",
+    "LOGIN_TIME": "Tempo de login",
+    "PAUSE_TIME": "Tempo de pausa",
     "CUTDIGIT": "Cortar Dígitos",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Número de Chamada de Saída Aleatória",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Caller ID Number Aleatório para Chamadas de Saída",
     "CLONE_IVRCAMPAIGN": "Clonar Campanha",
-    "CLONE_QUEUECAMPAIGN": "Clonar Fila de Campanha",
-    "ABANDONEDCALLS": "Chamadas Abandonadas em Filas",
+    "CLONE_QUEUECAMPAIGN": "Clonar Campanha de Discagem",
+    "ABANDONEDCALLS": "Chamadas Abandonadas",
     "HOPPERWIDGET": "Sumário",
     "RESETLIST_IVRCAMPAIGN": "Redefinir Listas",
     "RESETLIST_QUEUECAMPAIGN": "Redefinir Listas",
     "RESETLIST": "Redefinir Listas",
     "SELECTALL": "Selecionar Tudo",
     "UNSELECTALL": "Desmarcar Todos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
-    "TIMEOUT": "Tempo Esgotado",
-    "CALLYSQUAREPROJECTPREVIEW": "Visualização do Projeto Cally Square",
-    "CALLYSQUAREPROJECTPREVIEW2": "Pós Visualização do Projeto Cally Square",
-    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a fila",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação disponível",
+    "TIMEOUT": "Timeout",
+    "CALLYSQUAREPROJECTPREVIEW": "Projeto Cally Square para Método Preview",
+    "CALLYSQUAREPROJECTPREVIEW2": "Projeto Cally Square após Método Preview",
+    "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois, mesmo que o agente desligue a chamada",
+    "CALLYSQUAREPROJECT2": "Projeto Cally Square após a Fila",
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "PARTIALPAUSE": "Pausa Parcial",
     "ALL": "Todos",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "TIMER": "Tempo",
     "MOVE_HOPPERFINAL": "Restaurar contato",
     "RESTORECONTACTS": "Restaurar Contatos",
-    "NO_SUCH_NUMBER": "Sem número semelhante",
-    "DIALORDERBYSCHEDULEDAT": "Encomendar por agendamento",
+    "NO_SUCH_NUMBER": "Número Inválido",
+    "DIALORDERBYSCHEDULEDAT": "Ordenar por hora do Agendamento",
     "ASC": "ASC",
     "DESC": "DESC",
     "RECALLAGENT": "Rechamar Agente",
-    "DIALRECALLINQUEUE": "Rechamar na fila",
-    "DIALRECALLMETIMEOUT": "Lembre-me de tempo limite [min]",
-    "RECALLME": "Lembre-me",
-    "RECALLFAILEDTIMEOUT": "Rechamada falhou",
-    "PREVIEW_CAMPAIGN": "Pré-visualização de Campanhas",
-    "PREVIEW_CAMPAIGNS": "Pré-visualização de Campanhas",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
+    "DIALRECALLINQUEUE": "Agendamento Global",
+    "DIALRECALLMETIMEOUT": "Timeout de Agendamento [min]",
+    "RECALLME": "Agendamento",
+    "RECALLFAILEDTIMEOUT": "Rechamada Falhou",
+    "PREVIEW_CAMPAIGN": "Campanhas Preview",
+    "PREVIEW_CAMPAIGNS": "Campanhas Preview",
+    "AMD": "Answering Machine Detection (AMD)",
     "AMDTOTALANALYSISTIME": "Tempo Total de Análise",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Silêncio inicial",
-    "AMDGREETING": "Cumprimento",
-    "AMDAFTERGREETINGSILENCE": "Silêncio após saudação",
-    "AMDSILENCETHRESHOLD": "Limiar de silêncio",
-    "AMDMINWORDLENGTH": "Comprimento mínimo da palavra",
-    "AMDBETWEENWORDSSILENCE": "Silêncio entre palavras",
-    "AMDMAXIMUMWORDLENGTH": "Comprimento máximo da palavra",
+    "AMDINITIALSILENCE": "Silêncio no Início",
+    "AMDGREETING": "Saudação",
+    "AMDAFTERGREETINGSILENCE": "Silêncio após Saudação",
+    "AMDSILENCETHRESHOLD": "Limite de Silêncio",
+    "AMDMINWORDLENGTH": "Tamanho Mínimo de Palavras",
+    "AMDBETWEENWORDSSILENCE": "Silêncio entre Palavras",
+    "AMDMAXIMUMWORDLENGTH": "Tamanho Máximo de Palavras",
     "AMDMAXIMUMNUMBEROFWORDS": "Número Máximo de Palavras",
-    "GOTO_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Ir para campanhas de fila em tempo real",
-    "GOTO_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
-    "GOTOREALTIME_IVRCAMPAIGN": "Ir para campanhas de IVR em tempo real",
+    "GOTO_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Visualizar Campanha de Discagem em Tempo Real",
+    "GOTO_IVRCAMPAIGN": "Visualizar Campanhas de URA em Tempo Real",
+    "GOTOREALTIME_IVRCAMPAIGN": "Visualizar Campanha de URA em Tempo Real",
     "LOGOUT": "Sair",
-    "EDIT_CAMPAIGN": "Editar campanha",
+    "EDIT_CAMPAIGN": "Editar Campanha",
     "LIMITED": "Limitado",
     "IVR_CAMPAIGNS": "Campanhas de URA",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Campanhas de fila",
+    "QUEUECAMPAIGNS": "Campanhas de Discagem",
     "IVRCAMPAIGNS": "Campanhas de URA",
-    "MANAGED": "Gerenciou",
-    "AVAILABLE_CONTACTS_FINISHED": "Contatos disponíveis terminados",
-    "HISTORY": "História",
+    "MANAGED": "Gerenciado",
+    "AVAILABLE_CONTACTS_FINISHED": "Término de contatos disponivéis",
+    "HISTORY": "Histórico",
     "SCHEDULEDAT": "Agendado em",
-    "HOPPERBLACKS": "Lista negra do funil",
+    "HOPPERBLACKS": "Blacklist Funil",
     "NO_HOPPERBLACK_AVAILABLE": "Nenhum item disponível",
-    "HOPPERFINALS": "Final do funil",
+    "HOPPERFINALS": "Funil Final",
     "NO_HOPPERFINAL_AVAILABLE": "Nenhum item disponível",
-    "HOPPERHISTORIES": "Histórico de chamadas",
+    "HOPPERHISTORIES": "Histórico de Chamadas",
     "NO_HOPPERHISTORY_AVAILABLE": "Nenhum item disponível",
     "DELETE_HOPPERHISTORY": "Excluir",
     "DELETE_HOPPERFINAL": "Excluir",
-    "CONTACTID": "ID do contato",
-    "STARTTIME": "Hora de início",
-    "RESPONSETIME": "Tempo de resposta",
-    "ENDTIME": "Fim do tempo",
+    "CONTACTID": "ID do Contato",
+    "STARTTIME": "Hora de Início",
+    "RESPONSETIME": "Tempo de Resposta",
+    "ENDTIME": "Hora do Término",
     "STATUS": "Status",
     "HOPPERS": "Funil",
     "NO_HOPPER_AVAILABLE": "Nenhum item disponível",
     "EDIT_HOPPER": "Editar Funil",
     "DELETE_HOPPER": "Excluir Funil",
     "FINAL": "Final",
-    "BLACKLIST": "Lista negra",
+    "BLACKLIST": "Blacklist",
     "NAME": "Nome",
     "VOICEQUEUES": "Filas de Voz",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "DELETE_VOICEDISPOSITION": "Excluir disposição de voz",
-    "EDIT_VOICEDISPOSITION": "Editar disposição de voz",
-    "EDIT_VOICEQUEUE": "Editar fila de voz",
-    "DELETE_VOICEQUEUE": "Excluir fila de voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "SELECT_ALL": "Selecione Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "DELETE_VOICEDISPOSITION": "Excluir Qualificação de Voz",
+    "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
+    "EDIT_VOICEQUEUE": "Editar Fila de Voz",
+    "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
-    "INTERVAL": "Intervalo de tempo",
-    "ADD_VOICEQUEUE": "Adicionar fila de voz",
-    "NEW_QUEUECAMPAIGN": "Campanha Nova Fila",
+    "INTERVAL": "Intervalo de Tempo",
+    "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
+    "NEW_QUEUECAMPAIGN": "Nova Campanha de Discagem",
     "ACTIVE": "Ativo",
     "METHOD": "Método",
-    "POWERLEVEL": "Nível de poder",
-    "DROPRATE": "Taxa de queda",
-    "AGENTBUSYFACTOR": "Fator Ocupado do Agente",
+    "POWERLEVEL": "Power Level",
+    "DROPRATE": "Taxa de Perda",
+    "AGENTBUSYFACTOR": "Fator de Ocupação do Agente",
     "PREDICTIVEOPTIMIZATION": "Otimização Preditiva",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de otimização preditiva",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem de Otimização Preditiva",
     "PREDICTIVEINTERVAL": "Intervalo Preditivo",
-    "ADD_QUEUECAMPAIGN": "Adicionar campanha de fila",
+    "ADD_QUEUECAMPAIGN": "Adicionar Campanha de Discagem",
     "CAMPAIGN": "Campanha",
     "MAXCONCURRENTCALLS": "Máximo de chamadas simultâneas",
-    "CONCURRENTCALLS": "Máximo de chamadas simultâneas",
+    "CONCURRENTCALLS": "Máximo de Chamadas Simultâneas",
     "ORIGINATE": "Originar",
-    "ORIGINATECALLERIDNAME": "Nome do identificador de chamadas",
-    "ORIGINATECALLERIDNUMBER": "Número de Identificação de Chamadas",
-    "ORIGINATETIMEOUT": "Originar o tempo limite",
-    "QUEUEOPTIONS": "Opções de fila",
-    "QUEUETIMEOUT": "Tempo limite da fila",
+    "ORIGINATECALLERIDNAME": "Caller ID Name",
+    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
+    "ORIGINATETIMEOUT": "Tempo de Toque",
+    "QUEUEOPTIONS": "Opções de Fila",
+    "QUEUETIMEOUT": "Timeout da Fila",
     "CALLYSQUAREPROJECT": "Projeto Cally Square",
-    "RETRYANDFREQUENCY": "Repetir configurações",
+    "RETRYANDFREQUENCY": "Configurações de Nova Tentativa",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Máximo de tentativas",
+    "GLOBALMAXRETRY": "Máximo de Tentativas",
     "CONGESTION": "Congestionamento",
-    "CONGESTIONMAXRETRY": "Máximo de tentativas",
-    "CONGESTIONRETRYTIME": "Repetir tempo [min]",
-    "BUSYMAXRETRY": "Máximo de tentativas",
-    "BUSYRETRYTIME": "Repetir tempo [min]",
-    "NOANSWER": "Sem resposta",
-    "NOANSWERMAXRETRY": "Máximo de tentativas",
-    "NOANSWERRETRYTIME": "Repetir tempo [min]",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "CONGESTIONMAXRETRY": "Máximo de Tentativas",
+    "CONGESTIONRETRYTIME": "Tempo para nova Tentativa [min]",
+    "BUSYMAXRETRY": "Máximo de Tentativas",
+    "BUSYRETRYTIME": "Tempo para nova Tentativa [min]",
+    "NOANSWER": "Sem Atendimento",
+    "NOANSWERMAXRETRY": "Máximo de Tentativas",
+    "NOANSWERRETRYTIME": "Tempo para nova Tentativa [min]",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "ORIGINATED": "Originado",
     "MESSAGE": "Mensagem",
-    "DROPPED": "Desistiu",
+    "DROPPED": "Perdida",
     "CREATED_AT": "Criado em",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Aplicativo personalizado."
+      "CUSTOM_APPLICATION": "(*) - Custom application."
     },
     "ERRORS": {
       "CUTDIGIT_REQUIRED": "Campo obrigatório",
       "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a",
+      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chamar add.phone após min. deve ser maior ou igual a",
       "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório"
     },
     "GENERAL": "Geral",
-    "AGENTTIMEOUT": "Tempo limite do agente",
-    "MAXLENGTH": "Comprimento máximo",
-    "RETRY": "Tente novamente",
-    "WRAPUPTIME": "Tempo de finalização",
+    "AGENTTIMEOUT": "Timeout do Agente",
+    "MAXLENGTH": "Tamanho máximo",
+    "RETRY": "Nova Tentativa",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Entrar quando estiver vazio",
-    "LEAVEWHENEMPTY": "Deixar quando vazio",
+    "JOINWHENEMPTY": "Permitir que o cliente fique em espera quando não tiver nenhum agente logado",
+    "LEAVEWHENEMPTY": "Desconectar clientes em espera quando todos os agentes deslogarem",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos correspondentes do Número de Identificação de Chamadas de Saída",
-      "TIMEOUT": "Número de segundos para tocar o agente na fila",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um agente atender (o IVR será direcionado para o agente)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR quando um cliente desligar ou não puder ser acessado (o IVR será direcionado para o agente)",
-      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
-      "CALLYSQUAREPROJECT2": "iSelecionando um projeto IVR, o discador encaminhará a chamada para o IVR após a fila (se a fila terminar por tempo limite)",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Se for maior que 0, gera aleatoriamente os últimos dígitos do Caller ID Number para Ligações Saíntes",
+      "TIMEOUT": "Número de segundos para o agente atender (tempo de ring)",
+      "CALLYSQUAREPROJECTPREVIEW": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um agente atender (a URA será direcionada para o agente)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA quando um cliente desligar ou não puder ser alcançado (a URA será direcionada para o agente)",
+      "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square depois que o agente desligue a chamada",
+      "CALLYSQUAREPROJECT2": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA após a fila (se a fila tiver alcançado o timeout de espera)",
       "DIALORDERBYSCHEDULEDAT": "Obter contatos do funil (descendente ou ascendente).",
-      "DIALRECALLINQUEUE": "Reprogramar chamada para agentes na fila",
-      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade lembrar me",
+      "DIALRECALLINQUEUE": "Reagendar chamada para agentes na Fila",
+      "DIALRECALLMETIMEOUT": "Intervalo de tempo (em minutos) para o período de validade do Agendamento",
       "PRIORITY": "Prioridade na lista",
-      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de um único enunciado de voz",
-      "AMDMINWORDLENGTH": "Duração mínima de uma voz para ser considerada uma palavra",
-      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, consideraremos como silêncio",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
-      "AMDGREETING": "Comprimento máximo de uma saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, o resultado é a detecção como MÁQUINA",
-      "AMDACTIVE": "Ativar ou desativar tentativas de detecção de secretária eletrônica",
-      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar o áudio que segue como uma nova palavra",
-      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se REACHED, então o resultado é a detecção como uma MÁQUINA",
-      "CALLYSQUAREPROJECT": "Selecionando um projeto IVR, o discador encaminhará a chamada para o IVR antes da fila",
+      "AMDMAXIMUMWORDLENGTH": "Duração máxima permitida de uma único expressão de Voz",
+      "AMDMINWORDLENGTH": "Duração mínima de uma Voz para ser considerada uma palavra",
+      "AMDSILENCETHRESHOLD": "Se o nível médio de ruído em uma amostra não atingir esse valor, de uma escala de 0 a 32767, então consideraremos como silêncio",
+      "AMDTOTALANALYSISTIME": "Tempo máximo permitido para o algoritmo decidir se o áudio representa um HUMANO ou uma MÁQUINA",
+      "AMDAFTERGREETINGSILENCE": "Silêncio detectado depois da saudação. Se excedido, é classificado como HUMANO ",
+      "AMDGREETING": "Tamanho máximo de uma saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDINITIALSILENCE": "Duração máxima do silêncio antes da saudação. Se excedido, é classificado como MÁQUINA",
+      "AMDACTIVE": "Habilita ou desabilita identificação de Mensagem da Operadora",
+      "AMDBETWEENWORDSSILENCE": "Duração mínima de silêncio após uma palavra para considerar que trata-se de uma nova palavra",
+      "AMDMAXIMUMNUMBEROFWORDS": "Número máximo de palavras na saudação. Se excedido, é classificado como uma MÁQUINA",
+      "CALLYSQUAREPROJECT": "Selecionando um projeto de URA, o discador encaminhará a chamada para a URA antes da fila",
       "PREFIX": "Prefixo telefônico",
       "ACTIVE": "Ativo",
-      "AGENTTIMEOUT": "Quanto tempo (em segundos) para ligar ao dispositivo de um agente",
-      "MAXLENGTH": "Número máximo de chamadores que podem estar aguardando em uma fila (0 = ilimitado)",
-      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente na fila quando o tempo limite do agente expirar",
-      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível em uma fila após concluir uma chamada",
+      "AGENTTIMEOUT": "Quanto tempo (em segundos) de toque no agente",
+      "MAXLENGTH": "Número máximo de clientes que podem aguardar em uma fila (0 = ilimitado)",
+      "RETRY": "Quanto tempo (em segundos) aguardar antes de chamar o próximo agente quando atingir o timeout do agente",
+      "WRAPUPTIME": "Por quanto tempo (em segundos) manter um agente indisponível após concluir uma chamada",
       "WEIGHT": "Usado para determinar a prioridade se os agentes estiverem associados a mais de uma fila",
-      "JOINWHENEMPTY": "Se um chamador for adicionado à fila, quando nenhum agente estiver disponível",
-      "LEAVEWHENEMPTY": "Se um chamador for expulso da fila quando nenhum agente estiver disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciar a posição do chamador e / ou o tempo estimado de espera na fila (0 = desabilitar)",
-      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Freqüência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se você definiu a posição de anúncio como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Comprimento de pausa acionado pela opção After Call Work",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
-      "MUSICONHOLD": "Define a classe de música a ser usada para uma fila específica",
-      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente que atende a chamada (por exemplo, para que ele saiba de qual fila o chamador está vindo)",
+      "JOINWHENEMPTY": "Permite adicionar um cliente à fila, quando nenhum agente estiver logado",
+      "LEAVEWHENEMPTY": "Descarta todos os clientes da fila, quando nenhum agente estiver logado",
+      "ANNOUNCEFREQUENCY": "Com qual frequência anunciar a posição do cliente e/ou o tempo estimado de espera na fila (0 = desabilitar)",
+      "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do cliente muda com frequência)",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado caso tenha definido o anúncio da posição do cliente como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa de Pós-Atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de conectar o cliente e o agente",
+      "MUSICONHOLD": "Define a música de espera a ser usado para uma fila específica",
+      "ANNOUNCETOAGENT": "Reproduz um anúncio para o agente ao atender a chamada (por exemplo, para que o agente saiba de qual fila a ligaçao pertence)",
       "RANDOMPERIODICANNOUNCE": "Se sim, reproduz os anúncios periódicos em ordem aleatória",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do chamador na fila deve ser anunciada: No = never; Sim = sempre; Limite = somente se estiver dentro do limite definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente na fila antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para definir se a posição do cliente na fila deve ser anunciada: No=nunca; Yes=sempre; Limit=somente se estiver dentro do limite definido; More=apenas se estiver além do limite definido",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente em fila seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = \"O tempo de espera estimado atual é\". Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente será definido em Pausar após concluir uma chamada",
-      "AUTOPAUSE": "Ativa/desativa a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado em todas as filas às quais ele pertence",
-      "RINGINUSE": "Para evitar / permitir o envio de chamadas para membros cujo status é Em uso",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status BUSY ou CONGESTION é recebido do canal",
-      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver inativo, as chamadas não serão gravadas",
-      "CONTEXT": "Permite que um chamador saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o chamador inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução da planta de discagem continuará lá.",
-      "SETINTERFACEVARIABLES": "Se configurado como yes, antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
-      "SETQUEUEVARIABLES": "Se configurado como yes, antes de o chamador se conectar com um agente de fila e sair da fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como yes, logo antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
-      "RECORDING": "Ativar gravação de chamadas",
-      "VOICEMAIL_CONTEXT": "O contexto da extensão relativa",
-      "METHOD": "Método discador de saída",
-      "POWERLEVEL": "Número de contatos para ligar para qualquer agente disponível",
-      "PREDICTIVEOPTIMIZATION": "Um fator para otimizar no algoritmo de previsão",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem com base no fator de otimização preditiva selecionado",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de esperá é”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = \"O tempo estimado de espera atual é\". Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente será colocado em Pausa após concluir uma chamada",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática de agentes que não atendem uma chamada. Se ativado, faz com que o agente seja pausado automaticamente em todas as filas às quais ele pertence",
+      "RINGINUSE": "Para blouqer/permitir o envio de chamadas para agentes cujo status é Ocupado",
+      "TIMEOUTRESTART": "Se sim, isso redefine o timeout para um agente atender quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "MONITORFORMAT": "Especifica o formato de arquivo a ser usado durante a gravação. Se o formato do monitor estiver desativado, as chamadas não serão gravadas",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um único dígito DTMF. Se um contexto for especificado e o cliente inserir um número, esse dígito tentará ser correspondido no contexto especificado e a execução do plano de discagem continuará lá.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a documentação do wiki: <a target = \"_blank \" href = \"https: //wiki.xcallymotion\"). com / display / XMV / Queue + Campanhas # QueueCampaigns-Advanced \"> clique aqui </a>)",
+      "SETQUEUEVARIABLES": "Se configurado como sim, antes de o cliente se conectar com um agente e deixar a fila, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">clique aqui </a>)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte docs do wiki: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\"> clique aqui </a>)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "O contexto da extensão",
+      "METHOD": "Método de discagem automática",
+      "POWERLEVEL": "Número de contatos simultâneos a discar por agente disponível",
+      "PREDICTIVEOPTIMIZATION": "Fator para otimizar no algoritmo de previsão",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Porcentagem baseado no fator selecionado de otimização preditiva",
       "PREDICTIVEINTERVAL": "Intervalo de tempo (em minutos) considerado pelo algoritmo de previsão para calcular a quantidade de chamadas a serem geradas para otimizar o resultado",
-      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída para esta campanha (0 = ilimitado)",
-      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador de saída desta campanha",
-      "ORIGINATECALLERIDNAME": "Nome do ID do chamador de saída",
-      "ORIGINATECALLERIDNUMBER": "Número de identificação do chamador de saída",
-      "ORIGINATETIMEOUT": "Tempo (em segundos) para a chamada de saída estabelecer uma conexão, caso contrário, o status será definido como Sem resposta",
+      "MAXCONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador para esta campanha (0 = ilimitado)",
+      "CONCURRENTCALLS": "Número máximo de chamadas simultâneas que serão originadas pelo discador nesta campanha",
+      "ORIGINATECALLERIDNAME": "Caller ID Name para Ligações Saíntes",
+      "ORIGINATECALLERIDNUMBER": "Caller ID Number para Ligações Saíntes",
+      "ORIGINATETIMEOUT": "Tempo (em segundos) para a discador estabelecer uma conexão, caso contrário, o status será definido como não atendido [Tempo de Ring]",
       "QUEUETIMEOUT": "Tempo (em segundos) que uma chamada aguardará na fila antes de ser descartada (Min 1 e Max 999)",
-      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado",
-      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para congestionamento",
+      "GLOBALMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado",
+      "CONGESTIONMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completar por congestionamento)",
       "CONGESTIONRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a congestionamento",
-      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para ocupado",
-      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupação",
-      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado, quando a chamada falha por falta de resposta",
-      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à falta de resposta",
-      "GLOBALINTERVAL": "Intervalo de tempo global durante o qual o discador pode chamar contatos. Nós recusamos a responsabilidade: prestar atenção quando você modificar este campo, porque você pode deixar de cumprir as Leis e Regulamentos nacionais do Autodialer.",
+      "BUSYMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por ocupado)",
+      "BUSYRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à ocupado",
+      "NOANSWERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por não atendimento)",
+      "NOANSWERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao não atendimento",
+      "GLOBALINTERVAL": "Intervalo de tempo global permitido para discagem. ATENÇÃO: cuidado quando você modificar este campo, porque você pode descumprir Leis e Regulamentações nacionais.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
-      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite máximo configurado, a previsão recalcula a previsão.",
-      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis na janela de tempo, comparada com os agentes disponíveis no momento da previsão, exceder o limite mínimo configurado, a previsão recalcula a previsão.",
-      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por abandono",
-      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido ao abandono",
-      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por rejeição do agente",
-      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à rejeição do agente",
-      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha por queda",
-      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à queda",
-      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha na máquina",
-      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
-      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
-      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
-      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número",
-      "PREVIEW_AUTO_RECALL_ME": "Se ativado, o sistema irá gerar automaticamente as chamadas Recall Me; caso contrário, o agente deve fazer isso manualmente",
-      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de gerar o recall me",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa durante a qualificação obrigatória",
+      "PREDICTIVEMAXTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite máximo configurado, a algoritmo recalculará a previsão.",
+      "PREDICTIVEMINTHRESHOLD": "Se a porcentagem de agentes disponíveis em uma janela de tempo, comparada com agentes disponíveis no intervalo de previsão, exceder o limite mínimo configurado, a algoritmo recalculará a previsão.",
+      "ABANDONEDMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por abandono)",
+      "ABANDONEDRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a abandono",
+      "AGENTREJECTMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por rejeição do agente)",
+      "AGENTREJECTRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à rejeição do agente",
+      "DROPMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por descarte)",
+      "DROPRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido à descarte",
+      "MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por mensagem da operadora)",
+      "MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à mensagem da operadora",
+      "NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a número inválido",
+      "NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo encerrado (quando a chamada não completa por número inválido)",
+      "NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à número inválido",
+      "PREVIEW_AUTO_RECALL_ME": "Se habilitado, o sistema ligará automaticamente para os Agendamentos; caso contrário, o agente deverá fazer isso manualmente",
+      "PREVIEW_RECALL_ME_REMINDER": "Se habilitado, o sistema enviará uma notificação ao agente n minutos (de acordo com o intervalo de tempo definido nas configurações gerais) antes de ligar para os Agendamentos",
       "TIMEZONE": "Especifique o fuso horário"
     },
-    "MUSICONHOLD": "Música em espera",
-    "ANNOUNCETOAGENT": "Anunciar ao agente",
+    "MUSICONHOLD": "Música de Espera",
+    "ANNOUNCETOAGENT": "Anunciar para Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCEDPREVIEW": "Avançado",
     "ADVANCED": "Avançado",
     "ADVANCE": "Avançado",
-    "ANNOUNCEFREQUENCY": "Anunciar Freqüência",
+    "ANNOUNCEFREQUENCY": "Frequência do Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Periodicidade periódica de anúncio",
-    "RANDOMPERIODICANNOUNCE": "Anúncio periódico aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar tempo de espera",
-    "ANNOUNCECALLERPOSITION": "Anunciar a posição do chamador",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar limite de posição",
-    "REPORTHOLDTIMEAGENT": "Tempo de espera do agente de relatório",
-    "PERIODICANNOUNCE": "Anúncio periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio no tempo de espera",
-    "YOUARENEXTANNOUNCE": "'Você é o próximo' Anunciar",
-    "THEREAREANNOUNCE": "'Existem' Anuncio",
-    "WAITINGCALLSANNOUNCE": "Chamadas em Espera Anuncio",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Anuncio estimado em tempo de espera",
-    "MINUTESANNOUNCE": "Anuncio Minutos",
-    "MINUTEANNOUNCE": "Anuncio Minuto",
-    "SECONDSANNOUNCE": "Anuncio Segundos",
-    "THANKYOUANNOUNCE": "Anuncio 'Obrigado'",
+    "PERIODICANNOUNCEFREQUENCY": "Periodicidade do Anúncio Periódico",
+    "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
+    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCECALLERPOSITION": "Anunciar a Posição do Cliente",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar atingimento Limite de Posição",
+    "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
+    "PERIODICANNOUNCE": "Anúncio Periódico",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
+    "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
+    "THEREAREANNOUNCE": "Anúncio 'Existem'",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Anúncio estimado em tempo de espera",
+    "MINUTESANNOUNCE": "Anúncio Minutos",
+    "MINUTEANNOUNCE": "Anúncio Minuto",
+    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Tempo após chamada",
-    "AFTERCALLWORKDURATION": "Duração do Tempo após chamada",
-    "RINGINUSE": "Toque em uso",
-    "MEMBERDELAY": "Atraso de Membro",
-    "TIMEOUTRESTART": "Tempo esgotado Reiniciar",
-    "MONITORFORMAT": "Formato de gravação",
-    "SETINTERFACEVARIABLES": "Definir variáveis \200b\200bde interface",
-    "SETQUEUEVARIABLES": "Definir as variáveis \200b\200bda fila",
-    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Entrada da Fila",
+    "AFTERCALLWORK": "Pós-Atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração do Pós-Atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
+    "MEMBERDELAY": "Delay ao Conectar",
+    "TIMEOUTRESTART": "Restart Timeout",
+    "MONITORFORMAT": "Formato de Gravação",
+    "SETINTERFACEVARIABLES": "Definir Variáveis \200b\200bde Interface",
+    "SETQUEUEVARIABLES": "Definir as Variáveis \200b\200bde Fila",
+    "SETQUEUEENTRYVARIABLES": "Definir as Variáveis \200b\200bde Fila",
     "CONTEXT": "Contexto",
     "SAVE": "Salvar",
-    "SETTINGS": "Definições",
-    "INBOUNDROUTES": "Rotas de entrada",
-    "PHONENUMBER": "Número de telefone",
-    "ADD_INBOUNDROUTE": "Adicionar rota de entrada",
-    "EDIT_INBOUNDROUTE": "Editar rota de entrada",
-    "DELETE_INBOUNDROUTE": "Excluir rota de entrada",
+    "SETTINGS": "Configurações",
+    "INBOUNDROUTES": "Rotas de Entrada",
+    "PHONENUMBER": "Número do Telefone",
+    "ADD_INBOUNDROUTE": "Adicionar Rota de Entrada",
+    "EDIT_INBOUNDROUTE": "Editar Rota de Entrada",
+    "DELETE_INBOUNDROUTE": "Excluir Rota de Entrada",
     "ACTIONS": "Ações",
-    "OUTBOUNDROUTES": "Rotas de saída",
-    "DESTINATIONPATTERN": "Padrão de destino",
-    "ADD_OUTBOUNDROUTE": "Adicionar rota de saída",
-    "EDIT_OUTBOUNDROUTE": "Editar rota de saída",
-    "DELETE_OUTBOUNDROUTE": "Excluir rota de saída",
-    "CUTDIGITS": "Cut Digits",
+    "OUTBOUNDROUTES": "Rotas de Saída",
+    "DESTINATIONPATTERN": "Padrão de Destino",
+    "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
+    "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
+    "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de gravação",
     "INTERNALROUTES": "Rotas Internas",
-    "ADD_INTERNALROUTE": "Adicionar rota interna",
-    "EDIT_INTERNALROUTE": "Editar rota interna",
-    "DELETE_INTERNALROUTE": "Excluir rota interna",
+    "ADD_INTERNALROUTE": "Adicionar Rota Interna",
+    "EDIT_INTERNALROUTE": "Editar Rota Interna",
+    "DELETE_INTERNALROUTE": "Excluir Rota Interna",
     "CONTEXTS": "Contextos",
     "ADD_CONTEXT": "Adicionar Contexto",
     "EDIT_CONTEXT": "Editar Contexto",
     "DELETE_CONTEXT": "Excluir Contexto",
-    "VOICEMAILS": "Correios de voz",
-    "ADD_VOICEMAIL": "Adicionar Correios de voz",
-    "EDIT_VOICEMAIL": "Editar Correios de voz",
-    "DELETE_VOICEMAIL": "Excluir Correios de voz",
+    "VOICEMAILS": "Correios de Voz",
+    "ADD_VOICEMAIL": "Adicionar Correio de Voz",
+    "EDIT_VOICEMAIL": "Editar Correio de Voz",
+    "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "TIMEZONE": "Fuso horário",
+    "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexo",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
     "EMAILBODY": "Corpo do Email",
-    "EMAILSUBJECT": "Assunto do email",
-    "MAXSECONDS": "Max Segundos",
-    "MAXMESSAGES": "Max Mensagens",
+    "EMAILSUBJECT": "Assunto do Email",
+    "MAXSECONDS": "Segundos máximos",
+    "MAXMESSAGES": "Mensagens máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
-    "ADD_MUSICONHOLD": "Adicionar música em espera",
-    "MUSICONHOLDS": "Música em espera",
-    "EDIT_MUSICONHOLD": "Editar música em espera",
-    "DELETE_MUSICONHOLD": "Excluir música em espera",
+    "ADD_MUSICONHOLD": "Adicionar Música de Espera",
+    "MUSICONHOLDS": "Música de Espera",
+    "EDIT_MUSICONHOLD": "Editar Música de Espera",
+    "DELETE_MUSICONHOLD": "Excluir Música de Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
-    "CHANSPY": "Espião",
+    "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "OPTIONS": "Opções",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Adicionar Espião",
-    "EDIT_CHANSPY": "Editar Espião",
-    "DELETE_CHANSPY": "Excluir Espião",
+    "ADD_CHANSPY": "Adicionar Intercalação",
+    "EDIT_CHANSPY": "Editar Intercalação",
+    "DELETE_CHANSPY": "Excluir Intercalação",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
     "QUEUE_CALLS": "Filas de Chamada",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas de Saída",
     "AGI": "AGI",
     "DIAL": "Discar",
-    "INTERNALDIAL": "Discar Interno",
-    "EXTERNALDIAL": "Discar Externo",
-    "RINGGROUP": "Toque de Grupo",
+    "INTERNALDIAL": "Discagem Interna",
+    "EXTERNALDIAL": "Discagem Externa",
+    "RINGGROUP": "Grupo de Toque",
     "PLAYBACK": "Reprodução",
     "QUEUE": "Fila",
-    "SET": "Set",
-    "VOICEMAIL": "Correio de voz",
+    "SET": "Definir",
+    "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto Cally-Square",
     "TECHNOLOGY/RESOURCE": "Tecnologia/Recurso",
     "URL": "URL",
-    "EDIT_APP": "Editar aplicativo",
-    "EDIT_INTERVAL": "Editar intervalo",
-    "DELETE_APP": "Excluir aplicativo",
+    "EDIT_APP": "Editar Aplicativo",
+    "EDIT_INTERVAL": "Editar Intervalo",
+    "DELETE_APP": "Excluir Aplicativo",
     "INTERVALS": "Intervalos",
     "USER": "Usuário",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
-    "ANNOUNCE_OVERRIDES": "Substituir Anuncio",
+    "AUDIO_FILES": "Arquivos de Áudio",
+    "ANNOUNCE_OVERRIDES": "Substituir Anúncio",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atendida",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
-    "HANGUP_CAUSE": "Questão Hangup",
-    "OUTBOUNDDIAL": "Discagem de saída",
-    "CALLER_ID": "Identificador de chamadas",
+    "HANGUP_CAUSE": "Causas de Desligamento",
+    "OUTBOUNDDIAL": "Discagem de Saída",
+    "CALLER_ID": "Caller ID",
     "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
-    "NO_SOUND_AVAILABLE": "Nenhum som disponível",
-    "VOICERECORDINGS": "Gravações de voz",
-    "CHANSPIES": "Espião",
+    "NO_SOUND_AVAILABLE": "Nenhum áudio disponível",
+    "VOICERECORDINGS": "Gravações de Voz",
+    "CHANSPIES": "Intercalação",
     "VOICE": "Voz",
-    "REALTIME": "Tempo real",
+    "REALTIME": "Tempo Real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
-    "NO_MOHSOUND_AVAILABLE": "Não há música na espera disponível",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
-    "ADD_MOHSOUND": "Adicionar som de música em espera",
-    "DOWNLOAD_MOHSOUND": "Download musica de tempo de espera",
-    "DELETE_MOHSOUND": "Excluir som de música em espera",
+    "ADD_MOHSOUND": "Adicionar arquivo de Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download arquivo de Música em Espera",
+    "DELETE_MOHSOUND": "Excluir arquivo de Música de Espera",
     "UNIQUEID": "Unique ID",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
-    "AUDIO": "Audio",
+    "AUDIO": "Áudio",
     "DATE": "Data",
-    "NEW_VOICEQUEUE": "Nova fila de voz",
-    "NEW_INBOUNDROUTE": "Nova rota de saída",
-    "NEW_OUTBOUNDROUTE": "Nova rota de saída",
-    "NEW_INTERNALROUTE": "Nova rota interna",
-    "NEW_CONTEXT": "Novo contexto",
-    "NEW_VOICEMAIL": "Nova mensagem de voz",
-    "NEW_MUSICONHOLD": "Nova música em espera",
-    "NEW_CHANSPY": "Novo Espião",
+    "NEW_VOICEQUEUE": "Nova Fila de Voz",
+    "NEW_INBOUNDROUTE": "Nova Rota de Entrada",
+    "NEW_OUTBOUNDROUTE": "Nova Rota de Saída",
+    "NEW_INTERNALROUTE": "Nova Rota Interna",
+    "NEW_CONTEXT": "Novo Contexto",
+    "NEW_VOICEMAIL": "Novo Correio de Voz",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
+    "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Penalidade",
-    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar equipe à fila de voz",
-    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar agente à fila de voz",
-    "EDIT_DIAL": "Editar discagem",
+    "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
+    "ADD_AGENT_TO_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
+    "EDIT_DIAL": "Editar Discagem",
     "EDIT_AGI": "Editar AGI",
-    "EDIT_INTERNALDIAL": "Editar discagem interna",
-    "EDIT_EXTERNALDIAL": "Editar discagem externa",
-    "EDIT_RINGGROUP": "Editar grupo de toques",
-    "EDIT_PLAYBACK": "Editar reprodução",
-    "EDIT_QUEUE": "Editar fila",
-    "EDIT_SET": "Editar conjunto",
+    "EDIT_INTERNALDIAL": "Editar Discagem Interna",
+    "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
+    "EDIT_PLAYBACK": "Editar Reprodução",
+    "EDIT_QUEUE": "Editar Fila",
+    "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Desligar",
-    "EDIT_CUSTOM": "Editar Personalizar",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Limpeza de chamada normal",
-    "HANGUPCAUSE_17": "17 = Ocupado pelo usuário",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (dispositivo teleônico não conectado)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
     "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Baixar Gravação de Voz",
-    "DELETE_VOICERECORDING": "Excluir gravação de voz",
+    "DOWNLOAD_VOICERECORDING": "Downlaod de Gravação de Voz",
+    "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do Telefone",
     "PHONE_STATUS": "Status do Telefone",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível ",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
-    "INVALID": "Invalido",
+    "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "RINGING": "Tocando",
-    "ONHOLD": "Em espera",
+    "ONHOLD": "Em Espera",
     "RING": "Toque",
     "UP": "Up",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Sem registro",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "PAUSED": "Pausado",
-    "DISPOSITION": "Disposição",
+    "DISPOSITION": "Qualificação",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
-    "ABANDONED": "Abandonados",
-    "UNMANAGED": "Não gerenciado",
+    "ANSWERED": "Atendidas",
+    "ABANDONED": "Abandonadas",
+    "UNMANAGED": "Não Gerenciado",
     "REDIRECT_TO_NUMBER": "Redirecionar para um número",
     "REDIRECT_TO_AGENT": "Redirecionar para um agente",
-    "CLOSING": "Fechamento",
-    "AVG_HOLD_TIME": "Tempo médio de espera",
-    "AVG_DURATION": "Duração média",
+    "CLOSING": "Encerramento",
+    "AVG_HOLD_TIME": "Tempo Médio de Espera",
+    "AVG_DURATION": "Duração Média",
     "AVG_BILLABLE": "Média faturável",
     "SOURCE": "Fonte",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem avaliação",
-    "EDIT_VOICERECORDING": "Editar gravação de voz",
+    "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "EDIT_QUEUECAMPAIGN": "Editar campanha",
-    "LISTADD_QUEUECAMPAIGN": "Adicionar lista",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar lista negra",
-    "TEAMADD_QUEUECAMPAIGN": "Adicionar equipe",
-    "AGENTADD_QUEUECAMPAIGN": "Adicionar agente",
-    "DELETE_QUEUECAMPAIGN": "Excluir campanha",
-    "DELETE_IVRCAMPAIGN": "Excluir campanha",
-    "EDIT_IVRCAMPAIGN": "Editar campanha",
-    "NEW_IVRCAMPAIGN": "Nova campanha de URA",
-    "ADD_IVRCAMPAIGN": "Adicionar Campanha URA",
+    "EDIT_QUEUECAMPAIGN": "Editar Campanha de Discagem",
+    "LISTADD_QUEUECAMPAIGN": "Adicionar Lista",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Adicionar Blacklist",
+    "TEAMADD_QUEUECAMPAIGN": "Adicionar Equipe",
+    "AGENTADD_QUEUECAMPAIGN": "Adicionar Agente",
+    "DELETE_QUEUECAMPAIGN": "Excluir Campanha de Discagem",
+    "DELETE_IVRCAMPAIGN": "Excluir Campanha",
+    "EDIT_IVRCAMPAIGN": "Editar Campanha",
+    "NEW_IVRCAMPAIGN": "Nova Campanha de URA",
+    "ADD_IVRCAMPAIGN": "Adicionar Campanha de URA",
     "LISTADD_IVRCAMPAIGN": "Adicionar Lista",
-    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar lista negra",
+    "BLACKLISTADD_IVRCAMPAIGN": "Adicionar Blacklist",
     "ENABLED": "Ativado",
     "READY": "Pronto",
     "PAUSE": "Pausa",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de campanha",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila de campanha",
-    "ALL_TEAMS": "Todas as equipes",
+    "AGENTADD_QUEUE": "Adicionar Agente à Campanha de Fila",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de Campanha",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
-    "ALL_LISTS": "Todas as listas",
+    "ALL_LISTS": "Todas as Listas",
     "SELECTED_LISTS": "Listas Selecionadas",
-    "ALL_AGENTS": "Todos os agentes",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "WAITING_FOR_AGENT": "Esperando por agente",
-    "TOTAL_OFFERED": "Total oferecido",
-    "RUNNING": "Funcionamento",
-    "TRUNK_IS_NOT_REACHABLE": "Tronco não é acessível",
-    "AGENTS_NOT_LOGGED": "Agente não registrado",
-    "NOT_ACTIVE": "Não ativo",
+    "WAITING_FOR_AGENT": "Esperando por Agente",
+    "TOTAL_OFFERED": "Total Oferecido",
+    "RUNNING": "Executando",
+    "TRUNK_IS_NOT_REACHABLE": "Tronco está indisponível",
+    "AGENTS_NOT_LOGGED": "Nenhum agente logado",
+    "NOT_ACTIVE": "Inativo",
     "IS_DISACTIVED": "Desativado",
     "BACKUPTRUNK": "Tronco de Backup",
-    "GLOBALINTERVAL": "Intervalo global",
-    "RESCHEDULED_CONTACTS": "Contatos reprogramados",
-    "INTERVAL_IS_OVERTIME": "Fora do intervalo",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do intervalo (global)",
-    "INTERVAL_IS_NULL": "O intervalo é nulo",
-    "TIMEZONE_UNKNOW": "Fuso Horário Desconhecido",
-    "INTERVAL_IS_EMPTY": "O intervalo está vazio",
-    "TOTAL_MANAGED": "Total gerenciado",
+    "GLOBALINTERVAL": "Intervalo Global",
+    "RESCHEDULED_CONTACTS": "Contatos reagdendados",
+    "INTERVAL_IS_OVERTIME": "Fora do Intervalo",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Fora do Intervalo (Global)",
+    "INTERVAL_IS_NULL": "Intervalo é Nulo",
+    "TIMEZONE_UNKNOW": "Fuso horário Desconhecido",
+    "INTERVAL_IS_EMPTY": "Intervalo está Vazio",
+    "TOTAL_MANAGED": "Total Gerenciado",
     "OPEN": "Abrir",
     "FRESH": "Recente",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "ALWAYS": "Sempre",
     "NEVER": "Nunca",
-    "ONLY_IF_OPEN": "Apenas se aberto",
-    "CHECKDUPLICATE": "Verificar duplicidade",
+    "ONLY_IF_OPEN": "Apenas se Aberto",
+    "CHECKDUPLICATE": "Verificar Duplicado",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do ",
     "CHAT": "Chat",
     "MAIL": "Email",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "RECALLINQUEUE": "Lembre-se na fila",
-    "REFRESH_SCHEDULED_CALLS": "Atualizar chamadas agendadas",
-    "SCHEDULED_CALLS": "Chamadas agendadas",
+    "RECALLINQUEUE": "Agendamento global",
+    "REFRESH_SCHEDULED_CALLS": "Atualizar Chamadas Agendadas",
+    "SCHEDULED_CALLS": "Chamadas Agendadas",
     "SELECT_CAMPAIGN": "Selecione Campanha",
-    "SELECT_DATE": "Selecione a data",
-    "SELECT_TYPE": "Selecione o tipo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "ANSWERING_MACHINE": "Secretária eletrônica",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa de disposição obrigatória",
-    "ANSWERED_CALLS": "Chamadas atendidas",
+    "SELECT_DATE": "Selecione a Data",
+    "SELECT_TYPE": "Selecione o Tipo",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "ANSWERING_MACHINE": "Mensagem da Operadora",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+    "ANSWERED_CALLS": "Chamadas Atendidas",
     "AVG_TALK_TIME": "Tempo Médio de Conversação",
-    "CURRENT_INTERVAL": "Intervalo atual",
-    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Progressive",
+    "CURRENT_INTERVAL": "Intervalo Atual",
+    "DATA_COLLECTION_IN_PROGRESSIVE": "Coleta de dados em Método Progressive",
     "ONE_CALL_EVERY": "Uma chamada a cada",
     "PREDICTIVEMAXTHRESHOLD": "Limite máximo preditivo [%]",
     "PREDICTIVEMINTHRESHOLD": "Limite mínimo preditivo [%]",
     "PREDICTIVE_IS_NOT_RUNNING": "Preditivo não está sendo executado",
-    "PREDICTIVE_IS_RUNNING": "O Predictive está em execução",
-    "PREVIOUS_INTERVAL": "Intervalo anterior",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar informações preditivas",
-    "THRESHOLDS": "Limiares",
-    "TOTAL_CALLS": "Total de chamadas",
-    "ABANDONEDMAXRETRY": "Tentativas máximas",
-    "ABANDONEDRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "AGENTREJECT": "Rejeição de agente",
-    "AGENTREJECTMAXRETRY": "Tentativas máximas",
-    "AGENTREJECTRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "DROP": "Solta",
-    "DROPMAXRETRY": "Tentativas máximas",
-    "DROPRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "MACHINE": "Máquina",
-    "MACHINEMAXRETRY": "Tentativas máximas",
-    "MACHINERETRYTIME": "Tempo de Nova Tentativa [min]",
-    "NOSUCHNUMBER": "Esse número não existe",
-    "NOSUCHNUMBERMAXRETRY": "Tentativas máximas",
-    "NOSUCHNUMBERRETRYTIME": "Tempo de Nova Tentativa [min]",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
+    "PREDICTIVE_IS_RUNNING": "Preditivo está em execução",
+    "PREVIOUS_INTERVAL": "Intervalo Anterior",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Mostrar Informações Preditivas",
+    "THRESHOLDS": "Limites",
+    "TOTAL_CALLS": "Total de Chamadas",
+    "ABANDONEDMAXRETRY": "Máximo de Tentativas",
+    "ABANDONEDRETRYTIME": "Tempo para nova Tentativa [min]",
+    "AGENTREJECT": "Rejeição de Agente",
+    "AGENTREJECTMAXRETRY": "Máximo de Tentativas",
+    "AGENTREJECTRETRYTIME": "Tempo para nova Tentativa [min]",
+    "DROP": "Perdida",
+    "DROPMAXRETRY": "Máximo de Tentativas",
+    "DROPRETRYTIME": "Tempo para nova Tentativa [min]",
+    "MACHINE": "Mensagem da Operadora",
+    "MACHINEMAXRETRY": "Máximo de Tentativas",
+    "MACHINERETRYTIME": "Tempo de nova Tentativa [min]",
+    "NOSUCHNUMBER": "Número Inválido",
+    "NOSUCHNUMBERMAXRETRY": "Máximo de Tentativas",
+    "NOSUCHNUMBERRETRYTIME": "Tempo de nova Tentativa [min]",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "THIRD_LEVEL_DISPOSITION": "Qualificação de Terceiro Nível",
     "ADDITIONALPHONES": "Telefones adicionais",
-    "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]",
-    "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me",
-    "PREVIEW_RECALL_ME_REMINDER": "Lembrete para me lembrar"
+    "CALLADDITIONALPHONEAFTERMIN": "Ligue para próximo telefone após [min]",
+    "PREVIEW_AUTO_RECALL_ME": "Automatizar chamadas Agendadas",
+    "PREVIEW_RECALL_ME_REMINDER": "Lembrete de Agendamento"
   }
 }
index 2bbd864..7375d03 100644 (file)
     "REPLYURI": "Svara URLi",
     "RECEIVEURI": "Taka á móti URL",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions.",
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru til nýrra samskipta. - This is the first response message sent to new interactions.",
+      "TOKEN": "Bættu þessari eign við sem fyrirspurnarstreng í vefslóð vefþjónustunnar þinnar. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> \n- Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Sjálfvirk myndaður API strengur til að nota til að taka á móti skilaboðum inni á opinni rás þinni frá ytri forritinu (með POST aðferð). Smelltu á klemmuspjaldhnappinn til að afrita hann - Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
+      "REPLYURI": "Slóðin sem opna rásin kallar á þegar skilaboð eru send eða svarað. Fyrir frekari upplýsingar sjá skjalið <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">hér</ a> - The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir - Only numbers, letters and specific characters (._) are supported",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði - Contact Manager List used to associate contacts",
+      "MANDATORYDISPOSITION": "Skyldubundin ráðstöfun - Mandatory disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota ef skyldubundin ráðstöfun er virkjuð - Pause to use if mandatory disposition is enabled"
     },
     "PAGE": "Blaðsíða",
     "ROWSPERPAGE": "Línur á síðu",
index e0aeed6..24f8e9c 100644 (file)
@@ -1,11 +1,11 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Tempo de login",
+    "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
     "QUEUETRANSFER": "Transferência de Fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência de Fila",
     "AGENTTRANSFER": "Transferência de Agente",
     "AGENTTRANSFERTIMEOUT": "Timeout Transferência Agente",
     "TAG": "Tag",
@@ -33,9 +33,9 @@
     "DELETE_OPENCHANNELCANNEDANSWER": "Excluir",
     "DELIVERYREPORTURL": "Delivery Report URL",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Visualizar",
+    "SPYINTERACTION": "Espiar",
     "NO_AGENT_ONLINE": "Sem Agente Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Ir para Fila Open Channel em Tempo Real",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Visualizar Fila do Open Channel em Tempo Real",
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Timer",
     "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "AUTOREPLY": "Auto Resposta",
     "NAME": "Nome",
-    "OPENCHANNELQUEUES": "Filas Open Channel",
+    "OPENCHANNELQUEUES": "Filas do Open Channel",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "TEXT_REQUIRED": "O texto do campo é obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
-      "REPLYURI_REQUIRED": "Campo Obrigatório",
+      "REPLYURI_REQUIRED": "Campo obrigatório",
       "REPLYURI_MUST_VALID_URL": "Formato incorreto",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo Oobrigatório",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
       "ACCESSKEYID_REQUIRED": "Access key ID é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "Access key secret é obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório"
     },
     "STRATEGY": "Estratégia",
     "AGENT": "Agente",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira Prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "VALUE": "Valor",
     "PRIORITY": "Prioridade",
     "AGENT_TIMEOUT": "Timeout Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_OPENCHANNELQUEUE": "Adicionar Fila Open Channel",
-    "EDIT_OPENCHANNELQUEUE": "Editar Fila Open Channel",
-    "DELETE_OPENCHANNELQUEUE": "Excluir Fila Open Channel",
+    "ADD_OPENCHANNELQUEUE": "Adicionar Fila do Open Channel",
+    "EDIT_OPENCHANNELQUEUE": "Editar Fila do Open Channel",
+    "DELETE_OPENCHANNELQUEUE": "Excluir Fila do Open Channel",
     "PENALTY": "Prioridade",
-    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila Open Channel",
-    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente para Fila Open Channel",
+    "TEAMADD_OPENCHANNELQUEUE": "Adicionar Equipe a Fila do Open Channel",
+    "AGENTADD_OPENCHANNELQUEUE": "Adicionar Agente à Fila do Open Channel",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "OPENCHANNELACCOUNTS": "Contas Open Channel",
+    "OPENCHANNELACCOUNTS": "Contas do Open Channel",
     "MOTIONADDRESS": "Endereço do XCally Motion",
     "ADD_OPENCHANNELACCOUNT": "Adicionar Conta Open Channel",
-    "EDIT_OPENCHANNELACCOUNT": "Editar Conta Open Channel",
-    "DELETE_OPENCHANNELACCOUNT": "Excluir conta Open Channel",
+    "EDIT_OPENCHANNELACCOUNT": "Editar Conta do Open Channel",
+    "DELETE_OPENCHANNELACCOUNT": "Excluir Conta do Open Channel",
     "API": "API",
     "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceite o Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
     "CLOSE": "Encerrar",
-    "CLOSEMETHOD": "Método Encerramento",
-    "CLOSEURL": "Encerrar URL",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Desselecionar Todos",
     "OPENCHANNEL": "Open Channel",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualificações Open Channel",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação Open Channel disponível",
-    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação Open Channel",
-    "ADD_OPENCHANNELDISPOSITION": "Adicionar qualificação Open Channel",
-    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação Open Channel",
-    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação Open Channel",
-    "NEW_OPENCHANNELQUEUE": "Nova Fila Open channel",
-    "NEW_OPENCHANNELACCOUNT": "Nova Conta Open channel",
+    "OPENCHANNELDISPOSITIONS": "Qualificações do Open Channel",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nenhuma Qualificação do Open Channel disponível",
+    "NEW_OPENCHANNELDISPOSITION": "Nova Qualificação do Open Channel",
+    "ADD_OPENCHANNELDISPOSITION": "Adicionar Qualificação do Open Channel",
+    "EDIT_OPENCHANNELDISPOSITION": "Editar Qualificação do Open Channel",
+    "DELETE_OPENCHANNELDISPOSITION": "Excluir Qualificação do Open Channel",
+    "NEW_OPENCHANNELQUEUE": "Nova Fila do Open channel",
+    "NEW_OPENCHANNELACCOUNT": "Nova Conta do Open channel",
     "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "ALL_TEAMS": "Todas Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "REPLYURI": "URL de Resposta",
-    "RECEIVEURI": "Receive URL",
+    "RECEIVEURI": "URL de Recebimento",
     "HELP": {
       "TOKEN": "Token para consumir API do XCally.",
       "RECEIVEURI": "Auto-generated API string para receber mensagens dentro do Open Channel a partir do aplicativo externo (usando o método POST). Clique no botão da área de transferência para copiá-lo",
-      "REPLYURI": "O URL que o Open Channel chamará ao enviar ou responder a uma mensagem.",
+      "REPLYURI": "A URL que o Open Channel chamará ao enviar ou responder a uma mensagem.",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "LIST": "Lista usada para associar contatos",
       "MANDATORYDISPOSITION": "Qualificação obrigatória",
     "FILTERS": "Filtros",
     "CLOSEDAT": "Encerrado em",
     "DISPOSITION": "Qualificação",
-    "NOTES": "Anotações",
+    "NOTES": "Observações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "SELECT_ACCOUNT": "Selecione uma conta",
     "GOTOP": "Gotop",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não Registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar Agente à Fila Open Channel",
-    "UNPAUSE": "Despausar",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do Open Channel",
+    "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa padrão",
     "LOGGED_IN": "Logado",
     "PAUSED": "Pausado",
     "MAIL": "Email",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar Agentes à fila Open Channel",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila do Open Channel",
     "INTERACTIONS_OPENCHANNELACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_OPENCHANNELACCOUNT": "Adicionar Agente à Conta Openchannel",
-    "CANNED_ANSWER_SEARCH": "Não econtrado Resposta Pré-definida",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_OPENCHANNELACCOUNT": "Adicionar Agente à Conta do Openchannel",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma Resposta Pré-definida foi encontrada",
     "SEND": "Enviar",
     "TO": "Para",
     "MAPKEY": "Map Key",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Editar Dialogflow ",
     "LANGUAGE": "Idioma",
-    "WELCOMEMESSAGE": "Mensagem de Boas-Vindas",
-    "ACCESSKEYID": "ID Chave Acesso",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "ACCESSKEYID": "ID da Chave Acesso",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Nome Bot",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
+    "BOTNAME": "Nome do Bot",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Access key secret",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem",
-    "CLIENTEMAIL": "Email Cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "PROJECTID": "ID Projeto",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Anotação"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação"
   }
 }
index 6a12726..3e3a115 100644 (file)
 {
   "SETTINGS": {
-    "RTLSUPPORT": "RTL Support",
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "RTLSUPPORT": "RTL Stuðningur",
+    "PREFERRED": "Æskilegt lógó",
+    "DEFAULT_PREFERRED": "Sjálfgefið valið Merki",
     "FAVICON": "Favicon",
-    "DEFAULT_FAVICON": "Default Favicon",
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
+    "DEFAULT_FAVICON": "Sjálfgefið Favicon",
+    "MOTIONBARREMEMBERME": "Mundu mig",
+    "CHATTIMEOUT": "Spjall tími útruninn án samskipta",
+    "VIRTUAL": "Spjall",
+    "VOICE": "tal",
     "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
-    "COPY_LICENSE": "Copy token to clipboard",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Download license log file",
-    "LICENSE_LOG_FILE": "License log file",
-    "LICENSE_LOG_FILE_DOWNLOADED": "License log file downloaded!",
-    "CLIPBOARD": "Clipboard",
-    "COPIED_TO_CLIPBOARD": "Token copied to clipboard",
+    "ADDONS": "Viðbætur",
+    "REPORT": "Skýrsla",
+    "SPLIT": "Skipt skýrsla",
+    "SPLITSIZECSV": "Stærð á skýrslu [CSV records]",
+    "SPLITSIZEPDF": "Stærð á skýrslu [PDF records]",
+    "SPLITSIZEXLSX": "Stærð á skýrslu [XLSX records]",
+    "ENABLEEMAILPREVIEW": "Leyfa forskoðun á tölvupósti",
+    "COPY_LICENSE": "Afritaðu auðkenni á klippiborð",
+    "DOWNLOAD_LICENSE_LOG_FILE": "Sæktu leyfisskrána",
+    "LICENSE_LOG_FILE": "Leyfisskrárskrá",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Leyfisskrárskrá hlaðið niður!",
+    "CLIPBOARD": "Klippiborð",
+    "COPIED_TO_CLIPBOARD": "Auðkenni afritað á klippiborð",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Sjálfvirk uppfærsla",
+    "MOTIONBARAUTOUPDATERURL": "Sjálfvirk uppfærsla á URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Dulkóðun upptöku á tali",
+    "TURNADDR": "TURN Heimilisfang",
+    "TURN_USERNAME": "TURN notandanafn",
+    "TURN_PASSWORD": "TURN Lykilorð",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Preview Recallme Reminder Interval",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Forskoða Recallme Reminder Interval",
+    "ENABLED": "Leyfa",
+    "DISABLED": "Afvirkjað",
+    "UNLIMITED_CHANNELS": "Ótakmarkaðar rásir",
+    "RELOAD": "Endurhlaða",
+    "VERIFY": "Staðfestu",
+    "INTERFACE": "Viðmót",
+    "UPDATING": "Uppfærir",
+    "REMOTE_VERSION": "Remote útgáfa",
+    "NO_NEW_VERSION_AVAILABLE": "Engin ný útgáfa til",
+    "TOP_N_PROCESSES": "Top {{value}} ferlar",
+    "SYSTEM": "Kerfi",
+    "FILE_SYSTEM": "Skrárkerfi",
+    "PROCESSES": "Ferlar",
     "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "WHATSAPP": "WhatsApp Connector",
+    "AVG_LOAD": "Meðal álag",
+    "TOTAL": "Heildar",
+    "USED": "Notað",
+    "FREE": "Laust",
+    "NAME": "Nafn",
+    "STATE": "Fylki",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "MESSAGING": "SMS",
+    "WHATSAPP": "WhatsApp Tengill",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "AGENTS": "Notandi",
+    "USERS": "Notendur",
+    "TELEPHONES": "Símar",
+    "STAFF": "Starfsmenn",
+    "CHANNELS": "Rásir",
+    "MODULES": "Einingar",
+    "CM": "Stjórnandi tengiliða",
+    "DIALER": "Hringjari",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
+    "CUSTOM": "Snérsníða",
     "VIDEO": "Video",
-    "SCREENRECORDING": "Screen Recording",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "SCREENRECORDING": "Skjá upptaka",
+    "UPDATE": "Uppfæra",
+    "OTHERS": "Aðrir",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
+    "NETWORKS": "Netkerfi",
+    "UPDATES": "Uppfærsla",
+    "LICENSE": "Leyfi",
     "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
-    "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
+    "MIN_INTERNAL": "Lámark innan",
+    "MIN_MAILBOX": "Lámarks pósthólf",
+    "INSTALLED_AT": "Uppsett kl.",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "EDIT_GENERAL": "Breyta almennt",
+    "SECURE_PASSWORD": "Öruggt lykilorð",
+    "LOGO": "Merki",
+    "DEFAULT_LOGO": "Sjálfgefið Merki",
+    "DEFAULT_LOGIN_LOGO": "Sjálfgefið Login merki",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
+    "DEFAULT_HEADER_WHITELABEL": "Sjálfgefin haus hvítt merki",
+    "HEADER_WHITELABEL": "Haus á hvítri merkingu",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMTP_SERVICE": "Þjónusta",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Notandanafn",
+    "DESCRIPTION": "Lýsing",
+    "SMTP_PASSWORD": "Lykilorð",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "USERNAME": "Username",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Öruggt",
+    "TYPE": "Tegund",
+    "ADDRESS": "Heimilisfang",
+    "USERNAME": "Notandanafn",
+    "NEW_NETWORK": "Nýtt net",
+    "ADD_NETWORK": "Bættu við neti",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
-    "DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
+    "LOGINMAILFREQUENCY": "Tíðni innskráningarpósts (sek.)",
+    "DEFAULTSCREENRECORDINGPATH": "Skjá upptöku slóð",
     "APPZONE": "App Zone",
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
+    "EDIT_NETWORK": "Breyta neti",
+    "DELETE_NETWORK": "Eyða neti",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja nafn",
+    "EXPIRATION_DATE": "Gildir til",
+    "REQUEST_LICENSE": "Biddu um leyfi",
+    "EMAIL": "Netfang",
+    "SEND": "Senda",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
+    "MONTH_TO_MONTH": "Mánuð fyrir mánuð",
+    "MOTION_PROCESS_MANAGEMENT": "Hreyfis ferla stjórnun",
+    "USEFUL_COMMANDS": "Gagnlegar skipanir",
+    "COMMAND": "Skipun",
+    "PM2_LIST": "Listaðu alla ferla",
+    "PM2_START": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_STOP": "Stöðvaðu ferla með auðkenni eða nafni eða settu inn 'allt' til að stöðva alla virku ferla",
+    "PM2_RESTART": "Endurræstu ferla með auðkenni eða nafni",
+    "PM2_LOGS": "Streymaðu allar ferla skrár, nema sérstakt auðkenni eða nafn sé gefið upp",
+    "PASSWORD": "Lykilorð",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
     "STUNADDR": "STUN Address",
-    "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
+    "CHANGELOG": "Breyta skrá",
+    "CURRENT_VERSION": "Núverandi útgáfa",
+    "CUSTOMIZATIONS": "Séraðlaganir",
     "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
+    "NEW_VERSION": "Ný útgáfa",
+    "TRIAL_VERSION": "Prufu útgáfa",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
-    "SECURITY": "Security",
-    "ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-    "BLOCKDURATION": "Minutes to wait before automatic unlock",
-    "AI": "A.I. Tools",
-    "AITOOLS": "A.I. Tools",
-    "SERVICE": "Service",
-    "NEW_CLOUDPROVIDER": "New Account",
-    "ADD_CLOUDPROVIDER": "Add Account",
-    "DELETE": "Delete",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "ACCESSKEY": "Access Key ID",
-    "EDIT_CLOUDPROVIDER": "Edit Account",
-    "DELETE_CLOUDPROVIDER": "Delete Account",
-    "LANGUAGE": "Language",
+    "NEW_TOKEN_DETECTED": "Nýtt Token skynjað",
+    "EXPIRATION_GRAY_PERIOD": "Prufutímabil er lokið",
+    "NEW_TOKEN": "Nýtt Token",
+    "PRICES": "Verð",
+    "UPDATE_LICENSE": "Uppfæra leyfi",
+    "LOGOLOGIN": "Innskráningar merki",
+    "EXPIRATION_REASON": "Ástæða þess að vera útrunnið",
+    "GLOBAL": "Alþjóðlegt",
+    "SMTP_AUTHENTICATION": "Auðkenning",
+    "LICENSE_REQUEST_SENT": "Takk fyrir! Við hjá Svar munum athuga reikninginn þinn eins fljótt og auðið er til að samþykkja beiðni þína: þú munt fá tölvupóst þegar breytingarnar taka gildi.",
+    "ACCOUNTNAME": "Nafnið á reikningi",
+    "EMAILADDRESS": "Netfang",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Leyfið þitt hefur vrið afvirkjað.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Auðkenni tölvunar þinnar hefur verið breyst venga nýrrar tölvu.",
+    "EXPIRATION_CHANGED_ADVISE": "Hafðu samband við Svar, sendu okkur bæði gamla og nýja notenda auðkennið þitt.",
+    "OLD_TOKEN": "Gamla Token",
+    "SEND_EMAIL_TO": "Senda tölvupóst til",
+    "JIRA_ERROR_MESSAGE": "Villa við leyfisbeiðni. Vinsamlegast hafðu samband við hjalp@svar.is",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu, línur á bls.",
+    "OF": "af",
+    "PAGE_TITLE": "Bls. titill",
+    "DEFAULT_PAGE_TITLE": "Sjálfgefin titill á bls.",
+    "PERPETUAL": "Endalaust",
+    "SECURITY_SUITE": "Öriggis svíta",
+    "ANNUALLY": "Árlega",
+    "AGENTOMNIDESKTOPINTERFACE": "Skjá viðmót Notanda í Omni channel",
+    "MESSAGESALIGNMENT": "Jöfnun skilaboða",
+    "ENTER_LICENSE": "Settu inn leyfislykilinn þinn",
+    "UPDATE_LICENSE_MANUALLY": "Viltu uppfæra leyfin handvirkt?",
+    "SECURITY": "Öryggi",
+    "ALLOWEDLOGINATTEMPTS": "Hámarks fjöldi tilrauna áður en aðgangi er lokað á notanda",
+    "BLOCKDURATION": "Mínútur fyrir sjálfvirka opnun",
+    "AI": "A.I. Verkfæri",
+    "AITOOLS": "A.I. Verkfæri",
+    "SERVICE": "Þjónusta",
+    "NEW_CLOUDPROVIDER": "Nýr reikningur",
+    "ADD_CLOUDPROVIDER": "Bættu við reikningi",
+    "DELETE": "Eyða",
+    "SECRETACCESSKEY": "Lykilorð",
+    "ACCESSKEY": "Auðkenni aðgangslykils",
+    "EDIT_CLOUDPROVIDER": "Breyttu reikningi",
+    "DELETE_CLOUDPROVIDER": "Eyða reikningi",
+    "LANGUAGE": "Tungumál",
     "BUCKET": "Bucket",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIBEREGION": "Transcribe Region",
-    "TRANSCRIBEACCOUNT": "Transcribe Account",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIBEREGION": "Afrita svæði",
+    "TRANSCRIBEACCOUNT": "Afrita reikning",
+    "SENTIMENTANALYSIS": "Viðhorfsgreining",
+    "SENTIMENTREGION": "Viðhorfsgreiningar svæði",
+    "SENTIMENTACCOUNT": "Viðhorfsgreiningarsvæði",
     "SSO": "SSO",
-    "GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-    "ENFORCE_PASSWORD_HISTORY": "Enforce Password History",
-    "PASSWORD_HISTORY_LIMIT": "Password History Limit",
-    "PRIVACY_POLICY_EMAIL": "Privacy Policy for Email Addresses",
-    "PRIVACY_POLICY_NAME": "Privacy Policy for Names",
-    "PRIVACY_POLICY_NUMBER": "Privacy Policy for Numbers",
-    "SEARCH_ON_ENTER_KEY": "Search on Enter key",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Chat interactions reload timeout",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Email interactions reload timeout",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel interactions reload timeout",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS interactions reload timeout",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector interactions reload timeout",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Stop recording on voice call transfer",
-    "DISABLED_COOKIE": "Cookies banner",
-    "AD_SSO_ENABLED": "Active Directory SSO Enabled",
-    "CLOUD_PROVIDERS": "Cloud Providers",
-    "APPLICATION_ID": "Application Id",
-    "TENANT_ID": "Tenant Id",
-    "CLIENT_SECRET": "Client Secret",
-    "NEW_CLIENT_SECRET": "New Client Secret",
+    "GOOGLE_SSO_ENABLED": "Google SSO Virkt",
+    "ENFORCE_PASSWORD_HISTORY": "Framfylgja lykilorða sögu",
+    "PASSWORD_HISTORY_LIMIT": "Hámark lykilorðasögu",
+    "PRIVACY_POLICY_EMAIL": "Persónuverndarstefna fyrir netföng ",
+    "PRIVACY_POLICY_NAME": "Persónuverndarstefna fyrir nöfn",
+    "PRIVACY_POLICY_NUMBER": "Persónuverndarstefna fyrir tölur",
+    "SEARCH_ON_ENTER_KEY": "Leitaðu með Enter lyklinum",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Samskipti runnu út á tíma",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu tölvupóstsamskipta ",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Open Channel tíminn rann út",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk endurhleðslu SMS-samskipta",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tímamörk fyrir endurhleðslu WhatsApp tengisamskipta",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Hættu að taka upp við símtalsflutning",
+    "DISABLED_COOKIE": "Vefköku borði",
+    "AD_SSO_ENABLED": "Active Directory SSO er virkjað",
+    "CLOUD_PROVIDERS": "Skýja þjónustu aðili",
+    "APPLICATION_ID": "Auðkenni forrits",
+    "TENANT_ID": "Notanda auðkenni",
+    "CLIENT_SECRET": "Leiniorð notanda",
+    "NEW_CLIENT_SECRET": "Nýtt leyniorð notanda",
     "REDIRECT_URI": "Redirect URI",
     "REMOTE_URI": "Remote URI",
-    "AUTHENTICATE": "Authenticate",
-    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Authenticate to Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-    "UPDATE_CLIENT_SECRET": "Update Client Secret",
+    "AUTHENTICATE": "Auðkenna",
+    "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Auðkenni fyrir Microsoft grunn",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenningu á Microsoft aðgengi þínum tókst",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft aðgangi",
+    "UPDATE_CLIENT_SECRET": "Uppfæra leyniorð notanda",
     "HELP": {
-      "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-      "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
+      "DEFAULTSCREENRECORDINGPATH": "Settu inn slóðina til að geyma skjá upptökuna á tölvu notandans (skildu eftir autt ef þú vilt nota sjálfgefna möppu)",
+      "RTLSUPPORT": "Virkjar RTL stuðning fyrir arabísku, persnesku og hebresku",
       "ADDRESS": "External (public) ip address",
       "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
-      "USERNAME": "Username",
-      "PASSWORD": "Password",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Time interval in minutes before which notification will be sent to agent informing him about preview recall to be made",
-      "ENFORCE_PASSWORD_HISTORY": "Enables the validation against previously used passwords",
-      "PASSWORD_HISTORY_LIMIT": "Number of last used unique passwords to check",
-      "PRIVACY_POLICY": "Number of characters that will be replaced with an asterisk (*) (0 = all characters)",
-      "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)",
-      "CLIENT_SECRET": "The secret will no longer be visible once the configuration is saved. Store it safely if you want to use it elsewhere.",
-      "LIMIT_TABS": "Maximum number of possible interaction tabs open"
+      "SMTP_SECURE": "Ef rétt, mun tengingin við netþjóninn nota TLS",
+      "SMTP_USERNAME": "Notendanafn notað til auðkenningar",
+      "SMTP_PASSWORD": "Lykilorð notað til auðkenningar",
+      "EMAILADDRESS": "Uppruni skilaboða fra netfangi (frá)",
+      "SECURITY_SUITE": "Virkjar öruggt lykilorðssnið, lögboðna endurstillingu lykilorðsins eftir fyrstu innskráningu og lykilorðið rennur út eftir 90 daga ",
+      "MOTIONBARREMEMBERME": "Virkja/afvirkja muna mig virknina í Motion slánni",
+      "LOGINMAILFREQUENCY": "Vinsamlega mundu að endursetja póst þjónustuna eftir hvert skipti sem þetta gildi hefur verið breytt",
+      "USERNAME": "Notandanafn",
+      "PASSWORD": "Lykilorð",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Tímabil í mínútum áður en tilkynning verður send til fulltrúa sem upplýsir hann um innköllun",
+      "ENFORCE_PASSWORD_HISTORY": "Virkjar staðfestingu frá áður notuðu lykilorði",
+      "PASSWORD_HISTORY_LIMIT": "Fjöldi notaðra lykilorða áður en má nota aftur",
+      "PRIVACY_POLICY": "Fjöldi stafa sem verður skipt út fyrir stjörnu (*) (0 = allir stafir)",
+      "SEARCH_ON_ENTER_KEY": "Byrjaðu aðeins að leita eftir að fulltrúi ýtir á Enter takkann",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Tímabil í sekúndum þangað til skilaboðum eru sett aftur (0 = real-time update)",
+      "CLIENT_SECRET": "Leyniorðið verður ekki sjáanlegt eftir að stillingar hafa verið geymdar. Geymdu það á öruggum stað ef þú vilt endurnota það.",
+      "LIMIT_TABS": "Hámarsfjöldi samtíma samskipta sem geta verið opnir"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-      "BLOCKDURATION_REQUIRED": "Mandatory field",
-      "SERVICE_REQUIRED": "Mandatory field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory field",
-      "ACCESSKEY_REQUIRED": "Mandatory field",
-      "LANGUAGE_REQUIRED": "Mandatory field",
-      "BUCKET_REQUIRED": "Mandatory field",
-      "TRANSCRIBEREGION_REQUIRED": "Mandatory field",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
-      "SENTIMENTREGION_REQUIRED": "Mandatory field",
-      "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Rangt snið",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Skilyrtur reitur",
+      "ADDRESS_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HEADER_WHITELABEL_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_REQUIRED": "Skilyrtur reitur",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ADDRESS_MUST_VALID_PATTERN": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "SMTP_USERNAME_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "SMTP_HOST_REQUIRED": "Skilyrtur reitur",
+      "SMTP_PORT_REQUIRED": "Skilyrtur reitur",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "PAGE_TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PLAN_REQUIRED": "Skilyrtur reitur",
+      "LICENSE_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_REQUIRED": "Skilyrtur reitur",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Skilyrtur reitur",
+      "BLOCKDURATION_REQUIRED": "Skilyrtur reitur",
+      "SERVICE_REQUIRED": "Skilyrtur reitur",
+      "SECRETACCESSKEY_REQUIRED": "Skilyrtur reitur",
+      "ACCESSKEY_REQUIRED": "Framfylgja lykilorða sögu",
+      "LANGUAGE_REQUIRED": "Skilyrtur reitur",
+      "BUCKET_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEREGION_REQUIRED": "Skilyrtur reitur",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTREGION_REQUIRED": "Skilyrtur reitur",
+      "SENTIMENTACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
       "WRONG_FORMAT": "Wrong format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra eða jafnt og"
     },
     "NOTIFICATIONS": {
-      "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
-      "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
-      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Cloud Provider successfully created",
-      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Cloud Provider successfully saved",
-      "CLOUD_PROVIDER_DELETE_TITLE": "Are you sure want to delete the cloud provider?",
-      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Cloud Provider successfully deleted",
-      "CLOUD_PROVIDERS_DELETE_TITLE": "Are you sure want to delete the selected cloud providers?",
-      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} cloud providers will be deleted",
-      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Cloud Providers successfully deleted",
-      "SMTP_SAVED_SUCCESS_TITLE": "SMTP configuration successfully saved",
-      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Client Secret successfully updated"
+      "MICROSOFT_AUTHENTICATION_SUCCESS": "Auðkenning á Microsoft auðkenninu þínu tóskt",
+      "MICROSOFT_AUTHENTICATION_FAIL": "Eitthvað fór úrskeiðis við auðkenningu á Microsoft auðkenni þínu",
+      "CLOUD_PROVIDER_CREATED_SUCCESS_TITLE": "Skýjaþjónustu aðili hefur verið stofnaður",
+      "CLOUD_PROVIDER_SAVED_SUCCESS_TITLE": "Skýja þjónustuaðili geymdur",
+      "CLOUD_PROVIDER_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaþjónustuaðila?",
+      "CLOUD_PROVIDER_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "CLOUD_PROVIDER_DELETED_SUCCESS_TITLE": "Skýjaþjónustu aðila hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum skýjaveitum?",
+      "CLOUD_PROVIDERS_DELETE_MESSAGE": "{{ total }} Skýja þjónustu aðilum hefur verið eytt",
+      "CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE": "Skýja þjónustu aðila hefur verið eytt",
+      "SMTP_SAVED_SUCCESS_TITLE": "SMTP Stillingar geymdar",
+      "CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE": "Lykilorð notanda uppfært"
     },
-    "LIMIT_TABS": "Limit of interaction tab"
+    "LIMIT_TABS": "Takmörkun á samskiptaflipum"
   }
 }
index 5ccbf9c..1e6729b 100644 (file)
@@ -1,28 +1,28 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Logotipo Preferido",
-    "DEFAULT_PREFERRED": "Logotipo preferido padrão",
+    "PREFERRED": "Logomarca Favorita",
+    "DEFAULT_PREFERRED": "Logomarca Favorita Padrão",
     "MOTIONBARREMEMBERME": "Lembre de mim",
-    "CHATTIMEOUT": "Tempo limite de interação de fechamento de chat",
+    "CHATTIMEOUT": "Timout para encerrar interação de chat",
     "VIRTUAL": "Chat",
     "VOICE": "Voz",
     "SESSIONS": "Sessão",
     "ADDONS": "Complementos",
     "REPORT": "Relatório",
-    "SPLIT": "Relatório dividido",
-    "SPLITSIZECSV": "Tamanho do relatório dividido [registros CSV]",
-    "SPLITSIZEPDF": "Tamanho do relatório dividido [registros PDF]",
-    "SPLITSIZEXLSX": "Tamanho do relatório dividido [registros XLSX]",
-    "ENABLEEMAILPREVIEW": "Ativar visualização de e-mail",
+    "SPLIT": "Dividir relatório",
+    "SPLITSIZECSV": "Tamanho para dividir relatório [registros CSV]",
+    "SPLITSIZEPDF": "Tamanho para dividir relatório [registros PDF]",
+    "SPLITSIZEXLSX": "Tamanho para dividir relatório [registros XLSX]",
+    "ENABLEEMAILPREVIEW": "Ativar Preview de Email",
     "JAWS": "Jaws",
     "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBARAUTOUPDATER": "Atualização Automática",
+    "MOTIONBARAUTOUPDATERURL": "URL de Atualização Automática",
     "SMTP_SSL": "SMTP SSL",
     "CALL_RECORDING_ENCRYPTION": "Criptografia de Gravação de Voz",
     "TURNADDR": "Endereço TURN",
-    "TURN_USERNAME": "Nome de usuário do TURN",
-    "TURN_PASSWORD": "Senha da TURN",
+    "TURN_USERNAME": "Nome de Usuário TURN",
+    "TURN_PASSWORD": "Senha TURN",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
     "ENABLED": "Ativado",
     "INTERFACE": "Interface",
     "UPDATING": "Atualizando",
     "REMOTE_VERSION": "Versão Remota",
-    "NO_NEW_VERSION_AVAILABLE": "Nenhuma nova versão disponível",
-    "TOP_N_PROCESSES": "Principais processos {{value}}",
+    "NO_NEW_VERSION_AVAILABLE": "Nenhuma Nova Versão disponível",
+    "TOP_N_PROCESSES": "Top {{value}} processos",
     "SYSTEM": "Sistema",
-    "FILE_SYSTEM": "Sistema de arquivo",
+    "FILE_SYSTEM": "Sistema de Arquivo",
     "PROCESSES": "Processos",
-    "MOUNT_POINT": "Mount",
+    "MOUNT_POINT": "Montar",
     "AVG_LOAD": "AVG Load",
     "TOTAL": "Total",
     "USED": "Usado",
     "STATE": "Estado",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "MESSAGING": "Sms",
+    "MESSAGING": "SMS",
     "FAX": "Fax",
     "OPENCHANNEL": "Open Channel",
     "AGENTS": "Agentes",
     "USERS": "Usuários",
     "TELEPHONES": "Telefones",
-    "STAFF": "Funcionários",
-    "CHANNELS": "Channels",
-    "MODULES": "Modulos",
-    "CM": "Gerente de contatos",
+    "STAFF": "Colaboradores",
+    "CHANNELS": "Canais",
+    "MODULES": "Módulos",
+    "CM": "Gestão de Contatos",
     "DIALER": "Discador",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Costumização",
+    "CUSTOM": "Customização",
     "UPDATE": "Atualizar",
     "OTHERS": "Outros",
     "SETTINGS": "Configurações",
     "LICENSE": "Licença",
     "ID": "Id",
     "MIN_INTERNAL": "Min Interno",
-    "MIN_MAILBOX": "Min Caixa de correio",
+    "MIN_MAILBOX": "Min Caixa de Entrada",
     "INSTALLED_AT": "Instalado em",
     "SEARCH_FOR_ANYONE": "Procurar",
     "EDIT_GENERAL": "Editar Geral",
     "SECURE_PASSWORD": "Senha Segura",
-    "LOGO": "Logotipo",
-    "DEFAULT_LOGO": "Logotipo padrão",
-    "DEFAULT_LOGIN_LOGO": "Logon de login padrão",
+    "LOGO": "Logomarca",
+    "DEFAULT_LOGO": "Logomarca Padrão",
+    "DEFAULT_LOGIN_LOGO": "Logomarca de Login Padrão",
     "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho padrão White Label",
-    "HEADER_WHITELABEL": "Cabeçalho White Label",
+    "DEFAULT_HEADER_WHITELABEL": "Cabeçalho Padrão White Label",
+    "HEADER_WHITELABEL": "Cabeçalho do White Label",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "SMTP_SERVICE": "Serviço",
     "SMTP_SECURE": "Segurança",
     "TYPE": "Tipo",
     "ADDRESS": "Endereço",
-    "NEW_NETWORK": "Nova rede",
+    "NEW_NETWORK": "Nova Rede",
     "ADD_NETWORK": "Adicionar Rede",
     "HELP": {
-      "ADDRESS": "Endereço IP externo (público)",
-      "LOCALNETADDRESS": "Endereço IP / sub-rede local",
-      "SMTP_SECURE": "Se for verdade, a conexão com o servidor usará o TLS",
+      "ADDRESS": "Endereço de IP externo (público)",
+      "LOCALNETADDRESS": "Endereço IP / Sub-Rede da LAN",
+      "SMTP_SECURE": "Se habilitado, a conexão com o servidor usará o TLS",
       "SMTP_USERNAME": "Usuário usado para autenticação",
       "SMTP_PASSWORD": "Senha usada para autenticação",
-      "EMAILADDRESS": "A origem da mensagem Endereço de email (de)",
-      "SECURITY_SUITE": "Habilita o formato de senha segura, a redefinição obrigatória da senha após o primeiro login e a expiração da senha após 90 dias",
-      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso Lembrar-me no Motion Phonebar",
-      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas árabe, persa e hebraico",
-      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de gravação de tela no computador do agente (deixe em branco para o caminho padrão da pasta de vídeo)",
+      "EMAILADDRESS": "O Endereço de email da origem (from)",
+      "SECURITY_SUITE": "Habilita política de senha com redefinição obrigatória da\napós o primeiro login e a expiração após 90 dias",
+      "MOTIONBARREMEMBERME": "Ativar / desativar o recurso de Agendamento no Motion Phonebar",
+      "RTLSUPPORT": "Ativa o suporte RTL para os idiomas Árabe, Persa e Hebraico",
+      "DEFAULTSCREENRECORDINGPATH": "Digite o caminho para armazenar os arquivos de Gravação de Tela no computador do agente (deixe em branco para o caminho padrão)",
       "LOGINMAILFREQUENCY": "Lembre-se de reiniciar o serviço EMAIL sempre que esse parâmetro for alterado",
       "PASSWORD": "Senha",
-      "USERNAME": "Nome do usuário",
-      "ENFORCE_PASSWORD_HISTORY": "Habilita a validação contra senhas usadas anteriormente",
-      "PASSWORD_HISTORY_LIMIT": "Número das últimas senhas exclusivas usadas para verificar",
-      "SEARCH_ON_ENTER_KEY": "Comece a pesquisar somente depois que o agente pressionar a tecla Enter",
+      "USERNAME": "Nome do Usuário",
+      "ENFORCE_PASSWORD_HISTORY": "Habilita validação de senhas usadas anteriormente",
+      "PASSWORD_HISTORY_LIMIT": "Número de senhas usadas a serem lembradas para verificação",
+      "SEARCH_ON_ENTER_KEY": "Inicia a pesquisa somente depois que o agente pressionar a tecla Enter",
       "INTERACTIONS_RELOAD_TIMEOUT": "Intervalo de tempo em segundos após o qual as interações são recarregadas (0 = atualização em tempo real)",
       "PRIVACY_POLICY": "Número de caracteres que serão substituídos por um asterisco (*) (0 = todos os caracteres)",
-      "CLIENT_SECRET": "O segredo não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
-      "LIMIT_TABS": "Número máximo de abas de interação possíveis abertas",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes do qual a notificação será enviada ao agente informando-o sobre a recuperação da visualização a ser feita"
+      "CLIENT_SECRET": "A senha não estará mais visível depois que a configuração for salva. Guarde-o com segurança se quiser usá-lo em outro lugar.",
+      "LIMIT_TABS": "Número máximo permitido de abas de interação abertas",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de tempo em minutos antes de enviar notificação ao agente informando-o sobre rechamada a ser feita"
     },
     "ERRORS": {
       "CHATTIMEOUT_REQUIRED": "Campo obrigatório",
       "WRONG_FORMAT": "Formato incorreto",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
     },
-    "EDIT_NETWORK": "Editar rede",
-    "DELETE_NETWORK": "Excluir rede",
+    "EDIT_NETWORK": "Editar Rede",
+    "DELETE_NETWORK": "Excluir Rede",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
-    "EXPIRATION_DATE": "Data de validade",
-    "REQUEST_LICENSE": "Solicitar licença",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
+    "EXPIRATION_DATE": "Data de Validade",
+    "REQUEST_LICENSE": "Solicitar Licença",
     "EMAIL": "Email",
     "SEND": "Enviar",
     "PLAN": "Plano",
     "MONTH_TO_MONTH": "Mês a mês",
-    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos de Movimento",
+    "MOTION_PROCESS_MANAGEMENT": "Gerenciamento de Processos do Motion",
     "USEFUL_COMMANDS": "Comandos Úteis",
     "COMMAND": "Comando",
     "PM2_LIST": "Listar todos os processos",
     "PM2_START": "Iniciar um processo por id ou nome",
-    "PM2_STOP": "Pare um processo por id ou nome ou insira 'todos' para parar todos os processos ativos",
-    "PM2_RESTART": "Reinicie um processo por id ou nome",
-    "PM2_LOGS": "Transmitir todos os arquivos de log de processos, a menos que um ID ou nome de processo específico seja fornecido",
+    "PM2_STOP": "Parar um processo por id ou nome, insira 'all' para parar todos os processos ativos",
+    "PM2_RESTART": "Reiniciar um processo por id ou nome",
+    "PM2_LOGS": "Enviar todos os arquivos de log de todos os processos, a menos que um ID ou nome de processo seja especificado",
     "PASSWORD": "Senha",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "STUNADDR": "Endereço do STUN",
+    "STUNADDR": "Endereço STUN",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Versão Atual",
-    "CUSTOMIZATIONS": "Personalizações",
-    "LOCALNETADDRESS": "Endereço de Localnet",
-    "NEW_VERSION": "Nova versão",
-    "TRIAL_VERSION": "Versão de teste",
+    "CURRENT_VERSION": "Versão atual",
+    "CUSTOMIZATIONS": "Customizações",
+    "LOCALNETADDRESS": "Endereço de LAN",
+    "NEW_VERSION": "Nova Versão",
+    "TRIAL_VERSION": "Versão de Teste",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Novo Token detectado",
-    "EXPIRATION_GRAY_PERIOD": "Expiração do período cinza",
+    "NEW_TOKEN_DETECTED": "Novo Token Detectado",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NEW_TOKEN": "Novo Token",
     "PRICES": "Preços",
     "UPDATE_LICENSE": "Atualização de Licença",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "LOGOLOGIN": "Logomarca de Login",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "GLOBAL": "Global",
     "SMTP_AUTHENTICATION": "Autenticação",
-    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua conta o mais rápido possível para aprovar sua solicitação: você receberá um e-mail quando as alterações entrarem em vigor. Por favor, consulte license@xcally.com para mais informações.",
-    "ACCOUNTNAME": "Nome da conta",
+    "LICENSE_REQUEST_SENT": "Obrigado! A Equipe de Licenciamento verificará sua solicitação.",
+    "ACCOUNTNAME": "Nome da Conta",
     "EMAILADDRESS": "Endereço de e-mail",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Sua licença foi desativada.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID exclusivo da sua máquina foi atualizado devido a uma alteração no seu sistema.",
-    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com xCALLY Motion License Team enviando tanto o seu antigo como o novo uuid.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "O ID único do seu servidor foi atualizado devido a uma alteração no seu sistema.",
+    "EXPIRATION_CHANGED_ADVISE": "Entre em contato com a equipe do XCALLY Motion enviando uuid antigo e o novo.",
     "OLD_TOKEN": "Token Antigo",
-    "SEND_EMAIL_TO": "Enviar email para",
-    "JIRA_ERROR_MESSAGE": "Erro durante o pedido de licença. Por favor, entre em contato com nossa equipe de licenças em license@xcally.com com sua solicitação",
+    "SEND_EMAIL_TO": "Enviar Email para",
+    "JIRA_ERROR_MESSAGE": "Erro durante a requisição de licença. Por favor, entre em contato com nossa equipe de suporte",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "PERPETUAL": "Perpétuo",
     "SECURITY_SUITE": "Suíte de Segurança",
     "ANNUALLY": "Anualmente",
-    "AGENTOMNIDESKTOPINTERFACE": "Interface do Omni Desktop do agente",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
     "MESSAGESALIGNMENT": "Alinhamento de Mensagens",
     "ENTER_LICENSE": "Digite sua licença",
     "UPDATE_LICENSE_MANUALLY": "Você quer atualizar sua licença manualmente?",
-    "RTLSUPPORT": "Suporte RTL",
-    "DEFAULTSCREENRECORDINGPATH": "Caminho de gravação de tela",
-    "SCREENRECORDING": "Gravação de tela",
+    "RTLSUPPORT": "Suporte a RTL",
+    "DEFAULTSCREENRECORDINGPATH": "Caminho de Gravação de Tela",
+    "SCREENRECORDING": "Gravação de Tela",
     "VIDEO": "Vídeo",
     "BLOCKDURATION": "Minutos para esperar antes do desbloqueio automático",
     "SECURITY": "Segurança",
     "ALLOWEDLOGINATTEMPTS": "Tentativas de login permitidas antes de bloquear o usuário / agente",
-    "DEFAULT_FAVICON": "Favicon padrão",
+    "DEFAULT_FAVICON": "Favicon Padrão",
     "FAVICON": "Favicon",
     "IMAPGENERALSETTINGS": "IMAP",
-    "LOGINMAILFREQUENCY": "Frequência de email de login (s)",
-    "USERNAME": "Nome do usuário",
-    "GOOGLE_SSO_ENABLED": "SSO do Google ativado",
+    "LOGINMAILFREQUENCY": "Frequência de login de email (seg)",
+    "USERNAME": "Nome do Usuário",
+    "GOOGLE_SSO_ENABLED": "Google SSO Ativado",
     "SSO": "SSO",
-    "ACCESSKEY": "ID da chave de acesso",
+    "ACCESSKEY": "ID da Chave de Acesso",
     "ADD_CLOUDPROVIDER": "Adicionar Conta",
-    "AI": "A.I. Ferramentas",
-    "AITOOLS": "A.I. Ferramentas",
+    "AI": "Ferramentas de I.A.",
+    "AITOOLS": "Ferramentas de I.A.",
     "APPZONE": "App Zone",
-    "BUCKET": "Balde",
+    "BUCKET": "Bucket",
     "DELETE": "Excluir",
-    "DELETE_CLOUDPROVIDER": "Deletar conta",
-    "EDIT_CLOUDPROVIDER": "Editar conta",
-    "LANGUAGE": "Língua",
-    "NEW_CLOUDPROVIDER": "Nova conta",
-    "SECRETACCESSKEY": "Chave de acesso secreta",
-    "SENTIMENTACCOUNT": "Conta de análise de sentimento",
-    "SENTIMENTANALYSIS": "Análise de sentimentos",
-    "SENTIMENTREGION": "Região de análise de sentimento",
+    "DELETE_CLOUDPROVIDER": "Excluir Conta",
+    "EDIT_CLOUDPROVIDER": "Editar Conta",
+    "LANGUAGE": "Idioma",
+    "NEW_CLOUDPROVIDER": "Nova Conta",
+    "SECRETACCESSKEY": "Chave de Acesso Secreta",
+    "SENTIMENTACCOUNT": "Conta de Análise de Sentimento",
+    "SENTIMENTANALYSIS": "Análise de Sentimentos",
+    "SENTIMENTREGION": "Região de Análise de Sentimento",
     "SERVICE": "Serviço",
-    "TRANSCRIBE": "Transcrever",
-    "TRANSCRIBEACCOUNT": "Transcrever conta",
-    "TRANSCRIBEREGION": "Transcrever região",
-    "WHATSAPP": "Conector WhatsApp",
-    "ENFORCE_PASSWORD_HISTORY": "Aplicar histórico de senha",
-    "PASSWORD_HISTORY_LIMIT": "Limite de histórico de senha",
-    "SEARCH_ON_ENTER_KEY": "Pesquisa na tecla Enter",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de bate-papo",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações por email",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de canal aberto",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga de interações de SMS",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Tempo limite de recarga das interações do Conector WhatsApp",
-    "PRIVACY_POLICY_EMAIL": "Política de privacidade para endereços de e-mail",
-    "PRIVACY_POLICY_NAME": "Política de privacidade para nomes",
-    "PRIVACY_POLICY_NUMBER": "Política de privacidade para números",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar na transferência de chamada de voz",
+    "TRANSCRIBE": "Transcrição",
+    "TRANSCRIBEACCOUNT": "Conta de Transcrição",
+    "TRANSCRIBEREGION": "Região de Transcrição",
+    "WHATSAPP": "WhatsApp Connector",
+    "ENFORCE_PASSWORD_HISTORY": "Aplicar Histórico de Senha",
+    "PASSWORD_HISTORY_LIMIT": "Limite de Histórico de Senha",
+    "SEARCH_ON_ENTER_KEY": "Procurar ao pressionar Enter",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de chat",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de Email",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do Open Channel",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações de SMS",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Timeout para recarregar interações do WhatsApp Connector",
+    "PRIVACY_POLICY_EMAIL": "Política de Privacidade para endereços de Email",
+    "PRIVACY_POLICY_NAME": "Política de Privacidade para Nomes",
+    "PRIVACY_POLICY_NUMBER": "Política de Privacidade para Números",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Pare de gravar quando transferir chamada",
     "AD_SSO_ENABLED": "Active Directory SSO habilitado",
-    "APPLICATION_ID": "ID do aplicativo",
+    "APPLICATION_ID": "ID do Aplicativo",
     "AUTHENTICATE": "Autenticar",
     "AUTHENTICATE_TO_MICROSOFT_IDENTITY_PLATFORM": "Autenticar no Microsoft Identity Platform",
-    "CLIENT_SECRET": "Segredo do cliente",
-    "CLIPBOARD": "Prancheta",
-    "CLOUD_PROVIDERS": "Provedores de nuvem",
+    "CLIENT_SECRET": "Senha do Cliente",
+    "CLIPBOARD": "Área de transferência",
+    "CLOUD_PROVIDERS": "Provedores de Nuvem",
     "COPIED_TO_CLIPBOARD": "Token copiado para a área de transferência",
     "COPY_LICENSE": "Copiar token para a área de transferência",
     "DISABLED_COOKIE": "Banner de cookies",
-    "DOWNLOAD_LICENSE_LOG_FILE": "Baixar arquivo de registro de licença",
-    "LICENSE_LOG_FILE": "Arquivo de registro de licença",
-    "LICENSE_LOG_FILE_DOWNLOADED": "Arquivo de registro de licença baixado!",
-    "LIMIT_TABS": "Limite da guia de interação",
-    "MICROSOFT_AUTHENTICATION_FAIL": "Algo deu errado durante a autenticação na Microsoft Identity Platform",
-    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação para a Microsoft Identity Platform concluída com sucesso",
-    "NEW_CLIENT_SECRET": "Novo segredo do cliente",
-    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de lembrete de rechamada de visualização",
-    "REDIRECT_URI": "URI de redirecionamento",
-    "REMOTE_URI": "URI remoto",
-    "TENANT_ID": "Id do inquilino",
-    "UPDATE_CLIENT_SECRET": "Atualizar segredo do cliente"
+    "DOWNLOAD_LICENSE_LOG_FILE": "Download de arquivo de log de licença",
+    "LICENSE_LOG_FILE": "Arquivo de log de licença",
+    "LICENSE_LOG_FILE_DOWNLOADED": "Download concluído do arquivo de log de licença!",
+    "LIMIT_TABS": "Limite da abas de interação",
+    "MICROSOFT_AUTHENTICATION_FAIL": "Erro durante a autenticação no Microsoft Identity Platform",
+    "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticação no Microsoft Identity Platform concluída com sucesso",
+    "NEW_CLIENT_SECRET": "Nova Senha do Cliente",
+    "PREVIEW_RECALLME_REMINDER_INTERVAL": "Intervalo de Lembrete de Agendamento",
+    "REDIRECT_URI": "URI de Redirecionamento",
+    "REMOTE_URI": "URI Remoto",
+    "TENANT_ID": "ID da Instância",
+    "UPDATE_CLIENT_SECRET": "Atualizar Senha do Cliente"
   }
 }
index 9f9a57b..9c84ccf 100644 (file)
 {
   "SMS": {
-    "EDIT_DIALOGFLOWV2": "Edit Dialogflow V2",
+    "EDIT_DIALOGFLOWV2": "Breyta Dialogflow V2",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "PRIVATEKEY": "Private Key",
-    "CLIENTEMAIL": "Client Email",
-    "PROJECTID": "Project ID",
+    "PRIVATEKEY": "Leyniorð",
+    "CLIENTEMAIL": "Netfang viðskiptavinar",
+    "PROJECTID": "Auðkenni verkefnis",
     "AMAZONLEX": "AmazonLex",
-    "EDIT_AMAZONLEX": "Edit Lex configuration",
-    "ACCESSKEYID": "Access key ID",
-    "SECRETACCESSKEY": "Access key secret",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot name",
-    "WELCOMEMESSAGE": "Welcome message",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
+    "EDIT_AMAZONLEX": "Breyta Lex stillingum",
+    "ACCESSKEYID": "Auðkennislykill",
+    "SECRETACCESSKEY": "Leyniorð",
+    "LEXREGION": "Svæði",
+    "BOTNAME": "Bot nafn",
+    "WELCOMEMESSAGE": "Velkominn skilaboð",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hlé",
+    "DOWNLOAD_INTERACTION": "Niðurhal",
+    "TRANSFER": "Flytja",
+    "QUEUETRANSFER": "Röð flutt",
+    "QUEUETRANSFERTIMEOUT": "Tíminn rann út á flutningi biðraðar",
+    "AGENTTRANSFER": "Flyt fulltrúa",
+    "AGENTTRANSFERTIMEOUT": "Tíminn rann út á flutningi á fullrúa",
     "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
+    "EDIT_TAG": "Breyta Tag",
+    "WAITFORTHEASSIGNEDAGENT": "Bíddu eftir skráðum fulltrúa",
+    "NOTIFICATION": "Tilkynning",
+    "NOTIFICATIONSOUND": "Hljóð",
+    "NOTIFICATIONSHAKE": "Hrista",
+    "NOTIFICATIONTEMPLATE": "Sniðmát",
+    "SYSTEM": "Kerfi",
+    "EDIT_SYSTEM": "Breyta kerfinu",
+    "COMMAND": "Skipun",
+    "VARIABLE": "Breyta",
+    "AUTHID": "Auðkeni",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Engin SMS ráðstöfun til",
+    "CANNEDANSWERS": "Tengd svör",
+    "SMSCANNEDANSWERS": "Tengd svör",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Ekkert tengt svar til",
+    "NEW_SMSCANNEDANSWER": "Nýtt tengt svar",
+    "ADD_SMSCANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_SMSCANNEDANSWER": "Breyta",
+    "DELETE_SMSCANNEDANSWER": "Eyða",
+    "DELIVERYREPORTURL": "URL fyrir afhendingarskýrslu",
+    "DELETE": "Eyða",
+    "SENDERSTRING": "Strengur sendanda",
+    "DELIVERYREPORT": "Afhendingar skýrslu",
+    "METHOD": "Aðferð",
+    "ADD_NOTE": "Bættu við skilaboðum",
+    "NOTE": "Skilaboð",
     "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
+    "AUTOREPLY": "Sjálfvirkt svar",
+    "EDIT_AUTOREPLY": "Breyta sjálfvirku svari",
+    "TIMES": "Fjöldi skipta á hver samskipti",
+    "TEXT": "Texti",
+    "INSERT_MESSAGE_HERE": "Settu inn texta skilaboðin þín hér",
+    "CANNED_ANSWER_NOT_FOUND": "Engin tengd svör fundust",
+    "CANNED_ANSWER_SEARCH": "Settu inn texta til að leita að tengdum svörum",
+    "SEND": "Senda",
+    "TO": "Til",
+    "MESSAGE": "Skilaboð",
+    "TAGS": "Tögg",
+    "NO_AGENT_ONLINE": "Engin fulltrúi tengdur",
+    "GOTOREALTIME_SMSQUEUE": "Farðu í rauntíma SMS biðröð",
+    "PARTIALPAUSE": "Hluta hlé",
+    "BUSY": "Upptekin",
+    "TIMER": "Teljari",
     "IDLE": "Idle",
-    "CAPACITY": "Capacity",
+    "CAPACITY": "Geta",
     "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Ítarlegt",
     "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "BASEURL": "Base URL",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
+    "REALTIME": "Rauntími",
+    "KEY": "Lykill",
+    "NAME": "Nafn",
+    "SMSQUEUES": "SMS Biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "STRATEGY": "Stefna",
+    "BASEURL": "Grunn URL",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð",
     "ERRORS": {
-      "PROJECTID_REQUIRED": "Mandatory Field",
-      "CLIENTEMAIL_REQUIRED": "Mandatory Field",
-      "PRIVATEKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Access key ID is required",
+      "PROJECTID_REQUIRED": "Skilyrtur reytur",
+      "CLIENTEMAIL_REQUIRED": "Skilyrtur reytur",
+      "PRIVATEKEY_REQUIRED": "Skilyrtur reytur",
+      "ACCESSKEYID_REQUIRED": "Aðgangsauðkenni er nauðsynlegt",
       "SECRETACCESSKEY_REQUIRED": "Access key secret is required",
-      "BOTNAME_REQUIRED": "Bot name is required",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "BOTNAME_REQUIRED": "Botta nafnið er skilyrt",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og ",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "TAG_REQUIRED": "Skilyrtur reytur",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "COMMAND_REQUIRED": "Skilyrtur reytur",
+      "AUTHID_REQUIRED": "Skilyrtur reytur",
       "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
+      "TEXT_REQUIRED": "Skilyrtur reytur",
+      "VALUE_REQUIRED": "Skilyrtur reytur",
       "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
-      "BASEURL_REQUIRED": "Mandatory Field",
-      "APIKEY_REQUIRED": "Mandatory Field",
-      "APPLICATIONID_REQUIRED": "Mandatory Field",
-      "ACCOUNTID_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+      "SENDERSTRING_MUST_VALID_PATTERN": "Rangt snið",
+      "METHOD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_REQUIRED": "Skilyrtur reytur",
+      "MOTIONPROXY_MUST_VALID_URL": "Rangt snið",
+      "KEY_MAX_LENGTH": "Gildið má að hámarki vera að lengd jafnt og {{max}}",
+      "KEY_REQUIRED": "Skilyrtur reytur",
+      "NAME_REQUIRED": "Skilyrtur reytur",
+      "AGENT_TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "PHONE_REQUIRED": "Skilyrtur reytur",
+      "SID_REQUIRED": "Skilyrtur reytur",
+      "TOKEN_REQUIRED": "Skilyrtur reytur",
+      "USERNAME_REQUIRED": "Skilyrtur reytur",
+      "PASSWORD_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_REQUIRED": "Skilyrtur reytur",
+      "MOTIONADDRESS_MUST_VALID_URL": "Rangt snið",
+      "ACCEPTURL_MUST_VALID_URL": "Rangt snið",
+      "TIMEOUT_REQUIRED": "Skilyrtur reytur",
+      "REJECTURL_MUST_VALID_URL": "Rangt snið",
+      "CLOSEURL_MUST_VALID_URL": "Rangt snið",
+      "TYPE_REQUIRED": "Skilyrtur reytur",
+      "LIST_REQUIRED": "Skilyrtur reytur",
+      "PRIORITY_REQUIRED": "Skilyrtur reytur",
+      "CONDITION_REQUIRED": "Skilyrtur reytur",
+      "TRUEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "FALSEPRIORITY_REQUIRED": "Skilyrtur reytur",
+      "AGENT_REQUIRED": "Skilyrtur reytur",
+      "QUEUE_REQUIRED": "Skilyrtur reytur",
+      "DISPOSITION_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTSID_REQUIRED": "Skilyrtur reytur",
+      "AUTHTOKEN_REQUIRED": "Skilyrtur reytur",
+      "BASEURL_REQUIRED": "Skilyrtur reyturd",
+      "APIKEY_REQUIRED": "Skilyrtur reytur",
+      "APPLICATIONID_REQUIRED": "Skilyrtur reytur",
+      "ACCOUNTID_REQUIRED": "Skilyrtur reytur",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reytur"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "Tíminn rann út á fulltrúa",
+    "DESCRIPTION": "Lýsing",
+    "ADD_SMSQUEUE": "Bættu við SMS biðröð",
+    "EDIT_SMSQUEUE": "Breyta SMS biðröð",
+    "DELETE_SMSQUEUE": "Eyða SMS biðröð",
+    "SETTINGS": "Stillingar",
+    "GENERAL": "Almennt",
+    "CREATED_AT": "Stofnað kl.",
+    "SAVE": "Geyma",
+    "SMSACCOUNTS": "SMS Reikningur",
+    "TYPE": "Tegund",
+    "PHONE": "Sími",
     "SID": "SID",
     "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
+    "SMSTYPE": "SMS Tegund",
+    "USERNAME": "Notandanafn",
+    "PASSWORD": "Lykilorð",
+    "MOTIONADDRESS": "Motion adressa",
+    "ADD_SMSACCOUNT": "Bættu við SMS reikningi",
+    "EDIT_SMSACCOUNT": "Breyta SMS reikningi",
+    "DELETE_SMSACCOUNT": "Eyða SMS reikningi",
+    "LIST": "Listi",
     "FIDELITY": "Fidelity",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "Ráðstafanir",
+    "WEBHOOKS": "Vefkrókar",
+    "ACTIONS": "Aðgerðir",
+    "ACCEPT": "Samþykja",
+    "ACCEPTMETHOD": "Samþykja aðferð",
+    "ACCEPTURL": "Samþykja URL",
+    "REJECT": "Hafna",
+    "REJECTMETHOD": "Höfnunaraðferð",
+    "REJECTURL": "Höfnunar URL",
+    "CLOSE": "Loka",
+    "CLOSEMETHOD": "Lokunar aðferð",
+    "CLOSEURL": "Loka URL",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Veldu allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "BACK": "Til baka",
     "SMS": "SMS",
-    "ID": "Id",
+    "ID": "Auðkenni",
     "APIKEY": "ApiKey",
-    "APPLICATIONID": "Application ID",
-    "ACCOUNTID": "Account ID",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "APPLICATIONID": "Auðkenni forrits",
+    "ACCOUNTID": "Auðkenni reiknings",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "SMSDISPOSITIONS": "SMS ráðstöfun",
+    "NO_SMSDISPOSITION_AVAILABLE": "Engin SMS ráðstöfun til",
+    "NEW_SMSDISPOSITION": "Ný SMS ráðstöfun",
+    "ADD_SMSDISPOSITION": "Bættu við SMS ráðstöfun",
+    "EDIT_SMSDISPOSITION": "Breyta SMS ráðstöfunum",
+    "DELETE_SMSDISPOSITION": "Eyða SMS ráðstöfun",
+    "NEW_SMSQUEUE": "Ný SMS röð",
+    "NEW_SMSACCOUNT": "Nýr SMS reikningur",
+    "NO_AVAILABLE_INFO": "Engar uppkýsingar fáanlegar",
+    "ALL_TEAMS": "Öll teymi",
+    "SELECTED_TEAMS": "Valdir hópar",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "Edit DialogFlow configuration",
-    "LANGUAGE": "Language",
+    "EDIT_DIALOGFLOW": "Breyta DialogFlow stillingum",
+    "LANGUAGE": "Tungumál",
     "HELP": {
-      "WELCOMEMESSAGE": "This is the first response message sent to new interactions",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Mandatory disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled"
+      "WELCOMEMESSAGE": "Þetta eru fyrstu svarskilaboðin sem send eru vegna nýrra samskipta",
+      "MOTIONPROXY": "Reiturinn verður að hafa eftirfarandi snið: <samskiptareglur>://<ipadress>[:<gátt>]. Dæmi: https://X.Y.Z.W",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "LIST": "Tengiliðalisti notaður til að tengja tengiliði",
+      "RECEIVEURL": "Þetta er sjálfvirkt myndaður API strengur sem þú þarft að nota til að fá skilaboðin inni á reikninginn þinn frá SMS þjónustuveitunni þinni (nota verður POST aðferð): smelltu á klemmuspjaldhnappinn til að afrita hann",
+      "DELIVERYREPORTURL": "Þetta er sjálfvirki API-strengurinn sem þú þarft að nota til að fá sendingarskýrslu sendra skilaboða frá SMS-veitunni þinni (nota verður POST-aðferð): smelltu á klemmuspjald hnappinn til að afrita hann",
+      "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé til að nota þegar skilyrt ráðstöfun er virkjuð"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "LASTMESSAGE": "Last message",
-    "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "GOTO": "Goto",
-    "GOTOIF": "Gotoif",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á síðu",
+    "OF": "Af",
+    "TEAMADD_SMSQUEUE": "Bæta við hópi í SMS röð",
+    "AGENTADD_SMSQUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "ALL_AGENTS": "allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "RECEIVEURL": "Móttöku URL",
+    "INTERACTION": "Samskipti",
+    "INTERACTIONS": "Samskipti",
+    "NO_INTERACTION_AVAILABLE": "Engin samskipti til staðar",
+    "CONTACT": "Tengiliður",
+    "STARTEDAT": "Byrjað kl.",
+    "LASTMESSAGE": "Síðustu skilaboð",
+    "AGENT": "Fulltrúi",
+    "CLOSEDAT": "Lokað kl.",
+    "DISPOSITION": "Til ráðstöfunar",
+    "NOTES": "Skilaboð",
+    "GOTO": "Farðu á",
+    "GOTOIF": "Farðu á ef",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "QUEUE": "Röð",
+    "TIMEOUT": "Tíminn rann út",
+    "VALUE": "Gildi",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "EDIT_GOTO": "Breyta Goto",
+    "EDIT_NOOP": "Breyta Noop",
+    "EDIT_GOTOIF": "Breyta Gotoif",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "CONDITION": "Skilyrði",
+    "TRUEPRIORITY": "Rétt forgangsröðun",
+    "FALSEPRIORITY": "Falskur forgangur",
+    "PRIORITY": "Forgangur",
+    "GOTOP": "Farðu efst",
+    "EDIT_GOTOP": "Breyta Gotop",
+    "EDIT_CLOSE": "Breyta lokun",
+    "FILTER": "Sía",
+    "SELECT_STATUS": "Veldu stöðu",
+    "ALL": "Allir",
+    "SELECT_ACCOUNT": "Veldu reikning",
+    "OPENED": "Opin",
+    "CLOSED": "Lokað",
+    "STATUS": "Staða",
+    "ACCOUNT": "Reikningur",
+    "OPEN": "Opin",
+    "INFO": "Upplýsingar",
+    "ACCOUNTSID": "Reiknings SID",
+    "AUTHTOKEN": "Auðkennis Token",
+    "UNKNOWN": "Óþekkt",
+    "UNREGISTERED": "Óskráð",
+    "UNAVAILABLE": "Ekki tiltækt",
+    "NOT_INUSE": "Ekki í notkun",
+    "REACHABLE": "Hægt að ná í",
+    "IN_USE": "Í notkun",
+    "AGENTS": "Fulltrúar",
+    "QUEUES": "Raðir",
+    "FULLNAME": "Fullt nafn",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Síma staða",
+    "PAUSE": "Hlé",
+    "LOGOUT": "Útskrá",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "UNPAUSE": "Enda hlé",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "LOGGED_IN": "Innskráður",
+    "PAUSED": "Hlé",
+    "READY": "Tilbúið",
+    "WAITING": "Bíður",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
+    "MAIL": "Netfang",
+    "OPENCHANNEL": "Opin ráð",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+    "AGENTSADD_QUEUE": "Bættu við fulltrúa í SMS biðröð",
+    "INTERACTIONS_SMSACCOUNT": "Farðu í samskipti",
+    "REFRESH_INTERACTIONS": "Endurnýjið samskipti",
+    "DELETE_INTERACTION": "\nEyða samskiptum",
+    "AGENTADD_SMSACCOUNT": "Bættu við fulltrúa í SMS reikning",
+    "TEAMS_ASSOCIATION": "Meðlimir hópa",
+    "DOWNLOAD_WITH_ATTACHMENT": "Niðurhal með viðhengi",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Niðurhal án viðhengis"
   }
 }
index 6d60e30..8ae7525 100644 (file)
@@ -4,61 +4,61 @@
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
     "TRANSFER": "Transferir",
-    "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
+    "QUEUETRANSFER": "Transferência de Fila",
+    "QUEUETRANSFERTIMEOUT": "Timeout de Transferência da fila",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de Transferência de Agente",
     "TAG": "Tag",
     "EDIT_TAG": "Editar Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuição ao agente",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSOUND": "Som",
-    "NOTIFICATIONSHAKE": "Tremer",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
     "EDIT_SYSTEM": "Editar Sistema",
     "COMMAND": "Comando",
     "VARIABLE": "Variável",
     "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "CANNEDANSWERS": "Resposta Pronta",
-    "SMSCANNEDANSWERS": "Resposta Pronta",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
-    "NEW_SMSCANNEDANSWER": "Nova Resposta Pronta",
-    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pronta",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "CANNEDANSWERS": "Resposta Pré-definida",
+    "SMSCANNEDANSWERS": "Resposta Pré-definida",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Não há respostas pré-definida disponíveis",
+    "NEW_SMSCANNEDANSWER": "Nova Resposta Pré-definida",
+    "ADD_SMSCANNEDANSWER": "Adicionar Resposta Pré-definida",
     "EDIT_SMSCANNEDANSWER": "Editar",
     "DELETE_SMSCANNEDANSWER": "Excluir",
-    "DELIVERYREPORTURL": "URL do relatório de entrega",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega",
     "DELETE": "Ecluir",
-    "SENDERSTRING": "Cadeia de Remetente",
-    "DELIVERYREPORT": "Relatório de entrega",
+    "SENDERSTRING": "String do Emissor",
+    "DELIVERYREPORT": "Relatório de Entrega",
     "METHOD": "Método",
-    "ADD_NOTE": "Adicionar nota",
-    "NOTE": "Nota",
-    "SPYINTERACTION": "Espião",
-    "AUTOREPLY": "Resposta automatica",
-    "EDIT_AUTOREPLY": "Editar Resposta automatica",
+    "ADD_NOTE": "Adicionar Observação",
+    "NOTE": "Observação",
+    "SPYINTERACTION": "Espiar",
+    "AUTOREPLY": "Auto Resposta",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
     "TIMES": "Número de vezes por interação",
     "TEXT": "Texto",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta predefinida foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta automática",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta Pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite um texto para pesquisar uma resposta pré-definida",
     "SEND": "Enviar",
     "TO": "Para",
     "MESSAGE": "Mensagem",
     "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "GOTOREALTIME_SMSQUEUE": "Ir para a fila de SMS em tempo real",
-    "PARTIALPAUSE": "Pausa parcial",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "GOTOREALTIME_SMSQUEUE": "Visualizar Fila de SMS em Tempo Real",
+    "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "PROXY": "Proxy",
     "ADVANCED": "Avançado",
     "MOTIONPROXY": "Proxy ou Dominio do Motion",
     "REALTIME": "Tempo Real",
-    "KEY": "Key",
+    "KEY": "Chave",
     "NAME": "Nome",
     "SMSQUEUES": "Filas de SMS",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
-      "AUTHID_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "AUTHID_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "SENDERSTRING_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SENDERSTRING_MUST_VALID_PATTERN": "Formato incorreto",
-      "METHOD_REQUIRED": "Campo Obrigatório",
-      "MOTIONPROXY_REQUIRED": "Campo Obrigatório",
+      "METHOD_REQUIRED": "Campo obrigatório",
+      "MOTIONPROXY_REQUIRED": "Campo obrigatório",
       "MOTIONPROXY_MUST_VALID_URL": "Formato incorreto",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "PHONE_REQUIRED": "Campo Obrigatório",
-      "SID_REQUIRED": "Campo Obrigatório",
-      "TOKEN_REQUIRED": "Campo Obrigatório",
-      "USERNAME_REQUIRED": "Campo Obrigatório",
-      "PASSWORD_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "PHONE_REQUIRED": "Campo obrigatório",
+      "SID_REQUIRED": "Campo obrigatório",
+      "TOKEN_REQUIRED": "Campo obrigatório",
+      "USERNAME_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
-      "TYPE_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTSID_REQUIRED": "Campo Obrigatório",
-      "AUTHTOKEN_REQUIRED": "Campo Obrigatório",
-      "APIKEY_REQUIRED": "Campo Obrigatório",
-      "BASEURL_REQUIRED": "Campo Obrigatório",
+      "TYPE_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "ACCOUNTSID_REQUIRED": "Campo obrigatório",
+      "AUTHTOKEN_REQUIRED": "Campo obrigatório",
+      "APIKEY_REQUIRED": "Campo obrigatório",
+      "BASEURL_REQUIRED": "Campo obrigatório",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "ACCESSKEYID_REQUIRED": "O código da chave de acesso é obrigatório",
+      "ACCESSKEYID_REQUIRED": "ID da Chave de Acesso é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
       "SECRETACCESSKEY_REQUIRED": "É necessário segredo da chave de acesso",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTID_REQUIRED": "Campo Obrigatório",
-      "APPLICATIONID_REQUIRED": "Campo Obrigatório"
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "ACCOUNTID_REQUIRED": "Campo obrigatório",
+      "APPLICATIONID_REQUIRED": "Campo obrigatório"
     },
-    "AGENT_TIMEOUT": "Tempo limite do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "DESCRIPTION": "Descrição",
-    "ADD_SMSQUEUE": "Adicionar fila de SMS",
-    "EDIT_SMSQUEUE": "Editar fila do SMS",
-    "DELETE_SMSQUEUE": "Excluir fila do SMS",
+    "ADD_SMSQUEUE": "Adicionar Fila de SMS",
+    "EDIT_SMSQUEUE": "Editar Fila de SMS",
+    "DELETE_SMSQUEUE": "Excluir Fila de SMS",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
     "CREATED_AT": "Criado em",
     "SMSTYPE": "Tipo de SMS",
     "USERNAME": "Usuário",
     "PASSWORD": "Senha",
-    "MOTIONADDRESS": "Endereço Motion",
-    "ADD_SMSACCOUNT": "Adicionar conta SMS",
-    "EDIT_SMSACCOUNT": "Editar conta SMS",
-    "DELETE_SMSACCOUNT": "Excluir conta SMS",
+    "MOTIONADDRESS": "Endereço do Motion",
+    "ADD_SMSACCOUNT": "Adicionar Conta de SMS",
+    "EDIT_SMSACCOUNT": "Editar Conta do SMS",
+    "DELETE_SMSACCOUNT": "Excluir Conta de SMS",
     "LIST": "Lista",
     "FIDELITY": "Fidelidade",
     "API": "API",
-    "DISPOSITIONS": "Disposições",
+    "DISPOSITIONS": "Qualificações",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Ações",
     "ACCEPT": "Aceitar",
-    "ACCEPTMETHOD": "Aceitar Método",
-    "ACCEPTURL": "Aceitar URL",
+    "ACCEPTMETHOD": "Método de Aceite",
+    "ACCEPTURL": "URL de Aceite",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Método",
-    "REJECTURL": "Rejeitar URL",
-    "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Método",
-    "CLOSEURL": "Fechar URL",
+    "REJECTMETHOD": "Método de Rejeição",
+    "REJECTURL": "URL de Rejeição",
+    "CLOSE": "Encerrar",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar todos",
+    "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Selecionar Nenhum",
     "BACK": "Voltar",
     "SMS": "SMS",
     "ID": "Id",
     "CONFIRM_PASSWORD": "Confirmar Senha",
-    "SMSDISPOSITIONS": "Disposições do SMS",
-    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma disposição de SMS disponível",
-    "NEW_SMSDISPOSITION": "Nova disposição de SMS",
-    "ADD_SMSDISPOSITION": "Adicionar disposição de SMS",
-    "EDIT_SMSDISPOSITION": "Editar disposição de SMS",
-    "DELETE_SMSDISPOSITION": "Excluir disposição de SMS",
-    "NEW_SMSQUEUE": "Nova fila de SMS",
-    "NEW_SMSACCOUNT": "Nova conta SMS",
+    "SMSDISPOSITIONS": "Qualificação de SMS",
+    "NO_SMSDISPOSITION_AVAILABLE": "Nenhuma qualificação de SMS disponível",
+    "NEW_SMSDISPOSITION": "Nova Qualificação de SMS",
+    "ADD_SMSDISPOSITION": "Adicionar Qualificação de SMS",
+    "EDIT_SMSDISPOSITION": "Editar Qualificação de SMS",
+    "DELETE_SMSDISPOSITION": "Excluir Qualificação de SMS",
+    "NEW_SMSQUEUE": "Nova Fila de SMS",
+    "NEW_SMSACCOUNT": "Nova Conta de SMS",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "HELP": {
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "LIST": "Lista do Gerenciador de contatos usada para associar contatos",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
       "RECEIVEURL": "Esta é a string da API gerada automaticamente que você precisa usar para receber as mensagens dentro da sua conta do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas do seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-      "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
+      "DELIVERYREPORTURL": "Essa é a string da API gerada automaticamente que você precisa usar para receber o relatório de entrega das mensagens enviadas pelo seu provedor de SMS (o método POST deve ser usado): clique no botão da área de transferência para copiá-lo",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa para quando a Qualificação obrigatória estiver habilitado",
+      "WELCOMEMESSAGE": "Esta é a primeira mensagem enviada para novas interações"
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "TEAMADD_SMSQUEUE": "Adicionar equipe à fila do SMS",
-    "AGENTADD_SMSQUEUE": "Adicionar agente à fila do SMS",
-    "ALL_AGENTS": "Todos os agentes",
+    "TEAMADD_SMSQUEUE": "Adicionar Equipe à Fila de SMS",
+    "AGENTADD_SMSQUEUE": "Adicionar Agente à Fila de SMS",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "RECEIVEURL": "Receber URL",
+    "RECEIVEURL": "URL para Recebimento",
     "INTERACTION": "Interação",
     "INTERACTIONS": "Interações",
     "NO_INTERACTION_AVAILABLE": "Não há interações disponíveis",
     "CONTACT": "Contato",
     "STARTEDAT": "Começou às",
     "AGENT": "Agente",
-    "CLOSEDAT": "Fechado em",
-    "DISPOSITION": "Disposição",
-    "NOTES": "Notas",
+    "CLOSEDAT": "Encerrado em",
+    "DISPOSITION": "Qualificação",
+    "NOTES": "Observações",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Fila",
-    "TIMEOUT": "Tempo esgotado",
+    "TIMEOUT": "Timeout",
     "VALUE": "Valor",
     "EDIT_AGENT": "Editar Agente",
     "EDIT_GOTO": "Editar Goto",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
-    "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
+    "FALSEPRIORITY": "ID de Prioridade caso Falso",
     "PRIORITY": "Prioridade",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Editar Gotop",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar Encerramento",
     "FILTER": "Filtro",
-    "SELECT_STATUS": "Selecionar um status",
+    "SELECT_STATUS": "Selecionar Status",
     "ALL": "Tudo",
     "SELECT_ACCOUNT": "Selecionar uma Conta",
     "OPENED": "Aberto",
-    "CLOSED": "Fechado",
+    "CLOSED": "Encerrado",
     "STATUS": "Status",
     "ACCOUNT": "Conta",
     "OPEN": "Abrir",
-    "INFO": "Informação",
+    "INFO": "Info",
     "ACCOUNTSID": "Conta SID",
     "AUTHTOKEN": "Auth Token",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
-    "NOT_INUSE": "Fora de uso",
+    "NOT_INUSE": "Disponível",
     "REACHABLE": "Alcançável",
-    "IN_USE": "Em uso",
+    "IN_USE": "Ocupado",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "FULLNAME": "Nome Completo",
     "PHONE_STATUS": "Status do Telefone",
     "PAUSE": "Pausa",
     "LOGOUT": "Sair",
-    "AGENTADD_QUEUE": "Adicionar agente à fila do SMS",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila de SMS",
     "UNPAUSE": "Finalizar Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
     "LOGGED_IN": "Logado",
     "VOICE": "Voz",
     "CHAT": "Chat",
     "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do SMS",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila de SMS",
     "INTERACTIONS_SMSACCOUNT": "Ir para Interações",
     "REFRESH_INTERACTIONS": "Atualizar Interações",
-    "DELETE_INTERACTION": "Excluir interação",
-    "AGENTADD_SMSACCOUNT": "Adicionar agente à conta do SMS",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "AGENTADD_SMSACCOUNT": "Adicionar Agente à Conta do SMS",
     "APIKEY": "Chave API",
-    "BASEURL": "URL base",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "MANDATORYDISPOSITION": "Disposição obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar quando a disposição obrigatória estiver ativada",
-    "ACCESSKEYID": "ID da chave de acesso",
+    "BASEURL": "URL Base",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a Qualificação obrigatória estiver habilitada",
+    "ACCESSKEYID": "ID da Chave de Acesso",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Nome do bot",
     "DIALOGFLOW": "DialogFlow",
-    "EDIT_AMAZONLEX": "Editar configuração de Lex",
+    "EDIT_AMAZONLEX": "Editar configuração da AmazonLex",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
-    "LANGUAGE": "Língua",
+    "LANGUAGE": "Idioma",
     "LEXREGION": "Região",
-    "SECRETACCESSKEY": "Segredo da chave de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "WELCOMEMESSAGE": "Mensagem de boas-vindas",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
-    "CLIENTEMAIL": "Email do cliente",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "ACCOUNTID": "ID da conta",
-    "APPLICATIONID": "ID do aplicativo"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "ACCOUNTID": "ID da Conta",
+    "APPLICATIONID": "ID do Aplicativo"
   }
 }
index a6290e6..6b28606 100644 (file)
     "ALL_QUEUES_OPENCHANNEL_INBOUND": "Svi Otvoreni Kanal Queues",
     "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Odabrani Otvoreni Kanal Queues",
     "ALL_QUEUES_FAX_INBOUND": "Svi Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues"
+    "SELECTED_QUEUES_FAX_INBOUND": "Odabrani Fax Queues",
+    "ALIAS": "Pseudonim",
+    "AUTO_ANSWER": "Automatski odgovor",
+    "CHAT_AUTOANSWER": "Chat automatski odgovor",
+    "ENABLEJAWSINTEGRATION": "Omogući Jaws Intergraciju",
+    "NO_PASSWORD_CHANGE": "Nema Promjene Lozinke",
+    "OLD_PASSWORD": "Stara Lozinka",
+    "SECURITY_SUITE": "Sigurnosni Suite"
   }
 }
index 16c4dd6..6c4a62c 100644 (file)
 {
   "STAFF": {
-    "MANAGE_API_KEY": "API Key Manager",
-    "GENERATE": "Generate",
-    "REGENERATE": "Regenerate",
-    "REMOVE": "Remove",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "APIKEY": "API Key",
-    "VIDEOSUPPORT": "Video support",
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEOECORDING": "Enable Video Recording",
-    "ENABLESCREENRECORDINGBYAGENT": "Enable Screen Recording by Agent",
-    "ENABLEAUTOMATICSCREENRECORDING": "Enable Automatic Screen Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "MANAGE_API_KEY": "API lykil stjórnandi",
+    "GENERATE": "\nStofna",
+    "REGENERATE": "Endurgera",
+    "REMOVE": "Fjarlægja",
+    "APIKEYMANAGER_USER": "API lykil stjórnandi",
+    "APIKEY": "API lykill",
+    "VIDEOSUPPORT": "Video stuðningur",
+    "HOTDESK": "Hjálpar borð",
+    "ENABLEVIDEOECORDING": "Virkja Video upptökur",
+    "ENABLESCREENRECORDINGBYAGENT": "Virkja skjá upptöku eftir fulltrúum",
+    "ENABLEAUTOMATICSCREENRECORDING": "Heimila sjálfvirka skjá upptöku",
+    "OLD_PASSWORD": "Gamla lykilorðið",
+    "ENABLEJAWSINTEGRATION": "Heimila Jaws samþáttun",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "AUTO_ANSWER": "Auto answer",
-    "CHAT_AUTOANSWER": "Chat auto answer",
-    "CHAT_AUTOANSWERDELAY": "Chat auto answer delay [s]",
-    "EMAIL_AUTOANSWER": "Email auto answer",
-    "EMAIL_AUTOANSWERDELAY": "Email auto answer delay [s]",
-    "SMS_AUTOANSWER": "Sms auto answer",
-    "SMS_AUTOANSWERDELAY": "Sms auto answer delay [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchannel auto answer",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Openchannel auto answer delay [s]",
-    "FAX_AUTOANSWER": "Fax auto answer",
-    "FAX_AUTOANSWERDELAY": "Fax auto answer delay [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp connector auto answer",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp connector auto answer delay [s]",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Engin lykilorðsbreyting",
+    "SECURITY_SUITE": "Öryggissvíta",
+    "AUTO_ANSWER": "sjálf virkt svar",
+    "CHAT_AUTOANSWER": "Spjall sjálfvirkt svar",
+    "CHAT_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari í spjalli [s]",
+    "EMAIL_AUTOANSWER": "Sjálfvirkt svar á tölvupósti",
+    "EMAIL_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari tölvupósts [s]",
+    "SMS_AUTOANSWER": "SMS sjálfvirkt svar",
+    "SMS_AUTOANSWERDELAY": "Seinkun á sjálfvirku SMS svari [s]",
+    "OPENCHANNEL_AUTOANSWER": "Openchannel sjálfvirkt svarr",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Seiknkun á Openchannel sjálfvirku svari [s]",
+    "FAX_AUTOANSWER": "Fax sjálfvirkt svar",
+    "FAX_AUTOANSWERDELAY": "Seinkun á sjálfvirku svari á Faxi [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp connector Sjálfvirkt svar",
+    "WHATSAPP_AUTOANSWERDELAY": "Seinkun á Whatsapp sjálfvirku svari [s]",
+    "LAST_PASSWORD_RESET_AT": "Síðasta lykilorð endurstillt kl.",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Stillingar",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
+    "DTLSCERTFILE": "TLS Vottun",
+    "DTLSPRIVATEKEY": "TLS persónulykill vottunar",
+    "CONTEXT": "Innihald",
+    "RINGINUSE": "Hringitónn í notkun",
+    "USERS": "Notendur",
+    "AGENTS": "Fulltrúi",
     "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
+    "SEARCH_FOR_ANYONE": "Leyta",
+    "BACK": "til baka",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Velja ekkert",
+    "SELECTED": "Valið",
+    "DELETE_SELECTED": "Eyða völdu",
+    "EXPORT_SELECTED": "Flytja út valið",
+    "ALL_USERS": "Allir notendur",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SORT": "Tegund",
+    "NAME": "Nafn",
+    "FULLNAME": "Fullt nafn",
     "A_TO_Z": "(A to Z)",
     "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "Delete",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
+    "MORE": "Meira",
+    "DELETE_USER": "Eyða notanda",
+    "EDIT_USER": "Breyta notanda",
+    "DELETE_AGENT": "Eyða fulltrúa",
+    "EDIT_AGENT": "Breyta fulltrúa",
+    "DELETE": "Eyða",
+    "SAVE": "Geyma",
+    "ADD_USER": "bæta við notanda",
+    "ADD_AGENT": "Bæta við Fulltrúa",
+    "NO_RESULTS": "Engin niðurstaða..",
+    "CLOSE_DIALOG": "Lokaðu glugganum",
+    "NAME_REQUIRED": "Nafn (skilyrt)",
+    "USERNAME": "Notandanafn",
+    "SHOW_ALL_FIELDS": "Sýna alla reiti",
+    "PHONE_NUMBER": "Síma númer",
+    "EMAIL": "Tölvupóstur",
+    "PASSWORD": "Lykilorð",
     "ERRORS": {
-      "CONFIRM_REQUIRED": "Mandatory field",
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!@#$%^&-_=+[{]}.",
-      "CRUDPERMISSIONS_REQUIRED": "Mandatory field",
-      "USERPROFILE_REQUIRED": "Mandatory field",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "CONFIRM_REQUIRED": "Skilyrtur reitur",
+      "ALLOWCODECS_REQUIRED": "Skilyrtur reitur",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "DTLSCERTFILE_REQUIRED": "Skilyrtur reitur",
+      "DTLSPRIVATEKEY_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "ACCOUNTNAME_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "MAILCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "FAXCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SMSCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "WHATSAPPCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "OPENCHANNELCAPACITY_REQUIRED": "Skilyrtur reitur",
+      "SIPEXPIRES_REQUIRED": "Skilyrtur reitur",
+      "SIPPORT_REQUIRED": "Skilyrtur reitur",
+      "UNCONDITIONALNUMBER_REQUIRED": "Skilyrtur reitur",
+      "NOREPLYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "BUSYNUMBER_REQUIRED": "Skilyrtur reitur",
+      "USERNAME_MUST_VALID_PATTERN": "Rangt snið {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Skilyrtur reitur",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið þar að vera stærra en eða jafnt og",
+      "AUTOANSWERDELAY_REQUIRED": "Skilyrtur reitur",
+      "MONITOREXTENSION_REQUIRED": "Skilyrtur reitur",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!@#$%^&-_=+[{]}.",
+      "CRUDPERMISSIONS_REQUIRED": "Skilyrtur reitur",
+      "USERPROFILE_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_OLDPASSWORD_MATCH": "Nýtt lykilorð það vera annað en það eldra"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
-    "DISABLED": "Deactivated",
-    "BLOCKED": "Locked",
+    "ACCOUNT": "Reikningur",
+    "VOICE": "Tal",
+    "CREATED_AT": "Stofnað kl.",
+    "ROLE": "Hlutverk",
+    "PERSONAL_INFO": "Persónu upplýsingar",
+    "DESCRIPTION": "Lýsing",
+    "CHANGE_AVATAR": "Breyta Avatar",
+    "GENERAL": "Almennt",
+    "INTERNAL": "Innanhúss",
+    "TRANSPORT": "Flytja",
+    "ALLOWCODECS": "Leyfiðir kódekar",
+    "DISABLED": "Óvirkt",
+    "BLOCKED": "Læst/lokað",
     "AD_SSO_ENABLED": "Active Directory SSO",
-    "AUTHENTICATION": "Authentication",
+    "AUTHENTICATION": "Auðkenning",
     "HELP": {
-      "DISABLED": "select to deactivate / unselect to reactivate",
-      "BLOCKED": "Lock / Unlock access",
-      "APIKEY": "Please use 'API key manager' button on toolbar to manage this key",
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
-      "SIPPORT": "Default: 5160",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "SAVE_PERMISSIONS": "Every section containing any pending changes will be saved",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Custom Dashboards permissions are managed in the Tools module",
-      "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
-      "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
-      "WSS_PORT": "Default: 8089",
-      "AD_SSO_ENABLED": "Login in with your Active Directory credentials"
+      "DISABLED": "veldu til að slökkva á / afvelja til að virkja aftur",
+      "BLOCKED": "Læsa / opna aðgang",
+      "APIKEY": "Vinsamlegast notaðu 'API lyklastjórnunar' hnappinn á tækjastikunni til að stjórna þessum lykli",
+      "LAST_PASSWORD_RESET_AT": "Síðasta dagsetning og tími sem lykilorðinu var breytt. Ef Almennarstillingar Secure Suite er virkjaðar mun lykilorðið renna út eftir 90 daga.",
+      "DTLSCERTFILE": "Tengill á gilt TLS vottorð (.crt skrá). Sjálfgefið gildi: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Tengill á persónulykil vottorðsins (.key skrá). Sjálfgefið gildi: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Leyfðir kódekar í forgangsröð",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga í forgangsröð",
+      "HOST": "Hvernig á að finna viðskiptavininn - IP eða hýsingarheiti. Ef þú vilt að síminn skrái sig sjálfvirkt, notaðu lykilorðið dynamic í stað Host IP",
+      "NAT": "Breytir hegðun Asterisk fyrir viðskiptavini á bak við eldvegg. Ef einhver af kommu aðskildu valkostunum er „nei“ mun Asterisk hunsa aðrar stillingar og setja nat=nei",
+      "SIPEXPIRES": "Sjálfgefið: 160",
+      "SIPPORT": "Sjálfgefið: 5160",
+      "TYPE": "\nÁkveður SIP hlutverk innan Asterisk. Notandi: notaður til að sannvotta móttekinn - Jafningi: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra",
+      "CHATCAPACITY": "Hámarksfjöldi samtíma rásasamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "MAILCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "FAXCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "SMSCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "WHATSAPPCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "OPENCHANNELCAPACITY": "Hámarksfjöldi samtíma rásarsamskipta á hvern fulltrúa (0=ótakmarkað)",
+      "CALLGROUP": "Símtalshópur fulltrúans",
+      "PICKUPGROUP": "Hóparnir þar sem fulltrúinn getur svarað símtölum í",
+      "USERNAME": "\nAðeins tölur, stafir og sérstök tákn (._) eru studdir",
+      "ENCRYPTION": "SRTP (Secure Realtime Protocol) dulkóðun",
+      "SAVE_PERMISSIONS": "Sérhver eining sem inniheldur breytingar í bið verður vistaður",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Sérsniðnum mælaborðum er stjórnað Tools einingunni",
+      "ENABLEAUTOMATICSCREENRECORDING": "Aðgerðin er aðeins í boði fyrir talrásir",
+      "MASK_SENSITIVE_DATA": "Feldu öll viðkvæm gögn í gegnum forritið (t.d. símanúmer og netföng)",
+      "WSS_PORT": "Sjálfgefið: 8089",
+      "AD_SSO_ENABLED": "Skráðu þig inn með Active Directory skilríkjunum þínum"
     },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "CONFIRM_PASSWORD": "Staðfestu lykilorð",
+    "CHANGE_PASSWORD": "Breyta lykilorði",
+    "CHANGEPASSWORD_AGENT": "Breyta lykilorði",
+    "CHANGEPASSWORD_USER": "Breyta lykilorði",
+    "CHANGEPASSWORD_TELEPHONE": "Breyta lykilorði",
+    "LOGININPAUSE": "Innskránig á hlé",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
+    "OTHER_CHANNELS": "Aðrar rásir",
+    "CHATCAPACITY": "Spjall fjöldi",
+    "MAILCAPACITY": "Fjöldi tölvupósta leyfilegur",
+    "FAXCAPACITY": "Fax geta",
+    "SMSCAPACITY": "SMS geta",
     "WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
+    "OPENCHANNELCAPACITY": "Open Channel magn",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "ENABLESETTINGS": "Leyfa stillingar",
+    "CALL_FORWARDING": "Áframsending",
+    "UNCONDITIONAL": "Skilyrðislaust",
+    "UNCONDITIONALNUMBER": "\nSkilyrðislaust númer",
+    "NOREPLY": "Ekkert svar",
+    "NOREPLYNUMBER": "Ekkert svar",
+    "BUSY": "Upptekið",
+    "BUSYNUMBER": "Á tali",
+    "REMOTE_CONTROL": "Fjarstýra",
+    "REMOTECONTROL": "Fjarstýra",
+    "REMOTECONTROLPORT": "Port fyrir Remote Control",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP rennur út [sec]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Add Agent to WhatsApp Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_WHATSAPP_QUEUES": "All WhatsApp Queues",
-    "SELECTED_WHATSAPP_QUEUES": "Selected WhatsApp Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
+    "PENALTY": "Refsing",
+    "ACCOUNTNAME": "Reikningsnafn",
+    "ADD_TELEPHONE": "Bæta við síma",
+    "EDIT_TELEPHONE": "Breyta síma",
+    "DELETE_TELEPHONE": "Eyða númeri",
+    "TEAMS": "Hópar",
+    "DELETE_TEAM": "Eyða hóp",
+    "AGENTADD_TEAM": "Bæta fulltrúa við hóp",
+    "EDIT_TEAM": "Breyta hópi",
+    "TYPE": "Tegund",
+    "TELEPHONES": "símar",
+    "CALLERID": "Auðkenni úthringjara",
+    "ENABLERECORDING": "Virkja upptöku",
+    "STAFF": "Starfsfólk",
+    "ID": "Auðkenni",
+    "NEW_USER": "Nýr notandi",
+    "NEW_AGENT": "Nýr fulltrúi",
+    "NEW_TELEPHONE": "Nýr sími",
+    "NEW_TEAM": "Nýr hópur",
+    "ADD_TEAM": "Bæta við hóp",
+    "JOIN_QUEUE": "Skráðu þig í biðröina",
+    "CAPACITY": "Geta",
+    "AUTOINTERNAL": "Búðu til innanhússnúmer sjálfvirkt",
+    "ADD_AGENT_TO_TEAM": "Bæta við fulltrúa í hóp",
+    "TEAMADD_AGENT": "Bættu fulltrúa við hóp",
+    "NO_AVAILABLE_INFO": "\nEngar tiltækar upplýsingar",
+    "PERMISSIONS": "Heimildir",
+    "ADD_AGENT_TO_QUEUE": "Bæta fulltrúa við í biðröð",
+    "ALL_MODULES_AVAILABLE": "Allar einingar aðgengilegar",
+    "CALLGROUP": "Hringi hópur",
+    "PICKUPGROUP": "Pickup hópur",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Bæta við fulltrúa í herferðar biðröð",
+    "ADD_AGENT_TO_VOICE_QUEUES": "bæta við fulltrúa í síma biðröð",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Bæta við fulltrúa í spjall rás",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Bæta við fulltrua í póstbiðröð",
+    "ADD_AGENT_TO_SMS_QUEUES": "Bæta við fulltrúa í SMS biðröð",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "bæta við fulltrúa í WhatsApp biðröð",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Bæta við fulltrúa í Open Channel biðraðir",
+    "ADD_AGENT_TO_FAX_QUEUES": "Bæta við fulltrúa í Fax rás",
+    "QUEUEADD_USER_VOICE_INBOUND": "Bættu notanda við tal biðraðir",
+    "QUEUEADD_USER_CHAT_INBOUND": "Bættu notanda við spjall biðraðir",
+    "QUEUEADD_USER_MAIL_INBOUND": "Bættu notanda við tölvupóst biðraðir",
+    "QUEUEADD_USER_SMS_INBOUND": "Bættu notanda við SMS biðraðir",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Bættu notanda við WhatsApp biðraðir",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Bættu notanda við Open Channel biðraðir",
+    "QUEUEADD_USER_FAX_INBOUND": "bættu notanda við Fax biðraðir",
+    "ALL_TEAMS": "Allir hópar",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "ALL_QUEUE_CAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUE_CAMPAIGNS": "Valdar herferða biðraðir",
+    "ALL_VOICE_QUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICE_QUEUES": "Valdar tal biðraðir",
+    "ALL_CHAT_QUEUES": "Allar spjall biðraðir",
+    "SELECTED_CHAT_QUEUES": "Valdar spjall biðraðir",
+    "ALL_MAIL_QUEUES": "Allar tölvupóst biðraðir",
+    "SELECTED_MAIL_QUEUES": "Valdar tölvupóst raðir",
+    "ALL_SMS_QUEUES": "AAllar SMS biðraðir",
+    "SELECTED_SMS_QUEUES": "Valdar SMS biðraðir",
+    "ALL_WHATSAPP_QUEUES": "Allar WhatsApp biðraðir",
+    "SELECTED_WHATSAPP_QUEUES": "Valdar WhatsApp biðraðir",
+    "ALL_OPENCHANNEL_QUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNEL_QUEUES": "SValdar Open Channel biðraðir",
+    "ALL_FAX_QUEUES": "Allar Fax biðraðir",
+    "SELECTED_FAX_QUEUES": "Valdar Fax biðraðir",
+    "VOICEMAIL": "Talskilaboð",
     "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á bls.",
+    "OF": "af",
+    "CALLFORWARDING": "Áframsending",
+    "DND": "Ónáðið ekki á meðan hlé er",
+    "UNANSWEREDCALLBADGE": "Sýna merkingu á ósvörðum símtölum",
+    "ENABLEDTMFTONE": "Heimila Dtmf tóna",
+    "AUTOANSWERDELAY": "Seinkun á sjálfvirku svari [s]",
+    "ENCRYPTION": "Dulkóðun",
+    "CHANNELS": "Rásir",
+    "CHAT": "Spjall",
+    "SMS": "SMS",
     "WHATSAPP": "WhatsApp Connector",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READ_PERMISSION": "Read",
-    "EDIT_PERMISSION": "Edit",
-    "DELETE_PERMISSION": "Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Bættu notanda við herferða biðraðir",
+    "MONITOREXTENSION": "Upptaka er á notanda aðgangi",
+    "EDITPERMISSIONS": "Breyta heimildum",
+    "READ_PERMISSION": "Lesa",
+    "EDIT_PERMISSION": "Breyta",
+    "DELETE_PERMISSION": "Eyða",
+    "GENERAL_PERMISSIONS": "almennt",
+    "ENABLEMESSENGER": "Heimila innanhúss Messenger",
     "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
+    "PHONE": "Sími",
     "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
-    "ALL_WHATSAPPQUEUES": "All Whataspp Queues",
-    "SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
-    "ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
-    "SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "USERPROFILES": "User Profiles",
-    "USERPROFILE": "User Profile",
-    "NEW_USERPROFILE": "New User Profile",
-    "ADD_USERPROFILE": "Add User Profile",
-    "EDIT_USERPROFILE": "Edit User Profile",
-    "CLONE_USERPROFILE": "Clone User Profile",
-    "DELETE_USERPROFILE": "Delete User Profile",
-    "CRUDPERMISSIONS": "Permission Type",
-    "SECTIONS": "Sections",
-    "MODULES": "Modules",
-    "SUMMARY": "Summary",
-    "REPORT_TYPE": "Report Type",
-    "PERMISSIONS_MANAGE": "Manage",
-    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Permissions",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Automatically associate every current and future resource of this section to the User Profile",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Search...",
-    "PERMISSIONS_SELECT_SECTION": "Select a section",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Select report type",
-    "PERMISSIONS_ALL_RESOURCES": "All resources",
-    "PERMISSIONS_SELECTED_RESOURCES": "Selected resources",
-    "PERMISSIONS_SECTION_HIDE": "Hide section to the User",
-    "PERMISSIONS_SECTION_SHOW": "Show section to the User",
-    "PERMISSIONS_WARNING_ENABLE_ALL": "All {{sectionName}} subsections and their resources will be enabled. Are you sure you want to continue?",
-    "PERMISSIONS_WARNING_CLOSE": "You have unsaved changes. Are you sure you want to exit without saving?",
+    "PREFIXREQUIRED": "Forskeyti skilyrt",
+    "MANAGE_PERMISSIONS": "Stjórna aðgangsheimildum",
+    "USERADD_VOICEQUEUES": "Bæta við tal biðröð á notanda",
+    "ALL_VOICEQUEUES": "Allar tal biðraðir",
+    "SELECTED_VOICEQUEUES": "Valdar tal biðraðir",
+    "USERADD_CHATQUEUES": "Bæta við spjall rás á notanda",
+    "ALL_CHATQUEUES": "allar spjall rásir",
+    "SELECTED_CHATQUEUES": "Valdar tölvupósts biðraðir",
+    "USERADD_MAILQUEUES": "Bæta við tölvupósts biðröð á notanda",
+    "ALL_MAILQUEUES": "Allar tölvupósts biðraðir",
+    "SELECTED_MAILQUEUES": "Valdar spjall biðraðir",
+    "USERADD_SMSQUEUES": "Bæta við SMS biðröð á notanda",
+    "ALL_SMSQUEUES": "Allar SMS biðraðir",
+    "SELECTED_SMSQUEUES": "Valdar SMS biðraðir",
+    "USERADD_WHATSAPPQUEUES": "Bæta við Whataspp biðröð á notanda",
+    "ALL_WHATSAPPQUEUES": "Allar Whataspp biðraðir",
+    "SELECTED_WHATSAPPQUEUES": "Valdar WhatsApp biðraðir",
+    "USERADD_FAXQUEUES": "Bæta við Fax biðröð á notanda",
+    "ALL_FAXQUEUES": "Allar FAX biðraðir",
+    "SELECTED_FAXQUEUES": "Valdar Fax biðraðir",
+    "USERADD_OPENCHANNELQUEUES": "Bæta við Open Channel biðröð á notanda",
+    "ALL_OPENCHANNELQUEUES": "Allar Open Channel biðraðir",
+    "SELECTED_OPENCHANNELQUEUES": "Valdar Open Channel biðraðir",
+    "USERADD_PROJECTS": "Bæta við Cally Square verkefni á notanda",
+    "ALL_PROJECTS": "Öll Cally Square verkefni",
+    "SELECTED_PROJECTS": "Selected Cally Square verkefni",
+    "USERADD_CHATWEBSITES": "Bæta við spjall vefsíðu á notanda",
+    "ALL_CHATWEBSITES": "Allar spjall vefsíður",
+    "SELECTED_CHATWEBSITES": "Valdar spjall vefsíður",
+    "USERADD_QUEUECAMPAIGNS": "Bæta við biðraða herferð á notanda",
+    "ALL_QUEUECAMPAIGNS": "Allar herferða biðraðir",
+    "SELECTED_QUEUECAMPAIGNS": "Valdar biðraða herferðir",
+    "USERADD_MAILACCOUNTS": "Bæta við tölvpóst reikningi á notanda",
+    "ALL_MAILACCOUNTS": "Allir tölvupósts reikningar",
+    "SELECTED_MAILACCOUNTS": "Valdir tölvupósts reikningar",
+    "USERADD_FAXACCOUNTS": "Bæta við Fax reikningi á notanda",
+    "ALL_FAXACCOUNTS": "Allir FAX reikningar",
+    "SELECTED_FAXACCOUNTS": "Valdir Fax reikningar",
+    "USERADD_SMSACCOUNTS": "Bæta við SMS reikningi á notanda",
+    "ALL_SMSACCOUNTS": "Allir SMS reikningar",
+    "SELECTED_SMSACCOUNTS": "Valdir SMS reikningar",
+    "USERADD_WHATSAPPACCOUNTS": "Bæta við WhatsApp reikningi á notanda",
+    "ALL_WHATSAPPACCOUNTS": "Allir WhatsApp reikningar",
+    "SELECTED_WHATSAPPACCOUNTS": "Valdir WhatsApp reikningar",
+    "USERADD_OPENCHANNELACCOUNTS": "Bæta við Open Channel reikningi á notanda",
+    "ALL_OPENCHANNELACCOUNTS": "Allir Open Channel reikningar",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valdir Open Channel reikningar",
+    "USERPROFILES": "Stillingar notanda",
+    "USERPROFILE": "Stillingar notanda",
+    "NEW_USERPROFILE": "Ný notanda skilgreining",
+    "ADD_USERPROFILE": "Bæta við notanda sniði",
+    "EDIT_USERPROFILE": "Breyta notanda stillingum",
+    "CLONE_USERPROFILE": "Afritaðu notanda stillingar",
+    "DELETE_USERPROFILE": "Eyða stillingum notanda",
+    "CRUDPERMISSIONS": "Heimildar tegund",
+    "SECTIONS": "Svæði",
+    "MODULES": "Einingar",
+    "SUMMARY": "Samtala",
+    "REPORT_TYPE": "Skýrslu tegund",
+    "PERMISSIONS_MANAGE": "Stjórna",
+    "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Heimildir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Tengja sjálfkrafa hvert núverandi og framtíðar úrræði við notendaprófílinn",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Leita...",
+    "PERMISSIONS_SELECT_SECTION": "Veldu svæði",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Velja skýrslu tegund",
+    "PERMISSIONS_ALL_RESOURCES": "Öll úrræði",
+    "PERMISSIONS_SELECTED_RESOURCES": "Valdir möguleikar",
+    "PERMISSIONS_SECTION_HIDE": "Fela þennan hluta fyrir notandanum",
+    "PERMISSIONS_SECTION_SHOW": "Sýna þennann hluta notandanum",
+    "PERMISSIONS_WARNING_ENABLE_ALL": "Allir {{sectionName}} undirkaflar og aðgerðir þeirra verða virkjuð. Ertu viss um að þú viljir halda áfram?",
+    "PERMISSIONS_WARNING_CLOSE": "Þú ert með óvistaðar breytingar. Ertu viss um að þú viljir hætta án þess að vista?",
     "NOTIFICATIONS": {
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section enabled",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been added to {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} section disabled",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "All {{sectionName}} resources have been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} has been removed from {{userProfileName}} User Profile",
-      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} section saved",
-      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Permissions successfully updated!"
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti virkjaður",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "Öllum {{sectionName}} aðgengi hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} hefur verið bætt við {{userProfileName}} notandaprófílinn",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE": "{{sectionName}} hluti óvirkjað",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE": "Öll {{sectionName}} aðgengi hafa verið fjarlægð af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "\n{{sectionName}} hefur verið fjarlægt af {{userProfileName}} notandaprófílnum",
+      "PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} hluti vistaður",
+      "PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Heimildir uppfærðar!"
     },
-    "CONFIRM": "Confirm",
-    "CANCEL": "Cancel",
-    "CLOSE": "Close",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unauthorized action",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "You are not allowed to access the selected section",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "You are not allowed to create the resource",
-    "MASK_SENSITIVE_DATA": "Mask Sensitive Data",
+    "CONFIRM": "Staðfesta",
+    "CANCEL": "Hætta við",
+    "CLOSE": "Loka",
+    "QUEUES_ASSOCIATION": "{{channel}} Biðraðir",
+    "TEAMS_ASSOCIATION": "Meðlimir í hóp",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Óleyfileg aðgerð",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Þú hefur ekki leyfi til nota valið svæði",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Þú hefur ekki heimild til að stofna þennan möguleika",
+    "MASK_SENSITIVE_DATA": "Hylja viðkvæm gögn",
     "WSS_PORT": "WSS Port",
-    "DOWNLOADS": "Downloads",
-    "DOWNLOAD_PERMISSIONS": "Download Permissions",
-    "VOICE_RECORDINGS": "Voice Recordings",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel Interactions",
-    "ATTACHMENTS": "Attachments",
-    "SCREEN_RECORDINGS": "Screen Recordings",
+    "DOWNLOADS": "Niðurhal",
+    "DOWNLOAD_PERMISSIONS": "Leyfi til niðurhals",
+    "VOICE_RECORDINGS": "Upptaka á tali",
+    "OMNICHANNEL_INTERACTIONS": "Omnichannel samskipti",
+    "ATTACHMENTS": "Viðhengi",
+    "SCREEN_RECORDINGS": "Skjáupptaka",
     "JSCRIPTY_SESSIONS": "Jscripty Sessions",
-    "CONTACT_MANAGER_LISTS": "Contact Manager Lists",
-    "CALLYSQUARE_RECORDINGS": "Cally Square Recordings",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignore agent break status for preview calls",
-    "SELECT_RECALLME_CAMPAIGN": "Select Recall Me Campaign",
-    "CLIENT_LOGS": "Client Logs",
-    "CLIENT_LOGS_DISABLED": "Client logs are disabled",
-    "CLIENT_LOGS_ENABLED": "Client logs are enabled",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Select min logging level (severity)",
-    "CLIENT_LOGS_LOGLEVEL": "Log level: {{logLevel}}",
-    "CLIENT_LOGS_ENABLED_SINCE": "Enabled since: {{enabledSince}}",
-    "CLIENT_LOGS_ENABLED_MSG": "Client logs have been enabled for your user",
-    "CLIENT_LOGS_DISABLED_MSG": "Client logs have been disabled for your user",
-    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Warning: this could severely affect server performances if many agents are logged in at the same time!",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues"
+    "CONTACT_MANAGER_LISTS": "Hafðu samband við stjórnanda listans",
+    "CALLYSQUARE_RECORDINGS": "Cally Square upptökur",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Hunsa stöðu fulltrúa ef um pantað símtal er að ræða",
+    "SELECT_RECALLME_CAMPAIGN": "Veldu Recall Me herferð",
+    "CLIENT_LOGS": "Skráningar notanda",
+    "CLIENT_LOGS_DISABLED": "Skráningar notanda eru afvirkjaðir",
+    "CLIENT_LOGS_ENABLED": "Færsluskráningar notanda eru virkjaðr",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Veldu lámarks skráningar stig (severity)",
+    "CLIENT_LOGS_LOGLEVEL": "Stig skránginar: {{logLevel}}",
+    "CLIENT_LOGS_ENABLED_SINCE": "Virkjað síðan: {{enabledSince}}",
+    "CLIENT_LOGS_ENABLED_MSG": "Færslu skráningar á þínum notanda hafa verið virkjaðar",
+    "CLIENT_LOGS_DISABLED_MSG": "Færslu skráningar á þínum notanda hefur verið afvirkjuð",
+    "CLIENT_LOGS_ALL_ENABLED_WARNING": "Viðvörun: þetta gæti haft alvarleg áhrif á hraða ef margir fulltrúar eru innskráðir á sama tíma!",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Bættu fulltrúa við biðraða herferðir",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Bættu fullrúa við tal raðir",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Bættu fulltrúa við spjallraðir",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Bættu fulltrúa við tölvupóst raðir",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Bættu fulltrúa við SMS raðir",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Bættu fulltrúa við WhatsApp biðraðir",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Bættu fulltrúa við Open Channel raðir",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Bættu fulltrúa við Fax raðir",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Allar herferða biðraðir",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valdar herferða biðraðir",
+    "ALL_QUEUES_VOICE_INBOUND": "Allar tal biðraðir",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valdar tal biðraðir",
+    "ALL_QUEUES_CHAT_INBOUND": "Allar spjall biðraðir",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valdar spjall biðraðir",
+    "ALL_QUEUES_MAIL_INBOUND": "Allar tölvupóst biðraðir",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valdar tölvupóst biðraðir",
+    "ALL_QUEUES_SMS_INBOUND": "Allar SMS biðraðir",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valdar SMS biðraðir",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Allar WhatsApp biðraðirueues",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valdar WhatsApp biðraðir",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Allar Open Channel biðraðir",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Valdar Open Channel biðraðir",
+    "ALL_QUEUES_FAX_INBOUND": "Allar Fax biðraðir",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valdar Fax biðrair"
   }
 }
index 3c87ee1..e91cfcd 100644 (file)
@@ -1,32 +1,32 @@
 {
   "STAFF": {
     "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Ativar gravação de vídeo",
+    "ENABLEVIDEORECORDING": "Ativar Gravação de Vídeo",
     "OLD_PASSWORD": "Senha Antiga",
     "ENABLEJAWSINTEGRATION": "Ativar Integração de Jaws",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "Nenhuma mudança de senha",
+    "NO_PASSWORD_CHANGE": "Nenhuma Alteração de Senha",
     "SECURITY_SUITE": "Suíte de Segurança",
-    "LAST_PASSWORD_RESET_AT": "Última redefinição de senha em",
+    "LAST_PASSWORD_RESET_AT": "Última alteração de senha foi em",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Definições",
+    "SETTINGS_WEBRTC": "Configurações",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "Certificado TLS",
     "DTLSPRIVATEKEY": "Chave privada do certificado TLS",
     "CONTEXT": "Contexto",
-    "RINGINUSE": "Toque em uso",
+    "RINGINUSE": "Toque em Uso",
     "USERS": "Usuários",
     "AGENTS": "Agentes",
     "TOGGLE_SIDENAV": "Toggle sidenav",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SELECTED": "Selecionado",
     "DELETE_SELECTED": "Excluir selecionado",
     "EXPORT_SELECTED": "Exportar selecionado",
-    "ALL_USERS": "Todos os usuários",
+    "ALL_USERS": "Todos os Usuários",
     "ALL_AGENTS": "Todos os agentes",
     "SORT": "ordenar",
     "NAME": "Nome",
     "ADD_USER": "Adicionar Usuário",
     "ADD_AGENT": "Adicionar Agente",
     "NO_RESULTS": "Nenhum resultado ..",
-    "CLOSE_DIALOG": "Fechar a caixa de diálogo",
+    "CLOSE_DIALOG": "Encerrar Conversa",
     "NAME_REQUIRED": "Nome (obrigatório)",
     "USERNAME": "Usuário",
-    "SHOW_ALL_FIELDS": "Mostrar todos os campos",
-    "PHONE_NUMBER": "Número de telefone",
+    "SHOW_ALL_FIELDS": "Mostrar Todos os Campos",
+    "PHONE_NUMBER": "Número de Telefone",
     "EMAIL": "Email",
     "PASSWORD": "Senha",
     "ERRORS": {
     "VOICE": "Voz",
     "CREATED_AT": "Criado em",
     "ROLE": "Função",
-    "PERSONAL_INFO": "Informação pessoal",
+    "PERSONAL_INFO": "Informação Pessoal",
     "DESCRIPTION": "Descrição",
-    "CHANGE_AVATAR": "Mudar Avatar",
+    "CHANGE_AVATAR": "Alterar Avatar",
     "GENERAL": "Geral",
     "INTERNAL": "Interno",
     "TRANSPORT": "Transporte",
-    "ALLOWCODECS": "Codecs permitidos",
+    "ALLOWCODECS": "Codecs Permitidos",
     "HELP": {
       "LAST_PASSWORD_RESET_AT": "Última data e hora em que a senha foi alterada. Se a configuração geral do Secure Suite estiver ativada, a senha expirará após 90 dias.",
       "DTLSCERTFILE": "Link para o certificado TLS válido (arquivo .crt). Valor padrão: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Link para a chave privada do certificado (arquivo .key). Valor padrão: '/etc/pki/tls/private/motion.key'.",
       "ALLOWCODECS": "Codecs permitidos em ordem de preferência",
-      "TRANSPORT": "Definir os transportes padrão em ordem de preferência",
-      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre, use a palavra-chave dynamic em vez de Host IP",
-      "NAT": "Altera o comportamento do Asterisk para clientes por trás de um firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir nat = no",
+      "TRANSPORT": "Define o transporte padrão em ordem de preferência",
+      "HOST": "Como encontrar o cliente - IP ou nome do host. Se você deseja que o telefone se registre sem restrição, use a palavra-chave dynamic em vez de Host IP",
+      "NAT": "Altera o comportamento do Asterisk para clientes que estejam atrás de firewall. Se qualquer uma das opções separadas por vírgulas for 'no', o Asterisk irá ignorar outras configurações e definir 'nat = no'",
       "SIPEXPIRES": "Padrão: 160",
       "SIPPORT": "Padrão: 5160",
-      "TYPE": "Determina o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange ambas as características do acima",
-      "CHATCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MAILCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "FAXCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "SMSCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "OPENCHANNELCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
+      "TYPE": "Determina o papel do SIP no Asterisk. User: usado para autenticar entrada - Peer: para chamadas de saída - Friend: abrange ambas as características",
+      "CHATCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MAILCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "FAXCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "SMSCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "OPENCHANNELCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
       "CALLGROUP": "O grupo de chamadas do agente",
       "PICKUPGROUP": "Os grupos nos quais o agente pode atender chamadas",
       "USERNAME": "Somente números, letras e caracteres específicos (._) são suportados",
       "ENCRYPTION": "Criptografia SRTP (Secure Realtime Protocol)",
       "SAVE_PERMISSIONS": "Todas as seções que contêm alterações pendentes serão salvas",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de painéis personalizados são gerenciadas no módulo Ferramentas",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "As permissões de Dashboards\nPersonalizados são gerenciadas no módulo Ferramentas",
       "APIKEY": "Use o botão 'API key manager' na barra de ferramentas para gerenciar essa chave",
       "ENABLEAUTOMATICSCREENRECORDING": "A funcionalidade está disponível apenas para canal de voz",
-      "BLOCKED": "Bloquear / desbloquear acesso",
+      "BLOCKED": "Bloquear / Desbloquear acesso",
       "DISABLED": "selecione para desativar / desmarcar para reativar",
-      "WHATSAPPCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)",
-      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em todo o aplicativo (por exemplo, números de telefone e endereços de e-mail)",
+      "WHATSAPPCAPACITY": "Número máximo de interações simultâneas do canal por agente (0 = ilimitado)",
+      "MASK_SENSITIVE_DATA": "Mascare quaisquer dados confidenciais em toda aplicação (por exemplo, números de telefone e endereços de e-mail)",
       "WSS_PORT": "Padrão: 8089",
       "AD_SSO_ENABLED": "Faça login com suas credenciais do Active Directory"
     },
     "NEW_PASSWORD": "Nova Senha",
-    "CONFIRM_PASSWORD": "Confirmar a Senha",
-    "CHANGE_PASSWORD": "Mudar senha",
-    "CHANGEPASSWORD_AGENT": "Mudar senha",
-    "CHANGEPASSWORD_USER": "Mudar senha",
-    "CHANGEPASSWORD_TELEPHONE": "Mudar senha",
-    "LOGININPAUSE": "Login em pausa",
+    "CONFIRM_PASSWORD": "Confirmar Senha",
+    "CHANGE_PASSWORD": "Alterar Senha",
+    "CHANGEPASSWORD_AGENT": "Alterar Senha",
+    "CHANGEPASSWORD_USER": "Alterar Senha",
+    "CHANGEPASSWORD_TELEPHONE": "Alterar Senha",
+    "LOGININPAUSE": "Login em Pausa",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Espião",
-    "OTHER_CHANNELS": "Outros canais",
-    "CHATCAPACITY": "Capacidade do Chat",
+    "CHANSPY": "Intercalação Remota",
+    "OTHER_CHANNELS": "Outros Canais",
+    "CHATCAPACITY": "Capacidade do WebChat",
     "MAILCAPACITY": "Capacidade de Email",
     "FAXCAPACITY": "Capacidade do Fax",
-    "SMSCAPACITY": "Capacidade do Sms",
+    "SMSCAPACITY": "Capacidade do SMS",
     "OPENCHANNELCAPACITY": "Capacidade do Open Channel",
     "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Definições",
-    "AUTOANSWER": "Resposta automática",
-    "ENABLESETTINGS": "Habilitar Definições",
+    "SETTINGS": "Configurações",
+    "AUTOANSWER": "Atendimento Automático",
+    "ENABLESETTINGS": "Ativar Configurações",
     "CALL_FORWARDING": "Encaminhamento de Chamadas",
     "UNCONDITIONAL": "Incondicional",
     "UNCONDITIONALNUMBER": "Número Incondicional",
-    "NOREPLY": "Sem resposta",
-    "NOREPLYNUMBER": "Nenhum número de resposta",
+    "NOREPLY": "Sem Resposta",
+    "NOREPLYNUMBER": "Nenhum Número de Resposta",
     "BUSY": "Ocupado",
     "BUSYNUMBER": "Número Ocupado",
-    "REMOTE_CONTROL": "Controle remoto",
-    "REMOTECONTROL": "Controle remoto",
-    "REMOTECONTROLPORT": "Porta de Controle remoto",
+    "REMOTE_CONTROL": "Controle Remoto",
+    "REMOTECONTROL": "Controle Remoto",
+    "REMOTECONTROLPORT": "Porta de Controle Remoto",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expira [seg]",
+    "SIPEXPIRES": "Expiração SIP [seg]",
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
-    "ACCOUNTNAME": "Nome da conta",
+    "ACCOUNTNAME": "Nome da Conta",
     "ADD_TELEPHONE": "Adicionar Telefone",
     "EDIT_TELEPHONE": "Editar Telefone",
     "DELETE_TELEPHONE": "Excluir Telefone",
     "TEAMS": "Equipes",
     "DELETE_TEAM": "Excluir Equipe",
-    "AGENTADD_TEAM": "Adicionar agentes na equipe",
+    "AGENTADD_TEAM": "Adicionar Agentes na Equipe",
     "EDIT_TEAM": "Editar Equipe",
     "TYPE": "Tipo",
     "TELEPHONES": "Telefones",
-    "CALLERID": "Identificador de chamadas",
-    "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Pessoal",
+    "CALLERID": "Caller ID",
+    "ENABLERECORDING": "Ativar Gravação",
+    "STAFF": "Colaboradores",
     "ID": "Id",
     "NEW_USER": "Novo Usuário",
     "NEW_AGENT": "Novo Agente",
     "NEW_TELEPHONE": "Novo Telefone",
     "NEW_TEAM": "Nova Equipe",
     "ADD_TEAM": "Adicionar Equipe",
-    "JOIN_QUEUE": "Junte-se à fila",
+    "JOIN_QUEUE": "Junte-se à Fila",
     "CAPACITY": "Capacidade",
-    "AUTOINTERNAL": "Auto gerar número interno",
-    "ADD_AGENT_TO_TEAM": "Adicionar agente na equipe",
-    "TEAMADD_AGENT": "Adicionar agente na equipe",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "AUTOINTERNAL": "Gerar automaticamente número interno",
+    "ADD_AGENT_TO_TEAM": "Adicionar Agente na Equipe",
+    "TEAMADD_AGENT": "Adicionar Agente na Equipe",
+    "NO_AVAILABLE_INFO": "Nenhuma info disponível",
     "PERMISSIONS": "Permissões",
-    "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
+    "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "ALL_MODULES_AVAILABLE": "Todos os módulos disponíveis",
     "CALLGROUP": "Grupo de Chamadas",
-    "PICKUPGROUP": "Grupo de retirada",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar agente a campanhas de fila",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar agente às filas de voz",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar agente às filas de Chat",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar agente às filas de emails",
-    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar agente às filas do SMS",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar agente às filas do Open Channel",
-    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar agente às filas de fax",
-    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar usuário às filas de voz",
-    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar usuário a filas de Chat",
-    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar usuário a filas de e-mail",
-    "QUEUEADD_USER_SMS_INBOUND": "Adicionar usuário às filas do SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar usuário para filas do Open Channel",
-    "QUEUEADD_USER_FAX_INBOUND": "Adicionar usuário às filas de fax",
-    "ALL_TEAMS": "Todas as equipes",
+    "PICKUPGROUP": "Grupo de Captura",
+    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Adicionar Agente a Campanhas de Fila",
+    "ADD_AGENT_TO_VOICE_QUEUES": "Adicionar Agente à Fila de Voz",
+    "ADD_AGENT_TO_CHAT_QUEUES": "Adicionar Agente à Fila de WebChat",
+    "ADD_AGENT_TO_MAIL_QUEUES": "Adicionar Agente à Fila de Emails",
+    "ADD_AGENT_TO_SMS_QUEUES": "Adicionar Agente à Filas do SMS",
+    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Adicionar Agente à Fila do OpenChannel",
+    "ADD_AGENT_TO_FAX_QUEUES": "Adicionar Agente à Fila de Fax",
+    "QUEUEADD_USER_VOICE_INBOUND": "Adicionar Usuário à Filas de Voz",
+    "QUEUEADD_USER_CHAT_INBOUND": "Adicionar Usuário à Filas de WebChat",
+    "QUEUEADD_USER_MAIL_INBOUND": "Adicionar Usuário a Filas de Email",
+    "QUEUEADD_USER_SMS_INBOUND": "Adicionar Usuário à Fila de SMS",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar Usuário à Filas do Open Channel",
+    "QUEUEADD_USER_FAX_INBOUND": "Adicionar Usuário à Filas de Fax",
+    "ALL_TEAMS": "Todas as Equipes",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
+    "ALL_QUEUE_CAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "ALL_VOICE_QUEUES": "Todas as filas de voz",
-    "SELECTED_VOICE_QUEUES": "Filas de voz selecionadas",
-    "ALL_CHAT_QUEUES": "Todas as filas de Chat",
-    "SELECTED_CHAT_QUEUES": "Filas de Chat Selecionadas",
-    "ALL_MAIL_QUEUES": "Todas as filas de email",
-    "SELECTED_MAIL_QUEUES": "Filas de E-mail Selecionadas",
-    "ALL_SMS_QUEUES": "Todas as filas do SMS",
-    "SELECTED_SMS_QUEUES": "Filas SMS Selecionadas",
-    "ALL_OPENCHANNEL_QUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNEL_QUEUES": "Filas de Open Channel Selecionadas",
-    "ALL_FAX_QUEUES": "Todas as filas de fax",
-    "SELECTED_FAX_QUEUES": "Filas de fax selecionadas",
-    "VOICEMAIL": "Correio de voz",
+    "ALL_VOICE_QUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICE_QUEUES": "Filas de Voz Selecionadas",
+    "ALL_CHAT_QUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHAT_QUEUES": "Filas de WebChat Selecionadas",
+    "ALL_MAIL_QUEUES": "Todas as Filas de Email",
+    "SELECTED_MAIL_QUEUES": "Filas de Email Selecionadas",
+    "ALL_SMS_QUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMS_QUEUES": "Filas de SMS Selecionadas",
+    "ALL_OPENCHANNEL_QUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNEL_QUEUES": "Filas de OpenChannel Selecionadas",
+    "ALL_FAX_QUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAX_QUEUES": "Filas de Fax Selecionadas",
+    "VOICEMAIL": "Correio de Voz",
     "SHOWWEBCONTROL": "Tipologia",
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por Página",
     "CALLFORWARDING": "Encaminhamento de Chamadas",
     "DND": "Não perturbe durante a pausa",
     "UNANSWEREDCALLBADGE": "Mostrar info de chamada não atendida",
-    "ENABLEDTMFTONE": "Ativar tons Dtmf",
-    "AUTOANSWERDELAY": "Atraso de Resposta Automática [s]",
+    "ENABLEDTMFTONE": "Ativar tons DTMF",
+    "AUTOANSWERDELAY": "Atraso de Atendimento Automático [seg]",
     "ENCRYPTION": "Encriptação",
     "CHANNELS": "Canais",
-    "CHAT": "Chat",
-    "SMS": "Sms",
+    "CHAT": "WebChat",
+    "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar usuário a campanhas de fila",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar Usuário a Campanhas de Fila",
     "MONITOREXTENSION": "Gravar chamadas para a extensão do usuário",
     "EDITPERMISSIONS": "Editando Permissões",
-    "READANDEDIT": "Leia, Edite",
+    "READANDEDIT": "Ler, Editar",
     "READANDEDITANDDELETE": "Ler, Editar, Excluir",
     "GENERAL_PERMISSIONS": "Geral",
-    "ENABLEMESSENGER": "Ativar mensageiro interno",
+    "ENABLEMESSENGER": "Ativar Chat Interno",
     "OUTBOUNDPROXY": "Proxy de saída",
     "PHONE": "Telefone",
     "MOBILE": "Celular",
     "PREFIXREQUIRED": "Prefixo Obrigatório",
     "MANAGE_PERMISSIONS": "Gerenciar Permissões",
-    "USERADD_VOICEQUEUES": "Adicionar fila de voz ao usuário",
-    "ALL_VOICEQUEUES": "Todas as filas de voz",
-    "SELECTED_VOICEQUEUES": "Filas de voz selecionadas",
-    "USERADD_CHATQUEUES": "Adicionar fila de Chat ao usuário",
-    "ALL_CHATQUEUES": "Todas as filas de Chat",
-    "SELECTED_CHATQUEUES": "Filas de E-mail Selecionadas",
-    "USERADD_MAILQUEUES": "Adicionar fila de email ao usuário",
-    "ALL_MAILQUEUES": "Todas as filas de email",
-    "SELECTED_MAILQUEUES": "Filas de Chat Selecionadas",
-    "USERADD_SMSQUEUES": "Adicionar fila do SMS ao usuário",
-    "ALL_SMSQUEUES": "Todas as filas do SMS",
-    "SELECTED_SMSQUEUES": "Filas SMS Selecionadas",
-    "USERADD_FAXQUEUES": "Adicionar fila de fax ao usuário",
-    "ALL_FAXQUEUES": "Todas as filas de fax",
-    "SELECTED_FAXQUEUES": "Filas de fax selecionadas",
-    "USERADD_OPENCHANNELQUEUES": "Adicionar fila de Open Channel ao usuário",
-    "ALL_OPENCHANNELQUEUES": "Todas as filas do Open Channel",
-    "SELECTED_OPENCHANNELQUEUES": "Filas de Open Channel Selecionadas",
-    "USERADD_PROJECTS": "Adicionar Projeto Cally Square ao Usuário",
-    "ALL_PROJECTS": "Todos os projetos da Cally Square",
-    "SELECTED_PROJECTS": "Projetos selecionados da Cally Square",
-    "USERADD_CHATWEBSITES": "Adicionar site de chat ao usuário",
-    "ALL_CHATWEBSITES": "Todos os sites de Chat",
-    "SELECTED_CHATWEBSITES": "Sites de Chat selecionados",
-    "USERADD_QUEUECAMPAIGNS": "Adicionar campanha de fila ao usuário",
-    "ALL_QUEUECAMPAIGNS": "Todas as campanhas de filas",
+    "USERADD_VOICEQUEUES": "Adicionar Fila de Voz ao Usuário",
+    "ALL_VOICEQUEUES": "Todas as Filas de Voz",
+    "SELECTED_VOICEQUEUES": "Filas de Voz Selecionadas",
+    "USERADD_CHATQUEUES": "Adicionar Fila de WebChat ao Usuário",
+    "ALL_CHATQUEUES": "Todas as Filas de WebChat",
+    "SELECTED_CHATQUEUES": "Filas de Email Selecionadas",
+    "USERADD_MAILQUEUES": "Adicionar Fila de Email ao Usuário",
+    "ALL_MAILQUEUES": "Todas as Filas de Email",
+    "SELECTED_MAILQUEUES": "Filas de Email Selecionadas",
+    "USERADD_SMSQUEUES": "Adicionar Fila de SMS ao Usuário",
+    "ALL_SMSQUEUES": "Todas as Filas de SMS",
+    "SELECTED_SMSQUEUES": "Filas de SMS Selecionadas",
+    "USERADD_FAXQUEUES": "Adicionar Fila de Fax ao Usuário",
+    "ALL_FAXQUEUES": "Todas as Filas de Fax",
+    "SELECTED_FAXQUEUES": "Filas de Fax Selecionadas",
+    "USERADD_OPENCHANNELQUEUES": "Adicionar Fila do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELQUEUES": "Todas as Filas do OpenChannel",
+    "SELECTED_OPENCHANNELQUEUES": "Filas de OpenChannel Selecionadas",
+    "USERADD_PROJECTS": "Adicionar Projeto do CallySquare ao Usuário",
+    "ALL_PROJECTS": "Todos os Projetos do CallySquare",
+    "SELECTED_PROJECTS": "Projetos do Cally Square Selecionados",
+    "USERADD_CHATWEBSITES": "Adicionar Site de Webchat ao Usuário",
+    "ALL_CHATWEBSITES": "Todos os Sites de WebChat",
+    "SELECTED_CHATWEBSITES": "Sites de WebChat Selecionados",
+    "USERADD_QUEUECAMPAIGNS": "Adicionar Campanha de Fila ao Usuário",
+    "ALL_QUEUECAMPAIGNS": "Todas as Campanhas de Filas",
     "SELECTED_QUEUECAMPAIGNS": "Campanhas de Filas Selecionadas",
-    "USERADD_MAILACCOUNTS": "Adicionar conta de email ao usuário",
-    "ALL_MAILACCOUNTS": "Todas as contas de email",
-    "SELECTED_MAILACCOUNTS": "Contas de email selecionadas",
-    "USERADD_FAXACCOUNTS": "Adicionar conta de fax ao usuário",
-    "ALL_FAXACCOUNTS": "Todas as contas de fax",
-    "SELECTED_FAXACCOUNTS": "Contas de fax selecionadas",
-    "USERADD_SMSACCOUNTS": "Adicionar conta SMS ao usuário",
-    "ALL_SMSACCOUNTS": "Todas as contas SMS",
-    "SELECTED_SMSACCOUNTS": "Contas SMS Selecionadas",
-    "USERADD_OPENCHANNELACCOUNTS": "Adicionar conta de Open Channel ao usuário",
-    "ALL_OPENCHANNELACCOUNTS": "Todas as contas de Open Channel",
-    "SELECTED_OPENCHANNELACCOUNTS": "Contas de Open Channel selecionadas",
-    "ADD_USERPROFILE": "Adicionar perfil de usuário",
+    "USERADD_MAILACCOUNTS": "Adicionar Conta de Email ao Usuário",
+    "ALL_MAILACCOUNTS": "Todas as Contas de Email",
+    "SELECTED_MAILACCOUNTS": "Contas de Email Selecionadas",
+    "USERADD_FAXACCOUNTS": "Adicionar Conta de Fax ao Usuário",
+    "ALL_FAXACCOUNTS": "Todas as Contas de Fax",
+    "SELECTED_FAXACCOUNTS": "Contas de Fax Selecionadas",
+    "USERADD_SMSACCOUNTS": "Adicionar Conta de SMS ao Usuário",
+    "ALL_SMSACCOUNTS": "Todas as Contas de SMS",
+    "SELECTED_SMSACCOUNTS": "Contas de SMS Selecionadas",
+    "USERADD_OPENCHANNELACCOUNTS": "Adicionar Conta do OpenChannel ao Usuário",
+    "ALL_OPENCHANNELACCOUNTS": "Todas as Contas de OpenChannel",
+    "SELECTED_OPENCHANNELACCOUNTS": "Contas de OpenChannel Selecionadas",
+    "ADD_USERPROFILE": "Adicionar Perfil de Usuário",
     "CANCEL": "Cancelar",
-    "CLONE_USERPROFILE": "Perfil do usuário de clone",
-    "CLOSE": "Perto",
-    "CONFIRM": "confirme",
-    "CRUDPERMISSIONS": "Tipo de permissão",
+    "CLONE_USERPROFILE": "Clonar Perfil do Usuário",
+    "CLOSE": "Encerrar",
+    "CONFIRM": "Confirme",
+    "CRUDPERMISSIONS": "Tipo de Permissão",
     "DELETE_PERMISSION": "Excluir",
-    "DELETE_USERPROFILE": "Excluir perfil do usuário",
+    "DELETE_USERPROFILE": "Excluir Perfil do Usuário",
     "EDIT_PERMISSION": "Editar",
-    "EDIT_USERPROFILE": "Editar perfil do usuário",
+    "EDIT_USERPROFILE": "Editar Perfil do Usuário",
     "MODULES": "Módulos",
-    "NEW_USERPROFILE": "Novo perfil de usuário",
+    "NEW_USERPROFILE": "Novo Perfil de Usuário",
     "PERMISSIONS_ALL_RESOURCES": "Todos os recursos",
-    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do usuário",
-    "PERMISSIONS_MANAGE": "Gerir",
+    "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Associe automaticamente todos os recursos atuais e futuros desta seção ao Perfil do Usuário",
+    "PERMISSIONS_MANAGE": "Gerenciar",
     "PERMISSIONS_PLACEHOLDER_SEARCH": "Procurar...",
-    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o usuário",
-    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao usuário",
+    "PERMISSIONS_SECTION_HIDE": "Ocultar seção para o Usuário",
+    "PERMISSIONS_SECTION_SHOW": "Mostrar seção ao Usuário",
     "PERMISSIONS_SECTION_TITLE": "Permissões do {{sectionName}}",
     "PERMISSIONS_SELECTED_RESOURCES": "Recursos Selecionados",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Selecione o tipo de relatório",
     "PERMISSIONS_SELECT_SECTION": "Selecione uma seção",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Você não tem permissão para acessar a seção selecionada",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Ação não autorizada",
-    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja sair sem salvar?",
+    "PERMISSIONS_WARNING_CLOSE": "Você tem alterações não salvas. Tem certeza de que deseja encerrar sem salvar?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Todas as subseções {{sectionName}} e seus recursos serão ativadas. Você tem certeza que quer continuar?",
     "QUEUES_ASSOCIATION": "Associação de filas do {{channel}}",
     "READ_PERMISSION": "Ler",
-    "REPORT_TYPE": "Tipo de relatório",
+    "REPORT_TYPE": "Tipo de Relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
-    "USERPROFILE": "Perfil de usuário",
-    "USERPROFILES": "Perfis de usuário",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
+    "USERPROFILE": "Perfil de Usuário",
+    "USERPROFILES": "Perfis de Usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte à vídeo",
     "APIKEY": "Chave API",
-    "APIKEYMANAGER_USER": "Gerenciador de chaves da API",
-    "GENERATE": "(Regenerado",
-    "MANAGE_API_KEY": "Gerenciador de chaves da API",
+    "APIKEYMANAGER_USER": "Gerenciador de Chaves da API",
+    "GENERATE": "Gerar",
+    "MANAGE_API_KEY": "Gerenciador de Chave da API",
     "REMOVE": "Remover",
-    "ENABLEAUTOMATICSCREENRECORDING": "Ativar gravação automática de tela",
-    "ENABLESCREENRECORDINGBYAGENT": "Ativar gravação de tela por agente",
-    "ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
+    "ENABLEAUTOMATICSCREENRECORDING": "Ativar Gravação Automática de Tela",
+    "ENABLESCREENRECORDINGBYAGENT": "Ativar Gravação de Tela pelo Agente",
+    "ENABLEVIDEOECORDING": "Ativar Gravação de Vídeo",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
-    "REGENERATE": "Regenerado",
-    "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
-    "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
-    "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar agente às filas do WhatsApp",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
-    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp selecionadas",
-    "SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
-    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
-    "USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
-    "USERADD_WHATSAPPQUEUES": "Adicionar fila Whataspp ao usuário",
+    "REGENERATE": "Renovar",
+    "ALL_WHATSAPP_QUEUES": "Todas as Filas de WhatsApp",
+    "ALL_WHATSAPPACCOUNTS": "Todas as Contas WhatsApp",
+    "ALL_WHATSAPPQUEUES": "Todas as Filas Whataspp",
+    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Adicionar Agente à Filas do WhatsApp",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar Usuário às Filas do WhatsApp",
+    "SELECTED_WHATSAPP_QUEUES": "Filas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPACCOUNTS": "Contas de WhatsApp Selecionadas",
+    "SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp Selecionadas",
+    "USERADD_WHATSAPPACCOUNTS": "Adicionar Conta WhatsApp ao Usuário",
+    "USERADD_WHATSAPPQUEUES": "Adicionar Fila Whataspp ao Usuário",
     "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPCAPACITY": "Capacidade do conector WhatsApp",
-    "MASK_SENSITIVE_DATA": "Máscara de dados sensíveis",
+    "WHATSAPPCAPACITY": "Capacidade do Conector WhatsApp",
+    "MASK_SENSITIVE_DATA": "Máscara de Dados Sensíveis",
     "WSS_PORT": "Porta WSS",
     "ATTACHMENTS": "Anexos",
-    "CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
-    "CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
-    "DOWNLOADS": "Transferências",
-    "DOWNLOAD_PERMISSIONS": "Permissões de download",
+    "CALLYSQUARE_RECORDINGS": "Gravações do CallySquare",
+    "CONTACT_MANAGER_LISTS": "Listas da Gestão de Contatos",
+    "DOWNLOADS": "Downloads",
+    "DOWNLOAD_PERMISSIONS": "Permissões de Download",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
-    "SCREEN_RECORDINGS": "Gravações de tela",
+    "SCREEN_RECORDINGS": "Gravações de Tela",
     "VOICE_RECORDINGS": "Gravações de Voz",
-    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar o status de interrupção do agente para chamadas de visualização",
-    "SELECT_RECALLME_CAMPAIGN": "Selecione a campanha Recall Me",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente a campanhas de fila",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar agente às filas de voz",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar agente às filas de Chat",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar agente às filas de emails",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar agente às filas do SMS",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar agente às filas do Open Channel",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar agente às filas de fax",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as campanhas de filas",
+    "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar pausa do agente para discagem preview",
+    "SELECT_RECALLME_CAMPAIGN": "Selecione a Campanha Recall Me",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar Agente a Campanhas de Fila",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Adicionar Agente à Filas de Voz",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Adicionar Agente à Filas de WebChat",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Adicionar Agente às Filas de Emails",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Adicionar Agente às Filas de SMS",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Adicionar Agente à Filas do Open Channel",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Adicionar Agente à Filas de Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Todas as Campanhas de Filas",
     "SELECTED_QUEUES_VOICE_OUTBOUND": "Campanhas de Filas Selecionadas",
-    "ALL_QUEUES_VOICE_INBOUND": "Todas as filas de voz",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de voz selecionadas",
-    "ALL_QUEUES_CHAT_INBOUND": "Todas as filas de Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de Chat Selecionadas",
-    "ALL_QUEUES_MAIL_INBOUND": "Todas as filas de email",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de E-mail Selecionadas",
-    "ALL_QUEUES_SMS_INBOUND": "Todas as filas do SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Filas SMS Selecionadas",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as filas do Open Channel",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de Open Channel Selecionadas",
-    "ALL_QUEUES_FAX_INBOUND": "Todas as filas de fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Filas de fax selecionadas",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+    "ALL_QUEUES_VOICE_INBOUND": "Todas as Filas de Voz",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Filas de Voz Selecionadas",
+    "ALL_QUEUES_CHAT_INBOUND": "Todas as Filas de WebChat",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Filas de WebChat Selecionadas",
+    "ALL_QUEUES_MAIL_INBOUND": "Todas as Filas de Email",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Filas de Email Selecionadas",
+    "ALL_QUEUES_SMS_INBOUND": "Todas as Filas de SMS",
+    "SELECTED_QUEUES_SMS_INBOUND": "Filas de SMS Selecionadas",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Todas as Filas do OpenChannel",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Filas de OpenChannel Selecionadas",
+    "ALL_QUEUES_FAX_INBOUND": "Todas as Filas de Fax",
+    "SELECTED_QUEUES_FAX_INBOUND": "Filas de Fax Selecionadas",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Todas as Filas de WhatsApp",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar Agente à fila do WhatsApp",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
-    "AD_SSO_ENABLED": "SSO do Active Directory",
+    "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autenticação",
-    "CLIENT_LOGS": "Logs de clientes",
+    "CLIENT_LOGS": "Logs do Cliente",
     "CLIENT_LOGS_ALL_ENABLED_WARNING": "Aviso: isso pode afetar gravemente o desempenho do servidor se muitos agentes estiverem conectados ao mesmo tempo!",
-    "CLIENT_LOGS_DISABLED": "Os registros do cliente estão desabilitados",
-    "CLIENT_LOGS_ENABLED": "Os registros do cliente estão habilitados",
+    "CLIENT_LOGS_DISABLED": "Os Logs do Cliente estão desabilitados",
+    "CLIENT_LOGS_ENABLED": "Os Logs do Cliente estão habilitados",
     "CLIENT_LOGS_ENABLED_SINCE": "Ativado desde: {{enabledSince}}",
-    "CLIENT_LOGS_LOGLEVEL": "Nível de registro: {{logLevel}}",
-    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de registro (gravidade)",
-    "CLIENT_LOGS_DISABLED_MSG": "Os logs do cliente foram desativados para seu usuário",
-    "CLIENT_LOGS_ENABLED_MSG": "Os logs do cliente foram ativados para seu usuário",
-    "AUTO_ANSWER": "Resposta automática",
-    "CHAT_AUTOANSWER": "Resposta automática do bate-papo",
-    "CHAT_AUTOANSWERDELAY": "Atraso de resposta automática do bate-papo [s]",
-    "EMAIL_AUTOANSWER": "Resposta automática de e-mail",
-    "EMAIL_AUTOANSWERDELAY": "Atraso de resposta automática de e-mail [s]",
-    "FAX_AUTOANSWER": "Resposta automática de fax",
-    "FAX_AUTOANSWERDELAY": "Atraso de resposta automática de fax [s]",
-    "OPENCHANNEL_AUTOANSWER": "Resposta automática de canal aberto",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso de resposta automática de canal aberto [s]",
-    "SMS_AUTOANSWER": "Resposta automática de SMS",
-    "SMS_AUTOANSWERDELAY": "Atraso de resposta automática de SMS [s]",
-    "WHATSAPP_AUTOANSWER": "Resposta automática do Whatsapp",
-    "WHATSAPP_AUTOANSWERDELAY": "Atraso de resposta automática do Whatsapp [s]"
+    "CLIENT_LOGS_LOGLEVEL": "Nível de Logs: {{logLevel}}",
+    "CLIENT_LOGS_LOGLEVEL_SELECT": "Selecione o nível mínimo de Logs (gravidade)",
+    "CLIENT_LOGS_DISABLED_MSG": "Os Logs do Cliente foram desativados para seu usuário",
+    "CLIENT_LOGS_ENABLED_MSG": "Os Logs do Cliente foram ativados para seu usuário",
+    "AUTO_ANSWER": "Atendimento Automático",
+    "CHAT_AUTOANSWER": "Atendimento Automático do Webchat",
+    "CHAT_AUTOANSWERDELAY": "Atraso de Atendimento Automático do Webchat [seg]",
+    "EMAIL_AUTOANSWER": "Atendimento Automática de Email",
+    "EMAIL_AUTOANSWERDELAY": "Atraso de Atendimento Automática de Email [seg]",
+    "FAX_AUTOANSWER": "Atendimento Automático de Fax",
+    "FAX_AUTOANSWERDELAY": "Atraso no Atendimento Automática de Fax [seg]",
+    "OPENCHANNEL_AUTOANSWER": "Atendimento Automático do Open Channel",
+    "OPENCHANNEL_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Open Channel[seg]",
+    "SMS_AUTOANSWER": "Atendimento Automático de SMS",
+    "SMS_AUTOANSWERDELAY": "Atraso no Atendimento Automática de SMS [seg]",
+    "WHATSAPP_AUTOANSWER": "Atendimento Automático do Whatsapp",
+    "WHATSAPP_AUTOANSWERDELAY": "Atraso no Atendimento Automático do Whatsapp [seg]"
   }
 }
index 306ec24..340f54f 100644 (file)
 {
   "TOOLS": {
-    "VIDEOSUPPORT": "Video support",
-    "PREVIOUSCONTACT": "Previous",
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "TITLEFONTSIZE": "Font Title Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
-    "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "IGNOREDIALERCONTACTID": "Ignore dialer contact Id",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "CONTACTITEMTYPE": "Contact item types",
-    "ORDER_BY": "Order by",
-    "RGBBACKGROUNDCOLOR": "RGB Background color",
-    "NEW_CONTACTITEMTYPE": "New contact item type",
-    "EDIT_CONTACTITEMTYPE": "Edit contact item type",
-    "DELETE_CONTACTITEMTYPE": "Delete contact item type",
-    "ORDER_BY_NUMERIC": "Order by field should be numeric value!",
-    "ADD_CONTACTITEMTYPE": "Add",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
+    "VIDEOSUPPORT": "Vídeó stuðningur",
+    "PREVIOUSCONTACT": "Fyrri",
+    "BOT": "Spjallmenni",
+    "CLONE_TRUNK": "Afrita Trunk",
+    "DISPOSITIONS": "Ráðstafanir",
+    "NEW_DISPOSITION": "Ný ráðstöfun",
+    "ADD_DISPOSITION": "Bættu við ráðstöfun",
+    "EDIT_DISPOSITION": "Breyta ráðstöfun",
+    "DELETE_DISPOSITION": "Eyða ráðstöfun",
+    "RUN_SCHEDULE": "Keyrslu áætlun",
+    "SENDIFEMPTY": "Sendu ef tómt",
+    "NEXTCONTACT": "Næst",
+    "OUTBOUND_ROUTE": "Útfarandi flæði",
+    "EDIT_DASHBOARDITEM": "Breyttu snérsniðunum upplýsingaborða Widget",
+    "FONTSIZE": "Stærð leturs",
+    "TITLEFONTSIZE": "Stærð leturgerðar á titli",
+    "CLONE_CUSTOMDASHBOARD": "Afrita sérhannað upplýsingaborð",
+    "LINK": "Hlekkur [https://]",
+    "BACKGROUND": "Bakgrunnu",
+    "FOREGROUND": "Forgrunnur",
+    "IGNOREDIALERCONTACTID": "Hunsa auðkenni hringjara",
+    "NONE": "Engin",
+    "TOTAL": "Samtala",
+    "ABANDONED": "Hætt við",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
+    "ANSWERED": "Svarað",
+    "CONTACTITEMTYPE": "Tegund tengiliðar",
+    "ORDER_BY": "Pantað af",
+    "RGBBACKGROUNDCOLOR": "RGB Bakgrunns litur",
+    "NEW_CONTACTITEMTYPE": "Ný tegund af tengiliði",
+    "EDIT_CONTACTITEMTYPE": "Breyttu tengiliða tegund",
+    "DELETE_CONTACTITEMTYPE": "Eyða tegund tengiliðs",
+    "ORDER_BY_NUMERIC": "Röðun eftir reit ætti að vera tölugildi!",
+    "ADD_CONTACTITEMTYPE": "Bæta við",
+    "UNMANAGED": "Óstjórnað",
+    "CUSTOMTYPE": "Sérsniðið",
+    "WEBREPORT": "Wef skýrsla",
+    "PIECHART": "Kökurit",
+    "MULTIBARCHART": "Multibar mynd",
+    "MOVE_WIDGET": "Færðu Widget",
+    "USERADD_CUSTOMDASHBOARD": "Bæta við notenda heimildir",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "GOTO_CUSTOMDASHBOARD": "Farðu í að forskoða upplýsingaborð",
+    "METRIC": "Mæling",
+    "FILTERVOICEQUEUES": "sía aá tal biðraðir",
+    "SERIE1": "Sería 1",
+    "SERIE2": "Sería 2",
+    "SERIE3": "Sería 3",
+    "REFRESH": "Endurnýja [s]",
+    "FORMAT": "Formatsnið",
     "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
+    "ALL_USERS": "allir notendur",
+    "SELECTED_USERS": "Valdir notendur",
+    "ADD_WIDGET": "Bættu við",
+    "COLOR": "Litur",
     "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "INTERACTION": "Samskipti",
+    "MESSAGE": "Silaboð",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SCRIPT": "Script",
-    "SCRIPT_INFO": "Info",
-    "SCRIPT_TYPE": "Type",
-    "EMAIL": "Email",
-    "FILTERFAXACCOUNTS": "Filter Fax Accounts",
-    "FILTERSMSACCOUNTS": "Filter Sms Accounts",
-    "FILTERCHATWEBSITES": "Filter Chat Websites",
-    "FILTERWHATSAPPACCOUNTS": "Filter Whatsapp Accounts",
-    "FILTEREMAILACCOUNTS": "Filter Email Accounts",
-    "FILTEROPENCHANNELACCOUNTS": "Filter OpenChannel Accounts",
-    "OPENED": "Opened",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
+    "CALL": "Símtal",
+    "NAME": "Nafn",
+    "TRUNKS": "Trunkar",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "SCRIPT": "Handrit",
+    "SCRIPT_INFO": "Uppls.",
+    "SCRIPT_TYPE": "Tegund",
+    "EMAIL": "Tölvupóstur",
+    "FILTERFAXACCOUNTS": "Sía aá Fax reikninga",
+    "FILTERSMSACCOUNTS": "Sía á SMS Reikninga",
+    "FILTERCHATWEBSITES": "Sía á spjall síðum",
+    "FILTERWHATSAPPACCOUNTS": "sía á Whatsapp reikninga",
+    "FILTEREMAILACCOUNTS": "Sía á tölvupóst reikninga",
+    "FILTEROPENCHANNELACCOUNTS": "sía á OpenChannel reikninga",
+    "OPENED": "Opnað",
+    "OPENED_TEXT": "Opinn samskipti",
+    "MANAGED": "Stjórnað",
+    "MANAGED_TEXT": "Stýrð samskipti",
     "ERRORS": {
-      "INFO_REQUIRED": "Mandatory field",
-      "SCRIPT_REQUIRED": "Mandatory field",
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "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",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "AUTOCREATE_FIELD_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CHANNEL_REQUIRED": "Mandatory field"
+      "INFO_REQUIRED": "Skilyrtur reitur",
+      "SCRIPT_REQUIRED": "Skilyrtur reitur",
+      "NAME_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "TITLE_MAX_LENGTH": "Gildið má vera að hámarki að lengd eða jafnt og {{max}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og ",
+      "REFRESH_REQUIRED": "Skilyrtur reitur",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "FONTSIZE_REQUIRED": "Skilyrtur reitur",
+      "PATH_REQUIRED": "Skilyrtur reitur",
+      "FORMAT_REQUIRED": "Skilyrtur reitur",
+      "REPORT_REQUIRED": "Skilyrtur reitur",
+      "TYPE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "ACCOUNT_REQUIRED": "Skilyrtur reitur",
+      "IGNOREDIALERCONTACTID_REQUIRED": "Krafist er að hunsa númer tengiliðs",
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "HOST_REQUIRED": "Skilyrtur reitur",
+      "DEFAULTUSER_REQUIRED": "Skilyrtur reitur",
+      "CALLERID_REQUIRED": "Skilyrtur reitur",
+      "KEY_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "VALIDITYSTART_REQUIRED": "Skilyrtur reitur",
+      "VALIDITYEND_REQUIRED": "Skilyrtur reitur",
+      "MONTHDAY_REQUIRED": "Skilyrtur reitur",
+      "HOUR_REQUIRED": "Skilyrtur reitur",
+      "CONTENT_REQUIRED": "Skilyrtur reitur",
+      "URL_REQUIRED": "Skilyrtur reitur",
+      "URL_MUST_VALID_URL": "Rangt snið",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "ARGUMENTS_REQUIRED": "Skilyrtur reitur",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "POLLING_INTERVAL_REQUIRED": "Skilyrtur reitur",
+      "TITLE_REQUIRED": "Skilyrtur reitur",
+      "EMAILADDRESS_REQUIRED": "Skilyrtur reitur",
+      "EVENTVARIABLES_REQUIRED": "Skilyrtur reitur",
+      "INTEGRATION_REQUIRED": "Skilyrtur reitur",
+      "LIST_REQUIRED": "Skilyrtur reitur",
+      "TEMPLATE_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATECONTACT_REQUIRED": "Skilyrtur reitur",
+      "AUTOCREATE_FIELD_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "QUEUE_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_TO_REQUIRED": "Skilyrtur reitur",
+      "WEEK_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_DAYS_TO_REQUIRED": "Skilyrtur reitur",
+      "MONTH_TO_REQUIRED": "Skilyrtur reitur",
+      "TIME_RANGE_FROM_INVALID": "Rangt snið",
+      "TIME_RANGE_TO_INVALID": "Rangt snið",
+      "ACTION_REQUIRED": "Skilyrtur reitur",
+      "CONFIGURATION_REQUIRED": "Skilyrtur reitur",
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "LOCATION_REQUIRED": "Skilyrtur reitur",
+      "OUTPUT_REQUIRED": "Skilyrtur reitur",
+      "REPORTTYPE_REQUIRED": "Skilyrtur reitur",
+      "REPORTFOLDER_REQUIRED": "Skilyrtur reitur",
+      "REPORTSUBFOLDER_REQUIRED": "Skilyrtur reitur",
+      "AGENT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera minna en eða jafnt og",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CHANNEL_REQUIRED": "Skilyrtur reitur"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Leyni",
+    "DEFAULTUSER": "Sjálfgefin notandi",
+    "DESCRIPTION": "Lýsing",
+    "ADD_TRUNK": "Bættu við Trunk",
     "HELP": {
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "SCRIPT_INFO": "Insert a description for the script",
-      "SCRIPT_TYPE": "Insert a typology for the script (eg. curl, bash...)",
-      "INFO": "Insert title",
-      "SCRIPT": "Insert script",
+      "OPENED": "Heildarfjöldi virkra samskipta",
+      "MANAGED": "Heildarfjöldi lokinna samskipta",
+      "SCRIPT_INFO": "Settu inn lýsingu fyrir scriptuna",
+      "SCRIPT_TYPE": "Settu inn leturgerð fyrir handritið (td krulla, bash...)",
+      "INFO": "Settu inn titil",
+      "SCRIPT": "Settu inn scriptu",
       "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "HEADERS": "Note: Headers section must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, the default value will be sent",
-      "TIMEOUT": "Request timeout in seconds. The value must be between 1 and 10 and the default value is 5."
+      "SECRET": "Auðkenningarlykilorð",
+      "HOST": "Lénið eða hýsingar heitið",
+      "DEFAULTUSER": "Auðkenning á notandanafni",
+      "CALLERID": "Auðkenni þess sem hringir, á sniðinu \"nafn\" <númer>",
+      "REGISTRY": "Skrásetningarstrengurinn, ef þess er krafist af þjónustuveitanda, venjulega defaultuser:secret@host",
+      "FROMDOMAIN": "Stilltu sjálfgefið Frá:lén í SIP skilaboðum þegar þú starfar sem SIP ua (viðskiptavinur). Sumir áfangastaðir gætu krafist lögboðins auðkennisnafns í stað aðeins IP tölunnar",
+      "FROMUSER": "Hvernig þjónustu veitandinn þinn þekkir þig. Þetta er hvaða notanda á að setja í stað númeranúmers þegar hringt er í jafningja (annar SIP umboð). Gildir aðeins fyrir type=peer.",
+      "OUTBOUNDPROXY": "\nIP_address eða DNS SRV nafn (að undanskildum _sip._udp forskeytinu): SRV nafn, hýsingarheiti eða IP vistfang SIP proxy á útleið. Sendu boð á útleið til þessa proxy, ekki beint til tækjanna. Gildir aðeins fyrir type=peer",
+      "PORT": "Númerið á SIP portinu",
+      "CONTEXT": "Samhengið fyrir trunkinn",
+      "TYPE": "\nÁkvarða SIP hlutverk innan Asterisk. Notandi: notað til að sannvotta móttekinn - Peer: fyrir úthringingar - Vinur: nær yfir bæði eiginleika ofangreindra.",
+      "DTMFMODE": "Hvernig DTMF (Dual-Tone Multi-Frequency) er sent. RFC2833: sjálfgefin hamur, DTMF eru send með RTP en utan hljóðstraumsins. INBAND: DTMF er sendur í hljóðstraumi núverandi samtals og verður heyranlegt úr hátölurunum. Krefst mikils CPU álags. UPPLÝSINGAR: Þó að þessi aðferð sé mjög áreiðanleg er hún ekki studd af öllum PBX tækjum og mörgum SIP trunks.",
+      "NAT": "Breyttu hegðun Asterisk fyrir viðskiptavini á bak við eldvegginn. Ef einhver af valkostunum sem eru aðskilin með kommum er „nei“ mun Asterisk hunsa allar aðrar stillingar og setja nat=nei",
+      "QUALIFY": "Ákveður hvenæar SIP er aðgengilegt",
+      "ALLOWCODECS": "Leyfilegair kódekar í æskilegriröð",
+      "INSECURE": "\nTilgreindu hvernig á að meðhöndla tengingar við jafningja  ( peer), leyfa óöruggar stillingar",
+      "CALL_LIMIT": "Hámarksfjöldi samtíma á inn- og út samtölum",
+      "DIRECTMEDIA": "Asterisk reynir sjálfgefið að beina RTP-miðlunarstraumnum til að fara beint frá þeim sem hringir til viðtakandans. Sum tæki styðja þetta ekki (sérstaklega ef eitt þeirra er á bak við NAT). Sjálfgefin stilling er YES. Ef þú ert með alla viðskiptavini á bak við NAT, eða vilt af einhverjum öðrum ástæðum að Asterisk haldist í hljóðleiðinni, gætirðu viljað slökkva á þessu.",
+      "CALLCOUNTER": "Virkja símtalateljara í tækjum",
+      "ADD_PHONE_TO_URI": "Skilgreindu hvort framleiðandinn krefst ';user=phone' á vefslóðinni",
+      "TRUST_REMOTE_PARTY_ID": "Skilgreindu hvort Remote-Party-ID ætti að vera treystandi",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Skilgreindu hvort Remote-Party-ID ætti að senda (sjálfgefið er nei)",
+      "ENCRYPTION": "Hvort bjóða eigi SRTP dulkóðaða miðla (og aðeins SRTP dulkóðaða miðla) í úthringingum til jafningja. Símtöl munu mistakast með HANGUPCAUSE=58 ef jafningi styður ekki SRTP. Sjálfgefið gildi er nr",
+      "TRANSPORT": "Stilltu sjálfgefna flutninga, í forgangsröð",
+      "OTHERFIELDS": "Aðrir reitir til að bæta við í trunks conf skránum. Fylgdu sjálfgefnu Asterisk sniði (lykill=gildi), hvern reit í einni röð",
+      "EMAILADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Bættu við einu eða mörgum netföngum aðskilið með kommum (t.d. john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Aðeins tölur, stafir og sérstakir (._) eru studdir",
+      "EVENTVARIABLES": "Ef það er virkt bætir það öllum atburðabreytum við vefslóðina (ráðlagt gildi=Nei. Stillt á Já aðeins í matsskyni) ",
+      "HEADERS": "Athugið: Hluti hausa verður að vera á RAW JSON sniði {\"key\":\"gildi\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "BODY": "Athugið: meginmálið verður að vera á RAW JSON sniði {\"key\":\"value\"} \nAthugið: Ef það er ekki fyllt út verður sjálfgefið gildi sent",
+      "TIMEOUT": "Biddu um tímamörk í sekúndum. Gildið verður að vera á milli 1 og 10 og sjálfgefið gildi er 5."
     },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
+    "EDIT_TRUNK": "Breyttu trunk",
+    "DELETE_TRUNK": "eyða trunk",
+    "CREATED_AT": "Stofnað kl.",
+    "SETTINGS": "Stillingar",
+    "ADVANCED": "Ítarlegt",
+    "OTHER": "Aðrir",
+    "ACTIVE": "Virkur",
+    "CONTEXT": "Samhengi",
+    "CALLERID": "Auðkenni hringjara",
+    "TYPE": "Tegund",
     "DTMFMODE": "DTMF Mode",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
+    "QUALIFY": "Hæfi",
+    "ALLOWCODECS": "Leyfðir kódekar",
+    "INSECURE": "Óöruggt",
     "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
+    "DIRECTMEDIA": "Bein miðlun",
+    "CALLCOUNTER": "Símtala teljari",
+    "FROMDOMAIN": "Frá Domain",
+    "FROMUSER": "Frá notanda",
+    "OUTBOUNDPROXY": "Útfarandi proxy",
+    "ADD_PHONE_TO_URI": "Bættu við síma á URL",
+    "TRUST_REMOTE_PARTY_ID": "TÖruggt auðkenni fjaraðila",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senda auðkennishaus fyrir fjaraðila",
+    "ENCRYPTION": "Dulkóðun",
     "PORT": "Port",
-    "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
+    "TRANSPORT": "Flutningur",
+    "SAVE": "Geyma",
+    "VARIABLES": "Breytur",
+    "ADD_VARIABLE": "Bættu við breytu",
+    "EDIT_VARIABLE": "Breyttu breytu",
+    "DELETE_VARIABLE": "Eyða breytu",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu ekkert",
+    "TAGS": "Tögg",
+    "ADD_TAG": "Bættu við taggi",
+    "EDIT_TAG": "Breyttu taggi",
+    "DELETE_TAG": "Eyða taggi",
+    "PAUSES": "Hlé",
+    "ADD_PAUSE": "Bættu við hlér",
+    "EDIT_PAUSE": "Breyttu hléi",
+    "DELETE_PAUSE": "Eyða hléi",
+    "CANNEDANSWERS": "Tengd svör",
+    "ADD_CANNEDANSWER": "Bættu við tengdu svari",
+    "EDIT_CANNEDANSWER": "Breyttu tengdu svari",
+    "DELETE_CANNEDANSWER": "Eyða tengdu svari",
+    "KEY": "Lykill",
+    "VALUE": "Gildi",
+    "SOUNDS": "Hljóð",
+    "EDIT_SOUND": "Breyttu hljóði",
+    "DELETE_SOUND": "Eyða hljóði",
+    "CANCEL": "Hætta við",
+    "FINISH": "Lokið",
+    "DROP_TO_UPLOAD": "Slepptu til að sækja",
+    "UPLOADING": "Hleður upp",
+    "TRIGGERS": "Triggerar",
+    "EDIT_TRIGGER": "Breyttu triggeri",
+    "DELETE_TRIGGER": "Eyða triggeri",
+    "ADD_TRIGGER": "Bættu við trigger",
+    "DELETE": "Eyða",
+    "AUTOMATIONS": "Sjálfvirkni",
+    "EDIT_AUTOMATION": "Breyttu sjálfvirkni",
+    "DELETE_AUTOMATION": "Eyða sjálfvirkni",
+    "ADD_AUTOMATION": "Bæta við sjálfvirkni",
+    "INTERVALS": "bil",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_INTERVAL": "Eyða bili",
+    "ADD_INTERVAL": "Bættu við millibili",
+    "TOOLS": "Verkfæri",
+    "ID": "Auðkenni",
+    "AUDIO": "Hljóð",
+    "DOWNLOAD_SOUND": "Niðurhal á hlóði",
+    "UPLOAD_SOUND": "Verkfæri",
+    "CHANNEL": "Rás",
+    "NEW_TRIGGER": "Nýr trigger",
+    "GENERAL": "Almennt",
+    "STATUS": "Staða",
+    "CONDITIONS&ACTIONS": "Skilyrði og aðgerðir",
+    "ALLCONDITIONS": "Uppfylltu öll þessi skilyrði",
+    "ANYCONDITIONS": "Uppfylltu einhverjum af þessum skilyrðum",
+    "ACTIONS": "Aðgerðir:",
+    "NEW_AUTOMATION": "Ný sjálfvirkni",
+    "TIMEOUT": "Tíminn rann út",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
-    "AUG": "August",
+    "CALL_LIMIT": "Hámark á símtölum",
+    "OTHERFIELDS": "Aðrir reitir",
+    "NEW_VARIABLE": "Ný breyta",
+    "NEW_TAG": "Nýtt tag",
+    "NEW_PAUSE": "Nýtt hlé",
+    "NEW_CANNEDANSWER": "Nýtt tengt svar",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_TRUNK": "Nýr trunkur",
+    "FROM": "Frá",
+    "TO": "Til",
+    "WEEKDAY": "Vikudagur",
+    "MONTHDAY": "Mánaðardagur",
+    "MONTH": "Mánuður",
+    "ALWAYS": "Alltaf",
+    "MON": "Mánudagur",
+    "TUE": "Þriðjudagur",
+    "WED": "Miðvikudagur",
+    "THU": "Fimmtudagur",
+    "FRI": "Föstudagur",
+    "SAT": "Laugardagur",
+    "SUN": "sunnudagur",
+    "JAN": "Janúar",
+    "FEB": "Febrúar",
+    "MAR": "Mars",
+    "APR": "Apríl",
+    "MAY": "Maí",
+    "JUN": "Júní",
+    "JUL": "Júlí",
+    "AUG": "Ágúst",
     "SEP": "September",
-    "OCT": "October",
-    "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
+    "OCT": "Október",
+    "NOV": "Nóvember",
+    "DEC": "Desember",
+    "PASSWORD": "Lykilorð",
+    "CUSTOMDASHBOARDS": "Sérhannað upplýsingaborð",
+    "NEW_CUSTOMDASHBOARD": "Nýtt sérhannað upplýsingaborð",
+    "ADD_CUSTOMDASHBOARD": "Bæta við sérsniðnum upplýsingaborði",
+    "EDIT_CUSTOMDASHBOARD": "Breyttu snérsniðnum upplýsingaborðum",
+    "DELETE_CUSTOMDASHBOARD": "Eyða sérsniðnu upplýsinga borði",
+    "SCHEDULER": "Skipuleggjari",
+    "NEW_SCHEDULE": "Ný áætlun",
+    "ADD_SCHEDULE": "Bættu við áætlun",
+    "EDIT_SCHEDULE": "Breyttu áætlun",
+    "DELETE_SCHEDULE": "Eyða áætlun",
+    "SENDMAIL": "Sendu tölvupóst",
+    "CONFIGURATION": "Stillingar",
+    "MAIL": "Tölvupóstur",
+    "REPORTTYPE": "Skýrslu tegund",
+    "REPORT": "Skýrsla",
+    "OUTPUT": "Útkoma",
+    "EXECUTEON": "Framkvæma á",
+    "REPORTRANGE": "Tímabil skýrslu",
+    "VALIDITYSTART": "Upphafstími",
+    "VALIDITYEND": "Loka tími",
+    "EXECUTEEVERY": "Hver framkvæmd",
+    "ACCOUNT": "Reikningur",
+    "EMAILADDRESS": "Netfang",
     "EMAILCCADDRESS": "Cc",
     "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
+    "CURRENTDAY": "Núverandi dagur",
+    "DAILY": "Daglega",
+    "WEEKLY": "Wvikulega",
+    "MONTHLY": "Mánaðarlega",
+    "PREVIOUS_DAY": "Fyrri dagur",
+    "LAST_SEVEN_DAYS": "Síðustu sjö dagar",
+    "LAST_THIRTY_DAYS": "Síðustu þrjátíu dagar",
+    "LAST_MONTH": "Síðasti mánuður",
+    "WEEKDAYS": "Viku dagar",
+    "HOUR": "Klst.",
+    "DEFAULT": "Sjálfgefið",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 mín",
+    "30MIN": "30 mínútur",
+    "1H": "1 klst",
+    "VOICE": "Tal",
+    "CHAT": "Spjall",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "MAIL_SUBSTATUS": "Email Substatus",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
+    "TEMPLATES": "Sniðmát",
+    "EDIT_TEMPLATE": "Breyttu sniðmáti",
+    "DELETE_TEMPLATE": "Eyða sniðmáti",
+    "NEW_TEMPLATE": "Nýtt sniðmát",
+    "ADD_TEMPLATE": "Bættu við sniðmáti",
+    "CONTENT": "Innihald",
+    "FIELD": "Svæði",
+    "NO_ANYCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ALLCONDITION_AVAILABLE": "Engin skilyrði til staðar",
+    "NO_ACTION_AVAILABLE": "Engin aðgerð til staðar",
+    "ACTION": "Aðgerð",
+    "EDIT_ANYCONDITION": "Breyttu skilyrðum",
+    "DELETE_ANYCONDITION": "Eyða skilyrði",
+    "NEW_ANYCONDITION": "Ný skilyrði",
+    "ADD_ANYCONDITION": "bæta við skilyrðum",
+    "EDIT_ALLCONDITION": "Breyttu skilyrðum",
+    "DELETE_ALLCONDITION": "Eyða skilyrðum",
+    "NEW_ALLCONDITION": "Ný skilyrði",
+    "ADD_ALLCONDITION": "Bæta við skilyrðum",
+    "EDIT_ACTION": "Greyttu aðgerð",
+    "DELETE_ACTION": "Eyða aðgerð",
+    "NEW_ACTION": "Ný aðgerð",
+    "ADD_ACTION": "Bæta við aðgerð",
+    "QUEUE": "Biðröð",
+    "CALL_STATUS": "Staða á símtölum",
+    "OUTBOUNDROUTE": "Útfarandi flæði",
+    "MAIL_SUBSTATUS": "Grunnur tölvupósts",
+    "OFFLINE_MESSAGE": "Skilaboð án nettengingar",
+    "EQUALS": "Jafnt og",
+    "NOT_EQUALS": "Ekki jafnt og",
+    "CONTACT_MANAGER": "Tengiliða stjórnandi",
+    "INTEGRATIONS": "Samþáttanir",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL áframsent",
+    "WEB_POPUP": "Wef Popup",
+    "LIST": "Listi",
+    "INTEGRATION": "Samþáttun",
+    "TEMPLATE": "Sniðmát",
     "URL": "URL",
-    "APPLICATION": "Application",
-    "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
-    "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "APPLICATION": "Forrit",
+    "ARGUMENTS": "Rök",
+    "NO_APPS_AVAILABLE": "Engin forrit til staðar",
+    "NEW_INTERVAL": "Nýtt bil",
+    "OPERATOR": "Kerfisstjóri",
+    "NO_INTERVALS_AVAILABLE": "Engin bil til staðar",
+    "YES": "Já",
+    "NO": "Nei",
+    "SUBJECT": "Efni",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "BROWSER": "Vafri",
+    "INTERVAL": "Bil",
+    "INFO": "Upplýsingar",
+    "TIME_RANGE": "Tímabil",
+    "WEEK_DAYS": "Vikudagar",
+    "MONTH_DAYS": "Mánaðardagar",
+    "MONTHS": "Mánuðir",
+    "DROP_TO_UPLOAD_MESSAGE": "Slepptu hljóð skrám hér til að sækja nýja. Aðeins MP3, WAV, GSM - Max. 15MB",
+    "POLLING_INTERVAL": "Könnunarbil (seconds)",
+    "DASHBOARD": "Upplýsingaborð",
+    "NEW_DASHBOARDITEM": "Nýtt upplýsingaborðs Widget",
+    "COUNTER": "Teljari",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "Klukka",
+    "ADD_DASHBOARDITEM": "Bæta við upplýsingaborðs Widget",
+    "EDIT_WIDGET": "Breyttu Widget",
+    "DELETE_WIDGET": "Eyða Widget",
+    "FLIP_WIDGET": "skipta Widget",
+    "TITLE": "Titill",
+    "UPDATE": "Uppfæra",
+    "LAYOUT": "Útlit",
+    "BACKGROUND_COLOR": "Litur á bakgrunni",
+    "FOREGROUND_COLOR": "Litur á forgrunni",
+    "FOREGROUND_TITLE_COLOR": "Litur á forgrunns titli",
+    "THEME": "Thema",
+    "LIGHT": "Létt",
+    "DARK": "Dökkt",
+    "TIMEZONE": "Tímabelti",
+    "DIGITAL_FORMAT": "Eyða sniði á dagsetningu",
+    "TOOLS_QUERY": "Fyrirspurn",
+    "SELECT": "Velja",
+    "WHERE": "Hvar",
+    "BACK": "Til baka",
+    "PROJECT": "Verkefni",
+    "GOTOREALTIME_TRUNK": "Farðu í rauntíma trunk",
+    "GOTO_TRUNK": "Farði í trunk",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
-    "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
-    "ON_THE": "On the",
-    "OF_EVERY": "Of every",
-    "MONTH_AT": "Month at",
-    "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
-    "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
-    "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "MOTION_TAB": "New Agent Dashboard Tab",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
-    "AGENT": "Agent",
-    "HEADERS": "Headers",
-    "WHATSAPP": "WhatsApp Connector",
-    "LEVEL": "Level",
+    "MINUTES": "Mínútur",
+    "HOURLY": "Á klukkustundar fresti",
+    "YEARLY": "Árlega",
+    "EVERY": "Hvert",
+    "MINUTE": "Mínúta",
+    "ON_SECOND": "Á sekúndunni",
+    "HOUR_ON_MINUTE": "Mínúta á hverri klukkstund",
+    "AND_SECOND": "Bættu við sekúndum",
+    "DAY_AT": "Dagur kl.",
+    "START_TIME": "Upphafstími",
+    "ON_THE": "Á",
+    "OF_EVERY": "Af hverjum",
+    "MONTH_AT": "Mánuður kl.",
+    "AT": "Kl.",
+    "LAST": "Síðast",
+    "LASTUNIT": "Eining",
+    "MAILACCOUNT": "Netfang",
+    "OF": "Af",
+    "PAST_THE_HOUR": "Eftir klukkutímann",
+    "DAY": "Dagur",
+    "WEEK": "Vika",
+    "YEAR": "Ár",
+    "ON": "Á",
+    "PAI": "P-innsett auðkenni",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Línur á bls.",
+    "EVENTVARIABLES": "Viðburðar breytur",
+    "AUTOCREATECONTACT": "Stofnaðu tengilið sjálfkrafa",
+    "LOCATION": "Staðsetning",
+    "NEW_TAB": "Nýr flipi",
+    "NEW_WINDOW": "Nýr gluggi",
+    "MOTION_TAB": "Nýr flipi í stjórnborði fulltrúans",
+    "WINDOWWIDTH": "breidd á glugga(px)",
+    "WINDOWHEIGHT": "Hæðar stærð á glugga(px)",
+    "BODY": "Innihald",
+    "REPORTFOLDER": "Skýrslu mappa",
+    "REPORTSUBFOLDER": "Skýrslu undirmappa",
+    "AGENT": "Fulltrúi",
+    "HEADERS": "Hedderar",
+    "WHATSAPP": "WhatsApp tengill",
+    "LEVEL": "Stig",
     "NOTIFICATIONS": {
-      "DISPOSITION_CREATED_SUCCESS_TITLE": "Disposition successfully created",
-      "DISPOSITION_SAVED_SUCCESS_TITLE": "Disposition successfully saved",
-      "DISPOSITION_DELETE_TITLE": "Are you sure want to delete the disposition?",
-      "DISPOSITION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} will be deleted with all its sub dispositions",
-      "DISPOSITION_DELETED_SUCCESS_TITLE": "Disposition successfully deleted",
-      "DISPOSITIONS_DELETE_TITLE": "Are you sure want to delete the selected dispositions?",
+      "DISPOSITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna ráðstöfunina",
+      "DISPOSITION_SAVED_SUCCESS_TITLE": "Það tókst að geyma ráðstöfuninni",
+      "DISPOSITION_DELETE_TITLE": "Ertu viss um að þú viljir eyða ráðstöfuninni?",
+      "DISPOSITION_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "DISPOSITION_DELETE_MESSAGE_CHILDREN": "{{ name }} verður eytt með öllum undirráðstöfunum",
+      "DISPOSITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða ráðstöfuninni",
+      "DISPOSITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdu skilyrði?",
       "DISPOSITIONS_DELETE_MESSAGE": "{{ total }} dispositions will be deleted",
-      "TRIGGER_CREATED_SUCCESS_TITLE": "Trigger successfully created",
-      "TRIGGER_SAVED_SUCCESS_TITLE": "Trigger successfully saved",
-      "TRIGGER_DELETE_TITLE": "Are you sure want to delete the trigger?",
-      "TRIGGER_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "TRIGGER_DELETED_SUCCESS_TITLE": "Trigger successfully deleted",
-      "TRIGGERS_DELETE_TITLE": "Are you sure want to delete the selected triggers?",
-      "TRIGGERS_DELETE_MESSAGE": "{{ total }} triggers will be deleted",
-      "TRIGGERS_DELETED_SUCCESS_TITLE": "Triggers successfully deleted",
-      "ACTION_CREATED_SUCCESS_TITLE": "Action successfully created",
-      "ACTION_SAVED_SUCCESS_TITLE": "Action successfully saved",
-      "ACTION_DELETE_TITLE": "Are you sure want to delete the action?",
-      "ACTION_DELETED_SUCCESS_TITLE": "Action successfully deleted",
-      "ACTIONS_DELETE_TITLE": "Are you sure want to delete the selected actions?",
-      "ACTIONS_DELETE_MESSAGE": "{{ total }} actions will be deleted",
-      "ACTIONS_DELETED_SUCCESS_TITLE": "Actions successfully deleted",
-      "CONDITION_CREATED_SUCCESS_TITLE": "Condition successfully created",
+      "TRIGGER_CREATED_SUCCESS_TITLE": "Það tókst að stofna triggerinn",
+      "TRIGGER_SAVED_SUCCESS_TITLE": "Það tókst að geyma triggerinn",
+      "TRIGGER_DELETE_TITLE": "Ertu viss um að þú viljir eyða triggernum?",
+      "TRIGGER_DELETE_MESSAGE": "{{ name }} Verður eytt",
+      "TRIGGER_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggernum",
+      "TRIGGERS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum triggerum?",
+      "TRIGGERS_DELETE_MESSAGE": "{{ total }} Triggerum verður eytt",
+      "TRIGGERS_DELETED_SUCCESS_TITLE": "Það tókst að eyða triggerum",
+      "ACTION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
+      "ACTION_SAVED_SUCCESS_TITLE": "Það tókst að geyma þessa aðgerð",
+      "ACTION_DELETE_TITLE": "Ertu viss um að þú viljir eyða þessari aðgerð?",
+      "ACTION_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerðinni",
+      "ACTIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "ACTIONS_DELETE_MESSAGE": "{{ total }} aðgerðum verður eytt",
+      "ACTIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða aðgerð",
+      "CONDITION_CREATED_SUCCESS_TITLE": "Það tókst að stofna aðgerðina",
       "CONDITION_SAVED_SUCCESS_TITLE": "Condition successfully saved",
       "CONDITION_DELETE_TITLE": "Are you sure want to delete the condition?",
-      "CONDITION_DELETED_SUCCESS_TITLE": "Condition successfully deleted",
-      "CONDITIONS_DELETE_TITLE": "Are you sure want to delete the selected conditions?",
-      "CONDITIONS_DELETE_MESSAGE": "{{ total }} conditions will be deleted",
-      "CONDITIONS_DELETED_SUCCESS_TITLE": "Conditions successfully deleted"
+      "CONDITION_DELETED_SUCCESS_TITLE": "Það tókst að eyða skilyrðum",
+      "CONDITIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum aðgerðum?",
+      "CONDITIONS_DELETE_MESSAGE": "{{ total }} skilyrðum verður eytt",
+      "CONDITIONS_DELETED_SUCCESS_TITLE": "Það tókst að eyða þessum skilyrðum"
     },
-    "ALL_DISPOSITIONS": "All dispositions",
-    "SELECT_LEVEL": "Select a level",
-    "ALL": "All",
-    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "SEARCH_FIELDS": "Search fields",
-    "AUTOCREATE_FIELD": "Autocreate field",
-    "STANDARD": "Standard",
+    "ALL_DISPOSITIONS": "Allar ráðstafanir",
+    "SELECT_LEVEL": "Veldu þrep",
+    "ALL": "Allir",
+    "FIRST_LEVEL_DISPOSITION": "Fyrsta stigs ráðstöfun",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs þjónusta",
+    "SEARCH_FIELDS": "Leitar reitir",
+    "AUTOCREATE_FIELD": "Stofnaðu reit sjálfkraf",
+    "STANDARD": "Staðalað",
     "GLOBALS": "Globals",
     "MOTION_BAR": "Motion Bar"
   }
index ba506de..d27fc1e 100644 (file)
@@ -7,7 +7,7 @@
     "ADD_DISPOSITION": "Adicionar Qualificação",
     "EDIT_DISPOSITION": "Editar Qualificação",
     "DELETE_DISPOSITION": "Excluir Qualificação",
-    "RUN_SCHEDULE": "Horário de execução",
+    "RUN_SCHEDULE": "Executar agendamento",
     "SENDIFEMPTY": "Enviar se vazio",
     "NEXTCONTACT": "Próximo",
     "OUTBOUND_ROUTE": "Rota de Saída",
     "ABANDONED": "Abandonado",
     "WAITING": "Esperando",
     "TALKING": "Falando",
-    "ANSWERED": "Respondido",
-    "UNMANAGED": "Não Tratado",
+    "ANSWERED": "Atendido",
+    "UNMANAGED": "Não Gerenciado",
     "CUSTOMTYPE": "Personalizado [path]",
-    "WEBREPORT": "Relatório da Web",
-    "PIECHART": "Gráfico de pizza",
+    "WEBREPORT": "Relatório Web",
+    "PIECHART": "Gráfico de Pizza",
     "MULTIBARCHART": "Gráfico de Multibar",
     "MOVE_WIDGET": "Mover Widget",
-    "USERADD_CUSTOMDASHBOARD": "Adicionar permissões do usuário",
+    "USERADD_CUSTOMDASHBOARD": "Adicionar Permissões do Usuário",
     "GOTODASHBOARD_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "GOTO_CUSTOMDASHBOARD": "Pré-visualizar Dashboard",
     "METRIC": "Métrica",
@@ -50,7 +50,7 @@
     "T38PT_UDPTL": "T38pt Udptl",
     "CALL": "Chamada",
     "NAME": "Nome",
-    "TRUNKS": "Tronco",
+    "TRUNKS": "Troncos",
     "SEARCH_FOR_ANYONE": "Procurar",
     "ERRORS": {
       "NAME_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "IGNOREDIALERCONTACTID_REQUIRED": "O campo Ignore Dialer Contact ID é obrigatório"
     },
     "HOST": "Host",
-    "SECRET": "Segredo",
+    "SECRET": "Senha",
     "DEFAULTUSER": "Usuário Padrão",
     "DESCRIPTION": "Descrição",
     "ADD_TRUNK": "Adicionar Tronco",
     "HELP": {
-      "T38PT_UDPTL": "Ex: sim, redundância, maxdatagram = 400",
+      "T38PT_UDPTL": "Ex: yes,redundancy,maxdatagram=400",
       "SECRET": "Senha de autenticação",
       "HOST": "O domínio ou nome do host",
       "DEFAULTUSER": "Nome de usuário de autenticação",
       "CALLERID": "O Caller ID, no formato \"name\" <number>",
-      "REGISTRY": "A cadeia de registro, se exigida pelo provedor, geralmente defaultuser: secret @ host",
-      "FROMDOMAIN": "Defina o padrão de: domínio em mensagens SIP ao atuar como um SIP ua (cliente). Alguns destinos podem exigir um nome de identidade obrigatório, em vez de apenas o endereço IP",
-      "FROMUSER": "Como seu provedor conhece você. Este é qual usuário colocar em vez de callerid ao fazer chamadas para peer (outro proxy SIP). Válido apenas para type = peer.",
-      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): nome do SRV, nome do host ou endereço IP do SIP Proxy de saída. Envie a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type = peer.",
+      "REGISTRY": "A string de registro, se exigida pelo provedor, por padrão 'defaultuser:secret@host'",
+      "FROMDOMAIN": "Define o padrão From:domain em mensagens SIP ao atuar como um SIP user agent (cliente). Para alguns destinos é obrigatório o envio do identity name em vez de apenas o endereço IP",
+      "FROMUSER": "Como seu provedor conhece você. Este é o usuário ou callerid enviado ao fazer chamadas para peer (outro SIP proxy). Válido apenas para type=peer.",
+      "OUTBOUNDPROXY": "IP_address ou DNS SRV name (excluindo o prefixo _sip._udp): SRV name, hostname ou endereço IP do SIP Proxy de saída. Envia a sinalização de saída para este proxy, não diretamente para os dispositivos. Válido apenas para type=peer.",
       "PORT": "O número da porta SIP",
-      "CONTEXT": "Contexto para o Tronco",
-      "TYPE": "Determine o papel do SIP no asterisco. Usuário: usado para autenticar entrada - Peer: para chamadas de saída - Amigo: abrange as duas características dos itens acima.",
+      "CONTEXT": "O contexto para o tronco",
+      "TYPE": "Determina o SIP role no gateway. User: usado para chamadas de entrada - Peer: usado para chamadas de saída - Friend: usado para chamadas de entrada e saída",
       "DTMFMODE": "Como DTMF (Dual-Tone Multi-Frequency) é enviado. RFC2833: modo padrão, os DTMF são enviados com RTP, mas fora do fluxo de áudio. INBAND: O DTMF é enviado em fluxo de áudio da conversa atual, tornando-se audível pelos alto-falantes. Aumenta uso de CPU. INFO: Embora esse método seja muito confiável, ele não é suportado por todos os PBX e muitos troncos SIP.",
-      "NAT": "Altere o comportamento do Asterisk para clientes atrás de um firewall. Se qualquer uma das opções separadas por vírgula for 'no', o Asterisk irá ignorar quaisquer outras configurações e definir nat = no.",
-      "QUALIFY": "Determinar quando o SIP é realizável",
+      "NAT": "Altere o comportamento do Gateway para clientes atrás de um\nfirewall. Se qualquer uma das opções for 'no', o Gateway irá ignorar as outras\nconfigurações e definirá nat=no.",
+      "QUALIFY": "Determinar quando o SIP é alcançável",
       "ALLOWCODECS": "Codecs Permitidos em Ordem de Preferência",
-      "INSECURE": "Especifique como lidar com conexões com peer, permitindo configurações inseguras",
-      "CALL_LIMIT": "Limite das Chamadas Simultâneas",
-      "DIRECTMEDIA": "Por padrão, o Asterisk tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de um NAT). A configuração padrão é YES.",
-      "CALLCOUNTER": "Ativar Contagem de Chamadas no Dispositivos",
+      "INSECURE": "Especifica como realizar a conexão com o peer, permitindo configurações inseguras",
+      "CALL_LIMIT": "O limite das chamadas simultâneas para ligações de entrada e saída",
+      "DIRECTMEDIA": "Por padrão, o gateway tenta redirecionar o fluxo de mídia RTP para ir diretamente do chamador para o chamado. Alguns dispositivos não suportam isso (especialmente se um deles estiver por trás de NAT). A configuração padrão é YES.",
+      "CALLCOUNTER": "Ativar contagem de chamadas no dispositivos",
       "ADD_PHONE_TO_URI": "Definir se o provedor requer '; user = phone' no URL",
-      "TRUST_REMOTE_PARTY_ID": "Definir se o ID do participante remoto deve ser confiável",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é não)",
-      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas outgoing para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = Não",
-      "TRANSPORT": "Definir os transportes padrão, em ordem de preferência",
-      "OTHERFIELDS": "Outros campos para adicionar nos arquivos conf de troncos. Siga o formato de asterisco padrão (chave = valor), cada campo em uma única linha",
+      "TRUST_REMOTE_PARTY_ID": "Define se o Remote-Party-ID é confiável",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Definir se o Remote-Party-ID deve ser enviado (o padrão é no)",
+      "ENCRYPTION": "Se oferece SRTP encrypted media (e somente SRTP encrypted media) em chamadas de saída para um peer. Causará falha HANGUPCAUSE=58 se peer não suportar SRTP. Padrão = No",
+      "TRANSPORT": "Define o transporte padrão, em ordem de preferência",
+      "OTHERFIELDS": "Outros campos para adicionar no arquivo de configuração do tronco. Siga o formato padrão (chave=valor), cada campo em uma única linha",
       "EMAILADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "EMAILBCCADDRESS": "Adicione um ou vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento ao URL (valor recomendado = Não. Defina como Sim somente para fins de avaliação)",
+      "EVENTVARIABLES": "Se ativado, ele adiciona todas as variáveis \200b\200bdo evento a URL (valor recomendado = No. Defina como Yes somente para fins de avaliação)",
       "BODY": "Note: the body must be in RAW JSON format {\"key\":\"value\"} \nNote: If not filled out, o valor padrão será enviado",
       "INFO": "Inserir título",
       "SCRIPT": "Inserir script",
       "SCRIPT_INFO": "Inserir uma descrição para o script",
-      "SCRIPT_TYPE": "Insira uma tipologia para o script (por exemplo, curl, bash ...)",
+      "SCRIPT_TYPE": "Insira um tipo para o script (exemplo: curl, bash ...)",
       "HEADERS": "Nota: a seção Cabeçalhos deve estar no formato JSON RAW {\"key\": \"value\"}\nNota: Se não for preenchido, o valor padrão será enviado",
-      "TIMEOUT": "Solicitar tempo limite em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
-      "MANAGED": "O número total de interações concluídas",
+      "TIMEOUT": "Timeout da requisição em segundos. O valor deve estar entre 1 e 10 e o valor padrão é 5.",
+      "MANAGED": "O número total de interações completadas",
       "OPENED": "O número total de interações ativas"
     },
     "EDIT_TRUNK": "Editar Tronco",
     "DELETE_TRUNK": "Excluir Tronco",
     "CREATED_AT": "Criado em",
-    "SETTINGS": "Definições",
+    "SETTINGS": "Configurações",
     "ADVANCED": "Avançado",
     "OTHER": "Outros",
     "ACTIVE": "Ativo",
     "CONTEXT": "Contexto",
-    "CALLERID": "Identificador de Chamadas",
+    "CALLERID": "Caller ID",
     "TYPE": "Tipo",
     "DTMFMODE": "Modo DTMF",
     "NAT": "NAT",
     "REGISTRY": "Registro",
     "DIRECTMEDIA": "Mídia Direta",
     "CALLCOUNTER": "Contador de Chamadas",
-    "FROMDOMAIN": "Do domínio",
-    "FROMUSER": "Do usuário",
-    "OUTBOUNDPROXY": "Proxy de saída",
-    "ADD_PHONE_TO_URI": "Adicionar Telefone ao URL",
+    "FROMDOMAIN": "Do Domínio",
+    "FROMUSER": "Do Usuário",
+    "OUTBOUNDPROXY": "Proxy de Saída",
+    "ADD_PHONE_TO_URI": "Adicionar Telefone a URL",
     "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Enviar Remote Party ID Header",
     "ENCRYPTION": "Encriptação",
     "PORT": "Porta",
     "TRANSPORT": "Transporte",
     "EDIT_VARIABLE": "Editar Variáveis",
     "DELETE_VARIABLE": "Excluir Variáveis",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecione todos",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecione Todos",
+    "SELECT_NONE": "Selecione Nenhum",
     "TAGS": "Tags",
     "ADD_TAG": "Adicionar Tag",
     "EDIT_TAG": "Editar Tag",
     "DELETE_CANNEDANSWER": "Excluir Resposta Pré-definida",
     "KEY": "Key",
     "VALUE": "Valor",
-    "SOUNDS": "Sons",
+    "SOUNDS": "Áudios",
     "EDIT_SOUND": "Editar Som",
-    "DELETE_SOUND": " Ecluir Áudio",
+    "DELETE_SOUND": " Excluir Áudio",
     "CANCEL": "Cancelar",
     "FINISH": "Finalizar",
-    "DROP_TO_UPLOAD": "Soltar para Fazer Upload",
+    "DROP_TO_UPLOAD": "Soltar para fazer Upload",
     "UPLOADING": "Uploading",
     "TRIGGERS": "Gatilhos",
     "EDIT_TRIGGER": "Editar Gatilhos",
     "ANYCONDITIONS": "Atenda alguma destas condições:",
     "ACTIONS": "Ações:",
     "NEW_AUTOMATION": "Nova Automação",
-    "TIMEOUT": "Tempo esgotado",
-    "PEERSTATUS": "Status de par Status",
+    "TIMEOUT": "Timeout",
+    "PEERSTATUS": "Status do Peer",
     "CALL_LIMIT": "Limite de Chamadas",
-    "OTHERFIELDS": "Outros campos",
+    "OTHERFIELDS": "Outros Campos",
     "NEW_VARIABLE": "Nova Variável",
     "NEW_TAG": "Nova Tag",
     "NEW_PAUSE": "Nova Pausa",
     "NEW_TRUNK": "Novo Tronco",
     "FROM": "De ",
     "TO": "Para",
-    "WEEKDAY": "Dia da semana",
+    "WEEKDAY": "Dia da Semana",
     "MONTHDAY": "Dia do mês",
     "MONTH": "Mês",
     "ALWAYS": "Sempre",
     "ADD_CUSTOMDASHBOARD": "Adicionar Dashboard Personalizado",
     "EDIT_CUSTOMDASHBOARD": "Editar Dashboard Personalizado",
     "DELETE_CUSTOMDASHBOARD": "Excluir Dashboard Personalizado",
-    "SCHEDULER": "Agendador",
-    "NEW_SCHEDULE": "Novo Agendador",
-    "ADD_SCHEDULE": "Adicionar Agendador",
-    "EDIT_SCHEDULE": "Editar Agendador",
-    "DELETE_SCHEDULE": "Excluir Agendador",
+    "SCHEDULER": "Agendamento",
+    "NEW_SCHEDULE": "Novo Agendamento",
+    "ADD_SCHEDULE": "Adicionar Agendamento",
+    "EDIT_SCHEDULE": "Editar Agendamento",
+    "DELETE_SCHEDULE": "Excluir Agendamento",
     "SENDMAIL": "Enviar Email",
     "CONFIGURATION": "Configuração",
     "MAIL": "Email",
-    "REPORTTYPE": "Tipo de relatório",
+    "REPORTTYPE": "Tipo do Relatório",
     "REPORT": "Relatório",
     "OUTPUT": "Saída",
     "EXECUTEON": "Executar em",
-    "REPORTRANGE": "Intervalo de relatório",
-    "VALIDITYSTART": "Hora de início",
-    "VALIDITYEND": "Hora finalizado",
+    "REPORTRANGE": "Intervalo do Relatório",
+    "VALIDITYSTART": "Hora de Início",
+    "VALIDITYEND": "Hora de Término",
     "EXECUTEEVERY": "Execute cada",
     "ACCOUNT": "Conta",
     "EMAILADDRESS": "Endereço de Email",
     "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
+    "EMAILBCCADDRESS": "Cco",
     "CURRENTDAY": "Dia Atual",
     "DAILY": "Diariamente",
     "WEEKLY": "Semanal",
     "MONTHLY": "Mensal",
-    "PREVIOUS_DAY": "Dia anterior",
+    "PREVIOUS_DAY": "Dia Anterior",
     "LAST_SEVEN_DAYS": "Últimos Sete Dias",
-    "LAST_THIRTY_DAYS": "Últimos trinta dias",
+    "LAST_THIRTY_DAYS": "Últimos Trinta Dias",
     "LAST_MONTH": "Último Mês",
-    "WEEKDAYS": "Dias úteis",
+    "WEEKDAYS": "Dias da Semana",
     "HOUR": "Hora",
     "DEFAULT": "Padrão",
     "CSV": "CSV",
     "OUTBOUNDROUTE": "Rota de Saída",
     "EQUALS": "Igual a",
     "NOT_EQUALS": "Não é igual a",
-    "CONTACT_MANAGER": "Gestor de Contatos",
+    "CONTACT_MANAGER": "Gestão de Contatos",
     "INTEGRATIONS": "Integrações",
     "MOTIONBAR": "MotionBar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
+    "URL_FORWARD": "URL de Encaminhamento",
+    "WEB_POPUP": "Popup Web",
     "LIST": "Lista",
     "INTEGRATION": "Integração",
     "TEMPLATE": "Modelo",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "BROWSER": "Navegador",
     "INTERVAL": "Intervalo",
-    "INFO": "Informarção",
-    "TIME_RANGE": "Intervalo de tempo",
-    "WEEK_DAYS": "Dias úteis",
+    "INFO": "Info",
+    "TIME_RANGE": "Intervalo de Tempo",
+    "WEEK_DAYS": "Dias da Semana",
     "MONTH_DAYS": "Mês Dias",
     "MONTHS": "Meses",
     "DROP_TO_UPLOAD_MESSAGE": "Solte arquivos de áudio aqui para fazer o upload. Apenas MP3, WAV, GSM - máx. 15MB",
-    "POLLING_INTERVAL": "Intervalo de pesquisa (segundos)",
+    "POLLING_INTERVAL": "Intervalo de Pesquisa (segundos)",
     "DASHBOARD": "Dashboard",
     "NEW_DASHBOARDITEM": "Novo Widget do Dashboard",
     "COUNTER": "Contador",
     "EDIT_WIDGET": "Editar Widget",
     "DELETE_WIDGET": "Excluir Widget",
     "FLIP_WIDGET": "Girar Widget",
-    "TITLE": "Titulo",
+    "TITLE": "Título",
     "UPDATE": "Atualizar",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Cor de fundo",
     "FOREGROUND_COLOR": "Cor do Primeiro Plano",
     "FOREGROUND_TITLE_COLOR": "Cor do Título do Primeiro Plano",
     "THEME": "Tema",
-    "LIGHT": "Claro",
+    "LIGHT": "Light",
     "DARK": "Dark",
     "TIMEZONE": "Fuso horário",
     "DIGITAL_FORMAT": "Formato Data Digital",
     "TOOLS_QUERY": "Query",
     "SELECT": "Selecione",
-    "WHERE": "Where",
+    "WHERE": "Onde",
     "BACK": "Voltar",
     "PROJECT": "Projeto",
-    "GOTOREALTIME_TRUNK": "Ir para o Tronco em Tempo Real",
+    "GOTOREALTIME_TRUNK": "Visualizar Tronco em Tempo Real",
     "GOTO_TRUNK": "Ir para Tronco",
     "CRON": "Cron",
     "MINUTES": "Minutos",
-    "HOURLY": "De Hora em Hora",
+    "HOURLY": "Horário",
     "YEARLY": "Anual",
     "EVERY": "Cada",
     "MINUTE": "Minuto",
-    "ON_SECOND": "No segundo",
-    "HOUR_ON_MINUTE": "Hora no Minuto",
-    "AND_SECOND": "Em segundo lugar",
+    "ON_SECOND": "En segundo",
+    "HOUR_ON_MINUTE": "Hora e minuto",
+    "AND_SECOND": "Em segundo",
     "DAY_AT": "Dia em",
-    "START_TIME": "Hora de início",
+    "START_TIME": "Hora de Início",
     "ON_THE": "No",
     "OF_EVERY": "De todos",
     "MONTH_AT": "Mês em",
     "ON": "Em",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "EVENTVARIABLES": "Variáveis \200b\200bde Eventos",
-    "AUTOCREATECONTACT": "Criar Contato Automaticamente",
+    "AUTOCREATECONTACT": "Criar contato automaticamente",
     "LOCATION": "Localização",
-    "NEW_TAB": "Nova aba",
-    "NEW_WINDOW": "Nova janela",
-    "WINDOWWIDTH": "Largura da janela (px)",
-    "WINDOWHEIGHT": "Altura da janela (px)",
+    "NEW_TAB": "Nova Aba",
+    "NEW_WINDOW": "Nova Janela",
+    "WINDOWWIDTH": "Largura da Janela (px)",
+    "WINDOWHEIGHT": "Altura da Janela (px)",
     "BODY": "Corpo",
-    "REPORTFOLDER": "Pasta de relatórios",
-    "REPORTSUBFOLDER": "Subpasta de relatório",
+    "REPORTFOLDER": "Pasta do Relatório",
+    "REPORTSUBFOLDER": "Subpasta do Relatório",
     "PREVIOUSCONTACT": "Anterior",
-    "VIDEOSUPPORT": "Suporte de vídeo",
+    "VIDEOSUPPORT": "Suporte a vídeo",
     "AGENT": "Agente",
     "HEADERS": "Cabeçalhos",
-    "SCRIPT": "Roteiro",
-    "SCRIPT_INFO": "Informações",
+    "SCRIPT": "Script",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tipo",
     "MOTION_TAB": "Nova Aba",
-    "WHATSAPP": "Conector WhatsApp",
-    "AUTOCREATE_FIELD": "Criar Campo Automaticamente",
+    "WHATSAPP": "WhatsApp Connector",
+    "AUTOCREATE_FIELD": "Criar campo automaticamente",
     "GLOBALS": "Globais",
     "SEARCH_FIELDS": "Campos de busca",
     "STANDARD": "Padrão",
     "MOTION_BAR": "MotionBar",
     "ALL": "Tudo",
-    "ALL_DISPOSITIONS": "Todas Qualificações",
+    "ALL_DISPOSITIONS": "Todas qualificações",
     "FIRST_LEVEL_DISPOSITION": "Qualificação de Primeiro Nível",
-    "LEVEL": "Nível",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
-    "SELECT_LEVEL": "Selecione um nível",
-    "TITLEFONTSIZE": "Tamanho do título da fonte",
+    "LEVEL": "Level",
+    "SECOND_LEVEL_DISPOSITION": "Qualificação de Segundo Nível",
+    "SELECT_LEVEL": "Selecione um level",
+    "TITLEFONTSIZE": "Tamanho da Fonte do Título",
     "ADD_CONTACTITEMTYPE": "Adicionar",
-    "CONTACTITEMTYPE": "Tipos de Item de Contato",
+    "CONTACTITEMTYPE": "Tipos de item de contato",
     "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato",
     "ORDER_BY": "Ordenar por",
     "RGBBACKGROUNDCOLOR": "Cor de fundo RGB",
-    "EMAIL": "E-mail",
-    "FILTERCHATWEBSITES": "Filtrar Sites Chat",
-    "FILTEREMAILACCOUNTS": "Filtrar Contas Email",
-    "FILTERFAXACCOUNTS": "Filtrar Contas Fax",
-    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas OpenChannel",
-    "FILTERSMSACCOUNTS": "Filtrar Contas SMS",
-    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas Whatsapp",
-    "MANAGED": "Gerenciou",
-    "MANAGED_TEXT": "Interações gerenciadas",
+    "EMAIL": "Email",
+    "FILTERCHATWEBSITES": "Filtrar Sites de WebChat",
+    "FILTEREMAILACCOUNTS": "Filtrar Contas de Email",
+    "FILTERFAXACCOUNTS": "Filtrar Contas de Fax",
+    "FILTEROPENCHANNELACCOUNTS": "Filtrar Contas de OpenChannel",
+    "FILTERSMSACCOUNTS": "Filtrar Contas de SMS",
+    "FILTERWHATSAPPACCOUNTS": "Filtrar Contas de Whatsapp",
+    "MANAGED": "Gerenciado",
+    "MANAGED_TEXT": "Interações Gerenciadas",
     "OPENED": "Aberto",
-    "OPENED_TEXT": "Interações abertas",
+    "OPENED_TEXT": "Interações Abertas",
     "IGNOREDIALERCONTACTID": "Ignorar o ID de Contato do Discador",
     "MAIL_SUBSTATUS": "Substatus do Email",
-    "OFFLINE_MESSAGE": "Mensagem offline",
+    "OFFLINE_MESSAGE": "Mensagem Offline",
     "DELETE_CONTACTITEMTYPE": "Excluir Tipo de Item de Contato",
     "EDIT_CONTACTITEMTYPE": "Editar Tipo de Item de Contato",
-    "ORDER_BY_NUMERIC": "A ordem por campo deve ser um valor numérico!"
+    "ORDER_BY_NUMERIC": "o campo 'Ordenar por' deve ser um valor numérico!"
   }
 }
index cb5e0a9..49ed57e 100644 (file)
 {
   "VOICE": {
-    "SECOND_LEVEL_DISPOSITION": "Second Level Disposition",
-    "THIRD_LEVEL_DISPOSITION": "Third Level Disposition",
-    "FAILUREREASON": "Failure reason",
-    "TEXT": "Text",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
-    "INBOUND": "Inbound",
-    "OUTBOUND": "Outbound",
-    "DIALER": "Dialer",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
+    "SECOND_LEVEL_DISPOSITION": "Annarsstigs ráðstöfun",
+    "THIRD_LEVEL_DISPOSITION": "Þriðjastigs aðstoð",
+    "FAILUREREASON": "Ástæða mistaka",
+    "TEXT": "Texti",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Sækja afrit",
+    "INBOUND": "Innkomandi",
+    "OUTBOUND": "Útfarandi",
+    "DIALER": "Hringjari",
+    "LOGIN_TIME": "Innskráningar tími",
+    "PAUSE_TIME": "Tími á hléi",
+    "ABANDONEDCALLS": "Símtöl í biðröð sem hætta við",
+    "WAITING_FOR_AGENTS": "Beðið eftir fulltrúum",
+    "ACTIVE": "Virkur",
+    "NO_AGENT_ONLINE": "Enginn fulltrúi er innskráður",
+    "PARTIALPAUSE": "Hluta hlé",
+    "STATUS": "Staða",
+    "TIMER": "Tímamælir",
     "ALIAS": "Alias",
-    "ALL": "All",
+    "ALL": "Allir",
     "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "EDIT_TRUNK": "Breyta Trunk",
+    "GOTO_VOICEQUEUE": "Farðu í rauntíma tal biðraðir",
+    "GOTOREALTIME_VOICEQUEUE": "Farðu í rauntíma tal biðröð",
+    "NAME": "Nafn",
+    "LOGOUT": "Útskráning",
+    "VOICEQUEUES": "Tal biðraðir",
+    "SEARCH_FOR_ANYONE": "Leita",
+    "BACK": "Til baka",
+    "SELECTED": "Valið",
+    "SELECT_ALL": "Velja allt",
+    "SELECT_NONE": "Veldu engan",
+    "DELETE_VOICEDISPOSITION": "Eyða tal ráðstöfun",
+    "EDIT_VOICEDISPOSITION": "Breyta tal ráðstöfun",
+    "EDIT_VOICEQUEUE": "Breyta Tal biðröð",
+    "DELETE_VOICEQUEUE": "Eyða tal biðröð",
+    "MOHSOUNDS": "Moh hljómur",
+    "STRATEGY": "Stefna",
+    "DESCRIPTION": "Lýsing",
+    "ADD_VOICEQUEUE": "Bættu við tal biðröð",
+    "CREATED_AT": "Stofnað kl.",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Get ekki spilað GSM eða wav49 hljóðskrár",
+    "APPLICATIONS_LIST": "Umsóknarlisti",
+    "GENERAL": "Almennt",
+    "TIMEOUT": "Tíminn rann út",
+    "MAXLENGTH": "Hámarks lengd",
+    "RETRY": "Reyna aftur",
+    "WRAPUPTIME": "Wrapup Tími",
+    "WEIGHT": "Vægi",
+    "JOINWHENEMPTY": "Skráðu þig þegar það er tómt",
+    "LEAVEWHENEMPTY": "Skildu eftir þegar það er tómt",
+    "MUSICONHOLD": "Tónlist á bið",
+    "ANNOUNCETOAGENT": "Tilkynning til fulltrúa",
+    "ANNOUNCEMENTS": "Tilkynningar",
+    "ADVANCED": "Ítarlegt",
+    "ANNOUNCEFREQUENCY": "Tíðni tilkynninga",
+    "MINANNOUNCEFREQUENCY": "Lámarkstíðni tilkynninga",
+    "PERIODICANNOUNCEFREQUENCY": "Tíðni á reglulegum tilkynningum",
+    "RANDOMPERIODICANNOUNCE": "Handahós reglulegar tilkynningar",
+    "ANNOUNCEHOLDTIME": "Tilkynna biðtíma",
+    "ANNOUNCECALLERPOSITION": "Tilkynna röð innhringjanda",
+    "ANNOUNCEPOSITIONLIMIT": "Tilkynna hámark á bið í röð",
+    "REPORTHOLDTIMEAGENT": "Skrá hlé tíma á fulltrúa",
+    "PERIODICANNOUNCE": "reglulegar tilkynningar",
+    "HOLDTIMEANNOUNCE": "Biðtíma tilkynning",
+    "YOUARENEXTANNOUNCE": "'Þú ert næstur' tilkynning",
+    "THEREAREANNOUNCE": "'Það eru' Tilkynning",
+    "WAITINGCALLSANNOUNCE": "Tilkynningar fyrir á bið",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Tilkynning á áætluðum biðtíma",
+    "MINUTESANNOUNCE": "Tilkynningar mínútur",
+    "MINUTEANNOUNCE": "Tilkynningarmínúta",
+    "SECONDSANNOUNCE": "Tilkynna sekúndur",
+    "THANKYOUANNOUNCE": "'Takk fyrir'  tilkynning",
+    "AUTOPAUSE": "Sjálfvirkt hlé",
+    "AFTERCALLWORK": "Vinna eftir samtal",
+    "AFTERCALLWORKDURATION": "Vinnutími eftir samtal",
+    "RINGINUSE": "Hringing í notkun",
+    "MEMBERDELAY": "Hóp seinkun",
+    "TIMEOUTRESTART": "Tími rann út endursett",
+    "MONITORFORMAT": "Upptöku format",
+    "SETINTERFACEVARIABLES": "Stilltu viðmótsbreytur",
+    "SETQUEUEVARIABLES": "Stilltu biðraða breytur",
+    "SETQUEUEENTRYVARIABLES": "Stilltu biðraða færslu breytur",
+    "VARIABLE": "Breyta",
+    "CONTEXT": "Samhengi",
+    "SAVE": "Geyma",
+    "SETTINGS": "Stillingar",
+    "INBOUNDROUTES": "Innkomandi flæði",
+    "PHONENUMBER": "Síma númer",
+    "ADD_INBOUNDROUTE": "Bættu við innhringi flæði",
+    "EDIT_INBOUNDROUTE": "Breyta innhringi reglu",
+    "DELETE_INBOUNDROUTE": "Eyða innhringi reglu",
+    "ACTIONS": "Aðgerð",
+    "OUTBOUNDROUTES": "Úthringi flæði",
+    "DESTINATIONPATTERN": "Áfangastaða mynstur",
+    "ADD_OUTBOUNDROUTE": "Bættu við úthringi reglu",
+    "EDIT_OUTBOUNDROUTE": "Breyta úthringi flæði",
+    "DELETE_OUTBOUNDROUTE": "Eyða úthringi reglu",
+    "CUTDIGITS": "Taktu út tölustafi",
+    "RECORDING": "Tekur upp",
+    "RECORDINGFORMAT": "Snið á upptöku",
+    "INTERNALROUTES": "Innanhúss flæði",
+    "ADD_INTERNALROUTE": "Bættu við innanhúss flæði",
+    "EDIT_INTERNALROUTE": "Breyta innanhúss flæði",
+    "DELETE_INTERNALROUTE": "Eyða innanhúss reglu",
+    "CONTEXTS": "Samhengi",
+    "ADD_CONTEXT": "Bættu við texta",
+    "EDIT_CONTEXT": "Breyta samhengi",
+    "DELETE_CONTEXT": "Eyða samhengi",
+    "VOICEMAILS": "Talskilaboð",
+    "ADD_VOICEMAIL": "Bættu við talskilaboðum",
+    "EDIT_VOICEMAIL": "Breyta tal skilaboðum",
+    "DELETE_VOICEMAIL": "Eyða talskilaboðum",
+    "FULLNAME": "Fullt nafn",
+    "EMAIL": "Tölvupóstur",
+    "MAILBOX": "Pósthólf",
+    "PASSWORD": "Lykilorð",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "TIMEZONE": "Tímabelti",
+    "ATTACH": "Viðhengi",
+    "ENVELOPE": "Umslag",
+    "DELETE": "Eyða",
+    "EMAILBODY": "Innihald tölvupósts",
+    "EMAILSUBJECT": "Efni tölvupóstst",
+    "MAXSECONDS": "Hámarksfjöldi sekúnda",
+    "MAXMESSAGES": "Hámarks fjöldi skilaboða",
+    "MESSAGES": "Skilaboð",
+    "SORT": "Tegund",
+    "ADD_MUSICONHOLD": "Bættu við tónlist á bið",
+    "MUSICONHOLDS": "tónlist á bið",
+    "EDIT_MUSICONHOLD": "Breyta bið tónlist",
+    "DELETE_MUSICONHOLD": "Eyða tónlist á bið",
+    "DIRECTORY": "Skrá",
+    "AUDIOFILES": "Hljóð skrár",
+    "RECORDINGS": "Upptökur",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Forskeyti",
+    "OPTIONS": "Valmöguleikar",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Bættu við ChanSpy",
+    "EDIT_CHANSPY": "Breyta ChanSpy",
+    "DELETE_CHANSPY": "Eyða ChanSpy",
+    "AGENTS": "Fulltrúar",
+    "TELEPHONES": "Símar",
+    "QUEUES": "Raðir",
+    "QUEUE_CALLS": "Símtöl í röðinni",
+    "QUEUE_PARAMETERS": "Sillingar á röð",
+    "ABANDONED_CALLS": "Símtöl sem hætta við",
+    "OUTBOUND_CALLS": "Úthringingar",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Hringja",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
-    "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
+    "INTERNALDIAL": "Innanhús hringing",
+    "EXTERNALDIAL": "Úthringing",
+    "RINGGROUP": "Hringi hópur",
+    "PLAYBACK": "Endurspilun",
+    "QUEUE": "Röð",
+    "SET": "Settu",
+    "VOICEMAIL": "Talskilaboð",
+    "GOTO": "Fara á",
+    "HANGUP": "Leggja á",
+    "CUSTOM": "Sérsniðin",
+    "PROJECT": "Cally-Square verkefni",
     "TECHNOLOGY/RESOURCE": "Technology/Resource",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
+    "EDIT_APP": "Breyta forriti",
+    "EDIT_INTERVAL": "Breyta bili",
+    "DELETE_APP": "Eyða umsókn",
+    "INTERVALS": "Bil",
+    "USER": "Notandi",
     "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
+    "PHONE": "Sími",
+    "AUDIO_FILES": "Hljóð skrár",
+    "ANNOUNCE_OVERRIDES": "Tilkynna yfirskrifað",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
+    "RULE": "Regla",
+    "POSITION": "Staða",
+    "ANSWER": "Svarað",
+    "VALUE": "Gildi",
     "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "EXTENSION": "Innanhúss nr.",
+    "PRIORITY": "Forgangur",
+    "HANGUP_CAUSE": "Ástæaða fyrir því að lagt var á",
+    "OUTBOUNDDIAL": "Úthringing",
+    "CALLER_ID": "Auðkenni hringjara",
+    "NO_MESSAGE_AVAILABLE": "Engin skilaboð fáanleg",
+    "NO_SOUND_AVAILABLE": "Engin tónlist tiltæk",
+    "VOICERECORDINGS": "Tal upptökur",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
-    "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
-    "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "VOICE": "Tal",
+    "REALTIME": "Rauntími",
+    "ID": "Auðkenni",
+    "VOICEMAIL_CONTEXT": "Samhengi",
+    "NO_MOHSOUND_AVAILABLE": "Engin tónlist á bið til staðar",
+    "FILE": "Skrá",
+    "ADD_MOHSOUND": "Bættu við tónlistar tegund á bið",
+    "DOWNLOAD_MOHSOUND": "Hlaða niður tónlist fyrir á bið",
+    "DELETE_MOHSOUND": "Eyða tegund tónlistar á bið",
+    "UNIQUEID": "Sértækt auðkenni",
+    "AGENT": "Fulltrúi",
+    "TYPE": "Tegund",
+    "RATING": "Einkunn",
+    "AUDIO": "Hljóð",
+    "DATE": "Dags.",
+    "NEW_VOICEQUEUE": "Ný tal biðröð",
+    "NEW_INBOUNDROUTE": "Nýtt innhringi flæði",
+    "NEW_OUTBOUNDROUTE": "Ný úthringi regla",
+    "NEW_INTERNALROUTE": "Nýtt innanhús flæði",
+    "NEW_CONTEXT": "Nýtt samhengi",
+    "NEW_VOICEMAIL": "Ný talskilaboð",
+    "NEW_MUSICONHOLD": "Ný tónlist á bið",
+    "NEW_CHANSPY": "Nýtt ChanSpy",
+    "PENALTY": "Refsing",
+    "ADD_TEAM_TO_VOICEQUEUE": "Bættu við hóp á tal biðröð",
+    "ADD_AGENT_TO_VOICEQUEUE": "Bættu fulltrúa við tal biðröð",
+    "EDIT_DIAL": "Breyta hringjara",
+    "EDIT_AGI": "Breyta AGI",
+    "EDIT_INTERNALDIAL": "Breyta innri hringingu",
+    "EDIT_EXTERNALDIAL": "Breyta utanaðkomandi hringjara",
+    "EDIT_RINGGROUP": "Breyta hringi hóp",
+    "EDIT_PLAYBACK": "Breyta endurspilun",
+    "EDIT_QUEUE": "Breyta biðröð",
+    "EDIT_SET": "Breyta stillingu",
+    "EDIT_GOTO": "Breyta fara á",
+    "EDIT_HANGUP": "Breyta leggja á",
+    "EDIT_CUSTOM": "Breyta sérsniði",
+    "DURATION": "Lengd",
+    "RECEIVED_AT": "Móttekið kl.",
+    "YES": "Já",
+    "NO": "Nei",
+    "HANGUPCAUSE_1": "1 = Óúthlutað númer",
+    "HANGUPCAUSE_16": "16 = Venjuleg símtals hreinsun",
+    "HANGUPCAUSE_17": "17 = Notandi er upptekinn",
+    "HANGUPCAUSE_18": "18 = Enginn notandi svarar (símatæki ekki tengt)",
+    "HANGUPCAUSE_21": "21 = Símtali hafnað",
+    "HANGUPCAUSE_22": "22 = Núeri hefur verið breytt",
+    "HANGUPCAUSE_27": "27 = Áfangastaður er í ólagi",
+    "HANGUPCAUSE_38": "38 = Netið virkar ekki",
+    "HANGUPCAUSE_41": "41 = Tímabundin bilun",
+    "RANDOM": "Handahófi",
+    "ALPHABETICAL": "Stafrófsröð",
+    "NO_APPS_AVAILABLE": "Engin forrit í boði",
+    "DOWNLOAD_VOICERECORDING": "Hlaða niður tal upptöku",
     "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
-    "INFO": "Info",
+    "INTERNAL": "Innanhúss",
+    "PHONE_STATE": "Staða á síma",
+    "PHONE_STATUS": "Staða á símum",
+    "TRUNK_STATUS": "Trunk Staða",
+    "REGISTERED": "Skráð",
+    "UNREGISTERED": "Óskráð",
+    "LAGGED": "Seinkun",
+    "REACHABLE": "Hægt að ná í",
+    "UNREACHABLE": "Ekki hægt að ná í",
+    "UNKNOWN": "Óþekkt",
+    "NOT_INUSE": "Ekki í notkun",
+    "INUSE": "Í notkun",
+    "BUSY": "Upptekin",
+    "INVALID": "Ógilt",
+    "UNAVAILABLE": "Aðgengilegt",
+    "RINGING": "Hringir",
+    "ONHOLD": "Á bið",
+    "RING": "Hringja",
+    "UP": "Upp",
+    "INFO": "Uppls.",
     "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "REGISTRY": "Þjóðskrá",
+    "NO_REGISTRY": "Engin skráning",
+    "LOGGED_IN": "Innskráður (SIP Connected)",
+    "PAUSED": "Hlé",
+    "WAITING": "Bíður",
+    "TALKING": "Talar",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "CALLER": "Hringjari",
+    "TOTAL": "Heildar",
+    "ANSWERED": "Svöruð",
+    "ABANDONED": "Hætt við",
+    "UNMANAGED": "Óstýrt",
+    "AVG_HOLD_TIME": "Meðaltals tími á bið",
+    "AVG_DURATION": "Meðal lengd",
+    "AVG_BILLABLE": "Meðal reikningshæft",
+    "SOURCE": "Uppruni",
+    "DESTINATION": "Áfangastaður",
+    "REJECTED": "Hafnað",
+    "FAILED": "Mistókst",
+    "CALLED": "Hringt",
+    "CONNECTED": "Tengdur",
+    "NO_RATING": "Engin einkunn",
+    "EDIT_VOICERECORDING": "Breyta tal upptökum",
+    "APPLICATION_NAME": "Nafn umsóknar",
+    "ARGUMENTS": "Rök",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar fáanlegar",
+    "ADD_AGENT_TO_QUEUE": "Bættu fulltrúa við biðröð",
+    "DEFAULT_PAUSE": "Staðlað hlé",
+    "PAUSE": "Hlé",
+    "UNPAUSE": "Enda hlé",
+    "REDIRECT_TO_NUMBER": "Beina á númer",
+    "REDIRECT_TO_AGENT": "Beina á fulltrúa",
+    "AGENTADD_VOICEQUEUE": "Bættu við fulltrúa í tal biðröð",
+    "APPLICATION": "Umsókn",
+    "FILES": "Skrár",
+    "FORMAT": "Snið",
+    "MODE": "Hamur",
+    "RECORD": "Upptaka",
+    "TEAMADD_VOICEQUEUE": "Bættu við hópi í tal biðröð",
+    "NEW_MOHSOUND": "Ný tónlist á bið",
+    "DOWNLOAD_MESSAGE": "Niðurhal",
+    "DELETE_MESSAGE": "Eyða",
+    "QUEUE_PARAMS": "Stillingar á röð",
+    "TOTAL_OFFERED": "Samtals boðið",
+    "READY": "Tilbúið",
+    "AGENTADD_QUEUE": "Bættu við fulltrúa í tal biðröð",
+    "AGENTSADD_QUEUE": "Bættu við fulltrúm í tal biðröð",
+    "ALL_TEAMS": "Allir hóper",
+    "SELECTED_TEAMS": "Valdir hópar",
+    "ALL_AGENTS": "Allir fulltrúar",
+    "SELECTED_AGENTS": "Valdir fulltrúar",
+    "CLOSING": "Lokar",
+    "TAGS": "Tögg",
+    "WAITING_FOR_AGENT": "Beðið eftir fulltrúa",
+    "EDIT_OUTBOUNDDIAL": "Breyta úthringingu",
+    "ACCOUNTNAME": "Nafn á reikningi",
+    "PAGE": "Bls.",
+    "ROWSPERPAGE": "Raðir á síðu",
+    "OF": "af",
+    "DISPOSITION": "Ráðstöfun",
+    "CHAT": "Spjall",
+    "MAIL": "Tölvupóstur",
     "SMS": "SMS",
     "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "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",
-    "MANDATORYDISPOSITION": "Mandatory disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
-    "SCREENRECORDING": "Manage Screen Recording",
-    "START_SCREENRECORDING": "Start Screen Recording",
-    "STOP_SCREENRECORDING": "Stop Screen Recording",
-    "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-    "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-    "CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
-    "WRONG_EXTENSION": "The file presents the wrong extension",
-    "FILE_NOT_FOUND": "File not found",
-    "TEAMS_ASSOCIATION": "Teams Association",
-    "TRANSCRIBE": "Transcribe",
-    "TRANSCRIPT": "Transcript",
-    "SENTIMENTANALYSIS": "Sentiment Analysis",
-    "TRANSCRIBESTATUS_COMPLETED": "Completed",
-    "TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
-    "TRANSCRIBESTATUS_FAILED": "Failed",
-    "TRANSCRIBESTATUS_NEW": "New",
-    "TRANSCRIPTANALYSIS": "Transcript & Analysis",
-    "SENTIMENT_POSITIVE": "Positive",
-    "SENTIMENT_NEGATIVE": "Negative",
-    "SENTIMENT_NEUTRAL": "Neutral",
-    "SENTIMENT_MIXED": "Mixed",
+    "CLEAR": "Hreinsa",
+    "CALLS": "Símtöl",
+    "STARTEDAT": "Byrjað kl.",
+    "ENDEDAT": "Hætt kl.",
+    "TAG": "Tögg",
+    "DETAILS": "Upplýsingar",
+    "BILLABLESECONDS": "Ræikningshæfar sekúndur",
+    "ANSWEREDAT": "Svarað kl.",
+    "NOTE": "Ath",
+    "CLOSE": "Loka",
+    "SELECT_DATE": "Veldu upphafsdagsetningu",
+    "SELECT_TYPE": "Veldu tegun",
+    "VOICEPREFIXES": "Forskeyti fyrir út",
+    "NEW_VOICEPREFIX": "Nýtt forskeyti",
+    "ADD_VOICEPREFIX": "Bættu við forskeyti",
+    "EDIT_VOICEPREFIX": "Breyta forskeyti",
+    "AGENTADD_VOICEPREFIX": "Bættu fulltrúa við forskeyti",
+    "TEAMADD_VOICEPREFIX": "Bættu við hópa forskeyti",
+    "DELETE_VOICEPREFIX": "Eyða forskeyti",
+    "OUTBOUNDROUTE": "Úthringi flæði",
+    "CALLERIDALL": "Auðkenni hringjara",
+    "MANDATORYDISPOSITION": "Skilyrt ráðstöfun",
+    "MANDATORYDISPOSITIONPAUSEID": "Staða á skilyrtum hléum",
+    "SCREENRECORDING": "Stjórna skjá upptökum",
+    "START_SCREENRECORDING": "Byrja skjá upptöku",
+    "STOP_SCREENRECORDING": "Stoppa skjá upptöku",
+    "TOOLTIP_SCREENRECORDING_ON": "Skjáupptaka í gangi",
+    "TOOLTIP_SCREENRECORDING_OFF": "Skjá upptaka möguleg",
+    "CANT_DOWNLOAD_THIS_FILE": "Getur ekki hlaðið niður þessari skrá",
+    "WRONG_EXTENSION": "Skráin sýnir ranga endingu",
+    "FILE_NOT_FOUND": "Fann ekki skrána",
+    "TEAMS_ASSOCIATION": "Fulltrúar í hópum",
+    "TRANSCRIBE": "Afrita",
+    "TRANSCRIPT": "Afrita",
+    "SENTIMENTANALYSIS": "Greining á tilfinningu",
+    "TRANSCRIBESTATUS_COMPLETED": "Lokið",
+    "TRANSCRIBESTATUS_IN_PROGRESS": "Í gangi",
+    "TRANSCRIBESTATUS_FAILED": "Mistókst",
+    "TRANSCRIBESTATUS_NEW": "Nýtt",
+    "TRANSCRIPTANALYSIS": "Afrita og greina",
+    "SENTIMENT_POSITIVE": "Jákvætt",
+    "SENTIMENT_NEGATIVE": "Neikvætt",
+    "SENTIMENT_NEUTRAL": "Hlutlaust",
+    "SENTIMENT_MIXED": "Blandað",
     "RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "SENTIMENT": "Sentiment",
-    "SERVICELEVEL": "Service level",
-    "MAXCAPACITY": "Max capacity",
-    "WORKING": "Working",
-    "NO_AGENT_AVAILABLE": "No agent available",
-    "CALL_NUMBER_REDIRECT": "Which number do you want to redirect the call to?",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Keyra umritun&viðhorf",
+    "RUNSENTIMENT_VOICERECORDING": "Keyra viðhorg",
+    "SENTIMENT": "Tilfinning",
+    "SERVICELEVEL": "Þjónustustig",
+    "MAXCAPACITY": "Hámarksgeta",
+    "WORKING": "Í vinnslu",
+    "NO_AGENT_AVAILABLE": "Engin fulltrúi laus",
+    "CALL_NUMBER_REDIRECT": "Í hvaða númer viltu beina símtalinu?",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Sérsniðin forrit"
     },
     "ERRORS": {
-      "PROJECT_REQUIRED": "Mandatory field",
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
-      "PENALTY_REQUIRED": "You must specify a value for penalty"
+      "PROJECT_REQUIRED": "Skilyrtur reitur",
+      "TRUNK_REQUIRED": "Skilyrtur reitur",
+      "VARIABLE_REQUIRED": "Skilyrtur reitur",
+      "NAME_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_NAME_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_REQUIRED": "Skilyrtur reitur",
+      "PHONENUMBER_REQUIRED": "Skilyrtur reitur",
+      "CONTEXT_REQUIRED": "Skilyrtur reitur",
+      "DESTINATIONPATTERN_REQUIRED": "Skilyrtur reitur",
+      "FULLNAME_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_REQUIRED": "Skilyrtur reitur",
+      "EMAIL_MUST_VALID": "Rangt snið",
+      "MAILBOX_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "TIMEZONE_REQUIRED": "Skilyrtur reitur",
+      "PREFIX_REQUIRED": "Skilyrtur reitur",
+      "OPTIONS_REQUIRED": "Skilyrtur reitur",
+      "AFTERCALLWORKDURATION_REQUIRED": "Skilyrtur reitur",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Skilyrtur reitur",
+      "PHONE_REQUIRED": "Skilyrtur reitur",
+      "VALUE_REQUIRED": "Skilyrtur reitur",
+      "EXTENSION_REQUIRED": "Skilyrtur reitur",
+      "PRIORITY_REQUIRED": "Skilyrtur reitur",
+      "APPLICATION_REQUIRED": "Skilyrtur reitur",
+      "OUTBOUNDROUTE_REQUIRED": "Skilyrtur reitur",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Gildið verður að vera stærra en eða jafnt og",
+      "NAME_MUST_VALID_PATTERN": "Rangt snið",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Rangt snið",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Skilyrtur reitur",
+      "CALLER_ID_MUST_VALID_PATTERN": "Rangt snið",
+      "PENALTY_REQUIRED": "Þú verður að tilgreina gildi fyrir refsingu"
     },
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the format of the recording file. If it set to 'inactive', calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
-      "SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)",
-      "SAVE_ROUTES": "The routing has been modified. Remember to save if you don't want to lose your changes."
+      "TIMEOUT": "Í hversu margar sekúndur á að hringja í tækið",
+      "MAXLENGTH": "Hámarksfjöldi þeirra sem hringja inn mega bíða í biðröð: núll þýðir ótakmarkað",
+      "RETRY": "Tími í sekúndum til að bíða áður en hringt er í næsta fulltrúa í biðröð þegar tíminn er runninn út",
+      "WRAPUPTIME": "Tími í sekúndum til að halda meðlimi í biðröð ótiltækum eftir að símtali er lokið \"Wrapup\"",
+      "WEIGHT": "Vægi biðraðar til að skilgreina forgang ef meðlimir eru tengdir við margar biðraðir",
+      "JOINWHENEMPTY": "Notað til að stjórna því hvort hringjandi sé áframsendur í biðröð þegar engir meðlimir (fulltrúar) eru tiltækir",
+      "LEAVEWHENEMPTY": "Notað til að stjórna því hvort hringjendur fari úr biðröðinni þegar engir meðlimir eru tiltækir til að svara símtölum",
+      "ANNOUNCEFREQUENCY": "Hversu oft á að tilkynna staðsetningu þess sem hringir og/eða áætlaðan biðtíma í biðröðinni (núll til að slökkva á)",
+      "MINANNOUNCEFREQUENCY": "Lágmarks tíðni tilkynninga (gagnlegt þegar staða þess sem hringir breytist oft)",
+      "PERIODICANNOUNCEFREQUENCY": "Tíðni reglubundinna tilkynninga til þess sem hringir",
+      "ANNOUNCEPOSITIONLIMIT": "Til að tilkynna hámark á fjölda í biðröðinni",
+      "AFTERCALLWORKDURATION": "Lengd hlés sem ræst af valkostinum eftir samtali Wrapup tíma valmöguleikanum",
+      "MEMBERDELAY": "Setur inn töf áður en hringir og fulltrúi í biðröð tengjast",
+      "MUSICONHOLD": "Stillir tónlistarflokkinn til að nota fyrir tiltekna biðröð",
+      "ANNOUNCETOAGENT": "Spilaðu tilkynningu til fulltrúans sem svarar símtalinu (venjulega til að láta hann vita úr hvaða röð sá sem hringir kemur úr)",
+      "RANDOMPERIODICANNOUNCE": "Ef já, þá verða skilgreindar reglubundnar tilkynningar spilaðar af handahófi",
+      "ANNOUNCEHOLDTIME": "Spilar áætlaðan biðtíma ásamt reglubundnum tilkynningum (Já/Nei/Einu sinni)",
+      "ANNOUNCECALLERPOSITION": "Notað til að skilgreina hvort tilkynna eigi um stöðu þess sem hringir í biðröðinni: Nei=aldrei; Já=alltaf; Limit=aðeins ef það er innan þeirra marka sem skilgreint er af tilkynna-stöðu-mörk; Meira= aðeins ef það er umfram gildið sem skilgreint er af tilkynna-stöðu-mörk",
+      "REPORTHOLDTIMEAGENT": "Gerir kleift að tilkynna biðtíma þess sem hringir inn til fulltrúa sem svarar áður en tengingin hefst",
+      "PERIODICANNOUNCE": "Sett af reglubundnum tilkynningum sem á að spila (í röð)",
+      "HOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"Biðtími\". Óskilgreint=engin tilkynning",
+      "YOUARENEXTANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þú ert nú fyrstur í röðinni”. Óskilgreint=engin tilkynning",
+      "THEREAREANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"Það eru til\". Óskilgreint=engin tilkynning",
+      "WAITINGCALLSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default = \"símtöl í bið\". Óskilgreint=engar tilkynningar",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Núverandi áætlaður biðtími er”. Óskilgreint=engin tilkynningChoose a Sound defined in Tools. ",
+      "MINUTESANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínútur\". Óskilgreint=engin tilkynning",
+      "MINUTEANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"mínúta\". Óskilgreint=engin tilkynning",
+      "SECONDSANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Sjálfgefið = \"sekúndur\". Óskilgreint=engin tilkynning",
+      "THANKYOUANNOUNCE": "Veldu hljóð sem er skilgreint í Tools. Default=“Þakka þér fyrir þolinmæðina”. Óskilgreint=engin tilkynning",
+      "AFTERCALLWORK": "Ef virkt verður fulltrúinn settur á hlé eftir að símtali er lokið",
+      "AUTOPAUSE": "\nVirkjar/afvirkjar á sjálfvirkru hléi fulltrúans sem svara ekki símtali. Ef það er virkt veldur það að fulltrúinn er í biðröð í öllum biðröðum sem hann tilheyrir",
+      "RINGINUSE": "Til að forðast/leyfa símtöl til meðlima (fulltrúa) sem eru uppteknir",
+      "TIMEOUTRESTART": "Ef já, þá endurstillir þetta tímamörk fyrir fulltrúa til að svara þegar annaðhvort ANNAРeða Congestion staða er móttekin frá rásinni",
+      "MONITORFORMAT": "Tilgreinir snið upptökuskrárinnar. Ef það er stillt á „óvirkt“ verða símtöl ekki tekin upp",
+      "CONTEXT": "Leyfir viðmælanda að fara úr biðröðinni með því að ýta á einn DTMF tölustaf. Ef samhengi er tilgreint og sá sem hringir slær inn númer mun sá tölustafur reyna að passa saman í því samhengi sem tilgreint er og keyrsla hringingaráætlunar heldur áfram þar",
+      "SETINTERFACEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröðina eru nokkrar breytur stilltar (fyrir frekari upplýsingar sjá wiki skjöl)",
+      "SETQUEUEVARIABLES": "Ef stillt er á já, rétt áður en sá sem hringir er tengdur við biðröð og yfirgefur biðröðina, verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl)",
+      "SETQUEUEENTRYVARIABLES": "Ef stillt er á já, rétt áður en viðmælandi er tengdur við biðröð fulltrúans verða nokkrar breytur stilltar (fyrir frekari upplýsingar, sjá wiki skjöl",
+      "RECORDING": "Virkja upptöku símtala",
+      "VOICEMAIL_CONTEXT": "Samhengi hlutfallslegs innanhúsnúmers",
+      "NAME": "Aðeins tölur, stafir og sérstakir stafir (._) eru studdir",
+      "CALLERIDALL": "Stutt snið: \"CallerId\" <númer>",
+      "CALLER_ID": "Stutt snið: \"CallerId\" <númer>",
+      "MANDATORYDISPOSITIONPAUSEID": "Gera hlé á stöðu til að stilla meðan á skilyrtu hléi stendur",
+      "SERVICELEVEL": "Önnur stilling fyrir þjónustustig (sjálfgefið=0, engin SL). Notað fyrir tölfræði þjónustustigs (símtölum svarað innan þjónustustigs tímaramma)",
+      "SAVE_ROUTES": "Flæðinu hefur verið breytt. Mundu að vista ef þú vilt ekki missa breytingarnar."
     },
     "NOTIFICATIONS": {
-      "EXTENSION_CREATED_SUCCESS_TITLE": "Route successfully created",
-      "EXTENSION_SAVED_SUCCESS_TITLE": "Route successfully saved",
-      "EXTENSION_DELETE_TITLE": "Are you sure want to delete the route?",
-      "EXTENSION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "EXTENSION_DELETED_SUCCESS_TITLE": "Route successfully deleted",
-      "EXTENSIONS_DELETE_TITLE": "Are you sure want to delete the selected routes?",
-      "EXTENSIONS_DELETE_MESSAGE": "{{ total }} routes will be deleted",
-      "ROUTING_APPLICATION_DELETE_TITLE": "Are you sure want to delete the application?",
-      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} will be deleted",
-      "ROUTING_APPLICATIONS_DELETE_TITLE": "Are you sure want to delete the selected applications?",
-      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} applications will be deleted",
-      "CALLYSQUARE_PROJECTS_GET_ERROR": "Unable to retrieve any CallySquare project",
-      "TRUNKS_GET_ERROR": "Unable to retrieve any trunk",
-      "VOICE_CONTEXTS_GET_ERROR": "Unable to retrieve any voice context",
-      "QUEUES_GET_ERROR": "Unable to retrieve any queue",
-      "SOUNDS_GET_ERROR": "Unable to retrieve any sound",
-      "USERS_GET_ERROR": "Unable to retrieve any user",
-      "VARIABLES_GET_ERROR": "Unable to retrieve any variable",
-      "VOICEMAILS_GET_ERROR": "Unable to retrieve any voicemail",
-      "TAGS_GET_ERROR": "Unable to retrieve any tag",
-      "INTERVALS_GET_ERROR": "Unable to retrieve any interval",
-      "CALL_HANGUP_SUCCESS": "Call hung up successfully",
-      "CALL_REDIRECT_SUCCESS": "Call redirected successfully"
+      "EXTENSION_CREATED_SUCCESS_TITLE": "Tókst að stofna flæði",
+      "EXTENSION_SAVED_SUCCESS_TITLE": "Tókst að geyma flæði",
+      "EXTENSION_DELETE_TITLE": "Ertu viss um að þú vilir eyða völdum flæðum?",
+      "EXTENSION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "EXTENSION_DELETED_SUCCESS_TITLE": "Tókst að eyða flæði",
+      "EXTENSIONS_DELETE_TITLE": "Ertu viss um að þú viljir eyða völdum flæðum?",
+      "EXTENSIONS_DELETE_MESSAGE": "{{ samtals }} flæðum verður eytt",
+      "ROUTING_APPLICATION_DELETE_TITLE": "ertu viss um að þú viljir eyða forritinu?",
+      "ROUTING_APPLICATION_DELETE_MESSAGE": "{{ name }} verður eytt",
+      "ROUTING_APPLICATIONS_DELETE_TITLE": "Ertu viss um að þú viljir eða völdum forritum?",
+      "ROUTING_APPLICATIONS_DELETE_MESSAGE": "{{ total }} forritum verður eytt",
+      "CALLYSQUARE_PROJECTS_GET_ERROR": "Ekki er hægt að sækja neitt CallySquare verkefni",
+      "TRUNKS_GET_ERROR": "Ekki tókst að endurheimta trunk",
+      "VOICE_CONTEXTS_GET_ERROR": "Ekki tókst að endurheimta tal samhengi",
+      "QUEUES_GET_ERROR": "Ekki tókst að sækja biðraðir",
+      "SOUNDS_GET_ERROR": "Ekki tókst að endurheimta hljóð",
+      "USERS_GET_ERROR": "Ekki tókst að endurheimta notendur",
+      "VARIABLES_GET_ERROR": "Ekki tókst að endurheimta breytur",
+      "VOICEMAILS_GET_ERROR": "Ekki tókst að endurheimta talskilaboð",
+      "TAGS_GET_ERROR": "Ekki tókst að endurheimta tögg",
+      "INTERVALS_GET_ERROR": "Ekki er hægt að sækja neitt bil",
+      "CALL_HANGUP_SUCCESS": "Tókst að leggja á",
+      "CALL_REDIRECT_SUCCESS": "Tókst að áframsenda símtal"
     }
   }
 }
index 7e2c6e6..4f927e3 100644 (file)
@@ -3,17 +3,17 @@
     "LOGIN_TIME": "Tempo de Login",
     "PAUSE_TIME": "Tempo de Pausa",
     "ABANDONEDCALLS": "Chamadas Abandonadas",
-    "WAITING_FOR_AGENTS": "Esperando por agentes",
+    "WAITING_FOR_AGENTS": "Aguardando por agentes",
     "ACTIVE": "Ativo",
-    "NO_AGENT_ONLINE": "Nenhum aAente Online",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
     "PARTIALPAUSE": "Pausa Parcial",
     "STATUS": "Status",
-    "TIMER": "Cronômetro",
+    "TIMER": "Timer",
     "ALL": "Todos",
     "IDLE": "Disponível",
     "EDIT_TRUNK": "Editar Tronco",
-    "GOTO_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
-    "GOTOREALTIME_VOICEQUEUE": "Ir para Filas de Voz em Tempo Real",
+    "GOTO_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
+    "GOTOREALTIME_VOICEQUEUE": "Visualizar Fila de Voz em Tempo Real",
     "NAME": "Nome",
     "LOGOUT": "Logout",
     "VOICEQUEUES": "Filas de Voz",
     "EDIT_VOICEDISPOSITION": "Editar Qualificação de Voz",
     "EDIT_VOICEQUEUE": "Editar Fila de Voz",
     "DELETE_VOICEQUEUE": "Excluir Fila de Voz",
-    "MOHSOUNDS": "Moh Sounds",
+    "MOHSOUNDS": "Áudios de Música de Espera",
     "STRATEGY": "Estratégia",
     "DESCRIPTION": "Descrição",
     "ADD_VOICEQUEUE": "Adicionar Fila de Voz",
     "CREATED_AT": "Criado em",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio gsm ou wav49",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Não é possível reproduzir arquivos de áudio no formato gsm ou wav49",
     "APPLICATIONS_LIST": "Lista de Aplicações",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Aplicativo Personalizado"
       "PENALTY_REQUIRED": "Você deve especificar um valor para a penalidade"
     },
     "GENERAL": "Geral",
-    "TIMEOUT": "Tempo eEgotado",
+    "TIMEOUT": "Timeout",
     "MAXLENGTH": "Tamanho Máximo",
     "RETRY": "Tente Novamente",
-    "WRAPUPTIME": "Tempo de Qualificação",
+    "WRAPUPTIME": "Tempo de Pós-atendimento",
     "WEIGHT": "Peso",
-    "JOINWHENEMPTY": "Juntar quando Vazio",
-    "LEAVEWHENEMPTY": "Sair quando Vazio",
+    "JOINWHENEMPTY": "Juntar quando vazio",
+    "LEAVEWHENEMPTY": "Desligar quando vazio",
     "HELP": {
-      "TIMEOUT": "Tempo em segundos ficar chamando (toques) um dispositivo",
-      "MAXLENGTH": "Número máximo de chamadores que podem esperar em uma fila: zero significa ilimitado",
-      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o tempo limite expirar",
+      "TIMEOUT": "Quantos segundos ficará tocando um device (tempo de toque)",
+      "MAXLENGTH": "Número máximo de clientes que podem esperar em uma fila: zero significa ilimitado",
+      "RETRY": "Tempo em segundos para aguardar antes de chamar o próximo agente quando o timeout expirar",
       "WRAPUPTIME": "Tempo em segundos para manter um agente indisponível depois de concluir uma chamada",
       "WEIGHT": "Peso para definir a prioridade se os agentes estiverem associados a várias filas",
-      "JOINWHENEMPTY": "Usado para controlar se um chamador é passado para fila quando nenhum agente está disponível",
-      "LEAVEWHENEMPTY": "Usado para controlar se os chamadores serão passados para fila quando nenhum agente está disponível",
-      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do chamador e / ou o tempo estimado de espera na fila (zero para desativar)",
+      "JOINWHENEMPTY": "Usado para controlar se um cliente é passado para fila quando nenhum agente está logado",
+      "LEAVEWHENEMPTY": "Usado para controlar se desligará todos os clientes que estão esperando na fila caso todos os agentes desloguem ",
+      "ANNOUNCEFREQUENCY": "Com que frequência anunciará a posição do cliente e / ou o tempo estimado de espera na fila (zero para desativar)",
       "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio (útil quando a posição do chamador muda com frequência)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o chamador",
-      "ANNOUNCEPOSITIONLIMIT": "Usado se a posição de anúncio for definida como \"limite\" ou \"mais\"",
-      "AFTERCALLWORKDURATION": "Duração da Pausa configurado pela opção Após Chamada",
-      "MEMBERDELAY": "Insere um atraso antes de o chamador e o agente na fila se conectarem",
+      "PERIODICANNOUNCEFREQUENCY": "Frequência de anúncios periódicos para o cliente",
+      "ANNOUNCEPOSITIONLIMIT": "Usado se o anúncio de posiçao do for definida como \"limit\" ou \"more\"",
+      "AFTERCALLWORKDURATION": "Duração da Pausa configurado na de Pós-atendimento (ACW)",
+      "MEMBERDELAY": "Insere um atraso antes de o cliente e o agente se conectarem",
       "MUSICONHOLD": "Define a Música de Espera",
-      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente que atende a chamada (geralmente para que ele saiba de qual fila o chamador está vindo)",
+      "ANNOUNCETOAGENT": "Reproduzir um anúncio para o agente (geralmente para que ele saiba de qual fila o cliente está vindo)",
       "RANDOMPERIODICANNOUNCE": "Se sim, os anúncios periódicos definidos serão reproduzidos aleatoriamente",
-      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Sim / Não / Uma vez)",
-      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do chamador na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido pelo limite de posição de anúncio; Mais = apenas se estiver além do valor definido pelo limite de posição de anúncio.",
-      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do chamador seja informado ao agente antes da conexão",
+      "ANNOUNCEHOLDTIME": "Reproduz o tempo de espera estimado junto com os anúncios periódicos (Yes/No/Once)",
+      "ANNOUNCECALLERPOSITION": "Usado para ativar anúncio de posição do cliente na fila: No = nunca; Yes = sempre; Limite = somente se estiver dentro do valor definido; More = apenas se estiver além do valor definido.",
+      "REPORTHOLDTIMEAGENT": "Permite que o tempo de espera do cliente seja informado ao agente antes da conexão",
       "PERIODICANNOUNCE": "Conjunto de anúncios periódicos a serem reproduzidos (na ordem)",
-      "HOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
-      "YOUARENEXTANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
-      "THEREAREANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
-      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido em ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um som definido em ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
-      "MINUTESANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
-      "MINUTEANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
-      "SECONDSANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
-      "THANKYOUANNOUNCE": "Escolha um áudio definido em ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
-      "AFTERCALLWORK": "Se ativado, o agente entrará em Pausa após desligar",
-      "AUTOPAUSE": "Ativar / desativar a pausa automática para agentes que não atendem chamada. Se ativado, faz com que o agente entre em pausa em todas as filas às quais ele pertence.",
+      "HOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Tempo de Espera”. Indefinido = sem anúncio",
+      "YOUARENEXTANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Você agora é o primeiro da fila”. Indefinido = sem anúncio",
+      "THEREAREANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Existem”. Indefinido = sem anúncio",
+      "WAITINGCALLSANNOUNCE": "Escolha um aúdio definido no módulo de Ferramentas. Padrão = “chamadas em espera”. Indefinido = sem anúncio",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “O tempo de espera estimado atual é“. Indefinido = sem anúncio",
+      "MINUTESANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minutos”. Indefinido = sem anúncio",
+      "MINUTEANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “minuto”. Indefinido = sem anúncio",
+      "SECONDSANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “segundos”. Indefinido = sem anúncio",
+      "THANKYOUANNOUNCE": "Escolha um áudio definido no módulo de Ferramentas. Padrão = “Obrigado pela sua paciência”. Indefinido = sem anúncio",
+      "AFTERCALLWORK": "Se habilitado, o agente entrará em Pausa após desligar",
+      "AUTOPAUSE": "Habilita/Desabilita a pausa automática para agentes que não atendem chamada. Se habilitado, faz com que o agente entre em pausa em todas as filas que ele pertence.",
       "RINGINUSE": "Para permitir ou não o envio de chamadas para agentes cujo status é Ocupado",
-      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente responder quando um status OCUPADO ou CONGESTIONADO é recebido do canal",
-      "CONTEXT": "Permite que o chamador saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o chamador digitar um número, esse dígito tentará localizar no contexto configurado e continuará o dialplan.",
-      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o chamador ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte os documentos do wiki)",
-      "SETQUEUEVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "SETQUEUEENTRYVARIABLES": "Se definido como sim, pouco antes de o chamador ser conectado a um agente de fila, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
-      "RECORDING": "Ativar Gravação de Chamadas",
-      "VOICEMAIL_CONTEXT": "Define contexto da extensão",
+      "TIMEOUTRESTART": "Se sim, isso redefine o tempo limite para um agente atender quando o status OCUPADO ou CONGESTIONADO é recebido do canal",
+      "CONTEXT": "Permite que o cliente saia da fila pressionando um dígito DTMF. Se um contexto for configurado e o cliente digitar um número, o sistema tentará localizar no contexto configurado e continuará o dialplan.",
+      "SETINTERFACEVARIABLES": "Se configurado como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão configuradas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEVARIABLES": "Se definido como sim, antes de o cliente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "SETQUEUEENTRYVARIABLES": "Se definido como sim, antes de o ciente ser conectado a um agente, algumas variáveis \200b\200bserão definidas (para obter mais informações, consulte a wiki)",
+      "RECORDING": "Habilitar gravação de chamadas",
+      "VOICEMAIL_CONTEXT": "Define o contexto da extensão",
       "NAME": "Somente é suportado números, letras e caracteres específicos (._)",
       "CALLERIDALL": "Supported format: \"CallerId\" <number>",
       "CALLER_ID": "Supported format: \"CallerId\" <number>",
-      "MANDATORYDISPOSITIONPAUSEID": "Tipo de Pausa para qualificação obrigatória",
-      "SERVICELEVEL": "Ajuste de Segundos para o nível de serviço (padrão = 0, sem Nível de Serviço). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
+      "MANDATORYDISPOSITIONPAUSEID": "Status de pausa para qualificação obrigatória",
+      "SERVICELEVEL": "Ajuste em segundos para o nível de serviço (Padrão = 0, sem Nível de Serviço). Usado na estatísticas do nível de serviço (chamadas atendidas dentro do período cumprem o nível de serviço)",
       "MONITORFORMAT": "Especifica o formato do arquivo de gravação. Se for definido como 'inativo', as chamadas não serão gravadas",
       "SAVE_ROUTES": "O roteamento foi modificado. Lembre-se de salvar se não quiser perder suas alterações."
     },
-    "MUSICONHOLD": "Música em Espera",
+    "MUSICONHOLD": "Música de Espera",
     "ANNOUNCETOAGENT": "Anunciar ao Agente",
     "ANNOUNCEMENTS": "Anúncios",
     "ADVANCED": "Avançado",
-    "ANNOUNCEFREQUENCY": "Frequência Anúncio",
+    "ANNOUNCEFREQUENCY": "Frequência de Anúncio",
     "MINANNOUNCEFREQUENCY": "Frequência mínima de anúncio",
-    "PERIODICANNOUNCEFREQUENCY": "Frequencia Anúncio Periódico",
+    "PERIODICANNOUNCEFREQUENCY": "Frequencia do Anúncio Periódico",
     "RANDOMPERIODICANNOUNCE": "Anúncio Periódico Aleatório",
-    "ANNOUNCEHOLDTIME": "Anunciar Tempo de Espera",
+    "ANNOUNCEHOLDTIME": "Anunciar o Tempo de Espera",
     "ANNOUNCECALLERPOSITION": "Anunciar a Posição na Fila",
-    "ANNOUNCEPOSITIONLIMIT": "Anunciar Limite de Posição",
+    "ANNOUNCEPOSITIONLIMIT": "Anunciar o Limite de Posição",
     "REPORTHOLDTIMEAGENT": "Relatório de Tempo de Espera do Agente",
     "PERIODICANNOUNCE": "Anúncio Periódico",
-    "HOLDTIMEANNOUNCE": "Anúncio em Tempo de Espera",
+    "HOLDTIMEANNOUNCE": "Anúncio de Tempo de Espera",
     "YOUARENEXTANNOUNCE": "Anúncio 'Você é o próximo'",
     "THEREAREANNOUNCE": "Anúncio 'Existem'",
-    "WAITINGCALLSANNOUNCE": "Anúncio Chamadas em Espera",
+    "WAITINGCALLSANNOUNCE": "Anúncio de Chamadas em Espera",
     "ESTIMATEDHOLDTIMEANNOUNCE": "Anunciar Tempo de Espera Estimado",
     "MINUTESANNOUNCE": "Anuncio Minutos",
     "MINUTEANNOUNCE": "Anúncio Minuto",
-    "SECONDSANNOUNCE": "Anúncio Segundos",
+    "SECONDSANNOUNCE": "Anúncio de Segundos",
     "THANKYOUANNOUNCE": "Anúncio 'Obrigado'",
     "AUTOPAUSE": "Pausa Automática",
-    "AFTERCALLWORK": "Pausa Após Ligação",
-    "AFTERCALLWORKDURATION": "Duração Pausa Após Ligação",
-    "RINGINUSE": "Toque em Uso",
+    "AFTERCALLWORK": "Pós-atendimento (ACW)",
+    "AFTERCALLWORKDURATION": "Duração Pós-atendimento",
+    "RINGINUSE": "Toque quando Ocupado",
     "MEMBERDELAY": "Member Delay",
     "TIMEOUTRESTART": "Timeout Restart",
     "MONITORFORMAT": "Formato de Gravação",
     "ADD_OUTBOUNDROUTE": "Adicionar Rota de Saída",
     "EDIT_OUTBOUNDROUTE": "Editar Rota de Saída",
     "DELETE_OUTBOUNDROUTE": "Excluir Rota de Saída",
-    "CUTDIGITS": "Cut Digits",
+    "CUTDIGITS": "Cortar Dígitos",
     "RECORDING": "Gravação",
     "RECORDINGFORMAT": "Formato de Gravação",
     "INTERNALROUTES": "Rotas Internas",
     "DELETE_VOICEMAIL": "Excluir Correio de Voz",
     "FULLNAME": "Nome Completo",
     "EMAIL": "Email",
-    "MAILBOX": "Caixa Postal",
+    "MAILBOX": "Caixa de Entrada",
     "PASSWORD": "Senha",
     "CONFIRM_PASSWORD": "Confirmar Senha",
     "TIMEZONE": "Fuso Horário",
     "ATTACH": "Anexar",
     "ENVELOPE": "Envelope",
     "DELETE": "Excluir",
-    "EMAILBODY": "Corpo do e-mail",
-    "EMAILSUBJECT": "Assunto do email",
+    "EMAILBODY": "Corpo do Email",
+    "EMAILSUBJECT": "Assunto do Email",
     "MAXSECONDS": "Segundos Máximos",
     "MAXMESSAGES": "Mensagens Máximas",
     "MESSAGES": "Mensagens",
     "SORT": "Ordenar",
     "ADD_MUSICONHOLD": "Adicionar Música em Espera",
-    "MUSICONHOLDS": "Música em Espera",
+    "MUSICONHOLDS": "Música de Espera",
     "EDIT_MUSICONHOLD": "Editar Música em Espera",
     "DELETE_MUSICONHOLD": "Excluir Música em Espera",
     "DIRECTORY": "Diretório",
-    "AUDIOFILES": "Arquivos de áudio",
+    "AUDIOFILES": "Arquivos de Áudio",
     "RECORDINGS": "Gravações",
     "CHANSPY": "Intercalação",
     "PREFIX": "Prefixo",
     "AGENTS": "Agentes",
     "TELEPHONES": "Telefones",
     "QUEUES": "Filas",
-    "QUEUE_CALLS": "Filas de Ligação",
-    "QUEUE_PARAMETERS": "Parametros da Fila",
+    "QUEUE_CALLS": "Ligações em Fila",
+    "QUEUE_PARAMETERS": "Parâmetros da Fila",
     "ABANDONED_CALLS": "Chamadas Abandonadas",
     "OUTBOUND_CALLS": "Chamadas Externas",
     "AGI": "Agi",
     "VOICEMAIL": "Correio de Voz",
     "GOTO": "GoTo",
     "HANGUP": "Desligar",
-    "CUSTOM": "Personalizadas",
+    "CUSTOM": "Custom",
     "PROJECT": "Projeto CallySquare",
     "TECHNOLOGY/RESOURCE": "Tecnologia / Recurso",
     "URL": "URL",
     "USER": "Usuários",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
-    "AUDIO_FILES": "Arquivos de áudio",
+    "AUDIO_FILES": "Arquivos de Áudio",
     "ANNOUNCE_OVERRIDES": "Anúncio Substituto",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "POSITION": "Posição",
-    "ANSWER": "Responda",
+    "ANSWER": "Atender",
     "VALUE": "Valor",
     "MAILBOX@CONTEXT": "Mailbox@Context",
     "EXTENSION": "Extensão",
     "PRIORITY": "Prioridade",
     "HANGUP_CAUSE": "Causa do Desligamento",
     "OUTBOUNDDIAL": "Discagem de Saída",
-    "CALLER_ID": "Identificador de Chamadas",
-    "NO_MESSAGE_AVAILABLE": "Nenhuma Mensagem Disponível",
+    "CALLER_ID": "Caller ID",
+    "NO_MESSAGE_AVAILABLE": "Nenhuma mensagem disponível",
     "NO_SOUND_AVAILABLE": "Nenhum Áudio Disponível",
     "VOICERECORDINGS": "Gravações de Voz",
     "CHANSPIES": "Intercalação",
     "REALTIME": "Tempo Real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
-    "NO_MOHSOUND_AVAILABLE": "Não há Música na Espera Disponível",
+    "NO_MOHSOUND_AVAILABLE": "Não há música de espera disponível",
     "FILE": "Arquivo",
     "ADD_MOHSOUND": "Adicionar Música em Espera",
-    "DOWNLOAD_MOHSOUND": "Download Música de Espera",
+    "DOWNLOAD_MOHSOUND": "Download do áudio de Música em Espera",
     "DELETE_MOHSOUND": "Excluir Música em Espera",
-    "UNIQUEID": "ID único",
+    "UNIQUEID": "ID Único",
     "AGENT": "Agente",
     "TYPE": "Tipo",
     "RATING": "Avaliação",
     "NEW_INTERNALROUTE": "Nova Rota Interna",
     "NEW_CONTEXT": "Novo Contexto",
     "NEW_VOICEMAIL": "Nova Mensagem de Voz",
-    "NEW_MUSICONHOLD": "Nova Música em Espera",
+    "NEW_MUSICONHOLD": "Nova Música de Espera",
     "NEW_CHANSPY": "Nova Intercalação",
     "PENALTY": "Peso",
     "ADD_TEAM_TO_VOICEQUEUE": "Adicionar Equipe à Fila de Voz",
     "EDIT_AGI": "Editar AGI",
     "EDIT_INTERNALDIAL": "Editar Discagem Interna",
     "EDIT_EXTERNALDIAL": "Editar Discagem Externa",
-    "EDIT_RINGGROUP": "Editar Grupo de Toques",
+    "EDIT_RINGGROUP": "Editar Grupo de Toque",
     "EDIT_PLAYBACK": "Editar Reprodução",
     "EDIT_QUEUE": "Editar Fila",
     "EDIT_SET": "Editar Conjunto",
     "EDIT_GOTO": "Editar GoTo",
     "EDIT_HANGUP": "Editar Hangup",
-    "EDIT_CUSTOM": "Editar Customizado",
+    "EDIT_CUSTOM": "Editar Custom",
     "DURATION": "Duração",
     "RECEIVED_AT": "Recebido em",
     "YES": "Sim",
     "NO": "Não",
-    "HANGUPCAUSE_1": "1 = Número não alocado",
-    "HANGUPCAUSE_16": "16 = Chamada normal",
-    "HANGUPCAUSE_17": "17 = Usuário ocupado",
-    "HANGUPCAUSE_18": "18 = Nenhuma resposta do usuário (Não atendeu)",
-    "HANGUPCAUSE_21": "21 = Chamada rejeitada",
-    "HANGUPCAUSE_22": "22 = Número alterado",
-    "HANGUPCAUSE_27": "27 = Destino fora de ordem",
-    "HANGUPCAUSE_38": "38 = Rede fora de ordem",
-    "HANGUPCAUSE_41": "41 = Falha temporária",
+    "HANGUPCAUSE_1": "1 = Unallocated number",
+    "HANGUPCAUSE_16": "16 = Normal call clearing",
+    "HANGUPCAUSE_17": "17 = User busy",
+    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
+    "HANGUPCAUSE_21": "21 = Call rejected",
+    "HANGUPCAUSE_22": "22 = Number changed",
+    "HANGUPCAUSE_27": "27 = Destination out of order",
+    "HANGUPCAUSE_38": "38 = Network out of order",
+    "HANGUPCAUSE_41": "41 = Temporary failure",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
-    "NO_APPS_AVAILABLE": "Não há Aplicativos Disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Download Gravação de Voz",
+    "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
+    "DOWNLOAD_VOICERECORDING": "Download da Gravação de Voz",
     "DELETE_VOICERECORDING": "Excluir Gravação de Voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Status do Telefone",
     "PHONE_STATUS": "Status do Telefone",
-    "TRUNK_STATUS": "Status Tronco",
+    "TRUNK_STATUS": "Status do Tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não Registrado",
     "LAGGED": "Atrasado",
     "REACHABLE": "Alcançável",
     "UNREACHABLE": "Inacessível",
     "UNKNOWN": "Desconhecido",
-    "NOT_INUSE": "Fora de Uso",
-    "INUSE": "Em uso",
+    "NOT_INUSE": "Disponível",
+    "INUSE": "Ocupado",
     "BUSY": "Ocupado",
     "INVALID": "Inválido",
     "UNAVAILABLE": "Indisponível",
     "ONHOLD": "Em Espera",
     "RING": "Tocar",
     "UP": "Cima",
-    "INFO": "Informação",
+    "INFO": "Info",
     "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Nenhum Registro",
     "WAITING": "Esperando",
     "TALKING": "Falando",
     "DID": "DID",
-    "CALLER": "Chamador",
+    "CALLER": "Origem",
     "TOTAL": "Total",
-    "ANSWERED": "Respondidas",
+    "ANSWERED": "Atendidas",
     "ABANDONED": "Abandonadas",
     "UNMANAGED": "Não Gerenciado",
     "AVG_HOLD_TIME": "Tempo Médio de Epera",
     "DESTINATION": "Destino",
     "REJECTED": "Rejeitado",
     "FAILED": "Falhou",
-    "CALLED": "Chamado",
+    "CALLED": "Destino",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem Avaliação",
     "EDIT_VOICERECORDING": "Editar Gravação de Voz",
     "APPLICATION_NAME": "Nome da Aplicação",
     "ARGUMENTS": "Argumentos",
-    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ADD_AGENT_TO_QUEUE": "Adicionar Agente à Fila",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "PAUSE": "Pausa",
-    "UNPAUSE": "Fim Pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "REDIRECT_TO_NUMBER": "Redirecionar para Número",
     "REDIRECT_TO_AGENT": "Redirecionar para Agente",
-    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Coz",
+    "AGENTADD_VOICEQUEUE": "Adicionar Agente à Fila de Voz",
     "APPLICATION": "Aplicação",
     "FILES": "Arquivos",
     "FORMAT": "Formato",
     "NEW_MOHSOUND": "Novo aúdio de Música em Espera",
     "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Excluir",
-    "QUEUE_PARAMS": "Parâmetros da fila",
+    "QUEUE_PARAMS": "Parâmetros da Fila",
     "TOTAL_OFFERED": "Total Oferecido",
     "READY": "Pronto",
     "AGENTADD_QUEUE": "Adicionar Agente à Fila de Voz",
     "SELECTED_TEAMS": "Equipes Selecionadas",
     "ALL_AGENTS": "Todos Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "CLOSING": "Fechamento",
+    "CLOSING": "Encerramento",
     "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Aguardando Por Agentes",
+    "WAITING_FOR_AGENT": "Aguardando por Agentes",
     "EDIT_OUTBOUNDDIAL": "Editar Discagem de Saída",
     "ACCOUNTNAME": "Nome da Conta",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DISPOSITION": "Qualificação",
     "CHAT": "Chat",
     "TAG": "Tag",
     "DETAILS": "Detalhes",
     "BILLABLESECONDS": "Segundos Faturáveis",
-    "ANSWEREDAT": "Respondido em",
-    "NOTE": "Nota",
-    "CLOSE": "Fechar",
+    "ANSWEREDAT": "Atendidas em",
+    "NOTE": "Observação",
+    "CLOSE": "Encerrar",
     "SELECT_DATE": "Selecione Data de Início",
     "SELECT_TYPE": "Selecione Tipo",
     "VOICEPREFIXES": "Prefixos de Saída",
     "ADD_VOICEPREFIX": "Adicionar Prefixo",
     "EDIT_VOICEPREFIX": "Editar Prefixo",
     "AGENTADD_VOICEPREFIX": "Adicionar Agente ao Prefixo",
-    "DELETE_VOICEPREFIX": "Excluir Rrefixo",
+    "DELETE_VOICEPREFIX": "Excluir Prefixo",
     "OUTBOUNDROUTE": "Rota de Saída",
-    "CALLERIDALL": "ID do Chamador",
+    "CALLERIDALL": "Caller ID",
     "DIALER": "Discador",
     "INBOUND": "Entrada",
     "OUTBOUND": "Outbound",
-    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação Obrigatória",
-    "TEAMS_ASSOCIATION": "Associação de Equipas",
+    "MANDATORYDISPOSITION": "Qualificação obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Status de Pausa para Qualificação obrigatória",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "CANT_DOWNLOAD_THIS_FILE": "Não é possível baixar este arquivo",
-    "FILE_NOT_FOUND": "Arquivo Não Encontrado",
+    "FILE_NOT_FOUND": "Arquivo não encontrado",
     "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STOP_SCREENRECORDING": "Parar Gravação de Tela",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela Disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em Andamento",
-    "WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
+    "WRONG_EXTENSION": "O arquivo possuí extensão incorreta",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar Transcrição",
-    "FAILUREREASON": "Razão da Falha",
-    "RUNSENTIMENT_VOICERECORDING": "Executar Sentimento",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Sentimento",
+    "FAILUREREASON": "Motivo da Falha",
+    "RUNSENTIMENT_VOICERECORDING": "Executar Análise de Sentimento",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar Transcrição e Análise de Sentimento",
     "RUNTRANSCRIBE_VOICERECORDING": "Executar Transcrição",
-    "SENTIMENT": "Sentimento",
+    "SENTIMENT": "Análise de Sentimento",
     "SENTIMENTANALYSIS": "Análise de Sentimentos",
     "SENTIMENT_MIXED": "Misturado",
     "SENTIMENT_NEGATIVE": "Negativo",
index 97549f4..f39c304 100644 (file)
       "BASEURL_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
-      "LIST": "Lista do gerenciador de contatos usada para associar contatos",
-      "MANDATORYDISPOSITION": "Disposição obrigatória",
-      "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
+      "LIST": "Lista da Gestão de Contatos usada para associar os contatos",
+      "MANDATORYDISPOSITION": "Qualificação obrigatória",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Apenas números, letras e caracteres específicos (._) são suportados",
       "RECEIVEURL": "Esta é a string de API gerada automaticamente que você precisa usar para receber as mensagens dentro de sua conta do provedor WhatsApp Connector (o método POST deve ser usado): clique no botão da área de transferência para copiá-la",
       "WELCOMEMESSAGE": "Esta é a primeira mensagem de resposta enviada para novas interações"
     },
-    "ACCESSKEYID": "ID da chave de acesso",
-    "ACCOUNTSID": "SID da conta",
+    "ACCESSKEYID": "ID de Chave de Acesso",
+    "ACCOUNTSID": "SID da Conta",
     "ACTIONS": "Ações",
-    "ADD_NOTE": "Adicionar nota",
+    "ADD_NOTE": "Adicionar Observação",
     "ADD_WHATSAPPACCOUNT": "Adicionar",
-    "ADD_WHATSAPPCANNEDANSWER": "Adicionar resposta automática",
-    "ADD_WHATSAPPDISPOSITION": "Adicionar disposição do WhatsApp",
-    "ADD_WHATSAPPQUEUE": "Adicionar fila WhatsApp",
+    "ADD_WHATSAPPCANNEDANSWER": "Adicionar Resposta Pré-definida",
+    "ADD_WHATSAPPDISPOSITION": "Adicionar Qualificação do WhatsApp",
+    "ADD_WHATSAPPQUEUE": "Adicionar Fila do WhatsApp",
     "ADVANCED": "Avançado",
     "AGENT": "Agente",
-    "AGENTADD_QUEUE": "Adicionar agente à fila de WhatsApp",
-    "AGENTADD_WHATSAPPACCOUNT": "Adicionar agente à conta do WhatsApp",
-    "AGENTADD_WHATSAPPQUEUE": "Adicionar agente à fila de WhatsApp",
+    "AGENTADD_QUEUE": "Adicionar Agente à Fila do WhatsApp",
+    "AGENTADD_WHATSAPPACCOUNT": "Adicionar Agente à Conta do WhatsApp",
+    "AGENTADD_WHATSAPPQUEUE": "Adicionar Agente à Fila do WhatsApp",
     "AGENTS": "Agentes",
-    "AGENTSADD_QUEUE": "Adicionar agentes à fila do WhatsApp",
+    "AGENTSADD_QUEUE": "Adicionar Agentes à Fila do WhatsApp",
     "AGENTTRANSFER": "Transferência de Agente",
-    "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
-    "AGENT_TIMEOUT": "Tempo Limite do Agente",
+    "AGENTTRANSFERTIMEOUT": "Timeout de transferência do agente",
+    "AGENT_TIMEOUT": "Timeout do Agente",
     "ALL": "Tudo",
-    "ALL_AGENTS": "Todos os Agentes",
-    "ALL_TEAMS": "Todas as equipes",
+    "ALL_AGENTS": "Todos Agentes",
+    "ALL_TEAMS": "Todas Equipes",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Token de autenticação",
-    "AUTOREPLY": "Resposta automatica",
-    "BACK": "Costas",
-    "BOTNAME": "Nome do bot",
+    "AUTHTOKEN": "Token de Autenticação",
+    "AUTOREPLY": "Auto Resposta",
+    "BACK": "Voltar",
+    "BOTNAME": "Nome do Bot",
     "BUSY": "Ocupado",
-    "CANNEDANSWERS": "Respostas enlatadas",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta automática",
+    "CANNEDANSWERS": "Respostas Pré-definidas",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definida foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Digite para procurar por Resposta Pré-definida",
     "CAPACITY": "Capacidade",
-    "CLOSE": "Perto",
-    "CLOSED": "Fechadas",
-    "CLOSEMETHOD": "Método Fechar",
-    "CLOSEURL": "Fechar URL",
+    "CLOSE": "Encerrar",
+    "CLOSED": "Encerrado",
+    "CLOSEMETHOD": "Método de Encerramento",
+    "CLOSEURL": "URL de Encerramento",
     "COMMAND": "Comando",
-    "CONDITION": "Doença",
+    "CONDITION": "Condição",
     "CONTACT": "Contato",
     "CREATED_AT": "Criado em",
     "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "DELETE": "Excluir",
-    "DELETE_INTERACTION": "Excluir interação",
-    "DELETE_SELECTED": "Excluir selecionado",
-    "DELETE_WHATSAPPACCOUNT": "Excluir conta WhatsApp",
+    "DELETE_INTERACTION": "Excluir Interação",
+    "DELETE_SELECTED": "Excluir Selecionado",
+    "DELETE_WHATSAPPACCOUNT": "Excluir Conta do WhatsApp",
     "DELETE_WHATSAPPCANNEDANSWER": "Excluído",
-    "DELETE_WHATSAPPDISPOSITION": "Excluir disposição do WhatsApp",
-    "DELETE_WHATSAPPQUEUE": "Excluir fila do WhatsApp",
+    "DELETE_WHATSAPPDISPOSITION": "Excluir Qualificação do WhatsApp",
+    "DELETE_WHATSAPPQUEUE": "Excluir Fila do WhatsApp",
     "DESCRIPTION": "Descrição",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Disposição",
-    "DISPOSITIONS": "Disposições",
-    "DOWNLOAD_INTERACTION": "Baixar",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Baixar sem anexos",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Baixar com anexos",
+    "DISPOSITION": "Qualificação",
+    "DISPOSITIONS": "Qualificações",
+    "DOWNLOAD_INTERACTION": "Download",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "EDIT_AGENT": "Editar Agente",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
-    "EDIT_AUTOREPLY": "Editar resposta automática",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
+    "EDIT_AUTOREPLY": "Editar Auto Resposta",
+    "EDIT_CLOSE": "Editar Encerramento",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_GOTOP": "Editar Gotop",
     "EDIT_NOOP": "Editar Noop",
-    "EDIT_QUEUE": "Editar fila",
+    "EDIT_QUEUE": "Editar Fila",
     "EDIT_SYSTEM": "Editar Sistema",
-    "EDIT_TAG": "Editar etiqueta",
-    "EDIT_WHATSAPPACCOUNT": "Editar conta WhatsApp",
+    "EDIT_TAG": "Editar Tag",
+    "EDIT_WHATSAPPACCOUNT": "Editar Conta do WhatsApp",
     "EDIT_WHATSAPPCANNEDANSWER": "Editar",
-    "EDIT_WHATSAPPDISPOSITION": "Editar disposição do WhatsApp",
-    "EDIT_WHATSAPPQUEUE": "Editar fila de WhatsApp",
+    "EDIT_WHATSAPPDISPOSITION": "Editar Qualificaçao do WhatsApp",
+    "EDIT_WHATSAPPQUEUE": "Editar Fila de WhatsApp",
     "FALSEPRIORITY": "Falsa Prioridade",
     "GENERAL": "Geral",
     "GOTOIF": "Gotoif",
-    "GOTOP": "Seja o melhor",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Vá para a fila de WhatsApp em tempo real",
-    "GO_TO_WHATSAPPACCOUNTS": "Ir para a conta",
-    "ID": "Eu iria",
-    "IDLE": "Ocioso",
+    "GOTOP": "Gotop",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Visualizar Fila do WhatsApp em Tempo Real",
+    "GO_TO_WHATSAPPACCOUNTS": "Ir para a Conta",
+    "ID": "Id",
+    "IDLE": "Disponível",
     "INSERT_MESSAGE_HERE": "Insira a mensagem aqui",
     "INTERACTIONS": "Interações",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Vá para Interações",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Ir para Interações",
     "KEY": "Chave",
-    "LANGUAGE": "Língua",
-    "LASTMESSAGE": "Última mensagem",
+    "LANGUAGE": "Idioma",
+    "LASTMESSAGE": "Última Mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
-    "MANDATORYDISPOSITION": "Disposição Obrigatória",
-    "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
+    "MANDATORYDISPOSITION": "Qualificação Obrigatória",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausa usada quando a qualificação obrigatória estiver habilitada",
     "MORE": "Mais",
-    "MOTIONPROXY": "Domínio de proxy ou movimento",
-    "MULTI_SELECT_TOGGLE": "Alternância de seleção múltipla",
+    "MOTIONPROXY": "Domínio do Proxy ou do Motion",
+    "MULTI_SELECT_TOGGLE": "Multi select toggle",
     "NAME": "Nome",
-    "NEW_WHATSAPPACCOUNT": "Nova conta WhatsApp",
-    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta predeterminada do WhatsApp",
-    "NEW_WHATSAPPDISPOSITION": "Nova disposição do WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Nova fila de WhatsApp",
+    "NEW_WHATSAPPACCOUNT": "Nova Conta de WhatsApp",
+    "NEW_WHATSAPPCANNEDANSWER": "Nova Resposta Pré-definida do WhatsApp",
+    "NEW_WHATSAPPDISPOSITION": "Nova Qualificação do WhatsApp",
+    "NEW_WHATSAPPQUEUE": "Nova Fila do WhatsApp",
     "NOOP": "Noop",
-    "NOTE": "Nota",
+    "NOTE": "Observação",
     "NOTIFICATION": "Notificação",
-    "NOTIFICATIONSHAKE": "Mexe",
+    "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONSOUND": "Som",
     "NOTIFICATIONTEMPLATE": "Modelo",
-    "NO_AGENT_ONLINE": "Nenhum agente online",
-    "NO_AVAILABLE_INFO": "Sem informações disponíveis",
-    "NO_INTERACTION_AVAILABLE": "Nenhuma interação disponível",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta automática do WhatsApp disponível",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum dispositivo WhatsApp disponível",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma conta WhatsApp disponível",
+    "NO_AGENT_ONLINE": "Nenhum Agente Online",
+    "NO_AVAILABLE_INFO": "Nenhuma Informações Disponível",
+    "NO_INTERACTION_AVAILABLE": "Nenhuma Interação Disponível",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Nenhuma resposta pré-definda disponível",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Nenhum qualificação disponível",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Nenhuma Conta do WhatsApp disponível",
     "OF": "do",
     "OPENED": "Aberto",
     "PAGE": "Página",
     "PARTIALPAUSE": "Pausa Parcial",
     "PAUSE": "Pausa",
     "PAUSED": "Em pausa",
-    "PAUSE_TIME": "Tempo de pausa",
-    "PHONE": "telefone",
+    "PAUSE_TIME": "Tempo de Pausa",
+    "PHONE": "Telefone",
     "PRIORITY": "Prioridade",
     "PROXY": "Proxy",
     "QUEUE": "Fila",
     "QUEUES": "Filas",
     "QUEUETRANSFER": "Transferência de fila",
-    "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "READY": "pronto",
-    "REALTIME": "Tempo real",
-    "RECEIVEURL": "Receber URL",
-    "REFRESH_INTERACTIONS": "Atualizar interações",
-    "REMOTE": "Controlo remoto",
+    "QUEUETRANSFERTIMEOUT": "Timeout de transferência da fila",
+    "READY": "Disponível",
+    "REALTIME": "Tempo Real",
+    "RECEIVEURL": "URL de Recebimento",
+    "REFRESH_INTERACTIONS": "Atualizar Interações",
+    "REMOTE": "Controlo Remoto",
     "ROWSPERPAGE": "Linhas por página",
-    "SAVE": "Salve \e051",
-    "SCREENRECORDING": "Gerenciar gravação de tela",
+    "SAVE": "Salvar",
+    "SCREENRECORDING": "Gerenciar Gravação de Tela",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "SECRETACCESSKEY": "Chave secreta de acesso",
+    "SECRETACCESSKEY": "Senha da Chave de Acesso",
     "SELECTED": "Selecionado",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "SELECTED_TEAMS": "Times Selecionados",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SEND": "Enviar",
     "SETTINGS": "Configurações",
-    "SPYINTERACTION": "Interação de espião",
+    "SPYINTERACTION": "Espiar",
     "STARTEDAT": "Começou às",
-    "START_SCREENRECORDING": "Iniciar gravação de tela",
+    "START_SCREENRECORDING": "Iniciar Gravação de Tela",
     "STATUS": "Status",
-    "STOP_SCREENRECORDING": "Parar a gravação da tela",
+    "STOP_SCREENRECORDING": "Parar Gravação da Tela",
     "STRATEGY": "Estratégia",
     "SYSTEM": "Sistema",
     "TAG": "Tag",
     "TAGS": "Tag",
-    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à fila do WhatsApp",
-    "TEAMS_ASSOCIATION": "Associação de equipes",
+    "TEAMADD_WHATSAPPQUEUE": "Adicionar equipe à Fila do WhatsApp",
+    "TEAMS_ASSOCIATION": "Associação de Equipes",
     "TEXT": "Texto",
-    "TIMEOUT": "Tempo esgotado",
-    "TIMER": "Cronômetro",
+    "TIMEOUT": "Timeout",
+    "TIMER": "Timer",
     "TIMES": "Vezes",
     "TO": "Para",
-    "TOKEN": "Símbolo",
-    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
-    "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Gravação de Tela disponível",
+    "TOOLTIP_SCREENRECORDING_ON": "Gravação de Tela em andamento",
     "TRANSFER": "Transferir",
-    "TRUEPRIORITY": "Verdadeira prioridade",
+    "TRUEPRIORITY": "ID de Prioridade caso Verdadeiro",
     "TYPE": "Tipo",
-    "UNPAUSE": "Fim da pausa",
+    "UNPAUSE": "Finalizar Pausa",
     "VALUE": "Valor",
     "VARIABLE": "Variável",
-    "WAITFORTHEASSIGNEDAGENT": "Espere pelo agente atribuído",
+    "WAITFORTHEASSIGNEDAGENT": "Aguarde atribuir a um agente",
     "WAITING": "Esperando",
-    "WELCOMEMESSAGE": "Mensagem de boas-vindas",
-    "WHATSAPP": "Conector WhatsApp",
-    "WHATSAPPACCOUNTS": "Contas WhatsApp",
-    "WHATSAPPCANNEDANSWERS": "Respostas predeterminadas do WhatsApp",
-    "WHATSAPPDISPOSITIONS": "Dispositivos do WhatsApp",
-    "WHATSAPPQUEUES": "WhatsApp Queues",
-    "CLIENTEMAIL": "Email do cliente",
+    "WELCOMEMESSAGE": "Mensagem de Boas-vindas",
+    "WHATSAPP": "WhatsApp Connector",
+    "WHATSAPPACCOUNTS": "Contas do WhatsApp",
+    "WHATSAPPCANNEDANSWERS": "Respostas Pré-definidas do WhatsApp",
+    "WHATSAPPDISPOSITIONS": "Qualificações do WhatsApp",
+    "WHATSAPPQUEUES": "Filas do WhatsApp",
+    "CLIENTEMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
-    "PRIVATEKEY": "Chave privada",
-    "PROJECTID": "ID do projeto",
-    "BASEURL": "URL base",
-    "DELIVERYREPORTURL": "URL do relatório de entrega"
+    "PRIVATEKEY": "Chave Privada",
+    "PROJECTID": "ID do Projeto",
+    "BASEURL": "URL Base",
+    "DELIVERYREPORTURL": "URL do Relatório de Entrega"
   }
 }
index a599e14..8b5a270 100644 (file)
@@ -1,6 +1,6 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Período Pré Expiração (Gray Period)",
+    "EXPIRATION_GRAY_PERIOD": "Período Próximo da Expiração (Gray Period)",
     "NO_AVAILABLE_GROUPS": "Não há Grupos Disponíveis",
     "SAVE": "Salvar",
     "INFO": "Info",
@@ -9,7 +9,7 @@
     "MEMBERS": "Membros",
     "ENABLE_WRITING": "Ativar Escrita",
     "GROUPS": "Grupos",
-    "YOU": "Você + {{participantes}}",
+    "YOU": "Você + {{participants}}",
     "NEW_INTERNAL_MESSAGE": "Nova mensagem interna",
     "DELETE": "Excluir",
     "SEARCH": "Procurar",
@@ -40,7 +40,7 @@
     "APP_SERVERS": "Servidores de Aplicativos",
     "USER_STATS": "Estatísticas do Usuário",
     "EVENTS": "Eventos",
-    "NOTES": "Notas",
+    "NOTES": "Observações",
     "QUICK_SETTINGS": "Configurações Rápidas",
     "NOTIFICATIONS": "Notificações",
     "CLOUD_SYNC": "Cloud Sync",
     "REPLY_PLACEHOLDER": "Digite e pressione enter para enviar mensagem",
     "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com o suporte xCALLY Motion",
     "EXPIRATION_DATE": "Data de Validade",
-    "EXPIRATION_REASON": "Razão de Expiração",
+    "EXPIRATION_REASON": "Motivo de Expiração",
     "LICENSE": "Licença",
-    "NEW_TOKEN": "Novo Token",
+    "NEW_TOKEN": "Token Novo",
     "OLD_TOKEN": "Token Antigo",
     "SEND_EMAIL_TO": "Enviar Email para",
     "TOKEN": "Token",
     "EXPIRATION_REASON_MESSAGE": "Sua licença expirou ou seu Token foi alterado devido a mudença em seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
-    "GRAY_PERIOD_EXPIRATION": "Período Pré Expiração (Gray Period)",
+    "GRAY_PERIOD_EXPIRATION": "Período Próximo da Expiração (Gray Period)",
     "EXPIRATION_REASON_MESSAGE_GRAY": "Sua licença expirou ou foi desativada. Entre em contato com o suporte do xCALLY Motion",
     "EXPIRATION_REASON_MESSAGE_CHANGED": "Seu Token foi alterado devido a uma alteração no seu sistema. Contate o suporte xCALLY Motion enviando o Token antigo e o novo",
     "MESSENGER_DISABLED": "A mensagem interna está desativada para este agente!",
index 56609ea..4eeeed9 100644 (file)
@@ -4,17 +4,17 @@
     "EMAIL_ADRESS": "Endereço de e-mail",
     "PASSWORD": "Senha",
     "PASSWORD_CONFIRM": "Confirmação de senha",
-    "UPDATE_PASSWORD": "RESETAR MINHA SENHA",
+    "UPDATE_PASSWORD": "REDEFINIR MINHA SENHA",
     "GO_BACK": "Volte para o login",
-    "PASSWORD_RESET": "Resetar a senha",
+    "PASSWORD_RESET": "Redefinir a senha",
     "PASSWORD_RESET_MESSAGE": "Sua senha foi redefinida corretamente, agora você pode fazer o login!",
-    "PASSWORD_RESET_ERROR": "Erro de redefinição de senha",
+    "PASSWORD_RESET_ERROR": "Erro ao redefinir senha",
     "ERRORS": {
-      "EMAIL_REQUIRED": "O campo de email é obrigatório",
-      "EMAIL_MUST_VALID": "E-mail deve ser um endereço de e-mail válido",
+      "EMAIL_REQUIRED": "O campo de e-mail é obrigatório",
+      "EMAIL_MUST_VALID": "Endereço de e-mail inválido.",
       "PASSWORD_REQUIRED": "O campo de senha é obrigatório",
       "CONFIRM_NOT_MATCH": "As senhas não combinam",
-      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com um mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
+      "SECURE_PASSWORD_PATTERN": "Deve conter pelo menos 8 caracteres, com mo mínimo de 1 letra minúscula, 1 letra maiúscula, 1 caractere numérico e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}."
     }
   }
 }
index f7d1abd..9b1db71 100644 (file)
     "WHATSAPP": "ال WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات",
     "BOSNIAN": "البوسنية",
-    "ICELANDIC": "جزيرة"
+    "ICELANDIC": "جزيرة",
+    "WAITINGQUEUECALLS": "انتظار مكالمات قائمة الانتظار"
   }
 }
index dbe8cbb..298c51e 100644 (file)
       "PREVIEW_RECALLME": "Ovo je Recall Me poziv zakazan za {{date}}"
     },
     "BOSNIAN": "Bosanski jezik",
-    "ICELANDIC": "Islandski"
+    "ICELANDIC": "Islandski",
+    "WAITINGQUEUECALLS": "Čekanje u redu poziva"
   }
 }
index 6a0408a..763050c 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď",
     "BOSNIAN": "bosenský",
-    "ICELANDIC": "Islandský"
+    "ICELANDIC": "Islandský",
+    "WAITINGQUEUECALLS": "Čekání na volání ve frontě"
   }
 }
index 60ae458..59f9761 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køopkald"
   }
 }
index 7fe5d1f..29d0477 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort konfiguriert",
     "BOSNIAN": "bosnisch",
-    "ICELANDIC": "Isländisch"
+    "ICELANDIC": "Isländisch",
+    "WAITINGQUEUECALLS": "Warteschlangenanrufe"
   }
 }
index 2a5f385..f18fb94 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales",
     "BOSNIAN": "bosnio",
-    "ICELANDIC": "isleño"
+    "ICELANDIC": "isleño",
+    "WAITINGQUEUECALLS": "Llamadas en cola de espera"
   }
 }
index 5092009..5296cdf 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud",
     "BOSNIAN": "bosnia keel",
-    "ICELANDIC": "saarlane"
+    "ICELANDIC": "saarlane",
+    "WAITINGQUEUECALLS": "Kõnede ootel"
   }
 }
index 100dc92..ca9bee9 100644 (file)
     "WHATSAPP": "واتساپ",
     "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است",
     "BOSNIAN": "بوسنیایی",
-    "ICELANDIC": "جزیره ای"
+    "ICELANDIC": "جزیره ای",
+    "WAITINGQUEUECALLS": "تماس های صف انتظار"
   }
 }
index 248942a..ba46232 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta",
     "BOSNIAN": "bosnialainen",
-    "ICELANDIC": "Islannin kieli"
+    "ICELANDIC": "Islannin kieli",
+    "WAITINGQUEUECALLS": "Odottaa puheluita"
   }
 }
index 2a35a78..50e9ac0 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux",
     "BOSNIAN": "bosniaque",
-    "ICELANDIC": "Islandais"
+    "ICELANDIC": "Islandais",
+    "WAITINGQUEUECALLS": "Appels en file d'attente"
   }
 }
index 52611b6..109a522 100644 (file)
     "WHATSAPP": "וואטסאפ",
     "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים",
     "BOSNIAN": "בוסנית",
-    "ICELANDIC": "אילנדית"
+    "ICELANDIC": "אילנדית",
+    "WAITINGQUEUECALLS": "ממתינים לשיחות בתור"
   }
 }
index 61c0fbf..239448e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया",
     "BOSNIAN": "बोस्नियाई",
-    "ICELANDIC": "आइलैंडिक"
+    "ICELANDIC": "आइलैंडिक",
+    "WAITINGQUEUECALLS": "प्रतीक्षा कतार कॉल"
   }
 }
index b91b9d5..0ea09bd 100644 (file)
     "PHONE2CALL": "Telefon a híváshoz",
     "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz",
     "BOSNIAN": "bosnyák",
-    "ICELANDIC": "szigeti"
+    "ICELANDIC": "szigeti",
+    "WAITINGQUEUECALLS": "Várakozó hívások"
   }
 }
index da184b6..cbfdf39 100644 (file)
     "WHATSAPP": "ada apa",
     "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran",
     "BOSNIAN": "Bosnia",
-    "ICELANDIC": "pulau"
+    "ICELANDIC": "pulau",
+    "WAITINGQUEUECALLS": "Menunggu panggilan antrian"
   }
 }
index 161e45c..7d58b11 100644 (file)
 {
   "TOOLBAR": {
-    "CHANGE_LANGUAGE_TITLE": "Change language",
-    "CHANGE_LANGUAGE_MESSAGE": "Remember to refresh the page to apply RTL Support (if enabled)",
+    "CHANGE_LANGUAGE_TITLE": "Breyta tungumál",
+    "CHANGE_LANGUAGE_MESSAGE": "Mundu að endurnýja síðuna til að nota RTL Support (ef það er virkjað)",
     "HEBREW": "Hebrew",
-    "PREFIXES": "Prefixes",
-    "CALL": "Call",
+    "PREFIXES": "Forskeyti",
+    "CALL": "Hringdu",
     "ARABIC": "Arabic",
     "INDONESIAN": "Indonesian",
-    "RESETPASSWORD": "Reset Password",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Remaining days before your password expires",
-    "BROWSER_COMPATIBILITY": "Browser Compatibility [Chrome, Opera, Safari]",
-    "RECORDING": "Recording",
-    "INVALID_LICENSE": "Invalid License",
-    "BROWSER": "Browser",
-    "OS": "Operating System",
-    "REQUIREMENTS": "Requirements",
-    "LICENSE": "License",
+    "RESETPASSWORD": "Endurstilltu lykilorð",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dagar sem eftir eru áður en lykilorðið þitt rennur út",
+    "BROWSER_COMPATIBILITY": "Vafrasamhæfni [Chrome, Opera, Safari]",
+    "RECORDING": "Upptaka",
+    "INVALID_LICENSE": "Ógilt leyfi",
+    "BROWSER": "Vafri",
+    "OS": "Stýrikerfi",
+    "REQUIREMENTS": "Skilyrði",
+    "LICENSE": "Leyfi",
     "HTTPS": "HTTPS",
-    "PHONE2CALL": "Phone to call",
-    "CHANNELS": "Channels",
-    "CHANNEL": "Channel",
-    "NUM_NOTIFICATIONS": "Notifications",
-    "NOTIFICATIONS": "Autoanswer enabled",
-    "DELAY": "Autoanswer delay [secs]",
-    "AUTOANSWER_NOTIFICATIONS": "Autoanswer notifications",
-    "CHAT": "Chat",
-    "EMAIL": "Email",
+    "PHONE2CALL": "Númer til að hringja í ",
+    "CHANNELS": "Rásir",
+    "CHANNEL": "Rásir",
+    "NUM_NOTIFICATIONS": "tilkyninningar",
+    "NOTIFICATIONS": "Sjálfvirk svörun virk",
+    "DELAY": "Seinkun á sjálfvirkri svörun [sek.]",
+    "AUTOANSWER_NOTIFICATIONS": "Tilkynningar á sjálfvirkri svörun",
+    "CHAT": "Spjall",
+    "EMAIL": "Netfang",
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
-    "WHATSAPP": "Whatsapp connector",
-    "WEBRTCSUPPORT": "WebRTC Support",
-    "REGISTERED": "Registered",
-    "NOT_REGISTERED": "Not registered",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC License is not enabled",
-    "ATTENDED_TRANSFER": "Attended Tranfer",
-    "TRANSFER": "Transfer",
-    "TARGET": "Target",
-    "CANCEL": "Cancel",
-    "FILENAME": "File name",
-    "STATUS": "Status",
-    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
-    "ACTIONS": "Actions",
-    "SPEAKER": "Speaker",
-    "RINGING": "Ringing tone",
-    "MICROPHONE": "Microphone",
-    "CONFERENCE": "Conference with 2 active sessions",
-    "PROFILE": "Profile",
-    "SERVICES": "Services",
-    "AUDIO": "Audio",
-    "FULLNAME": "Fullname",
-    "NAME": "Name",
-    "INTERNAL": "Internal",
-    "RINGINGDEVICE": "Ringing Device",
-    "SPEAKERDEVICE": "Speaker Device",
-    "MICROPHONEDEVICE": "Microphone Device",
-    "CHANGEPASSWORD": "Change password",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto answer",
-    "TOGGLE_NAVIGATION": "Toggle navigation",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Toggle navigation mode",
-    "SEARCH": "Search",
-    "USER_SETTINGS": "User settings",
-    "TOGGLE_QUICK_PANEL": "Toggle quick panel",
-    "SOMEONE_LOGGED_YOU_OUT": "Someone logged out, do you want to stay logged?",
-    "STAY_LOGGED": "Stay logged",
-    "WARNING": "Warning",
-    "ENGLISH": "English",
-    "ITALIAN": "Italian",
-    "FRENCH": "French",
-    "KOREAN": "Korean",
-    "SPANISH": "Spanish",
-    "SWEDISH": "Swedish",
-    "RUSSIAN": "Russian",
-    "GERMAN": "German",
-    "JAPANESE": "Japanese",
-    "CHINESESIMPLIFIED": "Chinese Simplified",
-    "CHINESETRADITIONAL": "Chinese Traditional",
-    "DUTCH": "Dutch",
-    "FINNISH": "Finnish",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Portuguese",
-    "NORWEGIAN": "Norwegian",
+    "WHATSAPP": "Whatsapp tengill",
+    "WEBRTCSUPPORT": "WebRTC hjálp",
+    "REGISTERED": "Skráð",
+    "NOT_REGISTERED": "Ekki skráð",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC leyfi er ekki virkjað",
+    "ATTENDED_TRANSFER": "Flutningur tókst",
+    "TRANSFER": "Flutt",
+    "TARGET": "Markmið",
+    "CANCEL": "Hætta við",
+    "FILENAME": "Skráarnafn",
+    "STATUS": "Staða",
+    "NO_AUTOANSWER_CONFIGURED": "Ekkert sjálfvirkt svar stillt fyrir rásirnar",
+    "ACTIONS": "Aðgerð",
+    "SPEAKER": "Hátalari",
+    "RINGING": "Hringi tónn",
+    "MICROPHONE": "Hljóðnemi",
+    "CONFERENCE": "Hópsamtal með tveir samtíma samtölum",
+    "PROFILE": "Snið",
+    "SERVICES": "Þjónusta",
+    "AUDIO": "Hljóð",
+    "FULLNAME": "fullt nafn",
+    "NAME": "Nafn",
+    "INTERNAL": "Innanhúss",
+    "RINGINGDEVICE": "Hringi tæki",
+    "SPEAKERDEVICE": "Hátalari",
+    "MICROPHONEDEVICE": "Hljóðnemi",
+    "CHANGEPASSWORD": "CBreyttu lykilorði",
+    "SETTINGS": "Stillingar",
+    "AUTOANSWER": "Sjálfvirkt svar",
+    "TOGGLE_NAVIGATION": "Skiptu um leiðsögn",
+    "TOGGLE_NAVIGATION_FOLD": "Skiptu um leiðsögu að hluta",
+    "TOGGLE_NAVIGATION_MODE": "Skiptu um leiðsögu hátt",
+    "SEARCH": "Leita",
+    "USER_SETTINGS": "Notenda stillingar",
+    "TOGGLE_QUICK_PANEL": "Skiptu um hraðborð",
+    "SOMEONE_LOGGED_YOU_OUT": "Einhver skráði sig út, viltu vera innskráður?",
+    "STAY_LOGGED": "Vertu innskráður",
+    "WARNING": "aðvörun",
+    "ENGLISH": "Enska",
+    "ITALIAN": "Ítalskur",
+    "FRENCH": "Franskur",
+    "KOREAN": "Kórenanskur",
+    "SPANISH": "Spánskur",
+    "SWEDISH": "Sænskur",
+    "RUSSIAN": "Rússneskur",
+    "GERMAN": "Þýskur",
+    "JAPANESE": "Japanskur",
+    "CHINESESIMPLIFIED": "Einföld kínverska",
+    "CHINESETRADITIONAL": "Hefðbundin kínverska",
+    "DUTCH": "Hollenska",
+    "FINNISH": "Finnska",
+    "DANISH": "Danska",
+    "PORTUGUESE": "Portugíska",
+    "NORWEGIAN": "Norska",
     "HINDI": "Hindi",
-    "HUNGARIAN": "Hungarian",
-    "TURKISH": "Turkish",
-    "PERSIAN": "Persian",
-    "LATVIAN": "Latvian",
-    "POLISH": "Polish",
-    "LOGIN_TIME": "Login Time",
-    "PAUSE_TIME": "Pause Time",
-    "PREVIEW": "Preview",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_PASSWORD": "New Password",
-    "OLD_PASSWORD": "Old Password",
-    "SAVE": "Save",
-    "TRIAL_VERSION": "Trial Version",
-    "PAUSE": "Pause",
-    "RESUME": "End Pause",
-    "NO_PAUSES_AVAILABLE": "No pauses available",
-    "CZECH": "Czech",
+    "HUNGARIAN": "Ungverska",
+    "TURKISH": "Tyrkneska",
+    "PERSIAN": "Persneska",
+    "LATVIAN": "Lettneska",
+    "POLISH": "Pólska",
+    "LOGIN_TIME": "Innskráning kl.",
+    "PAUSE_TIME": "Hlé kl.",
+    "PREVIEW": "Forskoða",
+    "CONFIRM_PASSWORD": "Staðfesta lykilorð",
+    "NEW_PASSWORD": "Nýtt lykilorð",
+    "OLD_PASSWORD": "Eldra lykilorð",
+    "SAVE": "Geyma",
+    "TRIAL_VERSION": "Prufu útgáfa",
+    "PAUSE": "Hlé",
+    "RESUME": "Enda hlé",
+    "NO_PAUSES_AVAILABLE": "Engin hlé aðgengileg",
+    "CZECH": "Tekkneska",
     "ERRORS": {
-      "FIELD_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
-      "PASSWORD_OLDPASSWORD_MATCH": "New password must be different from previous one"
+      "FIELD_REQUIRED": "Skilyrtur reitur",
+      "PASSWORD_REQUIRED": "Skilyrtur reitur",
+      "CONFIRM_NOT_MATCH": "Lykilorðin stemma ekki",
+      "SECURE_PASSWORD_PATTERN": "Lykilorðið verður að vera að minnsta kosti 8 stafir að lengd og hafa 1 lágstaf, 1 hástaf, 1 tölu og 1 sérstaf ~!?*@#$%^&-_=+[{]}.",
+      "PASSWORD_OLDPASSWORD_MATCH": "Lykilorðið má ekki vera það sama og síðasta"
     },
-    "BRAZILIAN": "Brazilian",
-    "ESTONIAN": "Estonian",
-    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
-    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-    "NO_AVAILABLE_INFO": "No available info",
-    "LITHUANIAN": "Lithuanian",
-    "NOTIFICATION_TITLE": "New notification from {{sender}}",
-    "NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
-    "USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed",
-    "LOGOUT": "Logout",
-    "SESSION_TIMEOUT": "The session will be automatically closed after 60 seconds",
+    "BRAZILIAN": "Brasilískt",
+    "ESTONIAN": "Eistneskur",
+    "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Engin hljóðnemi aðgengilegur",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Enginn hátalari aðgengilegur",
+    "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ekkert hljóðtæki aðgengilegt",
+    "NO_AVAILABLE_INFO": "Engar upplýsingar til staðar",
+    "LITHUANIAN": "Litháískur",
+    "NOTIFICATION_TITLE": "Ný tilkynning frá {{sender}}",
+    "NOTIFICATION_TITLE_RECIPIENT": "Til {{recipient}}",
+    "USER_FORCE_LOGOUT": "{{ip}} hefur þegar skráð sig inn með skilríkjunum. \n Margar innskráningar eru ekki leyfðar",
+    "LOGOUT": "Útskráning",
+    "SESSION_TIMEOUT": "Aðgerðinni verður sjálfkrafa lokað eftir 60 sekúndur",
     "HELP": {
-      "PREVIEW_RECALLME": "This is a Recall Me call scheduled for {{date}}"
+      "PREVIEW_RECALLME": "Þetta er „Call Me“ símtal áætluð {{date}}"
     },
-    "BOSNIAN": "Bosnian",
-    "ICELANDIC": "íslenskt"
+    "BOSNIAN": "Bosníu",
+    "ICELANDIC": "Íslenskt",
+    "WAITINGQUEUECALLS": "Símtöl í biðröð"
   }
 }
index d58a8eb..2b83342 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません",
     "BOSNIAN": "ボスニア語",
-    "ICELANDIC": "島の"
+    "ICELANDIC": "島の",
+    "WAITINGQUEUECALLS": "キューの呼び出しを待機しています"
   }
 }
index b39b7a4..abbf500 100644 (file)
     "WHATSAPP": "왓츠앱",
     "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다.",
     "BOSNIAN": "보스니아어",
-    "ICELANDIC": "아일랜드어"
+    "ICELANDIC": "아일랜드어",
+    "WAITINGQUEUECALLS": "대기열 호출 대기 중"
   }
 }
index b4f3558..9033022 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas",
     "BOSNIAN": "bosnių",
-    "ICELANDIC": "Islandiškas"
+    "ICELANDIC": "Islandiškas",
+    "WAITINGQUEUECALLS": "Laukia skambučių eilėje"
   }
 }
index 1d28d64..4a1a15e 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde",
     "BOSNIAN": "bosniešu",
-    "ICELANDIC": "Islandisks"
+    "ICELANDIC": "Islandisks",
+    "WAITINGQUEUECALLS": "Zvanu gaidīšana rindā"
   }
 }
index da368a8..62bbcda 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen",
     "BOSNIAN": "Bosnisch",
-    "ICELANDIC": "eilandachtig"
+    "ICELANDIC": "eilandachtig",
+    "WAITINGQUEUECALLS": "Wachtrij-oproepen"
   }
 }
index 1829459..3e931a5 100644 (file)
     "WHATSAPP": "Hva skjer",
     "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler",
     "BOSNIAN": "bosnisk",
-    "ICELANDIC": "Islandsk"
+    "ICELANDIC": "Islandsk",
+    "WAITINGQUEUECALLS": "Ventende køanrop"
   }
 }
index 0239f1b..a5f7d68 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów",
     "BOSNIAN": "bośniacki",
-    "ICELANDIC": "Islandzki"
+    "ICELANDIC": "Islandzki",
+    "WAITINGQUEUECALLS": "Połączenia oczekujące w kolejce"
   }
 }
index 2ebfc33..f534357 100644 (file)
@@ -2,15 +2,15 @@
   "TOOLBAR": {
     "PREFIXES": "Prefixos",
     "CALL": "Chamada",
-    "ARABIC": "Arabic",
+    "ARABIC": "Árabico",
     "INDONESIAN": "Indonésio",
-    "RESETPASSWORD": "Redefinir senha",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes antes de sua senha expirar",
-    "BROWSER_COMPATIBILITY": "Compatibilidade do navegador [Chrome, Opera, Safari]",
+    "RESETPASSWORD": "Redefinir Senha",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes para sua senha expirar",
+    "BROWSER_COMPATIBILITY": "Compatibilidade do Navegador [Chrome, Opera, Safari]",
     "RECORDING": "Gravação",
-    "INVALID_LICENSE": "Licença inválida",
+    "INVALID_LICENSE": "Licença Inválida",
     "BROWSER": "Navegador",
-    "OS": "Sistema operacional",
+    "OS": "Sistema Operacional",
     "REQUIREMENTS": "Requisitos",
     "LICENSE": "Licença",
     "HTTPS": "HTTPS",
     "REGISTERED": "Registrado",
     "NOT_REGISTERED": "Não registrado",
     "WEBRTC_LICENSE_NOT_ENABELD": "A licença WebRTC não está ativada",
-    "ATTENDED_TRANSFER": "Transferência assistida",
+    "ATTENDED_TRANSFER": "Transferência Assistida",
     "TRANSFER": "Transferir",
     "TARGET": "Objetivo",
     "CANCEL": "Cancelar",
     "FILENAME": "Nome do arquivo",
     "STATUS": "Status",
     "ACTIONS": "Ações",
-    "SPEAKER": "Alto-falante",
-    "RINGING": "Toque de celular",
+    "SPEAKER": "Saída de Som",
+    "RINGING": "Tom de Toque",
     "MICROPHONE": "Microfone",
     "PROFILE": "Perfil",
     "SERVICES": "Serviços",
     "AUDIO": "Áudio",
-    "FULLNAME": "Nome completo",
+    "FULLNAME": "Nome Completo",
     "NAME": "Nome",
     "INTERNAL": "Interno",
-    "RINGINGDEVICE": "Dispositivo de toque",
-    "SPEAKERDEVICE": "Dispositivo de alto-falante",
-    "MICROPHONEDEVICE": "Dispositivo de microfone",
-    "CHANGEPASSWORD": "Mudar senha",
+    "RINGINGDEVICE": "Saída de Toque",
+    "SPEAKERDEVICE": "Saída de Som",
+    "MICROPHONEDEVICE": "Microfone",
+    "CHANGEPASSWORD": "Alterar Senha",
     "SETTINGS": "Configurações",
-    "AUTOANSWER": "Resposta automática",
-    "TOGGLE_NAVIGATION": "Alternar de navegação",
-    "TOGGLE_NAVIGATION_FOLD": "Toggle navigation fold",
-    "TOGGLE_NAVIGATION_MODE": "Alternar modo de navegação",
+    "AUTOANSWER": "Atendimento Automático",
+    "TOGGLE_NAVIGATION": "Alternar de Navegação",
+    "TOGGLE_NAVIGATION_FOLD": "Separador de Altenar de Navegação",
+    "TOGGLE_NAVIGATION_MODE": "Modo de Alternar de Navegação",
     "SEARCH": "Procurar",
     "USER_SETTINGS": "Configurações do usuário",
     "TOGGLE_QUICK_PANEL": "Alternar painel rápido",
     "RUSSIAN": "Russo",
     "GERMAN": "Alemão",
     "JAPANESE": "Japonês",
-    "CHINESESIMPLIFIED": "Chinês simplificado",
-    "CHINESETRADITIONAL": "Chinês tradicional",
-    "DUTCH": "Dutch",
+    "CHINESESIMPLIFIED": "Chinês Simplificado",
+    "CHINESETRADITIONAL": "Chinês Tradicional",
+    "DUTCH": "Holandês",
     "FINNISH": "Finlandês",
-    "DANISH": "Danish",
+    "DANISH": "Dinamarquês",
     "PORTUGUESE": "Português(PT)",
     "NORWEGIAN": "Norueguês",
     "HINDI": "Hindi",
     "PERSIAN": "Persa",
     "LATVIAN": "Latvian",
     "POLISH": "Polonês",
-    "LOGIN_TIME": "Hora do login",
-    "PAUSE_TIME": "Tempo de pausa",
+    "LOGIN_TIME": "Hora do Login",
+    "PAUSE_TIME": "Tempo de Pausa",
     "PREVIEW": "Visualizar",
-    "CONFIRM_PASSWORD": "Confirme a senha",
-    "NEW_PASSWORD": "Nova senha",
-    "OLD_PASSWORD": "Senha antiga",
+    "CONFIRM_PASSWORD": "Confirme a Senha",
+    "NEW_PASSWORD": "Nova Senha",
+    "OLD_PASSWORD": "Senha Antiga",
     "SAVE": "Salvar",
-    "TRIAL_VERSION": "Versão de teste",
+    "TRIAL_VERSION": "Versão de Teste",
     "PAUSE": "Pausa",
-    "RESUME": "Fim de pausa",
+    "RESUME": "Fim de Pausa",
     "NO_PAUSES_AVAILABLE": "Não há pausas disponíveis",
     "ERRORS": {
       "FIELD_REQUIRED": "Campo obrigatório",
     "CZECH": "Tcheco",
     "ESTONIAN": "Estonian",
     "CONFERENCE": "Conferência com 2 sessões ativas",
-    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se ativado)",
-    "CHANGE_LANGUAGE_TITLE": "Mudar idioma",
+    "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se habilitado)",
+    "CHANGE_LANGUAGE_TITLE": "Alterar idioma",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nenhum dispositivo de áudio disponível",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
-    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
+    "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhuma saída de som disponível",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "LITHUANIAN": "Lituano",
     "NOTIFICATION_TITLE": "Nova notificação de {{sender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
-    "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos",
+    "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nLogins simultâneos não são permitidos",
     "LOGOUT": "Sair",
-    "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos",
+    "SESSION_TIMEOUT": "A sessão será encerrada automaticamente após 60 segundos",
     "PHONE2CALL": "Telefone para ligar",
-    "HUNGARIAN": "húngaro",
-    "AUTOANSWER_NOTIFICATIONS": "Notificações de resposta automática",
+    "HUNGARIAN": "Húngaro",
+    "AUTOANSWER_NOTIFICATIONS": "Atendimento Automático de Notificações",
     "CHANNEL": "Canal",
     "CHANNELS": "Canais",
-    "CHAT": "Bate-papo",
-    "DELAY": "Atraso de resposta automática [s]",
-    "EMAIL": "E-mail",
+    "CHAT": "Chat",
+    "DELAY": "Delay no atendimento automático [sef]",
+    "EMAIL": "Email",
     "FAX": "Fax",
     "NOTIFICATIONS": "Atendimento automático ativado",
     "NUM_NOTIFICATIONS": "Notificações",
-    "OPENCHANNEL": "Canal aberto",
+    "OPENCHANNEL": "Open Channel",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
-    "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "NO_AUTOANSWER_CONFIGURED": "Nenhum atendimento automático foi configurada para os canais",
+    "BOSNIAN": "Bósnio",
+    "ICELANDIC": "Islandês",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index 7a5cb84..bf64d9b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais",
     "BOSNIAN": "bósnio",
-    "ICELANDIC": "ilhéu"
+    "ICELANDIC": "ilhéu",
+    "WAITINGQUEUECALLS": "Esperando chamadas em fila"
   }
 }
index ea13d42..5670c7b 100644 (file)
     "WHATSAPP": "WhatsApp",
     "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик",
     "BOSNIAN": "боснийский",
-    "ICELANDIC": "островной"
+    "ICELANDIC": "островной",
+    "WAITINGQUEUECALLS": "Ожидание вызовов в очереди"
   }
 }
index dffab42..7f5be8b 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler",
     "BOSNIAN": "bosniska",
-    "ICELANDIC": "Islandic"
+    "ICELANDIC": "Islandic",
+    "WAITINGQUEUECALLS": "Väntande kösamtal"
   }
 }
index d0e603c..a8faad3 100644 (file)
     "WHATSAPP": "Naber",
     "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok",
     "BOSNIAN": "Boşnakça",
-    "ICELANDIC": "adalı"
+    "ICELANDIC": "adalı",
+    "WAITINGQUEUECALLS": "Bekleyen aramalar"
   }
 }
index 34075b2..8effc23 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答",
     "BOSNIAN": "波斯尼亚语",
-    "ICELANDIC": "岛国"
+    "ICELANDIC": "岛国",
+    "WAITINGQUEUECALLS": "等待队列呼叫"
   }
 }
index d301196..d598830 100644 (file)
     "WHATSAPP": "Whatsapp",
     "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答",
     "BOSNIAN": "波斯尼亞語",
-    "ICELANDIC": "島國"
+    "ICELANDIC": "島國",
+    "WAITINGQUEUECALLS": "等待隊列呼叫"
   }
 }
index 209094a..78073b3 100644 (file)
@@ -66,7 +66,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.0bca52b6.js"></script>
+  <script src="scripts/app.41cc58a1.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.0bca52b6.js
rename to public/scripts/app.41cc58a1.js
index 1ecefe6..06288dd 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),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.realtime","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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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 t,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 t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],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:1003})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",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,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,level,ParentId",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",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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){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",function(e){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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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",function(e){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"],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,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",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,level,ParentId",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,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",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: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",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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";angular.module("app.user-setting",[])}(),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"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.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,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],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(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.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()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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:u.instant("TOOLBAR.WARNING"),msg:u.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,x("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:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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(){o(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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),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:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.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){y.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,T(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();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.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,p.$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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,p.$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,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,t){var a=this;function i(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=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(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,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.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"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.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){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":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);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default: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){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":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);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default: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(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),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("jscookie",function(){return Cookies}).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,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("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(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],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,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,labelText:"CHAT",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:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["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(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.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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,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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",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,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.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=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=h,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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=b,g.getFinals=A,g.getHistories=E,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){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 f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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.trim()))},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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,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_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","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.advancedForm&&o.advancedForm.$setPristine();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.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.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.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},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,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=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.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){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,p).$promise}function v(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||g(),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 h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getMailAccountInteractions=g,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,g()}}).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=v,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){v(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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,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},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",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,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,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,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("userVoiceQueue:save"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userWhatsappQueue:save"),d.removeAllListeners("userWhatsappQueue:remove"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];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:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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:c.channel,type:"voice"===c.channel?c.direction:void 0,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:"voice"===c.channel?c.direction:void 0,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.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),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_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];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:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.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",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","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",attrChannel:"voice",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.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},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()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=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.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=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.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=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.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=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.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=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.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",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 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].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()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),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",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}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(){p.allCondition.value=void 0,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()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),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",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}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(){p.anyCondition.value=void 0,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-voip-provider"},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,note",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,note:e.note||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,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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,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_STYLES,m.stateClass=r.STATES_STYLES,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","realtimeManager","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_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,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,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.voiceRecording=c||e.params.voiceRecording||{},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.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.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","userProfile","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,f){var b=this;function A(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 E(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 y(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()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.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},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.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()})})},b.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()})})},b.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(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.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:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.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){b.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){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},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"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},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"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},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"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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 ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" 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)">\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"></angucomplete-alt>\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">\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\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" 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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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">\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" 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" >\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" ng-change="ngChange()">\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.\' +  vm.label | 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/apps/tvox/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 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="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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            <form name="scriptForm" flex="100" novalidate>\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\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\n              </div>\n            </form>\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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <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\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</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" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\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" 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" 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/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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-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        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\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          <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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\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/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" 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        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\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                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </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      </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\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\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                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\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.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          </div>\n\n        </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <div class="header md-accent-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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\n  <div class="content">\n\n    <md-tabs 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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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                <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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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/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_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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\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.agents.count > 0">\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="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.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 && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\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'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.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'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.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(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </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=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </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=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, 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=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" 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<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.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),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.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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="1200" 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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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 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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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                <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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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            </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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\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                <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            </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              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/staff/views/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" 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 ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$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      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" 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 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\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)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{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\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>\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-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" 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="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</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-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      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{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>\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-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" 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="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</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      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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/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_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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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 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">\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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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>{{ lang.translation | translate | startcase }}</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">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\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">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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>\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-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" 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.client-side-logging",[])}(),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.realtime","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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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 t,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 t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],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:1003})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",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,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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){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",function(e){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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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",function(e){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"],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,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",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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,level,ParentId",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",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,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",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: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",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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";angular.module("app.user-setting",[])}(),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"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.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,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],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(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.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()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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:u.instant("TOOLBAR.WARNING"),msg:u.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,x("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:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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(){o(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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),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:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.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){y.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,T(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();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.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,p.$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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,p.$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,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,t){var a=this;function i(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=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(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,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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(!0)},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(!0);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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.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"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.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){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":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);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default: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){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":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);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default: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(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",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(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e,!1)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),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("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),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}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),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("jscookie",function(){return Cookies}).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,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("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(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],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,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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.export.name=l.export.name.replace(/\//g,"_"),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,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(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,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,labelText:"CHAT",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:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["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(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.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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,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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",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,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.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=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=A,g.getFinals=E,g.getHistories=y,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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]):_.findLast(h.interaction.Messages,["secret",!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.trim()))},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.interaction.UserId!==h.user.id&&(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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","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.advancedForm&&o.advancedForm.$setPristine();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.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.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.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},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,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=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.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){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,p).$promise}function v(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||g(),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 h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getMailAccountInteractions=g,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,g()}}).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=v,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){v(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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,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},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",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,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(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,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,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,v){var h=this,f=t(function(){},999),b=n.params.direction||"inbound",A=m&&1==m.count?m.rows[0].crudPermissions:null;function E(){d.on("user:save",T),d.on("user:update",I),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("userVoiceQueue:save",w),d.on("userVoiceQueue:remove",R),d.on("userChatQueue:save",w),d.on("userChatQueue:remove",R),d.on("userSmsQueue:save",w),d.on("userSmsQueue:remove",R),d.on("userMailQueue:save",w),d.on("userMailQueue:remove",R),d.on("userFaxQueue:save",w),d.on("userFaxQueue:remove",R),d.on("userOpenchannelQueue:save",w),d.on("userOpenchannelQueue:remove",R),d.on("userWhatsappQueue:save",w),d.on("userWhatsappQueue:remove",R),h.agents.rows.forEach(function(e){e.globalStatusDisplayValue=g.getAgentStatusDisplayValue(e)})}function y(){return h.query.offset=(h.query.page-1)*h.query.limit,l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,E()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function S(e,n){if(n)return h.agents.count>h.agents.rows.length?y():(a=n,i=_.remove(h.agents.rows,["id",a]),void(h.agents.count-=i.length));if(h.query.sort.includes("globalStatus")&&(!h.query.globalStatusFilter||"busy"===h.query.globalStatusFilter)){var t="-"===h.query.sort[0]?"DESC":"ASC";if(!1===e)return y();if(!0===e)h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t);else{if(h.agents.count>h.agents.rows.length)return y();h.agents.rows=g.sortAgentsByStatus(h.agents.rows,t)}}var a,i}function T(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=g.getAgentStatusDisplayValue(n))}function I(e){var n,t,a=g.getUserUpdateEventOrigin(e);try{switch(a){case"login":!function(e){var n=!1;if(h.query.globalStatusFilter?e.loginInPause&&"pause"===h.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==h.query.globalStatusFilter||(n=!0):n=!0,n)y()}(e);break;case"logout":!function(e){if(0!==h.agents.count){var n=_.find(h.agents.rows,["id",e.id]);if(!n)return y();S(!1,n.id)}}(e);break;case"pause":n=e,(t=_.find(h.agents.rows,["id",n.id]))?(_.merge(t,n),t.globalStatus=g.getAgentStatus(t),g.checkEveryChannelPauseStatus(t),h.query.globalStatusFilter&&t.globalStatus!==h.query.globalStatusFilter?S(!1,t.id):t.globalStatusDisplayValue=g.getAgentStatusDisplayValue(t)):y()}}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function O(e){try{var n=_.find(h.agents.rows,["id",e.id]);S(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),S()):S(!1):"busy"!==h.query.globalStatusFilter||n||y()}catch(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.toString()})}}function C(e){if("ATTENDED"!==e.transfer){var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===h.query.globalStatusFilter?S(!1,e.id):S())}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&y()}}function R(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];h.query.globalQueueFilter.includes(n)&&S(!1,e.UserId)}}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.crudPermissions=u.parseCrudPermissions(A),h.utcOffset=v,h.query={limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:h.channel},h.$onInit=E,h.getAgents=y,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:b,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=function(){if(!(h.queues&&0<h.queues.count)){var e={type:b,fields:"id,name",sort:"name",nolimit:"true"},n=h.channel+"Queue";return l.getResourcesByRole(h.currentUser,n,e,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}},h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("userVoiceQueue:save"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userWhatsappQueue:save"),d.removeAllListeners("userWhatsappQueue:remove"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,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,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];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:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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:c.channel,type:"voice"===c.channel?c.direction:void 0,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:"voice"===c.channel?c.direction:void 0,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.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),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_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];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:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.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",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","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",attrChannel:"voice",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.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},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()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=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.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=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.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=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.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=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.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=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.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",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 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].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()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),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",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}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(){p.allCondition.value=void 0,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()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),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",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_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()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}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(){p.anyCondition.value=void 0,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-voip-provider"},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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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,note:e.note||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,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,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.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,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,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.voiceRecording=c||e.params.voiceRecording||{},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.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.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","userProfile","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,f){var b=this;function A(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 E(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 y(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()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.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},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.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()})})},b.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()})})},b.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(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.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:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.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){b.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){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},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"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},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"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},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"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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=""!==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=["","","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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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 ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" 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)">\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"></angucomplete-alt>\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">\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\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" 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, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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">\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" 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" >\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" ng-change="ngChange()">\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.\' +  vm.label | 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 && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/apps/tvox/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 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="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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            <form name="scriptForm" flex="100" novalidate>\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\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\n              </div>\n            </form>\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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <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\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</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" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\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" 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" 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/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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-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        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\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          <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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\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/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" 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        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\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                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </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      </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\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\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                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\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.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          </div>\n\n        </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <div class="header md-accent-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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\n  <div class="content">\n\n    <md-tabs 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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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                <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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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/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 md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/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/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'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.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\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.agents.count > 0">\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="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.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 && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\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'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.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'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.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(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </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=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </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=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, 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=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" 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<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.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-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="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </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>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),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.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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="1200" 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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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 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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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                <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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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            </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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\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                <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            </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              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/staff/views/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" 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 ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$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      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" 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 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\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)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{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\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>\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-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" 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="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</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-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      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{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>\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-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_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 == \'mailSubstatus\'" 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="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</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      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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/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_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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" privacy="vm.userProfile.privacyEnabled" 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 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">\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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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="{{vm.userProfile.privacyEnabled}}" 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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\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>{{ lang.translation | translate | startcase }}</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">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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 ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\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">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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>\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-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index ebf68fd..c92de10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb56a=['exports','VIRTUAL','getDataValue','action','STRING','integration','motionbar','jscripty','browser','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]'];(function(_0x38230,_0x148d0c){var _0x522ec9=function(_0x21fefc){while(--_0x21fefc){_0x38230['push'](_0x38230['shift']());}};_0x522ec9(++_0x148d0c);}(_0xb56a,0xab));var _0xab56=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xb56a[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require('sequelize');module[_0xab56('0x0')]={'name':{'type':Sequelize[_0xab56('0x1')],'get':function(_0x371800){return this[_0xab56('0x2')](_0xab56('0x3'));}},'action':{'type':Sequelize[_0xab56('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xab56('0x5'),_0xab56('0x6'),_0xab56('0x7'),'urlForward',_0xab56('0x8'),_0xab56('0x9'),'script']],'msg':_0xab56('0xa')}},'comment':_0xab56('0xa')},'data1':{'type':Sequelize[_0xab56('0x4')](0x1000),'comment':_0xab56('0xb')},'data2':{'type':Sequelize[_0xab56('0x4')](0x1000),'comment':_0xab56('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0xab56('0xd')},'data4':{'type':Sequelize[_0xab56('0x4')](0x1000),'comments':_0xab56('0xe')},'data5':{'type':Sequelize[_0xab56('0x4')](0x1000),'comments':_0xab56('0xf')},'data6':{'type':Sequelize['STRING'],'comments':_0xab56('0x10')},'data7':{'type':Sequelize[_0xab56('0x11')],'comments':_0xab56('0x12')}};
\ No newline at end of file
+var _0x46c3=['urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize','exports','action','contactManager','integration','motionbar','jscripty','bot','STRING','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]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'];(function(_0x5eabd7,_0x408f8f){var _0x47e0ae=function(_0x18d813){while(--_0x18d813){_0x5eabd7['push'](_0x5eabd7['shift']());}};_0x47e0ae(++_0x408f8f);}(_0x46c3,0x13e));var _0x346c=function(_0x1d0934,_0x3bbb10){_0x1d0934=_0x1d0934-0x0;var _0x4575c5=_0x46c3[_0x1d0934];return _0x4575c5;};'use strict';var Sequelize=require(_0x346c('0x0'));module[_0x346c('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xc7a813){return this['getDataValue'](_0x346c('0x2'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x346c('0x3'),_0x346c('0x4'),_0x346c('0x5'),_0x346c('0x6'),'urlForward','browser',_0x346c('0x7'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x346c('0x8')](0x1000),'comment':_0x346c('0x9')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0x346c('0xa')},'data3':{'type':Sequelize[_0x346c('0x8')](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[_0x346c('0x8')](0x1000),'comments':_0x346c('0xb')},'data5':{'type':Sequelize[_0x346c('0x8')](0x1000),'comments':_0x346c('0xc')},'data6':{'type':Sequelize['STRING'],'comments':_0x346c('0xd')},'data7':{'type':Sequelize[_0x346c('0xe')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 01716b0..eedade1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ce6=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','end','error','stack','name','send','body','Action','params','then','catch','find','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x3b299f,_0x2e0f9b){var _0x3071e0=function(_0x3cad68){while(--_0x3cad68){_0x3b299f['push'](_0x3b299f['shift']());}};_0x3071e0(++_0x2e0f9b);}(_0x0ce6,0x86));var _0x60ce=function(_0x2fba5d,_0x51c2ff){_0x2fba5d=_0x2fba5d-0x0;var _0x28184f=_0x0ce6[_0x2fba5d];return _0x28184f;};'use strict';var emlformat=require(_0x60ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x60ce('0x1'));var jsonpatch=require(_0x60ce('0x2'));var rp=require('request-promise');var moment=require(_0x60ce('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x60ce('0x4'));var util=require(_0x60ce('0x5'));var path=require(_0x60ce('0x6'));var sox=require(_0x60ce('0x7'));var csv=require(_0x60ce('0x8'));var ejs=require(_0x60ce('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60ce('0xa'));var squel=require(_0x60ce('0xb'));var crypto=require(_0x60ce('0xc'));var jsforce=require(_0x60ce('0xd'));var deskjs=require(_0x60ce('0xe'));var toCsv=require(_0x60ce('0x8'));var querystring=require(_0x60ce('0xf'));var Papa=require(_0x60ce('0x10'));var Redis=require(_0x60ce('0x11'));var authService=require(_0x60ce('0x12'));var qs=require(_0x60ce('0x13'));var as=require(_0x60ce('0x14'));var hardwareService=require(_0x60ce('0x15'));var logger=require(_0x60ce('0x16'))('api');var utils=require(_0x60ce('0x17'));var config=require(_0x60ce('0x18'));var licenseUtil=require(_0x60ce('0x19'));var db=require(_0x60ce('0x1a'))['db'];function respondWithStatusCode(_0x1446f8,_0x3f464f){_0x3f464f=_0x3f464f||0xcc;return function(_0x26e668){if(_0x26e668){return _0x1446f8[_0x60ce('0x1b')](_0x3f464f);}return _0x1446f8[_0x60ce('0x1c')](_0x3f464f)['end']();};}function respondWithResult(_0x5c3f51,_0xc55b9d){_0xc55b9d=_0xc55b9d||0xc8;return function(_0x1c86fe){if(_0x1c86fe){return _0x5c3f51['status'](_0xc55b9d)['json'](_0x1c86fe);}};}function respondWithFilteredResult(_0xc01b52,_0x4f33f4){return function(_0x38b78e){if(_0x38b78e){var _0x5a2c4e=typeof _0x4f33f4[_0x60ce('0x1d')]===_0x60ce('0x1e')&&typeof _0x4f33f4[_0x60ce('0x1f')]===_0x60ce('0x1e');var _0x45b552=_0x38b78e[_0x60ce('0x20')];var _0x2269d3=_0x5a2c4e?0x0:_0x4f33f4[_0x60ce('0x1d')];var _0x1b02fa=_0x5a2c4e?_0x38b78e['count']:_0x4f33f4[_0x60ce('0x1d')]+_0x4f33f4[_0x60ce('0x1f')];var _0x16a2ae;if(_0x1b02fa>=_0x45b552){_0x1b02fa=_0x45b552;_0x16a2ae=0xc8;}else{_0x16a2ae=0xce;}_0xc01b52[_0x60ce('0x1c')](_0x16a2ae);return _0xc01b52[_0x60ce('0x21')](_0x60ce('0x22'),_0x2269d3+'-'+_0x1b02fa+'/'+_0x45b552)[_0x60ce('0x23')](_0x38b78e);}return null;};}function patchUpdates(_0x3371d3){return function(_0x4a051a){try{jsonpatch['apply'](_0x4a051a,_0x3371d3,!![]);}catch(_0x4a80f1){return BPromise[_0x60ce('0x24')](_0x4a80f1);}return _0x4a051a[_0x60ce('0x25')]();};}function saveUpdates(_0x59844c,_0x34a105){return function(_0x3dbc6f){if(_0x3dbc6f){return _0x3dbc6f[_0x60ce('0x26')](_0x59844c)['then'](function(_0x1f7122){return _0x1f7122;});}return null;};}function removeEntity(_0xd6bef1,_0x3b9807){return function(_0xd5fb9d){if(_0xd5fb9d){return _0xd5fb9d[_0x60ce('0x27')]()['then'](function(){_0xd6bef1[_0x60ce('0x1c')](0xcc)[_0x60ce('0x28')]();});}};}function handleEntityNotFound(_0x42d7b,_0xb05638){return function(_0x25e5ba){if(!_0x25e5ba){_0x42d7b['sendStatus'](0x194);}return _0x25e5ba;};}function handleError(_0x2ffd5b,_0x4a9728){_0x4a9728=_0x4a9728||0x1f4;return function(_0x19b232){logger[_0x60ce('0x29')](_0x19b232[_0x60ce('0x2a')]);if(_0x19b232[_0x60ce('0x2b')]){delete _0x19b232[_0x60ce('0x2b')];}_0x2ffd5b[_0x60ce('0x1c')](_0x4a9728)[_0x60ce('0x2c')](_0x19b232);};}exports[_0x60ce('0x26')]=function(_0x5b9462,_0x4725c5){if(_0x5b9462[_0x60ce('0x2d')]['id']){delete _0x5b9462[_0x60ce('0x2d')]['id'];}return db[_0x60ce('0x2e')]['find']({'where':{'id':_0x5b9462[_0x60ce('0x2f')]['id']}})[_0x60ce('0x30')](handleEntityNotFound(_0x4725c5,null))['then'](saveUpdates(_0x5b9462['body'],null))[_0x60ce('0x30')](respondWithResult(_0x4725c5,null))[_0x60ce('0x31')](handleError(_0x4725c5,null));};exports[_0x60ce('0x27')]=function(_0x2d70a2,_0x22213a){return db[_0x60ce('0x2e')][_0x60ce('0x32')]({'where':{'id':_0x2d70a2[_0x60ce('0x2f')]['id']}})[_0x60ce('0x30')](handleEntityNotFound(_0x22213a,null))[_0x60ce('0x30')](removeEntity(_0x22213a,null))[_0x60ce('0x31')](handleError(_0x22213a,null));};
\ No newline at end of file
+var _0x9f95=['count','offset','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','body','Action','params','catch','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit'];(function(_0x5e5218,_0x4226ef){var _0x2dcd35=function(_0x11049f){while(--_0x11049f){_0x5e5218['push'](_0x5e5218['shift']());}};_0x2dcd35(++_0x4226ef);}(_0x9f95,0x1c2));var _0x59f9=function(_0x399e3b,_0x5dd3d2){_0x399e3b=_0x399e3b-0x0;var _0x28c6a4=_0x9f95[_0x399e3b];return _0x28c6a4;};'use strict';var emlformat=require(_0x59f9('0x0'));var rimraf=require(_0x59f9('0x1'));var zipdir=require(_0x59f9('0x2'));var jsonpatch=require(_0x59f9('0x3'));var rp=require('request-promise');var moment=require(_0x59f9('0x4'));var BPromise=require(_0x59f9('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x59f9('0x6'));var sox=require('sox');var csv=require(_0x59f9('0x7'));var ejs=require(_0x59f9('0x8'));var fs=require('fs');var fs_extra=require(_0x59f9('0x9'));var _=require(_0x59f9('0xa'));var squel=require(_0x59f9('0xb'));var crypto=require(_0x59f9('0xc'));var jsforce=require(_0x59f9('0xd'));var deskjs=require(_0x59f9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x59f9('0xf'));var Redis=require(_0x59f9('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x59f9('0x11'));var hardwareService=require(_0x59f9('0x12'));var logger=require(_0x59f9('0x13'))(_0x59f9('0x14'));var utils=require('../../config/utils');var config=require(_0x59f9('0x15'));var licenseUtil=require(_0x59f9('0x16'));var db=require(_0x59f9('0x17'))['db'];function respondWithStatusCode(_0x3a049e,_0x3676cb){_0x3676cb=_0x3676cb||0xcc;return function(_0x4439e1){if(_0x4439e1){return _0x3a049e[_0x59f9('0x18')](_0x3676cb);}return _0x3a049e[_0x59f9('0x19')](_0x3676cb)[_0x59f9('0x1a')]();};}function respondWithResult(_0x3f907f,_0x996924){_0x996924=_0x996924||0xc8;return function(_0x26aaab){if(_0x26aaab){return _0x3f907f[_0x59f9('0x19')](_0x996924)[_0x59f9('0x1b')](_0x26aaab);}};}function respondWithFilteredResult(_0x317952,_0x33d05d){return function(_0x335e4c){if(_0x335e4c){var _0x1fbeeb=typeof _0x33d05d['offset']===_0x59f9('0x1c')&&typeof _0x33d05d[_0x59f9('0x1d')]===_0x59f9('0x1c');var _0x48d5cd=_0x335e4c['count'];var _0x55dd44=_0x1fbeeb?0x0:_0x33d05d['offset'];var _0x49e44a=_0x1fbeeb?_0x335e4c[_0x59f9('0x1e')]:_0x33d05d[_0x59f9('0x1f')]+_0x33d05d[_0x59f9('0x1d')];var _0x37a6df;if(_0x49e44a>=_0x48d5cd){_0x49e44a=_0x48d5cd;_0x37a6df=0xc8;}else{_0x37a6df=0xce;}_0x317952[_0x59f9('0x19')](_0x37a6df);return _0x317952[_0x59f9('0x20')](_0x59f9('0x21'),_0x55dd44+'-'+_0x49e44a+'/'+_0x48d5cd)[_0x59f9('0x1b')](_0x335e4c);}return null;};}function patchUpdates(_0x10d8c8){return function(_0x36ce7a){try{jsonpatch[_0x59f9('0x22')](_0x36ce7a,_0x10d8c8,!![]);}catch(_0xb64b52){return BPromise[_0x59f9('0x23')](_0xb64b52);}return _0x36ce7a['save']();};}function saveUpdates(_0x543d07,_0x40ae28){return function(_0x745517){if(_0x745517){return _0x745517[_0x59f9('0x24')](_0x543d07)['then'](function(_0x554bdd){return _0x554bdd;});}return null;};}function removeEntity(_0x24f202,_0xc2ea4f){return function(_0x1818dd){if(_0x1818dd){return _0x1818dd[_0x59f9('0x25')]()[_0x59f9('0x26')](function(){_0x24f202[_0x59f9('0x19')](0xcc)[_0x59f9('0x1a')]();});}};}function handleEntityNotFound(_0x21c984,_0x3cd53e){return function(_0x4f5b7c){if(!_0x4f5b7c){_0x21c984[_0x59f9('0x18')](0x194);}return _0x4f5b7c;};}function handleError(_0x3ffb5b,_0x2fb99d){_0x2fb99d=_0x2fb99d||0x1f4;return function(_0x3da7e4){logger[_0x59f9('0x27')](_0x3da7e4[_0x59f9('0x28')]);if(_0x3da7e4[_0x59f9('0x29')]){delete _0x3da7e4[_0x59f9('0x29')];}_0x3ffb5b[_0x59f9('0x19')](_0x2fb99d)[_0x59f9('0x2a')](_0x3da7e4);};}exports['update']=function(_0x1f1ee5,_0x36afd4){if(_0x1f1ee5[_0x59f9('0x2b')]['id']){delete _0x1f1ee5[_0x59f9('0x2b')]['id'];}return db[_0x59f9('0x2c')]['find']({'where':{'id':_0x1f1ee5[_0x59f9('0x2d')]['id']}})[_0x59f9('0x26')](handleEntityNotFound(_0x36afd4,null))[_0x59f9('0x26')](saveUpdates(_0x1f1ee5[_0x59f9('0x2b')],null))[_0x59f9('0x26')](respondWithResult(_0x36afd4,null))[_0x59f9('0x2e')](handleError(_0x36afd4,null));};exports[_0x59f9('0x25')]=function(_0x39b93d,_0x274ffb){return db[_0x59f9('0x2c')][_0x59f9('0x2f')]({'where':{'id':_0x39b93d[_0x59f9('0x2d')]['id']}})[_0x59f9('0x26')](handleEntityNotFound(_0x274ffb,null))[_0x59f9('0x26')](removeEntity(_0x274ffb,null))['catch'](handleError(_0x274ffb,null));};
\ No newline at end of file
index 5610cc8..d59fa75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3287=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','Action','tools_actions'];(function(_0x4eb24f,_0x9d1734){var _0x2f5de3=function(_0x464b24){while(--_0x464b24){_0x4eb24f['push'](_0x4eb24f['shift']());}};_0x2f5de3(++_0x9d1734);}(_0x3287,0x186));var _0x7328=function(_0x29f1b0,_0x1618f8){_0x29f1b0=_0x29f1b0-0x0;var _0x36b253=_0x3287[_0x29f1b0];return _0x36b253;};'use strict';var _=require(_0x7328('0x0'));var util=require(_0x7328('0x1'));var logger=require(_0x7328('0x2'))('api');var moment=require(_0x7328('0x3'));var BPromise=require(_0x7328('0x4'));var rp=require(_0x7328('0x5'));var fs=require('fs');var path=require(_0x7328('0x6'));var rimraf=require(_0x7328('0x7'));var config=require(_0x7328('0x8'));var attributes=require(_0x7328('0x9'));module[_0x7328('0xa')]=function(_0x5b4228,_0x4b9366){return _0x5b4228['define'](_0x7328('0xb'),attributes,{'tableName':_0x7328('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fab=['moment','request-promise','path','rimraf','../../config/environment','tools_actions','util','../../config/logger','api'];(function(_0x64f937,_0x204fb1){var _0x5e32c0=function(_0x31eb33){while(--_0x31eb33){_0x64f937['push'](_0x64f937['shift']());}};_0x5e32c0(++_0x204fb1);}(_0x4fab,0x72));var _0xb4fa=function(_0x8c324c,_0xe6ae64){_0x8c324c=_0x8c324c-0x0;var _0x12bbb9=_0x4fab[_0x8c324c];return _0x12bbb9;};'use strict';var _=require('lodash');var util=require(_0xb4fa('0x0'));var logger=require(_0xb4fa('0x1'))(_0xb4fa('0x2'));var moment=require(_0xb4fa('0x3'));var BPromise=require('bluebird');var rp=require(_0xb4fa('0x4'));var fs=require('fs');var path=require(_0xb4fa('0x5'));var rimraf=require(_0xb4fa('0x6'));var config=require(_0xb4fa('0x7'));var attributes=require('./action.attributes');module['exports']=function(_0x4cfd88,_0x21c30a){return _0x4cfd88['define']('Action',attributes,{'tableName':_0xb4fa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35f8e3b..f35d47a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x331388,_0x4922d7){var _0x17837f=function(_0x5d9c64){while(--_0x5d9c64){_0x331388['push'](_0x331388['shift']());}};_0x17837f(++_0x4922d7);}(_0xabce,0x103));var _0xeabc=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xabce[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
+var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x5054c0,_0x3213da){var _0x127010=function(_0x16d5ef){while(--_0x16d5ef){_0x5054c0['push'](_0x5054c0['shift']());}};_0x127010(++_0x3213da);}(_0xabce,0x103));var _0xeabc=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xabce[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
index e5814ac..aaf97de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1686=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','delete','destroy','util','express','Router'];(function(_0x43f6e7,_0x9850ab){var _0x483e29=function(_0xfbc473){while(--_0xfbc473){_0x43f6e7['push'](_0x43f6e7['shift']());}};_0x483e29(++_0x9850ab);}(_0x1686,0x7b));var _0x6168=function(_0x145f1a,_0x53cdf5){_0x145f1a=_0x145f1a-0x0;var _0x2ec809=_0x1686[_0x145f1a];return _0x2ec809;};'use strict';var multer=require('multer');var util=require(_0x6168('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6168('0x1'));var router=express[_0x6168('0x2')]();var fs_extra=require(_0x6168('0x3'));var auth=require(_0x6168('0x4'));var interaction=require(_0x6168('0x5'));var config=require(_0x6168('0x6'));var controller=require(_0x6168('0x7'));router[_0x6168('0x8')](_0x6168('0x9'),auth[_0x6168('0xa')](),controller[_0x6168('0xb')]);router[_0x6168('0xc')](_0x6168('0x9'),auth['isAuthenticated'](),controller[_0x6168('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x50e0=['util','path','connect-timeout','Router','./action.controller','put','/:id','isAuthenticated','update','delete','destroy','exports','multer'];(function(_0x1eb82d,_0x1e23cb){var _0x2c9502=function(_0x4a3500){while(--_0x4a3500){_0x1eb82d['push'](_0x1eb82d['shift']());}};_0x2c9502(++_0x1e23cb);}(_0x50e0,0x19f));var _0x050e=function(_0x427fbd,_0xfa52d){_0x427fbd=_0x427fbd-0x0;var _0x4eddcc=_0x50e0[_0x427fbd];return _0x4eddcc;};'use strict';var multer=require(_0x050e('0x0'));var util=require(_0x050e('0x1'));var path=require(_0x050e('0x2'));var timeout=require(_0x050e('0x3'));var express=require('express');var router=express[_0x050e('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(_0x050e('0x5'));router[_0x050e('0x6')](_0x050e('0x7'),auth[_0x050e('0x8')](),controller[_0x050e('0x9')]);router[_0x050e('0xa')](_0x050e('0x7'),auth['isAuthenticated'](),controller[_0x050e('0xb')]);module[_0x050e('0xc')]=router;
\ No newline at end of file
index 6e675bb..1c446ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['STRING','TEXT','sequelize','exports'];(function(_0x45d48a,_0xc2538f){var _0x93e5d0=function(_0x2524f6){while(--_0x2524f6){_0x45d48a['push'](_0x45d48a['shift']());}};_0x93e5d0(++_0xc2538f);}(_0x687b,0x14a));var _0xb687=function(_0x4e322c,_0x4c95b3){_0x4e322c=_0x4e322c-0x0;var _0x358af7=_0x687b[_0x4e322c];return _0x358af7;};'use strict';var Sequelize=require(_0xb687('0x0'));module[_0xb687('0x1')]={'name':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb687('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xb687('0x3')]},'joins':{'type':Sequelize[_0xb687('0x3')]}};
\ No newline at end of file
+var _0x98a8=['sequelize','exports','STRING','TEXT'];(function(_0x5b7c74,_0x489563){var _0x303ee0=function(_0x15abd7){while(--_0x15abd7){_0x5b7c74['push'](_0x5b7c74['shift']());}};_0x303ee0(++_0x489563);}(_0x98a8,0x12c));var _0x898a=function(_0x2d4c6f,_0x246d71){_0x2d4c6f=_0x2d4c6f-0x0;var _0x4445a6=_0x98a8[_0x2d4c6f];return _0x4445a6;};'use strict';var Sequelize=require(_0x898a('0x0'));module[_0x898a('0x1')]={'name':{'type':Sequelize[_0x898a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x898a('0x2')]},'parent':{'type':Sequelize[_0x898a('0x2')]},'table':{'type':Sequelize[_0x898a('0x2')]},'conditions':{'type':Sequelize[_0x898a('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 32f7ac2..e70b361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bc3=['end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','CustomReports','UserProfileResource','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','AnalyticCustomReport','includeAll','include','findAll','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','orderBy','order','DESC','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','ROUND(%s)','IS\x20NOT\x20EMPTY','alias','output','web','fullPath','%s-%s.%s','generate','csv','custom','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','info','Run\x20Query:','fork','../../components/export/','select','countTable','COUNT(*)','SELECT','run','groupBy','debug','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status'];(function(_0x118f22,_0x59751a){var _0x55551e=function(_0x18fa6f){while(--_0x18fa6f){_0x118f22['push'](_0x118f22['shift']());}};_0x55551e(++_0x59751a);}(_0x8bc3,0x8a));var _0x38bc=function(_0x2ba054,_0x4cfa79){_0x2ba054=_0x2ba054-0x0;var _0x5d2153=_0x8bc3[_0x2ba054];return _0x5d2153;};'use strict';var emlformat=require(_0x38bc('0x0'));var rimraf=require(_0x38bc('0x1'));var zipdir=require(_0x38bc('0x2'));var jsonpatch=require(_0x38bc('0x3'));var rp=require(_0x38bc('0x4'));var moment=require(_0x38bc('0x5'));var BPromise=require(_0x38bc('0x6'));var Mustache=require(_0x38bc('0x7'));var util=require(_0x38bc('0x8'));var path=require(_0x38bc('0x9'));var sox=require('sox');var csv=require(_0x38bc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x38bc('0xb'));var _=require(_0x38bc('0xc'));var squel=require(_0x38bc('0xd'));var crypto=require(_0x38bc('0xe'));var jsforce=require(_0x38bc('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x38bc('0x10'));var Papa=require(_0x38bc('0x11'));var Redis=require(_0x38bc('0x12'));var authService=require(_0x38bc('0x13'));var qs=require(_0x38bc('0x14'));var as=require(_0x38bc('0x15'));var hardwareService=require(_0x38bc('0x16'));var logger=require(_0x38bc('0x17'))('api');var utils=require(_0x38bc('0x18'));var config=require(_0x38bc('0x19'));var licenseUtil=require(_0x38bc('0x1a'));var db=require('../../mysqldb')['db'];var dbH=require(_0x38bc('0x1b'))[_0x38bc('0x1c')];function respondWithStatusCode(_0x5cc22f,_0x1e9042){_0x1e9042=_0x1e9042||0xcc;return function(_0x1f17ce){if(_0x1f17ce){return _0x5cc22f[_0x38bc('0x1d')](_0x1e9042);}return _0x5cc22f[_0x38bc('0x1e')](_0x1e9042)[_0x38bc('0x1f')]();};}function respondWithResult(_0x1c33aa,_0x53c944){_0x53c944=_0x53c944||0xc8;return function(_0x219cf8){if(_0x219cf8){return _0x1c33aa[_0x38bc('0x1e')](_0x53c944)[_0x38bc('0x20')](_0x219cf8);}};}function respondWithFilteredResult(_0x2e2d89,_0x168c00){return function(_0x3b45e0){if(_0x3b45e0){var _0x2fca4d=typeof _0x168c00[_0x38bc('0x21')]===_0x38bc('0x22')&&typeof _0x168c00[_0x38bc('0x23')]===_0x38bc('0x22');var _0x9a757e=_0x3b45e0[_0x38bc('0x24')];var _0x108c2b=_0x2fca4d?0x0:_0x168c00[_0x38bc('0x21')];var _0x195014=_0x2fca4d?_0x3b45e0[_0x38bc('0x24')]:_0x168c00[_0x38bc('0x21')]+_0x168c00[_0x38bc('0x23')];var _0xa0853b;if(_0x195014>=_0x9a757e){_0x195014=_0x9a757e;_0xa0853b=0xc8;}else{_0xa0853b=0xce;}_0x2e2d89['status'](_0xa0853b);return _0x2e2d89['set'](_0x38bc('0x25'),_0x108c2b+'-'+_0x195014+'/'+_0x9a757e)[_0x38bc('0x20')](_0x3b45e0);}return null;};}function patchUpdates(_0x155daa){return function(_0xf9590d){try{jsonpatch[_0x38bc('0x26')](_0xf9590d,_0x155daa,!![]);}catch(_0x16fbe8){return BPromise[_0x38bc('0x27')](_0x16fbe8);}return _0xf9590d['save']();};}function saveUpdates(_0xb96b19,_0x220496){return function(_0x3f870f){if(_0x3f870f){return _0x3f870f[_0x38bc('0x28')](_0xb96b19)[_0x38bc('0x29')](function(_0x712f29){return _0x712f29;});}return null;};}function removeEntity(_0x131590,_0x3336a2){return function(_0xad844f){if(_0xad844f){return _0xad844f[_0x38bc('0x2a')]()[_0x38bc('0x29')](function(){var _0x48faa3=_0xad844f[_0x38bc('0x2b')]({'plain':!![]});var _0x38a86d=_0x38bc('0x2c');return db[_0x38bc('0x2d')]['destroy']({'where':{'type':_0x38a86d,'resourceId':_0x48faa3['id']}})[_0x38bc('0x29')](function(){return _0xad844f;});})[_0x38bc('0x29')](function(){_0x131590[_0x38bc('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22fb67,_0x7b0f81){return function(_0x29a97c){if(!_0x29a97c){_0x22fb67[_0x38bc('0x1d')](0x194);}return _0x29a97c;};}function handleError(_0x3ac280,_0x4b825e){_0x4b825e=_0x4b825e||0x1f4;return function(_0x514679){logger['error'](_0x514679[_0x38bc('0x2e')]);if(_0x514679[_0x38bc('0x2f')]){delete _0x514679[_0x38bc('0x2f')];}_0x3ac280[_0x38bc('0x1e')](_0x4b825e)[_0x38bc('0x30')](_0x514679);};}exports[_0x38bc('0x31')]=function(_0x31fa55,_0x3ff94f){var _0x549824={},_0x3c8b03={},_0x5ba2c2={'count':0x0,'rows':[]};var _0x11c009=_[_0x38bc('0x32')](db['AnalyticCustomReport'][_0x38bc('0x33')],function(_0x330e79){return{'name':_0x330e79['fieldName'],'type':_0x330e79[_0x38bc('0x34')][_0x38bc('0x35')]};});_0x3c8b03[_0x38bc('0x36')]=_['map'](_0x11c009,_0x38bc('0x2f'));_0x3c8b03[_0x38bc('0x37')]=_[_0x38bc('0x38')](_0x31fa55[_0x38bc('0x37')]);_0x3c8b03[_0x38bc('0x39')]=_['intersection'](_0x3c8b03['model'],_0x3c8b03['query']);_0x549824[_0x38bc('0x3a')]=_[_0x38bc('0x3b')](_0x3c8b03[_0x38bc('0x36')],qs[_0x38bc('0x3c')](_0x31fa55[_0x38bc('0x37')]['fields']));_0x549824[_0x38bc('0x3a')]=_0x549824[_0x38bc('0x3a')][_0x38bc('0x3d')]?_0x549824[_0x38bc('0x3a')]:_0x3c8b03[_0x38bc('0x36')];if(!_0x31fa55[_0x38bc('0x37')][_0x38bc('0x3e')](_0x38bc('0x3f'))){_0x549824[_0x38bc('0x23')]=qs['limit'](_0x31fa55[_0x38bc('0x37')][_0x38bc('0x23')]);_0x549824[_0x38bc('0x21')]=qs['offset'](_0x31fa55[_0x38bc('0x37')][_0x38bc('0x21')]);}_0x549824['order']=qs[_0x38bc('0x40')](_0x31fa55[_0x38bc('0x37')][_0x38bc('0x40')]);_0x549824[_0x38bc('0x41')]=qs[_0x38bc('0x39')](_[_0x38bc('0x42')](_0x31fa55[_0x38bc('0x37')],_0x3c8b03[_0x38bc('0x39')]),_0x11c009);if(_0x31fa55[_0x38bc('0x37')][_0x38bc('0x43')]){_0x549824['where']=_[_0x38bc('0x44')](_0x549824['where'],{'$or':_[_0x38bc('0x32')](_0x11c009,function(_0x7de30b){if(_0x7de30b['type']!==_0x38bc('0x45')){var _0x1a3d38={};_0x1a3d38[_0x7de30b[_0x38bc('0x2f')]]={'$like':'%'+_0x31fa55[_0x38bc('0x37')][_0x38bc('0x43')]+'%'};return _0x1a3d38;}})});}_0x549824=_[_0x38bc('0x44')]({},_0x549824,_0x31fa55['options']);var _0x121b24={'where':_0x549824[_0x38bc('0x41')]};return db[_0x38bc('0x46')][_0x38bc('0x24')](_0x121b24)[_0x38bc('0x29')](function(_0x3f0898){_0x5ba2c2['count']=_0x3f0898;if(_0x31fa55['query'][_0x38bc('0x47')]){_0x549824[_0x38bc('0x48')]=[{'all':!![]}];}return db[_0x38bc('0x46')][_0x38bc('0x49')](_0x549824);})['then'](function(_0x595798){_0x5ba2c2['rows']=_0x595798;return _0x5ba2c2;})[_0x38bc('0x29')](respondWithFilteredResult(_0x3ff94f,_0x549824))[_0x38bc('0x4a')](handleError(_0x3ff94f,null));};exports[_0x38bc('0x4b')]=function(_0x22114d,_0x806517){var _0x3920db={'raw':![],'where':{'id':_0x22114d[_0x38bc('0x4c')]['id']}},_0x763d31={};_0x763d31['model']=_[_0x38bc('0x38')](db[_0x38bc('0x46')][_0x38bc('0x33')]);_0x763d31['query']=_[_0x38bc('0x38')](_0x22114d[_0x38bc('0x37')]);_0x763d31[_0x38bc('0x39')]=_[_0x38bc('0x3b')](_0x763d31[_0x38bc('0x36')],_0x763d31[_0x38bc('0x37')]);_0x3920db['attributes']=_['intersection'](_0x763d31[_0x38bc('0x36')],qs['fields'](_0x22114d[_0x38bc('0x37')][_0x38bc('0x3c')]));_0x3920db[_0x38bc('0x3a')]=_0x3920db[_0x38bc('0x3a')][_0x38bc('0x3d')]?_0x3920db['attributes']:_0x763d31['model'];if(_0x22114d[_0x38bc('0x37')]['includeAll']){_0x3920db[_0x38bc('0x48')]=[{'all':!![]}];}_0x3920db=_[_0x38bc('0x44')]({},_0x3920db,_0x22114d[_0x38bc('0x4d')]);return db[_0x38bc('0x46')][_0x38bc('0x4e')](_0x3920db)[_0x38bc('0x29')](handleEntityNotFound(_0x806517,null))[_0x38bc('0x29')](respondWithResult(_0x806517,null))[_0x38bc('0x4a')](handleError(_0x806517,null));};exports[_0x38bc('0x4f')]=function(_0x5c2f27,_0x547eee){return db[_0x38bc('0x46')][_0x38bc('0x4f')](_0x5c2f27[_0x38bc('0x50')],{})[_0x38bc('0x29')](function(_0x18452c){var _0x8949b2=_0x5c2f27[_0x38bc('0x51')][_0x38bc('0x2b')]({'plain':!![]});if(!_0x8949b2)throw new Error(_0x38bc('0x52'));if(_0x8949b2[_0x38bc('0x53')]===_0x38bc('0x51')){var _0xca2034=_0x18452c[_0x38bc('0x2b')]({'plain':!![]});var _0x58de1f='Reports';return db[_0x38bc('0x54')][_0x38bc('0x4e')]({'where':{'name':_0x58de1f,'userProfileId':_0x8949b2[_0x38bc('0x55')]},'raw':!![]})[_0x38bc('0x29')](function(_0x3f947a){if(_0x3f947a&&_0x3f947a[_0x38bc('0x56')]===0x0){return db[_0x38bc('0x2d')][_0x38bc('0x4f')]({'name':_0xca2034['name'],'resourceId':_0xca2034['id'],'type':_0x38bc('0x2c'),'sectionId':_0x3f947a['id']},{})[_0x38bc('0x29')](function(){return _0x18452c;});}else{return _0x18452c;}})[_0x38bc('0x4a')](function(_0xcd8cf4){logger[_0x38bc('0x57')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xcd8cf4);throw _0xcd8cf4;});}return _0x18452c;})['then'](respondWithResult(_0x547eee,0xc9))[_0x38bc('0x4a')](handleError(_0x547eee,null));};exports[_0x38bc('0x28')]=function(_0x1e01b8,_0x1b2620){if(_0x1e01b8['body']['id']){delete _0x1e01b8[_0x38bc('0x50')]['id'];}return db['AnalyticCustomReport']['find']({'where':{'id':_0x1e01b8[_0x38bc('0x4c')]['id']}})[_0x38bc('0x29')](handleEntityNotFound(_0x1b2620,null))[_0x38bc('0x29')](saveUpdates(_0x1e01b8['body'],null))[_0x38bc('0x29')](respondWithResult(_0x1b2620,null))[_0x38bc('0x4a')](handleError(_0x1b2620,null));};exports['destroy']=function(_0x475fc5,_0x480fd5){return db[_0x38bc('0x46')][_0x38bc('0x4e')]({'where':{'id':_0x475fc5[_0x38bc('0x4c')]['id']}})[_0x38bc('0x29')](handleEntityNotFound(_0x480fd5,null))[_0x38bc('0x29')](removeEntity(_0x480fd5,null))[_0x38bc('0x4a')](handleError(_0x480fd5,null));};exports[_0x38bc('0x58')]=function(_0x323efd,_0x3a647a){var _0x482bf4=0xa;var _0x2a6e7b=['join',_0x38bc('0x59'),_0x38bc('0x5a'),_0x38bc('0x5b')];var _0x3d7b8e={'SUM':_0x38bc('0x5c'),'COUNT':_0x38bc('0x5d'),'COUNT DISTINCT':_0x38bc('0x5e'),'MAX':_0x38bc('0x5f'),'MIN':_0x38bc('0x60'),'AVG':_0x38bc('0x61'),'GROUP_CONCAT':_0x38bc('0x62'),'GROUP_CONCAT ASC':_0x38bc('0x63'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1e6108={'SEC_TO_TIME':_0x38bc('0x64'),'DATE':_0x38bc('0x65'),'HOUR':_0x38bc('0x66'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x38bc('0x67')};var _0x528ccc=function(_0xac412b){return!_[_0x38bc('0x68')]([_0x38bc('0x69'),_0x38bc('0x6a'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0xac412b);};var _0x40a484=function(_0x48f044){if(!_0x48f044||!_0x48f044[_0x38bc('0x6b')]['length']){return'';}for(var _0x5b4c72='(',_0x39a2cf=0x0;_0x39a2cf<_0x48f044[_0x38bc('0x6b')][_0x38bc('0x3d')];_0x39a2cf+=0x1){_0x39a2cf>0x0&&(_0x5b4c72+='\x20'+_0x48f044[_0x38bc('0x6c')]+'\x20');_0x5b4c72+=_0x48f044[_0x38bc('0x6b')][_0x39a2cf][_0x38bc('0x6d')]?_0x40a484(_0x48f044['rules'][_0x39a2cf][_0x38bc('0x6d')]):_0x48f044['rules'][_0x39a2cf][_0x38bc('0x6e')]+'\x20'+_0x48f044[_0x38bc('0x6b')][_0x39a2cf][_0x38bc('0x6f')]+(_0x528ccc(_0x48f044[_0x38bc('0x6b')][_0x39a2cf]['condition'])?'\x20'+_0x48f044[_0x38bc('0x6b')][_0x39a2cf][_0x38bc('0x70')]:'');}return _0x5b4c72+')';};var _0x5a063c={'where':{'id':_0x323efd[_0x38bc('0x4c')]['id']}},_0x1bb698,_0x287659,_0x27d4c8,_0x68afa6,_0xc56f7b;_0x5a063c=_[_0x38bc('0x44')]({},_0x5a063c,_0x323efd[_0x38bc('0x4d')]);return db[_0x38bc('0x46')]['find'](_0x5a063c)[_0x38bc('0x29')](function(_0x288553){if(_0x288553){_0x1bb698=_0x288553;return _0x288553[_0x38bc('0x71')]();}return null;})[_0x38bc('0x29')](function(_0x4e6543){if(_0x4e6543){if(!_0x4e6543[_0x38bc('0x3d')]){throw new db[(_0x38bc('0x72'))][(_0x38bc('0x73'))](_0x38bc('0x74'),0x193);}_0x287659=_0x4e6543;return db[_0x38bc('0x75')][_0x38bc('0x49')]({'raw':!![]});}return null;})[_0x38bc('0x29')](function(_0x151a60){if(_0x151a60){_0x27d4c8=_[_0x38bc('0x76')](_0x151a60,'id');var _0x2fbe92;var _0x11fd8e=squel['select']();_0x11fd8e[_0x38bc('0x77')](_0x1bb698[_0x38bc('0x78')]);for(var _0x4a4548=0x0;_0x4a4548<_0x287659[_0x38bc('0x3d')];_0x4a4548+=0x1){_0x2fbe92=_0x287659[_0x4a4548][_0x38bc('0x79')]?_0x27d4c8[_0x287659[_0x4a4548]['MetricId']][_0x38bc('0x7a')]:_0x287659[_0x4a4548][_0x38bc('0x6e')];_0x2fbe92=_0x287659[_0x4a4548][_0x38bc('0x7b')]?_[_0x38bc('0x7c')](_0x3d7b8e[_0x287659[_0x4a4548][_0x38bc('0x7b')]],'%s',_0x2fbe92):_0x2fbe92;_0x2fbe92=_0x287659[_0x4a4548]['format']?_['replace'](_0x1e6108[_0x287659[_0x4a4548][_0x38bc('0x7d')]],'%s',_0x2fbe92):_0x2fbe92;if(_0x287659[_0x4a4548]['groupBy']){_0x11fd8e['group'](_0x2fbe92);}_0x287659[_0x4a4548][_0x38bc('0x7e')]&&_0x11fd8e[_0x38bc('0x7f')](_0x2fbe92,_0x287659[_0x4a4548]['orderBy']===_0x38bc('0x80')?![]:!![]);_0x11fd8e[_0x38bc('0x6e')](_0x2fbe92,_0x287659[_0x4a4548]['alias']||_0x2fbe92);}if(_0x1bb698[_0x38bc('0x81')]){_0x1bb698[_0x38bc('0x81')]=JSON['parse'](_0x1bb698[_0x38bc('0x81')]);for(var _0x14ba3c=0x0;_0x14ba3c<_0x1bb698[_0x38bc('0x81')][_0x38bc('0x3d')];_0x14ba3c+=0x1){if(_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x34')]&&_[_0x38bc('0x68')](_0x2a6e7b,_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x34')])&&_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x82')]&&_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x83')]&&_0x1bb698[_0x38bc('0x81')][_0x14ba3c]['foreignKey']){_0x11fd8e[_0x1bb698[_0x38bc('0x81')][_0x14ba3c]['type']](_0x1bb698['joins'][_0x14ba3c][_0x38bc('0x83')],null,util['format'](_0x38bc('0x84'),_0x1bb698[_0x38bc('0x78')],_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x82')],_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x83')],_0x1bb698[_0x38bc('0x81')][_0x14ba3c][_0x38bc('0x85')]));}}}if(_0x1bb698[_0x38bc('0x86')]){_0x1bb698[_0x38bc('0x86')]=JSON[_0x38bc('0x87')](_0x1bb698[_0x38bc('0x86')]);_0x11fd8e['where'](_0x40a484(_0x1bb698[_0x38bc('0x86')][_0x38bc('0x6d')]));}_0xc56f7b=_0x11fd8e[_0x38bc('0x88')]();_0x11fd8e[_0x38bc('0x23')](_0x482bf4);_0x11fd8e[_0x38bc('0x21')](0x0);logger['debug'](_0x38bc('0x89'),_0x11fd8e[_0x38bc('0x8a')]());return dbH[_0x38bc('0x8b')][_0x38bc('0x37')](_0x11fd8e[_0x38bc('0x8a')](),{'type':dbH[_0x38bc('0x8b')][_0x38bc('0x8c')]['SELECT']});}})[_0x38bc('0x29')](respondWithResult(_0x3a647a,null))['catch'](handleError(_0x3a647a,null));};function runReport(_0x2a6dc8,_0x5b80e3,_0x37d61f){var _0x45a2e2=_0x5b80e3[_0x38bc('0x2f')];var _0x113fe2=0xa;var _0x23f101=[_0x38bc('0x8d'),'left_join','right_join',_0x38bc('0x5b')];var _0x1b6328={'SUM':_0x38bc('0x5c'),'COUNT':_0x38bc('0x5d'),'COUNT DISTINCT':_0x38bc('0x5e'),'MAX':_0x38bc('0x5f'),'MIN':_0x38bc('0x60'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x38bc('0x62'),'GROUP_CONCAT ASC':_0x38bc('0x63'),'GROUP_CONCAT DESC':_0x38bc('0x8e')};var _0x188cd5={'SEC_TO_TIME':_0x38bc('0x64'),'DATE':_0x38bc('0x65'),'HOUR':_0x38bc('0x66'),'ROUND':_0x38bc('0x8f'),'UNIX_TIMESTAMP':_0x38bc('0x67')};var _0x39f701=function(_0x3af6d2){return!_[_0x38bc('0x68')]([_0x38bc('0x69'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x38bc('0x90')],_0x3af6d2);};var _0x5a7df6=function(_0x417d17){if(!_0x417d17||!_0x417d17[_0x38bc('0x6b')][_0x38bc('0x3d')]){return'';}for(var _0x4799ff='(',_0x339428=0x0;_0x339428<_0x417d17['rules'][_0x38bc('0x3d')];_0x339428+=0x1){_0x339428>0x0&&(_0x4799ff+='\x20'+_0x417d17[_0x38bc('0x6c')]+'\x20');_0x4799ff+=_0x417d17[_0x38bc('0x6b')][_0x339428][_0x38bc('0x6d')]?_0x5a7df6(_0x417d17['rules'][_0x339428][_0x38bc('0x6d')]):_0x417d17[_0x38bc('0x6b')][_0x339428][_0x38bc('0x6e')]+'\x20'+_0x417d17[_0x38bc('0x6b')][_0x339428][_0x38bc('0x6f')]+(_0x39f701(_0x417d17[_0x38bc('0x6b')][_0x339428][_0x38bc('0x6f')])?'\x20'+_0x417d17[_0x38bc('0x6b')][_0x339428][_0x38bc('0x70')]:'');}return _0x4799ff+')';};var _0x435303={'where':{'id':_0x2a6dc8['id']}},_0x238822,_0x43e8c4,_0x1ab2d4,_0x23d456,_0x267c2f;_0x435303=_['merge']({},_0x435303,_0x37d61f);return db[_0x38bc('0x46')]['find'](_0x435303)[_0x38bc('0x29')](function(_0x158163){if(_0x158163){_0x238822=_0x158163;return _0x158163[_0x38bc('0x71')]();}return null;})[_0x38bc('0x29')](function(_0x176eaf){if(_0x176eaf){if(!_0x176eaf['length']){throw new db[(_0x38bc('0x72'))][(_0x38bc('0x73'))](_0x38bc('0x74'),0x193);}_0x43e8c4=_0x176eaf;return db['AnalyticMetric'][_0x38bc('0x49')]({'raw':!![]});}return null;})[_0x38bc('0x29')](function(_0x2ef8c7){if(_0x2ef8c7){_0x1ab2d4=_['keyBy'](_0x2ef8c7,'id');var _0x25cf49;var _0x4dd5a9=squel['select']();_0x4dd5a9[_0x38bc('0x77')](_0x238822[_0x38bc('0x78')]);for(var _0x467f2b=0x0;_0x467f2b<_0x43e8c4[_0x38bc('0x3d')];_0x467f2b+=0x1){_0x25cf49=_0x43e8c4[_0x467f2b][_0x38bc('0x79')]?_0x1ab2d4[_0x43e8c4[_0x467f2b][_0x38bc('0x79')]][_0x38bc('0x7a')]:_0x43e8c4[_0x467f2b][_0x38bc('0x6e')];_0x25cf49=_0x43e8c4[_0x467f2b][_0x38bc('0x7b')]?_[_0x38bc('0x7c')](_0x1b6328[_0x43e8c4[_0x467f2b][_0x38bc('0x7b')]],'%s',_0x25cf49):_0x25cf49;_0x25cf49=_0x43e8c4[_0x467f2b][_0x38bc('0x7d')]?_[_0x38bc('0x7c')](_0x188cd5[_0x43e8c4[_0x467f2b]['format']],'%s',_0x25cf49):_0x25cf49;if(_0x43e8c4[_0x467f2b]['groupBy']){_0x4dd5a9['group'](_0x25cf49);}_0x43e8c4[_0x467f2b][_0x38bc('0x7e')]&&_0x4dd5a9[_0x38bc('0x7f')](_0x25cf49,_0x43e8c4[_0x467f2b]['orderBy']===_0x38bc('0x80')?![]:!![]);_0x4dd5a9[_0x38bc('0x6e')](_0x25cf49,_0x43e8c4[_0x467f2b][_0x38bc('0x91')]||_0x25cf49);}if(_0x238822[_0x38bc('0x81')]){_0x238822['joins']=JSON[_0x38bc('0x87')](_0x238822[_0x38bc('0x81')]);for(var _0x4dc508=0x0;_0x4dc508<_0x238822[_0x38bc('0x81')][_0x38bc('0x3d')];_0x4dc508+=0x1){if(_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x34')]&&_[_0x38bc('0x68')](_0x23f101,_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x34')])&&_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x82')]&&_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x83')]&&_0x238822[_0x38bc('0x81')][_0x4dc508]['foreignKey']){_0x4dd5a9[_0x238822[_0x38bc('0x81')][_0x4dc508]['type']](_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x83')],null,util[_0x38bc('0x7d')](_0x38bc('0x84'),_0x238822[_0x38bc('0x78')],_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x82')],_0x238822[_0x38bc('0x81')][_0x4dc508][_0x38bc('0x83')],_0x238822[_0x38bc('0x81')][_0x4dc508]['foreignKey']));}}}if(_0x238822[_0x38bc('0x86')]){_0x238822['conditions']=JSON[_0x38bc('0x87')](_0x238822[_0x38bc('0x86')]);_0x4dd5a9['where'](_0x5a7df6(_0x238822[_0x38bc('0x86')][_0x38bc('0x6d')]));}_0x267c2f=_0x4dd5a9[_0x38bc('0x88')]();_0x4dd5a9[_0x38bc('0x23')](_0x113fe2);_0x4dd5a9[_0x38bc('0x21')](0x0);return;}})[_0x38bc('0x29')](function(){if(_0x5b80e3[_0x38bc('0x92')]===_0x38bc('0x93')){return null;}var _0x1e0e4b=_[_0x38bc('0x44')](_0x5b80e3,{'name':_0x5b80e3[_0x38bc('0x94')]||_0x5b80e3[_0x38bc('0x2f')]||_0x238822[_0x38bc('0x2f')],'basename':_0x45a2e2,'savename':util[_0x38bc('0x7d')](_0x38bc('0x95'),_0x5b80e3[_0x38bc('0x2f')]||_0x238822[_0x38bc('0x2f')],require('randomstring')[_0x38bc('0x96')](0x4),_0x5b80e3[_0x38bc('0x92')]||_0x38bc('0x97')),'reportId':_0x238822['id'],'reportType':_0x38bc('0x98')});return db[_0x38bc('0x99')][_0x38bc('0x4f')](_0x1e0e4b,{'raw':!![]});})['then'](function(_0x1ae5b8){if(_0x238822['table']==='cdr'){_0x267c2f['where'](_0x238822['table']+_0x38bc('0x9a'),_0x5b80e3['startDate'],_0x5b80e3[_0x38bc('0x9b')]);}else{_0x267c2f['where'](_0x238822[_0x38bc('0x78')]+_0x38bc('0x9c'),_0x5b80e3[_0x38bc('0x9d')],_0x5b80e3[_0x38bc('0x9b')]);}if(_0x1ae5b8){logger[_0x38bc('0x9e')](_0x38bc('0x9f'),_0x267c2f[_0x38bc('0x8a')]());require('child_process')[_0x38bc('0xa0')](path[_0x38bc('0x8d')](__dirname,_0x38bc('0xa1'),_0x1ae5b8[_0x38bc('0x92')]),[_0x1ae5b8['id'],_0x267c2f[_0x38bc('0x8a')](),path[_0x38bc('0x8d')](__dirname,'../../files/reports',_0x1ae5b8['savename']),_0x45a2e2]);return _0x1ae5b8;}else{var _0x43926e=squel[_0x38bc('0xa2')]();_0x43926e['from']('('+_0x267c2f['toString']()+')',_0x38bc('0xa3'));_0x43926e[_0x38bc('0x6e')](_0x38bc('0xa4'),_0x38bc('0x24'));_0x267c2f[_0x38bc('0x23')](_0x5b80e3[_0x38bc('0x23')]||_0x113fe2);_0x267c2f[_0x38bc('0x21')](_0x5b80e3[_0x38bc('0x21')]||0x0);return dbH[_0x38bc('0x8b')][_0x38bc('0x37')](_0x43926e['toString'](),{'type':dbH[_0x38bc('0x8b')][_0x38bc('0x8c')]['SELECT']})['then'](function(_0x391c90){if(!_0x391c90[_0x38bc('0x3d')]){_0x23d456=0x0;}else{_0x23d456=_0x391c90[0x0]['count']||0x0;}return dbH['sequelize'][_0x38bc('0x37')](_0x267c2f[_0x38bc('0x8a')](),{'type':dbH[_0x38bc('0x8b')][_0x38bc('0x8c')][_0x38bc('0xa5')]});})[_0x38bc('0x29')](function(_0x29fcd5){return{'rows':_0x29fcd5||[],'count':_0x23d456};});}});}exports[_0x38bc('0xa6')]=function(_0x354c2d,_0xcc7fcb){return runReport(_0x354c2d['params'],_0x354c2d['query'],_0x354c2d[_0x38bc('0x4d')])[_0x38bc('0x29')](respondWithResult(_0xcc7fcb,null))['catch'](handleError(_0xcc7fcb,null));};exports['runReport']=runReport;exports['query']=function(_0x5eaf6d,_0x386cab){var _0x9389ce=0xa;var _0x1cb900=[_0x38bc('0x8d'),'left_join',_0x38bc('0x5a'),_0x38bc('0x5b')];var _0x5ad78d={'SUM':_0x38bc('0x5c'),'COUNT':_0x38bc('0x5d'),'COUNT DISTINCT':_0x38bc('0x5e'),'MAX':'MAX(%s)','MIN':_0x38bc('0x60'),'AVG':_0x38bc('0x61'),'GROUP_CONCAT':_0x38bc('0x62'),'GROUP_CONCAT ASC':_0x38bc('0x63'),'GROUP_CONCAT DESC':_0x38bc('0x8e')};var _0x120e44={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x38bc('0x65'),'HOUR':_0x38bc('0x66'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x38bc('0x67')};var _0x11024b=function(_0x32eaf9){return!_[_0x38bc('0x68')](['IS\x20NULL',_0x38bc('0x6a'),'IS\x20EMPTY',_0x38bc('0x90')],_0x32eaf9);};var _0x5bbad2=function(_0x200b50){if(!_0x200b50||!_0x200b50['rules'][_0x38bc('0x3d')]){return'';}for(var _0x2bf26d='(',_0x5ed823=0x0;_0x5ed823<_0x200b50[_0x38bc('0x6b')]['length'];_0x5ed823+=0x1){_0x5ed823>0x0&&(_0x2bf26d+='\x20'+_0x200b50[_0x38bc('0x6c')]+'\x20');_0x2bf26d+=_0x200b50[_0x38bc('0x6b')][_0x5ed823][_0x38bc('0x6d')]?_0x5bbad2(_0x200b50['rules'][_0x5ed823]['group']):_0x200b50[_0x38bc('0x6b')][_0x5ed823][_0x38bc('0x6e')]+'\x20'+_0x200b50[_0x38bc('0x6b')][_0x5ed823][_0x38bc('0x6f')]+(_0x11024b(_0x200b50['rules'][_0x5ed823]['condition'])?'\x20'+_0x200b50[_0x38bc('0x6b')][_0x5ed823][_0x38bc('0x70')]:'');}return _0x2bf26d+')';};var _0x36b6b7={'where':{'id':_0x5eaf6d[_0x38bc('0x4c')]['id']}},_0x8a0bfe,_0x552804,_0x472631,_0x1a4306,_0x2ca4fd;_0x36b6b7=_[_0x38bc('0x44')]({},_0x36b6b7,_0x5eaf6d[_0x38bc('0x4d')]);return db[_0x38bc('0x46')][_0x38bc('0x4e')](_0x36b6b7)[_0x38bc('0x29')](function(_0x2ae79b){if(_0x2ae79b){_0x8a0bfe=_0x2ae79b;return _0x2ae79b['getFields']();}return null;})['then'](function(_0x4f4803){if(_0x4f4803){if(!_0x4f4803[_0x38bc('0x3d')]){throw new db[(_0x38bc('0x72'))][(_0x38bc('0x73'))](_0x38bc('0x74'),0x193);}_0x552804=_0x4f4803;return db[_0x38bc('0x75')]['findAll']({'raw':!![]});}return null;})[_0x38bc('0x29')](function(_0x514305){if(_0x514305){_0x472631=_[_0x38bc('0x76')](_0x514305,'id');var _0x4cc9b0;var _0x5c6032=squel[_0x38bc('0xa2')]();_0x5c6032[_0x38bc('0x77')](_0x8a0bfe[_0x38bc('0x78')]);for(var _0x4560f7=0x0;_0x4560f7<_0x552804[_0x38bc('0x3d')];_0x4560f7+=0x1){_0x4cc9b0=_0x552804[_0x4560f7][_0x38bc('0x79')]?_0x472631[_0x552804[_0x4560f7][_0x38bc('0x79')]][_0x38bc('0x7a')]:_0x552804[_0x4560f7][_0x38bc('0x6e')];_0x4cc9b0=_0x552804[_0x4560f7][_0x38bc('0x7b')]?_[_0x38bc('0x7c')](_0x5ad78d[_0x552804[_0x4560f7][_0x38bc('0x7b')]],'%s',_0x4cc9b0):_0x4cc9b0;_0x4cc9b0=_0x552804[_0x4560f7][_0x38bc('0x7d')]?_['replace'](_0x120e44[_0x552804[_0x4560f7][_0x38bc('0x7d')]],'%s',_0x4cc9b0):_0x4cc9b0;if(_0x552804[_0x4560f7][_0x38bc('0xa7')]){_0x5c6032['group'](_0x4cc9b0);}_0x552804[_0x4560f7]['orderBy']&&_0x5c6032[_0x38bc('0x7f')](_0x4cc9b0,_0x552804[_0x4560f7][_0x38bc('0x7e')]===_0x38bc('0x80')?![]:!![]);_0x5c6032[_0x38bc('0x6e')](_0x4cc9b0,_0x552804[_0x4560f7][_0x38bc('0x91')]||_0x4cc9b0);}if(_0x8a0bfe['joins']){_0x8a0bfe[_0x38bc('0x81')]=JSON[_0x38bc('0x87')](_0x8a0bfe[_0x38bc('0x81')]);for(var _0x3c1053=0x0;_0x3c1053<_0x8a0bfe[_0x38bc('0x81')][_0x38bc('0x3d')];_0x3c1053+=0x1){if(_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x34')]&&_[_0x38bc('0x68')](_0x1cb900,_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x34')])&&_0x8a0bfe['joins'][_0x3c1053][_0x38bc('0x82')]&&_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x83')]&&_0x8a0bfe[_0x38bc('0x81')][_0x3c1053]['foreignKey']){_0x5c6032[_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x34')]](_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x83')],null,util[_0x38bc('0x7d')](_0x38bc('0x84'),_0x8a0bfe['table'],_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x82')],_0x8a0bfe[_0x38bc('0x81')][_0x3c1053][_0x38bc('0x83')],_0x8a0bfe[_0x38bc('0x81')][_0x3c1053]['foreignKey']));}}}if(_0x8a0bfe[_0x38bc('0x86')]){_0x8a0bfe[_0x38bc('0x86')]=JSON[_0x38bc('0x87')](_0x8a0bfe[_0x38bc('0x86')]);_0x5c6032[_0x38bc('0x41')](_0x5bbad2(_0x8a0bfe[_0x38bc('0x86')]['group']));}_0x2ca4fd=_0x5c6032[_0x38bc('0x88')]();_0x5c6032[_0x38bc('0x23')](_0x9389ce);_0x5c6032['offset'](0x0);logger[_0x38bc('0xa8')]('Limited\x20Query:',_0x5c6032[_0x38bc('0x8a')]());return dbH['sequelize'][_0x38bc('0x37')](_0x5c6032['toString'](),{'type':dbH['sequelize'][_0x38bc('0x8c')]['SELECT']});}})['then'](function(){return{'sql':_0x2ca4fd['toString']()};})[_0x38bc('0x29')](respondWithResult(_0x386cab,null))[_0x38bc('0x4a')](handleError(_0x386cab,null));};
\ No newline at end of file
+var _0x9c7d=['findAll','rows','catch','params','keys','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','UserProfileSection','userProfileId','error','update','destroy','preview','join','left_join','right_join','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','operator','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','DESC','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','Limited\x20Query:','toString','sequelize','SELECT','SUM(%s)','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','from','orderBy','output','web','fullPath','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','QueryTypes','run','runReport','cross_join','debug','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','limit','undefined','count','Content-Range','reject','then','get','CustomReports','UserProfileResource','end','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','AnalyticCustomReport','includeAll'];(function(_0x458ca7,_0x55cbb2){var _0x4a0935=function(_0x268442){while(--_0x268442){_0x458ca7['push'](_0x458ca7['shift']());}};_0x4a0935(++_0x55cbb2);}(_0x9c7d,0x1ba));var _0xd9c7=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0x9c7d[_0x57486e];return _0x5f110b;};'use strict';var emlformat=require(_0xd9c7('0x0'));var rimraf=require(_0xd9c7('0x1'));var zipdir=require(_0xd9c7('0x2'));var jsonpatch=require(_0xd9c7('0x3'));var rp=require(_0xd9c7('0x4'));var moment=require(_0xd9c7('0x5'));var BPromise=require(_0xd9c7('0x6'));var Mustache=require(_0xd9c7('0x7'));var util=require('util');var path=require(_0xd9c7('0x8'));var sox=require(_0xd9c7('0x9'));var csv=require(_0xd9c7('0xa'));var ejs=require(_0xd9c7('0xb'));var fs=require('fs');var fs_extra=require(_0xd9c7('0xc'));var _=require('lodash');var squel=require(_0xd9c7('0xd'));var crypto=require('crypto');var jsforce=require(_0xd9c7('0xe'));var deskjs=require(_0xd9c7('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd9c7('0x10'));var Papa=require(_0xd9c7('0x11'));var Redis=require(_0xd9c7('0x12'));var authService=require(_0xd9c7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xd9c7('0x14'));var hardwareService=require(_0xd9c7('0x15'));var logger=require(_0xd9c7('0x16'))(_0xd9c7('0x17'));var utils=require(_0xd9c7('0x18'));var config=require(_0xd9c7('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd9c7('0x1a'))['db'];var dbH=require(_0xd9c7('0x1a'))[_0xd9c7('0x1b')];function respondWithStatusCode(_0x1e4842,_0xb1e072){_0xb1e072=_0xb1e072||0xcc;return function(_0x4e0cb3){if(_0x4e0cb3){return _0x1e4842[_0xd9c7('0x1c')](_0xb1e072);}return _0x1e4842[_0xd9c7('0x1d')](_0xb1e072)['end']();};}function respondWithResult(_0x518b40,_0x204b0e){_0x204b0e=_0x204b0e||0xc8;return function(_0x5605e1){if(_0x5605e1){return _0x518b40['status'](_0x204b0e)[_0xd9c7('0x1e')](_0x5605e1);}};}function respondWithFilteredResult(_0x169e91,_0x2a4650){return function(_0x2d8e5c){if(_0x2d8e5c){var _0x1e07d9=typeof _0x2a4650[_0xd9c7('0x1f')]==='undefined'&&typeof _0x2a4650[_0xd9c7('0x20')]===_0xd9c7('0x21');var _0x490350=_0x2d8e5c[_0xd9c7('0x22')];var _0x28700b=_0x1e07d9?0x0:_0x2a4650[_0xd9c7('0x1f')];var _0x396dc3=_0x1e07d9?_0x2d8e5c['count']:_0x2a4650[_0xd9c7('0x1f')]+_0x2a4650[_0xd9c7('0x20')];var _0x7e6d78;if(_0x396dc3>=_0x490350){_0x396dc3=_0x490350;_0x7e6d78=0xc8;}else{_0x7e6d78=0xce;}_0x169e91['status'](_0x7e6d78);return _0x169e91['set'](_0xd9c7('0x23'),_0x28700b+'-'+_0x396dc3+'/'+_0x490350)[_0xd9c7('0x1e')](_0x2d8e5c);}return null;};}function patchUpdates(_0x5e85e6){return function(_0x38cd8d){try{jsonpatch['apply'](_0x38cd8d,_0x5e85e6,!![]);}catch(_0x4a9bc6){return BPromise[_0xd9c7('0x24')](_0x4a9bc6);}return _0x38cd8d['save']();};}function saveUpdates(_0x7d4146,_0x363a3c){return function(_0x542159){if(_0x542159){return _0x542159['update'](_0x7d4146)[_0xd9c7('0x25')](function(_0x12b7b3){return _0x12b7b3;});}return null;};}function removeEntity(_0x34daa5,_0x1b3992){return function(_0x4d9427){if(_0x4d9427){return _0x4d9427['destroy']()['then'](function(){var _0x291a60=_0x4d9427[_0xd9c7('0x26')]({'plain':!![]});var _0x116ba4=_0xd9c7('0x27');return db[_0xd9c7('0x28')]['destroy']({'where':{'type':_0x116ba4,'resourceId':_0x291a60['id']}})[_0xd9c7('0x25')](function(){return _0x4d9427;});})[_0xd9c7('0x25')](function(){_0x34daa5[_0xd9c7('0x1d')](0xcc)[_0xd9c7('0x29')]();});}};}function handleEntityNotFound(_0x15620c,_0x1a2227){return function(_0x1c7d2b){if(!_0x1c7d2b){_0x15620c[_0xd9c7('0x1c')](0x194);}return _0x1c7d2b;};}function handleError(_0x561d8d,_0x35d66a){_0x35d66a=_0x35d66a||0x1f4;return function(_0x2fe1b9){logger['error'](_0x2fe1b9['stack']);if(_0x2fe1b9[_0xd9c7('0x2a')]){delete _0x2fe1b9[_0xd9c7('0x2a')];}_0x561d8d[_0xd9c7('0x1d')](_0x35d66a)[_0xd9c7('0x2b')](_0x2fe1b9);};}exports[_0xd9c7('0x2c')]=function(_0x5dcbb4,_0x1056c7){var _0x3af43b={},_0x496319={},_0x38b3bb={'count':0x0,'rows':[]};var _0x14aedb=_[_0xd9c7('0x2d')](db['AnalyticCustomReport'][_0xd9c7('0x2e')],function(_0x4d5e83){return{'name':_0x4d5e83[_0xd9c7('0x2f')],'type':_0x4d5e83[_0xd9c7('0x30')][_0xd9c7('0x31')]};});_0x496319['model']=_[_0xd9c7('0x2d')](_0x14aedb,'name');_0x496319[_0xd9c7('0x32')]=_['keys'](_0x5dcbb4[_0xd9c7('0x32')]);_0x496319[_0xd9c7('0x33')]=_[_0xd9c7('0x34')](_0x496319[_0xd9c7('0x35')],_0x496319[_0xd9c7('0x32')]);_0x3af43b[_0xd9c7('0x36')]=_[_0xd9c7('0x34')](_0x496319[_0xd9c7('0x35')],qs[_0xd9c7('0x37')](_0x5dcbb4['query'][_0xd9c7('0x37')]));_0x3af43b[_0xd9c7('0x36')]=_0x3af43b[_0xd9c7('0x36')][_0xd9c7('0x38')]?_0x3af43b[_0xd9c7('0x36')]:_0x496319[_0xd9c7('0x35')];if(!_0x5dcbb4[_0xd9c7('0x32')][_0xd9c7('0x39')](_0xd9c7('0x3a'))){_0x3af43b['limit']=qs[_0xd9c7('0x20')](_0x5dcbb4[_0xd9c7('0x32')][_0xd9c7('0x20')]);_0x3af43b[_0xd9c7('0x1f')]=qs[_0xd9c7('0x1f')](_0x5dcbb4[_0xd9c7('0x32')]['offset']);}_0x3af43b[_0xd9c7('0x3b')]=qs[_0xd9c7('0x3c')](_0x5dcbb4['query']['sort']);_0x3af43b['where']=qs[_0xd9c7('0x33')](_[_0xd9c7('0x3d')](_0x5dcbb4['query'],_0x496319[_0xd9c7('0x33')]),_0x14aedb);if(_0x5dcbb4[_0xd9c7('0x32')]['filter']){_0x3af43b[_0xd9c7('0x3e')]=_[_0xd9c7('0x3f')](_0x3af43b[_0xd9c7('0x3e')],{'$or':_[_0xd9c7('0x2d')](_0x14aedb,function(_0x4ad8cb){if(_0x4ad8cb['type']!=='VIRTUAL'){var _0x3cb0f9={};_0x3cb0f9[_0x4ad8cb[_0xd9c7('0x2a')]]={'$like':'%'+_0x5dcbb4[_0xd9c7('0x32')][_0xd9c7('0x40')]+'%'};return _0x3cb0f9;}})});}_0x3af43b=_[_0xd9c7('0x3f')]({},_0x3af43b,_0x5dcbb4[_0xd9c7('0x41')]);var _0x174e21={'where':_0x3af43b['where']};return db[_0xd9c7('0x42')][_0xd9c7('0x22')](_0x174e21)[_0xd9c7('0x25')](function(_0x1dad62){_0x38b3bb['count']=_0x1dad62;if(_0x5dcbb4[_0xd9c7('0x32')][_0xd9c7('0x43')]){_0x3af43b['include']=[{'all':!![]}];}return db[_0xd9c7('0x42')][_0xd9c7('0x44')](_0x3af43b);})[_0xd9c7('0x25')](function(_0x2c0d2e){_0x38b3bb[_0xd9c7('0x45')]=_0x2c0d2e;return _0x38b3bb;})[_0xd9c7('0x25')](respondWithFilteredResult(_0x1056c7,_0x3af43b))[_0xd9c7('0x46')](handleError(_0x1056c7,null));};exports['show']=function(_0x2be492,_0x25ad14){var _0x8035be={'raw':![],'where':{'id':_0x2be492[_0xd9c7('0x47')]['id']}},_0x398fc9={};_0x398fc9[_0xd9c7('0x35')]=_['keys'](db[_0xd9c7('0x42')][_0xd9c7('0x2e')]);_0x398fc9[_0xd9c7('0x32')]=_[_0xd9c7('0x48')](_0x2be492[_0xd9c7('0x32')]);_0x398fc9[_0xd9c7('0x33')]=_[_0xd9c7('0x34')](_0x398fc9[_0xd9c7('0x35')],_0x398fc9[_0xd9c7('0x32')]);_0x8035be[_0xd9c7('0x36')]=_['intersection'](_0x398fc9[_0xd9c7('0x35')],qs['fields'](_0x2be492[_0xd9c7('0x32')][_0xd9c7('0x37')]));_0x8035be[_0xd9c7('0x36')]=_0x8035be['attributes']['length']?_0x8035be[_0xd9c7('0x36')]:_0x398fc9[_0xd9c7('0x35')];if(_0x2be492['query'][_0xd9c7('0x43')]){_0x8035be[_0xd9c7('0x49')]=[{'all':!![]}];}_0x8035be=_[_0xd9c7('0x3f')]({},_0x8035be,_0x2be492[_0xd9c7('0x41')]);return db[_0xd9c7('0x42')][_0xd9c7('0x4a')](_0x8035be)[_0xd9c7('0x25')](handleEntityNotFound(_0x25ad14,null))[_0xd9c7('0x25')](respondWithResult(_0x25ad14,null))[_0xd9c7('0x46')](handleError(_0x25ad14,null));};exports[_0xd9c7('0x4b')]=function(_0x3c9ecd,_0x6e25dc){return db['AnalyticCustomReport'][_0xd9c7('0x4b')](_0x3c9ecd[_0xd9c7('0x4c')],{})[_0xd9c7('0x25')](function(_0x17cabc){var _0x1e6260=_0x3c9ecd['user'][_0xd9c7('0x26')]({'plain':!![]});if(!_0x1e6260)throw new Error(_0xd9c7('0x4d'));if(_0x1e6260[_0xd9c7('0x4e')]===_0xd9c7('0x4f')){var _0x395d3f=_0x17cabc['get']({'plain':!![]});var _0x5ddb96=_0xd9c7('0x50');return db[_0xd9c7('0x51')][_0xd9c7('0x4a')]({'where':{'name':_0x5ddb96,'userProfileId':_0x1e6260[_0xd9c7('0x52')]},'raw':!![]})['then'](function(_0x5c44b1){if(_0x5c44b1&&_0x5c44b1['autoAssociation']===0x0){return db[_0xd9c7('0x28')][_0xd9c7('0x4b')]({'name':_0x395d3f[_0xd9c7('0x2a')],'resourceId':_0x395d3f['id'],'type':_0xd9c7('0x27'),'sectionId':_0x5c44b1['id']},{})[_0xd9c7('0x25')](function(){return _0x17cabc;});}else{return _0x17cabc;}})[_0xd9c7('0x46')](function(_0x2431f1){logger[_0xd9c7('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2431f1);throw _0x2431f1;});}return _0x17cabc;})[_0xd9c7('0x25')](respondWithResult(_0x6e25dc,0xc9))[_0xd9c7('0x46')](handleError(_0x6e25dc,null));};exports[_0xd9c7('0x54')]=function(_0x324ddb,_0x11628c){if(_0x324ddb['body']['id']){delete _0x324ddb[_0xd9c7('0x4c')]['id'];}return db[_0xd9c7('0x42')]['find']({'where':{'id':_0x324ddb[_0xd9c7('0x47')]['id']}})[_0xd9c7('0x25')](handleEntityNotFound(_0x11628c,null))['then'](saveUpdates(_0x324ddb[_0xd9c7('0x4c')],null))[_0xd9c7('0x25')](respondWithResult(_0x11628c,null))[_0xd9c7('0x46')](handleError(_0x11628c,null));};exports[_0xd9c7('0x55')]=function(_0x48c59e,_0x1e5633){return db[_0xd9c7('0x42')][_0xd9c7('0x4a')]({'where':{'id':_0x48c59e[_0xd9c7('0x47')]['id']}})['then'](handleEntityNotFound(_0x1e5633,null))[_0xd9c7('0x25')](removeEntity(_0x1e5633,null))[_0xd9c7('0x46')](handleError(_0x1e5633,null));};exports[_0xd9c7('0x56')]=function(_0x56a46e,_0x35bd8e){var _0x45d648=0xa;var _0x1bd3c8=[_0xd9c7('0x57'),_0xd9c7('0x58'),_0xd9c7('0x59'),'cross_join'];var _0xacd55c={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd9c7('0x5a'),'MAX':_0xd9c7('0x5b'),'MIN':_0xd9c7('0x5c'),'AVG':_0xd9c7('0x5d'),'GROUP_CONCAT':_0xd9c7('0x5e'),'GROUP_CONCAT ASC':_0xd9c7('0x5f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3e2fa7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0xd9c7('0x60'),'ROUND':_0xd9c7('0x61'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x164dd5=function(_0x4d885c){return!_[_0xd9c7('0x62')]([_0xd9c7('0x63'),_0xd9c7('0x64'),'IS\x20EMPTY',_0xd9c7('0x65')],_0x4d885c);};var _0x51de1a=function(_0x3c8488){if(!_0x3c8488||!_0x3c8488['rules'][_0xd9c7('0x38')]){return'';}for(var _0x2b9c22='(',_0x41fd6f=0x0;_0x41fd6f<_0x3c8488['rules'][_0xd9c7('0x38')];_0x41fd6f+=0x1){_0x41fd6f>0x0&&(_0x2b9c22+='\x20'+_0x3c8488[_0xd9c7('0x66')]+'\x20');_0x2b9c22+=_0x3c8488[_0xd9c7('0x67')][_0x41fd6f][_0xd9c7('0x68')]?_0x51de1a(_0x3c8488[_0xd9c7('0x67')][_0x41fd6f][_0xd9c7('0x68')]):_0x3c8488[_0xd9c7('0x67')][_0x41fd6f][_0xd9c7('0x69')]+'\x20'+_0x3c8488[_0xd9c7('0x67')][_0x41fd6f][_0xd9c7('0x6a')]+(_0x164dd5(_0x3c8488[_0xd9c7('0x67')][_0x41fd6f]['condition'])?'\x20'+_0x3c8488[_0xd9c7('0x67')][_0x41fd6f][_0xd9c7('0x6b')]:'');}return _0x2b9c22+')';};var _0x4a8e84={'where':{'id':_0x56a46e[_0xd9c7('0x47')]['id']}},_0xa13c7e,_0x134eeb,_0x22093a,_0x32a230,_0x37d59b;_0x4a8e84=_[_0xd9c7('0x3f')]({},_0x4a8e84,_0x56a46e[_0xd9c7('0x41')]);return db['AnalyticCustomReport'][_0xd9c7('0x4a')](_0x4a8e84)[_0xd9c7('0x25')](function(_0x560586){if(_0x560586){_0xa13c7e=_0x560586;return _0x560586[_0xd9c7('0x6c')]();}return null;})['then'](function(_0x179eaf){if(_0x179eaf){if(!_0x179eaf[_0xd9c7('0x38')]){throw new db[(_0xd9c7('0x6d'))][(_0xd9c7('0x6e'))](_0xd9c7('0x6f'),0x193);}_0x134eeb=_0x179eaf;return db[_0xd9c7('0x70')][_0xd9c7('0x44')]({'raw':!![]});}return null;})[_0xd9c7('0x25')](function(_0x5ad050){if(_0x5ad050){_0x22093a=_[_0xd9c7('0x71')](_0x5ad050,'id');var _0xb5131d;var _0x3fe930=squel[_0xd9c7('0x72')]();_0x3fe930['from'](_0xa13c7e[_0xd9c7('0x73')]);for(var _0x5db7f4=0x0;_0x5db7f4<_0x134eeb['length'];_0x5db7f4+=0x1){_0xb5131d=_0x134eeb[_0x5db7f4]['MetricId']?_0x22093a[_0x134eeb[_0x5db7f4][_0xd9c7('0x74')]][_0xd9c7('0x75')]:_0x134eeb[_0x5db7f4][_0xd9c7('0x69')];_0xb5131d=_0x134eeb[_0x5db7f4][_0xd9c7('0x76')]?_[_0xd9c7('0x77')](_0xacd55c[_0x134eeb[_0x5db7f4][_0xd9c7('0x76')]],'%s',_0xb5131d):_0xb5131d;_0xb5131d=_0x134eeb[_0x5db7f4]['format']?_[_0xd9c7('0x77')](_0x3e2fa7[_0x134eeb[_0x5db7f4][_0xd9c7('0x78')]],'%s',_0xb5131d):_0xb5131d;if(_0x134eeb[_0x5db7f4][_0xd9c7('0x79')]){_0x3fe930[_0xd9c7('0x68')](_0xb5131d);}_0x134eeb[_0x5db7f4]['orderBy']&&_0x3fe930['order'](_0xb5131d,_0x134eeb[_0x5db7f4]['orderBy']===_0xd9c7('0x7a')?![]:!![]);_0x3fe930[_0xd9c7('0x69')](_0xb5131d,_0x134eeb[_0x5db7f4][_0xd9c7('0x7b')]||_0xb5131d);}if(_0xa13c7e['joins']){_0xa13c7e[_0xd9c7('0x7c')]=JSON[_0xd9c7('0x7d')](_0xa13c7e[_0xd9c7('0x7c')]);for(var _0x4b8dae=0x0;_0x4b8dae<_0xa13c7e['joins']['length'];_0x4b8dae+=0x1){if(_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae]['type']&&_[_0xd9c7('0x62')](_0x1bd3c8,_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae][_0xd9c7('0x30')])&&_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae][_0xd9c7('0x7e')]&&_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae][_0xd9c7('0x7f')]&&_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae]['foreignKey']){_0x3fe930[_0xa13c7e['joins'][_0x4b8dae][_0xd9c7('0x30')]](_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae][_0xd9c7('0x7f')],null,util[_0xd9c7('0x78')](_0xd9c7('0x80'),_0xa13c7e['table'],_0xa13c7e['joins'][_0x4b8dae][_0xd9c7('0x7e')],_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae]['foreignTable'],_0xa13c7e[_0xd9c7('0x7c')][_0x4b8dae][_0xd9c7('0x81')]));}}}if(_0xa13c7e[_0xd9c7('0x82')]){_0xa13c7e['conditions']=JSON[_0xd9c7('0x7d')](_0xa13c7e[_0xd9c7('0x82')]);_0x3fe930[_0xd9c7('0x3e')](_0x51de1a(_0xa13c7e[_0xd9c7('0x82')][_0xd9c7('0x68')]));}_0x37d59b=_0x3fe930[_0xd9c7('0x83')]();_0x3fe930[_0xd9c7('0x20')](_0x45d648);_0x3fe930[_0xd9c7('0x1f')](0x0);logger['debug'](_0xd9c7('0x84'),_0x3fe930[_0xd9c7('0x85')]());return dbH[_0xd9c7('0x86')][_0xd9c7('0x32')](_0x3fe930[_0xd9c7('0x85')](),{'type':dbH['sequelize']['QueryTypes'][_0xd9c7('0x87')]});}})[_0xd9c7('0x25')](respondWithResult(_0x35bd8e,null))[_0xd9c7('0x46')](handleError(_0x35bd8e,null));};function runReport(_0x5095a8,_0x5bae9e,_0x99d829){var _0x31ee60=_0x5bae9e['name'];var _0xd065a3=0xa;var _0x398eaf=[_0xd9c7('0x57'),_0xd9c7('0x58'),'right_join','cross_join'];var _0x131f73={'SUM':_0xd9c7('0x88'),'COUNT':_0xd9c7('0x89'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xd9c7('0x5b'),'MIN':_0xd9c7('0x5c'),'AVG':_0xd9c7('0x5d'),'GROUP_CONCAT':_0xd9c7('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd9c7('0x8a')};var _0x508ff1={'SEC_TO_TIME':_0xd9c7('0x8b'),'DATE':_0xd9c7('0x8c'),'HOUR':_0xd9c7('0x60'),'ROUND':_0xd9c7('0x61'),'UNIX_TIMESTAMP':_0xd9c7('0x8d')};var _0x344357=function(_0x8b54c5){return!_[_0xd9c7('0x62')]([_0xd9c7('0x63'),_0xd9c7('0x64'),_0xd9c7('0x8e'),'IS\x20NOT\x20EMPTY'],_0x8b54c5);};var _0x492e9e=function(_0x1e5808){if(!_0x1e5808||!_0x1e5808[_0xd9c7('0x67')][_0xd9c7('0x38')]){return'';}for(var _0x11a6bf='(',_0x25e4cb=0x0;_0x25e4cb<_0x1e5808[_0xd9c7('0x67')][_0xd9c7('0x38')];_0x25e4cb+=0x1){_0x25e4cb>0x0&&(_0x11a6bf+='\x20'+_0x1e5808[_0xd9c7('0x66')]+'\x20');_0x11a6bf+=_0x1e5808[_0xd9c7('0x67')][_0x25e4cb]['group']?_0x492e9e(_0x1e5808[_0xd9c7('0x67')][_0x25e4cb][_0xd9c7('0x68')]):_0x1e5808[_0xd9c7('0x67')][_0x25e4cb][_0xd9c7('0x69')]+'\x20'+_0x1e5808[_0xd9c7('0x67')][_0x25e4cb][_0xd9c7('0x6a')]+(_0x344357(_0x1e5808['rules'][_0x25e4cb][_0xd9c7('0x6a')])?'\x20'+_0x1e5808[_0xd9c7('0x67')][_0x25e4cb][_0xd9c7('0x6b')]:'');}return _0x11a6bf+')';};var _0xbd7a88={'where':{'id':_0x5095a8['id']}},_0xa90f3b,_0x154ae5,_0x8ad105,_0x2b46aa,_0x5c2b34;_0xbd7a88=_[_0xd9c7('0x3f')]({},_0xbd7a88,_0x99d829);return db[_0xd9c7('0x42')][_0xd9c7('0x4a')](_0xbd7a88)['then'](function(_0x6d3627){if(_0x6d3627){_0xa90f3b=_0x6d3627;return _0x6d3627[_0xd9c7('0x6c')]();}return null;})[_0xd9c7('0x25')](function(_0x5cebb5){if(_0x5cebb5){if(!_0x5cebb5[_0xd9c7('0x38')]){throw new db['Sequelize'][(_0xd9c7('0x6e'))](_0xd9c7('0x6f'),0x193);}_0x154ae5=_0x5cebb5;return db[_0xd9c7('0x70')][_0xd9c7('0x44')]({'raw':!![]});}return null;})[_0xd9c7('0x25')](function(_0x1bcd9a){if(_0x1bcd9a){_0x8ad105=_[_0xd9c7('0x71')](_0x1bcd9a,'id');var _0x339019;var _0x236fa2=squel[_0xd9c7('0x72')]();_0x236fa2[_0xd9c7('0x8f')](_0xa90f3b[_0xd9c7('0x73')]);for(var _0x15b36e=0x0;_0x15b36e<_0x154ae5[_0xd9c7('0x38')];_0x15b36e+=0x1){_0x339019=_0x154ae5[_0x15b36e][_0xd9c7('0x74')]?_0x8ad105[_0x154ae5[_0x15b36e][_0xd9c7('0x74')]][_0xd9c7('0x75')]:_0x154ae5[_0x15b36e][_0xd9c7('0x69')];_0x339019=_0x154ae5[_0x15b36e][_0xd9c7('0x76')]?_[_0xd9c7('0x77')](_0x131f73[_0x154ae5[_0x15b36e][_0xd9c7('0x76')]],'%s',_0x339019):_0x339019;_0x339019=_0x154ae5[_0x15b36e][_0xd9c7('0x78')]?_[_0xd9c7('0x77')](_0x508ff1[_0x154ae5[_0x15b36e][_0xd9c7('0x78')]],'%s',_0x339019):_0x339019;if(_0x154ae5[_0x15b36e][_0xd9c7('0x79')]){_0x236fa2['group'](_0x339019);}_0x154ae5[_0x15b36e][_0xd9c7('0x90')]&&_0x236fa2[_0xd9c7('0x3b')](_0x339019,_0x154ae5[_0x15b36e][_0xd9c7('0x90')]===_0xd9c7('0x7a')?![]:!![]);_0x236fa2['field'](_0x339019,_0x154ae5[_0x15b36e][_0xd9c7('0x7b')]||_0x339019);}if(_0xa90f3b['joins']){_0xa90f3b['joins']=JSON[_0xd9c7('0x7d')](_0xa90f3b[_0xd9c7('0x7c')]);for(var _0x5e8f53=0x0;_0x5e8f53<_0xa90f3b[_0xd9c7('0x7c')][_0xd9c7('0x38')];_0x5e8f53+=0x1){if(_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x30')]&&_[_0xd9c7('0x62')](_0x398eaf,_0xa90f3b['joins'][_0x5e8f53][_0xd9c7('0x30')])&&_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x7e')]&&_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x7f')]&&_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x81')]){_0x236fa2[_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x30')]](_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x7f')],null,util[_0xd9c7('0x78')](_0xd9c7('0x80'),_0xa90f3b[_0xd9c7('0x73')],_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x7e')],_0xa90f3b[_0xd9c7('0x7c')][_0x5e8f53][_0xd9c7('0x7f')],_0xa90f3b['joins'][_0x5e8f53][_0xd9c7('0x81')]));}}}if(_0xa90f3b[_0xd9c7('0x82')]){_0xa90f3b[_0xd9c7('0x82')]=JSON[_0xd9c7('0x7d')](_0xa90f3b[_0xd9c7('0x82')]);_0x236fa2[_0xd9c7('0x3e')](_0x492e9e(_0xa90f3b[_0xd9c7('0x82')][_0xd9c7('0x68')]));}_0x5c2b34=_0x236fa2[_0xd9c7('0x83')]();_0x236fa2[_0xd9c7('0x20')](_0xd065a3);_0x236fa2[_0xd9c7('0x1f')](0x0);return;}})[_0xd9c7('0x25')](function(){if(_0x5bae9e[_0xd9c7('0x91')]===_0xd9c7('0x92')){return null;}var _0x130cd8=_['merge'](_0x5bae9e,{'name':_0x5bae9e[_0xd9c7('0x93')]||_0x5bae9e[_0xd9c7('0x2a')]||_0xa90f3b[_0xd9c7('0x2a')],'basename':_0x31ee60,'savename':util['format']('%s-%s.%s',_0x5bae9e[_0xd9c7('0x2a')]||_0xa90f3b[_0xd9c7('0x2a')],require(_0xd9c7('0x94'))[_0xd9c7('0x95')](0x4),_0x5bae9e[_0xd9c7('0x91')]||_0xd9c7('0x96')),'reportId':_0xa90f3b['id'],'reportType':_0xd9c7('0x97')});return db[_0xd9c7('0x98')][_0xd9c7('0x4b')](_0x130cd8,{'raw':!![]});})['then'](function(_0x3660a5){if(_0xa90f3b[_0xd9c7('0x73')]===_0xd9c7('0x99')){_0x5c2b34['where'](_0xa90f3b[_0xd9c7('0x73')]+_0xd9c7('0x9a'),_0x5bae9e[_0xd9c7('0x9b')],_0x5bae9e[_0xd9c7('0x9c')]);}else{_0x5c2b34[_0xd9c7('0x3e')](_0xa90f3b[_0xd9c7('0x73')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5bae9e[_0xd9c7('0x9b')],_0x5bae9e['endDate']);}if(_0x3660a5){logger[_0xd9c7('0x9d')](_0xd9c7('0x9e'),_0x5c2b34['toString']());require(_0xd9c7('0x9f'))[_0xd9c7('0xa0')](path[_0xd9c7('0x57')](__dirname,_0xd9c7('0xa1'),_0x3660a5[_0xd9c7('0x91')]),[_0x3660a5['id'],_0x5c2b34[_0xd9c7('0x85')](),path[_0xd9c7('0x57')](__dirname,'../../files/reports',_0x3660a5[_0xd9c7('0xa2')]),_0x31ee60]);return _0x3660a5;}else{var _0x59b95b=squel['select']();_0x59b95b['from']('('+_0x5c2b34[_0xd9c7('0x85')]()+')',_0xd9c7('0xa3'));_0x59b95b[_0xd9c7('0x69')](_0xd9c7('0xa4'),_0xd9c7('0x22'));_0x5c2b34['limit'](_0x5bae9e['limit']||_0xd065a3);_0x5c2b34[_0xd9c7('0x1f')](_0x5bae9e[_0xd9c7('0x1f')]||0x0);return dbH[_0xd9c7('0x86')][_0xd9c7('0x32')](_0x59b95b[_0xd9c7('0x85')](),{'type':dbH[_0xd9c7('0x86')]['QueryTypes']['SELECT']})['then'](function(_0x11f57d){if(!_0x11f57d[_0xd9c7('0x38')]){_0x2b46aa=0x0;}else{_0x2b46aa=_0x11f57d[0x0]['count']||0x0;}return dbH[_0xd9c7('0x86')]['query'](_0x5c2b34['toString'](),{'type':dbH[_0xd9c7('0x86')][_0xd9c7('0xa5')]['SELECT']});})[_0xd9c7('0x25')](function(_0x14ff65){return{'rows':_0x14ff65||[],'count':_0x2b46aa};});}});}exports[_0xd9c7('0xa6')]=function(_0x6a0db2,_0x4dfa62){return runReport(_0x6a0db2[_0xd9c7('0x47')],_0x6a0db2['query'],_0x6a0db2[_0xd9c7('0x41')])[_0xd9c7('0x25')](respondWithResult(_0x4dfa62,null))[_0xd9c7('0x46')](handleError(_0x4dfa62,null));};exports[_0xd9c7('0xa7')]=runReport;exports['query']=function(_0x429752,_0xca33c9){var _0x33aa61=0xa;var _0xbe2257=[_0xd9c7('0x57'),_0xd9c7('0x58'),_0xd9c7('0x59'),_0xd9c7('0xa8')];var _0x5c8b1a={'SUM':'SUM(%s)','COUNT':_0xd9c7('0x89'),'COUNT DISTINCT':_0xd9c7('0x5a'),'MAX':_0xd9c7('0x5b'),'MIN':_0xd9c7('0x5c'),'AVG':_0xd9c7('0x5d'),'GROUP_CONCAT':_0xd9c7('0x5e'),'GROUP_CONCAT ASC':_0xd9c7('0x5f'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3e8824={'SEC_TO_TIME':_0xd9c7('0x8b'),'DATE':_0xd9c7('0x8c'),'HOUR':_0xd9c7('0x60'),'ROUND':_0xd9c7('0x61'),'UNIX_TIMESTAMP':_0xd9c7('0x8d')};var _0x55c522=function(_0x574b75){return!_[_0xd9c7('0x62')]([_0xd9c7('0x63'),_0xd9c7('0x64'),_0xd9c7('0x8e'),_0xd9c7('0x65')],_0x574b75);};var _0x563fd9=function(_0x4ec2ec){if(!_0x4ec2ec||!_0x4ec2ec[_0xd9c7('0x67')][_0xd9c7('0x38')]){return'';}for(var _0x14c607='(',_0x410454=0x0;_0x410454<_0x4ec2ec[_0xd9c7('0x67')][_0xd9c7('0x38')];_0x410454+=0x1){_0x410454>0x0&&(_0x14c607+='\x20'+_0x4ec2ec[_0xd9c7('0x66')]+'\x20');_0x14c607+=_0x4ec2ec['rules'][_0x410454][_0xd9c7('0x68')]?_0x563fd9(_0x4ec2ec[_0xd9c7('0x67')][_0x410454][_0xd9c7('0x68')]):_0x4ec2ec[_0xd9c7('0x67')][_0x410454]['field']+'\x20'+_0x4ec2ec[_0xd9c7('0x67')][_0x410454][_0xd9c7('0x6a')]+(_0x55c522(_0x4ec2ec['rules'][_0x410454]['condition'])?'\x20'+_0x4ec2ec[_0xd9c7('0x67')][_0x410454]['value']:'');}return _0x14c607+')';};var _0x3b2a8e={'where':{'id':_0x429752[_0xd9c7('0x47')]['id']}},_0x3d6267,_0x39ef57,_0x5be25f,_0x3a85f8,_0x45e48b;_0x3b2a8e=_[_0xd9c7('0x3f')]({},_0x3b2a8e,_0x429752[_0xd9c7('0x41')]);return db[_0xd9c7('0x42')]['find'](_0x3b2a8e)[_0xd9c7('0x25')](function(_0x4334bc){if(_0x4334bc){_0x3d6267=_0x4334bc;return _0x4334bc['getFields']();}return null;})[_0xd9c7('0x25')](function(_0x27378e){if(_0x27378e){if(!_0x27378e[_0xd9c7('0x38')]){throw new db[(_0xd9c7('0x6d'))]['ValidationErrorItem'](_0xd9c7('0x6f'),0x193);}_0x39ef57=_0x27378e;return db[_0xd9c7('0x70')][_0xd9c7('0x44')]({'raw':!![]});}return null;})[_0xd9c7('0x25')](function(_0x3de58b){if(_0x3de58b){_0x5be25f=_['keyBy'](_0x3de58b,'id');var _0x59d652;var _0x5124db=squel[_0xd9c7('0x72')]();_0x5124db[_0xd9c7('0x8f')](_0x3d6267[_0xd9c7('0x73')]);for(var _0x5f03d5=0x0;_0x5f03d5<_0x39ef57[_0xd9c7('0x38')];_0x5f03d5+=0x1){_0x59d652=_0x39ef57[_0x5f03d5][_0xd9c7('0x74')]?_0x5be25f[_0x39ef57[_0x5f03d5]['MetricId']]['metric']:_0x39ef57[_0x5f03d5][_0xd9c7('0x69')];_0x59d652=_0x39ef57[_0x5f03d5]['function']?_[_0xd9c7('0x77')](_0x5c8b1a[_0x39ef57[_0x5f03d5][_0xd9c7('0x76')]],'%s',_0x59d652):_0x59d652;_0x59d652=_0x39ef57[_0x5f03d5][_0xd9c7('0x78')]?_[_0xd9c7('0x77')](_0x3e8824[_0x39ef57[_0x5f03d5]['format']],'%s',_0x59d652):_0x59d652;if(_0x39ef57[_0x5f03d5][_0xd9c7('0x79')]){_0x5124db[_0xd9c7('0x68')](_0x59d652);}_0x39ef57[_0x5f03d5][_0xd9c7('0x90')]&&_0x5124db['order'](_0x59d652,_0x39ef57[_0x5f03d5][_0xd9c7('0x90')]==='DESC'?![]:!![]);_0x5124db[_0xd9c7('0x69')](_0x59d652,_0x39ef57[_0x5f03d5][_0xd9c7('0x7b')]||_0x59d652);}if(_0x3d6267[_0xd9c7('0x7c')]){_0x3d6267[_0xd9c7('0x7c')]=JSON[_0xd9c7('0x7d')](_0x3d6267['joins']);for(var _0x5f05c7=0x0;_0x5f05c7<_0x3d6267['joins'][_0xd9c7('0x38')];_0x5f05c7+=0x1){if(_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x30')]&&_[_0xd9c7('0x62')](_0xbe2257,_0x3d6267['joins'][_0x5f05c7][_0xd9c7('0x30')])&&_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x7e')]&&_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x7f')]&&_0x3d6267['joins'][_0x5f05c7][_0xd9c7('0x81')]){_0x5124db[_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x30')]](_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3d6267[_0xd9c7('0x73')],_0x3d6267['joins'][_0x5f05c7][_0xd9c7('0x7e')],_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x7f')],_0x3d6267[_0xd9c7('0x7c')][_0x5f05c7][_0xd9c7('0x81')]));}}}if(_0x3d6267[_0xd9c7('0x82')]){_0x3d6267['conditions']=JSON['parse'](_0x3d6267[_0xd9c7('0x82')]);_0x5124db[_0xd9c7('0x3e')](_0x563fd9(_0x3d6267[_0xd9c7('0x82')][_0xd9c7('0x68')]));}_0x45e48b=_0x5124db[_0xd9c7('0x83')]();_0x5124db[_0xd9c7('0x20')](_0x33aa61);_0x5124db[_0xd9c7('0x1f')](0x0);logger[_0xd9c7('0xa9')](_0xd9c7('0x84'),_0x5124db[_0xd9c7('0x85')]());return dbH['sequelize']['query'](_0x5124db[_0xd9c7('0x85')](),{'type':dbH['sequelize'][_0xd9c7('0xa5')]['SELECT']});}})[_0xd9c7('0x25')](function(){return{'sql':_0x45e48b[_0xd9c7('0x85')]()};})[_0xd9c7('0x25')](respondWithResult(_0xca33c9,null))[_0xd9c7('0x46')](handleError(_0xca33c9,null));};
\ No newline at end of file
index 1ee3a2b..cc814b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f60=['define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','exports'];(function(_0x453e2b,_0x4f1258){var _0x50f306=function(_0x397f14){while(--_0x397f14){_0x453e2b['push'](_0x453e2b['shift']());}};_0x50f306(++_0x4f1258);}(_0x0f60,0x129));var _0x00f6=function(_0x4bb2b9,_0x459c78){_0x4bb2b9=_0x4bb2b9-0x0;var _0x40e2a2=_0x0f60[_0x4bb2b9];return _0x40e2a2;};'use strict';var _=require(_0x00f6('0x0'));var util=require(_0x00f6('0x1'));var logger=require(_0x00f6('0x2'))(_0x00f6('0x3'));var moment=require(_0x00f6('0x4'));var BPromise=require(_0x00f6('0x5'));var rp=require(_0x00f6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x00f6('0x7'));var config=require(_0x00f6('0x8'));var attributes=require(_0x00f6('0x9'));module[_0x00f6('0xa')]=function(_0x16b811,_0x45bcb5){return _0x16b811[_0x00f6('0xb')](_0x00f6('0xc'),attributes,{'tableName':_0x00f6('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd17=['lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','AnalyticCustomReport'];(function(_0x4350c2,_0x112f3c){var _0x8b6406=function(_0x49e845){while(--_0x49e845){_0x4350c2['push'](_0x4350c2['shift']());}};_0x8b6406(++_0x112f3c);}(_0xfd17,0x8f));var _0x7fd1=function(_0x53f707,_0x51a2f7){_0x53f707=_0x53f707-0x0;var _0x10a9f5=_0xfd17[_0x53f707];return _0x10a9f5;};'use strict';var _=require(_0x7fd1('0x0'));var util=require(_0x7fd1('0x1'));var logger=require('../../config/logger')(_0x7fd1('0x2'));var moment=require('moment');var BPromise=require(_0x7fd1('0x3'));var rp=require(_0x7fd1('0x4'));var fs=require('fs');var path=require(_0x7fd1('0x5'));var rimraf=require(_0x7fd1('0x6'));var config=require(_0x7fd1('0x7'));var attributes=require(_0x7fd1('0x8'));module[_0x7fd1('0x9')]=function(_0x4cbebb,_0x45d26c){return _0x4cbebb['define'](_0x7fd1('0xa'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93c7861..675228b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c51=['result','catch','randomstring','ioredis','../../config/utils','../../config/logger','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x957c23,_0x17a3cb){var _0x1ec5be=function(_0xd778f2){while(--_0xd778f2){_0x957c23['push'](_0x957c23['shift']());}};_0x1ec5be(++_0x17a3cb);}(_0x4c51,0xa7));var _0x14c5=function(_0x4c1a31,_0x3d0d7e){_0x4c1a31=_0x4c1a31-0x0;var _0x3e6a30=_0x4c51[_0x4c1a31];return _0x3e6a30;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x14c5('0x0'));var fs=require('fs');var Redis=require(_0x14c5('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x14c5('0x2'));var logger=require(_0x14c5('0x3'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x362554,_0xc35d62,_0x1b6b89){return new BPromise(function(_0x6b1a1d,_0x547740){return client[_0x14c5('0x4')](_0x362554,_0x1b6b89)[_0x14c5('0x5')](function(_0x367605){logger[_0x14c5('0x6')](_0x14c5('0x7'),_0xc35d62,_0x14c5('0x8'));logger['debug'](_0x14c5('0x9'),_0xc35d62,'request\x20sent',JSON['stringify'](_0x367605));if(_0x367605[_0x14c5('0xa')]){if(_0x367605[_0x14c5('0xa')][_0x14c5('0xb')]===0x1f4){logger['error'](_0x14c5('0x7'),_0xc35d62,_0x367605[_0x14c5('0xa')][_0x14c5('0xc')]);return _0x547740(_0x367605[_0x14c5('0xa')][_0x14c5('0xc')]);}logger['error'](_0x14c5('0x7'),_0xc35d62,_0x367605[_0x14c5('0xa')][_0x14c5('0xc')]);return _0x6b1a1d(_0x367605['error'][_0x14c5('0xc')]);}else{logger[_0x14c5('0x6')]('AnalyticCustomReport,\x20%s,\x20%s',_0xc35d62,_0x14c5('0x8'));_0x6b1a1d(_0x367605[_0x14c5('0xd')][_0x14c5('0xc')]);}})[_0x14c5('0xe')](function(_0xc1baba){logger[_0x14c5('0xa')](_0x14c5('0x7'),_0xc35d62,_0xc1baba);_0x547740(_0xc1baba);});});}
\ No newline at end of file
+var _0xbb0f=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','bluebird'];(function(_0x115d1f,_0x28e745){var _0x5a1663=function(_0x29b593){while(--_0x29b593){_0x115d1f['push'](_0x115d1f['shift']());}};_0x5a1663(++_0x28e745);}(_0xbb0f,0xe5));var _0xfbb0=function(_0x271870,_0x50c22d){_0x271870=_0x271870-0x0;var _0x17b9f8=_0xbb0f[_0x271870];return _0x17b9f8;};'use strict';var _=require('lodash');var util=require(_0xfbb0('0x0'));var moment=require('moment');var BPromise=require(_0xfbb0('0x1'));var rs=require(_0xfbb0('0x2'));var fs=require('fs');var Redis=require(_0xfbb0('0x3'));var db=require(_0xfbb0('0x4'))['db'];var utils=require(_0xfbb0('0x5'));var logger=require(_0xfbb0('0x6'))('rpc');var config=require(_0xfbb0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfbb0('0x8')][_0xfbb0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x506d2b,_0x156dd7,_0x336a6a){return new BPromise(function(_0xa41f43,_0x5071c7){return client['request'](_0x506d2b,_0x336a6a)['then'](function(_0x1a717b){logger['info'](_0xfbb0('0xa'),_0x156dd7,_0xfbb0('0xb'));logger[_0xfbb0('0xc')](_0xfbb0('0xd'),_0x156dd7,_0xfbb0('0xb'),JSON[_0xfbb0('0xe')](_0x1a717b));if(_0x1a717b[_0xfbb0('0xf')]){if(_0x1a717b[_0xfbb0('0xf')][_0xfbb0('0x10')]===0x1f4){logger[_0xfbb0('0xf')](_0xfbb0('0xa'),_0x156dd7,_0x1a717b[_0xfbb0('0xf')][_0xfbb0('0x11')]);return _0x5071c7(_0x1a717b['error'][_0xfbb0('0x11')]);}logger[_0xfbb0('0xf')]('AnalyticCustomReport,\x20%s,\x20%s',_0x156dd7,_0x1a717b[_0xfbb0('0xf')][_0xfbb0('0x11')]);return _0xa41f43(_0x1a717b[_0xfbb0('0xf')][_0xfbb0('0x11')]);}else{logger[_0xfbb0('0x12')](_0xfbb0('0xa'),_0x156dd7,_0xfbb0('0xb'));_0xa41f43(_0x1a717b[_0xfbb0('0x13')][_0xfbb0('0x11')]);}})[_0xfbb0('0x14')](function(_0x4f9946){logger[_0xfbb0('0xf')](_0xfbb0('0xa'),_0x156dd7,_0x4f9946);_0x5071c7(_0x4f9946);});});}
\ No newline at end of file
index 6dbed56..5da93e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c1c=['index','get','show','preview','/:id/run','run','/:id/query','query','post','put','update','delete','/:id','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated'];(function(_0x10fd50,_0xa9912e){var _0x55073f=function(_0x353663){while(--_0x353663){_0x10fd50['push'](_0x10fd50['shift']());}};_0x55073f(++_0xa9912e);}(_0x2c1c,0x8c));var _0xc2c1=function(_0x3b59ed,_0x281a70){_0x3b59ed=_0x3b59ed-0x0;var _0x5cf829=_0x2c1c[_0x3b59ed];return _0x5cf829;};'use strict';var multer=require(_0xc2c1('0x0'));var util=require(_0xc2c1('0x1'));var path=require(_0xc2c1('0x2'));var timeout=require('connect-timeout');var express=require(_0xc2c1('0x3'));var router=express[_0xc2c1('0x4')]();var fs_extra=require(_0xc2c1('0x5'));var auth=require(_0xc2c1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc2c1('0x7'));var controller=require(_0xc2c1('0x8'));router['get']('/',auth[_0xc2c1('0x9')](),controller[_0xc2c1('0xa')]);router[_0xc2c1('0xb')]('/:id',auth[_0xc2c1('0x9')](),controller[_0xc2c1('0xc')]);router[_0xc2c1('0xb')]('/:id/preview',auth[_0xc2c1('0x9')](),controller[_0xc2c1('0xd')]);router[_0xc2c1('0xb')](_0xc2c1('0xe'),auth['isAuthenticated'](),controller[_0xc2c1('0xf')]);router[_0xc2c1('0xb')](_0xc2c1('0x10'),auth['isAuthenticated'](),controller[_0xc2c1('0x11')]);router[_0xc2c1('0x12')]('/',auth[_0xc2c1('0x9')](),controller['create']);router[_0xc2c1('0x13')]('/:id',auth[_0xc2c1('0x9')](),controller[_0xc2c1('0x14')]);router[_0xc2c1('0x15')](_0xc2c1('0x16'),auth[_0xc2c1('0x9')](),controller[_0xc2c1('0x17')]);module[_0xc2c1('0x18')]=router;
\ No newline at end of file
+var _0x475f=['query','post','create','put','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','index','show','isAuthenticated','/:id/run','/:id/query'];(function(_0x636d1c,_0x29a72d){var _0x57d743=function(_0x4def0e){while(--_0x4def0e){_0x636d1c['push'](_0x636d1c['shift']());}};_0x57d743(++_0x29a72d);}(_0x475f,0xbf));var _0xf475=function(_0x330525,_0x3cf1fb){_0x330525=_0x330525-0x0;var _0x4e6ce3=_0x475f[_0x330525];return _0x4e6ce3;};'use strict';var multer=require(_0xf475('0x0'));var util=require(_0xf475('0x1'));var path=require(_0xf475('0x2'));var timeout=require(_0xf475('0x3'));var express=require('express');var router=express[_0xf475('0x4')]();var fs_extra=require(_0xf475('0x5'));var auth=require(_0xf475('0x6'));var interaction=require(_0xf475('0x7'));var config=require(_0xf475('0x8'));var controller=require(_0xf475('0x9'));router[_0xf475('0xa')]('/',auth['isAuthenticated'](),controller[_0xf475('0xb')]);router[_0xf475('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xf475('0xc')]);router[_0xf475('0xa')]('/:id/preview',auth[_0xf475('0xd')](),controller['preview']);router['get'](_0xf475('0xe'),auth[_0xf475('0xd')](),controller['run']);router[_0xf475('0xa')](_0xf475('0xf'),auth['isAuthenticated'](),controller[_0xf475('0x10')]);router[_0xf475('0x11')]('/',auth[_0xf475('0xd')](),controller[_0xf475('0x12')]);router[_0xf475('0x13')](_0xf475('0x14'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xf475('0xd')](),controller[_0xf475('0x15')]);module[_0xf475('0x16')]=router;
\ No newline at end of file
index 491a4cc..88f82be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['STRING','TEXT','exports'];(function(_0x441902,_0x1094b9){var _0x228126=function(_0x51df31){while(--_0x51df31){_0x441902['push'](_0x441902['shift']());}};_0x228126(++_0x1094b9);}(_0x207c,0x1e8));var _0xc207=function(_0x4568a0,_0x3670bb){_0x4568a0=_0x4568a0-0x0;var _0x1bb2de=_0x207c[_0x4568a0];return _0x1bb2de;};'use strict';var Sequelize=require('sequelize');module[_0xc207('0x0')]={'name':{'type':Sequelize[_0xc207('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc207('0x1')]},'parent':{'type':Sequelize[_0xc207('0x1')]},'table':{'type':Sequelize[_0xc207('0x1')]},'conditions':{'type':Sequelize[_0xc207('0x2')]},'joins':{'type':Sequelize[_0xc207('0x2')]}};
\ No newline at end of file
+var _0xee14=['STRING','TEXT'];(function(_0x5c1514,_0x26126a){var _0x396a97=function(_0x1fb619){while(--_0x1fb619){_0x5c1514['push'](_0x5c1514['shift']());}};_0x396a97(++_0x26126a);}(_0xee14,0x13a));var _0x4ee1=function(_0x5e5fbf,_0x4d8450){_0x5e5fbf=_0x5e5fbf-0x0;var _0x598f4f=_0xee14[_0x5e5fbf];return _0x598f4f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4ee1('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x4ee1('0x0')]},'parent':{'type':Sequelize[_0x4ee1('0x0')]},'table':{'type':Sequelize[_0x4ee1('0x0')]},'conditions':{'type':Sequelize[_0x4ee1('0x1')]},'joins':{'type':Sequelize[_0x4ee1('0x1')]}};
\ No newline at end of file
index c50da04..1174869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['keyBy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','dbH','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','DefaultReports','UserProfileResource','stack','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','name','query','keys','filters','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','intersection','length','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','left_join','right_join','cross_join','SUM(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','field','condition','value','Sequelize','AnalyticMetric','select','from','table','MetricId','replace','format','group','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','SELECT','join','COUNT(%s)','COUNT(DISTINCT\x20%s)','IS\x20NOT\x20EMPTY','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','metric','function','groupBy','orderBy','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','getFields'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x3b2867,_0x11ff7e){_0x3b2867=_0x3b2867-0x0;var _0xfdb557=_0xc6ac[_0x3b2867];return _0xfdb557;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xcc6a('0x1b')];function respondWithStatusCode(_0x211444,_0x4300c0){_0x4300c0=_0x4300c0||0xcc;return function(_0x559a0a){if(_0x559a0a){return _0x211444['sendStatus'](_0x4300c0);}return _0x211444[_0xcc6a('0x1c')](_0x4300c0)[_0xcc6a('0x1d')]();};}function respondWithResult(_0x43710d,_0x348af7){_0x348af7=_0x348af7||0xc8;return function(_0x96f9de){if(_0x96f9de){return _0x43710d[_0xcc6a('0x1c')](_0x348af7)[_0xcc6a('0x1e')](_0x96f9de);}};}function respondWithFilteredResult(_0x403b18,_0x56ffb0){return function(_0x4e628f){if(_0x4e628f){var _0x4d021a=typeof _0x56ffb0[_0xcc6a('0x1f')]===_0xcc6a('0x20')&&typeof _0x56ffb0[_0xcc6a('0x21')]===_0xcc6a('0x20');var _0x33079c=_0x4e628f[_0xcc6a('0x22')];var _0x2d9585=_0x4d021a?0x0:_0x56ffb0[_0xcc6a('0x1f')];var _0x374e51=_0x4d021a?_0x4e628f[_0xcc6a('0x22')]:_0x56ffb0[_0xcc6a('0x1f')]+_0x56ffb0['limit'];var _0xfec60f;if(_0x374e51>=_0x33079c){_0x374e51=_0x33079c;_0xfec60f=0xc8;}else{_0xfec60f=0xce;}_0x403b18[_0xcc6a('0x1c')](_0xfec60f);return _0x403b18[_0xcc6a('0x23')](_0xcc6a('0x24'),_0x2d9585+'-'+_0x374e51+'/'+_0x33079c)[_0xcc6a('0x1e')](_0x4e628f);}return null;};}function patchUpdates(_0x30b8ed){return function(_0x36c80f){try{jsonpatch[_0xcc6a('0x25')](_0x36c80f,_0x30b8ed,!![]);}catch(_0x2254a8){return BPromise[_0xcc6a('0x26')](_0x2254a8);}return _0x36c80f[_0xcc6a('0x27')]();};}function saveUpdates(_0x845088,_0x51be9a){return function(_0x41c4c8){if(_0x41c4c8){return _0x41c4c8[_0xcc6a('0x28')](_0x845088)[_0xcc6a('0x29')](function(_0x581aae){return _0x581aae;});}return null;};}function removeEntity(_0x10016a,_0x294486){return function(_0x3a00e5){if(_0x3a00e5){return _0x3a00e5[_0xcc6a('0x2a')]()[_0xcc6a('0x29')](function(){var _0x5fc697=_0x3a00e5['get']({'plain':!![]});var _0x26def8=_0xcc6a('0x2b');return db[_0xcc6a('0x2c')]['destroy']({'where':{'type':_0x26def8,'resourceId':_0x5fc697['id']}})[_0xcc6a('0x29')](function(){return _0x3a00e5;});})[_0xcc6a('0x29')](function(){_0x10016a['status'](0xcc)[_0xcc6a('0x1d')]();});}};}function handleEntityNotFound(_0x8b1b2b,_0x3233d1){return function(_0x473f88){if(!_0x473f88){_0x8b1b2b['sendStatus'](0x194);}return _0x473f88;};}function handleError(_0x194aab,_0x3cf14c){_0x3cf14c=_0x3cf14c||0x1f4;return function(_0x2c6d88){logger['error'](_0x2c6d88[_0xcc6a('0x2d')]);if(_0x2c6d88['name']){delete _0x2c6d88['name'];}_0x194aab[_0xcc6a('0x1c')](_0x3cf14c)[_0xcc6a('0x2e')](_0x2c6d88);};}exports[_0xcc6a('0x2f')]=function(_0x11b481,_0x2b575d){var _0x131138={},_0x4e2de4={},_0x7b2b54={'count':0x0,'rows':[]};var _0x28e3c3=_[_0xcc6a('0x30')](db[_0xcc6a('0x31')][_0xcc6a('0x32')],function(_0x152ebd){return{'name':_0x152ebd[_0xcc6a('0x33')],'type':_0x152ebd[_0xcc6a('0x34')]['key']};});_0x4e2de4[_0xcc6a('0x35')]=_[_0xcc6a('0x30')](_0x28e3c3,_0xcc6a('0x36'));_0x4e2de4[_0xcc6a('0x37')]=_[_0xcc6a('0x38')](_0x11b481[_0xcc6a('0x37')]);_0x4e2de4[_0xcc6a('0x39')]=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],_0x4e2de4['query']);_0x131138['attributes']=_['intersection'](_0x4e2de4[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3a')]));_0x131138[_0xcc6a('0x3b')]=_0x131138['attributes']['length']?_0x131138[_0xcc6a('0x3b')]:_0x4e2de4[_0xcc6a('0x35')];if(!_0x11b481[_0xcc6a('0x37')]['hasOwnProperty'](_0xcc6a('0x3c'))){_0x131138[_0xcc6a('0x21')]=qs[_0xcc6a('0x21')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x21')]);_0x131138[_0xcc6a('0x1f')]=qs[_0xcc6a('0x1f')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x1f')]);}_0x131138[_0xcc6a('0x3d')]=qs[_0xcc6a('0x3e')](_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x3e')]);_0x131138[_0xcc6a('0x3f')]=qs[_0xcc6a('0x39')](_[_0xcc6a('0x40')](_0x11b481[_0xcc6a('0x37')],_0x4e2de4[_0xcc6a('0x39')]),_0x28e3c3);if(_0x11b481['query']['filter']){_0x131138[_0xcc6a('0x3f')]=_[_0xcc6a('0x41')](_0x131138[_0xcc6a('0x3f')],{'$or':_[_0xcc6a('0x30')](_0x28e3c3,function(_0x1e628b){if(_0x1e628b[_0xcc6a('0x34')]!==_0xcc6a('0x42')){var _0x1199f1={};_0x1199f1[_0x1e628b['name']]={'$like':'%'+_0x11b481['query'][_0xcc6a('0x43')]+'%'};return _0x1199f1;}})});}_0x131138=_['merge']({},_0x131138,_0x11b481['options']);var _0x5cf1ba={'where':_0x131138[_0xcc6a('0x3f')]};return db[_0xcc6a('0x31')][_0xcc6a('0x22')](_0x5cf1ba)[_0xcc6a('0x29')](function(_0xe8056f){_0x7b2b54['count']=_0xe8056f;if(_0x11b481[_0xcc6a('0x37')][_0xcc6a('0x44')]){_0x131138[_0xcc6a('0x45')]=[{'all':!![]}];}return db[_0xcc6a('0x31')][_0xcc6a('0x46')](_0x131138);})[_0xcc6a('0x29')](function(_0x54f862){_0x7b2b54[_0xcc6a('0x47')]=_0x54f862;return _0x7b2b54;})[_0xcc6a('0x29')](respondWithFilteredResult(_0x2b575d,_0x131138))[_0xcc6a('0x48')](handleError(_0x2b575d,null));};exports[_0xcc6a('0x49')]=function(_0x494904,_0x1fe723){var _0x4a9cea={'raw':!![],'where':{'id':_0x494904[_0xcc6a('0x4a')]['id']}},_0x351529={};_0x351529[_0xcc6a('0x35')]=_['keys'](db[_0xcc6a('0x31')][_0xcc6a('0x32')]);_0x351529[_0xcc6a('0x37')]=_['keys'](_0x494904['query']);_0x351529[_0xcc6a('0x39')]=_[_0xcc6a('0x4b')](_0x351529[_0xcc6a('0x35')],_0x351529[_0xcc6a('0x37')]);_0x4a9cea[_0xcc6a('0x3b')]=_['intersection'](_0x351529[_0xcc6a('0x35')],qs[_0xcc6a('0x3a')](_0x494904['query'][_0xcc6a('0x3a')]));_0x4a9cea[_0xcc6a('0x3b')]=_0x4a9cea[_0xcc6a('0x3b')][_0xcc6a('0x4c')]?_0x4a9cea[_0xcc6a('0x3b')]:_0x351529[_0xcc6a('0x35')];if(_0x494904['query']['includeAll']){_0x4a9cea['include']=[{'all':!![]}];}_0x4a9cea=_[_0xcc6a('0x41')]({},_0x4a9cea,_0x494904[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4a9cea)['then'](handleEntityNotFound(_0x1fe723,null))[_0xcc6a('0x29')](respondWithResult(_0x1fe723,null))['catch'](handleError(_0x1fe723,null));};exports[_0xcc6a('0x4f')]=function(_0x4299ca,_0xcfc540){return db[_0xcc6a('0x31')][_0xcc6a('0x4f')](_0x4299ca[_0xcc6a('0x50')],{})['then'](function(_0x1a3b82){var _0x7288b2=_0x4299ca[_0xcc6a('0x51')][_0xcc6a('0x52')]({'plain':!![]});if(!_0x7288b2)throw new Error(_0xcc6a('0x53'));if(_0x7288b2[_0xcc6a('0x54')]===_0xcc6a('0x51')){var _0x392805=_0x1a3b82[_0xcc6a('0x52')]({'plain':!![]});var _0x30d0ef='Reports';return db[_0xcc6a('0x55')][_0xcc6a('0x4e')]({'where':{'name':_0x30d0ef,'userProfileId':_0x7288b2[_0xcc6a('0x56')]},'raw':!![]})[_0xcc6a('0x29')](function(_0x14f5e5){if(_0x14f5e5&&_0x14f5e5[_0xcc6a('0x57')]===0x0){return db['UserProfileResource']['create']({'name':_0x392805[_0xcc6a('0x36')],'resourceId':_0x392805['id'],'type':'DefaultReports','sectionId':_0x14f5e5['id']},{})[_0xcc6a('0x29')](function(){return _0x1a3b82;});}else{return _0x1a3b82;}})[_0xcc6a('0x48')](function(_0x2b5782){logger[_0xcc6a('0x58')](_0xcc6a('0x59'),_0x2b5782);throw _0x2b5782;});}return _0x1a3b82;})[_0xcc6a('0x29')](respondWithResult(_0xcfc540,0xc9))[_0xcc6a('0x48')](handleError(_0xcfc540,null));};exports[_0xcc6a('0x28')]=function(_0x68b823,_0x27b074){if(_0x68b823[_0xcc6a('0x50')]['id']){delete _0x68b823['body']['id'];}return db[_0xcc6a('0x31')]['find']({'where':{'id':_0x68b823[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x27b074,null))[_0xcc6a('0x29')](saveUpdates(_0x68b823['body'],null))[_0xcc6a('0x29')](respondWithResult(_0x27b074,null))['catch'](handleError(_0x27b074,null));};exports[_0xcc6a('0x2a')]=function(_0x5db3b5,_0x3c0b1c){return db[_0xcc6a('0x31')][_0xcc6a('0x4e')]({'where':{'id':_0x5db3b5[_0xcc6a('0x4a')]['id']}})[_0xcc6a('0x29')](handleEntityNotFound(_0x3c0b1c,null))[_0xcc6a('0x29')](removeEntity(_0x3c0b1c,null))[_0xcc6a('0x48')](handleError(_0x3c0b1c,null));};exports[_0xcc6a('0x5a')]=function(_0x506311,_0x14d3ff){var _0x56d512=0xa;var _0x3a6b7e=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x586789={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x389e5f={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2cc561=function(_0x483aa4){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x483aa4);};var _0x46d93b=function(_0x4ed702){if(!_0x4ed702||!_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x20a16b='(',_0x19a578=0x0;_0x19a578<_0x4ed702[_0xcc6a('0x6e')][_0xcc6a('0x4c')];_0x19a578+=0x1){_0x19a578>0x0&&(_0x20a16b+='\x20'+_0x4ed702[_0xcc6a('0x6f')]+'\x20');_0x20a16b+=_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['group']?_0x46d93b(_0x4ed702['rules'][_0x19a578]['group']):_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x70')]+'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578]['condition']+(_0x2cc561(_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x71')])?'\x20'+_0x4ed702[_0xcc6a('0x6e')][_0x19a578][_0xcc6a('0x72')]:'');}return _0x20a16b+')';};var _0x5e1c69={'where':{'id':_0x506311['params']['id']}},_0x481d25,_0xaec5e8,_0x41527b,_0x4403d3,_0x386a74;_0x5e1c69=_[_0xcc6a('0x41')]({},_0x5e1c69,_0x506311[_0xcc6a('0x4d')]);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x5e1c69)[_0xcc6a('0x29')](function(_0x55d129){if(_0x55d129){_0x481d25=_0x55d129;return _0x55d129['getFields']();}return null;})[_0xcc6a('0x29')](function(_0xd1a27b){if(_0xd1a27b){if(!_0xd1a27b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xaec5e8=_0xd1a27b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x421d0b){if(_0x421d0b){_0x41527b=_['keyBy'](_0x421d0b,'id');var _0x4a8863;var _0x58e6b4=squel[_0xcc6a('0x75')]();_0x58e6b4[_0xcc6a('0x76')](_0x481d25[_0xcc6a('0x77')]);for(var _0x729b2=0x0;_0x729b2<_0xaec5e8['length'];_0x729b2+=0x1){_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x78')]?_0x41527b[_0xaec5e8[_0x729b2][_0xcc6a('0x78')]]['metric']:_0xaec5e8[_0x729b2][_0xcc6a('0x70')];_0x4a8863=_0xaec5e8[_0x729b2]['function']?_[_0xcc6a('0x79')](_0x586789[_0xaec5e8[_0x729b2]['function']],'%s',_0x4a8863):_0x4a8863;_0x4a8863=_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x389e5f[_0xaec5e8[_0x729b2][_0xcc6a('0x7a')]],'%s',_0x4a8863):_0x4a8863;if(_0xaec5e8[_0x729b2]['groupBy']){_0x58e6b4[_0xcc6a('0x7b')](_0x4a8863);}_0xaec5e8[_0x729b2]['orderBy']&&_0x58e6b4[_0xcc6a('0x3d')](_0x4a8863,_0xaec5e8[_0x729b2]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x58e6b4[_0xcc6a('0x70')](_0x4a8863,_0xaec5e8[_0x729b2][_0xcc6a('0x7d')]||_0x4a8863);}if(_0x481d25[_0xcc6a('0x7e')]){_0x481d25[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x481d25['joins']);for(var _0x18f5dc=0x0;_0x18f5dc<_0x481d25[_0xcc6a('0x7e')][_0xcc6a('0x4c')];_0x18f5dc+=0x1){if(_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]&&_['includes'](_0x3a6b7e,_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')])&&_0x481d25['joins'][_0x18f5dc]['parentKey']&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x80')]&&_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]){_0x58e6b4[_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x34')]](_0x481d25['joins'][_0x18f5dc][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x481d25[_0xcc6a('0x77')],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x83')],_0x481d25['joins'][_0x18f5dc]['foreignTable'],_0x481d25[_0xcc6a('0x7e')][_0x18f5dc][_0xcc6a('0x81')]));}}}if(_0x481d25[_0xcc6a('0x84')]){_0x481d25[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x481d25[_0xcc6a('0x84')]);_0x58e6b4[_0xcc6a('0x3f')](_0x46d93b(_0x481d25['conditions'][_0xcc6a('0x7b')]));}_0x386a74=_0x58e6b4[_0xcc6a('0x85')]();_0x58e6b4[_0xcc6a('0x21')](_0x56d512);_0x58e6b4[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x58e6b4['toString']());return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x58e6b4[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')][_0xcc6a('0x8b')]});}})[_0xcc6a('0x29')](respondWithResult(_0x14d3ff,null))[_0xcc6a('0x48')](handleError(_0x14d3ff,null));};function runReport(_0x2a25df,_0x1f1ff7,_0x565bcd){var _0x45c45f=_0x1f1ff7[_0xcc6a('0x36')];var _0x58cd56=0xa;var _0x1848dd=[_0xcc6a('0x8c'),_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x5abd5c={'SUM':_0xcc6a('0x5e'),'COUNT':_0xcc6a('0x8d'),'COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':_0xcc6a('0x5f'),'MIN':_0xcc6a('0x60'),'AVG':_0xcc6a('0x61'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x5be65b={'SEC_TO_TIME':_0xcc6a('0x65'),'DATE':_0xcc6a('0x66'),'HOUR':_0xcc6a('0x67'),'ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x2b5c15=function(_0x3207b2){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),_0xcc6a('0x6c'),_0xcc6a('0x6d'),_0xcc6a('0x8f')],_0x3207b2);};var _0x58fdb3=function(_0xb4b2b4){if(!_0xb4b2b4||!_0xb4b2b4[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x275e15='(',_0x53b419=0x0;_0x53b419<_0xb4b2b4[_0xcc6a('0x6e')]['length'];_0x53b419+=0x1){_0x53b419>0x0&&(_0x275e15+='\x20'+_0xb4b2b4[_0xcc6a('0x6f')]+'\x20');_0x275e15+=_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]?_0x58fdb3(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x7b')]):_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x70')]+'\x20'+_0xb4b2b4['rules'][_0x53b419][_0xcc6a('0x71')]+(_0x2b5c15(_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x71')])?'\x20'+_0xb4b2b4[_0xcc6a('0x6e')][_0x53b419][_0xcc6a('0x72')]:'');}return _0x275e15+')';};var _0x4473ab={'where':{'id':_0x2a25df['id']}},_0x558e2f,_0x14a957,_0x350766,_0x589bff,_0x5661b5;_0x4473ab=_[_0xcc6a('0x41')]({},_0x4473ab,_0x565bcd);return db[_0xcc6a('0x31')][_0xcc6a('0x4e')](_0x4473ab)[_0xcc6a('0x29')](function(_0x2f0b79){if(_0x2f0b79){_0x558e2f=_0x2f0b79;return _0x2f0b79['getFields']();}return null;})[_0xcc6a('0x29')](function(_0x4a268b){if(_0x4a268b){if(!_0x4a268b[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x14a957=_0x4a268b;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x1f4c4e){if(_0x1f4c4e){_0x350766=_['keyBy'](_0x1f4c4e,'id');var _0x312431;var _0x2a850c=squel[_0xcc6a('0x75')]();_0x2a850c['from'](_0x558e2f[_0xcc6a('0x77')]);for(var _0xd5b9f3=0x0;_0xd5b9f3<_0x14a957[_0xcc6a('0x4c')];_0xd5b9f3+=0x1){_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]?_0x350766[_0x14a957[_0xd5b9f3][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x14a957[_0xd5b9f3][_0xcc6a('0x70')];_0x312431=_0x14a957[_0xd5b9f3]['function']?_[_0xcc6a('0x79')](_0x5abd5c[_0x14a957[_0xd5b9f3][_0xcc6a('0x93')]],'%s',_0x312431):_0x312431;_0x312431=_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]?_[_0xcc6a('0x79')](_0x5be65b[_0x14a957[_0xd5b9f3][_0xcc6a('0x7a')]],'%s',_0x312431):_0x312431;if(_0x14a957[_0xd5b9f3][_0xcc6a('0x94')]){_0x2a850c[_0xcc6a('0x7b')](_0x312431);}_0x14a957[_0xd5b9f3][_0xcc6a('0x95')]&&_0x2a850c['order'](_0x312431,_0x14a957[_0xd5b9f3]['orderBy']===_0xcc6a('0x7c')?![]:!![]);_0x2a850c['field'](_0x312431,_0x14a957[_0xd5b9f3][_0xcc6a('0x7d')]||_0x312431);}if(_0x558e2f[_0xcc6a('0x7e')]){_0x558e2f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x7e')]);for(var _0x1f7ee5=0x0;_0x1f7ee5<_0x558e2f[_0xcc6a('0x7e')]['length'];_0x1f7ee5+=0x1){if(_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type']&&_['includes'](_0x1848dd,_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['type'])&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')]&&_0x558e2f['joins'][_0x1f7ee5]['foreignTable']&&_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5]['foreignKey']){_0x2a850c[_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x34')]](_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x558e2f['table'],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x83')],_0x558e2f[_0xcc6a('0x7e')][_0x1f7ee5][_0xcc6a('0x80')],_0x558e2f['joins'][_0x1f7ee5][_0xcc6a('0x81')]));}}}if(_0x558e2f[_0xcc6a('0x84')]){_0x558e2f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x558e2f[_0xcc6a('0x84')]);_0x2a850c[_0xcc6a('0x3f')](_0x58fdb3(_0x558e2f[_0xcc6a('0x84')]['group']));}_0x5661b5=_0x2a850c[_0xcc6a('0x85')]();_0x2a850c[_0xcc6a('0x21')](_0x58cd56);_0x2a850c['offset'](0x0);return;}})[_0xcc6a('0x29')](function(){if(_0x1f1ff7[_0xcc6a('0x96')]===_0xcc6a('0x97')){return null;}var _0x2297ea=_[_0xcc6a('0x41')](_0x1f1ff7,{'name':_0x1f1ff7[_0xcc6a('0x98')]||_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],'basename':_0x45c45f,'savename':util[_0xcc6a('0x7a')](_0xcc6a('0x99'),_0x1f1ff7[_0xcc6a('0x36')]||_0x558e2f[_0xcc6a('0x36')],require(_0xcc6a('0x9a'))[_0xcc6a('0x9b')](0x4),_0x1f1ff7['output']||'csv'),'reportId':_0x558e2f['id'],'reportType':_0xcc6a('0x9c')});return db[_0xcc6a('0x9d')]['create'](_0x2297ea,{'raw':!![]});})[_0xcc6a('0x29')](function(_0x1e74a4){if(_0x558e2f[_0xcc6a('0x77')]==='cdr'){_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0x9e'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7['endDate']);}else{_0x5661b5[_0xcc6a('0x3f')](_0x558e2f['table']+_0xcc6a('0xa0'),_0x1f1ff7[_0xcc6a('0x9f')],_0x1f1ff7[_0xcc6a('0xa1')]);}if(_0x1e74a4){logger[_0xcc6a('0xa2')](_0xcc6a('0xa3'),_0x5661b5[_0xcc6a('0x89')]());require('child_process')['fork'](path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa4'),_0x1e74a4[_0xcc6a('0x96')]),[_0x1e74a4['id'],_0x5661b5['toString'](),path[_0xcc6a('0x8c')](__dirname,_0xcc6a('0xa5'),_0x1e74a4[_0xcc6a('0xa6')]),_0x45c45f]);return _0x1e74a4;}else{var _0x3b7b43=squel['select']();_0x3b7b43[_0xcc6a('0x76')]('('+_0x5661b5[_0xcc6a('0x89')]()+')',_0xcc6a('0xa7'));_0x3b7b43['field'](_0xcc6a('0xa8'),'count');_0x5661b5[_0xcc6a('0x21')](_0x1f1ff7[_0xcc6a('0x21')]||_0x58cd56);_0x5661b5['offset'](_0x1f1ff7[_0xcc6a('0x1f')]||0x0);return dbH[_0xcc6a('0x88')][_0xcc6a('0x37')](_0x3b7b43[_0xcc6a('0x89')](),{'type':dbH[_0xcc6a('0x88')][_0xcc6a('0x8a')][_0xcc6a('0x8b')]})[_0xcc6a('0x29')](function(_0x25ba57){if(!_0x25ba57[_0xcc6a('0x4c')]){_0x589bff=0x0;}else{_0x589bff=_0x25ba57[0x0][_0xcc6a('0x22')]||0x0;}return dbH['sequelize']['query'](_0x5661b5[_0xcc6a('0x89')](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});})['then'](function(_0x32ced0){return{'rows':_0x32ced0||[],'count':_0x589bff};});}});}exports[_0xcc6a('0xa9')]=function(_0xc638ae,_0x3367e8){return runReport(_0xc638ae['params'],_0xc638ae[_0xcc6a('0x37')],_0xc638ae['options'])['then'](respondWithResult(_0x3367e8,null))[_0xcc6a('0x48')](handleError(_0x3367e8,null));};exports[_0xcc6a('0xaa')]=runReport;exports[_0xcc6a('0x37')]=function(_0x38d805,_0x3f5f97){var _0x399eb6=0xa;var _0x2ae391=['join',_0xcc6a('0x5b'),_0xcc6a('0x5c'),_0xcc6a('0x5d')];var _0x50b948={'SUM':_0xcc6a('0x5e'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xcc6a('0x8e'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xcc6a('0x61'),'GROUP_CONCAT':_0xcc6a('0x62'),'GROUP_CONCAT ASC':_0xcc6a('0x63'),'GROUP_CONCAT DESC':_0xcc6a('0x64')};var _0x1d2ae0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xcc6a('0x68'),'UNIX_TIMESTAMP':_0xcc6a('0x69')};var _0x41d17b=function(_0x1827e6){return!_[_0xcc6a('0x6a')]([_0xcc6a('0x6b'),'IS\x20NOT\x20NULL',_0xcc6a('0x6d'),'IS\x20NOT\x20EMPTY'],_0x1827e6);};var _0xa70fa=function(_0x33ec76){if(!_0x33ec76||!_0x33ec76[_0xcc6a('0x6e')][_0xcc6a('0x4c')]){return'';}for(var _0x30162c='(',_0x48746a=0x0;_0x48746a<_0x33ec76['rules'][_0xcc6a('0x4c')];_0x48746a+=0x1){_0x48746a>0x0&&(_0x30162c+='\x20'+_0x33ec76[_0xcc6a('0x6f')]+'\x20');_0x30162c+=_0x33ec76['rules'][_0x48746a][_0xcc6a('0x7b')]?_0xa70fa(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x7b')]):_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x70')]+'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['condition']+(_0x41d17b(_0x33ec76[_0xcc6a('0x6e')][_0x48746a][_0xcc6a('0x71')])?'\x20'+_0x33ec76[_0xcc6a('0x6e')][_0x48746a]['value']:'');}return _0x30162c+')';};var _0x54f0e4={'where':{'id':_0x38d805[_0xcc6a('0x4a')]['id']}},_0x559f4f,_0x545b15,_0x17a4e1,_0x5a7da7,_0x434c8b;_0x54f0e4=_['merge']({},_0x54f0e4,_0x38d805[_0xcc6a('0x4d')]);return db['AnalyticDefaultReport'][_0xcc6a('0x4e')](_0x54f0e4)[_0xcc6a('0x29')](function(_0xe9231f){if(_0xe9231f){_0x559f4f=_0xe9231f;return _0xe9231f[_0xcc6a('0xab')]();}return null;})[_0xcc6a('0x29')](function(_0x197961){if(_0x197961){if(!_0x197961[_0xcc6a('0x4c')]){throw new db[(_0xcc6a('0x73'))][(_0xcc6a('0x90'))](_0xcc6a('0x91'),0x193);}_0x545b15=_0x197961;return db[_0xcc6a('0x74')][_0xcc6a('0x46')]({'raw':!![]});}return null;})[_0xcc6a('0x29')](function(_0x171a2a){if(_0x171a2a){_0x17a4e1=_[_0xcc6a('0xac')](_0x171a2a,'id');var _0x13860b;var _0x3b52f7=squel[_0xcc6a('0x75')]();_0x3b52f7[_0xcc6a('0x76')](_0x559f4f[_0xcc6a('0x77')]);for(var _0x319f4a=0x0;_0x319f4a<_0x545b15[_0xcc6a('0x4c')];_0x319f4a+=0x1){_0x13860b=_0x545b15[_0x319f4a]['MetricId']?_0x17a4e1[_0x545b15[_0x319f4a][_0xcc6a('0x78')]][_0xcc6a('0x92')]:_0x545b15[_0x319f4a][_0xcc6a('0x70')];_0x13860b=_0x545b15[_0x319f4a]['function']?_[_0xcc6a('0x79')](_0x50b948[_0x545b15[_0x319f4a][_0xcc6a('0x93')]],'%s',_0x13860b):_0x13860b;_0x13860b=_0x545b15[_0x319f4a]['format']?_[_0xcc6a('0x79')](_0x1d2ae0[_0x545b15[_0x319f4a][_0xcc6a('0x7a')]],'%s',_0x13860b):_0x13860b;if(_0x545b15[_0x319f4a]['groupBy']){_0x3b52f7[_0xcc6a('0x7b')](_0x13860b);}_0x545b15[_0x319f4a][_0xcc6a('0x95')]&&_0x3b52f7[_0xcc6a('0x3d')](_0x13860b,_0x545b15[_0x319f4a][_0xcc6a('0x95')]===_0xcc6a('0x7c')?![]:!![]);_0x3b52f7[_0xcc6a('0x70')](_0x13860b,_0x545b15[_0x319f4a]['alias']||_0x13860b);}if(_0x559f4f['joins']){_0x559f4f[_0xcc6a('0x7e')]=JSON[_0xcc6a('0x7f')](_0x559f4f['joins']);for(var _0x154885=0x0;_0x154885<_0x559f4f['joins'][_0xcc6a('0x4c')];_0x154885+=0x1){if(_0x559f4f['joins'][_0x154885][_0xcc6a('0x34')]&&_[_0xcc6a('0x6a')](_0x2ae391,_0x559f4f[_0xcc6a('0x7e')][_0x154885]['type'])&&_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')]&&_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignTable']&&_0x559f4f['joins'][_0x154885]['foreignKey']){_0x3b52f7[_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x34')]](_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],null,util[_0xcc6a('0x7a')](_0xcc6a('0x82'),_0x559f4f[_0xcc6a('0x77')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x83')],_0x559f4f[_0xcc6a('0x7e')][_0x154885][_0xcc6a('0x80')],_0x559f4f[_0xcc6a('0x7e')][_0x154885]['foreignKey']));}}}if(_0x559f4f[_0xcc6a('0x84')]){_0x559f4f[_0xcc6a('0x84')]=JSON[_0xcc6a('0x7f')](_0x559f4f['conditions']);_0x3b52f7[_0xcc6a('0x3f')](_0xa70fa(_0x559f4f[_0xcc6a('0x84')][_0xcc6a('0x7b')]));}_0x434c8b=_0x3b52f7['clone']();_0x3b52f7[_0xcc6a('0x21')](_0x399eb6);_0x3b52f7[_0xcc6a('0x1f')](0x0);logger[_0xcc6a('0x86')](_0xcc6a('0x87'),_0x3b52f7['toString']());return dbH[_0xcc6a('0x88')]['query'](_0x3b52f7['toString'](),{'type':dbH['sequelize'][_0xcc6a('0x8a')]['SELECT']});}})['then'](function(){return{'sql':_0x434c8b[_0xcc6a('0x89')]()};})[_0xcc6a('0x29')](respondWithResult(_0x3f5f97,null))[_0xcc6a('0x48')](handleError(_0x3f5f97,null));};
\ No newline at end of file
+var _0x0295=['default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','fork','../../files/reports','COUNT(*)','SELECT','run','runReport','MAX(%s)','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','get','UserProfileResource','destroy','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','autoAssociation','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','field','condition','value','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','group','clone','debug','Limited\x20Query:','sequelize','toString','QueryTypes','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','IS\x20EMPTY','operator','getFields','findAll','select','replace','output','web','%s-%s.%s','randomstring','generate','csv'];(function(_0x1bfe44,_0x4e410e){var _0x1103cb=function(_0x1e850e){while(--_0x1e850e){_0x1bfe44['push'](_0x1bfe44['shift']());}};_0x1103cb(++_0x4e410e);}(_0x0295,0x1f0));var _0x5029=function(_0xa7fcdd,_0x2316e2){_0xa7fcdd=_0xa7fcdd-0x0;var _0x44f3c2=_0x0295[_0xa7fcdd];return _0x44f3c2;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];var dbH=require(_0x5029('0x14'))['dbH'];function respondWithStatusCode(_0x4fa22d,_0x49f836){_0x49f836=_0x49f836||0xcc;return function(_0x4aebb6){if(_0x4aebb6){return _0x4fa22d[_0x5029('0x15')](_0x49f836);}return _0x4fa22d[_0x5029('0x16')](_0x49f836)[_0x5029('0x17')]();};}function respondWithResult(_0x434630,_0x2c0b33){_0x2c0b33=_0x2c0b33||0xc8;return function(_0x11c24b){if(_0x11c24b){return _0x434630[_0x5029('0x16')](_0x2c0b33)[_0x5029('0x18')](_0x11c24b);}};}function respondWithFilteredResult(_0x10bf55,_0x326923){return function(_0x457c73){if(_0x457c73){var _0x353cba=typeof _0x326923[_0x5029('0x19')]===_0x5029('0x1a')&&typeof _0x326923[_0x5029('0x1b')]==='undefined';var _0x1ed567=_0x457c73[_0x5029('0x1c')];var _0x35de81=_0x353cba?0x0:_0x326923[_0x5029('0x19')];var _0x8cea01=_0x353cba?_0x457c73[_0x5029('0x1c')]:_0x326923[_0x5029('0x19')]+_0x326923['limit'];var _0x226a5c;if(_0x8cea01>=_0x1ed567){_0x8cea01=_0x1ed567;_0x226a5c=0xc8;}else{_0x226a5c=0xce;}_0x10bf55['status'](_0x226a5c);return _0x10bf55[_0x5029('0x1d')](_0x5029('0x1e'),_0x35de81+'-'+_0x8cea01+'/'+_0x1ed567)[_0x5029('0x18')](_0x457c73);}return null;};}function patchUpdates(_0x3cf0fb){return function(_0x4b5854){try{jsonpatch['apply'](_0x4b5854,_0x3cf0fb,!![]);}catch(_0x4c9184){return BPromise['reject'](_0x4c9184);}return _0x4b5854[_0x5029('0x1f')]();};}function saveUpdates(_0x853a34,_0x1eb228){return function(_0x2bbbcb){if(_0x2bbbcb){return _0x2bbbcb[_0x5029('0x20')](_0x853a34)[_0x5029('0x21')](function(_0x125c26){return _0x125c26;});}return null;};}function removeEntity(_0x356dac,_0x3e857d){return function(_0x4ceaae){if(_0x4ceaae){return _0x4ceaae['destroy']()['then'](function(){var _0x588d90=_0x4ceaae[_0x5029('0x22')]({'plain':!![]});var _0x51093c='DefaultReports';return db[_0x5029('0x23')][_0x5029('0x24')]({'where':{'type':_0x51093c,'resourceId':_0x588d90['id']}})[_0x5029('0x21')](function(){return _0x4ceaae;});})['then'](function(){_0x356dac[_0x5029('0x16')](0xcc)[_0x5029('0x17')]();});}};}function handleEntityNotFound(_0x5e45c4,_0x2b6d99){return function(_0x31f0a0){if(!_0x31f0a0){_0x5e45c4[_0x5029('0x15')](0x194);}return _0x31f0a0;};}function handleError(_0x4a24b9,_0x32da06){_0x32da06=_0x32da06||0x1f4;return function(_0x251f99){logger[_0x5029('0x25')](_0x251f99['stack']);if(_0x251f99[_0x5029('0x26')]){delete _0x251f99[_0x5029('0x26')];}_0x4a24b9['status'](_0x32da06)[_0x5029('0x27')](_0x251f99);};}exports[_0x5029('0x28')]=function(_0x4434ff,_0x1c3dd9){var _0x196830={},_0x2a1ed6={},_0x44255a={'count':0x0,'rows':[]};var _0x465153=_[_0x5029('0x29')](db[_0x5029('0x2a')][_0x5029('0x2b')],function(_0x4519c8){return{'name':_0x4519c8['fieldName'],'type':_0x4519c8[_0x5029('0x2c')]['key']};});_0x2a1ed6[_0x5029('0x2d')]=_['map'](_0x465153,'name');_0x2a1ed6[_0x5029('0x2e')]=_[_0x5029('0x2f')](_0x4434ff[_0x5029('0x2e')]);_0x2a1ed6['filters']=_[_0x5029('0x30')](_0x2a1ed6[_0x5029('0x2d')],_0x2a1ed6[_0x5029('0x2e')]);_0x196830[_0x5029('0x31')]=_[_0x5029('0x30')](_0x2a1ed6[_0x5029('0x2d')],qs[_0x5029('0x32')](_0x4434ff[_0x5029('0x2e')][_0x5029('0x32')]));_0x196830['attributes']=_0x196830[_0x5029('0x31')][_0x5029('0x33')]?_0x196830[_0x5029('0x31')]:_0x2a1ed6[_0x5029('0x2d')];if(!_0x4434ff['query'][_0x5029('0x34')](_0x5029('0x35'))){_0x196830[_0x5029('0x1b')]=qs['limit'](_0x4434ff['query'][_0x5029('0x1b')]);_0x196830[_0x5029('0x19')]=qs['offset'](_0x4434ff['query'][_0x5029('0x19')]);}_0x196830[_0x5029('0x36')]=qs[_0x5029('0x37')](_0x4434ff[_0x5029('0x2e')][_0x5029('0x37')]);_0x196830[_0x5029('0x38')]=qs[_0x5029('0x39')](_[_0x5029('0x3a')](_0x4434ff[_0x5029('0x2e')],_0x2a1ed6[_0x5029('0x39')]),_0x465153);if(_0x4434ff[_0x5029('0x2e')][_0x5029('0x3b')]){_0x196830[_0x5029('0x38')]=_[_0x5029('0x3c')](_0x196830['where'],{'$or':_['map'](_0x465153,function(_0x73797c){if(_0x73797c[_0x5029('0x2c')]!==_0x5029('0x3d')){var _0x48c9eb={};_0x48c9eb[_0x73797c[_0x5029('0x26')]]={'$like':'%'+_0x4434ff[_0x5029('0x2e')]['filter']+'%'};return _0x48c9eb;}})});}_0x196830=_[_0x5029('0x3c')]({},_0x196830,_0x4434ff['options']);var _0x506f0d={'where':_0x196830['where']};return db[_0x5029('0x2a')][_0x5029('0x1c')](_0x506f0d)[_0x5029('0x21')](function(_0x78768){_0x44255a[_0x5029('0x1c')]=_0x78768;if(_0x4434ff[_0x5029('0x2e')][_0x5029('0x3e')]){_0x196830[_0x5029('0x3f')]=[{'all':!![]}];}return db[_0x5029('0x2a')]['findAll'](_0x196830);})[_0x5029('0x21')](function(_0x236455){_0x44255a[_0x5029('0x40')]=_0x236455;return _0x44255a;})[_0x5029('0x21')](respondWithFilteredResult(_0x1c3dd9,_0x196830))[_0x5029('0x41')](handleError(_0x1c3dd9,null));};exports[_0x5029('0x42')]=function(_0x5658a7,_0x259db8){var _0xa1580a={'raw':!![],'where':{'id':_0x5658a7[_0x5029('0x43')]['id']}},_0x9434ed={};_0x9434ed[_0x5029('0x2d')]=_['keys'](db[_0x5029('0x2a')][_0x5029('0x2b')]);_0x9434ed[_0x5029('0x2e')]=_[_0x5029('0x2f')](_0x5658a7[_0x5029('0x2e')]);_0x9434ed[_0x5029('0x39')]=_[_0x5029('0x30')](_0x9434ed[_0x5029('0x2d')],_0x9434ed[_0x5029('0x2e')]);_0xa1580a['attributes']=_[_0x5029('0x30')](_0x9434ed[_0x5029('0x2d')],qs[_0x5029('0x32')](_0x5658a7[_0x5029('0x2e')]['fields']));_0xa1580a['attributes']=_0xa1580a[_0x5029('0x31')][_0x5029('0x33')]?_0xa1580a[_0x5029('0x31')]:_0x9434ed[_0x5029('0x2d')];if(_0x5658a7[_0x5029('0x2e')][_0x5029('0x3e')]){_0xa1580a[_0x5029('0x3f')]=[{'all':!![]}];}_0xa1580a=_[_0x5029('0x3c')]({},_0xa1580a,_0x5658a7[_0x5029('0x44')]);return db[_0x5029('0x2a')][_0x5029('0x45')](_0xa1580a)[_0x5029('0x21')](handleEntityNotFound(_0x259db8,null))[_0x5029('0x21')](respondWithResult(_0x259db8,null))[_0x5029('0x41')](handleError(_0x259db8,null));};exports[_0x5029('0x46')]=function(_0x175cc0,_0x10fc07){return db[_0x5029('0x2a')][_0x5029('0x46')](_0x175cc0[_0x5029('0x47')],{})[_0x5029('0x21')](function(_0x489457){var _0x1069c4=_0x175cc0['user'][_0x5029('0x22')]({'plain':!![]});if(!_0x1069c4)throw new Error(_0x5029('0x48'));if(_0x1069c4['role']==='user'){var _0x319bff=_0x489457['get']({'plain':!![]});var _0x4aaa43=_0x5029('0x49');return db[_0x5029('0x4a')][_0x5029('0x45')]({'where':{'name':_0x4aaa43,'userProfileId':_0x1069c4['userProfileId']},'raw':!![]})['then'](function(_0x1510bb){if(_0x1510bb&&_0x1510bb[_0x5029('0x4b')]===0x0){return db['UserProfileResource'][_0x5029('0x46')]({'name':_0x319bff['name'],'resourceId':_0x319bff['id'],'type':_0x5029('0x4c'),'sectionId':_0x1510bb['id']},{})['then'](function(){return _0x489457;});}else{return _0x489457;}})[_0x5029('0x41')](function(_0x27e1c0){logger[_0x5029('0x25')](_0x5029('0x4d'),_0x27e1c0);throw _0x27e1c0;});}return _0x489457;})[_0x5029('0x21')](respondWithResult(_0x10fc07,0xc9))[_0x5029('0x41')](handleError(_0x10fc07,null));};exports[_0x5029('0x20')]=function(_0xa25013,_0x586936){if(_0xa25013[_0x5029('0x47')]['id']){delete _0xa25013['body']['id'];}return db[_0x5029('0x2a')][_0x5029('0x45')]({'where':{'id':_0xa25013['params']['id']}})[_0x5029('0x21')](handleEntityNotFound(_0x586936,null))['then'](saveUpdates(_0xa25013['body'],null))['then'](respondWithResult(_0x586936,null))[_0x5029('0x41')](handleError(_0x586936,null));};exports['destroy']=function(_0x49d1db,_0x353ae4){return db[_0x5029('0x2a')]['find']({'where':{'id':_0x49d1db[_0x5029('0x43')]['id']}})['then'](handleEntityNotFound(_0x353ae4,null))['then'](removeEntity(_0x353ae4,null))[_0x5029('0x41')](handleError(_0x353ae4,null));};exports[_0x5029('0x4e')]=function(_0x81e39c,_0x448273){var _0x164179=0xa;var _0x4e8d9f=[_0x5029('0x4f'),_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x4dca54={'SUM':_0x5029('0x53'),'COUNT':_0x5029('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':_0x5029('0x57'),'GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x4208ab={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':_0x5029('0x5c'),'UNIX_TIMESTAMP':_0x5029('0x5d')};var _0x59a718=function(_0x560324){return!_[_0x5029('0x5e')]([_0x5029('0x5f'),_0x5029('0x60'),'IS\x20EMPTY',_0x5029('0x61')],_0x560324);};var _0x2d439a=function(_0x105638){if(!_0x105638||!_0x105638[_0x5029('0x62')][_0x5029('0x33')]){return'';}for(var _0x5264c6='(',_0x2ec5d0=0x0;_0x2ec5d0<_0x105638[_0x5029('0x62')][_0x5029('0x33')];_0x2ec5d0+=0x1){_0x2ec5d0>0x0&&(_0x5264c6+='\x20'+_0x105638['operator']+'\x20');_0x5264c6+=_0x105638[_0x5029('0x62')][_0x2ec5d0]['group']?_0x2d439a(_0x105638[_0x5029('0x62')][_0x2ec5d0]['group']):_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x63')]+'\x20'+_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x64')]+(_0x59a718(_0x105638[_0x5029('0x62')][_0x2ec5d0][_0x5029('0x64')])?'\x20'+_0x105638['rules'][_0x2ec5d0][_0x5029('0x65')]:'');}return _0x5264c6+')';};var _0x19220d={'where':{'id':_0x81e39c['params']['id']}},_0x1ff8df,_0x151562,_0x389700,_0x506f74,_0x13ca47;_0x19220d=_[_0x5029('0x3c')]({},_0x19220d,_0x81e39c['options']);return db[_0x5029('0x2a')]['find'](_0x19220d)[_0x5029('0x21')](function(_0x54daf9){if(_0x54daf9){_0x1ff8df=_0x54daf9;return _0x54daf9['getFields']();}return null;})[_0x5029('0x21')](function(_0x575f09){if(_0x575f09){if(!_0x575f09[_0x5029('0x33')]){throw new db[(_0x5029('0x66'))][(_0x5029('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x151562=_0x575f09;return db[_0x5029('0x68')]['findAll']({'raw':!![]});}return null;})[_0x5029('0x21')](function(_0x255dfb){if(_0x255dfb){_0x389700=_[_0x5029('0x69')](_0x255dfb,'id');var _0x1cca02;var _0x1deed7=squel['select']();_0x1deed7[_0x5029('0x6a')](_0x1ff8df[_0x5029('0x6b')]);for(var _0x5890ac=0x0;_0x5890ac<_0x151562[_0x5029('0x33')];_0x5890ac+=0x1){_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6c')]?_0x389700[_0x151562[_0x5890ac][_0x5029('0x6c')]][_0x5029('0x6d')]:_0x151562[_0x5890ac][_0x5029('0x63')];_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6e')]?_['replace'](_0x4dca54[_0x151562[_0x5890ac]['function']],'%s',_0x1cca02):_0x1cca02;_0x1cca02=_0x151562[_0x5890ac][_0x5029('0x6f')]?_['replace'](_0x4208ab[_0x151562[_0x5890ac][_0x5029('0x6f')]],'%s',_0x1cca02):_0x1cca02;if(_0x151562[_0x5890ac][_0x5029('0x70')]){_0x1deed7['group'](_0x1cca02);}_0x151562[_0x5890ac][_0x5029('0x71')]&&_0x1deed7['order'](_0x1cca02,_0x151562[_0x5890ac]['orderBy']===_0x5029('0x72')?![]:!![]);_0x1deed7[_0x5029('0x63')](_0x1cca02,_0x151562[_0x5890ac][_0x5029('0x73')]||_0x1cca02);}if(_0x1ff8df[_0x5029('0x74')]){_0x1ff8df['joins']=JSON[_0x5029('0x75')](_0x1ff8df[_0x5029('0x74')]);for(var _0x4a2ce8=0x0;_0x4a2ce8<_0x1ff8df[_0x5029('0x74')][_0x5029('0x33')];_0x4a2ce8+=0x1){if(_0x1ff8df['joins'][_0x4a2ce8]['type']&&_['includes'](_0x4e8d9f,_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x2c')])&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x76')]&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x77')]&&_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x78')]){_0x1deed7[_0x1ff8df[_0x5029('0x74')][_0x4a2ce8]['type']](_0x1ff8df['joins'][_0x4a2ce8][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x1ff8df[_0x5029('0x6b')],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x76')],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8]['foreignTable'],_0x1ff8df[_0x5029('0x74')][_0x4a2ce8][_0x5029('0x78')]));}}}if(_0x1ff8df[_0x5029('0x7a')]){_0x1ff8df['conditions']=JSON[_0x5029('0x75')](_0x1ff8df[_0x5029('0x7a')]);_0x1deed7[_0x5029('0x38')](_0x2d439a(_0x1ff8df['conditions'][_0x5029('0x7b')]));}_0x13ca47=_0x1deed7[_0x5029('0x7c')]();_0x1deed7[_0x5029('0x1b')](_0x164179);_0x1deed7['offset'](0x0);logger[_0x5029('0x7d')](_0x5029('0x7e'),_0x1deed7['toString']());return dbH[_0x5029('0x7f')][_0x5029('0x2e')](_0x1deed7[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')][_0x5029('0x81')]['SELECT']});}})[_0x5029('0x21')](respondWithResult(_0x448273,null))[_0x5029('0x41')](handleError(_0x448273,null));};function runReport(_0x426d70,_0xe6ac28,_0x153cdc){var _0x5e7f50=_0xe6ac28[_0x5029('0x26')];var _0x202c51=0xa;var _0x344203=['join',_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x3e47bd={'SUM':_0x5029('0x53'),'COUNT':_0x5029('0x54'),'COUNT DISTINCT':_0x5029('0x82'),'MAX':'MAX(%s)','MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':_0x5029('0x57'),'GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':_0x5029('0x83')};var _0x4c40d1={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5029('0x5d')};var _0x41e2d8=function(_0x51098a){return!_['includes'](['IS\x20NULL',_0x5029('0x60'),_0x5029('0x84'),_0x5029('0x61')],_0x51098a);};var _0x4007c8=function(_0x3dc05a){if(!_0x3dc05a||!_0x3dc05a['rules'][_0x5029('0x33')]){return'';}for(var _0x2e4782='(',_0x2c0540=0x0;_0x2c0540<_0x3dc05a['rules']['length'];_0x2c0540+=0x1){_0x2c0540>0x0&&(_0x2e4782+='\x20'+_0x3dc05a[_0x5029('0x85')]+'\x20');_0x2e4782+=_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x7b')]?_0x4007c8(_0x3dc05a[_0x5029('0x62')][_0x2c0540]['group']):_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x63')]+'\x20'+_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x64')]+(_0x41e2d8(_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x64')])?'\x20'+_0x3dc05a[_0x5029('0x62')][_0x2c0540][_0x5029('0x65')]:'');}return _0x2e4782+')';};var _0x5aecc2={'where':{'id':_0x426d70['id']}},_0x159450,_0x556c7a,_0x48bbe2,_0x3e3150,_0x533ee2;_0x5aecc2=_[_0x5029('0x3c')]({},_0x5aecc2,_0x153cdc);return db[_0x5029('0x2a')][_0x5029('0x45')](_0x5aecc2)[_0x5029('0x21')](function(_0x1b6f4c){if(_0x1b6f4c){_0x159450=_0x1b6f4c;return _0x1b6f4c[_0x5029('0x86')]();}return null;})[_0x5029('0x21')](function(_0x1d6092){if(_0x1d6092){if(!_0x1d6092['length']){throw new db['Sequelize'][(_0x5029('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x556c7a=_0x1d6092;return db['AnalyticMetric'][_0x5029('0x87')]({'raw':!![]});}return null;})['then'](function(_0x4b25ed){if(_0x4b25ed){_0x48bbe2=_[_0x5029('0x69')](_0x4b25ed,'id');var _0xb8da0b;var _0x13e07e=squel[_0x5029('0x88')]();_0x13e07e[_0x5029('0x6a')](_0x159450['table']);for(var _0x38c02a=0x0;_0x38c02a<_0x556c7a[_0x5029('0x33')];_0x38c02a+=0x1){_0xb8da0b=_0x556c7a[_0x38c02a][_0x5029('0x6c')]?_0x48bbe2[_0x556c7a[_0x38c02a]['MetricId']][_0x5029('0x6d')]:_0x556c7a[_0x38c02a][_0x5029('0x63')];_0xb8da0b=_0x556c7a[_0x38c02a][_0x5029('0x6e')]?_[_0x5029('0x89')](_0x3e47bd[_0x556c7a[_0x38c02a][_0x5029('0x6e')]],'%s',_0xb8da0b):_0xb8da0b;_0xb8da0b=_0x556c7a[_0x38c02a]['format']?_['replace'](_0x4c40d1[_0x556c7a[_0x38c02a][_0x5029('0x6f')]],'%s',_0xb8da0b):_0xb8da0b;if(_0x556c7a[_0x38c02a][_0x5029('0x70')]){_0x13e07e['group'](_0xb8da0b);}_0x556c7a[_0x38c02a][_0x5029('0x71')]&&_0x13e07e[_0x5029('0x36')](_0xb8da0b,_0x556c7a[_0x38c02a][_0x5029('0x71')]===_0x5029('0x72')?![]:!![]);_0x13e07e[_0x5029('0x63')](_0xb8da0b,_0x556c7a[_0x38c02a][_0x5029('0x73')]||_0xb8da0b);}if(_0x159450[_0x5029('0x74')]){_0x159450[_0x5029('0x74')]=JSON['parse'](_0x159450['joins']);for(var _0x4243c3=0x0;_0x4243c3<_0x159450['joins'][_0x5029('0x33')];_0x4243c3+=0x1){if(_0x159450['joins'][_0x4243c3][_0x5029('0x2c')]&&_[_0x5029('0x5e')](_0x344203,_0x159450[_0x5029('0x74')][_0x4243c3]['type'])&&_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x76')]&&_0x159450[_0x5029('0x74')][_0x4243c3]['foreignTable']&&_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x78')]){_0x13e07e[_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x2c')]](_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x159450[_0x5029('0x6b')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x76')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x77')],_0x159450[_0x5029('0x74')][_0x4243c3][_0x5029('0x78')]));}}}if(_0x159450[_0x5029('0x7a')]){_0x159450[_0x5029('0x7a')]=JSON[_0x5029('0x75')](_0x159450['conditions']);_0x13e07e[_0x5029('0x38')](_0x4007c8(_0x159450[_0x5029('0x7a')][_0x5029('0x7b')]));}_0x533ee2=_0x13e07e[_0x5029('0x7c')]();_0x13e07e[_0x5029('0x1b')](_0x202c51);_0x13e07e['offset'](0x0);return;}})[_0x5029('0x21')](function(){if(_0xe6ac28[_0x5029('0x8a')]===_0x5029('0x8b')){return null;}var _0xf7729c=_[_0x5029('0x3c')](_0xe6ac28,{'name':_0xe6ac28['fullPath']||_0xe6ac28[_0x5029('0x26')]||_0x159450[_0x5029('0x26')],'basename':_0x5e7f50,'savename':util[_0x5029('0x6f')](_0x5029('0x8c'),_0xe6ac28[_0x5029('0x26')]||_0x159450['name'],require(_0x5029('0x8d'))[_0x5029('0x8e')](0x4),_0xe6ac28[_0x5029('0x8a')]||_0x5029('0x8f')),'reportId':_0x159450['id'],'reportType':_0x5029('0x90')});return db[_0x5029('0x91')][_0x5029('0x46')](_0xf7729c,{'raw':!![]});})[_0x5029('0x21')](function(_0x4a7535){if(_0x159450['table']===_0x5029('0x92')){_0x533ee2[_0x5029('0x38')](_0x159450[_0x5029('0x6b')]+_0x5029('0x93'),_0xe6ac28[_0x5029('0x94')],_0xe6ac28['endDate']);}else{_0x533ee2[_0x5029('0x38')](_0x159450['table']+_0x5029('0x95'),_0xe6ac28[_0x5029('0x94')],_0xe6ac28[_0x5029('0x96')]);}if(_0x4a7535){logger[_0x5029('0x97')](_0x5029('0x98'),_0x533ee2[_0x5029('0x80')]());require('child_process')[_0x5029('0x99')](path[_0x5029('0x4f')](__dirname,'../../components/export/',_0x4a7535[_0x5029('0x8a')]),[_0x4a7535['id'],_0x533ee2[_0x5029('0x80')](),path['join'](__dirname,_0x5029('0x9a'),_0x4a7535['savename']),_0x5e7f50]);return _0x4a7535;}else{var _0x54c0f3=squel['select']();_0x54c0f3['from']('('+_0x533ee2[_0x5029('0x80')]()+')','countTable');_0x54c0f3[_0x5029('0x63')](_0x5029('0x9b'),'count');_0x533ee2[_0x5029('0x1b')](_0xe6ac28[_0x5029('0x1b')]||_0x202c51);_0x533ee2['offset'](_0xe6ac28[_0x5029('0x19')]||0x0);return dbH[_0x5029('0x7f')]['query'](_0x54c0f3[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')]['QueryTypes'][_0x5029('0x9c')]})[_0x5029('0x21')](function(_0x17c755){if(!_0x17c755[_0x5029('0x33')]){_0x3e3150=0x0;}else{_0x3e3150=_0x17c755[0x0][_0x5029('0x1c')]||0x0;}return dbH[_0x5029('0x7f')]['query'](_0x533ee2[_0x5029('0x80')](),{'type':dbH['sequelize'][_0x5029('0x81')][_0x5029('0x9c')]});})[_0x5029('0x21')](function(_0x3ebe00){return{'rows':_0x3ebe00||[],'count':_0x3e3150};});}});}exports[_0x5029('0x9d')]=function(_0x2138cc,_0x331af8){return runReport(_0x2138cc[_0x5029('0x43')],_0x2138cc[_0x5029('0x2e')],_0x2138cc[_0x5029('0x44')])[_0x5029('0x21')](respondWithResult(_0x331af8,null))[_0x5029('0x41')](handleError(_0x331af8,null));};exports[_0x5029('0x9e')]=runReport;exports[_0x5029('0x2e')]=function(_0x9de076,_0x2ac88e){var _0x55ee4f=0xa;var _0x1fa9eb=[_0x5029('0x4f'),_0x5029('0x50'),_0x5029('0x51'),_0x5029('0x52')];var _0x405d47={'SUM':'SUM(%s)','COUNT':_0x5029('0x54'),'COUNT DISTINCT':_0x5029('0x82'),'MAX':_0x5029('0x9f'),'MIN':_0x5029('0x55'),'AVG':_0x5029('0x56'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x5029('0x58'),'GROUP_CONCAT DESC':_0x5029('0x83')};var _0x29c3a2={'SEC_TO_TIME':_0x5029('0x59'),'DATE':_0x5029('0x5a'),'HOUR':_0x5029('0x5b'),'ROUND':_0x5029('0x5c'),'UNIX_TIMESTAMP':_0x5029('0x5d')};var _0xb39e9d=function(_0x124c5e){return!_['includes']([_0x5029('0x5f'),'IS\x20NOT\x20NULL',_0x5029('0x84'),_0x5029('0x61')],_0x124c5e);};var _0x120acc=function(_0x21bb22){if(!_0x21bb22||!_0x21bb22['rules'][_0x5029('0x33')]){return'';}for(var _0x339112='(',_0x5d7c1a=0x0;_0x5d7c1a<_0x21bb22[_0x5029('0x62')][_0x5029('0x33')];_0x5d7c1a+=0x1){_0x5d7c1a>0x0&&(_0x339112+='\x20'+_0x21bb22['operator']+'\x20');_0x339112+=_0x21bb22[_0x5029('0x62')][_0x5d7c1a][_0x5029('0x7b')]?_0x120acc(_0x21bb22['rules'][_0x5d7c1a]['group']):_0x21bb22[_0x5029('0x62')][_0x5d7c1a]['field']+'\x20'+_0x21bb22['rules'][_0x5d7c1a][_0x5029('0x64')]+(_0xb39e9d(_0x21bb22['rules'][_0x5d7c1a][_0x5029('0x64')])?'\x20'+_0x21bb22[_0x5029('0x62')][_0x5d7c1a]['value']:'');}return _0x339112+')';};var _0x327299={'where':{'id':_0x9de076['params']['id']}},_0x3463cc,_0x590cc2,_0x3ac39a,_0x37c47b,_0x62e4af;_0x327299=_[_0x5029('0x3c')]({},_0x327299,_0x9de076['options']);return db[_0x5029('0x2a')][_0x5029('0x45')](_0x327299)[_0x5029('0x21')](function(_0x5e7ec8){if(_0x5e7ec8){_0x3463cc=_0x5e7ec8;return _0x5e7ec8[_0x5029('0x86')]();}return null;})[_0x5029('0x21')](function(_0x5aa480){if(_0x5aa480){if(!_0x5aa480[_0x5029('0x33')]){throw new db[(_0x5029('0x66'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x590cc2=_0x5aa480;return db[_0x5029('0x68')][_0x5029('0x87')]({'raw':!![]});}return null;})['then'](function(_0x5842a5){if(_0x5842a5){_0x3ac39a=_['keyBy'](_0x5842a5,'id');var _0x313bdb;var _0x1d38e0=squel[_0x5029('0x88')]();_0x1d38e0['from'](_0x3463cc[_0x5029('0x6b')]);for(var _0x581237=0x0;_0x581237<_0x590cc2[_0x5029('0x33')];_0x581237+=0x1){_0x313bdb=_0x590cc2[_0x581237]['MetricId']?_0x3ac39a[_0x590cc2[_0x581237]['MetricId']]['metric']:_0x590cc2[_0x581237]['field'];_0x313bdb=_0x590cc2[_0x581237][_0x5029('0x6e')]?_[_0x5029('0x89')](_0x405d47[_0x590cc2[_0x581237][_0x5029('0x6e')]],'%s',_0x313bdb):_0x313bdb;_0x313bdb=_0x590cc2[_0x581237][_0x5029('0x6f')]?_[_0x5029('0x89')](_0x29c3a2[_0x590cc2[_0x581237]['format']],'%s',_0x313bdb):_0x313bdb;if(_0x590cc2[_0x581237][_0x5029('0x70')]){_0x1d38e0[_0x5029('0x7b')](_0x313bdb);}_0x590cc2[_0x581237][_0x5029('0x71')]&&_0x1d38e0[_0x5029('0x36')](_0x313bdb,_0x590cc2[_0x581237][_0x5029('0x71')]===_0x5029('0x72')?![]:!![]);_0x1d38e0['field'](_0x313bdb,_0x590cc2[_0x581237][_0x5029('0x73')]||_0x313bdb);}if(_0x3463cc[_0x5029('0x74')]){_0x3463cc[_0x5029('0x74')]=JSON['parse'](_0x3463cc['joins']);for(var _0xd05bc9=0x0;_0xd05bc9<_0x3463cc[_0x5029('0x74')][_0x5029('0x33')];_0xd05bc9+=0x1){if(_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x2c')]&&_[_0x5029('0x5e')](_0x1fa9eb,_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x2c')])&&_0x3463cc['joins'][_0xd05bc9][_0x5029('0x76')]&&_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x77')]&&_0x3463cc['joins'][_0xd05bc9][_0x5029('0x78')]){_0x1d38e0[_0x3463cc['joins'][_0xd05bc9][_0x5029('0x2c')]](_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x77')],null,util[_0x5029('0x6f')](_0x5029('0x79'),_0x3463cc[_0x5029('0x6b')],_0x3463cc[_0x5029('0x74')][_0xd05bc9][_0x5029('0x76')],_0x3463cc['joins'][_0xd05bc9]['foreignTable'],_0x3463cc['joins'][_0xd05bc9][_0x5029('0x78')]));}}}if(_0x3463cc[_0x5029('0x7a')]){_0x3463cc[_0x5029('0x7a')]=JSON[_0x5029('0x75')](_0x3463cc[_0x5029('0x7a')]);_0x1d38e0['where'](_0x120acc(_0x3463cc[_0x5029('0x7a')][_0x5029('0x7b')]));}_0x62e4af=_0x1d38e0[_0x5029('0x7c')]();_0x1d38e0[_0x5029('0x1b')](_0x55ee4f);_0x1d38e0[_0x5029('0x19')](0x0);logger['debug'](_0x5029('0x7e'),_0x1d38e0[_0x5029('0x80')]());return dbH[_0x5029('0x7f')][_0x5029('0x2e')](_0x1d38e0[_0x5029('0x80')](),{'type':dbH[_0x5029('0x7f')][_0x5029('0x81')][_0x5029('0x9c')]});}})[_0x5029('0x21')](function(){return{'sql':_0x62e4af[_0x5029('0x80')]()};})[_0x5029('0x21')](respondWithResult(_0x2ac88e,null))[_0x5029('0x41')](handleError(_0x2ac88e,null));};
\ No newline at end of file
index 361454d..afa420e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb99d=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','AnalyticDefaultReport','analytics_default_reports'];(function(_0x289e64,_0x5adb3c){var _0x30246c=function(_0x1bf7f6){while(--_0x1bf7f6){_0x289e64['push'](_0x289e64['shift']());}};_0x30246c(++_0x5adb3c);}(_0xb99d,0xf0));var _0xdb99=function(_0x3ba418,_0x27a731){_0x3ba418=_0x3ba418-0x0;var _0x1091f3=_0xb99d[_0x3ba418];return _0x1091f3;};'use strict';var _=require('lodash');var util=require(_0xdb99('0x0'));var logger=require(_0xdb99('0x1'))(_0xdb99('0x2'));var moment=require(_0xdb99('0x3'));var BPromise=require(_0xdb99('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb99('0x5'));var rimraf=require(_0xdb99('0x6'));var config=require(_0xdb99('0x7'));var attributes=require('./analyticDefaultReport.attributes');module[_0xdb99('0x8')]=function(_0x13fc4b,_0x252d16){return _0x13fc4b[_0xdb99('0x9')](_0xdb99('0xa'),attributes,{'tableName':_0xdb99('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb94e=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','util'];(function(_0x541a78,_0x219591){var _0x3107f3=function(_0x153053){while(--_0x153053){_0x541a78['push'](_0x541a78['shift']());}};_0x3107f3(++_0x219591);}(_0xb94e,0x1ae));var _0xeb94=function(_0x331dfe,_0x13f0fc){_0x331dfe=_0x331dfe-0x0;var _0x104132=_0xb94e[_0x331dfe];return _0x104132;};'use strict';var _=require(_0xeb94('0x0'));var util=require(_0xeb94('0x1'));var logger=require(_0xeb94('0x2'))(_0xeb94('0x3'));var moment=require(_0xeb94('0x4'));var BPromise=require('bluebird');var rp=require(_0xeb94('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb94('0x6'));var config=require(_0xeb94('0x7'));var attributes=require('./analyticDefaultReport.attributes');module[_0xeb94('0x8')]=function(_0xec68b1,_0x4cbaba){return _0xec68b1[_0xeb94('0x9')](_0xeb94('0xa'),attributes,{'tableName':_0xeb94('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4c23b9..473f808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d98=['message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code'];(function(_0x338ee6,_0x46bebd){var _0x4828e8=function(_0x54ecc4){while(--_0x54ecc4){_0x338ee6['push'](_0x338ee6['shift']());}};_0x4828e8(++_0x46bebd);}(_0x1d98,0xba));var _0x81d9=function(_0x235607,_0x65529){_0x235607=_0x235607-0x0;var _0x22f94e=_0x1d98[_0x235607];return _0x22f94e;};'use strict';var _=require(_0x81d9('0x0'));var util=require(_0x81d9('0x1'));var moment=require(_0x81d9('0x2'));var BPromise=require(_0x81d9('0x3'));var rs=require(_0x81d9('0x4'));var fs=require('fs');var Redis=require(_0x81d9('0x5'));var db=require(_0x81d9('0x6'))['db'];var utils=require(_0x81d9('0x7'));var logger=require(_0x81d9('0x8'))(_0x81d9('0x9'));var config=require(_0x81d9('0xa'));var jayson=require(_0x81d9('0xb'));var client=jayson[_0x81d9('0xc')][_0x81d9('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4dd707,_0x1408bd,_0x5d4182){return new BPromise(function(_0x53cf87,_0x12b622){return client[_0x81d9('0xe')](_0x4dd707,_0x5d4182)[_0x81d9('0xf')](function(_0x404bb0){logger['info'](_0x81d9('0x10'),_0x1408bd,'request\x20sent');logger[_0x81d9('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x1408bd,_0x81d9('0x12'),JSON[_0x81d9('0x13')](_0x404bb0));if(_0x404bb0[_0x81d9('0x14')]){if(_0x404bb0['error'][_0x81d9('0x15')]===0x1f4){logger[_0x81d9('0x14')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x1408bd,_0x404bb0[_0x81d9('0x14')][_0x81d9('0x16')]);return _0x12b622(_0x404bb0[_0x81d9('0x14')][_0x81d9('0x16')]);}logger['error'](_0x81d9('0x10'),_0x1408bd,_0x404bb0[_0x81d9('0x14')][_0x81d9('0x16')]);return _0x53cf87(_0x404bb0[_0x81d9('0x14')][_0x81d9('0x16')]);}else{logger[_0x81d9('0x17')](_0x81d9('0x10'),_0x1408bd,_0x81d9('0x12'));_0x53cf87(_0x404bb0[_0x81d9('0x18')]['message']);}})[_0x81d9('0x19')](function(_0x279c05){logger['error'](_0x81d9('0x10'),_0x1408bd,_0x279c05);_0x12b622(_0x279c05);});});}
\ No newline at end of file
+var _0xf124=['stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x113a6c,_0x10df30){var _0x1ac632=function(_0xbd4fb9){while(--_0xbd4fb9){_0x113a6c['push'](_0x113a6c['shift']());}};_0x1ac632(++_0x10df30);}(_0xf124,0x98));var _0x4f12=function(_0x4471b3,_0x511a9f){_0x4471b3=_0x4471b3-0x0;var _0x386593=_0xf124[_0x4471b3];return _0x386593;};'use strict';var _=require(_0x4f12('0x0'));var util=require(_0x4f12('0x1'));var moment=require(_0x4f12('0x2'));var BPromise=require(_0x4f12('0x3'));var rs=require(_0x4f12('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4f12('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4f12('0x6'))(_0x4f12('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4f12('0x8')][_0x4f12('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4fca4d,_0xcfe045,_0x5c4fb3){return new BPromise(function(_0x26972d,_0x50284e){return client[_0x4f12('0xa')](_0x4fca4d,_0x5c4fb3)[_0x4f12('0xb')](function(_0xcb39f1){logger[_0x4f12('0xc')](_0x4f12('0xd'),_0xcfe045,_0x4f12('0xe'));logger[_0x4f12('0xf')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0xcfe045,_0x4f12('0xe'),JSON[_0x4f12('0x10')](_0xcb39f1));if(_0xcb39f1[_0x4f12('0x11')]){if(_0xcb39f1[_0x4f12('0x11')]['code']===0x1f4){logger[_0x4f12('0x11')](_0x4f12('0xd'),_0xcfe045,_0xcb39f1[_0x4f12('0x11')][_0x4f12('0x12')]);return _0x50284e(_0xcb39f1['error']['message']);}logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0xcfe045,_0xcb39f1[_0x4f12('0x11')]['message']);return _0x26972d(_0xcb39f1['error'][_0x4f12('0x12')]);}else{logger[_0x4f12('0xc')](_0x4f12('0xd'),_0xcfe045,_0x4f12('0xe'));_0x26972d(_0xcb39f1[_0x4f12('0x13')]['message']);}})[_0x4f12('0x14')](function(_0x1e0c30){logger[_0x4f12('0x11')](_0x4f12('0xd'),_0xcfe045,_0x1e0c30);_0x50284e(_0x1e0c30);});});}
\ No newline at end of file
index 03053f4..bb45aba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf380=['/:id/query','query','create','update','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run'];(function(_0x17fc85,_0x49be39){var _0x10a3e5=function(_0x8a0541){while(--_0x8a0541){_0x17fc85['push'](_0x17fc85['shift']());}};_0x10a3e5(++_0x49be39);}(_0xf380,0x1bf));var _0x0f38=function(_0x1567e7,_0x1db0f1){_0x1567e7=_0x1567e7-0x0;var _0x3598d8=_0xf380[_0x1567e7];return _0x3598d8;};'use strict';var multer=require('multer');var util=require(_0x0f38('0x0'));var path=require('path');var timeout=require(_0x0f38('0x1'));var express=require('express');var router=express[_0x0f38('0x2')]();var fs_extra=require(_0x0f38('0x3'));var auth=require(_0x0f38('0x4'));var interaction=require(_0x0f38('0x5'));var config=require(_0x0f38('0x6'));var controller=require(_0x0f38('0x7'));router[_0x0f38('0x8')]('/',auth[_0x0f38('0x9')](),controller['index']);router[_0x0f38('0x8')](_0x0f38('0xa'),auth['isAuthenticated'](),controller[_0x0f38('0xb')]);router[_0x0f38('0x8')](_0x0f38('0xc'),auth[_0x0f38('0x9')](),controller[_0x0f38('0xd')]);router[_0x0f38('0x8')](_0x0f38('0xe'),auth[_0x0f38('0x9')](),controller['run']);router[_0x0f38('0x8')](_0x0f38('0xf'),auth[_0x0f38('0x9')](),controller[_0x0f38('0x10')]);router['post']('/',auth[_0x0f38('0x9')](),controller[_0x0f38('0x11')]);router['put'](_0x0f38('0xa'),auth[_0x0f38('0x9')](),controller[_0x0f38('0x12')]);router[_0x0f38('0x13')](_0x0f38('0xa'),auth[_0x0f38('0x9')](),controller[_0x0f38('0x14')]);module[_0x0f38('0x15')]=router;
\ No newline at end of file
+var _0x27fa=['Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','preview','run','/:id/query','query','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0x27fa,0x1c3));var _0xa27f=function(_0x349983,_0x108690){_0x349983=_0x349983-0x0;var _0x2277cb=_0x27fa[_0x349983];return _0x2277cb;};'use strict';var multer=require(_0xa27f('0x0'));var util=require(_0xa27f('0x1'));var path=require(_0xa27f('0x2'));var timeout=require(_0xa27f('0x3'));var express=require(_0xa27f('0x4'));var router=express[_0xa27f('0x5')]();var fs_extra=require(_0xa27f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa27f('0x7'));var config=require(_0xa27f('0x8'));var controller=require(_0xa27f('0x9'));router[_0xa27f('0xa')]('/',auth[_0xa27f('0xb')](),controller['index']);router[_0xa27f('0xa')](_0xa27f('0xc'),auth[_0xa27f('0xb')](),controller[_0xa27f('0xd')]);router[_0xa27f('0xa')]('/:id/preview',auth[_0xa27f('0xb')](),controller[_0xa27f('0xe')]);router[_0xa27f('0xa')]('/:id/run',auth[_0xa27f('0xb')](),controller[_0xa27f('0xf')]);router['get'](_0xa27f('0x10'),auth['isAuthenticated'](),controller[_0xa27f('0x11')]);router[_0xa27f('0x12')]('/',auth[_0xa27f('0xb')](),controller['create']);router[_0xa27f('0x13')](_0xa27f('0xc'),auth[_0xa27f('0xb')](),controller[_0xa27f('0x14')]);router[_0xa27f('0x15')](_0xa27f('0xc'),auth['isAuthenticated'](),controller[_0xa27f('0x16')]);module[_0xa27f('0x17')]=router;
\ No newline at end of file
index f9d9785..a122fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa255=['moment','exports','STRING','csv','pdf','DATE','Loading','manual','UNSIGNED'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xa255,0xc6));var _0x5a25=function(_0x28cea5,_0x522c80){_0x28cea5=_0x28cea5-0x0;var _0x2d406e=_0xa255[_0x28cea5];return _0x2d406e;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x5a25('0x0'));module[_0x5a25('0x1')]={'name':{'type':Sequelize[_0x5a25('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x5a25('0x2')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x5a25('0x3'),_0x5a25('0x4'),'xlsx'),'allowNull':![],'defaultValue':_0x5a25('0x3')},'savename':{'type':Sequelize[_0x5a25('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x5a25('0x5')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize['STRING'],'defaultValue':_0x5a25('0x6')},'type':{'type':Sequelize['ENUM']('manual','scheduled'),'allowNull':![],'defaultValue':_0x5a25('0x7')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x5a25('0x8')]},'reportType':{'type':Sequelize[_0x5a25('0x2')]}};
\ No newline at end of file
+var _0x3d34=['xlsx','DATE','Loading','manual','scheduled','INTEGER','sequelize','moment','STRING','ENUM','csv','pdf'];(function(_0x3f62b4,_0x3bfcec){var _0x2668d6=function(_0x245070){while(--_0x245070){_0x3f62b4['push'](_0x3f62b4['shift']());}};_0x2668d6(++_0x3bfcec);}(_0x3d34,0xa2));var _0x43d3=function(_0x749614,_0x9c4b56){_0x749614=_0x749614-0x0;var _0x4cacdf=_0x3d34[_0x749614];return _0x4cacdf;};'use strict';var Sequelize=require(_0x43d3('0x0'));var moment=require(_0x43d3('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x43d3('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x43d3('0x3')](_0x43d3('0x4'),_0x43d3('0x5'),_0x43d3('0x6')),'allowNull':![],'defaultValue':_0x43d3('0x4')},'savename':{'type':Sequelize[_0x43d3('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x43d3('0x7')]},'endDate':{'type':Sequelize[_0x43d3('0x7')]},'status':{'type':Sequelize[_0x43d3('0x2')],'defaultValue':_0x43d3('0x8')},'type':{'type':Sequelize[_0x43d3('0x3')](_0x43d3('0x9'),_0x43d3('0xa')),'allowNull':![],'defaultValue':_0x43d3('0x9')},'reportId':{'type':Sequelize[_0x43d3('0xb')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x43d3('0x2')]}};
\ No newline at end of file
index fe102ac..499135c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9f7=['%s.%s','output','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','user','role','ExtractedReports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','join','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','root','format'];(function(_0x51902e,_0x1275d7){var _0x530e25=function(_0x22f3d1){while(--_0x22f3d1){_0x51902e['push'](_0x51902e['shift']());}};_0x530e25(++_0x1275d7);}(_0xf9f7,0x12c));var _0x7f9f=function(_0x5a585b,_0x3e0674){_0x5a585b=_0x5a585b-0x0;var _0x4cd398=_0xf9f7[_0x5a585b];return _0x4cd398;};'use strict';var emlformat=require(_0x7f9f('0x0'));var rimraf=require(_0x7f9f('0x1'));var zipdir=require(_0x7f9f('0x2'));var jsonpatch=require(_0x7f9f('0x3'));var rp=require(_0x7f9f('0x4'));var moment=require(_0x7f9f('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7f9f('0x6'));var path=require(_0x7f9f('0x7'));var sox=require(_0x7f9f('0x8'));var csv=require(_0x7f9f('0x9'));var ejs=require(_0x7f9f('0xa'));var fs=require('fs');var fs_extra=require(_0x7f9f('0xb'));var _=require(_0x7f9f('0xc'));var squel=require(_0x7f9f('0xd'));var crypto=require(_0x7f9f('0xe'));var jsforce=require(_0x7f9f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x7f9f('0x9'));var querystring=require(_0x7f9f('0x10'));var Papa=require('papaparse');var Redis=require(_0x7f9f('0x11'));var authService=require(_0x7f9f('0x12'));var qs=require(_0x7f9f('0x13'));var as=require(_0x7f9f('0x14'));var hardwareService=require(_0x7f9f('0x15'));var logger=require(_0x7f9f('0x16'))(_0x7f9f('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7f9f('0x18'));var db=require(_0x7f9f('0x19'))['db'];function respondWithStatusCode(_0x522409,_0x15d4be){_0x15d4be=_0x15d4be||0xcc;return function(_0x13dae1){if(_0x13dae1){return _0x522409[_0x7f9f('0x1a')](_0x15d4be);}return _0x522409['status'](_0x15d4be)[_0x7f9f('0x1b')]();};}function respondWithResult(_0x5504d6,_0x482b00){_0x482b00=_0x482b00||0xc8;return function(_0x21a3df){if(_0x21a3df){return _0x5504d6['status'](_0x482b00)[_0x7f9f('0x1c')](_0x21a3df);}};}function respondWithFilteredResult(_0xa1fcda,_0x4be2ea){return function(_0x50fcd2){if(_0x50fcd2){var _0x212db9=typeof _0x4be2ea[_0x7f9f('0x1d')]===_0x7f9f('0x1e')&&typeof _0x4be2ea[_0x7f9f('0x1f')]===_0x7f9f('0x1e');var _0xbfcc12=_0x50fcd2[_0x7f9f('0x20')];var _0x5272ce=_0x212db9?0x0:_0x4be2ea['offset'];var _0x2cf6c3=_0x212db9?_0x50fcd2[_0x7f9f('0x20')]:_0x4be2ea['offset']+_0x4be2ea[_0x7f9f('0x1f')];var _0x19ded5;if(_0x2cf6c3>=_0xbfcc12){_0x2cf6c3=_0xbfcc12;_0x19ded5=0xc8;}else{_0x19ded5=0xce;}_0xa1fcda[_0x7f9f('0x21')](_0x19ded5);return _0xa1fcda[_0x7f9f('0x22')](_0x7f9f('0x23'),_0x5272ce+'-'+_0x2cf6c3+'/'+_0xbfcc12)['json'](_0x50fcd2);}return null;};}function patchUpdates(_0x4a71a4){return function(_0x182ce9){try{jsonpatch['apply'](_0x182ce9,_0x4a71a4,!![]);}catch(_0x536dd6){return BPromise[_0x7f9f('0x24')](_0x536dd6);}return _0x182ce9[_0x7f9f('0x25')]();};}function saveUpdates(_0x27d9c1,_0x3d2340){return function(_0x1a6da2){if(_0x1a6da2){return _0x1a6da2[_0x7f9f('0x26')](_0x27d9c1)[_0x7f9f('0x27')](function(_0x49fc61){return _0x49fc61;});}return null;};}function removeEntity(_0x2bdd93,_0x5cc6dc){return function(_0x2f0f41){if(_0x2f0f41){return _0x2f0f41[_0x7f9f('0x28')]()[_0x7f9f('0x27')](function(){var _0x5fbee3=_0x2f0f41[_0x7f9f('0x29')]({'plain':!![]});var _0x5359be='ExtractedReports';return db[_0x7f9f('0x2a')][_0x7f9f('0x28')]({'where':{'type':_0x5359be,'resourceId':_0x5fbee3['id']}})['then'](function(){return _0x2f0f41;});})[_0x7f9f('0x27')](function(){_0x2bdd93[_0x7f9f('0x21')](0xcc)[_0x7f9f('0x1b')]();});}};}function handleEntityNotFound(_0x54f5e0,_0x9cb18){return function(_0x8d146c){if(!_0x8d146c){_0x54f5e0[_0x7f9f('0x1a')](0x194);}return _0x8d146c;};}function handleError(_0x3ba404,_0x23b15b){_0x23b15b=_0x23b15b||0x1f4;return function(_0xcb5f47){logger[_0x7f9f('0x2b')](_0xcb5f47[_0x7f9f('0x2c')]);if(_0xcb5f47[_0x7f9f('0x2d')]){delete _0xcb5f47[_0x7f9f('0x2d')];}_0x3ba404[_0x7f9f('0x21')](_0x23b15b)[_0x7f9f('0x2e')](_0xcb5f47);};}exports[_0x7f9f('0x2f')]=function(_0x472c8d,_0xee6107){var _0x4cd8a4={},_0x265f30={},_0xd14030={'count':0x0,'rows':[]};var _0x280c8b=_[_0x7f9f('0x30')](db[_0x7f9f('0x31')][_0x7f9f('0x32')],function(_0x220d0b){return{'name':_0x220d0b[_0x7f9f('0x33')],'type':_0x220d0b[_0x7f9f('0x34')][_0x7f9f('0x35')]};});_0x265f30[_0x7f9f('0x36')]=_['map'](_0x280c8b,_0x7f9f('0x2d'));_0x265f30[_0x7f9f('0x37')]=_[_0x7f9f('0x38')](_0x472c8d[_0x7f9f('0x37')]);_0x265f30[_0x7f9f('0x39')]=_['intersection'](_0x265f30['model'],_0x265f30['query']);_0x4cd8a4[_0x7f9f('0x3a')]=_[_0x7f9f('0x3b')](_0x265f30['model'],qs[_0x7f9f('0x3c')](_0x472c8d[_0x7f9f('0x37')]['fields']));_0x4cd8a4[_0x7f9f('0x3a')]=_0x4cd8a4[_0x7f9f('0x3a')][_0x7f9f('0x3d')]?_0x4cd8a4[_0x7f9f('0x3a')]:_0x265f30[_0x7f9f('0x36')];if(!_0x472c8d['query'][_0x7f9f('0x3e')]('nolimit')){_0x4cd8a4['limit']=qs[_0x7f9f('0x1f')](_0x472c8d[_0x7f9f('0x37')]['limit']);_0x4cd8a4[_0x7f9f('0x1d')]=qs[_0x7f9f('0x1d')](_0x472c8d['query'][_0x7f9f('0x1d')]);}_0x4cd8a4[_0x7f9f('0x3f')]=qs['sort'](_0x472c8d[_0x7f9f('0x37')]['sort']);_0x4cd8a4[_0x7f9f('0x40')]=qs[_0x7f9f('0x39')](_['pick'](_0x472c8d[_0x7f9f('0x37')],_0x265f30[_0x7f9f('0x39')]),_0x280c8b);if(_0x472c8d['query'][_0x7f9f('0x41')]){_0x4cd8a4[_0x7f9f('0x40')]=_['merge'](_0x4cd8a4[_0x7f9f('0x40')],{'$or':_[_0x7f9f('0x30')](_0x280c8b,function(_0x99db4a){if(_0x99db4a[_0x7f9f('0x34')]!==_0x7f9f('0x42')){var _0x30696e={};_0x30696e[_0x99db4a['name']]={'$like':'%'+_0x472c8d[_0x7f9f('0x37')]['filter']+'%'};return _0x30696e;}})});}_0x4cd8a4=_['merge']({},_0x4cd8a4,_0x472c8d[_0x7f9f('0x43')]);var _0x5b27bd={'where':_0x4cd8a4[_0x7f9f('0x40')]};return db[_0x7f9f('0x31')]['count'](_0x5b27bd)['then'](function(_0x50a904){_0xd14030['count']=_0x50a904;if(_0x472c8d['query'][_0x7f9f('0x44')]){_0x4cd8a4['include']=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x7f9f('0x45')](_0x4cd8a4);})['then'](function(_0x401e02){_0xd14030[_0x7f9f('0x46')]=_0x401e02;return _0xd14030;})[_0x7f9f('0x27')](respondWithFilteredResult(_0xee6107,_0x4cd8a4))[_0x7f9f('0x47')](handleError(_0xee6107,null));};exports[_0x7f9f('0x48')]=function(_0x359f61,_0x536934){var _0x1afd80={'raw':!![],'where':{'id':_0x359f61[_0x7f9f('0x49')]['id']}},_0x4754aa={};_0x4754aa[_0x7f9f('0x36')]=_[_0x7f9f('0x38')](db['AnalyticExtractedReport'][_0x7f9f('0x32')]);_0x4754aa[_0x7f9f('0x37')]=_[_0x7f9f('0x38')](_0x359f61[_0x7f9f('0x37')]);_0x4754aa[_0x7f9f('0x39')]=_[_0x7f9f('0x3b')](_0x4754aa['model'],_0x4754aa[_0x7f9f('0x37')]);_0x1afd80['attributes']=_[_0x7f9f('0x3b')](_0x4754aa[_0x7f9f('0x36')],qs[_0x7f9f('0x3c')](_0x359f61[_0x7f9f('0x37')][_0x7f9f('0x3c')]));_0x1afd80[_0x7f9f('0x3a')]=_0x1afd80[_0x7f9f('0x3a')][_0x7f9f('0x3d')]?_0x1afd80['attributes']:_0x4754aa[_0x7f9f('0x36')];if(_0x359f61['query'][_0x7f9f('0x44')]){_0x1afd80[_0x7f9f('0x4a')]=[{'all':!![]}];}_0x1afd80=_[_0x7f9f('0x4b')]({},_0x1afd80,_0x359f61['options']);return db[_0x7f9f('0x31')][_0x7f9f('0x4c')](_0x1afd80)[_0x7f9f('0x27')](handleEntityNotFound(_0x536934,null))[_0x7f9f('0x27')](respondWithResult(_0x536934,null))['catch'](handleError(_0x536934,null));};exports['create']=function(_0x20cf04,_0x416de1){return db[_0x7f9f('0x31')][_0x7f9f('0x4d')](_0x20cf04[_0x7f9f('0x4e')],{})[_0x7f9f('0x27')](function(_0x3b5ff0){var _0x9b4e1b=_0x20cf04[_0x7f9f('0x4f')][_0x7f9f('0x29')]({'plain':!![]});if(!_0x9b4e1b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x9b4e1b[_0x7f9f('0x50')]===_0x7f9f('0x4f')){var _0x1fa0be=_0x3b5ff0[_0x7f9f('0x29')]({'plain':!![]});var _0x4cdf28=_0x7f9f('0x51');return db[_0x7f9f('0x52')][_0x7f9f('0x4c')]({'where':{'name':_0x4cdf28,'userProfileId':_0x9b4e1b[_0x7f9f('0x53')]},'raw':!![]})[_0x7f9f('0x27')](function(_0x50b22b){if(_0x50b22b&&_0x50b22b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x1fa0be['name'],'resourceId':_0x1fa0be['id'],'type':_0x50b22b[_0x7f9f('0x2d')],'sectionId':_0x50b22b['id']},{})[_0x7f9f('0x27')](function(){return _0x3b5ff0;});}else{return _0x3b5ff0;}})[_0x7f9f('0x47')](function(_0x9271c5){logger[_0x7f9f('0x2b')](_0x7f9f('0x54'),_0x9271c5);throw _0x9271c5;});}return _0x3b5ff0;})[_0x7f9f('0x27')](respondWithResult(_0x416de1,0xc9))[_0x7f9f('0x47')](handleError(_0x416de1,null));};exports['update']=function(_0x320ab0,_0x549fef){if(_0x320ab0[_0x7f9f('0x4e')]['id']){delete _0x320ab0[_0x7f9f('0x4e')]['id'];}return db['AnalyticExtractedReport']['find']({'where':{'id':_0x320ab0[_0x7f9f('0x49')]['id']}})['then'](handleEntityNotFound(_0x549fef,null))['then'](saveUpdates(_0x320ab0[_0x7f9f('0x4e')],null))[_0x7f9f('0x27')](respondWithResult(_0x549fef,null))[_0x7f9f('0x47')](handleError(_0x549fef,null));};exports['destroy']=function(_0x53f8b1,_0x1903a9){return db[_0x7f9f('0x31')][_0x7f9f('0x4c')]({'where':{'id':_0x53f8b1['params']['id']}})['then'](handleEntityNotFound(_0x1903a9,null))[_0x7f9f('0x27')](removeEntity(_0x1903a9,null))[_0x7f9f('0x47')](handleError(_0x1903a9,null));};exports[_0x7f9f('0x55')]=function(_0xa61df7,_0xfdbac9,_0x3bd25f){return db[_0x7f9f('0x31')][_0x7f9f('0x4c')]({'where':{'id':_0xa61df7[_0x7f9f('0x49')]['id']},'attributes':[_0x7f9f('0x2d'),_0x7f9f('0x56'),_0x7f9f('0x57'),'output'],'raw':!![]})[_0x7f9f('0x27')](handleEntityNotFound(_0xfdbac9,null))['then'](function(_0x5b76b5){if(_0x5b76b5){if(!fs['existsSync'](path[_0x7f9f('0x58')](config['root'],_0x7f9f('0x59'),_0x5b76b5['savename']))){throw new db[(_0x7f9f('0x5a'))][(_0x7f9f('0x5b'))](_0x7f9f('0x5c'));}if(_0xa61df7[_0x7f9f('0x37')][_0x7f9f('0x5d')]){return _0xfdbac9[_0x7f9f('0x1a')](0xc8);}return _0xfdbac9[_0x7f9f('0x55')](path[_0x7f9f('0x58')](config[_0x7f9f('0x5e')],_0x7f9f('0x59'),_0x5b76b5[_0x7f9f('0x57')]),util[_0x7f9f('0x5f')](_0x7f9f('0x60'),_0x5b76b5[_0x7f9f('0x56')]||_0x5b76b5[_0x7f9f('0x2d')],_0x5b76b5[_0x7f9f('0x61')][_0x7f9f('0x62')]()));}})['catch'](handleError(_0xfdbac9,null));};
\ No newline at end of file
+var _0xc738=['%s.%s','toLowerCase','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','ExtractedReports','sendStatus','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','body','download','basename','savename','output','existsSync','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','format'];(function(_0x2c37b2,_0x107055){var _0x559312=function(_0x53e3d3){while(--_0x53e3d3){_0x2c37b2['push'](_0x2c37b2['shift']());}};_0x559312(++_0x107055);}(_0xc738,0x69));var _0x8c73=function(_0x2e50a2,_0x27f31e){_0x2e50a2=_0x2e50a2-0x0;var _0x47e5de=_0xc738[_0x2e50a2];return _0x47e5de;};'use strict';var emlformat=require(_0x8c73('0x0'));var rimraf=require(_0x8c73('0x1'));var zipdir=require(_0x8c73('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8c73('0x3'));var moment=require(_0x8c73('0x4'));var BPromise=require(_0x8c73('0x5'));var Mustache=require(_0x8c73('0x6'));var util=require(_0x8c73('0x7'));var path=require(_0x8c73('0x8'));var sox=require(_0x8c73('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8c73('0xa'));var _=require('lodash');var squel=require(_0x8c73('0xb'));var crypto=require(_0x8c73('0xc'));var jsforce=require(_0x8c73('0xd'));var deskjs=require(_0x8c73('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8c73('0xf'));var Papa=require(_0x8c73('0x10'));var Redis=require(_0x8c73('0x11'));var authService=require(_0x8c73('0x12'));var qs=require(_0x8c73('0x13'));var as=require(_0x8c73('0x14'));var hardwareService=require(_0x8c73('0x15'));var logger=require(_0x8c73('0x16'))(_0x8c73('0x17'));var utils=require(_0x8c73('0x18'));var config=require(_0x8c73('0x19'));var licenseUtil=require(_0x8c73('0x1a'));var db=require(_0x8c73('0x1b'))['db'];function respondWithStatusCode(_0xce8162,_0x4035ee){_0x4035ee=_0x4035ee||0xcc;return function(_0x15d950){if(_0x15d950){return _0xce8162['sendStatus'](_0x4035ee);}return _0xce8162[_0x8c73('0x1c')](_0x4035ee)[_0x8c73('0x1d')]();};}function respondWithResult(_0x437167,_0x5cf4e2){_0x5cf4e2=_0x5cf4e2||0xc8;return function(_0x1d7a39){if(_0x1d7a39){return _0x437167[_0x8c73('0x1c')](_0x5cf4e2)[_0x8c73('0x1e')](_0x1d7a39);}};}function respondWithFilteredResult(_0x38c537,_0x1ce25d){return function(_0x3cf092){if(_0x3cf092){var _0x3673b5=typeof _0x1ce25d[_0x8c73('0x1f')]==='undefined'&&typeof _0x1ce25d[_0x8c73('0x20')]===_0x8c73('0x21');var _0x262dac=_0x3cf092['count'];var _0x3550e4=_0x3673b5?0x0:_0x1ce25d['offset'];var _0x169349=_0x3673b5?_0x3cf092[_0x8c73('0x22')]:_0x1ce25d[_0x8c73('0x1f')]+_0x1ce25d['limit'];var _0x14e57b;if(_0x169349>=_0x262dac){_0x169349=_0x262dac;_0x14e57b=0xc8;}else{_0x14e57b=0xce;}_0x38c537['status'](_0x14e57b);return _0x38c537[_0x8c73('0x23')](_0x8c73('0x24'),_0x3550e4+'-'+_0x169349+'/'+_0x262dac)['json'](_0x3cf092);}return null;};}function patchUpdates(_0x3b188b){return function(_0x22bfe8){try{jsonpatch[_0x8c73('0x25')](_0x22bfe8,_0x3b188b,!![]);}catch(_0x4c7dea){return BPromise[_0x8c73('0x26')](_0x4c7dea);}return _0x22bfe8[_0x8c73('0x27')]();};}function saveUpdates(_0x34153c,_0xcde10c){return function(_0xd3d6a4){if(_0xd3d6a4){return _0xd3d6a4[_0x8c73('0x28')](_0x34153c)['then'](function(_0x331673){return _0x331673;});}return null;};}function removeEntity(_0x6f5d62,_0x25fb4d){return function(_0x3dab72){if(_0x3dab72){return _0x3dab72[_0x8c73('0x29')]()[_0x8c73('0x2a')](function(){var _0x405d5f=_0x3dab72[_0x8c73('0x2b')]({'plain':!![]});var _0x3c2da1=_0x8c73('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c2da1,'resourceId':_0x405d5f['id']}})[_0x8c73('0x2a')](function(){return _0x3dab72;});})['then'](function(){_0x6f5d62['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x30a84d,_0x1a5ead){return function(_0x529f82){if(!_0x529f82){_0x30a84d[_0x8c73('0x2d')](0x194);}return _0x529f82;};}function handleError(_0x1f2795,_0x591973){_0x591973=_0x591973||0x1f4;return function(_0xfa830b){logger[_0x8c73('0x2e')](_0xfa830b[_0x8c73('0x2f')]);if(_0xfa830b[_0x8c73('0x30')]){delete _0xfa830b[_0x8c73('0x30')];}_0x1f2795[_0x8c73('0x1c')](_0x591973)[_0x8c73('0x31')](_0xfa830b);};}exports[_0x8c73('0x32')]=function(_0x419a48,_0xd81dbd){var _0x4d09fb={},_0x28a731={},_0x36b2d8={'count':0x0,'rows':[]};var _0xbfe6ea=_[_0x8c73('0x33')](db[_0x8c73('0x34')][_0x8c73('0x35')],function(_0x451123){return{'name':_0x451123[_0x8c73('0x36')],'type':_0x451123[_0x8c73('0x37')]['key']};});_0x28a731[_0x8c73('0x38')]=_[_0x8c73('0x33')](_0xbfe6ea,_0x8c73('0x30'));_0x28a731[_0x8c73('0x39')]=_[_0x8c73('0x3a')](_0x419a48['query']);_0x28a731[_0x8c73('0x3b')]=_[_0x8c73('0x3c')](_0x28a731['model'],_0x28a731[_0x8c73('0x39')]);_0x4d09fb[_0x8c73('0x3d')]=_[_0x8c73('0x3c')](_0x28a731[_0x8c73('0x38')],qs[_0x8c73('0x3e')](_0x419a48['query'][_0x8c73('0x3e')]));_0x4d09fb[_0x8c73('0x3d')]=_0x4d09fb[_0x8c73('0x3d')]['length']?_0x4d09fb['attributes']:_0x28a731[_0x8c73('0x38')];if(!_0x419a48['query'][_0x8c73('0x3f')](_0x8c73('0x40'))){_0x4d09fb[_0x8c73('0x20')]=qs[_0x8c73('0x20')](_0x419a48[_0x8c73('0x39')]['limit']);_0x4d09fb['offset']=qs[_0x8c73('0x1f')](_0x419a48[_0x8c73('0x39')]['offset']);}_0x4d09fb[_0x8c73('0x41')]=qs[_0x8c73('0x42')](_0x419a48[_0x8c73('0x39')]['sort']);_0x4d09fb['where']=qs['filters'](_[_0x8c73('0x43')](_0x419a48[_0x8c73('0x39')],_0x28a731[_0x8c73('0x3b')]),_0xbfe6ea);if(_0x419a48[_0x8c73('0x39')][_0x8c73('0x44')]){_0x4d09fb[_0x8c73('0x45')]=_[_0x8c73('0x46')](_0x4d09fb['where'],{'$or':_[_0x8c73('0x33')](_0xbfe6ea,function(_0xe5d5e4){if(_0xe5d5e4[_0x8c73('0x37')]!==_0x8c73('0x47')){var _0x3f47dd={};_0x3f47dd[_0xe5d5e4[_0x8c73('0x30')]]={'$like':'%'+_0x419a48['query'][_0x8c73('0x44')]+'%'};return _0x3f47dd;}})});}_0x4d09fb=_[_0x8c73('0x46')]({},_0x4d09fb,_0x419a48[_0x8c73('0x48')]);var _0x13d776={'where':_0x4d09fb[_0x8c73('0x45')]};return db['AnalyticExtractedReport']['count'](_0x13d776)[_0x8c73('0x2a')](function(_0x4a4a72){_0x36b2d8[_0x8c73('0x22')]=_0x4a4a72;if(_0x419a48[_0x8c73('0x39')][_0x8c73('0x49')]){_0x4d09fb[_0x8c73('0x4a')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x8c73('0x4b')](_0x4d09fb);})[_0x8c73('0x2a')](function(_0x3a1a31){_0x36b2d8['rows']=_0x3a1a31;return _0x36b2d8;})[_0x8c73('0x2a')](respondWithFilteredResult(_0xd81dbd,_0x4d09fb))[_0x8c73('0x4c')](handleError(_0xd81dbd,null));};exports['show']=function(_0x4dd1fa,_0x45c1e7){var _0x413bf7={'raw':!![],'where':{'id':_0x4dd1fa[_0x8c73('0x4d')]['id']}},_0x337fe3={};_0x337fe3[_0x8c73('0x38')]=_[_0x8c73('0x3a')](db[_0x8c73('0x34')]['rawAttributes']);_0x337fe3[_0x8c73('0x39')]=_[_0x8c73('0x3a')](_0x4dd1fa[_0x8c73('0x39')]);_0x337fe3[_0x8c73('0x3b')]=_[_0x8c73('0x3c')](_0x337fe3[_0x8c73('0x38')],_0x337fe3[_0x8c73('0x39')]);_0x413bf7['attributes']=_['intersection'](_0x337fe3[_0x8c73('0x38')],qs['fields'](_0x4dd1fa[_0x8c73('0x39')][_0x8c73('0x3e')]));_0x413bf7[_0x8c73('0x3d')]=_0x413bf7[_0x8c73('0x3d')][_0x8c73('0x4e')]?_0x413bf7[_0x8c73('0x3d')]:_0x337fe3[_0x8c73('0x38')];if(_0x4dd1fa['query'][_0x8c73('0x49')]){_0x413bf7[_0x8c73('0x4a')]=[{'all':!![]}];}_0x413bf7=_[_0x8c73('0x46')]({},_0x413bf7,_0x4dd1fa['options']);return db[_0x8c73('0x34')][_0x8c73('0x4f')](_0x413bf7)[_0x8c73('0x2a')](handleEntityNotFound(_0x45c1e7,null))['then'](respondWithResult(_0x45c1e7,null))[_0x8c73('0x4c')](handleError(_0x45c1e7,null));};exports[_0x8c73('0x50')]=function(_0x28f29d,_0xe852d1){return db[_0x8c73('0x34')][_0x8c73('0x50')](_0x28f29d['body'],{})['then'](function(_0x43a4ad){var _0xda6931=_0x28f29d[_0x8c73('0x51')][_0x8c73('0x2b')]({'plain':!![]});if(!_0xda6931)throw new Error(_0x8c73('0x52'));if(_0xda6931[_0x8c73('0x53')]===_0x8c73('0x51')){var _0x16ee93=_0x43a4ad[_0x8c73('0x2b')]({'plain':!![]});var _0x52c806=_0x8c73('0x2c');return db[_0x8c73('0x54')][_0x8c73('0x4f')]({'where':{'name':_0x52c806,'userProfileId':_0xda6931[_0x8c73('0x55')]},'raw':!![]})[_0x8c73('0x2a')](function(_0x5c1a84){if(_0x5c1a84&&_0x5c1a84['autoAssociation']===0x0){return db[_0x8c73('0x56')][_0x8c73('0x50')]({'name':_0x16ee93[_0x8c73('0x30')],'resourceId':_0x16ee93['id'],'type':_0x5c1a84[_0x8c73('0x30')],'sectionId':_0x5c1a84['id']},{})[_0x8c73('0x2a')](function(){return _0x43a4ad;});}else{return _0x43a4ad;}})['catch'](function(_0x1e3043){logger[_0x8c73('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e3043);throw _0x1e3043;});}return _0x43a4ad;})['then'](respondWithResult(_0xe852d1,0xc9))['catch'](handleError(_0xe852d1,null));};exports[_0x8c73('0x28')]=function(_0x13ba7d,_0x459f1f){if(_0x13ba7d[_0x8c73('0x57')]['id']){delete _0x13ba7d['body']['id'];}return db[_0x8c73('0x34')][_0x8c73('0x4f')]({'where':{'id':_0x13ba7d['params']['id']}})['then'](handleEntityNotFound(_0x459f1f,null))[_0x8c73('0x2a')](saveUpdates(_0x13ba7d[_0x8c73('0x57')],null))[_0x8c73('0x2a')](respondWithResult(_0x459f1f,null))[_0x8c73('0x4c')](handleError(_0x459f1f,null));};exports[_0x8c73('0x29')]=function(_0x4b09d8,_0x118aa1){return db[_0x8c73('0x34')][_0x8c73('0x4f')]({'where':{'id':_0x4b09d8[_0x8c73('0x4d')]['id']}})['then'](handleEntityNotFound(_0x118aa1,null))[_0x8c73('0x2a')](removeEntity(_0x118aa1,null))[_0x8c73('0x4c')](handleError(_0x118aa1,null));};exports[_0x8c73('0x58')]=function(_0x20f2f6,_0x34b2de,_0x3e37cd){return db[_0x8c73('0x34')][_0x8c73('0x4f')]({'where':{'id':_0x20f2f6['params']['id']},'attributes':[_0x8c73('0x30'),_0x8c73('0x59'),_0x8c73('0x5a'),_0x8c73('0x5b')],'raw':!![]})[_0x8c73('0x2a')](handleEntityNotFound(_0x34b2de,null))[_0x8c73('0x2a')](function(_0x52f061){if(_0x52f061){if(!fs[_0x8c73('0x5c')](path['join'](config[_0x8c73('0x5d')],_0x8c73('0x5e'),_0x52f061['savename']))){throw new db[(_0x8c73('0x5f'))][(_0x8c73('0x60'))](_0x8c73('0x61'));}if(_0x20f2f6[_0x8c73('0x39')][_0x8c73('0x62')]){return _0x34b2de[_0x8c73('0x2d')](0xc8);}return _0x34b2de['download'](path[_0x8c73('0x63')](config['root'],_0x8c73('0x5e'),_0x52f061[_0x8c73('0x5a')]),util[_0x8c73('0x64')](_0x8c73('0x65'),_0x52f061[_0x8c73('0x59')]||_0x52f061[_0x8c73('0x30')],_0x52f061[_0x8c73('0x5b')][_0x8c73('0x66')]()));}})[_0x8c73('0x4c')](handleError(_0x34b2de,null));};
\ No newline at end of file
index 276a310..aa5b82e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d1c=['request-promise','path','./analyticExtractedReport.attributes','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x5d1c,0x132));var _0xc5d1=function(_0xd3a2f6,_0x3c1a4c){_0xd3a2f6=_0xd3a2f6-0x0;var _0x3f4cb9=_0x5d1c[_0xd3a2f6];return _0x3f4cb9;};'use strict';var _=require(_0xc5d1('0x0'));var util=require(_0xc5d1('0x1'));var logger=require(_0xc5d1('0x2'))(_0xc5d1('0x3'));var moment=require(_0xc5d1('0x4'));var BPromise=require(_0xc5d1('0x5'));var rp=require(_0xc5d1('0x6'));var fs=require('fs');var path=require(_0xc5d1('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc5d1('0x8'));module['exports']=function(_0x4ed279,_0x50754){return _0x4ed279[_0xc5d1('0x9')](_0xc5d1('0xa'),attributes,{'tableName':_0xc5d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95d0=['define','AnalyticExtractedReport','analytics_extracted_reports','lodash','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes'];(function(_0x16d4a3,_0x10f630){var _0x3f3c04=function(_0x32be71){while(--_0x32be71){_0x16d4a3['push'](_0x16d4a3['shift']());}};_0x3f3c04(++_0x10f630);}(_0x95d0,0xad));var _0x095d=function(_0x182224,_0x2542c6){_0x182224=_0x182224-0x0;var _0x409b05=_0x95d0[_0x182224];return _0x409b05;};'use strict';var _=require(_0x095d('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x095d('0x1'));var rp=require(_0x095d('0x2'));var fs=require('fs');var path=require(_0x095d('0x3'));var rimraf=require(_0x095d('0x4'));var config=require(_0x095d('0x5'));var attributes=require(_0x095d('0x6'));module['exports']=function(_0x4ac31b,_0xa366){return _0x4ac31b[_0x095d('0x7')](_0x095d('0x8'),attributes,{'tableName':_0x095d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de9e336..2d03e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1969=['catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x156370,_0x376233){var _0x30686f=function(_0x28b1b3){while(--_0x28b1b3){_0x156370['push'](_0x156370['shift']());}};_0x30686f(++_0x376233);}(_0x1969,0xa2));var _0x9196=function(_0x323119,_0xe289e2){_0x323119=_0x323119-0x0;var _0x39e169=_0x1969[_0x323119];return _0x39e169;};'use strict';var _=require(_0x9196('0x0'));var util=require(_0x9196('0x1'));var moment=require(_0x9196('0x2'));var BPromise=require(_0x9196('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9196('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9196('0x5'));var logger=require(_0x9196('0x6'))(_0x9196('0x7'));var config=require(_0x9196('0x8'));var jayson=require(_0x9196('0x9'));var client=jayson['client'][_0x9196('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x279373,_0x3ca694,_0x5911d1){return new BPromise(function(_0x5caa26,_0x307f24){return client[_0x9196('0xb')](_0x279373,_0x5911d1)['then'](function(_0x8011da){logger[_0x9196('0xc')](_0x9196('0xd'),_0x3ca694,_0x9196('0xe'));logger[_0x9196('0xf')](_0x9196('0x10'),_0x3ca694,_0x9196('0xe'),JSON[_0x9196('0x11')](_0x8011da));if(_0x8011da[_0x9196('0x12')]){if(_0x8011da['error'][_0x9196('0x13')]===0x1f4){logger[_0x9196('0x12')](_0x9196('0xd'),_0x3ca694,_0x8011da[_0x9196('0x12')][_0x9196('0x14')]);return _0x307f24(_0x8011da[_0x9196('0x12')][_0x9196('0x14')]);}logger[_0x9196('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x3ca694,_0x8011da[_0x9196('0x12')][_0x9196('0x14')]);return _0x5caa26(_0x8011da[_0x9196('0x12')][_0x9196('0x14')]);}else{logger[_0x9196('0xc')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x3ca694,_0x9196('0xe'));_0x5caa26(_0x8011da[_0x9196('0x15')][_0x9196('0x14')]);}})[_0x9196('0x16')](function(_0x452e69){logger[_0x9196('0x12')](_0x9196('0xd'),_0x3ca694,_0x452e69);_0x307f24(_0x452e69);});});}
\ No newline at end of file
+var _0x2572=['AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then'];(function(_0x3060e3,_0x14f2c6){var _0x497d2c=function(_0x2a274a){while(--_0x2a274a){_0x3060e3['push'](_0x3060e3['shift']());}};_0x497d2c(++_0x14f2c6);}(_0x2572,0x110));var _0x2257=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x2572[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x2257('0x0'));var util=require(_0x2257('0x1'));var moment=require(_0x2257('0x2'));var BPromise=require(_0x2257('0x3'));var rs=require(_0x2257('0x4'));var fs=require('fs');var Redis=require(_0x2257('0x5'));var db=require(_0x2257('0x6'))['db'];var utils=require(_0x2257('0x7'));var logger=require(_0x2257('0x8'))('rpc');var config=require(_0x2257('0x9'));var jayson=require(_0x2257('0xa'));var client=jayson[_0x2257('0xb')][_0x2257('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x26b2c6,_0x339619,_0x74aec6){return new BPromise(function(_0x380460,_0xee7249){return client['request'](_0x26b2c6,_0x74aec6)[_0x2257('0xd')](function(_0x3e088a){logger['info'](_0x2257('0xe'),_0x339619,_0x2257('0xf'));logger[_0x2257('0x10')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x339619,_0x2257('0xf'),JSON[_0x2257('0x11')](_0x3e088a));if(_0x3e088a[_0x2257('0x12')]){if(_0x3e088a[_0x2257('0x12')]['code']===0x1f4){logger[_0x2257('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x339619,_0x3e088a['error'][_0x2257('0x13')]);return _0xee7249(_0x3e088a[_0x2257('0x12')][_0x2257('0x13')]);}logger[_0x2257('0x12')](_0x2257('0xe'),_0x339619,_0x3e088a[_0x2257('0x12')][_0x2257('0x13')]);return _0x380460(_0x3e088a['error']['message']);}else{logger[_0x2257('0x14')](_0x2257('0xe'),_0x339619,_0x2257('0xf'));_0x380460(_0x3e088a[_0x2257('0x15')]['message']);}})['catch'](function(_0x330216){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0x339619,_0x330216);_0xee7249(_0x330216);});});}
\ No newline at end of file
index 4f0deaa..069f2f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc427=['./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x3340d1,_0x3b90a4){var _0x8f4406=function(_0x5ef5b3){while(--_0x5ef5b3){_0x3340d1['push'](_0x3340d1['shift']());}};_0x8f4406(++_0x3b90a4);}(_0xc427,0x19d));var _0x7c42=function(_0x5bf6aa,_0x41f715){_0x5bf6aa=_0x5bf6aa-0x0;var _0x537be9=_0xc427[_0x5bf6aa];return _0x537be9;};'use strict';var multer=require(_0x7c42('0x0'));var util=require('util');var path=require(_0x7c42('0x1'));var timeout=require(_0x7c42('0x2'));var express=require(_0x7c42('0x3'));var router=express['Router']();var fs_extra=require(_0x7c42('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7c42('0x5'));var config=require(_0x7c42('0x6'));var controller=require(_0x7c42('0x7'));router[_0x7c42('0x8')]('/',auth[_0x7c42('0x9')](),controller[_0x7c42('0xa')]);router[_0x7c42('0x8')](_0x7c42('0xb'),auth['isAuthenticated'](),controller[_0x7c42('0xc')]);router[_0x7c42('0x8')](_0x7c42('0xd'),auth[_0x7c42('0x9')](),controller[_0x7c42('0xe')]);router[_0x7c42('0xf')]('/',auth[_0x7c42('0x9')](),controller[_0x7c42('0x10')]);router['put'](_0x7c42('0xb'),auth[_0x7c42('0x9')](),controller[_0x7c42('0x11')]);router[_0x7c42('0x12')](_0x7c42('0xb'),auth[_0x7c42('0x9')](),controller[_0x7c42('0x13')]);module[_0x7c42('0x14')]=router;
\ No newline at end of file
+var _0xeb1d=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./analyticExtractedReport.controller','isAuthenticated','index','get','post','create','put','/:id','update','delete','destroy','exports'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xeb1d,0x78));var _0xdeb1=function(_0x156a5a,_0x25f590){_0x156a5a=_0x156a5a-0x0;var _0x5a0a16=_0xeb1d[_0x156a5a];return _0x5a0a16;};'use strict';var multer=require(_0xdeb1('0x0'));var util=require(_0xdeb1('0x1'));var path=require(_0xdeb1('0x2'));var timeout=require(_0xdeb1('0x3'));var express=require(_0xdeb1('0x4'));var router=express['Router']();var fs_extra=require(_0xdeb1('0x5'));var auth=require(_0xdeb1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdeb1('0x7'));var controller=require(_0xdeb1('0x8'));router['get']('/',auth[_0xdeb1('0x9')](),controller[_0xdeb1('0xa')]);router[_0xdeb1('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xdeb1('0xb')]('/:id/download',auth[_0xdeb1('0x9')](),controller['download']);router[_0xdeb1('0xc')]('/',auth[_0xdeb1('0x9')](),controller[_0xdeb1('0xd')]);router[_0xdeb1('0xe')](_0xdeb1('0xf'),auth[_0xdeb1('0x9')](),controller[_0xdeb1('0x10')]);router[_0xdeb1('0x11')](_0xdeb1('0xf'),auth[_0xdeb1('0x9')](),controller[_0xdeb1('0x12')]);module[_0xdeb1('0x13')]=router;
\ No newline at end of file
index 3c5c867..c6c9c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ef=['STRING','BOOLEAN','exports'];(function(_0x4ed7,_0x14f3ba){var _0x584b32=function(_0x3203f4){while(--_0x3203f4){_0x4ed7['push'](_0x4ed7['shift']());}};_0x584b32(++_0x14f3ba);}(_0xc4ef,0x185));var _0xfc4e=function(_0x5a7e78,_0x400b57){_0x5a7e78=_0x5a7e78-0x0;var _0xa8d4a1=_0xc4ef[_0x5a7e78];return _0xa8d4a1;};'use strict';var Sequelize=require('sequelize');module[_0xfc4e('0x0')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xfc4e('0x1')]},'function':{'type':Sequelize[_0xfc4e('0x1')]},'format':{'type':Sequelize[_0xfc4e('0x1')]},'groupBy':{'type':Sequelize[_0xfc4e('0x2')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xfc4e('0x1')]},'custom':{'type':Sequelize[_0xfc4e('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdf7d=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdf7d,0x15f));var _0xddf7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xdf7d[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0xddf7('0x0'));module[_0xddf7('0x1')]={'field':{'type':Sequelize[_0xddf7('0x2')]},'alias':{'type':Sequelize[_0xddf7('0x3')]},'function':{'type':Sequelize[_0xddf7('0x3')]},'format':{'type':Sequelize[_0xddf7('0x3')]},'groupBy':{'type':Sequelize[_0xddf7('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xddf7('0x3')]},'custom':{'type':Sequelize[_0xddf7('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 563b8d8..bef23cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e71=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','status','error','stack','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','includeAll','include','rows','show','params','intersection','options','find','catch','create','body','bulkCreate','update','destroy','bulkDestroy','addFields','AnalyticCustomReport','sequelize','findAll','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','squel','crypto'];(function(_0x1cee4b,_0x3a9da0){var _0x4f148c=function(_0x35f68a){while(--_0x35f68a){_0x1cee4b['push'](_0x1cee4b['shift']());}};_0x4f148c(++_0x3a9da0);}(_0x5e71,0x189));var _0x15e7=function(_0x2ef006,_0x355a13){_0x2ef006=_0x2ef006-0x0;var _0x50930b=_0x5e71[_0x2ef006];return _0x50930b;};'use strict';var emlformat=require(_0x15e7('0x0'));var rimraf=require(_0x15e7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x15e7('0x2'));var rp=require(_0x15e7('0x3'));var moment=require(_0x15e7('0x4'));var BPromise=require(_0x15e7('0x5'));var Mustache=require(_0x15e7('0x6'));var util=require(_0x15e7('0x7'));var path=require(_0x15e7('0x8'));var sox=require('sox');var csv=require(_0x15e7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x15e7('0xa'));var crypto=require(_0x15e7('0xb'));var jsforce=require(_0x15e7('0xc'));var deskjs=require(_0x15e7('0xd'));var toCsv=require(_0x15e7('0x9'));var querystring=require(_0x15e7('0xe'));var Papa=require(_0x15e7('0xf'));var Redis=require(_0x15e7('0x10'));var authService=require(_0x15e7('0x11'));var qs=require(_0x15e7('0x12'));var as=require(_0x15e7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x15e7('0x14'))(_0x15e7('0x15'));var utils=require('../../config/utils');var config=require(_0x15e7('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x15e7('0x17'))['db'];function respondWithStatusCode(_0x512015,_0x538d6e){_0x538d6e=_0x538d6e||0xcc;return function(_0x24e16){if(_0x24e16){return _0x512015[_0x15e7('0x18')](_0x538d6e);}return _0x512015['status'](_0x538d6e)[_0x15e7('0x19')]();};}function respondWithResult(_0x2c799e,_0x43ac84){_0x43ac84=_0x43ac84||0xc8;return function(_0xe15254){if(_0xe15254){return _0x2c799e['status'](_0x43ac84)[_0x15e7('0x1a')](_0xe15254);}};}function respondWithFilteredResult(_0x376114,_0x2991d0){return function(_0x514f8f){if(_0x514f8f){var _0x54df75=typeof _0x2991d0[_0x15e7('0x1b')]===_0x15e7('0x1c')&&typeof _0x2991d0[_0x15e7('0x1d')]==='undefined';var _0x52c52a=_0x514f8f[_0x15e7('0x1e')];var _0x5b17ce=_0x54df75?0x0:_0x2991d0[_0x15e7('0x1b')];var _0x20ee00=_0x54df75?_0x514f8f['count']:_0x2991d0[_0x15e7('0x1b')]+_0x2991d0['limit'];var _0x5bd34a;if(_0x20ee00>=_0x52c52a){_0x20ee00=_0x52c52a;_0x5bd34a=0xc8;}else{_0x5bd34a=0xce;}_0x376114['status'](_0x5bd34a);return _0x376114[_0x15e7('0x1f')](_0x15e7('0x20'),_0x5b17ce+'-'+_0x20ee00+'/'+_0x52c52a)[_0x15e7('0x1a')](_0x514f8f);}return null;};}function patchUpdates(_0x5dee75){return function(_0x38f89b){try{jsonpatch[_0x15e7('0x21')](_0x38f89b,_0x5dee75,!![]);}catch(_0x27bad9){return BPromise[_0x15e7('0x22')](_0x27bad9);}return _0x38f89b[_0x15e7('0x23')]();};}function saveUpdates(_0x11686f,_0x499fcf){return function(_0x331ab1){if(_0x331ab1){return _0x331ab1['update'](_0x11686f)[_0x15e7('0x24')](function(_0x598a13){return _0x598a13;});}return null;};}function removeEntity(_0x3a1ce8,_0x3840ac){return function(_0x50239f){if(_0x50239f){return _0x50239f['destroy']()[_0x15e7('0x24')](function(){_0x3a1ce8[_0x15e7('0x25')](0xcc)[_0x15e7('0x19')]();});}};}function handleEntityNotFound(_0x44e46d,_0x3600ea){return function(_0x2bfaeb){if(!_0x2bfaeb){_0x44e46d['sendStatus'](0x194);}return _0x2bfaeb;};}function handleError(_0x31303a,_0xf360db){_0xf360db=_0xf360db||0x1f4;return function(_0x7123f0){logger[_0x15e7('0x26')](_0x7123f0[_0x15e7('0x27')]);if(_0x7123f0[_0x15e7('0x28')]){delete _0x7123f0[_0x15e7('0x28')];}_0x31303a['status'](_0xf360db)[_0x15e7('0x29')](_0x7123f0);};}exports['index']=function(_0x4885b2,_0x37bca9){var _0x256381={},_0x29e89f={},_0x5c4a83={'count':0x0,'rows':[]};var _0x171eaa=_[_0x15e7('0x2a')](db[_0x15e7('0x2b')][_0x15e7('0x2c')],function(_0x1d4ee6){return{'name':_0x1d4ee6[_0x15e7('0x2d')],'type':_0x1d4ee6[_0x15e7('0x2e')][_0x15e7('0x2f')]};});_0x29e89f[_0x15e7('0x30')]=_[_0x15e7('0x2a')](_0x171eaa,'name');_0x29e89f[_0x15e7('0x31')]=_[_0x15e7('0x32')](_0x4885b2[_0x15e7('0x31')]);_0x29e89f[_0x15e7('0x33')]=_['intersection'](_0x29e89f[_0x15e7('0x30')],_0x29e89f['query']);_0x256381[_0x15e7('0x34')]=_['intersection'](_0x29e89f['model'],qs[_0x15e7('0x35')](_0x4885b2[_0x15e7('0x31')]['fields']));_0x256381[_0x15e7('0x34')]=_0x256381['attributes'][_0x15e7('0x36')]?_0x256381['attributes']:_0x29e89f['model'];if(!_0x4885b2[_0x15e7('0x31')][_0x15e7('0x37')]('nolimit')){_0x256381[_0x15e7('0x1d')]=qs[_0x15e7('0x1d')](_0x4885b2[_0x15e7('0x31')]['limit']);_0x256381['offset']=qs[_0x15e7('0x1b')](_0x4885b2[_0x15e7('0x31')][_0x15e7('0x1b')]);}_0x256381[_0x15e7('0x38')]=qs[_0x15e7('0x39')](_0x4885b2[_0x15e7('0x31')][_0x15e7('0x39')]);_0x256381['where']=qs['filters'](_[_0x15e7('0x3a')](_0x4885b2['query'],_0x29e89f['filters']),_0x171eaa);if(_0x4885b2[_0x15e7('0x31')][_0x15e7('0x3b')]){_0x256381[_0x15e7('0x3c')]=_[_0x15e7('0x3d')](_0x256381['where'],{'$or':_[_0x15e7('0x2a')](_0x171eaa,function(_0x2412be){if(_0x2412be['type']!=='VIRTUAL'){var _0x25928c={};_0x25928c[_0x2412be[_0x15e7('0x28')]]={'$like':'%'+_0x4885b2[_0x15e7('0x31')]['filter']+'%'};return _0x25928c;}})});}_0x256381=_[_0x15e7('0x3d')]({},_0x256381,_0x4885b2['options']);var _0x5f1737={'where':_0x256381[_0x15e7('0x3c')]};return db[_0x15e7('0x2b')][_0x15e7('0x1e')](_0x5f1737)[_0x15e7('0x24')](function(_0x1f181c){_0x5c4a83[_0x15e7('0x1e')]=_0x1f181c;if(_0x4885b2[_0x15e7('0x31')][_0x15e7('0x3e')]){_0x256381[_0x15e7('0x3f')]=[{'all':!![]}];}return db[_0x15e7('0x2b')]['findAll'](_0x256381);})['then'](function(_0x7b9665){_0x5c4a83[_0x15e7('0x40')]=_0x7b9665;return _0x5c4a83;})[_0x15e7('0x24')](respondWithFilteredResult(_0x37bca9,_0x256381))['catch'](handleError(_0x37bca9,null));};exports[_0x15e7('0x41')]=function(_0x227831,_0x594a73){var _0xdb4ecd={'raw':![],'where':{'id':_0x227831[_0x15e7('0x42')]['id']}},_0x56ebe8={};_0x56ebe8[_0x15e7('0x30')]=_[_0x15e7('0x32')](db[_0x15e7('0x2b')][_0x15e7('0x2c')]);_0x56ebe8[_0x15e7('0x31')]=_[_0x15e7('0x32')](_0x227831['query']);_0x56ebe8[_0x15e7('0x33')]=_[_0x15e7('0x43')](_0x56ebe8['model'],_0x56ebe8[_0x15e7('0x31')]);_0xdb4ecd[_0x15e7('0x34')]=_['intersection'](_0x56ebe8[_0x15e7('0x30')],qs[_0x15e7('0x35')](_0x227831[_0x15e7('0x31')][_0x15e7('0x35')]));_0xdb4ecd[_0x15e7('0x34')]=_0xdb4ecd['attributes'][_0x15e7('0x36')]?_0xdb4ecd[_0x15e7('0x34')]:_0x56ebe8[_0x15e7('0x30')];if(_0x227831[_0x15e7('0x31')]['includeAll']){_0xdb4ecd[_0x15e7('0x3f')]=[{'all':!![]}];}_0xdb4ecd=_[_0x15e7('0x3d')]({},_0xdb4ecd,_0x227831[_0x15e7('0x44')]);return db[_0x15e7('0x2b')][_0x15e7('0x45')](_0xdb4ecd)[_0x15e7('0x24')](handleEntityNotFound(_0x594a73,null))[_0x15e7('0x24')](respondWithResult(_0x594a73,null))[_0x15e7('0x46')](handleError(_0x594a73,null));};exports['create']=function(_0x587ccc,_0x5a7aa4){return db[_0x15e7('0x2b')][_0x15e7('0x47')](_0x587ccc[_0x15e7('0x48')],{})['then'](respondWithResult(_0x5a7aa4,0xc9))[_0x15e7('0x46')](handleError(_0x5a7aa4,null));};exports[_0x15e7('0x49')]=function(_0x2f68ec,_0x29ea79){return db['AnalyticFieldReport'][_0x15e7('0x49')](_0x2f68ec['body'],{'raw':![],'individualHooks':!![]})[_0x15e7('0x24')](respondWithResult(_0x29ea79,0xc9))[_0x15e7('0x46')](handleError(_0x29ea79,null));};exports[_0x15e7('0x4a')]=function(_0x23be1f,_0x5705dd){if(_0x23be1f[_0x15e7('0x48')]['id']){delete _0x23be1f[_0x15e7('0x48')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x23be1f['params']['id']}})[_0x15e7('0x24')](handleEntityNotFound(_0x5705dd,null))[_0x15e7('0x24')](saveUpdates(_0x23be1f[_0x15e7('0x48')],null))[_0x15e7('0x24')](respondWithResult(_0x5705dd,null))[_0x15e7('0x46')](handleError(_0x5705dd,null));};exports[_0x15e7('0x4b')]=function(_0x2a5015,_0x1d80e7){return db[_0x15e7('0x2b')][_0x15e7('0x45')]({'where':{'id':_0x2a5015[_0x15e7('0x42')]['id']}})[_0x15e7('0x24')](handleEntityNotFound(_0x1d80e7,null))['then'](removeEntity(_0x1d80e7,null))['catch'](handleError(_0x1d80e7,null));};exports[_0x15e7('0x4c')]=function(_0x5424fe,_0x55c8df){return db[_0x15e7('0x2b')][_0x15e7('0x4b')]({'where':{'id':_0x5424fe[_0x15e7('0x31')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0x15e7('0x24')](respondWithResult(_0x55c8df,0xcc))[_0x15e7('0x46')](handleError(_0x55c8df,null));};exports[_0x15e7('0x4d')]=function(_0x148549,_0x12c9ee,_0xe0de8c){return db[_0x15e7('0x4e')]['findOne']({'where':{'id':_0x148549[_0x15e7('0x42')]['id']}})[_0x15e7('0x24')](handleEntityNotFound(_0x12c9ee,null))[_0x15e7('0x24')](function(_0x140288){if(_0x140288){return db[_0x15e7('0x4f')]['transaction'](function(_0x4d636b){return db[_0x15e7('0x2b')]['destroy']({'where':{'CustomReportId':_0x148549[_0x15e7('0x42')]['id']},'transaction':_0x4d636b})[_0x15e7('0x24')](function(_0x55beb7){var _0x431576=_['map'](_0x148549['body'],function(_0x175b55){delete _0x175b55['id'];_0x175b55['CustomReportId']=_0x148549[_0x15e7('0x42')]['id'];return _0x175b55;});return db['AnalyticFieldReport'][_0x15e7('0x49')](_0x431576,{'transaction':_0x4d636b});});})[_0x15e7('0x24')](function(){return db['AnalyticFieldReport'][_0x15e7('0x50')]({'where':{'CustomReportId':_0x148549['params']['id']}});});}})[_0x15e7('0x24')](respondWithResult(_0x12c9ee,null))['catch'](handleError(_0x12c9ee,null));};
\ No newline at end of file
+var _0xcf76=['send','index','map','AnalyticFieldReport','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','params','length','catch','create','body','bulkCreate','update','find','bulkDestroy','ids','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','then','destroy','error','name'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xcf76,0x15b));var _0x6cf7=function(_0x102299,_0x35ef65){_0x102299=_0x102299-0x0;var _0x5ea176=_0xcf76[_0x102299];return _0x5ea176;};'use strict';var emlformat=require(_0x6cf7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6cf7('0x1'));var jsonpatch=require(_0x6cf7('0x2'));var rp=require(_0x6cf7('0x3'));var moment=require(_0x6cf7('0x4'));var BPromise=require(_0x6cf7('0x5'));var Mustache=require('mustache');var util=require(_0x6cf7('0x6'));var path=require('path');var sox=require(_0x6cf7('0x7'));var csv=require(_0x6cf7('0x8'));var ejs=require(_0x6cf7('0x9'));var fs=require('fs');var fs_extra=require(_0x6cf7('0xa'));var _=require(_0x6cf7('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6cf7('0xc'));var deskjs=require(_0x6cf7('0xd'));var toCsv=require(_0x6cf7('0x8'));var querystring=require(_0x6cf7('0xe'));var Papa=require(_0x6cf7('0xf'));var Redis=require(_0x6cf7('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x6cf7('0x11'));var as=require(_0x6cf7('0x12'));var hardwareService=require(_0x6cf7('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x6cf7('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x6cf7('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f8798,_0x32be41){_0x32be41=_0x32be41||0xcc;return function(_0x396652){if(_0x396652){return _0x1f8798[_0x6cf7('0x16')](_0x32be41);}return _0x1f8798[_0x6cf7('0x17')](_0x32be41)[_0x6cf7('0x18')]();};}function respondWithResult(_0x1a4de3,_0xda253c){_0xda253c=_0xda253c||0xc8;return function(_0x139a03){if(_0x139a03){return _0x1a4de3[_0x6cf7('0x17')](_0xda253c)['json'](_0x139a03);}};}function respondWithFilteredResult(_0x3409d5,_0x953c48){return function(_0x447373){if(_0x447373){var _0x408b9d=typeof _0x953c48['offset']===_0x6cf7('0x19')&&typeof _0x953c48[_0x6cf7('0x1a')]===_0x6cf7('0x19');var _0xf2eec4=_0x447373[_0x6cf7('0x1b')];var _0x3c04a6=_0x408b9d?0x0:_0x953c48['offset'];var _0x4a1305=_0x408b9d?_0x447373[_0x6cf7('0x1b')]:_0x953c48[_0x6cf7('0x1c')]+_0x953c48[_0x6cf7('0x1a')];var _0x26a751;if(_0x4a1305>=_0xf2eec4){_0x4a1305=_0xf2eec4;_0x26a751=0xc8;}else{_0x26a751=0xce;}_0x3409d5[_0x6cf7('0x17')](_0x26a751);return _0x3409d5[_0x6cf7('0x1d')](_0x6cf7('0x1e'),_0x3c04a6+'-'+_0x4a1305+'/'+_0xf2eec4)[_0x6cf7('0x1f')](_0x447373);}return null;};}function patchUpdates(_0x5173e1){return function(_0x1c76f3){try{jsonpatch[_0x6cf7('0x20')](_0x1c76f3,_0x5173e1,!![]);}catch(_0x2c49f1){return BPromise[_0x6cf7('0x21')](_0x2c49f1);}return _0x1c76f3['save']();};}function saveUpdates(_0x4a2039,_0x1eb0ed){return function(_0x16e0ef){if(_0x16e0ef){return _0x16e0ef['update'](_0x4a2039)[_0x6cf7('0x22')](function(_0x2f4fad){return _0x2f4fad;});}return null;};}function removeEntity(_0x2ff9e9,_0x1bf2fc){return function(_0x4a2020){if(_0x4a2020){return _0x4a2020[_0x6cf7('0x23')]()[_0x6cf7('0x22')](function(){_0x2ff9e9[_0x6cf7('0x17')](0xcc)[_0x6cf7('0x18')]();});}};}function handleEntityNotFound(_0x748172,_0x58d6cc){return function(_0x3b8240){if(!_0x3b8240){_0x748172[_0x6cf7('0x16')](0x194);}return _0x3b8240;};}function handleError(_0x5d2c23,_0x439eed){_0x439eed=_0x439eed||0x1f4;return function(_0x411780){logger[_0x6cf7('0x24')](_0x411780['stack']);if(_0x411780[_0x6cf7('0x25')]){delete _0x411780[_0x6cf7('0x25')];}_0x5d2c23[_0x6cf7('0x17')](_0x439eed)[_0x6cf7('0x26')](_0x411780);};}exports[_0x6cf7('0x27')]=function(_0x5d8292,_0x152b10){var _0x1ce5cb={},_0x7e2086={},_0x2b7f66={'count':0x0,'rows':[]};var _0x39f454=_[_0x6cf7('0x28')](db[_0x6cf7('0x29')][_0x6cf7('0x2a')],function(_0x17da27){return{'name':_0x17da27[_0x6cf7('0x2b')],'type':_0x17da27['type']['key']};});_0x7e2086[_0x6cf7('0x2c')]=_[_0x6cf7('0x28')](_0x39f454,_0x6cf7('0x25'));_0x7e2086[_0x6cf7('0x2d')]=_[_0x6cf7('0x2e')](_0x5d8292[_0x6cf7('0x2d')]);_0x7e2086[_0x6cf7('0x2f')]=_[_0x6cf7('0x30')](_0x7e2086[_0x6cf7('0x2c')],_0x7e2086[_0x6cf7('0x2d')]);_0x1ce5cb['attributes']=_[_0x6cf7('0x30')](_0x7e2086[_0x6cf7('0x2c')],qs[_0x6cf7('0x31')](_0x5d8292[_0x6cf7('0x2d')][_0x6cf7('0x31')]));_0x1ce5cb[_0x6cf7('0x32')]=_0x1ce5cb[_0x6cf7('0x32')]['length']?_0x1ce5cb[_0x6cf7('0x32')]:_0x7e2086['model'];if(!_0x5d8292['query'][_0x6cf7('0x33')](_0x6cf7('0x34'))){_0x1ce5cb['limit']=qs[_0x6cf7('0x1a')](_0x5d8292[_0x6cf7('0x2d')][_0x6cf7('0x1a')]);_0x1ce5cb[_0x6cf7('0x1c')]=qs[_0x6cf7('0x1c')](_0x5d8292[_0x6cf7('0x2d')][_0x6cf7('0x1c')]);}_0x1ce5cb['order']=qs[_0x6cf7('0x35')](_0x5d8292[_0x6cf7('0x2d')][_0x6cf7('0x35')]);_0x1ce5cb[_0x6cf7('0x36')]=qs[_0x6cf7('0x2f')](_['pick'](_0x5d8292[_0x6cf7('0x2d')],_0x7e2086['filters']),_0x39f454);if(_0x5d8292[_0x6cf7('0x2d')]['filter']){_0x1ce5cb['where']=_[_0x6cf7('0x37')](_0x1ce5cb[_0x6cf7('0x36')],{'$or':_[_0x6cf7('0x28')](_0x39f454,function(_0x3ce7d1){if(_0x3ce7d1[_0x6cf7('0x38')]!==_0x6cf7('0x39')){var _0x1df349={};_0x1df349[_0x3ce7d1[_0x6cf7('0x25')]]={'$like':'%'+_0x5d8292['query'][_0x6cf7('0x3a')]+'%'};return _0x1df349;}})});}_0x1ce5cb=_[_0x6cf7('0x37')]({},_0x1ce5cb,_0x5d8292[_0x6cf7('0x3b')]);var _0x3e9663={'where':_0x1ce5cb[_0x6cf7('0x36')]};return db['AnalyticFieldReport'][_0x6cf7('0x1b')](_0x3e9663)[_0x6cf7('0x22')](function(_0x474d95){_0x2b7f66[_0x6cf7('0x1b')]=_0x474d95;if(_0x5d8292[_0x6cf7('0x2d')][_0x6cf7('0x3c')]){_0x1ce5cb[_0x6cf7('0x3d')]=[{'all':!![]}];}return db[_0x6cf7('0x29')][_0x6cf7('0x3e')](_0x1ce5cb);})[_0x6cf7('0x22')](function(_0x208fb1){_0x2b7f66['rows']=_0x208fb1;return _0x2b7f66;})[_0x6cf7('0x22')](respondWithFilteredResult(_0x152b10,_0x1ce5cb))['catch'](handleError(_0x152b10,null));};exports['show']=function(_0x26fdf0,_0x5d5f28){var _0x3d9aae={'raw':![],'where':{'id':_0x26fdf0[_0x6cf7('0x3f')]['id']}},_0x227232={};_0x227232['model']=_['keys'](db['AnalyticFieldReport'][_0x6cf7('0x2a')]);_0x227232[_0x6cf7('0x2d')]=_[_0x6cf7('0x2e')](_0x26fdf0['query']);_0x227232[_0x6cf7('0x2f')]=_[_0x6cf7('0x30')](_0x227232['model'],_0x227232['query']);_0x3d9aae['attributes']=_[_0x6cf7('0x30')](_0x227232['model'],qs[_0x6cf7('0x31')](_0x26fdf0['query']['fields']));_0x3d9aae[_0x6cf7('0x32')]=_0x3d9aae[_0x6cf7('0x32')][_0x6cf7('0x40')]?_0x3d9aae[_0x6cf7('0x32')]:_0x227232['model'];if(_0x26fdf0[_0x6cf7('0x2d')]['includeAll']){_0x3d9aae[_0x6cf7('0x3d')]=[{'all':!![]}];}_0x3d9aae=_[_0x6cf7('0x37')]({},_0x3d9aae,_0x26fdf0['options']);return db[_0x6cf7('0x29')]['find'](_0x3d9aae)[_0x6cf7('0x22')](handleEntityNotFound(_0x5d5f28,null))[_0x6cf7('0x22')](respondWithResult(_0x5d5f28,null))[_0x6cf7('0x41')](handleError(_0x5d5f28,null));};exports[_0x6cf7('0x42')]=function(_0x15881b,_0x458a64){return db[_0x6cf7('0x29')][_0x6cf7('0x42')](_0x15881b[_0x6cf7('0x43')],{})[_0x6cf7('0x22')](respondWithResult(_0x458a64,0xc9))[_0x6cf7('0x41')](handleError(_0x458a64,null));};exports[_0x6cf7('0x44')]=function(_0xa8620f,_0x2bb62d){return db[_0x6cf7('0x29')][_0x6cf7('0x44')](_0xa8620f[_0x6cf7('0x43')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2bb62d,0xc9))[_0x6cf7('0x41')](handleError(_0x2bb62d,null));};exports[_0x6cf7('0x45')]=function(_0x17597,_0x2d7c16){if(_0x17597[_0x6cf7('0x43')]['id']){delete _0x17597[_0x6cf7('0x43')]['id'];}return db[_0x6cf7('0x29')][_0x6cf7('0x46')]({'where':{'id':_0x17597['params']['id']}})[_0x6cf7('0x22')](handleEntityNotFound(_0x2d7c16,null))[_0x6cf7('0x22')](saveUpdates(_0x17597[_0x6cf7('0x43')],null))[_0x6cf7('0x22')](respondWithResult(_0x2d7c16,null))[_0x6cf7('0x41')](handleError(_0x2d7c16,null));};exports['destroy']=function(_0x3d12bf,_0x5e6be0){return db[_0x6cf7('0x29')][_0x6cf7('0x46')]({'where':{'id':_0x3d12bf[_0x6cf7('0x3f')]['id']}})[_0x6cf7('0x22')](handleEntityNotFound(_0x5e6be0,null))[_0x6cf7('0x22')](removeEntity(_0x5e6be0,null))[_0x6cf7('0x41')](handleError(_0x5e6be0,null));};exports[_0x6cf7('0x47')]=function(_0x4d5a8a,_0x3c37f7){return db[_0x6cf7('0x29')][_0x6cf7('0x23')]({'where':{'id':_0x4d5a8a[_0x6cf7('0x2d')][_0x6cf7('0x48')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3c37f7,0xcc))[_0x6cf7('0x41')](handleError(_0x3c37f7,null));};exports['addFields']=function(_0xfcf6ee,_0x3dd04f,_0x43bfd8){return db[_0x6cf7('0x49')][_0x6cf7('0x4a')]({'where':{'id':_0xfcf6ee[_0x6cf7('0x3f')]['id']}})[_0x6cf7('0x22')](handleEntityNotFound(_0x3dd04f,null))[_0x6cf7('0x22')](function(_0x5a3254){if(_0x5a3254){return db[_0x6cf7('0x4b')][_0x6cf7('0x4c')](function(_0x39c822){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0xfcf6ee[_0x6cf7('0x3f')]['id']},'transaction':_0x39c822})[_0x6cf7('0x22')](function(_0x32268c){var _0x13f9e6=_[_0x6cf7('0x28')](_0xfcf6ee[_0x6cf7('0x43')],function(_0x596b0f){delete _0x596b0f['id'];_0x596b0f['CustomReportId']=_0xfcf6ee[_0x6cf7('0x3f')]['id'];return _0x596b0f;});return db['AnalyticFieldReport'][_0x6cf7('0x44')](_0x13f9e6,{'transaction':_0x39c822});});})[_0x6cf7('0x22')](function(){return db[_0x6cf7('0x29')][_0x6cf7('0x3e')]({'where':{'CustomReportId':_0xfcf6ee[_0x6cf7('0x3f')]['id']}});});}})['then'](respondWithResult(_0x3dd04f,null))[_0x6cf7('0x41')](handleError(_0x3dd04f,null));};
\ No newline at end of file
index 32ca5a3..ce0dcef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd588=['request-promise','path','rimraf','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3acee8,_0x5f3924){var _0x5046cc=function(_0x338def){while(--_0x338def){_0x3acee8['push'](_0x3acee8['shift']());}};_0x5046cc(++_0x5f3924);}(_0xd588,0xbd));var _0x8d58=function(_0x318cbe,_0x5c349b){_0x318cbe=_0x318cbe-0x0;var _0x323412=_0xd588[_0x318cbe];return _0x323412;};'use strict';var _=require(_0x8d58('0x0'));var util=require(_0x8d58('0x1'));var logger=require(_0x8d58('0x2'))(_0x8d58('0x3'));var moment=require(_0x8d58('0x4'));var BPromise=require(_0x8d58('0x5'));var rp=require(_0x8d58('0x6'));var fs=require('fs');var path=require(_0x8d58('0x7'));var rimraf=require(_0x8d58('0x8'));var config=require('../../config/environment');var attributes=require('./analyticFieldReport.attributes');module[_0x8d58('0x9')]=function(_0x539588,_0x3bce6a){return _0x539588[_0x8d58('0xa')](_0x8d58('0xb'),attributes,{'tableName':_0x8d58('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd07=['analytics_report_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','define'];(function(_0x84653a,_0x3710e6){var _0x17662f=function(_0x640b1f){while(--_0x640b1f){_0x84653a['push'](_0x84653a['shift']());}};_0x17662f(++_0x3710e6);}(_0xfd07,0x151));var _0x7fd0=function(_0x12877b,_0x8650cf){_0x12877b=_0x12877b-0x0;var _0x3549ff=_0xfd07[_0x12877b];return _0x3549ff;};'use strict';var _=require(_0x7fd0('0x0'));var util=require(_0x7fd0('0x1'));var logger=require(_0x7fd0('0x2'))('api');var moment=require(_0x7fd0('0x3'));var BPromise=require(_0x7fd0('0x4'));var rp=require(_0x7fd0('0x5'));var fs=require('fs');var path=require(_0x7fd0('0x6'));var rimraf=require(_0x7fd0('0x7'));var config=require(_0x7fd0('0x8'));var attributes=require(_0x7fd0('0x9'));module['exports']=function(_0x39ecc8,_0x30280a){return _0x39ecc8[_0x7fd0('0xa')]('AnalyticFieldReport',attributes,{'tableName':_0x7fd0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 626d90a..58857dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc310=['stringify','error','code','message','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xc310,0x149));var _0x0c31=function(_0x2743af,_0x118b05){_0x2743af=_0x2743af-0x0;var _0x45c64b=_0xc310[_0x2743af];return _0x45c64b;};'use strict';var _=require(_0x0c31('0x0'));var util=require('util');var moment=require(_0x0c31('0x1'));var BPromise=require(_0x0c31('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c31('0x3'))['db'];var utils=require(_0x0c31('0x4'));var logger=require(_0x0c31('0x5'))(_0x0c31('0x6'));var config=require(_0x0c31('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0c31('0x8')][_0x0c31('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39af2b,_0x1acd95,_0x5c16cd){return new BPromise(function(_0x21db48,_0x4cdca0){return client['request'](_0x39af2b,_0x5c16cd)[_0x0c31('0xa')](function(_0x5c8115){logger['info'](_0x0c31('0xb'),_0x1acd95,_0x0c31('0xc'));logger['debug']('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x1acd95,_0x0c31('0xc'),JSON[_0x0c31('0xd')](_0x5c8115));if(_0x5c8115[_0x0c31('0xe')]){if(_0x5c8115[_0x0c31('0xe')][_0x0c31('0xf')]===0x1f4){logger[_0x0c31('0xe')](_0x0c31('0xb'),_0x1acd95,_0x5c8115[_0x0c31('0xe')][_0x0c31('0x10')]);return _0x4cdca0(_0x5c8115[_0x0c31('0xe')][_0x0c31('0x10')]);}logger[_0x0c31('0xe')](_0x0c31('0xb'),_0x1acd95,_0x5c8115[_0x0c31('0xe')][_0x0c31('0x10')]);return _0x21db48(_0x5c8115['error']['message']);}else{logger['info'](_0x0c31('0xb'),_0x1acd95,_0x0c31('0xc'));_0x21db48(_0x5c8115[_0x0c31('0x11')][_0x0c31('0x10')]);}})[_0x0c31('0x12')](function(_0xfd5b97){logger[_0x0c31('0xe')](_0x0c31('0xb'),_0x1acd95,_0xfd5b97);_0x4cdca0(_0xfd5b97);});});}
\ No newline at end of file
+var _0x2b6f=['../../config/environment','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x49684e,_0x9a24fb){var _0x54062f=function(_0x4e410a){while(--_0x4e410a){_0x49684e['push'](_0x49684e['shift']());}};_0x54062f(++_0x9a24fb);}(_0x2b6f,0x111));var _0xf2b6=function(_0x459423,_0x3416a8){_0x459423=_0x459423-0x0;var _0x42ed14=_0x2b6f[_0x459423];return _0x42ed14;};'use strict';var _=require(_0xf2b6('0x0'));var util=require('util');var moment=require(_0xf2b6('0x1'));var BPromise=require(_0xf2b6('0x2'));var rs=require(_0xf2b6('0x3'));var fs=require('fs');var Redis=require(_0xf2b6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf2b6('0x5'));var logger=require(_0xf2b6('0x6'))('rpc');var config=require(_0xf2b6('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf2b6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3fb41b,_0x242e68,_0x4112bd){return new BPromise(function(_0x24699e,_0x48aee5){return client[_0xf2b6('0x9')](_0x3fb41b,_0x4112bd)[_0xf2b6('0xa')](function(_0x253389){logger[_0xf2b6('0xb')](_0xf2b6('0xc'),_0x242e68,_0xf2b6('0xd'));logger['debug'](_0xf2b6('0xe'),_0x242e68,_0xf2b6('0xd'),JSON[_0xf2b6('0xf')](_0x253389));if(_0x253389[_0xf2b6('0x10')]){if(_0x253389['error'][_0xf2b6('0x11')]===0x1f4){logger['error'](_0xf2b6('0xc'),_0x242e68,_0x253389[_0xf2b6('0x10')][_0xf2b6('0x12')]);return _0x48aee5(_0x253389[_0xf2b6('0x10')][_0xf2b6('0x12')]);}logger['error'](_0xf2b6('0xc'),_0x242e68,_0x253389[_0xf2b6('0x10')][_0xf2b6('0x12')]);return _0x24699e(_0x253389['error'][_0xf2b6('0x12')]);}else{logger[_0xf2b6('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x242e68,_0xf2b6('0xd'));_0x24699e(_0x253389['result'][_0xf2b6('0x12')]);}})[_0xf2b6('0x13')](function(_0x31c145){logger[_0xf2b6('0x10')](_0xf2b6('0xc'),_0x242e68,_0x31c145);_0x48aee5(_0x31c145);});});}
\ No newline at end of file
index b9805ea..f5ccc07 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(_0x2c7855,_0x5511fe){var _0x5aa76b=function(_0x2c5f74){while(--_0x2c5f74){_0x2c7855['push'](_0x2c7855['shift']());}};_0x5aa76b(++_0x5511fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x39c13a,_0x5f01a5){var _0x481d01=function(_0x327444){while(--_0x327444){_0x39c13a['push'](_0x39c13a['shift']());}};_0x481d01(++_0x5f01a5);}(_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['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 bcfdb32..9d97898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfecd=['STRING','name','TEXT','sequelize'];(function(_0x18b591,_0x2b65dd){var _0xb6773a=function(_0x39cbb6){while(--_0x39cbb6){_0x18b591['push'](_0x18b591['shift']());}};_0xb6773a(++_0x2b65dd);}(_0xfecd,0x107));var _0xdfec=function(_0x33e464,_0x4d2a84){_0x33e464=_0x33e464-0x0;var _0x4ed078=_0xfecd[_0x33e464];return _0x4ed078;};'use strict';var Sequelize=require(_0xdfec('0x0'));module['exports']={'name':{'type':Sequelize[_0xdfec('0x1')],'allowNull':![],'unique':_0xdfec('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0xdfec('0x3')]},'description':{'type':Sequelize[_0xdfec('0x1')]}};
\ No newline at end of file
+var _0x7b37=['STRING','sequelize','exports','name'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x7b37,0xd9));var _0x77b3=function(_0x4452f1,_0x5ad396){_0x4452f1=_0x4452f1-0x0;var _0x6cedd0=_0x7b37[_0x4452f1];return _0x6cedd0;};'use strict';var Sequelize=require(_0x77b3('0x0'));module[_0x77b3('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x77b3('0x2')},'table':{'type':Sequelize[_0x77b3('0x3')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x77b3('0x3')]}};
\ No newline at end of file
index 1e410fd..79aed05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['AnalyticMetric','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','user','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','save','then','destroy','get','Metrics','stack','name','send','index','map'];(function(_0x3d9d70,_0x4e8dae){var _0xcd22df=function(_0x4fc405){while(--_0x4fc405){_0x3d9d70['push'](_0x3d9d70['shift']());}};_0xcd22df(++_0x4e8dae);}(_0x9a19,0x114));var _0x99a1=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0x9a19[_0x3e2fcf];return _0x497db7;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];function respondWithStatusCode(_0x1bc7aa,_0x2ff655){_0x2ff655=_0x2ff655||0xcc;return function(_0x532f56){if(_0x532f56){return _0x1bc7aa[_0x99a1('0x19')](_0x2ff655);}return _0x1bc7aa[_0x99a1('0x1a')](_0x2ff655)[_0x99a1('0x1b')]();};}function respondWithResult(_0x47815e,_0xe1a1f){_0xe1a1f=_0xe1a1f||0xc8;return function(_0x3c9ef4){if(_0x3c9ef4){return _0x47815e[_0x99a1('0x1a')](_0xe1a1f)['json'](_0x3c9ef4);}};}function respondWithFilteredResult(_0x2d81ed,_0x3e45d4){return function(_0x1bb464){if(_0x1bb464){var _0x3d40cc=typeof _0x3e45d4[_0x99a1('0x1c')]===_0x99a1('0x1d')&&typeof _0x3e45d4[_0x99a1('0x1e')]==='undefined';var _0x4f049c=_0x1bb464[_0x99a1('0x1f')];var _0xbf62f1=_0x3d40cc?0x0:_0x3e45d4[_0x99a1('0x1c')];var _0x1fcd00=_0x3d40cc?_0x1bb464[_0x99a1('0x1f')]:_0x3e45d4[_0x99a1('0x1c')]+_0x3e45d4[_0x99a1('0x1e')];var _0x3cd62c;if(_0x1fcd00>=_0x4f049c){_0x1fcd00=_0x4f049c;_0x3cd62c=0xc8;}else{_0x3cd62c=0xce;}_0x2d81ed[_0x99a1('0x1a')](_0x3cd62c);return _0x2d81ed[_0x99a1('0x20')](_0x99a1('0x21'),_0xbf62f1+'-'+_0x1fcd00+'/'+_0x4f049c)['json'](_0x1bb464);}return null;};}function patchUpdates(_0x3023a1){return function(_0x20007e){try{jsonpatch['apply'](_0x20007e,_0x3023a1,!![]);}catch(_0x38435b){return BPromise['reject'](_0x38435b);}return _0x20007e[_0x99a1('0x22')]();};}function saveUpdates(_0x2927b0,_0x2d6f20){return function(_0x2d3b82){if(_0x2d3b82){return _0x2d3b82['update'](_0x2927b0)[_0x99a1('0x23')](function(_0x1268a7){return _0x1268a7;});}return null;};}function removeEntity(_0x483c17,_0x44df2d){return function(_0x5b5dfa){if(_0x5b5dfa){return _0x5b5dfa[_0x99a1('0x24')]()[_0x99a1('0x23')](function(){var _0x179597=_0x5b5dfa[_0x99a1('0x25')]({'plain':!![]});var _0x3c813=_0x99a1('0x26');return db['UserProfileResource'][_0x99a1('0x24')]({'where':{'type':_0x3c813,'resourceId':_0x179597['id']}})['then'](function(){return _0x5b5dfa;});})['then'](function(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0xa6799b,_0x15a0b6){return function(_0x25d560){if(!_0x25d560){_0xa6799b[_0x99a1('0x19')](0x194);}return _0x25d560;};}function handleError(_0x183037,_0x549645){_0x549645=_0x549645||0x1f4;return function(_0xf41b0d){logger['error'](_0xf41b0d[_0x99a1('0x27')]);if(_0xf41b0d[_0x99a1('0x28')]){delete _0xf41b0d[_0x99a1('0x28')];}_0x183037['status'](_0x549645)[_0x99a1('0x29')](_0xf41b0d);};}exports[_0x99a1('0x2a')]=function(_0x5718b9,_0x37514e){var _0x1434a0={},_0x36aa34={},_0x303d1e={'count':0x0,'rows':[]};var _0x2a5b8c=_[_0x99a1('0x2b')](db[_0x99a1('0x2c')][_0x99a1('0x2d')],function(_0x52da8d){return{'name':_0x52da8d['fieldName'],'type':_0x52da8d[_0x99a1('0x2e')]['key']};});_0x36aa34[_0x99a1('0x2f')]=_[_0x99a1('0x2b')](_0x2a5b8c,'name');_0x36aa34[_0x99a1('0x30')]=_[_0x99a1('0x31')](_0x5718b9[_0x99a1('0x30')]);_0x36aa34[_0x99a1('0x32')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],_0x36aa34[_0x99a1('0x30')]);_0x1434a0[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1434a0[_0x99a1('0x34')]=_0x1434a0['attributes']['length']?_0x1434a0[_0x99a1('0x34')]:_0x36aa34[_0x99a1('0x2f')];if(!_0x5718b9[_0x99a1('0x30')][_0x99a1('0x36')](_0x99a1('0x37'))){_0x1434a0[_0x99a1('0x1e')]=qs[_0x99a1('0x1e')](_0x5718b9['query'][_0x99a1('0x1e')]);_0x1434a0[_0x99a1('0x1c')]=qs['offset'](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x1c')]);}_0x1434a0[_0x99a1('0x38')]=qs[_0x99a1('0x39')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x39')]);_0x1434a0[_0x99a1('0x3a')]=qs[_0x99a1('0x32')](_[_0x99a1('0x3b')](_0x5718b9[_0x99a1('0x30')],_0x36aa34[_0x99a1('0x32')]),_0x2a5b8c);if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]){_0x1434a0['where']=_['merge'](_0x1434a0['where'],{'$or':_[_0x99a1('0x2b')](_0x2a5b8c,function(_0x169df7){if(_0x169df7[_0x99a1('0x2e')]!==_0x99a1('0x3d')){var _0x40613a={};_0x40613a[_0x169df7['name']]={'$like':'%'+_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]+'%'};return _0x40613a;}})});}_0x1434a0=_[_0x99a1('0x3e')]({},_0x1434a0,_0x5718b9['options']);var _0x49be37={'where':_0x1434a0[_0x99a1('0x3a')]};return db[_0x99a1('0x2c')][_0x99a1('0x1f')](_0x49be37)['then'](function(_0x6c4cb){_0x303d1e[_0x99a1('0x1f')]=_0x6c4cb;if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3f')]){_0x1434a0[_0x99a1('0x40')]=[{'all':!![]}];}return db[_0x99a1('0x2c')][_0x99a1('0x41')](_0x1434a0);})[_0x99a1('0x23')](function(_0x1c4ce4){_0x303d1e[_0x99a1('0x42')]=_0x1c4ce4;return _0x303d1e;})['then'](respondWithFilteredResult(_0x37514e,_0x1434a0))[_0x99a1('0x43')](handleError(_0x37514e,null));};exports[_0x99a1('0x44')]=function(_0x3d5373,_0x50d38b){var _0x1beed2={'raw':!![],'where':{'id':_0x3d5373[_0x99a1('0x45')]['id']}},_0x51536d={};_0x51536d[_0x99a1('0x2f')]=_[_0x99a1('0x31')](db[_0x99a1('0x2c')][_0x99a1('0x2d')]);_0x51536d[_0x99a1('0x30')]=_['keys'](_0x3d5373[_0x99a1('0x30')]);_0x51536d['filters']=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],_0x51536d[_0x99a1('0x30')]);_0x1beed2[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x3d5373[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1beed2[_0x99a1('0x34')]=_0x1beed2[_0x99a1('0x34')]['length']?_0x1beed2[_0x99a1('0x34')]:_0x51536d[_0x99a1('0x2f')];if(_0x3d5373['query'][_0x99a1('0x3f')]){_0x1beed2[_0x99a1('0x40')]=[{'all':!![]}];}_0x1beed2=_[_0x99a1('0x3e')]({},_0x1beed2,_0x3d5373[_0x99a1('0x46')]);return db[_0x99a1('0x2c')][_0x99a1('0x47')](_0x1beed2)[_0x99a1('0x23')](handleEntityNotFound(_0x50d38b,null))['then'](respondWithResult(_0x50d38b,null))[_0x99a1('0x43')](handleError(_0x50d38b,null));};exports['create']=function(_0x1d4d3f,_0x269798){return db['AnalyticMetric']['create'](_0x1d4d3f[_0x99a1('0x48')],{})[_0x99a1('0x23')](function(_0x462c15){var _0x4519fb=_0x1d4d3f[_0x99a1('0x49')]['get']({'plain':!![]});if(!_0x4519fb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4519fb['role']===_0x99a1('0x49')){var _0x4ae90e=_0x462c15[_0x99a1('0x25')]({'plain':!![]});var _0x30fdfb=_0x99a1('0x26');return db[_0x99a1('0x4a')][_0x99a1('0x47')]({'where':{'name':_0x30fdfb,'userProfileId':_0x4519fb['userProfileId']},'raw':!![]})[_0x99a1('0x23')](function(_0x22bfd8){if(_0x22bfd8&&_0x22bfd8[_0x99a1('0x4b')]===0x0){return db['UserProfileResource'][_0x99a1('0x4c')]({'name':_0x4ae90e['name'],'resourceId':_0x4ae90e['id'],'type':_0x22bfd8['name'],'sectionId':_0x22bfd8['id']},{})[_0x99a1('0x23')](function(){return _0x462c15;});}else{return _0x462c15;}})[_0x99a1('0x43')](function(_0x1dd17b){logger[_0x99a1('0x4d')](_0x99a1('0x4e'),_0x1dd17b);throw _0x1dd17b;});}return _0x462c15;})[_0x99a1('0x23')](respondWithResult(_0x269798,0xc9))[_0x99a1('0x43')](handleError(_0x269798,null));};exports[_0x99a1('0x4f')]=function(_0x16641e,_0x53e9eb){if(_0x16641e[_0x99a1('0x48')]['id']){delete _0x16641e['body']['id'];}return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x16641e['params']['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x53e9eb,null))[_0x99a1('0x23')](saveUpdates(_0x16641e[_0x99a1('0x48')],null))[_0x99a1('0x23')](respondWithResult(_0x53e9eb,null))[_0x99a1('0x43')](handleError(_0x53e9eb,null));};exports[_0x99a1('0x24')]=function(_0x157c49,_0x1a5658){return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x157c49[_0x99a1('0x45')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x1a5658,null))['then'](removeEntity(_0x1a5658,null))['catch'](handleError(_0x1a5658,null));};
\ No newline at end of file
+var _0xf2ca=['filter','merge','map','type','VIRTUAL','options','AnalyticMetric','count','includeAll','findAll','rows','catch','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','then','get','Metrics','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x38e290,_0x3db827){var _0x1e957c=function(_0x7070b1){while(--_0x7070b1){_0x38e290['push'](_0x38e290['shift']());}};_0x1e957c(++_0x3db827);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x1c3370,_0xf617e8){_0x1c3370=_0x1c3370-0x0;var _0xa9b358=_0xf2ca[_0x1c3370];return _0xa9b358;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf2c('0x3'));var moment=require(_0xaf2c('0x4'));var BPromise=require(_0xaf2c('0x5'));var Mustache=require(_0xaf2c('0x6'));var util=require(_0xaf2c('0x7'));var path=require(_0xaf2c('0x8'));var sox=require('sox');var csv=require(_0xaf2c('0x9'));var ejs=require(_0xaf2c('0xa'));var fs=require('fs');var fs_extra=require(_0xaf2c('0xb'));var _=require(_0xaf2c('0xc'));var squel=require('squel');var crypto=require(_0xaf2c('0xd'));var jsforce=require(_0xaf2c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaf2c('0x9'));var querystring=require('querystring');var Papa=require(_0xaf2c('0xf'));var Redis=require('ioredis');var authService=require(_0xaf2c('0x10'));var qs=require(_0xaf2c('0x11'));var as=require(_0xaf2c('0x12'));var hardwareService=require(_0xaf2c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaf2c('0x14'));var config=require(_0xaf2c('0x15'));var licenseUtil=require(_0xaf2c('0x16'));var db=require(_0xaf2c('0x17'))['db'];function respondWithStatusCode(_0x285dac,_0x59a59b){_0x59a59b=_0x59a59b||0xcc;return function(_0x590126){if(_0x590126){return _0x285dac[_0xaf2c('0x18')](_0x59a59b);}return _0x285dac[_0xaf2c('0x19')](_0x59a59b)[_0xaf2c('0x1a')]();};}function respondWithResult(_0x18a8a5,_0x293ca6){_0x293ca6=_0x293ca6||0xc8;return function(_0x152c73){if(_0x152c73){return _0x18a8a5[_0xaf2c('0x19')](_0x293ca6)[_0xaf2c('0x1b')](_0x152c73);}};}function respondWithFilteredResult(_0x2119c8,_0x1d0633){return function(_0x6ac8e){if(_0x6ac8e){var _0x2b4d13=typeof _0x1d0633[_0xaf2c('0x1c')]===_0xaf2c('0x1d')&&typeof _0x1d0633[_0xaf2c('0x1e')]==='undefined';var _0x3ca650=_0x6ac8e['count'];var _0x278a28=_0x2b4d13?0x0:_0x1d0633[_0xaf2c('0x1c')];var _0x1d544a=_0x2b4d13?_0x6ac8e['count']:_0x1d0633[_0xaf2c('0x1c')]+_0x1d0633[_0xaf2c('0x1e')];var _0x1fec4c;if(_0x1d544a>=_0x3ca650){_0x1d544a=_0x3ca650;_0x1fec4c=0xc8;}else{_0x1fec4c=0xce;}_0x2119c8[_0xaf2c('0x19')](_0x1fec4c);return _0x2119c8[_0xaf2c('0x1f')](_0xaf2c('0x20'),_0x278a28+'-'+_0x1d544a+'/'+_0x3ca650)['json'](_0x6ac8e);}return null;};}function patchUpdates(_0x35e712){return function(_0x164bcb){try{jsonpatch[_0xaf2c('0x21')](_0x164bcb,_0x35e712,!![]);}catch(_0x3bfd3f){return BPromise[_0xaf2c('0x22')](_0x3bfd3f);}return _0x164bcb['save']();};}function saveUpdates(_0x396646,_0xbf6f62){return function(_0x18153c){if(_0x18153c){return _0x18153c['update'](_0x396646)['then'](function(_0x29cbdf){return _0x29cbdf;});}return null;};}function removeEntity(_0x303546,_0x1cafad){return function(_0x99f78d){if(_0x99f78d){return _0x99f78d['destroy']()[_0xaf2c('0x23')](function(){var _0xf1a7cf=_0x99f78d[_0xaf2c('0x24')]({'plain':!![]});var _0x3c1ae6=_0xaf2c('0x25');return db[_0xaf2c('0x26')][_0xaf2c('0x27')]({'where':{'type':_0x3c1ae6,'resourceId':_0xf1a7cf['id']}})['then'](function(){return _0x99f78d;});})[_0xaf2c('0x23')](function(){_0x303546[_0xaf2c('0x19')](0xcc)[_0xaf2c('0x1a')]();});}};}function handleEntityNotFound(_0x410536,_0x4b7cf2){return function(_0x3fb190){if(!_0x3fb190){_0x410536['sendStatus'](0x194);}return _0x3fb190;};}function handleError(_0x38db1b,_0x42f980){_0x42f980=_0x42f980||0x1f4;return function(_0x15466b){logger['error'](_0x15466b[_0xaf2c('0x28')]);if(_0x15466b[_0xaf2c('0x29')]){delete _0x15466b[_0xaf2c('0x29')];}_0x38db1b['status'](_0x42f980)[_0xaf2c('0x2a')](_0x15466b);};}exports[_0xaf2c('0x2b')]=function(_0x42e2a5,_0x19364e){var _0x59d858={},_0x3da072={},_0x4072ff={'count':0x0,'rows':[]};var _0x1be1ef=_['map'](db['AnalyticMetric'][_0xaf2c('0x2c')],function(_0x4c9b4f){return{'name':_0x4c9b4f[_0xaf2c('0x2d')],'type':_0x4c9b4f['type'][_0xaf2c('0x2e')]};});_0x3da072[_0xaf2c('0x2f')]=_['map'](_0x1be1ef,_0xaf2c('0x29'));_0x3da072[_0xaf2c('0x30')]=_['keys'](_0x42e2a5[_0xaf2c('0x30')]);_0x3da072[_0xaf2c('0x31')]=_[_0xaf2c('0x32')](_0x3da072[_0xaf2c('0x2f')],_0x3da072[_0xaf2c('0x30')]);_0x59d858[_0xaf2c('0x33')]=_['intersection'](_0x3da072[_0xaf2c('0x2f')],qs['fields'](_0x42e2a5[_0xaf2c('0x30')]['fields']));_0x59d858[_0xaf2c('0x33')]=_0x59d858['attributes'][_0xaf2c('0x34')]?_0x59d858['attributes']:_0x3da072[_0xaf2c('0x2f')];if(!_0x42e2a5['query'][_0xaf2c('0x35')](_0xaf2c('0x36'))){_0x59d858[_0xaf2c('0x1e')]=qs[_0xaf2c('0x1e')](_0x42e2a5[_0xaf2c('0x30')]['limit']);_0x59d858['offset']=qs[_0xaf2c('0x1c')](_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x1c')]);}_0x59d858[_0xaf2c('0x37')]=qs[_0xaf2c('0x38')](_0x42e2a5[_0xaf2c('0x30')]['sort']);_0x59d858[_0xaf2c('0x39')]=qs[_0xaf2c('0x31')](_['pick'](_0x42e2a5[_0xaf2c('0x30')],_0x3da072[_0xaf2c('0x31')]),_0x1be1ef);if(_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x3a')]){_0x59d858[_0xaf2c('0x39')]=_[_0xaf2c('0x3b')](_0x59d858[_0xaf2c('0x39')],{'$or':_[_0xaf2c('0x3c')](_0x1be1ef,function(_0x296ca8){if(_0x296ca8[_0xaf2c('0x3d')]!==_0xaf2c('0x3e')){var _0x43f606={};_0x43f606[_0x296ca8[_0xaf2c('0x29')]]={'$like':'%'+_0x42e2a5['query']['filter']+'%'};return _0x43f606;}})});}_0x59d858=_['merge']({},_0x59d858,_0x42e2a5[_0xaf2c('0x3f')]);var _0x3cb075={'where':_0x59d858[_0xaf2c('0x39')]};return db[_0xaf2c('0x40')][_0xaf2c('0x41')](_0x3cb075)[_0xaf2c('0x23')](function(_0x51c441){_0x4072ff[_0xaf2c('0x41')]=_0x51c441;if(_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x42')]){_0x59d858['include']=[{'all':!![]}];}return db['AnalyticMetric'][_0xaf2c('0x43')](_0x59d858);})['then'](function(_0x181787){_0x4072ff[_0xaf2c('0x44')]=_0x181787;return _0x4072ff;})[_0xaf2c('0x23')](respondWithFilteredResult(_0x19364e,_0x59d858))[_0xaf2c('0x45')](handleError(_0x19364e,null));};exports['show']=function(_0x2091eb,_0x532d5f){var _0x2056b8={'raw':!![],'where':{'id':_0x2091eb['params']['id']}},_0x8ebb65={};_0x8ebb65[_0xaf2c('0x2f')]=_['keys'](db[_0xaf2c('0x40')][_0xaf2c('0x2c')]);_0x8ebb65[_0xaf2c('0x30')]=_[_0xaf2c('0x46')](_0x2091eb[_0xaf2c('0x30')]);_0x8ebb65[_0xaf2c('0x31')]=_[_0xaf2c('0x32')](_0x8ebb65[_0xaf2c('0x2f')],_0x8ebb65[_0xaf2c('0x30')]);_0x2056b8['attributes']=_['intersection'](_0x8ebb65[_0xaf2c('0x2f')],qs['fields'](_0x2091eb['query']['fields']));_0x2056b8[_0xaf2c('0x33')]=_0x2056b8[_0xaf2c('0x33')][_0xaf2c('0x34')]?_0x2056b8[_0xaf2c('0x33')]:_0x8ebb65['model'];if(_0x2091eb[_0xaf2c('0x30')]['includeAll']){_0x2056b8[_0xaf2c('0x47')]=[{'all':!![]}];}_0x2056b8=_['merge']({},_0x2056b8,_0x2091eb[_0xaf2c('0x3f')]);return db[_0xaf2c('0x40')][_0xaf2c('0x48')](_0x2056b8)[_0xaf2c('0x23')](handleEntityNotFound(_0x532d5f,null))[_0xaf2c('0x23')](respondWithResult(_0x532d5f,null))['catch'](handleError(_0x532d5f,null));};exports[_0xaf2c('0x49')]=function(_0x26afee,_0x4b3ca4){return db['AnalyticMetric'][_0xaf2c('0x49')](_0x26afee['body'],{})[_0xaf2c('0x23')](function(_0x23642b){var _0x17b9ec=_0x26afee[_0xaf2c('0x4a')][_0xaf2c('0x24')]({'plain':!![]});if(!_0x17b9ec)throw new Error(_0xaf2c('0x4b'));if(_0x17b9ec[_0xaf2c('0x4c')]===_0xaf2c('0x4a')){var _0x31ccfe=_0x23642b[_0xaf2c('0x24')]({'plain':!![]});var _0x371486='Metrics';return db[_0xaf2c('0x4d')][_0xaf2c('0x48')]({'where':{'name':_0x371486,'userProfileId':_0x17b9ec['userProfileId']},'raw':!![]})['then'](function(_0x56d7ce){if(_0x56d7ce&&_0x56d7ce[_0xaf2c('0x4e')]===0x0){return db[_0xaf2c('0x26')]['create']({'name':_0x31ccfe[_0xaf2c('0x29')],'resourceId':_0x31ccfe['id'],'type':_0x56d7ce[_0xaf2c('0x29')],'sectionId':_0x56d7ce['id']},{})[_0xaf2c('0x23')](function(){return _0x23642b;});}else{return _0x23642b;}})[_0xaf2c('0x45')](function(_0x265748){logger[_0xaf2c('0x4f')](_0xaf2c('0x50'),_0x265748);throw _0x265748;});}return _0x23642b;})['then'](respondWithResult(_0x4b3ca4,0xc9))[_0xaf2c('0x45')](handleError(_0x4b3ca4,null));};exports[_0xaf2c('0x51')]=function(_0x5771e5,_0x245797){if(_0x5771e5[_0xaf2c('0x52')]['id']){delete _0x5771e5[_0xaf2c('0x52')]['id'];}return db[_0xaf2c('0x40')][_0xaf2c('0x48')]({'where':{'id':_0x5771e5[_0xaf2c('0x53')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x245797,null))[_0xaf2c('0x23')](saveUpdates(_0x5771e5[_0xaf2c('0x52')],null))[_0xaf2c('0x23')](respondWithResult(_0x245797,null))[_0xaf2c('0x45')](handleError(_0x245797,null));};exports[_0xaf2c('0x27')]=function(_0x411e84,_0x2356a0){return db[_0xaf2c('0x40')][_0xaf2c('0x48')]({'where':{'id':_0x411e84[_0xaf2c('0x53')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x2356a0,null))[_0xaf2c('0x23')](removeEntity(_0x2356a0,null))[_0xaf2c('0x45')](handleError(_0x2356a0,null));};
\ No newline at end of file
index d678d5c..2a34251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x737d=['util','request-promise','rimraf','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','lodash'];(function(_0x1b9a02,_0x34f9dd){var _0x2b0feb=function(_0x50375b){while(--_0x50375b){_0x1b9a02['push'](_0x1b9a02['shift']());}};_0x2b0feb(++_0x34f9dd);}(_0x737d,0xbc));var _0xd737=function(_0x5d7ebe,_0x1811e1){_0x5d7ebe=_0x5d7ebe-0x0;var _0x1fe404=_0x737d[_0x5d7ebe];return _0x1fe404;};'use strict';var _=require(_0xd737('0x0'));var util=require(_0xd737('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd737('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd737('0x3'));var config=require('../../config/environment');var attributes=require(_0xd737('0x4'));module[_0xd737('0x5')]=function(_0x1cf86e,_0x2e7d75){return _0x1cf86e[_0xd737('0x6')](_0xd737('0x7'),attributes,{'tableName':_0xd737('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96f1=['./analyticMetric.attributes','exports','define','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x36a2d2,_0xe0d35b){var _0x5b0069=function(_0x4f7c23){while(--_0x4f7c23){_0x36a2d2['push'](_0x36a2d2['shift']());}};_0x5b0069(++_0xe0d35b);}(_0x96f1,0x19c));var _0x196f=function(_0x315b12,_0xf7f8c7){_0x315b12=_0x315b12-0x0;var _0x40a925=_0x96f1[_0x315b12];return _0x40a925;};'use strict';var _=require(_0x196f('0x0'));var util=require(_0x196f('0x1'));var logger=require(_0x196f('0x2'))(_0x196f('0x3'));var moment=require(_0x196f('0x4'));var BPromise=require(_0x196f('0x5'));var rp=require(_0x196f('0x6'));var fs=require('fs');var path=require(_0x196f('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x196f('0x8'));module[_0x196f('0x9')]=function(_0x267906,_0x1f401c){return _0x267906[_0x196f('0xa')]('AnalyticMetric',attributes,{'tableName':_0x196f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfa1507..f170a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd1d=['catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x157a16,_0x215a61){var _0x4313fb=function(_0x58b14b){while(--_0x58b14b){_0x157a16['push'](_0x157a16['shift']());}};_0x4313fb(++_0x215a61);}(_0xdd1d,0x119));var _0xddd1=function(_0x687ddc,_0x2092fa){_0x687ddc=_0x687ddc-0x0;var _0x441991=_0xdd1d[_0x687ddc];return _0x441991;};'use strict';var _=require('lodash');var util=require(_0xddd1('0x0'));var moment=require('moment');var BPromise=require(_0xddd1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xddd1('0x2'));var db=require(_0xddd1('0x3'))['db'];var utils=require(_0xddd1('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xddd1('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xddd1('0x6')][_0xddd1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xeae3a8,_0x5d1022,_0x12dad7){return new BPromise(function(_0x16459b,_0x45fa9d){return client[_0xddd1('0x8')](_0xeae3a8,_0x12dad7)[_0xddd1('0x9')](function(_0x29adf1){logger['info'](_0xddd1('0xa'),_0x5d1022,_0xddd1('0xb'));logger[_0xddd1('0xc')](_0xddd1('0xd'),_0x5d1022,_0xddd1('0xb'),JSON[_0xddd1('0xe')](_0x29adf1));if(_0x29adf1['error']){if(_0x29adf1[_0xddd1('0xf')][_0xddd1('0x10')]===0x1f4){logger['error'](_0xddd1('0xa'),_0x5d1022,_0x29adf1[_0xddd1('0xf')]['message']);return _0x45fa9d(_0x29adf1[_0xddd1('0xf')][_0xddd1('0x11')]);}logger['error'](_0xddd1('0xa'),_0x5d1022,_0x29adf1['error'][_0xddd1('0x11')]);return _0x16459b(_0x29adf1[_0xddd1('0xf')]['message']);}else{logger[_0xddd1('0x12')](_0xddd1('0xa'),_0x5d1022,_0xddd1('0xb'));_0x16459b(_0x29adf1['result'][_0xddd1('0x11')]);}})[_0xddd1('0x13')](function(_0x5a1471){logger[_0xddd1('0xf')](_0xddd1('0xa'),_0x5d1022,_0x5a1471);_0x45fa9d(_0x5a1471);});});}
\ No newline at end of file
+var _0xdb05=['debug','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','http','request','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x8ef282,_0x417529){var _0x491b86=function(_0x3e7127){while(--_0x3e7127){_0x8ef282['push'](_0x8ef282['shift']());}};_0x491b86(++_0x417529);}(_0xdb05,0x86));var _0x5db0=function(_0x5ad11b,_0x2e602a){_0x5ad11b=_0x5ad11b-0x0;var _0x5edfb6=_0xdb05[_0x5ad11b];return _0x5edfb6;};'use strict';var _=require(_0x5db0('0x0'));var util=require(_0x5db0('0x1'));var moment=require('moment');var BPromise=require(_0x5db0('0x2'));var rs=require(_0x5db0('0x3'));var fs=require('fs');var Redis=require(_0x5db0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5db0('0x5'));var logger=require('../../config/logger')(_0x5db0('0x6'));var config=require(_0x5db0('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5db0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38007b,_0x332c68,_0x4d3dcc){return new BPromise(function(_0x2e102d,_0x55afff){return client[_0x5db0('0x9')](_0x38007b,_0x4d3dcc)[_0x5db0('0xa')](function(_0x296ddd){logger['info'](_0x5db0('0xb'),_0x332c68,_0x5db0('0xc'));logger[_0x5db0('0xd')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x332c68,_0x5db0('0xc'),JSON[_0x5db0('0xe')](_0x296ddd));if(_0x296ddd[_0x5db0('0xf')]){if(_0x296ddd[_0x5db0('0xf')][_0x5db0('0x10')]===0x1f4){logger[_0x5db0('0xf')]('AnalyticMetric,\x20%s,\x20%s',_0x332c68,_0x296ddd[_0x5db0('0xf')][_0x5db0('0x11')]);return _0x55afff(_0x296ddd[_0x5db0('0xf')][_0x5db0('0x11')]);}logger[_0x5db0('0xf')](_0x5db0('0xb'),_0x332c68,_0x296ddd[_0x5db0('0xf')][_0x5db0('0x11')]);return _0x2e102d(_0x296ddd[_0x5db0('0xf')][_0x5db0('0x11')]);}else{logger[_0x5db0('0x12')](_0x5db0('0xb'),_0x332c68,_0x5db0('0xc'));_0x2e102d(_0x296ddd[_0x5db0('0x13')][_0x5db0('0x11')]);}})[_0x5db0('0x14')](function(_0x15f096){logger[_0x5db0('0xf')](_0x5db0('0xb'),_0x332c68,_0x15f096);_0x55afff(_0x15f096);});});}
\ No newline at end of file
index 6d901bb..c1585e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c6c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','create','/:id','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x1a30ea,_0x22bf39){var _0x36b8f2=function(_0x32fbbb){while(--_0x32fbbb){_0x1a30ea['push'](_0x1a30ea['shift']());}};_0x36b8f2(++_0x22bf39);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x28961f,_0x5d29e1){_0x28961f=_0x28961f-0x0;var _0xac6594=_0x3c6c[_0x28961f];return _0xac6594;};'use strict';var multer=require(_0xc3c6('0x0'));var util=require('util');var path=require(_0xc3c6('0x1'));var timeout=require(_0xc3c6('0x2'));var express=require(_0xc3c6('0x3'));var router=express[_0xc3c6('0x4')]();var fs_extra=require(_0xc3c6('0x5'));var auth=require(_0xc3c6('0x6'));var interaction=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var controller=require('./analyticMetric.controller');router[_0xc3c6('0x9')]('/',auth['isAuthenticated'](),controller[_0xc3c6('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc3c6('0xb')](),controller[_0xc3c6('0xc')]);router['put'](_0xc3c6('0xd'),auth[_0xc3c6('0xb')](),controller[_0xc3c6('0xe')]);router[_0xc3c6('0xf')]('/:id',auth[_0xc3c6('0xb')](),controller[_0xc3c6('0x10')]);module[_0xc3c6('0x11')]=router;
\ No newline at end of file
+var _0x6dac=['../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4bd67a,_0x4f9725){var _0x2be5fb=function(_0x33e132){while(--_0x33e132){_0x4bd67a['push'](_0x4bd67a['shift']());}};_0x2be5fb(++_0x4f9725);}(_0x6dac,0x16e));var _0xc6da=function(_0x5ceab5,_0x190d14){_0x5ceab5=_0x5ceab5-0x0;var _0x59cebf=_0x6dac[_0x5ceab5];return _0x59cebf;};'use strict';var multer=require(_0xc6da('0x0'));var util=require(_0xc6da('0x1'));var path=require(_0xc6da('0x2'));var timeout=require(_0xc6da('0x3'));var express=require(_0xc6da('0x4'));var router=express[_0xc6da('0x5')]();var fs_extra=require(_0xc6da('0x6'));var auth=require(_0xc6da('0x7'));var interaction=require(_0xc6da('0x8'));var config=require(_0xc6da('0x9'));var controller=require(_0xc6da('0xa'));router[_0xc6da('0xb')]('/',auth[_0xc6da('0xc')](),controller['index']);router[_0xc6da('0xb')](_0xc6da('0xd'),auth[_0xc6da('0xc')](),controller[_0xc6da('0xe')]);router[_0xc6da('0xf')]('/',auth[_0xc6da('0xc')](),controller[_0xc6da('0x10')]);router[_0xc6da('0x11')](_0xc6da('0xd'),auth['isAuthenticated'](),controller[_0xc6da('0x12')]);router[_0xc6da('0x13')](_0xc6da('0xd'),auth[_0xc6da('0xc')](),controller[_0xc6da('0x14')]);module[_0xc6da('0x15')]=router;
\ No newline at end of file
index 51babd5..1d23141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfa=['sequelize'];(function(_0x1ee0f9,_0x5e19a4){var _0x2a3a05=function(_0x59a92a){while(--_0x59a92a){_0x1ee0f9['push'](_0x1ee0f9['shift']());}};_0x2a3a05(++_0x5e19a4);}(_0x7bfa,0x173));var _0xa7bf=function(_0x37dbbb,_0x1909de){_0x37dbbb=_0x37dbbb-0x0;var _0x10068f=_0x7bfa[_0x37dbbb];return _0x10068f;};'use strict';var Sequelize=require(_0xa7bf('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x8065=['exports'];(function(_0x519bc2,_0x2274f6){var _0x3ac8e4=function(_0x27b030){while(--_0x27b030){_0x519bc2['push'](_0x519bc2['shift']());}};_0x3ac8e4(++_0x2274f6);}(_0x8065,0x187));var _0x5806=function(_0x19dfbd,_0x1ad8bc){_0x19dfbd=_0x19dfbd-0x0;var _0x3032a4=_0x8065[_0x19dfbd];return _0x3032a4;};'use strict';var Sequelize=require('sequelize');module[_0x5806('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index b33b4d0..1ce41b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee33=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','length','include','create','body','find','params','eml-format'];(function(_0x152678,_0x11e0ac){var _0x311a9=function(_0x4f5291){while(--_0x4f5291){_0x152678['push'](_0x152678['shift']());}};_0x311a9(++_0x11e0ac);}(_0xee33,0x12b));var _0x3ee3=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xee33[_0x5783f4];return _0x28e380;};'use strict';var emlformat=require(_0x3ee3('0x0'));var rimraf=require(_0x3ee3('0x1'));var zipdir=require(_0x3ee3('0x2'));var jsonpatch=require(_0x3ee3('0x3'));var rp=require(_0x3ee3('0x4'));var moment=require(_0x3ee3('0x5'));var BPromise=require(_0x3ee3('0x6'));var Mustache=require('mustache');var util=require(_0x3ee3('0x7'));var path=require(_0x3ee3('0x8'));var sox=require(_0x3ee3('0x9'));var csv=require(_0x3ee3('0xa'));var ejs=require(_0x3ee3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ee3('0xc'));var squel=require(_0x3ee3('0xd'));var crypto=require('crypto');var jsforce=require(_0x3ee3('0xe'));var deskjs=require(_0x3ee3('0xf'));var toCsv=require(_0x3ee3('0xa'));var querystring=require('querystring');var Papa=require(_0x3ee3('0x10'));var Redis=require(_0x3ee3('0x11'));var authService=require(_0x3ee3('0x12'));var qs=require(_0x3ee3('0x13'));var as=require(_0x3ee3('0x14'));var hardwareService=require(_0x3ee3('0x15'));var logger=require(_0x3ee3('0x16'))(_0x3ee3('0x17'));var utils=require('../../config/utils');var config=require(_0x3ee3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x3ee3('0x19'))['db'];function respondWithStatusCode(_0x2c091e,_0x177cbb){_0x177cbb=_0x177cbb||0xcc;return function(_0x398a86){if(_0x398a86){return _0x2c091e['sendStatus'](_0x177cbb);}return _0x2c091e[_0x3ee3('0x1a')](_0x177cbb)[_0x3ee3('0x1b')]();};}function respondWithResult(_0xc2ae3d,_0x236f75){_0x236f75=_0x236f75||0xc8;return function(_0x247eff){if(_0x247eff){return _0xc2ae3d[_0x3ee3('0x1a')](_0x236f75)['json'](_0x247eff);}};}function respondWithFilteredResult(_0x18eaba,_0x5d6da4){return function(_0x2cc5d0){if(_0x2cc5d0){var _0x63e92b=typeof _0x5d6da4[_0x3ee3('0x1c')]==='undefined'&&typeof _0x5d6da4[_0x3ee3('0x1d')]===_0x3ee3('0x1e');var _0x26f9ad=_0x2cc5d0[_0x3ee3('0x1f')];var _0x37a801=_0x63e92b?0x0:_0x5d6da4[_0x3ee3('0x1c')];var _0x20b8df=_0x63e92b?_0x2cc5d0[_0x3ee3('0x1f')]:_0x5d6da4[_0x3ee3('0x1c')]+_0x5d6da4[_0x3ee3('0x1d')];var _0x487e7b;if(_0x20b8df>=_0x26f9ad){_0x20b8df=_0x26f9ad;_0x487e7b=0xc8;}else{_0x487e7b=0xce;}_0x18eaba[_0x3ee3('0x1a')](_0x487e7b);return _0x18eaba['set'](_0x3ee3('0x20'),_0x37a801+'-'+_0x20b8df+'/'+_0x26f9ad)[_0x3ee3('0x21')](_0x2cc5d0);}return null;};}function patchUpdates(_0x313eb2){return function(_0x1fe8ba){try{jsonpatch['apply'](_0x1fe8ba,_0x313eb2,!![]);}catch(_0xfd1cbf){return BPromise[_0x3ee3('0x22')](_0xfd1cbf);}return _0x1fe8ba[_0x3ee3('0x23')]();};}function saveUpdates(_0x315956,_0x116575){return function(_0xd9c8eb){if(_0xd9c8eb){return _0xd9c8eb[_0x3ee3('0x24')](_0x315956)[_0x3ee3('0x25')](function(_0x307a3){return _0x307a3;});}return null;};}function removeEntity(_0x31564e,_0x3ce7ff){return function(_0x43ea6b){if(_0x43ea6b){return _0x43ea6b[_0x3ee3('0x26')]()[_0x3ee3('0x25')](function(){_0x31564e[_0x3ee3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d0811,_0x2f09fd){return function(_0x22527d){if(!_0x22527d){_0x5d0811[_0x3ee3('0x27')](0x194);}return _0x22527d;};}function handleError(_0x2265ef,_0x58485d){_0x58485d=_0x58485d||0x1f4;return function(_0x29277a){logger[_0x3ee3('0x28')](_0x29277a[_0x3ee3('0x29')]);if(_0x29277a[_0x3ee3('0x2a')]){delete _0x29277a[_0x3ee3('0x2a')];}_0x2265ef['status'](_0x58485d)['send'](_0x29277a);};}exports[_0x3ee3('0x2b')]=function(_0x4160a0,_0x19d4af){var _0x324368={},_0x57405a={},_0x19392e={'count':0x0,'rows':[]};var _0x4cf4da=_[_0x3ee3('0x2c')](db[_0x3ee3('0x2d')][_0x3ee3('0x2e')],function(_0x2556cc){return{'name':_0x2556cc[_0x3ee3('0x2f')],'type':_0x2556cc[_0x3ee3('0x30')]['key']};});_0x57405a['model']=_['map'](_0x4cf4da,_0x3ee3('0x2a'));_0x57405a[_0x3ee3('0x31')]=_[_0x3ee3('0x32')](_0x4160a0[_0x3ee3('0x31')]);_0x57405a[_0x3ee3('0x33')]=_[_0x3ee3('0x34')](_0x57405a[_0x3ee3('0x35')],_0x57405a['query']);_0x324368['attributes']=_['intersection'](_0x57405a[_0x3ee3('0x35')],qs[_0x3ee3('0x36')](_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x36')]));_0x324368[_0x3ee3('0x37')]=_0x324368['attributes']['length']?_0x324368[_0x3ee3('0x37')]:_0x57405a[_0x3ee3('0x35')];if(!_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x38')](_0x3ee3('0x39'))){_0x324368[_0x3ee3('0x1d')]=qs['limit'](_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x1d')]);_0x324368[_0x3ee3('0x1c')]=qs[_0x3ee3('0x1c')](_0x4160a0['query']['offset']);}_0x324368[_0x3ee3('0x3a')]=qs['sort'](_0x4160a0['query'][_0x3ee3('0x3b')]);_0x324368[_0x3ee3('0x3c')]=qs[_0x3ee3('0x33')](_['pick'](_0x4160a0[_0x3ee3('0x31')],_0x57405a[_0x3ee3('0x33')]),_0x4cf4da);if(_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x3d')]){_0x324368[_0x3ee3('0x3c')]=_['merge'](_0x324368[_0x3ee3('0x3c')],{'$or':_[_0x3ee3('0x2c')](_0x4cf4da,function(_0x3c920a){if(_0x3c920a[_0x3ee3('0x30')]!==_0x3ee3('0x3e')){var _0x483252={};_0x483252[_0x3c920a[_0x3ee3('0x2a')]]={'$like':'%'+_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x3d')]+'%'};return _0x483252;}})});}_0x324368=_[_0x3ee3('0x3f')]({},_0x324368,_0x4160a0['options']);var _0x4a0133={'where':_0x324368[_0x3ee3('0x3c')]};return db[_0x3ee3('0x2d')][_0x3ee3('0x1f')](_0x4a0133)[_0x3ee3('0x25')](function(_0x46cccf){_0x19392e[_0x3ee3('0x1f')]=_0x46cccf;if(_0x4160a0[_0x3ee3('0x31')][_0x3ee3('0x40')]){_0x324368['include']=[{'all':!![]}];}return db[_0x3ee3('0x2d')][_0x3ee3('0x41')](_0x324368);})[_0x3ee3('0x25')](function(_0x4c2247){_0x19392e[_0x3ee3('0x42')]=_0x4c2247;return _0x19392e;})[_0x3ee3('0x25')](respondWithFilteredResult(_0x19d4af,_0x324368))[_0x3ee3('0x43')](handleError(_0x19d4af,null));};exports[_0x3ee3('0x44')]=function(_0x4f188a,_0x320b95){var _0x8fa1ac={'raw':!![],'where':{'id':_0x4f188a['params']['id']}},_0x15eac0={};_0x15eac0[_0x3ee3('0x35')]=_[_0x3ee3('0x32')](db[_0x3ee3('0x2d')][_0x3ee3('0x2e')]);_0x15eac0['query']=_['keys'](_0x4f188a['query']);_0x15eac0[_0x3ee3('0x33')]=_[_0x3ee3('0x34')](_0x15eac0[_0x3ee3('0x35')],_0x15eac0['query']);_0x8fa1ac[_0x3ee3('0x37')]=_[_0x3ee3('0x34')](_0x15eac0['model'],qs[_0x3ee3('0x36')](_0x4f188a[_0x3ee3('0x31')][_0x3ee3('0x36')]));_0x8fa1ac['attributes']=_0x8fa1ac[_0x3ee3('0x37')][_0x3ee3('0x45')]?_0x8fa1ac[_0x3ee3('0x37')]:_0x15eac0['model'];if(_0x4f188a['query'][_0x3ee3('0x40')]){_0x8fa1ac[_0x3ee3('0x46')]=[{'all':!![]}];}_0x8fa1ac=_[_0x3ee3('0x3f')]({},_0x8fa1ac,_0x4f188a['options']);return db[_0x3ee3('0x2d')]['find'](_0x8fa1ac)[_0x3ee3('0x25')](handleEntityNotFound(_0x320b95,null))[_0x3ee3('0x25')](respondWithResult(_0x320b95,null))[_0x3ee3('0x43')](handleError(_0x320b95,null));};exports[_0x3ee3('0x47')]=function(_0x52efaf,_0x5064c0){return db['AnalyticTreeReport'][_0x3ee3('0x47')](_0x52efaf[_0x3ee3('0x48')],{})[_0x3ee3('0x25')](respondWithResult(_0x5064c0,0xc9))['catch'](handleError(_0x5064c0,null));};exports['update']=function(_0x2223f2,_0x9a0570){if(_0x2223f2['body']['id']){delete _0x2223f2[_0x3ee3('0x48')]['id'];}return db['AnalyticTreeReport'][_0x3ee3('0x49')]({'where':{'id':_0x2223f2[_0x3ee3('0x4a')]['id']}})[_0x3ee3('0x25')](handleEntityNotFound(_0x9a0570,null))[_0x3ee3('0x25')](saveUpdates(_0x2223f2[_0x3ee3('0x48')],null))['then'](respondWithResult(_0x9a0570,null))[_0x3ee3('0x43')](handleError(_0x9a0570,null));};exports['destroy']=function(_0x5d4338,_0x4790f4){return db[_0x3ee3('0x2d')][_0x3ee3('0x49')]({'where':{'id':_0x5d4338['params']['id']}})[_0x3ee3('0x25')](handleEntityNotFound(_0x4790f4,null))['then'](removeEntity(_0x4790f4,null))['catch'](handleError(_0x4790f4,null));};
\ No newline at end of file
+var _0xdd0a=['nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty'];(function(_0x58f1f2,_0x5d44a8){var _0x1c96b5=function(_0x6d56fa){while(--_0x6d56fa){_0x58f1f2['push'](_0x58f1f2['shift']());}};_0x1c96b5(++_0x5d44a8);}(_0xdd0a,0xfe));var _0xadd0=function(_0x48e370,_0x4b7b22){_0x48e370=_0x48e370-0x0;var _0x2ac719=_0xdd0a[_0x48e370];return _0x2ac719;};'use strict';var emlformat=require(_0xadd0('0x0'));var rimraf=require(_0xadd0('0x1'));var zipdir=require(_0xadd0('0x2'));var jsonpatch=require(_0xadd0('0x3'));var rp=require(_0xadd0('0x4'));var moment=require(_0xadd0('0x5'));var BPromise=require(_0xadd0('0x6'));var Mustache=require(_0xadd0('0x7'));var util=require(_0xadd0('0x8'));var path=require(_0xadd0('0x9'));var sox=require(_0xadd0('0xa'));var csv=require('to-csv');var ejs=require(_0xadd0('0xb'));var fs=require('fs');var fs_extra=require(_0xadd0('0xc'));var _=require('lodash');var squel=require(_0xadd0('0xd'));var crypto=require(_0xadd0('0xe'));var jsforce=require(_0xadd0('0xf'));var deskjs=require(_0xadd0('0x10'));var toCsv=require(_0xadd0('0x11'));var querystring=require(_0xadd0('0x12'));var Papa=require(_0xadd0('0x13'));var Redis=require(_0xadd0('0x14'));var authService=require(_0xadd0('0x15'));var qs=require(_0xadd0('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xadd0('0x17'));var logger=require(_0xadd0('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xadd0('0x19'));var licenseUtil=require(_0xadd0('0x1a'));var db=require(_0xadd0('0x1b'))['db'];function respondWithStatusCode(_0x11ab4c,_0x59d81a){_0x59d81a=_0x59d81a||0xcc;return function(_0x2c5fcb){if(_0x2c5fcb){return _0x11ab4c['sendStatus'](_0x59d81a);}return _0x11ab4c[_0xadd0('0x1c')](_0x59d81a)[_0xadd0('0x1d')]();};}function respondWithResult(_0x4825f8,_0x2a36be){_0x2a36be=_0x2a36be||0xc8;return function(_0x47d362){if(_0x47d362){return _0x4825f8[_0xadd0('0x1c')](_0x2a36be)['json'](_0x47d362);}};}function respondWithFilteredResult(_0xcb2918,_0x192345){return function(_0x1180b4){if(_0x1180b4){var _0x5dcfcc=typeof _0x192345[_0xadd0('0x1e')]===_0xadd0('0x1f')&&typeof _0x192345[_0xadd0('0x20')]==='undefined';var _0x2f4c0c=_0x1180b4[_0xadd0('0x21')];var _0x6995ab=_0x5dcfcc?0x0:_0x192345[_0xadd0('0x1e')];var _0x18cc19=_0x5dcfcc?_0x1180b4[_0xadd0('0x21')]:_0x192345[_0xadd0('0x1e')]+_0x192345['limit'];var _0x9b2cc4;if(_0x18cc19>=_0x2f4c0c){_0x18cc19=_0x2f4c0c;_0x9b2cc4=0xc8;}else{_0x9b2cc4=0xce;}_0xcb2918[_0xadd0('0x1c')](_0x9b2cc4);return _0xcb2918[_0xadd0('0x22')](_0xadd0('0x23'),_0x6995ab+'-'+_0x18cc19+'/'+_0x2f4c0c)[_0xadd0('0x24')](_0x1180b4);}return null;};}function patchUpdates(_0x25649f){return function(_0x1c1a1e){try{jsonpatch[_0xadd0('0x25')](_0x1c1a1e,_0x25649f,!![]);}catch(_0xee88ca){return BPromise[_0xadd0('0x26')](_0xee88ca);}return _0x1c1a1e[_0xadd0('0x27')]();};}function saveUpdates(_0x5bd1ca,_0x4754c7){return function(_0x1702fb){if(_0x1702fb){return _0x1702fb[_0xadd0('0x28')](_0x5bd1ca)[_0xadd0('0x29')](function(_0x3a6722){return _0x3a6722;});}return null;};}function removeEntity(_0x361028,_0x5154d2){return function(_0x3e24e6){if(_0x3e24e6){return _0x3e24e6['destroy']()[_0xadd0('0x29')](function(){_0x361028[_0xadd0('0x1c')](0xcc)[_0xadd0('0x1d')]();});}};}function handleEntityNotFound(_0x2b5227,_0x1d68c7){return function(_0x452886){if(!_0x452886){_0x2b5227['sendStatus'](0x194);}return _0x452886;};}function handleError(_0x3a4c87,_0x5eb4f2){_0x5eb4f2=_0x5eb4f2||0x1f4;return function(_0x4dc423){logger[_0xadd0('0x2a')](_0x4dc423[_0xadd0('0x2b')]);if(_0x4dc423[_0xadd0('0x2c')]){delete _0x4dc423[_0xadd0('0x2c')];}_0x3a4c87[_0xadd0('0x1c')](_0x5eb4f2)['send'](_0x4dc423);};}exports[_0xadd0('0x2d')]=function(_0x119bec,_0x5960e8){var _0x45b04a={},_0x42281f={},_0x1ed7ac={'count':0x0,'rows':[]};var _0x30a192=_[_0xadd0('0x2e')](db[_0xadd0('0x2f')][_0xadd0('0x30')],function(_0x194ba4){return{'name':_0x194ba4[_0xadd0('0x31')],'type':_0x194ba4[_0xadd0('0x32')]['key']};});_0x42281f[_0xadd0('0x33')]=_[_0xadd0('0x2e')](_0x30a192,_0xadd0('0x2c'));_0x42281f[_0xadd0('0x34')]=_[_0xadd0('0x35')](_0x119bec['query']);_0x42281f['filters']=_[_0xadd0('0x36')](_0x42281f[_0xadd0('0x33')],_0x42281f[_0xadd0('0x34')]);_0x45b04a[_0xadd0('0x37')]=_['intersection'](_0x42281f[_0xadd0('0x33')],qs[_0xadd0('0x38')](_0x119bec[_0xadd0('0x34')]['fields']));_0x45b04a['attributes']=_0x45b04a[_0xadd0('0x37')]['length']?_0x45b04a['attributes']:_0x42281f['model'];if(!_0x119bec[_0xadd0('0x34')][_0xadd0('0x39')](_0xadd0('0x3a'))){_0x45b04a[_0xadd0('0x20')]=qs['limit'](_0x119bec[_0xadd0('0x34')][_0xadd0('0x20')]);_0x45b04a[_0xadd0('0x1e')]=qs[_0xadd0('0x1e')](_0x119bec['query'][_0xadd0('0x1e')]);}_0x45b04a[_0xadd0('0x3b')]=qs['sort'](_0x119bec[_0xadd0('0x34')][_0xadd0('0x3c')]);_0x45b04a['where']=qs[_0xadd0('0x3d')](_[_0xadd0('0x3e')](_0x119bec['query'],_0x42281f[_0xadd0('0x3d')]),_0x30a192);if(_0x119bec[_0xadd0('0x34')][_0xadd0('0x3f')]){_0x45b04a['where']=_['merge'](_0x45b04a[_0xadd0('0x40')],{'$or':_[_0xadd0('0x2e')](_0x30a192,function(_0x1a40a1){if(_0x1a40a1[_0xadd0('0x32')]!=='VIRTUAL'){var _0x2e5a3c={};_0x2e5a3c[_0x1a40a1[_0xadd0('0x2c')]]={'$like':'%'+_0x119bec[_0xadd0('0x34')][_0xadd0('0x3f')]+'%'};return _0x2e5a3c;}})});}_0x45b04a=_[_0xadd0('0x41')]({},_0x45b04a,_0x119bec[_0xadd0('0x42')]);var _0x3fb1be={'where':_0x45b04a['where']};return db[_0xadd0('0x2f')][_0xadd0('0x21')](_0x3fb1be)['then'](function(_0x5d5769){_0x1ed7ac[_0xadd0('0x21')]=_0x5d5769;if(_0x119bec[_0xadd0('0x34')][_0xadd0('0x43')]){_0x45b04a[_0xadd0('0x44')]=[{'all':!![]}];}return db[_0xadd0('0x2f')][_0xadd0('0x45')](_0x45b04a);})['then'](function(_0x185512){_0x1ed7ac[_0xadd0('0x46')]=_0x185512;return _0x1ed7ac;})['then'](respondWithFilteredResult(_0x5960e8,_0x45b04a))[_0xadd0('0x47')](handleError(_0x5960e8,null));};exports[_0xadd0('0x48')]=function(_0x203a83,_0x4fc4e8){var _0x4e9053={'raw':!![],'where':{'id':_0x203a83[_0xadd0('0x49')]['id']}},_0x4f6f0c={};_0x4f6f0c[_0xadd0('0x33')]=_[_0xadd0('0x35')](db[_0xadd0('0x2f')][_0xadd0('0x30')]);_0x4f6f0c[_0xadd0('0x34')]=_['keys'](_0x203a83[_0xadd0('0x34')]);_0x4f6f0c[_0xadd0('0x3d')]=_[_0xadd0('0x36')](_0x4f6f0c[_0xadd0('0x33')],_0x4f6f0c[_0xadd0('0x34')]);_0x4e9053[_0xadd0('0x37')]=_[_0xadd0('0x36')](_0x4f6f0c[_0xadd0('0x33')],qs[_0xadd0('0x38')](_0x203a83[_0xadd0('0x34')][_0xadd0('0x38')]));_0x4e9053[_0xadd0('0x37')]=_0x4e9053[_0xadd0('0x37')]['length']?_0x4e9053[_0xadd0('0x37')]:_0x4f6f0c[_0xadd0('0x33')];if(_0x203a83[_0xadd0('0x34')][_0xadd0('0x43')]){_0x4e9053[_0xadd0('0x44')]=[{'all':!![]}];}_0x4e9053=_['merge']({},_0x4e9053,_0x203a83['options']);return db[_0xadd0('0x2f')][_0xadd0('0x4a')](_0x4e9053)['then'](handleEntityNotFound(_0x4fc4e8,null))['then'](respondWithResult(_0x4fc4e8,null))[_0xadd0('0x47')](handleError(_0x4fc4e8,null));};exports['create']=function(_0x376fa5,_0x289e6f){return db[_0xadd0('0x2f')][_0xadd0('0x4b')](_0x376fa5['body'],{})[_0xadd0('0x29')](respondWithResult(_0x289e6f,0xc9))['catch'](handleError(_0x289e6f,null));};exports[_0xadd0('0x28')]=function(_0x5dbc57,_0x37f751){if(_0x5dbc57[_0xadd0('0x4c')]['id']){delete _0x5dbc57[_0xadd0('0x4c')]['id'];}return db[_0xadd0('0x2f')][_0xadd0('0x4a')]({'where':{'id':_0x5dbc57['params']['id']}})[_0xadd0('0x29')](handleEntityNotFound(_0x37f751,null))[_0xadd0('0x29')](saveUpdates(_0x5dbc57['body'],null))[_0xadd0('0x29')](respondWithResult(_0x37f751,null))[_0xadd0('0x47')](handleError(_0x37f751,null));};exports[_0xadd0('0x4d')]=function(_0x3f8cc3,_0x352142){return db[_0xadd0('0x2f')][_0xadd0('0x4a')]({'where':{'id':_0x3f8cc3[_0xadd0('0x49')]['id']}})[_0xadd0('0x29')](handleEntityNotFound(_0x352142,null))[_0xadd0('0x29')](removeEntity(_0x352142,null))['catch'](handleError(_0x352142,null));};
\ No newline at end of file
index ca0a8ba..7be2760 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c1=['AnalyticTreeReport','analytics_report_trees','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','define'];(function(_0x4b9978,_0x58eb71){var _0x42f0e5=function(_0x4ff5dc){while(--_0x4ff5dc){_0x4b9978['push'](_0x4b9978['shift']());}};_0x42f0e5(++_0x58eb71);}(_0x23c1,0x1f1));var _0x123c=function(_0x2262d4,_0x1c5e27){_0x2262d4=_0x2262d4-0x0;var _0xd200dd=_0x23c1[_0x2262d4];return _0xd200dd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x123c('0x0'))(_0x123c('0x1'));var moment=require(_0x123c('0x2'));var BPromise=require(_0x123c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x123c('0x4'));var config=require(_0x123c('0x5'));var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0x5ae187,_0x31c697){return _0x5ae187[_0x123c('0x6')](_0x123c('0x7'),attributes,{'tableName':_0x123c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x606a=['AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0x5d4600,_0x2c572f){var _0x5e71ef=function(_0x4f046f){while(--_0x4f046f){_0x5d4600['push'](_0x5d4600['shift']());}};_0x5e71ef(++_0x2c572f);}(_0x606a,0x16e));var _0xa606=function(_0xbc2a02,_0xc8d757){_0xbc2a02=_0xbc2a02-0x0;var _0x133be5=_0x606a[_0xbc2a02];return _0x133be5;};'use strict';var _=require('lodash');var util=require(_0xa606('0x0'));var logger=require(_0xa606('0x1'))(_0xa606('0x2'));var moment=require(_0xa606('0x3'));var BPromise=require(_0xa606('0x4'));var rp=require(_0xa606('0x5'));var fs=require('fs');var path=require(_0xa606('0x6'));var rimraf=require('rimraf');var config=require(_0xa606('0x7'));var attributes=require(_0xa606('0x8'));module[_0xa606('0x9')]=function(_0x12852c,_0x20756a){return _0x12852c[_0xa606('0xa')](_0xa606('0xb'),attributes,{'tableName':_0xa606('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f243a60..2aeab97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x14df5e,_0x49f34e){var _0x2e9eb4=function(_0xa77170){while(--_0xa77170){_0x14df5e['push'](_0x14df5e['shift']());}};_0x2e9eb4(++_0x49f34e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x52c071,_0x3731a4){_0x52c071=_0x52c071-0x0;var _0x2246aa=_0x5f2f[_0x52c071];return _0x2246aa;};'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')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x38f619,_0x10675e){var _0x4554ab=function(_0x367abf){while(--_0x367abf){_0x38f619['push'](_0x38f619['shift']());}};_0x4554ab(++_0x10675e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x201b89,_0x4fd21f){_0x201b89=_0x201b89-0x0;var _0x2a7b85=_0x5f2f[_0x201b89];return _0x2a7b85;};'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')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index b043c7a..9627699 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5f=['destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','/:id','create','put','update','delete'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xaa5f,0xdf));var _0xfaa5=function(_0x2a0de1,_0x5b777f){_0x2a0de1=_0x2a0de1-0x0;var _0x48795a=_0xaa5f[_0x2a0de1];return _0x48795a;};'use strict';var multer=require('multer');var util=require(_0xfaa5('0x0'));var path=require('path');var timeout=require(_0xfaa5('0x1'));var express=require(_0xfaa5('0x2'));var router=express[_0xfaa5('0x3')]();var fs_extra=require(_0xfaa5('0x4'));var auth=require(_0xfaa5('0x5'));var interaction=require(_0xfaa5('0x6'));var config=require(_0xfaa5('0x7'));var controller=require(_0xfaa5('0x8'));router['get']('/',auth[_0xfaa5('0x9')](),controller['index']);router['get'](_0xfaa5('0xa'),auth[_0xfaa5('0x9')](),controller['show']);router['post']('/',auth[_0xfaa5('0x9')](),controller[_0xfaa5('0xb')]);router[_0xfaa5('0xc')]('/:id',auth[_0xfaa5('0x9')](),controller[_0xfaa5('0xd')]);router[_0xfaa5('0xe')](_0xfaa5('0xa'),auth[_0xfaa5('0x9')](),controller[_0xfaa5('0xf')]);module[_0xfaa5('0x10')]=router;
\ No newline at end of file
+var _0x5e6c=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x58ffd1,_0x1fbfc5){var _0x255219=function(_0x2be155){while(--_0x2be155){_0x58ffd1['push'](_0x58ffd1['shift']());}};_0x255219(++_0x1fbfc5);}(_0x5e6c,0x1dc));var _0xc5e6=function(_0x596e08,_0x552c0a){_0x596e08=_0x596e08-0x0;var _0x25cd55=_0x5e6c[_0x596e08];return _0x25cd55;};'use strict';var multer=require(_0xc5e6('0x0'));var util=require(_0xc5e6('0x1'));var path=require(_0xc5e6('0x2'));var timeout=require(_0xc5e6('0x3'));var express=require('express');var router=express[_0xc5e6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc5e6('0x5'));var interaction=require(_0xc5e6('0x6'));var config=require(_0xc5e6('0x7'));var controller=require(_0xc5e6('0x8'));router['get']('/',auth[_0xc5e6('0x9')](),controller[_0xc5e6('0xa')]);router['get'](_0xc5e6('0xb'),auth[_0xc5e6('0x9')](),controller[_0xc5e6('0xc')]);router[_0xc5e6('0xd')]('/',auth[_0xc5e6('0x9')](),controller[_0xc5e6('0xe')]);router[_0xc5e6('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xc5e6('0x10')]);router[_0xc5e6('0x11')](_0xc5e6('0xb'),auth[_0xc5e6('0x9')](),controller[_0xc5e6('0x12')]);module[_0xc5e6('0x13')]=router;
\ No newline at end of file
index 6174613..7fa1e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5577=['sequelize','STRING'];(function(_0x1fe559,_0x25fba7){var _0xb5b18c=function(_0x5ca09d){while(--_0x5ca09d){_0x1fe559['push'](_0x1fe559['shift']());}};_0xb5b18c(++_0x25fba7);}(_0x5577,0x1b4));var _0x7557=function(_0xab6f82,_0x48478b){_0xab6f82=_0xab6f82-0x0;var _0x153dd1=_0x5577[_0xab6f82];return _0x153dd1;};'use strict';var Sequelize=require(_0x7557('0x0'));module['exports']={'name':{'type':Sequelize[_0x7557('0x1')]},'basename':{'type':Sequelize[_0x7557('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe189=['sequelize','STRING'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xe189,0x194));var _0x9e18=function(_0x10ac9a,_0x2f67a6){_0x10ac9a=_0x10ac9a-0x0;var _0x198567=_0xe189[_0x10ac9a];return _0x198567;};'use strict';var Sequelize=require(_0x9e18('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0x9e18('0x1')]},'type':{'type':Sequelize[_0x9e18('0x1')]}};
\ No newline at end of file
index 18eec0d..0dfd2c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d5=['then','stack','name','send','index','map','Attachment','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','omit','updatedAt','body','createdAt','create','destroy','file','filename','mimetype','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','basename','download','eml-format','rimraf','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update'];(function(_0x19eddf,_0x3b50cf){var _0x1c10f6=function(_0x171010){while(--_0x171010){_0x19eddf['push'](_0x19eddf['shift']());}};_0x1c10f6(++_0x3b50cf);}(_0xd3d5,0xe7));var _0x5d3d=function(_0x23a30c,_0x378b0e){_0x23a30c=_0x23a30c-0x0;var _0x3a882c=_0xd3d5[_0x23a30c];return _0x3a882c;};'use strict';var emlformat=require(_0x5d3d('0x0'));var rimraf=require(_0x5d3d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5d3d('0x2'));var BPromise=require(_0x5d3d('0x3'));var Mustache=require(_0x5d3d('0x4'));var util=require('util');var path=require(_0x5d3d('0x5'));var sox=require(_0x5d3d('0x6'));var csv=require(_0x5d3d('0x7'));var ejs=require(_0x5d3d('0x8'));var fs=require('fs');var fs_extra=require(_0x5d3d('0x9'));var _=require('lodash');var squel=require(_0x5d3d('0xa'));var crypto=require(_0x5d3d('0xb'));var jsforce=require(_0x5d3d('0xc'));var deskjs=require(_0x5d3d('0xd'));var toCsv=require(_0x5d3d('0x7'));var querystring=require(_0x5d3d('0xe'));var Papa=require(_0x5d3d('0xf'));var Redis=require(_0x5d3d('0x10'));var authService=require(_0x5d3d('0x11'));var qs=require(_0x5d3d('0x12'));var as=require(_0x5d3d('0x13'));var hardwareService=require(_0x5d3d('0x14'));var logger=require(_0x5d3d('0x15'))(_0x5d3d('0x16'));var utils=require(_0x5d3d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5d3d('0x18'));var db=require(_0x5d3d('0x19'))['db'];function respondWithStatusCode(_0x56a6c3,_0x2e58b0){_0x2e58b0=_0x2e58b0||0xcc;return function(_0x3beb10){if(_0x3beb10){return _0x56a6c3[_0x5d3d('0x1a')](_0x2e58b0);}return _0x56a6c3[_0x5d3d('0x1b')](_0x2e58b0)[_0x5d3d('0x1c')]();};}function respondWithResult(_0x27c2ea,_0xcdbd11){_0xcdbd11=_0xcdbd11||0xc8;return function(_0x54b001){if(_0x54b001){return _0x27c2ea['status'](_0xcdbd11)[_0x5d3d('0x1d')](_0x54b001);}};}function respondWithFilteredResult(_0x229b11,_0x12e53b){return function(_0xa1c758){if(_0xa1c758){var _0x53f56b=typeof _0x12e53b[_0x5d3d('0x1e')]===_0x5d3d('0x1f')&&typeof _0x12e53b[_0x5d3d('0x20')]===_0x5d3d('0x1f');var _0x4577c5=_0xa1c758[_0x5d3d('0x21')];var _0x3a4cc8=_0x53f56b?0x0:_0x12e53b['offset'];var _0x5e2d1c=_0x53f56b?_0xa1c758[_0x5d3d('0x21')]:_0x12e53b[_0x5d3d('0x1e')]+_0x12e53b[_0x5d3d('0x20')];var _0x5a10bc;if(_0x5e2d1c>=_0x4577c5){_0x5e2d1c=_0x4577c5;_0x5a10bc=0xc8;}else{_0x5a10bc=0xce;}_0x229b11[_0x5d3d('0x1b')](_0x5a10bc);return _0x229b11['set'](_0x5d3d('0x22'),_0x3a4cc8+'-'+_0x5e2d1c+'/'+_0x4577c5)['json'](_0xa1c758);}return null;};}function patchUpdates(_0x563bbe){return function(_0x532841){try{jsonpatch[_0x5d3d('0x23')](_0x532841,_0x563bbe,!![]);}catch(_0x1f25bc){return BPromise[_0x5d3d('0x24')](_0x1f25bc);}return _0x532841[_0x5d3d('0x25')]();};}function saveUpdates(_0x10fa76,_0x515954){return function(_0x3b1cf6){if(_0x3b1cf6){return _0x3b1cf6[_0x5d3d('0x26')](_0x10fa76)['then'](function(_0xbe710){return _0xbe710;});}return null;};}function removeEntity(_0x9c3695,_0x4fa571){return function(_0x1d5c7e){if(_0x1d5c7e){return _0x1d5c7e['destroy']()[_0x5d3d('0x27')](function(){_0x9c3695['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e89c2,_0x462975){return function(_0x3a137d){if(!_0x3a137d){_0x5e89c2['sendStatus'](0x194);}return _0x3a137d;};}function handleError(_0x4398a6,_0x962e19){_0x962e19=_0x962e19||0x1f4;return function(_0x2d1c51){logger['error'](_0x2d1c51[_0x5d3d('0x28')]);if(_0x2d1c51[_0x5d3d('0x29')]){delete _0x2d1c51[_0x5d3d('0x29')];}_0x4398a6[_0x5d3d('0x1b')](_0x962e19)[_0x5d3d('0x2a')](_0x2d1c51);};}exports[_0x5d3d('0x2b')]=function(_0x45c245,_0x45a854){var _0x54429a={},_0x4887b2={},_0x2fbfa1={'count':0x0,'rows':[]};var _0x1eae2f=_[_0x5d3d('0x2c')](db[_0x5d3d('0x2d')][_0x5d3d('0x2e')],function(_0x33f5fa){return{'name':_0x33f5fa['fieldName'],'type':_0x33f5fa[_0x5d3d('0x2f')][_0x5d3d('0x30')]};});_0x4887b2[_0x5d3d('0x31')]=_['map'](_0x1eae2f,_0x5d3d('0x29'));_0x4887b2[_0x5d3d('0x32')]=_[_0x5d3d('0x33')](_0x45c245[_0x5d3d('0x32')]);_0x4887b2[_0x5d3d('0x34')]=_[_0x5d3d('0x35')](_0x4887b2[_0x5d3d('0x31')],_0x4887b2[_0x5d3d('0x32')]);_0x54429a[_0x5d3d('0x36')]=_[_0x5d3d('0x35')](_0x4887b2[_0x5d3d('0x31')],qs[_0x5d3d('0x37')](_0x45c245[_0x5d3d('0x32')]['fields']));_0x54429a[_0x5d3d('0x36')]=_0x54429a[_0x5d3d('0x36')][_0x5d3d('0x38')]?_0x54429a[_0x5d3d('0x36')]:_0x4887b2[_0x5d3d('0x31')];if(!_0x45c245[_0x5d3d('0x32')][_0x5d3d('0x39')](_0x5d3d('0x3a'))){_0x54429a[_0x5d3d('0x20')]=qs[_0x5d3d('0x20')](_0x45c245[_0x5d3d('0x32')][_0x5d3d('0x20')]);_0x54429a[_0x5d3d('0x1e')]=qs[_0x5d3d('0x1e')](_0x45c245[_0x5d3d('0x32')][_0x5d3d('0x1e')]);}_0x54429a[_0x5d3d('0x3b')]=qs['sort'](_0x45c245[_0x5d3d('0x32')]['sort']);_0x54429a[_0x5d3d('0x3c')]=qs[_0x5d3d('0x34')](_[_0x5d3d('0x3d')](_0x45c245[_0x5d3d('0x32')],_0x4887b2[_0x5d3d('0x34')]),_0x1eae2f);if(_0x45c245['query'][_0x5d3d('0x3e')]){_0x54429a['where']=_[_0x5d3d('0x3f')](_0x54429a[_0x5d3d('0x3c')],{'$or':_[_0x5d3d('0x2c')](_0x1eae2f,function(_0x38e4d3){if(_0x38e4d3['type']!==_0x5d3d('0x40')){var _0x5f6664={};_0x5f6664[_0x38e4d3[_0x5d3d('0x29')]]={'$like':'%'+_0x45c245[_0x5d3d('0x32')]['filter']+'%'};return _0x5f6664;}})});}_0x54429a=_['merge']({},_0x54429a,_0x45c245[_0x5d3d('0x41')]);var _0x57ae97={'where':_0x54429a['where']};return db[_0x5d3d('0x2d')][_0x5d3d('0x21')](_0x57ae97)[_0x5d3d('0x27')](function(_0x563fa8){_0x2fbfa1['count']=_0x563fa8;if(_0x45c245[_0x5d3d('0x32')][_0x5d3d('0x42')]){_0x54429a['include']=[{'all':!![]}];}return db['Attachment'][_0x5d3d('0x43')](_0x54429a);})[_0x5d3d('0x27')](function(_0x489c04){_0x2fbfa1[_0x5d3d('0x44')]=_0x489c04;return _0x2fbfa1;})[_0x5d3d('0x27')](respondWithFilteredResult(_0x45a854,_0x54429a))[_0x5d3d('0x45')](handleError(_0x45a854,null));};exports[_0x5d3d('0x46')]=function(_0xcfc440,_0x144a4a){var _0x113528={'raw':!![],'where':{'id':_0xcfc440[_0x5d3d('0x47')]['id']}},_0x45b99b={};_0x45b99b[_0x5d3d('0x31')]=_[_0x5d3d('0x33')](db[_0x5d3d('0x2d')][_0x5d3d('0x2e')]);_0x45b99b['query']=_[_0x5d3d('0x33')](_0xcfc440[_0x5d3d('0x32')]);_0x45b99b['filters']=_[_0x5d3d('0x35')](_0x45b99b[_0x5d3d('0x31')],_0x45b99b[_0x5d3d('0x32')]);_0x113528[_0x5d3d('0x36')]=_[_0x5d3d('0x35')](_0x45b99b['model'],qs[_0x5d3d('0x37')](_0xcfc440[_0x5d3d('0x32')][_0x5d3d('0x37')]));_0x113528[_0x5d3d('0x36')]=_0x113528[_0x5d3d('0x36')][_0x5d3d('0x38')]?_0x113528[_0x5d3d('0x36')]:_0x45b99b[_0x5d3d('0x31')];if(_0xcfc440['query'][_0x5d3d('0x42')]){_0x113528[_0x5d3d('0x48')]=[{'all':!![]}];}_0x113528=_[_0x5d3d('0x3f')]({},_0x113528,_0xcfc440['options']);return db[_0x5d3d('0x2d')][_0x5d3d('0x49')](_0x113528)[_0x5d3d('0x27')](handleEntityNotFound(_0x144a4a,null))[_0x5d3d('0x27')](respondWithResult(_0x144a4a,null))[_0x5d3d('0x45')](handleError(_0x144a4a,null));};exports['clone']=function(_0x187569,_0x459405){var _0x88f232={'where':{'id':_0x187569[_0x5d3d('0x47')]['id']}},_0x50e5f8={};_0x50e5f8['model']=_[_0x5d3d('0x33')](db[_0x5d3d('0x2d')]['rawAttributes']);_0x88f232[_0x5d3d('0x36')]=_[_0x5d3d('0x35')](_0x50e5f8[_0x5d3d('0x31')],qs[_0x5d3d('0x37')](_0x187569[_0x5d3d('0x32')][_0x5d3d('0x37')]));_0x88f232[_0x5d3d('0x36')]=_0x88f232[_0x5d3d('0x36')][_0x5d3d('0x38')]?_0x88f232[_0x5d3d('0x36')]:_0x50e5f8['model'];if(_0x187569[_0x5d3d('0x32')]['includeAll']){_0x88f232['include']=[{'all':!![]}];}_0x88f232=_[_0x5d3d('0x3f')]({},_0x88f232,_0x187569[_0x5d3d('0x41')]);return db[_0x5d3d('0x2d')][_0x5d3d('0x49')](_0x88f232)[_0x5d3d('0x27')](handleEntityNotFound(_0x459405,null))['then'](function(_0x3c1c7a){if(_0x3c1c7a){var _0x34d294=_0x3c1c7a['get']({'plain':!![]});_0x34d294=qs[_0x5d3d('0x4a')](_0x34d294,['id','createdAt',_0x5d3d('0x4b')]);_0x187569['body']=_[_0x5d3d('0x4a')](_0x187569[_0x5d3d('0x4c')],['id',_0x5d3d('0x4d'),_0x5d3d('0x4b')]);return db['Attachment'][_0x5d3d('0x4e')](_[_0x5d3d('0x3f')](_0x34d294,_0x187569[_0x5d3d('0x4c')]),{'include':_0x187569[_0x5d3d('0x32')][_0x5d3d('0x42')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x459405,0xc9))[_0x5d3d('0x45')](handleError(_0x459405,null));};exports[_0x5d3d('0x26')]=function(_0x1f182a,_0x15638b){if(_0x1f182a[_0x5d3d('0x4c')]['id']){delete _0x1f182a['body']['id'];}return db['Attachment'][_0x5d3d('0x49')]({'where':{'id':_0x1f182a[_0x5d3d('0x47')]['id']}})[_0x5d3d('0x27')](handleEntityNotFound(_0x15638b,null))[_0x5d3d('0x27')](saveUpdates(_0x1f182a[_0x5d3d('0x4c')],null))['then'](respondWithResult(_0x15638b,null))['catch'](handleError(_0x15638b,null));};exports[_0x5d3d('0x4f')]=function(_0x3010fc,_0x458ddd){return db['Attachment'][_0x5d3d('0x49')]({'where':{'id':_0x3010fc[_0x5d3d('0x47')]['id']}})[_0x5d3d('0x27')](handleEntityNotFound(_0x458ddd,null))[_0x5d3d('0x27')](removeEntity(_0x458ddd,null))[_0x5d3d('0x45')](handleError(_0x458ddd,null));};exports[_0x5d3d('0x4e')]=function(_0x211227,_0x2c0aa1,_0x3a11c1){_0x211227[_0x5d3d('0x4c')][_0x5d3d('0x29')]=_0x211227[_0x5d3d('0x50')]['originalname'];_0x211227[_0x5d3d('0x4c')]['basename']=_0x211227[_0x5d3d('0x50')][_0x5d3d('0x51')];_0x211227['body'][_0x5d3d('0x2f')]=_0x211227['file'][_0x5d3d('0x52')];return db['Attachment']['create'](_0x211227[_0x5d3d('0x4c')])[_0x5d3d('0x27')](respondWithResult(_0x2c0aa1,0xc9))[_0x5d3d('0x45')](handleError(_0x2c0aa1,null));};exports['download']=function(_0x39f3e5,_0x29e2e9,_0x5af68d){return db['Attachment'][_0x5d3d('0x53')]({'where':{'id':_0x39f3e5['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x29e2e9,null))[_0x5d3d('0x27')](function(_0x31e35c){if(_0x31e35c){var _0x409735=_0x31e35c[_0x5d3d('0x54')]!==null;var _0x43675e=path[_0x5d3d('0x55')](config[_0x5d3d('0x56')],_0x5d3d('0x57'));if(_0x409735){_0x43675e=path[_0x5d3d('0x55')](_0x43675e,'offline-chat/');}var _0x1a55a6=path[_0x5d3d('0x55')](_0x43675e,_0x31e35c[_0x5d3d('0x58')]);return _0x29e2e9[_0x5d3d('0x59')](_0x1a55a6);}})[_0x5d3d('0x45')](handleError(_0x29e2e9,null));};
\ No newline at end of file
+var _0x9f1e=['file','originalname','basename','mimetype','download','findOne','ChatOfflineMessageId','join','offline-chat/','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','reject','save','update','then','destroy','name','index','map','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','filter','options','Attachment','include','findAll','rows','keys','length','find','catch','clone','params','includeAll','get','omit','createdAt','updatedAt','body','create'];(function(_0x197abc,_0x2c6868){var _0xa85206=function(_0x3dbe6a){while(--_0x3dbe6a){_0x197abc['push'](_0x197abc['shift']());}};_0xa85206(++_0x2c6868);}(_0x9f1e,0x1b7));var _0xe9f1=function(_0x20ad38,_0x5492a5){_0x20ad38=_0x20ad38-0x0;var _0xb41a2c=_0x9f1e[_0x20ad38];return _0xb41a2c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9f1('0x0'));var zipdir=require(_0xe9f1('0x1'));var jsonpatch=require(_0xe9f1('0x2'));var rp=require(_0xe9f1('0x3'));var moment=require('moment');var BPromise=require(_0xe9f1('0x4'));var Mustache=require(_0xe9f1('0x5'));var util=require(_0xe9f1('0x6'));var path=require(_0xe9f1('0x7'));var sox=require('sox');var csv=require(_0xe9f1('0x8'));var ejs=require(_0xe9f1('0x9'));var fs=require('fs');var fs_extra=require(_0xe9f1('0xa'));var _=require(_0xe9f1('0xb'));var squel=require(_0xe9f1('0xc'));var crypto=require('crypto');var jsforce=require(_0xe9f1('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe9f1('0x8'));var querystring=require(_0xe9f1('0xe'));var Papa=require('papaparse');var Redis=require(_0xe9f1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe9f1('0x10'));var as=require(_0xe9f1('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe9f1('0x12'));var utils=require(_0xe9f1('0x13'));var config=require(_0xe9f1('0x14'));var licenseUtil=require(_0xe9f1('0x15'));var db=require(_0xe9f1('0x16'))['db'];function respondWithStatusCode(_0x240e3f,_0x579165){_0x579165=_0x579165||0xcc;return function(_0x43269f){if(_0x43269f){return _0x240e3f[_0xe9f1('0x17')](_0x579165);}return _0x240e3f[_0xe9f1('0x18')](_0x579165)[_0xe9f1('0x19')]();};}function respondWithResult(_0x5949b9,_0x4b42a7){_0x4b42a7=_0x4b42a7||0xc8;return function(_0x46b028){if(_0x46b028){return _0x5949b9[_0xe9f1('0x18')](_0x4b42a7)['json'](_0x46b028);}};}function respondWithFilteredResult(_0x4e524f,_0x170fd0){return function(_0x2eaf3d){if(_0x2eaf3d){var _0x26b1a1=typeof _0x170fd0['offset']===_0xe9f1('0x1a')&&typeof _0x170fd0[_0xe9f1('0x1b')]===_0xe9f1('0x1a');var _0x415b4a=_0x2eaf3d[_0xe9f1('0x1c')];var _0x2b1851=_0x26b1a1?0x0:_0x170fd0[_0xe9f1('0x1d')];var _0x2d448e=_0x26b1a1?_0x2eaf3d['count']:_0x170fd0[_0xe9f1('0x1d')]+_0x170fd0['limit'];var _0x1d15b8;if(_0x2d448e>=_0x415b4a){_0x2d448e=_0x415b4a;_0x1d15b8=0xc8;}else{_0x1d15b8=0xce;}_0x4e524f[_0xe9f1('0x18')](_0x1d15b8);return _0x4e524f[_0xe9f1('0x1e')]('Content-Range',_0x2b1851+'-'+_0x2d448e+'/'+_0x415b4a)[_0xe9f1('0x1f')](_0x2eaf3d);}return null;};}function patchUpdates(_0x297a84){return function(_0x513c57){try{jsonpatch[_0xe9f1('0x20')](_0x513c57,_0x297a84,!![]);}catch(_0x34aff5){return BPromise[_0xe9f1('0x21')](_0x34aff5);}return _0x513c57[_0xe9f1('0x22')]();};}function saveUpdates(_0x226510,_0x1784ab){return function(_0x3871fa){if(_0x3871fa){return _0x3871fa[_0xe9f1('0x23')](_0x226510)[_0xe9f1('0x24')](function(_0x13e7ac){return _0x13e7ac;});}return null;};}function removeEntity(_0x26e9fa,_0x5cf313){return function(_0x4c7184){if(_0x4c7184){return _0x4c7184[_0xe9f1('0x25')]()[_0xe9f1('0x24')](function(){_0x26e9fa[_0xe9f1('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31597f,_0x35831b){return function(_0x48c84b){if(!_0x48c84b){_0x31597f[_0xe9f1('0x17')](0x194);}return _0x48c84b;};}function handleError(_0x4e66dc,_0xcac115){_0xcac115=_0xcac115||0x1f4;return function(_0x1075da){logger['error'](_0x1075da['stack']);if(_0x1075da[_0xe9f1('0x26')]){delete _0x1075da[_0xe9f1('0x26')];}_0x4e66dc[_0xe9f1('0x18')](_0xcac115)['send'](_0x1075da);};}exports[_0xe9f1('0x27')]=function(_0x198cc7,_0x34362b){var _0x448e56={},_0x148a72={},_0x2878a8={'count':0x0,'rows':[]};var _0x256237=_[_0xe9f1('0x28')](db['Attachment'][_0xe9f1('0x29')],function(_0xe44ae4){return{'name':_0xe44ae4[_0xe9f1('0x2a')],'type':_0xe44ae4[_0xe9f1('0x2b')][_0xe9f1('0x2c')]};});_0x148a72['model']=_[_0xe9f1('0x28')](_0x256237,_0xe9f1('0x26'));_0x148a72[_0xe9f1('0x2d')]=_['keys'](_0x198cc7[_0xe9f1('0x2d')]);_0x148a72['filters']=_[_0xe9f1('0x2e')](_0x148a72['model'],_0x148a72[_0xe9f1('0x2d')]);_0x448e56[_0xe9f1('0x2f')]=_['intersection'](_0x148a72[_0xe9f1('0x30')],qs[_0xe9f1('0x31')](_0x198cc7['query'][_0xe9f1('0x31')]));_0x448e56[_0xe9f1('0x2f')]=_0x448e56[_0xe9f1('0x2f')]['length']?_0x448e56['attributes']:_0x148a72[_0xe9f1('0x30')];if(!_0x198cc7[_0xe9f1('0x2d')][_0xe9f1('0x32')](_0xe9f1('0x33'))){_0x448e56[_0xe9f1('0x1b')]=qs[_0xe9f1('0x1b')](_0x198cc7['query']['limit']);_0x448e56[_0xe9f1('0x1d')]=qs[_0xe9f1('0x1d')](_0x198cc7[_0xe9f1('0x2d')][_0xe9f1('0x1d')]);}_0x448e56[_0xe9f1('0x34')]=qs[_0xe9f1('0x35')](_0x198cc7[_0xe9f1('0x2d')][_0xe9f1('0x35')]);_0x448e56[_0xe9f1('0x36')]=qs['filters'](_[_0xe9f1('0x37')](_0x198cc7['query'],_0x148a72[_0xe9f1('0x38')]),_0x256237);if(_0x198cc7[_0xe9f1('0x2d')]['filter']){_0x448e56[_0xe9f1('0x36')]=_[_0xe9f1('0x39')](_0x448e56[_0xe9f1('0x36')],{'$or':_[_0xe9f1('0x28')](_0x256237,function(_0x2225e6){if(_0x2225e6[_0xe9f1('0x2b')]!=='VIRTUAL'){var _0x5dd32f={};_0x5dd32f[_0x2225e6[_0xe9f1('0x26')]]={'$like':'%'+_0x198cc7[_0xe9f1('0x2d')][_0xe9f1('0x3a')]+'%'};return _0x5dd32f;}})});}_0x448e56=_[_0xe9f1('0x39')]({},_0x448e56,_0x198cc7[_0xe9f1('0x3b')]);var _0x5c4a6a={'where':_0x448e56[_0xe9f1('0x36')]};return db[_0xe9f1('0x3c')][_0xe9f1('0x1c')](_0x5c4a6a)['then'](function(_0x4bef15){_0x2878a8[_0xe9f1('0x1c')]=_0x4bef15;if(_0x198cc7[_0xe9f1('0x2d')]['includeAll']){_0x448e56[_0xe9f1('0x3d')]=[{'all':!![]}];}return db[_0xe9f1('0x3c')][_0xe9f1('0x3e')](_0x448e56);})[_0xe9f1('0x24')](function(_0x4abdc4){_0x2878a8[_0xe9f1('0x3f')]=_0x4abdc4;return _0x2878a8;})[_0xe9f1('0x24')](respondWithFilteredResult(_0x34362b,_0x448e56))['catch'](handleError(_0x34362b,null));};exports['show']=function(_0x9bd41e,_0x10dbe6){var _0x33e228={'raw':!![],'where':{'id':_0x9bd41e['params']['id']}},_0x26304d={};_0x26304d['model']=_[_0xe9f1('0x40')](db[_0xe9f1('0x3c')][_0xe9f1('0x29')]);_0x26304d['query']=_[_0xe9f1('0x40')](_0x9bd41e['query']);_0x26304d[_0xe9f1('0x38')]=_['intersection'](_0x26304d[_0xe9f1('0x30')],_0x26304d[_0xe9f1('0x2d')]);_0x33e228[_0xe9f1('0x2f')]=_[_0xe9f1('0x2e')](_0x26304d[_0xe9f1('0x30')],qs['fields'](_0x9bd41e[_0xe9f1('0x2d')]['fields']));_0x33e228['attributes']=_0x33e228[_0xe9f1('0x2f')][_0xe9f1('0x41')]?_0x33e228['attributes']:_0x26304d[_0xe9f1('0x30')];if(_0x9bd41e['query']['includeAll']){_0x33e228[_0xe9f1('0x3d')]=[{'all':!![]}];}_0x33e228=_[_0xe9f1('0x39')]({},_0x33e228,_0x9bd41e[_0xe9f1('0x3b')]);return db['Attachment'][_0xe9f1('0x42')](_0x33e228)[_0xe9f1('0x24')](handleEntityNotFound(_0x10dbe6,null))[_0xe9f1('0x24')](respondWithResult(_0x10dbe6,null))[_0xe9f1('0x43')](handleError(_0x10dbe6,null));};exports[_0xe9f1('0x44')]=function(_0x107476,_0x5a4981){var _0x1ddf0b={'where':{'id':_0x107476[_0xe9f1('0x45')]['id']}},_0x4fba21={};_0x4fba21[_0xe9f1('0x30')]=_[_0xe9f1('0x40')](db[_0xe9f1('0x3c')]['rawAttributes']);_0x1ddf0b['attributes']=_[_0xe9f1('0x2e')](_0x4fba21[_0xe9f1('0x30')],qs[_0xe9f1('0x31')](_0x107476[_0xe9f1('0x2d')]['fields']));_0x1ddf0b[_0xe9f1('0x2f')]=_0x1ddf0b[_0xe9f1('0x2f')][_0xe9f1('0x41')]?_0x1ddf0b[_0xe9f1('0x2f')]:_0x4fba21[_0xe9f1('0x30')];if(_0x107476[_0xe9f1('0x2d')][_0xe9f1('0x46')]){_0x1ddf0b['include']=[{'all':!![]}];}_0x1ddf0b=_[_0xe9f1('0x39')]({},_0x1ddf0b,_0x107476[_0xe9f1('0x3b')]);return db['Attachment'][_0xe9f1('0x42')](_0x1ddf0b)['then'](handleEntityNotFound(_0x5a4981,null))[_0xe9f1('0x24')](function(_0x14f2a2){if(_0x14f2a2){var _0x2b1167=_0x14f2a2[_0xe9f1('0x47')]({'plain':!![]});_0x2b1167=qs[_0xe9f1('0x48')](_0x2b1167,['id',_0xe9f1('0x49'),_0xe9f1('0x4a')]);_0x107476[_0xe9f1('0x4b')]=_[_0xe9f1('0x48')](_0x107476[_0xe9f1('0x4b')],['id',_0xe9f1('0x49'),_0xe9f1('0x4a')]);return db[_0xe9f1('0x3c')][_0xe9f1('0x4c')](_[_0xe9f1('0x39')](_0x2b1167,_0x107476[_0xe9f1('0x4b')]),{'include':_0x107476[_0xe9f1('0x2d')][_0xe9f1('0x46')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x5a4981,0xc9))[_0xe9f1('0x43')](handleError(_0x5a4981,null));};exports[_0xe9f1('0x23')]=function(_0x35d223,_0x72325){if(_0x35d223[_0xe9f1('0x4b')]['id']){delete _0x35d223[_0xe9f1('0x4b')]['id'];}return db[_0xe9f1('0x3c')][_0xe9f1('0x42')]({'where':{'id':_0x35d223[_0xe9f1('0x45')]['id']}})[_0xe9f1('0x24')](handleEntityNotFound(_0x72325,null))[_0xe9f1('0x24')](saveUpdates(_0x35d223[_0xe9f1('0x4b')],null))[_0xe9f1('0x24')](respondWithResult(_0x72325,null))[_0xe9f1('0x43')](handleError(_0x72325,null));};exports[_0xe9f1('0x25')]=function(_0x358970,_0x2f67cb){return db[_0xe9f1('0x3c')][_0xe9f1('0x42')]({'where':{'id':_0x358970[_0xe9f1('0x45')]['id']}})[_0xe9f1('0x24')](handleEntityNotFound(_0x2f67cb,null))[_0xe9f1('0x24')](removeEntity(_0x2f67cb,null))[_0xe9f1('0x43')](handleError(_0x2f67cb,null));};exports[_0xe9f1('0x4c')]=function(_0x13c89b,_0x1a1ce2,_0x5322e8){_0x13c89b['body'][_0xe9f1('0x26')]=_0x13c89b[_0xe9f1('0x4d')][_0xe9f1('0x4e')];_0x13c89b[_0xe9f1('0x4b')][_0xe9f1('0x4f')]=_0x13c89b[_0xe9f1('0x4d')]['filename'];_0x13c89b[_0xe9f1('0x4b')][_0xe9f1('0x2b')]=_0x13c89b['file'][_0xe9f1('0x50')];return db[_0xe9f1('0x3c')]['create'](_0x13c89b[_0xe9f1('0x4b')])[_0xe9f1('0x24')](respondWithResult(_0x1a1ce2,0xc9))['catch'](handleError(_0x1a1ce2,null));};exports[_0xe9f1('0x51')]=function(_0x4ca6f8,_0x4ffdd0,_0x401d58){return db[_0xe9f1('0x3c')][_0xe9f1('0x52')]({'where':{'id':_0x4ca6f8[_0xe9f1('0x45')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x4ffdd0,null))[_0xe9f1('0x24')](function(_0x4b8888){if(_0x4b8888){var _0x464e9b=_0x4b8888[_0xe9f1('0x53')]!==null;var _0x378418=path[_0xe9f1('0x54')](config['root'],'server/files/attachments/');if(_0x464e9b){_0x378418=path[_0xe9f1('0x54')](_0x378418,_0xe9f1('0x55'));}var _0xb53a10=path[_0xe9f1('0x54')](_0x378418,_0x4b8888[_0xe9f1('0x4f')]);return _0x4ffdd0['download'](_0xb53a10);}})[_0xe9f1('0x43')](handleError(_0x4ffdd0,null));};
\ No newline at end of file
index 001b6c7..22a01e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ff1=['rimraf','../../config/environment','./attachment.attributes','define','Attachment','util','api','moment','bluebird','request-promise'];(function(_0x2baeb0,_0x1f819b){var _0x4429c5=function(_0x57e624){while(--_0x57e624){_0x2baeb0['push'](_0x2baeb0['shift']());}};_0x4429c5(++_0x1f819b);}(_0x4ff1,0x1c7));var _0x14ff=function(_0x16dced,_0x2f8d60){_0x16dced=_0x16dced-0x0;var _0x40e9d7=_0x4ff1[_0x16dced];return _0x40e9d7;};'use strict';var _=require('lodash');var util=require(_0x14ff('0x0'));var logger=require('../../config/logger')(_0x14ff('0x1'));var moment=require(_0x14ff('0x2'));var BPromise=require(_0x14ff('0x3'));var rp=require(_0x14ff('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14ff('0x5'));var config=require(_0x14ff('0x6'));var attributes=require(_0x14ff('0x7'));module['exports']=function(_0x4601c4,_0x1dd7d0){return _0x4601c4[_0x14ff('0x8')](_0x14ff('0x9'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x13be=['Attachment','attachments','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./attachment.attributes','exports','define'];(function(_0x4e1521,_0x19bb66){var _0x2dc388=function(_0x17ed4a){while(--_0x17ed4a){_0x4e1521['push'](_0x4e1521['shift']());}};_0x2dc388(++_0x19bb66);}(_0x13be,0xf2));var _0xe13b=function(_0x509cd3,_0x2f3032){_0x509cd3=_0x509cd3-0x0;var _0x3cdd06=_0x13be[_0x509cd3];return _0x3cdd06;};'use strict';var _=require(_0xe13b('0x0'));var util=require('util');var logger=require(_0xe13b('0x1'))(_0xe13b('0x2'));var moment=require('moment');var BPromise=require(_0xe13b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe13b('0x4'));var rimraf=require(_0xe13b('0x5'));var config=require(_0xe13b('0x6'));var attributes=require(_0xe13b('0x7'));module[_0xe13b('0x8')]=function(_0x49b29f,_0x57441b){return _0x49b29f[_0xe13b('0x9')](_0xe13b('0xa'),attributes,{'tableName':_0xe13b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e332616..306cbe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49a=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Attachment,\x20%s,\x20%s','message','result','catch','CreateAttachment','body','options','raw','lodash'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xb49a,0xfb));var _0xab49=function(_0x133851,_0x4d6780){_0x133851=_0x133851-0x0;var _0x188215=_0xb49a[_0x133851];return _0x188215;};'use strict';var _=require(_0xab49('0x0'));var util=require(_0xab49('0x1'));var moment=require(_0xab49('0x2'));var BPromise=require(_0xab49('0x3'));var rs=require(_0xab49('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab49('0x5'))['db'];var utils=require(_0xab49('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xab49('0x7'));var jayson=require(_0xab49('0x8'));var client=jayson[_0xab49('0x9')][_0xab49('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x57ea72,_0x26a98a,_0xd86a5){return new BPromise(function(_0x4d4d00,_0x15f259){return client[_0xab49('0xb')](_0x57ea72,_0xd86a5)[_0xab49('0xc')](function(_0x79f764){logger[_0xab49('0xd')]('Attachment,\x20%s,\x20%s',_0x26a98a,'request\x20sent');logger[_0xab49('0xe')](_0xab49('0xf'),_0x26a98a,_0xab49('0x10'),JSON[_0xab49('0x11')](_0x79f764));if(_0x79f764[_0xab49('0x12')]){if(_0x79f764['error'][_0xab49('0x13')]===0x1f4){logger[_0xab49('0x12')](_0xab49('0x14'),_0x26a98a,_0x79f764[_0xab49('0x12')][_0xab49('0x15')]);return _0x15f259(_0x79f764[_0xab49('0x12')][_0xab49('0x15')]);}logger[_0xab49('0x12')](_0xab49('0x14'),_0x26a98a,_0x79f764[_0xab49('0x12')][_0xab49('0x15')]);return _0x4d4d00(_0x79f764['error'][_0xab49('0x15')]);}else{logger[_0xab49('0xd')](_0xab49('0x14'),_0x26a98a,_0xab49('0x10'));_0x4d4d00(_0x79f764[_0xab49('0x16')]['message']);}})[_0xab49('0x17')](function(_0x2cbcff){logger[_0xab49('0x12')](_0xab49('0x14'),_0x26a98a,_0x2cbcff);_0x15f259(_0x2cbcff);});});}exports[_0xab49('0x18')]=function(_0x47f977){var _0x167a2a=this;return new Promise(function(_0x24cb8f,_0x28449b){return db['Attachment']['create'](_0x47f977[_0xab49('0x19')],{'raw':_0x47f977[_0xab49('0x1a')]?_0x47f977['options'][_0xab49('0x1b')]===undefined?!![]:![]:!![]})[_0xab49('0xc')](function(_0x49b716){logger[_0xab49('0xd')]('CreateAttachment',_0x47f977);logger[_0xab49('0xe')](_0xab49('0x18'),_0x47f977,JSON['stringify'](_0x49b716));_0x24cb8f(_0x49b716);})['catch'](function(_0x333506){logger['error'](_0xab49('0x18'),_0x333506['message'],_0x47f977);_0x28449b(_0x167a2a[_0xab49('0x12')](0x1f4,_0x333506[_0xab49('0x15')]));});});};
\ No newline at end of file
+var _0xf25a=['Attachment','create','body','options','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','then','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateAttachment'];(function(_0x3fb5eb,_0x5947a6){var _0x481291=function(_0x74e4e){while(--_0x74e4e){_0x3fb5eb['push'](_0x3fb5eb['shift']());}};_0x481291(++_0x5947a6);}(_0xf25a,0x195));var _0xaf25=function(_0x2a42ce,_0x38d859){_0x2a42ce=_0x2a42ce-0x0;var _0x4bce71=_0xf25a[_0x2a42ce];return _0x4bce71;};'use strict';var _=require(_0xaf25('0x0'));var util=require(_0xaf25('0x1'));var moment=require(_0xaf25('0x2'));var BPromise=require('bluebird');var rs=require(_0xaf25('0x3'));var fs=require('fs');var Redis=require(_0xaf25('0x4'));var db=require(_0xaf25('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf25('0x6'))(_0xaf25('0x7'));var config=require(_0xaf25('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xaf25('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48c6e6,_0x4b7258,_0x457ba5){return new BPromise(function(_0x41b3cd,_0x61e8d){return client['request'](_0x48c6e6,_0x457ba5)[_0xaf25('0xa')](function(_0x24ac0a){logger[_0xaf25('0xb')](_0xaf25('0xc'),_0x4b7258,_0xaf25('0xd'));logger['debug'](_0xaf25('0xe'),_0x4b7258,_0xaf25('0xd'),JSON[_0xaf25('0xf')](_0x24ac0a));if(_0x24ac0a[_0xaf25('0x10')]){if(_0x24ac0a['error']['code']===0x1f4){logger[_0xaf25('0x10')](_0xaf25('0xc'),_0x4b7258,_0x24ac0a[_0xaf25('0x10')][_0xaf25('0x11')]);return _0x61e8d(_0x24ac0a[_0xaf25('0x10')]['message']);}logger['error'](_0xaf25('0xc'),_0x4b7258,_0x24ac0a['error'][_0xaf25('0x11')]);return _0x41b3cd(_0x24ac0a[_0xaf25('0x10')][_0xaf25('0x11')]);}else{logger[_0xaf25('0xb')]('Attachment,\x20%s,\x20%s',_0x4b7258,_0xaf25('0xd'));_0x41b3cd(_0x24ac0a['result']['message']);}})[_0xaf25('0x12')](function(_0x4b396d){logger[_0xaf25('0x10')](_0xaf25('0xc'),_0x4b7258,_0x4b396d);_0x61e8d(_0x4b396d);});});}exports[_0xaf25('0x13')]=function(_0x2c815a){var _0x28bb0e=this;return new Promise(function(_0x10ed9a,_0x615537){return db[_0xaf25('0x14')][_0xaf25('0x15')](_0x2c815a[_0xaf25('0x16')],{'raw':_0x2c815a['options']?_0x2c815a[_0xaf25('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xaf25('0xa')](function(_0x396af4){logger[_0xaf25('0xb')](_0xaf25('0x13'),_0x2c815a);logger[_0xaf25('0x18')](_0xaf25('0x13'),_0x2c815a,JSON[_0xaf25('0xf')](_0x396af4));_0x10ed9a(_0x396af4);})[_0xaf25('0x12')](function(_0x2d8b66){logger[_0xaf25('0x10')](_0xaf25('0x13'),_0x2d8b66[_0xaf25('0x11')],_0x2c815a);_0x615537(_0x28bb0e[_0xaf25('0x10')](0x1f4,_0x2d8b66[_0xaf25('0x11')]));});});};
\ No newline at end of file
index 5884697..4daba56 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(_0x19159a,_0x1cb5c3){var _0xa677f4=function(_0x24bb85){while(--_0x24bb85){_0x19159a['push'](_0x19159a['shift']());}};_0xa677f4(++_0x1cb5c3);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./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 _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x98c52d,_0x4136ec){var _0x295938=function(_0x588010){while(--_0x588010){_0x98c52d['push'](_0x98c52d['shift']());}};_0x295938(++_0x4136ec);}(_0xb10b,0x12a));var _0xbb10=function(_0xbaf094,_0x2f86ad){_0xbaf094=_0xbaf094-0x0;var _0x3974fd=_0xb10b[_0xbaf094];return _0x3974fd;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
index ddaf892..0b8920b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858e=['admin','blockDuration','minutes','getLicense','status','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','password','User','passport','passport-local','Strategy','moment','bluebird','../../mysqldb','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','role','disabled','blocked','online'];(function(_0xace1ac,_0x2d20a8){var _0x103c4c=function(_0x12ed69){while(--_0x12ed69){_0xace1ac['push'](_0xace1ac['shift']());}};_0x103c4c(++_0x2d20a8);}(_0x858e,0x16e));var _0xe858=function(_0x4b2873,_0x368dcc){_0x4b2873=_0x4b2873-0x0;var _0x169a18=_0x858e[_0x4b2873];return _0x169a18;};'use strict';var passport=require(_0xe858('0x0'));var LocalStrategy=require(_0xe858('0x1'))[_0xe858('0x2')];var moment=require(_0xe858('0x3'));var ActiveDirectory=require('activedirectory2');var BPromise=require(_0xe858('0x4'));var util=require('util');var db=require(_0xe858('0x5'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xe858('0x6'));var config=require(_0xe858('0x7'));var logger=require(_0xe858('0x8'))(_0xe858('0x9'));function isActiveDirectoryConfigured(_0x4c71b7){var _0x225636=![];if(typeof _0x4c71b7[_0xe858('0xa')]!==_0xe858('0xb')){_0x225636=_0x4c71b7[_0xe858('0xa')][_0xe858('0xc')]&&_0x4c71b7[_0xe858('0xa')]['url']&&_0x4c71b7[_0xe858('0xa')][_0xe858('0xd')];}return _0x225636;}function adAuthenticate(_0x4a9ac2,_0x12d73f,_0x1dfafb){return new BPromise(function(_0x5738d6,_0x1fb77a){try{var _0x10e064=new ActiveDirectory(_0x4a9ac2);_0x10e064[_0xe858('0xe')](_0x12d73f,_0x1dfafb,function(_0x3f4aff,_0x73c395){if(_0x3f4aff){logger['error'](_0xe858('0xf'),_0x12d73f,util[_0xe858('0x10')](_0x3f4aff,{'showHidden':![],'depth':null}));_0x1fb77a(_0xe858('0x11'));}else if(!_0x73c395){logger['error'](_0xe858('0x12'),_0x12d73f);_0x1fb77a(_0xe858('0x11'));}else{_0x5738d6(_0x73c395);}});}catch(_0x4da465){_0x1fb77a(_0x4da465);}});}function ActiveDirectoryAuthenticate(_0x3c63a2,_0x5c8e8c,_0x52137e,_0x234c99){var _0x1830d7,_0x577290;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xe858('0x13'),_0x5c8e8c);return _0x234c99(null,![],{'message':_0xe858('0x11')});}return db[_0xe858('0x14')][_0xe858('0x15')]({'where':{'id':0x1},'attributes':[_0xe858('0x16'),'blockDuration'],'raw':!![]})[_0xe858('0x17')](function(_0x1b5c04){_0x1830d7=_0x1b5c04;if(!_0x1830d7[_0xe858('0x16')]){logger['error'](_0xe858('0x18'),_0x5c8e8c);throw new Error(_0xe858('0x11'));}return _0x3c63a2[_0xe858('0x15')]({'attributes':['id',_0xe858('0x19'),'password','salt',_0xe858('0x1a'),_0xe858('0x1b'),_0xe858('0x1c'),'blockedAt',_0xe858('0x1d')],'where':{'name':_0x5c8e8c,'role':{'$or':[_0xe858('0x1e'),'user','agent']},'adSsoEnabled':!![]}});})[_0xe858('0x17')](function(_0x5c69ab){if(!_0x5c69ab||_0x5c69ab&&_0x5c69ab[_0xe858('0x19')]!==_0x5c8e8c){throw new Error(_0xe858('0x11'));}_0x577290=_0x5c69ab;var _0xc6e223=_0x577290[_0xe858('0x19')]+'@'+config['activedirectory'][_0xe858('0xd')];return adAuthenticate(config[_0xe858('0xa')],_0xc6e223,_0x52137e);})[_0xe858('0x17')](function(_0x15920f){if(_0x577290[_0xe858('0x1b')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x1830d7[_0xe858('0x1f')]>0x0){if(_0x577290[_0xe858('0x1c')]){if(moment(_0x577290['blockedAt'])['add'](_0x1830d7[_0xe858('0x1f')],_0xe858('0x20'))>moment()){throw new Error(_0xe858('0x11'));}return utils['clearBlockUser'](_0x577290,0x0,![],null)['then'](function(){return utils[_0xe858('0x21')](_0x577290);})[_0xe858('0x17')](function(){return _0x234c99(null,_0x577290);});}else{return utils[_0xe858('0x21')](_0x577290)[_0xe858('0x17')](function(){return _0x234c99(null,_0x577290);});}}else{return utils['getLicense'](_0x577290)[_0xe858('0x17')](function(){return _0x234c99(null,_0x577290);});}})['catch'](function(_0x409cc4){return _0x234c99(null,![],_0x409cc4);});}function handleError(_0x538fa4,_0x4c05d2,_0x161605){return _0x538fa4[_0xe858('0x22')](_0x4c05d2||0x1f4)['send']({'message':_0x161605?_0x161605[_0xe858('0x23')]||_0x161605:''});}exports[_0xe858('0x24')]=function(_0x173cdd,_0x1edf08,_0x2a81f8){passport[_0xe858('0xe')](_0xe858('0x25'),function(_0x5c2d1a,_0x18e6e3,_0x38e0ba){var _0x2a0c20=_0x5c2d1a||_0x38e0ba;if(_0x2a0c20){return handleError(_0x1edf08,0x191,_0x2a0c20);}if(!_0x18e6e3){return handleError(_0x1edf08,0x194,{'message':_0xe858('0x26')});}else{var _0x575d6b={'payload':{'id':_0x18e6e3['id'],'role':_0x18e6e3['role']},'options':{'expiresIn':0x15180}};return authService[_0xe858('0x27')](_0x575d6b)['then'](function(_0x2c876a){_0x1edf08[_0xe858('0x28')]({'id':_0x18e6e3['id'],'token':_0x2c876a,'statusCall':'','isAlreadyLogged':_0x18e6e3['online']});});}})(_0x173cdd,_0x1edf08,_0x2a81f8);};passport[_0xe858('0x29')]('ad-login',new LocalStrategy({'usernameField':_0xe858('0x19'),'passwordField':_0xe858('0x2a')},function(_0x2dfc4a,_0x2677cc,_0x32faa7){return ActiveDirectoryAuthenticate(db[_0xe858('0x2b')],_0x2dfc4a,_0x2677cc,_0x32faa7);}));
\ No newline at end of file
+var _0x3772=['adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','password','salt','role','disabled','blocked','blockedAt','online','admin','agent','add','minutes','clearBlockUser','getLicense','catch','status','message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','ad-login','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../components/auth/service','../../config/environment','../../config/logger','api','undefined','baseDN','activedirectory','url','domain','Error\x20authenticate\x20%s:\x20%s','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3772,0x1d5));var _0x2377=function(_0x2d24e2,_0x38c3af){_0x2d24e2=_0x2d24e2-0x0;var _0x330f61=_0x3772[_0x2d24e2];return _0x330f61;};'use strict';var passport=require(_0x2377('0x0'));var LocalStrategy=require(_0x2377('0x1'))[_0x2377('0x2')];var moment=require(_0x2377('0x3'));var ActiveDirectory=require(_0x2377('0x4'));var BPromise=require(_0x2377('0x5'));var util=require(_0x2377('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0x2377('0x7'));var utils=require('../../config/utils');var config=require(_0x2377('0x8'));var logger=require(_0x2377('0x9'))(_0x2377('0xa'));function isActiveDirectoryConfigured(_0x2be407){var _0x1835c9=![];if(typeof _0x2be407['activedirectory']!==_0x2377('0xb')){_0x1835c9=_0x2be407['activedirectory'][_0x2377('0xc')]&&_0x2be407[_0x2377('0xd')][_0x2377('0xe')]&&_0x2be407[_0x2377('0xd')][_0x2377('0xf')];}return _0x1835c9;}function adAuthenticate(_0x4ee5f3,_0x565503,_0x57b727){return new BPromise(function(_0x42916d,_0x1c6533){try{var _0xfa2a59=new ActiveDirectory(_0x4ee5f3);_0xfa2a59['authenticate'](_0x565503,_0x57b727,function(_0x39e596,_0x38240b){if(_0x39e596){logger['error'](_0x2377('0x10'),_0x565503,util['inspect'](_0x39e596,{'showHidden':![],'depth':null}));_0x1c6533('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x38240b){logger[_0x2377('0x11')](_0x2377('0x12'),_0x565503);_0x1c6533('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x42916d(_0x38240b);}});}catch(_0x4c2600){_0x1c6533(_0x4c2600);}});}function ActiveDirectoryAuthenticate(_0x202e61,_0x229cd5,_0x2aab47,_0x279e04){var _0x389a44,_0x2de57c;if(!isActiveDirectoryConfigured(config)){logger[_0x2377('0x11')](_0x2377('0x13'),_0x229cd5);return _0x279e04(null,![],{'message':_0x2377('0x14')});}return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0x2377('0x15'),_0x2377('0x16')],'raw':!![]})[_0x2377('0x17')](function(_0x356443){_0x389a44=_0x356443;if(!_0x389a44['adSsoEnabled']){logger['error'](_0x2377('0x18'),_0x229cd5);throw new Error(_0x2377('0x14'));}return _0x202e61[_0x2377('0x19')]({'attributes':['id',_0x2377('0x1a'),_0x2377('0x1b'),_0x2377('0x1c'),_0x2377('0x1d'),_0x2377('0x1e'),_0x2377('0x1f'),_0x2377('0x20'),_0x2377('0x21')],'where':{'name':_0x229cd5,'role':{'$or':[_0x2377('0x22'),'user',_0x2377('0x23')]},'adSsoEnabled':!![]}});})[_0x2377('0x17')](function(_0x1d2b8d){if(!_0x1d2b8d||_0x1d2b8d&&_0x1d2b8d[_0x2377('0x1a')]!==_0x229cd5){throw new Error(_0x2377('0x14'));}_0x2de57c=_0x1d2b8d;var _0x5e90c5=_0x2de57c[_0x2377('0x1a')]+'@'+config[_0x2377('0xd')][_0x2377('0xf')];return adAuthenticate(config[_0x2377('0xd')],_0x5e90c5,_0x2aab47);})['then'](function(_0x7ff330){if(_0x2de57c[_0x2377('0x1e')]){throw new Error(_0x2377('0x14'));}if(_0x389a44['blockDuration']>0x0){if(_0x2de57c[_0x2377('0x1f')]){if(moment(_0x2de57c[_0x2377('0x20')])[_0x2377('0x24')](_0x389a44['blockDuration'],_0x2377('0x25'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0x2377('0x26')](_0x2de57c,0x0,![],null)[_0x2377('0x17')](function(){return utils[_0x2377('0x27')](_0x2de57c);})['then'](function(){return _0x279e04(null,_0x2de57c);});}else{return utils[_0x2377('0x27')](_0x2de57c)[_0x2377('0x17')](function(){return _0x279e04(null,_0x2de57c);});}}else{return utils['getLicense'](_0x2de57c)['then'](function(){return _0x279e04(null,_0x2de57c);});}})[_0x2377('0x28')](function(_0xae1ad2){return _0x279e04(null,![],_0xae1ad2);});}function handleError(_0x3475fc,_0xf91a0d,_0x4059b4){return _0x3475fc[_0x2377('0x29')](_0xf91a0d||0x1f4)['send']({'message':_0x4059b4?_0x4059b4[_0x2377('0x2a')]||_0x4059b4:''});}exports['login']=function(_0x1a0d37,_0x5aa89f,_0x141427){passport['authenticate']('ad-login',function(_0x4ce1bd,_0x4531ab,_0x4f0b84){var _0x1c3551=_0x4ce1bd||_0x4f0b84;if(_0x1c3551){return handleError(_0x5aa89f,0x191,_0x1c3551);}if(!_0x4531ab){return handleError(_0x5aa89f,0x194,{'message':_0x2377('0x2b')});}else{var _0x44bb90={'payload':{'id':_0x4531ab['id'],'role':_0x4531ab[_0x2377('0x1d')]},'options':{'expiresIn':0x15180}};return authService[_0x2377('0x2c')](_0x44bb90)[_0x2377('0x17')](function(_0x2a44fa){_0x5aa89f[_0x2377('0x2d')]({'id':_0x4531ab['id'],'token':_0x2a44fa,'statusCall':'','isAlreadyLogged':_0x4531ab['online']});});}})(_0x1a0d37,_0x5aa89f,_0x141427);};passport[_0x2377('0x2e')](_0x2377('0x2f'),new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0x340ed6,_0x32b836,_0x46ffd1){return ActiveDirectoryAuthenticate(db[_0x2377('0x30')],_0x340ed6,_0x32b836,_0x46ffd1);}));
\ No newline at end of file
index 1caa7a7..a2a1b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb184=['exports','express','Router','post','login'];(function(_0x14147b,_0x18b45e){var _0x52ed9c=function(_0x1c8e51){while(--_0x1c8e51){_0x14147b['push'](_0x14147b['shift']());}};_0x52ed9c(++_0x18b45e);}(_0xb184,0x169));var _0x4b18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb184[_0x3dd15e];return _0x231fd0;};'use strict';var express=require(_0x4b18('0x0'));var router=express[_0x4b18('0x1')]();var controller=require('./authActiveDirectory.controller');router[_0x4b18('0x2')]('/',controller[_0x4b18('0x3')]);module[_0x4b18('0x4')]=router;
\ No newline at end of file
+var _0xb8bf=['express','Router','./authActiveDirectory.controller','post','login','exports'];(function(_0x2b4546,_0x4ca951){var _0x3d6ec5=function(_0x460361){while(--_0x460361){_0x2b4546['push'](_0x2b4546['shift']());}};_0x3d6ec5(++_0x4ca951);}(_0xb8bf,0xa8));var _0xfb8b=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xb8bf[_0x3947c9];return _0x2e7871;};'use strict';var express=require(_0xfb8b('0x0'));var router=express[_0xfb8b('0x1')]();var controller=require(_0xfb8b('0x2'));router[_0xfb8b('0x3')]('/',controller[_0xfb8b('0x4')]);module[_0xfb8b('0x5')]=router;
\ No newline at end of file
index ef8e81a..7ae9fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x7a54,0x106));var _0x47a5=function(_0x475074,_0x2dd2c0){_0x475074=_0x475074-0x0;var _0x3ff55a=_0x7a54[_0x475074];return _0x3ff55a;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x7a54,0x106));var _0x47a5=function(_0x51087e,_0x5eb300){_0x51087e=_0x51087e-0x0;var _0x5e8a9=_0x7a54[_0x51087e];return _0x5e8a9;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 477772a..d7f761b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c4d=['isMiddleware','express','passport','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','login','get','callback'];(function(_0x24259d,_0x64a194){var _0x5a701=function(_0x204516){while(--_0x204516){_0x24259d['push'](_0x24259d['shift']());}};_0x5a701(++_0x64a194);}(_0x0c4d,0x1a8));var _0xd0c4=function(_0x439413,_0x4af831){_0x439413=_0x439413-0x0;var _0x50655d=_0x0c4d[_0x439413];return _0x50655d;};'use strict';var express=require(_0xd0c4('0x0'));var passport=require(_0xd0c4('0x1'));var router=express['Router']();var controller=require(_0xd0c4('0x2'));var userController=require(_0xd0c4('0x3'));var authService=require(_0xd0c4('0x4'));router['get']('/',controller[_0xd0c4('0x5')]);router[_0xd0c4('0x6')]('/callback',controller[_0xd0c4('0x7')],authService[_0xd0c4('0x8')],userController[_0xd0c4('0x5')],authService['setTokenCookie']);module['exports']=router;
\ No newline at end of file
+var _0x09d3=['express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','isMiddleware','exports'];(function(_0x16183a,_0x482430){var _0x1f03d8=function(_0x1a0dae){while(--_0x1a0dae){_0x16183a['push'](_0x16183a['shift']());}};_0x1f03d8(++_0x482430);}(_0x09d3,0xa5));var _0x309d=function(_0x5a5af6,_0x1859de){_0x5a5af6=_0x5a5af6-0x0;var _0xddbe9b=_0x09d3[_0x5a5af6];return _0xddbe9b;};'use strict';var express=require(_0x309d('0x0'));var passport=require(_0x309d('0x1'));var router=express[_0x309d('0x2')]();var controller=require(_0x309d('0x3'));var userController=require(_0x309d('0x4'));var authService=require(_0x309d('0x5'));router[_0x309d('0x6')]('/',controller[_0x309d('0x7')]);router['get'](_0x309d('0x8'),controller['callback'],authService[_0x309d('0x9')],userController[_0x309d('0x7')],authService['setTokenCookie']);module[_0x309d('0xa')]=router;
\ No newline at end of file
index 87af7a0..91f286a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02fb=['error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','send','login','authenticate','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','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','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','allowedLoginAttempts','blockDuration','findOne','name','password','role','disabled','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','add','minutes','clearBlockUser','then','getLicense','catch','MailAccount','find','email','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','Smtp','request'];(function(_0x38c64d,_0x3633e6){var _0x22caea=function(_0x2c216e){while(--_0x2c216e){_0x38c64d['push'](_0x38c64d['shift']());}};_0x22caea(++_0x3633e6);}(_0x02fb,0x124));var _0xb02f=function(_0x805c55,_0x1b5354){_0x805c55=_0x805c55-0x0;var _0x5e7a75=_0x02fb[_0x805c55];return _0x5e7a75;};'use strict';var util=require(_0xb02f('0x0'));var passport=require(_0xb02f('0x1'));var LocalStrategy=require(_0xb02f('0x2'))[_0xb02f('0x3')];var jayson=require(_0xb02f('0x4'));var _=require(_0xb02f('0x5'));var rs=require('randomstring');var moment=require(_0xb02f('0x6'));var db=require(_0xb02f('0x7'))['db'];var authService=require(_0xb02f('0x8'));var utils=require(_0xb02f('0x9'));var client=jayson[_0xb02f('0xa')][_0xb02f('0xb')]({'port':0x232b});function localAuthenticate(_0x2467d7,_0x30b976,_0x2b3d63,_0x1a2a4){var _0x5df535,_0x108ebf;return db[_0xb02f('0xc')]['findOne']({'where':{'id':0x1},'attributes':[_0xb02f('0xd'),_0xb02f('0xe')],'raw':!![]})['then'](function(_0x21099c){_0x5df535=_0x21099c;return _0x2467d7[_0xb02f('0xf')]({'attributes':['id',_0xb02f('0x10'),_0xb02f('0x11'),'salt',_0xb02f('0x12'),_0xb02f('0x13'),'blocked',_0xb02f('0x14'),_0xb02f('0x15')],'where':{'name':_0x30b976,'role':{'$or':[_0xb02f('0x16'),_0xb02f('0x17'),_0xb02f('0x18')]}}});})['then'](function(_0x292b24){if(!_0x292b24||_0x292b24&&_0x292b24[_0xb02f('0x10')]!==_0x30b976){throw new Error(_0xb02f('0x19'));}else{_0x108ebf=_0x292b24;return _0x108ebf;}})['then'](function(){_0x108ebf['authenticate'](_0x2b3d63,function(_0x134772,_0x3e79f7){var _0x427bf4=_0x108ebf[_0xb02f('0x15')]+0x1;if(_0x134772){return _0x1a2a4(_0x134772);}else if(!_0x3e79f7){if(_0x108ebf[_0xb02f('0x13')]){return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});}else if(_0x5df535[_0xb02f('0xd')]>0x0){if(_0x108ebf[_0xb02f('0x1a')]){if(_0x5df535[_0xb02f('0xe')]>0x0){if(moment(_0x108ebf[_0xb02f('0x14')])[_0xb02f('0x1b')](_0x5df535[_0xb02f('0xe')],_0xb02f('0x1c'))>moment()){return _0x1a2a4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xb02f('0x1d')](_0x108ebf,_0x427bf4,![],null)[_0xb02f('0x1e')](function(){return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});});}}else{return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});}}else{if(_0x427bf4>=_0x5df535[_0xb02f('0xd')]){return utils[_0xb02f('0x1d')](_0x108ebf,0x0,!![],moment())['then'](function(){return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});});}else{return utils[_0xb02f('0x1d')](_0x108ebf,_0x427bf4,![],null)[_0xb02f('0x1e')](function(){return _0x1a2a4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});}}else{if(_0x108ebf['disabled']){return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});}else if(_0x5df535['allowedLoginAttempts']>0x0){if(_0x108ebf[_0xb02f('0x1a')]){if(_0x5df535[_0xb02f('0xe')]>0x0){if(moment(_0x108ebf[_0xb02f('0x14')])['add'](_0x5df535[_0xb02f('0xe')],_0xb02f('0x1c'))>moment()){return _0x1a2a4(null,![],{'message':_0xb02f('0x19')});}else{return utils[_0xb02f('0x1d')](_0x108ebf,0x0,![],null)[_0xb02f('0x1e')](function(){return utils[_0xb02f('0x1f')](_0x108ebf);})['then'](function(){return _0x1a2a4(null,_0x108ebf);});}}else{return _0x1a2a4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xb02f('0x1d')](_0x108ebf,0x0,![],null)[_0xb02f('0x1e')](function(){return utils[_0xb02f('0x1f')](_0x108ebf);})[_0xb02f('0x1e')](function(){return _0x1a2a4(null,_0x108ebf);})[_0xb02f('0x20')](function(_0x1a0760){return _0x1a2a4(null,![],_0x1a0760);});}}else{if(_0x108ebf[_0xb02f('0x1a')]){return _0x1a2a4(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['getLicense'](_0x108ebf)[_0xb02f('0x1e')](function(){return _0x1a2a4(null,_0x108ebf);});}}}});})['catch'](function(_0x383100){return _0x1a2a4(null,![],_0x383100);});}function sendServiceMail(_0x1a6a53){return db[_0xb02f('0x21')][_0xb02f('0x22')]({'where':{'service':!![]},'attributes':['id',_0xb02f('0x10'),_0xb02f('0x23')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0xb02f('0x24')],'as':_0xb02f('0x24')}]}]})[_0xb02f('0x1e')](function(_0x1c56ea){if(!_0x1c56ea){throw new Error(_0xb02f('0x25'));}var _0x4fb38c=_0x1c56ea[_0xb02f('0x26')]();var _0x45659b={'account':_0x4fb38c,'message':_[_0xb02f('0x27')]({'from':util[_0xb02f('0x28')](_0xb02f('0x29'),_0x1c56ea[_0xb02f('0x10')],_0x1c56ea[_0xb02f('0x23')]||_0x1c56ea[_0xb02f('0x2a')][_0xb02f('0x17')])},_0x1a6a53)};return client[_0xb02f('0x2b')]('SendMail',_0x45659b);})[_0xb02f('0x1e')](function(_0x3c67a6){if(_0x3c67a6[_0xb02f('0x2c')]){throw new Error(util['format'](_0xb02f('0x2d'),_0x3c67a6[_0xb02f('0x2c')][_0xb02f('0x2e')]||JSON['stringify'](_0x3c67a6[_0xb02f('0x2c')])));}return!![];});}function handleError(_0x3e9730,_0x4089ed,_0x1836a3){return _0x3e9730['status'](_0x4089ed||0x1f4)[_0xb02f('0x2f')]({'message':_0x1836a3?_0x1836a3[_0xb02f('0x2e')]||_0x1836a3:''});}exports[_0xb02f('0x30')]=function(_0x294ed1,_0x5ca5a2,_0x2dfbfe){passport[_0xb02f('0x31')](_0xb02f('0x32'),function(_0x44bc58,_0x4c8a85,_0x530fb4){var _0x21a026=_0x44bc58||_0x530fb4;if(_0x21a026){return handleError(_0x5ca5a2,0x191,_0x21a026);}if(!_0x4c8a85){return handleError(_0x5ca5a2,0x194,{'message':_0xb02f('0x33')});}else{var _0x21179f={'payload':{'id':_0x4c8a85['id'],'role':_0x4c8a85[_0xb02f('0x12')]},'options':{'expiresIn':0x15180}};return authService[_0xb02f('0x34')](_0x21179f)[_0xb02f('0x1e')](function(_0x4872e9){_0x5ca5a2['json']({'id':_0x4c8a85['id'],'token':_0x4872e9,'statusCall':'','isAlreadyLogged':_0x4c8a85['online']});});}})(_0x294ed1,_0x5ca5a2,_0x2dfbfe);};exports[_0xb02f('0x35')]=function(_0x83a3db,_0x59b02a){if(!_0x83a3db[_0xb02f('0x36')][_0xb02f('0x23')]){return handleError(_0x59b02a,0x1f4,{'message':_0xb02f('0x37')});}var _0x50cbec=rs[_0xb02f('0x38')]();_0x83a3db[_0xb02f('0x36')]['email']=_0x83a3db[_0xb02f('0x36')]['email'][_0xb02f('0x39')]()[_0xb02f('0x3a')]();var _0x542b2d;return db['Setting'][_0xb02f('0xf')]({'where':{'id':0x1},'attributes':[_0xb02f('0xd'),'blockDuration'],'raw':!![]})[_0xb02f('0x1e')](function(_0x163dcc){_0x542b2d=_0x163dcc;return db[_0xb02f('0x3b')][_0xb02f('0x22')]({'where':{'email':_0x83a3db[_0xb02f('0x36')][_0xb02f('0x23')]}});})[_0xb02f('0x1e')](function(_0x26f563){if(!_0x26f563){throw new Error(_0xb02f('0x3c'));}if(_0x26f563[_0xb02f('0x13')]){throw new Error(_0xb02f('0x3d'));}if(_0x26f563[_0xb02f('0x1a')]){if(moment(_0x26f563[_0xb02f('0x14')])[_0xb02f('0x1b')](_0x542b2d['blockDuration'],_0xb02f('0x1c'))>moment()){throw new Error(_0xb02f('0x3e'));}else{_0x26f563[_0xb02f('0x1a')]=![];_0x26f563[_0xb02f('0x14')]=null;}}_0x26f563[_0xb02f('0x3f')]=_0x50cbec;_0x26f563[_0xb02f('0x40')]=Date[_0xb02f('0x41')]()+0x36ee80;return _0x26f563[_0xb02f('0x42')]();})[_0xb02f('0x1e')](function(){return sendServiceMail({'to':_0x83a3db[_0xb02f('0x36')][_0xb02f('0x23')],'subject':_0xb02f('0x43'),'text':_0xb02f('0x44')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xb02f('0x45')+_0x83a3db[_0xb02f('0x46')][_0xb02f('0x47')]+_0xb02f('0x48')+_0x50cbec+'\x0a\x0a'+_0xb02f('0x49')});})[_0xb02f('0x1e')](function(){_0x59b02a[_0xb02f('0x4a')](0xc8)[_0xb02f('0x2f')]({'message':'Reset\x20Email\x20sent!'});})['catch'](function(_0x8f3bd0){return handleError(_0x59b02a,0x1f4,_0x8f3bd0);});};exports[_0xb02f('0x4b')]=function(_0x2bcc2c,_0x4a841e){return db[_0xb02f('0x3b')]['find']({'where':{'resetPasswordToken':_0x2bcc2c['params'][_0xb02f('0x4c')],'resetPasswordExpires':{'$gt':Date[_0xb02f('0x41')]()}}})[_0xb02f('0x1e')](function(_0x3b5fa8){if(!_0x3b5fa8){throw new Error(_0xb02f('0x4d'));}return db[_0xb02f('0xc')]['findOne']({'attributes':['id','securePassword',_0xb02f('0x4e'),_0xb02f('0x4f')]})['then'](function(_0x2ebee7){if(_0x2ebee7['securePassword'])authService[_0xb02f('0x50')](_0x2bcc2c['body'][_0xb02f('0x11')]);if(!_0x2ebee7[_0xb02f('0x4e')]||!_0x3b5fa8[_0xb02f('0x51')])return _0x3b5fa8;authService['validatePasswordHistory'](_0x2bcc2c[_0xb02f('0x36')]['password'],_0x3b5fa8[_0xb02f('0x51')],_0x2ebee7['passwordHistoryLimit']);return _0x3b5fa8;})[_0xb02f('0x1e')](function(){_0x3b5fa8[_0xb02f('0x11')]=_0x2bcc2c[_0xb02f('0x36')][_0xb02f('0x11')];_0x3b5fa8[_0xb02f('0x3f')]=null;_0x3b5fa8[_0xb02f('0x40')]=null;return _0x3b5fa8[_0xb02f('0x42')]();});})['then'](function(){_0x4a841e[_0xb02f('0x4a')](0xc8)[_0xb02f('0x2f')]({'message':_0xb02f('0x52')});})[_0xb02f('0x20')](function(_0x5dcfbb){return handleError(_0x4a841e,0x1f4,_0x5dcfbb);});};passport[_0xb02f('0x53')](_0xb02f('0x32'),new LocalStrategy({'usernameField':_0xb02f('0x10'),'passwordField':'password'},function(_0x3a21a5,_0x2d339e,_0x45193a){return localAuthenticate(db[_0xb02f('0x3b')],_0x3a21a5,_0x2d339e,_0x45193a);}));
\ No newline at end of file
+var _0xbf7e=['name','password','salt','blocked','blockedAt','loginAttempts','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','disabled','blockDuration','clearBlockUser','add','minutes','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','getSmtpOptions','merge','\x22%s\x22\x20<%s>','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local-login','role','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','passwordHistoryLimit','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','use','util','passport','passport-local','Strategy','jayson/promise','lodash','moment','../../components/auth/service','../../config/utils','client','findOne','allowedLoginAttempts','then'];(function(_0x2688d5,_0x45db72){var _0x372637=function(_0x51c20d){while(--_0x51c20d){_0x2688d5['push'](_0x2688d5['shift']());}};_0x372637(++_0x45db72);}(_0xbf7e,0x183));var _0xebf7=function(_0x277522,_0x43d899){_0x277522=_0x277522-0x0;var _0x36c2de=_0xbf7e[_0x277522];return _0x36c2de;};'use strict';var util=require(_0xebf7('0x0'));var passport=require(_0xebf7('0x1'));var LocalStrategy=require(_0xebf7('0x2'))[_0xebf7('0x3')];var jayson=require(_0xebf7('0x4'));var _=require(_0xebf7('0x5'));var rs=require('randomstring');var moment=require(_0xebf7('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xebf7('0x7'));var utils=require(_0xebf7('0x8'));var client=jayson[_0xebf7('0x9')]['http']({'port':0x232b});function localAuthenticate(_0x44df47,_0x4368af,_0x1f0698,_0x712e67){var _0x4c6fd8,_0x37fc0d;return db['Setting'][_0xebf7('0xa')]({'where':{'id':0x1},'attributes':[_0xebf7('0xb'),'blockDuration'],'raw':!![]})[_0xebf7('0xc')](function(_0x3ccb9d){_0x4c6fd8=_0x3ccb9d;return _0x44df47[_0xebf7('0xa')]({'attributes':['id',_0xebf7('0xd'),_0xebf7('0xe'),_0xebf7('0xf'),'role','disabled',_0xebf7('0x10'),_0xebf7('0x11'),_0xebf7('0x12')],'where':{'name':_0x4368af,'role':{'$or':[_0xebf7('0x13'),'user',_0xebf7('0x14')]}}});})[_0xebf7('0xc')](function(_0x105a46){if(!_0x105a46||_0x105a46&&_0x105a46[_0xebf7('0xd')]!==_0x4368af){throw new Error(_0xebf7('0x15'));}else{_0x37fc0d=_0x105a46;return _0x37fc0d;}})[_0xebf7('0xc')](function(){_0x37fc0d[_0xebf7('0x16')](_0x1f0698,function(_0x5bb6bf,_0x5d97d4){var _0x13c5b6=_0x37fc0d[_0xebf7('0x12')]+0x1;if(_0x5bb6bf){return _0x712e67(_0x5bb6bf);}else if(!_0x5d97d4){if(_0x37fc0d[_0xebf7('0x17')]){return _0x712e67(null,![],{'message':_0xebf7('0x15')});}else if(_0x4c6fd8[_0xebf7('0xb')]>0x0){if(_0x37fc0d[_0xebf7('0x10')]){if(_0x4c6fd8[_0xebf7('0x18')]>0x0){if(moment(_0x37fc0d[_0xebf7('0x11')])['add'](_0x4c6fd8[_0xebf7('0x18')],'minutes')>moment()){return _0x712e67(null,![],{'message':_0xebf7('0x15')});}else{return utils[_0xebf7('0x19')](_0x37fc0d,_0x13c5b6,![],null)[_0xebf7('0xc')](function(){return _0x712e67(null,![],{'message':_0xebf7('0x15')});});}}else{return _0x712e67(null,![],{'message':_0xebf7('0x15')});}}else{if(_0x13c5b6>=_0x4c6fd8[_0xebf7('0xb')]){return utils[_0xebf7('0x19')](_0x37fc0d,0x0,!![],moment())[_0xebf7('0xc')](function(){return _0x712e67(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xebf7('0x19')](_0x37fc0d,_0x13c5b6,![],null)[_0xebf7('0xc')](function(){return _0x712e67(null,![],{'message':_0xebf7('0x15')});});}}}else{return _0x712e67(null,![],{'message':_0xebf7('0x15')});}}else{if(_0x37fc0d[_0xebf7('0x17')]){return _0x712e67(null,![],{'message':_0xebf7('0x15')});}else if(_0x4c6fd8[_0xebf7('0xb')]>0x0){if(_0x37fc0d[_0xebf7('0x10')]){if(_0x4c6fd8[_0xebf7('0x18')]>0x0){if(moment(_0x37fc0d[_0xebf7('0x11')])[_0xebf7('0x1a')](_0x4c6fd8[_0xebf7('0x18')],_0xebf7('0x1b'))>moment()){return _0x712e67(null,![],{'message':_0xebf7('0x15')});}else{return utils[_0xebf7('0x19')](_0x37fc0d,0x0,![],null)[_0xebf7('0xc')](function(){return utils[_0xebf7('0x1c')](_0x37fc0d);})[_0xebf7('0xc')](function(){return _0x712e67(null,_0x37fc0d);});}}else{return _0x712e67(null,![],{'message':_0xebf7('0x15')});}}else{return utils['clearBlockUser'](_0x37fc0d,0x0,![],null)['then'](function(){return utils[_0xebf7('0x1c')](_0x37fc0d);})['then'](function(){return _0x712e67(null,_0x37fc0d);})[_0xebf7('0x1d')](function(_0x16ed6a){return _0x712e67(null,![],_0x16ed6a);});}}else{if(_0x37fc0d[_0xebf7('0x10')]){return _0x712e67(null,![],{'message':_0xebf7('0x15')});}else{return utils[_0xebf7('0x1c')](_0x37fc0d)[_0xebf7('0xc')](function(){return _0x712e67(null,_0x37fc0d);});}}}});})[_0xebf7('0x1d')](function(_0xfa4e80){return _0x712e67(null,![],_0xfa4e80);});}function sendServiceMail(_0x27cb46){return db[_0xebf7('0x1e')][_0xebf7('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xebf7('0xd'),_0xebf7('0x20')],'include':[{'model':db[_0xebf7('0x21')],'as':_0xebf7('0x22'),'include':[{'model':db[_0xebf7('0x23')],'as':_0xebf7('0x23')}]}]})[_0xebf7('0xc')](function(_0x2fdf4d){if(!_0x2fdf4d){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x289474=_0x2fdf4d[_0xebf7('0x24')]();var _0x21f6a8={'account':_0x289474,'message':_[_0xebf7('0x25')]({'from':util['format'](_0xebf7('0x26'),_0x2fdf4d['name'],_0x2fdf4d[_0xebf7('0x20')]||_0x2fdf4d[_0xebf7('0x22')]['user'])},_0x27cb46)};return client['request'](_0xebf7('0x27'),_0x21f6a8);})[_0xebf7('0xc')](function(_0x599b27){if(_0x599b27[_0xebf7('0x28')]){throw new Error(util[_0xebf7('0x29')](_0xebf7('0x2a'),_0x599b27[_0xebf7('0x28')][_0xebf7('0x2b')]||JSON[_0xebf7('0x2c')](_0x599b27['error'])));}return!![];});}function handleError(_0xd6e1e8,_0x27fe82,_0x397abf){return _0xd6e1e8[_0xebf7('0x2d')](_0x27fe82||0x1f4)[_0xebf7('0x2e')]({'message':_0x397abf?_0x397abf[_0xebf7('0x2b')]||_0x397abf:''});}exports[_0xebf7('0x2f')]=function(_0x21a22d,_0xf1b194,_0xbea225){passport[_0xebf7('0x16')](_0xebf7('0x30'),function(_0x300548,_0x5ace5c,_0x405d6c){var _0x1d9b2b=_0x300548||_0x405d6c;if(_0x1d9b2b){return handleError(_0xf1b194,0x191,_0x1d9b2b);}if(!_0x5ace5c){return handleError(_0xf1b194,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x3f54ff={'payload':{'id':_0x5ace5c['id'],'role':_0x5ace5c[_0xebf7('0x31')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x3f54ff)[_0xebf7('0xc')](function(_0x4685d8){_0xf1b194[_0xebf7('0x32')]({'id':_0x5ace5c['id'],'token':_0x4685d8,'statusCall':'','isAlreadyLogged':_0x5ace5c[_0xebf7('0x33')]});});}})(_0x21a22d,_0xf1b194,_0xbea225);};exports[_0xebf7('0x34')]=function(_0x37291c,_0x50faf7){if(!_0x37291c[_0xebf7('0x35')][_0xebf7('0x20')]){return handleError(_0x50faf7,0x1f4,{'message':_0xebf7('0x36')});}var _0x1633aa=rs[_0xebf7('0x37')]();_0x37291c[_0xebf7('0x35')][_0xebf7('0x20')]=_0x37291c[_0xebf7('0x35')][_0xebf7('0x20')][_0xebf7('0x38')]()[_0xebf7('0x39')]();var _0x29b9c9;return db['Setting'][_0xebf7('0xa')]({'where':{'id':0x1},'attributes':[_0xebf7('0xb'),_0xebf7('0x18')],'raw':!![]})['then'](function(_0x3deb2a){_0x29b9c9=_0x3deb2a;return db[_0xebf7('0x3a')][_0xebf7('0x1f')]({'where':{'email':_0x37291c['body'][_0xebf7('0x20')]}});})[_0xebf7('0xc')](function(_0x52ea54){if(!_0x52ea54){throw new Error(_0xebf7('0x3b'));}if(_0x52ea54[_0xebf7('0x17')]){throw new Error(_0xebf7('0x3c'));}if(_0x52ea54[_0xebf7('0x10')]){if(moment(_0x52ea54[_0xebf7('0x11')])[_0xebf7('0x1a')](_0x29b9c9[_0xebf7('0x18')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x52ea54[_0xebf7('0x10')]=![];_0x52ea54['blockedAt']=null;}}_0x52ea54[_0xebf7('0x3d')]=_0x1633aa;_0x52ea54[_0xebf7('0x3e')]=Date[_0xebf7('0x3f')]()+0x36ee80;return _0x52ea54[_0xebf7('0x40')]();})[_0xebf7('0xc')](function(){return sendServiceMail({'to':_0x37291c['body']['email'],'subject':_0xebf7('0x41'),'text':_0xebf7('0x42')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xebf7('0x43')+_0x37291c['headers'][_0xebf7('0x44')]+_0xebf7('0x45')+_0x1633aa+'\x0a\x0a'+_0xebf7('0x46')});})[_0xebf7('0xc')](function(){_0x50faf7['status'](0xc8)[_0xebf7('0x2e')]({'message':'Reset\x20Email\x20sent!'});})[_0xebf7('0x1d')](function(_0x764f7d){return handleError(_0x50faf7,0x1f4,_0x764f7d);});};exports[_0xebf7('0x47')]=function(_0x2a3cf7,_0x3efa79){return db['User'][_0xebf7('0x1f')]({'where':{'resetPasswordToken':_0x2a3cf7[_0xebf7('0x48')]['token'],'resetPasswordExpires':{'$gt':Date[_0xebf7('0x3f')]()}}})[_0xebf7('0xc')](function(_0x5401bf){if(!_0x5401bf){throw new Error(_0xebf7('0x49'));}return db['Setting'][_0xebf7('0xa')]({'attributes':['id','securePassword','enforcePasswordHistory',_0xebf7('0x4a')]})[_0xebf7('0xc')](function(_0x12aa0f){if(_0x12aa0f[_0xebf7('0x4b')])authService[_0xebf7('0x4c')](_0x2a3cf7['body']['password']);if(!_0x12aa0f['enforcePasswordHistory']||!_0x5401bf[_0xebf7('0x4d')])return _0x5401bf;authService[_0xebf7('0x4e')](_0x2a3cf7[_0xebf7('0x35')]['password'],_0x5401bf[_0xebf7('0x4d')],_0x12aa0f['passwordHistoryLimit']);return _0x5401bf;})['then'](function(){_0x5401bf[_0xebf7('0xe')]=_0x2a3cf7['body'][_0xebf7('0xe')];_0x5401bf[_0xebf7('0x3d')]=null;_0x5401bf['resetPasswordExpires']=null;return _0x5401bf[_0xebf7('0x40')]();});})[_0xebf7('0xc')](function(){_0x3efa79[_0xebf7('0x2d')](0xc8)[_0xebf7('0x2e')]({'message':'Password\x20reset!'});})[_0xebf7('0x1d')](function(_0x3727ff){return handleError(_0x3efa79,0x1f4,_0x3727ff);});};passport[_0xebf7('0x4f')](_0xebf7('0x30'),new LocalStrategy({'usernameField':'name','passwordField':_0xebf7('0xe')},function(_0x331942,_0x5a930e,_0x419217){return localAuthenticate(db[_0xebf7('0x3a')],_0x331942,_0x5a930e,_0x419217);}));
\ No newline at end of file
index 63ebed7..188b5ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb93=['/forgot','/reset/:token','reset','exports','Router','./authLocal.controller','post','login'];(function(_0x3290b6,_0x5526e2){var _0xe0661a=function(_0x5b4c26){while(--_0x5b4c26){_0x3290b6['push'](_0x3290b6['shift']());}};_0xe0661a(++_0x5526e2);}(_0xcb93,0xc4));var _0x3cb9=function(_0xd22792,_0x3deea5){_0xd22792=_0xd22792-0x0;var _0x20563a=_0xcb93[_0xd22792];return _0x20563a;};'use strict';var express=require('express');var router=express[_0x3cb9('0x0')]();var controller=require(_0x3cb9('0x1'));router[_0x3cb9('0x2')]('/',controller[_0x3cb9('0x3')]);router[_0x3cb9('0x2')](_0x3cb9('0x4'),controller['forgot']);router[_0x3cb9('0x2')](_0x3cb9('0x5'),controller[_0x3cb9('0x6')]);module[_0x3cb9('0x7')]=router;
\ No newline at end of file
+var _0x91ad=['/forgot','forgot','/reset/:token','reset','exports','post'];(function(_0x4f8d61,_0x29eff0){var _0x3bc078=function(_0x4c7203){while(--_0x4c7203){_0x4f8d61['push'](_0x4f8d61['shift']());}};_0x3bc078(++_0x29eff0);}(_0x91ad,0xb9));var _0xd91a=function(_0x2c9b13,_0x4fa585){_0x2c9b13=_0x2c9b13-0x0;var _0x351b56=_0x91ad[_0x2c9b13];return _0x351b56;};'use strict';var express=require('express');var router=express['Router']();var controller=require('./authLocal.controller');router['post']('/',controller['login']);router[_0xd91a('0x0')](_0xd91a('0x1'),controller[_0xd91a('0x2')]);router[_0xd91a('0x0')](_0xd91a('0x3'),controller[_0xd91a('0x4')]);module[_0xd91a('0x5')]=router;
\ No newline at end of file
index 52bb6db..40ae4dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c65=['exports','STRING','BOOLEAN','sequelize'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x8c65,0x12f));var _0x58c6=function(_0x5aa3e9,_0x401e7d){_0x5aa3e9=_0x5aa3e9-0x0;var _0x4f1278=_0x8c65[_0x5aa3e9];return _0x4f1278;};'use strict';var Sequelize=require(_0x58c6('0x0'));module[_0x58c6('0x1')]={'name':{'type':Sequelize[_0x58c6('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x58c6('0x2')]},'description':{'type':Sequelize[_0x58c6('0x2')]},'status':{'type':Sequelize[_0x58c6('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
+var _0xbaf9=['STRING','BOOLEAN','INTEGER','sequelize'];(function(_0x443f2e,_0x26e706){var _0x17070d=function(_0x595f67){while(--_0x595f67){_0x443f2e['push'](_0x443f2e['shift']());}};_0x17070d(++_0x26e706);}(_0xbaf9,0x97));var _0x9baf=function(_0x48b94d,_0x2f1b95){_0x48b94d=_0x48b94d-0x0;var _0x30ca8f=_0xbaf9[_0x48b94d];return _0x30ca8f;};'use strict';var Sequelize=require(_0x9baf('0x0'));module['exports']={'name':{'type':Sequelize[_0x9baf('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x9baf('0x1')]},'description':{'type':Sequelize[_0x9baf('0x1')]},'status':{'type':Sequelize[_0x9baf('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x9baf('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index ae551ee..fe3a6cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa908=['length','find','create','body','Condition','addConditions','ids','findOne','rawAttributes','getConditions','addActions','Action','omit','getActions','eml-format','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/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Automation','includeAll','include','findAll','rows','catch','show','params'];(function(_0x5e4547,_0x242167){var _0xd36292=function(_0x2ab6e6){while(--_0x2ab6e6){_0x5e4547['push'](_0x5e4547['shift']());}};_0xd36292(++_0x242167);}(_0xa908,0xba));var _0x8a90=function(_0x237aab,_0x523604){_0x237aab=_0x237aab-0x0;var _0x55b525=_0xa908[_0x237aab];return _0x55b525;};'use strict';var emlformat=require(_0x8a90('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8a90('0x1'));var jsonpatch=require(_0x8a90('0x2'));var rp=require('request-promise');var moment=require(_0x8a90('0x3'));var BPromise=require(_0x8a90('0x4'));var Mustache=require(_0x8a90('0x5'));var util=require('util');var path=require(_0x8a90('0x6'));var sox=require(_0x8a90('0x7'));var csv=require(_0x8a90('0x8'));var ejs=require(_0x8a90('0x9'));var fs=require('fs');var fs_extra=require(_0x8a90('0xa'));var _=require(_0x8a90('0xb'));var squel=require(_0x8a90('0xc'));var crypto=require(_0x8a90('0xd'));var jsforce=require(_0x8a90('0xe'));var deskjs=require(_0x8a90('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8a90('0x10'));var Redis=require(_0x8a90('0x11'));var authService=require(_0x8a90('0x12'));var qs=require(_0x8a90('0x13'));var as=require(_0x8a90('0x14'));var hardwareService=require(_0x8a90('0x15'));var logger=require('../../config/logger')(_0x8a90('0x16'));var utils=require(_0x8a90('0x17'));var config=require(_0x8a90('0x18'));var licenseUtil=require(_0x8a90('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ecc0b,_0x1d7246){_0x1d7246=_0x1d7246||0xcc;return function(_0x184a3d){if(_0x184a3d){return _0x1ecc0b[_0x8a90('0x1a')](_0x1d7246);}return _0x1ecc0b[_0x8a90('0x1b')](_0x1d7246)[_0x8a90('0x1c')]();};}function respondWithResult(_0x192f1e,_0x788ddb){_0x788ddb=_0x788ddb||0xc8;return function(_0x2793ea){if(_0x2793ea){return _0x192f1e[_0x8a90('0x1b')](_0x788ddb)[_0x8a90('0x1d')](_0x2793ea);}};}function respondWithFilteredResult(_0x4e67ad,_0x471f93){return function(_0x4e48f4){if(_0x4e48f4){var _0x3c8455=typeof _0x471f93[_0x8a90('0x1e')]===_0x8a90('0x1f')&&typeof _0x471f93['limit']===_0x8a90('0x1f');var _0x1fb3bb=_0x4e48f4['count'];var _0xb51ba3=_0x3c8455?0x0:_0x471f93[_0x8a90('0x1e')];var _0x4c66bf=_0x3c8455?_0x4e48f4[_0x8a90('0x20')]:_0x471f93[_0x8a90('0x1e')]+_0x471f93[_0x8a90('0x21')];var _0x22058d;if(_0x4c66bf>=_0x1fb3bb){_0x4c66bf=_0x1fb3bb;_0x22058d=0xc8;}else{_0x22058d=0xce;}_0x4e67ad['status'](_0x22058d);return _0x4e67ad['set'](_0x8a90('0x22'),_0xb51ba3+'-'+_0x4c66bf+'/'+_0x1fb3bb)[_0x8a90('0x1d')](_0x4e48f4);}return null;};}function patchUpdates(_0x43c588){return function(_0x4a80ec){try{jsonpatch['apply'](_0x4a80ec,_0x43c588,!![]);}catch(_0x4406b7){return BPromise[_0x8a90('0x23')](_0x4406b7);}return _0x4a80ec[_0x8a90('0x24')]();};}function saveUpdates(_0x1ef256,_0x4ec444){return function(_0x3740dc){if(_0x3740dc){return _0x3740dc[_0x8a90('0x25')](_0x1ef256)[_0x8a90('0x26')](function(_0x3986d8){return _0x3986d8;});}return null;};}function removeEntity(_0x820a11,_0x4ed47c){return function(_0x490bbd){if(_0x490bbd){return _0x490bbd[_0x8a90('0x27')]()[_0x8a90('0x26')](function(){_0x820a11[_0x8a90('0x1b')](0xcc)[_0x8a90('0x1c')]();});}};}function handleEntityNotFound(_0x514fda,_0xdf0870){return function(_0x4e8a32){if(!_0x4e8a32){_0x514fda[_0x8a90('0x1a')](0x194);}return _0x4e8a32;};}function handleError(_0x3999c9,_0x15d1dc){_0x15d1dc=_0x15d1dc||0x1f4;return function(_0x5b06dd){logger[_0x8a90('0x28')](_0x5b06dd[_0x8a90('0x29')]);if(_0x5b06dd[_0x8a90('0x2a')]){delete _0x5b06dd[_0x8a90('0x2a')];}_0x3999c9[_0x8a90('0x1b')](_0x15d1dc)[_0x8a90('0x2b')](_0x5b06dd);};}exports['index']=function(_0x366fe0,_0x24e738){var _0x40554b={},_0x96871={},_0x40a3d2={'count':0x0,'rows':[]};var _0x4fd56d=_[_0x8a90('0x2c')](db['Automation']['rawAttributes'],function(_0x2d7b88){return{'name':_0x2d7b88[_0x8a90('0x2d')],'type':_0x2d7b88[_0x8a90('0x2e')]['key']};});_0x96871['model']=_[_0x8a90('0x2c')](_0x4fd56d,_0x8a90('0x2a'));_0x96871[_0x8a90('0x2f')]=_[_0x8a90('0x30')](_0x366fe0[_0x8a90('0x2f')]);_0x96871[_0x8a90('0x31')]=_[_0x8a90('0x32')](_0x96871[_0x8a90('0x33')],_0x96871['query']);_0x40554b[_0x8a90('0x34')]=_[_0x8a90('0x32')](_0x96871[_0x8a90('0x33')],qs[_0x8a90('0x35')](_0x366fe0['query'][_0x8a90('0x35')]));_0x40554b[_0x8a90('0x34')]=_0x40554b[_0x8a90('0x34')]['length']?_0x40554b[_0x8a90('0x34')]:_0x96871[_0x8a90('0x33')];if(!_0x366fe0[_0x8a90('0x2f')][_0x8a90('0x36')](_0x8a90('0x37'))){_0x40554b[_0x8a90('0x21')]=qs['limit'](_0x366fe0[_0x8a90('0x2f')][_0x8a90('0x21')]);_0x40554b[_0x8a90('0x1e')]=qs[_0x8a90('0x1e')](_0x366fe0['query']['offset']);}_0x40554b[_0x8a90('0x38')]=qs[_0x8a90('0x39')](_0x366fe0['query'][_0x8a90('0x39')]);_0x40554b[_0x8a90('0x3a')]=qs['filters'](_[_0x8a90('0x3b')](_0x366fe0[_0x8a90('0x2f')],_0x96871[_0x8a90('0x31')]),_0x4fd56d);if(_0x366fe0['query'][_0x8a90('0x3c')]){_0x40554b[_0x8a90('0x3a')]=_[_0x8a90('0x3d')](_0x40554b[_0x8a90('0x3a')],{'$or':_[_0x8a90('0x2c')](_0x4fd56d,function(_0x5ea39b){if(_0x5ea39b[_0x8a90('0x2e')]!==_0x8a90('0x3e')){var _0x20e6ec={};_0x20e6ec[_0x5ea39b['name']]={'$like':'%'+_0x366fe0[_0x8a90('0x2f')]['filter']+'%'};return _0x20e6ec;}})});}_0x40554b=_[_0x8a90('0x3d')]({},_0x40554b,_0x366fe0[_0x8a90('0x3f')]);var _0x1c4fb9={'where':_0x40554b[_0x8a90('0x3a')]};return db[_0x8a90('0x40')]['count'](_0x1c4fb9)[_0x8a90('0x26')](function(_0x4a3ac8){_0x40a3d2[_0x8a90('0x20')]=_0x4a3ac8;if(_0x366fe0[_0x8a90('0x2f')][_0x8a90('0x41')]){_0x40554b[_0x8a90('0x42')]=[{'all':!![]}];}return db[_0x8a90('0x40')][_0x8a90('0x43')](_0x40554b);})['then'](function(_0x532acf){_0x40a3d2[_0x8a90('0x44')]=_0x532acf;return _0x40a3d2;})['then'](respondWithFilteredResult(_0x24e738,_0x40554b))[_0x8a90('0x45')](handleError(_0x24e738,null));};exports[_0x8a90('0x46')]=function(_0x3cd123,_0x463ec6){var _0x8bfe19={'raw':![],'where':{'id':_0x3cd123[_0x8a90('0x47')]['id']}},_0x57b374={};_0x57b374[_0x8a90('0x33')]=_[_0x8a90('0x30')](db[_0x8a90('0x40')]['rawAttributes']);_0x57b374['query']=_[_0x8a90('0x30')](_0x3cd123['query']);_0x57b374[_0x8a90('0x31')]=_['intersection'](_0x57b374[_0x8a90('0x33')],_0x57b374['query']);_0x8bfe19[_0x8a90('0x34')]=_[_0x8a90('0x32')](_0x57b374[_0x8a90('0x33')],qs['fields'](_0x3cd123[_0x8a90('0x2f')][_0x8a90('0x35')]));_0x8bfe19[_0x8a90('0x34')]=_0x8bfe19[_0x8a90('0x34')][_0x8a90('0x48')]?_0x8bfe19[_0x8a90('0x34')]:_0x57b374[_0x8a90('0x33')];if(_0x3cd123[_0x8a90('0x2f')][_0x8a90('0x41')]){_0x8bfe19[_0x8a90('0x42')]=[{'all':!![]}];}_0x8bfe19=_[_0x8a90('0x3d')]({},_0x8bfe19,_0x3cd123[_0x8a90('0x3f')]);return db[_0x8a90('0x40')][_0x8a90('0x49')](_0x8bfe19)['then'](handleEntityNotFound(_0x463ec6,null))['then'](respondWithResult(_0x463ec6,null))[_0x8a90('0x45')](handleError(_0x463ec6,null));};exports[_0x8a90('0x4a')]=function(_0x4ced36,_0x404595){return db[_0x8a90('0x40')][_0x8a90('0x4a')](_0x4ced36[_0x8a90('0x4b')],{})[_0x8a90('0x26')](respondWithResult(_0x404595,0xc9))[_0x8a90('0x45')](handleError(_0x404595,null));};exports[_0x8a90('0x25')]=function(_0x2aa766,_0x5aa5f8){if(_0x2aa766[_0x8a90('0x4b')]['id']){delete _0x2aa766[_0x8a90('0x4b')]['id'];}return db['Automation'][_0x8a90('0x49')]({'where':{'id':_0x2aa766[_0x8a90('0x47')]['id']}})[_0x8a90('0x26')](handleEntityNotFound(_0x5aa5f8,null))[_0x8a90('0x26')](saveUpdates(_0x2aa766['body'],null))[_0x8a90('0x26')](respondWithResult(_0x5aa5f8,null))[_0x8a90('0x45')](handleError(_0x5aa5f8,null));};exports[_0x8a90('0x27')]=function(_0x4d684b,_0x53c466){return db[_0x8a90('0x40')][_0x8a90('0x49')]({'where':{'id':_0x4d684b[_0x8a90('0x47')]['id']}})[_0x8a90('0x26')](handleEntityNotFound(_0x53c466,null))[_0x8a90('0x26')](removeEntity(_0x53c466,null))['catch'](handleError(_0x53c466,null));};exports['addConditions']=function(_0x30af0b,_0x19b464,_0x1cc133){return db[_0x8a90('0x4c')][_0x8a90('0x49')]({'where':{'id':_0x30af0b[_0x8a90('0x47')]['id']}})[_0x8a90('0x26')](handleEntityNotFound(_0x19b464,null))[_0x8a90('0x26')](function(_0x4dd676){if(_0x4dd676){return _0x4dd676[_0x8a90('0x4d')](_0x30af0b['body'][_0x8a90('0x4e')],_['omit'](_0x30af0b[_0x8a90('0x4b')],['ids','id'])||{});}})[_0x8a90('0x26')](respondWithResult(_0x19b464,null))[_0x8a90('0x45')](handleError(_0x19b464,null));};exports['getConditions']=function(_0xb22db8,_0x28a56f,_0x1527a7){var _0x41a410={};var _0x41461a={};var _0x4d8157;var _0x5cc479;return db[_0x8a90('0x40')][_0x8a90('0x4f')]({'where':{'id':_0xb22db8[_0x8a90('0x47')]['id']}})[_0x8a90('0x26')](handleEntityNotFound(_0x28a56f,null))[_0x8a90('0x26')](function(_0x21802){if(_0x21802){_0x4d8157=_0x21802;_0x41461a[_0x8a90('0x33')]=_[_0x8a90('0x30')](db['Condition'][_0x8a90('0x50')]);_0x41461a[_0x8a90('0x2f')]=_[_0x8a90('0x30')](_0xb22db8['query']);_0x41461a['filters']=_['intersection'](_0x41461a[_0x8a90('0x33')],_0x41461a['query']);_0x41a410[_0x8a90('0x34')]=_[_0x8a90('0x32')](_0x41461a[_0x8a90('0x33')],qs[_0x8a90('0x35')](_0xb22db8['query']['fields']));_0x41a410[_0x8a90('0x34')]=_0x41a410['attributes'][_0x8a90('0x48')]?_0x41a410[_0x8a90('0x34')]:_0x41461a[_0x8a90('0x33')];_0x41a410['order']=qs[_0x8a90('0x39')](_0xb22db8[_0x8a90('0x2f')][_0x8a90('0x39')]);_0x41a410[_0x8a90('0x3a')]=qs[_0x8a90('0x31')](_[_0x8a90('0x3b')](_0xb22db8[_0x8a90('0x2f')],_0x41461a[_0x8a90('0x31')]));if(_0xb22db8[_0x8a90('0x2f')][_0x8a90('0x3c')]){_0x41a410[_0x8a90('0x3a')]=_['merge'](_0x41a410[_0x8a90('0x3a')],{'$or':_[_0x8a90('0x2c')](_0x41a410['attributes'],function(_0x2c1807){var _0x1a4b5d={};_0x1a4b5d[_0x2c1807]={'$like':'%'+_0xb22db8['query'][_0x8a90('0x3c')]+'%'};return _0x1a4b5d;})});}_0x41a410=_[_0x8a90('0x3d')]({},_0x41a410,_0xb22db8[_0x8a90('0x3f')]);return _0x4d8157[_0x8a90('0x51')](_0x41a410);}})[_0x8a90('0x26')](function(_0x41db8d){if(_0x41db8d){_0x5cc479=_0x41db8d[_0x8a90('0x48')];if(!_0xb22db8[_0x8a90('0x2f')][_0x8a90('0x36')](_0x8a90('0x37'))){_0x41a410[_0x8a90('0x21')]=qs[_0x8a90('0x21')](_0xb22db8[_0x8a90('0x2f')][_0x8a90('0x21')]);_0x41a410[_0x8a90('0x1e')]=qs[_0x8a90('0x1e')](_0xb22db8[_0x8a90('0x2f')]['offset']);}return _0x4d8157[_0x8a90('0x51')](_0x41a410);}})[_0x8a90('0x26')](function(_0x291450){if(_0x291450){return _0x291450?{'count':_0x5cc479,'rows':_0x291450}:null;}})[_0x8a90('0x26')](respondWithResult(_0x28a56f,null))[_0x8a90('0x45')](handleError(_0x28a56f,null));};exports[_0x8a90('0x52')]=function(_0x229f49,_0x2f5e6d,_0x2e8f89){return db[_0x8a90('0x53')][_0x8a90('0x49')]({'where':{'id':_0x229f49[_0x8a90('0x47')]['id']}})['then'](handleEntityNotFound(_0x2f5e6d,null))[_0x8a90('0x26')](function(_0x5bfa4c){if(_0x5bfa4c){return _0x5bfa4c['addActions'](_0x229f49[_0x8a90('0x4b')][_0x8a90('0x4e')],_[_0x8a90('0x54')](_0x229f49[_0x8a90('0x4b')],['ids','id'])||{});}})['then'](respondWithResult(_0x2f5e6d,null))[_0x8a90('0x45')](handleError(_0x2f5e6d,null));};exports[_0x8a90('0x55')]=function(_0xc1d437,_0x38207c,_0x2c02f0){var _0x32cf9a={};var _0x3d68cb={};var _0x28327d;var _0x23b9a3;return db['Automation'][_0x8a90('0x4f')]({'where':{'id':_0xc1d437[_0x8a90('0x47')]['id']}})['then'](handleEntityNotFound(_0x38207c,null))[_0x8a90('0x26')](function(_0x3c68a7){if(_0x3c68a7){_0x28327d=_0x3c68a7;_0x3d68cb[_0x8a90('0x33')]=_[_0x8a90('0x30')](db[_0x8a90('0x53')]['rawAttributes']);_0x3d68cb[_0x8a90('0x2f')]=_[_0x8a90('0x30')](_0xc1d437[_0x8a90('0x2f')]);_0x3d68cb[_0x8a90('0x31')]=_[_0x8a90('0x32')](_0x3d68cb[_0x8a90('0x33')],_0x3d68cb[_0x8a90('0x2f')]);_0x32cf9a[_0x8a90('0x34')]=_[_0x8a90('0x32')](_0x3d68cb[_0x8a90('0x33')],qs['fields'](_0xc1d437['query'][_0x8a90('0x35')]));_0x32cf9a[_0x8a90('0x34')]=_0x32cf9a[_0x8a90('0x34')][_0x8a90('0x48')]?_0x32cf9a[_0x8a90('0x34')]:_0x3d68cb[_0x8a90('0x33')];_0x32cf9a[_0x8a90('0x38')]=qs[_0x8a90('0x39')](_0xc1d437[_0x8a90('0x2f')][_0x8a90('0x39')]);_0x32cf9a[_0x8a90('0x3a')]=qs[_0x8a90('0x31')](_['pick'](_0xc1d437[_0x8a90('0x2f')],_0x3d68cb[_0x8a90('0x31')]));if(_0xc1d437['query'][_0x8a90('0x3c')]){_0x32cf9a['where']=_[_0x8a90('0x3d')](_0x32cf9a[_0x8a90('0x3a')],{'$or':_[_0x8a90('0x2c')](_0x32cf9a['attributes'],function(_0x5c52e1){var _0x8f7308={};_0x8f7308[_0x5c52e1]={'$like':'%'+_0xc1d437[_0x8a90('0x2f')][_0x8a90('0x3c')]+'%'};return _0x8f7308;})});}_0x32cf9a=_[_0x8a90('0x3d')]({},_0x32cf9a,_0xc1d437[_0x8a90('0x3f')]);return _0x28327d['getActions'](_0x32cf9a);}})['then'](function(_0x51ce81){if(_0x51ce81){_0x23b9a3=_0x51ce81[_0x8a90('0x48')];if(!_0xc1d437[_0x8a90('0x2f')][_0x8a90('0x36')](_0x8a90('0x37'))){_0x32cf9a[_0x8a90('0x21')]=qs[_0x8a90('0x21')](_0xc1d437[_0x8a90('0x2f')][_0x8a90('0x21')]);_0x32cf9a[_0x8a90('0x1e')]=qs[_0x8a90('0x1e')](_0xc1d437[_0x8a90('0x2f')][_0x8a90('0x1e')]);}return _0x28327d[_0x8a90('0x55')](_0x32cf9a);}})[_0x8a90('0x26')](function(_0xcc2a09){if(_0xcc2a09){return _0xcc2a09?{'count':_0x23b9a3,'rows':_0xcc2a09}:null;}})[_0x8a90('0x26')](respondWithResult(_0x38207c,null))[_0x8a90('0x45')](handleError(_0x38207c,null));};
\ No newline at end of file
+var _0xd9c2=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','findAll','rows','catch','show','params','rawAttributes','find','create','update','body','addConditions','omit','ids','getConditions','findOne','keys','Condition','addActions','Action','getActions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','then','stack','name','send','index','map','Automation','fieldName','type','key','model','query','filters'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xd9c2,0x74));var _0x2d9c=function(_0x533897,_0x34e7c8){_0x533897=_0x533897-0x0;var _0x340bbd=_0xd9c2[_0x533897];return _0x340bbd;};'use strict';var emlformat=require(_0x2d9c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2d9c('0x1'));var jsonpatch=require(_0x2d9c('0x2'));var rp=require(_0x2d9c('0x3'));var moment=require(_0x2d9c('0x4'));var BPromise=require(_0x2d9c('0x5'));var Mustache=require(_0x2d9c('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x2d9c('0x7'));var ejs=require(_0x2d9c('0x8'));var fs=require('fs');var fs_extra=require(_0x2d9c('0x9'));var _=require(_0x2d9c('0xa'));var squel=require(_0x2d9c('0xb'));var crypto=require(_0x2d9c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2d9c('0x7'));var querystring=require('querystring');var Papa=require(_0x2d9c('0xd'));var Redis=require(_0x2d9c('0xe'));var authService=require(_0x2d9c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x2d9c('0x10'));var hardwareService=require(_0x2d9c('0x11'));var logger=require('../../config/logger')(_0x2d9c('0x12'));var utils=require(_0x2d9c('0x13'));var config=require(_0x2d9c('0x14'));var licenseUtil=require(_0x2d9c('0x15'));var db=require(_0x2d9c('0x16'))['db'];function respondWithStatusCode(_0x1d5895,_0x383e30){_0x383e30=_0x383e30||0xcc;return function(_0xca2101){if(_0xca2101){return _0x1d5895[_0x2d9c('0x17')](_0x383e30);}return _0x1d5895[_0x2d9c('0x18')](_0x383e30)[_0x2d9c('0x19')]();};}function respondWithResult(_0x220d87,_0x7c3f66){_0x7c3f66=_0x7c3f66||0xc8;return function(_0x19d81b){if(_0x19d81b){return _0x220d87[_0x2d9c('0x18')](_0x7c3f66)[_0x2d9c('0x1a')](_0x19d81b);}};}function respondWithFilteredResult(_0x369a4e,_0x2b36e1){return function(_0x12e37d){if(_0x12e37d){var _0x11e73d=typeof _0x2b36e1['offset']==='undefined'&&typeof _0x2b36e1[_0x2d9c('0x1b')]===_0x2d9c('0x1c');var _0x22290c=_0x12e37d[_0x2d9c('0x1d')];var _0x47a561=_0x11e73d?0x0:_0x2b36e1[_0x2d9c('0x1e')];var _0x22b083=_0x11e73d?_0x12e37d[_0x2d9c('0x1d')]:_0x2b36e1[_0x2d9c('0x1e')]+_0x2b36e1[_0x2d9c('0x1b')];var _0x1b60b1;if(_0x22b083>=_0x22290c){_0x22b083=_0x22290c;_0x1b60b1=0xc8;}else{_0x1b60b1=0xce;}_0x369a4e[_0x2d9c('0x18')](_0x1b60b1);return _0x369a4e['set'](_0x2d9c('0x1f'),_0x47a561+'-'+_0x22b083+'/'+_0x22290c)[_0x2d9c('0x1a')](_0x12e37d);}return null;};}function patchUpdates(_0x1381da){return function(_0x504a82){try{jsonpatch[_0x2d9c('0x20')](_0x504a82,_0x1381da,!![]);}catch(_0x5260fe){return BPromise[_0x2d9c('0x21')](_0x5260fe);}return _0x504a82[_0x2d9c('0x22')]();};}function saveUpdates(_0x3e5f8f,_0x38a760){return function(_0x54f15f){if(_0x54f15f){return _0x54f15f['update'](_0x3e5f8f)[_0x2d9c('0x23')](function(_0x1d5d3b){return _0x1d5d3b;});}return null;};}function removeEntity(_0x1d9838,_0x3e78ca){return function(_0x4c07d5){if(_0x4c07d5){return _0x4c07d5['destroy']()[_0x2d9c('0x23')](function(){_0x1d9838[_0x2d9c('0x18')](0xcc)[_0x2d9c('0x19')]();});}};}function handleEntityNotFound(_0x5c86b6,_0x59b1a9){return function(_0x10174e){if(!_0x10174e){_0x5c86b6[_0x2d9c('0x17')](0x194);}return _0x10174e;};}function handleError(_0x29a16f,_0x5e7d08){_0x5e7d08=_0x5e7d08||0x1f4;return function(_0x5d7838){logger['error'](_0x5d7838[_0x2d9c('0x24')]);if(_0x5d7838[_0x2d9c('0x25')]){delete _0x5d7838[_0x2d9c('0x25')];}_0x29a16f[_0x2d9c('0x18')](_0x5e7d08)[_0x2d9c('0x26')](_0x5d7838);};}exports[_0x2d9c('0x27')]=function(_0x1984ae,_0x5f57ce){var _0x39f356={},_0x5e29ce={},_0x40288f={'count':0x0,'rows':[]};var _0x2bf25d=_[_0x2d9c('0x28')](db[_0x2d9c('0x29')]['rawAttributes'],function(_0xea9ca){return{'name':_0xea9ca[_0x2d9c('0x2a')],'type':_0xea9ca[_0x2d9c('0x2b')][_0x2d9c('0x2c')]};});_0x5e29ce[_0x2d9c('0x2d')]=_[_0x2d9c('0x28')](_0x2bf25d,'name');_0x5e29ce[_0x2d9c('0x2e')]=_['keys'](_0x1984ae[_0x2d9c('0x2e')]);_0x5e29ce[_0x2d9c('0x2f')]=_[_0x2d9c('0x30')](_0x5e29ce[_0x2d9c('0x2d')],_0x5e29ce[_0x2d9c('0x2e')]);_0x39f356[_0x2d9c('0x31')]=_[_0x2d9c('0x30')](_0x5e29ce[_0x2d9c('0x2d')],qs[_0x2d9c('0x32')](_0x1984ae[_0x2d9c('0x2e')]['fields']));_0x39f356['attributes']=_0x39f356[_0x2d9c('0x31')][_0x2d9c('0x33')]?_0x39f356[_0x2d9c('0x31')]:_0x5e29ce[_0x2d9c('0x2d')];if(!_0x1984ae[_0x2d9c('0x2e')][_0x2d9c('0x34')](_0x2d9c('0x35'))){_0x39f356[_0x2d9c('0x1b')]=qs[_0x2d9c('0x1b')](_0x1984ae[_0x2d9c('0x2e')]['limit']);_0x39f356['offset']=qs['offset'](_0x1984ae['query'][_0x2d9c('0x1e')]);}_0x39f356[_0x2d9c('0x36')]=qs[_0x2d9c('0x37')](_0x1984ae[_0x2d9c('0x2e')]['sort']);_0x39f356['where']=qs[_0x2d9c('0x2f')](_[_0x2d9c('0x38')](_0x1984ae[_0x2d9c('0x2e')],_0x5e29ce[_0x2d9c('0x2f')]),_0x2bf25d);if(_0x1984ae[_0x2d9c('0x2e')]['filter']){_0x39f356[_0x2d9c('0x39')]=_[_0x2d9c('0x3a')](_0x39f356[_0x2d9c('0x39')],{'$or':_[_0x2d9c('0x28')](_0x2bf25d,function(_0x10164c){if(_0x10164c[_0x2d9c('0x2b')]!=='VIRTUAL'){var _0x69b60f={};_0x69b60f[_0x10164c[_0x2d9c('0x25')]]={'$like':'%'+_0x1984ae[_0x2d9c('0x2e')][_0x2d9c('0x3b')]+'%'};return _0x69b60f;}})});}_0x39f356=_[_0x2d9c('0x3a')]({},_0x39f356,_0x1984ae[_0x2d9c('0x3c')]);var _0x34b33f={'where':_0x39f356[_0x2d9c('0x39')]};return db[_0x2d9c('0x29')][_0x2d9c('0x1d')](_0x34b33f)[_0x2d9c('0x23')](function(_0x22b9e7){_0x40288f[_0x2d9c('0x1d')]=_0x22b9e7;if(_0x1984ae[_0x2d9c('0x2e')][_0x2d9c('0x3d')]){_0x39f356['include']=[{'all':!![]}];}return db[_0x2d9c('0x29')][_0x2d9c('0x3e')](_0x39f356);})[_0x2d9c('0x23')](function(_0x9304c8){_0x40288f[_0x2d9c('0x3f')]=_0x9304c8;return _0x40288f;})['then'](respondWithFilteredResult(_0x5f57ce,_0x39f356))[_0x2d9c('0x40')](handleError(_0x5f57ce,null));};exports[_0x2d9c('0x41')]=function(_0x14a407,_0x2ec049){var _0x193a83={'raw':![],'where':{'id':_0x14a407[_0x2d9c('0x42')]['id']}},_0x2a9783={};_0x2a9783[_0x2d9c('0x2d')]=_['keys'](db['Automation'][_0x2d9c('0x43')]);_0x2a9783[_0x2d9c('0x2e')]=_['keys'](_0x14a407['query']);_0x2a9783['filters']=_[_0x2d9c('0x30')](_0x2a9783['model'],_0x2a9783['query']);_0x193a83[_0x2d9c('0x31')]=_['intersection'](_0x2a9783[_0x2d9c('0x2d')],qs[_0x2d9c('0x32')](_0x14a407['query'][_0x2d9c('0x32')]));_0x193a83[_0x2d9c('0x31')]=_0x193a83['attributes'][_0x2d9c('0x33')]?_0x193a83[_0x2d9c('0x31')]:_0x2a9783[_0x2d9c('0x2d')];if(_0x14a407[_0x2d9c('0x2e')][_0x2d9c('0x3d')]){_0x193a83['include']=[{'all':!![]}];}_0x193a83=_[_0x2d9c('0x3a')]({},_0x193a83,_0x14a407[_0x2d9c('0x3c')]);return db['Automation'][_0x2d9c('0x44')](_0x193a83)[_0x2d9c('0x23')](handleEntityNotFound(_0x2ec049,null))['then'](respondWithResult(_0x2ec049,null))['catch'](handleError(_0x2ec049,null));};exports[_0x2d9c('0x45')]=function(_0x2fbf04,_0x5ca015){return db[_0x2d9c('0x29')][_0x2d9c('0x45')](_0x2fbf04['body'],{})[_0x2d9c('0x23')](respondWithResult(_0x5ca015,0xc9))[_0x2d9c('0x40')](handleError(_0x5ca015,null));};exports[_0x2d9c('0x46')]=function(_0x281957,_0x27203c){if(_0x281957[_0x2d9c('0x47')]['id']){delete _0x281957['body']['id'];}return db[_0x2d9c('0x29')][_0x2d9c('0x44')]({'where':{'id':_0x281957[_0x2d9c('0x42')]['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0x27203c,null))[_0x2d9c('0x23')](saveUpdates(_0x281957[_0x2d9c('0x47')],null))[_0x2d9c('0x23')](respondWithResult(_0x27203c,null))[_0x2d9c('0x40')](handleError(_0x27203c,null));};exports['destroy']=function(_0xb7f9c1,_0x762cc){return db['Automation'][_0x2d9c('0x44')]({'where':{'id':_0xb7f9c1[_0x2d9c('0x42')]['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0x762cc,null))[_0x2d9c('0x23')](removeEntity(_0x762cc,null))['catch'](handleError(_0x762cc,null));};exports['addConditions']=function(_0x2e17eb,_0x271e90,_0x50bfec){return db['Condition'][_0x2d9c('0x44')]({'where':{'id':_0x2e17eb[_0x2d9c('0x42')]['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0x271e90,null))['then'](function(_0x226de1){if(_0x226de1){return _0x226de1[_0x2d9c('0x48')](_0x2e17eb['body']['ids'],_[_0x2d9c('0x49')](_0x2e17eb[_0x2d9c('0x47')],[_0x2d9c('0x4a'),'id'])||{});}})[_0x2d9c('0x23')](respondWithResult(_0x271e90,null))[_0x2d9c('0x40')](handleError(_0x271e90,null));};exports[_0x2d9c('0x4b')]=function(_0xc25431,_0xf097a2,_0x414a9d){var _0x4d42dd={};var _0x14434d={};var _0x3ab8e2;var _0x3fee87;return db[_0x2d9c('0x29')][_0x2d9c('0x4c')]({'where':{'id':_0xc25431[_0x2d9c('0x42')]['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0xf097a2,null))[_0x2d9c('0x23')](function(_0x4ad90b){if(_0x4ad90b){_0x3ab8e2=_0x4ad90b;_0x14434d[_0x2d9c('0x2d')]=_[_0x2d9c('0x4d')](db[_0x2d9c('0x4e')][_0x2d9c('0x43')]);_0x14434d['query']=_['keys'](_0xc25431[_0x2d9c('0x2e')]);_0x14434d[_0x2d9c('0x2f')]=_[_0x2d9c('0x30')](_0x14434d[_0x2d9c('0x2d')],_0x14434d[_0x2d9c('0x2e')]);_0x4d42dd[_0x2d9c('0x31')]=_['intersection'](_0x14434d[_0x2d9c('0x2d')],qs[_0x2d9c('0x32')](_0xc25431[_0x2d9c('0x2e')][_0x2d9c('0x32')]));_0x4d42dd['attributes']=_0x4d42dd[_0x2d9c('0x31')][_0x2d9c('0x33')]?_0x4d42dd[_0x2d9c('0x31')]:_0x14434d[_0x2d9c('0x2d')];_0x4d42dd[_0x2d9c('0x36')]=qs[_0x2d9c('0x37')](_0xc25431['query']['sort']);_0x4d42dd['where']=qs[_0x2d9c('0x2f')](_[_0x2d9c('0x38')](_0xc25431[_0x2d9c('0x2e')],_0x14434d[_0x2d9c('0x2f')]));if(_0xc25431[_0x2d9c('0x2e')][_0x2d9c('0x3b')]){_0x4d42dd['where']=_['merge'](_0x4d42dd[_0x2d9c('0x39')],{'$or':_['map'](_0x4d42dd[_0x2d9c('0x31')],function(_0x2f94bc){var _0x3cc86b={};_0x3cc86b[_0x2f94bc]={'$like':'%'+_0xc25431['query'][_0x2d9c('0x3b')]+'%'};return _0x3cc86b;})});}_0x4d42dd=_['merge']({},_0x4d42dd,_0xc25431[_0x2d9c('0x3c')]);return _0x3ab8e2['getConditions'](_0x4d42dd);}})[_0x2d9c('0x23')](function(_0x4fcbe8){if(_0x4fcbe8){_0x3fee87=_0x4fcbe8[_0x2d9c('0x33')];if(!_0xc25431[_0x2d9c('0x2e')][_0x2d9c('0x34')](_0x2d9c('0x35'))){_0x4d42dd[_0x2d9c('0x1b')]=qs['limit'](_0xc25431[_0x2d9c('0x2e')][_0x2d9c('0x1b')]);_0x4d42dd[_0x2d9c('0x1e')]=qs[_0x2d9c('0x1e')](_0xc25431[_0x2d9c('0x2e')]['offset']);}return _0x3ab8e2[_0x2d9c('0x4b')](_0x4d42dd);}})['then'](function(_0x5c4756){if(_0x5c4756){return _0x5c4756?{'count':_0x3fee87,'rows':_0x5c4756}:null;}})['then'](respondWithResult(_0xf097a2,null))['catch'](handleError(_0xf097a2,null));};exports[_0x2d9c('0x4f')]=function(_0x4cecac,_0x1624d8,_0x215706){return db[_0x2d9c('0x50')]['find']({'where':{'id':_0x4cecac['params']['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0x1624d8,null))['then'](function(_0x57a3af){if(_0x57a3af){return _0x57a3af[_0x2d9c('0x4f')](_0x4cecac['body']['ids'],_[_0x2d9c('0x49')](_0x4cecac[_0x2d9c('0x47')],['ids','id'])||{});}})[_0x2d9c('0x23')](respondWithResult(_0x1624d8,null))[_0x2d9c('0x40')](handleError(_0x1624d8,null));};exports[_0x2d9c('0x51')]=function(_0x45f7f8,_0x121bfd,_0x5f0e31){var _0x577a57={};var _0x13a24e={};var _0x4ad7bd;var _0x3b0855;return db[_0x2d9c('0x29')][_0x2d9c('0x4c')]({'where':{'id':_0x45f7f8['params']['id']}})[_0x2d9c('0x23')](handleEntityNotFound(_0x121bfd,null))['then'](function(_0x567184){if(_0x567184){_0x4ad7bd=_0x567184;_0x13a24e[_0x2d9c('0x2d')]=_[_0x2d9c('0x4d')](db['Action'][_0x2d9c('0x43')]);_0x13a24e['query']=_[_0x2d9c('0x4d')](_0x45f7f8['query']);_0x13a24e[_0x2d9c('0x2f')]=_[_0x2d9c('0x30')](_0x13a24e[_0x2d9c('0x2d')],_0x13a24e[_0x2d9c('0x2e')]);_0x577a57[_0x2d9c('0x31')]=_[_0x2d9c('0x30')](_0x13a24e['model'],qs[_0x2d9c('0x32')](_0x45f7f8[_0x2d9c('0x2e')][_0x2d9c('0x32')]));_0x577a57['attributes']=_0x577a57['attributes'][_0x2d9c('0x33')]?_0x577a57['attributes']:_0x13a24e[_0x2d9c('0x2d')];_0x577a57[_0x2d9c('0x36')]=qs[_0x2d9c('0x37')](_0x45f7f8[_0x2d9c('0x2e')]['sort']);_0x577a57[_0x2d9c('0x39')]=qs[_0x2d9c('0x2f')](_[_0x2d9c('0x38')](_0x45f7f8[_0x2d9c('0x2e')],_0x13a24e[_0x2d9c('0x2f')]));if(_0x45f7f8[_0x2d9c('0x2e')][_0x2d9c('0x3b')]){_0x577a57[_0x2d9c('0x39')]=_[_0x2d9c('0x3a')](_0x577a57['where'],{'$or':_[_0x2d9c('0x28')](_0x577a57['attributes'],function(_0x3443ae){var _0x583b8f={};_0x583b8f[_0x3443ae]={'$like':'%'+_0x45f7f8['query'][_0x2d9c('0x3b')]+'%'};return _0x583b8f;})});}_0x577a57=_[_0x2d9c('0x3a')]({},_0x577a57,_0x45f7f8[_0x2d9c('0x3c')]);return _0x4ad7bd[_0x2d9c('0x51')](_0x577a57);}})[_0x2d9c('0x23')](function(_0x1ce6d0){if(_0x1ce6d0){_0x3b0855=_0x1ce6d0['length'];if(!_0x45f7f8[_0x2d9c('0x2e')][_0x2d9c('0x34')](_0x2d9c('0x35'))){_0x577a57[_0x2d9c('0x1b')]=qs[_0x2d9c('0x1b')](_0x45f7f8['query'][_0x2d9c('0x1b')]);_0x577a57[_0x2d9c('0x1e')]=qs[_0x2d9c('0x1e')](_0x45f7f8[_0x2d9c('0x2e')][_0x2d9c('0x1e')]);}return _0x4ad7bd['getActions'](_0x577a57);}})[_0x2d9c('0x23')](function(_0x29e545){if(_0x29e545){return _0x29e545?{'count':_0x3b0855,'rows':_0x29e545}:null;}})['then'](respondWithResult(_0x121bfd,null))[_0x2d9c('0x40')](handleError(_0x121bfd,null));};
\ No newline at end of file
index e029efb..09cbc51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848a=['api','moment','request-promise','rimraf','exports','define','tools_automations','lodash','util','../../config/logger'];(function(_0x22645a,_0x515dc7){var _0x51c97d=function(_0x2809eb){while(--_0x2809eb){_0x22645a['push'](_0x22645a['shift']());}};_0x51c97d(++_0x515dc7);}(_0x848a,0x75));var _0xa848=function(_0xabbd2f,_0x44d05a){_0xabbd2f=_0xabbd2f-0x0;var _0x34a040=_0x848a[_0xabbd2f];return _0x34a040;};'use strict';var _=require(_0xa848('0x0'));var util=require(_0xa848('0x1'));var logger=require(_0xa848('0x2'))(_0xa848('0x3'));var moment=require(_0xa848('0x4'));var BPromise=require('bluebird');var rp=require(_0xa848('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa848('0x6'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module[_0xa848('0x7')]=function(_0x5ee08c,_0x3136c0){return _0x5ee08c[_0xa848('0x8')]('Automation',attributes,{'tableName':_0xa848('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d64=['moment','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','Automation','tools_automations','lodash','util','api'];(function(_0x32a06a,_0x3ab4ac){var _0x30a560=function(_0x7eb26e){while(--_0x7eb26e){_0x32a06a['push'](_0x32a06a['shift']());}};_0x30a560(++_0x3ab4ac);}(_0x3d64,0x141));var _0x43d6=function(_0x52a678,_0x481ebc){_0x52a678=_0x52a678-0x0;var _0x1f5f7e=_0x3d64[_0x52a678];return _0x1f5f7e;};'use strict';var _=require(_0x43d6('0x0'));var util=require(_0x43d6('0x1'));var logger=require('../../config/logger')(_0x43d6('0x2'));var moment=require(_0x43d6('0x3'));var BPromise=require('bluebird');var rp=require(_0x43d6('0x4'));var fs=require('fs');var path=require(_0x43d6('0x5'));var rimraf=require(_0x43d6('0x6'));var config=require(_0x43d6('0x7'));var attributes=require(_0x43d6('0x8'));module[_0x43d6('0x9')]=function(_0x371e67,_0xd9a72e){return _0x371e67['define'](_0x43d6('0xa'),attributes,{'tableName':_0x43d6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5b0df97..96864c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb515=['debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','Automation,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x465ce3,_0xc85d75){var _0x5f3cef=function(_0x585fe1){while(--_0x585fe1){_0x465ce3['push'](_0x465ce3['shift']());}};_0x5f3cef(++_0xc85d75);}(_0xb515,0x1b8));var _0x5b51=function(_0x3b90ab,_0x174a22){_0x3b90ab=_0x3b90ab-0x0;var _0x206e92=_0xb515[_0x3b90ab];return _0x206e92;};'use strict';var _=require(_0x5b51('0x0'));var util=require('util');var moment=require(_0x5b51('0x1'));var BPromise=require(_0x5b51('0x2'));var rs=require(_0x5b51('0x3'));var fs=require('fs');var Redis=require(_0x5b51('0x4'));var db=require(_0x5b51('0x5'))['db'];var utils=require(_0x5b51('0x6'));var logger=require(_0x5b51('0x7'))(_0x5b51('0x8'));var config=require('../../config/environment');var jayson=require(_0x5b51('0x9'));var client=jayson[_0x5b51('0xa')][_0x5b51('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x293d82,_0x396b3f,_0x2c6d86){return new BPromise(function(_0x1d5082,_0x226e9c){return client[_0x5b51('0xc')](_0x293d82,_0x2c6d86)[_0x5b51('0xd')](function(_0x1085e6){logger[_0x5b51('0xe')]('Automation,\x20%s,\x20%s',_0x396b3f,_0x5b51('0xf'));logger[_0x5b51('0x10')](_0x5b51('0x11'),_0x396b3f,_0x5b51('0xf'),JSON[_0x5b51('0x12')](_0x1085e6));if(_0x1085e6[_0x5b51('0x13')]){if(_0x1085e6['error']['code']===0x1f4){logger['error'](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x226e9c(_0x1085e6[_0x5b51('0x13')]['message']);}logger[_0x5b51('0x13')](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x1d5082(_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);}else{logger[_0x5b51('0xe')](_0x5b51('0x14'),_0x396b3f,_0x5b51('0xf'));_0x1d5082(_0x1085e6[_0x5b51('0x16')][_0x5b51('0x15')]);}})[_0x5b51('0x17')](function(_0x520686){logger[_0x5b51('0x13')]('Automation,\x20%s,\x20%s',_0x396b3f,_0x520686);_0x226e9c(_0x520686);});});}
\ No newline at end of file
+var _0x3c32=['request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s'];(function(_0x17651e,_0x1c2e74){var _0x48b243=function(_0x16924c){while(--_0x16924c){_0x17651e['push'](_0x17651e['shift']());}};_0x48b243(++_0x1c2e74);}(_0x3c32,0x161));var _0x23c3=function(_0x255b7c,_0x88677e){_0x255b7c=_0x255b7c-0x0;var _0x850556=_0x3c32[_0x255b7c];return _0x850556;};'use strict';var _=require(_0x23c3('0x0'));var util=require(_0x23c3('0x1'));var moment=require(_0x23c3('0x2'));var BPromise=require('bluebird');var rs=require(_0x23c3('0x3'));var fs=require('fs');var Redis=require(_0x23c3('0x4'));var db=require(_0x23c3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x23c3('0x6'))('rpc');var config=require(_0x23c3('0x7'));var jayson=require(_0x23c3('0x8'));var client=jayson[_0x23c3('0x9')][_0x23c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a6364,_0x56568e,_0x493ca6){return new BPromise(function(_0x4df5ee,_0x422558){return client[_0x23c3('0xb')](_0x4a6364,_0x493ca6)[_0x23c3('0xc')](function(_0x420987){logger[_0x23c3('0xd')](_0x23c3('0xe'),_0x56568e,_0x23c3('0xf'));logger[_0x23c3('0x10')](_0x23c3('0x11'),_0x56568e,_0x23c3('0xf'),JSON[_0x23c3('0x12')](_0x420987));if(_0x420987[_0x23c3('0x13')]){if(_0x420987[_0x23c3('0x13')][_0x23c3('0x14')]===0x1f4){logger[_0x23c3('0x13')](_0x23c3('0xe'),_0x56568e,_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);return _0x422558(_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);}logger['error']('Automation,\x20%s,\x20%s',_0x56568e,_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);return _0x4df5ee(_0x420987[_0x23c3('0x13')][_0x23c3('0x15')]);}else{logger[_0x23c3('0xd')](_0x23c3('0xe'),_0x56568e,_0x23c3('0xf'));_0x4df5ee(_0x420987['result']['message']);}})[_0x23c3('0x16')](function(_0x43534b){logger['error'](_0x23c3('0xe'),_0x56568e,_0x43534b);_0x422558(_0x43534b);});});}
\ No newline at end of file
index f9d9f07..5601ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6183=['getConditions','/:id/actions','getActions','post','create','addActions','put','/:id','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6183,0x19b));var _0x3618=function(_0x2d91c6,_0x10ae0e){_0x2d91c6=_0x2d91c6-0x0;var _0x3a8d19=_0x6183[_0x2d91c6];return _0x3a8d19;};'use strict';var multer=require('multer');var util=require(_0x3618('0x0'));var path=require(_0x3618('0x1'));var timeout=require(_0x3618('0x2'));var express=require('express');var router=express[_0x3618('0x3')]();var fs_extra=require(_0x3618('0x4'));var auth=require(_0x3618('0x5'));var interaction=require(_0x3618('0x6'));var config=require(_0x3618('0x7'));var controller=require(_0x3618('0x8'));router[_0x3618('0x9')]('/',auth[_0x3618('0xa')](),controller[_0x3618('0xb')]);router[_0x3618('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3618('0xc')]);router[_0x3618('0x9')](_0x3618('0xd'),auth[_0x3618('0xa')](),controller[_0x3618('0xe')]);router[_0x3618('0x9')](_0x3618('0xf'),auth[_0x3618('0xa')](),controller[_0x3618('0x10')]);router[_0x3618('0x11')]('/',auth[_0x3618('0xa')](),controller[_0x3618('0x12')]);router['post']('/:id/conditions',auth[_0x3618('0xa')](),controller['addConditions']);router[_0x3618('0x11')](_0x3618('0xf'),auth['isAuthenticated'](),controller[_0x3618('0x13')]);router[_0x3618('0x14')](_0x3618('0x15'),auth[_0x3618('0xa')](),controller[_0x3618('0x16')]);router[_0x3618('0x17')](_0x3618('0x15'),auth[_0x3618('0xa')](),controller['destroy']);module[_0x3618('0x18')]=router;
\ No newline at end of file
+var _0x0faf=['../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','isAuthenticated','index','get','/:id','/:id/conditions','/:id/actions','getActions','post','create','addActions','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0faf,0x132));var _0xf0fa=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0x0faf[_0x50aa2e];return _0x5e07f0;};'use strict';var multer=require(_0xf0fa('0x0'));var util=require('util');var path=require(_0xf0fa('0x1'));var timeout=require(_0xf0fa('0x2'));var express=require(_0xf0fa('0x3'));var router=express[_0xf0fa('0x4')]();var fs_extra=require(_0xf0fa('0x5'));var auth=require(_0xf0fa('0x6'));var interaction=require(_0xf0fa('0x7'));var config=require(_0xf0fa('0x8'));var controller=require(_0xf0fa('0x9'));router['get']('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0xb')]);router[_0xf0fa('0xc')](_0xf0fa('0xd'),auth[_0xf0fa('0xa')](),controller['show']);router[_0xf0fa('0xc')](_0xf0fa('0xe'),auth['isAuthenticated'](),controller['getConditions']);router[_0xf0fa('0xc')](_0xf0fa('0xf'),auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x10')]);router[_0xf0fa('0x11')]('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x12')]);router[_0xf0fa('0x11')]('/:id/conditions',auth[_0xf0fa('0xa')](),controller['addConditions']);router[_0xf0fa('0x11')]('/:id/actions',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x13')]);router[_0xf0fa('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xf0fa('0x15')]);router['delete'](_0xf0fa('0xd'),auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x16')]);module[_0xf0fa('0x17')]=router;
\ No newline at end of file
index b73a0f0..5c227b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b3e=['STRING','BOOLEAN','INTEGER','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','never','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','name','ivr'];(function(_0x568ec6,_0x4254b5){var _0x26e928=function(_0x193f97){while(--_0x193f97){_0x568ec6['push'](_0x568ec6['shift']());}};_0x26e928(++_0x4254b5);}(_0x5b3e,0x95));var _0xe5b3=function(_0x6c143,_0x376fd8){_0x6c143=_0x6c143-0x0;var _0x2cd655=_0x5b3e[_0x6c143];return _0x2cd655;};'use strict';var Sequelize=require('sequelize');module[_0xe5b3('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xe5b3('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0xe5b3('0x2')},'description':{'type':Sequelize[_0xe5b3('0x3')]},'active':{'type':Sequelize[_0xe5b3('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0xe5b3('0x5')](0x4)[_0xe5b3('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0xe5b3('0x3')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xe5b3('0x3')]},'dialOriginateTimeout':{'type':Sequelize[_0xe5b3('0x5')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x8')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x9')},'dialBusyRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)[_0xe5b3('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe5b3('0xa')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe5b3('0xb')},'dialGlobalMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)[_0xe5b3('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xe5b3('0xc')},'dialTimezone':{'type':Sequelize[_0xe5b3('0x3')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xe5b3('0x3')],'defaultValue':_0xe5b3('0xd')},'dialCheckDuplicateType':{'type':Sequelize[_0xe5b3('0xe')]('always',_0xe5b3('0xf'),_0xe5b3('0x10')),'defaultValue':_0xe5b3('0x11')},'dialAMDActive':{'type':Sequelize[_0xe5b3('0x4')],'defaultValue':0x0,'comment':_0xe5b3('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0xe5b3('0x5')](0x9)[_0xe5b3('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xe5b3('0x13')},'dialAMDGreeting':{'type':Sequelize[_0xe5b3('0x5')](0x9)[_0xe5b3('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xe5b3('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xe5b3('0x5')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xe5b3('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xe5b3('0x16')},'dialAMDMinWordLength':{'type':Sequelize[_0xe5b3('0x5')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xe5b3('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xe5b3('0x5')](0x9)[_0xe5b3('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xe5b3('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xe5b3('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xe5b3('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xe5b3('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xe5b3('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xe5b3('0x1b'),'ASC'),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xe5b3('0x3')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xe5b3('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xe5b3('0x1c')},'dialCutDigit':{'type':Sequelize[_0xe5b3('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xe5b3('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)[_0xe5b3('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe5b3('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)[_0xe5b3('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe5b3('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xe5b3('0x5')](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x23')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xe5b3('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe5b3('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe5b3('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xe5b3('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe5b3('0x25')}};
\ No newline at end of file
+var _0x812c=['#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\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)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ENUM','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time'];(function(_0x480843,_0x8121e6){var _0x1d5cd9=function(_0x54ca2a){while(--_0x54ca2a){_0x480843['push'](_0x480843['shift']());}};_0x1d5cd9(++_0x8121e6);}(_0x812c,0xae));var _0xc812=function(_0x3b6c46,_0x1a9710){_0x3b6c46=_0x3b6c46-0x0;var _0x4178a4=_0x812c[_0x3b6c46];return _0x4178a4;};'use strict';var Sequelize=require('sequelize');module[_0xc812('0x0')]={'name':{'type':Sequelize[_0xc812('0x1')],'unique':_0xc812('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xc812('0x3')]('ivr'),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xc812('0x4')],'defaultValue':0x0,'comment':_0xc812('0x5')},'limitCalls':{'type':Sequelize[_0xc812('0x6')](0x4)[_0xc812('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xc812('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xc812('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xc812('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xc812('0x6')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc812('0x7')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0xe')},'dialGlobalMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'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[_0xc812('0x1')],'defaultValue':_0xc812('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xc812('0x3')](_0xc812('0x10'),'never','onlyIfOpen'),'defaultValue':_0xc812('0x10')},'dialAMDActive':{'type':Sequelize[_0xc812('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc812('0x11')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc812('0x12')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xc812('0x13')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc812('0x14')},'dialAMDMinWordLength':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc812('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xc812('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc812('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc812('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc812('0x6')](0x9)[_0xc812('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc812('0x19')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xc812('0x1a'),_0xc812('0x1b')),'defaultValue':_0xc812('0x1a')},'dialPrefix':{'type':Sequelize[_0xc812('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc812('0x1c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc812('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x22')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0x23')},'dialMachineMaxRetry':{'type':Sequelize[_0xc812('0x6')](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x24')},'dialMachineRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc812('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc812('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc812('0x6')](0x5)[_0xc812('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc812('0x26')}};
\ No newline at end of file
index 1cf0aec..67dd923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf264=['destroy','then','get','IvrCampaigns','error','name','send','Campaign','fieldName','type','model','map','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','include','findAll','rows','show','fields','includeAll','find','catch','create','body','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','keys','rawAttributes','omit','updatedAt','createdAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','update','findOne','CmHopper','CampaignId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ContactId','ListId','field','scheduledAt','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','select','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','fromQuery','NOW()','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','sequelize','push','all','removeLists','ids','getBlackLists','CmList','addBlackLists','cm_hopper_black','phone\x20IS\x20NOT\x20NULL','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','set','Content-Range','apply','save'];(function(_0x5a88a0,_0x1c5075){var _0x17c041=function(_0x3c4139){while(--_0x3c4139){_0x5a88a0['push'](_0x5a88a0['shift']());}};_0x17c041(++_0x1c5075);}(_0xf264,0xfd));var _0x4f26=function(_0x256296,_0x5accd0){_0x256296=_0x256296-0x0;var _0x173074=_0xf264[_0x256296];return _0x173074;};'use strict';var emlformat=require(_0x4f26('0x0'));var rimraf=require(_0x4f26('0x1'));var zipdir=require(_0x4f26('0x2'));var jsonpatch=require(_0x4f26('0x3'));var rp=require('request-promise');var moment=require(_0x4f26('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4f26('0x5'));var util=require('util');var path=require(_0x4f26('0x6'));var sox=require('sox');var csv=require(_0x4f26('0x7'));var ejs=require(_0x4f26('0x8'));var fs=require('fs');var fs_extra=require(_0x4f26('0x9'));var _=require(_0x4f26('0xa'));var squel=require(_0x4f26('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4f26('0xc'));var toCsv=require(_0x4f26('0x7'));var querystring=require(_0x4f26('0xd'));var Papa=require(_0x4f26('0xe'));var Redis=require(_0x4f26('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4f26('0x10'));var as=require(_0x4f26('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4f26('0x12'));var config=require(_0x4f26('0x13'));var licenseUtil=require(_0x4f26('0x14'));var db=require(_0x4f26('0x15'))['db'];function respondWithStatusCode(_0x4f344e,_0xff78a8){_0xff78a8=_0xff78a8||0xcc;return function(_0x776ed2){if(_0x776ed2){return _0x4f344e[_0x4f26('0x16')](_0xff78a8);}return _0x4f344e['status'](_0xff78a8)[_0x4f26('0x17')]();};}function respondWithResult(_0x26c3b5,_0x108c26){_0x108c26=_0x108c26||0xc8;return function(_0xb068dc){if(_0xb068dc){return _0x26c3b5[_0x4f26('0x18')](_0x108c26)['json'](_0xb068dc);}};}function respondWithFilteredResult(_0x24b370,_0x22d671){return function(_0x4b2cdb){if(_0x4b2cdb){var _0x44b416=typeof _0x22d671[_0x4f26('0x19')]===_0x4f26('0x1a')&&typeof _0x22d671['limit']===_0x4f26('0x1a');var _0x3283e5=_0x4b2cdb[_0x4f26('0x1b')];var _0x593561=_0x44b416?0x0:_0x22d671['offset'];var _0x5a8004=_0x44b416?_0x4b2cdb['count']:_0x22d671[_0x4f26('0x19')]+_0x22d671[_0x4f26('0x1c')];var _0x30fa50;if(_0x5a8004>=_0x3283e5){_0x5a8004=_0x3283e5;_0x30fa50=0xc8;}else{_0x30fa50=0xce;}_0x24b370['status'](_0x30fa50);return _0x24b370[_0x4f26('0x1d')](_0x4f26('0x1e'),_0x593561+'-'+_0x5a8004+'/'+_0x3283e5)['json'](_0x4b2cdb);}return null;};}function patchUpdates(_0x3a4713){return function(_0x498897){try{jsonpatch[_0x4f26('0x1f')](_0x498897,_0x3a4713,!![]);}catch(_0x37d04f){return BPromise['reject'](_0x37d04f);}return _0x498897[_0x4f26('0x20')]();};}function saveUpdates(_0x1d2c63,_0x1f02d7){return function(_0xae0482){if(_0xae0482){return _0xae0482['update'](_0x1d2c63)['then'](function(_0x32a2d5){return _0x32a2d5;});}return null;};}function removeEntity(_0x3b1cb0,_0x1717dd){return function(_0x3b0c84){if(_0x3b0c84){return _0x3b0c84[_0x4f26('0x21')]()[_0x4f26('0x22')](function(){var _0x3ad5a3=_0x3b0c84[_0x4f26('0x23')]({'plain':!![]});var _0x9fa472=_0x4f26('0x24');return db['UserProfileResource'][_0x4f26('0x21')]({'where':{'type':_0x9fa472,'resourceId':_0x3ad5a3['id']}})[_0x4f26('0x22')](function(){return _0x3b0c84;});})[_0x4f26('0x22')](function(){_0x3b1cb0[_0x4f26('0x18')](0xcc)[_0x4f26('0x17')]();});}};}function handleEntityNotFound(_0x4e076c,_0x1c8ee8){return function(_0x281e65){if(!_0x281e65){_0x4e076c['sendStatus'](0x194);}return _0x281e65;};}function handleError(_0xc6f1e1,_0x357944){_0x357944=_0x357944||0x1f4;return function(_0x3c396b){logger[_0x4f26('0x25')](_0x3c396b['stack']);if(_0x3c396b['name']){delete _0x3c396b[_0x4f26('0x26')];}_0xc6f1e1[_0x4f26('0x18')](_0x357944)[_0x4f26('0x27')](_0x3c396b);};}exports['index']=function(_0x579954,_0x3cdfd7){var _0x3496ef={},_0x35d205={},_0x58c529={'count':0x0,'rows':[]};var _0xe780f8=_['map'](db[_0x4f26('0x28')]['rawAttributes'],function(_0x434571){return{'name':_0x434571[_0x4f26('0x29')],'type':_0x434571[_0x4f26('0x2a')]['key']};});_0x35d205[_0x4f26('0x2b')]=_[_0x4f26('0x2c')](_0xe780f8,_0x4f26('0x26'));_0x35d205[_0x4f26('0x2d')]=_['keys'](_0x579954[_0x4f26('0x2d')]);_0x35d205[_0x4f26('0x2e')]=_[_0x4f26('0x2f')](_0x35d205['model'],_0x35d205[_0x4f26('0x2d')]);_0x3496ef[_0x4f26('0x30')]=_[_0x4f26('0x2f')](_0x35d205['model'],qs['fields'](_0x579954[_0x4f26('0x2d')]['fields']));_0x3496ef[_0x4f26('0x30')]=_0x3496ef['attributes'][_0x4f26('0x31')]?_0x3496ef[_0x4f26('0x30')]:_0x35d205[_0x4f26('0x2b')];if(!_0x579954['query'][_0x4f26('0x32')](_0x4f26('0x33'))){_0x3496ef[_0x4f26('0x1c')]=qs[_0x4f26('0x1c')](_0x579954[_0x4f26('0x2d')][_0x4f26('0x1c')]);_0x3496ef['offset']=qs[_0x4f26('0x19')](_0x579954['query'][_0x4f26('0x19')]);}_0x3496ef[_0x4f26('0x34')]=qs[_0x4f26('0x35')](_0x579954['query'][_0x4f26('0x35')]);_0x3496ef[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0x579954[_0x4f26('0x2d')],_0x35d205['filters']),_0xe780f8);if(_0x579954[_0x4f26('0x2d')]['filter']){_0x3496ef['where']=_[_0x4f26('0x38')](_0x3496ef['where'],{'$or':_[_0x4f26('0x2c')](_0xe780f8,function(_0x2653d4){if(_0x2653d4['type']!=='VIRTUAL'){var _0x28ec5f={};_0x28ec5f[_0x2653d4['name']]={'$like':'%'+_0x579954[_0x4f26('0x2d')][_0x4f26('0x39')]+'%'};return _0x28ec5f;}})});}_0x3496ef=_[_0x4f26('0x38')]({},_0x3496ef,_0x579954[_0x4f26('0x3a')]);var _0x22b1e8={'where':_0x3496ef['where']};return db[_0x4f26('0x28')]['count'](_0x22b1e8)[_0x4f26('0x22')](function(_0x3d4714){_0x58c529[_0x4f26('0x1b')]=_0x3d4714;if(_0x579954[_0x4f26('0x2d')]['includeAll']){_0x3496ef[_0x4f26('0x3b')]=[{'all':!![]}];}return db['Campaign'][_0x4f26('0x3c')](_0x3496ef);})['then'](function(_0x104cae){_0x58c529[_0x4f26('0x3d')]=_0x104cae;return _0x58c529;})[_0x4f26('0x22')](respondWithFilteredResult(_0x3cdfd7,_0x3496ef))['catch'](handleError(_0x3cdfd7,null));};exports[_0x4f26('0x3e')]=function(_0x20bf35,_0x3c723f){var _0x54ea10={'raw':![],'where':{'id':_0x20bf35['params']['id']}},_0x5c5de8={};_0x5c5de8[_0x4f26('0x2b')]=_['keys'](db[_0x4f26('0x28')]['rawAttributes']);_0x5c5de8[_0x4f26('0x2d')]=_['keys'](_0x20bf35[_0x4f26('0x2d')]);_0x5c5de8['filters']=_[_0x4f26('0x2f')](_0x5c5de8[_0x4f26('0x2b')],_0x5c5de8[_0x4f26('0x2d')]);_0x54ea10[_0x4f26('0x30')]=_[_0x4f26('0x2f')](_0x5c5de8[_0x4f26('0x2b')],qs[_0x4f26('0x3f')](_0x20bf35[_0x4f26('0x2d')]['fields']));_0x54ea10['attributes']=_0x54ea10[_0x4f26('0x30')][_0x4f26('0x31')]?_0x54ea10[_0x4f26('0x30')]:_0x5c5de8[_0x4f26('0x2b')];if(_0x20bf35[_0x4f26('0x2d')][_0x4f26('0x40')]){_0x54ea10[_0x4f26('0x3b')]=[{'all':!![]}];}_0x54ea10=_[_0x4f26('0x38')]({},_0x54ea10,_0x20bf35[_0x4f26('0x3a')]);return db[_0x4f26('0x28')][_0x4f26('0x41')](_0x54ea10)[_0x4f26('0x22')](handleEntityNotFound(_0x3c723f,null))['then'](respondWithResult(_0x3c723f,null))[_0x4f26('0x42')](handleError(_0x3c723f,null));};exports[_0x4f26('0x43')]=function(_0x1e50c5,_0xebf86d){return db[_0x4f26('0x28')][_0x4f26('0x43')](_0x1e50c5[_0x4f26('0x44')],{})['then'](function(_0x338484){var _0x442342=_0x1e50c5[_0x4f26('0x45')][_0x4f26('0x23')]({'plain':!![]});if(!_0x442342)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x442342['role']===_0x4f26('0x45')){var _0x3bcd3b=_0x338484[_0x4f26('0x23')]({'plain':!![]});var _0x2acd9e=_0x4f26('0x24');return db['UserProfileSection'][_0x4f26('0x41')]({'where':{'name':_0x2acd9e,'userProfileId':_0x442342[_0x4f26('0x46')]},'raw':!![]})['then'](function(_0x2aa757){if(_0x2aa757&&_0x2aa757[_0x4f26('0x47')]===0x0){return db[_0x4f26('0x48')][_0x4f26('0x43')]({'name':_0x3bcd3b[_0x4f26('0x26')],'resourceId':_0x3bcd3b['id'],'type':_0x2aa757[_0x4f26('0x26')],'sectionId':_0x2aa757['id']},{})[_0x4f26('0x22')](function(){return _0x338484;});}else{return _0x338484;}})['catch'](function(_0x5b53f5){logger[_0x4f26('0x25')](_0x4f26('0x49'),_0x5b53f5);throw _0x5b53f5;});}return _0x338484;})[_0x4f26('0x22')](respondWithResult(_0xebf86d,0xc9))[_0x4f26('0x42')](handleError(_0xebf86d,null));};exports[_0x4f26('0x4a')]=function(_0xe391e7,_0x576610){var _0x30e399={'where':{'id':_0xe391e7[_0x4f26('0x4b')]['id']}},_0x1de468={};_0x1de468[_0x4f26('0x2b')]=_[_0x4f26('0x4c')](db[_0x4f26('0x28')][_0x4f26('0x4d')]);_0x30e399[_0x4f26('0x30')]=_[_0x4f26('0x2f')](_0x1de468['model'],qs[_0x4f26('0x3f')](_0xe391e7['query'][_0x4f26('0x3f')]));_0x30e399[_0x4f26('0x30')]=_0x30e399[_0x4f26('0x30')]['length']?_0x30e399[_0x4f26('0x30')]:_0x1de468[_0x4f26('0x2b')];if(_0xe391e7[_0x4f26('0x2d')][_0x4f26('0x40')]){_0x30e399['include']=[{'all':!![]}];}_0x30e399=_['merge']({},_0x30e399,_0xe391e7[_0x4f26('0x3a')]);return db[_0x4f26('0x28')]['find'](_0x30e399)[_0x4f26('0x22')](handleEntityNotFound(_0x576610,null))[_0x4f26('0x22')](function(_0x4032b2){if(_0x4032b2){var _0x2718c7=_0x4032b2[_0x4f26('0x23')]({'plain':!![]});_0x2718c7=qs[_0x4f26('0x4e')](_0x2718c7,['id','createdAt',_0x4f26('0x4f')]);_0xe391e7[_0x4f26('0x44')]=_[_0x4f26('0x4e')](_0xe391e7[_0x4f26('0x44')],['id',_0x4f26('0x50'),_0x4f26('0x4f')]);return db[_0x4f26('0x28')][_0x4f26('0x43')](_[_0x4f26('0x38')](_0x2718c7,_0xe391e7[_0x4f26('0x44')]),{'include':_0xe391e7[_0x4f26('0x2d')][_0x4f26('0x40')]?[{'all':!![]}]:undefined})[_0x4f26('0x22')](function(_0x45fa10){var _0x213969=_0xe391e7[_0x4f26('0x45')][_0x4f26('0x23')]({'plain':!![]});if(!_0x213969)throw new Error(_0x4f26('0x51'));if(_0x213969[_0x4f26('0x52')]===_0x4f26('0x45')){var _0x4cd94b=_0x45fa10[_0x4f26('0x23')]({'plain':!![]});var _0x565961=_0x4f26('0x24');return db[_0x4f26('0x53')][_0x4f26('0x41')]({'where':{'name':_0x565961,'userProfileId':_0x213969[_0x4f26('0x46')]},'raw':!![]})[_0x4f26('0x22')](function(_0x198329){if(_0x198329&&_0x198329[_0x4f26('0x47')]===0x0){return db[_0x4f26('0x48')][_0x4f26('0x43')]({'name':_0x4cd94b[_0x4f26('0x26')],'resourceId':_0x4cd94b['id'],'type':_0x198329[_0x4f26('0x26')],'sectionId':_0x198329['id']},{})[_0x4f26('0x22')](function(){return _0x45fa10;});}else{return _0x45fa10;}})[_0x4f26('0x42')](function(_0x85ff83){logger[_0x4f26('0x25')](_0x4f26('0x49'),_0x85ff83);throw _0x85ff83;});}return _0x45fa10;});}})[_0x4f26('0x22')](respondWithResult(_0x576610,0xc9))[_0x4f26('0x42')](handleError(_0x576610,null));};exports[_0x4f26('0x54')]=function(_0xb483e1,_0x1c0894){if(_0xb483e1['body']['id']){delete _0xb483e1[_0x4f26('0x44')]['id'];}return db[_0x4f26('0x28')][_0x4f26('0x41')]({'where':{'id':_0xb483e1[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x1c0894,null))[_0x4f26('0x22')](saveUpdates(_0xb483e1[_0x4f26('0x44')],null))[_0x4f26('0x22')](respondWithResult(_0x1c0894,null))[_0x4f26('0x42')](handleError(_0x1c0894,null));};exports[_0x4f26('0x21')]=function(_0xd4c2d,_0x1fdacc){return db['Campaign'][_0x4f26('0x41')]({'where':{'id':_0xd4c2d[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x1fdacc,null))[_0x4f26('0x22')](removeEntity(_0x1fdacc,null))[_0x4f26('0x42')](handleError(_0x1fdacc,null));};exports['getHoppers']=function(_0x42a8d1,_0x28ef95,_0x15835d){var _0xf8f76e={'raw':!![],'where':{}};var _0x3f040e={};var _0x8fa480={'count':0x0,'rows':[]};return db['Campaign'][_0x4f26('0x55')]({'where':{'id':_0x42a8d1[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x28ef95,null))[_0x4f26('0x22')](function(_0x35dfc0){if(_0x35dfc0){_0x3f040e[_0x4f26('0x2b')]=_[_0x4f26('0x4c')](db[_0x4f26('0x56')][_0x4f26('0x4d')]);_0x3f040e['query']=_['keys'](_0x42a8d1['query']);_0x3f040e['filters']=_[_0x4f26('0x2f')](_0x3f040e[_0x4f26('0x2b')],_0x3f040e[_0x4f26('0x2d')]);_0xf8f76e[_0x4f26('0x30')]=_['intersection'](_0x3f040e[_0x4f26('0x2b')],qs[_0x4f26('0x3f')](_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x3f')]));_0xf8f76e[_0x4f26('0x30')]=_0xf8f76e[_0x4f26('0x30')][_0x4f26('0x31')]?_0xf8f76e['attributes']:_0x3f040e['model'];if(!_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x32')]('nolimit')){_0xf8f76e[_0x4f26('0x1c')]=qs[_0x4f26('0x1c')](_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x1c')]);_0xf8f76e['offset']=qs['offset'](_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x19')]);}_0xf8f76e[_0x4f26('0x34')]=qs[_0x4f26('0x35')](_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x35')]);_0xf8f76e[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0x42a8d1['query'],_0x3f040e[_0x4f26('0x2e')]));_0xf8f76e[_0x4f26('0x36')][_0x4f26('0x57')]=_0x35dfc0['id'];if(_0x42a8d1[_0x4f26('0x2d')]['filter']){_0xf8f76e[_0x4f26('0x36')]=_[_0x4f26('0x38')](_0xf8f76e[_0x4f26('0x36')],{'$or':_[_0x4f26('0x2c')](_0xf8f76e['attributes'],function(_0x14fd9b){var _0x54907b={};_0x54907b[_0x14fd9b]={'$like':'%'+_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x39')]+'%'};return _0x54907b;})});}_0xf8f76e=_[_0x4f26('0x38')]({},_0xf8f76e,_0x42a8d1[_0x4f26('0x3a')]);return db['CmHopper']['count']({'where':_0xf8f76e[_0x4f26('0x36')]})['then'](function(_0x44f5c7){_0x8fa480[_0x4f26('0x1b')]=_0x44f5c7;if(_0x42a8d1[_0x4f26('0x2d')][_0x4f26('0x40')]){_0xf8f76e[_0x4f26('0x3b')]=[{'all':!![]}];}return db['CmHopper'][_0x4f26('0x3c')](_0xf8f76e);})[_0x4f26('0x22')](function(_0x2f7c09){_0x8fa480[_0x4f26('0x3d')]=_0x2f7c09;return _0x8fa480;});}})[_0x4f26('0x22')](respondWithFilteredResult(_0x28ef95,_0xf8f76e))[_0x4f26('0x42')](handleError(_0x28ef95,null));};exports[_0x4f26('0x58')]=function(_0xaf6480,_0x47eb25,_0x124d38){var _0x4b114b={'raw':!![],'where':{}};var _0x4b605={};var _0x35c7c7={'count':0x0,'rows':[]};return db[_0x4f26('0x28')][_0x4f26('0x55')]({'where':{'id':_0xaf6480['params']['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x47eb25,null))[_0x4f26('0x22')](function(_0x24f28f){if(_0x24f28f){_0x4b605[_0x4f26('0x2b')]=_[_0x4f26('0x4c')](db[_0x4f26('0x59')][_0x4f26('0x4d')]);_0x4b605[_0x4f26('0x2d')]=_[_0x4f26('0x4c')](_0xaf6480[_0x4f26('0x2d')]);_0x4b605[_0x4f26('0x2e')]=_[_0x4f26('0x2f')](_0x4b605[_0x4f26('0x2b')],_0x4b605[_0x4f26('0x2d')]);_0x4b114b[_0x4f26('0x30')]=_[_0x4f26('0x2f')](_0x4b605[_0x4f26('0x2b')],qs['fields'](_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x3f')]));_0x4b114b['attributes']=_0x4b114b[_0x4f26('0x30')][_0x4f26('0x31')]?_0x4b114b[_0x4f26('0x30')]:_0x4b605['model'];if(!_0xaf6480['query'][_0x4f26('0x32')]('nolimit')){_0x4b114b['limit']=qs[_0x4f26('0x1c')](_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x1c')]);_0x4b114b[_0x4f26('0x19')]=qs['offset'](_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x19')]);}_0x4b114b['order']=qs[_0x4f26('0x35')](_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x35')]);_0x4b114b[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0xaf6480[_0x4f26('0x2d')],_0x4b605[_0x4f26('0x2e')]));_0x4b114b[_0x4f26('0x36')]['CampaignId']=_0x24f28f['id'];if(_0xaf6480['query'][_0x4f26('0x39')]){_0x4b114b[_0x4f26('0x36')]=_['merge'](_0x4b114b[_0x4f26('0x36')],{'$or':_[_0x4f26('0x2c')](_0x4b114b[_0x4f26('0x30')],function(_0x53dd0a){var _0x528acd={};_0x528acd[_0x53dd0a]={'$like':'%'+_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x39')]+'%'};return _0x528acd;})});}_0x4b114b=_[_0x4f26('0x38')]({},_0x4b114b,_0xaf6480[_0x4f26('0x3a')]);return db[_0x4f26('0x59')]['count']({'where':_0x4b114b[_0x4f26('0x36')]})['then'](function(_0x4eddb2){_0x35c7c7[_0x4f26('0x1b')]=_0x4eddb2;if(_0xaf6480[_0x4f26('0x2d')][_0x4f26('0x40')]){_0x4b114b[_0x4f26('0x3b')]=[{'all':!![]}];}return db[_0x4f26('0x59')][_0x4f26('0x3c')](_0x4b114b);})['then'](function(_0xbc0a81){_0x35c7c7[_0x4f26('0x3d')]=_0xbc0a81;return _0x35c7c7;});}})[_0x4f26('0x22')](respondWithFilteredResult(_0x47eb25,_0x4b114b))[_0x4f26('0x42')](handleError(_0x47eb25,null));};exports['getHopperFinals']=function(_0x1796d6,_0x564147,_0x5c9982){var _0x62310b={'raw':!![],'where':{}};var _0x4b30e4={};var _0x1ae942={'count':0x0,'rows':[]};return db[_0x4f26('0x28')]['findOne']({'where':{'id':_0x1796d6[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x564147,null))[_0x4f26('0x22')](function(_0xe19ca9){if(_0xe19ca9){_0x4b30e4['model']=_[_0x4f26('0x4c')](db[_0x4f26('0x5a')][_0x4f26('0x4d')]);_0x4b30e4['query']=_[_0x4f26('0x4c')](_0x1796d6[_0x4f26('0x2d')]);_0x4b30e4[_0x4f26('0x2e')]=_[_0x4f26('0x2f')](_0x4b30e4[_0x4f26('0x2b')],_0x4b30e4[_0x4f26('0x2d')]);_0x62310b[_0x4f26('0x30')]=_[_0x4f26('0x2f')](_0x4b30e4['model'],qs[_0x4f26('0x3f')](_0x1796d6['query'][_0x4f26('0x3f')]));_0x62310b[_0x4f26('0x30')]=_0x62310b[_0x4f26('0x30')][_0x4f26('0x31')]?_0x62310b[_0x4f26('0x30')]:_0x4b30e4[_0x4f26('0x2b')];if(!_0x1796d6[_0x4f26('0x2d')][_0x4f26('0x32')](_0x4f26('0x33'))){_0x62310b[_0x4f26('0x1c')]=qs[_0x4f26('0x1c')](_0x1796d6[_0x4f26('0x2d')][_0x4f26('0x1c')]);_0x62310b['offset']=qs[_0x4f26('0x19')](_0x1796d6[_0x4f26('0x2d')]['offset']);}_0x62310b[_0x4f26('0x34')]=qs[_0x4f26('0x35')](_0x1796d6[_0x4f26('0x2d')]['sort']);_0x62310b[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0x1796d6[_0x4f26('0x2d')],_0x4b30e4[_0x4f26('0x2e')]));_0x62310b[_0x4f26('0x36')][_0x4f26('0x57')]=_0xe19ca9['id'];if(_0x1796d6[_0x4f26('0x2d')][_0x4f26('0x39')]){_0x62310b[_0x4f26('0x36')]=_['merge'](_0x62310b[_0x4f26('0x36')],{'$or':_[_0x4f26('0x2c')](_0x62310b[_0x4f26('0x30')],function(_0x4be8a9){var _0x51338e={};_0x51338e[_0x4be8a9]={'$like':'%'+_0x1796d6[_0x4f26('0x2d')][_0x4f26('0x39')]+'%'};return _0x51338e;})});}_0x62310b=_['merge']({},_0x62310b,_0x1796d6[_0x4f26('0x3a')]);return db[_0x4f26('0x5a')][_0x4f26('0x1b')]({'where':_0x62310b['where']})[_0x4f26('0x22')](function(_0x25ff30){_0x1ae942['count']=_0x25ff30;if(_0x1796d6[_0x4f26('0x2d')][_0x4f26('0x40')]){_0x62310b[_0x4f26('0x3b')]=[{'all':!![]}];}return db[_0x4f26('0x5a')][_0x4f26('0x3c')](_0x62310b);})[_0x4f26('0x22')](function(_0xab21a1){_0x1ae942[_0x4f26('0x3d')]=_0xab21a1;return _0x1ae942;});}})[_0x4f26('0x22')](respondWithFilteredResult(_0x564147,_0x62310b))[_0x4f26('0x42')](handleError(_0x564147,null));};exports[_0x4f26('0x5b')]=function(_0x57630b,_0x4d5d46,_0x4e5495){var _0x460d88={'raw':!![],'where':{}};var _0x53db1e={};var _0x31a332={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x57630b[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x4d5d46,null))[_0x4f26('0x22')](function(_0x4411e5){if(_0x4411e5){_0x53db1e[_0x4f26('0x2b')]=_[_0x4f26('0x4c')](db[_0x4f26('0x5c')]['rawAttributes']);_0x53db1e[_0x4f26('0x2d')]=_[_0x4f26('0x4c')](_0x57630b[_0x4f26('0x2d')]);_0x53db1e[_0x4f26('0x2e')]=_[_0x4f26('0x2f')](_0x53db1e[_0x4f26('0x2b')],_0x53db1e[_0x4f26('0x2d')]);_0x460d88['attributes']=_[_0x4f26('0x2f')](_0x53db1e[_0x4f26('0x2b')],qs[_0x4f26('0x3f')](_0x57630b[_0x4f26('0x2d')][_0x4f26('0x3f')]));_0x460d88[_0x4f26('0x30')]=_0x460d88['attributes'][_0x4f26('0x31')]?_0x460d88[_0x4f26('0x30')]:_0x53db1e['model'];if(!_0x57630b[_0x4f26('0x2d')][_0x4f26('0x32')](_0x4f26('0x33'))){_0x460d88[_0x4f26('0x1c')]=qs['limit'](_0x57630b[_0x4f26('0x2d')][_0x4f26('0x1c')]);_0x460d88[_0x4f26('0x19')]=qs[_0x4f26('0x19')](_0x57630b[_0x4f26('0x2d')][_0x4f26('0x19')]);}_0x460d88['order']=qs[_0x4f26('0x35')](_0x57630b['query'][_0x4f26('0x35')]);_0x460d88[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0x57630b[_0x4f26('0x2d')],_0x53db1e[_0x4f26('0x2e')]));_0x460d88[_0x4f26('0x36')][_0x4f26('0x57')]=_0x4411e5['id'];if(_0x57630b[_0x4f26('0x2d')]['filter']){_0x460d88[_0x4f26('0x36')]=_[_0x4f26('0x38')](_0x460d88[_0x4f26('0x36')],{'$or':_[_0x4f26('0x2c')](_0x460d88[_0x4f26('0x30')],function(_0x4ed2eb){var _0xcbaa31={};_0xcbaa31[_0x4ed2eb]={'$like':'%'+_0x57630b[_0x4f26('0x2d')][_0x4f26('0x39')]+'%'};return _0xcbaa31;})});}_0x460d88=_['merge']({},_0x460d88,_0x57630b['options']);return db[_0x4f26('0x5c')][_0x4f26('0x1b')]({'where':_0x460d88[_0x4f26('0x36')]})[_0x4f26('0x22')](function(_0x3e1a96){_0x31a332[_0x4f26('0x1b')]=_0x3e1a96;if(_0x57630b[_0x4f26('0x2d')][_0x4f26('0x40')]){_0x460d88['include']=[{'all':!![]}];}return db[_0x4f26('0x5c')][_0x4f26('0x3c')](_0x460d88);})[_0x4f26('0x22')](function(_0x3886d9){_0x31a332[_0x4f26('0x3d')]=_0x3886d9;return _0x31a332;});}})['then'](respondWithFilteredResult(_0x4d5d46,_0x460d88))['catch'](handleError(_0x4d5d46,null));};exports[_0x4f26('0x5d')]=function(_0x221544,_0x4a2de4,_0x5b001f){var _0x4f299a={};var _0x4aa86f={};var _0x40aeda;var _0x11c9b5;return db[_0x4f26('0x28')][_0x4f26('0x55')]({'where':{'id':_0x221544['params']['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x4a2de4,null))[_0x4f26('0x22')](function(_0x4e8bd2){if(_0x4e8bd2){_0x40aeda=_0x4e8bd2;_0x4aa86f[_0x4f26('0x2b')]=_['keys'](db['CmList'][_0x4f26('0x4d')]);_0x4aa86f[_0x4f26('0x2d')]=_[_0x4f26('0x4c')](_0x221544[_0x4f26('0x2d')]);_0x4aa86f[_0x4f26('0x2e')]=_['intersection'](_0x4aa86f[_0x4f26('0x2b')],_0x4aa86f['query']);_0x4f299a['attributes']=_['intersection'](_0x4aa86f[_0x4f26('0x2b')],qs[_0x4f26('0x3f')](_0x221544['query'][_0x4f26('0x3f')]));_0x4f299a[_0x4f26('0x30')]=_0x4f299a[_0x4f26('0x30')][_0x4f26('0x31')]?_0x4f299a[_0x4f26('0x30')]:_0x4aa86f['model'];_0x4f299a[_0x4f26('0x34')]=qs[_0x4f26('0x35')](_0x221544[_0x4f26('0x2d')][_0x4f26('0x35')]);_0x4f299a[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0x221544[_0x4f26('0x2d')],_0x4aa86f[_0x4f26('0x2e')]));if(_0x221544[_0x4f26('0x2d')][_0x4f26('0x39')]){_0x4f299a['where']=_[_0x4f26('0x38')](_0x4f299a['where'],{'$or':_[_0x4f26('0x2c')](_0x4f299a[_0x4f26('0x30')],function(_0x53f600){var _0x19f2a4={};_0x19f2a4[_0x53f600]={'$like':'%'+_0x221544[_0x4f26('0x2d')]['filter']+'%'};return _0x19f2a4;})});}_0x4f299a=_[_0x4f26('0x38')]({},_0x4f299a,_0x221544[_0x4f26('0x3a')]);return _0x40aeda[_0x4f26('0x5d')](_0x4f299a);}})[_0x4f26('0x22')](function(_0xd25710){if(_0xd25710){_0x11c9b5=_0xd25710[_0x4f26('0x31')];if(!_0x221544[_0x4f26('0x2d')]['hasOwnProperty'](_0x4f26('0x33'))){_0x4f299a[_0x4f26('0x1c')]=qs['limit'](_0x221544[_0x4f26('0x2d')]['limit']);_0x4f299a[_0x4f26('0x19')]=qs[_0x4f26('0x19')](_0x221544[_0x4f26('0x2d')][_0x4f26('0x19')]);}return _0x40aeda[_0x4f26('0x5d')](_0x4f299a);}})[_0x4f26('0x22')](function(_0x1da029){if(_0x1da029){return _0x1da029?{'count':_0x11c9b5,'rows':_0x1da029}:null;}})[_0x4f26('0x22')](respondWithResult(_0x4a2de4,null))[_0x4f26('0x42')](handleError(_0x4a2de4,null));};exports[_0x4f26('0x5e')]=function(_0x2112c9,_0xeb66aa,_0x5a874c){var _0x5f4675,_0x690cf4;var _0x55247c=[];var _0xf5cc36=moment()[_0x4f26('0x5f')](_0x4f26('0x60'));return db[_0x4f26('0x28')][_0x4f26('0x41')]({'where':{'id':_0x2112c9[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0xeb66aa,null))[_0x4f26('0x22')](function(_0x378b06){if(_0x378b06){_0x690cf4=_0x378b06;return _0x378b06[_0x4f26('0x5e')](_0x2112c9[_0x4f26('0x44')]['ids'],_[_0x4f26('0x4e')](_0x2112c9[_0x4f26('0x44')],['ids','id'])||{});}return null;})[_0x4f26('0x61')](function(_0x5c5a07){var _0x520f44;var _0x93ca7d;_0x5f4675=_0x5c5a07||[];var _0x3e91da=[];if(_0x5c5a07){for(var _0x394371=0x0;_0x394371<_0x5c5a07[_0x4f26('0x31')];_0x394371+=0x1){var _0x2ddeda=_0x5c5a07[_0x394371][_0x4f26('0x23')]({'plain':!![]});_0x690cf4[_0x4f26('0x62')]=_0x2112c9['body'][_0x4f26('0x62')]?_0x2112c9[_0x4f26('0x44')][_0x4f26('0x62')]:_0x690cf4[_0x4f26('0x62')];switch(_0x690cf4[_0x4f26('0x62')]){case _0x4f26('0x63'):_0x520f44=squel[_0x4f26('0x64')]()[_0x4f26('0x65')](_0x4f26('0x66'))['fromQuery']([_0x4f26('0x67'),'scheduledAt',_0x4f26('0x68'),_0x4f26('0x69'),_0x4f26('0x57'),_0x4f26('0x50'),'updatedAt'],squel['select']()['field'](_0x4f26('0x67'),'phone')[_0x4f26('0x6a')]('NOW()',_0x4f26('0x6b'))[_0x4f26('0x6a')]('id','ContactId')[_0x4f26('0x6a')](_0x2ddeda[_0x4f26('0x6c')][_0x4f26('0x6d')](),_0x4f26('0x69'))[_0x4f26('0x6a')](_0x2112c9['params']['id'][_0x4f26('0x6d')](),'CampaignId')[_0x4f26('0x6a')]('\x27'+_0xf5cc36+'\x27',_0x4f26('0x50'))[_0x4f26('0x6a')]('\x27'+_0xf5cc36+'\x27','updatedAt')['from'](_0x4f26('0x6e'))[_0x4f26('0x36')](_0x4f26('0x6f'))[_0x4f26('0x36')](_0x4f26('0x70'),_0x2ddeda[_0x4f26('0x6c')][_0x4f26('0x6d')]())[_0x4f26('0x36')]('phone\x20IS\x20NOT\x20NULL')[_0x4f26('0x36')](_0x4f26('0x71'),squel[_0x4f26('0x72')]()[_0x4f26('0x6a')]('COALESCE(calleridnum,\x27\x27)')[_0x4f26('0x73')](_0x4f26('0x74'))['where'](_0x4f26('0x75'),_0x2112c9[_0x4f26('0x4b')]['id'][_0x4f26('0x6d')]()))[_0x4f26('0x36')](_0x4f26('0x71'),squel[_0x4f26('0x72')]()[_0x4f26('0x6a')](_0x4f26('0x76'))[_0x4f26('0x73')](_0x4f26('0x66'))[_0x4f26('0x36')](_0x4f26('0x75'),_0x2112c9[_0x4f26('0x4b')]['id']['toString']())))['toString']();break;case _0x4f26('0x77'):_0x520f44=squel['insert']()[_0x4f26('0x65')](_0x4f26('0x66'))[_0x4f26('0x78')]([_0x4f26('0x67'),_0x4f26('0x6b'),'ContactId','ListId',_0x4f26('0x57'),_0x4f26('0x50'),_0x4f26('0x4f')],squel['select']()[_0x4f26('0x6a')](_0x4f26('0x67'),'phone')['field'](_0x4f26('0x79'),'scheduledAt')['field']('id','ContactId')[_0x4f26('0x6a')](_0x2ddeda['CmListId'][_0x4f26('0x6d')](),_0x4f26('0x69'))[_0x4f26('0x6a')](_0x2112c9[_0x4f26('0x4b')]['id'][_0x4f26('0x6d')](),_0x4f26('0x57'))[_0x4f26('0x6a')]('\x27'+_0xf5cc36+'\x27',_0x4f26('0x50'))['field']('\x27'+_0xf5cc36+'\x27',_0x4f26('0x4f'))[_0x4f26('0x73')](_0x4f26('0x6e'))[_0x4f26('0x36')](_0x4f26('0x6f'))[_0x4f26('0x36')]('ListId\x20=\x20?',_0x2ddeda[_0x4f26('0x6c')][_0x4f26('0x6d')]())[_0x4f26('0x36')]('phone\x20IS\x20NOT\x20NULL')[_0x4f26('0x36')](_0x4f26('0x71'),squel[_0x4f26('0x72')]()['field'](_0x4f26('0x76'))['from']('cm_hopper')[_0x4f26('0x36')](_0x4f26('0x75'),_0x2112c9['params']['id']['toString']())))['toString']();break;default:_0x520f44=squel[_0x4f26('0x64')]()[_0x4f26('0x65')](_0x4f26('0x66'))[_0x4f26('0x78')]([_0x4f26('0x67'),_0x4f26('0x6b'),_0x4f26('0x68'),_0x4f26('0x69'),'CampaignId','createdAt',_0x4f26('0x4f')],squel[_0x4f26('0x72')]()['field']('phone',_0x4f26('0x67'))['field'](_0x4f26('0x79'),_0x4f26('0x6b'))['field']('id','ContactId')['field'](_0x2ddeda['CmListId']['toString'](),'ListId')['field'](_0x2112c9[_0x4f26('0x4b')]['id'][_0x4f26('0x6d')](),_0x4f26('0x57'))['field']('\x27'+_0xf5cc36+'\x27',_0x4f26('0x50'))[_0x4f26('0x6a')]('\x27'+_0xf5cc36+'\x27',_0x4f26('0x4f'))[_0x4f26('0x73')](_0x4f26('0x6e'))[_0x4f26('0x36')](_0x4f26('0x6f'))[_0x4f26('0x36')](_0x4f26('0x70'),_0x2ddeda[_0x4f26('0x6c')][_0x4f26('0x6d')]())[_0x4f26('0x36')]('phone\x20IS\x20NOT\x20NULL'))[_0x4f26('0x6d')]();}_0x93ca7d=squel[_0x4f26('0x64')]()[_0x4f26('0x65')]('cm_hopper_additional_phones')[_0x4f26('0x78')]([_0x4f26('0x7a'),'scheduledAt',_0x4f26('0x67'),_0x4f26('0x7b'),_0x4f26('0x50'),_0x4f26('0x4f')],squel[_0x4f26('0x72')]()[_0x4f26('0x6a')](_0x4f26('0x7c'),'id')[_0x4f26('0x6a')](_0x4f26('0x79'),_0x4f26('0x6b'))[_0x4f26('0x6a')](_0x4f26('0x7d'),_0x4f26('0x67'))['field'](_0x4f26('0x7e'),_0x4f26('0x7b'))['field']('\x27'+_0xf5cc36+'\x27',_0x4f26('0x50'))[_0x4f26('0x6a')]('\x27'+_0xf5cc36+'\x27',_0x4f26('0x4f'))[_0x4f26('0x73')]('cm_contact_has_items','ci')[_0x4f26('0x7f')]('cm_hopper','h',_0x4f26('0x80'))[_0x4f26('0x36')](_0x4f26('0x81'),_0x2ddeda[_0x4f26('0x6c')][_0x4f26('0x6d')]())['where'](_0x4f26('0x82'),_0x2112c9['params']['id'][_0x4f26('0x6d')]())[_0x4f26('0x36')](_0x4f26('0x83'),_0xf5cc36))[_0x4f26('0x6d')]();_0x3e91da['push'](db[_0x4f26('0x84')][_0x4f26('0x2d')](_0x520f44));_0x55247c[_0x4f26('0x85')](db[_0x4f26('0x84')][_0x4f26('0x2d')](_0x93ca7d));}return BPromise[_0x4f26('0x86')](_0x3e91da);}})[_0x4f26('0x22')](function(){return BPromise[_0x4f26('0x86')](_0x55247c);})[_0x4f26('0x22')](function(){return _0x5f4675;})[_0x4f26('0x22')](respondWithResult(_0xeb66aa,null))[_0x4f26('0x42')](handleError(_0xeb66aa,null));};exports[_0x4f26('0x87')]=function(_0x1efe35,_0x4753fe,_0x457d47){return db['Campaign']['find']({'where':{'id':_0x1efe35[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x4753fe,null))['then'](function(_0x1189dc){if(_0x1189dc){return _0x1189dc['removeLists'](_0x1efe35[_0x4f26('0x2d')]['ids']);}})[_0x4f26('0x22')](function(_0x2c9293){if(_0x2c9293){return db[_0x4f26('0x56')][_0x4f26('0x21')]({'where':{'ListId':_0x1efe35[_0x4f26('0x2d')][_0x4f26('0x88')],'CampaignId':_0x1efe35['params']['id']}})['then'](function(){return _0x2c9293;});}})[_0x4f26('0x22')](respondWithStatusCode(_0x4753fe,null))[_0x4f26('0x42')](handleError(_0x4753fe,null));};exports[_0x4f26('0x89')]=function(_0xa4277c,_0x4707f8,_0x59e677){var _0x5aed94={};var _0x269e9b={};var _0x397987;var _0x2c7ee0;return db[_0x4f26('0x28')]['findOne']({'where':{'id':_0xa4277c[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x4707f8,null))[_0x4f26('0x22')](function(_0x1ef130){if(_0x1ef130){_0x397987=_0x1ef130;_0x269e9b['model']=_[_0x4f26('0x4c')](db[_0x4f26('0x8a')][_0x4f26('0x4d')]);_0x269e9b[_0x4f26('0x2d')]=_[_0x4f26('0x4c')](_0xa4277c['query']);_0x269e9b[_0x4f26('0x2e')]=_[_0x4f26('0x2f')](_0x269e9b['model'],_0x269e9b[_0x4f26('0x2d')]);_0x5aed94[_0x4f26('0x30')]=_['intersection'](_0x269e9b['model'],qs[_0x4f26('0x3f')](_0xa4277c[_0x4f26('0x2d')][_0x4f26('0x3f')]));_0x5aed94[_0x4f26('0x30')]=_0x5aed94['attributes'][_0x4f26('0x31')]?_0x5aed94[_0x4f26('0x30')]:_0x269e9b[_0x4f26('0x2b')];_0x5aed94[_0x4f26('0x34')]=qs[_0x4f26('0x35')](_0xa4277c[_0x4f26('0x2d')][_0x4f26('0x35')]);_0x5aed94[_0x4f26('0x36')]=qs[_0x4f26('0x2e')](_[_0x4f26('0x37')](_0xa4277c[_0x4f26('0x2d')],_0x269e9b[_0x4f26('0x2e')]));if(_0xa4277c[_0x4f26('0x2d')][_0x4f26('0x39')]){_0x5aed94[_0x4f26('0x36')]=_[_0x4f26('0x38')](_0x5aed94[_0x4f26('0x36')],{'$or':_['map'](_0x5aed94[_0x4f26('0x30')],function(_0xda16a3){var _0x458404={};_0x458404[_0xda16a3]={'$like':'%'+_0xa4277c[_0x4f26('0x2d')]['filter']+'%'};return _0x458404;})});}_0x5aed94=_[_0x4f26('0x38')]({},_0x5aed94,_0xa4277c[_0x4f26('0x3a')]);return _0x397987[_0x4f26('0x89')](_0x5aed94);}})['then'](function(_0x1724a7){if(_0x1724a7){_0x2c7ee0=_0x1724a7[_0x4f26('0x31')];if(!_0xa4277c[_0x4f26('0x2d')][_0x4f26('0x32')](_0x4f26('0x33'))){_0x5aed94['limit']=qs[_0x4f26('0x1c')](_0xa4277c['query']['limit']);_0x5aed94['offset']=qs[_0x4f26('0x19')](_0xa4277c[_0x4f26('0x2d')][_0x4f26('0x19')]);}return _0x397987['getBlackLists'](_0x5aed94);}})['then'](function(_0x5016a2){if(_0x5016a2){return _0x5016a2?{'count':_0x2c7ee0,'rows':_0x5016a2}:null;}})[_0x4f26('0x22')](respondWithResult(_0x4707f8,null))[_0x4f26('0x42')](handleError(_0x4707f8,null));};exports[_0x4f26('0x8b')]=function(_0x453383,_0x524096,_0x32459f){var _0x15b86e,_0x10ea21;var _0x55ef6d=[];var _0x50a1b9=moment()[_0x4f26('0x5f')](_0x4f26('0x60'));return db[_0x4f26('0x28')][_0x4f26('0x41')]({'where':{'id':_0x453383[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x524096,null))[_0x4f26('0x22')](function(_0x504f7a){if(_0x504f7a){_0x10ea21=_0x504f7a;return _0x504f7a['addBlackLists'](_0x453383[_0x4f26('0x44')]['ids'],_[_0x4f26('0x4e')](_0x453383['body'],[_0x4f26('0x88'),'id'])||{});}return null;})[_0x4f26('0x61')](function(_0x152471){var _0x2e437;var _0x16ef18;_0x15b86e=_0x152471||[];var _0x2b92f8=[];if(_0x152471){for(var _0xd6fdee=0x0;_0xd6fdee<_0x152471[_0x4f26('0x31')];_0xd6fdee+=0x1){var _0x2e1506=_0x152471[_0xd6fdee][_0x4f26('0x23')]({'plain':!![]});_0x2e437=squel[_0x4f26('0x64')]()[_0x4f26('0x65')](_0x4f26('0x8c'))[_0x4f26('0x78')]([_0x4f26('0x67'),_0x4f26('0x68'),'ListId',_0x4f26('0x57'),_0x4f26('0x50'),'updatedAt'],squel['select']()['field'](_0x4f26('0x67'),_0x4f26('0x67'))[_0x4f26('0x6a')]('id',_0x4f26('0x68'))[_0x4f26('0x6a')](_0x2e1506[_0x4f26('0x6c')][_0x4f26('0x6d')](),'ListId')[_0x4f26('0x6a')](_0x453383['params']['id']['toString'](),_0x4f26('0x57'))[_0x4f26('0x6a')](_0x4f26('0x79'),_0x4f26('0x50'))['field']('NOW()',_0x4f26('0x4f'))[_0x4f26('0x73')](_0x4f26('0x6e'))['where'](_0x4f26('0x6f'))[_0x4f26('0x36')](_0x4f26('0x70'),_0x2e1506[_0x4f26('0x6c')][_0x4f26('0x6d')]())[_0x4f26('0x36')](_0x4f26('0x8d')))[_0x4f26('0x6d')]();_0x2b92f8['push'](db[_0x4f26('0x84')]['query'](_0x2e437));}return BPromise[_0x4f26('0x86')](_0x2b92f8);}})['then'](function(){return _0x15b86e;})[_0x4f26('0x22')](respondWithResult(_0x524096,null))[_0x4f26('0x42')](handleError(_0x524096,null));};exports[_0x4f26('0x8e')]=function(_0x16f187,_0x5d00b1,_0x5c3ab0){return db[_0x4f26('0x28')][_0x4f26('0x41')]({'where':{'id':_0x16f187[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](handleEntityNotFound(_0x5d00b1,null))[_0x4f26('0x22')](function(_0x810055){if(_0x810055){return _0x810055[_0x4f26('0x8e')](_0x16f187['query'][_0x4f26('0x88')]);}})[_0x4f26('0x22')](function(_0xc10b13){if(_0xc10b13){return db[_0x4f26('0x5c')]['destroy']({'where':{'ListId':_0x16f187[_0x4f26('0x2d')][_0x4f26('0x88')],'CampaignId':_0x16f187[_0x4f26('0x4b')]['id']}})[_0x4f26('0x22')](function(){return _0xc10b13;});}})[_0x4f26('0x22')](respondWithStatusCode(_0x5d00b1,null))[_0x4f26('0x42')](handleError(_0x5d00b1,null));};
\ No newline at end of file
+var _0xae88=['COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','insert','cm_hopper_additional_phones','OrderBy','ci.OrderBY','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','cm_contacts','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','offset','count','set','Content-Range','then','IvrCampaigns','UserProfileResource','end','error','name','index','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','include','omit','updatedAt','createdAt','update','destroy','getHoppers','findOne','nolimit','CmHopper','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','ids','spread','dialCheckDuplicateType','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','select','phone','field','NOW()','CmListId','toString','from','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)'];(function(_0xf89c3,_0x351bf1){var _0x274fc8=function(_0x5e0c91){while(--_0x5e0c91){_0xf89c3['push'](_0xf89c3['shift']());}};_0x274fc8(++_0x351bf1);}(_0xae88,0xa1));var _0x8ae8=function(_0x5e11dc,_0x21406e){_0x5e11dc=_0x5e11dc-0x0;var _0x530af1=_0xae88[_0x5e11dc];return _0x530af1;};'use strict';var emlformat=require(_0x8ae8('0x0'));var rimraf=require(_0x8ae8('0x1'));var zipdir=require(_0x8ae8('0x2'));var jsonpatch=require(_0x8ae8('0x3'));var rp=require(_0x8ae8('0x4'));var moment=require('moment');var BPromise=require(_0x8ae8('0x5'));var Mustache=require('mustache');var util=require(_0x8ae8('0x6'));var path=require('path');var sox=require(_0x8ae8('0x7'));var csv=require('to-csv');var ejs=require(_0x8ae8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ae8('0x9'));var squel=require(_0x8ae8('0xa'));var crypto=require('crypto');var jsforce=require(_0x8ae8('0xb'));var deskjs=require(_0x8ae8('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8ae8('0xd'));var Papa=require(_0x8ae8('0xe'));var Redis=require(_0x8ae8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8ae8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ae8('0x11'))(_0x8ae8('0x12'));var utils=require(_0x8ae8('0x13'));var config=require(_0x8ae8('0x14'));var licenseUtil=require(_0x8ae8('0x15'));var db=require(_0x8ae8('0x16'))['db'];function respondWithStatusCode(_0x56ca5d,_0x1e0ca9){_0x1e0ca9=_0x1e0ca9||0xcc;return function(_0xca6f82){if(_0xca6f82){return _0x56ca5d[_0x8ae8('0x17')](_0x1e0ca9);}return _0x56ca5d[_0x8ae8('0x18')](_0x1e0ca9)['end']();};}function respondWithResult(_0x2f47ca,_0x13b09a){_0x13b09a=_0x13b09a||0xc8;return function(_0x30b12c){if(_0x30b12c){return _0x2f47ca[_0x8ae8('0x18')](_0x13b09a)[_0x8ae8('0x19')](_0x30b12c);}};}function respondWithFilteredResult(_0x19a1d9,_0x2df77c){return function(_0x1eb2a9){if(_0x1eb2a9){var _0x3c674f=typeof _0x2df77c['offset']==='undefined'&&typeof _0x2df77c[_0x8ae8('0x1a')]===_0x8ae8('0x1b');var _0x3bc66c=_0x1eb2a9['count'];var _0x2620de=_0x3c674f?0x0:_0x2df77c[_0x8ae8('0x1c')];var _0x3909c7=_0x3c674f?_0x1eb2a9[_0x8ae8('0x1d')]:_0x2df77c['offset']+_0x2df77c['limit'];var _0x3c276c;if(_0x3909c7>=_0x3bc66c){_0x3909c7=_0x3bc66c;_0x3c276c=0xc8;}else{_0x3c276c=0xce;}_0x19a1d9['status'](_0x3c276c);return _0x19a1d9[_0x8ae8('0x1e')](_0x8ae8('0x1f'),_0x2620de+'-'+_0x3909c7+'/'+_0x3bc66c)[_0x8ae8('0x19')](_0x1eb2a9);}return null;};}function patchUpdates(_0x76554d){return function(_0x472718){try{jsonpatch['apply'](_0x472718,_0x76554d,!![]);}catch(_0x9ec156){return BPromise['reject'](_0x9ec156);}return _0x472718['save']();};}function saveUpdates(_0x1ee2a8,_0x20756c){return function(_0xd8b0f6){if(_0xd8b0f6){return _0xd8b0f6['update'](_0x1ee2a8)[_0x8ae8('0x20')](function(_0x5a3df6){return _0x5a3df6;});}return null;};}function removeEntity(_0x2136e0,_0x2e46af){return function(_0x205214){if(_0x205214){return _0x205214['destroy']()[_0x8ae8('0x20')](function(){var _0x25ce3a=_0x205214['get']({'plain':!![]});var _0x2c8ce3=_0x8ae8('0x21');return db[_0x8ae8('0x22')]['destroy']({'where':{'type':_0x2c8ce3,'resourceId':_0x25ce3a['id']}})['then'](function(){return _0x205214;});})[_0x8ae8('0x20')](function(){_0x2136e0[_0x8ae8('0x18')](0xcc)[_0x8ae8('0x23')]();});}};}function handleEntityNotFound(_0xbc7b86,_0x465254){return function(_0x1872d5){if(!_0x1872d5){_0xbc7b86[_0x8ae8('0x17')](0x194);}return _0x1872d5;};}function handleError(_0x5567e4,_0x2b014d){_0x2b014d=_0x2b014d||0x1f4;return function(_0x209bbd){logger[_0x8ae8('0x24')](_0x209bbd['stack']);if(_0x209bbd[_0x8ae8('0x25')]){delete _0x209bbd[_0x8ae8('0x25')];}_0x5567e4[_0x8ae8('0x18')](_0x2b014d)['send'](_0x209bbd);};}exports[_0x8ae8('0x26')]=function(_0x578e8c,_0xfb5c29){var _0x47cbfa={},_0x201bef={},_0x349eae={'count':0x0,'rows':[]};var _0x4e99b2=_[_0x8ae8('0x27')](db[_0x8ae8('0x28')][_0x8ae8('0x29')],function(_0x49d1e5){return{'name':_0x49d1e5[_0x8ae8('0x2a')],'type':_0x49d1e5[_0x8ae8('0x2b')][_0x8ae8('0x2c')]};});_0x201bef[_0x8ae8('0x2d')]=_[_0x8ae8('0x27')](_0x4e99b2,_0x8ae8('0x25'));_0x201bef[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x578e8c[_0x8ae8('0x2e')]);_0x201bef[_0x8ae8('0x30')]=_[_0x8ae8('0x31')](_0x201bef[_0x8ae8('0x2d')],_0x201bef[_0x8ae8('0x2e')]);_0x47cbfa[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x201bef['model'],qs['fields'](_0x578e8c[_0x8ae8('0x2e')][_0x8ae8('0x33')]));_0x47cbfa['attributes']=_0x47cbfa[_0x8ae8('0x32')]['length']?_0x47cbfa[_0x8ae8('0x32')]:_0x201bef[_0x8ae8('0x2d')];if(!_0x578e8c[_0x8ae8('0x2e')][_0x8ae8('0x34')]('nolimit')){_0x47cbfa['limit']=qs[_0x8ae8('0x1a')](_0x578e8c[_0x8ae8('0x2e')]['limit']);_0x47cbfa[_0x8ae8('0x1c')]=qs[_0x8ae8('0x1c')](_0x578e8c[_0x8ae8('0x2e')][_0x8ae8('0x1c')]);}_0x47cbfa[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x578e8c[_0x8ae8('0x2e')][_0x8ae8('0x36')]);_0x47cbfa[_0x8ae8('0x37')]=qs[_0x8ae8('0x30')](_[_0x8ae8('0x38')](_0x578e8c[_0x8ae8('0x2e')],_0x201bef['filters']),_0x4e99b2);if(_0x578e8c['query'][_0x8ae8('0x39')]){_0x47cbfa['where']=_[_0x8ae8('0x3a')](_0x47cbfa[_0x8ae8('0x37')],{'$or':_[_0x8ae8('0x27')](_0x4e99b2,function(_0x12af7c){if(_0x12af7c[_0x8ae8('0x2b')]!=='VIRTUAL'){var _0x9692e4={};_0x9692e4[_0x12af7c[_0x8ae8('0x25')]]={'$like':'%'+_0x578e8c[_0x8ae8('0x2e')][_0x8ae8('0x39')]+'%'};return _0x9692e4;}})});}_0x47cbfa=_[_0x8ae8('0x3a')]({},_0x47cbfa,_0x578e8c[_0x8ae8('0x3b')]);var _0x46b57e={'where':_0x47cbfa['where']};return db['Campaign'][_0x8ae8('0x1d')](_0x46b57e)[_0x8ae8('0x20')](function(_0x9eef24){_0x349eae[_0x8ae8('0x1d')]=_0x9eef24;if(_0x578e8c[_0x8ae8('0x2e')]['includeAll']){_0x47cbfa['include']=[{'all':!![]}];}return db[_0x8ae8('0x28')][_0x8ae8('0x3c')](_0x47cbfa);})[_0x8ae8('0x20')](function(_0x4646e2){_0x349eae[_0x8ae8('0x3d')]=_0x4646e2;return _0x349eae;})[_0x8ae8('0x20')](respondWithFilteredResult(_0xfb5c29,_0x47cbfa))[_0x8ae8('0x3e')](handleError(_0xfb5c29,null));};exports[_0x8ae8('0x3f')]=function(_0x4e6c94,_0x264d86){var _0x424dd8={'raw':![],'where':{'id':_0x4e6c94[_0x8ae8('0x40')]['id']}},_0x3a6c6e={};_0x3a6c6e[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db['Campaign'][_0x8ae8('0x29')]);_0x3a6c6e[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x4e6c94['query']);_0x3a6c6e[_0x8ae8('0x30')]=_[_0x8ae8('0x31')](_0x3a6c6e[_0x8ae8('0x2d')],_0x3a6c6e[_0x8ae8('0x2e')]);_0x424dd8[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x3a6c6e[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x4e6c94[_0x8ae8('0x2e')][_0x8ae8('0x33')]));_0x424dd8[_0x8ae8('0x32')]=_0x424dd8[_0x8ae8('0x32')]['length']?_0x424dd8[_0x8ae8('0x32')]:_0x3a6c6e['model'];if(_0x4e6c94['query'][_0x8ae8('0x41')]){_0x424dd8['include']=[{'all':!![]}];}_0x424dd8=_[_0x8ae8('0x3a')]({},_0x424dd8,_0x4e6c94[_0x8ae8('0x3b')]);return db['Campaign']['find'](_0x424dd8)[_0x8ae8('0x20')](handleEntityNotFound(_0x264d86,null))[_0x8ae8('0x20')](respondWithResult(_0x264d86,null))[_0x8ae8('0x3e')](handleError(_0x264d86,null));};exports[_0x8ae8('0x42')]=function(_0x2de81d,_0x12c4bb){return db[_0x8ae8('0x28')]['create'](_0x2de81d[_0x8ae8('0x43')],{})[_0x8ae8('0x20')](function(_0xbea562){var _0xc7ed31=_0x2de81d[_0x8ae8('0x44')][_0x8ae8('0x45')]({'plain':!![]});if(!_0xc7ed31)throw new Error(_0x8ae8('0x46'));if(_0xc7ed31[_0x8ae8('0x47')]===_0x8ae8('0x44')){var _0x32f674=_0xbea562[_0x8ae8('0x45')]({'plain':!![]});var _0x1e3bd3=_0x8ae8('0x21');return db[_0x8ae8('0x48')][_0x8ae8('0x49')]({'where':{'name':_0x1e3bd3,'userProfileId':_0xc7ed31[_0x8ae8('0x4a')]},'raw':!![]})['then'](function(_0x116090){if(_0x116090&&_0x116090[_0x8ae8('0x4b')]===0x0){return db[_0x8ae8('0x22')]['create']({'name':_0x32f674[_0x8ae8('0x25')],'resourceId':_0x32f674['id'],'type':_0x116090[_0x8ae8('0x25')],'sectionId':_0x116090['id']},{})['then'](function(){return _0xbea562;});}else{return _0xbea562;}})[_0x8ae8('0x3e')](function(_0x52de05){logger[_0x8ae8('0x24')](_0x8ae8('0x4c'),_0x52de05);throw _0x52de05;});}return _0xbea562;})[_0x8ae8('0x20')](respondWithResult(_0x12c4bb,0xc9))[_0x8ae8('0x3e')](handleError(_0x12c4bb,null));};exports[_0x8ae8('0x4d')]=function(_0x1d057b,_0x52e8f4){var _0x12d376={'where':{'id':_0x1d057b['params']['id']}},_0x27cb15={};_0x27cb15[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db[_0x8ae8('0x28')][_0x8ae8('0x29')]);_0x12d376['attributes']=_[_0x8ae8('0x31')](_0x27cb15['model'],qs[_0x8ae8('0x33')](_0x1d057b[_0x8ae8('0x2e')][_0x8ae8('0x33')]));_0x12d376[_0x8ae8('0x32')]=_0x12d376[_0x8ae8('0x32')][_0x8ae8('0x4e')]?_0x12d376[_0x8ae8('0x32')]:_0x27cb15[_0x8ae8('0x2d')];if(_0x1d057b[_0x8ae8('0x2e')][_0x8ae8('0x41')]){_0x12d376[_0x8ae8('0x4f')]=[{'all':!![]}];}_0x12d376=_['merge']({},_0x12d376,_0x1d057b[_0x8ae8('0x3b')]);return db['Campaign'][_0x8ae8('0x49')](_0x12d376)[_0x8ae8('0x20')](handleEntityNotFound(_0x52e8f4,null))[_0x8ae8('0x20')](function(_0x3d4987){if(_0x3d4987){var _0x4a2207=_0x3d4987['get']({'plain':!![]});_0x4a2207=qs[_0x8ae8('0x50')](_0x4a2207,['id','createdAt',_0x8ae8('0x51')]);_0x1d057b['body']=_[_0x8ae8('0x50')](_0x1d057b['body'],['id',_0x8ae8('0x52'),_0x8ae8('0x51')]);return db[_0x8ae8('0x28')][_0x8ae8('0x42')](_[_0x8ae8('0x3a')](_0x4a2207,_0x1d057b[_0x8ae8('0x43')]),{'include':_0x1d057b['query'][_0x8ae8('0x41')]?[{'all':!![]}]:undefined})[_0x8ae8('0x20')](function(_0x1fc36a){var _0x3f7593=_0x1d057b['user'][_0x8ae8('0x45')]({'plain':!![]});if(!_0x3f7593)throw new Error(_0x8ae8('0x46'));if(_0x3f7593[_0x8ae8('0x47')]==='user'){var _0x3cff74=_0x1fc36a[_0x8ae8('0x45')]({'plain':!![]});var _0x471b1e=_0x8ae8('0x21');return db['UserProfileSection'][_0x8ae8('0x49')]({'where':{'name':_0x471b1e,'userProfileId':_0x3f7593[_0x8ae8('0x4a')]},'raw':!![]})[_0x8ae8('0x20')](function(_0x1f7b8f){if(_0x1f7b8f&&_0x1f7b8f['autoAssociation']===0x0){return db[_0x8ae8('0x22')]['create']({'name':_0x3cff74[_0x8ae8('0x25')],'resourceId':_0x3cff74['id'],'type':_0x1f7b8f[_0x8ae8('0x25')],'sectionId':_0x1f7b8f['id']},{})[_0x8ae8('0x20')](function(){return _0x1fc36a;});}else{return _0x1fc36a;}})['catch'](function(_0x2ad525){logger[_0x8ae8('0x24')](_0x8ae8('0x4c'),_0x2ad525);throw _0x2ad525;});}return _0x1fc36a;});}})[_0x8ae8('0x20')](respondWithResult(_0x52e8f4,0xc9))[_0x8ae8('0x3e')](handleError(_0x52e8f4,null));};exports[_0x8ae8('0x53')]=function(_0xe32f4e,_0x53c5fd){if(_0xe32f4e[_0x8ae8('0x43')]['id']){delete _0xe32f4e['body']['id'];}return db[_0x8ae8('0x28')]['find']({'where':{'id':_0xe32f4e[_0x8ae8('0x40')]['id']}})['then'](handleEntityNotFound(_0x53c5fd,null))[_0x8ae8('0x20')](saveUpdates(_0xe32f4e[_0x8ae8('0x43')],null))[_0x8ae8('0x20')](respondWithResult(_0x53c5fd,null))['catch'](handleError(_0x53c5fd,null));};exports[_0x8ae8('0x54')]=function(_0xd4a348,_0x131ec9){return db['Campaign'][_0x8ae8('0x49')]({'where':{'id':_0xd4a348['params']['id']}})['then'](handleEntityNotFound(_0x131ec9,null))[_0x8ae8('0x20')](removeEntity(_0x131ec9,null))['catch'](handleError(_0x131ec9,null));};exports[_0x8ae8('0x55')]=function(_0x233fd1,_0x218e9d,_0x3ae3ee){var _0x520915={'raw':!![],'where':{}};var _0x2b9ae8={};var _0x58def5={'count':0x0,'rows':[]};return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x233fd1[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x218e9d,null))[_0x8ae8('0x20')](function(_0x21293c){if(_0x21293c){_0x2b9ae8[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db['CmHopper'][_0x8ae8('0x29')]);_0x2b9ae8[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x233fd1['query']);_0x2b9ae8['filters']=_[_0x8ae8('0x31')](_0x2b9ae8[_0x8ae8('0x2d')],_0x2b9ae8[_0x8ae8('0x2e')]);_0x520915[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x2b9ae8[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x233fd1[_0x8ae8('0x2e')]['fields']));_0x520915['attributes']=_0x520915[_0x8ae8('0x32')][_0x8ae8('0x4e')]?_0x520915[_0x8ae8('0x32')]:_0x2b9ae8[_0x8ae8('0x2d')];if(!_0x233fd1['query'][_0x8ae8('0x34')](_0x8ae8('0x57'))){_0x520915[_0x8ae8('0x1a')]=qs[_0x8ae8('0x1a')](_0x233fd1[_0x8ae8('0x2e')]['limit']);_0x520915[_0x8ae8('0x1c')]=qs[_0x8ae8('0x1c')](_0x233fd1[_0x8ae8('0x2e')][_0x8ae8('0x1c')]);}_0x520915['order']=qs[_0x8ae8('0x36')](_0x233fd1[_0x8ae8('0x2e')][_0x8ae8('0x36')]);_0x520915['where']=qs[_0x8ae8('0x30')](_['pick'](_0x233fd1[_0x8ae8('0x2e')],_0x2b9ae8['filters']));_0x520915['where']['CampaignId']=_0x21293c['id'];if(_0x233fd1['query'][_0x8ae8('0x39')]){_0x520915[_0x8ae8('0x37')]=_[_0x8ae8('0x3a')](_0x520915[_0x8ae8('0x37')],{'$or':_[_0x8ae8('0x27')](_0x520915[_0x8ae8('0x32')],function(_0x249885){var _0x29a34b={};_0x29a34b[_0x249885]={'$like':'%'+_0x233fd1[_0x8ae8('0x2e')][_0x8ae8('0x39')]+'%'};return _0x29a34b;})});}_0x520915=_[_0x8ae8('0x3a')]({},_0x520915,_0x233fd1[_0x8ae8('0x3b')]);return db[_0x8ae8('0x58')]['count']({'where':_0x520915[_0x8ae8('0x37')]})[_0x8ae8('0x20')](function(_0x16a65e){_0x58def5['count']=_0x16a65e;if(_0x233fd1[_0x8ae8('0x2e')][_0x8ae8('0x41')]){_0x520915[_0x8ae8('0x4f')]=[{'all':!![]}];}return db[_0x8ae8('0x58')][_0x8ae8('0x3c')](_0x520915);})[_0x8ae8('0x20')](function(_0x49441b){_0x58def5[_0x8ae8('0x3d')]=_0x49441b;return _0x58def5;});}})[_0x8ae8('0x20')](respondWithFilteredResult(_0x218e9d,_0x520915))[_0x8ae8('0x3e')](handleError(_0x218e9d,null));};exports[_0x8ae8('0x59')]=function(_0x39398c,_0x5e8f60,_0x530bc0){var _0x4684b5={'raw':!![],'where':{}};var _0x17c6af={};var _0x51c184={'count':0x0,'rows':[]};return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x39398c[_0x8ae8('0x40')]['id']}})['then'](handleEntityNotFound(_0x5e8f60,null))[_0x8ae8('0x20')](function(_0x1f9256){if(_0x1f9256){_0x17c6af[_0x8ae8('0x2d')]=_['keys'](db[_0x8ae8('0x5a')]['rawAttributes']);_0x17c6af[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x39398c[_0x8ae8('0x2e')]);_0x17c6af['filters']=_['intersection'](_0x17c6af[_0x8ae8('0x2d')],_0x17c6af[_0x8ae8('0x2e')]);_0x4684b5[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x17c6af[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x39398c['query']['fields']));_0x4684b5[_0x8ae8('0x32')]=_0x4684b5[_0x8ae8('0x32')]['length']?_0x4684b5['attributes']:_0x17c6af['model'];if(!_0x39398c[_0x8ae8('0x2e')][_0x8ae8('0x34')]('nolimit')){_0x4684b5[_0x8ae8('0x1a')]=qs[_0x8ae8('0x1a')](_0x39398c['query'][_0x8ae8('0x1a')]);_0x4684b5[_0x8ae8('0x1c')]=qs[_0x8ae8('0x1c')](_0x39398c[_0x8ae8('0x2e')][_0x8ae8('0x1c')]);}_0x4684b5[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x39398c[_0x8ae8('0x2e')]['sort']);_0x4684b5[_0x8ae8('0x37')]=qs['filters'](_[_0x8ae8('0x38')](_0x39398c[_0x8ae8('0x2e')],_0x17c6af[_0x8ae8('0x30')]));_0x4684b5[_0x8ae8('0x37')][_0x8ae8('0x5b')]=_0x1f9256['id'];if(_0x39398c[_0x8ae8('0x2e')]['filter']){_0x4684b5[_0x8ae8('0x37')]=_[_0x8ae8('0x3a')](_0x4684b5['where'],{'$or':_[_0x8ae8('0x27')](_0x4684b5[_0x8ae8('0x32')],function(_0xa6b101){var _0x5810d1={};_0x5810d1[_0xa6b101]={'$like':'%'+_0x39398c[_0x8ae8('0x2e')][_0x8ae8('0x39')]+'%'};return _0x5810d1;})});}_0x4684b5=_['merge']({},_0x4684b5,_0x39398c[_0x8ae8('0x3b')]);return db[_0x8ae8('0x5a')][_0x8ae8('0x1d')]({'where':_0x4684b5[_0x8ae8('0x37')]})[_0x8ae8('0x20')](function(_0x5c60fd){_0x51c184[_0x8ae8('0x1d')]=_0x5c60fd;if(_0x39398c[_0x8ae8('0x2e')][_0x8ae8('0x41')]){_0x4684b5[_0x8ae8('0x4f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x8ae8('0x3c')](_0x4684b5);})[_0x8ae8('0x20')](function(_0x167652){_0x51c184[_0x8ae8('0x3d')]=_0x167652;return _0x51c184;});}})['then'](respondWithFilteredResult(_0x5e8f60,_0x4684b5))[_0x8ae8('0x3e')](handleError(_0x5e8f60,null));};exports[_0x8ae8('0x5c')]=function(_0x421c51,_0x269c53,_0x2230d9){var _0x5483b1={'raw':!![],'where':{}};var _0x4fddc6={};var _0x42f7b9={'count':0x0,'rows':[]};return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x421c51[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x269c53,null))['then'](function(_0x237a86){if(_0x237a86){_0x4fddc6[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db['CmHopperFinal'][_0x8ae8('0x29')]);_0x4fddc6[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x421c51[_0x8ae8('0x2e')]);_0x4fddc6['filters']=_['intersection'](_0x4fddc6['model'],_0x4fddc6['query']);_0x5483b1['attributes']=_['intersection'](_0x4fddc6[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x421c51[_0x8ae8('0x2e')]['fields']));_0x5483b1[_0x8ae8('0x32')]=_0x5483b1[_0x8ae8('0x32')][_0x8ae8('0x4e')]?_0x5483b1[_0x8ae8('0x32')]:_0x4fddc6[_0x8ae8('0x2d')];if(!_0x421c51[_0x8ae8('0x2e')][_0x8ae8('0x34')](_0x8ae8('0x57'))){_0x5483b1['limit']=qs[_0x8ae8('0x1a')](_0x421c51[_0x8ae8('0x2e')][_0x8ae8('0x1a')]);_0x5483b1['offset']=qs[_0x8ae8('0x1c')](_0x421c51['query'][_0x8ae8('0x1c')]);}_0x5483b1[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x421c51['query'][_0x8ae8('0x36')]);_0x5483b1['where']=qs[_0x8ae8('0x30')](_['pick'](_0x421c51[_0x8ae8('0x2e')],_0x4fddc6[_0x8ae8('0x30')]));_0x5483b1[_0x8ae8('0x37')][_0x8ae8('0x5b')]=_0x237a86['id'];if(_0x421c51[_0x8ae8('0x2e')][_0x8ae8('0x39')]){_0x5483b1[_0x8ae8('0x37')]=_[_0x8ae8('0x3a')](_0x5483b1[_0x8ae8('0x37')],{'$or':_['map'](_0x5483b1['attributes'],function(_0x58baa3){var _0x58aecc={};_0x58aecc[_0x58baa3]={'$like':'%'+_0x421c51['query'][_0x8ae8('0x39')]+'%'};return _0x58aecc;})});}_0x5483b1=_[_0x8ae8('0x3a')]({},_0x5483b1,_0x421c51[_0x8ae8('0x3b')]);return db['CmHopperFinal'][_0x8ae8('0x1d')]({'where':_0x5483b1['where']})[_0x8ae8('0x20')](function(_0x373572){_0x42f7b9[_0x8ae8('0x1d')]=_0x373572;if(_0x421c51[_0x8ae8('0x2e')]['includeAll']){_0x5483b1[_0x8ae8('0x4f')]=[{'all':!![]}];}return db[_0x8ae8('0x5d')]['findAll'](_0x5483b1);})[_0x8ae8('0x20')](function(_0x473850){_0x42f7b9[_0x8ae8('0x3d')]=_0x473850;return _0x42f7b9;});}})[_0x8ae8('0x20')](respondWithFilteredResult(_0x269c53,_0x5483b1))[_0x8ae8('0x3e')](handleError(_0x269c53,null));};exports['getHopperBlacks']=function(_0x5311ac,_0x22e322,_0x119296){var _0xce2d44={'raw':!![],'where':{}};var _0x18f9f3={};var _0x2af79b={'count':0x0,'rows':[]};return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x5311ac[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x22e322,null))[_0x8ae8('0x20')](function(_0x3cbe55){if(_0x3cbe55){_0x18f9f3[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db[_0x8ae8('0x5e')][_0x8ae8('0x29')]);_0x18f9f3[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x5311ac[_0x8ae8('0x2e')]);_0x18f9f3[_0x8ae8('0x30')]=_[_0x8ae8('0x31')](_0x18f9f3[_0x8ae8('0x2d')],_0x18f9f3[_0x8ae8('0x2e')]);_0xce2d44['attributes']=_['intersection'](_0x18f9f3[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x5311ac[_0x8ae8('0x2e')][_0x8ae8('0x33')]));_0xce2d44['attributes']=_0xce2d44['attributes'][_0x8ae8('0x4e')]?_0xce2d44[_0x8ae8('0x32')]:_0x18f9f3['model'];if(!_0x5311ac[_0x8ae8('0x2e')]['hasOwnProperty'](_0x8ae8('0x57'))){_0xce2d44[_0x8ae8('0x1a')]=qs[_0x8ae8('0x1a')](_0x5311ac[_0x8ae8('0x2e')]['limit']);_0xce2d44[_0x8ae8('0x1c')]=qs['offset'](_0x5311ac['query']['offset']);}_0xce2d44[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x5311ac[_0x8ae8('0x2e')][_0x8ae8('0x36')]);_0xce2d44[_0x8ae8('0x37')]=qs[_0x8ae8('0x30')](_['pick'](_0x5311ac[_0x8ae8('0x2e')],_0x18f9f3[_0x8ae8('0x30')]));_0xce2d44[_0x8ae8('0x37')]['CampaignId']=_0x3cbe55['id'];if(_0x5311ac[_0x8ae8('0x2e')][_0x8ae8('0x39')]){_0xce2d44[_0x8ae8('0x37')]=_[_0x8ae8('0x3a')](_0xce2d44[_0x8ae8('0x37')],{'$or':_[_0x8ae8('0x27')](_0xce2d44[_0x8ae8('0x32')],function(_0x7cfc10){var _0x2fc658={};_0x2fc658[_0x7cfc10]={'$like':'%'+_0x5311ac[_0x8ae8('0x2e')][_0x8ae8('0x39')]+'%'};return _0x2fc658;})});}_0xce2d44=_['merge']({},_0xce2d44,_0x5311ac[_0x8ae8('0x3b')]);return db[_0x8ae8('0x5e')]['count']({'where':_0xce2d44['where']})[_0x8ae8('0x20')](function(_0x220907){_0x2af79b[_0x8ae8('0x1d')]=_0x220907;if(_0x5311ac['query'][_0x8ae8('0x41')]){_0xce2d44[_0x8ae8('0x4f')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x8ae8('0x3c')](_0xce2d44);})[_0x8ae8('0x20')](function(_0x127186){_0x2af79b['rows']=_0x127186;return _0x2af79b;});}})['then'](respondWithFilteredResult(_0x22e322,_0xce2d44))[_0x8ae8('0x3e')](handleError(_0x22e322,null));};exports[_0x8ae8('0x5f')]=function(_0x5b8fa1,_0xa9f8a6,_0x5a6471){var _0x1123b2={};var _0x22ed19={};var _0x154096;var _0x166c41;return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x5b8fa1['params']['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0xa9f8a6,null))['then'](function(_0x279abc){if(_0x279abc){_0x154096=_0x279abc;_0x22ed19[_0x8ae8('0x2d')]=_[_0x8ae8('0x2f')](db[_0x8ae8('0x60')][_0x8ae8('0x29')]);_0x22ed19[_0x8ae8('0x2e')]=_['keys'](_0x5b8fa1[_0x8ae8('0x2e')]);_0x22ed19[_0x8ae8('0x30')]=_['intersection'](_0x22ed19[_0x8ae8('0x2d')],_0x22ed19[_0x8ae8('0x2e')]);_0x1123b2[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x22ed19[_0x8ae8('0x2d')],qs['fields'](_0x5b8fa1['query'][_0x8ae8('0x33')]));_0x1123b2[_0x8ae8('0x32')]=_0x1123b2[_0x8ae8('0x32')][_0x8ae8('0x4e')]?_0x1123b2['attributes']:_0x22ed19[_0x8ae8('0x2d')];_0x1123b2[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x5b8fa1[_0x8ae8('0x2e')]['sort']);_0x1123b2[_0x8ae8('0x37')]=qs[_0x8ae8('0x30')](_[_0x8ae8('0x38')](_0x5b8fa1[_0x8ae8('0x2e')],_0x22ed19[_0x8ae8('0x30')]));if(_0x5b8fa1['query'][_0x8ae8('0x39')]){_0x1123b2[_0x8ae8('0x37')]=_['merge'](_0x1123b2[_0x8ae8('0x37')],{'$or':_[_0x8ae8('0x27')](_0x1123b2[_0x8ae8('0x32')],function(_0x93518b){var _0x5908a7={};_0x5908a7[_0x93518b]={'$like':'%'+_0x5b8fa1[_0x8ae8('0x2e')][_0x8ae8('0x39')]+'%'};return _0x5908a7;})});}_0x1123b2=_[_0x8ae8('0x3a')]({},_0x1123b2,_0x5b8fa1['options']);return _0x154096[_0x8ae8('0x5f')](_0x1123b2);}})[_0x8ae8('0x20')](function(_0xe9379c){if(_0xe9379c){_0x166c41=_0xe9379c[_0x8ae8('0x4e')];if(!_0x5b8fa1[_0x8ae8('0x2e')][_0x8ae8('0x34')](_0x8ae8('0x57'))){_0x1123b2[_0x8ae8('0x1a')]=qs[_0x8ae8('0x1a')](_0x5b8fa1['query']['limit']);_0x1123b2[_0x8ae8('0x1c')]=qs[_0x8ae8('0x1c')](_0x5b8fa1[_0x8ae8('0x2e')]['offset']);}return _0x154096['getLists'](_0x1123b2);}})[_0x8ae8('0x20')](function(_0x278600){if(_0x278600){return _0x278600?{'count':_0x166c41,'rows':_0x278600}:null;}})[_0x8ae8('0x20')](respondWithResult(_0xa9f8a6,null))[_0x8ae8('0x3e')](handleError(_0xa9f8a6,null));};exports[_0x8ae8('0x61')]=function(_0x3f7be6,_0x51e7e3,_0x463e18){var _0xc51a79,_0x3cd185;var _0x2280a2=[];var _0x1e4934=moment()[_0x8ae8('0x62')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x8ae8('0x28')][_0x8ae8('0x49')]({'where':{'id':_0x3f7be6[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x51e7e3,null))[_0x8ae8('0x20')](function(_0x1a2340){if(_0x1a2340){_0x3cd185=_0x1a2340;return _0x1a2340[_0x8ae8('0x61')](_0x3f7be6[_0x8ae8('0x43')][_0x8ae8('0x63')],_[_0x8ae8('0x50')](_0x3f7be6[_0x8ae8('0x43')],['ids','id'])||{});}return null;})[_0x8ae8('0x64')](function(_0x305418){var _0x18870e;var _0x35a0c3;_0xc51a79=_0x305418||[];var _0x51fcac=[];if(_0x305418){for(var _0x364ea7=0x0;_0x364ea7<_0x305418[_0x8ae8('0x4e')];_0x364ea7+=0x1){var _0x4ab562=_0x305418[_0x364ea7]['get']({'plain':!![]});_0x3cd185[_0x8ae8('0x65')]=_0x3f7be6[_0x8ae8('0x43')][_0x8ae8('0x65')]?_0x3f7be6[_0x8ae8('0x43')]['dialCheckDuplicateType']:_0x3cd185[_0x8ae8('0x65')];switch(_0x3cd185[_0x8ae8('0x65')]){case'always':_0x18870e=squel['insert']()[_0x8ae8('0x66')](_0x8ae8('0x67'))[_0x8ae8('0x68')](['phone',_0x8ae8('0x69'),_0x8ae8('0x6a'),_0x8ae8('0x6b'),_0x8ae8('0x5b'),'createdAt',_0x8ae8('0x51')],squel[_0x8ae8('0x6c')]()['field']('phone',_0x8ae8('0x6d'))[_0x8ae8('0x6e')](_0x8ae8('0x6f'),_0x8ae8('0x69'))['field']('id','ContactId')[_0x8ae8('0x6e')](_0x4ab562[_0x8ae8('0x70')][_0x8ae8('0x71')](),_0x8ae8('0x6b'))[_0x8ae8('0x6e')](_0x3f7be6[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')](),_0x8ae8('0x5b'))['field']('\x27'+_0x1e4934+'\x27',_0x8ae8('0x52'))['field']('\x27'+_0x1e4934+'\x27',_0x8ae8('0x51'))[_0x8ae8('0x72')]('cm_contacts')[_0x8ae8('0x37')](_0x8ae8('0x73'))[_0x8ae8('0x37')](_0x8ae8('0x74'),_0x4ab562[_0x8ae8('0x70')][_0x8ae8('0x71')]())[_0x8ae8('0x37')](_0x8ae8('0x75'))[_0x8ae8('0x37')](_0x8ae8('0x76'),squel[_0x8ae8('0x6c')]()[_0x8ae8('0x6e')](_0x8ae8('0x77'))[_0x8ae8('0x72')](_0x8ae8('0x78'))[_0x8ae8('0x37')](_0x8ae8('0x79'),_0x3f7be6[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')]()))[_0x8ae8('0x37')](_0x8ae8('0x76'),squel[_0x8ae8('0x6c')]()['field'](_0x8ae8('0x7a'))[_0x8ae8('0x72')](_0x8ae8('0x67'))[_0x8ae8('0x37')](_0x8ae8('0x79'),_0x3f7be6[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')]())))[_0x8ae8('0x71')]();break;case'onlyIfOpen':_0x18870e=squel['insert']()['into'](_0x8ae8('0x67'))[_0x8ae8('0x68')]([_0x8ae8('0x6d'),_0x8ae8('0x69'),_0x8ae8('0x6a'),_0x8ae8('0x6b'),_0x8ae8('0x5b'),'createdAt',_0x8ae8('0x51')],squel[_0x8ae8('0x6c')]()['field']('phone','phone')[_0x8ae8('0x6e')](_0x8ae8('0x6f'),_0x8ae8('0x69'))[_0x8ae8('0x6e')]('id',_0x8ae8('0x6a'))['field'](_0x4ab562[_0x8ae8('0x70')]['toString'](),_0x8ae8('0x6b'))[_0x8ae8('0x6e')](_0x3f7be6[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')](),_0x8ae8('0x5b'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x52'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x51'))[_0x8ae8('0x72')]('cm_contacts')[_0x8ae8('0x37')](_0x8ae8('0x73'))['where'](_0x8ae8('0x74'),_0x4ab562['CmListId'][_0x8ae8('0x71')]())[_0x8ae8('0x37')](_0x8ae8('0x75'))[_0x8ae8('0x37')](_0x8ae8('0x76'),squel[_0x8ae8('0x6c')]()[_0x8ae8('0x6e')](_0x8ae8('0x7a'))[_0x8ae8('0x72')]('cm_hopper')['where'](_0x8ae8('0x79'),_0x3f7be6[_0x8ae8('0x40')]['id']['toString']())))[_0x8ae8('0x71')]();break;default:_0x18870e=squel['insert']()[_0x8ae8('0x66')](_0x8ae8('0x67'))['fromQuery']([_0x8ae8('0x6d'),'scheduledAt','ContactId',_0x8ae8('0x6b'),_0x8ae8('0x5b'),'createdAt',_0x8ae8('0x51')],squel[_0x8ae8('0x6c')]()[_0x8ae8('0x6e')](_0x8ae8('0x6d'),_0x8ae8('0x6d'))['field'](_0x8ae8('0x6f'),_0x8ae8('0x69'))[_0x8ae8('0x6e')]('id','ContactId')[_0x8ae8('0x6e')](_0x4ab562['CmListId']['toString'](),_0x8ae8('0x6b'))['field'](_0x3f7be6[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')](),_0x8ae8('0x5b'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x52'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x51'))['from']('cm_contacts')[_0x8ae8('0x37')](_0x8ae8('0x73'))[_0x8ae8('0x37')](_0x8ae8('0x74'),_0x4ab562[_0x8ae8('0x70')][_0x8ae8('0x71')]())[_0x8ae8('0x37')](_0x8ae8('0x75')))[_0x8ae8('0x71')]();}_0x35a0c3=squel[_0x8ae8('0x7b')]()[_0x8ae8('0x66')](_0x8ae8('0x7c'))[_0x8ae8('0x68')](['cmHopperId','scheduledAt','phone',_0x8ae8('0x7d'),_0x8ae8('0x52'),_0x8ae8('0x51')],squel[_0x8ae8('0x6c')]()[_0x8ae8('0x6e')]('h.id','id')['field'](_0x8ae8('0x6f'),'scheduledAt')['field']('ci.item',_0x8ae8('0x6d'))['field'](_0x8ae8('0x7e'),_0x8ae8('0x7d'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x52'))[_0x8ae8('0x6e')]('\x27'+_0x1e4934+'\x27',_0x8ae8('0x51'))[_0x8ae8('0x72')](_0x8ae8('0x7f'),'ci')[_0x8ae8('0x80')]('cm_hopper','h','h.ContactId\x20=\x20ci.CmContactId')[_0x8ae8('0x37')](_0x8ae8('0x81'),_0x4ab562[_0x8ae8('0x70')][_0x8ae8('0x71')]())[_0x8ae8('0x37')](_0x8ae8('0x82'),_0x3f7be6[_0x8ae8('0x40')]['id']['toString']())[_0x8ae8('0x37')]('h.createdAt\x20=\x20?',_0x1e4934))[_0x8ae8('0x71')]();_0x51fcac[_0x8ae8('0x83')](db[_0x8ae8('0x84')][_0x8ae8('0x2e')](_0x18870e));_0x2280a2[_0x8ae8('0x83')](db[_0x8ae8('0x84')][_0x8ae8('0x2e')](_0x35a0c3));}return BPromise['all'](_0x51fcac);}})[_0x8ae8('0x20')](function(){return BPromise[_0x8ae8('0x85')](_0x2280a2);})[_0x8ae8('0x20')](function(){return _0xc51a79;})[_0x8ae8('0x20')](respondWithResult(_0x51e7e3,null))[_0x8ae8('0x3e')](handleError(_0x51e7e3,null));};exports[_0x8ae8('0x86')]=function(_0x4f4c52,_0x3f54a0,_0x2a51b8){return db[_0x8ae8('0x28')]['find']({'where':{'id':_0x4f4c52['params']['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x3f54a0,null))[_0x8ae8('0x20')](function(_0x2acdbc){if(_0x2acdbc){return _0x2acdbc[_0x8ae8('0x86')](_0x4f4c52[_0x8ae8('0x2e')][_0x8ae8('0x63')]);}})[_0x8ae8('0x20')](function(_0xcfeb08){if(_0xcfeb08){return db[_0x8ae8('0x58')][_0x8ae8('0x54')]({'where':{'ListId':_0x4f4c52[_0x8ae8('0x2e')][_0x8ae8('0x63')],'CampaignId':_0x4f4c52['params']['id']}})[_0x8ae8('0x20')](function(){return _0xcfeb08;});}})[_0x8ae8('0x20')](respondWithStatusCode(_0x3f54a0,null))[_0x8ae8('0x3e')](handleError(_0x3f54a0,null));};exports[_0x8ae8('0x87')]=function(_0x52e487,_0x657eda,_0x26aeca){var _0x41ea3e={};var _0x11b0a8={};var _0x33f65c;var _0x304707;return db[_0x8ae8('0x28')][_0x8ae8('0x56')]({'where':{'id':_0x52e487['params']['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x657eda,null))[_0x8ae8('0x20')](function(_0xd3aae6){if(_0xd3aae6){_0x33f65c=_0xd3aae6;_0x11b0a8[_0x8ae8('0x2d')]=_['keys'](db[_0x8ae8('0x60')][_0x8ae8('0x29')]);_0x11b0a8[_0x8ae8('0x2e')]=_[_0x8ae8('0x2f')](_0x52e487[_0x8ae8('0x2e')]);_0x11b0a8[_0x8ae8('0x30')]=_[_0x8ae8('0x31')](_0x11b0a8[_0x8ae8('0x2d')],_0x11b0a8[_0x8ae8('0x2e')]);_0x41ea3e[_0x8ae8('0x32')]=_[_0x8ae8('0x31')](_0x11b0a8[_0x8ae8('0x2d')],qs[_0x8ae8('0x33')](_0x52e487[_0x8ae8('0x2e')]['fields']));_0x41ea3e[_0x8ae8('0x32')]=_0x41ea3e[_0x8ae8('0x32')][_0x8ae8('0x4e')]?_0x41ea3e[_0x8ae8('0x32')]:_0x11b0a8[_0x8ae8('0x2d')];_0x41ea3e[_0x8ae8('0x35')]=qs[_0x8ae8('0x36')](_0x52e487[_0x8ae8('0x2e')][_0x8ae8('0x36')]);_0x41ea3e['where']=qs['filters'](_[_0x8ae8('0x38')](_0x52e487[_0x8ae8('0x2e')],_0x11b0a8[_0x8ae8('0x30')]));if(_0x52e487[_0x8ae8('0x2e')][_0x8ae8('0x39')]){_0x41ea3e['where']=_['merge'](_0x41ea3e['where'],{'$or':_[_0x8ae8('0x27')](_0x41ea3e[_0x8ae8('0x32')],function(_0xbf361b){var _0x476af1={};_0x476af1[_0xbf361b]={'$like':'%'+_0x52e487[_0x8ae8('0x2e')]['filter']+'%'};return _0x476af1;})});}_0x41ea3e=_[_0x8ae8('0x3a')]({},_0x41ea3e,_0x52e487[_0x8ae8('0x3b')]);return _0x33f65c[_0x8ae8('0x87')](_0x41ea3e);}})[_0x8ae8('0x20')](function(_0x4fdcd5){if(_0x4fdcd5){_0x304707=_0x4fdcd5[_0x8ae8('0x4e')];if(!_0x52e487[_0x8ae8('0x2e')][_0x8ae8('0x34')](_0x8ae8('0x57'))){_0x41ea3e[_0x8ae8('0x1a')]=qs[_0x8ae8('0x1a')](_0x52e487['query'][_0x8ae8('0x1a')]);_0x41ea3e[_0x8ae8('0x1c')]=qs['offset'](_0x52e487[_0x8ae8('0x2e')][_0x8ae8('0x1c')]);}return _0x33f65c[_0x8ae8('0x87')](_0x41ea3e);}})[_0x8ae8('0x20')](function(_0x5a5245){if(_0x5a5245){return _0x5a5245?{'count':_0x304707,'rows':_0x5a5245}:null;}})[_0x8ae8('0x20')](respondWithResult(_0x657eda,null))[_0x8ae8('0x3e')](handleError(_0x657eda,null));};exports[_0x8ae8('0x88')]=function(_0xc52744,_0x4bae66,_0x2bf8e8){var _0x208d4f,_0x4937be;var _0x420074=[];var _0x5eed8c=moment()[_0x8ae8('0x62')](_0x8ae8('0x89'));return db[_0x8ae8('0x28')][_0x8ae8('0x49')]({'where':{'id':_0xc52744[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x4bae66,null))[_0x8ae8('0x20')](function(_0x421fe1){if(_0x421fe1){_0x4937be=_0x421fe1;return _0x421fe1[_0x8ae8('0x88')](_0xc52744['body'][_0x8ae8('0x63')],_['omit'](_0xc52744[_0x8ae8('0x43')],[_0x8ae8('0x63'),'id'])||{});}return null;})[_0x8ae8('0x64')](function(_0x2bf902){var _0x2c6ba3;var _0x2dda05;_0x208d4f=_0x2bf902||[];var _0x332acf=[];if(_0x2bf902){for(var _0x487e7a=0x0;_0x487e7a<_0x2bf902['length'];_0x487e7a+=0x1){var _0x26cfab=_0x2bf902[_0x487e7a][_0x8ae8('0x45')]({'plain':!![]});_0x2c6ba3=squel[_0x8ae8('0x7b')]()[_0x8ae8('0x66')]('cm_hopper_black')[_0x8ae8('0x68')]([_0x8ae8('0x6d'),_0x8ae8('0x6a'),_0x8ae8('0x6b'),'CampaignId',_0x8ae8('0x52'),_0x8ae8('0x51')],squel['select']()[_0x8ae8('0x6e')]('phone',_0x8ae8('0x6d'))[_0x8ae8('0x6e')]('id','ContactId')['field'](_0x26cfab['CmListId']['toString'](),_0x8ae8('0x6b'))['field'](_0xc52744[_0x8ae8('0x40')]['id'][_0x8ae8('0x71')](),_0x8ae8('0x5b'))[_0x8ae8('0x6e')](_0x8ae8('0x6f'),_0x8ae8('0x52'))[_0x8ae8('0x6e')](_0x8ae8('0x6f'),_0x8ae8('0x51'))['from'](_0x8ae8('0x8a'))['where'](_0x8ae8('0x73'))[_0x8ae8('0x37')](_0x8ae8('0x74'),_0x26cfab['CmListId'][_0x8ae8('0x71')]())['where'](_0x8ae8('0x75')))['toString']();_0x332acf['push'](db[_0x8ae8('0x84')]['query'](_0x2c6ba3));}return BPromise['all'](_0x332acf);}})['then'](function(){return _0x208d4f;})[_0x8ae8('0x20')](respondWithResult(_0x4bae66,null))[_0x8ae8('0x3e')](handleError(_0x4bae66,null));};exports['removeBlackLists']=function(_0x85110,_0x44e366,_0x4edc32){return db[_0x8ae8('0x28')]['find']({'where':{'id':_0x85110['params']['id']}})[_0x8ae8('0x20')](handleEntityNotFound(_0x44e366,null))[_0x8ae8('0x20')](function(_0x317d36){if(_0x317d36){return _0x317d36[_0x8ae8('0x8b')](_0x85110[_0x8ae8('0x2e')]['ids']);}})['then'](function(_0xc8d209){if(_0xc8d209){return db[_0x8ae8('0x5e')][_0x8ae8('0x54')]({'where':{'ListId':_0x85110['query'][_0x8ae8('0x63')],'CampaignId':_0x85110[_0x8ae8('0x40')]['id']}})[_0x8ae8('0x20')](function(){return _0xc8d209;});}})['then'](respondWithStatusCode(_0x44e366,null))['catch'](handleError(_0x44e366,null));};
\ No newline at end of file
index d51b17e..a563a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x1c31fc,_0x39514d){var _0x400ade=function(_0x32e2e1){while(--_0x32e2e1){_0x1c31fc['push'](_0x1c31fc['shift']());}};_0x400ade(++_0x39514d);}(_0x7a54,0x106));var _0x47a5=function(_0x594b66,_0x1f0f31){_0x594b66=_0x594b66-0x0;var _0x55d5f3=_0x7a54[_0x594b66];return _0x55d5f3;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x197fe4,_0x31e2bc){var _0x4e68a1=function(_0xae0b9e){while(--_0xae0b9e){_0x197fe4['push'](_0x197fe4['shift']());}};_0x4e68a1(++_0x31e2bc);}(_0x7a54,0x106));var _0x47a5=function(_0x48ad2c,_0x478aa2){_0x48ad2c=_0x48ad2c-0x0;var _0x3f17d2=_0x7a54[_0x48ad2c];return _0x3f17d2;};'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 fb49d35..710862b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['message','result','catch','GetCampaign','findAll','options','raw','where','limit','include','map','model','attributes','then','stringify','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error'];(function(_0x268a14,_0x339230){var _0x11c674=function(_0x22725e){while(--_0x22725e){_0x268a14['push'](_0x268a14['shift']());}};_0x11c674(++_0x339230);}(_0x6b19,0xe8));var _0x96b1=function(_0x1b6d41,_0x50dedd){_0x1b6d41=_0x1b6d41-0x0;var _0x54bd5b=_0x6b19[_0x1b6d41];return _0x54bd5b;};'use strict';var _=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var moment=require('moment');var BPromise=require(_0x96b1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96b1('0x3'))['db'];var utils=require(_0x96b1('0x4'));var logger=require(_0x96b1('0x5'))(_0x96b1('0x6'));var config=require(_0x96b1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x96b1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e3e1a,_0x572fde,_0x57a23a){return new BPromise(function(_0x307e65,_0x535cc9){return client[_0x96b1('0x9')](_0x3e3e1a,_0x57a23a)['then'](function(_0x36ea50){logger[_0x96b1('0xa')](_0x96b1('0xb'),_0x572fde,_0x96b1('0xc'));logger[_0x96b1('0xd')](_0x96b1('0xe'),_0x572fde,_0x96b1('0xc'),JSON['stringify'](_0x36ea50));if(_0x36ea50['error']){if(_0x36ea50[_0x96b1('0xf')]['code']===0x1f4){logger['error'](_0x96b1('0xb'),_0x572fde,_0x36ea50[_0x96b1('0xf')][_0x96b1('0x10')]);return _0x535cc9(_0x36ea50['error'][_0x96b1('0x10')]);}logger[_0x96b1('0xf')](_0x96b1('0xb'),_0x572fde,_0x36ea50[_0x96b1('0xf')][_0x96b1('0x10')]);return _0x307e65(_0x36ea50['error'][_0x96b1('0x10')]);}else{logger[_0x96b1('0xa')](_0x96b1('0xb'),_0x572fde,_0x96b1('0xc'));_0x307e65(_0x36ea50[_0x96b1('0x11')][_0x96b1('0x10')]);}})[_0x96b1('0x12')](function(_0x2d5a32){logger[_0x96b1('0xf')](_0x96b1('0xb'),_0x572fde,_0x2d5a32);_0x535cc9(_0x2d5a32);});});}exports[_0x96b1('0x13')]=function(_0x38478c){var _0x2b192a=this;return new Promise(function(_0x19972b,_0x212b31){return db['Campaign'][_0x96b1('0x14')]({'raw':_0x38478c['options']?_0x38478c[_0x96b1('0x15')][_0x96b1('0x16')]===undefined?!![]:![]:!![],'where':_0x38478c[_0x96b1('0x15')]?_0x38478c['options'][_0x96b1('0x17')]||null:null,'attributes':_0x38478c[_0x96b1('0x15')]?_0x38478c[_0x96b1('0x15')]['attributes']||null:null,'limit':_0x38478c[_0x96b1('0x15')]?_0x38478c[_0x96b1('0x15')][_0x96b1('0x18')]||null:null,'include':_0x38478c[_0x96b1('0x15')]?_0x38478c['options'][_0x96b1('0x19')]?_[_0x96b1('0x1a')](_0x38478c[_0x96b1('0x15')]['include'],function(_0x2b4f8e){return{'model':db[_0x2b4f8e[_0x96b1('0x1b')]],'as':_0x2b4f8e['as'],'attributes':_0x2b4f8e[_0x96b1('0x1c')],'include':_0x2b4f8e[_0x96b1('0x19')]?_['map'](_0x2b4f8e[_0x96b1('0x19')],function(_0x548bae){return{'model':db[_0x548bae[_0x96b1('0x1b')]],'as':_0x548bae['as'],'attributes':_0x548bae['attributes'],'include':_0x548bae[_0x96b1('0x19')]?_[_0x96b1('0x1a')](_0x548bae['include'],function(_0x50dcbc){return{'model':db[_0x50dcbc['model']],'as':_0x50dcbc['as'],'attributes':_0x50dcbc[_0x96b1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x96b1('0x1d')](function(_0x18e56a){logger[_0x96b1('0xa')](_0x96b1('0x13'),_0x38478c);logger['debug'](_0x96b1('0x13'),_0x38478c,JSON[_0x96b1('0x1e')](_0x18e56a));_0x19972b(_0x18e56a);})[_0x96b1('0x12')](function(_0x209ce8){logger['error'](_0x96b1('0x13'),_0x209ce8[_0x96b1('0x10')],_0x38478c);_0x212b31(_0x2b192a['error'](0x1f4,_0x209ce8['message']));});});};
\ No newline at end of file
+var _0xb201=['Campaign,\x20%s,\x20%s','message','result','GetCampaign','Campaign','findAll','options','raw','map','include','model','attributes','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','error','code'];(function(_0xc23311,_0x4b4373){var _0xfb9532=function(_0x25f56b){while(--_0x25f56b){_0xc23311['push'](_0xc23311['shift']());}};_0xfb9532(++_0x4b4373);}(_0xb201,0x1b1));var _0x1b20=function(_0x14ee16,_0x5443e9){_0x14ee16=_0x14ee16-0x0;var _0x5296a0=_0xb201[_0x14ee16];return _0x5296a0;};'use strict';var _=require(_0x1b20('0x0'));var util=require('util');var moment=require(_0x1b20('0x1'));var BPromise=require(_0x1b20('0x2'));var rs=require(_0x1b20('0x3'));var fs=require('fs');var Redis=require(_0x1b20('0x4'));var db=require(_0x1b20('0x5'))['db'];var utils=require(_0x1b20('0x6'));var logger=require('../../config/logger')(_0x1b20('0x7'));var config=require(_0x1b20('0x8'));var jayson=require(_0x1b20('0x9'));var client=jayson['client'][_0x1b20('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50cdbc,_0x34304b,_0x2a184f){return new BPromise(function(_0x3cc600,_0x426ae9){return client['request'](_0x50cdbc,_0x2a184f)[_0x1b20('0xb')](function(_0x1f5ae4){logger[_0x1b20('0xc')]('Campaign,\x20%s,\x20%s',_0x34304b,_0x1b20('0xd'));logger['debug'](_0x1b20('0xe'),_0x34304b,'request\x20sent',JSON['stringify'](_0x1f5ae4));if(_0x1f5ae4[_0x1b20('0xf')]){if(_0x1f5ae4[_0x1b20('0xf')][_0x1b20('0x10')]===0x1f4){logger[_0x1b20('0xf')](_0x1b20('0x11'),_0x34304b,_0x1f5ae4['error'][_0x1b20('0x12')]);return _0x426ae9(_0x1f5ae4[_0x1b20('0xf')][_0x1b20('0x12')]);}logger[_0x1b20('0xf')](_0x1b20('0x11'),_0x34304b,_0x1f5ae4['error'][_0x1b20('0x12')]);return _0x3cc600(_0x1f5ae4[_0x1b20('0xf')][_0x1b20('0x12')]);}else{logger['info'](_0x1b20('0x11'),_0x34304b,'request\x20sent');_0x3cc600(_0x1f5ae4[_0x1b20('0x13')][_0x1b20('0x12')]);}})['catch'](function(_0x44e713){logger[_0x1b20('0xf')](_0x1b20('0x11'),_0x34304b,_0x44e713);_0x426ae9(_0x44e713);});});}exports[_0x1b20('0x14')]=function(_0xff7c72){var _0xf9078e=this;return new Promise(function(_0x34517f,_0x46bb09){return db[_0x1b20('0x15')][_0x1b20('0x16')]({'raw':_0xff7c72[_0x1b20('0x17')]?_0xff7c72[_0x1b20('0x17')][_0x1b20('0x18')]===undefined?!![]:![]:!![],'where':_0xff7c72[_0x1b20('0x17')]?_0xff7c72[_0x1b20('0x17')]['where']||null:null,'attributes':_0xff7c72[_0x1b20('0x17')]?_0xff7c72['options']['attributes']||null:null,'limit':_0xff7c72['options']?_0xff7c72[_0x1b20('0x17')]['limit']||null:null,'include':_0xff7c72['options']?_0xff7c72[_0x1b20('0x17')]['include']?_[_0x1b20('0x19')](_0xff7c72['options'][_0x1b20('0x1a')],function(_0x33e6ae){return{'model':db[_0x33e6ae[_0x1b20('0x1b')]],'as':_0x33e6ae['as'],'attributes':_0x33e6ae[_0x1b20('0x1c')],'include':_0x33e6ae[_0x1b20('0x1a')]?_[_0x1b20('0x19')](_0x33e6ae['include'],function(_0x590b44){return{'model':db[_0x590b44[_0x1b20('0x1b')]],'as':_0x590b44['as'],'attributes':_0x590b44[_0x1b20('0x1c')],'include':_0x590b44[_0x1b20('0x1a')]?_[_0x1b20('0x19')](_0x590b44[_0x1b20('0x1a')],function(_0x3a5cda){return{'model':db[_0x3a5cda[_0x1b20('0x1b')]],'as':_0x3a5cda['as'],'attributes':_0x3a5cda[_0x1b20('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x1b20('0xb')](function(_0xefa7f3){logger['info']('GetCampaign',_0xff7c72);logger[_0x1b20('0x1d')]('GetCampaign',_0xff7c72,JSON['stringify'](_0xefa7f3));_0x34517f(_0xefa7f3);})['catch'](function(_0x342a84){logger[_0x1b20('0xf')](_0x1b20('0x14'),_0x342a84[_0x1b20('0x12')],_0xff7c72);_0x46bb09(_0xf9078e[_0x1b20('0xf')](0x1f4,_0x342a84[_0x1b20('0x12')]));});});};
\ No newline at end of file
index 7089234..e43861a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f93=['getBlackLists','post','/:id/clone','addLists','addBlackLists','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','/:id','getHoppers','isAuthenticated','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists'];(function(_0x4e618e,_0x55d3a0){var _0x9e8183=function(_0x4d705e){while(--_0x4d705e){_0x4e618e['push'](_0x4e618e['shift']());}};_0x9e8183(++_0x55d3a0);}(_0x0f93,0x66));var _0x30f9=function(_0x2a6862,_0x90a6ae){_0x2a6862=_0x2a6862-0x0;var _0x5bb022=_0x0f93[_0x2a6862];return _0x5bb022;};'use strict';var multer=require('multer');var util=require(_0x30f9('0x0'));var path=require(_0x30f9('0x1'));var timeout=require(_0x30f9('0x2'));var express=require(_0x30f9('0x3'));var router=express[_0x30f9('0x4')]();var fs_extra=require(_0x30f9('0x5'));var auth=require(_0x30f9('0x6'));var interaction=require(_0x30f9('0x7'));var config=require(_0x30f9('0x8'));var controller=require(_0x30f9('0x9'));router[_0x30f9('0xa')]('/',auth['isAuthenticated'](),controller[_0x30f9('0xb')]);router[_0x30f9('0xa')](_0x30f9('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x30f9('0xa')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x30f9('0xd')]);router['get']('/:id/hopper_histories',auth[_0x30f9('0xe')](),controller[_0x30f9('0xf')]);router[_0x30f9('0xa')]('/:id/hopper_finals',auth[_0x30f9('0xe')](),controller[_0x30f9('0x10')]);router[_0x30f9('0xa')](_0x30f9('0x11'),auth[_0x30f9('0xe')](),controller[_0x30f9('0x12')]);router[_0x30f9('0xa')](_0x30f9('0x13'),auth['isAuthenticated'](),controller[_0x30f9('0x14')]);router[_0x30f9('0xa')](_0x30f9('0x15'),auth[_0x30f9('0xe')](),controller[_0x30f9('0x16')]);router['post']('/',auth[_0x30f9('0xe')](),controller['create']);router[_0x30f9('0x17')](_0x30f9('0x18'),auth[_0x30f9('0xe')](),controller['clone']);router[_0x30f9('0x17')](_0x30f9('0x13'),auth[_0x30f9('0xe')](),controller[_0x30f9('0x19')]);router['post'](_0x30f9('0x15'),auth[_0x30f9('0xe')](),controller[_0x30f9('0x1a')]);router[_0x30f9('0x1b')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x30f9('0x1c')](_0x30f9('0xc'),auth['isAuthenticated'](),controller[_0x30f9('0x1d')]);router[_0x30f9('0x1c')](_0x30f9('0x13'),auth[_0x30f9('0xe')](),controller['removeLists']);router[_0x30f9('0x1c')]('/:id/blacklists',auth[_0x30f9('0xe')](),controller['removeBlackLists']);module[_0x30f9('0x1e')]=router;
\ No newline at end of file
+var _0xd377=['getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getLists','/:id/blacklists','getBlackLists','post','/:id/lists','update','destroy','delete','removeLists','removeBlackLists','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','index','/:id','isAuthenticated','show'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xd377,0x1a3));var _0x7d37=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd377[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x7d37('0x0'));var path=require(_0x7d37('0x1'));var timeout=require(_0x7d37('0x2'));var express=require(_0x7d37('0x3'));var router=express[_0x7d37('0x4')]();var fs_extra=require(_0x7d37('0x5'));var auth=require(_0x7d37('0x6'));var interaction=require(_0x7d37('0x7'));var config=require(_0x7d37('0x8'));var controller=require(_0x7d37('0x9'));router[_0x7d37('0xa')]('/',auth['isAuthenticated'](),controller[_0x7d37('0xb')]);router[_0x7d37('0xa')](_0x7d37('0xc'),auth[_0x7d37('0xd')](),controller[_0x7d37('0xe')]);router['get']('/:id/hoppers',auth['isAuthenticated'](),controller[_0x7d37('0xf')]);router[_0x7d37('0xa')](_0x7d37('0x10'),auth[_0x7d37('0xd')](),controller[_0x7d37('0x11')]);router[_0x7d37('0xa')](_0x7d37('0x12'),auth[_0x7d37('0xd')](),controller['getHopperFinals']);router[_0x7d37('0xa')](_0x7d37('0x13'),auth[_0x7d37('0xd')](),controller['getHopperBlacks']);router[_0x7d37('0xa')]('/:id/lists',auth[_0x7d37('0xd')](),controller[_0x7d37('0x14')]);router[_0x7d37('0xa')](_0x7d37('0x15'),auth[_0x7d37('0xd')](),controller[_0x7d37('0x16')]);router[_0x7d37('0x17')]('/',auth[_0x7d37('0xd')](),controller['create']);router[_0x7d37('0x17')]('/:id/clone',auth['isAuthenticated'](),controller['clone']);router[_0x7d37('0x17')](_0x7d37('0x18'),auth['isAuthenticated'](),controller['addLists']);router[_0x7d37('0x17')](_0x7d37('0x15'),auth[_0x7d37('0xd')](),controller['addBlackLists']);router['put']('/:id',auth[_0x7d37('0xd')](),controller[_0x7d37('0x19')]);router['delete'](_0x7d37('0xc'),auth[_0x7d37('0xd')](),controller[_0x7d37('0x1a')]);router[_0x7d37('0x1b')](_0x7d37('0x18'),auth['isAuthenticated'](),controller[_0x7d37('0x1c')]);router['delete'](_0x7d37('0x15'),auth[_0x7d37('0xd')](),controller[_0x7d37('0x1d')]);module[_0x7d37('0x1e')]=router;
\ No newline at end of file
index ec04478..5ab9b2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb593=['STRING','TEXT','VIRTUAL','getDataValue','key','sequelize','exports'];(function(_0x5630db,_0x176962){var _0x2c40a6=function(_0x3c6fe4){while(--_0x3c6fe4){_0x5630db['push'](_0x5630db['shift']());}};_0x2c40a6(++_0x176962);}(_0xb593,0x15c));var _0x3b59=function(_0x44ea8a,_0x1b559c){_0x44ea8a=_0x44ea8a-0x0;var _0x5ade26=_0xb593[_0x44ea8a];return _0x5ade26;};'use strict';var Sequelize=require(_0x3b59('0x0'));module[_0x3b59('0x1')]={'key':{'type':Sequelize[_0x3b59('0x2')],'allowNull':![]},'value':{'type':Sequelize[_0x3b59('0x3')],'allowNull':![]},'description':{'type':Sequelize[_0x3b59('0x2')]},'name':{'type':Sequelize[_0x3b59('0x4')],'get':function(){return this[_0x3b59('0x5')](_0x3b59('0x6'));}}};
\ No newline at end of file
+var _0x6c53=['VIRTUAL','getDataValue','key','sequelize','STRING','TEXT'];(function(_0x4087db,_0x1dad01){var _0x50be2f=function(_0x1257fe){while(--_0x1257fe){_0x4087db['push'](_0x4087db['shift']());}};_0x50be2f(++_0x1dad01);}(_0x6c53,0x18f));var _0x36c5=function(_0x5ccf2a,_0xb837f1){_0x5ccf2a=_0x5ccf2a-0x0;var _0xb1b8ab=_0x6c53[_0x5ccf2a];return _0xb1b8ab;};'use strict';var Sequelize=require(_0x36c5('0x0'));module['exports']={'key':{'type':Sequelize[_0x36c5('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x36c5('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x36c5('0x1')]},'name':{'type':Sequelize[_0x36c5('0x3')],'get':function(){return this[_0x36c5('0x4')](_0x36c5('0x5'));}}};
\ No newline at end of file
index 5dd69ff..7cef628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f0=['order','sort','where','pick','merge','filter','options','includeAll','CannedAnswer','rows','catch','show','params','keys','rawAttributes','include','update','body','find','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','then','get','CannedAnswers','error','stack','name','fieldName','type','model','map','query','filters','intersection','fields','attributes','length','nolimit'];(function(_0x15a219,_0x229a0b){var _0x186240=function(_0x2636b8){while(--_0x2636b8){_0x15a219['push'](_0x15a219['shift']());}};_0x186240(++_0x229a0b);}(_0xa3f0,0xca));var _0x0a3f=function(_0x25d7c4,_0x2b8783){_0x25d7c4=_0x25d7c4-0x0;var _0x24a7c8=_0xa3f0[_0x25d7c4];return _0x24a7c8;};'use strict';var emlformat=require(_0x0a3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0a3f('0x1'));var jsonpatch=require(_0x0a3f('0x2'));var rp=require(_0x0a3f('0x3'));var moment=require(_0x0a3f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0a3f('0x5'));var util=require(_0x0a3f('0x6'));var path=require(_0x0a3f('0x7'));var sox=require(_0x0a3f('0x8'));var csv=require(_0x0a3f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a3f('0xa'));var _=require(_0x0a3f('0xb'));var squel=require(_0x0a3f('0xc'));var crypto=require(_0x0a3f('0xd'));var jsforce=require(_0x0a3f('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0a3f('0xf'));var Papa=require(_0x0a3f('0x10'));var Redis=require(_0x0a3f('0x11'));var authService=require(_0x0a3f('0x12'));var qs=require(_0x0a3f('0x13'));var as=require(_0x0a3f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0a3f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x155ea7,_0x85ae99){_0x85ae99=_0x85ae99||0xcc;return function(_0x2a690d){if(_0x2a690d){return _0x155ea7['sendStatus'](_0x85ae99);}return _0x155ea7['status'](_0x85ae99)[_0x0a3f('0x16')]();};}function respondWithResult(_0x55c464,_0x5058dc){_0x5058dc=_0x5058dc||0xc8;return function(_0x399b6c){if(_0x399b6c){return _0x55c464['status'](_0x5058dc)[_0x0a3f('0x17')](_0x399b6c);}};}function respondWithFilteredResult(_0x52dbc7,_0x4c39ef){return function(_0x1cf7cf){if(_0x1cf7cf){var _0x1cbe00=typeof _0x4c39ef[_0x0a3f('0x18')]===_0x0a3f('0x19')&&typeof _0x4c39ef[_0x0a3f('0x1a')]==='undefined';var _0x18edbf=_0x1cf7cf[_0x0a3f('0x1b')];var _0x51faaa=_0x1cbe00?0x0:_0x4c39ef['offset'];var _0x3eabd0=_0x1cbe00?_0x1cf7cf[_0x0a3f('0x1b')]:_0x4c39ef[_0x0a3f('0x18')]+_0x4c39ef[_0x0a3f('0x1a')];var _0x8cf774;if(_0x3eabd0>=_0x18edbf){_0x3eabd0=_0x18edbf;_0x8cf774=0xc8;}else{_0x8cf774=0xce;}_0x52dbc7[_0x0a3f('0x1c')](_0x8cf774);return _0x52dbc7[_0x0a3f('0x1d')](_0x0a3f('0x1e'),_0x51faaa+'-'+_0x3eabd0+'/'+_0x18edbf)['json'](_0x1cf7cf);}return null;};}function patchUpdates(_0x41b577){return function(_0x381e44){try{jsonpatch['apply'](_0x381e44,_0x41b577,!![]);}catch(_0x4e22f9){return BPromise[_0x0a3f('0x1f')](_0x4e22f9);}return _0x381e44[_0x0a3f('0x20')]();};}function saveUpdates(_0x3c9b22,_0x34d3f2){return function(_0x20e850){if(_0x20e850){return _0x20e850['update'](_0x3c9b22)[_0x0a3f('0x21')](function(_0x238d2c){return _0x238d2c;});}return null;};}function removeEntity(_0x2a7c4e,_0x161a28){return function(_0x35cfe1){if(_0x35cfe1){return _0x35cfe1['destroy']()['then'](function(){var _0x4af2e9=_0x35cfe1[_0x0a3f('0x22')]({'plain':!![]});var _0x3b57c5=_0x0a3f('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x3b57c5,'resourceId':_0x4af2e9['id']}})[_0x0a3f('0x21')](function(){return _0x35cfe1;});})[_0x0a3f('0x21')](function(){_0x2a7c4e[_0x0a3f('0x1c')](0xcc)[_0x0a3f('0x16')]();});}};}function handleEntityNotFound(_0x380cef,_0x2be09a){return function(_0x3ab6a3){if(!_0x3ab6a3){_0x380cef['sendStatus'](0x194);}return _0x3ab6a3;};}function handleError(_0x500132,_0x2af123){_0x2af123=_0x2af123||0x1f4;return function(_0x4d83c4){logger[_0x0a3f('0x24')](_0x4d83c4[_0x0a3f('0x25')]);if(_0x4d83c4['name']){delete _0x4d83c4[_0x0a3f('0x26')];}_0x500132[_0x0a3f('0x1c')](_0x2af123)['send'](_0x4d83c4);};}exports['index']=function(_0xb2eaa1,_0x305844){var _0x43765c={},_0x4f1630={},_0x1b2541={'count':0x0,'rows':[]};var _0x2a25cc=_['map'](db['CannedAnswer']['rawAttributes'],function(_0x3f80b1){return{'name':_0x3f80b1[_0x0a3f('0x27')],'type':_0x3f80b1[_0x0a3f('0x28')]['key']};});_0x4f1630[_0x0a3f('0x29')]=_[_0x0a3f('0x2a')](_0x2a25cc,'name');_0x4f1630['query']=_['keys'](_0xb2eaa1[_0x0a3f('0x2b')]);_0x4f1630[_0x0a3f('0x2c')]=_[_0x0a3f('0x2d')](_0x4f1630[_0x0a3f('0x29')],_0x4f1630['query']);_0x43765c['attributes']=_[_0x0a3f('0x2d')](_0x4f1630[_0x0a3f('0x29')],qs[_0x0a3f('0x2e')](_0xb2eaa1[_0x0a3f('0x2b')]['fields']));_0x43765c[_0x0a3f('0x2f')]=_0x43765c[_0x0a3f('0x2f')][_0x0a3f('0x30')]?_0x43765c[_0x0a3f('0x2f')]:_0x4f1630[_0x0a3f('0x29')];if(!_0xb2eaa1[_0x0a3f('0x2b')]['hasOwnProperty'](_0x0a3f('0x31'))){_0x43765c[_0x0a3f('0x1a')]=qs[_0x0a3f('0x1a')](_0xb2eaa1[_0x0a3f('0x2b')][_0x0a3f('0x1a')]);_0x43765c[_0x0a3f('0x18')]=qs[_0x0a3f('0x18')](_0xb2eaa1['query'][_0x0a3f('0x18')]);}_0x43765c[_0x0a3f('0x32')]=qs[_0x0a3f('0x33')](_0xb2eaa1[_0x0a3f('0x2b')][_0x0a3f('0x33')]);_0x43765c[_0x0a3f('0x34')]=qs['filters'](_[_0x0a3f('0x35')](_0xb2eaa1[_0x0a3f('0x2b')],_0x4f1630[_0x0a3f('0x2c')]),_0x2a25cc);if(_0xb2eaa1[_0x0a3f('0x2b')]['filter']){_0x43765c['where']=_[_0x0a3f('0x36')](_0x43765c[_0x0a3f('0x34')],{'$or':[{'key':{'$like':'%'+_0xb2eaa1[_0x0a3f('0x2b')][_0x0a3f('0x37')]+'%'}},{'value':{'$like':'%'+_0xb2eaa1[_0x0a3f('0x2b')]['filter']+'%'}}]});}_0x43765c=_[_0x0a3f('0x36')]({},_0x43765c,_0xb2eaa1[_0x0a3f('0x38')]);var _0x718de8={'where':_0x43765c[_0x0a3f('0x34')]};return db['CannedAnswer'][_0x0a3f('0x1b')](_0x718de8)[_0x0a3f('0x21')](function(_0x2a3268){_0x1b2541[_0x0a3f('0x1b')]=_0x2a3268;if(_0xb2eaa1[_0x0a3f('0x2b')][_0x0a3f('0x39')]){_0x43765c['include']=[{'all':!![]}];}return db[_0x0a3f('0x3a')]['findAll'](_0x43765c);})['then'](function(_0x28af5f){_0x1b2541[_0x0a3f('0x3b')]=_0x28af5f;return _0x1b2541;})['then'](respondWithFilteredResult(_0x305844,_0x43765c))[_0x0a3f('0x3c')](handleError(_0x305844,null));};exports[_0x0a3f('0x3d')]=function(_0x5230af,_0xf004cf){var _0x42b3ea={'raw':!![],'where':{'id':_0x5230af[_0x0a3f('0x3e')]['id']}},_0x28e25a={};_0x28e25a[_0x0a3f('0x29')]=_[_0x0a3f('0x3f')](db[_0x0a3f('0x3a')][_0x0a3f('0x40')]);_0x28e25a[_0x0a3f('0x2b')]=_[_0x0a3f('0x3f')](_0x5230af[_0x0a3f('0x2b')]);_0x28e25a[_0x0a3f('0x2c')]=_[_0x0a3f('0x2d')](_0x28e25a[_0x0a3f('0x29')],_0x28e25a['query']);_0x42b3ea[_0x0a3f('0x2f')]=_['intersection'](_0x28e25a[_0x0a3f('0x29')],qs[_0x0a3f('0x2e')](_0x5230af[_0x0a3f('0x2b')][_0x0a3f('0x2e')]));_0x42b3ea[_0x0a3f('0x2f')]=_0x42b3ea[_0x0a3f('0x2f')][_0x0a3f('0x30')]?_0x42b3ea['attributes']:_0x28e25a['model'];if(_0x5230af['query'][_0x0a3f('0x39')]){_0x42b3ea[_0x0a3f('0x41')]=[{'all':!![]}];}_0x42b3ea=_[_0x0a3f('0x36')]({},_0x42b3ea,_0x5230af[_0x0a3f('0x38')]);return db['CannedAnswer']['find'](_0x42b3ea)['then'](handleEntityNotFound(_0xf004cf,null))[_0x0a3f('0x21')](respondWithResult(_0xf004cf,null))['catch'](handleError(_0xf004cf,null));};exports[_0x0a3f('0x42')]=function(_0x1a0148,_0x1f72b8){if(_0x1a0148[_0x0a3f('0x43')]['id']){delete _0x1a0148[_0x0a3f('0x43')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x1a0148[_0x0a3f('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1f72b8,null))[_0x0a3f('0x21')](saveUpdates(_0x1a0148[_0x0a3f('0x43')],null))[_0x0a3f('0x21')](respondWithResult(_0x1f72b8,null))[_0x0a3f('0x3c')](handleError(_0x1f72b8,null));};exports['destroy']=function(_0x2d2081,_0x1e5d35){return db[_0x0a3f('0x3a')][_0x0a3f('0x44')]({'where':{'id':_0x2d2081[_0x0a3f('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1e5d35,null))[_0x0a3f('0x21')](removeEntity(_0x1e5d35,null))[_0x0a3f('0x3c')](handleError(_0x1e5d35,null));};exports[_0x0a3f('0x45')]=function(_0x3f582a,_0x1cdfb9){var _0x1335c3={'key':_0x3f582a['body'][_0x0a3f('0x46')]};if(_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x47')]){_0x1335c3['MailAccountId']=_0x3f582a[_0x0a3f('0x43')]['MailAccountId'];}else if(_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x48')]){_0x1335c3['SmsAccountId']=_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x48')];}else if(_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x49')]){_0x1335c3[_0x0a3f('0x49')]=_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x49')];}else if(_0x3f582a['body'][_0x0a3f('0x4a')]){_0x1335c3[_0x0a3f('0x4a')]=_0x3f582a[_0x0a3f('0x43')][_0x0a3f('0x4a')];}return db[_0x0a3f('0x3a')][_0x0a3f('0x44')]({'where':_0x1335c3})[_0x0a3f('0x21')](function(_0x196696){if(_0x196696){throw new db[(_0x0a3f('0x4b'))][(_0x0a3f('0x4c'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x0a3f('0x3a')][_0x0a3f('0x45')](_0x3f582a[_0x0a3f('0x43')]);})[_0x0a3f('0x21')](function(_0x2866c9){var _0x199eea=_0x3f582a[_0x0a3f('0x4d')]['get']({'plain':!![]});if(!_0x199eea)throw new Error(_0x0a3f('0x4e'));if(_0x199eea[_0x0a3f('0x4f')]===_0x0a3f('0x4d')){var _0x47dd42=_0x2866c9[_0x0a3f('0x22')]({'plain':!![]});return db[_0x0a3f('0x50')][_0x0a3f('0x44')]({'where':{'name':_0x0a3f('0x23'),'userProfileId':_0x199eea[_0x0a3f('0x51')]},'raw':!![]})[_0x0a3f('0x21')](function(_0x5bc079){if(_0x5bc079&&_0x5bc079[_0x0a3f('0x52')]===0x0){return db[_0x0a3f('0x53')][_0x0a3f('0x45')]({'name':_0x47dd42[_0x0a3f('0x26')],'resourceId':_0x47dd42['id'],'type':_0x5bc079[_0x0a3f('0x26')],'sectionId':_0x5bc079['id']},{})[_0x0a3f('0x21')](function(){return _0x2866c9;});}else{return _0x2866c9;}})[_0x0a3f('0x3c')](function(_0x8f9d8f){logger[_0x0a3f('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x8f9d8f);throw _0x8f9d8f;});}return _0x2866c9;})['then'](respondWithResult(_0x1cdfb9,0xc9))[_0x0a3f('0x3c')](handleError(_0x1cdfb9,null));};
\ No newline at end of file
+var _0x8aab=['eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','get','CannedAnswers','UserProfileResource','stack','name','send','index','map','CannedAnswer','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','findAll','rows','show','params','include','options','find','body','catch','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x2cdc4a,_0xa97f65){var _0x1e2341=function(_0x54d5cc){while(--_0x54d5cc){_0x2cdc4a['push'](_0x2cdc4a['shift']());}};_0x1e2341(++_0xa97f65);}(_0x8aab,0x114));var _0xb8aa=function(_0x736b3c,_0x132551){_0x736b3c=_0x736b3c-0x0;var _0x409141=_0x8aab[_0x736b3c];return _0x409141;};'use strict';var emlformat=require(_0xb8aa('0x0'));var rimraf=require(_0xb8aa('0x1'));var zipdir=require(_0xb8aa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb8aa('0x3'));var moment=require('moment');var BPromise=require(_0xb8aa('0x4'));var Mustache=require(_0xb8aa('0x5'));var util=require(_0xb8aa('0x6'));var path=require(_0xb8aa('0x7'));var sox=require('sox');var csv=require(_0xb8aa('0x8'));var ejs=require(_0xb8aa('0x9'));var fs=require('fs');var fs_extra=require(_0xb8aa('0xa'));var _=require(_0xb8aa('0xb'));var squel=require(_0xb8aa('0xc'));var crypto=require(_0xb8aa('0xd'));var jsforce=require(_0xb8aa('0xe'));var deskjs=require(_0xb8aa('0xf'));var toCsv=require(_0xb8aa('0x8'));var querystring=require(_0xb8aa('0x10'));var Papa=require(_0xb8aa('0x11'));var Redis=require('ioredis');var authService=require(_0xb8aa('0x12'));var qs=require(_0xb8aa('0x13'));var as=require(_0xb8aa('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb8aa('0x15'));var utils=require(_0xb8aa('0x16'));var config=require(_0xb8aa('0x17'));var licenseUtil=require(_0xb8aa('0x18'));var db=require(_0xb8aa('0x19'))['db'];function respondWithStatusCode(_0x289fb7,_0x3200f1){_0x3200f1=_0x3200f1||0xcc;return function(_0x32074d){if(_0x32074d){return _0x289fb7[_0xb8aa('0x1a')](_0x3200f1);}return _0x289fb7[_0xb8aa('0x1b')](_0x3200f1)[_0xb8aa('0x1c')]();};}function respondWithResult(_0x499c56,_0x4e5c89){_0x4e5c89=_0x4e5c89||0xc8;return function(_0x4c4906){if(_0x4c4906){return _0x499c56['status'](_0x4e5c89)[_0xb8aa('0x1d')](_0x4c4906);}};}function respondWithFilteredResult(_0x32dccf,_0x5b5bb0){return function(_0x678ff){if(_0x678ff){var _0x38e33c=typeof _0x5b5bb0['offset']===_0xb8aa('0x1e')&&typeof _0x5b5bb0[_0xb8aa('0x1f')]===_0xb8aa('0x1e');var _0x293841=_0x678ff[_0xb8aa('0x20')];var _0x1e9726=_0x38e33c?0x0:_0x5b5bb0[_0xb8aa('0x21')];var _0x122fed=_0x38e33c?_0x678ff[_0xb8aa('0x20')]:_0x5b5bb0[_0xb8aa('0x21')]+_0x5b5bb0['limit'];var _0x3267d3;if(_0x122fed>=_0x293841){_0x122fed=_0x293841;_0x3267d3=0xc8;}else{_0x3267d3=0xce;}_0x32dccf['status'](_0x3267d3);return _0x32dccf[_0xb8aa('0x22')]('Content-Range',_0x1e9726+'-'+_0x122fed+'/'+_0x293841)[_0xb8aa('0x1d')](_0x678ff);}return null;};}function patchUpdates(_0xbf27ce){return function(_0x34de86){try{jsonpatch[_0xb8aa('0x23')](_0x34de86,_0xbf27ce,!![]);}catch(_0xc7affc){return BPromise['reject'](_0xc7affc);}return _0x34de86[_0xb8aa('0x24')]();};}function saveUpdates(_0x4b927b,_0x1ea017){return function(_0x396197){if(_0x396197){return _0x396197[_0xb8aa('0x25')](_0x4b927b)[_0xb8aa('0x26')](function(_0x570663){return _0x570663;});}return null;};}function removeEntity(_0x4d07a0,_0x38f94c){return function(_0x3ce4e4){if(_0x3ce4e4){return _0x3ce4e4[_0xb8aa('0x27')]()[_0xb8aa('0x26')](function(){var _0x58b125=_0x3ce4e4[_0xb8aa('0x28')]({'plain':!![]});var _0x5ccfb8=_0xb8aa('0x29');return db[_0xb8aa('0x2a')][_0xb8aa('0x27')]({'where':{'type':_0x5ccfb8,'resourceId':_0x58b125['id']}})[_0xb8aa('0x26')](function(){return _0x3ce4e4;});})[_0xb8aa('0x26')](function(){_0x4d07a0[_0xb8aa('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x65ec2,_0xed999){return function(_0x5d5b6e){if(!_0x5d5b6e){_0x65ec2[_0xb8aa('0x1a')](0x194);}return _0x5d5b6e;};}function handleError(_0x1e051d,_0x492037){_0x492037=_0x492037||0x1f4;return function(_0x470bf2){logger['error'](_0x470bf2[_0xb8aa('0x2b')]);if(_0x470bf2[_0xb8aa('0x2c')]){delete _0x470bf2[_0xb8aa('0x2c')];}_0x1e051d[_0xb8aa('0x1b')](_0x492037)[_0xb8aa('0x2d')](_0x470bf2);};}exports[_0xb8aa('0x2e')]=function(_0x10908c,_0xa4e929){var _0x465f95={},_0x321d60={},_0x172447={'count':0x0,'rows':[]};var _0x8414e2=_[_0xb8aa('0x2f')](db[_0xb8aa('0x30')]['rawAttributes'],function(_0x4c0645){return{'name':_0x4c0645['fieldName'],'type':_0x4c0645[_0xb8aa('0x31')][_0xb8aa('0x32')]};});_0x321d60[_0xb8aa('0x33')]=_[_0xb8aa('0x2f')](_0x8414e2,'name');_0x321d60[_0xb8aa('0x34')]=_[_0xb8aa('0x35')](_0x10908c[_0xb8aa('0x34')]);_0x321d60[_0xb8aa('0x36')]=_['intersection'](_0x321d60['model'],_0x321d60['query']);_0x465f95[_0xb8aa('0x37')]=_[_0xb8aa('0x38')](_0x321d60[_0xb8aa('0x33')],qs[_0xb8aa('0x39')](_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x39')]));_0x465f95[_0xb8aa('0x37')]=_0x465f95[_0xb8aa('0x37')][_0xb8aa('0x3a')]?_0x465f95[_0xb8aa('0x37')]:_0x321d60[_0xb8aa('0x33')];if(!_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x3b')](_0xb8aa('0x3c'))){_0x465f95[_0xb8aa('0x1f')]=qs['limit'](_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x1f')]);_0x465f95[_0xb8aa('0x21')]=qs['offset'](_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x21')]);}_0x465f95[_0xb8aa('0x3d')]=qs['sort'](_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x3e')]);_0x465f95[_0xb8aa('0x3f')]=qs['filters'](_[_0xb8aa('0x40')](_0x10908c[_0xb8aa('0x34')],_0x321d60['filters']),_0x8414e2);if(_0x10908c[_0xb8aa('0x34')]['filter']){_0x465f95[_0xb8aa('0x3f')]=_[_0xb8aa('0x41')](_0x465f95[_0xb8aa('0x3f')],{'$or':[{'key':{'$like':'%'+_0x10908c[_0xb8aa('0x34')]['filter']+'%'}},{'value':{'$like':'%'+_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x42')]+'%'}}]});}_0x465f95=_[_0xb8aa('0x41')]({},_0x465f95,_0x10908c['options']);var _0x1545e5={'where':_0x465f95[_0xb8aa('0x3f')]};return db[_0xb8aa('0x30')][_0xb8aa('0x20')](_0x1545e5)['then'](function(_0x153620){_0x172447[_0xb8aa('0x20')]=_0x153620;if(_0x10908c[_0xb8aa('0x34')][_0xb8aa('0x43')]){_0x465f95['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xb8aa('0x44')](_0x465f95);})[_0xb8aa('0x26')](function(_0x540e58){_0x172447[_0xb8aa('0x45')]=_0x540e58;return _0x172447;})[_0xb8aa('0x26')](respondWithFilteredResult(_0xa4e929,_0x465f95))['catch'](handleError(_0xa4e929,null));};exports[_0xb8aa('0x46')]=function(_0x18d24a,_0x1a7a0e){var _0x24bd88={'raw':!![],'where':{'id':_0x18d24a[_0xb8aa('0x47')]['id']}},_0x4b0562={};_0x4b0562[_0xb8aa('0x33')]=_[_0xb8aa('0x35')](db[_0xb8aa('0x30')]['rawAttributes']);_0x4b0562[_0xb8aa('0x34')]=_['keys'](_0x18d24a[_0xb8aa('0x34')]);_0x4b0562['filters']=_[_0xb8aa('0x38')](_0x4b0562[_0xb8aa('0x33')],_0x4b0562['query']);_0x24bd88[_0xb8aa('0x37')]=_[_0xb8aa('0x38')](_0x4b0562['model'],qs['fields'](_0x18d24a[_0xb8aa('0x34')][_0xb8aa('0x39')]));_0x24bd88['attributes']=_0x24bd88['attributes'][_0xb8aa('0x3a')]?_0x24bd88[_0xb8aa('0x37')]:_0x4b0562[_0xb8aa('0x33')];if(_0x18d24a[_0xb8aa('0x34')]['includeAll']){_0x24bd88[_0xb8aa('0x48')]=[{'all':!![]}];}_0x24bd88=_[_0xb8aa('0x41')]({},_0x24bd88,_0x18d24a[_0xb8aa('0x49')]);return db[_0xb8aa('0x30')][_0xb8aa('0x4a')](_0x24bd88)['then'](handleEntityNotFound(_0x1a7a0e,null))[_0xb8aa('0x26')](respondWithResult(_0x1a7a0e,null))['catch'](handleError(_0x1a7a0e,null));};exports[_0xb8aa('0x25')]=function(_0x31b25c,_0x35acbd){if(_0x31b25c[_0xb8aa('0x4b')]['id']){delete _0x31b25c[_0xb8aa('0x4b')]['id'];}return db[_0xb8aa('0x30')][_0xb8aa('0x4a')]({'where':{'id':_0x31b25c['params']['id']}})[_0xb8aa('0x26')](handleEntityNotFound(_0x35acbd,null))[_0xb8aa('0x26')](saveUpdates(_0x31b25c[_0xb8aa('0x4b')],null))[_0xb8aa('0x26')](respondWithResult(_0x35acbd,null))[_0xb8aa('0x4c')](handleError(_0x35acbd,null));};exports[_0xb8aa('0x27')]=function(_0x408054,_0x1fc912){return db[_0xb8aa('0x30')][_0xb8aa('0x4a')]({'where':{'id':_0x408054['params']['id']}})[_0xb8aa('0x26')](handleEntityNotFound(_0x1fc912,null))['then'](removeEntity(_0x1fc912,null))[_0xb8aa('0x4c')](handleError(_0x1fc912,null));};exports['create']=function(_0x26dffe,_0xc33a81){var _0x565bf6={'key':_0x26dffe[_0xb8aa('0x4b')][_0xb8aa('0x32')]};if(_0x26dffe['body'][_0xb8aa('0x4d')]){_0x565bf6[_0xb8aa('0x4d')]=_0x26dffe[_0xb8aa('0x4b')][_0xb8aa('0x4d')];}else if(_0x26dffe[_0xb8aa('0x4b')][_0xb8aa('0x4e')]){_0x565bf6[_0xb8aa('0x4e')]=_0x26dffe['body']['SmsAccountId'];}else if(_0x26dffe['body'][_0xb8aa('0x4f')]){_0x565bf6[_0xb8aa('0x4f')]=_0x26dffe[_0xb8aa('0x4b')][_0xb8aa('0x4f')];}else if(_0x26dffe['body'][_0xb8aa('0x50')]){_0x565bf6[_0xb8aa('0x50')]=_0x26dffe[_0xb8aa('0x4b')][_0xb8aa('0x50')];}return db['CannedAnswer'][_0xb8aa('0x4a')]({'where':_0x565bf6})[_0xb8aa('0x26')](function(_0x39a0f9){if(_0x39a0f9){throw new db[(_0xb8aa('0x51'))][(_0xb8aa('0x52'))](_0xb8aa('0x53'));}return db[_0xb8aa('0x30')][_0xb8aa('0x54')](_0x26dffe[_0xb8aa('0x4b')]);})[_0xb8aa('0x26')](function(_0x1e5263){var _0x1390ad=_0x26dffe[_0xb8aa('0x55')][_0xb8aa('0x28')]({'plain':!![]});if(!_0x1390ad)throw new Error(_0xb8aa('0x56'));if(_0x1390ad[_0xb8aa('0x57')]==='user'){var _0x1745cd=_0x1e5263['get']({'plain':!![]});return db[_0xb8aa('0x58')][_0xb8aa('0x4a')]({'where':{'name':_0xb8aa('0x29'),'userProfileId':_0x1390ad[_0xb8aa('0x59')]},'raw':!![]})[_0xb8aa('0x26')](function(_0x46a707){if(_0x46a707&&_0x46a707[_0xb8aa('0x5a')]===0x0){return db[_0xb8aa('0x2a')][_0xb8aa('0x54')]({'name':_0x1745cd[_0xb8aa('0x2c')],'resourceId':_0x1745cd['id'],'type':_0x46a707[_0xb8aa('0x2c')],'sectionId':_0x46a707['id']},{})[_0xb8aa('0x26')](function(){return _0x1e5263;});}else{return _0x1e5263;}})[_0xb8aa('0x4c')](function(_0x5a3ed4){logger['error'](_0xb8aa('0x5b'),_0x5a3ed4);throw _0x5a3ed4;});}return _0x1e5263;})[_0xb8aa('0x26')](respondWithResult(_0xc33a81,0xc9))[_0xb8aa('0x4c')](handleError(_0xc33a81,null));};
\ No newline at end of file
index 2f1efbc..0c171f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31b9=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cannedAnswer.attributes','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x31b9,0xb4));var _0x931b=function(_0x437d5a,_0x49e202){_0x437d5a=_0x437d5a-0x0;var _0x40811b=_0x31b9[_0x437d5a];return _0x40811b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x931b('0x0'))(_0x931b('0x1'));var moment=require(_0x931b('0x2'));var BPromise=require(_0x931b('0x3'));var rp=require(_0x931b('0x4'));var fs=require('fs');var path=require(_0x931b('0x5'));var rimraf=require('rimraf');var config=require(_0x931b('0x6'));var attributes=require(_0x931b('0x7'));module['exports']=function(_0x29f022,_0x1112bb){return _0x29f022[_0x931b('0x8')](_0x931b('0x9'),attributes,{'tableName':_0x931b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x931b('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3095=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0xa201ee,_0x37da32){var _0x3e104d=function(_0x4cd637){while(--_0x4cd637){_0xa201ee['push'](_0xa201ee['shift']());}};_0x3e104d(++_0x37da32);}(_0x3095,0x158));var _0x5309=function(_0x5c5904,_0xa16eeb){_0x5c5904=_0x5c5904-0x0;var _0x1eb4b8=_0x3095[_0x5c5904];return _0x1eb4b8;};'use strict';var _=require(_0x5309('0x0'));var util=require(_0x5309('0x1'));var logger=require(_0x5309('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5309('0x3'));var rp=require(_0x5309('0x4'));var fs=require('fs');var path=require(_0x5309('0x5'));var rimraf=require(_0x5309('0x6'));var config=require(_0x5309('0x7'));var attributes=require(_0x5309('0x8'));module[_0x5309('0x9')]=function(_0x11d1e5,_0x12b620){return _0x11d1e5[_0x5309('0xa')](_0x5309('0xb'),attributes,{'tableName':_0x5309('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5309('0xd'),'collate':_0x5309('0xe')});};
\ No newline at end of file
index 357ab30..242e68e 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(_0x4ec74a,_0x73c4d2){var _0x569df4=function(_0x2da8e5){while(--_0x2da8e5){_0x4ec74a['push'](_0x4ec74a['shift']());}};_0x569df4(++_0x73c4d2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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(_0x15d76a,_0x3ef920){var _0x56402b=function(_0x4421a4){while(--_0x4421a4){_0x15d76a['push'](_0x15d76a['shift']());}};_0x56402b(++_0x3ef920);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 24d3640..79b2834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd83a=['destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete'];(function(_0x23b895,_0x58a854){var _0x88a9a7=function(_0x473cea){while(--_0x473cea){_0x23b895['push'](_0x23b895['shift']());}};_0x88a9a7(++_0x58a854);}(_0xd83a,0xa2));var _0xad83=function(_0x172133,_0x10246b){_0x172133=_0x172133-0x0;var _0x2460e5=_0xd83a[_0x172133];return _0x2460e5;};'use strict';var multer=require(_0xad83('0x0'));var util=require(_0xad83('0x1'));var path=require(_0xad83('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xad83('0x3')]();var fs_extra=require(_0xad83('0x4'));var auth=require(_0xad83('0x5'));var interaction=require(_0xad83('0x6'));var config=require('../../config/environment');var controller=require(_0xad83('0x7'));router[_0xad83('0x8')]('/',auth[_0xad83('0x9')](),controller[_0xad83('0xa')]);router['get']('/:id',auth[_0xad83('0x9')](),controller[_0xad83('0xb')]);router[_0xad83('0xc')]('/',auth[_0xad83('0x9')](),controller[_0xad83('0xd')]);router[_0xad83('0xe')](_0xad83('0xf'),auth[_0xad83('0x9')](),controller[_0xad83('0x10')]);router[_0xad83('0x11')]('/:id',auth[_0xad83('0x9')](),controller[_0xad83('0x12')]);module[_0xad83('0x13')]=router;
\ No newline at end of file
+var _0x78c7=['isAuthenticated','/:id','show','post','delete','destroy','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get'];(function(_0x2a5dbb,_0x2fb0ce){var _0x55f92e=function(_0x433f9e){while(--_0x433f9e){_0x2a5dbb['push'](_0x2a5dbb['shift']());}};_0x55f92e(++_0x2fb0ce);}(_0x78c7,0xfd));var _0x778c=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x78c7[_0x725b8e];return _0x43ac45;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x778c('0x0'));var timeout=require(_0x778c('0x1'));var express=require('express');var router=express[_0x778c('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x778c('0x3'));var interaction=require(_0x778c('0x4'));var config=require('../../config/environment');var controller=require(_0x778c('0x5'));router[_0x778c('0x6')]('/',auth[_0x778c('0x7')](),controller['index']);router[_0x778c('0x6')](_0x778c('0x8'),auth[_0x778c('0x7')](),controller[_0x778c('0x9')]);router[_0x778c('0xa')]('/',auth[_0x778c('0x7')](),controller['create']);router['put'](_0x778c('0x8'),auth[_0x778c('0x7')](),controller['update']);router[_0x778c('0xb')](_0x778c('0x8'),auth[_0x778c('0x7')](),controller[_0x778c('0xc')]);module['exports']=router;
\ No newline at end of file
index 3f257f4..a845021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd820=['STRING','INTEGER','sequelize','exports','1970-01-01\x2000:00:01'];(function(_0x3ae1a9,_0x3f6243){var _0x36b7e4=function(_0x5b1fea){while(--_0x5b1fea){_0x3ae1a9['push'](_0x3ae1a9['shift']());}};_0x36b7e4(++_0x3f6243);}(_0xd820,0x16f));var _0x0d82=function(_0x38515e,_0x298874){_0x38515e=_0x38515e-0x0;var _0x88a188=_0xd820[_0x38515e];return _0x88a188;};'use strict';var Sequelize=require(_0x0d82('0x0'));module[_0x0d82('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x0d82('0x2')},'clid':{'type':Sequelize[_0x0d82('0x3')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0x0d82('0x3')]},'channel':{'type':Sequelize[_0x0d82('0x3')]},'dstchannel':{'type':Sequelize[_0x0d82('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x0d82('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x0d82('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x0d82('0x3')]},'amaflags':{'type':Sequelize[_0x0d82('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x0d82('0x3')]},'uniqueid':{'type':Sequelize[_0x0d82('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x0d82('0x3')]},'type':{'type':Sequelize[_0x0d82('0x3')]},'tag':{'type':Sequelize[_0x0d82('0x3')]}};
\ No newline at end of file
+var _0x3338=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0x4405dc,_0x2ce0f5){var _0x9e5ab5=function(_0x4edc4f){while(--_0x4edc4f){_0x4405dc['push'](_0x4405dc['shift']());}};_0x9e5ab5(++_0x2ce0f5);}(_0x3338,0xfa));var _0x8333=function(_0xb8111f,_0x2b0a3b){_0xb8111f=_0xb8111f-0x0;var _0x233d1b=_0x3338[_0xb8111f];return _0x233d1b;};'use strict';var Sequelize=require(_0x8333('0x0'));module[_0x8333('0x1')]={'calldate':{'type':Sequelize[_0x8333('0x2')],'allowNull':![],'defaultValue':_0x8333('0x3')},'clid':{'type':Sequelize[_0x8333('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x8333('0x4')]},'dcontext':{'type':Sequelize[_0x8333('0x4')]},'channel':{'type':Sequelize[_0x8333('0x4')]},'dstchannel':{'type':Sequelize[_0x8333('0x4')]},'lastapp':{'type':Sequelize[_0x8333('0x4')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x8333('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x8333('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x8333('0x4')]},'amaflags':{'type':Sequelize[_0x8333('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x8333('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x8333('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x8333('0x4')]},'peeraccount':{'type':Sequelize[_0x8333('0x4')]},'type':{'type':Sequelize[_0x8333('0x4')]},'tag':{'type':Sequelize[_0x8333('0x4')]}};
\ No newline at end of file
index cb589f2..afe0c0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03e=['../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','Cdr','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','rows','catch','params','find','create','body','describe','eml-format','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x590c83,_0x35ba57){var _0x47eeab=function(_0x4c8194){while(--_0x4c8194){_0x590c83['push'](_0x590c83['shift']());}};_0x47eeab(++_0x35ba57);}(_0xc03e,0x15a));var _0xec03=function(_0x50f0a9,_0x2b0c57){_0x50f0a9=_0x50f0a9-0x0;var _0x5a33d9=_0xc03e[_0x50f0a9];return _0x5a33d9;};'use strict';var emlformat=require(_0xec03('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xec03('0x1'));var rp=require('request-promise');var moment=require(_0xec03('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xec03('0x3'));var util=require(_0xec03('0x4'));var path=require(_0xec03('0x5'));var sox=require(_0xec03('0x6'));var csv=require(_0xec03('0x7'));var ejs=require(_0xec03('0x8'));var fs=require('fs');var fs_extra=require(_0xec03('0x9'));var _=require(_0xec03('0xa'));var squel=require(_0xec03('0xb'));var crypto=require('crypto');var jsforce=require(_0xec03('0xc'));var deskjs=require(_0xec03('0xd'));var toCsv=require(_0xec03('0x7'));var querystring=require(_0xec03('0xe'));var Papa=require('papaparse');var Redis=require(_0xec03('0xf'));var authService=require(_0xec03('0x10'));var qs=require(_0xec03('0x11'));var as=require(_0xec03('0x12'));var hardwareService=require(_0xec03('0x13'));var logger=require(_0xec03('0x14'))(_0xec03('0x15'));var utils=require(_0xec03('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xec03('0x17'));var db=require(_0xec03('0x18'))['db'];function respondWithStatusCode(_0x398720,_0x2f65a1){_0x2f65a1=_0x2f65a1||0xcc;return function(_0x9908ef){if(_0x9908ef){return _0x398720[_0xec03('0x19')](_0x2f65a1);}return _0x398720[_0xec03('0x1a')](_0x2f65a1)[_0xec03('0x1b')]();};}function respondWithResult(_0x4ba43a,_0x555447){_0x555447=_0x555447||0xc8;return function(_0x5ca0e2){if(_0x5ca0e2){return _0x4ba43a[_0xec03('0x1a')](_0x555447)[_0xec03('0x1c')](_0x5ca0e2);}};}function respondWithFilteredResult(_0x3501ab,_0x515680){return function(_0x28bb4f){if(_0x28bb4f){var _0xbe85e6=typeof _0x515680[_0xec03('0x1d')]===_0xec03('0x1e')&&typeof _0x515680['limit']===_0xec03('0x1e');var _0x52f6ae=_0x28bb4f[_0xec03('0x1f')];var _0x5e8ae2=_0xbe85e6?0x0:_0x515680[_0xec03('0x1d')];var _0x5b3e04=_0xbe85e6?_0x28bb4f['count']:_0x515680[_0xec03('0x1d')]+_0x515680[_0xec03('0x20')];var _0xefa268;if(_0x5b3e04>=_0x52f6ae){_0x5b3e04=_0x52f6ae;_0xefa268=0xc8;}else{_0xefa268=0xce;}_0x3501ab[_0xec03('0x1a')](_0xefa268);return _0x3501ab['set'](_0xec03('0x21'),_0x5e8ae2+'-'+_0x5b3e04+'/'+_0x52f6ae)['json'](_0x28bb4f);}return null;};}function patchUpdates(_0x16ade3){return function(_0x253910){try{jsonpatch[_0xec03('0x22')](_0x253910,_0x16ade3,!![]);}catch(_0x33a167){return BPromise[_0xec03('0x23')](_0x33a167);}return _0x253910[_0xec03('0x24')]();};}function saveUpdates(_0x3a44df,_0x3b6ddf){return function(_0x5df6cc){if(_0x5df6cc){return _0x5df6cc[_0xec03('0x25')](_0x3a44df)[_0xec03('0x26')](function(_0xa16d53){return _0xa16d53;});}return null;};}function removeEntity(_0x76b813,_0x33de1e){return function(_0x15ef87){if(_0x15ef87){return _0x15ef87['destroy']()[_0xec03('0x26')](function(){_0x76b813[_0xec03('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bfcf6,_0xa5b580){return function(_0x26875e){if(!_0x26875e){_0x2bfcf6[_0xec03('0x19')](0x194);}return _0x26875e;};}function handleError(_0x1c6870,_0x581322){_0x581322=_0x581322||0x1f4;return function(_0x73cc4f){logger[_0xec03('0x27')](_0x73cc4f[_0xec03('0x28')]);if(_0x73cc4f[_0xec03('0x29')]){delete _0x73cc4f[_0xec03('0x29')];}_0x1c6870['status'](_0x581322)[_0xec03('0x2a')](_0x73cc4f);};}exports[_0xec03('0x2b')]=function(_0x49f9ab,_0x530251){var _0x2063ba={},_0x12b5c9={},_0x35a9eb={'count':0x0,'rows':[]};var _0x872f98=_[_0xec03('0x2c')](db[_0xec03('0x2d')][_0xec03('0x2e')],function(_0x28753c){return{'name':_0x28753c['fieldName'],'type':_0x28753c[_0xec03('0x2f')][_0xec03('0x30')]};});_0x12b5c9[_0xec03('0x31')]=_[_0xec03('0x2c')](_0x872f98,_0xec03('0x29'));_0x12b5c9[_0xec03('0x32')]=_[_0xec03('0x33')](_0x49f9ab[_0xec03('0x32')]);_0x12b5c9[_0xec03('0x34')]=_['intersection'](_0x12b5c9['model'],_0x12b5c9['query']);_0x2063ba[_0xec03('0x35')]=_[_0xec03('0x36')](_0x12b5c9[_0xec03('0x31')],qs[_0xec03('0x37')](_0x49f9ab['query']['fields']));_0x2063ba['attributes']=_0x2063ba['attributes'][_0xec03('0x38')]?_0x2063ba[_0xec03('0x35')]:_0x12b5c9[_0xec03('0x31')];if(!_0x49f9ab[_0xec03('0x32')][_0xec03('0x39')](_0xec03('0x3a'))){_0x2063ba[_0xec03('0x20')]=qs[_0xec03('0x20')](_0x49f9ab[_0xec03('0x32')][_0xec03('0x20')]);_0x2063ba[_0xec03('0x1d')]=qs[_0xec03('0x1d')](_0x49f9ab['query'][_0xec03('0x1d')]);}_0x2063ba[_0xec03('0x3b')]=qs[_0xec03('0x3c')](_0x49f9ab['query'][_0xec03('0x3c')]);_0x2063ba[_0xec03('0x3d')]=qs[_0xec03('0x34')](_[_0xec03('0x3e')](_0x49f9ab[_0xec03('0x32')],_0x12b5c9[_0xec03('0x34')]),_0x872f98);if(_0x49f9ab[_0xec03('0x32')][_0xec03('0x3f')]){_0x2063ba[_0xec03('0x3d')]=_[_0xec03('0x40')](_0x2063ba[_0xec03('0x3d')],{'$or':_['map'](_0x872f98,function(_0x25286a){if(_0x25286a[_0xec03('0x2f')]!==_0xec03('0x41')){var _0x3d6d70={};_0x3d6d70[_0x25286a[_0xec03('0x29')]]={'$like':'%'+_0x49f9ab[_0xec03('0x32')][_0xec03('0x3f')]+'%'};return _0x3d6d70;}})});}_0x2063ba=_[_0xec03('0x40')]({},_0x2063ba,_0x49f9ab['options']);var _0x454e91={'where':_0x2063ba['where']};return db['Cdr'][_0xec03('0x1f')](_0x454e91)['then'](function(_0x548b81){_0x35a9eb[_0xec03('0x1f')]=_0x548b81;if(_0x49f9ab[_0xec03('0x32')]['includeAll']){_0x2063ba[_0xec03('0x42')]=[{'all':!![]}];}return db['Cdr']['findAll'](_0x2063ba);})['then'](function(_0x494fec){_0x35a9eb[_0xec03('0x43')]=_0x494fec;return _0x35a9eb;})[_0xec03('0x26')](respondWithFilteredResult(_0x530251,_0x2063ba))[_0xec03('0x44')](handleError(_0x530251,null));};exports['show']=function(_0x1b1aea,_0x3f2522){var _0xe03df3={'raw':!![],'where':{'id':_0x1b1aea[_0xec03('0x45')]['id']}},_0x14a429={};_0x14a429[_0xec03('0x31')]=_[_0xec03('0x33')](db[_0xec03('0x2d')][_0xec03('0x2e')]);_0x14a429['query']=_[_0xec03('0x33')](_0x1b1aea[_0xec03('0x32')]);_0x14a429[_0xec03('0x34')]=_[_0xec03('0x36')](_0x14a429['model'],_0x14a429[_0xec03('0x32')]);_0xe03df3[_0xec03('0x35')]=_[_0xec03('0x36')](_0x14a429[_0xec03('0x31')],qs[_0xec03('0x37')](_0x1b1aea[_0xec03('0x32')]['fields']));_0xe03df3['attributes']=_0xe03df3[_0xec03('0x35')][_0xec03('0x38')]?_0xe03df3[_0xec03('0x35')]:_0x14a429[_0xec03('0x31')];if(_0x1b1aea[_0xec03('0x32')]['includeAll']){_0xe03df3['include']=[{'all':!![]}];}_0xe03df3=_[_0xec03('0x40')]({},_0xe03df3,_0x1b1aea['options']);return db[_0xec03('0x2d')][_0xec03('0x46')](_0xe03df3)[_0xec03('0x26')](handleEntityNotFound(_0x3f2522,null))[_0xec03('0x26')](respondWithResult(_0x3f2522,null))['catch'](handleError(_0x3f2522,null));};exports[_0xec03('0x47')]=function(_0x14a61c,_0x3c7e18){return db[_0xec03('0x2d')]['create'](_0x14a61c[_0xec03('0x48')],{})['then'](respondWithResult(_0x3c7e18,0xc9))[_0xec03('0x44')](handleError(_0x3c7e18,null));};exports[_0xec03('0x25')]=function(_0xdb9a99,_0x1c6b87){if(_0xdb9a99[_0xec03('0x48')]['id']){delete _0xdb9a99[_0xec03('0x48')]['id'];}return db[_0xec03('0x2d')]['find']({'where':{'id':_0xdb9a99[_0xec03('0x45')]['id']}})[_0xec03('0x26')](handleEntityNotFound(_0x1c6b87,null))[_0xec03('0x26')](saveUpdates(_0xdb9a99[_0xec03('0x48')],null))['then'](respondWithResult(_0x1c6b87,null))[_0xec03('0x44')](handleError(_0x1c6b87,null));};exports['destroy']=function(_0xe0e874,_0x3825f9){return db[_0xec03('0x2d')][_0xec03('0x46')]({'where':{'id':_0xe0e874['params']['id']}})[_0xec03('0x26')](handleEntityNotFound(_0x3825f9,null))[_0xec03('0x26')](removeEntity(_0x3825f9,null))[_0xec03('0x44')](handleError(_0x3825f9,null));};exports[_0xec03('0x49')]=function(_0x32a5af,_0x5b1339){return db[_0xec03('0x2d')][_0xec03('0x49')]()[_0xec03('0x26')](respondWithResult(_0x5b1339,null))['catch'](handleError(_0x5b1339,null));};
\ No newline at end of file
+var _0xe181=['keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','findAll','rows','catch','show','params','fields','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','Cdr','rawAttributes','fieldName','type','key','model','map','query'];(function(_0x3be2e2,_0x5c166d){var _0x53b9c5=function(_0x248aa7){while(--_0x248aa7){_0x3be2e2['push'](_0x3be2e2['shift']());}};_0x53b9c5(++_0x5c166d);}(_0xe181,0x68));var _0x1e18=function(_0x2bd443,_0x3b60d8){_0x2bd443=_0x2bd443-0x0;var _0x45159a=_0xe181[_0x2bd443];return _0x45159a;};'use strict';var emlformat=require(_0x1e18('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e18('0x1'));var jsonpatch=require(_0x1e18('0x2'));var rp=require(_0x1e18('0x3'));var moment=require(_0x1e18('0x4'));var BPromise=require(_0x1e18('0x5'));var Mustache=require(_0x1e18('0x6'));var util=require(_0x1e18('0x7'));var path=require('path');var sox=require(_0x1e18('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e18('0x9'));var _=require(_0x1e18('0xa'));var squel=require(_0x1e18('0xb'));var crypto=require(_0x1e18('0xc'));var jsforce=require(_0x1e18('0xd'));var deskjs=require(_0x1e18('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1e18('0xf'));var Papa=require(_0x1e18('0x10'));var Redis=require(_0x1e18('0x11'));var authService=require(_0x1e18('0x12'));var qs=require(_0x1e18('0x13'));var as=require(_0x1e18('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1e18('0x15'))(_0x1e18('0x16'));var utils=require(_0x1e18('0x17'));var config=require(_0x1e18('0x18'));var licenseUtil=require(_0x1e18('0x19'));var db=require(_0x1e18('0x1a'))['db'];function respondWithStatusCode(_0x1743c3,_0x33a98d){_0x33a98d=_0x33a98d||0xcc;return function(_0x531e1b){if(_0x531e1b){return _0x1743c3[_0x1e18('0x1b')](_0x33a98d);}return _0x1743c3['status'](_0x33a98d)[_0x1e18('0x1c')]();};}function respondWithResult(_0x563eff,_0x404b7f){_0x404b7f=_0x404b7f||0xc8;return function(_0x36b583){if(_0x36b583){return _0x563eff[_0x1e18('0x1d')](_0x404b7f)[_0x1e18('0x1e')](_0x36b583);}};}function respondWithFilteredResult(_0x1687ba,_0x1e1ce6){return function(_0x39bc56){if(_0x39bc56){var _0x33fea1=typeof _0x1e1ce6[_0x1e18('0x1f')]===_0x1e18('0x20')&&typeof _0x1e1ce6[_0x1e18('0x21')]===_0x1e18('0x20');var _0x349f3c=_0x39bc56[_0x1e18('0x22')];var _0x21b851=_0x33fea1?0x0:_0x1e1ce6['offset'];var _0x1c91d2=_0x33fea1?_0x39bc56[_0x1e18('0x22')]:_0x1e1ce6[_0x1e18('0x1f')]+_0x1e1ce6[_0x1e18('0x21')];var _0x2834ee;if(_0x1c91d2>=_0x349f3c){_0x1c91d2=_0x349f3c;_0x2834ee=0xc8;}else{_0x2834ee=0xce;}_0x1687ba[_0x1e18('0x1d')](_0x2834ee);return _0x1687ba[_0x1e18('0x23')](_0x1e18('0x24'),_0x21b851+'-'+_0x1c91d2+'/'+_0x349f3c)[_0x1e18('0x1e')](_0x39bc56);}return null;};}function patchUpdates(_0x22baca){return function(_0x2489c3){try{jsonpatch[_0x1e18('0x25')](_0x2489c3,_0x22baca,!![]);}catch(_0x3c4fdf){return BPromise[_0x1e18('0x26')](_0x3c4fdf);}return _0x2489c3[_0x1e18('0x27')]();};}function saveUpdates(_0x975df0,_0x3fd0a7){return function(_0x5eb6b4){if(_0x5eb6b4){return _0x5eb6b4[_0x1e18('0x28')](_0x975df0)[_0x1e18('0x29')](function(_0x3e9b2c){return _0x3e9b2c;});}return null;};}function removeEntity(_0x52d5e2,_0xf74622){return function(_0xdda2ce){if(_0xdda2ce){return _0xdda2ce[_0x1e18('0x2a')]()[_0x1e18('0x29')](function(){_0x52d5e2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x6fa4db,_0x53f9d7){return function(_0x5bb03c){if(!_0x5bb03c){_0x6fa4db['sendStatus'](0x194);}return _0x5bb03c;};}function handleError(_0x32a196,_0x29cac0){_0x29cac0=_0x29cac0||0x1f4;return function(_0x41b67d){logger[_0x1e18('0x2b')](_0x41b67d[_0x1e18('0x2c')]);if(_0x41b67d[_0x1e18('0x2d')]){delete _0x41b67d[_0x1e18('0x2d')];}_0x32a196[_0x1e18('0x1d')](_0x29cac0)[_0x1e18('0x2e')](_0x41b67d);};}exports[_0x1e18('0x2f')]=function(_0x1015a3,_0x42c638){var _0x40d0af={},_0x1be225={},_0x558d01={'count':0x0,'rows':[]};var _0x57000b=_['map'](db[_0x1e18('0x30')][_0x1e18('0x31')],function(_0x1f75cd){return{'name':_0x1f75cd[_0x1e18('0x32')],'type':_0x1f75cd[_0x1e18('0x33')][_0x1e18('0x34')]};});_0x1be225[_0x1e18('0x35')]=_[_0x1e18('0x36')](_0x57000b,'name');_0x1be225[_0x1e18('0x37')]=_[_0x1e18('0x38')](_0x1015a3['query']);_0x1be225[_0x1e18('0x39')]=_[_0x1e18('0x3a')](_0x1be225[_0x1e18('0x35')],_0x1be225['query']);_0x40d0af[_0x1e18('0x3b')]=_['intersection'](_0x1be225['model'],qs['fields'](_0x1015a3[_0x1e18('0x37')]['fields']));_0x40d0af[_0x1e18('0x3b')]=_0x40d0af[_0x1e18('0x3b')][_0x1e18('0x3c')]?_0x40d0af['attributes']:_0x1be225['model'];if(!_0x1015a3[_0x1e18('0x37')][_0x1e18('0x3d')](_0x1e18('0x3e'))){_0x40d0af[_0x1e18('0x21')]=qs[_0x1e18('0x21')](_0x1015a3[_0x1e18('0x37')][_0x1e18('0x21')]);_0x40d0af[_0x1e18('0x1f')]=qs[_0x1e18('0x1f')](_0x1015a3[_0x1e18('0x37')][_0x1e18('0x1f')]);}_0x40d0af[_0x1e18('0x3f')]=qs['sort'](_0x1015a3['query'][_0x1e18('0x40')]);_0x40d0af[_0x1e18('0x41')]=qs[_0x1e18('0x39')](_['pick'](_0x1015a3[_0x1e18('0x37')],_0x1be225['filters']),_0x57000b);if(_0x1015a3[_0x1e18('0x37')]['filter']){_0x40d0af['where']=_[_0x1e18('0x42')](_0x40d0af[_0x1e18('0x41')],{'$or':_[_0x1e18('0x36')](_0x57000b,function(_0x206b44){if(_0x206b44[_0x1e18('0x33')]!==_0x1e18('0x43')){var _0x4e2ca3={};_0x4e2ca3[_0x206b44[_0x1e18('0x2d')]]={'$like':'%'+_0x1015a3[_0x1e18('0x37')][_0x1e18('0x44')]+'%'};return _0x4e2ca3;}})});}_0x40d0af=_[_0x1e18('0x42')]({},_0x40d0af,_0x1015a3['options']);var _0x11f839={'where':_0x40d0af['where']};return db[_0x1e18('0x30')][_0x1e18('0x22')](_0x11f839)['then'](function(_0x41c2bd){_0x558d01[_0x1e18('0x22')]=_0x41c2bd;if(_0x1015a3['query']['includeAll']){_0x40d0af['include']=[{'all':!![]}];}return db[_0x1e18('0x30')][_0x1e18('0x45')](_0x40d0af);})[_0x1e18('0x29')](function(_0x602a85){_0x558d01[_0x1e18('0x46')]=_0x602a85;return _0x558d01;})[_0x1e18('0x29')](respondWithFilteredResult(_0x42c638,_0x40d0af))[_0x1e18('0x47')](handleError(_0x42c638,null));};exports[_0x1e18('0x48')]=function(_0x1cae7e,_0x354832){var _0x16ee40={'raw':!![],'where':{'id':_0x1cae7e[_0x1e18('0x49')]['id']}},_0x4821f9={};_0x4821f9['model']=_[_0x1e18('0x38')](db[_0x1e18('0x30')]['rawAttributes']);_0x4821f9['query']=_['keys'](_0x1cae7e[_0x1e18('0x37')]);_0x4821f9[_0x1e18('0x39')]=_['intersection'](_0x4821f9[_0x1e18('0x35')],_0x4821f9[_0x1e18('0x37')]);_0x16ee40['attributes']=_['intersection'](_0x4821f9[_0x1e18('0x35')],qs[_0x1e18('0x4a')](_0x1cae7e[_0x1e18('0x37')][_0x1e18('0x4a')]));_0x16ee40[_0x1e18('0x3b')]=_0x16ee40[_0x1e18('0x3b')][_0x1e18('0x3c')]?_0x16ee40[_0x1e18('0x3b')]:_0x4821f9[_0x1e18('0x35')];if(_0x1cae7e[_0x1e18('0x37')]['includeAll']){_0x16ee40['include']=[{'all':!![]}];}_0x16ee40=_[_0x1e18('0x42')]({},_0x16ee40,_0x1cae7e[_0x1e18('0x4b')]);return db[_0x1e18('0x30')][_0x1e18('0x4c')](_0x16ee40)[_0x1e18('0x29')](handleEntityNotFound(_0x354832,null))[_0x1e18('0x29')](respondWithResult(_0x354832,null))[_0x1e18('0x47')](handleError(_0x354832,null));};exports['create']=function(_0x54f69b,_0x54cd71){return db[_0x1e18('0x30')][_0x1e18('0x4d')](_0x54f69b[_0x1e18('0x4e')],{})[_0x1e18('0x29')](respondWithResult(_0x54cd71,0xc9))[_0x1e18('0x47')](handleError(_0x54cd71,null));};exports[_0x1e18('0x28')]=function(_0x191c18,_0x190af4){if(_0x191c18[_0x1e18('0x4e')]['id']){delete _0x191c18[_0x1e18('0x4e')]['id'];}return db[_0x1e18('0x30')][_0x1e18('0x4c')]({'where':{'id':_0x191c18[_0x1e18('0x49')]['id']}})[_0x1e18('0x29')](handleEntityNotFound(_0x190af4,null))[_0x1e18('0x29')](saveUpdates(_0x191c18[_0x1e18('0x4e')],null))[_0x1e18('0x29')](respondWithResult(_0x190af4,null))[_0x1e18('0x47')](handleError(_0x190af4,null));};exports[_0x1e18('0x2a')]=function(_0x11d573,_0x5d4cbb){return db[_0x1e18('0x30')][_0x1e18('0x4c')]({'where':{'id':_0x11d573[_0x1e18('0x49')]['id']}})[_0x1e18('0x29')](handleEntityNotFound(_0x5d4cbb,null))[_0x1e18('0x29')](removeEntity(_0x5d4cbb,null))['catch'](handleError(_0x5d4cbb,null));};exports['describe']=function(_0x16b51a,_0x30dc06){return db['Cdr'][_0x1e18('0x4f')]()[_0x1e18('0x29')](respondWithResult(_0x30dc06,null))[_0x1e18('0x47')](handleError(_0x30dc06,null));};
\ No newline at end of file
index 054e7ef..24e5d99 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(_0x60274c,_0x407c89){var _0x1361b7=function(_0x36334f){while(--_0x36334f){_0x60274c['push'](_0x60274c['shift']());}};_0x1361b7(++_0x407c89);}(_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(_0x52259c,_0x3667cf){var _0x26cbfb=function(_0x207b2e){while(--_0x207b2e){_0x52259c['push'](_0x52259c['shift']());}};_0x26cbfb(++_0x3667cf);}(_0x7a54,0x106));var _0x47a5=function(_0x5533e8,_0x383f07){_0x5533e8=_0x5533e8-0x0;var _0x3c287e=_0x7a54[_0x5533e8];return _0x3c287e;};'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 8d76dae..10305a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a0=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x585134,_0x26a09d){var _0x5f348d=function(_0x15e210){while(--_0x15e210){_0x585134['push'](_0x585134['shift']());}};_0x5f348d(++_0x26a09d);}(_0xd2a0,0x14a));var _0x0d2a=function(_0x4577bf,_0x12745e){_0x4577bf=_0x4577bf-0x0;var _0x2b54a6=_0xd2a0[_0x4577bf];return _0x2b54a6;};'use strict';var _=require('lodash');var util=require(_0x0d2a('0x0'));var moment=require(_0x0d2a('0x1'));var BPromise=require(_0x0d2a('0x2'));var rs=require(_0x0d2a('0x3'));var fs=require('fs');var Redis=require(_0x0d2a('0x4'));var db=require(_0x0d2a('0x5'))['db'];var utils=require(_0x0d2a('0x6'));var logger=require(_0x0d2a('0x7'))(_0x0d2a('0x8'));var config=require(_0x0d2a('0x9'));var jayson=require(_0x0d2a('0xa'));var client=jayson[_0x0d2a('0xb')][_0x0d2a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3581fd,_0x32b5ba,_0x47a5ef){return new BPromise(function(_0x1e2349,_0x2c8035){return client['request'](_0x3581fd,_0x47a5ef)['then'](function(_0x24c7cc){logger[_0x0d2a('0xd')](_0x0d2a('0xe'),_0x32b5ba,'request\x20sent');logger[_0x0d2a('0xf')](_0x0d2a('0x10'),_0x32b5ba,_0x0d2a('0x11'),JSON[_0x0d2a('0x12')](_0x24c7cc));if(_0x24c7cc[_0x0d2a('0x13')]){if(_0x24c7cc['error'][_0x0d2a('0x14')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x32b5ba,_0x24c7cc['error'][_0x0d2a('0x15')]);return _0x2c8035(_0x24c7cc[_0x0d2a('0x13')][_0x0d2a('0x15')]);}logger['error'](_0x0d2a('0xe'),_0x32b5ba,_0x24c7cc[_0x0d2a('0x13')][_0x0d2a('0x15')]);return _0x1e2349(_0x24c7cc['error'][_0x0d2a('0x15')]);}else{logger[_0x0d2a('0xd')]('Cdr,\x20%s,\x20%s',_0x32b5ba,_0x0d2a('0x11'));_0x1e2349(_0x24c7cc[_0x0d2a('0x16')][_0x0d2a('0x15')]);}})[_0x0d2a('0x17')](function(_0x7be607){logger['error']('Cdr,\x20%s,\x20%s',_0x32b5ba,_0x7be607);_0x2c8035(_0x7be607);});});}
\ No newline at end of file
+var _0x97d0=['Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x17b558,_0x19c462){var _0x2a3535=function(_0x24e4b1){while(--_0x24e4b1){_0x17b558['push'](_0x17b558['shift']());}};_0x2a3535(++_0x19c462);}(_0x97d0,0x1a7));var _0x097d=function(_0x38aecb,_0x52a548){_0x38aecb=_0x38aecb-0x0;var _0x58a70a=_0x97d0[_0x38aecb];return _0x58a70a;};'use strict';var _=require(_0x097d('0x0'));var util=require(_0x097d('0x1'));var moment=require(_0x097d('0x2'));var BPromise=require('bluebird');var rs=require(_0x097d('0x3'));var fs=require('fs');var Redis=require(_0x097d('0x4'));var db=require(_0x097d('0x5'))['db'];var utils=require(_0x097d('0x6'));var logger=require(_0x097d('0x7'))(_0x097d('0x8'));var config=require(_0x097d('0x9'));var jayson=require(_0x097d('0xa'));var client=jayson[_0x097d('0xb')][_0x097d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4bcd05,_0x315c3a,_0x105632){return new BPromise(function(_0x4fc89e,_0x160aee){return client[_0x097d('0xd')](_0x4bcd05,_0x105632)[_0x097d('0xe')](function(_0x3df163){logger[_0x097d('0xf')](_0x097d('0x10'),_0x315c3a,_0x097d('0x11'));logger[_0x097d('0x12')](_0x097d('0x13'),_0x315c3a,'request\x20sent',JSON[_0x097d('0x14')](_0x3df163));if(_0x3df163[_0x097d('0x15')]){if(_0x3df163[_0x097d('0x15')][_0x097d('0x16')]===0x1f4){logger[_0x097d('0x15')](_0x097d('0x10'),_0x315c3a,_0x3df163['error']['message']);return _0x160aee(_0x3df163[_0x097d('0x15')][_0x097d('0x17')]);}logger[_0x097d('0x15')](_0x097d('0x10'),_0x315c3a,_0x3df163[_0x097d('0x15')][_0x097d('0x17')]);return _0x4fc89e(_0x3df163[_0x097d('0x15')][_0x097d('0x17')]);}else{logger[_0x097d('0xf')](_0x097d('0x10'),_0x315c3a,_0x097d('0x11'));_0x4fc89e(_0x3df163[_0x097d('0x18')][_0x097d('0x17')]);}})[_0x097d('0x19')](function(_0x475b6d){logger[_0x097d('0x15')](_0x097d('0x10'),_0x315c3a,_0x475b6d);_0x160aee(_0x475b6d);});});}
\ No newline at end of file
index 20781a0..cc0d8e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x35a533,_0x1448a6){var _0x2c1867=function(_0x3de5d0){while(--_0x3de5d0){_0x35a533['push'](_0x35a533['shift']());}};_0x2c1867(++_0x1448a6);}(_0xb10b,0x12a));var _0xbb10=function(_0xd204b0,_0x4c7d1d){_0xd204b0=_0xd204b0-0x0;var _0xfc8310=_0xb10b[_0xd204b0];return _0xfc8310;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
+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(_0x409f3f,_0x476945){var _0x5753c8=function(_0x421196){while(--_0x421196){_0x409f3f['push'](_0x409f3f['shift']());}};_0x5753c8(++_0x476945);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index eba29ab..908884b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07db=['noop','TEXT','*,*,*,*','exports','STRING'];(function(_0x2cbdcd,_0x2034bb){var _0x4ab0fe=function(_0x12fce3){while(--_0x12fce3){_0x2cbdcd['push'](_0x2cbdcd['shift']());}};_0x4ab0fe(++_0x2034bb);}(_0x07db,0xad));var _0xb07d=function(_0x2cc0b3,_0x120bf1){_0x2cc0b3=_0x2cc0b3-0x0;var _0x1667ef=_0x07db[_0x2cc0b3];return _0x1667ef;};'use strict';var Sequelize=require('sequelize');module[_0xb07d('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xb07d('0x1')],'allowNull':![],'defaultValue':_0xb07d('0x2')},'appdata':{'type':Sequelize[_0xb07d('0x3')]()},'description':{'type':Sequelize[_0xb07d('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xb07d('0x4')}};
\ No newline at end of file
+var _0x01f6=['sequelize','exports','INTEGER','STRING','noop'];(function(_0x5f2c9d,_0x59e9d9){var _0xd99ee4=function(_0x1e5a5e){while(--_0x1e5a5e){_0x5f2c9d['push'](_0x5f2c9d['shift']());}};_0xd99ee4(++_0x59e9d9);}(_0x01f6,0xe6));var _0x601f=function(_0x4bc532,_0x42f9c5){_0x4bc532=_0x4bc532-0x0;var _0x2b20f1=_0x01f6[_0x4bc532];return _0x2b20f1;};'use strict';var Sequelize=require(_0x601f('0x0'));module[_0x601f('0x1')]={'priority':{'type':Sequelize[_0x601f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x601f('0x3')],'allowNull':![],'defaultValue':_0x601f('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x601f('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index b50d05b..39537fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['json','reject','save','update','then','destroy','end','error','stack','name','send','show','params','keys','rawAttributes','filters','model','query','attributes','intersection','fields','length','includeAll','merge','options','ChatApplication','find','catch','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set'];(function(_0x44b614,_0x5c2fd6){var _0x4170fc=function(_0x2d26ff){while(--_0x2d26ff){_0x44b614['push'](_0x44b614['shift']());}};_0x4170fc(++_0x5c2fd6);}(_0x878f,0x173));var _0xf878=function(_0x2936e0,_0x3d3684){_0x2936e0=_0x2936e0-0x0;var _0x54c263=_0x878f[_0x2936e0];return _0x54c263;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf878('0x0'));var zipdir=require(_0xf878('0x1'));var jsonpatch=require(_0xf878('0x2'));var rp=require(_0xf878('0x3'));var moment=require(_0xf878('0x4'));var BPromise=require(_0xf878('0x5'));var Mustache=require(_0xf878('0x6'));var util=require(_0xf878('0x7'));var path=require(_0xf878('0x8'));var sox=require(_0xf878('0x9'));var csv=require(_0xf878('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf878('0xb'));var squel=require(_0xf878('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf878('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf878('0xd'));var authService=require(_0xf878('0xe'));var qs=require(_0xf878('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf878('0x10'));var logger=require(_0xf878('0x11'))('api');var utils=require(_0xf878('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf878('0x13'));var db=require(_0xf878('0x14'))['db'];function respondWithStatusCode(_0x339c9c,_0x596fb5){_0x596fb5=_0x596fb5||0xcc;return function(_0x1ce004){if(_0x1ce004){return _0x339c9c[_0xf878('0x15')](_0x596fb5);}return _0x339c9c[_0xf878('0x16')](_0x596fb5)['end']();};}function respondWithResult(_0xe2c2de,_0x3902f7){_0x3902f7=_0x3902f7||0xc8;return function(_0x119e9e){if(_0x119e9e){return _0xe2c2de['status'](_0x3902f7)['json'](_0x119e9e);}};}function respondWithFilteredResult(_0x4c0948,_0x35ff2d){return function(_0x31d888){if(_0x31d888){var _0x6dbeca=typeof _0x35ff2d[_0xf878('0x17')]===_0xf878('0x18')&&typeof _0x35ff2d[_0xf878('0x19')]===_0xf878('0x18');var _0x3c5dee=_0x31d888[_0xf878('0x1a')];var _0x3b2e1b=_0x6dbeca?0x0:_0x35ff2d['offset'];var _0x2b2b54=_0x6dbeca?_0x31d888[_0xf878('0x1a')]:_0x35ff2d[_0xf878('0x17')]+_0x35ff2d[_0xf878('0x19')];var _0x3714f6;if(_0x2b2b54>=_0x3c5dee){_0x2b2b54=_0x3c5dee;_0x3714f6=0xc8;}else{_0x3714f6=0xce;}_0x4c0948[_0xf878('0x16')](_0x3714f6);return _0x4c0948[_0xf878('0x1b')]('Content-Range',_0x3b2e1b+'-'+_0x2b2b54+'/'+_0x3c5dee)[_0xf878('0x1c')](_0x31d888);}return null;};}function patchUpdates(_0x140866){return function(_0x250f85){try{jsonpatch['apply'](_0x250f85,_0x140866,!![]);}catch(_0x432e5d){return BPromise[_0xf878('0x1d')](_0x432e5d);}return _0x250f85[_0xf878('0x1e')]();};}function saveUpdates(_0x392822,_0x22d884){return function(_0x442450){if(_0x442450){return _0x442450[_0xf878('0x1f')](_0x392822)[_0xf878('0x20')](function(_0x212436){return _0x212436;});}return null;};}function removeEntity(_0x1a6506,_0x45e61f){return function(_0x566995){if(_0x566995){return _0x566995[_0xf878('0x21')]()['then'](function(){_0x1a6506[_0xf878('0x16')](0xcc)[_0xf878('0x22')]();});}};}function handleEntityNotFound(_0x35b3b4,_0x280036){return function(_0x20449e){if(!_0x20449e){_0x35b3b4['sendStatus'](0x194);}return _0x20449e;};}function handleError(_0x58c713,_0x59ba7b){_0x59ba7b=_0x59ba7b||0x1f4;return function(_0x242926){logger[_0xf878('0x23')](_0x242926[_0xf878('0x24')]);if(_0x242926['name']){delete _0x242926[_0xf878('0x25')];}_0x58c713[_0xf878('0x16')](_0x59ba7b)[_0xf878('0x26')](_0x242926);};}exports[_0xf878('0x27')]=function(_0x41dd55,_0x5aff46){var _0x502322={'raw':!![],'where':{'id':_0x41dd55[_0xf878('0x28')]['id']}},_0x9a127d={};_0x9a127d['model']=_[_0xf878('0x29')](db['ChatApplication'][_0xf878('0x2a')]);_0x9a127d['query']=_[_0xf878('0x29')](_0x41dd55['query']);_0x9a127d[_0xf878('0x2b')]=_['intersection'](_0x9a127d[_0xf878('0x2c')],_0x9a127d[_0xf878('0x2d')]);_0x502322[_0xf878('0x2e')]=_[_0xf878('0x2f')](_0x9a127d[_0xf878('0x2c')],qs[_0xf878('0x30')](_0x41dd55['query'][_0xf878('0x30')]));_0x502322[_0xf878('0x2e')]=_0x502322[_0xf878('0x2e')][_0xf878('0x31')]?_0x502322[_0xf878('0x2e')]:_0x9a127d['model'];if(_0x41dd55[_0xf878('0x2d')][_0xf878('0x32')]){_0x502322['include']=[{'all':!![]}];}_0x502322=_[_0xf878('0x33')]({},_0x502322,_0x41dd55[_0xf878('0x34')]);return db[_0xf878('0x35')][_0xf878('0x36')](_0x502322)[_0xf878('0x20')](handleEntityNotFound(_0x5aff46,null))['then'](respondWithResult(_0x5aff46,null))[_0xf878('0x37')](handleError(_0x5aff46,null));};exports[_0xf878('0x1f')]=function(_0x2eb76d,_0x129805){if(_0x2eb76d['body']['id']){delete _0x2eb76d[_0xf878('0x38')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x2eb76d[_0xf878('0x28')]['id']}})[_0xf878('0x20')](handleEntityNotFound(_0x129805,null))[_0xf878('0x20')](saveUpdates(_0x2eb76d[_0xf878('0x38')],null))[_0xf878('0x20')](respondWithResult(_0x129805,null))['catch'](handleError(_0x129805,null));};exports[_0xf878('0x21')]=function(_0x511851,_0x4ae2cf){return db[_0xf878('0x35')]['find']({'where':{'id':_0x511851[_0xf878('0x28')]['id']}})[_0xf878('0x20')](handleEntityNotFound(_0x4ae2cf,null))['then'](removeEntity(_0x4ae2cf,null))[_0xf878('0x37')](handleError(_0x4ae2cf,null));};
\ No newline at end of file
+var _0x12fd=['util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','stack','name','show','params','ChatApplication','query','model','attributes','intersection','includeAll','include','merge','options','body','find','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x12fd,0x199));var _0xd12f=function(_0xc7b9d8,_0xfee50c){_0xc7b9d8=_0xc7b9d8-0x0;var _0x4aa9b3=_0x12fd[_0xc7b9d8];return _0x4aa9b3;};'use strict';var emlformat=require(_0xd12f('0x0'));var rimraf=require(_0xd12f('0x1'));var zipdir=require(_0xd12f('0x2'));var jsonpatch=require(_0xd12f('0x3'));var rp=require(_0xd12f('0x4'));var moment=require('moment');var BPromise=require(_0xd12f('0x5'));var Mustache=require(_0xd12f('0x6'));var util=require(_0xd12f('0x7'));var path=require(_0xd12f('0x8'));var sox=require(_0xd12f('0x9'));var csv=require(_0xd12f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd12f('0xb'));var _=require('lodash');var squel=require(_0xd12f('0xc'));var crypto=require(_0xd12f('0xd'));var jsforce=require(_0xd12f('0xe'));var deskjs=require(_0xd12f('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd12f('0x10'));var Papa=require('papaparse');var Redis=require(_0xd12f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd12f('0x12'));var logger=require(_0xd12f('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd12f('0x14'))['db'];function respondWithStatusCode(_0x5add68,_0x1a5818){_0x1a5818=_0x1a5818||0xcc;return function(_0x16f77b){if(_0x16f77b){return _0x5add68['sendStatus'](_0x1a5818);}return _0x5add68[_0xd12f('0x15')](_0x1a5818)[_0xd12f('0x16')]();};}function respondWithResult(_0x59d592,_0x5d686e){_0x5d686e=_0x5d686e||0xc8;return function(_0x49afdf){if(_0x49afdf){return _0x59d592[_0xd12f('0x15')](_0x5d686e)[_0xd12f('0x17')](_0x49afdf);}};}function respondWithFilteredResult(_0x98947b,_0xb6233a){return function(_0x18a844){if(_0x18a844){var _0x60b06a=typeof _0xb6233a[_0xd12f('0x18')]===_0xd12f('0x19')&&typeof _0xb6233a[_0xd12f('0x1a')]==='undefined';var _0x4b00a2=_0x18a844[_0xd12f('0x1b')];var _0x45ff4d=_0x60b06a?0x0:_0xb6233a['offset'];var _0x14c619=_0x60b06a?_0x18a844[_0xd12f('0x1b')]:_0xb6233a[_0xd12f('0x18')]+_0xb6233a['limit'];var _0x5c4a4c;if(_0x14c619>=_0x4b00a2){_0x14c619=_0x4b00a2;_0x5c4a4c=0xc8;}else{_0x5c4a4c=0xce;}_0x98947b[_0xd12f('0x15')](_0x5c4a4c);return _0x98947b[_0xd12f('0x1c')](_0xd12f('0x1d'),_0x45ff4d+'-'+_0x14c619+'/'+_0x4b00a2)[_0xd12f('0x17')](_0x18a844);}return null;};}function patchUpdates(_0x410073){return function(_0x354cf0){try{jsonpatch['apply'](_0x354cf0,_0x410073,!![]);}catch(_0x2cb62b){return BPromise[_0xd12f('0x1e')](_0x2cb62b);}return _0x354cf0[_0xd12f('0x1f')]();};}function saveUpdates(_0x52f59d,_0x3a0c41){return function(_0x3c0aed){if(_0x3c0aed){return _0x3c0aed[_0xd12f('0x20')](_0x52f59d)[_0xd12f('0x21')](function(_0xd40a69){return _0xd40a69;});}return null;};}function removeEntity(_0x1d5168,_0x42eb92){return function(_0x322f78){if(_0x322f78){return _0x322f78[_0xd12f('0x22')]()[_0xd12f('0x21')](function(){_0x1d5168[_0xd12f('0x15')](0xcc)[_0xd12f('0x16')]();});}};}function handleEntityNotFound(_0x2218fe,_0x3d55d2){return function(_0x315276){if(!_0x315276){_0x2218fe[_0xd12f('0x23')](0x194);}return _0x315276;};}function handleError(_0x13fe26,_0x306c0a){_0x306c0a=_0x306c0a||0x1f4;return function(_0x3d71be){logger['error'](_0x3d71be[_0xd12f('0x24')]);if(_0x3d71be['name']){delete _0x3d71be[_0xd12f('0x25')];}_0x13fe26[_0xd12f('0x15')](_0x306c0a)['send'](_0x3d71be);};}exports[_0xd12f('0x26')]=function(_0x59b166,_0x11b590){var _0x31ae8e={'raw':!![],'where':{'id':_0x59b166[_0xd12f('0x27')]['id']}},_0x3418de={};_0x3418de['model']=_['keys'](db[_0xd12f('0x28')]['rawAttributes']);_0x3418de[_0xd12f('0x29')]=_['keys'](_0x59b166['query']);_0x3418de['filters']=_['intersection'](_0x3418de[_0xd12f('0x2a')],_0x3418de['query']);_0x31ae8e[_0xd12f('0x2b')]=_[_0xd12f('0x2c')](_0x3418de[_0xd12f('0x2a')],qs['fields'](_0x59b166[_0xd12f('0x29')]['fields']));_0x31ae8e[_0xd12f('0x2b')]=_0x31ae8e['attributes']['length']?_0x31ae8e[_0xd12f('0x2b')]:_0x3418de[_0xd12f('0x2a')];if(_0x59b166[_0xd12f('0x29')][_0xd12f('0x2d')]){_0x31ae8e[_0xd12f('0x2e')]=[{'all':!![]}];}_0x31ae8e=_[_0xd12f('0x2f')]({},_0x31ae8e,_0x59b166[_0xd12f('0x30')]);return db[_0xd12f('0x28')]['find'](_0x31ae8e)['then'](handleEntityNotFound(_0x11b590,null))[_0xd12f('0x21')](respondWithResult(_0x11b590,null))['catch'](handleError(_0x11b590,null));};exports[_0xd12f('0x20')]=function(_0x185a7c,_0x4bb940){if(_0x185a7c[_0xd12f('0x31')]['id']){delete _0x185a7c[_0xd12f('0x31')]['id'];}return db[_0xd12f('0x28')]['find']({'where':{'id':_0x185a7c['params']['id']}})['then'](handleEntityNotFound(_0x4bb940,null))['then'](saveUpdates(_0x185a7c[_0xd12f('0x31')],null))[_0xd12f('0x21')](respondWithResult(_0x4bb940,null))['catch'](handleError(_0x4bb940,null));};exports[_0xd12f('0x22')]=function(_0x2e30e0,_0x1a06c5){return db['ChatApplication'][_0xd12f('0x32')]({'where':{'id':_0x2e30e0['params']['id']}})['then'](handleEntityNotFound(_0x1a06c5,null))['then'](removeEntity(_0x1a06c5,null))[_0xd12f('0x33')](handleError(_0x1a06c5,null));};
\ No newline at end of file
index b5b184d..708b81c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a1=['../../config/environment','exports','define','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x5a75e7,_0x3ad506){var _0x15c695=function(_0x4ba933){while(--_0x4ba933){_0x5a75e7['push'](_0x5a75e7['shift']());}};_0x15c695(++_0x3ad506);}(_0xd8a1,0x111));var _0x1d8a=function(_0x5c1803,_0xfa65d6){_0x5c1803=_0x5c1803-0x0;var _0x2d3856=_0xd8a1[_0x5c1803];return _0x2d3856;};'use strict';var _=require(_0x1d8a('0x0'));var util=require(_0x1d8a('0x1'));var logger=require(_0x1d8a('0x2'))('api');var moment=require(_0x1d8a('0x3'));var BPromise=require(_0x1d8a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1d8a('0x5'));var rimraf=require(_0x1d8a('0x6'));var config=require(_0x1d8a('0x7'));var attributes=require('./chatApplication.attributes');module[_0x1d8a('0x8')]=function(_0x18f057,_0x3d7b2c){return _0x18f057[_0x1d8a('0x9')]('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x60cb=['bluebird','path','rimraf','../../config/environment','./chatApplication.attributes','exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x60cb,0x172));var _0xb60c=function(_0x4a3bdb,_0x35ace0){_0x4a3bdb=_0x4a3bdb-0x0;var _0x4c1626=_0x60cb[_0x4a3bdb];return _0x4c1626;};'use strict';var _=require(_0xb60c('0x0'));var util=require('util');var logger=require(_0xb60c('0x1'))('api');var moment=require('moment');var BPromise=require(_0xb60c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb60c('0x3'));var rimraf=require(_0xb60c('0x4'));var config=require(_0xb60c('0x5'));var attributes=require(_0xb60c('0x6'));module[_0xb60c('0x7')]=function(_0x467dcb,_0x177339){return _0x467dcb[_0xb60c('0x8')]('ChatApplication',attributes,{'tableName':_0xb60c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb60c('0xa'),'collate':_0xb60c('0xb')});};
\ No newline at end of file
index bf9e5ce..0f23d9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x174e=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','ChatApplication,\x20%s,\x20%s','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash'];(function(_0x3a43d0,_0x1340b0){var _0xdd909a=function(_0x4991ac){while(--_0x4991ac){_0x3a43d0['push'](_0x3a43d0['shift']());}};_0xdd909a(++_0x1340b0);}(_0x174e,0x1af));var _0xe174=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x174e[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xe174('0x0'));var util=require(_0xe174('0x1'));var moment=require(_0xe174('0x2'));var BPromise=require('bluebird');var rs=require(_0xe174('0x3'));var fs=require('fs');var Redis=require(_0xe174('0x4'));var db=require(_0xe174('0x5'))['db'];var utils=require(_0xe174('0x6'));var logger=require(_0xe174('0x7'))(_0xe174('0x8'));var config=require(_0xe174('0x9'));var jayson=require(_0xe174('0xa'));var client=jayson[_0xe174('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x478c81,_0x3664fd,_0x50d322){return new BPromise(function(_0x4ba490,_0x5b70aa){return client[_0xe174('0xc')](_0x478c81,_0x50d322)['then'](function(_0x375dcf){logger[_0xe174('0xd')](_0xe174('0xe'),_0x3664fd,'request\x20sent');logger[_0xe174('0xf')](_0xe174('0x10'),_0x3664fd,_0xe174('0x11'),JSON[_0xe174('0x12')](_0x375dcf));if(_0x375dcf[_0xe174('0x13')]){if(_0x375dcf[_0xe174('0x13')][_0xe174('0x14')]===0x1f4){logger[_0xe174('0x13')](_0xe174('0xe'),_0x3664fd,_0x375dcf[_0xe174('0x13')]['message']);return _0x5b70aa(_0x375dcf['error'][_0xe174('0x15')]);}logger[_0xe174('0x13')](_0xe174('0xe'),_0x3664fd,_0x375dcf['error'][_0xe174('0x15')]);return _0x4ba490(_0x375dcf['error'][_0xe174('0x15')]);}else{logger[_0xe174('0xd')]('ChatApplication,\x20%s,\x20%s',_0x3664fd,'request\x20sent');_0x4ba490(_0x375dcf[_0xe174('0x16')][_0xe174('0x15')]);}})[_0xe174('0x17')](function(_0x4f8eb1){logger[_0xe174('0x13')]('ChatApplication,\x20%s,\x20%s',_0x3664fd,_0x4f8eb1);_0x5b70aa(_0x4f8eb1);});});}
\ No newline at end of file
+var _0x0195=['util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x4eb4c4,_0x35e92b){var _0x35e842=function(_0x1fdb48){while(--_0x1fdb48){_0x4eb4c4['push'](_0x4eb4c4['shift']());}};_0x35e842(++_0x35e92b);}(_0x0195,0x103));var _0x5019=function(_0x3dbf6c,_0x55cb15){_0x3dbf6c=_0x3dbf6c-0x0;var _0x46d71f=_0x0195[_0x3dbf6c];return _0x46d71f;};'use strict';var _=require(_0x5019('0x0'));var util=require(_0x5019('0x1'));var moment=require(_0x5019('0x2'));var BPromise=require(_0x5019('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5019('0x4'))['db'];var utils=require(_0x5019('0x5'));var logger=require(_0x5019('0x6'))('rpc');var config=require(_0x5019('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3e68d8,_0x26c086,_0xf5e11){return new BPromise(function(_0x4cb336,_0xfcb753){return client['request'](_0x3e68d8,_0xf5e11)[_0x5019('0x8')](function(_0x3b49a0){logger[_0x5019('0x9')](_0x5019('0xa'),_0x26c086,_0x5019('0xb'));logger[_0x5019('0xc')](_0x5019('0xd'),_0x26c086,'request\x20sent',JSON[_0x5019('0xe')](_0x3b49a0));if(_0x3b49a0[_0x5019('0xf')]){if(_0x3b49a0[_0x5019('0xf')][_0x5019('0x10')]===0x1f4){logger['error'](_0x5019('0xa'),_0x26c086,_0x3b49a0[_0x5019('0xf')][_0x5019('0x11')]);return _0xfcb753(_0x3b49a0['error'][_0x5019('0x11')]);}logger[_0x5019('0xf')](_0x5019('0xa'),_0x26c086,_0x3b49a0['error'][_0x5019('0x11')]);return _0x4cb336(_0x3b49a0[_0x5019('0xf')][_0x5019('0x11')]);}else{logger[_0x5019('0x9')](_0x5019('0xa'),_0x26c086,_0x5019('0xb'));_0x4cb336(_0x3b49a0[_0x5019('0x12')][_0x5019('0x11')]);}})[_0x5019('0x13')](function(_0x4a411b){logger[_0x5019('0xf')]('ChatApplication,\x20%s,\x20%s',_0x26c086,_0x4a411b);_0xfcb753(_0x4a411b);});});}
\ No newline at end of file
index 8e5e290..e01bca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe837=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','delete','isAuthenticated','destroy','exports','multer'];(function(_0x1e853c,_0x2c6577){var _0x13cb3b=function(_0x3fac18){while(--_0x3fac18){_0x1e853c['push'](_0x1e853c['shift']());}};_0x13cb3b(++_0x2c6577);}(_0xe837,0xd7));var _0x7e83=function(_0x1098db,_0x39ba6b){_0x1098db=_0x1098db-0x0;var _0x14f090=_0xe837[_0x1098db];return _0x14f090;};'use strict';var multer=require(_0x7e83('0x0'));var util=require(_0x7e83('0x1'));var path=require(_0x7e83('0x2'));var timeout=require(_0x7e83('0x3'));var express=require(_0x7e83('0x4'));var router=express[_0x7e83('0x5')]();var fs_extra=require(_0x7e83('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7e83('0x7'));var config=require(_0x7e83('0x8'));var controller=require(_0x7e83('0x9'));router[_0x7e83('0xa')](_0x7e83('0xb'),auth['isAuthenticated'](),controller[_0x7e83('0xc')]);router[_0x7e83('0xd')](_0x7e83('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x7e83('0xe')]('/:id',auth[_0x7e83('0xf')](),controller[_0x7e83('0x10')]);module[_0x7e83('0x11')]=router;
\ No newline at end of file
+var _0xccea=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports','express'];(function(_0x290fa6,_0x16d017){var _0x47f1f3=function(_0x2b5eb8){while(--_0x2b5eb8){_0x290fa6['push'](_0x290fa6['shift']());}};_0x47f1f3(++_0x16d017);}(_0xccea,0x1df));var _0xacce=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xccea[_0x102e37];return _0x35a07c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xacce('0x0'));var router=express[_0xacce('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xacce('0x2'));var interaction=require(_0xacce('0x3'));var config=require(_0xacce('0x4'));var controller=require(_0xacce('0x5'));router[_0xacce('0x6')](_0xacce('0x7'),auth[_0xacce('0x8')](),controller[_0xacce('0x9')]);router[_0xacce('0xa')](_0xacce('0x7'),auth[_0xacce('0x8')](),controller[_0xacce('0xb')]);router[_0xacce('0xc')]('/:id',auth[_0xacce('0x8')](),controller[_0xacce('0xd')]);module[_0xacce('0xe')]=router;
\ No newline at end of file
index 41b8875..0a7ffbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34a5=['sequelize','BOOLEAN'];(function(_0x590b63,_0x14debb){var _0x3c9380=function(_0x58fc67){while(--_0x58fc67){_0x590b63['push'](_0x590b63['shift']());}};_0x3c9380(++_0x14debb);}(_0x34a5,0xc2));var _0x534a=function(_0x290432,_0x26215a){_0x290432=_0x290432-0x0;var _0x2a8bc6=_0x34a5[_0x290432];return _0x2a8bc6;};'use strict';var Sequelize=require(_0x534a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x534a('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6c20=['BOOLEAN','sequelize','exports'];(function(_0x2d1016,_0x4db53d){var _0x5ca283=function(_0x593d8b){while(--_0x593d8b){_0x2d1016['push'](_0x2d1016['shift']());}};_0x5ca283(++_0x4db53d);}(_0x6c20,0x88));var _0x06c2=function(_0xbdedcd,_0x4064d8){_0xbdedcd=_0xbdedcd-0x0;var _0x32d3d1=_0x6c20[_0xbdedcd];return _0x32d3d1;};'use strict';var Sequelize=require(_0x06c2('0x0'));module[_0x06c2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x06c2('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 357a847..60a88c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6338=['attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','map','options','includeAll','findAll','rows','catch','params','include','find','create','body','destroy','describe','getUnread','toInteger','addMembers','ids','omit','findOne','User','rawAttributes','order','getMembers','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','offset','limit','undefined','count','json','apply','reject','save','update','then','end','error','stack','name','send','index','ChatGroup','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6338,0x1ba));var _0x8633=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6338[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8633('0x0'));var zipdir=require(_0x8633('0x1'));var jsonpatch=require(_0x8633('0x2'));var rp=require(_0x8633('0x3'));var moment=require(_0x8633('0x4'));var BPromise=require(_0x8633('0x5'));var Mustache=require(_0x8633('0x6'));var util=require(_0x8633('0x7'));var path=require(_0x8633('0x8'));var sox=require(_0x8633('0x9'));var csv=require(_0x8633('0xa'));var ejs=require(_0x8633('0xb'));var fs=require('fs');var fs_extra=require(_0x8633('0xc'));var _=require(_0x8633('0xd'));var squel=require(_0x8633('0xe'));var crypto=require(_0x8633('0xf'));var jsforce=require(_0x8633('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x8633('0xa'));var querystring=require(_0x8633('0x11'));var Papa=require(_0x8633('0x12'));var Redis=require('ioredis');var authService=require(_0x8633('0x13'));var qs=require(_0x8633('0x14'));var as=require(_0x8633('0x15'));var hardwareService=require(_0x8633('0x16'));var logger=require(_0x8633('0x17'))('api');var utils=require(_0x8633('0x18'));var config=require(_0x8633('0x19'));var licenseUtil=require(_0x8633('0x1a'));var db=require('../../mysqldb')['db'];config[_0x8633('0x1b')]=_['defaults'](config[_0x8633('0x1b')],{'host':_0x8633('0x1c'),'port':0x18eb});var socket=require(_0x8633('0x1d'))(new Redis(config['redis']));require('./chatGroup.socket')[_0x8633('0x1e')](socket);function respondWithStatusCode(_0x9ae548,_0x543f3f){_0x543f3f=_0x543f3f||0xcc;return function(_0x17b1c6){if(_0x17b1c6){return _0x9ae548[_0x8633('0x1f')](_0x543f3f);}return _0x9ae548[_0x8633('0x20')](_0x543f3f)['end']();};}function respondWithResult(_0x33114c,_0x56cc24){_0x56cc24=_0x56cc24||0xc8;return function(_0x46806f){if(_0x46806f){return _0x33114c[_0x8633('0x20')](_0x56cc24)['json'](_0x46806f);}};}function respondWithFilteredResult(_0x11fc06,_0x569958){return function(_0x5f16e1){if(_0x5f16e1){var _0xbe855d=typeof _0x569958[_0x8633('0x21')]==='undefined'&&typeof _0x569958[_0x8633('0x22')]===_0x8633('0x23');var _0x7d214d=_0x5f16e1[_0x8633('0x24')];var _0x410831=_0xbe855d?0x0:_0x569958[_0x8633('0x21')];var _0x4ab476=_0xbe855d?_0x5f16e1['count']:_0x569958[_0x8633('0x21')]+_0x569958[_0x8633('0x22')];var _0x23931d;if(_0x4ab476>=_0x7d214d){_0x4ab476=_0x7d214d;_0x23931d=0xc8;}else{_0x23931d=0xce;}_0x11fc06[_0x8633('0x20')](_0x23931d);return _0x11fc06['set']('Content-Range',_0x410831+'-'+_0x4ab476+'/'+_0x7d214d)[_0x8633('0x25')](_0x5f16e1);}return null;};}function patchUpdates(_0x1e190e){return function(_0x3cffd3){try{jsonpatch[_0x8633('0x26')](_0x3cffd3,_0x1e190e,!![]);}catch(_0x37ae94){return BPromise[_0x8633('0x27')](_0x37ae94);}return _0x3cffd3[_0x8633('0x28')]();};}function saveUpdates(_0x20e2dd,_0x1bca7f){return function(_0x983ef6){if(_0x983ef6){return _0x983ef6[_0x8633('0x29')](_0x20e2dd)['then'](function(_0x26ff31){return _0x26ff31;});}return null;};}function removeEntity(_0x51be86,_0x248859){return function(_0x1ec8cb){if(_0x1ec8cb){return _0x1ec8cb['destroy']()[_0x8633('0x2a')](function(){_0x51be86['status'](0xcc)[_0x8633('0x2b')]();});}};}function handleEntityNotFound(_0x38ace0,_0x46c20e){return function(_0x5168d5){if(!_0x5168d5){_0x38ace0[_0x8633('0x1f')](0x194);}return _0x5168d5;};}function handleError(_0x6d1328,_0x239d30){_0x239d30=_0x239d30||0x1f4;return function(_0x3f60a8){logger[_0x8633('0x2c')](_0x3f60a8[_0x8633('0x2d')]);if(_0x3f60a8[_0x8633('0x2e')]){delete _0x3f60a8[_0x8633('0x2e')];}_0x6d1328[_0x8633('0x20')](_0x239d30)[_0x8633('0x2f')](_0x3f60a8);};}exports[_0x8633('0x30')]=function(_0x404971,_0x2c19d6){var _0x34d823={},_0x1a9c65={},_0x332def={'count':0x0,'rows':[]};var _0x397687=_['map'](db[_0x8633('0x31')]['rawAttributes'],function(_0x1f3053){return{'name':_0x1f3053[_0x8633('0x32')],'type':_0x1f3053[_0x8633('0x33')][_0x8633('0x34')]};});_0x1a9c65[_0x8633('0x35')]=_['map'](_0x397687,_0x8633('0x2e'));_0x1a9c65[_0x8633('0x36')]=_[_0x8633('0x37')](_0x404971[_0x8633('0x36')]);_0x1a9c65[_0x8633('0x38')]=_[_0x8633('0x39')](_0x1a9c65['model'],_0x1a9c65[_0x8633('0x36')]);_0x34d823[_0x8633('0x3a')]=_['intersection'](_0x1a9c65[_0x8633('0x35')],qs[_0x8633('0x3b')](_0x404971[_0x8633('0x36')]['fields']));_0x34d823[_0x8633('0x3a')]=_0x34d823[_0x8633('0x3a')][_0x8633('0x3c')]?_0x34d823[_0x8633('0x3a')]:_0x1a9c65[_0x8633('0x35')];if(!_0x404971['query'][_0x8633('0x3d')](_0x8633('0x3e'))){_0x34d823[_0x8633('0x22')]=qs[_0x8633('0x22')](_0x404971['query']['limit']);_0x34d823[_0x8633('0x21')]=qs[_0x8633('0x21')](_0x404971[_0x8633('0x36')][_0x8633('0x21')]);}_0x34d823['order']=qs[_0x8633('0x3f')](_0x404971['query']['sort']);_0x34d823['where']=qs[_0x8633('0x38')](_[_0x8633('0x40')](_0x404971['query'],_0x1a9c65['filters']),_0x397687);if(_0x404971[_0x8633('0x36')][_0x8633('0x41')]){_0x34d823['where']=_[_0x8633('0x42')](_0x34d823[_0x8633('0x43')],{'$or':_[_0x8633('0x44')](_0x397687,function(_0x15e26e){if(_0x15e26e[_0x8633('0x33')]!=='VIRTUAL'){var _0x4839e9={};_0x4839e9[_0x15e26e[_0x8633('0x2e')]]={'$like':'%'+_0x404971[_0x8633('0x36')][_0x8633('0x41')]+'%'};return _0x4839e9;}})});}_0x34d823=_[_0x8633('0x42')]({},_0x34d823,_0x404971[_0x8633('0x45')]);var _0x10477f={'where':_0x34d823[_0x8633('0x43')]};return db[_0x8633('0x31')][_0x8633('0x24')](_0x10477f)[_0x8633('0x2a')](function(_0x1b40b2){_0x332def[_0x8633('0x24')]=_0x1b40b2;if(_0x404971['query'][_0x8633('0x46')]){_0x34d823['include']=[{'all':!![]}];}return db['ChatGroup'][_0x8633('0x47')](_0x34d823);})['then'](function(_0xc451d0){_0x332def[_0x8633('0x48')]=_0xc451d0;return _0x332def;})[_0x8633('0x2a')](respondWithFilteredResult(_0x2c19d6,_0x34d823))[_0x8633('0x49')](handleError(_0x2c19d6,null));};exports['show']=function(_0x594920,_0x398053){var _0x467125={'raw':!![],'where':{'id':_0x594920[_0x8633('0x4a')]['id']}},_0x13eeb9={};_0x13eeb9[_0x8633('0x35')]=_[_0x8633('0x37')](db['ChatGroup']['rawAttributes']);_0x13eeb9[_0x8633('0x36')]=_['keys'](_0x594920[_0x8633('0x36')]);_0x13eeb9[_0x8633('0x38')]=_[_0x8633('0x39')](_0x13eeb9['model'],_0x13eeb9['query']);_0x467125[_0x8633('0x3a')]=_[_0x8633('0x39')](_0x13eeb9['model'],qs[_0x8633('0x3b')](_0x594920[_0x8633('0x36')][_0x8633('0x3b')]));_0x467125[_0x8633('0x3a')]=_0x467125['attributes'][_0x8633('0x3c')]?_0x467125[_0x8633('0x3a')]:_0x13eeb9[_0x8633('0x35')];if(_0x594920[_0x8633('0x36')][_0x8633('0x46')]){_0x467125[_0x8633('0x4b')]=[{'all':!![]}];}_0x467125=_[_0x8633('0x42')]({},_0x467125,_0x594920[_0x8633('0x45')]);return db[_0x8633('0x31')][_0x8633('0x4c')](_0x467125)[_0x8633('0x2a')](handleEntityNotFound(_0x398053,null))[_0x8633('0x2a')](respondWithResult(_0x398053,null))['catch'](handleError(_0x398053,null));};exports[_0x8633('0x4d')]=function(_0x4d563b,_0x2762c6){return db[_0x8633('0x31')][_0x8633('0x4d')](_0x4d563b[_0x8633('0x4e')],{})[_0x8633('0x2a')](respondWithResult(_0x2762c6,0xc9))[_0x8633('0x49')](handleError(_0x2762c6,null));};exports[_0x8633('0x29')]=function(_0xe564d6,_0x45477d){if(_0xe564d6[_0x8633('0x4e')]['id']){delete _0xe564d6[_0x8633('0x4e')]['id'];}return db[_0x8633('0x31')][_0x8633('0x4c')]({'where':{'id':_0xe564d6[_0x8633('0x4a')]['id']}})[_0x8633('0x2a')](handleEntityNotFound(_0x45477d,null))[_0x8633('0x2a')](saveUpdates(_0xe564d6[_0x8633('0x4e')],null))[_0x8633('0x2a')](respondWithResult(_0x45477d,null))[_0x8633('0x49')](handleError(_0x45477d,null));};exports[_0x8633('0x4f')]=function(_0x1aa755,_0x2cc05c){return db[_0x8633('0x31')]['find']({'where':{'id':_0x1aa755[_0x8633('0x4a')]['id']}})[_0x8633('0x2a')](handleEntityNotFound(_0x2cc05c,null))['then'](removeEntity(_0x2cc05c,null))[_0x8633('0x49')](handleError(_0x2cc05c,null));};exports['describe']=function(_0x1d6e95,_0x1746e7){return db['ChatGroup'][_0x8633('0x50')]()[_0x8633('0x2a')](respondWithResult(_0x1746e7,null))['catch'](handleError(_0x1746e7,null));};exports[_0x8633('0x51')]=function(_0x4dddfa,_0x1f15de,_0x265d07){return db['ChatInternalMessage'][_0x8633('0x24')]({'where':{'ChatGroupId':_0x4dddfa[_0x8633('0x4a')]['id'],'ToId':_0x4dddfa['user']['id'],'read':![]}})[_0x8633('0x2a')](function(_0x1a6239){return{'id':_[_0x8633('0x52')](_0x4dddfa[_0x8633('0x4a')]['id']),'count':_0x1a6239};})['then'](respondWithResult(_0x1f15de,null))[_0x8633('0x49')](handleError(_0x1f15de,null));};exports[_0x8633('0x53')]=function(_0x447416,_0x4eca71,_0x354115){return db['ChatGroup'][_0x8633('0x4c')]({'where':{'id':_0x447416[_0x8633('0x4a')]['id']}})[_0x8633('0x2a')](handleEntityNotFound(_0x4eca71,null))[_0x8633('0x2a')](function(_0x540bba){if(_0x540bba){return _0x540bba[_0x8633('0x53')](_0x447416[_0x8633('0x4e')][_0x8633('0x54')],_[_0x8633('0x55')](_0x447416[_0x8633('0x4e')],[_0x8633('0x54'),'id'])||{});}})[_0x8633('0x2a')](respondWithResult(_0x4eca71,null))[_0x8633('0x49')](handleError(_0x4eca71,null));};exports['getMembers']=function(_0x1b111e,_0xe40643,_0x107879){var _0x1cb52e={};var _0x49a78c={};var _0x2bd231;var _0x2c3e81;return db[_0x8633('0x31')][_0x8633('0x56')]({'where':{'id':_0x1b111e[_0x8633('0x4a')]['id']}})[_0x8633('0x2a')](handleEntityNotFound(_0xe40643,null))['then'](function(_0xc51e66){if(_0xc51e66){_0x2bd231=_0xc51e66;_0x49a78c[_0x8633('0x35')]=_[_0x8633('0x37')](db[_0x8633('0x57')][_0x8633('0x58')]);_0x49a78c[_0x8633('0x36')]=_[_0x8633('0x37')](_0x1b111e[_0x8633('0x36')]);_0x49a78c['filters']=_[_0x8633('0x39')](_0x49a78c['model'],_0x49a78c[_0x8633('0x36')]);_0x1cb52e[_0x8633('0x3a')]=_['intersection'](_0x49a78c[_0x8633('0x35')],qs[_0x8633('0x3b')](_0x1b111e[_0x8633('0x36')]['fields']));_0x1cb52e[_0x8633('0x3a')]=_0x1cb52e[_0x8633('0x3a')][_0x8633('0x3c')]?_0x1cb52e[_0x8633('0x3a')]:_0x49a78c[_0x8633('0x35')];_0x1cb52e[_0x8633('0x59')]=qs[_0x8633('0x3f')](_0x1b111e[_0x8633('0x36')][_0x8633('0x3f')]);_0x1cb52e['where']=qs[_0x8633('0x38')](_[_0x8633('0x40')](_0x1b111e[_0x8633('0x36')],_0x49a78c[_0x8633('0x38')]));if(_0x1b111e[_0x8633('0x36')][_0x8633('0x41')]){_0x1cb52e['where']=_[_0x8633('0x42')](_0x1cb52e['where'],{'$or':_['map'](_0x1cb52e[_0x8633('0x3a')],function(_0x41fb2a){var _0x50760b={};_0x50760b[_0x41fb2a]={'$like':'%'+_0x1b111e['query']['filter']+'%'};return _0x50760b;})});}_0x1cb52e=_[_0x8633('0x42')]({},_0x1cb52e,_0x1b111e['options']);return _0x2bd231['getMembers'](_0x1cb52e);}})[_0x8633('0x2a')](function(_0x2b0043){if(_0x2b0043){_0x2c3e81=_0x2b0043[_0x8633('0x3c')];if(!_0x1b111e[_0x8633('0x36')][_0x8633('0x3d')](_0x8633('0x3e'))){_0x1cb52e['limit']=qs['limit'](_0x1b111e['query'][_0x8633('0x22')]);_0x1cb52e[_0x8633('0x21')]=qs[_0x8633('0x21')](_0x1b111e['query'][_0x8633('0x21')]);}return _0x2bd231[_0x8633('0x5a')](_0x1cb52e);}})[_0x8633('0x2a')](function(_0x575182){if(_0x575182){return _0x575182?{'count':_0x2c3e81,'rows':_0x575182}:null;}})[_0x8633('0x2a')](respondWithResult(_0xe40643,null))[_0x8633('0x49')](handleError(_0xe40643,null));};exports[_0x8633('0x5b')]=function(_0x3c628e,_0x34c501,_0x2b8fbb){return db[_0x8633('0x31')][_0x8633('0x4c')]({'where':{'id':_0x3c628e[_0x8633('0x4a')]['id']}})['then'](handleEntityNotFound(_0x34c501,null))[_0x8633('0x2a')](function(_0x2fac8c){if(_0x2fac8c){return _0x2fac8c[_0x8633('0x5b')](_0x3c628e[_0x8633('0x36')][_0x8633('0x54')]);}})[_0x8633('0x2a')](respondWithStatusCode(_0x34c501,null))[_0x8633('0x49')](handleError(_0x34c501,null));};exports[_0x8633('0x5c')]=function(_0x1360fd,_0x4385fe,_0x42bac1){if(_0x1360fd[_0x8633('0x4e')]['id']){delete _0x1360fd[_0x8633('0x4e')]['id'];}return db[_0x8633('0x31')]['find']({'where':{'id':_0x1360fd['params']['id']}})[_0x8633('0x2a')](handleEntityNotFound(_0x4385fe,null))['then'](function(_0x5cda1d){if(_0x5cda1d){_0x1360fd['body'][_0x8633('0x5d')]=_0x5cda1d['id'];return db[_0x8633('0x5e')][_0x8633('0x4d')](_0x1360fd[_0x8633('0x4e')]);}})[_0x8633('0x2a')](respondWithResult(_0x4385fe,null))['catch'](handleError(_0x4385fe,null));};exports[_0x8633('0x5f')]=function(_0x5031fc,_0x33a609,_0x219346){var _0x2a21af={};var _0x57aab8={};var _0x46bb43;var _0x3853b1;return db[_0x8633('0x31')][_0x8633('0x56')]({'where':{'id':_0x5031fc[_0x8633('0x4a')]['id']}})['then'](handleEntityNotFound(_0x33a609,null))[_0x8633('0x2a')](function(_0x5a4e10){if(_0x5a4e10){_0x46bb43=_0x5a4e10;_0x57aab8[_0x8633('0x35')]=_[_0x8633('0x37')](db['ChatInternalMessage'][_0x8633('0x58')]);_0x57aab8[_0x8633('0x36')]=_[_0x8633('0x37')](_0x5031fc[_0x8633('0x36')]);_0x57aab8['filters']=_[_0x8633('0x39')](_0x57aab8['model'],_0x57aab8[_0x8633('0x36')]);_0x2a21af['attributes']=_['intersection'](_0x57aab8[_0x8633('0x35')],qs['fields'](_0x5031fc[_0x8633('0x36')]['fields']));_0x2a21af[_0x8633('0x3a')]=_0x2a21af[_0x8633('0x3a')][_0x8633('0x3c')]?_0x2a21af[_0x8633('0x3a')]:_0x57aab8[_0x8633('0x35')];_0x2a21af['order']=qs[_0x8633('0x3f')](_0x5031fc[_0x8633('0x36')][_0x8633('0x3f')]);_0x2a21af[_0x8633('0x43')]=qs[_0x8633('0x38')](_[_0x8633('0x40')](_0x5031fc[_0x8633('0x36')],_0x57aab8[_0x8633('0x38')]));if(_0x5031fc[_0x8633('0x36')]['filter']){_0x2a21af[_0x8633('0x43')]=_[_0x8633('0x42')](_0x2a21af[_0x8633('0x43')],{'$or':_[_0x8633('0x44')](_0x2a21af[_0x8633('0x3a')],function(_0x4e49dc){var _0x2c0fb0={};_0x2c0fb0[_0x4e49dc]={'$like':'%'+_0x5031fc[_0x8633('0x36')]['filter']+'%'};return _0x2c0fb0;})});}if(_0x5031fc['query']['$gte']){var _0x4da728=_0x5031fc[_0x8633('0x36')][_0x8633('0x60')][_0x8633('0x61')](',');var _0x3af084={};_0x3af084[_0x4da728[0x0]]={'$gte':moment(_0x4da728[0x1])[_0x8633('0x62')](_0x8633('0x63'))};_0x2a21af[_0x8633('0x43')]=_[_0x8633('0x42')](_0x2a21af[_0x8633('0x43')],_0x3af084);}_0x2a21af=_[_0x8633('0x42')]({},_0x2a21af,_0x5031fc[_0x8633('0x45')]);return _0x46bb43[_0x8633('0x5f')](_0x2a21af);}})[_0x8633('0x2a')](function(_0x3a889a){if(_0x3a889a){_0x3853b1=_0x3a889a[_0x8633('0x3c')];if(!_0x5031fc[_0x8633('0x36')][_0x8633('0x3d')](_0x8633('0x3e'))){_0x2a21af['limit']=qs[_0x8633('0x22')](_0x5031fc[_0x8633('0x36')][_0x8633('0x22')]);_0x2a21af[_0x8633('0x21')]=qs[_0x8633('0x21')](_0x5031fc['query']['offset']);}return _0x46bb43[_0x8633('0x5f')](_0x2a21af);}})[_0x8633('0x2a')](function(_0x25d01a){if(_0x25d01a){return _0x25d01a?{'count':_0x3853b1,'rows':_0x25d01a}:null;}})[_0x8633('0x2a')](respondWithResult(_0x33a609,null))['catch'](handleError(_0x33a609,null));};
\ No newline at end of file
+var _0x717d=['removeMembers','ids','addMessage','getMessages','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','error','name','send','index','map','ChatGroup','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','order','sort','filter','where','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','intersection','length','includeAll','create','body','find','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','getMembers','findOne','merge','nolimit'];(function(_0x4ee386,_0x1a9032){var _0x42450c=function(_0x51d08c){while(--_0x51d08c){_0x4ee386['push'](_0x4ee386['shift']());}};_0x42450c(++_0x1a9032);}(_0x717d,0xcf));var _0xd717=function(_0x2d364e,_0x301c5e){_0x2d364e=_0x2d364e-0x0;var _0x1b9312=_0x717d[_0x2d364e];return _0x1b9312;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd717('0x0'));var zipdir=require(_0xd717('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd717('0x2'));var moment=require(_0xd717('0x3'));var BPromise=require(_0xd717('0x4'));var Mustache=require(_0xd717('0x5'));var util=require(_0xd717('0x6'));var path=require(_0xd717('0x7'));var sox=require(_0xd717('0x8'));var csv=require(_0xd717('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd717('0xa'));var _=require(_0xd717('0xb'));var squel=require('squel');var crypto=require(_0xd717('0xc'));var jsforce=require(_0xd717('0xd'));var deskjs=require(_0xd717('0xe'));var toCsv=require(_0xd717('0x9'));var querystring=require(_0xd717('0xf'));var Papa=require('papaparse');var Redis=require(_0xd717('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd717('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd717('0x12'));var logger=require(_0xd717('0x13'))(_0xd717('0x14'));var utils=require(_0xd717('0x15'));var config=require(_0xd717('0x16'));var licenseUtil=require(_0xd717('0x17'));var db=require(_0xd717('0x18'))['db'];config['redis']=_['defaults'](config[_0xd717('0x19')],{'host':_0xd717('0x1a'),'port':0x18eb});var socket=require(_0xd717('0x1b'))(new Redis(config['redis']));require(_0xd717('0x1c'))[_0xd717('0x1d')](socket);function respondWithStatusCode(_0x1f3405,_0x57c602){_0x57c602=_0x57c602||0xcc;return function(_0x532698){if(_0x532698){return _0x1f3405[_0xd717('0x1e')](_0x57c602);}return _0x1f3405[_0xd717('0x1f')](_0x57c602)[_0xd717('0x20')]();};}function respondWithResult(_0x260148,_0x4d0a93){_0x4d0a93=_0x4d0a93||0xc8;return function(_0x43af6b){if(_0x43af6b){return _0x260148[_0xd717('0x1f')](_0x4d0a93)[_0xd717('0x21')](_0x43af6b);}};}function respondWithFilteredResult(_0x5d9ee3,_0x4e9aa8){return function(_0x381f34){if(_0x381f34){var _0x45a37a=typeof _0x4e9aa8[_0xd717('0x22')]===_0xd717('0x23')&&typeof _0x4e9aa8[_0xd717('0x24')]==='undefined';var _0x3e4e62=_0x381f34['count'];var _0x5a3d14=_0x45a37a?0x0:_0x4e9aa8[_0xd717('0x22')];var _0x384beb=_0x45a37a?_0x381f34[_0xd717('0x25')]:_0x4e9aa8[_0xd717('0x22')]+_0x4e9aa8[_0xd717('0x24')];var _0xccccc9;if(_0x384beb>=_0x3e4e62){_0x384beb=_0x3e4e62;_0xccccc9=0xc8;}else{_0xccccc9=0xce;}_0x5d9ee3[_0xd717('0x1f')](_0xccccc9);return _0x5d9ee3[_0xd717('0x26')]('Content-Range',_0x5a3d14+'-'+_0x384beb+'/'+_0x3e4e62)[_0xd717('0x21')](_0x381f34);}return null;};}function patchUpdates(_0x348b6f){return function(_0x474fec){try{jsonpatch[_0xd717('0x27')](_0x474fec,_0x348b6f,!![]);}catch(_0x2d2869){return BPromise[_0xd717('0x28')](_0x2d2869);}return _0x474fec[_0xd717('0x29')]();};}function saveUpdates(_0x5a640e,_0x287f32){return function(_0x468413){if(_0x468413){return _0x468413[_0xd717('0x2a')](_0x5a640e)['then'](function(_0x35a78c){return _0x35a78c;});}return null;};}function removeEntity(_0x4b240,_0x1b91a8){return function(_0x47bcc5){if(_0x47bcc5){return _0x47bcc5[_0xd717('0x2b')]()[_0xd717('0x2c')](function(){_0x4b240[_0xd717('0x1f')](0xcc)[_0xd717('0x20')]();});}};}function handleEntityNotFound(_0x997031,_0x181da5){return function(_0x4c4c63){if(!_0x4c4c63){_0x997031[_0xd717('0x1e')](0x194);}return _0x4c4c63;};}function handleError(_0x2ebf55,_0x445e90){_0x445e90=_0x445e90||0x1f4;return function(_0x14bb87){logger[_0xd717('0x2d')](_0x14bb87['stack']);if(_0x14bb87['name']){delete _0x14bb87[_0xd717('0x2e')];}_0x2ebf55[_0xd717('0x1f')](_0x445e90)[_0xd717('0x2f')](_0x14bb87);};}exports[_0xd717('0x30')]=function(_0x32f5e0,_0x1edf09){var _0x322a94={},_0x471496={},_0x48ebc6={'count':0x0,'rows':[]};var _0x205366=_[_0xd717('0x31')](db[_0xd717('0x32')]['rawAttributes'],function(_0x53668a){return{'name':_0x53668a['fieldName'],'type':_0x53668a[_0xd717('0x33')][_0xd717('0x34')]};});_0x471496[_0xd717('0x35')]=_[_0xd717('0x31')](_0x205366,'name');_0x471496[_0xd717('0x36')]=_[_0xd717('0x37')](_0x32f5e0[_0xd717('0x36')]);_0x471496[_0xd717('0x38')]=_['intersection'](_0x471496[_0xd717('0x35')],_0x471496['query']);_0x322a94[_0xd717('0x39')]=_['intersection'](_0x471496['model'],qs[_0xd717('0x3a')](_0x32f5e0[_0xd717('0x36')][_0xd717('0x3a')]));_0x322a94[_0xd717('0x39')]=_0x322a94['attributes']['length']?_0x322a94['attributes']:_0x471496[_0xd717('0x35')];if(!_0x32f5e0[_0xd717('0x36')][_0xd717('0x3b')]('nolimit')){_0x322a94['limit']=qs['limit'](_0x32f5e0[_0xd717('0x36')][_0xd717('0x24')]);_0x322a94[_0xd717('0x22')]=qs['offset'](_0x32f5e0[_0xd717('0x36')][_0xd717('0x22')]);}_0x322a94[_0xd717('0x3c')]=qs[_0xd717('0x3d')](_0x32f5e0[_0xd717('0x36')][_0xd717('0x3d')]);_0x322a94['where']=qs[_0xd717('0x38')](_['pick'](_0x32f5e0[_0xd717('0x36')],_0x471496[_0xd717('0x38')]),_0x205366);if(_0x32f5e0[_0xd717('0x36')][_0xd717('0x3e')]){_0x322a94['where']=_['merge'](_0x322a94[_0xd717('0x3f')],{'$or':_['map'](_0x205366,function(_0x1fe3b9){if(_0x1fe3b9[_0xd717('0x33')]!==_0xd717('0x40')){var _0x10aa09={};_0x10aa09[_0x1fe3b9[_0xd717('0x2e')]]={'$like':'%'+_0x32f5e0['query'][_0xd717('0x3e')]+'%'};return _0x10aa09;}})});}_0x322a94=_['merge']({},_0x322a94,_0x32f5e0[_0xd717('0x41')]);var _0x5e6a11={'where':_0x322a94['where']};return db['ChatGroup'][_0xd717('0x25')](_0x5e6a11)[_0xd717('0x2c')](function(_0x128a1a){_0x48ebc6[_0xd717('0x25')]=_0x128a1a;if(_0x32f5e0[_0xd717('0x36')]['includeAll']){_0x322a94[_0xd717('0x42')]=[{'all':!![]}];}return db['ChatGroup'][_0xd717('0x43')](_0x322a94);})[_0xd717('0x2c')](function(_0x3bdb51){_0x48ebc6[_0xd717('0x44')]=_0x3bdb51;return _0x48ebc6;})[_0xd717('0x2c')](respondWithFilteredResult(_0x1edf09,_0x322a94))[_0xd717('0x45')](handleError(_0x1edf09,null));};exports[_0xd717('0x46')]=function(_0x454563,_0x4848b7){var _0x55325e={'raw':!![],'where':{'id':_0x454563[_0xd717('0x47')]['id']}},_0x4d72bf={};_0x4d72bf[_0xd717('0x35')]=_[_0xd717('0x37')](db[_0xd717('0x32')][_0xd717('0x48')]);_0x4d72bf[_0xd717('0x36')]=_['keys'](_0x454563['query']);_0x4d72bf['filters']=_[_0xd717('0x49')](_0x4d72bf['model'],_0x4d72bf[_0xd717('0x36')]);_0x55325e[_0xd717('0x39')]=_[_0xd717('0x49')](_0x4d72bf[_0xd717('0x35')],qs[_0xd717('0x3a')](_0x454563['query'][_0xd717('0x3a')]));_0x55325e['attributes']=_0x55325e[_0xd717('0x39')][_0xd717('0x4a')]?_0x55325e[_0xd717('0x39')]:_0x4d72bf[_0xd717('0x35')];if(_0x454563[_0xd717('0x36')][_0xd717('0x4b')]){_0x55325e[_0xd717('0x42')]=[{'all':!![]}];}_0x55325e=_['merge']({},_0x55325e,_0x454563[_0xd717('0x41')]);return db[_0xd717('0x32')]['find'](_0x55325e)['then'](handleEntityNotFound(_0x4848b7,null))['then'](respondWithResult(_0x4848b7,null))[_0xd717('0x45')](handleError(_0x4848b7,null));};exports['create']=function(_0x124d55,_0x422099){return db['ChatGroup'][_0xd717('0x4c')](_0x124d55[_0xd717('0x4d')],{})['then'](respondWithResult(_0x422099,0xc9))['catch'](handleError(_0x422099,null));};exports[_0xd717('0x2a')]=function(_0x35c49e,_0x97dd0e){if(_0x35c49e[_0xd717('0x4d')]['id']){delete _0x35c49e['body']['id'];}return db[_0xd717('0x32')][_0xd717('0x4e')]({'where':{'id':_0x35c49e[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x97dd0e,null))[_0xd717('0x2c')](saveUpdates(_0x35c49e[_0xd717('0x4d')],null))['then'](respondWithResult(_0x97dd0e,null))[_0xd717('0x45')](handleError(_0x97dd0e,null));};exports[_0xd717('0x2b')]=function(_0x29727b,_0x21e211){return db[_0xd717('0x32')][_0xd717('0x4e')]({'where':{'id':_0x29727b[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x21e211,null))['then'](removeEntity(_0x21e211,null))['catch'](handleError(_0x21e211,null));};exports[_0xd717('0x4f')]=function(_0x2857c0,_0x395518){return db[_0xd717('0x32')]['describe']()[_0xd717('0x2c')](respondWithResult(_0x395518,null))[_0xd717('0x45')](handleError(_0x395518,null));};exports[_0xd717('0x50')]=function(_0x4ef4cc,_0x1b5875,_0x514282){return db[_0xd717('0x51')]['count']({'where':{'ChatGroupId':_0x4ef4cc[_0xd717('0x47')]['id'],'ToId':_0x4ef4cc[_0xd717('0x52')]['id'],'read':![]}})[_0xd717('0x2c')](function(_0x2832ca){return{'id':_[_0xd717('0x53')](_0x4ef4cc[_0xd717('0x47')]['id']),'count':_0x2832ca};})[_0xd717('0x2c')](respondWithResult(_0x1b5875,null))[_0xd717('0x45')](handleError(_0x1b5875,null));};exports[_0xd717('0x54')]=function(_0x5347f1,_0x3678fb,_0x244c8e){return db['ChatGroup'][_0xd717('0x4e')]({'where':{'id':_0x5347f1[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x3678fb,null))[_0xd717('0x2c')](function(_0x262537){if(_0x262537){return _0x262537[_0xd717('0x54')](_0x5347f1['body']['ids'],_[_0xd717('0x55')](_0x5347f1[_0xd717('0x4d')],['ids','id'])||{});}})['then'](respondWithResult(_0x3678fb,null))[_0xd717('0x45')](handleError(_0x3678fb,null));};exports[_0xd717('0x56')]=function(_0xfdb6de,_0x5668d5,_0x2eda30){var _0x4a6f73={};var _0x2f220={};var _0xc874af;var _0x5833e3;return db[_0xd717('0x32')][_0xd717('0x57')]({'where':{'id':_0xfdb6de[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x5668d5,null))[_0xd717('0x2c')](function(_0x3a62a1){if(_0x3a62a1){_0xc874af=_0x3a62a1;_0x2f220[_0xd717('0x35')]=_[_0xd717('0x37')](db['User'][_0xd717('0x48')]);_0x2f220[_0xd717('0x36')]=_[_0xd717('0x37')](_0xfdb6de[_0xd717('0x36')]);_0x2f220[_0xd717('0x38')]=_[_0xd717('0x49')](_0x2f220[_0xd717('0x35')],_0x2f220[_0xd717('0x36')]);_0x4a6f73[_0xd717('0x39')]=_[_0xd717('0x49')](_0x2f220['model'],qs[_0xd717('0x3a')](_0xfdb6de['query']['fields']));_0x4a6f73[_0xd717('0x39')]=_0x4a6f73['attributes']['length']?_0x4a6f73['attributes']:_0x2f220[_0xd717('0x35')];_0x4a6f73[_0xd717('0x3c')]=qs[_0xd717('0x3d')](_0xfdb6de[_0xd717('0x36')][_0xd717('0x3d')]);_0x4a6f73[_0xd717('0x3f')]=qs[_0xd717('0x38')](_['pick'](_0xfdb6de[_0xd717('0x36')],_0x2f220['filters']));if(_0xfdb6de[_0xd717('0x36')][_0xd717('0x3e')]){_0x4a6f73['where']=_[_0xd717('0x58')](_0x4a6f73[_0xd717('0x3f')],{'$or':_['map'](_0x4a6f73[_0xd717('0x39')],function(_0x2e4799){var _0x447e0f={};_0x447e0f[_0x2e4799]={'$like':'%'+_0xfdb6de[_0xd717('0x36')][_0xd717('0x3e')]+'%'};return _0x447e0f;})});}_0x4a6f73=_[_0xd717('0x58')]({},_0x4a6f73,_0xfdb6de[_0xd717('0x41')]);return _0xc874af[_0xd717('0x56')](_0x4a6f73);}})[_0xd717('0x2c')](function(_0x1f98c5){if(_0x1f98c5){_0x5833e3=_0x1f98c5[_0xd717('0x4a')];if(!_0xfdb6de[_0xd717('0x36')][_0xd717('0x3b')](_0xd717('0x59'))){_0x4a6f73[_0xd717('0x24')]=qs[_0xd717('0x24')](_0xfdb6de[_0xd717('0x36')][_0xd717('0x24')]);_0x4a6f73['offset']=qs['offset'](_0xfdb6de[_0xd717('0x36')]['offset']);}return _0xc874af[_0xd717('0x56')](_0x4a6f73);}})[_0xd717('0x2c')](function(_0x5a9c97){if(_0x5a9c97){return _0x5a9c97?{'count':_0x5833e3,'rows':_0x5a9c97}:null;}})['then'](respondWithResult(_0x5668d5,null))[_0xd717('0x45')](handleError(_0x5668d5,null));};exports[_0xd717('0x5a')]=function(_0x5a9404,_0xba82f6,_0x1c4642){return db[_0xd717('0x32')][_0xd717('0x4e')]({'where':{'id':_0x5a9404[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0xba82f6,null))[_0xd717('0x2c')](function(_0xb58b60){if(_0xb58b60){return _0xb58b60[_0xd717('0x5a')](_0x5a9404[_0xd717('0x36')][_0xd717('0x5b')]);}})[_0xd717('0x2c')](respondWithStatusCode(_0xba82f6,null))['catch'](handleError(_0xba82f6,null));};exports[_0xd717('0x5c')]=function(_0x36de90,_0x92dc4c,_0x51d007){if(_0x36de90[_0xd717('0x4d')]['id']){delete _0x36de90['body']['id'];}return db[_0xd717('0x32')][_0xd717('0x4e')]({'where':{'id':_0x36de90[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x92dc4c,null))[_0xd717('0x2c')](function(_0x7c4bf5){if(_0x7c4bf5){_0x36de90[_0xd717('0x4d')]['ChatGroupId']=_0x7c4bf5['id'];return db[_0xd717('0x51')][_0xd717('0x4c')](_0x36de90[_0xd717('0x4d')]);}})[_0xd717('0x2c')](respondWithResult(_0x92dc4c,null))['catch'](handleError(_0x92dc4c,null));};exports[_0xd717('0x5d')]=function(_0x43ac5f,_0x59f202,_0x14fa16){var _0x8ba9a0={};var _0x2856f0={};var _0x41665b;var _0x2c42eb;return db[_0xd717('0x32')][_0xd717('0x57')]({'where':{'id':_0x43ac5f[_0xd717('0x47')]['id']}})[_0xd717('0x2c')](handleEntityNotFound(_0x59f202,null))[_0xd717('0x2c')](function(_0x25d57d){if(_0x25d57d){_0x41665b=_0x25d57d;_0x2856f0['model']=_[_0xd717('0x37')](db[_0xd717('0x51')][_0xd717('0x48')]);_0x2856f0['query']=_[_0xd717('0x37')](_0x43ac5f[_0xd717('0x36')]);_0x2856f0[_0xd717('0x38')]=_[_0xd717('0x49')](_0x2856f0[_0xd717('0x35')],_0x2856f0[_0xd717('0x36')]);_0x8ba9a0['attributes']=_[_0xd717('0x49')](_0x2856f0[_0xd717('0x35')],qs[_0xd717('0x3a')](_0x43ac5f[_0xd717('0x36')][_0xd717('0x3a')]));_0x8ba9a0[_0xd717('0x39')]=_0x8ba9a0[_0xd717('0x39')][_0xd717('0x4a')]?_0x8ba9a0[_0xd717('0x39')]:_0x2856f0[_0xd717('0x35')];_0x8ba9a0[_0xd717('0x3c')]=qs[_0xd717('0x3d')](_0x43ac5f[_0xd717('0x36')][_0xd717('0x3d')]);_0x8ba9a0[_0xd717('0x3f')]=qs[_0xd717('0x38')](_[_0xd717('0x5e')](_0x43ac5f[_0xd717('0x36')],_0x2856f0[_0xd717('0x38')]));if(_0x43ac5f['query'][_0xd717('0x3e')]){_0x8ba9a0[_0xd717('0x3f')]=_['merge'](_0x8ba9a0[_0xd717('0x3f')],{'$or':_[_0xd717('0x31')](_0x8ba9a0[_0xd717('0x39')],function(_0xc1ddcb){var _0x360cb1={};_0x360cb1[_0xc1ddcb]={'$like':'%'+_0x43ac5f[_0xd717('0x36')]['filter']+'%'};return _0x360cb1;})});}if(_0x43ac5f[_0xd717('0x36')][_0xd717('0x5f')]){var _0x58a27d=_0x43ac5f[_0xd717('0x36')][_0xd717('0x5f')][_0xd717('0x60')](',');var _0x47f524={};_0x47f524[_0x58a27d[0x0]]={'$gte':moment(_0x58a27d[0x1])[_0xd717('0x61')](_0xd717('0x62'))};_0x8ba9a0[_0xd717('0x3f')]=_[_0xd717('0x58')](_0x8ba9a0[_0xd717('0x3f')],_0x47f524);}_0x8ba9a0=_['merge']({},_0x8ba9a0,_0x43ac5f[_0xd717('0x41')]);return _0x41665b['getMessages'](_0x8ba9a0);}})[_0xd717('0x2c')](function(_0x15b6a4){if(_0x15b6a4){_0x2c42eb=_0x15b6a4[_0xd717('0x4a')];if(!_0x43ac5f[_0xd717('0x36')]['hasOwnProperty'](_0xd717('0x59'))){_0x8ba9a0[_0xd717('0x24')]=qs[_0xd717('0x24')](_0x43ac5f[_0xd717('0x36')][_0xd717('0x24')]);_0x8ba9a0['offset']=qs[_0xd717('0x22')](_0x43ac5f[_0xd717('0x36')]['offset']);}return _0x41665b[_0xd717('0x5d')](_0x8ba9a0);}})['then'](function(_0x1ced42){if(_0x1ced42){return _0x1ced42?{'count':_0x2c42eb,'rows':_0x1ced42}:null;}})[_0xd717('0x2c')](respondWithResult(_0x59f202,null))[_0xd717('0x45')](handleError(_0x59f202,null));};
\ No newline at end of file
index 48dcc4d..a0a7731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc2c=['emit','hook','exports','events','../../mysqldb','ChatGroup','setMaxListeners','remove'];(function(_0x4a5d80,_0x9050c5){var _0x5e562d=function(_0x141481){while(--_0x141481){_0x4a5d80['push'](_0x4a5d80['shift']());}};_0x5e562d(++_0x9050c5);}(_0xbc2c,0x123));var _0xcbc2=function(_0x4bfff5,_0xbd2a67){_0x4bfff5=_0x4bfff5-0x0;var _0x2383bc=_0xbc2c[_0x4bfff5];return _0x2383bc;};'use strict';var EventEmitter=require(_0xcbc2('0x0'));var ChatGroup=require(_0xcbc2('0x1'))['db'][_0xcbc2('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xcbc2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xcbc2('0x4')};function emitEvent(_0x1d6af8){return function(_0x4381be,_0x4117ec,_0x2f67ce){ChatGroupEvents[_0xcbc2('0x5')](_0x1d6af8+':'+_0x4381be['id'],_0x4381be);ChatGroupEvents['emit'](_0x1d6af8,_0x4381be);_0x2f67ce(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0xcbc2('0x6')](e,emitEvent(event));}}module[_0xcbc2('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0xc376=['hook','exports','../../mysqldb','save','update','remove','emit'];(function(_0x576e2b,_0x328953){var _0x46461a=function(_0xce4d9e){while(--_0xce4d9e){_0x576e2b['push'](_0x576e2b['shift']());}};_0x46461a(++_0x328953);}(_0xc376,0x14b));var _0x6c37=function(_0x5e6cb8,_0x16cf56){_0x5e6cb8=_0x5e6cb8-0x0;var _0x3faeb3=_0xc376[_0x5e6cb8];return _0x3faeb3;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x6c37('0x0'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6c37('0x1'),'afterUpdate':_0x6c37('0x2'),'afterDestroy':_0x6c37('0x3')};function emitEvent(_0x40031c){return function(_0x47f6fb,_0x42aced,_0x5dfa69){ChatGroupEvents[_0x6c37('0x4')](_0x40031c+':'+_0x47f6fb['id'],_0x47f6fb);ChatGroupEvents[_0x6c37('0x4')](_0x40031c,_0x47f6fb);_0x5dfa69(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x6c37('0x5')](e,emitEvent(event));}}module[_0x6c37('0x6')]=ChatGroupEvents;
\ No newline at end of file
index 46a5241..f426a7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce3c=['exports','define','ChatGroup','chat_groups','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes'];(function(_0x368675,_0x4c8b97){var _0xdd32b=function(_0x3a9ef3){while(--_0x3a9ef3){_0x368675['push'](_0x368675['shift']());}};_0xdd32b(++_0x4c8b97);}(_0xce3c,0x1be));var _0xcce3=function(_0x588011,_0x5e9d11){_0x588011=_0x588011-0x0;var _0x3b3773=_0xce3c[_0x588011];return _0x3b3773;};'use strict';var _=require(_0xcce3('0x0'));var util=require('util');var logger=require(_0xcce3('0x1'))(_0xcce3('0x2'));var moment=require(_0xcce3('0x3'));var BPromise=require(_0xcce3('0x4'));var rp=require(_0xcce3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcce3('0x6'));var config=require(_0xcce3('0x7'));var attributes=require(_0xcce3('0x8'));module[_0xcce3('0x9')]=function(_0x445bf8,_0x1b195a){return _0x445bf8[_0xcce3('0xa')](_0xcce3('0xb'),attributes,{'tableName':_0xcce3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x76a5=['ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0xbfb72,_0x112b64){var _0x4a4476=function(_0xa544b7){while(--_0xa544b7){_0xbfb72['push'](_0xbfb72['shift']());}};_0x4a4476(++_0x112b64);}(_0x76a5,0x1a2));var _0x576a=function(_0x180216,_0x4ea427){_0x180216=_0x180216-0x0;var _0x2fc363=_0x76a5[_0x180216];return _0x2fc363;};'use strict';var _=require(_0x576a('0x0'));var util=require(_0x576a('0x1'));var logger=require(_0x576a('0x2'))(_0x576a('0x3'));var moment=require(_0x576a('0x4'));var BPromise=require(_0x576a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x576a('0x6'));var rimraf=require(_0x576a('0x7'));var config=require(_0x576a('0x8'));var attributes=require('./chatGroup.attributes');module[_0x576a('0x9')]=function(_0x2b36da,_0x1aa5f5){return _0x2b36da[_0x576a('0xa')](_0x576a('0xb'),attributes,{'tableName':_0x576a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99c05d9..16c7b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1134=['./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x5be5f9,_0x327830){var _0x2c8e64=function(_0x972432){while(--_0x972432){_0x5be5f9['push'](_0x5be5f9['shift']());}};_0x2c8e64(++_0x327830);}(_0x1134,0x19c));var _0x4113=function(_0x5e1b37,_0x318dbf){_0x5e1b37=_0x5e1b37-0x0;var _0x5cd2fa=_0x1134[_0x5e1b37];return _0x5cd2fa;};'use strict';var _=require(_0x4113('0x0'));var util=require(_0x4113('0x1'));var moment=require('moment');var BPromise=require(_0x4113('0x2'));var rs=require(_0x4113('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4113('0x4'))['db'];var utils=require(_0x4113('0x5'));var logger=require('../../config/logger')(_0x4113('0x6'));var config=require('../../config/environment');var jayson=require(_0x4113('0x7'));var client=jayson['client'][_0x4113('0x8')]({'port':0x232a});config['redis']=_[_0x4113('0x9')](config[_0x4113('0xa')],{'host':_0x4113('0xb'),'port':0x18eb});var socket=require(_0x4113('0xc'))(new Redis(config[_0x4113('0xa')]));require(_0x4113('0xd'))[_0x4113('0xe')](socket);function respondWithRpcPromise(_0x19b6f2,_0x5e635c,_0x85a9dd){return new BPromise(function(_0x207442,_0x29c7f9){return client[_0x4113('0xf')](_0x19b6f2,_0x85a9dd)[_0x4113('0x10')](function(_0x30f02a){logger[_0x4113('0x11')](_0x4113('0x12'),_0x5e635c,_0x4113('0x13'));logger[_0x4113('0x14')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x5e635c,'request\x20sent',JSON['stringify'](_0x30f02a));if(_0x30f02a[_0x4113('0x15')]){if(_0x30f02a[_0x4113('0x15')]['code']===0x1f4){logger['error'](_0x4113('0x12'),_0x5e635c,_0x30f02a['error'][_0x4113('0x16')]);return _0x29c7f9(_0x30f02a['error']['message']);}logger[_0x4113('0x15')](_0x4113('0x12'),_0x5e635c,_0x30f02a[_0x4113('0x15')][_0x4113('0x16')]);return _0x207442(_0x30f02a[_0x4113('0x15')][_0x4113('0x16')]);}else{logger[_0x4113('0x11')](_0x4113('0x12'),_0x5e635c,_0x4113('0x13'));_0x207442(_0x30f02a[_0x4113('0x17')]['message']);}})[_0x4113('0x18')](function(_0x287efd){logger[_0x4113('0x15')](_0x4113('0x12'),_0x5e635c,_0x287efd);_0x29c7f9(_0x287efd);});});}
\ No newline at end of file
+var _0x0298=['request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','request','then','info'];(function(_0x56c1ab,_0x100638){var _0x564b35=function(_0x49927e){while(--_0x49927e){_0x56c1ab['push'](_0x56c1ab['shift']());}};_0x564b35(++_0x100638);}(_0x0298,0x95));var _0x8029=function(_0x14f41c,_0x3becf3){_0x14f41c=_0x14f41c-0x0;var _0x18fcd8=_0x0298[_0x14f41c];return _0x18fcd8;};'use strict';var _=require(_0x8029('0x0'));var util=require('util');var moment=require(_0x8029('0x1'));var BPromise=require(_0x8029('0x2'));var rs=require(_0x8029('0x3'));var fs=require('fs');var Redis=require(_0x8029('0x4'));var db=require(_0x8029('0x5'))['db'];var utils=require(_0x8029('0x6'));var logger=require(_0x8029('0x7'))(_0x8029('0x8'));var config=require(_0x8029('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8029('0xa')][_0x8029('0xb')]({'port':0x232a});config['redis']=_[_0x8029('0xc')](config[_0x8029('0xd')],{'host':_0x8029('0xe'),'port':0x18eb});var socket=require(_0x8029('0xf'))(new Redis(config[_0x8029('0xd')]));require('./chatGroup.socket')['register'](socket);function respondWithRpcPromise(_0x1a94ef,_0x1b93b9,_0x288b07){return new BPromise(function(_0x4ebfb4,_0x56e850){return client[_0x8029('0x10')](_0x1a94ef,_0x288b07)[_0x8029('0x11')](function(_0x4943a3){logger[_0x8029('0x12')]('ChatGroup,\x20%s,\x20%s',_0x1b93b9,_0x8029('0x13'));logger[_0x8029('0x14')](_0x8029('0x15'),_0x1b93b9,_0x8029('0x13'),JSON[_0x8029('0x16')](_0x4943a3));if(_0x4943a3[_0x8029('0x17')]){if(_0x4943a3['error'][_0x8029('0x18')]===0x1f4){logger[_0x8029('0x17')](_0x8029('0x19'),_0x1b93b9,_0x4943a3[_0x8029('0x17')]['message']);return _0x56e850(_0x4943a3['error']['message']);}logger[_0x8029('0x17')](_0x8029('0x19'),_0x1b93b9,_0x4943a3[_0x8029('0x17')][_0x8029('0x1a')]);return _0x4ebfb4(_0x4943a3[_0x8029('0x17')][_0x8029('0x1a')]);}else{logger['info'](_0x8029('0x19'),_0x1b93b9,_0x8029('0x13'));_0x4ebfb4(_0x4943a3[_0x8029('0x1b')][_0x8029('0x1a')]);}})['catch'](function(_0x3e3ab2){logger[_0x8029('0x17')]('ChatGroup,\x20%s,\x20%s',_0x1b93b9,_0x3e3ab2);_0x56e850(_0x3e3ab2);});});}
\ No newline at end of file
index 4ddb263..c84b88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x175a=['removeListener','length','chatGroup:','./chatGroup.events','save','update','emit'];(function(_0x480db1,_0x9a7864){var _0x3de3da=function(_0x76d384){while(--_0x76d384){_0x480db1['push'](_0x480db1['shift']());}};_0x3de3da(++_0x9a7864);}(_0x175a,0x15a));var _0xa175=function(_0x2cf288,_0x25d707){_0x2cf288=_0x2cf288-0x0;var _0x51577c=_0x175a[_0x2cf288];return _0x51577c;};'use strict';var ChatGroupEvents=require(_0xa175('0x0'));var events=[_0xa175('0x1'),'remove',_0xa175('0x2')];function createListener(_0x1119c5,_0x534484){return function(_0x550788){_0x534484[_0xa175('0x3')](_0x1119c5,_0x550788);};}function removeListener(_0x22e131,_0x5bdddd){return function(){ChatGroupEvents[_0xa175('0x4')](_0x22e131,_0x5bdddd);};}exports['register']=function(_0x239563){for(var _0x41e0d4=0x0,_0x2be8a3=events[_0xa175('0x5')];_0x41e0d4<_0x2be8a3;_0x41e0d4++){var _0x3ea05b=events[_0x41e0d4];var _0x47e8b7=createListener(_0xa175('0x6')+_0x3ea05b,_0x239563);ChatGroupEvents['on'](_0x3ea05b,_0x47e8b7);}};
\ No newline at end of file
+var _0x36dd=['save','remove','update','register','length','./chatGroup.events'];(function(_0x2b6e53,_0x4ed0d2){var _0x35bab1=function(_0x138843){while(--_0x138843){_0x2b6e53['push'](_0x2b6e53['shift']());}};_0x35bab1(++_0x4ed0d2);}(_0x36dd,0x1f1));var _0xd36d=function(_0x479160,_0x3ab560){_0x479160=_0x479160-0x0;var _0x47ac6d=_0x36dd[_0x479160];return _0x47ac6d;};'use strict';var ChatGroupEvents=require(_0xd36d('0x0'));var events=[_0xd36d('0x1'),_0xd36d('0x2'),_0xd36d('0x3')];function createListener(_0x1ac633,_0x2ea9bc){return function(_0x3de051){_0x2ea9bc['emit'](_0x1ac633,_0x3de051);};}function removeListener(_0x10e576,_0x462d98){return function(){ChatGroupEvents['removeListener'](_0x10e576,_0x462d98);};}exports[_0xd36d('0x4')]=function(_0x55a41f){for(var _0x1a937c=0x0,_0x3a7afd=events[_0xd36d('0x5')];_0x1a937c<_0x3a7afd;_0x1a937c++){var _0x1e06c6=events[_0x1a937c];var _0x239b84=createListener('chatGroup:'+_0x1e06c6,_0x55a41f);ChatGroupEvents['on'](_0x1e06c6,_0x239b84);}};
\ No newline at end of file
index 479c925..2bb5bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5f6=['create','addMembers','/:id/messages','put','update','destroy','removeMembers','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','index','describe','/:id','show','/:id/members','getMembers','getMessages','post'];(function(_0x4e2c7a,_0x109191){var _0x2c7e4e=function(_0x42e28d){while(--_0x42e28d){_0x4e2c7a['push'](_0x4e2c7a['shift']());}};_0x2c7e4e(++_0x109191);}(_0xe5f6,0x9e));var _0x6e5f=function(_0x32dd23,_0x9d97f3){_0x32dd23=_0x32dd23-0x0;var _0x2cf1ef=_0xe5f6[_0x32dd23];return _0x2cf1ef;};'use strict';var multer=require(_0x6e5f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6e5f('0x1'));var express=require(_0x6e5f('0x2'));var router=express[_0x6e5f('0x3')]();var fs_extra=require(_0x6e5f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6e5f('0x5'));var config=require('../../config/environment');var controller=require(_0x6e5f('0x6'));router[_0x6e5f('0x7')]('/',auth[_0x6e5f('0x8')](),controller[_0x6e5f('0x9')]);router['get']('/describe',auth[_0x6e5f('0x8')](),controller[_0x6e5f('0xa')]);router[_0x6e5f('0x7')](_0x6e5f('0xb'),auth[_0x6e5f('0x8')](),controller[_0x6e5f('0xc')]);router['get']('/:id/unread',auth[_0x6e5f('0x8')](),controller['getUnread']);router[_0x6e5f('0x7')](_0x6e5f('0xd'),auth[_0x6e5f('0x8')](),controller[_0x6e5f('0xe')]);router[_0x6e5f('0x7')]('/:id/messages',auth['isAuthenticated'](),controller[_0x6e5f('0xf')]);router[_0x6e5f('0x10')]('/',auth['isAuthenticated'](),controller[_0x6e5f('0x11')]);router['post'](_0x6e5f('0xd'),auth[_0x6e5f('0x8')](),controller[_0x6e5f('0x12')]);router['post'](_0x6e5f('0x13'),auth[_0x6e5f('0x8')](),controller['addMessage']);router[_0x6e5f('0x14')](_0x6e5f('0xb'),auth['isAuthenticated'](),controller[_0x6e5f('0x15')]);router['delete'](_0x6e5f('0xb'),auth['isAuthenticated'](),controller[_0x6e5f('0x16')]);router['delete']('/:id/members',auth[_0x6e5f('0x8')](),controller[_0x6e5f('0x17')]);module[_0x6e5f('0x18')]=router;
\ No newline at end of file
+var _0x3aac=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','getMembers','/:id/messages','getMessages','post','/:id/members','addMembers','addMessage','put','update','delete','destroy','removeMembers','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x313c96,_0x3cee6e){var _0x522f53=function(_0x8961e){while(--_0x8961e){_0x313c96['push'](_0x313c96['shift']());}};_0x522f53(++_0x3cee6e);}(_0x3aac,0x1bb));var _0xc3aa=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3aac[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc3aa('0x0'));var timeout=require(_0xc3aa('0x1'));var express=require(_0xc3aa('0x2'));var router=express[_0xc3aa('0x3')]();var fs_extra=require(_0xc3aa('0x4'));var auth=require(_0xc3aa('0x5'));var interaction=require(_0xc3aa('0x6'));var config=require(_0xc3aa('0x7'));var controller=require('./chatGroup.controller');router[_0xc3aa('0x8')]('/',auth[_0xc3aa('0x9')](),controller[_0xc3aa('0xa')]);router[_0xc3aa('0x8')](_0xc3aa('0xb'),auth['isAuthenticated'](),controller[_0xc3aa('0xc')]);router[_0xc3aa('0x8')](_0xc3aa('0xd'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0xe')]);router[_0xc3aa('0x8')](_0xc3aa('0xf'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x10')]);router[_0xc3aa('0x8')]('/:id/members',auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x11')]);router[_0xc3aa('0x8')](_0xc3aa('0x12'),auth['isAuthenticated'](),controller[_0xc3aa('0x13')]);router[_0xc3aa('0x14')]('/',auth[_0xc3aa('0x9')](),controller['create']);router[_0xc3aa('0x14')](_0xc3aa('0x15'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x16')]);router[_0xc3aa('0x14')](_0xc3aa('0x12'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x17')]);router[_0xc3aa('0x18')](_0xc3aa('0xd'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x19')]);router[_0xc3aa('0x1a')]('/:id',auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x1b')]);router[_0xc3aa('0x1a')](_0xc3aa('0x15'),auth[_0xc3aa('0x9')](),controller[_0xc3aa('0x1c')]);module[_0xc3aa('0x1d')]=router;
\ No newline at end of file
index 03ceb42..fa3fb2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['DATE','long','sequelize','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING'];(function(_0x3f915a,_0x2fadbf){var _0x3629d8=function(_0x2853bc){while(--_0x2853bc){_0x3f915a['push'](_0x3f915a['shift']());}};_0x3629d8(++_0x2fadbf);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0xe5b5[_0x1ccdf7];return _0x52a0ae;};'use strict';var Sequelize=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]={'closed':{'type':Sequelize[_0x5e5b('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x5e5b('0x3')]},'ratingType':{'type':Sequelize[_0x5e5b('0x4')](_0x5e5b('0x5'),_0x5e5b('0x6')),'defaultValue':_0x5e5b('0x5')},'ratingMessage':{'type':Sequelize[_0x5e5b('0x7')]},'pathTranscript':{'type':Sequelize[_0x5e5b('0x7')]},'mailTranscript':{'type':Sequelize[_0x5e5b('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x5e5b('0x9')]},'disposition':{'type':Sequelize[_0x5e5b('0x8')]},'secondDisposition':{'type':Sequelize[_0x5e5b('0x8')]},'thirdDisposition':{'type':Sequelize[_0x5e5b('0x8')]},'note':{'type':Sequelize[_0x5e5b('0x8')]},'browserName':{'type':Sequelize[_0x5e5b('0x8')]},'browserVersion':{'type':Sequelize[_0x5e5b('0x8')]},'osName':{'type':Sequelize[_0x5e5b('0x8')]},'osVersion':{'type':Sequelize[_0x5e5b('0x8')]},'deviceModel':{'type':Sequelize[_0x5e5b('0x8')]},'deviceVendor':{'type':Sequelize[_0x5e5b('0x8')]},'deviceType':{'type':Sequelize[_0x5e5b('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0x5e5b('0x8')]},'formData':{'type':Sequelize['TEXT'](_0x5e5b('0xa'))},'read1stAt':{'type':Sequelize[_0x5e5b('0x9')]},'lastMsgAt':{'type':Sequelize[_0x5e5b('0x9')]},'lastMsgDirection':{'type':Sequelize[_0x5e5b('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize[_0x5e5b('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0x5e5b('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1678=['exports','BOOLEAN','INTEGER','ENUM','star','TEXT','STRING','DATE','long','sequelize'];(function(_0x35007a,_0x58a0d4){var _0x574f68=function(_0xd1c129){while(--_0xd1c129){_0x35007a['push'](_0x35007a['shift']());}};_0x574f68(++_0x58a0d4);}(_0x1678,0x17b));var _0x8167=function(_0x17a09d,_0x1ed2f1){_0x17a09d=_0x17a09d-0x0;var _0x31a422=_0x1678[_0x17a09d];return _0x31a422;};'use strict';var Sequelize=require(_0x8167('0x0'));module[_0x8167('0x1')]={'closed':{'type':Sequelize[_0x8167('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x8167('0x3')]},'ratingType':{'type':Sequelize[_0x8167('0x4')]('star','thumb'),'defaultValue':_0x8167('0x5')},'ratingMessage':{'type':Sequelize[_0x8167('0x6')]},'pathTranscript':{'type':Sequelize[_0x8167('0x6')]},'mailTranscript':{'type':Sequelize[_0x8167('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x8167('0x8')]},'disposition':{'type':Sequelize[_0x8167('0x7')]},'secondDisposition':{'type':Sequelize[_0x8167('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x8167('0x7')]},'browserName':{'type':Sequelize[_0x8167('0x7')]},'browserVersion':{'type':Sequelize[_0x8167('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x8167('0x7')]},'deviceVendor':{'type':Sequelize[_0x8167('0x7')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x8167('0x6')]},'customerIp':{'type':Sequelize[_0x8167('0x7')]},'formData':{'type':Sequelize[_0x8167('0x6')](_0x8167('0x9'))},'read1stAt':{'type':Sequelize[_0x8167('0x8')]},'lastMsgAt':{'type':Sequelize[_0x8167('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x8167('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0x8167('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x8167('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 420fbce..0d5c816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4774=['file','originalname','basename','filename','type','mimetype','Attachment','attachmentDownload','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','close','mailTranscript','server/files/chat/upload/','format','now','ChatMessage','Messages','User','length','%s%d','agentAlias','System','customer','Visitor','agentIdentifier','website_alias','agent_alias','alias','fullname','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailServerOut','CloudProvider','Smtp','getSmtpOptions','sendMail','\x22%s\x22\x20<%s>','addMessage','ids','omit','getMessages','rawAttributes','hasOwnProperty','order','sort','where','filter','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','getMyMessages','nolimit','pick','ChatInteractionId','includeAgent','addTags','setTags','spread','Tag','emit','chatInteractionTags:save','removeTags','download','unix','toString','server','files','tmp','attachments','transcript-%d-%s.zip','push','firstName','lastName','createdAt','read','Account','Owner','get','mkdirSync','Chat','closedAt','browserName','customerPort','N.A.','tail','existsSync','createReadStream','createWriteStream','value','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','request','then','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','ChatInteraction,\x20%s,\x20%s','message','info','result','catch','status','end','json','limit','count','offset','set','update','destroy','sendStatus','stack','name','send','render','merge','contact','agent','interaction','index','map','ChatInteraction','fieldName','key','getOptions','findAll','query','user','show','keys','filters','intersection','model','attributes','fields','include','options','create','body','find','params','describe','createVidaooSession','findOne','ChatWebsite','ChatWebsiteId','vidaooEscalation','vidaooTopic','vidaooNote','vidaooApiKey','account','POST','email','isNull','follow','vidaooMetadata','parse','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','updateAttributes','customUpdate','CmContact','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload'];(function(_0x269cca,_0x267b9a){var _0x4f9e83=function(_0x1a7781){while(--_0x1a7781){_0x269cca['push'](_0x269cca['shift']());}};_0x4f9e83(++_0x267b9a);}(_0x4774,0x64));var _0x4477=function(_0x571056,_0x19ea9d){_0x571056=_0x571056-0x0;var _0x25c193=_0x4774[_0x571056];return _0x25c193;};'use strict';var rimraf=require(_0x4477('0x0'));var zipdir=require(_0x4477('0x1'));var rp=require(_0x4477('0x2'));var moment=require('moment');var BPromise=require(_0x4477('0x3'));var Mustache=require(_0x4477('0x4'));var util=require(_0x4477('0x5'));var path=require(_0x4477('0x6'));var ejs=require(_0x4477('0x7'));var fs=require('fs');var _=require(_0x4477('0x8'));var Redis=require(_0x4477('0x9'));var interaction=require(_0x4477('0xa'));var qs=require(_0x4477('0xb'));var pdf=require(_0x4477('0xc'));var logger=require(_0x4477('0xd'))(_0x4477('0xe'));var config=require(_0x4477('0xf'));var db=require(_0x4477('0x10'))['db'];config[_0x4477('0x11')]=_[_0x4477('0x12')](config[_0x4477('0x11')],{'host':_0x4477('0x13'),'port':0x18eb});var socket=require(_0x4477('0x14'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0x4477('0x15')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4477('0x16')]['http']({'port':0x232b});var client9004=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x19a0ce,_0xcad6de,_0x42803b,_0x66e65d){return new BPromise(function(_0x42e03d,_0x5bfa0f){var _0xa40b45=_0x66e65d||client;return _0xa40b45[_0x4477('0x17')](_0x19a0ce,_0x42803b)[_0x4477('0x18')](function(_0x22c905){logger['info']('ChatInteraction,\x20%s,\x20%s',_0xcad6de,_0x4477('0x19'));logger[_0x4477('0x1a')](_0x4477('0x1b'),_0xcad6de,_0x4477('0x19'),JSON['stringify'](_0x22c905));if(_0x22c905[_0x4477('0x1c')]){if(_0x22c905[_0x4477('0x1c')][_0x4477('0x1d')]===0x1f4){logger[_0x4477('0x1c')](_0x4477('0x1e'),_0xcad6de,_0x22c905[_0x4477('0x1c')][_0x4477('0x1f')]);return _0x5bfa0f(_0x22c905[_0x4477('0x1c')][_0x4477('0x1f')]);}logger['error'](_0x4477('0x1e'),_0xcad6de,_0x22c905[_0x4477('0x1c')]['message']);return _0x42e03d(_0x22c905[_0x4477('0x1c')][_0x4477('0x1f')]);}else{logger[_0x4477('0x20')]('ChatInteraction,\x20%s,\x20%s',_0xcad6de,'request\x20sent');_0x42e03d(_0x22c905[_0x4477('0x21')][_0x4477('0x1f')]);}})[_0x4477('0x22')](function(_0x96f437){logger[_0x4477('0x1c')](_0x4477('0x1e'),_0xcad6de,_0x96f437);_0x5bfa0f(_0x96f437);});});}function respondWithStatusCode(_0x2bbc5b,_0xac9e2c){_0xac9e2c=_0xac9e2c||0xcc;return function(_0xcc24f3){if(_0xcc24f3){return _0x2bbc5b['sendStatus'](_0xac9e2c);}return _0x2bbc5b[_0x4477('0x23')](_0xac9e2c)[_0x4477('0x24')]();};}function respondWithResult(_0x4651eb,_0x36265b){_0x36265b=_0x36265b||0xc8;return function(_0x13abac){if(_0x13abac){return _0x4651eb['status'](_0x36265b)[_0x4477('0x25')](_0x13abac);}};}function respondWithFilteredResult(_0x20e5b6,_0x574902){return function(_0x502503){if(_0x502503){var _0x2f4321=typeof _0x574902['offset']==='undefined'&&typeof _0x574902[_0x4477('0x26')]==='undefined';var _0x5c84db=_0x502503[_0x4477('0x27')];var _0x1f2b9c=_0x2f4321?0x0:_0x574902[_0x4477('0x28')];var _0x4280da=_0x2f4321?_0x502503[_0x4477('0x27')]:_0x574902['offset']+_0x574902[_0x4477('0x26')];var _0x3fec7b;if(_0x4280da>=_0x5c84db){_0x4280da=_0x5c84db;_0x3fec7b=0xc8;}else{_0x3fec7b=0xce;}_0x20e5b6['status'](_0x3fec7b);return _0x20e5b6[_0x4477('0x29')]('Content-Range',_0x1f2b9c+'-'+_0x4280da+'/'+_0x5c84db)[_0x4477('0x25')](_0x502503);}return null;};}function saveUpdates(_0x1b3f4b){return function(_0xcf1f58){if(_0xcf1f58){return _0xcf1f58[_0x4477('0x2a')](_0x1b3f4b)['then'](function(_0x18b1b2){return _0x18b1b2;});}return null;};}function removeEntity(_0x2f2613){return function(_0x3e1489){if(_0x3e1489){return _0x3e1489[_0x4477('0x2b')]()['then'](function(){_0x2f2613[_0x4477('0x23')](0xcc)[_0x4477('0x24')]();});}};}function handleEntityNotFound(_0x278b5d){return function(_0x1a3437){if(!_0x1a3437){_0x278b5d[_0x4477('0x2c')](0x194);}return _0x1a3437;};}function handleError(_0x46eb8f,_0x2834c2){_0x2834c2=_0x2834c2||0x1f4;return function(_0x3b2655){logger['error'](_0x3b2655[_0x4477('0x2d')]);if(_0x3b2655['name']){delete _0x3b2655[_0x4477('0x2e')];}_0x46eb8f[_0x4477('0x23')](_0x2834c2)[_0x4477('0x2f')](_0x3b2655);};}function getMustacheRender(_0x25467f,_0x2c4adc){return Mustache[_0x4477('0x30')](_0x25467f,_[_0x4477('0x31')](_0x2c4adc['body'],{'contact':_0x2c4adc[_0x4477('0x32')],'message':_0x2c4adc[_0x4477('0x1f')],'agent':_0x2c4adc[_0x4477('0x33')],'interaction':_0x2c4adc[_0x4477('0x34')],'account':_0x2c4adc['account']}))||'';}exports[_0x4477('0x35')]=function(_0x44c2a7,_0x3bb7c4){var _0x2b8b1b={};var _0x587c7a=_[_0x4477('0x36')](db[_0x4477('0x37')]['rawAttributes'],function(_0x37dd40){return{'name':_0x37dd40[_0x4477('0x38')],'type':_0x37dd40['type'][_0x4477('0x39')]};});_0x2b8b1b=qs[_0x4477('0x3a')](_0x587c7a,_0x44c2a7);return interaction[_0x4477('0x3b')]('chat',_0x44c2a7[_0x4477('0x3c')],_0x44c2a7[_0x4477('0x3d')],_0x2b8b1b,_0x587c7a)['then'](respondWithFilteredResult(_0x3bb7c4,_0x2b8b1b))[_0x4477('0x22')](handleError(_0x3bb7c4,null));};exports[_0x4477('0x3e')]=function(_0x494b06,_0x4e0b1f){var _0x3b92c2={'raw':![],'where':{'id':_0x494b06['params']['id']}},_0x4ac85c={};_0x4ac85c['model']=_[_0x4477('0x3f')](db[_0x4477('0x37')]['rawAttributes']);_0x4ac85c[_0x4477('0x3c')]=_[_0x4477('0x3f')](_0x494b06['query']);_0x4ac85c[_0x4477('0x40')]=_[_0x4477('0x41')](_0x4ac85c[_0x4477('0x42')],_0x4ac85c['query']);_0x3b92c2[_0x4477('0x43')]=_[_0x4477('0x41')](_0x4ac85c[_0x4477('0x42')],qs[_0x4477('0x44')](_0x494b06[_0x4477('0x3c')][_0x4477('0x44')]));_0x3b92c2[_0x4477('0x43')]=_0x3b92c2[_0x4477('0x43')]['length']?_0x3b92c2[_0x4477('0x43')]:_0x4ac85c['model'];if(_0x494b06[_0x4477('0x3c')]['includeAll']){_0x3b92c2[_0x4477('0x45')]=[{'all':!![]}];}_0x3b92c2=_[_0x4477('0x31')]({},_0x3b92c2,_0x494b06[_0x4477('0x46')]);return db[_0x4477('0x37')]['find'](_0x3b92c2)['then'](handleEntityNotFound(_0x4e0b1f,null))['then'](respondWithResult(_0x4e0b1f,null))['catch'](handleError(_0x4e0b1f,null));};exports[_0x4477('0x47')]=function(_0x23fca8,_0x1cf71a){return db[_0x4477('0x37')][_0x4477('0x47')](_0x23fca8[_0x4477('0x48')],{})[_0x4477('0x18')](respondWithResult(_0x1cf71a,0xc9))[_0x4477('0x22')](handleError(_0x1cf71a,null));};exports[_0x4477('0x2a')]=function(_0x8e2226,_0x1d823f){if(_0x8e2226[_0x4477('0x48')]['id']){delete _0x8e2226[_0x4477('0x48')]['id'];}return db['ChatInteraction'][_0x4477('0x49')]({'where':{'id':_0x8e2226[_0x4477('0x4a')]['id']}})[_0x4477('0x18')](handleEntityNotFound(_0x1d823f,null))[_0x4477('0x18')](saveUpdates(_0x8e2226[_0x4477('0x48')],null))[_0x4477('0x18')](respondWithResult(_0x1d823f,null))[_0x4477('0x22')](handleError(_0x1d823f,null));};exports[_0x4477('0x2b')]=function(_0xaee2f3,_0x44e51f){return db[_0x4477('0x37')]['find']({'where':{'id':_0xaee2f3[_0x4477('0x4a')]['id']}})[_0x4477('0x18')](handleEntityNotFound(_0x44e51f,null))[_0x4477('0x18')](removeEntity(_0x44e51f,null))[_0x4477('0x22')](handleError(_0x44e51f,null));};exports[_0x4477('0x4b')]=function(_0x4caa1d,_0x1e8e3c){return db[_0x4477('0x37')][_0x4477('0x4b')]()[_0x4477('0x18')](respondWithResult(_0x1e8e3c,null))[_0x4477('0x22')](handleError(_0x1e8e3c,null));};exports[_0x4477('0x4c')]=function(_0x45ffc5,_0x28e06f){var _0x1aa147=_0x45ffc5[_0x4477('0x4a')]['id'];var _0x327b99;var _0x82c8ee;var _0x2baa37;return db['ChatInteraction'][_0x4477('0x4d')]({'where':{'id':_0x1aa147}})[_0x4477('0x18')](function(_0x53e205){_0x327b99=_0x53e205;return db[_0x4477('0x4e')][_0x4477('0x4d')]({'where':{'id':_0x53e205[_0x4477('0x4f')]},'attributes':['id','vidaooApiKey',_0x4477('0x50'),_0x4477('0x51'),_0x4477('0x52'),'vidaooMetadata'],'raw':!![]});})['then'](function(_0x64920e){if(_0x64920e&&_0x64920e[_0x4477('0x53')]&&_0x64920e[_0x4477('0x50')]){_0x82c8ee=_0x64920e;var _0x888f3b={'interaction':{'id':_0x1aa147},'agent':{'id':_0x45ffc5[_0x4477('0x3d')]['id'],'name':_0x45ffc5[_0x4477('0x3d')][_0x4477('0x2e')],'fullname':_0x45ffc5[_0x4477('0x3d')]['fullname'],'email':_0x45ffc5[_0x4477('0x3d')]['email']},'contact':_0x45ffc5[_0x4477('0x48')]['contact'],'account':_0x45ffc5[_0x4477('0x48')][_0x4477('0x54')]};var _0x114f74={'rejectUnauthorized':![],'method':_0x4477('0x55'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x64920e['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x45ffc5[_0x4477('0x3d')][_0x4477('0x56')]],'buttons':null,'topic':_0x82c8ee['vidaooTopic'],'note':_[_0x4477('0x57')](_0x82c8ee[_0x4477('0x52')])?null:getMustacheRender(_0x82c8ee['vidaooNote'],_0x888f3b),'metadata':null},'redirect':_0x4477('0x58'),'json':!![]};try{if(!_[_0x4477('0x57')](_0x82c8ee[_0x4477('0x59')])){var _0x1c5960=getMustacheRender(_0x82c8ee[_0x4477('0x59')],_0x888f3b);var _0x465bed=JSON[_0x4477('0x5a')](_0x1c5960);_0x114f74[_0x4477('0x48')][_0x4477('0x5b')]=_0x465bed;}}catch(_0x55668d){throw new db[(_0x4477('0x5c'))][(_0x4477('0x5d'))](_0x4477('0x5e'));}return rp(_0x114f74);}else{throw new db[(_0x4477('0x5c'))][(_0x4477('0x5d'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x4477('0x18')](function(_0x2249c1){_0x2baa37=_0x2249c1;if(_0x2baa37['id']){var _0x5fc935={'body':_0x2baa37[_0x4477('0x5f')],'ChatWebsiteId':_0x82c8ee['id'],'ChatInteractionId':_0x327b99['id'],'direction':_0x4477('0x60'),'UserId':_0x45ffc5[_0x4477('0x3d')]['id']};return db['ChatMessage'][_0x4477('0x47')](_0x5fc935,{});}else{throw new db[(_0x4477('0x5c'))]['ValidationError']('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x4477('0x18')](function(){return _0x327b99[_0x4477('0x61')]({'vidaooSessionId':_0x2baa37['id']});})[_0x4477('0x18')](respondWithResult(_0x28e06f,null))[_0x4477('0x22')](handleError(_0x28e06f,null));};exports[_0x4477('0x62')]=function(_0x500496,_0x2fed33){if(_0x500496[_0x4477('0x48')]['id']){delete _0x500496[_0x4477('0x48')]['id'];}return db[_0x4477('0x37')][_0x4477('0x49')]({'where':{'id':_0x500496['params']['id']},'include':[{'model':db[_0x4477('0x63')],'as':_0x4477('0x64')}]})['then'](handleEntityNotFound(_0x2fed33,null))[_0x4477('0x18')](saveUpdates(_0x500496[_0x4477('0x48')],null))[_0x4477('0x18')](respondWithResult(_0x2fed33,null))['catch'](handleError(_0x2fed33,null));};exports['abandon']=function(_0x18ae1d,_0x247210){if(_0x18ae1d[_0x4477('0x48')]['id']){delete _0x18ae1d[_0x4477('0x48')]['id'];}return db[_0x4477('0x37')][_0x4477('0x49')]({'where':{'id':_0x18ae1d[_0x4477('0x4a')]['id']}})[_0x4477('0x18')](function(_0x462f2a){if(!_0x462f2a){logger[_0x4477('0x1c')](_0x4477('0x65'),_0x4477('0x66'),0x194,_0x4477('0x67'));_0x247210[_0x4477('0x2c')](0x194);}else{if(_0x462f2a[_0x4477('0x68')]){throw new db[(_0x4477('0x5c'))][(_0x4477('0x5d'))](_0x4477('0x69'));}}return _0x462f2a;})['then'](function(_0xcbe733){if(_0xcbe733){return _0xcbe733[_0x4477('0x2a')]({'closed':_0x18ae1d[_0x4477('0x48')][_0x4477('0x6a')],'disposition':_0x18ae1d[_0x4477('0x48')][_0x4477('0x6b')]})['then'](function(_0x2dd3d8){return _0x2dd3d8;});}})['then'](function(){return respondWithRpcPromise(_0x4477('0x6c'),'abandon',_0x18ae1d[_0x4477('0x48')],client9004);})[_0x4477('0x18')](respondWithResult(_0x247210,null))[_0x4477('0x22')](handleError(_0x247210,null));};exports[_0x4477('0x6d')]=function(_0x3abd38,_0x358f1a){_0x3abd38[_0x4477('0x48')][_0x4477('0x2e')]=_0x3abd38[_0x4477('0x6e')][_0x4477('0x6f')];_0x3abd38[_0x4477('0x48')][_0x4477('0x70')]=_0x3abd38[_0x4477('0x6e')][_0x4477('0x71')];_0x3abd38[_0x4477('0x48')][_0x4477('0x72')]=_0x3abd38['file'][_0x4477('0x73')];return db[_0x4477('0x74')][_0x4477('0x47')](_0x3abd38[_0x4477('0x48')])[_0x4477('0x18')](respondWithResult(_0x358f1a,0xc9))['catch'](handleError(_0x358f1a,null));};exports[_0x4477('0x75')]=function(_0x78cfce,_0x58306e){return db[_0x4477('0x37')][_0x4477('0x4d')]({'where':{'id':_0x78cfce[_0x4477('0x4a')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x58306e,null))[_0x4477('0x18')](function(_0x3554e1){if(_0x3554e1){if(_0x3554e1[_0x4477('0x6a')]){return _0x58306e[_0x4477('0x23')](0x193)[_0x4477('0x25')]({'status':0x193,'message':'Unauthorized'});}return db[_0x4477('0x74')]['findOne']({'where':{'id':_0x78cfce[_0x4477('0x3c')]['attachId']},'raw':!![]})[_0x4477('0x18')](handleEntityNotFound(_0x58306e,null));}})[_0x4477('0x18')](function(_0x82f98f){if(_0x82f98f){var _0x51a12e=_0x82f98f[_0x4477('0x76')]!==null;var _0x5ec1f5=path[_0x4477('0x77')](config[_0x4477('0x78')],_0x4477('0x79'));if(_0x51a12e){_0x5ec1f5=path['join'](_0x5ec1f5,_0x4477('0x7a'));}var _0x2beec9=path[_0x4477('0x77')](_0x5ec1f5,_0x82f98f[_0x4477('0x70')]);return _0x58306e['download'](_0x2beec9);}})[_0x4477('0x22')](handleError(_0x58306e,null));};exports[_0x4477('0x7b')]=function(_0xe2cbe0,_0x2d032c){var _0x18c0d8=null;var _0xfae86a=null;var _0x1aa371=null;if(_0xe2cbe0[_0x4477('0x48')]['id']){delete _0xe2cbe0[_0x4477('0x48')]['id'];}if(_0xe2cbe0[_0x4477('0x48')][_0x4477('0x7c')]){_0x1aa371=path['join'](config[_0x4477('0x78')],_0x4477('0x7d'),util[_0x4477('0x7e')]('transcript-%s.txt',Date[_0x4477('0x7f')]()));_0xe2cbe0[_0x4477('0x48')]['pathTranscript']=_0x1aa371;}return db[_0x4477('0x37')][_0x4477('0x49')]({'where':{'id':_0xe2cbe0['params']['id']},'include':[{'model':db[_0x4477('0x80')],'as':_0x4477('0x81'),'include':[{'model':db['User'],'as':_0x4477('0x82')}]}]})[_0x4477('0x18')](handleEntityNotFound(_0x2d032c,null))[_0x4477('0x18')](saveUpdates(_0xe2cbe0[_0x4477('0x48')],null))[_0x4477('0x18')](function(_0x160bec){if(_0x160bec){_0x18c0d8=_0x160bec;return db[_0x4477('0x4e')][_0x4477('0x49')]({'where':{'id':_0x18c0d8[_0x4477('0x4f')]}});}})[_0x4477('0x18')](function(_0x446018){if(_0x446018){_0xfae86a=_0x446018;return db[_0x4477('0x63')][_0x4477('0x49')]({'where':{'id':_0x18c0d8['ContactId']}});}})[_0x4477('0x18')](function(_0x1c5c9c){if(_0x1c5c9c){if(_0x1aa371){var _0x419c1f=null;for(var _0x42d94e=0x1;_0x42d94e<_0x18c0d8[_0x4477('0x81')][_0x4477('0x83')];++_0x42d94e){_0x419c1f=_0x18c0d8[_0x4477('0x81')][_0x42d94e];var _0x10ad16=_0x419c1f[_0x4477('0x68')]?util[_0x4477('0x7e')](_0x4477('0x84'),_0xfae86a[_0x4477('0x85')],_0x419c1f[_0x4477('0x68')]):_0x4477('0x86');var _0x56c551=_0xe2cbe0['body'][_0x4477('0x87')]||util[_0x4477('0x7e')](_0x4477('0x84'),_0x4477('0x88'),_0x419c1f['ContactId']);switch(_0xfae86a[_0x4477('0x89')]){case _0x4477('0x8a'):_0x10ad16=_0x419c1f[_0x4477('0x68')]?util['format'](_0x4477('0x84'),_0xfae86a[_0x4477('0x85')],_0x419c1f[_0x4477('0x68')]):'System';break;case _0x4477('0x8b'):_0x10ad16=_0x419c1f[_0x4477('0x68')]?_0x419c1f[_0x4477('0x82')][_0x4477('0x8c')]||_0x419c1f[_0x4477('0x82')][_0x4477('0x8d')]:_0x4477('0x86');break;case'agent_fullname':_0x10ad16=_0x419c1f[_0x4477('0x68')]?_0x419c1f['User']['fullname']:'System';break;default:_0x10ad16=_0x419c1f[_0x4477('0x68')]?util['format'](_0x4477('0x84'),_0xfae86a[_0x4477('0x85')],_0x419c1f[_0x4477('0x68')]):'System';}var _0x4aca72=util[_0x4477('0x7e')]('[%s]\x20%s:\x20%s\x0a',moment(_0x419c1f['createdAt'])[_0x4477('0x7e')](_0x4477('0x8e')),_0x419c1f[_0x4477('0x8f')]==='in'?_0x56c551:_0x10ad16,_0x419c1f['body']);if(!_0x419c1f[_0x4477('0x90')]){fs[_0x4477('0x91')](_0x1aa371,_0x4aca72);}}return db['MailAccount'][_0x4477('0x4d')]({'where':{'service':!![]},'include':[{'model':db[_0x4477('0x92')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x4477('0x93')],'as':'CloudProvider','raw':!![]}]}]});}}})['then'](function(_0x1a7608){if(!_0x1a7608||!_0x1a7608[_0x4477('0x94')]||!_0xe2cbe0['body'])return _0x18c0d8;var _0x53148b=_0x1a7608[_0x4477('0x95')]();return respondWithRpcPromise('SendMail',_0x4477('0x96'),{'account':_0x53148b,'message':{'from':util[_0x4477('0x7e')](_0x4477('0x97'),_0x1a7608[_0x4477('0x2e')],_0x1a7608['email']||_0x1a7608['Smtp'][_0x4477('0x3d')]),'to':_0xe2cbe0[_0x4477('0x48')]['mailTranscript'],'subject':'Mail\x20Transcript','text':util['format']('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0xe2cbe0[_0x4477('0x48')]['mailTranscript']),'attachments':[{'path':_0x1aa371}]}})[_0x4477('0x18')](function(){return _0x18c0d8;})[_0x4477('0x22')](function(_0x188cff){logger[_0x4477('0x1c')](_0x188cff);});})[_0x4477('0x18')](respondWithStatusCode(_0x2d032c,0xc8))[_0x4477('0x22')](handleError(_0x2d032c,null));};exports['addMessage']=function(_0x3b6db7,_0x251009){return db['ChatMessage']['find']({'where':{'id':_0x3b6db7[_0x4477('0x4a')]['id']}})['then'](handleEntityNotFound(_0x251009,null))[_0x4477('0x18')](function(_0x5d497f){if(_0x5d497f){return _0x5d497f[_0x4477('0x98')](_0x3b6db7[_0x4477('0x48')][_0x4477('0x99')],_[_0x4477('0x9a')](_0x3b6db7['body'],['ids','id'])||{});}})[_0x4477('0x18')](respondWithResult(_0x251009,null))[_0x4477('0x22')](handleError(_0x251009,null));};exports[_0x4477('0x9b')]=function(_0x155aaa,_0x1b9a35){var _0x19f0a4={'raw':![],'where':{}};var _0x2eb0d3={};var _0x37f926={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x4477('0x4d')]({'where':{'id':_0x155aaa[_0x4477('0x4a')]['id']}})[_0x4477('0x18')](handleEntityNotFound(_0x1b9a35,null))[_0x4477('0x18')](function(_0x5fe5a6){if(_0x5fe5a6){_0x2eb0d3['model']=_[_0x4477('0x3f')](db[_0x4477('0x80')][_0x4477('0x9c')]);_0x2eb0d3[_0x4477('0x3c')]=_[_0x4477('0x3f')](_0x155aaa[_0x4477('0x3c')]);_0x2eb0d3[_0x4477('0x40')]=_[_0x4477('0x41')](_0x2eb0d3[_0x4477('0x42')],_0x2eb0d3[_0x4477('0x3c')]);_0x19f0a4[_0x4477('0x43')]=_[_0x4477('0x41')](_0x2eb0d3[_0x4477('0x42')],qs[_0x4477('0x44')](_0x155aaa[_0x4477('0x3c')][_0x4477('0x44')]));_0x19f0a4[_0x4477('0x43')]=_0x19f0a4[_0x4477('0x43')][_0x4477('0x83')]?_0x19f0a4[_0x4477('0x43')]:_0x2eb0d3[_0x4477('0x42')];if(!_0x155aaa[_0x4477('0x3c')][_0x4477('0x9d')]('nolimit')){_0x19f0a4[_0x4477('0x26')]=qs[_0x4477('0x26')](_0x155aaa[_0x4477('0x3c')][_0x4477('0x26')]);_0x19f0a4[_0x4477('0x28')]=qs[_0x4477('0x28')](_0x155aaa[_0x4477('0x3c')]['offset']);}_0x19f0a4[_0x4477('0x9e')]=qs[_0x4477('0x9f')](_0x155aaa[_0x4477('0x3c')]['sort']);_0x19f0a4[_0x4477('0xa0')]=qs[_0x4477('0x40')](_['pick'](_0x155aaa[_0x4477('0x3c')],_0x2eb0d3[_0x4477('0x40')]));_0x19f0a4['where']['ChatInteractionId']=_0x5fe5a6['id'];if(_0x155aaa[_0x4477('0x3c')][_0x4477('0xa1')]){_0x19f0a4['where']=_[_0x4477('0x31')](_0x19f0a4[_0x4477('0xa0')],{'$or':_[_0x4477('0x36')](_0x19f0a4[_0x4477('0x43')],function(_0x23caa3){var _0x48a423={};_0x48a423[_0x23caa3]={'$like':'%'+_0x155aaa['query'][_0x4477('0xa1')]+'%'};return _0x48a423;})});}if(_0x155aaa[_0x4477('0x3c')]['$gte']){var _0x282621=_0x155aaa['query']['$gte'][_0x4477('0xa2')](',');var _0x4b2bc0={};_0x4b2bc0[_0x282621[0x0]]={'$gte':moment(_0x282621[0x1])[_0x4477('0x7e')](_0x4477('0xa3'))};_0x19f0a4[_0x4477('0xa0')]=_[_0x4477('0x31')](_0x19f0a4[_0x4477('0xa0')],_0x4b2bc0);}_0x19f0a4=_['merge']({},_0x19f0a4,_0x155aaa[_0x4477('0x46')]);return db[_0x4477('0x80')][_0x4477('0x27')]({'where':_0x19f0a4[_0x4477('0xa0')]})[_0x4477('0x18')](function(_0x420c53){_0x37f926[_0x4477('0x27')]=_0x420c53;if(_0x155aaa[_0x4477('0x3c')][_0x4477('0xa4')]){_0x19f0a4[_0x4477('0x45')]=[{'all':!![]}];}return db[_0x4477('0x80')][_0x4477('0x3b')](_0x19f0a4);})[_0x4477('0x18')](function(_0x2aeae8){_0x37f926[_0x4477('0xa5')]=_0x2aeae8;return _0x37f926;});}})['then'](respondWithFilteredResult(_0x1b9a35,_0x19f0a4))[_0x4477('0x22')](handleError(_0x1b9a35,null));};exports[_0x4477('0xa6')]=function(_0x4d4dfe,_0x402bb5){var _0x4d8758={'where':{}},_0x17444a={},_0x209a3e={'count':0x0,'rows':[]};return db[_0x4477('0x37')][_0x4477('0x4d')]({'where':{'id':_0x4d4dfe[_0x4477('0x4a')]['id']}})['then'](handleEntityNotFound(_0x402bb5,null))[_0x4477('0x18')](function(_0x4b67ae){if(_0x4b67ae){_0x17444a['model']=_[_0x4477('0x3f')](db[_0x4477('0x80')]['rawAttributes']);_0x17444a['query']=_['keys'](_0x4d4dfe[_0x4477('0x3c')]);_0x17444a[_0x4477('0x40')]=_[_0x4477('0x41')](_0x17444a[_0x4477('0x42')],_0x17444a[_0x4477('0x3c')]);_0x4d8758['attributes']=_[_0x4477('0x41')](_0x17444a[_0x4477('0x42')],qs[_0x4477('0x44')](_0x4d4dfe[_0x4477('0x3c')][_0x4477('0x44')]));_0x4d8758['attributes']=_0x4d8758['attributes'][_0x4477('0x83')]?_0x4d8758[_0x4477('0x43')]:_0x17444a['model'];if(!_0x4d4dfe[_0x4477('0x3c')][_0x4477('0x9d')](_0x4477('0xa7'))){_0x4d8758['limit']=qs['limit'](_0x4d4dfe[_0x4477('0x3c')][_0x4477('0x26')]);_0x4d8758[_0x4477('0x28')]=qs[_0x4477('0x28')](_0x4d4dfe[_0x4477('0x3c')][_0x4477('0x28')]);}_0x4d8758[_0x4477('0x9e')]=qs[_0x4477('0x9f')](_0x4d4dfe[_0x4477('0x3c')][_0x4477('0x9f')]);_0x4d8758[_0x4477('0xa0')]=qs['filters'](_[_0x4477('0xa8')](_0x4d4dfe[_0x4477('0x3c')],_0x17444a[_0x4477('0x40')]));_0x4d8758[_0x4477('0xa0')][_0x4477('0xa9')]=_0x4b67ae['id'];if(_0x4d4dfe[_0x4477('0x3c')][_0x4477('0xa1')]){_0x4d8758[_0x4477('0xa0')]=_['merge'](_0x4d8758['where'],{'$or':_[_0x4477('0x36')](_0x4d8758[_0x4477('0x43')],function(_0x1afef1){var _0x2f23f5={};_0x2f23f5[_0x1afef1]={'$like':'%'+_0x4d4dfe[_0x4477('0x3c')][_0x4477('0xa1')]+'%'};return _0x2f23f5;})});}_0x4d8758['where'][_0x4477('0x90')]=![];if(_0x4d4dfe[_0x4477('0x3c')]['id']){_0x4d8758[_0x4477('0xa0')]['id']={'$gt':_0x4d4dfe[_0x4477('0x3c')]['id']};}_0x4d8758=_['merge']({},_0x4d8758,_0x4d4dfe[_0x4477('0x46')]);return db['ChatMessage'][_0x4477('0x27')]({'where':_0x4d8758['where']})[_0x4477('0x18')](function(_0x3043dc){_0x209a3e[_0x4477('0x27')]=_0x3043dc;_0x4d8758[_0x4477('0x45')]=[];if(_0x4d4dfe[_0x4477('0x3c')][_0x4477('0xaa')]){_0x4d8758[_0x4477('0x45')]['push']({'model':db[_0x4477('0x82')],'as':'User','attributes':['id','fullname',_0x4477('0x8c')]});}if(_0x4d4dfe['query'][_0x4477('0xa4')]){_0x4d8758[_0x4477('0x45')]=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x4d8758);})[_0x4477('0x18')](function(_0x48cbba){_0x209a3e[_0x4477('0xa5')]=_0x48cbba;return _0x209a3e;});}})[_0x4477('0x18')](respondWithFilteredResult(_0x402bb5,_0x4d8758))[_0x4477('0x22')](handleError(_0x402bb5,null));};exports[_0x4477('0xab')]=function(_0x5b5bdc,_0x401f9e){return db['ChatInteraction'][_0x4477('0x49')]({'where':{'id':_0x5b5bdc['params']['id']}})['then'](handleEntityNotFound(_0x401f9e,null))[_0x4477('0x18')](function(_0x364ff1){if(_0x364ff1){return _0x364ff1[_0x4477('0xac')](_0x5b5bdc[_0x4477('0x48')][_0x4477('0x99')],_['omit'](_0x5b5bdc[_0x4477('0x48')],[_0x4477('0x99'),'id'])||{})[_0x4477('0xad')](function(){return db[_0x4477('0xae')][_0x4477('0x3b')]({'attributes':['id',_0x4477('0x2e'),'color'],'where':{'id':_0x5b5bdc[_0x4477('0x48')][_0x4477('0x99')]}});})[_0x4477('0x18')](function(_0x382d3c){socket[_0x4477('0xaf')](_0x4477('0xb0'),{'id':Number(_0x5b5bdc['params']['id']),'tags':_0x382d3c||[]});return{'id':Number(_0x5b5bdc['params']['id']),'tags':_0x382d3c||[]};});}})[_0x4477('0x18')](respondWithResult(_0x401f9e,null))[_0x4477('0x22')](handleError(_0x401f9e,null));};exports[_0x4477('0xb1')]=function(_0x5510c1,_0x58f64c){return db[_0x4477('0x37')][_0x4477('0x49')]({'where':{'id':_0x5510c1[_0x4477('0x4a')]['id']}})[_0x4477('0x18')](handleEntityNotFound(_0x58f64c,null))[_0x4477('0x18')](function(_0x578146){if(_0x578146){return _0x578146['removeTags'](_0x5510c1[_0x4477('0x3c')][_0x4477('0x99')]);}})[_0x4477('0x18')](respondWithStatusCode(_0x58f64c,null))[_0x4477('0x22')](handleError(_0x58f64c,null));};exports[_0x4477('0xb2')]=function(_0x44893b,_0x56be44){var _0x30c99f=moment()[_0x4477('0xb3')]()[_0x4477('0xb4')]();var _0x133db5=path['join'](config['root'],_0x4477('0xb5'),_0x4477('0xb6'),_0x4477('0xb7'));var _0x4ba316=path['join'](config['root'],_0x4477('0xb5'),_0x4477('0xb6'),_0x4477('0xb8'));var _0xfd4918=path[_0x4477('0x77')](_0x133db5,_0x30c99f);var _0x3840ca=util['format'](_0x4477('0xb9'),_0x44893b[_0x4477('0x4a')]['id'],_0x30c99f);var _0x38f254=path[_0x4477('0x77')](_0x133db5,_0x3840ca);var _0x58bc0d=[];_0x58bc0d[_0x4477('0xba')]({'model':db[_0x4477('0x82')],'as':'User','attributes':['id',_0x4477('0x8d')],'raw':!![]});_0x58bc0d[_0x4477('0xba')]({'model':db[_0x4477('0x63')],'as':_0x4477('0x64'),'attributes':['id',_0x4477('0xbb'),_0x4477('0xbc')],'raw':!![]});if(_0x44893b['query'][_0x4477('0xb8')]){_0x58bc0d[_0x4477('0xba')]({'model':db[_0x4477('0x74')],'as':_0x4477('0x74'),'raw':!![]});}var _0x220e35=[{'model':db[_0x4477('0x80')],'as':'Messages','attributes':['id','body',_0x4477('0xbd'),_0x4477('0x8f'),_0x4477('0x90'),_0x4477('0xbe')],'include':_0x58bc0d}];_0x220e35[_0x4477('0xba')]({'model':db[_0x4477('0x4e')],'as':_0x4477('0xbf'),'attributes':['id',_0x4477('0x2e')]});_0x220e35[_0x4477('0xba')]({'model':db[_0x4477('0x82')],'as':_0x4477('0xc0'),'attributes':['id',_0x4477('0x8d')]});return db[_0x4477('0x37')][_0x4477('0x49')]({'where':{'id':_0x44893b[_0x4477('0x4a')]['id']},'include':_0x220e35})[_0x4477('0x18')](handleEntityNotFound(_0x56be44,null))[_0x4477('0x18')](function(_0x412560){if(_0x412560){var _0x518d7a=_0x412560[_0x4477('0xc1')]({'plain':!![]});fs[_0x4477('0xc2')](_0xfd4918);var _0x1793ab={'channel':_0x4477('0xc3'),'account':_0x518d7a[_0x4477('0xbf')]['name'],'agent':_0x518d7a[_0x4477('0xc0')]?_0x518d7a[_0x4477('0xc0')][_0x4477('0x8d')]:'N.A.','createdAt':moment(_0x518d7a[_0x4477('0xbd')])[_0x4477('0x7e')](_0x4477('0xa3'))[_0x4477('0xb4')](),'closedAt':_0x518d7a[_0x4477('0x6a')]?moment(_0x518d7a[_0x4477('0xc4')])[_0x4477('0x7e')](_0x4477('0xa3'))[_0x4477('0xb4')]():'','disposition':_0x518d7a[_0x4477('0x6b')],'chatInfo':{'browser':_0x518d7a[_0x4477('0xc5')],'os':_0x518d7a['osName'],'referer':_0x518d7a['referer'],'customerIp':_0x518d7a['customerIp'],'customerPort':_0x518d7a[_0x4477('0xc6')]?_0x518d7a[_0x4477('0xc6')]:_0x4477('0xc7')},'messages':_(_0x518d7a[_0x4477('0x81')])[_0x4477('0xc8')]()[_0x4477('0xa1')]({'secret':![]})[_0x4477('0x36')](function(_0x54c0bb){if(_0x54c0bb['Attachment']){var _0x150b99=path[_0x4477('0x77')](_0x4ba316,_0x54c0bb[_0x4477('0x74')][_0x4477('0x70')]);if(fs[_0x4477('0xc9')](_0x150b99)){fs[_0x4477('0xca')](_0x150b99)['pipe'](fs[_0x4477('0xcb')](path['join'](_0xfd4918,_0x54c0bb[_0x4477('0x74')][_0x4477('0x70')])));}}return{'date':moment(_0x54c0bb[_0x4477('0xbd')])[_0x4477('0x7e')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4477('0xb4')](),'sender':_0x54c0bb['direction']==='out'?_0x54c0bb[_0x4477('0x82')]?_0x54c0bb[_0x4477('0x82')][_0x4477('0x8d')]:_0x4477('0x86'):_0x54c0bb['Contact'][_0x4477('0xbb')]+(_0x54c0bb['Contact'][_0x4477('0xbc')]?'\x20'+_0x54c0bb[_0x4477('0x64')][_0x4477('0xbc')]:''),'body':_0x54c0bb[_0x4477('0x74')]?_0x54c0bb['Attachment'][_0x4477('0x70')]:_0x54c0bb[_0x4477('0x48')],'direction':_0x54c0bb[_0x4477('0x8f')]===_0x4477('0x60')?'A':'C','secret':_0x54c0bb[_0x4477('0x90')],'read':_0x54c0bb[_0x4477('0xbe')],'attachment':_0x54c0bb['Attachment']};})[_0x4477('0xcc')]()};return ejs['renderFile'](path[_0x4477('0x77')](config[_0x4477('0x78')],_0x4477('0xb5'),'views',_0x4477('0xcd')),{'interaction':_0x1793ab})[_0x4477('0x18')](function(_0x2d739c){var _0x2ea6d2=path['join'](_0xfd4918,_0x4477('0xce')+_0x518d7a['id']+'-'+_0x30c99f+_0x4477('0xcf'));var _0x15065b={'path':_0x2ea6d2,'channel':_0x4477('0xc3'),'interactionId':_0x518d7a['id']};return pdf[_0x4477('0xd0')](_0x2d739c,_0x15065b);})[_0x4477('0x18')](function(){return new Promise(function(_0x36b858,_0x34a81b){zipdir(_0xfd4918,{'saveTo':_0x38f254},function(_0x25cd98,_0x58b51e){if(_0x25cd98)return _0x34a81b(_0x25cd98);return _0x36b858(_0x58b51e);});})[_0x4477('0x18')](function(){return new BPromise(function(_0x3a06d6,_0x444680){rimraf(_0xfd4918,function(_0x2ef212){if(_0x2ef212)_0x444680(_0x2ef212);return _0x3a06d6();});});})[_0x4477('0x18')](function(){return _0x56be44[_0x4477('0xb2')](_0x38f254,_0x3840ca,function(_0x132dd2){if(_0x132dd2){logger[_0x4477('0x1c')](_0x4477('0xd1'),_0x132dd2);}else{fs['unlinkSync'](_0x38f254);}});});});}else{return _0x56be44[_0x4477('0x2c')](0xc8);}})[_0x4477('0x22')](handleError(_0x56be44,null));};
\ No newline at end of file
+var _0xfa91=['files','tmp','attachments','lastName','Attachment','read','Account','Owner','get','mkdirSync','Chat','toString','closedAt','disposition','browserName','osName','referer','customerIp','tail','createReadStream','pipe','firstName','value','renderFile','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','util','path','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','name','send','render','merge','body','contact','agent','interaction','account','index','map','ChatInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','chat','show','params','model','keys','query','intersection','attributes','fields','length','include','options','create','find','describe','findOne','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooMetadata','user','fullname','email','POST','vidaooNote','follow','isNull','parse','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','Error\x20in\x20Vidaoo\x20configuration','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','Contact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','Interaction\x20already\x20assigned','closed','AbandonInteraction','attachmentUpload','file','originalname','basename','attachmentDownload','Unauthorized','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','download','close','mailTranscript','root','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','CmContact','ContactId','UserId','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','CloudProvider','Smtp','getSmtpOptions','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','filters','hasOwnProperty','nolimit','order','sort','pick','where','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','rows','getMyMessages','includeAgent','push','addTags','setTags','omit','Tag','color','emit','removeTags','unix','server'];(function(_0x261d17,_0x115fe1){var _0x5a50da=function(_0x409fc0){while(--_0x409fc0){_0x261d17['push'](_0x261d17['shift']());}};_0x5a50da(++_0x115fe1);}(_0xfa91,0x1cd));var _0x1fa9=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xfa91[_0x465a0c];return _0x1e202e;};'use strict';var rimraf=require(_0x1fa9('0x0'));var zipdir=require(_0x1fa9('0x1'));var rp=require(_0x1fa9('0x2'));var moment=require(_0x1fa9('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1fa9('0x4'));var path=require(_0x1fa9('0x5'));var ejs=require(_0x1fa9('0x6'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x1fa9('0x7'));var interaction=require(_0x1fa9('0x8'));var qs=require(_0x1fa9('0x9'));var pdf=require(_0x1fa9('0xa'));var logger=require(_0x1fa9('0xb'))(_0x1fa9('0xc'));var config=require(_0x1fa9('0xd'));var db=require(_0x1fa9('0xe'))['db'];config[_0x1fa9('0xf')]=_['defaults'](config['redis'],{'host':_0x1fa9('0x10'),'port':0x18eb});var socket=require(_0x1fa9('0x11'))(new Redis(config['redis']));require(_0x1fa9('0x12'))[_0x1fa9('0x13')](socket);var jayson=require(_0x1fa9('0x14'));var client=jayson['client'][_0x1fa9('0x15')]({'port':0x232b});var client9004=jayson[_0x1fa9('0x16')][_0x1fa9('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x5bc1cf,_0x1e61bd,_0x18c54f,_0x27208c){return new BPromise(function(_0x7d865f,_0x38eb26){var _0x37cc46=_0x27208c||client;return _0x37cc46[_0x1fa9('0x17')](_0x5bc1cf,_0x18c54f)[_0x1fa9('0x18')](function(_0x28fd97){logger[_0x1fa9('0x19')](_0x1fa9('0x1a'),_0x1e61bd,_0x1fa9('0x1b'));logger[_0x1fa9('0x1c')](_0x1fa9('0x1d'),_0x1e61bd,_0x1fa9('0x1b'),JSON[_0x1fa9('0x1e')](_0x28fd97));if(_0x28fd97[_0x1fa9('0x1f')]){if(_0x28fd97[_0x1fa9('0x1f')][_0x1fa9('0x20')]===0x1f4){logger['error'](_0x1fa9('0x1a'),_0x1e61bd,_0x28fd97[_0x1fa9('0x1f')][_0x1fa9('0x21')]);return _0x38eb26(_0x28fd97[_0x1fa9('0x1f')][_0x1fa9('0x21')]);}logger[_0x1fa9('0x1f')]('ChatInteraction,\x20%s,\x20%s',_0x1e61bd,_0x28fd97[_0x1fa9('0x1f')]['message']);return _0x7d865f(_0x28fd97[_0x1fa9('0x1f')]['message']);}else{logger[_0x1fa9('0x19')](_0x1fa9('0x1a'),_0x1e61bd,_0x1fa9('0x1b'));_0x7d865f(_0x28fd97[_0x1fa9('0x22')][_0x1fa9('0x21')]);}})[_0x1fa9('0x23')](function(_0x5419b3){logger[_0x1fa9('0x1f')](_0x1fa9('0x1a'),_0x1e61bd,_0x5419b3);_0x38eb26(_0x5419b3);});});}function respondWithStatusCode(_0x451dc8,_0x153b94){_0x153b94=_0x153b94||0xcc;return function(_0xdbead7){if(_0xdbead7){return _0x451dc8[_0x1fa9('0x24')](_0x153b94);}return _0x451dc8[_0x1fa9('0x25')](_0x153b94)[_0x1fa9('0x26')]();};}function respondWithResult(_0x5a5dad,_0x3d8ff6){_0x3d8ff6=_0x3d8ff6||0xc8;return function(_0x24234f){if(_0x24234f){return _0x5a5dad[_0x1fa9('0x25')](_0x3d8ff6)[_0x1fa9('0x27')](_0x24234f);}};}function respondWithFilteredResult(_0x311f82,_0x3ad311){return function(_0x32fd3a){if(_0x32fd3a){var _0x4d86d8=typeof _0x3ad311[_0x1fa9('0x28')]===_0x1fa9('0x29')&&typeof _0x3ad311[_0x1fa9('0x2a')]===_0x1fa9('0x29');var _0x2e15d6=_0x32fd3a[_0x1fa9('0x2b')];var _0x3bbbd2=_0x4d86d8?0x0:_0x3ad311[_0x1fa9('0x28')];var _0x4532fa=_0x4d86d8?_0x32fd3a[_0x1fa9('0x2b')]:_0x3ad311[_0x1fa9('0x28')]+_0x3ad311['limit'];var _0x2e4246;if(_0x4532fa>=_0x2e15d6){_0x4532fa=_0x2e15d6;_0x2e4246=0xc8;}else{_0x2e4246=0xce;}_0x311f82[_0x1fa9('0x25')](_0x2e4246);return _0x311f82[_0x1fa9('0x2c')](_0x1fa9('0x2d'),_0x3bbbd2+'-'+_0x4532fa+'/'+_0x2e15d6)['json'](_0x32fd3a);}return null;};}function saveUpdates(_0x39267d){return function(_0x23164f){if(_0x23164f){return _0x23164f[_0x1fa9('0x2e')](_0x39267d)[_0x1fa9('0x18')](function(_0x40f21a){return _0x40f21a;});}return null;};}function removeEntity(_0x317dc2){return function(_0xe4a639){if(_0xe4a639){return _0xe4a639[_0x1fa9('0x2f')]()[_0x1fa9('0x18')](function(){_0x317dc2['status'](0xcc)[_0x1fa9('0x26')]();});}};}function handleEntityNotFound(_0x1a774f){return function(_0xf5d196){if(!_0xf5d196){_0x1a774f[_0x1fa9('0x24')](0x194);}return _0xf5d196;};}function handleError(_0x41d9ef,_0x14c0a2){_0x14c0a2=_0x14c0a2||0x1f4;return function(_0x4df67a){logger[_0x1fa9('0x1f')](_0x4df67a['stack']);if(_0x4df67a[_0x1fa9('0x30')]){delete _0x4df67a[_0x1fa9('0x30')];}_0x41d9ef[_0x1fa9('0x25')](_0x14c0a2)[_0x1fa9('0x31')](_0x4df67a);};}function getMustacheRender(_0x2d4062,_0x4c9722){return Mustache[_0x1fa9('0x32')](_0x2d4062,_[_0x1fa9('0x33')](_0x4c9722[_0x1fa9('0x34')],{'contact':_0x4c9722[_0x1fa9('0x35')],'message':_0x4c9722[_0x1fa9('0x21')],'agent':_0x4c9722[_0x1fa9('0x36')],'interaction':_0x4c9722[_0x1fa9('0x37')],'account':_0x4c9722[_0x1fa9('0x38')]}))||'';}exports[_0x1fa9('0x39')]=function(_0x40d90a,_0xa2f99c){var _0x2dcdd7={};var _0x3e4759=_[_0x1fa9('0x3a')](db[_0x1fa9('0x3b')][_0x1fa9('0x3c')],function(_0x1ade1d){return{'name':_0x1ade1d[_0x1fa9('0x3d')],'type':_0x1ade1d[_0x1fa9('0x3e')][_0x1fa9('0x3f')]};});_0x2dcdd7=qs[_0x1fa9('0x40')](_0x3e4759,_0x40d90a);return interaction[_0x1fa9('0x41')](_0x1fa9('0x42'),_0x40d90a['query'],_0x40d90a['user'],_0x2dcdd7,_0x3e4759)['then'](respondWithFilteredResult(_0xa2f99c,_0x2dcdd7))['catch'](handleError(_0xa2f99c,null));};exports[_0x1fa9('0x43')]=function(_0x917dbc,_0x5bc8cf){var _0x458a45={'raw':![],'where':{'id':_0x917dbc[_0x1fa9('0x44')]['id']}},_0x4cd237={};_0x4cd237[_0x1fa9('0x45')]=_[_0x1fa9('0x46')](db['ChatInteraction'][_0x1fa9('0x3c')]);_0x4cd237[_0x1fa9('0x47')]=_['keys'](_0x917dbc[_0x1fa9('0x47')]);_0x4cd237['filters']=_[_0x1fa9('0x48')](_0x4cd237[_0x1fa9('0x45')],_0x4cd237['query']);_0x458a45[_0x1fa9('0x49')]=_[_0x1fa9('0x48')](_0x4cd237['model'],qs[_0x1fa9('0x4a')](_0x917dbc[_0x1fa9('0x47')][_0x1fa9('0x4a')]));_0x458a45[_0x1fa9('0x49')]=_0x458a45[_0x1fa9('0x49')][_0x1fa9('0x4b')]?_0x458a45['attributes']:_0x4cd237[_0x1fa9('0x45')];if(_0x917dbc[_0x1fa9('0x47')]['includeAll']){_0x458a45[_0x1fa9('0x4c')]=[{'all':!![]}];}_0x458a45=_['merge']({},_0x458a45,_0x917dbc[_0x1fa9('0x4d')]);return db['ChatInteraction']['find'](_0x458a45)[_0x1fa9('0x18')](handleEntityNotFound(_0x5bc8cf,null))['then'](respondWithResult(_0x5bc8cf,null))[_0x1fa9('0x23')](handleError(_0x5bc8cf,null));};exports[_0x1fa9('0x4e')]=function(_0x875b,_0x1b8418){return db[_0x1fa9('0x3b')][_0x1fa9('0x4e')](_0x875b[_0x1fa9('0x34')],{})['then'](respondWithResult(_0x1b8418,0xc9))[_0x1fa9('0x23')](handleError(_0x1b8418,null));};exports['update']=function(_0x273509,_0x27da0c){if(_0x273509[_0x1fa9('0x34')]['id']){delete _0x273509['body']['id'];}return db[_0x1fa9('0x3b')]['find']({'where':{'id':_0x273509[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](handleEntityNotFound(_0x27da0c,null))[_0x1fa9('0x18')](saveUpdates(_0x273509[_0x1fa9('0x34')],null))[_0x1fa9('0x18')](respondWithResult(_0x27da0c,null))[_0x1fa9('0x23')](handleError(_0x27da0c,null));};exports['destroy']=function(_0xb00fb5,_0x2acccf){return db[_0x1fa9('0x3b')][_0x1fa9('0x4f')]({'where':{'id':_0xb00fb5[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](handleEntityNotFound(_0x2acccf,null))[_0x1fa9('0x18')](removeEntity(_0x2acccf,null))['catch'](handleError(_0x2acccf,null));};exports[_0x1fa9('0x50')]=function(_0x449e3e,_0x5497ea){return db['ChatInteraction'][_0x1fa9('0x50')]()[_0x1fa9('0x18')](respondWithResult(_0x5497ea,null))['catch'](handleError(_0x5497ea,null));};exports['createVidaooSession']=function(_0x4d6a6e,_0x226bb5){var _0x810053=_0x4d6a6e['params']['id'];var _0x2ba742;var _0x85d52;var _0x23ee2c;return db['ChatInteraction'][_0x1fa9('0x51')]({'where':{'id':_0x810053}})['then'](function(_0xa9c1ad){_0x2ba742=_0xa9c1ad;return db['ChatWebsite'][_0x1fa9('0x51')]({'where':{'id':_0xa9c1ad[_0x1fa9('0x52')]},'attributes':['id',_0x1fa9('0x53'),_0x1fa9('0x54'),_0x1fa9('0x55'),'vidaooNote',_0x1fa9('0x56')],'raw':!![]});})[_0x1fa9('0x18')](function(_0x607e84){if(_0x607e84&&_0x607e84['vidaooApiKey']&&_0x607e84[_0x1fa9('0x54')]){_0x85d52=_0x607e84;var _0x1f7ddf={'interaction':{'id':_0x810053},'agent':{'id':_0x4d6a6e['user']['id'],'name':_0x4d6a6e['user'][_0x1fa9('0x30')],'fullname':_0x4d6a6e[_0x1fa9('0x57')][_0x1fa9('0x58')],'email':_0x4d6a6e[_0x1fa9('0x57')][_0x1fa9('0x59')]},'contact':_0x4d6a6e[_0x1fa9('0x34')][_0x1fa9('0x35')],'account':_0x4d6a6e[_0x1fa9('0x34')][_0x1fa9('0x38')]};var _0x1931a8={'rejectUnauthorized':![],'method':_0x1fa9('0x5a'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x607e84[_0x1fa9('0x53')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x4d6a6e[_0x1fa9('0x57')]['email']],'buttons':null,'topic':_0x85d52[_0x1fa9('0x55')],'note':_['isNull'](_0x85d52['vidaooNote'])?null:getMustacheRender(_0x85d52[_0x1fa9('0x5b')],_0x1f7ddf),'metadata':null},'redirect':_0x1fa9('0x5c'),'json':!![]};try{if(!_[_0x1fa9('0x5d')](_0x85d52[_0x1fa9('0x56')])){var _0xd109b2=getMustacheRender(_0x85d52[_0x1fa9('0x56')],_0x1f7ddf);var _0x5e443d=JSON[_0x1fa9('0x5e')](_0xd109b2);_0x1931a8[_0x1fa9('0x34')][_0x1fa9('0x5f')]=_0x5e443d;}}catch(_0x2175e1){throw new db['Sequelize'][(_0x1fa9('0x60'))](_0x1fa9('0x61'));}return rp(_0x1931a8);}else{throw new db[(_0x1fa9('0x62'))][(_0x1fa9('0x60'))](_0x1fa9('0x63'));}})[_0x1fa9('0x18')](function(_0x4d7290){_0x23ee2c=_0x4d7290;if(_0x23ee2c['id']){var _0x580242={'body':_0x23ee2c['join_url'],'ChatWebsiteId':_0x85d52['id'],'ChatInteractionId':_0x2ba742['id'],'direction':_0x1fa9('0x64'),'UserId':_0x4d6a6e[_0x1fa9('0x57')]['id']};return db[_0x1fa9('0x65')][_0x1fa9('0x4e')](_0x580242,{});}else{throw new db[(_0x1fa9('0x62'))][(_0x1fa9('0x60'))](_0x1fa9('0x66'));}})[_0x1fa9('0x18')](function(){return _0x2ba742[_0x1fa9('0x67')]({'vidaooSessionId':_0x23ee2c['id']});})['then'](respondWithResult(_0x226bb5,null))[_0x1fa9('0x23')](handleError(_0x226bb5,null));};exports[_0x1fa9('0x68')]=function(_0x2077c6,_0x4e9494){if(_0x2077c6[_0x1fa9('0x34')]['id']){delete _0x2077c6[_0x1fa9('0x34')]['id'];}return db[_0x1fa9('0x3b')][_0x1fa9('0x4f')]({'where':{'id':_0x2077c6[_0x1fa9('0x44')]['id']},'include':[{'model':db['CmContact'],'as':_0x1fa9('0x69')}]})['then'](handleEntityNotFound(_0x4e9494,null))[_0x1fa9('0x18')](saveUpdates(_0x2077c6[_0x1fa9('0x34')],null))['then'](respondWithResult(_0x4e9494,null))['catch'](handleError(_0x4e9494,null));};exports['abandon']=function(_0x4736c1,_0x47774c){if(_0x4736c1['body']['id']){delete _0x4736c1['body']['id'];}return db[_0x1fa9('0x3b')][_0x1fa9('0x4f')]({'where':{'id':_0x4736c1[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](function(_0x516ecc){if(!_0x516ecc){logger['error'](_0x1fa9('0x6a'),_0x1fa9('0x6b'),0x194,'entity\x20not\x20found');_0x47774c[_0x1fa9('0x24')](0x194);}else{if(_0x516ecc['UserId']){throw new db[(_0x1fa9('0x62'))][(_0x1fa9('0x60'))](_0x1fa9('0x6c'));}}return _0x516ecc;})[_0x1fa9('0x18')](function(_0x514cc0){if(_0x514cc0){return _0x514cc0['update']({'closed':_0x4736c1['body'][_0x1fa9('0x6d')],'disposition':_0x4736c1[_0x1fa9('0x34')]['disposition']})['then'](function(_0x51053f){return _0x51053f;});}})[_0x1fa9('0x18')](function(){return respondWithRpcPromise(_0x1fa9('0x6e'),_0x1fa9('0x6b'),_0x4736c1[_0x1fa9('0x34')],client9004);})['then'](respondWithResult(_0x47774c,null))[_0x1fa9('0x23')](handleError(_0x47774c,null));};exports[_0x1fa9('0x6f')]=function(_0x17ffa8,_0x5bb0db){_0x17ffa8[_0x1fa9('0x34')]['name']=_0x17ffa8[_0x1fa9('0x70')][_0x1fa9('0x71')];_0x17ffa8[_0x1fa9('0x34')][_0x1fa9('0x72')]=_0x17ffa8[_0x1fa9('0x70')]['filename'];_0x17ffa8['body'][_0x1fa9('0x3e')]=_0x17ffa8[_0x1fa9('0x70')]['mimetype'];return db['Attachment'][_0x1fa9('0x4e')](_0x17ffa8[_0x1fa9('0x34')])['then'](respondWithResult(_0x5bb0db,0xc9))[_0x1fa9('0x23')](handleError(_0x5bb0db,null));};exports[_0x1fa9('0x73')]=function(_0x4ca258,_0x1003d6){return db[_0x1fa9('0x3b')][_0x1fa9('0x51')]({'where':{'id':_0x4ca258[_0x1fa9('0x44')]['id']},'raw':!![]})[_0x1fa9('0x18')](handleEntityNotFound(_0x1003d6,null))['then'](function(_0x52ecf0){if(_0x52ecf0){if(_0x52ecf0[_0x1fa9('0x6d')]){return _0x1003d6[_0x1fa9('0x25')](0x193)[_0x1fa9('0x27')]({'status':0x193,'message':_0x1fa9('0x74')});}return db['Attachment'][_0x1fa9('0x51')]({'where':{'id':_0x4ca258[_0x1fa9('0x47')]['attachId']},'raw':!![]})[_0x1fa9('0x18')](handleEntityNotFound(_0x1003d6,null));}})[_0x1fa9('0x18')](function(_0x3ae33a){if(_0x3ae33a){var _0x2c84ff=_0x3ae33a[_0x1fa9('0x75')]!==null;var _0x36a468=path[_0x1fa9('0x76')](config['root'],_0x1fa9('0x77'));if(_0x2c84ff){_0x36a468=path['join'](_0x36a468,_0x1fa9('0x78'));}var _0x1222e3=path[_0x1fa9('0x76')](_0x36a468,_0x3ae33a['basename']);return _0x1003d6[_0x1fa9('0x79')](_0x1222e3);}})[_0x1fa9('0x23')](handleError(_0x1003d6,null));};exports[_0x1fa9('0x7a')]=function(_0x319907,_0x19eae0){var _0x351029=null;var _0x3de2ec=null;var _0x39b8e4=null;if(_0x319907[_0x1fa9('0x34')]['id']){delete _0x319907[_0x1fa9('0x34')]['id'];}if(_0x319907[_0x1fa9('0x34')][_0x1fa9('0x7b')]){_0x39b8e4=path[_0x1fa9('0x76')](config[_0x1fa9('0x7c')],_0x1fa9('0x7d'),util[_0x1fa9('0x7e')](_0x1fa9('0x7f'),Date[_0x1fa9('0x80')]()));_0x319907[_0x1fa9('0x34')][_0x1fa9('0x81')]=_0x39b8e4;}return db['ChatInteraction']['find']({'where':{'id':_0x319907[_0x1fa9('0x44')]['id']},'include':[{'model':db[_0x1fa9('0x65')],'as':_0x1fa9('0x82'),'include':[{'model':db[_0x1fa9('0x83')],'as':_0x1fa9('0x83')}]}]})['then'](handleEntityNotFound(_0x19eae0,null))['then'](saveUpdates(_0x319907[_0x1fa9('0x34')],null))[_0x1fa9('0x18')](function(_0x34c1a6){if(_0x34c1a6){_0x351029=_0x34c1a6;return db['ChatWebsite'][_0x1fa9('0x4f')]({'where':{'id':_0x351029['ChatWebsiteId']}});}})[_0x1fa9('0x18')](function(_0x153ccd){if(_0x153ccd){_0x3de2ec=_0x153ccd;return db[_0x1fa9('0x84')][_0x1fa9('0x4f')]({'where':{'id':_0x351029[_0x1fa9('0x85')]}});}})[_0x1fa9('0x18')](function(_0x476b18){if(_0x476b18){if(_0x39b8e4){var _0x2ce50a=null;for(var _0x5ca72c=0x1;_0x5ca72c<_0x351029['Messages'][_0x1fa9('0x4b')];++_0x5ca72c){_0x2ce50a=_0x351029[_0x1fa9('0x82')][_0x5ca72c];var _0x3151ae=_0x2ce50a[_0x1fa9('0x86')]?util[_0x1fa9('0x7e')](_0x1fa9('0x87'),_0x3de2ec[_0x1fa9('0x88')],_0x2ce50a[_0x1fa9('0x86')]):_0x1fa9('0x89');var _0x43d34c=_0x319907[_0x1fa9('0x34')]['customer']||util[_0x1fa9('0x7e')](_0x1fa9('0x87'),_0x1fa9('0x8a'),_0x2ce50a[_0x1fa9('0x85')]);switch(_0x3de2ec[_0x1fa9('0x8b')]){case _0x1fa9('0x8c'):_0x3151ae=_0x2ce50a[_0x1fa9('0x86')]?util['format'](_0x1fa9('0x87'),_0x3de2ec[_0x1fa9('0x88')],_0x2ce50a[_0x1fa9('0x86')]):_0x1fa9('0x89');break;case _0x1fa9('0x8d'):_0x3151ae=_0x2ce50a['UserId']?_0x2ce50a['User'][_0x1fa9('0x8e')]||_0x2ce50a[_0x1fa9('0x83')][_0x1fa9('0x58')]:_0x1fa9('0x89');break;case _0x1fa9('0x8f'):_0x3151ae=_0x2ce50a[_0x1fa9('0x86')]?_0x2ce50a[_0x1fa9('0x83')][_0x1fa9('0x58')]:_0x1fa9('0x89');break;default:_0x3151ae=_0x2ce50a['UserId']?util[_0x1fa9('0x7e')](_0x1fa9('0x87'),_0x3de2ec[_0x1fa9('0x88')],_0x2ce50a[_0x1fa9('0x86')]):_0x1fa9('0x89');}var _0x2732c5=util[_0x1fa9('0x7e')](_0x1fa9('0x90'),moment(_0x2ce50a[_0x1fa9('0x91')])[_0x1fa9('0x7e')](_0x1fa9('0x92')),_0x2ce50a[_0x1fa9('0x93')]==='in'?_0x43d34c:_0x3151ae,_0x2ce50a[_0x1fa9('0x34')]);if(!_0x2ce50a[_0x1fa9('0x94')]){fs[_0x1fa9('0x95')](_0x39b8e4,_0x2732c5);}}return db[_0x1fa9('0x96')][_0x1fa9('0x51')]({'where':{'service':!![]},'include':[{'model':db[_0x1fa9('0x97')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x1fa9('0x98'),'raw':!![]}]}]});}}})[_0x1fa9('0x18')](function(_0x336b84){if(!_0x336b84||!_0x336b84[_0x1fa9('0x99')]||!_0x319907['body'])return _0x351029;var _0x3ff20f=_0x336b84[_0x1fa9('0x9a')]();return respondWithRpcPromise(_0x1fa9('0x9b'),_0x1fa9('0x9c'),{'account':_0x3ff20f,'message':{'from':util[_0x1fa9('0x7e')]('\x22%s\x22\x20<%s>',_0x336b84[_0x1fa9('0x30')],_0x336b84[_0x1fa9('0x59')]||_0x336b84[_0x1fa9('0x99')][_0x1fa9('0x57')]),'to':_0x319907[_0x1fa9('0x34')][_0x1fa9('0x7b')],'subject':_0x1fa9('0x9d'),'text':util[_0x1fa9('0x7e')](_0x1fa9('0x9e'),_0x319907[_0x1fa9('0x34')][_0x1fa9('0x7b')]),'attachments':[{'path':_0x39b8e4}]}})[_0x1fa9('0x18')](function(){return _0x351029;})[_0x1fa9('0x23')](function(_0x32b9d1){logger[_0x1fa9('0x1f')](_0x32b9d1);});})['then'](respondWithStatusCode(_0x19eae0,0xc8))[_0x1fa9('0x23')](handleError(_0x19eae0,null));};exports[_0x1fa9('0x9f')]=function(_0x35f46f,_0x32c1db){return db[_0x1fa9('0x65')]['find']({'where':{'id':_0x35f46f[_0x1fa9('0x44')]['id']}})['then'](handleEntityNotFound(_0x32c1db,null))[_0x1fa9('0x18')](function(_0x555ee6){if(_0x555ee6){return _0x555ee6[_0x1fa9('0x9f')](_0x35f46f['body']['ids'],_['omit'](_0x35f46f['body'],[_0x1fa9('0xa0'),'id'])||{});}})[_0x1fa9('0x18')](respondWithResult(_0x32c1db,null))[_0x1fa9('0x23')](handleError(_0x32c1db,null));};exports['getMessages']=function(_0x513529,_0x71329f){var _0x592669={'raw':![],'where':{}};var _0x1e6dc9={};var _0x39cc38={'count':0x0,'rows':[]};return db[_0x1fa9('0x3b')][_0x1fa9('0x51')]({'where':{'id':_0x513529[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](handleEntityNotFound(_0x71329f,null))['then'](function(_0x42c533){if(_0x42c533){_0x1e6dc9[_0x1fa9('0x45')]=_[_0x1fa9('0x46')](db[_0x1fa9('0x65')][_0x1fa9('0x3c')]);_0x1e6dc9[_0x1fa9('0x47')]=_[_0x1fa9('0x46')](_0x513529[_0x1fa9('0x47')]);_0x1e6dc9[_0x1fa9('0xa1')]=_[_0x1fa9('0x48')](_0x1e6dc9[_0x1fa9('0x45')],_0x1e6dc9[_0x1fa9('0x47')]);_0x592669[_0x1fa9('0x49')]=_['intersection'](_0x1e6dc9[_0x1fa9('0x45')],qs[_0x1fa9('0x4a')](_0x513529[_0x1fa9('0x47')][_0x1fa9('0x4a')]));_0x592669[_0x1fa9('0x49')]=_0x592669[_0x1fa9('0x49')]['length']?_0x592669['attributes']:_0x1e6dc9[_0x1fa9('0x45')];if(!_0x513529[_0x1fa9('0x47')][_0x1fa9('0xa2')](_0x1fa9('0xa3'))){_0x592669[_0x1fa9('0x2a')]=qs[_0x1fa9('0x2a')](_0x513529[_0x1fa9('0x47')][_0x1fa9('0x2a')]);_0x592669[_0x1fa9('0x28')]=qs[_0x1fa9('0x28')](_0x513529[_0x1fa9('0x47')][_0x1fa9('0x28')]);}_0x592669[_0x1fa9('0xa4')]=qs[_0x1fa9('0xa5')](_0x513529['query'][_0x1fa9('0xa5')]);_0x592669['where']=qs[_0x1fa9('0xa1')](_[_0x1fa9('0xa6')](_0x513529[_0x1fa9('0x47')],_0x1e6dc9['filters']));_0x592669[_0x1fa9('0xa7')][_0x1fa9('0xa8')]=_0x42c533['id'];if(_0x513529[_0x1fa9('0x47')][_0x1fa9('0xa9')]){_0x592669['where']=_[_0x1fa9('0x33')](_0x592669['where'],{'$or':_[_0x1fa9('0x3a')](_0x592669[_0x1fa9('0x49')],function(_0x59242c){var _0x333a7e={};_0x333a7e[_0x59242c]={'$like':'%'+_0x513529['query'][_0x1fa9('0xa9')]+'%'};return _0x333a7e;})});}if(_0x513529[_0x1fa9('0x47')]['$gte']){var _0xa0cc25=_0x513529['query'][_0x1fa9('0xaa')][_0x1fa9('0xab')](',');var _0xff26af={};_0xff26af[_0xa0cc25[0x0]]={'$gte':moment(_0xa0cc25[0x1])[_0x1fa9('0x7e')](_0x1fa9('0xac'))};_0x592669[_0x1fa9('0xa7')]=_[_0x1fa9('0x33')](_0x592669['where'],_0xff26af);}_0x592669=_[_0x1fa9('0x33')]({},_0x592669,_0x513529['options']);return db[_0x1fa9('0x65')]['count']({'where':_0x592669[_0x1fa9('0xa7')]})[_0x1fa9('0x18')](function(_0x54fe4a){_0x39cc38[_0x1fa9('0x2b')]=_0x54fe4a;if(_0x513529['query'][_0x1fa9('0xad')]){_0x592669['include']=[{'all':!![]}];}return db[_0x1fa9('0x65')]['findAll'](_0x592669);})[_0x1fa9('0x18')](function(_0x3db28a){_0x39cc38[_0x1fa9('0xae')]=_0x3db28a;return _0x39cc38;});}})[_0x1fa9('0x18')](respondWithFilteredResult(_0x71329f,_0x592669))['catch'](handleError(_0x71329f,null));};exports[_0x1fa9('0xaf')]=function(_0x2ee337,_0x40bcbc){var _0x53dfc9={'where':{}},_0x47138e={},_0x2f2166={'count':0x0,'rows':[]};return db[_0x1fa9('0x3b')][_0x1fa9('0x51')]({'where':{'id':_0x2ee337[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](handleEntityNotFound(_0x40bcbc,null))[_0x1fa9('0x18')](function(_0x319ee6){if(_0x319ee6){_0x47138e[_0x1fa9('0x45')]=_[_0x1fa9('0x46')](db['ChatMessage']['rawAttributes']);_0x47138e['query']=_[_0x1fa9('0x46')](_0x2ee337[_0x1fa9('0x47')]);_0x47138e[_0x1fa9('0xa1')]=_[_0x1fa9('0x48')](_0x47138e[_0x1fa9('0x45')],_0x47138e[_0x1fa9('0x47')]);_0x53dfc9[_0x1fa9('0x49')]=_['intersection'](_0x47138e[_0x1fa9('0x45')],qs['fields'](_0x2ee337[_0x1fa9('0x47')]['fields']));_0x53dfc9['attributes']=_0x53dfc9['attributes'][_0x1fa9('0x4b')]?_0x53dfc9['attributes']:_0x47138e[_0x1fa9('0x45')];if(!_0x2ee337[_0x1fa9('0x47')]['hasOwnProperty']('nolimit')){_0x53dfc9['limit']=qs[_0x1fa9('0x2a')](_0x2ee337[_0x1fa9('0x47')][_0x1fa9('0x2a')]);_0x53dfc9[_0x1fa9('0x28')]=qs['offset'](_0x2ee337['query'][_0x1fa9('0x28')]);}_0x53dfc9[_0x1fa9('0xa4')]=qs[_0x1fa9('0xa5')](_0x2ee337[_0x1fa9('0x47')]['sort']);_0x53dfc9[_0x1fa9('0xa7')]=qs[_0x1fa9('0xa1')](_[_0x1fa9('0xa6')](_0x2ee337[_0x1fa9('0x47')],_0x47138e[_0x1fa9('0xa1')]));_0x53dfc9['where']['ChatInteractionId']=_0x319ee6['id'];if(_0x2ee337[_0x1fa9('0x47')][_0x1fa9('0xa9')]){_0x53dfc9[_0x1fa9('0xa7')]=_[_0x1fa9('0x33')](_0x53dfc9[_0x1fa9('0xa7')],{'$or':_[_0x1fa9('0x3a')](_0x53dfc9[_0x1fa9('0x49')],function(_0xfdb5f3){var _0x15a5c0={};_0x15a5c0[_0xfdb5f3]={'$like':'%'+_0x2ee337['query']['filter']+'%'};return _0x15a5c0;})});}_0x53dfc9[_0x1fa9('0xa7')][_0x1fa9('0x94')]=![];if(_0x2ee337[_0x1fa9('0x47')]['id']){_0x53dfc9[_0x1fa9('0xa7')]['id']={'$gt':_0x2ee337[_0x1fa9('0x47')]['id']};}_0x53dfc9=_['merge']({},_0x53dfc9,_0x2ee337[_0x1fa9('0x4d')]);return db[_0x1fa9('0x65')]['count']({'where':_0x53dfc9['where']})[_0x1fa9('0x18')](function(_0x367e3d){_0x2f2166[_0x1fa9('0x2b')]=_0x367e3d;_0x53dfc9[_0x1fa9('0x4c')]=[];if(_0x2ee337[_0x1fa9('0x47')][_0x1fa9('0xb0')]){_0x53dfc9[_0x1fa9('0x4c')][_0x1fa9('0xb1')]({'model':db[_0x1fa9('0x83')],'as':_0x1fa9('0x83'),'attributes':['id',_0x1fa9('0x58'),_0x1fa9('0x8e')]});}if(_0x2ee337[_0x1fa9('0x47')][_0x1fa9('0xad')]){_0x53dfc9[_0x1fa9('0x4c')]=[{'all':!![]}];}return db[_0x1fa9('0x65')][_0x1fa9('0x41')](_0x53dfc9);})[_0x1fa9('0x18')](function(_0x3e5380){_0x2f2166['rows']=_0x3e5380;return _0x2f2166;});}})[_0x1fa9('0x18')](respondWithFilteredResult(_0x40bcbc,_0x53dfc9))[_0x1fa9('0x23')](handleError(_0x40bcbc,null));};exports[_0x1fa9('0xb2')]=function(_0x137334,_0x56422f){return db['ChatInteraction'][_0x1fa9('0x4f')]({'where':{'id':_0x137334[_0x1fa9('0x44')]['id']}})[_0x1fa9('0x18')](handleEntityNotFound(_0x56422f,null))['then'](function(_0x56de60){if(_0x56de60){return _0x56de60[_0x1fa9('0xb3')](_0x137334[_0x1fa9('0x34')][_0x1fa9('0xa0')],_[_0x1fa9('0xb4')](_0x137334[_0x1fa9('0x34')],[_0x1fa9('0xa0'),'id'])||{})['spread'](function(){return db[_0x1fa9('0xb5')][_0x1fa9('0x41')]({'attributes':['id',_0x1fa9('0x30'),_0x1fa9('0xb6')],'where':{'id':_0x137334[_0x1fa9('0x34')][_0x1fa9('0xa0')]}});})[_0x1fa9('0x18')](function(_0x306541){socket[_0x1fa9('0xb7')]('chatInteractionTags:save',{'id':Number(_0x137334[_0x1fa9('0x44')]['id']),'tags':_0x306541||[]});return{'id':Number(_0x137334[_0x1fa9('0x44')]['id']),'tags':_0x306541||[]};});}})[_0x1fa9('0x18')](respondWithResult(_0x56422f,null))[_0x1fa9('0x23')](handleError(_0x56422f,null));};exports[_0x1fa9('0xb8')]=function(_0x481ba3,_0x115b68){return db['ChatInteraction'][_0x1fa9('0x4f')]({'where':{'id':_0x481ba3['params']['id']}})['then'](handleEntityNotFound(_0x115b68,null))[_0x1fa9('0x18')](function(_0x33dac2){if(_0x33dac2){return _0x33dac2[_0x1fa9('0xb8')](_0x481ba3['query']['ids']);}})[_0x1fa9('0x18')](respondWithStatusCode(_0x115b68,null))['catch'](handleError(_0x115b68,null));};exports[_0x1fa9('0x79')]=function(_0x29fd88,_0x5489ab){var _0x31df58=moment()[_0x1fa9('0xb9')]()['toString']();var _0x5a9db3=path[_0x1fa9('0x76')](config['root'],_0x1fa9('0xba'),_0x1fa9('0xbb'),_0x1fa9('0xbc'));var _0x3127a5=path['join'](config[_0x1fa9('0x7c')],_0x1fa9('0xba'),_0x1fa9('0xbb'),_0x1fa9('0xbd'));var _0x19678c=path[_0x1fa9('0x76')](_0x5a9db3,_0x31df58);var _0x4ecbbd=util[_0x1fa9('0x7e')]('transcript-%d-%s.zip',_0x29fd88['params']['id'],_0x31df58);var _0x3054b6=path[_0x1fa9('0x76')](_0x5a9db3,_0x4ecbbd);var _0x12a367=[];_0x12a367[_0x1fa9('0xb1')]({'model':db[_0x1fa9('0x83')],'as':_0x1fa9('0x83'),'attributes':['id',_0x1fa9('0x58')],'raw':!![]});_0x12a367['push']({'model':db[_0x1fa9('0x84')],'as':_0x1fa9('0x69'),'attributes':['id','firstName',_0x1fa9('0xbe')],'raw':!![]});if(_0x29fd88[_0x1fa9('0x47')][_0x1fa9('0xbd')]){_0x12a367[_0x1fa9('0xb1')]({'model':db['Attachment'],'as':_0x1fa9('0xbf'),'raw':!![]});}var _0x14408d=[{'model':db[_0x1fa9('0x65')],'as':'Messages','attributes':['id',_0x1fa9('0x34'),_0x1fa9('0x91'),_0x1fa9('0x93'),_0x1fa9('0x94'),_0x1fa9('0xc0')],'include':_0x12a367}];_0x14408d['push']({'model':db['ChatWebsite'],'as':_0x1fa9('0xc1'),'attributes':['id',_0x1fa9('0x30')]});_0x14408d[_0x1fa9('0xb1')]({'model':db[_0x1fa9('0x83')],'as':_0x1fa9('0xc2'),'attributes':['id',_0x1fa9('0x58')]});return db['ChatInteraction'][_0x1fa9('0x4f')]({'where':{'id':_0x29fd88['params']['id']},'include':_0x14408d})[_0x1fa9('0x18')](handleEntityNotFound(_0x5489ab,null))['then'](function(_0xcd877b){if(_0xcd877b){var _0x547de5=_0xcd877b[_0x1fa9('0xc3')]({'plain':!![]});fs[_0x1fa9('0xc4')](_0x19678c);var _0x2be029={'channel':_0x1fa9('0xc5'),'account':_0x547de5['Account'][_0x1fa9('0x30')],'agent':_0x547de5[_0x1fa9('0xc2')]?_0x547de5['Owner'][_0x1fa9('0x58')]:'N.A.','createdAt':moment(_0x547de5[_0x1fa9('0x91')])['format'](_0x1fa9('0xac'))[_0x1fa9('0xc6')](),'closedAt':_0x547de5[_0x1fa9('0x6d')]?moment(_0x547de5[_0x1fa9('0xc7')])['format'](_0x1fa9('0xac'))[_0x1fa9('0xc6')]():'','disposition':_0x547de5[_0x1fa9('0xc8')],'chatInfo':{'browser':_0x547de5[_0x1fa9('0xc9')],'os':_0x547de5[_0x1fa9('0xca')],'referer':_0x547de5[_0x1fa9('0xcb')],'customerIp':_0x547de5[_0x1fa9('0xcc')],'customerPort':_0x547de5['customerPort']?_0x547de5['customerPort']:'N.A.'},'messages':_(_0x547de5['Messages'])[_0x1fa9('0xcd')]()[_0x1fa9('0xa9')]({'secret':![]})[_0x1fa9('0x3a')](function(_0x4a1049){if(_0x4a1049[_0x1fa9('0xbf')]){var _0x55f8a6=path[_0x1fa9('0x76')](_0x3127a5,_0x4a1049[_0x1fa9('0xbf')][_0x1fa9('0x72')]);if(fs['existsSync'](_0x55f8a6)){fs[_0x1fa9('0xce')](_0x55f8a6)[_0x1fa9('0xcf')](fs['createWriteStream'](path[_0x1fa9('0x76')](_0x19678c,_0x4a1049[_0x1fa9('0xbf')][_0x1fa9('0x72')])));}}return{'date':moment(_0x4a1049[_0x1fa9('0x91')])[_0x1fa9('0x7e')]('YYYY-MM-DD\x20HH:mm:ss')[_0x1fa9('0xc6')](),'sender':_0x4a1049[_0x1fa9('0x93')]==='out'?_0x4a1049[_0x1fa9('0x83')]?_0x4a1049[_0x1fa9('0x83')][_0x1fa9('0x58')]:_0x1fa9('0x89'):_0x4a1049[_0x1fa9('0x69')][_0x1fa9('0xd0')]+(_0x4a1049['Contact'][_0x1fa9('0xbe')]?'\x20'+_0x4a1049[_0x1fa9('0x69')]['lastName']:''),'body':_0x4a1049[_0x1fa9('0xbf')]?_0x4a1049[_0x1fa9('0xbf')][_0x1fa9('0x72')]:_0x4a1049[_0x1fa9('0x34')],'direction':_0x4a1049['direction']==='out'?'A':'C','secret':_0x4a1049['secret'],'read':_0x4a1049[_0x1fa9('0xc0')],'attachment':_0x4a1049[_0x1fa9('0xbf')]};})[_0x1fa9('0xd1')]()};return ejs[_0x1fa9('0xd2')](path[_0x1fa9('0x76')](config['root'],_0x1fa9('0xba'),'views',_0x1fa9('0xd3')),{'interaction':_0x2be029})[_0x1fa9('0x18')](function(_0x56907a){var _0x1d267b=path['join'](_0x19678c,'transcript-'+_0x547de5['id']+'-'+_0x31df58+_0x1fa9('0xd4'));var _0x445107={'path':_0x1d267b,'channel':_0x1fa9('0xc5'),'interactionId':_0x547de5['id']};return pdf[_0x1fa9('0xd5')](_0x56907a,_0x445107);})[_0x1fa9('0x18')](function(){return new Promise(function(_0x494114,_0x912e5a){zipdir(_0x19678c,{'saveTo':_0x3054b6},function(_0x13479e,_0x1e5bf3){if(_0x13479e)return _0x912e5a(_0x13479e);return _0x494114(_0x1e5bf3);});})['then'](function(){return new BPromise(function(_0x40ca14,_0x1d4c7a){rimraf(_0x19678c,function(_0x4771e2){if(_0x4771e2)_0x1d4c7a(_0x4771e2);return _0x40ca14();});});})[_0x1fa9('0x18')](function(){return _0x5489ab[_0x1fa9('0x79')](_0x3054b6,_0x4ecbbd,function(_0x25ac70){if(_0x25ac70){logger[_0x1fa9('0x1f')](_0x1fa9('0xd6'),_0x25ac70);}else{fs[_0x1fa9('0xd7')](_0x3054b6);}});});});}else{return _0x5489ab[_0x1fa9('0x24')](0xc8);}})[_0x1fa9('0x23')](handleError(_0x5489ab,null));};
\ No newline at end of file
index 04545c6..9648f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66a7=['save','update','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','ChatMessage','setMaxListeners'];(function(_0x2efe4f,_0x35b3d9){var _0x251e7e=function(_0x56be52){while(--_0x56be52){_0x2efe4f['push'](_0x2efe4f['shift']());}};_0x251e7e(++_0x35b3d9);}(_0x66a7,0xf8));var _0x766a=function(_0x2067c1,_0x4ad413){_0x2067c1=_0x2067c1-0x0;var _0x4c2968=_0x66a7[_0x2067c1];return _0x4c2968;};'use strict';var EventEmitter=require(_0x766a('0x0'));var ChatInteraction=require(_0x766a('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0x766a('0x1'))['db'][_0x766a('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x766a('0x3')](0x0);var events={'afterCreate':_0x766a('0x4'),'afterUpdate':_0x766a('0x5'),'afterDestroy':'remove'};function emitEvent(_0x316910){return function(_0x1312da,_0x5c840c,_0x564b9f){_0x1312da[_0x766a('0x6')]({'attributes':['id'],'raw':!![]})[_0x766a('0x7')](function(_0x290cf9){_0x1312da['setDataValue'](_0x766a('0x8'),_0x290cf9[_0x766a('0x9')](function(_0x4c034b){return{'id':_0x4c034b['id']};}));return ChatMessage[_0x766a('0xa')]({'where':{'ChatInteractionId':_0x1312da['id'],'direction':'in','read':![]},'raw':!![]});})[_0x766a('0x7')](function(_0xf27a6c){_0x1312da[_0x766a('0xb')](_0x766a('0xc'),_0xf27a6c[_0x766a('0xd')]);ChatInteractionEvents[_0x766a('0xe')](_0x316910+':'+_0x1312da['id'],_0x1312da);ChatInteractionEvents['emit'](_0x316910,_0x1312da);_0x564b9f(null);})[_0x766a('0xf')](_0x564b9f(null));};}for(var e in events){if(events[_0x766a('0x10')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x766a('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x268a=['emit','catch','hasOwnProperty','hook','exports','../../mysqldb','ChatInteraction','ChatMessage','save','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length'];(function(_0x133ca5,_0x4822ba){var _0x2d9eb3=function(_0x10ce83){while(--_0x10ce83){_0x133ca5['push'](_0x133ca5['shift']());}};_0x2d9eb3(++_0x4822ba);}(_0x268a,0x113));var _0xa268=function(_0x1ccbcc,_0x5c948b){_0x1ccbcc=_0x1ccbcc-0x0;var _0x1e873f=_0x268a[_0x1ccbcc];return _0x1e873f;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0xa268('0x0'))['db'][_0xa268('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0xa268('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa268('0x3'),'afterUpdate':_0xa268('0x4'),'afterDestroy':_0xa268('0x5')};function emitEvent(_0x39e14d){return function(_0x53fc42,_0x1f691d,_0xf4d548){_0x53fc42[_0xa268('0x6')]({'attributes':['id'],'raw':!![]})[_0xa268('0x7')](function(_0x28bf33){_0x53fc42[_0xa268('0x8')]('Users',_0x28bf33[_0xa268('0x9')](function(_0x3215bc){return{'id':_0x3215bc['id']};}));return ChatMessage[_0xa268('0xa')]({'where':{'ChatInteractionId':_0x53fc42['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa268('0x7')](function(_0x137d13){_0x53fc42[_0xa268('0x8')](_0xa268('0xb'),_0x137d13[_0xa268('0xc')]);ChatInteractionEvents[_0xa268('0xd')](_0x39e14d+':'+_0x53fc42['id'],_0x53fc42);ChatInteractionEvents[_0xa268('0xd')](_0x39e14d,_0x53fc42);_0xf4d548(null);})[_0xa268('0xe')](_0xf4d548(null));};}for(var e in events){if(events[_0xa268('0xf')](e)){var event=events[e];ChatInteraction[_0xa268('0x10')](e,emitEvent(event));}}module[_0xa268('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index 72e9e0c..38f423f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f6d=['../../config/logger','moment','bluebird','request-promise','path','./chatInteraction.attributes','define','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7f6d,0x176));var _0xd7f6=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x7f6d[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0xd7f6('0x0'));var util=require('util');var logger=require(_0xd7f6('0x1'))('api');var moment=require(_0xd7f6('0x2'));var BPromise=require(_0xd7f6('0x3'));var rp=require(_0xd7f6('0x4'));var fs=require('fs');var path=require(_0xd7f6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd7f6('0x6'));module['exports']=function(_0x587e8d,_0x205727){return _0x587e8d[_0xd7f6('0x7')]('ChatInteraction',attributes,{'tableName':_0xd7f6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4a2d03,_0x5b89d5,_0x702933){if(_0x4a2d03[_0xd7f6('0x9')]('closed')){_0x4a2d03[_0xd7f6('0xa')]=moment()[_0xd7f6('0xb')](_0xd7f6('0xc'));}_0x702933(null,_0x4a2d03);}},'charset':_0xd7f6('0xd'),'collate':_0xd7f6('0xe')});};
\ No newline at end of file
+var _0xcc8e=['../../config/logger','api','moment','request-promise','path','rimraf','exports','define','ChatInteraction','chat_interactions','closed','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x665846,_0x5503d8){var _0x16c349=function(_0x2b34a9){while(--_0x2b34a9){_0x665846['push'](_0x665846['shift']());}};_0x16c349(++_0x5503d8);}(_0xcc8e,0x1bf));var _0xecc8=function(_0x49dc71,_0x799325){_0x49dc71=_0x49dc71-0x0;var _0xe9def6=_0xcc8e[_0x49dc71];return _0xe9def6;};'use strict';var _=require(_0xecc8('0x0'));var util=require('util');var logger=require(_0xecc8('0x1'))(_0xecc8('0x2'));var moment=require(_0xecc8('0x3'));var BPromise=require('bluebird');var rp=require(_0xecc8('0x4'));var fs=require('fs');var path=require(_0xecc8('0x5'));var rimraf=require(_0xecc8('0x6'));var config=require('../../config/environment');var attributes=require('./chatInteraction.attributes');module[_0xecc8('0x7')]=function(_0x152724,_0x3e6d49){return _0x152724[_0xecc8('0x8')](_0xecc8('0x9'),attributes,{'tableName':_0xecc8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x38c1f2,_0x73e0da,_0x2e1a33){if(_0x38c1f2['changed'](_0xecc8('0xb'))){_0x38c1f2['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x2e1a33(null,_0x38c1f2);}},'charset':_0xecc8('0xc'),'collate':_0xecc8('0xd')});};
\ No newline at end of file
index ff583ab..19d2df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a95=['AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','socket.io-emitter','redis','./chatInteraction.socket','request','then','info','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatInteraction,\x20%s,\x20%s','catch','ChatInteraction','body','options','raw','where','attributes','limit','UpdateChatInteraction','debug','find','addTags','omit','ids','spread'];(function(_0x20a74e,_0x26c09d){var _0x513e0f=function(_0x4abe92){while(--_0x4abe92){_0x20a74e['push'](_0x20a74e['shift']());}};_0x513e0f(++_0x26c09d);}(_0x2a95,0xe5));var _0x52a9=function(_0x4dccf0,_0x6c689){_0x4dccf0=_0x4dccf0-0x0;var _0x395610=_0x2a95[_0x4dccf0];return _0x395610;};'use strict';var _=require(_0x52a9('0x0'));var util=require('util');var moment=require(_0x52a9('0x1'));var BPromise=require('bluebird');var rs=require(_0x52a9('0x2'));var fs=require('fs');var Redis=require(_0x52a9('0x3'));var db=require(_0x52a9('0x4'))['db'];var utils=require(_0x52a9('0x5'));var logger=require('../../config/logger')(_0x52a9('0x6'));var config=require(_0x52a9('0x7'));var jayson=require(_0x52a9('0x8'));var client=jayson[_0x52a9('0x9')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x52a9('0xa'))(new Redis(config[_0x52a9('0xb')]));require(_0x52a9('0xc'))['register'](socket);function respondWithRpcPromise(_0x31ebb4,_0x123708,_0x53d463){return new BPromise(function(_0x512475,_0x2cb434){return client[_0x52a9('0xd')](_0x31ebb4,_0x53d463)[_0x52a9('0xe')](function(_0x18019c){logger[_0x52a9('0xf')]('ChatInteraction,\x20%s,\x20%s',_0x123708,_0x52a9('0x10'));logger['debug'](_0x52a9('0x11'),_0x123708,_0x52a9('0x10'),JSON[_0x52a9('0x12')](_0x18019c));if(_0x18019c[_0x52a9('0x13')]){if(_0x18019c['error']['code']===0x1f4){logger[_0x52a9('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x123708,_0x18019c[_0x52a9('0x13')][_0x52a9('0x14')]);return _0x2cb434(_0x18019c['error'][_0x52a9('0x14')]);}logger['error']('ChatInteraction,\x20%s,\x20%s',_0x123708,_0x18019c[_0x52a9('0x13')]['message']);return _0x512475(_0x18019c[_0x52a9('0x13')][_0x52a9('0x14')]);}else{logger['info'](_0x52a9('0x15'),_0x123708,_0x52a9('0x10'));_0x512475(_0x18019c['result'][_0x52a9('0x14')]);}})[_0x52a9('0x16')](function(_0x8105d7){logger[_0x52a9('0x13')](_0x52a9('0x15'),_0x123708,_0x8105d7);_0x2cb434(_0x8105d7);});});}exports['UpdateChatInteraction']=function(_0x37c6c8){var _0x185b27=this;return new Promise(function(_0x1604ab,_0x299610){return db[_0x52a9('0x17')]['update'](_0x37c6c8[_0x52a9('0x18')],{'raw':_0x37c6c8[_0x52a9('0x19')]?_0x37c6c8[_0x52a9('0x19')][_0x52a9('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37c6c8[_0x52a9('0x19')]?_0x37c6c8['options'][_0x52a9('0x1b')]||null:null,'attributes':_0x37c6c8[_0x52a9('0x19')]?_0x37c6c8[_0x52a9('0x19')][_0x52a9('0x1c')]||null:null,'limit':_0x37c6c8[_0x52a9('0x19')]?_0x37c6c8[_0x52a9('0x19')][_0x52a9('0x1d')]||null:null})[_0x52a9('0xe')](function(_0x595b98){logger['info'](_0x52a9('0x1e'),_0x37c6c8);logger[_0x52a9('0x1f')](_0x52a9('0x1e'),_0x37c6c8,JSON['stringify'](_0x595b98));_0x1604ab(_0x595b98);})[_0x52a9('0x16')](function(_0x316678){logger[_0x52a9('0x13')](_0x52a9('0x1e'),_0x316678[_0x52a9('0x14')],_0x37c6c8);_0x299610(_0x185b27[_0x52a9('0x13')](0x1f4,_0x316678[_0x52a9('0x14')]));});});};exports['AddTagsToChatInteraction']=function(_0x2dd055){return new Promise(function(_0x56e254,_0x4ff0d2){return db[_0x52a9('0x17')][_0x52a9('0x20')]({'where':_0x2dd055['options']?_0x2dd055[_0x52a9('0x19')][_0x52a9('0x1b')]||null:null})['then'](function(_0x3b7d86){if(_0x3b7d86){return _0x3b7d86[_0x52a9('0x21')](_0x2dd055[_0x52a9('0x18')]['ids'],_[_0x52a9('0x22')](_0x2dd055['body'],[_0x52a9('0x23'),'id'])||{});}})[_0x52a9('0x24')](function(_0x5ab2fe){logger['info'](_0x52a9('0x25'),_0x2dd055);logger[_0x52a9('0x1f')](_0x52a9('0x25'),_0x2dd055,JSON[_0x52a9('0x12')](_0x5ab2fe));_0x56e254(_0x5ab2fe);})['catch'](function(_0x2fe837){logger[_0x52a9('0x13')](_0x52a9('0x25'),_0x2fe837[_0x52a9('0x14')],_0x2dd055);_0x4ff0d2(_this['error'](0x1f4,_0x2fe837['message']));});});};
\ No newline at end of file
+var _0xf6b6=['socket.io-emitter','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateChatInteraction','update','body','options','attributes','limit','debug','AddTagsToChatInteraction','find','addTags','ids','omit','AddTags','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','defaults','localhost'];(function(_0x254067,_0x4d151a){var _0x5e225a=function(_0x1f3e2b){while(--_0x1f3e2b){_0x254067['push'](_0x254067['shift']());}};_0x5e225a(++_0x4d151a);}(_0xf6b6,0x1ee));var _0x6f6b=function(_0x20040f,_0x4969ba){_0x20040f=_0x20040f-0x0;var _0x539e5b=_0xf6b6[_0x20040f];return _0x539e5b;};'use strict';var _=require('lodash');var util=require(_0x6f6b('0x0'));var moment=require(_0x6f6b('0x1'));var BPromise=require(_0x6f6b('0x2'));var rs=require(_0x6f6b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6f6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6f6b('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6f6b('0x6'));var client=jayson[_0x6f6b('0x7')]['http']({'port':0x232a});config['redis']=_[_0x6f6b('0x8')](config['redis'],{'host':_0x6f6b('0x9'),'port':0x18eb});var socket=require(_0x6f6b('0xa'))(new Redis(config['redis']));require(_0x6f6b('0xb'))[_0x6f6b('0xc')](socket);function respondWithRpcPromise(_0x371ffd,_0x4672e6,_0x6fdc31){return new BPromise(function(_0x2e8dd7,_0x5eb3b0){return client['request'](_0x371ffd,_0x6fdc31)[_0x6f6b('0xd')](function(_0x23f2b9){logger[_0x6f6b('0xe')](_0x6f6b('0xf'),_0x4672e6,_0x6f6b('0x10'));logger['debug'](_0x6f6b('0x11'),_0x4672e6,'request\x20sent',JSON[_0x6f6b('0x12')](_0x23f2b9));if(_0x23f2b9[_0x6f6b('0x13')]){if(_0x23f2b9[_0x6f6b('0x13')]['code']===0x1f4){logger[_0x6f6b('0x13')](_0x6f6b('0xf'),_0x4672e6,_0x23f2b9[_0x6f6b('0x13')][_0x6f6b('0x14')]);return _0x5eb3b0(_0x23f2b9[_0x6f6b('0x13')][_0x6f6b('0x14')]);}logger['error'](_0x6f6b('0xf'),_0x4672e6,_0x23f2b9['error'][_0x6f6b('0x14')]);return _0x2e8dd7(_0x23f2b9['error'][_0x6f6b('0x14')]);}else{logger[_0x6f6b('0xe')](_0x6f6b('0xf'),_0x4672e6,_0x6f6b('0x10'));_0x2e8dd7(_0x23f2b9[_0x6f6b('0x15')][_0x6f6b('0x14')]);}})[_0x6f6b('0x16')](function(_0x364156){logger['error'](_0x6f6b('0xf'),_0x4672e6,_0x364156);_0x5eb3b0(_0x364156);});});}exports[_0x6f6b('0x17')]=function(_0x2f8af7){var _0x3f992f=this;return new Promise(function(_0x158a9a,_0x522397){return db['ChatInteraction'][_0x6f6b('0x18')](_0x2f8af7[_0x6f6b('0x19')],{'raw':_0x2f8af7[_0x6f6b('0x1a')]?_0x2f8af7['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f8af7[_0x6f6b('0x1a')]?_0x2f8af7[_0x6f6b('0x1a')]['where']||null:null,'attributes':_0x2f8af7[_0x6f6b('0x1a')]?_0x2f8af7[_0x6f6b('0x1a')][_0x6f6b('0x1b')]||null:null,'limit':_0x2f8af7['options']?_0x2f8af7['options'][_0x6f6b('0x1c')]||null:null})[_0x6f6b('0xd')](function(_0x41f61c){logger[_0x6f6b('0xe')]('UpdateChatInteraction',_0x2f8af7);logger[_0x6f6b('0x1d')](_0x6f6b('0x17'),_0x2f8af7,JSON['stringify'](_0x41f61c));_0x158a9a(_0x41f61c);})['catch'](function(_0x49387b){logger[_0x6f6b('0x13')](_0x6f6b('0x17'),_0x49387b['message'],_0x2f8af7);_0x522397(_0x3f992f[_0x6f6b('0x13')](0x1f4,_0x49387b[_0x6f6b('0x14')]));});});};exports[_0x6f6b('0x1e')]=function(_0x4d15f8){return new Promise(function(_0x31ac09,_0x43c806){return db['ChatInteraction'][_0x6f6b('0x1f')]({'where':_0x4d15f8[_0x6f6b('0x1a')]?_0x4d15f8[_0x6f6b('0x1a')]['where']||null:null})['then'](function(_0x5dd367){if(_0x5dd367){return _0x5dd367[_0x6f6b('0x20')](_0x4d15f8[_0x6f6b('0x19')][_0x6f6b('0x21')],_[_0x6f6b('0x22')](_0x4d15f8[_0x6f6b('0x19')],['ids','id'])||{});}})['spread'](function(_0x486fed){logger[_0x6f6b('0xe')]('AddTags',_0x4d15f8);logger['debug'](_0x6f6b('0x23'),_0x4d15f8,JSON['stringify'](_0x486fed));_0x31ac09(_0x486fed);})[_0x6f6b('0x16')](function(_0x5de1e1){logger[_0x6f6b('0x13')]('AddTags',_0x5de1e1[_0x6f6b('0x14')],_0x4d15f8);_0x43c806(_this[_0x6f6b('0x13')](0x1f4,_0x5de1e1['message']));});});};
\ No newline at end of file
index 9d05700..e7b3ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4cd=['removeListener','length','chatInteraction:','./chatInteraction.events','save','remove','update','emit'];(function(_0x469d4f,_0x1ca9a5){var _0x18fcaf=function(_0x5d7f8c){while(--_0x5d7f8c){_0x469d4f['push'](_0x469d4f['shift']());}};_0x18fcaf(++_0x1ca9a5);}(_0xb4cd,0x11b));var _0xdb4c=function(_0xe82183,_0xe96ef8){_0xe82183=_0xe82183-0x0;var _0x28322b=_0xb4cd[_0xe82183];return _0x28322b;};'use strict';var ChatInteractionEvents=require(_0xdb4c('0x0'));var events=[_0xdb4c('0x1'),_0xdb4c('0x2'),_0xdb4c('0x3')];function createListener(_0x1fee89,_0x2277bd){return function(_0xc99fbb){_0x2277bd[_0xdb4c('0x4')](_0x1fee89,_0xc99fbb);};}function removeListener(_0x2b2d23,_0x4da127){return function(){ChatInteractionEvents[_0xdb4c('0x5')](_0x2b2d23,_0x4da127);};}exports['register']=function(_0x14e9a4){for(var _0x3495da=0x0,_0x4dd996=events[_0xdb4c('0x6')];_0x3495da<_0x4dd996;_0x3495da++){var _0x100c5c=events[_0x3495da];var _0x134441=createListener(_0xdb4c('0x7')+_0x100c5c,_0x14e9a4);ChatInteractionEvents['on'](_0x100c5c,_0x134441);}};
\ No newline at end of file
+var _0x7c91=['remove','update','emit','removeListener','chatInteraction:','./chatInteraction.events'];(function(_0x1b389d,_0x11579d){var _0x4704f2=function(_0x62739f){while(--_0x62739f){_0x1b389d['push'](_0x1b389d['shift']());}};_0x4704f2(++_0x11579d);}(_0x7c91,0x119));var _0x17c9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c91[_0x3dd15e];return _0x231fd0;};'use strict';var ChatInteractionEvents=require(_0x17c9('0x0'));var events=['save',_0x17c9('0x1'),_0x17c9('0x2')];function createListener(_0x182a97,_0x2c8dac){return function(_0x1e74d4){_0x2c8dac[_0x17c9('0x3')](_0x182a97,_0x1e74d4);};}function removeListener(_0x5b486f,_0x6f7866){return function(){ChatInteractionEvents[_0x17c9('0x4')](_0x5b486f,_0x6f7866);};}exports['register']=function(_0x498e9e){for(var _0x298fc2=0x0,_0x4b5030=events['length'];_0x298fc2<_0x4b5030;_0x298fc2++){var _0xfbd1d4=events[_0x298fc2];var _0x4d7861=createListener(_0x17c9('0x5')+_0xfbd1d4,_0x498e9e);ChatInteractionEvents['on'](_0xfbd1d4,_0x4d7861);}};
\ No newline at end of file
index 294a3ad..54aa5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe12=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','index','/describe','isAuthenticated','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','create','diskStorage','join','root','server/files/attachments/','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','/:id/messages','addMessage','/:id/tags','tracked','chat','put','chatinteraction:update','update','customUpdate','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports'];(function(_0x2945e3,_0x2b2d94){var _0x102e42=function(_0x2b42f8){while(--_0x2b42f8){_0x2945e3['push'](_0x2945e3['shift']());}};_0x102e42(++_0x2b2d94);}(_0xbe12,0x9c));var _0x2be1=function(_0x14ed9d,_0x31a698){_0x14ed9d=_0x14ed9d-0x0;var _0x45bc46=_0xbe12[_0x14ed9d];return _0x45bc46;};'use strict';var multer=require(_0x2be1('0x0'));var util=require(_0x2be1('0x1'));var path=require(_0x2be1('0x2'));var timeout=require(_0x2be1('0x3'));var express=require(_0x2be1('0x4'));var router=express[_0x2be1('0x5')]();var fs_extra=require(_0x2be1('0x6'));var auth=require(_0x2be1('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatInteraction.controller');router[_0x2be1('0x8')]('/',auth['isAuthenticated'](),controller[_0x2be1('0x9')]);router['get'](_0x2be1('0xa'),auth[_0x2be1('0xb')](),controller[_0x2be1('0xc')]);router['get'](_0x2be1('0xd'),auth[_0x2be1('0xe')](),controller[_0x2be1('0xf')]);router[_0x2be1('0x8')](_0x2be1('0x10'),auth[_0x2be1('0xe')](),controller[_0x2be1('0x11')]);router[_0x2be1('0x8')]('/:id/messages',auth['isAuthenticated'](),controller[_0x2be1('0x12')]);router[_0x2be1('0x8')](_0x2be1('0x13'),auth['isChatInteractionAuthorized'](),controller[_0x2be1('0x14')]);router[_0x2be1('0x8')](_0x2be1('0x15'),auth['isAuthenticated'](),controller[_0x2be1('0x16')]);router[_0x2be1('0x17')]('/',auth[_0x2be1('0xb')](),controller[_0x2be1('0x18')]);router['post']('/:id/vidaoo',auth[_0x2be1('0xb')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x2be1('0x19')]({'destination':function(_0x5ae715,_0x543e02,_0x1f6629){_0x1f6629(null,path[_0x2be1('0x1a')](config[_0x2be1('0x1b')],_0x2be1('0x1c')));},'filename':function(_0x1afc51,_0x28b3a1,_0x2a1c99){_0x2a1c99(null,util[_0x2be1('0x1d')](_0x2be1('0x1e'),Date['now'](),_0x28b3a1[_0x2be1('0x1f')][_0x2be1('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2be1('0x17')](_0x2be1('0x21'),upload[_0x2be1('0x22')](_0x2be1('0x23')),controller['attachmentUpload']);router['post'](_0x2be1('0x24'),auth[_0x2be1('0xe')](),controller[_0x2be1('0x25')]);router[_0x2be1('0x17')](_0x2be1('0x26'),auth['isAuthenticated'](),interaction[_0x2be1('0x27')](_0x2be1('0x28'),'chatinteraction:addtags'),controller['addTags']);router[_0x2be1('0x29')](_0x2be1('0xd'),auth[_0x2be1('0xb')](),interaction[_0x2be1('0x27')](_0x2be1('0x28'),_0x2be1('0x2a')),controller[_0x2be1('0x2b')]);router[_0x2be1('0x29')]('/:id/custom_update',controller[_0x2be1('0x2c')]);router[_0x2be1('0x29')]('/:id/abandon',auth[_0x2be1('0xe')](),controller['abandon']);router['put'](_0x2be1('0x2d'),controller[_0x2be1('0x2e')]);router[_0x2be1('0x2f')](_0x2be1('0xd'),auth[_0x2be1('0xb')](),interaction[_0x2be1('0x27')](_0x2be1('0x28'),_0x2be1('0x30')),controller[_0x2be1('0x31')]);router[_0x2be1('0x2f')]('/:id/tags',auth['isAuthenticated'](),controller[_0x2be1('0x32')]);module[_0x2be1('0x33')]=router;
\ No newline at end of file
+var _0x46bf=['./chatInteraction.controller','get','isAuthenticated','/describe','describe','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','post','create','/:id/vidaoo','createVidaooSession','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','chat','addTags','chatinteraction:update','update','put','/:id/abandon','abandon','/:id/close','close','delete','/:id','chatinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x46bf,0x1dc));var _0xf46b=function(_0x120123,_0x4eff59){_0x120123=_0x120123-0x0;var _0x3bec4c=_0x46bf[_0x120123];return _0x3bec4c;};'use strict';var multer=require(_0xf46b('0x0'));var util=require(_0xf46b('0x1'));var path=require(_0xf46b('0x2'));var timeout=require(_0xf46b('0x3'));var express=require(_0xf46b('0x4'));var router=express[_0xf46b('0x5')]();var fs_extra=require(_0xf46b('0x6'));var auth=require(_0xf46b('0x7'));var interaction=require(_0xf46b('0x8'));var config=require(_0xf46b('0x9'));var controller=require(_0xf46b('0xa'));router[_0xf46b('0xb')]('/',auth[_0xf46b('0xc')](),controller['index']);router[_0xf46b('0xb')](_0xf46b('0xd'),auth[_0xf46b('0xc')](),controller[_0xf46b('0xe')]);router['get']('/:id',auth[_0xf46b('0xf')](),controller['show']);router[_0xf46b('0xb')](_0xf46b('0x10'),auth[_0xf46b('0xf')](),controller[_0xf46b('0x11')]);router[_0xf46b('0xb')](_0xf46b('0x12'),auth[_0xf46b('0xc')](),controller[_0xf46b('0x13')]);router[_0xf46b('0xb')](_0xf46b('0x14'),auth[_0xf46b('0xf')](),controller[_0xf46b('0x15')]);router[_0xf46b('0xb')]('/:id/download',auth[_0xf46b('0xc')](),controller['download']);router[_0xf46b('0x16')]('/',auth[_0xf46b('0xc')](),controller[_0xf46b('0x17')]);router[_0xf46b('0x16')](_0xf46b('0x18'),auth[_0xf46b('0xc')](),controller[_0xf46b('0x19')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1cc1b6,_0x5ceb1d,_0x23a1d5){_0x23a1d5(null,path[_0xf46b('0x1a')](config[_0xf46b('0x1b')],_0xf46b('0x1c')));},'filename':function(_0x4dd30a,_0x5ad220,_0x39f48a){_0x39f48a(null,util[_0xf46b('0x1d')](_0xf46b('0x1e'),Date[_0xf46b('0x1f')](),_0x5ad220[_0xf46b('0x20')][_0xf46b('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf46b('0x16')](_0xf46b('0x22'),upload['single'](_0xf46b('0x23')),controller[_0xf46b('0x24')]);router[_0xf46b('0x16')](_0xf46b('0x12'),auth[_0xf46b('0xf')](),controller[_0xf46b('0x25')]);router[_0xf46b('0x16')]('/:id/tags',auth[_0xf46b('0xc')](),interaction['tracked'](_0xf46b('0x26'),'chatinteraction:addtags'),controller[_0xf46b('0x27')]);router['put']('/:id',auth[_0xf46b('0xc')](),interaction['tracked'](_0xf46b('0x26'),_0xf46b('0x28')),controller[_0xf46b('0x29')]);router[_0xf46b('0x2a')]('/:id/custom_update',controller['customUpdate']);router[_0xf46b('0x2a')](_0xf46b('0x2b'),auth[_0xf46b('0xf')](),controller[_0xf46b('0x2c')]);router[_0xf46b('0x2a')](_0xf46b('0x2d'),controller[_0xf46b('0x2e')]);router[_0xf46b('0x2f')](_0xf46b('0x30'),auth[_0xf46b('0xc')](),interaction['tracked'](_0xf46b('0x26'),_0xf46b('0x31')),controller[_0xf46b('0x32')]);router[_0xf46b('0x2f')](_0xf46b('0x33'),auth[_0xf46b('0xc')](),controller[_0xf46b('0x34')]);module[_0xf46b('0x35')]=router;
\ No newline at end of file
index b861704..5adeac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee1e=['INTEGER','exports','TEXT','BOOLEAN'];(function(_0x1d4044,_0x56ee59){var _0x43c975=function(_0x41bb40){while(--_0x41bb40){_0x1d4044['push'](_0x1d4044['shift']());}};_0x43c975(++_0x56ee59);}(_0xee1e,0x65));var _0xeee1=function(_0x55b460,_0x497077){_0x55b460=_0x55b460-0x0;var _0x3ac537=_0xee1e[_0x55b460];return _0x3ac537;};'use strict';var Sequelize=require('sequelize');module[_0xeee1('0x0')]={'body':{'type':Sequelize[_0xeee1('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xeee1('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xeee1('0x3')]}};
\ No newline at end of file
+var _0xf981=['BOOLEAN','INTEGER','sequelize','exports','medium'];(function(_0x5794cd,_0x4fb20c){var _0x4cb669=function(_0x18df71){while(--_0x18df71){_0x5794cd['push'](_0x5794cd['shift']());}};_0x4cb669(++_0x4fb20c);}(_0xf981,0x197));var _0x1f98=function(_0x38f061,_0x3ef289){_0x38f061=_0x38f061-0x0;var _0x472e32=_0xf981[_0x38f061];return _0x472e32;};'use strict';var Sequelize=require(_0x1f98('0x0'));module[_0x1f98('0x1')]={'body':{'type':Sequelize['TEXT'](_0x1f98('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x1f98('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x1f98('0x4')]}};
\ No newline at end of file
index a016d37..e293e45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fa3=['ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./chatInternalMessage.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','index','ChatInternalMessage','rawAttributes','fieldName','type','key','model','map','keys','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','intersection','options','find','create','body','destroy','describe','get','messages','lastMessageAt','lastMessage','getUsers','User','agent','admin','user','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','push','createdAt','FromId','ToId','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv'];(function(_0x23e734,_0xc35f0c){var _0x2161e8=function(_0x47c046){while(--_0x47c046){_0x23e734['push'](_0x23e734['shift']());}};_0x2161e8(++_0xc35f0c);}(_0x7fa3,0x1be));var _0x37fa=function(_0x5de1bc,_0x434be1){_0x5de1bc=_0x5de1bc-0x0;var _0x19f4b8=_0x7fa3[_0x5de1bc];return _0x19f4b8;};'use strict';var emlformat=require(_0x37fa('0x0'));var rimraf=require(_0x37fa('0x1'));var zipdir=require(_0x37fa('0x2'));var jsonpatch=require(_0x37fa('0x3'));var rp=require(_0x37fa('0x4'));var moment=require('moment');var BPromise=require(_0x37fa('0x5'));var Mustache=require('mustache');var util=require(_0x37fa('0x6'));var path=require(_0x37fa('0x7'));var sox=require(_0x37fa('0x8'));var csv=require(_0x37fa('0x9'));var ejs=require(_0x37fa('0xa'));var fs=require('fs');var fs_extra=require(_0x37fa('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x37fa('0xc'));var toCsv=require(_0x37fa('0x9'));var querystring=require(_0x37fa('0xd'));var Papa=require(_0x37fa('0xe'));var Redis=require(_0x37fa('0xf'));var authService=require(_0x37fa('0x10'));var qs=require(_0x37fa('0x11'));var as=require(_0x37fa('0x12'));var hardwareService=require(_0x37fa('0x13'));var logger=require(_0x37fa('0x14'))(_0x37fa('0x15'));var utils=require('../../config/utils');var config=require(_0x37fa('0x16'));var licenseUtil=require(_0x37fa('0x17'));var db=require(_0x37fa('0x18'))['db'];config['redis']=_[_0x37fa('0x19')](config['redis'],{'host':_0x37fa('0x1a'),'port':0x18eb});var socket=require(_0x37fa('0x1b'))(new Redis(config[_0x37fa('0x1c')]));require(_0x37fa('0x1d'))[_0x37fa('0x1e')](socket);function respondWithStatusCode(_0x3555b0,_0x5a2b0b){_0x5a2b0b=_0x5a2b0b||0xcc;return function(_0xbc01ac){if(_0xbc01ac){return _0x3555b0[_0x37fa('0x1f')](_0x5a2b0b);}return _0x3555b0[_0x37fa('0x20')](_0x5a2b0b)[_0x37fa('0x21')]();};}function respondWithResult(_0x26f77a,_0x1387de){_0x1387de=_0x1387de||0xc8;return function(_0x415fed){if(_0x415fed){return _0x26f77a[_0x37fa('0x20')](_0x1387de)['json'](_0x415fed);}};}function respondWithFilteredResult(_0x55d700,_0x4d2fe8){return function(_0x2f2c1c){if(_0x2f2c1c){var _0xd71af7=typeof _0x4d2fe8[_0x37fa('0x22')]===_0x37fa('0x23')&&typeof _0x4d2fe8[_0x37fa('0x24')]===_0x37fa('0x23');var _0xf2f6a7=_0x2f2c1c['count'];var _0x4f0205=_0xd71af7?0x0:_0x4d2fe8[_0x37fa('0x22')];var _0xb3f369=_0xd71af7?_0x2f2c1c[_0x37fa('0x25')]:_0x4d2fe8[_0x37fa('0x22')]+_0x4d2fe8[_0x37fa('0x24')];var _0x5ea45a;if(_0xb3f369>=_0xf2f6a7){_0xb3f369=_0xf2f6a7;_0x5ea45a=0xc8;}else{_0x5ea45a=0xce;}_0x55d700['status'](_0x5ea45a);return _0x55d700[_0x37fa('0x26')](_0x37fa('0x27'),_0x4f0205+'-'+_0xb3f369+'/'+_0xf2f6a7)['json'](_0x2f2c1c);}return null;};}function patchUpdates(_0x5f5730){return function(_0x195183){try{jsonpatch[_0x37fa('0x28')](_0x195183,_0x5f5730,!![]);}catch(_0x4b9c2f){return BPromise[_0x37fa('0x29')](_0x4b9c2f);}return _0x195183[_0x37fa('0x2a')]();};}function saveUpdates(_0x3b68db,_0x3b5bf8){return function(_0x3a558d){if(_0x3a558d){return _0x3a558d[_0x37fa('0x2b')](_0x3b68db)[_0x37fa('0x2c')](function(_0x585638){return _0x585638;});}return null;};}function removeEntity(_0x373d88,_0x1a5b56){return function(_0x123072){if(_0x123072){return _0x123072['destroy']()[_0x37fa('0x2c')](function(){_0x373d88[_0x37fa('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x169948,_0x53b68a){return function(_0x2d9d16){if(!_0x2d9d16){_0x169948[_0x37fa('0x1f')](0x194);}return _0x2d9d16;};}function handleError(_0x278c0c,_0x42dd6d){_0x42dd6d=_0x42dd6d||0x1f4;return function(_0x85954f){logger[_0x37fa('0x2d')](_0x85954f['stack']);if(_0x85954f[_0x37fa('0x2e')]){delete _0x85954f[_0x37fa('0x2e')];}_0x278c0c['status'](_0x42dd6d)[_0x37fa('0x2f')](_0x85954f);};}exports[_0x37fa('0x30')]=function(_0x4e087b,_0x52e79a){var _0x5b40ca={},_0x41069f={},_0xe0673d={'count':0x0,'rows':[]};var _0x3b53bd=_['map'](db[_0x37fa('0x31')][_0x37fa('0x32')],function(_0x11da61){return{'name':_0x11da61[_0x37fa('0x33')],'type':_0x11da61[_0x37fa('0x34')][_0x37fa('0x35')]};});_0x41069f[_0x37fa('0x36')]=_[_0x37fa('0x37')](_0x3b53bd,_0x37fa('0x2e'));_0x41069f['query']=_[_0x37fa('0x38')](_0x4e087b['query']);_0x41069f['filters']=_['intersection'](_0x41069f[_0x37fa('0x36')],_0x41069f[_0x37fa('0x39')]);_0x5b40ca[_0x37fa('0x3a')]=_['intersection'](_0x41069f['model'],qs[_0x37fa('0x3b')](_0x4e087b[_0x37fa('0x39')][_0x37fa('0x3b')]));_0x5b40ca[_0x37fa('0x3a')]=_0x5b40ca['attributes'][_0x37fa('0x3c')]?_0x5b40ca[_0x37fa('0x3a')]:_0x41069f[_0x37fa('0x36')];if(!_0x4e087b[_0x37fa('0x39')][_0x37fa('0x3d')]('nolimit')){_0x5b40ca[_0x37fa('0x24')]=qs['limit'](_0x4e087b[_0x37fa('0x39')][_0x37fa('0x24')]);_0x5b40ca[_0x37fa('0x22')]=qs['offset'](_0x4e087b[_0x37fa('0x39')][_0x37fa('0x22')]);}_0x5b40ca[_0x37fa('0x3e')]=qs[_0x37fa('0x3f')](_0x4e087b[_0x37fa('0x39')]['sort']);_0x5b40ca[_0x37fa('0x40')]=qs[_0x37fa('0x41')](_[_0x37fa('0x42')](_0x4e087b[_0x37fa('0x39')],_0x41069f['filters']),_0x3b53bd);if(_0x4e087b[_0x37fa('0x39')]['filter']){_0x5b40ca[_0x37fa('0x40')]=_[_0x37fa('0x43')](_0x5b40ca['where'],{'$or':_[_0x37fa('0x37')](_0x3b53bd,function(_0x1629ed){if(_0x1629ed[_0x37fa('0x34')]!=='VIRTUAL'){var _0x393aa4={};_0x393aa4[_0x1629ed[_0x37fa('0x2e')]]={'$like':'%'+_0x4e087b['query'][_0x37fa('0x44')]+'%'};return _0x393aa4;}})});}_0x5b40ca=_[_0x37fa('0x43')]({},_0x5b40ca,_0x4e087b['options']);var _0x17f627={'where':_0x5b40ca['where']};return db[_0x37fa('0x31')][_0x37fa('0x25')](_0x17f627)[_0x37fa('0x2c')](function(_0x1a1aec){_0xe0673d['count']=_0x1a1aec;if(_0x4e087b[_0x37fa('0x39')][_0x37fa('0x45')]){_0x5b40ca[_0x37fa('0x46')]=[{'all':!![]}];}return db[_0x37fa('0x31')][_0x37fa('0x47')](_0x5b40ca);})[_0x37fa('0x2c')](function(_0x50e997){_0xe0673d[_0x37fa('0x48')]=_0x50e997;return _0xe0673d;})[_0x37fa('0x2c')](respondWithFilteredResult(_0x52e79a,_0x5b40ca))[_0x37fa('0x49')](handleError(_0x52e79a,null));};exports[_0x37fa('0x4a')]=function(_0x4caaf6,_0x11983b){var _0x3a97c9={'raw':!![],'where':{'id':_0x4caaf6[_0x37fa('0x4b')]['id']}},_0x10afbe={};_0x10afbe['model']=_[_0x37fa('0x38')](db[_0x37fa('0x31')][_0x37fa('0x32')]);_0x10afbe[_0x37fa('0x39')]=_[_0x37fa('0x38')](_0x4caaf6['query']);_0x10afbe['filters']=_[_0x37fa('0x4c')](_0x10afbe['model'],_0x10afbe[_0x37fa('0x39')]);_0x3a97c9[_0x37fa('0x3a')]=_[_0x37fa('0x4c')](_0x10afbe[_0x37fa('0x36')],qs['fields'](_0x4caaf6[_0x37fa('0x39')][_0x37fa('0x3b')]));_0x3a97c9[_0x37fa('0x3a')]=_0x3a97c9[_0x37fa('0x3a')][_0x37fa('0x3c')]?_0x3a97c9['attributes']:_0x10afbe[_0x37fa('0x36')];if(_0x4caaf6['query'][_0x37fa('0x45')]){_0x3a97c9[_0x37fa('0x46')]=[{'all':!![]}];}_0x3a97c9=_[_0x37fa('0x43')]({},_0x3a97c9,_0x4caaf6[_0x37fa('0x4d')]);return db[_0x37fa('0x31')][_0x37fa('0x4e')](_0x3a97c9)[_0x37fa('0x2c')](handleEntityNotFound(_0x11983b,null))[_0x37fa('0x2c')](respondWithResult(_0x11983b,null))[_0x37fa('0x49')](handleError(_0x11983b,null));};exports['create']=function(_0x4489b1,_0x71a91f){return db['ChatInternalMessage'][_0x37fa('0x4f')](_0x4489b1['body'],{})[_0x37fa('0x2c')](respondWithResult(_0x71a91f,0xc9))[_0x37fa('0x49')](handleError(_0x71a91f,null));};exports[_0x37fa('0x2b')]=function(_0xd37d49,_0x1c7785){if(_0xd37d49[_0x37fa('0x50')]['id']){delete _0xd37d49[_0x37fa('0x50')]['id'];}return db[_0x37fa('0x31')][_0x37fa('0x4e')]({'where':{'id':_0xd37d49['params']['id']}})[_0x37fa('0x2c')](handleEntityNotFound(_0x1c7785,null))['then'](saveUpdates(_0xd37d49[_0x37fa('0x50')],null))['then'](respondWithResult(_0x1c7785,null))['catch'](handleError(_0x1c7785,null));};exports[_0x37fa('0x51')]=function(_0x531451,_0x4b0665){return db[_0x37fa('0x31')]['find']({'where':{'id':_0x531451[_0x37fa('0x4b')]['id']}})[_0x37fa('0x2c')](handleEntityNotFound(_0x4b0665,null))['then'](removeEntity(_0x4b0665,null))['catch'](handleError(_0x4b0665,null));};exports[_0x37fa('0x52')]=function(_0x4ebec3,_0x135dd2){return db[_0x37fa('0x31')][_0x37fa('0x52')]()[_0x37fa('0x2c')](respondWithResult(_0x135dd2,null))[_0x37fa('0x49')](handleError(_0x135dd2,null));};function wrapUser(_0xb8d94f){return function(_0x33dc8a){var _0x50fa24=_0xb8d94f[_0x37fa('0x53')]({'plain':!![]});_0x50fa24[_0x37fa('0x54')]=[];if(_0x33dc8a){_0x50fa24[_0x37fa('0x55')]=_0x33dc8a['createdAt'];_0x50fa24[_0x37fa('0x56')]=_0x33dc8a;}else{_0x50fa24[_0x37fa('0x55')]=moment(0x0)['format']('YYYY-MM-DD\x20HH:mm:ss');_0x50fa24[_0x37fa('0x56')]={};}return _0x50fa24;};}exports[_0x37fa('0x57')]=function(_0x146d85,_0x4485f4,_0x4441c2){var _0x45b40b=[];return db[_0x37fa('0x58')][_0x37fa('0x47')]({'where':{'role':[_0x37fa('0x59'),_0x37fa('0x5a'),_0x37fa('0x5b')]},'attributes':['id','fullname',_0x37fa('0x2e'),_0x37fa('0x5c'),_0x37fa('0x5d'),_0x37fa('0x5e'),_0x37fa('0x5f'),_0x37fa('0x60'),_0x37fa('0x61'),_0x37fa('0x62')],'order':qs[_0x37fa('0x3f')](_0x37fa('0x63')),'include':[{'model':db[_0x37fa('0x64')],'as':_0x37fa('0x65'),'attributes':['id',_0x37fa('0x2e'),_0x37fa('0x34')],'through':{'attributes':[]}}]})[_0x37fa('0x2c')](function(_0x1f583a){if(_0x1f583a){var _0xbc00ba=_0x146d85['user'][_0x37fa('0x53')]({'plain':!![]});if(!_0xbc00ba)throw new Error(_0x37fa('0x66'));if(_0xbc00ba[_0x37fa('0x5c')]==='user'){return db[_0x37fa('0x67')]['find']({'where':{'name':'Agents','userProfileId':_0xbc00ba[_0x37fa('0x68')]},'raw':!![]})[_0x37fa('0x2c')](function(_0x1e1157){if(_0x1e1157){if(_0x1e1157[_0x37fa('0x69')]===0x0){return db[_0x37fa('0x6a')][_0x37fa('0x47')]({'where':{'sectionId':_0x1e1157['id']},'raw':!![]})[_0x37fa('0x2c')](function(_0x217da2){var _0x17566b=[];if(_[_0x37fa('0x6b')](_0x217da2)){_0x17566b=_[_0x37fa('0x44')](_0x1f583a,function(_0x1f6ea9){if(_0x1f6ea9[_0x37fa('0x5c')]!==_0x37fa('0x59')){return _0x1f6ea9;}});return _0x17566b;}else{for(var _0x16bd00=0x0;_0x16bd00<_0x1f583a['length'];_0x16bd00++){var _0x3525a9=_0x1f583a[_0x16bd00];if(_0x3525a9[_0x37fa('0x5c')]===_0x37fa('0x59')){var _0x362f46=_['find'](_0x217da2,function(_0x5ab299){return _0x5ab299['resourceId']===_0x3525a9['id'];});if(_0x362f46)_0x17566b[_0x37fa('0x6c')](_0x3525a9);}else{_0x17566b[_0x37fa('0x6c')](_0x3525a9);}}return _0x17566b;}});}else{return _0x1f583a;}}else{var _0x5c57ca=_[_0x37fa('0x44')](_0x1f583a,function(_0x4139da){if(_0x4139da[_0x37fa('0x5c')]!==_0x37fa('0x59')){return _0x4139da;}});return _0x5c57ca;}});}else{return _0x1f583a;}}})['then'](function(_0x5f0647){var _0xe20ebb=[];if(_0x5f0647){_0x45b40b=_0x5f0647;for(var _0x160108=0x0;_0x160108<_0x5f0647[_0x37fa('0x3c')];_0x160108+=0x1){_0x45b40b[_0x160108]['messages']=[];_0xe20ebb['push'](db[_0x37fa('0x31')][_0x37fa('0x4e')]({'where':{'FromId':[_0x146d85[_0x37fa('0x5b')]['id'],_0x5f0647[_0x160108]['id']],'ToId':[_0x146d85[_0x37fa('0x5b')]['id'],_0x5f0647[_0x160108]['id']],'ChatGroupId':null},'attributes':['id',_0x37fa('0x6d'),_0x37fa('0x6e'),_0x37fa('0x6f'),'read',_0x37fa('0x50')],'order':qs[_0x37fa('0x3f')](_0x37fa('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x37fa('0x2c')](wrapUser(_0x5f0647[_0x160108])));}return BPromise[_0x37fa('0x71')](_0xe20ebb);}return[];})[_0x37fa('0x2c')](function(_0x5899b9){return{'rows':_0x5899b9,'count':_0x5899b9[_0x37fa('0x3c')]};})[_0x37fa('0x2c')](respondWithResult(_0x4485f4,null))['catch'](handleError(_0x4485f4,null));};
\ No newline at end of file
+var _0x28d6=['model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','fields','includeAll','create','body','update','find','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','agent','admin','fullname','role','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','sendStatus','end','status','offset','count','limit','Content-Range','json','apply','reject','save','then','destroy','name','map','ChatInternalMessage','fieldName','key'];(function(_0x411559,_0x29ad23){var _0x3b51b5=function(_0x59424f){while(--_0x59424f){_0x411559['push'](_0x411559['shift']());}};_0x3b51b5(++_0x29ad23);}(_0x28d6,0x11d));var _0x628d=function(_0x526119,_0x5c4b34){_0x526119=_0x526119-0x0;var _0x402da2=_0x28d6[_0x526119];return _0x402da2;};'use strict';var emlformat=require(_0x628d('0x0'));var rimraf=require(_0x628d('0x1'));var zipdir=require(_0x628d('0x2'));var jsonpatch=require(_0x628d('0x3'));var rp=require(_0x628d('0x4'));var moment=require('moment');var BPromise=require(_0x628d('0x5'));var Mustache=require('mustache');var util=require(_0x628d('0x6'));var path=require('path');var sox=require(_0x628d('0x7'));var csv=require(_0x628d('0x8'));var ejs=require(_0x628d('0x9'));var fs=require('fs');var fs_extra=require(_0x628d('0xa'));var _=require(_0x628d('0xb'));var squel=require('squel');var crypto=require(_0x628d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x628d('0xd'));var toCsv=require(_0x628d('0x8'));var querystring=require(_0x628d('0xe'));var Papa=require(_0x628d('0xf'));var Redis=require('ioredis');var authService=require(_0x628d('0x10'));var qs=require(_0x628d('0x11'));var as=require(_0x628d('0x12'));var hardwareService=require(_0x628d('0x13'));var logger=require(_0x628d('0x14'))(_0x628d('0x15'));var utils=require(_0x628d('0x16'));var config=require(_0x628d('0x17'));var licenseUtil=require(_0x628d('0x18'));var db=require(_0x628d('0x19'))['db'];config[_0x628d('0x1a')]=_[_0x628d('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x628d('0x1c'))(new Redis(config['redis']));require(_0x628d('0x1d'))['register'](socket);function respondWithStatusCode(_0x1c4975,_0x4993b4){_0x4993b4=_0x4993b4||0xcc;return function(_0x34dd6c){if(_0x34dd6c){return _0x1c4975[_0x628d('0x1e')](_0x4993b4);}return _0x1c4975['status'](_0x4993b4)[_0x628d('0x1f')]();};}function respondWithResult(_0x3c738f,_0x2c71a0){_0x2c71a0=_0x2c71a0||0xc8;return function(_0xd30ca6){if(_0xd30ca6){return _0x3c738f[_0x628d('0x20')](_0x2c71a0)['json'](_0xd30ca6);}};}function respondWithFilteredResult(_0x175248,_0x126c0b){return function(_0x3438e7){if(_0x3438e7){var _0x3091bb=typeof _0x126c0b[_0x628d('0x21')]==='undefined'&&typeof _0x126c0b['limit']==='undefined';var _0xc3622d=_0x3438e7[_0x628d('0x22')];var _0x3e56c7=_0x3091bb?0x0:_0x126c0b[_0x628d('0x21')];var _0x2dcc43=_0x3091bb?_0x3438e7[_0x628d('0x22')]:_0x126c0b[_0x628d('0x21')]+_0x126c0b[_0x628d('0x23')];var _0x3a4045;if(_0x2dcc43>=_0xc3622d){_0x2dcc43=_0xc3622d;_0x3a4045=0xc8;}else{_0x3a4045=0xce;}_0x175248['status'](_0x3a4045);return _0x175248['set'](_0x628d('0x24'),_0x3e56c7+'-'+_0x2dcc43+'/'+_0xc3622d)[_0x628d('0x25')](_0x3438e7);}return null;};}function patchUpdates(_0x571fdd){return function(_0x58acea){try{jsonpatch[_0x628d('0x26')](_0x58acea,_0x571fdd,!![]);}catch(_0x30d13c){return BPromise[_0x628d('0x27')](_0x30d13c);}return _0x58acea[_0x628d('0x28')]();};}function saveUpdates(_0x5832c4,_0x3b68d9){return function(_0x2bcd96){if(_0x2bcd96){return _0x2bcd96['update'](_0x5832c4)[_0x628d('0x29')](function(_0x5e542b){return _0x5e542b;});}return null;};}function removeEntity(_0x31e9c0,_0x510471){return function(_0xfdefca){if(_0xfdefca){return _0xfdefca[_0x628d('0x2a')]()['then'](function(){_0x31e9c0[_0x628d('0x20')](0xcc)[_0x628d('0x1f')]();});}};}function handleEntityNotFound(_0x5d126d,_0x3f1441){return function(_0x2cd367){if(!_0x2cd367){_0x5d126d[_0x628d('0x1e')](0x194);}return _0x2cd367;};}function handleError(_0x3480ae,_0x41bdc6){_0x41bdc6=_0x41bdc6||0x1f4;return function(_0x4fbf38){logger['error'](_0x4fbf38['stack']);if(_0x4fbf38[_0x628d('0x2b')]){delete _0x4fbf38[_0x628d('0x2b')];}_0x3480ae['status'](_0x41bdc6)['send'](_0x4fbf38);};}exports['index']=function(_0xf8a59b,_0x15706b){var _0x5bd5dd={},_0x5ace9d={},_0x225265={'count':0x0,'rows':[]};var _0x212812=_[_0x628d('0x2c')](db[_0x628d('0x2d')]['rawAttributes'],function(_0x5a5e18){return{'name':_0x5a5e18[_0x628d('0x2e')],'type':_0x5a5e18['type'][_0x628d('0x2f')]};});_0x5ace9d[_0x628d('0x30')]=_['map'](_0x212812,'name');_0x5ace9d[_0x628d('0x31')]=_[_0x628d('0x32')](_0xf8a59b[_0x628d('0x31')]);_0x5ace9d[_0x628d('0x33')]=_[_0x628d('0x34')](_0x5ace9d['model'],_0x5ace9d[_0x628d('0x31')]);_0x5bd5dd[_0x628d('0x35')]=_[_0x628d('0x34')](_0x5ace9d[_0x628d('0x30')],qs['fields'](_0xf8a59b[_0x628d('0x31')]['fields']));_0x5bd5dd[_0x628d('0x35')]=_0x5bd5dd['attributes'][_0x628d('0x36')]?_0x5bd5dd[_0x628d('0x35')]:_0x5ace9d[_0x628d('0x30')];if(!_0xf8a59b['query']['hasOwnProperty'](_0x628d('0x37'))){_0x5bd5dd['limit']=qs[_0x628d('0x23')](_0xf8a59b[_0x628d('0x31')][_0x628d('0x23')]);_0x5bd5dd['offset']=qs[_0x628d('0x21')](_0xf8a59b[_0x628d('0x31')][_0x628d('0x21')]);}_0x5bd5dd[_0x628d('0x38')]=qs[_0x628d('0x39')](_0xf8a59b['query'][_0x628d('0x39')]);_0x5bd5dd[_0x628d('0x3a')]=qs[_0x628d('0x33')](_[_0x628d('0x3b')](_0xf8a59b['query'],_0x5ace9d[_0x628d('0x33')]),_0x212812);if(_0xf8a59b[_0x628d('0x31')][_0x628d('0x3c')]){_0x5bd5dd[_0x628d('0x3a')]=_[_0x628d('0x3d')](_0x5bd5dd[_0x628d('0x3a')],{'$or':_[_0x628d('0x2c')](_0x212812,function(_0x18558f){if(_0x18558f[_0x628d('0x3e')]!==_0x628d('0x3f')){var _0x398cdf={};_0x398cdf[_0x18558f[_0x628d('0x2b')]]={'$like':'%'+_0xf8a59b['query'][_0x628d('0x3c')]+'%'};return _0x398cdf;}})});}_0x5bd5dd=_['merge']({},_0x5bd5dd,_0xf8a59b[_0x628d('0x40')]);var _0x3968ff={'where':_0x5bd5dd[_0x628d('0x3a')]};return db[_0x628d('0x2d')][_0x628d('0x22')](_0x3968ff)[_0x628d('0x29')](function(_0x25852a){_0x225265[_0x628d('0x22')]=_0x25852a;if(_0xf8a59b[_0x628d('0x31')]['includeAll']){_0x5bd5dd[_0x628d('0x41')]=[{'all':!![]}];}return db[_0x628d('0x2d')][_0x628d('0x42')](_0x5bd5dd);})[_0x628d('0x29')](function(_0x2b46f2){_0x225265[_0x628d('0x43')]=_0x2b46f2;return _0x225265;})[_0x628d('0x29')](respondWithFilteredResult(_0x15706b,_0x5bd5dd))[_0x628d('0x44')](handleError(_0x15706b,null));};exports[_0x628d('0x45')]=function(_0x2a23aa,_0x18962b){var _0xa35248={'raw':!![],'where':{'id':_0x2a23aa[_0x628d('0x46')]['id']}},_0x175c6e={};_0x175c6e['model']=_[_0x628d('0x32')](db[_0x628d('0x2d')][_0x628d('0x47')]);_0x175c6e[_0x628d('0x31')]=_[_0x628d('0x32')](_0x2a23aa[_0x628d('0x31')]);_0x175c6e[_0x628d('0x33')]=_['intersection'](_0x175c6e['model'],_0x175c6e['query']);_0xa35248[_0x628d('0x35')]=_[_0x628d('0x34')](_0x175c6e[_0x628d('0x30')],qs[_0x628d('0x48')](_0x2a23aa[_0x628d('0x31')][_0x628d('0x48')]));_0xa35248[_0x628d('0x35')]=_0xa35248[_0x628d('0x35')][_0x628d('0x36')]?_0xa35248[_0x628d('0x35')]:_0x175c6e['model'];if(_0x2a23aa[_0x628d('0x31')][_0x628d('0x49')]){_0xa35248[_0x628d('0x41')]=[{'all':!![]}];}_0xa35248=_[_0x628d('0x3d')]({},_0xa35248,_0x2a23aa[_0x628d('0x40')]);return db[_0x628d('0x2d')]['find'](_0xa35248)[_0x628d('0x29')](handleEntityNotFound(_0x18962b,null))[_0x628d('0x29')](respondWithResult(_0x18962b,null))[_0x628d('0x44')](handleError(_0x18962b,null));};exports[_0x628d('0x4a')]=function(_0x27f291,_0x508aa1){return db['ChatInternalMessage'][_0x628d('0x4a')](_0x27f291[_0x628d('0x4b')],{})[_0x628d('0x29')](respondWithResult(_0x508aa1,0xc9))['catch'](handleError(_0x508aa1,null));};exports[_0x628d('0x4c')]=function(_0x27fbf6,_0x5e72c7){if(_0x27fbf6['body']['id']){delete _0x27fbf6[_0x628d('0x4b')]['id'];}return db[_0x628d('0x2d')][_0x628d('0x4d')]({'where':{'id':_0x27fbf6[_0x628d('0x46')]['id']}})['then'](handleEntityNotFound(_0x5e72c7,null))[_0x628d('0x29')](saveUpdates(_0x27fbf6[_0x628d('0x4b')],null))[_0x628d('0x29')](respondWithResult(_0x5e72c7,null))[_0x628d('0x44')](handleError(_0x5e72c7,null));};exports[_0x628d('0x2a')]=function(_0x166c50,_0x22e9b2){return db[_0x628d('0x2d')][_0x628d('0x4d')]({'where':{'id':_0x166c50[_0x628d('0x46')]['id']}})['then'](handleEntityNotFound(_0x22e9b2,null))[_0x628d('0x29')](removeEntity(_0x22e9b2,null))[_0x628d('0x44')](handleError(_0x22e9b2,null));};exports[_0x628d('0x4e')]=function(_0x10849c,_0x5e2c1d){return db[_0x628d('0x2d')][_0x628d('0x4e')]()['then'](respondWithResult(_0x5e2c1d,null))[_0x628d('0x44')](handleError(_0x5e2c1d,null));};function wrapUser(_0x2c5261){return function(_0x9597a){var _0x3b4c0b=_0x2c5261[_0x628d('0x4f')]({'plain':!![]});_0x3b4c0b[_0x628d('0x50')]=[];if(_0x9597a){_0x3b4c0b[_0x628d('0x51')]=_0x9597a[_0x628d('0x52')];_0x3b4c0b[_0x628d('0x53')]=_0x9597a;}else{_0x3b4c0b[_0x628d('0x51')]=moment(0x0)[_0x628d('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0x3b4c0b[_0x628d('0x53')]={};}return _0x3b4c0b;};}exports[_0x628d('0x55')]=function(_0x39c1b3,_0x3f312b,_0x46d54d){var _0x48c15e=[];return db[_0x628d('0x56')]['findAll']({'where':{'role':[_0x628d('0x57'),_0x628d('0x58'),'user']},'attributes':['id',_0x628d('0x59'),'name',_0x628d('0x5a'),'userpic','internal',_0x628d('0x5b'),_0x628d('0x5c'),_0x628d('0x5d'),_0x628d('0x5e')],'order':qs[_0x628d('0x39')](_0x628d('0x5f')),'include':[{'model':db[_0x628d('0x60')],'as':_0x628d('0x61'),'attributes':['id',_0x628d('0x2b'),_0x628d('0x3e')],'through':{'attributes':[]}}]})[_0x628d('0x29')](function(_0x77a14b){if(_0x77a14b){var _0x4d66ba=_0x39c1b3[_0x628d('0x62')]['get']({'plain':!![]});if(!_0x4d66ba)throw new Error(_0x628d('0x63'));if(_0x4d66ba[_0x628d('0x5a')]==='user'){return db[_0x628d('0x64')]['find']({'where':{'name':_0x628d('0x65'),'userProfileId':_0x4d66ba[_0x628d('0x66')]},'raw':!![]})[_0x628d('0x29')](function(_0x16d0e5){if(_0x16d0e5){if(_0x16d0e5[_0x628d('0x67')]===0x0){return db[_0x628d('0x68')][_0x628d('0x42')]({'where':{'sectionId':_0x16d0e5['id']},'raw':!![]})['then'](function(_0x2ebba5){var _0x3818ab=[];if(_[_0x628d('0x69')](_0x2ebba5)){_0x3818ab=_[_0x628d('0x3c')](_0x77a14b,function(_0x21ff6b){if(_0x21ff6b['role']!=='agent'){return _0x21ff6b;}});return _0x3818ab;}else{for(var _0x54eb00=0x0;_0x54eb00<_0x77a14b[_0x628d('0x36')];_0x54eb00++){var _0x16a24b=_0x77a14b[_0x54eb00];if(_0x16a24b[_0x628d('0x5a')]==='agent'){var _0xc27752=_[_0x628d('0x4d')](_0x2ebba5,function(_0xa43811){return _0xa43811[_0x628d('0x6a')]===_0x16a24b['id'];});if(_0xc27752)_0x3818ab[_0x628d('0x6b')](_0x16a24b);}else{_0x3818ab[_0x628d('0x6b')](_0x16a24b);}}return _0x3818ab;}});}else{return _0x77a14b;}}else{var _0x38b01b=_['filter'](_0x77a14b,function(_0x5e284e){if(_0x5e284e[_0x628d('0x5a')]!==_0x628d('0x57')){return _0x5e284e;}});return _0x38b01b;}});}else{return _0x77a14b;}}})[_0x628d('0x29')](function(_0x40e568){var _0x525076=[];if(_0x40e568){_0x48c15e=_0x40e568;for(var _0x45a0d8=0x0;_0x45a0d8<_0x40e568[_0x628d('0x36')];_0x45a0d8+=0x1){_0x48c15e[_0x45a0d8][_0x628d('0x50')]=[];_0x525076[_0x628d('0x6b')](db[_0x628d('0x2d')][_0x628d('0x4d')]({'where':{'FromId':[_0x39c1b3['user']['id'],_0x40e568[_0x45a0d8]['id']],'ToId':[_0x39c1b3['user']['id'],_0x40e568[_0x45a0d8]['id']],'ChatGroupId':null},'attributes':['id',_0x628d('0x52'),'FromId','ToId',_0x628d('0x6c'),_0x628d('0x4b')],'order':qs[_0x628d('0x39')](_0x628d('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x628d('0x29')](wrapUser(_0x40e568[_0x45a0d8])));}return BPromise[_0x628d('0x6e')](_0x525076);}return[];})[_0x628d('0x29')](function(_0x2b0cf6){return{'rows':_0x2b0cf6,'count':_0x2b0cf6['length']};})[_0x628d('0x29')](respondWithResult(_0x3f312b,null))[_0x628d('0x44')](handleError(_0x3f312b,null));};
\ No newline at end of file
index 9e91f2c..469cc73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc76=['ChatInternalMessage','save','update','emit','hasOwnProperty','exports'];(function(_0x17d214,_0x4487a2){var _0x5ef053=function(_0x193469){while(--_0x193469){_0x17d214['push'](_0x17d214['shift']());}};_0x5ef053(++_0x4487a2);}(_0xdc76,0x1ec));var _0x6dc7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdc76[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require('../../mysqldb')['db'][_0x6dc7('0x0')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6dc7('0x1'),'afterUpdate':_0x6dc7('0x2'),'afterDestroy':'remove'};function emitEvent(_0x1c3168){return function(_0x129d59,_0x8e65dc,_0x4a5204){ChatInternalMessageEvents[_0x6dc7('0x3')](_0x1c3168+':'+_0x129d59['id'],_0x129d59);ChatInternalMessageEvents['emit'](_0x1c3168,_0x129d59);_0x4a5204(null);};}for(var e in events){if(events[_0x6dc7('0x4')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x6dc7('0x5')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x3f13=['emit','hook','exports','events','setMaxListeners','remove'];(function(_0x90f6be,_0x5ebf25){var _0x41f160=function(_0x4ea5f6){while(--_0x4ea5f6){_0x90f6be['push'](_0x90f6be['shift']());}};_0x41f160(++_0x5ebf25);}(_0x3f13,0x10b));var _0x33f1=function(_0x4d63a3,_0x1b5e8f){_0x4d63a3=_0x4d63a3-0x0;var _0x1ed1f4=_0x3f13[_0x4d63a3];return _0x1ed1f4;};'use strict';var EventEmitter=require(_0x33f1('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x33f1('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x33f1('0x2')};function emitEvent(_0x19c54b){return function(_0xee5a5,_0xa0e1de,_0x4458eb){ChatInternalMessageEvents[_0x33f1('0x3')](_0x19c54b+':'+_0xee5a5['id'],_0xee5a5);ChatInternalMessageEvents[_0x33f1('0x3')](_0x19c54b,_0xee5a5);_0x4458eb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x33f1('0x4')](e,emitEvent(event));}}module[_0x33f1('0x5')]=ChatInternalMessageEvents;
\ No newline at end of file
index ae84dfe..9aa9dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf79=['../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4d14f2,_0x19fbeb){var _0x519f3b=function(_0x1210c5){while(--_0x1210c5){_0x4d14f2['push'](_0x4d14f2['shift']());}};_0x519f3b(++_0x19fbeb);}(_0xbf79,0x157));var _0x9bf7=function(_0x531007,_0x1551a7){_0x531007=_0x531007-0x0;var _0x26ee8e=_0xbf79[_0x531007];return _0x26ee8e;};'use strict';var _=require(_0x9bf7('0x0'));var util=require(_0x9bf7('0x1'));var logger=require(_0x9bf7('0x2'))(_0x9bf7('0x3'));var moment=require(_0x9bf7('0x4'));var BPromise=require('bluebird');var rp=require(_0x9bf7('0x5'));var fs=require('fs');var path=require(_0x9bf7('0x6'));var rimraf=require('rimraf');var config=require(_0x9bf7('0x7'));var attributes=require(_0x9bf7('0x8'));module[_0x9bf7('0x9')]=function(_0xeb0f40,_0xc77d8b){return _0xeb0f40[_0x9bf7('0xa')](_0x9bf7('0xb'),attributes,{'tableName':_0x9bf7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9bf7('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xab2c=['utf8mb4','lodash','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages'];(function(_0x5cb278,_0x4f721e){var _0x9dd564=function(_0x14798c){while(--_0x14798c){_0x5cb278['push'](_0x5cb278['shift']());}};_0x9dd564(++_0x4f721e);}(_0xab2c,0xb7));var _0xcab2=function(_0x2f2d88,_0x32815c){_0x2f2d88=_0x2f2d88-0x0;var _0x4742ee=_0xab2c[_0x2f2d88];return _0x4742ee;};'use strict';var _=require(_0xcab2('0x0'));var util=require('util');var logger=require(_0xcab2('0x1'))(_0xcab2('0x2'));var moment=require('moment');var BPromise=require(_0xcab2('0x3'));var rp=require(_0xcab2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcab2('0x5'));var config=require(_0xcab2('0x6'));var attributes=require(_0xcab2('0x7'));module[_0xcab2('0x8')]=function(_0x2cd871,_0x379ef3){return _0x2cd871[_0xcab2('0x9')](_0xcab2('0xa'),attributes,{'tableName':_0xcab2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcab2('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8aaf1f3..95c3a6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe873=['jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x300bda,_0x610528){var _0x61ea11=function(_0x480e07){while(--_0x480e07){_0x300bda['push'](_0x300bda['shift']());}};_0x61ea11(++_0x610528);}(_0xe873,0x13f));var _0x3e87=function(_0x4e89d4,_0x8c314c){_0x4e89d4=_0x4e89d4-0x0;var _0x520a7d=_0xe873[_0x4e89d4];return _0x520a7d;};'use strict';var _=require(_0x3e87('0x0'));var util=require(_0x3e87('0x1'));var moment=require(_0x3e87('0x2'));var BPromise=require(_0x3e87('0x3'));var rs=require(_0x3e87('0x4'));var fs=require('fs');var Redis=require(_0x3e87('0x5'));var db=require(_0x3e87('0x6'))['db'];var utils=require(_0x3e87('0x7'));var logger=require(_0x3e87('0x8'))(_0x3e87('0x9'));var config=require(_0x3e87('0xa'));var jayson=require(_0x3e87('0xb'));var client=jayson['client'][_0x3e87('0xc')]({'port':0x232a});config[_0x3e87('0xd')]=_[_0x3e87('0xe')](config[_0x3e87('0xd')],{'host':_0x3e87('0xf'),'port':0x18eb});var socket=require(_0x3e87('0x10'))(new Redis(config[_0x3e87('0xd')]));require('./chatInternalMessage.socket')[_0x3e87('0x11')](socket);function respondWithRpcPromise(_0x537c5a,_0x219282,_0x263aaf){return new BPromise(function(_0x154ce4,_0x1005fb){return client[_0x3e87('0x12')](_0x537c5a,_0x263aaf)[_0x3e87('0x13')](function(_0x9dde89){logger[_0x3e87('0x14')](_0x3e87('0x15'),_0x219282,_0x3e87('0x16'));logger[_0x3e87('0x17')](_0x3e87('0x18'),_0x219282,_0x3e87('0x16'),JSON[_0x3e87('0x19')](_0x9dde89));if(_0x9dde89[_0x3e87('0x1a')]){if(_0x9dde89[_0x3e87('0x1a')][_0x3e87('0x1b')]===0x1f4){logger[_0x3e87('0x1a')](_0x3e87('0x15'),_0x219282,_0x9dde89[_0x3e87('0x1a')][_0x3e87('0x1c')]);return _0x1005fb(_0x9dde89[_0x3e87('0x1a')][_0x3e87('0x1c')]);}logger[_0x3e87('0x1a')](_0x3e87('0x15'),_0x219282,_0x9dde89[_0x3e87('0x1a')][_0x3e87('0x1c')]);return _0x154ce4(_0x9dde89['error']['message']);}else{logger[_0x3e87('0x14')](_0x3e87('0x15'),_0x219282,_0x3e87('0x16'));_0x154ce4(_0x9dde89['result'][_0x3e87('0x1c')]);}})[_0x3e87('0x1d')](function(_0x5032a6){logger[_0x3e87('0x1a')](_0x3e87('0x15'),_0x219282,_0x5032a6);_0x1005fb(_0x5032a6);});});}
\ No newline at end of file
+var _0xa271=['message','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','redis','localhost','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x3b59e8,_0x117635){var _0x441493=function(_0x22802d){while(--_0x22802d){_0x3b59e8['push'](_0x3b59e8['shift']());}};_0x441493(++_0x117635);}(_0xa271,0xe8));var _0x1a27=function(_0x5124d2,_0x3400cb){_0x5124d2=_0x5124d2-0x0;var _0x361478=_0xa271[_0x5124d2];return _0x361478;};'use strict';var _=require('lodash');var util=require(_0x1a27('0x0'));var moment=require(_0x1a27('0x1'));var BPromise=require(_0x1a27('0x2'));var rs=require(_0x1a27('0x3'));var fs=require('fs');var Redis=require(_0x1a27('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1a27('0x5'));var logger=require('../../config/logger')(_0x1a27('0x6'));var config=require('../../config/environment');var jayson=require(_0x1a27('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x1a27('0x8')]=_['defaults'](config[_0x1a27('0x8')],{'host':_0x1a27('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1a27('0x8')]));require(_0x1a27('0xa'))[_0x1a27('0xb')](socket);function respondWithRpcPromise(_0x1167c6,_0x42e712,_0x19def0){return new BPromise(function(_0x5538bd,_0x5656c5){return client[_0x1a27('0xc')](_0x1167c6,_0x19def0)[_0x1a27('0xd')](function(_0x5dcbba){logger[_0x1a27('0xe')](_0x1a27('0xf'),_0x42e712,_0x1a27('0x10'));logger['debug'](_0x1a27('0x11'),_0x42e712,_0x1a27('0x10'),JSON['stringify'](_0x5dcbba));if(_0x5dcbba[_0x1a27('0x12')]){if(_0x5dcbba[_0x1a27('0x12')][_0x1a27('0x13')]===0x1f4){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x42e712,_0x5dcbba[_0x1a27('0x12')][_0x1a27('0x14')]);return _0x5656c5(_0x5dcbba[_0x1a27('0x12')][_0x1a27('0x14')]);}logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x42e712,_0x5dcbba[_0x1a27('0x12')][_0x1a27('0x14')]);return _0x5538bd(_0x5dcbba[_0x1a27('0x12')][_0x1a27('0x14')]);}else{logger[_0x1a27('0xe')](_0x1a27('0xf'),_0x42e712,'request\x20sent');_0x5538bd(_0x5dcbba['result'][_0x1a27('0x14')]);}})['catch'](function(_0x56b530){logger[_0x1a27('0x12')](_0x1a27('0xf'),_0x42e712,_0x56b530);_0x5656c5(_0x56b530);});});}
\ No newline at end of file
index 5c8d336..49f9048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6595=['save','remove','emit','removeListener','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x59315b,_0xe76808){var _0x3df633=function(_0x1c3fc7){while(--_0x1c3fc7){_0x59315b['push'](_0x59315b['shift']());}};_0x3df633(++_0xe76808);}(_0x6595,0x1d4));var _0x5659=function(_0x570571,_0x513c24){_0x570571=_0x570571-0x0;var _0x2882fe=_0x6595[_0x570571];return _0x2882fe;};'use strict';var ChatInternalMessageEvents=require(_0x5659('0x0'));var events=[_0x5659('0x1'),_0x5659('0x2'),'update'];function createListener(_0x470b0b,_0x45592f){return function(_0x355bbc){_0x45592f[_0x5659('0x3')](_0x470b0b,_0x355bbc);};}function removeListener(_0x2bedad,_0x2d921e){return function(){ChatInternalMessageEvents[_0x5659('0x4')](_0x2bedad,_0x2d921e);};}exports['register']=function(_0x4c7825){for(var _0x5d2eba=0x0,_0x1bc153=events[_0x5659('0x5')];_0x5d2eba<_0x1bc153;_0x5d2eba++){var _0x137b32=events[_0x5d2eba];var _0x2d40e5=createListener(_0x5659('0x6')+_0x137b32,_0x4c7825);ChatInternalMessageEvents['on'](_0x137b32,_0x2d40e5);}};
\ No newline at end of file
+var _0xe9c7=['register','./chatInternalMessage.events','remove','update','emit'];(function(_0x53959f,_0x518993){var _0x30c6cd=function(_0x4971b5){while(--_0x4971b5){_0x53959f['push'](_0x53959f['shift']());}};_0x30c6cd(++_0x518993);}(_0xe9c7,0x105));var _0x7e9c=function(_0x1fc7ea,_0x1eb959){_0x1fc7ea=_0x1fc7ea-0x0;var _0x390677=_0xe9c7[_0x1fc7ea];return _0x390677;};'use strict';var ChatInternalMessageEvents=require(_0x7e9c('0x0'));var events=['save',_0x7e9c('0x1'),_0x7e9c('0x2')];function createListener(_0x4e5f4b,_0x2b9e27){return function(_0x425284){_0x2b9e27[_0x7e9c('0x3')](_0x4e5f4b,_0x425284);};}function removeListener(_0x4146a6,_0x3b9123){return function(){ChatInternalMessageEvents['removeListener'](_0x4146a6,_0x3b9123);};}exports[_0x7e9c('0x4')]=function(_0x55891f){for(var _0x9be77f=0x0,_0x16ad53=events['length'];_0x9be77f<_0x16ad53;_0x9be77f++){var _0xe94f56=events[_0x9be77f];var _0x5ac58e=createListener('chatInternalMessage:'+_0xe94f56,_0x55891f);ChatInternalMessageEvents['on'](_0xe94f56,_0x5ac58e);}};
\ No newline at end of file
index d51a5aa..07058ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ff=['isAuthenticated','index','describe','getUsers','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get'];(function(_0x9dc26d,_0xb80cb1){var _0x447cf0=function(_0x1b037d){while(--_0x1b037d){_0x9dc26d['push'](_0x9dc26d['shift']());}};_0x447cf0(++_0xb80cb1);}(_0x53ff,0xd4));var _0xf53f=function(_0x4ff3e1,_0x119471){_0x4ff3e1=_0x4ff3e1-0x0;var _0x560cd1=_0x53ff[_0x4ff3e1];return _0x560cd1;};'use strict';var multer=require(_0xf53f('0x0'));var util=require(_0xf53f('0x1'));var path=require('path');var timeout=require(_0xf53f('0x2'));var express=require('express');var router=express[_0xf53f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf53f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xf53f('0x5'));var controller=require(_0xf53f('0x6'));router[_0xf53f('0x7')]('/',auth[_0xf53f('0x8')](),controller[_0xf53f('0x9')]);router[_0xf53f('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xf53f('0xa')]);router[_0xf53f('0x7')]('/users',auth['isAuthenticated'](),controller[_0xf53f('0xb')]);router['get'](_0xf53f('0xc'),auth[_0xf53f('0x8')](),controller[_0xf53f('0xd')]);router[_0xf53f('0xe')]('/',auth[_0xf53f('0x8')](),controller[_0xf53f('0xf')]);router[_0xf53f('0x10')](_0xf53f('0xc'),controller[_0xf53f('0x11')]);router[_0xf53f('0x12')](_0xf53f('0xc'),auth[_0xf53f('0x8')](),controller['destroy']);module[_0xf53f('0x13')]=router;
\ No newline at end of file
+var _0x0002=['exports','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatInternalMessage.controller','get','/describe','isAuthenticated','describe','getUsers','/:id','show','create','put','update','delete','destroy'];(function(_0x7c9341,_0x92e3ca){var _0x14c09f=function(_0x34efa6){while(--_0x34efa6){_0x7c9341['push'](_0x7c9341['shift']());}};_0x14c09f(++_0x92e3ca);}(_0x0002,0x119));var _0x2000=function(_0x53755f,_0x28e72e){_0x53755f=_0x53755f-0x0;var _0x46539d=_0x0002[_0x53755f];return _0x46539d;};'use strict';var multer=require('multer');var util=require(_0x2000('0x0'));var path=require('path');var timeout=require(_0x2000('0x1'));var express=require(_0x2000('0x2'));var router=express[_0x2000('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2000('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2000('0x5'));var controller=require(_0x2000('0x6'));router[_0x2000('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2000('0x7')](_0x2000('0x8'),auth[_0x2000('0x9')](),controller[_0x2000('0xa')]);router[_0x2000('0x7')]('/users',auth['isAuthenticated'](),controller[_0x2000('0xb')]);router[_0x2000('0x7')](_0x2000('0xc'),auth[_0x2000('0x9')](),controller[_0x2000('0xd')]);router['post']('/',auth[_0x2000('0x9')](),controller[_0x2000('0xe')]);router[_0x2000('0xf')](_0x2000('0xc'),controller[_0x2000('0x10')]);router[_0x2000('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x2000('0x12')]);module[_0x2000('0x13')]=router;
\ No newline at end of file
index ff08a4c..85e803b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f3=['DATE','STRING','exports','TEXT','medium','ENUM','out'];(function(_0x3dadef,_0x22fb7a){var _0x2a2364=function(_0x1c0660){while(--_0x1c0660){_0x3dadef['push'](_0x3dadef['shift']());}};_0x2a2364(++_0x22fb7a);}(_0x18f3,0x19f));var _0x318f=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x18f3[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require('sequelize');module[_0x318f('0x0')]={'body':{'type':Sequelize[_0x318f('0x1')](_0x318f('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x318f('0x3')]('in','out'),'defaultValue':_0x318f('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x318f('0x5')]},'providerName':{'type':Sequelize[_0x318f('0x6')]},'providerResponse':{'type':Sequelize[_0x318f('0x1')]}};
\ No newline at end of file
+var _0xb4f8=['medium','BOOLEAN','ENUM','out','STRING','exports','TEXT'];(function(_0x307831,_0x508287){var _0x12ed17=function(_0x223253){while(--_0x223253){_0x307831['push'](_0x307831['shift']());}};_0x12ed17(++_0x508287);}(_0xb4f8,0x83));var _0x8b4f=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb4f8[_0x1a36a5];return _0x746243;};'use strict';var Sequelize=require('sequelize');module[_0x8b4f('0x0')]={'body':{'type':Sequelize[_0x8b4f('0x1')](_0x8b4f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x8b4f('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x8b4f('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8b4f('0x4')]('in','out'),'defaultValue':_0x8b4f('0x5'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x8b4f('0x6')]},'providerResponse':{'type':Sequelize[_0x8b4f('0x1')]}};
\ No newline at end of file
index 0291244..21316b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc556=['read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','ChatInteraction','ChatInteractionId','isNil','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','channel','motionChannel','event','EventManager','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','sequelize','interface','SIP/%s','rejectmessage','eml-format','rimraf','request-promise','moment','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/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','apply','reject','update','destroy','status','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','model','query','filters','attributes','fields','hasOwnProperty','order','sort','where','pick','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','show','params','keys','length','find','create','body','describe','chat-interactions','accept','chat'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xc556,0x1ba));var _0x6c55=function(_0x3d7b2d,_0x65b922){_0x3d7b2d=_0x3d7b2d-0x0;var _0x5e7a4d=_0xc556[_0x3d7b2d];return _0x5e7a4d;};'use strict';var emlformat=require(_0x6c55('0x0'));var rimraf=require(_0x6c55('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6c55('0x2'));var moment=require(_0x6c55('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6c55('0x4'));var util=require(_0x6c55('0x5'));var path=require(_0x6c55('0x6'));var sox=require(_0x6c55('0x7'));var csv=require(_0x6c55('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c55('0x9'));var _=require('lodash');var squel=require(_0x6c55('0xa'));var crypto=require(_0x6c55('0xb'));var jsforce=require(_0x6c55('0xc'));var deskjs=require(_0x6c55('0xd'));var toCsv=require(_0x6c55('0x8'));var querystring=require(_0x6c55('0xe'));var Papa=require('papaparse');var Redis=require(_0x6c55('0xf'));var authService=require(_0x6c55('0x10'));var qs=require(_0x6c55('0x11'));var as=require(_0x6c55('0x12'));var hardwareService=require(_0x6c55('0x13'));var logger=require(_0x6c55('0x14'))(_0x6c55('0x15'));var utils=require('../../config/utils');var config=require(_0x6c55('0x16'));var licenseUtil=require(_0x6c55('0x17'));var db=require(_0x6c55('0x18'))['db'];config['redis']=_[_0x6c55('0x19')](config[_0x6c55('0x1a')],{'host':_0x6c55('0x1b'),'port':0x18eb});var socket=require(_0x6c55('0x1c'))(new Redis(config['redis']));require(_0x6c55('0x1d'))['register'](socket);var jayson=require(_0x6c55('0x1e'));var client=jayson[_0x6c55('0x1f')][_0x6c55('0x20')]({'port':0x232c});var client9002=jayson[_0x6c55('0x1f')][_0x6c55('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1e8887,_0x5e80a1,_0x419ed1,_0x416204){return new BPromise(function(_0x32bcaf,_0x1b7b9b){var _0x496ff9=_0x416204||client;return _0x496ff9[_0x6c55('0x21')](_0x1e8887,_0x419ed1)['then'](function(_0x26ed1a){logger[_0x6c55('0x22')](_0x6c55('0x23'),_0x5e80a1,_0x6c55('0x24'));logger['debug'](_0x6c55('0x25'),_0x5e80a1,_0x6c55('0x24'),JSON[_0x6c55('0x26')](_0x26ed1a));if(_0x26ed1a[_0x6c55('0x27')]){if(_0x26ed1a[_0x6c55('0x27')][_0x6c55('0x28')]===0x1f4){logger[_0x6c55('0x27')](_0x6c55('0x23'),_0x5e80a1,_0x26ed1a['error'][_0x6c55('0x29')]);return _0x1b7b9b(_0x26ed1a[_0x6c55('0x27')][_0x6c55('0x29')]);}logger['error'](_0x6c55('0x23'),_0x5e80a1,_0x26ed1a['error'][_0x6c55('0x29')]);return _0x32bcaf(_0x26ed1a[_0x6c55('0x27')]['message']);}else{logger[_0x6c55('0x22')]('ChatMessage,\x20%s,\x20%s',_0x5e80a1,'request\x20sent');_0x32bcaf(_0x26ed1a[_0x6c55('0x2a')][_0x6c55('0x29')]);}})[_0x6c55('0x2b')](function(_0x2b94db){logger[_0x6c55('0x27')](_0x6c55('0x23'),_0x5e80a1,_0x2b94db);_0x1b7b9b(_0x2b94db);});});}function respondWithStatusCode(_0x3adb02,_0x1198eb){_0x1198eb=_0x1198eb||0xcc;return function(_0x209f39){if(_0x209f39){return _0x3adb02[_0x6c55('0x2c')](_0x1198eb);}return _0x3adb02['status'](_0x1198eb)[_0x6c55('0x2d')]();};}function respondWithResult(_0x2b47d8,_0x31bdc5){_0x31bdc5=_0x31bdc5||0xc8;return function(_0x36452f){if(_0x36452f){return _0x2b47d8['status'](_0x31bdc5)[_0x6c55('0x2e')](_0x36452f);}};}function respondWithFilteredResult(_0x415209,_0x2a0bbd){return function(_0x401a78){if(_0x401a78){var _0x5e1795=typeof _0x2a0bbd[_0x6c55('0x2f')]===_0x6c55('0x30')&&typeof _0x2a0bbd[_0x6c55('0x31')]==='undefined';var _0x22ebc1=_0x401a78['count'];var _0x2e2a19=_0x5e1795?0x0:_0x2a0bbd[_0x6c55('0x2f')];var _0x25f72f=_0x5e1795?_0x401a78[_0x6c55('0x32')]:_0x2a0bbd[_0x6c55('0x2f')]+_0x2a0bbd[_0x6c55('0x31')];var _0x1fadce;if(_0x25f72f>=_0x22ebc1){_0x25f72f=_0x22ebc1;_0x1fadce=0xc8;}else{_0x1fadce=0xce;}_0x415209['status'](_0x1fadce);return _0x415209['set']('Content-Range',_0x2e2a19+'-'+_0x25f72f+'/'+_0x22ebc1)[_0x6c55('0x2e')](_0x401a78);}return null;};}function patchUpdates(_0x3f6295){return function(_0x5b9f39){try{jsonpatch[_0x6c55('0x33')](_0x5b9f39,_0x3f6295,!![]);}catch(_0xbbd476){return BPromise[_0x6c55('0x34')](_0xbbd476);}return _0x5b9f39['save']();};}function saveUpdates(_0x25d81d,_0x536c4d){return function(_0x178244){if(_0x178244){return _0x178244[_0x6c55('0x35')](_0x25d81d)['then'](function(_0x2d5029){return _0x2d5029;});}return null;};}function removeEntity(_0x5bcb4d,_0xde4135){return function(_0x4e181b){if(_0x4e181b){return _0x4e181b[_0x6c55('0x36')]()['then'](function(){_0x5bcb4d[_0x6c55('0x37')](0xcc)[_0x6c55('0x2d')]();});}};}function handleEntityNotFound(_0x14aaa4,_0x4f8638){return function(_0x32d520){if(!_0x32d520){_0x14aaa4['sendStatus'](0x194);}return _0x32d520;};}function handleError(_0x5c4024,_0x3ab32c){_0x3ab32c=_0x3ab32c||0x1f4;return function(_0x325b06){logger[_0x6c55('0x27')](_0x325b06[_0x6c55('0x38')]);if(_0x325b06['name']){delete _0x325b06[_0x6c55('0x39')];}_0x5c4024[_0x6c55('0x37')](_0x3ab32c)[_0x6c55('0x3a')](_0x325b06);};}exports[_0x6c55('0x3b')]=function(_0x1fe43c,_0x354fbf){var _0x331711={},_0x4fe5da={},_0x1b0dfc={'count':0x0,'rows':[]};var _0x4c5d44=_[_0x6c55('0x3c')](db[_0x6c55('0x3d')][_0x6c55('0x3e')],function(_0x45081a){return{'name':_0x45081a[_0x6c55('0x3f')],'type':_0x45081a[_0x6c55('0x40')]['key']};});_0x4fe5da[_0x6c55('0x41')]=_[_0x6c55('0x3c')](_0x4c5d44,_0x6c55('0x39'));_0x4fe5da[_0x6c55('0x42')]=_['keys'](_0x1fe43c[_0x6c55('0x42')]);_0x4fe5da[_0x6c55('0x43')]=_['intersection'](_0x4fe5da[_0x6c55('0x41')],_0x4fe5da[_0x6c55('0x42')]);_0x331711[_0x6c55('0x44')]=_['intersection'](_0x4fe5da[_0x6c55('0x41')],qs[_0x6c55('0x45')](_0x1fe43c[_0x6c55('0x42')][_0x6c55('0x45')]));_0x331711[_0x6c55('0x44')]=_0x331711[_0x6c55('0x44')]['length']?_0x331711['attributes']:_0x4fe5da['model'];if(!_0x1fe43c[_0x6c55('0x42')][_0x6c55('0x46')]('nolimit')){_0x331711['limit']=qs[_0x6c55('0x31')](_0x1fe43c[_0x6c55('0x42')][_0x6c55('0x31')]);_0x331711['offset']=qs[_0x6c55('0x2f')](_0x1fe43c[_0x6c55('0x42')]['offset']);}_0x331711[_0x6c55('0x47')]=qs[_0x6c55('0x48')](_0x1fe43c[_0x6c55('0x42')]['sort']);_0x331711[_0x6c55('0x49')]=qs[_0x6c55('0x43')](_[_0x6c55('0x4a')](_0x1fe43c[_0x6c55('0x42')],_0x4fe5da[_0x6c55('0x43')]),_0x4c5d44);if(_0x1fe43c[_0x6c55('0x42')]['filter']){_0x331711[_0x6c55('0x49')]=_['merge'](_0x331711[_0x6c55('0x49')],{'$or':_[_0x6c55('0x3c')](_0x4c5d44,function(_0x90a29){if(_0x90a29[_0x6c55('0x40')]!==_0x6c55('0x4b')){var _0x124a5b={};_0x124a5b[_0x90a29[_0x6c55('0x39')]]={'$like':'%'+_0x1fe43c['query']['filter']+'%'};return _0x124a5b;}})});}_0x331711=_[_0x6c55('0x4c')]({},_0x331711,_0x1fe43c[_0x6c55('0x4d')]);var _0x5c43d8={'where':_0x331711[_0x6c55('0x49')]};return db[_0x6c55('0x3d')][_0x6c55('0x32')](_0x5c43d8)[_0x6c55('0x4e')](function(_0x4addbd){_0x1b0dfc[_0x6c55('0x32')]=_0x4addbd;if(_0x1fe43c[_0x6c55('0x42')][_0x6c55('0x4f')]){_0x331711[_0x6c55('0x50')]=[{'all':!![]}];}return db[_0x6c55('0x3d')][_0x6c55('0x51')](_0x331711);})['then'](function(_0x190daa){_0x1b0dfc[_0x6c55('0x52')]=_0x190daa;return _0x1b0dfc;})['then'](respondWithFilteredResult(_0x354fbf,_0x331711))[_0x6c55('0x2b')](handleError(_0x354fbf,null));};exports[_0x6c55('0x53')]=function(_0x5675fd,_0x105026){var _0x226277={'raw':!![],'where':{'id':_0x5675fd[_0x6c55('0x54')]['id']}},_0xa55ce9={};_0xa55ce9[_0x6c55('0x41')]=_[_0x6c55('0x55')](db[_0x6c55('0x3d')]['rawAttributes']);_0xa55ce9[_0x6c55('0x42')]=_[_0x6c55('0x55')](_0x5675fd['query']);_0xa55ce9[_0x6c55('0x43')]=_['intersection'](_0xa55ce9[_0x6c55('0x41')],_0xa55ce9[_0x6c55('0x42')]);_0x226277[_0x6c55('0x44')]=_['intersection'](_0xa55ce9[_0x6c55('0x41')],qs[_0x6c55('0x45')](_0x5675fd['query'][_0x6c55('0x45')]));_0x226277[_0x6c55('0x44')]=_0x226277[_0x6c55('0x44')][_0x6c55('0x56')]?_0x226277[_0x6c55('0x44')]:_0xa55ce9[_0x6c55('0x41')];if(_0x5675fd[_0x6c55('0x42')][_0x6c55('0x4f')]){_0x226277[_0x6c55('0x50')]=[{'all':!![]}];}_0x226277=_[_0x6c55('0x4c')]({},_0x226277,_0x5675fd['options']);return db['ChatMessage'][_0x6c55('0x57')](_0x226277)[_0x6c55('0x4e')](handleEntityNotFound(_0x105026,null))[_0x6c55('0x4e')](respondWithResult(_0x105026,null))[_0x6c55('0x2b')](handleError(_0x105026,null));};exports[_0x6c55('0x58')]=function(_0x1dd054,_0x477e70){return db[_0x6c55('0x3d')]['create'](_0x1dd054[_0x6c55('0x59')],{})[_0x6c55('0x4e')](respondWithResult(_0x477e70,0xc9))['catch'](handleError(_0x477e70,null));};exports['update']=function(_0x18b4a3,_0xd9950){if(_0x18b4a3[_0x6c55('0x59')]['id']){delete _0x18b4a3[_0x6c55('0x59')]['id'];}return db['ChatMessage'][_0x6c55('0x57')]({'where':{'id':_0x18b4a3[_0x6c55('0x54')]['id']}})[_0x6c55('0x4e')](handleEntityNotFound(_0xd9950,null))['then'](saveUpdates(_0x18b4a3['body'],null))['then'](respondWithResult(_0xd9950,null))[_0x6c55('0x2b')](handleError(_0xd9950,null));};exports[_0x6c55('0x36')]=function(_0x377eca,_0x37de7e){return db[_0x6c55('0x3d')][_0x6c55('0x57')]({'where':{'id':_0x377eca[_0x6c55('0x54')]['id']}})['then'](handleEntityNotFound(_0x37de7e,null))[_0x6c55('0x4e')](removeEntity(_0x37de7e,null))[_0x6c55('0x2b')](handleError(_0x37de7e,null));};exports[_0x6c55('0x5a')]=function(_0x3eca5b,_0x3e003a){return db[_0x6c55('0x3d')][_0x6c55('0x5a')]()[_0x6c55('0x4e')](respondWithResult(_0x3e003a,null))[_0x6c55('0x2b')](handleError(_0x3e003a,null));};var interaction_log=require('../../config/logger')(_0x6c55('0x5b'));exports[_0x6c55('0x5c')]=function(_0x3b668e,_0x12e5e9,_0x164718){var _0x3c8ddc={'agent':{},'channel':_0x6c55('0x5d')};if(_0x3b668e[_0x6c55('0x59')]['id']){delete _0x3b668e[_0x6c55('0x59')]['id'];}_0x3b668e[_0x6c55('0x59')][_0x6c55('0x5e')]=!![];_0x3b668e[_0x6c55('0x59')][_0x6c55('0x5f')]=moment()[_0x6c55('0x60')](_0x6c55('0x61'));_0x3b668e['body'][_0x6c55('0x62')]=_0x3b668e['body'][_0x6c55('0x62')]||_0x3b668e[_0x6c55('0x63')]['id'];_0x3c8ddc['agent']['id']=_0x3b668e[_0x6c55('0x59')][_0x6c55('0x62')];return db['ChatMessage'][_0x6c55('0x57')]({'where':{'id':_0x3b668e[_0x6c55('0x54')]['id'],'UserId':null}})[_0x6c55('0x4e')](handleEntityNotFound(_0x12e5e9,null))[_0x6c55('0x4e')](saveUpdates(_0x3b668e[_0x6c55('0x59')],null))[_0x6c55('0x4e')](function(_0x369c43){if(_0x369c43){_0x3c8ddc[_0x6c55('0x29')]=_0x369c43[_0x6c55('0x64')]({'plain':!![]});return db[_0x6c55('0x65')][_0x6c55('0x57')]({'where':{'id':_0x369c43[_0x6c55('0x66')]}});}return null;})[_0x6c55('0x4e')](handleEntityNotFound(_0x12e5e9,null))[_0x6c55('0x4e')](function(_0x130174){if(_0x130174){return _0x130174['update']({'UserId':_0x3b668e[_0x6c55('0x59')][_0x6c55('0x62')],'read1stAt':_[_0x6c55('0x67')](_0x130174['read1stAt'])?moment()['format'](_0x6c55('0x61')):undefined});}return null;})[_0x6c55('0x4e')](function(_0x3028d6){if(_0x3028d6){_0x3c8ddc[_0x6c55('0x68')]=_0x3028d6[_0x6c55('0x64')]({'plain':!![]});interaction_log[_0x6c55('0x22')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3b668e[_0x6c55('0x63')]['id'],_0x3b668e['user'][_0x6c55('0x39')],_0x3b668e['user']['role'],_0x3c8ddc[_0x6c55('0x68')]['id'],_0x3b668e[_0x6c55('0x59')]?JSON[_0x6c55('0x26')](_0x3b668e[_0x6c55('0x59')]):_0x6c55('0x69'));return respondWithRpcPromise(_0x6c55('0x6a'),_0x6c55('0x6b'),_0x3c8ddc);}return null;})[_0x6c55('0x4e')](function(_0x2b3ac2){var _0x64ce95=_0x6c55('0x6c')+_0x2b3ac2['message'][_0x6c55('0x6d')];return db['sequelize'][_0x6c55('0x42')](_0x64ce95,{'type':db[_0x6c55('0x6e')][_0x6c55('0x6f')][_0x6c55('0x70')],'raw':!![]})[_0x6c55('0x4e')](function(_0x14dd97){return _0x14dd97;});})[_0x6c55('0x4e')](function(_0x5128c9){if(_0x5128c9){_0x3c8ddc[_0x6c55('0x29')][_0x6c55('0x71')]=_0x5128c9[0x0];if(!_0x3b668e[_0x6c55('0x59')][_0x6c55('0x62')])return;return db[_0x6c55('0x72')][_0x6c55('0x57')]({'where':{'id':_0x3b668e[_0x6c55('0x59')][_0x6c55('0x62')],'role':_0x6c55('0x73')},'attributes':['id','name',_0x6c55('0x74'),_0x6c55('0x75'),_0x6c55('0x76')],'raw':!![]});}return null;})['then'](function(_0x16c362){if(!_0x16c362)return null;_0x3c8ddc[_0x6c55('0x29')][_0x6c55('0x73')]=_0x16c362;return _0x3c8ddc;})[_0x6c55('0x4e')](function(_0x279f72){if(_0x279f72){if(_0x3b668e[_0x6c55('0x59')]['manual']){_0x3c8ddc[_0x6c55('0x29')]['interface']=util['format']('SIP/%s',_0x3b668e[_0x6c55('0x63')]['name']);_0x3c8ddc[_0x6c55('0x29')][_0x6c55('0x77')]=_0x3c8ddc['channel'];_0x3c8ddc[_0x6c55('0x29')][_0x6c55('0x78')]=_0x3c8ddc[_0x6c55('0x77')];_0x3c8ddc[_0x6c55('0x29')][_0x6c55('0x79')]='accept';return respondWithRpcPromise('EventManager',_0x6c55('0x7a'),{'event':_0x6c55('0x7b'),'message':_[_0x6c55('0x4c')](_0x3c8ddc[_0x6c55('0x29')],JSON[_0x6c55('0x7c')](_0x3c8ddc[_0x6c55('0x68')][_0x6c55('0x7d')]))},client9002)[_0x6c55('0x4e')](function(){return _0x3c8ddc;});}return _0x3c8ddc;}return null;})[_0x6c55('0x4e')](respondWithResult(_0x12e5e9,null))[_0x6c55('0x2b')](handleError(_0x12e5e9,null));};var interaction_log=require(_0x6c55('0x14'))(_0x6c55('0x5b'));exports[_0x6c55('0x34')]=function(_0xc71914,_0x5e29af,_0x11009e){var _0x302cd6={'agent':{},'channel':_0x6c55('0x5d')};if(_0xc71914[_0x6c55('0x59')]['id']){delete _0xc71914[_0x6c55('0x59')]['id'];}_0xc71914[_0x6c55('0x59')][_0x6c55('0x62')]=_0xc71914[_0x6c55('0x59')][_0x6c55('0x62')]||_0xc71914['user']['id'];_0x302cd6[_0x6c55('0x73')]['id']=_0xc71914[_0x6c55('0x59')][_0x6c55('0x62')];return db[_0x6c55('0x3d')]['find']({'where':{'id':_0xc71914[_0x6c55('0x54')]['id'],'UserId':null}})[_0x6c55('0x4e')](handleEntityNotFound(_0x5e29af,null))[_0x6c55('0x4e')](function(_0x1e3b47){if(_0x1e3b47){_0x302cd6[_0x6c55('0x29')]=_0x1e3b47[_0x6c55('0x64')]({'plain':!![]});return db[_0x6c55('0x65')][_0x6c55('0x57')]({'where':{'id':_0x1e3b47['ChatInteractionId']}});}return null;})[_0x6c55('0x4e')](handleEntityNotFound(_0x5e29af,null))[_0x6c55('0x4e')](function(_0x3bf15d){if(_0x3bf15d){_0x302cd6[_0x6c55('0x68')]=_0x3bf15d[_0x6c55('0x64')]({'plain':!![]});interaction_log['info'](_0x6c55('0x7e'),_0xc71914[_0x6c55('0x63')]['id'],_0xc71914['user']['name'],_0xc71914[_0x6c55('0x63')][_0x6c55('0x7f')],_0x302cd6['interaction']['id'],_0xc71914[_0x6c55('0x59')]?JSON['stringify'](_0xc71914[_0x6c55('0x59')]):_0x6c55('0x69'));return respondWithRpcPromise(_0x6c55('0x80'),_0x6c55('0x81'),_0x302cd6);}return null;})[_0x6c55('0x4e')](function(_0x950b04){var _0x8e51c3=_0x6c55('0x6c')+_0x950b04[_0x6c55('0x29')]['ContactId'];return db[_0x6c55('0x82')]['query'](_0x8e51c3,{'type':db['Sequelize'][_0x6c55('0x6f')]['SELECT'],'raw':!![]})['then'](function(_0x5478c7){return _0x5478c7;});})[_0x6c55('0x4e')](function(_0x2ee944){if(_0x2ee944){_0x302cd6['message'][_0x6c55('0x71')]=_0x2ee944[0x0];if(!_0xc71914[_0x6c55('0x59')]['UserId'])return;return db[_0x6c55('0x72')][_0x6c55('0x57')]({'where':{'id':_0xc71914[_0x6c55('0x59')]['UserId'],'role':'agent'},'attributes':['id',_0x6c55('0x39'),_0x6c55('0x74'),'email',_0x6c55('0x76')],'raw':!![]});}return null;})[_0x6c55('0x4e')](function(_0x24727b){if(!_0x24727b)return null;_0x302cd6[_0x6c55('0x29')][_0x6c55('0x73')]=_0x24727b;return _0x302cd6;})[_0x6c55('0x4e')](function(_0x4ed94c){if(_0x4ed94c){_0x4ed94c[_0x6c55('0x29')][_0x6c55('0x83')]=util['format'](_0x6c55('0x84'),_0xc71914[_0x6c55('0x63')]['name']);_0x4ed94c['message'][_0x6c55('0x77')]=_0x302cd6[_0x6c55('0x77')];_0x4ed94c['message']['motionChannel']=_0x302cd6[_0x6c55('0x77')];_0x4ed94c[_0x6c55('0x29')][_0x6c55('0x79')]=_0x6c55('0x34');respondWithRpcPromise(_0x6c55('0x7a'),_0x6c55('0x7a'),{'event':_0x6c55('0x85'),'message':_[_0x6c55('0x4c')](_0x302cd6[_0x6c55('0x29')],JSON['parse'](_0x302cd6[_0x6c55('0x68')][_0x6c55('0x7d')]))},client9002);return _0x302cd6;}return null;})[_0x6c55('0x4e')](respondWithResult(_0x5e29af,null))[_0x6c55('0x2b')](handleError(_0x5e29af,null));};
\ No newline at end of file
+var _0x9e25=['../../config/environment','../../config/license/util','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','json','offset','undefined','limit','set','Content-Range','reject','save','update','destroy','stack','name','map','ChatMessage','rawAttributes','type','key','model','query','keys','intersection','attributes','length','nolimit','order','sort','where','filters','pick','filter','options','count','includeAll','include','findAll','rows','show','params','fields','merge','find','create','body','describe','chat-interactions','accept','chat','format','UserId','user','agent','get','ChatInteraction','ChatInteractionId','interaction','[CHATMESSAGE: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','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','RejectMessage','rejectMessage','event','parse','formData','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','ejs','lodash','crypto','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x9e25,0x15c));var _0x59e2=function(_0x3aa79d,_0x4872bb){_0x3aa79d=_0x3aa79d-0x0;var _0x40e15f=_0x9e25[_0x3aa79d];return _0x40e15f;};'use strict';var emlformat=require(_0x59e2('0x0'));var rimraf=require(_0x59e2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x59e2('0x2'));var rp=require('request-promise');var moment=require(_0x59e2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x59e2('0x4'));var util=require(_0x59e2('0x5'));var path=require('path');var sox=require(_0x59e2('0x6'));var csv=require('to-csv');var ejs=require(_0x59e2('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x59e2('0x8'));var squel=require('squel');var crypto=require(_0x59e2('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x59e2('0xa'));var querystring=require(_0x59e2('0xb'));var Papa=require(_0x59e2('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x59e2('0xd'));var as=require(_0x59e2('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x59e2('0xf'))(_0x59e2('0x10'));var utils=require(_0x59e2('0x11'));var config=require(_0x59e2('0x12'));var licenseUtil=require(_0x59e2('0x13'));var db=require('../../mysqldb')['db'];config[_0x59e2('0x14')]=_[_0x59e2('0x15')](config[_0x59e2('0x14')],{'host':_0x59e2('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x59e2('0x17'))[_0x59e2('0x18')](socket);var jayson=require(_0x59e2('0x19'));var client=jayson[_0x59e2('0x1a')][_0x59e2('0x1b')]({'port':0x232c});var client9002=jayson[_0x59e2('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x338d8d,_0x2558b8,_0x5713bd,_0x6673fc){return new BPromise(function(_0x2e9923,_0x4a8f8c){var _0x498756=_0x6673fc||client;return _0x498756[_0x59e2('0x1c')](_0x338d8d,_0x5713bd)[_0x59e2('0x1d')](function(_0x19309c){logger[_0x59e2('0x1e')](_0x59e2('0x1f'),_0x2558b8,_0x59e2('0x20'));logger[_0x59e2('0x21')](_0x59e2('0x22'),_0x2558b8,_0x59e2('0x20'),JSON[_0x59e2('0x23')](_0x19309c));if(_0x19309c[_0x59e2('0x24')]){if(_0x19309c[_0x59e2('0x24')]['code']===0x1f4){logger[_0x59e2('0x24')](_0x59e2('0x1f'),_0x2558b8,_0x19309c[_0x59e2('0x24')][_0x59e2('0x25')]);return _0x4a8f8c(_0x19309c[_0x59e2('0x24')]['message']);}logger[_0x59e2('0x24')](_0x59e2('0x1f'),_0x2558b8,_0x19309c[_0x59e2('0x24')][_0x59e2('0x25')]);return _0x2e9923(_0x19309c[_0x59e2('0x24')][_0x59e2('0x25')]);}else{logger[_0x59e2('0x1e')](_0x59e2('0x1f'),_0x2558b8,_0x59e2('0x20'));_0x2e9923(_0x19309c['result']['message']);}})[_0x59e2('0x26')](function(_0x4b34e9){logger['error'](_0x59e2('0x1f'),_0x2558b8,_0x4b34e9);_0x4a8f8c(_0x4b34e9);});});}function respondWithStatusCode(_0x2783f9,_0xb488d3){_0xb488d3=_0xb488d3||0xcc;return function(_0x13ae5d){if(_0x13ae5d){return _0x2783f9[_0x59e2('0x27')](_0xb488d3);}return _0x2783f9[_0x59e2('0x28')](_0xb488d3)['end']();};}function respondWithResult(_0x56fc6f,_0x223c71){_0x223c71=_0x223c71||0xc8;return function(_0x4745fa){if(_0x4745fa){return _0x56fc6f[_0x59e2('0x28')](_0x223c71)[_0x59e2('0x29')](_0x4745fa);}};}function respondWithFilteredResult(_0x6ef7d5,_0x18de1c){return function(_0x161889){if(_0x161889){var _0x206829=typeof _0x18de1c[_0x59e2('0x2a')]===_0x59e2('0x2b')&&typeof _0x18de1c[_0x59e2('0x2c')]==='undefined';var _0x90e79b=_0x161889['count'];var _0x26c37c=_0x206829?0x0:_0x18de1c[_0x59e2('0x2a')];var _0x227341=_0x206829?_0x161889['count']:_0x18de1c[_0x59e2('0x2a')]+_0x18de1c['limit'];var _0x4068ba;if(_0x227341>=_0x90e79b){_0x227341=_0x90e79b;_0x4068ba=0xc8;}else{_0x4068ba=0xce;}_0x6ef7d5[_0x59e2('0x28')](_0x4068ba);return _0x6ef7d5[_0x59e2('0x2d')](_0x59e2('0x2e'),_0x26c37c+'-'+_0x227341+'/'+_0x90e79b)[_0x59e2('0x29')](_0x161889);}return null;};}function patchUpdates(_0x4f6bf8){return function(_0x26643f){try{jsonpatch['apply'](_0x26643f,_0x4f6bf8,!![]);}catch(_0x552676){return BPromise[_0x59e2('0x2f')](_0x552676);}return _0x26643f[_0x59e2('0x30')]();};}function saveUpdates(_0x35b6db,_0x587f4e){return function(_0x577b7f){if(_0x577b7f){return _0x577b7f[_0x59e2('0x31')](_0x35b6db)[_0x59e2('0x1d')](function(_0x2d2c74){return _0x2d2c74;});}return null;};}function removeEntity(_0x1cc729,_0x244651){return function(_0x5425b3){if(_0x5425b3){return _0x5425b3[_0x59e2('0x32')]()[_0x59e2('0x1d')](function(){_0x1cc729[_0x59e2('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x449250,_0x2ffc5e){return function(_0x53a17b){if(!_0x53a17b){_0x449250[_0x59e2('0x27')](0x194);}return _0x53a17b;};}function handleError(_0x2b7064,_0x1d593b){_0x1d593b=_0x1d593b||0x1f4;return function(_0x3645e0){logger[_0x59e2('0x24')](_0x3645e0[_0x59e2('0x33')]);if(_0x3645e0[_0x59e2('0x34')]){delete _0x3645e0[_0x59e2('0x34')];}_0x2b7064[_0x59e2('0x28')](_0x1d593b)['send'](_0x3645e0);};}exports['index']=function(_0x8b456,_0x1b5690){var _0x2bf868={},_0x2e0aed={},_0x2d5829={'count':0x0,'rows':[]};var _0x5c6a66=_[_0x59e2('0x35')](db[_0x59e2('0x36')][_0x59e2('0x37')],function(_0x81ca4a){return{'name':_0x81ca4a['fieldName'],'type':_0x81ca4a[_0x59e2('0x38')][_0x59e2('0x39')]};});_0x2e0aed[_0x59e2('0x3a')]=_[_0x59e2('0x35')](_0x5c6a66,_0x59e2('0x34'));_0x2e0aed[_0x59e2('0x3b')]=_[_0x59e2('0x3c')](_0x8b456[_0x59e2('0x3b')]);_0x2e0aed['filters']=_[_0x59e2('0x3d')](_0x2e0aed[_0x59e2('0x3a')],_0x2e0aed[_0x59e2('0x3b')]);_0x2bf868[_0x59e2('0x3e')]=_['intersection'](_0x2e0aed['model'],qs['fields'](_0x8b456[_0x59e2('0x3b')]['fields']));_0x2bf868[_0x59e2('0x3e')]=_0x2bf868[_0x59e2('0x3e')][_0x59e2('0x3f')]?_0x2bf868[_0x59e2('0x3e')]:_0x2e0aed[_0x59e2('0x3a')];if(!_0x8b456['query']['hasOwnProperty'](_0x59e2('0x40'))){_0x2bf868[_0x59e2('0x2c')]=qs[_0x59e2('0x2c')](_0x8b456[_0x59e2('0x3b')][_0x59e2('0x2c')]);_0x2bf868[_0x59e2('0x2a')]=qs[_0x59e2('0x2a')](_0x8b456[_0x59e2('0x3b')][_0x59e2('0x2a')]);}_0x2bf868[_0x59e2('0x41')]=qs[_0x59e2('0x42')](_0x8b456['query'][_0x59e2('0x42')]);_0x2bf868[_0x59e2('0x43')]=qs[_0x59e2('0x44')](_[_0x59e2('0x45')](_0x8b456['query'],_0x2e0aed[_0x59e2('0x44')]),_0x5c6a66);if(_0x8b456[_0x59e2('0x3b')][_0x59e2('0x46')]){_0x2bf868[_0x59e2('0x43')]=_['merge'](_0x2bf868[_0x59e2('0x43')],{'$or':_[_0x59e2('0x35')](_0x5c6a66,function(_0x14a505){if(_0x14a505[_0x59e2('0x38')]!=='VIRTUAL'){var _0x4eacc6={};_0x4eacc6[_0x14a505[_0x59e2('0x34')]]={'$like':'%'+_0x8b456[_0x59e2('0x3b')]['filter']+'%'};return _0x4eacc6;}})});}_0x2bf868=_['merge']({},_0x2bf868,_0x8b456[_0x59e2('0x47')]);var _0x4d303c={'where':_0x2bf868[_0x59e2('0x43')]};return db[_0x59e2('0x36')][_0x59e2('0x48')](_0x4d303c)['then'](function(_0x1e0ebd){_0x2d5829['count']=_0x1e0ebd;if(_0x8b456[_0x59e2('0x3b')][_0x59e2('0x49')]){_0x2bf868[_0x59e2('0x4a')]=[{'all':!![]}];}return db[_0x59e2('0x36')][_0x59e2('0x4b')](_0x2bf868);})[_0x59e2('0x1d')](function(_0x3af978){_0x2d5829[_0x59e2('0x4c')]=_0x3af978;return _0x2d5829;})[_0x59e2('0x1d')](respondWithFilteredResult(_0x1b5690,_0x2bf868))[_0x59e2('0x26')](handleError(_0x1b5690,null));};exports[_0x59e2('0x4d')]=function(_0x7ce3e5,_0x3ba99e){var _0x27d687={'raw':!![],'where':{'id':_0x7ce3e5[_0x59e2('0x4e')]['id']}},_0x5edc96={};_0x5edc96[_0x59e2('0x3a')]=_[_0x59e2('0x3c')](db[_0x59e2('0x36')][_0x59e2('0x37')]);_0x5edc96['query']=_[_0x59e2('0x3c')](_0x7ce3e5[_0x59e2('0x3b')]);_0x5edc96[_0x59e2('0x44')]=_[_0x59e2('0x3d')](_0x5edc96['model'],_0x5edc96[_0x59e2('0x3b')]);_0x27d687[_0x59e2('0x3e')]=_['intersection'](_0x5edc96[_0x59e2('0x3a')],qs[_0x59e2('0x4f')](_0x7ce3e5[_0x59e2('0x3b')][_0x59e2('0x4f')]));_0x27d687[_0x59e2('0x3e')]=_0x27d687[_0x59e2('0x3e')][_0x59e2('0x3f')]?_0x27d687['attributes']:_0x5edc96[_0x59e2('0x3a')];if(_0x7ce3e5[_0x59e2('0x3b')]['includeAll']){_0x27d687[_0x59e2('0x4a')]=[{'all':!![]}];}_0x27d687=_[_0x59e2('0x50')]({},_0x27d687,_0x7ce3e5[_0x59e2('0x47')]);return db[_0x59e2('0x36')][_0x59e2('0x51')](_0x27d687)[_0x59e2('0x1d')](handleEntityNotFound(_0x3ba99e,null))['then'](respondWithResult(_0x3ba99e,null))[_0x59e2('0x26')](handleError(_0x3ba99e,null));};exports[_0x59e2('0x52')]=function(_0x1c7ad8,_0x133db6){return db[_0x59e2('0x36')][_0x59e2('0x52')](_0x1c7ad8[_0x59e2('0x53')],{})[_0x59e2('0x1d')](respondWithResult(_0x133db6,0xc9))[_0x59e2('0x26')](handleError(_0x133db6,null));};exports[_0x59e2('0x31')]=function(_0x3f6b23,_0x25e2ff){if(_0x3f6b23[_0x59e2('0x53')]['id']){delete _0x3f6b23['body']['id'];}return db[_0x59e2('0x36')][_0x59e2('0x51')]({'where':{'id':_0x3f6b23[_0x59e2('0x4e')]['id']}})[_0x59e2('0x1d')](handleEntityNotFound(_0x25e2ff,null))[_0x59e2('0x1d')](saveUpdates(_0x3f6b23[_0x59e2('0x53')],null))['then'](respondWithResult(_0x25e2ff,null))[_0x59e2('0x26')](handleError(_0x25e2ff,null));};exports[_0x59e2('0x32')]=function(_0x19233f,_0x1c65ee){return db['ChatMessage'][_0x59e2('0x51')]({'where':{'id':_0x19233f['params']['id']}})[_0x59e2('0x1d')](handleEntityNotFound(_0x1c65ee,null))[_0x59e2('0x1d')](removeEntity(_0x1c65ee,null))['catch'](handleError(_0x1c65ee,null));};exports[_0x59e2('0x54')]=function(_0x4ed8ee,_0x165100){return db[_0x59e2('0x36')][_0x59e2('0x54')]()[_0x59e2('0x1d')](respondWithResult(_0x165100,null))[_0x59e2('0x26')](handleError(_0x165100,null));};var interaction_log=require('../../config/logger')(_0x59e2('0x55'));exports[_0x59e2('0x56')]=function(_0x7bac43,_0x323b86,_0x4dba0e){var _0x256ec7={'agent':{},'channel':_0x59e2('0x57')};if(_0x7bac43[_0x59e2('0x53')]['id']){delete _0x7bac43[_0x59e2('0x53')]['id'];}_0x7bac43['body']['read']=!![];_0x7bac43[_0x59e2('0x53')]['readAt']=moment()[_0x59e2('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')]=_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')]||_0x7bac43[_0x59e2('0x5a')]['id'];_0x256ec7[_0x59e2('0x5b')]['id']=_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')];return db[_0x59e2('0x36')]['find']({'where':{'id':_0x7bac43[_0x59e2('0x4e')]['id'],'UserId':null}})[_0x59e2('0x1d')](handleEntityNotFound(_0x323b86,null))[_0x59e2('0x1d')](saveUpdates(_0x7bac43[_0x59e2('0x53')],null))['then'](function(_0x5012e1){if(_0x5012e1){_0x256ec7['message']=_0x5012e1[_0x59e2('0x5c')]({'plain':!![]});return db[_0x59e2('0x5d')]['find']({'where':{'id':_0x5012e1[_0x59e2('0x5e')]}});}return null;})['then'](handleEntityNotFound(_0x323b86,null))['then'](function(_0x163f47){if(_0x163f47){return _0x163f47[_0x59e2('0x31')]({'UserId':_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')],'read1stAt':_['isNil'](_0x163f47['read1stAt'])?moment()[_0x59e2('0x58')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x59e2('0x1d')](function(_0x95f421){if(_0x95f421){_0x256ec7[_0x59e2('0x5f')]=_0x95f421['get']({'plain':!![]});interaction_log['info'](_0x59e2('0x60'),_0x7bac43[_0x59e2('0x5a')]['id'],_0x7bac43['user'][_0x59e2('0x34')],_0x7bac43[_0x59e2('0x5a')][_0x59e2('0x61')],_0x256ec7[_0x59e2('0x5f')]['id'],_0x7bac43[_0x59e2('0x53')]?JSON[_0x59e2('0x23')](_0x7bac43[_0x59e2('0x53')]):_0x59e2('0x62'));return respondWithRpcPromise(_0x59e2('0x63'),'acceptMessage',_0x256ec7);}return null;})[_0x59e2('0x1d')](function(_0x3c46bb){var _0x359b10=_0x59e2('0x64')+_0x3c46bb[_0x59e2('0x25')][_0x59e2('0x65')];return db[_0x59e2('0x66')][_0x59e2('0x3b')](_0x359b10,{'type':db[_0x59e2('0x67')][_0x59e2('0x68')][_0x59e2('0x69')],'raw':!![]})[_0x59e2('0x1d')](function(_0x1ade2d){return _0x1ade2d;});})[_0x59e2('0x1d')](function(_0x5014a7){if(_0x5014a7){_0x256ec7['message'][_0x59e2('0x6a')]=_0x5014a7[0x0];if(!_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')])return;return db[_0x59e2('0x6b')][_0x59e2('0x51')]({'where':{'id':_0x7bac43[_0x59e2('0x53')][_0x59e2('0x59')],'role':_0x59e2('0x5b')},'attributes':['id',_0x59e2('0x34'),_0x59e2('0x6c'),_0x59e2('0x6d'),_0x59e2('0x6e')],'raw':!![]});}return null;})[_0x59e2('0x1d')](function(_0x18a09c){if(!_0x18a09c)return null;_0x256ec7[_0x59e2('0x25')][_0x59e2('0x5b')]=_0x18a09c;return _0x256ec7;})[_0x59e2('0x1d')](function(_0x50ec04){if(_0x50ec04){if(_0x7bac43[_0x59e2('0x53')][_0x59e2('0x6f')]){_0x256ec7[_0x59e2('0x25')][_0x59e2('0x70')]=util[_0x59e2('0x58')](_0x59e2('0x71'),_0x7bac43[_0x59e2('0x5a')][_0x59e2('0x34')]);_0x256ec7['message'][_0x59e2('0x72')]=_0x256ec7[_0x59e2('0x72')];_0x256ec7[_0x59e2('0x25')][_0x59e2('0x73')]=_0x256ec7[_0x59e2('0x72')];_0x256ec7[_0x59e2('0x25')]['event']=_0x59e2('0x56');return respondWithRpcPromise('EventManager',_0x59e2('0x74'),{'event':'acceptmessage','message':_[_0x59e2('0x50')](_0x256ec7[_0x59e2('0x25')],JSON['parse'](_0x256ec7[_0x59e2('0x5f')]['formData']))},client9002)[_0x59e2('0x1d')](function(){return _0x256ec7;});}return _0x256ec7;}return null;})[_0x59e2('0x1d')](respondWithResult(_0x323b86,null))[_0x59e2('0x26')](handleError(_0x323b86,null));};var interaction_log=require(_0x59e2('0xf'))('chat-interactions');exports[_0x59e2('0x2f')]=function(_0x44662b,_0x29fa53,_0x1eef4d){var _0x162a65={'agent':{},'channel':_0x59e2('0x57')};if(_0x44662b['body']['id']){delete _0x44662b[_0x59e2('0x53')]['id'];}_0x44662b['body'][_0x59e2('0x59')]=_0x44662b['body'][_0x59e2('0x59')]||_0x44662b[_0x59e2('0x5a')]['id'];_0x162a65[_0x59e2('0x5b')]['id']=_0x44662b['body'][_0x59e2('0x59')];return db[_0x59e2('0x36')][_0x59e2('0x51')]({'where':{'id':_0x44662b[_0x59e2('0x4e')]['id'],'UserId':null}})[_0x59e2('0x1d')](handleEntityNotFound(_0x29fa53,null))['then'](function(_0x39395f){if(_0x39395f){_0x162a65[_0x59e2('0x25')]=_0x39395f['get']({'plain':!![]});return db[_0x59e2('0x5d')]['find']({'where':{'id':_0x39395f[_0x59e2('0x5e')]}});}return null;})[_0x59e2('0x1d')](handleEntityNotFound(_0x29fa53,null))[_0x59e2('0x1d')](function(_0x8c1243){if(_0x8c1243){_0x162a65[_0x59e2('0x5f')]=_0x8c1243[_0x59e2('0x5c')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x44662b[_0x59e2('0x5a')]['id'],_0x44662b['user'][_0x59e2('0x34')],_0x44662b['user']['role'],_0x162a65['interaction']['id'],_0x44662b[_0x59e2('0x53')]?JSON['stringify'](_0x44662b['body']):_0x59e2('0x62'));return respondWithRpcPromise(_0x59e2('0x75'),_0x59e2('0x76'),_0x162a65);}return null;})['then'](function(_0x53aa05){var _0xed2f54=_0x59e2('0x64')+_0x53aa05[_0x59e2('0x25')]['ContactId'];return db['sequelize']['query'](_0xed2f54,{'type':db[_0x59e2('0x67')][_0x59e2('0x68')]['SELECT'],'raw':!![]})[_0x59e2('0x1d')](function(_0x25227c){return _0x25227c;});})[_0x59e2('0x1d')](function(_0xb69821){if(_0xb69821){_0x162a65['message'][_0x59e2('0x6a')]=_0xb69821[0x0];if(!_0x44662b[_0x59e2('0x53')][_0x59e2('0x59')])return;return db[_0x59e2('0x6b')]['find']({'where':{'id':_0x44662b[_0x59e2('0x53')][_0x59e2('0x59')],'role':_0x59e2('0x5b')},'attributes':['id',_0x59e2('0x34'),_0x59e2('0x6c'),'email',_0x59e2('0x6e')],'raw':!![]});}return null;})[_0x59e2('0x1d')](function(_0x361296){if(!_0x361296)return null;_0x162a65['message'][_0x59e2('0x5b')]=_0x361296;return _0x162a65;})[_0x59e2('0x1d')](function(_0x25acf6){if(_0x25acf6){_0x25acf6[_0x59e2('0x25')]['interface']=util[_0x59e2('0x58')]('SIP/%s',_0x44662b['user'][_0x59e2('0x34')]);_0x25acf6['message'][_0x59e2('0x72')]=_0x162a65[_0x59e2('0x72')];_0x25acf6[_0x59e2('0x25')][_0x59e2('0x73')]=_0x162a65[_0x59e2('0x72')];_0x25acf6['message'][_0x59e2('0x77')]=_0x59e2('0x2f');respondWithRpcPromise(_0x59e2('0x74'),_0x59e2('0x74'),{'event':'rejectmessage','message':_[_0x59e2('0x50')](_0x162a65[_0x59e2('0x25')],JSON[_0x59e2('0x78')](_0x162a65[_0x59e2('0x5f')][_0x59e2('0x79')]))},client9002);return _0x162a65;}return null;})[_0x59e2('0x1d')](respondWithResult(_0x29fa53,null))[_0x59e2('0x26')](handleError(_0x29fa53,null));};
\ No newline at end of file
index 3404daa..0005a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f1=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save'];(function(_0xf74153,_0xc21e38){var _0x29fe3d=function(_0x376932){while(--_0x376932){_0xf74153['push'](_0xf74153['shift']());}};_0x29fe3d(++_0xc21e38);}(_0x62f1,0x12d));var _0x162f=function(_0x53cfb9,_0x10bfb6){_0x53cfb9=_0x53cfb9-0x0;var _0x5072c7=_0x62f1[_0x53cfb9];return _0x5072c7;};'use strict';var EventEmitter=require(_0x162f('0x0'));var ChatMessage=require(_0x162f('0x1'))['db'][_0x162f('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x162f('0x3')](0x0);var events={'afterCreate':_0x162f('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4f6227){return function(_0xfa7ce0,_0x26c1af,_0x2d61c2){ChatMessageEvents['emit'](_0x4f6227+':'+_0xfa7ce0['id'],_0xfa7ce0);ChatMessageEvents[_0x162f('0x5')](_0x4f6227,_0xfa7ce0);_0x2d61c2(null);};}for(var e in events){if(events[_0x162f('0x6')](e)){var event=events[e];ChatMessage[_0x162f('0x7')](e,emitEvent(event));}}module[_0x162f('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0x3074=['../../mysqldb','ChatMessage','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x3f92fb,_0x4b8915){var _0x5ecb4e=function(_0x131a8d){while(--_0x131a8d){_0x3f92fb['push'](_0x3f92fb['shift']());}};_0x5ecb4e(++_0x4b8915);}(_0x3074,0x182));var _0x4307=function(_0x3a491a,_0x23fd55){_0x3a491a=_0x3a491a-0x0;var _0x2feee6=_0x3074[_0x3a491a];return _0x2feee6;};'use strict';var EventEmitter=require(_0x4307('0x0'));var ChatMessage=require(_0x4307('0x1'))['db'][_0x4307('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4307('0x3'),'afterDestroy':_0x4307('0x4')};function emitEvent(_0x22b41c){return function(_0x2c42b2,_0x381ea8,_0x902a0a){ChatMessageEvents['emit'](_0x22b41c+':'+_0x2c42b2['id'],_0x2c42b2);ChatMessageEvents[_0x4307('0x5')](_0x22b41c,_0x2c42b2);_0x902a0a(null);};}for(var e in events){if(events[_0x4307('0x6')](e)){var event=events[e];ChatMessage[_0x4307('0x7')](e,emitEvent(event));}}module[_0x4307('0x8')]=ChatMessageEvents;
\ No newline at end of file
index dec9412..a9a8cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb85d=['bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0xb85d,0xb8));var _0xdb85=function(_0x513831,_0x55449e){_0x513831=_0x513831-0x0;var _0x5349e5=_0xb85d[_0x513831];return _0x5349e5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdb85('0x0'))(_0xdb85('0x1'));var moment=require('moment');var BPromise=require(_0xdb85('0x2'));var rp=require(_0xdb85('0x3'));var fs=require('fs');var path=require(_0xdb85('0x4'));var rimraf=require('rimraf');var config=require(_0xdb85('0x5'));var attributes=require(_0xdb85('0x6'));module[_0xdb85('0x7')]=function(_0xcc3fea,_0x2e94eb){return _0xcc3fea[_0xdb85('0x8')](_0xdb85('0x9'),attributes,{'tableName':_0xdb85('0xa'),'paranoid':![],'indexes':[{'name':_0xdb85('0xb'),'fields':[_0xdb85('0xc')],'type':_0xdb85('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15213d,_0x5abda6,_0x5ce093){var _0x200585=_0xcc3fea[_0xdb85('0xe')];var _0x175a3d=_0x15213d[_0xdb85('0xf')]({'plain':!![]});if(_0x175a3d['direction']['toLowerCase']()==='in'||_0x175a3d[_0xdb85('0x10')][_0xdb85('0x11')]()===_0xdb85('0x12')&&!_0x175a3d['secret']&&!_[_0xdb85('0x13')](_0x175a3d[_0xdb85('0x14')])){_0x200585[_0xdb85('0x15')][_0xdb85('0x16')]({'where':{'id':_0x175a3d[_0xdb85('0x17')]}})[_0xdb85('0x18')](function(_0x32a5a2){if(_0x32a5a2){_0x32a5a2[_0xdb85('0x19')]({'lastMsgAt':_0x175a3d[_0xdb85('0x1a')],'lastMsgDirection':_0x175a3d['direction'][_0xdb85('0x11')]()});}})[_0xdb85('0x1b')](function(_0x32bf40){console[_0xdb85('0x1c')](_0x32bf40);});}_0x5ce093();}},'charset':_0xdb85('0x1d'),'collate':_0xdb85('0x1e')});};
\ No newline at end of file
+var _0xe81d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','models','toLowerCase','direction','out','isNil','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4'];(function(_0x2c3370,_0x36b5f5){var _0x209bb5=function(_0x109922){while(--_0x109922){_0x2c3370['push'](_0x2c3370['shift']());}};_0x209bb5(++_0x36b5f5);}(_0xe81d,0xc4));var _0xde81=function(_0x444196,_0x5659c7){_0x444196=_0x444196-0x0;var _0x49e3b1=_0xe81d[_0x444196];return _0x49e3b1;};'use strict';var _=require(_0xde81('0x0'));var util=require(_0xde81('0x1'));var logger=require(_0xde81('0x2'))(_0xde81('0x3'));var moment=require(_0xde81('0x4'));var BPromise=require(_0xde81('0x5'));var rp=require(_0xde81('0x6'));var fs=require('fs');var path=require(_0xde81('0x7'));var rimraf=require(_0xde81('0x8'));var config=require('../../config/environment');var attributes=require('./chatMessage.attributes');module[_0xde81('0x9')]=function(_0x29bb24,_0x4b9051){return _0x29bb24[_0xde81('0xa')](_0xde81('0xb'),attributes,{'tableName':_0xde81('0xc'),'paranoid':![],'indexes':[{'name':_0xde81('0xd'),'fields':[_0xde81('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x11fe4d,_0x585b32,_0x4186b9){var _0x118eff=_0x29bb24[_0xde81('0xf')];var _0x4074ef=_0x11fe4d['get']({'plain':!![]});if(_0x4074ef['direction'][_0xde81('0x10')]()==='in'||_0x4074ef[_0xde81('0x11')][_0xde81('0x10')]()===_0xde81('0x12')&&!_0x4074ef['secret']&&!_[_0xde81('0x13')](_0x4074ef['UserId'])){_0x118eff['ChatInteraction'][_0xde81('0x14')]({'where':{'id':_0x4074ef[_0xde81('0x15')]}})[_0xde81('0x16')](function(_0x4df5ca){if(_0x4df5ca){_0x4df5ca[_0xde81('0x17')]({'lastMsgAt':_0x4074ef[_0xde81('0x18')],'lastMsgDirection':_0x4074ef[_0xde81('0x11')]['toLowerCase']()});}})[_0xde81('0x19')](function(_0x2fe19d){console[_0xde81('0x1a')](_0x2fe19d);});}_0x4186b9();}},'charset':_0xde81('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2c277f2..3f2776d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe567=['redis','defaults','localhost','socket.io-emitter','request','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','catch','CreateChatMessage','ChatMessage','body','options','then','lodash','util','moment','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x34fde4,_0x376389){var _0x45a9b6=function(_0x3078b9){while(--_0x3078b9){_0x34fde4['push'](_0x34fde4['shift']());}};_0x45a9b6(++_0x376389);}(_0xe567,0xa6));var _0x7e56=function(_0x7e37ec,_0x32b1e5){_0x7e37ec=_0x7e37ec-0x0;var _0x41c795=_0xe567[_0x7e37ec];return _0x41c795;};'use strict';var _=require(_0x7e56('0x0'));var util=require(_0x7e56('0x1'));var moment=require(_0x7e56('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e56('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7e56('0x4'))('rpc');var config=require(_0x7e56('0x5'));var jayson=require(_0x7e56('0x6'));var client=jayson[_0x7e56('0x7')]['http']({'port':0x232a});config[_0x7e56('0x8')]=_[_0x7e56('0x9')](config[_0x7e56('0x8')],{'host':_0x7e56('0xa'),'port':0x18eb});var socket=require(_0x7e56('0xb'))(new Redis(config[_0x7e56('0x8')]));require('./chatMessage.socket')['register'](socket);function respondWithRpcPromise(_0x56ce60,_0x531175,_0x4d18fd){return new BPromise(function(_0x3697e1,_0x15334a){return client[_0x7e56('0xc')](_0x56ce60,_0x4d18fd)['then'](function(_0x1c0f58){logger[_0x7e56('0xd')]('ChatMessage,\x20%s,\x20%s',_0x531175,_0x7e56('0xe'));logger[_0x7e56('0xf')](_0x7e56('0x10'),_0x531175,_0x7e56('0xe'),JSON[_0x7e56('0x11')](_0x1c0f58));if(_0x1c0f58[_0x7e56('0x12')]){if(_0x1c0f58[_0x7e56('0x12')][_0x7e56('0x13')]===0x1f4){logger['error'](_0x7e56('0x14'),_0x531175,_0x1c0f58[_0x7e56('0x12')][_0x7e56('0x15')]);return _0x15334a(_0x1c0f58[_0x7e56('0x12')][_0x7e56('0x15')]);}logger[_0x7e56('0x12')](_0x7e56('0x14'),_0x531175,_0x1c0f58[_0x7e56('0x12')][_0x7e56('0x15')]);return _0x3697e1(_0x1c0f58[_0x7e56('0x12')][_0x7e56('0x15')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x531175,_0x7e56('0xe'));_0x3697e1(_0x1c0f58[_0x7e56('0x16')][_0x7e56('0x15')]);}})[_0x7e56('0x17')](function(_0x826520){logger[_0x7e56('0x12')](_0x7e56('0x14'),_0x531175,_0x826520);_0x15334a(_0x826520);});});}exports[_0x7e56('0x18')]=function(_0x4a536b){var _0x409677=this;return new Promise(function(_0x1e8b54,_0x355b1b){return db[_0x7e56('0x19')]['create'](_0x4a536b[_0x7e56('0x1a')],{'raw':_0x4a536b[_0x7e56('0x1b')]?_0x4a536b[_0x7e56('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x7e56('0x1c')](function(_0x2f3138){logger[_0x7e56('0xd')]('CreateChatMessage',_0x4a536b);logger[_0x7e56('0xf')](_0x7e56('0x18'),_0x4a536b,JSON['stringify'](_0x2f3138));_0x1e8b54(_0x2f3138);})[_0x7e56('0x17')](function(_0x1e26ee){logger[_0x7e56('0x12')]('CreateChatMessage',_0x1e26ee[_0x7e56('0x15')],_0x4a536b);_0x355b1b(_0x409677[_0x7e56('0x12')](0x1f4,_0x1e26ee['message']));});});};
\ No newline at end of file
+var _0x95a8=['lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','ChatMessage','create','body','options','then','CreateChatMessage'];(function(_0x2148d3,_0x30176c){var _0x5c1de7=function(_0x137fef){while(--_0x137fef){_0x2148d3['push'](_0x2148d3['shift']());}};_0x5c1de7(++_0x30176c);}(_0x95a8,0x1dc));var _0x895a=function(_0x123f6c,_0x3e34bc){_0x123f6c=_0x123f6c-0x0;var _0x1a35d0=_0x95a8[_0x123f6c];return _0x1a35d0;};'use strict';var _=require(_0x895a('0x0'));var util=require('util');var moment=require(_0x895a('0x1'));var BPromise=require('bluebird');var rs=require(_0x895a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x895a('0x3'))['db'];var utils=require(_0x895a('0x4'));var logger=require(_0x895a('0x5'))(_0x895a('0x6'));var config=require(_0x895a('0x7'));var jayson=require(_0x895a('0x8'));var client=jayson[_0x895a('0x9')][_0x895a('0xa')]({'port':0x232a});config['redis']=_[_0x895a('0xb')](config[_0x895a('0xc')],{'host':_0x895a('0xd'),'port':0x18eb});var socket=require(_0x895a('0xe'))(new Redis(config[_0x895a('0xc')]));require(_0x895a('0xf'))[_0x895a('0x10')](socket);function respondWithRpcPromise(_0x3d049e,_0x2d712b,_0x525965){return new BPromise(function(_0x4e15f3,_0xf82301){return client[_0x895a('0x11')](_0x3d049e,_0x525965)['then'](function(_0x336662){logger[_0x895a('0x12')](_0x895a('0x13'),_0x2d712b,'request\x20sent');logger[_0x895a('0x14')](_0x895a('0x15'),_0x2d712b,'request\x20sent',JSON[_0x895a('0x16')](_0x336662));if(_0x336662['error']){if(_0x336662['error']['code']===0x1f4){logger[_0x895a('0x17')]('ChatMessage,\x20%s,\x20%s',_0x2d712b,_0x336662[_0x895a('0x17')][_0x895a('0x18')]);return _0xf82301(_0x336662['error'][_0x895a('0x18')]);}logger['error'](_0x895a('0x13'),_0x2d712b,_0x336662[_0x895a('0x17')][_0x895a('0x18')]);return _0x4e15f3(_0x336662[_0x895a('0x17')]['message']);}else{logger[_0x895a('0x12')]('ChatMessage,\x20%s,\x20%s',_0x2d712b,_0x895a('0x19'));_0x4e15f3(_0x336662[_0x895a('0x1a')][_0x895a('0x18')]);}})[_0x895a('0x1b')](function(_0x15c196){logger[_0x895a('0x17')]('ChatMessage,\x20%s,\x20%s',_0x2d712b,_0x15c196);_0xf82301(_0x15c196);});});}exports['CreateChatMessage']=function(_0x4198f4){var _0x38726c=this;return new Promise(function(_0x360604,_0x13ce10){return db[_0x895a('0x1c')][_0x895a('0x1d')](_0x4198f4[_0x895a('0x1e')],{'raw':_0x4198f4['options']?_0x4198f4[_0x895a('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x895a('0x20')](function(_0x342d07){logger[_0x895a('0x12')](_0x895a('0x21'),_0x4198f4);logger[_0x895a('0x14')](_0x895a('0x21'),_0x4198f4,JSON['stringify'](_0x342d07));_0x360604(_0x342d07);})[_0x895a('0x1b')](function(_0x20cbfa){logger[_0x895a('0x17')](_0x895a('0x21'),_0x20cbfa[_0x895a('0x18')],_0x4198f4);_0x13ce10(_0x38726c[_0x895a('0x17')](0x1f4,_0x20cbfa['message']));});});};
\ No newline at end of file
index fb35b93..5e960cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e8=['update','removeListener','register','length','chatMessage:','./chatMessage.events'];(function(_0x368053,_0x2d9f9f){var _0x5655f6=function(_0x42174b){while(--_0x42174b){_0x368053['push'](_0x368053['shift']());}};_0x5655f6(++_0x2d9f9f);}(_0x44e8,0xd7));var _0x844e=function(_0x2601a9,_0x1d212f){_0x2601a9=_0x2601a9-0x0;var _0x483503=_0x44e8[_0x2601a9];return _0x483503;};'use strict';var ChatMessageEvents=require(_0x844e('0x0'));var events=['save','remove',_0x844e('0x1')];function createListener(_0x21307e,_0x2afcef){return function(_0x164ecc){_0x2afcef['emit'](_0x21307e,_0x164ecc);};}function removeListener(_0x3a8b3c,_0x167368){return function(){ChatMessageEvents[_0x844e('0x2')](_0x3a8b3c,_0x167368);};}exports[_0x844e('0x3')]=function(_0x5c8f67){for(var _0x2f6539=0x0,_0x238796=events[_0x844e('0x4')];_0x2f6539<_0x238796;_0x2f6539++){var _0x11cbd6=events[_0x2f6539];var _0x571b91=createListener(_0x844e('0x5')+_0x11cbd6,_0x5c8f67);ChatMessageEvents['on'](_0x11cbd6,_0x571b91);}};
\ No newline at end of file
+var _0x46ed=['./chatMessage.events','save','update','emit','removeListener','register','length','chatMessage:'];(function(_0x19d828,_0x2439ce){var _0x25b133=function(_0x5214a8){while(--_0x5214a8){_0x19d828['push'](_0x19d828['shift']());}};_0x25b133(++_0x2439ce);}(_0x46ed,0x168));var _0xd46e=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0x46ed[_0x4ae6ef];return _0x3cbb4e;};'use strict';var ChatMessageEvents=require(_0xd46e('0x0'));var events=[_0xd46e('0x1'),'remove',_0xd46e('0x2')];function createListener(_0x1df30e,_0x1f15e7){return function(_0x537ad5){_0x1f15e7[_0xd46e('0x3')](_0x1df30e,_0x537ad5);};}function removeListener(_0x4518b8,_0x54ef98){return function(){ChatMessageEvents[_0xd46e('0x4')](_0x4518b8,_0x54ef98);};}exports[_0xd46e('0x5')]=function(_0x160bcf){for(var _0x25cf78=0x0,_0x45e680=events[_0xd46e('0x6')];_0x25cf78<_0x45e680;_0x25cf78++){var _0x437ea0=events[_0x25cf78];var _0x144687=createListener(_0xd46e('0x7')+_0x437ea0,_0x160bcf);ChatMessageEvents['on'](_0x437ea0,_0x144687);}};
\ No newline at end of file
index 3cd6040..ba3e6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44e2=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','chat','chatmessage:create','create','put','update','/:id/accept','accept'];(function(_0x242a98,_0x13988e){var _0x580999=function(_0x341927){while(--_0x341927){_0x242a98['push'](_0x242a98['shift']());}};_0x580999(++_0x13988e);}(_0x44e2,0x16f));var _0x244e=function(_0x228547,_0x5cd712){_0x228547=_0x228547-0x0;var _0x1bc3d8=_0x44e2[_0x228547];return _0x1bc3d8;};'use strict';var multer=require(_0x244e('0x0'));var util=require(_0x244e('0x1'));var path=require(_0x244e('0x2'));var timeout=require(_0x244e('0x3'));var express=require(_0x244e('0x4'));var router=express[_0x244e('0x5')]();var fs_extra=require(_0x244e('0x6'));var auth=require(_0x244e('0x7'));var interaction=require(_0x244e('0x8'));var config=require(_0x244e('0x9'));var controller=require(_0x244e('0xa'));router[_0x244e('0xb')]('/',auth[_0x244e('0xc')](),controller['index']);router[_0x244e('0xb')](_0x244e('0xd'),auth['isAuthenticated'](),controller[_0x244e('0xe')]);router['get'](_0x244e('0xf'),auth[_0x244e('0xc')](),controller[_0x244e('0x10')]);router[_0x244e('0x11')]('/',auth[_0x244e('0xc')](),interaction['tracked'](_0x244e('0x12'),_0x244e('0x13')),controller[_0x244e('0x14')]);router[_0x244e('0x15')](_0x244e('0xf'),controller[_0x244e('0x16')]);router[_0x244e('0x15')](_0x244e('0x17'),auth['isAuthenticated'](),controller[_0x244e('0x18')]);router['put']('/:id/reject',auth[_0x244e('0xc')](),controller['reject']);router[_0x244e('0x19')]('/:id',auth[_0x244e('0xc')](),controller[_0x244e('0x1a')]);module[_0x244e('0x1b')]=router;
\ No newline at end of file
+var _0x7186=['get','index','isAuthenticated','describe','show','post','tracked','chat','chatmessage:create','put','update','/:id/accept','/:id/reject','reject','delete','/:id','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller'];(function(_0x2b98ee,_0x29387b){var _0x3de098=function(_0x25e6c5){while(--_0x25e6c5){_0x2b98ee['push'](_0x2b98ee['shift']());}};_0x3de098(++_0x29387b);}(_0x7186,0xa1));var _0x6718=function(_0x4eeb7d,_0x3bdc50){_0x4eeb7d=_0x4eeb7d-0x0;var _0x4f1b1c=_0x7186[_0x4eeb7d];return _0x4f1b1c;};'use strict';var multer=require(_0x6718('0x0'));var util=require('util');var path=require(_0x6718('0x1'));var timeout=require(_0x6718('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6718('0x3'));var interaction=require(_0x6718('0x4'));var config=require(_0x6718('0x5'));var controller=require(_0x6718('0x6'));router[_0x6718('0x7')]('/',auth['isAuthenticated'](),controller[_0x6718('0x8')]);router[_0x6718('0x7')]('/describe',auth[_0x6718('0x9')](),controller[_0x6718('0xa')]);router['get']('/:id',auth[_0x6718('0x9')](),controller[_0x6718('0xb')]);router[_0x6718('0xc')]('/',auth[_0x6718('0x9')](),interaction[_0x6718('0xd')](_0x6718('0xe'),_0x6718('0xf')),controller['create']);router[_0x6718('0x10')]('/:id',controller[_0x6718('0x11')]);router[_0x6718('0x10')](_0x6718('0x12'),auth['isAuthenticated'](),controller['accept']);router[_0x6718('0x10')](_0x6718('0x13'),auth[_0x6718('0x9')](),controller[_0x6718('0x14')]);router[_0x6718('0x15')](_0x6718('0x16'),auth[_0x6718('0x9')](),controller['destroy']);module[_0x6718('0x17')]=router;
\ No newline at end of file
index 401f9b1..49b8a31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['medium','TEXT','exports'];(function(_0x3ba5aa,_0x3fa10e){var _0x43744f=function(_0xe91ccb){while(--_0xe91ccb){_0x3ba5aa['push'](_0x3ba5aa['shift']());}};_0x43744f(++_0x3fa10e);}(_0x5f66,0x1a0));var _0x65f6=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x5f66[_0x4243a3];return _0x1b2a33;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'body':{'type':Sequelize['TEXT'](_0x65f6('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x65f6('0x2')](_0x65f6('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0xb10b=['medium','sequelize','TEXT'];(function(_0x1e38c0,_0x213478){var _0x14415e=function(_0x385329){while(--_0x385329){_0x1e38c0['push'](_0x1e38c0['shift']());}};_0x14415e(++_0x213478);}(_0xb10b,0x12a));var _0xbb10=function(_0x2697d9,_0x26806a){_0x2697d9=_0x2697d9-0x0;var _0x25e6ae=_0xb10b[_0x2697d9];return _0x25e6ae;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'body':{'type':Sequelize[_0xbb10('0x1')](_0xbb10('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xbb10('0x1')]('medium'),'allowNull':![]}};
\ No newline at end of file
index 43e6966..48ccbe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x7a54,0x106));var _0x47a5=function(_0x54e37f,_0x2b5833){_0x54e37f=_0x54e37f-0x0;var _0x19ba03=_0x7a54[_0x54e37f];return _0x19ba03;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x5b8cdc,_0x5373b1){var _0x29a185=function(_0x351044){while(--_0x351044){_0x5b8cdc['push'](_0x5b8cdc['shift']());}};_0x29a185(++_0x5373b1);}(_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
index dd60c37..992f939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabac=['emit','hasOwnProperty','exports','events','../../mysqldb','ChatOfflineMessage'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xabac,0x1dd));var _0xcaba=function(_0x8397c,_0x53925e){_0x8397c=_0x8397c-0x0;var _0x462265=_0xabac[_0x8397c];return _0x462265;};'use strict';var EventEmitter=require(_0xcaba('0x0'));var ChatOfflineMessage=require(_0xcaba('0x1'))['db'][_0xcaba('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2b0c48){return function(_0x4676f3,_0x1c169f,_0x4ee126){ChatOfflineMessageEvents[_0xcaba('0x3')](_0x2b0c48+':'+_0x4676f3['id'],_0x4676f3);ChatOfflineMessageEvents[_0xcaba('0x3')](_0x2b0c48,_0x4676f3);_0x4ee126(null);};}for(var e in events){if(events[_0xcaba('0x4')](e)){var event=events[e];ChatOfflineMessage['hook'](e,emitEvent(event));}}module[_0xcaba('0x5')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xee55=['events','ChatOfflineMessage','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xee55,0x1a0));var _0x5ee5=function(_0x20cc29,_0x30a46d){_0x20cc29=_0x20cc29-0x0;var _0x28d513=_0xee55[_0x20cc29];return _0x28d513;};'use strict';var EventEmitter=require(_0x5ee5('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x5ee5('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5ee5('0x2'),'afterUpdate':'update','afterDestroy':_0x5ee5('0x3')};function emitEvent(_0x2fc0fd){return function(_0x4e5f9b,_0x394334,_0x119392){ChatOfflineMessageEvents[_0x5ee5('0x4')](_0x2fc0fd+':'+_0x4e5f9b['id'],_0x4e5f9b);ChatOfflineMessageEvents[_0x5ee5('0x4')](_0x2fc0fd,_0x4e5f9b);_0x119392(null);};}for(var e in events){if(events[_0x5ee5('0x5')](e)){var event=events[e];ChatOfflineMessage[_0x5ee5('0x6')](e,emitEvent(event));}}module[_0x5ee5('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 9ec6077..7c9036a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6731=['ChatOfflineMessage','./chatOfflineMessage.attributes','exports','define'];(function(_0x102411,_0x2c0b2b){var _0x2c904e=function(_0x47276b){while(--_0x47276b){_0x102411['push'](_0x102411['shift']());}};_0x2c904e(++_0x2c0b2b);}(_0x6731,0x165));var _0x1673=function(_0x400f2a,_0x52a559){_0x400f2a=_0x400f2a-0x0;var _0x3dd8d1=_0x6731[_0x400f2a];return _0x3dd8d1;};'use strict';var attributes=require(_0x1673('0x0'));module[_0x1673('0x1')]=function(_0x4dcdc5){return _0x4dcdc5[_0x1673('0x2')](_0x1673('0x3'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x7731=['chat_offline_messages','./chatOfflineMessage.attributes','define','ChatOfflineMessage'];(function(_0x305a94,_0xa1ba1e){var _0x3b0b5a=function(_0x1bd1a0){while(--_0x1bd1a0){_0x305a94['push'](_0x305a94['shift']());}};_0x3b0b5a(++_0xa1ba1e);}(_0x7731,0x199));var _0x1773=function(_0x5662f2,_0x550cb0){_0x5662f2=_0x5662f2-0x0;var _0x2469f5=_0x7731[_0x5662f2];return _0x2469f5;};'use strict';var attributes=require(_0x1773('0x0'));module['exports']=function(_0x43f726){return _0x43f726[_0x1773('0x1')](_0x1773('0x2'),attributes,{'tableName':_0x1773('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 82d2baa..c7481b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad37=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash'];(function(_0x171bbb,_0x28479b){var _0xcc886f=function(_0x19a62d){while(--_0x19a62d){_0x171bbb['push'](_0x171bbb['shift']());}};_0xcc886f(++_0x28479b);}(_0xad37,0xaf));var _0x7ad3=function(_0x35194b,_0x43ff8b){_0x35194b=_0x35194b-0x0;var _0x3c0eac=_0xad37[_0x35194b];return _0x3c0eac;};'use strict';var _=require(_0x7ad3('0x0'));var util=require(_0x7ad3('0x1'));var moment=require(_0x7ad3('0x2'));var BPromise=require(_0x7ad3('0x3'));var rs=require(_0x7ad3('0x4'));var fs=require('fs');var Redis=require(_0x7ad3('0x5'));var db=require(_0x7ad3('0x6'))['db'];var utils=require(_0x7ad3('0x7'));var logger=require(_0x7ad3('0x8'))(_0x7ad3('0x9'));var config=require('../../config/environment');var jayson=require(_0x7ad3('0xa'));var client=jayson[_0x7ad3('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25f5b3,_0x33cba0,_0x2f5bbd){return new BPromise(function(_0x2f5593,_0x364d37){return client[_0x7ad3('0xc')](_0x25f5b3,_0x2f5bbd)[_0x7ad3('0xd')](function(_0x2b1952){logger[_0x7ad3('0xe')](_0x7ad3('0xf'),_0x33cba0,_0x7ad3('0x10'));logger['debug']('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x33cba0,_0x7ad3('0x10'),JSON[_0x7ad3('0x11')](_0x2b1952));if(_0x2b1952[_0x7ad3('0x12')]){if(_0x2b1952[_0x7ad3('0x12')]['code']===0x1f4){logger[_0x7ad3('0x12')](_0x7ad3('0xf'),_0x33cba0,_0x2b1952[_0x7ad3('0x12')][_0x7ad3('0x13')]);return _0x364d37(_0x2b1952[_0x7ad3('0x12')][_0x7ad3('0x13')]);}logger[_0x7ad3('0x12')](_0x7ad3('0xf'),_0x33cba0,_0x2b1952[_0x7ad3('0x12')][_0x7ad3('0x13')]);return _0x2f5593(_0x2b1952[_0x7ad3('0x12')][_0x7ad3('0x13')]);}else{logger[_0x7ad3('0xe')](_0x7ad3('0xf'),_0x33cba0,'request\x20sent');_0x2f5593(_0x2b1952[_0x7ad3('0x14')]['message']);}})[_0x7ad3('0x15')](function(_0x1f4848){logger['error'](_0x7ad3('0xf'),_0x33cba0,_0x1f4848);_0x364d37(_0x1f4848);});});}
\ No newline at end of file
+var _0xaeff=['code','message','error','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3d6e20,_0x121fa5){var _0x118138=function(_0x476504){while(--_0x476504){_0x3d6e20['push'](_0x3d6e20['shift']());}};_0x118138(++_0x121fa5);}(_0xaeff,0xea));var _0xfaef=function(_0x3f7692,_0x4ab6fa){_0x3f7692=_0x3f7692-0x0;var _0x24dd38=_0xaeff[_0x3f7692];return _0x24dd38;};'use strict';var _=require(_0xfaef('0x0'));var util=require(_0xfaef('0x1'));var moment=require(_0xfaef('0x2'));var BPromise=require(_0xfaef('0x3'));var rs=require(_0xfaef('0x4'));var fs=require('fs');var Redis=require(_0xfaef('0x5'));var db=require(_0xfaef('0x6'))['db'];var utils=require(_0xfaef('0x7'));var logger=require('../../config/logger')(_0xfaef('0x8'));var config=require('../../config/environment');var jayson=require(_0xfaef('0x9'));var client=jayson[_0xfaef('0xa')][_0xfaef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b5dca,_0x20f62a,_0x5626c0){return new BPromise(function(_0x4e76eb,_0x397223){return client[_0xfaef('0xc')](_0x4b5dca,_0x5626c0)[_0xfaef('0xd')](function(_0x1c6086){logger[_0xfaef('0xe')](_0xfaef('0xf'),_0x20f62a,_0xfaef('0x10'));logger['debug'](_0xfaef('0x11'),_0x20f62a,_0xfaef('0x10'),JSON[_0xfaef('0x12')](_0x1c6086));if(_0x1c6086['error']){if(_0x1c6086['error'][_0xfaef('0x13')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x20f62a,_0x1c6086['error'][_0xfaef('0x14')]);return _0x397223(_0x1c6086['error'][_0xfaef('0x14')]);}logger[_0xfaef('0x15')](_0xfaef('0xf'),_0x20f62a,_0x1c6086[_0xfaef('0x15')]['message']);return _0x4e76eb(_0x1c6086['error'][_0xfaef('0x14')]);}else{logger['info'](_0xfaef('0xf'),_0x20f62a,_0xfaef('0x10'));_0x4e76eb(_0x1c6086['result'][_0xfaef('0x14')]);}})[_0xfaef('0x16')](function(_0x5e758d){logger['error'](_0xfaef('0xf'),_0x20f62a,_0x5e758d);_0x397223(_0x5e758d);});});}
\ No newline at end of file
index 46383f2..c04a87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf1=['../../config/environment','./chatOfflineMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service'];(function(_0x484327,_0x17a16d){var _0x3acd49=function(_0x328760){while(--_0x328760){_0x484327['push'](_0x484327['shift']());}};_0x3acd49(++_0x17a16d);}(_0xbbf1,0x92));var _0x1bbf=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xbbf1[_0x13b8f3];return _0x1a6d06;};'use strict';var multer=require(_0x1bbf('0x0'));var util=require(_0x1bbf('0x1'));var path=require(_0x1bbf('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1bbf('0x3')]();var fs_extra=require(_0x1bbf('0x4'));var auth=require(_0x1bbf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1bbf('0x6'));var controller=require(_0x1bbf('0x7'));router['get']('/',auth[_0x1bbf('0x8')](),controller[_0x1bbf('0x9')]);router[_0x1bbf('0xa')](_0x1bbf('0xb'),auth['isAuthenticated'](),controller[_0x1bbf('0xc')]);router[_0x1bbf('0xa')](_0x1bbf('0xd'),auth['isAuthenticated'](),controller[_0x1bbf('0xe')]);router['post']('/',auth[_0x1bbf('0x8')](),controller[_0x1bbf('0xf')]);router['put'](_0x1bbf('0xd'),auth[_0x1bbf('0x8')](),controller['update']);router[_0x1bbf('0x10')]('/:id',auth[_0x1bbf('0x8')](),controller[_0x1bbf('0x11')]);module[_0x1bbf('0x12')]=router;
\ No newline at end of file
+var _0x6c2d=['util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','index','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','multer'];(function(_0x5cc89b,_0x4b942a){var _0x5dc5a0=function(_0x40b02c){while(--_0x40b02c){_0x5cc89b['push'](_0x5cc89b['shift']());}};_0x5dc5a0(++_0x4b942a);}(_0x6c2d,0x19d));var _0xd6c2=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x6c2d[_0x36dfbd];return _0x4ecad9;};'use strict';var multer=require(_0xd6c2('0x0'));var util=require(_0xd6c2('0x1'));var path=require(_0xd6c2('0x2'));var timeout=require('connect-timeout');var express=require(_0xd6c2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd6c2('0x4'));var interaction=require(_0xd6c2('0x5'));var config=require(_0xd6c2('0x6'));var controller=require(_0xd6c2('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xd6c2('0x8')]);router[_0xd6c2('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd6c2('0x9')](_0xd6c2('0xa'),auth[_0xd6c2('0xb')](),controller[_0xd6c2('0xc')]);router[_0xd6c2('0xd')]('/',auth[_0xd6c2('0xb')](),controller[_0xd6c2('0xe')]);router[_0xd6c2('0xf')](_0xd6c2('0xa'),auth[_0xd6c2('0xb')](),controller['update']);router[_0xd6c2('0x10')](_0xd6c2('0xa'),auth[_0xd6c2('0xb')](),controller[_0xd6c2('0x11')]);module['exports']=router;
\ No newline at end of file
index 92f0a44..1b54caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9bb=['STRING','INTEGER','sequelize','exports','ENUM','mouseOver','timeout'];(function(_0x53b5a3,_0xd49378){var _0x43ebf2=function(_0x925812){while(--_0x925812){_0x53b5a3['push'](_0x53b5a3['shift']());}};_0x43ebf2(++_0xd49378);}(_0xa9bb,0x1ec));var _0xba9b=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xa9bb[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require(_0xba9b('0x0'));module[_0xba9b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xba9b('0x2')](_0xba9b('0x3'),_0xba9b('0x4')),'defaultValue':_0xba9b('0x3')},'selector':{'type':Sequelize[_0xba9b('0x5')]},'timeout':{'type':Sequelize[_0xba9b('0x6')]}};
\ No newline at end of file
+var _0x3d3a=['ENUM','mouseOver','timeout','sequelize','exports','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3d3a,0x1b9));var _0xa3d3=function(_0x5dfc1e,_0x164a3f){_0x5dfc1e=_0x5dfc1e-0x0;var _0x3904f6=_0x3d3a[_0x5dfc1e];return _0x3904f6;};'use strict';var Sequelize=require(_0xa3d3('0x0'));module[_0xa3d3('0x1')]={'name':{'type':Sequelize[_0xa3d3('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xa3d3('0x3')](_0xa3d3('0x4'),_0xa3d3('0x5')),'defaultValue':_0xa3d3('0x4')},'selector':{'type':Sequelize[_0xa3d3('0x2')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index b0907c4..c258e95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f5=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','show','params','keys','rawAttributes','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','create','ChatProactiveAction','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x166e96,_0x55191d){var _0x553d73=function(_0x586142){while(--_0x586142){_0x166e96['push'](_0x166e96['shift']());}};_0x553d73(++_0x55191d);}(_0x68f5,0x11a));var _0x568f=function(_0x449c8c,_0x374beb){_0x449c8c=_0x449c8c-0x0;var _0x127e7a=_0x68f5[_0x449c8c];return _0x127e7a;};'use strict';var emlformat=require(_0x568f('0x0'));var rimraf=require(_0x568f('0x1'));var zipdir=require(_0x568f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x568f('0x3'));var moment=require(_0x568f('0x4'));var BPromise=require(_0x568f('0x5'));var Mustache=require(_0x568f('0x6'));var util=require(_0x568f('0x7'));var path=require('path');var sox=require(_0x568f('0x8'));var csv=require(_0x568f('0x9'));var ejs=require(_0x568f('0xa'));var fs=require('fs');var fs_extra=require(_0x568f('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x568f('0xc'));var jsforce=require(_0x568f('0xd'));var deskjs=require(_0x568f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x568f('0xf'));var Papa=require('papaparse');var Redis=require(_0x568f('0x10'));var authService=require(_0x568f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x568f('0x12'));var hardwareService=require(_0x568f('0x13'));var logger=require(_0x568f('0x14'))(_0x568f('0x15'));var utils=require(_0x568f('0x16'));var config=require(_0x568f('0x17'));var licenseUtil=require(_0x568f('0x18'));var db=require(_0x568f('0x19'))['db'];function respondWithStatusCode(_0x200172,_0x4acf24){_0x4acf24=_0x4acf24||0xcc;return function(_0x341cde){if(_0x341cde){return _0x200172[_0x568f('0x1a')](_0x4acf24);}return _0x200172[_0x568f('0x1b')](_0x4acf24)[_0x568f('0x1c')]();};}function respondWithResult(_0x55fc40,_0x87b903){_0x87b903=_0x87b903||0xc8;return function(_0x53c270){if(_0x53c270){return _0x55fc40['status'](_0x87b903)[_0x568f('0x1d')](_0x53c270);}};}function respondWithFilteredResult(_0x15a4e5,_0x47316e){return function(_0x25e488){if(_0x25e488){var _0xcd73a2=typeof _0x47316e[_0x568f('0x1e')]===_0x568f('0x1f')&&typeof _0x47316e[_0x568f('0x20')]===_0x568f('0x1f');var _0x3d9645=_0x25e488[_0x568f('0x21')];var _0x49b64e=_0xcd73a2?0x0:_0x47316e[_0x568f('0x1e')];var _0x5cc7e2=_0xcd73a2?_0x25e488[_0x568f('0x21')]:_0x47316e[_0x568f('0x1e')]+_0x47316e[_0x568f('0x20')];var _0x1f4912;if(_0x5cc7e2>=_0x3d9645){_0x5cc7e2=_0x3d9645;_0x1f4912=0xc8;}else{_0x1f4912=0xce;}_0x15a4e5[_0x568f('0x1b')](_0x1f4912);return _0x15a4e5[_0x568f('0x22')](_0x568f('0x23'),_0x49b64e+'-'+_0x5cc7e2+'/'+_0x3d9645)[_0x568f('0x1d')](_0x25e488);}return null;};}function patchUpdates(_0x1a09a9){return function(_0x22c4e0){try{jsonpatch[_0x568f('0x24')](_0x22c4e0,_0x1a09a9,!![]);}catch(_0x2c65c6){return BPromise[_0x568f('0x25')](_0x2c65c6);}return _0x22c4e0[_0x568f('0x26')]();};}function saveUpdates(_0x3eb76d,_0x2afe66){return function(_0x2c61ea){if(_0x2c61ea){return _0x2c61ea[_0x568f('0x27')](_0x3eb76d)[_0x568f('0x28')](function(_0x4a248e){return _0x4a248e;});}return null;};}function removeEntity(_0xa2225a,_0x4590a8){return function(_0x20daca){if(_0x20daca){return _0x20daca[_0x568f('0x29')]()['then'](function(){_0xa2225a['status'](0xcc)[_0x568f('0x1c')]();});}};}function handleEntityNotFound(_0x45826b,_0x67f06c){return function(_0x6bb377){if(!_0x6bb377){_0x45826b['sendStatus'](0x194);}return _0x6bb377;};}function handleError(_0x51d57f,_0x3de8ce){_0x3de8ce=_0x3de8ce||0x1f4;return function(_0x577ca6){logger['error'](_0x577ca6['stack']);if(_0x577ca6[_0x568f('0x2a')]){delete _0x577ca6['name'];}_0x51d57f[_0x568f('0x1b')](_0x3de8ce)['send'](_0x577ca6);};}exports[_0x568f('0x2b')]=function(_0x2ff19b,_0x182a1f){var _0x52acac={'raw':!![],'where':{'id':_0x2ff19b[_0x568f('0x2c')]['id']}},_0x209db2={};_0x209db2['model']=_[_0x568f('0x2d')](db['ChatProactiveAction'][_0x568f('0x2e')]);_0x209db2['query']=_['keys'](_0x2ff19b[_0x568f('0x2f')]);_0x209db2[_0x568f('0x30')]=_[_0x568f('0x31')](_0x209db2[_0x568f('0x32')],_0x209db2[_0x568f('0x2f')]);_0x52acac[_0x568f('0x33')]=_[_0x568f('0x31')](_0x209db2[_0x568f('0x32')],qs['fields'](_0x2ff19b[_0x568f('0x2f')][_0x568f('0x34')]));_0x52acac[_0x568f('0x33')]=_0x52acac[_0x568f('0x33')]['length']?_0x52acac[_0x568f('0x33')]:_0x209db2[_0x568f('0x32')];if(_0x2ff19b[_0x568f('0x2f')][_0x568f('0x35')]){_0x52acac[_0x568f('0x36')]=[{'all':!![]}];}_0x52acac=_[_0x568f('0x37')]({},_0x52acac,_0x2ff19b[_0x568f('0x38')]);return db['ChatProactiveAction'][_0x568f('0x39')](_0x52acac)[_0x568f('0x28')](handleEntityNotFound(_0x182a1f,null))[_0x568f('0x28')](respondWithResult(_0x182a1f,null))[_0x568f('0x3a')](handleError(_0x182a1f,null));};exports[_0x568f('0x3b')]=function(_0x4b6608,_0x57c011){return db[_0x568f('0x3c')][_0x568f('0x3b')](_0x4b6608[_0x568f('0x3d')],{})[_0x568f('0x28')](respondWithResult(_0x57c011,0xc9))[_0x568f('0x3a')](handleError(_0x57c011,null));};exports['update']=function(_0x2f78f3,_0x3ca904){if(_0x2f78f3[_0x568f('0x3d')]['id']){delete _0x2f78f3[_0x568f('0x3d')]['id'];}return db[_0x568f('0x3c')][_0x568f('0x39')]({'where':{'id':_0x2f78f3[_0x568f('0x2c')]['id']}})[_0x568f('0x28')](handleEntityNotFound(_0x3ca904,null))[_0x568f('0x28')](saveUpdates(_0x2f78f3[_0x568f('0x3d')],null))[_0x568f('0x28')](respondWithResult(_0x3ca904,null))[_0x568f('0x3a')](handleError(_0x3ca904,null));};exports[_0x568f('0x29')]=function(_0x3e7212,_0x3a2772){return db['ChatProactiveAction'][_0x568f('0x39')]({'where':{'id':_0x3e7212['params']['id']}})['then'](handleEntityNotFound(_0x3a2772,null))[_0x568f('0x28')](removeEntity(_0x3a2772,null))['catch'](handleError(_0x3a2772,null));};
\ No newline at end of file
+var _0x7579=['desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','name','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','merge','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto'];(function(_0x52c4e9,_0x5412d0){var _0x252a03=function(_0x57857c){while(--_0x57857c){_0x52c4e9['push'](_0x52c4e9['shift']());}};_0x252a03(++_0x5412d0);}(_0x7579,0x1e2));var _0x9757=function(_0x3660b3,_0x52ad09){_0x3660b3=_0x3660b3-0x0;var _0x497363=_0x7579[_0x3660b3];return _0x497363;};'use strict';var emlformat=require(_0x9757('0x0'));var rimraf=require(_0x9757('0x1'));var zipdir=require(_0x9757('0x2'));var jsonpatch=require(_0x9757('0x3'));var rp=require(_0x9757('0x4'));var moment=require(_0x9757('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9757('0x6'));var util=require(_0x9757('0x7'));var path=require(_0x9757('0x8'));var sox=require(_0x9757('0x9'));var csv=require('to-csv');var ejs=require(_0x9757('0xa'));var fs=require('fs');var fs_extra=require(_0x9757('0xb'));var _=require(_0x9757('0xc'));var squel=require('squel');var crypto=require(_0x9757('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9757('0xe'));var toCsv=require(_0x9757('0xf'));var querystring=require(_0x9757('0x10'));var Papa=require('papaparse');var Redis=require(_0x9757('0x11'));var authService=require(_0x9757('0x12'));var qs=require(_0x9757('0x13'));var as=require(_0x9757('0x14'));var hardwareService=require(_0x9757('0x15'));var logger=require(_0x9757('0x16'))(_0x9757('0x17'));var utils=require(_0x9757('0x18'));var config=require(_0x9757('0x19'));var licenseUtil=require(_0x9757('0x1a'));var db=require(_0x9757('0x1b'))['db'];function respondWithStatusCode(_0x5c19c9,_0x2f2200){_0x2f2200=_0x2f2200||0xcc;return function(_0x1d32ee){if(_0x1d32ee){return _0x5c19c9[_0x9757('0x1c')](_0x2f2200);}return _0x5c19c9['status'](_0x2f2200)[_0x9757('0x1d')]();};}function respondWithResult(_0x39fa5c,_0x413d55){_0x413d55=_0x413d55||0xc8;return function(_0x14f67c){if(_0x14f67c){return _0x39fa5c[_0x9757('0x1e')](_0x413d55)[_0x9757('0x1f')](_0x14f67c);}};}function respondWithFilteredResult(_0x105e56,_0x4b994d){return function(_0x1fd6f6){if(_0x1fd6f6){var _0x55ded7=typeof _0x4b994d[_0x9757('0x20')]===_0x9757('0x21')&&typeof _0x4b994d[_0x9757('0x22')]===_0x9757('0x21');var _0x3f6be9=_0x1fd6f6[_0x9757('0x23')];var _0x57e309=_0x55ded7?0x0:_0x4b994d[_0x9757('0x20')];var _0x2aa360=_0x55ded7?_0x1fd6f6[_0x9757('0x23')]:_0x4b994d[_0x9757('0x20')]+_0x4b994d[_0x9757('0x22')];var _0xd2306b;if(_0x2aa360>=_0x3f6be9){_0x2aa360=_0x3f6be9;_0xd2306b=0xc8;}else{_0xd2306b=0xce;}_0x105e56[_0x9757('0x1e')](_0xd2306b);return _0x105e56['set'](_0x9757('0x24'),_0x57e309+'-'+_0x2aa360+'/'+_0x3f6be9)['json'](_0x1fd6f6);}return null;};}function patchUpdates(_0x517504){return function(_0x37c889){try{jsonpatch[_0x9757('0x25')](_0x37c889,_0x517504,!![]);}catch(_0x1443a9){return BPromise[_0x9757('0x26')](_0x1443a9);}return _0x37c889['save']();};}function saveUpdates(_0x4ef000,_0x53d21c){return function(_0x73dac4){if(_0x73dac4){return _0x73dac4[_0x9757('0x27')](_0x4ef000)[_0x9757('0x28')](function(_0x21435e){return _0x21435e;});}return null;};}function removeEntity(_0x5dc2fa,_0x11f5ac){return function(_0x160108){if(_0x160108){return _0x160108['destroy']()[_0x9757('0x28')](function(){_0x5dc2fa[_0x9757('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b6915,_0x1a7036){return function(_0x172e8c){if(!_0x172e8c){_0x2b6915[_0x9757('0x1c')](0x194);}return _0x172e8c;};}function handleError(_0x115e33,_0x19588f){_0x19588f=_0x19588f||0x1f4;return function(_0x4e6b86){logger[_0x9757('0x29')](_0x4e6b86['stack']);if(_0x4e6b86[_0x9757('0x2a')]){delete _0x4e6b86[_0x9757('0x2a')];}_0x115e33['status'](_0x19588f)['send'](_0x4e6b86);};}exports[_0x9757('0x2b')]=function(_0x21a4bd,_0xc81976){var _0x3aae8b={'raw':!![],'where':{'id':_0x21a4bd[_0x9757('0x2c')]['id']}},_0x4ebdb6={};_0x4ebdb6[_0x9757('0x2d')]=_[_0x9757('0x2e')](db[_0x9757('0x2f')][_0x9757('0x30')]);_0x4ebdb6[_0x9757('0x31')]=_['keys'](_0x21a4bd[_0x9757('0x31')]);_0x4ebdb6[_0x9757('0x32')]=_[_0x9757('0x33')](_0x4ebdb6[_0x9757('0x2d')],_0x4ebdb6[_0x9757('0x31')]);_0x3aae8b[_0x9757('0x34')]=_[_0x9757('0x33')](_0x4ebdb6['model'],qs[_0x9757('0x35')](_0x21a4bd[_0x9757('0x31')][_0x9757('0x35')]));_0x3aae8b[_0x9757('0x34')]=_0x3aae8b[_0x9757('0x34')][_0x9757('0x36')]?_0x3aae8b[_0x9757('0x34')]:_0x4ebdb6[_0x9757('0x2d')];if(_0x21a4bd['query'][_0x9757('0x37')]){_0x3aae8b['include']=[{'all':!![]}];}_0x3aae8b=_[_0x9757('0x38')]({},_0x3aae8b,_0x21a4bd[_0x9757('0x39')]);return db['ChatProactiveAction'][_0x9757('0x3a')](_0x3aae8b)[_0x9757('0x28')](handleEntityNotFound(_0xc81976,null))[_0x9757('0x28')](respondWithResult(_0xc81976,null))[_0x9757('0x3b')](handleError(_0xc81976,null));};exports[_0x9757('0x3c')]=function(_0x2f2688,_0x3c94b2){return db[_0x9757('0x2f')][_0x9757('0x3c')](_0x2f2688[_0x9757('0x3d')],{})['then'](respondWithResult(_0x3c94b2,0xc9))[_0x9757('0x3b')](handleError(_0x3c94b2,null));};exports[_0x9757('0x27')]=function(_0x457d6c,_0x4f2ea4){if(_0x457d6c[_0x9757('0x3d')]['id']){delete _0x457d6c[_0x9757('0x3d')]['id'];}return db[_0x9757('0x2f')][_0x9757('0x3a')]({'where':{'id':_0x457d6c[_0x9757('0x2c')]['id']}})[_0x9757('0x28')](handleEntityNotFound(_0x4f2ea4,null))[_0x9757('0x28')](saveUpdates(_0x457d6c[_0x9757('0x3d')],null))[_0x9757('0x28')](respondWithResult(_0x4f2ea4,null))['catch'](handleError(_0x4f2ea4,null));};exports['destroy']=function(_0x2cf830,_0x2d0a6e){return db[_0x9757('0x2f')][_0x9757('0x3a')]({'where':{'id':_0x2cf830['params']['id']}})[_0x9757('0x28')](handleEntityNotFound(_0x2d0a6e,null))['then'](removeEntity(_0x2d0a6e,null))[_0x9757('0x3b')](handleError(_0x2d0a6e,null));};
\ No newline at end of file
index 0362811..a1c6601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8e8=['define','ChatProactiveAction','chat_proactive_actions','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x5e0914,_0x481afe){var _0x5eebff=function(_0x34c6f3){while(--_0x34c6f3){_0x5e0914['push'](_0x5e0914['shift']());}};_0x5eebff(++_0x481afe);}(_0xa8e8,0xf3));var _0x8a8e=function(_0x2e0661,_0x22ad87){_0x2e0661=_0x2e0661-0x0;var _0x2185d5=_0xa8e8[_0x2e0661];return _0x2185d5;};'use strict';var _=require(_0x8a8e('0x0'));var util=require(_0x8a8e('0x1'));var logger=require('../../config/logger')(_0x8a8e('0x2'));var moment=require('moment');var BPromise=require(_0x8a8e('0x3'));var rp=require(_0x8a8e('0x4'));var fs=require('fs');var path=require(_0x8a8e('0x5'));var rimraf=require(_0x8a8e('0x6'));var config=require(_0x8a8e('0x7'));var attributes=require('./chatProactiveAction.attributes');module[_0x8a8e('0x8')]=function(_0x3eab36,_0x2781f5){return _0x3eab36[_0x8a8e('0x9')](_0x8a8e('0xa'),attributes,{'tableName':_0x8a8e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaeba=['bluebird','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash','util','api','moment'];(function(_0x5dc8b3,_0x56d6e8){var _0xf1289b=function(_0x1770b6){while(--_0x1770b6){_0x5dc8b3['push'](_0x5dc8b3['shift']());}};_0xf1289b(++_0x56d6e8);}(_0xaeba,0x170));var _0xaaeb=function(_0x34f95e,_0x3e6f32){_0x34f95e=_0x34f95e-0x0;var _0x2264e3=_0xaeba[_0x34f95e];return _0x2264e3;};'use strict';var _=require(_0xaaeb('0x0'));var util=require(_0xaaeb('0x1'));var logger=require('../../config/logger')(_0xaaeb('0x2'));var moment=require(_0xaaeb('0x3'));var BPromise=require(_0xaaeb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaaeb('0x5'));var rimraf=require(_0xaaeb('0x6'));var config=require(_0xaaeb('0x7'));var attributes=require(_0xaaeb('0x8'));module[_0xaaeb('0x9')]=function(_0x214ca2,_0xcbe11c){return _0x214ca2[_0xaaeb('0xa')](_0xaaeb('0xb'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d1c8a0..4171dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x477d=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x1612fd,_0x4bd04e){var _0xf44721=function(_0x564371){while(--_0x564371){_0x1612fd['push'](_0x1612fd['shift']());}};_0xf44721(++_0x4bd04e);}(_0x477d,0x146));var _0xd477=function(_0x4f155d,_0x1b757e){_0x4f155d=_0x4f155d-0x0;var _0x137989=_0x477d[_0x4f155d];return _0x137989;};'use strict';var _=require(_0xd477('0x0'));var util=require(_0xd477('0x1'));var moment=require(_0xd477('0x2'));var BPromise=require(_0xd477('0x3'));var rs=require(_0xd477('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd477('0x5'));var logger=require(_0xd477('0x6'))(_0xd477('0x7'));var config=require(_0xd477('0x8'));var jayson=require(_0xd477('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x35e011,_0x446085,_0x2c0b3b){return new BPromise(function(_0x183002,_0x5e2b63){return client[_0xd477('0xa')](_0x35e011,_0x2c0b3b)['then'](function(_0x519949){logger[_0xd477('0xb')](_0xd477('0xc'),_0x446085,_0xd477('0xd'));logger[_0xd477('0xe')](_0xd477('0xf'),_0x446085,_0xd477('0xd'),JSON[_0xd477('0x10')](_0x519949));if(_0x519949[_0xd477('0x11')]){if(_0x519949['error'][_0xd477('0x12')]===0x1f4){logger[_0xd477('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x446085,_0x519949['error'][_0xd477('0x13')]);return _0x5e2b63(_0x519949[_0xd477('0x11')][_0xd477('0x13')]);}logger[_0xd477('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x446085,_0x519949[_0xd477('0x11')]['message']);return _0x183002(_0x519949['error']['message']);}else{logger[_0xd477('0xb')](_0xd477('0xc'),_0x446085,_0xd477('0xd'));_0x183002(_0x519949[_0xd477('0x14')][_0xd477('0x13')]);}})[_0xd477('0x15')](function(_0x70f749){logger[_0xd477('0x11')](_0xd477('0xc'),_0x446085,_0x70f749);_0x5e2b63(_0x70f749);});});}
\ No newline at end of file
+var _0xb7ec=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash'];(function(_0xe4e303,_0x8f9657){var _0x39021e=function(_0x134b8a){while(--_0x134b8a){_0xe4e303['push'](_0xe4e303['shift']());}};_0x39021e(++_0x8f9657);}(_0xb7ec,0xbc));var _0xcb7e=function(_0x18b85e,_0x1a4727){_0x18b85e=_0x18b85e-0x0;var _0xdb0129=_0xb7ec[_0x18b85e];return _0xdb0129;};'use strict';var _=require(_0xcb7e('0x0'));var util=require(_0xcb7e('0x1'));var moment=require(_0xcb7e('0x2'));var BPromise=require(_0xcb7e('0x3'));var rs=require(_0xcb7e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcb7e('0x5'))['db'];var utils=require(_0xcb7e('0x6'));var logger=require(_0xcb7e('0x7'))(_0xcb7e('0x8'));var config=require('../../config/environment');var jayson=require(_0xcb7e('0x9'));var client=jayson[_0xcb7e('0xa')][_0xcb7e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x446bbf,_0x949e08,_0x51f096){return new BPromise(function(_0x14d042,_0x9cac9){return client[_0xcb7e('0xc')](_0x446bbf,_0x51f096)['then'](function(_0xbec63c){logger[_0xcb7e('0xd')](_0xcb7e('0xe'),_0x949e08,'request\x20sent');logger['debug'](_0xcb7e('0xf'),_0x949e08,_0xcb7e('0x10'),JSON['stringify'](_0xbec63c));if(_0xbec63c[_0xcb7e('0x11')]){if(_0xbec63c[_0xcb7e('0x11')][_0xcb7e('0x12')]===0x1f4){logger[_0xcb7e('0x11')](_0xcb7e('0xe'),_0x949e08,_0xbec63c[_0xcb7e('0x11')]['message']);return _0x9cac9(_0xbec63c[_0xcb7e('0x11')][_0xcb7e('0x13')]);}logger['error'](_0xcb7e('0xe'),_0x949e08,_0xbec63c[_0xcb7e('0x11')][_0xcb7e('0x13')]);return _0x14d042(_0xbec63c['error'][_0xcb7e('0x13')]);}else{logger[_0xcb7e('0xd')](_0xcb7e('0xe'),_0x949e08,_0xcb7e('0x10'));_0x14d042(_0xbec63c['result']['message']);}})[_0xcb7e('0x14')](function(_0x433cd6){logger[_0xcb7e('0x11')](_0xcb7e('0xe'),_0x949e08,_0x433cd6);_0x9cac9(_0x433cd6);});});}
\ No newline at end of file
index eca44a5..d8ef343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['show','post','update','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated'];(function(_0x419b29,_0x4628a1){var _0x4c24ce=function(_0x3cead3){while(--_0x3cead3){_0x419b29['push'](_0x419b29['shift']());}};_0x4c24ce(++_0x4628a1);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc4aa[_0x4d613c];return _0x301fe3;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xb')]);router[_0xac4a('0xc')]('/',auth[_0xac4a('0xa')](),controller['create']);router['put'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xd')]);router['delete'](_0xac4a('0x9'),auth[_0xac4a('0xa')](),controller[_0xac4a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xb4c7=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated','show','create'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x29b0c4,_0x54ffdd){_0x29b0c4=_0x29b0c4-0x0;var _0x470785=_0xb4c7[_0x29b0c4];return _0x470785;};'use strict';var multer=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var path=require(_0x7b4c('0x2'));var timeout=require(_0x7b4c('0x3'));var express=require(_0x7b4c('0x4'));var router=express['Router']();var fs_extra=require(_0x7b4c('0x5'));var auth=require(_0x7b4c('0x6'));var interaction=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var controller=require(_0x7b4c('0x9'));router['get'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xc')]);router['post']('/',auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xd')]);router['put'](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0xe')]);router[_0x7b4c('0xf')](_0x7b4c('0xa'),auth[_0x7b4c('0xb')](),controller[_0x7b4c('0x10')]);module[_0x7b4c('0x11')]=router;
\ No newline at end of file
index e2b28f2..9c7cae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8895=['ENUM','rrmemory','roundrobin','sequelize','exports','name','INTEGER'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x8895,0x106));var _0x5889=function(_0x2c33f4,_0xc62ade){_0x2c33f4=_0x2c33f4-0x0;var _0xd63930=_0x8895[_0x2c33f4];return _0xd63930;};'use strict';var Sequelize=require(_0x5889('0x0'));module[_0x5889('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5889('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5889('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5889('0x4')](_0x5889('0x5'),'beepall',_0x5889('0x6'))}};
\ No newline at end of file
+var _0x27b5=['sequelize','STRING','name','INTEGER','beepall'];(function(_0x2442dd,_0x269ded){var _0x9d4594=function(_0x4964ff){while(--_0x4964ff){_0x2442dd['push'](_0x2442dd['shift']());}};_0x9d4594(++_0x269ded);}(_0x27b5,0x131));var _0x527b=function(_0x4b6507,_0x5518b5){_0x4b6507=_0x4b6507-0x0;var _0x2001ec=_0x27b5[_0x4b6507];return _0x2001ec;};'use strict';var Sequelize=require(_0x527b('0x0'));module['exports']={'name':{'type':Sequelize[_0x527b('0x1')],'unique':_0x527b('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x527b('0x1')]},'timeout':{'type':Sequelize[_0x527b('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x527b('0x4'),'roundrobin')}};
\ No newline at end of file
index 94e8f79..2973953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5700=['request-promise','moment','mustache','util','path','sox','ejs','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','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','sendStatus','status','json','offset','undefined','count','limit','reject','save','update','then','destroy','get','ChatQueues','UserProfileResource','end','name','send','index','ChatQueue','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','nolimit','UserChatQueue','User','agent','chatPause','updatedAt','format','%s/%s','SIP','getTeams','findOne','ids','Agents','online','voicePause','interface','flatMap','sequelize','addTeams','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','Team','field','tq.TeamId','from','team_has_chat_queues','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','every','TeamId','all','union','compact','value','transaction','isEmpty','removeAgents','addAgents','omit','spread','isArray','userChatQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch'];(function(_0x3fe393,_0x234a3a){var _0x534d14=function(_0x277fab){while(--_0x277fab){_0x3fe393['push'](_0x3fe393['shift']());}};_0x534d14(++_0x234a3a);}(_0x5700,0x12d));var _0x0570=function(_0xa4252d,_0xa404b1){_0xa4252d=_0xa4252d-0x0;var _0xcf443c=_0x5700[_0xa4252d];return _0xcf443c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0570('0x0'));var zipdir=require(_0x0570('0x1'));var jsonpatch=require(_0x0570('0x2'));var rp=require(_0x0570('0x3'));var moment=require(_0x0570('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0570('0x5'));var util=require(_0x0570('0x6'));var path=require(_0x0570('0x7'));var sox=require(_0x0570('0x8'));var csv=require('to-csv');var ejs=require(_0x0570('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0570('0xa'));var crypto=require(_0x0570('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0570('0xc'));var toCsv=require('to-csv');var querystring=require(_0x0570('0xd'));var Papa=require(_0x0570('0xe'));var Redis=require(_0x0570('0xf'));var authService=require(_0x0570('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x0570('0x11'));var hardwareService=require(_0x0570('0x12'));var logger=require(_0x0570('0x13'))('api');var utils=require(_0x0570('0x14'));var config=require(_0x0570('0x15'));var licenseUtil=require(_0x0570('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x0570('0x17')](config[_0x0570('0x18')],{'host':_0x0570('0x19'),'port':0x18eb});var socket=require(_0x0570('0x1a'))(new Redis(config[_0x0570('0x18')]));require(_0x0570('0x1b'))[_0x0570('0x1c')](socket);var jayson=require(_0x0570('0x1d'));var client=jayson[_0x0570('0x1e')][_0x0570('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x55cd48,_0x43efe1,_0x462474,_0x2d39b3){return new BPromise(function(_0x3b48dd,_0x471a4d){var _0x4941c7=_0x2d39b3||client;return _0x4941c7[_0x0570('0x20')](_0x55cd48,_0x462474)['then'](function(_0x4d8869){logger[_0x0570('0x21')](_0x0570('0x22'),_0x43efe1,_0x0570('0x23'));logger[_0x0570('0x24')](_0x0570('0x25'),_0x43efe1,_0x0570('0x23'),JSON[_0x0570('0x26')](_0x4d8869));if(_0x4d8869['error']){if(_0x4d8869['error']['code']===0x1f4){logger[_0x0570('0x27')](_0x0570('0x22'),_0x43efe1,_0x4d8869[_0x0570('0x27')]['message']);return _0x471a4d(_0x4d8869['error']['message']);}logger[_0x0570('0x27')](_0x0570('0x22'),_0x43efe1,_0x4d8869['error'][_0x0570('0x28')]);return _0x3b48dd(_0x4d8869[_0x0570('0x27')][_0x0570('0x28')]);}else{logger[_0x0570('0x21')]('ChatQueue,\x20%s,\x20%s',_0x43efe1,_0x0570('0x23'));_0x3b48dd(_0x4d8869['result'][_0x0570('0x28')]);}})['catch'](function(_0x3e3ae5){logger[_0x0570('0x27')](_0x0570('0x22'),_0x43efe1,_0x3e3ae5);_0x471a4d(_0x3e3ae5);});});}function respondWithStatusCode(_0x4af6d4,_0x3732d4){_0x3732d4=_0x3732d4||0xcc;return function(_0x5a362f){if(_0x5a362f){return _0x4af6d4[_0x0570('0x29')](_0x3732d4);}return _0x4af6d4[_0x0570('0x2a')](_0x3732d4)['end']();};}function respondWithResult(_0x5933b0,_0x2e1d93){_0x2e1d93=_0x2e1d93||0xc8;return function(_0x18304b){if(_0x18304b){return _0x5933b0[_0x0570('0x2a')](_0x2e1d93)[_0x0570('0x2b')](_0x18304b);}};}function respondWithFilteredResult(_0x5a11f9,_0x276fd6){return function(_0x5e5da7){if(_0x5e5da7){var _0x4be2c6=typeof _0x276fd6[_0x0570('0x2c')]==='undefined'&&typeof _0x276fd6['limit']===_0x0570('0x2d');var _0x3ba942=_0x5e5da7['count'];var _0x584ccf=_0x4be2c6?0x0:_0x276fd6[_0x0570('0x2c')];var _0x2f7a5c=_0x4be2c6?_0x5e5da7[_0x0570('0x2e')]:_0x276fd6[_0x0570('0x2c')]+_0x276fd6[_0x0570('0x2f')];var _0x105625;if(_0x2f7a5c>=_0x3ba942){_0x2f7a5c=_0x3ba942;_0x105625=0xc8;}else{_0x105625=0xce;}_0x5a11f9[_0x0570('0x2a')](_0x105625);return _0x5a11f9['set']('Content-Range',_0x584ccf+'-'+_0x2f7a5c+'/'+_0x3ba942)[_0x0570('0x2b')](_0x5e5da7);}return null;};}function patchUpdates(_0x179164){return function(_0x1cb7cb){try{jsonpatch['apply'](_0x1cb7cb,_0x179164,!![]);}catch(_0x1fb132){return BPromise[_0x0570('0x30')](_0x1fb132);}return _0x1cb7cb[_0x0570('0x31')]();};}function saveUpdates(_0xfe8ab5,_0x5cd391){return function(_0x158a63){if(_0x158a63){return _0x158a63[_0x0570('0x32')](_0xfe8ab5)[_0x0570('0x33')](function(_0x1ab76a){return _0x1ab76a;});}return null;};}function removeEntity(_0x104448,_0x9fb497){return function(_0x40f8a8){if(_0x40f8a8){return _0x40f8a8[_0x0570('0x34')]()[_0x0570('0x33')](function(){var _0x1881a0=_0x40f8a8[_0x0570('0x35')]({'plain':!![]});var _0x103aef=_0x0570('0x36');return db[_0x0570('0x37')][_0x0570('0x34')]({'where':{'type':_0x103aef,'resourceId':_0x1881a0['id']}})[_0x0570('0x33')](function(){return _0x40f8a8;});})['then'](function(){_0x104448[_0x0570('0x2a')](0xcc)[_0x0570('0x38')]();});}};}function handleEntityNotFound(_0x553120,_0x49a107){return function(_0x5d3dc2){if(!_0x5d3dc2){_0x553120[_0x0570('0x29')](0x194);}return _0x5d3dc2;};}function handleError(_0x440924,_0x2ea838){_0x2ea838=_0x2ea838||0x1f4;return function(_0x1d5bf2){logger['error'](_0x1d5bf2['stack']);if(_0x1d5bf2['name']){delete _0x1d5bf2[_0x0570('0x39')];}_0x440924[_0x0570('0x2a')](_0x2ea838)[_0x0570('0x3a')](_0x1d5bf2);};}exports[_0x0570('0x3b')]=function(_0x4aaa11,_0x532d62){var _0x501038={},_0x4b7b9b={},_0x86fcc2={'count':0x0,'rows':[]};var _0x4b1f10=_['map'](db[_0x0570('0x3c')][_0x0570('0x3d')],function(_0x24b4c9){return{'name':_0x24b4c9[_0x0570('0x3e')],'type':_0x24b4c9['type'][_0x0570('0x3f')]};});_0x4b7b9b[_0x0570('0x40')]=_[_0x0570('0x41')](_0x4b1f10,_0x0570('0x39'));_0x4b7b9b[_0x0570('0x42')]=_[_0x0570('0x43')](_0x4aaa11[_0x0570('0x42')]);_0x4b7b9b[_0x0570('0x44')]=_[_0x0570('0x45')](_0x4b7b9b[_0x0570('0x40')],_0x4b7b9b['query']);_0x501038[_0x0570('0x46')]=_[_0x0570('0x45')](_0x4b7b9b[_0x0570('0x40')],qs['fields'](_0x4aaa11['query'][_0x0570('0x47')]));_0x501038[_0x0570('0x46')]=_0x501038[_0x0570('0x46')]['length']?_0x501038[_0x0570('0x46')]:_0x4b7b9b[_0x0570('0x40')];if(!_0x4aaa11['query'][_0x0570('0x48')]('nolimit')){_0x501038[_0x0570('0x2f')]=qs[_0x0570('0x2f')](_0x4aaa11[_0x0570('0x42')][_0x0570('0x2f')]);_0x501038[_0x0570('0x2c')]=qs[_0x0570('0x2c')](_0x4aaa11[_0x0570('0x42')][_0x0570('0x2c')]);}_0x501038[_0x0570('0x49')]=qs[_0x0570('0x4a')](_0x4aaa11[_0x0570('0x42')][_0x0570('0x4a')]);_0x501038[_0x0570('0x4b')]=qs[_0x0570('0x44')](_[_0x0570('0x4c')](_0x4aaa11[_0x0570('0x42')],_0x4b7b9b[_0x0570('0x44')]),_0x4b1f10);if(_0x4aaa11[_0x0570('0x42')][_0x0570('0x4d')]){_0x501038[_0x0570('0x4b')]=_[_0x0570('0x4e')](_0x501038[_0x0570('0x4b')],{'$or':_['map'](_0x4b1f10,function(_0x136a8d){if(_0x136a8d[_0x0570('0x4f')]!==_0x0570('0x50')){var _0xd6c7a0={};_0xd6c7a0[_0x136a8d['name']]={'$like':'%'+_0x4aaa11[_0x0570('0x42')][_0x0570('0x4d')]+'%'};return _0xd6c7a0;}})});}_0x501038=_[_0x0570('0x4e')]({},_0x501038,_0x4aaa11[_0x0570('0x51')]);var _0x2cf8ea={'where':_0x501038[_0x0570('0x4b')]};return db[_0x0570('0x3c')][_0x0570('0x2e')](_0x2cf8ea)[_0x0570('0x33')](function(_0x365af8){_0x86fcc2[_0x0570('0x2e')]=_0x365af8;if(_0x4aaa11['query'][_0x0570('0x52')]){_0x501038[_0x0570('0x53')]=[{'all':!![]}];}return db[_0x0570('0x3c')][_0x0570('0x54')](_0x501038);})['then'](function(_0x2e2be1){_0x86fcc2[_0x0570('0x55')]=_0x2e2be1;return _0x86fcc2;})[_0x0570('0x33')](respondWithFilteredResult(_0x532d62,_0x501038))[_0x0570('0x56')](handleError(_0x532d62,null));};exports[_0x0570('0x57')]=function(_0x1eac8e,_0x564593){var _0x19c459={'raw':!![],'where':{'id':_0x1eac8e[_0x0570('0x58')]['id']}},_0x328cce={};_0x328cce[_0x0570('0x40')]=_['keys'](db['ChatQueue'][_0x0570('0x3d')]);_0x328cce[_0x0570('0x42')]=_[_0x0570('0x43')](_0x1eac8e[_0x0570('0x42')]);_0x328cce['filters']=_[_0x0570('0x45')](_0x328cce[_0x0570('0x40')],_0x328cce[_0x0570('0x42')]);_0x19c459['attributes']=_['intersection'](_0x328cce[_0x0570('0x40')],qs[_0x0570('0x47')](_0x1eac8e[_0x0570('0x42')][_0x0570('0x47')]));_0x19c459['attributes']=_0x19c459[_0x0570('0x46')][_0x0570('0x59')]?_0x19c459['attributes']:_0x328cce['model'];if(_0x1eac8e['query'][_0x0570('0x52')]){_0x19c459[_0x0570('0x53')]=[{'all':!![]}];}_0x19c459=_[_0x0570('0x4e')]({},_0x19c459,_0x1eac8e['options']);return db['ChatQueue'][_0x0570('0x5a')](_0x19c459)['then'](handleEntityNotFound(_0x564593,null))['then'](respondWithResult(_0x564593,null))[_0x0570('0x56')](handleError(_0x564593,null));};exports['create']=function(_0xad1ac,_0x1b97df){return db[_0x0570('0x3c')]['create'](_0xad1ac[_0x0570('0x5b')],{})[_0x0570('0x33')](function(_0xa18cff){var _0x579860=_0xad1ac[_0x0570('0x5c')][_0x0570('0x35')]({'plain':!![]});if(!_0x579860)throw new Error(_0x0570('0x5d'));if(_0x579860[_0x0570('0x5e')]==='user'){var _0x5ddd77=_0xa18cff['get']({'plain':!![]});var _0x354237=_0x0570('0x36');return db['UserProfileSection'][_0x0570('0x5a')]({'where':{'name':_0x354237,'userProfileId':_0x579860[_0x0570('0x5f')]},'raw':!![]})[_0x0570('0x33')](function(_0x1d4bfe){if(_0x1d4bfe&&_0x1d4bfe[_0x0570('0x60')]===0x0){return db[_0x0570('0x37')][_0x0570('0x61')]({'name':_0x5ddd77[_0x0570('0x39')],'resourceId':_0x5ddd77['id'],'type':_0x1d4bfe['name'],'sectionId':_0x1d4bfe['id']},{})[_0x0570('0x33')](function(){return _0xa18cff;});}else{return _0xa18cff;}})['catch'](function(_0x58b358){logger[_0x0570('0x27')](_0x0570('0x62'),_0x58b358);throw _0x58b358;});}return _0xa18cff;})[_0x0570('0x33')](respondWithResult(_0x1b97df,0xc9))[_0x0570('0x56')](handleError(_0x1b97df,null));};exports[_0x0570('0x32')]=function(_0x8c32e1,_0x1052fa){if(_0x8c32e1[_0x0570('0x5b')]['id']){delete _0x8c32e1[_0x0570('0x5b')]['id'];}return db[_0x0570('0x3c')][_0x0570('0x5a')]({'where':{'id':_0x8c32e1[_0x0570('0x58')]['id']}})[_0x0570('0x33')](handleEntityNotFound(_0x1052fa,null))[_0x0570('0x33')](saveUpdates(_0x8c32e1['body'],null))[_0x0570('0x33')](respondWithResult(_0x1052fa,null))[_0x0570('0x56')](handleError(_0x1052fa,null));};exports[_0x0570('0x34')]=function(_0x19562f,_0x4cac7b){return db[_0x0570('0x3c')]['find']({'where':{'id':_0x19562f['params']['id']}})[_0x0570('0x33')](handleEntityNotFound(_0x4cac7b,null))[_0x0570('0x33')](removeEntity(_0x4cac7b,null))[_0x0570('0x56')](handleError(_0x4cac7b,null));};exports[_0x0570('0x63')]=function(_0x463793,_0x3cd4a9){return db[_0x0570('0x3c')]['describe']()[_0x0570('0x33')](respondWithResult(_0x3cd4a9,null))[_0x0570('0x56')](handleError(_0x3cd4a9,null));};exports[_0x0570('0x64')]=function(_0x41a6a9,_0xe5efdd,_0x21a47c){var _0x1e7bee={'raw':!![],'where':{}},_0x150e53={},_0x37464f;return db[_0x0570('0x3c')]['findOne']({'where':{'id':_0x41a6a9[_0x0570('0x58')]['id']}})['then'](handleEntityNotFound(_0xe5efdd,null))[_0x0570('0x33')](function(_0x22f728){if(_0x22f728){_0x37464f=_0x22f728[_0x0570('0x35')]({'plain':!![]});_0x150e53[_0x0570('0x40')]=_[_0x0570('0x43')](db['UserChatQueue'][_0x0570('0x3d')]);_0x150e53[_0x0570('0x42')]=_[_0x0570('0x43')](_0x41a6a9[_0x0570('0x42')]);_0x150e53[_0x0570('0x44')]=_[_0x0570('0x45')](_0x150e53[_0x0570('0x40')],_0x150e53[_0x0570('0x42')]);_0x1e7bee['attributes']=_['intersection'](_0x150e53[_0x0570('0x40')],qs['fields'](_0x41a6a9[_0x0570('0x42')][_0x0570('0x47')]));_0x1e7bee['attributes']=_0x1e7bee[_0x0570('0x46')][_0x0570('0x59')]?_0x1e7bee['attributes']:_0x150e53[_0x0570('0x40')];if(!_0x41a6a9['query']['hasOwnProperty'](_0x0570('0x65'))){_0x1e7bee[_0x0570('0x2f')]=qs[_0x0570('0x2f')](_0x41a6a9[_0x0570('0x42')][_0x0570('0x2f')]);_0x1e7bee[_0x0570('0x2c')]=qs[_0x0570('0x2c')](_0x41a6a9[_0x0570('0x42')][_0x0570('0x2c')]);}_0x1e7bee[_0x0570('0x49')]=qs['sort'](_0x41a6a9['query'][_0x0570('0x4a')]);_0x1e7bee[_0x0570('0x4b')]=qs['filters'](_[_0x0570('0x4c')](_0x41a6a9[_0x0570('0x42')],_0x150e53['filters']));_0x1e7bee[_0x0570('0x4b')]['ChatQueueId']=_0x22f728['id'];if(_0x41a6a9['query'][_0x0570('0x4d')]){_0x1e7bee['where']=_['merge'](_0x1e7bee[_0x0570('0x4b')],{'$or':_['map'](_0x1e7bee[_0x0570('0x46')],function(_0xa2ecc1){var _0x1653bf={};_0x1653bf[_0xa2ecc1]={'$like':'%'+_0x41a6a9[_0x0570('0x42')][_0x0570('0x4d')]+'%'};return _0x1653bf;})});}_0x1e7bee=_['merge']({},_0x1e7bee,_0x41a6a9[_0x0570('0x51')]);return db[_0x0570('0x66')]['findAll'](_0x1e7bee);}})[_0x0570('0x33')](function(_0x4d4d12){if(_0x4d4d12){return db[_0x0570('0x67')]['findAndCountAll']({'where':{'id':_[_0x0570('0x41')](_0x4d4d12,'UserId'),'role':_0x0570('0x68')},'attributes':['id',_0x0570('0x39'),_0x0570('0x69'),_0x0570('0x6a'),'createdAt']});}})[_0x0570('0x33')](function(_0x97fcca){if(_0x97fcca){return{'count':_0x97fcca[_0x0570('0x2e')],'rows':_[_0x0570('0x41')](_0x97fcca[_0x0570('0x55')],function(_0x2ab715){return{'membername':_0x2ab715[_0x0570('0x39')],'UserId':_0x2ab715['id'],'queue_name':_0x37464f[_0x0570('0x39')],'ChatQueueId':_0x37464f['id'],'interface':util[_0x0570('0x6b')](_0x0570('0x6c'),_0x0570('0x6d'),_0x2ab715[_0x0570('0x39')]),'penalty':0x0,'paused':_0x2ab715['chatPause'],'createdAt':_0x2ab715['createdAt'],'updatedAt':_0x2ab715['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xe5efdd,_0x1e7bee))[_0x0570('0x56')](handleError(_0xe5efdd,null));};exports[_0x0570('0x6e')]=function(_0x3d4ea0,_0x3f668c,_0x221bd1){var _0x455b7e={};var _0x184af6={};var _0x3f46f8;var _0xd2f1cf;return db[_0x0570('0x3c')][_0x0570('0x6f')]({'where':{'id':_0x3d4ea0[_0x0570('0x58')]['id']}})[_0x0570('0x33')](handleEntityNotFound(_0x3f668c,null))['then'](function(_0x58e73c){if(_0x58e73c){_0x3f46f8=_0x58e73c;_0x184af6[_0x0570('0x40')]=_['keys'](db['Team'][_0x0570('0x3d')]);_0x184af6['query']=_[_0x0570('0x43')](_0x3d4ea0[_0x0570('0x42')]);_0x184af6[_0x0570('0x44')]=_[_0x0570('0x45')](_0x184af6[_0x0570('0x40')],_0x184af6['query']);_0x455b7e['attributes']=_[_0x0570('0x45')](_0x184af6['model'],qs[_0x0570('0x47')](_0x3d4ea0[_0x0570('0x42')]['fields']));_0x455b7e['attributes']=_0x455b7e[_0x0570('0x46')][_0x0570('0x59')]?_0x455b7e[_0x0570('0x46')]:_0x184af6[_0x0570('0x40')];_0x455b7e[_0x0570('0x49')]=qs[_0x0570('0x4a')](_0x3d4ea0[_0x0570('0x42')][_0x0570('0x4a')]);_0x455b7e[_0x0570('0x4b')]=qs[_0x0570('0x44')](_[_0x0570('0x4c')](_0x3d4ea0[_0x0570('0x42')],_0x184af6[_0x0570('0x44')]));if(_0x3d4ea0[_0x0570('0x42')][_0x0570('0x4d')]){_0x455b7e[_0x0570('0x4b')]=_[_0x0570('0x4e')](_0x455b7e[_0x0570('0x4b')],{'$or':_['map'](_0x455b7e[_0x0570('0x46')],function(_0x396fd5){var _0x377ed2={};_0x377ed2[_0x396fd5]={'$like':'%'+_0x3d4ea0[_0x0570('0x42')]['filter']+'%'};return _0x377ed2;})});}_0x455b7e=_[_0x0570('0x4e')]({},_0x455b7e,_0x3d4ea0[_0x0570('0x51')]);return _0x3f46f8[_0x0570('0x6e')](_0x455b7e);}})[_0x0570('0x33')](function(_0x327304){if(_0x327304){_0xd2f1cf=_0x327304[_0x0570('0x59')];if(!_0x3d4ea0[_0x0570('0x42')][_0x0570('0x48')](_0x0570('0x65'))){_0x455b7e['limit']=qs[_0x0570('0x2f')](_0x3d4ea0[_0x0570('0x42')][_0x0570('0x2f')]);_0x455b7e[_0x0570('0x2c')]=qs[_0x0570('0x2c')](_0x3d4ea0[_0x0570('0x42')][_0x0570('0x2c')]);}return _0x3f46f8[_0x0570('0x6e')](_0x455b7e);}})[_0x0570('0x33')](function(_0x3072bf){if(_0x3072bf){return _0x3072bf?{'count':_0xd2f1cf,'rows':_0x3072bf}:null;}})[_0x0570('0x33')](respondWithResult(_0x3f668c,null))[_0x0570('0x56')](handleError(_0x3f668c,null));};exports['addTeams']=function(_0x4ac714,_0xea1d11,_0x454e21){var _0x1b64f7=_0x4ac714['body'][_0x0570('0x70')];return db['Team'][_0x0570('0x54')]({'where':{'id':_0x1b64f7},'attributes':['id'],'include':[{'model':db[_0x0570('0x67')],'as':_0x0570('0x71'),'attributes':['id',_0x0570('0x39'),_0x0570('0x72'),_0x0570('0x73'),_0x0570('0x74')],'raw':!![]}]})[_0x0570('0x33')](function(_0x3ce818){if(_0x3ce818){var _0x19eac4=_[_0x0570('0x75')](_0x3ce818,function(_0x22225c){var _0x399bda=_0x22225c[_0x0570('0x35')]({'plain':!![]});return _0x399bda[_0x0570('0x71')];});return db[_0x0570('0x3c')][_0x0570('0x5a')]({'where':{'id':_0x4ac714[_0x0570('0x58')]['id']}})[_0x0570('0x33')](function(_0x5b107f){return db[_0x0570('0x76')]['transaction'](function(_0x3aa0d5){return _0x5b107f[_0x0570('0x77')](_0x1b64f7,{'transaction':_0x3aa0d5})[_0x0570('0x33')](function(){return BPromise[_0x0570('0x78')](_0x19eac4,function(_0x46c7d6){return db['UserChatQueue'][_0x0570('0x79')]({'where':{'UserId':_0x46c7d6['id'],'ChatQueueId':_0x4ac714[_0x0570('0x58')]['id']},'transaction':_0x3aa0d5});});})[_0x0570('0x33')](function(){_0x19eac4[_0x0570('0x7a')](function(_0x57c53f){socket[_0x0570('0x7b')](_0x0570('0x7c'),{'UserId':_0x57c53f['id'],'ChatQueueId':_0x5b107f['id']});});});});});}})[_0x0570('0x33')](respondWithStatusCode(_0xea1d11,null))[_0x0570('0x56')](handleError(_0xea1d11,null));};exports[_0x0570('0x7d')]=function(_0x11b438,_0x4e5c9e,_0x144350){return db[_0x0570('0x7e')][_0x0570('0x54')]({'where':{'id':_0x11b438['query'][_0x0570('0x70')]},'attributes':['id'],'include':[{'model':db[_0x0570('0x67')],'as':_0x0570('0x71'),'attributes':['id'],'raw':!![]}]})[_0x0570('0x33')](handleEntityNotFound(_0x4e5c9e,null))[_0x0570('0x33')](function(_0x3a0ec7){var _0x58b2c2=_[_0x0570('0x41')](_0x3a0ec7,'id');var _0x3f1dc8=[];var _0x39cbed=[];var _0x226e87=squel['select']();_0x226e87[_0x0570('0x7f')](_0x0570('0x80'))[_0x0570('0x81')](_0x0570('0x82'),'tq')['join']('user_has_teams','ut',_0x0570('0x83'))['where'](_0x0570('0x84'),_0x11b438[_0x0570('0x58')]['id']);for(var _0x2e00af=0x0;_0x2e00af<_0x3a0ec7['length'];_0x2e00af+=0x1){let _0x12aeb8=_0x3a0ec7[_0x2e00af];for(var _0x3f6d6d=0x0;_0x3f6d6d<_0x12aeb8['Agents']['length'];_0x3f6d6d+=0x1){let _0x2a9e07=_0x12aeb8['Agents'][_0x3f6d6d];var _0x56763c=_0x226e87[_0x0570('0x85')]();_0x56763c[_0x0570('0x4b')](_0x0570('0x86'),_0x2a9e07['id']);_0x39cbed['push'](db[_0x0570('0x76')][_0x0570('0x42')](_0x56763c['toString'](),{'type':db[_0x0570('0x76')][_0x0570('0x87')][_0x0570('0x88')]})['then'](function(_0x556dd4){if(_0x556dd4[_0x0570('0x59')]===0x1){return _0x2a9e07['id'];}else{var _0x4a9503=_[_0x0570('0x89')](_[_0x0570('0x41')](_0x556dd4,_0x0570('0x8a')),function(_0xff91e0){return _['includes'](_0x58b2c2,_0xff91e0);});if(_0x4a9503){return _0x2a9e07['id'];}}}));}}return BPromise[_0x0570('0x8b')](_0x39cbed)[_0x0570('0x33')](function(_0x2a93ad){_0x3f1dc8=_(_0x3f1dc8)[_0x0570('0x8c')](_0x2a93ad)[_0x0570('0x8d')]()[_0x0570('0x8e')]();return db[_0x0570('0x3c')][_0x0570('0x5a')]({'where':{'id':_0x11b438[_0x0570('0x58')]['id']}})[_0x0570('0x33')](function(_0xc0a9fd){return db['sequelize'][_0x0570('0x8f')](function(_0x1e8488){return _0xc0a9fd[_0x0570('0x7d')](_0x11b438['query'][_0x0570('0x70')],{'transaction':_0x1e8488})['then'](function(){if(!_[_0x0570('0x90')](_0x3f1dc8)){return _0xc0a9fd[_0x0570('0x91')](_0x3f1dc8,{'transaction':_0x1e8488});}})[_0x0570('0x33')](function(){_0x3f1dc8['forEach'](function(_0x2e1fad){socket['emit']('userChatQueue:remove',{'UserId':_0x2e1fad,'ChatQueueId':_0xc0a9fd['id']});});});});});});})[_0x0570('0x33')](respondWithStatusCode(_0x4e5c9e,null))[_0x0570('0x56')](handleError(_0x4e5c9e,null));};exports[_0x0570('0x92')]=function(_0x50d6bc,_0x156b82,_0x2f008d){return db[_0x0570('0x3c')][_0x0570('0x5a')]({'where':{'id':_0x50d6bc[_0x0570('0x58')]['id']}})[_0x0570('0x33')](handleEntityNotFound(_0x156b82,null))[_0x0570('0x33')](function(_0x338dd7){if(_0x338dd7){return _0x338dd7[_0x0570('0x92')](_0x50d6bc['body'][_0x0570('0x70')],_[_0x0570('0x93')](_0x50d6bc[_0x0570('0x5b')],[_0x0570('0x70'),'id'])||{})[_0x0570('0x94')](function(_0x1823ff){for(var _0x4cd008=0x0;_0x4cd008<_0x50d6bc['body']['ids'][_0x0570('0x59')];_0x4cd008+=0x1){socket['emit'](_0x0570('0x7c'),{'UserId':Number(_0x50d6bc[_0x0570('0x5b')][_0x0570('0x70')][_0x4cd008]),'ChatQueueId':Number(_0x50d6bc[_0x0570('0x58')]['id'])});}return _0x1823ff;});}})['then'](respondWithResult(_0x156b82,null))['catch'](handleError(_0x156b82,null));};exports[_0x0570('0x91')]=function(_0x420860,_0x1a88e9,_0x4ac70a){return db[_0x0570('0x3c')][_0x0570('0x5a')]({'where':{'id':_0x420860[_0x0570('0x58')]['id']}})['then'](handleEntityNotFound(_0x1a88e9,null))[_0x0570('0x33')](function(_0x3f3744){if(_0x3f3744){return _0x3f3744['removeAgents'](_0x420860[_0x0570('0x42')][_0x0570('0x70')])['then'](function(){if(_[_0x0570('0x95')](_0x420860[_0x0570('0x42')][_0x0570('0x70')])){for(var _0x4dacc5=0x0;_0x4dacc5<_0x420860['query'][_0x0570('0x70')][_0x0570('0x59')];_0x4dacc5+=0x1){socket[_0x0570('0x7b')](_0x0570('0x96'),{'UserId':Number(_0x420860[_0x0570('0x42')][_0x0570('0x70')][_0x4dacc5]),'ChatQueueId':Number(_0x420860[_0x0570('0x58')]['id'])});}}else{socket[_0x0570('0x7b')](_0x0570('0x96'),{'UserId':Number(_0x420860[_0x0570('0x42')][_0x0570('0x70')]),'ChatQueueId':Number(_0x420860['params']['id'])});}});}})[_0x0570('0x33')](respondWithStatusCode(_0x1a88e9,null))[_0x0570('0x56')](handleError(_0x1a88e9,null));};exports[_0x0570('0x97')]=function(_0x6ec60d,_0x4a74fe,_0x546710){var _0x18b902={};var _0x5f075a={};var _0x410ec3;var _0x3bfefa;return db['ChatQueue'][_0x0570('0x6f')]({'where':{'id':_0x6ec60d['params']['id']}})[_0x0570('0x33')](handleEntityNotFound(_0x4a74fe,null))['then'](function(_0x4734a8){if(_0x4734a8){_0x410ec3=_0x4734a8;_0x5f075a[_0x0570('0x40')]=_[_0x0570('0x43')](db[_0x0570('0x67')][_0x0570('0x3d')]);_0x5f075a[_0x0570('0x42')]=_[_0x0570('0x43')](_0x6ec60d[_0x0570('0x42')]);_0x5f075a['filters']=_['intersection'](_0x5f075a[_0x0570('0x40')],_0x5f075a['query']);_0x18b902['attributes']=_['intersection'](_0x5f075a[_0x0570('0x40')],qs[_0x0570('0x47')](_0x6ec60d[_0x0570('0x42')][_0x0570('0x47')]));_0x18b902[_0x0570('0x46')]=_0x18b902['attributes'][_0x0570('0x59')]?_0x18b902[_0x0570('0x46')]:_0x5f075a[_0x0570('0x40')];_0x18b902[_0x0570('0x49')]=qs[_0x0570('0x4a')](_0x6ec60d['query']['sort']);_0x18b902[_0x0570('0x4b')]=qs[_0x0570('0x44')](_['pick'](_0x6ec60d[_0x0570('0x42')],_0x5f075a[_0x0570('0x44')]));if(_0x6ec60d['query'][_0x0570('0x4d')]){_0x18b902[_0x0570('0x4b')]=_[_0x0570('0x4e')](_0x18b902[_0x0570('0x4b')],{'$or':_['map'](_0x18b902['attributes'],function(_0x46bcac){var _0x244b47={};_0x244b47[_0x46bcac]={'$like':'%'+_0x6ec60d[_0x0570('0x42')][_0x0570('0x4d')]+'%'};return _0x244b47;})});}_0x18b902=_[_0x0570('0x4e')]({},_0x18b902,_0x6ec60d[_0x0570('0x51')]);return _0x410ec3[_0x0570('0x97')](_0x18b902);}})[_0x0570('0x33')](function(_0x20ed8a){if(_0x20ed8a){_0x3bfefa=_0x20ed8a[_0x0570('0x59')];if(!_0x6ec60d[_0x0570('0x42')][_0x0570('0x48')](_0x0570('0x65'))){_0x18b902[_0x0570('0x2f')]=qs[_0x0570('0x2f')](_0x6ec60d[_0x0570('0x42')][_0x0570('0x2f')]);_0x18b902['offset']=qs['offset'](_0x6ec60d['query'][_0x0570('0x2c')]);}return _0x410ec3[_0x0570('0x97')](_0x18b902);}})['then'](function(_0x1d97bf){if(_0x1d97bf){return _0x1d97bf?{'count':_0x3bfefa,'rows':_0x1d97bf}:null;}})[_0x0570('0x33')](respondWithResult(_0x4a74fe,null))[_0x0570('0x56')](handleError(_0x4a74fe,null));};
\ No newline at end of file
+var _0x09ca=['rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','request','then','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','ChatQueue,\x20%s,\x20%s','error','message','info','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','get','ChatQueues','end','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','ChatQueue','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','keys','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','updatedAt','rows','%s/%s','SIP','chatPause','createdAt','getTeams','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','userChatQueue:save','removeTeams','Team','select','field','tq.TeamId','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','SELECT','TeamId','includes','union','compact','transaction','forEach','emit','userChatQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format'];(function(_0xef49d1,_0x5a9893){var _0x3b5eac=function(_0x5d5305){while(--_0x5d5305){_0xef49d1['push'](_0xef49d1['shift']());}};_0x3b5eac(++_0x5a9893);}(_0x09ca,0x131));var _0xa09c=function(_0x30fb3d,_0x246528){_0x30fb3d=_0x30fb3d-0x0;var _0x4e3adf=_0x09ca[_0x30fb3d];return _0x4e3adf;};'use strict';var emlformat=require(_0xa09c('0x0'));var rimraf=require(_0xa09c('0x1'));var zipdir=require(_0xa09c('0x2'));var jsonpatch=require(_0xa09c('0x3'));var rp=require(_0xa09c('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa09c('0x5'));var util=require(_0xa09c('0x6'));var path=require(_0xa09c('0x7'));var sox=require('sox');var csv=require(_0xa09c('0x8'));var ejs=require(_0xa09c('0x9'));var fs=require('fs');var fs_extra=require(_0xa09c('0xa'));var _=require(_0xa09c('0xb'));var squel=require(_0xa09c('0xc'));var crypto=require(_0xa09c('0xd'));var jsforce=require(_0xa09c('0xe'));var deskjs=require(_0xa09c('0xf'));var toCsv=require('to-csv');var querystring=require(_0xa09c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa09c('0x11'));var authService=require(_0xa09c('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa09c('0x13'));var hardwareService=require(_0xa09c('0x14'));var logger=require(_0xa09c('0x15'))(_0xa09c('0x16'));var utils=require('../../config/utils');var config=require(_0xa09c('0x17'));var licenseUtil=require(_0xa09c('0x18'));var db=require(_0xa09c('0x19'))['db'];config['redis']=_[_0xa09c('0x1a')](config[_0xa09c('0x1b')],{'host':_0xa09c('0x1c'),'port':0x18eb});var socket=require(_0xa09c('0x1d'))(new Redis(config[_0xa09c('0x1b')]));require(_0xa09c('0x1e'))[_0xa09c('0x1f')](socket);var jayson=require(_0xa09c('0x20'));var client=jayson[_0xa09c('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31a572,_0x4a2f04,_0x51d447,_0x3775b8){return new BPromise(function(_0x45d18a,_0x426dba){var _0x58e186=_0x3775b8||client;return _0x58e186[_0xa09c('0x22')](_0x31a572,_0x51d447)[_0xa09c('0x23')](function(_0x424299){logger['info']('ChatQueue,\x20%s,\x20%s',_0x4a2f04,_0xa09c('0x24'));logger['debug'](_0xa09c('0x25'),_0x4a2f04,'request\x20sent',JSON[_0xa09c('0x26')](_0x424299));if(_0x424299['error']){if(_0x424299['error']['code']===0x1f4){logger['error'](_0xa09c('0x27'),_0x4a2f04,_0x424299[_0xa09c('0x28')][_0xa09c('0x29')]);return _0x426dba(_0x424299['error'][_0xa09c('0x29')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x4a2f04,_0x424299['error']['message']);return _0x45d18a(_0x424299[_0xa09c('0x28')][_0xa09c('0x29')]);}else{logger[_0xa09c('0x2a')](_0xa09c('0x27'),_0x4a2f04,_0xa09c('0x24'));_0x45d18a(_0x424299['result'][_0xa09c('0x29')]);}})[_0xa09c('0x2b')](function(_0x25b26e){logger['error']('ChatQueue,\x20%s,\x20%s',_0x4a2f04,_0x25b26e);_0x426dba(_0x25b26e);});});}function respondWithStatusCode(_0x13c20a,_0x302107){_0x302107=_0x302107||0xcc;return function(_0x38edd6){if(_0x38edd6){return _0x13c20a[_0xa09c('0x2c')](_0x302107);}return _0x13c20a[_0xa09c('0x2d')](_0x302107)['end']();};}function respondWithResult(_0x3c43a3,_0x22ca52){_0x22ca52=_0x22ca52||0xc8;return function(_0x3f921a){if(_0x3f921a){return _0x3c43a3[_0xa09c('0x2d')](_0x22ca52)[_0xa09c('0x2e')](_0x3f921a);}};}function respondWithFilteredResult(_0x45f523,_0x42739){return function(_0x764a2d){if(_0x764a2d){var _0xa1e6d8=typeof _0x42739['offset']===_0xa09c('0x2f')&&typeof _0x42739[_0xa09c('0x30')]==='undefined';var _0x16787d=_0x764a2d[_0xa09c('0x31')];var _0x135df5=_0xa1e6d8?0x0:_0x42739['offset'];var _0x57887e=_0xa1e6d8?_0x764a2d[_0xa09c('0x31')]:_0x42739[_0xa09c('0x32')]+_0x42739['limit'];var _0x4e7b6e;if(_0x57887e>=_0x16787d){_0x57887e=_0x16787d;_0x4e7b6e=0xc8;}else{_0x4e7b6e=0xce;}_0x45f523[_0xa09c('0x2d')](_0x4e7b6e);return _0x45f523[_0xa09c('0x33')](_0xa09c('0x34'),_0x135df5+'-'+_0x57887e+'/'+_0x16787d)['json'](_0x764a2d);}return null;};}function patchUpdates(_0x53ea14){return function(_0xc4ca7f){try{jsonpatch[_0xa09c('0x35')](_0xc4ca7f,_0x53ea14,!![]);}catch(_0x25639d){return BPromise[_0xa09c('0x36')](_0x25639d);}return _0xc4ca7f[_0xa09c('0x37')]();};}function saveUpdates(_0x4e59d9,_0x16052b){return function(_0x187f1f){if(_0x187f1f){return _0x187f1f[_0xa09c('0x38')](_0x4e59d9)[_0xa09c('0x23')](function(_0x2e4734){return _0x2e4734;});}return null;};}function removeEntity(_0x3fc70a,_0x3ea1aa){return function(_0x2e17f1){if(_0x2e17f1){return _0x2e17f1[_0xa09c('0x39')]()[_0xa09c('0x23')](function(){var _0x4faa07=_0x2e17f1[_0xa09c('0x3a')]({'plain':!![]});var _0x2ebd10=_0xa09c('0x3b');return db['UserProfileResource'][_0xa09c('0x39')]({'where':{'type':_0x2ebd10,'resourceId':_0x4faa07['id']}})[_0xa09c('0x23')](function(){return _0x2e17f1;});})[_0xa09c('0x23')](function(){_0x3fc70a[_0xa09c('0x2d')](0xcc)[_0xa09c('0x3c')]();});}};}function handleEntityNotFound(_0x342241,_0x1a524b){return function(_0x17d153){if(!_0x17d153){_0x342241['sendStatus'](0x194);}return _0x17d153;};}function handleError(_0x45ceda,_0x1f3744){_0x1f3744=_0x1f3744||0x1f4;return function(_0x12e6b7){logger[_0xa09c('0x28')](_0x12e6b7[_0xa09c('0x3d')]);if(_0x12e6b7['name']){delete _0x12e6b7[_0xa09c('0x3e')];}_0x45ceda[_0xa09c('0x2d')](_0x1f3744)[_0xa09c('0x3f')](_0x12e6b7);};}exports[_0xa09c('0x40')]=function(_0x3b039c,_0x147a26){var _0x13a4b5={},_0x3f2ce1={},_0x48988f={'count':0x0,'rows':[]};var _0x2c4580=_[_0xa09c('0x41')](db['ChatQueue'][_0xa09c('0x42')],function(_0x580b64){return{'name':_0x580b64[_0xa09c('0x43')],'type':_0x580b64[_0xa09c('0x44')]['key']};});_0x3f2ce1[_0xa09c('0x45')]=_[_0xa09c('0x41')](_0x2c4580,_0xa09c('0x3e'));_0x3f2ce1[_0xa09c('0x46')]=_['keys'](_0x3b039c[_0xa09c('0x46')]);_0x3f2ce1[_0xa09c('0x47')]=_[_0xa09c('0x48')](_0x3f2ce1[_0xa09c('0x45')],_0x3f2ce1[_0xa09c('0x46')]);_0x13a4b5['attributes']=_[_0xa09c('0x48')](_0x3f2ce1['model'],qs[_0xa09c('0x49')](_0x3b039c[_0xa09c('0x46')][_0xa09c('0x49')]));_0x13a4b5[_0xa09c('0x4a')]=_0x13a4b5[_0xa09c('0x4a')][_0xa09c('0x4b')]?_0x13a4b5['attributes']:_0x3f2ce1[_0xa09c('0x45')];if(!_0x3b039c[_0xa09c('0x46')][_0xa09c('0x4c')](_0xa09c('0x4d'))){_0x13a4b5[_0xa09c('0x30')]=qs[_0xa09c('0x30')](_0x3b039c['query']['limit']);_0x13a4b5[_0xa09c('0x32')]=qs['offset'](_0x3b039c[_0xa09c('0x46')][_0xa09c('0x32')]);}_0x13a4b5[_0xa09c('0x4e')]=qs[_0xa09c('0x4f')](_0x3b039c[_0xa09c('0x46')]['sort']);_0x13a4b5[_0xa09c('0x50')]=qs[_0xa09c('0x47')](_[_0xa09c('0x51')](_0x3b039c[_0xa09c('0x46')],_0x3f2ce1[_0xa09c('0x47')]),_0x2c4580);if(_0x3b039c[_0xa09c('0x46')][_0xa09c('0x52')]){_0x13a4b5['where']=_[_0xa09c('0x53')](_0x13a4b5[_0xa09c('0x50')],{'$or':_[_0xa09c('0x41')](_0x2c4580,function(_0x5ea94f){if(_0x5ea94f[_0xa09c('0x44')]!==_0xa09c('0x54')){var _0xa6f3d4={};_0xa6f3d4[_0x5ea94f['name']]={'$like':'%'+_0x3b039c[_0xa09c('0x46')]['filter']+'%'};return _0xa6f3d4;}})});}_0x13a4b5=_['merge']({},_0x13a4b5,_0x3b039c[_0xa09c('0x55')]);var _0x10dfe8={'where':_0x13a4b5[_0xa09c('0x50')]};return db['ChatQueue']['count'](_0x10dfe8)[_0xa09c('0x23')](function(_0x206c65){_0x48988f['count']=_0x206c65;if(_0x3b039c[_0xa09c('0x46')][_0xa09c('0x56')]){_0x13a4b5[_0xa09c('0x57')]=[{'all':!![]}];}return db['ChatQueue'][_0xa09c('0x58')](_0x13a4b5);})[_0xa09c('0x23')](function(_0x3ecf40){_0x48988f['rows']=_0x3ecf40;return _0x48988f;})['then'](respondWithFilteredResult(_0x147a26,_0x13a4b5))['catch'](handleError(_0x147a26,null));};exports['show']=function(_0x182723,_0x7e9a27){var _0x441d7f={'raw':!![],'where':{'id':_0x182723['params']['id']}},_0x4e0575={};_0x4e0575[_0xa09c('0x45')]=_['keys'](db[_0xa09c('0x59')][_0xa09c('0x42')]);_0x4e0575['query']=_['keys'](_0x182723[_0xa09c('0x46')]);_0x4e0575['filters']=_[_0xa09c('0x48')](_0x4e0575['model'],_0x4e0575[_0xa09c('0x46')]);_0x441d7f[_0xa09c('0x4a')]=_['intersection'](_0x4e0575['model'],qs[_0xa09c('0x49')](_0x182723['query']['fields']));_0x441d7f[_0xa09c('0x4a')]=_0x441d7f[_0xa09c('0x4a')][_0xa09c('0x4b')]?_0x441d7f[_0xa09c('0x4a')]:_0x4e0575[_0xa09c('0x45')];if(_0x182723[_0xa09c('0x46')][_0xa09c('0x56')]){_0x441d7f[_0xa09c('0x57')]=[{'all':!![]}];}_0x441d7f=_['merge']({},_0x441d7f,_0x182723[_0xa09c('0x55')]);return db[_0xa09c('0x59')][_0xa09c('0x5a')](_0x441d7f)[_0xa09c('0x23')](handleEntityNotFound(_0x7e9a27,null))[_0xa09c('0x23')](respondWithResult(_0x7e9a27,null))[_0xa09c('0x2b')](handleError(_0x7e9a27,null));};exports[_0xa09c('0x5b')]=function(_0x1dd58c,_0x33624c){return db[_0xa09c('0x59')]['create'](_0x1dd58c['body'],{})[_0xa09c('0x23')](function(_0x16a8ed){var _0x286a24=_0x1dd58c['user'][_0xa09c('0x3a')]({'plain':!![]});if(!_0x286a24)throw new Error(_0xa09c('0x5c'));if(_0x286a24['role']===_0xa09c('0x5d')){var _0xb53951=_0x16a8ed[_0xa09c('0x3a')]({'plain':!![]});var _0x322c30=_0xa09c('0x3b');return db[_0xa09c('0x5e')][_0xa09c('0x5a')]({'where':{'name':_0x322c30,'userProfileId':_0x286a24['userProfileId']},'raw':!![]})[_0xa09c('0x23')](function(_0x3fcea5){if(_0x3fcea5&&_0x3fcea5[_0xa09c('0x5f')]===0x0){return db['UserProfileResource'][_0xa09c('0x5b')]({'name':_0xb53951[_0xa09c('0x3e')],'resourceId':_0xb53951['id'],'type':_0x3fcea5[_0xa09c('0x3e')],'sectionId':_0x3fcea5['id']},{})[_0xa09c('0x23')](function(){return _0x16a8ed;});}else{return _0x16a8ed;}})[_0xa09c('0x2b')](function(_0x1b7bd5){logger[_0xa09c('0x28')](_0xa09c('0x60'),_0x1b7bd5);throw _0x1b7bd5;});}return _0x16a8ed;})[_0xa09c('0x23')](respondWithResult(_0x33624c,0xc9))[_0xa09c('0x2b')](handleError(_0x33624c,null));};exports[_0xa09c('0x38')]=function(_0x20bb79,_0x3af94d){if(_0x20bb79[_0xa09c('0x61')]['id']){delete _0x20bb79[_0xa09c('0x61')]['id'];}return db[_0xa09c('0x59')][_0xa09c('0x5a')]({'where':{'id':_0x20bb79[_0xa09c('0x62')]['id']}})['then'](handleEntityNotFound(_0x3af94d,null))[_0xa09c('0x23')](saveUpdates(_0x20bb79[_0xa09c('0x61')],null))[_0xa09c('0x23')](respondWithResult(_0x3af94d,null))['catch'](handleError(_0x3af94d,null));};exports[_0xa09c('0x39')]=function(_0x4f6034,_0x34e076){return db[_0xa09c('0x59')][_0xa09c('0x5a')]({'where':{'id':_0x4f6034[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x34e076,null))[_0xa09c('0x23')](removeEntity(_0x34e076,null))['catch'](handleError(_0x34e076,null));};exports[_0xa09c('0x63')]=function(_0x3d54fa,_0x3f5b3a){return db['ChatQueue'][_0xa09c('0x63')]()['then'](respondWithResult(_0x3f5b3a,null))[_0xa09c('0x2b')](handleError(_0x3f5b3a,null));};exports[_0xa09c('0x64')]=function(_0x9bb70b,_0x4dc961,_0x362d04){var _0x56e378={'raw':!![],'where':{}},_0x454a08={},_0x4cbc28;return db[_0xa09c('0x59')][_0xa09c('0x65')]({'where':{'id':_0x9bb70b[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x4dc961,null))['then'](function(_0xddfc4f){if(_0xddfc4f){_0x4cbc28=_0xddfc4f[_0xa09c('0x3a')]({'plain':!![]});_0x454a08[_0xa09c('0x45')]=_[_0xa09c('0x66')](db[_0xa09c('0x67')][_0xa09c('0x42')]);_0x454a08[_0xa09c('0x46')]=_['keys'](_0x9bb70b['query']);_0x454a08[_0xa09c('0x47')]=_[_0xa09c('0x48')](_0x454a08[_0xa09c('0x45')],_0x454a08[_0xa09c('0x46')]);_0x56e378['attributes']=_[_0xa09c('0x48')](_0x454a08['model'],qs[_0xa09c('0x49')](_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x49')]));_0x56e378[_0xa09c('0x4a')]=_0x56e378[_0xa09c('0x4a')][_0xa09c('0x4b')]?_0x56e378[_0xa09c('0x4a')]:_0x454a08['model'];if(!_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x4c')]('nolimit')){_0x56e378[_0xa09c('0x30')]=qs[_0xa09c('0x30')](_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x30')]);_0x56e378[_0xa09c('0x32')]=qs[_0xa09c('0x32')](_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x32')]);}_0x56e378[_0xa09c('0x4e')]=qs[_0xa09c('0x4f')](_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x4f')]);_0x56e378[_0xa09c('0x50')]=qs[_0xa09c('0x47')](_['pick'](_0x9bb70b['query'],_0x454a08[_0xa09c('0x47')]));_0x56e378[_0xa09c('0x50')][_0xa09c('0x68')]=_0xddfc4f['id'];if(_0x9bb70b[_0xa09c('0x46')][_0xa09c('0x52')]){_0x56e378['where']=_[_0xa09c('0x53')](_0x56e378[_0xa09c('0x50')],{'$or':_[_0xa09c('0x41')](_0x56e378[_0xa09c('0x4a')],function(_0x548452){var _0x6516e8={};_0x6516e8[_0x548452]={'$like':'%'+_0x9bb70b['query']['filter']+'%'};return _0x6516e8;})});}_0x56e378=_['merge']({},_0x56e378,_0x9bb70b[_0xa09c('0x55')]);return db['UserChatQueue'][_0xa09c('0x58')](_0x56e378);}})[_0xa09c('0x23')](function(_0x23360e){if(_0x23360e){return db[_0xa09c('0x69')][_0xa09c('0x6a')]({'where':{'id':_[_0xa09c('0x41')](_0x23360e,_0xa09c('0x6b')),'role':_0xa09c('0x6c')},'attributes':['id',_0xa09c('0x3e'),'chatPause',_0xa09c('0x6d'),'createdAt']});}})[_0xa09c('0x23')](function(_0x3111ec){if(_0x3111ec){return{'count':_0x3111ec[_0xa09c('0x31')],'rows':_[_0xa09c('0x41')](_0x3111ec[_0xa09c('0x6e')],function(_0x3e1308){return{'membername':_0x3e1308['name'],'UserId':_0x3e1308['id'],'queue_name':_0x4cbc28[_0xa09c('0x3e')],'ChatQueueId':_0x4cbc28['id'],'interface':util['format'](_0xa09c('0x6f'),_0xa09c('0x70'),_0x3e1308[_0xa09c('0x3e')]),'penalty':0x0,'paused':_0x3e1308[_0xa09c('0x71')],'createdAt':_0x3e1308[_0xa09c('0x72')],'updatedAt':_0x3e1308['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4dc961,_0x56e378))[_0xa09c('0x2b')](handleError(_0x4dc961,null));};exports['getTeams']=function(_0x271460,_0x13ae72,_0x3657f8){var _0x3f87b8={};var _0x1a392a={};var _0x543cab;var _0x4ed3f9;return db[_0xa09c('0x59')][_0xa09c('0x65')]({'where':{'id':_0x271460['params']['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x13ae72,null))[_0xa09c('0x23')](function(_0x263e57){if(_0x263e57){_0x543cab=_0x263e57;_0x1a392a[_0xa09c('0x45')]=_['keys'](db['Team']['rawAttributes']);_0x1a392a[_0xa09c('0x46')]=_[_0xa09c('0x66')](_0x271460[_0xa09c('0x46')]);_0x1a392a['filters']=_[_0xa09c('0x48')](_0x1a392a[_0xa09c('0x45')],_0x1a392a[_0xa09c('0x46')]);_0x3f87b8[_0xa09c('0x4a')]=_[_0xa09c('0x48')](_0x1a392a[_0xa09c('0x45')],qs[_0xa09c('0x49')](_0x271460[_0xa09c('0x46')]['fields']));_0x3f87b8[_0xa09c('0x4a')]=_0x3f87b8['attributes'][_0xa09c('0x4b')]?_0x3f87b8[_0xa09c('0x4a')]:_0x1a392a[_0xa09c('0x45')];_0x3f87b8[_0xa09c('0x4e')]=qs[_0xa09c('0x4f')](_0x271460[_0xa09c('0x46')][_0xa09c('0x4f')]);_0x3f87b8[_0xa09c('0x50')]=qs[_0xa09c('0x47')](_['pick'](_0x271460[_0xa09c('0x46')],_0x1a392a[_0xa09c('0x47')]));if(_0x271460[_0xa09c('0x46')][_0xa09c('0x52')]){_0x3f87b8['where']=_[_0xa09c('0x53')](_0x3f87b8[_0xa09c('0x50')],{'$or':_['map'](_0x3f87b8[_0xa09c('0x4a')],function(_0x459f30){var _0x14e02f={};_0x14e02f[_0x459f30]={'$like':'%'+_0x271460[_0xa09c('0x46')][_0xa09c('0x52')]+'%'};return _0x14e02f;})});}_0x3f87b8=_['merge']({},_0x3f87b8,_0x271460[_0xa09c('0x55')]);return _0x543cab[_0xa09c('0x73')](_0x3f87b8);}})[_0xa09c('0x23')](function(_0x58d126){if(_0x58d126){_0x4ed3f9=_0x58d126['length'];if(!_0x271460[_0xa09c('0x46')][_0xa09c('0x4c')](_0xa09c('0x4d'))){_0x3f87b8[_0xa09c('0x30')]=qs[_0xa09c('0x30')](_0x271460['query'][_0xa09c('0x30')]);_0x3f87b8[_0xa09c('0x32')]=qs[_0xa09c('0x32')](_0x271460[_0xa09c('0x46')]['offset']);}return _0x543cab['getTeams'](_0x3f87b8);}})[_0xa09c('0x23')](function(_0x2abb18){if(_0x2abb18){return _0x2abb18?{'count':_0x4ed3f9,'rows':_0x2abb18}:null;}})[_0xa09c('0x23')](respondWithResult(_0x13ae72,null))[_0xa09c('0x2b')](handleError(_0x13ae72,null));};exports[_0xa09c('0x74')]=function(_0x4decae,_0x24d4c1,_0x3385cf){var _0x11cc0c=_0x4decae['body'][_0xa09c('0x75')];return db['Team'][_0xa09c('0x58')]({'where':{'id':_0x11cc0c},'attributes':['id'],'include':[{'model':db[_0xa09c('0x69')],'as':_0xa09c('0x76'),'attributes':['id',_0xa09c('0x3e'),'online',_0xa09c('0x77'),_0xa09c('0x78')],'raw':!![]}]})[_0xa09c('0x23')](function(_0x12ab52){if(_0x12ab52){var _0x121d18=_[_0xa09c('0x79')](_0x12ab52,function(_0x2309b5){var _0xe48cd7=_0x2309b5[_0xa09c('0x3a')]({'plain':!![]});return _0xe48cd7[_0xa09c('0x76')];});return db[_0xa09c('0x59')][_0xa09c('0x5a')]({'where':{'id':_0x4decae[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](function(_0x4461b1){return db[_0xa09c('0x7a')]['transaction'](function(_0x3eeb69){return _0x4461b1[_0xa09c('0x74')](_0x11cc0c,{'transaction':_0x3eeb69})['then'](function(){return BPromise[_0xa09c('0x7b')](_0x121d18,function(_0x52cf4d){return db[_0xa09c('0x67')][_0xa09c('0x7c')]({'where':{'UserId':_0x52cf4d['id'],'ChatQueueId':_0x4decae[_0xa09c('0x62')]['id']},'transaction':_0x3eeb69});});})[_0xa09c('0x23')](function(){_0x121d18['forEach'](function(_0x2077ce){socket['emit'](_0xa09c('0x7d'),{'UserId':_0x2077ce['id'],'ChatQueueId':_0x4461b1['id']});});});});});}})['then'](respondWithStatusCode(_0x24d4c1,null))[_0xa09c('0x2b')](handleError(_0x24d4c1,null));};exports[_0xa09c('0x7e')]=function(_0xc3c061,_0x5204ec,_0x38e879){return db[_0xa09c('0x7f')][_0xa09c('0x58')]({'where':{'id':_0xc3c061[_0xa09c('0x46')][_0xa09c('0x75')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5204ec,null))['then'](function(_0x48f5f7){var _0x2c4ef7=_[_0xa09c('0x41')](_0x48f5f7,'id');var _0x3fbbd7=[];var _0x29f7ec=[];var _0x2dd16e=squel[_0xa09c('0x80')]();_0x2dd16e[_0xa09c('0x81')](_0xa09c('0x82'))['from'](_0xa09c('0x83'),'tq')[_0xa09c('0x84')]('user_has_teams','ut',_0xa09c('0x85'))['where'](_0xa09c('0x86'),_0xc3c061['params']['id']);for(var _0x32565b=0x0;_0x32565b<_0x48f5f7[_0xa09c('0x4b')];_0x32565b+=0x1){let _0x2ae69c=_0x48f5f7[_0x32565b];for(var _0x4d180d=0x0;_0x4d180d<_0x2ae69c[_0xa09c('0x76')]['length'];_0x4d180d+=0x1){let _0x24945b=_0x2ae69c[_0xa09c('0x76')][_0x4d180d];var _0x47219b=_0x2dd16e['clone']();_0x47219b['where'](_0xa09c('0x87'),_0x24945b['id']);_0x29f7ec[_0xa09c('0x88')](db[_0xa09c('0x7a')][_0xa09c('0x46')](_0x47219b[_0xa09c('0x89')](),{'type':db['sequelize']['QueryTypes'][_0xa09c('0x8a')]})['then'](function(_0x2b6677){if(_0x2b6677['length']===0x1){return _0x24945b['id'];}else{var _0x404558=_['every'](_[_0xa09c('0x41')](_0x2b6677,_0xa09c('0x8b')),function(_0x4658d8){return _[_0xa09c('0x8c')](_0x2c4ef7,_0x4658d8);});if(_0x404558){return _0x24945b['id'];}}}));}}return BPromise['all'](_0x29f7ec)[_0xa09c('0x23')](function(_0x47df44){_0x3fbbd7=_(_0x3fbbd7)[_0xa09c('0x8d')](_0x47df44)[_0xa09c('0x8e')]()['value']();return db[_0xa09c('0x59')][_0xa09c('0x5a')]({'where':{'id':_0xc3c061[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](function(_0x79dc83){return db[_0xa09c('0x7a')][_0xa09c('0x8f')](function(_0x54b52a){return _0x79dc83['removeTeams'](_0xc3c061[_0xa09c('0x46')][_0xa09c('0x75')],{'transaction':_0x54b52a})[_0xa09c('0x23')](function(){if(!_['isEmpty'](_0x3fbbd7)){return _0x79dc83['removeAgents'](_0x3fbbd7,{'transaction':_0x54b52a});}})[_0xa09c('0x23')](function(){_0x3fbbd7[_0xa09c('0x90')](function(_0x46b27b){socket[_0xa09c('0x91')](_0xa09c('0x92'),{'UserId':_0x46b27b,'ChatQueueId':_0x79dc83['id']});});});});});});})[_0xa09c('0x23')](respondWithStatusCode(_0x5204ec,null))['catch'](handleError(_0x5204ec,null));};exports['addAgents']=function(_0x4d4227,_0x16b345,_0x315c1d){return db[_0xa09c('0x59')]['find']({'where':{'id':_0x4d4227[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x16b345,null))[_0xa09c('0x23')](function(_0x10c37f){if(_0x10c37f){return _0x10c37f[_0xa09c('0x93')](_0x4d4227[_0xa09c('0x61')][_0xa09c('0x75')],_[_0xa09c('0x94')](_0x4d4227[_0xa09c('0x61')],[_0xa09c('0x75'),'id'])||{})[_0xa09c('0x95')](function(_0x597cb1){for(var _0x10fecc=0x0;_0x10fecc<_0x4d4227[_0xa09c('0x61')][_0xa09c('0x75')][_0xa09c('0x4b')];_0x10fecc+=0x1){socket['emit']('userChatQueue:save',{'UserId':Number(_0x4d4227[_0xa09c('0x61')]['ids'][_0x10fecc]),'ChatQueueId':Number(_0x4d4227[_0xa09c('0x62')]['id'])});}return _0x597cb1;});}})['then'](respondWithResult(_0x16b345,null))['catch'](handleError(_0x16b345,null));};exports[_0xa09c('0x96')]=function(_0x52588a,_0x204455,_0x5b99b2){return db[_0xa09c('0x59')][_0xa09c('0x5a')]({'where':{'id':_0x52588a[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x204455,null))[_0xa09c('0x23')](function(_0x8bdf93){if(_0x8bdf93){return _0x8bdf93[_0xa09c('0x96')](_0x52588a[_0xa09c('0x46')][_0xa09c('0x75')])[_0xa09c('0x23')](function(){if(_[_0xa09c('0x97')](_0x52588a[_0xa09c('0x46')][_0xa09c('0x75')])){for(var _0x29d3fd=0x0;_0x29d3fd<_0x52588a[_0xa09c('0x46')][_0xa09c('0x75')][_0xa09c('0x4b')];_0x29d3fd+=0x1){socket[_0xa09c('0x91')]('userChatQueue:remove',{'UserId':Number(_0x52588a['query'][_0xa09c('0x75')][_0x29d3fd]),'ChatQueueId':Number(_0x52588a[_0xa09c('0x62')]['id'])});}}else{socket[_0xa09c('0x91')](_0xa09c('0x92'),{'UserId':Number(_0x52588a[_0xa09c('0x46')]['ids']),'ChatQueueId':Number(_0x52588a[_0xa09c('0x62')]['id'])});}});}})[_0xa09c('0x23')](respondWithStatusCode(_0x204455,null))[_0xa09c('0x2b')](handleError(_0x204455,null));};exports[_0xa09c('0x98')]=function(_0x29bb68,_0x67bd64,_0x354655){var _0xa8fe2f={};var _0x422ad8={};var _0x117599;var _0x18d0e5;return db[_0xa09c('0x59')][_0xa09c('0x65')]({'where':{'id':_0x29bb68[_0xa09c('0x62')]['id']}})[_0xa09c('0x23')](handleEntityNotFound(_0x67bd64,null))[_0xa09c('0x23')](function(_0x11d6f8){if(_0x11d6f8){_0x117599=_0x11d6f8;_0x422ad8[_0xa09c('0x45')]=_[_0xa09c('0x66')](db[_0xa09c('0x69')][_0xa09c('0x42')]);_0x422ad8[_0xa09c('0x46')]=_[_0xa09c('0x66')](_0x29bb68[_0xa09c('0x46')]);_0x422ad8['filters']=_[_0xa09c('0x48')](_0x422ad8[_0xa09c('0x45')],_0x422ad8[_0xa09c('0x46')]);_0xa8fe2f[_0xa09c('0x4a')]=_[_0xa09c('0x48')](_0x422ad8['model'],qs[_0xa09c('0x49')](_0x29bb68[_0xa09c('0x46')][_0xa09c('0x49')]));_0xa8fe2f[_0xa09c('0x4a')]=_0xa8fe2f[_0xa09c('0x4a')]['length']?_0xa8fe2f[_0xa09c('0x4a')]:_0x422ad8[_0xa09c('0x45')];_0xa8fe2f['order']=qs[_0xa09c('0x4f')](_0x29bb68[_0xa09c('0x46')][_0xa09c('0x4f')]);_0xa8fe2f[_0xa09c('0x50')]=qs[_0xa09c('0x47')](_['pick'](_0x29bb68['query'],_0x422ad8['filters']));if(_0x29bb68[_0xa09c('0x46')]['filter']){_0xa8fe2f[_0xa09c('0x50')]=_[_0xa09c('0x53')](_0xa8fe2f[_0xa09c('0x50')],{'$or':_[_0xa09c('0x41')](_0xa8fe2f['attributes'],function(_0x427a08){var _0x1b9d32={};_0x1b9d32[_0x427a08]={'$like':'%'+_0x29bb68['query'][_0xa09c('0x52')]+'%'};return _0x1b9d32;})});}_0xa8fe2f=_[_0xa09c('0x53')]({},_0xa8fe2f,_0x29bb68[_0xa09c('0x55')]);return _0x117599['getAgents'](_0xa8fe2f);}})[_0xa09c('0x23')](function(_0x507c3c){if(_0x507c3c){_0x18d0e5=_0x507c3c[_0xa09c('0x4b')];if(!_0x29bb68[_0xa09c('0x46')]['hasOwnProperty'](_0xa09c('0x4d'))){_0xa8fe2f[_0xa09c('0x30')]=qs[_0xa09c('0x30')](_0x29bb68['query'][_0xa09c('0x30')]);_0xa8fe2f['offset']=qs[_0xa09c('0x32')](_0x29bb68['query']['offset']);}return _0x117599[_0xa09c('0x98')](_0xa8fe2f);}})['then'](function(_0x53e641){if(_0x53e641){return _0x53e641?{'count':_0x18d0e5,'rows':_0x53e641}:null;}})[_0xa09c('0x23')](respondWithResult(_0x67bd64,null))[_0xa09c('0x2b')](handleError(_0x67bd64,null));};
\ No newline at end of file
index afcb5e5..e79c28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41a0=['save','remove','emit','hasOwnProperty','exports','events','ChatQueue','setMaxListeners'];(function(_0x1b29a4,_0xe794d3){var _0x2eddbd=function(_0x5c8ef4){while(--_0x5c8ef4){_0x1b29a4['push'](_0x1b29a4['shift']());}};_0x2eddbd(++_0xe794d3);}(_0x41a0,0xd5));var _0x041a=function(_0x5e9768,_0x5383af){_0x5e9768=_0x5e9768-0x0;var _0x18d723=_0x41a0[_0x5e9768];return _0x18d723;};'use strict';var EventEmitter=require(_0x041a('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x041a('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x041a('0x2')](0x0);var events={'afterCreate':_0x041a('0x3'),'afterUpdate':'update','afterDestroy':_0x041a('0x4')};function emitEvent(_0x166ebe){return function(_0x1840d6,_0x4cbe51,_0x4eb15c){ChatQueueEvents[_0x041a('0x5')](_0x166ebe+':'+_0x1840d6['id'],_0x1840d6);ChatQueueEvents[_0x041a('0x5')](_0x166ebe,_0x1840d6);_0x4eb15c(null);};}for(var e in events){if(events[_0x041a('0x6')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x041a('0x7')]=ChatQueueEvents;
\ No newline at end of file
+var _0x4283=['setMaxListeners','save','remove','hasOwnProperty','hook','events'];(function(_0x14866a,_0x127ada){var _0x40b973=function(_0x34bad3){while(--_0x34bad3){_0x14866a['push'](_0x14866a['shift']());}};_0x40b973(++_0x127ada);}(_0x4283,0x119));var _0x3428=function(_0x16806e,_0x4d52c4){_0x16806e=_0x16806e-0x0;var _0x553909=_0x4283[_0x16806e];return _0x553909;};'use strict';var EventEmitter=require(_0x3428('0x0'));var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x3428('0x1')](0x0);var events={'afterCreate':_0x3428('0x2'),'afterUpdate':'update','afterDestroy':_0x3428('0x3')};function emitEvent(_0x19fe15){return function(_0xa7f10e,_0x5eceda,_0x445574){ChatQueueEvents['emit'](_0x19fe15+':'+_0xa7f10e['id'],_0xa7f10e);ChatQueueEvents['emit'](_0x19fe15,_0xa7f10e);_0x445574(null);};}for(var e in events){if(events[_0x3428('0x4')](e)){var event=events[e];ChatQueue[_0x3428('0x5')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index 2d98f52..6aabe75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0943=['bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','ChatQueue','chat_queues','../../config/logger','api'];(function(_0x3c5304,_0x4fb045){var _0xf2c65=function(_0x3de6fd){while(--_0x3de6fd){_0x3c5304['push'](_0x3c5304['shift']());}};_0xf2c65(++_0x4fb045);}(_0x0943,0x1a0));var _0x3094=function(_0x22a0ca,_0x3be5b1){_0x22a0ca=_0x22a0ca-0x0;var _0x50366a=_0x0943[_0x22a0ca];return _0x50366a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3094('0x0'))(_0x3094('0x1'));var moment=require('moment');var BPromise=require(_0x3094('0x2'));var rp=require(_0x3094('0x3'));var fs=require('fs');var path=require(_0x3094('0x4'));var rimraf=require(_0x3094('0x5'));var config=require(_0x3094('0x6'));var attributes=require(_0x3094('0x7'));module[_0x3094('0x8')]=function(_0x20ed75,_0x1eae90){return _0x20ed75['define'](_0x3094('0x9'),attributes,{'tableName':_0x3094('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9258=['ChatQueue','chat_queues','lodash','util','../../config/logger','bluebird','path','../../config/environment','./chatQueue.attributes','exports'];(function(_0x478618,_0x484e97){var _0x3e1d5a=function(_0x5ceaed){while(--_0x5ceaed){_0x478618['push'](_0x478618['shift']());}};_0x3e1d5a(++_0x484e97);}(_0x9258,0xc0));var _0x8925=function(_0x44bcca,_0x494157){_0x44bcca=_0x44bcca-0x0;var _0x1becb6=_0x9258[_0x44bcca];return _0x1becb6;};'use strict';var _=require(_0x8925('0x0'));var util=require(_0x8925('0x1'));var logger=require(_0x8925('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8925('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8925('0x4'));var rimraf=require('rimraf');var config=require(_0x8925('0x5'));var attributes=require(_0x8925('0x6'));module[_0x8925('0x7')]=function(_0x1ce2f0,_0x17d797){return _0x1ce2f0['define'](_0x8925('0x8'),attributes,{'tableName':_0x8925('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f6fc63..108b173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e8=['redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatQueue,\x20%s,\x20%s','result','catch','GetChatQueue','ChatQueue','options','where','include','map','model','attributes','ShowChatQueue','find','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http'];(function(_0xe0ac3f,_0x12ecb9){var _0x181065=function(_0x3f519d){while(--_0x3f519d){_0xe0ac3f['push'](_0xe0ac3f['shift']());}};_0x181065(++_0x12ecb9);}(_0xe1e8,0x1cb));var _0x8e1e=function(_0x13c991,_0x1ef65a){_0x13c991=_0x13c991-0x0;var _0x4581fd=_0xe1e8[_0x13c991];return _0x4581fd;};'use strict';var _=require(_0x8e1e('0x0'));var util=require('util');var moment=require(_0x8e1e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e1e('0x2'));var db=require(_0x8e1e('0x3'))['db'];var utils=require(_0x8e1e('0x4'));var logger=require(_0x8e1e('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8e1e('0x6'));var client=jayson[_0x8e1e('0x7')][_0x8e1e('0x8')]({'port':0x232a});config[_0x8e1e('0x9')]=_['defaults'](config[_0x8e1e('0x9')],{'host':_0x8e1e('0xa'),'port':0x18eb});var socket=require(_0x8e1e('0xb'))(new Redis(config['redis']));require('./chatQueue.socket')[_0x8e1e('0xc')](socket);function respondWithRpcPromise(_0x366a90,_0x4def87,_0x337f5c){return new BPromise(function(_0x48dcfa,_0x309642){return client[_0x8e1e('0xd')](_0x366a90,_0x337f5c)[_0x8e1e('0xe')](function(_0xfc85b2){logger[_0x8e1e('0xf')]('ChatQueue,\x20%s,\x20%s',_0x4def87,_0x8e1e('0x10'));logger[_0x8e1e('0x11')](_0x8e1e('0x12'),_0x4def87,'request\x20sent',JSON[_0x8e1e('0x13')](_0xfc85b2));if(_0xfc85b2[_0x8e1e('0x14')]){if(_0xfc85b2[_0x8e1e('0x14')][_0x8e1e('0x15')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x4def87,_0xfc85b2['error'][_0x8e1e('0x16')]);return _0x309642(_0xfc85b2[_0x8e1e('0x14')][_0x8e1e('0x16')]);}logger[_0x8e1e('0x14')](_0x8e1e('0x17'),_0x4def87,_0xfc85b2['error']['message']);return _0x48dcfa(_0xfc85b2[_0x8e1e('0x14')][_0x8e1e('0x16')]);}else{logger[_0x8e1e('0xf')](_0x8e1e('0x17'),_0x4def87,_0x8e1e('0x10'));_0x48dcfa(_0xfc85b2[_0x8e1e('0x18')]['message']);}})[_0x8e1e('0x19')](function(_0x297d5b){logger['error'](_0x8e1e('0x17'),_0x4def87,_0x297d5b);_0x309642(_0x297d5b);});});}exports[_0x8e1e('0x1a')]=function(_0x15dc7d){var _0xa6f8f5=this;return new Promise(function(_0x3e77ea,_0x325028){return db[_0x8e1e('0x1b')]['findAll']({'raw':_0x15dc7d[_0x8e1e('0x1c')]?_0x15dc7d['options']['raw']===undefined?!![]:![]:!![],'where':_0x15dc7d['options']?_0x15dc7d[_0x8e1e('0x1c')][_0x8e1e('0x1d')]||null:null,'attributes':_0x15dc7d['options']?_0x15dc7d[_0x8e1e('0x1c')]['attributes']||null:null,'limit':_0x15dc7d[_0x8e1e('0x1c')]?_0x15dc7d['options']['limit']||null:null,'include':_0x15dc7d[_0x8e1e('0x1c')]?_0x15dc7d[_0x8e1e('0x1c')][_0x8e1e('0x1e')]?_[_0x8e1e('0x1f')](_0x15dc7d['options'][_0x8e1e('0x1e')],function(_0x3b9587){return{'model':db[_0x3b9587[_0x8e1e('0x20')]],'as':_0x3b9587['as'],'attributes':_0x3b9587['attributes'],'include':_0x3b9587['include']?_[_0x8e1e('0x1f')](_0x3b9587['include'],function(_0x170eeb){return{'model':db[_0x170eeb[_0x8e1e('0x20')]],'as':_0x170eeb['as'],'attributes':_0x170eeb[_0x8e1e('0x21')],'include':_0x170eeb[_0x8e1e('0x1e')]?_[_0x8e1e('0x1f')](_0x170eeb[_0x8e1e('0x1e')],function(_0x1764b4){return{'model':db[_0x1764b4[_0x8e1e('0x20')]],'as':_0x1764b4['as'],'attributes':_0x1764b4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e7d84){logger[_0x8e1e('0xf')](_0x8e1e('0x1a'),_0x15dc7d);logger[_0x8e1e('0x11')]('GetChatQueue',_0x15dc7d,JSON[_0x8e1e('0x13')](_0x2e7d84));_0x3e77ea(_0x2e7d84);})[_0x8e1e('0x19')](function(_0xf88ecb){logger[_0x8e1e('0x14')](_0x8e1e('0x1a'),_0xf88ecb['message'],_0x15dc7d);_0x325028(_0xa6f8f5[_0x8e1e('0x14')](0x1f4,_0xf88ecb[_0x8e1e('0x16')]));});});};exports[_0x8e1e('0x22')]=function(_0x1027c9){var _0x302c52=this;return new Promise(function(_0x2b4b98,_0x49ed62){return db[_0x8e1e('0x1b')][_0x8e1e('0x23')]({'raw':_0x1027c9['options']?_0x1027c9[_0x8e1e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1027c9[_0x8e1e('0x1c')]?_0x1027c9[_0x8e1e('0x1c')][_0x8e1e('0x1d')]||null:null,'attributes':_0x1027c9[_0x8e1e('0x1c')]?_0x1027c9['options']['attributes']||null:null,'include':_0x1027c9[_0x8e1e('0x1c')]?_0x1027c9[_0x8e1e('0x1c')][_0x8e1e('0x1e')]?_['map'](_0x1027c9['options'][_0x8e1e('0x1e')],function(_0x1c2032){return{'model':db[_0x1c2032[_0x8e1e('0x20')]],'as':_0x1c2032['as'],'attributes':_0x1c2032['attributes'],'include':_0x1c2032[_0x8e1e('0x1e')]?_[_0x8e1e('0x1f')](_0x1c2032['include'],function(_0x27c3eb){return{'model':db[_0x27c3eb[_0x8e1e('0x20')]],'as':_0x27c3eb['as'],'attributes':_0x27c3eb[_0x8e1e('0x21')],'include':_0x27c3eb['include']?_[_0x8e1e('0x1f')](_0x27c3eb[_0x8e1e('0x1e')],function(_0x4046fe){return{'model':db[_0x4046fe['model']],'as':_0x4046fe['as'],'attributes':_0x4046fe[_0x8e1e('0x21')]};}):[]};}):[]};}):[]:[]})[_0x8e1e('0xe')](function(_0x476d85){logger[_0x8e1e('0xf')](_0x8e1e('0x22'),_0x1027c9);logger['debug']('ShowChatQueue',_0x1027c9,JSON[_0x8e1e('0x13')](_0x476d85));_0x2b4b98(_0x476d85);})[_0x8e1e('0x19')](function(_0x1b0bc6){logger[_0x8e1e('0x14')](_0x8e1e('0x22'),_0x1b0bc6[_0x8e1e('0x16')],_0x1027c9);_0x49ed62(_0x302c52[_0x8e1e('0x14')](0x1f4,_0x1b0bc6[_0x8e1e('0x16')]));});});};
\ No newline at end of file
+var _0x8ff4=['include','map','model','attributes','ShowChatQueue','find','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetChatQueue','ChatQueue','options','raw','where'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x8ff4,0x11f));var _0x48ff=function(_0x2786ea,_0x16c3c3){_0x2786ea=_0x2786ea-0x0;var _0x5c38e5=_0x8ff4[_0x2786ea];return _0x5c38e5;};'use strict';var _=require(_0x48ff('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x48ff('0x1'));var rs=require(_0x48ff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x48ff('0x3'))['db'];var utils=require(_0x48ff('0x4'));var logger=require(_0x48ff('0x5'))(_0x48ff('0x6'));var config=require(_0x48ff('0x7'));var jayson=require(_0x48ff('0x8'));var client=jayson[_0x48ff('0x9')][_0x48ff('0xa')]({'port':0x232a});config[_0x48ff('0xb')]=_[_0x48ff('0xc')](config[_0x48ff('0xb')],{'host':_0x48ff('0xd'),'port':0x18eb});var socket=require(_0x48ff('0xe'))(new Redis(config[_0x48ff('0xb')]));require('./chatQueue.socket')[_0x48ff('0xf')](socket);function respondWithRpcPromise(_0x312c3f,_0x5eb71f,_0x37027d){return new BPromise(function(_0x140a23,_0x5754e1){return client[_0x48ff('0x10')](_0x312c3f,_0x37027d)[_0x48ff('0x11')](function(_0x5a3f0a){logger[_0x48ff('0x12')](_0x48ff('0x13'),_0x5eb71f,_0x48ff('0x14'));logger[_0x48ff('0x15')](_0x48ff('0x16'),_0x5eb71f,_0x48ff('0x14'),JSON[_0x48ff('0x17')](_0x5a3f0a));if(_0x5a3f0a[_0x48ff('0x18')]){if(_0x5a3f0a[_0x48ff('0x18')][_0x48ff('0x19')]===0x1f4){logger[_0x48ff('0x18')](_0x48ff('0x13'),_0x5eb71f,_0x5a3f0a[_0x48ff('0x18')][_0x48ff('0x1a')]);return _0x5754e1(_0x5a3f0a['error'][_0x48ff('0x1a')]);}logger[_0x48ff('0x18')]('ChatQueue,\x20%s,\x20%s',_0x5eb71f,_0x5a3f0a[_0x48ff('0x18')][_0x48ff('0x1a')]);return _0x140a23(_0x5a3f0a[_0x48ff('0x18')]['message']);}else{logger[_0x48ff('0x12')](_0x48ff('0x13'),_0x5eb71f,'request\x20sent');_0x140a23(_0x5a3f0a[_0x48ff('0x1b')][_0x48ff('0x1a')]);}})['catch'](function(_0x24d4fb){logger[_0x48ff('0x18')]('ChatQueue,\x20%s,\x20%s',_0x5eb71f,_0x24d4fb);_0x5754e1(_0x24d4fb);});});}exports[_0x48ff('0x1c')]=function(_0x1a4111){var _0x2fe32f=this;return new Promise(function(_0x55bc40,_0x57c773){return db[_0x48ff('0x1d')]['findAll']({'raw':_0x1a4111[_0x48ff('0x1e')]?_0x1a4111[_0x48ff('0x1e')][_0x48ff('0x1f')]===undefined?!![]:![]:!![],'where':_0x1a4111[_0x48ff('0x1e')]?_0x1a4111[_0x48ff('0x1e')][_0x48ff('0x20')]||null:null,'attributes':_0x1a4111[_0x48ff('0x1e')]?_0x1a4111[_0x48ff('0x1e')]['attributes']||null:null,'limit':_0x1a4111[_0x48ff('0x1e')]?_0x1a4111[_0x48ff('0x1e')]['limit']||null:null,'include':_0x1a4111[_0x48ff('0x1e')]?_0x1a4111[_0x48ff('0x1e')][_0x48ff('0x21')]?_[_0x48ff('0x22')](_0x1a4111[_0x48ff('0x1e')][_0x48ff('0x21')],function(_0x4ff1b7){return{'model':db[_0x4ff1b7[_0x48ff('0x23')]],'as':_0x4ff1b7['as'],'attributes':_0x4ff1b7[_0x48ff('0x24')],'include':_0x4ff1b7['include']?_[_0x48ff('0x22')](_0x4ff1b7[_0x48ff('0x21')],function(_0x39088f){return{'model':db[_0x39088f[_0x48ff('0x23')]],'as':_0x39088f['as'],'attributes':_0x39088f[_0x48ff('0x24')],'include':_0x39088f[_0x48ff('0x21')]?_[_0x48ff('0x22')](_0x39088f[_0x48ff('0x21')],function(_0x2b92ad){return{'model':db[_0x2b92ad[_0x48ff('0x23')]],'as':_0x2b92ad['as'],'attributes':_0x2b92ad[_0x48ff('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x34def7){logger[_0x48ff('0x12')](_0x48ff('0x1c'),_0x1a4111);logger[_0x48ff('0x15')]('GetChatQueue',_0x1a4111,JSON[_0x48ff('0x17')](_0x34def7));_0x55bc40(_0x34def7);})['catch'](function(_0x2c9185){logger['error'](_0x48ff('0x1c'),_0x2c9185[_0x48ff('0x1a')],_0x1a4111);_0x57c773(_0x2fe32f[_0x48ff('0x18')](0x1f4,_0x2c9185[_0x48ff('0x1a')]));});});};exports[_0x48ff('0x25')]=function(_0x182289){var _0x536eb4=this;return new Promise(function(_0x31f896,_0x6fa03c){return db[_0x48ff('0x1d')][_0x48ff('0x26')]({'raw':_0x182289[_0x48ff('0x1e')]?_0x182289[_0x48ff('0x1e')][_0x48ff('0x1f')]===undefined?!![]:![]:!![],'where':_0x182289['options']?_0x182289[_0x48ff('0x1e')][_0x48ff('0x20')]||null:null,'attributes':_0x182289['options']?_0x182289[_0x48ff('0x1e')][_0x48ff('0x24')]||null:null,'include':_0x182289[_0x48ff('0x1e')]?_0x182289[_0x48ff('0x1e')][_0x48ff('0x21')]?_[_0x48ff('0x22')](_0x182289[_0x48ff('0x1e')][_0x48ff('0x21')],function(_0x36100d){return{'model':db[_0x36100d[_0x48ff('0x23')]],'as':_0x36100d['as'],'attributes':_0x36100d[_0x48ff('0x24')],'include':_0x36100d[_0x48ff('0x21')]?_[_0x48ff('0x22')](_0x36100d[_0x48ff('0x21')],function(_0x58955d){return{'model':db[_0x58955d[_0x48ff('0x23')]],'as':_0x58955d['as'],'attributes':_0x58955d[_0x48ff('0x24')],'include':_0x58955d[_0x48ff('0x21')]?_[_0x48ff('0x22')](_0x58955d['include'],function(_0x5c277d){return{'model':db[_0x5c277d[_0x48ff('0x23')]],'as':_0x5c277d['as'],'attributes':_0x5c277d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x907224){logger[_0x48ff('0x12')](_0x48ff('0x25'),_0x182289);logger[_0x48ff('0x15')]('ShowChatQueue',_0x182289,JSON[_0x48ff('0x17')](_0x907224));_0x31f896(_0x907224);})[_0x48ff('0x27')](function(_0x5a66c4){logger[_0x48ff('0x18')](_0x48ff('0x25'),_0x5a66c4['message'],_0x182289);_0x6fa03c(_0x536eb4[_0x48ff('0x18')](0x1f4,_0x5a66c4['message']));});});};
\ No newline at end of file
index 9af1cdc..321d97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ea=['./chatQueue.events','save','remove','update','emit','removeListener','register','length','chatQueue:'];(function(_0x513ed9,_0x198d85){var _0x284d1b=function(_0x415c8c){while(--_0x415c8c){_0x513ed9['push'](_0x513ed9['shift']());}};_0x284d1b(++_0x198d85);}(_0xd2ea,0x15f));var _0xad2e=function(_0x4918a0,_0x541521){_0x4918a0=_0x4918a0-0x0;var _0x428c84=_0xd2ea[_0x4918a0];return _0x428c84;};'use strict';var ChatQueueEvents=require(_0xad2e('0x0'));var events=[_0xad2e('0x1'),_0xad2e('0x2'),_0xad2e('0x3')];function createListener(_0x44b30d,_0x5c9fa9){return function(_0x3a9d11){_0x5c9fa9[_0xad2e('0x4')](_0x44b30d,_0x3a9d11);};}function removeListener(_0xcba7cb,_0x3e0741){return function(){ChatQueueEvents[_0xad2e('0x5')](_0xcba7cb,_0x3e0741);};}exports[_0xad2e('0x6')]=function(_0x29e97f){for(var _0x592e8b=0x0,_0x3b5170=events[_0xad2e('0x7')];_0x592e8b<_0x3b5170;_0x592e8b++){var _0x2ff7b2=events[_0x592e8b];var _0x5710ac=createListener(_0xad2e('0x8')+_0x2ff7b2,_0x29e97f);ChatQueueEvents['on'](_0x2ff7b2,_0x5710ac);}};
\ No newline at end of file
+var _0xed1f=['register','length','./chatQueue.events','save','remove','update','emit','removeListener'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xed1f,0x6a));var _0xfed1=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0xed1f[_0x556927];return _0x5f1235;};'use strict';var ChatQueueEvents=require(_0xfed1('0x0'));var events=[_0xfed1('0x1'),_0xfed1('0x2'),_0xfed1('0x3')];function createListener(_0xa45937,_0x25f345){return function(_0x1dd614){_0x25f345[_0xfed1('0x4')](_0xa45937,_0x1dd614);};}function removeListener(_0x2209b3,_0x45c3c1){return function(){ChatQueueEvents[_0xfed1('0x5')](_0x2209b3,_0x45c3c1);};}exports[_0xfed1('0x6')]=function(_0x3d6706){for(var _0x42751d=0x0,_0x380e18=events[_0xfed1('0x7')];_0x42751d<_0x380e18;_0x42751d++){var _0x2a6082=events[_0x42751d];var _0x2967ef=createListener('chatQueue:'+_0x2a6082,_0x3d6706);ChatQueueEvents['on'](_0x2a6082,_0x2967ef);}};
\ No newline at end of file
index fe55f4a..922d1f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2eac4f,_0x5173f9){_0x2eac4f=_0x2eac4f-0x0;var _0x58f73b=_0x5fc3[_0x2eac4f];return _0x58f73b;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
+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(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3e74,0x175));var _0x43e7=function(_0x491eee,_0x1a0eaa){_0x491eee=_0x491eee-0x0;var _0x19d78a=_0x3e74[_0x491eee];return _0x19d78a;};'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
index 416f3d4..b552532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7610=['DATE','moment','sequelize','exports','STRING'];(function(_0x50da6b,_0x3dd76d){var _0x451d63=function(_0x9608af){while(--_0x9608af){_0x50da6b['push'](_0x50da6b['shift']());}};_0x451d63(++_0x3dd76d);}(_0x7610,0x123));var _0x0761=function(_0x1a5038,_0x178cfc){_0x1a5038=_0x1a5038-0x0;var _0x737034=_0x7610[_0x1a5038];return _0x737034;};'use strict';var moment=require(_0x0761('0x0'));var Sequelize=require(_0x0761('0x1'));module[_0x0761('0x2')]={'uniqueid':{'type':Sequelize[_0x0761('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x0761('0x4')]},'acceptAt':{'type':Sequelize[_0x0761('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x0761('0x3')]}};
\ No newline at end of file
+var _0xc470=['DATE','moment','sequelize','exports','STRING'];(function(_0x289891,_0x49a0fa){var _0x31cf2e=function(_0x8cebce){while(--_0x8cebce){_0x289891['push'](_0x289891['shift']());}};_0x31cf2e(++_0x49a0fa);}(_0xc470,0x155));var _0x0c47=function(_0x57d740,_0x50be99){_0x57d740=_0x57d740-0x0;var _0x6607ef=_0xc470[_0x57d740];return _0x6607ef;};'use strict';var moment=require(_0x0c47('0x0'));var Sequelize=require(_0x0c47('0x1'));module[_0x0c47('0x2')]={'uniqueid':{'type':Sequelize[_0x0c47('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x0c47('0x4')]},'leaveAt':{'type':Sequelize[_0x0c47('0x4')]},'acceptAt':{'type':Sequelize[_0x0c47('0x4')]},'exitAt':{'type':Sequelize[_0x0c47('0x4')]},'reason':{'type':Sequelize[_0x0c47('0x3')]}};
\ No newline at end of file
index c087ee4..f789d33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d19=['ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','then','sendStatus','stack','name','send','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','ChatQueueReport','rows','show','params','length','include','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x188db2,_0x48d1fa){var _0x37e450=function(_0x1c01c1){while(--_0x1c01c1){_0x188db2['push'](_0x188db2['shift']());}};_0x37e450(++_0x48d1fa);}(_0x6d19,0x160));var _0x96d1=function(_0x52684f,_0xff73fc){_0x52684f=_0x52684f-0x0;var _0x4a55f0=_0x6d19[_0x52684f];return _0x4a55f0;};'use strict';var emlformat=require(_0x96d1('0x0'));var rimraf=require(_0x96d1('0x1'));var zipdir=require(_0x96d1('0x2'));var jsonpatch=require(_0x96d1('0x3'));var rp=require(_0x96d1('0x4'));var moment=require(_0x96d1('0x5'));var BPromise=require(_0x96d1('0x6'));var Mustache=require('mustache');var util=require(_0x96d1('0x7'));var path=require(_0x96d1('0x8'));var sox=require(_0x96d1('0x9'));var csv=require(_0x96d1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x96d1('0xb'));var _=require(_0x96d1('0xc'));var squel=require(_0x96d1('0xd'));var crypto=require('crypto');var jsforce=require(_0x96d1('0xe'));var deskjs=require(_0x96d1('0xf'));var toCsv=require(_0x96d1('0xa'));var querystring=require(_0x96d1('0x10'));var Papa=require(_0x96d1('0x11'));var Redis=require(_0x96d1('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x96d1('0x13'));var hardwareService=require(_0x96d1('0x14'));var logger=require('../../config/logger')(_0x96d1('0x15'));var utils=require('../../config/utils');var config=require(_0x96d1('0x16'));var licenseUtil=require(_0x96d1('0x17'));var db=require(_0x96d1('0x18'))['db'];function respondWithStatusCode(_0xb019fb,_0x46905e){_0x46905e=_0x46905e||0xcc;return function(_0x673a11){if(_0x673a11){return _0xb019fb['sendStatus'](_0x46905e);}return _0xb019fb[_0x96d1('0x19')](_0x46905e)[_0x96d1('0x1a')]();};}function respondWithResult(_0x10e057,_0xdcf1fc){_0xdcf1fc=_0xdcf1fc||0xc8;return function(_0x2fd5c6){if(_0x2fd5c6){return _0x10e057['status'](_0xdcf1fc)['json'](_0x2fd5c6);}};}function respondWithFilteredResult(_0x2e4cf5,_0x446023){return function(_0x21d7a4){if(_0x21d7a4){var _0x9eb2c4=typeof _0x446023[_0x96d1('0x1b')]===_0x96d1('0x1c')&&typeof _0x446023[_0x96d1('0x1d')]===_0x96d1('0x1c');var _0x913482=_0x21d7a4['count'];var _0x18c73f=_0x9eb2c4?0x0:_0x446023[_0x96d1('0x1b')];var _0x3ed4ff=_0x9eb2c4?_0x21d7a4[_0x96d1('0x1e')]:_0x446023[_0x96d1('0x1b')]+_0x446023['limit'];var _0x3c605a;if(_0x3ed4ff>=_0x913482){_0x3ed4ff=_0x913482;_0x3c605a=0xc8;}else{_0x3c605a=0xce;}_0x2e4cf5[_0x96d1('0x19')](_0x3c605a);return _0x2e4cf5[_0x96d1('0x1f')](_0x96d1('0x20'),_0x18c73f+'-'+_0x3ed4ff+'/'+_0x913482)['json'](_0x21d7a4);}return null;};}function patchUpdates(_0x17e281){return function(_0x11a666){try{jsonpatch[_0x96d1('0x21')](_0x11a666,_0x17e281,!![]);}catch(_0x31a7e5){return BPromise['reject'](_0x31a7e5);}return _0x11a666[_0x96d1('0x22')]();};}function saveUpdates(_0x3393ec,_0x186bae){return function(_0x1390ac){if(_0x1390ac){return _0x1390ac['update'](_0x3393ec)[_0x96d1('0x23')](function(_0x38f350){return _0x38f350;});}return null;};}function removeEntity(_0x5d7962,_0x14334a){return function(_0x29ea83){if(_0x29ea83){return _0x29ea83['destroy']()[_0x96d1('0x23')](function(){_0x5d7962[_0x96d1('0x19')](0xcc)[_0x96d1('0x1a')]();});}};}function handleEntityNotFound(_0x5462ec,_0x424d1e){return function(_0x46aa64){if(!_0x46aa64){_0x5462ec[_0x96d1('0x24')](0x194);}return _0x46aa64;};}function handleError(_0x56be7f,_0x511ebd){_0x511ebd=_0x511ebd||0x1f4;return function(_0xd88eb7){logger['error'](_0xd88eb7[_0x96d1('0x25')]);if(_0xd88eb7[_0x96d1('0x26')]){delete _0xd88eb7[_0x96d1('0x26')];}_0x56be7f[_0x96d1('0x19')](_0x511ebd)[_0x96d1('0x27')](_0xd88eb7);};}exports['index']=function(_0x1b42a0,_0xdfa409){var _0x433b36={},_0x443f9c={},_0x5a83e6={'count':0x0,'rows':[]};var _0x1b767b=_[_0x96d1('0x28')](db['ChatQueueReport']['rawAttributes'],function(_0x7ee767){return{'name':_0x7ee767[_0x96d1('0x29')],'type':_0x7ee767[_0x96d1('0x2a')][_0x96d1('0x2b')]};});_0x443f9c[_0x96d1('0x2c')]=_[_0x96d1('0x28')](_0x1b767b,'name');_0x443f9c[_0x96d1('0x2d')]=_[_0x96d1('0x2e')](_0x1b42a0[_0x96d1('0x2d')]);_0x443f9c[_0x96d1('0x2f')]=_[_0x96d1('0x30')](_0x443f9c[_0x96d1('0x2c')],_0x443f9c['query']);_0x433b36[_0x96d1('0x31')]=_[_0x96d1('0x30')](_0x443f9c[_0x96d1('0x2c')],qs[_0x96d1('0x32')](_0x1b42a0[_0x96d1('0x2d')][_0x96d1('0x32')]));_0x433b36['attributes']=_0x433b36[_0x96d1('0x31')]['length']?_0x433b36['attributes']:_0x443f9c['model'];if(!_0x1b42a0[_0x96d1('0x2d')][_0x96d1('0x33')](_0x96d1('0x34'))){_0x433b36[_0x96d1('0x1d')]=qs[_0x96d1('0x1d')](_0x1b42a0['query'][_0x96d1('0x1d')]);_0x433b36[_0x96d1('0x1b')]=qs[_0x96d1('0x1b')](_0x1b42a0[_0x96d1('0x2d')][_0x96d1('0x1b')]);}_0x433b36[_0x96d1('0x35')]=qs['sort'](_0x1b42a0[_0x96d1('0x2d')][_0x96d1('0x36')]);_0x433b36[_0x96d1('0x37')]=qs[_0x96d1('0x2f')](_[_0x96d1('0x38')](_0x1b42a0[_0x96d1('0x2d')],_0x443f9c[_0x96d1('0x2f')]),_0x1b767b);if(_0x1b42a0['query']['filter']){_0x433b36[_0x96d1('0x37')]=_[_0x96d1('0x39')](_0x433b36[_0x96d1('0x37')],{'$or':_[_0x96d1('0x28')](_0x1b767b,function(_0xc87d85){if(_0xc87d85['type']!==_0x96d1('0x3a')){var _0x4110ce={};_0x4110ce[_0xc87d85['name']]={'$like':'%'+_0x1b42a0[_0x96d1('0x2d')][_0x96d1('0x3b')]+'%'};return _0x4110ce;}})});}_0x433b36=_[_0x96d1('0x39')]({},_0x433b36,_0x1b42a0[_0x96d1('0x3c')]);var _0x53ed44={'where':_0x433b36[_0x96d1('0x37')]};return db['ChatQueueReport']['count'](_0x53ed44)[_0x96d1('0x23')](function(_0x3e10f3){_0x5a83e6['count']=_0x3e10f3;if(_0x1b42a0['query'][_0x96d1('0x3d')]){_0x433b36['include']=[{'all':!![]}];}return db[_0x96d1('0x3e')]['findAll'](_0x433b36);})[_0x96d1('0x23')](function(_0x525045){_0x5a83e6[_0x96d1('0x3f')]=_0x525045;return _0x5a83e6;})['then'](respondWithFilteredResult(_0xdfa409,_0x433b36))['catch'](handleError(_0xdfa409,null));};exports[_0x96d1('0x40')]=function(_0x5c676e,_0x59f0e7){var _0x1244ed={'raw':!![],'where':{'id':_0x5c676e[_0x96d1('0x41')]['id']}},_0x1f7dde={};_0x1f7dde[_0x96d1('0x2c')]=_[_0x96d1('0x2e')](db['ChatQueueReport']['rawAttributes']);_0x1f7dde['query']=_[_0x96d1('0x2e')](_0x5c676e[_0x96d1('0x2d')]);_0x1f7dde[_0x96d1('0x2f')]=_[_0x96d1('0x30')](_0x1f7dde[_0x96d1('0x2c')],_0x1f7dde[_0x96d1('0x2d')]);_0x1244ed['attributes']=_['intersection'](_0x1f7dde[_0x96d1('0x2c')],qs[_0x96d1('0x32')](_0x5c676e[_0x96d1('0x2d')][_0x96d1('0x32')]));_0x1244ed[_0x96d1('0x31')]=_0x1244ed[_0x96d1('0x31')][_0x96d1('0x42')]?_0x1244ed[_0x96d1('0x31')]:_0x1f7dde['model'];if(_0x5c676e['query'][_0x96d1('0x3d')]){_0x1244ed[_0x96d1('0x43')]=[{'all':!![]}];}_0x1244ed=_['merge']({},_0x1244ed,_0x5c676e[_0x96d1('0x3c')]);return db['ChatQueueReport'][_0x96d1('0x44')](_0x1244ed)[_0x96d1('0x23')](handleEntityNotFound(_0x59f0e7,null))[_0x96d1('0x23')](respondWithResult(_0x59f0e7,null))[_0x96d1('0x45')](handleError(_0x59f0e7,null));};exports[_0x96d1('0x46')]=function(_0x1728e3,_0x59aa3c){return db[_0x96d1('0x3e')][_0x96d1('0x46')](_0x1728e3['body'],{})[_0x96d1('0x23')](respondWithResult(_0x59aa3c,0xc9))[_0x96d1('0x45')](handleError(_0x59aa3c,null));};exports[_0x96d1('0x47')]=function(_0x39e32b,_0x33970f){if(_0x39e32b[_0x96d1('0x48')]['id']){delete _0x39e32b[_0x96d1('0x48')]['id'];}return db[_0x96d1('0x3e')][_0x96d1('0x44')]({'where':{'id':_0x39e32b[_0x96d1('0x41')]['id']}})[_0x96d1('0x23')](handleEntityNotFound(_0x33970f,null))[_0x96d1('0x23')](saveUpdates(_0x39e32b[_0x96d1('0x48')],null))[_0x96d1('0x23')](respondWithResult(_0x33970f,null))['catch'](handleError(_0x33970f,null));};exports[_0x96d1('0x49')]=function(_0x13e9cc,_0x3f3a89){return db[_0x96d1('0x3e')][_0x96d1('0x44')]({'where':{'id':_0x13e9cc[_0x96d1('0x41')]['id']}})['then'](handleEntityNotFound(_0x3f3a89,null))[_0x96d1('0x23')](removeEntity(_0x3f3a89,null))[_0x96d1('0x45')](handleError(_0x3f3a89,null));};exports['describe']=function(_0x1c5f67,_0x1cbd18){return db[_0x96d1('0x3e')]['describe']()[_0x96d1('0x23')](respondWithResult(_0x1cbd18,null))['catch'](handleError(_0x1cbd18,null));};
\ No newline at end of file
+var _0x4351=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','params','fields','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis'];(function(_0x4aecd9,_0x54c49d){var _0x4089dc=function(_0x3a7a85){while(--_0x3a7a85){_0x4aecd9['push'](_0x4aecd9['shift']());}};_0x4089dc(++_0x54c49d);}(_0x4351,0x1b5));var _0x1435=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4351[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x1435('0x0'));var rimraf=require(_0x1435('0x1'));var zipdir=require(_0x1435('0x2'));var jsonpatch=require(_0x1435('0x3'));var rp=require(_0x1435('0x4'));var moment=require(_0x1435('0x5'));var BPromise=require(_0x1435('0x6'));var Mustache=require(_0x1435('0x7'));var util=require(_0x1435('0x8'));var path=require(_0x1435('0x9'));var sox=require(_0x1435('0xa'));var csv=require(_0x1435('0xb'));var ejs=require(_0x1435('0xc'));var fs=require('fs');var fs_extra=require(_0x1435('0xd'));var _=require(_0x1435('0xe'));var squel=require('squel');var crypto=require(_0x1435('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1435('0xb'));var querystring=require(_0x1435('0x10'));var Papa=require(_0x1435('0x11'));var Redis=require(_0x1435('0x12'));var authService=require(_0x1435('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1435('0x14'));var hardwareService=require(_0x1435('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x1435('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1435('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1632ac,_0x5137c0){_0x5137c0=_0x5137c0||0xcc;return function(_0x47daf0){if(_0x47daf0){return _0x1632ac['sendStatus'](_0x5137c0);}return _0x1632ac[_0x1435('0x18')](_0x5137c0)[_0x1435('0x19')]();};}function respondWithResult(_0x243669,_0x4a80bc){_0x4a80bc=_0x4a80bc||0xc8;return function(_0x4a52ba){if(_0x4a52ba){return _0x243669[_0x1435('0x18')](_0x4a80bc)['json'](_0x4a52ba);}};}function respondWithFilteredResult(_0x39405c,_0x3f0b08){return function(_0x1f5fc3){if(_0x1f5fc3){var _0x202744=typeof _0x3f0b08[_0x1435('0x1a')]===_0x1435('0x1b')&&typeof _0x3f0b08[_0x1435('0x1c')]===_0x1435('0x1b');var _0x2c1a6b=_0x1f5fc3[_0x1435('0x1d')];var _0x430367=_0x202744?0x0:_0x3f0b08[_0x1435('0x1a')];var _0x68f503=_0x202744?_0x1f5fc3[_0x1435('0x1d')]:_0x3f0b08[_0x1435('0x1a')]+_0x3f0b08['limit'];var _0x26da28;if(_0x68f503>=_0x2c1a6b){_0x68f503=_0x2c1a6b;_0x26da28=0xc8;}else{_0x26da28=0xce;}_0x39405c[_0x1435('0x18')](_0x26da28);return _0x39405c['set'](_0x1435('0x1e'),_0x430367+'-'+_0x68f503+'/'+_0x2c1a6b)['json'](_0x1f5fc3);}return null;};}function patchUpdates(_0x15d7c0){return function(_0x2a72aa){try{jsonpatch[_0x1435('0x1f')](_0x2a72aa,_0x15d7c0,!![]);}catch(_0x28bc0a){return BPromise[_0x1435('0x20')](_0x28bc0a);}return _0x2a72aa[_0x1435('0x21')]();};}function saveUpdates(_0x543209,_0x17ed76){return function(_0x437f61){if(_0x437f61){return _0x437f61[_0x1435('0x22')](_0x543209)[_0x1435('0x23')](function(_0x57a94f){return _0x57a94f;});}return null;};}function removeEntity(_0x1b6259,_0x302831){return function(_0xab77fa){if(_0xab77fa){return _0xab77fa[_0x1435('0x24')]()[_0x1435('0x23')](function(){_0x1b6259[_0x1435('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x523792,_0x22241f){return function(_0x2b4828){if(!_0x2b4828){_0x523792[_0x1435('0x25')](0x194);}return _0x2b4828;};}function handleError(_0x4f86f0,_0x42599d){_0x42599d=_0x42599d||0x1f4;return function(_0x25cf29){logger[_0x1435('0x26')](_0x25cf29[_0x1435('0x27')]);if(_0x25cf29[_0x1435('0x28')]){delete _0x25cf29['name'];}_0x4f86f0[_0x1435('0x18')](_0x42599d)[_0x1435('0x29')](_0x25cf29);};}exports[_0x1435('0x2a')]=function(_0x453d68,_0x1c3b7e){var _0x108c25={},_0x2e0e72={},_0x57a02f={'count':0x0,'rows':[]};var _0x31ab10=_[_0x1435('0x2b')](db[_0x1435('0x2c')][_0x1435('0x2d')],function(_0x297edf){return{'name':_0x297edf['fieldName'],'type':_0x297edf[_0x1435('0x2e')][_0x1435('0x2f')]};});_0x2e0e72[_0x1435('0x30')]=_[_0x1435('0x2b')](_0x31ab10,'name');_0x2e0e72[_0x1435('0x31')]=_[_0x1435('0x32')](_0x453d68['query']);_0x2e0e72[_0x1435('0x33')]=_['intersection'](_0x2e0e72[_0x1435('0x30')],_0x2e0e72[_0x1435('0x31')]);_0x108c25['attributes']=_[_0x1435('0x34')](_0x2e0e72[_0x1435('0x30')],qs['fields'](_0x453d68['query']['fields']));_0x108c25[_0x1435('0x35')]=_0x108c25['attributes'][_0x1435('0x36')]?_0x108c25['attributes']:_0x2e0e72[_0x1435('0x30')];if(!_0x453d68['query'][_0x1435('0x37')](_0x1435('0x38'))){_0x108c25[_0x1435('0x1c')]=qs[_0x1435('0x1c')](_0x453d68[_0x1435('0x31')][_0x1435('0x1c')]);_0x108c25['offset']=qs[_0x1435('0x1a')](_0x453d68[_0x1435('0x31')][_0x1435('0x1a')]);}_0x108c25[_0x1435('0x39')]=qs[_0x1435('0x3a')](_0x453d68['query'][_0x1435('0x3a')]);_0x108c25['where']=qs[_0x1435('0x33')](_[_0x1435('0x3b')](_0x453d68['query'],_0x2e0e72[_0x1435('0x33')]),_0x31ab10);if(_0x453d68[_0x1435('0x31')][_0x1435('0x3c')]){_0x108c25[_0x1435('0x3d')]=_[_0x1435('0x3e')](_0x108c25[_0x1435('0x3d')],{'$or':_[_0x1435('0x2b')](_0x31ab10,function(_0x176dbd){if(_0x176dbd[_0x1435('0x2e')]!==_0x1435('0x3f')){var _0x3ecac4={};_0x3ecac4[_0x176dbd[_0x1435('0x28')]]={'$like':'%'+_0x453d68['query'][_0x1435('0x3c')]+'%'};return _0x3ecac4;}})});}_0x108c25=_['merge']({},_0x108c25,_0x453d68[_0x1435('0x40')]);var _0x5b24ab={'where':_0x108c25[_0x1435('0x3d')]};return db['ChatQueueReport'][_0x1435('0x1d')](_0x5b24ab)['then'](function(_0x36bc74){_0x57a02f[_0x1435('0x1d')]=_0x36bc74;if(_0x453d68[_0x1435('0x31')]['includeAll']){_0x108c25[_0x1435('0x41')]=[{'all':!![]}];}return db[_0x1435('0x2c')][_0x1435('0x42')](_0x108c25);})['then'](function(_0x1d6417){_0x57a02f[_0x1435('0x43')]=_0x1d6417;return _0x57a02f;})['then'](respondWithFilteredResult(_0x1c3b7e,_0x108c25))['catch'](handleError(_0x1c3b7e,null));};exports[_0x1435('0x44')]=function(_0x40e9eb,_0x2dd1f5){var _0x5986f8={'raw':!![],'where':{'id':_0x40e9eb[_0x1435('0x45')]['id']}},_0x4e5d0a={};_0x4e5d0a['model']=_[_0x1435('0x32')](db['ChatQueueReport'][_0x1435('0x2d')]);_0x4e5d0a['query']=_[_0x1435('0x32')](_0x40e9eb['query']);_0x4e5d0a[_0x1435('0x33')]=_['intersection'](_0x4e5d0a[_0x1435('0x30')],_0x4e5d0a[_0x1435('0x31')]);_0x5986f8['attributes']=_[_0x1435('0x34')](_0x4e5d0a['model'],qs[_0x1435('0x46')](_0x40e9eb[_0x1435('0x31')][_0x1435('0x46')]));_0x5986f8['attributes']=_0x5986f8[_0x1435('0x35')][_0x1435('0x36')]?_0x5986f8['attributes']:_0x4e5d0a[_0x1435('0x30')];if(_0x40e9eb[_0x1435('0x31')]['includeAll']){_0x5986f8[_0x1435('0x41')]=[{'all':!![]}];}_0x5986f8=_[_0x1435('0x3e')]({},_0x5986f8,_0x40e9eb['options']);return db[_0x1435('0x2c')][_0x1435('0x47')](_0x5986f8)['then'](handleEntityNotFound(_0x2dd1f5,null))[_0x1435('0x23')](respondWithResult(_0x2dd1f5,null))[_0x1435('0x48')](handleError(_0x2dd1f5,null));};exports[_0x1435('0x49')]=function(_0x4b254e,_0x57b5d4){return db[_0x1435('0x2c')]['create'](_0x4b254e[_0x1435('0x4a')],{})['then'](respondWithResult(_0x57b5d4,0xc9))[_0x1435('0x48')](handleError(_0x57b5d4,null));};exports[_0x1435('0x22')]=function(_0x1f8899,_0x148862){if(_0x1f8899[_0x1435('0x4a')]['id']){delete _0x1f8899[_0x1435('0x4a')]['id'];}return db[_0x1435('0x2c')]['find']({'where':{'id':_0x1f8899[_0x1435('0x45')]['id']}})[_0x1435('0x23')](handleEntityNotFound(_0x148862,null))[_0x1435('0x23')](saveUpdates(_0x1f8899['body'],null))[_0x1435('0x23')](respondWithResult(_0x148862,null))[_0x1435('0x48')](handleError(_0x148862,null));};exports[_0x1435('0x24')]=function(_0x24c5d0,_0x118c06){return db[_0x1435('0x2c')][_0x1435('0x47')]({'where':{'id':_0x24c5d0[_0x1435('0x45')]['id']}})['then'](handleEntityNotFound(_0x118c06,null))[_0x1435('0x23')](removeEntity(_0x118c06,null))[_0x1435('0x48')](handleError(_0x118c06,null));};exports[_0x1435('0x4b')]=function(_0x4244e1,_0x5953ce){return db['ChatQueueReport'][_0x1435('0x4b')]()[_0x1435('0x23')](respondWithResult(_0x5953ce,null))[_0x1435('0x48')](handleError(_0x5953ce,null));};
\ No newline at end of file
index 68908d2..9126ef7 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(_0x236e41,_0x199cef){var _0x29eab1=function(_0xd1b4f7){while(--_0xd1b4f7){_0x236e41['push'](_0x236e41['shift']());}};_0x29eab1(++_0x199cef);}(_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'));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 _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0x309e28,_0x5824b3){var _0x550306=function(_0x19da3e){while(--_0x19da3e){_0x309e28['push'](_0x309e28['shift']());}};_0x550306(++_0x5824b3);}(_0x757a,0xde));var _0xa757=function(_0x2d2b29,_0x53e623){_0x2d2b29=_0x2d2b29-0x0;var _0x4fff94=_0x757a[_0x2d2b29];return _0x4fff94;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 9cecf82..156481d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2922=['error','code','message','info','result','catch','CreateChatQueueReport','ChatQueueReport','body','options','raw','UpdateChatQueueReport','update','where','limit','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x4444e,_0x164336){var _0x4311c7=function(_0x3be41e){while(--_0x3be41e){_0x4444e['push'](_0x4444e['shift']());}};_0x4311c7(++_0x164336);}(_0x2922,0x107));var _0x2292=function(_0x2d9dbf,_0x3944b0){_0x2d9dbf=_0x2d9dbf-0x0;var _0xa1ac71=_0x2922[_0x2d9dbf];return _0xa1ac71;};'use strict';var _=require(_0x2292('0x0'));var util=require('util');var moment=require(_0x2292('0x1'));var BPromise=require(_0x2292('0x2'));var rs=require(_0x2292('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2292('0x4'))['db'];var utils=require(_0x2292('0x5'));var logger=require('../../config/logger')(_0x2292('0x6'));var config=require(_0x2292('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2292('0x8')][_0x2292('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e5d19,_0x31c779,_0x2b04ec){return new BPromise(function(_0x1ae9de,_0x50c0ad){return client[_0x2292('0xa')](_0x3e5d19,_0x2b04ec)[_0x2292('0xb')](function(_0xc44607){logger['info'](_0x2292('0xc'),_0x31c779,'request\x20sent');logger[_0x2292('0xd')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x31c779,_0x2292('0xe'),JSON[_0x2292('0xf')](_0xc44607));if(_0xc44607[_0x2292('0x10')]){if(_0xc44607[_0x2292('0x10')][_0x2292('0x11')]===0x1f4){logger[_0x2292('0x10')](_0x2292('0xc'),_0x31c779,_0xc44607['error'][_0x2292('0x12')]);return _0x50c0ad(_0xc44607['error'][_0x2292('0x12')]);}logger[_0x2292('0x10')](_0x2292('0xc'),_0x31c779,_0xc44607[_0x2292('0x10')][_0x2292('0x12')]);return _0x1ae9de(_0xc44607[_0x2292('0x10')][_0x2292('0x12')]);}else{logger[_0x2292('0x13')]('ChatQueueReport,\x20%s,\x20%s',_0x31c779,'request\x20sent');_0x1ae9de(_0xc44607[_0x2292('0x14')][_0x2292('0x12')]);}})[_0x2292('0x15')](function(_0x549b5a){logger[_0x2292('0x10')](_0x2292('0xc'),_0x31c779,_0x549b5a);_0x50c0ad(_0x549b5a);});});}exports[_0x2292('0x16')]=function(_0x49fe4e){var _0x29a8f2=this;return new Promise(function(_0x6d46b1,_0x2b9b82){return db[_0x2292('0x17')]['create'](_0x49fe4e[_0x2292('0x18')],{'raw':_0x49fe4e[_0x2292('0x19')]?_0x49fe4e[_0x2292('0x19')][_0x2292('0x1a')]===undefined?!![]:![]:!![]})[_0x2292('0xb')](function(_0x1defe2){logger['info'](_0x2292('0x16'),_0x49fe4e);logger[_0x2292('0xd')]('CreateChatQueueReport',_0x49fe4e,JSON[_0x2292('0xf')](_0x1defe2));_0x6d46b1(_0x1defe2);})['catch'](function(_0x36cd0c){logger[_0x2292('0x10')](_0x2292('0x16'),_0x36cd0c[_0x2292('0x12')],_0x49fe4e);_0x2b9b82(_0x29a8f2['error'](0x1f4,_0x36cd0c[_0x2292('0x12')]));});});};exports[_0x2292('0x1b')]=function(_0x4d7095){var _0x53fd96=this;return new Promise(function(_0x1c31f3,_0x35dfaf){return db[_0x2292('0x17')][_0x2292('0x1c')](_0x4d7095['body'],{'raw':_0x4d7095['options']?_0x4d7095[_0x2292('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d7095[_0x2292('0x19')]?_0x4d7095[_0x2292('0x19')][_0x2292('0x1d')]||null:null,'attributes':_0x4d7095[_0x2292('0x19')]?_0x4d7095[_0x2292('0x19')]['attributes']||null:null,'limit':_0x4d7095[_0x2292('0x19')]?_0x4d7095[_0x2292('0x19')][_0x2292('0x1e')]||null:null})['then'](function(_0x1e9cfd){logger[_0x2292('0x13')](_0x2292('0x1b'),_0x4d7095);logger[_0x2292('0xd')](_0x2292('0x1b'),_0x4d7095,JSON[_0x2292('0xf')](_0x1e9cfd));_0x1c31f3(_0x1e9cfd);})['catch'](function(_0x2c4823){logger['error']('UpdateChatQueueReport',_0x2c4823[_0x2292('0x12')],_0x4d7095);_0x35dfaf(_0x53fd96['error'](0x1f4,_0x2c4823[_0x2292('0x12')]));});});};
\ No newline at end of file
+var _0x6313=['limit','util','../../mysqldb','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','ChatQueueReport,\x20%s,\x20%s','message','result','catch','CreateChatQueueReport','ChatQueueReport','body','options','raw','debug','stringify','UpdateChatQueueReport','update','where','attributes'];(function(_0x219c7d,_0x4b3506){var _0x4459aa=function(_0x3e7121){while(--_0x3e7121){_0x219c7d['push'](_0x219c7d['shift']());}};_0x4459aa(++_0x4b3506);}(_0x6313,0x135));var _0x3631=function(_0x521378,_0x2f8004){_0x521378=_0x521378-0x0;var _0x4b2fc4=_0x6313[_0x521378];return _0x4b2fc4;};'use strict';var _=require('lodash');var util=require(_0x3631('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3631('0x1'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3631('0x2'));var config=require(_0x3631('0x3'));var jayson=require(_0x3631('0x4'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xccc881,_0x49211e,_0x26000d){return new BPromise(function(_0x547fc8,_0x350a0f){return client[_0x3631('0x5')](_0xccc881,_0x26000d)[_0x3631('0x6')](function(_0x2545df){logger[_0x3631('0x7')]('ChatQueueReport,\x20%s,\x20%s',_0x49211e,_0x3631('0x8'));logger['debug'](_0x3631('0x9'),_0x49211e,_0x3631('0x8'),JSON['stringify'](_0x2545df));if(_0x2545df['error']){if(_0x2545df[_0x3631('0xa')][_0x3631('0xb')]===0x1f4){logger['error'](_0x3631('0xc'),_0x49211e,_0x2545df[_0x3631('0xa')][_0x3631('0xd')]);return _0x350a0f(_0x2545df[_0x3631('0xa')][_0x3631('0xd')]);}logger['error'](_0x3631('0xc'),_0x49211e,_0x2545df['error'][_0x3631('0xd')]);return _0x547fc8(_0x2545df['error'][_0x3631('0xd')]);}else{logger[_0x3631('0x7')](_0x3631('0xc'),_0x49211e,_0x3631('0x8'));_0x547fc8(_0x2545df[_0x3631('0xe')][_0x3631('0xd')]);}})[_0x3631('0xf')](function(_0x4a8970){logger[_0x3631('0xa')](_0x3631('0xc'),_0x49211e,_0x4a8970);_0x350a0f(_0x4a8970);});});}exports[_0x3631('0x10')]=function(_0x3f8713){var _0x81cfc5=this;return new Promise(function(_0x31585d,_0x240ca9){return db[_0x3631('0x11')]['create'](_0x3f8713[_0x3631('0x12')],{'raw':_0x3f8713[_0x3631('0x13')]?_0x3f8713[_0x3631('0x13')][_0x3631('0x14')]===undefined?!![]:![]:!![]})[_0x3631('0x6')](function(_0x366239){logger['info'](_0x3631('0x10'),_0x3f8713);logger[_0x3631('0x15')](_0x3631('0x10'),_0x3f8713,JSON[_0x3631('0x16')](_0x366239));_0x31585d(_0x366239);})[_0x3631('0xf')](function(_0x582c64){logger[_0x3631('0xa')](_0x3631('0x10'),_0x582c64[_0x3631('0xd')],_0x3f8713);_0x240ca9(_0x81cfc5['error'](0x1f4,_0x582c64[_0x3631('0xd')]));});});};exports[_0x3631('0x17')]=function(_0x360f09){var _0x4b93fb=this;return new Promise(function(_0x257ab3,_0x4122bf){return db[_0x3631('0x11')][_0x3631('0x18')](_0x360f09[_0x3631('0x12')],{'raw':_0x360f09[_0x3631('0x13')]?_0x360f09[_0x3631('0x13')][_0x3631('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x360f09[_0x3631('0x13')]?_0x360f09['options'][_0x3631('0x19')]||null:null,'attributes':_0x360f09['options']?_0x360f09[_0x3631('0x13')][_0x3631('0x1a')]||null:null,'limit':_0x360f09[_0x3631('0x13')]?_0x360f09[_0x3631('0x13')][_0x3631('0x1b')]||null:null})[_0x3631('0x6')](function(_0xd9f26a){logger['info']('UpdateChatQueueReport',_0x360f09);logger[_0x3631('0x15')](_0x3631('0x17'),_0x360f09,JSON['stringify'](_0xd9f26a));_0x257ab3(_0xd9f26a);})[_0x3631('0xf')](function(_0x33bb98){logger['error']('UpdateChatQueueReport',_0x33bb98['message'],_0x360f09);_0x4122bf(_0x4b93fb[_0x3631('0xa')](0x1f4,_0x33bb98[_0x3631('0xd')]));});});};
\ No newline at end of file
index 3af5276..8c1799a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88a2=['isAuthenticated','/describe','describe','post','create','/:id','update','delete','destroy','util','path','express','Router','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get'];(function(_0x306094,_0x3b7094){var _0x5e7ce9=function(_0x317d4a){while(--_0x317d4a){_0x306094['push'](_0x306094['shift']());}};_0x5e7ce9(++_0x3b7094);}(_0x88a2,0x12a));var _0x288a=function(_0x773434,_0x1b3cdf){_0x773434=_0x773434-0x0;var _0xc0fb94=_0x88a2[_0x773434];return _0xc0fb94;};'use strict';var multer=require('multer');var util=require(_0x288a('0x0'));var path=require(_0x288a('0x1'));var timeout=require('connect-timeout');var express=require(_0x288a('0x2'));var router=express[_0x288a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x288a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x288a('0x5'));var controller=require(_0x288a('0x6'));router[_0x288a('0x7')]('/',auth[_0x288a('0x8')](),controller['index']);router[_0x288a('0x7')](_0x288a('0x9'),auth[_0x288a('0x8')](),controller[_0x288a('0xa')]);router[_0x288a('0x7')]('/:id',auth[_0x288a('0x8')](),controller['show']);router[_0x288a('0xb')]('/',auth['isAuthenticated'](),controller[_0x288a('0xc')]);router['put'](_0x288a('0xd'),auth[_0x288a('0x8')](),controller[_0x288a('0xe')]);router[_0x288a('0xf')](_0x288a('0xd'),auth[_0x288a('0x8')](),controller[_0x288a('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x613b=['destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete'];(function(_0x5d90b8,_0x528b3a){var _0x5712b3=function(_0x478049){while(--_0x478049){_0x5d90b8['push'](_0x5d90b8['shift']());}};_0x5712b3(++_0x528b3a);}(_0x613b,0x1b9));var _0xb613=function(_0x1fd69c,_0x1b925b){_0x1fd69c=_0x1fd69c-0x0;var _0x421119=_0x613b[_0x1fd69c];return _0x421119;};'use strict';var multer=require(_0xb613('0x0'));var util=require(_0xb613('0x1'));var path=require(_0xb613('0x2'));var timeout=require(_0xb613('0x3'));var express=require('express');var router=express[_0xb613('0x4')]();var fs_extra=require(_0xb613('0x5'));var auth=require(_0xb613('0x6'));var interaction=require(_0xb613('0x7'));var config=require(_0xb613('0x8'));var controller=require(_0xb613('0x9'));router[_0xb613('0xa')]('/',auth[_0xb613('0xb')](),controller[_0xb613('0xc')]);router[_0xb613('0xa')](_0xb613('0xd'),auth[_0xb613('0xb')](),controller[_0xb613('0xe')]);router['get'](_0xb613('0xf'),auth[_0xb613('0xb')](),controller[_0xb613('0x10')]);router['post']('/',auth[_0xb613('0xb')](),controller[_0xb613('0x11')]);router[_0xb613('0x12')](_0xb613('0xf'),auth[_0xb613('0xb')](),controller[_0xb613('0x13')]);router[_0xb613('0x14')](_0xb613('0xf'),auth[_0xb613('0xb')](),controller[_0xb613('0x15')]);module['exports']=router;
\ No newline at end of file
index 3d5b2dc..7681e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0xb43b,0x1b2));var _0xbb43=function(_0x80e8df,_0x14c834){_0x80e8df=_0x80e8df-0x0;var _0x310dd6=_0xb43b[_0x80e8df];return _0x310dd6;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x4aa25e,_0x58c68b){var _0x36dea5=function(_0xcb3ffe){while(--_0xcb3ffe){_0x4aa25e['push'](_0x4aa25e['shift']());}};_0x36dea5(++_0x58c68b);}(_0x4b84,0x1cc));var _0x44b8=function(_0x23f8c8,_0xb536b9){_0x23f8c8=_0x23f8c8-0x0;var _0x3dc718=_0x4b84[_0x23f8c8];return _0x3dc718;};'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
index 639e57d..ffd157b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec5d=['keys','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name','status','send','index','map','ChatTransferReport','rawAttributes','key','model','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xec5d,0x9b));var _0xdec5=function(_0x19a680,_0x2923c6){_0x19a680=_0x19a680-0x0;var _0x29387c=_0xec5d[_0x19a680];return _0x29387c;};'use strict';var emlformat=require(_0xdec5('0x0'));var rimraf=require(_0xdec5('0x1'));var zipdir=require(_0xdec5('0x2'));var jsonpatch=require(_0xdec5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdec5('0x4'));var Mustache=require(_0xdec5('0x5'));var util=require(_0xdec5('0x6'));var path=require(_0xdec5('0x7'));var sox=require(_0xdec5('0x8'));var csv=require(_0xdec5('0x9'));var ejs=require(_0xdec5('0xa'));var fs=require('fs');var fs_extra=require(_0xdec5('0xb'));var _=require(_0xdec5('0xc'));var squel=require(_0xdec5('0xd'));var crypto=require('crypto');var jsforce=require(_0xdec5('0xe'));var deskjs=require(_0xdec5('0xf'));var toCsv=require('to-csv');var querystring=require(_0xdec5('0x10'));var Papa=require('papaparse');var Redis=require(_0xdec5('0x11'));var authService=require(_0xdec5('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdec5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdec5('0x14'))(_0xdec5('0x15'));var utils=require(_0xdec5('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdec5('0x17'))['db'];function respondWithStatusCode(_0x5b6870,_0x425d97){_0x425d97=_0x425d97||0xcc;return function(_0x237793){if(_0x237793){return _0x5b6870[_0xdec5('0x18')](_0x425d97);}return _0x5b6870['status'](_0x425d97)[_0xdec5('0x19')]();};}function respondWithResult(_0x4b248a,_0x2a12dc){_0x2a12dc=_0x2a12dc||0xc8;return function(_0x51ed95){if(_0x51ed95){return _0x4b248a['status'](_0x2a12dc)[_0xdec5('0x1a')](_0x51ed95);}};}function respondWithFilteredResult(_0x4d4b3c,_0x50f466){return function(_0x58304e){if(_0x58304e){var _0x292753=typeof _0x50f466[_0xdec5('0x1b')]===_0xdec5('0x1c')&&typeof _0x50f466[_0xdec5('0x1d')]===_0xdec5('0x1c');var _0x3bf1c6=_0x58304e[_0xdec5('0x1e')];var _0x2e6d7f=_0x292753?0x0:_0x50f466[_0xdec5('0x1b')];var _0x10ffcf=_0x292753?_0x58304e[_0xdec5('0x1e')]:_0x50f466[_0xdec5('0x1b')]+_0x50f466['limit'];var _0x3d028d;if(_0x10ffcf>=_0x3bf1c6){_0x10ffcf=_0x3bf1c6;_0x3d028d=0xc8;}else{_0x3d028d=0xce;}_0x4d4b3c['status'](_0x3d028d);return _0x4d4b3c[_0xdec5('0x1f')](_0xdec5('0x20'),_0x2e6d7f+'-'+_0x10ffcf+'/'+_0x3bf1c6)[_0xdec5('0x1a')](_0x58304e);}return null;};}function patchUpdates(_0x2b1d1a){return function(_0x53f1ab){try{jsonpatch['apply'](_0x53f1ab,_0x2b1d1a,!![]);}catch(_0x4f5f5e){return BPromise[_0xdec5('0x21')](_0x4f5f5e);}return _0x53f1ab['save']();};}function saveUpdates(_0x32e6f4,_0x5df667){return function(_0x39ab94){if(_0x39ab94){return _0x39ab94[_0xdec5('0x22')](_0x32e6f4)[_0xdec5('0x23')](function(_0x114293){return _0x114293;});}return null;};}function removeEntity(_0x3a5af0,_0x334980){return function(_0x103251){if(_0x103251){return _0x103251[_0xdec5('0x24')]()[_0xdec5('0x23')](function(){_0x3a5af0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1da465,_0x2620ce){return function(_0x4d0861){if(!_0x4d0861){_0x1da465['sendStatus'](0x194);}return _0x4d0861;};}function handleError(_0x328b6d,_0x4983ff){_0x4983ff=_0x4983ff||0x1f4;return function(_0x3f1f88){logger[_0xdec5('0x25')](_0x3f1f88[_0xdec5('0x26')]);if(_0x3f1f88[_0xdec5('0x27')]){delete _0x3f1f88[_0xdec5('0x27')];}_0x328b6d[_0xdec5('0x28')](_0x4983ff)[_0xdec5('0x29')](_0x3f1f88);};}exports[_0xdec5('0x2a')]=function(_0x1748a3,_0x403d35){var _0x40a8c0={},_0x2b69a2={},_0x58495e={'count':0x0,'rows':[]};var _0xa90b65=_[_0xdec5('0x2b')](db[_0xdec5('0x2c')][_0xdec5('0x2d')],function(_0x4b9be5){return{'name':_0x4b9be5['fieldName'],'type':_0x4b9be5['type'][_0xdec5('0x2e')]};});_0x2b69a2[_0xdec5('0x2f')]=_[_0xdec5('0x2b')](_0xa90b65,_0xdec5('0x27'));_0x2b69a2[_0xdec5('0x30')]=_['keys'](_0x1748a3[_0xdec5('0x30')]);_0x2b69a2['filters']=_[_0xdec5('0x31')](_0x2b69a2[_0xdec5('0x2f')],_0x2b69a2['query']);_0x40a8c0[_0xdec5('0x32')]=_['intersection'](_0x2b69a2[_0xdec5('0x2f')],qs[_0xdec5('0x33')](_0x1748a3[_0xdec5('0x30')][_0xdec5('0x33')]));_0x40a8c0[_0xdec5('0x32')]=_0x40a8c0['attributes']['length']?_0x40a8c0[_0xdec5('0x32')]:_0x2b69a2[_0xdec5('0x2f')];if(!_0x1748a3[_0xdec5('0x30')][_0xdec5('0x34')]('nolimit')){_0x40a8c0['limit']=qs[_0xdec5('0x1d')](_0x1748a3[_0xdec5('0x30')][_0xdec5('0x1d')]);_0x40a8c0[_0xdec5('0x1b')]=qs[_0xdec5('0x1b')](_0x1748a3[_0xdec5('0x30')]['offset']);}_0x40a8c0[_0xdec5('0x35')]=qs[_0xdec5('0x36')](_0x1748a3[_0xdec5('0x30')]['sort']);_0x40a8c0[_0xdec5('0x37')]=qs[_0xdec5('0x38')](_['pick'](_0x1748a3[_0xdec5('0x30')],_0x2b69a2[_0xdec5('0x38')]),_0xa90b65);if(_0x1748a3['query'][_0xdec5('0x39')]){_0x40a8c0[_0xdec5('0x37')]=_[_0xdec5('0x3a')](_0x40a8c0[_0xdec5('0x37')],{'$or':_['map'](_0xa90b65,function(_0x6d4e25){if(_0x6d4e25[_0xdec5('0x3b')]!==_0xdec5('0x3c')){var _0x1a1b7d={};_0x1a1b7d[_0x6d4e25[_0xdec5('0x27')]]={'$like':'%'+_0x1748a3[_0xdec5('0x30')][_0xdec5('0x39')]+'%'};return _0x1a1b7d;}})});}_0x40a8c0=_[_0xdec5('0x3a')]({},_0x40a8c0,_0x1748a3[_0xdec5('0x3d')]);var _0x3be677={'where':_0x40a8c0[_0xdec5('0x37')]};return db[_0xdec5('0x2c')][_0xdec5('0x1e')](_0x3be677)['then'](function(_0x52fc84){_0x58495e[_0xdec5('0x1e')]=_0x52fc84;if(_0x1748a3[_0xdec5('0x30')]['includeAll']){_0x40a8c0[_0xdec5('0x3e')]=[{'all':!![]}];}return db['ChatTransferReport'][_0xdec5('0x3f')](_0x40a8c0);})[_0xdec5('0x23')](function(_0x5411e6){_0x58495e[_0xdec5('0x40')]=_0x5411e6;return _0x58495e;})['then'](respondWithFilteredResult(_0x403d35,_0x40a8c0))[_0xdec5('0x41')](handleError(_0x403d35,null));};exports[_0xdec5('0x42')]=function(_0x363294,_0x46f250){var _0x269297={'raw':!![],'where':{'id':_0x363294['params']['id']}},_0x57b540={};_0x57b540['model']=_[_0xdec5('0x43')](db[_0xdec5('0x2c')][_0xdec5('0x2d')]);_0x57b540[_0xdec5('0x30')]=_[_0xdec5('0x43')](_0x363294['query']);_0x57b540['filters']=_[_0xdec5('0x31')](_0x57b540[_0xdec5('0x2f')],_0x57b540[_0xdec5('0x30')]);_0x269297[_0xdec5('0x32')]=_[_0xdec5('0x31')](_0x57b540[_0xdec5('0x2f')],qs[_0xdec5('0x33')](_0x363294['query'][_0xdec5('0x33')]));_0x269297['attributes']=_0x269297[_0xdec5('0x32')][_0xdec5('0x44')]?_0x269297[_0xdec5('0x32')]:_0x57b540[_0xdec5('0x2f')];if(_0x363294[_0xdec5('0x30')]['includeAll']){_0x269297[_0xdec5('0x3e')]=[{'all':!![]}];}_0x269297=_[_0xdec5('0x3a')]({},_0x269297,_0x363294[_0xdec5('0x3d')]);return db['ChatTransferReport'][_0xdec5('0x45')](_0x269297)[_0xdec5('0x23')](handleEntityNotFound(_0x46f250,null))[_0xdec5('0x23')](respondWithResult(_0x46f250,null))['catch'](handleError(_0x46f250,null));};exports[_0xdec5('0x46')]=function(_0x2ce666,_0x225493){return db[_0xdec5('0x2c')][_0xdec5('0x46')](_0x2ce666[_0xdec5('0x47')],{})[_0xdec5('0x23')](respondWithResult(_0x225493,0xc9))[_0xdec5('0x41')](handleError(_0x225493,null));};exports[_0xdec5('0x22')]=function(_0x3910c0,_0x1f8c20){if(_0x3910c0['body']['id']){delete _0x3910c0[_0xdec5('0x47')]['id'];}return db['ChatTransferReport'][_0xdec5('0x45')]({'where':{'id':_0x3910c0[_0xdec5('0x48')]['id']}})[_0xdec5('0x23')](handleEntityNotFound(_0x1f8c20,null))[_0xdec5('0x23')](saveUpdates(_0x3910c0['body'],null))[_0xdec5('0x23')](respondWithResult(_0x1f8c20,null))[_0xdec5('0x41')](handleError(_0x1f8c20,null));};exports['destroy']=function(_0x51fed5,_0x374c2d){return db[_0xdec5('0x2c')][_0xdec5('0x45')]({'where':{'id':_0x51fed5['params']['id']}})[_0xdec5('0x23')](handleEntityNotFound(_0x374c2d,null))[_0xdec5('0x23')](removeEntity(_0x374c2d,null))[_0xdec5('0x41')](handleError(_0x374c2d,null));};exports[_0xdec5('0x49')]=function(_0x5ca4ae,_0x3050d0){return db[_0xdec5('0x2c')][_0xdec5('0x49')]()[_0xdec5('0x23')](respondWithResult(_0x3050d0,null))[_0xdec5('0x41')](handleError(_0x3050d0,null));};
\ No newline at end of file
+var _0x3cf5=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','ChatTransferReport','length','include','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','update','then','error','name','send','index'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3cf5,0xa6));var _0x53cf=function(_0x319fc1,_0x29179b){_0x319fc1=_0x319fc1-0x0;var _0xb768af=_0x3cf5[_0x319fc1];return _0xb768af;};'use strict';var emlformat=require(_0x53cf('0x0'));var rimraf=require(_0x53cf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x53cf('0x2'));var rp=require(_0x53cf('0x3'));var moment=require(_0x53cf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x53cf('0x5'));var path=require('path');var sox=require(_0x53cf('0x6'));var csv=require(_0x53cf('0x7'));var ejs=require(_0x53cf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x53cf('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x53cf('0xa'));var toCsv=require(_0x53cf('0x7'));var querystring=require(_0x53cf('0xb'));var Papa=require(_0x53cf('0xc'));var Redis=require(_0x53cf('0xd'));var authService=require(_0x53cf('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x53cf('0xf'))(_0x53cf('0x10'));var utils=require(_0x53cf('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x53cf('0x12'));var db=require(_0x53cf('0x13'))['db'];function respondWithStatusCode(_0x33bede,_0xc34a56){_0xc34a56=_0xc34a56||0xcc;return function(_0x3b3b20){if(_0x3b3b20){return _0x33bede[_0x53cf('0x14')](_0xc34a56);}return _0x33bede['status'](_0xc34a56)[_0x53cf('0x15')]();};}function respondWithResult(_0x1623d3,_0x49e73d){_0x49e73d=_0x49e73d||0xc8;return function(_0x943f2e){if(_0x943f2e){return _0x1623d3[_0x53cf('0x16')](_0x49e73d)[_0x53cf('0x17')](_0x943f2e);}};}function respondWithFilteredResult(_0x4ef376,_0x4b79cf){return function(_0x328dcf){if(_0x328dcf){var _0x1c5322=typeof _0x4b79cf[_0x53cf('0x18')]==='undefined'&&typeof _0x4b79cf[_0x53cf('0x19')]==='undefined';var _0x29ecc9=_0x328dcf[_0x53cf('0x1a')];var _0x1878d9=_0x1c5322?0x0:_0x4b79cf[_0x53cf('0x18')];var _0x50d673=_0x1c5322?_0x328dcf[_0x53cf('0x1a')]:_0x4b79cf['offset']+_0x4b79cf[_0x53cf('0x19')];var _0x355dc7;if(_0x50d673>=_0x29ecc9){_0x50d673=_0x29ecc9;_0x355dc7=0xc8;}else{_0x355dc7=0xce;}_0x4ef376[_0x53cf('0x16')](_0x355dc7);return _0x4ef376['set'](_0x53cf('0x1b'),_0x1878d9+'-'+_0x50d673+'/'+_0x29ecc9)['json'](_0x328dcf);}return null;};}function patchUpdates(_0x4897d7){return function(_0x17df3b){try{jsonpatch['apply'](_0x17df3b,_0x4897d7,!![]);}catch(_0x20af67){return BPromise[_0x53cf('0x1c')](_0x20af67);}return _0x17df3b['save']();};}function saveUpdates(_0x2202a8,_0x149546){return function(_0x4c3227){if(_0x4c3227){return _0x4c3227[_0x53cf('0x1d')](_0x2202a8)[_0x53cf('0x1e')](function(_0x279f45){return _0x279f45;});}return null;};}function removeEntity(_0xdc49ce,_0x58f56a){return function(_0x3ee430){if(_0x3ee430){return _0x3ee430['destroy']()[_0x53cf('0x1e')](function(){_0xdc49ce[_0x53cf('0x16')](0xcc)[_0x53cf('0x15')]();});}};}function handleEntityNotFound(_0x3df440,_0x17b536){return function(_0xed826c){if(!_0xed826c){_0x3df440['sendStatus'](0x194);}return _0xed826c;};}function handleError(_0x46199e,_0xde4b6d){_0xde4b6d=_0xde4b6d||0x1f4;return function(_0x397866){logger[_0x53cf('0x1f')](_0x397866['stack']);if(_0x397866['name']){delete _0x397866[_0x53cf('0x20')];}_0x46199e['status'](_0xde4b6d)[_0x53cf('0x21')](_0x397866);};}exports[_0x53cf('0x22')]=function(_0x479d1a,_0x410e98){var _0x46c60e={},_0x3a6fdb={},_0x5586cc={'count':0x0,'rows':[]};var _0x4dec0e=_[_0x53cf('0x23')](db['ChatTransferReport'][_0x53cf('0x24')],function(_0x5c9f25){return{'name':_0x5c9f25[_0x53cf('0x25')],'type':_0x5c9f25[_0x53cf('0x26')][_0x53cf('0x27')]};});_0x3a6fdb[_0x53cf('0x28')]=_[_0x53cf('0x23')](_0x4dec0e,_0x53cf('0x20'));_0x3a6fdb[_0x53cf('0x29')]=_[_0x53cf('0x2a')](_0x479d1a[_0x53cf('0x29')]);_0x3a6fdb[_0x53cf('0x2b')]=_['intersection'](_0x3a6fdb['model'],_0x3a6fdb[_0x53cf('0x29')]);_0x46c60e[_0x53cf('0x2c')]=_[_0x53cf('0x2d')](_0x3a6fdb[_0x53cf('0x28')],qs[_0x53cf('0x2e')](_0x479d1a['query'][_0x53cf('0x2e')]));_0x46c60e[_0x53cf('0x2c')]=_0x46c60e[_0x53cf('0x2c')]['length']?_0x46c60e[_0x53cf('0x2c')]:_0x3a6fdb[_0x53cf('0x28')];if(!_0x479d1a[_0x53cf('0x29')]['hasOwnProperty'](_0x53cf('0x2f'))){_0x46c60e[_0x53cf('0x19')]=qs['limit'](_0x479d1a['query'][_0x53cf('0x19')]);_0x46c60e['offset']=qs[_0x53cf('0x18')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x18')]);}_0x46c60e[_0x53cf('0x30')]=qs[_0x53cf('0x31')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x31')]);_0x46c60e[_0x53cf('0x32')]=qs[_0x53cf('0x2b')](_[_0x53cf('0x33')](_0x479d1a['query'],_0x3a6fdb[_0x53cf('0x2b')]),_0x4dec0e);if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]){_0x46c60e[_0x53cf('0x32')]=_[_0x53cf('0x35')](_0x46c60e['where'],{'$or':_[_0x53cf('0x23')](_0x4dec0e,function(_0x37bea8){if(_0x37bea8[_0x53cf('0x26')]!==_0x53cf('0x36')){var _0x4527ac={};_0x4527ac[_0x37bea8['name']]={'$like':'%'+_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]+'%'};return _0x4527ac;}})});}_0x46c60e=_[_0x53cf('0x35')]({},_0x46c60e,_0x479d1a[_0x53cf('0x37')]);var _0x377a36={'where':_0x46c60e[_0x53cf('0x32')]};return db['ChatTransferReport']['count'](_0x377a36)[_0x53cf('0x1e')](function(_0x1d79dc){_0x5586cc[_0x53cf('0x1a')]=_0x1d79dc;if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x38')]){_0x46c60e['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0x53cf('0x39')](_0x46c60e);})[_0x53cf('0x1e')](function(_0x108a22){_0x5586cc['rows']=_0x108a22;return _0x5586cc;})[_0x53cf('0x1e')](respondWithFilteredResult(_0x410e98,_0x46c60e))[_0x53cf('0x3a')](handleError(_0x410e98,null));};exports[_0x53cf('0x3b')]=function(_0x17cb20,_0x43e588){var _0x27a4df={'raw':!![],'where':{'id':_0x17cb20['params']['id']}},_0x552931={};_0x552931[_0x53cf('0x28')]=_[_0x53cf('0x2a')](db[_0x53cf('0x3c')][_0x53cf('0x24')]);_0x552931[_0x53cf('0x29')]=_['keys'](_0x17cb20[_0x53cf('0x29')]);_0x552931[_0x53cf('0x2b')]=_[_0x53cf('0x2d')](_0x552931['model'],_0x552931['query']);_0x27a4df['attributes']=_['intersection'](_0x552931['model'],qs[_0x53cf('0x2e')](_0x17cb20[_0x53cf('0x29')][_0x53cf('0x2e')]));_0x27a4df[_0x53cf('0x2c')]=_0x27a4df[_0x53cf('0x2c')][_0x53cf('0x3d')]?_0x27a4df['attributes']:_0x552931[_0x53cf('0x28')];if(_0x17cb20[_0x53cf('0x29')][_0x53cf('0x38')]){_0x27a4df[_0x53cf('0x3e')]=[{'all':!![]}];}_0x27a4df=_[_0x53cf('0x35')]({},_0x27a4df,_0x17cb20[_0x53cf('0x37')]);return db[_0x53cf('0x3c')][_0x53cf('0x3f')](_0x27a4df)[_0x53cf('0x1e')](handleEntityNotFound(_0x43e588,null))[_0x53cf('0x1e')](respondWithResult(_0x43e588,null))[_0x53cf('0x3a')](handleError(_0x43e588,null));};exports[_0x53cf('0x40')]=function(_0x367c22,_0x2f7a4d){return db[_0x53cf('0x3c')]['create'](_0x367c22[_0x53cf('0x41')],{})[_0x53cf('0x1e')](respondWithResult(_0x2f7a4d,0xc9))['catch'](handleError(_0x2f7a4d,null));};exports[_0x53cf('0x1d')]=function(_0x2beb72,_0x87e272){if(_0x2beb72[_0x53cf('0x41')]['id']){delete _0x2beb72[_0x53cf('0x41')]['id'];}return db[_0x53cf('0x3c')]['find']({'where':{'id':_0x2beb72[_0x53cf('0x42')]['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x87e272,null))[_0x53cf('0x1e')](saveUpdates(_0x2beb72[_0x53cf('0x41')],null))[_0x53cf('0x1e')](respondWithResult(_0x87e272,null))[_0x53cf('0x3a')](handleError(_0x87e272,null));};exports['destroy']=function(_0x51b661,_0x166a58){return db[_0x53cf('0x3c')][_0x53cf('0x3f')]({'where':{'id':_0x51b661['params']['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x166a58,null))[_0x53cf('0x1e')](removeEntity(_0x166a58,null))[_0x53cf('0x3a')](handleError(_0x166a58,null));};exports['describe']=function(_0x42f826,_0x5c096c){return db[_0x53cf('0x3c')]['describe']()[_0x53cf('0x1e')](respondWithResult(_0x5c096c,null))['catch'](handleError(_0x5c096c,null));};
\ No newline at end of file
index 8ba6415..a38ed22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6f3=['path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','report_chat_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x3c22e0,_0x1dc6ea){var _0x215811=function(_0x1b453c){while(--_0x1b453c){_0x3c22e0['push'](_0x3c22e0['shift']());}};_0x215811(++_0x1dc6ea);}(_0xa6f3,0x1c8));var _0x3a6f=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xa6f3[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0x3a6f('0x0'));var util=require(_0x3a6f('0x1'));var logger=require(_0x3a6f('0x2'))('api');var moment=require(_0x3a6f('0x3'));var BPromise=require(_0x3a6f('0x4'));var rp=require(_0x3a6f('0x5'));var fs=require('fs');var path=require(_0x3a6f('0x6'));var rimraf=require(_0x3a6f('0x7'));var config=require(_0x3a6f('0x8'));var attributes=require(_0x3a6f('0x9'));module[_0x3a6f('0xa')]=function(_0x143095,_0x2d9929){return _0x143095[_0x3a6f('0xb')]('ChatTransferReport',attributes,{'tableName':_0x3a6f('0xc'),'paranoid':![],'indexes':[{'name':_0x3a6f('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0a3=['ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./chatTransferReport.attributes','exports'];(function(_0x4cbf22,_0x2c4b7e){var _0x517c08=function(_0x428735){while(--_0x428735){_0x4cbf22['push'](_0x4cbf22['shift']());}};_0x517c08(++_0x2c4b7e);}(_0xe0a3,0x1bf));var _0x3e0a=function(_0xb66df,_0x4fb5ce){_0xb66df=_0xb66df-0x0;var _0x42a702=_0xe0a3[_0xb66df];return _0x42a702;};'use strict';var _=require(_0x3e0a('0x0'));var util=require(_0x3e0a('0x1'));var logger=require(_0x3e0a('0x2'))(_0x3e0a('0x3'));var moment=require(_0x3e0a('0x4'));var BPromise=require(_0x3e0a('0x5'));var rp=require(_0x3e0a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3e0a('0x7'));module[_0x3e0a('0x8')]=function(_0x373be0,_0x5c7a1f){return _0x373be0['define'](_0x3e0a('0x9'),attributes,{'tableName':_0x3e0a('0xa'),'paranoid':![],'indexes':[{'name':_0x3e0a('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f68380a..975d41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f8f=['error','code','ChatTransferReport,\x20%s,\x20%s','message','info','result','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x43fc7e,_0x3ff175){var _0x100879=function(_0x11cfe5){while(--_0x11cfe5){_0x43fc7e['push'](_0x43fc7e['shift']());}};_0x100879(++_0x3ff175);}(_0x7f8f,0x195));var _0xf7f8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7f8f[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf7f8('0x0'));var util=require('util');var moment=require(_0xf7f8('0x1'));var BPromise=require('bluebird');var rs=require(_0xf7f8('0x2'));var fs=require('fs');var Redis=require(_0xf7f8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf7f8('0x4'));var logger=require(_0xf7f8('0x5'))(_0xf7f8('0x6'));var config=require('../../config/environment');var jayson=require(_0xf7f8('0x7'));var client=jayson[_0xf7f8('0x8')][_0xf7f8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cdadb,_0x86f3ea,_0x4ce44c){return new BPromise(function(_0xe900d7,_0x1ccffe){return client[_0xf7f8('0xa')](_0x2cdadb,_0x4ce44c)[_0xf7f8('0xb')](function(_0xa6349e){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x86f3ea,_0xf7f8('0xc'));logger['debug'](_0xf7f8('0xd'),_0x86f3ea,_0xf7f8('0xc'),JSON[_0xf7f8('0xe')](_0xa6349e));if(_0xa6349e['error']){if(_0xa6349e[_0xf7f8('0xf')][_0xf7f8('0x10')]===0x1f4){logger[_0xf7f8('0xf')](_0xf7f8('0x11'),_0x86f3ea,_0xa6349e[_0xf7f8('0xf')]['message']);return _0x1ccffe(_0xa6349e[_0xf7f8('0xf')][_0xf7f8('0x12')]);}logger[_0xf7f8('0xf')](_0xf7f8('0x11'),_0x86f3ea,_0xa6349e[_0xf7f8('0xf')][_0xf7f8('0x12')]);return _0xe900d7(_0xa6349e[_0xf7f8('0xf')]['message']);}else{logger[_0xf7f8('0x13')](_0xf7f8('0x11'),_0x86f3ea,_0xf7f8('0xc'));_0xe900d7(_0xa6349e[_0xf7f8('0x14')][_0xf7f8('0x12')]);}})['catch'](function(_0x586871){logger[_0xf7f8('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x86f3ea,_0x586871);_0x1ccffe(_0x586871);});});}
\ No newline at end of file
+var _0x92e3=['ChatTransferReport,\x20%s,\x20%s','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','then','info'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x92e3,0x15d));var _0x392e=function(_0x1fe3ff,_0x4ba5b7){_0x1fe3ff=_0x1fe3ff-0x0;var _0x11b4f2=_0x92e3[_0x1fe3ff];return _0x11b4f2;};'use strict';var _=require('lodash');var util=require(_0x392e('0x0'));var moment=require(_0x392e('0x1'));var BPromise=require(_0x392e('0x2'));var rs=require(_0x392e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x392e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x392e('0x5'))('rpc');var config=require(_0x392e('0x6'));var jayson=require(_0x392e('0x7'));var client=jayson['client'][_0x392e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36abc4,_0xb14b69,_0x3b20bb){return new BPromise(function(_0x48c77e,_0x14ca70){return client['request'](_0x36abc4,_0x3b20bb)[_0x392e('0x9')](function(_0x3139a5){logger[_0x392e('0xa')](_0x392e('0xb'),_0xb14b69,'request\x20sent');logger['debug'](_0x392e('0xc'),_0xb14b69,_0x392e('0xd'),JSON[_0x392e('0xe')](_0x3139a5));if(_0x3139a5['error']){if(_0x3139a5[_0x392e('0xf')][_0x392e('0x10')]===0x1f4){logger[_0x392e('0xf')](_0x392e('0xb'),_0xb14b69,_0x3139a5[_0x392e('0xf')][_0x392e('0x11')]);return _0x14ca70(_0x3139a5[_0x392e('0xf')][_0x392e('0x11')]);}logger[_0x392e('0xf')](_0x392e('0xb'),_0xb14b69,_0x3139a5[_0x392e('0xf')][_0x392e('0x11')]);return _0x48c77e(_0x3139a5[_0x392e('0xf')]['message']);}else{logger[_0x392e('0xa')]('ChatTransferReport,\x20%s,\x20%s',_0xb14b69,_0x392e('0xd'));_0x48c77e(_0x3139a5[_0x392e('0x12')][_0x392e('0x11')]);}})[_0x392e('0x13')](function(_0x3b6e11){logger[_0x392e('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0xb14b69,_0x3b6e11);_0x14ca70(_0x3b6e11);});});}
\ No newline at end of file
index 17c54bc..f490ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966a=['index','/describe','describe','/:id','show','create','put','update','destroy','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x966a,0x14c));var _0xa966=function(_0x209787,_0x58616a){_0x209787=_0x209787-0x0;var _0x26d73e=_0x966a[_0x209787];return _0x26d73e;};'use strict';var multer=require(_0xa966('0x0'));var util=require('util');var path=require(_0xa966('0x1'));var timeout=require(_0xa966('0x2'));var express=require(_0xa966('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa966('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa966('0x5'));var controller=require('./chatTransferReport.controller');router[_0xa966('0x6')]('/',auth[_0xa966('0x7')](),controller[_0xa966('0x8')]);router[_0xa966('0x6')](_0xa966('0x9'),auth[_0xa966('0x7')](),controller[_0xa966('0xa')]);router[_0xa966('0x6')](_0xa966('0xb'),auth[_0xa966('0x7')](),controller[_0xa966('0xc')]);router['post']('/',auth[_0xa966('0x7')](),controller[_0xa966('0xd')]);router[_0xa966('0xe')](_0xa966('0xb'),auth[_0xa966('0x7')](),controller[_0xa966('0xf')]);router['delete']('/:id',auth[_0xa966('0x7')](),controller[_0xa966('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x8c17=['create','put','update','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show'];(function(_0x4829dd,_0x50391e){var _0x353a08=function(_0x210fc0){while(--_0x210fc0){_0x4829dd['push'](_0x4829dd['shift']());}};_0x353a08(++_0x50391e);}(_0x8c17,0xd7));var _0x78c1=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x8c17[_0x138adb];return _0x1b27f2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x78c1('0x0'));var timeout=require(_0x78c1('0x1'));var express=require(_0x78c1('0x2'));var router=express[_0x78c1('0x3')]();var fs_extra=require(_0x78c1('0x4'));var auth=require(_0x78c1('0x5'));var interaction=require(_0x78c1('0x6'));var config=require(_0x78c1('0x7'));var controller=require(_0x78c1('0x8'));router[_0x78c1('0x9')]('/',auth['isAuthenticated'](),controller[_0x78c1('0xa')]);router[_0x78c1('0x9')](_0x78c1('0xb'),auth['isAuthenticated'](),controller[_0x78c1('0xc')]);router[_0x78c1('0x9')](_0x78c1('0xd'),auth[_0x78c1('0xe')](),controller[_0x78c1('0xf')]);router['post']('/',auth[_0x78c1('0xe')](),controller[_0x78c1('0x10')]);router[_0x78c1('0x11')](_0x78c1('0xd'),auth[_0x78c1('0xe')](),controller[_0x78c1('0x12')]);router['delete'](_0x78c1('0xd'),auth[_0x78c1('0xe')](),controller[_0x78c1('0x13')]);module[_0x78c1('0x14')]=router;
\ No newline at end of file
index c4c8d2c..99c508c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','#011F6A','#ffffff','INTEGER','ENUM','squared','rounded','We\x20are\x20here!','Chat','Contact\x20us','BOOLEAN','TEXT','Form\x20properly\x20submitted','Type\x20a\x20message','Skip','star','thumb','stringify','input','name','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:','Send','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT'];(function(_0x3515ce,_0x1701cb){var _0x1a2486=function(_0x3bc514){while(--_0x3bc514){_0x3515ce['push'](_0x3515ce['shift']());}};_0x1a2486(++_0x1701cb);}(_0xb58b,0x1f1));var _0xbb58=function(_0x26e6c9,_0x39215e){_0x26e6c9=_0x26e6c9-0x0;var _0x167982=_0xb58b[_0x26e6c9];return _0x167982;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xbb58('0x0'));module[_0xbb58('0x1')]={'name':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xbb58('0x3')},'description':{'type':Sequelize[_0xbb58('0x2')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0x4')},'key':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![],'defaultValue':_0xbb58('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![],'defaultValue':_0xbb58('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![],'defaultValue':_0xbb58('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![],'defaultValue':_0xbb58('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xbb58('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0xbb58('0x2')]},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xbb58('0x8')]('rounded',_0xbb58('0x9')),'defaultValue':_0xbb58('0xa')},'header_online':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0xb')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0xc')},'offline_chat_button':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0xd')},'download_transcript':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xbb58('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xbb58('0xf')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0x11')},'closingMessage':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x12')},'conditionAgreement':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0xbb58('0x8')](_0xbb58('0x13'),_0xbb58('0x14')),'defaultValue':_0xbb58('0x13')},'ratingStarsNumber':{'type':Sequelize[_0xbb58('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xbb58('0xf')],'defaultValue':function(){return JSON[_0xbb58('0x15')]({'items':[{'type':_0xbb58('0x16'),'variable':null,'config':{'placeholder':_0xbb58('0x17'),'type':'text','required':!![]},'props':{'title':_0xbb58('0x17'),'helpText':''}},{'type':'input','props':{'title':_0xbb58('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xbb58('0x4'),'type':_0xbb58('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xbb58('0x18')](_0xbb58('0x19'))?JSON[_0xbb58('0x1a')](this[_0xbb58('0x18')](_0xbb58('0x19'))):{};},'set':function(_0x4e0303){return this[_0xbb58('0x1b')](_0xbb58('0x19'),JSON[_0xbb58('0x15')](_0x4e0303));}},'offlineForm':{'type':Sequelize[_0xbb58('0xf')],'defaultValue':function(){return JSON[_0xbb58('0x15')]({'items':[{'type':_0xbb58('0x16'),'props':{'title':_0xbb58('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xbb58('0x4'),'type':_0xbb58('0x4')},'variable':null},{'type':_0xbb58('0x1c'),'config':{'placeholder':_0xbb58('0x1d')},'props':{'title':_0xbb58('0x1d'),'helpText':_0xbb58('0x1e')}}],'fromKey':0x0});},'get':function(){return this[_0xbb58('0x18')](_0xbb58('0x1f'))?JSON['parse'](this[_0xbb58('0x18')](_0xbb58('0x1f'))):{};},'set':function(_0x12b3eb){return this[_0xbb58('0x1b')](_0xbb58('0x1f'),JSON[_0xbb58('0x15')](_0x12b3eb));}},'token':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':function(){return rs[_0xbb58('0x20')]();}},'autoclose':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xbb58('0x2')]},'forwardOffline':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xbb58('0x2')]},'waitingTitle':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x21')},'waitingMessage':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x22')},'offlineMessageSubject':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x23')},'offlineMessageBody':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x24')},'enableUnmanagedNote':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0x12')},'sendUnmanaged':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x25')},'enableCustomerAttachment':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xbb58('0xf')]},'showAgentAvatar':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xbb58('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xbb58('0x26');}},'notificationSound':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0xbb58('0x27')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x28')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x29')},'messagesAlignment':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':_0xbb58('0x2a')},'defaultTitle':{'type':Sequelize[_0xbb58('0x2')]},'customerAvatar':{'type':Sequelize[_0xbb58('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xbb58('0x7')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xbb58('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbb58('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0xbb58('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbb58('0x7')],'comment':_0xbb58('0x2c')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xc29171){if(!_0xc29171)this[_0xbb58('0x1b')](_0xbb58('0x2d'),null);this[_0xbb58('0x1b')](_0xbb58('0x2e'),_0xc29171);}},'vidaooEscalation':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0xbb58('0x2')],'allowNull':![],'defaultValue':_0xbb58('0x2f')},'vidaooNote':{'type':Sequelize[_0xbb58('0x2')],'defaultValue':function(){return _0xbb58('0x30');}},'vidaooMetadata':{'type':Sequelize[_0xbb58('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xbb58('0xe')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xda55=['alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','STRING','address','email','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','thumb','star','stringify','input','text','getDataValue','onlineForm','parse','Comments','Leave\x20your\x20comments','offlineForm','setDataValue','generate','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT'];(function(_0x3f6e27,_0x188bd7){var _0x2ab5e6=function(_0x3a21b5){while(--_0x3a21b5){_0x3f6e27['push'](_0x3f6e27['shift']());}};_0x2ab5e6(++_0x188bd7);}(_0xda55,0x6d));var _0x5da5=function(_0x15a34f,_0x1378ba){_0x15a34f=_0x15a34f-0x0;var _0x2e7b6b=_0xda55[_0x15a34f];return _0x2e7b6b;};'use strict';var Sequelize=require(_0x5da5('0x0'));var rs=require(_0x5da5('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'unique':_0x5da5('0x3')},'description':{'type':Sequelize[_0x5da5('0x2')]},'mapKey':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x5da5('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'defaultValue':_0x5da5('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'defaultValue':_0x5da5('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'defaultValue':_0x5da5('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x5da5('0x7')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x5da5('0x2')]},'animation':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x5da5('0x9')](_0x5da5('0xa'),_0x5da5('0xb')),'defaultValue':_0x5da5('0xa')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0x5da5('0xc')},'start_chat_button':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0xd')},'header_offline':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0xe')},'download_transcript':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x5da5('0x7')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x5da5('0xf')]},'closingQuestion':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x11')},'formSubmitFailureMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x12')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x5da5('0x13')},'placeholderMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x14')},'closingMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x15')},'closingMessageButton':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x16')},'conditionAgreement':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x17')},'ratingType':{'type':Sequelize[_0x5da5('0x9')]('star',_0x5da5('0x18')),'defaultValue':_0x5da5('0x19')},'ratingStarsNumber':{'type':Sequelize[_0x5da5('0x7')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x5da5('0xf')],'defaultValue':function(){return JSON[_0x5da5('0x1a')]({'items':[{'type':_0x5da5('0x1b'),'variable':null,'config':{'placeholder':'name','type':_0x5da5('0x1c'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x5da5('0x1b'),'props':{'title':_0x5da5('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x5da5('0x4'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x5da5('0x1d')](_0x5da5('0x1e'))?JSON[_0x5da5('0x1f')](this[_0x5da5('0x1d')]('onlineForm')):{};},'set':function(_0x5b0b43){return this['setDataValue'](_0x5da5('0x1e'),JSON['stringify'](_0x5b0b43));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x5da5('0x1a')]({'items':[{'type':_0x5da5('0x1b'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x5da5('0x4'),'type':_0x5da5('0x4')},'variable':null},{'type':'textarea','config':{'placeholder':_0x5da5('0x20')},'props':{'title':_0x5da5('0x20'),'helpText':_0x5da5('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x5da5('0x1d')](_0x5da5('0x22'))?JSON['parse'](this[_0x5da5('0x1d')](_0x5da5('0x22'))):{};},'set':function(_0x31cb5f){return this[_0x5da5('0x23')]('offlineForm',JSON['stringify'](_0x31cb5f));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x5da5('0x24')]();}},'autoclose':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x5da5('0x2')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x25')},'offlineMessageBody':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x27')},'skipUnmanaged':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x5da5('0xf')]},'showAgentAvatar':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x5da5('0x2')]},'notificationTemplate':{'type':Sequelize[_0x5da5('0xf')],'defaultValue':function(){return _0x5da5('0x28');}},'notificationSound':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x5da5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x5da5('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x2b')},'messagesAlignment':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x2c')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x5da5('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x5da5('0x7')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5da5('0x2d'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5da5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x5da5('0x2')],'defaultValue':_0x5da5('0x2e')},'systemAvatar':{'type':Sequelize[_0x5da5('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5da5('0x7')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![],'comment':_0x5da5('0x2f'),'set':function(_0x14c3f5){if(!_0x14c3f5)this[_0x5da5('0x23')](_0x5da5('0x30'),null);this['setDataValue'](_0x5da5('0x31'),_0x14c3f5);}},'vidaooEscalation':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x5da5('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x5da5('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x5da5('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x5da5('0xf')]}};
\ No newline at end of file
index ca8b089..ce04604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06e6=['updatedAt','CompanyId','ListId','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','Applications','List','account','applications','orderBy','priority','customerIp','headers','cf-connecting-ip','x-forwarded-for','first','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','contact','messageId','update','created','autoclose','push','close','unmanaged','UserId','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','toPairs','ChatOfflineMessage','fromString','mimetype','offline-chat','openNewInteraction','sequelize','transaction','Smtp','CloudProvider','forwardOffline','SendMail','sendMail','\x22%s\x22\x20<%s>','forwardOfflineAddress','offlineMessageSubject','MailAccountId','originalname','subjectOffline','email','Chat','NotifyMailAccount','notifyMail','server','attachments','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','custom','License','increment','all','utf8','URL','address','3.1.0','x-real-ip','connection','remoteAddress','virtual','replace','alignment','verticalAlignment','labelText','textColor','textButtonColor','hideWhenOffline','Transaction','READ_COMMITTED','ChatApplication','bulkCreate','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','getFields','online','false','offlineForm','onlineForm','fromKey','getOfflineMessages','Attachment','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','lodash','ioredis','../../config/logger','api','../../config/environment','url','../../mysqldb','defaults','redis','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','sendStatus','status','offset','undefined','limit','count','set','json','destroy','get','ChatWebsites','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','show','keys','length','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','ChatWebsiteId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','rows','removeAnswers','addLogo','sitepic','file','agentAvatar','filename','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','isNil','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','existsSync','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','notify','user-agent-parser','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt'];(function(_0x4192ad,_0x488f5c){var _0x415dc3=function(_0x288ed5){while(--_0x288ed5){_0x4192ad['push'](_0x4192ad['shift']());}};_0x415dc3(++_0x488f5c);}(_0x06e6,0x1cb));var _0x606e=function(_0x1f48fe,_0x4ad731){_0x1f48fe=_0x1f48fe-0x0;var _0xae69a5=_0x06e6[_0x1f48fe];return _0xae69a5;};'use strict';var BPromise=require(_0x606e('0x0'));var Mustache=require(_0x606e('0x1'));var util=require(_0x606e('0x2'));var path=require(_0x606e('0x3'));var ejs=require(_0x606e('0x4'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x606e('0x5'));var querystring=require('querystring');var Redis=require(_0x606e('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x606e('0x7'))(_0x606e('0x8'));var config=require(_0x606e('0x9'));var url=require(_0x606e('0xa'));var db=require(_0x606e('0xb'))['db'];config['redis']=_[_0x606e('0xc')](config[_0x606e('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x606e('0xe'))(new Redis(config['redis']));require(_0x606e('0xf'))[_0x606e('0x10')](socket);var htmlToText=require(_0x606e('0x11'));var jayson=require(_0x606e('0x12'));var client=jayson[_0x606e('0x13')][_0x606e('0x14')]({'port':0x232c});var client9002=jayson[_0x606e('0x13')]['http']({'port':0x232a});var client9003=jayson[_0x606e('0x13')][_0x606e('0x14')]({'port':0x232b});var client9001=jayson[_0x606e('0x13')][_0x606e('0x14')]({'port':0x2329});function respondWithRpcPromise(_0x26f3ea,_0x1b98fb,_0x621441,_0x43a117){return new BPromise(function(_0xcc9049,_0x4cc7b4){var _0xf4618d=_0x43a117||client;return _0xf4618d[_0x606e('0x15')](_0x26f3ea,_0x621441)[_0x606e('0x16')](function(_0x38de8f){logger[_0x606e('0x17')](_0x606e('0x18'),_0x1b98fb,_0x606e('0x19'));logger['debug'](_0x606e('0x1a'),_0x1b98fb,_0x606e('0x19'),JSON[_0x606e('0x1b')](_0x38de8f));if(_0x38de8f[_0x606e('0x1c')]){if(_0x38de8f['error']['code']===0x1f4){logger[_0x606e('0x1c')](_0x606e('0x18'),_0x1b98fb,_0x38de8f[_0x606e('0x1c')]['message']);return _0x4cc7b4(_0x38de8f[_0x606e('0x1c')][_0x606e('0x1d')]);}logger['error'](_0x606e('0x18'),_0x1b98fb,_0x38de8f[_0x606e('0x1c')]['message']);return _0xcc9049(_0x38de8f[_0x606e('0x1c')]['message']);}else{logger[_0x606e('0x17')](_0x606e('0x18'),_0x1b98fb,'request\x20sent');_0xcc9049(_0x38de8f['result'][_0x606e('0x1d')]);}})['catch'](function(_0x19c9c6){logger[_0x606e('0x1c')](_0x606e('0x18'),_0x1b98fb,_0x19c9c6);_0x4cc7b4(_0x19c9c6);});});}function respondWithStatusCode(_0xaf5ec3,_0x18c9a5){_0x18c9a5=_0x18c9a5||0xcc;return function(_0x539985){if(_0x539985){return _0xaf5ec3[_0x606e('0x1e')](_0x18c9a5);}return _0xaf5ec3[_0x606e('0x1f')](_0x18c9a5)['end']();};}function respondWithResult(_0x52fec1,_0x21efed){_0x21efed=_0x21efed||0xc8;return function(_0x185989){if(_0x185989){return _0x52fec1['status'](_0x21efed)['json'](_0x185989);}};}function respondWithFilteredResult(_0x3ef269,_0x917425){return function(_0x2cb467){if(_0x2cb467){var _0x42fc17=typeof _0x917425[_0x606e('0x20')]===_0x606e('0x21')&&typeof _0x917425[_0x606e('0x22')]===_0x606e('0x21');var _0x4c4229=_0x2cb467[_0x606e('0x23')];var _0x5bb37e=_0x42fc17?0x0:_0x917425[_0x606e('0x20')];var _0x428104=_0x42fc17?_0x2cb467[_0x606e('0x23')]:_0x917425[_0x606e('0x20')]+_0x917425['limit'];var _0x231a43;if(_0x428104>=_0x4c4229){_0x428104=_0x4c4229;_0x231a43=0xc8;}else{_0x231a43=0xce;}_0x3ef269[_0x606e('0x1f')](_0x231a43);return _0x3ef269[_0x606e('0x24')]('Content-Range',_0x5bb37e+'-'+_0x428104+'/'+_0x4c4229)[_0x606e('0x25')](_0x2cb467);}return null;};}function saveUpdates(_0x4c2fc6){return function(_0x34cd8d){if(_0x34cd8d){return _0x34cd8d['update'](_0x4c2fc6)[_0x606e('0x16')](function(_0x4b38f7){return _0x4b38f7;});}return null;};}function removeEntity(_0x4f9a8e){return function(_0x4e73b6){if(_0x4e73b6){return _0x4e73b6[_0x606e('0x26')]()[_0x606e('0x16')](function(){var _0x341789=_0x4e73b6[_0x606e('0x27')]({'plain':!![]});var _0x36f31c=_0x606e('0x28');return db['UserProfileResource'][_0x606e('0x26')]({'where':{'type':_0x36f31c,'resourceId':_0x341789['id']}})[_0x606e('0x16')](function(){return _0x4e73b6;});})[_0x606e('0x16')](function(){_0x4f9a8e[_0x606e('0x1f')](0xcc)[_0x606e('0x29')]();});}};}function handleEntityNotFound(_0x3a9b78){return function(_0x1d504f){if(!_0x1d504f){_0x3a9b78[_0x606e('0x1e')](0x194);}return _0x1d504f;};}function handleError(_0x225085,_0x2b9efb){_0x2b9efb=_0x2b9efb||0x1f4;return function(_0x198244){logger[_0x606e('0x1c')](_0x198244[_0x606e('0x2a')]);if(_0x198244[_0x606e('0x2b')]){delete _0x198244[_0x606e('0x2b')];}_0x225085['status'](_0x2b9efb)[_0x606e('0x2c')](_0x198244);};}exports[_0x606e('0x2d')]=function(_0x233c04,_0x21a042){var _0x414fad={'include':[{'model':db[_0x606e('0x2e')],'as':_0x606e('0x2f')}]},_0x307007={},_0x287b44={'count':0x0,'rows':[]};var _0x1ee824=_[_0x606e('0x30')](db[_0x606e('0x31')][_0x606e('0x32')],function(_0xdd6e5c){return{'name':_0xdd6e5c[_0x606e('0x33')],'type':_0xdd6e5c[_0x606e('0x34')][_0x606e('0x35')]};});_0x307007['model']=_[_0x606e('0x30')](_0x1ee824,_0x606e('0x2b'));_0x307007['query']=_['keys'](_0x233c04[_0x606e('0x36')]);_0x307007[_0x606e('0x37')]=_[_0x606e('0x38')](_0x307007[_0x606e('0x39')],_0x307007[_0x606e('0x36')]);_0x414fad[_0x606e('0x3a')]=_['intersection'](_0x307007[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x233c04[_0x606e('0x36')]['fields']));_0x414fad[_0x606e('0x3a')]=_0x414fad[_0x606e('0x3a')]['length']?_0x414fad['attributes']:_0x307007[_0x606e('0x39')];if(!_0x233c04['query'][_0x606e('0x3c')](_0x606e('0x3d'))){_0x414fad[_0x606e('0x22')]=qs[_0x606e('0x22')](_0x233c04[_0x606e('0x36')]['limit']);_0x414fad[_0x606e('0x20')]=qs['offset'](_0x233c04['query'][_0x606e('0x20')]);}_0x414fad[_0x606e('0x3e')]=qs[_0x606e('0x3f')](_0x233c04[_0x606e('0x36')][_0x606e('0x3f')]);_0x414fad[_0x606e('0x40')]=qs[_0x606e('0x37')](_[_0x606e('0x41')](_0x233c04['query'],_0x307007[_0x606e('0x37')]),_0x1ee824);if(_0x233c04[_0x606e('0x36')]['filter']){_0x414fad[_0x606e('0x40')]=_[_0x606e('0x42')](_0x414fad['where'],{'$or':_[_0x606e('0x30')](_0x1ee824,function(_0x5c22c2){if(_0x5c22c2['type']!=='VIRTUAL'){var _0x41a595={};_0x41a595[_0x5c22c2[_0x606e('0x2b')]]={'$like':'%'+_0x233c04[_0x606e('0x36')][_0x606e('0x43')]+'%'};return _0x41a595;}})});}_0x414fad=_['merge']({},_0x414fad,_0x233c04[_0x606e('0x44')]);var _0x1fbf0d={'where':_0x414fad[_0x606e('0x40')]};return db['ChatWebsite'][_0x606e('0x23')](_0x1fbf0d)[_0x606e('0x16')](function(_0x5aba24){_0x287b44[_0x606e('0x23')]=_0x5aba24;if(_0x233c04[_0x606e('0x36')][_0x606e('0x45')]){_0x414fad[_0x606e('0x46')]=[{'all':!![]}];}return db[_0x606e('0x31')][_0x606e('0x47')](_0x414fad);})[_0x606e('0x16')](function(_0x55edf6){_0x287b44['rows']=_0x55edf6;return _0x287b44;})[_0x606e('0x16')](respondWithFilteredResult(_0x21a042,_0x414fad))['catch'](handleError(_0x21a042,null));};exports[_0x606e('0x48')]=function(_0x5abd07,_0x580cb3){var _0x26e633={'raw':![],'where':{'id':_0x5abd07['params']['id']},'include':[{'model':db[_0x606e('0x2e')],'as':_0x606e('0x2f')}]},_0x550e55={};_0x550e55[_0x606e('0x39')]=_[_0x606e('0x49')](db[_0x606e('0x31')][_0x606e('0x32')]);_0x550e55[_0x606e('0x36')]=_['keys'](_0x5abd07[_0x606e('0x36')]);_0x550e55[_0x606e('0x37')]=_[_0x606e('0x38')](_0x550e55[_0x606e('0x39')],_0x550e55['query']);_0x26e633[_0x606e('0x3a')]=_[_0x606e('0x38')](_0x550e55[_0x606e('0x39')],qs['fields'](_0x5abd07[_0x606e('0x36')][_0x606e('0x3b')]));_0x26e633[_0x606e('0x3a')]=_0x26e633[_0x606e('0x3a')][_0x606e('0x4a')]?_0x26e633[_0x606e('0x3a')]:_0x550e55[_0x606e('0x39')];if(_0x5abd07[_0x606e('0x36')][_0x606e('0x45')]){_0x26e633[_0x606e('0x46')]=[{'all':!![]}];}_0x26e633=_['merge']({},_0x26e633,_0x5abd07[_0x606e('0x44')]);return db[_0x606e('0x31')][_0x606e('0x4b')](_0x26e633)[_0x606e('0x16')](handleEntityNotFound(_0x580cb3,null))[_0x606e('0x16')](respondWithResult(_0x580cb3,null))[_0x606e('0x4c')](handleError(_0x580cb3,null));};exports[_0x606e('0x4d')]=function(_0x1fb81d,_0x2ff5a1){return db[_0x606e('0x31')]['create'](_0x1fb81d['body'],{})[_0x606e('0x16')](function(_0x4d0e17){var _0x11f69c=_0x1fb81d[_0x606e('0x4e')][_0x606e('0x27')]({'plain':!![]});if(!_0x11f69c)throw new Error(_0x606e('0x4f'));if(_0x11f69c['role']==='user'){var _0x9c6d6f=_0x4d0e17[_0x606e('0x27')]({'plain':!![]});var _0xc45727='ChatWebsites';return db['UserProfileSection'][_0x606e('0x4b')]({'where':{'name':_0xc45727,'userProfileId':_0x11f69c[_0x606e('0x50')]},'raw':!![]})['then'](function(_0x52b3c5){if(_0x52b3c5&&_0x52b3c5[_0x606e('0x51')]===0x0){return db[_0x606e('0x52')][_0x606e('0x4d')]({'name':_0x9c6d6f[_0x606e('0x2b')],'resourceId':_0x9c6d6f['id'],'type':_0x52b3c5[_0x606e('0x2b')],'sectionId':_0x52b3c5['id']},{})[_0x606e('0x16')](function(){return _0x4d0e17;});}else{return _0x4d0e17;}})[_0x606e('0x4c')](function(_0x35a9dd){logger[_0x606e('0x1c')](_0x606e('0x53'),_0x35a9dd);throw _0x35a9dd;});}return _0x4d0e17;})['then'](respondWithResult(_0x2ff5a1,0xc9))[_0x606e('0x4c')](handleError(_0x2ff5a1,null));};exports['update']=function(_0xbab22c,_0x16101d){if(_0xbab22c[_0x606e('0x54')]['id']){delete _0xbab22c[_0x606e('0x54')]['id'];}return db[_0x606e('0x31')]['find']({'where':{'id':_0xbab22c[_0x606e('0x55')]['id']},'include':[{'model':db[_0x606e('0x2e')],'as':_0x606e('0x2f')}]})[_0x606e('0x16')](handleEntityNotFound(_0x16101d,null))[_0x606e('0x16')](saveUpdates(_0xbab22c['body'],null))['then'](respondWithResult(_0x16101d,null))[_0x606e('0x4c')](handleError(_0x16101d,null));};exports[_0x606e('0x26')]=function(_0x5d8d22,_0x579536){return db['ChatWebsite']['find']({'where':{'id':_0x5d8d22[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x579536,null))[_0x606e('0x16')](removeEntity(_0x579536,null))[_0x606e('0x4c')](handleError(_0x579536,null));};exports[_0x606e('0x56')]=function(_0x3439a3,_0x2c6919){return db['ChatWebsite'][_0x606e('0x56')]()[_0x606e('0x16')](respondWithResult(_0x2c6919,null))[_0x606e('0x4c')](handleError(_0x2c6919,null));};exports['addDisposition']=function(_0x12026a,_0x2b21a5){if(_0x12026a[_0x606e('0x54')]['id']){delete _0x12026a['body']['id'];}return db[_0x606e('0x31')]['find']({'where':{'id':_0x12026a[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x2b21a5,null))[_0x606e('0x16')](function(_0x51d9e9){if(_0x51d9e9){_0x12026a[_0x606e('0x54')][_0x606e('0x57')]=_0x51d9e9['id'];return db[_0x606e('0x58')][_0x606e('0x4d')](_0x12026a['body']);}})['then'](respondWithResult(_0x2b21a5,null))[_0x606e('0x4c')](handleError(_0x2b21a5,null));};exports[_0x606e('0x59')]=function(_0x1d7526,_0xb6bd9e){var _0x4127ae={'raw':![],'where':{}};var _0x5b2d81={};var _0x3a1531={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x606e('0x5a')]({'where':{'id':_0x1d7526['params']['id']}})['then'](handleEntityNotFound(_0xb6bd9e,null))[_0x606e('0x16')](function(_0x412bb7){if(_0x412bb7){_0x5b2d81[_0x606e('0x39')]=_['keys'](db['Disposition']['rawAttributes']);_0x5b2d81[_0x606e('0x36')]=_[_0x606e('0x49')](_0x1d7526['query']);_0x5b2d81[_0x606e('0x37')]=_['intersection'](_0x5b2d81[_0x606e('0x39')],_0x5b2d81['query']);_0x4127ae['attributes']=_[_0x606e('0x38')](_0x5b2d81[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x1d7526[_0x606e('0x36')][_0x606e('0x3b')]));_0x4127ae[_0x606e('0x3a')]=_0x4127ae[_0x606e('0x3a')][_0x606e('0x4a')]?_0x4127ae[_0x606e('0x3a')]:_0x5b2d81[_0x606e('0x39')];if(!_0x1d7526['query'][_0x606e('0x3c')](_0x606e('0x3d'))){_0x4127ae[_0x606e('0x22')]=qs[_0x606e('0x22')](_0x1d7526[_0x606e('0x36')][_0x606e('0x22')]);_0x4127ae[_0x606e('0x20')]=qs[_0x606e('0x20')](_0x1d7526[_0x606e('0x36')][_0x606e('0x20')]);}_0x4127ae[_0x606e('0x3e')]=qs[_0x606e('0x3f')](_0x1d7526[_0x606e('0x36')]['sort']);_0x4127ae[_0x606e('0x40')]=qs['filters'](_[_0x606e('0x41')](_0x1d7526[_0x606e('0x36')],_0x5b2d81[_0x606e('0x37')]));_0x4127ae[_0x606e('0x40')][_0x606e('0x57')]=_0x412bb7['id'];if(_0x1d7526[_0x606e('0x36')]['filter']){_0x4127ae['where']=_[_0x606e('0x42')](_0x4127ae['where'],{'$or':_[_0x606e('0x30')](_0x4127ae[_0x606e('0x3a')],function(_0x58d072){var _0x1f9b23={};_0x1f9b23[_0x58d072]={'$like':'%'+_0x1d7526['query'][_0x606e('0x43')]+'%'};return _0x1f9b23;})});}_0x4127ae=_[_0x606e('0x42')]({},_0x4127ae,_0x1d7526[_0x606e('0x44')]);return db[_0x606e('0x58')]['count']({'where':_0x4127ae[_0x606e('0x40')]})[_0x606e('0x16')](function(_0x6dee31){_0x3a1531[_0x606e('0x23')]=_0x6dee31;if(_0x1d7526['query'][_0x606e('0x45')]){_0x4127ae['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x4127ae);})[_0x606e('0x16')](function(_0xd90d7e){_0x3a1531['rows']=_0xd90d7e;return _0x3a1531;});}})[_0x606e('0x16')](respondWithFilteredResult(_0xb6bd9e,_0x4127ae))[_0x606e('0x4c')](handleError(_0xb6bd9e,null));};exports[_0x606e('0x5b')]=function(_0x590272,_0x13975a){return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x590272[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x13975a,null))[_0x606e('0x16')](function(_0xa88d8b){if(_0xa88d8b){return _0xa88d8b[_0x606e('0x5b')](_0x590272[_0x606e('0x36')][_0x606e('0x5c')]);}})[_0x606e('0x16')](respondWithStatusCode(_0x13975a,null))[_0x606e('0x4c')](handleError(_0x13975a,null));};exports[_0x606e('0x5d')]=function(_0x31c06a,_0x1711ad){if(_0x31c06a[_0x606e('0x54')]['id']){delete _0x31c06a[_0x606e('0x54')]['id'];}return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x31c06a[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x1711ad,null))[_0x606e('0x16')](function(_0x21a1fe){if(_0x21a1fe){_0x31c06a[_0x606e('0x54')][_0x606e('0x57')]=_0x21a1fe['id'];return db['CannedAnswer'][_0x606e('0x4d')](_0x31c06a['body']);}})[_0x606e('0x16')](respondWithResult(_0x1711ad,null))[_0x606e('0x4c')](handleError(_0x1711ad,null));};exports[_0x606e('0x5e')]=function(_0x13bda4,_0x390d6c){var _0x29ae0d={'raw':![],'where':{}};var _0x3b6c1e={};var _0x1e6be9={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x606e('0x5a')]({'where':{'id':_0x13bda4[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x390d6c,null))[_0x606e('0x16')](function(_0x40cf3b){if(_0x40cf3b){_0x3b6c1e[_0x606e('0x39')]=_[_0x606e('0x49')](db['CannedAnswer'][_0x606e('0x32')]);_0x3b6c1e[_0x606e('0x36')]=_[_0x606e('0x49')](_0x13bda4[_0x606e('0x36')]);_0x3b6c1e[_0x606e('0x37')]=_[_0x606e('0x38')](_0x3b6c1e[_0x606e('0x39')],_0x3b6c1e['query']);_0x29ae0d['attributes']=_[_0x606e('0x38')](_0x3b6c1e['model'],qs['fields'](_0x13bda4[_0x606e('0x36')][_0x606e('0x3b')]));_0x29ae0d[_0x606e('0x3a')]=_0x29ae0d[_0x606e('0x3a')][_0x606e('0x4a')]?_0x29ae0d[_0x606e('0x3a')]:_0x3b6c1e[_0x606e('0x39')];if(!_0x13bda4['query'][_0x606e('0x3c')](_0x606e('0x3d'))){_0x29ae0d[_0x606e('0x22')]=qs['limit'](_0x13bda4[_0x606e('0x36')]['limit']);_0x29ae0d[_0x606e('0x20')]=qs[_0x606e('0x20')](_0x13bda4['query']['offset']);}_0x29ae0d[_0x606e('0x3e')]=qs[_0x606e('0x3f')](_0x13bda4[_0x606e('0x36')][_0x606e('0x3f')]);_0x29ae0d[_0x606e('0x40')]=qs[_0x606e('0x37')](_[_0x606e('0x41')](_0x13bda4['query'],_0x3b6c1e[_0x606e('0x37')]));_0x29ae0d[_0x606e('0x40')][_0x606e('0x57')]=_0x40cf3b['id'];if(_0x13bda4[_0x606e('0x36')]['filter']){_0x29ae0d[_0x606e('0x40')]=_[_0x606e('0x42')](_0x29ae0d[_0x606e('0x40')],{'$or':_[_0x606e('0x30')](_0x29ae0d[_0x606e('0x3a')],function(_0x53b282){var _0x3fe97c={};_0x3fe97c[_0x53b282]={'$like':'%'+_0x13bda4['query'][_0x606e('0x43')]+'%'};return _0x3fe97c;})});}_0x29ae0d=_['merge']({},_0x29ae0d,_0x13bda4[_0x606e('0x44')]);return db[_0x606e('0x5f')][_0x606e('0x23')]({'where':_0x29ae0d[_0x606e('0x40')]})['then'](function(_0x153845){_0x1e6be9['count']=_0x153845;if(_0x13bda4[_0x606e('0x36')][_0x606e('0x45')]){_0x29ae0d[_0x606e('0x46')]=[{'all':!![]}];}return db[_0x606e('0x5f')][_0x606e('0x47')](_0x29ae0d);})[_0x606e('0x16')](function(_0x39460b){_0x1e6be9[_0x606e('0x60')]=_0x39460b;return _0x1e6be9;});}})[_0x606e('0x16')](respondWithFilteredResult(_0x390d6c,_0x29ae0d))[_0x606e('0x4c')](handleError(_0x390d6c,null));};exports['removeAnswers']=function(_0x5e440b,_0x16c5ba){return db[_0x606e('0x31')]['find']({'where':{'id':_0x5e440b[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x16c5ba,null))[_0x606e('0x16')](function(_0x48fb7a){if(_0x48fb7a){return _0x48fb7a[_0x606e('0x61')](_0x5e440b[_0x606e('0x36')][_0x606e('0x5c')]);}})['then'](respondWithStatusCode(_0x16c5ba,null))[_0x606e('0x4c')](handleError(_0x16c5ba,null));};exports[_0x606e('0x62')]=function(_0x488620,_0x22645a){_0x488620[_0x606e('0x54')][_0x606e('0x63')]=_0x488620[_0x606e('0x64')]['filename'];return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x488620[_0x606e('0x55')]['id']}})['then'](handleEntityNotFound(_0x22645a,null))[_0x606e('0x16')](saveUpdates(_0x488620[_0x606e('0x54')],null))[_0x606e('0x16')](respondWithResult(_0x22645a,null))['catch'](handleError(_0x22645a,null));};exports['addAvatar']=function(_0x5b325e,_0x551f54){_0x5b325e[_0x606e('0x54')][_0x606e('0x65')]=_0x5b325e[_0x606e('0x64')][_0x606e('0x66')];return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x5b325e['params']['id']}})['then'](handleEntityNotFound(_0x551f54,null))[_0x606e('0x16')](saveUpdates(_0x5b325e[_0x606e('0x54')],null))[_0x606e('0x16')](respondWithResult(_0x551f54,null))[_0x606e('0x4c')](handleError(_0x551f54,null));};exports['addCustomerAvatar']=function(_0x3b97d9,_0x4201a2){_0x3b97d9['body'][_0x606e('0x67')]=_0x3b97d9['file']['filename'];return db['ChatWebsite']['find']({'where':{'id':_0x3b97d9[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x4201a2,null))[_0x606e('0x16')](saveUpdates(_0x3b97d9[_0x606e('0x54')],null))[_0x606e('0x16')](respondWithResult(_0x4201a2,null))[_0x606e('0x4c')](handleError(_0x4201a2,null));};exports[_0x606e('0x68')]=function(_0x285be9,_0x2e8643){_0x285be9[_0x606e('0x54')][_0x606e('0x69')]=_0x285be9[_0x606e('0x64')][_0x606e('0x66')];return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x285be9[_0x606e('0x55')]['id']}})['then'](handleEntityNotFound(_0x2e8643,null))[_0x606e('0x16')](saveUpdates(_0x285be9[_0x606e('0x54')],null))[_0x606e('0x16')](respondWithResult(_0x2e8643,null))[_0x606e('0x4c')](handleError(_0x2e8643,null));};exports[_0x606e('0x6a')]=function(_0x53b444,_0x15e12e){var _0x1edbb6=path[_0x606e('0x6b')](config[_0x606e('0x6c')],_0x606e('0x6d'));var _0x5eb806={'where':{'id':_0x53b444['params']['id']},'attributes':['id',_0x606e('0x63')],'raw':!![]};var _0x3a9633=![];return require(_0x606e('0x6e'))[_0x606e('0x6f')]()[_0x606e('0x16')](function(_0x401407){if(_0x401407){_0x3a9633=_0x401407['custom'];}})[_0x606e('0x16')](function(){return db['ChatWebsite'][_0x606e('0x4b')](_0x5eb806);})[_0x606e('0x16')](handleEntityNotFound(_0x15e12e,null))[_0x606e('0x16')](function(_0x330f01){if(_0x330f01){if(!_[_0x606e('0x70')](_0x330f01['sitepic'])){if(fs['existsSync'](path[_0x606e('0x6b')](config[_0x606e('0x6c')],_0x606e('0x71'),_0x330f01['sitepic']))&&_0x3a9633){_0x1edbb6=path['join'](config['root'],_0x606e('0x71'),_0x330f01[_0x606e('0x63')]);}}return _0x15e12e[_0x606e('0x72')](_0x1edbb6);}})[_0x606e('0x4c')](handleError(_0x15e12e,null));};exports['getAvatar']=function(_0x5f1b8a,_0x38ed66){var _0xa17293=path[_0x606e('0x6b')](config[_0x606e('0x6c')],_0x606e('0x73'));var _0x86a4a4={'where':{'id':_0x5f1b8a[_0x606e('0x55')]['id']},'attributes':['id',_0x606e('0x65')],'raw':!![]};return db[_0x606e('0x31')]['find'](_0x86a4a4)[_0x606e('0x16')](handleEntityNotFound(_0x38ed66,null))[_0x606e('0x16')](function(_0x5c1356){if(_0x5c1356){if(!_[_0x606e('0x70')](_0x5c1356['agentAvatar'])){if(fs[_0x606e('0x74')](path[_0x606e('0x6b')](config[_0x606e('0x6c')],_0x606e('0x75'),_0x5c1356[_0x606e('0x65')]))){_0xa17293=path['join'](config[_0x606e('0x6c')],_0x606e('0x75'),_0x5c1356[_0x606e('0x65')]);}}return _0x38ed66[_0x606e('0x72')](_0xa17293);}})['catch'](handleError(_0x38ed66,null));};exports[_0x606e('0x76')]=function(_0x4b9744,_0x49ff57){var _0x13fdaf=path[_0x606e('0x6b')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x521c5b={'where':{'id':_0x4b9744['params']['id']},'attributes':['id',_0x606e('0x67'),'showCustomerAvatar'],'raw':!![]};return db['ChatWebsite'][_0x606e('0x4b')](_0x521c5b)[_0x606e('0x16')](handleEntityNotFound(_0x49ff57,null))[_0x606e('0x16')](function(_0x612b74){if(_0x612b74){if(!_[_0x606e('0x70')](_0x612b74[_0x606e('0x67')])){if(fs[_0x606e('0x74')](path['join'](config[_0x606e('0x6c')],'server/files/images/avatars/',_0x612b74['customerAvatar']))&&_0x612b74[_0x606e('0x77')]){_0x13fdaf=path['join'](config[_0x606e('0x6c')],'server/files/images/avatars/',_0x612b74[_0x606e('0x67')]);}}return _0x49ff57['download'](_0x13fdaf);}})[_0x606e('0x4c')](handleError(_0x49ff57,null));};exports['getSystemAvatar']=function(_0x2ff238,_0x2b551e){var _0x1ac8fb=path[_0x606e('0x6b')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x542937={'where':{'id':_0x2ff238[_0x606e('0x55')]['id']},'attributes':['id',_0x606e('0x69')],'raw':!![]};return db[_0x606e('0x31')][_0x606e('0x4b')](_0x542937)[_0x606e('0x16')](handleEntityNotFound(_0x2b551e,null))[_0x606e('0x16')](function(_0x4405bc){if(_0x4405bc){if(!_[_0x606e('0x70')](_0x4405bc[_0x606e('0x69')])){if(fs[_0x606e('0x74')](path[_0x606e('0x6b')](config[_0x606e('0x6c')],_0x606e('0x75'),_0x4405bc[_0x606e('0x69')]))){_0x1ac8fb=path['join'](config[_0x606e('0x6c')],_0x606e('0x75'),_0x4405bc[_0x606e('0x69')]);}}return _0x2b551e['download'](_0x1ac8fb);}})['catch'](handleError(_0x2b551e,null));};exports[_0x606e('0x78')]=function(_0x5e0acf,_0x4c6fd0){var _0x25ce1b=require(_0x606e('0x79'));var _0x4bd0af=new _0x25ce1b();var _0x5cbcc9=_0x4bd0af['setUA'](_0x5e0acf['headers'][_0x606e('0x7a')])[_0x606e('0x7b')]();var _0x2c4a6a={'body':_0x5e0acf[_0x606e('0x54')],'channel':_0x606e('0x7c')};var _0x50e113=[];var _0x376859=[];var _0x595cd9={};var _0x43c160=![];return db[_0x606e('0x7d')][_0x606e('0x56')]()[_0x606e('0x16')](function(_0xc69c0c){if(!_0xc69c0c){throw new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))](_0x606e('0x80'));}_0x50e113=_[_0x606e('0x81')](_[_0x606e('0x49')](_0xc69c0c),[_0x606e('0x82'),_0x606e('0x83')]);_0x376859=_[_0x606e('0x81')](_[_0x606e('0x49')](_0xc69c0c),[_0x606e('0x82'),_0x606e('0x83'),_0x606e('0x84'),_0x606e('0x85')]);if(_0x5e0acf[_0x606e('0x54')]['id']){delete _0x5e0acf['body']['id'];}if(_['isNil'](_0x5e0acf[_0x606e('0x54')][_0x606e('0x86')])){throw new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))]('from\x20is\x20mandatory');}if(_[_0x606e('0x70')](_0x5e0acf[_0x606e('0x54')][_0x606e('0x54')])||_0x5e0acf[_0x606e('0x54')][_0x606e('0x54')]===''){throw new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))](_0x606e('0x87'));}if(_[_0x606e('0x70')](_0x5e0acf['body'][_0x606e('0x88')])){throw new db[(_0x606e('0x7e'))]['ValidationError'](_0x606e('0x89')+_0x376859);}if(!_[_0x606e('0x8a')](_0x376859,_0x5e0acf[_0x606e('0x54')][_0x606e('0x88')])){throw new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))](_0x606e('0x8b')+_0x376859);}_0x595cd9[_0x5e0acf[_0x606e('0x54')][_0x606e('0x88')]]=_0x5e0acf['body']['from'];})[_0x606e('0x16')](function(){return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0x5e0acf[_0x606e('0x55')]['id']},'include':[{'model':db[_0x606e('0x8c')],'as':'List','include':[{'model':db[_0x606e('0x7d')],'as':_0x606e('0x8d'),'where':_0x595cd9,'limit':0x1,'order':[[_0x606e('0x83'),_0x606e('0x8e')]]}]},{'model':db['ChatApplication'],'as':_0x606e('0x8f')}]});})[_0x606e('0x16')](handleEntityNotFound(_0x4c6fd0,null))['then'](function(_0x27b045){if(_0x27b045&&_0x27b045[_0x606e('0x90')]){_0x2c4a6a[_0x606e('0x91')]=_0x27b045;_0x2c4a6a[_0x606e('0x92')]=_0x27b045[_0x606e('0x8f')];_0x2c4a6a['list']=_0x27b045[_0x606e('0x90')];_0x2c4a6a[_0x606e('0x92')]=_[_0x606e('0x93')](_0x2c4a6a[_0x606e('0x92')],[_0x606e('0x94')],['asc']);if(_0x2c4a6a['account'][_0x606e('0x8f')]){delete _0x2c4a6a[_0x606e('0x91')]['Applications'];}if(_0x2c4a6a[_0x606e('0x91')][_0x606e('0x90')]&&_0x2c4a6a[_0x606e('0x91')][_0x606e('0x90')][_0x606e('0x8d')]['length']){return _0x2c4a6a[_0x606e('0x91')][_0x606e('0x90')][_0x606e('0x8d')][0x0];}var _0x107c01=_[_0x606e('0xc')](_0x5e0acf['body'],{'firstName':_0x5e0acf['body'][_0x606e('0x86')],'ListId':_0x27b045[_0x606e('0x85')]});_0x107c01[_0x5e0acf[_0x606e('0x54')][_0x606e('0x88')]]=_0x5e0acf['body'][_0x606e('0x86')];return db[_0x606e('0x7d')]['create'](_0x107c01,{'fields':_0x50e113,'raw':!![]});}})[_0x606e('0x16')](handleEntityNotFound(_0x4c6fd0,null))[_0x606e('0x16')](function(_0x1876d0){_0x2c4a6a['contact']=_0x1876d0;var _0x4c1a68=_0x5e0acf['body'][_0x606e('0x95')];if(_0x5e0acf[_0x606e('0x96')][_0x606e('0x97')]){_0x4c1a68=_0x5e0acf[_0x606e('0x96')][_0x606e('0x97')];}else if(_0x5e0acf[_0x606e('0x96')][_0x606e('0x98')]){_0x4c1a68=_[_0x606e('0x99')](_0x5e0acf['headers'][_0x606e('0x98')]['split'](','));}if(_0x1876d0){var _0x4be179={'ContactId':_0x1876d0['id'],'ChatWebsiteId':_0x5e0acf[_0x606e('0x55')]['id'],'from':(_0x1876d0[_0x606e('0x9a')]||'')+'\x20'+(_0x1876d0[_0x606e('0x9b')]||''),'customerIp':_0x4c1a68,'customerPort':_0x5e0acf[_0x606e('0x96')][_0x606e('0x9c')]?_0x5e0acf['headers']['x-real-port']:null,'referer':_0x5e0acf['body'][_0x606e('0x9d')],'browserName':_0x5cbcc9[_0x606e('0x9e')][_0x606e('0x2b')]&&_0x5cbcc9['browser'][_0x606e('0x9f')]?util[_0x606e('0xa0')](_0x606e('0xa1'),_0x5cbcc9[_0x606e('0x9e')][_0x606e('0x2b')],_0x5cbcc9[_0x606e('0x9e')]['version']):'unknown','browserVersion':_0x5cbcc9[_0x606e('0x9e')][_0x606e('0x9f')]||_0x606e('0xa2'),'osName':util[_0x606e('0xa0')](_0x606e('0xa1'),_0x5cbcc9['os'][_0x606e('0x2b')],_0x5cbcc9['os']['version']),'osVersion':_0x5cbcc9['os'][_0x606e('0x9f')],'deviceModel':_0x5cbcc9[_0x606e('0xa3')][_0x606e('0x39')]&&_0x5cbcc9[_0x606e('0xa3')]['vendor']?util[_0x606e('0xa0')](_0x606e('0xa4'),_0x5cbcc9[_0x606e('0xa3')]['model'],_0x5cbcc9[_0x606e('0xa3')][_0x606e('0xa5')],_0x5cbcc9['device'][_0x606e('0x34')]):null,'deviceVendor':_0x5cbcc9[_0x606e('0xa3')][_0x606e('0xa5')],'deviceType':_0x5cbcc9[_0x606e('0xa3')][_0x606e('0x34')],'formData':JSON[_0x606e('0x1b')](_0x5e0acf[_0x606e('0x54')])};var _0x42514f={'ChatWebsiteId':_0x5e0acf[_0x606e('0x55')]['id'],'closed':![]};if(_0x5e0acf[_0x606e('0x54')][_0x606e('0xa6')]){_0x42514f[_0x606e('0xa6')]=_0x5e0acf[_0x606e('0x54')][_0x606e('0xa6')];return db['ChatInteraction'][_0x606e('0x4b')]({'where':_0x42514f})[_0x606e('0x16')](function(_0x5e8175){if(_0x5e8175){return[_0x5e8175,![]];}_0x4be179[_0x606e('0xa6')]=_0x5e0acf[_0x606e('0x54')][_0x606e('0xa6')];_0x4be179[_0x606e('0xa7')]=_0x5e0acf[_0x606e('0x54')][_0x606e('0xa7')];return db[_0x606e('0xa8')][_0x606e('0x4d')](_0x4be179)['then'](function(_0x334b51){return[_0x334b51,!![]];});});}_0x42514f[_0x606e('0xa9')]=_0x1876d0['id'];if(_0x5e0acf[_0x606e('0x54')][_0x606e('0xaa')]&&_0x5e0acf['body']['interaction']['id']){_0x42514f['id']=_0x5e0acf[_0x606e('0x54')][_0x606e('0xaa')]['id'];return db[_0x606e('0xa8')][_0x606e('0x4b')]({'where':_0x42514f})[_0x606e('0x16')](function(_0x549735){if(_0x549735){return[_0x549735,![]];}return db[_0x606e('0xa8')]['create'](_0x4be179)[_0x606e('0x16')](function(_0x217d6b){return[_0x217d6b,!![]];});});}return db['ChatInteraction']['create'](_0x4be179)[_0x606e('0x16')](function(_0x4b015e){return[_0x4b015e,!![]];});}})[_0x606e('0xab')](function(_0x43a3fa,_0x5ba625){if(_0x43a3fa){_0x43c160=_0x5ba625;if(!_0x5ba625){var _0x51d4ba={'from':(_0x2c4a6a[_0x606e('0xac')][_0x606e('0x9a')]||'')+'\x20'+(_0x2c4a6a['contact'][_0x606e('0x9b')]||'')};if(_0x5e0acf[_0x606e('0x54')][_0x606e('0xa6')]&&_0x5e0acf[_0x606e('0x54')][_0x606e('0xad')]&&_0x5e0acf[_0x606e('0x54')][_0x606e('0xa6')]!=_0x5e0acf[_0x606e('0x54')][_0x606e('0xad')]){_0x51d4ba[_0x606e('0xa6')]=_0x5e0acf[_0x606e('0x54')][_0x606e('0xad')];}return _0x43a3fa[_0x606e('0xae')](_0x51d4ba);}else{return _0x43a3fa;}}})[_0x606e('0x16')](function(_0x7faef2){_0x2c4a6a[_0x606e('0xaa')]=_0x7faef2[_0x606e('0x27')]({'plain':!![]});_0x2c4a6a[_0x606e('0xaa')][_0x606e('0xaf')]=_0x43c160;if(_0x2c4a6a[_0x606e('0xaa')][_0x606e('0xaf')]){if(_0x2c4a6a[_0x606e('0x91')][_0x606e('0xb0')]){_0x2c4a6a[_0x606e('0x92')][_0x606e('0xb1')]({'id':0x0,'priority':_0x2c4a6a[_0x606e('0x92')]['length']+0x1,'app':_0x606e('0xb2'),'appdata':_0x606e('0xb3'),'interval':'*,*,*,*'});}}return db['ChatMessage'][_0x606e('0x4d')]({'body':_0x5e0acf[_0x606e('0x54')][_0x606e('0x54')],'ChatWebsiteId':_0x5e0acf[_0x606e('0x55')]['id'],'ChatInteractionId':_0x7faef2['id'],'direction':'in','ContactId':_0x2c4a6a[_0x606e('0xac')]['id'],'AttachmentId':_0x5e0acf['body']['AttachmentId']});})[_0x606e('0x16')](function(_0xb0f305){_0x2c4a6a[_0x606e('0x1d')]=_0xb0f305;if(_0x2c4a6a[_0x606e('0xaa')][_0x606e('0xb4')]){return db['User']['find']({'attributes':['id',_0x606e('0x2b')],'where':{'id':_0x2c4a6a['interaction'][_0x606e('0xb4')]}})[_0x606e('0x16')](function(_0x49e520){if(_0x49e520){_0x2c4a6a['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x606e('0xb5'),'appdata':_0x49e520['name']+','+(_0x2c4a6a[_0x606e('0x91')][_0x606e('0xb6')]||0xa),'interval':'*,*,*,*'});_0x2c4a6a[_0x606e('0xb7')]=!![];}return respondWithRpcPromise(_0x606e('0xb8'),_0x606e('0xb9'),_0x2c4a6a);});}return respondWithRpcPromise(_0x606e('0xb8'),_0x606e('0xb9'),_0x2c4a6a);})['then'](function(_0x5a1553){respondWithRpcPromise(_0x606e('0xba'),_0x606e('0xba'),{'event':_0x606e('0x78'),'message':_0x5a1553},client9002);return _0x5a1553;})[_0x606e('0x16')](respondWithResult(_0x4c6fd0,null))[_0x606e('0x4c')](handleError(_0x4c6fd0,null));};exports[_0x606e('0xbb')]=function(_0xd89467,_0x4b9b33){var _0x538967,_0xdb767c,_0x485bc1;var _0x639fb4=[];var _0x291912={};var _0x105323=_0xd89467[_0x606e('0xbc')]||[];var _0x518890=[];var _0x172487;return db[_0x606e('0x7d')][_0x606e('0x56')]()['then'](function(_0x8b879){if(!_0x8b879){throw new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))]('no\x20available\x20attributes');}_0x639fb4=_[_0x606e('0x81')](_['keys'](_0x8b879),[_0x606e('0x82'),_0x606e('0x83'),_0x606e('0x84'),'ListId']);if(_0xd89467[_0x606e('0x54')]['id']){delete _0xd89467['body']['id'];}if(_['isNil'](_0xd89467['body'][_0x606e('0x86')])){throw _0x4b9b33[_0x606e('0x1f')](0x1f4)['send'](new db['Sequelize']['ValidationError'](_0x606e('0xbd')));}if(_[_0x606e('0x70')](_0xd89467[_0x606e('0x54')][_0x606e('0x54')])||_0xd89467[_0x606e('0x54')]['body']===''){throw _0x4b9b33['status'](0x1f4)[_0x606e('0x2c')](new db['Sequelize'][(_0x606e('0x7f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0xd89467[_0x606e('0x54')][_0x606e('0xbe')])){throw _0x4b9b33[_0x606e('0x1f')](0x1f4)[_0x606e('0x2c')](new db[(_0x606e('0x7e'))][(_0x606e('0x7f'))](_0x606e('0xbf')+_0x639fb4));}if(!_[_0x606e('0x8a')](_0x639fb4,_0xd89467[_0x606e('0x54')][_0x606e('0xbe')])){throw _0x4b9b33['status'](0x1f4)['send'](new db[(_0x606e('0x7e'))]['ValidationError'](_0x606e('0xc0')+_0x639fb4));}_0x291912[_0xd89467[_0x606e('0x54')][_0x606e('0xbe')]]=_0xd89467[_0x606e('0x54')][_0x606e('0x86')];})[_0x606e('0x16')](function(){return db[_0x606e('0x31')][_0x606e('0x4b')]({'where':{'id':_0xd89467[_0x606e('0x55')]['id']},'include':[{'model':db['CmList'],'as':'List'},{'model':db[_0x606e('0xc1')],'as':_0x606e('0xc1')}]});})[_0x606e('0x16')](handleEntityNotFound(_0x4b9b33,null))[_0x606e('0x16')](function(_0x50aadf){if(_0x50aadf&&_0x50aadf['List']){_0xdb767c=_0x50aadf;var _0xcb125c=_[_0x606e('0xc')](_0xd89467[_0x606e('0x54')],{'firstName':_0xd89467['body'][_0x606e('0x86')],'phone':_0xd89467[_0x606e('0x54')][_0x606e('0x86')],'ListId':_0x50aadf[_0x606e('0x85')]});_0xcb125c[_0xd89467['body'][_0x606e('0xbe')]]=_0xd89467[_0x606e('0x54')][_0x606e('0x86')];return db[_0x606e('0x7d')][_0x606e('0xc2')]({'where':_0x291912,'defaults':_0xcb125c});}})[_0x606e('0xab')](function(_0x5656f4){if(_0x5656f4){_0x485bc1=_0x5656f4;var _0x187ee0=fs[_0x606e('0xc3')](path[_0x606e('0x6b')](config['root'],_0x606e('0xc4')),'utf8');var _0x8cffa0=ejs[_0x606e('0xc5')](_0x187ee0,{'body':_[_0x606e('0xc6')](_0xd89467[_0x606e('0x54')][_0x606e('0x54')]),'bodyTitle':_0xdb767c['offlineMessageBody']});return db[_0x606e('0xc7')][_0x606e('0x4d')]({'body':_0x8cffa0,'plainBody':htmlToText[_0x606e('0xc8')](_0x8cffa0),'ContactId':_0x5656f4['id'],'ChatWebsiteId':_0xdb767c['id']});}})[_0x606e('0x16')](function(_0x481b59){_0x172487=_0x481b59;if(_0x105323[_0x606e('0x4a')]){var _0x121202=_0x105323['map'](function(_0x797142){return{'name':_0x797142['originalname'],'basename':_0x797142[_0x606e('0x66')],'type':_0x797142[_0x606e('0xc9')],'ChatOfflineMessageId':_0x481b59['id']};});_0x518890=_0x121202['map'](_0x587110=>{var _0x242b6f={'filename':_0x587110[_0x606e('0x2b')],'path':path[_0x606e('0x6b')](config[_0x606e('0x6c')],'server',_0x606e('0xbc'),'attachments',_0x606e('0xca'),_0x587110['basename'])};return _0x242b6f;});if(!_0xdb767c[_0x606e('0xcb')]){return db[_0x606e('0xcc')][_0x606e('0xcd')](function(_0x14187c){return db['Attachment']['bulkCreate'](_0x121202,{'transaction':_0x14187c});});}}})[_0x606e('0x16')](function(){if(_0x172487){_0x538967=_0x172487;return db[_0x606e('0xc1')]['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x606e('0xce'),'raw':!![],'include':[{'model':db[_0x606e('0xcf')],'as':_0x606e('0xcf'),'raw':!![]}]}]});}})[_0x606e('0x16')](function(_0x5cdb41){if(_0x5cdb41&&_0x5cdb41[_0x606e('0xce')]&&_0xdb767c[_0x606e('0xd0')]&&_0xdb767c['forwardOfflineAddress']){var _0x5ac62f=_0x5cdb41['getSmtpOptions']();return respondWithRpcPromise(_0x606e('0xd1'),_0x606e('0xd2'),{'account':_0x5ac62f,'message':{'from':util['format'](_0x606e('0xd3'),_0x5cdb41['name'],_0x5cdb41['email']||_0x5cdb41[_0x606e('0xce')]['user']),'to':_0xdb767c[_0x606e('0xd4')],'subject':_0xdb767c[_0x606e('0xd5')],'html':_0x538967[_0x606e('0x54')],'attachments':_0x518890}},client9003)[_0x606e('0x16')](function(){return _0x538967;})['catch'](function(_0x177d9f){logger[_0x606e('0x1c')](_0x177d9f);});}})[_0x606e('0x16')](function(){if(_0xdb767c&&_0xdb767c['openNewInteraction']&&_0xdb767c[_0x606e('0xd6')]){var _0x41eaeb=[];if(_0x105323[_0x606e('0x4a')]){_0x41eaeb=_0x105323[_0x606e('0x30')](function(_0x25f841){return{'name':_0x25f841[_0x606e('0xd7')],'basename':_0x25f841[_0x606e('0x66')],'type':_0x25f841[_0x606e('0xc9')],'ChatOfflineMessageId':_0x172487['id']};});}var _0x42cb26;if(!_[_0x606e('0x70')](_0xdb767c[_0x606e('0xd8')])){var _0x395ad6=_[_0x606e('0x30')](_0xd89467['body'],function(_0x2ffb45){return _0x2ffb45;});var _0x59a3a2=_['toPairsIn'](_0x395ad6)[0x0];var _0x30eb1b=_['mapValues'](_0x59a3a2,function(_0x1227e5){return _0x1227e5;});_0x42cb26=_0x30eb1b[0x1][_0xdb767c['subjectOffline']];}var _0x4a0edd={'from':_0x485bc1[_0x606e('0xd9')],'firstName':_0x485bc1['firstName'],'lastName':_0x485bc1[_0x606e('0x9b')],'mapKey':_0x606e('0xd9'),'message':{'from':_0x485bc1['email'],'to':_0xdb767c[_0x606e('0xc1')]['email'],'cc':'','subject':_[_0x606e('0x70')](_0x42cb26)?_0xdb767c['offlineMessageSubject']:_0x42cb26,'messageId':'','sentAt':new Date(),'attach':_0x41eaeb[_0x606e('0x4a')],'attachments':_0x41eaeb,'originChannel':_0x606e('0xda'),'ChatWebsiteId':_0xdb767c['id'],'ChatOfflineMessageId':_0x538967['id'],'originTo':_0xdb767c['MailAccount'][_0x606e('0xd9')]},'body':_0x538967[_0x606e('0x54')]};var _0x4c6771={'account':{'id':_0xdb767c['MailAccountId']},'body':_0x4a0edd,'log':_0x606e('0xdb')};return respondWithRpcPromise(_0x606e('0xdb'),_0x606e('0xdc'),_0x4c6771,client9001)['then'](function(){return _0x538967;})[_0x606e('0x4c')](function(_0x2e4fbc){logger[_0x606e('0x1c')](_0x2e4fbc);});}return;})[_0x606e('0x16')](function(){if(_0x538967){return _0x538967;}})[_0x606e('0x16')](respondWithResult(_0x4b9b33,null))['catch'](function(_0x1c206a){logger['error'](_0x606e('0x4c'),_0x1c206a);for(var _0x50f5ad of _0x105323){var _0xceda8e=path['join'](config[_0x606e('0x6c')],_0x606e('0xdd'),'files',_0x606e('0xde'),'offline-chat',_0x50f5ad['filename']);fs_extra[_0x606e('0xdf')](_0xceda8e)[_0x606e('0x4c')](function(_0x161bca){logger['error'](_0x606e('0xe0'),_0xceda8e,_0x161bca);});}});};exports[_0x606e('0xe1')]=function(_0x5707f7,_0x507525){return db['ChatInteraction'][_0x606e('0x4b')]({'where':{'id':_0x5707f7[_0x606e('0x55')]['id']}})['then'](handleEntityNotFound(_0x507525,null))[_0x606e('0x16')](function(_0x46866c){if(_0x46866c){return _0x46866c[_0x606e('0xe1')](_0x5707f7['body']['ids'],_[_0x606e('0xe2')](_0x5707f7[_0x606e('0x54')],[_0x606e('0x5c'),'id'])||{});}})['then'](respondWithResult(_0x507525,null))[_0x606e('0x4c')](handleError(_0x507525,null));};exports[_0x606e('0xe3')]=function(_0x2bdd9d,_0x128498){var _0x21d069={'raw':![],'where':{}};var _0x5519fb={};var _0x50af58={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x606e('0x5a')]({'where':{'id':_0x2bdd9d['params']['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x128498,null))[_0x606e('0x16')](function(_0x234c07){if(_0x234c07){_0x5519fb[_0x606e('0x39')]=_['keys'](db[_0x606e('0xa8')]['rawAttributes']);_0x5519fb['query']=_[_0x606e('0x49')](_0x2bdd9d[_0x606e('0x36')]);_0x5519fb[_0x606e('0x37')]=_[_0x606e('0x38')](_0x5519fb[_0x606e('0x39')],_0x5519fb[_0x606e('0x36')]);_0x21d069[_0x606e('0x3a')]=_['intersection'](_0x5519fb['model'],qs[_0x606e('0x3b')](_0x2bdd9d[_0x606e('0x36')][_0x606e('0x3b')]));_0x21d069[_0x606e('0x3a')]=_0x21d069['attributes']['length']?_0x21d069['attributes']:_0x5519fb[_0x606e('0x39')];if(!_0x2bdd9d[_0x606e('0x36')][_0x606e('0x3c')](_0x606e('0x3d'))){_0x21d069[_0x606e('0x22')]=qs[_0x606e('0x22')](_0x2bdd9d[_0x606e('0x36')][_0x606e('0x22')]);_0x21d069[_0x606e('0x20')]=qs['offset'](_0x2bdd9d[_0x606e('0x36')]['offset']);}_0x21d069['order']=qs[_0x606e('0x3f')](_0x2bdd9d[_0x606e('0x36')][_0x606e('0x3f')]);_0x21d069['where']=qs[_0x606e('0x37')](_[_0x606e('0x41')](_0x2bdd9d['query'],_0x5519fb[_0x606e('0x37')]));_0x21d069['where']['ChatWebsiteId']=_0x234c07['id'];if(_0x2bdd9d[_0x606e('0x36')][_0x606e('0x43')]){_0x21d069[_0x606e('0x40')]=_[_0x606e('0x42')](_0x21d069[_0x606e('0x40')],{'$or':_[_0x606e('0x30')](_0x21d069['attributes'],function(_0x128e60){var _0x1b05e9={};_0x1b05e9[_0x128e60]={'$like':'%'+_0x2bdd9d[_0x606e('0x36')][_0x606e('0x43')]+'%'};return _0x1b05e9;})});}_0x21d069=_[_0x606e('0x42')]({},_0x21d069,_0x2bdd9d[_0x606e('0x44')]);return db[_0x606e('0xa8')]['count']({'where':_0x21d069[_0x606e('0x40')]})[_0x606e('0x16')](function(_0x1f1d45){_0x50af58['count']=_0x1f1d45;if(_0x2bdd9d[_0x606e('0x36')][_0x606e('0x45')]){_0x21d069[_0x606e('0x46')]=[{'model':db[_0x606e('0x7d')],'as':_0x606e('0xe4'),'required':![]},{'model':db[_0x606e('0xe5')],'as':_0x606e('0xe6'),'attributes':[_0x606e('0x2b'),_0x606e('0xe7'),_0x606e('0xe8')],'required':![]},{'model':db[_0x606e('0xe9')],'as':_0x606e('0xea'),'attributes':['id',_0x606e('0x2b'),_0x606e('0xeb')],'where':_0x2bdd9d[_0x606e('0x36')][_0x606e('0xec')]?{'id':_0x2bdd9d[_0x606e('0x36')][_0x606e('0xec')]}:undefined,'required':_0x2bdd9d[_0x606e('0x36')]['tag']?!![]:![]}];}return db[_0x606e('0xa8')][_0x606e('0x47')](_0x21d069);})['then'](function(_0x383931){_0x50af58[_0x606e('0x60')]=_0x383931;return _0x50af58;});}})[_0x606e('0x16')](respondWithFilteredResult(_0x128498,_0x21d069))['catch'](handleError(_0x128498,null));};function iftimePromise(_0x40925c,_0x1efa71){return respondWithRpcPromise('Command',_0x606e('0xed'),{'command':_0x1efa71[_0x606e('0xee')]?util[_0x606e('0xa0')](_0x606e('0xef'),_0x40925c[_0x606e('0xf0')],_0x1efa71[_0x606e('0xee')]):util[_0x606e('0xa0')](_0x606e('0xf1'),_0x40925c[_0x606e('0xf0')])},client9002)['then'](function(_0x52b484){var _0x54e262=_0x52b484&&_0x52b484[_0x606e('0xf2')](_0x606e('0xf3'))>=0x0?!![]:![];logger['info'](_0x606e('0xf4'),_0x1efa71['id'],_0x40925c['id'],_0x40925c['interval'],_0x54e262?_0x606e('0xf5'):_0x606e('0xf6'),_0x1efa71[_0x606e('0xee')]?_0x1efa71[_0x606e('0xee')]:_0x606e('0xf7'));return _0x54e262;})[_0x606e('0x4c')](function(_0x5cee9d){logger[_0x606e('0x1c')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1efa71['id'],_0x40925c['id'],_0x40925c[_0x606e('0xf0')],util[_0x606e('0xf8')](_0x5cee9d,{'showHidden':![],'depth':null}),_0x1efa71[_0x606e('0xee')]?_0x1efa71[_0x606e('0xee')]:_0x606e('0xf7'));return![];});}exports[_0x606e('0xed')]=function(_0x3a0dc3,_0x3b784d){var _0x28a1aa=0x0;var _0x886288=0x0;var _0x426617=![];var _0x222e89;var _0x217541;return db['ChatWebsite'][_0x606e('0x4b')]({'where':{'id':_0x3a0dc3[_0x606e('0x55')]['id']},'include':[{'model':db[_0x606e('0xf9')],'as':'Interval','include':[{'model':db['Interval'],'as':_0x606e('0xfa'),'attributes':['id',_0x606e('0xf0')],'raw':!![]}]}]})[_0x606e('0x16')](handleEntityNotFound(_0x3b784d,null))['then'](function(_0x4e4576){if(_0x4e4576){_0x222e89=_0x4e4576;return _0x4e4576[_0x606e('0xfb')]({'raw':!![]});}})[_0x606e('0x16')](function(_0x3d76f7){if(_0x222e89){if(_0x3d76f7){_0x217541=_0x3d76f7;}}return require('../../config/license/util')[_0x606e('0x6f')]();})[_0x606e('0x16')](function(_0x12c75f){if(_0x12c75f){_0x886288=_0x12c75f['virtual'];_0x426617=_0x12c75f[_0x606e('0xfc')];}})[_0x606e('0x16')](function(){return db[_0x606e('0xa8')][_0x606e('0x23')]({'where':{'closed':![]}});})[_0x606e('0x16')](function(_0x57e37e){_0x28a1aa=_0x57e37e;if(_0x886288&&_0x57e37e>_0x886288){return db[_0x606e('0xfd')][_0x606e('0x5a')]({'where':{'id':0x1}})[_0x606e('0x16')](function(_0x2fc5ef){if(_0x2fc5ef){_0x2fc5ef[_0x606e('0xfe')]('chatLicenseExceeded');}});}})[_0x606e('0x16')](function(){if(_0x222e89[_0x606e('0xf9')]&&_0x222e89[_0x606e('0xf9')][_0x606e('0xfa')]){var _0x2e187e=[];for(var _0x557595=0x0;_0x557595<_0x222e89[_0x606e('0xf9')][_0x606e('0xfa')][_0x606e('0x4a')];_0x557595++){var _0xb0533d=_0x222e89[_0x606e('0xf9')][_0x606e('0xfa')][_0x557595][_0x606e('0x27')]({'plain':!![]});_0x2e187e['push'](iftimePromise(_0xb0533d,_0x222e89));}return BPromise[_0x606e('0xff')](_0x2e187e)['then'](function(_0x1fd65d){return _['some'](_0x1fd65d);});}else{return!![];}})[_0x606e('0x16')](function(_0x5e4111){var _0x3d969c=fs['readFileSync'](path[_0x606e('0x6b')](config[_0x606e('0x6c')],'server/files/chat/iframe.ejs'),_0x606e('0x100'));var _0xd9f784=new url[(_0x606e('0x101'))](_0x222e89[_0x606e('0x102')])['origin'];var _0x4acf7a=_0x606e('0x103');var _0x1b1546=![];var _0x4cfa4b={'chatVersion':_0x4acf7a,'chatWebsiteAddressOrigin':_0xd9f784,'remote':_0x222e89['remote'],'query':querystring[_0x606e('0x1b')](_[_0x606e('0x42')](_0x222e89[_0x606e('0x27')]({'plain':!![]}),{'customerIp':_0x3a0dc3[_0x606e('0x96')][_0x606e('0x98')]||_0x3a0dc3[_0x606e('0x96')][_0x606e('0x104')]||_0x3a0dc3[_0x606e('0x105')][_0x606e('0x106')]||_0x3a0dc3['ip'],'referer':_0x3a0dc3[_0x606e('0x96')][_0x606e('0x9d')],'openedInteractions':_0x28a1aa,'maxInteractions':_0x886288,'virtual':_0x426617[_0x606e('0x107')],'online':_0x5e4111,'custom':_0x426617}))[_0x606e('0x108')](/'/g,'\x5c\x27')};_0x3b784d[_0x606e('0x2c')](ejs[_0x606e('0xc5')](Mustache[_0x606e('0xc5')](_0x3d969c,_0x4cfa4b),{'proactiveActions':_0x217541,'alignment':_0x222e89[_0x606e('0x109')],'verticalAlignment':_0x222e89[_0x606e('0x10a')],'div_color':_0x222e89[_0x606e('0xeb')],'labelText':_0x222e89[_0x606e('0x10b')],'text_color':_0x222e89[_0x606e('0x10c')],'text_button_color':_0x222e89[_0x606e('0x10d')],'button_color':_0x222e89['color_button'],'background_color':_0x222e89['backgroundColor'],'hideWhenOffline':_0x222e89[_0x606e('0x10e')],'intervalId':_0x222e89['IntervalId'],'isDevelopment':_0x1b1546,'chatVersion':_0x4acf7a}));})[_0x606e('0x4c')](handleError(_0x3b784d,null));};exports['addApplications']=function(_0x594ea1,_0x50c753){var _0x481d21=_0x594ea1[_0x606e('0x55')]['id'];var _0x3d2a3e=_0x594ea1[_0x606e('0x54')];var _0x2d8949=0xc8;var _0x14bb43=null;return db[_0x606e('0xcc')][_0x606e('0xcd')]({'isolationLevel':db[_0x606e('0xcc')][_0x606e('0x10f')]['ISOLATION_LEVELS'][_0x606e('0x110')]},function(_0x11e81f){return db[_0x606e('0x31')][_0x606e('0x5a')]({'where':{'id':_0x481d21},'transaction':_0x11e81f})[_0x606e('0x16')](function(_0x1ed697){if(_0x1ed697){return db['ChatApplication'][_0x606e('0x26')]({'where':{'ChatWebsiteId':_0x481d21},'transaction':_0x11e81f})[_0x606e('0x16')](function(){var _0xf4982c=_[_0x606e('0x30')](_0x3d2a3e,function(_0x43a5aa){_0x43a5aa['ChatWebsiteId']=_0x481d21;return _0x43a5aa;});return db[_0x606e('0x111')][_0x606e('0x112')](_0xf4982c,{'transaction':_0x11e81f});});}else{_0x2d8949=0x194;_0x14bb43=[];}});})[_0x606e('0x16')](function(){if(_0x2d8949!==0x194){return db[_0x606e('0x111')][_0x606e('0x113')]({'where':{'ChatWebsiteId':_0x481d21},'order':_0x606e('0x94')})[_0x606e('0x16')](function(_0x3f47c6){_0x14bb43=_0x3f47c6;});}})['catch'](function(_0x96b591){_0x2d8949=0x1f4;logger[_0x606e('0x1c')](_0x96b591['stack']);if(_0x96b591['name']){delete _0x96b591[_0x606e('0x2b')];}_0x14bb43=_0x96b591;})[_0x606e('0x114')](function(){if(_0x14bb43===null){_0x50c753[_0x606e('0x1e')](_0x2d8949);}else{if(_0x2d8949===0x1f4){_0x50c753[_0x606e('0x1f')](_0x2d8949)['send'](_0x14bb43);}else{_0x50c753[_0x606e('0x1f')](_0x2d8949)[_0x606e('0x25')](_0x14bb43);}}});};exports['getApplications']=function(_0x366f49,_0x250087){var _0x11fd76={};var _0x3f015b={};var _0x1727b9;var _0x6d4a5;return db[_0x606e('0x31')][_0x606e('0x5a')]({'where':{'id':_0x366f49[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x250087,null))['then'](function(_0x502cf5){if(_0x502cf5){_0x1727b9=_0x502cf5;_0x3f015b[_0x606e('0x39')]=_[_0x606e('0x49')](db['ChatApplication']['rawAttributes']);_0x3f015b[_0x606e('0x36')]=_['keys'](_0x366f49[_0x606e('0x36')]);_0x3f015b[_0x606e('0x37')]=_[_0x606e('0x38')](_0x3f015b[_0x606e('0x39')],_0x3f015b[_0x606e('0x36')]);_0x11fd76['attributes']=_[_0x606e('0x38')](_0x3f015b[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x366f49[_0x606e('0x36')][_0x606e('0x3b')]));_0x11fd76['attributes']=_0x11fd76[_0x606e('0x3a')]['length']?_0x11fd76['attributes']:_0x3f015b[_0x606e('0x39')];_0x11fd76[_0x606e('0x3e')]=qs[_0x606e('0x3f')](_0x366f49[_0x606e('0x36')][_0x606e('0x3f')]);_0x11fd76[_0x606e('0x40')]=qs[_0x606e('0x37')](_[_0x606e('0x41')](_0x366f49[_0x606e('0x36')],_0x3f015b[_0x606e('0x37')]));if(_0x366f49[_0x606e('0x36')][_0x606e('0x43')]){_0x11fd76['where']=_[_0x606e('0x42')](_0x11fd76[_0x606e('0x40')],{'$or':_[_0x606e('0x30')](_0x11fd76[_0x606e('0x3a')],function(_0x512972){var _0x212c60={};_0x212c60[_0x512972]={'$like':'%'+_0x366f49[_0x606e('0x36')][_0x606e('0x43')]+'%'};return _0x212c60;})});}_0x11fd76=_[_0x606e('0x42')]({},_0x11fd76,_0x366f49[_0x606e('0x44')]);return _0x1727b9[_0x606e('0x115')](_0x11fd76);}})[_0x606e('0x16')](function(_0x2ed0f0){if(_0x2ed0f0){_0x6d4a5=_0x2ed0f0[_0x606e('0x4a')];if(!_0x366f49[_0x606e('0x36')]['hasOwnProperty']('nolimit')){_0x11fd76[_0x606e('0x22')]=qs[_0x606e('0x22')](_0x366f49[_0x606e('0x36')][_0x606e('0x22')]);_0x11fd76[_0x606e('0x20')]=qs[_0x606e('0x20')](_0x366f49[_0x606e('0x36')]['offset']);}return _0x1727b9['getApplications'](_0x11fd76);}})[_0x606e('0x16')](function(_0x582d35){if(_0x582d35){return _0x582d35?{'count':_0x6d4a5,'rows':_0x582d35}:null;}})[_0x606e('0x16')](respondWithResult(_0x250087,null))['catch'](handleError(_0x250087,null));};exports[_0x606e('0x116')]=function(_0x58351c,_0x86bb3f){return db[_0x606e('0x117')][_0x606e('0x4b')]({'where':{'id':_0x58351c['params']['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x86bb3f,null))[_0x606e('0x16')](function(_0x19cf50){if(_0x19cf50){return _0x19cf50['addProactiveActions'](_0x58351c['body'][_0x606e('0x5c')],_['omit'](_0x58351c[_0x606e('0x54')],[_0x606e('0x5c'),'id'])||{});}})['then'](respondWithResult(_0x86bb3f,null))[_0x606e('0x4c')](handleError(_0x86bb3f,null));};exports['getProactiveActions']=function(_0x186bb9,_0x1c1c46){var _0x118082={};var _0x37b0a8={};var _0x49f9be;var _0x5db7ad;return db[_0x606e('0x31')]['findOne']({'where':{'id':_0x186bb9[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x1c1c46,null))[_0x606e('0x16')](function(_0x21ea33){if(_0x21ea33){_0x49f9be=_0x21ea33;_0x37b0a8['model']=_[_0x606e('0x49')](db['ChatProactiveAction'][_0x606e('0x32')]);_0x37b0a8['query']=_[_0x606e('0x49')](_0x186bb9[_0x606e('0x36')]);_0x37b0a8[_0x606e('0x37')]=_[_0x606e('0x38')](_0x37b0a8[_0x606e('0x39')],_0x37b0a8[_0x606e('0x36')]);_0x118082[_0x606e('0x3a')]=_[_0x606e('0x38')](_0x37b0a8[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x186bb9[_0x606e('0x36')][_0x606e('0x3b')]));_0x118082[_0x606e('0x3a')]=_0x118082[_0x606e('0x3a')][_0x606e('0x4a')]?_0x118082[_0x606e('0x3a')]:_0x37b0a8[_0x606e('0x39')];_0x118082['order']=qs[_0x606e('0x3f')](_0x186bb9[_0x606e('0x36')][_0x606e('0x3f')]);_0x118082['where']=qs[_0x606e('0x37')](_['pick'](_0x186bb9[_0x606e('0x36')],_0x37b0a8[_0x606e('0x37')]));if(_0x186bb9[_0x606e('0x36')][_0x606e('0x43')]){_0x118082['where']=_[_0x606e('0x42')](_0x118082['where'],{'$or':_[_0x606e('0x30')](_0x118082[_0x606e('0x3a')],function(_0x30ec73){var _0x272fa7={};_0x272fa7[_0x30ec73]={'$like':'%'+_0x186bb9['query'][_0x606e('0x43')]+'%'};return _0x272fa7;})});}_0x118082=_[_0x606e('0x42')]({},_0x118082,_0x186bb9[_0x606e('0x44')]);return _0x49f9be[_0x606e('0xfb')](_0x118082);}})[_0x606e('0x16')](function(_0x3506ee){if(_0x3506ee){_0x5db7ad=_0x3506ee['length'];if(!_0x186bb9[_0x606e('0x36')][_0x606e('0x3c')](_0x606e('0x3d'))){_0x118082['limit']=qs[_0x606e('0x22')](_0x186bb9[_0x606e('0x36')][_0x606e('0x22')]);_0x118082[_0x606e('0x20')]=qs[_0x606e('0x20')](_0x186bb9['query'][_0x606e('0x20')]);}return _0x49f9be[_0x606e('0xfb')](_0x118082);}})['then'](function(_0x3f7ffc){if(_0x3f7ffc){return _0x3f7ffc?{'count':_0x5db7ad,'rows':_0x3f7ffc}:null;}})['then'](respondWithResult(_0x1c1c46,null))[_0x606e('0x4c')](handleError(_0x1c1c46,null));};exports[_0x606e('0x118')]=function(_0x1bd3c8,_0x48e11d){var _0x571dc5=_0x1bd3c8[_0x606e('0x36')][_0x606e('0x119')]===_0x606e('0x11a')?_0x606e('0x11b'):_0x606e('0x11c');return db[_0x606e('0x31')][_0x606e('0x4b')]({'attributes':['id',_0x571dc5],'where':{'id':_0x1bd3c8['params']['id']}})['then'](handleEntityNotFound(_0x48e11d,null))[_0x606e('0x16')](function(_0x13c069){if(_0x13c069){var _0x4e8ee7=_0x13c069[_0x571dc5];var _0x1741d5=_0x4e8ee7&&_0x4e8ee7['items']?_0x4e8ee7['items']:[];_0x48e11d[_0x606e('0x2c')]({'fromKey':_[_0x606e('0x70')](_0x4e8ee7[_0x606e('0x11d')])?undefined:_0x4e8ee7[_0x606e('0x11d')],'count':_0x1741d5[_0x606e('0x4a')],'rows':_0x1741d5});}})[_0x606e('0x4c')](handleError(_0x48e11d,null));};exports[_0x606e('0x11e')]=function(_0x4982f2,_0x4dd529){var _0x4b228c={'raw':![],'where':{}};var _0x446512={};var _0x5a647c={'count':0x0,'rows':[]};return db[_0x606e('0x31')][_0x606e('0x5a')]({'where':{'id':_0x4982f2[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x4dd529,null))['then'](function(_0x4b9a4a){if(_0x4b9a4a){_0x446512['model']=_['keys'](db[_0x606e('0xc7')][_0x606e('0x32')]);_0x446512[_0x606e('0x36')]=_[_0x606e('0x49')](_0x4982f2[_0x606e('0x36')]);_0x446512[_0x606e('0x37')]=_[_0x606e('0x38')](_0x446512[_0x606e('0x39')],_0x446512[_0x606e('0x36')]);_0x4b228c[_0x606e('0x3a')]=_[_0x606e('0x38')](_0x446512[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x4982f2[_0x606e('0x36')]['fields']));_0x4b228c['attributes']=_0x4b228c[_0x606e('0x3a')][_0x606e('0x4a')]?_0x4b228c[_0x606e('0x3a')]:_0x446512[_0x606e('0x39')];if(!_0x4982f2[_0x606e('0x36')][_0x606e('0x3c')]('nolimit')){_0x4b228c[_0x606e('0x22')]=qs[_0x606e('0x22')](_0x4982f2[_0x606e('0x36')][_0x606e('0x22')]);_0x4b228c['offset']=qs[_0x606e('0x20')](_0x4982f2[_0x606e('0x36')][_0x606e('0x20')]);}_0x4b228c[_0x606e('0x3e')]=qs['sort'](_0x4982f2[_0x606e('0x36')][_0x606e('0x3f')]);_0x4b228c[_0x606e('0x40')]=qs['filters'](_[_0x606e('0x41')](_0x4982f2['query'],_0x446512[_0x606e('0x37')]));_0x4b228c[_0x606e('0x40')]['ChatWebsiteId']=_0x4b9a4a['id'];if(_0x4982f2[_0x606e('0x36')][_0x606e('0x43')]){_0x4b228c[_0x606e('0x40')]=_[_0x606e('0x42')](_0x4b228c[_0x606e('0x40')],{'$or':_[_0x606e('0x30')](_0x4b228c[_0x606e('0x3a')],function(_0xb40bdf){var _0x5116c2={};_0x5116c2[_0xb40bdf]={'$like':'%'+_0x4982f2['query']['filter']+'%'};return _0x5116c2;})});}_0x4b228c=_[_0x606e('0x42')]({},_0x4b228c,_0x4982f2[_0x606e('0x44')]);return db[_0x606e('0xc7')][_0x606e('0x23')]({'where':_0x4b228c[_0x606e('0x40')]})[_0x606e('0x16')](function(_0x32e88f){_0x5a647c[_0x606e('0x23')]=_0x32e88f;if(_0x4982f2[_0x606e('0x36')][_0x606e('0x45')]){_0x4b228c[_0x606e('0x46')]=[{'all':!![]}];}else{_0x4b228c[_0x606e('0x46')]=[{'model':db['CmContact'],'as':_0x606e('0xe4'),'required':![]},{'model':db[_0x606e('0x11f')],'as':_0x606e('0x120'),'required':![]}];}return db[_0x606e('0xc7')]['findAll'](_0x4b228c);})[_0x606e('0x16')](function(_0x1f04db){_0x5a647c[_0x606e('0x60')]=_0x1f04db;return _0x5a647c;});}})[_0x606e('0x16')](respondWithFilteredResult(_0x4dd529,_0x4b228c))[_0x606e('0x4c')](handleError(_0x4dd529,null));};exports[_0x606e('0x121')]=function(_0x1e60f6,_0x311ba8){return db['ChatWebsite'][_0x606e('0x4b')]({'where':{'id':_0x1e60f6['params']['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x311ba8,null))[_0x606e('0x16')](function(_0x18ccf4){if(_0x18ccf4){return _0x18ccf4[_0x606e('0x121')](_0x1e60f6[_0x606e('0x54')][_0x606e('0x5c')],_[_0x606e('0xe2')](_0x1e60f6[_0x606e('0x54')],[_0x606e('0x5c'),'id'])||{})[_0x606e('0xab')](function(_0x4ecf9d){for(var _0x154e27=0x0;_0x154e27<_0x1e60f6[_0x606e('0x54')]['ids']['length'];_0x154e27+=0x1){socket['emit'](_0x606e('0x122'),{'UserId':Number(_0x1e60f6[_0x606e('0x54')][_0x606e('0x5c')][_0x154e27]),'ChatWebsiteId':Number(_0x1e60f6[_0x606e('0x55')]['id'])});}return _0x4ecf9d;});}})['then'](respondWithResult(_0x311ba8,null))[_0x606e('0x4c')](handleError(_0x311ba8,null));};exports['removeAgents']=function(_0x3d1ca2,_0x21bf76){return db['ChatWebsite'][_0x606e('0x4b')]({'where':{'id':_0x3d1ca2[_0x606e('0x55')]['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x21bf76,null))[_0x606e('0x16')](function(_0x45376c){if(_0x45376c){return _0x45376c[_0x606e('0x123')](_0x3d1ca2[_0x606e('0x36')]['ids'])['then'](function(){if(_[_0x606e('0x124')](_0x3d1ca2[_0x606e('0x36')][_0x606e('0x5c')])){for(var _0x295d6a=0x0;_0x295d6a<_0x3d1ca2[_0x606e('0x36')][_0x606e('0x5c')][_0x606e('0x4a')];_0x295d6a+=0x1){socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x3d1ca2['query']['ids'][_0x295d6a]),'ChatWebsiteId':Number(_0x3d1ca2[_0x606e('0x55')]['id'])});}}else{socket['emit'](_0x606e('0x125'),{'UserId':Number(_0x3d1ca2[_0x606e('0x36')][_0x606e('0x5c')]),'ChatWebsiteId':Number(_0x3d1ca2['params']['id'])});}});}})[_0x606e('0x16')](respondWithStatusCode(_0x21bf76,null))[_0x606e('0x4c')](handleError(_0x21bf76,null));};exports[_0x606e('0x126')]=function(_0x47208a,_0x30bf62){var _0x16a60c={};var _0x5503d1={};var _0x556238;var _0x302f04;return db['ChatWebsite'][_0x606e('0x5a')]({'where':{'id':_0x47208a['params']['id']}})[_0x606e('0x16')](handleEntityNotFound(_0x30bf62,null))[_0x606e('0x16')](function(_0x360926){if(_0x360926){_0x556238=_0x360926;_0x5503d1[_0x606e('0x39')]=_[_0x606e('0x49')](db[_0x606e('0xe5')][_0x606e('0x32')]);_0x5503d1[_0x606e('0x36')]=_[_0x606e('0x49')](_0x47208a['query']);_0x5503d1[_0x606e('0x37')]=_['intersection'](_0x5503d1['model'],_0x5503d1[_0x606e('0x36')]);_0x16a60c[_0x606e('0x3a')]=_[_0x606e('0x38')](_0x5503d1[_0x606e('0x39')],qs[_0x606e('0x3b')](_0x47208a[_0x606e('0x36')]['fields']));_0x16a60c[_0x606e('0x3a')]=_0x16a60c[_0x606e('0x3a')][_0x606e('0x4a')]?_0x16a60c['attributes']:_0x5503d1[_0x606e('0x39')];_0x16a60c[_0x606e('0x3e')]=qs[_0x606e('0x3f')](_0x47208a[_0x606e('0x36')][_0x606e('0x3f')]);_0x16a60c[_0x606e('0x40')]=qs[_0x606e('0x37')](_['pick'](_0x47208a[_0x606e('0x36')],_0x5503d1['filters']));if(_0x47208a[_0x606e('0x36')][_0x606e('0x43')]){_0x16a60c[_0x606e('0x40')]=_[_0x606e('0x42')](_0x16a60c[_0x606e('0x40')],{'$or':_['map'](_0x16a60c[_0x606e('0x3a')],function(_0x3626a1){var _0x2bfb66={};_0x2bfb66[_0x3626a1]={'$like':'%'+_0x47208a[_0x606e('0x36')][_0x606e('0x43')]+'%'};return _0x2bfb66;})});}_0x16a60c=_[_0x606e('0x42')]({},_0x16a60c,_0x47208a['options']);return _0x556238[_0x606e('0x126')](_0x16a60c);}})[_0x606e('0x16')](function(_0x1849d1){if(_0x1849d1){_0x302f04=_0x1849d1[_0x606e('0x4a')];if(!_0x47208a[_0x606e('0x36')]['hasOwnProperty'](_0x606e('0x3d'))){_0x16a60c[_0x606e('0x22')]=qs['limit'](_0x47208a['query'][_0x606e('0x22')]);_0x16a60c[_0x606e('0x20')]=qs[_0x606e('0x20')](_0x47208a[_0x606e('0x36')][_0x606e('0x20')]);}return _0x556238[_0x606e('0x126')](_0x16a60c);}})['then'](function(_0x346a74){if(_0x346a74){return _0x346a74?{'count':_0x302f04,'rows':_0x346a74}:null;}})[_0x606e('0x16')](respondWithResult(_0x30bf62,null))['catch'](handleError(_0x30bf62,null));};
\ No newline at end of file
+var _0x1c60=['x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','labelText','textColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','transaction','Transaction','READ_COMMITTED','findAndCountAll','finally','getApplications','addProactiveActions','chatProactiveAction','getProactiveActions','ChatProactiveAction','getFields','online','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','removeAgents','userChatWebsite:remove','emit','getAgents','bluebird','mustache','util','fs-extra','lodash','querystring','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','html-to-text','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','end','json','offset','undefined','limit','count','Content-Range','update','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','ChatWebsite','rawAttributes','fieldName','key','model','map','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','type','VIRTUAL','options','rows','params','Pause','mandatoryDispositionPause','keys','intersection','includeAll','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','userProfileId','describe','addDisposition','Disposition','filter','findAll','ids','addAnswer','ChatWebsiteId','getAnswers','findOne','CannedAnswer','pick','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','../../config/license/util','getLicense','custom','isNil','server/files/images/logos/','download','getAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','headers','user-agent','getResult','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','DESC','ChatApplication','Applications','List','account','applications','list','orderBy','priority','asc','contact','customerIp','cf-connecting-ip','first','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','device','vendor','%s\x20%s\x20%s','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','User','UserId','unshift','Start','startRouting','EventManager','notify','offline','files','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','ListId','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOfflineAddress','SendMail','sendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','toPairsIn','email','MailAccountId','NotifyMailAccount','notifyMail','remove','addInteraction','omit','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','interval','iftime\x20%s','indexOf','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','timezone','No\x20timezone','inspect','Interval','Intervals','virtual','License','increment','chatLicenseExceeded','all','server/files/chat/iframe.ejs','origin'];(function(_0x153810,_0x4b3117){var _0x3df31a=function(_0x239357){while(--_0x239357){_0x153810['push'](_0x153810['shift']());}};_0x3df31a(++_0x4b3117);}(_0x1c60,0x145));var _0x01c6=function(_0x3a166a,_0x2018be){_0x3a166a=_0x3a166a-0x0;var _0x1b0279=_0x1c60[_0x3a166a];return _0x1b0279;};'use strict';var BPromise=require(_0x01c6('0x0'));var Mustache=require(_0x01c6('0x1'));var util=require(_0x01c6('0x2'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x01c6('0x3'));var _=require(_0x01c6('0x4'));var querystring=require(_0x01c6('0x5'));var Redis=require(_0x01c6('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x01c6('0x7'))(_0x01c6('0x8'));var config=require(_0x01c6('0x9'));var url=require('url');var db=require(_0x01c6('0xa'))['db'];config[_0x01c6('0xb')]=_[_0x01c6('0xc')](config[_0x01c6('0xb')],{'host':_0x01c6('0xd'),'port':0x18eb});var socket=require(_0x01c6('0xe'))(new Redis(config[_0x01c6('0xb')]));require(_0x01c6('0xf'))['register'](socket);var htmlToText=require(_0x01c6('0x10'));var jayson=require('jayson/promise');var client=jayson['client'][_0x01c6('0x11')]({'port':0x232c});var client9002=jayson[_0x01c6('0x12')][_0x01c6('0x11')]({'port':0x232a});var client9003=jayson[_0x01c6('0x12')]['http']({'port':0x232b});var client9001=jayson[_0x01c6('0x12')][_0x01c6('0x11')]({'port':0x2329});function respondWithRpcPromise(_0x1826c4,_0xf701b5,_0x51ae53,_0x29016f){return new BPromise(function(_0x307d30,_0x504f96){var _0x555fb6=_0x29016f||client;return _0x555fb6[_0x01c6('0x13')](_0x1826c4,_0x51ae53)[_0x01c6('0x14')](function(_0x460d78){logger[_0x01c6('0x15')](_0x01c6('0x16'),_0xf701b5,_0x01c6('0x17'));logger['debug'](_0x01c6('0x18'),_0xf701b5,_0x01c6('0x17'),JSON['stringify'](_0x460d78));if(_0x460d78[_0x01c6('0x19')]){if(_0x460d78[_0x01c6('0x19')][_0x01c6('0x1a')]===0x1f4){logger[_0x01c6('0x19')]('ChatWebsite,\x20%s,\x20%s',_0xf701b5,_0x460d78[_0x01c6('0x19')][_0x01c6('0x1b')]);return _0x504f96(_0x460d78[_0x01c6('0x19')][_0x01c6('0x1b')]);}logger[_0x01c6('0x19')](_0x01c6('0x16'),_0xf701b5,_0x460d78[_0x01c6('0x19')][_0x01c6('0x1b')]);return _0x307d30(_0x460d78[_0x01c6('0x19')]['message']);}else{logger[_0x01c6('0x15')](_0x01c6('0x16'),_0xf701b5,'request\x20sent');_0x307d30(_0x460d78['result'][_0x01c6('0x1b')]);}})[_0x01c6('0x1c')](function(_0x55e8e0){logger[_0x01c6('0x19')](_0x01c6('0x16'),_0xf701b5,_0x55e8e0);_0x504f96(_0x55e8e0);});});}function respondWithStatusCode(_0x3a2ea8,_0x286511){_0x286511=_0x286511||0xcc;return function(_0x5f9bd){if(_0x5f9bd){return _0x3a2ea8['sendStatus'](_0x286511);}return _0x3a2ea8[_0x01c6('0x1d')](_0x286511)[_0x01c6('0x1e')]();};}function respondWithResult(_0xce16d2,_0x7d5f0f){_0x7d5f0f=_0x7d5f0f||0xc8;return function(_0x5037c0){if(_0x5037c0){return _0xce16d2[_0x01c6('0x1d')](_0x7d5f0f)[_0x01c6('0x1f')](_0x5037c0);}};}function respondWithFilteredResult(_0x126eeb,_0x3d2ff0){return function(_0x57c376){if(_0x57c376){var _0xff3973=typeof _0x3d2ff0[_0x01c6('0x20')]===_0x01c6('0x21')&&typeof _0x3d2ff0[_0x01c6('0x22')]===_0x01c6('0x21');var _0x5d3076=_0x57c376[_0x01c6('0x23')];var _0x7dbc18=_0xff3973?0x0:_0x3d2ff0[_0x01c6('0x20')];var _0x566ffc=_0xff3973?_0x57c376[_0x01c6('0x23')]:_0x3d2ff0[_0x01c6('0x20')]+_0x3d2ff0[_0x01c6('0x22')];var _0x5337f8;if(_0x566ffc>=_0x5d3076){_0x566ffc=_0x5d3076;_0x5337f8=0xc8;}else{_0x5337f8=0xce;}_0x126eeb[_0x01c6('0x1d')](_0x5337f8);return _0x126eeb['set'](_0x01c6('0x24'),_0x7dbc18+'-'+_0x566ffc+'/'+_0x5d3076)[_0x01c6('0x1f')](_0x57c376);}return null;};}function saveUpdates(_0x5c11d1){return function(_0x3a8a21){if(_0x3a8a21){return _0x3a8a21[_0x01c6('0x25')](_0x5c11d1)[_0x01c6('0x14')](function(_0x41fdc1){return _0x41fdc1;});}return null;};}function removeEntity(_0x3ece58){return function(_0xa5ae44){if(_0xa5ae44){return _0xa5ae44['destroy']()[_0x01c6('0x14')](function(){var _0x59f600=_0xa5ae44[_0x01c6('0x26')]({'plain':!![]});var _0x5c81d1='ChatWebsites';return db[_0x01c6('0x27')][_0x01c6('0x28')]({'where':{'type':_0x5c81d1,'resourceId':_0x59f600['id']}})[_0x01c6('0x14')](function(){return _0xa5ae44;});})[_0x01c6('0x14')](function(){_0x3ece58['status'](0xcc)[_0x01c6('0x1e')]();});}};}function handleEntityNotFound(_0x114da6){return function(_0x13ccff){if(!_0x13ccff){_0x114da6[_0x01c6('0x29')](0x194);}return _0x13ccff;};}function handleError(_0x20584e,_0x817ce3){_0x817ce3=_0x817ce3||0x1f4;return function(_0x34a011){logger[_0x01c6('0x19')](_0x34a011[_0x01c6('0x2a')]);if(_0x34a011[_0x01c6('0x2b')]){delete _0x34a011[_0x01c6('0x2b')];}_0x20584e[_0x01c6('0x1d')](_0x817ce3)[_0x01c6('0x2c')](_0x34a011);};}exports[_0x01c6('0x2d')]=function(_0xeb05c,_0x480985){var _0x3de85c={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x42e851={},_0x200b31={'count':0x0,'rows':[]};var _0x207bc6=_['map'](db[_0x01c6('0x2e')][_0x01c6('0x2f')],function(_0x5c57b9){return{'name':_0x5c57b9[_0x01c6('0x30')],'type':_0x5c57b9['type'][_0x01c6('0x31')]};});_0x42e851[_0x01c6('0x32')]=_[_0x01c6('0x33')](_0x207bc6,_0x01c6('0x2b'));_0x42e851[_0x01c6('0x34')]=_['keys'](_0xeb05c[_0x01c6('0x34')]);_0x42e851['filters']=_['intersection'](_0x42e851['model'],_0x42e851[_0x01c6('0x34')]);_0x3de85c[_0x01c6('0x35')]=_['intersection'](_0x42e851[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0xeb05c[_0x01c6('0x34')][_0x01c6('0x36')]));_0x3de85c[_0x01c6('0x35')]=_0x3de85c[_0x01c6('0x35')][_0x01c6('0x37')]?_0x3de85c['attributes']:_0x42e851['model'];if(!_0xeb05c[_0x01c6('0x34')][_0x01c6('0x38')](_0x01c6('0x39'))){_0x3de85c[_0x01c6('0x22')]=qs[_0x01c6('0x22')](_0xeb05c['query'][_0x01c6('0x22')]);_0x3de85c['offset']=qs['offset'](_0xeb05c['query'][_0x01c6('0x20')]);}_0x3de85c[_0x01c6('0x3a')]=qs['sort'](_0xeb05c[_0x01c6('0x34')][_0x01c6('0x3b')]);_0x3de85c['where']=qs[_0x01c6('0x3c')](_['pick'](_0xeb05c['query'],_0x42e851[_0x01c6('0x3c')]),_0x207bc6);if(_0xeb05c[_0x01c6('0x34')]['filter']){_0x3de85c[_0x01c6('0x3d')]=_[_0x01c6('0x3e')](_0x3de85c[_0x01c6('0x3d')],{'$or':_[_0x01c6('0x33')](_0x207bc6,function(_0x15ddb3){if(_0x15ddb3[_0x01c6('0x3f')]!==_0x01c6('0x40')){var _0x5ad96={};_0x5ad96[_0x15ddb3[_0x01c6('0x2b')]]={'$like':'%'+_0xeb05c[_0x01c6('0x34')]['filter']+'%'};return _0x5ad96;}})});}_0x3de85c=_[_0x01c6('0x3e')]({},_0x3de85c,_0xeb05c[_0x01c6('0x41')]);var _0x8b8e63={'where':_0x3de85c[_0x01c6('0x3d')]};return db['ChatWebsite']['count'](_0x8b8e63)[_0x01c6('0x14')](function(_0x31687c){_0x200b31[_0x01c6('0x23')]=_0x31687c;if(_0xeb05c['query']['includeAll']){_0x3de85c['include']=[{'all':!![]}];}return db['ChatWebsite']['findAll'](_0x3de85c);})[_0x01c6('0x14')](function(_0x12296c){_0x200b31[_0x01c6('0x42')]=_0x12296c;return _0x200b31;})[_0x01c6('0x14')](respondWithFilteredResult(_0x480985,_0x3de85c))['catch'](handleError(_0x480985,null));};exports['show']=function(_0x2a1631,_0xb3a8dd){var _0x34a96c={'raw':![],'where':{'id':_0x2a1631[_0x01c6('0x43')]['id']},'include':[{'model':db[_0x01c6('0x44')],'as':_0x01c6('0x45')}]},_0x39741a={};_0x39741a['model']=_[_0x01c6('0x46')](db[_0x01c6('0x2e')][_0x01c6('0x2f')]);_0x39741a[_0x01c6('0x34')]=_['keys'](_0x2a1631[_0x01c6('0x34')]);_0x39741a[_0x01c6('0x3c')]=_['intersection'](_0x39741a[_0x01c6('0x32')],_0x39741a['query']);_0x34a96c[_0x01c6('0x35')]=_[_0x01c6('0x47')](_0x39741a[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0x2a1631[_0x01c6('0x34')][_0x01c6('0x36')]));_0x34a96c[_0x01c6('0x35')]=_0x34a96c[_0x01c6('0x35')]['length']?_0x34a96c[_0x01c6('0x35')]:_0x39741a['model'];if(_0x2a1631[_0x01c6('0x34')][_0x01c6('0x48')]){_0x34a96c[_0x01c6('0x49')]=[{'all':!![]}];}_0x34a96c=_[_0x01c6('0x3e')]({},_0x34a96c,_0x2a1631[_0x01c6('0x41')]);return db[_0x01c6('0x2e')][_0x01c6('0x4a')](_0x34a96c)[_0x01c6('0x14')](handleEntityNotFound(_0xb3a8dd,null))[_0x01c6('0x14')](respondWithResult(_0xb3a8dd,null))[_0x01c6('0x1c')](handleError(_0xb3a8dd,null));};exports[_0x01c6('0x4b')]=function(_0x9ffa2e,_0x1be4b3){return db[_0x01c6('0x2e')][_0x01c6('0x4b')](_0x9ffa2e[_0x01c6('0x4c')],{})['then'](function(_0x33c137){var _0x14b3eb=_0x9ffa2e[_0x01c6('0x4d')][_0x01c6('0x26')]({'plain':!![]});if(!_0x14b3eb)throw new Error(_0x01c6('0x4e'));if(_0x14b3eb[_0x01c6('0x4f')]===_0x01c6('0x4d')){var _0x5528f2=_0x33c137[_0x01c6('0x26')]({'plain':!![]});var _0xded1e7=_0x01c6('0x50');return db['UserProfileSection'][_0x01c6('0x4a')]({'where':{'name':_0xded1e7,'userProfileId':_0x14b3eb[_0x01c6('0x51')]},'raw':!![]})['then'](function(_0x352d3f){if(_0x352d3f&&_0x352d3f['autoAssociation']===0x0){return db[_0x01c6('0x27')][_0x01c6('0x4b')]({'name':_0x5528f2[_0x01c6('0x2b')],'resourceId':_0x5528f2['id'],'type':_0x352d3f[_0x01c6('0x2b')],'sectionId':_0x352d3f['id']},{})[_0x01c6('0x14')](function(){return _0x33c137;});}else{return _0x33c137;}})['catch'](function(_0x2f35e1){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f35e1);throw _0x2f35e1;});}return _0x33c137;})[_0x01c6('0x14')](respondWithResult(_0x1be4b3,0xc9))[_0x01c6('0x1c')](handleError(_0x1be4b3,null));};exports['update']=function(_0x4b5d62,_0x1469b2){if(_0x4b5d62['body']['id']){delete _0x4b5d62[_0x01c6('0x4c')]['id'];}return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x4b5d62[_0x01c6('0x43')]['id']},'include':[{'model':db[_0x01c6('0x44')],'as':_0x01c6('0x45')}]})[_0x01c6('0x14')](handleEntityNotFound(_0x1469b2,null))[_0x01c6('0x14')](saveUpdates(_0x4b5d62['body'],null))['then'](respondWithResult(_0x1469b2,null))['catch'](handleError(_0x1469b2,null));};exports[_0x01c6('0x28')]=function(_0x470ad9,_0xf3f2d1){return db[_0x01c6('0x2e')]['find']({'where':{'id':_0x470ad9[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0xf3f2d1,null))[_0x01c6('0x14')](removeEntity(_0xf3f2d1,null))['catch'](handleError(_0xf3f2d1,null));};exports[_0x01c6('0x52')]=function(_0x34d6dc,_0x472583){return db[_0x01c6('0x2e')][_0x01c6('0x52')]()[_0x01c6('0x14')](respondWithResult(_0x472583,null))['catch'](handleError(_0x472583,null));};exports[_0x01c6('0x53')]=function(_0x37beb2,_0xefb6ac){if(_0x37beb2[_0x01c6('0x4c')]['id']){delete _0x37beb2['body']['id'];}return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x37beb2[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0xefb6ac,null))['then'](function(_0x5213a9){if(_0x5213a9){_0x37beb2[_0x01c6('0x4c')]['ChatWebsiteId']=_0x5213a9['id'];return db[_0x01c6('0x54')]['create'](_0x37beb2['body']);}})[_0x01c6('0x14')](respondWithResult(_0xefb6ac,null))[_0x01c6('0x1c')](handleError(_0xefb6ac,null));};exports['getDispositions']=function(_0xd8424d,_0x49f10d){var _0x219f03={'raw':![],'where':{}};var _0x248185={};var _0x4a8b43={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0xd8424d['params']['id']}})['then'](handleEntityNotFound(_0x49f10d,null))[_0x01c6('0x14')](function(_0x5a0ac8){if(_0x5a0ac8){_0x248185[_0x01c6('0x32')]=_[_0x01c6('0x46')](db[_0x01c6('0x54')][_0x01c6('0x2f')]);_0x248185[_0x01c6('0x34')]=_[_0x01c6('0x46')](_0xd8424d[_0x01c6('0x34')]);_0x248185['filters']=_['intersection'](_0x248185[_0x01c6('0x32')],_0x248185[_0x01c6('0x34')]);_0x219f03['attributes']=_['intersection'](_0x248185[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0xd8424d[_0x01c6('0x34')]['fields']));_0x219f03[_0x01c6('0x35')]=_0x219f03[_0x01c6('0x35')]['length']?_0x219f03['attributes']:_0x248185['model'];if(!_0xd8424d[_0x01c6('0x34')]['hasOwnProperty']('nolimit')){_0x219f03[_0x01c6('0x22')]=qs[_0x01c6('0x22')](_0xd8424d[_0x01c6('0x34')][_0x01c6('0x22')]);_0x219f03[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0xd8424d[_0x01c6('0x34')][_0x01c6('0x20')]);}_0x219f03['order']=qs[_0x01c6('0x3b')](_0xd8424d[_0x01c6('0x34')][_0x01c6('0x3b')]);_0x219f03['where']=qs['filters'](_['pick'](_0xd8424d[_0x01c6('0x34')],_0x248185[_0x01c6('0x3c')]));_0x219f03[_0x01c6('0x3d')]['ChatWebsiteId']=_0x5a0ac8['id'];if(_0xd8424d[_0x01c6('0x34')][_0x01c6('0x55')]){_0x219f03[_0x01c6('0x3d')]=_[_0x01c6('0x3e')](_0x219f03[_0x01c6('0x3d')],{'$or':_['map'](_0x219f03['attributes'],function(_0x5479d7){var _0x3c0954={};_0x3c0954[_0x5479d7]={'$like':'%'+_0xd8424d[_0x01c6('0x34')]['filter']+'%'};return _0x3c0954;})});}_0x219f03=_['merge']({},_0x219f03,_0xd8424d[_0x01c6('0x41')]);return db[_0x01c6('0x54')][_0x01c6('0x23')]({'where':_0x219f03['where']})['then'](function(_0x2f685d){_0x4a8b43[_0x01c6('0x23')]=_0x2f685d;if(_0xd8424d[_0x01c6('0x34')][_0x01c6('0x48')]){_0x219f03[_0x01c6('0x49')]=[{'all':!![]}];}return db[_0x01c6('0x54')][_0x01c6('0x56')](_0x219f03);})[_0x01c6('0x14')](function(_0x2961e3){_0x4a8b43[_0x01c6('0x42')]=_0x2961e3;return _0x4a8b43;});}})[_0x01c6('0x14')](respondWithFilteredResult(_0x49f10d,_0x219f03))[_0x01c6('0x1c')](handleError(_0x49f10d,null));};exports['removeDispositions']=function(_0x5c7e32,_0x339eda){return db['ChatWebsite']['find']({'where':{'id':_0x5c7e32[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x339eda,null))[_0x01c6('0x14')](function(_0x38ba10){if(_0x38ba10){return _0x38ba10['removeDispositions'](_0x5c7e32[_0x01c6('0x34')][_0x01c6('0x57')]);}})['then'](respondWithStatusCode(_0x339eda,null))[_0x01c6('0x1c')](handleError(_0x339eda,null));};exports[_0x01c6('0x58')]=function(_0x2b208d,_0x1d1901){if(_0x2b208d[_0x01c6('0x4c')]['id']){delete _0x2b208d[_0x01c6('0x4c')]['id'];}return db[_0x01c6('0x2e')]['find']({'where':{'id':_0x2b208d['params']['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x1d1901,null))[_0x01c6('0x14')](function(_0x56e885){if(_0x56e885){_0x2b208d[_0x01c6('0x4c')][_0x01c6('0x59')]=_0x56e885['id'];return db['CannedAnswer'][_0x01c6('0x4b')](_0x2b208d[_0x01c6('0x4c')]);}})[_0x01c6('0x14')](respondWithResult(_0x1d1901,null))['catch'](handleError(_0x1d1901,null));};exports[_0x01c6('0x5a')]=function(_0x114033,_0x468201){var _0x33b123={'raw':![],'where':{}};var _0x2b64b5={};var _0x42613c={'count':0x0,'rows':[]};return db[_0x01c6('0x2e')][_0x01c6('0x5b')]({'where':{'id':_0x114033[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x468201,null))['then'](function(_0x40a29e){if(_0x40a29e){_0x2b64b5[_0x01c6('0x32')]=_['keys'](db[_0x01c6('0x5c')]['rawAttributes']);_0x2b64b5[_0x01c6('0x34')]=_['keys'](_0x114033[_0x01c6('0x34')]);_0x2b64b5[_0x01c6('0x3c')]=_['intersection'](_0x2b64b5[_0x01c6('0x32')],_0x2b64b5[_0x01c6('0x34')]);_0x33b123['attributes']=_['intersection'](_0x2b64b5[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0x114033[_0x01c6('0x34')][_0x01c6('0x36')]));_0x33b123[_0x01c6('0x35')]=_0x33b123[_0x01c6('0x35')][_0x01c6('0x37')]?_0x33b123[_0x01c6('0x35')]:_0x2b64b5['model'];if(!_0x114033[_0x01c6('0x34')][_0x01c6('0x38')](_0x01c6('0x39'))){_0x33b123['limit']=qs[_0x01c6('0x22')](_0x114033[_0x01c6('0x34')][_0x01c6('0x22')]);_0x33b123[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0x114033[_0x01c6('0x34')][_0x01c6('0x20')]);}_0x33b123[_0x01c6('0x3a')]=qs[_0x01c6('0x3b')](_0x114033[_0x01c6('0x34')][_0x01c6('0x3b')]);_0x33b123[_0x01c6('0x3d')]=qs[_0x01c6('0x3c')](_[_0x01c6('0x5d')](_0x114033['query'],_0x2b64b5['filters']));_0x33b123[_0x01c6('0x3d')][_0x01c6('0x59')]=_0x40a29e['id'];if(_0x114033[_0x01c6('0x34')][_0x01c6('0x55')]){_0x33b123[_0x01c6('0x3d')]=_['merge'](_0x33b123[_0x01c6('0x3d')],{'$or':_[_0x01c6('0x33')](_0x33b123['attributes'],function(_0x4f10b9){var _0x239025={};_0x239025[_0x4f10b9]={'$like':'%'+_0x114033[_0x01c6('0x34')][_0x01c6('0x55')]+'%'};return _0x239025;})});}_0x33b123=_[_0x01c6('0x3e')]({},_0x33b123,_0x114033[_0x01c6('0x41')]);return db['CannedAnswer']['count']({'where':_0x33b123[_0x01c6('0x3d')]})[_0x01c6('0x14')](function(_0xee8c6c){_0x42613c[_0x01c6('0x23')]=_0xee8c6c;if(_0x114033[_0x01c6('0x34')][_0x01c6('0x48')]){_0x33b123[_0x01c6('0x49')]=[{'all':!![]}];}return db[_0x01c6('0x5c')]['findAll'](_0x33b123);})['then'](function(_0x292847){_0x42613c[_0x01c6('0x42')]=_0x292847;return _0x42613c;});}})[_0x01c6('0x14')](respondWithFilteredResult(_0x468201,_0x33b123))['catch'](handleError(_0x468201,null));};exports[_0x01c6('0x5e')]=function(_0x206790,_0x1d01f8){return db[_0x01c6('0x2e')]['find']({'where':{'id':_0x206790[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x1d01f8,null))['then'](function(_0x10be76){if(_0x10be76){return _0x10be76[_0x01c6('0x5e')](_0x206790['query']['ids']);}})[_0x01c6('0x14')](respondWithStatusCode(_0x1d01f8,null))[_0x01c6('0x1c')](handleError(_0x1d01f8,null));};exports[_0x01c6('0x5f')]=function(_0x50e180,_0x2c029a){_0x50e180[_0x01c6('0x4c')][_0x01c6('0x60')]=_0x50e180[_0x01c6('0x61')][_0x01c6('0x62')];return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x50e180[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x2c029a,null))[_0x01c6('0x14')](saveUpdates(_0x50e180['body'],null))[_0x01c6('0x14')](respondWithResult(_0x2c029a,null))[_0x01c6('0x1c')](handleError(_0x2c029a,null));};exports[_0x01c6('0x63')]=function(_0x52e1f2,_0x5d994e){_0x52e1f2[_0x01c6('0x4c')][_0x01c6('0x64')]=_0x52e1f2[_0x01c6('0x61')][_0x01c6('0x62')];return db['ChatWebsite'][_0x01c6('0x4a')]({'where':{'id':_0x52e1f2[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x5d994e,null))[_0x01c6('0x14')](saveUpdates(_0x52e1f2[_0x01c6('0x4c')],null))[_0x01c6('0x14')](respondWithResult(_0x5d994e,null))[_0x01c6('0x1c')](handleError(_0x5d994e,null));};exports[_0x01c6('0x65')]=function(_0x2d0fb2,_0x186413){_0x2d0fb2['body'][_0x01c6('0x66')]=_0x2d0fb2[_0x01c6('0x61')][_0x01c6('0x62')];return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x2d0fb2[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x186413,null))[_0x01c6('0x14')](saveUpdates(_0x2d0fb2[_0x01c6('0x4c')],null))['then'](respondWithResult(_0x186413,null))['catch'](handleError(_0x186413,null));};exports['addSystemAvatar']=function(_0x1e83d1,_0x1d3688){_0x1e83d1[_0x01c6('0x4c')][_0x01c6('0x67')]=_0x1e83d1['file'][_0x01c6('0x62')];return db['ChatWebsite'][_0x01c6('0x4a')]({'where':{'id':_0x1e83d1['params']['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x1d3688,null))[_0x01c6('0x14')](saveUpdates(_0x1e83d1[_0x01c6('0x4c')],null))[_0x01c6('0x14')](respondWithResult(_0x1d3688,null))[_0x01c6('0x1c')](handleError(_0x1d3688,null));};exports[_0x01c6('0x68')]=function(_0x7c2b12,_0x462598){var _0x16a51a=path[_0x01c6('0x69')](config[_0x01c6('0x6a')],'server/files/images/logos/default_logo.svg');var _0x35169f={'where':{'id':_0x7c2b12[_0x01c6('0x43')]['id']},'attributes':['id',_0x01c6('0x60')],'raw':!![]};var _0x73671f=![];return require(_0x01c6('0x6b'))[_0x01c6('0x6c')]()[_0x01c6('0x14')](function(_0x1497cb){if(_0x1497cb){_0x73671f=_0x1497cb[_0x01c6('0x6d')];}})[_0x01c6('0x14')](function(){return db['ChatWebsite']['find'](_0x35169f);})['then'](handleEntityNotFound(_0x462598,null))[_0x01c6('0x14')](function(_0x41e991){if(_0x41e991){if(!_[_0x01c6('0x6e')](_0x41e991[_0x01c6('0x60')])){if(fs['existsSync'](path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x6f'),_0x41e991[_0x01c6('0x60')]))&&_0x73671f){_0x16a51a=path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x6f'),_0x41e991['sitepic']);}}return _0x462598[_0x01c6('0x70')](_0x16a51a);}})['catch'](handleError(_0x462598,null));};exports[_0x01c6('0x71')]=function(_0x2c3066,_0xff1a06){var _0x5d5e27=path['join'](config['root'],'server/files/images/avatars/default_avatar.png');var _0x8d1cc1={'where':{'id':_0x2c3066[_0x01c6('0x43')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x01c6('0x2e')][_0x01c6('0x4a')](_0x8d1cc1)[_0x01c6('0x14')](handleEntityNotFound(_0xff1a06,null))['then'](function(_0x4d9cec){if(_0x4d9cec){if(!_[_0x01c6('0x6e')](_0x4d9cec['agentAvatar'])){if(fs[_0x01c6('0x72')](path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x73'),_0x4d9cec[_0x01c6('0x64')]))){_0x5d5e27=path[_0x01c6('0x69')](config['root'],_0x01c6('0x73'),_0x4d9cec[_0x01c6('0x64')]);}}return _0xff1a06['download'](_0x5d5e27);}})['catch'](handleError(_0xff1a06,null));};exports[_0x01c6('0x74')]=function(_0x405d50,_0x40d276){var _0x1df500=path[_0x01c6('0x69')](config['root'],_0x01c6('0x75'));var _0x2ac796={'where':{'id':_0x405d50[_0x01c6('0x43')]['id']},'attributes':['id',_0x01c6('0x66'),_0x01c6('0x76')],'raw':!![]};return db[_0x01c6('0x2e')][_0x01c6('0x4a')](_0x2ac796)[_0x01c6('0x14')](handleEntityNotFound(_0x40d276,null))[_0x01c6('0x14')](function(_0x28319a){if(_0x28319a){if(!_[_0x01c6('0x6e')](_0x28319a['customerAvatar'])){if(fs[_0x01c6('0x72')](path['join'](config[_0x01c6('0x6a')],_0x01c6('0x73'),_0x28319a[_0x01c6('0x66')]))&&_0x28319a[_0x01c6('0x76')]){_0x1df500=path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x73'),_0x28319a['customerAvatar']);}}return _0x40d276[_0x01c6('0x70')](_0x1df500);}})[_0x01c6('0x1c')](handleError(_0x40d276,null));};exports[_0x01c6('0x77')]=function(_0x4baeef,_0xdd22e2){var _0x604baf=path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x78'));var _0x3497bc={'where':{'id':_0x4baeef[_0x01c6('0x43')]['id']},'attributes':['id',_0x01c6('0x67')],'raw':!![]};return db[_0x01c6('0x2e')][_0x01c6('0x4a')](_0x3497bc)[_0x01c6('0x14')](handleEntityNotFound(_0xdd22e2,null))[_0x01c6('0x14')](function(_0x360e91){if(_0x360e91){if(!_[_0x01c6('0x6e')](_0x360e91[_0x01c6('0x67')])){if(fs[_0x01c6('0x72')](path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0x73'),_0x360e91[_0x01c6('0x67')]))){_0x604baf=path['join'](config[_0x01c6('0x6a')],_0x01c6('0x73'),_0x360e91[_0x01c6('0x67')]);}}return _0xdd22e2[_0x01c6('0x70')](_0x604baf);}})[_0x01c6('0x1c')](handleError(_0xdd22e2,null));};exports['notify']=function(_0x3a08d,_0xcfbe0d){var _0x2a68e8=require(_0x01c6('0x79'));var _0x47e3c5=new _0x2a68e8();var _0x3511ce=_0x47e3c5[_0x01c6('0x7a')](_0x3a08d[_0x01c6('0x7b')][_0x01c6('0x7c')])[_0x01c6('0x7d')]();var _0x116632={'body':_0x3a08d[_0x01c6('0x4c')],'channel':'chat'};var _0x506e3e=[];var _0x462ad9=[];var _0x1989c5={};var _0xb29707=![];return db[_0x01c6('0x7e')][_0x01c6('0x52')]()['then'](function(_0x4a19d2){if(!_0x4a19d2){throw new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))](_0x01c6('0x81'));}_0x506e3e=_[_0x01c6('0x82')](_[_0x01c6('0x46')](_0x4a19d2),[_0x01c6('0x83'),_0x01c6('0x84')]);_0x462ad9=_[_0x01c6('0x82')](_[_0x01c6('0x46')](_0x4a19d2),['createdAt','updatedAt',_0x01c6('0x85'),'ListId']);if(_0x3a08d[_0x01c6('0x4c')]['id']){delete _0x3a08d[_0x01c6('0x4c')]['id'];}if(_['isNil'](_0x3a08d[_0x01c6('0x4c')]['from'])){throw new db[(_0x01c6('0x7f'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x4c')])||_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x4c')]===''){throw new db['Sequelize']['ValidationError'](_0x01c6('0x86'));}if(_['isNil'](_0x3a08d['body'][_0x01c6('0x87')])){throw new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x462ad9);}if(!_['includes'](_0x462ad9,_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x87')])){throw new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))](_0x01c6('0x88')+_0x462ad9);}_0x1989c5[_0x3a08d[_0x01c6('0x4c')]['mapKey']]=_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x89')];})[_0x01c6('0x14')](function(){return db['ChatWebsite'][_0x01c6('0x4a')]({'where':{'id':_0x3a08d['params']['id']},'include':[{'model':db[_0x01c6('0x8a')],'as':'List','include':[{'model':db[_0x01c6('0x7e')],'as':'Contacts','where':_0x1989c5,'limit':0x1,'order':[['updatedAt',_0x01c6('0x8b')]]}]},{'model':db[_0x01c6('0x8c')],'as':_0x01c6('0x8d')}]});})[_0x01c6('0x14')](handleEntityNotFound(_0xcfbe0d,null))['then'](function(_0xf57315){if(_0xf57315&&_0xf57315[_0x01c6('0x8e')]){_0x116632[_0x01c6('0x8f')]=_0xf57315;_0x116632[_0x01c6('0x90')]=_0xf57315['Applications'];_0x116632[_0x01c6('0x91')]=_0xf57315[_0x01c6('0x8e')];_0x116632[_0x01c6('0x90')]=_[_0x01c6('0x92')](_0x116632[_0x01c6('0x90')],[_0x01c6('0x93')],[_0x01c6('0x94')]);if(_0x116632[_0x01c6('0x8f')][_0x01c6('0x8d')]){delete _0x116632[_0x01c6('0x8f')][_0x01c6('0x8d')];}if(_0x116632['account'][_0x01c6('0x8e')]&&_0x116632['account'][_0x01c6('0x8e')]['Contacts']['length']){return _0x116632['account'][_0x01c6('0x8e')]['Contacts'][0x0];}var _0x4814eb=_[_0x01c6('0xc')](_0x3a08d[_0x01c6('0x4c')],{'firstName':_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x89')],'ListId':_0xf57315['ListId']});_0x4814eb[_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x87')]]=_0x3a08d[_0x01c6('0x4c')]['from'];return db[_0x01c6('0x7e')][_0x01c6('0x4b')](_0x4814eb,{'fields':_0x506e3e,'raw':!![]});}})[_0x01c6('0x14')](handleEntityNotFound(_0xcfbe0d,null))[_0x01c6('0x14')](function(_0x4b8c8b){_0x116632[_0x01c6('0x95')]=_0x4b8c8b;var _0x2d66c5=_0x3a08d['body'][_0x01c6('0x96')];if(_0x3a08d[_0x01c6('0x7b')]['cf-connecting-ip']){_0x2d66c5=_0x3a08d[_0x01c6('0x7b')][_0x01c6('0x97')];}else if(_0x3a08d[_0x01c6('0x7b')]['x-forwarded-for']){_0x2d66c5=_[_0x01c6('0x98')](_0x3a08d[_0x01c6('0x7b')][_0x01c6('0x99')][_0x01c6('0x9a')](','));}if(_0x4b8c8b){var _0x89d485={'ContactId':_0x4b8c8b['id'],'ChatWebsiteId':_0x3a08d[_0x01c6('0x43')]['id'],'from':(_0x4b8c8b[_0x01c6('0x9b')]||'')+'\x20'+(_0x4b8c8b[_0x01c6('0x9c')]||''),'customerIp':_0x2d66c5,'customerPort':_0x3a08d[_0x01c6('0x7b')][_0x01c6('0x9d')]?_0x3a08d[_0x01c6('0x7b')][_0x01c6('0x9d')]:null,'referer':_0x3a08d[_0x01c6('0x4c')][_0x01c6('0x9e')],'browserName':_0x3511ce[_0x01c6('0x9f')]['name']&&_0x3511ce[_0x01c6('0x9f')][_0x01c6('0xa0')]?util[_0x01c6('0xa1')]('%s\x20%s',_0x3511ce[_0x01c6('0x9f')][_0x01c6('0x2b')],_0x3511ce[_0x01c6('0x9f')][_0x01c6('0xa0')]):'unknown','browserVersion':_0x3511ce[_0x01c6('0x9f')][_0x01c6('0xa0')]||'unknown','osName':util[_0x01c6('0xa1')](_0x01c6('0xa2'),_0x3511ce['os']['name'],_0x3511ce['os'][_0x01c6('0xa0')]),'osVersion':_0x3511ce['os'][_0x01c6('0xa0')],'deviceModel':_0x3511ce['device'][_0x01c6('0x32')]&&_0x3511ce[_0x01c6('0xa3')][_0x01c6('0xa4')]?util[_0x01c6('0xa1')](_0x01c6('0xa5'),_0x3511ce[_0x01c6('0xa3')][_0x01c6('0x32')],_0x3511ce[_0x01c6('0xa3')]['vendor'],_0x3511ce[_0x01c6('0xa3')][_0x01c6('0x3f')]):null,'deviceVendor':_0x3511ce[_0x01c6('0xa3')]['vendor'],'deviceType':_0x3511ce[_0x01c6('0xa3')][_0x01c6('0x3f')],'formData':JSON[_0x01c6('0xa6')](_0x3a08d[_0x01c6('0x4c')])};var _0x49ac8d={'ChatWebsiteId':_0x3a08d['params']['id'],'closed':![]};if(_0x3a08d['body'][_0x01c6('0xa7')]){_0x49ac8d[_0x01c6('0xa7')]=_0x3a08d[_0x01c6('0x4c')]['threadId'];return db[_0x01c6('0xa8')][_0x01c6('0x4a')]({'where':_0x49ac8d})[_0x01c6('0x14')](function(_0xdd8fcb){if(_0xdd8fcb){return[_0xdd8fcb,![]];}_0x89d485[_0x01c6('0xa7')]=_0x3a08d[_0x01c6('0x4c')][_0x01c6('0xa7')];_0x89d485['externalUrl']=_0x3a08d[_0x01c6('0x4c')][_0x01c6('0xa9')];return db[_0x01c6('0xa8')][_0x01c6('0x4b')](_0x89d485)[_0x01c6('0x14')](function(_0x5a6fec){return[_0x5a6fec,!![]];});});}_0x49ac8d[_0x01c6('0xaa')]=_0x4b8c8b['id'];if(_0x3a08d[_0x01c6('0x4c')]['interaction']&&_0x3a08d['body'][_0x01c6('0xab')]['id']){_0x49ac8d['id']=_0x3a08d[_0x01c6('0x4c')]['interaction']['id'];return db[_0x01c6('0xa8')][_0x01c6('0x4a')]({'where':_0x49ac8d})[_0x01c6('0x14')](function(_0x2a06c4){if(_0x2a06c4){return[_0x2a06c4,![]];}return db['ChatInteraction'][_0x01c6('0x4b')](_0x89d485)[_0x01c6('0x14')](function(_0x11f3db){return[_0x11f3db,!![]];});});}return db[_0x01c6('0xa8')][_0x01c6('0x4b')](_0x89d485)[_0x01c6('0x14')](function(_0x2bf91f){return[_0x2bf91f,!![]];});}})[_0x01c6('0xac')](function(_0x596e97,_0x9a30d4){if(_0x596e97){_0xb29707=_0x9a30d4;if(!_0x9a30d4){var _0x5b6b76={'from':(_0x116632[_0x01c6('0x95')][_0x01c6('0x9b')]||'')+'\x20'+(_0x116632['contact'][_0x01c6('0x9c')]||'')};if(_0x3a08d[_0x01c6('0x4c')][_0x01c6('0xa7')]&&_0x3a08d['body'][_0x01c6('0xad')]&&_0x3a08d['body'][_0x01c6('0xa7')]!=_0x3a08d['body']['messageId']){_0x5b6b76[_0x01c6('0xa7')]=_0x3a08d['body'][_0x01c6('0xad')];}return _0x596e97['update'](_0x5b6b76);}else{return _0x596e97;}}})[_0x01c6('0x14')](function(_0xfc46a){_0x116632[_0x01c6('0xab')]=_0xfc46a[_0x01c6('0x26')]({'plain':!![]});_0x116632[_0x01c6('0xab')][_0x01c6('0xae')]=_0xb29707;if(_0x116632[_0x01c6('0xab')][_0x01c6('0xae')]){if(_0x116632[_0x01c6('0x8f')][_0x01c6('0xaf')]){_0x116632[_0x01c6('0x90')][_0x01c6('0xb0')]({'id':0x0,'priority':_0x116632['applications']['length']+0x1,'app':_0x01c6('0xb1'),'appdata':_0x01c6('0xb2'),'interval':_0x01c6('0xb3')});}}return db[_0x01c6('0xb4')][_0x01c6('0x4b')]({'body':_0x3a08d['body'][_0x01c6('0x4c')],'ChatWebsiteId':_0x3a08d['params']['id'],'ChatInteractionId':_0xfc46a['id'],'direction':'in','ContactId':_0x116632[_0x01c6('0x95')]['id'],'AttachmentId':_0x3a08d['body'][_0x01c6('0xb5')]});})[_0x01c6('0x14')](function(_0x3e4669){_0x116632[_0x01c6('0x1b')]=_0x3e4669;if(_0x116632[_0x01c6('0xab')]['UserId']){return db[_0x01c6('0xb6')]['find']({'attributes':['id',_0x01c6('0x2b')],'where':{'id':_0x116632[_0x01c6('0xab')][_0x01c6('0xb7')]}})[_0x01c6('0x14')](function(_0x4ba28a){if(_0x4ba28a){_0x116632[_0x01c6('0x90')][_0x01c6('0xb8')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4ba28a[_0x01c6('0x2b')]+','+(_0x116632['account']['waitForTheAssignedAgent']||0xa),'interval':_0x01c6('0xb3')});_0x116632['forcedOwnership']=!![];}return respondWithRpcPromise(_0x01c6('0xb9'),_0x01c6('0xba'),_0x116632);});}return respondWithRpcPromise('Start',_0x01c6('0xba'),_0x116632);})['then'](function(_0x1edf67){respondWithRpcPromise(_0x01c6('0xbb'),'EventManager',{'event':_0x01c6('0xbc'),'message':_0x1edf67},client9002);return _0x1edf67;})[_0x01c6('0x14')](respondWithResult(_0xcfbe0d,null))['catch'](handleError(_0xcfbe0d,null));};exports[_0x01c6('0xbd')]=function(_0x12d023,_0x2fe7ea){var _0x3d8f2e,_0x13ae75,_0x50dbc8;var _0x274dbb=[];var _0x28c365={};var _0x29da69=_0x12d023[_0x01c6('0xbe')]||[];var _0x3d2b37=[];var _0x18c1ba;return db['CmContact'][_0x01c6('0x52')]()[_0x01c6('0x14')](function(_0x1c9d8){if(!_0x1c9d8){throw new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))]('no\x20available\x20attributes');}_0x274dbb=_[_0x01c6('0x82')](_['keys'](_0x1c9d8),[_0x01c6('0x83'),_0x01c6('0x84'),_0x01c6('0x85'),'ListId']);if(_0x12d023[_0x01c6('0x4c')]['id']){delete _0x12d023[_0x01c6('0x4c')]['id'];}if(_[_0x01c6('0x6e')](_0x12d023[_0x01c6('0x4c')][_0x01c6('0x89')])){throw _0x2fe7ea['status'](0x1f4)[_0x01c6('0x2c')](new db['Sequelize']['ValidationError'](_0x01c6('0xbf')));}if(_[_0x01c6('0x6e')](_0x12d023[_0x01c6('0x4c')][_0x01c6('0x4c')])||_0x12d023[_0x01c6('0x4c')]['body']===''){throw _0x2fe7ea['status'](0x1f4)[_0x01c6('0x2c')](new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))](_0x01c6('0x86')));}if(_[_0x01c6('0x6e')](_0x12d023[_0x01c6('0x4c')][_0x01c6('0xc0')])){throw _0x2fe7ea['status'](0x1f4)[_0x01c6('0x2c')](new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x274dbb));}if(!_['includes'](_0x274dbb,_0x12d023['body'][_0x01c6('0xc0')])){throw _0x2fe7ea[_0x01c6('0x1d')](0x1f4)[_0x01c6('0x2c')](new db[(_0x01c6('0x7f'))][(_0x01c6('0x80'))](_0x01c6('0xc1')+_0x274dbb));}_0x28c365[_0x12d023['body'][_0x01c6('0xc0')]]=_0x12d023[_0x01c6('0x4c')][_0x01c6('0x89')];})['then'](function(){return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x12d023[_0x01c6('0x43')]['id']},'include':[{'model':db[_0x01c6('0x8a')],'as':_0x01c6('0x8e')},{'model':db[_0x01c6('0xc2')],'as':_0x01c6('0xc2')}]});})['then'](handleEntityNotFound(_0x2fe7ea,null))[_0x01c6('0x14')](function(_0x1a257f){if(_0x1a257f&&_0x1a257f[_0x01c6('0x8e')]){_0x13ae75=_0x1a257f;var _0x1ca746=_[_0x01c6('0xc')](_0x12d023[_0x01c6('0x4c')],{'firstName':_0x12d023[_0x01c6('0x4c')]['from'],'phone':_0x12d023['body'][_0x01c6('0x89')],'ListId':_0x1a257f[_0x01c6('0xc3')]});_0x1ca746[_0x12d023[_0x01c6('0x4c')][_0x01c6('0xc0')]]=_0x12d023[_0x01c6('0x4c')][_0x01c6('0x89')];return db[_0x01c6('0x7e')][_0x01c6('0xc4')]({'where':_0x28c365,'defaults':_0x1ca746});}})['spread'](function(_0x54d841){if(_0x54d841){_0x50dbc8=_0x54d841;var _0x1a1b17=fs[_0x01c6('0xc5')](path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0xc6')),'utf8');var _0x2f8244=ejs[_0x01c6('0xc7')](_0x1a1b17,{'body':_['toPairs'](_0x12d023['body'][_0x01c6('0x4c')]),'bodyTitle':_0x13ae75[_0x01c6('0xc8')]});return db[_0x01c6('0xc9')][_0x01c6('0x4b')]({'body':_0x2f8244,'plainBody':htmlToText[_0x01c6('0xca')](_0x2f8244),'ContactId':_0x54d841['id'],'ChatWebsiteId':_0x13ae75['id']});}})['then'](function(_0x317773){_0x18c1ba=_0x317773;if(_0x29da69[_0x01c6('0x37')]){var _0x483fb6=_0x29da69[_0x01c6('0x33')](function(_0x3c0987){return{'name':_0x3c0987[_0x01c6('0xcb')],'basename':_0x3c0987['filename'],'type':_0x3c0987[_0x01c6('0xcc')],'ChatOfflineMessageId':_0x317773['id']};});_0x3d2b37=_0x483fb6['map'](_0x1735ca=>{var _0x13cce8={'filename':_0x1735ca[_0x01c6('0x2b')],'path':path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0xcd'),'files',_0x01c6('0xce'),_0x01c6('0xcf'),_0x1735ca[_0x01c6('0xd0')])};return _0x13cce8;});if(!_0x13ae75[_0x01c6('0xd1')]){return db[_0x01c6('0xd2')]['transaction'](function(_0x5a03ee){return db[_0x01c6('0xd3')][_0x01c6('0xd4')](_0x483fb6,{'transaction':_0x5a03ee});});}}})[_0x01c6('0x14')](function(){if(_0x18c1ba){_0x3d8f2e=_0x18c1ba;return db[_0x01c6('0xc2')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x01c6('0xd5')],'as':_0x01c6('0xd6'),'raw':!![],'include':[{'model':db[_0x01c6('0xd7')],'as':_0x01c6('0xd7'),'raw':!![]}]}]});}})[_0x01c6('0x14')](function(_0x5acf4a){if(_0x5acf4a&&_0x5acf4a[_0x01c6('0xd6')]&&_0x13ae75['forwardOffline']&&_0x13ae75[_0x01c6('0xd8')]){var _0x29c36a=_0x5acf4a['getSmtpOptions']();return respondWithRpcPromise(_0x01c6('0xd9'),_0x01c6('0xda'),{'account':_0x29c36a,'message':{'from':util[_0x01c6('0xa1')](_0x01c6('0xdb'),_0x5acf4a[_0x01c6('0x2b')],_0x5acf4a['email']||_0x5acf4a[_0x01c6('0xd6')][_0x01c6('0x4d')]),'to':_0x13ae75[_0x01c6('0xd8')],'subject':_0x13ae75[_0x01c6('0xdc')],'html':_0x3d8f2e['body'],'attachments':_0x3d2b37}},client9003)['then'](function(){return _0x3d8f2e;})[_0x01c6('0x1c')](function(_0x55c705){logger[_0x01c6('0x19')](_0x55c705);});}})[_0x01c6('0x14')](function(){if(_0x13ae75&&_0x13ae75[_0x01c6('0xd1')]&&_0x13ae75['MailAccountId']){var _0x486eb6=[];if(_0x29da69[_0x01c6('0x37')]){_0x486eb6=_0x29da69[_0x01c6('0x33')](function(_0x3e05d9){return{'name':_0x3e05d9[_0x01c6('0xcb')],'basename':_0x3e05d9[_0x01c6('0x62')],'type':_0x3e05d9['mimetype'],'ChatOfflineMessageId':_0x18c1ba['id']};});}var _0x41a206;if(!_['isNil'](_0x13ae75['subjectOffline'])){var _0x33edd7=_['map'](_0x12d023[_0x01c6('0x4c')],function(_0x2d9e4d){return _0x2d9e4d;});var _0x598f33=_[_0x01c6('0xdd')](_0x33edd7)[0x0];var _0x2c751e=_['mapValues'](_0x598f33,function(_0x527e86){return _0x527e86;});_0x41a206=_0x2c751e[0x1][_0x13ae75['subjectOffline']];}var _0x27b096={'from':_0x50dbc8[_0x01c6('0xde')],'firstName':_0x50dbc8['firstName'],'lastName':_0x50dbc8['lastName'],'mapKey':'email','message':{'from':_0x50dbc8[_0x01c6('0xde')],'to':_0x13ae75[_0x01c6('0xc2')][_0x01c6('0xde')],'cc':'','subject':_[_0x01c6('0x6e')](_0x41a206)?_0x13ae75[_0x01c6('0xdc')]:_0x41a206,'messageId':'','sentAt':new Date(),'attach':_0x486eb6[_0x01c6('0x37')],'attachments':_0x486eb6,'originChannel':'Chat','ChatWebsiteId':_0x13ae75['id'],'ChatOfflineMessageId':_0x3d8f2e['id'],'originTo':_0x13ae75[_0x01c6('0xc2')][_0x01c6('0xde')]},'body':_0x3d8f2e[_0x01c6('0x4c')]};var _0x5e404c={'account':{'id':_0x13ae75[_0x01c6('0xdf')]},'body':_0x27b096,'log':_0x01c6('0xe0')};return respondWithRpcPromise('NotifyMailAccount',_0x01c6('0xe1'),_0x5e404c,client9001)[_0x01c6('0x14')](function(){return _0x3d8f2e;})[_0x01c6('0x1c')](function(_0x2d1bd0){logger[_0x01c6('0x19')](_0x2d1bd0);});}return;})[_0x01c6('0x14')](function(){if(_0x3d8f2e){return _0x3d8f2e;}})[_0x01c6('0x14')](respondWithResult(_0x2fe7ea,null))['catch'](function(_0x17db17){logger['error'](_0x01c6('0x1c'),_0x17db17);for(var _0x1ad6cf of _0x29da69){var _0x3452dc=path[_0x01c6('0x69')](config[_0x01c6('0x6a')],'server',_0x01c6('0xbe'),_0x01c6('0xce'),_0x01c6('0xcf'),_0x1ad6cf['filename']);fs_extra[_0x01c6('0xe2')](_0x3452dc)[_0x01c6('0x1c')](function(_0x16b01d){logger['error']('Could\x20not\x20remove\x20attachment\x20file',_0x3452dc,_0x16b01d);});}});};exports['addInteraction']=function(_0x10c538,_0x49752c){return db[_0x01c6('0xa8')][_0x01c6('0x4a')]({'where':{'id':_0x10c538[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x49752c,null))[_0x01c6('0x14')](function(_0x4a823f){if(_0x4a823f){return _0x4a823f[_0x01c6('0xe3')](_0x10c538[_0x01c6('0x4c')]['ids'],_[_0x01c6('0xe4')](_0x10c538[_0x01c6('0x4c')],[_0x01c6('0x57'),'id'])||{});}})['then'](respondWithResult(_0x49752c,null))[_0x01c6('0x1c')](handleError(_0x49752c,null));};exports[_0x01c6('0xe5')]=function(_0xfa55c4,_0x45bba6){var _0x5e7e29={'raw':![],'where':{}};var _0x3f8122={};var _0x260a25={'count':0x0,'rows':[]};return db[_0x01c6('0x2e')]['findOne']({'where':{'id':_0xfa55c4[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x45bba6,null))[_0x01c6('0x14')](function(_0x3aba39){if(_0x3aba39){_0x3f8122[_0x01c6('0x32')]=_[_0x01c6('0x46')](db[_0x01c6('0xa8')]['rawAttributes']);_0x3f8122[_0x01c6('0x34')]=_[_0x01c6('0x46')](_0xfa55c4[_0x01c6('0x34')]);_0x3f8122[_0x01c6('0x3c')]=_[_0x01c6('0x47')](_0x3f8122['model'],_0x3f8122[_0x01c6('0x34')]);_0x5e7e29[_0x01c6('0x35')]=_['intersection'](_0x3f8122['model'],qs[_0x01c6('0x36')](_0xfa55c4[_0x01c6('0x34')][_0x01c6('0x36')]));_0x5e7e29['attributes']=_0x5e7e29[_0x01c6('0x35')][_0x01c6('0x37')]?_0x5e7e29['attributes']:_0x3f8122[_0x01c6('0x32')];if(!_0xfa55c4[_0x01c6('0x34')]['hasOwnProperty'](_0x01c6('0x39'))){_0x5e7e29[_0x01c6('0x22')]=qs[_0x01c6('0x22')](_0xfa55c4['query']['limit']);_0x5e7e29[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0xfa55c4[_0x01c6('0x34')][_0x01c6('0x20')]);}_0x5e7e29[_0x01c6('0x3a')]=qs[_0x01c6('0x3b')](_0xfa55c4[_0x01c6('0x34')][_0x01c6('0x3b')]);_0x5e7e29[_0x01c6('0x3d')]=qs[_0x01c6('0x3c')](_['pick'](_0xfa55c4[_0x01c6('0x34')],_0x3f8122[_0x01c6('0x3c')]));_0x5e7e29[_0x01c6('0x3d')]['ChatWebsiteId']=_0x3aba39['id'];if(_0xfa55c4[_0x01c6('0x34')][_0x01c6('0x55')]){_0x5e7e29['where']=_[_0x01c6('0x3e')](_0x5e7e29['where'],{'$or':_[_0x01c6('0x33')](_0x5e7e29[_0x01c6('0x35')],function(_0x1be0dc){var _0x5e69b1={};_0x5e69b1[_0x1be0dc]={'$like':'%'+_0xfa55c4[_0x01c6('0x34')][_0x01c6('0x55')]+'%'};return _0x5e69b1;})});}_0x5e7e29=_['merge']({},_0x5e7e29,_0xfa55c4[_0x01c6('0x41')]);return db['ChatInteraction'][_0x01c6('0x23')]({'where':_0x5e7e29[_0x01c6('0x3d')]})[_0x01c6('0x14')](function(_0x2a7abb){_0x260a25[_0x01c6('0x23')]=_0x2a7abb;if(_0xfa55c4[_0x01c6('0x34')]['includeAll']){_0x5e7e29[_0x01c6('0x49')]=[{'model':db[_0x01c6('0x7e')],'as':_0x01c6('0xe6'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x01c6('0x2b'),_0x01c6('0xe7'),_0x01c6('0xe8')],'required':![]},{'model':db[_0x01c6('0xe9')],'as':_0x01c6('0xea'),'attributes':['id',_0x01c6('0x2b'),_0x01c6('0xeb')],'where':_0xfa55c4['query'][_0x01c6('0xec')]?{'id':_0xfa55c4[_0x01c6('0x34')][_0x01c6('0xec')]}:undefined,'required':_0xfa55c4[_0x01c6('0x34')]['tag']?!![]:![]}];}return db[_0x01c6('0xa8')][_0x01c6('0x56')](_0x5e7e29);})['then'](function(_0x358300){_0x260a25[_0x01c6('0x42')]=_0x358300;return _0x260a25;});}})[_0x01c6('0x14')](respondWithFilteredResult(_0x45bba6,_0x5e7e29))[_0x01c6('0x1c')](handleError(_0x45bba6,null));};function iftimePromise(_0x454b8d,_0x1cf51f){return respondWithRpcPromise(_0x01c6('0xed'),_0x01c6('0xee'),{'command':_0x1cf51f['timezone']?util[_0x01c6('0xa1')]('iftime\x20%s,%s',_0x454b8d[_0x01c6('0xef')],_0x1cf51f['timezone']):util['format'](_0x01c6('0xf0'),_0x454b8d['interval'])},client9002)[_0x01c6('0x14')](function(_0x237d44){var _0x46a28a=_0x237d44&&_0x237d44[_0x01c6('0xf1')]('true')>=0x0?!![]:![];logger[_0x01c6('0x15')](_0x01c6('0xf2'),_0x1cf51f['id'],_0x454b8d['id'],_0x454b8d[_0x01c6('0xef')],_0x46a28a?'ONLINE':'OFFLINE',_0x1cf51f[_0x01c6('0xf3')]?_0x1cf51f[_0x01c6('0xf3')]:_0x01c6('0xf4'));return _0x46a28a;})[_0x01c6('0x1c')](function(_0x22e68e){logger[_0x01c6('0x19')](_0x01c6('0xf2'),_0x1cf51f['id'],_0x454b8d['id'],_0x454b8d[_0x01c6('0xef')],util[_0x01c6('0xf5')](_0x22e68e,{'showHidden':![],'depth':null}),_0x1cf51f[_0x01c6('0xf3')]?_0x1cf51f[_0x01c6('0xf3')]:_0x01c6('0xf4'));return![];});}exports['getSnippet']=function(_0x5168c7,_0x52fc91){var _0x563dea=0x0;var _0x149f7c=0x0;var _0x50eb3f=![];var _0x31dac6;var _0xb3b3c;return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x5168c7[_0x01c6('0x43')]['id']},'include':[{'model':db[_0x01c6('0xf6')],'as':_0x01c6('0xf6'),'include':[{'model':db[_0x01c6('0xf6')],'as':_0x01c6('0xf7'),'attributes':['id',_0x01c6('0xef')],'raw':!![]}]}]})[_0x01c6('0x14')](handleEntityNotFound(_0x52fc91,null))['then'](function(_0x3c778a){if(_0x3c778a){_0x31dac6=_0x3c778a;return _0x3c778a['getProactiveActions']({'raw':!![]});}})[_0x01c6('0x14')](function(_0x4c86af){if(_0x31dac6){if(_0x4c86af){_0xb3b3c=_0x4c86af;}}return require(_0x01c6('0x6b'))['getLicense']();})[_0x01c6('0x14')](function(_0x192775){if(_0x192775){_0x149f7c=_0x192775[_0x01c6('0xf8')];_0x50eb3f=_0x192775[_0x01c6('0x6d')];}})[_0x01c6('0x14')](function(){return db[_0x01c6('0xa8')]['count']({'where':{'closed':![]}});})['then'](function(_0x2b3381){_0x563dea=_0x2b3381;if(_0x149f7c&&_0x2b3381>_0x149f7c){return db[_0x01c6('0xf9')][_0x01c6('0x5b')]({'where':{'id':0x1}})[_0x01c6('0x14')](function(_0x59138a){if(_0x59138a){_0x59138a[_0x01c6('0xfa')](_0x01c6('0xfb'));}});}})[_0x01c6('0x14')](function(){if(_0x31dac6[_0x01c6('0xf6')]&&_0x31dac6['Interval'][_0x01c6('0xf7')]){var _0xbbfad0=[];for(var _0x56e445=0x0;_0x56e445<_0x31dac6['Interval'][_0x01c6('0xf7')][_0x01c6('0x37')];_0x56e445++){var _0x1c7b71=_0x31dac6[_0x01c6('0xf6')][_0x01c6('0xf7')][_0x56e445][_0x01c6('0x26')]({'plain':!![]});_0xbbfad0[_0x01c6('0xb0')](iftimePromise(_0x1c7b71,_0x31dac6));}return BPromise[_0x01c6('0xfc')](_0xbbfad0)[_0x01c6('0x14')](function(_0x421382){return _['some'](_0x421382);});}else{return!![];}})[_0x01c6('0x14')](function(_0x480e9d){var _0x51a72b=fs['readFileSync'](path[_0x01c6('0x69')](config[_0x01c6('0x6a')],_0x01c6('0xfd')),'utf8');var _0x1d4536=new url['URL'](_0x31dac6['address'])[_0x01c6('0xfe')];var _0x506d6b='3.1.0';var _0x18696e=![];var _0x554d7b={'chatVersion':_0x506d6b,'chatWebsiteAddressOrigin':_0x1d4536,'remote':_0x31dac6['remote'],'query':querystring[_0x01c6('0xa6')](_['merge'](_0x31dac6[_0x01c6('0x26')]({'plain':!![]}),{'customerIp':_0x5168c7[_0x01c6('0x7b')][_0x01c6('0x99')]||_0x5168c7['headers'][_0x01c6('0xff')]||_0x5168c7[_0x01c6('0x100')][_0x01c6('0x101')]||_0x5168c7['ip'],'referer':_0x5168c7[_0x01c6('0x7b')][_0x01c6('0x9e')],'openedInteractions':_0x563dea,'maxInteractions':_0x149f7c,'virtual':_0x50eb3f[_0x01c6('0xf8')],'online':_0x480e9d,'custom':_0x50eb3f}))[_0x01c6('0x102')](/'/g,'\x5c\x27')};_0x52fc91[_0x01c6('0x2c')](ejs[_0x01c6('0xc7')](Mustache[_0x01c6('0xc7')](_0x51a72b,_0x554d7b),{'proactiveActions':_0xb3b3c,'alignment':_0x31dac6[_0x01c6('0x103')],'verticalAlignment':_0x31dac6[_0x01c6('0x104')],'div_color':_0x31dac6[_0x01c6('0xeb')],'labelText':_0x31dac6[_0x01c6('0x105')],'text_color':_0x31dac6[_0x01c6('0x106')],'text_button_color':_0x31dac6['textButtonColor'],'button_color':_0x31dac6[_0x01c6('0x107')],'background_color':_0x31dac6[_0x01c6('0x108')],'hideWhenOffline':_0x31dac6[_0x01c6('0x109')],'intervalId':_0x31dac6[_0x01c6('0x10a')],'isDevelopment':_0x18696e,'chatVersion':_0x506d6b}));})['catch'](handleError(_0x52fc91,null));};exports[_0x01c6('0x10b')]=function(_0x5a264e,_0x3e5e56){var _0x44a7c0=_0x5a264e[_0x01c6('0x43')]['id'];var _0x4a4a90=_0x5a264e[_0x01c6('0x4c')];var _0xdbc4f4=0xc8;var _0x52fcf4=null;return db['sequelize'][_0x01c6('0x10c')]({'isolationLevel':db[_0x01c6('0xd2')][_0x01c6('0x10d')]['ISOLATION_LEVELS'][_0x01c6('0x10e')]},function(_0x1aba14){return db[_0x01c6('0x2e')][_0x01c6('0x5b')]({'where':{'id':_0x44a7c0},'transaction':_0x1aba14})[_0x01c6('0x14')](function(_0x4f2336){if(_0x4f2336){return db[_0x01c6('0x8c')][_0x01c6('0x28')]({'where':{'ChatWebsiteId':_0x44a7c0},'transaction':_0x1aba14})[_0x01c6('0x14')](function(){var _0x1cc775=_[_0x01c6('0x33')](_0x4a4a90,function(_0x344ebd){_0x344ebd[_0x01c6('0x59')]=_0x44a7c0;return _0x344ebd;});return db[_0x01c6('0x8c')][_0x01c6('0xd4')](_0x1cc775,{'transaction':_0x1aba14});});}else{_0xdbc4f4=0x194;_0x52fcf4=[];}});})['then'](function(){if(_0xdbc4f4!==0x194){return db[_0x01c6('0x8c')][_0x01c6('0x10f')]({'where':{'ChatWebsiteId':_0x44a7c0},'order':_0x01c6('0x93')})[_0x01c6('0x14')](function(_0x37f793){_0x52fcf4=_0x37f793;});}})['catch'](function(_0x4e685b){_0xdbc4f4=0x1f4;logger[_0x01c6('0x19')](_0x4e685b[_0x01c6('0x2a')]);if(_0x4e685b['name']){delete _0x4e685b[_0x01c6('0x2b')];}_0x52fcf4=_0x4e685b;})[_0x01c6('0x110')](function(){if(_0x52fcf4===null){_0x3e5e56['sendStatus'](_0xdbc4f4);}else{if(_0xdbc4f4===0x1f4){_0x3e5e56['status'](_0xdbc4f4)[_0x01c6('0x2c')](_0x52fcf4);}else{_0x3e5e56[_0x01c6('0x1d')](_0xdbc4f4)[_0x01c6('0x1f')](_0x52fcf4);}}});};exports[_0x01c6('0x111')]=function(_0x379894,_0x7a09c5){var _0x3c82cd={};var _0x15f2b7={};var _0x1cebf7;var _0x2cbbcb;return db[_0x01c6('0x2e')][_0x01c6('0x5b')]({'where':{'id':_0x379894[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x7a09c5,null))[_0x01c6('0x14')](function(_0x340a63){if(_0x340a63){_0x1cebf7=_0x340a63;_0x15f2b7['model']=_[_0x01c6('0x46')](db['ChatApplication']['rawAttributes']);_0x15f2b7[_0x01c6('0x34')]=_[_0x01c6('0x46')](_0x379894[_0x01c6('0x34')]);_0x15f2b7[_0x01c6('0x3c')]=_[_0x01c6('0x47')](_0x15f2b7[_0x01c6('0x32')],_0x15f2b7[_0x01c6('0x34')]);_0x3c82cd[_0x01c6('0x35')]=_['intersection'](_0x15f2b7[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0x379894[_0x01c6('0x34')][_0x01c6('0x36')]));_0x3c82cd[_0x01c6('0x35')]=_0x3c82cd[_0x01c6('0x35')][_0x01c6('0x37')]?_0x3c82cd[_0x01c6('0x35')]:_0x15f2b7['model'];_0x3c82cd[_0x01c6('0x3a')]=qs[_0x01c6('0x3b')](_0x379894['query'][_0x01c6('0x3b')]);_0x3c82cd['where']=qs[_0x01c6('0x3c')](_['pick'](_0x379894[_0x01c6('0x34')],_0x15f2b7[_0x01c6('0x3c')]));if(_0x379894['query'][_0x01c6('0x55')]){_0x3c82cd['where']=_[_0x01c6('0x3e')](_0x3c82cd[_0x01c6('0x3d')],{'$or':_[_0x01c6('0x33')](_0x3c82cd[_0x01c6('0x35')],function(_0x54b7bb){var _0x1ac454={};_0x1ac454[_0x54b7bb]={'$like':'%'+_0x379894[_0x01c6('0x34')][_0x01c6('0x55')]+'%'};return _0x1ac454;})});}_0x3c82cd=_[_0x01c6('0x3e')]({},_0x3c82cd,_0x379894['options']);return _0x1cebf7[_0x01c6('0x111')](_0x3c82cd);}})[_0x01c6('0x14')](function(_0x29f90d){if(_0x29f90d){_0x2cbbcb=_0x29f90d[_0x01c6('0x37')];if(!_0x379894[_0x01c6('0x34')][_0x01c6('0x38')](_0x01c6('0x39'))){_0x3c82cd[_0x01c6('0x22')]=qs[_0x01c6('0x22')](_0x379894[_0x01c6('0x34')][_0x01c6('0x22')]);_0x3c82cd[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0x379894[_0x01c6('0x34')]['offset']);}return _0x1cebf7[_0x01c6('0x111')](_0x3c82cd);}})[_0x01c6('0x14')](function(_0x1de683){if(_0x1de683){return _0x1de683?{'count':_0x2cbbcb,'rows':_0x1de683}:null;}})[_0x01c6('0x14')](respondWithResult(_0x7a09c5,null))[_0x01c6('0x1c')](handleError(_0x7a09c5,null));};exports[_0x01c6('0x112')]=function(_0x18e348,_0x4b18c2){return db[_0x01c6('0x113')][_0x01c6('0x4a')]({'where':{'id':_0x18e348[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x4b18c2,null))[_0x01c6('0x14')](function(_0x295781){if(_0x295781){return _0x295781[_0x01c6('0x112')](_0x18e348[_0x01c6('0x4c')][_0x01c6('0x57')],_[_0x01c6('0xe4')](_0x18e348[_0x01c6('0x4c')],[_0x01c6('0x57'),'id'])||{});}})[_0x01c6('0x14')](respondWithResult(_0x4b18c2,null))[_0x01c6('0x1c')](handleError(_0x4b18c2,null));};exports[_0x01c6('0x114')]=function(_0x3546b4,_0x57764d){var _0x4cc779={};var _0x172c13={};var _0x13f4ec;var _0x3adac5;return db['ChatWebsite']['findOne']({'where':{'id':_0x3546b4[_0x01c6('0x43')]['id']}})['then'](handleEntityNotFound(_0x57764d,null))[_0x01c6('0x14')](function(_0x3f1408){if(_0x3f1408){_0x13f4ec=_0x3f1408;_0x172c13[_0x01c6('0x32')]=_[_0x01c6('0x46')](db[_0x01c6('0x115')][_0x01c6('0x2f')]);_0x172c13['query']=_['keys'](_0x3546b4[_0x01c6('0x34')]);_0x172c13[_0x01c6('0x3c')]=_[_0x01c6('0x47')](_0x172c13[_0x01c6('0x32')],_0x172c13[_0x01c6('0x34')]);_0x4cc779[_0x01c6('0x35')]=_[_0x01c6('0x47')](_0x172c13['model'],qs[_0x01c6('0x36')](_0x3546b4['query']['fields']));_0x4cc779['attributes']=_0x4cc779[_0x01c6('0x35')][_0x01c6('0x37')]?_0x4cc779[_0x01c6('0x35')]:_0x172c13[_0x01c6('0x32')];_0x4cc779[_0x01c6('0x3a')]=qs[_0x01c6('0x3b')](_0x3546b4[_0x01c6('0x34')]['sort']);_0x4cc779[_0x01c6('0x3d')]=qs[_0x01c6('0x3c')](_[_0x01c6('0x5d')](_0x3546b4[_0x01c6('0x34')],_0x172c13[_0x01c6('0x3c')]));if(_0x3546b4[_0x01c6('0x34')][_0x01c6('0x55')]){_0x4cc779[_0x01c6('0x3d')]=_[_0x01c6('0x3e')](_0x4cc779[_0x01c6('0x3d')],{'$or':_[_0x01c6('0x33')](_0x4cc779['attributes'],function(_0xa99809){var _0x37c049={};_0x37c049[_0xa99809]={'$like':'%'+_0x3546b4[_0x01c6('0x34')][_0x01c6('0x55')]+'%'};return _0x37c049;})});}_0x4cc779=_['merge']({},_0x4cc779,_0x3546b4[_0x01c6('0x41')]);return _0x13f4ec['getProactiveActions'](_0x4cc779);}})[_0x01c6('0x14')](function(_0x1d1d1f){if(_0x1d1d1f){_0x3adac5=_0x1d1d1f[_0x01c6('0x37')];if(!_0x3546b4['query'][_0x01c6('0x38')](_0x01c6('0x39'))){_0x4cc779[_0x01c6('0x22')]=qs['limit'](_0x3546b4['query'][_0x01c6('0x22')]);_0x4cc779['offset']=qs[_0x01c6('0x20')](_0x3546b4['query']['offset']);}return _0x13f4ec[_0x01c6('0x114')](_0x4cc779);}})[_0x01c6('0x14')](function(_0x48fd07){if(_0x48fd07){return _0x48fd07?{'count':_0x3adac5,'rows':_0x48fd07}:null;}})[_0x01c6('0x14')](respondWithResult(_0x57764d,null))[_0x01c6('0x1c')](handleError(_0x57764d,null));};exports[_0x01c6('0x116')]=function(_0x4a7d1d,_0x45c720){var _0x365d6e=_0x4a7d1d[_0x01c6('0x34')][_0x01c6('0x117')]==='false'?'offlineForm':_0x01c6('0x118');return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'attributes':['id',_0x365d6e],'where':{'id':_0x4a7d1d[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x45c720,null))[_0x01c6('0x14')](function(_0x3b0683){if(_0x3b0683){var _0x95d7d0=_0x3b0683[_0x365d6e];var _0x261d62=_0x95d7d0&&_0x95d7d0['items']?_0x95d7d0[_0x01c6('0x119')]:[];_0x45c720[_0x01c6('0x2c')]({'fromKey':_['isNil'](_0x95d7d0[_0x01c6('0x11a')])?undefined:_0x95d7d0[_0x01c6('0x11a')],'count':_0x261d62[_0x01c6('0x37')],'rows':_0x261d62});}})[_0x01c6('0x1c')](handleError(_0x45c720,null));};exports[_0x01c6('0x11b')]=function(_0x34d5eb,_0x269cd8){var _0x5f1785={'raw':![],'where':{}};var _0x4ac78e={};var _0x432369={'count':0x0,'rows':[]};return db[_0x01c6('0x2e')][_0x01c6('0x5b')]({'where':{'id':_0x34d5eb['params']['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x269cd8,null))[_0x01c6('0x14')](function(_0xfa3890){if(_0xfa3890){_0x4ac78e['model']=_[_0x01c6('0x46')](db[_0x01c6('0xc9')][_0x01c6('0x2f')]);_0x4ac78e[_0x01c6('0x34')]=_['keys'](_0x34d5eb[_0x01c6('0x34')]);_0x4ac78e[_0x01c6('0x3c')]=_[_0x01c6('0x47')](_0x4ac78e[_0x01c6('0x32')],_0x4ac78e[_0x01c6('0x34')]);_0x5f1785['attributes']=_[_0x01c6('0x47')](_0x4ac78e['model'],qs[_0x01c6('0x36')](_0x34d5eb[_0x01c6('0x34')][_0x01c6('0x36')]));_0x5f1785[_0x01c6('0x35')]=_0x5f1785[_0x01c6('0x35')]['length']?_0x5f1785['attributes']:_0x4ac78e[_0x01c6('0x32')];if(!_0x34d5eb['query'][_0x01c6('0x38')](_0x01c6('0x39'))){_0x5f1785[_0x01c6('0x22')]=qs['limit'](_0x34d5eb[_0x01c6('0x34')][_0x01c6('0x22')]);_0x5f1785[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0x34d5eb[_0x01c6('0x34')][_0x01c6('0x20')]);}_0x5f1785[_0x01c6('0x3a')]=qs['sort'](_0x34d5eb[_0x01c6('0x34')][_0x01c6('0x3b')]);_0x5f1785[_0x01c6('0x3d')]=qs[_0x01c6('0x3c')](_['pick'](_0x34d5eb[_0x01c6('0x34')],_0x4ac78e['filters']));_0x5f1785[_0x01c6('0x3d')]['ChatWebsiteId']=_0xfa3890['id'];if(_0x34d5eb[_0x01c6('0x34')][_0x01c6('0x55')]){_0x5f1785[_0x01c6('0x3d')]=_[_0x01c6('0x3e')](_0x5f1785['where'],{'$or':_[_0x01c6('0x33')](_0x5f1785[_0x01c6('0x35')],function(_0x4e5512){var _0x4ec163={};_0x4ec163[_0x4e5512]={'$like':'%'+_0x34d5eb[_0x01c6('0x34')]['filter']+'%'};return _0x4ec163;})});}_0x5f1785=_[_0x01c6('0x3e')]({},_0x5f1785,_0x34d5eb['options']);return db[_0x01c6('0xc9')][_0x01c6('0x23')]({'where':_0x5f1785[_0x01c6('0x3d')]})[_0x01c6('0x14')](function(_0x164d79){_0x432369[_0x01c6('0x23')]=_0x164d79;if(_0x34d5eb['query'][_0x01c6('0x48')]){_0x5f1785[_0x01c6('0x49')]=[{'all':!![]}];}else{_0x5f1785[_0x01c6('0x49')]=[{'model':db[_0x01c6('0x7e')],'as':_0x01c6('0xe6'),'required':![]},{'model':db['Attachment'],'as':_0x01c6('0x11c'),'required':![]}];}return db[_0x01c6('0xc9')][_0x01c6('0x56')](_0x5f1785);})['then'](function(_0x2e040e){_0x432369[_0x01c6('0x42')]=_0x2e040e;return _0x432369;});}})[_0x01c6('0x14')](respondWithFilteredResult(_0x269cd8,_0x5f1785))[_0x01c6('0x1c')](handleError(_0x269cd8,null));};exports[_0x01c6('0x11d')]=function(_0x2f1608,_0x2bc974){return db[_0x01c6('0x2e')][_0x01c6('0x4a')]({'where':{'id':_0x2f1608[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x2bc974,null))['then'](function(_0x52cd9d){if(_0x52cd9d){return _0x52cd9d[_0x01c6('0x11d')](_0x2f1608[_0x01c6('0x4c')][_0x01c6('0x57')],_[_0x01c6('0xe4')](_0x2f1608['body'],[_0x01c6('0x57'),'id'])||{})['spread'](function(_0xa1a828){for(var _0x9c1c50=0x0;_0x9c1c50<_0x2f1608[_0x01c6('0x4c')][_0x01c6('0x57')]['length'];_0x9c1c50+=0x1){socket['emit']('userChatWebsite:save',{'UserId':Number(_0x2f1608[_0x01c6('0x4c')][_0x01c6('0x57')][_0x9c1c50]),'ChatWebsiteId':Number(_0x2f1608[_0x01c6('0x43')]['id'])});}return _0xa1a828;});}})[_0x01c6('0x14')](respondWithResult(_0x2bc974,null))['catch'](handleError(_0x2bc974,null));};exports['removeAgents']=function(_0x20b905,_0x2fe409){return db['ChatWebsite'][_0x01c6('0x4a')]({'where':{'id':_0x20b905[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x2fe409,null))[_0x01c6('0x14')](function(_0x3b5664){if(_0x3b5664){return _0x3b5664[_0x01c6('0x11e')](_0x20b905['query'][_0x01c6('0x57')])[_0x01c6('0x14')](function(){if(_['isArray'](_0x20b905['query'][_0x01c6('0x57')])){for(var _0x4fe9a6=0x0;_0x4fe9a6<_0x20b905[_0x01c6('0x34')][_0x01c6('0x57')][_0x01c6('0x37')];_0x4fe9a6+=0x1){socket['emit'](_0x01c6('0x11f'),{'UserId':Number(_0x20b905['query'][_0x01c6('0x57')][_0x4fe9a6]),'ChatWebsiteId':Number(_0x20b905[_0x01c6('0x43')]['id'])});}}else{socket[_0x01c6('0x120')](_0x01c6('0x11f'),{'UserId':Number(_0x20b905[_0x01c6('0x34')][_0x01c6('0x57')]),'ChatWebsiteId':Number(_0x20b905[_0x01c6('0x43')]['id'])});}});}})['then'](respondWithStatusCode(_0x2fe409,null))[_0x01c6('0x1c')](handleError(_0x2fe409,null));};exports[_0x01c6('0x121')]=function(_0x107e01,_0x469d4e){var _0x52075d={};var _0x1d3c14={};var _0x4a0a91;var _0x1bacda;return db[_0x01c6('0x2e')][_0x01c6('0x5b')]({'where':{'id':_0x107e01[_0x01c6('0x43')]['id']}})[_0x01c6('0x14')](handleEntityNotFound(_0x469d4e,null))['then'](function(_0x8ab039){if(_0x8ab039){_0x4a0a91=_0x8ab039;_0x1d3c14[_0x01c6('0x32')]=_[_0x01c6('0x46')](db['User']['rawAttributes']);_0x1d3c14['query']=_[_0x01c6('0x46')](_0x107e01['query']);_0x1d3c14[_0x01c6('0x3c')]=_[_0x01c6('0x47')](_0x1d3c14[_0x01c6('0x32')],_0x1d3c14[_0x01c6('0x34')]);_0x52075d['attributes']=_[_0x01c6('0x47')](_0x1d3c14[_0x01c6('0x32')],qs[_0x01c6('0x36')](_0x107e01[_0x01c6('0x34')]['fields']));_0x52075d['attributes']=_0x52075d[_0x01c6('0x35')]['length']?_0x52075d['attributes']:_0x1d3c14[_0x01c6('0x32')];_0x52075d[_0x01c6('0x3a')]=qs['sort'](_0x107e01['query']['sort']);_0x52075d[_0x01c6('0x3d')]=qs[_0x01c6('0x3c')](_[_0x01c6('0x5d')](_0x107e01[_0x01c6('0x34')],_0x1d3c14[_0x01c6('0x3c')]));if(_0x107e01[_0x01c6('0x34')][_0x01c6('0x55')]){_0x52075d[_0x01c6('0x3d')]=_['merge'](_0x52075d['where'],{'$or':_[_0x01c6('0x33')](_0x52075d['attributes'],function(_0x269845){var _0x27ad50={};_0x27ad50[_0x269845]={'$like':'%'+_0x107e01[_0x01c6('0x34')]['filter']+'%'};return _0x27ad50;})});}_0x52075d=_['merge']({},_0x52075d,_0x107e01[_0x01c6('0x41')]);return _0x4a0a91['getAgents'](_0x52075d);}})[_0x01c6('0x14')](function(_0xe5c04d){if(_0xe5c04d){_0x1bacda=_0xe5c04d[_0x01c6('0x37')];if(!_0x107e01[_0x01c6('0x34')]['hasOwnProperty'](_0x01c6('0x39'))){_0x52075d[_0x01c6('0x22')]=qs['limit'](_0x107e01[_0x01c6('0x34')][_0x01c6('0x22')]);_0x52075d[_0x01c6('0x20')]=qs[_0x01c6('0x20')](_0x107e01['query']['offset']);}return _0x4a0a91[_0x01c6('0x121')](_0x52075d);}})['then'](function(_0x288302){if(_0x288302){return _0x288302?{'count':_0x1bacda,'rows':_0x288302}:null;}})['then'](respondWithResult(_0x469d4e,null))[_0x01c6('0x1c')](handleError(_0x469d4e,null));};
\ No newline at end of file
index 0cb2701..9c05bd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27c5=['setMaxListeners','save','remove','emit','hook','ChatWebsite'];(function(_0x41e772,_0x5bf8d9){var _0x1207f3=function(_0x20c150){while(--_0x20c150){_0x41e772['push'](_0x41e772['shift']());}};_0x1207f3(++_0x5bf8d9);}(_0x27c5,0x173));var _0x527c=function(_0x197065,_0x2e79d0){_0x197065=_0x197065-0x0;var _0x3d9404=_0x27c5[_0x197065];return _0x3d9404;};'use strict';var EventEmitter=require('events');var ChatWebsite=require('../../mysqldb')['db'][_0x527c('0x0')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x527c('0x1')](0x0);var events={'afterCreate':_0x527c('0x2'),'afterUpdate':'update','afterDestroy':_0x527c('0x3')};function emitEvent(_0x458db1){return function(_0x371ae5,_0x45478a,_0x5164a0){ChatWebsiteEvents[_0x527c('0x4')](_0x458db1+':'+_0x371ae5['id'],_0x371ae5);ChatWebsiteEvents[_0x527c('0x4')](_0x458db1,_0x371ae5);_0x5164a0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x527c('0x5')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0xeb5d=['hasOwnProperty','hook','exports','../../mysqldb','ChatWebsite','setMaxListeners','save','emit'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xeb5d,0x16b));var _0xdeb5=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xeb5d[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xdeb5('0x0'))['db'][_0xdeb5('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xdeb5('0x2')](0x0);var events={'afterCreate':_0xdeb5('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x17d77f){return function(_0x16c31b,_0x546313,_0x19de5e){ChatWebsiteEvents[_0xdeb5('0x4')](_0x17d77f+':'+_0x16c31b['id'],_0x16c31b);ChatWebsiteEvents[_0xdeb5('0x4')](_0x17d77f,_0x16c31b);_0x19de5e(null);};}for(var e in events){if(events[_0xdeb5('0x5')](e)){var event=events[e];ChatWebsite[_0xdeb5('0x6')](e,emitEvent(event));}}module[_0xdeb5('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index 52c72aa..2009d90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a34=['rimraf','../../config/environment','./chatWebsite.attributes','ChatWebsite','chat_websites','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x4e5afa,_0x2eec06){var _0x38e0d9=function(_0x509a6b){while(--_0x509a6b){_0x4e5afa['push'](_0x4e5afa['shift']());}};_0x38e0d9(++_0x2eec06);}(_0x0a34,0xcb));var _0x40a3=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x0a34[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0x40a3('0x0'));var util=require(_0x40a3('0x1'));var logger=require(_0x40a3('0x2'))('api');var moment=require(_0x40a3('0x3'));var BPromise=require(_0x40a3('0x4'));var rp=require(_0x40a3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x40a3('0x6'));var config=require(_0x40a3('0x7'));var attributes=require(_0x40a3('0x8'));module['exports']=function(_0x340bc3,_0x28240a){return _0x340bc3['define'](_0x40a3('0x9'),attributes,{'tableName':_0x40a3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf62=['exports','ChatWebsite','lodash','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x56a89b,_0x5106a4){var _0xdf565b=function(_0x3dfbfd){while(--_0x3dfbfd){_0x56a89b['push'](_0x56a89b['shift']());}};_0xdf565b(++_0x5106a4);}(_0xdf62,0x152));var _0x2df6=function(_0x42fcd9,_0x2676b7){_0x42fcd9=_0x42fcd9-0x0;var _0x3d2b5a=_0xdf62[_0x42fcd9];return _0x3d2b5a;};'use strict';var _=require(_0x2df6('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2df6('0x1'));var moment=require(_0x2df6('0x2'));var BPromise=require(_0x2df6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2df6('0x4'));var config=require(_0x2df6('0x5'));var attributes=require('./chatWebsite.attributes');module[_0x2df6('0x6')]=function(_0x45f80b,_0x165db8){return _0x45f80b['define'](_0x2df6('0x7'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b38e3f..4ea2f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec6=['ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','util','moment','bluebird'];(function(_0x2f9ebd,_0x5e5999){var _0x6acb62=function(_0x18e120){while(--_0x18e120){_0x2f9ebd['push'](_0x2f9ebd['shift']());}};_0x6acb62(++_0x5e5999);}(_0x3ec6,0xf7));var _0x63ec=function(_0x1a4505,_0x24c946){_0x1a4505=_0x1a4505-0x0;var _0x481e51=_0x3ec6[_0x1a4505];return _0x481e51;};'use strict';var _=require('lodash');var util=require(_0x63ec('0x0'));var moment=require(_0x63ec('0x1'));var BPromise=require(_0x63ec('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63ec('0x3'));var db=require(_0x63ec('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x63ec('0x5'))('rpc');var config=require(_0x63ec('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x63ec('0x7')][_0x63ec('0x8')]({'port':0x232a});config[_0x63ec('0x9')]=_[_0x63ec('0xa')](config[_0x63ec('0x9')],{'host':_0x63ec('0xb'),'port':0x18eb});var socket=require(_0x63ec('0xc'))(new Redis(config[_0x63ec('0x9')]));require(_0x63ec('0xd'))['register'](socket);function respondWithRpcPromise(_0x33811a,_0x1318ed,_0x3f22cc){return new BPromise(function(_0x66fe2d,_0x1a221c){return client[_0x63ec('0xe')](_0x33811a,_0x3f22cc)[_0x63ec('0xf')](function(_0x362a37){logger[_0x63ec('0x10')](_0x63ec('0x11'),_0x1318ed,_0x63ec('0x12'));logger[_0x63ec('0x13')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1318ed,_0x63ec('0x12'),JSON[_0x63ec('0x14')](_0x362a37));if(_0x362a37[_0x63ec('0x15')]){if(_0x362a37[_0x63ec('0x15')]['code']===0x1f4){logger[_0x63ec('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x1318ed,_0x362a37[_0x63ec('0x15')][_0x63ec('0x16')]);return _0x1a221c(_0x362a37[_0x63ec('0x15')]['message']);}logger[_0x63ec('0x15')](_0x63ec('0x11'),_0x1318ed,_0x362a37[_0x63ec('0x15')][_0x63ec('0x16')]);return _0x66fe2d(_0x362a37[_0x63ec('0x15')][_0x63ec('0x16')]);}else{logger['info'](_0x63ec('0x11'),_0x1318ed,_0x63ec('0x12'));_0x66fe2d(_0x362a37[_0x63ec('0x17')]['message']);}})[_0x63ec('0x18')](function(_0x50bd17){logger[_0x63ec('0x15')](_0x63ec('0x11'),_0x1318ed,_0x50bd17);_0x1a221c(_0x50bd17);});});}
\ No newline at end of file
+var _0x5f10=['rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./chatWebsite.socket','register','request','then','ChatWebsite,\x20%s,\x20%s','debug','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2f418c,_0x100ca7){var _0x1b5aa2=function(_0x241a67){while(--_0x241a67){_0x2f418c['push'](_0x2f418c['shift']());}};_0x1b5aa2(++_0x100ca7);}(_0x5f10,0x14a));var _0x05f1=function(_0x5b26cb,_0x527ab0){_0x5b26cb=_0x5b26cb-0x0;var _0x563d12=_0x5f10[_0x5b26cb];return _0x563d12;};'use strict';var _=require(_0x05f1('0x0'));var util=require(_0x05f1('0x1'));var moment=require(_0x05f1('0x2'));var BPromise=require(_0x05f1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05f1('0x4'));var db=require(_0x05f1('0x5'))['db'];var utils=require(_0x05f1('0x6'));var logger=require(_0x05f1('0x7'))(_0x05f1('0x8'));var config=require(_0x05f1('0x9'));var jayson=require(_0x05f1('0xa'));var client=jayson['client'][_0x05f1('0xb')]({'port':0x232a});config[_0x05f1('0xc')]=_[_0x05f1('0xd')](config[_0x05f1('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x05f1('0xe'))(new Redis(config[_0x05f1('0xc')]));require(_0x05f1('0xf'))[_0x05f1('0x10')](socket);function respondWithRpcPromise(_0x5257b4,_0x553351,_0x588d92){return new BPromise(function(_0x1a1ac6,_0x201614){return client[_0x05f1('0x11')](_0x5257b4,_0x588d92)[_0x05f1('0x12')](function(_0x4c738f){logger['info'](_0x05f1('0x13'),_0x553351,'request\x20sent');logger[_0x05f1('0x14')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x553351,'request\x20sent',JSON['stringify'](_0x4c738f));if(_0x4c738f[_0x05f1('0x15')]){if(_0x4c738f['error'][_0x05f1('0x16')]===0x1f4){logger[_0x05f1('0x15')](_0x05f1('0x13'),_0x553351,_0x4c738f[_0x05f1('0x15')][_0x05f1('0x17')]);return _0x201614(_0x4c738f['error'][_0x05f1('0x17')]);}logger[_0x05f1('0x15')](_0x05f1('0x13'),_0x553351,_0x4c738f['error']['message']);return _0x1a1ac6(_0x4c738f[_0x05f1('0x15')][_0x05f1('0x17')]);}else{logger['info'](_0x05f1('0x13'),_0x553351,_0x05f1('0x18'));_0x1a1ac6(_0x4c738f['result']['message']);}})[_0x05f1('0x19')](function(_0x4b0875){logger[_0x05f1('0x15')](_0x05f1('0x13'),_0x553351,_0x4b0875);_0x201614(_0x4b0875);});});}
\ No newline at end of file
index 343c721..94caf7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf32b=['update','register','length','chatWebsite:','save','remove'];(function(_0x4ad15c,_0x4674be){var _0x2b2eea=function(_0x30a85b){while(--_0x30a85b){_0x4ad15c['push'](_0x4ad15c['shift']());}};_0x2b2eea(++_0x4674be);}(_0xf32b,0xd0));var _0xbf32=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0xf32b[_0x1e7b16];return _0x37fadc;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0xbf32('0x0'),_0xbf32('0x1'),_0xbf32('0x2')];function createListener(_0x4c2655,_0x36132a){return function(_0x9dd31b){_0x36132a['emit'](_0x4c2655,_0x9dd31b);};}function removeListener(_0x4b3503,_0x264ddb){return function(){ChatWebsiteEvents['removeListener'](_0x4b3503,_0x264ddb);};}exports[_0xbf32('0x3')]=function(_0x24aa7e){for(var _0x4c4c52=0x0,_0x49255e=events[_0xbf32('0x4')];_0x4c4c52<_0x49255e;_0x4c4c52++){var _0x2730d9=events[_0x4c4c52];var _0xfa819f=createListener(_0xbf32('0x5')+_0x2730d9,_0x24aa7e);ChatWebsiteEvents['on'](_0x2730d9,_0xfa819f);}};
\ No newline at end of file
+var _0x725d=['register','length','./chatWebsite.events','save','remove','update','removeListener'];(function(_0x361d3f,_0x3be2aa){var _0x320229=function(_0x138319){while(--_0x138319){_0x361d3f['push'](_0x361d3f['shift']());}};_0x320229(++_0x3be2aa);}(_0x725d,0x159));var _0xd725=function(_0x442dcb,_0x179c35){_0x442dcb=_0x442dcb-0x0;var _0x593554=_0x725d[_0x442dcb];return _0x593554;};'use strict';var ChatWebsiteEvents=require(_0xd725('0x0'));var events=[_0xd725('0x1'),_0xd725('0x2'),_0xd725('0x3')];function createListener(_0x39a1d2,_0x54a7ef){return function(_0x4f4d2f){_0x54a7ef['emit'](_0x39a1d2,_0x4f4d2f);};}function removeListener(_0x4dc885,_0x3f9518){return function(){ChatWebsiteEvents[_0xd725('0x4')](_0x4dc885,_0x3f9518);};}exports[_0xd725('0x5')]=function(_0x2b34e7){for(var _0x294d9b=0x0,_0x323ee8=events[_0xd725('0x6')];_0x294d9b<_0x323ee8;_0x294d9b++){var _0x58c1fa=events[_0x294d9b];var _0x34281e=createListener('chatWebsite:'+_0x58c1fa,_0x2b34e7);ChatWebsiteEvents['on'](_0x58c1fa,_0x34281e);}};
\ No newline at end of file
index 0c60cd2..73ab982 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5e7=['getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','/:id/fields','getFields','/:id/offline_messages','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','diskStorage','join','root','format','%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','ensureDir','replace','offline','addInteraction','addApplications','addAgents','delete','destroy','removeAnswers','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar'];(function(_0x3d5fbd,_0xcbedc2){var _0x5210b5=function(_0x54f65c){while(--_0x54f65c){_0x3d5fbd['push'](_0x3d5fbd['shift']());}};_0x5210b5(++_0xcbedc2);}(_0xa5e7,0x145));var _0x7a5e=function(_0x1fd7dc,_0x9d5a6a){_0x1fd7dc=_0x1fd7dc-0x0;var _0x1c1202=_0xa5e7[_0x1fd7dc];return _0x1c1202;};'use strict';var multer=require(_0x7a5e('0x0'));var util=require(_0x7a5e('0x1'));var path=require(_0x7a5e('0x2'));var timeout=require(_0x7a5e('0x3'));var express=require(_0x7a5e('0x4'));var router=express[_0x7a5e('0x5')]();var fs_extra=require(_0x7a5e('0x6'));var auth=require(_0x7a5e('0x7'));var interaction=require(_0x7a5e('0x8'));var config=require(_0x7a5e('0x9'));var controller=require(_0x7a5e('0xa'));router['get']('/',auth[_0x7a5e('0xb')](),controller[_0x7a5e('0xc')]);router[_0x7a5e('0xd')](_0x7a5e('0xe'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0xf')]);router[_0x7a5e('0xd')](_0x7a5e('0x10'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x11')]);router[_0x7a5e('0xd')]('/:id/dispositions',auth[_0x7a5e('0xb')](),controller['getDispositions']);router[_0x7a5e('0xd')](_0x7a5e('0x12'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x13')]);router[_0x7a5e('0xd')](_0x7a5e('0x14'),controller[_0x7a5e('0x15')]);router[_0x7a5e('0xd')](_0x7a5e('0x16'),controller[_0x7a5e('0x17')]);router[_0x7a5e('0xd')](_0x7a5e('0x18'),controller[_0x7a5e('0x19')]);router['get'](_0x7a5e('0x1a'),controller[_0x7a5e('0x1b')]);router[_0x7a5e('0xd')](_0x7a5e('0x1c'),auth['isAuthenticated'](),controller[_0x7a5e('0x1d')]);router[_0x7a5e('0xd')](_0x7a5e('0x1e'),controller[_0x7a5e('0x1f')]);router['get'](_0x7a5e('0x20'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x21')]);router[_0x7a5e('0xd')](_0x7a5e('0x22'),auth[_0x7a5e('0xb')](),controller['getProactiveActions']);router[_0x7a5e('0xd')](_0x7a5e('0x23'),controller[_0x7a5e('0x24')]);router[_0x7a5e('0xd')](_0x7a5e('0x25'),auth[_0x7a5e('0xb')](),controller['getOfflineMessages']);router['get'](_0x7a5e('0x26'),auth['isAuthenticated'](),controller[_0x7a5e('0x27')]);router[_0x7a5e('0x28')]('/',auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x29')]);router[_0x7a5e('0x28')](_0x7a5e('0x2a'),auth[_0x7a5e('0xb')](),controller['addDisposition']);router[_0x7a5e('0x28')](_0x7a5e('0x12'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x2b')]);var upload=multer({'storage':multer[_0x7a5e('0x2c')]({'destination':function(_0x3c02ee,_0x2e5511,_0x9f494){_0x9f494(null,path[_0x7a5e('0x2d')](config[_0x7a5e('0x2e')],'server/files/images/logos/'));},'filename':function(_0x1f443d,_0x30608f,_0x1ad92c){_0x1ad92c(null,util[_0x7a5e('0x2f')](_0x7a5e('0x30'),Date[_0x7a5e('0x31')](),_0x30608f[_0x7a5e('0x32')]));}})});router[_0x7a5e('0x28')]('/:id/logo',upload[_0x7a5e('0x33')](_0x7a5e('0x34')),controller[_0x7a5e('0x35')]);var upload=multer({'storage':multer[_0x7a5e('0x2c')]({'destination':function(_0x2fb83d,_0x37b94b,_0x137851){_0x137851(null,path[_0x7a5e('0x2d')](config[_0x7a5e('0x2e')],_0x7a5e('0x36')));},'filename':function(_0x4584bd,_0x2d4762,_0x5b3085){_0x5b3085(null,util[_0x7a5e('0x2f')](_0x7a5e('0x30'),Date[_0x7a5e('0x31')](),_0x2d4762[_0x7a5e('0x32')]));}})});router['post']('/:id/avatar',upload[_0x7a5e('0x33')]('file'),controller[_0x7a5e('0x37')]);var upload=multer({'storage':multer[_0x7a5e('0x2c')]({'destination':function(_0x36ced4,_0xd1fe14,_0x313835){_0x313835(null,path['join'](config[_0x7a5e('0x2e')],'server/files/images/avatars/'));},'filename':function(_0x22930a,_0x41b15b,_0x2ad695){_0x2ad695(null,util[_0x7a5e('0x2f')](_0x7a5e('0x30'),Date[_0x7a5e('0x31')](),_0x41b15b[_0x7a5e('0x32')]));}})});router[_0x7a5e('0x28')](_0x7a5e('0x18'),upload[_0x7a5e('0x33')](_0x7a5e('0x34')),controller[_0x7a5e('0x38')]);var upload=multer({'storage':multer[_0x7a5e('0x2c')]({'destination':function(_0x37f429,_0x50de5b,_0x339d5b){_0x339d5b(null,path[_0x7a5e('0x2d')](config['root'],_0x7a5e('0x36')));},'filename':function(_0xc9edd9,_0x57f80d,_0x3aa126){_0x3aa126(null,util[_0x7a5e('0x2f')](_0x7a5e('0x30'),Date[_0x7a5e('0x31')](),_0x57f80d[_0x7a5e('0x32')]));}})});router[_0x7a5e('0x28')](_0x7a5e('0x1a'),upload['single'](_0x7a5e('0x34')),controller[_0x7a5e('0x39')]);router[_0x7a5e('0x28')](_0x7a5e('0x3a'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x7a5e('0x2c')]({'destination':function(_0x41331b,_0x9ab14,_0xc5cefe){const _0xcac4b8=path[_0x7a5e('0x2d')](config[_0x7a5e('0x2e')],_0x7a5e('0x3b'),'attachments','offline-chat');fs_extra[_0x7a5e('0x3c')](_0xcac4b8,function(){_0xc5cefe(null,_0xcac4b8);});},'filename':function(_0x3d75af,_0x48a7b4,_0x3da095){const _0x19ccb4=_0x48a7b4[_0x7a5e('0x32')][_0x7a5e('0x3d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x7d3ff8=path['extname'](_0x19ccb4);const _0x4c5668=Date[_0x7a5e('0x31')]()+'-'+_0x19ccb4[_0x7a5e('0x3d')](_0x7d3ff8,'')+_0x7d3ff8;_0x3da095(null,_0x4c5668);}})});router[_0x7a5e('0x28')]('/:id/offline',offlineUploadMulter['any'](),controller[_0x7a5e('0x3e')]);router[_0x7a5e('0x28')](_0x7a5e('0x1c'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x3f')]);router[_0x7a5e('0x28')](_0x7a5e('0x20'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x40')]);router['post'](_0x7a5e('0x22'),auth[_0x7a5e('0xb')](),controller['addProactiveActions']);router[_0x7a5e('0x28')](_0x7a5e('0x26'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x41')]);router['put'](_0x7a5e('0x10'),auth[_0x7a5e('0xb')](),controller['update']);router[_0x7a5e('0x42')]('/:id',auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x43')]);router[_0x7a5e('0x42')](_0x7a5e('0x2a'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x7a5e('0x42')](_0x7a5e('0x12'),auth[_0x7a5e('0xb')](),controller[_0x7a5e('0x44')]);router['delete']('/:id/users',auth[_0x7a5e('0xb')](),controller['removeAgents']);module[_0x7a5e('0x45')]=router;
\ No newline at end of file
+var _0x6d78=['/:id/proactive_actions','getFields','/:id/offline_messages','/:id/users','post','addDisposition','/:id/canned_answers','diskStorage','root','format','%s-%s','now','originalname','/:id/logo','single','file','addLogo','server/files/images/avatars/','addAvatar','join','addSystemAvatar','/:id/notify','server/files','attachments','ensureDir','extname','replace','/:id/offline','/:id/interactions','addInteraction','addApplications','addProactiveActions','addAgents','update','delete','destroy','removeDispositions','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatWebsite.controller','get','describe','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x6d78,0x121));var _0x86d7=function(_0x1a8d04,_0x50ba5b){_0x1a8d04=_0x1a8d04-0x0;var _0x409144=_0x6d78[_0x1a8d04];return _0x409144;};'use strict';var multer=require(_0x86d7('0x0'));var util=require(_0x86d7('0x1'));var path=require('path');var timeout=require(_0x86d7('0x2'));var express=require(_0x86d7('0x3'));var router=express[_0x86d7('0x4')]();var fs_extra=require(_0x86d7('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x86d7('0x6'));var config=require('../../config/environment');var controller=require(_0x86d7('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x86d7('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x86d7('0x9')]);router[_0x86d7('0x8')](_0x86d7('0xa'),auth[_0x86d7('0xb')](),controller[_0x86d7('0xc')]);router[_0x86d7('0x8')](_0x86d7('0xd'),auth[_0x86d7('0xb')](),controller[_0x86d7('0xe')]);router['get']('/:id/canned_answers',auth[_0x86d7('0xb')](),controller['getAnswers']);router['get']('/:id/logo',controller[_0x86d7('0xf')]);router[_0x86d7('0x8')](_0x86d7('0x10'),controller[_0x86d7('0x11')]);router[_0x86d7('0x8')](_0x86d7('0x12'),controller['getCustomerAvatar']);router[_0x86d7('0x8')](_0x86d7('0x13'),controller[_0x86d7('0x14')]);router['get']('/:id/interactions',auth[_0x86d7('0xb')](),controller[_0x86d7('0x15')]);router['get'](_0x86d7('0x16'),controller[_0x86d7('0x17')]);router['get'](_0x86d7('0x18'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x19')]);router[_0x86d7('0x8')](_0x86d7('0x1a'),auth[_0x86d7('0xb')](),controller['getProactiveActions']);router[_0x86d7('0x8')]('/:id/fields',controller[_0x86d7('0x1b')]);router[_0x86d7('0x8')](_0x86d7('0x1c'),auth[_0x86d7('0xb')](),controller['getOfflineMessages']);router[_0x86d7('0x8')](_0x86d7('0x1d'),auth['isAuthenticated'](),controller['getAgents']);router[_0x86d7('0x1e')]('/',auth[_0x86d7('0xb')](),controller['create']);router['post']('/:id/dispositions',auth[_0x86d7('0xb')](),controller[_0x86d7('0x1f')]);router[_0x86d7('0x1e')](_0x86d7('0x20'),auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer[_0x86d7('0x21')]({'destination':function(_0x43b55c,_0x2fc787,_0x586e5a){_0x586e5a(null,path['join'](config[_0x86d7('0x22')],'server/files/images/logos/'));},'filename':function(_0x41792f,_0x3d5a46,_0x487e81){_0x487e81(null,util[_0x86d7('0x23')](_0x86d7('0x24'),Date[_0x86d7('0x25')](),_0x3d5a46[_0x86d7('0x26')]));}})});router[_0x86d7('0x1e')](_0x86d7('0x27'),upload[_0x86d7('0x28')](_0x86d7('0x29')),controller[_0x86d7('0x2a')]);var upload=multer({'storage':multer[_0x86d7('0x21')]({'destination':function(_0x37c966,_0x19511f,_0x47909c){_0x47909c(null,path['join'](config[_0x86d7('0x22')],_0x86d7('0x2b')));},'filename':function(_0x26b3b5,_0x2bdc68,_0x59977b){_0x59977b(null,util[_0x86d7('0x23')](_0x86d7('0x24'),Date[_0x86d7('0x25')](),_0x2bdc68[_0x86d7('0x26')]));}})});router[_0x86d7('0x1e')](_0x86d7('0x10'),upload[_0x86d7('0x28')](_0x86d7('0x29')),controller[_0x86d7('0x2c')]);var upload=multer({'storage':multer[_0x86d7('0x21')]({'destination':function(_0x29141c,_0x92a0d3,_0x4b6df5){_0x4b6df5(null,path[_0x86d7('0x2d')](config[_0x86d7('0x22')],_0x86d7('0x2b')));},'filename':function(_0x5153a9,_0x4105e8,_0x4ce8e0){_0x4ce8e0(null,util['format'](_0x86d7('0x24'),Date[_0x86d7('0x25')](),_0x4105e8[_0x86d7('0x26')]));}})});router[_0x86d7('0x1e')](_0x86d7('0x12'),upload[_0x86d7('0x28')](_0x86d7('0x29')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x86d7('0x21')]({'destination':function(_0x10bbb8,_0x2e4648,_0x2f2219){_0x2f2219(null,path['join'](config['root'],'server/files/images/avatars/'));},'filename':function(_0x463e8b,_0x43e5d4,_0x39e748){_0x39e748(null,util['format'](_0x86d7('0x24'),Date[_0x86d7('0x25')](),_0x43e5d4[_0x86d7('0x26')]));}})});router[_0x86d7('0x1e')]('/:id/system_avatar',upload[_0x86d7('0x28')](_0x86d7('0x29')),controller[_0x86d7('0x2e')]);router[_0x86d7('0x1e')](_0x86d7('0x2f'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x9fb50c,_0x53ce03,_0x3531a5){const _0x523dba=path[_0x86d7('0x2d')](config[_0x86d7('0x22')],_0x86d7('0x30'),_0x86d7('0x31'),'offline-chat');fs_extra[_0x86d7('0x32')](_0x523dba,function(){_0x3531a5(null,_0x523dba);});},'filename':function(_0x2f87c9,_0x2b9dc2,_0x362830){const _0x12f5b2=_0x2b9dc2[_0x86d7('0x26')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x1898b6=path[_0x86d7('0x33')](_0x12f5b2);const _0x1c9313=Date[_0x86d7('0x25')]()+'-'+_0x12f5b2[_0x86d7('0x34')](_0x1898b6,'')+_0x1898b6;_0x362830(null,_0x1c9313);}})});router[_0x86d7('0x1e')](_0x86d7('0x35'),offlineUploadMulter['any'](),controller['offline']);router['post'](_0x86d7('0x36'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x37')]);router['post'](_0x86d7('0x18'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x38')]);router[_0x86d7('0x1e')](_0x86d7('0x1a'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x39')]);router[_0x86d7('0x1e')](_0x86d7('0x1d'),auth['isAuthenticated'](),controller[_0x86d7('0x3a')]);router['put'](_0x86d7('0xa'),auth['isAuthenticated'](),controller[_0x86d7('0x3b')]);router[_0x86d7('0x3c')](_0x86d7('0xa'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x3d')]);router[_0x86d7('0x3c')](_0x86d7('0xd'),auth[_0x86d7('0xb')](),controller[_0x86d7('0x3e')]);router[_0x86d7('0x3c')](_0x86d7('0x20'),auth[_0x86d7('0xb')](),controller['removeAnswers']);router['delete'](_0x86d7('0x1d'),auth[_0x86d7('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index a718fa1..d469e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe394=['express','../components/auth/service','production','client-side-logger','/client-logs','use','isAuthenticated','exports'];(function(_0x3d9650,_0xcf5873){var _0x4ee9e7=function(_0x1d866c){while(--_0x1d866c){_0x3d9650['push'](_0x3d9650['shift']());}};_0x4ee9e7(++_0xcf5873);}(_0xe394,0x108));var _0x4e39=function(_0x478b17,_0x47d026){_0x478b17=_0x478b17-0x0;var _0x430697=_0xe394[_0x478b17];return _0x430697;};var beaverLogger=require('beaver-logger/server');var express=require(_0x4e39('0x0'));var auth=require(_0x4e39('0x1'));var config=require('../config/environment');var router=express['Router']();var isProduction=config['env']===_0x4e39('0x2')||![];function clientSideLogs(_0x375eb6,_0xa1e5cd,_0x3abe18){var _0x21d5f7=_0x375eb6['app']['get'](_0x4e39('0x3'));if(!_0x21d5f7){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger['expressEndpoint']({'uri':_0x4e39('0x4'),'logger':_0x21d5f7,'enableCors':!isProduction})(_0x375eb6,_0xa1e5cd,_0x3abe18);}router[_0x4e39('0x5')](auth[_0x4e39('0x6')](),clientSideLogs);module[_0x4e39('0x7')]=router;
\ No newline at end of file
+var _0xebc8=['isAuthenticated','exports','beaver-logger/server','../config/environment','Router','env','production','app','get','client-side-logger'];(function(_0xea6b4d,_0x36a149){var _0x504db3=function(_0x3f3163){while(--_0x3f3163){_0xea6b4d['push'](_0xea6b4d['shift']());}};_0x504db3(++_0x36a149);}(_0xebc8,0x124));var _0x8ebc=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xebc8[_0x3b380d];return _0x54502b;};var beaverLogger=require(_0x8ebc('0x0'));var express=require('express');var auth=require('../components/auth/service');var config=require(_0x8ebc('0x1'));var router=express[_0x8ebc('0x2')]();var isProduction=config[_0x8ebc('0x3')]===_0x8ebc('0x4')||![];function clientSideLogs(_0x35a4fa,_0x1048fc,_0x43ed06){var _0x80af24=_0x35a4fa[_0x8ebc('0x5')][_0x8ebc('0x6')](_0x8ebc('0x7'));if(!_0x80af24){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger['expressEndpoint']({'uri':'/client-logs','logger':_0x80af24,'enableCors':!isProduction})(_0x35a4fa,_0x1048fc,_0x43ed06);}router['use'](auth[_0x8ebc('0x8')](),clientSideLogs);module[_0x8ebc('0x9')]=router;
\ No newline at end of file
index 0350c33..17fe71f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c9a=['MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','AmazonAWS','Google','MicrosoftAzure','ENUM','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT'];(function(_0x3d7ce4,_0x3e7562){var _0x166bb4=function(_0x38cafb){while(--_0x38cafb){_0x3d7ce4['push'](_0x3d7ce4['shift']());}};_0x166bb4(++_0x3e7562);}(_0x3c9a,0x1c9));var _0xa3c9=function(_0x2a8383,_0x756f24){_0x2a8383=_0x2a8383-0x0;var _0x780f44=_0x3c9a[_0x2a8383];return _0x780f44;};'use strict';var Sequelize=require(_0xa3c9('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3c9('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xa3c9('0x2'),_0xa3c9('0x3'),_0xa3c9('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xa3c9('0x5')](_0xa3c9('0x6'),_0xa3c9('0x7'))},'data1':{'type':Sequelize[_0xa3c9('0x1')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xa3c9('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xa3c9('0x1')],'comment':_0xa3c9('0x8')},'data4':{'type':Sequelize[_0xa3c9('0x1')],'comment':_0xa3c9('0x9')},'data5':{'type':Sequelize[_0xa3c9('0xa')],'comment':_0xa3c9('0xb')},'data6':{'type':Sequelize[_0xa3c9('0xa')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0xa3c9('0xa')],'comment':_0xa3c9('0xc')}};
\ No newline at end of file
+var _0x85ac=['MicrosoftAzure','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20client_secret','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','Google'];(function(_0x378752,_0x158b32){var _0xd5a262=function(_0x3c6f94){while(--_0x3c6f94){_0x378752['push'](_0x378752['shift']());}};_0xd5a262(++_0x158b32);}(_0x85ac,0x1f2));var _0xc85a=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x85ac[_0x54d4a8];return _0x3b321b;};'use strict';var Sequelize=require(_0xc85a('0x0'));module[_0xc85a('0x1')]={'name':{'type':Sequelize[_0xc85a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xc85a('0x3')](_0xc85a('0x4'),_0xc85a('0x5'),_0xc85a('0x6')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xc85a('0x3')](_0xc85a('0x7'),_0xc85a('0x8'))},'data1':{'type':Sequelize[_0xc85a('0x2')],'comment':_0xc85a('0x9')},'data2':{'type':Sequelize[_0xc85a('0x2')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xc85a('0x2')],'comment':_0xc85a('0xa')},'data4':{'type':Sequelize[_0xc85a('0x2')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0xc85a('0xb')],'comment':_0xc85a('0xc')},'data6':{'type':Sequelize[_0xc85a('0xb')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0xc85a('0xb')],'comment':_0xc85a('0xd')}};
\ No newline at end of file
index 354009f..c814d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb56=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','MicrosoftAzure','decryptString','data3','params','includeAll','find','service','catch','create','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','body','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','update','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','access_token','data6','refresh_token','data5','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','./cloudProvider.oauth','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','limit','count','set','then','destroy','error','stack','name','send','padEnd','index','map','CloudProvider','rawAttributes','fieldName','model','query','keys'];(function(_0x269ee8,_0x477226){var _0x4d98bd=function(_0x20d4c4){while(--_0x20d4c4){_0x269ee8['push'](_0x269ee8['shift']());}};_0x4d98bd(++_0x477226);}(_0xeb56,0x14f));var _0x6eb5=function(_0x424501,_0x42096d){_0x424501=_0x424501-0x0;var _0xb719af=_0xeb56[_0x424501];return _0xb719af;};'use strict';var _=require('lodash');var Redis=require(_0x6eb5('0x0'));var qs=require(_0x6eb5('0x1'));var encryptor=require(_0x6eb5('0x2'));var config=require(_0x6eb5('0x3'));var logger=require(_0x6eb5('0x4'))(_0x6eb5('0x5'));var db=require('../../mysqldb')['db'];var oauth=require(_0x6eb5('0x6'));config[_0x6eb5('0x7')]=_[_0x6eb5('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6eb5('0x9'))(new Redis(config[_0x6eb5('0x7')]));var redis=new Redis(config[_0x6eb5('0x7')]);function respondWithStatusCode(_0x53ad3c,_0x4bd12){_0x4bd12=_0x4bd12||0xcc;return function(_0x8e9713){if(_0x8e9713){return _0x53ad3c[_0x6eb5('0xa')](_0x4bd12);}return _0x53ad3c[_0x6eb5('0xb')](_0x4bd12)[_0x6eb5('0xc')]();};}function respondWithResult(_0x2601ef,_0x20939a){_0x20939a=_0x20939a||0xc8;return function(_0x4b3f13){if(_0x4b3f13){return _0x2601ef[_0x6eb5('0xb')](_0x20939a)[_0x6eb5('0xd')](_0x4b3f13);}};}function respondWithFilteredResult(_0x30a724,_0x565dfc){return function(_0x257d0b){if(_0x257d0b){var _0x1758c1=typeof _0x565dfc[_0x6eb5('0xe')]==='undefined'&&typeof _0x565dfc[_0x6eb5('0xf')]==='undefined';var _0x34d4e9=_0x257d0b[_0x6eb5('0x10')];var _0x48c136=_0x1758c1?0x0:_0x565dfc[_0x6eb5('0xe')];var _0x280daa=_0x1758c1?_0x257d0b[_0x6eb5('0x10')]:_0x565dfc[_0x6eb5('0xe')]+_0x565dfc['limit'];var _0x13c37d;if(_0x280daa>=_0x34d4e9){_0x280daa=_0x34d4e9;_0x13c37d=0xc8;}else{_0x13c37d=0xce;}_0x30a724[_0x6eb5('0xb')](_0x13c37d);return _0x30a724[_0x6eb5('0x11')]('Content-Range',_0x48c136+'-'+_0x280daa+'/'+_0x34d4e9)[_0x6eb5('0xd')](_0x257d0b);}return null;};}function saveUpdates(_0x2c1a39){return function(_0x27114f){if(_0x27114f){return _0x27114f['update'](_0x2c1a39)[_0x6eb5('0x12')](function(_0x52b92e){return _0x52b92e;});}return null;};}function removeEntity(_0x4347f7){return function(_0x5a679a){if(_0x5a679a){return _0x5a679a[_0x6eb5('0x13')]()[_0x6eb5('0x12')](function(){_0x4347f7['status'](0xcc)[_0x6eb5('0xc')]();});}};}function handleEntityNotFound(_0x45656c){return function(_0x13aa8f){if(!_0x13aa8f){_0x45656c['sendStatus'](0x194);}return _0x13aa8f;};}function handleError(_0x1efc60,_0x2d9fda){_0x2d9fda=_0x2d9fda||0x1f4;return function(_0x4f3be2){logger[_0x6eb5('0x14')](_0x4f3be2[_0x6eb5('0x15')]);if(_0x4f3be2[_0x6eb5('0x16')]){delete _0x4f3be2['name'];}_0x1efc60[_0x6eb5('0xb')](_0x2d9fda)[_0x6eb5('0x17')](_0x4f3be2);};}function maskClientSecret(_0x466242){return _[_0x6eb5('0x18')](_0x466242['slice'](0x0,0x3),0x14,'*');}exports[_0x6eb5('0x19')]=function(_0x4e149f,_0x5ed614){var _0x242192={},_0x186375={},_0x35783d={'count':0x0,'rows':[]};var _0x29a2ab=_[_0x6eb5('0x1a')](db[_0x6eb5('0x1b')][_0x6eb5('0x1c')],function(_0x31f287){return{'name':_0x31f287[_0x6eb5('0x1d')],'type':_0x31f287['type']['key']};});_0x186375[_0x6eb5('0x1e')]=_['map'](_0x29a2ab,_0x6eb5('0x16'));_0x186375[_0x6eb5('0x1f')]=_[_0x6eb5('0x20')](_0x4e149f[_0x6eb5('0x1f')]);_0x186375[_0x6eb5('0x21')]=_[_0x6eb5('0x22')](_0x186375[_0x6eb5('0x1e')],_0x186375[_0x6eb5('0x1f')]);_0x242192[_0x6eb5('0x23')]=_[_0x6eb5('0x22')](_0x186375[_0x6eb5('0x1e')],qs['fields'](_0x4e149f[_0x6eb5('0x1f')][_0x6eb5('0x24')]));_0x242192[_0x6eb5('0x23')]=_0x242192[_0x6eb5('0x23')][_0x6eb5('0x25')]?_0x242192['attributes']:_0x186375[_0x6eb5('0x1e')];if(!_0x4e149f['query'][_0x6eb5('0x26')](_0x6eb5('0x27'))){_0x242192[_0x6eb5('0xf')]=qs[_0x6eb5('0xf')](_0x4e149f['query']['limit']);_0x242192['offset']=qs[_0x6eb5('0xe')](_0x4e149f['query'][_0x6eb5('0xe')]);}_0x242192[_0x6eb5('0x28')]=qs['sort'](_0x4e149f['query'][_0x6eb5('0x29')]);_0x242192[_0x6eb5('0x2a')]=qs[_0x6eb5('0x21')](_[_0x6eb5('0x2b')](_0x4e149f['query'],_0x186375[_0x6eb5('0x21')]),_0x29a2ab);if(_0x4e149f[_0x6eb5('0x1f')]['filter']){_0x242192['where']=_[_0x6eb5('0x2c')](_0x242192[_0x6eb5('0x2a')],{'$or':_[_0x6eb5('0x1a')](_0x29a2ab,function(_0x2fcf6d){if(_0x2fcf6d['type']!==_0x6eb5('0x2d')){var _0x4b122b={};_0x4b122b[_0x2fcf6d[_0x6eb5('0x16')]]={'$like':'%'+_0x4e149f['query'][_0x6eb5('0x2e')]+'%'};return _0x4b122b;}})});}_0x242192=_['merge']({},_0x242192,_0x4e149f[_0x6eb5('0x2f')]);var _0x5eb8d0={'where':_0x242192[_0x6eb5('0x2a')]};return db[_0x6eb5('0x1b')]['count'](_0x5eb8d0)['then'](function(_0x89325e){_0x35783d['count']=_0x89325e;if(_0x4e149f['query']['includeAll']){_0x242192[_0x6eb5('0x30')]=[{'all':!![]}];}return db['CloudProvider'][_0x6eb5('0x31')](_0x242192);})[_0x6eb5('0x12')](function(_0x55c572){_0x35783d[_0x6eb5('0x32')]=_[_0x6eb5('0x1a')](_0x55c572,function(_0x56ef8f){if(_0x56ef8f['service']===_0x6eb5('0x33')){var _0x15fcec=encryptor[_0x6eb5('0x34')](_0x56ef8f['data3']);_0x56ef8f[_0x6eb5('0x35')]=maskClientSecret(_0x15fcec);}return _0x56ef8f;});return _0x35783d;})['then'](respondWithFilteredResult(_0x5ed614,_0x242192))['catch'](handleError(_0x5ed614,null));};exports['show']=function(_0x357570,_0xdadc86){var _0x3d23fb={'raw':!![],'where':{'id':_0x357570[_0x6eb5('0x36')]['id']}},_0xc1eb07={};_0xc1eb07['model']=_['keys'](db[_0x6eb5('0x1b')][_0x6eb5('0x1c')]);_0xc1eb07['query']=_['keys'](_0x357570[_0x6eb5('0x1f')]);_0xc1eb07[_0x6eb5('0x21')]=_[_0x6eb5('0x22')](_0xc1eb07[_0x6eb5('0x1e')],_0xc1eb07[_0x6eb5('0x1f')]);_0x3d23fb['attributes']=_[_0x6eb5('0x22')](_0xc1eb07[_0x6eb5('0x1e')],qs[_0x6eb5('0x24')](_0x357570[_0x6eb5('0x1f')]['fields']));_0x3d23fb[_0x6eb5('0x23')]=_0x3d23fb[_0x6eb5('0x23')][_0x6eb5('0x25')]?_0x3d23fb[_0x6eb5('0x23')]:_0xc1eb07['model'];if(_0x357570[_0x6eb5('0x1f')][_0x6eb5('0x37')]){_0x3d23fb['include']=[{'all':!![]}];}_0x3d23fb=_['merge']({},_0x3d23fb,_0x357570['options']);return db[_0x6eb5('0x1b')][_0x6eb5('0x38')](_0x3d23fb)['then'](handleEntityNotFound(_0xdadc86,null))[_0x6eb5('0x12')](function(_0x1b1329){if(_0x1b1329[_0x6eb5('0x39')]==='MicrosoftAzure'){var _0x2c01e2=encryptor[_0x6eb5('0x34')](_0x1b1329[_0x6eb5('0x35')]);_0x1b1329['data3']=maskClientSecret(_0x2c01e2);}return _0x1b1329;})['then'](respondWithResult(_0xdadc86,null))[_0x6eb5('0x3a')](handleError(_0xdadc86,null));};exports[_0x6eb5('0x3b')]=function(_0x22edf6,_0xfda5ec){if(!_0x22edf6['body'][_0x6eb5('0x16')])throw new Error(_0x6eb5('0x3c'));if(!_0x22edf6['body'][_0x6eb5('0x39')])throw new Error(_0x6eb5('0x3d'));var _0x5376b0=db[_0x6eb5('0x1b')]['rawAttributes'][_0x6eb5('0x39')][_0x6eb5('0x3e')];if(!_0x5376b0['includes'](_0x22edf6[_0x6eb5('0x3f')][_0x6eb5('0x39')]))throw new Error(_0x6eb5('0x40')+_0x5376b0['join'](',\x20'));if(_0x22edf6[_0x6eb5('0x3f')][_0x6eb5('0x39')]===_0x6eb5('0x33')&&_0x22edf6[_0x6eb5('0x3f')][_0x6eb5('0x35')]){_0x22edf6[_0x6eb5('0x3f')][_0x6eb5('0x35')]=encryptor['encryptString'](_0x22edf6[_0x6eb5('0x3f')][_0x6eb5('0x35')]);}return db['CloudProvider']['create'](_0x22edf6[_0x6eb5('0x3f')],{})['then'](respondWithResult(_0xfda5ec,0xc9))[_0x6eb5('0x3a')](handleError(_0xfda5ec,null));};exports[_0x6eb5('0x41')]=function(_0x18952f,_0xa2340e){if(_0x18952f[_0x6eb5('0x3f')]['id']){delete _0x18952f[_0x6eb5('0x3f')]['id'];}return db['CloudProvider'][_0x6eb5('0x38')]({'where':{'id':_0x18952f[_0x6eb5('0x36')]['id']}})[_0x6eb5('0x12')](handleEntityNotFound(_0xa2340e,null))['then'](function(_0x134eb9){if(_0x134eb9[_0x6eb5('0x39')]==='MicrosoftAzure'&&_0x18952f[_0x6eb5('0x3f')][_0x6eb5('0x35')]){_0x18952f['body']['data3']=encryptor['encryptString'](_0x18952f[_0x6eb5('0x3f')]['data3']);}return _0x134eb9;})['then'](saveUpdates(_0x18952f[_0x6eb5('0x3f')],null))[_0x6eb5('0x12')](respondWithResult(_0xa2340e,null))[_0x6eb5('0x3a')](handleError(_0xa2340e,null));};exports[_0x6eb5('0x13')]=function(_0x419024,_0x3f2d06){return db[_0x6eb5('0x1b')][_0x6eb5('0x38')]({'where':{'id':_0x419024[_0x6eb5('0x36')]['id']}})[_0x6eb5('0x12')](handleEntityNotFound(_0x3f2d06,null))[_0x6eb5('0x12')](removeEntity(_0x3f2d06,null))[_0x6eb5('0x3a')](handleError(_0x3f2d06,null));};exports[_0x6eb5('0x42')]=function(_0x1b407e,_0x50aa1b){return db[_0x6eb5('0x1b')][_0x6eb5('0x43')]({'where':{'id':_0x1b407e[_0x6eb5('0x36')]['id']},'raw':!![]})[_0x6eb5('0x12')](function(_0xb7a21d){if(!_0xb7a21d)return _0x50aa1b[_0x6eb5('0xa')](0x194);return{'url':oauth[_0x6eb5('0x44')](_0xb7a21d,_0x1b407e[_0x6eb5('0x45')]['id'])};})['then'](respondWithResult(_0x50aa1b,null))[_0x6eb5('0x3a')](handleError(_0x50aa1b,null));};exports[_0x6eb5('0x46')]=function(_0x35f8fa,_0x4bb9eb){var _0x49a83f=_0x35f8fa[_0x6eb5('0x3f')];var _0x5596fb;var _0x29dddf;if(_0x49a83f[_0x6eb5('0x14')])throw _0x49a83f;redis[_0x6eb5('0x47')](_0x49a83f[_0x6eb5('0x48')])[_0x6eb5('0x12')](function(_0x4ba120){if(!_0x4ba120)throw new Error(_0x6eb5('0x49'));_0x5596fb=JSON[_0x6eb5('0x4a')](_0x4ba120);var _0x1dcc2f=Buffer[_0x6eb5('0x4b')](_0x49a83f[_0x6eb5('0x48')],_0x6eb5('0x4c'))['toString'](_0x6eb5('0x4d'));_0x29dddf=JSON[_0x6eb5('0x4a')](_0x1dcc2f);if(!oauth[_0x6eb5('0x4e')](_0x49a83f['id_token'],_0x5596fb[_0x6eb5('0x4f')]))throw new Error(_0x6eb5('0x50'));redis[_0x6eb5('0x51')](_0x49a83f[_0x6eb5('0x48')]);return oauth['getOauth2MicrosoftAccessToken'](_0x49a83f['code'],_0x5596fb);})[_0x6eb5('0x12')](function(_0x182bf5){_0x5596fb['data5']=_0x182bf5[_0x6eb5('0x52')];_0x5596fb[_0x6eb5('0x53')]=_0x182bf5[_0x6eb5('0x54')];return db['CloudProvider'][_0x6eb5('0x41')]({'data5':_0x5596fb[_0x6eb5('0x55')],'data6':_0x5596fb['data6']},{'where':{'id':_0x5596fb['id']}});})[_0x6eb5('0x12')](function(){oauth['startRefreshInterval'](_0x5596fb);socket[_0x6eb5('0x56')](_0x6eb5('0x57'),{'id':_0x29dddf['id']});return;})[_0x6eb5('0x12')](respondWithStatusCode(_0x4bb9eb,null))[_0x6eb5('0x3a')](function(_0x467008){if(_0x29dddf){socket['emit'](_0x6eb5('0x58'),{'id':_0x29dddf['id']});}if(!_0x5596fb){logger[_0x6eb5('0x14')](_0x6eb5('0x59'),_0x467008);return _0x4bb9eb['status'](0x1f4)[_0x6eb5('0x17')](_0x467008['message']);}logger[_0x6eb5('0x14')](_0x6eb5('0x5a'),_0x5596fb['id'],JSON[_0x6eb5('0x5b')](_0x467008));});};
\ No newline at end of file
+var _0xfd60=['MicrosoftAzure','decryptString','data3','catch','keys','CloudProvider','attributes','fields','find','service','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','params','findOne','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','toString','ascii','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','code','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','stringify','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','localhost','socket.io-emitter','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','name','send','padEnd','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows'];(function(_0x5e1bc0,_0x103ecf){var _0xc3685f=function(_0x4767a3){while(--_0x4767a3){_0x5e1bc0['push'](_0x5e1bc0['shift']());}};_0xc3685f(++_0x103ecf);}(_0xfd60,0xe2));var _0x0fd6=function(_0x43941d,_0x45fd0d){_0x43941d=_0x43941d-0x0;var _0x27b82a=_0xfd60[_0x43941d];return _0x27b82a;};'use strict';var _=require('lodash');var Redis=require(_0x0fd6('0x0'));var qs=require(_0x0fd6('0x1'));var encryptor=require(_0x0fd6('0x2'));var config=require(_0x0fd6('0x3'));var logger=require(_0x0fd6('0x4'))(_0x0fd6('0x5'));var db=require(_0x0fd6('0x6'))['db'];var oauth=require(_0x0fd6('0x7'));config[_0x0fd6('0x8')]=_[_0x0fd6('0x9')](config[_0x0fd6('0x8')],{'host':_0x0fd6('0xa'),'port':0x18eb});var socket=require(_0x0fd6('0xb'))(new Redis(config[_0x0fd6('0x8')]));var redis=new Redis(config[_0x0fd6('0x8')]);function respondWithStatusCode(_0x4e81b7,_0x3b91dd){_0x3b91dd=_0x3b91dd||0xcc;return function(_0x586d43){if(_0x586d43){return _0x4e81b7[_0x0fd6('0xc')](_0x3b91dd);}return _0x4e81b7['status'](_0x3b91dd)[_0x0fd6('0xd')]();};}function respondWithResult(_0x540bc1,_0x120ae8){_0x120ae8=_0x120ae8||0xc8;return function(_0x30f4eb){if(_0x30f4eb){return _0x540bc1[_0x0fd6('0xe')](_0x120ae8)[_0x0fd6('0xf')](_0x30f4eb);}};}function respondWithFilteredResult(_0x4c9ed2,_0x59c873){return function(_0x4a43b1){if(_0x4a43b1){var _0x5de61c=typeof _0x59c873[_0x0fd6('0x10')]===_0x0fd6('0x11')&&typeof _0x59c873[_0x0fd6('0x12')]==='undefined';var _0x4dde80=_0x4a43b1[_0x0fd6('0x13')];var _0x5a055f=_0x5de61c?0x0:_0x59c873[_0x0fd6('0x10')];var _0x292bc1=_0x5de61c?_0x4a43b1[_0x0fd6('0x13')]:_0x59c873['offset']+_0x59c873[_0x0fd6('0x12')];var _0x4ebc63;if(_0x292bc1>=_0x4dde80){_0x292bc1=_0x4dde80;_0x4ebc63=0xc8;}else{_0x4ebc63=0xce;}_0x4c9ed2[_0x0fd6('0xe')](_0x4ebc63);return _0x4c9ed2['set'](_0x0fd6('0x14'),_0x5a055f+'-'+_0x292bc1+'/'+_0x4dde80)['json'](_0x4a43b1);}return null;};}function saveUpdates(_0xe52b67){return function(_0x5df0d4){if(_0x5df0d4){return _0x5df0d4[_0x0fd6('0x15')](_0xe52b67)[_0x0fd6('0x16')](function(_0x30896b){return _0x30896b;});}return null;};}function removeEntity(_0x4316db){return function(_0x7052bb){if(_0x7052bb){return _0x7052bb[_0x0fd6('0x17')]()['then'](function(){_0x4316db[_0x0fd6('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39b8af){return function(_0x1d8079){if(!_0x1d8079){_0x39b8af[_0x0fd6('0xc')](0x194);}return _0x1d8079;};}function handleError(_0x4dd12c,_0x3f4c46){_0x3f4c46=_0x3f4c46||0x1f4;return function(_0x454a8c){logger[_0x0fd6('0x18')](_0x454a8c['stack']);if(_0x454a8c[_0x0fd6('0x19')]){delete _0x454a8c['name'];}_0x4dd12c[_0x0fd6('0xe')](_0x3f4c46)[_0x0fd6('0x1a')](_0x454a8c);};}function maskClientSecret(_0x20735a){return _[_0x0fd6('0x1b')](_0x20735a['slice'](0x0,0x3),0x14,'*');}exports['index']=function(_0x42986e,_0x14bda2){var _0x3919bb={},_0x2f9e71={},_0x13dc78={'count':0x0,'rows':[]};var _0xbe653a=_[_0x0fd6('0x1c')](db['CloudProvider'][_0x0fd6('0x1d')],function(_0x4b8d40){return{'name':_0x4b8d40[_0x0fd6('0x1e')],'type':_0x4b8d40[_0x0fd6('0x1f')][_0x0fd6('0x20')]};});_0x2f9e71[_0x0fd6('0x21')]=_[_0x0fd6('0x1c')](_0xbe653a,_0x0fd6('0x19'));_0x2f9e71[_0x0fd6('0x22')]=_['keys'](_0x42986e[_0x0fd6('0x22')]);_0x2f9e71[_0x0fd6('0x23')]=_['intersection'](_0x2f9e71[_0x0fd6('0x21')],_0x2f9e71[_0x0fd6('0x22')]);_0x3919bb['attributes']=_[_0x0fd6('0x24')](_0x2f9e71[_0x0fd6('0x21')],qs['fields'](_0x42986e['query']['fields']));_0x3919bb['attributes']=_0x3919bb['attributes'][_0x0fd6('0x25')]?_0x3919bb['attributes']:_0x2f9e71[_0x0fd6('0x21')];if(!_0x42986e['query']['hasOwnProperty'](_0x0fd6('0x26'))){_0x3919bb[_0x0fd6('0x12')]=qs[_0x0fd6('0x12')](_0x42986e[_0x0fd6('0x22')][_0x0fd6('0x12')]);_0x3919bb[_0x0fd6('0x10')]=qs[_0x0fd6('0x10')](_0x42986e[_0x0fd6('0x22')][_0x0fd6('0x10')]);}_0x3919bb[_0x0fd6('0x27')]=qs['sort'](_0x42986e[_0x0fd6('0x22')][_0x0fd6('0x28')]);_0x3919bb['where']=qs[_0x0fd6('0x23')](_[_0x0fd6('0x29')](_0x42986e['query'],_0x2f9e71['filters']),_0xbe653a);if(_0x42986e[_0x0fd6('0x22')]['filter']){_0x3919bb[_0x0fd6('0x2a')]=_[_0x0fd6('0x2b')](_0x3919bb[_0x0fd6('0x2a')],{'$or':_[_0x0fd6('0x1c')](_0xbe653a,function(_0x2bebf9){if(_0x2bebf9[_0x0fd6('0x1f')]!==_0x0fd6('0x2c')){var _0x16112b={};_0x16112b[_0x2bebf9[_0x0fd6('0x19')]]={'$like':'%'+_0x42986e[_0x0fd6('0x22')][_0x0fd6('0x2d')]+'%'};return _0x16112b;}})});}_0x3919bb=_[_0x0fd6('0x2b')]({},_0x3919bb,_0x42986e['options']);var _0x4d53ff={'where':_0x3919bb[_0x0fd6('0x2a')]};return db['CloudProvider'][_0x0fd6('0x13')](_0x4d53ff)['then'](function(_0x5ab885){_0x13dc78[_0x0fd6('0x13')]=_0x5ab885;if(_0x42986e['query'][_0x0fd6('0x2e')]){_0x3919bb[_0x0fd6('0x2f')]=[{'all':!![]}];}return db['CloudProvider'][_0x0fd6('0x30')](_0x3919bb);})[_0x0fd6('0x16')](function(_0x513317){_0x13dc78[_0x0fd6('0x31')]=_[_0x0fd6('0x1c')](_0x513317,function(_0x17c827){if(_0x17c827['service']===_0x0fd6('0x32')){var _0x44eb6d=encryptor[_0x0fd6('0x33')](_0x17c827[_0x0fd6('0x34')]);_0x17c827['data3']=maskClientSecret(_0x44eb6d);}return _0x17c827;});return _0x13dc78;})[_0x0fd6('0x16')](respondWithFilteredResult(_0x14bda2,_0x3919bb))[_0x0fd6('0x35')](handleError(_0x14bda2,null));};exports['show']=function(_0x10244f,_0x5a1eba){var _0x5829d9={'raw':!![],'where':{'id':_0x10244f['params']['id']}},_0x13de3c={};_0x13de3c[_0x0fd6('0x21')]=_[_0x0fd6('0x36')](db[_0x0fd6('0x37')][_0x0fd6('0x1d')]);_0x13de3c['query']=_['keys'](_0x10244f[_0x0fd6('0x22')]);_0x13de3c[_0x0fd6('0x23')]=_['intersection'](_0x13de3c[_0x0fd6('0x21')],_0x13de3c[_0x0fd6('0x22')]);_0x5829d9[_0x0fd6('0x38')]=_[_0x0fd6('0x24')](_0x13de3c[_0x0fd6('0x21')],qs[_0x0fd6('0x39')](_0x10244f[_0x0fd6('0x22')][_0x0fd6('0x39')]));_0x5829d9[_0x0fd6('0x38')]=_0x5829d9[_0x0fd6('0x38')]['length']?_0x5829d9[_0x0fd6('0x38')]:_0x13de3c[_0x0fd6('0x21')];if(_0x10244f['query'][_0x0fd6('0x2e')]){_0x5829d9[_0x0fd6('0x2f')]=[{'all':!![]}];}_0x5829d9=_[_0x0fd6('0x2b')]({},_0x5829d9,_0x10244f['options']);return db[_0x0fd6('0x37')][_0x0fd6('0x3a')](_0x5829d9)[_0x0fd6('0x16')](handleEntityNotFound(_0x5a1eba,null))['then'](function(_0x387e94){if(_0x387e94[_0x0fd6('0x3b')]===_0x0fd6('0x32')){var _0x10cd04=encryptor[_0x0fd6('0x33')](_0x387e94['data3']);_0x387e94[_0x0fd6('0x34')]=maskClientSecret(_0x10cd04);}return _0x387e94;})['then'](respondWithResult(_0x5a1eba,null))[_0x0fd6('0x35')](handleError(_0x5a1eba,null));};exports[_0x0fd6('0x3c')]=function(_0x18452d,_0x14a289){if(!_0x18452d[_0x0fd6('0x3d')][_0x0fd6('0x19')])throw new Error(_0x0fd6('0x3e'));if(!_0x18452d[_0x0fd6('0x3d')][_0x0fd6('0x3b')])throw new Error(_0x0fd6('0x3f'));var _0x674186=db[_0x0fd6('0x37')][_0x0fd6('0x1d')]['service']['values'];if(!_0x674186[_0x0fd6('0x40')](_0x18452d[_0x0fd6('0x3d')][_0x0fd6('0x3b')]))throw new Error(_0x0fd6('0x41')+_0x674186[_0x0fd6('0x42')](',\x20'));if(_0x18452d['body'][_0x0fd6('0x3b')]===_0x0fd6('0x32')&&_0x18452d[_0x0fd6('0x3d')][_0x0fd6('0x34')]){_0x18452d[_0x0fd6('0x3d')][_0x0fd6('0x34')]=encryptor[_0x0fd6('0x43')](_0x18452d['body'][_0x0fd6('0x34')]);}return db[_0x0fd6('0x37')][_0x0fd6('0x3c')](_0x18452d[_0x0fd6('0x3d')],{})[_0x0fd6('0x16')](respondWithResult(_0x14a289,0xc9))[_0x0fd6('0x35')](handleError(_0x14a289,null));};exports[_0x0fd6('0x15')]=function(_0x4990b,_0x1eda8a){if(_0x4990b[_0x0fd6('0x3d')]['id']){delete _0x4990b[_0x0fd6('0x3d')]['id'];}return db[_0x0fd6('0x37')][_0x0fd6('0x3a')]({'where':{'id':_0x4990b[_0x0fd6('0x44')]['id']}})[_0x0fd6('0x16')](handleEntityNotFound(_0x1eda8a,null))['then'](function(_0x469ca9){if(_0x469ca9[_0x0fd6('0x3b')]===_0x0fd6('0x32')&&_0x4990b[_0x0fd6('0x3d')][_0x0fd6('0x34')]){_0x4990b[_0x0fd6('0x3d')]['data3']=encryptor[_0x0fd6('0x43')](_0x4990b[_0x0fd6('0x3d')]['data3']);}return _0x469ca9;})[_0x0fd6('0x16')](saveUpdates(_0x4990b[_0x0fd6('0x3d')],null))[_0x0fd6('0x16')](respondWithResult(_0x1eda8a,null))['catch'](handleError(_0x1eda8a,null));};exports[_0x0fd6('0x17')]=function(_0x2465fb,_0x37702a){return db[_0x0fd6('0x37')][_0x0fd6('0x3a')]({'where':{'id':_0x2465fb[_0x0fd6('0x44')]['id']}})[_0x0fd6('0x16')](handleEntityNotFound(_0x37702a,null))[_0x0fd6('0x16')](removeEntity(_0x37702a,null))['catch'](handleError(_0x37702a,null));};exports['oauth2MicrosoftAuthorize']=function(_0x58583f,_0x3bbee7){return db[_0x0fd6('0x37')][_0x0fd6('0x45')]({'where':{'id':_0x58583f[_0x0fd6('0x44')]['id']},'raw':!![]})[_0x0fd6('0x16')](function(_0x20b75c){if(!_0x20b75c)return _0x3bbee7['sendStatus'](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x20b75c,_0x58583f['user']['id'])};})[_0x0fd6('0x16')](respondWithResult(_0x3bbee7,null))[_0x0fd6('0x35')](handleError(_0x3bbee7,null));};exports[_0x0fd6('0x46')]=function(_0x59732a,_0x20c4aa){var _0x5e1540=_0x59732a[_0x0fd6('0x3d')];var _0x512d46;var _0x13d681;if(_0x5e1540[_0x0fd6('0x18')])throw _0x5e1540;redis[_0x0fd6('0x47')](_0x5e1540[_0x0fd6('0x48')])[_0x0fd6('0x16')](function(_0x129c48){if(!_0x129c48)throw new Error(_0x0fd6('0x49'));_0x512d46=JSON[_0x0fd6('0x4a')](_0x129c48);var _0x53d554=Buffer[_0x0fd6('0x4b')](_0x5e1540[_0x0fd6('0x48')],'base64')[_0x0fd6('0x4c')](_0x0fd6('0x4d'));_0x13d681=JSON[_0x0fd6('0x4a')](_0x53d554);if(!oauth['isValidIdToken'](_0x5e1540[_0x0fd6('0x4e')],_0x512d46[_0x0fd6('0x4f')]))throw new Error(_0x0fd6('0x50'));redis[_0x0fd6('0x51')](_0x5e1540[_0x0fd6('0x48')]);return oauth['getOauth2MicrosoftAccessToken'](_0x5e1540[_0x0fd6('0x52')],_0x512d46);})[_0x0fd6('0x16')](function(_0x2deb81){_0x512d46[_0x0fd6('0x53')]=_0x2deb81[_0x0fd6('0x54')];_0x512d46[_0x0fd6('0x55')]=_0x2deb81[_0x0fd6('0x56')];return db[_0x0fd6('0x37')][_0x0fd6('0x15')]({'data5':_0x512d46[_0x0fd6('0x53')],'data6':_0x512d46['data6']},{'where':{'id':_0x512d46['id']}});})[_0x0fd6('0x16')](function(){oauth['startRefreshInterval'](_0x512d46);socket[_0x0fd6('0x57')](_0x0fd6('0x58'),{'id':_0x13d681['id']});return;})[_0x0fd6('0x16')](respondWithStatusCode(_0x20c4aa,null))[_0x0fd6('0x35')](function(_0x379450){if(_0x13d681){socket[_0x0fd6('0x57')]('microsoftAuthorization:error',{'id':_0x13d681['id']});}if(!_0x512d46){logger['error'](_0x0fd6('0x59'),_0x379450);return _0x20c4aa['status'](0x1f4)[_0x0fd6('0x1a')](_0x379450[_0x0fd6('0x5a')]);}logger[_0x0fd6('0x18')]('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x512d46['id'],JSON[_0x0fd6('0x5b')](_0x379450));});};
\ No newline at end of file
index 1eaf6a0..2356e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf5=['request-promise','path','./cloudProvider.attributes','exports','define','util','../../config/logger','api','moment','bluebird'];(function(_0x5893ee,_0x3b866e){var _0x22484f=function(_0x573e62){while(--_0x573e62){_0x5893ee['push'](_0x5893ee['shift']());}};_0x22484f(++_0x3b866e);}(_0xfcf5,0x163));var _0x5fcf=function(_0x2c38fd,_0x29fee9){_0x2c38fd=_0x2c38fd-0x0;var _0xe7bc8b=_0xfcf5[_0x2c38fd];return _0xe7bc8b;};'use strict';var _=require('lodash');var util=require(_0x5fcf('0x0'));var logger=require(_0x5fcf('0x1'))(_0x5fcf('0x2'));var moment=require(_0x5fcf('0x3'));var BPromise=require(_0x5fcf('0x4'));var rp=require(_0x5fcf('0x5'));var fs=require('fs');var path=require(_0x5fcf('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5fcf('0x7'));module[_0x5fcf('0x8')]=function(_0x445ae9,_0x45b8a1){return _0x445ae9[_0x5fcf('0x9')]('CloudProvider',attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c87=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','util'];(function(_0x9333e2,_0x533acc){var _0xa4a57a=function(_0x27ca38){while(--_0x27ca38){_0x9333e2['push'](_0x9333e2['shift']());}};_0xa4a57a(++_0x533acc);}(_0x6c87,0xdb));var _0x76c8=function(_0x572bbe,_0x3da3b2){_0x572bbe=_0x572bbe-0x0;var _0x6b4827=_0x6c87[_0x572bbe];return _0x6b4827;};'use strict';var _=require('lodash');var util=require(_0x76c8('0x0'));var logger=require(_0x76c8('0x1'))('api');var moment=require(_0x76c8('0x2'));var BPromise=require(_0x76c8('0x3'));var rp=require(_0x76c8('0x4'));var fs=require('fs');var path=require(_0x76c8('0x5'));var rimraf=require('rimraf');var config=require(_0x76c8('0x6'));var attributes=require(_0x76c8('0x7'));module[_0x76c8('0x8')]=function(_0x3116ed,_0x522e9c){return _0x3116ed[_0x76c8('0x9')](_0x76c8('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32d43f5..36bbe29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc0d=['key','value','oauth2Claims','oauth2/','data1','set','decode','payload','aud','audience','isAfter','unix','exp','resolve','findOne','then','refresh_token','data6','decryptString','data3','data5','access_token','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','crypto','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','map','type','Dynamics365','push','data7','/.default','join','replace','{TENANT_ID}','data2','code','id_token','from','stringify','toString','base64','randomBytes','hex','data4','response_mode','scope','state','nonce','login'];(function(_0xf10ab2,_0x4139fa){var _0x4c6629=function(_0x1be701){while(--_0x1be701){_0xf10ab2['push'](_0xf10ab2['shift']());}};_0x4c6629(++_0x4139fa);}(_0xfc0d,0x106));var _0xdfc0=function(_0x492803,_0x10d462){_0x492803=_0x492803-0x0;var _0x35401b=_0xfc0d[_0x492803];return _0x35401b;};'use strict';var _=require('lodash');var crypto=require(_0xdfc0('0x0'));var jwt=require(_0xdfc0('0x1'));var moment=require(_0xdfc0('0x2'));var Redis=require(_0xdfc0('0x3'));var rp=require(_0xdfc0('0x4'));var util=require(_0xdfc0('0x5'));var encryptor=require(_0xdfc0('0x6'));var config=require(_0xdfc0('0x7'));var logger=require(_0xdfc0('0x8'))(_0xdfc0('0x9'));var schedule=require(_0xdfc0('0xa'));var db=require(_0xdfc0('0xb'))['db'];config[_0xdfc0('0xc')]=_[_0xdfc0('0xd')](config['redis'],{'host':_0xdfc0('0xe'),'port':0x18eb});var redis=new Redis(config[_0xdfc0('0xc')]);var MICROSOFT_AUTH_URL=_0xdfc0('0xf');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xdfc0('0x10'),_0xdfc0('0x11'),_0xdfc0('0x12'),_0xdfc0('0x13'),_0xdfc0('0x14'),_0xdfc0('0x15')],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x3e7b74){var _0x22705b=_[_0xdfc0('0x16')](AZURE_AUTH_SCOPES[_0x3e7b74[_0xdfc0('0x17')]]);if(_0x3e7b74[_0xdfc0('0x17')]===_0xdfc0('0x18'))_0x22705b[_0xdfc0('0x19')](_0x3e7b74[_0xdfc0('0x1a')]+_0xdfc0('0x1b'));return _0x22705b[_0xdfc0('0x1c')]('\x20');}function getAccessTokenScope(_0x30e6b5){if(_0x30e6b5[_0xdfc0('0x17')]==='Outlook365')return _0xdfc0('0x13');if(_0x30e6b5[_0xdfc0('0x17')]===_0xdfc0('0x18'))return _0x30e6b5['data7']+'/.default';}function generateMicrosoftAuthorizationUrl(_0x150ed7,_0x27b3b0){var _0x4e127c=MICROSOFT_AUTH_URL[_0xdfc0('0x1d')](_0xdfc0('0x1e'),_0x150ed7[_0xdfc0('0x1f')]);var _0x482790=[_0xdfc0('0x20'),_0xdfc0('0x21')];var _0x2fcd1d=Buffer[_0xdfc0('0x22')](JSON[_0xdfc0('0x23')]({'id':_0x27b3b0}))[_0xdfc0('0x24')](_0xdfc0('0x25'));var _0x37ba85=crypto[_0xdfc0('0x26')](0x10)['toString'](_0xdfc0('0x27'));var _0x355279=getAuthorizationScopes(_0x150ed7);var _0x56fca8=[{'key':'client_id','value':_0x150ed7['data1']},{'key':'response_type','value':encodeURIComponent(_0x482790[_0xdfc0('0x1c')]('\x20'))},{'key':'redirect_uri','value':_0x150ed7[_0xdfc0('0x28')]},{'key':_0xdfc0('0x29'),'value':'form_post'},{'key':_0xdfc0('0x2a'),'value':encodeURIComponent(_0x355279)},{'key':_0xdfc0('0x2b'),'value':_0x2fcd1d},{'key':_0xdfc0('0x2c'),'value':_0x37ba85},{'key':'prompt','value':_0xdfc0('0x2d')}];var _0x31b35b=_0x4e127c+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xdfc0('0x16')](_0x56fca8,function(_0x3ca3bf){return _0x3ca3bf[_0xdfc0('0x2e')]+'='+_0x3ca3bf[_0xdfc0('0x2f')];})[_0xdfc0('0x1c')]('&');_0x150ed7[_0xdfc0('0x30')]={'issuer':_0x4e127c[_0xdfc0('0x1d')](_0xdfc0('0x31'),''),'audience':_0x150ed7[_0xdfc0('0x32')],'state':_0x2fcd1d,'nonce':_0x37ba85};redis[_0xdfc0('0x33')](_0x2fcd1d,JSON[_0xdfc0('0x23')](_0x150ed7));return _0x31b35b;}function isValidIdToken(_0x283ccb,_0x530b9d){try{var _0x49202c=jwt[_0xdfc0('0x34')](_0x283ccb,{'complete':!![]});var _0x565e72=_0x49202c[_0xdfc0('0x35')];if(_0x565e72['iss']!==_0x530b9d['issuer'])return![];if(_0x565e72[_0xdfc0('0x36')]!==_0x530b9d[_0xdfc0('0x37')])return![];if(_0x565e72['nonce']!==_0x530b9d[_0xdfc0('0x2c')])return![];if(moment()[_0xdfc0('0x38')](moment[_0xdfc0('0x39')](_0x565e72[_0xdfc0('0x3a')])))return![];return!![];}catch(_0x3edfe9){throw _0x3edfe9;}}function refreshOauth2MicrosoftAccessToken(_0x11b06c){return Promise[_0xdfc0('0x3b')]()['then'](function(){if(_0x11b06c['data3'])return _0x11b06c;return db['CloudProvider'][_0xdfc0('0x3c')]({'where':{'id':_0x11b06c['id']},'raw':!![]});})[_0xdfc0('0x3d')](function(_0x55f1b1){var _0x19781f={'grant_type':_0xdfc0('0x3e'),'refresh_token':_0x55f1b1[_0xdfc0('0x3f')],'scope':getAccessTokenScope(_0x55f1b1),'redirect_uri':_0x55f1b1[_0xdfc0('0x28')],'client_id':_0x55f1b1[_0xdfc0('0x32')],'client_secret':encryptor[_0xdfc0('0x40')](_0x55f1b1[_0xdfc0('0x41')])};var _0x5b06f1={'method':'POST','uri':MICROSOFT_AUTH_URL['replace'](_0xdfc0('0x1e'),_0x55f1b1['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x19781f,'json':!![]};return rp(_0x5b06f1);})['then'](function(_0x2c6d0b){_0x11b06c[_0xdfc0('0x42')]=_0x2c6d0b[_0xdfc0('0x43')];_0x11b06c[_0xdfc0('0x3f')]=_0x2c6d0b[_0xdfc0('0x3e')];return db['CloudProvider']['update']({'data5':_0x11b06c[_0xdfc0('0x42')],'data6':_0x11b06c[_0xdfc0('0x3f')]},{'where':{'id':_0x11b06c['id']}});})[_0xdfc0('0x3d')](function(){return _0x11b06c;})[_0xdfc0('0x44')](function(_0x537071){logger[_0xdfc0('0x45')](_0xdfc0('0x46'),_0x11b06c['id'],_0x537071);});}function getOauth2MicrosoftAccessToken(_0x21a2c0,_0x2bf3ff){var _0x2d7191={'grant_type':_0xdfc0('0x47'),'code':_0x21a2c0,'scope':getAccessTokenScope(_0x2bf3ff),'redirect_uri':_0x2bf3ff[_0xdfc0('0x28')],'client_id':_0x2bf3ff[_0xdfc0('0x32')],'client_secret':encryptor[_0xdfc0('0x40')](_0x2bf3ff['data3'])};var _0x3725c8={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xdfc0('0x1d')](_0xdfc0('0x1e'),_0x2bf3ff['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2d7191,'json':!![]};return rp(_0x3725c8);}function startRefreshInterval(_0xccdfbc){var _0x4bbf68=schedule[_0xdfc0('0x48')];if(_0x4bbf68[_0xccdfbc['id']])clearInterval(_0x4bbf68[_0xccdfbc['id']]);_0x4bbf68[_0xccdfbc['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xdfc0('0x49')](this,{'id':_0xccdfbc['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xdfc0('0x48')]=_0x4bbf68;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xdfc0('0x4a')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xdfc0('0x3d')](function(_0x11e064){var _0x2aae59=_0x11e064[_0xdfc0('0x16')](function(_0x3f87db){return refreshOauth2MicrosoftAccessToken(_0x3f87db)['then'](function(_0x1e9f47){startRefreshInterval(_0x1e9f47);});});return Promise['all'](_0x2aae59);})['catch'](function(_0x37c13b){var _0x635a4d=_0x37c13b?util[_0xdfc0('0x4b')](_0x37c13b,{'showHidden':![],'depth':null}):'';logger[_0xdfc0('0x45')](_0xdfc0('0x4c'),_0x635a4d);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x29db=['email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','data7','/.default','Outlook365','replace','{TENANT_ID}','data2','from','toString','base64','hex','client_id','data1','response_type','join','redirect_uri','data4','form_post','state','nonce','prompt','login','key','value','oauth2Claims','oauth2/','set','payload','iss','issuer','aud','audience','isAfter','unix','exp','then','data3','findOne','refresh_token','data6','decryptString','POST','access_token','CloudProvider','data5','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','findAll','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','request-promise','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','defaults','redis','localhost','profile'];(function(_0x46cad4,_0x2002aa){var _0x2468c6=function(_0x57f73a){while(--_0x57f73a){_0x46cad4['push'](_0x46cad4['shift']());}};_0x2468c6(++_0x2002aa);}(_0x29db,0x8d));var _0xb29d=function(_0x843b07,_0x155d72){_0x843b07=_0x843b07-0x0;var _0x3ed748=_0x29db[_0x843b07];return _0x3ed748;};'use strict';var _=require(_0xb29d('0x0'));var crypto=require('crypto');var jwt=require(_0xb29d('0x1'));var moment=require(_0xb29d('0x2'));var Redis=require('ioredis');var rp=require(_0xb29d('0x3'));var util=require('util');var encryptor=require(_0xb29d('0x4'));var config=require(_0xb29d('0x5'));var logger=require(_0xb29d('0x6'))(_0xb29d('0x7'));var schedule=require(_0xb29d('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xb29d('0x9')](config[_0xb29d('0xa')],{'host':_0xb29d('0xb'),'port':0x18eb});var redis=new Redis(config[_0xb29d('0xa')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xb29d('0xc'),_0xb29d('0xd'),_0xb29d('0xe'),_0xb29d('0xf'),_0xb29d('0x10'),_0xb29d('0x11')],'Dynamics365':['openid',_0xb29d('0xe')]};var MICROSOFT_AUTH_ENDPOINT=_0xb29d('0x12');var MICROSOFT_TOKEN_ENDPOINT=_0xb29d('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5c3e8f){var _0x2b9349=_[_0xb29d('0x14')](AZURE_AUTH_SCOPES[_0x5c3e8f[_0xb29d('0x15')]]);if(_0x5c3e8f[_0xb29d('0x15')]===_0xb29d('0x16'))_0x2b9349['push'](_0x5c3e8f[_0xb29d('0x17')]+_0xb29d('0x18'));return _0x2b9349['join']('\x20');}function getAccessTokenScope(_0x2b4f49){if(_0x2b4f49[_0xb29d('0x15')]===_0xb29d('0x19'))return _0xb29d('0xf');if(_0x2b4f49[_0xb29d('0x15')]==='Dynamics365')return _0x2b4f49['data7']+_0xb29d('0x18');}function generateMicrosoftAuthorizationUrl(_0x202318,_0x374394){var _0x29de33=MICROSOFT_AUTH_URL[_0xb29d('0x1a')](_0xb29d('0x1b'),_0x202318[_0xb29d('0x1c')]);var _0x5217e7=['code','id_token'];var _0x36673e=Buffer[_0xb29d('0x1d')](JSON['stringify']({'id':_0x374394}))[_0xb29d('0x1e')](_0xb29d('0x1f'));var _0xee9d5a=crypto['randomBytes'](0x10)[_0xb29d('0x1e')](_0xb29d('0x20'));var _0x5817cc=getAuthorizationScopes(_0x202318);var _0x343ccd=[{'key':_0xb29d('0x21'),'value':_0x202318[_0xb29d('0x22')]},{'key':_0xb29d('0x23'),'value':encodeURIComponent(_0x5217e7[_0xb29d('0x24')]('\x20'))},{'key':_0xb29d('0x25'),'value':_0x202318[_0xb29d('0x26')]},{'key':'response_mode','value':_0xb29d('0x27')},{'key':'scope','value':encodeURIComponent(_0x5817cc)},{'key':_0xb29d('0x28'),'value':_0x36673e},{'key':_0xb29d('0x29'),'value':_0xee9d5a},{'key':_0xb29d('0x2a'),'value':_0xb29d('0x2b')}];var _0x4fbde8=_0x29de33+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xb29d('0x14')](_0x343ccd,function(_0x2dc158){return _0x2dc158[_0xb29d('0x2c')]+'='+_0x2dc158[_0xb29d('0x2d')];})[_0xb29d('0x24')]('&');_0x202318[_0xb29d('0x2e')]={'issuer':_0x29de33['replace'](_0xb29d('0x2f'),''),'audience':_0x202318['data1'],'state':_0x36673e,'nonce':_0xee9d5a};redis[_0xb29d('0x30')](_0x36673e,JSON['stringify'](_0x202318));return _0x4fbde8;}function isValidIdToken(_0x497441,_0x2be86a){try{var _0x52b105=jwt['decode'](_0x497441,{'complete':!![]});var _0x4ef3f4=_0x52b105[_0xb29d('0x31')];if(_0x4ef3f4[_0xb29d('0x32')]!==_0x2be86a[_0xb29d('0x33')])return![];if(_0x4ef3f4[_0xb29d('0x34')]!==_0x2be86a[_0xb29d('0x35')])return![];if(_0x4ef3f4['nonce']!==_0x2be86a[_0xb29d('0x29')])return![];if(moment()[_0xb29d('0x36')](moment[_0xb29d('0x37')](_0x4ef3f4[_0xb29d('0x38')])))return![];return!![];}catch(_0x9d2b6d){throw _0x9d2b6d;}}function refreshOauth2MicrosoftAccessToken(_0x383a16){return Promise['resolve']()[_0xb29d('0x39')](function(){if(_0x383a16[_0xb29d('0x3a')])return _0x383a16;return db['CloudProvider'][_0xb29d('0x3b')]({'where':{'id':_0x383a16['id']},'raw':!![]});})[_0xb29d('0x39')](function(_0xed6083){var _0x2fb545={'grant_type':_0xb29d('0x3c'),'refresh_token':_0xed6083[_0xb29d('0x3d')],'scope':getAccessTokenScope(_0xed6083),'redirect_uri':_0xed6083[_0xb29d('0x26')],'client_id':_0xed6083[_0xb29d('0x22')],'client_secret':encryptor[_0xb29d('0x3e')](_0xed6083[_0xb29d('0x3a')])};var _0x4444da={'method':_0xb29d('0x3f'),'uri':MICROSOFT_AUTH_URL[_0xb29d('0x1a')](_0xb29d('0x1b'),_0xed6083[_0xb29d('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2fb545,'json':!![]};return rp(_0x4444da);})['then'](function(_0x4ab342){_0x383a16['data5']=_0x4ab342[_0xb29d('0x40')];_0x383a16[_0xb29d('0x3d')]=_0x4ab342[_0xb29d('0x3c')];return db[_0xb29d('0x41')]['update']({'data5':_0x383a16[_0xb29d('0x42')],'data6':_0x383a16[_0xb29d('0x3d')]},{'where':{'id':_0x383a16['id']}});})[_0xb29d('0x39')](function(){return _0x383a16;})[_0xb29d('0x43')](function(_0x49d478){logger[_0xb29d('0x44')](_0xb29d('0x45'),_0x383a16['id'],_0x49d478);});}function getOauth2MicrosoftAccessToken(_0x46194c,_0x41872d){var _0x5ee4c8={'grant_type':_0xb29d('0x46'),'code':_0x46194c,'scope':getAccessTokenScope(_0x41872d),'redirect_uri':_0x41872d[_0xb29d('0x26')],'client_id':_0x41872d[_0xb29d('0x22')],'client_secret':encryptor['decryptString'](_0x41872d[_0xb29d('0x3a')])};var _0x2a6bc2={'method':_0xb29d('0x3f'),'uri':MICROSOFT_AUTH_URL['replace'](_0xb29d('0x1b'),_0x41872d['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x5ee4c8,'json':!![]};return rp(_0x2a6bc2);}function startRefreshInterval(_0x1fe968){var _0x3c0e04=schedule[_0xb29d('0x47')];if(_0x3c0e04[_0x1fe968['id']])clearInterval(_0x3c0e04[_0x1fe968['id']]);_0x3c0e04[_0x1fe968['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x1fe968['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xb29d('0x47')]=_0x3c0e04;}function startAllRefreshIntervals(){return db[_0xb29d('0x41')][_0xb29d('0x48')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xb29d('0x39')](function(_0x40ac5d){var _0x59affc=_0x40ac5d['map'](function(_0x3b7384){return refreshOauth2MicrosoftAccessToken(_0x3b7384)[_0xb29d('0x39')](function(_0x18cae6){startRefreshInterval(_0x18cae6);});});return Promise[_0xb29d('0x49')](_0x59affc);})[_0xb29d('0x43')](function(_0x10afdf){var _0x21b422=_0x10afdf?util[_0xb29d('0x4a')](_0x10afdf,{'showHidden':![],'depth':null}):'';logger[_0xb29d('0x44')](_0xb29d('0x4b'),_0x21b422);});}module[_0xb29d('0x4c')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 96f7e78..fc3245c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c9b=['code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x20f69c,_0x3cfb8d){var _0x225499=function(_0x12f26f){while(--_0x12f26f){_0x20f69c['push'](_0x20f69c['shift']());}};_0x225499(++_0x3cfb8d);}(_0x9c9b,0x194));var _0xb9c9=function(_0x26b892,_0xa83727){_0x26b892=_0x26b892-0x0;var _0x173992=_0x9c9b[_0x26b892];return _0x173992;};'use strict';var _=require('lodash');var util=require(_0xb9c9('0x0'));var moment=require(_0xb9c9('0x1'));var BPromise=require(_0xb9c9('0x2'));var rs=require(_0xb9c9('0x3'));var fs=require('fs');var Redis=require(_0xb9c9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb9c9('0x5'));var logger=require(_0xb9c9('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb9c9('0x7')][_0xb9c9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x726f01,_0x3ccb91,_0x16158b){return new BPromise(function(_0x9dc3da,_0x32ff81){return client[_0xb9c9('0x9')](_0x726f01,_0x16158b)[_0xb9c9('0xa')](function(_0x131b42){logger[_0xb9c9('0xb')](_0xb9c9('0xc'),_0x3ccb91,_0xb9c9('0xd'));logger['debug']('CloudProvider,\x20%s,\x20%s,\x20%s',_0x3ccb91,_0xb9c9('0xd'),JSON[_0xb9c9('0xe')](_0x131b42));if(_0x131b42[_0xb9c9('0xf')]){if(_0x131b42[_0xb9c9('0xf')][_0xb9c9('0x10')]===0x1f4){logger['error']('CloudProvider,\x20%s,\x20%s',_0x3ccb91,_0x131b42['error'][_0xb9c9('0x11')]);return _0x32ff81(_0x131b42['error'][_0xb9c9('0x11')]);}logger[_0xb9c9('0xf')]('CloudProvider,\x20%s,\x20%s',_0x3ccb91,_0x131b42['error'][_0xb9c9('0x11')]);return _0x9dc3da(_0x131b42[_0xb9c9('0xf')][_0xb9c9('0x11')]);}else{logger['info'](_0xb9c9('0xc'),_0x3ccb91,_0xb9c9('0xd'));_0x9dc3da(_0x131b42[_0xb9c9('0x12')][_0xb9c9('0x11')]);}})[_0xb9c9('0x13')](function(_0x49f17c){logger[_0xb9c9('0xf')](_0xb9c9('0xc'),_0x3ccb91,_0x49f17c);_0x32ff81(_0x49f17c);});});}
\ No newline at end of file
+var _0x36fe=['info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then'];(function(_0x344f0b,_0x82aaa2){var _0x483ed5=function(_0x586f8a){while(--_0x586f8a){_0x344f0b['push'](_0x344f0b['shift']());}};_0x483ed5(++_0x82aaa2);}(_0x36fe,0x127));var _0xe36f=function(_0xee1ec9,_0x2f0599){_0xee1ec9=_0xee1ec9-0x0;var _0x102a53=_0x36fe[_0xee1ec9];return _0x102a53;};'use strict';var _=require(_0xe36f('0x0'));var util=require(_0xe36f('0x1'));var moment=require(_0xe36f('0x2'));var BPromise=require(_0xe36f('0x3'));var rs=require(_0xe36f('0x4'));var fs=require('fs');var Redis=require(_0xe36f('0x5'));var db=require(_0xe36f('0x6'))['db'];var utils=require(_0xe36f('0x7'));var logger=require(_0xe36f('0x8'))(_0xe36f('0x9'));var config=require(_0xe36f('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xe36f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x349c9e,_0xdae131,_0x5a0d3c){return new BPromise(function(_0x1ecd6b,_0x21f2a5){return client['request'](_0x349c9e,_0x5a0d3c)[_0xe36f('0xc')](function(_0x386c00){logger[_0xe36f('0xd')](_0xe36f('0xe'),_0xdae131,_0xe36f('0xf'));logger['debug'](_0xe36f('0x10'),_0xdae131,'request\x20sent',JSON[_0xe36f('0x11')](_0x386c00));if(_0x386c00[_0xe36f('0x12')]){if(_0x386c00[_0xe36f('0x12')]['code']===0x1f4){logger[_0xe36f('0x12')](_0xe36f('0xe'),_0xdae131,_0x386c00['error'][_0xe36f('0x13')]);return _0x21f2a5(_0x386c00[_0xe36f('0x12')][_0xe36f('0x13')]);}logger[_0xe36f('0x12')]('CloudProvider,\x20%s,\x20%s',_0xdae131,_0x386c00[_0xe36f('0x12')][_0xe36f('0x13')]);return _0x1ecd6b(_0x386c00[_0xe36f('0x12')]['message']);}else{logger[_0xe36f('0xd')](_0xe36f('0xe'),_0xdae131,'request\x20sent');_0x1ecd6b(_0x386c00[_0xe36f('0x14')][_0xe36f('0x13')]);}})[_0xe36f('0x15')](function(_0x3f8f9f){logger[_0xe36f('0x12')](_0xe36f('0xe'),_0xdae131,_0x3f8f9f);_0x21f2a5(_0x3f8f9f);});});}
\ No newline at end of file
index d821e13..5b1235c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x5f2f,0x73));var _0xf5f2=function(_0x17a68c,_0x2c01a4){_0x17a68c=_0x17a68c-0x0;var _0x258f21=_0x5f2f[_0x17a68c];return _0x258f21;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);router[_0xf5f2('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x7')]);router[_0xf5f2('0x8')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x9')]);router[_0xf5f2('0xa')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xc')]);router[_0xf5f2('0xd')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xe')]);router[_0xf5f2('0x4')](_0xf5f2('0xf'),auth['isAuthenticated'](),controller[_0xf5f2('0x10')]);router['post']('/oauth2/microsoft/callback',controller[_0xf5f2('0x11')]);module[_0xf5f2('0x12')]=router;
\ No newline at end of file
+var _0xadb5=['put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','Router','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x3fbfc6,_0x508769){var _0x57fe79=function(_0x2b6e9c){while(--_0x2b6e9c){_0x3fbfc6['push'](_0x3fbfc6['shift']());}};_0x57fe79(++_0x508769);}(_0xadb5,0xad));var _0x5adb=function(_0x21c58c,_0x5c9439){_0x21c58c=_0x21c58c-0x0;var _0xa1fe=_0xadb5[_0x21c58c];return _0xa1fe;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['index']);router[_0x5adb('0x2')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller['show']);router[_0x5adb('0x5')]('/',auth[_0x5adb('0x3')](),controller[_0x5adb('0x6')]);router[_0x5adb('0x7')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0x8')]);router[_0x5adb('0x9')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0xa')]);router[_0x5adb('0x2')](_0x5adb('0xb'),auth[_0x5adb('0x3')](),controller['oauth2MicrosoftAuthorize']);router['post'](_0x5adb('0xc'),controller[_0x5adb('0xd')]);module[_0x5adb('0xe')]=router;
\ No newline at end of file
index 5ceb236..3bbf77a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d4c=['exports','STRING','name','sequelize'];(function(_0x2f9e12,_0x1b3d6c){var _0x38ab44=function(_0xb45748){while(--_0xb45748){_0x2f9e12['push'](_0x2f9e12['shift']());}};_0x38ab44(++_0x1b3d6c);}(_0x8d4c,0x133));var _0xc8d4=function(_0x220720,_0x10d6b4){_0x220720=_0x220720-0x0;var _0x20f9a7=_0x8d4c[_0x220720];return _0x20f9a7;};'use strict';var Sequelize=require(_0xc8d4('0x0'));module[_0xc8d4('0x1')]={'name':{'type':Sequelize[_0xc8d4('0x2')],'unique':_0xc8d4('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xc8d4('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xc8d4('0x2')]},'fax':{'type':Sequelize[_0xc8d4('0x2')]},'type':{'type':Sequelize[_0xc8d4('0x2')]},'street':{'type':Sequelize[_0xc8d4('0x2')]},'postalCode':{'type':Sequelize[_0xc8d4('0x2')]},'city':{'type':Sequelize[_0xc8d4('0x2')]},'country':{'type':Sequelize[_0xc8d4('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xc8d4('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0xc8d4('0x2')]},'sCity':{'type':Sequelize[_0xc8d4('0x2')]},'sCountry':{'type':Sequelize[_0xc8d4('0x2')]},'description':{'type':Sequelize[_0xc8d4('0x2')]}};
\ No newline at end of file
+var _0xe168=['name','sequelize','exports','STRING'];(function(_0x28b2a7,_0x3c07fa){var _0x1e628a=function(_0x1b3073){while(--_0x1b3073){_0x28b2a7['push'](_0x28b2a7['shift']());}};_0x1e628a(++_0x3c07fa);}(_0xe168,0x159));var _0x8e16=function(_0xd6eaf,_0x41ece8){_0xd6eaf=_0xd6eaf-0x0;var _0x59296b=_0xe168[_0xd6eaf];return _0x59296b;};'use strict';var Sequelize=require(_0x8e16('0x0'));module[_0x8e16('0x1')]={'name':{'type':Sequelize[_0x8e16('0x2')],'unique':_0x8e16('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x8e16('0x2')]},'companyId':{'type':Sequelize[_0x8e16('0x2')]},'website':{'type':Sequelize[_0x8e16('0x2')]},'phone':{'type':Sequelize[_0x8e16('0x2')]},'fax':{'type':Sequelize[_0x8e16('0x2')]},'type':{'type':Sequelize[_0x8e16('0x2')]},'street':{'type':Sequelize[_0x8e16('0x2')]},'postalCode':{'type':Sequelize[_0x8e16('0x2')]},'city':{'type':Sequelize[_0x8e16('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x8e16('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x8e16('0x2')]},'sStreet':{'type':Sequelize[_0x8e16('0x2')]},'sPostalCode':{'type':Sequelize[_0x8e16('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x8e16('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ebab573..2ce65f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6af=['create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','ids','omit','getContacts','CmContact','pick','map','nolimit','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','Companies','UserProfileResource','error','stack','name','send','CmCompany','describe','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','options','find'];(function(_0x2a7b50,_0x545d55){var _0x4224c9=function(_0x2b96f6){while(--_0x2b96f6){_0x2a7b50['push'](_0x2a7b50['shift']());}};_0x4224c9(++_0x545d55);}(_0xa6af,0x118));var _0xfa6a=function(_0x11b8ca,_0x159691){_0x11b8ca=_0x11b8ca-0x0;var _0x3b5c41=_0xa6af[_0x11b8ca];return _0x3b5c41;};'use strict';var emlformat=require(_0xfa6a('0x0'));var rimraf=require(_0xfa6a('0x1'));var zipdir=require(_0xfa6a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfa6a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfa6a('0x4'));var util=require(_0xfa6a('0x5'));var path=require('path');var sox=require(_0xfa6a('0x6'));var csv=require(_0xfa6a('0x7'));var ejs=require(_0xfa6a('0x8'));var fs=require('fs');var fs_extra=require(_0xfa6a('0x9'));var _=require(_0xfa6a('0xa'));var squel=require(_0xfa6a('0xb'));var crypto=require(_0xfa6a('0xc'));var jsforce=require(_0xfa6a('0xd'));var deskjs=require(_0xfa6a('0xe'));var toCsv=require(_0xfa6a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xfa6a('0xf'));var authService=require(_0xfa6a('0x10'));var qs=require(_0xfa6a('0x11'));var as=require(_0xfa6a('0x12'));var hardwareService=require(_0xfa6a('0x13'));var logger=require(_0xfa6a('0x14'))(_0xfa6a('0x15'));var utils=require(_0xfa6a('0x16'));var config=require(_0xfa6a('0x17'));var licenseUtil=require(_0xfa6a('0x18'));var db=require(_0xfa6a('0x19'))['db'];function respondWithStatusCode(_0x140d59,_0x419162){_0x419162=_0x419162||0xcc;return function(_0x39f0b7){if(_0x39f0b7){return _0x140d59[_0xfa6a('0x1a')](_0x419162);}return _0x140d59[_0xfa6a('0x1b')](_0x419162)[_0xfa6a('0x1c')]();};}function respondWithResult(_0x34c36c,_0x219122){_0x219122=_0x219122||0xc8;return function(_0x3e9035){if(_0x3e9035){return _0x34c36c[_0xfa6a('0x1b')](_0x219122)[_0xfa6a('0x1d')](_0x3e9035);}};}function respondWithFilteredResult(_0x402061,_0x5ba2ef){return function(_0x38abc8){if(_0x38abc8){var _0x151778=typeof _0x5ba2ef[_0xfa6a('0x1e')]===_0xfa6a('0x1f')&&typeof _0x5ba2ef[_0xfa6a('0x20')]===_0xfa6a('0x1f');var _0x1d9491=_0x38abc8[_0xfa6a('0x21')];var _0x31571b=_0x151778?0x0:_0x5ba2ef[_0xfa6a('0x1e')];var _0x2d6181=_0x151778?_0x38abc8[_0xfa6a('0x21')]:_0x5ba2ef['offset']+_0x5ba2ef[_0xfa6a('0x20')];var _0x6b1b35;if(_0x2d6181>=_0x1d9491){_0x2d6181=_0x1d9491;_0x6b1b35=0xc8;}else{_0x6b1b35=0xce;}_0x402061[_0xfa6a('0x1b')](_0x6b1b35);return _0x402061[_0xfa6a('0x22')](_0xfa6a('0x23'),_0x31571b+'-'+_0x2d6181+'/'+_0x1d9491)[_0xfa6a('0x1d')](_0x38abc8);}return null;};}function patchUpdates(_0x39915d){return function(_0x4a7386){try{jsonpatch[_0xfa6a('0x24')](_0x4a7386,_0x39915d,!![]);}catch(_0x353196){return BPromise[_0xfa6a('0x25')](_0x353196);}return _0x4a7386[_0xfa6a('0x26')]();};}function saveUpdates(_0x514655,_0x324f1e){return function(_0xda61e1){if(_0xda61e1){return _0xda61e1[_0xfa6a('0x27')](_0x514655)[_0xfa6a('0x28')](function(_0x673915){return _0x673915;});}return null;};}function removeEntity(_0x2f0727,_0x29f451){return function(_0x239ac2){if(_0x239ac2){return _0x239ac2['destroy']()['then'](function(){var _0x41ed97=_0x239ac2['get']({'plain':!![]});var _0x176fb4=_0xfa6a('0x29');return db[_0xfa6a('0x2a')]['destroy']({'where':{'type':_0x176fb4,'resourceId':_0x41ed97['id']}})['then'](function(){return _0x239ac2;});})[_0xfa6a('0x28')](function(){_0x2f0727['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f416f,_0x4d7f49){return function(_0x33bf22){if(!_0x33bf22){_0x5f416f[_0xfa6a('0x1a')](0x194);}return _0x33bf22;};}function handleError(_0x41560e,_0x299d3b){_0x299d3b=_0x299d3b||0x1f4;return function(_0x3c4c94){logger[_0xfa6a('0x2b')](_0x3c4c94[_0xfa6a('0x2c')]);if(_0x3c4c94[_0xfa6a('0x2d')]){delete _0x3c4c94[_0xfa6a('0x2d')];}_0x41560e[_0xfa6a('0x1b')](_0x299d3b)[_0xfa6a('0x2e')](_0x3c4c94);};}exports['index']=function(_0x2a6abc,_0x4ea5e9){var _0x1abd53={},_0x5a3877={},_0x1c824f={'count':0x0,'rows':[]};return db[_0xfa6a('0x2f')][_0xfa6a('0x30')]()['then'](function(_0x1b867b){_0x5a3877[_0xfa6a('0x31')]=_['keys'](_0x1b867b);_0x5a3877[_0xfa6a('0x32')]=_['keys'](_0x2a6abc[_0xfa6a('0x32')]);_0x5a3877[_0xfa6a('0x33')]=_['intersection'](_0x5a3877['model'],_0x5a3877[_0xfa6a('0x32')]);_0x1abd53[_0xfa6a('0x34')]=_[_0xfa6a('0x35')](_0x5a3877[_0xfa6a('0x31')],qs[_0xfa6a('0x36')](_0x2a6abc['query'][_0xfa6a('0x36')]));_0x1abd53['attributes']=_0x1abd53[_0xfa6a('0x34')][_0xfa6a('0x37')]?_0x1abd53[_0xfa6a('0x34')]:_0x5a3877['model'];if(!_0x2a6abc[_0xfa6a('0x32')][_0xfa6a('0x38')]('nolimit')){_0x1abd53['limit']=qs[_0xfa6a('0x20')](_0x2a6abc['query'][_0xfa6a('0x20')]);_0x1abd53[_0xfa6a('0x1e')]=qs[_0xfa6a('0x1e')](_0x2a6abc[_0xfa6a('0x32')]['offset']);}_0x1abd53[_0xfa6a('0x39')]=qs[_0xfa6a('0x3a')](_0x2a6abc[_0xfa6a('0x32')]['sort']);_0x1abd53[_0xfa6a('0x3b')]=qs[_0xfa6a('0x33')](_['pick'](_0x2a6abc[_0xfa6a('0x32')],_0x5a3877['filters']),_0x1b867b);if(_0x2a6abc[_0xfa6a('0x32')][_0xfa6a('0x3c')]){_0x1abd53['where']=_[_0xfa6a('0x3d')](_0x1abd53[_0xfa6a('0x3b')],{'$or':_['map'](_0x1abd53[_0xfa6a('0x34')],function(_0x538ad2){var _0x8c4c6a={};_0x8c4c6a[_0x538ad2]={'$like':'%'+_0x2a6abc[_0xfa6a('0x32')][_0xfa6a('0x3c')]+'%'};return _0x8c4c6a;})});}_0x1abd53=_[_0xfa6a('0x3d')]({},_0x1abd53,_0x2a6abc['options']);var _0x1c1854={'where':_0x1abd53[_0xfa6a('0x3b')]};return db[_0xfa6a('0x2f')]['count'](_0x1c1854)['then'](function(_0x3055df){_0x1c824f[_0xfa6a('0x21')]=_0x3055df;if(_0x2a6abc[_0xfa6a('0x32')][_0xfa6a('0x3e')]){_0x1abd53[_0xfa6a('0x3f')]=[{'all':!![]}];}return db[_0xfa6a('0x2f')][_0xfa6a('0x40')](_0x1abd53);})[_0xfa6a('0x28')](function(_0x1511bd){_0x1c824f[_0xfa6a('0x41')]=_0x1511bd;return _0x1c824f;})[_0xfa6a('0x28')](respondWithFilteredResult(_0x4ea5e9,_0x1abd53))[_0xfa6a('0x42')](handleError(_0x4ea5e9,null));})[_0xfa6a('0x42')](handleError(_0x4ea5e9,null));};exports['show']=function(_0x51ab05,_0x49be06){var _0x4f68a8={'raw':![],'where':{'id':_0x51ab05[_0xfa6a('0x43')]['id']}},_0x199440={};_0x199440['model']=_[_0xfa6a('0x44')](db['CmCompany'][_0xfa6a('0x45')]);_0x199440['query']=_[_0xfa6a('0x44')](_0x51ab05['query']);_0x199440['filters']=_[_0xfa6a('0x35')](_0x199440[_0xfa6a('0x31')],_0x199440[_0xfa6a('0x32')]);_0x4f68a8[_0xfa6a('0x34')]=_[_0xfa6a('0x35')](_0x199440[_0xfa6a('0x31')],qs[_0xfa6a('0x36')](_0x51ab05['query'][_0xfa6a('0x36')]));_0x4f68a8['attributes']=_0x4f68a8[_0xfa6a('0x34')][_0xfa6a('0x37')]?_0x4f68a8['attributes']:_0x199440[_0xfa6a('0x31')];if(_0x51ab05[_0xfa6a('0x32')][_0xfa6a('0x3e')]){_0x4f68a8[_0xfa6a('0x3f')]=[{'all':!![]}];}_0x4f68a8=_[_0xfa6a('0x3d')]({},_0x4f68a8,_0x51ab05[_0xfa6a('0x46')]);return db[_0xfa6a('0x2f')][_0xfa6a('0x47')](_0x4f68a8)['then'](handleEntityNotFound(_0x49be06,null))[_0xfa6a('0x28')](respondWithResult(_0x49be06,null))['catch'](handleError(_0x49be06,null));};exports[_0xfa6a('0x48')]=function(_0x2d1735,_0xa1705){return db[_0xfa6a('0x2f')]['create'](_0x2d1735[_0xfa6a('0x49')],{})[_0xfa6a('0x28')](function(_0x338e30){var _0x1d4978=_0x2d1735[_0xfa6a('0x4a')][_0xfa6a('0x4b')]({'plain':!![]});if(!_0x1d4978)throw new Error(_0xfa6a('0x4c'));if(_0x1d4978['role']===_0xfa6a('0x4a')){var _0x88ffdd=_0x338e30[_0xfa6a('0x4b')]({'plain':!![]});var _0x3e91b0=_0xfa6a('0x29');return db[_0xfa6a('0x4d')][_0xfa6a('0x47')]({'where':{'name':_0x3e91b0,'userProfileId':_0x1d4978[_0xfa6a('0x4e')]},'raw':!![]})[_0xfa6a('0x28')](function(_0x46ca38){if(_0x46ca38&&_0x46ca38['autoAssociation']===0x0){return db['UserProfileResource'][_0xfa6a('0x48')]({'name':_0x88ffdd[_0xfa6a('0x2d')],'resourceId':_0x88ffdd['id'],'type':_0x46ca38[_0xfa6a('0x2d')],'sectionId':_0x46ca38['id']},{})[_0xfa6a('0x28')](function(){return _0x338e30;});}else{return _0x338e30;}})[_0xfa6a('0x42')](function(_0x5ad147){logger[_0xfa6a('0x2b')](_0xfa6a('0x4f'),_0x5ad147);throw _0x5ad147;});}return _0x338e30;})['then'](respondWithResult(_0xa1705,0xc9))[_0xfa6a('0x42')](handleError(_0xa1705,null));};exports[_0xfa6a('0x27')]=function(_0x1ee021,_0x48c403){if(_0x1ee021[_0xfa6a('0x49')]['id']){delete _0x1ee021[_0xfa6a('0x49')]['id'];}return db[_0xfa6a('0x2f')][_0xfa6a('0x47')]({'where':{'id':_0x1ee021[_0xfa6a('0x43')]['id']}})[_0xfa6a('0x28')](handleEntityNotFound(_0x48c403,null))[_0xfa6a('0x28')](saveUpdates(_0x1ee021[_0xfa6a('0x49')],null))['then'](respondWithResult(_0x48c403,null))['catch'](handleError(_0x48c403,null));};exports['destroy']=function(_0x21d3d9,_0x21b1e7){return db[_0xfa6a('0x2f')][_0xfa6a('0x47')]({'where':{'id':_0x21d3d9[_0xfa6a('0x43')]['id']}})[_0xfa6a('0x28')](handleEntityNotFound(_0x21b1e7,null))[_0xfa6a('0x28')](removeEntity(_0x21b1e7,null))[_0xfa6a('0x42')](handleError(_0x21b1e7,null));};exports[_0xfa6a('0x30')]=function(_0x54a8bf,_0x5e3def){return db[_0xfa6a('0x2f')][_0xfa6a('0x30')]()[_0xfa6a('0x28')](respondWithResult(_0x5e3def,null))[_0xfa6a('0x42')](handleError(_0x5e3def,null));};exports['addContacts']=function(_0x252f93,_0x508eac,_0x44c7e8){return db['CmContact'][_0xfa6a('0x47')]({'where':{'id':_0x252f93[_0xfa6a('0x43')]['id']}})['then'](handleEntityNotFound(_0x508eac,null))[_0xfa6a('0x28')](function(_0x572495){if(_0x572495){return _0x572495[_0xfa6a('0x50')](_0x252f93['body'][_0xfa6a('0x51')],_[_0xfa6a('0x52')](_0x252f93[_0xfa6a('0x49')],[_0xfa6a('0x51'),'id'])||{});}})[_0xfa6a('0x28')](respondWithResult(_0x508eac,null))['catch'](handleError(_0x508eac,null));};exports[_0xfa6a('0x53')]=function(_0x953feb,_0x571da1,_0x4cde9a){var _0x20811d={};var _0x29a146={};var _0x26d357;var _0x490dd3;return db[_0xfa6a('0x2f')]['findOne']({'where':{'id':_0x953feb[_0xfa6a('0x43')]['id']}})[_0xfa6a('0x28')](handleEntityNotFound(_0x571da1,null))[_0xfa6a('0x28')](function(_0x46690f){if(_0x46690f){_0x26d357=_0x46690f;_0x29a146[_0xfa6a('0x31')]=_['keys'](db[_0xfa6a('0x54')][_0xfa6a('0x45')]);_0x29a146[_0xfa6a('0x32')]=_[_0xfa6a('0x44')](_0x953feb[_0xfa6a('0x32')]);_0x29a146[_0xfa6a('0x33')]=_['intersection'](_0x29a146['model'],_0x29a146[_0xfa6a('0x32')]);_0x20811d[_0xfa6a('0x34')]=_[_0xfa6a('0x35')](_0x29a146[_0xfa6a('0x31')],qs[_0xfa6a('0x36')](_0x953feb[_0xfa6a('0x32')]['fields']));_0x20811d['attributes']=_0x20811d[_0xfa6a('0x34')]['length']?_0x20811d[_0xfa6a('0x34')]:_0x29a146[_0xfa6a('0x31')];_0x20811d[_0xfa6a('0x39')]=qs[_0xfa6a('0x3a')](_0x953feb['query'][_0xfa6a('0x3a')]);_0x20811d['where']=qs['filters'](_[_0xfa6a('0x55')](_0x953feb['query'],_0x29a146['filters']));if(_0x953feb[_0xfa6a('0x32')]['filter']){_0x20811d['where']=_[_0xfa6a('0x3d')](_0x20811d[_0xfa6a('0x3b')],{'$or':_[_0xfa6a('0x56')](_0x20811d['attributes'],function(_0x565bf5){var _0x172486={};_0x172486[_0x565bf5]={'$like':'%'+_0x953feb[_0xfa6a('0x32')][_0xfa6a('0x3c')]+'%'};return _0x172486;})});}_0x20811d=_[_0xfa6a('0x3d')]({},_0x20811d,_0x953feb[_0xfa6a('0x46')]);return _0x26d357[_0xfa6a('0x53')](_0x20811d);}})[_0xfa6a('0x28')](function(_0xe71b6c){if(_0xe71b6c){_0x490dd3=_0xe71b6c[_0xfa6a('0x37')];if(!_0x953feb[_0xfa6a('0x32')][_0xfa6a('0x38')](_0xfa6a('0x57'))){_0x20811d[_0xfa6a('0x20')]=qs['limit'](_0x953feb['query'][_0xfa6a('0x20')]);_0x20811d[_0xfa6a('0x1e')]=qs[_0xfa6a('0x1e')](_0x953feb[_0xfa6a('0x32')][_0xfa6a('0x1e')]);}return _0x26d357[_0xfa6a('0x53')](_0x20811d);}})[_0xfa6a('0x28')](function(_0x40f31a){if(_0x40f31a){return _0x40f31a?{'count':_0x490dd3,'rows':_0x40f31a}:null;}})['then'](respondWithResult(_0x571da1,null))[_0xfa6a('0x42')](handleError(_0x571da1,null));};
\ No newline at end of file
+var _0x2f0f=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','save','update','destroy','then','get','UserProfileResource','error','stack','name','send','index','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','map','CmCompany','includeAll','findAll','rows','catch','rawAttributes','include','options','create','body','user','Companies','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addContacts','CmContact','ids','omit','getContacts','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x46ba2f,_0x49ef17){var _0x25e4c7=function(_0x5ab706){while(--_0x5ab706){_0x46ba2f['push'](_0x46ba2f['shift']());}};_0x25e4c7(++_0x49ef17);}(_0x2f0f,0xa6));var _0xf2f0=function(_0x5efb3c,_0x852a5a){_0x5efb3c=_0x5efb3c-0x0;var _0x349be3=_0x2f0f[_0x5efb3c];return _0x349be3;};'use strict';var emlformat=require(_0xf2f0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf2f0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf2f0('0x2'));var moment=require(_0xf2f0('0x3'));var BPromise=require(_0xf2f0('0x4'));var Mustache=require(_0xf2f0('0x5'));var util=require(_0xf2f0('0x6'));var path=require(_0xf2f0('0x7'));var sox=require(_0xf2f0('0x8'));var csv=require(_0xf2f0('0x9'));var ejs=require(_0xf2f0('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf2f0('0xb'));var squel=require(_0xf2f0('0xc'));var crypto=require(_0xf2f0('0xd'));var jsforce=require(_0xf2f0('0xe'));var deskjs=require(_0xf2f0('0xf'));var toCsv=require(_0xf2f0('0x9'));var querystring=require(_0xf2f0('0x10'));var Papa=require(_0xf2f0('0x11'));var Redis=require(_0xf2f0('0x12'));var authService=require(_0xf2f0('0x13'));var qs=require(_0xf2f0('0x14'));var as=require(_0xf2f0('0x15'));var hardwareService=require(_0xf2f0('0x16'));var logger=require('../../config/logger')(_0xf2f0('0x17'));var utils=require(_0xf2f0('0x18'));var config=require(_0xf2f0('0x19'));var licenseUtil=require(_0xf2f0('0x1a'));var db=require(_0xf2f0('0x1b'))['db'];function respondWithStatusCode(_0x568816,_0x2a9c9d){_0x2a9c9d=_0x2a9c9d||0xcc;return function(_0x22bd7a){if(_0x22bd7a){return _0x568816[_0xf2f0('0x1c')](_0x2a9c9d);}return _0x568816[_0xf2f0('0x1d')](_0x2a9c9d)[_0xf2f0('0x1e')]();};}function respondWithResult(_0xa4e04b,_0x4fe18e){_0x4fe18e=_0x4fe18e||0xc8;return function(_0x3a3197){if(_0x3a3197){return _0xa4e04b[_0xf2f0('0x1d')](_0x4fe18e)['json'](_0x3a3197);}};}function respondWithFilteredResult(_0x48a80c,_0x1567a3){return function(_0x5a27ad){if(_0x5a27ad){var _0x398bf3=typeof _0x1567a3['offset']===_0xf2f0('0x1f')&&typeof _0x1567a3['limit']===_0xf2f0('0x1f');var _0x1a4b21=_0x5a27ad[_0xf2f0('0x20')];var _0x1d5e9d=_0x398bf3?0x0:_0x1567a3[_0xf2f0('0x21')];var _0xae8fcb=_0x398bf3?_0x5a27ad['count']:_0x1567a3[_0xf2f0('0x21')]+_0x1567a3[_0xf2f0('0x22')];var _0x1a9a61;if(_0xae8fcb>=_0x1a4b21){_0xae8fcb=_0x1a4b21;_0x1a9a61=0xc8;}else{_0x1a9a61=0xce;}_0x48a80c[_0xf2f0('0x1d')](_0x1a9a61);return _0x48a80c[_0xf2f0('0x23')](_0xf2f0('0x24'),_0x1d5e9d+'-'+_0xae8fcb+'/'+_0x1a4b21)[_0xf2f0('0x25')](_0x5a27ad);}return null;};}function patchUpdates(_0x19b4a3){return function(_0x33dcc1){try{jsonpatch['apply'](_0x33dcc1,_0x19b4a3,!![]);}catch(_0x31b015){return BPromise['reject'](_0x31b015);}return _0x33dcc1[_0xf2f0('0x26')]();};}function saveUpdates(_0x2f4683,_0x22006e){return function(_0x5bd429){if(_0x5bd429){return _0x5bd429[_0xf2f0('0x27')](_0x2f4683)['then'](function(_0x9d7743){return _0x9d7743;});}return null;};}function removeEntity(_0x4818c6,_0x29b7ea){return function(_0xc46fb6){if(_0xc46fb6){return _0xc46fb6[_0xf2f0('0x28')]()[_0xf2f0('0x29')](function(){var _0x514030=_0xc46fb6[_0xf2f0('0x2a')]({'plain':!![]});var _0x260981='Companies';return db[_0xf2f0('0x2b')][_0xf2f0('0x28')]({'where':{'type':_0x260981,'resourceId':_0x514030['id']}})[_0xf2f0('0x29')](function(){return _0xc46fb6;});})['then'](function(){_0x4818c6[_0xf2f0('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x208cb7,_0x10ac53){return function(_0x4f0020){if(!_0x4f0020){_0x208cb7[_0xf2f0('0x1c')](0x194);}return _0x4f0020;};}function handleError(_0x3b2c0f,_0x37657c){_0x37657c=_0x37657c||0x1f4;return function(_0x990107){logger[_0xf2f0('0x2c')](_0x990107[_0xf2f0('0x2d')]);if(_0x990107['name']){delete _0x990107[_0xf2f0('0x2e')];}_0x3b2c0f[_0xf2f0('0x1d')](_0x37657c)[_0xf2f0('0x2f')](_0x990107);};}exports[_0xf2f0('0x30')]=function(_0x56d5a2,_0x120f80){var _0x5ac264={},_0x3629cf={},_0x452a24={'count':0x0,'rows':[]};return db['CmCompany']['describe']()[_0xf2f0('0x29')](function(_0x230c50){_0x3629cf[_0xf2f0('0x31')]=_[_0xf2f0('0x32')](_0x230c50);_0x3629cf[_0xf2f0('0x33')]=_[_0xf2f0('0x32')](_0x56d5a2['query']);_0x3629cf['filters']=_[_0xf2f0('0x34')](_0x3629cf[_0xf2f0('0x31')],_0x3629cf['query']);_0x5ac264[_0xf2f0('0x35')]=_[_0xf2f0('0x34')](_0x3629cf[_0xf2f0('0x31')],qs['fields'](_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x36')]));_0x5ac264['attributes']=_0x5ac264[_0xf2f0('0x35')][_0xf2f0('0x37')]?_0x5ac264[_0xf2f0('0x35')]:_0x3629cf['model'];if(!_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x38')](_0xf2f0('0x39'))){_0x5ac264[_0xf2f0('0x22')]=qs[_0xf2f0('0x22')](_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x22')]);_0x5ac264[_0xf2f0('0x21')]=qs[_0xf2f0('0x21')](_0x56d5a2[_0xf2f0('0x33')]['offset']);}_0x5ac264[_0xf2f0('0x3a')]=qs[_0xf2f0('0x3b')](_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x3b')]);_0x5ac264[_0xf2f0('0x3c')]=qs['filters'](_[_0xf2f0('0x3d')](_0x56d5a2[_0xf2f0('0x33')],_0x3629cf[_0xf2f0('0x3e')]),_0x230c50);if(_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x3f')]){_0x5ac264['where']=_[_0xf2f0('0x40')](_0x5ac264['where'],{'$or':_[_0xf2f0('0x41')](_0x5ac264['attributes'],function(_0xc5ccd3){var _0x5bf973={};_0x5bf973[_0xc5ccd3]={'$like':'%'+_0x56d5a2['query'][_0xf2f0('0x3f')]+'%'};return _0x5bf973;})});}_0x5ac264=_[_0xf2f0('0x40')]({},_0x5ac264,_0x56d5a2['options']);var _0x583c90={'where':_0x5ac264['where']};return db[_0xf2f0('0x42')]['count'](_0x583c90)['then'](function(_0x1073c7){_0x452a24['count']=_0x1073c7;if(_0x56d5a2[_0xf2f0('0x33')][_0xf2f0('0x43')]){_0x5ac264['include']=[{'all':!![]}];}return db['CmCompany'][_0xf2f0('0x44')](_0x5ac264);})[_0xf2f0('0x29')](function(_0x550f5a){_0x452a24[_0xf2f0('0x45')]=_0x550f5a;return _0x452a24;})[_0xf2f0('0x29')](respondWithFilteredResult(_0x120f80,_0x5ac264))[_0xf2f0('0x46')](handleError(_0x120f80,null));})[_0xf2f0('0x46')](handleError(_0x120f80,null));};exports['show']=function(_0x5d6193,_0x15c50b){var _0x5e439e={'raw':![],'where':{'id':_0x5d6193['params']['id']}},_0x2e512f={};_0x2e512f[_0xf2f0('0x31')]=_[_0xf2f0('0x32')](db[_0xf2f0('0x42')][_0xf2f0('0x47')]);_0x2e512f['query']=_['keys'](_0x5d6193[_0xf2f0('0x33')]);_0x2e512f[_0xf2f0('0x3e')]=_[_0xf2f0('0x34')](_0x2e512f[_0xf2f0('0x31')],_0x2e512f[_0xf2f0('0x33')]);_0x5e439e[_0xf2f0('0x35')]=_[_0xf2f0('0x34')](_0x2e512f[_0xf2f0('0x31')],qs[_0xf2f0('0x36')](_0x5d6193['query'][_0xf2f0('0x36')]));_0x5e439e['attributes']=_0x5e439e[_0xf2f0('0x35')]['length']?_0x5e439e[_0xf2f0('0x35')]:_0x2e512f[_0xf2f0('0x31')];if(_0x5d6193[_0xf2f0('0x33')]['includeAll']){_0x5e439e[_0xf2f0('0x48')]=[{'all':!![]}];}_0x5e439e=_[_0xf2f0('0x40')]({},_0x5e439e,_0x5d6193[_0xf2f0('0x49')]);return db[_0xf2f0('0x42')]['find'](_0x5e439e)[_0xf2f0('0x29')](handleEntityNotFound(_0x15c50b,null))[_0xf2f0('0x29')](respondWithResult(_0x15c50b,null))['catch'](handleError(_0x15c50b,null));};exports[_0xf2f0('0x4a')]=function(_0x20ff43,_0x19a5ed){return db['CmCompany'][_0xf2f0('0x4a')](_0x20ff43[_0xf2f0('0x4b')],{})[_0xf2f0('0x29')](function(_0x26553c){var _0x40de15=_0x20ff43[_0xf2f0('0x4c')][_0xf2f0('0x2a')]({'plain':!![]});if(!_0x40de15)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x40de15['role']===_0xf2f0('0x4c')){var _0x5a86f9=_0x26553c[_0xf2f0('0x2a')]({'plain':!![]});var _0x257f12=_0xf2f0('0x4d');return db[_0xf2f0('0x4e')][_0xf2f0('0x4f')]({'where':{'name':_0x257f12,'userProfileId':_0x40de15[_0xf2f0('0x50')]},'raw':!![]})['then'](function(_0x4a1679){if(_0x4a1679&&_0x4a1679[_0xf2f0('0x51')]===0x0){return db['UserProfileResource'][_0xf2f0('0x4a')]({'name':_0x5a86f9[_0xf2f0('0x2e')],'resourceId':_0x5a86f9['id'],'type':_0x4a1679[_0xf2f0('0x2e')],'sectionId':_0x4a1679['id']},{})[_0xf2f0('0x29')](function(){return _0x26553c;});}else{return _0x26553c;}})[_0xf2f0('0x46')](function(_0xcd6831){logger['error'](_0xf2f0('0x52'),_0xcd6831);throw _0xcd6831;});}return _0x26553c;})[_0xf2f0('0x29')](respondWithResult(_0x19a5ed,0xc9))[_0xf2f0('0x46')](handleError(_0x19a5ed,null));};exports[_0xf2f0('0x27')]=function(_0x2dbf41,_0x15a2fb){if(_0x2dbf41[_0xf2f0('0x4b')]['id']){delete _0x2dbf41[_0xf2f0('0x4b')]['id'];}return db['CmCompany']['find']({'where':{'id':_0x2dbf41[_0xf2f0('0x53')]['id']}})['then'](handleEntityNotFound(_0x15a2fb,null))[_0xf2f0('0x29')](saveUpdates(_0x2dbf41[_0xf2f0('0x4b')],null))[_0xf2f0('0x29')](respondWithResult(_0x15a2fb,null))['catch'](handleError(_0x15a2fb,null));};exports['destroy']=function(_0x1a1b05,_0x8cc308){return db[_0xf2f0('0x42')]['find']({'where':{'id':_0x1a1b05['params']['id']}})[_0xf2f0('0x29')](handleEntityNotFound(_0x8cc308,null))[_0xf2f0('0x29')](removeEntity(_0x8cc308,null))[_0xf2f0('0x46')](handleError(_0x8cc308,null));};exports[_0xf2f0('0x54')]=function(_0x1f7bc0,_0x46a19d){return db[_0xf2f0('0x42')][_0xf2f0('0x54')]()[_0xf2f0('0x29')](respondWithResult(_0x46a19d,null))[_0xf2f0('0x46')](handleError(_0x46a19d,null));};exports[_0xf2f0('0x55')]=function(_0x427a98,_0x369e1d,_0x2ef0a4){return db[_0xf2f0('0x56')][_0xf2f0('0x4f')]({'where':{'id':_0x427a98[_0xf2f0('0x53')]['id']}})['then'](handleEntityNotFound(_0x369e1d,null))[_0xf2f0('0x29')](function(_0x188787){if(_0x188787){return _0x188787['addContacts'](_0x427a98[_0xf2f0('0x4b')][_0xf2f0('0x57')],_[_0xf2f0('0x58')](_0x427a98[_0xf2f0('0x4b')],[_0xf2f0('0x57'),'id'])||{});}})[_0xf2f0('0x29')](respondWithResult(_0x369e1d,null))[_0xf2f0('0x46')](handleError(_0x369e1d,null));};exports[_0xf2f0('0x59')]=function(_0x9f7666,_0x4b62e7,_0x1da1d6){var _0x19f12b={};var _0x3de1f2={};var _0x57d6e5;var _0xc8e9a4;return db['CmCompany']['findOne']({'where':{'id':_0x9f7666[_0xf2f0('0x53')]['id']}})['then'](handleEntityNotFound(_0x4b62e7,null))['then'](function(_0x4e09fa){if(_0x4e09fa){_0x57d6e5=_0x4e09fa;_0x3de1f2[_0xf2f0('0x31')]=_[_0xf2f0('0x32')](db[_0xf2f0('0x56')]['rawAttributes']);_0x3de1f2['query']=_['keys'](_0x9f7666[_0xf2f0('0x33')]);_0x3de1f2[_0xf2f0('0x3e')]=_['intersection'](_0x3de1f2[_0xf2f0('0x31')],_0x3de1f2[_0xf2f0('0x33')]);_0x19f12b[_0xf2f0('0x35')]=_['intersection'](_0x3de1f2[_0xf2f0('0x31')],qs[_0xf2f0('0x36')](_0x9f7666['query'][_0xf2f0('0x36')]));_0x19f12b[_0xf2f0('0x35')]=_0x19f12b[_0xf2f0('0x35')]['length']?_0x19f12b[_0xf2f0('0x35')]:_0x3de1f2['model'];_0x19f12b[_0xf2f0('0x3a')]=qs[_0xf2f0('0x3b')](_0x9f7666[_0xf2f0('0x33')]['sort']);_0x19f12b[_0xf2f0('0x3c')]=qs[_0xf2f0('0x3e')](_[_0xf2f0('0x3d')](_0x9f7666['query'],_0x3de1f2['filters']));if(_0x9f7666[_0xf2f0('0x33')]['filter']){_0x19f12b[_0xf2f0('0x3c')]=_[_0xf2f0('0x40')](_0x19f12b['where'],{'$or':_[_0xf2f0('0x41')](_0x19f12b[_0xf2f0('0x35')],function(_0x3b5fb9){var _0x298a5={};_0x298a5[_0x3b5fb9]={'$like':'%'+_0x9f7666[_0xf2f0('0x33')][_0xf2f0('0x3f')]+'%'};return _0x298a5;})});}_0x19f12b=_['merge']({},_0x19f12b,_0x9f7666[_0xf2f0('0x49')]);return _0x57d6e5[_0xf2f0('0x59')](_0x19f12b);}})[_0xf2f0('0x29')](function(_0x4f85fd){if(_0x4f85fd){_0xc8e9a4=_0x4f85fd['length'];if(!_0x9f7666['query']['hasOwnProperty'](_0xf2f0('0x39'))){_0x19f12b['limit']=qs[_0xf2f0('0x22')](_0x9f7666[_0xf2f0('0x33')]['limit']);_0x19f12b['offset']=qs[_0xf2f0('0x21')](_0x9f7666['query'][_0xf2f0('0x21')]);}return _0x57d6e5[_0xf2f0('0x59')](_0x19f12b);}})[_0xf2f0('0x29')](function(_0x35906f){if(_0x35906f){return _0x35906f?{'count':_0xc8e9a4,'rows':_0x35906f}:null;}})[_0xf2f0('0x29')](respondWithResult(_0x4b62e7,null))[_0xf2f0('0x46')](handleError(_0x4b62e7,null));};
\ No newline at end of file
index 34708e7..01c51ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc423=['CmCompany','cm_companies','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports'];(function(_0x151c7e,_0x5143ef){var _0xadf79b=function(_0x3d2691){while(--_0x3d2691){_0x151c7e['push'](_0x151c7e['shift']());}};_0xadf79b(++_0x5143ef);}(_0xc423,0x10a));var _0x3c42=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xc423[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x3c42('0x0'));var util=require(_0x3c42('0x1'));var logger=require('../../config/logger')(_0x3c42('0x2'));var moment=require('moment');var BPromise=require(_0x3c42('0x3'));var rp=require(_0x3c42('0x4'));var fs=require('fs');var path=require(_0x3c42('0x5'));var rimraf=require(_0x3c42('0x6'));var config=require(_0x3c42('0x7'));var attributes=require(_0x3c42('0x8'));module[_0x3c42('0x9')]=function(_0x399286,_0x564628){return _0x399286['define'](_0x3c42('0xa'),attributes,{'tableName':_0x3c42('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x24a7=['bluebird','path','../../config/environment','./cmCompany.attributes','exports','define','cm_companies','lodash','../../config/logger','api','moment'];(function(_0x441819,_0x5b8d0a){var _0x478882=function(_0x369786){while(--_0x369786){_0x441819['push'](_0x441819['shift']());}};_0x478882(++_0x5b8d0a);}(_0x24a7,0xf9));var _0x724a=function(_0x3e6e76,_0x2131b1){_0x3e6e76=_0x3e6e76-0x0;var _0x282488=_0x24a7[_0x3e6e76];return _0x282488;};'use strict';var _=require(_0x724a('0x0'));var util=require('util');var logger=require(_0x724a('0x1'))(_0x724a('0x2'));var moment=require(_0x724a('0x3'));var BPromise=require(_0x724a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x724a('0x5'));var rimraf=require('rimraf');var config=require(_0x724a('0x6'));var attributes=require(_0x724a('0x7'));module[_0x724a('0x8')]=function(_0x2ac538,_0x96ee1f){return _0x2ac538[_0x724a('0x9')]('CmCompany',attributes,{'tableName':_0x724a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 851245c..c3032ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a5=['http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4a3be1,_0x4a6426){var _0x31c113=function(_0xaa9e27){while(--_0xaa9e27){_0x4a3be1['push'](_0x4a3be1['shift']());}};_0x31c113(++_0x4a6426);}(_0xc7a5,0x84));var _0x5c7a=function(_0x1067a5,_0x120ff4){_0x1067a5=_0x1067a5-0x0;var _0xaaa0da=_0xc7a5[_0x1067a5];return _0xaaa0da;};'use strict';var _=require(_0x5c7a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5c7a('0x1'));var fs=require('fs');var Redis=require(_0x5c7a('0x2'));var db=require(_0x5c7a('0x3'))['db'];var utils=require(_0x5c7a('0x4'));var logger=require(_0x5c7a('0x5'))('rpc');var config=require(_0x5c7a('0x6'));var jayson=require(_0x5c7a('0x7'));var client=jayson['client'][_0x5c7a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x747532,_0x45fe7e,_0x3600dd){return new BPromise(function(_0x438d99,_0xf4f2c9){return client[_0x5c7a('0x9')](_0x747532,_0x3600dd)[_0x5c7a('0xa')](function(_0x2aebd7){logger['info'](_0x5c7a('0xb'),_0x45fe7e,_0x5c7a('0xc'));logger[_0x5c7a('0xd')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x45fe7e,_0x5c7a('0xc'),JSON[_0x5c7a('0xe')](_0x2aebd7));if(_0x2aebd7[_0x5c7a('0xf')]){if(_0x2aebd7[_0x5c7a('0xf')][_0x5c7a('0x10')]===0x1f4){logger['error'](_0x5c7a('0xb'),_0x45fe7e,_0x2aebd7['error'][_0x5c7a('0x11')]);return _0xf4f2c9(_0x2aebd7[_0x5c7a('0xf')][_0x5c7a('0x11')]);}logger[_0x5c7a('0xf')](_0x5c7a('0xb'),_0x45fe7e,_0x2aebd7[_0x5c7a('0xf')]['message']);return _0x438d99(_0x2aebd7[_0x5c7a('0xf')]['message']);}else{logger['info']('CmCompany,\x20%s,\x20%s',_0x45fe7e,_0x5c7a('0xc'));_0x438d99(_0x2aebd7[_0x5c7a('0x12')][_0x5c7a('0x11')]);}})[_0x5c7a('0x13')](function(_0x22fe00){logger[_0x5c7a('0xf')]('CmCompany,\x20%s,\x20%s',_0x45fe7e,_0x22fe00);_0xf4f2c9(_0x22fe00);});});}
\ No newline at end of file
+var _0xbbfb=['info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbbfb,0xa1));var _0xbbbf=function(_0x8b6ca5,_0x3c3384){_0x8b6ca5=_0x8b6ca5-0x0;var _0x303384=_0xbbfb[_0x8b6ca5];return _0x303384;};'use strict';var _=require(_0xbbbf('0x0'));var util=require(_0xbbbf('0x1'));var moment=require(_0xbbbf('0x2'));var BPromise=require(_0xbbbf('0x3'));var rs=require(_0xbbbf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbbbf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbbbf('0x6'))(_0xbbbf('0x7'));var config=require(_0xbbbf('0x8'));var jayson=require(_0xbbbf('0x9'));var client=jayson[_0xbbbf('0xa')][_0xbbbf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3d153c,_0x372301,_0x5109c9){return new BPromise(function(_0x34c16f,_0x2b0b51){return client[_0xbbbf('0xc')](_0x3d153c,_0x5109c9)[_0xbbbf('0xd')](function(_0x416786){logger[_0xbbbf('0xe')](_0xbbbf('0xf'),_0x372301,_0xbbbf('0x10'));logger[_0xbbbf('0x11')](_0xbbbf('0x12'),_0x372301,'request\x20sent',JSON[_0xbbbf('0x13')](_0x416786));if(_0x416786[_0xbbbf('0x14')]){if(_0x416786[_0xbbbf('0x14')][_0xbbbf('0x15')]===0x1f4){logger[_0xbbbf('0x14')](_0xbbbf('0xf'),_0x372301,_0x416786[_0xbbbf('0x14')][_0xbbbf('0x16')]);return _0x2b0b51(_0x416786['error'][_0xbbbf('0x16')]);}logger[_0xbbbf('0x14')]('CmCompany,\x20%s,\x20%s',_0x372301,_0x416786[_0xbbbf('0x14')][_0xbbbf('0x16')]);return _0x34c16f(_0x416786[_0xbbbf('0x14')]['message']);}else{logger['info']('CmCompany,\x20%s,\x20%s',_0x372301,_0xbbbf('0x10'));_0x34c16f(_0x416786[_0xbbbf('0x17')][_0xbbbf('0x16')]);}})[_0xbbbf('0x18')](function(_0x46f647){logger[_0xbbbf('0x14')](_0xbbbf('0xf'),_0x372301,_0x46f647);_0x2b0b51(_0x46f647);});});}
\ No newline at end of file
index 94d13f8..4bddc3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7439=['connect-timeout','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','put','update','delete','exports','multer','util','path'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0x7439,0x131));var _0x9743=function(_0x501fe8,_0xf1eb49){_0x501fe8=_0x501fe8-0x0;var _0x1c3923=_0x7439[_0x501fe8];return _0x1c3923;};'use strict';var multer=require(_0x9743('0x0'));var util=require(_0x9743('0x1'));var path=require(_0x9743('0x2'));var timeout=require(_0x9743('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9743('0x4'));var interaction=require(_0x9743('0x5'));var config=require('../../config/environment');var controller=require('./cmCompany.controller');router[_0x9743('0x6')]('/',auth[_0x9743('0x7')](),controller[_0x9743('0x8')]);router[_0x9743('0x6')](_0x9743('0x9'),auth['isAuthenticated'](),controller[_0x9743('0xa')]);router[_0x9743('0x6')](_0x9743('0xb'),auth[_0x9743('0x7')](),controller[_0x9743('0xc')]);router['get'](_0x9743('0xd'),auth[_0x9743('0x7')](),controller[_0x9743('0xe')]);router[_0x9743('0xf')]('/',auth[_0x9743('0x7')](),controller[_0x9743('0x10')]);router[_0x9743('0xf')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x9743('0x11')]);router[_0x9743('0x12')](_0x9743('0xb'),auth['isAuthenticated'](),controller[_0x9743('0x13')]);router[_0x9743('0x14')](_0x9743('0xb'),auth[_0x9743('0x7')](),controller['destroy']);module[_0x9743('0x15')]=router;
\ No newline at end of file
+var _0x49b4=['fs-extra','../../components/auth/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/contacts','getContacts','post','create','addContacts','update','exports','multer','path','connect-timeout','express'];(function(_0x16213f,_0xc89b41){var _0x38f224=function(_0x134c4c){while(--_0x134c4c){_0x16213f['push'](_0x16213f['shift']());}};_0x38f224(++_0xc89b41);}(_0x49b4,0xce));var _0x449b=function(_0x49d794,_0x7ac3c7){_0x49d794=_0x49d794-0x0;var _0x2d5a1a=_0x49b4[_0x49d794];return _0x2d5a1a;};'use strict';var multer=require(_0x449b('0x0'));var util=require('util');var path=require(_0x449b('0x1'));var timeout=require(_0x449b('0x2'));var express=require(_0x449b('0x3'));var router=express['Router']();var fs_extra=require(_0x449b('0x4'));var auth=require(_0x449b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x449b('0x6'));var controller=require(_0x449b('0x7'));router[_0x449b('0x8')]('/',auth[_0x449b('0x9')](),controller[_0x449b('0xa')]);router[_0x449b('0x8')](_0x449b('0xb'),auth['isAuthenticated'](),controller[_0x449b('0xc')]);router[_0x449b('0x8')](_0x449b('0xd'),auth[_0x449b('0x9')](),controller['show']);router[_0x449b('0x8')](_0x449b('0xe'),auth['isAuthenticated'](),controller[_0x449b('0xf')]);router[_0x449b('0x10')]('/',auth['isAuthenticated'](),controller[_0x449b('0x11')]);router['post'](_0x449b('0xe'),auth[_0x449b('0x9')](),controller[_0x449b('0x12')]);router['put'](_0x449b('0xd'),auth[_0x449b('0x9')](),controller[_0x449b('0x13')]);router['delete']('/:id',auth[_0x449b('0x9')](),controller['destroy']);module[_0x449b('0x14')]=router;
\ No newline at end of file
index 2964516..f455759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x775f=['UNSIGNED','DATE','NOW','lodash','exports','STRING','TEXT','INTEGER'];(function(_0x21d716,_0x4c4a3b){var _0x39fad9=function(_0x50899b){while(--_0x50899b){_0x21d716['push'](_0x21d716['shift']());}};_0x39fad9(++_0x4c4a3b);}(_0x775f,0xc3));var _0xf775=function(_0x2bcddb,_0x3eaf37){_0x2bcddb=_0x2bcddb-0x0;var _0x12a9e8=_0x775f[_0x2bcddb];return _0x12a9e8;};'use strict';var _=require(_0xf775('0x0'));var Sequelize=require('sequelize');module[_0xf775('0x1')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xf775('0x2')]},'postalCode':{'type':Sequelize[_0xf775('0x2')]},'city':{'type':Sequelize[_0xf775('0x2')]},'country':{'type':Sequelize[_0xf775('0x2')]},'dateOfBirth':{'type':Sequelize[_0xf775('0x2')]},'description':{'type':Sequelize[_0xf775('0x3')]},'phone':{'type':Sequelize[_0xf775('0x2')]},'mobile':{'type':Sequelize[_0xf775('0x2')]},'fax':{'type':Sequelize[_0xf775('0x2')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xf775('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0xf775('0x2')]},'teams':{'type':Sequelize[_0xf775('0x2')]},'viber':{'type':Sequelize[_0xf775('0x2')]},'line':{'type':Sequelize[_0xf775('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xf775('0x2')]},'UserId':{'type':Sequelize[_0xf775('0x4')]},'AdditionalPhones':{'type':Sequelize[_0xf775('0x2')]},'priority':{'type':Sequelize[_0xf775('0x4')](0x2)[_0xf775('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xf775('0x6')],'defaultValue':Sequelize[_0xf775('0x7')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xf775('0x4')]}};
\ No newline at end of file
+var _0x9447=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','sequelize'];(function(_0x444a02,_0x4abdd1){var _0x25fc20=function(_0x1c0b4f){while(--_0x1c0b4f){_0x444a02['push'](_0x444a02['shift']());}};_0x25fc20(++_0x4abdd1);}(_0x9447,0x197));var _0x7944=function(_0x56ef5c,_0x53d2a7){_0x56ef5c=_0x56ef5c-0x0;var _0x521fd8=_0x9447[_0x56ef5c];return _0x521fd8;};'use strict';var _=require('lodash');var Sequelize=require(_0x7944('0x0'));module[_0x7944('0x1')]={'firstName':{'type':Sequelize[_0x7944('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x7944('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x7944('0x2')]},'country':{'type':Sequelize[_0x7944('0x2')]},'dateOfBirth':{'type':Sequelize[_0x7944('0x2')]},'description':{'type':Sequelize[_0x7944('0x3')]},'phone':{'type':Sequelize[_0x7944('0x2')]},'mobile':{'type':Sequelize[_0x7944('0x2')]},'fax':{'type':Sequelize[_0x7944('0x2')]},'email':{'type':Sequelize[_0x7944('0x2')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x7944('0x2')]},'twitter':{'type':Sequelize[_0x7944('0x2')]},'skype':{'type':Sequelize[_0x7944('0x2')]},'teams':{'type':Sequelize[_0x7944('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x7944('0x2')]},'wechat':{'type':Sequelize[_0x7944('0x2')]},'telegram':{'type':Sequelize[_0x7944('0x2')]},'UserId':{'type':Sequelize[_0x7944('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x7944('0x2')]},'priority':{'type':Sequelize[_0x7944('0x4')](0x2)[_0x7944('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x7944('0x6')],'defaultValue':Sequelize[_0x7944('0x7')]},'dialTimezone':{'type':Sequelize[_0x7944('0x2')]},'utcOffset':{'type':Sequelize[_0x7944('0x4')]}};
\ No newline at end of file
index 0c6060c..0e223e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x4b174a,_0x33a017){var _0x3cd7bf=function(_0x44ccd9){while(--_0x44ccd9){_0x4b174a['push'](_0x4b174a['shift']());}};_0x3cd7bf(++_0x33a017);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 1843ddb..38632e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e3f=['emit','hasOwnProperty','hook','exports','events','setMaxListeners','save','update'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x2e3f,0x16c));var _0xf2e3=function(_0x486e73,_0x1b84fc){_0x486e73=_0x486e73-0x0;var _0x56a085=_0x2e3f[_0x486e73];return _0x56a085;};'use strict';var EventEmitter=require(_0xf2e3('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xf2e3('0x1')](0x0);var events={'afterCreate':_0xf2e3('0x2'),'afterUpdate':_0xf2e3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2e994e){return function(_0x3fba5c,_0x835898,_0x517816){CmContactEvents[_0xf2e3('0x4')](_0x2e994e+':'+_0x3fba5c['id'],_0x3fba5c);CmContactEvents[_0xf2e3('0x4')](_0x2e994e,_0x3fba5c);_0x517816(null);};}for(var e in events){if(events[_0xf2e3('0x5')](e)){var event=events[e];CmContact[_0xf2e3('0x6')](e,emitEvent(event));}}module[_0xf2e3('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x4b6c=['exports','events','CmContact','setMaxListeners','save','update','remove','emit','hook'];(function(_0x5f3042,_0x9b07ac){var _0x4eeb84=function(_0x4adbea){while(--_0x4adbea){_0x5f3042['push'](_0x5f3042['shift']());}};_0x4eeb84(++_0x9b07ac);}(_0x4b6c,0xe2));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc4b6('0x0'));var CmContact=require('../../mysqldb')['db'][_0xc4b6('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xc4b6('0x2')](0x0);var events={'afterCreate':_0xc4b6('0x3'),'afterUpdate':_0xc4b6('0x4'),'afterDestroy':_0xc4b6('0x5')};function emitEvent(_0x376f5d){return function(_0x1cc0e1,_0xa4a081,_0x99c53a){CmContactEvents[_0xc4b6('0x6')](_0x376f5d+':'+_0x1cc0e1['id'],_0x1cc0e1);CmContactEvents[_0xc4b6('0x6')](_0x376f5d,_0x1cc0e1);_0x99c53a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xc4b6('0x7')](e,emitEvent(event));}}module[_0xc4b6('0x8')]=CmContactEvents;
\ No newline at end of file
index 32008b2..00791dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x794b=['onlyIfOpen','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','message','List\x20not\x20found','destroy','ContactId','VoiceQueueId','push','all','info','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','fti_cm_contacts','lastName','mobile','fax','email','FULLTEXT','utf8mb4','models','error','cmContact','afterCreate','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','findOne','isNil','timezones','utcOffset','add','minutes','then','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','priority','format','callbackUniqueid','cmContact,\x20afterCreate,\x20','ListId','catch','\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','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','always'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0x794b,0x1b1));var _0xb794=function(_0x44912a,_0x266423){_0x44912a=_0x44912a-0x0;var _0x15a566=_0x794b[_0x44912a];return _0x15a566;};'use strict';var _=require(_0xb794('0x0'));var util=require(_0xb794('0x1'));var logger=require(_0xb794('0x2'))(_0xb794('0x3'));var moment=require(_0xb794('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb794('0x5'));var config=require(_0xb794('0x6'));var shared=require('../../config/environment/shared');var attributes=require(_0xb794('0x7'));module[_0xb794('0x8')]=function(_0x515b7e,_0x2ae045){return _0x515b7e['define'](_0xb794('0x9'),attributes,{'tableName':_0xb794('0xa'),'paranoid':!![],'indexes':[{'name':_0xb794('0xb'),'fields':[_0xb794('0xb')]},{'name':_0xb794('0xc'),'fields':['firstName',_0xb794('0xd'),'phone',_0xb794('0xe'),_0xb794('0xf'),_0xb794('0x10')],'type':_0xb794('0x11')}],'timestamps':!![],'charset':_0xb794('0x12'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x2b3bf2,_0x4261b1,_0x3f5a3f){var _0xf466f=_0x515b7e[_0xb794('0x13')];var _0x4170d8=_0x2b3bf2['get']({'plain':!![]});function _0x121c0d(){return function(_0x5134ee){logger[_0xb794('0x14')](_0xb794('0x15'),_0xb794('0x16'),util[_0xb794('0x17')](_0x5134ee,{'showHidden':![],'depth':null}));};}function _0x2e55f1(_0x90c3a7,_0x21d276){var _0x4092fb=_0x21d276[_0xb794('0x18')]?_0x21d276[_0xb794('0x18')]:moment()['format'](_0xb794('0x19'));return new BPromise(function(_0x49fbfb,_0x10f77c){if(_['isNil'](_0x21d276[_0xb794('0x1a')])){_0x49fbfb({'ret':_0x4092fb});}else{_0xf466f[_0xb794('0x1b')][_0xb794('0x1c')]({'where':{'id':_0x90c3a7['id']}})['then'](function(_0x2090f0){if(!_['isNil'](_0x2090f0)){var _0x44d8eb=_0x2090f0[_0xb794('0x1a')];if(!_[_0xb794('0x1d')](_0x44d8eb)){var _0x35b0fc=shared[_0xb794('0x1e')];var _0x5b0a12=_0x35b0fc[_0x44d8eb];var _0x2aa8a1=_0x35b0fc[_0x21d276[_0xb794('0x1a')]];if(!_[_0xb794('0x1d')](_0x5b0a12)&&!_[_0xb794('0x1d')](_0x2aa8a1)){var _0x42cbfa=_0x5b0a12[_0xb794('0x1f')]-_0x2aa8a1[_0xb794('0x1f')];_0x4092fb=_0x21d276['scheduledat']?_0x21d276[_0xb794('0x18')]:moment();var _0x3d30c2=moment(_0x4092fb)[_0xb794('0x20')](_0x42cbfa,_0xb794('0x21'));_0x49fbfb({'ret':_0x3d30c2['format']('YYYY-MM-DD\x20HH:mm:ss')});}else _0x49fbfb({'ret':_0x4092fb});}else _0x49fbfb({'ret':_0x4092fb});}else{_0x49fbfb({'ret':_0x4092fb});}});}});return 0xa;}var _0x1a8b2d=function(_0x5dde2f){return new BPromise(function(_0x4fba1f,_0x19b656){_0x2e55f1(_0x5dde2f,_0x4170d8)[_0xb794('0x22')](function(_0xadf808){_0x4170d8[_0xb794('0x18')]=_0xadf808[_0xb794('0x23')];_0xf466f[_0xb794('0x24')][_0xb794('0x1c')]({'where':{'phone':_0x4170d8[_0xb794('0xb')],'VoiceQueueId':_0x5dde2f['id']}})['then'](function(_0x36ef60){if(!_[_0xb794('0x1d')](_0x36ef60)){throw new Error(_0xb794('0x25')+_0x4170d8['phone']+_0xb794('0x26')+_0x5dde2f['id']);}return _0xf466f[_0xb794('0x24')][_0xb794('0x27')]({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8['ListId'],'priority':_0x4170d8[_0xb794('0x28')]?_0x4170d8[_0xb794('0x28')]:0x2,'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()[_0xb794('0x29')](_0xb794('0x19')),'callback':_0x4170d8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4170d8[_0xb794('0x2a')]?_0x4170d8['callbackUniqueid']:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()['format'](_0xb794('0x19')):undefined,'VoiceQueueId':_0x5dde2f['id']});})['catch'](function(_0x31a16c){_0x19b656(_0x31a16c);});});});};var _0x4bd51f=function(_0x1e109d){return new BPromise(function(_0x765de1,_0x42cb07){_0x2e55f1(_0x1e109d,_0x4170d8)[_0xb794('0x22')](function(_0x4b2118){_0x4170d8['scheduledat']=_0x4b2118[_0xb794('0x23')];_0xf466f[_0xb794('0x24')][_0xb794('0x1c')]({'where':{'phone':_0x4170d8[_0xb794('0xb')],'VoiceQueueId':_0x1e109d['id']}})[_0xb794('0x22')](function(_0x188d1f){if(!_['isNil'](_0x188d1f)){throw new Error(_0xb794('0x25')+_0x4170d8['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x1e109d['id']);}return _0xf466f['CmHopperFinal'][_0xb794('0x1c')]({'where':{'calleridnum':_0x4170d8[_0xb794('0xb')],'VoiceQueueId':_0x1e109d['id']}});})['then'](function(_0xcfd675){if(!_[_0xb794('0x1d')](_0xcfd675)){throw new Error(_0xb794('0x2b')+_0x4170d8[_0xb794('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x1e109d['id']);}return _0xf466f[_0xb794('0x24')]['create']({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8[_0xb794('0x2c')],'priority':_0x4170d8['priority']?_0x4170d8[_0xb794('0x28')]:0x2,'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()[_0xb794('0x29')](_0xb794('0x19')),'callback':_0x4170d8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4170d8[_0xb794('0x2a')]?_0x4170d8[_0xb794('0x2a')]:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()[_0xb794('0x29')](_0xb794('0x19')):undefined,'VoiceQueueId':_0x1e109d['id']});})[_0xb794('0x2d')](function(_0x22ac85){_0x42cb07(_0x22ac85);});});});};function _0x4f25d4(){return function(_0x56fa29){logger['error'](_0xb794('0x15'),_0xb794('0x16'),util[_0xb794('0x17')](_0x56fa29,{'showHidden':![],'depth':null}));};}function _0x1d3c60(_0x5670e4,_0x296a13){var _0x1d9376=_0x296a13[_0xb794('0x18')]?_0x296a13[_0xb794('0x18')]:moment()[_0xb794('0x29')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x13ff73,_0xaf0c2f){if(_['isNil'](_0x296a13[_0xb794('0x1a')])){_0x13ff73({'ret':_0x1d9376});}else{_0xf466f['Campaign'][_0xb794('0x1c')]({'where':{'id':_0x5670e4['id']}})[_0xb794('0x22')](function(_0x574e18){if(!_[_0xb794('0x1d')](_0x574e18)){var _0x1e3c9d=_0x574e18[_0xb794('0x1a')];if(!_['isNil'](_0x1e3c9d)){var _0x313ce=shared[_0xb794('0x1e')];var _0x29b79d=_0x313ce[_0x1e3c9d];var _0xe8fc8b=_0x313ce[_0x296a13[_0xb794('0x1a')]];if(!_['isNil'](_0x29b79d)&&!_[_0xb794('0x1d')](_0xe8fc8b)){var _0x5f77ca=_0x29b79d[_0xb794('0x1f')]-_0xe8fc8b[_0xb794('0x1f')];_0x1d9376=_0x296a13[_0xb794('0x18')]?_0x296a13[_0xb794('0x18')]:moment();var _0x50d872=moment(_0x1d9376)['add'](_0x5f77ca,'minutes');_0x13ff73({'ret':_0x50d872['format'](_0xb794('0x19'))});}else _0x13ff73({'ret':_0x1d9376});}else _0x13ff73({'ret':_0x1d9376});}else{_0x13ff73({'ret':_0x1d9376});}});}});return 0xa;}var _0x214e8f=function(_0xb1a037){return new BPromise(function(_0x5d0ccf,_0x4a3e97){_0x1d3c60(_0xb1a037,_0x4170d8)['then'](function(_0x1d3896){_0x4170d8[_0xb794('0x18')]=_0x1d3896[_0xb794('0x23')];_0xf466f[_0xb794('0x24')]['findOne']({'where':{'phone':_0x4170d8[_0xb794('0xb')],'CampaignId':_0xb1a037['id']}})[_0xb794('0x22')](function(_0x5bd8fd){if(!_['isNil'](_0x5bd8fd)){throw new Error(_0xb794('0x25')+_0x4170d8[_0xb794('0xb')]+_0xb794('0x2e')+_0xb1a037['id']);}return _0xf466f[_0xb794('0x24')][_0xb794('0x27')]({'phone':_0x4170d8['phone'],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8['ListId'],'priority':_0x4170d8[_0xb794('0x28')]?_0x4170d8[_0xb794('0x28')]:0x2,'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()[_0xb794('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4170d8[_0xb794('0x2a')]?!![]:![],'callbackuniqueid':_0x4170d8[_0xb794('0x2a')]?_0x4170d8[_0xb794('0x2a')]:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()[_0xb794('0x29')](_0xb794('0x19')):undefined,'CampaignId':_0xb1a037['id']});})[_0xb794('0x2d')](function(_0x141889){_0x4a3e97(_0x141889);});});});};var _0x419a16=function(_0x4d4007){return new BPromise(function(_0x22a9c3,_0x21a570){_0x1d3c60(_0x4d4007,_0x4170d8)[_0xb794('0x22')](function(_0x1f30f2){_0x4170d8[_0xb794('0x18')]=_0x1f30f2[_0xb794('0x23')];_0xf466f['CmHopper'][_0xb794('0x1c')]({'where':{'phone':_0x4170d8[_0xb794('0xb')],'CampaignId':_0x4d4007['id']}})[_0xb794('0x22')](function(_0x52af52){if(!_['isNil'](_0x52af52)){throw new Error(_0xb794('0x25')+_0x4170d8[_0xb794('0xb')]+_0xb794('0x2f')+_0x4d4007['id']);}return _0xf466f[_0xb794('0x30')]['findOne']({'where':{'calleridnum':_0x4170d8[_0xb794('0xb')],'CampaignId':_0x4d4007['id']}});})[_0xb794('0x22')](function(_0x29e244){if(!_[_0xb794('0x1d')](_0x29e244)){throw new Error(_0xb794('0x2b')+_0x4170d8[_0xb794('0xb')]+_0xb794('0x31')+_0x4d4007['id']);}return _0xf466f[_0xb794('0x24')][_0xb794('0x27')]({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8[_0xb794('0x2c')],'priority':_0x4170d8[_0xb794('0x28')]?_0x4170d8['priority']:0x2,'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()[_0xb794('0x29')](_0xb794('0x19')),'callback':_0x4170d8[_0xb794('0x2a')]?!![]:![],'callbackuniqueid':_0x4170d8['callbackUniqueid']?_0x4170d8[_0xb794('0x2a')]:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()[_0xb794('0x29')](_0xb794('0x19')):undefined,'CampaignId':_0x4d4007['id']});})[_0xb794('0x2d')](function(_0x10a77e){_0x21a570(_0x10a77e);});});});};if(_0x4170d8[_0xb794('0x2c')]){_0xf466f[_0xb794('0x1b')][_0xb794('0x32')]({'where':{'type':_0xb794('0x33')},'attributes':['id',_0xb794('0x34'),_0xb794('0x1a')],'include':[{'model':_0xf466f[_0xb794('0x35')],'as':_0xb794('0x36'),'where':{'id':_0x4170d8[_0xb794('0x2c')]}}]})['then'](function(_0x30f1c7){if(_0x30f1c7){var _0x24ec2b=[];for(var _0x18ed5e=0x0,_0x3facaa;_0x18ed5e<_0x30f1c7['length'];_0x18ed5e+=0x1){_0x3facaa=_0x30f1c7[_0x18ed5e][_0xb794('0x37')]({'plain':!![]});switch(_0x3facaa['dialCheckDuplicateType']){case _0xb794('0x38'):_0x4bd51f(_0x3facaa)[_0xb794('0x2d')](_0x121c0d());break;case _0xb794('0x39'):_0x1a8b2d(_0x3facaa)['catch'](_0x121c0d());break;default:_0x1d3c60(_0x3facaa,_0x4170d8)['then'](function(_0x6f6050){_0x4170d8[_0xb794('0x18')]=_0x6f6050['ret'];_0xf466f[_0xb794('0x24')][_0xb794('0x27')]({'phone':_0x4170d8['phone'],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8[_0xb794('0x2c')],'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()[_0xb794('0x29')](_0xb794('0x19')),'priority':_0x4170d8[_0xb794('0x28')]?_0x4170d8['priority']:0x2,'callback':_0x4170d8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4170d8[_0xb794('0x2a')]?_0x4170d8[_0xb794('0x2a')]:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()[_0xb794('0x29')](_0xb794('0x19')):undefined,'VoiceQueueId':_0x3facaa['id']})['catch'](_0x121c0d());});}}}})['then'](function(){return _0xf466f[_0xb794('0x1b')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0xf466f[_0xb794('0x35')],'as':_0xb794('0x3a'),'where':{'id':_0x4170d8[_0xb794('0x2c')]}}]})[_0xb794('0x22')](function(_0x340157){if(_0x340157){var _0xb27786=[];for(var _0x1b63e3=0x0,_0x1b104d;_0x1b63e3<_0x340157[_0xb794('0x3b')];_0x1b63e3+=0x1){_0x1b104d=_0x340157[_0x1b63e3][_0xb794('0x37')]({'plain':!![]});_0xf466f[_0xb794('0x3c')][_0xb794('0x27')]({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8[_0xb794('0x2c')],'VoiceQueueId':_0x1b104d['id']})[_0xb794('0x2d')](function(_0x3224cb){logger[_0xb794('0x14')](_0xb794('0x3d'),'afterCreate',_0x3224cb[_0xb794('0x3e')]);});}}});})[_0xb794('0x22')](function(){return _0xf466f['Campaign'][_0xb794('0x32')]({'attributes':['id',_0xb794('0x34'),_0xb794('0x1a')],'include':[{'model':_0xf466f[_0xb794('0x35')],'as':_0xb794('0x36'),'where':{'id':_0x4170d8['ListId']}}]})['then'](function(_0x457c13){if(_0x457c13){var _0x59ad34=[];for(var _0xea6bcb=0x0,_0x1c8003;_0xea6bcb<_0x457c13[_0xb794('0x3b')];_0xea6bcb+=0x1){_0x1c8003=_0x457c13[_0xea6bcb]['get']({'plain':!![]});switch(_0x1c8003[_0xb794('0x34')]){case _0xb794('0x38'):_0x419a16(_0x1c8003)[_0xb794('0x2d')](_0x4f25d4());break;case _0xb794('0x39'):_0x214e8f(_0x1c8003)['catch'](_0x4f25d4());break;default:_0xf466f[_0xb794('0x24')][_0xb794('0x27')]({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8[_0xb794('0x2c')],'scheduledat':_0x4170d8[_0xb794('0x18')]?_0x4170d8[_0xb794('0x18')]:moment()['format'](_0xb794('0x19')),'priority':_0x4170d8[_0xb794('0x28')]?_0x4170d8[_0xb794('0x28')]:0x2,'callback':_0x4170d8[_0xb794('0x2a')]?!![]:![],'callbackuniqueid':_0x4170d8[_0xb794('0x2a')]?_0x4170d8['callbackUniqueid']:undefined,'callbackat':_0x4170d8[_0xb794('0x2a')]?moment()['format'](_0xb794('0x19')):undefined,'CampaignId':_0x1c8003['id']})[_0xb794('0x2d')](_0x4f25d4());}}}});})[_0xb794('0x22')](function(){return _0xf466f['Campaign'][_0xb794('0x32')]({'attributes':['id'],'include':[{'model':_0xf466f[_0xb794('0x35')],'as':_0xb794('0x3a'),'where':{'id':_0x4170d8['ListId']}}]})[_0xb794('0x22')](function(_0x4a6b41){if(_0x4a6b41){var _0x346e56=[];for(var _0x300899=0x0,_0x36717a;_0x300899<_0x4a6b41[_0xb794('0x3b')];_0x300899+=0x1){_0x36717a=_0x4a6b41[_0x300899][_0xb794('0x37')]({'plain':!![]});_0xf466f[_0xb794('0x3c')][_0xb794('0x27')]({'phone':_0x4170d8[_0xb794('0xb')],'ContactId':_0x4170d8['id'],'ListId':_0x4170d8['ListId'],'CampaignId':_0x36717a['id']})[_0xb794('0x2d')](function(_0x845bad){logger[_0xb794('0x14')](_0xb794('0x3d'),_0xb794('0x16'),_0x845bad[_0xb794('0x3e')]);});}}});})['then'](function(){_0x3f5a3f();})[_0xb794('0x2d')](function(_0x40d49d){logger['error'](_0xb794('0x3d'),_0xb794('0x16'),_0x40d49d[_0xb794('0x3e')]);_0x3f5a3f(_0x40d49d);});}else{_0x3f5a3f(new Error(_0xb794('0x3f')));}},'afterDestroy':function(_0x323b44,_0x5b328b,_0x37d9cc){var _0x48809e=_0x515b7e[_0xb794('0x13')];var _0x574c1b=_0x323b44[_0xb794('0x37')]({'plain':!![]});return _0x48809e['CmHopper'][_0xb794('0x32')]({'raw':!![],'where':{'ListId':_0x574c1b[_0xb794('0x2c')],'ContactId':_0x574c1b['id']}})[_0xb794('0x22')](function(_0x1782e3){if(!_['isEmpty'](_0x1782e3)){var _0x28740d=[];for(var _0x538dfb=0x0;_0x538dfb<_0x1782e3[_0xb794('0x3b')];_0x538dfb+=0x1){var _0x3d4a92=_0x48809e[_0xb794('0x24')][_0xb794('0x40')]({'where':{'ListId':_0x1782e3[_0x538dfb][_0xb794('0x2c')],'ContactId':_0x1782e3[_0x538dfb][_0xb794('0x41')],'VoiceQueueId':_0x1782e3[_0x538dfb][_0xb794('0x42')],'CampaignId':_0x1782e3[_0x538dfb]['CampaignId']}});_0x28740d[_0xb794('0x43')](_0x3d4a92);}return BPromise[_0xb794('0x44')](_0x28740d);}})[_0xb794('0x22')](function(_0x54c9b6){logger[_0xb794('0x45')]('[CmContact][afterDestroy][Succesfull]',util[_0xb794('0x17')](_0x54c9b6,{'showHidden':![],'depth':null}));_0x37d9cc();})[_0xb794('0x2d')](function(_0x51471e){logger[_0xb794('0x14')]('[CmContact][afterDestroy][Error]',util[_0xb794('0x17')](_0x51471e,{'showHidden':![],'depth':null}));_0x37d9cc(_0x51471e);});}}});};
\ No newline at end of file
+var _0xbda0=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','error','cmContact','Campaign','\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','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','always','onlyIfOpen','length','CmHopperBlack','cmContact,\x20%s,\x20%s','BlackLists','message','List\x20not\x20found','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','cm_contacts','fti_cm_contacts','firstName','lastName','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','findOne','then','dialTimezone','timezones','utcOffset','add','minutes','ret','phone','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid','cmContact,\x20afterCreate,\x20'];(function(_0x21263c,_0x21d491){var _0x1b33f3=function(_0x116251){while(--_0x116251){_0x21263c['push'](_0x21263c['shift']());}};_0x1b33f3(++_0x21d491);}(_0xbda0,0x1c9));var _0x0bda=function(_0x88d23a,_0x985cf1){_0x88d23a=_0x88d23a-0x0;var _0xf511b1=_0xbda0[_0x88d23a];return _0xf511b1;};'use strict';var _=require('lodash');var util=require(_0x0bda('0x0'));var logger=require(_0x0bda('0x1'))(_0x0bda('0x2'));var moment=require(_0x0bda('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0bda('0x4'));var rimraf=require(_0x0bda('0x5'));var config=require(_0x0bda('0x6'));var shared=require('../../config/environment/shared');var attributes=require('./cmContact.attributes');module[_0x0bda('0x7')]=function(_0x1fa71c,_0x57af74){return _0x1fa71c[_0x0bda('0x8')]('CmContact',attributes,{'tableName':_0x0bda('0x9'),'paranoid':!![],'indexes':[{'name':'phone','fields':['phone']},{'name':_0x0bda('0xa'),'fields':[_0x0bda('0xb'),_0x0bda('0xc'),'phone','mobile','fax','email'],'type':_0x0bda('0xd')}],'timestamps':!![],'charset':_0x0bda('0xe'),'collate':_0x0bda('0xf'),'hooks':{'afterCreate':function(_0x31818f,_0x5cfdb8,_0x217507){var _0x9ee87b=_0x1fa71c[_0x0bda('0x10')];var _0x53147a=_0x31818f['get']({'plain':!![]});function _0x2f54ef(){return function(_0x4479a4){logger['error']('cmContact',_0x0bda('0x11'),util[_0x0bda('0x12')](_0x4479a4,{'showHidden':![],'depth':null}));};}function _0x4ae55a(_0x8f015b,_0xf87e7c){var _0x41ecf2=_0xf87e7c[_0x0bda('0x13')]?_0xf87e7c[_0x0bda('0x13')]:moment()[_0x0bda('0x14')](_0x0bda('0x15'));return new BPromise(function(_0x35e93a,_0x4e8a1f){if(_[_0x0bda('0x16')](_0xf87e7c['dialTimezone'])){_0x35e93a({'ret':_0x41ecf2});}else{_0x9ee87b['VoiceQueue'][_0x0bda('0x17')]({'where':{'id':_0x8f015b['id']}})[_0x0bda('0x18')](function(_0x3c857d){if(!_[_0x0bda('0x16')](_0x3c857d)){var _0x2a2c5e=_0x3c857d[_0x0bda('0x19')];if(!_[_0x0bda('0x16')](_0x2a2c5e)){var _0x44795c=shared[_0x0bda('0x1a')];var _0x1679d0=_0x44795c[_0x2a2c5e];var _0x29ad7b=_0x44795c[_0xf87e7c['dialTimezone']];if(!_[_0x0bda('0x16')](_0x1679d0)&&!_[_0x0bda('0x16')](_0x29ad7b)){var _0x15c028=_0x1679d0[_0x0bda('0x1b')]-_0x29ad7b[_0x0bda('0x1b')];_0x41ecf2=_0xf87e7c[_0x0bda('0x13')]?_0xf87e7c['scheduledat']:moment();var _0x557a16=moment(_0x41ecf2)[_0x0bda('0x1c')](_0x15c028,_0x0bda('0x1d'));_0x35e93a({'ret':_0x557a16['format'](_0x0bda('0x15'))});}else _0x35e93a({'ret':_0x41ecf2});}else _0x35e93a({'ret':_0x41ecf2});}else{_0x35e93a({'ret':_0x41ecf2});}});}});return 0xa;}var _0x17357c=function(_0x365a34){return new BPromise(function(_0x200aab,_0x58604a){_0x4ae55a(_0x365a34,_0x53147a)['then'](function(_0xb6b6ac){_0x53147a[_0x0bda('0x13')]=_0xb6b6ac[_0x0bda('0x1e')];_0x9ee87b['CmHopper'][_0x0bda('0x17')]({'where':{'phone':_0x53147a[_0x0bda('0x1f')],'VoiceQueueId':_0x365a34['id']}})[_0x0bda('0x18')](function(_0x564438){if(!_[_0x0bda('0x16')](_0x564438)){throw new Error(_0x0bda('0x20')+_0x53147a[_0x0bda('0x1f')]+_0x0bda('0x21')+_0x365a34['id']);}return _0x9ee87b[_0x0bda('0x22')][_0x0bda('0x23')]({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'priority':_0x53147a['priority']?_0x53147a[_0x0bda('0x25')]:0x2,'scheduledat':_0x53147a[_0x0bda('0x13')]?_0x53147a[_0x0bda('0x13')]:moment()[_0x0bda('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x53147a[_0x0bda('0x26')]?!![]:![],'callbackuniqueid':_0x53147a[_0x0bda('0x26')]?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a[_0x0bda('0x26')]?moment()[_0x0bda('0x14')](_0x0bda('0x15')):undefined,'VoiceQueueId':_0x365a34['id']});})['catch'](function(_0x1fe768){_0x58604a(_0x1fe768);});});});};var _0x159e5c=function(_0x27898b){return new BPromise(function(_0x3cd019,_0xc8046e){_0x4ae55a(_0x27898b,_0x53147a)[_0x0bda('0x18')](function(_0x8fc45a){_0x53147a[_0x0bda('0x13')]=_0x8fc45a[_0x0bda('0x1e')];_0x9ee87b[_0x0bda('0x22')]['findOne']({'where':{'phone':_0x53147a[_0x0bda('0x1f')],'VoiceQueueId':_0x27898b['id']}})['then'](function(_0x136022){if(!_['isNil'](_0x136022)){throw new Error(_0x0bda('0x20')+_0x53147a[_0x0bda('0x1f')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x27898b['id']);}return _0x9ee87b['CmHopperFinal'][_0x0bda('0x17')]({'where':{'calleridnum':_0x53147a[_0x0bda('0x1f')],'VoiceQueueId':_0x27898b['id']}});})[_0x0bda('0x18')](function(_0x1bb452){if(!_[_0x0bda('0x16')](_0x1bb452)){throw new Error(_0x0bda('0x27')+_0x53147a[_0x0bda('0x1f')]+_0x0bda('0x28')+_0x27898b['id']);}return _0x9ee87b[_0x0bda('0x22')][_0x0bda('0x23')]({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a['ListId'],'priority':_0x53147a[_0x0bda('0x25')]?_0x53147a[_0x0bda('0x25')]:0x2,'scheduledat':_0x53147a['scheduledat']?_0x53147a[_0x0bda('0x13')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x53147a[_0x0bda('0x26')]?!![]:![],'callbackuniqueid':_0x53147a[_0x0bda('0x26')]?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a[_0x0bda('0x26')]?moment()[_0x0bda('0x14')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x27898b['id']});})[_0x0bda('0x29')](function(_0x2489da){_0xc8046e(_0x2489da);});});});};function _0x85d6ef(){return function(_0x37b02c){logger[_0x0bda('0x2a')](_0x0bda('0x2b'),_0x0bda('0x11'),util['inspect'](_0x37b02c,{'showHidden':![],'depth':null}));};}function _0x13c986(_0xece4f,_0x1a02e8){var _0x385fb6=_0x1a02e8['scheduledat']?_0x1a02e8[_0x0bda('0x13')]:moment()[_0x0bda('0x14')](_0x0bda('0x15'));return new BPromise(function(_0x131dff,_0x11d0c5){if(_['isNil'](_0x1a02e8[_0x0bda('0x19')])){_0x131dff({'ret':_0x385fb6});}else{_0x9ee87b[_0x0bda('0x2c')][_0x0bda('0x17')]({'where':{'id':_0xece4f['id']}})[_0x0bda('0x18')](function(_0x3901ed){if(!_[_0x0bda('0x16')](_0x3901ed)){var _0x8574f9=_0x3901ed[_0x0bda('0x19')];if(!_[_0x0bda('0x16')](_0x8574f9)){var _0x1f2b21=shared[_0x0bda('0x1a')];var _0x55d28a=_0x1f2b21[_0x8574f9];var _0x2e1e9e=_0x1f2b21[_0x1a02e8['dialTimezone']];if(!_[_0x0bda('0x16')](_0x55d28a)&&!_[_0x0bda('0x16')](_0x2e1e9e)){var _0x575535=_0x55d28a[_0x0bda('0x1b')]-_0x2e1e9e[_0x0bda('0x1b')];_0x385fb6=_0x1a02e8[_0x0bda('0x13')]?_0x1a02e8[_0x0bda('0x13')]:moment();var _0x21a89c=moment(_0x385fb6)[_0x0bda('0x1c')](_0x575535,_0x0bda('0x1d'));_0x131dff({'ret':_0x21a89c[_0x0bda('0x14')](_0x0bda('0x15'))});}else _0x131dff({'ret':_0x385fb6});}else _0x131dff({'ret':_0x385fb6});}else{_0x131dff({'ret':_0x385fb6});}});}});return 0xa;}var _0x5e3f21=function(_0x56e391){return new BPromise(function(_0x2e41b0,_0x3a8206){_0x13c986(_0x56e391,_0x53147a)['then'](function(_0x21f99a){_0x53147a[_0x0bda('0x13')]=_0x21f99a[_0x0bda('0x1e')];_0x9ee87b[_0x0bda('0x22')][_0x0bda('0x17')]({'where':{'phone':_0x53147a[_0x0bda('0x1f')],'CampaignId':_0x56e391['id']}})[_0x0bda('0x18')](function(_0x5c8b1a){if(!_[_0x0bda('0x16')](_0x5c8b1a)){throw new Error(_0x0bda('0x20')+_0x53147a['phone']+_0x0bda('0x2d')+_0x56e391['id']);}return _0x9ee87b[_0x0bda('0x22')]['create']({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'priority':_0x53147a[_0x0bda('0x25')]?_0x53147a['priority']:0x2,'scheduledat':_0x53147a[_0x0bda('0x13')]?_0x53147a[_0x0bda('0x13')]:moment()[_0x0bda('0x14')](_0x0bda('0x15')),'callback':_0x53147a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x53147a[_0x0bda('0x26')]?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a['callbackUniqueid']?moment()[_0x0bda('0x14')](_0x0bda('0x15')):undefined,'CampaignId':_0x56e391['id']});})[_0x0bda('0x29')](function(_0x4f58a8){_0x3a8206(_0x4f58a8);});});});};var _0x83e0c3=function(_0x59f4bc){return new BPromise(function(_0x360f43,_0x1e4e93){_0x13c986(_0x59f4bc,_0x53147a)[_0x0bda('0x18')](function(_0x5c8532){_0x53147a['scheduledat']=_0x5c8532[_0x0bda('0x1e')];_0x9ee87b[_0x0bda('0x22')][_0x0bda('0x17')]({'where':{'phone':_0x53147a[_0x0bda('0x1f')],'CampaignId':_0x59f4bc['id']}})[_0x0bda('0x18')](function(_0xfe7ae5){if(!_[_0x0bda('0x16')](_0xfe7ae5)){throw new Error(_0x0bda('0x20')+_0x53147a[_0x0bda('0x1f')]+_0x0bda('0x2e')+_0x59f4bc['id']);}return _0x9ee87b[_0x0bda('0x2f')][_0x0bda('0x17')]({'where':{'calleridnum':_0x53147a[_0x0bda('0x1f')],'CampaignId':_0x59f4bc['id']}});})[_0x0bda('0x18')](function(_0xa2f98f){if(!_[_0x0bda('0x16')](_0xa2f98f)){throw new Error(_0x0bda('0x27')+_0x53147a[_0x0bda('0x1f')]+_0x0bda('0x30')+_0x59f4bc['id']);}return _0x9ee87b[_0x0bda('0x22')]['create']({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'priority':_0x53147a['priority']?_0x53147a['priority']:0x2,'scheduledat':_0x53147a[_0x0bda('0x13')]?_0x53147a['scheduledat']:moment()[_0x0bda('0x14')](_0x0bda('0x15')),'callback':_0x53147a[_0x0bda('0x26')]?!![]:![],'callbackuniqueid':_0x53147a[_0x0bda('0x26')]?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a[_0x0bda('0x26')]?moment()[_0x0bda('0x14')](_0x0bda('0x15')):undefined,'CampaignId':_0x59f4bc['id']});})[_0x0bda('0x29')](function(_0x512b2d){_0x1e4e93(_0x512b2d);});});});};if(_0x53147a['ListId']){_0x9ee87b[_0x0bda('0x31')][_0x0bda('0x32')]({'where':{'type':_0x0bda('0x33')},'attributes':['id',_0x0bda('0x34'),_0x0bda('0x19')],'include':[{'model':_0x9ee87b[_0x0bda('0x35')],'as':_0x0bda('0x36'),'where':{'id':_0x53147a[_0x0bda('0x24')]}}]})['then'](function(_0x5a9e4f){if(_0x5a9e4f){var _0x55f3df=[];for(var _0x34420a=0x0,_0x5923f4;_0x34420a<_0x5a9e4f['length'];_0x34420a+=0x1){_0x5923f4=_0x5a9e4f[_0x34420a][_0x0bda('0x37')]({'plain':!![]});switch(_0x5923f4['dialCheckDuplicateType']){case _0x0bda('0x38'):_0x159e5c(_0x5923f4)['catch'](_0x2f54ef());break;case _0x0bda('0x39'):_0x17357c(_0x5923f4)['catch'](_0x2f54ef());break;default:_0x13c986(_0x5923f4,_0x53147a)[_0x0bda('0x18')](function(_0x57241b){_0x53147a[_0x0bda('0x13')]=_0x57241b['ret'];_0x9ee87b[_0x0bda('0x22')]['create']({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'scheduledat':_0x53147a[_0x0bda('0x13')]?_0x53147a[_0x0bda('0x13')]:moment()[_0x0bda('0x14')](_0x0bda('0x15')),'priority':_0x53147a[_0x0bda('0x25')]?_0x53147a[_0x0bda('0x25')]:0x2,'callback':_0x53147a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x53147a[_0x0bda('0x26')]?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a[_0x0bda('0x26')]?moment()[_0x0bda('0x14')](_0x0bda('0x15')):undefined,'VoiceQueueId':_0x5923f4['id']})[_0x0bda('0x29')](_0x2f54ef());});}}}})[_0x0bda('0x18')](function(){return _0x9ee87b['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x9ee87b['CmList'],'as':'BlackLists','where':{'id':_0x53147a[_0x0bda('0x24')]}}]})[_0x0bda('0x18')](function(_0x392eaa){if(_0x392eaa){var _0x1d50ea=[];for(var _0x49070b=0x0,_0x116035;_0x49070b<_0x392eaa[_0x0bda('0x3a')];_0x49070b+=0x1){_0x116035=_0x392eaa[_0x49070b][_0x0bda('0x37')]({'plain':!![]});_0x9ee87b[_0x0bda('0x3b')][_0x0bda('0x23')]({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'VoiceQueueId':_0x116035['id']})[_0x0bda('0x29')](function(_0x3724a1){logger[_0x0bda('0x2a')](_0x0bda('0x3c'),_0x0bda('0x11'),_0x3724a1['message']);});}}});})[_0x0bda('0x18')](function(){return _0x9ee87b['Campaign'][_0x0bda('0x32')]({'attributes':['id',_0x0bda('0x34'),_0x0bda('0x19')],'include':[{'model':_0x9ee87b[_0x0bda('0x35')],'as':_0x0bda('0x36'),'where':{'id':_0x53147a[_0x0bda('0x24')]}}]})[_0x0bda('0x18')](function(_0x1fae53){if(_0x1fae53){var _0x2d56aa=[];for(var _0x5a7c3d=0x0,_0x4d47d0;_0x5a7c3d<_0x1fae53[_0x0bda('0x3a')];_0x5a7c3d+=0x1){_0x4d47d0=_0x1fae53[_0x5a7c3d][_0x0bda('0x37')]({'plain':!![]});switch(_0x4d47d0['dialCheckDuplicateType']){case _0x0bda('0x38'):_0x83e0c3(_0x4d47d0)[_0x0bda('0x29')](_0x85d6ef());break;case _0x0bda('0x39'):_0x5e3f21(_0x4d47d0)[_0x0bda('0x29')](_0x85d6ef());break;default:_0x9ee87b[_0x0bda('0x22')][_0x0bda('0x23')]({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'scheduledat':_0x53147a[_0x0bda('0x13')]?_0x53147a['scheduledat']:moment()[_0x0bda('0x14')](_0x0bda('0x15')),'priority':_0x53147a[_0x0bda('0x25')]?_0x53147a[_0x0bda('0x25')]:0x2,'callback':_0x53147a[_0x0bda('0x26')]?!![]:![],'callbackuniqueid':_0x53147a['callbackUniqueid']?_0x53147a[_0x0bda('0x26')]:undefined,'callbackat':_0x53147a[_0x0bda('0x26')]?moment()[_0x0bda('0x14')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x4d47d0['id']})[_0x0bda('0x29')](_0x85d6ef());}}}});})[_0x0bda('0x18')](function(){return _0x9ee87b[_0x0bda('0x2c')][_0x0bda('0x32')]({'attributes':['id'],'include':[{'model':_0x9ee87b[_0x0bda('0x35')],'as':_0x0bda('0x3d'),'where':{'id':_0x53147a['ListId']}}]})['then'](function(_0x5d667a){if(_0x5d667a){var _0x435138=[];for(var _0x3918d8=0x0,_0x2f7889;_0x3918d8<_0x5d667a[_0x0bda('0x3a')];_0x3918d8+=0x1){_0x2f7889=_0x5d667a[_0x3918d8]['get']({'plain':!![]});_0x9ee87b[_0x0bda('0x3b')][_0x0bda('0x23')]({'phone':_0x53147a[_0x0bda('0x1f')],'ContactId':_0x53147a['id'],'ListId':_0x53147a[_0x0bda('0x24')],'CampaignId':_0x2f7889['id']})[_0x0bda('0x29')](function(_0x43b716){logger[_0x0bda('0x2a')](_0x0bda('0x3c'),_0x0bda('0x11'),_0x43b716[_0x0bda('0x3e')]);});}}});})[_0x0bda('0x18')](function(){_0x217507();})[_0x0bda('0x29')](function(_0x10652b){logger['error'](_0x0bda('0x3c'),_0x0bda('0x11'),_0x10652b[_0x0bda('0x3e')]);_0x217507(_0x10652b);});}else{_0x217507(new Error(_0x0bda('0x3f')));}},'afterDestroy':function(_0x2b3400,_0x279bc6,_0x2929a2){var _0x542b27=_0x1fa71c[_0x0bda('0x10')];var _0xb21535=_0x2b3400['get']({'plain':!![]});return _0x542b27[_0x0bda('0x22')][_0x0bda('0x32')]({'raw':!![],'where':{'ListId':_0xb21535[_0x0bda('0x24')],'ContactId':_0xb21535['id']}})['then'](function(_0x5a2790){if(!_['isEmpty'](_0x5a2790)){var _0x401ec8=[];for(var _0x2bb1cb=0x0;_0x2bb1cb<_0x5a2790['length'];_0x2bb1cb+=0x1){var _0x545310=_0x542b27[_0x0bda('0x22')]['destroy']({'where':{'ListId':_0x5a2790[_0x2bb1cb]['ListId'],'ContactId':_0x5a2790[_0x2bb1cb][_0x0bda('0x40')],'VoiceQueueId':_0x5a2790[_0x2bb1cb][_0x0bda('0x41')],'CampaignId':_0x5a2790[_0x2bb1cb][_0x0bda('0x42')]}});_0x401ec8[_0x0bda('0x43')](_0x545310);}return BPromise[_0x0bda('0x44')](_0x401ec8);}})[_0x0bda('0x18')](function(_0x42b612){logger['info'](_0x0bda('0x45'),util[_0x0bda('0x12')](_0x42b612,{'showHidden':![],'depth':null}));_0x2929a2();})[_0x0bda('0x29')](function(_0x1a26bb){logger[_0x0bda('0x2a')](_0x0bda('0x46'),util['inspect'](_0x1a26bb,{'showHidden':![],'depth':null}));_0x2929a2(_0x1a26bb);});}}});};
\ No newline at end of file
index d2c12c6..0302b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x3dfde3,_0x5c5a31){var _0x2e358c=function(_0x33e385){while(--_0x33e385){_0x3dfde3['push'](_0x3dfde3['shift']());}};_0x2e358c(++_0x5c5a31);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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 squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
+var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x39dd52,_0x366476){var _0x43b377=function(_0x4c39ae){while(--_0x4c39ae){_0x39dd52['push'](_0x39dd52['shift']());}};_0x43b377(++_0x366476);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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 squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
index b0a7937..140a4ac 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 3f57ec9..3073df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x5d683a,_0x51efa6){var _0x29bf55=function(_0x1292a5){while(--_0x1292a5){_0x5d683a['push'](_0x5d683a['shift']());}};_0x29bf55(++_0x51efa6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x240738,_0x177911){var _0x3d6406=function(_0x5c20cd){while(--_0x5c20cd){_0x240738['push'](_0x240738['shift']());}};_0x3d6406(++_0x177911);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index 117ea7d..37d67b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd5=['INTEGER','STRING','PHONE','sequelize'];(function(_0x4f156c,_0x32ab83){var _0xe7820e=function(_0x173c3d){while(--_0x173c3d){_0x4f156c['push'](_0x4f156c['shift']());}};_0xe7820e(++_0x32ab83);}(_0x3dd5,0x73));var _0x53dd=function(_0x59e38e,_0x159fd0){_0x59e38e=_0x59e38e-0x0;var _0x27fc00=_0x3dd5[_0x59e38e];return _0x27fc00;};'use strict';var Sequelize=require(_0x53dd('0x0'));module['exports']={'CmContactId':{'type':Sequelize[_0x53dd('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x53dd('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x53dd('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x53dd('0x2')],'defaultValue':_0x53dd('0x3')},'OrderBy':{'type':Sequelize[_0x53dd('0x1')],'defaultValue':null},'description':{'type':Sequelize[_0x53dd('0x2')],'defaultValue':null}};
\ No newline at end of file
+var _0x4b1f=['INTEGER','sequelize','exports','STRING'];(function(_0x14ad0b,_0x33a8d6){var _0x29666c=function(_0x1aa90e){while(--_0x1aa90e){_0x14ad0b['push'](_0x14ad0b['shift']());}};_0x29666c(++_0x33a8d6);}(_0x4b1f,0x195));var _0xf4b1=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0x4b1f[_0x25e7cb];return _0x375d92;};'use strict';var Sequelize=require(_0xf4b1('0x0'));module[_0xf4b1('0x1')]={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize[_0xf4b1('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xf4b1('0x3')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xf4b1('0x2')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xf4b1('0x3')],'defaultValue':null},'description':{'type':Sequelize[_0xf4b1('0x2')],'defaultValue':null}};
\ No newline at end of file
index 96e7dda..2516b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6c=['bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','CmContactHasItems','UserProfileResource','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x22e3bb,_0x2f30c6){var _0x18aa8b=function(_0x544617){while(--_0x544617){_0x22e3bb['push'](_0x22e3bb['shift']());}};_0x18aa8b(++_0x2f30c6);}(_0x3d6c,0x1aa));var _0xc3d6=function(_0x244497,_0x12b3bd){_0x244497=_0x244497-0x0;var _0x590616=_0x3d6c[_0x244497];return _0x590616;};'use strict';var emlformat=require(_0xc3d6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc3d6('0x1'));var jsonpatch=require(_0xc3d6('0x2'));var rp=require('request-promise');var moment=require(_0xc3d6('0x3'));var BPromise=require(_0xc3d6('0x4'));var Mustache=require(_0xc3d6('0x5'));var util=require(_0xc3d6('0x6'));var path=require(_0xc3d6('0x7'));var sox=require('sox');var csv=require(_0xc3d6('0x8'));var ejs=require(_0xc3d6('0x9'));var fs=require('fs');var fs_extra=require(_0xc3d6('0xa'));var _=require(_0xc3d6('0xb'));var squel=require(_0xc3d6('0xc'));var crypto=require(_0xc3d6('0xd'));var jsforce=require(_0xc3d6('0xe'));var deskjs=require(_0xc3d6('0xf'));var toCsv=require(_0xc3d6('0x8'));var querystring=require(_0xc3d6('0x10'));var Papa=require(_0xc3d6('0x11'));var Redis=require(_0xc3d6('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc3d6('0x13'));var hardwareService=require(_0xc3d6('0x14'));var logger=require(_0xc3d6('0x15'))(_0xc3d6('0x16'));var utils=require('../../config/utils');var config=require(_0xc3d6('0x17'));var licenseUtil=require(_0xc3d6('0x18'));var db=require(_0xc3d6('0x19'))['db'];function respondWithStatusCode(_0x3b4e65,_0x584a35){_0x584a35=_0x584a35||0xcc;return function(_0x21b7de){if(_0x21b7de){return _0x3b4e65[_0xc3d6('0x1a')](_0x584a35);}return _0x3b4e65[_0xc3d6('0x1b')](_0x584a35)[_0xc3d6('0x1c')]();};}function respondWithResult(_0xbd1bee,_0x730f){_0x730f=_0x730f||0xc8;return function(_0x2614c9){if(_0x2614c9){return _0xbd1bee[_0xc3d6('0x1b')](_0x730f)[_0xc3d6('0x1d')](_0x2614c9);}};}function respondWithFilteredResult(_0x581d16,_0x1bcfef){return function(_0x2923e6){if(_0x2923e6){var _0x1f494e=typeof _0x1bcfef[_0xc3d6('0x1e')]===_0xc3d6('0x1f')&&typeof _0x1bcfef['limit']==='undefined';var _0x2c512c=_0x2923e6['count'];var _0x3d72df=_0x1f494e?0x0:_0x1bcfef[_0xc3d6('0x1e')];var _0x181ee4=_0x1f494e?_0x2923e6[_0xc3d6('0x20')]:_0x1bcfef[_0xc3d6('0x1e')]+_0x1bcfef[_0xc3d6('0x21')];var _0x13fe00;if(_0x181ee4>=_0x2c512c){_0x181ee4=_0x2c512c;_0x13fe00=0xc8;}else{_0x13fe00=0xce;}_0x581d16['status'](_0x13fe00);return _0x581d16[_0xc3d6('0x22')](_0xc3d6('0x23'),_0x3d72df+'-'+_0x181ee4+'/'+_0x2c512c)['json'](_0x2923e6);}return null;};}function patchUpdates(_0x320708){return function(_0x57cbc5){try{jsonpatch[_0xc3d6('0x24')](_0x57cbc5,_0x320708,!![]);}catch(_0x2e2010){return BPromise[_0xc3d6('0x25')](_0x2e2010);}return _0x57cbc5[_0xc3d6('0x26')]();};}function saveUpdates(_0x1dc73b,_0xc44bc2){return function(_0x47549e){if(_0x47549e){return _0x47549e[_0xc3d6('0x27')](_0x1dc73b)[_0xc3d6('0x28')](function(_0x1b1bf1){return _0x1b1bf1;});}return null;};}function removeEntity(_0x432f24,_0x504dda){return function(_0x323a23){if(_0x323a23){return _0x323a23[_0xc3d6('0x29')]()[_0xc3d6('0x28')](function(){var _0x9ee65f=_0x323a23[_0xc3d6('0x2a')]({'plain':!![]});var _0x5c59ea=_0xc3d6('0x2b');return db[_0xc3d6('0x2c')]['destroy']({'where':{'type':_0x5c59ea,'resourceId':_0x9ee65f['id']}})['then'](function(){return _0x323a23;});})[_0xc3d6('0x28')](function(){_0x432f24[_0xc3d6('0x1b')](0xcc)[_0xc3d6('0x1c')]();});}};}function handleEntityNotFound(_0x44c883,_0x49ecab){return function(_0x5125cf){if(!_0x5125cf){_0x44c883[_0xc3d6('0x1a')](0x194);}return _0x5125cf;};}function handleError(_0x1eb2c2,_0xe7c122){_0xe7c122=_0xe7c122||0x1f4;return function(_0x2db5c9){logger[_0xc3d6('0x2d')](_0x2db5c9[_0xc3d6('0x2e')]);if(_0x2db5c9['name']){delete _0x2db5c9[_0xc3d6('0x2f')];}_0x1eb2c2[_0xc3d6('0x1b')](_0xe7c122)[_0xc3d6('0x30')](_0x2db5c9);};}exports[_0xc3d6('0x31')]=function(_0x3c2797,_0x31e002){var _0x4b991d={},_0x4c3c46={},_0x516531={'count':0x0,'rows':[]};var _0x5bfc61=_[_0xc3d6('0x32')](db[_0xc3d6('0x33')][_0xc3d6('0x34')],function(_0x177049){return{'name':_0x177049[_0xc3d6('0x35')],'type':_0x177049[_0xc3d6('0x36')][_0xc3d6('0x37')]};});_0x4c3c46[_0xc3d6('0x38')]=_[_0xc3d6('0x32')](_0x5bfc61,_0xc3d6('0x2f'));_0x4c3c46[_0xc3d6('0x39')]=_['keys'](_0x3c2797[_0xc3d6('0x39')]);_0x4c3c46[_0xc3d6('0x3a')]=_[_0xc3d6('0x3b')](_0x4c3c46[_0xc3d6('0x38')],_0x4c3c46[_0xc3d6('0x39')]);_0x4b991d[_0xc3d6('0x3c')]=_[_0xc3d6('0x3b')](_0x4c3c46[_0xc3d6('0x38')],qs[_0xc3d6('0x3d')](_0x3c2797['query']['fields']));_0x4b991d[_0xc3d6('0x3c')]=_0x4b991d[_0xc3d6('0x3c')][_0xc3d6('0x3e')]?_0x4b991d[_0xc3d6('0x3c')]:_0x4c3c46[_0xc3d6('0x38')];if(!_0x3c2797[_0xc3d6('0x39')]['hasOwnProperty'](_0xc3d6('0x3f'))){_0x4b991d[_0xc3d6('0x21')]=qs[_0xc3d6('0x21')](_0x3c2797[_0xc3d6('0x39')][_0xc3d6('0x21')]);_0x4b991d['offset']=qs[_0xc3d6('0x1e')](_0x3c2797['query']['offset']);}_0x4b991d[_0xc3d6('0x40')]=qs['sort'](_0x3c2797[_0xc3d6('0x39')][_0xc3d6('0x41')]);_0x4b991d['where']=qs['filters'](_['pick'](_0x3c2797[_0xc3d6('0x39')],_0x4c3c46[_0xc3d6('0x3a')]),_0x5bfc61);if(_0x3c2797['query'][_0xc3d6('0x42')]){_0x4b991d[_0xc3d6('0x43')]=_[_0xc3d6('0x44')](_0x4b991d[_0xc3d6('0x43')],{'$or':_[_0xc3d6('0x32')](_0x5bfc61,function(_0x1ddc63){if(_0x1ddc63[_0xc3d6('0x36')]!==_0xc3d6('0x45')){var _0x43a2c3={};_0x43a2c3[_0x1ddc63[_0xc3d6('0x2f')]]={'$like':'%'+_0x3c2797[_0xc3d6('0x39')][_0xc3d6('0x42')]+'%'};return _0x43a2c3;}})});}_0x4b991d=_['merge']({},_0x4b991d,_0x3c2797[_0xc3d6('0x46')]);var _0x16b7d9={'where':_0x4b991d[_0xc3d6('0x43')]};return db[_0xc3d6('0x33')][_0xc3d6('0x20')](_0x16b7d9)[_0xc3d6('0x28')](function(_0x2362bb){_0x516531[_0xc3d6('0x20')]=_0x2362bb;if(_0x3c2797[_0xc3d6('0x39')][_0xc3d6('0x47')]){_0x4b991d[_0xc3d6('0x48')]=[{'all':!![]}];}return db[_0xc3d6('0x33')][_0xc3d6('0x49')](_0x4b991d);})[_0xc3d6('0x28')](function(_0x3bdf61){_0x516531[_0xc3d6('0x4a')]=_0x3bdf61;return _0x516531;})[_0xc3d6('0x28')](respondWithFilteredResult(_0x31e002,_0x4b991d))[_0xc3d6('0x4b')](handleError(_0x31e002,null));};exports[_0xc3d6('0x4c')]=function(_0x22e146,_0x47e684){var _0x58b0a1={'raw':!![],'where':{'id':_0x22e146[_0xc3d6('0x4d')]['id']}},_0x5acc96={};_0x5acc96[_0xc3d6('0x38')]=_[_0xc3d6('0x4e')](db[_0xc3d6('0x33')][_0xc3d6('0x34')]);_0x5acc96[_0xc3d6('0x39')]=_[_0xc3d6('0x4e')](_0x22e146[_0xc3d6('0x39')]);_0x5acc96[_0xc3d6('0x3a')]=_[_0xc3d6('0x3b')](_0x5acc96['model'],_0x5acc96[_0xc3d6('0x39')]);_0x58b0a1[_0xc3d6('0x3c')]=_[_0xc3d6('0x3b')](_0x5acc96[_0xc3d6('0x38')],qs[_0xc3d6('0x3d')](_0x22e146[_0xc3d6('0x39')][_0xc3d6('0x3d')]));_0x58b0a1[_0xc3d6('0x3c')]=_0x58b0a1[_0xc3d6('0x3c')][_0xc3d6('0x3e')]?_0x58b0a1['attributes']:_0x5acc96[_0xc3d6('0x38')];if(_0x22e146[_0xc3d6('0x39')][_0xc3d6('0x47')]){_0x58b0a1['include']=[{'all':!![]}];}_0x58b0a1=_['merge']({},_0x58b0a1,_0x22e146[_0xc3d6('0x46')]);return db[_0xc3d6('0x33')][_0xc3d6('0x4f')](_0x58b0a1)['then'](handleEntityNotFound(_0x47e684,null))[_0xc3d6('0x28')](respondWithResult(_0x47e684,null))['catch'](handleError(_0x47e684,null));};exports[_0xc3d6('0x50')]=function(_0x35ffd7,_0x3185b0){return db[_0xc3d6('0x33')][_0xc3d6('0x50')](_0x35ffd7[_0xc3d6('0x51')],{})[_0xc3d6('0x28')](function(_0x2ca40d){var _0x1ce111=_0x35ffd7['user'][_0xc3d6('0x2a')]({'plain':!![]});if(!_0x1ce111)throw new Error(_0xc3d6('0x52'));if(_0x1ce111[_0xc3d6('0x53')]===_0xc3d6('0x54')){var _0x26642e=_0x2ca40d[_0xc3d6('0x2a')]({'plain':!![]});var _0x3cd114=_0xc3d6('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x3cd114,'userProfileId':_0x1ce111[_0xc3d6('0x55')]},'raw':!![]})[_0xc3d6('0x28')](function(_0xb07bbc){if(_0xb07bbc&&_0xb07bbc['autoAssociation']===0x0){return db[_0xc3d6('0x2c')][_0xc3d6('0x50')]({'name':_0x26642e[_0xc3d6('0x2f')],'resourceId':_0x26642e['id'],'type':_0xb07bbc['name'],'sectionId':_0xb07bbc['id']},{})['then'](function(){return _0x2ca40d;});}else{return _0x2ca40d;}})[_0xc3d6('0x4b')](function(_0x18e699){logger[_0xc3d6('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x18e699);throw _0x18e699;});}return _0x2ca40d;})[_0xc3d6('0x28')](respondWithResult(_0x3185b0,0xc9))['catch'](handleError(_0x3185b0,null));};exports[_0xc3d6('0x27')]=function(_0x1094f1,_0x4debb9){if(_0x1094f1['body']['id']){delete _0x1094f1[_0xc3d6('0x51')]['id'];}return db['CmContactHasItem'][_0xc3d6('0x4f')]({'where':{'id':_0x1094f1[_0xc3d6('0x4d')]['id']}})[_0xc3d6('0x28')](handleEntityNotFound(_0x4debb9,null))[_0xc3d6('0x28')](saveUpdates(_0x1094f1[_0xc3d6('0x51')],null))[_0xc3d6('0x28')](respondWithResult(_0x4debb9,null))[_0xc3d6('0x4b')](handleError(_0x4debb9,null));};exports['destroy']=function(_0x3a4d9b,_0x956a66){return db['CmContactHasItem'][_0xc3d6('0x4f')]({'where':{'id':_0x3a4d9b[_0xc3d6('0x4d')]['id']}})[_0xc3d6('0x28')](handleEntityNotFound(_0x956a66,null))[_0xc3d6('0x28')](removeEntity(_0x956a66,null))['catch'](handleError(_0x956a66,null));};
\ No newline at end of file
+var _0xe038=['fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','save','update','then','destroy','CmContactHasItems','UserProfileResource','error','stack','name','send','CmContactHasItem','rawAttributes','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir'];(function(_0x54bac5,_0x8d3a16){var _0xc15971=function(_0x254653){while(--_0x254653){_0x54bac5['push'](_0x54bac5['shift']());}};_0xc15971(++_0x8d3a16);}(_0xe038,0x13e));var _0x8e03=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xe038[_0x53ccf2];return _0x5a2964;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8e03('0x0'));var zipdir=require(_0x8e03('0x1'));var jsonpatch=require(_0x8e03('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8e03('0x3'));var util=require(_0x8e03('0x4'));var path=require(_0x8e03('0x5'));var sox=require('sox');var csv=require(_0x8e03('0x6'));var ejs=require(_0x8e03('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8e03('0x8'));var squel=require(_0x8e03('0x9'));var crypto=require(_0x8e03('0xa'));var jsforce=require(_0x8e03('0xb'));var deskjs=require(_0x8e03('0xc'));var toCsv=require(_0x8e03('0x6'));var querystring=require(_0x8e03('0xd'));var Papa=require(_0x8e03('0xe'));var Redis=require(_0x8e03('0xf'));var authService=require(_0x8e03('0x10'));var qs=require(_0x8e03('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e03('0x12'))(_0x8e03('0x13'));var utils=require(_0x8e03('0x14'));var config=require(_0x8e03('0x15'));var licenseUtil=require(_0x8e03('0x16'));var db=require(_0x8e03('0x17'))['db'];function respondWithStatusCode(_0x2a23ca,_0x4fa792){_0x4fa792=_0x4fa792||0xcc;return function(_0x2f68df){if(_0x2f68df){return _0x2a23ca['sendStatus'](_0x4fa792);}return _0x2a23ca[_0x8e03('0x18')](_0x4fa792)[_0x8e03('0x19')]();};}function respondWithResult(_0xc91924,_0x1fd49b){_0x1fd49b=_0x1fd49b||0xc8;return function(_0x2e798b){if(_0x2e798b){return _0xc91924['status'](_0x1fd49b)[_0x8e03('0x1a')](_0x2e798b);}};}function respondWithFilteredResult(_0x29a10d,_0x22a9e6){return function(_0x263fad){if(_0x263fad){var _0x4b17f8=typeof _0x22a9e6['offset']===_0x8e03('0x1b')&&typeof _0x22a9e6['limit']==='undefined';var _0x9e37cb=_0x263fad[_0x8e03('0x1c')];var _0x6cf14b=_0x4b17f8?0x0:_0x22a9e6[_0x8e03('0x1d')];var _0x2940b1=_0x4b17f8?_0x263fad[_0x8e03('0x1c')]:_0x22a9e6[_0x8e03('0x1d')]+_0x22a9e6[_0x8e03('0x1e')];var _0x32505b;if(_0x2940b1>=_0x9e37cb){_0x2940b1=_0x9e37cb;_0x32505b=0xc8;}else{_0x32505b=0xce;}_0x29a10d['status'](_0x32505b);return _0x29a10d[_0x8e03('0x1f')]('Content-Range',_0x6cf14b+'-'+_0x2940b1+'/'+_0x9e37cb)['json'](_0x263fad);}return null;};}function patchUpdates(_0x2cf3a4){return function(_0x392ff5){try{jsonpatch[_0x8e03('0x20')](_0x392ff5,_0x2cf3a4,!![]);}catch(_0x4e97e1){return BPromise['reject'](_0x4e97e1);}return _0x392ff5[_0x8e03('0x21')]();};}function saveUpdates(_0x17a04a,_0x991b61){return function(_0x1d76e5){if(_0x1d76e5){return _0x1d76e5[_0x8e03('0x22')](_0x17a04a)[_0x8e03('0x23')](function(_0x11e938){return _0x11e938;});}return null;};}function removeEntity(_0x39fa79,_0x34c986){return function(_0x1b6cb0){if(_0x1b6cb0){return _0x1b6cb0[_0x8e03('0x24')]()[_0x8e03('0x23')](function(){var _0x5b7ca8=_0x1b6cb0['get']({'plain':!![]});var _0x2ce00a=_0x8e03('0x25');return db[_0x8e03('0x26')][_0x8e03('0x24')]({'where':{'type':_0x2ce00a,'resourceId':_0x5b7ca8['id']}})[_0x8e03('0x23')](function(){return _0x1b6cb0;});})[_0x8e03('0x23')](function(){_0x39fa79[_0x8e03('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x228d13,_0x1375e4){return function(_0x5c142f){if(!_0x5c142f){_0x228d13['sendStatus'](0x194);}return _0x5c142f;};}function handleError(_0x88a4cc,_0x3a88b4){_0x3a88b4=_0x3a88b4||0x1f4;return function(_0xeb4bb6){logger[_0x8e03('0x27')](_0xeb4bb6[_0x8e03('0x28')]);if(_0xeb4bb6[_0x8e03('0x29')]){delete _0xeb4bb6['name'];}_0x88a4cc[_0x8e03('0x18')](_0x3a88b4)[_0x8e03('0x2a')](_0xeb4bb6);};}exports['index']=function(_0x10ff71,_0x4c8640){var _0x111e30={},_0x2b6db0={},_0x52f5e5={'count':0x0,'rows':[]};var _0x126c45=_['map'](db[_0x8e03('0x2b')][_0x8e03('0x2c')],function(_0xe0ea6b){return{'name':_0xe0ea6b[_0x8e03('0x2d')],'type':_0xe0ea6b['type']['key']};});_0x2b6db0[_0x8e03('0x2e')]=_[_0x8e03('0x2f')](_0x126c45,_0x8e03('0x29'));_0x2b6db0[_0x8e03('0x30')]=_[_0x8e03('0x31')](_0x10ff71[_0x8e03('0x30')]);_0x2b6db0[_0x8e03('0x32')]=_[_0x8e03('0x33')](_0x2b6db0[_0x8e03('0x2e')],_0x2b6db0[_0x8e03('0x30')]);_0x111e30[_0x8e03('0x34')]=_['intersection'](_0x2b6db0['model'],qs[_0x8e03('0x35')](_0x10ff71[_0x8e03('0x30')]['fields']));_0x111e30[_0x8e03('0x34')]=_0x111e30['attributes'][_0x8e03('0x36')]?_0x111e30[_0x8e03('0x34')]:_0x2b6db0[_0x8e03('0x2e')];if(!_0x10ff71['query'][_0x8e03('0x37')]('nolimit')){_0x111e30[_0x8e03('0x1e')]=qs[_0x8e03('0x1e')](_0x10ff71[_0x8e03('0x30')][_0x8e03('0x1e')]);_0x111e30['offset']=qs[_0x8e03('0x1d')](_0x10ff71['query'][_0x8e03('0x1d')]);}_0x111e30['order']=qs['sort'](_0x10ff71[_0x8e03('0x30')][_0x8e03('0x38')]);_0x111e30[_0x8e03('0x39')]=qs['filters'](_[_0x8e03('0x3a')](_0x10ff71['query'],_0x2b6db0['filters']),_0x126c45);if(_0x10ff71[_0x8e03('0x30')][_0x8e03('0x3b')]){_0x111e30[_0x8e03('0x39')]=_[_0x8e03('0x3c')](_0x111e30[_0x8e03('0x39')],{'$or':_[_0x8e03('0x2f')](_0x126c45,function(_0x2dbe21){if(_0x2dbe21[_0x8e03('0x3d')]!==_0x8e03('0x3e')){var _0xb8f152={};_0xb8f152[_0x2dbe21[_0x8e03('0x29')]]={'$like':'%'+_0x10ff71[_0x8e03('0x30')][_0x8e03('0x3b')]+'%'};return _0xb8f152;}})});}_0x111e30=_['merge']({},_0x111e30,_0x10ff71[_0x8e03('0x3f')]);var _0x5a4b65={'where':_0x111e30['where']};return db['CmContactHasItem'][_0x8e03('0x1c')](_0x5a4b65)[_0x8e03('0x23')](function(_0x4e4b54){_0x52f5e5['count']=_0x4e4b54;if(_0x10ff71['query'][_0x8e03('0x40')]){_0x111e30[_0x8e03('0x41')]=[{'all':!![]}];}return db[_0x8e03('0x2b')][_0x8e03('0x42')](_0x111e30);})[_0x8e03('0x23')](function(_0x46b896){_0x52f5e5[_0x8e03('0x43')]=_0x46b896;return _0x52f5e5;})[_0x8e03('0x23')](respondWithFilteredResult(_0x4c8640,_0x111e30))[_0x8e03('0x44')](handleError(_0x4c8640,null));};exports['show']=function(_0x48f00c,_0x1a1e12){var _0x17638b={'raw':!![],'where':{'id':_0x48f00c[_0x8e03('0x45')]['id']}},_0x214fc9={};_0x214fc9[_0x8e03('0x2e')]=_[_0x8e03('0x31')](db[_0x8e03('0x2b')][_0x8e03('0x2c')]);_0x214fc9['query']=_[_0x8e03('0x31')](_0x48f00c[_0x8e03('0x30')]);_0x214fc9[_0x8e03('0x32')]=_[_0x8e03('0x33')](_0x214fc9[_0x8e03('0x2e')],_0x214fc9[_0x8e03('0x30')]);_0x17638b[_0x8e03('0x34')]=_['intersection'](_0x214fc9['model'],qs[_0x8e03('0x35')](_0x48f00c['query'][_0x8e03('0x35')]));_0x17638b[_0x8e03('0x34')]=_0x17638b[_0x8e03('0x34')][_0x8e03('0x36')]?_0x17638b['attributes']:_0x214fc9['model'];if(_0x48f00c['query'][_0x8e03('0x40')]){_0x17638b['include']=[{'all':!![]}];}_0x17638b=_[_0x8e03('0x3c')]({},_0x17638b,_0x48f00c['options']);return db[_0x8e03('0x2b')][_0x8e03('0x46')](_0x17638b)['then'](handleEntityNotFound(_0x1a1e12,null))[_0x8e03('0x23')](respondWithResult(_0x1a1e12,null))['catch'](handleError(_0x1a1e12,null));};exports[_0x8e03('0x47')]=function(_0x1e1c2c,_0x404071){return db[_0x8e03('0x2b')][_0x8e03('0x47')](_0x1e1c2c[_0x8e03('0x48')],{})[_0x8e03('0x23')](function(_0x2f587d){var _0x3715d5=_0x1e1c2c['user'][_0x8e03('0x49')]({'plain':!![]});if(!_0x3715d5)throw new Error(_0x8e03('0x4a'));if(_0x3715d5[_0x8e03('0x4b')]===_0x8e03('0x4c')){var _0x4ca30d=_0x2f587d[_0x8e03('0x49')]({'plain':!![]});var _0x1a869e=_0x8e03('0x25');return db[_0x8e03('0x4d')][_0x8e03('0x46')]({'where':{'name':_0x1a869e,'userProfileId':_0x3715d5[_0x8e03('0x4e')]},'raw':!![]})[_0x8e03('0x23')](function(_0x14b670){if(_0x14b670&&_0x14b670['autoAssociation']===0x0){return db[_0x8e03('0x26')]['create']({'name':_0x4ca30d[_0x8e03('0x29')],'resourceId':_0x4ca30d['id'],'type':_0x14b670[_0x8e03('0x29')],'sectionId':_0x14b670['id']},{})[_0x8e03('0x23')](function(){return _0x2f587d;});}else{return _0x2f587d;}})[_0x8e03('0x44')](function(_0x5850b8){logger[_0x8e03('0x27')](_0x8e03('0x4f'),_0x5850b8);throw _0x5850b8;});}return _0x2f587d;})[_0x8e03('0x23')](respondWithResult(_0x404071,0xc9))[_0x8e03('0x44')](handleError(_0x404071,null));};exports[_0x8e03('0x22')]=function(_0x4398fe,_0x1cef64){if(_0x4398fe[_0x8e03('0x48')]['id']){delete _0x4398fe[_0x8e03('0x48')]['id'];}return db[_0x8e03('0x2b')][_0x8e03('0x46')]({'where':{'id':_0x4398fe['params']['id']}})[_0x8e03('0x23')](handleEntityNotFound(_0x1cef64,null))[_0x8e03('0x23')](saveUpdates(_0x4398fe[_0x8e03('0x48')],null))[_0x8e03('0x23')](respondWithResult(_0x1cef64,null))[_0x8e03('0x44')](handleError(_0x1cef64,null));};exports[_0x8e03('0x24')]=function(_0x3a5762,_0x3138bd){return db[_0x8e03('0x2b')]['find']({'where':{'id':_0x3a5762[_0x8e03('0x45')]['id']}})[_0x8e03('0x23')](handleEntityNotFound(_0x3138bd,null))[_0x8e03('0x23')](removeEntity(_0x3138bd,null))[_0x8e03('0x44')](handleError(_0x3138bd,null));};
\ No newline at end of file
index 545acab..4f536a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcab3=['./cmContactHasItem.attributes','define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x3927f3,_0x35c843){var _0x428c2b=function(_0x35cead){while(--_0x35cead){_0x3927f3['push'](_0x3927f3['shift']());}};_0x428c2b(++_0x35c843);}(_0xcab3,0xeb));var _0x3cab=function(_0x29a7e8,_0x304534){_0x29a7e8=_0x29a7e8-0x0;var _0x57d1a9=_0xcab3[_0x29a7e8];return _0x57d1a9;};'use strict';var _=require('lodash');var util=require(_0x3cab('0x0'));var logger=require(_0x3cab('0x1'))('api');var moment=require(_0x3cab('0x2'));var BPromise=require(_0x3cab('0x3'));var rp=require(_0x3cab('0x4'));var fs=require('fs');var path=require(_0x3cab('0x5'));var rimraf=require(_0x3cab('0x6'));var config=require('../../config/environment');var attributes=require(_0x3cab('0x7'));module['exports']=function(_0x1f458c,_0x320d42){return _0x1f458c[_0x3cab('0x8')](_0x3cab('0x9'),attributes,{'tableName':_0x3cab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x704d=['lodash','util','api','moment','./cmContactHasItem.attributes','exports','define'];(function(_0x16cbe9,_0x42df29){var _0x188675=function(_0x2abf0c){while(--_0x2abf0c){_0x16cbe9['push'](_0x16cbe9['shift']());}};_0x188675(++_0x42df29);}(_0x704d,0x1b9));var _0xd704=function(_0x3ca87c,_0x3a3f79){_0x3ca87c=_0x3ca87c-0x0;var _0x5bf21b=_0x704d[_0x3ca87c];return _0x5bf21b;};'use strict';var _=require(_0xd704('0x0'));var util=require(_0xd704('0x1'));var logger=require('../../config/logger')(_0xd704('0x2'));var moment=require(_0xd704('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd704('0x4'));module[_0xd704('0x5')]=function(_0xc04cbc,_0x1587f7){return _0xc04cbc[_0xd704('0x6')]('CmContactHasItem',attributes,{'tableName':'cm_contact_has_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f4c78a..cfd936e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f5=['request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmContactHasItem,\x20%s,\x20%s','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info'];(function(_0x17823f,_0xffd807){var _0x51fc21=function(_0x5e4921){while(--_0x5e4921){_0x17823f['push'](_0x17823f['shift']());}};_0x51fc21(++_0xffd807);}(_0xc7f5,0x94));var _0x5c7f=function(_0x245b1e,_0xa8035c){_0x245b1e=_0x245b1e-0x0;var _0x4a44dc=_0xc7f5[_0x245b1e];return _0x4a44dc;};'use strict';var _=require('lodash');var util=require(_0x5c7f('0x0'));var moment=require(_0x5c7f('0x1'));var BPromise=require('bluebird');var rs=require(_0x5c7f('0x2'));var fs=require('fs');var Redis=require(_0x5c7f('0x3'));var db=require(_0x5c7f('0x4'))['db'];var utils=require(_0x5c7f('0x5'));var logger=require(_0x5c7f('0x6'))(_0x5c7f('0x7'));var config=require('../../config/environment');var jayson=require(_0x5c7f('0x8'));var client=jayson[_0x5c7f('0x9')][_0x5c7f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12d835,_0x26a93d,_0x30b27a){return new BPromise(function(_0x5b04ae,_0x4a23c7){return client['request'](_0x12d835,_0x30b27a)[_0x5c7f('0xb')](function(_0x13c539){logger[_0x5c7f('0xc')]('CmContactHasItem,\x20%s,\x20%s',_0x26a93d,_0x5c7f('0xd'));logger[_0x5c7f('0xe')](_0x5c7f('0xf'),_0x26a93d,'request\x20sent',JSON[_0x5c7f('0x10')](_0x13c539));if(_0x13c539['error']){if(_0x13c539[_0x5c7f('0x11')][_0x5c7f('0x12')]===0x1f4){logger[_0x5c7f('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x26a93d,_0x13c539[_0x5c7f('0x11')]['message']);return _0x4a23c7(_0x13c539[_0x5c7f('0x11')][_0x5c7f('0x13')]);}logger[_0x5c7f('0x11')](_0x5c7f('0x14'),_0x26a93d,_0x13c539[_0x5c7f('0x11')][_0x5c7f('0x13')]);return _0x5b04ae(_0x13c539[_0x5c7f('0x11')]['message']);}else{logger['info'](_0x5c7f('0x14'),_0x26a93d,'request\x20sent');_0x5b04ae(_0x13c539[_0x5c7f('0x15')]['message']);}})[_0x5c7f('0x16')](function(_0x6e1f9e){logger[_0x5c7f('0x11')](_0x5c7f('0x14'),_0x26a93d,_0x6e1f9e);_0x4a23c7(_0x6e1f9e);});});}
\ No newline at end of file
+var _0xffa3=['info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xffa3,0x133));var _0x3ffa=function(_0x4376e5,_0x3f44b3){_0x4376e5=_0x4376e5-0x0;var _0x519846=_0xffa3[_0x4376e5];return _0x519846;};'use strict';var _=require(_0x3ffa('0x0'));var util=require(_0x3ffa('0x1'));var moment=require(_0x3ffa('0x2'));var BPromise=require(_0x3ffa('0x3'));var rs=require(_0x3ffa('0x4'));var fs=require('fs');var Redis=require(_0x3ffa('0x5'));var db=require(_0x3ffa('0x6'))['db'];var utils=require(_0x3ffa('0x7'));var logger=require(_0x3ffa('0x8'))(_0x3ffa('0x9'));var config=require(_0x3ffa('0xa'));var jayson=require(_0x3ffa('0xb'));var client=jayson[_0x3ffa('0xc')][_0x3ffa('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x29b7f6,_0x287a10,_0xef09ef){return new BPromise(function(_0x12f6d8,_0x2e67f4){return client[_0x3ffa('0xe')](_0x29b7f6,_0xef09ef)['then'](function(_0x100cd9){logger[_0x3ffa('0xf')](_0x3ffa('0x10'),_0x287a10,_0x3ffa('0x11'));logger['debug']('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x287a10,_0x3ffa('0x11'),JSON[_0x3ffa('0x12')](_0x100cd9));if(_0x100cd9[_0x3ffa('0x13')]){if(_0x100cd9['error']['code']===0x1f4){logger['error'](_0x3ffa('0x10'),_0x287a10,_0x100cd9[_0x3ffa('0x13')][_0x3ffa('0x14')]);return _0x2e67f4(_0x100cd9[_0x3ffa('0x13')][_0x3ffa('0x14')]);}logger[_0x3ffa('0x13')]('CmContactHasItem,\x20%s,\x20%s',_0x287a10,_0x100cd9['error']['message']);return _0x12f6d8(_0x100cd9[_0x3ffa('0x13')][_0x3ffa('0x14')]);}else{logger[_0x3ffa('0xf')](_0x3ffa('0x10'),_0x287a10,'request\x20sent');_0x12f6d8(_0x100cd9[_0x3ffa('0x15')]['message']);}})[_0x3ffa('0x16')](function(_0x18334f){logger[_0x3ffa('0x13')](_0x3ffa('0x10'),_0x287a10,_0x18334f);_0x2e67f4(_0x18334f);});});}
\ No newline at end of file
index 91349be..bb8fd74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db3=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','show','post','put','update','delete','/:id'];(function(_0x1b332b,_0x3b61bd){var _0x22bd23=function(_0x10dd55){while(--_0x10dd55){_0x1b332b['push'](_0x1b332b['shift']());}};_0x22bd23(++_0x3b61bd);}(_0x7db3,0x12e));var _0x37db=function(_0x2b8e43,_0x1a19b9){_0x2b8e43=_0x2b8e43-0x0;var _0x1e68d1=_0x7db3[_0x2b8e43];return _0x1e68d1;};'use strict';var multer=require(_0x37db('0x0'));var util=require(_0x37db('0x1'));var path=require(_0x37db('0x2'));var timeout=require('connect-timeout');var express=require(_0x37db('0x3'));var router=express[_0x37db('0x4')]();var fs_extra=require(_0x37db('0x5'));var auth=require(_0x37db('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x37db('0x7'));var controller=require(_0x37db('0x8'));router[_0x37db('0x9')]('/',auth[_0x37db('0xa')](),controller[_0x37db('0xb')]);router[_0x37db('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x37db('0xc')]);router[_0x37db('0xd')]('/',auth[_0x37db('0xa')](),controller['create']);router[_0x37db('0xe')]('/:id',auth[_0x37db('0xa')](),controller[_0x37db('0xf')]);router[_0x37db('0x10')](_0x37db('0x11'),auth[_0x37db('0xa')](),controller[_0x37db('0x12')]);module[_0x37db('0x13')]=router;
\ No newline at end of file
+var _0x54e1=['put','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x54e1,0x147));var _0x154e=function(_0x167fda,_0x495c58){_0x167fda=_0x167fda-0x0;var _0x51285a=_0x54e1[_0x167fda];return _0x51285a;};'use strict';var multer=require(_0x154e('0x0'));var util=require(_0x154e('0x1'));var path=require(_0x154e('0x2'));var timeout=require('connect-timeout');var express=require(_0x154e('0x3'));var router=express[_0x154e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x154e('0x5'));var interaction=require(_0x154e('0x6'));var config=require('../../config/environment');var controller=require(_0x154e('0x7'));router[_0x154e('0x8')]('/',auth[_0x154e('0x9')](),controller[_0x154e('0xa')]);router[_0x154e('0x8')](_0x154e('0xb'),auth[_0x154e('0x9')](),controller[_0x154e('0xc')]);router[_0x154e('0xd')]('/',auth[_0x154e('0x9')](),controller[_0x154e('0xe')]);router[_0x154e('0xf')](_0x154e('0xb'),auth[_0x154e('0x9')](),controller[_0x154e('0x10')]);router[_0x154e('0x11')]('/:id',auth[_0x154e('0x9')](),controller['destroy']);module[_0x154e('0x12')]=router;
\ No newline at end of file
index b65ecfb..7995d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb78=['long','type','select','parse','values','isArray','setDataValue','stringify','BOOLEAN','ENUM','sequelize','lodash','exports','VIRTUAL','STRING','getDataValue','name','TEXT'];(function(_0x44a90c,_0x2a3d57){var _0x2e2a63=function(_0x3d1b99){while(--_0x3d1b99){_0x44a90c['push'](_0x44a90c['shift']());}};_0x2e2a63(++_0x2a3d57);}(_0xbb78,0xac));var _0x8bb7=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0xbb78[_0x49d41c];return _0xb64c5f;};'use strict';var Sequelize=require(_0x8bb7('0x0'));var _=require(_0x8bb7('0x1'));module[_0x8bb7('0x2')]={'name':{'type':Sequelize[_0x8bb7('0x3')],'get':function(_0x707662){return this['getDataValue']('alias');}},'alias':{'type':Sequelize[_0x8bb7('0x4')],'allowNull':![],'set':function(_0x2b23ef){this['setDataValue']('alias',_0x2b23ef?_0x2b23ef:this[_0x8bb7('0x5')](_0x8bb7('0x6')));}},'type':{'type':Sequelize[_0x8bb7('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x8bb7('0x7')](_0x8bb7('0x8')),'get':function(){if(this[_0x8bb7('0x5')](_0x8bb7('0x9'))===_0x8bb7('0xa')){return JSON[_0x8bb7('0xb')](this[_0x8bb7('0x5')](_0x8bb7('0xc')));}else{return this[_0x8bb7('0x5')](_0x8bb7('0xc'));}},'set':function(_0x19e132){if(Array[_0x8bb7('0xd')](_0x19e132)){this[_0x8bb7('0xe')](_0x8bb7('0xc'),JSON[_0x8bb7('0xf')](_0x19e132));}else{this['setDataValue'](_0x8bb7('0xc'),_0x19e132);}}},'required':{'type':Sequelize[_0x8bb7('0x10')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x8bb7('0x10')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x8bb7('0x11')]('voice')}};
\ No newline at end of file
+var _0xc841=['stringify','BOOLEAN','ENUM','lodash','exports','VIRTUAL','alias','STRING','setDataValue','name','TEXT','long','getDataValue','type','select','values','isArray'];(function(_0x469dd5,_0x485003){var _0x18b185=function(_0x8fc196){while(--_0x8fc196){_0x469dd5['push'](_0x469dd5['shift']());}};_0x18b185(++_0x485003);}(_0xc841,0x8b));var _0x1c84=function(_0x10e847,_0x2922d3){_0x10e847=_0x10e847-0x0;var _0x2c466e=_0xc841[_0x10e847];return _0x2c466e;};'use strict';var Sequelize=require('sequelize');var _=require(_0x1c84('0x0'));module[_0x1c84('0x1')]={'name':{'type':Sequelize[_0x1c84('0x2')],'get':function(_0x2f40ac){return this['getDataValue'](_0x1c84('0x3'));}},'alias':{'type':Sequelize[_0x1c84('0x4')],'allowNull':![],'set':function(_0x10c1a7){this[_0x1c84('0x5')](_0x1c84('0x3'),_0x10c1a7?_0x10c1a7:this['getDataValue'](_0x1c84('0x6')));}},'type':{'type':Sequelize[_0x1c84('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0x1c84('0x7')](_0x1c84('0x8')),'get':function(){if(this[_0x1c84('0x9')](_0x1c84('0xa'))===_0x1c84('0xb')){return JSON['parse'](this[_0x1c84('0x9')]('values'));}else{return this[_0x1c84('0x9')](_0x1c84('0xc'));}},'set':function(_0x331c31){if(Array[_0x1c84('0xd')](_0x331c31)){this[_0x1c84('0x5')](_0x1c84('0xc'),JSON[_0x1c84('0xe')](_0x331c31));}else{this[_0x1c84('0x5')]('values',_0x331c31);}}},'required':{'type':Sequelize[_0x1c84('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x1c84('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x1c84('0x10')]('voice')}};
\ No newline at end of file
index d83d267..8e5d162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1a1=['sort','where','pick','filter','merge','map','VIRTUAL','options','CmCustomField','include','findAll','rows','catch','show','params','intersection','includeAll','find','body','sequelize','transaction','create','Sequelize','TEXT','type','text','number','INTEGER','switch','BOOLEAN','queryInterface','addColumn','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','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','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','update','destroy','then','error','name','send','index','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x372405,_0x1fd6e2){var _0x26e997=function(_0x2ba9b8){while(--_0x2ba9b8){_0x372405['push'](_0x372405['shift']());}};_0x26e997(++_0x1fd6e2);}(_0xb1a1,0xce));var _0x1b1a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb1a1[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b1a('0x0'));var zipdir=require(_0x1b1a('0x1'));var jsonpatch=require(_0x1b1a('0x2'));var rp=require(_0x1b1a('0x3'));var moment=require(_0x1b1a('0x4'));var BPromise=require(_0x1b1a('0x5'));var Mustache=require(_0x1b1a('0x6'));var util=require('util');var path=require(_0x1b1a('0x7'));var sox=require(_0x1b1a('0x8'));var csv=require(_0x1b1a('0x9'));var ejs=require(_0x1b1a('0xa'));var fs=require('fs');var fs_extra=require(_0x1b1a('0xb'));var _=require('lodash');var squel=require(_0x1b1a('0xc'));var crypto=require('crypto');var jsforce=require(_0x1b1a('0xd'));var deskjs=require(_0x1b1a('0xe'));var toCsv=require(_0x1b1a('0x9'));var querystring=require(_0x1b1a('0xf'));var Papa=require(_0x1b1a('0x10'));var Redis=require('ioredis');var authService=require(_0x1b1a('0x11'));var qs=require(_0x1b1a('0x12'));var as=require(_0x1b1a('0x13'));var hardwareService=require(_0x1b1a('0x14'));var logger=require(_0x1b1a('0x15'))('api');var utils=require(_0x1b1a('0x16'));var config=require(_0x1b1a('0x17'));var licenseUtil=require(_0x1b1a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ed2a4,_0x3c7372){_0x3c7372=_0x3c7372||0xcc;return function(_0x597db8){if(_0x597db8){return _0x1ed2a4[_0x1b1a('0x19')](_0x3c7372);}return _0x1ed2a4[_0x1b1a('0x1a')](_0x3c7372)[_0x1b1a('0x1b')]();};}function respondWithResult(_0x3f17e3,_0x1d5811){_0x1d5811=_0x1d5811||0xc8;return function(_0x204c89){if(_0x204c89){return _0x3f17e3[_0x1b1a('0x1a')](_0x1d5811)[_0x1b1a('0x1c')](_0x204c89);}};}function respondWithFilteredResult(_0x29a12d,_0x4e87b8){return function(_0x2a51e5){if(_0x2a51e5){var _0x546162=typeof _0x4e87b8[_0x1b1a('0x1d')]==='undefined'&&typeof _0x4e87b8[_0x1b1a('0x1e')]==='undefined';var _0xa28504=_0x2a51e5[_0x1b1a('0x1f')];var _0x351a6c=_0x546162?0x0:_0x4e87b8[_0x1b1a('0x1d')];var _0x42a86d=_0x546162?_0x2a51e5[_0x1b1a('0x1f')]:_0x4e87b8[_0x1b1a('0x1d')]+_0x4e87b8['limit'];var _0x594698;if(_0x42a86d>=_0xa28504){_0x42a86d=_0xa28504;_0x594698=0xc8;}else{_0x594698=0xce;}_0x29a12d[_0x1b1a('0x1a')](_0x594698);return _0x29a12d['set'](_0x1b1a('0x20'),_0x351a6c+'-'+_0x42a86d+'/'+_0xa28504)[_0x1b1a('0x1c')](_0x2a51e5);}return null;};}function patchUpdates(_0x1c0a5b){return function(_0x4a17b1){try{jsonpatch[_0x1b1a('0x21')](_0x4a17b1,_0x1c0a5b,!![]);}catch(_0x1e54c1){return BPromise[_0x1b1a('0x22')](_0x1e54c1);}return _0x4a17b1['save']();};}function saveUpdates(_0x504f3c,_0x31ae3f){return function(_0x2a61bb){if(_0x2a61bb){return _0x2a61bb[_0x1b1a('0x23')](_0x504f3c)['then'](function(_0x541238){return _0x541238;});}return null;};}function removeEntity(_0x5f5c42,_0xf90a7a){return function(_0x3f24d5){if(_0x3f24d5){return _0x3f24d5[_0x1b1a('0x24')]()[_0x1b1a('0x25')](function(){_0x5f5c42[_0x1b1a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3de977,_0x3bca92){return function(_0x2f010f){if(!_0x2f010f){_0x3de977[_0x1b1a('0x19')](0x194);}return _0x2f010f;};}function handleError(_0xe89304,_0x14d116){_0x14d116=_0x14d116||0x1f4;return function(_0x2417e7){logger[_0x1b1a('0x26')](_0x2417e7['stack']);if(_0x2417e7['name']){delete _0x2417e7[_0x1b1a('0x27')];}_0xe89304[_0x1b1a('0x1a')](_0x14d116)[_0x1b1a('0x28')](_0x2417e7);};}exports[_0x1b1a('0x29')]=function(_0x4b1942,_0x75ee9d){var _0x57e91c={},_0x56a063={},_0x2017bb={'count':0x0,'rows':[]};var _0x4c73d7=_['map'](db['CmCustomField'][_0x1b1a('0x2a')],function(_0x177bbf){return{'name':_0x177bbf[_0x1b1a('0x2b')],'type':_0x177bbf['type'][_0x1b1a('0x2c')]};});_0x56a063[_0x1b1a('0x2d')]=_[_0x1b1a('0x2e')](_['map'](_0x4c73d7,_0x1b1a('0x27')),['name']);_0x56a063[_0x1b1a('0x2f')]=_[_0x1b1a('0x30')](_0x4b1942[_0x1b1a('0x2f')]);_0x56a063[_0x1b1a('0x31')]=_['intersection'](_0x56a063[_0x1b1a('0x2d')],_0x56a063['query']);_0x57e91c[_0x1b1a('0x32')]=_['intersection'](_0x56a063['model'],qs[_0x1b1a('0x33')](_0x4b1942[_0x1b1a('0x2f')][_0x1b1a('0x33')]));_0x57e91c[_0x1b1a('0x32')]=_0x57e91c['attributes'][_0x1b1a('0x34')]?_0x57e91c[_0x1b1a('0x32')]:_0x56a063[_0x1b1a('0x2d')];if(!_0x4b1942[_0x1b1a('0x2f')][_0x1b1a('0x35')](_0x1b1a('0x36'))){_0x57e91c[_0x1b1a('0x1e')]=qs[_0x1b1a('0x1e')](_0x4b1942[_0x1b1a('0x2f')]['limit']);_0x57e91c[_0x1b1a('0x1d')]=qs['offset'](_0x4b1942[_0x1b1a('0x2f')]['offset']);}_0x57e91c['order']=qs[_0x1b1a('0x37')](_0x4b1942[_0x1b1a('0x2f')][_0x1b1a('0x37')]);_0x57e91c[_0x1b1a('0x38')]=qs[_0x1b1a('0x31')](_[_0x1b1a('0x39')](_0x4b1942['query'],_0x56a063[_0x1b1a('0x31')]),_0x4c73d7);if(_0x4b1942['query'][_0x1b1a('0x3a')]){_0x57e91c[_0x1b1a('0x38')]=_[_0x1b1a('0x3b')](_0x57e91c['where'],{'$or':_[_0x1b1a('0x3c')](_0x4c73d7,function(_0x472854){if(_0x472854['type']!==_0x1b1a('0x3d')){var _0xc08c40={};_0xc08c40[_0x472854['name']]={'$like':'%'+_0x4b1942['query'][_0x1b1a('0x3a')]+'%'};return _0xc08c40;}})});}_0x57e91c=_[_0x1b1a('0x3b')]({},_0x57e91c,_0x4b1942[_0x1b1a('0x3e')]);var _0x31c2fa={'where':_0x57e91c[_0x1b1a('0x38')]};return db[_0x1b1a('0x3f')][_0x1b1a('0x1f')](_0x31c2fa)[_0x1b1a('0x25')](function(_0x5a9705){_0x2017bb['count']=_0x5a9705;if(_0x4b1942[_0x1b1a('0x2f')]['includeAll']){_0x57e91c[_0x1b1a('0x40')]=[{'all':!![]}];}return db[_0x1b1a('0x3f')][_0x1b1a('0x41')](_0x57e91c);})[_0x1b1a('0x25')](function(_0x5709c8){_0x2017bb[_0x1b1a('0x42')]=_0x5709c8;return _0x2017bb;})['then'](respondWithFilteredResult(_0x75ee9d,_0x57e91c))[_0x1b1a('0x43')](handleError(_0x75ee9d,null));};exports[_0x1b1a('0x44')]=function(_0x4ccbeb,_0x35f8a7){var _0x584eac={'raw':!![],'where':{'id':_0x4ccbeb[_0x1b1a('0x45')]['id']}},_0x1259c1={};_0x1259c1[_0x1b1a('0x2d')]=_['keys'](db[_0x1b1a('0x3f')][_0x1b1a('0x2a')]);_0x1259c1['query']=_[_0x1b1a('0x30')](_0x4ccbeb['query']);_0x1259c1[_0x1b1a('0x31')]=_[_0x1b1a('0x46')](_0x1259c1[_0x1b1a('0x2d')],_0x1259c1['query']);_0x584eac[_0x1b1a('0x32')]=_[_0x1b1a('0x46')](_0x1259c1[_0x1b1a('0x2d')],qs[_0x1b1a('0x33')](_0x4ccbeb[_0x1b1a('0x2f')][_0x1b1a('0x33')]));_0x584eac[_0x1b1a('0x32')]=_0x584eac['attributes'][_0x1b1a('0x34')]?_0x584eac[_0x1b1a('0x32')]:_0x1259c1[_0x1b1a('0x2d')];if(_0x4ccbeb['query'][_0x1b1a('0x47')]){_0x584eac[_0x1b1a('0x40')]=[{'all':!![]}];}_0x584eac=_[_0x1b1a('0x3b')]({},_0x584eac,_0x4ccbeb[_0x1b1a('0x3e')]);return db[_0x1b1a('0x3f')][_0x1b1a('0x48')](_0x584eac)['then'](handleEntityNotFound(_0x35f8a7,null))['then'](respondWithResult(_0x35f8a7,null))[_0x1b1a('0x43')](handleError(_0x35f8a7,null));};exports[_0x1b1a('0x23')]=function(_0x24b214,_0x4bf331){if(_0x24b214['body']['id']){delete _0x24b214[_0x1b1a('0x49')]['id'];}return db[_0x1b1a('0x3f')][_0x1b1a('0x48')]({'where':{'id':_0x24b214[_0x1b1a('0x45')]['id']}})[_0x1b1a('0x25')](handleEntityNotFound(_0x4bf331,null))['then'](saveUpdates(_0x24b214['body'],null))[_0x1b1a('0x25')](respondWithResult(_0x4bf331,null))[_0x1b1a('0x43')](handleError(_0x4bf331,null));};exports[_0x1b1a('0x24')]=function(_0x142c81,_0x2d9838){return db[_0x1b1a('0x3f')][_0x1b1a('0x48')]({'where':{'id':_0x142c81['params']['id']}})[_0x1b1a('0x25')](handleEntityNotFound(_0x2d9838,null))[_0x1b1a('0x25')](removeEntity(_0x2d9838,null))[_0x1b1a('0x43')](handleError(_0x2d9838,null));};exports['create']=function(_0x266c33,_0x311a78){var _0xc0e92e;return db[_0x1b1a('0x4a')][_0x1b1a('0x4b')](function(_0x4a2f96){return db[_0x1b1a('0x3f')][_0x1b1a('0x4c')](_0x266c33[_0x1b1a('0x49')],{'transaction':_0x4a2f96})['then'](function(_0x3ce790){_0xc0e92e=_0x3ce790;var _0x21ebf7={'type':db[_0x1b1a('0x4d')][_0x1b1a('0x4e')],'transaction':_0x4a2f96};switch(_0x266c33[_0x1b1a('0x49')][_0x1b1a('0x4f')]){case _0x1b1a('0x50'):_0x21ebf7['type']=db[_0x1b1a('0x4d')][_0x1b1a('0x4e')];break;case _0x1b1a('0x51'):_0x21ebf7[_0x1b1a('0x4f')]=db[_0x1b1a('0x4d')][_0x1b1a('0x52')];break;case _0x1b1a('0x53'):_0x21ebf7[_0x1b1a('0x4f')]=db[_0x1b1a('0x4d')][_0x1b1a('0x54')];_0x21ebf7['defaultValue']=![];break;default:}return db[_0x1b1a('0x4a')][_0x1b1a('0x55')][_0x1b1a('0x56')]('cm_contacts',util['format']('cf_%d',_0xc0e92e['id']),_0x21ebf7);})['then'](function(){return _0xc0e92e;});})[_0x1b1a('0x25')](respondWithResult(_0x311a78,0xc9))[_0x1b1a('0x43')](handleError(_0x311a78,null));};
\ No newline at end of file
+var _0xda7d=['sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','send','map','CmCustomField','rawAttributes','fieldName','type','key','differenceBy','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','options','find','body','sequelize','transaction','create','Sequelize','text','TEXT','number','queryInterface','addColumn','format','cf_%d','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x435810,_0x42d85e){var _0x223d7b=function(_0x12a2d0){while(--_0x12a2d0){_0x435810['push'](_0x435810['shift']());}};_0x223d7b(++_0x42d85e);}(_0xda7d,0x145));var _0xdda7=function(_0x2927e1,_0x1e98ff){_0x2927e1=_0x2927e1-0x0;var _0x38cc3a=_0xda7d[_0x2927e1];return _0x38cc3a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdda7('0x0'));var zipdir=require(_0xdda7('0x1'));var jsonpatch=require(_0xdda7('0x2'));var rp=require(_0xdda7('0x3'));var moment=require(_0xdda7('0x4'));var BPromise=require(_0xdda7('0x5'));var Mustache=require(_0xdda7('0x6'));var util=require(_0xdda7('0x7'));var path=require(_0xdda7('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdda7('0x9'));var fs=require('fs');var fs_extra=require(_0xdda7('0xa'));var _=require(_0xdda7('0xb'));var squel=require(_0xdda7('0xc'));var crypto=require(_0xdda7('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xdda7('0xe'));var Papa=require(_0xdda7('0xf'));var Redis=require(_0xdda7('0x10'));var authService=require(_0xdda7('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdda7('0x12'));var logger=require('../../config/logger')(_0xdda7('0x13'));var utils=require('../../config/utils');var config=require(_0xdda7('0x14'));var licenseUtil=require(_0xdda7('0x15'));var db=require(_0xdda7('0x16'))['db'];function respondWithStatusCode(_0x19d98a,_0x5955cb){_0x5955cb=_0x5955cb||0xcc;return function(_0x1be32e){if(_0x1be32e){return _0x19d98a[_0xdda7('0x17')](_0x5955cb);}return _0x19d98a[_0xdda7('0x18')](_0x5955cb)[_0xdda7('0x19')]();};}function respondWithResult(_0x19c36f,_0x826ff9){_0x826ff9=_0x826ff9||0xc8;return function(_0x3161a6){if(_0x3161a6){return _0x19c36f['status'](_0x826ff9)['json'](_0x3161a6);}};}function respondWithFilteredResult(_0x5efb77,_0x2afc7e){return function(_0x111cb4){if(_0x111cb4){var _0x196d85=typeof _0x2afc7e[_0xdda7('0x1a')]===_0xdda7('0x1b')&&typeof _0x2afc7e[_0xdda7('0x1c')]==='undefined';var _0x3103b0=_0x111cb4[_0xdda7('0x1d')];var _0x3aecde=_0x196d85?0x0:_0x2afc7e[_0xdda7('0x1a')];var _0x26abce=_0x196d85?_0x111cb4[_0xdda7('0x1d')]:_0x2afc7e[_0xdda7('0x1a')]+_0x2afc7e[_0xdda7('0x1c')];var _0x4f1296;if(_0x26abce>=_0x3103b0){_0x26abce=_0x3103b0;_0x4f1296=0xc8;}else{_0x4f1296=0xce;}_0x5efb77[_0xdda7('0x18')](_0x4f1296);return _0x5efb77[_0xdda7('0x1e')](_0xdda7('0x1f'),_0x3aecde+'-'+_0x26abce+'/'+_0x3103b0)[_0xdda7('0x20')](_0x111cb4);}return null;};}function patchUpdates(_0x442542){return function(_0x4fa276){try{jsonpatch[_0xdda7('0x21')](_0x4fa276,_0x442542,!![]);}catch(_0x2f199f){return BPromise[_0xdda7('0x22')](_0x2f199f);}return _0x4fa276[_0xdda7('0x23')]();};}function saveUpdates(_0x39e3bd,_0x3a5a49){return function(_0x453c32){if(_0x453c32){return _0x453c32[_0xdda7('0x24')](_0x39e3bd)['then'](function(_0x312d0c){return _0x312d0c;});}return null;};}function removeEntity(_0x1d72c6,_0x56c35e){return function(_0x11e0c4){if(_0x11e0c4){return _0x11e0c4[_0xdda7('0x25')]()[_0xdda7('0x26')](function(){_0x1d72c6[_0xdda7('0x18')](0xcc)[_0xdda7('0x19')]();});}};}function handleEntityNotFound(_0x2ddcd0,_0x9d3b73){return function(_0x39cc78){if(!_0x39cc78){_0x2ddcd0[_0xdda7('0x17')](0x194);}return _0x39cc78;};}function handleError(_0x15ccbd,_0x70c05d){_0x70c05d=_0x70c05d||0x1f4;return function(_0x5d85e1){logger[_0xdda7('0x27')](_0x5d85e1[_0xdda7('0x28')]);if(_0x5d85e1['name']){delete _0x5d85e1['name'];}_0x15ccbd[_0xdda7('0x18')](_0x70c05d)[_0xdda7('0x29')](_0x5d85e1);};}exports['index']=function(_0x2d2c9f,_0x1cdccd){var _0x1b516c={},_0x5122b4={},_0x14fb92={'count':0x0,'rows':[]};var _0x32e873=_[_0xdda7('0x2a')](db[_0xdda7('0x2b')][_0xdda7('0x2c')],function(_0x5cf606){return{'name':_0x5cf606[_0xdda7('0x2d')],'type':_0x5cf606[_0xdda7('0x2e')][_0xdda7('0x2f')]};});_0x5122b4['model']=_[_0xdda7('0x30')](_[_0xdda7('0x2a')](_0x32e873,'name'),[_0xdda7('0x31')]);_0x5122b4[_0xdda7('0x32')]=_[_0xdda7('0x33')](_0x2d2c9f['query']);_0x5122b4[_0xdda7('0x34')]=_[_0xdda7('0x35')](_0x5122b4[_0xdda7('0x36')],_0x5122b4[_0xdda7('0x32')]);_0x1b516c[_0xdda7('0x37')]=_[_0xdda7('0x35')](_0x5122b4['model'],qs[_0xdda7('0x38')](_0x2d2c9f['query'][_0xdda7('0x38')]));_0x1b516c[_0xdda7('0x37')]=_0x1b516c['attributes'][_0xdda7('0x39')]?_0x1b516c[_0xdda7('0x37')]:_0x5122b4[_0xdda7('0x36')];if(!_0x2d2c9f[_0xdda7('0x32')][_0xdda7('0x3a')](_0xdda7('0x3b'))){_0x1b516c[_0xdda7('0x1c')]=qs[_0xdda7('0x1c')](_0x2d2c9f[_0xdda7('0x32')][_0xdda7('0x1c')]);_0x1b516c[_0xdda7('0x1a')]=qs['offset'](_0x2d2c9f[_0xdda7('0x32')][_0xdda7('0x1a')]);}_0x1b516c[_0xdda7('0x3c')]=qs[_0xdda7('0x3d')](_0x2d2c9f[_0xdda7('0x32')][_0xdda7('0x3d')]);_0x1b516c[_0xdda7('0x3e')]=qs['filters'](_[_0xdda7('0x3f')](_0x2d2c9f[_0xdda7('0x32')],_0x5122b4['filters']),_0x32e873);if(_0x2d2c9f[_0xdda7('0x32')]['filter']){_0x1b516c[_0xdda7('0x3e')]=_[_0xdda7('0x40')](_0x1b516c[_0xdda7('0x3e')],{'$or':_[_0xdda7('0x2a')](_0x32e873,function(_0x49b651){if(_0x49b651[_0xdda7('0x2e')]!==_0xdda7('0x41')){var _0x3e8de3={};_0x3e8de3[_0x49b651[_0xdda7('0x31')]]={'$like':'%'+_0x2d2c9f['query'][_0xdda7('0x42')]+'%'};return _0x3e8de3;}})});}_0x1b516c=_[_0xdda7('0x40')]({},_0x1b516c,_0x2d2c9f['options']);var _0x55f30b={'where':_0x1b516c['where']};return db['CmCustomField']['count'](_0x55f30b)[_0xdda7('0x26')](function(_0x3c3bfd){_0x14fb92[_0xdda7('0x1d')]=_0x3c3bfd;if(_0x2d2c9f['query'][_0xdda7('0x43')]){_0x1b516c['include']=[{'all':!![]}];}return db[_0xdda7('0x2b')][_0xdda7('0x44')](_0x1b516c);})[_0xdda7('0x26')](function(_0x310530){_0x14fb92[_0xdda7('0x45')]=_0x310530;return _0x14fb92;})[_0xdda7('0x26')](respondWithFilteredResult(_0x1cdccd,_0x1b516c))[_0xdda7('0x46')](handleError(_0x1cdccd,null));};exports[_0xdda7('0x47')]=function(_0x4e1f65,_0x535a22){var _0x17c7a8={'raw':!![],'where':{'id':_0x4e1f65[_0xdda7('0x48')]['id']}},_0x582c7d={};_0x582c7d[_0xdda7('0x36')]=_[_0xdda7('0x33')](db[_0xdda7('0x2b')][_0xdda7('0x2c')]);_0x582c7d[_0xdda7('0x32')]=_[_0xdda7('0x33')](_0x4e1f65[_0xdda7('0x32')]);_0x582c7d[_0xdda7('0x34')]=_[_0xdda7('0x35')](_0x582c7d[_0xdda7('0x36')],_0x582c7d[_0xdda7('0x32')]);_0x17c7a8[_0xdda7('0x37')]=_[_0xdda7('0x35')](_0x582c7d['model'],qs[_0xdda7('0x38')](_0x4e1f65[_0xdda7('0x32')][_0xdda7('0x38')]));_0x17c7a8['attributes']=_0x17c7a8[_0xdda7('0x37')][_0xdda7('0x39')]?_0x17c7a8[_0xdda7('0x37')]:_0x582c7d[_0xdda7('0x36')];if(_0x4e1f65[_0xdda7('0x32')][_0xdda7('0x43')]){_0x17c7a8['include']=[{'all':!![]}];}_0x17c7a8=_['merge']({},_0x17c7a8,_0x4e1f65[_0xdda7('0x49')]);return db['CmCustomField'][_0xdda7('0x4a')](_0x17c7a8)['then'](handleEntityNotFound(_0x535a22,null))['then'](respondWithResult(_0x535a22,null))[_0xdda7('0x46')](handleError(_0x535a22,null));};exports['update']=function(_0x52a2cb,_0x2d3257){if(_0x52a2cb[_0xdda7('0x4b')]['id']){delete _0x52a2cb[_0xdda7('0x4b')]['id'];}return db[_0xdda7('0x2b')][_0xdda7('0x4a')]({'where':{'id':_0x52a2cb[_0xdda7('0x48')]['id']}})['then'](handleEntityNotFound(_0x2d3257,null))[_0xdda7('0x26')](saveUpdates(_0x52a2cb[_0xdda7('0x4b')],null))[_0xdda7('0x26')](respondWithResult(_0x2d3257,null))[_0xdda7('0x46')](handleError(_0x2d3257,null));};exports[_0xdda7('0x25')]=function(_0x387fb6,_0x40bf6c){return db[_0xdda7('0x2b')][_0xdda7('0x4a')]({'where':{'id':_0x387fb6[_0xdda7('0x48')]['id']}})['then'](handleEntityNotFound(_0x40bf6c,null))[_0xdda7('0x26')](removeEntity(_0x40bf6c,null))['catch'](handleError(_0x40bf6c,null));};exports['create']=function(_0x41cde1,_0x4853c9){var _0x2ed86f;return db[_0xdda7('0x4c')][_0xdda7('0x4d')](function(_0x5e5b98){return db[_0xdda7('0x2b')][_0xdda7('0x4e')](_0x41cde1[_0xdda7('0x4b')],{'transaction':_0x5e5b98})[_0xdda7('0x26')](function(_0x4c757d){_0x2ed86f=_0x4c757d;var _0x28bcda={'type':db[_0xdda7('0x4f')]['TEXT'],'transaction':_0x5e5b98};switch(_0x41cde1[_0xdda7('0x4b')][_0xdda7('0x2e')]){case _0xdda7('0x50'):_0x28bcda[_0xdda7('0x2e')]=db[_0xdda7('0x4f')][_0xdda7('0x51')];break;case _0xdda7('0x52'):_0x28bcda[_0xdda7('0x2e')]=db['Sequelize']['INTEGER'];break;case'switch':_0x28bcda[_0xdda7('0x2e')]=db[_0xdda7('0x4f')]['BOOLEAN'];_0x28bcda['defaultValue']=![];break;default:}return db[_0xdda7('0x4c')][_0xdda7('0x53')][_0xdda7('0x54')]('cm_contacts',util[_0xdda7('0x55')](_0xdda7('0x56'),_0x2ed86f['id']),_0x28bcda);})['then'](function(){return _0x2ed86f;});})['then'](respondWithResult(_0x4853c9,0xc9))['catch'](handleError(_0x4853c9,null));};
\ No newline at end of file
index 69a7f27..8d2bb41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf542=['path','rimraf','../../config/environment','./cmCustomField.attributes','exports','define','CmCustomField','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x545a16,_0x250b00){var _0x5cb9e9=function(_0x538e44){while(--_0x538e44){_0x545a16['push'](_0x545a16['shift']());}};_0x5cb9e9(++_0x250b00);}(_0xf542,0xd9));var _0x2f54=function(_0x430c83,_0x535cfb){_0x430c83=_0x430c83-0x0;var _0x5e33ae=_0xf542[_0x430c83];return _0x5e33ae;};'use strict';var _=require(_0x2f54('0x0'));var util=require(_0x2f54('0x1'));var logger=require(_0x2f54('0x2'))(_0x2f54('0x3'));var moment=require(_0x2f54('0x4'));var BPromise=require(_0x2f54('0x5'));var rp=require(_0x2f54('0x6'));var fs=require('fs');var path=require(_0x2f54('0x7'));var rimraf=require(_0x2f54('0x8'));var config=require(_0x2f54('0x9'));var attributes=require(_0x2f54('0xa'));module[_0x2f54('0xb')]=function(_0x554139,_0x2777da){return _0x554139[_0x2f54('0xc')](_0x2f54('0xd'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x61ef=['define','util','api','moment','request-promise','path','../../config/environment'];(function(_0x42df6a,_0x373ee1){var _0xc9c7f4=function(_0x2a4503){while(--_0x2a4503){_0x42df6a['push'](_0x42df6a['shift']());}};_0xc9c7f4(++_0x373ee1);}(_0x61ef,0x12e));var _0xf61e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x61ef[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xf61e('0x0'));var logger=require('../../config/logger')(_0xf61e('0x1'));var moment=require(_0xf61e('0x2'));var BPromise=require('bluebird');var rp=require(_0xf61e('0x3'));var fs=require('fs');var path=require(_0xf61e('0x4'));var rimraf=require('rimraf');var config=require(_0xf61e('0x5'));var attributes=require('./cmCustomField.attributes');module['exports']=function(_0x26560b,_0x486b2a){return _0x26560b[_0xf61e('0x6')]('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 99127b3..704745f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc184=['../../config/environment','jayson/promise','client','http','request','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3af72e,_0x48db7b){var _0x581723=function(_0x56e521){while(--_0x56e521){_0x3af72e['push'](_0x3af72e['shift']());}};_0x581723(++_0x48db7b);}(_0xc184,0x12f));var _0x4c18=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0xc184[_0x3826ad];return _0x17b900;};'use strict';var _=require(_0x4c18('0x0'));var util=require('util');var moment=require(_0x4c18('0x1'));var BPromise=require(_0x4c18('0x2'));var rs=require(_0x4c18('0x3'));var fs=require('fs');var Redis=require(_0x4c18('0x4'));var db=require(_0x4c18('0x5'))['db'];var utils=require(_0x4c18('0x6'));var logger=require(_0x4c18('0x7'))(_0x4c18('0x8'));var config=require(_0x4c18('0x9'));var jayson=require(_0x4c18('0xa'));var client=jayson[_0x4c18('0xb')][_0x4c18('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x24277a,_0x2e1c0e,_0x59630f){return new BPromise(function(_0x48c1fe,_0x25f746){return client[_0x4c18('0xd')](_0x24277a,_0x59630f)['then'](function(_0x57bb33){logger[_0x4c18('0xe')](_0x4c18('0xf'),_0x2e1c0e,_0x4c18('0x10'));logger[_0x4c18('0x11')](_0x4c18('0x12'),_0x2e1c0e,_0x4c18('0x10'),JSON[_0x4c18('0x13')](_0x57bb33));if(_0x57bb33[_0x4c18('0x14')]){if(_0x57bb33['error'][_0x4c18('0x15')]===0x1f4){logger[_0x4c18('0x14')](_0x4c18('0xf'),_0x2e1c0e,_0x57bb33[_0x4c18('0x14')][_0x4c18('0x16')]);return _0x25f746(_0x57bb33['error'][_0x4c18('0x16')]);}logger['error'](_0x4c18('0xf'),_0x2e1c0e,_0x57bb33[_0x4c18('0x14')][_0x4c18('0x16')]);return _0x48c1fe(_0x57bb33[_0x4c18('0x14')][_0x4c18('0x16')]);}else{logger[_0x4c18('0xe')](_0x4c18('0xf'),_0x2e1c0e,_0x4c18('0x10'));_0x48c1fe(_0x57bb33['result'][_0x4c18('0x16')]);}})[_0x4c18('0x17')](function(_0x3a278d){logger[_0x4c18('0x14')](_0x4c18('0xf'),_0x2e1c0e,_0x3a278d);_0x25f746(_0x3a278d);});});}
\ No newline at end of file
+var _0xab31=['CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','client','http','request','CmCustomField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x423567,_0x1b732f){var _0x25eefc=function(_0x261248){while(--_0x261248){_0x423567['push'](_0x423567['shift']());}};_0x25eefc(++_0x1b732f);}(_0xab31,0x1d6));var _0x1ab3=function(_0x3165eb,_0x2b1792){_0x3165eb=_0x3165eb-0x0;var _0x234d44=_0xab31[_0x3165eb];return _0x234d44;};'use strict';var _=require(_0x1ab3('0x0'));var util=require(_0x1ab3('0x1'));var moment=require(_0x1ab3('0x2'));var BPromise=require('bluebird');var rs=require(_0x1ab3('0x3'));var fs=require('fs');var Redis=require(_0x1ab3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1ab3('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x1ab3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1ab3('0x7')][_0x1ab3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xa72e44,_0x31a9ff,_0x33d1e9){return new BPromise(function(_0x5f2105,_0x2d649b){return client[_0x1ab3('0x9')](_0xa72e44,_0x33d1e9)['then'](function(_0x44eb80){logger['info'](_0x1ab3('0xa'),_0x31a9ff,_0x1ab3('0xb'));logger[_0x1ab3('0xc')](_0x1ab3('0xd'),_0x31a9ff,_0x1ab3('0xb'),JSON[_0x1ab3('0xe')](_0x44eb80));if(_0x44eb80[_0x1ab3('0xf')]){if(_0x44eb80['error'][_0x1ab3('0x10')]===0x1f4){logger[_0x1ab3('0xf')]('CmCustomField,\x20%s,\x20%s',_0x31a9ff,_0x44eb80[_0x1ab3('0xf')][_0x1ab3('0x11')]);return _0x2d649b(_0x44eb80[_0x1ab3('0xf')][_0x1ab3('0x11')]);}logger['error'](_0x1ab3('0xa'),_0x31a9ff,_0x44eb80[_0x1ab3('0xf')][_0x1ab3('0x11')]);return _0x5f2105(_0x44eb80['error']['message']);}else{logger[_0x1ab3('0x12')](_0x1ab3('0xa'),_0x31a9ff,_0x1ab3('0xb'));_0x5f2105(_0x44eb80[_0x1ab3('0x13')]['message']);}})[_0x1ab3('0x14')](function(_0x39811a){logger[_0x1ab3('0xf')](_0x1ab3('0xa'),_0x31a9ff,_0x39811a);_0x2d649b(_0x39811a);});});}
\ No newline at end of file
index 817cd17..5cb1e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x214f0c,_0x40a90a){var _0x247304=function(_0x4d672d){while(--_0x4d672d){_0x214f0c['push'](_0x214f0c['shift']());}};_0x247304(++_0x40a90a);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3d59fb,_0x4ead73){_0x3d59fb=_0x3d59fb-0x0;var _0xd93df1=_0x7fbe[_0x3d59fb];return _0xd93df1;};'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('0xe')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router['put']('/:id',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x11')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);module[_0xe7fb('0x13')]=router;
\ No newline at end of file
+var _0x194c=['../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3a0585,_0x12062b){var _0xbdc3fc=function(_0x38fba7){while(--_0x38fba7){_0x3a0585['push'](_0x3a0585['shift']());}};_0xbdc3fc(++_0x12062b);}(_0x194c,0x19b));var _0xc194=function(_0x2be75d,_0x6c1aef){_0x2be75d=_0x2be75d-0x0;var _0x3f52aa=_0x194c[_0x2be75d];return _0x3f52aa;};'use strict';var multer=require(_0xc194('0x0'));var util=require(_0xc194('0x1'));var path=require(_0xc194('0x2'));var timeout=require(_0xc194('0x3'));var express=require(_0xc194('0x4'));var router=express[_0xc194('0x5')]();var fs_extra=require(_0xc194('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc194('0x7'));var config=require(_0xc194('0x8'));var controller=require(_0xc194('0x9'));router[_0xc194('0xa')]('/',auth[_0xc194('0xb')](),controller[_0xc194('0xc')]);router[_0xc194('0xa')](_0xc194('0xd'),auth[_0xc194('0xb')](),controller[_0xc194('0xe')]);router['post']('/',auth[_0xc194('0xb')](),controller['create']);router[_0xc194('0xf')](_0xc194('0xd'),auth[_0xc194('0xb')](),controller['update']);router[_0xc194('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xc194('0x11')]);module[_0xc194('0x12')]=router;
\ No newline at end of file
index a8b0818..ce5f614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe6=['contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED'];(function(_0x26efac,_0x21ab8a){var _0x8482e4=function(_0x14db32){while(--_0x14db32){_0x26efac['push'](_0x26efac['shift']());}};_0x8482e4(++_0x21ab8a);}(_0xebe6,0x11f));var _0x6ebe=function(_0x3307bd,_0x256dbf){_0x3307bd=_0x3307bd-0x0;var _0x2561be=_0xebe6[_0x3307bd];return _0x2561be;};'use strict';var moment=require(_0x6ebe('0x0'));var Sequelize=require(_0x6ebe('0x1'));module[_0x6ebe('0x2')]={'phone':{'type':Sequelize[_0x6ebe('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x6ebe('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6ebe('0x5')],'defaultValue':moment()[_0x6ebe('0x6')](_0x6ebe('0x7'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6ebe('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6ebe('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ebe('0x5')]},'priority':{'type':Sequelize[_0x6ebe('0x8')](0x2)[_0x6ebe('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6ebe('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x6ebe('0x8')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x6ebe('0x8')],'unique':_0x6ebe('0xa')},'UserId':{'type':Sequelize[_0x6ebe('0x8')]},'VoiceQueueId':{'type':Sequelize[_0x6ebe('0x8')],'unique':_0x6ebe('0xa')},'CampaignId':{'type':Sequelize[_0x6ebe('0x8')]},'countnosuchnumberretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6ebe('0x8')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x6ebe('0x8')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ebe('0x3')]},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xac68=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','STRING','DATE','UNSIGNED','contactListQueue','moment','exports','BOOLEAN','format'];(function(_0x3c490,_0x45bb10){var _0x44d479=function(_0x1d0225){while(--_0x1d0225){_0x3c490['push'](_0x3c490['shift']());}};_0x44d479(++_0x45bb10);}(_0xac68,0x1be));var _0x8ac6=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0xac68[_0x45fc6a];return _0x14bcfd;};'use strict';var moment=require(_0x8ac6('0x0'));var Sequelize=require('sequelize');module[_0x8ac6('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x8ac6('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x8ac6('0x3')](_0x8ac6('0x4'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x8ac6('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x8ac6('0x6')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x8ac6('0x7')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x8ac6('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x8ac6('0x2')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x8ac6('0x9')},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x8ac6('0x5')]},'VoiceQueueId':{'type':Sequelize[_0x8ac6('0x5')],'unique':_0x8ac6('0x9')},'CampaignId':{'type':Sequelize[_0x8ac6('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x8ac6('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x8ac6('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x8ac6('0x6')]},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index b8243aa..4eb83af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe132=['merge','options','CmHopper','include','findAll','rows','catch','show','params','keys','length','includeAll','body','find','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','updatedAt','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','create','CmHopperAdditionalPhone','end','getVoiceQueues','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','sequelize','literal','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','CmCompany','Company','CmList','List','Queue','LOCK','Contact','dialActive','getOpenContacts','outbound','preview','format','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus','getTimezones','push','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','offset','undefined','limit','count','status','Content-Range','json','update','then','stack','name','index','map','rawAttributes','fieldName','type','filters','intersection','model','query','concat','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$in','$notIn','$like','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','order','sort','where','pick','filter'];(function(_0x208d75,_0x92d742){var _0x382d27=function(_0x3aaba3){while(--_0x3aaba3){_0x208d75['push'](_0x208d75['shift']());}};_0x382d27(++_0x92d742);}(_0xe132,0x162));var _0x2e13=function(_0x7ece9f,_0x33e844){_0x7ece9f=_0x7ece9f-0x0;var _0x1c59b6=_0xe132[_0x7ece9f];return _0x1c59b6;};'use strict';var moment=require(_0x2e13('0x0'));var _=require('lodash');var qs=require(_0x2e13('0x1'));var logger=require(_0x2e13('0x2'))(_0x2e13('0x3'));var shared=require(_0x2e13('0x4'));var db=require(_0x2e13('0x5'))['db'];function respondWithResult(_0x4b87a6,_0x1ae6a9){_0x1ae6a9=_0x1ae6a9||0xc8;return function(_0x3f01fe){if(_0x3f01fe){return _0x4b87a6['status'](_0x1ae6a9)['json'](_0x3f01fe);}};}function respondWithFilteredResult(_0x260dc1,_0x2f9d00){return function(_0x1c670b){if(_0x1c670b){var _0x71f9d3=typeof _0x2f9d00[_0x2e13('0x6')]===_0x2e13('0x7')&&typeof _0x2f9d00[_0x2e13('0x8')]===_0x2e13('0x7');var _0xd031e9=_0x1c670b[_0x2e13('0x9')];var _0x5122a2=_0x71f9d3?0x0:_0x2f9d00[_0x2e13('0x6')];var _0x20fe3e=_0x71f9d3?_0x1c670b[_0x2e13('0x9')]:_0x2f9d00[_0x2e13('0x6')]+_0x2f9d00[_0x2e13('0x8')];var _0x1a871d;if(_0x20fe3e>=_0xd031e9){_0x20fe3e=_0xd031e9;_0x1a871d=0xc8;}else{_0x1a871d=0xce;}_0x260dc1[_0x2e13('0xa')](_0x1a871d);return _0x260dc1['set'](_0x2e13('0xb'),_0x5122a2+'-'+_0x20fe3e+'/'+_0xd031e9)[_0x2e13('0xc')](_0x1c670b);}return null;};}function saveUpdates(_0x320303,_0x299dd3){return function(_0x424e58){if(_0x424e58){return _0x424e58[_0x2e13('0xd')](_0x320303)[_0x2e13('0xe')](function(_0x51f1a3){return _0x51f1a3;});}return null;};}function handleEntityNotFound(_0xb70eb8,_0xea6c20){return function(_0xfaca18){if(!_0xfaca18){_0xb70eb8['sendStatus'](0x194);}return _0xfaca18;};}function handleError(_0x4d7fa3,_0x2a58e5){_0x2a58e5=_0x2a58e5||0x1f4;return function(_0x433bbd){logger['error'](_0x433bbd[_0x2e13('0xf')]);if(_0x433bbd[_0x2e13('0x10')]){delete _0x433bbd[_0x2e13('0x10')];}_0x4d7fa3['status'](_0x2a58e5)['send'](_0x433bbd);};}exports[_0x2e13('0x11')]=function(_0x2c026d,_0x336a10){var _0x3cdefc={},_0x399ce2={},_0x32ce2f={'count':0x0,'rows':[]};var _0x2496ee=_[_0x2e13('0x12')](db['CmHopper'][_0x2e13('0x13')],function(_0x9c37a9){return{'name':_0x9c37a9[_0x2e13('0x14')],'type':_0x9c37a9[_0x2e13('0x15')]['key']};});_0x399ce2['model']=_[_0x2e13('0x12')](_0x2496ee,_0x2e13('0x10'));_0x399ce2['query']=_['keys'](_0x2c026d['query']);_0x399ce2[_0x2e13('0x16')]=_[_0x2e13('0x17')](_0x399ce2[_0x2e13('0x18')],_0x399ce2[_0x2e13('0x19')]);_0x399ce2[_0x2e13('0x16')]=_[_0x2e13('0x1a')](_0x399ce2['filters'],[_0x2e13('0x1b'),_0x2e13('0x1c'),_0x2e13('0x1d'),_0x2e13('0x1e'),_0x2e13('0x1f'),_0x2e13('0x20'),'$ne',_0x2e13('0x21'),_0x2e13('0x22'),'$between','$notBetween',_0x2e13('0x23'),_0x2e13('0x24'),_0x2e13('0x25'),'$notLike',_0x2e13('0x26'),_0x2e13('0x27'),_0x2e13('0x25'),_0x2e13('0x28'),_0x2e13('0x29'),_0x2e13('0x2a'),_0x2e13('0x2b')]);_0x3cdefc[_0x2e13('0x2c')]=_[_0x2e13('0x17')](_0x399ce2[_0x2e13('0x18')],qs[_0x2e13('0x2d')](_0x2c026d[_0x2e13('0x19')][_0x2e13('0x2d')]));_0x3cdefc[_0x2e13('0x2c')]=_0x3cdefc[_0x2e13('0x2c')]['length']?_0x3cdefc[_0x2e13('0x2c')]:_0x399ce2[_0x2e13('0x18')];if(!_0x2c026d[_0x2e13('0x19')]['hasOwnProperty']('nolimit')){_0x3cdefc[_0x2e13('0x8')]=qs[_0x2e13('0x8')](_0x2c026d[_0x2e13('0x19')][_0x2e13('0x8')]);_0x3cdefc[_0x2e13('0x6')]=qs[_0x2e13('0x6')](_0x2c026d['query']['offset']);}_0x3cdefc[_0x2e13('0x2e')]=qs[_0x2e13('0x2f')](_0x2c026d[_0x2e13('0x19')][_0x2e13('0x2f')]);_0x3cdefc[_0x2e13('0x30')]=qs[_0x2e13('0x16')](_[_0x2e13('0x31')](_0x2c026d[_0x2e13('0x19')],_0x399ce2['filters']),_0x2496ee);if(_0x2c026d[_0x2e13('0x19')][_0x2e13('0x32')]){_0x3cdefc[_0x2e13('0x30')]=_[_0x2e13('0x33')](_0x3cdefc[_0x2e13('0x30')],{'$or':_['map'](_0x2496ee,function(_0x28e6de){if(_0x28e6de[_0x2e13('0x15')]!=='VIRTUAL'){var _0x750ee2={};_0x750ee2[_0x28e6de[_0x2e13('0x10')]]={'$like':'%'+_0x2c026d[_0x2e13('0x19')]['filter']+'%'};return _0x750ee2;}})});}_0x3cdefc=_[_0x2e13('0x33')]({},_0x3cdefc,_0x2c026d[_0x2e13('0x34')]);var _0x4bfb50={'where':_0x3cdefc[_0x2e13('0x30')]};return db[_0x2e13('0x35')]['count'](_0x4bfb50)[_0x2e13('0xe')](function(_0x5c17bb){_0x32ce2f[_0x2e13('0x9')]=_0x5c17bb;if(_0x2c026d[_0x2e13('0x19')]['includeAll']){_0x3cdefc[_0x2e13('0x36')]=[{'all':!![]}];}return db[_0x2e13('0x35')][_0x2e13('0x37')](_0x3cdefc);})[_0x2e13('0xe')](function(_0x20ae95){_0x32ce2f[_0x2e13('0x38')]=_0x20ae95;return _0x32ce2f;})[_0x2e13('0xe')](respondWithFilteredResult(_0x336a10,_0x3cdefc))[_0x2e13('0x39')](handleError(_0x336a10,null));};exports[_0x2e13('0x3a')]=function(_0x1cca7f,_0x4ffb30){var _0x24ebb6={'raw':!![],'where':{'id':_0x1cca7f[_0x2e13('0x3b')]['id']}},_0xd2e8ae={};_0xd2e8ae[_0x2e13('0x18')]=_[_0x2e13('0x3c')](db['CmHopper'][_0x2e13('0x13')]);_0xd2e8ae['query']=_[_0x2e13('0x3c')](_0x1cca7f[_0x2e13('0x19')]);_0xd2e8ae['filters']=_[_0x2e13('0x17')](_0xd2e8ae['model'],_0xd2e8ae[_0x2e13('0x19')]);_0x24ebb6[_0x2e13('0x2c')]=_[_0x2e13('0x17')](_0xd2e8ae[_0x2e13('0x18')],qs[_0x2e13('0x2d')](_0x1cca7f['query'][_0x2e13('0x2d')]));_0x24ebb6['attributes']=_0x24ebb6[_0x2e13('0x2c')][_0x2e13('0x3d')]?_0x24ebb6[_0x2e13('0x2c')]:_0xd2e8ae[_0x2e13('0x18')];if(_0x1cca7f[_0x2e13('0x19')][_0x2e13('0x3e')]){_0x24ebb6['include']=[{'all':!![]}];}_0x24ebb6=_['merge']({},_0x24ebb6,_0x1cca7f[_0x2e13('0x34')]);return db[_0x2e13('0x35')]['find'](_0x24ebb6)[_0x2e13('0xe')](handleEntityNotFound(_0x4ffb30,null))[_0x2e13('0xe')](respondWithResult(_0x4ffb30,null))[_0x2e13('0x39')](handleError(_0x4ffb30,null));};exports['create']=function(_0x5c6a9a,_0xd44b46){return db['CmHopper']['create'](_0x5c6a9a[_0x2e13('0x3f')],{})[_0x2e13('0xe')](respondWithResult(_0xd44b46,0xc9))[_0x2e13('0x39')](handleError(_0xd44b46,null));};exports['update']=function(_0x20b444,_0x16bdf2){if(_0x20b444[_0x2e13('0x3f')]['id']){delete _0x20b444[_0x2e13('0x3f')]['id'];}return db['CmHopper'][_0x2e13('0x40')]({'where':{'id':_0x20b444['params']['id']}})[_0x2e13('0xe')](handleEntityNotFound(_0x16bdf2,null))[_0x2e13('0xe')](saveUpdates(_0x20b444[_0x2e13('0x3f')],null))[_0x2e13('0xe')](respondWithResult(_0x16bdf2,null))[_0x2e13('0x39')](handleError(_0x16bdf2,null));};exports[_0x2e13('0x41')]=function(_0x961af7,_0x8e8b86){return db[_0x2e13('0x35')][_0x2e13('0x41')]()['then'](respondWithResult(_0x8e8b86,null))[_0x2e13('0x39')](handleError(_0x8e8b86,null));};exports[_0x2e13('0x42')]=function(_0x4780b7,_0x1d13ec){var _0x426e75;var _0xcc5495=_0x4780b7[_0x2e13('0x3b')]['id'];return db[_0x2e13('0x35')][_0x2e13('0x40')]({'where':{'id':_0x4780b7[_0x2e13('0x3b')]['id']}})[_0x2e13('0xe')](handleEntityNotFound(_0x1d13ec,null))[_0x2e13('0xe')](function(_0x532689){if(_0x532689){return _0x532689[_0x2e13('0x42')]()[_0x2e13('0xe')](function(_0x39cef0){return _0x39cef0;});}})[_0x2e13('0xe')](function(_0x13374a){_0x426e75=_0x13374a;if(_0x13374a){if(_0x13374a[_0x2e13('0x43')]||_0x13374a['CampaignId']){return db[_0x13374a[_0x2e13('0x43')]?_0x2e13('0x44'):_0x2e13('0x45')][_0x2e13('0x40')]({'where':{'id':_0x13374a[_0x2e13('0x43')]?_0x13374a[_0x2e13('0x43')]:_0x13374a[_0x2e13('0x46')]},'attributes':['id','name'],'raw':!![]});}}})[_0x2e13('0xe')](function(_0x3a1a9c){var _0x252b14={};if(_0x3a1a9c){_['merge'](_0x252b14,_[_0x2e13('0x47')](_0x426e75[_0x2e13('0x48')],['createdAt',_0x2e13('0x49'),'id']));_0x252b14['state']=0x15;_0x252b14['statedesc']=_0x2e13('0x4a');_0x252b14[_0x2e13('0x4b')]=_0x3a1a9c[_0x2e13('0x10')];_0x252b14[_0x2e13('0x4c')]=_0x4780b7[_0x2e13('0x4d')]['name'];_0x252b14[_0x2e13('0x4e')]=_0x4780b7['user']['id'];_0x252b14['deleted']=!![];_0x252b14[_0x2e13('0x4f')]=moment()['format'](_0x2e13('0x50'));_0x252b14[_0x2e13('0x51')]=_0x426e75[_0x2e13('0x52')];_0x252b14[_0x2e13('0x53')]=_0x426e75[_0x2e13('0x43')]?_0x2e13('0x54'):_0x2e13('0x55');return db[_0x2e13('0x56')]['find']({'where':{'id':_0x252b14[_0x2e13('0x57')]},'attributes':[_0x2e13('0x58'),'lastName']})['then'](function(_0xbfecec){if(!_[_0x2e13('0x59')](_0x1d13ec)&&!_[_0x2e13('0x59')](_0xbfecec['firstName'])){_0x252b14[_0x2e13('0x5a')]=_0xbfecec['firstName'];if(!_[_0x2e13('0x59')](_0xbfecec[_0x2e13('0x5b')])){_0x252b14[_0x2e13('0x5a')]+='\x20'+_0xbfecec['lastName'];}}})[_0x2e13('0x5c')](function(){return db['CmHopperFinal'][_0x2e13('0x5d')](_0x252b14);});}})[_0x2e13('0xe')](function(_0x3de3fc){return db[_0x2e13('0x5e')][_0x2e13('0x42')]({'where':{'CmHopperId':_0xcc5495}});})[_0x2e13('0xe')](function(){return _0x1d13ec['status'](0xcc)[_0x2e13('0x5f')]();})[_0x2e13('0x39')](handleError(_0x1d13ec,null));};exports['getPreview']=function(_0x591065,_0x446643){var _0x1c8862=[];return db['CmContact']['describe']()[_0x2e13('0xe')](function(_0x4b0481){_0x1c8862=_[_0x2e13('0x3c')](_0x4b0481);return _0x591065[_0x2e13('0x4d')][_0x2e13('0x60')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x2e13('0x61'),_0x2e13('0x62')],'raw':!![]});})[_0x2e13('0xe')](function(_0x52ee42){if(_0x52ee42&&_0x52ee42[_0x2e13('0x3d')]){return db['sequelize'][_0x2e13('0x63')](function(_0x571fd9){var _0x5d09c4={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x2e13('0x50'))},'VoiceQueueId':{'$in':_[_0x2e13('0x12')](_0x52ee42,'id')},'$or':[{'UserId':null},{'UserId':_0x591065[_0x2e13('0x4d')]['id']}]};var _0x1a1cc0={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x52ee42)[_0x2e13('0x32')]([_0x2e13('0x62'),0x0])[_0x2e13('0x12')]('id')[_0x2e13('0x64')]()},'$or':[{'UserId':null},{'UserId':_0x591065['user']['id']}]};var _0x1ac435={'$or':[_0x5d09c4,_0x1a1cc0]};var _0x2c75b2=[];if(_0x591065[_0x2e13('0x3f')][_0x2e13('0x65')]&&_0x591065[_0x2e13('0x3f')]['direction']===_0x2e13('0x66')){if(!_[_0x2e13('0x67')](_0x591065['body'][_0x2e13('0x68')])){_0x1ac435['id']={'$in':_0x591065['body'][_0x2e13('0x68')]};}_0x2c75b2=[[_0x2e13('0x69'),_0x2e13('0x6a')],[_0x2e13('0x6b'),_0x52ee42[0x0][_0x2e13('0x61')]===_0x2e13('0x6a')?'DESC':_0x2e13('0x6a')],db[_0x2e13('0x6c')][_0x2e13('0x6d')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x2e13('0x6e')]];}else{if(!_[_0x2e13('0x67')](_0x591065[_0x2e13('0x3f')][_0x2e13('0x68')])){_0x1ac435['id']={'$notIn':_0x591065['body'][_0x2e13('0x68')]};}_0x2c75b2=[[_0x2e13('0x69'),_0x2e13('0x6e')],[_0x2e13('0x6b'),_0x52ee42[0x0]['dialOrderByScheduledAt']],db[_0x2e13('0x6c')][_0x2e13('0x6d')](_0x2e13('0x6f')),['id','ASC']];}return db[_0x2e13('0x35')][_0x2e13('0x70')]({'attributes':['id',_0x2e13('0x71'),_0x2e13('0x52'),_0x2e13('0x72')],'where':_0x1ac435,'order':_0x2c75b2,'transaction':_0x571fd9,'lock':_0x571fd9['LOCK'][_0x2e13('0x73')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x1c8862,'include':[{'model':db[_0x2e13('0x74')],'as':_0x2e13('0x75'),'attributes':['id',_0x2e13('0x10')]}]},{'model':db[_0x2e13('0x76')],'as':_0x2e13('0x77'),'attributes':['id','name']},{'model':db[_0x2e13('0x44')],'as':_0x2e13('0x78'),'attributes':['id',_0x2e13('0x10'),'dialActive']}]})[_0x2e13('0xe')](function(_0xec435e){if(_0xec435e){return _0xec435e[_0x2e13('0xd')]({'UserId':_0x591065[_0x2e13('0x4d')]['id']},{'transaction':_0x571fd9});}});});}})['then'](handleEntityNotFound(_0x446643,null))[_0x2e13('0xe')](respondWithResult(_0x446643,null))['catch'](handleError(_0x446643,null));};exports['getPreviewRecall']=function(_0x22f345,_0x27ccff,_0xa7c844){var _0x5e110e=[];var _0x101e3b=_0x22f345[_0x2e13('0x3b')]['id'];var _0x55f9ae=_0x22f345[_0x2e13('0x4d')]['id'];return db[_0x2e13('0x56')][_0x2e13('0x41')]()[_0x2e13('0xe')](function(_0x5f50d3){_0x5e110e=_[_0x2e13('0x3c')](_0x5f50d3);return db['sequelize'][_0x2e13('0x63')](function(_0x94d5af){const _0x33e627={'id':_0x101e3b};return db[_0x2e13('0x35')][_0x2e13('0x70')]({'attributes':['id','scheduledat',_0x2e13('0x72')],'where':_0x33e627,'transaction':_0x94d5af,'lock':_0x94d5af[_0x2e13('0x79')][_0x2e13('0x73')],'include':[{'model':db['CmContact'],'as':_0x2e13('0x7a'),'attributes':_0x5e110e,'include':[{'model':db['CmCompany'],'as':_0x2e13('0x75'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0x2e13('0x77'),'attributes':['id',_0x2e13('0x10')]},{'model':db[_0x2e13('0x44')],'as':_0x2e13('0x78'),'attributes':['id',_0x2e13('0x10'),_0x2e13('0x7b')]}]})[_0x2e13('0xe')](function(_0x5c8f68){if(_0x5c8f68){return _0x5c8f68[_0x2e13('0xd')]({'UserId':_0x55f9ae},{'transaction':_0x94d5af});}});});})[_0x2e13('0xe')](handleEntityNotFound(_0x27ccff,null))['then'](respondWithResult(_0x27ccff,null))[_0x2e13('0x39')](handleError(_0x27ccff,null));};exports[_0x2e13('0x7c')]=function(_0x466858,_0x2f79e2){return _0x466858[_0x2e13('0x4d')][_0x2e13('0x60')]({'where':{'type':_0x2e13('0x7d'),'dialActive':!![],'dialMethod':_0x2e13('0x7e')},'attributes':['id'],'raw':!![]})[_0x2e13('0xe')](function(_0x3be5a8){if(_0x3be5a8&&_0x3be5a8[_0x2e13('0x3d')]){return db['CmHopper']['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x2e13('0x7f')](_0x2e13('0x50'))},'VoiceQueueId':{'$in':_[_0x2e13('0x12')](_0x3be5a8,'id')},'$or':[{'UserId':null},{'UserId':_0x466858[_0x2e13('0x4d')]['id']}]}});}return 0x0;})[_0x2e13('0xe')](function(_0x29f599){if(!_[_0x2e13('0x59')](_0x29f599)&&_['isNumber'](_0x29f599)){return _0x2f79e2[_0x2e13('0xa')](0xc8)[_0x2e13('0xc')]({'contacts':_0x29f599});}else{logger['error'](_0x2e13('0x80'),_0x2e13('0x7c'),0x194,_0x2e13('0x81'));_0x2f79e2[_0x2e13('0x82')](0x194);}})[_0x2e13('0x39')](handleError(_0x2f79e2,null));};exports[_0x2e13('0x83')]=function(_0x373100,_0x4c897b){var _0x2ee8d0=shared['timezones'];var _0x1369ff=[];_[_0x2e13('0x12')](_0x2ee8d0,function(_0x42be7d){_0x1369ff[_0x2e13('0x84')]({'id':_0x42be7d['name'],'name':_0x42be7d[_0x2e13('0x10')],'utcOffset':_0x42be7d['utcOffset']});});return _0x4c897b['status'](0xc8)[_0x2e13('0xc')]({'tz':_0x1369ff});};exports[_0x2e13('0x85')]=function(_0x47d8fe,_0x12fbe3){var _0x56a094=shared[_0x2e13('0x86')];var _0x5d1927={};if(!_['isNil'](_0x56a094[_0x47d8fe[_0x2e13('0x3f')]['id']]))_0x5d1927=_0x56a094[_0x47d8fe[_0x2e13('0x3f')]['id']];return _0x12fbe3[_0x2e13('0xa')](0xc8)['json'](_0x5d1927);};
\ No newline at end of file
+var _0xed1f=['$lte','$eq','$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$contains','attributes','fields','length','hasOwnProperty','order','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','create','body','update','params','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','CmHopperAdditionalPhone','getVoiceQueues','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','List','Queue','dialActive','getPreviewRecall','findOne','CmList','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus','getTimezones','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','then','error','name','send','CmHopper','rawAttributes','fieldName','type','model','map','query','intersection','concat','$and','$or','$gt','$gte','$lt'];(function(_0x1f08e3,_0x4afd87){var _0x85cb4=function(_0x3ebe48){while(--_0x3ebe48){_0x1f08e3['push'](_0x1f08e3['shift']());}};_0x85cb4(++_0x4afd87);}(_0xed1f,0x6a));var _0xfed1=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xed1f[_0x5c2e3e];return _0x53f64a;};'use strict';var moment=require(_0xfed1('0x0'));var _=require(_0xfed1('0x1'));var qs=require(_0xfed1('0x2'));var logger=require(_0xfed1('0x3'))(_0xfed1('0x4'));var shared=require(_0xfed1('0x5'));var db=require(_0xfed1('0x6'))['db'];function respondWithResult(_0xa68587,_0x2209b3){_0x2209b3=_0x2209b3||0xc8;return function(_0x45c3c1){if(_0x45c3c1){return _0xa68587[_0xfed1('0x7')](_0x2209b3)[_0xfed1('0x8')](_0x45c3c1);}};}function respondWithFilteredResult(_0x3d6706,_0x42751d){return function(_0x380e18){if(_0x380e18){var _0x612b38=typeof _0x42751d[_0xfed1('0x9')]===_0xfed1('0xa')&&typeof _0x42751d['limit']===_0xfed1('0xa');var _0x305d19=_0x380e18['count'];var _0x1414be=_0x612b38?0x0:_0x42751d[_0xfed1('0x9')];var _0x4a564e=_0x612b38?_0x380e18[_0xfed1('0xb')]:_0x42751d['offset']+_0x42751d[_0xfed1('0xc')];var _0x234f4e;if(_0x4a564e>=_0x305d19){_0x4a564e=_0x305d19;_0x234f4e=0xc8;}else{_0x234f4e=0xce;}_0x3d6706['status'](_0x234f4e);return _0x3d6706['set'](_0xfed1('0xd'),_0x1414be+'-'+_0x4a564e+'/'+_0x305d19)[_0xfed1('0x8')](_0x380e18);}return null;};}function saveUpdates(_0x569a6e,_0x17f4fe){return function(_0x5a3469){if(_0x5a3469){return _0x5a3469['update'](_0x569a6e)[_0xfed1('0xe')](function(_0x397af9){return _0x397af9;});}return null;};}function handleEntityNotFound(_0x532537,_0x2dde3a){return function(_0x5b9455){if(!_0x5b9455){_0x532537['sendStatus'](0x194);}return _0x5b9455;};}function handleError(_0xde25db,_0x39aa0c){_0x39aa0c=_0x39aa0c||0x1f4;return function(_0x1fbb7a){logger[_0xfed1('0xf')](_0x1fbb7a['stack']);if(_0x1fbb7a[_0xfed1('0x10')]){delete _0x1fbb7a['name'];}_0xde25db[_0xfed1('0x7')](_0x39aa0c)[_0xfed1('0x11')](_0x1fbb7a);};}exports['index']=function(_0x3d0517,_0xa72a20){var _0x5c0d9f={},_0x59509b={},_0x586ea6={'count':0x0,'rows':[]};var _0x1e5afb=_['map'](db[_0xfed1('0x12')][_0xfed1('0x13')],function(_0x51a860){return{'name':_0x51a860[_0xfed1('0x14')],'type':_0x51a860[_0xfed1('0x15')]['key']};});_0x59509b[_0xfed1('0x16')]=_[_0xfed1('0x17')](_0x1e5afb,_0xfed1('0x10'));_0x59509b[_0xfed1('0x18')]=_['keys'](_0x3d0517[_0xfed1('0x18')]);_0x59509b['filters']=_[_0xfed1('0x19')](_0x59509b[_0xfed1('0x16')],_0x59509b[_0xfed1('0x18')]);_0x59509b['filters']=_[_0xfed1('0x1a')](_0x59509b['filters'],[_0xfed1('0x1b'),_0xfed1('0x1c'),_0xfed1('0x1d'),_0xfed1('0x1e'),_0xfed1('0x1f'),_0xfed1('0x20'),'$ne',_0xfed1('0x21'),_0xfed1('0x22'),'$between',_0xfed1('0x23'),_0xfed1('0x24'),_0xfed1('0x25'),_0xfed1('0x26'),_0xfed1('0x27'),_0xfed1('0x28'),'$notILike',_0xfed1('0x26'),'$overlap',_0xfed1('0x29'),'$contained','$any']);_0x5c0d9f[_0xfed1('0x2a')]=_[_0xfed1('0x19')](_0x59509b[_0xfed1('0x16')],qs['fields'](_0x3d0517[_0xfed1('0x18')][_0xfed1('0x2b')]));_0x5c0d9f[_0xfed1('0x2a')]=_0x5c0d9f[_0xfed1('0x2a')][_0xfed1('0x2c')]?_0x5c0d9f[_0xfed1('0x2a')]:_0x59509b['model'];if(!_0x3d0517[_0xfed1('0x18')][_0xfed1('0x2d')]('nolimit')){_0x5c0d9f['limit']=qs[_0xfed1('0xc')](_0x3d0517[_0xfed1('0x18')][_0xfed1('0xc')]);_0x5c0d9f[_0xfed1('0x9')]=qs[_0xfed1('0x9')](_0x3d0517['query'][_0xfed1('0x9')]);}_0x5c0d9f[_0xfed1('0x2e')]=qs[_0xfed1('0x2f')](_0x3d0517[_0xfed1('0x18')][_0xfed1('0x2f')]);_0x5c0d9f['where']=qs[_0xfed1('0x30')](_['pick'](_0x3d0517[_0xfed1('0x18')],_0x59509b[_0xfed1('0x30')]),_0x1e5afb);if(_0x3d0517[_0xfed1('0x18')][_0xfed1('0x31')]){_0x5c0d9f[_0xfed1('0x32')]=_[_0xfed1('0x33')](_0x5c0d9f[_0xfed1('0x32')],{'$or':_[_0xfed1('0x17')](_0x1e5afb,function(_0x4d6aa3){if(_0x4d6aa3[_0xfed1('0x15')]!==_0xfed1('0x34')){var _0x45f106={};_0x45f106[_0x4d6aa3[_0xfed1('0x10')]]={'$like':'%'+_0x3d0517['query']['filter']+'%'};return _0x45f106;}})});}_0x5c0d9f=_[_0xfed1('0x33')]({},_0x5c0d9f,_0x3d0517[_0xfed1('0x35')]);var _0x1d06af={'where':_0x5c0d9f[_0xfed1('0x32')]};return db[_0xfed1('0x12')][_0xfed1('0xb')](_0x1d06af)[_0xfed1('0xe')](function(_0x2f183c){_0x586ea6['count']=_0x2f183c;if(_0x3d0517['query'][_0xfed1('0x36')]){_0x5c0d9f[_0xfed1('0x37')]=[{'all':!![]}];}return db['CmHopper'][_0xfed1('0x38')](_0x5c0d9f);})[_0xfed1('0xe')](function(_0x3b0973){_0x586ea6[_0xfed1('0x39')]=_0x3b0973;return _0x586ea6;})[_0xfed1('0xe')](respondWithFilteredResult(_0xa72a20,_0x5c0d9f))[_0xfed1('0x3a')](handleError(_0xa72a20,null));};exports[_0xfed1('0x3b')]=function(_0x4118d4,_0x3c27de){var _0x5f3e1f={'raw':!![],'where':{'id':_0x4118d4['params']['id']}},_0x4eec55={};_0x4eec55[_0xfed1('0x16')]=_[_0xfed1('0x3c')](db[_0xfed1('0x12')]['rawAttributes']);_0x4eec55[_0xfed1('0x18')]=_['keys'](_0x4118d4[_0xfed1('0x18')]);_0x4eec55[_0xfed1('0x30')]=_[_0xfed1('0x19')](_0x4eec55['model'],_0x4eec55[_0xfed1('0x18')]);_0x5f3e1f[_0xfed1('0x2a')]=_[_0xfed1('0x19')](_0x4eec55['model'],qs[_0xfed1('0x2b')](_0x4118d4['query'][_0xfed1('0x2b')]));_0x5f3e1f[_0xfed1('0x2a')]=_0x5f3e1f[_0xfed1('0x2a')][_0xfed1('0x2c')]?_0x5f3e1f[_0xfed1('0x2a')]:_0x4eec55[_0xfed1('0x16')];if(_0x4118d4[_0xfed1('0x18')][_0xfed1('0x36')]){_0x5f3e1f[_0xfed1('0x37')]=[{'all':!![]}];}_0x5f3e1f=_['merge']({},_0x5f3e1f,_0x4118d4[_0xfed1('0x35')]);return db[_0xfed1('0x12')][_0xfed1('0x3d')](_0x5f3e1f)['then'](handleEntityNotFound(_0x3c27de,null))['then'](respondWithResult(_0x3c27de,null))[_0xfed1('0x3a')](handleError(_0x3c27de,null));};exports[_0xfed1('0x3e')]=function(_0x46f9d3,_0xf39b8c){return db[_0xfed1('0x12')][_0xfed1('0x3e')](_0x46f9d3[_0xfed1('0x3f')],{})[_0xfed1('0xe')](respondWithResult(_0xf39b8c,0xc9))[_0xfed1('0x3a')](handleError(_0xf39b8c,null));};exports[_0xfed1('0x40')]=function(_0x61f65b,_0x1db6dc){if(_0x61f65b['body']['id']){delete _0x61f65b[_0xfed1('0x3f')]['id'];}return db[_0xfed1('0x12')][_0xfed1('0x3d')]({'where':{'id':_0x61f65b[_0xfed1('0x41')]['id']}})[_0xfed1('0xe')](handleEntityNotFound(_0x1db6dc,null))[_0xfed1('0xe')](saveUpdates(_0x61f65b['body'],null))[_0xfed1('0xe')](respondWithResult(_0x1db6dc,null))[_0xfed1('0x3a')](handleError(_0x1db6dc,null));};exports[_0xfed1('0x42')]=function(_0x4afcc1,_0x22874a){return db[_0xfed1('0x12')][_0xfed1('0x42')]()[_0xfed1('0xe')](respondWithResult(_0x22874a,null))['catch'](handleError(_0x22874a,null));};exports[_0xfed1('0x43')]=function(_0x2a346e,_0x2c32af){var _0x42761f;var _0x14745e=_0x2a346e[_0xfed1('0x41')]['id'];return db[_0xfed1('0x12')][_0xfed1('0x3d')]({'where':{'id':_0x2a346e[_0xfed1('0x41')]['id']}})[_0xfed1('0xe')](handleEntityNotFound(_0x2c32af,null))[_0xfed1('0xe')](function(_0xb3a534){if(_0xb3a534){return _0xb3a534[_0xfed1('0x43')]()[_0xfed1('0xe')](function(_0x33c77a){return _0x33c77a;});}})[_0xfed1('0xe')](function(_0xd1f984){_0x42761f=_0xd1f984;if(_0xd1f984){if(_0xd1f984[_0xfed1('0x44')]||_0xd1f984['CampaignId']){return db[_0xd1f984['VoiceQueueId']?_0xfed1('0x45'):_0xfed1('0x46')][_0xfed1('0x3d')]({'where':{'id':_0xd1f984[_0xfed1('0x44')]?_0xd1f984['VoiceQueueId']:_0xd1f984[_0xfed1('0x47')]},'attributes':['id',_0xfed1('0x10')],'raw':!![]});}}})['then'](function(_0x4f393c){var _0x49f696={};if(_0x4f393c){_[_0xfed1('0x33')](_0x49f696,_[_0xfed1('0x48')](_0x42761f[_0xfed1('0x49')],[_0xfed1('0x4a'),_0xfed1('0x4b'),'id']));_0x49f696[_0xfed1('0x4c')]=0x15;_0x49f696[_0xfed1('0x4d')]=_0xfed1('0x4e');_0x49f696[_0xfed1('0x4f')]=_0x4f393c[_0xfed1('0x10')];_0x49f696['membername']=_0x2a346e['user'][_0xfed1('0x10')];_0x49f696[_0xfed1('0x50')]=_0x2a346e[_0xfed1('0x51')]['id'];_0x49f696[_0xfed1('0x4e')]=!![];_0x49f696[_0xfed1('0x52')]=moment()[_0xfed1('0x53')](_0xfed1('0x54'));_0x49f696[_0xfed1('0x55')]=_0x42761f[_0xfed1('0x56')];_0x49f696[_0xfed1('0x57')]=_0x42761f[_0xfed1('0x44')]?_0xfed1('0x58'):_0xfed1('0x59');return db[_0xfed1('0x5a')][_0xfed1('0x3d')]({'where':{'id':_0x49f696[_0xfed1('0x5b')]},'attributes':[_0xfed1('0x5c'),'lastName']})['then'](function(_0x2fe019){if(!_[_0xfed1('0x5d')](_0x2c32af)&&!_[_0xfed1('0x5d')](_0x2fe019[_0xfed1('0x5c')])){_0x49f696[_0xfed1('0x5e')]=_0x2fe019[_0xfed1('0x5c')];if(!_[_0xfed1('0x5d')](_0x2fe019[_0xfed1('0x5f')])){_0x49f696[_0xfed1('0x5e')]+='\x20'+_0x2fe019[_0xfed1('0x5f')];}}})[_0xfed1('0x60')](function(){return db[_0xfed1('0x61')][_0xfed1('0x3e')](_0x49f696);});}})[_0xfed1('0xe')](function(_0x59ecc4){return db[_0xfed1('0x62')]['destroy']({'where':{'CmHopperId':_0x14745e}});})['then'](function(){return _0x2c32af[_0xfed1('0x7')](0xcc)['end']();})[_0xfed1('0x3a')](handleError(_0x2c32af,null));};exports['getPreview']=function(_0x390fc0,_0x8e29d1){var _0x53f0ab=[];return db[_0xfed1('0x5a')][_0xfed1('0x42')]()['then'](function(_0x29b51e){_0x53f0ab=_[_0xfed1('0x3c')](_0x29b51e);return _0x390fc0[_0xfed1('0x51')][_0xfed1('0x63')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xfed1('0x64')},'attributes':['id',_0xfed1('0x65'),_0xfed1('0x66')],'raw':!![]});})[_0xfed1('0xe')](function(_0x23347a){if(_0x23347a&&_0x23347a[_0xfed1('0x2c')]){return db[_0xfed1('0x67')][_0xfed1('0x68')](function(_0x5c043d){var _0x2d66ec={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xfed1('0x53')](_0xfed1('0x54'))},'VoiceQueueId':{'$in':_[_0xfed1('0x17')](_0x23347a,'id')},'$or':[{'UserId':null},{'UserId':_0x390fc0[_0xfed1('0x51')]['id']}]};var _0x3d7be2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x23347a)['filter'](['dialPreviewAutoRecallMe',0x0])['map']('id')[_0xfed1('0x69')]()},'$or':[{'UserId':null},{'UserId':_0x390fc0[_0xfed1('0x51')]['id']}]};var _0x3aea22={'$or':[_0x2d66ec,_0x3d7be2]};var _0x2fb9b2=[];if(_0x390fc0['body'][_0xfed1('0x6a')]&&_0x390fc0['body'][_0xfed1('0x6a')]===_0xfed1('0x6b')){if(!_[_0xfed1('0x6c')](_0x390fc0[_0xfed1('0x3f')][_0xfed1('0x6d')])){_0x3aea22['id']={'$in':_0x390fc0['body'][_0xfed1('0x6d')]};}_0x2fb9b2=[[_0xfed1('0x6e'),_0xfed1('0x6f')],['scheduledAt',_0x23347a[0x0][_0xfed1('0x65')]===_0xfed1('0x6f')?_0xfed1('0x70'):_0xfed1('0x6f')],db['sequelize'][_0xfed1('0x71')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xfed1('0x70')]];}else{if(!_[_0xfed1('0x6c')](_0x390fc0['body']['hopperIds'])){_0x3aea22['id']={'$notIn':_0x390fc0[_0xfed1('0x3f')][_0xfed1('0x6d')]};}_0x2fb9b2=[[_0xfed1('0x6e'),_0xfed1('0x70')],['scheduledAt',_0x23347a[0x0][_0xfed1('0x65')]],db[_0xfed1('0x67')][_0xfed1('0x71')](_0xfed1('0x72')),['id',_0xfed1('0x6f')]];}return db[_0xfed1('0x12')]['findOne']({'attributes':['id',_0xfed1('0x73'),_0xfed1('0x56'),'recallme'],'where':_0x3aea22,'order':_0x2fb9b2,'transaction':_0x5c043d,'lock':_0x5c043d[_0xfed1('0x74')][_0xfed1('0x75')],'include':[{'model':db[_0xfed1('0x5a')],'as':_0xfed1('0x76'),'attributes':_0x53f0ab,'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x78'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0xfed1('0x79'),'attributes':['id','name']},{'model':db[_0xfed1('0x45')],'as':_0xfed1('0x7a'),'attributes':['id',_0xfed1('0x10'),_0xfed1('0x7b')]}]})[_0xfed1('0xe')](function(_0x179f85){if(_0x179f85){return _0x179f85[_0xfed1('0x40')]({'UserId':_0x390fc0[_0xfed1('0x51')]['id']},{'transaction':_0x5c043d});}});});}})[_0xfed1('0xe')](handleEntityNotFound(_0x8e29d1,null))[_0xfed1('0xe')](respondWithResult(_0x8e29d1,null))['catch'](handleError(_0x8e29d1,null));};exports[_0xfed1('0x7c')]=function(_0xef7276,_0x56421e,_0x544605){var _0x2d6692=[];var _0x51994d=_0xef7276[_0xfed1('0x41')]['id'];var _0x1497fb=_0xef7276[_0xfed1('0x51')]['id'];return db['CmContact'][_0xfed1('0x42')]()[_0xfed1('0xe')](function(_0x368dd9){_0x2d6692=_[_0xfed1('0x3c')](_0x368dd9);return db[_0xfed1('0x67')]['transaction'](function(_0x287b63){const _0x34f590={'id':_0x51994d};return db[_0xfed1('0x12')][_0xfed1('0x7d')]({'attributes':['id',_0xfed1('0x73'),'recallme'],'where':_0x34f590,'transaction':_0x287b63,'lock':_0x287b63[_0xfed1('0x74')][_0xfed1('0x75')],'include':[{'model':db[_0xfed1('0x5a')],'as':_0xfed1('0x76'),'attributes':_0x2d6692,'include':[{'model':db[_0xfed1('0x77')],'as':_0xfed1('0x78'),'attributes':['id',_0xfed1('0x10')]}]},{'model':db[_0xfed1('0x7e')],'as':_0xfed1('0x79'),'attributes':['id',_0xfed1('0x10')]},{'model':db['VoiceQueue'],'as':_0xfed1('0x7a'),'attributes':['id',_0xfed1('0x10'),_0xfed1('0x7b')]}]})[_0xfed1('0xe')](function(_0x194f42){if(_0x194f42){return _0x194f42['update']({'UserId':_0x1497fb},{'transaction':_0x287b63});}});});})[_0xfed1('0xe')](handleEntityNotFound(_0x56421e,null))[_0xfed1('0xe')](respondWithResult(_0x56421e,null))[_0xfed1('0x3a')](handleError(_0x56421e,null));};exports[_0xfed1('0x7f')]=function(_0x221ed8,_0xb76860){return _0x221ed8[_0xfed1('0x51')][_0xfed1('0x63')]({'where':{'type':_0xfed1('0x80'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0xc3b72a){if(_0xc3b72a&&_0xc3b72a['length']){return db[_0xfed1('0x12')][_0xfed1('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xfed1('0x53')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0xc3b72a,'id')},'$or':[{'UserId':null},{'UserId':_0x221ed8[_0xfed1('0x51')]['id']}]}});}return 0x0;})['then'](function(_0x173790){if(!_['isNil'](_0x173790)&&_[_0xfed1('0x81')](_0x173790)){return _0xb76860[_0xfed1('0x7')](0xc8)[_0xfed1('0x8')]({'contacts':_0x173790});}else{logger[_0xfed1('0xf')](_0xfed1('0x82'),'getOpenContacts',0x194,_0xfed1('0x83'));_0xb76860[_0xfed1('0x84')](0x194);}})['catch'](handleError(_0xb76860,null));};exports[_0xfed1('0x85')]=function(_0x130b1f,_0x4f879d){var _0x12ce90=shared[_0xfed1('0x86')];var _0x3668c2=[];_['map'](_0x12ce90,function(_0x473d4a){_0x3668c2[_0xfed1('0x87')]({'id':_0x473d4a['name'],'name':_0x473d4a[_0xfed1('0x10')],'utcOffset':_0x473d4a[_0xfed1('0x88')]});});return _0x4f879d[_0xfed1('0x7')](0xc8)['json']({'tz':_0x3668c2});};exports[_0xfed1('0x89')]=function(_0x36d7de,_0x49f600){var _0x48172c=shared[_0xfed1('0x86')];var _0x33755c={};if(!_[_0xfed1('0x5d')](_0x48172c[_0x36d7de[_0xfed1('0x3f')]['id']]))_0x33755c=_0x48172c[_0x36d7de[_0xfed1('0x3f')]['id']];return _0x49f600[_0xfed1('0x7')](0xc8)[_0xfed1('0x8')](_0x33755c);};
\ No newline at end of file
index 2cf0111..eafa02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','scheduledat','priority','lodash','util','../../config/logger'];(function(_0x3c9f99,_0x4379cd){var _0x29abfc=function(_0x4d72be){while(--_0x4d72be){_0x3c9f99['push'](_0x3c9f99['shift']());}};_0x29abfc(++_0x4379cd);}(_0xe3da,0x1cd));var _0xae3d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe3da[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0xa9a1a,_0xa54808){return _0xa9a1a[_0xae3d('0xc')](_0xae3d('0xd'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xae3d('0xe'),'fields':[_0xae3d('0xe')]},{'name':'phone','fields':['phone']},{'name':_0xae3d('0xf'),'fields':[_0xae3d('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['phone','priority','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','scheduledat'];(function(_0x2c4c15,_0x49245d){var _0x4499d7=function(_0x1ed911){while(--_0x1ed911){_0x2c4c15['push'](_0x2c4c15['shift']());}};_0x4499d7(++_0x49245d);}(_0x814b,0x1a2));var _0xb814=function(_0x347399,_0x42bbda){_0x347399=_0x347399-0x0;var _0x24e7be=_0x814b[_0x347399];return _0x24e7be;};'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':'cm_hopper','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]},{'name':_0xb814('0xe'),'fields':[_0xb814('0xe')]},{'name':_0xb814('0xf'),'fields':[_0xb814('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 5c94108..b235b5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4b=['MoveContactManagedDialer','CmHopperFinal','create','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','Contact','GetCmHopper','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','\x20MINUTE','NOW()','name','CmList','List','moment','bluebird','../../mysqldb','../../config/logger','CmHopper','findAll','options','where','limit','include','map','model','attributes','then','info','stringify','catch','message','find','raw','ShowCmHopper','error','body','CreateCmHopper','debug','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','destroy','DestroyCmHopper','describe','sequelize','transaction','order','UPDATE','CmContact','keys','User','Agent','voicePause','length','UserId','update','includes','push','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues'];(function(_0x2cf3d9,_0x247dc8){var _0x2e36d0=function(_0x306217){while(--_0x306217){_0x2cf3d9['push'](_0x2cf3d9['shift']());}};_0x2e36d0(++_0x247dc8);}(_0x0f4b,0x1a9));var _0xb0f4=function(_0x257217,_0x287fbd){_0x257217=_0x257217-0x0;var _0x3d656b=_0x0f4b[_0x257217];return _0x3d656b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb0f4('0x0'));var BPromise=require(_0xb0f4('0x1'));var db=require(_0xb0f4('0x2'))['db'];var logger=require(_0xb0f4('0x3'))('rpc');exports['GetCmHopper']=function(_0x14289d){var _0x36f602=this;return new Promise(function(_0x39dae8,_0x5413cf){return db[_0xb0f4('0x4')][_0xb0f4('0x5')]({'raw':_0x14289d[_0xb0f4('0x6')]?_0x14289d[_0xb0f4('0x6')]['raw']===undefined?!![]:![]:!![],'where':_0x14289d['options']?_0x14289d[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'attributes':_0x14289d[_0xb0f4('0x6')]?_0x14289d['options']['attributes']||null:null,'limit':_0x14289d['options']?_0x14289d[_0xb0f4('0x6')][_0xb0f4('0x8')]||null:null,'include':_0x14289d['options']?_0x14289d[_0xb0f4('0x6')][_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x14289d[_0xb0f4('0x6')][_0xb0f4('0x9')],function(_0x4e46c1){return{'model':db[_0x4e46c1[_0xb0f4('0xb')]],'as':_0x4e46c1['as'],'attributes':_0x4e46c1[_0xb0f4('0xc')],'include':_0x4e46c1[_0xb0f4('0x9')]?_['map'](_0x4e46c1[_0xb0f4('0x9')],function(_0x168591){return{'model':db[_0x168591[_0xb0f4('0xb')]],'as':_0x168591['as'],'attributes':_0x168591[_0xb0f4('0xc')],'include':_0x168591[_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x168591[_0xb0f4('0x9')],function(_0x2f54fc){return{'model':db[_0x2f54fc[_0xb0f4('0xb')]],'as':_0x2f54fc['as'],'attributes':_0x2f54fc['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0f4('0xd')](function(_0x211ee8){logger[_0xb0f4('0xe')]('GetCmHopper',_0x14289d);logger['debug']('GetCmHopper',_0x14289d,JSON[_0xb0f4('0xf')](_0x211ee8));_0x39dae8(_0x211ee8);})[_0xb0f4('0x10')](function(_0x543e29){logger['error']('GetCmHopper',_0x543e29[_0xb0f4('0x11')],_0x14289d);_0x5413cf(_0x36f602['error'](0x1f4,_0x543e29['message']));});});};exports['ShowCmHopper']=function(_0x314611){var _0x2ae717=this;return new Promise(function(_0x20d87c,_0x1c8a80){return db['CmHopper'][_0xb0f4('0x12')]({'raw':_0x314611[_0xb0f4('0x6')]?_0x314611[_0xb0f4('0x6')][_0xb0f4('0x13')]===undefined?!![]:![]:!![],'where':_0x314611['options']?_0x314611[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'attributes':_0x314611[_0xb0f4('0x6')]?_0x314611['options'][_0xb0f4('0xc')]||null:null,'include':_0x314611[_0xb0f4('0x6')]?_0x314611['options'][_0xb0f4('0x9')]?_['map'](_0x314611[_0xb0f4('0x6')][_0xb0f4('0x9')],function(_0x40fe61){return{'model':db[_0x40fe61[_0xb0f4('0xb')]],'as':_0x40fe61['as'],'attributes':_0x40fe61[_0xb0f4('0xc')],'include':_0x40fe61[_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x40fe61[_0xb0f4('0x9')],function(_0x164f9c){return{'model':db[_0x164f9c[_0xb0f4('0xb')]],'as':_0x164f9c['as'],'attributes':_0x164f9c['attributes'],'include':_0x164f9c[_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x164f9c[_0xb0f4('0x9')],function(_0x25ff00){return{'model':db[_0x25ff00[_0xb0f4('0xb')]],'as':_0x25ff00['as'],'attributes':_0x25ff00[_0xb0f4('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x123e1e){logger[_0xb0f4('0xe')](_0xb0f4('0x14'),_0x314611);logger['debug'](_0xb0f4('0x14'),_0x314611,JSON[_0xb0f4('0xf')](_0x123e1e));_0x20d87c(_0x123e1e);})[_0xb0f4('0x10')](function(_0x1fa8b2){logger[_0xb0f4('0x15')](_0xb0f4('0x14'),_0x1fa8b2[_0xb0f4('0x11')],_0x314611);_0x1c8a80(_0x2ae717[_0xb0f4('0x15')](0x1f4,_0x1fa8b2[_0xb0f4('0x11')]));});});};exports['CreateCmHopper']=function(_0x20fc18){var _0x2025eb=this;return new Promise(function(_0x101ebd,_0x1e9f77){return db['CmHopper']['create'](_0x20fc18[_0xb0f4('0x16')],{'raw':_0x20fc18[_0xb0f4('0x6')]?_0x20fc18['options'][_0xb0f4('0x13')]===undefined?!![]:![]:!![]})['then'](function(_0x12e0ef){logger[_0xb0f4('0xe')](_0xb0f4('0x17'),_0x20fc18);logger[_0xb0f4('0x18')]('CreateCmHopper',_0x20fc18,JSON[_0xb0f4('0xf')](_0x12e0ef));_0x101ebd(_0x12e0ef);})['catch'](function(_0x2176c7){logger[_0xb0f4('0x15')](_0xb0f4('0x17'),_0x2176c7['message'],_0x20fc18);_0x1e9f77(_0x2025eb[_0xb0f4('0x15')](0x1f4,_0x2176c7[_0xb0f4('0x11')]));});});};exports[_0xb0f4('0x19')]=function(_0x4ad10f){var _0xfdc684=this;return new Promise(function(_0x5c2cd0,_0x31f27c){return db['CmHopper']['update'](_0x4ad10f[_0xb0f4('0x16')],{'raw':_0x4ad10f[_0xb0f4('0x6')]?_0x4ad10f[_0xb0f4('0x6')][_0xb0f4('0x13')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ad10f[_0xb0f4('0x6')]?_0x4ad10f[_0xb0f4('0x6')]['where']||null:null,'attributes':_0x4ad10f['options']?_0x4ad10f[_0xb0f4('0x6')][_0xb0f4('0xc')]||null:null,'limit':_0x4ad10f[_0xb0f4('0x6')]?_0x4ad10f[_0xb0f4('0x6')]['limit']||null:null})[_0xb0f4('0xd')](function(_0x1f5ff6){logger[_0xb0f4('0xe')]('UpdateCmHopper',_0x4ad10f);logger[_0xb0f4('0xe')](_0xb0f4('0x1a'),JSON[_0xb0f4('0xf')](_0x4ad10f['options'][_0xb0f4('0x7')]),_0x4ad10f[_0xb0f4('0x16')][_0xb0f4('0x1b')]);logger[_0xb0f4('0x18')](_0xb0f4('0x19'),_0x4ad10f,JSON[_0xb0f4('0xf')](_0x1f5ff6));_0x5c2cd0(_0x1f5ff6);})[_0xb0f4('0x10')](function(_0x279bf5){logger[_0xb0f4('0x15')](_0xb0f4('0x19'),_0x279bf5[_0xb0f4('0x11')],_0x4ad10f);_0x31f27c(_0xfdc684[_0xb0f4('0x15')](0x1f4,_0x279bf5['message']));});});};exports['DestroyCmHopper']=function(_0x11be3f){var _0x4566e9=this;return new Promise(function(_0x17d46a,_0x4d7c3f){return db[_0xb0f4('0x4')][_0xb0f4('0x1c')]({'where':_0x11be3f[_0xb0f4('0x6')]?_0x11be3f[_0xb0f4('0x6')]['where']||null:null})[_0xb0f4('0xd')](function(_0x595459){logger[_0xb0f4('0xe')]('DestroyCmHopper',_0x11be3f);logger[_0xb0f4('0x18')](_0xb0f4('0x1d'),_0x11be3f,JSON[_0xb0f4('0xf')](_0x595459));_0x17d46a(_0x595459);})['catch'](function(_0x355fb9){logger['error'](_0xb0f4('0x1d'),_0x355fb9[_0xb0f4('0x11')],_0x11be3f);_0x4d7c3f(_0x4566e9[_0xb0f4('0x15')](0x1f4,_0x355fb9['message']));});});};exports['GetContactDialer']=function(_0x2d2c93){var _0x264d07=this;return new Promise(function(_0x4efed9,_0x1ded85){return db['CmContact'][_0xb0f4('0x1e')]()[_0xb0f4('0xd')](function(_0x1d948e){return db[_0xb0f4('0x1f')][_0xb0f4('0x20')](function(_0x524be5){return db[_0xb0f4('0x4')][_0xb0f4('0x5')]({'where':_0x2d2c93[_0xb0f4('0x6')]?_0x2d2c93[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'attributes':_0x2d2c93['options']?_0x2d2c93[_0xb0f4('0x6')][_0xb0f4('0xc')]||null:null,'limit':_0x2d2c93[_0xb0f4('0x6')]?_0x2d2c93[_0xb0f4('0x6')][_0xb0f4('0x8')]||null:null,'order':_0x2d2c93[_0xb0f4('0x6')]?_0x2d2c93['options'][_0xb0f4('0x21')]||null:null,'transaction':_0x524be5,'lock':_0x524be5['LOCK'][_0xb0f4('0x22')],'include':[{'model':db[_0xb0f4('0x23')],'as':'Contact','attributes':_[_0xb0f4('0x24')](_0x1d948e)},{'model':db[_0xb0f4('0x25')],'as':_0xb0f4('0x26'),'attributes':['id','name',_0xb0f4('0x27')]}]})['then'](function(_0x1b1c4f){var _0x571034=[];var _0x6aff21=[];for(var _0x2ad616=0x0;_0x2ad616<_0x1b1c4f[_0xb0f4('0x28')];_0x2ad616+=0x1){var _0x1b491f=_0x1b1c4f[_0x2ad616][_0xb0f4('0x29')];if(_0x1b491f===null){_0x571034['push'](_0x1b1c4f[_0x2ad616][_0xb0f4('0x2a')](_0x2d2c93['body'],{'transaction':_0x524be5}));}else if(!_0x6aff21[_0xb0f4('0x2b')](_0x1b491f)){_0x6aff21[_0xb0f4('0x2c')](_0x1b491f);_0x571034[_0xb0f4('0x2c')](_0x1b1c4f[_0x2ad616][_0xb0f4('0x2a')](_0x2d2c93[_0xb0f4('0x16')],{'transaction':_0x524be5}));}}return BPromise[_0xb0f4('0x2d')](_0x571034);});})[_0xb0f4('0xd')](function(_0x2e53d0){logger['info'](_0xb0f4('0x2e'),_0x2d2c93);if(_0x2e53d0[_0xb0f4('0x28')]>0x0){logger[_0xb0f4('0xe')](_0xb0f4('0x2f'),_0x2e53d0[0x0][_0xb0f4('0x30')]['id'],_0x2e53d0[0x0][_0xb0f4('0x30')]['ContactId'],_0x2e53d0[0x0][_0xb0f4('0x30')][_0xb0f4('0x1b')]);}logger[_0xb0f4('0x18')](_0xb0f4('0x2e'),_0x2d2c93,JSON[_0xb0f4('0xf')](_0x2e53d0));_0x4efed9(_0x2e53d0);})[_0xb0f4('0x10')](function(_0x108d4c){logger[_0xb0f4('0x15')]('GetContactDialer',_0x108d4c[_0xb0f4('0x11')],_0x2d2c93);_0x1ded85(_0x264d07[_0xb0f4('0x15')](0x1f4,_0x108d4c[_0xb0f4('0x11')]));});});});};exports[_0xb0f4('0x31')]=function(_0x5b5780){var _0x3e6519=this;return new Promise(function(_0x18b162,_0x70d206){return db[_0xb0f4('0x1f')][_0xb0f4('0x20')](function(_0x51e4a1){return db[_0xb0f4('0x32')][_0xb0f4('0x33')](_0x5b5780[_0xb0f4('0x16')],{'raw':_0x5b5780[_0xb0f4('0x6')]?_0x5b5780[_0xb0f4('0x6')][_0xb0f4('0x13')]===undefined?!![]:![]:!![],'transaction':_0x51e4a1})['then'](function(){logger[_0xb0f4('0xe')](_0xb0f4('0x34'),JSON[_0xb0f4('0xf')](_0x5b5780['options'][_0xb0f4('0x7')]),_0x5b5780[_0xb0f4('0x6')][_0xb0f4('0x7')][_0xb0f4('0x1b')]);return db[_0xb0f4('0x4')]['destroy']({'where':_0x5b5780['options']?_0x5b5780[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'transaction':_0x51e4a1});});})[_0xb0f4('0xd')](function(_0x4a184a){logger['info'](_0xb0f4('0x31'),_0x5b5780);logger[_0xb0f4('0x18')](_0xb0f4('0x31'),_0x5b5780,JSON[_0xb0f4('0xf')](_0x4a184a));_0x18b162(_0x4a184a);})[_0xb0f4('0x10')](function(_0x39346e){logger[_0xb0f4('0x15')]('MoveContactManagedDialer',_0x39346e[_0xb0f4('0x11')],_0x5b5780);_0x70d206(_0x3e6519[_0xb0f4('0x15')](0x1f4,_0x39346e[_0xb0f4('0x11')]));});});};exports[_0xb0f4('0x35')]=function(_0x2af907){var _0x41df83=this;return new Promise(function(_0x475476,_0x2cd1fd){return db['CmHopper'][_0xb0f4('0x5')]({'raw':_0x2af907['options']?_0x2af907[_0xb0f4('0x6')][_0xb0f4('0x13')]===undefined?!![]:![]:!![],'where':_0x2af907['options']?_0x2af907[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'attributes':[[db[_0xb0f4('0x1f')]['fn'](_0xb0f4('0x36'),db[_0xb0f4('0x1f')]['fn']('IF',db['sequelize'][_0xb0f4('0x37')]('`scheduledat`\x20>=\x20'+util[_0xb0f4('0x38')](_0xb0f4('0x39'),moment()[_0xb0f4('0x38')]('YYYY-MM-DD\x20HH:mm:ss'))+_0xb0f4('0x3a')))),_0xb0f4('0x3b')]]})[_0xb0f4('0xd')](function(_0x58aeba){logger[_0xb0f4('0xe')](_0xb0f4('0x35'),_0x2af907);logger[_0xb0f4('0x18')]('CountReScheduled',_0x2af907,JSON['stringify'](_0x58aeba));_0x475476(_0x58aeba);})[_0xb0f4('0x10')](function(_0x1792b8){logger[_0xb0f4('0x15')]('CountReScheduled',_0x1792b8[_0xb0f4('0x11')],_0x2af907);_0x2cd1fd(_0x41df83[_0xb0f4('0x15')](0x1f4,_0x1792b8[_0xb0f4('0x11')]));});});};exports[_0xb0f4('0x3c')]=function(_0x322e86){var _0x4368df=this;return new Promise(function(_0xce62d9,_0xac3c1c){return db[_0xb0f4('0x23')][_0xb0f4('0x1e')]()[_0xb0f4('0xd')](function(){return db[_0xb0f4('0x1f')][_0xb0f4('0x20')](function(_0x33df11){return db[_0xb0f4('0x4')][_0xb0f4('0x5')]({'where':_0x322e86[_0xb0f4('0x6')]?_0x322e86[_0xb0f4('0x6')][_0xb0f4('0x7')]||null:null,'attributes':_0x322e86['options']?_0x322e86[_0xb0f4('0x6')][_0xb0f4('0xc')]||null:null,'limit':0x1,'order':_0x322e86['options']?_0x322e86[_0xb0f4('0x6')][_0xb0f4('0x21')]||null:null,'group':db[_0xb0f4('0x4')]['UserId'],'transaction':_0x33df11,'lock':_0x33df11['LOCK'][_0xb0f4('0x22')],'include':_0x322e86['options']?_0x322e86[_0xb0f4('0x6')][_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x322e86[_0xb0f4('0x6')][_0xb0f4('0x9')],function(_0x5f00d8){return{'model':db[_0x5f00d8['model']],'as':_0x5f00d8['as'],'attributes':_0x5f00d8[_0xb0f4('0xc')],'include':_0x5f00d8[_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x5f00d8[_0xb0f4('0x9')],function(_0x422621){return{'model':db[_0x422621[_0xb0f4('0xb')]],'as':_0x422621['as'],'attributes':_0x422621[_0xb0f4('0xc')],'include':_0x422621[_0xb0f4('0x9')]?_['map'](_0x422621[_0xb0f4('0x9')],function(_0xe41e6d){return{'model':db[_0xe41e6d['model']],'as':_0xe41e6d['as'],'attributes':_0xe41e6d[_0xb0f4('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x19e9fb){var _0x2f44d9=[];for(var _0x335eba=0x0;_0x335eba<_0x19e9fb[_0xb0f4('0x28')];_0x335eba+=0x1){_0x2f44d9[_0xb0f4('0x2c')](_0x19e9fb[_0x335eba][_0xb0f4('0x2a')](_0x322e86[_0xb0f4('0x16')],{'transaction':_0x33df11}));}return BPromise[_0xb0f4('0x2d')](_0x2f44d9);});})['then'](function(_0x59506e){logger['info'](_0xb0f4('0x3c'),_0x322e86);logger[_0xb0f4('0x18')](_0xb0f4('0x3c'),_0x322e86,JSON[_0xb0f4('0xf')](_0x59506e));_0xce62d9(_0x59506e);})[_0xb0f4('0x10')](function(_0x1f0543){logger[_0xb0f4('0x15')](_0xb0f4('0x3c'),_0x1f0543[_0xb0f4('0x11')],_0x322e86);_0xac3c1c(_0x4368df[_0xb0f4('0x15')](0x1f4,_0x1f0543[_0xb0f4('0x11')]));});});});};exports['GetCmHopperPreview']=function(_0x51e1d4){var _0xe9beec=this;return new Promise(function(_0x116d03,_0x41beb3){db[_0xb0f4('0x23')]['describe']()[_0xb0f4('0xd')](function(_0x4a3d93){return db[_0xb0f4('0x4')][_0xb0f4('0x5')]({'raw':_0x51e1d4[_0xb0f4('0x6')]?_0x51e1d4[_0xb0f4('0x6')][_0xb0f4('0x13')]===undefined?!![]:![]:!![],'where':_0x51e1d4[_0xb0f4('0x6')]?_0x51e1d4['options'][_0xb0f4('0x7')]||null:null,'attributes':_0x51e1d4[_0xb0f4('0x6')]?_0x51e1d4[_0xb0f4('0x6')][_0xb0f4('0xc')]||null:null,'limit':_0x51e1d4[_0xb0f4('0x6')]?_0x51e1d4[_0xb0f4('0x6')]['limit']||null:null,'include':_0x51e1d4['options']?_0x51e1d4[_0xb0f4('0x6')][_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x51e1d4[_0xb0f4('0x6')]['include'],function(_0x492f93){return{'model':db[_0x492f93[_0xb0f4('0xb')]],'as':_0x492f93['as'],'attributes':_0x492f93['as']===_0xb0f4('0x3d')?_[_0xb0f4('0x24')](_0x4a3d93):_0x492f93['attributes'],'include':_0x492f93[_0xb0f4('0x9')]?_[_0xb0f4('0xa')](_0x492f93[_0xb0f4('0x9')],function(_0x5c86fa){return{'model':db[_0x5c86fa[_0xb0f4('0xb')]],'as':_0x5c86fa['as'],'attributes':_0x5c86fa['attributes'],'include':_0x5c86fa['include']?_[_0xb0f4('0xa')](_0x5c86fa[_0xb0f4('0x9')],function(_0xdb4a45){return{'model':db[_0xdb4a45[_0xb0f4('0xb')]],'as':_0xdb4a45['as'],'attributes':_0xdb4a45[_0xb0f4('0xc')]};}):[]};}):[]};}):[]:[]})[_0xb0f4('0xd')](function(_0x3e554d){logger['info'](_0xb0f4('0x3e'),_0x51e1d4);logger[_0xb0f4('0x18')](_0xb0f4('0x3e'),_0x51e1d4,JSON[_0xb0f4('0xf')](_0x3e554d));_0x116d03(_0x3e554d);})[_0xb0f4('0x10')](function(_0x383fd0){logger[_0xb0f4('0x15')](_0xb0f4('0x3e'),_0x383fd0[_0xb0f4('0x11')],_0x51e1d4);_0x41beb3(_0xe9beec[_0xb0f4('0x15')](0x1f4,_0x383fd0['message']));});});});};exports[_0xb0f4('0x3f')]=function(_0x4a8288){var _0x1c45ce=this;return new Promise(function(_0x2bd7bf,_0xab39c7){return db[_0xb0f4('0x23')][_0xb0f4('0x40')]({'raw':!![],'where':{'phone':_0x4a8288[_0xb0f4('0x6')][_0xb0f4('0x7')][_0xb0f4('0x41')]},'attributes':['id',_0xb0f4('0x42')],'order':[['id',_0xb0f4('0x43')]]})[_0xb0f4('0xd')](function(_0x2114ef){logger['info'](_0xb0f4('0x44'),_0x4a8288);logger[_0xb0f4('0x18')]('getContactByPhone',_0x4a8288,JSON[_0xb0f4('0xf')](_0x2114ef));_0x2bd7bf(_0x2114ef);})[_0xb0f4('0x10')](function(_0x1ed80f){logger[_0xb0f4('0x15')](_0xb0f4('0x44'),_0x1ed80f['message'],_0x4a8288);_0xab39c7(_0x1c45ce[_0xb0f4('0x15')](0x1f4,_0x1ed80f['message']));});});};exports['ResetActiveCalls']=function(_0x12ac12){var _0x3caeac=this;return new Promise(function(_0x24d9b5,_0x245513){return db[_0xb0f4('0x1f')][_0xb0f4('0x20')](function(_0x28253f){var _0x11033b=_0x12ac12[_0xb0f4('0x6')]&&_0x12ac12[_0xb0f4('0x6')][_0xb0f4('0x7')]?_0x12ac12[_0xb0f4('0x6')][_0xb0f4('0x7')]:{};return db['CmHopper'][_0xb0f4('0x2a')](_0x12ac12[_0xb0f4('0x16')],{'where':_0x11033b,'transaction':_0x28253f})[_0xb0f4('0xd')](function(_0xa9cf78){logger[_0xb0f4('0xe')](_0xb0f4('0x45'),_0x12ac12);logger[_0xb0f4('0x18')]('ResetActiveCalls',_0x12ac12,JSON['stringify'](_0xa9cf78));_0x24d9b5(_0xa9cf78);})[_0xb0f4('0x10')](function(_0xce6c38){logger[_0xb0f4('0x15')]('ResetActiveCalls',_0xce6c38['message'],_0x12ac12);_0x245513(_0x3caeac[_0xb0f4('0x15')](0x1f4,_0xce6c38[_0xb0f4('0x11')]));});});});};exports[_0xb0f4('0x46')]=function(_0x3b429f){var _0x10061b=this;var _0x52ac5f=_0x3b429f[_0xb0f4('0x16')]['where'][_0xb0f4('0x47')];var _0x202255=_0x3b429f[_0xb0f4('0x16')][_0xb0f4('0x7')][_0xb0f4('0x48')];var _0x364750=_0x3b429f[_0xb0f4('0x16')][_0xb0f4('0x7')][_0xb0f4('0x49')];return new Promise(function(_0x55c849,_0x2a1b1e){return db[_0xb0f4('0x4')]['findAll']({'where':{'voiceQueueId':{'$in':_0x52ac5f},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0xb0f4('0x37')]('NOW()\x20+\x20INTERVAL\x20'+_0x202255+_0xb0f4('0x4a')),'$gt':db[_0xb0f4('0x1f')][_0xb0f4('0x37')](_0xb0f4('0x4b'))}},'UserId':{'$in':_0x364750}},'include':[{'model':db['CmContact'],'as':_0xb0f4('0x3d')},{'model':db[_0xb0f4('0x25')],'as':'Agent','attributes':['id',_0xb0f4('0x4c'),'voicePause']},{'model':db[_0xb0f4('0x4d')],'as':_0xb0f4('0x4e')}]})[_0xb0f4('0xd')](function(_0x255cd6){if(_0x255cd6[_0xb0f4('0x28')]>0x0){return db[_0xb0f4('0x1f')]['transaction'](function(_0x4b48ae){return db[_0xb0f4('0x4')][_0xb0f4('0x2a')]({'recallmeNotifiedDate':db['sequelize'][_0xb0f4('0x37')](_0xb0f4('0x4b'))},{'where':{'id':{'$in':_[_0xb0f4('0xa')](_0x255cd6,'id')}},'transaction':_0x4b48ae})[_0xb0f4('0xd')](function(){_0x55c849(_0x255cd6);})[_0xb0f4('0x10')](function(_0x340697){logger[_0xb0f4('0x15')]('CmHopperHandlePreviewRecallNotifications',_0x340697[_0xb0f4('0x11')],_0x3b429f);_0x2a1b1e(_0x10061b['error'](0x1f4,_0x340697[_0xb0f4('0x11')]));});})[_0xb0f4('0x10')](function(_0x212275){logger[_0xb0f4('0x15')](_0xb0f4('0x46'),_0x212275['message'],_0x3b429f);_0x2a1b1e(_0x10061b[_0xb0f4('0x15')](0x1f4,_0x212275[_0xb0f4('0x11')]));});}else{_0x55c849(_0x255cd6);}});});};
\ No newline at end of file
+var _0x9dde=['then','info','GetCmHopper','debug','stringify','error','message','ShowCmHopper','catch','CreateCmHopper','create','body','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','CmContact','describe','transaction','order','UPDATE','Contact','keys','User','name','voicePause','push','all','length','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','GetContactDialer','MoveContactManagedDialer','sequelize','CmHopperFinal','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','LOCK','GetCmHopperPreview','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','NOW()','Agent','CmList','List','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','CmHopper','findAll','options','raw','where','limit','include','map','model','attributes'];(function(_0x2ac0df,_0x4f0ffe){var _0x662592=function(_0x1228a9){while(--_0x1228a9){_0x2ac0df['push'](_0x2ac0df['shift']());}};_0x662592(++_0x4f0ffe);}(_0x9dde,0x1e2));var _0xe9dd=function(_0x145cd6,_0x55b5a5){_0x145cd6=_0x145cd6-0x0;var _0x535c8f=_0x9dde[_0x145cd6];return _0x535c8f;};'use strict';var _=require('lodash');var util=require(_0xe9dd('0x0'));var moment=require(_0xe9dd('0x1'));var BPromise=require(_0xe9dd('0x2'));var db=require(_0xe9dd('0x3'))['db'];var logger=require(_0xe9dd('0x4'))(_0xe9dd('0x5'));exports['GetCmHopper']=function(_0x28acc0){var _0x54078b=this;return new Promise(function(_0x349e0e,_0x38e1b9){return db[_0xe9dd('0x6')][_0xe9dd('0x7')]({'raw':_0x28acc0[_0xe9dd('0x8')]?_0x28acc0[_0xe9dd('0x8')][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'where':_0x28acc0[_0xe9dd('0x8')]?_0x28acc0['options'][_0xe9dd('0xa')]||null:null,'attributes':_0x28acc0['options']?_0x28acc0[_0xe9dd('0x8')]['attributes']||null:null,'limit':_0x28acc0['options']?_0x28acc0[_0xe9dd('0x8')][_0xe9dd('0xb')]||null:null,'include':_0x28acc0[_0xe9dd('0x8')]?_0x28acc0[_0xe9dd('0x8')][_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x28acc0['options']['include'],function(_0x227832){return{'model':db[_0x227832[_0xe9dd('0xe')]],'as':_0x227832['as'],'attributes':_0x227832[_0xe9dd('0xf')],'include':_0x227832['include']?_['map'](_0x227832[_0xe9dd('0xc')],function(_0x57baea){return{'model':db[_0x57baea[_0xe9dd('0xe')]],'as':_0x57baea['as'],'attributes':_0x57baea[_0xe9dd('0xf')],'include':_0x57baea[_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x57baea[_0xe9dd('0xc')],function(_0x1e5eaa){return{'model':db[_0x1e5eaa[_0xe9dd('0xe')]],'as':_0x1e5eaa['as'],'attributes':_0x1e5eaa[_0xe9dd('0xf')]};}):[]};}):[]};}):[]:[]})[_0xe9dd('0x10')](function(_0x1e5256){logger[_0xe9dd('0x11')](_0xe9dd('0x12'),_0x28acc0);logger[_0xe9dd('0x13')](_0xe9dd('0x12'),_0x28acc0,JSON[_0xe9dd('0x14')](_0x1e5256));_0x349e0e(_0x1e5256);})['catch'](function(_0x1b5e85){logger[_0xe9dd('0x15')](_0xe9dd('0x12'),_0x1b5e85[_0xe9dd('0x16')],_0x28acc0);_0x38e1b9(_0x54078b[_0xe9dd('0x15')](0x1f4,_0x1b5e85[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x17')]=function(_0x4ef7e4){var _0x45feaf=this;return new Promise(function(_0x50700a,_0x26a787){return db['CmHopper']['find']({'raw':_0x4ef7e4[_0xe9dd('0x8')]?_0x4ef7e4['options'][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'where':_0x4ef7e4[_0xe9dd('0x8')]?_0x4ef7e4[_0xe9dd('0x8')][_0xe9dd('0xa')]||null:null,'attributes':_0x4ef7e4[_0xe9dd('0x8')]?_0x4ef7e4['options']['attributes']||null:null,'include':_0x4ef7e4['options']?_0x4ef7e4[_0xe9dd('0x8')][_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x4ef7e4[_0xe9dd('0x8')]['include'],function(_0x349e1c){return{'model':db[_0x349e1c['model']],'as':_0x349e1c['as'],'attributes':_0x349e1c[_0xe9dd('0xf')],'include':_0x349e1c[_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x349e1c[_0xe9dd('0xc')],function(_0x10c99d){return{'model':db[_0x10c99d[_0xe9dd('0xe')]],'as':_0x10c99d['as'],'attributes':_0x10c99d[_0xe9dd('0xf')],'include':_0x10c99d['include']?_[_0xe9dd('0xd')](_0x10c99d[_0xe9dd('0xc')],function(_0x52969a){return{'model':db[_0x52969a[_0xe9dd('0xe')]],'as':_0x52969a['as'],'attributes':_0x52969a['attributes']};}):[]};}):[]};}):[]:[]})[_0xe9dd('0x10')](function(_0x1ec997){logger[_0xe9dd('0x11')](_0xe9dd('0x17'),_0x4ef7e4);logger[_0xe9dd('0x13')](_0xe9dd('0x17'),_0x4ef7e4,JSON[_0xe9dd('0x14')](_0x1ec997));_0x50700a(_0x1ec997);})[_0xe9dd('0x18')](function(_0xa8c3fe){logger[_0xe9dd('0x15')](_0xe9dd('0x17'),_0xa8c3fe[_0xe9dd('0x16')],_0x4ef7e4);_0x26a787(_0x45feaf[_0xe9dd('0x15')](0x1f4,_0xa8c3fe[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x19')]=function(_0xe5fa56){var _0x381878=this;return new Promise(function(_0x393d96,_0x230085){return db[_0xe9dd('0x6')][_0xe9dd('0x1a')](_0xe5fa56[_0xe9dd('0x1b')],{'raw':_0xe5fa56['options']?_0xe5fa56[_0xe9dd('0x8')][_0xe9dd('0x9')]===undefined?!![]:![]:!![]})['then'](function(_0x3bcd14){logger[_0xe9dd('0x11')](_0xe9dd('0x19'),_0xe5fa56);logger[_0xe9dd('0x13')]('CreateCmHopper',_0xe5fa56,JSON[_0xe9dd('0x14')](_0x3bcd14));_0x393d96(_0x3bcd14);})[_0xe9dd('0x18')](function(_0x18d71a){logger[_0xe9dd('0x15')](_0xe9dd('0x19'),_0x18d71a[_0xe9dd('0x16')],_0xe5fa56);_0x230085(_0x381878['error'](0x1f4,_0x18d71a[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x1c')]=function(_0x4ed3ee){var _0x4cd61c=this;return new Promise(function(_0x576f0e,_0x462d6e){return db[_0xe9dd('0x6')][_0xe9dd('0x1d')](_0x4ed3ee['body'],{'raw':_0x4ed3ee[_0xe9dd('0x8')]?_0x4ed3ee['options'][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ed3ee[_0xe9dd('0x8')]?_0x4ed3ee[_0xe9dd('0x8')]['where']||null:null,'attributes':_0x4ed3ee[_0xe9dd('0x8')]?_0x4ed3ee[_0xe9dd('0x8')][_0xe9dd('0xf')]||null:null,'limit':_0x4ed3ee[_0xe9dd('0x8')]?_0x4ed3ee[_0xe9dd('0x8')]['limit']||null:null})[_0xe9dd('0x10')](function(_0x2c9987){logger[_0xe9dd('0x11')](_0xe9dd('0x1c'),_0x4ed3ee);logger[_0xe9dd('0x11')](_0xe9dd('0x1e'),JSON[_0xe9dd('0x14')](_0x4ed3ee[_0xe9dd('0x8')][_0xe9dd('0xa')]),_0x4ed3ee[_0xe9dd('0x1b')][_0xe9dd('0x1f')]);logger[_0xe9dd('0x13')](_0xe9dd('0x1c'),_0x4ed3ee,JSON[_0xe9dd('0x14')](_0x2c9987));_0x576f0e(_0x2c9987);})[_0xe9dd('0x18')](function(_0x4435d1){logger[_0xe9dd('0x15')](_0xe9dd('0x1c'),_0x4435d1[_0xe9dd('0x16')],_0x4ed3ee);_0x462d6e(_0x4cd61c[_0xe9dd('0x15')](0x1f4,_0x4435d1['message']));});});};exports[_0xe9dd('0x20')]=function(_0x3cceca){var _0x5dc27b=this;return new Promise(function(_0x31cc0f,_0x33b449){return db[_0xe9dd('0x6')][_0xe9dd('0x21')]({'where':_0x3cceca['options']?_0x3cceca[_0xe9dd('0x8')][_0xe9dd('0xa')]||null:null})['then'](function(_0xd85494){logger[_0xe9dd('0x11')](_0xe9dd('0x20'),_0x3cceca);logger[_0xe9dd('0x13')]('DestroyCmHopper',_0x3cceca,JSON[_0xe9dd('0x14')](_0xd85494));_0x31cc0f(_0xd85494);})['catch'](function(_0x12c7df){logger[_0xe9dd('0x15')](_0xe9dd('0x20'),_0x12c7df['message'],_0x3cceca);_0x33b449(_0x5dc27b[_0xe9dd('0x15')](0x1f4,_0x12c7df[_0xe9dd('0x16')]));});});};exports['GetContactDialer']=function(_0x31ba68){var _0x434f4b=this;return new Promise(function(_0xb22b73,_0x48bd27){return db[_0xe9dd('0x22')][_0xe9dd('0x23')]()[_0xe9dd('0x10')](function(_0x5d5554){return db['sequelize'][_0xe9dd('0x24')](function(_0x1c1246){return db[_0xe9dd('0x6')][_0xe9dd('0x7')]({'where':_0x31ba68[_0xe9dd('0x8')]?_0x31ba68[_0xe9dd('0x8')][_0xe9dd('0xa')]||null:null,'attributes':_0x31ba68['options']?_0x31ba68[_0xe9dd('0x8')]['attributes']||null:null,'limit':_0x31ba68['options']?_0x31ba68[_0xe9dd('0x8')][_0xe9dd('0xb')]||null:null,'order':_0x31ba68[_0xe9dd('0x8')]?_0x31ba68['options'][_0xe9dd('0x25')]||null:null,'transaction':_0x1c1246,'lock':_0x1c1246['LOCK'][_0xe9dd('0x26')],'include':[{'model':db[_0xe9dd('0x22')],'as':_0xe9dd('0x27'),'attributes':_[_0xe9dd('0x28')](_0x5d5554)},{'model':db[_0xe9dd('0x29')],'as':'Agent','attributes':['id',_0xe9dd('0x2a'),_0xe9dd('0x2b')]}]})['then'](function(_0x33dc2f){var _0x2d1e3a=[];var _0x178162=[];for(var _0xfb11b4=0x0;_0xfb11b4<_0x33dc2f['length'];_0xfb11b4+=0x1){var _0x163613=_0x33dc2f[_0xfb11b4]['UserId'];if(_0x163613===null){_0x2d1e3a[_0xe9dd('0x2c')](_0x33dc2f[_0xfb11b4][_0xe9dd('0x1d')](_0x31ba68[_0xe9dd('0x1b')],{'transaction':_0x1c1246}));}else if(!_0x178162['includes'](_0x163613)){_0x178162[_0xe9dd('0x2c')](_0x163613);_0x2d1e3a['push'](_0x33dc2f[_0xfb11b4][_0xe9dd('0x1d')](_0x31ba68['body'],{'transaction':_0x1c1246}));}}return BPromise[_0xe9dd('0x2d')](_0x2d1e3a);});})[_0xe9dd('0x10')](function(_0x305844){logger[_0xe9dd('0x11')]('GetContactDialer',_0x31ba68);if(_0x305844[_0xe9dd('0x2e')]>0x0){logger[_0xe9dd('0x11')](_0xe9dd('0x2f'),_0x305844[0x0]['dataValues']['id'],_0x305844[0x0][_0xe9dd('0x30')][_0xe9dd('0x31')],_0x305844[0x0][_0xe9dd('0x30')][_0xe9dd('0x1f')]);}logger['debug'](_0xe9dd('0x32'),_0x31ba68,JSON[_0xe9dd('0x14')](_0x305844));_0xb22b73(_0x305844);})[_0xe9dd('0x18')](function(_0x29c7a2){logger[_0xe9dd('0x15')](_0xe9dd('0x32'),_0x29c7a2[_0xe9dd('0x16')],_0x31ba68);_0x48bd27(_0x434f4b['error'](0x1f4,_0x29c7a2['message']));});});});};exports[_0xe9dd('0x33')]=function(_0x52de31){var _0x18d135=this;return new Promise(function(_0x155d6c,_0x3b97d7){return db[_0xe9dd('0x34')][_0xe9dd('0x24')](function(_0x14c740){return db[_0xe9dd('0x35')][_0xe9dd('0x1a')](_0x52de31[_0xe9dd('0x1b')],{'raw':_0x52de31[_0xe9dd('0x8')]?_0x52de31[_0xe9dd('0x8')][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'transaction':_0x14c740})['then'](function(){logger[_0xe9dd('0x11')]('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON['stringify'](_0x52de31[_0xe9dd('0x8')][_0xe9dd('0xa')]),_0x52de31[_0xe9dd('0x8')]['where'][_0xe9dd('0x1f')]);return db['CmHopper'][_0xe9dd('0x21')]({'where':_0x52de31['options']?_0x52de31['options'][_0xe9dd('0xa')]||null:null,'transaction':_0x14c740});});})['then'](function(_0x55e1f7){logger['info'](_0xe9dd('0x33'),_0x52de31);logger['debug']('MoveContactManagedDialer',_0x52de31,JSON['stringify'](_0x55e1f7));_0x155d6c(_0x55e1f7);})[_0xe9dd('0x18')](function(_0x38c0ed){logger[_0xe9dd('0x15')]('MoveContactManagedDialer',_0x38c0ed[_0xe9dd('0x16')],_0x52de31);_0x3b97d7(_0x18d135['error'](0x1f4,_0x38c0ed[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x36')]=function(_0x402024){var _0x213918=this;return new Promise(function(_0x3f5a35,_0x2495e6){return db['CmHopper'][_0xe9dd('0x7')]({'raw':_0x402024[_0xe9dd('0x8')]?_0x402024[_0xe9dd('0x8')][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'where':_0x402024[_0xe9dd('0x8')]?_0x402024['options']['where']||null:null,'attributes':[[db[_0xe9dd('0x34')]['fn'](_0xe9dd('0x37'),db[_0xe9dd('0x34')]['fn']('IF',db[_0xe9dd('0x34')][_0xe9dd('0x38')](_0xe9dd('0x39')+util[_0xe9dd('0x3a')](_0xe9dd('0x3b'),moment()[_0xe9dd('0x3a')](_0xe9dd('0x3c')))+_0xe9dd('0x3d')))),_0xe9dd('0x3e')]]})[_0xe9dd('0x10')](function(_0x346f79){logger[_0xe9dd('0x11')](_0xe9dd('0x36'),_0x402024);logger['debug'](_0xe9dd('0x36'),_0x402024,JSON['stringify'](_0x346f79));_0x3f5a35(_0x346f79);})[_0xe9dd('0x18')](function(_0x10ebdd){logger['error'](_0xe9dd('0x36'),_0x10ebdd[_0xe9dd('0x16')],_0x402024);_0x2495e6(_0x213918['error'](0x1f4,_0x10ebdd[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x3f')]=function(_0x551928){var _0x3431e4=this;return new Promise(function(_0x496eb5,_0x636ca9){return db['CmContact'][_0xe9dd('0x23')]()[_0xe9dd('0x10')](function(){return db['sequelize'][_0xe9dd('0x24')](function(_0xf45158){return db[_0xe9dd('0x6')][_0xe9dd('0x7')]({'where':_0x551928['options']?_0x551928[_0xe9dd('0x8')][_0xe9dd('0xa')]||null:null,'attributes':_0x551928[_0xe9dd('0x8')]?_0x551928[_0xe9dd('0x8')][_0xe9dd('0xf')]||null:null,'limit':0x1,'order':_0x551928[_0xe9dd('0x8')]?_0x551928[_0xe9dd('0x8')]['order']||null:null,'group':db['CmHopper']['UserId'],'transaction':_0xf45158,'lock':_0xf45158[_0xe9dd('0x40')]['UPDATE'],'include':_0x551928['options']?_0x551928[_0xe9dd('0x8')][_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x551928[_0xe9dd('0x8')][_0xe9dd('0xc')],function(_0x228dc5){return{'model':db[_0x228dc5['model']],'as':_0x228dc5['as'],'attributes':_0x228dc5['attributes'],'include':_0x228dc5[_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x228dc5[_0xe9dd('0xc')],function(_0x31bf88){return{'model':db[_0x31bf88[_0xe9dd('0xe')]],'as':_0x31bf88['as'],'attributes':_0x31bf88[_0xe9dd('0xf')],'include':_0x31bf88[_0xe9dd('0xc')]?_['map'](_0x31bf88[_0xe9dd('0xc')],function(_0x38c3b7){return{'model':db[_0x38c3b7['model']],'as':_0x38c3b7['as'],'attributes':_0x38c3b7[_0xe9dd('0xf')]};}):[]};}):[]};}):[]:[]})[_0xe9dd('0x10')](function(_0x4e1fb8){var _0x502cb1=[];for(var _0x138fb2=0x0;_0x138fb2<_0x4e1fb8[_0xe9dd('0x2e')];_0x138fb2+=0x1){_0x502cb1[_0xe9dd('0x2c')](_0x4e1fb8[_0x138fb2][_0xe9dd('0x1d')](_0x551928[_0xe9dd('0x1b')],{'transaction':_0xf45158}));}return BPromise['all'](_0x502cb1);});})[_0xe9dd('0x10')](function(_0xfbe24c){logger[_0xe9dd('0x11')]('GetContactRecallMe',_0x551928);logger['debug'](_0xe9dd('0x3f'),_0x551928,JSON[_0xe9dd('0x14')](_0xfbe24c));_0x496eb5(_0xfbe24c);})[_0xe9dd('0x18')](function(_0x48c4a6){logger[_0xe9dd('0x15')](_0xe9dd('0x3f'),_0x48c4a6[_0xe9dd('0x16')],_0x551928);_0x636ca9(_0x3431e4[_0xe9dd('0x15')](0x1f4,_0x48c4a6['message']));});});});};exports[_0xe9dd('0x41')]=function(_0x1095f4){var _0x3eec5c=this;return new Promise(function(_0x3092c1,_0x175046){db[_0xe9dd('0x22')][_0xe9dd('0x23')]()[_0xe9dd('0x10')](function(_0x2d576a){return db[_0xe9dd('0x6')][_0xe9dd('0x7')]({'raw':_0x1095f4[_0xe9dd('0x8')]?_0x1095f4[_0xe9dd('0x8')][_0xe9dd('0x9')]===undefined?!![]:![]:!![],'where':_0x1095f4[_0xe9dd('0x8')]?_0x1095f4[_0xe9dd('0x8')][_0xe9dd('0xa')]||null:null,'attributes':_0x1095f4[_0xe9dd('0x8')]?_0x1095f4['options'][_0xe9dd('0xf')]||null:null,'limit':_0x1095f4[_0xe9dd('0x8')]?_0x1095f4[_0xe9dd('0x8')][_0xe9dd('0xb')]||null:null,'include':_0x1095f4[_0xe9dd('0x8')]?_0x1095f4[_0xe9dd('0x8')][_0xe9dd('0xc')]?_['map'](_0x1095f4[_0xe9dd('0x8')][_0xe9dd('0xc')],function(_0x3689d1){return{'model':db[_0x3689d1[_0xe9dd('0xe')]],'as':_0x3689d1['as'],'attributes':_0x3689d1['as']===_0xe9dd('0x27')?_[_0xe9dd('0x28')](_0x2d576a):_0x3689d1[_0xe9dd('0xf')],'include':_0x3689d1[_0xe9dd('0xc')]?_[_0xe9dd('0xd')](_0x3689d1['include'],function(_0x3260dc){return{'model':db[_0x3260dc[_0xe9dd('0xe')]],'as':_0x3260dc['as'],'attributes':_0x3260dc[_0xe9dd('0xf')],'include':_0x3260dc[_0xe9dd('0xc')]?_['map'](_0x3260dc[_0xe9dd('0xc')],function(_0x34e23a){return{'model':db[_0x34e23a['model']],'as':_0x34e23a['as'],'attributes':_0x34e23a[_0xe9dd('0xf')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ab0b6){logger[_0xe9dd('0x11')](_0xe9dd('0x12'),_0x1095f4);logger[_0xe9dd('0x13')](_0xe9dd('0x12'),_0x1095f4,JSON[_0xe9dd('0x14')](_0x3ab0b6));_0x3092c1(_0x3ab0b6);})[_0xe9dd('0x18')](function(_0x10e7b1){logger[_0xe9dd('0x15')](_0xe9dd('0x12'),_0x10e7b1['message'],_0x1095f4);_0x175046(_0x3eec5c['error'](0x1f4,_0x10e7b1[_0xe9dd('0x16')]));});});});};exports[_0xe9dd('0x42')]=function(_0x3b3330){var _0x22b36e=this;return new Promise(function(_0x31cfb4,_0x3aaa11){return db['CmContact'][_0xe9dd('0x43')]({'raw':!![],'where':{'phone':_0x3b3330[_0xe9dd('0x8')][_0xe9dd('0xa')][_0xe9dd('0x44')]},'attributes':['id',_0xe9dd('0x45')],'order':[['id',_0xe9dd('0x46')]]})[_0xe9dd('0x10')](function(_0x2d9663){logger['info'](_0xe9dd('0x47'),_0x3b3330);logger[_0xe9dd('0x13')](_0xe9dd('0x47'),_0x3b3330,JSON[_0xe9dd('0x14')](_0x2d9663));_0x31cfb4(_0x2d9663);})[_0xe9dd('0x18')](function(_0x4601b8){logger['error'](_0xe9dd('0x47'),_0x4601b8[_0xe9dd('0x16')],_0x3b3330);_0x3aaa11(_0x22b36e[_0xe9dd('0x15')](0x1f4,_0x4601b8[_0xe9dd('0x16')]));});});};exports[_0xe9dd('0x48')]=function(_0x8dfd71){var _0x397a91=this;return new Promise(function(_0x575c48,_0x1061c1){return db['sequelize'][_0xe9dd('0x24')](function(_0x4ad0cb){var _0x183280=_0x8dfd71[_0xe9dd('0x8')]&&_0x8dfd71[_0xe9dd('0x8')][_0xe9dd('0xa')]?_0x8dfd71['options'][_0xe9dd('0xa')]:{};return db['CmHopper'][_0xe9dd('0x1d')](_0x8dfd71[_0xe9dd('0x1b')],{'where':_0x183280,'transaction':_0x4ad0cb})[_0xe9dd('0x10')](function(_0x3a4d01){logger[_0xe9dd('0x11')](_0xe9dd('0x48'),_0x8dfd71);logger[_0xe9dd('0x13')](_0xe9dd('0x48'),_0x8dfd71,JSON[_0xe9dd('0x14')](_0x3a4d01));_0x575c48(_0x3a4d01);})['catch'](function(_0x38cfbf){logger[_0xe9dd('0x15')](_0xe9dd('0x48'),_0x38cfbf[_0xe9dd('0x16')],_0x8dfd71);_0x1061c1(_0x397a91[_0xe9dd('0x15')](0x1f4,_0x38cfbf['message']));});});});};exports[_0xe9dd('0x49')]=function(_0x7a9f71){var _0x51415c=this;var _0x5cc548=_0x7a9f71[_0xe9dd('0x1b')][_0xe9dd('0xa')][_0xe9dd('0x4a')];var _0xf48dec=_0x7a9f71[_0xe9dd('0x1b')][_0xe9dd('0xa')][_0xe9dd('0x4b')];var _0x146bb6=_0x7a9f71['body'][_0xe9dd('0xa')][_0xe9dd('0x4c')];return new Promise(function(_0x3e80a5,_0x5a176b){return db['CmHopper'][_0xe9dd('0x7')]({'where':{'voiceQueueId':{'$in':_0x5cc548},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xe9dd('0x34')]['literal'](_0xe9dd('0x4d')+_0xf48dec+_0xe9dd('0x4e')),'$gt':db[_0xe9dd('0x34')][_0xe9dd('0x38')](_0xe9dd('0x4f'))}},'UserId':{'$in':_0x146bb6}},'include':[{'model':db[_0xe9dd('0x22')],'as':_0xe9dd('0x27')},{'model':db[_0xe9dd('0x29')],'as':_0xe9dd('0x50'),'attributes':['id',_0xe9dd('0x2a'),_0xe9dd('0x2b')]},{'model':db[_0xe9dd('0x51')],'as':_0xe9dd('0x52')}]})[_0xe9dd('0x10')](function(_0x58cb8c){if(_0x58cb8c['length']>0x0){return db['sequelize'][_0xe9dd('0x24')](function(_0x4c1e82){return db[_0xe9dd('0x6')][_0xe9dd('0x1d')]({'recallmeNotifiedDate':db[_0xe9dd('0x34')][_0xe9dd('0x38')](_0xe9dd('0x4f'))},{'where':{'id':{'$in':_['map'](_0x58cb8c,'id')}},'transaction':_0x4c1e82})[_0xe9dd('0x10')](function(){_0x3e80a5(_0x58cb8c);})['catch'](function(_0x1f786d){logger[_0xe9dd('0x15')](_0xe9dd('0x49'),_0x1f786d[_0xe9dd('0x16')],_0x7a9f71);_0x5a176b(_0x51415c['error'](0x1f4,_0x1f786d[_0xe9dd('0x16')]));});})[_0xe9dd('0x18')](function(_0x47e5ce){logger[_0xe9dd('0x15')](_0xe9dd('0x49'),_0x47e5ce[_0xe9dd('0x16')],_0x7a9f71);_0x5a176b(_0x51415c[_0xe9dd('0x15')](0x1f4,_0x47e5ce[_0xe9dd('0x16')]));});}else{_0x3e80a5(_0x58cb8c);}});});};
\ No newline at end of file
index 72b26ef..90d06b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5224=['getTimezone','update','delete','exports','express','Router','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','/:id/previewrecall','post','create','/preview','getPreview','/timezone'];(function(_0x2a2978,_0x2ff608){var _0x3b916a=function(_0x1899df){while(--_0x1899df){_0x2a2978['push'](_0x2a2978['shift']());}};_0x3b916a(++_0x2ff608);}(_0x5224,0x1d2));var _0x4522=function(_0x15fc7a,_0xd21741){_0x15fc7a=_0x15fc7a-0x0;var _0x3aa9f4=_0x5224[_0x15fc7a];return _0x3aa9f4;};'use strict';var express=require(_0x4522('0x0'));var router=express[_0x4522('0x1')]();var auth=require(_0x4522('0x2'));var controller=require('./cmHopper.controller');router[_0x4522('0x3')]('/',auth[_0x4522('0x4')](),controller[_0x4522('0x5')]);router['get'](_0x4522('0x6'),auth[_0x4522('0x4')](),controller[_0x4522('0x7')]);router['get'](_0x4522('0x8'),auth[_0x4522('0x4')](),controller[_0x4522('0x9')]);router[_0x4522('0x3')]('/timezones',auth['isAuthenticated'](),controller['getTimezones']);router[_0x4522('0x3')](_0x4522('0xa'),auth[_0x4522('0x4')](),controller[_0x4522('0xb')]);router[_0x4522('0x3')](_0x4522('0xc'),auth[_0x4522('0x4')](),controller['getPreviewRecall']);router[_0x4522('0xd')]('/',auth[_0x4522('0x4')](),controller[_0x4522('0xe')]);router[_0x4522('0xd')](_0x4522('0xf'),auth[_0x4522('0x4')](),controller[_0x4522('0x10')]);router[_0x4522('0xd')](_0x4522('0x11'),auth[_0x4522('0x4')](),controller[_0x4522('0x12')]);router['put'](_0x4522('0xa'),auth['isAuthenticated'](),controller[_0x4522('0x13')]);router[_0x4522('0x14')](_0x4522('0xa'),auth[_0x4522('0x4')](),controller['destroy']);module[_0x4522('0x15')]=router;
\ No newline at end of file
+var _0x8bf9=['express','Router','./cmHopper.controller','get','isAuthenticated','index','/describe','getOpenContacts','/timezones','getTimezones','show','getPreviewRecall','post','create','/preview','getPreview','/timezone','getTimezone','put','/:id','update','delete','exports'];(function(_0x149adf,_0x5d2be0){var _0x4c35e1=function(_0x406152){while(--_0x406152){_0x149adf['push'](_0x149adf['shift']());}};_0x4c35e1(++_0x5d2be0);}(_0x8bf9,0x73));var _0x98bf=function(_0x360e5c,_0x1d60de){_0x360e5c=_0x360e5c-0x0;var _0x3629ea=_0x8bf9[_0x360e5c];return _0x3629ea;};'use strict';var express=require(_0x98bf('0x0'));var router=express[_0x98bf('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x98bf('0x2'));router[_0x98bf('0x3')]('/',auth[_0x98bf('0x4')](),controller[_0x98bf('0x5')]);router[_0x98bf('0x3')](_0x98bf('0x6'),auth['isAuthenticated'](),controller['describe']);router[_0x98bf('0x3')]('/opencontacts',auth[_0x98bf('0x4')](),controller[_0x98bf('0x7')]);router[_0x98bf('0x3')](_0x98bf('0x8'),auth[_0x98bf('0x4')](),controller[_0x98bf('0x9')]);router[_0x98bf('0x3')]('/:id',auth[_0x98bf('0x4')](),controller[_0x98bf('0xa')]);router[_0x98bf('0x3')]('/:id/previewrecall',auth['isAuthenticated'](),controller[_0x98bf('0xb')]);router[_0x98bf('0xc')]('/',auth[_0x98bf('0x4')](),controller[_0x98bf('0xd')]);router['post'](_0x98bf('0xe'),auth[_0x98bf('0x4')](),controller[_0x98bf('0xf')]);router[_0x98bf('0xc')](_0x98bf('0x10'),auth[_0x98bf('0x4')](),controller[_0x98bf('0x11')]);router[_0x98bf('0x12')](_0x98bf('0x13'),auth[_0x98bf('0x4')](),controller[_0x98bf('0x14')]);router[_0x98bf('0x15')](_0x98bf('0x13'),auth[_0x98bf('0x4')](),controller['destroy']);module[_0x98bf('0x16')]=router;
\ No newline at end of file
index 4f7c2e5..2d5dd0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f82=['INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x9f82,0x75));var _0x29f8=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9f82[_0x18ab2a];return _0x16dcee;};'use strict';var moment=require(_0x29f8('0x0'));var Sequelize=require(_0x29f8('0x1'));module['exports']={'CmHopperId':{'type':Sequelize[_0x29f8('0x2')]},'phone':{'type':Sequelize[_0x29f8('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x29f8('0x4')],'defaultValue':moment()[_0x29f8('0x5')](_0x29f8('0x6'))},'countbusyretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x29f8('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9ce1=['INTEGER','STRING','format','moment','exports'];(function(_0x93c7c9,_0x265215){var _0x491512=function(_0x484025){while(--_0x484025){_0x93c7c9['push'](_0x93c7c9['shift']());}};_0x491512(++_0x265215);}(_0x9ce1,0xd5));var _0x19ce=function(_0x28cd00,_0x368b5f){_0x28cd00=_0x28cd00-0x0;var _0x4aae6d=_0x9ce1[_0x28cd00];return _0x4aae6d;};'use strict';var moment=require(_0x19ce('0x0'));var Sequelize=require('sequelize');module[_0x19ce('0x1')]={'CmHopperId':{'type':Sequelize[_0x19ce('0x2')]},'phone':{'type':Sequelize[_0x19ce('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x19ce('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x19ce('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 04bc8f5..d05ca6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca1=['includeAll','include','findAll','rows','catch','show','params','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','get','CmHopperAdditionalPhones','destroy','error','name','CmHopperAdditionalPhone','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options'];(function(_0x365a91,_0x10fd46){var _0x1b96cd=function(_0x57a07c){while(--_0x57a07c){_0x365a91['push'](_0x365a91['shift']());}};_0x1b96cd(++_0x10fd46);}(_0xbca1,0x10f));var _0x1bca=function(_0x389a2d,_0xa48f64){_0x389a2d=_0x389a2d-0x0;var _0x9f60fe=_0xbca1[_0x389a2d];return _0x9f60fe;};'use strict';var emlformat=require(_0x1bca('0x0'));var rimraf=require(_0x1bca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1bca('0x2'));var rp=require(_0x1bca('0x3'));var moment=require(_0x1bca('0x4'));var BPromise=require(_0x1bca('0x5'));var Mustache=require(_0x1bca('0x6'));var util=require(_0x1bca('0x7'));var path=require(_0x1bca('0x8'));var sox=require(_0x1bca('0x9'));var csv=require(_0x1bca('0xa'));var ejs=require(_0x1bca('0xb'));var fs=require('fs');var fs_extra=require(_0x1bca('0xc'));var _=require(_0x1bca('0xd'));var squel=require(_0x1bca('0xe'));var crypto=require(_0x1bca('0xf'));var jsforce=require(_0x1bca('0x10'));var deskjs=require(_0x1bca('0x11'));var toCsv=require(_0x1bca('0xa'));var querystring=require(_0x1bca('0x12'));var Papa=require(_0x1bca('0x13'));var Redis=require(_0x1bca('0x14'));var authService=require(_0x1bca('0x15'));var qs=require(_0x1bca('0x16'));var as=require(_0x1bca('0x17'));var hardwareService=require(_0x1bca('0x18'));var logger=require(_0x1bca('0x19'))(_0x1bca('0x1a'));var utils=require('../../config/utils');var config=require(_0x1bca('0x1b'));var licenseUtil=require(_0x1bca('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21d385,_0x45ef62){_0x45ef62=_0x45ef62||0xcc;return function(_0x4665e9){if(_0x4665e9){return _0x21d385[_0x1bca('0x1d')](_0x45ef62);}return _0x21d385[_0x1bca('0x1e')](_0x45ef62)['end']();};}function respondWithResult(_0x48ce7e,_0x4326f3){_0x4326f3=_0x4326f3||0xc8;return function(_0x552b8b){if(_0x552b8b){return _0x48ce7e[_0x1bca('0x1e')](_0x4326f3)[_0x1bca('0x1f')](_0x552b8b);}};}function respondWithFilteredResult(_0x5e5f44,_0x551d86){return function(_0x4df5b5){if(_0x4df5b5){var _0x2060fd=typeof _0x551d86[_0x1bca('0x20')]===_0x1bca('0x21')&&typeof _0x551d86[_0x1bca('0x22')]===_0x1bca('0x21');var _0x529cec=_0x4df5b5['count'];var _0x4f0703=_0x2060fd?0x0:_0x551d86[_0x1bca('0x20')];var _0x2b30e6=_0x2060fd?_0x4df5b5[_0x1bca('0x23')]:_0x551d86[_0x1bca('0x20')]+_0x551d86[_0x1bca('0x22')];var _0x48cded;if(_0x2b30e6>=_0x529cec){_0x2b30e6=_0x529cec;_0x48cded=0xc8;}else{_0x48cded=0xce;}_0x5e5f44[_0x1bca('0x1e')](_0x48cded);return _0x5e5f44[_0x1bca('0x24')](_0x1bca('0x25'),_0x4f0703+'-'+_0x2b30e6+'/'+_0x529cec)[_0x1bca('0x1f')](_0x4df5b5);}return null;};}function patchUpdates(_0x11cf9b){return function(_0x30e7ec){try{jsonpatch[_0x1bca('0x26')](_0x30e7ec,_0x11cf9b,!![]);}catch(_0x3c9598){return BPromise[_0x1bca('0x27')](_0x3c9598);}return _0x30e7ec['save']();};}function saveUpdates(_0x35fc79,_0x120f6d){return function(_0x53c1a5){if(_0x53c1a5){return _0x53c1a5[_0x1bca('0x28')](_0x35fc79)['then'](function(_0x4d08e8){return _0x4d08e8;});}return null;};}function removeEntity(_0x203805,_0x4e605e){return function(_0x418d9e){if(_0x418d9e){return _0x418d9e['destroy']()[_0x1bca('0x29')](function(){var _0x411ed8=_0x418d9e[_0x1bca('0x2a')]({'plain':!![]});var _0x14a2f8=_0x1bca('0x2b');return db['UserProfileResource'][_0x1bca('0x2c')]({'where':{'type':_0x14a2f8,'resourceId':_0x411ed8['id']}})[_0x1bca('0x29')](function(){return _0x418d9e;});})[_0x1bca('0x29')](function(){_0x203805[_0x1bca('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2645a8,_0x8891fe){return function(_0x12b0b9){if(!_0x12b0b9){_0x2645a8[_0x1bca('0x1d')](0x194);}return _0x12b0b9;};}function handleError(_0x5bf2e8,_0x39f08f){_0x39f08f=_0x39f08f||0x1f4;return function(_0xbfa543){logger[_0x1bca('0x2d')](_0xbfa543['stack']);if(_0xbfa543['name']){delete _0xbfa543[_0x1bca('0x2e')];}_0x5bf2e8[_0x1bca('0x1e')](_0x39f08f)['send'](_0xbfa543);};}exports['index']=function(_0x39e37f,_0x49a6a8){var _0x313dff={},_0x44b319={},_0x251ed3={'count':0x0,'rows':[]};var _0x56c130=_['map'](db[_0x1bca('0x2f')]['rawAttributes'],function(_0x2da745){return{'name':_0x2da745[_0x1bca('0x30')],'type':_0x2da745[_0x1bca('0x31')][_0x1bca('0x32')]};});_0x44b319['model']=_['map'](_0x56c130,_0x1bca('0x2e'));_0x44b319[_0x1bca('0x33')]=_[_0x1bca('0x34')](_0x39e37f['query']);_0x44b319[_0x1bca('0x35')]=_[_0x1bca('0x36')](_0x44b319[_0x1bca('0x37')],_0x44b319[_0x1bca('0x33')]);_0x313dff[_0x1bca('0x38')]=_[_0x1bca('0x36')](_0x44b319[_0x1bca('0x37')],qs[_0x1bca('0x39')](_0x39e37f[_0x1bca('0x33')][_0x1bca('0x39')]));_0x313dff[_0x1bca('0x38')]=_0x313dff[_0x1bca('0x38')][_0x1bca('0x3a')]?_0x313dff['attributes']:_0x44b319['model'];if(!_0x39e37f[_0x1bca('0x33')][_0x1bca('0x3b')](_0x1bca('0x3c'))){_0x313dff['limit']=qs[_0x1bca('0x22')](_0x39e37f[_0x1bca('0x33')][_0x1bca('0x22')]);_0x313dff[_0x1bca('0x20')]=qs['offset'](_0x39e37f[_0x1bca('0x33')]['offset']);}_0x313dff['order']=qs[_0x1bca('0x3d')](_0x39e37f[_0x1bca('0x33')][_0x1bca('0x3d')]);_0x313dff[_0x1bca('0x3e')]=qs[_0x1bca('0x35')](_[_0x1bca('0x3f')](_0x39e37f[_0x1bca('0x33')],_0x44b319[_0x1bca('0x35')]),_0x56c130);if(_0x39e37f[_0x1bca('0x33')][_0x1bca('0x40')]){_0x313dff[_0x1bca('0x3e')]=_[_0x1bca('0x41')](_0x313dff[_0x1bca('0x3e')],{'$or':_[_0x1bca('0x42')](_0x56c130,function(_0x1dd630){if(_0x1dd630[_0x1bca('0x31')]!==_0x1bca('0x43')){var _0xc7d5a6={};_0xc7d5a6[_0x1dd630[_0x1bca('0x2e')]]={'$like':'%'+_0x39e37f[_0x1bca('0x33')][_0x1bca('0x40')]+'%'};return _0xc7d5a6;}})});}_0x313dff=_['merge']({},_0x313dff,_0x39e37f[_0x1bca('0x44')]);var _0x45cdc5={'where':_0x313dff[_0x1bca('0x3e')]};return db[_0x1bca('0x2f')]['count'](_0x45cdc5)['then'](function(_0x3301c5){_0x251ed3[_0x1bca('0x23')]=_0x3301c5;if(_0x39e37f['query'][_0x1bca('0x45')]){_0x313dff[_0x1bca('0x46')]=[{'all':!![]}];}return db[_0x1bca('0x2f')][_0x1bca('0x47')](_0x313dff);})[_0x1bca('0x29')](function(_0x7485f0){_0x251ed3[_0x1bca('0x48')]=_0x7485f0;return _0x251ed3;})[_0x1bca('0x29')](respondWithFilteredResult(_0x49a6a8,_0x313dff))[_0x1bca('0x49')](handleError(_0x49a6a8,null));};exports[_0x1bca('0x4a')]=function(_0x9c4499,_0x55c576){var _0x136f62={'raw':!![],'where':{'id':_0x9c4499[_0x1bca('0x4b')]['id']}},_0x10441e={};_0x10441e[_0x1bca('0x37')]=_[_0x1bca('0x34')](db[_0x1bca('0x2f')]['rawAttributes']);_0x10441e[_0x1bca('0x33')]=_[_0x1bca('0x34')](_0x9c4499['query']);_0x10441e[_0x1bca('0x35')]=_['intersection'](_0x10441e[_0x1bca('0x37')],_0x10441e[_0x1bca('0x33')]);_0x136f62[_0x1bca('0x38')]=_[_0x1bca('0x36')](_0x10441e[_0x1bca('0x37')],qs[_0x1bca('0x39')](_0x9c4499[_0x1bca('0x33')][_0x1bca('0x39')]));_0x136f62['attributes']=_0x136f62['attributes'][_0x1bca('0x3a')]?_0x136f62[_0x1bca('0x38')]:_0x10441e[_0x1bca('0x37')];if(_0x9c4499[_0x1bca('0x33')][_0x1bca('0x45')]){_0x136f62[_0x1bca('0x46')]=[{'all':!![]}];}_0x136f62=_[_0x1bca('0x41')]({},_0x136f62,_0x9c4499['options']);return db[_0x1bca('0x2f')][_0x1bca('0x4c')](_0x136f62)[_0x1bca('0x29')](handleEntityNotFound(_0x55c576,null))['then'](respondWithResult(_0x55c576,null))[_0x1bca('0x49')](handleError(_0x55c576,null));};exports['create']=function(_0x3a12bb,_0x1d2feb){return db[_0x1bca('0x2f')]['create'](_0x3a12bb[_0x1bca('0x4d')],{})[_0x1bca('0x29')](function(_0x2a1590){var _0x56df1d=_0x3a12bb[_0x1bca('0x4e')][_0x1bca('0x2a')]({'plain':!![]});if(!_0x56df1d)throw new Error(_0x1bca('0x4f'));if(_0x56df1d[_0x1bca('0x50')]===_0x1bca('0x4e')){var _0x2ccd8d=_0x2a1590[_0x1bca('0x2a')]({'plain':!![]});var _0x1e657d=_0x1bca('0x2b');return db[_0x1bca('0x51')][_0x1bca('0x4c')]({'where':{'name':_0x1e657d,'userProfileId':_0x56df1d[_0x1bca('0x52')]},'raw':!![]})[_0x1bca('0x29')](function(_0x2a5178){if(_0x2a5178&&_0x2a5178['autoAssociation']===0x0){return db[_0x1bca('0x53')]['create']({'name':_0x2ccd8d[_0x1bca('0x2e')],'resourceId':_0x2ccd8d['id'],'type':_0x2a5178[_0x1bca('0x2e')],'sectionId':_0x2a5178['id']},{})[_0x1bca('0x29')](function(){return _0x2a1590;});}else{return _0x2a1590;}})[_0x1bca('0x49')](function(_0x149f09){logger[_0x1bca('0x2d')](_0x1bca('0x54'),_0x149f09);throw _0x149f09;});}return _0x2a1590;})[_0x1bca('0x29')](respondWithResult(_0x1d2feb,0xc9))[_0x1bca('0x49')](handleError(_0x1d2feb,null));};exports[_0x1bca('0x28')]=function(_0x1aff9a,_0x5b9e0c){if(_0x1aff9a[_0x1bca('0x4d')]['id']){delete _0x1aff9a[_0x1bca('0x4d')]['id'];}return db['CmHopperAdditionalPhone']['find']({'where':{'id':_0x1aff9a[_0x1bca('0x4b')]['id']}})[_0x1bca('0x29')](handleEntityNotFound(_0x5b9e0c,null))[_0x1bca('0x29')](saveUpdates(_0x1aff9a['body'],null))[_0x1bca('0x29')](respondWithResult(_0x5b9e0c,null))[_0x1bca('0x49')](handleError(_0x5b9e0c,null));};exports[_0x1bca('0x2c')]=function(_0x1afef2,_0xa9deb1){return db[_0x1bca('0x2f')][_0x1bca('0x4c')]({'where':{'id':_0x1afef2[_0x1bca('0x4b')]['id']}})[_0x1bca('0x29')](handleEntityNotFound(_0xa9deb1,null))['then'](removeEntity(_0xa9deb1,null))[_0x1bca('0x49')](handleError(_0xa9deb1,null));};
\ No newline at end of file
+var _0x2bc7=['catch','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','limit','undefined','Content-Range','save','update','destroy','then','get','CmHopperAdditionalPhones','end','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','count','includeAll','findAll','rows','params','include','merge','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x2fc82c,_0x1445db){var _0xa8d489=function(_0x111d1a){while(--_0x111d1a){_0x2fc82c['push'](_0x2fc82c['shift']());}};_0xa8d489(++_0x1445db);}(_0x2bc7,0xf4));var _0x72bc=function(_0x27ede9,_0x11e440){_0x27ede9=_0x27ede9-0x0;var _0x299e57=_0x2bc7[_0x27ede9];return _0x299e57;};'use strict';var emlformat=require(_0x72bc('0x0'));var rimraf=require(_0x72bc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x72bc('0x2'));var rp=require(_0x72bc('0x3'));var moment=require(_0x72bc('0x4'));var BPromise=require(_0x72bc('0x5'));var Mustache=require(_0x72bc('0x6'));var util=require(_0x72bc('0x7'));var path=require(_0x72bc('0x8'));var sox=require(_0x72bc('0x9'));var csv=require(_0x72bc('0xa'));var ejs=require(_0x72bc('0xb'));var fs=require('fs');var fs_extra=require(_0x72bc('0xc'));var _=require('lodash');var squel=require(_0x72bc('0xd'));var crypto=require(_0x72bc('0xe'));var jsforce=require(_0x72bc('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x72bc('0x10'));var Papa=require(_0x72bc('0x11'));var Redis=require(_0x72bc('0x12'));var authService=require(_0x72bc('0x13'));var qs=require(_0x72bc('0x14'));var as=require(_0x72bc('0x15'));var hardwareService=require(_0x72bc('0x16'));var logger=require('../../config/logger')(_0x72bc('0x17'));var utils=require(_0x72bc('0x18'));var config=require(_0x72bc('0x19'));var licenseUtil=require(_0x72bc('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x87018c,_0x37d780){_0x37d780=_0x37d780||0xcc;return function(_0x497f08){if(_0x497f08){return _0x87018c[_0x72bc('0x1b')](_0x37d780);}return _0x87018c[_0x72bc('0x1c')](_0x37d780)['end']();};}function respondWithResult(_0x33fd7c,_0x47aad0){_0x47aad0=_0x47aad0||0xc8;return function(_0x4126bb){if(_0x4126bb){return _0x33fd7c[_0x72bc('0x1c')](_0x47aad0)['json'](_0x4126bb);}};}function respondWithFilteredResult(_0x1fdd5c,_0x4e077d){return function(_0x3597a2){if(_0x3597a2){var _0x355618=typeof _0x4e077d[_0x72bc('0x1d')]==='undefined'&&typeof _0x4e077d[_0x72bc('0x1e')]===_0x72bc('0x1f');var _0x436eb5=_0x3597a2['count'];var _0x2bd5aa=_0x355618?0x0:_0x4e077d[_0x72bc('0x1d')];var _0x2d1170=_0x355618?_0x3597a2['count']:_0x4e077d[_0x72bc('0x1d')]+_0x4e077d[_0x72bc('0x1e')];var _0x40d334;if(_0x2d1170>=_0x436eb5){_0x2d1170=_0x436eb5;_0x40d334=0xc8;}else{_0x40d334=0xce;}_0x1fdd5c['status'](_0x40d334);return _0x1fdd5c['set'](_0x72bc('0x20'),_0x2bd5aa+'-'+_0x2d1170+'/'+_0x436eb5)['json'](_0x3597a2);}return null;};}function patchUpdates(_0x28cf77){return function(_0x18dc99){try{jsonpatch['apply'](_0x18dc99,_0x28cf77,!![]);}catch(_0x48b1b4){return BPromise['reject'](_0x48b1b4);}return _0x18dc99[_0x72bc('0x21')]();};}function saveUpdates(_0x4d1a9f,_0x2702bd){return function(_0x5e0db5){if(_0x5e0db5){return _0x5e0db5[_0x72bc('0x22')](_0x4d1a9f)['then'](function(_0x5a70ef){return _0x5a70ef;});}return null;};}function removeEntity(_0x4178c3,_0x47896b){return function(_0x40b44a){if(_0x40b44a){return _0x40b44a[_0x72bc('0x23')]()[_0x72bc('0x24')](function(){var _0x3a328d=_0x40b44a[_0x72bc('0x25')]({'plain':!![]});var _0x37385f=_0x72bc('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x37385f,'resourceId':_0x3a328d['id']}})[_0x72bc('0x24')](function(){return _0x40b44a;});})[_0x72bc('0x24')](function(){_0x4178c3[_0x72bc('0x1c')](0xcc)[_0x72bc('0x27')]();});}};}function handleEntityNotFound(_0x4f6a84,_0x16272c){return function(_0x4f16f7){if(!_0x4f16f7){_0x4f6a84['sendStatus'](0x194);}return _0x4f16f7;};}function handleError(_0x54fdbd,_0x39d9fe){_0x39d9fe=_0x39d9fe||0x1f4;return function(_0x23fc15){logger[_0x72bc('0x28')](_0x23fc15[_0x72bc('0x29')]);if(_0x23fc15[_0x72bc('0x2a')]){delete _0x23fc15[_0x72bc('0x2a')];}_0x54fdbd['status'](_0x39d9fe)[_0x72bc('0x2b')](_0x23fc15);};}exports[_0x72bc('0x2c')]=function(_0x2ea776,_0x2c97ac){var _0x116407={},_0x484779={},_0xd22fb9={'count':0x0,'rows':[]};var _0xf33edf=_[_0x72bc('0x2d')](db[_0x72bc('0x2e')][_0x72bc('0x2f')],function(_0x155321){return{'name':_0x155321[_0x72bc('0x30')],'type':_0x155321['type']['key']};});_0x484779['model']=_[_0x72bc('0x2d')](_0xf33edf,'name');_0x484779[_0x72bc('0x31')]=_[_0x72bc('0x32')](_0x2ea776['query']);_0x484779[_0x72bc('0x33')]=_[_0x72bc('0x34')](_0x484779[_0x72bc('0x35')],_0x484779[_0x72bc('0x31')]);_0x116407['attributes']=_[_0x72bc('0x34')](_0x484779[_0x72bc('0x35')],qs['fields'](_0x2ea776[_0x72bc('0x31')][_0x72bc('0x36')]));_0x116407[_0x72bc('0x37')]=_0x116407['attributes']['length']?_0x116407[_0x72bc('0x37')]:_0x484779[_0x72bc('0x35')];if(!_0x2ea776[_0x72bc('0x31')][_0x72bc('0x38')]('nolimit')){_0x116407[_0x72bc('0x1e')]=qs[_0x72bc('0x1e')](_0x2ea776[_0x72bc('0x31')][_0x72bc('0x1e')]);_0x116407[_0x72bc('0x1d')]=qs[_0x72bc('0x1d')](_0x2ea776['query'][_0x72bc('0x1d')]);}_0x116407[_0x72bc('0x39')]=qs['sort'](_0x2ea776[_0x72bc('0x31')][_0x72bc('0x3a')]);_0x116407[_0x72bc('0x3b')]=qs[_0x72bc('0x33')](_[_0x72bc('0x3c')](_0x2ea776[_0x72bc('0x31')],_0x484779['filters']),_0xf33edf);if(_0x2ea776[_0x72bc('0x31')][_0x72bc('0x3d')]){_0x116407['where']=_['merge'](_0x116407[_0x72bc('0x3b')],{'$or':_[_0x72bc('0x2d')](_0xf33edf,function(_0x6ac9cc){if(_0x6ac9cc['type']!==_0x72bc('0x3e')){var _0x57ada1={};_0x57ada1[_0x6ac9cc[_0x72bc('0x2a')]]={'$like':'%'+_0x2ea776['query'][_0x72bc('0x3d')]+'%'};return _0x57ada1;}})});}_0x116407=_['merge']({},_0x116407,_0x2ea776['options']);var _0x196d0b={'where':_0x116407[_0x72bc('0x3b')]};return db[_0x72bc('0x2e')][_0x72bc('0x3f')](_0x196d0b)[_0x72bc('0x24')](function(_0x34787e){_0xd22fb9[_0x72bc('0x3f')]=_0x34787e;if(_0x2ea776[_0x72bc('0x31')][_0x72bc('0x40')]){_0x116407['include']=[{'all':!![]}];}return db['CmHopperAdditionalPhone'][_0x72bc('0x41')](_0x116407);})[_0x72bc('0x24')](function(_0x28883b){_0xd22fb9[_0x72bc('0x42')]=_0x28883b;return _0xd22fb9;})[_0x72bc('0x24')](respondWithFilteredResult(_0x2c97ac,_0x116407))['catch'](handleError(_0x2c97ac,null));};exports['show']=function(_0x2bb9d7,_0x47607c){var _0x6fe56d={'raw':!![],'where':{'id':_0x2bb9d7[_0x72bc('0x43')]['id']}},_0x432d8a={};_0x432d8a[_0x72bc('0x35')]=_[_0x72bc('0x32')](db[_0x72bc('0x2e')][_0x72bc('0x2f')]);_0x432d8a[_0x72bc('0x31')]=_[_0x72bc('0x32')](_0x2bb9d7[_0x72bc('0x31')]);_0x432d8a['filters']=_['intersection'](_0x432d8a[_0x72bc('0x35')],_0x432d8a[_0x72bc('0x31')]);_0x6fe56d['attributes']=_['intersection'](_0x432d8a[_0x72bc('0x35')],qs['fields'](_0x2bb9d7[_0x72bc('0x31')]['fields']));_0x6fe56d[_0x72bc('0x37')]=_0x6fe56d['attributes']['length']?_0x6fe56d[_0x72bc('0x37')]:_0x432d8a['model'];if(_0x2bb9d7['query'][_0x72bc('0x40')]){_0x6fe56d[_0x72bc('0x44')]=[{'all':!![]}];}_0x6fe56d=_[_0x72bc('0x45')]({},_0x6fe56d,_0x2bb9d7[_0x72bc('0x46')]);return db['CmHopperAdditionalPhone']['find'](_0x6fe56d)[_0x72bc('0x24')](handleEntityNotFound(_0x47607c,null))['then'](respondWithResult(_0x47607c,null))['catch'](handleError(_0x47607c,null));};exports[_0x72bc('0x47')]=function(_0x4970df,_0x47b5ce){return db['CmHopperAdditionalPhone'][_0x72bc('0x47')](_0x4970df[_0x72bc('0x48')],{})[_0x72bc('0x24')](function(_0x4b7351){var _0x403157=_0x4970df['user'][_0x72bc('0x25')]({'plain':!![]});if(!_0x403157)throw new Error(_0x72bc('0x49'));if(_0x403157[_0x72bc('0x4a')]===_0x72bc('0x4b')){var _0x1d992d=_0x4b7351[_0x72bc('0x25')]({'plain':!![]});var _0x23fa89=_0x72bc('0x26');return db['UserProfileSection'][_0x72bc('0x4c')]({'where':{'name':_0x23fa89,'userProfileId':_0x403157['userProfileId']},'raw':!![]})[_0x72bc('0x24')](function(_0x5e35af){if(_0x5e35af&&_0x5e35af[_0x72bc('0x4d')]===0x0){return db[_0x72bc('0x4e')][_0x72bc('0x47')]({'name':_0x1d992d['name'],'resourceId':_0x1d992d['id'],'type':_0x5e35af['name'],'sectionId':_0x5e35af['id']},{})['then'](function(){return _0x4b7351;});}else{return _0x4b7351;}})['catch'](function(_0x364628){logger[_0x72bc('0x28')](_0x72bc('0x4f'),_0x364628);throw _0x364628;});}return _0x4b7351;})[_0x72bc('0x24')](respondWithResult(_0x47b5ce,0xc9))[_0x72bc('0x50')](handleError(_0x47b5ce,null));};exports[_0x72bc('0x22')]=function(_0x5ec018,_0x6d3308){if(_0x5ec018['body']['id']){delete _0x5ec018['body']['id'];}return db[_0x72bc('0x2e')]['find']({'where':{'id':_0x5ec018[_0x72bc('0x43')]['id']}})['then'](handleEntityNotFound(_0x6d3308,null))[_0x72bc('0x24')](saveUpdates(_0x5ec018[_0x72bc('0x48')],null))[_0x72bc('0x24')](respondWithResult(_0x6d3308,null))[_0x72bc('0x50')](handleError(_0x6d3308,null));};exports[_0x72bc('0x23')]=function(_0x4d3bd5,_0x209900){return db[_0x72bc('0x2e')][_0x72bc('0x4c')]({'where':{'id':_0x4d3bd5['params']['id']}})[_0x72bc('0x24')](handleEntityNotFound(_0x209900,null))['then'](removeEntity(_0x209900,null))[_0x72bc('0x50')](handleError(_0x209900,null));};
\ No newline at end of file
index cf51537..a62c3d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e4=['../../config/environment','exports','define','cm_hopper_additional_phones','lodash','../../config/logger','api','bluebird','request-promise','path'];(function(_0x5e6bec,_0x1eb54d){var _0x5dc5cf=function(_0x59429a){while(--_0x59429a){_0x5e6bec['push'](_0x5e6bec['shift']());}};_0x5dc5cf(++_0x1eb54d);}(_0x70e4,0xae));var _0x470e=function(_0x2e58c7,_0x23d092){_0x2e58c7=_0x2e58c7-0x0;var _0x26eb00=_0x70e4[_0x2e58c7];return _0x26eb00;};'use strict';var _=require(_0x470e('0x0'));var util=require('util');var logger=require(_0x470e('0x1'))(_0x470e('0x2'));var moment=require('moment');var BPromise=require(_0x470e('0x3'));var rp=require(_0x470e('0x4'));var fs=require('fs');var path=require(_0x470e('0x5'));var rimraf=require('rimraf');var config=require(_0x470e('0x6'));var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0x470e('0x7')]=function(_0x2293b3,_0x5ebf75){return _0x2293b3[_0x470e('0x8')]('CmHopperAdditionalPhone',attributes,{'tableName':_0x470e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7399=['path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','define','cm_hopper_additional_phones','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x482816,_0x35e716){var _0xb89169=function(_0x379c49){while(--_0x379c49){_0x482816['push'](_0x482816['shift']());}};_0xb89169(++_0x35e716);}(_0x7399,0x13e));var _0x9739=function(_0x5a89ea,_0x436388){_0x5a89ea=_0x5a89ea-0x0;var _0x21193d=_0x7399[_0x5a89ea];return _0x21193d;};'use strict';var _=require(_0x9739('0x0'));var util=require(_0x9739('0x1'));var logger=require(_0x9739('0x2'))(_0x9739('0x3'));var moment=require(_0x9739('0x4'));var BPromise=require(_0x9739('0x5'));var rp=require(_0x9739('0x6'));var fs=require('fs');var path=require(_0x9739('0x7'));var rimraf=require(_0x9739('0x8'));var config=require(_0x9739('0x9'));var attributes=require(_0x9739('0xa'));module['exports']=function(_0x5f4e38,_0x4eb9a2){return _0x5f4e38[_0x9739('0xb')]('CmHopperAdditionalPhone',attributes,{'tableName':_0x9739('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93d9c49..7103196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x805b=['body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countnoanswerretry','SwapAdditionalPhones','duration','waitTime','isNil','scheduledat','add','minutes','phone','createdAt','updatedAt','transaction','update','IncrementPreviewCounters','field','util','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne'];(function(_0x15071a,_0x40905e){var _0x2bb24b=function(_0x5e3abd){while(--_0x5e3abd){_0x15071a['push'](_0x15071a['shift']());}};_0x2bb24b(++_0x40905e);}(_0x805b,0x8f));var _0xb805=function(_0x140fb5,_0x3c27f8){_0x140fb5=_0x140fb5-0x0;var _0x1b999b=_0x805b[_0x140fb5];return _0x1b999b;};'use strict';var _=require('lodash');var util=require(_0xb805('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb805('0x1'));var fs=require('fs');var Redis=require(_0xb805('0x2'));var db=require(_0xb805('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb805('0x4'));var jayson=require(_0xb805('0x5'));var client=jayson['client'][_0xb805('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1ac430,_0x44aaa1,_0x1665aa){return new BPromise(function(_0x1b145,_0x1f1842){return client[_0xb805('0x7')](_0x1ac430,_0x1665aa)['then'](function(_0x2e7f17){logger[_0xb805('0x8')](_0xb805('0x9'),_0x44aaa1,_0xb805('0xa'));logger[_0xb805('0xb')](_0xb805('0xc'),_0x44aaa1,_0xb805('0xa'),JSON[_0xb805('0xd')](_0x2e7f17));if(_0x2e7f17[_0xb805('0xe')]){if(_0x2e7f17[_0xb805('0xe')][_0xb805('0xf')]===0x1f4){logger[_0xb805('0xe')](_0xb805('0x9'),_0x44aaa1,_0x2e7f17[_0xb805('0xe')][_0xb805('0x10')]);return _0x1f1842(_0x2e7f17[_0xb805('0xe')][_0xb805('0x10')]);}logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x44aaa1,_0x2e7f17[_0xb805('0xe')]['message']);return _0x1b145(_0x2e7f17[_0xb805('0xe')]['message']);}else{logger[_0xb805('0x8')](_0xb805('0x9'),_0x44aaa1,'request\x20sent');_0x1b145(_0x2e7f17[_0xb805('0x11')][_0xb805('0x10')]);}})[_0xb805('0x12')](function(_0x3a6f4a){logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x44aaa1,_0x3a6f4a);_0x1f1842(_0x3a6f4a);});});}exports[_0xb805('0x13')]=function(_0x2b1889){var _0x209c44=this;return new Promise(function(_0x39cada,_0xff2527){return db[_0xb805('0x14')][_0xb805('0x15')]({'raw':!![],'where':{'ContactId':_0x2b1889[_0xb805('0x16')][_0xb805('0x17')],'ListId':_0x2b1889['body'][_0xb805('0x18')],'VoiceQueueId':_0x2b1889[_0xb805('0x16')][_0xb805('0x19')]===undefined?null:_0x2b1889['body']['VoiceQueueId'],'CampaignId':_0x2b1889['body']['CampaignId']===undefined?null:_0x2b1889[_0xb805('0x16')][_0xb805('0x1a')]}})[_0xb805('0x1b')](function(_0x5f5880){if(_0x5f5880!=null){return db[_0xb805('0x1c')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x5f5880['id'],'OrderBy':{'$gt':_0x5f5880[_0xb805('0x1d')]}},'order':[[_0xb805('0x1d'),_0xb805('0x1e')]]})[_0xb805('0x1b')](function(_0x27b9d2){var _0x1f261a=0x0;if(_0x27b9d2){if(_0x27b9d2[_0xb805('0x1f')]+_0x27b9d2[_0xb805('0x20')]+_0x27b9d2['countnoanswerretry']+_0x27b9d2[_0xb805('0x21')]+_0x27b9d2[_0xb805('0x22')]+_0x27b9d2[_0xb805('0x23')]+_0x27b9d2[_0xb805('0x24')]+_0x27b9d2[_0xb805('0x25')]<_0x2b1889[_0xb805('0x26')][_0xb805('0x27')])_0x1f261a=0x1;_0x39cada({'additional':_0x1f261a});}else{return db[_0xb805('0x1c')][_0xb805('0x15')]({'raw':!![],'where':{'CmHopperId':_0x5f5880['id']},'order':[[_0xb805('0x1d'),_0xb805('0x1e')]]})[_0xb805('0x1b')](function(_0xf42bd0){var _0x5433a5=0x0;if(_0xf42bd0){if(_0xf42bd0[_0xb805('0x1f')]+_0xf42bd0[_0xb805('0x20')]+_0xf42bd0[_0xb805('0x28')]+_0xf42bd0['countnosuchnumberretry']+_0xf42bd0['countdropretry']+_0xf42bd0[_0xb805('0x23')]+_0xf42bd0['countmachineretry']+_0xf42bd0[_0xb805('0x25')]<_0x2b1889['entity'][_0xb805('0x27')])_0x5433a5=0x1;_0x39cada({'additional':_0x5433a5});}else{_0x39cada({'additional':0x0});}})['catch'](function(_0x2d0ba1){logger[_0xb805('0xe')](_0xb805('0x13'),_0x2d0ba1[_0xb805('0x10')]);_0xff2527(_0x209c44[_0xb805('0xe')](0x1f4,_0x2d0ba1['message']));});}})[_0xb805('0x12')](function(_0x3d8662){logger[_0xb805('0xe')](_0xb805('0x13'),_0x3d8662['message']);_0xff2527(_0x209c44[_0xb805('0xe')](0x1f4,_0x3d8662['message']));});}else _0x39cada({'additional':0x0});});});};exports[_0xb805('0x29')]=function(_0x169cce){var _0xb43fca=this;return new Promise(function(_0x133613,_0x45d752){return db[_0xb805('0x14')][_0xb805('0x15')]({'raw':!![],'where':{'ContactId':_0x169cce[_0xb805('0x16')][_0xb805('0x17')],'ListId':_0x169cce[_0xb805('0x16')][_0xb805('0x18')],'VoiceQueueId':_0x169cce['body'][_0xb805('0x19')]===undefined?null:_0x169cce[_0xb805('0x16')]['VoiceQueueId'],'CampaignId':_0x169cce[_0xb805('0x16')][_0xb805('0x1a')]===undefined?null:_0x169cce[_0xb805('0x16')][_0xb805('0x1a')]}})[_0xb805('0x1b')](function(_0x36ef74){if(_0x36ef74!=null){return db[_0xb805('0x1c')][_0xb805('0x15')]({'raw':!![],'where':{'CmHopperId':_0x36ef74['id'],'OrderBy':{'$gte':_0x36ef74[_0xb805('0x1d')]}},'order':[[_0xb805('0x1d'),_0xb805('0x1e')]]})[_0xb805('0x1b')](function(_0x2b9ca6){if(_0x2b9ca6)return activateAdditionalPhone(_0x36ef74,_0x169cce['body'],_0x2b9ca6,_0x169cce[_0xb805('0x2a')],_0x169cce[_0xb805('0x2b')])[_0xb805('0x1b')](function(_0x5f4695){_0x133613(_0x5f4695);});else{return db[_0xb805('0x1c')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x36ef74['id']},'order':[[_0xb805('0x1d'),'ASC']]})[_0xb805('0x1b')](function(_0x246712){if(_0x246712)return activateAdditionalPhone(_0x36ef74,_0x169cce[_0xb805('0x16')],_0x246712,_0x169cce[_0xb805('0x2a')],_0x169cce[_0xb805('0x2b')])[_0xb805('0x1b')](function(_0x537814){_0x133613(_0x537814);});else{_0x133613({'id':_0x36ef74['id'],'phone':''});}})[_0xb805('0x12')](function(_0x1d734){logger[_0xb805('0xe')](_0xb805('0x13'),_0x1d734['message']);_0x45d752(_0xb43fca[_0xb805('0xe')](0x1f4,_0x1d734[_0xb805('0x10')]));});}})[_0xb805('0x12')](function(_0x2ada76){logger[_0xb805('0xe')]('VerifyAdditionalPhones',_0x2ada76[_0xb805('0x10')]);_0x45d752(_0xb43fca[_0xb805('0xe')](0x1f4,_0x2ada76['message']));});}else _0x133613(0x1);});});};function activateAdditionalPhone(_0x21f8ee,_0x5b5e37,_0x441f72,_0xccc254,_0x512817){return new Promise(function(_0x29a9af,_0x53e4e9){var _0x1b7b30;if(_[_0xb805('0x2c')](_0x441f72['scheduledat'])){_0x441f72[_0xb805('0x2d')]=moment();}if(moment()>moment(_0x441f72[_0xb805('0x2d')])){_0x1b7b30=moment()[_0xb805('0x2e')](_0x512817||0x3,_0xb805('0x2f'));}else{if(_0x441f72[_0xb805('0x1d')]==0x0){_0x1b7b30=moment(_0x441f72[_0xb805('0x2d')]);}else{_0x1b7b30=moment()[_0xb805('0x2e')](_0x512817||0x3,_0xb805('0x2f'));}}if(_[_0xb805('0x2c')](_0x1b7b30)){_0x1b7b30=moment()['add'](_0x512817||0x3,_0xb805('0x2f'));}var _0x45ce79={'phone':_0x21f8ee[_0xb805('0x30')],'active':0x0,'OrderBy':_['isNil'](_0x21f8ee[_0xb805('0x1d')])?0x0:_0x21f8ee[_0xb805('0x1d')],'scheduledat':moment()[_0xb805('0x2e')](_0xccc254||0x1,_0xb805('0x2f')),'countbusyretry':_0x5b5e37[_0xb805('0x1f')],'countcongestionretry':_0x5b5e37[_0xb805('0x20')],'countnoanswerretry':_0x5b5e37[_0xb805('0x28')],'countnosuchnumberretry':_0x5b5e37[_0xb805('0x21')],'countdropretry':_0x5b5e37['countdropretry'],'countabandonedretry':_0x5b5e37['countabandonedretry'],'countmachineretry':_0x5b5e37[_0xb805('0x24')],'countagentrejectretry':_0x5b5e37[_0xb805('0x25')],'createdAt':_0x5b5e37[_0xb805('0x31')],'updatedAt':_0x5b5e37[_0xb805('0x32')]};var _0x92402d={'CmHopperId':_0x21f8ee['id'],'phone':_0x441f72[_0xb805('0x30')],'active':0x0,'OrderBy':_[_0xb805('0x2c')](_0x441f72[_0xb805('0x1d')])?0x0:_0x441f72[_0xb805('0x1d')],'scheduledat':_0x1b7b30,'countbusyretry':_0x441f72['countbusyretry'],'countcongestionretry':_0x441f72[_0xb805('0x20')],'countnoanswerretry':_0x441f72[_0xb805('0x28')],'countnosuchnumberretry':_0x441f72[_0xb805('0x21')],'countdropretry':_0x441f72[_0xb805('0x22')],'countabandonedretry':_0x441f72[_0xb805('0x23')],'countmachineretry':_0x441f72['countmachineretry'],'countagentrejectretry':_0x441f72[_0xb805('0x25')],'createdAt':_0x441f72[_0xb805('0x31')],'updatedAt':_0x441f72[_0xb805('0x32')]};return db['sequelize'][_0xb805('0x33')](function(_0x2c8abf){return db[_0xb805('0x1c')][_0xb805('0x34')](_0x45ce79,{'where':{'id':_0x441f72['id']}},{'transaction':_0x2c8abf})[_0xb805('0x1b')](function(){return db['CmHopper'][_0xb805('0x34')](_0x92402d,{'where':{'id':_0x21f8ee['id']}},{'transaction':_0x2c8abf});});})[_0xb805('0x1b')](function(_0x5afd30){_0x29a9af({'id':_0x21f8ee['id'],'phone':_0x441f72[_0xb805('0x30')]});})['catch'](function(_0x34a7a2){logger[_0xb805('0xe')]('activateAdditionalPhone',_0x34a7a2['message']);_0x53e4e9({'error':_0x34a7a2[_0xb805('0x10')]});});});}exports[_0xb805('0x35')]=function(_0x1b7b48){var _0xe31f4=this;return new Promise(function(_0x51f705,_0x3b469a){return db[_0xb805('0x14')]['update'](_0x1b7b48['body'][_0xb805('0x36')],{'where':{'id':_0x1b7b48[_0xb805('0x16')]['id']}})[_0xb805('0x1b')](function(_0x2e990d){_0x51f705(_0x2e990d);})[_0xb805('0x12')](function(_0x31de98){logger[_0xb805('0xe')]('IncrementPreviewCounters',_0x31de98['message']);_0x3b469a(_0xe31f4[_0xb805('0xe')](0x1f4,_0x31de98[_0xb805('0x10')]));});});};
\ No newline at end of file
+var _0xc23c=['countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','ASC','countcongestionretry','catch','ContactId','CampaignId','duration','waitTime','scheduledat','add','minutes','phone','isNil','countdropretry','createdAt','updatedAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','error','message','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','VoiceQueueId','CmHopperAdditionalPhone','OrderBy','countbusyretry','countnoanswerretry'];(function(_0x117f4c,_0x36a9b1){var _0x2b24e9=function(_0x31761b){while(--_0x31761b){_0x117f4c['push'](_0x117f4c['shift']());}};_0x2b24e9(++_0x36a9b1);}(_0xc23c,0x8b));var _0xcc23=function(_0x51bfa7,_0x51c8e0){_0x51bfa7=_0x51bfa7-0x0;var _0x1cf7ae=_0xc23c[_0x51bfa7];return _0x1cf7ae;};'use strict';var _=require(_0xcc23('0x0'));var util=require('util');var moment=require(_0xcc23('0x1'));var BPromise=require('bluebird');var rs=require(_0xcc23('0x2'));var fs=require('fs');var Redis=require(_0xcc23('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcc23('0x4'));var logger=require(_0xcc23('0x5'))(_0xcc23('0x6'));var config=require(_0xcc23('0x7'));var jayson=require(_0xcc23('0x8'));var client=jayson[_0xcc23('0x9')][_0xcc23('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x447763,_0x29fcc6,_0x20f05d){return new BPromise(function(_0x19e9cd,_0x308e1e){return client['request'](_0x447763,_0x20f05d)[_0xcc23('0xb')](function(_0x90709b){logger[_0xcc23('0xc')](_0xcc23('0xd'),_0x29fcc6,_0xcc23('0xe'));logger[_0xcc23('0xf')](_0xcc23('0x10'),_0x29fcc6,_0xcc23('0xe'),JSON['stringify'](_0x90709b));if(_0x90709b[_0xcc23('0x11')]){if(_0x90709b[_0xcc23('0x11')]['code']===0x1f4){logger[_0xcc23('0x11')](_0xcc23('0xd'),_0x29fcc6,_0x90709b[_0xcc23('0x11')][_0xcc23('0x12')]);return _0x308e1e(_0x90709b[_0xcc23('0x11')][_0xcc23('0x12')]);}logger[_0xcc23('0x11')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x29fcc6,_0x90709b[_0xcc23('0x11')][_0xcc23('0x12')]);return _0x19e9cd(_0x90709b[_0xcc23('0x11')][_0xcc23('0x12')]);}else{logger[_0xcc23('0xc')](_0xcc23('0xd'),_0x29fcc6,_0xcc23('0xe'));_0x19e9cd(_0x90709b['result'][_0xcc23('0x12')]);}})['catch'](function(_0x1759d4){logger[_0xcc23('0x11')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x29fcc6,_0x1759d4);_0x308e1e(_0x1759d4);});});}exports[_0xcc23('0x13')]=function(_0x5c4fb3){var _0x58c254=this;return new Promise(function(_0x44048f,_0x2bcfa3){return db[_0xcc23('0x14')][_0xcc23('0x15')]({'raw':!![],'where':{'ContactId':_0x5c4fb3[_0xcc23('0x16')]['ContactId'],'ListId':_0x5c4fb3[_0xcc23('0x16')][_0xcc23('0x17')],'VoiceQueueId':_0x5c4fb3[_0xcc23('0x16')][_0xcc23('0x18')]===undefined?null:_0x5c4fb3['body'][_0xcc23('0x18')],'CampaignId':_0x5c4fb3['body']['CampaignId']===undefined?null:_0x5c4fb3['body']['CampaignId']}})['then'](function(_0x282361){if(_0x282361!=null){return db[_0xcc23('0x19')][_0xcc23('0x15')]({'raw':!![],'where':{'CmHopperId':_0x282361['id'],'OrderBy':{'$gt':_0x282361['OrderBy']}},'order':[[_0xcc23('0x1a'),'ASC']]})[_0xcc23('0xb')](function(_0x3b3d21){var _0x5562d=0x0;if(_0x3b3d21){if(_0x3b3d21[_0xcc23('0x1b')]+_0x3b3d21['countcongestionretry']+_0x3b3d21[_0xcc23('0x1c')]+_0x3b3d21[_0xcc23('0x1d')]+_0x3b3d21['countdropretry']+_0x3b3d21[_0xcc23('0x1e')]+_0x3b3d21[_0xcc23('0x1f')]+_0x3b3d21[_0xcc23('0x20')]<_0x5c4fb3[_0xcc23('0x21')][_0xcc23('0x22')])_0x5562d=0x1;_0x44048f({'additional':_0x5562d});}else{return db[_0xcc23('0x19')][_0xcc23('0x15')]({'raw':!![],'where':{'CmHopperId':_0x282361['id']},'order':[[_0xcc23('0x1a'),_0xcc23('0x23')]]})['then'](function(_0x2acce8){var _0x3dd2e2=0x0;if(_0x2acce8){if(_0x2acce8['countbusyretry']+_0x2acce8[_0xcc23('0x24')]+_0x2acce8[_0xcc23('0x1c')]+_0x2acce8['countnosuchnumberretry']+_0x2acce8['countdropretry']+_0x2acce8['countabandonedretry']+_0x2acce8[_0xcc23('0x1f')]+_0x2acce8['countagentrejectretry']<_0x5c4fb3[_0xcc23('0x21')]['dialGlobalMaxRetry'])_0x3dd2e2=0x1;_0x44048f({'additional':_0x3dd2e2});}else{_0x44048f({'additional':0x0});}})[_0xcc23('0x25')](function(_0x146249){logger[_0xcc23('0x11')](_0xcc23('0x13'),_0x146249['message']);_0x2bcfa3(_0x58c254[_0xcc23('0x11')](0x1f4,_0x146249[_0xcc23('0x12')]));});}})['catch'](function(_0x2b7ab3){logger[_0xcc23('0x11')](_0xcc23('0x13'),_0x2b7ab3[_0xcc23('0x12')]);_0x2bcfa3(_0x58c254[_0xcc23('0x11')](0x1f4,_0x2b7ab3['message']));});}else _0x44048f({'additional':0x0});});});};exports['SwapAdditionalPhones']=function(_0x2ebf3d){var _0x3f700c=this;return new Promise(function(_0xfb642d,_0xd556b6){return db[_0xcc23('0x14')][_0xcc23('0x15')]({'raw':!![],'where':{'ContactId':_0x2ebf3d[_0xcc23('0x16')][_0xcc23('0x26')],'ListId':_0x2ebf3d['body'][_0xcc23('0x17')],'VoiceQueueId':_0x2ebf3d[_0xcc23('0x16')][_0xcc23('0x18')]===undefined?null:_0x2ebf3d[_0xcc23('0x16')]['VoiceQueueId'],'CampaignId':_0x2ebf3d[_0xcc23('0x16')][_0xcc23('0x27')]===undefined?null:_0x2ebf3d['body']['CampaignId']}})[_0xcc23('0xb')](function(_0x432f27){if(_0x432f27!=null){return db['CmHopperAdditionalPhone'][_0xcc23('0x15')]({'raw':!![],'where':{'CmHopperId':_0x432f27['id'],'OrderBy':{'$gte':_0x432f27[_0xcc23('0x1a')]}},'order':[[_0xcc23('0x1a'),_0xcc23('0x23')]]})[_0xcc23('0xb')](function(_0x4cb07d){if(_0x4cb07d)return activateAdditionalPhone(_0x432f27,_0x2ebf3d[_0xcc23('0x16')],_0x4cb07d,_0x2ebf3d[_0xcc23('0x28')],_0x2ebf3d[_0xcc23('0x29')])['then'](function(_0x1509e0){_0xfb642d(_0x1509e0);});else{return db[_0xcc23('0x19')][_0xcc23('0x15')]({'raw':!![],'where':{'CmHopperId':_0x432f27['id']},'order':[[_0xcc23('0x1a'),_0xcc23('0x23')]]})[_0xcc23('0xb')](function(_0x48d89a){if(_0x48d89a)return activateAdditionalPhone(_0x432f27,_0x2ebf3d[_0xcc23('0x16')],_0x48d89a,_0x2ebf3d[_0xcc23('0x28')],_0x2ebf3d[_0xcc23('0x29')])['then'](function(_0xb84c87){_0xfb642d(_0xb84c87);});else{_0xfb642d({'id':_0x432f27['id'],'phone':''});}})[_0xcc23('0x25')](function(_0x4b03d6){logger[_0xcc23('0x11')]('VerifyAdditionalPhones',_0x4b03d6[_0xcc23('0x12')]);_0xd556b6(_0x3f700c[_0xcc23('0x11')](0x1f4,_0x4b03d6[_0xcc23('0x12')]));});}})['catch'](function(_0x4dd8b1){logger[_0xcc23('0x11')](_0xcc23('0x13'),_0x4dd8b1['message']);_0xd556b6(_0x3f700c[_0xcc23('0x11')](0x1f4,_0x4dd8b1[_0xcc23('0x12')]));});}else _0xfb642d(0x1);});});};function activateAdditionalPhone(_0x486d38,_0x5a8130,_0x1756f0,_0x2eea39,_0x364a00){return new Promise(function(_0x41bc6a,_0x2dead1){var _0x1c052e;if(_['isNil'](_0x1756f0['scheduledat'])){_0x1756f0['scheduledat']=moment();}if(moment()>moment(_0x1756f0[_0xcc23('0x2a')])){_0x1c052e=moment()[_0xcc23('0x2b')](_0x364a00||0x3,_0xcc23('0x2c'));}else{if(_0x1756f0[_0xcc23('0x1a')]==0x0){_0x1c052e=moment(_0x1756f0[_0xcc23('0x2a')]);}else{_0x1c052e=moment()[_0xcc23('0x2b')](_0x364a00||0x3,_0xcc23('0x2c'));}}if(_['isNil'](_0x1c052e)){_0x1c052e=moment()['add'](_0x364a00||0x3,_0xcc23('0x2c'));}var _0x48e436={'phone':_0x486d38[_0xcc23('0x2d')],'active':0x0,'OrderBy':_[_0xcc23('0x2e')](_0x486d38[_0xcc23('0x1a')])?0x0:_0x486d38['OrderBy'],'scheduledat':moment()[_0xcc23('0x2b')](_0x2eea39||0x1,_0xcc23('0x2c')),'countbusyretry':_0x5a8130['countbusyretry'],'countcongestionretry':_0x5a8130['countcongestionretry'],'countnoanswerretry':_0x5a8130['countnoanswerretry'],'countnosuchnumberretry':_0x5a8130['countnosuchnumberretry'],'countdropretry':_0x5a8130[_0xcc23('0x2f')],'countabandonedretry':_0x5a8130[_0xcc23('0x1e')],'countmachineretry':_0x5a8130['countmachineretry'],'countagentrejectretry':_0x5a8130[_0xcc23('0x20')],'createdAt':_0x5a8130[_0xcc23('0x30')],'updatedAt':_0x5a8130[_0xcc23('0x31')]};var _0x274922={'CmHopperId':_0x486d38['id'],'phone':_0x1756f0[_0xcc23('0x2d')],'active':0x0,'OrderBy':_[_0xcc23('0x2e')](_0x1756f0[_0xcc23('0x1a')])?0x0:_0x1756f0[_0xcc23('0x1a')],'scheduledat':_0x1c052e,'countbusyretry':_0x1756f0[_0xcc23('0x1b')],'countcongestionretry':_0x1756f0[_0xcc23('0x24')],'countnoanswerretry':_0x1756f0[_0xcc23('0x1c')],'countnosuchnumberretry':_0x1756f0['countnosuchnumberretry'],'countdropretry':_0x1756f0[_0xcc23('0x2f')],'countabandonedretry':_0x1756f0['countabandonedretry'],'countmachineretry':_0x1756f0['countmachineretry'],'countagentrejectretry':_0x1756f0['countagentrejectretry'],'createdAt':_0x1756f0['createdAt'],'updatedAt':_0x1756f0[_0xcc23('0x31')]};return db[_0xcc23('0x32')][_0xcc23('0x33')](function(_0x471571){return db[_0xcc23('0x19')][_0xcc23('0x34')](_0x48e436,{'where':{'id':_0x1756f0['id']}},{'transaction':_0x471571})[_0xcc23('0xb')](function(){return db['CmHopper'][_0xcc23('0x34')](_0x274922,{'where':{'id':_0x486d38['id']}},{'transaction':_0x471571});});})[_0xcc23('0xb')](function(_0x1506dc){_0x41bc6a({'id':_0x486d38['id'],'phone':_0x1756f0[_0xcc23('0x2d')]});})[_0xcc23('0x25')](function(_0x2a82dd){logger[_0xcc23('0x11')](_0xcc23('0x35'),_0x2a82dd[_0xcc23('0x12')]);_0x2dead1({'error':_0x2a82dd[_0xcc23('0x12')]});});});}exports[_0xcc23('0x36')]=function(_0x1eb6a0){var _0x40e512=this;return new Promise(function(_0x20b096,_0x3877a4){return db['CmHopper']['update'](_0x1eb6a0[_0xcc23('0x16')][_0xcc23('0x37')],{'where':{'id':_0x1eb6a0[_0xcc23('0x16')]['id']}})[_0xcc23('0xb')](function(_0x439d83){_0x20b096(_0x439d83);})[_0xcc23('0x25')](function(_0x312b24){logger[_0xcc23('0x11')](_0xcc23('0x36'),_0x312b24['message']);_0x3877a4(_0x40e512[_0xcc23('0x11')](0x1f4,_0x312b24[_0xcc23('0x12')]));});});};
\ No newline at end of file
index 8da0aa2..6ec6ab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b4b=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','multer','path'];(function(_0x2f7ef1,_0x3a4e66){var _0x3cbdfc=function(_0x3bb7b9){while(--_0x3bb7b9){_0x2f7ef1['push'](_0x2f7ef1['shift']());}};_0x3cbdfc(++_0x3a4e66);}(_0x4b4b,0x96));var _0xb4b4=function(_0x5eb0eb,_0x167428){_0x5eb0eb=_0x5eb0eb-0x0;var _0x3d6cf3=_0x4b4b[_0x5eb0eb];return _0x3d6cf3;};'use strict';var multer=require(_0xb4b4('0x0'));var util=require('util');var path=require(_0xb4b4('0x1'));var timeout=require('connect-timeout');var express=require(_0xb4b4('0x2'));var router=express[_0xb4b4('0x3')]();var fs_extra=require(_0xb4b4('0x4'));var auth=require(_0xb4b4('0x5'));var interaction=require(_0xb4b4('0x6'));var config=require(_0xb4b4('0x7'));var controller=require(_0xb4b4('0x8'));router[_0xb4b4('0x9')]('/',auth[_0xb4b4('0xa')](),controller[_0xb4b4('0xb')]);router[_0xb4b4('0x9')](_0xb4b4('0xc'),auth[_0xb4b4('0xa')](),controller[_0xb4b4('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb4b4('0xe')]);router[_0xb4b4('0xf')](_0xb4b4('0xc'),auth[_0xb4b4('0xa')](),controller[_0xb4b4('0x10')]);router[_0xb4b4('0x11')]('/:id',auth[_0xb4b4('0xa')](),controller[_0xb4b4('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x52ae=['multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','show','post','create','put','/:id','delete','destroy','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x52ae,0x18f));var _0xe52a=function(_0x4fb1b8,_0x32d98d){_0x4fb1b8=_0x4fb1b8-0x0;var _0x146c71=_0x52ae[_0x4fb1b8];return _0x146c71;};'use strict';var multer=require(_0xe52a('0x0'));var util=require(_0xe52a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe52a('0x2')]();var fs_extra=require(_0xe52a('0x3'));var auth=require(_0xe52a('0x4'));var interaction=require(_0xe52a('0x5'));var config=require(_0xe52a('0x6'));var controller=require(_0xe52a('0x7'));router[_0xe52a('0x8')]('/',auth[_0xe52a('0x9')](),controller[_0xe52a('0xa')]);router['get']('/:id',auth[_0xe52a('0x9')](),controller[_0xe52a('0xb')]);router[_0xe52a('0xc')]('/',auth['isAuthenticated'](),controller[_0xe52a('0xd')]);router[_0xe52a('0xe')](_0xe52a('0xf'),auth[_0xe52a('0x9')](),controller['update']);router[_0xe52a('0x10')](_0xe52a('0xf'),auth['isAuthenticated'](),controller[_0xe52a('0x11')]);module[_0xe52a('0x12')]=router;
\ No newline at end of file
index 23258e4..2612670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d4=['INTEGER','contactListQueue','moment','sequelize','exports','STRING'];(function(_0x982d1f,_0x447429){var _0x3fbb8c=function(_0x5dcb35){while(--_0x5dcb35){_0x982d1f['push'](_0x982d1f['shift']());}};_0x3fbb8c(++_0x447429);}(_0x39d4,0x9e));var _0x439d=function(_0x4ec1cc,_0x5bd36c){_0x4ec1cc=_0x4ec1cc-0x0;var _0x590a0f=_0x39d4[_0x4ec1cc];return _0x590a0f;};'use strict';var moment=require(_0x439d('0x0'));var Sequelize=require(_0x439d('0x1'));module[_0x439d('0x2')]={'phone':{'type':Sequelize[_0x439d('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x439d('0x4')],'unique':_0x439d('0x5')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x439d('0x5')},'VoiceQueueId':{'type':Sequelize[_0x439d('0x4')],'unique':_0x439d('0x5')}};
\ No newline at end of file
+var _0xef72=['exports','INTEGER','contactListQueue','moment','sequelize'];(function(_0xd8920a,_0x3248c1){var _0x50d00d=function(_0x5034a5){while(--_0x5034a5){_0xd8920a['push'](_0xd8920a['shift']());}};_0x50d00d(++_0x3248c1);}(_0xef72,0xf8));var _0x2ef7=function(_0x3cf192,_0x34c79b){_0x3cf192=_0x3cf192-0x0;var _0x3689dd=_0xef72[_0x3cf192];return _0x3689dd;};'use strict';var moment=require(_0x2ef7('0x0'));var Sequelize=require(_0x2ef7('0x1'));module[_0x2ef7('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x2ef7('0x3')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x2ef7('0x3')],'unique':_0x2ef7('0x4')}};
\ No newline at end of file
index 5bcb0fb..c1671f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54b6=['reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','keys','intersection','attributes','model','fields','query','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','CmHopperBlack','includeAll','include','findAll','rows','catch','show','filters','length','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply'];(function(_0x2a85bf,_0x526387){var _0x41af67=function(_0x2ddbbe){while(--_0x2ddbbe){_0x2a85bf['push'](_0x2a85bf['shift']());}};_0x41af67(++_0x526387);}(_0x54b6,0x10a));var _0x654b=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x54b6[_0x365be9];return _0x185c12;};'use strict';var emlformat=require(_0x654b('0x0'));var rimraf=require(_0x654b('0x1'));var zipdir=require(_0x654b('0x2'));var jsonpatch=require(_0x654b('0x3'));var rp=require('request-promise');var moment=require(_0x654b('0x4'));var BPromise=require(_0x654b('0x5'));var Mustache=require(_0x654b('0x6'));var util=require(_0x654b('0x7'));var path=require(_0x654b('0x8'));var sox=require(_0x654b('0x9'));var csv=require(_0x654b('0xa'));var ejs=require(_0x654b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x654b('0xc'));var jsforce=require(_0x654b('0xd'));var deskjs=require(_0x654b('0xe'));var toCsv=require(_0x654b('0xa'));var querystring=require(_0x654b('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x654b('0x10'));var hardwareService=require(_0x654b('0x11'));var logger=require('../../config/logger')(_0x654b('0x12'));var utils=require(_0x654b('0x13'));var config=require(_0x654b('0x14'));var licenseUtil=require(_0x654b('0x15'));var db=require(_0x654b('0x16'))['db'];function respondWithStatusCode(_0x2d669e,_0x4b1f77){_0x4b1f77=_0x4b1f77||0xcc;return function(_0x281718){if(_0x281718){return _0x2d669e[_0x654b('0x17')](_0x4b1f77);}return _0x2d669e['status'](_0x4b1f77)[_0x654b('0x18')]();};}function respondWithResult(_0x335770,_0x4edef8){_0x4edef8=_0x4edef8||0xc8;return function(_0x5db4fc){if(_0x5db4fc){return _0x335770[_0x654b('0x19')](_0x4edef8)['json'](_0x5db4fc);}};}function respondWithFilteredResult(_0x24f3c8,_0x115b1a){return function(_0x4de9d0){if(_0x4de9d0){var _0x3ae6d6=typeof _0x115b1a[_0x654b('0x1a')]==='undefined'&&typeof _0x115b1a[_0x654b('0x1b')]===_0x654b('0x1c');var _0x32881f=_0x4de9d0['count'];var _0x30941a=_0x3ae6d6?0x0:_0x115b1a[_0x654b('0x1a')];var _0x508147=_0x3ae6d6?_0x4de9d0[_0x654b('0x1d')]:_0x115b1a[_0x654b('0x1a')]+_0x115b1a[_0x654b('0x1b')];var _0x1ad0c6;if(_0x508147>=_0x32881f){_0x508147=_0x32881f;_0x1ad0c6=0xc8;}else{_0x1ad0c6=0xce;}_0x24f3c8[_0x654b('0x19')](_0x1ad0c6);return _0x24f3c8[_0x654b('0x1e')](_0x654b('0x1f'),_0x30941a+'-'+_0x508147+'/'+_0x32881f)[_0x654b('0x20')](_0x4de9d0);}return null;};}function patchUpdates(_0x4f5b9f){return function(_0x214039){try{jsonpatch[_0x654b('0x21')](_0x214039,_0x4f5b9f,!![]);}catch(_0x34b252){return BPromise[_0x654b('0x22')](_0x34b252);}return _0x214039[_0x654b('0x23')]();};}function saveUpdates(_0x269ccf,_0x69a136){return function(_0x5983e7){if(_0x5983e7){return _0x5983e7[_0x654b('0x24')](_0x269ccf)[_0x654b('0x25')](function(_0x294b98){return _0x294b98;});}return null;};}function removeEntity(_0x38d98c,_0xb6deb4){return function(_0x15a13e){if(_0x15a13e){return _0x15a13e[_0x654b('0x26')]()['then'](function(){_0x38d98c[_0x654b('0x19')](0xcc)[_0x654b('0x18')]();});}};}function handleEntityNotFound(_0x49c2c9,_0x224f5a){return function(_0x557c25){if(!_0x557c25){_0x49c2c9[_0x654b('0x17')](0x194);}return _0x557c25;};}function handleError(_0x3d8bc,_0x7276e1){_0x7276e1=_0x7276e1||0x1f4;return function(_0x109d7a){logger[_0x654b('0x27')](_0x109d7a[_0x654b('0x28')]);if(_0x109d7a[_0x654b('0x29')]){delete _0x109d7a[_0x654b('0x29')];}_0x3d8bc[_0x654b('0x19')](_0x7276e1)['send'](_0x109d7a);};}exports[_0x654b('0x2a')]=function(_0x735b5d,_0x3c707e){var _0x384f27={},_0x3adf33={},_0x48bcb8={'count':0x0,'rows':[]};var _0x26b7ef=_[_0x654b('0x2b')](db['CmHopperBlack'][_0x654b('0x2c')],function(_0x42c861){return{'name':_0x42c861[_0x654b('0x2d')],'type':_0x42c861[_0x654b('0x2e')][_0x654b('0x2f')]};});_0x3adf33['model']=_[_0x654b('0x2b')](_0x26b7ef,'name');_0x3adf33['query']=_[_0x654b('0x30')](_0x735b5d['query']);_0x3adf33['filters']=_[_0x654b('0x31')](_0x3adf33['model'],_0x3adf33['query']);_0x384f27[_0x654b('0x32')]=_[_0x654b('0x31')](_0x3adf33[_0x654b('0x33')],qs[_0x654b('0x34')](_0x735b5d[_0x654b('0x35')]['fields']));_0x384f27['attributes']=_0x384f27['attributes']['length']?_0x384f27[_0x654b('0x32')]:_0x3adf33[_0x654b('0x33')];if(!_0x735b5d[_0x654b('0x35')][_0x654b('0x36')](_0x654b('0x37'))){_0x384f27[_0x654b('0x1b')]=qs[_0x654b('0x1b')](_0x735b5d[_0x654b('0x35')][_0x654b('0x1b')]);_0x384f27[_0x654b('0x1a')]=qs[_0x654b('0x1a')](_0x735b5d[_0x654b('0x35')][_0x654b('0x1a')]);}_0x384f27['order']=qs[_0x654b('0x38')](_0x735b5d[_0x654b('0x35')][_0x654b('0x38')]);_0x384f27[_0x654b('0x39')]=qs['filters'](_[_0x654b('0x3a')](_0x735b5d['query'],_0x3adf33['filters']),_0x26b7ef);if(_0x735b5d[_0x654b('0x35')][_0x654b('0x3b')]){_0x384f27[_0x654b('0x39')]=_['merge'](_0x384f27[_0x654b('0x39')],{'$or':_[_0x654b('0x2b')](_0x26b7ef,function(_0x389a28){if(_0x389a28[_0x654b('0x2e')]!==_0x654b('0x3c')){var _0x5c3ebf={};_0x5c3ebf[_0x389a28['name']]={'$like':'%'+_0x735b5d[_0x654b('0x35')]['filter']+'%'};return _0x5c3ebf;}})});}_0x384f27=_[_0x654b('0x3d')]({},_0x384f27,_0x735b5d[_0x654b('0x3e')]);var _0x2804b2={'where':_0x384f27[_0x654b('0x39')]};return db[_0x654b('0x3f')][_0x654b('0x1d')](_0x2804b2)[_0x654b('0x25')](function(_0x4e2fcc){_0x48bcb8[_0x654b('0x1d')]=_0x4e2fcc;if(_0x735b5d[_0x654b('0x35')][_0x654b('0x40')]){_0x384f27[_0x654b('0x41')]=[{'all':!![]}];}return db[_0x654b('0x3f')][_0x654b('0x42')](_0x384f27);})['then'](function(_0x197578){_0x48bcb8[_0x654b('0x43')]=_0x197578;return _0x48bcb8;})[_0x654b('0x25')](respondWithFilteredResult(_0x3c707e,_0x384f27))[_0x654b('0x44')](handleError(_0x3c707e,null));};exports[_0x654b('0x45')]=function(_0x2f742e,_0x5c0f0f){var _0x40aa13={'raw':!![],'where':{'id':_0x2f742e['params']['id']}},_0x3f410c={};_0x3f410c[_0x654b('0x33')]=_[_0x654b('0x30')](db[_0x654b('0x3f')][_0x654b('0x2c')]);_0x3f410c[_0x654b('0x35')]=_['keys'](_0x2f742e['query']);_0x3f410c[_0x654b('0x46')]=_[_0x654b('0x31')](_0x3f410c[_0x654b('0x33')],_0x3f410c[_0x654b('0x35')]);_0x40aa13[_0x654b('0x32')]=_['intersection'](_0x3f410c['model'],qs[_0x654b('0x34')](_0x2f742e['query'][_0x654b('0x34')]));_0x40aa13[_0x654b('0x32')]=_0x40aa13[_0x654b('0x32')][_0x654b('0x47')]?_0x40aa13[_0x654b('0x32')]:_0x3f410c['model'];if(_0x2f742e[_0x654b('0x35')]['includeAll']){_0x40aa13[_0x654b('0x41')]=[{'all':!![]}];}_0x40aa13=_['merge']({},_0x40aa13,_0x2f742e[_0x654b('0x3e')]);return db[_0x654b('0x3f')][_0x654b('0x48')](_0x40aa13)[_0x654b('0x25')](handleEntityNotFound(_0x5c0f0f,null))[_0x654b('0x25')](respondWithResult(_0x5c0f0f,null))[_0x654b('0x44')](handleError(_0x5c0f0f,null));};exports['update']=function(_0x4b5edd,_0x520711){if(_0x4b5edd[_0x654b('0x49')]['id']){delete _0x4b5edd[_0x654b('0x49')]['id'];}return db[_0x654b('0x3f')][_0x654b('0x48')]({'where':{'id':_0x4b5edd['params']['id']}})[_0x654b('0x25')](handleEntityNotFound(_0x520711,null))[_0x654b('0x25')](saveUpdates(_0x4b5edd[_0x654b('0x49')],null))['then'](respondWithResult(_0x520711,null))[_0x654b('0x44')](handleError(_0x520711,null));};exports[_0x654b('0x26')]=function(_0x169898,_0x413d7d){return db[_0x654b('0x3f')][_0x654b('0x48')]({'where':{'id':_0x169898[_0x654b('0x4a')]['id']}})[_0x654b('0x25')](handleEntityNotFound(_0x413d7d,null))['then'](removeEntity(_0x413d7d,null))[_0x654b('0x44')](handleError(_0x413d7d,null));};exports['describe']=function(_0x22ad37,_0x44eebd){return db[_0x654b('0x3f')]['describe']()['then'](respondWithResult(_0x44eebd,null))[_0x654b('0x44')](handleError(_0x44eebd,null));};
\ No newline at end of file
+var _0xd906=['then','destroy','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','show','params','include','find','body','catch','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','limit','count','update'];(function(_0x5cab28,_0x307622){var _0xa3554d=function(_0x330139){while(--_0x330139){_0x5cab28['push'](_0x5cab28['shift']());}};_0xa3554d(++_0x307622);}(_0xd906,0x6b));var _0x6d90=function(_0x13eebf,_0x5c12b4){_0x13eebf=_0x13eebf-0x0;var _0x5e05a8=_0xd906[_0x13eebf];return _0x5e05a8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6d90('0x0'));var jsonpatch=require(_0x6d90('0x1'));var rp=require(_0x6d90('0x2'));var moment=require(_0x6d90('0x3'));var BPromise=require(_0x6d90('0x4'));var Mustache=require('mustache');var util=require(_0x6d90('0x5'));var path=require(_0x6d90('0x6'));var sox=require(_0x6d90('0x7'));var csv=require(_0x6d90('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d90('0x9'));var _=require(_0x6d90('0xa'));var squel=require(_0x6d90('0xb'));var crypto=require(_0x6d90('0xc'));var jsforce=require(_0x6d90('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6d90('0xe'));var Redis=require(_0x6d90('0xf'));var authService=require(_0x6d90('0x10'));var qs=require(_0x6d90('0x11'));var as=require(_0x6d90('0x12'));var hardwareService=require(_0x6d90('0x13'));var logger=require(_0x6d90('0x14'))('api');var utils=require(_0x6d90('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6d90('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2e791b,_0x3c5dc9){_0x3c5dc9=_0x3c5dc9||0xcc;return function(_0x1e4b32){if(_0x1e4b32){return _0x2e791b[_0x6d90('0x17')](_0x3c5dc9);}return _0x2e791b[_0x6d90('0x18')](_0x3c5dc9)[_0x6d90('0x19')]();};}function respondWithResult(_0x9c7ac9,_0x2c2475){_0x2c2475=_0x2c2475||0xc8;return function(_0x50b642){if(_0x50b642){return _0x9c7ac9[_0x6d90('0x18')](_0x2c2475)[_0x6d90('0x1a')](_0x50b642);}};}function respondWithFilteredResult(_0x2de602,_0x2c0b05){return function(_0x1f128f){if(_0x1f128f){var _0x4dc4e3=typeof _0x2c0b05[_0x6d90('0x1b')]==='undefined'&&typeof _0x2c0b05[_0x6d90('0x1c')]==='undefined';var _0x179703=_0x1f128f[_0x6d90('0x1d')];var _0x352736=_0x4dc4e3?0x0:_0x2c0b05[_0x6d90('0x1b')];var _0x4e6682=_0x4dc4e3?_0x1f128f['count']:_0x2c0b05[_0x6d90('0x1b')]+_0x2c0b05['limit'];var _0x3aaa84;if(_0x4e6682>=_0x179703){_0x4e6682=_0x179703;_0x3aaa84=0xc8;}else{_0x3aaa84=0xce;}_0x2de602[_0x6d90('0x18')](_0x3aaa84);return _0x2de602['set']('Content-Range',_0x352736+'-'+_0x4e6682+'/'+_0x179703)[_0x6d90('0x1a')](_0x1f128f);}return null;};}function patchUpdates(_0x2ca50e){return function(_0x43b6bf){try{jsonpatch['apply'](_0x43b6bf,_0x2ca50e,!![]);}catch(_0x5cf8dc){return BPromise['reject'](_0x5cf8dc);}return _0x43b6bf['save']();};}function saveUpdates(_0x2d07f9,_0x5703e6){return function(_0x19eb9d){if(_0x19eb9d){return _0x19eb9d[_0x6d90('0x1e')](_0x2d07f9)[_0x6d90('0x1f')](function(_0x470b5c){return _0x470b5c;});}return null;};}function removeEntity(_0x4378ca,_0x3dcccd){return function(_0x3aef5b){if(_0x3aef5b){return _0x3aef5b[_0x6d90('0x20')]()[_0x6d90('0x1f')](function(){_0x4378ca[_0x6d90('0x18')](0xcc)[_0x6d90('0x19')]();});}};}function handleEntityNotFound(_0x597386,_0x18f9aa){return function(_0x2036f1){if(!_0x2036f1){_0x597386[_0x6d90('0x17')](0x194);}return _0x2036f1;};}function handleError(_0x5c24c5,_0x4872b9){_0x4872b9=_0x4872b9||0x1f4;return function(_0x1fefae){logger[_0x6d90('0x21')](_0x1fefae[_0x6d90('0x22')]);if(_0x1fefae[_0x6d90('0x23')]){delete _0x1fefae[_0x6d90('0x23')];}_0x5c24c5[_0x6d90('0x18')](_0x4872b9)[_0x6d90('0x24')](_0x1fefae);};}exports[_0x6d90('0x25')]=function(_0x175d6d,_0x5eea54){var _0x5ec50d={},_0x5e1ab7={},_0xf4fb3={'count':0x0,'rows':[]};var _0x5619fd=_[_0x6d90('0x26')](db[_0x6d90('0x27')][_0x6d90('0x28')],function(_0x3802fb){return{'name':_0x3802fb[_0x6d90('0x29')],'type':_0x3802fb[_0x6d90('0x2a')][_0x6d90('0x2b')]};});_0x5e1ab7[_0x6d90('0x2c')]=_[_0x6d90('0x26')](_0x5619fd,_0x6d90('0x23'));_0x5e1ab7[_0x6d90('0x2d')]=_[_0x6d90('0x2e')](_0x175d6d[_0x6d90('0x2d')]);_0x5e1ab7['filters']=_[_0x6d90('0x2f')](_0x5e1ab7[_0x6d90('0x2c')],_0x5e1ab7['query']);_0x5ec50d[_0x6d90('0x30')]=_[_0x6d90('0x2f')](_0x5e1ab7['model'],qs[_0x6d90('0x31')](_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x31')]));_0x5ec50d[_0x6d90('0x30')]=_0x5ec50d[_0x6d90('0x30')][_0x6d90('0x32')]?_0x5ec50d[_0x6d90('0x30')]:_0x5e1ab7[_0x6d90('0x2c')];if(!_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x33')](_0x6d90('0x34'))){_0x5ec50d[_0x6d90('0x1c')]=qs[_0x6d90('0x1c')](_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x1c')]);_0x5ec50d[_0x6d90('0x1b')]=qs[_0x6d90('0x1b')](_0x175d6d[_0x6d90('0x2d')]['offset']);}_0x5ec50d[_0x6d90('0x35')]=qs['sort'](_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x36')]);_0x5ec50d['where']=qs[_0x6d90('0x37')](_[_0x6d90('0x38')](_0x175d6d['query'],_0x5e1ab7[_0x6d90('0x37')]),_0x5619fd);if(_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x39')]){_0x5ec50d[_0x6d90('0x3a')]=_[_0x6d90('0x3b')](_0x5ec50d['where'],{'$or':_[_0x6d90('0x26')](_0x5619fd,function(_0x340cf9){if(_0x340cf9[_0x6d90('0x2a')]!=='VIRTUAL'){var _0xa1eb2d={};_0xa1eb2d[_0x340cf9['name']]={'$like':'%'+_0x175d6d[_0x6d90('0x2d')]['filter']+'%'};return _0xa1eb2d;}})});}_0x5ec50d=_['merge']({},_0x5ec50d,_0x175d6d[_0x6d90('0x3c')]);var _0x2ac762={'where':_0x5ec50d[_0x6d90('0x3a')]};return db[_0x6d90('0x27')][_0x6d90('0x1d')](_0x2ac762)[_0x6d90('0x1f')](function(_0x3d36c7){_0xf4fb3[_0x6d90('0x1d')]=_0x3d36c7;if(_0x175d6d[_0x6d90('0x2d')][_0x6d90('0x3d')]){_0x5ec50d['include']=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x5ec50d);})['then'](function(_0x4f424c){_0xf4fb3['rows']=_0x4f424c;return _0xf4fb3;})[_0x6d90('0x1f')](respondWithFilteredResult(_0x5eea54,_0x5ec50d))['catch'](handleError(_0x5eea54,null));};exports[_0x6d90('0x3e')]=function(_0x446bae,_0x3485dd){var _0x1d4af0={'raw':!![],'where':{'id':_0x446bae[_0x6d90('0x3f')]['id']}},_0x5ed325={};_0x5ed325['model']=_[_0x6d90('0x2e')](db[_0x6d90('0x27')][_0x6d90('0x28')]);_0x5ed325[_0x6d90('0x2d')]=_[_0x6d90('0x2e')](_0x446bae['query']);_0x5ed325[_0x6d90('0x37')]=_[_0x6d90('0x2f')](_0x5ed325[_0x6d90('0x2c')],_0x5ed325[_0x6d90('0x2d')]);_0x1d4af0[_0x6d90('0x30')]=_['intersection'](_0x5ed325[_0x6d90('0x2c')],qs[_0x6d90('0x31')](_0x446bae['query'][_0x6d90('0x31')]));_0x1d4af0[_0x6d90('0x30')]=_0x1d4af0['attributes']['length']?_0x1d4af0[_0x6d90('0x30')]:_0x5ed325[_0x6d90('0x2c')];if(_0x446bae[_0x6d90('0x2d')][_0x6d90('0x3d')]){_0x1d4af0[_0x6d90('0x40')]=[{'all':!![]}];}_0x1d4af0=_[_0x6d90('0x3b')]({},_0x1d4af0,_0x446bae[_0x6d90('0x3c')]);return db[_0x6d90('0x27')][_0x6d90('0x41')](_0x1d4af0)[_0x6d90('0x1f')](handleEntityNotFound(_0x3485dd,null))[_0x6d90('0x1f')](respondWithResult(_0x3485dd,null))['catch'](handleError(_0x3485dd,null));};exports[_0x6d90('0x1e')]=function(_0x4e241a,_0x5de697){if(_0x4e241a['body']['id']){delete _0x4e241a[_0x6d90('0x42')]['id'];}return db[_0x6d90('0x27')][_0x6d90('0x41')]({'where':{'id':_0x4e241a[_0x6d90('0x3f')]['id']}})[_0x6d90('0x1f')](handleEntityNotFound(_0x5de697,null))[_0x6d90('0x1f')](saveUpdates(_0x4e241a[_0x6d90('0x42')],null))[_0x6d90('0x1f')](respondWithResult(_0x5de697,null))['catch'](handleError(_0x5de697,null));};exports[_0x6d90('0x20')]=function(_0x1f3729,_0x5eba5e){return db[_0x6d90('0x27')][_0x6d90('0x41')]({'where':{'id':_0x1f3729[_0x6d90('0x3f')]['id']}})[_0x6d90('0x1f')](handleEntityNotFound(_0x5eba5e,null))[_0x6d90('0x1f')](removeEntity(_0x5eba5e,null))[_0x6d90('0x43')](handleError(_0x5eba5e,null));};exports['describe']=function(_0x464a23,_0x16e9cd){return db['CmHopperBlack'][_0x6d90('0x44')]()[_0x6d90('0x1f')](respondWithResult(_0x16e9cd,null))[_0x6d90('0x43')](handleError(_0x16e9cd,null));};
\ No newline at end of file
index a077217..a115bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9a6=['../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack','cm_hopper_black','lodash','util','api','moment','bluebird','path','rimraf'];(function(_0x1815db,_0x1ca418){var _0xb97b25=function(_0x3e26f2){while(--_0x3e26f2){_0x1815db['push'](_0x1815db['shift']());}};_0xb97b25(++_0x1ca418);}(_0xa9a6,0x161));var _0x6a9a=function(_0x438d0c,_0x10b5cd){_0x438d0c=_0x438d0c-0x0;var _0x80e5e5=_0xa9a6[_0x438d0c];return _0x80e5e5;};'use strict';var _=require(_0x6a9a('0x0'));var util=require(_0x6a9a('0x1'));var logger=require('../../config/logger')(_0x6a9a('0x2'));var moment=require(_0x6a9a('0x3'));var BPromise=require(_0x6a9a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6a9a('0x5'));var rimraf=require(_0x6a9a('0x6'));var config=require(_0x6a9a('0x7'));var attributes=require(_0x6a9a('0x8'));module[_0x6a9a('0x9')]=function(_0x3f3174,_0x2740ae){return _0x3f3174['define'](_0x6a9a('0xa'),attributes,{'tableName':_0x6a9a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2bbc=['CmHopperBlack','cm_hopper_black','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperBlack.attributes','define'];(function(_0x2ede83,_0x326c5b){var _0x3f1417=function(_0x22f319){while(--_0x22f319){_0x2ede83['push'](_0x2ede83['shift']());}};_0x3f1417(++_0x326c5b);}(_0x2bbc,0x65));var _0xc2bb=function(_0x3a89de,_0x19f1e7){_0x3a89de=_0x3a89de-0x0;var _0x4eb3d7=_0x2bbc[_0x3a89de];return _0x4eb3d7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc2bb('0x0'))(_0xc2bb('0x1'));var moment=require(_0xc2bb('0x2'));var BPromise=require(_0xc2bb('0x3'));var rp=require(_0xc2bb('0x4'));var fs=require('fs');var path=require(_0xc2bb('0x5'));var rimraf=require(_0xc2bb('0x6'));var config=require('../../config/environment');var attributes=require(_0xc2bb('0x7'));module['exports']=function(_0x5219c5,_0x43767a){return _0x5219c5[_0xc2bb('0x8')](_0xc2bb('0x9'),attributes,{'tableName':_0xc2bb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2d61bce..341cad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03df=['info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','error','message','result','GetCmHopperBlack','CmHopperBlack','findAll','options','attributes','include','map','model','stringify','catch','UpdateCmHopperBlack','update','where','limit','DestroyCmHopperBlack','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x454e6d,_0x1e1f38){var _0x4bc294=function(_0x2c803a){while(--_0x2c803a){_0x454e6d['push'](_0x454e6d['shift']());}};_0x4bc294(++_0x1e1f38);}(_0x03df,0x82));var _0xf03d=function(_0x1de950,_0x517ee1){_0x1de950=_0x1de950-0x0;var _0x578719=_0x03df[_0x1de950];return _0x578719;};'use strict';var _=require(_0xf03d('0x0'));var util=require(_0xf03d('0x1'));var moment=require(_0xf03d('0x2'));var BPromise=require(_0xf03d('0x3'));var rs=require(_0xf03d('0x4'));var fs=require('fs');var Redis=require(_0xf03d('0x5'));var db=require(_0xf03d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf03d('0x7'))(_0xf03d('0x8'));var config=require(_0xf03d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf03d('0xa')][_0xf03d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52b000,_0xb9326d,_0x496ee4){return new BPromise(function(_0xcc2b99,_0x1ec2c2){return client[_0xf03d('0xc')](_0x52b000,_0x496ee4)[_0xf03d('0xd')](function(_0x3f9db4){logger[_0xf03d('0xe')](_0xf03d('0xf'),_0xb9326d,_0xf03d('0x10'));logger[_0xf03d('0x11')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0xb9326d,_0xf03d('0x10'),JSON['stringify'](_0x3f9db4));if(_0x3f9db4[_0xf03d('0x12')]){if(_0x3f9db4['error']['code']===0x1f4){logger[_0xf03d('0x12')](_0xf03d('0xf'),_0xb9326d,_0x3f9db4['error'][_0xf03d('0x13')]);return _0x1ec2c2(_0x3f9db4[_0xf03d('0x12')]['message']);}logger[_0xf03d('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0xb9326d,_0x3f9db4[_0xf03d('0x12')]['message']);return _0xcc2b99(_0x3f9db4['error']['message']);}else{logger['info']('CmHopperBlack,\x20%s,\x20%s',_0xb9326d,_0xf03d('0x10'));_0xcc2b99(_0x3f9db4[_0xf03d('0x14')][_0xf03d('0x13')]);}})['catch'](function(_0x5b6172){logger[_0xf03d('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0xb9326d,_0x5b6172);_0x1ec2c2(_0x5b6172);});});}exports[_0xf03d('0x15')]=function(_0x500436){var _0x2369f2=this;return new Promise(function(_0x5e23f6,_0x5f42d6){return db[_0xf03d('0x16')][_0xf03d('0x17')]({'raw':_0x500436[_0xf03d('0x18')]?_0x500436[_0xf03d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x500436[_0xf03d('0x18')]?_0x500436[_0xf03d('0x18')]['where']||null:null,'attributes':_0x500436[_0xf03d('0x18')]?_0x500436[_0xf03d('0x18')][_0xf03d('0x19')]||null:null,'limit':_0x500436['options']?_0x500436[_0xf03d('0x18')]['limit']||null:null,'include':_0x500436[_0xf03d('0x18')]?_0x500436[_0xf03d('0x18')][_0xf03d('0x1a')]?_[_0xf03d('0x1b')](_0x500436[_0xf03d('0x18')][_0xf03d('0x1a')],function(_0x5c43be){return{'model':db[_0x5c43be['model']],'as':_0x5c43be['as'],'attributes':_0x5c43be[_0xf03d('0x19')],'include':_0x5c43be[_0xf03d('0x1a')]?_[_0xf03d('0x1b')](_0x5c43be[_0xf03d('0x1a')],function(_0x4bd083){return{'model':db[_0x4bd083[_0xf03d('0x1c')]],'as':_0x4bd083['as'],'attributes':_0x4bd083['attributes'],'include':_0x4bd083[_0xf03d('0x1a')]?_[_0xf03d('0x1b')](_0x4bd083[_0xf03d('0x1a')],function(_0x3a513a){return{'model':db[_0x3a513a[_0xf03d('0x1c')]],'as':_0x3a513a['as'],'attributes':_0x3a513a[_0xf03d('0x19')]};}):[]};}):[]};}):[]:[]})[_0xf03d('0xd')](function(_0x442c7a){logger[_0xf03d('0xe')]('GetCmHopperBlack',_0x500436);logger[_0xf03d('0x11')]('GetCmHopperBlack',_0x500436,JSON[_0xf03d('0x1d')](_0x442c7a));_0x5e23f6(_0x442c7a);})[_0xf03d('0x1e')](function(_0x2c4833){logger[_0xf03d('0x12')]('GetCmHopperBlack',_0x2c4833['message'],_0x500436);_0x5f42d6(_0x2369f2['error'](0x1f4,_0x2c4833[_0xf03d('0x13')]));});});};exports[_0xf03d('0x1f')]=function(_0x44fd88){var _0x37e89f=this;return new Promise(function(_0x5b37d4,_0x5d8fd0){return db[_0xf03d('0x16')][_0xf03d('0x20')](_0x44fd88['body'],{'raw':_0x44fd88['options']?_0x44fd88['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x44fd88[_0xf03d('0x18')]?_0x44fd88[_0xf03d('0x18')][_0xf03d('0x21')]||null:null,'attributes':_0x44fd88[_0xf03d('0x18')]?_0x44fd88[_0xf03d('0x18')][_0xf03d('0x19')]||null:null,'limit':_0x44fd88['options']?_0x44fd88[_0xf03d('0x18')][_0xf03d('0x22')]||null:null})['then'](function(_0x4b6eca){logger[_0xf03d('0xe')]('UpdateCmHopperBlack',_0x44fd88);logger['debug'](_0xf03d('0x1f'),_0x44fd88,JSON['stringify'](_0x4b6eca));_0x5b37d4(_0x4b6eca);})[_0xf03d('0x1e')](function(_0x56a480){logger[_0xf03d('0x12')](_0xf03d('0x1f'),_0x56a480[_0xf03d('0x13')],_0x44fd88);_0x5d8fd0(_0x37e89f[_0xf03d('0x12')](0x1f4,_0x56a480[_0xf03d('0x13')]));});});};exports[_0xf03d('0x23')]=function(_0x1ab4ca){var _0x3ac515=this;return new Promise(function(_0x1f4e6b,_0x307b45){return db[_0xf03d('0x16')]['destroy']({'where':_0x1ab4ca['options']?_0x1ab4ca[_0xf03d('0x18')][_0xf03d('0x21')]||null:null})[_0xf03d('0xd')](function(_0xf64b78){logger[_0xf03d('0xe')](_0xf03d('0x23'),_0x1ab4ca);logger[_0xf03d('0x11')](_0xf03d('0x23'),_0x1ab4ca,JSON['stringify'](_0xf64b78));_0x1f4e6b(_0xf64b78);})[_0xf03d('0x1e')](function(_0x4a0d53){logger[_0xf03d('0x12')](_0xf03d('0x23'),_0x4a0d53['message'],_0x1ab4ca);_0x307b45(_0x3ac515['error'](0x1f4,_0x4a0d53[_0xf03d('0x13')]));});});};
\ No newline at end of file
+var _0x4733=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','GetCmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','catch','UpdateCmHopperBlack','update','DestroyCmHopperBlack','CmHopperBlack','destroy','util','randomstring','ioredis'];(function(_0x2c7dc6,_0x3c4ce0){var _0x10002b=function(_0x26f390){while(--_0x26f390){_0x2c7dc6['push'](_0x2c7dc6['shift']());}};_0x10002b(++_0x3c4ce0);}(_0x4733,0x1d1));var _0x3473=function(_0x30b0d8,_0x57470c){_0x30b0d8=_0x30b0d8-0x0;var _0x459c09=_0x4733[_0x30b0d8];return _0x459c09;};'use strict';var _=require('lodash');var util=require(_0x3473('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3473('0x1'));var fs=require('fs');var Redis=require(_0x3473('0x2'));var db=require(_0x3473('0x3'))['db'];var utils=require(_0x3473('0x4'));var logger=require(_0x3473('0x5'))(_0x3473('0x6'));var config=require(_0x3473('0x7'));var jayson=require(_0x3473('0x8'));var client=jayson['client'][_0x3473('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2eff94,_0x50d766,_0x1805a7){return new BPromise(function(_0x46a19d,_0x2e4e8a){return client[_0x3473('0xa')](_0x2eff94,_0x1805a7)[_0x3473('0xb')](function(_0x48d7ea){logger[_0x3473('0xc')](_0x3473('0xd'),_0x50d766,'request\x20sent');logger[_0x3473('0xe')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x50d766,_0x3473('0xf'),JSON[_0x3473('0x10')](_0x48d7ea));if(_0x48d7ea[_0x3473('0x11')]){if(_0x48d7ea[_0x3473('0x11')][_0x3473('0x12')]===0x1f4){logger[_0x3473('0x11')](_0x3473('0xd'),_0x50d766,_0x48d7ea[_0x3473('0x11')][_0x3473('0x13')]);return _0x2e4e8a(_0x48d7ea[_0x3473('0x11')][_0x3473('0x13')]);}logger[_0x3473('0x11')](_0x3473('0xd'),_0x50d766,_0x48d7ea[_0x3473('0x11')][_0x3473('0x13')]);return _0x46a19d(_0x48d7ea[_0x3473('0x11')][_0x3473('0x13')]);}else{logger['info'](_0x3473('0xd'),_0x50d766,_0x3473('0xf'));_0x46a19d(_0x48d7ea['result'][_0x3473('0x13')]);}})['catch'](function(_0x213d2a){logger['error'](_0x3473('0xd'),_0x50d766,_0x213d2a);_0x2e4e8a(_0x213d2a);});});}exports[_0x3473('0x14')]=function(_0x1d812a){var _0x2a031f=this;return new Promise(function(_0x20f943,_0x3e9e24){return db['CmHopperBlack'][_0x3473('0x15')]({'raw':_0x1d812a[_0x3473('0x16')]?_0x1d812a[_0x3473('0x16')][_0x3473('0x17')]===undefined?!![]:![]:!![],'where':_0x1d812a['options']?_0x1d812a['options'][_0x3473('0x18')]||null:null,'attributes':_0x1d812a[_0x3473('0x16')]?_0x1d812a[_0x3473('0x16')][_0x3473('0x19')]||null:null,'limit':_0x1d812a[_0x3473('0x16')]?_0x1d812a[_0x3473('0x16')][_0x3473('0x1a')]||null:null,'include':_0x1d812a[_0x3473('0x16')]?_0x1d812a[_0x3473('0x16')][_0x3473('0x1b')]?_[_0x3473('0x1c')](_0x1d812a[_0x3473('0x16')][_0x3473('0x1b')],function(_0x11cb82){return{'model':db[_0x11cb82[_0x3473('0x1d')]],'as':_0x11cb82['as'],'attributes':_0x11cb82[_0x3473('0x19')],'include':_0x11cb82[_0x3473('0x1b')]?_[_0x3473('0x1c')](_0x11cb82['include'],function(_0x3f88ed){return{'model':db[_0x3f88ed[_0x3473('0x1d')]],'as':_0x3f88ed['as'],'attributes':_0x3f88ed[_0x3473('0x19')],'include':_0x3f88ed[_0x3473('0x1b')]?_[_0x3473('0x1c')](_0x3f88ed['include'],function(_0x5b27c1){return{'model':db[_0x5b27c1['model']],'as':_0x5b27c1['as'],'attributes':_0x5b27c1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ff2c8){logger[_0x3473('0xc')](_0x3473('0x14'),_0x1d812a);logger['debug']('GetCmHopperBlack',_0x1d812a,JSON['stringify'](_0x1ff2c8));_0x20f943(_0x1ff2c8);})[_0x3473('0x1e')](function(_0x2c0c9e){logger[_0x3473('0x11')](_0x3473('0x14'),_0x2c0c9e[_0x3473('0x13')],_0x1d812a);_0x3e9e24(_0x2a031f['error'](0x1f4,_0x2c0c9e[_0x3473('0x13')]));});});};exports[_0x3473('0x1f')]=function(_0xf4bc7d){var _0xfc4f9d=this;return new Promise(function(_0x2c3cf0,_0x3b2c25){return db['CmHopperBlack'][_0x3473('0x20')](_0xf4bc7d['body'],{'raw':_0xf4bc7d[_0x3473('0x16')]?_0xf4bc7d[_0x3473('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf4bc7d[_0x3473('0x16')]?_0xf4bc7d[_0x3473('0x16')][_0x3473('0x18')]||null:null,'attributes':_0xf4bc7d[_0x3473('0x16')]?_0xf4bc7d['options']['attributes']||null:null,'limit':_0xf4bc7d['options']?_0xf4bc7d[_0x3473('0x16')][_0x3473('0x1a')]||null:null})[_0x3473('0xb')](function(_0x4fc616){logger['info'](_0x3473('0x1f'),_0xf4bc7d);logger[_0x3473('0xe')](_0x3473('0x1f'),_0xf4bc7d,JSON[_0x3473('0x10')](_0x4fc616));_0x2c3cf0(_0x4fc616);})[_0x3473('0x1e')](function(_0x4099b7){logger[_0x3473('0x11')]('UpdateCmHopperBlack',_0x4099b7['message'],_0xf4bc7d);_0x3b2c25(_0xfc4f9d[_0x3473('0x11')](0x1f4,_0x4099b7['message']));});});};exports[_0x3473('0x21')]=function(_0x45707d){var _0x22db64=this;return new Promise(function(_0x595094,_0x56f416){return db[_0x3473('0x22')][_0x3473('0x23')]({'where':_0x45707d[_0x3473('0x16')]?_0x45707d[_0x3473('0x16')][_0x3473('0x18')]||null:null})[_0x3473('0xb')](function(_0x43b0ac){logger['info'](_0x3473('0x21'),_0x45707d);logger[_0x3473('0xe')](_0x3473('0x21'),_0x45707d,JSON[_0x3473('0x10')](_0x43b0ac));_0x595094(_0x43b0ac);})[_0x3473('0x1e')](function(_0x226897){logger[_0x3473('0x11')]('DestroyCmHopperBlack',_0x226897[_0x3473('0x13')],_0x45707d);_0x56f416(_0x22db64['error'](0x1f4,_0x226897[_0x3473('0x13')]));});});};
\ No newline at end of file
index 75c09c1..55cae8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','describe','/:id','show','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x43d1ef,_0x2cebaf){var _0x4879de=function(_0x53db44){while(--_0x53db44){_0x43d1ef['push'](_0x43d1ef['shift']());}};_0x4879de(++_0x2cebaf);}(_0x323f,0x1ee));var _0xf323=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x323f[_0x30ae5e];return _0x1f2e93;};'use strict';var multer=require('multer');var util=require(_0xf323('0x0'));var path=require('path');var timeout=require(_0xf323('0x1'));var express=require(_0xf323('0x2'));var router=express[_0xf323('0x3')]();var fs_extra=require(_0xf323('0x4'));var auth=require(_0xf323('0x5'));var interaction=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var controller=require(_0xf323('0x8'));router[_0xf323('0x9')]('/',auth[_0xf323('0xa')](),controller['index']);router[_0xf323('0x9')](_0xf323('0xb'),auth[_0xf323('0xa')](),controller[_0xf323('0xc')]);router[_0xf323('0x9')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0xe')]);router[_0xf323('0xf')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x10')]);router[_0xf323('0x11')](_0xf323('0xd'),auth[_0xf323('0xa')](),controller[_0xf323('0x12')]);module[_0xf323('0x13')]=router;
\ No newline at end of file
+var _0x8f9d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','isAuthenticated','index','get','/describe','/:id','show','update','delete','destroy','exports','multer','path','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8f9d,0x93));var _0xd8f9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8f9d[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xd8f9('0x0'));var util=require('util');var path=require(_0xd8f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8f9('0x2'));var router=express[_0xd8f9('0x3')]();var fs_extra=require(_0xd8f9('0x4'));var auth=require(_0xd8f9('0x5'));var interaction=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var controller=require(_0xd8f9('0x8'));router['get']('/',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xa')]);router[_0xd8f9('0xb')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller['describe']);router[_0xd8f9('0xb')](_0xd8f9('0xd'),auth['isAuthenticated'](),controller[_0xd8f9('0xe')]);router['put']('/:id',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xf')]);router[_0xd8f9('0x10')](_0xd8f9('0xd'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x11')]);module[_0xd8f9('0x12')]=router;
\ No newline at end of file
index a0bdc69..2491e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111f=['INTEGER','STRING','DATE','getDataValue','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x111f,0x1e9));var _0xf111=function(_0x5edb9c,_0x3d46dc){_0x5edb9c=_0x5edb9c-0x0;var _0x451eb1=_0x111f[_0x5edb9c];return _0x451eb1;};'use strict';var Sequelize=require(_0xf111('0x0'));var moment=require(_0xf111('0x1'));module[_0xf111('0x2')]={'state':{'type':Sequelize[_0xf111('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xf111('0x4')]},'scheduledat':{'type':Sequelize[_0xf111('0x5')]},'countbusyretry':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf111('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xf111('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf111('0x4')]},'calleridnum':{'type':Sequelize[_0xf111('0x4')]},'calleridname':{'type':Sequelize[_0xf111('0x4')]},'starttime':{'type':Sequelize[_0xf111('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xf111('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0xf111('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xf111('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf111('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0xf111('0x5')],'set':function(_0x261751){var _0x33f158=this[_0xf111('0x6')]('endtime');if(_0x33f158&&_0x261751){this[_0xf111('0x7')](_0xf111('0x8'),moment(_0x261751)[_0xf111('0x9')](moment(_0x33f158),_0xf111('0xa')));}}},'amd':{'type':Sequelize[_0xf111('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xf111('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xf111('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xf111('0x5')]},'callback':{'type':Sequelize[_0xf111('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf111('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf111('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xf111('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xf111('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf111('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xae5a=['exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff','BOOLEAN','sequelize','moment'];(function(_0x15a634,_0x4feb86){var _0xf4f7a0=function(_0x31d9fe){while(--_0x31d9fe){_0x15a634['push'](_0x15a634['shift']());}};_0xf4f7a0(++_0x4feb86);}(_0xae5a,0x76));var _0xaae5=function(_0x26ac56,_0x1d1c9c){_0x26ac56=_0x26ac56-0x0;var _0x4f3a79=_0xae5a[_0x26ac56];return _0x4f3a79;};'use strict';var Sequelize=require(_0xaae5('0x0'));var moment=require(_0xaae5('0x1'));module[_0xaae5('0x2')]={'state':{'type':Sequelize[_0xaae5('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xaae5('0x4')]},'scheduledat':{'type':Sequelize[_0xaae5('0x5')]},'countbusyretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xaae5('0x4')]},'calleridnum':{'type':Sequelize[_0xaae5('0x4')]},'calleridname':{'type':Sequelize[_0xaae5('0x4')]},'starttime':{'type':Sequelize[_0xaae5('0x5')]},'responsetime':{'type':Sequelize[_0xaae5('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xaae5('0x5')]},'endtime':{'type':Sequelize[_0xaae5('0x5')]},'ringtime':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xaae5('0x4')]},'campaign':{'type':Sequelize[_0xaae5('0x4')]},'campaigntype':{'type':Sequelize[_0xaae5('0x4')]},'membername':{'type':Sequelize[_0xaae5('0x4')]},'reason':{'type':Sequelize[_0xaae5('0x4')]},'disposition':{'type':Sequelize[_0xaae5('0x4')]},'secondDisposition':{'type':Sequelize[_0xaae5('0x4')]},'thirdDisposition':{'type':Sequelize[_0xaae5('0x4')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x3fc836){var _0x5d55cc=this[_0xaae5('0x6')](_0xaae5('0x7'));if(_0x5d55cc&&_0x3fc836){this[_0xaae5('0x8')](_0xaae5('0x9'),moment(_0x3fc836)[_0xaae5('0xa')](moment(_0x5d55cc),'seconds'));}}},'amd':{'type':Sequelize[_0xaae5('0xb')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xaae5('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0xaae5('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xaae5('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0xaae5('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xaae5('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xaae5('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index eb87925..c3157f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','CmHopperFinal','includeAll','findAll','catch','show','uniqueid','body','find','params','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','VoiceQueue','insert','fromQuery','phone','scheduledAt','VoiceQueueId','createdAt','updatedAt','ANY_VALUE(calleridnum)','field','NOW()','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','VoiceQueueId\x20=\x20?','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','cm_hopper','ListId','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','CmHopper','findOne','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send'];(function(_0x5bef81,_0x4f6154){var _0xf355e8=function(_0x429e0b){while(--_0x429e0b){_0x5bef81['push'](_0x5bef81['shift']());}};_0xf355e8(++_0x4f6154);}(_0xda19,0xd5));var _0x9da1=function(_0x4205e5,_0x3fa373){_0x4205e5=_0x4205e5-0x0;var _0x3f5e34=_0xda19[_0x4205e5];return _0x3f5e34;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];function respondWithStatusCode(_0x596b6b,_0x4735c7){_0x4735c7=_0x4735c7||0xcc;return function(_0x1d93f8){if(_0x1d93f8){return _0x596b6b[_0x9da1('0x17')](_0x4735c7);}return _0x596b6b[_0x9da1('0x18')](_0x4735c7)['end']();};}function respondWithResult(_0x2837e3,_0x535a13){_0x535a13=_0x535a13||0xc8;return function(_0x4d17e1){if(_0x4d17e1){return _0x2837e3[_0x9da1('0x18')](_0x535a13)['json'](_0x4d17e1);}};}function respondWithFilteredResult(_0x433ff4,_0x43c093){return function(_0x37653d){if(_0x37653d){var _0x1a1a6b=typeof _0x43c093[_0x9da1('0x19')]==='undefined'&&typeof _0x43c093[_0x9da1('0x1a')]===_0x9da1('0x1b');var _0xf83bf8=_0x37653d[_0x9da1('0x1c')];var _0xfb278d=_0x1a1a6b?0x0:_0x43c093[_0x9da1('0x19')];var _0x497676=_0x1a1a6b?_0x37653d['count']:_0x43c093[_0x9da1('0x19')]+_0x43c093[_0x9da1('0x1a')];var _0x1b0e7f;if(_0x497676>=_0xf83bf8){_0x497676=_0xf83bf8;_0x1b0e7f=0xc8;}else{_0x1b0e7f=0xce;}_0x433ff4[_0x9da1('0x18')](_0x1b0e7f);return _0x433ff4[_0x9da1('0x1d')](_0x9da1('0x1e'),_0xfb278d+'-'+_0x497676+'/'+_0xf83bf8)[_0x9da1('0x1f')](_0x37653d);}return null;};}function patchUpdates(_0x47e5cf){return function(_0x1a459c){try{jsonpatch[_0x9da1('0x20')](_0x1a459c,_0x47e5cf,!![]);}catch(_0x9c3b37){return BPromise[_0x9da1('0x21')](_0x9c3b37);}return _0x1a459c[_0x9da1('0x22')]();};}function saveUpdates(_0x4e9d7d,_0x5454d3){return function(_0x14793b){if(_0x14793b){return _0x14793b[_0x9da1('0x23')](_0x4e9d7d)[_0x9da1('0x24')](function(_0x330219){return _0x330219;});}return null;};}function removeEntity(_0x32eb55,_0x165b73){return function(_0x4c60aa){if(_0x4c60aa){return _0x4c60aa[_0x9da1('0x25')]()[_0x9da1('0x24')](function(){_0x32eb55['status'](0xcc)[_0x9da1('0x26')]();});}};}function handleEntityNotFound(_0x3f5680,_0x534210){return function(_0x2fd49c){if(!_0x2fd49c){_0x3f5680[_0x9da1('0x17')](0x194);}return _0x2fd49c;};}function handleError(_0x4b1152,_0x36b87a){_0x36b87a=_0x36b87a||0x1f4;return function(_0x1d6af5){logger['error'](_0x1d6af5['stack']);if(_0x1d6af5[_0x9da1('0x27')]){delete _0x1d6af5[_0x9da1('0x27')];}_0x4b1152['status'](_0x36b87a)[_0x9da1('0x28')](_0x1d6af5);};}exports['index']=function(_0x5a6f2d,_0x5a59c2){var _0x31b826={},_0x404b86={},_0x24c6d5={'count':0x0,'rows':[]};var _0x26dd58=_[_0x9da1('0x29')](db['CmHopperFinal'][_0x9da1('0x2a')],function(_0x4e6083){return{'name':_0x4e6083[_0x9da1('0x2b')],'type':_0x4e6083[_0x9da1('0x2c')]['key']};});_0x404b86[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x26dd58,'name');_0x404b86[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x5a6f2d[_0x9da1('0x2e')]);_0x404b86[_0x9da1('0x30')]=_['intersection'](_0x404b86['model'],_0x404b86[_0x9da1('0x2e')]);_0x31b826[_0x9da1('0x31')]=_[_0x9da1('0x32')](_0x404b86[_0x9da1('0x2d')],qs[_0x9da1('0x33')](_0x5a6f2d['query'][_0x9da1('0x33')]));_0x31b826[_0x9da1('0x31')]=_0x31b826[_0x9da1('0x31')][_0x9da1('0x34')]?_0x31b826[_0x9da1('0x31')]:_0x404b86[_0x9da1('0x2d')];if(!_0x5a6f2d['query'][_0x9da1('0x35')]('nolimit')){_0x31b826['limit']=qs[_0x9da1('0x1a')](_0x5a6f2d['query'][_0x9da1('0x1a')]);_0x31b826[_0x9da1('0x19')]=qs[_0x9da1('0x19')](_0x5a6f2d[_0x9da1('0x2e')][_0x9da1('0x19')]);}_0x31b826[_0x9da1('0x36')]=qs[_0x9da1('0x37')](_0x5a6f2d[_0x9da1('0x2e')]['sort']);_0x31b826[_0x9da1('0x38')]=qs['filters'](_[_0x9da1('0x39')](_0x5a6f2d['query'],_0x404b86['filters']),_0x26dd58);if(_0x5a6f2d[_0x9da1('0x2e')]['filter']){_0x31b826[_0x9da1('0x38')]=_[_0x9da1('0x3a')](_0x31b826['where'],{'$or':_[_0x9da1('0x29')](_0x26dd58,function(_0x1b750f){if(_0x1b750f[_0x9da1('0x2c')]!==_0x9da1('0x3b')){var _0x56bd49={};_0x56bd49[_0x1b750f[_0x9da1('0x27')]]={'$like':'%'+_0x5a6f2d['query'][_0x9da1('0x3c')]+'%'};return _0x56bd49;}})});}_0x31b826=_['merge']({},_0x31b826,_0x5a6f2d[_0x9da1('0x3d')]);var _0x46c176={'where':_0x31b826['where']};return db[_0x9da1('0x3e')][_0x9da1('0x1c')](_0x46c176)[_0x9da1('0x24')](function(_0x4e9af3){_0x24c6d5['count']=_0x4e9af3;if(_0x5a6f2d['query'][_0x9da1('0x3f')]){_0x31b826['include']=[{'all':!![]}];}return db[_0x9da1('0x3e')][_0x9da1('0x40')](_0x31b826);})[_0x9da1('0x24')](function(_0x43c064){_0x24c6d5['rows']=_0x43c064;return _0x24c6d5;})[_0x9da1('0x24')](respondWithFilteredResult(_0x5a59c2,_0x31b826))[_0x9da1('0x41')](handleError(_0x5a59c2,null));};exports[_0x9da1('0x42')]=function(_0x173dc6,_0x28fc88){var _0x26c225={'raw':!![],'where':{'id':_0x173dc6['params']['id']}},_0x28e0b2={};_0x28e0b2[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x3e')]['rawAttributes']);_0x28e0b2[_0x9da1('0x2e')]=_[_0x9da1('0x2f')](_0x173dc6['query']);_0x28e0b2[_0x9da1('0x30')]=_[_0x9da1('0x32')](_0x28e0b2['model'],_0x28e0b2[_0x9da1('0x2e')]);_0x26c225['attributes']=_[_0x9da1('0x32')](_0x28e0b2[_0x9da1('0x2d')],qs['fields'](_0x173dc6['query'][_0x9da1('0x33')]));_0x26c225[_0x9da1('0x31')]=_0x26c225[_0x9da1('0x31')][_0x9da1('0x34')]?_0x26c225[_0x9da1('0x31')]:_0x28e0b2[_0x9da1('0x2d')];if(_0x173dc6[_0x9da1('0x2e')][_0x9da1('0x3f')]){_0x26c225['include']=[{'all':!![]}];}_0x26c225=_[_0x9da1('0x3a')]({},_0x26c225,_0x173dc6[_0x9da1('0x3d')]);return db[_0x9da1('0x3e')]['find'](_0x26c225)[_0x9da1('0x24')](handleEntityNotFound(_0x28fc88,null))[_0x9da1('0x24')](respondWithResult(_0x28fc88,null))[_0x9da1('0x41')](handleError(_0x28fc88,null));};exports['describe']=function(_0x336fc3,_0x351d4d){return db[_0x9da1('0x3e')]['describe']()[_0x9da1('0x24')](respondWithResult(_0x351d4d,null))['catch'](handleError(_0x351d4d,null));};exports['update']=function(_0xfbdde9,_0x43c47d){if(_0xfbdde9['body'][_0x9da1('0x43')]){delete _0xfbdde9[_0x9da1('0x44')]['uniqueid'];}return db[_0x9da1('0x3e')][_0x9da1('0x45')]({'where':{'uniqueid':_0xfbdde9[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x43c47d,null))[_0x9da1('0x24')](saveUpdates(_0xfbdde9[_0x9da1('0x44')],null))[_0x9da1('0x24')](respondWithResult(_0x43c47d,null))[_0x9da1('0x41')](handleError(_0x43c47d,null));};exports[_0x9da1('0x47')]=function(_0x5c9b46,_0x147c65,_0xe6c667){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x5c9b46['params']['id']},'attributes':[[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4b')))),_0x9da1('0x4c')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x4d')))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),'busyContacts'],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db['sequelize']['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')]('`state`\x20=\x2022,\x201,\x20null'))),_0x9da1('0x55')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x147c65,null))[_0x9da1('0x24')](respondWithResult(_0x147c65,null))[_0x9da1('0x41')](handleError(_0x147c65,null));};exports[_0x9da1('0x57')]=function(_0x562e05,_0x1a9df0,_0x5c236e){return db[_0x9da1('0x3e')][_0x9da1('0x40')]({'raw':![],'where':{'CampaignId':_0x562e05[_0x9da1('0x46')]['id']},'attributes':[[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x4b')))),'noSuchContacts'],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize'][_0x9da1('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0x9da1('0x4e')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')]['literal'](_0x9da1('0x4f')))),_0x9da1('0x58')],[db['sequelize']['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x50')))),_0x9da1('0x51')],[db[_0x9da1('0x49')]['fn']('COUNT',db[_0x9da1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x9da1('0x59')))),_0x9da1('0x52')],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x53')))),_0x9da1('0x54')],[db['sequelize']['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x5a')))),'reCallContacts'],[db[_0x9da1('0x49')]['fn'](_0x9da1('0x48'),db[_0x9da1('0x49')]['fn']('IF',db[_0x9da1('0x49')][_0x9da1('0x4a')](_0x9da1('0x56')))),'answeringMachine']]})[_0x9da1('0x24')](handleEntityNotFound(_0x1a9df0,null))['then'](respondWithResult(_0x1a9df0,null))[_0x9da1('0x41')](handleError(_0x1a9df0,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7cfa7e,_0xdd3997,_0x44b6c0){return db[_0x9da1('0x5b')]['find']({'where':{'id':_0x7cfa7e['params']['id']}})['then'](handleEntityNotFound(_0xdd3997,null))[_0x9da1('0x24')](function(_0x2b1a71){var _0x266533;if(_0x2b1a71){_0x266533=squel[_0x9da1('0x5c')]()['into']('cm_hopper')[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),'ContactId','ListId',_0x9da1('0x60'),_0x9da1('0x61'),_0x9da1('0x62')],squel['select']()['field'](_0x9da1('0x63'),_0x9da1('0x5e'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))['field'](_0x9da1('0x66'),_0x9da1('0x67'))[_0x9da1('0x64')](_0x9da1('0x68'),'ListId')[_0x9da1('0x64')](_0x9da1('0x69'),_0x9da1('0x60'))['field'](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')]('NOW()',_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')]('VoiceQueueId\x20=\x20?',_0x7cfa7e[_0x9da1('0x46')]['id']['toString']())[_0x9da1('0x38')](_0x9da1('0x6b'),_0x7cfa7e[_0x9da1('0x44')][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x5e'))[_0x9da1('0x6a')]('cm_hopper')[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('calleridnum')['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x71'),_0x7cfa7e[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))[_0x9da1('0x74')](_0x9da1('0x67')))[_0x9da1('0x6d')]();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x266533);}return[];})[_0x9da1('0x24')](respondWithResult(_0xdd3997,null))['catch'](handleError(_0xdd3997,null));};exports[_0x9da1('0x75')]=function(_0x3a0a84,_0x3f9782,_0x30b6fc){return db[_0x9da1('0x76')]['find']({'where':{'id':_0x3a0a84[_0x9da1('0x46')]['id']}})[_0x9da1('0x24')](handleEntityNotFound(_0x3f9782,null))['then'](function(_0x33b625){var _0x5a0533;if(_0x33b625){_0x5a0533=squel[_0x9da1('0x5c')]()['into'](_0x9da1('0x77'))[_0x9da1('0x5d')]([_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x67'),_0x9da1('0x78'),_0x9da1('0x79'),_0x9da1('0x61'),_0x9da1('0x62')],squel[_0x9da1('0x70')]()[_0x9da1('0x64')](_0x9da1('0x63'),'phone')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x5f'))[_0x9da1('0x64')](_0x9da1('0x66'),_0x9da1('0x67'))['field']('ANY_VALUE(ListId)',_0x9da1('0x78'))[_0x9da1('0x64')](_0x9da1('0x7a'),'CampaignId')[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x61'))[_0x9da1('0x64')](_0x9da1('0x65'),_0x9da1('0x62'))[_0x9da1('0x6a')]('cm_hopper_final')[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84['params']['id']['toString']())[_0x9da1('0x38')]('state\x20=\x20?',_0x3a0a84['body'][_0x9da1('0x6c')][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x6e'))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()[_0x9da1('0x64')]('phone')['from'](_0x9da1('0x77'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]()))[_0x9da1('0x38')](_0x9da1('0x6f'),squel[_0x9da1('0x70')]()['field'](_0x9da1('0x7c'))['from'](_0x9da1('0x72'))[_0x9da1('0x38')](_0x9da1('0x7b'),_0x3a0a84[_0x9da1('0x46')]['id'][_0x9da1('0x6d')]())[_0x9da1('0x38')](_0x9da1('0x73')))['group'](_0x9da1('0x67')))['toString']();return db[_0x9da1('0x49')][_0x9da1('0x2e')](_0x5a0533);}return[];})[_0x9da1('0x24')](respondWithResult(_0x3f9782,null))[_0x9da1('0x41')](handleError(_0x3f9782,null));};exports['checkContactHopper']=function(_0x3310af,_0x1f93bf,_0x2afe1e){return db[_0x9da1('0x7d')][_0x9da1('0x7e')]({'where':{'VoiceQueueId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x60')],'CampaignId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x79')],'ContactId':_0x3310af[_0x9da1('0x44')][_0x9da1('0x67')]}})[_0x9da1('0x24')](handleEntityNotFound(_0x1f93bf,null))[_0x9da1('0x24')](function(_0x32ff53){if(_0x32ff53){return _0x32ff53;}return null;})['then'](respondWithResult(_0x1f93bf,null))[_0x9da1('0x41')](handleError(_0x1f93bf,null));};
\ No newline at end of file
+var _0xe3da=['COUNT','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','noSuchContacts','congestionContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','phone','ContactId','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ListId','ANY_VALUE(VoiceQueueId)','VoiceQueueId','cm_hopper_final','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','VoiceQueueId\x20=\x20?','from','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','fromQuery','CampaignId','createdAt','updatedAt','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmHopperFinal','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','order','sort','where','pick','map','VIRTUAL','filter','merge','options','count','include','findAll','rows','catch','show','params','length','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts'];(function(_0x337537,_0x4ea7b8){var _0x4fdd67=function(_0x59ad18){while(--_0x59ad18){_0x337537['push'](_0x337537['shift']());}};_0x4fdd67(++_0x4ea7b8);}(_0xe3da,0x1cd));var _0xae3d=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe3da[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':!![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['describe']()['then'](respondWithResult(_0x4ed0f9,null))['catch'](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0xc8f551,_0x39f213){if(_0xc8f551[_0xae3d('0x4f')]['uniqueid']){delete _0xc8f551['body'][_0xae3d('0x50')];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'uniqueid':_0xc8f551[_0xae3d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x39f213,null))[_0xae3d('0x28')](saveUpdates(_0xc8f551[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x39f213,null))[_0xae3d('0x48')](handleError(_0x39f213,null));};exports[_0xae3d('0x51')]=function(_0x38ccf1,_0x3e30ea,_0x291c7d){return db[_0xae3d('0x2f')][_0xae3d('0x46')]({'raw':![],'where':{'VoiceQueueId':_0x38ccf1[_0xae3d('0x4a')]['id']},'attributes':[[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x54')))),'noSuchContacts'],[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x55')))),_0xae3d('0x56')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x58')))),_0xae3d('0x59')],[db[_0xae3d('0x52')]['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x5a')))),'congestionContacts'],[db['sequelize']['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db['sequelize']['literal'](_0xae3d('0x5b')))),_0xae3d('0x5c')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x5d')))),_0xae3d('0x5e')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x5f')))),_0xae3d('0x60')],[db[_0xae3d('0x52')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x61')))),'answeringMachine']]})[_0xae3d('0x28')](handleEntityNotFound(_0x3e30ea,null))[_0xae3d('0x28')](respondWithResult(_0x3e30ea,null))[_0xae3d('0x48')](handleError(_0x3e30ea,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x3a39ed,_0x31b362,_0x253ee4){return db[_0xae3d('0x2f')][_0xae3d('0x46')]({'raw':![],'where':{'CampaignId':_0x3a39ed[_0xae3d('0x4a')]['id']},'attributes':[[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x54')))),_0xae3d('0x62')],[db['sequelize']['fn']('COUNT',db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x55')))),'noAnswerContacts'],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x58')))),_0xae3d('0x59')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x5a')))),_0xae3d('0x63')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')](_0xae3d('0x5b')))),_0xae3d('0x5c')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db[_0xae3d('0x52')][_0xae3d('0x53')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xae3d('0x5e')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db['sequelize']['fn']('IF',db['sequelize'][_0xae3d('0x53')](_0xae3d('0x5f')))),_0xae3d('0x60')],[db[_0xae3d('0x52')]['fn'](_0xae3d('0x57'),db[_0xae3d('0x52')]['fn']('IF',db[_0xae3d('0x52')]['literal'](_0xae3d('0x61')))),_0xae3d('0x64')]]})['then'](handleEntityNotFound(_0x31b362,null))[_0xae3d('0x28')](respondWithResult(_0x31b362,null))['catch'](handleError(_0x31b362,null));};exports[_0xae3d('0x65')]=function(_0x115e99,_0x26c409,_0x4709ea){return db[_0xae3d('0x66')]['find']({'where':{'id':_0x115e99[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x26c409,null))[_0xae3d('0x28')](function(_0x5f1e9c){var _0x546991;if(_0x5f1e9c){_0x546991=squel[_0xae3d('0x67')]()[_0xae3d('0x68')]('cm_hopper')['fromQuery']([_0xae3d('0x69'),'scheduledAt',_0xae3d('0x6a'),'ListId','VoiceQueueId','createdAt','updatedAt'],squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')]('ANY_VALUE(calleridnum)','phone')[_0xae3d('0x6c')](_0xae3d('0x6d'),_0xae3d('0x6e'))[_0xae3d('0x6c')](_0xae3d('0x6f'),_0xae3d('0x6a'))[_0xae3d('0x6c')]('ANY_VALUE(ListId)',_0xae3d('0x70'))[_0xae3d('0x6c')](_0xae3d('0x71'),_0xae3d('0x72'))[_0xae3d('0x6c')](_0xae3d('0x6d'),'createdAt')[_0xae3d('0x6c')](_0xae3d('0x6d'),'updatedAt')['from'](_0xae3d('0x73'))[_0xae3d('0x3d')]('VoiceQueueId\x20=\x20?',_0x115e99[_0xae3d('0x4a')]['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x20?',_0x115e99[_0xae3d('0x4f')][_0xae3d('0x75')]['toString']())['where'](_0xae3d('0x76'))[_0xae3d('0x3d')](_0xae3d('0x77'),squel['select']()[_0xae3d('0x6c')](_0xae3d('0x69'))['from'](_0xae3d('0x78'))[_0xae3d('0x3d')](_0xae3d('0x79'),_0x115e99['params']['id'][_0xae3d('0x74')]()))[_0xae3d('0x3d')](_0xae3d('0x77'),squel['select']()[_0xae3d('0x6c')]('calleridnum')[_0xae3d('0x7a')]('cm_hopper_final')['where'](_0xae3d('0x79'),_0x115e99['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')](_0xae3d('0x7b')))[_0xae3d('0x7c')]('ContactId'))[_0xae3d('0x74')]();return db[_0xae3d('0x52')][_0xae3d('0x34')](_0x546991);}return[];})[_0xae3d('0x28')](respondWithResult(_0x26c409,null))[_0xae3d('0x48')](handleError(_0x26c409,null));};exports[_0xae3d('0x7d')]=function(_0x1c5f67,_0xa083d0,_0x26e422){return db[_0xae3d('0x7e')][_0xae3d('0x4d')]({'where':{'id':_0x1c5f67[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0xa083d0,null))[_0xae3d('0x28')](function(_0xf281f5){var _0x3261e5;if(_0xf281f5){_0x3261e5=squel[_0xae3d('0x67')]()['into'](_0xae3d('0x78'))[_0xae3d('0x7f')]([_0xae3d('0x69'),_0xae3d('0x6e'),_0xae3d('0x6a'),'ListId',_0xae3d('0x80'),_0xae3d('0x81'),_0xae3d('0x82')],squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')](_0xae3d('0x83'),_0xae3d('0x69'))[_0xae3d('0x6c')]('NOW()',_0xae3d('0x6e'))[_0xae3d('0x6c')](_0xae3d('0x6f'),'ContactId')[_0xae3d('0x6c')](_0xae3d('0x84'),_0xae3d('0x70'))['field'](_0xae3d('0x85'),_0xae3d('0x80'))['field'](_0xae3d('0x6d'),'createdAt')[_0xae3d('0x6c')]('NOW()',_0xae3d('0x82'))[_0xae3d('0x7a')](_0xae3d('0x73'))[_0xae3d('0x3d')](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x20?',_0x1c5f67['body'][_0xae3d('0x75')][_0xae3d('0x74')]())[_0xae3d('0x3d')](_0xae3d('0x76'))['where'](_0xae3d('0x77'),squel[_0xae3d('0x6b')]()[_0xae3d('0x6c')]('phone')['from'](_0xae3d('0x78'))['where'](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]()))[_0xae3d('0x3d')](_0xae3d('0x77'),squel[_0xae3d('0x6b')]()['field'](_0xae3d('0x87'))[_0xae3d('0x7a')](_0xae3d('0x73'))['where'](_0xae3d('0x86'),_0x1c5f67['params']['id'][_0xae3d('0x74')]())[_0xae3d('0x3d')]('state\x20=\x204'))['group'](_0xae3d('0x6a')))['toString']();return db['sequelize'][_0xae3d('0x34')](_0x3261e5);}return[];})['then'](respondWithResult(_0xa083d0,null))[_0xae3d('0x48')](handleError(_0xa083d0,null));};exports['checkContactHopper']=function(_0x31f606,_0x47aa7a,_0x27c0ff){return db['CmHopper'][_0xae3d('0x88')]({'where':{'VoiceQueueId':_0x31f606['body'][_0xae3d('0x72')],'CampaignId':_0x31f606[_0xae3d('0x4f')][_0xae3d('0x80')],'ContactId':_0x31f606[_0xae3d('0x4f')][_0xae3d('0x6a')]}})[_0xae3d('0x28')](handleEntityNotFound(_0x47aa7a,null))[_0xae3d('0x28')](function(_0x95c4ce){if(_0x95c4ce){return _0x95c4ce;}return null;})[_0xae3d('0x28')](respondWithResult(_0x47aa7a,null))['catch'](handleError(_0x47aa7a,null));};
\ No newline at end of file
index 03da63c..9435015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe404=['request-promise','path','rimraf','../../config/environment','exports','define','CmHopperFinal','calleridnum','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xe5751a,_0x1a50f7){var _0x26171e=function(_0x628151){while(--_0x628151){_0xe5751a['push'](_0xe5751a['shift']());}};_0x26171e(++_0x1a50f7);}(_0xe404,0x153));var _0x4e40=function(_0x55fe54,_0x4b13ce){_0x55fe54=_0x55fe54-0x0;var _0x3f561a=_0xe404[_0x55fe54];return _0x3f561a;};'use strict';var _=require(_0x4e40('0x0'));var util=require(_0x4e40('0x1'));var logger=require(_0x4e40('0x2'))(_0x4e40('0x3'));var moment=require(_0x4e40('0x4'));var BPromise=require(_0x4e40('0x5'));var rp=require(_0x4e40('0x6'));var fs=require('fs');var path=require(_0x4e40('0x7'));var rimraf=require(_0x4e40('0x8'));var config=require(_0x4e40('0x9'));var attributes=require('./cmHopperFinal.attributes');module[_0x4e40('0xa')]=function(_0x3e034b,_0x37966b){return _0x3e034b[_0x4e40('0xb')](_0x4e40('0xc'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0x4e40('0xd'),'fields':[_0x4e40('0xd')]},{'name':_0x4e40('0xe'),'fields':[_0x4e40('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbbf=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbbbf,0x18f));var _0xfbbb=function(_0x587d31,_0x1cf0c8){_0x587d31=_0x587d31-0x0;var _0x246025=_0xbbbf[_0x587d31];return _0x246025;};'use strict';var _=require(_0xfbbb('0x0'));var util=require(_0xfbbb('0x1'));var logger=require(_0xfbbb('0x2'))(_0xfbbb('0x3'));var moment=require(_0xfbbb('0x4'));var BPromise=require(_0xfbbb('0x5'));var rp=require(_0xfbbb('0x6'));var fs=require('fs');var path=require(_0xfbbb('0x7'));var rimraf=require('rimraf');var config=require(_0xfbbb('0x8'));var attributes=require(_0xfbbb('0x9'));module[_0xfbbb('0xa')]=function(_0x21eb83,_0xe10e90){return _0x21eb83[_0xfbbb('0xb')](_0xfbbb('0xc'),attributes,{'tableName':_0xfbbb('0xd'),'paranoid':![],'indexes':[{'name':_0xfbbb('0xe'),'fields':[_0xfbbb('0xe')]},{'name':_0xfbbb('0xf'),'fields':[_0xfbbb('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 82dad46..5b3ef69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x590998,_0x29ee84){var _0x303f98=function(_0x44cfe6){while(--_0x44cfe6){_0x590998['push'](_0x590998['shift']());}};_0x303f98(++_0x29ee84);}(_0x7a54,0x106));var _0x47a5=function(_0x160ad1,_0x5eca86){_0x160ad1=_0x160ad1-0x0;var _0x3df2f2=_0x7a54[_0x160ad1];return _0x3df2f2;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x24e80d,_0x48e60e){var _0x1e8ef4=function(_0x382acf){while(--_0x382acf){_0x24e80d['push'](_0x24e80d['shift']());}};_0x1e8ef4(++_0x48e60e);}(_0xb10b,0x12a));var _0xbb10=function(_0x5c72ee,_0x5a8bf8){_0x5c72ee=_0x5c72ee-0x0;var _0x231876=_0xb10b[_0x5c72ee];return _0x231876;};'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 44c55ae..a6be113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54c2=['/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','/:id','update','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','/describe','describe','show'];(function(_0x3bef2c,_0x5a86fd){var _0x331503=function(_0x463430){while(--_0x463430){_0x3bef2c['push'](_0x3bef2c['shift']());}};_0x331503(++_0x5a86fd);}(_0x54c2,0x7d));var _0x254c=function(_0x5ef7b8,_0x15cc07){_0x5ef7b8=_0x5ef7b8-0x0;var _0x2c7148=_0x54c2[_0x5ef7b8];return _0x2c7148;};'use strict';var multer=require(_0x254c('0x0'));var util=require(_0x254c('0x1'));var path=require(_0x254c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x254c('0x3')]();var fs_extra=require(_0x254c('0x4'));var auth=require(_0x254c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x254c('0x6'));var controller=require(_0x254c('0x7'));router[_0x254c('0x8')]('/',auth[_0x254c('0x9')](),controller['index']);router['get'](_0x254c('0xa'),auth[_0x254c('0x9')](),controller[_0x254c('0xb')]);router[_0x254c('0x8')]('/:id',auth[_0x254c('0x9')](),controller[_0x254c('0xc')]);router[_0x254c('0x8')]('/voice/queue/countAttributes/:id',auth[_0x254c('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x254c('0x8')](_0x254c('0xd'),auth[_0x254c('0x9')](),controller[_0x254c('0xe')]);router[_0x254c('0xf')](_0x254c('0x10'),auth[_0x254c('0x9')](),controller[_0x254c('0x11')]);router[_0x254c('0xf')]('/voice/campaign/moveContacts/:id',auth[_0x254c('0x9')](),controller[_0x254c('0x12')]);router[_0x254c('0xf')]('/checkContactHopper',auth[_0x254c('0x9')](),controller[_0x254c('0x13')]);router['put'](_0x254c('0x14'),auth[_0x254c('0x9')](),controller[_0x254c('0x15')]);module[_0x254c('0x16')]=router;
\ No newline at end of file
+var _0x1afc=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','path'];(function(_0x29558b,_0x5621aa){var _0x5e7a3d=function(_0x2e5416){while(--_0x2e5416){_0x29558b['push'](_0x29558b['shift']());}};_0x5e7a3d(++_0x5621aa);}(_0x1afc,0x167));var _0xc1af=function(_0x3e4d72,_0x69279){_0x3e4d72=_0x3e4d72-0x0;var _0x594622=_0x1afc[_0x3e4d72];return _0x594622;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc1af('0x0'));var timeout=require(_0xc1af('0x1'));var express=require('express');var router=express[_0xc1af('0x2')]();var fs_extra=require(_0xc1af('0x3'));var auth=require(_0xc1af('0x4'));var interaction=require(_0xc1af('0x5'));var config=require(_0xc1af('0x6'));var controller=require(_0xc1af('0x7'));router[_0xc1af('0x8')]('/',auth[_0xc1af('0x9')](),controller[_0xc1af('0xa')]);router[_0xc1af('0x8')]('/describe',auth[_0xc1af('0x9')](),controller[_0xc1af('0xb')]);router[_0xc1af('0x8')](_0xc1af('0xc'),auth['isAuthenticated'](),controller[_0xc1af('0xd')]);router[_0xc1af('0x8')](_0xc1af('0xe'),auth[_0xc1af('0x9')](),controller['countContactsQueueCampaignHopperFinal']);router['get'](_0xc1af('0xf'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x10')]);router[_0xc1af('0x11')](_0xc1af('0x12'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x13')]);router[_0xc1af('0x11')]('/voice/campaign/moveContacts/:id',auth[_0xc1af('0x9')](),controller[_0xc1af('0x14')]);router['post'](_0xc1af('0x15'),auth[_0xc1af('0x9')](),controller['checkContactHopper']);router[_0xc1af('0x16')](_0xc1af('0xc'),auth[_0xc1af('0x9')](),controller[_0xc1af('0x17')]);module['exports']=router;
\ No newline at end of file
index fb09ea1..a0621e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5d=['DATE','BOOLEAN','exports','INTEGER','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7d5d,0x1dd));var _0xd7d5=function(_0x3d765a,_0x117566){_0x3d765a=_0x3d765a-0x0;var _0x872598=_0x7d5d[_0x3d765a];return _0x872598;};'use strict';var Sequelize=require('sequelize');module[_0xd7d5('0x0')]={'state':{'type':Sequelize[_0xd7d5('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xd7d5('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xd7d5('0x2')]},'originatecalleridname':{'type':Sequelize[_0xd7d5('0x2')]},'calleridnum':{'type':Sequelize[_0xd7d5('0x2')]},'calleridname':{'type':Sequelize[_0xd7d5('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xd7d5('0x3')]},'answertime':{'type':Sequelize[_0xd7d5('0x3')]},'droptime':{'type':Sequelize[_0xd7d5('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xd7d5('0x2')]},'campaign':{'type':Sequelize[_0xd7d5('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xd7d5('0x2')]},'reason':{'type':Sequelize[_0xd7d5('0x2')]},'amd':{'type':Sequelize[_0xd7d5('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0xd7d5('0x4')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xd7d5('0x3')]},'recallme':{'type':Sequelize[_0xd7d5('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xd7d5('0x3')]},'edited':{'type':Sequelize[_0xd7d5('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xd7d5('0x1')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xd7d5('0x2')]}};
\ No newline at end of file
+var _0x2f1c=['DATE','BOOLEAN','sequelize','exports','INTEGER','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2f1c,0x68));var _0xc2f1=function(_0x5f4cd7,_0x459c44){_0x5f4cd7=_0x5f4cd7-0x0;var _0x47c93f=_0x2f1c[_0x5f4cd7];return _0x47c93f;};'use strict';var Sequelize=require(_0xc2f1('0x0'));module[_0xc2f1('0x1')]={'state':{'type':Sequelize[_0xc2f1('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xc2f1('0x3')]},'scheduledat':{'type':Sequelize[_0xc2f1('0x4')]},'countbusyretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xc2f1('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xc2f1('0x3')]},'originatecalleridname':{'type':Sequelize[_0xc2f1('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xc2f1('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xc2f1('0x4')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xc2f1('0x3')]},'campaign':{'type':Sequelize[_0xc2f1('0x3')]},'campaigntype':{'type':Sequelize[_0xc2f1('0x3')]},'membername':{'type':Sequelize[_0xc2f1('0x3')]},'reason':{'type':Sequelize[_0xc2f1('0x3')]},'amd':{'type':Sequelize[_0xc2f1('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xc2f1('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc2f1('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xc2f1('0x4')]},'recallme':{'type':Sequelize[_0xc2f1('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0xc2f1('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xc2f1('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xc2f1('0x3')]}};
\ No newline at end of file
index 8567392..ffd72a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dc6=['undefined','limit','offset','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','CmHopperHistory','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','describe','uniqueid','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x156a51,_0x4fbbe9){var _0x1ba831=function(_0x1e9c7d){while(--_0x1e9c7d){_0x156a51['push'](_0x156a51['shift']());}};_0x1ba831(++_0x4fbbe9);}(_0x4dc6,0x1f1));var _0x64dc=function(_0x1877c3,_0x2b65dc){_0x1877c3=_0x1877c3-0x0;var _0x369711=_0x4dc6[_0x1877c3];return _0x369711;};'use strict';var emlformat=require(_0x64dc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x64dc('0x1'));var jsonpatch=require(_0x64dc('0x2'));var rp=require(_0x64dc('0x3'));var moment=require(_0x64dc('0x4'));var BPromise=require(_0x64dc('0x5'));var Mustache=require(_0x64dc('0x6'));var util=require(_0x64dc('0x7'));var path=require(_0x64dc('0x8'));var sox=require(_0x64dc('0x9'));var csv=require(_0x64dc('0xa'));var ejs=require(_0x64dc('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64dc('0xc'));var squel=require(_0x64dc('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x64dc('0xe'));var toCsv=require(_0x64dc('0xa'));var querystring=require('querystring');var Papa=require(_0x64dc('0xf'));var Redis=require(_0x64dc('0x10'));var authService=require(_0x64dc('0x11'));var qs=require(_0x64dc('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x64dc('0x13'));var logger=require('../../config/logger')(_0x64dc('0x14'));var utils=require('../../config/utils');var config=require(_0x64dc('0x15'));var licenseUtil=require(_0x64dc('0x16'));var db=require(_0x64dc('0x17'))['db'];function respondWithStatusCode(_0x16a500,_0xb4524f){_0xb4524f=_0xb4524f||0xcc;return function(_0x190abd){if(_0x190abd){return _0x16a500[_0x64dc('0x18')](_0xb4524f);}return _0x16a500[_0x64dc('0x19')](_0xb4524f)[_0x64dc('0x1a')]();};}function respondWithResult(_0xfd45a5,_0x47f4a5){_0x47f4a5=_0x47f4a5||0xc8;return function(_0x4b0f2d){if(_0x4b0f2d){return _0xfd45a5[_0x64dc('0x19')](_0x47f4a5)[_0x64dc('0x1b')](_0x4b0f2d);}};}function respondWithFilteredResult(_0x373e56,_0x1ef272){return function(_0x865d9b){if(_0x865d9b){var _0x5a1fc5=typeof _0x1ef272['offset']===_0x64dc('0x1c')&&typeof _0x1ef272[_0x64dc('0x1d')]===_0x64dc('0x1c');var _0x13203d=_0x865d9b['count'];var _0x26850a=_0x5a1fc5?0x0:_0x1ef272[_0x64dc('0x1e')];var _0x2d6605=_0x5a1fc5?_0x865d9b['count']:_0x1ef272['offset']+_0x1ef272[_0x64dc('0x1d')];var _0x5e0a1f;if(_0x2d6605>=_0x13203d){_0x2d6605=_0x13203d;_0x5e0a1f=0xc8;}else{_0x5e0a1f=0xce;}_0x373e56[_0x64dc('0x19')](_0x5e0a1f);return _0x373e56['set'](_0x64dc('0x1f'),_0x26850a+'-'+_0x2d6605+'/'+_0x13203d)[_0x64dc('0x1b')](_0x865d9b);}return null;};}function patchUpdates(_0x5c041c){return function(_0x791f09){try{jsonpatch[_0x64dc('0x20')](_0x791f09,_0x5c041c,!![]);}catch(_0x57a033){return BPromise[_0x64dc('0x21')](_0x57a033);}return _0x791f09[_0x64dc('0x22')]();};}function saveUpdates(_0x4781d4,_0x5bc56d){return function(_0x43e38d){if(_0x43e38d){return _0x43e38d[_0x64dc('0x23')](_0x4781d4)[_0x64dc('0x24')](function(_0x119bbe){return _0x119bbe;});}return null;};}function removeEntity(_0x5c2699,_0x47d13a){return function(_0x1c61b7){if(_0x1c61b7){return _0x1c61b7['destroy']()[_0x64dc('0x24')](function(){_0x5c2699[_0x64dc('0x19')](0xcc)[_0x64dc('0x1a')]();});}};}function handleEntityNotFound(_0x371bde,_0x1db641){return function(_0x3f1644){if(!_0x3f1644){_0x371bde[_0x64dc('0x18')](0x194);}return _0x3f1644;};}function handleError(_0x23946d,_0x568167){_0x568167=_0x568167||0x1f4;return function(_0x1447d2){logger[_0x64dc('0x25')](_0x1447d2[_0x64dc('0x26')]);if(_0x1447d2[_0x64dc('0x27')]){delete _0x1447d2[_0x64dc('0x27')];}_0x23946d[_0x64dc('0x19')](_0x568167)['send'](_0x1447d2);};}exports[_0x64dc('0x28')]=function(_0x282e74,_0x4330ec){var _0x57a8e6={},_0x4cf750={},_0x1149a7={'count':0x0,'rows':[]};var _0x34f1d0=_[_0x64dc('0x29')](db[_0x64dc('0x2a')][_0x64dc('0x2b')],function(_0x4683f4){return{'name':_0x4683f4['fieldName'],'type':_0x4683f4[_0x64dc('0x2c')][_0x64dc('0x2d')]};});_0x4cf750[_0x64dc('0x2e')]=_['map'](_0x34f1d0,_0x64dc('0x27'));_0x4cf750[_0x64dc('0x2f')]=_[_0x64dc('0x30')](_0x282e74[_0x64dc('0x2f')]);_0x4cf750[_0x64dc('0x31')]=_[_0x64dc('0x32')](_0x4cf750[_0x64dc('0x2e')],_0x4cf750[_0x64dc('0x2f')]);_0x57a8e6[_0x64dc('0x33')]=_[_0x64dc('0x32')](_0x4cf750[_0x64dc('0x2e')],qs[_0x64dc('0x34')](_0x282e74[_0x64dc('0x2f')][_0x64dc('0x34')]));_0x57a8e6[_0x64dc('0x33')]=_0x57a8e6['attributes']['length']?_0x57a8e6[_0x64dc('0x33')]:_0x4cf750[_0x64dc('0x2e')];if(!_0x282e74[_0x64dc('0x2f')][_0x64dc('0x35')](_0x64dc('0x36'))){_0x57a8e6[_0x64dc('0x1d')]=qs[_0x64dc('0x1d')](_0x282e74['query'][_0x64dc('0x1d')]);_0x57a8e6[_0x64dc('0x1e')]=qs[_0x64dc('0x1e')](_0x282e74[_0x64dc('0x2f')][_0x64dc('0x1e')]);}_0x57a8e6[_0x64dc('0x37')]=qs[_0x64dc('0x38')](_0x282e74[_0x64dc('0x2f')][_0x64dc('0x38')]);_0x57a8e6[_0x64dc('0x39')]=qs['filters'](_['pick'](_0x282e74['query'],_0x4cf750[_0x64dc('0x31')]),_0x34f1d0);if(_0x282e74[_0x64dc('0x2f')][_0x64dc('0x3a')]){_0x57a8e6[_0x64dc('0x39')]=_[_0x64dc('0x3b')](_0x57a8e6[_0x64dc('0x39')],{'$or':_[_0x64dc('0x29')](_0x34f1d0,function(_0x2f36e2){if(_0x2f36e2[_0x64dc('0x2c')]!==_0x64dc('0x3c')){var _0x126fc6={};_0x126fc6[_0x2f36e2[_0x64dc('0x27')]]={'$like':'%'+_0x282e74[_0x64dc('0x2f')]['filter']+'%'};return _0x126fc6;}})});}_0x57a8e6=_['merge']({},_0x57a8e6,_0x282e74[_0x64dc('0x3d')]);var _0xe68539={'where':_0x57a8e6['where']};return db[_0x64dc('0x2a')]['count'](_0xe68539)[_0x64dc('0x24')](function(_0x41d918){_0x1149a7['count']=_0x41d918;if(_0x282e74[_0x64dc('0x2f')][_0x64dc('0x3e')]){_0x57a8e6[_0x64dc('0x3f')]=[{'all':!![]}];}return db[_0x64dc('0x2a')][_0x64dc('0x40')](_0x57a8e6);})[_0x64dc('0x24')](function(_0x23f25a){_0x1149a7[_0x64dc('0x41')]=_0x23f25a;return _0x1149a7;})[_0x64dc('0x24')](respondWithFilteredResult(_0x4330ec,_0x57a8e6))[_0x64dc('0x42')](handleError(_0x4330ec,null));};exports[_0x64dc('0x43')]=function(_0x4d4e6c,_0xcd1795){var _0x15dd0d={'raw':!![],'where':{'id':_0x4d4e6c[_0x64dc('0x44')]['id']}},_0x52b282={};_0x52b282[_0x64dc('0x2e')]=_[_0x64dc('0x30')](db[_0x64dc('0x2a')][_0x64dc('0x2b')]);_0x52b282[_0x64dc('0x2f')]=_[_0x64dc('0x30')](_0x4d4e6c[_0x64dc('0x2f')]);_0x52b282[_0x64dc('0x31')]=_[_0x64dc('0x32')](_0x52b282[_0x64dc('0x2e')],_0x52b282['query']);_0x15dd0d[_0x64dc('0x33')]=_['intersection'](_0x52b282[_0x64dc('0x2e')],qs['fields'](_0x4d4e6c[_0x64dc('0x2f')][_0x64dc('0x34')]));_0x15dd0d['attributes']=_0x15dd0d[_0x64dc('0x33')][_0x64dc('0x45')]?_0x15dd0d[_0x64dc('0x33')]:_0x52b282[_0x64dc('0x2e')];if(_0x4d4e6c['query'][_0x64dc('0x3e')]){_0x15dd0d['include']=[{'all':!![]}];}_0x15dd0d=_[_0x64dc('0x3b')]({},_0x15dd0d,_0x4d4e6c['options']);return db[_0x64dc('0x2a')]['find'](_0x15dd0d)[_0x64dc('0x24')](handleEntityNotFound(_0xcd1795,null))[_0x64dc('0x24')](respondWithResult(_0xcd1795,null))[_0x64dc('0x42')](handleError(_0xcd1795,null));};exports[_0x64dc('0x46')]=function(_0x58c507,_0x3d15f8){return db[_0x64dc('0x2a')][_0x64dc('0x46')](_0x58c507[_0x64dc('0x47')],{})['then'](respondWithResult(_0x3d15f8,0xc9))[_0x64dc('0x42')](handleError(_0x3d15f8,null));};exports['describe']=function(_0x42d615,_0x46394d){return db['CmHopperHistory'][_0x64dc('0x48')]()['then'](respondWithResult(_0x46394d,null))['catch'](handleError(_0x46394d,null));};exports[_0x64dc('0x23')]=function(_0x266963,_0x21ea86){if(_0x266963[_0x64dc('0x47')][_0x64dc('0x49')]){delete _0x266963[_0x64dc('0x47')][_0x64dc('0x49')];}return db['CmHopperHistory'][_0x64dc('0x4a')]({'where':{'uniqueid':_0x266963[_0x64dc('0x44')]['id']}})[_0x64dc('0x24')](handleEntityNotFound(_0x21ea86,null))[_0x64dc('0x24')](saveUpdates(_0x266963[_0x64dc('0x47')],null))[_0x64dc('0x24')](respondWithResult(_0x21ea86,null))['catch'](handleError(_0x21ea86,null));};
\ No newline at end of file
+var _0x780c=['keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','update','then','error','stack','name','CmHopperHistory','rawAttributes','fieldName','type','key','model','map'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x780c,0x1dc));var _0xc780=function(_0x1c34e7,_0x33f9a8){_0x1c34e7=_0x1c34e7-0x0;var _0x378cb1=_0x780c[_0x1c34e7];return _0x378cb1;};'use strict';var emlformat=require(_0xc780('0x0'));var rimraf=require(_0xc780('0x1'));var zipdir=require(_0xc780('0x2'));var jsonpatch=require(_0xc780('0x3'));var rp=require('request-promise');var moment=require(_0xc780('0x4'));var BPromise=require(_0xc780('0x5'));var Mustache=require('mustache');var util=require(_0xc780('0x6'));var path=require('path');var sox=require(_0xc780('0x7'));var csv=require(_0xc780('0x8'));var ejs=require(_0xc780('0x9'));var fs=require('fs');var fs_extra=require(_0xc780('0xa'));var _=require(_0xc780('0xb'));var squel=require(_0xc780('0xc'));var crypto=require('crypto');var jsforce=require(_0xc780('0xd'));var deskjs=require(_0xc780('0xe'));var toCsv=require(_0xc780('0x8'));var querystring=require(_0xc780('0xf'));var Papa=require(_0xc780('0x10'));var Redis=require(_0xc780('0x11'));var authService=require(_0xc780('0x12'));var qs=require(_0xc780('0x13'));var as=require(_0xc780('0x14'));var hardwareService=require(_0xc780('0x15'));var logger=require(_0xc780('0x16'))(_0xc780('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc780('0x18'));var db=require(_0xc780('0x19'))['db'];function respondWithStatusCode(_0x3896f9,_0x22348f){_0x22348f=_0x22348f||0xcc;return function(_0x5cfe06){if(_0x5cfe06){return _0x3896f9[_0xc780('0x1a')](_0x22348f);}return _0x3896f9['status'](_0x22348f)[_0xc780('0x1b')]();};}function respondWithResult(_0x1cd0be,_0x20e69e){_0x20e69e=_0x20e69e||0xc8;return function(_0x5c0a64){if(_0x5c0a64){return _0x1cd0be['status'](_0x20e69e)[_0xc780('0x1c')](_0x5c0a64);}};}function respondWithFilteredResult(_0x4ace4e,_0x34189f){return function(_0x8bce50){if(_0x8bce50){var _0x21a0e0=typeof _0x34189f['offset']===_0xc780('0x1d')&&typeof _0x34189f[_0xc780('0x1e')]==='undefined';var _0x1e4a51=_0x8bce50[_0xc780('0x1f')];var _0x272da6=_0x21a0e0?0x0:_0x34189f[_0xc780('0x20')];var _0x4968e1=_0x21a0e0?_0x8bce50[_0xc780('0x1f')]:_0x34189f[_0xc780('0x20')]+_0x34189f['limit'];var _0x490111;if(_0x4968e1>=_0x1e4a51){_0x4968e1=_0x1e4a51;_0x490111=0xc8;}else{_0x490111=0xce;}_0x4ace4e[_0xc780('0x21')](_0x490111);return _0x4ace4e[_0xc780('0x22')](_0xc780('0x23'),_0x272da6+'-'+_0x4968e1+'/'+_0x1e4a51)['json'](_0x8bce50);}return null;};}function patchUpdates(_0x7fde1e){return function(_0x1ced90){try{jsonpatch[_0xc780('0x24')](_0x1ced90,_0x7fde1e,!![]);}catch(_0x182e02){return BPromise['reject'](_0x182e02);}return _0x1ced90['save']();};}function saveUpdates(_0x54303c,_0x50e7cb){return function(_0x2e236f){if(_0x2e236f){return _0x2e236f[_0xc780('0x25')](_0x54303c)[_0xc780('0x26')](function(_0x24b3b6){return _0x24b3b6;});}return null;};}function removeEntity(_0x29c882,_0x3ddabb){return function(_0x52583b){if(_0x52583b){return _0x52583b['destroy']()[_0xc780('0x26')](function(){_0x29c882[_0xc780('0x21')](0xcc)[_0xc780('0x1b')]();});}};}function handleEntityNotFound(_0x70aa3a,_0x1d4d99){return function(_0x3c5955){if(!_0x3c5955){_0x70aa3a['sendStatus'](0x194);}return _0x3c5955;};}function handleError(_0x3b7a93,_0x228d1a){_0x228d1a=_0x228d1a||0x1f4;return function(_0x168f51){logger[_0xc780('0x27')](_0x168f51[_0xc780('0x28')]);if(_0x168f51['name']){delete _0x168f51[_0xc780('0x29')];}_0x3b7a93[_0xc780('0x21')](_0x228d1a)['send'](_0x168f51);};}exports['index']=function(_0x33009b,_0x29fc38){var _0x2d4943={},_0x581115={},_0x4f9b6d={'count':0x0,'rows':[]};var _0x1c64dc=_['map'](db[_0xc780('0x2a')][_0xc780('0x2b')],function(_0x8dc9ab){return{'name':_0x8dc9ab[_0xc780('0x2c')],'type':_0x8dc9ab[_0xc780('0x2d')][_0xc780('0x2e')]};});_0x581115[_0xc780('0x2f')]=_[_0xc780('0x30')](_0x1c64dc,_0xc780('0x29'));_0x581115['query']=_[_0xc780('0x31')](_0x33009b[_0xc780('0x32')]);_0x581115[_0xc780('0x33')]=_[_0xc780('0x34')](_0x581115[_0xc780('0x2f')],_0x581115[_0xc780('0x32')]);_0x2d4943[_0xc780('0x35')]=_[_0xc780('0x34')](_0x581115[_0xc780('0x2f')],qs[_0xc780('0x36')](_0x33009b[_0xc780('0x32')][_0xc780('0x36')]));_0x2d4943['attributes']=_0x2d4943['attributes'][_0xc780('0x37')]?_0x2d4943[_0xc780('0x35')]:_0x581115[_0xc780('0x2f')];if(!_0x33009b['query'][_0xc780('0x38')]('nolimit')){_0x2d4943[_0xc780('0x1e')]=qs[_0xc780('0x1e')](_0x33009b[_0xc780('0x32')][_0xc780('0x1e')]);_0x2d4943['offset']=qs[_0xc780('0x20')](_0x33009b[_0xc780('0x32')][_0xc780('0x20')]);}_0x2d4943[_0xc780('0x39')]=qs[_0xc780('0x3a')](_0x33009b[_0xc780('0x32')][_0xc780('0x3a')]);_0x2d4943[_0xc780('0x3b')]=qs['filters'](_[_0xc780('0x3c')](_0x33009b['query'],_0x581115[_0xc780('0x33')]),_0x1c64dc);if(_0x33009b[_0xc780('0x32')][_0xc780('0x3d')]){_0x2d4943[_0xc780('0x3b')]=_[_0xc780('0x3e')](_0x2d4943[_0xc780('0x3b')],{'$or':_['map'](_0x1c64dc,function(_0xe36b2f){if(_0xe36b2f[_0xc780('0x2d')]!==_0xc780('0x3f')){var _0x195d87={};_0x195d87[_0xe36b2f[_0xc780('0x29')]]={'$like':'%'+_0x33009b['query'][_0xc780('0x3d')]+'%'};return _0x195d87;}})});}_0x2d4943=_[_0xc780('0x3e')]({},_0x2d4943,_0x33009b[_0xc780('0x40')]);var _0x5953e6={'where':_0x2d4943[_0xc780('0x3b')]};return db[_0xc780('0x2a')]['count'](_0x5953e6)['then'](function(_0x3f7748){_0x4f9b6d['count']=_0x3f7748;if(_0x33009b[_0xc780('0x32')][_0xc780('0x41')]){_0x2d4943[_0xc780('0x42')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xc780('0x43')](_0x2d4943);})[_0xc780('0x26')](function(_0x4a5cde){_0x4f9b6d[_0xc780('0x44')]=_0x4a5cde;return _0x4f9b6d;})['then'](respondWithFilteredResult(_0x29fc38,_0x2d4943))[_0xc780('0x45')](handleError(_0x29fc38,null));};exports['show']=function(_0x2bf3f6,_0x373c58){var _0x581b48={'raw':!![],'where':{'id':_0x2bf3f6[_0xc780('0x46')]['id']}},_0xc03ae9={};_0xc03ae9[_0xc780('0x2f')]=_[_0xc780('0x31')](db[_0xc780('0x2a')][_0xc780('0x2b')]);_0xc03ae9['query']=_[_0xc780('0x31')](_0x2bf3f6['query']);_0xc03ae9[_0xc780('0x33')]=_['intersection'](_0xc03ae9['model'],_0xc03ae9[_0xc780('0x32')]);_0x581b48[_0xc780('0x35')]=_[_0xc780('0x34')](_0xc03ae9[_0xc780('0x2f')],qs['fields'](_0x2bf3f6['query'][_0xc780('0x36')]));_0x581b48[_0xc780('0x35')]=_0x581b48[_0xc780('0x35')]['length']?_0x581b48[_0xc780('0x35')]:_0xc03ae9[_0xc780('0x2f')];if(_0x2bf3f6['query'][_0xc780('0x41')]){_0x581b48['include']=[{'all':!![]}];}_0x581b48=_[_0xc780('0x3e')]({},_0x581b48,_0x2bf3f6['options']);return db[_0xc780('0x2a')][_0xc780('0x47')](_0x581b48)[_0xc780('0x26')](handleEntityNotFound(_0x373c58,null))[_0xc780('0x26')](respondWithResult(_0x373c58,null))['catch'](handleError(_0x373c58,null));};exports['create']=function(_0x37ed8e,_0x759f07){return db[_0xc780('0x2a')]['create'](_0x37ed8e[_0xc780('0x48')],{})['then'](respondWithResult(_0x759f07,0xc9))[_0xc780('0x45')](handleError(_0x759f07,null));};exports['describe']=function(_0x130881,_0x59aa73){return db[_0xc780('0x2a')][_0xc780('0x49')]()[_0xc780('0x26')](respondWithResult(_0x59aa73,null))[_0xc780('0x45')](handleError(_0x59aa73,null));};exports['update']=function(_0x5581a4,_0x1d8260){if(_0x5581a4['body'][_0xc780('0x4a')]){delete _0x5581a4[_0xc780('0x48')][_0xc780('0x4a')];}return db[_0xc780('0x2a')][_0xc780('0x47')]({'where':{'uniqueid':_0x5581a4[_0xc780('0x46')]['id']}})['then'](handleEntityNotFound(_0x1d8260,null))[_0xc780('0x26')](saveUpdates(_0x5581a4['body'],null))[_0xc780('0x26')](respondWithResult(_0x1d8260,null))['catch'](handleError(_0x1d8260,null));};
\ No newline at end of file
index 04ccbcc..8f56923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e22=['util','api','moment','bluebird','request-promise','../../config/environment','./cmHopperHistory.attributes','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid'];(function(_0x28006e,_0xe7108f){var _0x34dc6e=function(_0x4bccb3){while(--_0x4bccb3){_0x28006e['push'](_0x28006e['shift']());}};_0x34dc6e(++_0xe7108f);}(_0x3e22,0xa8));var _0x23e2=function(_0x3dbb87,_0x47419d){_0x3dbb87=_0x3dbb87-0x0;var _0x141ca0=_0x3e22[_0x3dbb87];return _0x141ca0;};'use strict';var _=require('lodash');var util=require(_0x23e2('0x0'));var logger=require('../../config/logger')(_0x23e2('0x1'));var moment=require(_0x23e2('0x2'));var BPromise=require(_0x23e2('0x3'));var rp=require(_0x23e2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x23e2('0x5'));var attributes=require(_0x23e2('0x6'));module['exports']=function(_0x287f8f,_0x433a85){return _0x287f8f[_0x23e2('0x7')](_0x23e2('0x8'),attributes,{'tableName':_0x23e2('0x9'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0x23e2('0xa')]},{'name':_0x23e2('0xb'),'fields':[_0x23e2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xce14=['api','moment','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','define','CmHopperHistory','endtime','uniqueid','util'];(function(_0x187309,_0x2cb520){var _0x1d3711=function(_0x5ab037){while(--_0x5ab037){_0x187309['push'](_0x187309['shift']());}};_0x1d3711(++_0x2cb520);}(_0xce14,0x17f));var _0x4ce1=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xce14[_0x5ddb1c];return _0x354adc;};'use strict';var _=require('lodash');var util=require(_0x4ce1('0x0'));var logger=require('../../config/logger')(_0x4ce1('0x1'));var moment=require(_0x4ce1('0x2'));var BPromise=require('bluebird');var rp=require(_0x4ce1('0x3'));var fs=require('fs');var path=require(_0x4ce1('0x4'));var rimraf=require(_0x4ce1('0x5'));var config=require(_0x4ce1('0x6'));var attributes=require(_0x4ce1('0x7'));module['exports']=function(_0x10aaa0,_0x3954d4){return _0x10aaa0[_0x4ce1('0x8')](_0x4ce1('0x9'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0x4ce1('0xa'),'fields':[_0x4ce1('0xa')]},{'name':_0x4ce1('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 64c1e15..998176d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd35f=['outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','message','CmHopperHistory,\x20%s,\x20%s','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','info','AvgHandleTime','findAll','sequelize','COUNT','predictiveIntervalTotalCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','where','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null'];(function(_0x1991b4,_0x1a90b0){var _0x5cd2f4=function(_0x347686){while(--_0x347686){_0x1991b4['push'](_0x1991b4['shift']());}};_0x5cd2f4(++_0x1a90b0);}(_0xd35f,0xd2));var _0xfd35=function(_0x74745d,_0x177606){_0x74745d=_0x74745d-0x0;var _0x174ab3=_0xd35f[_0x74745d];return _0x174ab3;};'use strict';var _=require(_0xfd35('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfd35('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd35('0x2'));var db=require(_0xfd35('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd35('0x4'))(_0xfd35('0x5'));var config=require(_0xfd35('0x6'));var jayson=require(_0xfd35('0x7'));var client=jayson[_0xfd35('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b3e7a,_0x11ed40,_0xa2395c){return new BPromise(function(_0x39337f,_0x383b0f){return client['request'](_0x1b3e7a,_0xa2395c)[_0xfd35('0x9')](function(_0x1da506){logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x11ed40,_0xfd35('0xa'));logger[_0xfd35('0xb')](_0xfd35('0xc'),_0x11ed40,_0xfd35('0xa'),JSON[_0xfd35('0xd')](_0x1da506));if(_0x1da506['error']){if(_0x1da506[_0xfd35('0xe')]['code']===0x1f4){logger[_0xfd35('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x11ed40,_0x1da506['error'][_0xfd35('0xf')]);return _0x383b0f(_0x1da506[_0xfd35('0xe')]['message']);}logger[_0xfd35('0xe')](_0xfd35('0x10'),_0x11ed40,_0x1da506[_0xfd35('0xe')][_0xfd35('0xf')]);return _0x39337f(_0x1da506[_0xfd35('0xe')][_0xfd35('0xf')]);}else{logger['info'](_0xfd35('0x10'),_0x11ed40,_0xfd35('0xa'));_0x39337f(_0x1da506[_0xfd35('0x11')][_0xfd35('0xf')]);}})[_0xfd35('0x12')](function(_0x1a1dd5){logger[_0xfd35('0xe')](_0xfd35('0x10'),_0x11ed40,_0x1a1dd5);_0x383b0f(_0x1a1dd5);});});}exports[_0xfd35('0x13')]=function(_0x4a3ded){var _0x1abe41=this;return new Promise(function(_0x5ec1c3,_0x17cfd5){return db[_0xfd35('0x14')][_0xfd35('0x15')](_0x4a3ded[_0xfd35('0x16')],{'raw':_0x4a3ded[_0xfd35('0x17')]?_0x4a3ded[_0xfd35('0x17')][_0xfd35('0x18')]===undefined?!![]:![]:!![]})[_0xfd35('0x9')](function(_0x1fbb54){logger[_0xfd35('0x19')](_0xfd35('0x13'),_0x4a3ded);logger[_0xfd35('0xb')](_0xfd35('0x13'),_0x4a3ded,JSON['stringify'](_0x1fbb54));_0x5ec1c3(_0x1fbb54);})[_0xfd35('0x12')](function(_0x6b224f){logger[_0xfd35('0xe')](_0xfd35('0x13'),_0x6b224f['message'],_0x4a3ded);_0x17cfd5(_0x1abe41[_0xfd35('0xe')](0x1f4,_0x6b224f[_0xfd35('0xf')]));});});};exports[_0xfd35('0x1a')]=function(_0x46f893){var _0x28942b=this;return new Promise(function(_0x16750e,_0x2e6c1b){return db[_0xfd35('0x14')][_0xfd35('0x1b')]({'raw':_0x46f893['options']?_0x46f893[_0xfd35('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x46f893[_0xfd35('0x17')]?_0x46f893[_0xfd35('0x17')]['where']||null:null,'attributes':[[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['col']('id')),_0xfd35('0x1e')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db['sequelize'][_0xfd35('0x1f')]('`state`\x20=\x204,\x201,\x20null'))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x20')))),_0xfd35('0x21')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x22')))),_0xfd35('0x23')],[db[_0xfd35('0x1c')]['fn']('AVG',db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x24')))),_0xfd35('0x25')],[db[_0xfd35('0x1c')]['fn']('AVG',db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x26')))),_0xfd35('0x27')]]})['then'](function(_0x2ce453){logger['info'](_0xfd35('0x1a'),_0x46f893);logger[_0xfd35('0xb')](_0xfd35('0x1a'),_0x46f893,JSON[_0xfd35('0xd')](_0x2ce453));_0x16750e(_0x2ce453);})[_0xfd35('0x12')](function(_0x3e9bc4){logger[_0xfd35('0xe')](_0xfd35('0x1a'),_0x3e9bc4[_0xfd35('0xf')],_0x46f893);_0x2e6c1b(_0x28942b[_0xfd35('0xe')](0x1f4,_0x3e9bc4[_0xfd35('0xf')]));});});};exports[_0xfd35('0x28')]=function(_0x58aafd){var _0xd3ccc9=this;return new Promise(function(_0x117186,_0x52540e){return db[_0xfd35('0x14')][_0xfd35('0x1b')]({'raw':_0x58aafd[_0xfd35('0x17')]?_0x58aafd[_0xfd35('0x17')][_0xfd35('0x18')]===undefined?!![]:![]:!![],'where':_0x58aafd['options']?_0x58aafd[_0xfd35('0x17')][_0xfd35('0x29')]||null:null,'attributes':[[_0xfd35('0x2a'),_0xfd35('0x2b')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x2c')))),_0xfd35('0x2d')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x2e')))),_0xfd35('0x2f')],[db['sequelize']['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')]('`state`\x20=\x204,\x201,\x20null'))),_0xfd35('0x30')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x31')))),_0xfd35('0x32')],[db[_0xfd35('0x1c')]['fn']('COUNT',db[_0xfd35('0x1c')]['fn']('IF',db['sequelize'][_0xfd35('0x1f')](_0xfd35('0x33')))),_0xfd35('0x34')],[db['sequelize']['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x35')))),_0xfd35('0x36')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xfd35('0x37')],[db['sequelize']['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x38')))),_0xfd35('0x39')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x3a')))),'outboundBlacklistCallsDay'],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db['sequelize'][_0xfd35('0x1f')](_0xfd35('0x3b')))),_0xfd35('0x3c')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db[_0xfd35('0x1c')]['literal'](_0xfd35('0x3d')))),_0xfd35('0x3e')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db[_0xfd35('0x1c')]['fn']('IF',db['sequelize'][_0xfd35('0x1f')](_0xfd35('0x3f')))),'outboundAnswerAgiCallsDay'],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0xfd35('0x1f')](_0xfd35('0x40')))),_0xfd35('0x3e')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')](_0xfd35('0x41')))),'outboundReCallsDay']],'group':[_0xfd35('0x2a')]})[_0xfd35('0x9')](function(_0x3903c9){logger['info'](_0xfd35('0x28'),_0x58aafd);logger[_0xfd35('0xb')](_0xfd35('0x28'),_0x58aafd,JSON[_0xfd35('0xd')](_0x3903c9));_0x117186(_0x3903c9);})[_0xfd35('0x12')](function(_0x51c1fa){logger[_0xfd35('0xe')]('GetVoiceQueueHopperHistory',_0x51c1fa[_0xfd35('0xf')],_0x58aafd);_0x52540e(_0xd3ccc9[_0xfd35('0xe')](0x1f4,_0x51c1fa[_0xfd35('0xf')]));});});};exports[_0xfd35('0x42')]=function(_0x4ab8bc){var _0x1ab536=this;return new Promise(function(_0x47b176,_0x363064){return db[_0xfd35('0x14')][_0xfd35('0x1b')]({'raw':_0x4ab8bc[_0xfd35('0x17')]?_0x4ab8bc[_0xfd35('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4ab8bc[_0xfd35('0x17')]?_0x4ab8bc[_0xfd35('0x17')][_0xfd35('0x29')]||null:null,'attributes':[[_0xfd35('0x2a'),_0xfd35('0x2b')],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['col']('id')),'ivrTotalCallsDays'],[db[_0xfd35('0x1c')]['fn'](_0xfd35('0x1d'),db['sequelize']['fn']('IF',db[_0xfd35('0x1c')][_0xfd35('0x1f')]('`state`\x20=\x204,\x201,\x20null'))),_0xfd35('0x43')]],'group':[_0xfd35('0x2a')]})[_0xfd35('0x9')](function(_0x2bd043){logger['info'](_0xfd35('0x42'),_0x4ab8bc);logger[_0xfd35('0xb')](_0xfd35('0x42'),_0x4ab8bc,JSON[_0xfd35('0xd')](_0x2bd043));_0x47b176(_0x2bd043);})[_0xfd35('0x12')](function(_0x548c9f){logger[_0xfd35('0xe')](_0xfd35('0x42'),_0x548c9f['message'],_0x4ab8bc);_0x363064(_0x1ab536[_0xfd35('0xe')](0x1f4,_0x548c9f['message']));});});};
\ No newline at end of file
+var _0x15ec=['outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetCampaignHopperHistory','ivrAnswerCallsDay','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','options','then','stringify','findAll','raw','where','COUNT','col','predictiveIntervalTotalCalls','sequelize','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null'];(function(_0x4fb33d,_0x467841){var _0x245160=function(_0x4e671a){while(--_0x4e671a){_0x4fb33d['push'](_0x4fb33d['shift']());}};_0x245160(++_0x467841);}(_0x15ec,0x16c));var _0xc15e=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0x15ec[_0x55e08b];return _0xd1a7ff;};'use strict';var _=require('lodash');var util=require(_0xc15e('0x0'));var moment=require(_0xc15e('0x1'));var BPromise=require(_0xc15e('0x2'));var rs=require(_0xc15e('0x3'));var fs=require('fs');var Redis=require(_0xc15e('0x4'));var db=require(_0xc15e('0x5'))['db'];var utils=require(_0xc15e('0x6'));var logger=require(_0xc15e('0x7'))(_0xc15e('0x8'));var config=require(_0xc15e('0x9'));var jayson=require(_0xc15e('0xa'));var client=jayson['client'][_0xc15e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b94f3,_0x10bc9a,_0xa2b267){return new BPromise(function(_0x390830,_0x34836f){return client[_0xc15e('0xc')](_0x4b94f3,_0xa2b267)['then'](function(_0x2b74b3){logger[_0xc15e('0xd')]('CmHopperHistory,\x20%s,\x20%s',_0x10bc9a,'request\x20sent');logger[_0xc15e('0xe')](_0xc15e('0xf'),_0x10bc9a,_0xc15e('0x10'),JSON['stringify'](_0x2b74b3));if(_0x2b74b3[_0xc15e('0x11')]){if(_0x2b74b3[_0xc15e('0x11')][_0xc15e('0x12')]===0x1f4){logger[_0xc15e('0x11')](_0xc15e('0x13'),_0x10bc9a,_0x2b74b3[_0xc15e('0x11')][_0xc15e('0x14')]);return _0x34836f(_0x2b74b3[_0xc15e('0x11')]['message']);}logger['error'](_0xc15e('0x13'),_0x10bc9a,_0x2b74b3['error'][_0xc15e('0x14')]);return _0x390830(_0x2b74b3[_0xc15e('0x11')][_0xc15e('0x14')]);}else{logger['info'](_0xc15e('0x13'),_0x10bc9a,_0xc15e('0x10'));_0x390830(_0x2b74b3[_0xc15e('0x15')][_0xc15e('0x14')]);}})[_0xc15e('0x16')](function(_0x4abf13){logger[_0xc15e('0x11')](_0xc15e('0x13'),_0x10bc9a,_0x4abf13);_0x34836f(_0x4abf13);});});}exports[_0xc15e('0x17')]=function(_0x57948f){var _0x368755=this;return new Promise(function(_0x31a4c9,_0x5a9950){return db[_0xc15e('0x18')][_0xc15e('0x19')](_0x57948f['body'],{'raw':_0x57948f[_0xc15e('0x1a')]?_0x57948f[_0xc15e('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xc15e('0x1b')](function(_0x76c281){logger[_0xc15e('0xd')](_0xc15e('0x17'),_0x57948f);logger['debug'](_0xc15e('0x17'),_0x57948f,JSON[_0xc15e('0x1c')](_0x76c281));_0x31a4c9(_0x76c281);})[_0xc15e('0x16')](function(_0xa2527){logger[_0xc15e('0x11')](_0xc15e('0x17'),_0xa2527[_0xc15e('0x14')],_0x57948f);_0x5a9950(_0x368755['error'](0x1f4,_0xa2527[_0xc15e('0x14')]));});});};exports['AvgHandleTime']=function(_0x4e03c8){var _0x43b009=this;return new Promise(function(_0x55a424,_0x427a41){return db[_0xc15e('0x18')][_0xc15e('0x1d')]({'raw':_0x4e03c8[_0xc15e('0x1a')]?_0x4e03c8[_0xc15e('0x1a')][_0xc15e('0x1e')]===undefined?!![]:![]:!![],'where':_0x4e03c8[_0xc15e('0x1a')]?_0x4e03c8[_0xc15e('0x1a')][_0xc15e('0x1f')]||null:null,'attributes':[[db['sequelize']['fn'](_0xc15e('0x20'),db['sequelize'][_0xc15e('0x21')]('id')),_0xc15e('0x22')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x25')))),'predictiveIntervalAnsweredCalls'],[db[_0xc15e('0x23')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')]('`state`\x20=\x2010,\x201,\x20null'))),_0xc15e('0x26')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')]['literal'](_0xc15e('0x27')))),_0xc15e('0x28')],[db[_0xc15e('0x23')]['fn']('AVG',db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x29')))),_0xc15e('0x2a')],[db[_0xc15e('0x23')]['fn']('AVG',db[_0xc15e('0x23')]['fn']('IF',db['sequelize'][_0xc15e('0x24')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xc15e('0x2b')]]})['then'](function(_0xe386d2){logger[_0xc15e('0xd')]('AvgHandleTime',_0x4e03c8);logger[_0xc15e('0xe')](_0xc15e('0x2c'),_0x4e03c8,JSON['stringify'](_0xe386d2));_0x55a424(_0xe386d2);})[_0xc15e('0x16')](function(_0x174d3c){logger[_0xc15e('0x11')](_0xc15e('0x2c'),_0x174d3c[_0xc15e('0x14')],_0x4e03c8);_0x427a41(_0x43b009[_0xc15e('0x11')](0x1f4,_0x174d3c['message']));});});};exports[_0xc15e('0x2d')]=function(_0x524c4f){var _0x2a7599=this;return new Promise(function(_0x5cf7a8,_0x2b5145){return db[_0xc15e('0x18')][_0xc15e('0x1d')]({'raw':_0x524c4f[_0xc15e('0x1a')]?_0x524c4f[_0xc15e('0x1a')][_0xc15e('0x1e')]===undefined?!![]:![]:!![],'where':_0x524c4f[_0xc15e('0x1a')]?_0x524c4f[_0xc15e('0x1a')]['where']||null:null,'attributes':[[_0xc15e('0x2e'),_0xc15e('0x2f')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x30')))),_0xc15e('0x31')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db['sequelize']['fn']('IF',db[_0xc15e('0x23')]['literal'](_0xc15e('0x32')))),_0xc15e('0x33')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')]('`state`\x20=\x204,\x201,\x20null'))),_0xc15e('0x34')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')]['literal'](_0xc15e('0x35')))),_0xc15e('0x36')],[db['sequelize']['fn'](_0xc15e('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0xc15e('0x24')](_0xc15e('0x37')))),_0xc15e('0x38')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xc15e('0x39')],[db[_0xc15e('0x23')]['fn']('COUNT',db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xc15e('0x3a')],[db[_0xc15e('0x23')]['fn']('COUNT',db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x3b')))),_0xc15e('0x3c')],[db['sequelize']['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')]['literal'](_0xc15e('0x3d')))),_0xc15e('0x3e')],[db['sequelize']['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x3f')))),'outboundOriginateFailureCallsDay'],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x40')))),_0xc15e('0x41')],[db[_0xc15e('0x23')]['fn']('COUNT',db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')]('`state`\x20=\x2016,\x201,\x20null'))),_0xc15e('0x42')],[db['sequelize']['fn']('COUNT',db[_0xc15e('0x23')]['fn']('IF',db[_0xc15e('0x23')][_0xc15e('0x24')](_0xc15e('0x43')))),'outboundRejectCallsDay'],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db[_0xc15e('0x23')]['fn']('IF',db['sequelize'][_0xc15e('0x24')](_0xc15e('0x44')))),'outboundReCallsDay']],'group':[_0xc15e('0x2e')]})[_0xc15e('0x1b')](function(_0x1eca8b){logger[_0xc15e('0xd')]('GetVoiceQueueHopperHistory',_0x524c4f);logger[_0xc15e('0xe')](_0xc15e('0x2d'),_0x524c4f,JSON[_0xc15e('0x1c')](_0x1eca8b));_0x5cf7a8(_0x1eca8b);})[_0xc15e('0x16')](function(_0x340a51){logger[_0xc15e('0x11')](_0xc15e('0x2d'),_0x340a51['message'],_0x524c4f);_0x2b5145(_0x2a7599[_0xc15e('0x11')](0x1f4,_0x340a51[_0xc15e('0x14')]));});});};exports[_0xc15e('0x45')]=function(_0x43be44){var _0xc2810e=this;return new Promise(function(_0x4260ff,_0x4518d2){return db[_0xc15e('0x18')][_0xc15e('0x1d')]({'raw':_0x43be44['options']?_0x43be44[_0xc15e('0x1a')][_0xc15e('0x1e')]===undefined?!![]:![]:!![],'where':_0x43be44[_0xc15e('0x1a')]?_0x43be44[_0xc15e('0x1a')][_0xc15e('0x1f')]||null:null,'attributes':[['campaign',_0xc15e('0x2f')],[db[_0xc15e('0x23')]['fn'](_0xc15e('0x20'),db['sequelize'][_0xc15e('0x21')]('id')),'ivrTotalCallsDays'],[db[_0xc15e('0x23')]['fn']('COUNT',db[_0xc15e('0x23')]['fn']('IF',db['sequelize'][_0xc15e('0x24')](_0xc15e('0x25')))),_0xc15e('0x46')]],'group':[_0xc15e('0x2e')]})['then'](function(_0xba28e1){logger[_0xc15e('0xd')](_0xc15e('0x45'),_0x43be44);logger['debug'](_0xc15e('0x45'),_0x43be44,JSON[_0xc15e('0x1c')](_0xba28e1));_0x4260ff(_0xba28e1);})[_0xc15e('0x16')](function(_0x5069bc){logger[_0xc15e('0x11')](_0xc15e('0x45'),_0x5069bc[_0xc15e('0x14')],_0x43be44);_0x4518d2(_0xc2810e[_0xc15e('0x11')](0x1f4,_0x5069bc['message']));});});};
\ No newline at end of file
index 28481e2..dd7be62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ef7=['isAuthenticated','index','/describe','/:id','show','create','update','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','get'];(function(_0x3947fa,_0x15640d){var _0x47661d=function(_0x5cd9f4){while(--_0x5cd9f4){_0x3947fa['push'](_0x3947fa['shift']());}};_0x47661d(++_0x15640d);}(_0x1ef7,0x1f1));var _0x71ef=function(_0x30a31e,_0x31f766){_0x30a31e=_0x30a31e-0x0;var _0x170879=_0x1ef7[_0x30a31e];return _0x170879;};'use strict';var multer=require(_0x71ef('0x0'));var util=require(_0x71ef('0x1'));var path=require(_0x71ef('0x2'));var timeout=require(_0x71ef('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x71ef('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x71ef('0x5'));var controller=require('./cmHopperHistory.controller');router[_0x71ef('0x6')]('/',auth[_0x71ef('0x7')](),controller[_0x71ef('0x8')]);router[_0x71ef('0x6')](_0x71ef('0x9'),auth[_0x71ef('0x7')](),controller['describe']);router[_0x71ef('0x6')](_0x71ef('0xa'),auth[_0x71ef('0x7')](),controller[_0x71ef('0xb')]);router['post']('/',auth[_0x71ef('0x7')](),controller[_0x71ef('0xc')]);router['put'](_0x71ef('0xa'),auth[_0x71ef('0x7')](),controller[_0x71ef('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x972a=['create','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x31b588,_0x30b636){var _0xf4faae=function(_0x535ad7){while(--_0x535ad7){_0x31b588['push'](_0x31b588['shift']());}};_0xf4faae(++_0x30b636);}(_0x972a,0x15f));var _0xa972=function(_0x3e478c,_0x3afee8){_0x3e478c=_0x3e478c-0x0;var _0x3a0906=_0x972a[_0x3e478c];return _0x3a0906;};'use strict';var multer=require(_0xa972('0x0'));var util=require(_0xa972('0x1'));var path=require(_0xa972('0x2'));var timeout=require('connect-timeout');var express=require(_0xa972('0x3'));var router=express[_0xa972('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa972('0x5'));var config=require(_0xa972('0x6'));var controller=require('./cmHopperHistory.controller');router[_0xa972('0x7')]('/',auth[_0xa972('0x8')](),controller[_0xa972('0x9')]);router[_0xa972('0x7')](_0xa972('0xa'),auth[_0xa972('0x8')](),controller['describe']);router[_0xa972('0x7')](_0xa972('0xb'),auth['isAuthenticated'](),controller[_0xa972('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xa972('0xd')]);router['put'](_0xa972('0xb'),auth['isAuthenticated'](),controller['update']);module['exports']=router;
\ No newline at end of file
index 11e1c96..a134fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb15=['exports','STRING','name','sequelize'];(function(_0x40c72a,_0x1ed6cf){var _0x62a0ab=function(_0x1b1265){while(--_0x1b1265){_0x40c72a['push'](_0x40c72a['shift']());}};_0x62a0ab(++_0x1ed6cf);}(_0xfb15,0x12f));var _0x5fb1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xfb15[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x5fb1('0x0'));module[_0x5fb1('0x1')]={'name':{'type':Sequelize[_0x5fb1('0x2')],'unique':_0x5fb1('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5fb1('0x2')]},'dialPrefix':{'type':Sequelize[_0x5fb1('0x2')]}};
\ No newline at end of file
+var _0x4944=['name','sequelize','STRING'];(function(_0x134ba5,_0xbc52b7){var _0x4bfec9=function(_0x4e3cbd){while(--_0x4e3cbd){_0x134ba5['push'](_0x134ba5['shift']());}};_0x4bfec9(++_0xbc52b7);}(_0x4944,0x6d));var _0x4494=function(_0x567f86,_0x5d044a){_0x567f86=_0x567f86-0x0;var _0x292465=_0x4944[_0x567f86];return _0x292465;};'use strict';var Sequelize=require(_0x4494('0x0'));module['exports']={'name':{'type':Sequelize[_0x4494('0x1')],'unique':_0x4494('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4494('0x1')]},'dialPrefix':{'type':Sequelize[_0x4494('0x1')]}};
\ No newline at end of file
index 3647eb7..c2259cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2cf=['intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Lists','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','addDisposition','ListId','Disposition','findOne','order','include','removeDispositions','ids','addContacts','tags','join','isArray','push','each','omit','success','dataValues','errors','getContacts','CmCustomField','CmContact','concat','CustomFields','format','cf_%d','getContactsCsv','OrderBy','alias','select','from','c.deletedAt\x20is\x20null','distinct','field','c.cf_','customField_','item','cm_contact_has_items','additionalPhone_','description','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','toString','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','Content-disposition','Content-type','text/csv','download','addCustomField','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','cm_contacts','getGlobalCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','User','getAgents','message','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','get','error','stack','name','index','map','CmList','rawAttributes','fieldName','type','query'];(function(_0x5841f,_0x2b0771){var _0x57c5b9=function(_0x524dbd){while(--_0x524dbd){_0x5841f['push'](_0x5841f['shift']());}};_0x57c5b9(++_0x2b0771);}(_0xf2cf,0x1ab));var _0xff2c=function(_0x4cbd18,_0x44aa34){_0x4cbd18=_0x4cbd18-0x0;var _0x19cb7c=_0xf2cf[_0x4cbd18];return _0x19cb7c;};'use strict';var emlformat=require(_0xff2c('0x0'));var rimraf=require(_0xff2c('0x1'));var zipdir=require(_0xff2c('0x2'));var jsonpatch=require(_0xff2c('0x3'));var rp=require(_0xff2c('0x4'));var moment=require('moment');var BPromise=require(_0xff2c('0x5'));var Mustache=require(_0xff2c('0x6'));var util=require(_0xff2c('0x7'));var path=require(_0xff2c('0x8'));var sox=require(_0xff2c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xff2c('0xa'));var squel=require(_0xff2c('0xb'));var crypto=require(_0xff2c('0xc'));var jsforce=require(_0xff2c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xff2c('0xe'));var querystring=require('querystring');var Papa=require(_0xff2c('0xf'));var Redis=require(_0xff2c('0x10'));var authService=require(_0xff2c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xff2c('0x12'));var logger=require(_0xff2c('0x13'))(_0xff2c('0x14'));var utils=require(_0xff2c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xff2c('0x16'));var db=require(_0xff2c('0x17'))['db'];var csv_results;config['redis']=_[_0xff2c('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xff2c('0x19'))(new Redis(config['redis']));require(_0xff2c('0x1a'))[_0xff2c('0x1b')](socket);function respondWithStatusCode(_0x4bd7c0,_0x417ccc){_0x417ccc=_0x417ccc||0xcc;return function(_0x20cee0){if(_0x20cee0){return _0x4bd7c0[_0xff2c('0x1c')](_0x417ccc);}return _0x4bd7c0[_0xff2c('0x1d')](_0x417ccc)[_0xff2c('0x1e')]();};}function respondWithResult(_0x9ea33c,_0x176035){_0x176035=_0x176035||0xc8;return function(_0xd9eb86){if(_0xd9eb86){return _0x9ea33c[_0xff2c('0x1d')](_0x176035)['json'](_0xd9eb86);}};}function respondWithFilteredResult(_0x9585d,_0x1aeb20){return function(_0x4ae4d2){if(_0x4ae4d2){var _0x3e636e=typeof _0x1aeb20['offset']===_0xff2c('0x1f')&&typeof _0x1aeb20[_0xff2c('0x20')]===_0xff2c('0x1f');var _0x91b0d=_0x4ae4d2[_0xff2c('0x21')];var _0x29b991=_0x3e636e?0x0:_0x1aeb20[_0xff2c('0x22')];var _0x361246=_0x3e636e?_0x4ae4d2['count']:_0x1aeb20[_0xff2c('0x22')]+_0x1aeb20[_0xff2c('0x20')];var _0x1c651f;if(_0x361246>=_0x91b0d){_0x361246=_0x91b0d;_0x1c651f=0xc8;}else{_0x1c651f=0xce;}_0x9585d[_0xff2c('0x1d')](_0x1c651f);return _0x9585d[_0xff2c('0x23')](_0xff2c('0x24'),_0x29b991+'-'+_0x361246+'/'+_0x91b0d)[_0xff2c('0x25')](_0x4ae4d2);}return null;};}function patchUpdates(_0xa9d300){return function(_0x13992a){try{jsonpatch[_0xff2c('0x26')](_0x13992a,_0xa9d300,!![]);}catch(_0x3afbe8){return BPromise['reject'](_0x3afbe8);}return _0x13992a[_0xff2c('0x27')]();};}function saveUpdates(_0x222efa,_0x1ee438){return function(_0x2d524b){if(_0x2d524b){return _0x2d524b[_0xff2c('0x28')](_0x222efa)[_0xff2c('0x29')](function(_0x11e4b0){return _0x11e4b0;});}return null;};}function removeEntity(_0x1bbb84,_0x1800b7){return function(_0xe6add){if(_0xe6add){return _0xe6add['destroy']()[_0xff2c('0x29')](function(){var _0x5b9cd3=_0xe6add[_0xff2c('0x2a')]({'plain':!![]});var _0x4c9594='Lists';return db['UserProfileResource']['destroy']({'where':{'type':_0x4c9594,'resourceId':_0x5b9cd3['id']}})[_0xff2c('0x29')](function(){return _0xe6add;});})['then'](function(){_0x1bbb84[_0xff2c('0x1d')](0xcc)[_0xff2c('0x1e')]();});}};}function handleEntityNotFound(_0x3a3fc9,_0x4adcb9){return function(_0x1be3a6){if(!_0x1be3a6){_0x3a3fc9[_0xff2c('0x1c')](0x194);}return _0x1be3a6;};}function handleError(_0x3fda14,_0x4c2220){_0x4c2220=_0x4c2220||0x1f4;return function(_0x48d221){logger[_0xff2c('0x2b')](_0x48d221[_0xff2c('0x2c')]);if(_0x48d221[_0xff2c('0x2d')]){delete _0x48d221[_0xff2c('0x2d')];}_0x3fda14[_0xff2c('0x1d')](_0x4c2220)['send'](_0x48d221);};}exports[_0xff2c('0x2e')]=function(_0x439ae3,_0x42c416){var _0x1a492f={},_0x5100a6={},_0x43b7fb={'count':0x0,'rows':[]};var _0x23ba07=_[_0xff2c('0x2f')](db[_0xff2c('0x30')][_0xff2c('0x31')],function(_0x347ae1){return{'name':_0x347ae1[_0xff2c('0x32')],'type':_0x347ae1[_0xff2c('0x33')]['key']};});_0x5100a6['model']=_[_0xff2c('0x2f')](_0x23ba07,'name');_0x5100a6[_0xff2c('0x34')]=_['keys'](_0x439ae3['query']);_0x5100a6['filters']=_[_0xff2c('0x35')](_0x5100a6[_0xff2c('0x36')],_0x5100a6[_0xff2c('0x34')]);_0x1a492f[_0xff2c('0x37')]=_[_0xff2c('0x35')](_0x5100a6[_0xff2c('0x36')],qs[_0xff2c('0x38')](_0x439ae3[_0xff2c('0x34')][_0xff2c('0x38')]));_0x1a492f[_0xff2c('0x37')]=_0x1a492f[_0xff2c('0x37')]['length']?_0x1a492f[_0xff2c('0x37')]:_0x5100a6[_0xff2c('0x36')];if(!_0x439ae3[_0xff2c('0x34')][_0xff2c('0x39')](_0xff2c('0x3a'))){_0x1a492f[_0xff2c('0x20')]=qs[_0xff2c('0x20')](_0x439ae3[_0xff2c('0x34')]['limit']);_0x1a492f[_0xff2c('0x22')]=qs['offset'](_0x439ae3['query']['offset']);}_0x1a492f['order']=qs[_0xff2c('0x3b')](_0x439ae3[_0xff2c('0x34')][_0xff2c('0x3b')]);_0x1a492f[_0xff2c('0x3c')]=qs['filters'](_[_0xff2c('0x3d')](_0x439ae3['query'],_0x5100a6[_0xff2c('0x3e')]),_0x23ba07);if(_0x439ae3['query'][_0xff2c('0x3f')]){_0x1a492f[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x1a492f[_0xff2c('0x3c')],{'$or':_['map'](_0x23ba07,function(_0x1a5196){if(_0x1a5196['type']!=='VIRTUAL'){var _0x580e99={};_0x580e99[_0x1a5196[_0xff2c('0x2d')]]={'$like':'%'+_0x439ae3[_0xff2c('0x34')][_0xff2c('0x3f')]+'%'};return _0x580e99;}})});}_0x1a492f=_[_0xff2c('0x40')]({},_0x1a492f,_0x439ae3[_0xff2c('0x41')]);var _0xe02fa0={'where':_0x1a492f[_0xff2c('0x3c')]};return db[_0xff2c('0x30')]['count'](_0xe02fa0)['then'](function(_0x9c976f){_0x43b7fb[_0xff2c('0x21')]=_0x9c976f;if(_0x439ae3['query'][_0xff2c('0x42')]){_0x1a492f['include']=[{'all':!![]}];}return db[_0xff2c('0x30')][_0xff2c('0x43')](_0x1a492f);})[_0xff2c('0x29')](function(_0x2767ff){_0x43b7fb[_0xff2c('0x44')]=_0x2767ff;return _0x43b7fb;})[_0xff2c('0x29')](respondWithFilteredResult(_0x42c416,_0x1a492f))[_0xff2c('0x45')](handleError(_0x42c416,null));};exports[_0xff2c('0x46')]=function(_0x149e06,_0x4dd14f){var _0x490612={'raw':![],'where':{'id':_0x149e06[_0xff2c('0x47')]['id']}},_0x101cb5={};_0x101cb5[_0xff2c('0x36')]=_[_0xff2c('0x48')](db[_0xff2c('0x30')][_0xff2c('0x31')]);_0x101cb5[_0xff2c('0x34')]=_[_0xff2c('0x48')](_0x149e06['query']);_0x101cb5['filters']=_[_0xff2c('0x35')](_0x101cb5[_0xff2c('0x36')],_0x101cb5[_0xff2c('0x34')]);_0x490612[_0xff2c('0x37')]=_[_0xff2c('0x35')](_0x101cb5[_0xff2c('0x36')],qs['fields'](_0x149e06[_0xff2c('0x34')][_0xff2c('0x38')]));_0x490612[_0xff2c('0x37')]=_0x490612[_0xff2c('0x37')][_0xff2c('0x49')]?_0x490612['attributes']:_0x101cb5['model'];if(_0x149e06[_0xff2c('0x34')][_0xff2c('0x42')]){_0x490612['include']=[{'all':!![]}];}_0x490612=_[_0xff2c('0x40')]({},_0x490612,_0x149e06[_0xff2c('0x41')]);return db[_0xff2c('0x30')][_0xff2c('0x4a')](_0x490612)[_0xff2c('0x29')](handleEntityNotFound(_0x4dd14f,null))[_0xff2c('0x29')](respondWithResult(_0x4dd14f,null))[_0xff2c('0x45')](handleError(_0x4dd14f,null));};exports[_0xff2c('0x4b')]=function(_0x23571f,_0x130aaf){return db[_0xff2c('0x30')][_0xff2c('0x4b')](_0x23571f[_0xff2c('0x4c')],{})[_0xff2c('0x29')](function(_0x224642){var _0x1b2dab=_0x23571f[_0xff2c('0x4d')]['get']({'plain':!![]});if(!_0x1b2dab)throw new Error(_0xff2c('0x4e'));if(_0x1b2dab['role']===_0xff2c('0x4d')){var _0x384060=_0x224642[_0xff2c('0x2a')]({'plain':!![]});var _0x96a69=_0xff2c('0x4f');return db['UserProfileSection'][_0xff2c('0x4a')]({'where':{'name':_0x96a69,'userProfileId':_0x1b2dab[_0xff2c('0x50')]},'raw':!![]})['then'](function(_0x29d74a){if(_0x29d74a&&_0x29d74a[_0xff2c('0x51')]===0x0){return db[_0xff2c('0x52')][_0xff2c('0x4b')]({'name':_0x384060['name'],'resourceId':_0x384060['id'],'type':_0x29d74a[_0xff2c('0x2d')],'sectionId':_0x29d74a['id']},{})[_0xff2c('0x29')](function(){return _0x224642;});}else{return _0x224642;}})[_0xff2c('0x45')](function(_0x31776d){logger[_0xff2c('0x2b')](_0xff2c('0x53'),_0x31776d);throw _0x31776d;});}return _0x224642;})[_0xff2c('0x29')](respondWithResult(_0x130aaf,0xc9))['catch'](handleError(_0x130aaf,null));};exports['update']=function(_0x54a8b1,_0x18916e){if(_0x54a8b1[_0xff2c('0x4c')]['id']){delete _0x54a8b1[_0xff2c('0x4c')]['id'];}return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x54a8b1[_0xff2c('0x47')]['id']}})['then'](handleEntityNotFound(_0x18916e,null))[_0xff2c('0x29')](saveUpdates(_0x54a8b1[_0xff2c('0x4c')],null))[_0xff2c('0x29')](respondWithResult(_0x18916e,null))[_0xff2c('0x45')](handleError(_0x18916e,null));};exports[_0xff2c('0x54')]=function(_0x56fb29,_0x1c3f9f){return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x56fb29[_0xff2c('0x47')]['id']}})['then'](handleEntityNotFound(_0x1c3f9f,null))[_0xff2c('0x29')](removeEntity(_0x1c3f9f,null))['catch'](handleError(_0x1c3f9f,null));};exports[_0xff2c('0x55')]=function(_0x5294b6,_0x1f8562){return db[_0xff2c('0x30')][_0xff2c('0x55')]()['then'](respondWithResult(_0x1f8562,null))[_0xff2c('0x45')](handleError(_0x1f8562,null));};exports[_0xff2c('0x56')]=function(_0x8b13c5,_0x152614,_0xeb2eb8){if(_0x8b13c5['body']['id']){delete _0x8b13c5[_0xff2c('0x4c')]['id'];}return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x8b13c5[_0xff2c('0x47')]['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x152614,null))[_0xff2c('0x29')](function(_0x1c85b0){if(_0x1c85b0){_0x8b13c5['body'][_0xff2c('0x57')]=_0x1c85b0['id'];return db[_0xff2c('0x58')]['create'](_0x8b13c5[_0xff2c('0x4c')]);}})[_0xff2c('0x29')](respondWithResult(_0x152614,null))[_0xff2c('0x45')](handleError(_0x152614,null));};exports['getDispositions']=function(_0x1b1313,_0x8cac7a,_0x185614){var _0x282794={'raw':![],'where':{}};var _0x4a181d={};var _0xcf0269={'count':0x0,'rows':[]};return db[_0xff2c('0x30')][_0xff2c('0x59')]({'where':{'id':_0x1b1313[_0xff2c('0x47')]['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x8cac7a,null))[_0xff2c('0x29')](function(_0x441a11){if(_0x441a11){_0x4a181d['model']=_[_0xff2c('0x48')](db[_0xff2c('0x58')][_0xff2c('0x31')]);_0x4a181d[_0xff2c('0x34')]=_['keys'](_0x1b1313[_0xff2c('0x34')]);_0x4a181d[_0xff2c('0x3e')]=_[_0xff2c('0x35')](_0x4a181d[_0xff2c('0x36')],_0x4a181d['query']);_0x282794[_0xff2c('0x37')]=_[_0xff2c('0x35')](_0x4a181d[_0xff2c('0x36')],qs[_0xff2c('0x38')](_0x1b1313[_0xff2c('0x34')][_0xff2c('0x38')]));_0x282794[_0xff2c('0x37')]=_0x282794[_0xff2c('0x37')]['length']?_0x282794[_0xff2c('0x37')]:_0x4a181d[_0xff2c('0x36')];if(!_0x1b1313[_0xff2c('0x34')][_0xff2c('0x39')](_0xff2c('0x3a'))){_0x282794[_0xff2c('0x20')]=qs[_0xff2c('0x20')](_0x1b1313['query']['limit']);_0x282794['offset']=qs['offset'](_0x1b1313['query'][_0xff2c('0x22')]);}_0x282794[_0xff2c('0x5a')]=qs[_0xff2c('0x3b')](_0x1b1313[_0xff2c('0x34')][_0xff2c('0x3b')]);_0x282794['where']=qs[_0xff2c('0x3e')](_[_0xff2c('0x3d')](_0x1b1313[_0xff2c('0x34')],_0x4a181d[_0xff2c('0x3e')]));_0x282794[_0xff2c('0x3c')][_0xff2c('0x57')]=_0x441a11['id'];if(_0x1b1313[_0xff2c('0x34')][_0xff2c('0x3f')]){_0x282794[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x282794[_0xff2c('0x3c')],{'$or':_[_0xff2c('0x2f')](_0x282794[_0xff2c('0x37')],function(_0x233ce9){var _0x5f4121={};_0x5f4121[_0x233ce9]={'$like':'%'+_0x1b1313[_0xff2c('0x34')][_0xff2c('0x3f')]+'%'};return _0x5f4121;})});}_0x282794=_[_0xff2c('0x40')]({},_0x282794,_0x1b1313['options']);return db[_0xff2c('0x58')]['count']({'where':_0x282794[_0xff2c('0x3c')]})['then'](function(_0x5cec97){_0xcf0269[_0xff2c('0x21')]=_0x5cec97;if(_0x1b1313['query'][_0xff2c('0x42')]){_0x282794[_0xff2c('0x5b')]=[{'all':!![]}];}return db[_0xff2c('0x58')][_0xff2c('0x43')](_0x282794);})[_0xff2c('0x29')](function(_0xcf1407){_0xcf0269[_0xff2c('0x44')]=_0xcf1407;return _0xcf0269;});}})[_0xff2c('0x29')](respondWithFilteredResult(_0x8cac7a,_0x282794))[_0xff2c('0x45')](handleError(_0x8cac7a,null));};exports['removeDispositions']=function(_0x235d46,_0x4c0529,_0x56aa20){return db['CmList'][_0xff2c('0x4a')]({'where':{'id':_0x235d46['params']['id']}})['then'](handleEntityNotFound(_0x4c0529,null))[_0xff2c('0x29')](function(_0x5debd6){if(_0x5debd6){return _0x5debd6[_0xff2c('0x5c')](_0x235d46['query'][_0xff2c('0x5d')]);}})[_0xff2c('0x29')](respondWithStatusCode(_0x4c0529,null))['catch'](handleError(_0x4c0529,null));};exports[_0xff2c('0x5e')]=function(_0x1ad29a,_0x1cf4cd,_0x473c5b){return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x1ad29a[_0xff2c('0x47')]['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x1cf4cd,null))[_0xff2c('0x29')](function(_0x5b4ba9){if(_0x5b4ba9){var _0x3cf795=[];var _0x231cf2={'success':[],'errors':[]};return db['CmContact']['describe']()[_0xff2c('0x29')](function(_0x32a90e){if(_0x1ad29a[_0xff2c('0x4c')][_0xff2c('0x5f')]&&_['isArray'](_0x1ad29a['body']['tags'])){if(_0x1ad29a['body'][_0xff2c('0x5f')]['length']){_0x1ad29a[_0xff2c('0x4c')][_0xff2c('0x5f')]=_0x1ad29a[_0xff2c('0x4c')][_0xff2c('0x5f')][_0xff2c('0x60')](';')+';';}else{_0x1ad29a[_0xff2c('0x4c')]['tags']=null;}}else{_0x1ad29a['body']['tags']=null;}if(_0x1ad29a[_0xff2c('0x4c')]&&_[_0xff2c('0x61')](_0x1ad29a['body'])){for(var _0x1b3c3c=0x0;_0x1b3c3c<_0x1ad29a[_0xff2c('0x4c')][_0xff2c('0x49')];_0x1b3c3c+=0x1){_0x1ad29a[_0xff2c('0x4c')][_0x1b3c3c]['ListId']=_0x1ad29a[_0xff2c('0x47')]['id'];_0x3cf795[_0xff2c('0x62')](_0x1ad29a[_0xff2c('0x4c')][_0x1b3c3c]);}return BPromise[_0xff2c('0x63')](_0x3cf795,function(_0x40512a){return db['CmContact']['create'](_[_0xff2c('0x64')](_0x40512a,[_0xff2c('0x5d'),'id'])||{},{'fields':_[_0xff2c('0x48')](_0x32a90e),'raw':!![]})['then'](function(_0x2544ee){_0x231cf2[_0xff2c('0x65')]['push'](_0x2544ee[_0xff2c('0x66')]);})[_0xff2c('0x45')](function(_0x2b71b0){_0x231cf2[_0xff2c('0x67')][_0xff2c('0x62')]({'data':_0x40512a,'error':_0x2b71b0['message']});});})['then'](function(_0x329d10){return _0x231cf2;})[_0xff2c('0x45')](function(_0x20e0d7){return _0x20e0d7;});}else{_0x1cf4cd['status'](0x190)[_0xff2c('0x25')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0xff2c('0x29')](respondWithResult(_0x1cf4cd,null))[_0xff2c('0x45')](handleError(_0x1cf4cd,null));};exports[_0xff2c('0x68')]=function(_0x3d6e6c,_0x2e3fd5,_0x5a0074){var _0x18aeb2;return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x3d6e6c[_0xff2c('0x47')]['id']},'include':[{'model':db[_0xff2c('0x69')],'as':'CustomFields'}]})[_0xff2c('0x29')](handleEntityNotFound(_0x2e3fd5,null))[_0xff2c('0x29')](function(_0x823126){if(_0x823126){_0x18aeb2=_0x823126;return db[_0xff2c('0x6a')]['rawAttributes'];}})[_0xff2c('0x29')](function(_0x5dcd54){if(_0x5dcd54){var _0x391bff={};var _0xb82273={};_0xb82273[_0xff2c('0x36')]=_[_0xff2c('0x6b')](_[_0xff2c('0x48')](_0x5dcd54),_[_0xff2c('0x2f')](_0x18aeb2[_0xff2c('0x6c')],function(_0x4edd71){return util[_0xff2c('0x6d')](_0xff2c('0x6e'),_0x4edd71['id']);}));_0xb82273[_0xff2c('0x34')]=_[_0xff2c('0x48')](_0x3d6e6c[_0xff2c('0x34')]);_0xb82273[_0xff2c('0x3e')]=_['intersection'](_0xb82273['model'],_0xb82273['query']);_0x391bff[_0xff2c('0x37')]=_[_0xff2c('0x35')](_0xb82273[_0xff2c('0x36')],qs[_0xff2c('0x38')](_0x3d6e6c[_0xff2c('0x34')][_0xff2c('0x38')]));_0x391bff['attributes']=_0x391bff['attributes']['length']?_0x391bff[_0xff2c('0x37')]:_0xb82273[_0xff2c('0x36')];if(!_0x3d6e6c[_0xff2c('0x34')][_0xff2c('0x39')]('nolimit')){_0x391bff['limit']=qs['limit'](_0x3d6e6c[_0xff2c('0x34')]['limit']);_0x391bff[_0xff2c('0x22')]=qs[_0xff2c('0x22')](_0x3d6e6c[_0xff2c('0x34')]['offset']);}_0x391bff[_0xff2c('0x5a')]=qs[_0xff2c('0x3b')](_0x3d6e6c[_0xff2c('0x34')][_0xff2c('0x3b')]);_0x391bff[_0xff2c('0x3c')]=qs[_0xff2c('0x3e')](_[_0xff2c('0x3d')](_0x3d6e6c[_0xff2c('0x34')],_0xb82273['filters']));_0x391bff['raw']=!![];if(_0x3d6e6c[_0xff2c('0x34')][_0xff2c('0x3f')]){_0x391bff[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x391bff['where'],{'$or':_[_0xff2c('0x2f')](_0x391bff[_0xff2c('0x37')],function(_0x37e1be){var _0x2c6a98={};_0x2c6a98[_0x37e1be]={'$like':'%'+_0x3d6e6c[_0xff2c('0x34')][_0xff2c('0x3f')]+'%'};return _0x2c6a98;})});}_0x391bff=_[_0xff2c('0x40')]({},_0x391bff,_0x3d6e6c[_0xff2c('0x41')]);return _0x18aeb2[_0xff2c('0x68')](_0x391bff);}})['then'](respondWithResult(_0x2e3fd5,null))[_0xff2c('0x45')](handleError(_0x2e3fd5,null));};exports[_0xff2c('0x6f')]=function(_0x19261c,_0x1a27aa,_0x2e1c8c){var _0x2b9e7d;var _0x35b7b7;var _0x232542;var _0x17c11b=_0x19261c[_0xff2c('0x47')]['id'];csv_results=[];return db['ContactItemType'][_0xff2c('0x43')]({'attributes':['id',_0xff2c('0x2d')],'raw':!![],'order':[_0xff2c('0x70')]})[_0xff2c('0x29')](function(_0x244751){_0x2b9e7d=_0x244751;var _0x232cb7=_[_0xff2c('0x48')](db[_0xff2c('0x6a')][_0xff2c('0x31')]);return db[_0xff2c('0x69')][_0xff2c('0x43')]({'raw':!![],'attributes':['id',_0xff2c('0x71')]})['then'](function(_0xfdb8d5){_0x35b7b7=_0xfdb8d5;var _0x139c7d=squel[_0xff2c('0x72')]()[_0xff2c('0x38')](_0x232cb7)[_0xff2c('0x73')]('cm_contacts','c')['where']('c.ListId\x20=\x20?',_0x17c11b)[_0xff2c('0x3c')](_0xff2c('0x74'))[_0xff2c('0x75')]();for(var _0x2889c8=0x0;_0x2889c8<_0x35b7b7[_0xff2c('0x49')];_0x2889c8++){_0x139c7d[_0xff2c('0x76')](_0xff2c('0x77')+_0x35b7b7[_0x2889c8]['id'],_0xff2c('0x78')+_0x35b7b7[_0x2889c8][_0xff2c('0x71')]);}for(var _0x2889c8=0x0;_0x2889c8<_0x2b9e7d['length'];_0x2889c8++){_0x139c7d['field'](squel['select']()['field'](_0xff2c('0x79'))['from'](_0xff2c('0x7a'))['where']('ItemTypeId\x20=\x20?',_0x2b9e7d[_0x2889c8]['id'])['where']('CmContactId\x20=\x20c.id'),_0xff2c('0x7b')+_0x2b9e7d[_0x2889c8][_0xff2c('0x2d')]);_0x139c7d['field'](squel[_0xff2c('0x72')]()['field'](_0xff2c('0x7c'))[_0xff2c('0x73')](_0xff2c('0x7a'))[_0xff2c('0x3c')](_0xff2c('0x7d'),_0x2b9e7d[_0x2889c8]['id'])[_0xff2c('0x3c')](_0xff2c('0x7e')),'description_additionalPhone_'+_0x2b9e7d[_0x2889c8][_0xff2c('0x2d')]);}var _0x1d3ce3=[];_0x1d3ce3[_0xff2c('0x62')](_0x139c7d[_0xff2c('0x7f')]());BPromise[_0xff2c('0x63')](_0x1d3ce3,handleQuery)[_0xff2c('0x29')](function(_0x4d016d){handleQuery(_0x139c7d[_0xff2c('0x7f')]());var _0x41d89b=csv_results[0x0];if(!_[_0xff2c('0x80')](_0x41d89b)){var _0x4017a4=toCsv(_0x41d89b);var _0x45ba3e=Date[_0xff2c('0x81')]();fs['writeFileSync'](util['format'](_0xff2c('0x82'),_0x17c11b,_0x45ba3e),_0x4017a4);_0x1a27aa[_0xff2c('0x83')](_0xff2c('0x84'),'attachment;\x20filename='+util['format']('list_%d_%s.csv',_0x17c11b,_0x45ba3e));_0x1a27aa['setHeader'](_0xff2c('0x85'),_0xff2c('0x86'));return _0x1a27aa[_0xff2c('0x87')](util[_0xff2c('0x6d')](_0xff2c('0x82'),_0x17c11b,_0x45ba3e));}else{return _0x1a27aa['sendStatus'](0xcc);}});});});};exports[_0xff2c('0x88')]=function(_0x2afc83,_0x2509f9,_0x304783){var _0x442055;delete _0x2afc83[_0xff2c('0x4c')]['id'];return db[_0xff2c('0x30')][_0xff2c('0x59')]({'where':{'id':_0x2afc83[_0xff2c('0x47')]['id']}})['then'](handleEntityNotFound(_0x2509f9,null))['then'](function(_0x27be75){if(_0x27be75){return db['sequelize'][_0xff2c('0x89')](function(_0x42662c){return db[_0xff2c('0x69')][_0xff2c('0x4b')](_0x2afc83[_0xff2c('0x4c')],{'transaction':_0x42662c})[_0xff2c('0x29')](function(_0x567b5d){_0x442055=_0x567b5d;return _0x27be75[_0xff2c('0x8a')](_0x567b5d,{'transaction':_0x42662c});})[_0xff2c('0x29')](function(){var _0x2e64f0={'type':db[_0xff2c('0x8b')][_0xff2c('0x8c')],'transaction':_0x42662c};switch(_0x2afc83['body'][_0xff2c('0x33')]){case'text':_0x2e64f0[_0xff2c('0x33')]=db[_0xff2c('0x8b')][_0xff2c('0x8c')];break;case _0xff2c('0x8d'):_0x2e64f0[_0xff2c('0x33')]=db[_0xff2c('0x8b')][_0xff2c('0x8e')];break;case _0xff2c('0x8f'):_0x2e64f0[_0xff2c('0x33')]=db[_0xff2c('0x8b')][_0xff2c('0x90')];_0x2e64f0[_0xff2c('0x91')]=![];break;default:}return db[_0xff2c('0x92')][_0xff2c('0x93')]['addColumn'](_0xff2c('0x94'),util[_0xff2c('0x6d')]('cf_%s',_0x442055['id']),_0x2e64f0);})[_0xff2c('0x29')](function(){return _0x442055;});});}})[_0xff2c('0x29')](respondWithResult(_0x2509f9,null))[_0xff2c('0x45')](handleError(_0x2509f9,null));};exports['getCustomFields']=function(_0x30ac8f,_0x17baa7,_0x17eb2f){var _0x5db93f={};var _0x8ec930={};var _0x5600b1;var _0xcd1a58;return db[_0xff2c('0x30')][_0xff2c('0x59')]({'where':{'id':_0x30ac8f['params']['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x17baa7,null))[_0xff2c('0x29')](function(_0x34e2c7){if(_0x34e2c7){_0x5600b1=_0x34e2c7;_0x8ec930['model']=_[_0xff2c('0x48')](db['CmCustomField'][_0xff2c('0x31')]);_0x8ec930[_0xff2c('0x34')]=_[_0xff2c('0x48')](_0x30ac8f[_0xff2c('0x34')]);_0x8ec930[_0xff2c('0x3e')]=_['intersection'](_0x8ec930[_0xff2c('0x36')],_0x8ec930[_0xff2c('0x34')]);_0x5db93f[_0xff2c('0x37')]=_['intersection'](_0x8ec930[_0xff2c('0x36')],qs[_0xff2c('0x38')](_0x30ac8f[_0xff2c('0x34')][_0xff2c('0x38')]));_0x5db93f[_0xff2c('0x37')]=_0x5db93f['attributes']['length']?_0x5db93f[_0xff2c('0x37')]:_0x8ec930[_0xff2c('0x36')];_0x5db93f[_0xff2c('0x5a')]=qs[_0xff2c('0x3b')](_0x30ac8f['query']['sort']);_0x5db93f[_0xff2c('0x3c')]=qs[_0xff2c('0x3e')](_[_0xff2c('0x3d')](_0x30ac8f[_0xff2c('0x34')],_0x8ec930['filters']));_0x5db93f[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x5db93f[_0xff2c('0x3c')],{'$or':[{'ListId':_0x34e2c7['id']},{'ListId':null}]});if(_0x30ac8f['query']['filter']){_0x5db93f[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x5db93f[_0xff2c('0x3c')],{'$or':_[_0xff2c('0x2f')](_0x5db93f[_0xff2c('0x37')],function(_0x9acf63){var _0x182df6={};_0x182df6[_0x9acf63]={'$like':'%'+_0x30ac8f['query'][_0xff2c('0x3f')]+'%'};return _0x182df6;})});}_0x5db93f=_[_0xff2c('0x40')]({},_0x5db93f,_0x30ac8f['options']);return db['CmCustomField']['findAndCountAll'](_0x5db93f);}})['then'](respondWithResult(_0x17baa7,null))[_0xff2c('0x45')](handleError(_0x17baa7,null));};exports[_0xff2c('0x95')]=function(_0x1edd35,_0x10ed87){return db[_0xff2c('0x69')][_0xff2c('0x96')]({'where':{'ListId':null}})[_0xff2c('0x29')](handleEntityNotFound(_0x10ed87,null))[_0xff2c('0x29')](function(_0x2ecf60){return _0x2ecf60;})[_0xff2c('0x29')](respondWithResult(_0x10ed87,null))['catch'](handleError(_0x10ed87,null));};exports[_0xff2c('0x97')]=function(_0x1333d6,_0x198416,_0x2dff9c){return db['CmList'][_0xff2c('0x4a')]({'where':{'id':_0x1333d6[_0xff2c('0x47')]['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x198416,null))['then'](function(_0x42b945){if(_0x42b945){return _0x42b945[_0xff2c('0x97')](_0x1333d6[_0xff2c('0x4c')][_0xff2c('0x5d')],_['omit'](_0x1333d6['body'],[_0xff2c('0x5d'),'id'])||{})[_0xff2c('0x98')](function(_0x1f3d18){for(var _0xaf95c7=0x0;_0xaf95c7<_0x1333d6[_0xff2c('0x4c')][_0xff2c('0x5d')][_0xff2c('0x49')];_0xaf95c7+=0x1){socket[_0xff2c('0x99')](_0xff2c('0x9a'),{'UserId':Number(_0x1333d6[_0xff2c('0x4c')][_0xff2c('0x5d')][_0xaf95c7]),'CmListId':Number(_0x1333d6[_0xff2c('0x47')]['id'])});}return _0x1f3d18;});}})['then'](respondWithResult(_0x198416,null))['catch'](handleError(_0x198416,null));};exports['removeAgents']=function(_0x236e6,_0xe5d717,_0x4e37d1){return db[_0xff2c('0x30')][_0xff2c('0x4a')]({'where':{'id':_0x236e6[_0xff2c('0x47')]['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0xe5d717,null))['then'](function(_0x47b7c2){if(_0x47b7c2){return _0x47b7c2[_0xff2c('0x9b')](_0x236e6[_0xff2c('0x34')][_0xff2c('0x5d')])[_0xff2c('0x29')](function(){if(_['isArray'](_0x236e6[_0xff2c('0x34')][_0xff2c('0x5d')])){for(var _0x45ef55=0x0;_0x45ef55<_0x236e6['query'][_0xff2c('0x5d')][_0xff2c('0x49')];_0x45ef55+=0x1){socket[_0xff2c('0x99')](_0xff2c('0x9c'),{'UserId':Number(_0x236e6[_0xff2c('0x34')][_0xff2c('0x5d')][_0x45ef55]),'CmListId':Number(_0x236e6[_0xff2c('0x47')]['id'])});}}else{socket[_0xff2c('0x99')](_0xff2c('0x9c'),{'UserId':Number(_0x236e6[_0xff2c('0x34')]['ids']),'CmListId':Number(_0x236e6[_0xff2c('0x47')]['id'])});}});}})[_0xff2c('0x29')](respondWithStatusCode(_0xe5d717,null))[_0xff2c('0x45')](handleError(_0xe5d717,null));};exports['getAgents']=function(_0x6a62a0,_0x38abb7,_0x3324ac){var _0x869112={};var _0x536e6c={};var _0x27aa5c;var _0x3d2794;return db[_0xff2c('0x30')]['findOne']({'where':{'id':_0x6a62a0['params']['id']}})[_0xff2c('0x29')](handleEntityNotFound(_0x38abb7,null))['then'](function(_0x2f47f){if(_0x2f47f){_0x27aa5c=_0x2f47f;_0x536e6c[_0xff2c('0x36')]=_['keys'](db[_0xff2c('0x9d')][_0xff2c('0x31')]);_0x536e6c[_0xff2c('0x34')]=_[_0xff2c('0x48')](_0x6a62a0[_0xff2c('0x34')]);_0x536e6c[_0xff2c('0x3e')]=_[_0xff2c('0x35')](_0x536e6c['model'],_0x536e6c[_0xff2c('0x34')]);_0x869112['attributes']=_[_0xff2c('0x35')](_0x536e6c[_0xff2c('0x36')],qs['fields'](_0x6a62a0[_0xff2c('0x34')]['fields']));_0x869112[_0xff2c('0x37')]=_0x869112[_0xff2c('0x37')]['length']?_0x869112[_0xff2c('0x37')]:_0x536e6c['model'];_0x869112['order']=qs[_0xff2c('0x3b')](_0x6a62a0['query']['sort']);_0x869112[_0xff2c('0x3c')]=qs['filters'](_[_0xff2c('0x3d')](_0x6a62a0['query'],_0x536e6c[_0xff2c('0x3e')]));if(_0x6a62a0[_0xff2c('0x34')][_0xff2c('0x3f')]){_0x869112[_0xff2c('0x3c')]=_[_0xff2c('0x40')](_0x869112[_0xff2c('0x3c')],{'$or':_[_0xff2c('0x2f')](_0x869112[_0xff2c('0x37')],function(_0x18d971){var _0x29cd1f={};_0x29cd1f[_0x18d971]={'$like':'%'+_0x6a62a0[_0xff2c('0x34')][_0xff2c('0x3f')]+'%'};return _0x29cd1f;})});}_0x869112=_[_0xff2c('0x40')]({},_0x869112,_0x6a62a0[_0xff2c('0x41')]);return _0x27aa5c[_0xff2c('0x9e')](_0x869112);}})['then'](function(_0x35d70e){if(_0x35d70e){_0x3d2794=_0x35d70e[_0xff2c('0x49')];if(!_0x6a62a0['query'][_0xff2c('0x39')]('nolimit')){_0x869112[_0xff2c('0x20')]=qs[_0xff2c('0x20')](_0x6a62a0[_0xff2c('0x34')][_0xff2c('0x20')]);_0x869112[_0xff2c('0x22')]=qs['offset'](_0x6a62a0[_0xff2c('0x34')][_0xff2c('0x22')]);}return _0x27aa5c[_0xff2c('0x9e')](_0x869112);}})[_0xff2c('0x29')](function(_0x2dabd1){if(_0x2dabd1){return _0x2dabd1?{'count':_0x3d2794,'rows':_0x2dabd1}:null;}})[_0xff2c('0x29')](respondWithResult(_0x38abb7,null))[_0xff2c('0x45')](handleError(_0x38abb7,null));};function handleQuery(_0x18b0f6){logger['info'](_0x18b0f6);return db[_0xff2c('0x92')]['query'](_0x18b0f6)['spread'](function(_0x44e3ea){csv_results[_0xff2c('0x62')](_0x44e3ea);})[_0xff2c('0x45')](function(_0x26cfd6){logger[_0xff2c('0x2b')](_0x26cfd6[_0xff2c('0x9f')]);});}
\ No newline at end of file
+var _0x8173=['text','switch','defaultValue','addColumn','cm_contacts','cf_%s','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','User','getAgents','info','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','defaults','redis','localhost','register','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','update','then','get','Lists','destroy','end','error','stack','name','send','map','CmList','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','role','UserProfileSection','autoAssociation','describe','addDisposition','ListId','Disposition','sort','removeDispositions','ids','CmContact','tags','isArray','join','push','each','omit','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','alias','select','from','c.ListId\x20=\x20?','distinct','field','c.cf_','item','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','description','description_additionalPhone_','toString','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv','addCustomField','findOne','sequelize','transaction','addCustomFields','Sequelize','TEXT'];(function(_0x520b7d,_0x2e8af7){var _0x126417=function(_0x5dc428){while(--_0x5dc428){_0x520b7d['push'](_0x520b7d['shift']());}};_0x126417(++_0x2e8af7);}(_0x8173,0x1db));var _0x3817=function(_0x32d3df,_0x568cbf){_0x32d3df=_0x32d3df-0x0;var _0x44df15=_0x8173[_0x32d3df];return _0x44df15;};'use strict';var emlformat=require(_0x3817('0x0'));var rimraf=require(_0x3817('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3817('0x2'));var rp=require(_0x3817('0x3'));var moment=require(_0x3817('0x4'));var BPromise=require(_0x3817('0x5'));var Mustache=require('mustache');var util=require(_0x3817('0x6'));var path=require('path');var sox=require(_0x3817('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3817('0x8'));var _=require(_0x3817('0x9'));var squel=require(_0x3817('0xa'));var crypto=require('crypto');var jsforce=require(_0x3817('0xb'));var deskjs=require(_0x3817('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3817('0xd'));var Redis=require(_0x3817('0xe'));var authService=require(_0x3817('0xf'));var qs=require(_0x3817('0x10'));var as=require(_0x3817('0x11'));var hardwareService=require(_0x3817('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x3817('0x13'));var config=require(_0x3817('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var csv_results;config['redis']=_[_0x3817('0x15')](config[_0x3817('0x16')],{'host':_0x3817('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3817('0x16')]));require('./cmList.socket')[_0x3817('0x18')](socket);function respondWithStatusCode(_0x2c92ed,_0x55f24e){_0x55f24e=_0x55f24e||0xcc;return function(_0x52715b){if(_0x52715b){return _0x2c92ed[_0x3817('0x19')](_0x55f24e);}return _0x2c92ed[_0x3817('0x1a')](_0x55f24e)['end']();};}function respondWithResult(_0x155075,_0x32b14f){_0x32b14f=_0x32b14f||0xc8;return function(_0x313caf){if(_0x313caf){return _0x155075[_0x3817('0x1a')](_0x32b14f)[_0x3817('0x1b')](_0x313caf);}};}function respondWithFilteredResult(_0x347771,_0x5dbdc8){return function(_0x215d15){if(_0x215d15){var _0x5da442=typeof _0x5dbdc8['offset']===_0x3817('0x1c')&&typeof _0x5dbdc8[_0x3817('0x1d')]===_0x3817('0x1c');var _0x5bcb09=_0x215d15['count'];var _0x3534dc=_0x5da442?0x0:_0x5dbdc8[_0x3817('0x1e')];var _0x5999d9=_0x5da442?_0x215d15[_0x3817('0x1f')]:_0x5dbdc8[_0x3817('0x1e')]+_0x5dbdc8[_0x3817('0x1d')];var _0x33b216;if(_0x5999d9>=_0x5bcb09){_0x5999d9=_0x5bcb09;_0x33b216=0xc8;}else{_0x33b216=0xce;}_0x347771[_0x3817('0x1a')](_0x33b216);return _0x347771[_0x3817('0x20')](_0x3817('0x21'),_0x3534dc+'-'+_0x5999d9+'/'+_0x5bcb09)[_0x3817('0x1b')](_0x215d15);}return null;};}function patchUpdates(_0x21fa53){return function(_0x210767){try{jsonpatch[_0x3817('0x22')](_0x210767,_0x21fa53,!![]);}catch(_0x259b36){return BPromise['reject'](_0x259b36);}return _0x210767['save']();};}function saveUpdates(_0x43716d,_0x6b573f){return function(_0x1a6e1f){if(_0x1a6e1f){return _0x1a6e1f[_0x3817('0x23')](_0x43716d)[_0x3817('0x24')](function(_0x251cd7){return _0x251cd7;});}return null;};}function removeEntity(_0x39218b,_0x3cc099){return function(_0x1a40b5){if(_0x1a40b5){return _0x1a40b5['destroy']()[_0x3817('0x24')](function(){var _0x477d1c=_0x1a40b5[_0x3817('0x25')]({'plain':!![]});var _0x30bc7d=_0x3817('0x26');return db['UserProfileResource'][_0x3817('0x27')]({'where':{'type':_0x30bc7d,'resourceId':_0x477d1c['id']}})['then'](function(){return _0x1a40b5;});})[_0x3817('0x24')](function(){_0x39218b[_0x3817('0x1a')](0xcc)[_0x3817('0x28')]();});}};}function handleEntityNotFound(_0x1ea007,_0x4eab1b){return function(_0x5352eb){if(!_0x5352eb){_0x1ea007[_0x3817('0x19')](0x194);}return _0x5352eb;};}function handleError(_0x51157d,_0x449c05){_0x449c05=_0x449c05||0x1f4;return function(_0x237220){logger[_0x3817('0x29')](_0x237220[_0x3817('0x2a')]);if(_0x237220[_0x3817('0x2b')]){delete _0x237220[_0x3817('0x2b')];}_0x51157d[_0x3817('0x1a')](_0x449c05)[_0x3817('0x2c')](_0x237220);};}exports['index']=function(_0xad678c,_0x4ee0d1){var _0x142408={},_0x40f859={},_0x1a64f9={'count':0x0,'rows':[]};var _0x5d9a32=_[_0x3817('0x2d')](db[_0x3817('0x2e')][_0x3817('0x2f')],function(_0x25f6c3){return{'name':_0x25f6c3[_0x3817('0x30')],'type':_0x25f6c3['type']['key']};});_0x40f859[_0x3817('0x31')]=_[_0x3817('0x2d')](_0x5d9a32,_0x3817('0x2b'));_0x40f859[_0x3817('0x32')]=_[_0x3817('0x33')](_0xad678c['query']);_0x40f859[_0x3817('0x34')]=_[_0x3817('0x35')](_0x40f859[_0x3817('0x31')],_0x40f859['query']);_0x142408[_0x3817('0x36')]=_[_0x3817('0x35')](_0x40f859[_0x3817('0x31')],qs[_0x3817('0x37')](_0xad678c['query'][_0x3817('0x37')]));_0x142408[_0x3817('0x36')]=_0x142408[_0x3817('0x36')][_0x3817('0x38')]?_0x142408[_0x3817('0x36')]:_0x40f859[_0x3817('0x31')];if(!_0xad678c[_0x3817('0x32')][_0x3817('0x39')](_0x3817('0x3a'))){_0x142408[_0x3817('0x1d')]=qs[_0x3817('0x1d')](_0xad678c[_0x3817('0x32')][_0x3817('0x1d')]);_0x142408[_0x3817('0x1e')]=qs[_0x3817('0x1e')](_0xad678c[_0x3817('0x32')][_0x3817('0x1e')]);}_0x142408[_0x3817('0x3b')]=qs['sort'](_0xad678c[_0x3817('0x32')]['sort']);_0x142408[_0x3817('0x3c')]=qs[_0x3817('0x34')](_[_0x3817('0x3d')](_0xad678c['query'],_0x40f859[_0x3817('0x34')]),_0x5d9a32);if(_0xad678c['query'][_0x3817('0x3e')]){_0x142408[_0x3817('0x3c')]=_[_0x3817('0x3f')](_0x142408[_0x3817('0x3c')],{'$or':_[_0x3817('0x2d')](_0x5d9a32,function(_0xb4b578){if(_0xb4b578[_0x3817('0x40')]!==_0x3817('0x41')){var _0x1fc8fe={};_0x1fc8fe[_0xb4b578[_0x3817('0x2b')]]={'$like':'%'+_0xad678c['query'][_0x3817('0x3e')]+'%'};return _0x1fc8fe;}})});}_0x142408=_[_0x3817('0x3f')]({},_0x142408,_0xad678c[_0x3817('0x42')]);var _0xd4bbe3={'where':_0x142408['where']};return db[_0x3817('0x2e')][_0x3817('0x1f')](_0xd4bbe3)[_0x3817('0x24')](function(_0x1a4580){_0x1a64f9[_0x3817('0x1f')]=_0x1a4580;if(_0xad678c[_0x3817('0x32')][_0x3817('0x43')]){_0x142408[_0x3817('0x44')]=[{'all':!![]}];}return db[_0x3817('0x2e')][_0x3817('0x45')](_0x142408);})[_0x3817('0x24')](function(_0x5b9e73){_0x1a64f9[_0x3817('0x46')]=_0x5b9e73;return _0x1a64f9;})[_0x3817('0x24')](respondWithFilteredResult(_0x4ee0d1,_0x142408))['catch'](handleError(_0x4ee0d1,null));};exports[_0x3817('0x47')]=function(_0xb8e576,_0xa54361){var _0x532882={'raw':![],'where':{'id':_0xb8e576[_0x3817('0x48')]['id']}},_0x5eb9cc={};_0x5eb9cc[_0x3817('0x31')]=_[_0x3817('0x33')](db[_0x3817('0x2e')]['rawAttributes']);_0x5eb9cc['query']=_[_0x3817('0x33')](_0xb8e576[_0x3817('0x32')]);_0x5eb9cc['filters']=_[_0x3817('0x35')](_0x5eb9cc[_0x3817('0x31')],_0x5eb9cc['query']);_0x532882[_0x3817('0x36')]=_[_0x3817('0x35')](_0x5eb9cc[_0x3817('0x31')],qs[_0x3817('0x37')](_0xb8e576['query']['fields']));_0x532882[_0x3817('0x36')]=_0x532882['attributes'][_0x3817('0x38')]?_0x532882[_0x3817('0x36')]:_0x5eb9cc[_0x3817('0x31')];if(_0xb8e576[_0x3817('0x32')][_0x3817('0x43')]){_0x532882[_0x3817('0x44')]=[{'all':!![]}];}_0x532882=_[_0x3817('0x3f')]({},_0x532882,_0xb8e576[_0x3817('0x42')]);return db[_0x3817('0x2e')][_0x3817('0x49')](_0x532882)[_0x3817('0x24')](handleEntityNotFound(_0xa54361,null))[_0x3817('0x24')](respondWithResult(_0xa54361,null))[_0x3817('0x4a')](handleError(_0xa54361,null));};exports['create']=function(_0x10d6cd,_0x496c28){return db[_0x3817('0x2e')][_0x3817('0x4b')](_0x10d6cd[_0x3817('0x4c')],{})[_0x3817('0x24')](function(_0x2ca7b3){var _0x3ef384=_0x10d6cd[_0x3817('0x4d')]['get']({'plain':!![]});if(!_0x3ef384)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ef384[_0x3817('0x4e')]===_0x3817('0x4d')){var _0x426482=_0x2ca7b3['get']({'plain':!![]});var _0x9b64d6=_0x3817('0x26');return db[_0x3817('0x4f')][_0x3817('0x49')]({'where':{'name':_0x9b64d6,'userProfileId':_0x3ef384['userProfileId']},'raw':!![]})['then'](function(_0x22f651){if(_0x22f651&&_0x22f651[_0x3817('0x50')]===0x0){return db['UserProfileResource'][_0x3817('0x4b')]({'name':_0x426482['name'],'resourceId':_0x426482['id'],'type':_0x22f651[_0x3817('0x2b')],'sectionId':_0x22f651['id']},{})[_0x3817('0x24')](function(){return _0x2ca7b3;});}else{return _0x2ca7b3;}})['catch'](function(_0x2bdc7d){logger[_0x3817('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2bdc7d);throw _0x2bdc7d;});}return _0x2ca7b3;})[_0x3817('0x24')](respondWithResult(_0x496c28,0xc9))['catch'](handleError(_0x496c28,null));};exports[_0x3817('0x23')]=function(_0x9bec4e,_0x56f767){if(_0x9bec4e[_0x3817('0x4c')]['id']){delete _0x9bec4e[_0x3817('0x4c')]['id'];}return db[_0x3817('0x2e')][_0x3817('0x49')]({'where':{'id':_0x9bec4e[_0x3817('0x48')]['id']}})['then'](handleEntityNotFound(_0x56f767,null))[_0x3817('0x24')](saveUpdates(_0x9bec4e[_0x3817('0x4c')],null))[_0x3817('0x24')](respondWithResult(_0x56f767,null))[_0x3817('0x4a')](handleError(_0x56f767,null));};exports[_0x3817('0x27')]=function(_0x5c2104,_0x4157b0){return db[_0x3817('0x2e')][_0x3817('0x49')]({'where':{'id':_0x5c2104[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x4157b0,null))[_0x3817('0x24')](removeEntity(_0x4157b0,null))[_0x3817('0x4a')](handleError(_0x4157b0,null));};exports[_0x3817('0x51')]=function(_0xbadc28,_0x10f8e9){return db['CmList'][_0x3817('0x51')]()[_0x3817('0x24')](respondWithResult(_0x10f8e9,null))[_0x3817('0x4a')](handleError(_0x10f8e9,null));};exports[_0x3817('0x52')]=function(_0x3f4251,_0x180d23,_0xad37fd){if(_0x3f4251[_0x3817('0x4c')]['id']){delete _0x3f4251[_0x3817('0x4c')]['id'];}return db[_0x3817('0x2e')]['find']({'where':{'id':_0x3f4251[_0x3817('0x48')]['id']}})['then'](handleEntityNotFound(_0x180d23,null))['then'](function(_0x4055d0){if(_0x4055d0){_0x3f4251['body'][_0x3817('0x53')]=_0x4055d0['id'];return db['Disposition'][_0x3817('0x4b')](_0x3f4251[_0x3817('0x4c')]);}})[_0x3817('0x24')](respondWithResult(_0x180d23,null))[_0x3817('0x4a')](handleError(_0x180d23,null));};exports['getDispositions']=function(_0x106185,_0x5175eb,_0x3f100f){var _0x5216f8={'raw':![],'where':{}};var _0x4137a0={};var _0x156984={'count':0x0,'rows':[]};return db[_0x3817('0x2e')]['findOne']({'where':{'id':_0x106185[_0x3817('0x48')]['id']}})['then'](handleEntityNotFound(_0x5175eb,null))[_0x3817('0x24')](function(_0x3fefc7){if(_0x3fefc7){_0x4137a0[_0x3817('0x31')]=_['keys'](db[_0x3817('0x54')][_0x3817('0x2f')]);_0x4137a0[_0x3817('0x32')]=_['keys'](_0x106185['query']);_0x4137a0[_0x3817('0x34')]=_[_0x3817('0x35')](_0x4137a0[_0x3817('0x31')],_0x4137a0['query']);_0x5216f8['attributes']=_['intersection'](_0x4137a0[_0x3817('0x31')],qs[_0x3817('0x37')](_0x106185['query'][_0x3817('0x37')]));_0x5216f8['attributes']=_0x5216f8['attributes'][_0x3817('0x38')]?_0x5216f8[_0x3817('0x36')]:_0x4137a0[_0x3817('0x31')];if(!_0x106185[_0x3817('0x32')]['hasOwnProperty']('nolimit')){_0x5216f8[_0x3817('0x1d')]=qs[_0x3817('0x1d')](_0x106185['query'][_0x3817('0x1d')]);_0x5216f8[_0x3817('0x1e')]=qs[_0x3817('0x1e')](_0x106185[_0x3817('0x32')][_0x3817('0x1e')]);}_0x5216f8[_0x3817('0x3b')]=qs['sort'](_0x106185[_0x3817('0x32')][_0x3817('0x55')]);_0x5216f8[_0x3817('0x3c')]=qs[_0x3817('0x34')](_[_0x3817('0x3d')](_0x106185['query'],_0x4137a0['filters']));_0x5216f8['where'][_0x3817('0x53')]=_0x3fefc7['id'];if(_0x106185[_0x3817('0x32')][_0x3817('0x3e')]){_0x5216f8['where']=_['merge'](_0x5216f8[_0x3817('0x3c')],{'$or':_[_0x3817('0x2d')](_0x5216f8[_0x3817('0x36')],function(_0x2cbe24){var _0x37c9de={};_0x37c9de[_0x2cbe24]={'$like':'%'+_0x106185[_0x3817('0x32')][_0x3817('0x3e')]+'%'};return _0x37c9de;})});}_0x5216f8=_[_0x3817('0x3f')]({},_0x5216f8,_0x106185[_0x3817('0x42')]);return db[_0x3817('0x54')][_0x3817('0x1f')]({'where':_0x5216f8[_0x3817('0x3c')]})[_0x3817('0x24')](function(_0x241b6a){_0x156984[_0x3817('0x1f')]=_0x241b6a;if(_0x106185[_0x3817('0x32')]['includeAll']){_0x5216f8[_0x3817('0x44')]=[{'all':!![]}];}return db[_0x3817('0x54')][_0x3817('0x45')](_0x5216f8);})[_0x3817('0x24')](function(_0x331ea7){_0x156984[_0x3817('0x46')]=_0x331ea7;return _0x156984;});}})[_0x3817('0x24')](respondWithFilteredResult(_0x5175eb,_0x5216f8))[_0x3817('0x4a')](handleError(_0x5175eb,null));};exports[_0x3817('0x56')]=function(_0x36c671,_0x2b72b9,_0x97bfb){return db[_0x3817('0x2e')]['find']({'where':{'id':_0x36c671[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x2b72b9,null))['then'](function(_0x556098){if(_0x556098){return _0x556098[_0x3817('0x56')](_0x36c671['query'][_0x3817('0x57')]);}})[_0x3817('0x24')](respondWithStatusCode(_0x2b72b9,null))['catch'](handleError(_0x2b72b9,null));};exports['addContacts']=function(_0x471364,_0x32ec41,_0x26f9bc){return db[_0x3817('0x2e')][_0x3817('0x49')]({'where':{'id':_0x471364[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x32ec41,null))[_0x3817('0x24')](function(_0x2e40e8){if(_0x2e40e8){var _0x96851b=[];var _0x5a47da={'success':[],'errors':[]};return db[_0x3817('0x58')][_0x3817('0x51')]()[_0x3817('0x24')](function(_0x1e97d5){if(_0x471364[_0x3817('0x4c')][_0x3817('0x59')]&&_[_0x3817('0x5a')](_0x471364[_0x3817('0x4c')][_0x3817('0x59')])){if(_0x471364[_0x3817('0x4c')][_0x3817('0x59')][_0x3817('0x38')]){_0x471364['body']['tags']=_0x471364[_0x3817('0x4c')]['tags'][_0x3817('0x5b')](';')+';';}else{_0x471364[_0x3817('0x4c')][_0x3817('0x59')]=null;}}else{_0x471364['body'][_0x3817('0x59')]=null;}if(_0x471364['body']&&_['isArray'](_0x471364[_0x3817('0x4c')])){for(var _0x35b885=0x0;_0x35b885<_0x471364['body'][_0x3817('0x38')];_0x35b885+=0x1){_0x471364[_0x3817('0x4c')][_0x35b885]['ListId']=_0x471364[_0x3817('0x48')]['id'];_0x96851b[_0x3817('0x5c')](_0x471364[_0x3817('0x4c')][_0x35b885]);}return BPromise[_0x3817('0x5d')](_0x96851b,function(_0x332134){return db[_0x3817('0x58')][_0x3817('0x4b')](_[_0x3817('0x5e')](_0x332134,['ids','id'])||{},{'fields':_[_0x3817('0x33')](_0x1e97d5),'raw':!![]})[_0x3817('0x24')](function(_0x5f56dd){_0x5a47da['success'][_0x3817('0x5c')](_0x5f56dd[_0x3817('0x5f')]);})['catch'](function(_0x4c9b0e){_0x5a47da[_0x3817('0x60')][_0x3817('0x5c')]({'data':_0x332134,'error':_0x4c9b0e[_0x3817('0x61')]});});})['then'](function(_0x42c98b){return _0x5a47da;})[_0x3817('0x4a')](function(_0x59407a){return _0x59407a;});}else{_0x32ec41[_0x3817('0x1a')](0x190)[_0x3817('0x1b')]({'message':_0x3817('0x62')});}});}})['then'](respondWithResult(_0x32ec41,null))[_0x3817('0x4a')](handleError(_0x32ec41,null));};exports[_0x3817('0x63')]=function(_0x2a04c0,_0x21c92c,_0x5ee543){var _0x5a6adb;return db['CmList'][_0x3817('0x49')]({'where':{'id':_0x2a04c0['params']['id']},'include':[{'model':db[_0x3817('0x64')],'as':_0x3817('0x65')}]})[_0x3817('0x24')](handleEntityNotFound(_0x21c92c,null))[_0x3817('0x24')](function(_0x584471){if(_0x584471){_0x5a6adb=_0x584471;return db[_0x3817('0x58')][_0x3817('0x2f')];}})[_0x3817('0x24')](function(_0x47964d){if(_0x47964d){var _0x141752={};var _0x22e086={};_0x22e086[_0x3817('0x31')]=_[_0x3817('0x66')](_[_0x3817('0x33')](_0x47964d),_[_0x3817('0x2d')](_0x5a6adb[_0x3817('0x65')],function(_0x34c0d1){return util[_0x3817('0x67')](_0x3817('0x68'),_0x34c0d1['id']);}));_0x22e086[_0x3817('0x32')]=_['keys'](_0x2a04c0['query']);_0x22e086[_0x3817('0x34')]=_[_0x3817('0x35')](_0x22e086[_0x3817('0x31')],_0x22e086[_0x3817('0x32')]);_0x141752['attributes']=_[_0x3817('0x35')](_0x22e086[_0x3817('0x31')],qs[_0x3817('0x37')](_0x2a04c0['query']['fields']));_0x141752[_0x3817('0x36')]=_0x141752[_0x3817('0x36')][_0x3817('0x38')]?_0x141752[_0x3817('0x36')]:_0x22e086['model'];if(!_0x2a04c0[_0x3817('0x32')][_0x3817('0x39')]('nolimit')){_0x141752[_0x3817('0x1d')]=qs['limit'](_0x2a04c0[_0x3817('0x32')][_0x3817('0x1d')]);_0x141752[_0x3817('0x1e')]=qs['offset'](_0x2a04c0[_0x3817('0x32')][_0x3817('0x1e')]);}_0x141752[_0x3817('0x3b')]=qs[_0x3817('0x55')](_0x2a04c0[_0x3817('0x32')][_0x3817('0x55')]);_0x141752[_0x3817('0x3c')]=qs[_0x3817('0x34')](_[_0x3817('0x3d')](_0x2a04c0[_0x3817('0x32')],_0x22e086[_0x3817('0x34')]));_0x141752[_0x3817('0x69')]=!![];if(_0x2a04c0[_0x3817('0x32')][_0x3817('0x3e')]){_0x141752['where']=_[_0x3817('0x3f')](_0x141752[_0x3817('0x3c')],{'$or':_[_0x3817('0x2d')](_0x141752[_0x3817('0x36')],function(_0x2b0324){var _0x329f25={};_0x329f25[_0x2b0324]={'$like':'%'+_0x2a04c0[_0x3817('0x32')][_0x3817('0x3e')]+'%'};return _0x329f25;})});}_0x141752=_['merge']({},_0x141752,_0x2a04c0[_0x3817('0x42')]);return _0x5a6adb[_0x3817('0x63')](_0x141752);}})[_0x3817('0x24')](respondWithResult(_0x21c92c,null))['catch'](handleError(_0x21c92c,null));};exports[_0x3817('0x6a')]=function(_0x52ec7d,_0x1978bc,_0x344db9){var _0xbb64dd;var _0x64db3e;var _0x2b6ada;var _0x481746=_0x52ec7d[_0x3817('0x48')]['id'];csv_results=[];return db['ContactItemType'][_0x3817('0x45')]({'attributes':['id',_0x3817('0x2b')],'raw':!![],'order':['OrderBy']})['then'](function(_0x5e4be0){_0xbb64dd=_0x5e4be0;var _0x5c8f09=_[_0x3817('0x33')](db[_0x3817('0x58')]['rawAttributes']);return db[_0x3817('0x64')]['findAll']({'raw':!![],'attributes':['id',_0x3817('0x6b')]})[_0x3817('0x24')](function(_0x362f7a){_0x64db3e=_0x362f7a;var _0x221c5a=squel[_0x3817('0x6c')]()[_0x3817('0x37')](_0x5c8f09)[_0x3817('0x6d')]('cm_contacts','c')[_0x3817('0x3c')](_0x3817('0x6e'),_0x481746)['where']('c.deletedAt\x20is\x20null')[_0x3817('0x6f')]();for(var _0x21f274=0x0;_0x21f274<_0x64db3e[_0x3817('0x38')];_0x21f274++){_0x221c5a[_0x3817('0x70')](_0x3817('0x71')+_0x64db3e[_0x21f274]['id'],'customField_'+_0x64db3e[_0x21f274]['alias']);}for(var _0x21f274=0x0;_0x21f274<_0xbb64dd[_0x3817('0x38')];_0x21f274++){_0x221c5a['field'](squel[_0x3817('0x6c')]()[_0x3817('0x70')](_0x3817('0x72'))[_0x3817('0x6d')](_0x3817('0x73'))[_0x3817('0x3c')](_0x3817('0x74'),_0xbb64dd[_0x21f274]['id'])[_0x3817('0x3c')](_0x3817('0x75')),_0x3817('0x76')+_0xbb64dd[_0x21f274][_0x3817('0x2b')]);_0x221c5a[_0x3817('0x70')](squel['select']()['field'](_0x3817('0x77'))[_0x3817('0x6d')](_0x3817('0x73'))[_0x3817('0x3c')]('ItemTypeId\x20=\x20?',_0xbb64dd[_0x21f274]['id'])[_0x3817('0x3c')](_0x3817('0x75')),_0x3817('0x78')+_0xbb64dd[_0x21f274][_0x3817('0x2b')]);}var _0x317253=[];_0x317253[_0x3817('0x5c')](_0x221c5a[_0x3817('0x79')]());BPromise[_0x3817('0x5d')](_0x317253,handleQuery)[_0x3817('0x24')](function(_0x18bee6){handleQuery(_0x221c5a['toString']());var _0x4509df=csv_results[0x0];if(!_[_0x3817('0x7a')](_0x4509df)){var _0x5c39d3=toCsv(_0x4509df);var _0x45d604=Date['now']();fs[_0x3817('0x7b')](util['format'](_0x3817('0x7c'),_0x481746,_0x45d604),_0x5c39d3);_0x1978bc[_0x3817('0x7d')](_0x3817('0x7e'),_0x3817('0x7f')+util[_0x3817('0x67')]('list_%d_%s.csv',_0x481746,_0x45d604));_0x1978bc['setHeader'](_0x3817('0x80'),_0x3817('0x81'));return _0x1978bc['download'](util[_0x3817('0x67')](_0x3817('0x7c'),_0x481746,_0x45d604));}else{return _0x1978bc[_0x3817('0x19')](0xcc);}});});});};exports[_0x3817('0x82')]=function(_0x2aa983,_0x4c745c,_0x4cf30b){var _0x14682b;delete _0x2aa983[_0x3817('0x4c')]['id'];return db['CmList'][_0x3817('0x83')]({'where':{'id':_0x2aa983[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x4c745c,null))['then'](function(_0x516545){if(_0x516545){return db[_0x3817('0x84')][_0x3817('0x85')](function(_0x35fc57){return db[_0x3817('0x64')]['create'](_0x2aa983[_0x3817('0x4c')],{'transaction':_0x35fc57})[_0x3817('0x24')](function(_0x28b7aa){_0x14682b=_0x28b7aa;return _0x516545[_0x3817('0x86')](_0x28b7aa,{'transaction':_0x35fc57});})['then'](function(){var _0xee5608={'type':db[_0x3817('0x87')][_0x3817('0x88')],'transaction':_0x35fc57};switch(_0x2aa983[_0x3817('0x4c')][_0x3817('0x40')]){case _0x3817('0x89'):_0xee5608[_0x3817('0x40')]=db[_0x3817('0x87')]['TEXT'];break;case'number':_0xee5608[_0x3817('0x40')]=db[_0x3817('0x87')]['INTEGER'];break;case _0x3817('0x8a'):_0xee5608[_0x3817('0x40')]=db['Sequelize']['BOOLEAN'];_0xee5608[_0x3817('0x8b')]=![];break;default:}return db[_0x3817('0x84')]['queryInterface'][_0x3817('0x8c')](_0x3817('0x8d'),util['format'](_0x3817('0x8e'),_0x14682b['id']),_0xee5608);})[_0x3817('0x24')](function(){return _0x14682b;});});}})[_0x3817('0x24')](respondWithResult(_0x4c745c,null))[_0x3817('0x4a')](handleError(_0x4c745c,null));};exports[_0x3817('0x8f')]=function(_0x1ef8f9,_0x4510fc,_0x1f40f3){var _0x416a25={};var _0x263d56={};var _0x3e8489;var _0x3f5424;return db['CmList'][_0x3817('0x83')]({'where':{'id':_0x1ef8f9[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x4510fc,null))[_0x3817('0x24')](function(_0xe321e4){if(_0xe321e4){_0x3e8489=_0xe321e4;_0x263d56[_0x3817('0x31')]=_['keys'](db[_0x3817('0x64')][_0x3817('0x2f')]);_0x263d56['query']=_[_0x3817('0x33')](_0x1ef8f9[_0x3817('0x32')]);_0x263d56[_0x3817('0x34')]=_['intersection'](_0x263d56[_0x3817('0x31')],_0x263d56[_0x3817('0x32')]);_0x416a25[_0x3817('0x36')]=_[_0x3817('0x35')](_0x263d56[_0x3817('0x31')],qs[_0x3817('0x37')](_0x1ef8f9[_0x3817('0x32')][_0x3817('0x37')]));_0x416a25[_0x3817('0x36')]=_0x416a25[_0x3817('0x36')][_0x3817('0x38')]?_0x416a25[_0x3817('0x36')]:_0x263d56[_0x3817('0x31')];_0x416a25['order']=qs['sort'](_0x1ef8f9[_0x3817('0x32')][_0x3817('0x55')]);_0x416a25[_0x3817('0x3c')]=qs[_0x3817('0x34')](_[_0x3817('0x3d')](_0x1ef8f9[_0x3817('0x32')],_0x263d56[_0x3817('0x34')]));_0x416a25[_0x3817('0x3c')]=_['merge'](_0x416a25['where'],{'$or':[{'ListId':_0xe321e4['id']},{'ListId':null}]});if(_0x1ef8f9[_0x3817('0x32')][_0x3817('0x3e')]){_0x416a25['where']=_['merge'](_0x416a25[_0x3817('0x3c')],{'$or':_[_0x3817('0x2d')](_0x416a25[_0x3817('0x36')],function(_0x14f4a4){var _0x104952={};_0x104952[_0x14f4a4]={'$like':'%'+_0x1ef8f9[_0x3817('0x32')][_0x3817('0x3e')]+'%'};return _0x104952;})});}_0x416a25=_[_0x3817('0x3f')]({},_0x416a25,_0x1ef8f9[_0x3817('0x42')]);return db[_0x3817('0x64')]['findAndCountAll'](_0x416a25);}})[_0x3817('0x24')](respondWithResult(_0x4510fc,null))[_0x3817('0x4a')](handleError(_0x4510fc,null));};exports['getGlobalCustomFields']=function(_0x2e30e8,_0x418945){return db[_0x3817('0x64')]['findAndCountAll']({'where':{'ListId':null}})[_0x3817('0x24')](handleEntityNotFound(_0x418945,null))[_0x3817('0x24')](function(_0x3f2f5b){return _0x3f2f5b;})[_0x3817('0x24')](respondWithResult(_0x418945,null))[_0x3817('0x4a')](handleError(_0x418945,null));};exports[_0x3817('0x90')]=function(_0x5e126b,_0x4f6cbc,_0x1ecbb3){return db[_0x3817('0x2e')][_0x3817('0x49')]({'where':{'id':_0x5e126b[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x4f6cbc,null))[_0x3817('0x24')](function(_0x4515be){if(_0x4515be){return _0x4515be['addAgents'](_0x5e126b[_0x3817('0x4c')]['ids'],_[_0x3817('0x5e')](_0x5e126b[_0x3817('0x4c')],[_0x3817('0x57'),'id'])||{})[_0x3817('0x91')](function(_0x4960e3){for(var _0x32fc22=0x0;_0x32fc22<_0x5e126b[_0x3817('0x4c')][_0x3817('0x57')][_0x3817('0x38')];_0x32fc22+=0x1){socket[_0x3817('0x92')](_0x3817('0x93'),{'UserId':Number(_0x5e126b['body'][_0x3817('0x57')][_0x32fc22]),'CmListId':Number(_0x5e126b[_0x3817('0x48')]['id'])});}return _0x4960e3;});}})['then'](respondWithResult(_0x4f6cbc,null))[_0x3817('0x4a')](handleError(_0x4f6cbc,null));};exports[_0x3817('0x94')]=function(_0x2ba99f,_0x480d9d,_0x52f980){return db[_0x3817('0x2e')][_0x3817('0x49')]({'where':{'id':_0x2ba99f[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x480d9d,null))[_0x3817('0x24')](function(_0x231e7e){if(_0x231e7e){return _0x231e7e['removeAgents'](_0x2ba99f['query']['ids'])[_0x3817('0x24')](function(){if(_['isArray'](_0x2ba99f[_0x3817('0x32')]['ids'])){for(var _0x4e07a0=0x0;_0x4e07a0<_0x2ba99f[_0x3817('0x32')]['ids'][_0x3817('0x38')];_0x4e07a0+=0x1){socket[_0x3817('0x92')](_0x3817('0x95'),{'UserId':Number(_0x2ba99f[_0x3817('0x32')][_0x3817('0x57')][_0x4e07a0]),'CmListId':Number(_0x2ba99f[_0x3817('0x48')]['id'])});}}else{socket[_0x3817('0x92')]('userCmList:remove',{'UserId':Number(_0x2ba99f['query'][_0x3817('0x57')]),'CmListId':Number(_0x2ba99f[_0x3817('0x48')]['id'])});}});}})[_0x3817('0x24')](respondWithStatusCode(_0x480d9d,null))[_0x3817('0x4a')](handleError(_0x480d9d,null));};exports['getAgents']=function(_0x149c20,_0x2924ab,_0x290d82){var _0x92e8ed={};var _0x51d86e={};var _0x356ce1;var _0x2db158;return db[_0x3817('0x2e')][_0x3817('0x83')]({'where':{'id':_0x149c20[_0x3817('0x48')]['id']}})[_0x3817('0x24')](handleEntityNotFound(_0x2924ab,null))[_0x3817('0x24')](function(_0x48b236){if(_0x48b236){_0x356ce1=_0x48b236;_0x51d86e['model']=_['keys'](db[_0x3817('0x96')][_0x3817('0x2f')]);_0x51d86e['query']=_[_0x3817('0x33')](_0x149c20['query']);_0x51d86e[_0x3817('0x34')]=_['intersection'](_0x51d86e[_0x3817('0x31')],_0x51d86e[_0x3817('0x32')]);_0x92e8ed['attributes']=_[_0x3817('0x35')](_0x51d86e[_0x3817('0x31')],qs[_0x3817('0x37')](_0x149c20[_0x3817('0x32')]['fields']));_0x92e8ed['attributes']=_0x92e8ed[_0x3817('0x36')][_0x3817('0x38')]?_0x92e8ed[_0x3817('0x36')]:_0x51d86e['model'];_0x92e8ed['order']=qs[_0x3817('0x55')](_0x149c20[_0x3817('0x32')][_0x3817('0x55')]);_0x92e8ed['where']=qs['filters'](_[_0x3817('0x3d')](_0x149c20['query'],_0x51d86e[_0x3817('0x34')]));if(_0x149c20[_0x3817('0x32')][_0x3817('0x3e')]){_0x92e8ed[_0x3817('0x3c')]=_['merge'](_0x92e8ed[_0x3817('0x3c')],{'$or':_[_0x3817('0x2d')](_0x92e8ed[_0x3817('0x36')],function(_0x4bf4db){var _0x56f409={};_0x56f409[_0x4bf4db]={'$like':'%'+_0x149c20[_0x3817('0x32')][_0x3817('0x3e')]+'%'};return _0x56f409;})});}_0x92e8ed=_[_0x3817('0x3f')]({},_0x92e8ed,_0x149c20[_0x3817('0x42')]);return _0x356ce1[_0x3817('0x97')](_0x92e8ed);}})[_0x3817('0x24')](function(_0x540a5a){if(_0x540a5a){_0x2db158=_0x540a5a[_0x3817('0x38')];if(!_0x149c20[_0x3817('0x32')][_0x3817('0x39')](_0x3817('0x3a'))){_0x92e8ed[_0x3817('0x1d')]=qs['limit'](_0x149c20[_0x3817('0x32')]['limit']);_0x92e8ed['offset']=qs[_0x3817('0x1e')](_0x149c20[_0x3817('0x32')][_0x3817('0x1e')]);}return _0x356ce1['getAgents'](_0x92e8ed);}})['then'](function(_0x510622){if(_0x510622){return _0x510622?{'count':_0x2db158,'rows':_0x510622}:null;}})['then'](respondWithResult(_0x2924ab,null))[_0x3817('0x4a')](handleError(_0x2924ab,null));};function handleQuery(_0x36477a){logger[_0x3817('0x98')](_0x36477a);return db['sequelize'][_0x3817('0x32')](_0x36477a)[_0x3817('0x91')](function(_0x233e2c){csv_results[_0x3817('0x5c')](_0x233e2c);})[_0x3817('0x4a')](function(_0x20e570){logger[_0x3817('0x29')](_0x20e570['message']);});}
\ No newline at end of file
index cb50086..479fa92 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(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x5fc3,0xa8));var _0x35fc=function(_0x289891,_0x49a0fa){_0x289891=_0x289891-0x0;var _0x31cf2e=_0x5fc3[_0x289891];return _0x31cf2e;};'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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e74,0x175));var _0x43e7=function(_0x3c32d7,_0x1d6641){_0x3c32d7=_0x3c32d7-0x0;var _0x21ae5b=_0x3e74[_0x3c32d7];return _0x21ae5b;};'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 546d04f..b011f88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['define','cm_lists','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','exports'];(function(_0x25166d,_0x173fb7){var _0x41b73c=function(_0x23f00c){while(--_0x23f00c){_0x25166d['push'](_0x25166d['shift']());}};_0x41b73c(++_0x173fb7);}(_0x6324,0x142));var _0x4632=function(_0x13eec2,_0xe78b42){_0x13eec2=_0x13eec2-0x0;var _0x46c367=_0x6324[_0x13eec2];return _0x46c367;};'use strict';var _=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var logger=require(_0x4632('0x2'))(_0x4632('0x3'));var moment=require('moment');var BPromise=require(_0x4632('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4632('0x5'));var rimraf=require('rimraf');var config=require(_0x4632('0x6'));var attributes=require('./cmList.attributes');module[_0x4632('0x7')]=function(_0x24aba6,_0x1f3077){return _0x24aba6[_0x4632('0x8')]('CmList',attributes,{'tableName':_0x4632('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2dae=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists'];(function(_0x2df055,_0x5ac00f){var _0x1f8e5a=function(_0x4d5352){while(--_0x4d5352){_0x2df055['push'](_0x2df055['shift']());}};_0x1f8e5a(++_0x5ac00f);}(_0x2dae,0xc3));var _0xe2da=function(_0x1655bb,_0x5a82ae){_0x1655bb=_0x1655bb-0x0;var _0x5e2020=_0x2dae[_0x1655bb];return _0x5e2020;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var logger=require(_0xe2da('0x1'))(_0xe2da('0x2'));var moment=require(_0xe2da('0x3'));var BPromise=require(_0xe2da('0x4'));var rp=require(_0xe2da('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var attributes=require(_0xe2da('0x8'));module[_0xe2da('0x9')]=function(_0x523c60,_0x3e3e25){return _0x523c60[_0xe2da('0xa')](_0xe2da('0xb'),attributes,{'tableName':_0xe2da('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4141c9a..11250af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d43=['CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmList,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','info','request\x20sent','debug'];(function(_0xb28717,_0x570016){var _0x1de011=function(_0x25727d){while(--_0x25727d){_0xb28717['push'](_0xb28717['shift']());}};_0x1de011(++_0x570016);}(_0x8d43,0x7c));var _0x38d4=function(_0x494d4b,_0xb07fb2){_0x494d4b=_0x494d4b-0x0;var _0xc6e6e8=_0x8d43[_0x494d4b];return _0xc6e6e8;};'use strict';var _=require(_0x38d4('0x0'));var util=require(_0x38d4('0x1'));var moment=require(_0x38d4('0x2'));var BPromise=require(_0x38d4('0x3'));var rs=require(_0x38d4('0x4'));var fs=require('fs');var Redis=require(_0x38d4('0x5'));var db=require(_0x38d4('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x38d4('0x7'))(_0x38d4('0x8'));var config=require(_0x38d4('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x38d4('0xa')][_0x38d4('0xb')]({'port':0x232a});config[_0x38d4('0xc')]=_[_0x38d4('0xd')](config[_0x38d4('0xc')],{'host':_0x38d4('0xe'),'port':0x18eb});var socket=require(_0x38d4('0xf'))(new Redis(config[_0x38d4('0xc')]));require(_0x38d4('0x10'))[_0x38d4('0x11')](socket);function respondWithRpcPromise(_0x1aeaf4,_0xd8af3d,_0x4432d6){return new BPromise(function(_0x5e5236,_0xee09ed){return client['request'](_0x1aeaf4,_0x4432d6)['then'](function(_0x500ecf){logger[_0x38d4('0x12')]('CmList,\x20%s,\x20%s',_0xd8af3d,_0x38d4('0x13'));logger[_0x38d4('0x14')](_0x38d4('0x15'),_0xd8af3d,_0x38d4('0x13'),JSON[_0x38d4('0x16')](_0x500ecf));if(_0x500ecf[_0x38d4('0x17')]){if(_0x500ecf[_0x38d4('0x17')][_0x38d4('0x18')]===0x1f4){logger[_0x38d4('0x17')]('CmList,\x20%s,\x20%s',_0xd8af3d,_0x500ecf[_0x38d4('0x17')]['message']);return _0xee09ed(_0x500ecf['error'][_0x38d4('0x19')]);}logger[_0x38d4('0x17')](_0x38d4('0x1a'),_0xd8af3d,_0x500ecf[_0x38d4('0x17')]['message']);return _0x5e5236(_0x500ecf[_0x38d4('0x17')][_0x38d4('0x19')]);}else{logger['info'](_0x38d4('0x1a'),_0xd8af3d,_0x38d4('0x13'));_0x5e5236(_0x500ecf[_0x38d4('0x1b')][_0x38d4('0x19')]);}})[_0x38d4('0x1c')](function(_0x384804){logger[_0x38d4('0x17')](_0x38d4('0x1a'),_0xd8af3d,_0x384804);_0xee09ed(_0x384804);});});}
\ No newline at end of file
+var _0x9638=['jayson/promise','client','http','redis','defaults','socket.io-emitter','./cmList.socket','register','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmList,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x58d426,_0x203785){var _0x4d43ae=function(_0x5400f0){while(--_0x5400f0){_0x58d426['push'](_0x58d426['shift']());}};_0x4d43ae(++_0x203785);}(_0x9638,0x12b));var _0x8963=function(_0x1a0967,_0x51bc82){_0x1a0967=_0x1a0967-0x0;var _0x5a169f=_0x9638[_0x1a0967];return _0x5a169f;};'use strict';var _=require(_0x8963('0x0'));var util=require(_0x8963('0x1'));var moment=require(_0x8963('0x2'));var BPromise=require('bluebird');var rs=require(_0x8963('0x3'));var fs=require('fs');var Redis=require(_0x8963('0x4'));var db=require(_0x8963('0x5'))['db'];var utils=require(_0x8963('0x6'));var logger=require(_0x8963('0x7'))(_0x8963('0x8'));var config=require('../../config/environment');var jayson=require(_0x8963('0x9'));var client=jayson[_0x8963('0xa')][_0x8963('0xb')]({'port':0x232a});config[_0x8963('0xc')]=_[_0x8963('0xd')](config[_0x8963('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x8963('0xe'))(new Redis(config[_0x8963('0xc')]));require(_0x8963('0xf'))[_0x8963('0x10')](socket);function respondWithRpcPromise(_0x2691ca,_0x3b4509,_0x36a44b){return new BPromise(function(_0x37d166,_0x1740dd){return client['request'](_0x2691ca,_0x36a44b)[_0x8963('0x11')](function(_0x4b74d0){logger[_0x8963('0x12')]('CmList,\x20%s,\x20%s',_0x3b4509,_0x8963('0x13'));logger[_0x8963('0x14')](_0x8963('0x15'),_0x3b4509,_0x8963('0x13'),JSON[_0x8963('0x16')](_0x4b74d0));if(_0x4b74d0[_0x8963('0x17')]){if(_0x4b74d0[_0x8963('0x17')][_0x8963('0x18')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x3b4509,_0x4b74d0[_0x8963('0x17')]['message']);return _0x1740dd(_0x4b74d0['error'][_0x8963('0x19')]);}logger[_0x8963('0x17')]('CmList,\x20%s,\x20%s',_0x3b4509,_0x4b74d0[_0x8963('0x17')][_0x8963('0x19')]);return _0x37d166(_0x4b74d0['error'][_0x8963('0x19')]);}else{logger['info'](_0x8963('0x1a'),_0x3b4509,_0x8963('0x13'));_0x37d166(_0x4b74d0['result']['message']);}})[_0x8963('0x1b')](function(_0x1d3a13){logger['error'](_0x8963('0x1a'),_0x3b4509,_0x1d3a13);_0x1740dd(_0x1d3a13);});});}
\ No newline at end of file
index b93b9a0..c9ea21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266d=['register','length','cmList:','remove','removeListener'];(function(_0x1ef3f0,_0x1dffce){var _0x595149=function(_0x3e09f8){while(--_0x3e09f8){_0x1ef3f0['push'](_0x1ef3f0['shift']());}};_0x595149(++_0x1dffce);}(_0x266d,0x152));var _0xd266=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x266d[_0x321bb2];return _0x9c12ed;};'use strict';var CmListEvents=require('./cmList.events');var events=['save',_0xd266('0x0'),'update'];function createListener(_0x5aac75,_0x3a3864){return function(_0x4ffc83){_0x3a3864['emit'](_0x5aac75,_0x4ffc83);};}function removeListener(_0x4ad847,_0x624824){return function(){CmListEvents[_0xd266('0x1')](_0x4ad847,_0x624824);};}exports[_0xd266('0x2')]=function(_0x3b83f5){for(var _0x3ceebe=0x0,_0x2b4d50=events[_0xd266('0x3')];_0x3ceebe<_0x2b4d50;_0x3ceebe++){var _0x2ac059=events[_0x3ceebe];var _0x752c3b=createListener(_0xd266('0x4')+_0x2ac059,_0x3b83f5);CmListEvents['on'](_0x2ac059,_0x752c3b);}};
\ No newline at end of file
+var _0x0b49=['emit','register','length','./cmList.events','save','remove'];(function(_0x168127,_0x59cea1){var _0x4c99ad=function(_0x4ab3f2){while(--_0x4ab3f2){_0x168127['push'](_0x168127['shift']());}};_0x4c99ad(++_0x59cea1);}(_0x0b49,0x69));var _0x90b4=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x0b49[_0x387777];return _0x3f84c0;};'use strict';var CmListEvents=require(_0x90b4('0x0'));var events=[_0x90b4('0x1'),_0x90b4('0x2'),'update'];function createListener(_0x535acc,_0x5a8ffd){return function(_0x290de9){_0x5a8ffd[_0x90b4('0x3')](_0x535acc,_0x290de9);};}function removeListener(_0x382ac4,_0x169284){return function(){CmListEvents['removeListener'](_0x382ac4,_0x169284);};}exports[_0x90b4('0x4')]=function(_0x16d921){for(var _0x31a4b7=0x0,_0x165f22=events[_0x90b4('0x5')];_0x31a4b7<_0x165f22;_0x31a4b7++){var _0x3ad9d5=events[_0x31a4b7];var _0x1001fa=createListener('cmList:'+_0x3ad9d5,_0x16d921);CmListEvents['on'](_0x3ad9d5,_0x1001fa);}};
\ No newline at end of file
index 890a5e9..e6bf32d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e2d=['/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addCustomField','addAgents','update','destroy','delete','removeAgents','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./cmList.controller','get','index','/global_fields','isAuthenticated','getGlobalCustomFields','/:id','show'];(function(_0xb185c3,_0x2ff332){var _0x1ccfe6=function(_0x2a64b6){while(--_0x2a64b6){_0xb185c3['push'](_0xb185c3['shift']());}};_0x1ccfe6(++_0x2ff332);}(_0x6e2d,0x7d));var _0xd6e2=function(_0x4fb812,_0x2996a7){_0x4fb812=_0x4fb812-0x0;var _0x373277=_0x6e2d[_0x4fb812];return _0x373277;};'use strict';var multer=require(_0xd6e2('0x0'));var util=require(_0xd6e2('0x1'));var path=require('path');var timeout=require(_0xd6e2('0x2'));var express=require(_0xd6e2('0x3'));var router=express[_0xd6e2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd6e2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd6e2('0x6'));var controller=require(_0xd6e2('0x7'));router[_0xd6e2('0x8')]('/',auth['isAuthenticated'](),controller[_0xd6e2('0x9')]);router[_0xd6e2('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd6e2('0x8')](_0xd6e2('0xa'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0xc')]);router[_0xd6e2('0x8')](_0xd6e2('0xd'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0xe')]);router[_0xd6e2('0x8')](_0xd6e2('0xf'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x10')]);router['get'](_0xd6e2('0x11'),auth[_0xd6e2('0xb')](),controller['getContacts']);router[_0xd6e2('0x8')](_0xd6e2('0x12'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x13')]);router['get'](_0xd6e2('0x14'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x15')]);router[_0xd6e2('0x8')](_0xd6e2('0x16'),auth['isAuthenticated'](),controller[_0xd6e2('0x17')]);router[_0xd6e2('0x18')]('/',auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x19')]);router[_0xd6e2('0x18')](_0xd6e2('0xf'),auth['isAuthenticated'](),controller[_0xd6e2('0x1a')]);router[_0xd6e2('0x18')](_0xd6e2('0x11'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x1b')]);router[_0xd6e2('0x18')](_0xd6e2('0x14'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x1c')]);router[_0xd6e2('0x18')](_0xd6e2('0x16'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x1d')]);router['put']('/:id',auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x1e')]);router['delete'](_0xd6e2('0xd'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x1f')]);router[_0xd6e2('0x20')](_0xd6e2('0xf'),auth[_0xd6e2('0xb')](),controller['removeDispositions']);router[_0xd6e2('0x20')](_0xd6e2('0x16'),auth[_0xd6e2('0xb')](),controller[_0xd6e2('0x21')]);module[_0xd6e2('0x22')]=router;
\ No newline at end of file
+var _0x7a8a=['../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','create','addDisposition','addContacts','addCustomField','/:id/users','addAgents','put','update','destroy','delete','removeAgents','multer','util','path','connect-timeout','express','Router'];(function(_0x6b3f9c,_0x433d66){var _0x4178e3=function(_0x13136f){while(--_0x13136f){_0x6b3f9c['push'](_0x6b3f9c['shift']());}};_0x4178e3(++_0x433d66);}(_0x7a8a,0xb3));var _0xa7a8=function(_0x21ecdf,_0x27b990){_0x21ecdf=_0x21ecdf-0x0;var _0x3f3a44=_0x7a8a[_0x21ecdf];return _0x3f3a44;};'use strict';var multer=require(_0xa7a8('0x0'));var util=require(_0xa7a8('0x1'));var path=require(_0xa7a8('0x2'));var timeout=require(_0xa7a8('0x3'));var express=require(_0xa7a8('0x4'));var router=express[_0xa7a8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa7a8('0x6'));var interaction=require(_0xa7a8('0x7'));var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0xa7a8('0x8')]('/',auth[_0xa7a8('0x9')](),controller[_0xa7a8('0xa')]);router[_0xa7a8('0x8')](_0xa7a8('0xb'),auth[_0xa7a8('0x9')](),controller['describe']);router[_0xa7a8('0x8')](_0xa7a8('0xc'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0xd')]);router[_0xa7a8('0x8')](_0xa7a8('0xe'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0xf')]);router['get'](_0xa7a8('0x10'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x11')]);router[_0xa7a8('0x8')](_0xa7a8('0x12'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x13')]);router[_0xa7a8('0x8')](_0xa7a8('0x14'),auth['isAuthenticated'](),controller[_0xa7a8('0x15')]);router['get'](_0xa7a8('0x16'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x17')]);router['get']('/:id/users',auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x18')]);router[_0xa7a8('0x19')]('/',auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x1a')]);router[_0xa7a8('0x19')](_0xa7a8('0x10'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x1b')]);router[_0xa7a8('0x19')](_0xa7a8('0x12'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x1c')]);router[_0xa7a8('0x19')]('/:id/fields',auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x1d')]);router[_0xa7a8('0x19')](_0xa7a8('0x1e'),auth['isAuthenticated'](),controller[_0xa7a8('0x1f')]);router[_0xa7a8('0x20')](_0xa7a8('0xe'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x21')]);router['delete']('/:id',auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x22')]);router['delete'](_0xa7a8('0x10'),auth[_0xa7a8('0x9')](),controller['removeDispositions']);router[_0xa7a8('0x23')](_0xa7a8('0x1e'),auth[_0xa7a8('0x9')](),controller[_0xa7a8('0x24')]);module['exports']=router;
\ No newline at end of file
index cf378a3..6d4a3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd593=['STRING','sequelize','VIRTUAL','getDataValue','field'];(function(_0x57224e,_0x1c40e5){var _0x18a1ab=function(_0x3f3d48){while(--_0x3f3d48){_0x57224e['push'](_0x57224e['shift']());}};_0x18a1ab(++_0x1c40e5);}(_0xd593,0x1eb));var _0x3d59=function(_0x31abb5,_0x3f6010){_0x31abb5=_0x31abb5-0x0;var _0x3ad164=_0xd593[_0x31abb5];return _0x3ad164;};'use strict';var Sequelize=require(_0x3d59('0x0'));module['exports']={'name':{'type':Sequelize[_0x3d59('0x1')],'get':function(_0x25cb9b){return this[_0x3d59('0x2')](_0x3d59('0x3'));}},'field':{'type':Sequelize[_0x3d59('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x3d59('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x3d59('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0xe871=['VIRTUAL','getDataValue','field','STRING','sequelize','exports'];(function(_0x1da686,_0x3a128c){var _0x47d397=function(_0x55a413){while(--_0x55a413){_0x1da686['push'](_0x1da686['shift']());}};_0x47d397(++_0x3a128c);}(_0xe871,0x1e4));var _0x1e87=function(_0x1df851,_0x6f2901){_0x1df851=_0x1df851-0x0;var _0x3ca00d=_0xe871[_0x1df851];return _0x3ca00d;};'use strict';var Sequelize=require(_0x1e87('0x0'));module[_0x1e87('0x1')]={'name':{'type':Sequelize[_0x1e87('0x2')],'get':function(_0xf7d576){return this[_0x1e87('0x3')](_0x1e87('0x4'));}},'field':{'type':Sequelize[_0x1e87('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0x1e87('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x1e87('0x5')],'allowNull':![]}};
\ No newline at end of file
index 788669c..35fc169 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(_0x352d1c,_0x187dcd){var _0x242fb4=function(_0x47cade){while(--_0x47cade){_0x352d1c['push'](_0x352d1c['shift']());}};_0x242fb4(++_0x187dcd);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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(_0x38a572,_0x4fc3be){var _0x501d79=function(_0x3e8195){while(--_0x3e8195){_0x38a572['push'](_0x38a572['shift']());}};_0x501d79(++_0x4fc3be);}(_0x7a54,0x106));var _0x47a5=function(_0x16996c,_0x3242a4){_0x16996c=_0x16996c-0x0;var _0x3e7c33=_0x7a54[_0x16996c];return _0x3e7c33;};'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 55cf522..229ed4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b9f=['api','request-promise','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions','lodash','util'];(function(_0x539d0c,_0x33caef){var _0x303b0f=function(_0x48f4cc){while(--_0x48f4cc){_0x539d0c['push'](_0x539d0c['shift']());}};_0x303b0f(++_0x33caef);}(_0x4b9f,0x132));var _0xf4b9=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4b9f[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xf4b9('0x0'));var util=require(_0xf4b9('0x1'));var logger=require('../../config/logger')(_0xf4b9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf4b9('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf4b9('0x4'));var config=require(_0xf4b9('0x5'));var attributes=require(_0xf4b9('0x6'));module[_0xf4b9('0x7')]=function(_0x17dca8,_0x107d2c){return _0x17dca8[_0xf4b9('0x8')](_0xf4b9('0x9'),attributes,{'tableName':_0xf4b9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x17f8=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition'];(function(_0x4a9b52,_0x4e01ea){var _0x243cfa=function(_0x3c6c2d){while(--_0x3c6c2d){_0x4a9b52['push'](_0x4a9b52['shift']());}};_0x243cfa(++_0x4e01ea);}(_0x17f8,0xa8));var _0x817f=function(_0x411d8c,_0x22d9ff){_0x411d8c=_0x411d8c-0x0;var _0x34f6e5=_0x17f8[_0x411d8c];return _0x34f6e5;};'use strict';var _=require(_0x817f('0x0'));var util=require(_0x817f('0x1'));var logger=require(_0x817f('0x2'))(_0x817f('0x3'));var moment=require('moment');var BPromise=require(_0x817f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x817f('0x5'));var rimraf=require(_0x817f('0x6'));var config=require(_0x817f('0x7'));var attributes=require(_0x817f('0x8'));module[_0x817f('0x9')]=function(_0x5a9775,_0x5a41ba){return _0x5a9775[_0x817f('0xa')](_0x817f('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0af204..f125283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5c5=['then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x687b49,_0x547e56){var _0x49c8f7=function(_0x592ab5){while(--_0x592ab5){_0x687b49['push'](_0x687b49['shift']());}};_0x49c8f7(++_0x547e56);}(_0xe5c5,0x1a3));var _0x5e5c=function(_0xd1f73b,_0x111f6a){_0xd1f73b=_0xd1f73b-0x0;var _0x42aa7a=_0xe5c5[_0xd1f73b];return _0x42aa7a;};'use strict';var _=require(_0x5e5c('0x0'));var util=require(_0x5e5c('0x1'));var moment=require(_0x5e5c('0x2'));var BPromise=require(_0x5e5c('0x3'));var rs=require(_0x5e5c('0x4'));var fs=require('fs');var Redis=require(_0x5e5c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5e5c('0x6'));var logger=require(_0x5e5c('0x7'))(_0x5e5c('0x8'));var config=require(_0x5e5c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x5e5c('0xa')][_0x5e5c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48095c,_0x35c09c,_0x2b6db7){return new BPromise(function(_0x217367,_0x730b5f){return client[_0x5e5c('0xc')](_0x48095c,_0x2b6db7)[_0x5e5c('0xd')](function(_0x43ba2c){logger['info'](_0x5e5c('0xe'),_0x35c09c,_0x5e5c('0xf'));logger[_0x5e5c('0x10')](_0x5e5c('0x11'),_0x35c09c,'request\x20sent',JSON[_0x5e5c('0x12')](_0x43ba2c));if(_0x43ba2c[_0x5e5c('0x13')]){if(_0x43ba2c[_0x5e5c('0x13')][_0x5e5c('0x14')]===0x1f4){logger[_0x5e5c('0x13')](_0x5e5c('0xe'),_0x35c09c,_0x43ba2c[_0x5e5c('0x13')][_0x5e5c('0x15')]);return _0x730b5f(_0x43ba2c[_0x5e5c('0x13')]['message']);}logger[_0x5e5c('0x13')](_0x5e5c('0xe'),_0x35c09c,_0x43ba2c['error'][_0x5e5c('0x15')]);return _0x217367(_0x43ba2c[_0x5e5c('0x13')][_0x5e5c('0x15')]);}else{logger[_0x5e5c('0x16')](_0x5e5c('0xe'),_0x35c09c,_0x5e5c('0xf'));_0x217367(_0x43ba2c['result'][_0x5e5c('0x15')]);}})[_0x5e5c('0x17')](function(_0x1488ea){logger['error'](_0x5e5c('0xe'),_0x35c09c,_0x1488ea);_0x730b5f(_0x1488ea);});});}
\ No newline at end of file
+var _0xd43e=['Condition,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd43e,0x8b));var _0xed43=function(_0x563c6a,_0x42b20d){_0x563c6a=_0x563c6a-0x0;var _0x2eea4d=_0xd43e[_0x563c6a];return _0x2eea4d;};'use strict';var _=require(_0xed43('0x0'));var util=require(_0xed43('0x1'));var moment=require(_0xed43('0x2'));var BPromise=require(_0xed43('0x3'));var rs=require(_0xed43('0x4'));var fs=require('fs');var Redis=require(_0xed43('0x5'));var db=require(_0xed43('0x6'))['db'];var utils=require(_0xed43('0x7'));var logger=require(_0xed43('0x8'))(_0xed43('0x9'));var config=require(_0xed43('0xa'));var jayson=require(_0xed43('0xb'));var client=jayson['client'][_0xed43('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1cf308,_0x48a55d,_0x3595a5){return new BPromise(function(_0x33c70f,_0x533dfb){return client['request'](_0x1cf308,_0x3595a5)[_0xed43('0xd')](function(_0x43ba0e){logger[_0xed43('0xe')](_0xed43('0xf'),_0x48a55d,_0xed43('0x10'));logger['debug']('Condition,\x20%s,\x20%s,\x20%s',_0x48a55d,'request\x20sent',JSON[_0xed43('0x11')](_0x43ba0e));if(_0x43ba0e[_0xed43('0x12')]){if(_0x43ba0e[_0xed43('0x12')]['code']===0x1f4){logger[_0xed43('0x12')](_0xed43('0xf'),_0x48a55d,_0x43ba0e[_0xed43('0x12')][_0xed43('0x13')]);return _0x533dfb(_0x43ba0e[_0xed43('0x12')][_0xed43('0x13')]);}logger[_0xed43('0x12')]('Condition,\x20%s,\x20%s',_0x48a55d,_0x43ba0e[_0xed43('0x12')]['message']);return _0x33c70f(_0x43ba0e[_0xed43('0x12')][_0xed43('0x13')]);}else{logger['info']('Condition,\x20%s,\x20%s',_0x48a55d,_0xed43('0x10'));_0x33c70f(_0x43ba0e[_0xed43('0x14')][_0xed43('0x13')]);}})[_0xed43('0x15')](function(_0x54d2d6){logger[_0xed43('0x12')](_0xed43('0xf'),_0x48a55d,_0x54d2d6);_0x533dfb(_0x54d2d6);});});}
\ No newline at end of file
index 6b33c88..6b70ff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46f8=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','/:id','update','delete','destroy','exports'];(function(_0x477e67,_0x17b4fc){var _0x349226=function(_0x2e90a4){while(--_0x2e90a4){_0x477e67['push'](_0x477e67['shift']());}};_0x349226(++_0x17b4fc);}(_0x46f8,0x150));var _0x846f=function(_0x7a9c2a,_0x2c526b){_0x7a9c2a=_0x7a9c2a-0x0;var _0x5249b9=_0x46f8[_0x7a9c2a];return _0x5249b9;};'use strict';var multer=require(_0x846f('0x0'));var util=require('util');var path=require(_0x846f('0x1'));var timeout=require('connect-timeout');var express=require(_0x846f('0x2'));var router=express[_0x846f('0x3')]();var fs_extra=require(_0x846f('0x4'));var auth=require(_0x846f('0x5'));var interaction=require(_0x846f('0x6'));var config=require(_0x846f('0x7'));var controller=require(_0x846f('0x8'));router['put'](_0x846f('0x9'),auth['isAuthenticated'](),controller[_0x846f('0xa')]);router[_0x846f('0xb')](_0x846f('0x9'),auth['isAuthenticated'](),controller[_0x846f('0xc')]);module[_0x846f('0xd')]=router;
\ No newline at end of file
+var _0x0ed0=['update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','/:id','isAuthenticated'];(function(_0x29b865,_0x32679b){var _0x159d72=function(_0xa832){while(--_0xa832){_0x29b865['push'](_0x29b865['shift']());}};_0x159d72(++_0x32679b);}(_0x0ed0,0xe3));var _0x00ed=function(_0x49d19d,_0x38605a){_0x49d19d=_0x49d19d-0x0;var _0x3a5e21=_0x0ed0[_0x49d19d];return _0x3a5e21;};'use strict';var multer=require(_0x00ed('0x0'));var util=require(_0x00ed('0x1'));var path=require('path');var timeout=require(_0x00ed('0x2'));var express=require(_0x00ed('0x3'));var router=express[_0x00ed('0x4')]();var fs_extra=require(_0x00ed('0x5'));var auth=require(_0x00ed('0x6'));var interaction=require(_0x00ed('0x7'));var config=require(_0x00ed('0x8'));var controller=require('./condition.controller');router['put'](_0x00ed('0x9'),auth[_0x00ed('0xa')](),controller[_0x00ed('0xb')]);router[_0x00ed('0xc')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x00ed('0xd')]=router;
\ No newline at end of file
index e0bb6d3..fc6d6b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe03=['exports','STRING','sequelize'];(function(_0x2c2c63,_0x4239f9){var _0x55cefe=function(_0x45799c){while(--_0x45799c){_0x2c2c63['push'](_0x2c2c63['shift']());}};_0x55cefe(++_0x4239f9);}(_0xfe03,0xb3));var _0x3fe0=function(_0x3d3ddd,_0x59b504){_0x3d3ddd=_0x3d3ddd-0x0;var _0x52a4f9=_0xfe03[_0x3d3ddd];return _0x52a4f9;};'use strict';var Sequelize=require(_0x3fe0('0x0'));module[_0x3fe0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x3fe0('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xf339=['name','INTEGER','sequelize','STRING'];(function(_0x55348f,_0x3f9678){var _0x5ea0b1=function(_0x20ce4d){while(--_0x20ce4d){_0x55348f['push'](_0x55348f['shift']());}};_0x5ea0b1(++_0x3f9678);}(_0xf339,0x92));var _0x9f33=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xf339[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x9f33('0x0'));module['exports']={'name':{'type':Sequelize[_0x9f33('0x1')],'allowNull':![],'unique':_0x9f33('0x2')},'OrderBy':{'type':Sequelize[_0x9f33('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x9f33('0x1')],'allowNull':!![]}};
\ No newline at end of file
index adc3583..b14fae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['options','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ContactItemTypes','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','set','Content-Range','save','update','then','destroy','get','error','stack','name','send','index','ContactItemType','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x184a8f,_0x488d39){var _0x558ca3=function(_0x76a450){while(--_0x76a450){_0x184a8f['push'](_0x184a8f['shift']());}};_0x558ca3(++_0x488d39);}(_0x3266,0x6a));var _0x6326=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x3266[_0x5a9c0c];return _0x53c77d;};'use strict';var emlformat=require(_0x6326('0x0'));var rimraf=require(_0x6326('0x1'));var zipdir=require(_0x6326('0x2'));var jsonpatch=require(_0x6326('0x3'));var rp=require(_0x6326('0x4'));var moment=require(_0x6326('0x5'));var BPromise=require(_0x6326('0x6'));var Mustache=require(_0x6326('0x7'));var util=require(_0x6326('0x8'));var path=require('path');var sox=require(_0x6326('0x9'));var csv=require('to-csv');var ejs=require(_0x6326('0xa'));var fs=require('fs');var fs_extra=require(_0x6326('0xb'));var _=require(_0x6326('0xc'));var squel=require('squel');var crypto=require(_0x6326('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6326('0xe'));var toCsv=require(_0x6326('0xf'));var querystring=require(_0x6326('0x10'));var Papa=require(_0x6326('0x11'));var Redis=require(_0x6326('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6326('0x13'));var as=require(_0x6326('0x14'));var hardwareService=require(_0x6326('0x15'));var logger=require(_0x6326('0x16'))(_0x6326('0x17'));var utils=require(_0x6326('0x18'));var config=require(_0x6326('0x19'));var licenseUtil=require(_0x6326('0x1a'));var db=require(_0x6326('0x1b'))['db'];function respondWithStatusCode(_0x379358,_0x5c07e1){_0x5c07e1=_0x5c07e1||0xcc;return function(_0x5381d0){if(_0x5381d0){return _0x379358[_0x6326('0x1c')](_0x5c07e1);}return _0x379358[_0x6326('0x1d')](_0x5c07e1)['end']();};}function respondWithResult(_0x425878,_0x4caef3){_0x4caef3=_0x4caef3||0xc8;return function(_0x2d2d9b){if(_0x2d2d9b){return _0x425878[_0x6326('0x1d')](_0x4caef3)[_0x6326('0x1e')](_0x2d2d9b);}};}function respondWithFilteredResult(_0x41c352,_0x1ed3a3){return function(_0x2c1879){if(_0x2c1879){var _0x55923a=typeof _0x1ed3a3[_0x6326('0x1f')]==='undefined'&&typeof _0x1ed3a3['limit']==='undefined';var _0x51e7b9=_0x2c1879['count'];var _0x58e960=_0x55923a?0x0:_0x1ed3a3[_0x6326('0x1f')];var _0x1f4c11=_0x55923a?_0x2c1879[_0x6326('0x20')]:_0x1ed3a3['offset']+_0x1ed3a3['limit'];var _0x954ed5;if(_0x1f4c11>=_0x51e7b9){_0x1f4c11=_0x51e7b9;_0x954ed5=0xc8;}else{_0x954ed5=0xce;}_0x41c352[_0x6326('0x1d')](_0x954ed5);return _0x41c352[_0x6326('0x21')](_0x6326('0x22'),_0x58e960+'-'+_0x1f4c11+'/'+_0x51e7b9)[_0x6326('0x1e')](_0x2c1879);}return null;};}function patchUpdates(_0x25957a){return function(_0x21ee7d){try{jsonpatch['apply'](_0x21ee7d,_0x25957a,!![]);}catch(_0x22307f){return BPromise['reject'](_0x22307f);}return _0x21ee7d[_0x6326('0x23')]();};}function saveUpdates(_0x3c6cfa,_0x2482ef){return function(_0x24fb78){if(_0x24fb78){return _0x24fb78[_0x6326('0x24')](_0x3c6cfa)[_0x6326('0x25')](function(_0x225555){return _0x225555;});}return null;};}function removeEntity(_0x429bb0,_0x4781cc){return function(_0x2d0d00){if(_0x2d0d00){return _0x2d0d00[_0x6326('0x26')]()['then'](function(){var _0x72d020=_0x2d0d00[_0x6326('0x27')]({'plain':!![]});var _0x575701='ContactItemTypes';return db['UserProfileResource'][_0x6326('0x26')]({'where':{'type':_0x575701,'resourceId':_0x72d020['id']}})['then'](function(){return _0x2d0d00;});})[_0x6326('0x25')](function(){_0x429bb0[_0x6326('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x15e33d,_0x21ec69){return function(_0xb68fec){if(!_0xb68fec){_0x15e33d[_0x6326('0x1c')](0x194);}return _0xb68fec;};}function handleError(_0x2d2180,_0x45d037){_0x45d037=_0x45d037||0x1f4;return function(_0x40e036){logger[_0x6326('0x28')](_0x40e036[_0x6326('0x29')]);if(_0x40e036[_0x6326('0x2a')]){delete _0x40e036[_0x6326('0x2a')];}_0x2d2180[_0x6326('0x1d')](_0x45d037)[_0x6326('0x2b')](_0x40e036);};}exports[_0x6326('0x2c')]=function(_0x2e0445,_0x20c5ab){var _0x520e57={},_0x2bf5ef={},_0x47303c={'count':0x0,'rows':[]};var _0x1f8982=_['map'](db[_0x6326('0x2d')]['rawAttributes'],function(_0x4e703a){return{'name':_0x4e703a[_0x6326('0x2e')],'type':_0x4e703a[_0x6326('0x2f')][_0x6326('0x30')]};});_0x2bf5ef[_0x6326('0x31')]=_[_0x6326('0x32')](_0x1f8982,_0x6326('0x2a'));_0x2bf5ef[_0x6326('0x33')]=_[_0x6326('0x34')](_0x2e0445[_0x6326('0x33')]);_0x2bf5ef[_0x6326('0x35')]=_[_0x6326('0x36')](_0x2bf5ef[_0x6326('0x31')],_0x2bf5ef['query']);_0x520e57[_0x6326('0x37')]=_[_0x6326('0x36')](_0x2bf5ef['model'],qs[_0x6326('0x38')](_0x2e0445[_0x6326('0x33')][_0x6326('0x38')]));_0x520e57['attributes']=_0x520e57[_0x6326('0x37')]['length']?_0x520e57['attributes']:_0x2bf5ef[_0x6326('0x31')];if(!_0x2e0445[_0x6326('0x33')][_0x6326('0x39')]('nolimit')){_0x520e57[_0x6326('0x3a')]=qs['limit'](_0x2e0445[_0x6326('0x33')]['limit']);_0x520e57[_0x6326('0x1f')]=qs[_0x6326('0x1f')](_0x2e0445[_0x6326('0x33')][_0x6326('0x1f')]);}_0x520e57[_0x6326('0x3b')]=qs[_0x6326('0x3c')](_0x2e0445['query'][_0x6326('0x3c')]);_0x520e57[_0x6326('0x3d')]=qs['filters'](_[_0x6326('0x3e')](_0x2e0445['query'],_0x2bf5ef['filters']),_0x1f8982);if(_0x2e0445[_0x6326('0x33')][_0x6326('0x3f')]){_0x520e57[_0x6326('0x3d')]=_[_0x6326('0x40')](_0x520e57[_0x6326('0x3d')],{'$or':_[_0x6326('0x32')](_0x1f8982,function(_0x5de1c3){if(_0x5de1c3['type']!==_0x6326('0x41')){var _0x5b68af={};_0x5b68af[_0x5de1c3[_0x6326('0x2a')]]={'$like':'%'+_0x2e0445['query'][_0x6326('0x3f')]+'%'};return _0x5b68af;}})});}_0x520e57=_[_0x6326('0x40')]({},_0x520e57,_0x2e0445[_0x6326('0x42')]);var _0x1da798={'where':_0x520e57[_0x6326('0x3d')]};return db[_0x6326('0x2d')][_0x6326('0x20')](_0x1da798)[_0x6326('0x25')](function(_0x3b089b){_0x47303c[_0x6326('0x20')]=_0x3b089b;if(_0x2e0445[_0x6326('0x33')]['includeAll']){_0x520e57[_0x6326('0x43')]=[{'all':!![]}];}return db['ContactItemType'][_0x6326('0x44')](_0x520e57);})[_0x6326('0x25')](function(_0x16fc33){_0x47303c[_0x6326('0x45')]=_0x16fc33;return _0x47303c;})['then'](respondWithFilteredResult(_0x20c5ab,_0x520e57))[_0x6326('0x46')](handleError(_0x20c5ab,null));};exports[_0x6326('0x47')]=function(_0x562d5f,_0x12703d){var _0xe6a992={'raw':!![],'where':{'id':_0x562d5f[_0x6326('0x48')]['id']}},_0x7a5057={};_0x7a5057['model']=_[_0x6326('0x34')](db[_0x6326('0x2d')][_0x6326('0x49')]);_0x7a5057[_0x6326('0x33')]=_[_0x6326('0x34')](_0x562d5f[_0x6326('0x33')]);_0x7a5057[_0x6326('0x35')]=_['intersection'](_0x7a5057[_0x6326('0x31')],_0x7a5057[_0x6326('0x33')]);_0xe6a992[_0x6326('0x37')]=_[_0x6326('0x36')](_0x7a5057['model'],qs[_0x6326('0x38')](_0x562d5f['query'][_0x6326('0x38')]));_0xe6a992[_0x6326('0x37')]=_0xe6a992[_0x6326('0x37')][_0x6326('0x4a')]?_0xe6a992[_0x6326('0x37')]:_0x7a5057['model'];if(_0x562d5f[_0x6326('0x33')]['includeAll']){_0xe6a992['include']=[{'all':!![]}];}_0xe6a992=_[_0x6326('0x40')]({},_0xe6a992,_0x562d5f[_0x6326('0x42')]);return db['ContactItemType'][_0x6326('0x4b')](_0xe6a992)[_0x6326('0x25')](handleEntityNotFound(_0x12703d,null))[_0x6326('0x25')](respondWithResult(_0x12703d,null))[_0x6326('0x46')](handleError(_0x12703d,null));};exports[_0x6326('0x4c')]=function(_0x4f8dc0,_0x4af0ee){return db[_0x6326('0x2d')][_0x6326('0x4c')](_0x4f8dc0[_0x6326('0x4d')],{})[_0x6326('0x25')](function(_0x210a1b){var _0x318d19=_0x4f8dc0[_0x6326('0x4e')]['get']({'plain':!![]});if(!_0x318d19)throw new Error(_0x6326('0x4f'));if(_0x318d19[_0x6326('0x50')]===_0x6326('0x4e')){var _0x3e7674=_0x210a1b[_0x6326('0x27')]({'plain':!![]});var _0x4ff8e6=_0x6326('0x51');return db['UserProfileSection'][_0x6326('0x4b')]({'where':{'name':_0x4ff8e6,'userProfileId':_0x318d19[_0x6326('0x52')]},'raw':!![]})['then'](function(_0x37b045){if(_0x37b045&&_0x37b045['autoAssociation']===0x0){return db[_0x6326('0x53')][_0x6326('0x4c')]({'name':_0x3e7674[_0x6326('0x2a')],'resourceId':_0x3e7674['id'],'type':_0x37b045[_0x6326('0x2a')],'sectionId':_0x37b045['id']},{})['then'](function(){return _0x210a1b;});}else{return _0x210a1b;}})[_0x6326('0x46')](function(_0xbe6b3e){logger['error'](_0x6326('0x54'),_0xbe6b3e);throw _0xbe6b3e;});}return _0x210a1b;})[_0x6326('0x25')](respondWithResult(_0x4af0ee,0xc9))[_0x6326('0x46')](handleError(_0x4af0ee,null));};exports['update']=function(_0x2bece1,_0x2ac64b){if(_0x2bece1['body']['id']){delete _0x2bece1[_0x6326('0x4d')]['id'];}return db['ContactItemType'][_0x6326('0x4b')]({'where':{'id':_0x2bece1[_0x6326('0x48')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x2ac64b,null))[_0x6326('0x25')](saveUpdates(_0x2bece1[_0x6326('0x4d')],null))[_0x6326('0x25')](respondWithResult(_0x2ac64b,null))[_0x6326('0x46')](handleError(_0x2ac64b,null));};exports['destroy']=function(_0x51adce,_0x4d4de7){return db[_0x6326('0x2d')]['find']({'where':{'id':_0x51adce[_0x6326('0x48')]['id']}})[_0x6326('0x25')](handleEntityNotFound(_0x4d4de7,null))[_0x6326('0x25')](db[_0x6326('0x55')][_0x6326('0x24')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x51adce['params']['id']}}))[_0x6326('0x25')](removeEntity(_0x4d4de7,null))[_0x6326('0x46')](handleError(_0x4d4de7,null));};
\ No newline at end of file
+var _0xaebd=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','get','ContactItemTypes','destroy','stack','name','send','map','ContactItemType','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','rows','show','keys','rawAttributes','length','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation'];(function(_0x1cede9,_0x913a29){var _0x12a1f4=function(_0x4c857d){while(--_0x4c857d){_0x1cede9['push'](_0x1cede9['shift']());}};_0x12a1f4(++_0x913a29);}(_0xaebd,0x1e9));var _0xdaeb=function(_0x3f9a92,_0x5ed3e7){_0x3f9a92=_0x3f9a92-0x0;var _0x6b9c81=_0xaebd[_0x3f9a92];return _0x6b9c81;};'use strict';var emlformat=require(_0xdaeb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdaeb('0x1'));var jsonpatch=require(_0xdaeb('0x2'));var rp=require(_0xdaeb('0x3'));var moment=require(_0xdaeb('0x4'));var BPromise=require(_0xdaeb('0x5'));var Mustache=require('mustache');var util=require(_0xdaeb('0x6'));var path=require(_0xdaeb('0x7'));var sox=require(_0xdaeb('0x8'));var csv=require(_0xdaeb('0x9'));var ejs=require(_0xdaeb('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdaeb('0xb'));var squel=require(_0xdaeb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xdaeb('0xd'));var toCsv=require(_0xdaeb('0x9'));var querystring=require(_0xdaeb('0xe'));var Papa=require('papaparse');var Redis=require(_0xdaeb('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xdaeb('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdaeb('0x11'));var logger=require('../../config/logger')(_0xdaeb('0x12'));var utils=require(_0xdaeb('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xdaeb('0x14'))['db'];function respondWithStatusCode(_0x5aedaa,_0x4ee3cc){_0x4ee3cc=_0x4ee3cc||0xcc;return function(_0x2673db){if(_0x2673db){return _0x5aedaa[_0xdaeb('0x15')](_0x4ee3cc);}return _0x5aedaa[_0xdaeb('0x16')](_0x4ee3cc)[_0xdaeb('0x17')]();};}function respondWithResult(_0x1f31be,_0xc6c611){_0xc6c611=_0xc6c611||0xc8;return function(_0x49ba9a){if(_0x49ba9a){return _0x1f31be['status'](_0xc6c611)[_0xdaeb('0x18')](_0x49ba9a);}};}function respondWithFilteredResult(_0x306bdb,_0x34b2fe){return function(_0x18ec4e){if(_0x18ec4e){var _0x538a25=typeof _0x34b2fe['offset']===_0xdaeb('0x19')&&typeof _0x34b2fe['limit']==='undefined';var _0x42e509=_0x18ec4e[_0xdaeb('0x1a')];var _0x1b5243=_0x538a25?0x0:_0x34b2fe[_0xdaeb('0x1b')];var _0x2d8f11=_0x538a25?_0x18ec4e[_0xdaeb('0x1a')]:_0x34b2fe['offset']+_0x34b2fe[_0xdaeb('0x1c')];var _0x5ccf66;if(_0x2d8f11>=_0x42e509){_0x2d8f11=_0x42e509;_0x5ccf66=0xc8;}else{_0x5ccf66=0xce;}_0x306bdb[_0xdaeb('0x16')](_0x5ccf66);return _0x306bdb[_0xdaeb('0x1d')](_0xdaeb('0x1e'),_0x1b5243+'-'+_0x2d8f11+'/'+_0x42e509)['json'](_0x18ec4e);}return null;};}function patchUpdates(_0x4e97e0){return function(_0x13563c){try{jsonpatch[_0xdaeb('0x1f')](_0x13563c,_0x4e97e0,!![]);}catch(_0x23fccb){return BPromise[_0xdaeb('0x20')](_0x23fccb);}return _0x13563c[_0xdaeb('0x21')]();};}function saveUpdates(_0x536aae,_0x597bb7){return function(_0x2c969d){if(_0x2c969d){return _0x2c969d[_0xdaeb('0x22')](_0x536aae)[_0xdaeb('0x23')](function(_0x1d919a){return _0x1d919a;});}return null;};}function removeEntity(_0x39dfae,_0x55c825){return function(_0x254c3b){if(_0x254c3b){return _0x254c3b['destroy']()[_0xdaeb('0x23')](function(){var _0x398616=_0x254c3b[_0xdaeb('0x24')]({'plain':!![]});var _0x3b0770=_0xdaeb('0x25');return db['UserProfileResource'][_0xdaeb('0x26')]({'where':{'type':_0x3b0770,'resourceId':_0x398616['id']}})[_0xdaeb('0x23')](function(){return _0x254c3b;});})[_0xdaeb('0x23')](function(){_0x39dfae['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43095f,_0x4e7f44){return function(_0x5045f8){if(!_0x5045f8){_0x43095f[_0xdaeb('0x15')](0x194);}return _0x5045f8;};}function handleError(_0x1ff9af,_0x3e2b8c){_0x3e2b8c=_0x3e2b8c||0x1f4;return function(_0x5eb7b5){logger['error'](_0x5eb7b5[_0xdaeb('0x27')]);if(_0x5eb7b5[_0xdaeb('0x28')]){delete _0x5eb7b5[_0xdaeb('0x28')];}_0x1ff9af['status'](_0x3e2b8c)[_0xdaeb('0x29')](_0x5eb7b5);};}exports['index']=function(_0x4da82d,_0x28812c){var _0x21f6cf={},_0x2fb019={},_0x28c15c={'count':0x0,'rows':[]};var _0x3276c2=_[_0xdaeb('0x2a')](db[_0xdaeb('0x2b')]['rawAttributes'],function(_0x1c1c7c){return{'name':_0x1c1c7c[_0xdaeb('0x2c')],'type':_0x1c1c7c[_0xdaeb('0x2d')][_0xdaeb('0x2e')]};});_0x2fb019[_0xdaeb('0x2f')]=_['map'](_0x3276c2,_0xdaeb('0x28'));_0x2fb019[_0xdaeb('0x30')]=_['keys'](_0x4da82d[_0xdaeb('0x30')]);_0x2fb019[_0xdaeb('0x31')]=_[_0xdaeb('0x32')](_0x2fb019[_0xdaeb('0x2f')],_0x2fb019[_0xdaeb('0x30')]);_0x21f6cf[_0xdaeb('0x33')]=_[_0xdaeb('0x32')](_0x2fb019[_0xdaeb('0x2f')],qs[_0xdaeb('0x34')](_0x4da82d[_0xdaeb('0x30')]['fields']));_0x21f6cf['attributes']=_0x21f6cf[_0xdaeb('0x33')]['length']?_0x21f6cf[_0xdaeb('0x33')]:_0x2fb019[_0xdaeb('0x2f')];if(!_0x4da82d[_0xdaeb('0x30')][_0xdaeb('0x35')](_0xdaeb('0x36'))){_0x21f6cf[_0xdaeb('0x1c')]=qs['limit'](_0x4da82d[_0xdaeb('0x30')][_0xdaeb('0x1c')]);_0x21f6cf[_0xdaeb('0x1b')]=qs['offset'](_0x4da82d[_0xdaeb('0x30')][_0xdaeb('0x1b')]);}_0x21f6cf[_0xdaeb('0x37')]=qs[_0xdaeb('0x38')](_0x4da82d[_0xdaeb('0x30')][_0xdaeb('0x38')]);_0x21f6cf[_0xdaeb('0x39')]=qs['filters'](_[_0xdaeb('0x3a')](_0x4da82d[_0xdaeb('0x30')],_0x2fb019['filters']),_0x3276c2);if(_0x4da82d['query'][_0xdaeb('0x3b')]){_0x21f6cf[_0xdaeb('0x39')]=_['merge'](_0x21f6cf[_0xdaeb('0x39')],{'$or':_[_0xdaeb('0x2a')](_0x3276c2,function(_0x5a4de2){if(_0x5a4de2[_0xdaeb('0x2d')]!==_0xdaeb('0x3c')){var _0x4ecba7={};_0x4ecba7[_0x5a4de2['name']]={'$like':'%'+_0x4da82d[_0xdaeb('0x30')][_0xdaeb('0x3b')]+'%'};return _0x4ecba7;}})});}_0x21f6cf=_[_0xdaeb('0x3d')]({},_0x21f6cf,_0x4da82d[_0xdaeb('0x3e')]);var _0x2ea883={'where':_0x21f6cf[_0xdaeb('0x39')]};return db['ContactItemType'][_0xdaeb('0x1a')](_0x2ea883)['then'](function(_0x46aa44){_0x28c15c['count']=_0x46aa44;if(_0x4da82d['query'][_0xdaeb('0x3f')]){_0x21f6cf['include']=[{'all':!![]}];}return db[_0xdaeb('0x2b')]['findAll'](_0x21f6cf);})[_0xdaeb('0x23')](function(_0x244369){_0x28c15c[_0xdaeb('0x40')]=_0x244369;return _0x28c15c;})[_0xdaeb('0x23')](respondWithFilteredResult(_0x28812c,_0x21f6cf))['catch'](handleError(_0x28812c,null));};exports[_0xdaeb('0x41')]=function(_0x5a4b41,_0x3cc6a4){var _0xfb250e={'raw':!![],'where':{'id':_0x5a4b41['params']['id']}},_0x447ef0={};_0x447ef0[_0xdaeb('0x2f')]=_[_0xdaeb('0x42')](db[_0xdaeb('0x2b')][_0xdaeb('0x43')]);_0x447ef0[_0xdaeb('0x30')]=_[_0xdaeb('0x42')](_0x5a4b41[_0xdaeb('0x30')]);_0x447ef0[_0xdaeb('0x31')]=_[_0xdaeb('0x32')](_0x447ef0[_0xdaeb('0x2f')],_0x447ef0[_0xdaeb('0x30')]);_0xfb250e[_0xdaeb('0x33')]=_['intersection'](_0x447ef0[_0xdaeb('0x2f')],qs[_0xdaeb('0x34')](_0x5a4b41['query']['fields']));_0xfb250e[_0xdaeb('0x33')]=_0xfb250e[_0xdaeb('0x33')][_0xdaeb('0x44')]?_0xfb250e['attributes']:_0x447ef0[_0xdaeb('0x2f')];if(_0x5a4b41[_0xdaeb('0x30')][_0xdaeb('0x3f')]){_0xfb250e[_0xdaeb('0x45')]=[{'all':!![]}];}_0xfb250e=_[_0xdaeb('0x3d')]({},_0xfb250e,_0x5a4b41[_0xdaeb('0x3e')]);return db[_0xdaeb('0x2b')][_0xdaeb('0x46')](_0xfb250e)['then'](handleEntityNotFound(_0x3cc6a4,null))[_0xdaeb('0x23')](respondWithResult(_0x3cc6a4,null))[_0xdaeb('0x47')](handleError(_0x3cc6a4,null));};exports['create']=function(_0x38d2ee,_0x4dd70c){return db[_0xdaeb('0x2b')][_0xdaeb('0x48')](_0x38d2ee[_0xdaeb('0x49')],{})[_0xdaeb('0x23')](function(_0x5df403){var _0x449f64=_0x38d2ee[_0xdaeb('0x4a')][_0xdaeb('0x24')]({'plain':!![]});if(!_0x449f64)throw new Error(_0xdaeb('0x4b'));if(_0x449f64['role']==='user'){var _0x1403c8=_0x5df403[_0xdaeb('0x24')]({'plain':!![]});var _0x311219=_0xdaeb('0x25');return db[_0xdaeb('0x4c')][_0xdaeb('0x46')]({'where':{'name':_0x311219,'userProfileId':_0x449f64['userProfileId']},'raw':!![]})[_0xdaeb('0x23')](function(_0x42af1a){if(_0x42af1a&&_0x42af1a[_0xdaeb('0x4d')]===0x0){return db['UserProfileResource'][_0xdaeb('0x48')]({'name':_0x1403c8['name'],'resourceId':_0x1403c8['id'],'type':_0x42af1a[_0xdaeb('0x28')],'sectionId':_0x42af1a['id']},{})[_0xdaeb('0x23')](function(){return _0x5df403;});}else{return _0x5df403;}})[_0xdaeb('0x47')](function(_0x395e2c){logger[_0xdaeb('0x4e')](_0xdaeb('0x4f'),_0x395e2c);throw _0x395e2c;});}return _0x5df403;})['then'](respondWithResult(_0x4dd70c,0xc9))['catch'](handleError(_0x4dd70c,null));};exports['update']=function(_0x2260c5,_0x10287e){if(_0x2260c5['body']['id']){delete _0x2260c5['body']['id'];}return db['ContactItemType'][_0xdaeb('0x46')]({'where':{'id':_0x2260c5[_0xdaeb('0x50')]['id']}})[_0xdaeb('0x23')](handleEntityNotFound(_0x10287e,null))[_0xdaeb('0x23')](saveUpdates(_0x2260c5[_0xdaeb('0x49')],null))['then'](respondWithResult(_0x10287e,null))[_0xdaeb('0x47')](handleError(_0x10287e,null));};exports['destroy']=function(_0x25e58f,_0x1b87b2){return db[_0xdaeb('0x2b')][_0xdaeb('0x46')]({'where':{'id':_0x25e58f[_0xdaeb('0x50')]['id']}})[_0xdaeb('0x23')](handleEntityNotFound(_0x1b87b2,null))['then'](db['CmContactHasItem'][_0xdaeb('0x22')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x25e58f['params']['id']}}))[_0xdaeb('0x23')](removeEntity(_0x1b87b2,null))[_0xdaeb('0x47')](handleError(_0x1b87b2,null));};
\ No newline at end of file
index e6c6f34..1504c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cec=['api','bluebird','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','../../config/logger'];(function(_0x5957e3,_0x43b19d){var _0x1a2185=function(_0x3ba9c3){while(--_0x3ba9c3){_0x5957e3['push'](_0x5957e3['shift']());}};_0x1a2185(++_0x43b19d);}(_0x0cec,0x1c1));var _0xc0ce=function(_0x224f76,_0x5ecbc8){_0x224f76=_0x224f76-0x0;var _0x363683=_0x0cec[_0x224f76];return _0x363683;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc0ce('0x0'))(_0xc0ce('0x1'));var moment=require('moment');var BPromise=require(_0xc0ce('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc0ce('0x3'));var rimraf=require(_0xc0ce('0x4'));var config=require(_0xc0ce('0x5'));var attributes=require(_0xc0ce('0x6'));module[_0xc0ce('0x7')]=function(_0x74db1c,_0x426dee){return _0x74db1c[_0xc0ce('0x8')](_0xc0ce('0x9'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84c0=['api','moment','bluebird','path','rimraf','../../config/environment','./contactItemType.attributes','define','ContactItemType','lodash','util','../../config/logger'];(function(_0x45471b,_0x597cb1){var _0x36c607=function(_0x509915){while(--_0x509915){_0x45471b['push'](_0x45471b['shift']());}};_0x36c607(++_0x597cb1);}(_0x84c0,0xb1));var _0x084c=function(_0x38e0aa,_0x320295){_0x38e0aa=_0x38e0aa-0x0;var _0x239971=_0x84c0[_0x38e0aa];return _0x239971;};'use strict';var _=require(_0x084c('0x0'));var util=require(_0x084c('0x1'));var logger=require(_0x084c('0x2'))(_0x084c('0x3'));var moment=require(_0x084c('0x4'));var BPromise=require(_0x084c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x084c('0x6'));var rimraf=require(_0x084c('0x7'));var config=require(_0x084c('0x8'));var attributes=require(_0x084c('0x9'));module['exports']=function(_0x3d73b1,_0x551da1){return _0x3d73b1[_0x084c('0xa')](_0x084c('0xb'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e98c313..fd9f763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff01=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring','ioredis'];(function(_0x54ac22,_0x5ee045){var _0x332486=function(_0x341b38){while(--_0x341b38){_0x54ac22['push'](_0x54ac22['shift']());}};_0x332486(++_0x5ee045);}(_0xff01,0xad));var _0x1ff0=function(_0x2e08ec,_0x30c293){_0x2e08ec=_0x2e08ec-0x0;var _0x53ee87=_0xff01[_0x2e08ec];return _0x53ee87;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x1ff0('0x0'));var rs=require(_0x1ff0('0x1'));var fs=require('fs');var Redis=require(_0x1ff0('0x2'));var db=require(_0x1ff0('0x3'))['db'];var utils=require(_0x1ff0('0x4'));var logger=require(_0x1ff0('0x5'))('rpc');var config=require(_0x1ff0('0x6'));var jayson=require(_0x1ff0('0x7'));var client=jayson['client'][_0x1ff0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e7401,_0x761362,_0x148e57){return new BPromise(function(_0x2f9502,_0xa33ad1){return client[_0x1ff0('0x9')](_0x5e7401,_0x148e57)[_0x1ff0('0xa')](function(_0x34a1d7){logger[_0x1ff0('0xb')](_0x1ff0('0xc'),_0x761362,_0x1ff0('0xd'));logger[_0x1ff0('0xe')](_0x1ff0('0xf'),_0x761362,_0x1ff0('0xd'),JSON[_0x1ff0('0x10')](_0x34a1d7));if(_0x34a1d7['error']){if(_0x34a1d7[_0x1ff0('0x11')][_0x1ff0('0x12')]===0x1f4){logger[_0x1ff0('0x11')](_0x1ff0('0xc'),_0x761362,_0x34a1d7[_0x1ff0('0x11')][_0x1ff0('0x13')]);return _0xa33ad1(_0x34a1d7[_0x1ff0('0x11')][_0x1ff0('0x13')]);}logger[_0x1ff0('0x11')]('ContactItemType,\x20%s,\x20%s',_0x761362,_0x34a1d7[_0x1ff0('0x11')][_0x1ff0('0x13')]);return _0x2f9502(_0x34a1d7[_0x1ff0('0x11')][_0x1ff0('0x13')]);}else{logger['info'](_0x1ff0('0xc'),_0x761362,_0x1ff0('0xd'));_0x2f9502(_0x34a1d7[_0x1ff0('0x14')]['message']);}})[_0x1ff0('0x15')](function(_0x1e7837){logger['error'](_0x1ff0('0xc'),_0x761362,_0x1e7837);_0xa33ad1(_0x1e7837);});});}
\ No newline at end of file
+var _0x8a83=['request','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x8a83,0x10a));var _0x38a8=function(_0x2c9b79,_0x7cf58b){_0x2c9b79=_0x2c9b79-0x0;var _0x265032=_0x8a83[_0x2c9b79];return _0x265032;};'use strict';var _=require('lodash');var util=require(_0x38a8('0x0'));var moment=require(_0x38a8('0x1'));var BPromise=require(_0x38a8('0x2'));var rs=require(_0x38a8('0x3'));var fs=require('fs');var Redis=require(_0x38a8('0x4'));var db=require(_0x38a8('0x5'))['db'];var utils=require(_0x38a8('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x38a8('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x38a8('0x8')][_0x38a8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd1304b,_0x11deeb,_0x5cdec7){return new BPromise(function(_0x27c04b,_0x95a860){return client[_0x38a8('0xa')](_0xd1304b,_0x5cdec7)[_0x38a8('0xb')](function(_0x599f01){logger[_0x38a8('0xc')](_0x38a8('0xd'),_0x11deeb,_0x38a8('0xe'));logger[_0x38a8('0xf')](_0x38a8('0x10'),_0x11deeb,_0x38a8('0xe'),JSON[_0x38a8('0x11')](_0x599f01));if(_0x599f01['error']){if(_0x599f01[_0x38a8('0x12')][_0x38a8('0x13')]===0x1f4){logger[_0x38a8('0x12')](_0x38a8('0xd'),_0x11deeb,_0x599f01[_0x38a8('0x12')]['message']);return _0x95a860(_0x599f01[_0x38a8('0x12')][_0x38a8('0x14')]);}logger[_0x38a8('0x12')](_0x38a8('0xd'),_0x11deeb,_0x599f01[_0x38a8('0x12')][_0x38a8('0x14')]);return _0x27c04b(_0x599f01[_0x38a8('0x12')][_0x38a8('0x14')]);}else{logger[_0x38a8('0xc')]('ContactItemType,\x20%s,\x20%s',_0x11deeb,'request\x20sent');_0x27c04b(_0x599f01[_0x38a8('0x15')]['message']);}})[_0x38a8('0x16')](function(_0x1e53cb){logger[_0x38a8('0x12')](_0x38a8('0xd'),_0x11deeb,_0x1e53cb);_0x95a860(_0x1e53cb);});});}
\ No newline at end of file
index 0a6782c..891b081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0783=['exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./contactItemType.controller','get','isAuthenticated','index','/:id','show','post','put','delete'];(function(_0x39bf0c,_0x37d05c){var _0x6983e2=function(_0x27c8cb){while(--_0x27c8cb){_0x39bf0c['push'](_0x39bf0c['shift']());}};_0x6983e2(++_0x37d05c);}(_0x0783,0x199));var _0x3078=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0783[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x3078('0x0'));var util=require(_0x3078('0x1'));var path=require(_0x3078('0x2'));var timeout=require(_0x3078('0x3'));var express=require(_0x3078('0x4'));var router=express[_0x3078('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3078('0x6'));var controller=require(_0x3078('0x7'));router[_0x3078('0x8')]('/',auth[_0x3078('0x9')](),controller[_0x3078('0xa')]);router[_0x3078('0x8')](_0x3078('0xb'),auth[_0x3078('0x9')](),controller[_0x3078('0xc')]);router[_0x3078('0xd')]('/',auth[_0x3078('0x9')](),controller['create']);router[_0x3078('0xe')](_0x3078('0xb'),auth[_0x3078('0x9')](),controller['update']);router[_0x3078('0xf')](_0x3078('0xb'),auth[_0x3078('0x9')](),controller['destroy']);module[_0x3078('0x10')]=router;
\ No newline at end of file
+var _0x4240=['post','create','put','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','isAuthenticated','index','get','/:id'];(function(_0xe896bf,_0x4f8e5e){var _0x4c7a8a=function(_0x410ff2){while(--_0x410ff2){_0xe896bf['push'](_0xe896bf['shift']());}};_0x4c7a8a(++_0x4f8e5e);}(_0x4240,0x159));var _0x0424=function(_0x4e7cd2,_0x53fac0){_0x4e7cd2=_0x4e7cd2-0x0;var _0x52bb07=_0x4240[_0x4e7cd2];return _0x52bb07;};'use strict';var multer=require(_0x0424('0x0'));var util=require(_0x0424('0x1'));var path=require('path');var timeout=require(_0x0424('0x2'));var express=require('express');var router=express[_0x0424('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0424('0x4'));var interaction=require(_0x0424('0x5'));var config=require(_0x0424('0x6'));var controller=require(_0x0424('0x7'));router['get']('/',auth[_0x0424('0x8')](),controller[_0x0424('0x9')]);router[_0x0424('0xa')](_0x0424('0xb'),auth[_0x0424('0x8')](),controller['show']);router[_0x0424('0xc')]('/',auth[_0x0424('0x8')](),controller[_0x0424('0xd')]);router[_0x0424('0xe')]('/:id',auth[_0x0424('0x8')](),controller['update']);router['delete'](_0x0424('0xb'),auth[_0x0424('0x8')](),controller[_0x0424('0xf')]);module[_0x0424('0x10')]=router;
\ No newline at end of file
index c20c2d1..43cb246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x403f5f,_0x283f67){var _0x15b1cd=function(_0x238cab){while(--_0x238cab){_0x403f5f['push'](_0x403f5f['shift']());}};_0x15b1cd(++_0x283f67);}(_0xbaf0,0x12a));var _0x0baf=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xbaf0[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x15ec4e,_0x40b7e0){var _0xb5e5dd=function(_0x42bdd7){while(--_0x42bdd7){_0x15ec4e['push'](_0x15ec4e['shift']());}};_0xb5e5dd(++_0x40b7e0);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index fc56d5a..b6cd92c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a7b=['attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','addItem','getItems','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','destroy','then','get','CustomDashboards','UserProfileResource','error','stack','send','map','Dashboard','rawAttributes','model','name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','user','update','iframe','attrUrl','attrs','value','https://','custom'];(function(_0x32af70,_0x1c51e1){var _0x3cf2df=function(_0x118b24){while(--_0x118b24){_0x32af70['push'](_0x32af70['shift']());}};_0x3cf2df(++_0x1c51e1);}(_0x5a7b,0x1b1));var _0xb5a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5a7b[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xb5a7('0x0'));var rimraf=require(_0xb5a7('0x1'));var zipdir=require(_0xb5a7('0x2'));var jsonpatch=require(_0xb5a7('0x3'));var rp=require(_0xb5a7('0x4'));var moment=require(_0xb5a7('0x5'));var BPromise=require(_0xb5a7('0x6'));var Mustache=require('mustache');var util=require(_0xb5a7('0x7'));var path=require(_0xb5a7('0x8'));var sox=require(_0xb5a7('0x9'));var csv=require(_0xb5a7('0xa'));var ejs=require(_0xb5a7('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb5a7('0xc'));var squel=require(_0xb5a7('0xd'));var crypto=require(_0xb5a7('0xe'));var jsforce=require(_0xb5a7('0xf'));var deskjs=require(_0xb5a7('0x10'));var toCsv=require(_0xb5a7('0xa'));var querystring=require('querystring');var Papa=require(_0xb5a7('0x11'));var Redis=require(_0xb5a7('0x12'));var authService=require(_0xb5a7('0x13'));var qs=require(_0xb5a7('0x14'));var as=require(_0xb5a7('0x15'));var hardwareService=require(_0xb5a7('0x16'));var logger=require('../../config/logger')(_0xb5a7('0x17'));var utils=require(_0xb5a7('0x18'));var config=require(_0xb5a7('0x19'));var licenseUtil=require(_0xb5a7('0x1a'));var db=require(_0xb5a7('0x1b'))['db'];config[_0xb5a7('0x1c')]=_[_0xb5a7('0x1d')](config['redis'],{'host':_0xb5a7('0x1e'),'port':0x18eb});var socket=require(_0xb5a7('0x1f'))(new Redis(config[_0xb5a7('0x1c')]));require('./dashboard.socket')[_0xb5a7('0x20')](socket);function respondWithStatusCode(_0x4e1f5d,_0x5db943){_0x5db943=_0x5db943||0xcc;return function(_0x3cc07d){if(_0x3cc07d){return _0x4e1f5d[_0xb5a7('0x21')](_0x5db943);}return _0x4e1f5d[_0xb5a7('0x22')](_0x5db943)[_0xb5a7('0x23')]();};}function respondWithResult(_0x403d29,_0x2b87d6){_0x2b87d6=_0x2b87d6||0xc8;return function(_0x53c0aa){if(_0x53c0aa){return _0x403d29[_0xb5a7('0x22')](_0x2b87d6)[_0xb5a7('0x24')](_0x53c0aa);}};}function respondWithFilteredResult(_0x41bbfd,_0x48a051){return function(_0x3e127d){if(_0x3e127d){var _0x1da73f=typeof _0x48a051['offset']===_0xb5a7('0x25')&&typeof _0x48a051['limit']===_0xb5a7('0x25');var _0x327461=_0x3e127d['count'];var _0x19a4e9=_0x1da73f?0x0:_0x48a051[_0xb5a7('0x26')];var _0x3bf223=_0x1da73f?_0x3e127d[_0xb5a7('0x27')]:_0x48a051[_0xb5a7('0x26')]+_0x48a051[_0xb5a7('0x28')];var _0x5cc8d7;if(_0x3bf223>=_0x327461){_0x3bf223=_0x327461;_0x5cc8d7=0xc8;}else{_0x5cc8d7=0xce;}_0x41bbfd[_0xb5a7('0x22')](_0x5cc8d7);return _0x41bbfd[_0xb5a7('0x29')](_0xb5a7('0x2a'),_0x19a4e9+'-'+_0x3bf223+'/'+_0x327461)[_0xb5a7('0x24')](_0x3e127d);}return null;};}function patchUpdates(_0x57ef9a){return function(_0x414ab3){try{jsonpatch[_0xb5a7('0x2b')](_0x414ab3,_0x57ef9a,!![]);}catch(_0x3a82b4){return BPromise[_0xb5a7('0x2c')](_0x3a82b4);}return _0x414ab3['save']();};}function saveUpdates(_0x439d8d,_0xfd22c2){return function(_0x1bb731){if(_0x1bb731){return _0x1bb731['update'](_0x439d8d)['then'](function(_0x59f0c7){return _0x59f0c7;});}return null;};}function removeEntity(_0x231abb,_0x5c03e6){return function(_0x3c6c63){if(_0x3c6c63){return _0x3c6c63[_0xb5a7('0x2d')]()[_0xb5a7('0x2e')](function(){var _0x1ec217=_0x3c6c63[_0xb5a7('0x2f')]({'plain':!![]});var _0x5b2fda=_0xb5a7('0x30');return db[_0xb5a7('0x31')][_0xb5a7('0x2d')]({'where':{'type':_0x5b2fda,'resourceId':_0x1ec217['id']}})['then'](function(){return _0x3c6c63;});})[_0xb5a7('0x2e')](function(){_0x231abb[_0xb5a7('0x22')](0xcc)[_0xb5a7('0x23')]();});}};}function handleEntityNotFound(_0xd399f7,_0x389a6d){return function(_0x1ee6e6){if(!_0x1ee6e6){_0xd399f7[_0xb5a7('0x21')](0x194);}return _0x1ee6e6;};}function handleError(_0x1937fd,_0x464992){_0x464992=_0x464992||0x1f4;return function(_0x4d5ce9){logger[_0xb5a7('0x32')](_0x4d5ce9[_0xb5a7('0x33')]);if(_0x4d5ce9['name']){delete _0x4d5ce9['name'];}_0x1937fd[_0xb5a7('0x22')](_0x464992)[_0xb5a7('0x34')](_0x4d5ce9);};}exports['index']=function(_0x423769,_0x37ad63){var _0x2c6197={},_0x4cd0bf={},_0x268c33={'count':0x0,'rows':[]};var _0x1c96df=_[_0xb5a7('0x35')](db[_0xb5a7('0x36')][_0xb5a7('0x37')],function(_0x38e739){return{'name':_0x38e739['fieldName'],'type':_0x38e739['type']['key']};});_0x4cd0bf[_0xb5a7('0x38')]=_[_0xb5a7('0x35')](_0x1c96df,_0xb5a7('0x39'));_0x4cd0bf[_0xb5a7('0x3a')]=_[_0xb5a7('0x3b')](_0x423769[_0xb5a7('0x3a')]);_0x4cd0bf[_0xb5a7('0x3c')]=_['intersection'](_0x4cd0bf[_0xb5a7('0x38')],_0x4cd0bf[_0xb5a7('0x3a')]);_0x2c6197[_0xb5a7('0x3d')]=_[_0xb5a7('0x3e')](_0x4cd0bf[_0xb5a7('0x38')],qs[_0xb5a7('0x3f')](_0x423769[_0xb5a7('0x3a')][_0xb5a7('0x3f')]));_0x2c6197[_0xb5a7('0x3d')]=_0x2c6197['attributes'][_0xb5a7('0x40')]?_0x2c6197[_0xb5a7('0x3d')]:_0x4cd0bf[_0xb5a7('0x38')];if(!_0x423769['query'][_0xb5a7('0x41')](_0xb5a7('0x42'))){_0x2c6197['limit']=qs['limit'](_0x423769[_0xb5a7('0x3a')][_0xb5a7('0x28')]);_0x2c6197[_0xb5a7('0x26')]=qs[_0xb5a7('0x26')](_0x423769[_0xb5a7('0x3a')][_0xb5a7('0x26')]);}_0x2c6197[_0xb5a7('0x43')]=qs[_0xb5a7('0x44')](_0x423769['query']['sort']);_0x2c6197[_0xb5a7('0x45')]=qs[_0xb5a7('0x3c')](_[_0xb5a7('0x46')](_0x423769[_0xb5a7('0x3a')],_0x4cd0bf[_0xb5a7('0x3c')]),_0x1c96df);if(_0x423769['query'][_0xb5a7('0x47')]){_0x2c6197[_0xb5a7('0x45')]=_[_0xb5a7('0x48')](_0x2c6197[_0xb5a7('0x45')],{'$or':_[_0xb5a7('0x35')](_0x1c96df,function(_0x20ffd4){if(_0x20ffd4[_0xb5a7('0x49')]!==_0xb5a7('0x4a')){var _0x5e4a63={};_0x5e4a63[_0x20ffd4['name']]={'$like':'%'+_0x423769[_0xb5a7('0x3a')][_0xb5a7('0x47')]+'%'};return _0x5e4a63;}})});}_0x2c6197=_[_0xb5a7('0x48')]({},_0x2c6197,_0x423769[_0xb5a7('0x4b')]);var _0x19397a={'where':_0x2c6197['where']};return db[_0xb5a7('0x36')][_0xb5a7('0x27')](_0x19397a)[_0xb5a7('0x2e')](function(_0x4f1cfb){_0x268c33[_0xb5a7('0x27')]=_0x4f1cfb;if(_0x423769['query'][_0xb5a7('0x4c')]){_0x2c6197[_0xb5a7('0x4d')]=[{'all':!![]}];}return db['Dashboard'][_0xb5a7('0x4e')](_0x2c6197);})[_0xb5a7('0x2e')](function(_0x18ca8d){_0x268c33[_0xb5a7('0x4f')]=_0x18ca8d;return _0x268c33;})[_0xb5a7('0x2e')](respondWithFilteredResult(_0x37ad63,_0x2c6197))['catch'](handleError(_0x37ad63,null));};exports[_0xb5a7('0x50')]=function(_0x4cd8aa,_0x2a0a73){var _0x1426c4={'raw':![],'where':{'id':_0x4cd8aa[_0xb5a7('0x51')]['id']}},_0x510441={};_0x510441['model']=_['keys'](db['Dashboard'][_0xb5a7('0x37')]);_0x510441[_0xb5a7('0x3a')]=_['keys'](_0x4cd8aa[_0xb5a7('0x3a')]);_0x510441[_0xb5a7('0x3c')]=_[_0xb5a7('0x3e')](_0x510441[_0xb5a7('0x38')],_0x510441[_0xb5a7('0x3a')]);_0x1426c4[_0xb5a7('0x3d')]=_[_0xb5a7('0x3e')](_0x510441['model'],qs[_0xb5a7('0x3f')](_0x4cd8aa[_0xb5a7('0x3a')][_0xb5a7('0x3f')]));_0x1426c4[_0xb5a7('0x3d')]=_0x1426c4[_0xb5a7('0x3d')][_0xb5a7('0x40')]?_0x1426c4[_0xb5a7('0x3d')]:_0x510441[_0xb5a7('0x38')];if(_0x4cd8aa[_0xb5a7('0x3a')]['includeAll']){_0x1426c4[_0xb5a7('0x4d')]=[{'all':!![]}];}_0x1426c4=_['merge']({},_0x1426c4,_0x4cd8aa[_0xb5a7('0x4b')]);return db['Dashboard']['find'](_0x1426c4)[_0xb5a7('0x2e')](handleEntityNotFound(_0x2a0a73,null))[_0xb5a7('0x2e')](respondWithResult(_0x2a0a73,null))[_0xb5a7('0x52')](handleError(_0x2a0a73,null));};exports[_0xb5a7('0x53')]=function(_0x4c62e9,_0x1a8d47){return db['Dashboard'][_0xb5a7('0x53')](_0x4c62e9[_0xb5a7('0x54')],{})[_0xb5a7('0x2e')](function(_0x46453e){var _0x4e9908=_0x4c62e9['user'][_0xb5a7('0x2f')]({'plain':!![]});if(!_0x4e9908)throw new Error(_0xb5a7('0x55'));if(_0x4e9908[_0xb5a7('0x56')]==='user'){var _0x567e73=_0x46453e[_0xb5a7('0x2f')]({'plain':!![]});var _0x195656=_0xb5a7('0x30');return db[_0xb5a7('0x57')][_0xb5a7('0x58')]({'where':{'name':_0x195656,'userProfileId':_0x4e9908[_0xb5a7('0x59')]},'raw':!![]})['then'](function(_0x23ae32){if(_0x23ae32&&_0x23ae32[_0xb5a7('0x5a')]===0x0){return db[_0xb5a7('0x31')][_0xb5a7('0x53')]({'name':_0x567e73[_0xb5a7('0x39')],'resourceId':_0x567e73['id'],'type':_0x23ae32['name'],'sectionId':_0x23ae32['id']},{})['then'](function(){return _0x46453e;});}else{return _0x46453e;}})[_0xb5a7('0x52')](function(_0x5cd92b){logger[_0xb5a7('0x32')](_0xb5a7('0x5b'),_0x5cd92b);throw _0x5cd92b;});}return _0x46453e;})[_0xb5a7('0x2e')](respondWithResult(_0x1a8d47,0xc9))[_0xb5a7('0x52')](handleError(_0x1a8d47,null));};exports['clone']=function(_0x2556d7,_0x584564){var _0x4b324f={'where':{'id':_0x2556d7['params']['id']}},_0x59d2bd={};_0x59d2bd['model']=_[_0xb5a7('0x3b')](db[_0xb5a7('0x36')][_0xb5a7('0x37')]);_0x4b324f[_0xb5a7('0x3d')]=_['intersection'](_0x59d2bd['model'],qs[_0xb5a7('0x3f')](_0x2556d7[_0xb5a7('0x3a')][_0xb5a7('0x3f')]));_0x4b324f['attributes']=_0x4b324f['attributes'][_0xb5a7('0x40')]?_0x4b324f[_0xb5a7('0x3d')]:_0x59d2bd[_0xb5a7('0x38')];if(_0x2556d7[_0xb5a7('0x3a')][_0xb5a7('0x4c')]){_0x4b324f[_0xb5a7('0x4d')]=[{'all':!![]}];}_0x4b324f=_['merge']({},_0x4b324f,_0x2556d7[_0xb5a7('0x4b')]);return db[_0xb5a7('0x36')][_0xb5a7('0x58')](_0x4b324f)[_0xb5a7('0x2e')](handleEntityNotFound(_0x584564,null))[_0xb5a7('0x2e')](function(_0x99319){if(_0x99319){var _0x3413fe=_0x99319[_0xb5a7('0x2f')]({'plain':!![]});_0x3413fe=qs[_0xb5a7('0x5c')](_0x3413fe,['id',_0xb5a7('0x5d'),_0xb5a7('0x5e')]);_0x2556d7['body']=_['omit'](_0x2556d7[_0xb5a7('0x54')],['id',_0xb5a7('0x5d'),_0xb5a7('0x5e')]);return db[_0xb5a7('0x36')][_0xb5a7('0x53')](_['merge'](_0x3413fe,_0x2556d7['body']),{'include':_0x2556d7[_0xb5a7('0x3a')][_0xb5a7('0x4c')]?[{'all':!![]}]:undefined})[_0xb5a7('0x2e')](function(_0x3a98f3){var _0x2b28f5=_0x2556d7[_0xb5a7('0x5f')][_0xb5a7('0x2f')]({'plain':!![]});if(!_0x2b28f5)throw new Error(_0xb5a7('0x55'));if(_0x2b28f5[_0xb5a7('0x56')]===_0xb5a7('0x5f')){var _0x3f006c=_0x3a98f3[_0xb5a7('0x2f')]({'plain':!![]});var _0x3e9c5f=_0xb5a7('0x30');return db[_0xb5a7('0x57')]['find']({'where':{'name':_0x3e9c5f,'userProfileId':_0x2b28f5[_0xb5a7('0x59')]},'raw':!![]})[_0xb5a7('0x2e')](function(_0x15e3be){if(_0x15e3be&&_0x15e3be[_0xb5a7('0x5a')]===0x0){return db[_0xb5a7('0x31')]['create']({'name':_0x3f006c[_0xb5a7('0x39')],'resourceId':_0x3f006c['id'],'type':_0x15e3be[_0xb5a7('0x39')],'sectionId':_0x15e3be['id']},{})['then'](function(){return _0x3a98f3;});}else{return _0x3a98f3;}})['catch'](function(_0x1ff3a2){logger[_0xb5a7('0x32')](_0xb5a7('0x5b'),_0x1ff3a2);throw _0x1ff3a2;});}return _0x3a98f3;});}})[_0xb5a7('0x2e')](respondWithResult(_0x584564,0xc9))[_0xb5a7('0x52')](handleError(_0x584564,null));};exports[_0xb5a7('0x60')]=function(_0x43574a,_0x2d95bd){if(_0x43574a[_0xb5a7('0x54')]['id']){delete _0x43574a['body']['id'];}return db[_0xb5a7('0x36')][_0xb5a7('0x58')]({'where':{'id':_0x43574a[_0xb5a7('0x51')]['id']}})['then'](handleEntityNotFound(_0x2d95bd,null))[_0xb5a7('0x2e')](saveUpdates(_0x43574a[_0xb5a7('0x54')],null))[_0xb5a7('0x2e')](respondWithResult(_0x2d95bd,null))[_0xb5a7('0x52')](handleError(_0x2d95bd,null));};exports[_0xb5a7('0x2d')]=function(_0x24f981,_0x3beac2){return db[_0xb5a7('0x36')][_0xb5a7('0x58')]({'where':{'id':_0x24f981[_0xb5a7('0x51')]['id']}})[_0xb5a7('0x2e')](handleEntityNotFound(_0x3beac2,null))[_0xb5a7('0x2e')](removeEntity(_0x3beac2,null))[_0xb5a7('0x52')](handleError(_0x3beac2,null));};function widgetAttributes(_0x1cceeb){try{switch(_0x1cceeb['type']){case _0xb5a7('0x61'):return[{'name':_0xb5a7('0x62'),'value':_0x1cceeb[_0xb5a7('0x62')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x0]?_0x1cceeb['attrs'][0x0][_0xb5a7('0x64')]:undefined)||_0xb5a7('0x65')}];case _0xb5a7('0x66'):return[{'name':_0xb5a7('0x67'),'value':_0x1cceeb['attrPath']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x0]?_0x1cceeb['attrs'][0x0][_0xb5a7('0x64')]:undefined)||''}];case _0xb5a7('0x68'):return[{'name':_0xb5a7('0x69'),'value':_0x1cceeb['attrHourFormat']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x0]?_0x1cceeb[_0xb5a7('0x63')][0x0][_0xb5a7('0x64')]:undefined)||_0xb5a7('0x6a')},{'name':_0xb5a7('0x6b'),'value':_0x1cceeb[_0xb5a7('0x6b')]||(_0x1cceeb['attrs']&&_0x1cceeb[_0xb5a7('0x63')][0x1]?_0x1cceeb[_0xb5a7('0x63')][0x1][_0xb5a7('0x64')]:undefined)||_0xb5a7('0x6c')},{'name':_0xb5a7('0x6d'),'value':_0x1cceeb[_0xb5a7('0x6d')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x2]?_0x1cceeb['attrs'][0x2][_0xb5a7('0x64')]:undefined)||0xc}];case _0xb5a7('0x6e'):return[{'name':_0xb5a7('0x6f'),'value':_0x1cceeb[_0xb5a7('0x6f')]||(_0x1cceeb['attrs']&&_0x1cceeb[_0xb5a7('0x63')][0x0]?_0x1cceeb[_0xb5a7('0x63')][0x0][_0xb5a7('0x64')]:undefined)||_0xb5a7('0x70')},{'name':'attrVoiceQueues','value':_0x1cceeb[_0xb5a7('0x71')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x1]?_0x1cceeb[_0xb5a7('0x63')][0x1][_0xb5a7('0x64')]:undefined)||[]},{'name':_0xb5a7('0x6d'),'value':_0x1cceeb[_0xb5a7('0x6d')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x2]?_0x1cceeb[_0xb5a7('0x63')][0x2]['value']:undefined)||0x14},{'name':_0xb5a7('0x72'),'value':_0x1cceeb[_0xb5a7('0x72')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x3]?_0x1cceeb[_0xb5a7('0x63')][0x3]['value']:undefined)||_0xb5a7('0x73')},{'name':_0xb5a7('0x74'),'value':_0x1cceeb['attrEmailAccounts']||(_0x1cceeb['attrs']&&_0x1cceeb[_0xb5a7('0x63')][0x4]?_0x1cceeb['attrs'][0x4][_0xb5a7('0x64')]:undefined)||''},{'name':_0xb5a7('0x75'),'value':_0x1cceeb[_0xb5a7('0x75')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x5]?_0x1cceeb[_0xb5a7('0x63')][0x5]['value']:undefined)||''},{'name':_0xb5a7('0x76'),'value':_0x1cceeb[_0xb5a7('0x76')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x6]?_0x1cceeb[_0xb5a7('0x63')][0x6]['value']:undefined)||''},{'name':_0xb5a7('0x77'),'value':_0x1cceeb['attrOpenchannelAccounts']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x7]?_0x1cceeb[_0xb5a7('0x63')][0x7][_0xb5a7('0x64')]:undefined)||''},{'name':_0xb5a7('0x78'),'value':_0x1cceeb[_0xb5a7('0x78')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x8]?_0x1cceeb[_0xb5a7('0x63')][0x8]['value']:undefined)||''},{'name':_0xb5a7('0x79'),'value':_0x1cceeb['attrChatWebsites']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x9]?_0x1cceeb[_0xb5a7('0x63')][0x9]['value']:undefined)||''}];case _0xb5a7('0x7a'):case _0xb5a7('0x7b'):return[{'name':'attrSerie1','value':_0x1cceeb['attrSerie1']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x0]?_0x1cceeb[_0xb5a7('0x63')][0x0]['value']:undefined)||_0xb5a7('0x70')},{'name':_0xb5a7('0x7c'),'value':_0x1cceeb[_0xb5a7('0x7c')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x1]?_0x1cceeb[_0xb5a7('0x63')][0x1][_0xb5a7('0x64')]:undefined)||null},{'name':'attrSerie3','value':_0x1cceeb[_0xb5a7('0x7d')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x2]?_0x1cceeb[_0xb5a7('0x63')][0x2][_0xb5a7('0x64')]:undefined)||null},{'name':_0xb5a7('0x71'),'value':_0x1cceeb[_0xb5a7('0x71')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x3]?_0x1cceeb[_0xb5a7('0x63')][0x3]['value']:undefined)||[]},{'name':'attrChannel','value':_0x1cceeb['attrChannel']||(_0x1cceeb['attrs']&&_0x1cceeb[_0xb5a7('0x63')][0x4]?_0x1cceeb[_0xb5a7('0x63')][0x4][_0xb5a7('0x64')]:undefined)||'voice'},{'name':_0xb5a7('0x74'),'value':_0x1cceeb[_0xb5a7('0x74')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x5]?_0x1cceeb['attrs'][0x5]['value']:undefined)||''},{'name':_0xb5a7('0x75'),'value':_0x1cceeb[_0xb5a7('0x75')]||(_0x1cceeb['attrs']&&_0x1cceeb['attrs'][0x6]?_0x1cceeb[_0xb5a7('0x63')][0x6][_0xb5a7('0x64')]:undefined)||''},{'name':_0xb5a7('0x76'),'value':_0x1cceeb[_0xb5a7('0x76')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x7]?_0x1cceeb[_0xb5a7('0x63')][0x7][_0xb5a7('0x64')]:undefined)||''},{'name':_0xb5a7('0x77'),'value':_0x1cceeb[_0xb5a7('0x77')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x8]?_0x1cceeb[_0xb5a7('0x63')][0x8][_0xb5a7('0x64')]:undefined)||''},{'name':_0xb5a7('0x78'),'value':_0x1cceeb['attrWhatsappAccounts']||(_0x1cceeb['attrs']&&_0x1cceeb[_0xb5a7('0x63')][0x9]?_0x1cceeb[_0xb5a7('0x63')][0x9]['value']:undefined)||''},{'name':_0xb5a7('0x79'),'value':_0x1cceeb[_0xb5a7('0x79')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0xa]?_0x1cceeb[_0xb5a7('0x63')][0xa]['value']:undefined)||''}];case _0xb5a7('0x7e'):return[{'name':_0xb5a7('0x7f'),'type':_0x1cceeb[_0xb5a7('0x80')]||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x0]?_0x1cceeb[_0xb5a7('0x63')][0x0][_0xb5a7('0x49')]:undefined)||null,'value':_0x1cceeb['attrReport']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb['attrs'][0x0]?_0x1cceeb['attrs'][0x0]['value']:undefined)||null},{'name':_0xb5a7('0x81'),'value':_0x1cceeb['attrRefresh']||(_0x1cceeb[_0xb5a7('0x63')]&&_0x1cceeb[_0xb5a7('0x63')][0x1]?_0x1cceeb[_0xb5a7('0x63')][0x1][_0xb5a7('0x64')]:undefined)||0x0}];default:return[];}}catch(_0x3008ad){logger['error']('widgetAttributes:\x20%s',JSON[_0xb5a7('0x82')](_0x3008ad));return[];}}exports[_0xb5a7('0x83')]=function(_0x9ce11,_0x1dbcd1,_0x533ec8){if(_0x9ce11['body']['id']){delete _0x9ce11[_0xb5a7('0x54')]['id'];}return db[_0xb5a7('0x36')][_0xb5a7('0x58')]({'where':{'id':_0x9ce11[_0xb5a7('0x51')]['id']}})[_0xb5a7('0x2e')](handleEntityNotFound(_0x1dbcd1,null))['then'](function(_0x32c63a){if(_0x32c63a){_0x9ce11[_0xb5a7('0x54')]['DashboardId']=_0x32c63a['id'];_0x9ce11[_0xb5a7('0x54')]['attrs']=widgetAttributes(_0x9ce11[_0xb5a7('0x54')]);return db['DashboardItem'][_0xb5a7('0x53')](_0x9ce11[_0xb5a7('0x54')]);}})[_0xb5a7('0x2e')](respondWithResult(_0x1dbcd1,null))['catch'](handleError(_0x1dbcd1,null));};exports[_0xb5a7('0x84')]=function(_0x2fe9d8,_0x42d4ec,_0x2994c4){var _0x3f2589={};var _0x1cede2={};var _0x5265fa;var _0x4b7855;return db[_0xb5a7('0x36')][_0xb5a7('0x85')]({'where':{'id':_0x2fe9d8['params']['id']}})[_0xb5a7('0x2e')](handleEntityNotFound(_0x42d4ec,null))['then'](function(_0x23428a){if(_0x23428a){_0x5265fa=_0x23428a;_0x1cede2[_0xb5a7('0x38')]=_[_0xb5a7('0x3b')](db['DashboardItem'][_0xb5a7('0x37')]);_0x1cede2[_0xb5a7('0x3a')]=_[_0xb5a7('0x3b')](_0x2fe9d8[_0xb5a7('0x3a')]);_0x1cede2[_0xb5a7('0x3c')]=_[_0xb5a7('0x3e')](_0x1cede2[_0xb5a7('0x38')],_0x1cede2[_0xb5a7('0x3a')]);_0x3f2589['attributes']=_[_0xb5a7('0x3e')](_0x1cede2[_0xb5a7('0x38')],qs[_0xb5a7('0x3f')](_0x2fe9d8[_0xb5a7('0x3a')][_0xb5a7('0x3f')]));_0x3f2589[_0xb5a7('0x3d')]=_0x3f2589['attributes']['length']?_0x3f2589[_0xb5a7('0x3d')]:_0x1cede2[_0xb5a7('0x38')];_0x3f2589[_0xb5a7('0x43')]=qs[_0xb5a7('0x44')](_0x2fe9d8[_0xb5a7('0x3a')][_0xb5a7('0x44')]);_0x3f2589[_0xb5a7('0x45')]=qs[_0xb5a7('0x3c')](_['pick'](_0x2fe9d8[_0xb5a7('0x3a')],_0x1cede2[_0xb5a7('0x3c')]));if(_0x2fe9d8[_0xb5a7('0x3a')][_0xb5a7('0x47')]){_0x3f2589[_0xb5a7('0x45')]=_['merge'](_0x3f2589[_0xb5a7('0x45')],{'$or':_[_0xb5a7('0x35')](_0x3f2589[_0xb5a7('0x3d')],function(_0x5e71c5){var _0x5e267d={};_0x5e267d[_0x5e71c5]={'$like':'%'+_0x2fe9d8[_0xb5a7('0x3a')][_0xb5a7('0x47')]+'%'};return _0x5e267d;})});}_0x3f2589=_[_0xb5a7('0x48')]({},_0x3f2589,_0x2fe9d8[_0xb5a7('0x4b')]);return _0x5265fa['getItems'](_0x3f2589);}})['then'](function(_0x45c2b0){if(_0x45c2b0){_0x4b7855=_0x45c2b0[_0xb5a7('0x40')];if(!_0x2fe9d8[_0xb5a7('0x3a')]['hasOwnProperty'](_0xb5a7('0x42'))){_0x3f2589[_0xb5a7('0x28')]=qs[_0xb5a7('0x28')](_0x2fe9d8[_0xb5a7('0x3a')]['limit']);_0x3f2589['offset']=qs[_0xb5a7('0x26')](_0x2fe9d8[_0xb5a7('0x3a')]['offset']);}return _0x5265fa[_0xb5a7('0x84')](_0x3f2589);}})[_0xb5a7('0x2e')](function(_0xafd449){if(_0xafd449){return _0xafd449?{'count':_0x4b7855,'rows':_0xafd449}:null;}})[_0xb5a7('0x2e')](respondWithResult(_0x42d4ec,null))[_0xb5a7('0x52')](handleError(_0x42d4ec,null));};
\ No newline at end of file
+var _0xddbc=['rows','catch','show','rawAttributes','length','merge','options','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','update','params','iframe','attrUrl','attrs','value','attrPath','clock','attrHourFormat','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardId','DashboardItem','getItems','findOne','nolimit','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboard.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','CustomDashboards','UserProfileResource','destroy','end','sendStatus','error','name','send','map','Dashboard','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','includeAll','include','findAll'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xddbc,0xbd));var _0xcddb=function(_0x3ae143,_0x11838c){_0x3ae143=_0x3ae143-0x0;var _0x56891c=_0xddbc[_0x3ae143];return _0x56891c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xcddb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcddb('0x1'));var rp=require('request-promise');var moment=require(_0xcddb('0x2'));var BPromise=require(_0xcddb('0x3'));var Mustache=require('mustache');var util=require(_0xcddb('0x4'));var path=require(_0xcddb('0x5'));var sox=require(_0xcddb('0x6'));var csv=require(_0xcddb('0x7'));var ejs=require(_0xcddb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcddb('0x9'));var squel=require(_0xcddb('0xa'));var crypto=require(_0xcddb('0xb'));var jsforce=require(_0xcddb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xcddb('0x7'));var querystring=require(_0xcddb('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcddb('0xe'));var qs=require(_0xcddb('0xf'));var as=require(_0xcddb('0x10'));var hardwareService=require(_0xcddb('0x11'));var logger=require(_0xcddb('0x12'))(_0xcddb('0x13'));var utils=require(_0xcddb('0x14'));var config=require(_0xcddb('0x15'));var licenseUtil=require(_0xcddb('0x16'));var db=require(_0xcddb('0x17'))['db'];config['redis']=_['defaults'](config[_0xcddb('0x18')],{'host':_0xcddb('0x19'),'port':0x18eb});var socket=require(_0xcddb('0x1a'))(new Redis(config[_0xcddb('0x18')]));require(_0xcddb('0x1b'))[_0xcddb('0x1c')](socket);function respondWithStatusCode(_0x35cd60,_0xc2732c){_0xc2732c=_0xc2732c||0xcc;return function(_0x2ee9e2){if(_0x2ee9e2){return _0x35cd60['sendStatus'](_0xc2732c);}return _0x35cd60[_0xcddb('0x1d')](_0xc2732c)['end']();};}function respondWithResult(_0x3906b8,_0xa49ccf){_0xa49ccf=_0xa49ccf||0xc8;return function(_0x361edc){if(_0x361edc){return _0x3906b8[_0xcddb('0x1d')](_0xa49ccf)[_0xcddb('0x1e')](_0x361edc);}};}function respondWithFilteredResult(_0x40fe8b,_0x52963e){return function(_0x115beb){if(_0x115beb){var _0x3d5744=typeof _0x52963e[_0xcddb('0x1f')]===_0xcddb('0x20')&&typeof _0x52963e[_0xcddb('0x21')]===_0xcddb('0x20');var _0x41b86c=_0x115beb[_0xcddb('0x22')];var _0x354857=_0x3d5744?0x0:_0x52963e['offset'];var _0x109d2e=_0x3d5744?_0x115beb[_0xcddb('0x22')]:_0x52963e[_0xcddb('0x1f')]+_0x52963e[_0xcddb('0x21')];var _0x652713;if(_0x109d2e>=_0x41b86c){_0x109d2e=_0x41b86c;_0x652713=0xc8;}else{_0x652713=0xce;}_0x40fe8b[_0xcddb('0x1d')](_0x652713);return _0x40fe8b[_0xcddb('0x23')](_0xcddb('0x24'),_0x354857+'-'+_0x109d2e+'/'+_0x41b86c)[_0xcddb('0x1e')](_0x115beb);}return null;};}function patchUpdates(_0x1394ad){return function(_0x5d0bf0){try{jsonpatch[_0xcddb('0x25')](_0x5d0bf0,_0x1394ad,!![]);}catch(_0xe5d653){return BPromise[_0xcddb('0x26')](_0xe5d653);}return _0x5d0bf0['save']();};}function saveUpdates(_0xc23c97,_0x2f4eed){return function(_0x236d49){if(_0x236d49){return _0x236d49['update'](_0xc23c97)[_0xcddb('0x27')](function(_0x355372){return _0x355372;});}return null;};}function removeEntity(_0x3280b2,_0x245d0b){return function(_0x2eb34b){if(_0x2eb34b){return _0x2eb34b['destroy']()['then'](function(){var _0x5c7ed7=_0x2eb34b['get']({'plain':!![]});var _0x2c95f9=_0xcddb('0x28');return db[_0xcddb('0x29')][_0xcddb('0x2a')]({'where':{'type':_0x2c95f9,'resourceId':_0x5c7ed7['id']}})[_0xcddb('0x27')](function(){return _0x2eb34b;});})[_0xcddb('0x27')](function(){_0x3280b2['status'](0xcc)[_0xcddb('0x2b')]();});}};}function handleEntityNotFound(_0x4d3935,_0x47de69){return function(_0x306606){if(!_0x306606){_0x4d3935[_0xcddb('0x2c')](0x194);}return _0x306606;};}function handleError(_0x5c612c,_0x42af0c){_0x42af0c=_0x42af0c||0x1f4;return function(_0x3345fa){logger[_0xcddb('0x2d')](_0x3345fa['stack']);if(_0x3345fa[_0xcddb('0x2e')]){delete _0x3345fa[_0xcddb('0x2e')];}_0x5c612c['status'](_0x42af0c)[_0xcddb('0x2f')](_0x3345fa);};}exports['index']=function(_0x106564,_0x5ddb28){var _0x5c4552={},_0x59fe65={},_0x1ea624={'count':0x0,'rows':[]};var _0x49bfa7=_[_0xcddb('0x30')](db[_0xcddb('0x31')]['rawAttributes'],function(_0x4cb762){return{'name':_0x4cb762[_0xcddb('0x32')],'type':_0x4cb762[_0xcddb('0x33')][_0xcddb('0x34')]};});_0x59fe65[_0xcddb('0x35')]=_['map'](_0x49bfa7,_0xcddb('0x2e'));_0x59fe65[_0xcddb('0x36')]=_[_0xcddb('0x37')](_0x106564[_0xcddb('0x36')]);_0x59fe65[_0xcddb('0x38')]=_[_0xcddb('0x39')](_0x59fe65[_0xcddb('0x35')],_0x59fe65[_0xcddb('0x36')]);_0x5c4552[_0xcddb('0x3a')]=_[_0xcddb('0x39')](_0x59fe65[_0xcddb('0x35')],qs[_0xcddb('0x3b')](_0x106564[_0xcddb('0x36')][_0xcddb('0x3b')]));_0x5c4552[_0xcddb('0x3a')]=_0x5c4552[_0xcddb('0x3a')]['length']?_0x5c4552[_0xcddb('0x3a')]:_0x59fe65[_0xcddb('0x35')];if(!_0x106564[_0xcddb('0x36')][_0xcddb('0x3c')]('nolimit')){_0x5c4552['limit']=qs[_0xcddb('0x21')](_0x106564['query'][_0xcddb('0x21')]);_0x5c4552[_0xcddb('0x1f')]=qs[_0xcddb('0x1f')](_0x106564[_0xcddb('0x36')][_0xcddb('0x1f')]);}_0x5c4552[_0xcddb('0x3d')]=qs[_0xcddb('0x3e')](_0x106564[_0xcddb('0x36')]['sort']);_0x5c4552['where']=qs['filters'](_[_0xcddb('0x3f')](_0x106564['query'],_0x59fe65['filters']),_0x49bfa7);if(_0x106564['query'][_0xcddb('0x40')]){_0x5c4552[_0xcddb('0x41')]=_['merge'](_0x5c4552[_0xcddb('0x41')],{'$or':_[_0xcddb('0x30')](_0x49bfa7,function(_0x5e1ee9){if(_0x5e1ee9[_0xcddb('0x33')]!=='VIRTUAL'){var _0x17cdf5={};_0x17cdf5[_0x5e1ee9[_0xcddb('0x2e')]]={'$like':'%'+_0x106564[_0xcddb('0x36')][_0xcddb('0x40')]+'%'};return _0x17cdf5;}})});}_0x5c4552=_['merge']({},_0x5c4552,_0x106564['options']);var _0x1cf503={'where':_0x5c4552[_0xcddb('0x41')]};return db[_0xcddb('0x31')][_0xcddb('0x22')](_0x1cf503)[_0xcddb('0x27')](function(_0xa0691e){_0x1ea624['count']=_0xa0691e;if(_0x106564['query'][_0xcddb('0x42')]){_0x5c4552[_0xcddb('0x43')]=[{'all':!![]}];}return db[_0xcddb('0x31')][_0xcddb('0x44')](_0x5c4552);})[_0xcddb('0x27')](function(_0x31d006){_0x1ea624[_0xcddb('0x45')]=_0x31d006;return _0x1ea624;})[_0xcddb('0x27')](respondWithFilteredResult(_0x5ddb28,_0x5c4552))[_0xcddb('0x46')](handleError(_0x5ddb28,null));};exports[_0xcddb('0x47')]=function(_0x503c10,_0x24920f){var _0x3e4ebe={'raw':![],'where':{'id':_0x503c10['params']['id']}},_0x4d6e4d={};_0x4d6e4d[_0xcddb('0x35')]=_[_0xcddb('0x37')](db[_0xcddb('0x31')][_0xcddb('0x48')]);_0x4d6e4d[_0xcddb('0x36')]=_[_0xcddb('0x37')](_0x503c10[_0xcddb('0x36')]);_0x4d6e4d[_0xcddb('0x38')]=_['intersection'](_0x4d6e4d[_0xcddb('0x35')],_0x4d6e4d['query']);_0x3e4ebe[_0xcddb('0x3a')]=_[_0xcddb('0x39')](_0x4d6e4d[_0xcddb('0x35')],qs['fields'](_0x503c10[_0xcddb('0x36')]['fields']));_0x3e4ebe[_0xcddb('0x3a')]=_0x3e4ebe['attributes'][_0xcddb('0x49')]?_0x3e4ebe[_0xcddb('0x3a')]:_0x4d6e4d[_0xcddb('0x35')];if(_0x503c10[_0xcddb('0x36')][_0xcddb('0x42')]){_0x3e4ebe[_0xcddb('0x43')]=[{'all':!![]}];}_0x3e4ebe=_[_0xcddb('0x4a')]({},_0x3e4ebe,_0x503c10[_0xcddb('0x4b')]);return db['Dashboard']['find'](_0x3e4ebe)[_0xcddb('0x27')](handleEntityNotFound(_0x24920f,null))[_0xcddb('0x27')](respondWithResult(_0x24920f,null))[_0xcddb('0x46')](handleError(_0x24920f,null));};exports['create']=function(_0x52ce9c,_0x235748){return db['Dashboard'][_0xcddb('0x4c')](_0x52ce9c['body'],{})[_0xcddb('0x27')](function(_0x49a3c7){var _0x4d1e70=_0x52ce9c[_0xcddb('0x4d')][_0xcddb('0x4e')]({'plain':!![]});if(!_0x4d1e70)throw new Error(_0xcddb('0x4f'));if(_0x4d1e70[_0xcddb('0x50')]===_0xcddb('0x4d')){var _0x5d4673=_0x49a3c7[_0xcddb('0x4e')]({'plain':!![]});var _0x5409a9=_0xcddb('0x28');return db[_0xcddb('0x51')][_0xcddb('0x52')]({'where':{'name':_0x5409a9,'userProfileId':_0x4d1e70[_0xcddb('0x53')]},'raw':!![]})[_0xcddb('0x27')](function(_0x2c177d){if(_0x2c177d&&_0x2c177d[_0xcddb('0x54')]===0x0){return db[_0xcddb('0x29')][_0xcddb('0x4c')]({'name':_0x5d4673['name'],'resourceId':_0x5d4673['id'],'type':_0x2c177d['name'],'sectionId':_0x2c177d['id']},{})[_0xcddb('0x27')](function(){return _0x49a3c7;});}else{return _0x49a3c7;}})[_0xcddb('0x46')](function(_0x543a29){logger[_0xcddb('0x2d')](_0xcddb('0x55'),_0x543a29);throw _0x543a29;});}return _0x49a3c7;})[_0xcddb('0x27')](respondWithResult(_0x235748,0xc9))[_0xcddb('0x46')](handleError(_0x235748,null));};exports[_0xcddb('0x56')]=function(_0x2cd2e6,_0x550abe){var _0x22223e={'where':{'id':_0x2cd2e6['params']['id']}},_0x1663f5={};_0x1663f5[_0xcddb('0x35')]=_[_0xcddb('0x37')](db[_0xcddb('0x31')][_0xcddb('0x48')]);_0x22223e[_0xcddb('0x3a')]=_[_0xcddb('0x39')](_0x1663f5['model'],qs[_0xcddb('0x3b')](_0x2cd2e6[_0xcddb('0x36')][_0xcddb('0x3b')]));_0x22223e[_0xcddb('0x3a')]=_0x22223e[_0xcddb('0x3a')]['length']?_0x22223e[_0xcddb('0x3a')]:_0x1663f5[_0xcddb('0x35')];if(_0x2cd2e6['query'][_0xcddb('0x42')]){_0x22223e[_0xcddb('0x43')]=[{'all':!![]}];}_0x22223e=_[_0xcddb('0x4a')]({},_0x22223e,_0x2cd2e6[_0xcddb('0x4b')]);return db[_0xcddb('0x31')]['find'](_0x22223e)[_0xcddb('0x27')](handleEntityNotFound(_0x550abe,null))[_0xcddb('0x27')](function(_0x56a30d){if(_0x56a30d){var _0x27ae96=_0x56a30d[_0xcddb('0x4e')]({'plain':!![]});_0x27ae96=qs[_0xcddb('0x57')](_0x27ae96,['id',_0xcddb('0x58'),_0xcddb('0x59')]);_0x2cd2e6['body']=_[_0xcddb('0x57')](_0x2cd2e6[_0xcddb('0x5a')],['id',_0xcddb('0x58'),_0xcddb('0x59')]);return db['Dashboard']['create'](_[_0xcddb('0x4a')](_0x27ae96,_0x2cd2e6['body']),{'include':_0x2cd2e6[_0xcddb('0x36')]['includeAll']?[{'all':!![]}]:undefined})[_0xcddb('0x27')](function(_0x4b0dae){var _0x254bda=_0x2cd2e6[_0xcddb('0x4d')][_0xcddb('0x4e')]({'plain':!![]});if(!_0x254bda)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x254bda[_0xcddb('0x50')]===_0xcddb('0x4d')){var _0xc3ac99=_0x4b0dae[_0xcddb('0x4e')]({'plain':!![]});var _0x1c5a28=_0xcddb('0x28');return db[_0xcddb('0x51')][_0xcddb('0x52')]({'where':{'name':_0x1c5a28,'userProfileId':_0x254bda[_0xcddb('0x53')]},'raw':!![]})[_0xcddb('0x27')](function(_0x1a31d3){if(_0x1a31d3&&_0x1a31d3[_0xcddb('0x54')]===0x0){return db[_0xcddb('0x29')][_0xcddb('0x4c')]({'name':_0xc3ac99[_0xcddb('0x2e')],'resourceId':_0xc3ac99['id'],'type':_0x1a31d3[_0xcddb('0x2e')],'sectionId':_0x1a31d3['id']},{})[_0xcddb('0x27')](function(){return _0x4b0dae;});}else{return _0x4b0dae;}})[_0xcddb('0x46')](function(_0x4402af){logger[_0xcddb('0x2d')](_0xcddb('0x55'),_0x4402af);throw _0x4402af;});}return _0x4b0dae;});}})[_0xcddb('0x27')](respondWithResult(_0x550abe,0xc9))['catch'](handleError(_0x550abe,null));};exports[_0xcddb('0x5b')]=function(_0x2e649b,_0x276df1){if(_0x2e649b[_0xcddb('0x5a')]['id']){delete _0x2e649b[_0xcddb('0x5a')]['id'];}return db[_0xcddb('0x31')]['find']({'where':{'id':_0x2e649b['params']['id']}})['then'](handleEntityNotFound(_0x276df1,null))['then'](saveUpdates(_0x2e649b[_0xcddb('0x5a')],null))[_0xcddb('0x27')](respondWithResult(_0x276df1,null))[_0xcddb('0x46')](handleError(_0x276df1,null));};exports['destroy']=function(_0x5d2cc5,_0x4aa3ff){return db['Dashboard'][_0xcddb('0x52')]({'where':{'id':_0x5d2cc5[_0xcddb('0x5c')]['id']}})[_0xcddb('0x27')](handleEntityNotFound(_0x4aa3ff,null))['then'](removeEntity(_0x4aa3ff,null))[_0xcddb('0x46')](handleError(_0x4aa3ff,null));};function widgetAttributes(_0x9ac031){try{switch(_0x9ac031[_0xcddb('0x33')]){case _0xcddb('0x5d'):return[{'name':_0xcddb('0x5e'),'value':_0x9ac031[_0xcddb('0x5e')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x0]?_0x9ac031[_0xcddb('0x5f')][0x0][_0xcddb('0x60')]:undefined)||'https://'}];case'custom':return[{'name':_0xcddb('0x61'),'value':_0x9ac031[_0xcddb('0x61')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x0]?_0x9ac031[_0xcddb('0x5f')][0x0][_0xcddb('0x60')]:undefined)||''}];case _0xcddb('0x62'):return[{'name':_0xcddb('0x63'),'value':_0x9ac031[_0xcddb('0x63')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x0]?_0x9ac031['attrs'][0x0][_0xcddb('0x60')]:undefined)||'HH:mm:ss'},{'name':'attrTimezone','value':_0x9ac031['attrTimezone']||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x1]?_0x9ac031[_0xcddb('0x5f')][0x1][_0xcddb('0x60')]:undefined)||_0xcddb('0x64')},{'name':_0xcddb('0x65'),'value':_0x9ac031[_0xcddb('0x65')]||(_0x9ac031['attrs']&&_0x9ac031[_0xcddb('0x5f')][0x2]?_0x9ac031[_0xcddb('0x5f')][0x2]['value']:undefined)||0xc}];case _0xcddb('0x66'):return[{'name':'attrMetric','value':_0x9ac031[_0xcddb('0x67')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x0]?_0x9ac031['attrs'][0x0][_0xcddb('0x60')]:undefined)||_0xcddb('0x68')},{'name':'attrVoiceQueues','value':_0x9ac031[_0xcddb('0x69')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031['attrs'][0x1]?_0x9ac031['attrs'][0x1][_0xcddb('0x60')]:undefined)||[]},{'name':_0xcddb('0x65'),'value':_0x9ac031[_0xcddb('0x65')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x2]?_0x9ac031[_0xcddb('0x5f')][0x2][_0xcddb('0x60')]:undefined)||0x14},{'name':_0xcddb('0x6a'),'value':_0x9ac031[_0xcddb('0x6a')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x3]?_0x9ac031[_0xcddb('0x5f')][0x3][_0xcddb('0x60')]:undefined)||_0xcddb('0x6b')},{'name':_0xcddb('0x6c'),'value':_0x9ac031[_0xcddb('0x6c')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x4]?_0x9ac031['attrs'][0x4][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x6d'),'value':_0x9ac031[_0xcddb('0x6d')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031['attrs'][0x5]?_0x9ac031[_0xcddb('0x5f')][0x5][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x6e'),'value':_0x9ac031['attrSmsAccounts']||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x6]?_0x9ac031[_0xcddb('0x5f')][0x6]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x9ac031[_0xcddb('0x6f')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x7]?_0x9ac031['attrs'][0x7][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x70'),'value':_0x9ac031[_0xcddb('0x70')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x8]?_0x9ac031['attrs'][0x8][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x71'),'value':_0x9ac031['attrChatWebsites']||(_0x9ac031['attrs']&&_0x9ac031[_0xcddb('0x5f')][0x9]?_0x9ac031[_0xcddb('0x5f')][0x9][_0xcddb('0x60')]:undefined)||''}];case _0xcddb('0x72'):case'pie-chart':return[{'name':_0xcddb('0x73'),'value':_0x9ac031['attrSerie1']||(_0x9ac031['attrs']&&_0x9ac031[_0xcddb('0x5f')][0x0]?_0x9ac031[_0xcddb('0x5f')][0x0][_0xcddb('0x60')]:undefined)||_0xcddb('0x68')},{'name':'attrSerie2','value':_0x9ac031[_0xcddb('0x74')]||(_0x9ac031['attrs']&&_0x9ac031['attrs'][0x1]?_0x9ac031[_0xcddb('0x5f')][0x1][_0xcddb('0x60')]:undefined)||null},{'name':_0xcddb('0x75'),'value':_0x9ac031[_0xcddb('0x75')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031['attrs'][0x2]?_0x9ac031[_0xcddb('0x5f')][0x2][_0xcddb('0x60')]:undefined)||null},{'name':_0xcddb('0x69'),'value':_0x9ac031[_0xcddb('0x69')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x3]?_0x9ac031['attrs'][0x3]['value']:undefined)||[]},{'name':_0xcddb('0x6a'),'value':_0x9ac031[_0xcddb('0x6a')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x4]?_0x9ac031['attrs'][0x4][_0xcddb('0x60')]:undefined)||'voice'},{'name':_0xcddb('0x6c'),'value':_0x9ac031[_0xcddb('0x6c')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x5]?_0x9ac031['attrs'][0x5]['value']:undefined)||''},{'name':_0xcddb('0x6d'),'value':_0x9ac031[_0xcddb('0x6d')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031['attrs'][0x6]?_0x9ac031[_0xcddb('0x5f')][0x6][_0xcddb('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x9ac031['attrSmsAccounts']||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x7]?_0x9ac031[_0xcddb('0x5f')][0x7][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x6f'),'value':_0x9ac031[_0xcddb('0x6f')]||(_0x9ac031['attrs']&&_0x9ac031['attrs'][0x8]?_0x9ac031[_0xcddb('0x5f')][0x8]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x9ac031[_0xcddb('0x70')]||(_0x9ac031['attrs']&&_0x9ac031['attrs'][0x9]?_0x9ac031[_0xcddb('0x5f')][0x9][_0xcddb('0x60')]:undefined)||''},{'name':_0xcddb('0x71'),'value':_0x9ac031[_0xcddb('0x71')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0xa]?_0x9ac031[_0xcddb('0x5f')][0xa][_0xcddb('0x60')]:undefined)||''}];case _0xcddb('0x76'):return[{'name':_0xcddb('0x77'),'type':_0x9ac031[_0xcddb('0x78')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031['attrs'][0x0]?_0x9ac031['attrs'][0x0][_0xcddb('0x33')]:undefined)||null,'value':_0x9ac031['attrReport']||(_0x9ac031['attrs']&&_0x9ac031['attrs'][0x0]?_0x9ac031['attrs'][0x0][_0xcddb('0x60')]:undefined)||null},{'name':_0xcddb('0x79'),'value':_0x9ac031[_0xcddb('0x79')]||(_0x9ac031[_0xcddb('0x5f')]&&_0x9ac031[_0xcddb('0x5f')][0x1]?_0x9ac031['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4e6140){logger['error'](_0xcddb('0x7a'),JSON[_0xcddb('0x7b')](_0x4e6140));return[];}}exports['addItem']=function(_0x37f3fd,_0x58d60c,_0x8e96f){if(_0x37f3fd[_0xcddb('0x5a')]['id']){delete _0x37f3fd[_0xcddb('0x5a')]['id'];}return db[_0xcddb('0x31')]['find']({'where':{'id':_0x37f3fd[_0xcddb('0x5c')]['id']}})[_0xcddb('0x27')](handleEntityNotFound(_0x58d60c,null))[_0xcddb('0x27')](function(_0xbd7a90){if(_0xbd7a90){_0x37f3fd[_0xcddb('0x5a')][_0xcddb('0x7c')]=_0xbd7a90['id'];_0x37f3fd['body'][_0xcddb('0x5f')]=widgetAttributes(_0x37f3fd[_0xcddb('0x5a')]);return db[_0xcddb('0x7d')][_0xcddb('0x4c')](_0x37f3fd[_0xcddb('0x5a')]);}})[_0xcddb('0x27')](respondWithResult(_0x58d60c,null))[_0xcddb('0x46')](handleError(_0x58d60c,null));};exports[_0xcddb('0x7e')]=function(_0x8f70ca,_0x365cda,_0x4f2d32){var _0x2038fc={};var _0x3c0e6b={};var _0x690b9e;var _0x4d2130;return db['Dashboard'][_0xcddb('0x7f')]({'where':{'id':_0x8f70ca[_0xcddb('0x5c')]['id']}})[_0xcddb('0x27')](handleEntityNotFound(_0x365cda,null))[_0xcddb('0x27')](function(_0x31212b){if(_0x31212b){_0x690b9e=_0x31212b;_0x3c0e6b[_0xcddb('0x35')]=_['keys'](db[_0xcddb('0x7d')][_0xcddb('0x48')]);_0x3c0e6b[_0xcddb('0x36')]=_[_0xcddb('0x37')](_0x8f70ca['query']);_0x3c0e6b['filters']=_[_0xcddb('0x39')](_0x3c0e6b['model'],_0x3c0e6b[_0xcddb('0x36')]);_0x2038fc[_0xcddb('0x3a')]=_[_0xcddb('0x39')](_0x3c0e6b[_0xcddb('0x35')],qs[_0xcddb('0x3b')](_0x8f70ca[_0xcddb('0x36')][_0xcddb('0x3b')]));_0x2038fc[_0xcddb('0x3a')]=_0x2038fc[_0xcddb('0x3a')][_0xcddb('0x49')]?_0x2038fc[_0xcddb('0x3a')]:_0x3c0e6b[_0xcddb('0x35')];_0x2038fc['order']=qs[_0xcddb('0x3e')](_0x8f70ca['query'][_0xcddb('0x3e')]);_0x2038fc[_0xcddb('0x41')]=qs[_0xcddb('0x38')](_[_0xcddb('0x3f')](_0x8f70ca['query'],_0x3c0e6b[_0xcddb('0x38')]));if(_0x8f70ca['query'][_0xcddb('0x40')]){_0x2038fc['where']=_['merge'](_0x2038fc[_0xcddb('0x41')],{'$or':_[_0xcddb('0x30')](_0x2038fc['attributes'],function(_0x5bae21){var _0x5d09f5={};_0x5d09f5[_0x5bae21]={'$like':'%'+_0x8f70ca[_0xcddb('0x36')]['filter']+'%'};return _0x5d09f5;})});}_0x2038fc=_[_0xcddb('0x4a')]({},_0x2038fc,_0x8f70ca[_0xcddb('0x4b')]);return _0x690b9e[_0xcddb('0x7e')](_0x2038fc);}})['then'](function(_0x17559a){if(_0x17559a){_0x4d2130=_0x17559a[_0xcddb('0x49')];if(!_0x8f70ca[_0xcddb('0x36')][_0xcddb('0x3c')](_0xcddb('0x80'))){_0x2038fc['limit']=qs[_0xcddb('0x21')](_0x8f70ca[_0xcddb('0x36')]['limit']);_0x2038fc[_0xcddb('0x1f')]=qs[_0xcddb('0x1f')](_0x8f70ca[_0xcddb('0x36')][_0xcddb('0x1f')]);}return _0x690b9e[_0xcddb('0x7e')](_0x2038fc);}})['then'](function(_0xf83bb1){if(_0xf83bb1){return _0xf83bb1?{'count':_0x4d2130,'rows':_0xf83bb1}:null;}})['then'](respondWithResult(_0x365cda,null))[_0xcddb('0x46')](handleError(_0x365cda,null));};
\ No newline at end of file
index 2eaa118..5e765d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef5=['hook','exports','events','../../mysqldb','Dashboard','setMaxListeners','save','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ef5,0xc2));var _0x50ef=function(_0x12f226,_0x461776){_0x12f226=_0x12f226-0x0;var _0x42151f=_0x0ef5[_0x12f226];return _0x42151f;};'use strict';var EventEmitter=require(_0x50ef('0x0'));var Dashboard=require(_0x50ef('0x1'))['db'][_0x50ef('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x50ef('0x3')](0x0);var events={'afterCreate':_0x50ef('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5489c){return function(_0x4d72d1,_0x16a209,_0x4fc9ed){DashboardEvents[_0x50ef('0x5')](_0x5489c+':'+_0x4d72d1['id'],_0x4d72d1);DashboardEvents[_0x50ef('0x5')](_0x5489c,_0x4d72d1);_0x4fc9ed(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x50ef('0x6')](e,emitEvent(event));}}module[_0x50ef('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0xbb36=['exports','events','../../mysqldb','Dashboard','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x3d3590,_0x23bd12){var _0x1348ff=function(_0x26a61a){while(--_0x26a61a){_0x3d3590['push'](_0x3d3590['shift']());}};_0x1348ff(++_0x23bd12);}(_0xbb36,0x105));var _0x6bb3=function(_0x1ba76a,_0x56fe36){_0x1ba76a=_0x1ba76a-0x0;var _0x34b474=_0xbb36[_0x1ba76a];return _0x34b474;};'use strict';var EventEmitter=require(_0x6bb3('0x0'));var Dashboard=require(_0x6bb3('0x1'))['db'][_0x6bb3('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6bb3('0x3'),'afterUpdate':_0x6bb3('0x4'),'afterDestroy':_0x6bb3('0x5')};function emitEvent(_0x4806f0){return function(_0x1081fc,_0x1b753d,_0x10da1e){DashboardEvents[_0x6bb3('0x6')](_0x4806f0+':'+_0x1081fc['id'],_0x1081fc);DashboardEvents[_0x6bb3('0x6')](_0x4806f0,_0x1081fc);_0x10da1e(null);};}for(var e in events){if(events[_0x6bb3('0x7')](e)){var event=events[e];Dashboard[_0x6bb3('0x8')](e,emitEvent(event));}}module[_0x6bb3('0x9')]=DashboardEvents;
\ No newline at end of file
index 4c43b35..65e3f9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['define','dashboards','lodash','util','api','moment','path','./dashboard.attributes'];(function(_0x3108b7,_0x45621c){var _0x367e8b=function(_0x3ac969){while(--_0x3ac969){_0x3108b7['push'](_0x3108b7['shift']());}};_0x367e8b(++_0x45621c);}(_0x6075,0x142));var _0x5607=function(_0x7539b6,_0x386a6e){_0x7539b6=_0x7539b6-0x0;var _0x34d8c8=_0x6075[_0x7539b6];return _0x34d8c8;};'use strict';var _=require(_0x5607('0x0'));var util=require(_0x5607('0x1'));var logger=require('../../config/logger')(_0x5607('0x2'));var moment=require(_0x5607('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5607('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5607('0x5'));module['exports']=function(_0x2d42d4,_0x4bb34a){return _0x2d42d4[_0x5607('0x6')]('Dashboard',attributes,{'tableName':_0x5607('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaae6=['exports','define','Dashboard','dashboards','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xc58c37,_0x26c0c8){var _0x7dcf67=function(_0x27859f){while(--_0x27859f){_0xc58c37['push'](_0xc58c37['shift']());}};_0x7dcf67(++_0x26c0c8);}(_0xaae6,0x17a));var _0x6aae=function(_0x12f309,_0x28bf43){_0x12f309=_0x12f309-0x0;var _0x351b8a=_0xaae6[_0x12f309];return _0x351b8a;};'use strict';var _=require(_0x6aae('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6aae('0x1'));var moment=require('moment');var BPromise=require(_0x6aae('0x2'));var rp=require(_0x6aae('0x3'));var fs=require('fs');var path=require(_0x6aae('0x4'));var rimraf=require(_0x6aae('0x5'));var config=require(_0x6aae('0x6'));var attributes=require('./dashboard.attributes');module[_0x6aae('0x7')]=function(_0x2c7ab7,_0x4875c1){return _0x2c7ab7[_0x6aae('0x8')](_0x6aae('0x9'),attributes,{'tableName':_0x6aae('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b61906..22d048d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ec5=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','util','bluebird'];(function(_0x326a44,_0x41c393){var _0x218e10=function(_0x4ef0a6){while(--_0x4ef0a6){_0x326a44['push'](_0x326a44['shift']());}};_0x218e10(++_0x41c393);}(_0x4ec5,0x1eb));var _0x54ec=function(_0x617bee,_0x560e70){_0x617bee=_0x617bee-0x0;var _0x575fcb=_0x4ec5[_0x617bee];return _0x575fcb;};'use strict';var _=require(_0x54ec('0x0'));var util=require(_0x54ec('0x1'));var moment=require('moment');var BPromise=require(_0x54ec('0x2'));var rs=require(_0x54ec('0x3'));var fs=require('fs');var Redis=require(_0x54ec('0x4'));var db=require(_0x54ec('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x54ec('0x6'))(_0x54ec('0x7'));var config=require(_0x54ec('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x54ec('0x9')][_0x54ec('0xa')]({'port':0x232a});config[_0x54ec('0xb')]=_[_0x54ec('0xc')](config[_0x54ec('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x54ec('0xd'))(new Redis(config[_0x54ec('0xb')]));require(_0x54ec('0xe'))[_0x54ec('0xf')](socket);function respondWithRpcPromise(_0x17e3d1,_0x591fae,_0x5d0170){return new BPromise(function(_0x3ab175,_0x37b495){return client[_0x54ec('0x10')](_0x17e3d1,_0x5d0170)[_0x54ec('0x11')](function(_0x57c938){logger[_0x54ec('0x12')](_0x54ec('0x13'),_0x591fae,_0x54ec('0x14'));logger[_0x54ec('0x15')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x591fae,_0x54ec('0x14'),JSON[_0x54ec('0x16')](_0x57c938));if(_0x57c938[_0x54ec('0x17')]){if(_0x57c938[_0x54ec('0x17')]['code']===0x1f4){logger['error'](_0x54ec('0x13'),_0x591fae,_0x57c938[_0x54ec('0x17')][_0x54ec('0x18')]);return _0x37b495(_0x57c938[_0x54ec('0x17')][_0x54ec('0x18')]);}logger[_0x54ec('0x17')](_0x54ec('0x13'),_0x591fae,_0x57c938['error']['message']);return _0x3ab175(_0x57c938[_0x54ec('0x17')][_0x54ec('0x18')]);}else{logger[_0x54ec('0x12')](_0x54ec('0x13'),_0x591fae,_0x54ec('0x14'));_0x3ab175(_0x57c938[_0x54ec('0x19')][_0x54ec('0x18')]);}})['catch'](function(_0x366e17){logger['error']('Dashboard,\x20%s,\x20%s',_0x591fae,_0x366e17);_0x37b495(_0x366e17);});});}
\ No newline at end of file
+var _0x0a50=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','./dashboard.socket','register','request','then','info','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message'];(function(_0x4f432b,_0x1763ae){var _0x890eb4=function(_0x3125be){while(--_0x3125be){_0x4f432b['push'](_0x4f432b['shift']());}};_0x890eb4(++_0x1763ae);}(_0x0a50,0x154));var _0x00a5=function(_0x3a136b,_0x2080d7){_0x3a136b=_0x3a136b-0x0;var _0x4fdf25=_0x0a50[_0x3a136b];return _0x4fdf25;};'use strict';var _=require(_0x00a5('0x0'));var util=require(_0x00a5('0x1'));var moment=require('moment');var BPromise=require(_0x00a5('0x2'));var rs=require(_0x00a5('0x3'));var fs=require('fs');var Redis=require(_0x00a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x00a5('0x5'));var logger=require(_0x00a5('0x6'))(_0x00a5('0x7'));var config=require(_0x00a5('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x00a5('0x9')]({'port':0x232a});config[_0x00a5('0xa')]=_['defaults'](config[_0x00a5('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x00a5('0xa')]));require(_0x00a5('0xb'))[_0x00a5('0xc')](socket);function respondWithRpcPromise(_0xe9e80a,_0x4048ca,_0x16c509){return new BPromise(function(_0x226d48,_0x4a4ccf){return client[_0x00a5('0xd')](_0xe9e80a,_0x16c509)[_0x00a5('0xe')](function(_0x23f1ca){logger[_0x00a5('0xf')]('Dashboard,\x20%s,\x20%s',_0x4048ca,_0x00a5('0x10'));logger[_0x00a5('0x11')](_0x00a5('0x12'),_0x4048ca,'request\x20sent',JSON[_0x00a5('0x13')](_0x23f1ca));if(_0x23f1ca[_0x00a5('0x14')]){if(_0x23f1ca[_0x00a5('0x14')][_0x00a5('0x15')]===0x1f4){logger[_0x00a5('0x14')](_0x00a5('0x16'),_0x4048ca,_0x23f1ca[_0x00a5('0x14')][_0x00a5('0x17')]);return _0x4a4ccf(_0x23f1ca[_0x00a5('0x14')][_0x00a5('0x17')]);}logger[_0x00a5('0x14')](_0x00a5('0x16'),_0x4048ca,_0x23f1ca['error'][_0x00a5('0x17')]);return _0x226d48(_0x23f1ca['error'][_0x00a5('0x17')]);}else{logger['info'](_0x00a5('0x16'),_0x4048ca,_0x00a5('0x10'));_0x226d48(_0x23f1ca[_0x00a5('0x18')][_0x00a5('0x17')]);}})[_0x00a5('0x19')](function(_0x2f5d8f){logger[_0x00a5('0x14')](_0x00a5('0x16'),_0x4048ca,_0x2f5d8f);_0x4a4ccf(_0x2f5d8f);});});}
\ No newline at end of file
index f928041..6ff2a2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd91b=['remove','update','emit','removeListener','register','dashboard:','./dashboard.events','save'];(function(_0x5f3644,_0x3649c7){var _0x522455=function(_0x190e6e){while(--_0x190e6e){_0x5f3644['push'](_0x5f3644['shift']());}};_0x522455(++_0x3649c7);}(_0xd91b,0x13e));var _0xbd91=function(_0x4821cf,_0x4ef354){_0x4821cf=_0x4821cf-0x0;var _0x5df1f4=_0xd91b[_0x4821cf];return _0x5df1f4;};'use strict';var DashboardEvents=require(_0xbd91('0x0'));var events=[_0xbd91('0x1'),_0xbd91('0x2'),_0xbd91('0x3')];function createListener(_0x33325e,_0x471f67){return function(_0x2c4b88){_0x471f67[_0xbd91('0x4')](_0x33325e,_0x2c4b88);};}function removeListener(_0x22af03,_0x2be00b){return function(){DashboardEvents[_0xbd91('0x5')](_0x22af03,_0x2be00b);};}exports[_0xbd91('0x6')]=function(_0x160ec2){for(var _0x5867cf=0x0,_0x24afd5=events['length'];_0x5867cf<_0x24afd5;_0x5867cf++){var _0x2cb1fd=events[_0x5867cf];var _0x23619a=createListener(_0xbd91('0x7')+_0x2cb1fd,_0x160ec2);DashboardEvents['on'](_0x2cb1fd,_0x23619a);}};
\ No newline at end of file
+var _0x6750=['length','dashboard:','save','remove','update','emit'];(function(_0x5f7cb2,_0x4d564d){var _0xa868d7=function(_0x57ff6f){while(--_0x57ff6f){_0x5f7cb2['push'](_0x5f7cb2['shift']());}};_0xa868d7(++_0x4d564d);}(_0x6750,0x10a));var _0x0675=function(_0x417bbf,_0xb55c9f){_0x417bbf=_0x417bbf-0x0;var _0x464378=_0x6750[_0x417bbf];return _0x464378;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x0675('0x0'),_0x0675('0x1'),_0x0675('0x2')];function createListener(_0x31f64e,_0x28736c){return function(_0x18d1ce){_0x28736c[_0x0675('0x3')](_0x31f64e,_0x18d1ce);};}function removeListener(_0x2632d1,_0xb219bb){return function(){DashboardEvents['removeListener'](_0x2632d1,_0xb219bb);};}exports['register']=function(_0x16fcf6){for(var _0x4fb3af=0x0,_0x3a870d=events[_0x0675('0x4')];_0x4fb3af<_0x3a870d;_0x4fb3af++){var _0x2c7433=events[_0x4fb3af];var _0x584a00=createListener(_0x0675('0x5')+_0x2c7433,_0x16fcf6);DashboardEvents['on'](_0x2c7433,_0x584a00);}};
\ No newline at end of file
index b066c27..0e9f6e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa638=['./dashboard.controller','get','isAuthenticated','index','/:id','/:id/items','getItems','post','create','/:id/clone','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x571cfb,_0x1f073a){var _0x53da54=function(_0x5f1d43){while(--_0x5f1d43){_0x571cfb['push'](_0x571cfb['shift']());}};_0x53da54(++_0x1f073a);}(_0xa638,0x196));var _0x8a63=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xa638[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0x8a63('0x0'));var util=require(_0x8a63('0x1'));var path=require(_0x8a63('0x2'));var timeout=require(_0x8a63('0x3'));var express=require(_0x8a63('0x4'));var router=express[_0x8a63('0x5')]();var fs_extra=require(_0x8a63('0x6'));var auth=require(_0x8a63('0x7'));var interaction=require(_0x8a63('0x8'));var config=require(_0x8a63('0x9'));var controller=require(_0x8a63('0xa'));router[_0x8a63('0xb')]('/',auth[_0x8a63('0xc')](),controller[_0x8a63('0xd')]);router['get'](_0x8a63('0xe'),auth[_0x8a63('0xc')](),controller['show']);router[_0x8a63('0xb')](_0x8a63('0xf'),auth[_0x8a63('0xc')](),controller[_0x8a63('0x10')]);router[_0x8a63('0x11')]('/',auth['isAuthenticated'](),controller[_0x8a63('0x12')]);router[_0x8a63('0x11')](_0x8a63('0x13'),auth['isAuthenticated'](),controller[_0x8a63('0x14')]);router[_0x8a63('0x11')]('/:id/items',auth['isAuthenticated'](),controller['addItem']);router[_0x8a63('0x15')](_0x8a63('0xe'),auth[_0x8a63('0xc')](),controller[_0x8a63('0x16')]);router[_0x8a63('0x17')](_0x8a63('0xe'),auth[_0x8a63('0xc')](),controller[_0x8a63('0x18')]);module[_0x8a63('0x19')]=router;
\ No newline at end of file
+var _0xd035=['get','index','/:id','isAuthenticated','/:id/items','getItems','post','create','addItem','update','delete','destroy','exports','util','connect-timeout','fs-extra','../../components/interaction/service','./dashboard.controller'];(function(_0x490893,_0x30e994){var _0x32f3ac=function(_0x21076c){while(--_0x21076c){_0x490893['push'](_0x490893['shift']());}};_0x32f3ac(++_0x30e994);}(_0xd035,0x151));var _0x5d03=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0xd035[_0x41c381];return _0x427981;};'use strict';var multer=require('multer');var util=require(_0x5d03('0x0'));var path=require('path');var timeout=require(_0x5d03('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5d03('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x5d03('0x3'));var config=require('../../config/environment');var controller=require(_0x5d03('0x4'));router[_0x5d03('0x5')]('/',auth['isAuthenticated'](),controller[_0x5d03('0x6')]);router[_0x5d03('0x5')](_0x5d03('0x7'),auth[_0x5d03('0x8')](),controller['show']);router[_0x5d03('0x5')](_0x5d03('0x9'),auth[_0x5d03('0x8')](),controller[_0x5d03('0xa')]);router[_0x5d03('0xb')]('/',auth[_0x5d03('0x8')](),controller[_0x5d03('0xc')]);router[_0x5d03('0xb')]('/:id/clone',auth[_0x5d03('0x8')](),controller['clone']);router[_0x5d03('0xb')](_0x5d03('0x9'),auth[_0x5d03('0x8')](),controller[_0x5d03('0xd')]);router['put'](_0x5d03('0x7'),auth[_0x5d03('0x8')](),controller[_0x5d03('0xe')]);router[_0x5d03('0xf')]('/:id',auth[_0x5d03('0x8')](),controller[_0x5d03('0x10')]);module[_0x5d03('0x11')]=router;
\ No newline at end of file
index cda644b..6185c94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['setDataValue','INTEGER','sequelize','exports','STRING','TEXT','long','parse','getDataValue','attrs','stringify'];(function(_0x55e3c0,_0x338418){var _0x119300=function(_0x215af2){while(--_0x215af2){_0x55e3c0['push'](_0x55e3c0['shift']());}};_0x119300(++_0x338418);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xee2f('0x0'));var squel=require('squel');var _=require('lodash');module[_0xee2f('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xee2f('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xee2f('0x3')](_0xee2f('0x4')),'get':function(){try{return JSON[_0xee2f('0x5')](this[_0xee2f('0x6')]('attrs'));}catch(_0x311a2f){return[];}},'set':function(_0x2b7e7c){try{this['setDataValue'](_0xee2f('0x7'),JSON[_0xee2f('0x8')](_0x2b7e7c));}catch(_0x5a7975){this[_0xee2f('0x9')]('attrs',JSON[_0xee2f('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0xee2f('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xee2f('0xa')]},'col':{'type':Sequelize[_0xee2f('0xa')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xee2f('0x2')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0xda19=['TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','squel','lodash','STRING'];(function(_0x3e2fcf,_0x579110){var _0x497db7=function(_0x2f713d){while(--_0x2f713d){_0x3e2fcf['push'](_0x3e2fcf['shift']());}};_0x497db7(++_0x579110);}(_0xda19,0xd5));var _0x9da1=function(_0x29ad48,_0x24f5bf){_0x29ad48=_0x29ad48-0x0;var _0x5256cf=_0xda19[_0x29ad48];return _0x5256cf;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x9da1('0x0'));var _=require(_0x9da1('0x1'));module['exports']={'title':{'type':Sequelize[_0x9da1('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x9da1('0x3')]('long'),'get':function(){try{return JSON[_0x9da1('0x4')](this[_0x9da1('0x5')](_0x9da1('0x6')));}catch(_0x470043){return[];}},'set':function(_0x156faf){try{this[_0x9da1('0x7')](_0x9da1('0x6'),JSON[_0x9da1('0x8')](_0x156faf));}catch(_0x1c24e6){this[_0x9da1('0x7')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x9da1('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x9da1('0x9')]},'background':{'type':Sequelize[_0x9da1('0x2')],'allowNull':![],'defaultValue':_0x9da1('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x9da1('0x2')],'allowNull':![],'defaultValue':_0x9da1('0xb'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x9da1('0x2')]},'titleFontSize':{'type':Sequelize[_0x9da1('0x9')],'defaultValue':0xc}};
\ No newline at end of file
index c6fd49d..33f6340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4813=['rawAttributes','query','filters','intersection','attributes','fields','include','merge','options','find','params','catch','type','attrUrl','attrs','https://','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrFontSize','attrMetric','attrVoiceQueues','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','total','attrSerie2','attrSerie3','attrChannel','voice','attrOpenchannelAccounts','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','body','create','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','end','limit','undefined','offset','count','set','Content-Range','json','apply','reject','save','then','destroy','status','error','name','show','model','keys','DashboardItem'];(function(_0x2416b3,_0x42557d){var _0x5234fc=function(_0x2c539e){while(--_0x2c539e){_0x2416b3['push'](_0x2416b3['shift']());}};_0x5234fc(++_0x42557d);}(_0x4813,0x14e));var _0x3481=function(_0x34d0c0,_0x271c08){_0x34d0c0=_0x34d0c0-0x0;var _0x12ca33=_0x4813[_0x34d0c0];return _0x12ca33;};'use strict';var emlformat=require(_0x3481('0x0'));var rimraf=require(_0x3481('0x1'));var zipdir=require(_0x3481('0x2'));var jsonpatch=require(_0x3481('0x3'));var rp=require(_0x3481('0x4'));var moment=require(_0x3481('0x5'));var BPromise=require(_0x3481('0x6'));var Mustache=require('mustache');var util=require(_0x3481('0x7'));var path=require(_0x3481('0x8'));var sox=require(_0x3481('0x9'));var csv=require(_0x3481('0xa'));var ejs=require(_0x3481('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3481('0xc'));var crypto=require('crypto');var jsforce=require(_0x3481('0xd'));var deskjs=require(_0x3481('0xe'));var toCsv=require(_0x3481('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3481('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3481('0x10'));var logger=require(_0x3481('0x11'))(_0x3481('0x12'));var utils=require(_0x3481('0x13'));var config=require(_0x3481('0x14'));var licenseUtil=require(_0x3481('0x15'));var db=require(_0x3481('0x16'))['db'];config[_0x3481('0x17')]=_[_0x3481('0x18')](config[_0x3481('0x17')],{'host':_0x3481('0x19'),'port':0x18eb});var socket=require(_0x3481('0x1a'))(new Redis(config['redis']));require(_0x3481('0x1b'))[_0x3481('0x1c')](socket);function respondWithStatusCode(_0x1bcfad,_0x3f5ef5){_0x3f5ef5=_0x3f5ef5||0xcc;return function(_0x6f1c9f){if(_0x6f1c9f){return _0x1bcfad[_0x3481('0x1d')](_0x3f5ef5);}return _0x1bcfad['status'](_0x3f5ef5)[_0x3481('0x1e')]();};}function respondWithResult(_0x41c2aa,_0x48cd2f){_0x48cd2f=_0x48cd2f||0xc8;return function(_0x4e0f68){if(_0x4e0f68){return _0x41c2aa['status'](_0x48cd2f)['json'](_0x4e0f68);}};}function respondWithFilteredResult(_0x4f5d1b,_0x5f158f){return function(_0x32a315){if(_0x32a315){var _0x35a12b=typeof _0x5f158f['offset']==='undefined'&&typeof _0x5f158f[_0x3481('0x1f')]===_0x3481('0x20');var _0x3b43dc=_0x32a315['count'];var _0x47a669=_0x35a12b?0x0:_0x5f158f[_0x3481('0x21')];var _0x3862eb=_0x35a12b?_0x32a315[_0x3481('0x22')]:_0x5f158f[_0x3481('0x21')]+_0x5f158f[_0x3481('0x1f')];var _0x4469d4;if(_0x3862eb>=_0x3b43dc){_0x3862eb=_0x3b43dc;_0x4469d4=0xc8;}else{_0x4469d4=0xce;}_0x4f5d1b['status'](_0x4469d4);return _0x4f5d1b[_0x3481('0x23')](_0x3481('0x24'),_0x47a669+'-'+_0x3862eb+'/'+_0x3b43dc)[_0x3481('0x25')](_0x32a315);}return null;};}function patchUpdates(_0xea1072){return function(_0x50663d){try{jsonpatch[_0x3481('0x26')](_0x50663d,_0xea1072,!![]);}catch(_0x48eb64){return BPromise[_0x3481('0x27')](_0x48eb64);}return _0x50663d[_0x3481('0x28')]();};}function saveUpdates(_0x418a7d,_0x40f919){return function(_0x5c96b7){if(_0x5c96b7){return _0x5c96b7['update'](_0x418a7d)[_0x3481('0x29')](function(_0x3e5963){return _0x3e5963;});}return null;};}function removeEntity(_0x249754,_0x405816){return function(_0x572418){if(_0x572418){return _0x572418[_0x3481('0x2a')]()[_0x3481('0x29')](function(){_0x249754[_0x3481('0x2b')](0xcc)[_0x3481('0x1e')]();});}};}function handleEntityNotFound(_0xe79636,_0x3942c7){return function(_0xc4a238){if(!_0xc4a238){_0xe79636[_0x3481('0x1d')](0x194);}return _0xc4a238;};}function handleError(_0x136718,_0x1fcfef){_0x1fcfef=_0x1fcfef||0x1f4;return function(_0x4a20d5){logger[_0x3481('0x2c')](_0x4a20d5['stack']);if(_0x4a20d5[_0x3481('0x2d')]){delete _0x4a20d5[_0x3481('0x2d')];}_0x136718[_0x3481('0x2b')](_0x1fcfef)['send'](_0x4a20d5);};}exports[_0x3481('0x2e')]=function(_0x1fa9cc,_0x2df894){var _0x28699f={'raw':![],'where':{'id':_0x1fa9cc['params']['id']}},_0x3e217b={};_0x3e217b[_0x3481('0x2f')]=_[_0x3481('0x30')](db[_0x3481('0x31')][_0x3481('0x32')]);_0x3e217b['query']=_[_0x3481('0x30')](_0x1fa9cc[_0x3481('0x33')]);_0x3e217b[_0x3481('0x34')]=_[_0x3481('0x35')](_0x3e217b[_0x3481('0x2f')],_0x3e217b[_0x3481('0x33')]);_0x28699f[_0x3481('0x36')]=_[_0x3481('0x35')](_0x3e217b['model'],qs[_0x3481('0x37')](_0x1fa9cc[_0x3481('0x33')][_0x3481('0x37')]));_0x28699f['attributes']=_0x28699f[_0x3481('0x36')]['length']?_0x28699f[_0x3481('0x36')]:_0x3e217b['model'];if(_0x1fa9cc[_0x3481('0x33')]['includeAll']){_0x28699f[_0x3481('0x38')]=[{'all':!![]}];}_0x28699f=_[_0x3481('0x39')]({},_0x28699f,_0x1fa9cc[_0x3481('0x3a')]);return db['DashboardItem'][_0x3481('0x3b')](_0x28699f)['then'](handleEntityNotFound(_0x2df894,null))[_0x3481('0x29')](respondWithResult(_0x2df894,null))['catch'](handleError(_0x2df894,null));};exports[_0x3481('0x2a')]=function(_0x3523f6,_0x1fc118){return db[_0x3481('0x31')][_0x3481('0x3b')]({'where':{'id':_0x3523f6[_0x3481('0x3c')]['id']}})[_0x3481('0x29')](handleEntityNotFound(_0x1fc118,null))[_0x3481('0x29')](removeEntity(_0x1fc118,null))[_0x3481('0x3d')](handleError(_0x1fc118,null));};function widgetAttributes(_0x5d1c15){try{switch(_0x5d1c15[_0x3481('0x3e')]){case'iframe':return[{'name':_0x3481('0x3f'),'value':_0x5d1c15[_0x3481('0x3f')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15['attrs'][0x0]['value']:undefined)||_0x3481('0x41')}];case _0x3481('0x42'):return[{'name':_0x3481('0x43'),'value':_0x5d1c15[_0x3481('0x43')]||(_0x5d1c15['attrs']&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15[_0x3481('0x40')][0x0][_0x3481('0x44')]:undefined)||''}];case _0x3481('0x45'):return[{'name':_0x3481('0x46'),'value':_0x5d1c15[_0x3481('0x46')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15['attrs'][0x0]?_0x5d1c15[_0x3481('0x40')][0x0][_0x3481('0x44')]:undefined)||_0x3481('0x47')},{'name':'attrTimezone','value':_0x5d1c15['attrTimezone']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x1]?_0x5d1c15[_0x3481('0x40')][0x1]['value']:undefined)||'0.00'},{'name':_0x3481('0x48'),'value':_0x5d1c15[_0x3481('0x48')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x2]?_0x5d1c15['attrs'][0x2][_0x3481('0x44')]:undefined)||0xc}];case'counter':return[{'name':_0x3481('0x49'),'value':_0x5d1c15[_0x3481('0x49')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15['attrs'][0x0]['value']:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x5d1c15[_0x3481('0x4a')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x1]?_0x5d1c15[_0x3481('0x40')][0x1][_0x3481('0x44')]:undefined)||[]},{'name':_0x3481('0x48'),'value':_0x5d1c15[_0x3481('0x48')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x2]?_0x5d1c15[_0x3481('0x40')][0x2][_0x3481('0x44')]:undefined)||0x14},{'name':'attrChannel','value':_0x5d1c15['attrChannel']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x3]?_0x5d1c15[_0x3481('0x40')][0x3][_0x3481('0x44')]:undefined)||'voice'},{'name':_0x3481('0x4b'),'value':_0x5d1c15['attrEmailAccounts']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x4]?_0x5d1c15[_0x3481('0x40')][0x4][_0x3481('0x44')]:undefined)||''},{'name':_0x3481('0x4c'),'value':_0x5d1c15['attrFaxAccounts']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15['attrs'][0x5]?_0x5d1c15[_0x3481('0x40')][0x5][_0x3481('0x44')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x5d1c15[_0x3481('0x4d')]||(_0x5d1c15['attrs']&&_0x5d1c15[_0x3481('0x40')][0x6]?_0x5d1c15[_0x3481('0x40')][0x6][_0x3481('0x44')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x5d1c15['attrOpenchannelAccounts']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x7]?_0x5d1c15[_0x3481('0x40')][0x7][_0x3481('0x44')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x5d1c15[_0x3481('0x4e')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x8]?_0x5d1c15['attrs'][0x8]['value']:undefined)||''},{'name':_0x3481('0x4f'),'value':_0x5d1c15[_0x3481('0x4f')]||(_0x5d1c15['attrs']&&_0x5d1c15[_0x3481('0x40')][0x9]?_0x5d1c15[_0x3481('0x40')][0x9][_0x3481('0x44')]:undefined)||''}];case _0x3481('0x50'):case _0x3481('0x51'):return[{'name':'attrSerie1','value':_0x5d1c15[_0x3481('0x52')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15['attrs'][0x0][_0x3481('0x44')]:undefined)||_0x3481('0x53')},{'name':_0x3481('0x54'),'value':_0x5d1c15['attrSerie2']||(_0x5d1c15['attrs']&&_0x5d1c15[_0x3481('0x40')][0x1]?_0x5d1c15[_0x3481('0x40')][0x1][_0x3481('0x44')]:undefined)||null},{'name':'attrSerie3','value':_0x5d1c15[_0x3481('0x55')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x2]?_0x5d1c15['attrs'][0x2][_0x3481('0x44')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x5d1c15[_0x3481('0x4a')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15['attrs'][0x3]?_0x5d1c15['attrs'][0x3]['value']:undefined)||[]},{'name':_0x3481('0x56'),'value':_0x5d1c15[_0x3481('0x56')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x4]?_0x5d1c15[_0x3481('0x40')][0x4][_0x3481('0x44')]:undefined)||_0x3481('0x57')},{'name':_0x3481('0x4b'),'value':_0x5d1c15[_0x3481('0x4b')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x5]?_0x5d1c15['attrs'][0x5][_0x3481('0x44')]:undefined)||''},{'name':_0x3481('0x4c'),'value':_0x5d1c15['attrFaxAccounts']||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x6]?_0x5d1c15[_0x3481('0x40')][0x6]['value']:undefined)||''},{'name':_0x3481('0x4d'),'value':_0x5d1c15[_0x3481('0x4d')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x7]?_0x5d1c15['attrs'][0x7][_0x3481('0x44')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x5d1c15[_0x3481('0x58')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15['attrs'][0x8]?_0x5d1c15[_0x3481('0x40')][0x8][_0x3481('0x44')]:undefined)||''},{'name':_0x3481('0x4e'),'value':_0x5d1c15[_0x3481('0x4e')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x9]?_0x5d1c15[_0x3481('0x40')][0x9][_0x3481('0x44')]:undefined)||''},{'name':_0x3481('0x4f'),'value':_0x5d1c15[_0x3481('0x4f')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0xa]?_0x5d1c15[_0x3481('0x40')][0xa][_0x3481('0x44')]:undefined)||''}];case'web-report':return[{'name':_0x3481('0x59'),'type':_0x5d1c15[_0x3481('0x5a')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15['attrs'][0x0][_0x3481('0x3e')]:undefined)||null,'value':_0x5d1c15[_0x3481('0x59')]||(_0x5d1c15['attrs']&&_0x5d1c15[_0x3481('0x40')][0x0]?_0x5d1c15[_0x3481('0x40')][0x0][_0x3481('0x44')]:undefined)||null},{'name':_0x3481('0x5b'),'value':_0x5d1c15[_0x3481('0x5b')]||(_0x5d1c15[_0x3481('0x40')]&&_0x5d1c15[_0x3481('0x40')][0x1]?_0x5d1c15['attrs'][0x1][_0x3481('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x3a2d5d){logger[_0x3481('0x2c')](_0x3481('0x5c'),JSON['stringify'](_0x3a2d5d));return[];}}exports['create']=function(_0x4516d9,_0x24d4eb){if(_0x4516d9[_0x3481('0x5d')]){_0x4516d9[_0x3481('0x5d')][_0x3481('0x40')]=widgetAttributes(_0x4516d9[_0x3481('0x5d')]);}return db['DashboardItem'][_0x3481('0x5e')](_0x4516d9[_0x3481('0x5d')],{})['then'](respondWithResult(_0x24d4eb,0xc9))[_0x3481('0x3d')](handleError(_0x24d4eb,null));};exports[_0x3481('0x5f')]=function(_0x47b61c,_0x3a74db){if(_0x47b61c[_0x3481('0x5d')]['id']){delete _0x47b61c[_0x3481('0x5d')]['id'];}_0x47b61c[_0x3481('0x5d')][_0x3481('0x40')]=widgetAttributes(_0x47b61c[_0x3481('0x5d')]);return db[_0x3481('0x31')][_0x3481('0x3b')]({'where':{'id':_0x47b61c[_0x3481('0x3c')]['id']}})['then'](handleEntityNotFound(_0x3a74db,null))[_0x3481('0x29')](saveUpdates(_0x47b61c['body'],null))['then'](respondWithResult(_0x3a74db,null))[_0x3481('0x3d')](handleError(_0x3a74db,null));};
\ No newline at end of file
+var _0xb091=['localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','DashboardItem','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','total','attrSerie2','web-report','attrReport','reportType','attrRefresh','stringify','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','redis','defaults'];(function(_0x5baa98,_0x9e5c5){var _0x5b8e22=function(_0x503958){while(--_0x503958){_0x5baa98['push'](_0x5baa98['shift']());}};_0x5b8e22(++_0x9e5c5);}(_0xb091,0x16e));var _0x1b09=function(_0x3cd767,_0x12f37e){_0x3cd767=_0x3cd767-0x0;var _0x359a40=_0xb091[_0x3cd767];return _0x359a40;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b09('0x0'));var zipdir=require(_0x1b09('0x1'));var jsonpatch=require(_0x1b09('0x2'));var rp=require(_0x1b09('0x3'));var moment=require('moment');var BPromise=require(_0x1b09('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1b09('0x5'));var sox=require(_0x1b09('0x6'));var csv=require('to-csv');var ejs=require(_0x1b09('0x7'));var fs=require('fs');var fs_extra=require(_0x1b09('0x8'));var _=require(_0x1b09('0x9'));var squel=require('squel');var crypto=require(_0x1b09('0xa'));var jsforce=require(_0x1b09('0xb'));var deskjs=require(_0x1b09('0xc'));var toCsv=require(_0x1b09('0xd'));var querystring=require(_0x1b09('0xe'));var Papa=require(_0x1b09('0xf'));var Redis=require(_0x1b09('0x10'));var authService=require(_0x1b09('0x11'));var qs=require(_0x1b09('0x12'));var as=require(_0x1b09('0x13'));var hardwareService=require(_0x1b09('0x14'));var logger=require('../../config/logger')(_0x1b09('0x15'));var utils=require(_0x1b09('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1b09('0x17'))['db'];config[_0x1b09('0x18')]=_[_0x1b09('0x19')](config[_0x1b09('0x18')],{'host':_0x1b09('0x1a'),'port':0x18eb});var socket=require(_0x1b09('0x1b'))(new Redis(config[_0x1b09('0x18')]));require('./dashboardItem.socket')[_0x1b09('0x1c')](socket);function respondWithStatusCode(_0x515ade,_0x455a8e){_0x455a8e=_0x455a8e||0xcc;return function(_0x27a731){if(_0x27a731){return _0x515ade[_0x1b09('0x1d')](_0x455a8e);}return _0x515ade[_0x1b09('0x1e')](_0x455a8e)[_0x1b09('0x1f')]();};}function respondWithResult(_0x1dc96b,_0x64689a){_0x64689a=_0x64689a||0xc8;return function(_0x33129b){if(_0x33129b){return _0x1dc96b[_0x1b09('0x1e')](_0x64689a)[_0x1b09('0x20')](_0x33129b);}};}function respondWithFilteredResult(_0x311158,_0x231ef6){return function(_0x646575){if(_0x646575){var _0x4c64e1=typeof _0x231ef6[_0x1b09('0x21')]===_0x1b09('0x22')&&typeof _0x231ef6['limit']==='undefined';var _0xe93ac4=_0x646575['count'];var _0x267b5e=_0x4c64e1?0x0:_0x231ef6['offset'];var _0x136697=_0x4c64e1?_0x646575[_0x1b09('0x23')]:_0x231ef6[_0x1b09('0x21')]+_0x231ef6[_0x1b09('0x24')];var _0x29dd70;if(_0x136697>=_0xe93ac4){_0x136697=_0xe93ac4;_0x29dd70=0xc8;}else{_0x29dd70=0xce;}_0x311158[_0x1b09('0x1e')](_0x29dd70);return _0x311158[_0x1b09('0x25')](_0x1b09('0x26'),_0x267b5e+'-'+_0x136697+'/'+_0xe93ac4)['json'](_0x646575);}return null;};}function patchUpdates(_0x5e2806){return function(_0x27f4f5){try{jsonpatch[_0x1b09('0x27')](_0x27f4f5,_0x5e2806,!![]);}catch(_0x4ce7dc){return BPromise[_0x1b09('0x28')](_0x4ce7dc);}return _0x27f4f5[_0x1b09('0x29')]();};}function saveUpdates(_0x6e132c,_0xb22064){return function(_0x5a9677){if(_0x5a9677){return _0x5a9677[_0x1b09('0x2a')](_0x6e132c)[_0x1b09('0x2b')](function(_0x4936d0){return _0x4936d0;});}return null;};}function removeEntity(_0x2d3b86,_0x472d30){return function(_0x4dd3e5){if(_0x4dd3e5){return _0x4dd3e5[_0x1b09('0x2c')]()[_0x1b09('0x2b')](function(){_0x2d3b86[_0x1b09('0x1e')](0xcc)[_0x1b09('0x1f')]();});}};}function handleEntityNotFound(_0x547fbb,_0xb3cf07){return function(_0x3cdbc5){if(!_0x3cdbc5){_0x547fbb['sendStatus'](0x194);}return _0x3cdbc5;};}function handleError(_0x2d1ec0,_0x406748){_0x406748=_0x406748||0x1f4;return function(_0x26befb){logger[_0x1b09('0x2d')](_0x26befb[_0x1b09('0x2e')]);if(_0x26befb[_0x1b09('0x2f')]){delete _0x26befb[_0x1b09('0x2f')];}_0x2d1ec0['status'](_0x406748)[_0x1b09('0x30')](_0x26befb);};}exports[_0x1b09('0x31')]=function(_0x4bf0ad,_0x34d912){var _0x1a6130={'raw':![],'where':{'id':_0x4bf0ad[_0x1b09('0x32')]['id']}},_0x1b98da={};_0x1b98da[_0x1b09('0x33')]=_['keys'](db[_0x1b09('0x34')]['rawAttributes']);_0x1b98da[_0x1b09('0x35')]=_['keys'](_0x4bf0ad[_0x1b09('0x35')]);_0x1b98da[_0x1b09('0x36')]=_[_0x1b09('0x37')](_0x1b98da[_0x1b09('0x33')],_0x1b98da[_0x1b09('0x35')]);_0x1a6130[_0x1b09('0x38')]=_[_0x1b09('0x37')](_0x1b98da[_0x1b09('0x33')],qs[_0x1b09('0x39')](_0x4bf0ad[_0x1b09('0x35')]['fields']));_0x1a6130[_0x1b09('0x38')]=_0x1a6130[_0x1b09('0x38')][_0x1b09('0x3a')]?_0x1a6130['attributes']:_0x1b98da[_0x1b09('0x33')];if(_0x4bf0ad[_0x1b09('0x35')][_0x1b09('0x3b')]){_0x1a6130[_0x1b09('0x3c')]=[{'all':!![]}];}_0x1a6130=_[_0x1b09('0x3d')]({},_0x1a6130,_0x4bf0ad[_0x1b09('0x3e')]);return db[_0x1b09('0x34')][_0x1b09('0x3f')](_0x1a6130)['then'](handleEntityNotFound(_0x34d912,null))[_0x1b09('0x2b')](respondWithResult(_0x34d912,null))['catch'](handleError(_0x34d912,null));};exports[_0x1b09('0x2c')]=function(_0x4e6c6b,_0x3243ee){return db[_0x1b09('0x34')][_0x1b09('0x3f')]({'where':{'id':_0x4e6c6b[_0x1b09('0x32')]['id']}})[_0x1b09('0x2b')](handleEntityNotFound(_0x3243ee,null))[_0x1b09('0x2b')](removeEntity(_0x3243ee,null))[_0x1b09('0x40')](handleError(_0x3243ee,null));};function widgetAttributes(_0x466502){try{switch(_0x466502[_0x1b09('0x41')]){case _0x1b09('0x42'):return[{'name':_0x1b09('0x43'),'value':_0x466502[_0x1b09('0x43')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x0]?_0x466502['attrs'][0x0][_0x1b09('0x45')]:undefined)||_0x1b09('0x46')}];case _0x1b09('0x47'):return[{'name':_0x1b09('0x48'),'value':_0x466502[_0x1b09('0x48')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x0]?_0x466502[_0x1b09('0x44')][0x0]['value']:undefined)||''}];case'clock':return[{'name':_0x1b09('0x49'),'value':_0x466502['attrHourFormat']||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x0]?_0x466502[_0x1b09('0x44')][0x0]['value']:undefined)||_0x1b09('0x4a')},{'name':_0x1b09('0x4b'),'value':_0x466502[_0x1b09('0x4b')]||(_0x466502['attrs']&&_0x466502[_0x1b09('0x44')][0x1]?_0x466502[_0x1b09('0x44')][0x1][_0x1b09('0x45')]:undefined)||_0x1b09('0x4c')},{'name':'attrFontSize','value':_0x466502[_0x1b09('0x4d')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x2]?_0x466502[_0x1b09('0x44')][0x2][_0x1b09('0x45')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x466502['attrMetric']||(_0x466502['attrs']&&_0x466502[_0x1b09('0x44')][0x0]?_0x466502[_0x1b09('0x44')][0x0][_0x1b09('0x45')]:undefined)||'total'},{'name':_0x1b09('0x4e'),'value':_0x466502[_0x1b09('0x4e')]||(_0x466502['attrs']&&_0x466502[_0x1b09('0x44')][0x1]?_0x466502[_0x1b09('0x44')][0x1][_0x1b09('0x45')]:undefined)||[]},{'name':_0x1b09('0x4d'),'value':_0x466502[_0x1b09('0x4d')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x2]?_0x466502[_0x1b09('0x44')][0x2][_0x1b09('0x45')]:undefined)||0x14},{'name':_0x1b09('0x4f'),'value':_0x466502['attrChannel']||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x3]?_0x466502[_0x1b09('0x44')][0x3]['value']:undefined)||_0x1b09('0x50')},{'name':'attrEmailAccounts','value':_0x466502[_0x1b09('0x51')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x4]?_0x466502[_0x1b09('0x44')][0x4][_0x1b09('0x45')]:undefined)||''},{'name':_0x1b09('0x52'),'value':_0x466502[_0x1b09('0x52')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x5]?_0x466502['attrs'][0x5][_0x1b09('0x45')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x466502[_0x1b09('0x53')]||(_0x466502['attrs']&&_0x466502['attrs'][0x6]?_0x466502[_0x1b09('0x44')][0x6][_0x1b09('0x45')]:undefined)||''},{'name':_0x1b09('0x54'),'value':_0x466502[_0x1b09('0x54')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x7]?_0x466502[_0x1b09('0x44')][0x7][_0x1b09('0x45')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x466502[_0x1b09('0x55')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x8]?_0x466502['attrs'][0x8]['value']:undefined)||''},{'name':_0x1b09('0x56'),'value':_0x466502['attrChatWebsites']||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x9]?_0x466502['attrs'][0x9][_0x1b09('0x45')]:undefined)||''}];case _0x1b09('0x57'):case'pie-chart':return[{'name':_0x1b09('0x58'),'value':_0x466502[_0x1b09('0x58')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x0]?_0x466502[_0x1b09('0x44')][0x0]['value']:undefined)||_0x1b09('0x59')},{'name':_0x1b09('0x5a'),'value':_0x466502[_0x1b09('0x5a')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x1]?_0x466502[_0x1b09('0x44')][0x1][_0x1b09('0x45')]:undefined)||null},{'name':'attrSerie3','value':_0x466502['attrSerie3']||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x2]?_0x466502[_0x1b09('0x44')][0x2]['value']:undefined)||null},{'name':_0x1b09('0x4e'),'value':_0x466502[_0x1b09('0x4e')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x3]?_0x466502[_0x1b09('0x44')][0x3][_0x1b09('0x45')]:undefined)||[]},{'name':_0x1b09('0x4f'),'value':_0x466502[_0x1b09('0x4f')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x4]?_0x466502[_0x1b09('0x44')][0x4][_0x1b09('0x45')]:undefined)||_0x1b09('0x50')},{'name':_0x1b09('0x51'),'value':_0x466502[_0x1b09('0x51')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x5]?_0x466502[_0x1b09('0x44')][0x5][_0x1b09('0x45')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x466502['attrFaxAccounts']||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x6]?_0x466502[_0x1b09('0x44')][0x6][_0x1b09('0x45')]:undefined)||''},{'name':_0x1b09('0x53'),'value':_0x466502['attrSmsAccounts']||(_0x466502['attrs']&&_0x466502[_0x1b09('0x44')][0x7]?_0x466502[_0x1b09('0x44')][0x7]['value']:undefined)||''},{'name':_0x1b09('0x54'),'value':_0x466502[_0x1b09('0x54')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x8]?_0x466502[_0x1b09('0x44')][0x8][_0x1b09('0x45')]:undefined)||''},{'name':_0x1b09('0x55'),'value':_0x466502['attrWhatsappAccounts']||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x9]?_0x466502[_0x1b09('0x44')][0x9][_0x1b09('0x45')]:undefined)||''},{'name':_0x1b09('0x56'),'value':_0x466502[_0x1b09('0x56')]||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0xa]?_0x466502[_0x1b09('0x44')][0xa][_0x1b09('0x45')]:undefined)||''}];case _0x1b09('0x5b'):return[{'name':_0x1b09('0x5c'),'type':_0x466502[_0x1b09('0x5d')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x0]?_0x466502['attrs'][0x0][_0x1b09('0x41')]:undefined)||null,'value':_0x466502[_0x1b09('0x5c')]||(_0x466502[_0x1b09('0x44')]&&_0x466502['attrs'][0x0]?_0x466502[_0x1b09('0x44')][0x0][_0x1b09('0x45')]:undefined)||null},{'name':_0x1b09('0x5e'),'value':_0x466502['attrRefresh']||(_0x466502[_0x1b09('0x44')]&&_0x466502[_0x1b09('0x44')][0x1]?_0x466502[_0x1b09('0x44')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1eac19){logger['error']('widgetAttributes:\x20%s',JSON[_0x1b09('0x5f')](_0x1eac19));return[];}}exports[_0x1b09('0x60')]=function(_0x10e809,_0x527f4e){if(_0x10e809[_0x1b09('0x61')]){_0x10e809['body'][_0x1b09('0x44')]=widgetAttributes(_0x10e809[_0x1b09('0x61')]);}return db['DashboardItem'][_0x1b09('0x60')](_0x10e809['body'],{})[_0x1b09('0x2b')](respondWithResult(_0x527f4e,0xc9))[_0x1b09('0x40')](handleError(_0x527f4e,null));};exports['update']=function(_0x1acf31,_0x597a68){if(_0x1acf31[_0x1b09('0x61')]['id']){delete _0x1acf31[_0x1b09('0x61')]['id'];}_0x1acf31[_0x1b09('0x61')][_0x1b09('0x44')]=widgetAttributes(_0x1acf31[_0x1b09('0x61')]);return db['DashboardItem'][_0x1b09('0x3f')]({'where':{'id':_0x1acf31[_0x1b09('0x32')]['id']}})[_0x1b09('0x2b')](handleEntityNotFound(_0x597a68,null))['then'](saveUpdates(_0x1acf31[_0x1b09('0x61')],null))[_0x1b09('0x2b')](respondWithResult(_0x597a68,null))[_0x1b09('0x40')](handleError(_0x597a68,null));};
\ No newline at end of file
index 6a7509a..b463562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce0d=['events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x36e388,_0x5c77b1){var _0x2db659=function(_0x3da28f){while(--_0x3da28f){_0x36e388['push'](_0x36e388['shift']());}};_0x2db659(++_0x5c77b1);}(_0xce0d,0x19a));var _0xdce0=function(_0x6942e0,_0x131e6d){_0x6942e0=_0x6942e0-0x0;var _0xb86490=_0xce0d[_0x6942e0];return _0xb86490;};'use strict';var EventEmitter=require(_0xdce0('0x0'));var DashboardItem=require(_0xdce0('0x1'))['db'][_0xdce0('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xdce0('0x3')](0x0);var events={'afterCreate':_0xdce0('0x4'),'afterUpdate':_0xdce0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x44eee8){return function(_0x90fac8,_0x3d4fc6,_0x294690){DashboardItemEvents['emit'](_0x44eee8+':'+_0x90fac8['id'],_0x90fac8);DashboardItemEvents[_0xdce0('0x6')](_0x44eee8,_0x90fac8);_0x294690(null);};}for(var e in events){if(events[_0xdce0('0x7')](e)){var event=events[e];DashboardItem[_0xdce0('0x8')](e,emitEvent(event));}}module[_0xdce0('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x55f6=['hook','exports','events','../../mysqldb','save','update','emit','hasOwnProperty'];(function(_0x2d6a7e,_0x5074b7){var _0x421e44=function(_0x3b709a){while(--_0x3b709a){_0x2d6a7e['push'](_0x2d6a7e['shift']());}};_0x421e44(++_0x5074b7);}(_0x55f6,0xc2));var _0x655f=function(_0xeea277,_0x56ce7b){_0xeea277=_0xeea277-0x0;var _0x4a84cb=_0x55f6[_0xeea277];return _0x4a84cb;};'use strict';var EventEmitter=require(_0x655f('0x0'));var DashboardItem=require(_0x655f('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x655f('0x2'),'afterUpdate':_0x655f('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1fa024){return function(_0x91a716,_0x4aee1b,_0x20ae78){DashboardItemEvents['emit'](_0x1fa024+':'+_0x91a716['id'],_0x91a716);DashboardItemEvents[_0x655f('0x4')](_0x1fa024,_0x91a716);_0x20ae78(null);};}for(var e in events){if(events[_0x655f('0x5')](e)){var event=events[e];DashboardItem[_0x655f('0x6')](e,emitEvent(event));}}module[_0x655f('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 33d7111..9be0aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5989=['moment','bluebird','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','util','../../config/logger'];(function(_0x4346b9,_0x11609b){var _0x268f93=function(_0xe4f855){while(--_0xe4f855){_0x4346b9['push'](_0x4346b9['shift']());}};_0x268f93(++_0x11609b);}(_0x5989,0x1ae));var _0x9598=function(_0x2dd293,_0x1afb28){_0x2dd293=_0x2dd293-0x0;var _0x43db4e=_0x5989[_0x2dd293];return _0x43db4e;};'use strict';var _=require('lodash');var util=require(_0x9598('0x0'));var logger=require(_0x9598('0x1'))('api');var moment=require(_0x9598('0x2'));var BPromise=require(_0x9598('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9598('0x4'));var rimraf=require(_0x9598('0x5'));var config=require(_0x9598('0x6'));var attributes=require(_0x9598('0x7'));module[_0x9598('0x8')]=function(_0x50087e,_0x2cabbb){return _0x50087e[_0x9598('0x9')](_0x9598('0xa'),attributes,{'tableName':_0x9598('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x83d3=['define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2e3ce8,_0x364e80){var _0x3d6ab=function(_0x3f96ca){while(--_0x3f96ca){_0x2e3ce8['push'](_0x2e3ce8['shift']());}};_0x3d6ab(++_0x364e80);}(_0x83d3,0x17c));var _0x383d=function(_0x3a5648,_0x58054e){_0x3a5648=_0x3a5648-0x0;var _0x34126d=_0x83d3[_0x3a5648];return _0x34126d;};'use strict';var _=require(_0x383d('0x0'));var util=require(_0x383d('0x1'));var logger=require(_0x383d('0x2'))(_0x383d('0x3'));var moment=require(_0x383d('0x4'));var BPromise=require('bluebird');var rp=require(_0x383d('0x5'));var fs=require('fs');var path=require(_0x383d('0x6'));var rimraf=require(_0x383d('0x7'));var config=require(_0x383d('0x8'));var attributes=require('./dashboardItem.attributes');module[_0x383d('0x9')]=function(_0x4f3c10,_0x50eaff){return _0x4f3c10[_0x383d('0xa')](_0x383d('0xb'),attributes,{'tableName':_0x383d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b10980..61521b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb71=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5e3ac7,_0x2b338c){var _0xced72b=function(_0x3cdf7c){while(--_0x3cdf7c){_0x5e3ac7['push'](_0x5e3ac7['shift']());}};_0xced72b(++_0x2b338c);}(_0xcb71,0x1b4));var _0x1cb7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcb71[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1cb7('0x0'));var util=require('util');var moment=require(_0x1cb7('0x1'));var BPromise=require(_0x1cb7('0x2'));var rs=require(_0x1cb7('0x3'));var fs=require('fs');var Redis=require(_0x1cb7('0x4'));var db=require(_0x1cb7('0x5'))['db'];var utils=require(_0x1cb7('0x6'));var logger=require(_0x1cb7('0x7'))(_0x1cb7('0x8'));var config=require(_0x1cb7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1cb7('0xa')]['http']({'port':0x232a});config[_0x1cb7('0xb')]=_['defaults'](config['redis'],{'host':_0x1cb7('0xc'),'port':0x18eb});var socket=require(_0x1cb7('0xd'))(new Redis(config[_0x1cb7('0xb')]));require(_0x1cb7('0xe'))[_0x1cb7('0xf')](socket);function respondWithRpcPromise(_0x42c793,_0x51bbbf,_0x3aa2c7){return new BPromise(function(_0x1b5c9a,_0x2c941e){return client[_0x1cb7('0x10')](_0x42c793,_0x3aa2c7)[_0x1cb7('0x11')](function(_0x5b0657){logger['info'](_0x1cb7('0x12'),_0x51bbbf,_0x1cb7('0x13'));logger[_0x1cb7('0x14')](_0x1cb7('0x15'),_0x51bbbf,_0x1cb7('0x13'),JSON[_0x1cb7('0x16')](_0x5b0657));if(_0x5b0657[_0x1cb7('0x17')]){if(_0x5b0657[_0x1cb7('0x17')]['code']===0x1f4){logger[_0x1cb7('0x17')](_0x1cb7('0x12'),_0x51bbbf,_0x5b0657[_0x1cb7('0x17')][_0x1cb7('0x18')]);return _0x2c941e(_0x5b0657[_0x1cb7('0x17')][_0x1cb7('0x18')]);}logger['error'](_0x1cb7('0x12'),_0x51bbbf,_0x5b0657[_0x1cb7('0x17')][_0x1cb7('0x18')]);return _0x1b5c9a(_0x5b0657[_0x1cb7('0x17')][_0x1cb7('0x18')]);}else{logger['info']('DashboardItem,\x20%s,\x20%s',_0x51bbbf,_0x1cb7('0x13'));_0x1b5c9a(_0x5b0657[_0x1cb7('0x19')][_0x1cb7('0x18')]);}})[_0x1cb7('0x1a')](function(_0x4eb673){logger[_0x1cb7('0x17')]('DashboardItem,\x20%s,\x20%s',_0x51bbbf,_0x4eb673);_0x2c941e(_0x4eb673);});});}
\ No newline at end of file
+var _0x9b1c=['request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','info','DashboardItem,\x20%s,\x20%s','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x495127,_0x233d2d){var _0x306b48=function(_0x5b8b7b){while(--_0x5b8b7b){_0x495127['push'](_0x495127['shift']());}};_0x306b48(++_0x233d2d);}(_0x9b1c,0x1de));var _0xc9b1=function(_0xf4cc73,_0x2580f8){_0xf4cc73=_0xf4cc73-0x0;var _0x102e33=_0x9b1c[_0xf4cc73];return _0x102e33;};'use strict';var _=require(_0xc9b1('0x0'));var util=require(_0xc9b1('0x1'));var moment=require(_0xc9b1('0x2'));var BPromise=require(_0xc9b1('0x3'));var rs=require(_0xc9b1('0x4'));var fs=require('fs');var Redis=require(_0xc9b1('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc9b1('0x6'));var logger=require(_0xc9b1('0x7'))(_0xc9b1('0x8'));var config=require(_0xc9b1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc9b1('0xa')]['http']({'port':0x232a});config[_0xc9b1('0xb')]=_[_0xc9b1('0xc')](config[_0xc9b1('0xb')],{'host':_0xc9b1('0xd'),'port':0x18eb});var socket=require(_0xc9b1('0xe'))(new Redis(config[_0xc9b1('0xb')]));require(_0xc9b1('0xf'))[_0xc9b1('0x10')](socket);function respondWithRpcPromise(_0x3d528,_0x39a2da,_0xda0657){return new BPromise(function(_0x421371,_0xe3d014){return client[_0xc9b1('0x11')](_0x3d528,_0xda0657)['then'](function(_0x2a4492){logger[_0xc9b1('0x12')](_0xc9b1('0x13'),_0x39a2da,'request\x20sent');logger[_0xc9b1('0x14')](_0xc9b1('0x15'),_0x39a2da,'request\x20sent',JSON[_0xc9b1('0x16')](_0x2a4492));if(_0x2a4492['error']){if(_0x2a4492[_0xc9b1('0x17')][_0xc9b1('0x18')]===0x1f4){logger['error'](_0xc9b1('0x13'),_0x39a2da,_0x2a4492[_0xc9b1('0x17')][_0xc9b1('0x19')]);return _0xe3d014(_0x2a4492[_0xc9b1('0x17')][_0xc9b1('0x19')]);}logger[_0xc9b1('0x17')]('DashboardItem,\x20%s,\x20%s',_0x39a2da,_0x2a4492['error'][_0xc9b1('0x19')]);return _0x421371(_0x2a4492[_0xc9b1('0x17')][_0xc9b1('0x19')]);}else{logger[_0xc9b1('0x12')](_0xc9b1('0x13'),_0x39a2da,_0xc9b1('0x1a'));_0x421371(_0x2a4492['result'][_0xc9b1('0x19')]);}})[_0xc9b1('0x1b')](function(_0x11e9f2){logger['error'](_0xc9b1('0x13'),_0x39a2da,_0x11e9f2);_0xe3d014(_0x11e9f2);});});}
\ No newline at end of file
index 0d3fb27..0df5705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6765=['removeListener','register','length','./dashboardItem.events','save','update','emit'];(function(_0x1dba8a,_0x276e8c){var _0xbef448=function(_0x265bb7){while(--_0x265bb7){_0x1dba8a['push'](_0x1dba8a['shift']());}};_0xbef448(++_0x276e8c);}(_0x6765,0x1e6));var _0x5676=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x6765[_0x139a3c];return _0x2b375b;};'use strict';var DashboardItemEvents=require(_0x5676('0x0'));var events=[_0x5676('0x1'),'remove',_0x5676('0x2')];function createListener(_0x2aa207,_0x48b728){return function(_0x2da640){_0x48b728[_0x5676('0x3')](_0x2aa207,_0x2da640);};}function removeListener(_0x2354db,_0x306580){return function(){DashboardItemEvents[_0x5676('0x4')](_0x2354db,_0x306580);};}exports[_0x5676('0x5')]=function(_0x42cf81){for(var _0x3ce19e=0x0,_0x8d44ce=events[_0x5676('0x6')];_0x3ce19e<_0x8d44ce;_0x3ce19e++){var _0x4b28e6=events[_0x3ce19e];var _0x42f50b=createListener('dashboardItem:'+_0x4b28e6,_0x42cf81);DashboardItemEvents['on'](_0x4b28e6,_0x42f50b);}};
\ No newline at end of file
+var _0x7e35=['./dashboardItem.events','remove','update','emit','length'];(function(_0x2cec39,_0x1893aa){var _0x3a4ea6=function(_0x41b5ab){while(--_0x41b5ab){_0x2cec39['push'](_0x2cec39['shift']());}};_0x3a4ea6(++_0x1893aa);}(_0x7e35,0x1b3));var _0x57e3=function(_0x10d324,_0x436fee){_0x10d324=_0x10d324-0x0;var _0x322a4d=_0x7e35[_0x10d324];return _0x322a4d;};'use strict';var DashboardItemEvents=require(_0x57e3('0x0'));var events=['save',_0x57e3('0x1'),_0x57e3('0x2')];function createListener(_0x1cfe57,_0x232e05){return function(_0x18ffdc){_0x232e05[_0x57e3('0x3')](_0x1cfe57,_0x18ffdc);};}function removeListener(_0x471f4a,_0x53dc03){return function(){DashboardItemEvents['removeListener'](_0x471f4a,_0x53dc03);};}exports['register']=function(_0x1fd36c){for(var _0x2b9111=0x0,_0x55b680=events[_0x57e3('0x4')];_0x2b9111<_0x55b680;_0x2b9111++){var _0x4a12dc=events[_0x2b9111];var _0x1f4d44=createListener('dashboardItem:'+_0x4a12dc,_0x1fd36c);DashboardItemEvents['on'](_0x4a12dc,_0x1f4d44);}};
\ No newline at end of file
index 873334e..a2c4428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe663=['create','put','update','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','get','/:id','isAuthenticated','post'];(function(_0x59b8d3,_0x1ecb66){var _0x298fa0=function(_0x3fb54a){while(--_0x3fb54a){_0x59b8d3['push'](_0x59b8d3['shift']());}};_0x298fa0(++_0x1ecb66);}(_0xe663,0x18d));var _0x3e66=function(_0x4a87c4,_0x4cc65e){_0x4a87c4=_0x4a87c4-0x0;var _0x50cfb3=_0xe663[_0x4a87c4];return _0x50cfb3;};'use strict';var multer=require(_0x3e66('0x0'));var util=require('util');var path=require(_0x3e66('0x1'));var timeout=require(_0x3e66('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3e66('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x3e66('0x4'));var config=require('../../config/environment');var controller=require('./dashboardItem.controller');router[_0x3e66('0x5')](_0x3e66('0x6'),auth[_0x3e66('0x7')](),controller['show']);router[_0x3e66('0x8')]('/',auth[_0x3e66('0x7')](),controller[_0x3e66('0x9')]);router[_0x3e66('0xa')](_0x3e66('0x6'),auth[_0x3e66('0x7')](),controller[_0x3e66('0xb')]);router['delete'](_0x3e66('0x6'),auth[_0x3e66('0x7')](),controller[_0x3e66('0xc')]);module[_0x3e66('0xd')]=router;
\ No newline at end of file
+var _0x3701=['create','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','show','post','isAuthenticated'];(function(_0x3627ab,_0x37cf62){var _0x59200e=function(_0x2b2db7){while(--_0x2b2db7){_0x3627ab['push'](_0x3627ab['shift']());}};_0x59200e(++_0x37cf62);}(_0x3701,0xa4));var _0x1370=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3701[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1370('0x0'));var util=require(_0x1370('0x1'));var path=require(_0x1370('0x2'));var timeout=require(_0x1370('0x3'));var express=require(_0x1370('0x4'));var router=express[_0x1370('0x5')]();var fs_extra=require(_0x1370('0x6'));var auth=require(_0x1370('0x7'));var interaction=require(_0x1370('0x8'));var config=require(_0x1370('0x9'));var controller=require(_0x1370('0xa'));router[_0x1370('0xb')](_0x1370('0xc'),auth['isAuthenticated'](),controller[_0x1370('0xd')]);router[_0x1370('0xe')]('/',auth[_0x1370('0xf')](),controller[_0x1370('0x10')]);router['put'](_0x1370('0xc'),auth[_0x1370('0xf')](),controller['update']);router['delete'](_0x1370('0xc'),auth[_0x1370('0xf')](),controller['destroy']);module[_0x1370('0x11')]=router;
\ No newline at end of file
index bd0d9ea..b7d3907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf636=['ENUM','first','second','third','exports','STRING'];(function(_0x3513a0,_0x3bdc88){var _0x2bdeb9=function(_0x37f06d){while(--_0x37f06d){_0x3513a0['push'](_0x3513a0['shift']());}};_0x2bdeb9(++_0x3bdc88);}(_0xf636,0x1e4));var _0x6f63=function(_0x1738f8,_0xe22614){_0x1738f8=_0x1738f8-0x0;var _0x4b9080=_0xf636[_0x1738f8];return _0x4b9080;};'use strict';var Sequelize=require('sequelize');module[_0x6f63('0x0')]={'name':{'type':Sequelize[_0x6f63('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0x6f63('0x2')](_0x6f63('0x3'),_0x6f63('0x4'),_0x6f63('0x5')),'allowNull':![],'defaultValue':_0x6f63('0x3')},'description':{'type':Sequelize[_0x6f63('0x1')]}};
\ No newline at end of file
+var _0x705f=['second','third','sequelize','exports','STRING','ENUM','first'];(function(_0xd10fa3,_0x11194e){var _0x543566=function(_0x528c1b){while(--_0x528c1b){_0xd10fa3['push'](_0xd10fa3['shift']());}};_0x543566(++_0x11194e);}(_0x705f,0x152));var _0xf705=function(_0x37d76d,_0x14ab7e){_0x37d76d=_0x37d76d-0x0;var _0x486c89=_0x705f[_0x37d76d];return _0x486c89;};'use strict';var Sequelize=require(_0xf705('0x0'));module[_0xf705('0x1')]={'name':{'type':Sequelize[_0xf705('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xf705('0x3')](_0xf705('0x4'),_0xf705('0x5'),_0xf705('0x6')),'allowNull':![],'defaultValue':_0xf705('0x4')},'description':{'type':Sequelize[_0xf705('0x2')]}};
\ No newline at end of file
index b070e89..9fca012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcc=['papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','offset','set','Content-Range','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','sendStatus','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','rows','params','length','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','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','crypto','jsforce','to-csv'];(function(_0xf34895,_0x21fb70){var _0x143f44=function(_0x2e7730){while(--_0x2e7730){_0xf34895['push'](_0xf34895['shift']());}};_0x143f44(++_0x21fb70);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x2efac1,_0x3d4f4b){_0x2efac1=_0x2efac1-0x0;var _0x48bff6=_0x1dcc[_0x2efac1];return _0x48bff6;};'use strict';var emlformat=require(_0xc1dc('0x0'));var rimraf=require(_0xc1dc('0x1'));var zipdir=require(_0xc1dc('0x2'));var jsonpatch=require(_0xc1dc('0x3'));var rp=require('request-promise');var moment=require(_0xc1dc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc1dc('0x5'));var util=require(_0xc1dc('0x6'));var path=require(_0xc1dc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc1dc('0x8'));var fs=require('fs');var fs_extra=require(_0xc1dc('0x9'));var _=require(_0xc1dc('0xa'));var squel=require('squel');var crypto=require(_0xc1dc('0xb'));var jsforce=require(_0xc1dc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc1dc('0xd'));var querystring=require('querystring');var Papa=require(_0xc1dc('0xe'));var Redis=require('ioredis');var authService=require(_0xc1dc('0xf'));var qs=require(_0xc1dc('0x10'));var as=require(_0xc1dc('0x11'));var hardwareService=require(_0xc1dc('0x12'));var logger=require(_0xc1dc('0x13'))(_0xc1dc('0x14'));var utils=require(_0xc1dc('0x15'));var config=require(_0xc1dc('0x16'));var licenseUtil=require(_0xc1dc('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226ba3,_0x2c5f41){_0x2c5f41=_0x2c5f41||0xcc;return function(_0xb7e667){if(_0xb7e667){return _0x226ba3['sendStatus'](_0x2c5f41);}return _0x226ba3[_0xc1dc('0x18')](_0x2c5f41)[_0xc1dc('0x19')]();};}function respondWithResult(_0x299520,_0xd51b1e){_0xd51b1e=_0xd51b1e||0xc8;return function(_0x145708){if(_0x145708){return _0x299520[_0xc1dc('0x18')](_0xd51b1e)[_0xc1dc('0x1a')](_0x145708);}};}function respondWithFilteredResult(_0x21aed1,_0x265929){return function(_0x37b23a){if(_0x37b23a){var _0x1cbbfe=typeof _0x265929['offset']===_0xc1dc('0x1b')&&typeof _0x265929[_0xc1dc('0x1c')]===_0xc1dc('0x1b');var _0x3d3315=_0x37b23a['count'];var _0x332400=_0x1cbbfe?0x0:_0x265929[_0xc1dc('0x1d')];var _0x499a42=_0x1cbbfe?_0x37b23a['count']:_0x265929[_0xc1dc('0x1d')]+_0x265929[_0xc1dc('0x1c')];var _0x197941;if(_0x499a42>=_0x3d3315){_0x499a42=_0x3d3315;_0x197941=0xc8;}else{_0x197941=0xce;}_0x21aed1[_0xc1dc('0x18')](_0x197941);return _0x21aed1[_0xc1dc('0x1e')](_0xc1dc('0x1f'),_0x332400+'-'+_0x499a42+'/'+_0x3d3315)[_0xc1dc('0x1a')](_0x37b23a);}return null;};}function patchUpdates(_0xd5a2e){return function(_0x5762e5){try{jsonpatch['apply'](_0x5762e5,_0xd5a2e,!![]);}catch(_0x4efe0d){return BPromise[_0xc1dc('0x20')](_0x4efe0d);}return _0x5762e5[_0xc1dc('0x21')]();};}function saveUpdates(_0x47af1e,_0x367965){return function(_0x19325f){if(_0x19325f){return _0x19325f[_0xc1dc('0x22')](_0x47af1e)[_0xc1dc('0x23')](function(_0x22b80d){return _0x22b80d;});}return null;};}function removeEntity(_0x2944a2,_0x353bf3){return function(_0x18ba56){if(_0x18ba56){return _0x18ba56[_0xc1dc('0x24')]()[_0xc1dc('0x23')](function(){var _0x49aab6=_0x18ba56[_0xc1dc('0x25')]({'plain':!![]});var _0xfeb0b1=_0xc1dc('0x26');return db[_0xc1dc('0x27')]['destroy']({'where':{'type':_0xfeb0b1,'resourceId':_0x49aab6['id']}})[_0xc1dc('0x23')](function(){return _0x18ba56;});})[_0xc1dc('0x23')](function(){_0x2944a2[_0xc1dc('0x18')](0xcc)[_0xc1dc('0x19')]();});}};}function handleEntityNotFound(_0x354e71,_0x152a50){return function(_0xd67136){if(!_0xd67136){_0x354e71[_0xc1dc('0x28')](0x194);}return _0xd67136;};}function handleError(_0x204b8a,_0x5dbd36){_0x5dbd36=_0x5dbd36||0x1f4;return function(_0x2d5a57){logger[_0xc1dc('0x29')](_0x2d5a57[_0xc1dc('0x2a')]);if(_0x2d5a57[_0xc1dc('0x2b')]){delete _0x2d5a57[_0xc1dc('0x2b')];}_0x204b8a[_0xc1dc('0x18')](_0x5dbd36)[_0xc1dc('0x2c')](_0x2d5a57);};}exports[_0xc1dc('0x2d')]=function(_0x336add,_0x1182a4){var _0x3b9dc9={},_0x5c380c={},_0x376e95={'count':0x0,'rows':[]};var _0x317f87=_[_0xc1dc('0x2e')](db[_0xc1dc('0x2f')][_0xc1dc('0x30')],function(_0x1be7e5){return{'name':_0x1be7e5[_0xc1dc('0x31')],'type':_0x1be7e5[_0xc1dc('0x32')][_0xc1dc('0x33')]};});_0x5c380c['model']=_['map'](_0x317f87,_0xc1dc('0x2b'));_0x5c380c[_0xc1dc('0x34')]=_[_0xc1dc('0x35')](_0x336add[_0xc1dc('0x34')]);_0x5c380c[_0xc1dc('0x36')]=_[_0xc1dc('0x37')](_0x5c380c['model'],_0x5c380c[_0xc1dc('0x34')]);_0x3b9dc9[_0xc1dc('0x38')]=_['intersection'](_0x5c380c[_0xc1dc('0x39')],qs[_0xc1dc('0x3a')](_0x336add['query'][_0xc1dc('0x3a')]));_0x3b9dc9[_0xc1dc('0x38')]=_0x3b9dc9[_0xc1dc('0x38')]['length']?_0x3b9dc9[_0xc1dc('0x38')]:_0x5c380c[_0xc1dc('0x39')];if(!_0x336add[_0xc1dc('0x34')][_0xc1dc('0x3b')](_0xc1dc('0x3c'))){_0x3b9dc9[_0xc1dc('0x1c')]=qs[_0xc1dc('0x1c')](_0x336add[_0xc1dc('0x34')][_0xc1dc('0x1c')]);_0x3b9dc9['offset']=qs[_0xc1dc('0x1d')](_0x336add[_0xc1dc('0x34')][_0xc1dc('0x1d')]);}_0x3b9dc9['order']=qs[_0xc1dc('0x3d')](_0x336add[_0xc1dc('0x34')][_0xc1dc('0x3d')]);_0x3b9dc9[_0xc1dc('0x3e')]=qs[_0xc1dc('0x36')](_[_0xc1dc('0x3f')](_0x336add[_0xc1dc('0x34')],_0x5c380c[_0xc1dc('0x36')]),_0x317f87);if(_0x336add['query'][_0xc1dc('0x40')]){_0x3b9dc9[_0xc1dc('0x3e')]=_[_0xc1dc('0x41')](_0x3b9dc9[_0xc1dc('0x3e')],{'$or':_[_0xc1dc('0x2e')](_0x317f87,function(_0x1fbdb8){if(_0x1fbdb8['type']!==_0xc1dc('0x42')){var _0x2476b6={};_0x2476b6[_0x1fbdb8[_0xc1dc('0x2b')]]={'$like':'%'+_0x336add[_0xc1dc('0x34')][_0xc1dc('0x40')]+'%'};return _0x2476b6;}})});}_0x3b9dc9=_['merge']({},_0x3b9dc9,_0x336add['options']);var _0x16d288={'where':_0x3b9dc9[_0xc1dc('0x3e')]};return db[_0xc1dc('0x2f')][_0xc1dc('0x43')](_0x16d288)[_0xc1dc('0x23')](function(_0x2b4190){_0x376e95[_0xc1dc('0x43')]=_0x2b4190;if(_0x336add['query'][_0xc1dc('0x44')]){_0x3b9dc9[_0xc1dc('0x45')]=[{'all':!![]}];}return db[_0xc1dc('0x2f')]['findAll'](_0x3b9dc9);})[_0xc1dc('0x23')](function(_0x2f52f7){_0x376e95[_0xc1dc('0x46')]=_0x2f52f7;return _0x376e95;})[_0xc1dc('0x23')](respondWithFilteredResult(_0x1182a4,_0x3b9dc9))['catch'](handleError(_0x1182a4,null));};exports['show']=function(_0x1d9ae1,_0xb0563){var _0x5aa50b={'raw':!![],'where':{'id':_0x1d9ae1[_0xc1dc('0x47')]['id']}},_0x192604={};_0x192604[_0xc1dc('0x39')]=_[_0xc1dc('0x35')](db[_0xc1dc('0x2f')][_0xc1dc('0x30')]);_0x192604[_0xc1dc('0x34')]=_['keys'](_0x1d9ae1['query']);_0x192604[_0xc1dc('0x36')]=_['intersection'](_0x192604[_0xc1dc('0x39')],_0x192604[_0xc1dc('0x34')]);_0x5aa50b[_0xc1dc('0x38')]=_[_0xc1dc('0x37')](_0x192604[_0xc1dc('0x39')],qs[_0xc1dc('0x3a')](_0x1d9ae1[_0xc1dc('0x34')][_0xc1dc('0x3a')]));_0x5aa50b['attributes']=_0x5aa50b[_0xc1dc('0x38')][_0xc1dc('0x48')]?_0x5aa50b[_0xc1dc('0x38')]:_0x192604[_0xc1dc('0x39')];if(_0x1d9ae1[_0xc1dc('0x34')][_0xc1dc('0x44')]){_0x5aa50b[_0xc1dc('0x45')]=[{'all':!![]}];}_0x5aa50b=_[_0xc1dc('0x41')]({},_0x5aa50b,_0x1d9ae1[_0xc1dc('0x49')]);return db[_0xc1dc('0x2f')]['find'](_0x5aa50b)['then'](handleEntityNotFound(_0xb0563,null))['then'](respondWithResult(_0xb0563,null))[_0xc1dc('0x4a')](handleError(_0xb0563,null));};exports[_0xc1dc('0x4b')]=function(_0x57b792,_0x129e23){return db[_0xc1dc('0x2f')]['create'](_0x57b792[_0xc1dc('0x4c')],{})['then'](function(_0x18642b){var _0x1d1706=_0x57b792[_0xc1dc('0x4d')][_0xc1dc('0x25')]({'plain':!![]});if(!_0x1d1706)throw new Error(_0xc1dc('0x4e'));if(_0x1d1706[_0xc1dc('0x4f')]===_0xc1dc('0x4d')){var _0x34667b=_0x18642b['get']({'plain':!![]});var _0x21b385=_0xc1dc('0x26');return db[_0xc1dc('0x50')][_0xc1dc('0x51')]({'where':{'name':_0x21b385,'userProfileId':_0x1d1706['userProfileId']},'raw':!![]})[_0xc1dc('0x23')](function(_0x216aca){if(_0x216aca&&_0x216aca[_0xc1dc('0x52')]===0x0){return db[_0xc1dc('0x27')][_0xc1dc('0x4b')]({'name':_0x34667b[_0xc1dc('0x2b')],'resourceId':_0x34667b['id'],'type':_0x216aca[_0xc1dc('0x2b')],'sectionId':_0x216aca['id']},{})[_0xc1dc('0x23')](function(){return _0x18642b;});}else{return _0x18642b;}})['catch'](function(_0x1dd081){logger[_0xc1dc('0x29')](_0xc1dc('0x53'),_0x1dd081);throw _0x1dd081;});}return _0x18642b;})[_0xc1dc('0x23')](respondWithResult(_0x129e23,0xc9))[_0xc1dc('0x4a')](handleError(_0x129e23,null));};exports[_0xc1dc('0x22')]=function(_0x4070f0,_0x5a07e6){if(_0x4070f0[_0xc1dc('0x4c')]['id']){delete _0x4070f0[_0xc1dc('0x4c')]['id'];}return db[_0xc1dc('0x2f')][_0xc1dc('0x51')]({'where':{'id':_0x4070f0[_0xc1dc('0x47')]['id']}})[_0xc1dc('0x23')](handleEntityNotFound(_0x5a07e6,null))[_0xc1dc('0x23')](saveUpdates(_0x4070f0[_0xc1dc('0x4c')],null))[_0xc1dc('0x23')](respondWithResult(_0x5a07e6,null))['catch'](handleError(_0x5a07e6,null));};exports[_0xc1dc('0x24')]=function(_0x5ba08c,_0x21fb72){return db[_0xc1dc('0x2f')][_0xc1dc('0x51')]({'where':{'id':_0x5ba08c[_0xc1dc('0x47')]['id']}})[_0xc1dc('0x23')](handleEntityNotFound(_0x21fb72,null))[_0xc1dc('0x23')](removeEntity(_0x21fb72,null))[_0xc1dc('0x4a')](handleError(_0x21fb72,null));};
\ No newline at end of file
+var _0xe774=['fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','Dispositions','UserProfileResource','stack','name','index','map','Disposition','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','nolimit','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','length','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','error','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs'];(function(_0x3672f1,_0x5f45ea){var _0x2afca3=function(_0x1cd317){while(--_0x1cd317){_0x3672f1['push'](_0x3672f1['shift']());}};_0x2afca3(++_0x5f45ea);}(_0xe774,0x135));var _0x4e77=function(_0x497d6d,_0x13e5f4){_0x497d6d=_0x497d6d-0x0;var _0x2390e2=_0xe774[_0x497d6d];return _0x2390e2;};'use strict';var emlformat=require(_0x4e77('0x0'));var rimraf=require(_0x4e77('0x1'));var zipdir=require(_0x4e77('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4e77('0x3'));var moment=require(_0x4e77('0x4'));var BPromise=require(_0x4e77('0x5'));var Mustache=require(_0x4e77('0x6'));var util=require(_0x4e77('0x7'));var path=require(_0x4e77('0x8'));var sox=require(_0x4e77('0x9'));var csv=require('to-csv');var ejs=require(_0x4e77('0xa'));var fs=require('fs');var fs_extra=require(_0x4e77('0xb'));var _=require(_0x4e77('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4e77('0xd'));var deskjs=require(_0x4e77('0xe'));var toCsv=require(_0x4e77('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4e77('0x10'));var authService=require(_0x4e77('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4e77('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x4e77('0x13'));var config=require(_0x4e77('0x14'));var licenseUtil=require(_0x4e77('0x15'));var db=require(_0x4e77('0x16'))['db'];function respondWithStatusCode(_0x250d1e,_0x2e2798){_0x2e2798=_0x2e2798||0xcc;return function(_0x55ae46){if(_0x55ae46){return _0x250d1e[_0x4e77('0x17')](_0x2e2798);}return _0x250d1e[_0x4e77('0x18')](_0x2e2798)[_0x4e77('0x19')]();};}function respondWithResult(_0x2a6f09,_0x111b31){_0x111b31=_0x111b31||0xc8;return function(_0x3accd9){if(_0x3accd9){return _0x2a6f09[_0x4e77('0x18')](_0x111b31)[_0x4e77('0x1a')](_0x3accd9);}};}function respondWithFilteredResult(_0x400ce2,_0x7be91b){return function(_0x417b48){if(_0x417b48){var _0x566493=typeof _0x7be91b[_0x4e77('0x1b')]===_0x4e77('0x1c')&&typeof _0x7be91b['limit']===_0x4e77('0x1c');var _0x104462=_0x417b48[_0x4e77('0x1d')];var _0x458162=_0x566493?0x0:_0x7be91b['offset'];var _0x24ebb9=_0x566493?_0x417b48['count']:_0x7be91b[_0x4e77('0x1b')]+_0x7be91b[_0x4e77('0x1e')];var _0x28c837;if(_0x24ebb9>=_0x104462){_0x24ebb9=_0x104462;_0x28c837=0xc8;}else{_0x28c837=0xce;}_0x400ce2[_0x4e77('0x18')](_0x28c837);return _0x400ce2[_0x4e77('0x1f')](_0x4e77('0x20'),_0x458162+'-'+_0x24ebb9+'/'+_0x104462)[_0x4e77('0x1a')](_0x417b48);}return null;};}function patchUpdates(_0xd68760){return function(_0x5f18b3){try{jsonpatch[_0x4e77('0x21')](_0x5f18b3,_0xd68760,!![]);}catch(_0x6f80c5){return BPromise[_0x4e77('0x22')](_0x6f80c5);}return _0x5f18b3[_0x4e77('0x23')]();};}function saveUpdates(_0x4a5040,_0x9cec1){return function(_0x2bcef1){if(_0x2bcef1){return _0x2bcef1['update'](_0x4a5040)[_0x4e77('0x24')](function(_0xd794b3){return _0xd794b3;});}return null;};}function removeEntity(_0x643888,_0x24d9c5){return function(_0xc2778d){if(_0xc2778d){return _0xc2778d[_0x4e77('0x25')]()[_0x4e77('0x24')](function(){var _0x11f1ef=_0xc2778d['get']({'plain':!![]});var _0x4957a0=_0x4e77('0x26');return db[_0x4e77('0x27')][_0x4e77('0x25')]({'where':{'type':_0x4957a0,'resourceId':_0x11f1ef['id']}})['then'](function(){return _0xc2778d;});})[_0x4e77('0x24')](function(){_0x643888['status'](0xcc)[_0x4e77('0x19')]();});}};}function handleEntityNotFound(_0x52012a,_0x4bacd9){return function(_0xa67aca){if(!_0xa67aca){_0x52012a[_0x4e77('0x17')](0x194);}return _0xa67aca;};}function handleError(_0x76a51e,_0x25e86f){_0x25e86f=_0x25e86f||0x1f4;return function(_0x4a32d8){logger['error'](_0x4a32d8[_0x4e77('0x28')]);if(_0x4a32d8[_0x4e77('0x29')]){delete _0x4a32d8[_0x4e77('0x29')];}_0x76a51e[_0x4e77('0x18')](_0x25e86f)['send'](_0x4a32d8);};}exports[_0x4e77('0x2a')]=function(_0x70e920,_0x46a0b5){var _0x5a5b49={},_0x14dcb5={},_0x523fe5={'count':0x0,'rows':[]};var _0x56d10b=_[_0x4e77('0x2b')](db[_0x4e77('0x2c')][_0x4e77('0x2d')],function(_0x2f1fb8){return{'name':_0x2f1fb8[_0x4e77('0x2e')],'type':_0x2f1fb8[_0x4e77('0x2f')][_0x4e77('0x30')]};});_0x14dcb5['model']=_[_0x4e77('0x2b')](_0x56d10b,_0x4e77('0x29'));_0x14dcb5[_0x4e77('0x31')]=_[_0x4e77('0x32')](_0x70e920[_0x4e77('0x31')]);_0x14dcb5[_0x4e77('0x33')]=_[_0x4e77('0x34')](_0x14dcb5['model'],_0x14dcb5[_0x4e77('0x31')]);_0x5a5b49['attributes']=_[_0x4e77('0x34')](_0x14dcb5[_0x4e77('0x35')],qs[_0x4e77('0x36')](_0x70e920[_0x4e77('0x31')][_0x4e77('0x36')]));_0x5a5b49[_0x4e77('0x37')]=_0x5a5b49['attributes']['length']?_0x5a5b49['attributes']:_0x14dcb5[_0x4e77('0x35')];if(!_0x70e920['query']['hasOwnProperty'](_0x4e77('0x38'))){_0x5a5b49['limit']=qs[_0x4e77('0x1e')](_0x70e920['query'][_0x4e77('0x1e')]);_0x5a5b49[_0x4e77('0x1b')]=qs[_0x4e77('0x1b')](_0x70e920[_0x4e77('0x31')][_0x4e77('0x1b')]);}_0x5a5b49['order']=qs['sort'](_0x70e920[_0x4e77('0x31')]['sort']);_0x5a5b49['where']=qs[_0x4e77('0x33')](_['pick'](_0x70e920[_0x4e77('0x31')],_0x14dcb5[_0x4e77('0x33')]),_0x56d10b);if(_0x70e920[_0x4e77('0x31')]['filter']){_0x5a5b49[_0x4e77('0x39')]=_[_0x4e77('0x3a')](_0x5a5b49[_0x4e77('0x39')],{'$or':_[_0x4e77('0x2b')](_0x56d10b,function(_0x2c14b1){if(_0x2c14b1[_0x4e77('0x2f')]!==_0x4e77('0x3b')){var _0x15b81a={};_0x15b81a[_0x2c14b1[_0x4e77('0x29')]]={'$like':'%'+_0x70e920[_0x4e77('0x31')][_0x4e77('0x3c')]+'%'};return _0x15b81a;}})});}_0x5a5b49=_[_0x4e77('0x3a')]({},_0x5a5b49,_0x70e920[_0x4e77('0x3d')]);var _0x374e6={'where':_0x5a5b49[_0x4e77('0x39')]};return db[_0x4e77('0x2c')][_0x4e77('0x1d')](_0x374e6)[_0x4e77('0x24')](function(_0x5e849c){_0x523fe5[_0x4e77('0x1d')]=_0x5e849c;if(_0x70e920[_0x4e77('0x31')][_0x4e77('0x3e')]){_0x5a5b49[_0x4e77('0x3f')]=[{'all':!![]}];}return db[_0x4e77('0x2c')]['findAll'](_0x5a5b49);})['then'](function(_0x1b435b){_0x523fe5[_0x4e77('0x40')]=_0x1b435b;return _0x523fe5;})[_0x4e77('0x24')](respondWithFilteredResult(_0x46a0b5,_0x5a5b49))['catch'](handleError(_0x46a0b5,null));};exports[_0x4e77('0x41')]=function(_0x44dda4,_0x106a98){var _0x3e57cb={'raw':!![],'where':{'id':_0x44dda4[_0x4e77('0x42')]['id']}},_0x6ebaa6={};_0x6ebaa6[_0x4e77('0x35')]=_[_0x4e77('0x32')](db[_0x4e77('0x2c')][_0x4e77('0x2d')]);_0x6ebaa6[_0x4e77('0x31')]=_['keys'](_0x44dda4[_0x4e77('0x31')]);_0x6ebaa6['filters']=_['intersection'](_0x6ebaa6[_0x4e77('0x35')],_0x6ebaa6[_0x4e77('0x31')]);_0x3e57cb['attributes']=_[_0x4e77('0x34')](_0x6ebaa6[_0x4e77('0x35')],qs[_0x4e77('0x36')](_0x44dda4['query'][_0x4e77('0x36')]));_0x3e57cb[_0x4e77('0x37')]=_0x3e57cb[_0x4e77('0x37')][_0x4e77('0x43')]?_0x3e57cb['attributes']:_0x6ebaa6[_0x4e77('0x35')];if(_0x44dda4[_0x4e77('0x31')][_0x4e77('0x3e')]){_0x3e57cb[_0x4e77('0x3f')]=[{'all':!![]}];}_0x3e57cb=_[_0x4e77('0x3a')]({},_0x3e57cb,_0x44dda4[_0x4e77('0x3d')]);return db[_0x4e77('0x2c')]['find'](_0x3e57cb)[_0x4e77('0x24')](handleEntityNotFound(_0x106a98,null))[_0x4e77('0x24')](respondWithResult(_0x106a98,null))[_0x4e77('0x44')](handleError(_0x106a98,null));};exports[_0x4e77('0x45')]=function(_0x4b58fc,_0x4943b9){return db[_0x4e77('0x2c')]['create'](_0x4b58fc[_0x4e77('0x46')],{})['then'](function(_0x48367b){var _0x44c746=_0x4b58fc['user'][_0x4e77('0x47')]({'plain':!![]});if(!_0x44c746)throw new Error(_0x4e77('0x48'));if(_0x44c746[_0x4e77('0x49')]===_0x4e77('0x4a')){var _0x11a6f8=_0x48367b[_0x4e77('0x47')]({'plain':!![]});var _0xb7fd3d=_0x4e77('0x26');return db[_0x4e77('0x4b')][_0x4e77('0x4c')]({'where':{'name':_0xb7fd3d,'userProfileId':_0x44c746[_0x4e77('0x4d')]},'raw':!![]})['then'](function(_0x258fba){if(_0x258fba&&_0x258fba['autoAssociation']===0x0){return db[_0x4e77('0x27')][_0x4e77('0x45')]({'name':_0x11a6f8[_0x4e77('0x29')],'resourceId':_0x11a6f8['id'],'type':_0x258fba[_0x4e77('0x29')],'sectionId':_0x258fba['id']},{})[_0x4e77('0x24')](function(){return _0x48367b;});}else{return _0x48367b;}})['catch'](function(_0x3a5b5c){logger[_0x4e77('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3a5b5c);throw _0x3a5b5c;});}return _0x48367b;})[_0x4e77('0x24')](respondWithResult(_0x4943b9,0xc9))[_0x4e77('0x44')](handleError(_0x4943b9,null));};exports[_0x4e77('0x4f')]=function(_0x1fe6f2,_0x3cdcd8){if(_0x1fe6f2[_0x4e77('0x46')]['id']){delete _0x1fe6f2['body']['id'];}return db[_0x4e77('0x2c')][_0x4e77('0x4c')]({'where':{'id':_0x1fe6f2[_0x4e77('0x42')]['id']}})['then'](handleEntityNotFound(_0x3cdcd8,null))['then'](saveUpdates(_0x1fe6f2['body'],null))[_0x4e77('0x24')](respondWithResult(_0x3cdcd8,null))[_0x4e77('0x44')](handleError(_0x3cdcd8,null));};exports['destroy']=function(_0x2e4295,_0x2536a9){return db[_0x4e77('0x2c')]['find']({'where':{'id':_0x2e4295[_0x4e77('0x42')]['id']}})['then'](handleEntityNotFound(_0x2536a9,null))[_0x4e77('0x24')](removeEntity(_0x2536a9,null))[_0x4e77('0x44')](handleError(_0x2536a9,null));};
\ No newline at end of file
index 7c25dd4..a03fe19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa43d=['name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions','name','ListId','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','FaxAccountId'];(function(_0x321a30,_0x1cfe62){var _0x50c322=function(_0x71e522){while(--_0x71e522){_0x321a30['push'](_0x321a30['shift']());}};_0x50c322(++_0x1cfe62);}(_0xa43d,0x122));var _0xda43=function(_0x552dec,_0x27a96d){_0x552dec=_0x552dec-0x0;var _0xcd5ca6=_0xa43d[_0x552dec];return _0xcd5ca6;};'use strict';var _=require(_0xda43('0x0'));var util=require(_0xda43('0x1'));var logger=require(_0xda43('0x2'))('api');var moment=require(_0xda43('0x3'));var BPromise=require(_0xda43('0x4'));var rp=require(_0xda43('0x5'));var fs=require('fs');var path=require(_0xda43('0x6'));var rimraf=require(_0xda43('0x7'));var config=require(_0xda43('0x8'));var attributes=require(_0xda43('0x9'));module[_0xda43('0xa')]=function(_0x502a98,_0x3c8b2b){return _0x502a98['define'](_0xda43('0xb'),attributes,{'tableName':_0xda43('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xda43('0xd'),_0xda43('0xe')]},{'unique':!![],'name':_0xda43('0xf'),'fields':['name',_0xda43('0x10')]},{'unique':!![],'name':_0xda43('0x11'),'fields':[_0xda43('0xd'),_0xda43('0x12')]},{'unique':!![],'name':_0xda43('0x13'),'fields':[_0xda43('0xd'),_0xda43('0x14')]},{'unique':!![],'name':'name_fax','fields':[_0xda43('0xd'),_0xda43('0x15')]},{'unique':!![],'name':_0xda43('0x16'),'fields':[_0xda43('0xd'),_0xda43('0x17')]},{'unique':!![],'name':_0xda43('0x18'),'fields':['name',_0xda43('0x19')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a3f=['name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','tools_dispositions','name_voice','name','ListId','ChatWebsiteId','name_mail','MailAccountId','SmsAccountId','FaxAccountId'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3a3f,0x146));var _0xf3a3=function(_0x43b657,_0x422f33){_0x43b657=_0x43b657-0x0;var _0x7e8242=_0x3a3f[_0x43b657];return _0x7e8242;};'use strict';var _=require(_0xf3a3('0x0'));var util=require(_0xf3a3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf3a3('0x2'));var BPromise=require(_0xf3a3('0x3'));var rp=require(_0xf3a3('0x4'));var fs=require('fs');var path=require(_0xf3a3('0x5'));var rimraf=require(_0xf3a3('0x6'));var config=require(_0xf3a3('0x7'));var attributes=require('./disposition.attributes');module[_0xf3a3('0x8')]=function(_0x4518f6,_0x180536){return _0x4518f6[_0xf3a3('0x9')]('Disposition',attributes,{'tableName':_0xf3a3('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xf3a3('0xb'),'fields':[_0xf3a3('0xc'),_0xf3a3('0xd')]},{'unique':!![],'name':'name_chat','fields':[_0xf3a3('0xc'),_0xf3a3('0xe')]},{'unique':!![],'name':_0xf3a3('0xf'),'fields':[_0xf3a3('0xc'),_0xf3a3('0x10')]},{'unique':!![],'name':'name_sms','fields':[_0xf3a3('0xc'),_0xf3a3('0x11')]},{'unique':!![],'name':'name_fax','fields':[_0xf3a3('0xc'),_0xf3a3('0x12')]},{'unique':!![],'name':_0xf3a3('0x13'),'fields':['name',_0xf3a3('0x14')]},{'unique':!![],'name':_0xf3a3('0x15'),'fields':[_0xf3a3('0xc'),_0xf3a3('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index 51ab05b..ec3beed 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(_0x5190b8,_0x3cfd39){var _0x373c17=function(_0x542280){while(--_0x542280){_0x5190b8['push'](_0x5190b8['shift']());}};_0x373c17(++_0x3cfd39);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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(_0x15e434,_0x45c2e1){var _0x18cf88=function(_0x3e5ece){while(--_0x3e5ece){_0x15e434['push'](_0x15e434['shift']());}};_0x18cf88(++_0x45c2e1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 ca3cb80..0bc1e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa8=['show','create','put','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id'];(function(_0x3d500e,_0x5a1f35){var _0x11cf72=function(_0x1f5793){while(--_0x1f5793){_0x3d500e['push'](_0x3d500e['shift']());}};_0x11cf72(++_0x5a1f35);}(_0xcaa8,0xcc));var _0x8caa=function(_0x4b0233,_0x3136ea){_0x4b0233=_0x4b0233-0x0;var _0x5a4841=_0xcaa8[_0x4b0233];return _0x5a4841;};'use strict';var multer=require(_0x8caa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8caa('0x1'));var express=require('express');var router=express[_0x8caa('0x2')]();var fs_extra=require(_0x8caa('0x3'));var auth=require(_0x8caa('0x4'));var interaction=require(_0x8caa('0x5'));var config=require(_0x8caa('0x6'));var controller=require(_0x8caa('0x7'));router[_0x8caa('0x8')]('/',auth[_0x8caa('0x9')](),controller[_0x8caa('0xa')]);router[_0x8caa('0x8')](_0x8caa('0xb'),auth[_0x8caa('0x9')](),controller[_0x8caa('0xc')]);router['post']('/',auth[_0x8caa('0x9')](),controller[_0x8caa('0xd')]);router[_0x8caa('0xe')](_0x8caa('0xb'),auth[_0x8caa('0x9')](),controller['update']);router[_0x8caa('0xf')](_0x8caa('0xb'),auth['isAuthenticated'](),controller[_0x8caa('0x10')]);module[_0x8caa('0x11')]=router;
\ No newline at end of file
+var _0xc8b1=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','/:id','isAuthenticated','show','post'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc8b1,0x17f));var _0x1c8b=function(_0x9d124b,_0x3cde82){_0x9d124b=_0x9d124b-0x0;var _0xc48ce0=_0xc8b1[_0x9d124b];return _0xc48ce0;};'use strict';var multer=require(_0x1c8b('0x0'));var util=require(_0x1c8b('0x1'));var path=require(_0x1c8b('0x2'));var timeout=require(_0x1c8b('0x3'));var express=require(_0x1c8b('0x4'));var router=express[_0x1c8b('0x5')]();var fs_extra=require(_0x1c8b('0x6'));var auth=require(_0x1c8b('0x7'));var interaction=require(_0x1c8b('0x8'));var config=require(_0x1c8b('0x9'));var controller=require(_0x1c8b('0xa'));router[_0x1c8b('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1c8b('0xb')](_0x1c8b('0xc'),auth[_0x1c8b('0xd')](),controller[_0x1c8b('0xe')]);router[_0x1c8b('0xf')]('/',auth[_0x1c8b('0xd')](),controller[_0x1c8b('0x10')]);router['put']('/:id',auth[_0x1c8b('0xd')](),controller[_0x1c8b('0x11')]);router[_0x1c8b('0x12')](_0x1c8b('0xc'),auth[_0x1c8b('0xd')](),controller[_0x1c8b('0x13')]);module[_0x1c8b('0x14')]=router;
\ No newline at end of file
index 208a2a6..b14b3c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d9c=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','localstationid','7200','9600','12000','14400','4800','2400','v17,v27,v29','INTEGER','SIP','IAX','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x1a29c3,_0x33c397){var _0xe21311=function(_0xc39be4){while(--_0xc39be4){_0x1a29c3['push'](_0x1a29c3['shift']());}};_0xe21311(++_0x33c397);}(_0x2d9c,0x137));var _0xc2d9=function(_0x2adb9b,_0x5a59dd){_0x2adb9b=_0x2adb9b-0x0;var _0x3e54b9=_0x2d9c[_0x2adb9b];return _0x3e54b9;};'use strict';var Sequelize=require('sequelize');module[_0xc2d9('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xc2d9('0x1')]},'ecm':{'type':Sequelize[_0xc2d9('0x2')]('yes','no'),'defaultValue':_0xc2d9('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize['STRING'],'unique':_0xc2d9('0x4')},'minrate':{'type':Sequelize['ENUM']('2400','4800',_0xc2d9('0x5'),_0xc2d9('0x6'),_0xc2d9('0x7'),_0xc2d9('0x8')),'defaultValue':_0xc2d9('0x9')},'maxrate':{'type':Sequelize['ENUM'](_0xc2d9('0xa'),_0xc2d9('0x9'),_0xc2d9('0x5'),'9600',_0xc2d9('0x7'),'14400'),'defaultValue':_0xc2d9('0x8')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0xc2d9('0xb')},'gateway':{'type':Sequelize[_0xc2d9('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xc2d9('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xc2d9('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xc2d9('0x2')](_0xc2d9('0xd'),_0xc2d9('0xe'),'DADHI',_0xc2d9('0xf')),'defaultValue':_0xc2d9('0xd')},'key':{'type':Sequelize[_0xc2d9('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xc2d9('0x10')],'defaultValue':function(){return _0xc2d9('0x11');}},'notificationSound':{'type':Sequelize[_0xc2d9('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc2d9('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc2d9('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc2d9('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc2d9('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc2d9('0xc')],'allowNull':!![],'defaultValue':null,'comment':_0xc2d9('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x48ecd9){if(!_0x48ecd9)this[_0xc2d9('0x14')]('mandatoryDispositionPauseId',null);this[_0xc2d9('0x14')](_0xc2d9('0x15'),_0x48ecd9);}}};
\ No newline at end of file
+var _0xa08f=['12000','14400','ENUM','2400','7200','v17,v27,v29','INTEGER','IAX','DADHI','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','4800','9600'];(function(_0x2f6ef1,_0x39c4ba){var _0x1374be=function(_0x25a38f){while(--_0x25a38f){_0x2f6ef1['push'](_0x2f6ef1['shift']());}};_0x1374be(++_0x39c4ba);}(_0xa08f,0x130));var _0xfa08=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa08f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xfa08('0x0'));module[_0xfa08('0x1')]={'name':{'type':Sequelize[_0xfa08('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xfa08('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xfa08('0x4')},'localstationid':{'type':Sequelize[_0xfa08('0x2')],'unique':_0xfa08('0x5')},'minrate':{'type':Sequelize['ENUM']('2400',_0xfa08('0x6'),'7200',_0xfa08('0x7'),_0xfa08('0x8'),_0xfa08('0x9')),'defaultValue':_0xfa08('0x6')},'maxrate':{'type':Sequelize[_0xfa08('0xa')](_0xfa08('0xb'),_0xfa08('0x6'),_0xfa08('0xc'),_0xfa08('0x7'),_0xfa08('0x8'),'14400'),'defaultValue':_0xfa08('0x9')},'modem':{'type':Sequelize[_0xfa08('0x2')],'defaultValue':_0xfa08('0xd')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xfa08('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xfa08('0xe')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xfa08('0xa')]('SIP',_0xfa08('0xf'),_0xfa08('0x10'),_0xfa08('0x11')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xfa08('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xfa08('0x12');}},'notificationSound':{'type':Sequelize[_0xfa08('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xfa08('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfa08('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xfa08('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xfa08('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xfa08('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xfa08('0xe')],'allowNull':!![],'defaultValue':null,'comment':_0xfa08('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xfa08('0x13')],'defaultValue':![],'comment':_0xfa08('0x15'),'set':function(_0x436ab1){if(!_0x436ab1)this[_0xfa08('0x16')](_0xfa08('0x17'),null);this[_0xfa08('0x16')]('mandatoryDisposition',_0x436ab1);}}};
\ No newline at end of file
index 265ce61..fc716d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd513=['FaxAccountId','Disposition','getDispositions','findOne','pick','ids','addAnswer','CannedAnswer','removeAnswers','addInteraction','FaxInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','Transaction','ISOLATION_LEVELS','FaxApplication','bulkCreate','priority','send','getApplications','context','from-voip-provider','exten','localstationid','app','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','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','updateAccountApplications','VoiceExtension','tech','createdAt','updatedAt','TrunkId','ListId','findById','FaxMessage','$gte','split','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','path','from','format','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','ContactId','dataValues','SendFax','isNil','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','UserProfileResource','destroy','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','rows','show','params','keys','includeAll','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition'];(function(_0x44d589,_0xaef461){var _0x578b59=function(_0x53a5f9){while(--_0x53a5f9){_0x44d589['push'](_0x44d589['shift']());}};_0x578b59(++_0xaef461);}(_0xd513,0x128));var _0x3d51=function(_0x3081d8,_0x2395ad){_0x3081d8=_0x3081d8-0x0;var _0x580226=_0xd513[_0x3081d8];return _0x580226;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d51('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3d51('0x1'));var rp=require(_0x3d51('0x2'));var moment=require(_0x3d51('0x3'));var BPromise=require(_0x3d51('0x4'));var Mustache=require(_0x3d51('0x5'));var util=require(_0x3d51('0x6'));var path=require('path');var sox=require(_0x3d51('0x7'));var csv=require(_0x3d51('0x8'));var ejs=require(_0x3d51('0x9'));var fs=require('fs');var fs_extra=require(_0x3d51('0xa'));var _=require(_0x3d51('0xb'));var squel=require(_0x3d51('0xc'));var crypto=require(_0x3d51('0xd'));var jsforce=require(_0x3d51('0xe'));var deskjs=require(_0x3d51('0xf'));var toCsv=require(_0x3d51('0x8'));var querystring=require('querystring');var Papa=require(_0x3d51('0x10'));var Redis=require(_0x3d51('0x11'));var authService=require(_0x3d51('0x12'));var qs=require(_0x3d51('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3d51('0x14'))(_0x3d51('0x15'));var utils=require(_0x3d51('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3d51('0x17'))['db'];config[_0x3d51('0x18')]=_[_0x3d51('0x19')](config[_0x3d51('0x18')],{'host':_0x3d51('0x1a'),'port':0x18eb});var socket=require(_0x3d51('0x1b'))(new Redis(config[_0x3d51('0x18')]));require('./faxAccount.socket')[_0x3d51('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x3d51('0x1d')][_0x3d51('0x1e')]({'port':0x232c});var client9002=jayson[_0x3d51('0x1d')][_0x3d51('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x2e1022,_0x5e9b0c,_0x3a6bea,_0x316033){return new BPromise(function(_0x160365,_0x1dba34){var _0x1996fd=_0x316033||client;return _0x1996fd[_0x3d51('0x1f')](_0x2e1022,_0x3a6bea)['then'](function(_0x55c86f){logger['info'](_0x3d51('0x20'),_0x5e9b0c,_0x3d51('0x21'));logger[_0x3d51('0x22')](_0x3d51('0x23'),_0x5e9b0c,_0x3d51('0x21'),JSON[_0x3d51('0x24')](_0x55c86f));if(_0x55c86f[_0x3d51('0x25')]){if(_0x55c86f['error'][_0x3d51('0x26')]===0x1f4){logger[_0x3d51('0x25')](_0x3d51('0x20'),_0x5e9b0c,_0x55c86f[_0x3d51('0x25')]['message']);return _0x1dba34(_0x55c86f[_0x3d51('0x25')][_0x3d51('0x27')]);}logger[_0x3d51('0x25')](_0x3d51('0x20'),_0x5e9b0c,_0x55c86f[_0x3d51('0x25')][_0x3d51('0x27')]);return _0x160365(_0x55c86f['error'][_0x3d51('0x27')]);}else{logger[_0x3d51('0x28')]('FaxAccount,\x20%s,\x20%s',_0x5e9b0c,_0x3d51('0x21'));_0x160365(_0x55c86f[_0x3d51('0x29')]['message']);}})[_0x3d51('0x2a')](function(_0x2a596b){logger[_0x3d51('0x25')](_0x3d51('0x20'),_0x5e9b0c,_0x2a596b);_0x1dba34(_0x2a596b);});});}function respondWithStatusCode(_0x3ff2ca,_0x445b5c){_0x445b5c=_0x445b5c||0xcc;return function(_0x46d9d6){if(_0x46d9d6){return _0x3ff2ca[_0x3d51('0x2b')](_0x445b5c);}return _0x3ff2ca[_0x3d51('0x2c')](_0x445b5c)[_0x3d51('0x2d')]();};}function respondWithResult(_0x220786,_0x2c7331){_0x2c7331=_0x2c7331||0xc8;return function(_0x1f227c){if(_0x1f227c){return _0x220786[_0x3d51('0x2c')](_0x2c7331)[_0x3d51('0x2e')](_0x1f227c);}};}function respondWithFilteredResult(_0x28e667,_0x2d812a){return function(_0xd99d36){if(_0xd99d36){var _0x1225a7=typeof _0x2d812a[_0x3d51('0x2f')]===_0x3d51('0x30')&&typeof _0x2d812a[_0x3d51('0x31')]==='undefined';var _0x402694=_0xd99d36[_0x3d51('0x32')];var _0x3945af=_0x1225a7?0x0:_0x2d812a['offset'];var _0x588235=_0x1225a7?_0xd99d36[_0x3d51('0x32')]:_0x2d812a[_0x3d51('0x2f')]+_0x2d812a[_0x3d51('0x31')];var _0x332afa;if(_0x588235>=_0x402694){_0x588235=_0x402694;_0x332afa=0xc8;}else{_0x332afa=0xce;}_0x28e667[_0x3d51('0x2c')](_0x332afa);return _0x28e667[_0x3d51('0x33')](_0x3d51('0x34'),_0x3945af+'-'+_0x588235+'/'+_0x402694)['json'](_0xd99d36);}return null;};}function patchUpdates(_0x23d041){return function(_0x231b83){try{jsonpatch[_0x3d51('0x35')](_0x231b83,_0x23d041,!![]);}catch(_0x3f14ff){return BPromise[_0x3d51('0x36')](_0x3f14ff);}return _0x231b83['save']();};}function saveUpdates(_0xda7363,_0x40640c){return function(_0x1d9b1e){if(_0x1d9b1e){return _0x1d9b1e[_0x3d51('0x37')](_0xda7363)['then'](function(_0x2a1b69){return _0x2a1b69;});}return null;};}function removeEntity(_0x2f236e,_0x562431){return function(_0x395c21){if(_0x395c21){return _0x395c21['destroy']()[_0x3d51('0x38')](function(){var _0x15ca8a=_0x395c21['get']({'plain':!![]});var _0x467349='FaxAccounts';return db[_0x3d51('0x39')][_0x3d51('0x3a')]({'where':{'type':_0x467349,'resourceId':_0x15ca8a['id']}})['then'](function(){return _0x395c21;});})[_0x3d51('0x38')](function(){_0x2f236e[_0x3d51('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5aeded,_0x320561){return function(_0x52889c){if(!_0x52889c){_0x5aeded[_0x3d51('0x2b')](0x194);}return _0x52889c;};}function handleError(_0x200e53,_0x3ee891){_0x3ee891=_0x3ee891||0x1f4;return function(_0x28dede){logger[_0x3d51('0x25')](_0x28dede[_0x3d51('0x3b')]);if(_0x28dede[_0x3d51('0x3c')]){delete _0x28dede[_0x3d51('0x3c')];}_0x200e53[_0x3d51('0x2c')](_0x3ee891)['send'](_0x28dede);};}exports[_0x3d51('0x3d')]=function(_0x5d39ea,_0x34670d){var _0x4eee41={'include':[{'model':db[_0x3d51('0x3e')],'as':_0x3d51('0x3f')}]},_0x5cdde4={},_0x4848fa={'count':0x0,'rows':[]};var _0x1a0447=_[_0x3d51('0x40')](db[_0x3d51('0x41')][_0x3d51('0x42')],function(_0x42e910){return{'name':_0x42e910[_0x3d51('0x43')],'type':_0x42e910['type']['key']};});_0x5cdde4[_0x3d51('0x44')]=_['map'](_0x1a0447,_0x3d51('0x3c'));_0x5cdde4[_0x3d51('0x45')]=_['keys'](_0x5d39ea[_0x3d51('0x45')]);_0x5cdde4[_0x3d51('0x46')]=_['intersection'](_0x5cdde4[_0x3d51('0x44')],_0x5cdde4[_0x3d51('0x45')]);_0x4eee41[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0x5cdde4[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x5d39ea['query']['fields']));_0x4eee41['attributes']=_0x4eee41[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x4eee41[_0x3d51('0x47')]:_0x5cdde4[_0x3d51('0x44')];if(!_0x5d39ea[_0x3d51('0x45')][_0x3d51('0x4b')](_0x3d51('0x4c'))){_0x4eee41[_0x3d51('0x31')]=qs[_0x3d51('0x31')](_0x5d39ea[_0x3d51('0x45')][_0x3d51('0x31')]);_0x4eee41['offset']=qs[_0x3d51('0x2f')](_0x5d39ea['query']['offset']);}_0x4eee41[_0x3d51('0x4d')]=qs['sort'](_0x5d39ea['query'][_0x3d51('0x4e')]);_0x4eee41[_0x3d51('0x4f')]=qs['filters'](_['pick'](_0x5d39ea[_0x3d51('0x45')],_0x5cdde4[_0x3d51('0x46')]),_0x1a0447);if(_0x5d39ea[_0x3d51('0x45')][_0x3d51('0x50')]){_0x4eee41['where']=_[_0x3d51('0x51')](_0x4eee41[_0x3d51('0x4f')],{'$or':_[_0x3d51('0x40')](_0x1a0447,function(_0x11f089){if(_0x11f089[_0x3d51('0x52')]!==_0x3d51('0x53')){var _0x3eb8db={};_0x3eb8db[_0x11f089[_0x3d51('0x3c')]]={'$like':'%'+_0x5d39ea['query'][_0x3d51('0x50')]+'%'};return _0x3eb8db;}})});}_0x4eee41=_[_0x3d51('0x51')]({},_0x4eee41,_0x5d39ea[_0x3d51('0x54')]);var _0x3f636e={'where':_0x4eee41[_0x3d51('0x4f')]};return db['FaxAccount'][_0x3d51('0x32')](_0x3f636e)[_0x3d51('0x38')](function(_0x3f5787){_0x4848fa[_0x3d51('0x32')]=_0x3f5787;if(_0x5d39ea[_0x3d51('0x45')]['includeAll']){_0x4eee41[_0x3d51('0x55')]=[{'all':!![]}];}return db[_0x3d51('0x41')][_0x3d51('0x56')](_0x4eee41);})['then'](function(_0x17f692){_0x4848fa[_0x3d51('0x57')]=_0x17f692;return _0x4848fa;})[_0x3d51('0x38')](respondWithFilteredResult(_0x34670d,_0x4eee41))[_0x3d51('0x2a')](handleError(_0x34670d,null));};exports[_0x3d51('0x58')]=function(_0x350bed,_0x56a227){var _0x18d54c={'raw':![],'where':{'id':_0x350bed[_0x3d51('0x59')]['id']},'include':[{'model':db[_0x3d51('0x3e')],'as':_0x3d51('0x3f')}]},_0xfdfc8c={};_0xfdfc8c[_0x3d51('0x44')]=_[_0x3d51('0x5a')](db[_0x3d51('0x41')][_0x3d51('0x42')]);_0xfdfc8c[_0x3d51('0x45')]=_[_0x3d51('0x5a')](_0x350bed[_0x3d51('0x45')]);_0xfdfc8c['filters']=_[_0x3d51('0x48')](_0xfdfc8c['model'],_0xfdfc8c[_0x3d51('0x45')]);_0x18d54c[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0xfdfc8c[_0x3d51('0x44')],qs['fields'](_0x350bed[_0x3d51('0x45')][_0x3d51('0x49')]));_0x18d54c[_0x3d51('0x47')]=_0x18d54c[_0x3d51('0x47')]['length']?_0x18d54c['attributes']:_0xfdfc8c[_0x3d51('0x44')];if(_0x350bed[_0x3d51('0x45')][_0x3d51('0x5b')]){_0x18d54c[_0x3d51('0x55')]=[{'all':!![]}];}_0x18d54c=_['merge']({},_0x18d54c,_0x350bed[_0x3d51('0x54')]);return db[_0x3d51('0x41')][_0x3d51('0x5c')](_0x18d54c)['then'](handleEntityNotFound(_0x56a227,null))[_0x3d51('0x38')](respondWithResult(_0x56a227,null))['catch'](handleError(_0x56a227,null));};exports[_0x3d51('0x5d')]=function(_0x5018f7,_0x3aaca9){return db[_0x3d51('0x41')][_0x3d51('0x5d')](_0x5018f7['body'],{})[_0x3d51('0x38')](function(_0x27e41d){var _0x5880e0=_0x5018f7[_0x3d51('0x5e')][_0x3d51('0x5f')]({'plain':!![]});if(!_0x5880e0)throw new Error(_0x3d51('0x60'));if(_0x5880e0[_0x3d51('0x61')]===_0x3d51('0x5e')){var _0x37c2c7=_0x27e41d[_0x3d51('0x5f')]({'plain':!![]});var _0x61ebe7=_0x3d51('0x62');return db[_0x3d51('0x63')][_0x3d51('0x5c')]({'where':{'name':_0x61ebe7,'userProfileId':_0x5880e0[_0x3d51('0x64')]},'raw':!![]})[_0x3d51('0x38')](function(_0xe0c31b){if(_0xe0c31b&&_0xe0c31b[_0x3d51('0x65')]===0x0){return db['UserProfileResource'][_0x3d51('0x5d')]({'name':_0x37c2c7[_0x3d51('0x3c')],'resourceId':_0x37c2c7['id'],'type':_0xe0c31b['name'],'sectionId':_0xe0c31b['id']},{})[_0x3d51('0x38')](function(){return _0x27e41d;});}else{return _0x27e41d;}})[_0x3d51('0x2a')](function(_0x373db8){logger[_0x3d51('0x25')](_0x3d51('0x66'),_0x373db8);throw _0x373db8;});}return _0x27e41d;})['then'](respondWithResult(_0x3aaca9,0xc9))[_0x3d51('0x2a')](handleError(_0x3aaca9,null));};exports['update']=function(_0x439e7b,_0x22adf0){if(_0x439e7b[_0x3d51('0x67')]['id']){delete _0x439e7b[_0x3d51('0x67')]['id'];}return db[_0x3d51('0x41')][_0x3d51('0x5c')]({'where':{'id':_0x439e7b[_0x3d51('0x59')]['id']},'include':[{'model':db['Pause'],'as':_0x3d51('0x3f')}]})[_0x3d51('0x38')](handleEntityNotFound(_0x22adf0,null))['then'](saveUpdates(_0x439e7b['body'],null))[_0x3d51('0x38')](respondWithResult(_0x22adf0,null))[_0x3d51('0x2a')](handleError(_0x22adf0,null));};exports[_0x3d51('0x3a')]=function(_0x273a60,_0x238249){return db['FaxAccount'][_0x3d51('0x5c')]({'where':{'id':_0x273a60['params']['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x238249,null))[_0x3d51('0x38')](removeEntity(_0x238249,null))[_0x3d51('0x2a')](handleError(_0x238249,null));};exports['describe']=function(_0x448742,_0x369203){return db[_0x3d51('0x41')][_0x3d51('0x68')]()['then'](respondWithResult(_0x369203,null))[_0x3d51('0x2a')](handleError(_0x369203,null));};exports[_0x3d51('0x69')]=function(_0x32378f,_0x31f593,_0x27d9da){if(_0x32378f[_0x3d51('0x67')]['id']){delete _0x32378f[_0x3d51('0x67')]['id'];}return db[_0x3d51('0x41')][_0x3d51('0x5c')]({'where':{'id':_0x32378f[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x31f593,null))['then'](function(_0x2feb9c){if(_0x2feb9c){_0x32378f[_0x3d51('0x67')][_0x3d51('0x6a')]=_0x2feb9c['id'];return db[_0x3d51('0x6b')][_0x3d51('0x5d')](_0x32378f['body']);}})[_0x3d51('0x38')](respondWithResult(_0x31f593,null))[_0x3d51('0x2a')](handleError(_0x31f593,null));};exports[_0x3d51('0x6c')]=function(_0x484cda,_0x15fd54,_0x30b153){var _0x22ca7f={'raw':![],'where':{}};var _0x1823eb={};var _0xc08447={'count':0x0,'rows':[]};return db[_0x3d51('0x41')][_0x3d51('0x6d')]({'where':{'id':_0x484cda[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x15fd54,null))[_0x3d51('0x38')](function(_0x2e7855){if(_0x2e7855){_0x1823eb[_0x3d51('0x44')]=_['keys'](db['Disposition'][_0x3d51('0x42')]);_0x1823eb[_0x3d51('0x45')]=_[_0x3d51('0x5a')](_0x484cda[_0x3d51('0x45')]);_0x1823eb['filters']=_[_0x3d51('0x48')](_0x1823eb['model'],_0x1823eb[_0x3d51('0x45')]);_0x22ca7f[_0x3d51('0x47')]=_['intersection'](_0x1823eb['model'],qs[_0x3d51('0x49')](_0x484cda[_0x3d51('0x45')][_0x3d51('0x49')]));_0x22ca7f[_0x3d51('0x47')]=_0x22ca7f[_0x3d51('0x47')]['length']?_0x22ca7f[_0x3d51('0x47')]:_0x1823eb[_0x3d51('0x44')];if(!_0x484cda[_0x3d51('0x45')][_0x3d51('0x4b')](_0x3d51('0x4c'))){_0x22ca7f[_0x3d51('0x31')]=qs[_0x3d51('0x31')](_0x484cda[_0x3d51('0x45')][_0x3d51('0x31')]);_0x22ca7f[_0x3d51('0x2f')]=qs['offset'](_0x484cda[_0x3d51('0x45')][_0x3d51('0x2f')]);}_0x22ca7f[_0x3d51('0x4d')]=qs[_0x3d51('0x4e')](_0x484cda[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x22ca7f[_0x3d51('0x4f')]=qs['filters'](_[_0x3d51('0x6e')](_0x484cda[_0x3d51('0x45')],_0x1823eb[_0x3d51('0x46')]));_0x22ca7f[_0x3d51('0x4f')]['FaxAccountId']=_0x2e7855['id'];if(_0x484cda[_0x3d51('0x45')][_0x3d51('0x50')]){_0x22ca7f[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x22ca7f['where'],{'$or':_[_0x3d51('0x40')](_0x22ca7f[_0x3d51('0x47')],function(_0x26a360){var _0x1a28e6={};_0x1a28e6[_0x26a360]={'$like':'%'+_0x484cda[_0x3d51('0x45')]['filter']+'%'};return _0x1a28e6;})});}_0x22ca7f=_[_0x3d51('0x51')]({},_0x22ca7f,_0x484cda['options']);return db[_0x3d51('0x6b')][_0x3d51('0x32')]({'where':_0x22ca7f[_0x3d51('0x4f')]})[_0x3d51('0x38')](function(_0x2f733f){_0xc08447['count']=_0x2f733f;if(_0x484cda[_0x3d51('0x45')]['includeAll']){_0x22ca7f[_0x3d51('0x55')]=[{'all':!![]}];}return db[_0x3d51('0x6b')][_0x3d51('0x56')](_0x22ca7f);})['then'](function(_0x37f9f1){_0xc08447[_0x3d51('0x57')]=_0x37f9f1;return _0xc08447;});}})['then'](respondWithFilteredResult(_0x15fd54,_0x22ca7f))[_0x3d51('0x2a')](handleError(_0x15fd54,null));};exports['removeDispositions']=function(_0x2c1ef2,_0x12984e,_0x3b9428){return db[_0x3d51('0x41')]['find']({'where':{'id':_0x2c1ef2[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x12984e,null))['then'](function(_0x259dd6){if(_0x259dd6){return _0x259dd6['removeDispositions'](_0x2c1ef2['query'][_0x3d51('0x6f')]);}})[_0x3d51('0x38')](respondWithStatusCode(_0x12984e,null))['catch'](handleError(_0x12984e,null));};exports[_0x3d51('0x70')]=function(_0x39e6d9,_0x58c4eb,_0x398403){if(_0x39e6d9[_0x3d51('0x67')]['id']){delete _0x39e6d9[_0x3d51('0x67')]['id'];}return db[_0x3d51('0x41')][_0x3d51('0x5c')]({'where':{'id':_0x39e6d9[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x58c4eb,null))[_0x3d51('0x38')](function(_0x4df869){if(_0x4df869){_0x39e6d9[_0x3d51('0x67')]['FaxAccountId']=_0x4df869['id'];return db[_0x3d51('0x71')]['create'](_0x39e6d9[_0x3d51('0x67')]);}})[_0x3d51('0x38')](respondWithResult(_0x58c4eb,null))[_0x3d51('0x2a')](handleError(_0x58c4eb,null));};exports['getAnswers']=function(_0x452df8,_0x197fd0,_0x2b3e10){var _0x5d826c={'raw':![],'where':{}};var _0xc31784={};var _0x2f9a52={'count':0x0,'rows':[]};return db[_0x3d51('0x41')][_0x3d51('0x6d')]({'where':{'id':_0x452df8[_0x3d51('0x59')]['id']}})['then'](handleEntityNotFound(_0x197fd0,null))['then'](function(_0xf4f92){if(_0xf4f92){_0xc31784['model']=_[_0x3d51('0x5a')](db[_0x3d51('0x71')][_0x3d51('0x42')]);_0xc31784['query']=_['keys'](_0x452df8[_0x3d51('0x45')]);_0xc31784['filters']=_['intersection'](_0xc31784['model'],_0xc31784[_0x3d51('0x45')]);_0x5d826c[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0xc31784[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x452df8[_0x3d51('0x45')][_0x3d51('0x49')]));_0x5d826c[_0x3d51('0x47')]=_0x5d826c[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x5d826c[_0x3d51('0x47')]:_0xc31784['model'];if(!_0x452df8[_0x3d51('0x45')]['hasOwnProperty']('nolimit')){_0x5d826c[_0x3d51('0x31')]=qs[_0x3d51('0x31')](_0x452df8[_0x3d51('0x45')][_0x3d51('0x31')]);_0x5d826c[_0x3d51('0x2f')]=qs[_0x3d51('0x2f')](_0x452df8[_0x3d51('0x45')][_0x3d51('0x2f')]);}_0x5d826c['order']=qs[_0x3d51('0x4e')](_0x452df8[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x5d826c['where']=qs['filters'](_[_0x3d51('0x6e')](_0x452df8['query'],_0xc31784[_0x3d51('0x46')]));_0x5d826c[_0x3d51('0x4f')][_0x3d51('0x6a')]=_0xf4f92['id'];if(_0x452df8[_0x3d51('0x45')][_0x3d51('0x50')]){_0x5d826c[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x5d826c[_0x3d51('0x4f')],{'$or':_[_0x3d51('0x40')](_0x5d826c[_0x3d51('0x47')],function(_0x5e34df){var _0x11de06={};_0x11de06[_0x5e34df]={'$like':'%'+_0x452df8['query'][_0x3d51('0x50')]+'%'};return _0x11de06;})});}_0x5d826c=_[_0x3d51('0x51')]({},_0x5d826c,_0x452df8[_0x3d51('0x54')]);return db[_0x3d51('0x71')][_0x3d51('0x32')]({'where':_0x5d826c[_0x3d51('0x4f')]})['then'](function(_0x225ade){_0x2f9a52[_0x3d51('0x32')]=_0x225ade;if(_0x452df8[_0x3d51('0x45')][_0x3d51('0x5b')]){_0x5d826c[_0x3d51('0x55')]=[{'all':!![]}];}return db[_0x3d51('0x71')][_0x3d51('0x56')](_0x5d826c);})[_0x3d51('0x38')](function(_0x5bc2ca){_0x2f9a52[_0x3d51('0x57')]=_0x5bc2ca;return _0x2f9a52;});}})[_0x3d51('0x38')](respondWithFilteredResult(_0x197fd0,_0x5d826c))[_0x3d51('0x2a')](handleError(_0x197fd0,null));};exports[_0x3d51('0x72')]=function(_0x144d1b,_0x5432f1,_0x482042){return db['FaxAccount'][_0x3d51('0x5c')]({'where':{'id':_0x144d1b[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x5432f1,null))['then'](function(_0x353572){if(_0x353572){return _0x353572['removeAnswers'](_0x144d1b[_0x3d51('0x45')][_0x3d51('0x6f')]);}})['then'](respondWithStatusCode(_0x5432f1,null))[_0x3d51('0x2a')](handleError(_0x5432f1,null));};exports[_0x3d51('0x73')]=function(_0x554191,_0x41c8b4,_0x40622b){return db[_0x3d51('0x74')][_0x3d51('0x5c')]({'where':{'id':_0x554191[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x41c8b4,null))[_0x3d51('0x38')](function(_0x4f01a3){if(_0x4f01a3){return _0x4f01a3[_0x3d51('0x73')](_0x554191[_0x3d51('0x67')]['ids'],_[_0x3d51('0x75')](_0x554191[_0x3d51('0x67')],[_0x3d51('0x6f'),'id'])||{});}})[_0x3d51('0x38')](respondWithResult(_0x41c8b4,null))[_0x3d51('0x2a')](handleError(_0x41c8b4,null));};exports[_0x3d51('0x76')]=function(_0x412585,_0x6bf752,_0x58496c){var _0x11a1aa={'raw':![],'where':{}};var _0x5e4da0={};var _0x339e1b={'count':0x0,'rows':[]};return db['FaxAccount']['findOne']({'where':{'id':_0x412585[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x6bf752,null))['then'](function(_0x3ecd3f){if(_0x3ecd3f){_0x5e4da0[_0x3d51('0x44')]=_[_0x3d51('0x5a')](db['FaxInteraction'][_0x3d51('0x42')]);_0x5e4da0['query']=_[_0x3d51('0x5a')](_0x412585[_0x3d51('0x45')]);_0x5e4da0[_0x3d51('0x46')]=_['intersection'](_0x5e4da0[_0x3d51('0x44')],_0x5e4da0[_0x3d51('0x45')]);_0x11a1aa[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0x5e4da0[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x412585[_0x3d51('0x45')]['fields']));_0x11a1aa['attributes']=_0x11a1aa[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x11a1aa['attributes']:_0x5e4da0[_0x3d51('0x44')];if(!_0x412585['query'][_0x3d51('0x4b')](_0x3d51('0x4c'))){_0x11a1aa[_0x3d51('0x31')]=qs['limit'](_0x412585['query'][_0x3d51('0x31')]);_0x11a1aa[_0x3d51('0x2f')]=qs[_0x3d51('0x2f')](_0x412585['query'][_0x3d51('0x2f')]);}_0x11a1aa[_0x3d51('0x4d')]=qs[_0x3d51('0x4e')](_0x412585[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x11a1aa[_0x3d51('0x4f')]=qs['filters'](_[_0x3d51('0x6e')](_0x412585['query'],_0x5e4da0['filters']));_0x11a1aa[_0x3d51('0x4f')][_0x3d51('0x6a')]=_0x3ecd3f['id'];if(_0x412585[_0x3d51('0x45')][_0x3d51('0x50')]){_0x11a1aa[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x11a1aa[_0x3d51('0x4f')],{'$or':_['map'](_0x11a1aa['attributes'],function(_0x12f795){var _0x518631={};_0x518631[_0x12f795]={'$like':'%'+_0x412585['query'][_0x3d51('0x50')]+'%'};return _0x518631;})});}_0x11a1aa=_[_0x3d51('0x51')]({},_0x11a1aa,_0x412585[_0x3d51('0x54')]);return db[_0x3d51('0x74')]['count']({'where':_0x11a1aa[_0x3d51('0x4f')]})[_0x3d51('0x38')](function(_0x3b520b){_0x339e1b[_0x3d51('0x32')]=_0x3b520b;if(_0x412585[_0x3d51('0x45')][_0x3d51('0x5b')]){_0x11a1aa[_0x3d51('0x55')]=[{'model':db[_0x3d51('0x77')],'as':_0x3d51('0x78'),'required':![]},{'model':db[_0x3d51('0x79')],'as':_0x3d51('0x7a'),'attributes':[_0x3d51('0x3c'),_0x3d51('0x7b'),_0x3d51('0x7c')],'required':![]},{'model':db[_0x3d51('0x7d')],'as':_0x3d51('0x7e'),'attributes':['id',_0x3d51('0x3c'),_0x3d51('0x7f')],'where':_0x412585[_0x3d51('0x45')][_0x3d51('0x80')]?{'id':_0x412585[_0x3d51('0x45')][_0x3d51('0x80')]}:undefined,'required':_0x412585[_0x3d51('0x45')][_0x3d51('0x80')]?!![]:![]}];}return db['FaxInteraction'][_0x3d51('0x56')](_0x11a1aa);})[_0x3d51('0x38')](function(_0x1737f3){_0x339e1b[_0x3d51('0x57')]=_0x1737f3;return _0x339e1b;});}})['then'](respondWithFilteredResult(_0x6bf752,_0x11a1aa))[_0x3d51('0x2a')](handleError(_0x6bf752,null));};exports[_0x3d51('0x81')]=function(_0x856ff2,_0x5af390){var _0x46e5d9=_0x856ff2[_0x3d51('0x59')]['id'];var _0x2ab618=_0x856ff2[_0x3d51('0x67')];var _0x2f8a63=0xc8;var _0x1c7240=null;return db[_0x3d51('0x82')]['transaction']({'isolationLevel':db[_0x3d51('0x82')][_0x3d51('0x83')][_0x3d51('0x84')]['READ_COMMITTED']},function(_0x546e64){return db[_0x3d51('0x41')][_0x3d51('0x6d')]({'where':{'id':_0x46e5d9},'transaction':_0x546e64})[_0x3d51('0x38')](function(_0x21400f){if(_0x21400f){return db[_0x3d51('0x85')][_0x3d51('0x3a')]({'where':{'FaxAccountId':_0x46e5d9},'transaction':_0x546e64})[_0x3d51('0x38')](function(){var _0x570894=_[_0x3d51('0x40')](_0x2ab618,function(_0x34b681){_0x34b681['FaxAccountId']=_0x46e5d9;return _0x34b681;});return db['FaxApplication'][_0x3d51('0x86')](_0x570894,{'transaction':_0x546e64});});}else{_0x2f8a63=0x194;_0x1c7240=[];}});})[_0x3d51('0x38')](function(){if(_0x2f8a63!==0x194){return db[_0x3d51('0x85')]['findAndCountAll']({'where':{'FaxAccountId':_0x46e5d9},'order':_0x3d51('0x87')})[_0x3d51('0x38')](function(_0x345b6d){_0x1c7240=_0x345b6d;});}})[_0x3d51('0x2a')](function(_0x1f1490){_0x2f8a63=0x1f4;logger['error'](_0x1f1490[_0x3d51('0x3b')]);if(_0x1f1490[_0x3d51('0x3c')]){delete _0x1f1490[_0x3d51('0x3c')];}_0x1c7240=_0x1f1490;})['finally'](function(){if(_0x1c7240===null){_0x5af390[_0x3d51('0x2b')](_0x2f8a63);}else{if(_0x2f8a63===0x1f4){_0x5af390[_0x3d51('0x2c')](_0x2f8a63)[_0x3d51('0x88')](_0x1c7240);}else{_0x5af390['status'](_0x2f8a63)[_0x3d51('0x2e')](_0x1c7240);}}});};exports[_0x3d51('0x89')]=function(_0x51d456,_0x3b3d0c,_0x386345){var _0x575bad={};var _0xc5fc17={};var _0xf6209b;var _0x2669f2;return db[_0x3d51('0x41')][_0x3d51('0x6d')]({'where':{'id':_0x51d456[_0x3d51('0x59')]['id']}})['then'](handleEntityNotFound(_0x3b3d0c,null))[_0x3d51('0x38')](function(_0x43b72b){if(_0x43b72b){_0xf6209b=_0x43b72b;_0xc5fc17[_0x3d51('0x44')]=_[_0x3d51('0x5a')](db[_0x3d51('0x85')][_0x3d51('0x42')]);_0xc5fc17[_0x3d51('0x45')]=_[_0x3d51('0x5a')](_0x51d456[_0x3d51('0x45')]);_0xc5fc17[_0x3d51('0x46')]=_['intersection'](_0xc5fc17[_0x3d51('0x44')],_0xc5fc17[_0x3d51('0x45')]);_0x575bad[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0xc5fc17[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x51d456['query'][_0x3d51('0x49')]));_0x575bad[_0x3d51('0x47')]=_0x575bad[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x575bad['attributes']:_0xc5fc17[_0x3d51('0x44')];_0x575bad['order']=qs[_0x3d51('0x4e')](_0x51d456[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x575bad[_0x3d51('0x4f')]=qs[_0x3d51('0x46')](_[_0x3d51('0x6e')](_0x51d456[_0x3d51('0x45')],_0xc5fc17['filters']));if(_0x51d456[_0x3d51('0x45')][_0x3d51('0x50')]){_0x575bad[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x575bad[_0x3d51('0x4f')],{'$or':_[_0x3d51('0x40')](_0x575bad['attributes'],function(_0x583755){var _0x994d7={};_0x994d7[_0x583755]={'$like':'%'+_0x51d456[_0x3d51('0x45')][_0x3d51('0x50')]+'%'};return _0x994d7;})});}_0x575bad=_[_0x3d51('0x51')]({},_0x575bad,_0x51d456[_0x3d51('0x54')]);return _0xf6209b[_0x3d51('0x89')](_0x575bad);}})['then'](function(_0x45fbff){if(_0x45fbff){_0x2669f2=_0x45fbff[_0x3d51('0x4a')];if(!_0x51d456['query']['hasOwnProperty'](_0x3d51('0x4c'))){_0x575bad['limit']=qs['limit'](_0x51d456[_0x3d51('0x45')][_0x3d51('0x31')]);_0x575bad[_0x3d51('0x2f')]=qs[_0x3d51('0x2f')](_0x51d456[_0x3d51('0x45')][_0x3d51('0x2f')]);}return _0xf6209b[_0x3d51('0x89')](_0x575bad);}})[_0x3d51('0x38')](function(_0x53a4d4){if(_0x53a4d4){return _0x53a4d4?{'count':_0x2669f2,'rows':_0x53a4d4}:null;}})[_0x3d51('0x38')](respondWithResult(_0x3b3d0c,null))[_0x3d51('0x2a')](handleError(_0x3b3d0c,null));};function Extension(_0x3e19d1,_0x567770,_0x1eeda7,_0x357639){this[_0x3d51('0x8a')]=_0x3d51('0x8b');this[_0x3d51('0x8c')]=_0x3e19d1[_0x3d51('0x8d')];this[_0x3d51('0x8e')]=_0x357639;this['type']='system';this['description']=_0x3d51('0x8f');this['FaxAccountId']=_0x3e19d1['id'];this['priority']=_0x567770;this[_0x3d51('0x90')]=_0x1eeda7;}function createExtensionsReciveFax(_0x1ab84e){var _0x4bb916=0x1;var _0x19671f=[];_0x19671f['push'](new Extension(_0x1ab84e,_0x4bb916,'',_0x3d51('0x91')));_0x4bb916+=0x1;_0x19671f[_0x3d51('0x92')](new Extension(_0x1ab84e,_0x4bb916,_0x3d51('0x93'),_0x3d51('0x94')));_0x4bb916+=0x1;for(var _0x13d596 in _0x1ab84e){if(_0x1ab84e[_0x3d51('0x4b')](_0x13d596)&&(_0x13d596===_0x3d51('0x95')||_0x13d596===_0x3d51('0x8d')||_0x13d596===_0x3d51('0x96')||_0x13d596===_0x3d51('0x97')||_0x13d596===_0x3d51('0x98')||_0x13d596==='maxrate'||_0x13d596===_0x3d51('0x99')||_0x13d596==='modem'||_0x13d596==='t38timeout')){_0x19671f[_0x3d51('0x92')](new Extension(_0x1ab84e,_0x4bb916,'FAXOPT('+_0x13d596+')='+_0x1ab84e[_0x13d596],_0x3d51('0x94')));_0x4bb916+=0x1;}}_0x19671f['push'](new Extension(_0x1ab84e,_0x4bb916,'6',_0x3d51('0x9a')));_0x4bb916+=0x1;_0x19671f[_0x3d51('0x92')](new Extension(_0x1ab84e,_0x4bb916,_0x3d51('0x9b'),_0x3d51('0x9c')));_0x4bb916=0x0;return _0x19671f;}exports[_0x3d51('0x9d')]=function(_0x3458ef,_0x4d4dfc,_0x5306c1){var _0x43cd2f;return db[_0x3d51('0x82')][_0x3d51('0x9e')](function(_0x2d82ef){return db[_0x3d51('0x41')][_0x3d51('0x5d')](_0x3458ef[_0x3d51('0x67')],{'transaction':_0x2d82ef})['then'](function(_0x4cdc13){_0x43cd2f=_0x4cdc13[_0x3d51('0x5f')]({'plain':!![]});return db['VoiceExtension'][_0x3d51('0x86')](createExtensionsReciveFax(_0x43cd2f),{'transaction':_0x2d82ef});});})[_0x3d51('0x38')](function(){return _0x43cd2f;})[_0x3d51('0x38')](respondWithResult(_0x4d4dfc,null))['catch'](handleError(_0x4d4dfc,null));};exports[_0x3d51('0x9f')]=function(_0x3c53ce,_0x398d6a,_0x5923d7){var _0x20b216;return db[_0x3d51('0x82')][_0x3d51('0x9e')](function(_0x248243){return db[_0x3d51('0x41')][_0x3d51('0x37')](_0x3c53ce[_0x3d51('0x67')],{'where':{'id':_0x3c53ce['body']['id']},'transaction':_0x248243})[_0x3d51('0x38')](function(_0x11aa70){return db[_0x3d51('0xa0')][_0x3d51('0x3a')]({'where':{'FaxAccountId':_0x3c53ce[_0x3d51('0x67')]['id']},'transaction':_0x248243})[_0x3d51('0x38')](function(_0x181798){return db[_0x3d51('0xa0')][_0x3d51('0x86')](createExtensionsReciveFax(_[_0x3d51('0x75')](_0x3c53ce[_0x3d51('0x67')],[_0x3d51('0xa1'),'key',_0x3d51('0xa2'),_0x3d51('0xa3'),_0x3d51('0xa4'),_0x3d51('0xa5')])),{'transaction':_0x248243});});});})[_0x3d51('0x38')](function(){return db['FaxAccount'][_0x3d51('0xa6')](_0x3c53ce[_0x3d51('0x67')]['id']);})['then'](respondWithResult(_0x398d6a,null))['catch'](handleError(_0x398d6a,null));};exports['getMessages']=function(_0x1f9a0e,_0x15cabc,_0x5dd71d){var _0x951ab9={'raw':!![],'where':{}};var _0x9bd1c4={};var _0x13422b={'count':0x0,'rows':[]};return db[_0x3d51('0x41')][_0x3d51('0x6d')]({'where':{'id':_0x1f9a0e[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x15cabc,null))[_0x3d51('0x38')](function(_0x5eee74){if(_0x5eee74){_0x9bd1c4[_0x3d51('0x44')]=_['keys'](db[_0x3d51('0xa7')][_0x3d51('0x42')]);_0x9bd1c4[_0x3d51('0x45')]=_[_0x3d51('0x5a')](_0x1f9a0e['query']);_0x9bd1c4['filters']=_[_0x3d51('0x48')](_0x9bd1c4[_0x3d51('0x44')],_0x9bd1c4[_0x3d51('0x45')]);_0x951ab9[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0x9bd1c4[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x1f9a0e[_0x3d51('0x45')]['fields']));_0x951ab9[_0x3d51('0x47')]=_0x951ab9[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x951ab9[_0x3d51('0x47')]:_0x9bd1c4[_0x3d51('0x44')];if(!_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x4b')](_0x3d51('0x4c'))){_0x951ab9[_0x3d51('0x31')]=qs[_0x3d51('0x31')](_0x1f9a0e['query'][_0x3d51('0x31')]);_0x951ab9['offset']=qs[_0x3d51('0x2f')](_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x2f')]);}_0x951ab9[_0x3d51('0x4d')]=qs[_0x3d51('0x4e')](_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x951ab9[_0x3d51('0x4f')]=qs['filters'](_[_0x3d51('0x6e')](_0x1f9a0e[_0x3d51('0x45')],_0x9bd1c4[_0x3d51('0x46')]));_0x951ab9['where'][_0x3d51('0x6a')]=_0x5eee74['id'];if(_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x50')]){_0x951ab9[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x951ab9[_0x3d51('0x4f')],{'$or':_[_0x3d51('0x40')](_0x951ab9['attributes'],function(_0x3f2154){var _0x56c1ba={};_0x56c1ba[_0x3f2154]={'$like':'%'+_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x50')]+'%'};return _0x56c1ba;})});}if(_0x1f9a0e['query'][_0x3d51('0xa8')]){var _0x1fce5e=_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0xa8')][_0x3d51('0xa9')](',');var _0x108afe={};_0x108afe[_0x1fce5e[0x0]]={'$gte':moment(_0x1fce5e[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x951ab9[_0x3d51('0x4f')]=_['merge'](_0x951ab9[_0x3d51('0x4f')],_0x108afe);}_0x951ab9=_[_0x3d51('0x51')]({},_0x951ab9,_0x1f9a0e['options']);return db[_0x3d51('0xa7')][_0x3d51('0x32')]({'where':_0x951ab9['where']})[_0x3d51('0x38')](function(_0x384932){_0x13422b['count']=_0x384932;if(_0x1f9a0e[_0x3d51('0x45')][_0x3d51('0x5b')]){_0x951ab9[_0x3d51('0x55')]=[{'all':!![]}];}return db[_0x3d51('0xa7')][_0x3d51('0x56')](_0x951ab9);})['then'](function(_0x1c9f50){_0x13422b[_0x3d51('0x57')]=_0x1c9f50;return _0x13422b;});}})[_0x3d51('0x38')](respondWithFilteredResult(_0x15cabc,_0x951ab9))['catch'](handleError(_0x15cabc,null));};exports[_0x3d51('0x88')]=function(_0x472780,_0x1e5c58,_0x2f0f80){var _0x155406,_0x13e19a={},_0x4ceca0;if(_0x472780[_0x3d51('0x67')]['to']){_0x4ceca0=_0x472780['body']['to'][0x0];}return db[_0x3d51('0x41')][_0x3d51('0x5c')]({'where':{'id':_0x472780[_0x3d51('0x59')]['id']},'include':[{'model':db['CmList'],'as':_0x3d51('0xaa'),'include':[{'model':db[_0x3d51('0x77')],'as':_0x3d51('0xab'),'where':{'fax':_0x4ceca0},'limit':0x1,'order':[['updatedAt',_0x3d51('0xac')]]}]}]})[_0x3d51('0x38')](handleEntityNotFound(_0x1e5c58,null))['then'](function(_0x449dba){_0x155406=_0x449dba;if(_0x472780[_0x3d51('0x67')][_0x3d51('0xad')]&&_0x472780['body'][_0x3d51('0xad')][_0x3d51('0x4a')]){for(var _0x2e8e57=0x0;_0x2e8e57<_0x472780[_0x3d51('0x67')][_0x3d51('0xad')]['length'];_0x2e8e57+=0x1){_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][_0x2e8e57]={'filename':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][_0x2e8e57][_0x3d51('0x3c')],'id':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][_0x2e8e57]['id'],'path':path[_0x3d51('0xae')](config[_0x3d51('0xaf')],'server/files/attachments',_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][_0x2e8e57][_0x3d51('0xb0')])};}}return respondWithRpcPromise(_0x3d51('0xb1'),_0x3d51('0xb1'),{'FaxAccountId':_['isNil'](_0x472780[_0x3d51('0x59')]['id'])?undefined:_0x472780['params']['id'],'path':_['isNil'](_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0][_0x3d51('0xb2')])?undefined:_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0][_0x3d51('0xb2')],'fax':_['isNil'](_0x472780[_0x3d51('0x67')]['to'][0x0])?undefined:_0x472780[_0x3d51('0x67')]['to'][0x0]},client9002);})[_0x3d51('0x38')](function(){if(_0x155406){if(_['isNil'](_0x472780[_0x3d51('0x67')]['from'])){_0x472780[_0x3d51('0x67')][_0x3d51('0xb3')]=util[_0x3d51('0xb4')](_0x3d51('0xb5'),_0x155406['name'],_0x155406[_0x3d51('0xb6')]);}if(_0x155406[_0x3d51('0xaa')]){if(_0x155406[_0x3d51('0xaa')][_0x3d51('0xab')]['length']){return _0x155406[_0x3d51('0xaa')][_0x3d51('0xab')][0x0];}else{return db[_0x3d51('0x77')][_0x3d51('0x5d')](_[_0x3d51('0x19')](_0x472780[_0x3d51('0x67')],{'firstName':_0x472780[_0x3d51('0x67')]['to'][0x0],'phone':_0x472780[_0x3d51('0x67')]['to'][0x0],'fax':_0x472780[_0x3d51('0x67')]['to'][0x0],'ListId':_0x155406[_0x3d51('0xa5')]}));}}else{throw new Error(_0x3d51('0xb7'));}}else{throw new Error(_0x3d51('0xb8'));}})[_0x3d51('0x38')](function(_0x248297){if(_0x248297){return db[_0x3d51('0x74')][_0x3d51('0x5c')]({'where':{'ContactId':_0x248297['id'],'closed':![],'FaxAccountId':_0x155406['id']}})[_0x3d51('0x38')](function(_0x3f7a66){if(_0x3f7a66){return[_0x3f7a66,![]];}return db[_0x3d51('0x74')][_0x3d51('0x5d')]({'UserId':_0x472780[_0x3d51('0x5e')]['id'],'ContactId':_0x248297['id'],'FaxAccountId':_0x155406['id'],'fax':_0x472780[_0x3d51('0x67')]['to'][0x0],'firstMsgDirection':_0x3d51('0xb9'),'Messages':[_['merge'](_0x472780[_0x3d51('0x67')],{'read':![],'body':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0][_0x3d51('0xba')],'FaxAccountId':_0x155406['id'],'UserId':_0x472780[_0x3d51('0x5e')]['id'],'ContactId':_0x248297['id'],'AttachmentId':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x3d51('0xbb')}]})[_0x3d51('0x38')](function(_0x4555fb){return[_0x4555fb,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x14c6f6,_0x1d2d43){if(_0x1d2d43){return _0x14c6f6;}return db[_0x3d51('0xa7')][_0x3d51('0x5d')]({'direction':_0x3d51('0xb9'),'read':![],'body':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0]['filename'],'FaxAccountId':_0x155406['id'],'FaxInteractionId':_0x14c6f6['id'],'UserId':_0x472780[_0x3d51('0x5e')]['id'],'ContactId':_0x14c6f6[_0x3d51('0xbc')],'AttachmentId':_0x472780[_0x3d51('0x67')][_0x3d51('0xad')][0x0]['id']})[_0x3d51('0x38')](function(_0x27d0b0){_0x14c6f6['dataValues']['Messages']=[];_0x14c6f6[_0x3d51('0xbd')][_0x3d51('0xbb')][_0x3d51('0x92')](_0x27d0b0[_0x3d51('0xbd')]);return _0x14c6f6;});})['then'](function(_0x350ca2){respondWithRpcPromise(_0x3d51('0xbe'),_0x3d51('0xbe'),{'FaxAccountId':_[_0x3d51('0xbf')](_0x472780['params']['id'])?undefined:_0x472780[_0x3d51('0x59')]['id'],'path':_[_0x3d51('0xbf')](_0x472780[_0x3d51('0x67')]['attachments'][0x0][_0x3d51('0xb2')])?undefined:_0x472780['body']['attachments'][0x0][_0x3d51('0xb2')],'fax':_[_0x3d51('0xbf')](_0x472780[_0x3d51('0x67')]['to'][0x0])?undefined:_0x472780[_0x3d51('0x67')]['to'][0x0],'AttachmentId':_0x472780['body'][_0x3d51('0xad')][0x0]['id']},client9002)[_0x3d51('0x38')](function(_0x166557){logger[_0x3d51('0x28')](_0x3d51('0xc0'),_0x166557);})[_0x3d51('0x2a')](function(_0x2149d4){logger[_0x3d51('0x28')](_0x3d51('0xc0'),_0x2149d4);});return _0x350ca2;})[_0x3d51('0x38')](respondWithResult(_0x1e5c58,null))[_0x3d51('0x2a')](handleError(_0x1e5c58,null));};exports[_0x3d51('0xc1')]=function(_0x248535,_0x37043f,_0x295cfe){return db[_0x3d51('0x41')][_0x3d51('0x5c')]({'where':{'id':_0x248535[_0x3d51('0x59')]['id']}})['then'](handleEntityNotFound(_0x37043f,null))[_0x3d51('0x38')](function(_0x4f4517){if(_0x4f4517){return _0x4f4517[_0x3d51('0xc1')](_0x248535['body'][_0x3d51('0x6f')],_['omit'](_0x248535[_0x3d51('0x67')],[_0x3d51('0x6f'),'id'])||{})[_0x3d51('0xc2')](function(_0x198859){for(var _0x8c0eeb=0x0;_0x8c0eeb<_0x248535['body'][_0x3d51('0x6f')]['length'];_0x8c0eeb+=0x1){socket[_0x3d51('0xc3')](_0x3d51('0xc4'),{'UserId':Number(_0x248535['body'][_0x3d51('0x6f')][_0x8c0eeb]),'FaxAccountId':Number(_0x248535[_0x3d51('0x59')]['id'])});}return _0x198859;});}})[_0x3d51('0x38')](respondWithResult(_0x37043f,null))['catch'](handleError(_0x37043f,null));};exports[_0x3d51('0xc5')]=function(_0x59b825,_0x548d83,_0x750dfd){return db['FaxAccount'][_0x3d51('0x5c')]({'where':{'id':_0x59b825[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x548d83,null))[_0x3d51('0x38')](function(_0x32cb32){if(_0x32cb32){return _0x32cb32[_0x3d51('0xc5')](_0x59b825[_0x3d51('0x45')]['ids'])[_0x3d51('0x38')](function(){if(_[_0x3d51('0xc6')](_0x59b825[_0x3d51('0x45')][_0x3d51('0x6f')])){for(var _0x32e4c0=0x0;_0x32e4c0<_0x59b825['query']['ids'][_0x3d51('0x4a')];_0x32e4c0+=0x1){socket[_0x3d51('0xc3')](_0x3d51('0xc7'),{'UserId':Number(_0x59b825['query'][_0x3d51('0x6f')][_0x32e4c0]),'FaxAccountId':Number(_0x59b825[_0x3d51('0x59')]['id'])});}}else{socket[_0x3d51('0xc3')](_0x3d51('0xc7'),{'UserId':Number(_0x59b825[_0x3d51('0x45')][_0x3d51('0x6f')]),'FaxAccountId':Number(_0x59b825['params']['id'])});}});}})[_0x3d51('0x38')](respondWithStatusCode(_0x548d83,null))[_0x3d51('0x2a')](handleError(_0x548d83,null));};exports['getAgents']=function(_0x22c6a7,_0x454fd9,_0x114337){var _0x4d190b={};var _0x576510={};var _0x3582e4;var _0x5f3803;return db['FaxAccount'][_0x3d51('0x6d')]({'where':{'id':_0x22c6a7[_0x3d51('0x59')]['id']}})[_0x3d51('0x38')](handleEntityNotFound(_0x454fd9,null))[_0x3d51('0x38')](function(_0x49f8c6){if(_0x49f8c6){_0x3582e4=_0x49f8c6;_0x576510[_0x3d51('0x44')]=_['keys'](db[_0x3d51('0x79')][_0x3d51('0x42')]);_0x576510['query']=_[_0x3d51('0x5a')](_0x22c6a7[_0x3d51('0x45')]);_0x576510[_0x3d51('0x46')]=_['intersection'](_0x576510[_0x3d51('0x44')],_0x576510[_0x3d51('0x45')]);_0x4d190b[_0x3d51('0x47')]=_[_0x3d51('0x48')](_0x576510[_0x3d51('0x44')],qs[_0x3d51('0x49')](_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x49')]));_0x4d190b[_0x3d51('0x47')]=_0x4d190b[_0x3d51('0x47')][_0x3d51('0x4a')]?_0x4d190b[_0x3d51('0x47')]:_0x576510[_0x3d51('0x44')];_0x4d190b[_0x3d51('0x4d')]=qs[_0x3d51('0x4e')](_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x4e')]);_0x4d190b['where']=qs[_0x3d51('0x46')](_[_0x3d51('0x6e')](_0x22c6a7[_0x3d51('0x45')],_0x576510['filters']));if(_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x50')]){_0x4d190b[_0x3d51('0x4f')]=_[_0x3d51('0x51')](_0x4d190b[_0x3d51('0x4f')],{'$or':_[_0x3d51('0x40')](_0x4d190b['attributes'],function(_0x3e0c7f){var _0x4fad52={};_0x4fad52[_0x3e0c7f]={'$like':'%'+_0x22c6a7['query']['filter']+'%'};return _0x4fad52;})});}_0x4d190b=_[_0x3d51('0x51')]({},_0x4d190b,_0x22c6a7['options']);return _0x3582e4[_0x3d51('0xc8')](_0x4d190b);}})[_0x3d51('0x38')](function(_0x3ebdfa){if(_0x3ebdfa){_0x5f3803=_0x3ebdfa[_0x3d51('0x4a')];if(!_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x4b')]('nolimit')){_0x4d190b[_0x3d51('0x31')]=qs[_0x3d51('0x31')](_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x31')]);_0x4d190b['offset']=qs[_0x3d51('0x2f')](_0x22c6a7[_0x3d51('0x45')][_0x3d51('0x2f')]);}return _0x3582e4['getAgents'](_0x4d190b);}})[_0x3d51('0x38')](function(_0x2d6f94){if(_0x2d6f94){return _0x2d6f94?{'count':_0x5f3803,'rows':_0x2d6f94}:null;}})['then'](respondWithResult(_0x454fd9,null))[_0x3d51('0x2a')](handleError(_0x454fd9,null));};
\ No newline at end of file
+var _0x4e90=['dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./faxAccount.socket','register','client','http','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','FaxAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','length','nolimit','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','User','Owner','fullname','internal','Tag','Tags','color','tag','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','getApplications','localstationid','app','system','description','Fax\x20Extension','priority','push','Answer','CDR(type)=inbound-fax','Set','faxdetect','maxrate','minrate','modem','FAXOPT(','Wait','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','addAccountApplications','updateAccountApplications','VoiceExtension','omit','tech','createdAt','TrunkId','ListId','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','user','out','filename','Contact\x20not\x20found','spread'];(function(_0x141c63,_0x325b6c){var _0x5d5b09=function(_0x218766){while(--_0x218766){_0x141c63['push'](_0x141c63['shift']());}};_0x5d5b09(++_0x325b6c);}(_0x4e90,0x198));var _0x04e9=function(_0xec2609,_0xe946c6){_0xec2609=_0xec2609-0x0;var _0x3bcc9d=_0x4e90[_0xec2609];return _0x3bcc9d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x04e9('0x0'));var jsonpatch=require(_0x04e9('0x1'));var rp=require(_0x04e9('0x2'));var moment=require(_0x04e9('0x3'));var BPromise=require(_0x04e9('0x4'));var Mustache=require(_0x04e9('0x5'));var util=require('util');var path=require(_0x04e9('0x6'));var sox=require(_0x04e9('0x7'));var csv=require(_0x04e9('0x8'));var ejs=require(_0x04e9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x04e9('0xa'));var crypto=require(_0x04e9('0xb'));var jsforce=require(_0x04e9('0xc'));var deskjs=require(_0x04e9('0xd'));var toCsv=require(_0x04e9('0x8'));var querystring=require(_0x04e9('0xe'));var Papa=require(_0x04e9('0xf'));var Redis=require(_0x04e9('0x10'));var authService=require(_0x04e9('0x11'));var qs=require(_0x04e9('0x12'));var as=require(_0x04e9('0x13'));var hardwareService=require(_0x04e9('0x14'));var logger=require(_0x04e9('0x15'))(_0x04e9('0x16'));var utils=require('../../config/utils');var config=require(_0x04e9('0x17'));var licenseUtil=require(_0x04e9('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x04e9('0x19')](config[_0x04e9('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x04e9('0x1b'))(new Redis(config['redis']));require(_0x04e9('0x1c'))[_0x04e9('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0x04e9('0x1e')]['http']({'port':0x232c});var client9002=jayson['client'][_0x04e9('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2ed924,_0x5e5fd9,_0x4452f2,_0x2d43c4){return new BPromise(function(_0x266119,_0x14934b){var _0x167ebf=_0x2d43c4||client;return _0x167ebf['request'](_0x2ed924,_0x4452f2)['then'](function(_0x53df5e){logger[_0x04e9('0x20')](_0x04e9('0x21'),_0x5e5fd9,_0x04e9('0x22'));logger[_0x04e9('0x23')](_0x04e9('0x24'),_0x5e5fd9,_0x04e9('0x22'),JSON[_0x04e9('0x25')](_0x53df5e));if(_0x53df5e[_0x04e9('0x26')]){if(_0x53df5e['error'][_0x04e9('0x27')]===0x1f4){logger[_0x04e9('0x26')](_0x04e9('0x21'),_0x5e5fd9,_0x53df5e[_0x04e9('0x26')][_0x04e9('0x28')]);return _0x14934b(_0x53df5e[_0x04e9('0x26')][_0x04e9('0x28')]);}logger[_0x04e9('0x26')](_0x04e9('0x21'),_0x5e5fd9,_0x53df5e[_0x04e9('0x26')][_0x04e9('0x28')]);return _0x266119(_0x53df5e['error'][_0x04e9('0x28')]);}else{logger[_0x04e9('0x20')](_0x04e9('0x21'),_0x5e5fd9,_0x04e9('0x22'));_0x266119(_0x53df5e[_0x04e9('0x29')][_0x04e9('0x28')]);}})['catch'](function(_0x57d2ee){logger[_0x04e9('0x26')](_0x04e9('0x21'),_0x5e5fd9,_0x57d2ee);_0x14934b(_0x57d2ee);});});}function respondWithStatusCode(_0x1d4359,_0x1e7fef){_0x1e7fef=_0x1e7fef||0xcc;return function(_0xc31d7b){if(_0xc31d7b){return _0x1d4359[_0x04e9('0x2a')](_0x1e7fef);}return _0x1d4359[_0x04e9('0x2b')](_0x1e7fef)[_0x04e9('0x2c')]();};}function respondWithResult(_0x30794b,_0x2896dd){_0x2896dd=_0x2896dd||0xc8;return function(_0x5ca6da){if(_0x5ca6da){return _0x30794b[_0x04e9('0x2b')](_0x2896dd)[_0x04e9('0x2d')](_0x5ca6da);}};}function respondWithFilteredResult(_0x111a42,_0x239652){return function(_0x300d5c){if(_0x300d5c){var _0x5261a4=typeof _0x239652[_0x04e9('0x2e')]===_0x04e9('0x2f')&&typeof _0x239652[_0x04e9('0x30')]===_0x04e9('0x2f');var _0x3b1095=_0x300d5c['count'];var _0x11b25d=_0x5261a4?0x0:_0x239652[_0x04e9('0x2e')];var _0x45428e=_0x5261a4?_0x300d5c[_0x04e9('0x31')]:_0x239652[_0x04e9('0x2e')]+_0x239652['limit'];var _0x489dd5;if(_0x45428e>=_0x3b1095){_0x45428e=_0x3b1095;_0x489dd5=0xc8;}else{_0x489dd5=0xce;}_0x111a42['status'](_0x489dd5);return _0x111a42['set'](_0x04e9('0x32'),_0x11b25d+'-'+_0x45428e+'/'+_0x3b1095)[_0x04e9('0x2d')](_0x300d5c);}return null;};}function patchUpdates(_0x1e30e3){return function(_0x5978b7){try{jsonpatch[_0x04e9('0x33')](_0x5978b7,_0x1e30e3,!![]);}catch(_0x50b802){return BPromise[_0x04e9('0x34')](_0x50b802);}return _0x5978b7[_0x04e9('0x35')]();};}function saveUpdates(_0x27930c,_0x4b3e92){return function(_0x5920e2){if(_0x5920e2){return _0x5920e2[_0x04e9('0x36')](_0x27930c)[_0x04e9('0x37')](function(_0x2dacfb){return _0x2dacfb;});}return null;};}function removeEntity(_0x4dd403,_0x371ede){return function(_0x328a67){if(_0x328a67){return _0x328a67[_0x04e9('0x38')]()['then'](function(){var _0x117e9e=_0x328a67[_0x04e9('0x39')]({'plain':!![]});var _0x587a4f=_0x04e9('0x3a');return db[_0x04e9('0x3b')][_0x04e9('0x38')]({'where':{'type':_0x587a4f,'resourceId':_0x117e9e['id']}})[_0x04e9('0x37')](function(){return _0x328a67;});})['then'](function(){_0x4dd403[_0x04e9('0x2b')](0xcc)[_0x04e9('0x2c')]();});}};}function handleEntityNotFound(_0x34631c,_0x866aa0){return function(_0x456e85){if(!_0x456e85){_0x34631c[_0x04e9('0x2a')](0x194);}return _0x456e85;};}function handleError(_0x1cfc85,_0x207507){_0x207507=_0x207507||0x1f4;return function(_0x24d154){logger[_0x04e9('0x26')](_0x24d154[_0x04e9('0x3c')]);if(_0x24d154[_0x04e9('0x3d')]){delete _0x24d154['name'];}_0x1cfc85[_0x04e9('0x2b')](_0x207507)[_0x04e9('0x3e')](_0x24d154);};}exports[_0x04e9('0x3f')]=function(_0xf8c66d,_0x36a02f){var _0x4040f1={'include':[{'model':db[_0x04e9('0x40')],'as':_0x04e9('0x41')}]},_0x3d9b29={},_0x1444df={'count':0x0,'rows':[]};var _0x5e2154=_[_0x04e9('0x42')](db[_0x04e9('0x43')][_0x04e9('0x44')],function(_0x965d24){return{'name':_0x965d24[_0x04e9('0x45')],'type':_0x965d24['type'][_0x04e9('0x46')]};});_0x3d9b29[_0x04e9('0x47')]=_[_0x04e9('0x42')](_0x5e2154,'name');_0x3d9b29['query']=_['keys'](_0xf8c66d[_0x04e9('0x48')]);_0x3d9b29[_0x04e9('0x49')]=_[_0x04e9('0x4a')](_0x3d9b29[_0x04e9('0x47')],_0x3d9b29['query']);_0x4040f1[_0x04e9('0x4b')]=_['intersection'](_0x3d9b29[_0x04e9('0x47')],qs[_0x04e9('0x4c')](_0xf8c66d['query'][_0x04e9('0x4c')]));_0x4040f1[_0x04e9('0x4b')]=_0x4040f1[_0x04e9('0x4b')]['length']?_0x4040f1[_0x04e9('0x4b')]:_0x3d9b29['model'];if(!_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x4d')]('nolimit')){_0x4040f1[_0x04e9('0x30')]=qs[_0x04e9('0x30')](_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x30')]);_0x4040f1[_0x04e9('0x2e')]=qs[_0x04e9('0x2e')](_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x2e')]);}_0x4040f1[_0x04e9('0x4e')]=qs[_0x04e9('0x4f')](_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x4f')]);_0x4040f1[_0x04e9('0x50')]=qs[_0x04e9('0x49')](_[_0x04e9('0x51')](_0xf8c66d[_0x04e9('0x48')],_0x3d9b29[_0x04e9('0x49')]),_0x5e2154);if(_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x52')]){_0x4040f1[_0x04e9('0x50')]=_[_0x04e9('0x53')](_0x4040f1['where'],{'$or':_[_0x04e9('0x42')](_0x5e2154,function(_0x5a9837){if(_0x5a9837[_0x04e9('0x54')]!==_0x04e9('0x55')){var _0x58d11a={};_0x58d11a[_0x5a9837['name']]={'$like':'%'+_0xf8c66d[_0x04e9('0x48')][_0x04e9('0x52')]+'%'};return _0x58d11a;}})});}_0x4040f1=_[_0x04e9('0x53')]({},_0x4040f1,_0xf8c66d[_0x04e9('0x56')]);var _0x40461b={'where':_0x4040f1[_0x04e9('0x50')]};return db[_0x04e9('0x43')][_0x04e9('0x31')](_0x40461b)['then'](function(_0x144efa){_0x1444df[_0x04e9('0x31')]=_0x144efa;if(_0xf8c66d['query'][_0x04e9('0x57')]){_0x4040f1[_0x04e9('0x58')]=[{'all':!![]}];}return db[_0x04e9('0x43')][_0x04e9('0x59')](_0x4040f1);})[_0x04e9('0x37')](function(_0x2f3528){_0x1444df[_0x04e9('0x5a')]=_0x2f3528;return _0x1444df;})[_0x04e9('0x37')](respondWithFilteredResult(_0x36a02f,_0x4040f1))[_0x04e9('0x5b')](handleError(_0x36a02f,null));};exports[_0x04e9('0x5c')]=function(_0x2b48a7,_0x251e5b){var _0x50d71c={'raw':![],'where':{'id':_0x2b48a7[_0x04e9('0x5d')]['id']},'include':[{'model':db['Pause'],'as':_0x04e9('0x41')}]},_0x4cb217={};_0x4cb217['model']=_[_0x04e9('0x5e')](db['FaxAccount'][_0x04e9('0x44')]);_0x4cb217[_0x04e9('0x48')]=_[_0x04e9('0x5e')](_0x2b48a7['query']);_0x4cb217[_0x04e9('0x49')]=_[_0x04e9('0x4a')](_0x4cb217[_0x04e9('0x47')],_0x4cb217[_0x04e9('0x48')]);_0x50d71c[_0x04e9('0x4b')]=_['intersection'](_0x4cb217[_0x04e9('0x47')],qs[_0x04e9('0x4c')](_0x2b48a7[_0x04e9('0x48')][_0x04e9('0x4c')]));_0x50d71c[_0x04e9('0x4b')]=_0x50d71c[_0x04e9('0x4b')]['length']?_0x50d71c[_0x04e9('0x4b')]:_0x4cb217[_0x04e9('0x47')];if(_0x2b48a7['query'][_0x04e9('0x57')]){_0x50d71c[_0x04e9('0x58')]=[{'all':!![]}];}_0x50d71c=_['merge']({},_0x50d71c,_0x2b48a7[_0x04e9('0x56')]);return db[_0x04e9('0x43')][_0x04e9('0x5f')](_0x50d71c)[_0x04e9('0x37')](handleEntityNotFound(_0x251e5b,null))[_0x04e9('0x37')](respondWithResult(_0x251e5b,null))[_0x04e9('0x5b')](handleError(_0x251e5b,null));};exports[_0x04e9('0x60')]=function(_0x224208,_0x22c003){return db[_0x04e9('0x43')]['create'](_0x224208['body'],{})['then'](function(_0xe37f55){var _0x314e64=_0x224208['user'][_0x04e9('0x39')]({'plain':!![]});if(!_0x314e64)throw new Error(_0x04e9('0x61'));if(_0x314e64[_0x04e9('0x62')]==='user'){var _0x16986b=_0xe37f55[_0x04e9('0x39')]({'plain':!![]});var _0x4c17b1=_0x04e9('0x3a');return db[_0x04e9('0x63')]['find']({'where':{'name':_0x4c17b1,'userProfileId':_0x314e64[_0x04e9('0x64')]},'raw':!![]})[_0x04e9('0x37')](function(_0x567bdc){if(_0x567bdc&&_0x567bdc[_0x04e9('0x65')]===0x0){return db[_0x04e9('0x3b')][_0x04e9('0x60')]({'name':_0x16986b[_0x04e9('0x3d')],'resourceId':_0x16986b['id'],'type':_0x567bdc[_0x04e9('0x3d')],'sectionId':_0x567bdc['id']},{})[_0x04e9('0x37')](function(){return _0xe37f55;});}else{return _0xe37f55;}})[_0x04e9('0x5b')](function(_0x1f67e4){logger['error'](_0x04e9('0x66'),_0x1f67e4);throw _0x1f67e4;});}return _0xe37f55;})['then'](respondWithResult(_0x22c003,0xc9))['catch'](handleError(_0x22c003,null));};exports[_0x04e9('0x36')]=function(_0x3b88d3,_0x392f24){if(_0x3b88d3[_0x04e9('0x67')]['id']){delete _0x3b88d3['body']['id'];}return db[_0x04e9('0x43')][_0x04e9('0x5f')]({'where':{'id':_0x3b88d3['params']['id']},'include':[{'model':db[_0x04e9('0x40')],'as':'mandatoryDispositionPause'}]})[_0x04e9('0x37')](handleEntityNotFound(_0x392f24,null))[_0x04e9('0x37')](saveUpdates(_0x3b88d3[_0x04e9('0x67')],null))[_0x04e9('0x37')](respondWithResult(_0x392f24,null))[_0x04e9('0x5b')](handleError(_0x392f24,null));};exports[_0x04e9('0x38')]=function(_0x16eb61,_0x19020d){return db['FaxAccount'][_0x04e9('0x5f')]({'where':{'id':_0x16eb61[_0x04e9('0x5d')]['id']}})['then'](handleEntityNotFound(_0x19020d,null))[_0x04e9('0x37')](removeEntity(_0x19020d,null))[_0x04e9('0x5b')](handleError(_0x19020d,null));};exports['describe']=function(_0x493ca7,_0x30438f){return db[_0x04e9('0x43')][_0x04e9('0x68')]()['then'](respondWithResult(_0x30438f,null))[_0x04e9('0x5b')](handleError(_0x30438f,null));};exports[_0x04e9('0x69')]=function(_0x1753ac,_0x394267,_0x337833){if(_0x1753ac['body']['id']){delete _0x1753ac[_0x04e9('0x67')]['id'];}return db['FaxAccount'][_0x04e9('0x5f')]({'where':{'id':_0x1753ac[_0x04e9('0x5d')]['id']}})['then'](handleEntityNotFound(_0x394267,null))[_0x04e9('0x37')](function(_0x2f97f5){if(_0x2f97f5){_0x1753ac[_0x04e9('0x67')][_0x04e9('0x6a')]=_0x2f97f5['id'];return db['Disposition'][_0x04e9('0x60')](_0x1753ac[_0x04e9('0x67')]);}})['then'](respondWithResult(_0x394267,null))['catch'](handleError(_0x394267,null));};exports[_0x04e9('0x6b')]=function(_0x339dc0,_0x445535,_0x943b34){var _0xe52ff5={'raw':![],'where':{}};var _0x4289f1={};var _0x33bcc6={'count':0x0,'rows':[]};return db[_0x04e9('0x43')][_0x04e9('0x6c')]({'where':{'id':_0x339dc0[_0x04e9('0x5d')]['id']}})['then'](handleEntityNotFound(_0x445535,null))[_0x04e9('0x37')](function(_0x54569c){if(_0x54569c){_0x4289f1[_0x04e9('0x47')]=_['keys'](db[_0x04e9('0x6d')][_0x04e9('0x44')]);_0x4289f1[_0x04e9('0x48')]=_['keys'](_0x339dc0['query']);_0x4289f1['filters']=_[_0x04e9('0x4a')](_0x4289f1[_0x04e9('0x47')],_0x4289f1[_0x04e9('0x48')]);_0xe52ff5['attributes']=_[_0x04e9('0x4a')](_0x4289f1[_0x04e9('0x47')],qs[_0x04e9('0x4c')](_0x339dc0[_0x04e9('0x48')][_0x04e9('0x4c')]));_0xe52ff5[_0x04e9('0x4b')]=_0xe52ff5[_0x04e9('0x4b')]['length']?_0xe52ff5[_0x04e9('0x4b')]:_0x4289f1[_0x04e9('0x47')];if(!_0x339dc0['query'][_0x04e9('0x4d')]('nolimit')){_0xe52ff5[_0x04e9('0x30')]=qs[_0x04e9('0x30')](_0x339dc0[_0x04e9('0x48')][_0x04e9('0x30')]);_0xe52ff5[_0x04e9('0x2e')]=qs[_0x04e9('0x2e')](_0x339dc0[_0x04e9('0x48')][_0x04e9('0x2e')]);}_0xe52ff5[_0x04e9('0x4e')]=qs[_0x04e9('0x4f')](_0x339dc0[_0x04e9('0x48')][_0x04e9('0x4f')]);_0xe52ff5[_0x04e9('0x50')]=qs[_0x04e9('0x49')](_[_0x04e9('0x51')](_0x339dc0['query'],_0x4289f1[_0x04e9('0x49')]));_0xe52ff5['where'][_0x04e9('0x6a')]=_0x54569c['id'];if(_0x339dc0[_0x04e9('0x48')][_0x04e9('0x52')]){_0xe52ff5[_0x04e9('0x50')]=_['merge'](_0xe52ff5['where'],{'$or':_[_0x04e9('0x42')](_0xe52ff5['attributes'],function(_0x2bbf41){var _0xb79f32={};_0xb79f32[_0x2bbf41]={'$like':'%'+_0x339dc0[_0x04e9('0x48')][_0x04e9('0x52')]+'%'};return _0xb79f32;})});}_0xe52ff5=_[_0x04e9('0x53')]({},_0xe52ff5,_0x339dc0['options']);return db[_0x04e9('0x6d')][_0x04e9('0x31')]({'where':_0xe52ff5[_0x04e9('0x50')]})['then'](function(_0x48b1d0){_0x33bcc6[_0x04e9('0x31')]=_0x48b1d0;if(_0x339dc0['query'][_0x04e9('0x57')]){_0xe52ff5[_0x04e9('0x58')]=[{'all':!![]}];}return db[_0x04e9('0x6d')][_0x04e9('0x59')](_0xe52ff5);})[_0x04e9('0x37')](function(_0x3a30af){_0x33bcc6[_0x04e9('0x5a')]=_0x3a30af;return _0x33bcc6;});}})['then'](respondWithFilteredResult(_0x445535,_0xe52ff5))['catch'](handleError(_0x445535,null));};exports[_0x04e9('0x6e')]=function(_0xb2b39d,_0x574f65,_0x1c86e8){return db['FaxAccount']['find']({'where':{'id':_0xb2b39d[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x574f65,null))[_0x04e9('0x37')](function(_0x4031da){if(_0x4031da){return _0x4031da[_0x04e9('0x6e')](_0xb2b39d[_0x04e9('0x48')][_0x04e9('0x6f')]);}})[_0x04e9('0x37')](respondWithStatusCode(_0x574f65,null))[_0x04e9('0x5b')](handleError(_0x574f65,null));};exports[_0x04e9('0x70')]=function(_0x48c2c6,_0x18f4df,_0x10ac30){if(_0x48c2c6[_0x04e9('0x67')]['id']){delete _0x48c2c6['body']['id'];}return db['FaxAccount'][_0x04e9('0x5f')]({'where':{'id':_0x48c2c6[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x18f4df,null))[_0x04e9('0x37')](function(_0x4776c2){if(_0x4776c2){_0x48c2c6[_0x04e9('0x67')][_0x04e9('0x6a')]=_0x4776c2['id'];return db[_0x04e9('0x71')][_0x04e9('0x60')](_0x48c2c6[_0x04e9('0x67')]);}})['then'](respondWithResult(_0x18f4df,null))[_0x04e9('0x5b')](handleError(_0x18f4df,null));};exports[_0x04e9('0x72')]=function(_0x2d14dc,_0x31610b,_0x475a80){var _0x494c6c={'raw':![],'where':{}};var _0x39e805={};var _0x546801={'count':0x0,'rows':[]};return db[_0x04e9('0x43')][_0x04e9('0x6c')]({'where':{'id':_0x2d14dc[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x31610b,null))[_0x04e9('0x37')](function(_0x1f0839){if(_0x1f0839){_0x39e805[_0x04e9('0x47')]=_[_0x04e9('0x5e')](db[_0x04e9('0x71')]['rawAttributes']);_0x39e805[_0x04e9('0x48')]=_[_0x04e9('0x5e')](_0x2d14dc[_0x04e9('0x48')]);_0x39e805['filters']=_[_0x04e9('0x4a')](_0x39e805['model'],_0x39e805[_0x04e9('0x48')]);_0x494c6c[_0x04e9('0x4b')]=_[_0x04e9('0x4a')](_0x39e805[_0x04e9('0x47')],qs['fields'](_0x2d14dc[_0x04e9('0x48')]['fields']));_0x494c6c[_0x04e9('0x4b')]=_0x494c6c[_0x04e9('0x4b')][_0x04e9('0x73')]?_0x494c6c['attributes']:_0x39e805[_0x04e9('0x47')];if(!_0x2d14dc[_0x04e9('0x48')]['hasOwnProperty'](_0x04e9('0x74'))){_0x494c6c[_0x04e9('0x30')]=qs['limit'](_0x2d14dc['query'][_0x04e9('0x30')]);_0x494c6c[_0x04e9('0x2e')]=qs['offset'](_0x2d14dc[_0x04e9('0x48')][_0x04e9('0x2e')]);}_0x494c6c[_0x04e9('0x4e')]=qs[_0x04e9('0x4f')](_0x2d14dc[_0x04e9('0x48')][_0x04e9('0x4f')]);_0x494c6c[_0x04e9('0x50')]=qs[_0x04e9('0x49')](_[_0x04e9('0x51')](_0x2d14dc[_0x04e9('0x48')],_0x39e805[_0x04e9('0x49')]));_0x494c6c[_0x04e9('0x50')][_0x04e9('0x6a')]=_0x1f0839['id'];if(_0x2d14dc[_0x04e9('0x48')][_0x04e9('0x52')]){_0x494c6c[_0x04e9('0x50')]=_[_0x04e9('0x53')](_0x494c6c['where'],{'$or':_['map'](_0x494c6c[_0x04e9('0x4b')],function(_0x1afc82){var _0x478661={};_0x478661[_0x1afc82]={'$like':'%'+_0x2d14dc[_0x04e9('0x48')][_0x04e9('0x52')]+'%'};return _0x478661;})});}_0x494c6c=_['merge']({},_0x494c6c,_0x2d14dc['options']);return db['CannedAnswer']['count']({'where':_0x494c6c['where']})[_0x04e9('0x37')](function(_0x66f940){_0x546801[_0x04e9('0x31')]=_0x66f940;if(_0x2d14dc[_0x04e9('0x48')][_0x04e9('0x57')]){_0x494c6c[_0x04e9('0x58')]=[{'all':!![]}];}return db[_0x04e9('0x71')][_0x04e9('0x59')](_0x494c6c);})[_0x04e9('0x37')](function(_0xd3e5c1){_0x546801[_0x04e9('0x5a')]=_0xd3e5c1;return _0x546801;});}})[_0x04e9('0x37')](respondWithFilteredResult(_0x31610b,_0x494c6c))['catch'](handleError(_0x31610b,null));};exports[_0x04e9('0x75')]=function(_0x5147c2,_0x5c4701,_0x113cbd){return db['FaxAccount'][_0x04e9('0x5f')]({'where':{'id':_0x5147c2['params']['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x5c4701,null))[_0x04e9('0x37')](function(_0x1392d5){if(_0x1392d5){return _0x1392d5['removeAnswers'](_0x5147c2['query'][_0x04e9('0x6f')]);}})[_0x04e9('0x37')](respondWithStatusCode(_0x5c4701,null))[_0x04e9('0x5b')](handleError(_0x5c4701,null));};exports[_0x04e9('0x76')]=function(_0x56f60b,_0x4b05dc,_0x4b745f){return db[_0x04e9('0x77')][_0x04e9('0x5f')]({'where':{'id':_0x56f60b[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x4b05dc,null))[_0x04e9('0x37')](function(_0x2a4d51){if(_0x2a4d51){return _0x2a4d51[_0x04e9('0x76')](_0x56f60b[_0x04e9('0x67')][_0x04e9('0x6f')],_['omit'](_0x56f60b['body'],['ids','id'])||{});}})[_0x04e9('0x37')](respondWithResult(_0x4b05dc,null))['catch'](handleError(_0x4b05dc,null));};exports[_0x04e9('0x78')]=function(_0x3dc24d,_0x53acd9,_0x4801bc){var _0x31b83d={'raw':![],'where':{}};var _0x2ca0b3={};var _0x1b62e9={'count':0x0,'rows':[]};return db['FaxAccount'][_0x04e9('0x6c')]({'where':{'id':_0x3dc24d[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x53acd9,null))[_0x04e9('0x37')](function(_0x10f5cd){if(_0x10f5cd){_0x2ca0b3[_0x04e9('0x47')]=_[_0x04e9('0x5e')](db[_0x04e9('0x77')][_0x04e9('0x44')]);_0x2ca0b3[_0x04e9('0x48')]=_[_0x04e9('0x5e')](_0x3dc24d[_0x04e9('0x48')]);_0x2ca0b3[_0x04e9('0x49')]=_[_0x04e9('0x4a')](_0x2ca0b3['model'],_0x2ca0b3[_0x04e9('0x48')]);_0x31b83d[_0x04e9('0x4b')]=_[_0x04e9('0x4a')](_0x2ca0b3[_0x04e9('0x47')],qs[_0x04e9('0x4c')](_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x4c')]));_0x31b83d[_0x04e9('0x4b')]=_0x31b83d['attributes']['length']?_0x31b83d['attributes']:_0x2ca0b3[_0x04e9('0x47')];if(!_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x4d')]('nolimit')){_0x31b83d[_0x04e9('0x30')]=qs['limit'](_0x3dc24d['query'][_0x04e9('0x30')]);_0x31b83d[_0x04e9('0x2e')]=qs['offset'](_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x2e')]);}_0x31b83d[_0x04e9('0x4e')]=qs['sort'](_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x4f')]);_0x31b83d[_0x04e9('0x50')]=qs['filters'](_[_0x04e9('0x51')](_0x3dc24d[_0x04e9('0x48')],_0x2ca0b3[_0x04e9('0x49')]));_0x31b83d[_0x04e9('0x50')][_0x04e9('0x6a')]=_0x10f5cd['id'];if(_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x52')]){_0x31b83d[_0x04e9('0x50')]=_[_0x04e9('0x53')](_0x31b83d[_0x04e9('0x50')],{'$or':_[_0x04e9('0x42')](_0x31b83d[_0x04e9('0x4b')],function(_0x386e36){var _0x55789b={};_0x55789b[_0x386e36]={'$like':'%'+_0x3dc24d[_0x04e9('0x48')]['filter']+'%'};return _0x55789b;})});}_0x31b83d=_[_0x04e9('0x53')]({},_0x31b83d,_0x3dc24d[_0x04e9('0x56')]);return db[_0x04e9('0x77')][_0x04e9('0x31')]({'where':_0x31b83d[_0x04e9('0x50')]})[_0x04e9('0x37')](function(_0x300ae6){_0x1b62e9['count']=_0x300ae6;if(_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x57')]){_0x31b83d[_0x04e9('0x58')]=[{'model':db[_0x04e9('0x79')],'as':'Contact','required':![]},{'model':db[_0x04e9('0x7a')],'as':_0x04e9('0x7b'),'attributes':[_0x04e9('0x3d'),_0x04e9('0x7c'),_0x04e9('0x7d')],'required':![]},{'model':db[_0x04e9('0x7e')],'as':_0x04e9('0x7f'),'attributes':['id','name',_0x04e9('0x80')],'where':_0x3dc24d[_0x04e9('0x48')]['tag']?{'id':_0x3dc24d[_0x04e9('0x48')]['tag']}:undefined,'required':_0x3dc24d[_0x04e9('0x48')][_0x04e9('0x81')]?!![]:![]}];}return db[_0x04e9('0x77')][_0x04e9('0x59')](_0x31b83d);})['then'](function(_0x2a7eed){_0x1b62e9[_0x04e9('0x5a')]=_0x2a7eed;return _0x1b62e9;});}})[_0x04e9('0x37')](respondWithFilteredResult(_0x53acd9,_0x31b83d))[_0x04e9('0x5b')](handleError(_0x53acd9,null));};exports['addApplications']=function(_0xa991f7,_0x88cb70){var _0x7b3327=_0xa991f7['params']['id'];var _0x540373=_0xa991f7[_0x04e9('0x67')];var _0x1ff2b0=0xc8;var _0xf3f1d6=null;return db[_0x04e9('0x82')][_0x04e9('0x83')]({'isolationLevel':db['sequelize']['Transaction'][_0x04e9('0x84')][_0x04e9('0x85')]},function(_0x4aa76a){return db[_0x04e9('0x43')][_0x04e9('0x6c')]({'where':{'id':_0x7b3327},'transaction':_0x4aa76a})[_0x04e9('0x37')](function(_0x199c58){if(_0x199c58){return db[_0x04e9('0x86')]['destroy']({'where':{'FaxAccountId':_0x7b3327},'transaction':_0x4aa76a})[_0x04e9('0x37')](function(){var _0x2dfed3=_['map'](_0x540373,function(_0x1e1e3c){_0x1e1e3c[_0x04e9('0x6a')]=_0x7b3327;return _0x1e1e3c;});return db[_0x04e9('0x86')][_0x04e9('0x87')](_0x2dfed3,{'transaction':_0x4aa76a});});}else{_0x1ff2b0=0x194;_0xf3f1d6=[];}});})[_0x04e9('0x37')](function(){if(_0x1ff2b0!==0x194){return db['FaxApplication'][_0x04e9('0x88')]({'where':{'FaxAccountId':_0x7b3327},'order':'priority'})[_0x04e9('0x37')](function(_0x41748b){_0xf3f1d6=_0x41748b;});}})[_0x04e9('0x5b')](function(_0xfe6a10){_0x1ff2b0=0x1f4;logger['error'](_0xfe6a10[_0x04e9('0x3c')]);if(_0xfe6a10['name']){delete _0xfe6a10[_0x04e9('0x3d')];}_0xf3f1d6=_0xfe6a10;})['finally'](function(){if(_0xf3f1d6===null){_0x88cb70['sendStatus'](_0x1ff2b0);}else{if(_0x1ff2b0===0x1f4){_0x88cb70[_0x04e9('0x2b')](_0x1ff2b0)[_0x04e9('0x3e')](_0xf3f1d6);}else{_0x88cb70[_0x04e9('0x2b')](_0x1ff2b0)['json'](_0xf3f1d6);}}});};exports[_0x04e9('0x89')]=function(_0xde11a3,_0x346eae,_0x21028a){var _0x1509a9={};var _0x2e973d={};var _0x5c8029;var _0x476a12;return db['FaxAccount'][_0x04e9('0x6c')]({'where':{'id':_0xde11a3[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x346eae,null))[_0x04e9('0x37')](function(_0x2fd500){if(_0x2fd500){_0x5c8029=_0x2fd500;_0x2e973d[_0x04e9('0x47')]=_[_0x04e9('0x5e')](db[_0x04e9('0x86')][_0x04e9('0x44')]);_0x2e973d[_0x04e9('0x48')]=_[_0x04e9('0x5e')](_0xde11a3[_0x04e9('0x48')]);_0x2e973d['filters']=_[_0x04e9('0x4a')](_0x2e973d[_0x04e9('0x47')],_0x2e973d[_0x04e9('0x48')]);_0x1509a9['attributes']=_['intersection'](_0x2e973d[_0x04e9('0x47')],qs['fields'](_0xde11a3[_0x04e9('0x48')][_0x04e9('0x4c')]));_0x1509a9[_0x04e9('0x4b')]=_0x1509a9['attributes']['length']?_0x1509a9[_0x04e9('0x4b')]:_0x2e973d[_0x04e9('0x47')];_0x1509a9['order']=qs[_0x04e9('0x4f')](_0xde11a3[_0x04e9('0x48')][_0x04e9('0x4f')]);_0x1509a9[_0x04e9('0x50')]=qs['filters'](_[_0x04e9('0x51')](_0xde11a3['query'],_0x2e973d[_0x04e9('0x49')]));if(_0xde11a3[_0x04e9('0x48')][_0x04e9('0x52')]){_0x1509a9[_0x04e9('0x50')]=_[_0x04e9('0x53')](_0x1509a9[_0x04e9('0x50')],{'$or':_[_0x04e9('0x42')](_0x1509a9[_0x04e9('0x4b')],function(_0x61e971){var _0x184ea6={};_0x184ea6[_0x61e971]={'$like':'%'+_0xde11a3['query']['filter']+'%'};return _0x184ea6;})});}_0x1509a9=_['merge']({},_0x1509a9,_0xde11a3[_0x04e9('0x56')]);return _0x5c8029[_0x04e9('0x89')](_0x1509a9);}})[_0x04e9('0x37')](function(_0x4e1d0b){if(_0x4e1d0b){_0x476a12=_0x4e1d0b[_0x04e9('0x73')];if(!_0xde11a3['query'][_0x04e9('0x4d')]('nolimit')){_0x1509a9[_0x04e9('0x30')]=qs[_0x04e9('0x30')](_0xde11a3[_0x04e9('0x48')][_0x04e9('0x30')]);_0x1509a9['offset']=qs['offset'](_0xde11a3[_0x04e9('0x48')][_0x04e9('0x2e')]);}return _0x5c8029[_0x04e9('0x89')](_0x1509a9);}})[_0x04e9('0x37')](function(_0x26a307){if(_0x26a307){return _0x26a307?{'count':_0x476a12,'rows':_0x26a307}:null;}})[_0x04e9('0x37')](respondWithResult(_0x346eae,null))[_0x04e9('0x5b')](handleError(_0x346eae,null));};function Extension(_0x5a313e,_0x21f752,_0x3fd58a,_0x5198d0){this['context']='from-voip-provider';this['exten']=_0x5a313e[_0x04e9('0x8a')];this[_0x04e9('0x8b')]=_0x5198d0;this[_0x04e9('0x54')]=_0x04e9('0x8c');this[_0x04e9('0x8d')]=_0x04e9('0x8e');this[_0x04e9('0x6a')]=_0x5a313e['id'];this[_0x04e9('0x8f')]=_0x21f752;this['appdata']=_0x3fd58a;}function createExtensionsReciveFax(_0x203f6a){var _0x8772ec=0x1;var _0x4b3cd1=[];_0x4b3cd1[_0x04e9('0x90')](new Extension(_0x203f6a,_0x8772ec,'',_0x04e9('0x91')));_0x8772ec+=0x1;_0x4b3cd1[_0x04e9('0x90')](new Extension(_0x203f6a,_0x8772ec,_0x04e9('0x92'),_0x04e9('0x93')));_0x8772ec+=0x1;for(var _0x374a6b in _0x203f6a){if(_0x203f6a[_0x04e9('0x4d')](_0x374a6b)&&(_0x374a6b==='ecm'||_0x374a6b==='localstationid'||_0x374a6b==='gateway'||_0x374a6b===_0x04e9('0x94')||_0x374a6b==='headerinfo'||_0x374a6b===_0x04e9('0x95')||_0x374a6b===_0x04e9('0x96')||_0x374a6b===_0x04e9('0x97')||_0x374a6b==='t38timeout')){_0x4b3cd1[_0x04e9('0x90')](new Extension(_0x203f6a,_0x8772ec,_0x04e9('0x98')+_0x374a6b+')='+_0x203f6a[_0x374a6b],_0x04e9('0x93')));_0x8772ec+=0x1;}}_0x4b3cd1[_0x04e9('0x90')](new Extension(_0x203f6a,_0x8772ec,'6',_0x04e9('0x99')));_0x8772ec+=0x1;_0x4b3cd1[_0x04e9('0x90')](new Extension(_0x203f6a,_0x8772ec,_0x04e9('0x9a'),'ReceiveFax'));_0x8772ec=0x0;return _0x4b3cd1;}exports[_0x04e9('0x9b')]=function(_0x27cefc,_0x1798cf,_0x25b60d){var _0x581c60;return db[_0x04e9('0x82')]['transaction'](function(_0x122990){return db[_0x04e9('0x43')]['create'](_0x27cefc[_0x04e9('0x67')],{'transaction':_0x122990})[_0x04e9('0x37')](function(_0x577cfb){_0x581c60=_0x577cfb[_0x04e9('0x39')]({'plain':!![]});return db['VoiceExtension'][_0x04e9('0x87')](createExtensionsReciveFax(_0x581c60),{'transaction':_0x122990});});})['then'](function(){return _0x581c60;})[_0x04e9('0x37')](respondWithResult(_0x1798cf,null))[_0x04e9('0x5b')](handleError(_0x1798cf,null));};exports[_0x04e9('0x9c')]=function(_0x5e36d2,_0x706f62,_0x11cb15){var _0x40eb3e;return db[_0x04e9('0x82')][_0x04e9('0x83')](function(_0x152e96){return db[_0x04e9('0x43')][_0x04e9('0x36')](_0x5e36d2[_0x04e9('0x67')],{'where':{'id':_0x5e36d2[_0x04e9('0x67')]['id']},'transaction':_0x152e96})['then'](function(_0x3a69d4){return db[_0x04e9('0x9d')][_0x04e9('0x38')]({'where':{'FaxAccountId':_0x5e36d2[_0x04e9('0x67')]['id']},'transaction':_0x152e96})[_0x04e9('0x37')](function(_0x256da4){return db[_0x04e9('0x9d')][_0x04e9('0x87')](createExtensionsReciveFax(_[_0x04e9('0x9e')](_0x5e36d2['body'],[_0x04e9('0x9f'),_0x04e9('0x46'),_0x04e9('0xa0'),'updatedAt',_0x04e9('0xa1'),_0x04e9('0xa2')])),{'transaction':_0x152e96});});});})[_0x04e9('0x37')](function(){return db[_0x04e9('0x43')]['findById'](_0x5e36d2[_0x04e9('0x67')]['id']);})[_0x04e9('0x37')](respondWithResult(_0x706f62,null))[_0x04e9('0x5b')](handleError(_0x706f62,null));};exports['getMessages']=function(_0x5840b2,_0x536edc,_0x238a30){var _0x368585={'raw':!![],'where':{}};var _0x458f91={};var _0x596272={'count':0x0,'rows':[]};return db[_0x04e9('0x43')][_0x04e9('0x6c')]({'where':{'id':_0x5840b2[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x536edc,null))['then'](function(_0x33d7f8){if(_0x33d7f8){_0x458f91[_0x04e9('0x47')]=_[_0x04e9('0x5e')](db[_0x04e9('0xa3')][_0x04e9('0x44')]);_0x458f91[_0x04e9('0x48')]=_[_0x04e9('0x5e')](_0x5840b2[_0x04e9('0x48')]);_0x458f91[_0x04e9('0x49')]=_['intersection'](_0x458f91['model'],_0x458f91['query']);_0x368585[_0x04e9('0x4b')]=_[_0x04e9('0x4a')](_0x458f91['model'],qs[_0x04e9('0x4c')](_0x5840b2['query'][_0x04e9('0x4c')]));_0x368585[_0x04e9('0x4b')]=_0x368585[_0x04e9('0x4b')][_0x04e9('0x73')]?_0x368585['attributes']:_0x458f91[_0x04e9('0x47')];if(!_0x5840b2[_0x04e9('0x48')][_0x04e9('0x4d')](_0x04e9('0x74'))){_0x368585[_0x04e9('0x30')]=qs[_0x04e9('0x30')](_0x5840b2[_0x04e9('0x48')][_0x04e9('0x30')]);_0x368585['offset']=qs['offset'](_0x5840b2[_0x04e9('0x48')][_0x04e9('0x2e')]);}_0x368585[_0x04e9('0x4e')]=qs[_0x04e9('0x4f')](_0x5840b2[_0x04e9('0x48')][_0x04e9('0x4f')]);_0x368585[_0x04e9('0x50')]=qs['filters'](_[_0x04e9('0x51')](_0x5840b2[_0x04e9('0x48')],_0x458f91[_0x04e9('0x49')]));_0x368585['where']['FaxAccountId']=_0x33d7f8['id'];if(_0x5840b2[_0x04e9('0x48')]['filter']){_0x368585[_0x04e9('0x50')]=_['merge'](_0x368585[_0x04e9('0x50')],{'$or':_['map'](_0x368585[_0x04e9('0x4b')],function(_0x401953){var _0x3f2b14={};_0x3f2b14[_0x401953]={'$like':'%'+_0x5840b2[_0x04e9('0x48')][_0x04e9('0x52')]+'%'};return _0x3f2b14;})});}if(_0x5840b2['query'][_0x04e9('0xa4')]){var _0xbdc757=_0x5840b2[_0x04e9('0x48')][_0x04e9('0xa4')][_0x04e9('0xa5')](',');var _0x2e9419={};_0x2e9419[_0xbdc757[0x0]]={'$gte':moment(_0xbdc757[0x1])[_0x04e9('0xa6')](_0x04e9('0xa7'))};_0x368585['where']=_['merge'](_0x368585['where'],_0x2e9419);}_0x368585=_['merge']({},_0x368585,_0x5840b2[_0x04e9('0x56')]);return db['FaxMessage']['count']({'where':_0x368585[_0x04e9('0x50')]})[_0x04e9('0x37')](function(_0xba2624){_0x596272[_0x04e9('0x31')]=_0xba2624;if(_0x5840b2['query'][_0x04e9('0x57')]){_0x368585[_0x04e9('0x58')]=[{'all':!![]}];}return db[_0x04e9('0xa3')][_0x04e9('0x59')](_0x368585);})[_0x04e9('0x37')](function(_0x379b8a){_0x596272['rows']=_0x379b8a;return _0x596272;});}})[_0x04e9('0x37')](respondWithFilteredResult(_0x536edc,_0x368585))[_0x04e9('0x5b')](handleError(_0x536edc,null));};exports[_0x04e9('0x3e')]=function(_0xf1a95d,_0x3b3bb,_0x3294f7){var _0x4b7635,_0x24aac6={},_0x48e9e0;if(_0xf1a95d[_0x04e9('0x67')]['to']){_0x48e9e0=_0xf1a95d[_0x04e9('0x67')]['to'][0x0];}return db[_0x04e9('0x43')]['find']({'where':{'id':_0xf1a95d[_0x04e9('0x5d')]['id']},'include':[{'model':db[_0x04e9('0xa8')],'as':_0x04e9('0xa9'),'include':[{'model':db[_0x04e9('0x79')],'as':_0x04e9('0xaa'),'where':{'fax':_0x48e9e0},'limit':0x1,'order':[[_0x04e9('0xab'),'DESC']]}]}]})[_0x04e9('0x37')](handleEntityNotFound(_0x3b3bb,null))[_0x04e9('0x37')](function(_0x4b1f85){_0x4b7635=_0x4b1f85;if(_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')]&&_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')]['length']){for(var _0x275735=0x0;_0x275735<_0xf1a95d['body']['attachments'][_0x04e9('0x73')];_0x275735+=0x1){_0xf1a95d['body'][_0x04e9('0xac')][_0x275735]={'filename':_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][_0x275735][_0x04e9('0x3d')],'id':_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][_0x275735]['id'],'path':path[_0x04e9('0xad')](config[_0x04e9('0xae')],_0x04e9('0xaf'),_0xf1a95d['body'][_0x04e9('0xac')][_0x275735][_0x04e9('0xb0')])};}}return respondWithRpcPromise(_0x04e9('0xb1'),_0x04e9('0xb1'),{'FaxAccountId':_['isNil'](_0xf1a95d[_0x04e9('0x5d')]['id'])?undefined:_0xf1a95d[_0x04e9('0x5d')]['id'],'path':_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][0x0]['path'])?undefined:_0xf1a95d['body'][_0x04e9('0xac')][0x0][_0x04e9('0x6')],'fax':_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x67')]['to'][0x0])?undefined:_0xf1a95d['body']['to'][0x0]},client9002);})['then'](function(){if(_0x4b7635){if(_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xb3')])){_0xf1a95d['body']['from']=util[_0x04e9('0xa6')](_0x04e9('0xb4'),_0x4b7635[_0x04e9('0x3d')],_0x4b7635[_0x04e9('0xb5')]);}if(_0x4b7635[_0x04e9('0xa9')]){if(_0x4b7635[_0x04e9('0xa9')]['Contacts'][_0x04e9('0x73')]){return _0x4b7635[_0x04e9('0xa9')]['Contacts'][0x0];}else{return db[_0x04e9('0x79')]['create'](_[_0x04e9('0x19')](_0xf1a95d[_0x04e9('0x67')],{'firstName':_0xf1a95d['body']['to'][0x0],'phone':_0xf1a95d[_0x04e9('0x67')]['to'][0x0],'fax':_0xf1a95d['body']['to'][0x0],'ListId':_0x4b7635['ListId']}));}}else{throw new Error(_0x04e9('0xb6'));}}else{throw new Error(_0x04e9('0xb7'));}})['then'](function(_0x44c623){if(_0x44c623){return db[_0x04e9('0x77')][_0x04e9('0x5f')]({'where':{'ContactId':_0x44c623['id'],'closed':![],'FaxAccountId':_0x4b7635['id']}})[_0x04e9('0x37')](function(_0x3deca9){if(_0x3deca9){return[_0x3deca9,![]];}return db[_0x04e9('0x77')][_0x04e9('0x60')]({'UserId':_0xf1a95d[_0x04e9('0xb8')]['id'],'ContactId':_0x44c623['id'],'FaxAccountId':_0x4b7635['id'],'fax':_0xf1a95d[_0x04e9('0x67')]['to'][0x0],'firstMsgDirection':_0x04e9('0xb9'),'Messages':[_[_0x04e9('0x53')](_0xf1a95d[_0x04e9('0x67')],{'read':![],'body':_0xf1a95d['body']['attachments'][0x0][_0x04e9('0xba')],'FaxAccountId':_0x4b7635['id'],'UserId':_0xf1a95d['user']['id'],'ContactId':_0x44c623['id'],'AttachmentId':_0xf1a95d['body'][_0x04e9('0xac')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':'Messages'}]})[_0x04e9('0x37')](function(_0x2a3505){return[_0x2a3505,!![]];});});}else{throw new Error(_0x04e9('0xbb'));}})[_0x04e9('0xbc')](function(_0x982726,_0x28d8b3){if(_0x28d8b3){return _0x982726;}return db[_0x04e9('0xa3')][_0x04e9('0x60')]({'direction':_0x04e9('0xb9'),'read':![],'body':_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][0x0][_0x04e9('0xba')],'FaxAccountId':_0x4b7635['id'],'FaxInteractionId':_0x982726['id'],'UserId':_0xf1a95d[_0x04e9('0xb8')]['id'],'ContactId':_0x982726['ContactId'],'AttachmentId':_0xf1a95d['body'][_0x04e9('0xac')][0x0]['id']})[_0x04e9('0x37')](function(_0x5c1474){_0x982726[_0x04e9('0xbd')][_0x04e9('0xbe')]=[];_0x982726[_0x04e9('0xbd')][_0x04e9('0xbe')][_0x04e9('0x90')](_0x5c1474['dataValues']);return _0x982726;});})['then'](function(_0x3e9637){respondWithRpcPromise(_0x04e9('0xbf'),'SendFax',{'FaxAccountId':_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x5d')]['id'])?undefined:_0xf1a95d[_0x04e9('0x5d')]['id'],'path':_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][0x0]['path'])?undefined:_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][0x0][_0x04e9('0x6')],'fax':_[_0x04e9('0xb2')](_0xf1a95d[_0x04e9('0x67')]['to'][0x0])?undefined:_0xf1a95d[_0x04e9('0x67')]['to'][0x0],'AttachmentId':_0xf1a95d[_0x04e9('0x67')][_0x04e9('0xac')][0x0]['id']},client9002)[_0x04e9('0x37')](function(_0xffbfa0){logger[_0x04e9('0x20')](_0x04e9('0xc0'),_0xffbfa0);})['catch'](function(_0x442809){logger[_0x04e9('0x20')](_0x04e9('0xc0'),_0x442809);});return _0x3e9637;})[_0x04e9('0x37')](respondWithResult(_0x3b3bb,null))['catch'](handleError(_0x3b3bb,null));};exports[_0x04e9('0xc1')]=function(_0x38bc80,_0x441f35,_0x13f2ec){return db[_0x04e9('0x43')][_0x04e9('0x5f')]({'where':{'id':_0x38bc80[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x441f35,null))[_0x04e9('0x37')](function(_0x3f76d5){if(_0x3f76d5){return _0x3f76d5[_0x04e9('0xc1')](_0x38bc80['body'][_0x04e9('0x6f')],_[_0x04e9('0x9e')](_0x38bc80[_0x04e9('0x67')],['ids','id'])||{})[_0x04e9('0xbc')](function(_0x7a52b5){for(var _0x1b39f7=0x0;_0x1b39f7<_0x38bc80[_0x04e9('0x67')]['ids'][_0x04e9('0x73')];_0x1b39f7+=0x1){socket[_0x04e9('0xc2')]('userFaxAccount:save',{'UserId':Number(_0x38bc80[_0x04e9('0x67')]['ids'][_0x1b39f7]),'FaxAccountId':Number(_0x38bc80[_0x04e9('0x5d')]['id'])});}return _0x7a52b5;});}})[_0x04e9('0x37')](respondWithResult(_0x441f35,null))['catch'](handleError(_0x441f35,null));};exports['removeAgents']=function(_0x4cae9a,_0x16871c,_0x308490){return db[_0x04e9('0x43')][_0x04e9('0x5f')]({'where':{'id':_0x4cae9a[_0x04e9('0x5d')]['id']}})[_0x04e9('0x37')](handleEntityNotFound(_0x16871c,null))['then'](function(_0x1c4955){if(_0x1c4955){return _0x1c4955[_0x04e9('0xc3')](_0x4cae9a[_0x04e9('0x48')][_0x04e9('0x6f')])['then'](function(){if(_[_0x04e9('0xc4')](_0x4cae9a[_0x04e9('0x48')][_0x04e9('0x6f')])){for(var _0x3addb3=0x0;_0x3addb3<_0x4cae9a['query']['ids'][_0x04e9('0x73')];_0x3addb3+=0x1){socket[_0x04e9('0xc2')](_0x04e9('0xc5'),{'UserId':Number(_0x4cae9a[_0x04e9('0x48')][_0x04e9('0x6f')][_0x3addb3]),'FaxAccountId':Number(_0x4cae9a['params']['id'])});}}else{socket[_0x04e9('0xc2')](_0x04e9('0xc5'),{'UserId':Number(_0x4cae9a[_0x04e9('0x48')][_0x04e9('0x6f')]),'FaxAccountId':Number(_0x4cae9a[_0x04e9('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x16871c,null))[_0x04e9('0x5b')](handleError(_0x16871c,null));};exports['getAgents']=function(_0x2efe8d,_0x90d6ae,_0x3446ee){var _0x39ca3e={};var _0x1b8e01={};var _0x104c24;var _0x1d602d;return db[_0x04e9('0x43')][_0x04e9('0x6c')]({'where':{'id':_0x2efe8d[_0x04e9('0x5d')]['id']}})['then'](handleEntityNotFound(_0x90d6ae,null))['then'](function(_0x5f27c5){if(_0x5f27c5){_0x104c24=_0x5f27c5;_0x1b8e01[_0x04e9('0x47')]=_[_0x04e9('0x5e')](db[_0x04e9('0x7a')][_0x04e9('0x44')]);_0x1b8e01[_0x04e9('0x48')]=_['keys'](_0x2efe8d[_0x04e9('0x48')]);_0x1b8e01[_0x04e9('0x49')]=_[_0x04e9('0x4a')](_0x1b8e01[_0x04e9('0x47')],_0x1b8e01[_0x04e9('0x48')]);_0x39ca3e['attributes']=_[_0x04e9('0x4a')](_0x1b8e01['model'],qs[_0x04e9('0x4c')](_0x2efe8d[_0x04e9('0x48')][_0x04e9('0x4c')]));_0x39ca3e[_0x04e9('0x4b')]=_0x39ca3e[_0x04e9('0x4b')]['length']?_0x39ca3e[_0x04e9('0x4b')]:_0x1b8e01['model'];_0x39ca3e[_0x04e9('0x4e')]=qs[_0x04e9('0x4f')](_0x2efe8d['query'][_0x04e9('0x4f')]);_0x39ca3e['where']=qs['filters'](_[_0x04e9('0x51')](_0x2efe8d[_0x04e9('0x48')],_0x1b8e01['filters']));if(_0x2efe8d[_0x04e9('0x48')]['filter']){_0x39ca3e[_0x04e9('0x50')]=_['merge'](_0x39ca3e[_0x04e9('0x50')],{'$or':_[_0x04e9('0x42')](_0x39ca3e[_0x04e9('0x4b')],function(_0x55d1a0){var _0x4c0f4e={};_0x4c0f4e[_0x55d1a0]={'$like':'%'+_0x2efe8d[_0x04e9('0x48')][_0x04e9('0x52')]+'%'};return _0x4c0f4e;})});}_0x39ca3e=_['merge']({},_0x39ca3e,_0x2efe8d[_0x04e9('0x56')]);return _0x104c24['getAgents'](_0x39ca3e);}})[_0x04e9('0x37')](function(_0x30b2f1){if(_0x30b2f1){_0x1d602d=_0x30b2f1[_0x04e9('0x73')];if(!_0x2efe8d['query'][_0x04e9('0x4d')](_0x04e9('0x74'))){_0x39ca3e[_0x04e9('0x30')]=qs[_0x04e9('0x30')](_0x2efe8d[_0x04e9('0x48')][_0x04e9('0x30')]);_0x39ca3e[_0x04e9('0x2e')]=qs['offset'](_0x2efe8d['query'][_0x04e9('0x2e')]);}return _0x104c24[_0x04e9('0xc6')](_0x39ca3e);}})['then'](function(_0x2bc67f){if(_0x2bc67f){return _0x2bc67f?{'count':_0x1d602d,'rows':_0x2bc67f}:null;}})[_0x04e9('0x37')](respondWithResult(_0x90d6ae,null))[_0x04e9('0x5b')](handleError(_0x90d6ae,null));};
\ No newline at end of file
index 99532e6..5c9d3c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde05=['../../mysqldb','FaxAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x49bbbb,_0x2f50ef){var _0x2d77b0=function(_0x26e74a){while(--_0x26e74a){_0x49bbbb['push'](_0x49bbbb['shift']());}};_0x2d77b0(++_0x2f50ef);}(_0xde05,0x87));var _0x5de0=function(_0x57c3cb,_0x1bc932){_0x57c3cb=_0x57c3cb-0x0;var _0x276f97=_0xde05[_0x57c3cb];return _0x276f97;};'use strict';var EventEmitter=require('events');var FaxAccount=require(_0x5de0('0x0'))['db'][_0x5de0('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x5de0('0x2')](0x0);var events={'afterCreate':_0x5de0('0x3'),'afterUpdate':_0x5de0('0x4'),'afterDestroy':'remove'};function emitEvent(_0x57e0c5){return function(_0x2e3776,_0x398e82,_0xd96d18){FaxAccountEvents[_0x5de0('0x5')](_0x57e0c5+':'+_0x2e3776['id'],_0x2e3776);FaxAccountEvents[_0x5de0('0x5')](_0x57e0c5,_0x2e3776);_0xd96d18(null);};}for(var e in events){if(events[_0x5de0('0x6')](e)){var event=events[e];FaxAccount[_0x5de0('0x7')](e,emitEvent(event));}}module[_0x5de0('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x749a=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save'];(function(_0x5269db,_0x32abd4){var _0x5a425a=function(_0x3c019b){while(--_0x3c019b){_0x5269db['push'](_0x5269db['shift']());}};_0x5a425a(++_0x32abd4);}(_0x749a,0x73));var _0xa749=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x749a[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0xa749('0x0'));var FaxAccount=require(_0xa749('0x1'))['db'][_0xa749('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xa749('0x3')](0x0);var events={'afterCreate':_0xa749('0x4'),'afterUpdate':_0xa749('0x5'),'afterDestroy':_0xa749('0x6')};function emitEvent(_0x42abf2){return function(_0x4af66b,_0x253241,_0x5a9e39){FaxAccountEvents[_0xa749('0x7')](_0x42abf2+':'+_0x4af66b['id'],_0x4af66b);FaxAccountEvents['emit'](_0x42abf2,_0x4af66b);_0x5a9e39(null);};}for(var e in events){if(events[_0xa749('0x8')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xa749('0x9')]=FaxAccountEvents;
\ No newline at end of file
index 4cc08f7..e289f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcd2=['../../config/environment','./faxAccount.attributes','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xfcd2,0x9b));var _0x2fcd=function(_0x87ba0,_0xe41883){_0x87ba0=_0x87ba0-0x0;var _0x34da2e=_0xfcd2[_0x87ba0];return _0x34da2e;};'use strict';var _=require(_0x2fcd('0x0'));var util=require(_0x2fcd('0x1'));var logger=require(_0x2fcd('0x2'))('api');var moment=require(_0x2fcd('0x3'));var BPromise=require(_0x2fcd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fcd('0x5'));var rimraf=require(_0x2fcd('0x6'));var config=require(_0x2fcd('0x7'));var attributes=require(_0x2fcd('0x8'));module['exports']=function(_0x43a40d,_0x376175){return _0x43a40d['define']('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9117=['define','FaxAccount','lodash','util','moment','bluebird','request-promise','./faxAccount.attributes','exports'];(function(_0x15146b,_0x2dac9c){var _0x42530c=function(_0x3ce1d7){while(--_0x3ce1d7){_0x15146b['push'](_0x15146b['shift']());}};_0x42530c(++_0x2dac9c);}(_0x9117,0x89));var _0x7911=function(_0x4c34d8,_0x383073){_0x4c34d8=_0x4c34d8-0x0;var _0x4c21df=_0x9117[_0x4c34d8];return _0x4c21df;};'use strict';var _=require(_0x7911('0x0'));var util=require(_0x7911('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7911('0x2'));var BPromise=require(_0x7911('0x3'));var rp=require(_0x7911('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7911('0x5'));module[_0x7911('0x6')]=function(_0x22cbaf,_0x4e0676){return _0x22cbaf[_0x7911('0x7')](_0x7911('0x8'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 268baba..e26ef42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9f7=['updatedAt','keys','isNil','from\x20is\x20mandatory','body','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','find','CmList','List','Contacts','DESC','FaxApplication','Applications','get','applications','orderBy','priority','account','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','length','close','*,*,*,*','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent','Start','startRouting','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./faxAccount.socket','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','findAll','options','where','attributes','limit','include','model','map','GetFaxAccount','debug','NotifyFaxAccount','fax','CmContact','describe','Sequelize','ValidationError','difference','createdAt'];(function(_0x53e02c,_0x5811af){var _0x5b2e39=function(_0x18d14c){while(--_0x18d14c){_0x53e02c['push'](_0x53e02c['shift']());}};_0x5b2e39(++_0x5811af);}(_0xa9f7,0x1c9));var _0x7a9f=function(_0x501f0a,_0x1b2217){_0x501f0a=_0x501f0a-0x0;var _0x268f34=_0xa9f7[_0x501f0a];return _0x268f34;};'use strict';var _=require('lodash');var util=require(_0x7a9f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7a9f('0x1'));var fs=require('fs');var Redis=require(_0x7a9f('0x2'));var db=require(_0x7a9f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7a9f('0x4'))(_0x7a9f('0x5'));var config=require(_0x7a9f('0x6'));var jayson=require(_0x7a9f('0x7'));var client=jayson['client'][_0x7a9f('0x8')]({'port':0x232c});config['redis']=_[_0x7a9f('0x9')](config[_0x7a9f('0xa')],{'host':_0x7a9f('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7a9f('0xc'))[_0x7a9f('0xd')](socket);function respondWithRpcPromise(_0x2c3f02,_0x20ebfe,_0x29eb53){return new BPromise(function(_0xc9be28,_0x3dedf8){return client['request'](_0x2c3f02,_0x29eb53)[_0x7a9f('0xe')](function(_0x112516){logger[_0x7a9f('0xf')](_0x7a9f('0x10'),_0x20ebfe,_0x7a9f('0x11'));logger['debug'](_0x7a9f('0x12'),_0x20ebfe,_0x7a9f('0x11'),JSON[_0x7a9f('0x13')](_0x112516));if(_0x112516[_0x7a9f('0x14')]){if(_0x112516[_0x7a9f('0x14')]['code']===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x20ebfe,_0x112516[_0x7a9f('0x14')][_0x7a9f('0x15')]);return _0x3dedf8(_0x112516[_0x7a9f('0x14')]['message']);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x20ebfe,_0x112516[_0x7a9f('0x14')][_0x7a9f('0x15')]);return _0xc9be28(_0x112516[_0x7a9f('0x14')][_0x7a9f('0x15')]);}else{logger['info'](_0x7a9f('0x10'),_0x20ebfe,_0x7a9f('0x11'));_0xc9be28(_0x112516['result'][_0x7a9f('0x15')]);}})[_0x7a9f('0x16')](function(_0x4bb222){logger[_0x7a9f('0x14')]('FaxAccount,\x20%s,\x20%s',_0x20ebfe,_0x4bb222);_0x3dedf8(_0x4bb222);});});}exports['GetFaxAccount']=function(_0x222fde){var _0x58cc94=this;return new Promise(function(_0x161793,_0x138720){return db['FaxAccount'][_0x7a9f('0x17')]({'raw':_0x222fde[_0x7a9f('0x18')]?_0x222fde[_0x7a9f('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x222fde['options']?_0x222fde[_0x7a9f('0x18')][_0x7a9f('0x19')]||null:null,'attributes':_0x222fde[_0x7a9f('0x18')]?_0x222fde[_0x7a9f('0x18')][_0x7a9f('0x1a')]||null:null,'limit':_0x222fde[_0x7a9f('0x18')]?_0x222fde['options'][_0x7a9f('0x1b')]||null:null,'include':_0x222fde[_0x7a9f('0x18')]?_0x222fde[_0x7a9f('0x18')][_0x7a9f('0x1c')]?_['map'](_0x222fde[_0x7a9f('0x18')][_0x7a9f('0x1c')],function(_0x38a293){return{'model':db[_0x38a293[_0x7a9f('0x1d')]],'as':_0x38a293['as'],'attributes':_0x38a293[_0x7a9f('0x1a')],'include':_0x38a293['include']?_['map'](_0x38a293[_0x7a9f('0x1c')],function(_0x23b59e){return{'model':db[_0x23b59e['model']],'as':_0x23b59e['as'],'attributes':_0x23b59e[_0x7a9f('0x1a')],'include':_0x23b59e[_0x7a9f('0x1c')]?_[_0x7a9f('0x1e')](_0x23b59e[_0x7a9f('0x1c')],function(_0x4cee6c){return{'model':db[_0x4cee6c[_0x7a9f('0x1d')]],'as':_0x4cee6c['as'],'attributes':_0x4cee6c[_0x7a9f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x7a9f('0xe')](function(_0x49995c){logger[_0x7a9f('0xf')](_0x7a9f('0x1f'),_0x222fde);logger[_0x7a9f('0x20')](_0x7a9f('0x1f'),_0x222fde,JSON[_0x7a9f('0x13')](_0x49995c));_0x161793(_0x49995c);})[_0x7a9f('0x16')](function(_0x5d21d2){logger[_0x7a9f('0x14')](_0x7a9f('0x1f'),_0x5d21d2['message'],_0x222fde);_0x138720(_0x58cc94['error'](0x1f4,_0x5d21d2[_0x7a9f('0x15')]));});});};exports[_0x7a9f('0x21')]=function(_0x2c3a74,_0x17a277,_0x13f49d){var _0x34d831=this;return new Promise(function(_0x452ed4,_0x58302a){var _0xa64226={'body':_0x2c3a74['body'],'channel':_0x7a9f('0x22')};var _0x380582=[];var _0x5195ac=[];var _0x5b8d3c={};return db[_0x7a9f('0x23')][_0x7a9f('0x24')]()[_0x7a9f('0xe')](function(_0x1543f9){if(!_0x1543f9){throw new db[(_0x7a9f('0x25'))][(_0x7a9f('0x26'))]('no\x20available\x20attributes');}_0x380582=_[_0x7a9f('0x27')](_['keys'](_0x1543f9),[_0x7a9f('0x28'),_0x7a9f('0x29')]);_0x5195ac=_[_0x7a9f('0x27')](_[_0x7a9f('0x2a')](_0x1543f9),['createdAt',_0x7a9f('0x29'),'CompanyId','ListId']);if(_0x2c3a74['body']['id']){delete _0x2c3a74['body']['id'];}if(_[_0x7a9f('0x2b')](_0x2c3a74['body']['from'])){throw new db[(_0x7a9f('0x25'))][(_0x7a9f('0x26'))](_0x7a9f('0x2c'));}if(_['isNil'](_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x2d')])||_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x2d')]===''){throw new db[(_0x7a9f('0x25'))][(_0x7a9f('0x26'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7a9f('0x2b')](_0x2c3a74[_0x7a9f('0x2d')]['mapKey'])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5195ac);}if(!_[_0x7a9f('0x2e')](_0x5195ac,_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x2f')])){throw new db[(_0x7a9f('0x25'))][(_0x7a9f('0x26'))](_0x7a9f('0x30')+_0x5195ac);}_0x5b8d3c[_0x2c3a74[_0x7a9f('0x2d')]['mapKey']]=_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x31')];})['then'](function(){return db['FaxAccount'][_0x7a9f('0x32')]({'where':{'id':_0x2c3a74['account']['id']},'include':[{'model':db[_0x7a9f('0x33')],'as':_0x7a9f('0x34'),'include':[{'model':db[_0x7a9f('0x23')],'as':_0x7a9f('0x35'),'where':_0x5b8d3c,'limit':0x1,'order':[[_0x7a9f('0x29'),_0x7a9f('0x36')]]}]},{'model':db[_0x7a9f('0x37')],'as':_0x7a9f('0x38')}]});})[_0x7a9f('0xe')](function(_0x2204bf){if(_0x2204bf&&_0x2204bf[_0x7a9f('0x34')]){var _0x47dee=_0x2204bf[_0x7a9f('0x39')]({'plain':!![]});_0xa64226['account']=_0x47dee;_0xa64226[_0x7a9f('0x3a')]=_0x47dee[_0x7a9f('0x38')];_0xa64226['list']=_0x47dee[_0x7a9f('0x34')];_0xa64226[_0x7a9f('0x3a')]=_[_0x7a9f('0x3b')](_0xa64226['applications'],[_0x7a9f('0x3c')],['asc']);if(_0xa64226[_0x7a9f('0x3d')][_0x7a9f('0x38')]){delete _0xa64226['account'][_0x7a9f('0x38')];}if(_0xa64226['account'][_0x7a9f('0x34')]&&_0xa64226[_0x7a9f('0x3d')][_0x7a9f('0x34')][_0x7a9f('0x35')]['length']){return _0xa64226[_0x7a9f('0x3d')][_0x7a9f('0x34')][_0x7a9f('0x35')][0x0];}var _0x4cb66c=_[_0x7a9f('0x9')](_0x2c3a74[_0x7a9f('0x2d')],{'firstName':_0x2c3a74[_0x7a9f('0x2d')]['from'],'ListId':_0x47dee['ListId']});_0x4cb66c[_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x2f')]]=_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x31')];return db['CmContact'][_0x7a9f('0x3e')](_0x4cb66c,{'fields':_0x380582,'raw':!![]});}})[_0x7a9f('0xe')](function(_0xe24572){_0xa64226[_0x7a9f('0x3f')]=_0xe24572;if(_0xe24572){var _0x23997a={'ContactId':_0xe24572['id'],'FaxAccountId':_0x2c3a74['account']['id'],'fax':_0xe24572[_0x7a9f('0x22')]};return db[_0x7a9f('0x40')]['find']({'where':{'ContactId':_0xe24572['id'],'closed':![],'FaxAccountId':_0x2c3a74[_0x7a9f('0x3d')]['id']}})[_0x7a9f('0xe')](function(_0x288a15){if(_0x288a15){return[_0x288a15,![]];}return db[_0x7a9f('0x40')][_0x7a9f('0x3e')](_0x23997a)['then'](function(_0x17d92e){return[_0x17d92e,!![]];});});}else{throw new Error(_0x7a9f('0x41'));}})[_0x7a9f('0x42')](function(_0x34caae,_0x42d171){var _0x313bf4=_0x34caae['get']({'plain':!![]});if(_0x42d171){if(_0xa64226[_0x7a9f('0x3d')][_0x7a9f('0x43')]){_0xa64226['applications'][_0x7a9f('0x44')]({'id':0x0,'priority':_0xa64226['applications'][_0x7a9f('0x45')]+0x1,'app':_0x7a9f('0x46'),'appdata':'unmanaged','interval':_0x7a9f('0x47')});}_0x313bf4['created']=!![];}else{_0x313bf4['created']=![];}_0xa64226[_0x7a9f('0x48')]=_0x313bf4;return db[_0x7a9f('0x49')]['create']({'body':_0x2c3a74['body'][_0x7a9f('0x2d')],'FaxAccountId':_0x2c3a74[_0x7a9f('0x3d')]['id'],'FaxInteractionId':_0x34caae['id'],'direction':'in','ContactId':_0x34caae[_0x7a9f('0x4a')],'AttachmentId':_0x2c3a74[_0x7a9f('0x2d')][_0x7a9f('0x4b')]});})[_0x7a9f('0xe')](function(_0x5f1b1c){_0xa64226[_0x7a9f('0x15')]=_0x5f1b1c;if(_0xa64226[_0x7a9f('0x48')][_0x7a9f('0x4c')]){return db[_0x7a9f('0x4d')][_0x7a9f('0x32')]({'attributes':['id',_0x7a9f('0x4e')],'where':{'id':_0xa64226[_0x7a9f('0x48')][_0x7a9f('0x4c')]}})[_0x7a9f('0xe')](function(_0xaf562f){if(_0xaf562f){_0xa64226[_0x7a9f('0x3a')][_0x7a9f('0x4f')]({'id':0x0,'priority':0x0,'app':_0x7a9f('0x50'),'appdata':_0xaf562f[_0x7a9f('0x4e')]+','+(_0xa64226['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x7a9f('0x51'),_0x7a9f('0x52'),_0xa64226);});}return respondWithRpcPromise('Start',_0x7a9f('0x52'),_0xa64226);})[_0x7a9f('0xe')](function(_0xeece9e){_0x452ed4(_0xeece9e);})[_0x7a9f('0x16')](function(_0x51408e){_0x58302a(_0x34d831[_0x7a9f('0x14')](0x1f4,_0x51408e[_0x7a9f('0x15')]));});});};
\ No newline at end of file
+var _0x2887=['Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','updatedAt','createdAt','ListId','from','from\x20is\x20mandatory','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','List','DESC','FaxApplication','Applications','applications','list','priority','asc','Contacts','length','create','contact','fax','FaxInteraction','Contact\x20not\x20found','spread','get','autoclose','push','*,*,*,*','created','interaction','ContactId','AttachmentId','User','unshift','agent','name','Start','startRouting','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','FaxAccount,\x20%s,\x20%s','message','request\x20sent','result','FaxAccount','options','where','limit','include','model','attributes','map','GetFaxAccount','NotifyFaxAccount','body','CmContact','describe','then'];(function(_0x8f4c15,_0x571506){var _0x3d8837=function(_0x2af517){while(--_0x2af517){_0x8f4c15['push'](_0x8f4c15['shift']());}};_0x3d8837(++_0x571506);}(_0x2887,0x87));var _0x7288=function(_0x4fd9b9,_0x4baad2){_0x4fd9b9=_0x4fd9b9-0x0;var _0x41907a=_0x2887[_0x4fd9b9];return _0x41907a;};'use strict';var _=require(_0x7288('0x0'));var util=require('util');var moment=require(_0x7288('0x1'));var BPromise=require(_0x7288('0x2'));var rs=require(_0x7288('0x3'));var fs=require('fs');var Redis=require(_0x7288('0x4'));var db=require(_0x7288('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7288('0x6'))('rpc');var config=require(_0x7288('0x7'));var jayson=require(_0x7288('0x8'));var client=jayson['client'][_0x7288('0x9')]({'port':0x232c});config[_0x7288('0xa')]=_[_0x7288('0xb')](config[_0x7288('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x7288('0xc'))(new Redis(config[_0x7288('0xa')]));require(_0x7288('0xd'))[_0x7288('0xe')](socket);function respondWithRpcPromise(_0x57312e,_0x31f131,_0x3595e3){return new BPromise(function(_0x4f3408,_0x2de89b){return client[_0x7288('0xf')](_0x57312e,_0x3595e3)['then'](function(_0x5176f6){logger[_0x7288('0x10')]('FaxAccount,\x20%s,\x20%s',_0x31f131,'request\x20sent');logger[_0x7288('0x11')](_0x7288('0x12'),_0x31f131,'request\x20sent',JSON[_0x7288('0x13')](_0x5176f6));if(_0x5176f6[_0x7288('0x14')]){if(_0x5176f6[_0x7288('0x14')]['code']===0x1f4){logger['error'](_0x7288('0x15'),_0x31f131,_0x5176f6[_0x7288('0x14')][_0x7288('0x16')]);return _0x2de89b(_0x5176f6[_0x7288('0x14')][_0x7288('0x16')]);}logger[_0x7288('0x14')](_0x7288('0x15'),_0x31f131,_0x5176f6[_0x7288('0x14')][_0x7288('0x16')]);return _0x4f3408(_0x5176f6[_0x7288('0x14')][_0x7288('0x16')]);}else{logger[_0x7288('0x10')](_0x7288('0x15'),_0x31f131,_0x7288('0x17'));_0x4f3408(_0x5176f6[_0x7288('0x18')][_0x7288('0x16')]);}})['catch'](function(_0x4e65cf){logger[_0x7288('0x14')]('FaxAccount,\x20%s,\x20%s',_0x31f131,_0x4e65cf);_0x2de89b(_0x4e65cf);});});}exports['GetFaxAccount']=function(_0x3a58d1){var _0x2d084f=this;return new Promise(function(_0x181f8d,_0x1487dd){return db[_0x7288('0x19')]['findAll']({'raw':_0x3a58d1['options']?_0x3a58d1['options']['raw']===undefined?!![]:![]:!![],'where':_0x3a58d1[_0x7288('0x1a')]?_0x3a58d1[_0x7288('0x1a')][_0x7288('0x1b')]||null:null,'attributes':_0x3a58d1['options']?_0x3a58d1[_0x7288('0x1a')]['attributes']||null:null,'limit':_0x3a58d1[_0x7288('0x1a')]?_0x3a58d1[_0x7288('0x1a')][_0x7288('0x1c')]||null:null,'include':_0x3a58d1['options']?_0x3a58d1[_0x7288('0x1a')][_0x7288('0x1d')]?_['map'](_0x3a58d1[_0x7288('0x1a')][_0x7288('0x1d')],function(_0x55e646){return{'model':db[_0x55e646[_0x7288('0x1e')]],'as':_0x55e646['as'],'attributes':_0x55e646[_0x7288('0x1f')],'include':_0x55e646['include']?_[_0x7288('0x20')](_0x55e646[_0x7288('0x1d')],function(_0xac289f){return{'model':db[_0xac289f['model']],'as':_0xac289f['as'],'attributes':_0xac289f[_0x7288('0x1f')],'include':_0xac289f[_0x7288('0x1d')]?_[_0x7288('0x20')](_0xac289f[_0x7288('0x1d')],function(_0x2f1687){return{'model':db[_0x2f1687[_0x7288('0x1e')]],'as':_0x2f1687['as'],'attributes':_0x2f1687['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d76f8){logger[_0x7288('0x10')](_0x7288('0x21'),_0x3a58d1);logger['debug'](_0x7288('0x21'),_0x3a58d1,JSON[_0x7288('0x13')](_0x2d76f8));_0x181f8d(_0x2d76f8);})['catch'](function(_0x553669){logger[_0x7288('0x14')](_0x7288('0x21'),_0x553669[_0x7288('0x16')],_0x3a58d1);_0x1487dd(_0x2d084f[_0x7288('0x14')](0x1f4,_0x553669[_0x7288('0x16')]));});});};exports[_0x7288('0x22')]=function(_0x5e9d37,_0x152fa8,_0x4227e2){var _0x2695ef=this;return new Promise(function(_0x3fcee1,_0x34ee7e){var _0xf4917a={'body':_0x5e9d37[_0x7288('0x23')],'channel':'fax'};var _0x138adb=[];var _0x5454da=[];var _0x47ad3c={};return db[_0x7288('0x24')][_0x7288('0x25')]()[_0x7288('0x26')](function(_0x57b578){if(!_0x57b578){throw new db[(_0x7288('0x27'))][(_0x7288('0x28'))](_0x7288('0x29'));}_0x138adb=_[_0x7288('0x2a')](_[_0x7288('0x2b')](_0x57b578),['createdAt',_0x7288('0x2c')]);_0x5454da=_[_0x7288('0x2a')](_[_0x7288('0x2b')](_0x57b578),[_0x7288('0x2d'),_0x7288('0x2c'),'CompanyId',_0x7288('0x2e')]);if(_0x5e9d37['body']['id']){delete _0x5e9d37[_0x7288('0x23')]['id'];}if(_['isNil'](_0x5e9d37[_0x7288('0x23')][_0x7288('0x2f')])){throw new db[(_0x7288('0x27'))][(_0x7288('0x28'))](_0x7288('0x30'));}if(_[_0x7288('0x31')](_0x5e9d37['body'][_0x7288('0x23')])||_0x5e9d37[_0x7288('0x23')][_0x7288('0x23')]===''){throw new db[(_0x7288('0x27'))][(_0x7288('0x28'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7288('0x31')](_0x5e9d37[_0x7288('0x23')]['mapKey'])){throw new db[(_0x7288('0x27'))][(_0x7288('0x28'))](_0x7288('0x32')+_0x5454da);}if(!_[_0x7288('0x33')](_0x5454da,_0x5e9d37['body'][_0x7288('0x34')])){throw new db[(_0x7288('0x27'))][(_0x7288('0x28'))](_0x7288('0x35')+_0x5454da);}_0x47ad3c[_0x5e9d37['body'][_0x7288('0x34')]]=_0x5e9d37[_0x7288('0x23')][_0x7288('0x2f')];})[_0x7288('0x26')](function(){return db[_0x7288('0x19')][_0x7288('0x36')]({'where':{'id':_0x5e9d37[_0x7288('0x37')]['id']},'include':[{'model':db['CmList'],'as':_0x7288('0x38'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x47ad3c,'limit':0x1,'order':[[_0x7288('0x2c'),_0x7288('0x39')]]}]},{'model':db[_0x7288('0x3a')],'as':_0x7288('0x3b')}]});})[_0x7288('0x26')](function(_0x4b7fb6){if(_0x4b7fb6&&_0x4b7fb6[_0x7288('0x38')]){var _0x29db38=_0x4b7fb6['get']({'plain':!![]});_0xf4917a[_0x7288('0x37')]=_0x29db38;_0xf4917a[_0x7288('0x3c')]=_0x29db38[_0x7288('0x3b')];_0xf4917a[_0x7288('0x3d')]=_0x29db38['List'];_0xf4917a[_0x7288('0x3c')]=_['orderBy'](_0xf4917a[_0x7288('0x3c')],[_0x7288('0x3e')],[_0x7288('0x3f')]);if(_0xf4917a['account'][_0x7288('0x3b')]){delete _0xf4917a[_0x7288('0x37')][_0x7288('0x3b')];}if(_0xf4917a[_0x7288('0x37')][_0x7288('0x38')]&&_0xf4917a[_0x7288('0x37')][_0x7288('0x38')][_0x7288('0x40')][_0x7288('0x41')]){return _0xf4917a[_0x7288('0x37')][_0x7288('0x38')][_0x7288('0x40')][0x0];}var _0x122b0a=_[_0x7288('0xb')](_0x5e9d37['body'],{'firstName':_0x5e9d37[_0x7288('0x23')][_0x7288('0x2f')],'ListId':_0x29db38[_0x7288('0x2e')]});_0x122b0a[_0x5e9d37['body'][_0x7288('0x34')]]=_0x5e9d37[_0x7288('0x23')][_0x7288('0x2f')];return db['CmContact'][_0x7288('0x42')](_0x122b0a,{'fields':_0x138adb,'raw':!![]});}})['then'](function(_0x389689){_0xf4917a[_0x7288('0x43')]=_0x389689;if(_0x389689){var _0x5dd155={'ContactId':_0x389689['id'],'FaxAccountId':_0x5e9d37['account']['id'],'fax':_0x389689[_0x7288('0x44')]};return db[_0x7288('0x45')][_0x7288('0x36')]({'where':{'ContactId':_0x389689['id'],'closed':![],'FaxAccountId':_0x5e9d37[_0x7288('0x37')]['id']}})[_0x7288('0x26')](function(_0x11d6b9){if(_0x11d6b9){return[_0x11d6b9,![]];}return db[_0x7288('0x45')][_0x7288('0x42')](_0x5dd155)['then'](function(_0x22a3ca){return[_0x22a3ca,!![]];});});}else{throw new Error(_0x7288('0x46'));}})[_0x7288('0x47')](function(_0x28eb25,_0x52b3a8){var _0x619b1d=_0x28eb25[_0x7288('0x48')]({'plain':!![]});if(_0x52b3a8){if(_0xf4917a[_0x7288('0x37')][_0x7288('0x49')]){_0xf4917a['applications'][_0x7288('0x4a')]({'id':0x0,'priority':_0xf4917a[_0x7288('0x3c')]['length']+0x1,'app':'close','appdata':'unmanaged','interval':_0x7288('0x4b')});}_0x619b1d[_0x7288('0x4c')]=!![];}else{_0x619b1d[_0x7288('0x4c')]=![];}_0xf4917a[_0x7288('0x4d')]=_0x619b1d;return db['FaxMessage'][_0x7288('0x42')]({'body':_0x5e9d37[_0x7288('0x23')]['body'],'FaxAccountId':_0x5e9d37['account']['id'],'FaxInteractionId':_0x28eb25['id'],'direction':'in','ContactId':_0x28eb25[_0x7288('0x4e')],'AttachmentId':_0x5e9d37[_0x7288('0x23')][_0x7288('0x4f')]});})[_0x7288('0x26')](function(_0x58b3f7){_0xf4917a[_0x7288('0x16')]=_0x58b3f7;if(_0xf4917a[_0x7288('0x4d')]['UserId']){return db[_0x7288('0x50')]['find']({'attributes':['id','name'],'where':{'id':_0xf4917a[_0x7288('0x4d')]['UserId']}})[_0x7288('0x26')](function(_0x579860){if(_0x579860){_0xf4917a['applications'][_0x7288('0x51')]({'id':0x0,'priority':0x0,'app':_0x7288('0x52'),'appdata':_0x579860[_0x7288('0x53')]+','+(_0xf4917a[_0x7288('0x37')]['waitForTheAssignedAgent']||0xa),'interval':_0x7288('0x4b')});}return respondWithRpcPromise(_0x7288('0x54'),_0x7288('0x55'),_0xf4917a);});}return respondWithRpcPromise('Start',_0x7288('0x55'),_0xf4917a);})['then'](function(_0x1096d0){_0x3fcee1(_0x1096d0);})[_0x7288('0x56')](function(_0x35c5c9){_0x34ee7e(_0x2695ef['error'](0x1f4,_0x35c5c9[_0x7288('0x16')]));});});};
\ No newline at end of file
index 60dba82..f720866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c60=['./faxAccount.events','save','remove','update','register','length','faxAccount:'];(function(_0x7d286f,_0x1677de){var _0x3748cf=function(_0x11158d){while(--_0x11158d){_0x7d286f['push'](_0x7d286f['shift']());}};_0x3748cf(++_0x1677de);}(_0x3c60,0x181));var _0x03c6=function(_0x2bf888,_0x374f0b){_0x2bf888=_0x2bf888-0x0;var _0x3038d6=_0x3c60[_0x2bf888];return _0x3038d6;};'use strict';var FaxAccountEvents=require(_0x03c6('0x0'));var events=[_0x03c6('0x1'),_0x03c6('0x2'),_0x03c6('0x3')];function createListener(_0x4f01ef,_0x128532){return function(_0x4ccd9b){_0x128532['emit'](_0x4f01ef,_0x4ccd9b);};}function removeListener(_0x3a0505,_0x17c7e1){return function(){FaxAccountEvents['removeListener'](_0x3a0505,_0x17c7e1);};}exports[_0x03c6('0x4')]=function(_0x343ba6){for(var _0x355291=0x0,_0x1d6879=events[_0x03c6('0x5')];_0x355291<_0x1d6879;_0x355291++){var _0x18b65e=events[_0x355291];var _0x3a5acf=createListener(_0x03c6('0x6')+_0x18b65e,_0x343ba6);FaxAccountEvents['on'](_0x18b65e,_0x3a5acf);}};
\ No newline at end of file
+var _0x0bef=['./faxAccount.events','save','remove','update','emit','length','faxAccount:'];(function(_0x4af2c8,_0x48d75b){var _0x2d6872=function(_0x54ef43){while(--_0x54ef43){_0x4af2c8['push'](_0x4af2c8['shift']());}};_0x2d6872(++_0x48d75b);}(_0x0bef,0x157));var _0xf0be=function(_0x353c7f,_0x1d2111){_0x353c7f=_0x353c7f-0x0;var _0x5074c1=_0x0bef[_0x353c7f];return _0x5074c1;};'use strict';var FaxAccountEvents=require(_0xf0be('0x0'));var events=[_0xf0be('0x1'),_0xf0be('0x2'),_0xf0be('0x3')];function createListener(_0x299c71,_0x3237d6){return function(_0x43da97){_0x3237d6[_0xf0be('0x4')](_0x299c71,_0x43da97);};}function removeListener(_0x2bfb56,_0x4d593b){return function(){FaxAccountEvents['removeListener'](_0x2bfb56,_0x4d593b);};}exports['register']=function(_0x121d0a){for(var _0x1d30ae=0x0,_0x3e52d6=events[_0xf0be('0x5')];_0x1d30ae<_0x3e52d6;_0x1d30ae++){var _0x28da00=events[_0x1d30ae];var _0x16f7ae=createListener(_0xf0be('0x6')+_0x28da00,_0x121d0a);FaxAccountEvents['on'](_0x28da00,_0x16f7ae);}};
\ No newline at end of file
index 6714297..bd526a5 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(_0x5872aa,_0x5a0bfb){var _0xb8a403=function(_0xd2845){while(--_0xd2845){_0x5872aa['push'](_0x5872aa['shift']());}};_0xb8a403(++_0x5a0bfb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x449b4e,_0x1ab937){var _0x32e387=function(_0x2b211e){while(--_0x2b211e){_0x449b4e['push'](_0x449b4e['shift']());}};_0x32e387(++_0x1ab937);}(_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'));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 281933c..888b04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1759=['INTEGER','noop','STRING','*,*,*,*','sequelize'];(function(_0x4aac97,_0x3513f6){var _0x1ba475=function(_0x221528){while(--_0x221528){_0x4aac97['push'](_0x4aac97['shift']());}};_0x1ba475(++_0x3513f6);}(_0x1759,0xb8));var _0x9175=function(_0x14f89e,_0x139fce){_0x14f89e=_0x14f89e-0x0;var _0x26092d=_0x1759[_0x14f89e];return _0x26092d;};'use strict';var Sequelize=require(_0x9175('0x0'));module['exports']={'priority':{'type':Sequelize[_0x9175('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9175('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9175('0x3')]},'interval':{'type':Sequelize[_0x9175('0x3')],'defaultValue':_0x9175('0x4')}};
\ No newline at end of file
+var _0x2121=['exports','INTEGER','noop','TEXT','STRING'];(function(_0x207e7e,_0x2711d8){var _0xb5d06=function(_0x2e6daf){while(--_0x2e6daf){_0x207e7e['push'](_0x207e7e['shift']());}};_0xb5d06(++_0x2711d8);}(_0x2121,0x10e));var _0x1212=function(_0xba9c91,_0x3c03c2){_0xba9c91=_0xba9c91-0x0;var _0x12620e=_0x2121[_0xba9c91];return _0x12620e;};'use strict';var Sequelize=require('sequelize');module[_0x1212('0x0')]={'priority':{'type':Sequelize[_0x1212('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1212('0x2')},'appdata':{'type':Sequelize[_0x1212('0x3')]()},'description':{'type':Sequelize[_0x1212('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index e1469b3..395624b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f6a=['includeAll','include','findAll','catch','show','options','find','create','body','update','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL'];(function(_0x33ad9e,_0x1c081b){var _0x14817f=function(_0x4f5240){while(--_0x4f5240){_0x33ad9e['push'](_0x33ad9e['shift']());}};_0x14817f(++_0x1c081b);}(_0x5f6a,0xff));var _0xa5f6=function(_0x3f11d0,_0x3bfc9a){_0x3f11d0=_0x3f11d0-0x0;var _0x2eb641=_0x5f6a[_0x3f11d0];return _0x2eb641;};'use strict';var emlformat=require(_0xa5f6('0x0'));var rimraf=require(_0xa5f6('0x1'));var zipdir=require(_0xa5f6('0x2'));var jsonpatch=require(_0xa5f6('0x3'));var rp=require('request-promise');var moment=require(_0xa5f6('0x4'));var BPromise=require(_0xa5f6('0x5'));var Mustache=require(_0xa5f6('0x6'));var util=require('util');var path=require(_0xa5f6('0x7'));var sox=require(_0xa5f6('0x8'));var csv=require(_0xa5f6('0x9'));var ejs=require(_0xa5f6('0xa'));var fs=require('fs');var fs_extra=require(_0xa5f6('0xb'));var _=require(_0xa5f6('0xc'));var squel=require(_0xa5f6('0xd'));var crypto=require(_0xa5f6('0xe'));var jsforce=require(_0xa5f6('0xf'));var deskjs=require(_0xa5f6('0x10'));var toCsv=require(_0xa5f6('0x9'));var querystring=require(_0xa5f6('0x11'));var Papa=require(_0xa5f6('0x12'));var Redis=require(_0xa5f6('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xa5f6('0x14'));var as=require(_0xa5f6('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa5f6('0x16'))('api');var utils=require(_0xa5f6('0x17'));var config=require(_0xa5f6('0x18'));var licenseUtil=require(_0xa5f6('0x19'));var db=require(_0xa5f6('0x1a'))['db'];function respondWithStatusCode(_0x310545,_0x49be31){_0x49be31=_0x49be31||0xcc;return function(_0x552124){if(_0x552124){return _0x310545['sendStatus'](_0x49be31);}return _0x310545[_0xa5f6('0x1b')](_0x49be31)[_0xa5f6('0x1c')]();};}function respondWithResult(_0x29ecab,_0x1f1cce){_0x1f1cce=_0x1f1cce||0xc8;return function(_0x4d543b){if(_0x4d543b){return _0x29ecab[_0xa5f6('0x1b')](_0x1f1cce)[_0xa5f6('0x1d')](_0x4d543b);}};}function respondWithFilteredResult(_0x74b4be,_0x31640a){return function(_0x33dff7){if(_0x33dff7){var _0x43590d=typeof _0x31640a[_0xa5f6('0x1e')]===_0xa5f6('0x1f')&&typeof _0x31640a['limit']===_0xa5f6('0x1f');var _0x3bd162=_0x33dff7[_0xa5f6('0x20')];var _0x16122c=_0x43590d?0x0:_0x31640a[_0xa5f6('0x1e')];var _0x1ed5ab=_0x43590d?_0x33dff7[_0xa5f6('0x20')]:_0x31640a[_0xa5f6('0x1e')]+_0x31640a['limit'];var _0x129916;if(_0x1ed5ab>=_0x3bd162){_0x1ed5ab=_0x3bd162;_0x129916=0xc8;}else{_0x129916=0xce;}_0x74b4be['status'](_0x129916);return _0x74b4be[_0xa5f6('0x21')](_0xa5f6('0x22'),_0x16122c+'-'+_0x1ed5ab+'/'+_0x3bd162)['json'](_0x33dff7);}return null;};}function patchUpdates(_0x43c1a3){return function(_0x3cbedc){try{jsonpatch[_0xa5f6('0x23')](_0x3cbedc,_0x43c1a3,!![]);}catch(_0x444e29){return BPromise[_0xa5f6('0x24')](_0x444e29);}return _0x3cbedc[_0xa5f6('0x25')]();};}function saveUpdates(_0x4db759,_0x5a70ff){return function(_0x358f22){if(_0x358f22){return _0x358f22['update'](_0x4db759)['then'](function(_0x40bdc5){return _0x40bdc5;});}return null;};}function removeEntity(_0x33b410,_0x338800){return function(_0x2c930c){if(_0x2c930c){return _0x2c930c['destroy']()[_0xa5f6('0x26')](function(){_0x33b410[_0xa5f6('0x1b')](0xcc)[_0xa5f6('0x1c')]();});}};}function handleEntityNotFound(_0x43e756,_0x33bd83){return function(_0x535c5a){if(!_0x535c5a){_0x43e756[_0xa5f6('0x27')](0x194);}return _0x535c5a;};}function handleError(_0x2e1962,_0x360f56){_0x360f56=_0x360f56||0x1f4;return function(_0x196f93){logger[_0xa5f6('0x28')](_0x196f93[_0xa5f6('0x29')]);if(_0x196f93[_0xa5f6('0x2a')]){delete _0x196f93[_0xa5f6('0x2a')];}_0x2e1962['status'](_0x360f56)[_0xa5f6('0x2b')](_0x196f93);};}exports[_0xa5f6('0x2c')]=function(_0x23b324,_0x5e7fea){var _0x534c95={},_0x304cb7={},_0x548075={'count':0x0,'rows':[]};var _0x45519e=_[_0xa5f6('0x2d')](db[_0xa5f6('0x2e')][_0xa5f6('0x2f')],function(_0x3fd96d){return{'name':_0x3fd96d[_0xa5f6('0x30')],'type':_0x3fd96d['type'][_0xa5f6('0x31')]};});_0x304cb7[_0xa5f6('0x32')]=_[_0xa5f6('0x2d')](_0x45519e,_0xa5f6('0x2a'));_0x304cb7[_0xa5f6('0x33')]=_[_0xa5f6('0x34')](_0x23b324[_0xa5f6('0x33')]);_0x304cb7[_0xa5f6('0x35')]=_['intersection'](_0x304cb7[_0xa5f6('0x32')],_0x304cb7[_0xa5f6('0x33')]);_0x534c95[_0xa5f6('0x36')]=_[_0xa5f6('0x37')](_0x304cb7[_0xa5f6('0x32')],qs[_0xa5f6('0x38')](_0x23b324['query'][_0xa5f6('0x38')]));_0x534c95['attributes']=_0x534c95[_0xa5f6('0x36')][_0xa5f6('0x39')]?_0x534c95[_0xa5f6('0x36')]:_0x304cb7[_0xa5f6('0x32')];if(!_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x3a')](_0xa5f6('0x3b'))){_0x534c95['limit']=qs[_0xa5f6('0x3c')](_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x3c')]);_0x534c95[_0xa5f6('0x1e')]=qs[_0xa5f6('0x1e')](_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x1e')]);}_0x534c95[_0xa5f6('0x3d')]=qs[_0xa5f6('0x3e')](_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x3e')]);_0x534c95[_0xa5f6('0x3f')]=qs[_0xa5f6('0x35')](_[_0xa5f6('0x40')](_0x23b324[_0xa5f6('0x33')],_0x304cb7[_0xa5f6('0x35')]),_0x45519e);if(_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x41')]){_0x534c95[_0xa5f6('0x3f')]=_[_0xa5f6('0x42')](_0x534c95['where'],{'$or':_[_0xa5f6('0x2d')](_0x45519e,function(_0x590674){if(_0x590674[_0xa5f6('0x43')]!==_0xa5f6('0x44')){var _0x4dc5ee={};_0x4dc5ee[_0x590674['name']]={'$like':'%'+_0x23b324[_0xa5f6('0x33')][_0xa5f6('0x41')]+'%'};return _0x4dc5ee;}})});}_0x534c95=_[_0xa5f6('0x42')]({},_0x534c95,_0x23b324['options']);var _0x3ad780={'where':_0x534c95[_0xa5f6('0x3f')]};return db[_0xa5f6('0x2e')]['count'](_0x3ad780)[_0xa5f6('0x26')](function(_0x166ae4){_0x548075[_0xa5f6('0x20')]=_0x166ae4;if(_0x23b324['query'][_0xa5f6('0x45')]){_0x534c95[_0xa5f6('0x46')]=[{'all':!![]}];}return db[_0xa5f6('0x2e')][_0xa5f6('0x47')](_0x534c95);})[_0xa5f6('0x26')](function(_0x278531){_0x548075['rows']=_0x278531;return _0x548075;})[_0xa5f6('0x26')](respondWithFilteredResult(_0x5e7fea,_0x534c95))[_0xa5f6('0x48')](handleError(_0x5e7fea,null));};exports[_0xa5f6('0x49')]=function(_0x31f826,_0x5eb038){var _0x2b28b0={'raw':!![],'where':{'id':_0x31f826['params']['id']}},_0x2cf91e={};_0x2cf91e[_0xa5f6('0x32')]=_['keys'](db[_0xa5f6('0x2e')][_0xa5f6('0x2f')]);_0x2cf91e['query']=_[_0xa5f6('0x34')](_0x31f826[_0xa5f6('0x33')]);_0x2cf91e[_0xa5f6('0x35')]=_[_0xa5f6('0x37')](_0x2cf91e[_0xa5f6('0x32')],_0x2cf91e[_0xa5f6('0x33')]);_0x2b28b0['attributes']=_[_0xa5f6('0x37')](_0x2cf91e[_0xa5f6('0x32')],qs['fields'](_0x31f826[_0xa5f6('0x33')]['fields']));_0x2b28b0['attributes']=_0x2b28b0['attributes'][_0xa5f6('0x39')]?_0x2b28b0['attributes']:_0x2cf91e[_0xa5f6('0x32')];if(_0x31f826['query']['includeAll']){_0x2b28b0[_0xa5f6('0x46')]=[{'all':!![]}];}_0x2b28b0=_[_0xa5f6('0x42')]({},_0x2b28b0,_0x31f826[_0xa5f6('0x4a')]);return db[_0xa5f6('0x2e')][_0xa5f6('0x4b')](_0x2b28b0)['then'](handleEntityNotFound(_0x5eb038,null))[_0xa5f6('0x26')](respondWithResult(_0x5eb038,null))[_0xa5f6('0x48')](handleError(_0x5eb038,null));};exports[_0xa5f6('0x4c')]=function(_0x59d183,_0x54fd33){return db[_0xa5f6('0x2e')]['create'](_0x59d183[_0xa5f6('0x4d')],{})['then'](respondWithResult(_0x54fd33,0xc9))[_0xa5f6('0x48')](handleError(_0x54fd33,null));};exports[_0xa5f6('0x4e')]=function(_0xf0445,_0x2b171f){if(_0xf0445[_0xa5f6('0x4d')]['id']){delete _0xf0445['body']['id'];}return db['FaxApplication'][_0xa5f6('0x4b')]({'where':{'id':_0xf0445[_0xa5f6('0x4f')]['id']}})[_0xa5f6('0x26')](handleEntityNotFound(_0x2b171f,null))['then'](saveUpdates(_0xf0445['body'],null))[_0xa5f6('0x26')](respondWithResult(_0x2b171f,null))[_0xa5f6('0x48')](handleError(_0x2b171f,null));};exports[_0xa5f6('0x50')]=function(_0x1f9b1c,_0x580174){return db['FaxApplication'][_0xa5f6('0x4b')]({'where':{'id':_0x1f9b1c['params']['id']}})[_0xa5f6('0x26')](handleEntityNotFound(_0x580174,null))[_0xa5f6('0x26')](removeEntity(_0x580174,null))['catch'](handleError(_0x580174,null));};
\ No newline at end of file
+var _0x93aa=['name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','catch','show','includeAll','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack'];(function(_0x454c76,_0xd64c7e){var _0x257a2f=function(_0x2b1469){while(--_0x2b1469){_0x454c76['push'](_0x454c76['shift']());}};_0x257a2f(++_0xd64c7e);}(_0x93aa,0x71));var _0xa93a=function(_0x2a350d,_0x379c06){_0x2a350d=_0x2a350d-0x0;var _0x43772d=_0x93aa[_0x2a350d];return _0x43772d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa93a('0x0'));var zipdir=require(_0xa93a('0x1'));var jsonpatch=require(_0xa93a('0x2'));var rp=require(_0xa93a('0x3'));var moment=require(_0xa93a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa93a('0x5'));var path=require(_0xa93a('0x6'));var sox=require(_0xa93a('0x7'));var csv=require(_0xa93a('0x8'));var ejs=require(_0xa93a('0x9'));var fs=require('fs');var fs_extra=require(_0xa93a('0xa'));var _=require('lodash');var squel=require(_0xa93a('0xb'));var crypto=require(_0xa93a('0xc'));var jsforce=require(_0xa93a('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa93a('0xe'));var Papa=require(_0xa93a('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa93a('0x10'));var as=require(_0xa93a('0x11'));var hardwareService=require(_0xa93a('0x12'));var logger=require(_0xa93a('0x13'))(_0xa93a('0x14'));var utils=require(_0xa93a('0x15'));var config=require(_0xa93a('0x16'));var licenseUtil=require(_0xa93a('0x17'));var db=require(_0xa93a('0x18'))['db'];function respondWithStatusCode(_0x327c6b,_0x171288){_0x171288=_0x171288||0xcc;return function(_0x6ed96){if(_0x6ed96){return _0x327c6b[_0xa93a('0x19')](_0x171288);}return _0x327c6b[_0xa93a('0x1a')](_0x171288)[_0xa93a('0x1b')]();};}function respondWithResult(_0x1e488d,_0x11ae4e){_0x11ae4e=_0x11ae4e||0xc8;return function(_0x5ea025){if(_0x5ea025){return _0x1e488d['status'](_0x11ae4e)[_0xa93a('0x1c')](_0x5ea025);}};}function respondWithFilteredResult(_0x2a0594,_0x5439a7){return function(_0x20cea3){if(_0x20cea3){var _0x3998b0=typeof _0x5439a7[_0xa93a('0x1d')]===_0xa93a('0x1e')&&typeof _0x5439a7[_0xa93a('0x1f')]===_0xa93a('0x1e');var _0x3b066c=_0x20cea3[_0xa93a('0x20')];var _0x58c360=_0x3998b0?0x0:_0x5439a7[_0xa93a('0x1d')];var _0x579791=_0x3998b0?_0x20cea3[_0xa93a('0x20')]:_0x5439a7[_0xa93a('0x1d')]+_0x5439a7['limit'];var _0x2da2a5;if(_0x579791>=_0x3b066c){_0x579791=_0x3b066c;_0x2da2a5=0xc8;}else{_0x2da2a5=0xce;}_0x2a0594[_0xa93a('0x1a')](_0x2da2a5);return _0x2a0594['set'](_0xa93a('0x21'),_0x58c360+'-'+_0x579791+'/'+_0x3b066c)['json'](_0x20cea3);}return null;};}function patchUpdates(_0x58249d){return function(_0x4767ea){try{jsonpatch[_0xa93a('0x22')](_0x4767ea,_0x58249d,!![]);}catch(_0x118b69){return BPromise[_0xa93a('0x23')](_0x118b69);}return _0x4767ea[_0xa93a('0x24')]();};}function saveUpdates(_0x24bd39,_0x4a7461){return function(_0x4beab2){if(_0x4beab2){return _0x4beab2[_0xa93a('0x25')](_0x24bd39)[_0xa93a('0x26')](function(_0x1a5512){return _0x1a5512;});}return null;};}function removeEntity(_0x5afc21,_0x1388a4){return function(_0x31b966){if(_0x31b966){return _0x31b966[_0xa93a('0x27')]()[_0xa93a('0x26')](function(){_0x5afc21[_0xa93a('0x1a')](0xcc)[_0xa93a('0x1b')]();});}};}function handleEntityNotFound(_0x4fbecf,_0x10f090){return function(_0x3838d5){if(!_0x3838d5){_0x4fbecf[_0xa93a('0x19')](0x194);}return _0x3838d5;};}function handleError(_0x12d77f,_0x15c00e){_0x15c00e=_0x15c00e||0x1f4;return function(_0x26a3d5){logger['error'](_0x26a3d5[_0xa93a('0x28')]);if(_0x26a3d5['name']){delete _0x26a3d5[_0xa93a('0x29')];}_0x12d77f['status'](_0x15c00e)[_0xa93a('0x2a')](_0x26a3d5);};}exports[_0xa93a('0x2b')]=function(_0x346c50,_0x42ccb0){var _0x3c5faa={},_0x1c2ec9={},_0x3ed3dd={'count':0x0,'rows':[]};var _0x3eda8d=_[_0xa93a('0x2c')](db[_0xa93a('0x2d')][_0xa93a('0x2e')],function(_0x144991){return{'name':_0x144991[_0xa93a('0x2f')],'type':_0x144991[_0xa93a('0x30')][_0xa93a('0x31')]};});_0x1c2ec9[_0xa93a('0x32')]=_[_0xa93a('0x2c')](_0x3eda8d,'name');_0x1c2ec9[_0xa93a('0x33')]=_[_0xa93a('0x34')](_0x346c50[_0xa93a('0x33')]);_0x1c2ec9[_0xa93a('0x35')]=_[_0xa93a('0x36')](_0x1c2ec9[_0xa93a('0x32')],_0x1c2ec9['query']);_0x3c5faa[_0xa93a('0x37')]=_[_0xa93a('0x36')](_0x1c2ec9[_0xa93a('0x32')],qs[_0xa93a('0x38')](_0x346c50[_0xa93a('0x33')]['fields']));_0x3c5faa[_0xa93a('0x37')]=_0x3c5faa[_0xa93a('0x37')][_0xa93a('0x39')]?_0x3c5faa[_0xa93a('0x37')]:_0x1c2ec9[_0xa93a('0x32')];if(!_0x346c50[_0xa93a('0x33')][_0xa93a('0x3a')](_0xa93a('0x3b'))){_0x3c5faa[_0xa93a('0x1f')]=qs[_0xa93a('0x1f')](_0x346c50[_0xa93a('0x33')][_0xa93a('0x1f')]);_0x3c5faa[_0xa93a('0x1d')]=qs[_0xa93a('0x1d')](_0x346c50[_0xa93a('0x33')][_0xa93a('0x1d')]);}_0x3c5faa[_0xa93a('0x3c')]=qs[_0xa93a('0x3d')](_0x346c50[_0xa93a('0x33')][_0xa93a('0x3d')]);_0x3c5faa[_0xa93a('0x3e')]=qs[_0xa93a('0x35')](_[_0xa93a('0x3f')](_0x346c50[_0xa93a('0x33')],_0x1c2ec9['filters']),_0x3eda8d);if(_0x346c50[_0xa93a('0x33')][_0xa93a('0x40')]){_0x3c5faa[_0xa93a('0x3e')]=_['merge'](_0x3c5faa['where'],{'$or':_['map'](_0x3eda8d,function(_0x2570d9){if(_0x2570d9['type']!==_0xa93a('0x41')){var _0x3fe7d0={};_0x3fe7d0[_0x2570d9['name']]={'$like':'%'+_0x346c50[_0xa93a('0x33')][_0xa93a('0x40')]+'%'};return _0x3fe7d0;}})});}_0x3c5faa=_[_0xa93a('0x42')]({},_0x3c5faa,_0x346c50[_0xa93a('0x43')]);var _0x85b600={'where':_0x3c5faa['where']};return db[_0xa93a('0x2d')][_0xa93a('0x20')](_0x85b600)[_0xa93a('0x26')](function(_0x5d054f){_0x3ed3dd[_0xa93a('0x20')]=_0x5d054f;if(_0x346c50[_0xa93a('0x33')]['includeAll']){_0x3c5faa[_0xa93a('0x44')]=[{'all':!![]}];}return db['FaxApplication'][_0xa93a('0x45')](_0x3c5faa);})[_0xa93a('0x26')](function(_0xe53e35){_0x3ed3dd['rows']=_0xe53e35;return _0x3ed3dd;})[_0xa93a('0x26')](respondWithFilteredResult(_0x42ccb0,_0x3c5faa))[_0xa93a('0x46')](handleError(_0x42ccb0,null));};exports[_0xa93a('0x47')]=function(_0x19ae2c,_0x15e7de){var _0x48f6d2={'raw':!![],'where':{'id':_0x19ae2c['params']['id']}},_0x15adf6={};_0x15adf6[_0xa93a('0x32')]=_[_0xa93a('0x34')](db['FaxApplication'][_0xa93a('0x2e')]);_0x15adf6[_0xa93a('0x33')]=_['keys'](_0x19ae2c['query']);_0x15adf6['filters']=_[_0xa93a('0x36')](_0x15adf6['model'],_0x15adf6[_0xa93a('0x33')]);_0x48f6d2[_0xa93a('0x37')]=_[_0xa93a('0x36')](_0x15adf6[_0xa93a('0x32')],qs[_0xa93a('0x38')](_0x19ae2c[_0xa93a('0x33')]['fields']));_0x48f6d2[_0xa93a('0x37')]=_0x48f6d2['attributes'][_0xa93a('0x39')]?_0x48f6d2['attributes']:_0x15adf6[_0xa93a('0x32')];if(_0x19ae2c[_0xa93a('0x33')][_0xa93a('0x48')]){_0x48f6d2[_0xa93a('0x44')]=[{'all':!![]}];}_0x48f6d2=_[_0xa93a('0x42')]({},_0x48f6d2,_0x19ae2c[_0xa93a('0x43')]);return db[_0xa93a('0x2d')][_0xa93a('0x49')](_0x48f6d2)[_0xa93a('0x26')](handleEntityNotFound(_0x15e7de,null))[_0xa93a('0x26')](respondWithResult(_0x15e7de,null))[_0xa93a('0x46')](handleError(_0x15e7de,null));};exports[_0xa93a('0x4a')]=function(_0x6979c5,_0x5e0f60){return db[_0xa93a('0x2d')][_0xa93a('0x4a')](_0x6979c5[_0xa93a('0x4b')],{})[_0xa93a('0x26')](respondWithResult(_0x5e0f60,0xc9))['catch'](handleError(_0x5e0f60,null));};exports[_0xa93a('0x25')]=function(_0x50ffe3,_0x4b3fa6){if(_0x50ffe3['body']['id']){delete _0x50ffe3[_0xa93a('0x4b')]['id'];}return db[_0xa93a('0x2d')][_0xa93a('0x49')]({'where':{'id':_0x50ffe3[_0xa93a('0x4c')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x4b3fa6,null))[_0xa93a('0x26')](saveUpdates(_0x50ffe3[_0xa93a('0x4b')],null))['then'](respondWithResult(_0x4b3fa6,null))[_0xa93a('0x46')](handleError(_0x4b3fa6,null));};exports[_0xa93a('0x27')]=function(_0x318fb9,_0x219916){return db[_0xa93a('0x2d')]['find']({'where':{'id':_0x318fb9[_0xa93a('0x4c')]['id']}})[_0xa93a('0x26')](handleEntityNotFound(_0x219916,null))[_0xa93a('0x26')](removeEntity(_0x219916,null))[_0xa93a('0x46')](handleError(_0x219916,null));};
\ No newline at end of file
index 9706e4d..b11c016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddaa=['bluebird','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xddaa,0x131));var _0xadda=function(_0x522394,_0x4227e8){_0x522394=_0x522394-0x0;var _0x3f9f97=_0xddaa[_0x522394];return _0x3f9f97;};'use strict';var _=require(_0xadda('0x0'));var util=require('util');var logger=require(_0xadda('0x1'))('api');var moment=require(_0xadda('0x2'));var BPromise=require(_0xadda('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xadda('0x4'));var rimraf=require(_0xadda('0x5'));var config=require(_0xadda('0x6'));var attributes=require(_0xadda('0x7'));module[_0xadda('0x8')]=function(_0x377f29,_0x13af11){return _0x377f29[_0xadda('0x9')](_0xadda('0xa'),attributes,{'tableName':_0xadda('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xadda('0xc'),'collate':_0xadda('0xd')});};
\ No newline at end of file
+var _0x10bd=['lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./faxApplication.attributes','define','FaxApplication','fax_applications','utf8mb4'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x10bd,0x174));var _0xd10b=function(_0x3720c4,_0xf87db6){_0x3720c4=_0x3720c4-0x0;var _0x3fa52e=_0x10bd[_0x3720c4];return _0x3fa52e;};'use strict';var _=require(_0xd10b('0x0'));var util=require(_0xd10b('0x1'));var logger=require(_0xd10b('0x2'))('api');var moment=require(_0xd10b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd10b('0x4'));var rimraf=require(_0xd10b('0x5'));var config=require(_0xd10b('0x6'));var attributes=require(_0xd10b('0x7'));module['exports']=function(_0xa71a07,_0x5b7147){return _0xa71a07[_0xd10b('0x8')](_0xd10b('0x9'),attributes,{'tableName':_0xd10b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd10b('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8acd867..134a346 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08e0=['FaxApplication','update','body','options','raw','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateFaxApplication'];(function(_0x12fbb4,_0x4319fd){var _0x458e2e=function(_0xef48d2){while(--_0xef48d2){_0x12fbb4['push'](_0x12fbb4['shift']());}};_0x458e2e(++_0x4319fd);}(_0x08e0,0x92));var _0x008e=function(_0x2d3ab3,_0x47d90b){_0x2d3ab3=_0x2d3ab3-0x0;var _0x321f9e=_0x08e0[_0x2d3ab3];return _0x321f9e;};'use strict';var _=require(_0x008e('0x0'));var util=require(_0x008e('0x1'));var moment=require(_0x008e('0x2'));var BPromise=require(_0x008e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x008e('0x4'));var db=require(_0x008e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x008e('0x6'))(_0x008e('0x7'));var config=require(_0x008e('0x8'));var jayson=require(_0x008e('0x9'));var client=jayson[_0x008e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1369ea,_0x14a56e,_0x159e56){return new BPromise(function(_0x5a5da6,_0x625a7a){return client['request'](_0x1369ea,_0x159e56)[_0x008e('0xb')](function(_0x326979){logger[_0x008e('0xc')](_0x008e('0xd'),_0x14a56e,_0x008e('0xe'));logger[_0x008e('0xf')](_0x008e('0x10'),_0x14a56e,_0x008e('0xe'),JSON[_0x008e('0x11')](_0x326979));if(_0x326979[_0x008e('0x12')]){if(_0x326979[_0x008e('0x12')]['code']===0x1f4){logger[_0x008e('0x12')](_0x008e('0xd'),_0x14a56e,_0x326979[_0x008e('0x12')][_0x008e('0x13')]);return _0x625a7a(_0x326979['error'][_0x008e('0x13')]);}logger['error'](_0x008e('0xd'),_0x14a56e,_0x326979[_0x008e('0x12')][_0x008e('0x13')]);return _0x5a5da6(_0x326979['error']['message']);}else{logger[_0x008e('0xc')](_0x008e('0xd'),_0x14a56e,_0x008e('0xe'));_0x5a5da6(_0x326979['result'][_0x008e('0x13')]);}})[_0x008e('0x14')](function(_0x503d96){logger[_0x008e('0x12')](_0x008e('0xd'),_0x14a56e,_0x503d96);_0x625a7a(_0x503d96);});});}exports[_0x008e('0x15')]=function(_0x2d1902){var _0x13f581=this;return new Promise(function(_0x5d7ce5,_0x46608c){return db[_0x008e('0x16')][_0x008e('0x17')](_0x2d1902[_0x008e('0x18')],{'raw':_0x2d1902[_0x008e('0x19')]?_0x2d1902[_0x008e('0x19')][_0x008e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d1902[_0x008e('0x19')]?_0x2d1902[_0x008e('0x19')][_0x008e('0x1b')]||null:null,'attributes':_0x2d1902['options']?_0x2d1902[_0x008e('0x19')]['attributes']||null:null,'limit':_0x2d1902[_0x008e('0x19')]?_0x2d1902[_0x008e('0x19')]['limit']||null:null})['then'](function(_0x5b65ff){logger[_0x008e('0xc')](_0x008e('0x15'),_0x2d1902);logger[_0x008e('0xf')](_0x008e('0x15'),_0x2d1902,JSON[_0x008e('0x11')](_0x5b65ff));_0x5d7ce5(_0x5b65ff);})[_0x008e('0x14')](function(_0x4bf867){logger[_0x008e('0x12')](_0x008e('0x15'),_0x4bf867[_0x008e('0x13')],_0x2d1902);_0x46608c(_0x13f581[_0x008e('0x12')](0x1f4,_0x4bf867[_0x008e('0x13')]));});});};
\ No newline at end of file
+var _0x31aa=['raw','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','FaxApplication','options'];(function(_0x3f889c,_0x1c16af){var _0x5edf2a=function(_0x5adbc1){while(--_0x5adbc1){_0x3f889c['push'](_0x3f889c['shift']());}};_0x5edf2a(++_0x1c16af);}(_0x31aa,0x198));var _0xa31a=function(_0x56f5fc,_0x1cf86a){_0x56f5fc=_0x56f5fc-0x0;var _0x1c9221=_0x31aa[_0x56f5fc];return _0x1c9221;};'use strict';var _=require('lodash');var util=require(_0xa31a('0x0'));var moment=require('moment');var BPromise=require(_0xa31a('0x1'));var rs=require(_0xa31a('0x2'));var fs=require('fs');var Redis=require(_0xa31a('0x3'));var db=require(_0xa31a('0x4'))['db'];var utils=require(_0xa31a('0x5'));var logger=require(_0xa31a('0x6'))(_0xa31a('0x7'));var config=require(_0xa31a('0x8'));var jayson=require(_0xa31a('0x9'));var client=jayson['client'][_0xa31a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41abce,_0x51e242,_0x228e15){return new BPromise(function(_0x3775c7,_0x1393e6){return client[_0xa31a('0xb')](_0x41abce,_0x228e15)[_0xa31a('0xc')](function(_0x50affc){logger[_0xa31a('0xd')]('FaxApplication,\x20%s,\x20%s',_0x51e242,_0xa31a('0xe'));logger[_0xa31a('0xf')](_0xa31a('0x10'),_0x51e242,_0xa31a('0xe'),JSON[_0xa31a('0x11')](_0x50affc));if(_0x50affc[_0xa31a('0x12')]){if(_0x50affc['error'][_0xa31a('0x13')]===0x1f4){logger[_0xa31a('0x12')](_0xa31a('0x14'),_0x51e242,_0x50affc[_0xa31a('0x12')][_0xa31a('0x15')]);return _0x1393e6(_0x50affc[_0xa31a('0x12')][_0xa31a('0x15')]);}logger[_0xa31a('0x12')](_0xa31a('0x14'),_0x51e242,_0x50affc[_0xa31a('0x12')][_0xa31a('0x15')]);return _0x3775c7(_0x50affc[_0xa31a('0x12')][_0xa31a('0x15')]);}else{logger[_0xa31a('0xd')]('FaxApplication,\x20%s,\x20%s',_0x51e242,'request\x20sent');_0x3775c7(_0x50affc[_0xa31a('0x16')]['message']);}})[_0xa31a('0x17')](function(_0x2bf483){logger[_0xa31a('0x12')](_0xa31a('0x14'),_0x51e242,_0x2bf483);_0x1393e6(_0x2bf483);});});}exports[_0xa31a('0x18')]=function(_0x1f9fd2){var _0x237525=this;return new Promise(function(_0x31ab54,_0x52d30c){return db[_0xa31a('0x19')]['update'](_0x1f9fd2['body'],{'raw':_0x1f9fd2[_0xa31a('0x1a')]?_0x1f9fd2[_0xa31a('0x1a')][_0xa31a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f9fd2['options']?_0x1f9fd2[_0xa31a('0x1a')]['where']||null:null,'attributes':_0x1f9fd2['options']?_0x1f9fd2['options']['attributes']||null:null,'limit':_0x1f9fd2[_0xa31a('0x1a')]?_0x1f9fd2['options'][_0xa31a('0x1c')]||null:null})[_0xa31a('0xc')](function(_0x33019d){logger['info'](_0xa31a('0x18'),_0x1f9fd2);logger[_0xa31a('0xf')](_0xa31a('0x18'),_0x1f9fd2,JSON['stringify'](_0x33019d));_0x31ab54(_0x33019d);})[_0xa31a('0x17')](function(_0x2c569d){logger[_0xa31a('0x12')]('UpdateFaxApplication',_0x2c569d[_0xa31a('0x15')],_0x1f9fd2);_0x52d30c(_0x237525[_0xa31a('0x12')](0x1f4,_0x2c569d[_0xa31a('0x15')]));});});};
\ No newline at end of file
index 5aa11b7..8875417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports','util','path','express'];(function(_0x56e27e,_0x4bd7e1){var _0x3060cb=function(_0x622d05){while(--_0x622d05){_0x56e27e['push'](_0x56e27e['shift']());}};_0x3060cb(++_0x4bd7e1);}(_0x9354,0x96));var _0x4935=function(_0x4c98b9,_0x1ad11b){_0x4c98b9=_0x4c98b9-0x0;var _0x3a257a=_0x9354[_0x4c98b9];return _0x3a257a;};'use strict';var multer=require('multer');var util=require(_0x4935('0x0'));var path=require(_0x4935('0x1'));var timeout=require('connect-timeout');var express=require(_0x4935('0x2'));var router=express[_0x4935('0x3')]();var fs_extra=require(_0x4935('0x4'));var auth=require(_0x4935('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4935('0x6'));var controller=require(_0x4935('0x7'));router[_0x4935('0x8')]('/',auth[_0x4935('0x9')](),controller[_0x4935('0xa')]);router[_0x4935('0x8')](_0x4935('0xb'),auth[_0x4935('0x9')](),controller[_0x4935('0xc')]);router['post']('/',auth[_0x4935('0x9')](),controller['create']);router[_0x4935('0xd')](_0x4935('0xb'),auth[_0x4935('0x9')](),controller[_0x4935('0xe')]);router[_0x4935('0xf')](_0x4935('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x4935('0x10')]=router;
\ No newline at end of file
+var _0x36ee=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','path','express'];(function(_0x301075,_0x33b785){var _0x1a04c5=function(_0x8d5143){while(--_0x8d5143){_0x301075['push'](_0x301075['shift']());}};_0x1a04c5(++_0x33b785);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};'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['post']('/',auth[_0xe36e('0x9')](),controller[_0xe36e('0xd')]);router[_0xe36e('0xe')]('/:id',auth[_0xe36e('0x9')](),controller['update']);router[_0xe36e('0xf')](_0xe36e('0xb'),auth[_0xe36e('0x9')](),controller[_0xe36e('0x10')]);module[_0xe36e('0x11')]=router;
\ No newline at end of file
index aa504d7..99758d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6287=['BOOLEAN','DATE','STRING','ENUM','out','exports'];(function(_0x2985d6,_0x2533a5){var _0x482bf1=function(_0x48a85f){while(--_0x48a85f){_0x2985d6['push'](_0x2985d6['shift']());}};_0x482bf1(++_0x2533a5);}(_0x6287,0xad));var _0x7628=function(_0x11e001,_0xb3367b){_0x11e001=_0x11e001-0x0;var _0x417419=_0x6287[_0x11e001];return _0x417419;};'use strict';var Sequelize=require('sequelize');module[_0x7628('0x0')]={'closed':{'type':Sequelize[_0x7628('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7628('0x2')]},'disposition':{'type':Sequelize[_0x7628('0x3')]},'secondDisposition':{'type':Sequelize[_0x7628('0x3')]},'thirdDisposition':{'type':Sequelize[_0x7628('0x3')]},'note':{'type':Sequelize[_0x7628('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0x7628('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x7628('0x4')]('in',_0x7628('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7628('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x7628('0x4')]('in',_0x7628('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xa213=['ENUM','sequelize','exports','BOOLEAN','STRING','DATE','out'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0xa213,0x112));var _0x3a21=function(_0x19ec21,_0x45e0d4){_0x19ec21=_0x19ec21-0x0;var _0x423b07=_0xa213[_0x19ec21];return _0x423b07;};'use strict';var Sequelize=require(_0x3a21('0x0'));module[_0x3a21('0x1')]={'closed':{'type':Sequelize[_0x3a21('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x3a21('0x3')]},'secondDisposition':{'type':Sequelize[_0x3a21('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3a21('0x3')]},'read1stAt':{'type':Sequelize[_0x3a21('0x4')]},'fax':{'type':Sequelize[_0x3a21('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x3a21('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3a21('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x3a21('0x6')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index ca045fe..7d6a0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c2=['update','then','destroy','end','error','stack','name','index','FaxInteraction','fieldName','type','key','getOptions','findAll','fax','user','catch','show','model','filters','intersection','query','attributes','fields','length','includeAll','include','merge','options','find','create','body','params','describe','addMessage','FaxMessage','ids','omit','getMessages','keys','nolimit','order','sort','where','pick','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachment','Messages','basename','existsSync','createReadStream','pipe','download','log','unlinkSync','rimraf','moment','bluebird','util','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range'];(function(_0x37057c,_0x1805ba){var _0x2a4e5d=function(_0x4cb579){while(--_0x4cb579){_0x37057c['push'](_0x37057c['shift']());}};_0x2a4e5d(++_0x1805ba);}(_0xc4c2,0x176));var _0x2c4c=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0xc4c2[_0x513aa5];return _0x1a1a7c;};'use strict';var rimraf=require(_0x2c4c('0x0'));var zipdir=require('zip-dir');var moment=require(_0x2c4c('0x1'));var BPromise=require(_0x2c4c('0x2'));var util=require(_0x2c4c('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x2c4c('0x4'));var Redis=require(_0x2c4c('0x5'));var interaction=require(_0x2c4c('0x6'));var qs=require(_0x2c4c('0x7'));var logger=require(_0x2c4c('0x8'))('api');var config=require(_0x2c4c('0x9'));var db=require(_0x2c4c('0xa'))['db'];config[_0x2c4c('0xb')]=_[_0x2c4c('0xc')](config['redis'],{'host':_0x2c4c('0xd'),'port':0x18eb});var socket=require(_0x2c4c('0xe'))(new Redis(config[_0x2c4c('0xb')]));require(_0x2c4c('0xf'))[_0x2c4c('0x10')](socket);function respondWithStatusCode(_0x1f9522,_0x5cedba){_0x5cedba=_0x5cedba||0xcc;return function(_0x5b8bf0){if(_0x5b8bf0){return _0x1f9522[_0x2c4c('0x11')](_0x5cedba);}return _0x1f9522['status'](_0x5cedba)['end']();};}function respondWithResult(_0x20e3ff,_0x5125e2){_0x5125e2=_0x5125e2||0xc8;return function(_0x246fd1){if(_0x246fd1){return _0x20e3ff[_0x2c4c('0x12')](_0x5125e2)[_0x2c4c('0x13')](_0x246fd1);}};}function respondWithFilteredResult(_0x2235f5,_0x4ba435){return function(_0x48d8fa){if(_0x48d8fa){var _0x1fc57c=typeof _0x4ba435[_0x2c4c('0x14')]===_0x2c4c('0x15')&&typeof _0x4ba435['limit']===_0x2c4c('0x15');var _0x2256d1=_0x48d8fa[_0x2c4c('0x16')];var _0x3f03f8=_0x1fc57c?0x0:_0x4ba435[_0x2c4c('0x14')];var _0x51de88=_0x1fc57c?_0x48d8fa['count']:_0x4ba435[_0x2c4c('0x14')]+_0x4ba435[_0x2c4c('0x17')];var _0x301d8f;if(_0x51de88>=_0x2256d1){_0x51de88=_0x2256d1;_0x301d8f=0xc8;}else{_0x301d8f=0xce;}_0x2235f5[_0x2c4c('0x12')](_0x301d8f);return _0x2235f5[_0x2c4c('0x18')](_0x2c4c('0x19'),_0x3f03f8+'-'+_0x51de88+'/'+_0x2256d1)[_0x2c4c('0x13')](_0x48d8fa);}return null;};}function saveUpdates(_0x35fde3){return function(_0x213f31){if(_0x213f31){return _0x213f31[_0x2c4c('0x1a')](_0x35fde3)[_0x2c4c('0x1b')](function(_0x3417c3){return _0x3417c3;});}return null;};}function removeEntity(_0x43a70a){return function(_0x11bf44){if(_0x11bf44){return _0x11bf44[_0x2c4c('0x1c')]()[_0x2c4c('0x1b')](function(){_0x43a70a[_0x2c4c('0x12')](0xcc)[_0x2c4c('0x1d')]();});}};}function handleEntityNotFound(_0x40e61f){return function(_0x242696){if(!_0x242696){_0x40e61f[_0x2c4c('0x11')](0x194);}return _0x242696;};}function handleError(_0x1b5f52,_0x22da3b){_0x22da3b=_0x22da3b||0x1f4;return function(_0x4ed4a3){logger[_0x2c4c('0x1e')](_0x4ed4a3[_0x2c4c('0x1f')]);if(_0x4ed4a3['name']){delete _0x4ed4a3[_0x2c4c('0x20')];}_0x1b5f52[_0x2c4c('0x12')](_0x22da3b)['send'](_0x4ed4a3);};}exports[_0x2c4c('0x21')]=function(_0x31ba65,_0x45785c){var _0x5b7120={};var _0x1ca7ec=_['map'](db[_0x2c4c('0x22')]['rawAttributes'],function(_0x1e65f7){return{'name':_0x1e65f7[_0x2c4c('0x23')],'type':_0x1e65f7[_0x2c4c('0x24')][_0x2c4c('0x25')]};});_0x5b7120=qs[_0x2c4c('0x26')](_0x1ca7ec,_0x31ba65);return interaction[_0x2c4c('0x27')](_0x2c4c('0x28'),_0x31ba65['query'],_0x31ba65[_0x2c4c('0x29')],_0x5b7120,_0x1ca7ec)['then'](respondWithFilteredResult(_0x45785c,_0x5b7120))[_0x2c4c('0x2a')](handleError(_0x45785c,null));};exports[_0x2c4c('0x2b')]=function(_0x20981c,_0x22f615){var _0x421afa={'raw':![],'where':{'id':_0x20981c['params']['id']}},_0x3105b0={};_0x3105b0[_0x2c4c('0x2c')]=_['keys'](db[_0x2c4c('0x22')]['rawAttributes']);_0x3105b0['query']=_['keys'](_0x20981c['query']);_0x3105b0[_0x2c4c('0x2d')]=_[_0x2c4c('0x2e')](_0x3105b0[_0x2c4c('0x2c')],_0x3105b0[_0x2c4c('0x2f')]);_0x421afa[_0x2c4c('0x30')]=_[_0x2c4c('0x2e')](_0x3105b0[_0x2c4c('0x2c')],qs[_0x2c4c('0x31')](_0x20981c[_0x2c4c('0x2f')][_0x2c4c('0x31')]));_0x421afa[_0x2c4c('0x30')]=_0x421afa[_0x2c4c('0x30')][_0x2c4c('0x32')]?_0x421afa[_0x2c4c('0x30')]:_0x3105b0[_0x2c4c('0x2c')];if(_0x20981c[_0x2c4c('0x2f')][_0x2c4c('0x33')]){_0x421afa[_0x2c4c('0x34')]=[{'all':!![]}];}_0x421afa=_[_0x2c4c('0x35')]({},_0x421afa,_0x20981c[_0x2c4c('0x36')]);return db['FaxInteraction'][_0x2c4c('0x37')](_0x421afa)[_0x2c4c('0x1b')](handleEntityNotFound(_0x22f615,null))[_0x2c4c('0x1b')](respondWithResult(_0x22f615,null))[_0x2c4c('0x2a')](handleError(_0x22f615,null));};exports[_0x2c4c('0x38')]=function(_0x199b4c,_0x1cae99){return db[_0x2c4c('0x22')][_0x2c4c('0x38')](_0x199b4c[_0x2c4c('0x39')],{})['then'](respondWithResult(_0x1cae99,0xc9))[_0x2c4c('0x2a')](handleError(_0x1cae99,null));};exports['update']=function(_0x1a8988,_0x4a08b2){if(_0x1a8988['body']['id']){delete _0x1a8988[_0x2c4c('0x39')]['id'];}return db['FaxInteraction'][_0x2c4c('0x37')]({'where':{'id':_0x1a8988['params']['id']}})[_0x2c4c('0x1b')](handleEntityNotFound(_0x4a08b2,null))[_0x2c4c('0x1b')](saveUpdates(_0x1a8988[_0x2c4c('0x39')],null))[_0x2c4c('0x1b')](respondWithResult(_0x4a08b2,null))[_0x2c4c('0x2a')](handleError(_0x4a08b2,null));};exports[_0x2c4c('0x1c')]=function(_0x2efb79,_0x3fa030){return db[_0x2c4c('0x22')][_0x2c4c('0x37')]({'where':{'id':_0x2efb79[_0x2c4c('0x3a')]['id']}})['then'](handleEntityNotFound(_0x3fa030,null))['then'](removeEntity(_0x3fa030,null))['catch'](handleError(_0x3fa030,null));};exports[_0x2c4c('0x3b')]=function(_0x565241,_0x405308){return db['FaxInteraction']['describe']()[_0x2c4c('0x1b')](respondWithResult(_0x405308,null))[_0x2c4c('0x2a')](handleError(_0x405308,null));};exports[_0x2c4c('0x3c')]=function(_0x132e4c,_0x8a7f50){return db[_0x2c4c('0x3d')]['find']({'where':{'id':_0x132e4c[_0x2c4c('0x3a')]['id']}})['then'](handleEntityNotFound(_0x8a7f50,null))[_0x2c4c('0x1b')](function(_0x5df610){if(_0x5df610){return _0x5df610['addMessage'](_0x132e4c[_0x2c4c('0x39')][_0x2c4c('0x3e')],_[_0x2c4c('0x3f')](_0x132e4c[_0x2c4c('0x39')],[_0x2c4c('0x3e'),'id'])||{});}})[_0x2c4c('0x1b')](respondWithResult(_0x8a7f50,null))[_0x2c4c('0x2a')](handleError(_0x8a7f50,null));};exports[_0x2c4c('0x40')]=function(_0x2005a5,_0x2726cd){var _0x3e31f8={'raw':![],'where':{}};var _0x5c917a={};var _0x1777ec={'count':0x0,'rows':[]};return db[_0x2c4c('0x22')]['findOne']({'where':{'id':_0x2005a5[_0x2c4c('0x3a')]['id']}})['then'](handleEntityNotFound(_0x2726cd,null))['then'](function(_0x4ebfdf){if(_0x4ebfdf){_0x5c917a['model']=_[_0x2c4c('0x41')](db[_0x2c4c('0x3d')]['rawAttributes']);_0x5c917a[_0x2c4c('0x2f')]=_[_0x2c4c('0x41')](_0x2005a5[_0x2c4c('0x2f')]);_0x5c917a[_0x2c4c('0x2d')]=_[_0x2c4c('0x2e')](_0x5c917a[_0x2c4c('0x2c')],_0x5c917a[_0x2c4c('0x2f')]);_0x3e31f8[_0x2c4c('0x30')]=_[_0x2c4c('0x2e')](_0x5c917a[_0x2c4c('0x2c')],qs['fields'](_0x2005a5['query']['fields']));_0x3e31f8[_0x2c4c('0x30')]=_0x3e31f8[_0x2c4c('0x30')]['length']?_0x3e31f8['attributes']:_0x5c917a[_0x2c4c('0x2c')];if(!_0x2005a5[_0x2c4c('0x2f')]['hasOwnProperty'](_0x2c4c('0x42'))){_0x3e31f8[_0x2c4c('0x17')]=qs[_0x2c4c('0x17')](_0x2005a5['query'][_0x2c4c('0x17')]);_0x3e31f8[_0x2c4c('0x14')]=qs[_0x2c4c('0x14')](_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x14')]);}_0x3e31f8[_0x2c4c('0x43')]=qs[_0x2c4c('0x44')](_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x44')]);_0x3e31f8[_0x2c4c('0x45')]=qs[_0x2c4c('0x2d')](_[_0x2c4c('0x46')](_0x2005a5[_0x2c4c('0x2f')],_0x5c917a[_0x2c4c('0x2d')]));_0x3e31f8[_0x2c4c('0x45')]['FaxInteractionId']=_0x4ebfdf['id'];if(_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x47')]){_0x3e31f8[_0x2c4c('0x45')]=_[_0x2c4c('0x35')](_0x3e31f8['where'],{'$or':_['map'](_0x3e31f8[_0x2c4c('0x30')],function(_0x53d5eb){var _0x4b253d={};_0x4b253d[_0x53d5eb]={'$like':'%'+_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x47')]+'%'};return _0x4b253d;})});}if(_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x48')]){var _0x6b4877=_0x2005a5[_0x2c4c('0x2f')][_0x2c4c('0x48')]['split'](',');var _0x5e8b3c={};_0x5e8b3c[_0x6b4877[0x0]]={'$gte':moment(_0x6b4877[0x1])['format'](_0x2c4c('0x49'))};_0x3e31f8[_0x2c4c('0x45')]=_[_0x2c4c('0x35')](_0x3e31f8[_0x2c4c('0x45')],_0x5e8b3c);}_0x3e31f8=_[_0x2c4c('0x35')]({},_0x3e31f8,_0x2005a5[_0x2c4c('0x36')]);return db[_0x2c4c('0x3d')][_0x2c4c('0x16')]({'where':_0x3e31f8['where']})[_0x2c4c('0x1b')](function(_0x4e2802){_0x1777ec[_0x2c4c('0x16')]=_0x4e2802;if(_0x2005a5[_0x2c4c('0x2f')]['includeAll']){_0x3e31f8['include']=[{'all':!![]}];}return db[_0x2c4c('0x3d')][_0x2c4c('0x27')](_0x3e31f8);})[_0x2c4c('0x1b')](function(_0x7b68be){_0x1777ec[_0x2c4c('0x4a')]=_0x7b68be;return _0x1777ec;});}})[_0x2c4c('0x1b')](respondWithFilteredResult(_0x2726cd,_0x3e31f8))[_0x2c4c('0x2a')](handleError(_0x2726cd,null));};exports['addTags']=function(_0x396abe,_0x500d1f){return db[_0x2c4c('0x22')]['find']({'where':{'id':_0x396abe['params']['id']}})['then'](handleEntityNotFound(_0x500d1f,null))[_0x2c4c('0x1b')](function(_0x14ece0){if(_0x14ece0){return _0x14ece0[_0x2c4c('0x4b')](_0x396abe[_0x2c4c('0x39')][_0x2c4c('0x3e')],_[_0x2c4c('0x3f')](_0x396abe[_0x2c4c('0x39')],[_0x2c4c('0x3e'),'id'])||{})[_0x2c4c('0x4c')](function(){return db[_0x2c4c('0x4d')][_0x2c4c('0x27')]({'attributes':['id','name',_0x2c4c('0x4e')],'where':{'id':_0x396abe['body'][_0x2c4c('0x3e')]}});})[_0x2c4c('0x1b')](function(_0x5416c1){socket[_0x2c4c('0x4f')](_0x2c4c('0x50'),{'id':Number(_0x396abe[_0x2c4c('0x3a')]['id']),'tags':_0x5416c1||[]});return{'id':Number(_0x396abe[_0x2c4c('0x3a')]['id']),'tags':_0x5416c1||[]};});}})['then'](respondWithResult(_0x500d1f,null))[_0x2c4c('0x2a')](handleError(_0x500d1f,null));};exports['removeTags']=function(_0x26c326,_0x38c165){return db[_0x2c4c('0x22')][_0x2c4c('0x37')]({'where':{'id':_0x26c326['params']['id']}})[_0x2c4c('0x1b')](handleEntityNotFound(_0x38c165,null))[_0x2c4c('0x1b')](function(_0xbf40a5){if(_0xbf40a5){return _0xbf40a5[_0x2c4c('0x51')](_0x26c326[_0x2c4c('0x2f')]['ids']);}})[_0x2c4c('0x1b')](respondWithStatusCode(_0x38c165,null))['catch'](handleError(_0x38c165,null));};exports['download']=function(_0x48bd79,_0x503ca0){var _0x2e9dc8=moment()[_0x2c4c('0x52')]()['toString']();var _0x1a51c3=path[_0x2c4c('0x53')](config['root'],_0x2c4c('0x54'),_0x2c4c('0x55'),_0x2c4c('0x56'));var _0x6ee4b6=path['join'](config[_0x2c4c('0x57')],_0x2c4c('0x54'),_0x2c4c('0x55'),_0x2c4c('0x58'));var _0x26fd2c=path[_0x2c4c('0x53')](_0x1a51c3,_0x2e9dc8);var _0x427fb7=util['format'](_0x2c4c('0x59'),_0x48bd79['params']['id'],_0x2e9dc8);var _0x4e4b3f=path[_0x2c4c('0x53')](_0x1a51c3,_0x427fb7);var _0x146884=[];_0x146884[_0x2c4c('0x5a')]({'model':db['Attachment'],'as':_0x2c4c('0x5b'),'raw':!![]});var _0x3d97a5=[{'model':db['FaxMessage'],'as':'Messages','attributes':['id',_0x2c4c('0x39'),'createdAt'],'include':_0x146884}];return db[_0x2c4c('0x22')][_0x2c4c('0x37')]({'where':{'id':_0x48bd79[_0x2c4c('0x3a')]['id']},'include':_0x3d97a5})[_0x2c4c('0x1b')](handleEntityNotFound(_0x503ca0,null))[_0x2c4c('0x1b')](function(_0xc36528){if(_0xc36528&&_0xc36528[_0x2c4c('0x5c')]){var _0x4e00d0=_0xc36528['get']({'plain':!![]});fs['mkdirSync'](_0x26fd2c);for(var _0x1c5779=0x0;_0x1c5779<_0x4e00d0[_0x2c4c('0x5c')][_0x2c4c('0x32')];_0x1c5779++){var _0x5cc0d3=_0x4e00d0['Messages'][_0x1c5779]['Attachment'];if(_0x5cc0d3){var _0x4852d1=path[_0x2c4c('0x53')](_0x6ee4b6,_0x5cc0d3[_0x2c4c('0x5d')]);if(fs[_0x2c4c('0x5e')](_0x4852d1)){fs[_0x2c4c('0x5f')](_0x4852d1)[_0x2c4c('0x60')](fs['createWriteStream'](path[_0x2c4c('0x53')](_0x26fd2c,_0x5cc0d3['basename'])));}}}return BPromise['resolve']()[_0x2c4c('0x1b')](function(){return new BPromise(function(_0x308033,_0x3032dd){zipdir(_0x26fd2c,{'saveTo':_0x4e4b3f},function(_0xdcaee6,_0x1acfd8){if(_0xdcaee6)return _0x3032dd(_0xdcaee6);return _0x308033(_0x1acfd8);});})['then'](function(){return new BPromise(function(_0x51b454,_0x1865c8){rimraf(_0x26fd2c,function(_0x3a2d38){if(_0x3a2d38)_0x1865c8(_0x3a2d38);return _0x51b454();});});})[_0x2c4c('0x1b')](function(){return _0x503ca0[_0x2c4c('0x61')](_0x4e4b3f,_0x427fb7,function(_0x2efbc9){if(_0x2efbc9){console[_0x2c4c('0x62')]('err',_0x2efbc9);}else{fs[_0x2c4c('0x63')](_0x4e4b3f);}});});});}else{return _0x503ca0[_0x2c4c('0x11')](0xc8);}})['catch'](handleError(_0x503ca0,null));};
\ No newline at end of file
+var _0x3410=['type','key','findAll','fax','query','catch','show','params','filters','attributes','intersection','model','fields','includeAll','include','merge','options','find','create','update','body','describe','addMessage','ids','omit','findOne','rawAttributes','keys','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','addTags','setTags','spread','color','faxInteractionTags:save','removeTags','download','root','server','files','tmp','join','attachments','format','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','mkdirSync','createReadStream','pipe','basename','resolve','log','err','rimraf','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','redis','socket.io-emitter','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','then','destroy','error','stack','name','send','index','FaxInteraction','fieldName'];(function(_0x1641c7,_0x1caa7d){var _0x331d91=function(_0x5308ad){while(--_0x5308ad){_0x1641c7['push'](_0x1641c7['shift']());}};_0x331d91(++_0x1caa7d);}(_0x3410,0x1d0));var _0x0341=function(_0x5968c3,_0x44c58a){_0x5968c3=_0x5968c3-0x0;var _0x584345=_0x3410[_0x5968c3];return _0x584345;};'use strict';var rimraf=require(_0x0341('0x0'));var zipdir=require(_0x0341('0x1'));var moment=require(_0x0341('0x2'));var BPromise=require(_0x0341('0x3'));var util=require(_0x0341('0x4'));var path=require(_0x0341('0x5'));var fs=require('fs');var _=require(_0x0341('0x6'));var Redis=require(_0x0341('0x7'));var interaction=require('../../components/interaction/service');var qs=require(_0x0341('0x8'));var logger=require(_0x0341('0x9'))('api');var config=require(_0x0341('0xa'));var db=require('../../mysqldb')['db'];config[_0x0341('0xb')]=_['defaults'](config[_0x0341('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0341('0xc'))(new Redis(config[_0x0341('0xb')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x45aef2,_0x155304){_0x155304=_0x155304||0xcc;return function(_0x18bab9){if(_0x18bab9){return _0x45aef2[_0x0341('0xd')](_0x155304);}return _0x45aef2[_0x0341('0xe')](_0x155304)[_0x0341('0xf')]();};}function respondWithResult(_0x1bec8b,_0x559b39){_0x559b39=_0x559b39||0xc8;return function(_0x2fc40e){if(_0x2fc40e){return _0x1bec8b[_0x0341('0xe')](_0x559b39)['json'](_0x2fc40e);}};}function respondWithFilteredResult(_0x4dec30,_0x543af1){return function(_0x4116de){if(_0x4116de){var _0x69d943=typeof _0x543af1[_0x0341('0x10')]==='undefined'&&typeof _0x543af1[_0x0341('0x11')]===_0x0341('0x12');var _0x341edc=_0x4116de['count'];var _0x33fc00=_0x69d943?0x0:_0x543af1[_0x0341('0x10')];var _0x146761=_0x69d943?_0x4116de[_0x0341('0x13')]:_0x543af1['offset']+_0x543af1[_0x0341('0x11')];var _0x3926fb;if(_0x146761>=_0x341edc){_0x146761=_0x341edc;_0x3926fb=0xc8;}else{_0x3926fb=0xce;}_0x4dec30['status'](_0x3926fb);return _0x4dec30[_0x0341('0x14')](_0x0341('0x15'),_0x33fc00+'-'+_0x146761+'/'+_0x341edc)['json'](_0x4116de);}return null;};}function saveUpdates(_0x1f41a0){return function(_0x1f8385){if(_0x1f8385){return _0x1f8385['update'](_0x1f41a0)[_0x0341('0x16')](function(_0x41b718){return _0x41b718;});}return null;};}function removeEntity(_0x22ec3a){return function(_0x36bab1){if(_0x36bab1){return _0x36bab1[_0x0341('0x17')]()[_0x0341('0x16')](function(){_0x22ec3a[_0x0341('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dbda3){return function(_0x2cf4bd){if(!_0x2cf4bd){_0x5dbda3['sendStatus'](0x194);}return _0x2cf4bd;};}function handleError(_0x134cab,_0x4cdee6){_0x4cdee6=_0x4cdee6||0x1f4;return function(_0xd40284){logger[_0x0341('0x18')](_0xd40284[_0x0341('0x19')]);if(_0xd40284['name']){delete _0xd40284[_0x0341('0x1a')];}_0x134cab['status'](_0x4cdee6)[_0x0341('0x1b')](_0xd40284);};}exports[_0x0341('0x1c')]=function(_0x4a195e,_0x1d5329){var _0x3fda67={};var _0x511ce5=_['map'](db[_0x0341('0x1d')]['rawAttributes'],function(_0x2a800f){return{'name':_0x2a800f[_0x0341('0x1e')],'type':_0x2a800f[_0x0341('0x1f')][_0x0341('0x20')]};});_0x3fda67=qs['getOptions'](_0x511ce5,_0x4a195e);return interaction[_0x0341('0x21')](_0x0341('0x22'),_0x4a195e[_0x0341('0x23')],_0x4a195e['user'],_0x3fda67,_0x511ce5)[_0x0341('0x16')](respondWithFilteredResult(_0x1d5329,_0x3fda67))[_0x0341('0x24')](handleError(_0x1d5329,null));};exports[_0x0341('0x25')]=function(_0x4c8ac6,_0x5d5596){var _0x5df31d={'raw':![],'where':{'id':_0x4c8ac6[_0x0341('0x26')]['id']}},_0x3c225b={};_0x3c225b['model']=_['keys'](db[_0x0341('0x1d')]['rawAttributes']);_0x3c225b['query']=_['keys'](_0x4c8ac6['query']);_0x3c225b[_0x0341('0x27')]=_['intersection'](_0x3c225b['model'],_0x3c225b['query']);_0x5df31d[_0x0341('0x28')]=_[_0x0341('0x29')](_0x3c225b[_0x0341('0x2a')],qs[_0x0341('0x2b')](_0x4c8ac6[_0x0341('0x23')]['fields']));_0x5df31d[_0x0341('0x28')]=_0x5df31d[_0x0341('0x28')]['length']?_0x5df31d[_0x0341('0x28')]:_0x3c225b['model'];if(_0x4c8ac6[_0x0341('0x23')][_0x0341('0x2c')]){_0x5df31d[_0x0341('0x2d')]=[{'all':!![]}];}_0x5df31d=_[_0x0341('0x2e')]({},_0x5df31d,_0x4c8ac6[_0x0341('0x2f')]);return db[_0x0341('0x1d')][_0x0341('0x30')](_0x5df31d)[_0x0341('0x16')](handleEntityNotFound(_0x5d5596,null))[_0x0341('0x16')](respondWithResult(_0x5d5596,null))[_0x0341('0x24')](handleError(_0x5d5596,null));};exports[_0x0341('0x31')]=function(_0x4d207d,_0x579633){return db[_0x0341('0x1d')]['create'](_0x4d207d['body'],{})[_0x0341('0x16')](respondWithResult(_0x579633,0xc9))['catch'](handleError(_0x579633,null));};exports[_0x0341('0x32')]=function(_0x50c2ec,_0x32f544){if(_0x50c2ec['body']['id']){delete _0x50c2ec[_0x0341('0x33')]['id'];}return db['FaxInteraction']['find']({'where':{'id':_0x50c2ec[_0x0341('0x26')]['id']}})[_0x0341('0x16')](handleEntityNotFound(_0x32f544,null))[_0x0341('0x16')](saveUpdates(_0x50c2ec[_0x0341('0x33')],null))[_0x0341('0x16')](respondWithResult(_0x32f544,null))[_0x0341('0x24')](handleError(_0x32f544,null));};exports['destroy']=function(_0xaf69bf,_0x2dced0){return db[_0x0341('0x1d')]['find']({'where':{'id':_0xaf69bf[_0x0341('0x26')]['id']}})[_0x0341('0x16')](handleEntityNotFound(_0x2dced0,null))[_0x0341('0x16')](removeEntity(_0x2dced0,null))[_0x0341('0x24')](handleError(_0x2dced0,null));};exports['describe']=function(_0x5c37f8,_0x368bd1){return db[_0x0341('0x1d')][_0x0341('0x34')]()[_0x0341('0x16')](respondWithResult(_0x368bd1,null))[_0x0341('0x24')](handleError(_0x368bd1,null));};exports['addMessage']=function(_0x36c706,_0x592f04){return db['FaxMessage'][_0x0341('0x30')]({'where':{'id':_0x36c706['params']['id']}})[_0x0341('0x16')](handleEntityNotFound(_0x592f04,null))[_0x0341('0x16')](function(_0x41de76){if(_0x41de76){return _0x41de76[_0x0341('0x35')](_0x36c706['body'][_0x0341('0x36')],_[_0x0341('0x37')](_0x36c706[_0x0341('0x33')],[_0x0341('0x36'),'id'])||{});}})['then'](respondWithResult(_0x592f04,null))[_0x0341('0x24')](handleError(_0x592f04,null));};exports['getMessages']=function(_0x6cc9ca,_0x37b505){var _0x45e821={'raw':![],'where':{}};var _0x2af4f6={};var _0xebb82a={'count':0x0,'rows':[]};return db[_0x0341('0x1d')][_0x0341('0x38')]({'where':{'id':_0x6cc9ca[_0x0341('0x26')]['id']}})['then'](handleEntityNotFound(_0x37b505,null))[_0x0341('0x16')](function(_0x5c9a72){if(_0x5c9a72){_0x2af4f6[_0x0341('0x2a')]=_['keys'](db['FaxMessage'][_0x0341('0x39')]);_0x2af4f6[_0x0341('0x23')]=_[_0x0341('0x3a')](_0x6cc9ca[_0x0341('0x23')]);_0x2af4f6['filters']=_[_0x0341('0x29')](_0x2af4f6['model'],_0x2af4f6[_0x0341('0x23')]);_0x45e821['attributes']=_[_0x0341('0x29')](_0x2af4f6[_0x0341('0x2a')],qs[_0x0341('0x2b')](_0x6cc9ca['query'][_0x0341('0x2b')]));_0x45e821[_0x0341('0x28')]=_0x45e821[_0x0341('0x28')][_0x0341('0x3b')]?_0x45e821[_0x0341('0x28')]:_0x2af4f6[_0x0341('0x2a')];if(!_0x6cc9ca[_0x0341('0x23')][_0x0341('0x3c')](_0x0341('0x3d'))){_0x45e821[_0x0341('0x11')]=qs[_0x0341('0x11')](_0x6cc9ca[_0x0341('0x23')][_0x0341('0x11')]);_0x45e821[_0x0341('0x10')]=qs[_0x0341('0x10')](_0x6cc9ca['query'][_0x0341('0x10')]);}_0x45e821[_0x0341('0x3e')]=qs[_0x0341('0x3f')](_0x6cc9ca['query'][_0x0341('0x3f')]);_0x45e821[_0x0341('0x40')]=qs[_0x0341('0x27')](_[_0x0341('0x41')](_0x6cc9ca[_0x0341('0x23')],_0x2af4f6[_0x0341('0x27')]));_0x45e821[_0x0341('0x40')]['FaxInteractionId']=_0x5c9a72['id'];if(_0x6cc9ca[_0x0341('0x23')][_0x0341('0x42')]){_0x45e821[_0x0341('0x40')]=_[_0x0341('0x2e')](_0x45e821[_0x0341('0x40')],{'$or':_[_0x0341('0x43')](_0x45e821['attributes'],function(_0x38a14e){var _0x529a23={};_0x529a23[_0x38a14e]={'$like':'%'+_0x6cc9ca['query'][_0x0341('0x42')]+'%'};return _0x529a23;})});}if(_0x6cc9ca[_0x0341('0x23')][_0x0341('0x44')]){var _0x3cee45=_0x6cc9ca[_0x0341('0x23')][_0x0341('0x44')][_0x0341('0x45')](',');var _0x3f5e1b={};_0x3f5e1b[_0x3cee45[0x0]]={'$gte':moment(_0x3cee45[0x1])['format'](_0x0341('0x46'))};_0x45e821['where']=_[_0x0341('0x2e')](_0x45e821[_0x0341('0x40')],_0x3f5e1b);}_0x45e821=_[_0x0341('0x2e')]({},_0x45e821,_0x6cc9ca[_0x0341('0x2f')]);return db[_0x0341('0x47')][_0x0341('0x13')]({'where':_0x45e821[_0x0341('0x40')]})[_0x0341('0x16')](function(_0x4af387){_0xebb82a['count']=_0x4af387;if(_0x6cc9ca[_0x0341('0x23')][_0x0341('0x2c')]){_0x45e821['include']=[{'all':!![]}];}return db[_0x0341('0x47')][_0x0341('0x21')](_0x45e821);})['then'](function(_0x2dfc16){_0xebb82a['rows']=_0x2dfc16;return _0xebb82a;});}})[_0x0341('0x16')](respondWithFilteredResult(_0x37b505,_0x45e821))[_0x0341('0x24')](handleError(_0x37b505,null));};exports[_0x0341('0x48')]=function(_0xd3363f,_0x2a4ca3){return db[_0x0341('0x1d')]['find']({'where':{'id':_0xd3363f['params']['id']}})[_0x0341('0x16')](handleEntityNotFound(_0x2a4ca3,null))[_0x0341('0x16')](function(_0x4152dd){if(_0x4152dd){return _0x4152dd[_0x0341('0x49')](_0xd3363f[_0x0341('0x33')][_0x0341('0x36')],_[_0x0341('0x37')](_0xd3363f[_0x0341('0x33')],[_0x0341('0x36'),'id'])||{})[_0x0341('0x4a')](function(){return db['Tag'][_0x0341('0x21')]({'attributes':['id',_0x0341('0x1a'),_0x0341('0x4b')],'where':{'id':_0xd3363f[_0x0341('0x33')][_0x0341('0x36')]}});})[_0x0341('0x16')](function(_0x13cd5d){socket['emit'](_0x0341('0x4c'),{'id':Number(_0xd3363f[_0x0341('0x26')]['id']),'tags':_0x13cd5d||[]});return{'id':Number(_0xd3363f[_0x0341('0x26')]['id']),'tags':_0x13cd5d||[]};});}})[_0x0341('0x16')](respondWithResult(_0x2a4ca3,null))[_0x0341('0x24')](handleError(_0x2a4ca3,null));};exports[_0x0341('0x4d')]=function(_0x13a369,_0x45d49b){return db['FaxInteraction']['find']({'where':{'id':_0x13a369[_0x0341('0x26')]['id']}})[_0x0341('0x16')](handleEntityNotFound(_0x45d49b,null))[_0x0341('0x16')](function(_0x321ae2){if(_0x321ae2){return _0x321ae2[_0x0341('0x4d')](_0x13a369[_0x0341('0x23')]['ids']);}})[_0x0341('0x16')](respondWithStatusCode(_0x45d49b,null))['catch'](handleError(_0x45d49b,null));};exports[_0x0341('0x4e')]=function(_0x54cd6a,_0x25245b){var _0x368bb7=moment()['unix']()['toString']();var _0x33982f=path['join'](config[_0x0341('0x4f')],_0x0341('0x50'),_0x0341('0x51'),_0x0341('0x52'));var _0x3e1307=path[_0x0341('0x53')](config[_0x0341('0x4f')],_0x0341('0x50'),_0x0341('0x51'),_0x0341('0x54'));var _0x4a8079=path[_0x0341('0x53')](_0x33982f,_0x368bb7);var _0x2bd09b=util[_0x0341('0x55')](_0x0341('0x56'),_0x54cd6a[_0x0341('0x26')]['id'],_0x368bb7);var _0x38f658=path['join'](_0x33982f,_0x2bd09b);var _0x4d19de=[];_0x4d19de[_0x0341('0x57')]({'model':db[_0x0341('0x58')],'as':'Attachment','raw':!![]});var _0x232139=[{'model':db[_0x0341('0x47')],'as':_0x0341('0x59'),'attributes':['id',_0x0341('0x33'),_0x0341('0x5a')],'include':_0x4d19de}];return db['FaxInteraction'][_0x0341('0x30')]({'where':{'id':_0x54cd6a['params']['id']},'include':_0x232139})[_0x0341('0x16')](handleEntityNotFound(_0x25245b,null))[_0x0341('0x16')](function(_0x3c6cbe){if(_0x3c6cbe&&_0x3c6cbe[_0x0341('0x59')]){var _0x36ca01=_0x3c6cbe[_0x0341('0x5b')]({'plain':!![]});fs[_0x0341('0x5c')](_0x4a8079);for(var _0xdac6ac=0x0;_0xdac6ac<_0x36ca01[_0x0341('0x59')][_0x0341('0x3b')];_0xdac6ac++){var _0x47aacd=_0x36ca01[_0x0341('0x59')][_0xdac6ac][_0x0341('0x58')];if(_0x47aacd){var _0xe9c480=path[_0x0341('0x53')](_0x3e1307,_0x47aacd['basename']);if(fs['existsSync'](_0xe9c480)){fs[_0x0341('0x5d')](_0xe9c480)[_0x0341('0x5e')](fs['createWriteStream'](path[_0x0341('0x53')](_0x4a8079,_0x47aacd[_0x0341('0x5f')])));}}}return BPromise[_0x0341('0x60')]()['then'](function(){return new BPromise(function(_0x1ccfc8,_0x4d940d){zipdir(_0x4a8079,{'saveTo':_0x38f658},function(_0x5d0589,_0x5d87d0){if(_0x5d0589)return _0x4d940d(_0x5d0589);return _0x1ccfc8(_0x5d87d0);});})[_0x0341('0x16')](function(){return new BPromise(function(_0x415251,_0x3b877a){rimraf(_0x4a8079,function(_0x10526f){if(_0x10526f)_0x3b877a(_0x10526f);return _0x415251();});});})[_0x0341('0x16')](function(){return _0x25245b[_0x0341('0x4e')](_0x38f658,_0x2bd09b,function(_0x5c7c68){if(_0x5c7c68){console[_0x0341('0x61')](_0x0341('0x62'),_0x5c7c68);}else{fs['unlinkSync'](_0x38f658);}});});});}else{return _0x25245b[_0x0341('0xd')](0xc8);}})[_0x0341('0x24')](handleError(_0x25245b,null));};
\ No newline at end of file
index 3e4aa94..8d37581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x376c=['length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','getUsers','then','setDataValue','Users','map','findAll','unreadMessages'];(function(_0x19bf3a,_0x3af060){var _0x3b4119=function(_0x44a6b4){while(--_0x44a6b4){_0x19bf3a['push'](_0x19bf3a['shift']());}};_0x3b4119(++_0x3af060);}(_0x376c,0x1ec));var _0xc376=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x376c[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0xc376('0x0'))['db'][_0xc376('0x1')];var FaxMessage=require(_0xc376('0x0'))['db'][_0xc376('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xc376('0x3')](0x0);var events={'afterCreate':_0xc376('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5813ae){return function(_0x30dcf9,_0x159321,_0x4986e9){_0x30dcf9[_0xc376('0x5')]({'attributes':['id'],'raw':!![]})[_0xc376('0x6')](function(_0x582df0){_0x30dcf9[_0xc376('0x7')](_0xc376('0x8'),_0x582df0[_0xc376('0x9')](function(_0x55bcc9){return{'id':_0x55bcc9['id']};}));return FaxMessage[_0xc376('0xa')]({'where':{'FaxInteractionId':_0x30dcf9['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5b0a35){_0x30dcf9[_0xc376('0x7')](_0xc376('0xb'),_0x5b0a35[_0xc376('0xc')]);FaxInteractionEvents[_0xc376('0xd')](_0x5813ae+':'+_0x30dcf9['id'],_0x30dcf9);FaxInteractionEvents[_0xc376('0xd')](_0x5813ae,_0x30dcf9);_0x4986e9(null);})[_0xc376('0xe')](_0x4986e9(null));};}for(var e in events){if(events[_0xc376('0xf')](e)){var event=events[e];FaxInteraction[_0xc376('0x10')](e,emitEvent(event));}}module[_0xc376('0x11')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x4de7=['remove','getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update'];(function(_0x32e044,_0x100961){var _0xecad41=function(_0x28d85b){while(--_0x28d85b){_0x32e044['push'](_0x32e044['shift']());}};_0xecad41(++_0x100961);}(_0x4de7,0x14d));var _0x74de=function(_0x53c303,_0x3144c6){_0x53c303=_0x53c303-0x0;var _0x3e0b97=_0x4de7[_0x53c303];return _0x3e0b97;};'use strict';var EventEmitter=require(_0x74de('0x0'));var FaxInteraction=require(_0x74de('0x1'))['db'][_0x74de('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x74de('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x74de('0x4')](0x0);var events={'afterCreate':_0x74de('0x5'),'afterUpdate':_0x74de('0x6'),'afterDestroy':_0x74de('0x7')};function emitEvent(_0x285960){return function(_0x1c81bc,_0x33e129,_0x1ecd4f){_0x1c81bc[_0x74de('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x55d956){_0x1c81bc[_0x74de('0x9')](_0x74de('0xa'),_0x55d956[_0x74de('0xb')](function(_0x3886e9){return{'id':_0x3886e9['id']};}));return FaxMessage[_0x74de('0xc')]({'where':{'FaxInteractionId':_0x1c81bc['id'],'direction':'in','read':![]},'raw':!![]});})[_0x74de('0xd')](function(_0x36f89a){_0x1c81bc['setDataValue'](_0x74de('0xe'),_0x36f89a[_0x74de('0xf')]);FaxInteractionEvents[_0x74de('0x10')](_0x285960+':'+_0x1c81bc['id'],_0x1c81bc);FaxInteractionEvents[_0x74de('0x10')](_0x285960,_0x1c81bc);_0x1ecd4f(null);})['catch'](_0x1ecd4f(null));};}for(var e in events){if(events[_0x74de('0x11')](e)){var event=events[e];FaxInteraction[_0x74de('0x12')](e,emitEvent(event));}}module[_0x74de('0x13')]=FaxInteractionEvents;
\ No newline at end of file
index 61d52b4..f63e1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe740=['../../config/environment','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','bluebird','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe740,0x14b));var _0x0e74=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0xe740[_0x5d4607];return _0x5e4a86;};'use strict';var _=require(_0x0e74('0x0'));var util=require('util');var logger=require(_0x0e74('0x1'))(_0x0e74('0x2'));var moment=require('moment');var BPromise=require(_0x0e74('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0e74('0x4'));var rimraf=require('rimraf');var config=require(_0x0e74('0x5'));var attributes=require(_0x0e74('0x6'));module['exports']=function(_0xfad7d6,_0x490af7){return _0xfad7d6[_0x0e74('0x7')](_0x0e74('0x8'),attributes,{'tableName':_0x0e74('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1a9dc5,_0x5e0269,_0x237699){if(_0x1a9dc5[_0x0e74('0xa')](_0x0e74('0xb'))){_0x1a9dc5[_0x0e74('0xc')]=moment()['format'](_0x0e74('0xd'));}_0x237699(null,_0x1a9dc5);}}});};
\ No newline at end of file
+var _0xe432=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','FaxInteraction','fax_interactions','changed','closed','closedAt','format'];(function(_0x2c7141,_0x3e3497){var _0x107cf2=function(_0x3a9e3d){while(--_0x3a9e3d){_0x2c7141['push'](_0x2c7141['shift']());}};_0x107cf2(++_0x3e3497);}(_0xe432,0x91));var _0x2e43=function(_0x382d47,_0x46843e){_0x382d47=_0x382d47-0x0;var _0x3fa02c=_0xe432[_0x382d47];return _0x3fa02c;};'use strict';var _=require(_0x2e43('0x0'));var util=require(_0x2e43('0x1'));var logger=require(_0x2e43('0x2'))(_0x2e43('0x3'));var moment=require(_0x2e43('0x4'));var BPromise=require(_0x2e43('0x5'));var rp=require(_0x2e43('0x6'));var fs=require('fs');var path=require(_0x2e43('0x7'));var rimraf=require(_0x2e43('0x8'));var config=require('../../config/environment');var attributes=require('./faxInteraction.attributes');module[_0x2e43('0x9')]=function(_0x437d69,_0x3e5b17){return _0x437d69[_0x2e43('0xa')](_0x2e43('0xb'),attributes,{'tableName':_0x2e43('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x49757c,_0xd24e6a,_0x336cdd){if(_0x49757c[_0x2e43('0xd')](_0x2e43('0xe'))){_0x49757c[_0x2e43('0xf')]=moment()[_0x2e43('0x10')](_0x2e43('0x11'));}_0x336cdd(null,_0x49757c);}}});};
\ No newline at end of file
index 7309eec..b31a43c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf903=['request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxInteraction,\x20%s,\x20%s','UpdateFaxInteraction','FaxInteraction','update','body','options','where','limit','catch','AddTagsToFaxInteraction','find','addTags','ids','spread','AddTags','lodash','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./faxInteraction.socket','register','request','then','info'];(function(_0x152c28,_0x237459){var _0x561acd=function(_0x194eed){while(--_0x194eed){_0x152c28['push'](_0x152c28['shift']());}};_0x561acd(++_0x237459);}(_0xf903,0x14e));var _0x3f90=function(_0x424059,_0x37d570){_0x424059=_0x424059-0x0;var _0x529c6e=_0xf903[_0x424059];return _0x529c6e;};'use strict';var _=require(_0x3f90('0x0'));var util=require('util');var moment=require(_0x3f90('0x1'));var BPromise=require('bluebird');var rs=require(_0x3f90('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3f90('0x3'));var logger=require(_0x3f90('0x4'))(_0x3f90('0x5'));var config=require(_0x3f90('0x6'));var jayson=require(_0x3f90('0x7'));var client=jayson[_0x3f90('0x8')]['http']({'port':0x232a});config[_0x3f90('0x9')]=_[_0x3f90('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3f90('0xb'))(new Redis(config[_0x3f90('0x9')]));require(_0x3f90('0xc'))[_0x3f90('0xd')](socket);function respondWithRpcPromise(_0x14bc16,_0x29883f,_0x59afbf){return new BPromise(function(_0x34d79a,_0x1e3c9c){return client[_0x3f90('0xe')](_0x14bc16,_0x59afbf)[_0x3f90('0xf')](function(_0x382fd0){logger[_0x3f90('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x29883f,_0x3f90('0x11'));logger[_0x3f90('0x12')](_0x3f90('0x13'),_0x29883f,'request\x20sent',JSON[_0x3f90('0x14')](_0x382fd0));if(_0x382fd0[_0x3f90('0x15')]){if(_0x382fd0[_0x3f90('0x15')][_0x3f90('0x16')]===0x1f4){logger[_0x3f90('0x15')]('FaxInteraction,\x20%s,\x20%s',_0x29883f,_0x382fd0[_0x3f90('0x15')][_0x3f90('0x17')]);return _0x1e3c9c(_0x382fd0['error'][_0x3f90('0x17')]);}logger[_0x3f90('0x15')](_0x3f90('0x18'),_0x29883f,_0x382fd0[_0x3f90('0x15')][_0x3f90('0x17')]);return _0x34d79a(_0x382fd0[_0x3f90('0x15')]['message']);}else{logger[_0x3f90('0x10')](_0x3f90('0x18'),_0x29883f,'request\x20sent');_0x34d79a(_0x382fd0['result'][_0x3f90('0x17')]);}})['catch'](function(_0x24f53f){logger[_0x3f90('0x15')](_0x3f90('0x18'),_0x29883f,_0x24f53f);_0x1e3c9c(_0x24f53f);});});}exports[_0x3f90('0x19')]=function(_0x34086e){var _0x3de525=this;return new Promise(function(_0x352d25,_0x287c3f){return db[_0x3f90('0x1a')][_0x3f90('0x1b')](_0x34086e[_0x3f90('0x1c')],{'raw':_0x34086e['options']?_0x34086e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34086e[_0x3f90('0x1d')]?_0x34086e[_0x3f90('0x1d')][_0x3f90('0x1e')]||null:null,'attributes':_0x34086e[_0x3f90('0x1d')]?_0x34086e[_0x3f90('0x1d')]['attributes']||null:null,'limit':_0x34086e[_0x3f90('0x1d')]?_0x34086e[_0x3f90('0x1d')][_0x3f90('0x1f')]||null:null})[_0x3f90('0xf')](function(_0x4df692){logger[_0x3f90('0x10')](_0x3f90('0x19'),_0x34086e);logger[_0x3f90('0x12')]('UpdateFaxInteraction',_0x34086e,JSON['stringify'](_0x4df692));_0x352d25(_0x4df692);})[_0x3f90('0x20')](function(_0x301653){logger[_0x3f90('0x15')]('UpdateFaxInteraction',_0x301653['message'],_0x34086e);_0x287c3f(_0x3de525[_0x3f90('0x15')](0x1f4,_0x301653[_0x3f90('0x17')]));});});};exports[_0x3f90('0x21')]=function(_0x351222){return new Promise(function(_0x49125e,_0x335eae){return db[_0x3f90('0x1a')][_0x3f90('0x22')]({'where':_0x351222[_0x3f90('0x1d')]?_0x351222[_0x3f90('0x1d')][_0x3f90('0x1e')]||null:null})[_0x3f90('0xf')](function(_0x2aacfd){if(_0x2aacfd){return _0x2aacfd[_0x3f90('0x23')](_0x351222[_0x3f90('0x1c')][_0x3f90('0x24')],_['omit'](_0x351222[_0x3f90('0x1c')],[_0x3f90('0x24'),'id'])||{});}})[_0x3f90('0x25')](function(_0x128a0d){logger[_0x3f90('0x10')](_0x3f90('0x26'),_0x351222);logger[_0x3f90('0x12')]('AddTags',_0x351222,JSON[_0x3f90('0x14')](_0x128a0d));_0x49125e(_0x128a0d);})[_0x3f90('0x20')](function(_0x3fd15f){logger[_0x3f90('0x15')](_0x3f90('0x26'),_0x3fd15f[_0x3f90('0x17')],_0x351222);_0x335eae(_this['error'](0x1f4,_0x3fd15f[_0x3f90('0x17')]));});});};
\ No newline at end of file
+var _0xc9e6=['stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','AddTagsToFaxInteraction','where','ids','omit','spread','AddTags','lodash','util','moment','ioredis','../../config/logger','rpc','http','defaults','redis','localhost','socket.io-emitter','./faxInteraction.socket','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x50e2a8,_0x20e6b0){var _0x144c76=function(_0x558eab){while(--_0x558eab){_0x50e2a8['push'](_0x50e2a8['shift']());}};_0x144c76(++_0x20e6b0);}(_0xc9e6,0x7e));var _0x6c9e=function(_0x513a90,_0x2f7107){_0x513a90=_0x513a90-0x0;var _0x2cf336=_0xc9e6[_0x513a90];return _0x2cf336;};'use strict';var _=require(_0x6c9e('0x0'));var util=require(_0x6c9e('0x1'));var moment=require(_0x6c9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6c9e('0x4'))(_0x6c9e('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6c9e('0x6')]({'port':0x232a});config['redis']=_[_0x6c9e('0x7')](config[_0x6c9e('0x8')],{'host':_0x6c9e('0x9'),'port':0x18eb});var socket=require(_0x6c9e('0xa'))(new Redis(config['redis']));require(_0x6c9e('0xb'))['register'](socket);function respondWithRpcPromise(_0x2fa855,_0x14a78e,_0x16de4c){return new BPromise(function(_0x1e70dd,_0x5eb419){return client[_0x6c9e('0xc')](_0x2fa855,_0x16de4c)[_0x6c9e('0xd')](function(_0x5b8349){logger[_0x6c9e('0xe')](_0x6c9e('0xf'),_0x14a78e,_0x6c9e('0x10'));logger[_0x6c9e('0x11')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x14a78e,_0x6c9e('0x10'),JSON[_0x6c9e('0x12')](_0x5b8349));if(_0x5b8349['error']){if(_0x5b8349[_0x6c9e('0x13')][_0x6c9e('0x14')]===0x1f4){logger[_0x6c9e('0x13')](_0x6c9e('0xf'),_0x14a78e,_0x5b8349[_0x6c9e('0x13')]['message']);return _0x5eb419(_0x5b8349[_0x6c9e('0x13')][_0x6c9e('0x15')]);}logger[_0x6c9e('0x13')](_0x6c9e('0xf'),_0x14a78e,_0x5b8349[_0x6c9e('0x13')][_0x6c9e('0x15')]);return _0x1e70dd(_0x5b8349[_0x6c9e('0x13')][_0x6c9e('0x15')]);}else{logger['info'](_0x6c9e('0xf'),_0x14a78e,_0x6c9e('0x10'));_0x1e70dd(_0x5b8349[_0x6c9e('0x16')][_0x6c9e('0x15')]);}})[_0x6c9e('0x17')](function(_0x59c0ad){logger['error'](_0x6c9e('0xf'),_0x14a78e,_0x59c0ad);_0x5eb419(_0x59c0ad);});});}exports[_0x6c9e('0x18')]=function(_0x1d6439){var _0x188635=this;return new Promise(function(_0x521f92,_0x30cffe){return db[_0x6c9e('0x19')][_0x6c9e('0x1a')](_0x1d6439[_0x6c9e('0x1b')],{'raw':_0x1d6439[_0x6c9e('0x1c')]?_0x1d6439['options'][_0x6c9e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d6439[_0x6c9e('0x1c')]?_0x1d6439[_0x6c9e('0x1c')]['where']||null:null,'attributes':_0x1d6439[_0x6c9e('0x1c')]?_0x1d6439[_0x6c9e('0x1c')]['attributes']||null:null,'limit':_0x1d6439[_0x6c9e('0x1c')]?_0x1d6439[_0x6c9e('0x1c')]['limit']||null:null})[_0x6c9e('0xd')](function(_0x35e0ab){logger[_0x6c9e('0xe')]('UpdateFaxInteraction',_0x1d6439);logger[_0x6c9e('0x11')](_0x6c9e('0x18'),_0x1d6439,JSON['stringify'](_0x35e0ab));_0x521f92(_0x35e0ab);})['catch'](function(_0x3003dd){logger[_0x6c9e('0x13')](_0x6c9e('0x18'),_0x3003dd[_0x6c9e('0x15')],_0x1d6439);_0x30cffe(_0x188635[_0x6c9e('0x13')](0x1f4,_0x3003dd['message']));});});};exports[_0x6c9e('0x1e')]=function(_0x5c7e87){return new Promise(function(_0x515f30,_0x50c785){return db[_0x6c9e('0x19')]['find']({'where':_0x5c7e87[_0x6c9e('0x1c')]?_0x5c7e87[_0x6c9e('0x1c')][_0x6c9e('0x1f')]||null:null})[_0x6c9e('0xd')](function(_0x58e3a5){if(_0x58e3a5){return _0x58e3a5['addTags'](_0x5c7e87['body'][_0x6c9e('0x20')],_[_0x6c9e('0x21')](_0x5c7e87[_0x6c9e('0x1b')],[_0x6c9e('0x20'),'id'])||{});}})[_0x6c9e('0x22')](function(_0x3543e8){logger['info'](_0x6c9e('0x23'),_0x5c7e87);logger[_0x6c9e('0x11')]('AddTags',_0x5c7e87,JSON[_0x6c9e('0x12')](_0x3543e8));_0x515f30(_0x3543e8);})['catch'](function(_0x21e202){logger[_0x6c9e('0x13')](_0x6c9e('0x23'),_0x21e202[_0x6c9e('0x15')],_0x5c7e87);_0x50c785(_this[_0x6c9e('0x13')](0x1f4,_0x21e202['message']));});});};
\ No newline at end of file
index ff56714..29a51f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d83=['remove','update','removeListener','register','length','faxInteraction:','./faxInteraction.events'];(function(_0xea343d,_0x311197){var _0x2c6e9c=function(_0x454bd6){while(--_0x454bd6){_0xea343d['push'](_0xea343d['shift']());}};_0x2c6e9c(++_0x311197);}(_0x9d83,0x1b1));var _0x39d8=function(_0x2b9c0c,_0x4678a3){_0x2b9c0c=_0x2b9c0c-0x0;var _0xd8577b=_0x9d83[_0x2b9c0c];return _0xd8577b;};'use strict';var FaxInteractionEvents=require(_0x39d8('0x0'));var events=['save',_0x39d8('0x1'),_0x39d8('0x2')];function createListener(_0x4af791,_0x5d5262){return function(_0x2a6c19){_0x5d5262['emit'](_0x4af791,_0x2a6c19);};}function removeListener(_0x3be07a,_0x4e9585){return function(){FaxInteractionEvents[_0x39d8('0x3')](_0x3be07a,_0x4e9585);};}exports[_0x39d8('0x4')]=function(_0x1e7429){for(var _0x27c073=0x0,_0x2d4171=events[_0x39d8('0x5')];_0x27c073<_0x2d4171;_0x27c073++){var _0x4fbc19=events[_0x27c073];var _0xb3b990=createListener(_0x39d8('0x6')+_0x4fbc19,_0x1e7429);FaxInteractionEvents['on'](_0x4fbc19,_0xb3b990);}};
\ No newline at end of file
+var _0xe0f9=['emit','removeListener','length','faxInteraction:','./faxInteraction.events','save','remove','update'];(function(_0x1dac29,_0x135d74){var _0x3b8484=function(_0xe6bc8a){while(--_0xe6bc8a){_0x1dac29['push'](_0x1dac29['shift']());}};_0x3b8484(++_0x135d74);}(_0xe0f9,0x17c));var _0x9e0f=function(_0x120d11,_0x3d34c2){_0x120d11=_0x120d11-0x0;var _0x1d9928=_0xe0f9[_0x120d11];return _0x1d9928;};'use strict';var FaxInteractionEvents=require(_0x9e0f('0x0'));var events=[_0x9e0f('0x1'),_0x9e0f('0x2'),_0x9e0f('0x3')];function createListener(_0x28d312,_0x5a59db){return function(_0x579c3a){_0x5a59db[_0x9e0f('0x4')](_0x28d312,_0x579c3a);};}function removeListener(_0x39e8a2,_0x576f22){return function(){FaxInteractionEvents[_0x9e0f('0x5')](_0x39e8a2,_0x576f22);};}exports['register']=function(_0x2a0288){for(var _0x1cd48d=0x0,_0x1e9580=events[_0x9e0f('0x6')];_0x1cd48d<_0x1e9580;_0x1cd48d++){var _0x2f3bbb=events[_0x1cd48d];var _0x41c8b8=createListener(_0x9e0f('0x7')+_0x2f3bbb,_0x2a0288);FaxInteractionEvents['on'](_0x2f3bbb,_0x41c8b8);}};
\ No newline at end of file
index e827f59..94b4fe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x307d=['index','/describe','describe','/:id','/:id/download','create','post','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','put','update','delete','destroy','removeTags','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x454165,_0x1f3e74){var _0x56db53=function(_0x23388c){while(--_0x23388c){_0x454165['push'](_0x454165['shift']());}};_0x56db53(++_0x1f3e74);}(_0x307d,0x129));var _0xd307=function(_0x331d1a,_0xc3846a){_0x331d1a=_0x331d1a-0x0;var _0x94e0f=_0x307d[_0x331d1a];return _0x94e0f;};'use strict';var multer=require(_0xd307('0x0'));var util=require(_0xd307('0x1'));var path=require(_0xd307('0x2'));var timeout=require(_0xd307('0x3'));var express=require(_0xd307('0x4'));var router=express['Router']();var fs_extra=require(_0xd307('0x5'));var auth=require(_0xd307('0x6'));var interaction=require(_0xd307('0x7'));var config=require(_0xd307('0x8'));var controller=require('./faxInteraction.controller');router[_0xd307('0x9')]('/',auth[_0xd307('0xa')](),controller[_0xd307('0xb')]);router['get'](_0xd307('0xc'),auth['isAuthenticated'](),controller[_0xd307('0xd')]);router[_0xd307('0x9')](_0xd307('0xe'),auth[_0xd307('0xa')](),controller['show']);router[_0xd307('0x9')]('/:id/messages',auth[_0xd307('0xa')](),controller['getMessages']);router[_0xd307('0x9')](_0xd307('0xf'),auth[_0xd307('0xa')](),controller['download']);router['post']('/',auth[_0xd307('0xa')](),controller[_0xd307('0x10')]);router[_0xd307('0x11')]('/:id/messages',auth['isAuthenticated'](),controller[_0xd307('0x12')]);router[_0xd307('0x11')](_0xd307('0x13'),auth[_0xd307('0xa')](),interaction[_0xd307('0x14')](_0xd307('0x15'),_0xd307('0x16')),controller['addTags']);router[_0xd307('0x17')](_0xd307('0xe'),auth[_0xd307('0xa')](),interaction[_0xd307('0x14')](_0xd307('0x15'),'faxinteraction:update'),controller[_0xd307('0x18')]);router[_0xd307('0x19')](_0xd307('0xe'),auth[_0xd307('0xa')](),interaction[_0xd307('0x14')]('fax','faxinteraction:destroy'),controller[_0xd307('0x1a')]);router[_0xd307('0x19')]('/:id/tags',auth['isAuthenticated'](),controller[_0xd307('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xc212=['put','tracked','fax','faxinteraction:update','update','delete','faxinteraction:destroy','/:id/tags','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','index','/describe','/:id','isAuthenticated','show','getMessages','/:id/download','download','post','/:id/messages','addMessage','faxinteraction:addtags','addTags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc212,0x175));var _0x2c21=function(_0x1f09f8,_0x247a81){_0x1f09f8=_0x1f09f8-0x0;var _0x5138d1=_0xc212[_0x1f09f8];return _0x5138d1;};'use strict';var multer=require(_0x2c21('0x0'));var util=require('util');var path=require(_0x2c21('0x1'));var timeout=require(_0x2c21('0x2'));var express=require(_0x2c21('0x3'));var router=express[_0x2c21('0x4')]();var fs_extra=require(_0x2c21('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2c21('0x6'));var config=require(_0x2c21('0x7'));var controller=require(_0x2c21('0x8'));router[_0x2c21('0x9')]('/',auth['isAuthenticated'](),controller[_0x2c21('0xa')]);router[_0x2c21('0x9')](_0x2c21('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x2c21('0x9')](_0x2c21('0xc'),auth[_0x2c21('0xd')](),controller[_0x2c21('0xe')]);router['get']('/:id/messages',auth[_0x2c21('0xd')](),controller[_0x2c21('0xf')]);router[_0x2c21('0x9')](_0x2c21('0x10'),auth[_0x2c21('0xd')](),controller[_0x2c21('0x11')]);router[_0x2c21('0x12')]('/',auth[_0x2c21('0xd')](),controller['create']);router[_0x2c21('0x12')](_0x2c21('0x13'),auth[_0x2c21('0xd')](),controller[_0x2c21('0x14')]);router[_0x2c21('0x12')]('/:id/tags',auth[_0x2c21('0xd')](),interaction['tracked']('fax',_0x2c21('0x15')),controller[_0x2c21('0x16')]);router[_0x2c21('0x17')](_0x2c21('0xc'),auth[_0x2c21('0xd')](),interaction[_0x2c21('0x18')](_0x2c21('0x19'),_0x2c21('0x1a')),controller[_0x2c21('0x1b')]);router[_0x2c21('0x1c')]('/:id',auth[_0x2c21('0xd')](),interaction[_0x2c21('0x18')](_0x2c21('0x19'),_0x2c21('0x1d')),controller['destroy']);router['delete'](_0x2c21('0x1e'),auth[_0x2c21('0xd')](),controller[_0x2c21('0x1f')]);module[_0x2c21('0x20')]=router;
\ No newline at end of file
index 42c0ff8..3c7dfc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5712=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE'];(function(_0x631c23,_0x3e18bc){var _0x37f536=function(_0x2a0d53){while(--_0x2a0d53){_0x631c23['push'](_0x631c23['shift']());}};_0x37f536(++_0x3e18bc);}(_0x5712,0x140));var _0x2571=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5712[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x2571('0x0'));module[_0x2571('0x1')]={'body':{'type':Sequelize[_0x2571('0x2')](_0x2571('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2571('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2571('0x5')]('in',_0x2571('0x6')),'defaultValue':_0x2571('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x2571('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x2571('0x7')]}};
\ No newline at end of file
+var _0xedd9=['exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x16eb19,_0x58cea4){var _0x312a25=function(_0x343702){while(--_0x343702){_0x16eb19['push'](_0x16eb19['shift']());}};_0x312a25(++_0x58cea4);}(_0xedd9,0xfc));var _0x9edd=function(_0x62e5b7,_0x3aed52){_0x62e5b7=_0x62e5b7-0x0;var _0x2ce73a=_0xedd9[_0x62e5b7];return _0x2ce73a;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'body':{'type':Sequelize[_0x9edd('0x1')](_0x9edd('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x9edd('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x9edd('0x4')]('in',_0x9edd('0x5')),'defaultValue':_0x9edd('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x9edd('0x1')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 489e33d..a4b8675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52af=['accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','FaxInteraction','isNil','read1stAt','format','get','role','interaction','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','User','email','internal','manual','interface','channel','event','EventManager','acceptmessage','fax','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','motionChannel','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','basename','join','root','server','files','attachments','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','register','jayson/promise','client','then','info','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','FaxMessage,\x20%s,\x20%s','message','catch','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','end','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','FaxMessage','includeAll','include','show','params','rawAttributes','find','body','destroy','describe','fax-interactions'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x52af,0x1d5));var _0xf52a=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x52af[_0x4fbfd9];return _0x31dc94;};'use strict';var emlformat=require(_0xf52a('0x0'));var rimraf=require(_0xf52a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf52a('0x2'));var rp=require('request-promise');var moment=require(_0xf52a('0x3'));var BPromise=require(_0xf52a('0x4'));var Mustache=require(_0xf52a('0x5'));var util=require(_0xf52a('0x6'));var path=require(_0xf52a('0x7'));var sox=require(_0xf52a('0x8'));var csv=require('to-csv');var ejs=require(_0xf52a('0x9'));var fs=require('fs');var fs_extra=require(_0xf52a('0xa'));var _=require(_0xf52a('0xb'));var squel=require(_0xf52a('0xc'));var crypto=require('crypto');var jsforce=require(_0xf52a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf52a('0xe'));var querystring=require(_0xf52a('0xf'));var Papa=require(_0xf52a('0x10'));var Redis=require(_0xf52a('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xf52a('0x12'));var as=require(_0xf52a('0x13'));var hardwareService=require(_0xf52a('0x14'));var logger=require(_0xf52a('0x15'))(_0xf52a('0x16'));var utils=require(_0xf52a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf52a('0x18'));var db=require(_0xf52a('0x19'))['db'];config['redis']=_[_0xf52a('0x1a')](config[_0xf52a('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xf52a('0x1c'))(new Redis(config[_0xf52a('0x1b')]));require('./faxMessage.socket')[_0xf52a('0x1d')](socket);var jayson=require(_0xf52a('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xf52a('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f0873,_0xf3c743,_0x3697bf,_0x5e69e3){return new BPromise(function(_0x51ba57,_0x1a10a0){var _0x49be31=_0x5e69e3||client;return _0x49be31['request'](_0x4f0873,_0x3697bf)[_0xf52a('0x20')](function(_0x34194e){logger[_0xf52a('0x21')]('FaxMessage,\x20%s,\x20%s',_0xf3c743,_0xf52a('0x22'));logger['debug'](_0xf52a('0x23'),_0xf3c743,_0xf52a('0x22'),JSON[_0xf52a('0x24')](_0x34194e));if(_0x34194e['error']){if(_0x34194e['error'][_0xf52a('0x25')]===0x1f4){logger[_0xf52a('0x26')]('FaxMessage,\x20%s,\x20%s',_0xf3c743,_0x34194e[_0xf52a('0x26')]['message']);return _0x1a10a0(_0x34194e['error']['message']);}logger['error'](_0xf52a('0x27'),_0xf3c743,_0x34194e[_0xf52a('0x26')]['message']);return _0x51ba57(_0x34194e[_0xf52a('0x26')][_0xf52a('0x28')]);}else{logger[_0xf52a('0x21')](_0xf52a('0x27'),_0xf3c743,_0xf52a('0x22'));_0x51ba57(_0x34194e['result']['message']);}})[_0xf52a('0x29')](function(_0x5e1afc){logger['error']('FaxMessage,\x20%s,\x20%s',_0xf3c743,_0x5e1afc);_0x1a10a0(_0x5e1afc);});});}function respondWithStatusCode(_0xfc623d,_0x4d3802){_0x4d3802=_0x4d3802||0xcc;return function(_0x363ef2){if(_0x363ef2){return _0xfc623d[_0xf52a('0x2a')](_0x4d3802);}return _0xfc623d[_0xf52a('0x2b')](_0x4d3802)['end']();};}function respondWithResult(_0x29b547,_0x49e55c){_0x49e55c=_0x49e55c||0xc8;return function(_0x38fa4d){if(_0x38fa4d){return _0x29b547[_0xf52a('0x2b')](_0x49e55c)['json'](_0x38fa4d);}};}function respondWithFilteredResult(_0x1309be,_0x599cdf){return function(_0x2ba2cb){if(_0x2ba2cb){var _0x4001ad=typeof _0x599cdf[_0xf52a('0x2c')]===_0xf52a('0x2d')&&typeof _0x599cdf['limit']===_0xf52a('0x2d');var _0xf64dca=_0x2ba2cb[_0xf52a('0x2e')];var _0x4698dd=_0x4001ad?0x0:_0x599cdf[_0xf52a('0x2c')];var _0x2d9429=_0x4001ad?_0x2ba2cb['count']:_0x599cdf[_0xf52a('0x2c')]+_0x599cdf[_0xf52a('0x2f')];var _0x8aa845;if(_0x2d9429>=_0xf64dca){_0x2d9429=_0xf64dca;_0x8aa845=0xc8;}else{_0x8aa845=0xce;}_0x1309be[_0xf52a('0x2b')](_0x8aa845);return _0x1309be[_0xf52a('0x30')](_0xf52a('0x31'),_0x4698dd+'-'+_0x2d9429+'/'+_0xf64dca)[_0xf52a('0x32')](_0x2ba2cb);}return null;};}function patchUpdates(_0x527d76){return function(_0x16f0c3){try{jsonpatch['apply'](_0x16f0c3,_0x527d76,!![]);}catch(_0x519cbb){return BPromise[_0xf52a('0x33')](_0x519cbb);}return _0x16f0c3[_0xf52a('0x34')]();};}function saveUpdates(_0x322bb2,_0x5fe7de){return function(_0x5c6f8e){if(_0x5c6f8e){return _0x5c6f8e[_0xf52a('0x35')](_0x322bb2)['then'](function(_0x33efa7){return _0x33efa7;});}return null;};}function removeEntity(_0x154178,_0xcf3d97){return function(_0x2792f2){if(_0x2792f2){return _0x2792f2['destroy']()[_0xf52a('0x20')](function(){_0x154178[_0xf52a('0x2b')](0xcc)[_0xf52a('0x36')]();});}};}function handleEntityNotFound(_0x94540a,_0x53c970){return function(_0x5e66bf){if(!_0x5e66bf){_0x94540a[_0xf52a('0x2a')](0x194);}return _0x5e66bf;};}function handleError(_0x593390,_0x21b36d){_0x21b36d=_0x21b36d||0x1f4;return function(_0x49846f){logger[_0xf52a('0x26')](_0x49846f['stack']);if(_0x49846f[_0xf52a('0x37')]){delete _0x49846f[_0xf52a('0x37')];}_0x593390[_0xf52a('0x2b')](_0x21b36d)[_0xf52a('0x38')](_0x49846f);};}exports[_0xf52a('0x39')]=function(_0x34b8ea,_0x41fc28){var _0x525490={},_0x1701b2={},_0x32c31a={'count':0x0,'rows':[]};var _0x1d241c=_[_0xf52a('0x3a')](db['FaxMessage']['rawAttributes'],function(_0x18e003){return{'name':_0x18e003[_0xf52a('0x3b')],'type':_0x18e003[_0xf52a('0x3c')][_0xf52a('0x3d')]};});_0x1701b2[_0xf52a('0x3e')]=_[_0xf52a('0x3a')](_0x1d241c,_0xf52a('0x37'));_0x1701b2[_0xf52a('0x3f')]=_[_0xf52a('0x40')](_0x34b8ea[_0xf52a('0x3f')]);_0x1701b2[_0xf52a('0x41')]=_[_0xf52a('0x42')](_0x1701b2['model'],_0x1701b2[_0xf52a('0x3f')]);_0x525490[_0xf52a('0x43')]=_[_0xf52a('0x42')](_0x1701b2[_0xf52a('0x3e')],qs['fields'](_0x34b8ea[_0xf52a('0x3f')][_0xf52a('0x44')]));_0x525490[_0xf52a('0x43')]=_0x525490[_0xf52a('0x43')][_0xf52a('0x45')]?_0x525490[_0xf52a('0x43')]:_0x1701b2[_0xf52a('0x3e')];if(!_0x34b8ea['query'][_0xf52a('0x46')](_0xf52a('0x47'))){_0x525490[_0xf52a('0x2f')]=qs[_0xf52a('0x2f')](_0x34b8ea[_0xf52a('0x3f')]['limit']);_0x525490[_0xf52a('0x2c')]=qs['offset'](_0x34b8ea[_0xf52a('0x3f')]['offset']);}_0x525490[_0xf52a('0x48')]=qs[_0xf52a('0x49')](_0x34b8ea[_0xf52a('0x3f')]['sort']);_0x525490[_0xf52a('0x4a')]=qs[_0xf52a('0x41')](_[_0xf52a('0x4b')](_0x34b8ea[_0xf52a('0x3f')],_0x1701b2['filters']),_0x1d241c);if(_0x34b8ea['query'][_0xf52a('0x4c')]){_0x525490[_0xf52a('0x4a')]=_['merge'](_0x525490[_0xf52a('0x4a')],{'$or':_[_0xf52a('0x3a')](_0x1d241c,function(_0x223fd0){if(_0x223fd0[_0xf52a('0x3c')]!==_0xf52a('0x4d')){var _0xeb34d1={};_0xeb34d1[_0x223fd0[_0xf52a('0x37')]]={'$like':'%'+_0x34b8ea['query']['filter']+'%'};return _0xeb34d1;}})});}_0x525490=_[_0xf52a('0x4e')]({},_0x525490,_0x34b8ea[_0xf52a('0x4f')]);var _0x19a21a={'where':_0x525490['where']};return db[_0xf52a('0x50')][_0xf52a('0x2e')](_0x19a21a)[_0xf52a('0x20')](function(_0x1f459b){_0x32c31a[_0xf52a('0x2e')]=_0x1f459b;if(_0x34b8ea['query'][_0xf52a('0x51')]){_0x525490[_0xf52a('0x52')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x525490);})[_0xf52a('0x20')](function(_0x4b368c){_0x32c31a['rows']=_0x4b368c;return _0x32c31a;})[_0xf52a('0x20')](respondWithFilteredResult(_0x41fc28,_0x525490))[_0xf52a('0x29')](handleError(_0x41fc28,null));};exports[_0xf52a('0x53')]=function(_0x2ae2bc,_0x484677){var _0x236e80={'raw':!![],'where':{'id':_0x2ae2bc[_0xf52a('0x54')]['id']}},_0x23b4e0={};_0x23b4e0[_0xf52a('0x3e')]=_['keys'](db[_0xf52a('0x50')][_0xf52a('0x55')]);_0x23b4e0[_0xf52a('0x3f')]=_[_0xf52a('0x40')](_0x2ae2bc[_0xf52a('0x3f')]);_0x23b4e0[_0xf52a('0x41')]=_[_0xf52a('0x42')](_0x23b4e0[_0xf52a('0x3e')],_0x23b4e0[_0xf52a('0x3f')]);_0x236e80[_0xf52a('0x43')]=_[_0xf52a('0x42')](_0x23b4e0[_0xf52a('0x3e')],qs[_0xf52a('0x44')](_0x2ae2bc[_0xf52a('0x3f')][_0xf52a('0x44')]));_0x236e80[_0xf52a('0x43')]=_0x236e80[_0xf52a('0x43')][_0xf52a('0x45')]?_0x236e80[_0xf52a('0x43')]:_0x23b4e0['model'];if(_0x2ae2bc[_0xf52a('0x3f')][_0xf52a('0x51')]){_0x236e80['include']=[{'all':!![]}];}_0x236e80=_[_0xf52a('0x4e')]({},_0x236e80,_0x2ae2bc[_0xf52a('0x4f')]);return db['FaxMessage'][_0xf52a('0x56')](_0x236e80)[_0xf52a('0x20')](handleEntityNotFound(_0x484677,null))[_0xf52a('0x20')](respondWithResult(_0x484677,null))[_0xf52a('0x29')](handleError(_0x484677,null));};exports[_0xf52a('0x35')]=function(_0x1ef4b1,_0x49da8f){if(_0x1ef4b1['body']['id']){delete _0x1ef4b1[_0xf52a('0x57')]['id'];}return db['FaxMessage'][_0xf52a('0x56')]({'where':{'id':_0x1ef4b1[_0xf52a('0x54')]['id']}})[_0xf52a('0x20')](handleEntityNotFound(_0x49da8f,null))['then'](saveUpdates(_0x1ef4b1[_0xf52a('0x57')],null))[_0xf52a('0x20')](respondWithResult(_0x49da8f,null))[_0xf52a('0x29')](handleError(_0x49da8f,null));};exports[_0xf52a('0x58')]=function(_0x58c00e,_0x21e1d8){return db[_0xf52a('0x50')][_0xf52a('0x56')]({'where':{'id':_0x58c00e[_0xf52a('0x54')]['id']}})['then'](handleEntityNotFound(_0x21e1d8,null))[_0xf52a('0x20')](removeEntity(_0x21e1d8,null))[_0xf52a('0x29')](handleError(_0x21e1d8,null));};exports[_0xf52a('0x59')]=function(_0x3d2f28,_0x22bf85){return db[_0xf52a('0x50')][_0xf52a('0x59')]()[_0xf52a('0x20')](respondWithResult(_0x22bf85,null))['catch'](handleError(_0x22bf85,null));};var interaction_log=require(_0xf52a('0x15'))(_0xf52a('0x5a'));exports[_0xf52a('0x5b')]=function(_0x5cbd25,_0x4f2c40,_0x1fd337){var _0xd4eeb6={'agent':{},'channel':'fax'};if(_0x5cbd25[_0xf52a('0x57')]['id']){delete _0x5cbd25[_0xf52a('0x57')]['id'];}_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5c')]=!![];_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5d')]=moment()['format'](_0xf52a('0x5e'));_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5f')]=_0x5cbd25[_0xf52a('0x57')]['UserId']||_0x5cbd25[_0xf52a('0x60')]['id'];_0xd4eeb6[_0xf52a('0x61')]['id']=_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5f')];return db[_0xf52a('0x50')][_0xf52a('0x56')]({'where':{'id':_0x5cbd25[_0xf52a('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4f2c40,null))['then'](saveUpdates(_0x5cbd25['body'],null))[_0xf52a('0x20')](function(_0x2e19ab){if(_0x2e19ab){_0xd4eeb6[_0xf52a('0x28')]=_0x2e19ab['get']({'plain':!![]});return db[_0xf52a('0x62')][_0xf52a('0x56')]({'where':{'id':_0x2e19ab['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4f2c40,null))[_0xf52a('0x20')](function(_0x4c09b9){if(_0x4c09b9){return _0x4c09b9[_0xf52a('0x35')]({'UserId':_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5f')],'read1stAt':_[_0xf52a('0x63')](_0x4c09b9[_0xf52a('0x64')])?moment()[_0xf52a('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf52a('0x20')](function(_0x37a05a){if(_0x37a05a){_0xd4eeb6['interaction']=_0x37a05a[_0xf52a('0x66')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5cbd25[_0xf52a('0x60')]['id'],_0x5cbd25[_0xf52a('0x60')][_0xf52a('0x37')],_0x5cbd25[_0xf52a('0x60')][_0xf52a('0x67')],_0xd4eeb6[_0xf52a('0x68')]['id'],_0x5cbd25[_0xf52a('0x57')]?JSON[_0xf52a('0x24')](_0x5cbd25['body']):_0xf52a('0x69'));return respondWithRpcPromise('AcceptMessage',_0xf52a('0x6a'),_0xd4eeb6);}return null;})[_0xf52a('0x20')](function(_0x239544){var _0x758efe=_0xf52a('0x6b')+_0x239544['message'][_0xf52a('0x6c')];return db[_0xf52a('0x6d')][_0xf52a('0x3f')](_0x758efe,{'type':db['Sequelize'][_0xf52a('0x6e')]['SELECT'],'raw':!![]})[_0xf52a('0x20')](function(_0x4b76b5){return _0x4b76b5;});})[_0xf52a('0x20')](function(_0x2eecd2){if(_0x2eecd2){_0xd4eeb6[_0xf52a('0x28')][_0xf52a('0x6f')]=_0x2eecd2[0x0];if(!_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x5f')])return;return db[_0xf52a('0x70')][_0xf52a('0x56')]({'where':{'id':_0x5cbd25[_0xf52a('0x57')]['UserId'],'role':_0xf52a('0x61')},'attributes':['id',_0xf52a('0x37'),'fullname',_0xf52a('0x71'),_0xf52a('0x72')],'raw':!![]});}return null;})[_0xf52a('0x20')](function(_0xde83d0){if(!_0xde83d0)return null;_0xd4eeb6[_0xf52a('0x28')][_0xf52a('0x61')]=_0xde83d0;return _0xd4eeb6;})[_0xf52a('0x20')](function(_0x550ac5){if(_0x550ac5){if(_0x5cbd25[_0xf52a('0x57')][_0xf52a('0x73')]){_0xd4eeb6[_0xf52a('0x28')][_0xf52a('0x74')]=util[_0xf52a('0x65')]('SIP/%s',_0x5cbd25[_0xf52a('0x60')][_0xf52a('0x37')]);_0xd4eeb6[_0xf52a('0x28')][_0xf52a('0x75')]=_0xd4eeb6[_0xf52a('0x75')];_0xd4eeb6[_0xf52a('0x28')]['motionChannel']=_0xd4eeb6[_0xf52a('0x75')];_0xd4eeb6[_0xf52a('0x28')][_0xf52a('0x76')]=_0xf52a('0x5b');return respondWithRpcPromise(_0xf52a('0x77'),_0xf52a('0x77'),{'event':_0xf52a('0x78'),'message':_0xd4eeb6[_0xf52a('0x28')]},client9002)[_0xf52a('0x20')](function(){return _0xd4eeb6;});}return _0xd4eeb6;}return null;})[_0xf52a('0x20')](respondWithResult(_0x4f2c40,null))[_0xf52a('0x29')](handleError(_0x4f2c40,null));};var interaction_log=require('../../config/logger')(_0xf52a('0x5a'));exports[_0xf52a('0x33')]=function(_0x2684a7,_0x1a37cc,_0x18ef2c){var _0x323b9e={'agent':{},'channel':_0xf52a('0x79')};if(_0x2684a7['body']['id']){delete _0x2684a7[_0xf52a('0x57')]['id'];}_0x2684a7[_0xf52a('0x57')]['UserId']=_0x2684a7[_0xf52a('0x57')]['UserId']||_0x2684a7[_0xf52a('0x60')]['id'];_0x323b9e[_0xf52a('0x61')]['id']=_0x2684a7[_0xf52a('0x57')][_0xf52a('0x5f')];return db[_0xf52a('0x50')]['find']({'where':{'id':_0x2684a7[_0xf52a('0x54')]['id'],'UserId':null}})[_0xf52a('0x20')](handleEntityNotFound(_0x1a37cc,null))['then'](function(_0x1f761f){if(_0x1f761f){_0x323b9e[_0xf52a('0x28')]=_0x1f761f['get']({'plain':!![]});return db[_0xf52a('0x62')][_0xf52a('0x56')]({'where':{'id':_0x1f761f['FaxInteractionId']}});}return null;})[_0xf52a('0x20')](handleEntityNotFound(_0x1a37cc,null))[_0xf52a('0x20')](function(_0x48f9a7){if(_0x48f9a7){_0x323b9e['interaction']=_0x48f9a7[_0xf52a('0x66')]({'plain':!![]});interaction_log[_0xf52a('0x21')](_0xf52a('0x7a'),_0x2684a7['user']['id'],_0x2684a7[_0xf52a('0x60')][_0xf52a('0x37')],_0x2684a7[_0xf52a('0x60')][_0xf52a('0x67')],_0x323b9e[_0xf52a('0x68')]['id'],_0x2684a7['body']?JSON['stringify'](_0x2684a7['body']):_0xf52a('0x69'));return respondWithRpcPromise(_0xf52a('0x7b'),_0xf52a('0x7c'),_0x323b9e);}return null;})['then'](function(_0x466dca){var _0x7aab73='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x466dca['message'][_0xf52a('0x6c')];return db['sequelize'][_0xf52a('0x3f')](_0x7aab73,{'type':db[_0xf52a('0x7d')][_0xf52a('0x6e')]['SELECT'],'raw':!![]})[_0xf52a('0x20')](function(_0x92db90){return _0x92db90;});})[_0xf52a('0x20')](function(_0x37bde7){if(_0x37bde7){_0x323b9e['message']['contact']=_0x37bde7[0x0];if(!_0x2684a7[_0xf52a('0x57')][_0xf52a('0x5f')])return;return db['User'][_0xf52a('0x56')]({'where':{'id':_0x2684a7[_0xf52a('0x57')]['UserId'],'role':_0xf52a('0x61')},'attributes':['id',_0xf52a('0x37'),'fullname',_0xf52a('0x71'),'internal'],'raw':!![]});}return null;})[_0xf52a('0x20')](function(_0x3d4e16){if(!_0x3d4e16)return null;_0x323b9e[_0xf52a('0x28')][_0xf52a('0x61')]=_0x3d4e16;return _0x323b9e;})['then'](function(_0x45cf4c){if(_0x45cf4c){_0x45cf4c[_0xf52a('0x28')][_0xf52a('0x74')]=util[_0xf52a('0x65')]('SIP/%s',_0x2684a7[_0xf52a('0x60')][_0xf52a('0x37')]);_0x45cf4c[_0xf52a('0x28')][_0xf52a('0x75')]=_0x323b9e[_0xf52a('0x75')];_0x45cf4c[_0xf52a('0x28')][_0xf52a('0x7e')]=_0x323b9e[_0xf52a('0x75')];_0x45cf4c[_0xf52a('0x28')][_0xf52a('0x76')]=_0xf52a('0x33');respondWithRpcPromise(_0xf52a('0x77'),_0xf52a('0x77'),{'event':'rejectmessage','message':_0x45cf4c[_0xf52a('0x28')]},client9002);return _0x323b9e;}return null;})['then'](respondWithResult(_0x1a37cc,null))['catch'](handleError(_0x1a37cc,null));};exports[_0xf52a('0x7f')]=function(_0x154ff1,_0x4ca56b){var _0x5b3c45;return db[_0xf52a('0x50')][_0xf52a('0x7f')](_0x154ff1['body'],{})[_0xf52a('0x20')](function(_0x7a9dac){_0x5b3c45=_0x7a9dac;return db[_0xf52a('0x80')][_0xf52a('0x81')]({'where':{'id':_0x5b3c45[_0xf52a('0x6c')]}});})['then'](function(_0x4aeb1a){if(_['isNil'](_0x4aeb1a)){return;}else{_0x5b3c45[_0xf52a('0x79')]=_0x4aeb1a[_0xf52a('0x79')];return db[_0xf52a('0x82')][_0xf52a('0x81')]({'where':{'id':_0x5b3c45[_0xf52a('0x83')]}});}})[_0xf52a('0x20')](function(_0x422884){return respondWithRpcPromise(_0xf52a('0x84'),_0xf52a('0x84'),{'FaxAccountId':_[_0xf52a('0x63')](_0x154ff1[_0xf52a('0x57')])?undefined:_0x154ff1['body'][_0xf52a('0x85')],'path':_[_0xf52a('0x63')](_0x422884)?undefined:util[_0xf52a('0x65')]('/var/opt/motion2/server/files/attachments/%s',_0x422884[_0xf52a('0x86')]),'fax':_[_0xf52a('0x63')](_0x5b3c45['fax'])?undefined:_0x5b3c45['fax'],'AttachmentId':_0x5b3c45[_0xf52a('0x83')]},client9002);})['then'](respondWithResult(_0x4ca56b,0xc9))[_0xf52a('0x29')](handleError(_0x4ca56b,null));};exports['download']=function(_0x3018fc,_0x2a4bf8){var _0x3a0229=path[_0xf52a('0x87')](config[_0xf52a('0x88')],_0xf52a('0x89'),_0xf52a('0x8a'),_0xf52a('0x8b'));return db[_0xf52a('0x50')]['find']({'where':{'id':_0x3018fc['params']['id']},'include':[{'model':db[_0xf52a('0x82')],'as':_0xf52a('0x82')}]})[_0xf52a('0x20')](handleEntityNotFound(_0x2a4bf8,null))[_0xf52a('0x20')](function(_0x4d9687){if(_0x4d9687){return _0x2a4bf8['download'](path[_0xf52a('0x87')](_0x3a0229,_0x4d9687[_0xf52a('0x82')][_0xf52a('0x86')]));}})[_0xf52a('0x29')](handleError(_0x2a4bf8,null));};
\ No newline at end of file
+var _0xa3ef=['event','acceptmessage','reject','fax','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','contact','User','internal','EventManager','create','CmContact','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','body','describe','fax-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','FaxInteractionId','isNil','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','sequelize','Sequelize','QueryTypes','agent','email','manual','interface','SIP/%s','motionChannel','channel'];(function(_0x1fcaf1,_0x21c3c2){var _0x55f464=function(_0x348eb3){while(--_0x348eb3){_0x1fcaf1['push'](_0x1fcaf1['shift']());}};_0x55f464(++_0x21c3c2);}(_0xa3ef,0xa5));var _0xfa3e=function(_0x14dcd7,_0x18701c){_0x14dcd7=_0x14dcd7-0x0;var _0x2849bb=_0xa3ef[_0x14dcd7];return _0x2849bb;};'use strict';var emlformat=require(_0xfa3e('0x0'));var rimraf=require(_0xfa3e('0x1'));var zipdir=require(_0xfa3e('0x2'));var jsonpatch=require(_0xfa3e('0x3'));var rp=require(_0xfa3e('0x4'));var moment=require('moment');var BPromise=require(_0xfa3e('0x5'));var Mustache=require(_0xfa3e('0x6'));var util=require('util');var path=require(_0xfa3e('0x7'));var sox=require(_0xfa3e('0x8'));var csv=require('to-csv');var ejs=require(_0xfa3e('0x9'));var fs=require('fs');var fs_extra=require(_0xfa3e('0xa'));var _=require(_0xfa3e('0xb'));var squel=require(_0xfa3e('0xc'));var crypto=require(_0xfa3e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xfa3e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xfa3e('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfa3e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfa3e('0x11'))('api');var utils=require(_0xfa3e('0x12'));var config=require(_0xfa3e('0x13'));var licenseUtil=require(_0xfa3e('0x14'));var db=require(_0xfa3e('0x15'))['db'];config[_0xfa3e('0x16')]=_[_0xfa3e('0x17')](config[_0xfa3e('0x16')],{'host':_0xfa3e('0x18'),'port':0x18eb});var socket=require(_0xfa3e('0x19'))(new Redis(config[_0xfa3e('0x16')]));require(_0xfa3e('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xfa3e('0x1b')][_0xfa3e('0x1c')]({'port':0x232c});var client9002=jayson[_0xfa3e('0x1b')][_0xfa3e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x524688,_0xe7c6fe,_0x54e714,_0x2254e7){return new BPromise(function(_0x8e3611,_0x41f92a){var _0x3235a8=_0x2254e7||client;return _0x3235a8[_0xfa3e('0x1d')](_0x524688,_0x54e714)[_0xfa3e('0x1e')](function(_0x3043d1){logger[_0xfa3e('0x1f')](_0xfa3e('0x20'),_0xe7c6fe,_0xfa3e('0x21'));logger['debug'](_0xfa3e('0x22'),_0xe7c6fe,'request\x20sent',JSON[_0xfa3e('0x23')](_0x3043d1));if(_0x3043d1[_0xfa3e('0x24')]){if(_0x3043d1['error']['code']===0x1f4){logger['error'](_0xfa3e('0x20'),_0xe7c6fe,_0x3043d1[_0xfa3e('0x24')][_0xfa3e('0x25')]);return _0x41f92a(_0x3043d1[_0xfa3e('0x24')][_0xfa3e('0x25')]);}logger[_0xfa3e('0x24')](_0xfa3e('0x20'),_0xe7c6fe,_0x3043d1['error'][_0xfa3e('0x25')]);return _0x8e3611(_0x3043d1[_0xfa3e('0x24')][_0xfa3e('0x25')]);}else{logger[_0xfa3e('0x1f')](_0xfa3e('0x20'),_0xe7c6fe,'request\x20sent');_0x8e3611(_0x3043d1[_0xfa3e('0x26')][_0xfa3e('0x25')]);}})['catch'](function(_0x2ec118){logger[_0xfa3e('0x24')](_0xfa3e('0x20'),_0xe7c6fe,_0x2ec118);_0x41f92a(_0x2ec118);});});}function respondWithStatusCode(_0x2184e5,_0xd7acd7){_0xd7acd7=_0xd7acd7||0xcc;return function(_0xb43b25){if(_0xb43b25){return _0x2184e5['sendStatus'](_0xd7acd7);}return _0x2184e5[_0xfa3e('0x27')](_0xd7acd7)[_0xfa3e('0x28')]();};}function respondWithResult(_0x2ac1ab,_0x2779da){_0x2779da=_0x2779da||0xc8;return function(_0x32be8d){if(_0x32be8d){return _0x2ac1ab[_0xfa3e('0x27')](_0x2779da)[_0xfa3e('0x29')](_0x32be8d);}};}function respondWithFilteredResult(_0x4f7a02,_0x5292ee){return function(_0x3eca7f){if(_0x3eca7f){var _0x16793d=typeof _0x5292ee[_0xfa3e('0x2a')]===_0xfa3e('0x2b')&&typeof _0x5292ee[_0xfa3e('0x2c')]==='undefined';var _0x41182c=_0x3eca7f[_0xfa3e('0x2d')];var _0x181d28=_0x16793d?0x0:_0x5292ee[_0xfa3e('0x2a')];var _0x207ec2=_0x16793d?_0x3eca7f[_0xfa3e('0x2d')]:_0x5292ee['offset']+_0x5292ee[_0xfa3e('0x2c')];var _0x21342e;if(_0x207ec2>=_0x41182c){_0x207ec2=_0x41182c;_0x21342e=0xc8;}else{_0x21342e=0xce;}_0x4f7a02[_0xfa3e('0x27')](_0x21342e);return _0x4f7a02['set'](_0xfa3e('0x2e'),_0x181d28+'-'+_0x207ec2+'/'+_0x41182c)[_0xfa3e('0x29')](_0x3eca7f);}return null;};}function patchUpdates(_0x23b2d0){return function(_0x5f0c34){try{jsonpatch[_0xfa3e('0x2f')](_0x5f0c34,_0x23b2d0,!![]);}catch(_0x43263f){return BPromise['reject'](_0x43263f);}return _0x5f0c34[_0xfa3e('0x30')]();};}function saveUpdates(_0x5cbb24,_0x2847b7){return function(_0x4ab867){if(_0x4ab867){return _0x4ab867[_0xfa3e('0x31')](_0x5cbb24)[_0xfa3e('0x1e')](function(_0x4ad9ab){return _0x4ad9ab;});}return null;};}function removeEntity(_0x553e30,_0x20084f){return function(_0x196880){if(_0x196880){return _0x196880[_0xfa3e('0x32')]()[_0xfa3e('0x1e')](function(){_0x553e30[_0xfa3e('0x27')](0xcc)[_0xfa3e('0x28')]();});}};}function handleEntityNotFound(_0x2eeea4,_0x573104){return function(_0x57a4d5){if(!_0x57a4d5){_0x2eeea4['sendStatus'](0x194);}return _0x57a4d5;};}function handleError(_0x133775,_0x4108af){_0x4108af=_0x4108af||0x1f4;return function(_0x41f24c){logger[_0xfa3e('0x24')](_0x41f24c[_0xfa3e('0x33')]);if(_0x41f24c['name']){delete _0x41f24c[_0xfa3e('0x34')];}_0x133775[_0xfa3e('0x27')](_0x4108af)[_0xfa3e('0x35')](_0x41f24c);};}exports[_0xfa3e('0x36')]=function(_0x1c7222,_0xc6a82e){var _0x1dbe21={},_0x246d28={},_0x3091c4={'count':0x0,'rows':[]};var _0x2bc7ae=_[_0xfa3e('0x37')](db[_0xfa3e('0x38')][_0xfa3e('0x39')],function(_0x31069f){return{'name':_0x31069f[_0xfa3e('0x3a')],'type':_0x31069f[_0xfa3e('0x3b')][_0xfa3e('0x3c')]};});_0x246d28[_0xfa3e('0x3d')]=_[_0xfa3e('0x37')](_0x2bc7ae,_0xfa3e('0x34'));_0x246d28['query']=_['keys'](_0x1c7222[_0xfa3e('0x3e')]);_0x246d28[_0xfa3e('0x3f')]=_[_0xfa3e('0x40')](_0x246d28[_0xfa3e('0x3d')],_0x246d28[_0xfa3e('0x3e')]);_0x1dbe21['attributes']=_[_0xfa3e('0x40')](_0x246d28[_0xfa3e('0x3d')],qs['fields'](_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x41')]));_0x1dbe21['attributes']=_0x1dbe21[_0xfa3e('0x42')][_0xfa3e('0x43')]?_0x1dbe21[_0xfa3e('0x42')]:_0x246d28['model'];if(!_0x1c7222[_0xfa3e('0x3e')]['hasOwnProperty'](_0xfa3e('0x44'))){_0x1dbe21[_0xfa3e('0x2c')]=qs['limit'](_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x2c')]);_0x1dbe21[_0xfa3e('0x2a')]=qs[_0xfa3e('0x2a')](_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x2a')]);}_0x1dbe21[_0xfa3e('0x45')]=qs[_0xfa3e('0x46')](_0x1c7222['query']['sort']);_0x1dbe21[_0xfa3e('0x47')]=qs[_0xfa3e('0x3f')](_[_0xfa3e('0x48')](_0x1c7222[_0xfa3e('0x3e')],_0x246d28[_0xfa3e('0x3f')]),_0x2bc7ae);if(_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x49')]){_0x1dbe21[_0xfa3e('0x47')]=_['merge'](_0x1dbe21['where'],{'$or':_[_0xfa3e('0x37')](_0x2bc7ae,function(_0x3a5769){if(_0x3a5769[_0xfa3e('0x3b')]!==_0xfa3e('0x4a')){var _0x22d7c3={};_0x22d7c3[_0x3a5769['name']]={'$like':'%'+_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x49')]+'%'};return _0x22d7c3;}})});}_0x1dbe21=_[_0xfa3e('0x4b')]({},_0x1dbe21,_0x1c7222[_0xfa3e('0x4c')]);var _0x201958={'where':_0x1dbe21['where']};return db[_0xfa3e('0x38')][_0xfa3e('0x2d')](_0x201958)[_0xfa3e('0x1e')](function(_0x2af884){_0x3091c4[_0xfa3e('0x2d')]=_0x2af884;if(_0x1c7222[_0xfa3e('0x3e')][_0xfa3e('0x4d')]){_0x1dbe21[_0xfa3e('0x4e')]=[{'all':!![]}];}return db[_0xfa3e('0x38')][_0xfa3e('0x4f')](_0x1dbe21);})[_0xfa3e('0x1e')](function(_0x4f024a){_0x3091c4[_0xfa3e('0x50')]=_0x4f024a;return _0x3091c4;})[_0xfa3e('0x1e')](respondWithFilteredResult(_0xc6a82e,_0x1dbe21))[_0xfa3e('0x51')](handleError(_0xc6a82e,null));};exports[_0xfa3e('0x52')]=function(_0x5d31d9,_0x147f05){var _0x1f2973={'raw':!![],'where':{'id':_0x5d31d9[_0xfa3e('0x53')]['id']}},_0x235207={};_0x235207[_0xfa3e('0x3d')]=_['keys'](db['FaxMessage'][_0xfa3e('0x39')]);_0x235207[_0xfa3e('0x3e')]=_[_0xfa3e('0x54')](_0x5d31d9[_0xfa3e('0x3e')]);_0x235207[_0xfa3e('0x3f')]=_[_0xfa3e('0x40')](_0x235207[_0xfa3e('0x3d')],_0x235207[_0xfa3e('0x3e')]);_0x1f2973[_0xfa3e('0x42')]=_[_0xfa3e('0x40')](_0x235207['model'],qs[_0xfa3e('0x41')](_0x5d31d9[_0xfa3e('0x3e')]['fields']));_0x1f2973[_0xfa3e('0x42')]=_0x1f2973[_0xfa3e('0x42')][_0xfa3e('0x43')]?_0x1f2973[_0xfa3e('0x42')]:_0x235207[_0xfa3e('0x3d')];if(_0x5d31d9[_0xfa3e('0x3e')][_0xfa3e('0x4d')]){_0x1f2973[_0xfa3e('0x4e')]=[{'all':!![]}];}_0x1f2973=_[_0xfa3e('0x4b')]({},_0x1f2973,_0x5d31d9['options']);return db[_0xfa3e('0x38')][_0xfa3e('0x55')](_0x1f2973)[_0xfa3e('0x1e')](handleEntityNotFound(_0x147f05,null))[_0xfa3e('0x1e')](respondWithResult(_0x147f05,null))[_0xfa3e('0x51')](handleError(_0x147f05,null));};exports[_0xfa3e('0x31')]=function(_0xc164dc,_0x5f1f26){if(_0xc164dc[_0xfa3e('0x56')]['id']){delete _0xc164dc[_0xfa3e('0x56')]['id'];}return db[_0xfa3e('0x38')][_0xfa3e('0x55')]({'where':{'id':_0xc164dc[_0xfa3e('0x53')]['id']}})['then'](handleEntityNotFound(_0x5f1f26,null))[_0xfa3e('0x1e')](saveUpdates(_0xc164dc[_0xfa3e('0x56')],null))['then'](respondWithResult(_0x5f1f26,null))[_0xfa3e('0x51')](handleError(_0x5f1f26,null));};exports[_0xfa3e('0x32')]=function(_0x2aff09,_0x4e264b){return db[_0xfa3e('0x38')][_0xfa3e('0x55')]({'where':{'id':_0x2aff09['params']['id']}})[_0xfa3e('0x1e')](handleEntityNotFound(_0x4e264b,null))[_0xfa3e('0x1e')](removeEntity(_0x4e264b,null))[_0xfa3e('0x51')](handleError(_0x4e264b,null));};exports[_0xfa3e('0x57')]=function(_0x4cd60a,_0x6ceafc){return db[_0xfa3e('0x38')][_0xfa3e('0x57')]()[_0xfa3e('0x1e')](respondWithResult(_0x6ceafc,null))[_0xfa3e('0x51')](handleError(_0x6ceafc,null));};var interaction_log=require(_0xfa3e('0x11'))(_0xfa3e('0x58'));exports[_0xfa3e('0x59')]=function(_0x4406db,_0x3e6b41,_0x5c24ea){var _0x2ca35f={'agent':{},'channel':'fax'};if(_0x4406db['body']['id']){delete _0x4406db['body']['id'];}_0x4406db[_0xfa3e('0x56')][_0xfa3e('0x5a')]=!![];_0x4406db[_0xfa3e('0x56')]['readAt']=moment()[_0xfa3e('0x5b')](_0xfa3e('0x5c'));_0x4406db[_0xfa3e('0x56')]['UserId']=_0x4406db[_0xfa3e('0x56')][_0xfa3e('0x5d')]||_0x4406db[_0xfa3e('0x5e')]['id'];_0x2ca35f['agent']['id']=_0x4406db[_0xfa3e('0x56')][_0xfa3e('0x5d')];return db['FaxMessage'][_0xfa3e('0x55')]({'where':{'id':_0x4406db[_0xfa3e('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3e6b41,null))[_0xfa3e('0x1e')](saveUpdates(_0x4406db['body'],null))['then'](function(_0x17cf80){if(_0x17cf80){_0x2ca35f[_0xfa3e('0x25')]=_0x17cf80[_0xfa3e('0x5f')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x17cf80[_0xfa3e('0x60')]}});}return null;})[_0xfa3e('0x1e')](handleEntityNotFound(_0x3e6b41,null))[_0xfa3e('0x1e')](function(_0x4a71cf){if(_0x4a71cf){return _0x4a71cf['update']({'UserId':_0x4406db['body'][_0xfa3e('0x5d')],'read1stAt':_[_0xfa3e('0x61')](_0x4a71cf['read1stAt'])?moment()[_0xfa3e('0x5b')](_0xfa3e('0x5c')):undefined});}return null;})[_0xfa3e('0x1e')](function(_0x28e566){if(_0x28e566){_0x2ca35f[_0xfa3e('0x62')]=_0x28e566[_0xfa3e('0x5f')]({'plain':!![]});interaction_log[_0xfa3e('0x1f')](_0xfa3e('0x63'),_0x4406db[_0xfa3e('0x5e')]['id'],_0x4406db[_0xfa3e('0x5e')]['name'],_0x4406db[_0xfa3e('0x5e')][_0xfa3e('0x64')],_0x2ca35f[_0xfa3e('0x62')]['id'],_0x4406db[_0xfa3e('0x56')]?JSON['stringify'](_0x4406db[_0xfa3e('0x56')]):_0xfa3e('0x65'));return respondWithRpcPromise(_0xfa3e('0x66'),_0xfa3e('0x67'),_0x2ca35f);}return null;})[_0xfa3e('0x1e')](function(_0x11d213){var _0x30554d=_0xfa3e('0x68')+_0x11d213[_0xfa3e('0x25')]['ContactId'];return db[_0xfa3e('0x69')][_0xfa3e('0x3e')](_0x30554d,{'type':db[_0xfa3e('0x6a')][_0xfa3e('0x6b')]['SELECT'],'raw':!![]})[_0xfa3e('0x1e')](function(_0xf51db4){return _0xf51db4;});})[_0xfa3e('0x1e')](function(_0x2b8bd2){if(_0x2b8bd2){_0x2ca35f[_0xfa3e('0x25')]['contact']=_0x2b8bd2[0x0];if(!_0x4406db['body'][_0xfa3e('0x5d')])return;return db['User'][_0xfa3e('0x55')]({'where':{'id':_0x4406db[_0xfa3e('0x56')][_0xfa3e('0x5d')],'role':_0xfa3e('0x6c')},'attributes':['id',_0xfa3e('0x34'),'fullname',_0xfa3e('0x6d'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2e5976){if(!_0x2e5976)return null;_0x2ca35f['message'][_0xfa3e('0x6c')]=_0x2e5976;return _0x2ca35f;})['then'](function(_0x4f5af0){if(_0x4f5af0){if(_0x4406db['body'][_0xfa3e('0x6e')]){_0x2ca35f['message'][_0xfa3e('0x6f')]=util[_0xfa3e('0x5b')](_0xfa3e('0x70'),_0x4406db[_0xfa3e('0x5e')][_0xfa3e('0x34')]);_0x2ca35f['message']['channel']=_0x2ca35f['channel'];_0x2ca35f[_0xfa3e('0x25')][_0xfa3e('0x71')]=_0x2ca35f[_0xfa3e('0x72')];_0x2ca35f['message'][_0xfa3e('0x73')]=_0xfa3e('0x59');return respondWithRpcPromise('EventManager','EventManager',{'event':_0xfa3e('0x74'),'message':_0x2ca35f[_0xfa3e('0x25')]},client9002)[_0xfa3e('0x1e')](function(){return _0x2ca35f;});}return _0x2ca35f;}return null;})[_0xfa3e('0x1e')](respondWithResult(_0x3e6b41,null))[_0xfa3e('0x51')](handleError(_0x3e6b41,null));};var interaction_log=require(_0xfa3e('0x11'))(_0xfa3e('0x58'));exports[_0xfa3e('0x75')]=function(_0x18e76b,_0x202d6a,_0x4e1a8b){var _0x4f7d81={'agent':{},'channel':_0xfa3e('0x76')};if(_0x18e76b[_0xfa3e('0x56')]['id']){delete _0x18e76b[_0xfa3e('0x56')]['id'];}_0x18e76b[_0xfa3e('0x56')]['UserId']=_0x18e76b[_0xfa3e('0x56')][_0xfa3e('0x5d')]||_0x18e76b[_0xfa3e('0x5e')]['id'];_0x4f7d81[_0xfa3e('0x6c')]['id']=_0x18e76b[_0xfa3e('0x56')][_0xfa3e('0x5d')];return db[_0xfa3e('0x38')][_0xfa3e('0x55')]({'where':{'id':_0x18e76b[_0xfa3e('0x53')]['id'],'UserId':null}})[_0xfa3e('0x1e')](handleEntityNotFound(_0x202d6a,null))[_0xfa3e('0x1e')](function(_0x3fb6ef){if(_0x3fb6ef){_0x4f7d81[_0xfa3e('0x25')]=_0x3fb6ef['get']({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x3fb6ef[_0xfa3e('0x60')]}});}return null;})[_0xfa3e('0x1e')](handleEntityNotFound(_0x202d6a,null))[_0xfa3e('0x1e')](function(_0x18a17f){if(_0x18a17f){_0x4f7d81['interaction']=_0x18a17f[_0xfa3e('0x5f')]({'plain':!![]});interaction_log[_0xfa3e('0x1f')](_0xfa3e('0x77'),_0x18e76b['user']['id'],_0x18e76b[_0xfa3e('0x5e')]['name'],_0x18e76b[_0xfa3e('0x5e')][_0xfa3e('0x64')],_0x4f7d81['interaction']['id'],_0x18e76b[_0xfa3e('0x56')]?JSON[_0xfa3e('0x23')](_0x18e76b[_0xfa3e('0x56')]):'null');return respondWithRpcPromise(_0xfa3e('0x78'),_0xfa3e('0x79'),_0x4f7d81);}return null;})['then'](function(_0x36dce0){var _0x8b9c06=_0xfa3e('0x68')+_0x36dce0[_0xfa3e('0x25')][_0xfa3e('0x7a')];return db[_0xfa3e('0x69')]['query'](_0x8b9c06,{'type':db[_0xfa3e('0x6a')][_0xfa3e('0x6b')]['SELECT'],'raw':!![]})[_0xfa3e('0x1e')](function(_0x219771){return _0x219771;});})[_0xfa3e('0x1e')](function(_0xa45d5b){if(_0xa45d5b){_0x4f7d81['message'][_0xfa3e('0x7b')]=_0xa45d5b[0x0];if(!_0x18e76b[_0xfa3e('0x56')]['UserId'])return;return db[_0xfa3e('0x7c')][_0xfa3e('0x55')]({'where':{'id':_0x18e76b[_0xfa3e('0x56')]['UserId'],'role':_0xfa3e('0x6c')},'attributes':['id',_0xfa3e('0x34'),'fullname',_0xfa3e('0x6d'),_0xfa3e('0x7d')],'raw':!![]});}return null;})['then'](function(_0x5f059f){if(!_0x5f059f)return null;_0x4f7d81['message']['agent']=_0x5f059f;return _0x4f7d81;})['then'](function(_0x1ed274){if(_0x1ed274){_0x1ed274[_0xfa3e('0x25')][_0xfa3e('0x6f')]=util[_0xfa3e('0x5b')](_0xfa3e('0x70'),_0x18e76b[_0xfa3e('0x5e')][_0xfa3e('0x34')]);_0x1ed274['message'][_0xfa3e('0x72')]=_0x4f7d81[_0xfa3e('0x72')];_0x1ed274['message'][_0xfa3e('0x71')]=_0x4f7d81[_0xfa3e('0x72')];_0x1ed274['message'][_0xfa3e('0x73')]='reject';respondWithRpcPromise(_0xfa3e('0x7e'),'EventManager',{'event':'rejectmessage','message':_0x1ed274[_0xfa3e('0x25')]},client9002);return _0x4f7d81;}return null;})[_0xfa3e('0x1e')](respondWithResult(_0x202d6a,null))[_0xfa3e('0x51')](handleError(_0x202d6a,null));};exports[_0xfa3e('0x7f')]=function(_0x2b3f1d,_0x11252c){var _0x511991;return db['FaxMessage'][_0xfa3e('0x7f')](_0x2b3f1d['body'],{})[_0xfa3e('0x1e')](function(_0x4863c8){_0x511991=_0x4863c8;return db[_0xfa3e('0x80')]['findOne']({'where':{'id':_0x511991['ContactId']}});})[_0xfa3e('0x1e')](function(_0x45bc92){if(_[_0xfa3e('0x61')](_0x45bc92)){return;}else{_0x511991['fax']=_0x45bc92[_0xfa3e('0x76')];return db[_0xfa3e('0x81')]['findOne']({'where':{'id':_0x511991[_0xfa3e('0x82')]}});}})[_0xfa3e('0x1e')](function(_0x2b346f){return respondWithRpcPromise(_0xfa3e('0x83'),_0xfa3e('0x83'),{'FaxAccountId':_['isNil'](_0x2b3f1d[_0xfa3e('0x56')])?undefined:_0x2b3f1d['body'][_0xfa3e('0x84')],'path':_['isNil'](_0x2b346f)?undefined:util[_0xfa3e('0x5b')](_0xfa3e('0x85'),_0x2b346f[_0xfa3e('0x86')]),'fax':_[_0xfa3e('0x61')](_0x511991[_0xfa3e('0x76')])?undefined:_0x511991[_0xfa3e('0x76')],'AttachmentId':_0x511991[_0xfa3e('0x82')]},client9002);})[_0xfa3e('0x1e')](respondWithResult(_0x11252c,0xc9))[_0xfa3e('0x51')](handleError(_0x11252c,null));};exports[_0xfa3e('0x87')]=function(_0x28f0fb,_0x385418){var _0x32e4bd=path[_0xfa3e('0x88')](config[_0xfa3e('0x89')],_0xfa3e('0x8a'),'files',_0xfa3e('0x8b'));return db[_0xfa3e('0x38')]['find']({'where':{'id':_0x28f0fb[_0xfa3e('0x53')]['id']},'include':[{'model':db[_0xfa3e('0x81')],'as':_0xfa3e('0x81')}]})[_0xfa3e('0x1e')](handleEntityNotFound(_0x385418,null))['then'](function(_0x51fc92){if(_0x51fc92){return _0x385418[_0xfa3e('0x87')](path['join'](_0x32e4bd,_0x51fc92['Attachment'][_0xfa3e('0x86')]));}})[_0xfa3e('0x51')](handleError(_0x385418,null));};
\ No newline at end of file
index 84e7e64..3f651b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['events','../../mysqldb','remove','emit','hasOwnProperty','exports'];(function(_0x562d1f,_0x27e6b5){var _0x103ed8=function(_0x2b946b){while(--_0x2b946b){_0x562d1f['push'](_0x562d1f['shift']());}};_0x103ed8(++_0x27e6b5);}(_0xed1c,0xe4));var _0xced1=function(_0x351e1c,_0x7b7399){_0x351e1c=_0x351e1c-0x0;var _0x15f583=_0xed1c[_0x351e1c];return _0x15f583;};'use strict';var EventEmitter=require(_0xced1('0x0'));var FaxMessage=require(_0xced1('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xced1('0x2')};function emitEvent(_0x329a0a){return function(_0x79202e,_0x47a45c,_0x1e23a9){FaxMessageEvents[_0xced1('0x3')](_0x329a0a+':'+_0x79202e['id'],_0x79202e);FaxMessageEvents[_0xced1('0x3')](_0x329a0a,_0x79202e);_0x1e23a9(null);};}for(var e in events){if(events[_0xced1('0x4')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xced1('0x5')]=FaxMessageEvents;
\ No newline at end of file
+var _0x6a0b=['save','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners'];(function(_0x4a5bb1,_0x46625f){var _0x505d38=function(_0x41deb8){while(--_0x41deb8){_0x4a5bb1['push'](_0x4a5bb1['shift']());}};_0x505d38(++_0x46625f);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x4bfd39,_0x464fe2){_0x4bfd39=_0x4bfd39-0x0;var _0x16f633=_0x6a0b[_0x4bfd39];return _0x16f633;};'use strict';var EventEmitter=require(_0xb6a0('0x0'));var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xb6a0('0x1')](0x0);var events={'afterCreate':_0xb6a0('0x2'),'afterUpdate':'update','afterDestroy':_0xb6a0('0x3')};function emitEvent(_0x3e5b73){return function(_0x1505b1,_0x557a99,_0x4652da){FaxMessageEvents['emit'](_0x3e5b73+':'+_0x1505b1['id'],_0x1505b1);FaxMessageEvents[_0xb6a0('0x4')](_0x3e5b73,_0x1505b1);_0x4652da(null);};}for(var e in events){if(events[_0xb6a0('0x5')](e)){var event=events[e];FaxMessage[_0xb6a0('0x6')](e,emitEvent(event));}}module[_0xb6a0('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 3e07ff9..9166c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cee=['api','moment','bluebird','request-promise','path','rimraf','./faxMessage.attributes','define','FaxMessage','fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','FaxInteractionId','then','update','catch','error','utf8mb4','lodash','util'];(function(_0x2b2230,_0xe48d8e){var _0x20cd54=function(_0xd1b6f){while(--_0xd1b6f){_0x2b2230['push'](_0x2b2230['shift']());}};_0x20cd54(++_0xe48d8e);}(_0x7cee,0x1c9));var _0xe7ce=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x7cee[_0x4b7895];return _0x264180;};'use strict';var _=require(_0xe7ce('0x0'));var util=require(_0xe7ce('0x1'));var logger=require('../../config/logger')(_0xe7ce('0x2'));var moment=require(_0xe7ce('0x3'));var BPromise=require(_0xe7ce('0x4'));var rp=require(_0xe7ce('0x5'));var fs=require('fs');var path=require(_0xe7ce('0x6'));var rimraf=require(_0xe7ce('0x7'));var config=require('../../config/environment');var attributes=require(_0xe7ce('0x8'));module['exports']=function(_0x1b0685,_0x52484f){return _0x1b0685[_0xe7ce('0x9')](_0xe7ce('0xa'),attributes,{'tableName':_0xe7ce('0xb'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0xe7ce('0xc')],'type':_0xe7ce('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2596d6,_0x1be009,_0x10a99c){var _0x24d120=_0x1b0685[_0xe7ce('0xe')];var _0x23a435=_0x2596d6[_0xe7ce('0xf')]({'plain':!![]});if(_0x23a435[_0xe7ce('0x10')][_0xe7ce('0x11')]()==='in'||_0x23a435[_0xe7ce('0x10')]['toLowerCase']()===_0xe7ce('0x12')&&!_0x23a435['secret']&&!_[_0xe7ce('0x13')](_0x23a435[_0xe7ce('0x14')])){_0x24d120['FaxInteraction']['findOne']({'where':{'id':_0x23a435[_0xe7ce('0x15')]}})[_0xe7ce('0x16')](function(_0x2f7bdc){if(_0x2f7bdc){_0x2f7bdc[_0xe7ce('0x17')]({'lastMsgAt':_0x23a435['createdAt'],'lastMsgDirection':_0x23a435[_0xe7ce('0x10')][_0xe7ce('0x11')]()});}})[_0xe7ce('0x18')](function(_0x2ca481){console[_0xe7ce('0x19')](_0x2ca481);});}_0x10a99c();}},'charset':_0xe7ce('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4d83=['rimraf','../../config/environment','./faxMessage.attributes','exports','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','FaxInteractionId','then','update','createdAt','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0xdf6d05,_0x3a02e3){var _0x20cf48=function(_0x33152){while(--_0x33152){_0xdf6d05['push'](_0xdf6d05['shift']());}};_0x20cf48(++_0x3a02e3);}(_0x4d83,0x107));var _0x34d8=function(_0x4ba94c,_0x4b7e77){_0x4ba94c=_0x4ba94c-0x0;var _0x205a9d=_0x4d83[_0x4ba94c];return _0x205a9d;};'use strict';var _=require(_0x34d8('0x0'));var util=require(_0x34d8('0x1'));var logger=require(_0x34d8('0x2'))('api');var moment=require(_0x34d8('0x3'));var BPromise=require(_0x34d8('0x4'));var rp=require(_0x34d8('0x5'));var fs=require('fs');var path=require(_0x34d8('0x6'));var rimraf=require(_0x34d8('0x7'));var config=require(_0x34d8('0x8'));var attributes=require(_0x34d8('0x9'));module[_0x34d8('0xa')]=function(_0x38fa3a,_0x276f5e){return _0x38fa3a['define'](_0x34d8('0xb'),attributes,{'tableName':_0x34d8('0xc'),'paranoid':![],'indexes':[{'name':_0x34d8('0xd'),'fields':[_0x34d8('0xe')],'type':_0x34d8('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x53b7a7,_0x3283a9,_0x4a206f){var _0x3ec0db=_0x38fa3a[_0x34d8('0x10')];var _0x5d9819=_0x53b7a7[_0x34d8('0x11')]({'plain':!![]});if(_0x5d9819[_0x34d8('0x12')][_0x34d8('0x13')]()==='in'||_0x5d9819[_0x34d8('0x12')]['toLowerCase']()==='out'&&!_0x5d9819[_0x34d8('0x14')]&&!_[_0x34d8('0x15')](_0x5d9819[_0x34d8('0x16')])){_0x3ec0db['FaxInteraction'][_0x34d8('0x17')]({'where':{'id':_0x5d9819[_0x34d8('0x18')]}})[_0x34d8('0x19')](function(_0x4020f9){if(_0x4020f9){_0x4020f9[_0x34d8('0x1a')]({'lastMsgAt':_0x5d9819[_0x34d8('0x1b')],'lastMsgDirection':_0x5d9819[_0x34d8('0x12')][_0x34d8('0x13')]()});}})['catch'](function(_0x22cd17){console[_0x34d8('0x1c')](_0x22cd17);});}_0x4a206f();}},'charset':'utf8mb4','collate':_0x34d8('0x1d')});};
\ No newline at end of file
index 9191e84..6e3b38c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','code','error','message','catch','CreateFaxMessage','FaxMessage','body','options','raw','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x55ca,0x126));var _0xa55c=function(_0x4d3924,_0x327b56){_0x4d3924=_0x4d3924-0x0;var _0x844555=_0x55ca[_0x4d3924];return _0x844555;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});config[_0xa55c('0xa')]=_['defaults'](config[_0xa55c('0xa')],{'host':_0xa55c('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0xa')]));require(_0xa55c('0xc'))['register'](socket);function respondWithRpcPromise(_0x5849ad,_0x473d0e,_0x20c76a){return new BPromise(function(_0x381d07,_0x5d8e5a){return client[_0xa55c('0xd')](_0x5849ad,_0x20c76a)[_0xa55c('0xe')](function(_0x508342){logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x473d0e,_0xa55c('0x11'),JSON['stringify'](_0x508342));if(_0x508342['error']){if(_0x508342['error'][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x5d8e5a(_0x508342[_0xa55c('0x13')]['message']);}logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x381d07(_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);}else{logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));_0x381d07(_0x508342['result'][_0xa55c('0x14')]);}})[_0xa55c('0x15')](function(_0x461284){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x461284);_0x5d8e5a(_0x461284);});});}exports[_0xa55c('0x16')]=function(_0x4c0daf){var _0x5f5158=this;return new Promise(function(_0xd643cc,_0x3776ac){return db[_0xa55c('0x17')]['create'](_0x4c0daf[_0xa55c('0x18')],{'raw':_0x4c0daf[_0xa55c('0x19')]?_0x4c0daf['options'][_0xa55c('0x1a')]===undefined?!![]:![]:!![]})[_0xa55c('0xe')](function(_0x940f28){logger[_0xa55c('0xf')](_0xa55c('0x16'),_0x4c0daf);logger['debug'](_0xa55c('0x16'),_0x4c0daf,JSON['stringify'](_0x940f28));_0xd643cc(_0x940f28);})['catch'](function(_0x59d89a){logger[_0xa55c('0x13')]('CreateFaxMessage',_0x59d89a[_0xa55c('0x14')],_0x4c0daf);_0x3776ac(_0x5f5158[_0xa55c('0x13')](0x1f4,_0x59d89a[_0xa55c('0x14')]));});});};exports[_0xa55c('0x1b')]=function(_0x2313a9){var _0x170ba4=this;return new Promise(function(_0x1da633,_0x11e7f7){return db[_0xa55c('0x17')][_0xa55c('0x1c')](_0x2313a9[_0xa55c('0x18')],{'raw':_0x2313a9['options']?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')]['where']||null:null,'attributes':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1d')]||null:null,'limit':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1e')]||null:null})['then'](function(_0x23e698){logger['info'](_0xa55c('0x1b'),_0x2313a9);logger[_0xa55c('0x1f')](_0xa55c('0x1b'),_0x2313a9,JSON[_0xa55c('0x20')](_0x23e698));_0x1da633(_0x23e698);})['catch'](function(_0x3d28fb){logger[_0xa55c('0x13')](_0xa55c('0x1b'),_0x3d28fb[_0xa55c('0x14')],_0x2313a9);_0x11e7f7(_0x170ba4[_0xa55c('0x13')](0x1f4,_0x3d28fb[_0xa55c('0x14')]));});});};
\ No newline at end of file
+var _0xbd50=['request','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateFaxMessage','options','raw','then','UpdateFaxMessage','FaxMessage','update','body','where','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','./faxMessage.socket','register'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xbd50,0x196));var _0x0bd5=function(_0x394de2,_0x42e580){_0x394de2=_0x394de2-0x0;var _0x38f3b7=_0xbd50[_0x394de2];return _0x38f3b7;};'use strict';var _=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var moment=require(_0x0bd5('0x2'));var BPromise=require('bluebird');var rs=require(_0x0bd5('0x3'));var fs=require('fs');var Redis=require(_0x0bd5('0x4'));var db=require(_0x0bd5('0x5'))['db'];var utils=require(_0x0bd5('0x6'));var logger=require(_0x0bd5('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0bd5('0x8')][_0x0bd5('0x9')]({'port':0x232a});config[_0x0bd5('0xa')]=_[_0x0bd5('0xb')](config[_0x0bd5('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0bd5('0xa')]));require(_0x0bd5('0xc'))[_0x0bd5('0xd')](socket);function respondWithRpcPromise(_0x5f5a0c,_0xa98f54,_0x2fa7d1){return new BPromise(function(_0x519bc6,_0x210f45){return client[_0x0bd5('0xe')](_0x5f5a0c,_0x2fa7d1)['then'](function(_0x1ce7dd){logger[_0x0bd5('0xf')](_0x0bd5('0x10'),_0xa98f54,'request\x20sent');logger[_0x0bd5('0x11')](_0x0bd5('0x12'),_0xa98f54,_0x0bd5('0x13'),JSON[_0x0bd5('0x14')](_0x1ce7dd));if(_0x1ce7dd[_0x0bd5('0x15')]){if(_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x16')]===0x1f4){logger[_0x0bd5('0x15')]('FaxMessage,\x20%s,\x20%s',_0xa98f54,_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x17')]);return _0x210f45(_0x1ce7dd['error'][_0x0bd5('0x17')]);}logger[_0x0bd5('0x15')](_0x0bd5('0x10'),_0xa98f54,_0x1ce7dd[_0x0bd5('0x15')]['message']);return _0x519bc6(_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x17')]);}else{logger[_0x0bd5('0xf')](_0x0bd5('0x10'),_0xa98f54,_0x0bd5('0x13'));_0x519bc6(_0x1ce7dd[_0x0bd5('0x18')][_0x0bd5('0x17')]);}})[_0x0bd5('0x19')](function(_0x29fa4c){logger[_0x0bd5('0x15')](_0x0bd5('0x10'),_0xa98f54,_0x29fa4c);_0x210f45(_0x29fa4c);});});}exports[_0x0bd5('0x1a')]=function(_0x4008bd){var _0x2dc1e5=this;return new Promise(function(_0x527c37,_0x5ba943){return db['FaxMessage']['create'](_0x4008bd['body'],{'raw':_0x4008bd[_0x0bd5('0x1b')]?_0x4008bd[_0x0bd5('0x1b')][_0x0bd5('0x1c')]===undefined?!![]:![]:!![]})[_0x0bd5('0x1d')](function(_0x6ee1a8){logger['info'](_0x0bd5('0x1a'),_0x4008bd);logger[_0x0bd5('0x11')](_0x0bd5('0x1a'),_0x4008bd,JSON['stringify'](_0x6ee1a8));_0x527c37(_0x6ee1a8);})[_0x0bd5('0x19')](function(_0x4a8787){logger['error'](_0x0bd5('0x1a'),_0x4a8787[_0x0bd5('0x17')],_0x4008bd);_0x5ba943(_0x2dc1e5[_0x0bd5('0x15')](0x1f4,_0x4a8787['message']));});});};exports[_0x0bd5('0x1e')]=function(_0x5eab3e){var _0x456e87=this;return new Promise(function(_0x3ffb08,_0x18cec3){return db[_0x0bd5('0x1f')][_0x0bd5('0x20')](_0x5eab3e[_0x0bd5('0x21')],{'raw':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')][_0x0bd5('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')][_0x0bd5('0x22')]||null:null,'attributes':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')]['attributes']||null:null,'limit':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')]['limit']||null:null})[_0x0bd5('0x1d')](function(_0x8eccc9){logger['info'](_0x0bd5('0x1e'),_0x5eab3e);logger[_0x0bd5('0x11')](_0x0bd5('0x1e'),_0x5eab3e,JSON[_0x0bd5('0x14')](_0x8eccc9));_0x3ffb08(_0x8eccc9);})['catch'](function(_0x440e69){logger[_0x0bd5('0x15')](_0x0bd5('0x1e'),_0x440e69[_0x0bd5('0x17')],_0x5eab3e);_0x18cec3(_0x456e87[_0x0bd5('0x15')](0x1f4,_0x440e69[_0x0bd5('0x17')]));});});};
\ No newline at end of file
index ee56150..58f731c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa245=['update','register','length','faxMessage:','./faxMessage.events','save','remove'];(function(_0x36ed80,_0x102296){var _0x418c68=function(_0x2a91fc){while(--_0x2a91fc){_0x36ed80['push'](_0x36ed80['shift']());}};_0x418c68(++_0x102296);}(_0xa245,0xf9));var _0x5a24=function(_0x3327c1,_0x3191ec){_0x3327c1=_0x3327c1-0x0;var _0x33c873=_0xa245[_0x3327c1];return _0x33c873;};'use strict';var FaxMessageEvents=require(_0x5a24('0x0'));var events=[_0x5a24('0x1'),_0x5a24('0x2'),_0x5a24('0x3')];function createListener(_0x24ff3d,_0x4ce1c8){return function(_0x4c7319){_0x4ce1c8['emit'](_0x24ff3d,_0x4c7319);};}function removeListener(_0x1a0ee6,_0x569cc7){return function(){FaxMessageEvents['removeListener'](_0x1a0ee6,_0x569cc7);};}exports[_0x5a24('0x4')]=function(_0x5512e9){for(var _0x50ffa0=0x0,_0x31d0ad=events[_0x5a24('0x5')];_0x50ffa0<_0x31d0ad;_0x50ffa0++){var _0x101824=events[_0x50ffa0];var _0x55b229=createListener(_0x5a24('0x6')+_0x101824,_0x5512e9);FaxMessageEvents['on'](_0x101824,_0x55b229);}};
\ No newline at end of file
+var _0x2244=['register','length','faxMessage:','./faxMessage.events','update','emit'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x2244,0x9f));var _0x4224=function(_0xb9eaf8,_0x351196){_0xb9eaf8=_0xb9eaf8-0x0;var _0x12e0ce=_0x2244[_0xb9eaf8];return _0x12e0ce;};'use strict';var FaxMessageEvents=require(_0x4224('0x0'));var events=['save','remove',_0x4224('0x1')];function createListener(_0x104f34,_0x43899d){return function(_0x239615){_0x43899d[_0x4224('0x2')](_0x104f34,_0x239615);};}function removeListener(_0x36e101,_0x658c40){return function(){FaxMessageEvents['removeListener'](_0x36e101,_0x658c40);};}exports[_0x4224('0x3')]=function(_0x3166fb){for(var _0x19bcc8=0x0,_0x5b6872=events[_0x4224('0x4')];_0x19bcc8<_0x5b6872;_0x19bcc8++){var _0xa9c368=events[_0x19bcc8];var _0x4b17bd=createListener(_0x4224('0x5')+_0xa9c368,_0x3166fb);FaxMessageEvents['on'](_0xa9c368,_0x4b17bd);}};
\ No newline at end of file
index cbc5e36..d1688ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2c=['/describe','describe','show','/:id/download','download','post','fax','faxmessage:create','create','put','/:id','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index'];(function(_0x5c49cd,_0x65096c){var _0x4204e0=function(_0x30767f){while(--_0x30767f){_0x5c49cd['push'](_0x5c49cd['shift']());}};_0x4204e0(++_0x65096c);}(_0xde2c,0x7f));var _0xcde2=function(_0x409deb,_0x2b731){_0x409deb=_0x409deb-0x0;var _0x15a4f7=_0xde2c[_0x409deb];return _0x15a4f7;};'use strict';var multer=require(_0xcde2('0x0'));var util=require(_0xcde2('0x1'));var path=require(_0xcde2('0x2'));var timeout=require(_0xcde2('0x3'));var express=require(_0xcde2('0x4'));var router=express[_0xcde2('0x5')]();var fs_extra=require(_0xcde2('0x6'));var auth=require(_0xcde2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xcde2('0x8'));var controller=require(_0xcde2('0x9'));router[_0xcde2('0xa')]('/',auth[_0xcde2('0xb')](),controller[_0xcde2('0xc')]);router['get'](_0xcde2('0xd'),auth[_0xcde2('0xb')](),controller[_0xcde2('0xe')]);router['get']('/:id',auth[_0xcde2('0xb')](),controller[_0xcde2('0xf')]);router['get'](_0xcde2('0x10'),auth[_0xcde2('0xb')](),controller[_0xcde2('0x11')]);router[_0xcde2('0x12')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xcde2('0x13'),_0xcde2('0x14')),controller[_0xcde2('0x15')]);router[_0xcde2('0x16')](_0xcde2('0x17'),auth[_0xcde2('0xb')](),controller['update']);router[_0xcde2('0x16')]('/:id/accept',auth[_0xcde2('0xb')](),controller['accept']);router['put'](_0xcde2('0x18'),auth[_0xcde2('0xb')](),controller[_0xcde2('0x19')]);router[_0xcde2('0x1a')](_0xcde2('0x17'),auth['isAuthenticated'](),controller[_0xcde2('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x3c81=['show','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','reject','destroy','exports','multer','util','connect-timeout','express','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x2f24e9,_0x3865bf){var _0x4330bf=function(_0x558955){while(--_0x558955){_0x2f24e9['push'](_0x2f24e9['shift']());}};_0x4330bf(++_0x3865bf);}(_0x3c81,0x102));var _0x13c8=function(_0x32506c,_0x2c89cb){_0x32506c=_0x32506c-0x0;var _0x2c60d6=_0x3c81[_0x32506c];return _0x2c60d6;};'use strict';var multer=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var path=require('path');var timeout=require(_0x13c8('0x2'));var express=require(_0x13c8('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(_0x13c8('0x4'));var controller=require(_0x13c8('0x5'));router[_0x13c8('0x6')]('/',auth[_0x13c8('0x7')](),controller[_0x13c8('0x8')]);router[_0x13c8('0x6')](_0x13c8('0x9'),auth['isAuthenticated'](),controller[_0x13c8('0xa')]);router['get'](_0x13c8('0xb'),auth[_0x13c8('0x7')](),controller[_0x13c8('0xc')]);router[_0x13c8('0x6')](_0x13c8('0xd'),auth[_0x13c8('0x7')](),controller[_0x13c8('0xe')]);router[_0x13c8('0xf')]('/',auth[_0x13c8('0x7')](),interaction[_0x13c8('0x10')](_0x13c8('0x11'),_0x13c8('0x12')),controller[_0x13c8('0x13')]);router[_0x13c8('0x14')]('/:id',auth[_0x13c8('0x7')](),controller[_0x13c8('0x15')]);router[_0x13c8('0x14')](_0x13c8('0x16'),auth['isAuthenticated'](),controller[_0x13c8('0x17')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0x13c8('0x18')]);router['delete'](_0x13c8('0xb'),auth[_0x13c8('0x7')](),controller[_0x13c8('0x19')]);module[_0x13c8('0x1a')]=router;
\ No newline at end of file
index 07450c9..1ed67c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b2=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x3c4a0d,_0xc15681){var _0x15a594=function(_0xc69818){while(--_0xc69818){_0x3c4a0d['push'](_0x3c4a0d['shift']());}};_0x15a594(++_0xc15681);}(_0x26b2,0xc5));var _0x226b=function(_0x5f1746,_0x495af0){_0x5f1746=_0x5f1746-0x0;var _0x3cd40c=_0x26b2[_0x5f1746];return _0x3cd40c;};'use strict';var Sequelize=require(_0x226b('0x0'));module[_0x226b('0x1')]={'name':{'type':Sequelize[_0x226b('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x226b('0x2')]},'timeout':{'type':Sequelize[_0x226b('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x226b('0x4')](_0x226b('0x5'),_0x226b('0x6'),_0x226b('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x226b('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc4b8=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','name'];(function(_0x11deef,_0x34bbdb){var _0xe9ba85=function(_0x591377){while(--_0x591377){_0x11deef['push'](_0x11deef['shift']());}};_0xe9ba85(++_0x34bbdb);}(_0xc4b8,0x1ed));var _0x8c4b=function(_0x1cbf32,_0x1fcbb1){_0x1cbf32=_0x1cbf32-0x0;var _0x4bfe13=_0xc4b8[_0x1cbf32];return _0x4bfe13;};'use strict';var Sequelize=require(_0x8c4b('0x0'));module[_0x8c4b('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x8c4b('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x8c4b('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8c4b('0x4')](_0x8c4b('0x5'),_0x8c4b('0x6'),_0x8c4b('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x8c4b('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index b4e3f40..6c91de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca9b=['../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','error','stack','name','send','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','FaxQueue','rows','show','params','include','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','FaxQueueId','findAll','findAndCountAll','UserId','faxPause','updatedAt','createdAt','SIP','getTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','addTeams','findOrCreate','forEach','userFaxQueue:save','removeTeams','User','select','field','from','team_has_fax_queues','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','union','compact','value','find','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xca9b,0x194));var _0xbca9=function(_0x359d4e,_0x50e813){_0x359d4e=_0x359d4e-0x0;var _0xee27f=_0xca9b[_0x359d4e];return _0xee27f;};'use strict';var emlformat=require(_0xbca9('0x0'));var rimraf=require(_0xbca9('0x1'));var zipdir=require(_0xbca9('0x2'));var jsonpatch=require(_0xbca9('0x3'));var rp=require(_0xbca9('0x4'));var moment=require('moment');var BPromise=require(_0xbca9('0x5'));var Mustache=require('mustache');var util=require(_0xbca9('0x6'));var path=require(_0xbca9('0x7'));var sox=require(_0xbca9('0x8'));var csv=require('to-csv');var ejs=require(_0xbca9('0x9'));var fs=require('fs');var fs_extra=require(_0xbca9('0xa'));var _=require(_0xbca9('0xb'));var squel=require(_0xbca9('0xc'));var crypto=require(_0xbca9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbca9('0xe'));var toCsv=require(_0xbca9('0xf'));var querystring=require(_0xbca9('0x10'));var Papa=require(_0xbca9('0x11'));var Redis=require(_0xbca9('0x12'));var authService=require(_0xbca9('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xbca9('0x14'));var hardwareService=require(_0xbca9('0x15'));var logger=require(_0xbca9('0x16'))('api');var utils=require(_0xbca9('0x17'));var config=require(_0xbca9('0x18'));var licenseUtil=require(_0xbca9('0x19'));var db=require(_0xbca9('0x1a'))['db'];config[_0xbca9('0x1b')]=_['defaults'](config['redis'],{'host':_0xbca9('0x1c'),'port':0x18eb});var socket=require(_0xbca9('0x1d'))(new Redis(config[_0xbca9('0x1b')]));require(_0xbca9('0x1e'))[_0xbca9('0x1f')](socket);function respondWithStatusCode(_0x5a8a0e,_0xda2800){_0xda2800=_0xda2800||0xcc;return function(_0x2c0b75){if(_0x2c0b75){return _0x5a8a0e[_0xbca9('0x20')](_0xda2800);}return _0x5a8a0e[_0xbca9('0x21')](_0xda2800)[_0xbca9('0x22')]();};}function respondWithResult(_0x50e523,_0x5717f8){_0x5717f8=_0x5717f8||0xc8;return function(_0x2f4260){if(_0x2f4260){return _0x50e523['status'](_0x5717f8)[_0xbca9('0x23')](_0x2f4260);}};}function respondWithFilteredResult(_0x4f1d85,_0x4a2763){return function(_0x25aa09){if(_0x25aa09){var _0x16b2e5=typeof _0x4a2763[_0xbca9('0x24')]===_0xbca9('0x25')&&typeof _0x4a2763['limit']==='undefined';var _0x5d37c9=_0x25aa09[_0xbca9('0x26')];var _0x4a70f5=_0x16b2e5?0x0:_0x4a2763[_0xbca9('0x24')];var _0x3f30de=_0x16b2e5?_0x25aa09[_0xbca9('0x26')]:_0x4a2763[_0xbca9('0x24')]+_0x4a2763[_0xbca9('0x27')];var _0x356545;if(_0x3f30de>=_0x5d37c9){_0x3f30de=_0x5d37c9;_0x356545=0xc8;}else{_0x356545=0xce;}_0x4f1d85['status'](_0x356545);return _0x4f1d85[_0xbca9('0x28')](_0xbca9('0x29'),_0x4a70f5+'-'+_0x3f30de+'/'+_0x5d37c9)[_0xbca9('0x23')](_0x25aa09);}return null;};}function patchUpdates(_0x1c32aa){return function(_0xb27105){try{jsonpatch[_0xbca9('0x2a')](_0xb27105,_0x1c32aa,!![]);}catch(_0x4d956e){return BPromise[_0xbca9('0x2b')](_0x4d956e);}return _0xb27105[_0xbca9('0x2c')]();};}function saveUpdates(_0x1404df,_0x3a848c){return function(_0x25a062){if(_0x25a062){return _0x25a062[_0xbca9('0x2d')](_0x1404df)[_0xbca9('0x2e')](function(_0x281a18){return _0x281a18;});}return null;};}function removeEntity(_0x4a0f66,_0x4e8463){return function(_0x3e02c8){if(_0x3e02c8){return _0x3e02c8[_0xbca9('0x2f')]()[_0xbca9('0x2e')](function(){var _0x14571e=_0x3e02c8[_0xbca9('0x30')]({'plain':!![]});var _0x4076fb=_0xbca9('0x31');return db[_0xbca9('0x32')][_0xbca9('0x2f')]({'where':{'type':_0x4076fb,'resourceId':_0x14571e['id']}})[_0xbca9('0x2e')](function(){return _0x3e02c8;});})['then'](function(){_0x4a0f66[_0xbca9('0x21')](0xcc)[_0xbca9('0x22')]();});}};}function handleEntityNotFound(_0x1f3391,_0x2cf884){return function(_0x43ca6f){if(!_0x43ca6f){_0x1f3391[_0xbca9('0x20')](0x194);}return _0x43ca6f;};}function handleError(_0x1e64f,_0xadcb1e){_0xadcb1e=_0xadcb1e||0x1f4;return function(_0x28d830){logger[_0xbca9('0x33')](_0x28d830[_0xbca9('0x34')]);if(_0x28d830[_0xbca9('0x35')]){delete _0x28d830[_0xbca9('0x35')];}_0x1e64f[_0xbca9('0x21')](_0xadcb1e)[_0xbca9('0x36')](_0x28d830);};}exports['index']=function(_0x13bc84,_0x15293c){var _0x359645={},_0x3c3514={},_0x26f20b={'count':0x0,'rows':[]};var _0x1a3acc=_['map'](db['FaxQueue'][_0xbca9('0x37')],function(_0x52fafa){return{'name':_0x52fafa[_0xbca9('0x38')],'type':_0x52fafa[_0xbca9('0x39')]['key']};});_0x3c3514['model']=_[_0xbca9('0x3a')](_0x1a3acc,_0xbca9('0x35'));_0x3c3514[_0xbca9('0x3b')]=_[_0xbca9('0x3c')](_0x13bc84['query']);_0x3c3514[_0xbca9('0x3d')]=_[_0xbca9('0x3e')](_0x3c3514[_0xbca9('0x3f')],_0x3c3514[_0xbca9('0x3b')]);_0x359645[_0xbca9('0x40')]=_['intersection'](_0x3c3514[_0xbca9('0x3f')],qs[_0xbca9('0x41')](_0x13bc84['query']['fields']));_0x359645[_0xbca9('0x40')]=_0x359645['attributes'][_0xbca9('0x42')]?_0x359645[_0xbca9('0x40')]:_0x3c3514[_0xbca9('0x3f')];if(!_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x43')](_0xbca9('0x44'))){_0x359645[_0xbca9('0x27')]=qs[_0xbca9('0x27')](_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x27')]);_0x359645[_0xbca9('0x24')]=qs[_0xbca9('0x24')](_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x24')]);}_0x359645[_0xbca9('0x45')]=qs[_0xbca9('0x46')](_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x46')]);_0x359645['where']=qs[_0xbca9('0x3d')](_[_0xbca9('0x47')](_0x13bc84[_0xbca9('0x3b')],_0x3c3514[_0xbca9('0x3d')]),_0x1a3acc);if(_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x48')]){_0x359645[_0xbca9('0x49')]=_[_0xbca9('0x4a')](_0x359645[_0xbca9('0x49')],{'$or':_['map'](_0x1a3acc,function(_0x4cb1bc){if(_0x4cb1bc['type']!=='VIRTUAL'){var _0x3b95f3={};_0x3b95f3[_0x4cb1bc[_0xbca9('0x35')]]={'$like':'%'+_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x48')]+'%'};return _0x3b95f3;}})});}_0x359645=_[_0xbca9('0x4a')]({},_0x359645,_0x13bc84[_0xbca9('0x4b')]);var _0x217164={'where':_0x359645[_0xbca9('0x49')]};return db['FaxQueue'][_0xbca9('0x26')](_0x217164)[_0xbca9('0x2e')](function(_0x1a99cd){_0x26f20b[_0xbca9('0x26')]=_0x1a99cd;if(_0x13bc84[_0xbca9('0x3b')][_0xbca9('0x4c')]){_0x359645['include']=[{'all':!![]}];}return db[_0xbca9('0x4d')]['findAll'](_0x359645);})['then'](function(_0x11b418){_0x26f20b[_0xbca9('0x4e')]=_0x11b418;return _0x26f20b;})[_0xbca9('0x2e')](respondWithFilteredResult(_0x15293c,_0x359645))['catch'](handleError(_0x15293c,null));};exports[_0xbca9('0x4f')]=function(_0x2212ec,_0x1a8bb2){var _0xddec98={'raw':!![],'where':{'id':_0x2212ec[_0xbca9('0x50')]['id']}},_0x525bc0={};_0x525bc0[_0xbca9('0x3f')]=_['keys'](db[_0xbca9('0x4d')][_0xbca9('0x37')]);_0x525bc0['query']=_['keys'](_0x2212ec[_0xbca9('0x3b')]);_0x525bc0[_0xbca9('0x3d')]=_['intersection'](_0x525bc0[_0xbca9('0x3f')],_0x525bc0[_0xbca9('0x3b')]);_0xddec98[_0xbca9('0x40')]=_[_0xbca9('0x3e')](_0x525bc0['model'],qs['fields'](_0x2212ec[_0xbca9('0x3b')][_0xbca9('0x41')]));_0xddec98['attributes']=_0xddec98[_0xbca9('0x40')][_0xbca9('0x42')]?_0xddec98['attributes']:_0x525bc0[_0xbca9('0x3f')];if(_0x2212ec[_0xbca9('0x3b')][_0xbca9('0x4c')]){_0xddec98[_0xbca9('0x51')]=[{'all':!![]}];}_0xddec98=_[_0xbca9('0x4a')]({},_0xddec98,_0x2212ec[_0xbca9('0x4b')]);return db[_0xbca9('0x4d')]['find'](_0xddec98)[_0xbca9('0x2e')](handleEntityNotFound(_0x1a8bb2,null))[_0xbca9('0x2e')](respondWithResult(_0x1a8bb2,null))[_0xbca9('0x52')](handleError(_0x1a8bb2,null));};exports[_0xbca9('0x53')]=function(_0xe5b726,_0x45b7ac){return db[_0xbca9('0x4d')][_0xbca9('0x53')](_0xe5b726[_0xbca9('0x54')],{})[_0xbca9('0x2e')](function(_0x302ef4){var _0x253096=_0xe5b726[_0xbca9('0x55')]['get']({'plain':!![]});if(!_0x253096)throw new Error(_0xbca9('0x56'));if(_0x253096[_0xbca9('0x57')]===_0xbca9('0x55')){var _0x5320bf=_0x302ef4[_0xbca9('0x30')]({'plain':!![]});var _0x17a5f4=_0xbca9('0x31');return db[_0xbca9('0x58')]['find']({'where':{'name':_0x17a5f4,'userProfileId':_0x253096[_0xbca9('0x59')]},'raw':!![]})['then'](function(_0x37752f){if(_0x37752f&&_0x37752f[_0xbca9('0x5a')]===0x0){return db['UserProfileResource'][_0xbca9('0x53')]({'name':_0x5320bf['name'],'resourceId':_0x5320bf['id'],'type':_0x37752f[_0xbca9('0x35')],'sectionId':_0x37752f['id']},{})[_0xbca9('0x2e')](function(){return _0x302ef4;});}else{return _0x302ef4;}})[_0xbca9('0x52')](function(_0x413879){logger[_0xbca9('0x33')](_0xbca9('0x5b'),_0x413879);throw _0x413879;});}return _0x302ef4;})['then'](respondWithResult(_0x45b7ac,0xc9))[_0xbca9('0x52')](handleError(_0x45b7ac,null));};exports[_0xbca9('0x2d')]=function(_0x4e77d8,_0x7372ed){if(_0x4e77d8['body']['id']){delete _0x4e77d8[_0xbca9('0x54')]['id'];}return db[_0xbca9('0x4d')]['find']({'where':{'id':_0x4e77d8['params']['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x7372ed,null))[_0xbca9('0x2e')](saveUpdates(_0x4e77d8[_0xbca9('0x54')],null))[_0xbca9('0x2e')](respondWithResult(_0x7372ed,null))['catch'](handleError(_0x7372ed,null));};exports['destroy']=function(_0x3630b6,_0x73b3){return db[_0xbca9('0x4d')]['find']({'where':{'id':_0x3630b6['params']['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x73b3,null))[_0xbca9('0x2e')](removeEntity(_0x73b3,null))[_0xbca9('0x52')](handleError(_0x73b3,null));};exports[_0xbca9('0x5c')]=function(_0x535be2,_0x452240){return db['FaxQueue'][_0xbca9('0x5c')]()[_0xbca9('0x2e')](respondWithResult(_0x452240,null))['catch'](handleError(_0x452240,null));};exports[_0xbca9('0x5d')]=function(_0x86ee23,_0x206c46,_0x389d52){var _0x2966ac={'raw':!![],'where':{}},_0x3a79a4={},_0x3f85f6;return db[_0xbca9('0x4d')][_0xbca9('0x5e')]({'where':{'id':_0x86ee23['params']['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x206c46,null))[_0xbca9('0x2e')](function(_0x3c7922){if(_0x3c7922){_0x3f85f6=_0x3c7922[_0xbca9('0x30')]({'plain':!![]});_0x3a79a4[_0xbca9('0x3f')]=_[_0xbca9('0x3c')](db[_0xbca9('0x5f')][_0xbca9('0x37')]);_0x3a79a4[_0xbca9('0x3b')]=_[_0xbca9('0x3c')](_0x86ee23['query']);_0x3a79a4[_0xbca9('0x3d')]=_['intersection'](_0x3a79a4[_0xbca9('0x3f')],_0x3a79a4[_0xbca9('0x3b')]);_0x2966ac[_0xbca9('0x40')]=_['intersection'](_0x3a79a4[_0xbca9('0x3f')],qs[_0xbca9('0x41')](_0x86ee23['query']['fields']));_0x2966ac[_0xbca9('0x40')]=_0x2966ac[_0xbca9('0x40')][_0xbca9('0x42')]?_0x2966ac[_0xbca9('0x40')]:_0x3a79a4[_0xbca9('0x3f')];if(!_0x86ee23[_0xbca9('0x3b')][_0xbca9('0x43')](_0xbca9('0x44'))){_0x2966ac[_0xbca9('0x27')]=qs[_0xbca9('0x27')](_0x86ee23['query'][_0xbca9('0x27')]);_0x2966ac[_0xbca9('0x24')]=qs[_0xbca9('0x24')](_0x86ee23[_0xbca9('0x3b')][_0xbca9('0x24')]);}_0x2966ac[_0xbca9('0x45')]=qs[_0xbca9('0x46')](_0x86ee23['query'][_0xbca9('0x46')]);_0x2966ac[_0xbca9('0x49')]=qs[_0xbca9('0x3d')](_['pick'](_0x86ee23[_0xbca9('0x3b')],_0x3a79a4['filters']));_0x2966ac['where'][_0xbca9('0x60')]=_0x3c7922['id'];if(_0x86ee23['query'][_0xbca9('0x48')]){_0x2966ac[_0xbca9('0x49')]=_[_0xbca9('0x4a')](_0x2966ac[_0xbca9('0x49')],{'$or':_['map'](_0x2966ac['attributes'],function(_0x329661){var _0x1aedab={};_0x1aedab[_0x329661]={'$like':'%'+_0x86ee23[_0xbca9('0x3b')][_0xbca9('0x48')]+'%'};return _0x1aedab;})});}_0x2966ac=_[_0xbca9('0x4a')]({},_0x2966ac,_0x86ee23[_0xbca9('0x4b')]);return db[_0xbca9('0x5f')][_0xbca9('0x61')](_0x2966ac);}})[_0xbca9('0x2e')](function(_0xae3d44){if(_0xae3d44){return db['User'][_0xbca9('0x62')]({'where':{'id':_[_0xbca9('0x3a')](_0xae3d44,_0xbca9('0x63')),'role':'agent'},'attributes':['id',_0xbca9('0x35'),_0xbca9('0x64'),_0xbca9('0x65'),_0xbca9('0x66')]});}})[_0xbca9('0x2e')](function(_0x49a068){if(_0x49a068){return{'count':_0x49a068[_0xbca9('0x26')],'rows':_['map'](_0x49a068[_0xbca9('0x4e')],function(_0x3646ec){return{'membername':_0x3646ec[_0xbca9('0x35')],'UserId':_0x3646ec['id'],'queue_name':_0x3f85f6['name'],'FaxQueueId':_0x3f85f6['id'],'interface':util['format']('%s/%s',_0xbca9('0x67'),_0x3646ec[_0xbca9('0x35')]),'penalty':0x0,'paused':_0x3646ec[_0xbca9('0x64')],'createdAt':_0x3646ec['createdAt'],'updatedAt':_0x3646ec[_0xbca9('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xbca9('0x2e')](respondWithFilteredResult(_0x206c46,_0x2966ac))['catch'](handleError(_0x206c46,null));};exports['getTeams']=function(_0x1d11df,_0x9896a8,_0x234db9){var _0x54eb05={};var _0x1f1fd0={};var _0x40b38a;var _0x2a9720;return db[_0xbca9('0x4d')][_0xbca9('0x5e')]({'where':{'id':_0x1d11df['params']['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x9896a8,null))[_0xbca9('0x2e')](function(_0x10f762){if(_0x10f762){_0x40b38a=_0x10f762;_0x1f1fd0['model']=_['keys'](db['Team'][_0xbca9('0x37')]);_0x1f1fd0[_0xbca9('0x3b')]=_[_0xbca9('0x3c')](_0x1d11df['query']);_0x1f1fd0[_0xbca9('0x3d')]=_[_0xbca9('0x3e')](_0x1f1fd0[_0xbca9('0x3f')],_0x1f1fd0[_0xbca9('0x3b')]);_0x54eb05[_0xbca9('0x40')]=_[_0xbca9('0x3e')](_0x1f1fd0[_0xbca9('0x3f')],qs[_0xbca9('0x41')](_0x1d11df['query'][_0xbca9('0x41')]));_0x54eb05['attributes']=_0x54eb05[_0xbca9('0x40')]['length']?_0x54eb05['attributes']:_0x1f1fd0[_0xbca9('0x3f')];_0x54eb05['order']=qs[_0xbca9('0x46')](_0x1d11df[_0xbca9('0x3b')][_0xbca9('0x46')]);_0x54eb05['where']=qs['filters'](_[_0xbca9('0x47')](_0x1d11df[_0xbca9('0x3b')],_0x1f1fd0[_0xbca9('0x3d')]));if(_0x1d11df['query']['filter']){_0x54eb05[_0xbca9('0x49')]=_[_0xbca9('0x4a')](_0x54eb05[_0xbca9('0x49')],{'$or':_['map'](_0x54eb05[_0xbca9('0x40')],function(_0x51b59a){var _0x67e6c5={};_0x67e6c5[_0x51b59a]={'$like':'%'+_0x1d11df[_0xbca9('0x3b')][_0xbca9('0x48')]+'%'};return _0x67e6c5;})});}_0x54eb05=_['merge']({},_0x54eb05,_0x1d11df[_0xbca9('0x4b')]);return _0x40b38a['getTeams'](_0x54eb05);}})[_0xbca9('0x2e')](function(_0x14e999){if(_0x14e999){_0x2a9720=_0x14e999['length'];if(!_0x1d11df[_0xbca9('0x3b')][_0xbca9('0x43')]('nolimit')){_0x54eb05[_0xbca9('0x27')]=qs[_0xbca9('0x27')](_0x1d11df[_0xbca9('0x3b')][_0xbca9('0x27')]);_0x54eb05[_0xbca9('0x24')]=qs['offset'](_0x1d11df[_0xbca9('0x3b')][_0xbca9('0x24')]);}return _0x40b38a[_0xbca9('0x68')](_0x54eb05);}})[_0xbca9('0x2e')](function(_0x58a6a6){if(_0x58a6a6){return _0x58a6a6?{'count':_0x2a9720,'rows':_0x58a6a6}:null;}})[_0xbca9('0x2e')](respondWithResult(_0x9896a8,null))[_0xbca9('0x52')](handleError(_0x9896a8,null));};exports['addTeams']=function(_0x4f14b9,_0x19ee2c,_0x2c66ba){var _0x234427=_0x4f14b9[_0xbca9('0x54')][_0xbca9('0x69')];return db['Team'][_0xbca9('0x61')]({'where':{'id':_0x234427},'attributes':['id'],'include':[{'model':db['User'],'as':_0xbca9('0x6a'),'attributes':['id',_0xbca9('0x35'),_0xbca9('0x6b'),_0xbca9('0x6c'),'interface'],'raw':!![]}]})[_0xbca9('0x2e')](function(_0x5c8b61){if(_0x5c8b61){var _0x16a25c=_[_0xbca9('0x6d')](_0x5c8b61,function(_0x2f915a){var _0x4de7d4=_0x2f915a['get']({'plain':!![]});return _0x4de7d4[_0xbca9('0x6a')];});return db[_0xbca9('0x4d')]['find']({'where':{'id':_0x4f14b9[_0xbca9('0x50')]['id']}})['then'](function(_0x2f3450){return db[_0xbca9('0x6e')][_0xbca9('0x6f')](function(_0x4e796d){return _0x2f3450[_0xbca9('0x70')](_0x234427,{'transaction':_0x4e796d})['then'](function(){return BPromise['each'](_0x16a25c,function(_0x5b60c3){return db[_0xbca9('0x5f')][_0xbca9('0x71')]({'where':{'UserId':_0x5b60c3['id'],'FaxQueueId':_0x4f14b9[_0xbca9('0x50')]['id']},'transaction':_0x4e796d});});})[_0xbca9('0x2e')](function(){_0x16a25c[_0xbca9('0x72')](function(_0x10f3b8){socket['emit'](_0xbca9('0x73'),{'UserId':_0x10f3b8['id'],'FaxQueueId':_0x2f3450['id']});});});});});}})['then'](respondWithStatusCode(_0x19ee2c,null))[_0xbca9('0x52')](handleError(_0x19ee2c,null));};exports[_0xbca9('0x74')]=function(_0x25ff8e,_0x448e62,_0x3a5cc6){return db['Team'][_0xbca9('0x61')]({'where':{'id':_0x25ff8e[_0xbca9('0x3b')]['ids']},'attributes':['id'],'include':[{'model':db[_0xbca9('0x75')],'as':_0xbca9('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x448e62,null))[_0xbca9('0x2e')](function(_0x467235){var _0x4bd430=_[_0xbca9('0x3a')](_0x467235,'id');var _0x40e8ab=[];var _0x227d03=[];var _0x3c89d6=squel[_0xbca9('0x76')]();_0x3c89d6[_0xbca9('0x77')]('tq.TeamId')[_0xbca9('0x78')](_0xbca9('0x79'),'tq')[_0xbca9('0x7a')]('user_has_teams','ut',_0xbca9('0x7b'))[_0xbca9('0x49')](_0xbca9('0x7c'),_0x25ff8e[_0xbca9('0x50')]['id']);for(var _0x4e2db4=0x0;_0x4e2db4<_0x467235[_0xbca9('0x42')];_0x4e2db4+=0x1){let _0x2df900=_0x467235[_0x4e2db4];for(var _0x24524b=0x0;_0x24524b<_0x2df900[_0xbca9('0x6a')]['length'];_0x24524b+=0x1){let _0x41c46c=_0x2df900[_0xbca9('0x6a')][_0x24524b];var _0x13083e=_0x3c89d6[_0xbca9('0x7d')]();_0x13083e[_0xbca9('0x49')](_0xbca9('0x7e'),_0x41c46c['id']);_0x227d03['push'](db['sequelize'][_0xbca9('0x3b')](_0x13083e[_0xbca9('0x7f')](),{'type':db['sequelize']['QueryTypes'][_0xbca9('0x80')]})['then'](function(_0x7f9ab1){if(_0x7f9ab1[_0xbca9('0x42')]===0x1){return _0x41c46c['id'];}else{var _0x325959=_[_0xbca9('0x81')](_[_0xbca9('0x3a')](_0x7f9ab1,'TeamId'),function(_0x176b82){return _['includes'](_0x4bd430,_0x176b82);});if(_0x325959){return _0x41c46c['id'];}}}));}}return BPromise['all'](_0x227d03)[_0xbca9('0x2e')](function(_0x53750c){_0x40e8ab=_(_0x40e8ab)[_0xbca9('0x82')](_0x53750c)[_0xbca9('0x83')]()[_0xbca9('0x84')]();return db[_0xbca9('0x4d')][_0xbca9('0x85')]({'where':{'id':_0x25ff8e[_0xbca9('0x50')]['id']}})[_0xbca9('0x2e')](function(_0x3b9147){return db[_0xbca9('0x6e')][_0xbca9('0x6f')](function(_0x67d828){return _0x3b9147[_0xbca9('0x74')](_0x25ff8e[_0xbca9('0x3b')]['ids'],{'transaction':_0x67d828})[_0xbca9('0x2e')](function(){if(!_[_0xbca9('0x86')](_0x40e8ab)){return _0x3b9147[_0xbca9('0x87')](_0x40e8ab,{'transaction':_0x67d828});}})[_0xbca9('0x2e')](function(){_0x40e8ab['forEach'](function(_0x3f0fc0){socket[_0xbca9('0x88')](_0xbca9('0x89'),{'UserId':_0x3f0fc0,'FaxQueueId':_0x3b9147['id']});});});});});});})[_0xbca9('0x2e')](respondWithStatusCode(_0x448e62,null))['catch'](handleError(_0x448e62,null));};exports[_0xbca9('0x8a')]=function(_0xfedfb9,_0x22db97,_0x2cc174){return db[_0xbca9('0x4d')][_0xbca9('0x85')]({'where':{'id':_0xfedfb9[_0xbca9('0x50')]['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x22db97,null))[_0xbca9('0x2e')](function(_0x1ef637){if(_0x1ef637){return _0x1ef637['addAgents'](_0xfedfb9['body']['ids'],_[_0xbca9('0x8b')](_0xfedfb9['body'],[_0xbca9('0x69'),'id'])||{})[_0xbca9('0x8c')](function(_0x2b0899){for(var _0x41f291=0x0;_0x41f291<_0xfedfb9[_0xbca9('0x54')]['ids'][_0xbca9('0x42')];_0x41f291+=0x1){socket['emit'](_0xbca9('0x73'),{'UserId':Number(_0xfedfb9[_0xbca9('0x54')][_0xbca9('0x69')][_0x41f291]),'FaxQueueId':Number(_0xfedfb9['params']['id'])});}return _0x2b0899;});}})[_0xbca9('0x2e')](respondWithResult(_0x22db97,null))[_0xbca9('0x52')](handleError(_0x22db97,null));};exports[_0xbca9('0x87')]=function(_0x530abd,_0x4b7f55,_0x55471b){return db[_0xbca9('0x4d')][_0xbca9('0x85')]({'where':{'id':_0x530abd[_0xbca9('0x50')]['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x4b7f55,null))[_0xbca9('0x2e')](function(_0x24a941){if(_0x24a941){return _0x24a941[_0xbca9('0x87')](_0x530abd[_0xbca9('0x3b')]['ids'])['then'](function(){if(_[_0xbca9('0x8d')](_0x530abd[_0xbca9('0x3b')][_0xbca9('0x69')])){for(var _0x303490=0x0;_0x303490<_0x530abd['query'][_0xbca9('0x69')][_0xbca9('0x42')];_0x303490+=0x1){socket[_0xbca9('0x88')](_0xbca9('0x89'),{'UserId':Number(_0x530abd[_0xbca9('0x3b')]['ids'][_0x303490]),'FaxQueueId':Number(_0x530abd[_0xbca9('0x50')]['id'])});}}else{socket[_0xbca9('0x88')](_0xbca9('0x89'),{'UserId':Number(_0x530abd[_0xbca9('0x3b')]['ids']),'FaxQueueId':Number(_0x530abd[_0xbca9('0x50')]['id'])});}});}})[_0xbca9('0x2e')](respondWithStatusCode(_0x4b7f55,null))['catch'](handleError(_0x4b7f55,null));};exports[_0xbca9('0x8e')]=function(_0xe143c2,_0x5d546a,_0x290a01){var _0x24f80e={};var _0x10d13e={};var _0x45b0a8;var _0x255da5;return db[_0xbca9('0x4d')][_0xbca9('0x5e')]({'where':{'id':_0xe143c2[_0xbca9('0x50')]['id']}})[_0xbca9('0x2e')](handleEntityNotFound(_0x5d546a,null))[_0xbca9('0x2e')](function(_0x482109){if(_0x482109){_0x45b0a8=_0x482109;_0x10d13e['model']=_[_0xbca9('0x3c')](db['User'][_0xbca9('0x37')]);_0x10d13e[_0xbca9('0x3b')]=_[_0xbca9('0x3c')](_0xe143c2[_0xbca9('0x3b')]);_0x10d13e[_0xbca9('0x3d')]=_[_0xbca9('0x3e')](_0x10d13e['model'],_0x10d13e['query']);_0x24f80e[_0xbca9('0x40')]=_[_0xbca9('0x3e')](_0x10d13e[_0xbca9('0x3f')],qs[_0xbca9('0x41')](_0xe143c2['query'][_0xbca9('0x41')]));_0x24f80e['attributes']=_0x24f80e[_0xbca9('0x40')][_0xbca9('0x42')]?_0x24f80e[_0xbca9('0x40')]:_0x10d13e['model'];_0x24f80e[_0xbca9('0x45')]=qs[_0xbca9('0x46')](_0xe143c2[_0xbca9('0x3b')][_0xbca9('0x46')]);_0x24f80e[_0xbca9('0x49')]=qs[_0xbca9('0x3d')](_[_0xbca9('0x47')](_0xe143c2[_0xbca9('0x3b')],_0x10d13e[_0xbca9('0x3d')]));if(_0xe143c2[_0xbca9('0x3b')][_0xbca9('0x48')]){_0x24f80e[_0xbca9('0x49')]=_[_0xbca9('0x4a')](_0x24f80e[_0xbca9('0x49')],{'$or':_[_0xbca9('0x3a')](_0x24f80e[_0xbca9('0x40')],function(_0x419812){var _0x415b87={};_0x415b87[_0x419812]={'$like':'%'+_0xe143c2[_0xbca9('0x3b')][_0xbca9('0x48')]+'%'};return _0x415b87;})});}_0x24f80e=_['merge']({},_0x24f80e,_0xe143c2[_0xbca9('0x4b')]);return _0x45b0a8[_0xbca9('0x8e')](_0x24f80e);}})[_0xbca9('0x2e')](function(_0x765142){if(_0x765142){_0x255da5=_0x765142[_0xbca9('0x42')];if(!_0xe143c2['query'][_0xbca9('0x43')]('nolimit')){_0x24f80e[_0xbca9('0x27')]=qs[_0xbca9('0x27')](_0xe143c2[_0xbca9('0x3b')]['limit']);_0x24f80e['offset']=qs[_0xbca9('0x24')](_0xe143c2['query']['offset']);}return _0x45b0a8[_0xbca9('0x8e')](_0x24f80e);}})[_0xbca9('0x2e')](function(_0xa642ed){if(_0xa642ed){return _0xa642ed?{'count':_0x255da5,'rows':_0xa642ed}:null;}})[_0xbca9('0x2e')](respondWithResult(_0x5d546a,null))[_0xbca9('0x52')](handleError(_0x5d546a,null));};
\ No newline at end of file
+var _0xc1ca=['keys','include','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserFaxQueue','rawAttributes','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','%s/%s','SIP','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','emit','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','get','FaxQueues','sendStatus','error','name','send','index','map','FaxQueue','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','findAll','rows'];(function(_0x2102c1,_0x20fecf){var _0x32569e=function(_0x21e70a){while(--_0x21e70a){_0x2102c1['push'](_0x2102c1['shift']());}};_0x32569e(++_0x20fecf);}(_0xc1ca,0xe2));var _0xac1c=function(_0x280c37,_0x599fef){_0x280c37=_0x280c37-0x0;var _0x5d35e1=_0xc1ca[_0x280c37];return _0x5d35e1;};'use strict';var emlformat=require(_0xac1c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xac1c('0x1'));var jsonpatch=require(_0xac1c('0x2'));var rp=require(_0xac1c('0x3'));var moment=require(_0xac1c('0x4'));var BPromise=require(_0xac1c('0x5'));var Mustache=require(_0xac1c('0x6'));var util=require(_0xac1c('0x7'));var path=require('path');var sox=require(_0xac1c('0x8'));var csv=require(_0xac1c('0x9'));var ejs=require(_0xac1c('0xa'));var fs=require('fs');var fs_extra=require(_0xac1c('0xb'));var _=require(_0xac1c('0xc'));var squel=require(_0xac1c('0xd'));var crypto=require(_0xac1c('0xe'));var jsforce=require(_0xac1c('0xf'));var deskjs=require(_0xac1c('0x10'));var toCsv=require(_0xac1c('0x9'));var querystring=require('querystring');var Papa=require(_0xac1c('0x11'));var Redis=require(_0xac1c('0x12'));var authService=require(_0xac1c('0x13'));var qs=require(_0xac1c('0x14'));var as=require(_0xac1c('0x15'));var hardwareService=require(_0xac1c('0x16'));var logger=require(_0xac1c('0x17'))(_0xac1c('0x18'));var utils=require(_0xac1c('0x19'));var config=require(_0xac1c('0x1a'));var licenseUtil=require(_0xac1c('0x1b'));var db=require(_0xac1c('0x1c'))['db'];config[_0xac1c('0x1d')]=_[_0xac1c('0x1e')](config[_0xac1c('0x1d')],{'host':_0xac1c('0x1f'),'port':0x18eb});var socket=require(_0xac1c('0x20'))(new Redis(config['redis']));require(_0xac1c('0x21'))[_0xac1c('0x22')](socket);function respondWithStatusCode(_0x4c9117,_0x50a9ac){_0x50a9ac=_0x50a9ac||0xcc;return function(_0x51a005){if(_0x51a005){return _0x4c9117['sendStatus'](_0x50a9ac);}return _0x4c9117[_0xac1c('0x23')](_0x50a9ac)[_0xac1c('0x24')]();};}function respondWithResult(_0x288464,_0x853ae5){_0x853ae5=_0x853ae5||0xc8;return function(_0xa5e76a){if(_0xa5e76a){return _0x288464[_0xac1c('0x23')](_0x853ae5)[_0xac1c('0x25')](_0xa5e76a);}};}function respondWithFilteredResult(_0x35f92c,_0x45b266){return function(_0x30f939){if(_0x30f939){var _0x5baedf=typeof _0x45b266['offset']===_0xac1c('0x26')&&typeof _0x45b266[_0xac1c('0x27')]===_0xac1c('0x26');var _0x4d6423=_0x30f939[_0xac1c('0x28')];var _0x2451df=_0x5baedf?0x0:_0x45b266['offset'];var _0x27562e=_0x5baedf?_0x30f939[_0xac1c('0x28')]:_0x45b266[_0xac1c('0x29')]+_0x45b266[_0xac1c('0x27')];var _0x4daefb;if(_0x27562e>=_0x4d6423){_0x27562e=_0x4d6423;_0x4daefb=0xc8;}else{_0x4daefb=0xce;}_0x35f92c[_0xac1c('0x23')](_0x4daefb);return _0x35f92c[_0xac1c('0x2a')]('Content-Range',_0x2451df+'-'+_0x27562e+'/'+_0x4d6423)[_0xac1c('0x25')](_0x30f939);}return null;};}function patchUpdates(_0x4a1331){return function(_0xaa48c9){try{jsonpatch['apply'](_0xaa48c9,_0x4a1331,!![]);}catch(_0x2ccc62){return BPromise[_0xac1c('0x2b')](_0x2ccc62);}return _0xaa48c9[_0xac1c('0x2c')]();};}function saveUpdates(_0x3acec3,_0x4d2105){return function(_0x41607c){if(_0x41607c){return _0x41607c[_0xac1c('0x2d')](_0x3acec3)[_0xac1c('0x2e')](function(_0x29fac8){return _0x29fac8;});}return null;};}function removeEntity(_0x2eca83,_0x290988){return function(_0x145418){if(_0x145418){return _0x145418[_0xac1c('0x2f')]()[_0xac1c('0x2e')](function(){var _0x14669c=_0x145418[_0xac1c('0x30')]({'plain':!![]});var _0x3b7d13=_0xac1c('0x31');return db['UserProfileResource'][_0xac1c('0x2f')]({'where':{'type':_0x3b7d13,'resourceId':_0x14669c['id']}})[_0xac1c('0x2e')](function(){return _0x145418;});})[_0xac1c('0x2e')](function(){_0x2eca83[_0xac1c('0x23')](0xcc)[_0xac1c('0x24')]();});}};}function handleEntityNotFound(_0x4e6b2c,_0x1ccd1e){return function(_0x58fbf7){if(!_0x58fbf7){_0x4e6b2c[_0xac1c('0x32')](0x194);}return _0x58fbf7;};}function handleError(_0x2ffffc,_0x292e76){_0x292e76=_0x292e76||0x1f4;return function(_0x4d4975){logger[_0xac1c('0x33')](_0x4d4975['stack']);if(_0x4d4975[_0xac1c('0x34')]){delete _0x4d4975['name'];}_0x2ffffc[_0xac1c('0x23')](_0x292e76)[_0xac1c('0x35')](_0x4d4975);};}exports[_0xac1c('0x36')]=function(_0x2a26da,_0x681cb0){var _0x1d0841={},_0x56bee1={},_0x3eb54d={'count':0x0,'rows':[]};var _0x53962a=_[_0xac1c('0x37')](db[_0xac1c('0x38')]['rawAttributes'],function(_0xd8b619){return{'name':_0xd8b619[_0xac1c('0x39')],'type':_0xd8b619[_0xac1c('0x3a')]['key']};});_0x56bee1[_0xac1c('0x3b')]=_[_0xac1c('0x37')](_0x53962a,_0xac1c('0x34'));_0x56bee1[_0xac1c('0x3c')]=_['keys'](_0x2a26da['query']);_0x56bee1['filters']=_[_0xac1c('0x3d')](_0x56bee1[_0xac1c('0x3b')],_0x56bee1[_0xac1c('0x3c')]);_0x1d0841[_0xac1c('0x3e')]=_[_0xac1c('0x3d')](_0x56bee1[_0xac1c('0x3b')],qs[_0xac1c('0x3f')](_0x2a26da[_0xac1c('0x3c')][_0xac1c('0x3f')]));_0x1d0841[_0xac1c('0x3e')]=_0x1d0841[_0xac1c('0x3e')][_0xac1c('0x40')]?_0x1d0841[_0xac1c('0x3e')]:_0x56bee1[_0xac1c('0x3b')];if(!_0x2a26da[_0xac1c('0x3c')][_0xac1c('0x41')](_0xac1c('0x42'))){_0x1d0841['limit']=qs[_0xac1c('0x27')](_0x2a26da['query'][_0xac1c('0x27')]);_0x1d0841['offset']=qs[_0xac1c('0x29')](_0x2a26da['query'][_0xac1c('0x29')]);}_0x1d0841[_0xac1c('0x43')]=qs[_0xac1c('0x44')](_0x2a26da['query']['sort']);_0x1d0841[_0xac1c('0x45')]=qs[_0xac1c('0x46')](_[_0xac1c('0x47')](_0x2a26da[_0xac1c('0x3c')],_0x56bee1[_0xac1c('0x46')]),_0x53962a);if(_0x2a26da[_0xac1c('0x3c')][_0xac1c('0x48')]){_0x1d0841[_0xac1c('0x45')]=_[_0xac1c('0x49')](_0x1d0841[_0xac1c('0x45')],{'$or':_[_0xac1c('0x37')](_0x53962a,function(_0x708d67){if(_0x708d67[_0xac1c('0x3a')]!==_0xac1c('0x4a')){var _0x142157={};_0x142157[_0x708d67[_0xac1c('0x34')]]={'$like':'%'+_0x2a26da[_0xac1c('0x3c')][_0xac1c('0x48')]+'%'};return _0x142157;}})});}_0x1d0841=_['merge']({},_0x1d0841,_0x2a26da['options']);var _0x9790d9={'where':_0x1d0841[_0xac1c('0x45')]};return db[_0xac1c('0x38')]['count'](_0x9790d9)[_0xac1c('0x2e')](function(_0x2bab8c){_0x3eb54d[_0xac1c('0x28')]=_0x2bab8c;if(_0x2a26da[_0xac1c('0x3c')][_0xac1c('0x4b')]){_0x1d0841['include']=[{'all':!![]}];}return db['FaxQueue'][_0xac1c('0x4c')](_0x1d0841);})[_0xac1c('0x2e')](function(_0x4ecc5e){_0x3eb54d[_0xac1c('0x4d')]=_0x4ecc5e;return _0x3eb54d;})[_0xac1c('0x2e')](respondWithFilteredResult(_0x681cb0,_0x1d0841))['catch'](handleError(_0x681cb0,null));};exports['show']=function(_0x3b3b2b,_0x28012a){var _0x4476f7={'raw':!![],'where':{'id':_0x3b3b2b['params']['id']}},_0xc66b1b={};_0xc66b1b[_0xac1c('0x3b')]=_[_0xac1c('0x4e')](db[_0xac1c('0x38')]['rawAttributes']);_0xc66b1b[_0xac1c('0x3c')]=_['keys'](_0x3b3b2b[_0xac1c('0x3c')]);_0xc66b1b['filters']=_['intersection'](_0xc66b1b[_0xac1c('0x3b')],_0xc66b1b[_0xac1c('0x3c')]);_0x4476f7[_0xac1c('0x3e')]=_[_0xac1c('0x3d')](_0xc66b1b['model'],qs[_0xac1c('0x3f')](_0x3b3b2b[_0xac1c('0x3c')][_0xac1c('0x3f')]));_0x4476f7[_0xac1c('0x3e')]=_0x4476f7[_0xac1c('0x3e')][_0xac1c('0x40')]?_0x4476f7[_0xac1c('0x3e')]:_0xc66b1b['model'];if(_0x3b3b2b[_0xac1c('0x3c')][_0xac1c('0x4b')]){_0x4476f7[_0xac1c('0x4f')]=[{'all':!![]}];}_0x4476f7=_['merge']({},_0x4476f7,_0x3b3b2b[_0xac1c('0x50')]);return db[_0xac1c('0x38')][_0xac1c('0x51')](_0x4476f7)[_0xac1c('0x2e')](handleEntityNotFound(_0x28012a,null))['then'](respondWithResult(_0x28012a,null))[_0xac1c('0x52')](handleError(_0x28012a,null));};exports[_0xac1c('0x53')]=function(_0x9d4740,_0x1cbd1b){return db[_0xac1c('0x38')][_0xac1c('0x53')](_0x9d4740[_0xac1c('0x54')],{})[_0xac1c('0x2e')](function(_0x27c169){var _0x288295=_0x9d4740[_0xac1c('0x55')]['get']({'plain':!![]});if(!_0x288295)throw new Error(_0xac1c('0x56'));if(_0x288295['role']===_0xac1c('0x55')){var _0x39dd13=_0x27c169[_0xac1c('0x30')]({'plain':!![]});var _0x5602df=_0xac1c('0x31');return db[_0xac1c('0x57')][_0xac1c('0x51')]({'where':{'name':_0x5602df,'userProfileId':_0x288295['userProfileId']},'raw':!![]})[_0xac1c('0x2e')](function(_0x302a27){if(_0x302a27&&_0x302a27[_0xac1c('0x58')]===0x0){return db[_0xac1c('0x59')][_0xac1c('0x53')]({'name':_0x39dd13[_0xac1c('0x34')],'resourceId':_0x39dd13['id'],'type':_0x302a27[_0xac1c('0x34')],'sectionId':_0x302a27['id']},{})[_0xac1c('0x2e')](function(){return _0x27c169;});}else{return _0x27c169;}})[_0xac1c('0x52')](function(_0x12956a){logger[_0xac1c('0x33')](_0xac1c('0x5a'),_0x12956a);throw _0x12956a;});}return _0x27c169;})[_0xac1c('0x2e')](respondWithResult(_0x1cbd1b,0xc9))[_0xac1c('0x52')](handleError(_0x1cbd1b,null));};exports[_0xac1c('0x2d')]=function(_0x52d5a5,_0x5606f1){if(_0x52d5a5['body']['id']){delete _0x52d5a5[_0xac1c('0x54')]['id'];}return db[_0xac1c('0x38')][_0xac1c('0x51')]({'where':{'id':_0x52d5a5['params']['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x5606f1,null))[_0xac1c('0x2e')](saveUpdates(_0x52d5a5[_0xac1c('0x54')],null))[_0xac1c('0x2e')](respondWithResult(_0x5606f1,null))[_0xac1c('0x52')](handleError(_0x5606f1,null));};exports[_0xac1c('0x2f')]=function(_0x8b6bc4,_0x3b8e84){return db[_0xac1c('0x38')][_0xac1c('0x51')]({'where':{'id':_0x8b6bc4[_0xac1c('0x5b')]['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x3b8e84,null))[_0xac1c('0x2e')](removeEntity(_0x3b8e84,null))[_0xac1c('0x52')](handleError(_0x3b8e84,null));};exports['describe']=function(_0x219fae,_0x2ead51){return db[_0xac1c('0x38')][_0xac1c('0x5c')]()[_0xac1c('0x2e')](respondWithResult(_0x2ead51,null))[_0xac1c('0x52')](handleError(_0x2ead51,null));};exports[_0xac1c('0x5d')]=function(_0x301953,_0x38cdfb,_0x3aae68){var _0x1a0505={'raw':!![],'where':{}},_0x43feb2={},_0x4d7031;return db[_0xac1c('0x38')][_0xac1c('0x5e')]({'where':{'id':_0x301953['params']['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x38cdfb,null))[_0xac1c('0x2e')](function(_0x25868b){if(_0x25868b){_0x4d7031=_0x25868b['get']({'plain':!![]});_0x43feb2['model']=_[_0xac1c('0x4e')](db[_0xac1c('0x5f')][_0xac1c('0x60')]);_0x43feb2[_0xac1c('0x3c')]=_[_0xac1c('0x4e')](_0x301953['query']);_0x43feb2[_0xac1c('0x46')]=_[_0xac1c('0x3d')](_0x43feb2[_0xac1c('0x3b')],_0x43feb2['query']);_0x1a0505[_0xac1c('0x3e')]=_['intersection'](_0x43feb2[_0xac1c('0x3b')],qs[_0xac1c('0x3f')](_0x301953[_0xac1c('0x3c')][_0xac1c('0x3f')]));_0x1a0505[_0xac1c('0x3e')]=_0x1a0505[_0xac1c('0x3e')]['length']?_0x1a0505['attributes']:_0x43feb2[_0xac1c('0x3b')];if(!_0x301953[_0xac1c('0x3c')]['hasOwnProperty'](_0xac1c('0x42'))){_0x1a0505[_0xac1c('0x27')]=qs[_0xac1c('0x27')](_0x301953[_0xac1c('0x3c')][_0xac1c('0x27')]);_0x1a0505[_0xac1c('0x29')]=qs[_0xac1c('0x29')](_0x301953['query'][_0xac1c('0x29')]);}_0x1a0505[_0xac1c('0x43')]=qs['sort'](_0x301953[_0xac1c('0x3c')][_0xac1c('0x44')]);_0x1a0505[_0xac1c('0x45')]=qs[_0xac1c('0x46')](_[_0xac1c('0x47')](_0x301953[_0xac1c('0x3c')],_0x43feb2[_0xac1c('0x46')]));_0x1a0505[_0xac1c('0x45')][_0xac1c('0x61')]=_0x25868b['id'];if(_0x301953[_0xac1c('0x3c')][_0xac1c('0x48')]){_0x1a0505[_0xac1c('0x45')]=_[_0xac1c('0x49')](_0x1a0505['where'],{'$or':_[_0xac1c('0x37')](_0x1a0505[_0xac1c('0x3e')],function(_0x520bc3){var _0x22b253={};_0x22b253[_0x520bc3]={'$like':'%'+_0x301953['query'][_0xac1c('0x48')]+'%'};return _0x22b253;})});}_0x1a0505=_[_0xac1c('0x49')]({},_0x1a0505,_0x301953[_0xac1c('0x50')]);return db[_0xac1c('0x5f')][_0xac1c('0x4c')](_0x1a0505);}})[_0xac1c('0x2e')](function(_0x2b715a){if(_0x2b715a){return db[_0xac1c('0x62')][_0xac1c('0x63')]({'where':{'id':_[_0xac1c('0x37')](_0x2b715a,_0xac1c('0x64')),'role':_0xac1c('0x65')},'attributes':['id',_0xac1c('0x34'),_0xac1c('0x66'),_0xac1c('0x67'),_0xac1c('0x68')]});}})[_0xac1c('0x2e')](function(_0x5119c8){if(_0x5119c8){return{'count':_0x5119c8[_0xac1c('0x28')],'rows':_[_0xac1c('0x37')](_0x5119c8[_0xac1c('0x4d')],function(_0x22ee8c){return{'membername':_0x22ee8c[_0xac1c('0x34')],'UserId':_0x22ee8c['id'],'queue_name':_0x4d7031['name'],'FaxQueueId':_0x4d7031['id'],'interface':util['format'](_0xac1c('0x69'),_0xac1c('0x6a'),_0x22ee8c[_0xac1c('0x34')]),'penalty':0x0,'paused':_0x22ee8c['faxPause'],'createdAt':_0x22ee8c[_0xac1c('0x68')],'updatedAt':_0x22ee8c[_0xac1c('0x67')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xac1c('0x2e')](respondWithFilteredResult(_0x38cdfb,_0x1a0505))['catch'](handleError(_0x38cdfb,null));};exports[_0xac1c('0x6b')]=function(_0x36b5d5,_0x16e01b,_0x1b8144){var _0x50e3ea={};var _0x3e13a9={};var _0x531b09;var _0x5bfe8e;return db[_0xac1c('0x38')]['findOne']({'where':{'id':_0x36b5d5['params']['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x16e01b,null))[_0xac1c('0x2e')](function(_0x5f43b9){if(_0x5f43b9){_0x531b09=_0x5f43b9;_0x3e13a9[_0xac1c('0x3b')]=_[_0xac1c('0x4e')](db['Team']['rawAttributes']);_0x3e13a9[_0xac1c('0x3c')]=_['keys'](_0x36b5d5[_0xac1c('0x3c')]);_0x3e13a9[_0xac1c('0x46')]=_[_0xac1c('0x3d')](_0x3e13a9[_0xac1c('0x3b')],_0x3e13a9[_0xac1c('0x3c')]);_0x50e3ea[_0xac1c('0x3e')]=_['intersection'](_0x3e13a9['model'],qs[_0xac1c('0x3f')](_0x36b5d5['query'][_0xac1c('0x3f')]));_0x50e3ea[_0xac1c('0x3e')]=_0x50e3ea['attributes']['length']?_0x50e3ea[_0xac1c('0x3e')]:_0x3e13a9[_0xac1c('0x3b')];_0x50e3ea['order']=qs[_0xac1c('0x44')](_0x36b5d5[_0xac1c('0x3c')][_0xac1c('0x44')]);_0x50e3ea[_0xac1c('0x45')]=qs[_0xac1c('0x46')](_[_0xac1c('0x47')](_0x36b5d5[_0xac1c('0x3c')],_0x3e13a9[_0xac1c('0x46')]));if(_0x36b5d5[_0xac1c('0x3c')][_0xac1c('0x48')]){_0x50e3ea[_0xac1c('0x45')]=_['merge'](_0x50e3ea[_0xac1c('0x45')],{'$or':_[_0xac1c('0x37')](_0x50e3ea['attributes'],function(_0x337ef7){var _0x3936f9={};_0x3936f9[_0x337ef7]={'$like':'%'+_0x36b5d5[_0xac1c('0x3c')][_0xac1c('0x48')]+'%'};return _0x3936f9;})});}_0x50e3ea=_[_0xac1c('0x49')]({},_0x50e3ea,_0x36b5d5[_0xac1c('0x50')]);return _0x531b09[_0xac1c('0x6b')](_0x50e3ea);}})[_0xac1c('0x2e')](function(_0x44d6e4){if(_0x44d6e4){_0x5bfe8e=_0x44d6e4[_0xac1c('0x40')];if(!_0x36b5d5[_0xac1c('0x3c')]['hasOwnProperty'](_0xac1c('0x42'))){_0x50e3ea['limit']=qs[_0xac1c('0x27')](_0x36b5d5[_0xac1c('0x3c')]['limit']);_0x50e3ea[_0xac1c('0x29')]=qs[_0xac1c('0x29')](_0x36b5d5[_0xac1c('0x3c')][_0xac1c('0x29')]);}return _0x531b09[_0xac1c('0x6b')](_0x50e3ea);}})[_0xac1c('0x2e')](function(_0x2c5b0e){if(_0x2c5b0e){return _0x2c5b0e?{'count':_0x5bfe8e,'rows':_0x2c5b0e}:null;}})[_0xac1c('0x2e')](respondWithResult(_0x16e01b,null))[_0xac1c('0x52')](handleError(_0x16e01b,null));};exports[_0xac1c('0x6c')]=function(_0x1b9472,_0x155771,_0x12a21d){var _0x2b431a=_0x1b9472['body'][_0xac1c('0x6d')];return db[_0xac1c('0x6e')][_0xac1c('0x4c')]({'where':{'id':_0x2b431a},'attributes':['id'],'include':[{'model':db['User'],'as':_0xac1c('0x6f'),'attributes':['id',_0xac1c('0x34'),_0xac1c('0x70'),_0xac1c('0x71'),_0xac1c('0x72')],'raw':!![]}]})[_0xac1c('0x2e')](function(_0x565bc1){if(_0x565bc1){var _0x396926=_[_0xac1c('0x73')](_0x565bc1,function(_0x61d8ac){var _0x3d2996=_0x61d8ac['get']({'plain':!![]});return _0x3d2996[_0xac1c('0x6f')];});return db['FaxQueue'][_0xac1c('0x51')]({'where':{'id':_0x1b9472['params']['id']}})[_0xac1c('0x2e')](function(_0x287363){return db['sequelize'][_0xac1c('0x74')](function(_0x386bd8){return _0x287363['addTeams'](_0x2b431a,{'transaction':_0x386bd8})['then'](function(){return BPromise[_0xac1c('0x75')](_0x396926,function(_0x27e278){return db[_0xac1c('0x5f')][_0xac1c('0x76')]({'where':{'UserId':_0x27e278['id'],'FaxQueueId':_0x1b9472[_0xac1c('0x5b')]['id']},'transaction':_0x386bd8});});})[_0xac1c('0x2e')](function(){_0x396926['forEach'](function(_0x2287cb){socket[_0xac1c('0x77')]('userFaxQueue:save',{'UserId':_0x2287cb['id'],'FaxQueueId':_0x287363['id']});});});});});}})['then'](respondWithStatusCode(_0x155771,null))[_0xac1c('0x52')](handleError(_0x155771,null));};exports[_0xac1c('0x78')]=function(_0x3a4dfc,_0x3bd2fc,_0x497fd7){return db['Team']['findAll']({'where':{'id':_0x3a4dfc[_0xac1c('0x3c')][_0xac1c('0x6d')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xac1c('0x6f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3bd2fc,null))[_0xac1c('0x2e')](function(_0x5769b4){var _0x324bc8=_[_0xac1c('0x37')](_0x5769b4,'id');var _0x5e9c11=[];var _0x1199f9=[];var _0x1c605c=squel[_0xac1c('0x79')]();_0x1c605c[_0xac1c('0x7a')](_0xac1c('0x7b'))[_0xac1c('0x7c')](_0xac1c('0x7d'),'tq')[_0xac1c('0x7e')](_0xac1c('0x7f'),'ut',_0xac1c('0x80'))['where']('FaxQueueId\x20=\x20?',_0x3a4dfc[_0xac1c('0x5b')]['id']);for(var _0x1b1d4f=0x0;_0x1b1d4f<_0x5769b4[_0xac1c('0x40')];_0x1b1d4f+=0x1){let _0x15c38d=_0x5769b4[_0x1b1d4f];for(var _0x240a59=0x0;_0x240a59<_0x15c38d[_0xac1c('0x6f')]['length'];_0x240a59+=0x1){let _0x156ea8=_0x15c38d['Agents'][_0x240a59];var _0x45169d=_0x1c605c[_0xac1c('0x81')]();_0x45169d[_0xac1c('0x45')](_0xac1c('0x82'),_0x156ea8['id']);_0x1199f9[_0xac1c('0x83')](db[_0xac1c('0x84')][_0xac1c('0x3c')](_0x45169d[_0xac1c('0x85')](),{'type':db[_0xac1c('0x84')][_0xac1c('0x86')]['SELECT']})[_0xac1c('0x2e')](function(_0x14eed4){if(_0x14eed4['length']===0x1){return _0x156ea8['id'];}else{var _0x23816c=_[_0xac1c('0x87')](_[_0xac1c('0x37')](_0x14eed4,_0xac1c('0x88')),function(_0x515196){return _[_0xac1c('0x89')](_0x324bc8,_0x515196);});if(_0x23816c){return _0x156ea8['id'];}}}));}}return BPromise[_0xac1c('0x8a')](_0x1199f9)[_0xac1c('0x2e')](function(_0x270b24){_0x5e9c11=_(_0x5e9c11)[_0xac1c('0x8b')](_0x270b24)[_0xac1c('0x8c')]()[_0xac1c('0x8d')]();return db[_0xac1c('0x38')][_0xac1c('0x51')]({'where':{'id':_0x3a4dfc['params']['id']}})[_0xac1c('0x2e')](function(_0x32b90a){return db[_0xac1c('0x84')][_0xac1c('0x74')](function(_0x3d9ea2){return _0x32b90a[_0xac1c('0x78')](_0x3a4dfc['query'][_0xac1c('0x6d')],{'transaction':_0x3d9ea2})[_0xac1c('0x2e')](function(){if(!_[_0xac1c('0x8e')](_0x5e9c11)){return _0x32b90a[_0xac1c('0x8f')](_0x5e9c11,{'transaction':_0x3d9ea2});}})[_0xac1c('0x2e')](function(){_0x5e9c11[_0xac1c('0x90')](function(_0x1a8ffc){socket[_0xac1c('0x77')](_0xac1c('0x91'),{'UserId':_0x1a8ffc,'FaxQueueId':_0x32b90a['id']});});});});});});})[_0xac1c('0x2e')](respondWithStatusCode(_0x3bd2fc,null))[_0xac1c('0x52')](handleError(_0x3bd2fc,null));};exports[_0xac1c('0x92')]=function(_0x688d7b,_0x3c6ad9,_0x45deff){return db['FaxQueue'][_0xac1c('0x51')]({'where':{'id':_0x688d7b[_0xac1c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3c6ad9,null))['then'](function(_0x116f18){if(_0x116f18){return _0x116f18[_0xac1c('0x92')](_0x688d7b['body']['ids'],_[_0xac1c('0x93')](_0x688d7b['body'],[_0xac1c('0x6d'),'id'])||{})[_0xac1c('0x94')](function(_0x3bbf8b){for(var _0x2a5f6e=0x0;_0x2a5f6e<_0x688d7b[_0xac1c('0x54')][_0xac1c('0x6d')][_0xac1c('0x40')];_0x2a5f6e+=0x1){socket[_0xac1c('0x77')](_0xac1c('0x95'),{'UserId':Number(_0x688d7b[_0xac1c('0x54')][_0xac1c('0x6d')][_0x2a5f6e]),'FaxQueueId':Number(_0x688d7b[_0xac1c('0x5b')]['id'])});}return _0x3bbf8b;});}})[_0xac1c('0x2e')](respondWithResult(_0x3c6ad9,null))['catch'](handleError(_0x3c6ad9,null));};exports[_0xac1c('0x8f')]=function(_0x2aabf8,_0x4887c1,_0x183f5c){return db[_0xac1c('0x38')][_0xac1c('0x51')]({'where':{'id':_0x2aabf8['params']['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x4887c1,null))[_0xac1c('0x2e')](function(_0x2b9791){if(_0x2b9791){return _0x2b9791[_0xac1c('0x8f')](_0x2aabf8[_0xac1c('0x3c')][_0xac1c('0x6d')])[_0xac1c('0x2e')](function(){if(_[_0xac1c('0x96')](_0x2aabf8[_0xac1c('0x3c')][_0xac1c('0x6d')])){for(var _0x38a463=0x0;_0x38a463<_0x2aabf8['query'][_0xac1c('0x6d')][_0xac1c('0x40')];_0x38a463+=0x1){socket[_0xac1c('0x77')](_0xac1c('0x91'),{'UserId':Number(_0x2aabf8[_0xac1c('0x3c')][_0xac1c('0x6d')][_0x38a463]),'FaxQueueId':Number(_0x2aabf8[_0xac1c('0x5b')]['id'])});}}else{socket[_0xac1c('0x77')](_0xac1c('0x91'),{'UserId':Number(_0x2aabf8[_0xac1c('0x3c')][_0xac1c('0x6d')]),'FaxQueueId':Number(_0x2aabf8[_0xac1c('0x5b')]['id'])});}});}})['then'](respondWithStatusCode(_0x4887c1,null))[_0xac1c('0x52')](handleError(_0x4887c1,null));};exports[_0xac1c('0x97')]=function(_0xadea6b,_0x51bcde,_0x21ee60){var _0x2b4574={};var _0x88403f={};var _0x382028;var _0x4e16a2;return db[_0xac1c('0x38')]['findOne']({'where':{'id':_0xadea6b[_0xac1c('0x5b')]['id']}})[_0xac1c('0x2e')](handleEntityNotFound(_0x51bcde,null))[_0xac1c('0x2e')](function(_0x23fdbc){if(_0x23fdbc){_0x382028=_0x23fdbc;_0x88403f[_0xac1c('0x3b')]=_[_0xac1c('0x4e')](db[_0xac1c('0x62')]['rawAttributes']);_0x88403f['query']=_[_0xac1c('0x4e')](_0xadea6b[_0xac1c('0x3c')]);_0x88403f[_0xac1c('0x46')]=_[_0xac1c('0x3d')](_0x88403f[_0xac1c('0x3b')],_0x88403f[_0xac1c('0x3c')]);_0x2b4574[_0xac1c('0x3e')]=_[_0xac1c('0x3d')](_0x88403f[_0xac1c('0x3b')],qs[_0xac1c('0x3f')](_0xadea6b[_0xac1c('0x3c')][_0xac1c('0x3f')]));_0x2b4574[_0xac1c('0x3e')]=_0x2b4574[_0xac1c('0x3e')][_0xac1c('0x40')]?_0x2b4574[_0xac1c('0x3e')]:_0x88403f['model'];_0x2b4574[_0xac1c('0x43')]=qs[_0xac1c('0x44')](_0xadea6b['query']['sort']);_0x2b4574[_0xac1c('0x45')]=qs[_0xac1c('0x46')](_['pick'](_0xadea6b[_0xac1c('0x3c')],_0x88403f[_0xac1c('0x46')]));if(_0xadea6b[_0xac1c('0x3c')][_0xac1c('0x48')]){_0x2b4574[_0xac1c('0x45')]=_[_0xac1c('0x49')](_0x2b4574['where'],{'$or':_[_0xac1c('0x37')](_0x2b4574[_0xac1c('0x3e')],function(_0x984a77){var _0x4ce350={};_0x4ce350[_0x984a77]={'$like':'%'+_0xadea6b['query']['filter']+'%'};return _0x4ce350;})});}_0x2b4574=_[_0xac1c('0x49')]({},_0x2b4574,_0xadea6b[_0xac1c('0x50')]);return _0x382028[_0xac1c('0x97')](_0x2b4574);}})[_0xac1c('0x2e')](function(_0x3cdb88){if(_0x3cdb88){_0x4e16a2=_0x3cdb88[_0xac1c('0x40')];if(!_0xadea6b[_0xac1c('0x3c')]['hasOwnProperty'](_0xac1c('0x42'))){_0x2b4574[_0xac1c('0x27')]=qs[_0xac1c('0x27')](_0xadea6b[_0xac1c('0x3c')]['limit']);_0x2b4574[_0xac1c('0x29')]=qs[_0xac1c('0x29')](_0xadea6b['query'][_0xac1c('0x29')]);}return _0x382028['getAgents'](_0x2b4574);}})[_0xac1c('0x2e')](function(_0x844c5a){if(_0x844c5a){return _0x844c5a?{'count':_0x4e16a2,'rows':_0x844c5a}:null;}})['then'](respondWithResult(_0x51bcde,null))[_0xac1c('0x52')](handleError(_0x51bcde,null));};
\ No newline at end of file
index c203bc8..38a1d9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e71=['FaxQueue','setMaxListeners','remove','emit','exports','events','../../mysqldb'];(function(_0x377743,_0x584cab){var _0x30ae30=function(_0x5dde9b){while(--_0x5dde9b){_0x377743['push'](_0x377743['shift']());}};_0x30ae30(++_0x584cab);}(_0x2e71,0x1d3));var _0x12e7=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0x2e71[_0x4e93a9];return _0x43013c;};'use strict';var EventEmitter=require(_0x12e7('0x0'));var FaxQueue=require(_0x12e7('0x1'))['db'][_0x12e7('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x12e7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x12e7('0x4')};function emitEvent(_0x5ed449){return function(_0x1789b2,_0x387a6e,_0x4738aa){FaxQueueEvents[_0x12e7('0x5')](_0x5ed449+':'+_0x1789b2['id'],_0x1789b2);FaxQueueEvents['emit'](_0x5ed449,_0x1789b2);_0x4738aa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x12e7('0x6')]=FaxQueueEvents;
\ No newline at end of file
+var _0x783c=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x161e52,_0x204656){var _0x4ed0b3=function(_0xd65322){while(--_0xd65322){_0x161e52['push'](_0x161e52['shift']());}};_0x4ed0b3(++_0x204656);}(_0x783c,0xbd));var _0xc783=function(_0x43ea26,_0x3f266d){_0x43ea26=_0x43ea26-0x0;var _0x1bdf7e=_0x783c[_0x43ea26];return _0x1bdf7e;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xc783('0x0'))['db'][_0xc783('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xc783('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc783('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3c20e0){return function(_0x59c914,_0x2bd92f,_0x11c3c9){FaxQueueEvents[_0xc783('0x4')](_0x3c20e0+':'+_0x59c914['id'],_0x59c914);FaxQueueEvents[_0xc783('0x4')](_0x3c20e0,_0x59c914);_0x11c3c9(null);};}for(var e in events){if(events[_0xc783('0x5')](e)){var event=events[e];FaxQueue[_0xc783('0x6')](e,emitEvent(event));}}module[_0xc783('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 07315af..12cdec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ac=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxQueue','fax_queues','util','../../config/logger'];(function(_0x336b04,_0x4004bb){var _0x554fb9=function(_0x1036dd){while(--_0x1036dd){_0x336b04['push'](_0x336b04['shift']());}};_0x554fb9(++_0x4004bb);}(_0xc7ac,0x14e));var _0xcc7a=function(_0x17a98c,_0x5b4789){_0x17a98c=_0x17a98c-0x0;var _0x2d79ad=_0xc7ac[_0x17a98c];return _0x2d79ad;};'use strict';var _=require('lodash');var util=require(_0xcc7a('0x0'));var logger=require(_0xcc7a('0x1'))(_0xcc7a('0x2'));var moment=require('moment');var BPromise=require(_0xcc7a('0x3'));var rp=require(_0xcc7a('0x4'));var fs=require('fs');var path=require(_0xcc7a('0x5'));var rimraf=require(_0xcc7a('0x6'));var config=require(_0xcc7a('0x7'));var attributes=require('./faxQueue.attributes');module[_0xcc7a('0x8')]=function(_0x26d87d,_0x37c4c0){return _0x26d87d[_0xcc7a('0x9')](_0xcc7a('0xa'),attributes,{'tableName':_0xcc7a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x56f0=['moment','rimraf','../../config/environment','./faxQueue.attributes','exports','define','fax_queues','lodash','util','../../config/logger','api'];(function(_0x2bc3f4,_0x470b26){var _0x14ac53=function(_0x5121bd){while(--_0x5121bd){_0x2bc3f4['push'](_0x2bc3f4['shift']());}};_0x14ac53(++_0x470b26);}(_0x56f0,0x10f));var _0x056f=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0x56f0[_0x1c6ef2];return _0x404b8c;};'use strict';var _=require(_0x056f('0x0'));var util=require(_0x056f('0x1'));var logger=require(_0x056f('0x2'))(_0x056f('0x3'));var moment=require(_0x056f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x056f('0x5'));var config=require(_0x056f('0x6'));var attributes=require(_0x056f('0x7'));module[_0x056f('0x8')]=function(_0x35899b,_0x4480e0){return _0x35899b[_0x056f('0x9')]('FaxQueue',attributes,{'tableName':_0x056f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b3f3a3..cd1ae96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x300c=['info','FaxQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxQueue','findAll','options','raw','limit','map','include','model','attributes','GetFaxQueue','debug','ShowFaxQueue','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','then'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x300c,0x1c3));var _0xc300=function(_0x415df3,_0x5096d4){_0x415df3=_0x415df3-0x0;var _0x59a354=_0x300c[_0x415df3];return _0x59a354;};'use strict';var _=require('lodash');var util=require(_0xc300('0x0'));var moment=require(_0xc300('0x1'));var BPromise=require(_0xc300('0x2'));var rs=require(_0xc300('0x3'));var fs=require('fs');var Redis=require(_0xc300('0x4'));var db=require(_0xc300('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc300('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc300('0x7'));var client=jayson[_0xc300('0x8')][_0xc300('0x9')]({'port':0x232a});config[_0xc300('0xa')]=_[_0xc300('0xb')](config[_0xc300('0xa')],{'host':_0xc300('0xc'),'port':0x18eb});var socket=require(_0xc300('0xd'))(new Redis(config[_0xc300('0xa')]));require(_0xc300('0xe'))['register'](socket);function respondWithRpcPromise(_0xc703a1,_0x20d820,_0xbac858){return new BPromise(function(_0x4e0b55,_0x428f2a){return client[_0xc300('0xf')](_0xc703a1,_0xbac858)[_0xc300('0x10')](function(_0x55b964){logger[_0xc300('0x11')](_0xc300('0x12'),_0x20d820,_0xc300('0x13'));logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x20d820,'request\x20sent',JSON[_0xc300('0x14')](_0x55b964));if(_0x55b964['error']){if(_0x55b964[_0xc300('0x15')][_0xc300('0x16')]===0x1f4){logger[_0xc300('0x15')](_0xc300('0x12'),_0x20d820,_0x55b964[_0xc300('0x15')][_0xc300('0x17')]);return _0x428f2a(_0x55b964[_0xc300('0x15')]['message']);}logger['error'](_0xc300('0x12'),_0x20d820,_0x55b964[_0xc300('0x15')][_0xc300('0x17')]);return _0x4e0b55(_0x55b964[_0xc300('0x15')][_0xc300('0x17')]);}else{logger['info'](_0xc300('0x12'),_0x20d820,_0xc300('0x13'));_0x4e0b55(_0x55b964[_0xc300('0x18')][_0xc300('0x17')]);}})[_0xc300('0x19')](function(_0xc9bae4){logger[_0xc300('0x15')](_0xc300('0x12'),_0x20d820,_0xc9bae4);_0x428f2a(_0xc9bae4);});});}exports['GetFaxQueue']=function(_0x51373f){var _0x47233f=this;return new Promise(function(_0x489cd5,_0x3adbcc){return db[_0xc300('0x1a')][_0xc300('0x1b')]({'raw':_0x51373f[_0xc300('0x1c')]?_0x51373f[_0xc300('0x1c')][_0xc300('0x1d')]===undefined?!![]:![]:!![],'where':_0x51373f[_0xc300('0x1c')]?_0x51373f[_0xc300('0x1c')]['where']||null:null,'attributes':_0x51373f[_0xc300('0x1c')]?_0x51373f[_0xc300('0x1c')]['attributes']||null:null,'limit':_0x51373f[_0xc300('0x1c')]?_0x51373f[_0xc300('0x1c')][_0xc300('0x1e')]||null:null,'include':_0x51373f[_0xc300('0x1c')]?_0x51373f[_0xc300('0x1c')]['include']?_[_0xc300('0x1f')](_0x51373f['options'][_0xc300('0x20')],function(_0x37a2be){return{'model':db[_0x37a2be[_0xc300('0x21')]],'as':_0x37a2be['as'],'attributes':_0x37a2be['attributes'],'include':_0x37a2be['include']?_['map'](_0x37a2be[_0xc300('0x20')],function(_0x38a445){return{'model':db[_0x38a445[_0xc300('0x21')]],'as':_0x38a445['as'],'attributes':_0x38a445['attributes'],'include':_0x38a445[_0xc300('0x20')]?_[_0xc300('0x1f')](_0x38a445[_0xc300('0x20')],function(_0x177ed9){return{'model':db[_0x177ed9[_0xc300('0x21')]],'as':_0x177ed9['as'],'attributes':_0x177ed9[_0xc300('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x222d4c){logger[_0xc300('0x11')](_0xc300('0x23'),_0x51373f);logger[_0xc300('0x24')](_0xc300('0x23'),_0x51373f,JSON['stringify'](_0x222d4c));_0x489cd5(_0x222d4c);})[_0xc300('0x19')](function(_0x447b3e){logger[_0xc300('0x15')](_0xc300('0x23'),_0x447b3e[_0xc300('0x17')],_0x51373f);_0x3adbcc(_0x47233f[_0xc300('0x15')](0x1f4,_0x447b3e[_0xc300('0x17')]));});});};exports[_0xc300('0x25')]=function(_0x5cd690){var _0x41c984=this;return new Promise(function(_0x594d60,_0x31975f){return db[_0xc300('0x1a')]['find']({'raw':_0x5cd690[_0xc300('0x1c')]?_0x5cd690['options'][_0xc300('0x1d')]===undefined?!![]:![]:!![],'where':_0x5cd690[_0xc300('0x1c')]?_0x5cd690[_0xc300('0x1c')][_0xc300('0x26')]||null:null,'attributes':_0x5cd690['options']?_0x5cd690['options'][_0xc300('0x22')]||null:null,'include':_0x5cd690[_0xc300('0x1c')]?_0x5cd690['options']['include']?_[_0xc300('0x1f')](_0x5cd690[_0xc300('0x1c')][_0xc300('0x20')],function(_0x4d29c){return{'model':db[_0x4d29c[_0xc300('0x21')]],'as':_0x4d29c['as'],'attributes':_0x4d29c['attributes'],'include':_0x4d29c[_0xc300('0x20')]?_['map'](_0x4d29c[_0xc300('0x20')],function(_0x447fa1){return{'model':db[_0x447fa1[_0xc300('0x21')]],'as':_0x447fa1['as'],'attributes':_0x447fa1['attributes'],'include':_0x447fa1[_0xc300('0x20')]?_[_0xc300('0x1f')](_0x447fa1['include'],function(_0x16b1ab){return{'model':db[_0x16b1ab['model']],'as':_0x16b1ab['as'],'attributes':_0x16b1ab[_0xc300('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc300('0x10')](function(_0x517cc8){logger[_0xc300('0x11')](_0xc300('0x25'),_0x5cd690);logger[_0xc300('0x24')](_0xc300('0x25'),_0x5cd690,JSON[_0xc300('0x14')](_0x517cc8));_0x594d60(_0x517cc8);})[_0xc300('0x19')](function(_0x24dac1){logger[_0xc300('0x15')](_0xc300('0x25'),_0x24dac1[_0xc300('0x17')],_0x5cd690);_0x31975f(_0x41c984['error'](0x1f4,_0x24dac1['message']));});});};
\ No newline at end of file
+var _0x1c18=['debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetFaxQueue','FaxQueue','findAll','options','raw','limit','map','include','model','attributes','ShowFaxQueue','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c18,0x103));var _0x81c1=function(_0x150a05,_0x202df2){_0x150a05=_0x150a05-0x0;var _0x670fd3=_0x1c18[_0x150a05];return _0x670fd3;};'use strict';var _=require(_0x81c1('0x0'));var util=require('util');var moment=require(_0x81c1('0x1'));var BPromise=require(_0x81c1('0x2'));var rs=require(_0x81c1('0x3'));var fs=require('fs');var Redis=require(_0x81c1('0x4'));var db=require(_0x81c1('0x5'))['db'];var utils=require(_0x81c1('0x6'));var logger=require(_0x81c1('0x7'))(_0x81c1('0x8'));var config=require(_0x81c1('0x9'));var jayson=require(_0x81c1('0xa'));var client=jayson['client'][_0x81c1('0xb')]({'port':0x232a});config[_0x81c1('0xc')]=_[_0x81c1('0xd')](config[_0x81c1('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x81c1('0xe'))(new Redis(config[_0x81c1('0xc')]));require(_0x81c1('0xf'))[_0x81c1('0x10')](socket);function respondWithRpcPromise(_0x5c74b5,_0x360250,_0x58cac8){return new BPromise(function(_0xb28b3,_0x2a75dc){return client[_0x81c1('0x11')](_0x5c74b5,_0x58cac8)[_0x81c1('0x12')](function(_0x32a1e4){logger[_0x81c1('0x13')]('FaxQueue,\x20%s,\x20%s',_0x360250,_0x81c1('0x14'));logger[_0x81c1('0x15')](_0x81c1('0x16'),_0x360250,_0x81c1('0x14'),JSON[_0x81c1('0x17')](_0x32a1e4));if(_0x32a1e4[_0x81c1('0x18')]){if(_0x32a1e4['error'][_0x81c1('0x19')]===0x1f4){logger[_0x81c1('0x18')]('FaxQueue,\x20%s,\x20%s',_0x360250,_0x32a1e4['error']['message']);return _0x2a75dc(_0x32a1e4[_0x81c1('0x18')][_0x81c1('0x1a')]);}logger[_0x81c1('0x18')]('FaxQueue,\x20%s,\x20%s',_0x360250,_0x32a1e4[_0x81c1('0x18')][_0x81c1('0x1a')]);return _0xb28b3(_0x32a1e4[_0x81c1('0x18')][_0x81c1('0x1a')]);}else{logger[_0x81c1('0x13')]('FaxQueue,\x20%s,\x20%s',_0x360250,_0x81c1('0x14'));_0xb28b3(_0x32a1e4['result']['message']);}})[_0x81c1('0x1b')](function(_0x891af7){logger[_0x81c1('0x18')]('FaxQueue,\x20%s,\x20%s',_0x360250,_0x891af7);_0x2a75dc(_0x891af7);});});}exports[_0x81c1('0x1c')]=function(_0xa2485d){var _0x360861=this;return new Promise(function(_0x127a0e,_0x1e05c3){return db[_0x81c1('0x1d')][_0x81c1('0x1e')]({'raw':_0xa2485d['options']?_0xa2485d[_0x81c1('0x1f')][_0x81c1('0x20')]===undefined?!![]:![]:!![],'where':_0xa2485d[_0x81c1('0x1f')]?_0xa2485d[_0x81c1('0x1f')]['where']||null:null,'attributes':_0xa2485d[_0x81c1('0x1f')]?_0xa2485d[_0x81c1('0x1f')]['attributes']||null:null,'limit':_0xa2485d['options']?_0xa2485d[_0x81c1('0x1f')][_0x81c1('0x21')]||null:null,'include':_0xa2485d[_0x81c1('0x1f')]?_0xa2485d[_0x81c1('0x1f')]['include']?_[_0x81c1('0x22')](_0xa2485d[_0x81c1('0x1f')][_0x81c1('0x23')],function(_0x3f38d8){return{'model':db[_0x3f38d8[_0x81c1('0x24')]],'as':_0x3f38d8['as'],'attributes':_0x3f38d8['attributes'],'include':_0x3f38d8[_0x81c1('0x23')]?_['map'](_0x3f38d8[_0x81c1('0x23')],function(_0x5d6a99){return{'model':db[_0x5d6a99['model']],'as':_0x5d6a99['as'],'attributes':_0x5d6a99[_0x81c1('0x25')],'include':_0x5d6a99[_0x81c1('0x23')]?_[_0x81c1('0x22')](_0x5d6a99['include'],function(_0x566a6d){return{'model':db[_0x566a6d['model']],'as':_0x566a6d['as'],'attributes':_0x566a6d[_0x81c1('0x25')]};}):[]};}):[]};}):[]:[]})[_0x81c1('0x12')](function(_0x4d70ad){logger[_0x81c1('0x13')](_0x81c1('0x1c'),_0xa2485d);logger[_0x81c1('0x15')](_0x81c1('0x1c'),_0xa2485d,JSON['stringify'](_0x4d70ad));_0x127a0e(_0x4d70ad);})[_0x81c1('0x1b')](function(_0x49b2fa){logger[_0x81c1('0x18')](_0x81c1('0x1c'),_0x49b2fa[_0x81c1('0x1a')],_0xa2485d);_0x1e05c3(_0x360861[_0x81c1('0x18')](0x1f4,_0x49b2fa['message']));});});};exports[_0x81c1('0x26')]=function(_0x17f896){var _0x189a50=this;return new Promise(function(_0x370cce,_0x5a5af1){return db[_0x81c1('0x1d')]['find']({'raw':_0x17f896[_0x81c1('0x1f')]?_0x17f896[_0x81c1('0x1f')][_0x81c1('0x20')]===undefined?!![]:![]:!![],'where':_0x17f896[_0x81c1('0x1f')]?_0x17f896[_0x81c1('0x1f')][_0x81c1('0x27')]||null:null,'attributes':_0x17f896[_0x81c1('0x1f')]?_0x17f896[_0x81c1('0x1f')]['attributes']||null:null,'include':_0x17f896['options']?_0x17f896[_0x81c1('0x1f')][_0x81c1('0x23')]?_[_0x81c1('0x22')](_0x17f896[_0x81c1('0x1f')][_0x81c1('0x23')],function(_0x55a7b3){return{'model':db[_0x55a7b3[_0x81c1('0x24')]],'as':_0x55a7b3['as'],'attributes':_0x55a7b3[_0x81c1('0x25')],'include':_0x55a7b3[_0x81c1('0x23')]?_[_0x81c1('0x22')](_0x55a7b3['include'],function(_0x1da9b6){return{'model':db[_0x1da9b6[_0x81c1('0x24')]],'as':_0x1da9b6['as'],'attributes':_0x1da9b6[_0x81c1('0x25')],'include':_0x1da9b6[_0x81c1('0x23')]?_[_0x81c1('0x22')](_0x1da9b6[_0x81c1('0x23')],function(_0x2f9fb8){return{'model':db[_0x2f9fb8['model']],'as':_0x2f9fb8['as'],'attributes':_0x2f9fb8[_0x81c1('0x25')]};}):[]};}):[]};}):[]:[]})[_0x81c1('0x12')](function(_0x1d72a1){logger[_0x81c1('0x13')](_0x81c1('0x26'),_0x17f896);logger[_0x81c1('0x15')]('ShowFaxQueue',_0x17f896,JSON[_0x81c1('0x17')](_0x1d72a1));_0x370cce(_0x1d72a1);})[_0x81c1('0x1b')](function(_0x122712){logger[_0x81c1('0x18')]('ShowFaxQueue',_0x122712[_0x81c1('0x1a')],_0x17f896);_0x5a5af1(_0x189a50['error'](0x1f4,_0x122712[_0x81c1('0x1a')]));});});};
\ No newline at end of file
index f501cfe..f7ade06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x889d=['length','faxQueue:','./faxQueue.events','save','remove','emit','removeListener','register'];(function(_0x517b2a,_0x711efb){var _0x1fe94a=function(_0x3f1c99){while(--_0x3f1c99){_0x517b2a['push'](_0x517b2a['shift']());}};_0x1fe94a(++_0x711efb);}(_0x889d,0x142));var _0xd889=function(_0xfcddad,_0x58b6f6){_0xfcddad=_0xfcddad-0x0;var _0x3317d1=_0x889d[_0xfcddad];return _0x3317d1;};'use strict';var FaxQueueEvents=require(_0xd889('0x0'));var events=[_0xd889('0x1'),_0xd889('0x2'),'update'];function createListener(_0x123d4c,_0x4b3488){return function(_0x54c1d5){_0x4b3488[_0xd889('0x3')](_0x123d4c,_0x54c1d5);};}function removeListener(_0x474e78,_0x456e52){return function(){FaxQueueEvents[_0xd889('0x4')](_0x474e78,_0x456e52);};}exports[_0xd889('0x5')]=function(_0x3d5f7c){for(var _0x387a3d=0x0,_0x29ea50=events[_0xd889('0x6')];_0x387a3d<_0x29ea50;_0x387a3d++){var _0x4c6d62=events[_0x387a3d];var _0x3590fe=createListener(_0xd889('0x7')+_0x4c6d62,_0x3d5f7c);FaxQueueEvents['on'](_0x4c6d62,_0x3590fe);}};
\ No newline at end of file
+var _0xcb2b=['remove','update','emit','removeListener','length','faxQueue:','./faxQueue.events','save'];(function(_0x577b05,_0x35ec50){var _0x56b309=function(_0x3b604d){while(--_0x3b604d){_0x577b05['push'](_0x577b05['shift']());}};_0x56b309(++_0x35ec50);}(_0xcb2b,0x156));var _0xbcb2=function(_0x1d00c7,_0x9b96b2){_0x1d00c7=_0x1d00c7-0x0;var _0x5b4f51=_0xcb2b[_0x1d00c7];return _0x5b4f51;};'use strict';var FaxQueueEvents=require(_0xbcb2('0x0'));var events=[_0xbcb2('0x1'),_0xbcb2('0x2'),_0xbcb2('0x3')];function createListener(_0xa73a54,_0x3d15d8){return function(_0x1682e1){_0x3d15d8[_0xbcb2('0x4')](_0xa73a54,_0x1682e1);};}function removeListener(_0x5f49b3,_0x54452d){return function(){FaxQueueEvents[_0xbcb2('0x5')](_0x5f49b3,_0x54452d);};}exports['register']=function(_0x15654f){for(var _0x413359=0x0,_0x21b271=events[_0xbcb2('0x6')];_0x413359<_0x21b271;_0x413359++){var _0x12a25c=events[_0x413359];var _0x40b729=createListener(_0xbcb2('0x7')+_0x12a25c,_0x15654f);FaxQueueEvents['on'](_0x12a25c,_0x40b729);}};
\ No newline at end of file
index 51d82d6..4033441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aa3=['put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents'];(function(_0x30e5e9,_0x2849a9){var _0x4ae8ca=function(_0x4abbc0){while(--_0x4abbc0){_0x30e5e9['push'](_0x30e5e9['shift']());}};_0x4ae8ca(++_0x2849a9);}(_0x2aa3,0x83));var _0x32aa=function(_0x7729da,_0xa5726e){_0x7729da=_0x7729da-0x0;var _0x1e54e1=_0x2aa3[_0x7729da];return _0x1e54e1;};'use strict';var multer=require(_0x32aa('0x0'));var util=require(_0x32aa('0x1'));var path=require(_0x32aa('0x2'));var timeout=require(_0x32aa('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x32aa('0x4'));var auth=require(_0x32aa('0x5'));var interaction=require(_0x32aa('0x6'));var config=require(_0x32aa('0x7'));var controller=require(_0x32aa('0x8'));router[_0x32aa('0x9')]('/',auth['isAuthenticated'](),controller[_0x32aa('0xa')]);router[_0x32aa('0x9')](_0x32aa('0xb'),auth[_0x32aa('0xc')](),controller[_0x32aa('0xd')]);router[_0x32aa('0x9')](_0x32aa('0xe'),auth[_0x32aa('0xc')](),controller['show']);router[_0x32aa('0x9')]('/:id/members',auth[_0x32aa('0xc')](),controller[_0x32aa('0xf')]);router[_0x32aa('0x9')](_0x32aa('0x10'),auth['isAuthenticated'](),controller[_0x32aa('0x11')]);router[_0x32aa('0x9')](_0x32aa('0x12'),auth['isAuthenticated'](),controller[_0x32aa('0x13')]);router[_0x32aa('0x14')]('/',auth[_0x32aa('0xc')](),controller[_0x32aa('0x15')]);router[_0x32aa('0x14')](_0x32aa('0x10'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x16')]);router['post'](_0x32aa('0x12'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x17')]);router[_0x32aa('0x18')](_0x32aa('0xe'),auth['isAuthenticated'](),controller[_0x32aa('0x19')]);router[_0x32aa('0x1a')](_0x32aa('0xe'),auth[_0x32aa('0xc')](),controller[_0x32aa('0x1b')]);router['delete']('/:id/teams',auth[_0x32aa('0xc')](),controller[_0x32aa('0x1c')]);router[_0x32aa('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x32aa('0x1d')]);module[_0x32aa('0x1e')]=router;
\ No newline at end of file
+var _0xf072=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','getAgents','create','post','addTeams','/:id/users','addAgents','update','delete','destroy','removeAgents','exports','multer'];(function(_0x3cc8cb,_0x31f8fe){var _0x427615=function(_0x4dda8e){while(--_0x4dda8e){_0x3cc8cb['push'](_0x3cc8cb['shift']());}};_0x427615(++_0x31f8fe);}(_0xf072,0x1cf));var _0x2f07=function(_0x16c5c6,_0x393e1b){_0x16c5c6=_0x16c5c6-0x0;var _0x5a2df2=_0xf072[_0x16c5c6];return _0x5a2df2;};'use strict';var multer=require(_0x2f07('0x0'));var util=require(_0x2f07('0x1'));var path=require(_0x2f07('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f07('0x3'));var router=express['Router']();var fs_extra=require(_0x2f07('0x4'));var auth=require(_0x2f07('0x5'));var interaction=require(_0x2f07('0x6'));var config=require('../../config/environment');var controller=require(_0x2f07('0x7'));router[_0x2f07('0x8')]('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0xa')]);router[_0x2f07('0x8')](_0x2f07('0xb'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xc')]);router[_0x2f07('0x8')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xe')]);router[_0x2f07('0x8')](_0x2f07('0xf'),auth[_0x2f07('0x9')](),controller['getMembers']);router[_0x2f07('0x8')](_0x2f07('0x10'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x11')]);router['get']('/:id/users',auth[_0x2f07('0x9')](),controller[_0x2f07('0x12')]);router['post']('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0x13')]);router[_0x2f07('0x14')]('/:id/teams',auth[_0x2f07('0x9')](),controller[_0x2f07('0x15')]);router[_0x2f07('0x14')](_0x2f07('0x16'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x17')]);router['put'](_0x2f07('0xd'),auth['isAuthenticated'](),controller[_0x2f07('0x18')]);router[_0x2f07('0x19')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x1a')]);router[_0x2f07('0x19')](_0x2f07('0x10'),auth[_0x2f07('0x9')](),controller['removeTeams']);router[_0x2f07('0x19')]('/:id/users',auth[_0x2f07('0x9')](),controller[_0x2f07('0x1b')]);module[_0x2f07('0x1c')]=router;
\ No newline at end of file
index 1b99579..f9b313a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe5=['STRING','moment','exports'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xabe5,0x1c3));var _0x5abe=function(_0x412e1e,_0x22168b){_0x412e1e=_0x412e1e-0x0;var _0x219d45=_0xabe5[_0x412e1e];return _0x219d45;};'use strict';var moment=require(_0x5abe('0x0'));var Sequelize=require('sequelize');module[_0x5abe('0x1')]={'uniqueid':{'type':Sequelize[_0x5abe('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4371=['STRING','DATE','moment','sequelize'];(function(_0x50a51e,_0x56e813){var _0x8a736e=function(_0x2006a8){while(--_0x2006a8){_0x50a51e['push'](_0x50a51e['shift']());}};_0x8a736e(++_0x56e813);}(_0x4371,0x8a));var _0x1437=function(_0x393ebf,_0x449e5a){_0x393ebf=_0x393ebf-0x0;var _0x5808c2=_0x4371[_0x393ebf];return _0x5808c2;};'use strict';var moment=require(_0x1437('0x0'));var Sequelize=require(_0x1437('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x1437('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x1437('0x2')]},'joinAt':{'type':Sequelize[_0x1437('0x3')]},'leaveAt':{'type':Sequelize[_0x1437('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 35e6c0e..9361df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd8=['merge','type','VIRTUAL','options','FaxQueueReport','includeAll','include','findAll','rows','show','params','catch','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter'];(function(_0x2c66f6,_0x2dae26){var _0x1e5894=function(_0x1da1ab){while(--_0x1da1ab){_0x2c66f6['push'](_0x2c66f6['shift']());}};_0x1e5894(++_0x2dae26);}(_0x5cd8,0x1d2));var _0x85cd=function(_0x284bde,_0x1cc153){_0x284bde=_0x284bde-0x0;var _0x3a311e=_0x5cd8[_0x284bde];return _0x3a311e;};'use strict';var emlformat=require(_0x85cd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x85cd('0x1'));var jsonpatch=require(_0x85cd('0x2'));var rp=require(_0x85cd('0x3'));var moment=require(_0x85cd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x85cd('0x5'));var util=require('util');var path=require(_0x85cd('0x6'));var sox=require(_0x85cd('0x7'));var csv=require(_0x85cd('0x8'));var ejs=require(_0x85cd('0x9'));var fs=require('fs');var fs_extra=require(_0x85cd('0xa'));var _=require('lodash');var squel=require(_0x85cd('0xb'));var crypto=require(_0x85cd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x85cd('0xd'));var toCsv=require(_0x85cd('0x8'));var querystring=require(_0x85cd('0xe'));var Papa=require(_0x85cd('0xf'));var Redis=require(_0x85cd('0x10'));var authService=require(_0x85cd('0x11'));var qs=require(_0x85cd('0x12'));var as=require(_0x85cd('0x13'));var hardwareService=require(_0x85cd('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x85cd('0x15'));var config=require(_0x85cd('0x16'));var licenseUtil=require(_0x85cd('0x17'));var db=require(_0x85cd('0x18'))['db'];function respondWithStatusCode(_0x4f054b,_0x3c3ffe){_0x3c3ffe=_0x3c3ffe||0xcc;return function(_0x398f7c){if(_0x398f7c){return _0x4f054b[_0x85cd('0x19')](_0x3c3ffe);}return _0x4f054b[_0x85cd('0x1a')](_0x3c3ffe)[_0x85cd('0x1b')]();};}function respondWithResult(_0x3639c2,_0x58c13e){_0x58c13e=_0x58c13e||0xc8;return function(_0x3d4c54){if(_0x3d4c54){return _0x3639c2['status'](_0x58c13e)[_0x85cd('0x1c')](_0x3d4c54);}};}function respondWithFilteredResult(_0x3e5e89,_0x208490){return function(_0x424a01){if(_0x424a01){var _0xedc03b=typeof _0x208490['offset']===_0x85cd('0x1d')&&typeof _0x208490['limit']===_0x85cd('0x1d');var _0x51dc9c=_0x424a01[_0x85cd('0x1e')];var _0x4d9c64=_0xedc03b?0x0:_0x208490[_0x85cd('0x1f')];var _0x11292e=_0xedc03b?_0x424a01[_0x85cd('0x1e')]:_0x208490[_0x85cd('0x1f')]+_0x208490[_0x85cd('0x20')];var _0x1123c0;if(_0x11292e>=_0x51dc9c){_0x11292e=_0x51dc9c;_0x1123c0=0xc8;}else{_0x1123c0=0xce;}_0x3e5e89[_0x85cd('0x1a')](_0x1123c0);return _0x3e5e89[_0x85cd('0x21')]('Content-Range',_0x4d9c64+'-'+_0x11292e+'/'+_0x51dc9c)[_0x85cd('0x1c')](_0x424a01);}return null;};}function patchUpdates(_0x425779){return function(_0x5bb4cc){try{jsonpatch['apply'](_0x5bb4cc,_0x425779,!![]);}catch(_0x5c268f){return BPromise['reject'](_0x5c268f);}return _0x5bb4cc[_0x85cd('0x22')]();};}function saveUpdates(_0x597e6e,_0x3cf6c6){return function(_0x2385e7){if(_0x2385e7){return _0x2385e7[_0x85cd('0x23')](_0x597e6e)[_0x85cd('0x24')](function(_0x592b77){return _0x592b77;});}return null;};}function removeEntity(_0x290b57,_0x2b00a8){return function(_0x358202){if(_0x358202){return _0x358202[_0x85cd('0x25')]()[_0x85cd('0x24')](function(){_0x290b57[_0x85cd('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb3500f,_0x421baa){return function(_0x216106){if(!_0x216106){_0xb3500f[_0x85cd('0x19')](0x194);}return _0x216106;};}function handleError(_0x560e27,_0x3b3b9f){_0x3b3b9f=_0x3b3b9f||0x1f4;return function(_0x43a062){logger[_0x85cd('0x26')](_0x43a062['stack']);if(_0x43a062['name']){delete _0x43a062[_0x85cd('0x27')];}_0x560e27['status'](_0x3b3b9f)[_0x85cd('0x28')](_0x43a062);};}exports[_0x85cd('0x29')]=function(_0x26e79c,_0x1d25a8){var _0x5dba6a={},_0x225802={},_0x2171b9={'count':0x0,'rows':[]};var _0x220a88=_[_0x85cd('0x2a')](db['FaxQueueReport'][_0x85cd('0x2b')],function(_0x1334c1){return{'name':_0x1334c1[_0x85cd('0x2c')],'type':_0x1334c1['type']['key']};});_0x225802[_0x85cd('0x2d')]=_[_0x85cd('0x2a')](_0x220a88,_0x85cd('0x27'));_0x225802[_0x85cd('0x2e')]=_[_0x85cd('0x2f')](_0x26e79c[_0x85cd('0x2e')]);_0x225802[_0x85cd('0x30')]=_[_0x85cd('0x31')](_0x225802['model'],_0x225802[_0x85cd('0x2e')]);_0x5dba6a[_0x85cd('0x32')]=_[_0x85cd('0x31')](_0x225802[_0x85cd('0x2d')],qs['fields'](_0x26e79c[_0x85cd('0x2e')][_0x85cd('0x33')]));_0x5dba6a[_0x85cd('0x32')]=_0x5dba6a[_0x85cd('0x32')][_0x85cd('0x34')]?_0x5dba6a['attributes']:_0x225802[_0x85cd('0x2d')];if(!_0x26e79c[_0x85cd('0x2e')]['hasOwnProperty'](_0x85cd('0x35'))){_0x5dba6a[_0x85cd('0x20')]=qs[_0x85cd('0x20')](_0x26e79c['query']['limit']);_0x5dba6a[_0x85cd('0x1f')]=qs[_0x85cd('0x1f')](_0x26e79c['query']['offset']);}_0x5dba6a[_0x85cd('0x36')]=qs['sort'](_0x26e79c['query'][_0x85cd('0x37')]);_0x5dba6a[_0x85cd('0x38')]=qs[_0x85cd('0x30')](_[_0x85cd('0x39')](_0x26e79c[_0x85cd('0x2e')],_0x225802[_0x85cd('0x30')]),_0x220a88);if(_0x26e79c[_0x85cd('0x2e')][_0x85cd('0x3a')]){_0x5dba6a[_0x85cd('0x38')]=_[_0x85cd('0x3b')](_0x5dba6a[_0x85cd('0x38')],{'$or':_[_0x85cd('0x2a')](_0x220a88,function(_0x460737){if(_0x460737[_0x85cd('0x3c')]!==_0x85cd('0x3d')){var _0x4d16bf={};_0x4d16bf[_0x460737[_0x85cd('0x27')]]={'$like':'%'+_0x26e79c[_0x85cd('0x2e')][_0x85cd('0x3a')]+'%'};return _0x4d16bf;}})});}_0x5dba6a=_[_0x85cd('0x3b')]({},_0x5dba6a,_0x26e79c[_0x85cd('0x3e')]);var _0x1a9740={'where':_0x5dba6a[_0x85cd('0x38')]};return db[_0x85cd('0x3f')][_0x85cd('0x1e')](_0x1a9740)[_0x85cd('0x24')](function(_0x16d6a2){_0x2171b9['count']=_0x16d6a2;if(_0x26e79c['query'][_0x85cd('0x40')]){_0x5dba6a[_0x85cd('0x41')]=[{'all':!![]}];}return db[_0x85cd('0x3f')][_0x85cd('0x42')](_0x5dba6a);})['then'](function(_0x324626){_0x2171b9[_0x85cd('0x43')]=_0x324626;return _0x2171b9;})[_0x85cd('0x24')](respondWithFilteredResult(_0x1d25a8,_0x5dba6a))['catch'](handleError(_0x1d25a8,null));};exports[_0x85cd('0x44')]=function(_0x3c9dc5,_0x316742){var _0xd1c180={'raw':!![],'where':{'id':_0x3c9dc5[_0x85cd('0x45')]['id']}},_0x2a0518={};_0x2a0518['model']=_['keys'](db[_0x85cd('0x3f')][_0x85cd('0x2b')]);_0x2a0518[_0x85cd('0x2e')]=_['keys'](_0x3c9dc5[_0x85cd('0x2e')]);_0x2a0518[_0x85cd('0x30')]=_[_0x85cd('0x31')](_0x2a0518['model'],_0x2a0518[_0x85cd('0x2e')]);_0xd1c180['attributes']=_['intersection'](_0x2a0518[_0x85cd('0x2d')],qs[_0x85cd('0x33')](_0x3c9dc5[_0x85cd('0x2e')][_0x85cd('0x33')]));_0xd1c180[_0x85cd('0x32')]=_0xd1c180[_0x85cd('0x32')]['length']?_0xd1c180[_0x85cd('0x32')]:_0x2a0518[_0x85cd('0x2d')];if(_0x3c9dc5[_0x85cd('0x2e')][_0x85cd('0x40')]){_0xd1c180[_0x85cd('0x41')]=[{'all':!![]}];}_0xd1c180=_[_0x85cd('0x3b')]({},_0xd1c180,_0x3c9dc5[_0x85cd('0x3e')]);return db[_0x85cd('0x3f')]['find'](_0xd1c180)['then'](handleEntityNotFound(_0x316742,null))[_0x85cd('0x24')](respondWithResult(_0x316742,null))[_0x85cd('0x46')](handleError(_0x316742,null));};exports[_0x85cd('0x47')]=function(_0x377a56,_0x446e64){return db[_0x85cd('0x3f')]['create'](_0x377a56[_0x85cd('0x48')],{})[_0x85cd('0x24')](respondWithResult(_0x446e64,0xc9))[_0x85cd('0x46')](handleError(_0x446e64,null));};exports['update']=function(_0x4c50bc,_0x5a746c){if(_0x4c50bc['body']['id']){delete _0x4c50bc['body']['id'];}return db[_0x85cd('0x3f')]['find']({'where':{'id':_0x4c50bc['params']['id']}})[_0x85cd('0x24')](handleEntityNotFound(_0x5a746c,null))[_0x85cd('0x24')](saveUpdates(_0x4c50bc[_0x85cd('0x48')],null))[_0x85cd('0x24')](respondWithResult(_0x5a746c,null))['catch'](handleError(_0x5a746c,null));};exports[_0x85cd('0x25')]=function(_0x15f4f1,_0x5839a0){return db['FaxQueueReport'][_0x85cd('0x49')]({'where':{'id':_0x15f4f1['params']['id']}})[_0x85cd('0x24')](handleEntityNotFound(_0x5839a0,null))['then'](removeEntity(_0x5839a0,null))[_0x85cd('0x46')](handleError(_0x5839a0,null));};exports[_0x85cd('0x4a')]=function(_0x32a8bc,_0x48cd9d){return db[_0x85cd('0x3f')][_0x85cd('0x4a')]()[_0x85cd('0x24')](respondWithResult(_0x48cd9d,null))[_0x85cd('0x46')](handleError(_0x48cd9d,null));};
\ No newline at end of file
+var _0xe205=['includeAll','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','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','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','stack','name','send','index','FaxQueueReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xe205,0xa7));var _0x5e20=function(_0x20c412,_0x767aa3){_0x20c412=_0x20c412-0x0;var _0x128aa0=_0xe205[_0x20c412];return _0x128aa0;};'use strict';var emlformat=require(_0x5e20('0x0'));var rimraf=require(_0x5e20('0x1'));var zipdir=require(_0x5e20('0x2'));var jsonpatch=require(_0x5e20('0x3'));var rp=require(_0x5e20('0x4'));var moment=require(_0x5e20('0x5'));var BPromise=require(_0x5e20('0x6'));var Mustache=require(_0x5e20('0x7'));var util=require(_0x5e20('0x8'));var path=require('path');var sox=require(_0x5e20('0x9'));var csv=require(_0x5e20('0xa'));var ejs=require(_0x5e20('0xb'));var fs=require('fs');var fs_extra=require(_0x5e20('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5e20('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5e20('0xa'));var querystring=require(_0x5e20('0xe'));var Papa=require('papaparse');var Redis=require(_0x5e20('0xf'));var authService=require(_0x5e20('0x10'));var qs=require(_0x5e20('0x11'));var as=require(_0x5e20('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5e20('0x13'))(_0x5e20('0x14'));var utils=require(_0x5e20('0x15'));var config=require(_0x5e20('0x16'));var licenseUtil=require(_0x5e20('0x17'));var db=require(_0x5e20('0x18'))['db'];function respondWithStatusCode(_0x54deee,_0x19eacf){_0x19eacf=_0x19eacf||0xcc;return function(_0x29b7a2){if(_0x29b7a2){return _0x54deee[_0x5e20('0x19')](_0x19eacf);}return _0x54deee['status'](_0x19eacf)[_0x5e20('0x1a')]();};}function respondWithResult(_0x5d827e,_0x1f47f3){_0x1f47f3=_0x1f47f3||0xc8;return function(_0x5ba833){if(_0x5ba833){return _0x5d827e[_0x5e20('0x1b')](_0x1f47f3)[_0x5e20('0x1c')](_0x5ba833);}};}function respondWithFilteredResult(_0x275026,_0x148ada){return function(_0x294df8){if(_0x294df8){var _0x542b3c=typeof _0x148ada[_0x5e20('0x1d')]===_0x5e20('0x1e')&&typeof _0x148ada[_0x5e20('0x1f')]===_0x5e20('0x1e');var _0x2f194b=_0x294df8[_0x5e20('0x20')];var _0x1cc706=_0x542b3c?0x0:_0x148ada[_0x5e20('0x1d')];var _0x4d3e4a=_0x542b3c?_0x294df8[_0x5e20('0x20')]:_0x148ada[_0x5e20('0x1d')]+_0x148ada['limit'];var _0x295eb3;if(_0x4d3e4a>=_0x2f194b){_0x4d3e4a=_0x2f194b;_0x295eb3=0xc8;}else{_0x295eb3=0xce;}_0x275026[_0x5e20('0x1b')](_0x295eb3);return _0x275026[_0x5e20('0x21')](_0x5e20('0x22'),_0x1cc706+'-'+_0x4d3e4a+'/'+_0x2f194b)['json'](_0x294df8);}return null;};}function patchUpdates(_0x2954fc){return function(_0x50f222){try{jsonpatch['apply'](_0x50f222,_0x2954fc,!![]);}catch(_0x57c7c5){return BPromise['reject'](_0x57c7c5);}return _0x50f222[_0x5e20('0x23')]();};}function saveUpdates(_0x5cca90,_0x3d89e4){return function(_0x29b111){if(_0x29b111){return _0x29b111[_0x5e20('0x24')](_0x5cca90)[_0x5e20('0x25')](function(_0x3ef7fa){return _0x3ef7fa;});}return null;};}function removeEntity(_0x2d4614,_0x4c5732){return function(_0x15705f){if(_0x15705f){return _0x15705f['destroy']()['then'](function(){_0x2d4614[_0x5e20('0x1b')](0xcc)[_0x5e20('0x1a')]();});}};}function handleEntityNotFound(_0x2bae08,_0x1b01af){return function(_0xbf7a24){if(!_0xbf7a24){_0x2bae08[_0x5e20('0x19')](0x194);}return _0xbf7a24;};}function handleError(_0x2973b3,_0x5809fd){_0x5809fd=_0x5809fd||0x1f4;return function(_0x3bf4f4){logger[_0x5e20('0x26')](_0x3bf4f4[_0x5e20('0x27')]);if(_0x3bf4f4[_0x5e20('0x28')]){delete _0x3bf4f4['name'];}_0x2973b3[_0x5e20('0x1b')](_0x5809fd)[_0x5e20('0x29')](_0x3bf4f4);};}exports[_0x5e20('0x2a')]=function(_0x222e7a,_0xbed73a){var _0x19709b={},_0x5ec45b={},_0xbc2b0e={'count':0x0,'rows':[]};var _0x34a3d6=_['map'](db[_0x5e20('0x2b')][_0x5e20('0x2c')],function(_0x335f1e){return{'name':_0x335f1e[_0x5e20('0x2d')],'type':_0x335f1e[_0x5e20('0x2e')][_0x5e20('0x2f')]};});_0x5ec45b['model']=_[_0x5e20('0x30')](_0x34a3d6,_0x5e20('0x28'));_0x5ec45b[_0x5e20('0x31')]=_[_0x5e20('0x32')](_0x222e7a[_0x5e20('0x31')]);_0x5ec45b[_0x5e20('0x33')]=_[_0x5e20('0x34')](_0x5ec45b[_0x5e20('0x35')],_0x5ec45b[_0x5e20('0x31')]);_0x19709b[_0x5e20('0x36')]=_[_0x5e20('0x34')](_0x5ec45b['model'],qs[_0x5e20('0x37')](_0x222e7a[_0x5e20('0x31')][_0x5e20('0x37')]));_0x19709b['attributes']=_0x19709b[_0x5e20('0x36')][_0x5e20('0x38')]?_0x19709b[_0x5e20('0x36')]:_0x5ec45b[_0x5e20('0x35')];if(!_0x222e7a[_0x5e20('0x31')][_0x5e20('0x39')](_0x5e20('0x3a'))){_0x19709b[_0x5e20('0x1f')]=qs[_0x5e20('0x1f')](_0x222e7a[_0x5e20('0x31')][_0x5e20('0x1f')]);_0x19709b[_0x5e20('0x1d')]=qs[_0x5e20('0x1d')](_0x222e7a[_0x5e20('0x31')]['offset']);}_0x19709b[_0x5e20('0x3b')]=qs['sort'](_0x222e7a['query'][_0x5e20('0x3c')]);_0x19709b[_0x5e20('0x3d')]=qs['filters'](_[_0x5e20('0x3e')](_0x222e7a[_0x5e20('0x31')],_0x5ec45b['filters']),_0x34a3d6);if(_0x222e7a[_0x5e20('0x31')][_0x5e20('0x3f')]){_0x19709b[_0x5e20('0x3d')]=_[_0x5e20('0x40')](_0x19709b[_0x5e20('0x3d')],{'$or':_[_0x5e20('0x30')](_0x34a3d6,function(_0x94925e){if(_0x94925e[_0x5e20('0x2e')]!==_0x5e20('0x41')){var _0x20be56={};_0x20be56[_0x94925e[_0x5e20('0x28')]]={'$like':'%'+_0x222e7a[_0x5e20('0x31')][_0x5e20('0x3f')]+'%'};return _0x20be56;}})});}_0x19709b=_[_0x5e20('0x40')]({},_0x19709b,_0x222e7a[_0x5e20('0x42')]);var _0x3d618c={'where':_0x19709b[_0x5e20('0x3d')]};return db[_0x5e20('0x2b')]['count'](_0x3d618c)[_0x5e20('0x25')](function(_0x29215f){_0xbc2b0e[_0x5e20('0x20')]=_0x29215f;if(_0x222e7a[_0x5e20('0x31')][_0x5e20('0x43')]){_0x19709b['include']=[{'all':!![]}];}return db[_0x5e20('0x2b')][_0x5e20('0x44')](_0x19709b);})[_0x5e20('0x25')](function(_0x24c05f){_0xbc2b0e[_0x5e20('0x45')]=_0x24c05f;return _0xbc2b0e;})[_0x5e20('0x25')](respondWithFilteredResult(_0xbed73a,_0x19709b))['catch'](handleError(_0xbed73a,null));};exports[_0x5e20('0x46')]=function(_0xc24cce,_0xa52d83){var _0x5a21f0={'raw':!![],'where':{'id':_0xc24cce[_0x5e20('0x47')]['id']}},_0x2b031d={};_0x2b031d[_0x5e20('0x35')]=_[_0x5e20('0x32')](db[_0x5e20('0x2b')][_0x5e20('0x2c')]);_0x2b031d[_0x5e20('0x31')]=_[_0x5e20('0x32')](_0xc24cce['query']);_0x2b031d[_0x5e20('0x33')]=_[_0x5e20('0x34')](_0x2b031d[_0x5e20('0x35')],_0x2b031d['query']);_0x5a21f0[_0x5e20('0x36')]=_['intersection'](_0x2b031d[_0x5e20('0x35')],qs[_0x5e20('0x37')](_0xc24cce[_0x5e20('0x31')][_0x5e20('0x37')]));_0x5a21f0[_0x5e20('0x36')]=_0x5a21f0['attributes'][_0x5e20('0x38')]?_0x5a21f0['attributes']:_0x2b031d['model'];if(_0xc24cce[_0x5e20('0x31')][_0x5e20('0x43')]){_0x5a21f0[_0x5e20('0x48')]=[{'all':!![]}];}_0x5a21f0=_[_0x5e20('0x40')]({},_0x5a21f0,_0xc24cce[_0x5e20('0x42')]);return db[_0x5e20('0x2b')][_0x5e20('0x49')](_0x5a21f0)['then'](handleEntityNotFound(_0xa52d83,null))['then'](respondWithResult(_0xa52d83,null))[_0x5e20('0x4a')](handleError(_0xa52d83,null));};exports[_0x5e20('0x4b')]=function(_0x5e84bd,_0x22b84e){return db[_0x5e20('0x2b')][_0x5e20('0x4b')](_0x5e84bd[_0x5e20('0x4c')],{})[_0x5e20('0x25')](respondWithResult(_0x22b84e,0xc9))['catch'](handleError(_0x22b84e,null));};exports[_0x5e20('0x24')]=function(_0x245b52,_0x25491e){if(_0x245b52[_0x5e20('0x4c')]['id']){delete _0x245b52[_0x5e20('0x4c')]['id'];}return db[_0x5e20('0x2b')][_0x5e20('0x49')]({'where':{'id':_0x245b52[_0x5e20('0x47')]['id']}})['then'](handleEntityNotFound(_0x25491e,null))['then'](saveUpdates(_0x245b52['body'],null))[_0x5e20('0x25')](respondWithResult(_0x25491e,null))[_0x5e20('0x4a')](handleError(_0x25491e,null));};exports['destroy']=function(_0x4392ca,_0x4bfea7){return db[_0x5e20('0x2b')]['find']({'where':{'id':_0x4392ca[_0x5e20('0x47')]['id']}})['then'](handleEntityNotFound(_0x4bfea7,null))[_0x5e20('0x25')](removeEntity(_0x4bfea7,null))[_0x5e20('0x4a')](handleError(_0x4bfea7,null));};exports[_0x5e20('0x4d')]=function(_0x190e07,_0x2a64ba){return db[_0x5e20('0x2b')][_0x5e20('0x4d')]()[_0x5e20('0x25')](respondWithResult(_0x2a64ba,null))[_0x5e20('0x4a')](handleError(_0x2a64ba,null));};
\ No newline at end of file
index 43d0e84..1088853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_fax_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport'];(function(_0x21c6bf,_0x25897e){var _0x109308=function(_0x1fab2f){while(--_0x1fab2f){_0x21c6bf['push'](_0x21c6bf['shift']());}};_0x109308(++_0x25897e);}(_0x7a54,0x106));var _0x47a5=function(_0x49715d,_0x2d335d){_0x49715d=_0x49715d-0x0;var _0x1d2708=_0x7a54[_0x49715d];return _0x1d2708;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x199a85,_0x3b0872){var _0x5c56e3=function(_0xb067ce){while(--_0xb067ce){_0x199a85['push'](_0x199a85['shift']());}};_0x5c56e3(++_0x3b0872);}(_0x53ec,0x192));var _0xc53e=function(_0x3e25ba,_0x4d5399){_0x3e25ba=_0x3e25ba-0x0;var _0x393fb8=_0x53ec[_0x3e25ba];return _0x393fb8;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 29b723d..f90f971 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eb7=['client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','UpdateFaxQueueReport','update','raw','where','attributes','limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x1eb7,0xeb));var _0x71eb=function(_0x39744c,_0x2c65cc){_0x39744c=_0x39744c-0x0;var _0x522587=_0x1eb7[_0x39744c];return _0x522587;};'use strict';var _=require(_0x71eb('0x0'));var util=require(_0x71eb('0x1'));var moment=require('moment');var BPromise=require(_0x71eb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x71eb('0x3'));var db=require(_0x71eb('0x4'))['db'];var utils=require(_0x71eb('0x5'));var logger=require(_0x71eb('0x6'))(_0x71eb('0x7'));var config=require(_0x71eb('0x8'));var jayson=require(_0x71eb('0x9'));var client=jayson[_0x71eb('0xa')][_0x71eb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4fcf0d,_0x1e3abb,_0x646483){return new BPromise(function(_0x18d184,_0x1d2b53){return client[_0x71eb('0xc')](_0x4fcf0d,_0x646483)[_0x71eb('0xd')](function(_0x4893e8){logger[_0x71eb('0xe')](_0x71eb('0xf'),_0x1e3abb,_0x71eb('0x10'));logger[_0x71eb('0x11')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x1e3abb,'request\x20sent',JSON[_0x71eb('0x12')](_0x4893e8));if(_0x4893e8[_0x71eb('0x13')]){if(_0x4893e8[_0x71eb('0x13')][_0x71eb('0x14')]===0x1f4){logger[_0x71eb('0x13')](_0x71eb('0xf'),_0x1e3abb,_0x4893e8[_0x71eb('0x13')][_0x71eb('0x15')]);return _0x1d2b53(_0x4893e8[_0x71eb('0x13')][_0x71eb('0x15')]);}logger[_0x71eb('0x13')](_0x71eb('0xf'),_0x1e3abb,_0x4893e8[_0x71eb('0x13')][_0x71eb('0x15')]);return _0x18d184(_0x4893e8['error']['message']);}else{logger[_0x71eb('0xe')](_0x71eb('0xf'),_0x1e3abb,_0x71eb('0x10'));_0x18d184(_0x4893e8[_0x71eb('0x16')][_0x71eb('0x15')]);}})[_0x71eb('0x17')](function(_0x155cec){logger[_0x71eb('0x13')](_0x71eb('0xf'),_0x1e3abb,_0x155cec);_0x1d2b53(_0x155cec);});});}exports[_0x71eb('0x18')]=function(_0x7ebe86){var _0x448631=this;return new Promise(function(_0x2d95c8,_0x2998c5){return db[_0x71eb('0x19')][_0x71eb('0x1a')](_0x7ebe86[_0x71eb('0x1b')],{'raw':_0x7ebe86[_0x71eb('0x1c')]?_0x7ebe86[_0x71eb('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x71eb('0xd')](function(_0xe4aa4c){logger['info'](_0x71eb('0x18'),_0x7ebe86);logger[_0x71eb('0x11')](_0x71eb('0x18'),_0x7ebe86,JSON[_0x71eb('0x12')](_0xe4aa4c));_0x2d95c8(_0xe4aa4c);})[_0x71eb('0x17')](function(_0x279ddd){logger[_0x71eb('0x13')](_0x71eb('0x18'),_0x279ddd['message'],_0x7ebe86);_0x2998c5(_0x448631[_0x71eb('0x13')](0x1f4,_0x279ddd['message']));});});};exports[_0x71eb('0x1d')]=function(_0x23bc4f){var _0xa748e4=this;return new Promise(function(_0xfe7240,_0x76841b){return db[_0x71eb('0x19')][_0x71eb('0x1e')](_0x23bc4f[_0x71eb('0x1b')],{'raw':_0x23bc4f[_0x71eb('0x1c')]?_0x23bc4f['options'][_0x71eb('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23bc4f[_0x71eb('0x1c')]?_0x23bc4f['options'][_0x71eb('0x20')]||null:null,'attributes':_0x23bc4f[_0x71eb('0x1c')]?_0x23bc4f[_0x71eb('0x1c')][_0x71eb('0x21')]||null:null,'limit':_0x23bc4f[_0x71eb('0x1c')]?_0x23bc4f[_0x71eb('0x1c')][_0x71eb('0x22')]||null:null})[_0x71eb('0xd')](function(_0x2b75e4){logger[_0x71eb('0xe')](_0x71eb('0x1d'),_0x23bc4f);logger[_0x71eb('0x11')](_0x71eb('0x1d'),_0x23bc4f,JSON[_0x71eb('0x12')](_0x2b75e4));_0xfe7240(_0x2b75e4);})[_0x71eb('0x17')](function(_0x4f9bf9){logger[_0x71eb('0x13')]('UpdateFaxQueueReport',_0x4f9bf9[_0x71eb('0x15')],_0x23bc4f);_0x76841b(_0xa748e4[_0x71eb('0x13')](0x1f4,_0x4f9bf9[_0x71eb('0x15')]));});});};
\ No newline at end of file
+var _0x3184=['limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','where','attributes'];(function(_0x283432,_0x389be1){var _0x51bd72=function(_0x224364){while(--_0x224364){_0x283432['push'](_0x283432['shift']());}};_0x51bd72(++_0x389be1);}(_0x3184,0xcd));var _0x4318=function(_0x46aa6f,_0xf7b072){_0x46aa6f=_0x46aa6f-0x0;var _0x44759c=_0x3184[_0x46aa6f];return _0x44759c;};'use strict';var _=require(_0x4318('0x0'));var util=require(_0x4318('0x1'));var moment=require('moment');var BPromise=require(_0x4318('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4318('0x3'));var db=require(_0x4318('0x4'))['db'];var utils=require(_0x4318('0x5'));var logger=require(_0x4318('0x6'))(_0x4318('0x7'));var config=require(_0x4318('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4318('0x9')][_0x4318('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fd766,_0x2479dd,_0x13f2c0){return new BPromise(function(_0x3188f5,_0x5dc7d8){return client[_0x4318('0xb')](_0x4fd766,_0x13f2c0)[_0x4318('0xc')](function(_0x559b81){logger[_0x4318('0xd')](_0x4318('0xe'),_0x2479dd,_0x4318('0xf'));logger[_0x4318('0x10')](_0x4318('0x11'),_0x2479dd,_0x4318('0xf'),JSON[_0x4318('0x12')](_0x559b81));if(_0x559b81[_0x4318('0x13')]){if(_0x559b81[_0x4318('0x13')][_0x4318('0x14')]===0x1f4){logger[_0x4318('0x13')](_0x4318('0xe'),_0x2479dd,_0x559b81[_0x4318('0x13')]['message']);return _0x5dc7d8(_0x559b81[_0x4318('0x13')][_0x4318('0x15')]);}logger[_0x4318('0x13')](_0x4318('0xe'),_0x2479dd,_0x559b81[_0x4318('0x13')][_0x4318('0x15')]);return _0x3188f5(_0x559b81[_0x4318('0x13')][_0x4318('0x15')]);}else{logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x2479dd,_0x4318('0xf'));_0x3188f5(_0x559b81[_0x4318('0x16')][_0x4318('0x15')]);}})[_0x4318('0x17')](function(_0x5cab50){logger[_0x4318('0x13')](_0x4318('0xe'),_0x2479dd,_0x5cab50);_0x5dc7d8(_0x5cab50);});});}exports[_0x4318('0x18')]=function(_0x3079d1){var _0x369ea1=this;return new Promise(function(_0x1ebcee,_0x276565){return db['FaxQueueReport'][_0x4318('0x19')](_0x3079d1[_0x4318('0x1a')],{'raw':_0x3079d1[_0x4318('0x1b')]?_0x3079d1[_0x4318('0x1b')][_0x4318('0x1c')]===undefined?!![]:![]:!![]})[_0x4318('0xc')](function(_0x1795df){logger[_0x4318('0xd')](_0x4318('0x18'),_0x3079d1);logger[_0x4318('0x10')]('CreateFaxQueueReport',_0x3079d1,JSON[_0x4318('0x12')](_0x1795df));_0x1ebcee(_0x1795df);})['catch'](function(_0x53413c){logger[_0x4318('0x13')](_0x4318('0x18'),_0x53413c[_0x4318('0x15')],_0x3079d1);_0x276565(_0x369ea1['error'](0x1f4,_0x53413c['message']));});});};exports[_0x4318('0x1d')]=function(_0x1115bc){var _0x48c6a6=this;return new Promise(function(_0x226275,_0x5e070e){return db['FaxQueueReport'][_0x4318('0x1e')](_0x1115bc[_0x4318('0x1a')],{'raw':_0x1115bc[_0x4318('0x1b')]?_0x1115bc[_0x4318('0x1b')][_0x4318('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1115bc['options']?_0x1115bc['options'][_0x4318('0x1f')]||null:null,'attributes':_0x1115bc['options']?_0x1115bc['options'][_0x4318('0x20')]||null:null,'limit':_0x1115bc[_0x4318('0x1b')]?_0x1115bc[_0x4318('0x1b')][_0x4318('0x21')]||null:null})[_0x4318('0xc')](function(_0x4ed1d6){logger[_0x4318('0xd')](_0x4318('0x1d'),_0x1115bc);logger[_0x4318('0x10')]('UpdateFaxQueueReport',_0x1115bc,JSON[_0x4318('0x12')](_0x4ed1d6));_0x226275(_0x4ed1d6);})[_0x4318('0x17')](function(_0x649ecc){logger[_0x4318('0x13')]('UpdateFaxQueueReport',_0x649ecc['message'],_0x1115bc);_0x5e070e(_0x48c6a6[_0x4318('0x13')](0x1f4,_0x649ecc['message']));});});};
\ No newline at end of file
index 78465cd..9e9d20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc678=['isAuthenticated','describe','show','post','create','put','/:id','update','destroy','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get'];(function(_0x231128,_0x7b5bdb){var _0x4bf137=function(_0x20dfcb){while(--_0x20dfcb){_0x231128['push'](_0x231128['shift']());}};_0x4bf137(++_0x7b5bdb);}(_0xc678,0x91));var _0x8c67=function(_0x2b2d05,_0x421631){_0x2b2d05=_0x2b2d05-0x0;var _0x5adda1=_0xc678[_0x2b2d05];return _0x5adda1;};'use strict';var multer=require(_0x8c67('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8c67('0x1')]();var fs_extra=require(_0x8c67('0x2'));var auth=require(_0x8c67('0x3'));var interaction=require(_0x8c67('0x4'));var config=require(_0x8c67('0x5'));var controller=require(_0x8c67('0x6'));router[_0x8c67('0x7')]('/',auth[_0x8c67('0x8')](),controller['index']);router[_0x8c67('0x7')]('/describe',auth[_0x8c67('0x8')](),controller[_0x8c67('0x9')]);router[_0x8c67('0x7')]('/:id',auth[_0x8c67('0x8')](),controller[_0x8c67('0xa')]);router[_0x8c67('0xb')]('/',auth[_0x8c67('0x8')](),controller[_0x8c67('0xc')]);router[_0x8c67('0xd')](_0x8c67('0xe'),auth[_0x8c67('0x8')](),controller[_0x8c67('0xf')]);router['delete'](_0x8c67('0xe'),auth[_0x8c67('0x8')](),controller[_0x8c67('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x96a1=['./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x96a1,0x19d));var _0x196a=function(_0x55fa03,_0xcb96c2){_0x55fa03=_0x55fa03-0x0;var _0x2cd7cd=_0x96a1[_0x55fa03];return _0x2cd7cd;};'use strict';var multer=require(_0x196a('0x0'));var util=require(_0x196a('0x1'));var path=require(_0x196a('0x2'));var timeout=require(_0x196a('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x196a('0x4'));var interaction=require(_0x196a('0x5'));var config=require(_0x196a('0x6'));var controller=require(_0x196a('0x7'));router['get']('/',auth[_0x196a('0x8')](),controller[_0x196a('0x9')]);router[_0x196a('0xa')](_0x196a('0xb'),auth['isAuthenticated'](),controller[_0x196a('0xc')]);router[_0x196a('0xa')](_0x196a('0xd'),auth['isAuthenticated'](),controller[_0x196a('0xe')]);router[_0x196a('0xf')]('/',auth[_0x196a('0x8')](),controller[_0x196a('0x10')]);router[_0x196a('0x11')]('/:id',auth[_0x196a('0x8')](),controller[_0x196a('0x12')]);router[_0x196a('0x13')](_0x196a('0xd'),auth[_0x196a('0x8')](),controller[_0x196a('0x14')]);module['exports']=router;
\ No newline at end of file
index 5ed8a74..36f285c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x12e223,_0x1d92ed){var _0x4fad85=function(_0x2e8f53){while(--_0x2e8f53){_0x12e223['push'](_0x12e223['shift']());}};_0x4fad85(++_0x1d92ed);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0xcb91[_0x4429e0];return _0x51a5b3;};'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 _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x449a04,_0x12029a){var _0xf16c60=function(_0x339e28){while(--_0x339e28){_0x449a04['push'](_0x449a04['shift']());}};_0xf16c60(++_0x12029a);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0xf3cd[_0x1e381c];return _0x9b5ea9;};'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 287630e..661fb03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86d1=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','name','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','FaxTransferReport','rows','catch','params','keys','include','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x880597,_0x5298e3){var _0x5d62f5=function(_0x5858d2){while(--_0x5858d2){_0x880597['push'](_0x880597['shift']());}};_0x5d62f5(++_0x5298e3);}(_0x86d1,0x1da));var _0x186d=function(_0x29467a,_0x405f73){_0x29467a=_0x29467a-0x0;var _0xaec2df=_0x86d1[_0x29467a];return _0xaec2df;};'use strict';var emlformat=require(_0x186d('0x0'));var rimraf=require(_0x186d('0x1'));var zipdir=require(_0x186d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x186d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x186d('0x4'));var sox=require(_0x186d('0x5'));var csv=require(_0x186d('0x6'));var ejs=require(_0x186d('0x7'));var fs=require('fs');var fs_extra=require(_0x186d('0x8'));var _=require(_0x186d('0x9'));var squel=require(_0x186d('0xa'));var crypto=require('crypto');var jsforce=require(_0x186d('0xb'));var deskjs=require(_0x186d('0xc'));var toCsv=require(_0x186d('0x6'));var querystring=require(_0x186d('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x186d('0xe'));var qs=require(_0x186d('0xf'));var as=require(_0x186d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x186d('0x11'))('api');var utils=require(_0x186d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x186d('0x13'));var db=require(_0x186d('0x14'))['db'];function respondWithStatusCode(_0x5d202e,_0x1dc7d9){_0x1dc7d9=_0x1dc7d9||0xcc;return function(_0x492e7f){if(_0x492e7f){return _0x5d202e[_0x186d('0x15')](_0x1dc7d9);}return _0x5d202e[_0x186d('0x16')](_0x1dc7d9)['end']();};}function respondWithResult(_0x153546,_0xba8aad){_0xba8aad=_0xba8aad||0xc8;return function(_0x39b3d1){if(_0x39b3d1){return _0x153546[_0x186d('0x16')](_0xba8aad)['json'](_0x39b3d1);}};}function respondWithFilteredResult(_0x391640,_0x39b138){return function(_0x4a36c9){if(_0x4a36c9){var _0x3e9173=typeof _0x39b138['offset']===_0x186d('0x17')&&typeof _0x39b138[_0x186d('0x18')]===_0x186d('0x17');var _0x2b57be=_0x4a36c9[_0x186d('0x19')];var _0x4f71f4=_0x3e9173?0x0:_0x39b138[_0x186d('0x1a')];var _0x5a0eab=_0x3e9173?_0x4a36c9[_0x186d('0x19')]:_0x39b138['offset']+_0x39b138[_0x186d('0x18')];var _0x4b5dfc;if(_0x5a0eab>=_0x2b57be){_0x5a0eab=_0x2b57be;_0x4b5dfc=0xc8;}else{_0x4b5dfc=0xce;}_0x391640[_0x186d('0x16')](_0x4b5dfc);return _0x391640[_0x186d('0x1b')](_0x186d('0x1c'),_0x4f71f4+'-'+_0x5a0eab+'/'+_0x2b57be)[_0x186d('0x1d')](_0x4a36c9);}return null;};}function patchUpdates(_0x1f03d9){return function(_0x3c3ca2){try{jsonpatch[_0x186d('0x1e')](_0x3c3ca2,_0x1f03d9,!![]);}catch(_0x35dc60){return BPromise[_0x186d('0x1f')](_0x35dc60);}return _0x3c3ca2[_0x186d('0x20')]();};}function saveUpdates(_0x1c0676,_0xed98d8){return function(_0x133f87){if(_0x133f87){return _0x133f87[_0x186d('0x21')](_0x1c0676)[_0x186d('0x22')](function(_0x4d9264){return _0x4d9264;});}return null;};}function removeEntity(_0x96a860,_0x149eda){return function(_0x5d38d6){if(_0x5d38d6){return _0x5d38d6['destroy']()['then'](function(){_0x96a860[_0x186d('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5760ce,_0x55ff55){return function(_0x3766c3){if(!_0x3766c3){_0x5760ce[_0x186d('0x15')](0x194);}return _0x3766c3;};}function handleError(_0x3b9f00,_0x366f83){_0x366f83=_0x366f83||0x1f4;return function(_0x17e505){logger[_0x186d('0x23')](_0x17e505['stack']);if(_0x17e505[_0x186d('0x24')]){delete _0x17e505[_0x186d('0x24')];}_0x3b9f00['status'](_0x366f83)['send'](_0x17e505);};}exports[_0x186d('0x25')]=function(_0x1b2cd4,_0x535a57){var _0x3d50cb={},_0x2a3076={},_0x4e7a59={'count':0x0,'rows':[]};var _0x609fcc=_[_0x186d('0x26')](db['FaxTransferReport'][_0x186d('0x27')],function(_0xca72d5){return{'name':_0xca72d5[_0x186d('0x28')],'type':_0xca72d5[_0x186d('0x29')][_0x186d('0x2a')]};});_0x2a3076['model']=_[_0x186d('0x26')](_0x609fcc,_0x186d('0x24'));_0x2a3076[_0x186d('0x2b')]=_['keys'](_0x1b2cd4['query']);_0x2a3076[_0x186d('0x2c')]=_[_0x186d('0x2d')](_0x2a3076[_0x186d('0x2e')],_0x2a3076[_0x186d('0x2b')]);_0x3d50cb['attributes']=_[_0x186d('0x2d')](_0x2a3076['model'],qs[_0x186d('0x2f')](_0x1b2cd4['query'][_0x186d('0x2f')]));_0x3d50cb['attributes']=_0x3d50cb[_0x186d('0x30')][_0x186d('0x31')]?_0x3d50cb['attributes']:_0x2a3076['model'];if(!_0x1b2cd4[_0x186d('0x2b')][_0x186d('0x32')](_0x186d('0x33'))){_0x3d50cb['limit']=qs['limit'](_0x1b2cd4[_0x186d('0x2b')]['limit']);_0x3d50cb[_0x186d('0x1a')]=qs['offset'](_0x1b2cd4['query'][_0x186d('0x1a')]);}_0x3d50cb[_0x186d('0x34')]=qs[_0x186d('0x35')](_0x1b2cd4[_0x186d('0x2b')][_0x186d('0x35')]);_0x3d50cb[_0x186d('0x36')]=qs[_0x186d('0x2c')](_[_0x186d('0x37')](_0x1b2cd4[_0x186d('0x2b')],_0x2a3076[_0x186d('0x2c')]),_0x609fcc);if(_0x1b2cd4[_0x186d('0x2b')][_0x186d('0x38')]){_0x3d50cb[_0x186d('0x36')]=_[_0x186d('0x39')](_0x3d50cb[_0x186d('0x36')],{'$or':_[_0x186d('0x26')](_0x609fcc,function(_0xdbe30b){if(_0xdbe30b[_0x186d('0x29')]!=='VIRTUAL'){var _0x2870aa={};_0x2870aa[_0xdbe30b[_0x186d('0x24')]]={'$like':'%'+_0x1b2cd4[_0x186d('0x2b')][_0x186d('0x38')]+'%'};return _0x2870aa;}})});}_0x3d50cb=_['merge']({},_0x3d50cb,_0x1b2cd4[_0x186d('0x3a')]);var _0x4e0244={'where':_0x3d50cb[_0x186d('0x36')]};return db[_0x186d('0x3b')][_0x186d('0x19')](_0x4e0244)[_0x186d('0x22')](function(_0x289bcc){_0x4e7a59[_0x186d('0x19')]=_0x289bcc;if(_0x1b2cd4[_0x186d('0x2b')]['includeAll']){_0x3d50cb['include']=[{'all':!![]}];}return db[_0x186d('0x3b')]['findAll'](_0x3d50cb);})[_0x186d('0x22')](function(_0x5c9fab){_0x4e7a59[_0x186d('0x3c')]=_0x5c9fab;return _0x4e7a59;})[_0x186d('0x22')](respondWithFilteredResult(_0x535a57,_0x3d50cb))[_0x186d('0x3d')](handleError(_0x535a57,null));};exports['show']=function(_0x24f8a9,_0x5af387){var _0x14a59f={'raw':!![],'where':{'id':_0x24f8a9[_0x186d('0x3e')]['id']}},_0x100012={};_0x100012[_0x186d('0x2e')]=_[_0x186d('0x3f')](db['FaxTransferReport'][_0x186d('0x27')]);_0x100012[_0x186d('0x2b')]=_['keys'](_0x24f8a9[_0x186d('0x2b')]);_0x100012[_0x186d('0x2c')]=_[_0x186d('0x2d')](_0x100012[_0x186d('0x2e')],_0x100012[_0x186d('0x2b')]);_0x14a59f[_0x186d('0x30')]=_[_0x186d('0x2d')](_0x100012[_0x186d('0x2e')],qs[_0x186d('0x2f')](_0x24f8a9[_0x186d('0x2b')][_0x186d('0x2f')]));_0x14a59f[_0x186d('0x30')]=_0x14a59f['attributes'][_0x186d('0x31')]?_0x14a59f[_0x186d('0x30')]:_0x100012[_0x186d('0x2e')];if(_0x24f8a9[_0x186d('0x2b')]['includeAll']){_0x14a59f[_0x186d('0x40')]=[{'all':!![]}];}_0x14a59f=_[_0x186d('0x39')]({},_0x14a59f,_0x24f8a9[_0x186d('0x3a')]);return db[_0x186d('0x3b')][_0x186d('0x41')](_0x14a59f)[_0x186d('0x22')](handleEntityNotFound(_0x5af387,null))[_0x186d('0x22')](respondWithResult(_0x5af387,null))['catch'](handleError(_0x5af387,null));};exports[_0x186d('0x42')]=function(_0x145ca0,_0x3cbb78){return db[_0x186d('0x3b')]['create'](_0x145ca0['body'],{})[_0x186d('0x22')](respondWithResult(_0x3cbb78,0xc9))[_0x186d('0x3d')](handleError(_0x3cbb78,null));};exports[_0x186d('0x21')]=function(_0x417128,_0x2a051f){if(_0x417128[_0x186d('0x43')]['id']){delete _0x417128['body']['id'];}return db[_0x186d('0x3b')][_0x186d('0x41')]({'where':{'id':_0x417128[_0x186d('0x3e')]['id']}})[_0x186d('0x22')](handleEntityNotFound(_0x2a051f,null))['then'](saveUpdates(_0x417128[_0x186d('0x43')],null))['then'](respondWithResult(_0x2a051f,null))[_0x186d('0x3d')](handleError(_0x2a051f,null));};exports[_0x186d('0x44')]=function(_0x81bb93,_0x31bc0f){return db['FaxTransferReport'][_0x186d('0x41')]({'where':{'id':_0x81bb93[_0x186d('0x3e')]['id']}})[_0x186d('0x22')](handleEntityNotFound(_0x31bc0f,null))['then'](removeEntity(_0x31bc0f,null))[_0x186d('0x3d')](handleError(_0x31bc0f,null));};exports[_0x186d('0x45')]=function(_0x404a61,_0x424365){return db[_0x186d('0x3b')]['describe']()[_0x186d('0x22')](respondWithResult(_0x424365,null))['catch'](handleError(_0x424365,null));};
\ No newline at end of file
+var _0x77c8=['apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxTransferReport','fieldName','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','intersection','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range'];(function(_0x51e564,_0x3918c7){var _0x11eaf2=function(_0x4a4d73){while(--_0x4a4d73){_0x51e564['push'](_0x51e564['shift']());}};_0x11eaf2(++_0x3918c7);}(_0x77c8,0x151));var _0x877c=function(_0xd578cb,_0x2167a3){_0xd578cb=_0xd578cb-0x0;var _0x775533=_0x77c8[_0xd578cb];return _0x775533;};'use strict';var emlformat=require(_0x877c('0x0'));var rimraf=require(_0x877c('0x1'));var zipdir=require(_0x877c('0x2'));var jsonpatch=require(_0x877c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x877c('0x4'));var util=require('util');var path=require('path');var sox=require(_0x877c('0x5'));var csv=require(_0x877c('0x6'));var ejs=require(_0x877c('0x7'));var fs=require('fs');var fs_extra=require(_0x877c('0x8'));var _=require('lodash');var squel=require(_0x877c('0x9'));var crypto=require(_0x877c('0xa'));var jsforce=require(_0x877c('0xb'));var deskjs=require(_0x877c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x877c('0xd'));var Papa=require(_0x877c('0xe'));var Redis=require(_0x877c('0xf'));var authService=require(_0x877c('0x10'));var qs=require(_0x877c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x877c('0x12'))(_0x877c('0x13'));var utils=require(_0x877c('0x14'));var config=require(_0x877c('0x15'));var licenseUtil=require(_0x877c('0x16'));var db=require(_0x877c('0x17'))['db'];function respondWithStatusCode(_0x500a1d,_0x50bb08){_0x50bb08=_0x50bb08||0xcc;return function(_0x16eb1e){if(_0x16eb1e){return _0x500a1d[_0x877c('0x18')](_0x50bb08);}return _0x500a1d[_0x877c('0x19')](_0x50bb08)['end']();};}function respondWithResult(_0x2ffbd9,_0x18f913){_0x18f913=_0x18f913||0xc8;return function(_0xaada0c){if(_0xaada0c){return _0x2ffbd9[_0x877c('0x19')](_0x18f913)[_0x877c('0x1a')](_0xaada0c);}};}function respondWithFilteredResult(_0x38a552,_0x3236d9){return function(_0x55415d){if(_0x55415d){var _0x286384=typeof _0x3236d9[_0x877c('0x1b')]==='undefined'&&typeof _0x3236d9[_0x877c('0x1c')]===_0x877c('0x1d');var _0x39ee28=_0x55415d[_0x877c('0x1e')];var _0x2fff23=_0x286384?0x0:_0x3236d9['offset'];var _0xa942c8=_0x286384?_0x55415d[_0x877c('0x1e')]:_0x3236d9['offset']+_0x3236d9[_0x877c('0x1c')];var _0x4d6bad;if(_0xa942c8>=_0x39ee28){_0xa942c8=_0x39ee28;_0x4d6bad=0xc8;}else{_0x4d6bad=0xce;}_0x38a552[_0x877c('0x19')](_0x4d6bad);return _0x38a552[_0x877c('0x1f')](_0x877c('0x20'),_0x2fff23+'-'+_0xa942c8+'/'+_0x39ee28)[_0x877c('0x1a')](_0x55415d);}return null;};}function patchUpdates(_0x4c23ab){return function(_0x535401){try{jsonpatch[_0x877c('0x21')](_0x535401,_0x4c23ab,!![]);}catch(_0x4c9ce6){return BPromise[_0x877c('0x22')](_0x4c9ce6);}return _0x535401[_0x877c('0x23')]();};}function saveUpdates(_0x1a673a,_0x206d28){return function(_0xee01fb){if(_0xee01fb){return _0xee01fb[_0x877c('0x24')](_0x1a673a)[_0x877c('0x25')](function(_0x52c14c){return _0x52c14c;});}return null;};}function removeEntity(_0xa202f,_0x387ed0){return function(_0x49c097){if(_0x49c097){return _0x49c097[_0x877c('0x26')]()['then'](function(){_0xa202f[_0x877c('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54c916,_0x2ec97f){return function(_0x5e1a0c){if(!_0x5e1a0c){_0x54c916[_0x877c('0x18')](0x194);}return _0x5e1a0c;};}function handleError(_0x3c3c62,_0xf7458e){_0xf7458e=_0xf7458e||0x1f4;return function(_0xac3945){logger['error'](_0xac3945[_0x877c('0x27')]);if(_0xac3945[_0x877c('0x28')]){delete _0xac3945[_0x877c('0x28')];}_0x3c3c62[_0x877c('0x19')](_0xf7458e)[_0x877c('0x29')](_0xac3945);};}exports[_0x877c('0x2a')]=function(_0x3dfb82,_0x3749ce){var _0x13e1c2={},_0x5ac9e2={},_0x53819c={'count':0x0,'rows':[]};var _0x39b2e0=_[_0x877c('0x2b')](db[_0x877c('0x2c')]['rawAttributes'],function(_0x36f96c){return{'name':_0x36f96c[_0x877c('0x2d')],'type':_0x36f96c['type'][_0x877c('0x2e')]};});_0x5ac9e2[_0x877c('0x2f')]=_[_0x877c('0x2b')](_0x39b2e0,_0x877c('0x28'));_0x5ac9e2[_0x877c('0x30')]=_['keys'](_0x3dfb82['query']);_0x5ac9e2[_0x877c('0x31')]=_['intersection'](_0x5ac9e2['model'],_0x5ac9e2[_0x877c('0x30')]);_0x13e1c2[_0x877c('0x32')]=_['intersection'](_0x5ac9e2[_0x877c('0x2f')],qs[_0x877c('0x33')](_0x3dfb82[_0x877c('0x30')][_0x877c('0x33')]));_0x13e1c2[_0x877c('0x32')]=_0x13e1c2[_0x877c('0x32')][_0x877c('0x34')]?_0x13e1c2['attributes']:_0x5ac9e2['model'];if(!_0x3dfb82[_0x877c('0x30')][_0x877c('0x35')](_0x877c('0x36'))){_0x13e1c2[_0x877c('0x1c')]=qs[_0x877c('0x1c')](_0x3dfb82[_0x877c('0x30')][_0x877c('0x1c')]);_0x13e1c2[_0x877c('0x1b')]=qs[_0x877c('0x1b')](_0x3dfb82[_0x877c('0x30')][_0x877c('0x1b')]);}_0x13e1c2[_0x877c('0x37')]=qs[_0x877c('0x38')](_0x3dfb82['query'][_0x877c('0x38')]);_0x13e1c2[_0x877c('0x39')]=qs[_0x877c('0x31')](_['pick'](_0x3dfb82[_0x877c('0x30')],_0x5ac9e2['filters']),_0x39b2e0);if(_0x3dfb82[_0x877c('0x30')][_0x877c('0x3a')]){_0x13e1c2[_0x877c('0x39')]=_[_0x877c('0x3b')](_0x13e1c2['where'],{'$or':_[_0x877c('0x2b')](_0x39b2e0,function(_0x1fee1d){if(_0x1fee1d['type']!=='VIRTUAL'){var _0x4069cd={};_0x4069cd[_0x1fee1d[_0x877c('0x28')]]={'$like':'%'+_0x3dfb82[_0x877c('0x30')][_0x877c('0x3a')]+'%'};return _0x4069cd;}})});}_0x13e1c2=_['merge']({},_0x13e1c2,_0x3dfb82[_0x877c('0x3c')]);var _0x4d5d53={'where':_0x13e1c2['where']};return db[_0x877c('0x2c')][_0x877c('0x1e')](_0x4d5d53)[_0x877c('0x25')](function(_0x284c7f){_0x53819c[_0x877c('0x1e')]=_0x284c7f;if(_0x3dfb82[_0x877c('0x30')][_0x877c('0x3d')]){_0x13e1c2[_0x877c('0x3e')]=[{'all':!![]}];}return db[_0x877c('0x2c')]['findAll'](_0x13e1c2);})[_0x877c('0x25')](function(_0x2d27f3){_0x53819c[_0x877c('0x3f')]=_0x2d27f3;return _0x53819c;})['then'](respondWithFilteredResult(_0x3749ce,_0x13e1c2))[_0x877c('0x40')](handleError(_0x3749ce,null));};exports[_0x877c('0x41')]=function(_0x44dc94,_0x30c58a){var _0x480f29={'raw':!![],'where':{'id':_0x44dc94[_0x877c('0x42')]['id']}},_0x5221df={};_0x5221df[_0x877c('0x2f')]=_[_0x877c('0x43')](db[_0x877c('0x2c')][_0x877c('0x44')]);_0x5221df['query']=_[_0x877c('0x43')](_0x44dc94[_0x877c('0x30')]);_0x5221df[_0x877c('0x31')]=_[_0x877c('0x45')](_0x5221df[_0x877c('0x2f')],_0x5221df[_0x877c('0x30')]);_0x480f29[_0x877c('0x32')]=_[_0x877c('0x45')](_0x5221df[_0x877c('0x2f')],qs[_0x877c('0x33')](_0x44dc94[_0x877c('0x30')]['fields']));_0x480f29[_0x877c('0x32')]=_0x480f29[_0x877c('0x32')][_0x877c('0x34')]?_0x480f29['attributes']:_0x5221df[_0x877c('0x2f')];if(_0x44dc94[_0x877c('0x30')]['includeAll']){_0x480f29['include']=[{'all':!![]}];}_0x480f29=_[_0x877c('0x3b')]({},_0x480f29,_0x44dc94[_0x877c('0x3c')]);return db[_0x877c('0x2c')][_0x877c('0x46')](_0x480f29)[_0x877c('0x25')](handleEntityNotFound(_0x30c58a,null))[_0x877c('0x25')](respondWithResult(_0x30c58a,null))[_0x877c('0x40')](handleError(_0x30c58a,null));};exports['create']=function(_0x55d982,_0x3f5fb4){return db[_0x877c('0x2c')][_0x877c('0x47')](_0x55d982[_0x877c('0x48')],{})[_0x877c('0x25')](respondWithResult(_0x3f5fb4,0xc9))[_0x877c('0x40')](handleError(_0x3f5fb4,null));};exports[_0x877c('0x24')]=function(_0x5d646c,_0x55427e){if(_0x5d646c[_0x877c('0x48')]['id']){delete _0x5d646c[_0x877c('0x48')]['id'];}return db[_0x877c('0x2c')][_0x877c('0x46')]({'where':{'id':_0x5d646c['params']['id']}})['then'](handleEntityNotFound(_0x55427e,null))[_0x877c('0x25')](saveUpdates(_0x5d646c[_0x877c('0x48')],null))['then'](respondWithResult(_0x55427e,null))[_0x877c('0x40')](handleError(_0x55427e,null));};exports[_0x877c('0x26')]=function(_0x906d8e,_0x38e103){return db[_0x877c('0x2c')][_0x877c('0x46')]({'where':{'id':_0x906d8e[_0x877c('0x42')]['id']}})['then'](handleEntityNotFound(_0x38e103,null))['then'](removeEntity(_0x38e103,null))['catch'](handleError(_0x38e103,null));};exports[_0x877c('0x49')]=function(_0x548d23,_0x24f007){return db[_0x877c('0x2c')][_0x877c('0x49')]()[_0x877c('0x25')](respondWithResult(_0x24f007,null))[_0x877c('0x40')](handleError(_0x24f007,null));};
\ No newline at end of file
index c68691d..94b769e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f01=['exports','define','FaxTransferReport','report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1da4d1,_0x4289fd){var _0x8e7cdf=function(_0x2d1015){while(--_0x2d1015){_0x1da4d1['push'](_0x1da4d1['shift']());}};_0x8e7cdf(++_0x4289fd);}(_0x4f01,0xe5));var _0x14f0=function(_0x2850c0,_0x44a9fd){_0x2850c0=_0x2850c0-0x0;var _0x523553=_0x4f01[_0x2850c0];return _0x523553;};'use strict';var _=require('lodash');var util=require(_0x14f0('0x0'));var logger=require(_0x14f0('0x1'))(_0x14f0('0x2'));var moment=require(_0x14f0('0x3'));var BPromise=require(_0x14f0('0x4'));var rp=require(_0x14f0('0x5'));var fs=require('fs');var path=require(_0x14f0('0x6'));var rimraf=require(_0x14f0('0x7'));var config=require(_0x14f0('0x8'));var attributes=require('./faxTransferReport.attributes');module[_0x14f0('0x9')]=function(_0x36bc10,_0x5c4969){return _0x36bc10[_0x14f0('0xa')](_0x14f0('0xb'),attributes,{'tableName':_0x14f0('0xc'),'paranoid':![],'indexes':[{'name':_0x14f0('0xd'),'fields':[_0x14f0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5464=['uniqueid','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer'];(function(_0x2f3ffc,_0x56925b){var _0x5a1863=function(_0x1c2a3b){while(--_0x1c2a3b){_0x2f3ffc['push'](_0x2f3ffc['shift']());}};_0x5a1863(++_0x56925b);}(_0x5464,0x15d));var _0x4546=function(_0x5391cf,_0xf64664){_0x5391cf=_0x5391cf-0x0;var _0x4ea076=_0x5464[_0x5391cf];return _0x4ea076;};'use strict';var _=require(_0x4546('0x0'));var util=require(_0x4546('0x1'));var logger=require(_0x4546('0x2'))('api');var moment=require(_0x4546('0x3'));var BPromise=require('bluebird');var rp=require(_0x4546('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4546('0x5'));var config=require(_0x4546('0x6'));var attributes=require(_0x4546('0x7'));module[_0x4546('0x8')]=function(_0x54228a,_0x57391f){return _0x54228a['define'](_0x4546('0x9'),attributes,{'tableName':_0x4546('0xa'),'paranoid':![],'indexes':[{'name':_0x4546('0xb'),'fields':[_0x4546('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ed30ccd..36befba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8cd=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util'];(function(_0xd39959,_0x302d09){var _0x1ff69c=function(_0x17c97f){while(--_0x17c97f){_0xd39959['push'](_0xd39959['shift']());}};_0x1ff69c(++_0x302d09);}(_0xf8cd,0x1c6));var _0xdf8c=function(_0x217fdb,_0x57826d){_0x217fdb=_0x217fdb-0x0;var _0x4cb03e=_0xf8cd[_0x217fdb];return _0x4cb03e;};'use strict';var _=require(_0xdf8c('0x0'));var util=require(_0xdf8c('0x1'));var moment=require('moment');var BPromise=require(_0xdf8c('0x2'));var rs=require(_0xdf8c('0x3'));var fs=require('fs');var Redis=require(_0xdf8c('0x4'));var db=require(_0xdf8c('0x5'))['db'];var utils=require(_0xdf8c('0x6'));var logger=require(_0xdf8c('0x7'))('rpc');var config=require(_0xdf8c('0x8'));var jayson=require(_0xdf8c('0x9'));var client=jayson[_0xdf8c('0xa')][_0xdf8c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x41f67e,_0x5b4948,_0x4b7787){return new BPromise(function(_0xd9319b,_0x3a10fc){return client[_0xdf8c('0xc')](_0x41f67e,_0x4b7787)[_0xdf8c('0xd')](function(_0x1e6e30){logger['info'](_0xdf8c('0xe'),_0x5b4948,_0xdf8c('0xf'));logger[_0xdf8c('0x10')](_0xdf8c('0x11'),_0x5b4948,'request\x20sent',JSON[_0xdf8c('0x12')](_0x1e6e30));if(_0x1e6e30[_0xdf8c('0x13')]){if(_0x1e6e30[_0xdf8c('0x13')]['code']===0x1f4){logger[_0xdf8c('0x13')](_0xdf8c('0xe'),_0x5b4948,_0x1e6e30[_0xdf8c('0x13')][_0xdf8c('0x14')]);return _0x3a10fc(_0x1e6e30[_0xdf8c('0x13')][_0xdf8c('0x14')]);}logger[_0xdf8c('0x13')](_0xdf8c('0xe'),_0x5b4948,_0x1e6e30['error']['message']);return _0xd9319b(_0x1e6e30[_0xdf8c('0x13')][_0xdf8c('0x14')]);}else{logger[_0xdf8c('0x15')]('FaxTransferReport,\x20%s,\x20%s',_0x5b4948,'request\x20sent');_0xd9319b(_0x1e6e30[_0xdf8c('0x16')]['message']);}})[_0xdf8c('0x17')](function(_0x410607){logger['error'](_0xdf8c('0xe'),_0x5b4948,_0x410607);_0x3a10fc(_0x410607);});});}
\ No newline at end of file
+var _0xed58=['stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x657a6f,_0xc458b4){var _0x259338=function(_0x88180d){while(--_0x88180d){_0x657a6f['push'](_0x657a6f['shift']());}};_0x259338(++_0xc458b4);}(_0xed58,0x1e9));var _0x8ed5=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xed58[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x8ed5('0x0'));var util=require(_0x8ed5('0x1'));var moment=require(_0x8ed5('0x2'));var BPromise=require(_0x8ed5('0x3'));var rs=require(_0x8ed5('0x4'));var fs=require('fs');var Redis=require(_0x8ed5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8ed5('0x6'));var logger=require(_0x8ed5('0x7'))(_0x8ed5('0x8'));var config=require(_0x8ed5('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8ed5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11db5e,_0x9b505e,_0x832b72){return new BPromise(function(_0x3341fa,_0x284f46){return client[_0x8ed5('0xb')](_0x11db5e,_0x832b72)[_0x8ed5('0xc')](function(_0x59a367){logger[_0x8ed5('0xd')](_0x8ed5('0xe'),_0x9b505e,'request\x20sent');logger[_0x8ed5('0xf')](_0x8ed5('0x10'),_0x9b505e,'request\x20sent',JSON[_0x8ed5('0x11')](_0x59a367));if(_0x59a367['error']){if(_0x59a367[_0x8ed5('0x12')]['code']===0x1f4){logger[_0x8ed5('0x12')](_0x8ed5('0xe'),_0x9b505e,_0x59a367['error'][_0x8ed5('0x13')]);return _0x284f46(_0x59a367['error'][_0x8ed5('0x13')]);}logger['error'](_0x8ed5('0xe'),_0x9b505e,_0x59a367[_0x8ed5('0x12')][_0x8ed5('0x13')]);return _0x3341fa(_0x59a367['error'][_0x8ed5('0x13')]);}else{logger[_0x8ed5('0xd')](_0x8ed5('0xe'),_0x9b505e,_0x8ed5('0x14'));_0x3341fa(_0x59a367[_0x8ed5('0x15')]['message']);}})[_0x8ed5('0x16')](function(_0x35533c){logger[_0x8ed5('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x9b505e,_0x35533c);_0x284f46(_0x35533c);});});}
\ No newline at end of file
index 654ee3b..61ba621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd032=['get','index','/describe','describe','/:id','post','isAuthenticated','create','put','update','delete','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./faxTransferReport.controller'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xd032,0x108));var _0x2d03=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xd032[_0x36884e];return _0x1cc367;};'use strict';var multer=require(_0x2d03('0x0'));var util=require('util');var path=require(_0x2d03('0x1'));var timeout=require(_0x2d03('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2d03('0x3'));var interaction=require(_0x2d03('0x4'));var config=require('../../config/environment');var controller=require(_0x2d03('0x5'));router[_0x2d03('0x6')]('/',auth['isAuthenticated'](),controller[_0x2d03('0x7')]);router['get'](_0x2d03('0x8'),auth['isAuthenticated'](),controller[_0x2d03('0x9')]);router[_0x2d03('0x6')](_0x2d03('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x2d03('0xb')]('/',auth[_0x2d03('0xc')](),controller[_0x2d03('0xd')]);router[_0x2d03('0xe')](_0x2d03('0xa'),auth[_0x2d03('0xc')](),controller[_0x2d03('0xf')]);router[_0x2d03('0x10')](_0x2d03('0xa'),auth[_0x2d03('0xc')](),controller['destroy']);module[_0x2d03('0x11')]=router;
\ No newline at end of file
+var _0x8f6b=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../config/environment','./faxTransferReport.controller','index','/describe','isAuthenticated','describe','get'];(function(_0x1f0b29,_0x443d90){var _0x1ce5de=function(_0x28d26e){while(--_0x28d26e){_0x1f0b29['push'](_0x1f0b29['shift']());}};_0x1ce5de(++_0x443d90);}(_0x8f6b,0x1ad));var _0xb8f6=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x8f6b[_0xae7c2f];return _0x5d7001;};'use strict';var multer=require(_0xb8f6('0x0'));var util=require(_0xb8f6('0x1'));var path=require(_0xb8f6('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb8f6('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb8f6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb8f6('0x5'));var controller=require(_0xb8f6('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xb8f6('0x7')]);router['get'](_0xb8f6('0x8'),auth[_0xb8f6('0x9')](),controller[_0xb8f6('0xa')]);router[_0xb8f6('0xb')](_0xb8f6('0xc'),auth['isAuthenticated'](),controller[_0xb8f6('0xd')]);router[_0xb8f6('0xe')]('/',auth[_0xb8f6('0x9')](),controller[_0xb8f6('0xf')]);router[_0xb8f6('0x10')](_0xb8f6('0xc'),auth['isAuthenticated'](),controller[_0xb8f6('0x11')]);router[_0xb8f6('0x12')](_0xb8f6('0xc'),auth['isAuthenticated'](),controller[_0xb8f6('0x13')]);module[_0xb8f6('0x14')]=router;
\ No newline at end of file
index 55b99ac..7375e6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf2e=['delete','exports','util','path','Router','fs-extra','../../components/auth/service','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update'];(function(_0x289d93,_0x34c8f6){var _0x1fd472=function(_0x48abfd){while(--_0x48abfd){_0x289d93['push'](_0x289d93['shift']());}};_0x1fd472(++_0x34c8f6);}(_0xaf2e,0xbf));var _0xeaf2=function(_0x2bd2ee,_0x54bb45){_0x2bd2ee=_0x2bd2ee-0x0;var _0x5c7d98=_0xaf2e[_0x2bd2ee];return _0x5c7d98;};'use strict';var multer=require('multer');var util=require(_0xeaf2('0x0'));var path=require(_0xeaf2('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xeaf2('0x2')]();var fs_extra=require(_0xeaf2('0x3'));var auth=require(_0xeaf2('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0xeaf2('0x5')](),controller[_0xeaf2('0x6')]);router[_0xeaf2('0x7')](_0xeaf2('0x8'),auth['isAuthenticated'](),controller[_0xeaf2('0x9')]);router['get'](_0xeaf2('0xa'),auth['isAuthenticated'](),controller[_0xeaf2('0xb')]);router[_0xeaf2('0x7')](_0xeaf2('0xc'),auth[_0xeaf2('0x5')](),controller[_0xeaf2('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xeaf2('0xe')]);router[_0xeaf2('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xeaf2('0x10')]);router[_0xeaf2('0x11')](_0xeaf2('0x8'),auth[_0xeaf2('0x5')](),controller[_0xeaf2('0x12')]);router[_0xeaf2('0x13')](_0xeaf2('0x8'),auth[_0xeaf2('0x5')](),controller['destroy']);module[_0xeaf2('0x14')]=router;
\ No newline at end of file
+var _0xd893=['show','/:id/configurations','/:id/fields','isAuthenticated','post','create','addConfiguration','put','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id'];(function(_0x2e2681,_0x4089c1){var _0x368a64=function(_0x267262){while(--_0x267262){_0x2e2681['push'](_0x2e2681['shift']());}};_0x368a64(++_0x4089c1);}(_0xd893,0x90));var _0x3d89=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xd893[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3d89('0x0'));var express=require(_0x3d89('0x1'));var router=express[_0x3d89('0x2')]();var fs_extra=require(_0x3d89('0x3'));var auth=require(_0x3d89('0x4'));var interaction=require(_0x3d89('0x5'));var config=require(_0x3d89('0x6'));var controller=require('./intDeskAccount.controller');router[_0x3d89('0x7')]('/',auth['isAuthenticated'](),controller[_0x3d89('0x8')]);router[_0x3d89('0x7')](_0x3d89('0x9'),auth['isAuthenticated'](),controller[_0x3d89('0xa')]);router[_0x3d89('0x7')](_0x3d89('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0x3d89('0xc'),auth[_0x3d89('0xd')](),controller['getFields']);router[_0x3d89('0xe')]('/',auth[_0x3d89('0xd')](),controller[_0x3d89('0xf')]);router[_0x3d89('0xe')](_0x3d89('0xb'),auth['isAuthenticated'](),controller[_0x3d89('0x10')]);router[_0x3d89('0x11')](_0x3d89('0x9'),auth[_0x3d89('0xd')](),controller[_0x3d89('0x12')]);router[_0x3d89('0x13')](_0x3d89('0x9'),auth[_0x3d89('0xd')](),controller[_0x3d89('0x14')]);module[_0x3d89('0x15')]=router;
\ No newline at end of file
index d637434..49f943f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4021=['sequelize','exports','STRING','ENUM','basic','integrationTab','newTab'];(function(_0x27c068,_0x342981){var _0xe5a67f=function(_0x20658a){while(--_0x20658a){_0x27c068['push'](_0x27c068['shift']());}};_0xe5a67f(++_0x342981);}(_0x4021,0xfc));var _0x1402=function(_0x35d2d6,_0x14e944){_0x35d2d6=_0x35d2d6-0x0;var _0x1637d5=_0x4021[_0x35d2d6];return _0x1637d5;};'use strict';var Sequelize=require(_0x1402('0x0'));module[_0x1402('0x1')]={'name':{'type':Sequelize[_0x1402('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1402('0x2')]},'remoteUri':{'type':Sequelize[_0x1402('0x2')]},'authType':{'type':Sequelize[_0x1402('0x3')](_0x1402('0x4')),'defaultValue':_0x1402('0x4')},'password':{'type':Sequelize[_0x1402('0x2')]},'consumerKey':{'type':Sequelize[_0x1402('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x1402('0x2')]},'tokenSecret':{'type':Sequelize[_0x1402('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x1402('0x3')](_0x1402('0x5'),_0x1402('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xd3d0=['STRING','ENUM','basic','integrationTab','exports'];(function(_0x5948a7,_0x944950){var _0x4926e6=function(_0x42c767){while(--_0x42c767){_0x5948a7['push'](_0x5948a7['shift']());}};_0x4926e6(++_0x944950);}(_0xd3d0,0x90));var _0x0d3d=function(_0x34957b,_0xf64702){_0x34957b=_0x34957b-0x0;var _0x323101=_0xd3d0[_0x34957b];return _0x323101;};'use strict';var Sequelize=require('sequelize');module[_0x0d3d('0x0')]={'name':{'type':Sequelize[_0x0d3d('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0d3d('0x1')]},'authType':{'type':Sequelize[_0x0d3d('0x2')](_0x0d3d('0x3')),'defaultValue':_0x0d3d('0x3')},'password':{'type':Sequelize[_0x0d3d('0x1')]},'consumerKey':{'type':Sequelize[_0x0d3d('0x1')]},'consumerSecret':{'type':Sequelize[_0x0d3d('0x1')]},'token':{'type':Sequelize[_0x0d3d('0x1')]},'tokenSecret':{'type':Sequelize[_0x0d3d('0x1')]},'serverUrl':{'type':Sequelize[_0x0d3d('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x0d3d('0x2')](_0x0d3d('0x4'),'newTab'),'defaultValue':_0x0d3d('0x4')}};
\ No newline at end of file
index da7600e..d289f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8460=['jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','then','destroy','error','name','send','index','DeskAccount','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','rows','catch','keys','find','body','update','params','getConfigurations','DeskConfiguration','findOne','Subjects','channel','getDescriptions','create','DeskField','priority','remoteUri','authType','username','password','consumerKey','token','tokenSecret','lastIndexOf','application/json','basic','headers','format','%s:%s','base64','concat','_embedded','entries','active','label','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto'];(function(_0x5a5028,_0x49d56d){var _0x3e58f8=function(_0xed9db7){while(--_0xed9db7){_0x5a5028['push'](_0x5a5028['shift']());}};_0x3e58f8(++_0x49d56d);}(_0x8460,0x128));var _0x0846=function(_0x9736b6,_0x23702b){_0x9736b6=_0x9736b6-0x0;var _0x120ff5=_0x8460[_0x9736b6];return _0x120ff5;};'use strict';var emlformat=require(_0x0846('0x0'));var rimraf=require(_0x0846('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0846('0x2'));var rp=require(_0x0846('0x3'));var moment=require(_0x0846('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0846('0x5'));var util=require(_0x0846('0x6'));var path=require(_0x0846('0x7'));var sox=require(_0x0846('0x8'));var csv=require(_0x0846('0x9'));var ejs=require(_0x0846('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0846('0xb'));var crypto=require(_0x0846('0xc'));var jsforce=require(_0x0846('0xd'));var deskjs=require(_0x0846('0xe'));var toCsv=require(_0x0846('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0846('0xf'));var authService=require(_0x0846('0x10'));var qs=require(_0x0846('0x11'));var as=require(_0x0846('0x12'));var hardwareService=require(_0x0846('0x13'));var logger=require(_0x0846('0x14'))(_0x0846('0x15'));var utils=require(_0x0846('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0846('0x17'));var db=require(_0x0846('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4accd9,_0x552091){_0x552091=_0x552091||0xcc;return function(_0x496fd0){if(_0x496fd0){return _0x4accd9[_0x0846('0x19')](_0x552091);}return _0x4accd9[_0x0846('0x1a')](_0x552091)[_0x0846('0x1b')]();};}function respondWithResult(_0x2ad27f,_0x4d2153){_0x4d2153=_0x4d2153||0xc8;return function(_0x12f0ab){if(_0x12f0ab){return _0x2ad27f[_0x0846('0x1a')](_0x4d2153)[_0x0846('0x1c')](_0x12f0ab);}};}function respondWithFilteredResult(_0x4f6e0a,_0x15af6e){return function(_0xc0b50){if(_0xc0b50){var _0x4a3740=typeof _0x15af6e[_0x0846('0x1d')]==='undefined'&&typeof _0x15af6e[_0x0846('0x1e')]==='undefined';var _0x43c800=_0xc0b50[_0x0846('0x1f')];var _0xdabcc9=_0x4a3740?0x0:_0x15af6e['offset'];var _0x2fe087=_0x4a3740?_0xc0b50[_0x0846('0x1f')]:_0x15af6e[_0x0846('0x1d')]+_0x15af6e['limit'];var _0x1eafa8;if(_0x2fe087>=_0x43c800){_0x2fe087=_0x43c800;_0x1eafa8=0xc8;}else{_0x1eafa8=0xce;}_0x4f6e0a[_0x0846('0x1a')](_0x1eafa8);return _0x4f6e0a[_0x0846('0x20')](_0x0846('0x21'),_0xdabcc9+'-'+_0x2fe087+'/'+_0x43c800)[_0x0846('0x1c')](_0xc0b50);}return null;};}function patchUpdates(_0x324943){return function(_0x23bc0d){try{jsonpatch['apply'](_0x23bc0d,_0x324943,!![]);}catch(_0x424d15){return BPromise['reject'](_0x424d15);}return _0x23bc0d[_0x0846('0x22')]();};}function saveUpdates(_0x323302,_0x135461){return function(_0x50bffd){if(_0x50bffd){return _0x50bffd['update'](_0x323302)[_0x0846('0x23')](function(_0x312fd1){return _0x312fd1;});}return null;};}function removeEntity(_0x54cc48,_0x2a8970){return function(_0x4535d6){if(_0x4535d6){return _0x4535d6[_0x0846('0x24')]()[_0x0846('0x23')](function(){_0x54cc48[_0x0846('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41629e,_0xa34904){return function(_0x5dbc9f){if(!_0x5dbc9f){_0x41629e['sendStatus'](0x194);}return _0x5dbc9f;};}function handleError(_0x3be723,_0xbda38c){_0xbda38c=_0xbda38c||0x1f4;return function(_0x4d2cd8){logger[_0x0846('0x25')](_0x4d2cd8['stack']);if(_0x4d2cd8[_0x0846('0x26')]){delete _0x4d2cd8[_0x0846('0x26')];}_0x3be723[_0x0846('0x1a')](_0xbda38c)[_0x0846('0x27')](_0x4d2cd8);};}exports[_0x0846('0x28')]=function(_0x2984b9,_0x2d0326){var _0x1c8344={},_0x1fdef9={},_0x56f67f={'count':0x0,'rows':[]};var _0xeb38c0=_['map'](db[_0x0846('0x29')][_0x0846('0x2a')],function(_0x425a95){return{'name':_0x425a95[_0x0846('0x2b')],'type':_0x425a95[_0x0846('0x2c')][_0x0846('0x2d')]};});_0x1fdef9[_0x0846('0x2e')]=_[_0x0846('0x2f')](_0xeb38c0,_0x0846('0x26'));_0x1fdef9['query']=_['keys'](_0x2984b9[_0x0846('0x30')]);_0x1fdef9[_0x0846('0x31')]=_['intersection'](_0x1fdef9['model'],_0x1fdef9['query']);_0x1c8344[_0x0846('0x32')]=_[_0x0846('0x33')](_0x1fdef9[_0x0846('0x2e')],qs[_0x0846('0x34')](_0x2984b9[_0x0846('0x30')]['fields']));_0x1c8344['attributes']=_0x1c8344[_0x0846('0x32')][_0x0846('0x35')]?_0x1c8344[_0x0846('0x32')]:_0x1fdef9[_0x0846('0x2e')];if(!_0x2984b9[_0x0846('0x30')]['hasOwnProperty'](_0x0846('0x36'))){_0x1c8344[_0x0846('0x1e')]=qs['limit'](_0x2984b9[_0x0846('0x30')][_0x0846('0x1e')]);_0x1c8344['offset']=qs[_0x0846('0x1d')](_0x2984b9[_0x0846('0x30')][_0x0846('0x1d')]);}_0x1c8344[_0x0846('0x37')]=qs[_0x0846('0x38')](_0x2984b9[_0x0846('0x30')][_0x0846('0x38')]);_0x1c8344['where']=qs['filters'](_[_0x0846('0x39')](_0x2984b9['query'],_0x1fdef9[_0x0846('0x31')]),_0xeb38c0);if(_0x2984b9[_0x0846('0x30')][_0x0846('0x3a')]){_0x1c8344[_0x0846('0x3b')]=_[_0x0846('0x3c')](_0x1c8344[_0x0846('0x3b')],{'$or':_[_0x0846('0x2f')](_0xeb38c0,function(_0x5dcd9b){if(_0x5dcd9b[_0x0846('0x2c')]!==_0x0846('0x3d')){var _0x1f63fb={};_0x1f63fb[_0x5dcd9b[_0x0846('0x26')]]={'$like':'%'+_0x2984b9[_0x0846('0x30')][_0x0846('0x3a')]+'%'};return _0x1f63fb;}})});}_0x1c8344=_['merge']({},_0x1c8344,_0x2984b9[_0x0846('0x3e')]);var _0x1da6be={'where':_0x1c8344[_0x0846('0x3b')]};return db[_0x0846('0x29')]['count'](_0x1da6be)[_0x0846('0x23')](function(_0x17dece){_0x56f67f[_0x0846('0x1f')]=_0x17dece;if(_0x2984b9['query']['includeAll']){_0x1c8344[_0x0846('0x3f')]=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x1c8344);})[_0x0846('0x23')](function(_0x10188b){_0x56f67f[_0x0846('0x40')]=_0x10188b;return _0x56f67f;})[_0x0846('0x23')](respondWithFilteredResult(_0x2d0326,_0x1c8344))[_0x0846('0x41')](handleError(_0x2d0326,null));};exports['show']=function(_0x3ffb68,_0x4a8ba0){var _0x5080d7={'raw':![],'where':{'id':_0x3ffb68['params']['id']}},_0x194c7b={};_0x194c7b[_0x0846('0x2e')]=_[_0x0846('0x42')](db[_0x0846('0x29')][_0x0846('0x2a')]);_0x194c7b['query']=_[_0x0846('0x42')](_0x3ffb68['query']);_0x194c7b['filters']=_[_0x0846('0x33')](_0x194c7b[_0x0846('0x2e')],_0x194c7b['query']);_0x5080d7['attributes']=_['intersection'](_0x194c7b[_0x0846('0x2e')],qs[_0x0846('0x34')](_0x3ffb68[_0x0846('0x30')][_0x0846('0x34')]));_0x5080d7['attributes']=_0x5080d7[_0x0846('0x32')][_0x0846('0x35')]?_0x5080d7[_0x0846('0x32')]:_0x194c7b[_0x0846('0x2e')];if(_0x3ffb68[_0x0846('0x30')]['includeAll']){_0x5080d7[_0x0846('0x3f')]=[{'all':!![]}];}_0x5080d7=_[_0x0846('0x3c')]({},_0x5080d7,_0x3ffb68[_0x0846('0x3e')]);return db[_0x0846('0x29')][_0x0846('0x43')](_0x5080d7)[_0x0846('0x23')](handleEntityNotFound(_0x4a8ba0,null))[_0x0846('0x23')](respondWithResult(_0x4a8ba0,null))[_0x0846('0x41')](handleError(_0x4a8ba0,null));};exports['create']=function(_0x4ad503,_0x43853c){return db[_0x0846('0x29')]['create'](_0x4ad503[_0x0846('0x44')],{})[_0x0846('0x23')](respondWithResult(_0x43853c,0xc9))[_0x0846('0x41')](handleError(_0x43853c,null));};exports[_0x0846('0x45')]=function(_0x51f55b,_0x44e0cc){if(_0x51f55b[_0x0846('0x44')]['id']){delete _0x51f55b[_0x0846('0x44')]['id'];}return db[_0x0846('0x29')][_0x0846('0x43')]({'where':{'id':_0x51f55b[_0x0846('0x46')]['id']}})[_0x0846('0x23')](handleEntityNotFound(_0x44e0cc,null))['then'](saveUpdates(_0x51f55b['body'],null))['then'](respondWithResult(_0x44e0cc,null))['catch'](handleError(_0x44e0cc,null));};exports['destroy']=function(_0x8d2a70,_0x2cf208){return db[_0x0846('0x29')][_0x0846('0x43')]({'where':{'id':_0x8d2a70[_0x0846('0x46')]['id']}})[_0x0846('0x23')](handleEntityNotFound(_0x2cf208,null))['then'](removeEntity(_0x2cf208,null))[_0x0846('0x41')](handleError(_0x2cf208,null));};exports[_0x0846('0x47')]=function(_0x11abe7,_0x186cda,_0x299194){var _0x3b0850={};var _0x3e013e={};var _0x2d195e;var _0x1ce43e;return db[_0x0846('0x29')]['findOne']({'where':{'id':_0x11abe7[_0x0846('0x46')]['id']}})[_0x0846('0x23')](handleEntityNotFound(_0x186cda,null))[_0x0846('0x23')](function(_0x20e593){if(_0x20e593){_0x2d195e=_0x20e593;_0x3e013e[_0x0846('0x2e')]=_[_0x0846('0x42')](db[_0x0846('0x48')][_0x0846('0x2a')]);_0x3e013e[_0x0846('0x30')]=_[_0x0846('0x42')](_0x11abe7['query']);_0x3e013e['filters']=_[_0x0846('0x33')](_0x3e013e[_0x0846('0x2e')],_0x3e013e[_0x0846('0x30')]);_0x3b0850['attributes']=_[_0x0846('0x33')](_0x3e013e[_0x0846('0x2e')],qs[_0x0846('0x34')](_0x11abe7[_0x0846('0x30')][_0x0846('0x34')]));_0x3b0850[_0x0846('0x32')]=_0x3b0850[_0x0846('0x32')]['length']?_0x3b0850[_0x0846('0x32')]:_0x3e013e[_0x0846('0x2e')];_0x3b0850[_0x0846('0x37')]=qs[_0x0846('0x38')](_0x11abe7[_0x0846('0x30')][_0x0846('0x38')]);_0x3b0850[_0x0846('0x3b')]=qs[_0x0846('0x31')](_[_0x0846('0x39')](_0x11abe7['query'],_0x3e013e[_0x0846('0x31')]));if(_0x11abe7['query'][_0x0846('0x3a')]){_0x3b0850['where']=_['merge'](_0x3b0850[_0x0846('0x3b')],{'$or':_[_0x0846('0x2f')](_0x3b0850[_0x0846('0x32')],function(_0x386ece){var _0x44e4fa={};_0x44e4fa[_0x386ece]={'$like':'%'+_0x11abe7[_0x0846('0x30')][_0x0846('0x3a')]+'%'};return _0x44e4fa;})});}_0x3b0850=_['merge']({},_0x3b0850,_0x11abe7[_0x0846('0x3e')]);return _0x2d195e[_0x0846('0x47')](_0x3b0850);}})[_0x0846('0x23')](function(_0xced532){if(_0xced532){_0x1ce43e=_0xced532['length'];if(!_0x11abe7[_0x0846('0x30')]['hasOwnProperty'](_0x0846('0x36'))){_0x3b0850[_0x0846('0x1e')]=qs[_0x0846('0x1e')](_0x11abe7[_0x0846('0x30')][_0x0846('0x1e')]);_0x3b0850['offset']=qs[_0x0846('0x1d')](_0x11abe7['query'][_0x0846('0x1d')]);}return _0x2d195e[_0x0846('0x47')](_0x3b0850);}})[_0x0846('0x23')](function(_0x4c7ed6){if(_0x4c7ed6){return _0x4c7ed6?{'count':_0x1ce43e,'rows':_0x4c7ed6}:null;}})[_0x0846('0x23')](respondWithResult(_0x186cda,null))[_0x0846('0x41')](handleError(_0x186cda,null));};exports['addConfiguration']=function(_0x5c0593,_0x5c6d66,_0x441b04){if(_0x5c0593['body']['id']){delete _0x5c0593[_0x0846('0x44')]['id'];}return db[_0x0846('0x29')][_0x0846('0x49')]({'where':{'id':_0x5c0593[_0x0846('0x46')]['id']}})[_0x0846('0x23')](handleEntityNotFound(_0x5c6d66,null))[_0x0846('0x23')](function(_0xfc7fe){if(_0xfc7fe){_0x5c0593['body']['AccountId']=_0xfc7fe['id'];_0x5c0593[_0x0846('0x44')][_0x0846('0x4a')]=integrations['getSubjects'](_0x5c0593[_0x0846('0x44')][_0x0846('0x4b')],_0x5c0593[_0x0846('0x44')]['type']);_0x5c0593[_0x0846('0x44')]['Descriptions']=integrations[_0x0846('0x4c')](_0x5c0593[_0x0846('0x44')][_0x0846('0x4b')],_0x5c0593[_0x0846('0x44')]['type']);return db['DeskConfiguration'][_0x0846('0x4d')](_0x5c0593[_0x0846('0x44')],{'include':[{'model':db[_0x0846('0x4e')],'as':_0x0846('0x4a')},{'model':db['DeskField'],'as':'Descriptions'}]});}return null;})[_0x0846('0x23')](respondWithResult(_0x5c6d66,null))[_0x0846('0x41')](handleError(_0x5c6d66,null));};exports['getFields']=function(_0x23b94d,_0x1e1595,_0x1f880f){var _0x3d02fa=[{'name':_0x0846('0x4f'),'label':_0x0846('0x4f'),'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 _0x548732='';return db[_0x0846('0x29')][_0x0846('0x49')]({'where':{'id':_0x23b94d[_0x0846('0x46')]['id']},'attributes':['id',_0x0846('0x50'),_0x0846('0x51'),_0x0846('0x52'),_0x0846('0x53'),_0x0846('0x54'),'consumerSecret',_0x0846('0x55'),_0x0846('0x56')]})[_0x0846('0x23')](handleEntityNotFound(_0x1e1595,null))[_0x0846('0x23')](function(_0x276c28){if(_0x276c28){_0x548732=_0x276c28['remoteUri'];var _0x327025=_0x548732['slice'](-0x1);if(_0x327025==='/'){_0x548732=_0x548732['substring'](0x0,_0x548732[_0x0846('0x57')](_0x327025));}var _0x1590c2={'method':'GET','uri':util['format']('%s/custom_fields',_0x548732),'headers':{'Content-Type':_0x0846('0x58'),'Accept':'application/json'},'json':!![]};if(_0x276c28[_0x0846('0x51')]===_0x0846('0x59')){_0x1590c2[_0x0846('0x5a')]['Authorization']=util[_0x0846('0x5b')]('Basic\x20%s',new Buffer(util[_0x0846('0x5b')](_0x0846('0x5c'),_0x276c28['username'],_0x276c28[_0x0846('0x53')]))['toString'](_0x0846('0x5d')));}return rp(_0x1590c2)['then'](function(_0x18f887){return _0x3d02fa[_0x0846('0x5e')](_['map'](_0x18f887[_0x0846('0x5f')][_0x0846('0x60')],function(_0x3b8c1e){return{'id':_0x3b8c1e['name'],'name':_0x3b8c1e['name'],'type':_0x3b8c1e['type'],'active':_0x3b8c1e[_0x0846('0x61')],'label':_0x3b8c1e[_0x0846('0x62')],'custom':!![]};}));});}})[_0x0846('0x23')](function(_0x324a4a){return{'count':_0x324a4a[_0x0846('0x35')],'rows':_0x324a4a};})[_0x0846('0x23')](respondWithResult(_0x1e1595,null))[_0x0846('0x41')](function(_0x4de4da){var _0x4a8195=_0x23b94d['query'][_0x0846('0x63')]?0x1f4:_0x4de4da[_0x0846('0x64')]||0x1f4;logger[_0x0846('0x25')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x4a8195,JSON[_0x0846('0x65')](_0x4de4da));delete _0x4de4da[_0x0846('0x26')];if(_0x4a8195===0x191){_0x4a8195=0x190;}_0x1e1595[_0x0846('0x1a')](_0x4a8195)[_0x0846('0x27')](_0x23b94d[_0x0846('0x30')]['test']?{'message':_0x0846('0x66'),'statusCode':_0x4de4da[_0x0846('0x64')]}:_0x4de4da);});};
\ No newline at end of file
+var _0x7178=['%s/custom_fields','application/json','basic','headers','Authorization','username','toString','base64','concat','entries','active','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','DeskAccount','then','includeAll','include','findAll','rows','catch','show','params','create','body','find','DeskConfiguration','length','getConfigurations','findOne','AccountId','getSubjects','channel','getDescriptions','DeskField','Subjects','Descriptions','getFields','priority','remoteUri','password','consumerSecret','token','tokenSecret','GET','format'];(function(_0x43681e,_0x1caa7b){var _0xa2284b=function(_0x3a250e){while(--_0x3a250e){_0x43681e['push'](_0x43681e['shift']());}};_0xa2284b(++_0x1caa7b);}(_0x7178,0x1d6));var _0x8717=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7178[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x8717('0x0'));var rimraf=require(_0x8717('0x1'));var zipdir=require(_0x8717('0x2'));var jsonpatch=require(_0x8717('0x3'));var rp=require(_0x8717('0x4'));var moment=require(_0x8717('0x5'));var BPromise=require(_0x8717('0x6'));var Mustache=require('mustache');var util=require(_0x8717('0x7'));var path=require(_0x8717('0x8'));var sox=require(_0x8717('0x9'));var csv=require(_0x8717('0xa'));var ejs=require(_0x8717('0xb'));var fs=require('fs');var fs_extra=require(_0x8717('0xc'));var _=require('lodash');var squel=require(_0x8717('0xd'));var crypto=require(_0x8717('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8717('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8717('0x10'));var Papa=require('papaparse');var Redis=require(_0x8717('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8717('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8717('0x13'));var logger=require(_0x8717('0x14'))(_0x8717('0x15'));var utils=require(_0x8717('0x16'));var config=require(_0x8717('0x17'));var licenseUtil=require(_0x8717('0x18'));var db=require(_0x8717('0x19'))['db'];var integrations=require(_0x8717('0x1a'));function respondWithStatusCode(_0x3b89c0,_0x146dff){_0x146dff=_0x146dff||0xcc;return function(_0x3f9052){if(_0x3f9052){return _0x3b89c0[_0x8717('0x1b')](_0x146dff);}return _0x3b89c0[_0x8717('0x1c')](_0x146dff)[_0x8717('0x1d')]();};}function respondWithResult(_0x3e2ae4,_0x1ce782){_0x1ce782=_0x1ce782||0xc8;return function(_0x461c5c){if(_0x461c5c){return _0x3e2ae4['status'](_0x1ce782)[_0x8717('0x1e')](_0x461c5c);}};}function respondWithFilteredResult(_0x5a06d0,_0x343de4){return function(_0x49bec3){if(_0x49bec3){var _0x2ce832=typeof _0x343de4[_0x8717('0x1f')]===_0x8717('0x20')&&typeof _0x343de4[_0x8717('0x21')]===_0x8717('0x20');var _0x4b2dc0=_0x49bec3[_0x8717('0x22')];var _0x356252=_0x2ce832?0x0:_0x343de4[_0x8717('0x1f')];var _0x134cfa=_0x2ce832?_0x49bec3[_0x8717('0x22')]:_0x343de4[_0x8717('0x1f')]+_0x343de4['limit'];var _0xf02e2d;if(_0x134cfa>=_0x4b2dc0){_0x134cfa=_0x4b2dc0;_0xf02e2d=0xc8;}else{_0xf02e2d=0xce;}_0x5a06d0['status'](_0xf02e2d);return _0x5a06d0[_0x8717('0x23')](_0x8717('0x24'),_0x356252+'-'+_0x134cfa+'/'+_0x4b2dc0)[_0x8717('0x1e')](_0x49bec3);}return null;};}function patchUpdates(_0x1835bb){return function(_0x4f161c){try{jsonpatch[_0x8717('0x25')](_0x4f161c,_0x1835bb,!![]);}catch(_0x143243){return BPromise[_0x8717('0x26')](_0x143243);}return _0x4f161c[_0x8717('0x27')]();};}function saveUpdates(_0x424d58,_0x3600b4){return function(_0x4538a2){if(_0x4538a2){return _0x4538a2[_0x8717('0x28')](_0x424d58)['then'](function(_0x2c1f74){return _0x2c1f74;});}return null;};}function removeEntity(_0x42ea29,_0x332df9){return function(_0x3d6aca){if(_0x3d6aca){return _0x3d6aca[_0x8717('0x29')]()['then'](function(){_0x42ea29[_0x8717('0x1c')](0xcc)[_0x8717('0x1d')]();});}};}function handleEntityNotFound(_0x4d2d1f,_0x926688){return function(_0x31ced6){if(!_0x31ced6){_0x4d2d1f[_0x8717('0x1b')](0x194);}return _0x31ced6;};}function handleError(_0x43c4ef,_0x33fe89){_0x33fe89=_0x33fe89||0x1f4;return function(_0x4efb39){logger[_0x8717('0x2a')](_0x4efb39[_0x8717('0x2b')]);if(_0x4efb39[_0x8717('0x2c')]){delete _0x4efb39[_0x8717('0x2c')];}_0x43c4ef[_0x8717('0x1c')](_0x33fe89)[_0x8717('0x2d')](_0x4efb39);};}exports['index']=function(_0x41c08c,_0x5be7e4){var _0x293472={},_0x1d26c9={},_0x13ffd1={'count':0x0,'rows':[]};var _0x32a3d1=_[_0x8717('0x2e')](db['DeskAccount'][_0x8717('0x2f')],function(_0xcecac6){return{'name':_0xcecac6[_0x8717('0x30')],'type':_0xcecac6[_0x8717('0x31')][_0x8717('0x32')]};});_0x1d26c9[_0x8717('0x33')]=_[_0x8717('0x2e')](_0x32a3d1,_0x8717('0x2c'));_0x1d26c9[_0x8717('0x34')]=_[_0x8717('0x35')](_0x41c08c[_0x8717('0x34')]);_0x1d26c9['filters']=_[_0x8717('0x36')](_0x1d26c9[_0x8717('0x33')],_0x1d26c9['query']);_0x293472[_0x8717('0x37')]=_['intersection'](_0x1d26c9[_0x8717('0x33')],qs[_0x8717('0x38')](_0x41c08c[_0x8717('0x34')][_0x8717('0x38')]));_0x293472[_0x8717('0x37')]=_0x293472[_0x8717('0x37')]['length']?_0x293472[_0x8717('0x37')]:_0x1d26c9[_0x8717('0x33')];if(!_0x41c08c['query'][_0x8717('0x39')](_0x8717('0x3a'))){_0x293472[_0x8717('0x21')]=qs[_0x8717('0x21')](_0x41c08c['query']['limit']);_0x293472[_0x8717('0x1f')]=qs[_0x8717('0x1f')](_0x41c08c[_0x8717('0x34')][_0x8717('0x1f')]);}_0x293472[_0x8717('0x3b')]=qs[_0x8717('0x3c')](_0x41c08c['query'][_0x8717('0x3c')]);_0x293472[_0x8717('0x3d')]=qs[_0x8717('0x3e')](_[_0x8717('0x3f')](_0x41c08c[_0x8717('0x34')],_0x1d26c9[_0x8717('0x3e')]),_0x32a3d1);if(_0x41c08c['query'][_0x8717('0x40')]){_0x293472[_0x8717('0x3d')]=_[_0x8717('0x41')](_0x293472['where'],{'$or':_[_0x8717('0x2e')](_0x32a3d1,function(_0x12ecce){if(_0x12ecce['type']!==_0x8717('0x42')){var _0x25703f={};_0x25703f[_0x12ecce['name']]={'$like':'%'+_0x41c08c[_0x8717('0x34')]['filter']+'%'};return _0x25703f;}})});}_0x293472=_[_0x8717('0x41')]({},_0x293472,_0x41c08c[_0x8717('0x43')]);var _0x4f7d82={'where':_0x293472[_0x8717('0x3d')]};return db[_0x8717('0x44')]['count'](_0x4f7d82)[_0x8717('0x45')](function(_0x29ae6f){_0x13ffd1[_0x8717('0x22')]=_0x29ae6f;if(_0x41c08c[_0x8717('0x34')][_0x8717('0x46')]){_0x293472[_0x8717('0x47')]=[{'all':!![]}];}return db['DeskAccount'][_0x8717('0x48')](_0x293472);})[_0x8717('0x45')](function(_0xe4f7d8){_0x13ffd1[_0x8717('0x49')]=_0xe4f7d8;return _0x13ffd1;})[_0x8717('0x45')](respondWithFilteredResult(_0x5be7e4,_0x293472))[_0x8717('0x4a')](handleError(_0x5be7e4,null));};exports[_0x8717('0x4b')]=function(_0x5f1d67,_0x433d00){var _0x2b1956={'raw':![],'where':{'id':_0x5f1d67[_0x8717('0x4c')]['id']}},_0x3f085b={};_0x3f085b[_0x8717('0x33')]=_[_0x8717('0x35')](db[_0x8717('0x44')]['rawAttributes']);_0x3f085b[_0x8717('0x34')]=_['keys'](_0x5f1d67[_0x8717('0x34')]);_0x3f085b[_0x8717('0x3e')]=_[_0x8717('0x36')](_0x3f085b[_0x8717('0x33')],_0x3f085b[_0x8717('0x34')]);_0x2b1956[_0x8717('0x37')]=_['intersection'](_0x3f085b[_0x8717('0x33')],qs['fields'](_0x5f1d67[_0x8717('0x34')][_0x8717('0x38')]));_0x2b1956[_0x8717('0x37')]=_0x2b1956[_0x8717('0x37')]['length']?_0x2b1956['attributes']:_0x3f085b[_0x8717('0x33')];if(_0x5f1d67[_0x8717('0x34')]['includeAll']){_0x2b1956[_0x8717('0x47')]=[{'all':!![]}];}_0x2b1956=_[_0x8717('0x41')]({},_0x2b1956,_0x5f1d67[_0x8717('0x43')]);return db[_0x8717('0x44')]['find'](_0x2b1956)[_0x8717('0x45')](handleEntityNotFound(_0x433d00,null))[_0x8717('0x45')](respondWithResult(_0x433d00,null))['catch'](handleError(_0x433d00,null));};exports[_0x8717('0x4d')]=function(_0x5526d1,_0x25be97){return db[_0x8717('0x44')][_0x8717('0x4d')](_0x5526d1[_0x8717('0x4e')],{})['then'](respondWithResult(_0x25be97,0xc9))[_0x8717('0x4a')](handleError(_0x25be97,null));};exports[_0x8717('0x28')]=function(_0x54078d,_0x4198bd){if(_0x54078d[_0x8717('0x4e')]['id']){delete _0x54078d['body']['id'];}return db[_0x8717('0x44')][_0x8717('0x4f')]({'where':{'id':_0x54078d[_0x8717('0x4c')]['id']}})[_0x8717('0x45')](handleEntityNotFound(_0x4198bd,null))['then'](saveUpdates(_0x54078d[_0x8717('0x4e')],null))[_0x8717('0x45')](respondWithResult(_0x4198bd,null))[_0x8717('0x4a')](handleError(_0x4198bd,null));};exports[_0x8717('0x29')]=function(_0x425387,_0x1510fa){return db[_0x8717('0x44')]['find']({'where':{'id':_0x425387[_0x8717('0x4c')]['id']}})[_0x8717('0x45')](handleEntityNotFound(_0x1510fa,null))['then'](removeEntity(_0x1510fa,null))[_0x8717('0x4a')](handleError(_0x1510fa,null));};exports['getConfigurations']=function(_0x50c197,_0x54949b,_0x6b851b){var _0x59836d={};var _0x1da222={};var _0x2761df;var _0x162666;return db[_0x8717('0x44')]['findOne']({'where':{'id':_0x50c197['params']['id']}})['then'](handleEntityNotFound(_0x54949b,null))[_0x8717('0x45')](function(_0x325e7b){if(_0x325e7b){_0x2761df=_0x325e7b;_0x1da222['model']=_[_0x8717('0x35')](db[_0x8717('0x50')][_0x8717('0x2f')]);_0x1da222[_0x8717('0x34')]=_[_0x8717('0x35')](_0x50c197['query']);_0x1da222['filters']=_['intersection'](_0x1da222[_0x8717('0x33')],_0x1da222[_0x8717('0x34')]);_0x59836d[_0x8717('0x37')]=_[_0x8717('0x36')](_0x1da222['model'],qs[_0x8717('0x38')](_0x50c197['query'][_0x8717('0x38')]));_0x59836d[_0x8717('0x37')]=_0x59836d[_0x8717('0x37')][_0x8717('0x51')]?_0x59836d[_0x8717('0x37')]:_0x1da222['model'];_0x59836d[_0x8717('0x3b')]=qs['sort'](_0x50c197[_0x8717('0x34')][_0x8717('0x3c')]);_0x59836d[_0x8717('0x3d')]=qs[_0x8717('0x3e')](_[_0x8717('0x3f')](_0x50c197[_0x8717('0x34')],_0x1da222[_0x8717('0x3e')]));if(_0x50c197[_0x8717('0x34')]['filter']){_0x59836d[_0x8717('0x3d')]=_['merge'](_0x59836d[_0x8717('0x3d')],{'$or':_[_0x8717('0x2e')](_0x59836d['attributes'],function(_0x2b937e){var _0x499afe={};_0x499afe[_0x2b937e]={'$like':'%'+_0x50c197[_0x8717('0x34')][_0x8717('0x40')]+'%'};return _0x499afe;})});}_0x59836d=_['merge']({},_0x59836d,_0x50c197[_0x8717('0x43')]);return _0x2761df[_0x8717('0x52')](_0x59836d);}})[_0x8717('0x45')](function(_0x56672b){if(_0x56672b){_0x162666=_0x56672b['length'];if(!_0x50c197['query'][_0x8717('0x39')](_0x8717('0x3a'))){_0x59836d[_0x8717('0x21')]=qs[_0x8717('0x21')](_0x50c197['query']['limit']);_0x59836d['offset']=qs[_0x8717('0x1f')](_0x50c197[_0x8717('0x34')][_0x8717('0x1f')]);}return _0x2761df['getConfigurations'](_0x59836d);}})['then'](function(_0x582319){if(_0x582319){return _0x582319?{'count':_0x162666,'rows':_0x582319}:null;}})[_0x8717('0x45')](respondWithResult(_0x54949b,null))[_0x8717('0x4a')](handleError(_0x54949b,null));};exports['addConfiguration']=function(_0x3aa2ff,_0xaca584,_0x7d3c8b){if(_0x3aa2ff[_0x8717('0x4e')]['id']){delete _0x3aa2ff[_0x8717('0x4e')]['id'];}return db['DeskAccount'][_0x8717('0x53')]({'where':{'id':_0x3aa2ff['params']['id']}})[_0x8717('0x45')](handleEntityNotFound(_0xaca584,null))[_0x8717('0x45')](function(_0x2a83ca){if(_0x2a83ca){_0x3aa2ff['body'][_0x8717('0x54')]=_0x2a83ca['id'];_0x3aa2ff[_0x8717('0x4e')]['Subjects']=integrations[_0x8717('0x55')](_0x3aa2ff[_0x8717('0x4e')][_0x8717('0x56')],_0x3aa2ff[_0x8717('0x4e')][_0x8717('0x31')]);_0x3aa2ff[_0x8717('0x4e')]['Descriptions']=integrations[_0x8717('0x57')](_0x3aa2ff[_0x8717('0x4e')][_0x8717('0x56')],_0x3aa2ff[_0x8717('0x4e')][_0x8717('0x31')]);return db[_0x8717('0x50')]['create'](_0x3aa2ff['body'],{'include':[{'model':db[_0x8717('0x58')],'as':_0x8717('0x59')},{'model':db['DeskField'],'as':_0x8717('0x5a')}]});}return null;})['then'](respondWithResult(_0xaca584,null))[_0x8717('0x4a')](handleError(_0xaca584,null));};exports[_0x8717('0x5b')]=function(_0x5b751a,_0x22e8ee,_0x50b77d){var _0x138883=[{'name':_0x8717('0x5c'),'label':_0x8717('0x5c'),'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 _0x3c26aa='';return db['DeskAccount'][_0x8717('0x53')]({'where':{'id':_0x5b751a['params']['id']},'attributes':['id',_0x8717('0x5d'),'authType','username',_0x8717('0x5e'),'consumerKey',_0x8717('0x5f'),_0x8717('0x60'),_0x8717('0x61')]})[_0x8717('0x45')](handleEntityNotFound(_0x22e8ee,null))[_0x8717('0x45')](function(_0x38a71d){if(_0x38a71d){_0x3c26aa=_0x38a71d[_0x8717('0x5d')];var _0x4df58e=_0x3c26aa['slice'](-0x1);if(_0x4df58e==='/'){_0x3c26aa=_0x3c26aa['substring'](0x0,_0x3c26aa['lastIndexOf'](_0x4df58e));}var _0x563039={'method':_0x8717('0x62'),'uri':util[_0x8717('0x63')](_0x8717('0x64'),_0x3c26aa),'headers':{'Content-Type':'application/json','Accept':_0x8717('0x65')},'json':!![]};if(_0x38a71d['authType']===_0x8717('0x66')){_0x563039[_0x8717('0x67')][_0x8717('0x68')]=util[_0x8717('0x63')]('Basic\x20%s',new Buffer(util[_0x8717('0x63')]('%s:%s',_0x38a71d[_0x8717('0x69')],_0x38a71d[_0x8717('0x5e')]))[_0x8717('0x6a')](_0x8717('0x6b')));}return rp(_0x563039)[_0x8717('0x45')](function(_0x5c6473){return _0x138883[_0x8717('0x6c')](_['map'](_0x5c6473['_embedded'][_0x8717('0x6d')],function(_0x30bfb3){return{'id':_0x30bfb3[_0x8717('0x2c')],'name':_0x30bfb3[_0x8717('0x2c')],'type':_0x30bfb3[_0x8717('0x31')],'active':_0x30bfb3[_0x8717('0x6e')],'label':_0x30bfb3['label'],'custom':!![]};}));});}})['then'](function(_0xb307c){return{'count':_0xb307c[_0x8717('0x51')],'rows':_0xb307c};})['then'](respondWithResult(_0x22e8ee,null))[_0x8717('0x4a')](function(_0x436fed){var _0x175fec=_0x5b751a[_0x8717('0x34')][_0x8717('0x6f')]?0x1f4:_0x436fed[_0x8717('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x8717('0x5b'),_0x175fec,JSON['stringify'](_0x436fed));delete _0x436fed[_0x8717('0x2c')];if(_0x175fec===0x191){_0x175fec=0x190;}_0x22e8ee[_0x8717('0x1c')](_0x175fec)[_0x8717('0x2d')](_0x5b751a[_0x8717('0x34')][_0x8717('0x6f')]?{'message':_0x8717('0x71'),'statusCode':_0x436fed[_0x8717('0x70')]}:_0x436fed);});};
\ No newline at end of file
index 69c1740..6671581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1361=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_desk_accounts','lodash','util'];(function(_0x5427ad,_0x44b2db){var _0x2c14b4=function(_0x5f4434){while(--_0x5f4434){_0x5427ad['push'](_0x5427ad['shift']());}};_0x2c14b4(++_0x44b2db);}(_0x1361,0x9a));var _0x1136=function(_0x26c74b,_0x3efbb1){_0x26c74b=_0x26c74b-0x0;var _0x563ec4=_0x1361[_0x26c74b];return _0x563ec4;};'use strict';var _=require(_0x1136('0x0'));var util=require(_0x1136('0x1'));var logger=require(_0x1136('0x2'))(_0x1136('0x3'));var moment=require('moment');var BPromise=require(_0x1136('0x4'));var rp=require(_0x1136('0x5'));var fs=require('fs');var path=require(_0x1136('0x6'));var rimraf=require(_0x1136('0x7'));var config=require(_0x1136('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x1136('0x9'));module[_0x1136('0xa')]=function(_0x14bc0f,_0x353d05){return _0x14bc0f[_0x1136('0xb')]('DeskAccount',attributes,{'tableName':_0x1136('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1284=['./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x397014,_0x17cc12){var _0x1163f7=function(_0x290ac1){while(--_0x290ac1){_0x397014['push'](_0x397014['shift']());}};_0x1163f7(++_0x17cc12);}(_0x1284,0x1aa));var _0x4128=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x1284[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x4128('0x0'));var util=require('util');var logger=require(_0x4128('0x1'))(_0x4128('0x2'));var moment=require(_0x4128('0x3'));var BPromise=require(_0x4128('0x4'));var rp=require(_0x4128('0x5'));var fs=require('fs');var path=require(_0x4128('0x6'));var rimraf=require(_0x4128('0x7'));var config=require(_0x4128('0x8'));var attributes=require(_0x4128('0x9'));var integrations=require(_0x4128('0xa'));module[_0x4128('0xb')]=function(_0x1f9e05,_0x46dadd){return _0x1f9e05[_0x4128('0xc')](_0x4128('0xd'),attributes,{'tableName':_0x4128('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d88007..72ca112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8151=['moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','GetDeskAccount','findAll','options','raw','attributes','limit','include','map','model','debug','catch','ShowDeskAccount','DeskAccount','where','lodash','util'];(function(_0x483df9,_0x19748a){var _0x2ad48b=function(_0x2bb5c8){while(--_0x2bb5c8){_0x483df9['push'](_0x483df9['shift']());}};_0x2ad48b(++_0x19748a);}(_0x8151,0x7e));var _0x1815=function(_0x997222,_0x5c0bd8){_0x997222=_0x997222-0x0;var _0x4b8869=_0x8151[_0x997222];return _0x4b8869;};'use strict';var _=require(_0x1815('0x0'));var util=require(_0x1815('0x1'));var moment=require(_0x1815('0x2'));var BPromise=require('bluebird');var rs=require(_0x1815('0x3'));var fs=require('fs');var Redis=require(_0x1815('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1815('0x5'))(_0x1815('0x6'));var config=require(_0x1815('0x7'));var jayson=require(_0x1815('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1df015,_0x3cc2eb,_0x2dade6){return new BPromise(function(_0x5a7113,_0x550d04){return client[_0x1815('0x9')](_0x1df015,_0x2dade6)[_0x1815('0xa')](function(_0x57cc4a){logger[_0x1815('0xb')](_0x1815('0xc'),_0x3cc2eb,'request\x20sent');logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x3cc2eb,_0x1815('0xd'),JSON[_0x1815('0xe')](_0x57cc4a));if(_0x57cc4a[_0x1815('0xf')]){if(_0x57cc4a[_0x1815('0xf')][_0x1815('0x10')]===0x1f4){logger['error'](_0x1815('0xc'),_0x3cc2eb,_0x57cc4a[_0x1815('0xf')][_0x1815('0x11')]);return _0x550d04(_0x57cc4a['error'][_0x1815('0x11')]);}logger[_0x1815('0xf')]('DeskAccount,\x20%s,\x20%s',_0x3cc2eb,_0x57cc4a['error'][_0x1815('0x11')]);return _0x5a7113(_0x57cc4a[_0x1815('0xf')][_0x1815('0x11')]);}else{logger[_0x1815('0xb')](_0x1815('0xc'),_0x3cc2eb,'request\x20sent');_0x5a7113(_0x57cc4a['result'][_0x1815('0x11')]);}})['catch'](function(_0x301182){logger[_0x1815('0xf')](_0x1815('0xc'),_0x3cc2eb,_0x301182);_0x550d04(_0x301182);});});}exports[_0x1815('0x12')]=function(_0xac8747){var _0x3472b4=this;return new Promise(function(_0x24def6,_0x2743be){return db['DeskAccount'][_0x1815('0x13')]({'raw':_0xac8747[_0x1815('0x14')]?_0xac8747['options'][_0x1815('0x15')]===undefined?!![]:![]:!![],'where':_0xac8747['options']?_0xac8747['options']['where']||null:null,'attributes':_0xac8747[_0x1815('0x14')]?_0xac8747[_0x1815('0x14')][_0x1815('0x16')]||null:null,'limit':_0xac8747[_0x1815('0x14')]?_0xac8747[_0x1815('0x14')][_0x1815('0x17')]||null:null,'include':_0xac8747['options']?_0xac8747[_0x1815('0x14')][_0x1815('0x18')]?_[_0x1815('0x19')](_0xac8747[_0x1815('0x14')][_0x1815('0x18')],function(_0x4e4787){return{'model':db[_0x4e4787[_0x1815('0x1a')]],'as':_0x4e4787['as'],'attributes':_0x4e4787['attributes'],'include':_0x4e4787['include']?_[_0x1815('0x19')](_0x4e4787[_0x1815('0x18')],function(_0x281739){return{'model':db[_0x281739['model']],'as':_0x281739['as'],'attributes':_0x281739[_0x1815('0x16')],'include':_0x281739[_0x1815('0x18')]?_[_0x1815('0x19')](_0x281739[_0x1815('0x18')],function(_0xab992a){return{'model':db[_0xab992a['model']],'as':_0xab992a['as'],'attributes':_0xab992a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x20b23a){logger['info']('GetDeskAccount',_0xac8747);logger[_0x1815('0x1b')](_0x1815('0x12'),_0xac8747,JSON[_0x1815('0xe')](_0x20b23a));_0x24def6(_0x20b23a);})[_0x1815('0x1c')](function(_0x3b2829){logger['error']('GetDeskAccount',_0x3b2829[_0x1815('0x11')],_0xac8747);_0x2743be(_0x3472b4[_0x1815('0xf')](0x1f4,_0x3b2829['message']));});});};exports[_0x1815('0x1d')]=function(_0x1c0a5d){var _0x1463c8=this;return new Promise(function(_0x17bcea,_0x210883){return db[_0x1815('0x1e')]['find']({'raw':_0x1c0a5d[_0x1815('0x14')]?_0x1c0a5d[_0x1815('0x14')][_0x1815('0x15')]===undefined?!![]:![]:!![],'where':_0x1c0a5d[_0x1815('0x14')]?_0x1c0a5d[_0x1815('0x14')][_0x1815('0x1f')]||null:null,'attributes':_0x1c0a5d[_0x1815('0x14')]?_0x1c0a5d[_0x1815('0x14')][_0x1815('0x16')]||null:null,'include':_0x1c0a5d['options']?_0x1c0a5d['options'][_0x1815('0x18')]?_[_0x1815('0x19')](_0x1c0a5d[_0x1815('0x14')][_0x1815('0x18')],function(_0x5024fd){return{'model':db[_0x5024fd[_0x1815('0x1a')]],'as':_0x5024fd['as'],'attributes':_0x5024fd[_0x1815('0x16')],'include':_0x5024fd[_0x1815('0x18')]?_[_0x1815('0x19')](_0x5024fd[_0x1815('0x18')],function(_0x30723b){return{'model':db[_0x30723b[_0x1815('0x1a')]],'as':_0x30723b['as'],'attributes':_0x30723b[_0x1815('0x16')],'include':_0x30723b[_0x1815('0x18')]?_[_0x1815('0x19')](_0x30723b[_0x1815('0x18')],function(_0x4030cb){return{'model':db[_0x4030cb[_0x1815('0x1a')]],'as':_0x4030cb['as'],'attributes':_0x4030cb[_0x1815('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1b689e){logger['info'](_0x1815('0x1d'),_0x1c0a5d);logger['debug'](_0x1815('0x1d'),_0x1c0a5d,JSON[_0x1815('0xe')](_0x1b689e));_0x17bcea(_0x1b689e);})['catch'](function(_0x59a7be){logger[_0x1815('0xf')](_0x1815('0x1d'),_0x59a7be['message'],_0x1c0a5d);_0x210883(_0x1463c8[_0x1815('0xf')](0x1f4,_0x59a7be[_0x1815('0x11')]));});});};
\ No newline at end of file
+var _0xc6d8=['util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetDeskAccount','findAll','options','raw','attributes','limit','map','include','model','then','ShowDeskAccount','find','where'];(function(_0x222ca9,_0x203f9d){var _0x5cc79f=function(_0x3247bd){while(--_0x3247bd){_0x222ca9['push'](_0x222ca9['shift']());}};_0x5cc79f(++_0x203f9d);}(_0xc6d8,0x14a));var _0x8c6d=function(_0x397843,_0xa7173e){_0x397843=_0x397843-0x0;var _0x2ba028=_0xc6d8[_0x397843];return _0x2ba028;};'use strict';var _=require('lodash');var util=require(_0x8c6d('0x0'));var moment=require(_0x8c6d('0x1'));var BPromise=require('bluebird');var rs=require(_0x8c6d('0x2'));var fs=require('fs');var Redis=require(_0x8c6d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8c6d('0x4'));var logger=require(_0x8c6d('0x5'))(_0x8c6d('0x6'));var config=require(_0x8c6d('0x7'));var jayson=require(_0x8c6d('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xb1daf7,_0x78ebff,_0x11793c){return new BPromise(function(_0x30f41e,_0x5e3497){return client[_0x8c6d('0x9')](_0xb1daf7,_0x11793c)['then'](function(_0x49c161){logger[_0x8c6d('0xa')](_0x8c6d('0xb'),_0x78ebff,_0x8c6d('0xc'));logger[_0x8c6d('0xd')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x78ebff,_0x8c6d('0xc'),JSON[_0x8c6d('0xe')](_0x49c161));if(_0x49c161[_0x8c6d('0xf')]){if(_0x49c161[_0x8c6d('0xf')][_0x8c6d('0x10')]===0x1f4){logger['error'](_0x8c6d('0xb'),_0x78ebff,_0x49c161[_0x8c6d('0xf')][_0x8c6d('0x11')]);return _0x5e3497(_0x49c161['error'][_0x8c6d('0x11')]);}logger[_0x8c6d('0xf')](_0x8c6d('0xb'),_0x78ebff,_0x49c161[_0x8c6d('0xf')][_0x8c6d('0x11')]);return _0x30f41e(_0x49c161[_0x8c6d('0xf')][_0x8c6d('0x11')]);}else{logger['info'](_0x8c6d('0xb'),_0x78ebff,_0x8c6d('0xc'));_0x30f41e(_0x49c161[_0x8c6d('0x12')][_0x8c6d('0x11')]);}})[_0x8c6d('0x13')](function(_0x2de16b){logger['error'](_0x8c6d('0xb'),_0x78ebff,_0x2de16b);_0x5e3497(_0x2de16b);});});}exports[_0x8c6d('0x14')]=function(_0x470060){var _0x3e7638=this;return new Promise(function(_0x59845e,_0xdd12ee){return db['DeskAccount'][_0x8c6d('0x15')]({'raw':_0x470060[_0x8c6d('0x16')]?_0x470060[_0x8c6d('0x16')][_0x8c6d('0x17')]===undefined?!![]:![]:!![],'where':_0x470060[_0x8c6d('0x16')]?_0x470060['options']['where']||null:null,'attributes':_0x470060[_0x8c6d('0x16')]?_0x470060[_0x8c6d('0x16')][_0x8c6d('0x18')]||null:null,'limit':_0x470060['options']?_0x470060[_0x8c6d('0x16')][_0x8c6d('0x19')]||null:null,'include':_0x470060[_0x8c6d('0x16')]?_0x470060[_0x8c6d('0x16')]['include']?_[_0x8c6d('0x1a')](_0x470060['options'][_0x8c6d('0x1b')],function(_0x322261){return{'model':db[_0x322261[_0x8c6d('0x1c')]],'as':_0x322261['as'],'attributes':_0x322261['attributes'],'include':_0x322261['include']?_[_0x8c6d('0x1a')](_0x322261[_0x8c6d('0x1b')],function(_0x32fc39){return{'model':db[_0x32fc39[_0x8c6d('0x1c')]],'as':_0x32fc39['as'],'attributes':_0x32fc39[_0x8c6d('0x18')],'include':_0x32fc39[_0x8c6d('0x1b')]?_['map'](_0x32fc39[_0x8c6d('0x1b')],function(_0x5b3f55){return{'model':db[_0x5b3f55[_0x8c6d('0x1c')]],'as':_0x5b3f55['as'],'attributes':_0x5b3f55[_0x8c6d('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8c6d('0x1d')](function(_0x49ef8b){logger[_0x8c6d('0xa')](_0x8c6d('0x14'),_0x470060);logger['debug'](_0x8c6d('0x14'),_0x470060,JSON[_0x8c6d('0xe')](_0x49ef8b));_0x59845e(_0x49ef8b);})[_0x8c6d('0x13')](function(_0x481252){logger[_0x8c6d('0xf')]('GetDeskAccount',_0x481252['message'],_0x470060);_0xdd12ee(_0x3e7638[_0x8c6d('0xf')](0x1f4,_0x481252[_0x8c6d('0x11')]));});});};exports[_0x8c6d('0x1e')]=function(_0x47ec5a){var _0x5c6c33=this;return new Promise(function(_0x5912d9,_0x1f7135){return db['DeskAccount'][_0x8c6d('0x1f')]({'raw':_0x47ec5a[_0x8c6d('0x16')]?_0x47ec5a[_0x8c6d('0x16')][_0x8c6d('0x17')]===undefined?!![]:![]:!![],'where':_0x47ec5a[_0x8c6d('0x16')]?_0x47ec5a['options'][_0x8c6d('0x20')]||null:null,'attributes':_0x47ec5a[_0x8c6d('0x16')]?_0x47ec5a[_0x8c6d('0x16')][_0x8c6d('0x18')]||null:null,'include':_0x47ec5a['options']?_0x47ec5a[_0x8c6d('0x16')][_0x8c6d('0x1b')]?_[_0x8c6d('0x1a')](_0x47ec5a['options']['include'],function(_0x550481){return{'model':db[_0x550481[_0x8c6d('0x1c')]],'as':_0x550481['as'],'attributes':_0x550481[_0x8c6d('0x18')],'include':_0x550481['include']?_[_0x8c6d('0x1a')](_0x550481[_0x8c6d('0x1b')],function(_0x2091eb){return{'model':db[_0x2091eb[_0x8c6d('0x1c')]],'as':_0x2091eb['as'],'attributes':_0x2091eb['attributes'],'include':_0x2091eb[_0x8c6d('0x1b')]?_[_0x8c6d('0x1a')](_0x2091eb[_0x8c6d('0x1b')],function(_0x510df5){return{'model':db[_0x510df5[_0x8c6d('0x1c')]],'as':_0x510df5['as'],'attributes':_0x510df5[_0x8c6d('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4dcdd8){logger['info'](_0x8c6d('0x1e'),_0x47ec5a);logger[_0x8c6d('0xd')](_0x8c6d('0x1e'),_0x47ec5a,JSON['stringify'](_0x4dcdd8));_0x5912d9(_0x4dcdd8);})[_0x8c6d('0x13')](function(_0x10c223){logger[_0x8c6d('0xf')](_0x8c6d('0x1e'),_0x10c223[_0x8c6d('0x11')],_0x47ec5a);_0x1f7135(_0x5c6c33[_0x8c6d('0xf')](0x1f4,_0x10c223['message']));});});};
\ No newline at end of file
index 4fe403f..066d792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x2f2afe,_0x178da5){var _0x38a02f=function(_0x47142a){while(--_0x47142a){_0x2f2afe['push'](_0x2f2afe['shift']());}};_0x38a02f(++_0x178da5);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',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/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0x7217=['getDescriptions','/:id/tags','post','setTags','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0xa42766,_0xbc412f){var _0x512a37=function(_0x443255){while(--_0x443255){_0xa42766['push'](_0xa42766['shift']());}};_0x512a37(++_0xbc412f);}(_0x7217,0x19e));var _0x7721=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x7217[_0x134c2e];return _0x2825db;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getTags']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['put'](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router['delete']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);module[_0x7721('0x17')]=router;
\ No newline at end of file
index 704d45f..c61b312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64c2=['STRING','exports'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x64c2,0x1cd));var _0x264c=function(_0x38554e,_0xede0ad){_0x38554e=_0x38554e-0x0;var _0x4a18b4=_0x64c2[_0x38554e];return _0x4a18b4;};'use strict';var Sequelize=require('sequelize');module[_0x264c('0x0')]={'name':{'type':Sequelize[_0x264c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x23bf=['STRING','sequelize'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x23bf,0x199));var _0xf23b=function(_0x35c1a9,_0x130da5){_0x35c1a9=_0x35c1a9-0x0;var _0x467677=_0x23bf[_0x35c1a9];return _0x467677;};'use strict';var Sequelize=require(_0xf23b('0x0'));module['exports']={'name':{'type':Sequelize[_0xf23b('0x1')]},'description':{'type':Sequelize[_0xf23b('0x1')]}};
\ No newline at end of file
index 21981a8..b720dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f80=['moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','key','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','options','DeskConfiguration','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','find','create','body','getFields','DeskField','filter','getSubjects','findOne','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x6f80,0x157));var _0x06f8=function(_0x329340,_0x40bd37){_0x329340=_0x329340-0x0;var _0x86562a=_0x6f80[_0x329340];return _0x86562a;};'use strict';var emlformat=require(_0x06f8('0x0'));var rimraf=require(_0x06f8('0x1'));var zipdir=require(_0x06f8('0x2'));var jsonpatch=require(_0x06f8('0x3'));var rp=require(_0x06f8('0x4'));var moment=require(_0x06f8('0x5'));var BPromise=require(_0x06f8('0x6'));var Mustache=require(_0x06f8('0x7'));var util=require(_0x06f8('0x8'));var path=require(_0x06f8('0x9'));var sox=require(_0x06f8('0xa'));var csv=require('to-csv');var ejs=require(_0x06f8('0xb'));var fs=require('fs');var fs_extra=require(_0x06f8('0xc'));var _=require(_0x06f8('0xd'));var squel=require('squel');var crypto=require(_0x06f8('0xe'));var jsforce=require(_0x06f8('0xf'));var deskjs=require(_0x06f8('0x10'));var toCsv=require(_0x06f8('0x11'));var querystring=require('querystring');var Papa=require(_0x06f8('0x12'));var Redis=require('ioredis');var authService=require(_0x06f8('0x13'));var qs=require(_0x06f8('0x14'));var as=require(_0x06f8('0x15'));var hardwareService=require(_0x06f8('0x16'));var logger=require(_0x06f8('0x17'))(_0x06f8('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x06f8('0x19'));var db=require(_0x06f8('0x1a'))['db'];function respondWithStatusCode(_0x53e5a9,_0x61f133){_0x61f133=_0x61f133||0xcc;return function(_0x41503c){if(_0x41503c){return _0x53e5a9[_0x06f8('0x1b')](_0x61f133);}return _0x53e5a9[_0x06f8('0x1c')](_0x61f133)[_0x06f8('0x1d')]();};}function respondWithResult(_0x5ef6a5,_0x486a83){_0x486a83=_0x486a83||0xc8;return function(_0x496537){if(_0x496537){return _0x5ef6a5[_0x06f8('0x1c')](_0x486a83)[_0x06f8('0x1e')](_0x496537);}};}function respondWithFilteredResult(_0x25a127,_0x1c4df8){return function(_0x4ef583){if(_0x4ef583){var _0x2532f8=typeof _0x1c4df8[_0x06f8('0x1f')]===_0x06f8('0x20')&&typeof _0x1c4df8[_0x06f8('0x21')]===_0x06f8('0x20');var _0x246c38=_0x4ef583[_0x06f8('0x22')];var _0x41f033=_0x2532f8?0x0:_0x1c4df8[_0x06f8('0x1f')];var _0x356ec7=_0x2532f8?_0x4ef583[_0x06f8('0x22')]:_0x1c4df8['offset']+_0x1c4df8['limit'];var _0x3a291e;if(_0x356ec7>=_0x246c38){_0x356ec7=_0x246c38;_0x3a291e=0xc8;}else{_0x3a291e=0xce;}_0x25a127[_0x06f8('0x1c')](_0x3a291e);return _0x25a127['set'](_0x06f8('0x23'),_0x41f033+'-'+_0x356ec7+'/'+_0x246c38)[_0x06f8('0x1e')](_0x4ef583);}return null;};}function patchUpdates(_0x53be87){return function(_0x1591b3){try{jsonpatch['apply'](_0x1591b3,_0x53be87,!![]);}catch(_0x11bcca){return BPromise[_0x06f8('0x24')](_0x11bcca);}return _0x1591b3[_0x06f8('0x25')]();};}function saveUpdates(_0x128729,_0x554fe6){return function(_0x2770d3){if(_0x2770d3){return _0x2770d3[_0x06f8('0x26')](_0x128729)[_0x06f8('0x27')](function(_0x46c185){return _0x46c185;});}return null;};}function removeEntity(_0x26d2f5,_0x5b87aa){return function(_0x15381e){if(_0x15381e){return _0x15381e[_0x06f8('0x28')]()[_0x06f8('0x27')](function(){_0x26d2f5['status'](0xcc)[_0x06f8('0x1d')]();});}};}function handleEntityNotFound(_0x212426,_0x555775){return function(_0xe2014d){if(!_0xe2014d){_0x212426[_0x06f8('0x1b')](0x194);}return _0xe2014d;};}function handleError(_0xebced7,_0x5f17f5){_0x5f17f5=_0x5f17f5||0x1f4;return function(_0x59f7e4){logger[_0x06f8('0x29')](_0x59f7e4[_0x06f8('0x2a')]);if(_0x59f7e4[_0x06f8('0x2b')]){delete _0x59f7e4[_0x06f8('0x2b')];}_0xebced7[_0x06f8('0x1c')](_0x5f17f5)[_0x06f8('0x2c')](_0x59f7e4);};}exports[_0x06f8('0x2d')]=function(_0x5d4641,_0x4724d0){var _0x321415={},_0x7877b1={},_0x114edf={'count':0x0,'rows':[]};var _0x2b25e4=_['map'](db['DeskConfiguration']['rawAttributes'],function(_0x457175){return{'name':_0x457175['fieldName'],'type':_0x457175['type'][_0x06f8('0x2e')]};});_0x7877b1[_0x06f8('0x2f')]=_[_0x06f8('0x30')](_0x2b25e4,'name');_0x7877b1[_0x06f8('0x31')]=_[_0x06f8('0x32')](_0x5d4641[_0x06f8('0x31')]);_0x7877b1[_0x06f8('0x33')]=_['intersection'](_0x7877b1[_0x06f8('0x2f')],_0x7877b1[_0x06f8('0x31')]);_0x321415[_0x06f8('0x34')]=_['intersection'](_0x7877b1[_0x06f8('0x2f')],qs['fields'](_0x5d4641['query'][_0x06f8('0x35')]));_0x321415[_0x06f8('0x34')]=_0x321415[_0x06f8('0x34')][_0x06f8('0x36')]?_0x321415[_0x06f8('0x34')]:_0x7877b1[_0x06f8('0x2f')];if(!_0x5d4641['query'][_0x06f8('0x37')](_0x06f8('0x38'))){_0x321415[_0x06f8('0x21')]=qs[_0x06f8('0x21')](_0x5d4641[_0x06f8('0x31')][_0x06f8('0x21')]);_0x321415[_0x06f8('0x1f')]=qs[_0x06f8('0x1f')](_0x5d4641[_0x06f8('0x31')][_0x06f8('0x1f')]);}_0x321415[_0x06f8('0x39')]=qs[_0x06f8('0x3a')](_0x5d4641[_0x06f8('0x31')][_0x06f8('0x3a')]);_0x321415[_0x06f8('0x3b')]=qs[_0x06f8('0x33')](_[_0x06f8('0x3c')](_0x5d4641[_0x06f8('0x31')],_0x7877b1[_0x06f8('0x33')]),_0x2b25e4);if(_0x5d4641[_0x06f8('0x31')]['filter']){_0x321415['where']=_[_0x06f8('0x3d')](_0x321415[_0x06f8('0x3b')],{'$or':_['map'](_0x2b25e4,function(_0x45d68b){if(_0x45d68b[_0x06f8('0x3e')]!==_0x06f8('0x3f')){var _0xd1aebd={};_0xd1aebd[_0x45d68b['name']]={'$like':'%'+_0x5d4641[_0x06f8('0x31')]['filter']+'%'};return _0xd1aebd;}})});}_0x321415=_[_0x06f8('0x3d')]({},_0x321415,_0x5d4641[_0x06f8('0x40')]);var _0xa1a17d={'where':_0x321415[_0x06f8('0x3b')]};return db[_0x06f8('0x41')][_0x06f8('0x22')](_0xa1a17d)['then'](function(_0x306d0b){_0x114edf[_0x06f8('0x22')]=_0x306d0b;if(_0x5d4641[_0x06f8('0x31')][_0x06f8('0x42')]){_0x321415[_0x06f8('0x43')]=[{'all':!![]}];}return db[_0x06f8('0x41')][_0x06f8('0x44')](_0x321415);})[_0x06f8('0x27')](function(_0x55f9eb){_0x114edf[_0x06f8('0x45')]=_0x55f9eb;return _0x114edf;})[_0x06f8('0x27')](respondWithFilteredResult(_0x4724d0,_0x321415))[_0x06f8('0x46')](handleError(_0x4724d0,null));};exports[_0x06f8('0x47')]=function(_0x224bea,_0x3d2854){var _0x292cb6={'raw':![],'where':{'id':_0x224bea[_0x06f8('0x48')]['id']}},_0x1f8b6b={};_0x1f8b6b['model']=_[_0x06f8('0x32')](db[_0x06f8('0x41')][_0x06f8('0x49')]);_0x1f8b6b[_0x06f8('0x31')]=_[_0x06f8('0x32')](_0x224bea[_0x06f8('0x31')]);_0x1f8b6b[_0x06f8('0x33')]=_[_0x06f8('0x4a')](_0x1f8b6b[_0x06f8('0x2f')],_0x1f8b6b[_0x06f8('0x31')]);_0x292cb6['attributes']=_[_0x06f8('0x4a')](_0x1f8b6b['model'],qs['fields'](_0x224bea[_0x06f8('0x31')][_0x06f8('0x35')]));_0x292cb6[_0x06f8('0x34')]=_0x292cb6[_0x06f8('0x34')]['length']?_0x292cb6['attributes']:_0x1f8b6b[_0x06f8('0x2f')];if(_0x224bea[_0x06f8('0x31')][_0x06f8('0x42')]){_0x292cb6[_0x06f8('0x43')]=[{'all':!![]}];}_0x292cb6=_['merge']({},_0x292cb6,_0x224bea['options']);return db[_0x06f8('0x41')][_0x06f8('0x4b')](_0x292cb6)['then'](handleEntityNotFound(_0x3d2854,null))[_0x06f8('0x27')](respondWithResult(_0x3d2854,null))['catch'](handleError(_0x3d2854,null));};exports[_0x06f8('0x4c')]=function(_0x3d770e,_0x3a55bb){return db[_0x06f8('0x41')]['create'](_0x3d770e[_0x06f8('0x4d')],{})[_0x06f8('0x27')](respondWithResult(_0x3a55bb,0xc9))[_0x06f8('0x46')](handleError(_0x3a55bb,null));};exports[_0x06f8('0x26')]=function(_0x246fb1,_0x59987d){if(_0x246fb1['body']['id']){delete _0x246fb1[_0x06f8('0x4d')]['id'];}return db['DeskConfiguration'][_0x06f8('0x4b')]({'where':{'id':_0x246fb1[_0x06f8('0x48')]['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0x59987d,null))[_0x06f8('0x27')](saveUpdates(_0x246fb1[_0x06f8('0x4d')],null))[_0x06f8('0x27')](respondWithResult(_0x59987d,null))[_0x06f8('0x46')](handleError(_0x59987d,null));};exports[_0x06f8('0x28')]=function(_0x4956ca,_0x18ec3e){return db[_0x06f8('0x41')]['find']({'where':{'id':_0x4956ca[_0x06f8('0x48')]['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0x18ec3e,null))[_0x06f8('0x27')](removeEntity(_0x18ec3e,null))['catch'](handleError(_0x18ec3e,null));};exports[_0x06f8('0x4e')]=function(_0xb46c2d,_0x34324a,_0x572aea){var _0x381029={};var _0xfce07a={};var _0x2fec45;var _0x5e0986;return db[_0x06f8('0x41')]['findOne']({'where':{'id':_0xb46c2d[_0x06f8('0x48')]['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0x34324a,null))[_0x06f8('0x27')](function(_0x390f71){if(_0x390f71){_0x2fec45=_0x390f71;_0xfce07a[_0x06f8('0x2f')]=_['keys'](db[_0x06f8('0x4f')][_0x06f8('0x49')]);_0xfce07a[_0x06f8('0x31')]=_['keys'](_0xb46c2d[_0x06f8('0x31')]);_0xfce07a[_0x06f8('0x33')]=_[_0x06f8('0x4a')](_0xfce07a['model'],_0xfce07a['query']);_0x381029[_0x06f8('0x34')]=_['intersection'](_0xfce07a[_0x06f8('0x2f')],qs[_0x06f8('0x35')](_0xb46c2d[_0x06f8('0x31')][_0x06f8('0x35')]));_0x381029[_0x06f8('0x34')]=_0x381029[_0x06f8('0x34')]['length']?_0x381029[_0x06f8('0x34')]:_0xfce07a['model'];_0x381029[_0x06f8('0x39')]=qs[_0x06f8('0x3a')](_0xb46c2d[_0x06f8('0x31')]['sort']);_0x381029[_0x06f8('0x3b')]=qs[_0x06f8('0x33')](_[_0x06f8('0x3c')](_0xb46c2d[_0x06f8('0x31')],_0xfce07a[_0x06f8('0x33')]));if(_0xb46c2d['query'][_0x06f8('0x50')]){_0x381029['where']=_[_0x06f8('0x3d')](_0x381029[_0x06f8('0x3b')],{'$or':_[_0x06f8('0x30')](_0x381029[_0x06f8('0x34')],function(_0x2178da){var _0x5d306a={};_0x5d306a[_0x2178da]={'$like':'%'+_0xb46c2d[_0x06f8('0x31')][_0x06f8('0x50')]+'%'};return _0x5d306a;})});}_0x381029=_[_0x06f8('0x3d')]({},_0x381029,_0xb46c2d[_0x06f8('0x40')]);return _0x2fec45[_0x06f8('0x4e')](_0x381029);}})[_0x06f8('0x27')](function(_0x14a761){if(_0x14a761){_0x5e0986=_0x14a761[_0x06f8('0x36')];if(!_0xb46c2d[_0x06f8('0x31')][_0x06f8('0x37')](_0x06f8('0x38'))){_0x381029[_0x06f8('0x21')]=qs[_0x06f8('0x21')](_0xb46c2d[_0x06f8('0x31')][_0x06f8('0x21')]);_0x381029['offset']=qs['offset'](_0xb46c2d[_0x06f8('0x31')][_0x06f8('0x1f')]);}return _0x2fec45[_0x06f8('0x4e')](_0x381029);}})[_0x06f8('0x27')](function(_0x422a58){if(_0x422a58){return _0x422a58?{'count':_0x5e0986,'rows':_0x422a58}:null;}})[_0x06f8('0x27')](respondWithResult(_0x34324a,null))['catch'](handleError(_0x34324a,null));};exports[_0x06f8('0x51')]=function(_0x35d7cb,_0x48367d,_0x4306ed){var _0x53d2f9={};var _0x541f2a={};var _0xf39731;var _0x3053de;return db[_0x06f8('0x41')][_0x06f8('0x52')]({'where':{'id':_0x35d7cb['params']['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0x48367d,null))[_0x06f8('0x27')](function(_0xc785eb){if(_0xc785eb){_0xf39731=_0xc785eb;_0x541f2a[_0x06f8('0x2f')]=_[_0x06f8('0x32')](db['DeskField']['rawAttributes']);_0x541f2a['query']=_[_0x06f8('0x32')](_0x35d7cb['query']);_0x541f2a[_0x06f8('0x33')]=_[_0x06f8('0x4a')](_0x541f2a['model'],_0x541f2a['query']);_0x53d2f9[_0x06f8('0x34')]=_['intersection'](_0x541f2a[_0x06f8('0x2f')],qs[_0x06f8('0x35')](_0x35d7cb[_0x06f8('0x31')][_0x06f8('0x35')]));_0x53d2f9['attributes']=_0x53d2f9[_0x06f8('0x34')][_0x06f8('0x36')]?_0x53d2f9[_0x06f8('0x34')]:_0x541f2a[_0x06f8('0x2f')];_0x53d2f9['order']=qs[_0x06f8('0x3a')](_0x35d7cb['query'][_0x06f8('0x3a')]);_0x53d2f9['where']=qs['filters'](_[_0x06f8('0x3c')](_0x35d7cb['query'],_0x541f2a['filters']));if(_0x35d7cb['query']['filter']){_0x53d2f9[_0x06f8('0x3b')]=_[_0x06f8('0x3d')](_0x53d2f9[_0x06f8('0x3b')],{'$or':_[_0x06f8('0x30')](_0x53d2f9[_0x06f8('0x34')],function(_0x1683de){var _0x5cbc37={};_0x5cbc37[_0x1683de]={'$like':'%'+_0x35d7cb[_0x06f8('0x31')][_0x06f8('0x50')]+'%'};return _0x5cbc37;})});}_0x53d2f9=_['merge']({},_0x53d2f9,_0x35d7cb[_0x06f8('0x40')]);return _0xf39731[_0x06f8('0x51')](_0x53d2f9);}})[_0x06f8('0x27')](function(_0x336ac1){if(_0x336ac1){_0x3053de=_0x336ac1['length'];if(!_0x35d7cb[_0x06f8('0x31')][_0x06f8('0x37')](_0x06f8('0x38'))){_0x53d2f9['limit']=qs[_0x06f8('0x21')](_0x35d7cb[_0x06f8('0x31')][_0x06f8('0x21')]);_0x53d2f9[_0x06f8('0x1f')]=qs[_0x06f8('0x1f')](_0x35d7cb[_0x06f8('0x31')][_0x06f8('0x1f')]);}return _0xf39731[_0x06f8('0x51')](_0x53d2f9);}})[_0x06f8('0x27')](function(_0x2b54ed){if(_0x2b54ed){return _0x2b54ed?{'count':_0x3053de,'rows':_0x2b54ed}:null;}})[_0x06f8('0x27')](respondWithResult(_0x48367d,null))[_0x06f8('0x46')](handleError(_0x48367d,null));};exports[_0x06f8('0x53')]=function(_0x8cf243,_0x52c4d1,_0x3b6557){var _0x50de3b={};var _0x2c2499={};var _0xecb549;var _0x232c3d;return db[_0x06f8('0x41')][_0x06f8('0x52')]({'where':{'id':_0x8cf243[_0x06f8('0x48')]['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0x52c4d1,null))[_0x06f8('0x27')](function(_0x134417){if(_0x134417){_0xecb549=_0x134417;_0x2c2499[_0x06f8('0x2f')]=_[_0x06f8('0x32')](db['DeskField'][_0x06f8('0x49')]);_0x2c2499[_0x06f8('0x31')]=_[_0x06f8('0x32')](_0x8cf243[_0x06f8('0x31')]);_0x2c2499['filters']=_[_0x06f8('0x4a')](_0x2c2499['model'],_0x2c2499[_0x06f8('0x31')]);_0x50de3b[_0x06f8('0x34')]=_[_0x06f8('0x4a')](_0x2c2499['model'],qs[_0x06f8('0x35')](_0x8cf243[_0x06f8('0x31')][_0x06f8('0x35')]));_0x50de3b['attributes']=_0x50de3b['attributes']['length']?_0x50de3b[_0x06f8('0x34')]:_0x2c2499[_0x06f8('0x2f')];_0x50de3b[_0x06f8('0x39')]=qs['sort'](_0x8cf243[_0x06f8('0x31')]['sort']);_0x50de3b[_0x06f8('0x3b')]=qs[_0x06f8('0x33')](_[_0x06f8('0x3c')](_0x8cf243[_0x06f8('0x31')],_0x2c2499[_0x06f8('0x33')]));if(_0x8cf243[_0x06f8('0x31')][_0x06f8('0x50')]){_0x50de3b[_0x06f8('0x3b')]=_[_0x06f8('0x3d')](_0x50de3b[_0x06f8('0x3b')],{'$or':_[_0x06f8('0x30')](_0x50de3b[_0x06f8('0x34')],function(_0x1f65aa){var _0x3bd451={};_0x3bd451[_0x1f65aa]={'$like':'%'+_0x8cf243['query'][_0x06f8('0x50')]+'%'};return _0x3bd451;})});}_0x50de3b=_[_0x06f8('0x3d')]({},_0x50de3b,_0x8cf243[_0x06f8('0x40')]);return _0xecb549[_0x06f8('0x53')](_0x50de3b);}})['then'](function(_0x5eef2f){if(_0x5eef2f){_0x232c3d=_0x5eef2f[_0x06f8('0x36')];if(!_0x8cf243[_0x06f8('0x31')][_0x06f8('0x37')](_0x06f8('0x38'))){_0x50de3b[_0x06f8('0x21')]=qs[_0x06f8('0x21')](_0x8cf243['query'][_0x06f8('0x21')]);_0x50de3b[_0x06f8('0x1f')]=qs[_0x06f8('0x1f')](_0x8cf243[_0x06f8('0x31')][_0x06f8('0x1f')]);}return _0xecb549[_0x06f8('0x53')](_0x50de3b);}})[_0x06f8('0x27')](function(_0x3dba64){if(_0x3dba64){return _0x3dba64?{'count':_0x232c3d,'rows':_0x3dba64}:null;}})[_0x06f8('0x27')](respondWithResult(_0x52c4d1,null))[_0x06f8('0x46')](handleError(_0x52c4d1,null));};exports[_0x06f8('0x54')]=function(_0x308bc2,_0xd689f9,_0x203d35){var _0x14d7fc={};var _0xd303d2={};var _0x41ca26;var _0x26dde3;return db[_0x06f8('0x41')][_0x06f8('0x52')]({'where':{'id':_0x308bc2[_0x06f8('0x48')]['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0xd689f9,null))['then'](function(_0x58aa5f){if(_0x58aa5f){_0x41ca26=_0x58aa5f;_0xd303d2[_0x06f8('0x2f')]=_[_0x06f8('0x32')](db['Tag'][_0x06f8('0x49')]);_0xd303d2[_0x06f8('0x31')]=_[_0x06f8('0x32')](_0x308bc2[_0x06f8('0x31')]);_0xd303d2[_0x06f8('0x33')]=_[_0x06f8('0x4a')](_0xd303d2['model'],_0xd303d2['query']);_0x14d7fc['attributes']=_['intersection'](_0xd303d2['model'],qs[_0x06f8('0x35')](_0x308bc2['query'][_0x06f8('0x35')]));_0x14d7fc[_0x06f8('0x34')]=_0x14d7fc['attributes']['length']?_0x14d7fc[_0x06f8('0x34')]:_0xd303d2[_0x06f8('0x2f')];_0x14d7fc[_0x06f8('0x39')]=qs[_0x06f8('0x3a')](_0x308bc2[_0x06f8('0x31')]['sort']);_0x14d7fc[_0x06f8('0x3b')]=qs[_0x06f8('0x33')](_[_0x06f8('0x3c')](_0x308bc2['query'],_0xd303d2['filters']));if(_0x308bc2[_0x06f8('0x31')][_0x06f8('0x50')]){_0x14d7fc['where']=_[_0x06f8('0x3d')](_0x14d7fc[_0x06f8('0x3b')],{'$or':_[_0x06f8('0x30')](_0x14d7fc[_0x06f8('0x34')],function(_0x13c859){var _0x25fd46={};_0x25fd46[_0x13c859]={'$like':'%'+_0x308bc2[_0x06f8('0x31')][_0x06f8('0x50')]+'%'};return _0x25fd46;})});}_0x14d7fc=_[_0x06f8('0x3d')]({},_0x14d7fc,_0x308bc2[_0x06f8('0x40')]);return _0x41ca26[_0x06f8('0x54')](_0x14d7fc);}})[_0x06f8('0x27')](function(_0x3c7142){if(_0x3c7142){_0x26dde3=_0x3c7142[_0x06f8('0x36')];if(!_0x308bc2[_0x06f8('0x31')][_0x06f8('0x37')]('nolimit')){_0x14d7fc[_0x06f8('0x21')]=qs[_0x06f8('0x21')](_0x308bc2[_0x06f8('0x31')][_0x06f8('0x21')]);_0x14d7fc['offset']=qs[_0x06f8('0x1f')](_0x308bc2[_0x06f8('0x31')][_0x06f8('0x1f')]);}return _0x41ca26['getTags'](_0x14d7fc);}})[_0x06f8('0x27')](function(_0x2c5bb5){if(_0x2c5bb5){return _0x2c5bb5?{'count':_0x26dde3,'rows':_0x2c5bb5}:null;}})['then'](respondWithResult(_0xd689f9,null))[_0x06f8('0x46')](handleError(_0xd689f9,null));};exports[_0x06f8('0x55')]=function(_0x3f1388,_0xeefe04,_0x2aea7b){if(_0x3f1388[_0x06f8('0x4d')]['id']){delete _0x3f1388[_0x06f8('0x4d')]['id'];}return db[_0x06f8('0x41')][_0x06f8('0x52')]({'where':{'id':_0x3f1388['params']['id']}})[_0x06f8('0x27')](handleEntityNotFound(_0xeefe04,null))[_0x06f8('0x27')](function(_0x4fdbd8){if(_0x4fdbd8){return _0x4fdbd8['setTags'](_0x3f1388['body'][_0x06f8('0x56')]||[]);}return null;})[_0x06f8('0x27')](respondWithResult(_0xeefe04,null))[_0x06f8('0x46')](handleError(_0xeefe04,null));};
\ No newline at end of file
+var _0xdd55=['update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','DeskConfiguration','include','findAll','rows','show','keys','includeAll','find','catch','create','body','params','getFields','pick','nolimit','getSubjects','findOne','DeskField','getDescriptions','Tag','getTags','setTags','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','reject','save'];(function(_0x18e24c,_0x5d46d8){var _0x3b2c25=function(_0x5afb2e){while(--_0x5afb2e){_0x18e24c['push'](_0x18e24c['shift']());}};_0x3b2c25(++_0x5d46d8);}(_0xdd55,0x1e1));var _0x5dd5=function(_0x5535e5,_0x234954){_0x5535e5=_0x5535e5-0x0;var _0x5e2d52=_0xdd55[_0x5535e5];return _0x5e2d52;};'use strict';var emlformat=require(_0x5dd5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5dd5('0x1'));var rp=require(_0x5dd5('0x2'));var moment=require(_0x5dd5('0x3'));var BPromise=require(_0x5dd5('0x4'));var Mustache=require('mustache');var util=require(_0x5dd5('0x5'));var path=require(_0x5dd5('0x6'));var sox=require(_0x5dd5('0x7'));var csv=require('to-csv');var ejs=require(_0x5dd5('0x8'));var fs=require('fs');var fs_extra=require(_0x5dd5('0x9'));var _=require('lodash');var squel=require(_0x5dd5('0xa'));var crypto=require(_0x5dd5('0xb'));var jsforce=require(_0x5dd5('0xc'));var deskjs=require(_0x5dd5('0xd'));var toCsv=require(_0x5dd5('0xe'));var querystring=require(_0x5dd5('0xf'));var Papa=require(_0x5dd5('0x10'));var Redis=require('ioredis');var authService=require(_0x5dd5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5dd5('0x12'));var hardwareService=require(_0x5dd5('0x13'));var logger=require(_0x5dd5('0x14'))(_0x5dd5('0x15'));var utils=require(_0x5dd5('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5dd5('0x17'));var db=require(_0x5dd5('0x18'))['db'];function respondWithStatusCode(_0x3dd8cb,_0x7a2783){_0x7a2783=_0x7a2783||0xcc;return function(_0x1579fd){if(_0x1579fd){return _0x3dd8cb[_0x5dd5('0x19')](_0x7a2783);}return _0x3dd8cb['status'](_0x7a2783)['end']();};}function respondWithResult(_0x56c45f,_0x48c3e0){_0x48c3e0=_0x48c3e0||0xc8;return function(_0x32a2ad){if(_0x32a2ad){return _0x56c45f[_0x5dd5('0x1a')](_0x48c3e0)[_0x5dd5('0x1b')](_0x32a2ad);}};}function respondWithFilteredResult(_0x39eff5,_0x38ca30){return function(_0x19c0f6){if(_0x19c0f6){var _0x4abee5=typeof _0x38ca30[_0x5dd5('0x1c')]===_0x5dd5('0x1d')&&typeof _0x38ca30['limit']===_0x5dd5('0x1d');var _0x285783=_0x19c0f6['count'];var _0x30d2f8=_0x4abee5?0x0:_0x38ca30[_0x5dd5('0x1c')];var _0x2555f4=_0x4abee5?_0x19c0f6[_0x5dd5('0x1e')]:_0x38ca30['offset']+_0x38ca30[_0x5dd5('0x1f')];var _0x28de3f;if(_0x2555f4>=_0x285783){_0x2555f4=_0x285783;_0x28de3f=0xc8;}else{_0x28de3f=0xce;}_0x39eff5['status'](_0x28de3f);return _0x39eff5['set'](_0x5dd5('0x20'),_0x30d2f8+'-'+_0x2555f4+'/'+_0x285783)[_0x5dd5('0x1b')](_0x19c0f6);}return null;};}function patchUpdates(_0x1b2b03){return function(_0x5792e5){try{jsonpatch['apply'](_0x5792e5,_0x1b2b03,!![]);}catch(_0x5476f2){return BPromise[_0x5dd5('0x21')](_0x5476f2);}return _0x5792e5[_0x5dd5('0x22')]();};}function saveUpdates(_0x5a697e,_0x291c88){return function(_0x42ea94){if(_0x42ea94){return _0x42ea94[_0x5dd5('0x23')](_0x5a697e)[_0x5dd5('0x24')](function(_0x3f7179){return _0x3f7179;});}return null;};}function removeEntity(_0x4cc98c,_0x2f3279){return function(_0x35163c){if(_0x35163c){return _0x35163c[_0x5dd5('0x25')]()['then'](function(){_0x4cc98c[_0x5dd5('0x1a')](0xcc)[_0x5dd5('0x26')]();});}};}function handleEntityNotFound(_0x9e0188,_0x34b37e){return function(_0x4eac69){if(!_0x4eac69){_0x9e0188[_0x5dd5('0x19')](0x194);}return _0x4eac69;};}function handleError(_0x322baf,_0x502d40){_0x502d40=_0x502d40||0x1f4;return function(_0xa6c1a4){logger[_0x5dd5('0x27')](_0xa6c1a4[_0x5dd5('0x28')]);if(_0xa6c1a4[_0x5dd5('0x29')]){delete _0xa6c1a4[_0x5dd5('0x29')];}_0x322baf[_0x5dd5('0x1a')](_0x502d40)[_0x5dd5('0x2a')](_0xa6c1a4);};}exports[_0x5dd5('0x2b')]=function(_0x23c01c,_0x12a7af){var _0x32b4e0={},_0x11a03c={},_0x5bad4a={'count':0x0,'rows':[]};var _0x606abd=_[_0x5dd5('0x2c')](db['DeskConfiguration'][_0x5dd5('0x2d')],function(_0x5978fe){return{'name':_0x5978fe[_0x5dd5('0x2e')],'type':_0x5978fe[_0x5dd5('0x2f')][_0x5dd5('0x30')]};});_0x11a03c[_0x5dd5('0x31')]=_[_0x5dd5('0x2c')](_0x606abd,'name');_0x11a03c[_0x5dd5('0x32')]=_['keys'](_0x23c01c[_0x5dd5('0x32')]);_0x11a03c[_0x5dd5('0x33')]=_['intersection'](_0x11a03c[_0x5dd5('0x31')],_0x11a03c['query']);_0x32b4e0[_0x5dd5('0x34')]=_[_0x5dd5('0x35')](_0x11a03c['model'],qs[_0x5dd5('0x36')](_0x23c01c[_0x5dd5('0x32')]['fields']));_0x32b4e0[_0x5dd5('0x34')]=_0x32b4e0['attributes'][_0x5dd5('0x37')]?_0x32b4e0[_0x5dd5('0x34')]:_0x11a03c[_0x5dd5('0x31')];if(!_0x23c01c['query'][_0x5dd5('0x38')]('nolimit')){_0x32b4e0[_0x5dd5('0x1f')]=qs[_0x5dd5('0x1f')](_0x23c01c[_0x5dd5('0x32')][_0x5dd5('0x1f')]);_0x32b4e0[_0x5dd5('0x1c')]=qs[_0x5dd5('0x1c')](_0x23c01c[_0x5dd5('0x32')][_0x5dd5('0x1c')]);}_0x32b4e0[_0x5dd5('0x39')]=qs[_0x5dd5('0x3a')](_0x23c01c[_0x5dd5('0x32')][_0x5dd5('0x3a')]);_0x32b4e0[_0x5dd5('0x3b')]=qs[_0x5dd5('0x33')](_['pick'](_0x23c01c[_0x5dd5('0x32')],_0x11a03c[_0x5dd5('0x33')]),_0x606abd);if(_0x23c01c[_0x5dd5('0x32')]['filter']){_0x32b4e0[_0x5dd5('0x3b')]=_[_0x5dd5('0x3c')](_0x32b4e0[_0x5dd5('0x3b')],{'$or':_['map'](_0x606abd,function(_0x5f0007){if(_0x5f0007[_0x5dd5('0x2f')]!==_0x5dd5('0x3d')){var _0x1bf9ce={};_0x1bf9ce[_0x5f0007[_0x5dd5('0x29')]]={'$like':'%'+_0x23c01c[_0x5dd5('0x32')][_0x5dd5('0x3e')]+'%'};return _0x1bf9ce;}})});}_0x32b4e0=_[_0x5dd5('0x3c')]({},_0x32b4e0,_0x23c01c[_0x5dd5('0x3f')]);var _0x474c6a={'where':_0x32b4e0[_0x5dd5('0x3b')]};return db[_0x5dd5('0x40')]['count'](_0x474c6a)['then'](function(_0x5f2472){_0x5bad4a['count']=_0x5f2472;if(_0x23c01c[_0x5dd5('0x32')]['includeAll']){_0x32b4e0[_0x5dd5('0x41')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x5dd5('0x42')](_0x32b4e0);})[_0x5dd5('0x24')](function(_0x4954aa){_0x5bad4a[_0x5dd5('0x43')]=_0x4954aa;return _0x5bad4a;})[_0x5dd5('0x24')](respondWithFilteredResult(_0x12a7af,_0x32b4e0))['catch'](handleError(_0x12a7af,null));};exports[_0x5dd5('0x44')]=function(_0x3eced6,_0x429210){var _0x394d49={'raw':![],'where':{'id':_0x3eced6['params']['id']}},_0x445eb0={};_0x445eb0[_0x5dd5('0x31')]=_[_0x5dd5('0x45')](db[_0x5dd5('0x40')][_0x5dd5('0x2d')]);_0x445eb0[_0x5dd5('0x32')]=_[_0x5dd5('0x45')](_0x3eced6[_0x5dd5('0x32')]);_0x445eb0[_0x5dd5('0x33')]=_[_0x5dd5('0x35')](_0x445eb0[_0x5dd5('0x31')],_0x445eb0[_0x5dd5('0x32')]);_0x394d49[_0x5dd5('0x34')]=_[_0x5dd5('0x35')](_0x445eb0[_0x5dd5('0x31')],qs[_0x5dd5('0x36')](_0x3eced6['query'][_0x5dd5('0x36')]));_0x394d49[_0x5dd5('0x34')]=_0x394d49[_0x5dd5('0x34')][_0x5dd5('0x37')]?_0x394d49[_0x5dd5('0x34')]:_0x445eb0['model'];if(_0x3eced6[_0x5dd5('0x32')][_0x5dd5('0x46')]){_0x394d49[_0x5dd5('0x41')]=[{'all':!![]}];}_0x394d49=_[_0x5dd5('0x3c')]({},_0x394d49,_0x3eced6[_0x5dd5('0x3f')]);return db[_0x5dd5('0x40')][_0x5dd5('0x47')](_0x394d49)[_0x5dd5('0x24')](handleEntityNotFound(_0x429210,null))[_0x5dd5('0x24')](respondWithResult(_0x429210,null))[_0x5dd5('0x48')](handleError(_0x429210,null));};exports[_0x5dd5('0x49')]=function(_0x292c6d,_0x1557be){return db[_0x5dd5('0x40')][_0x5dd5('0x49')](_0x292c6d['body'],{})[_0x5dd5('0x24')](respondWithResult(_0x1557be,0xc9))[_0x5dd5('0x48')](handleError(_0x1557be,null));};exports[_0x5dd5('0x23')]=function(_0x1f943c,_0x3b2c8d){if(_0x1f943c[_0x5dd5('0x4a')]['id']){delete _0x1f943c['body']['id'];}return db['DeskConfiguration']['find']({'where':{'id':_0x1f943c[_0x5dd5('0x4b')]['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x3b2c8d,null))[_0x5dd5('0x24')](saveUpdates(_0x1f943c['body'],null))[_0x5dd5('0x24')](respondWithResult(_0x3b2c8d,null))[_0x5dd5('0x48')](handleError(_0x3b2c8d,null));};exports[_0x5dd5('0x25')]=function(_0x9c12a4,_0x3dabb8){return db['DeskConfiguration'][_0x5dd5('0x47')]({'where':{'id':_0x9c12a4['params']['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x3dabb8,null))['then'](removeEntity(_0x3dabb8,null))[_0x5dd5('0x48')](handleError(_0x3dabb8,null));};exports[_0x5dd5('0x4c')]=function(_0x4440b8,_0x4a298f,_0x209640){var _0x15a380={};var _0x157311={};var _0x340628;var _0x2269a6;return db['DeskConfiguration']['findOne']({'where':{'id':_0x4440b8[_0x5dd5('0x4b')]['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x4a298f,null))[_0x5dd5('0x24')](function(_0x554682){if(_0x554682){_0x340628=_0x554682;_0x157311['model']=_[_0x5dd5('0x45')](db['DeskField'][_0x5dd5('0x2d')]);_0x157311[_0x5dd5('0x32')]=_[_0x5dd5('0x45')](_0x4440b8[_0x5dd5('0x32')]);_0x157311['filters']=_[_0x5dd5('0x35')](_0x157311[_0x5dd5('0x31')],_0x157311['query']);_0x15a380[_0x5dd5('0x34')]=_['intersection'](_0x157311[_0x5dd5('0x31')],qs[_0x5dd5('0x36')](_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x36')]));_0x15a380['attributes']=_0x15a380[_0x5dd5('0x34')]['length']?_0x15a380[_0x5dd5('0x34')]:_0x157311[_0x5dd5('0x31')];_0x15a380[_0x5dd5('0x39')]=qs[_0x5dd5('0x3a')](_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x3a')]);_0x15a380['where']=qs[_0x5dd5('0x33')](_[_0x5dd5('0x4d')](_0x4440b8[_0x5dd5('0x32')],_0x157311[_0x5dd5('0x33')]));if(_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x3e')]){_0x15a380[_0x5dd5('0x3b')]=_[_0x5dd5('0x3c')](_0x15a380[_0x5dd5('0x3b')],{'$or':_['map'](_0x15a380[_0x5dd5('0x34')],function(_0xb332e8){var _0x36d908={};_0x36d908[_0xb332e8]={'$like':'%'+_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x3e')]+'%'};return _0x36d908;})});}_0x15a380=_[_0x5dd5('0x3c')]({},_0x15a380,_0x4440b8['options']);return _0x340628[_0x5dd5('0x4c')](_0x15a380);}})['then'](function(_0x2270fa){if(_0x2270fa){_0x2269a6=_0x2270fa[_0x5dd5('0x37')];if(!_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x38')](_0x5dd5('0x4e'))){_0x15a380[_0x5dd5('0x1f')]=qs['limit'](_0x4440b8[_0x5dd5('0x32')]['limit']);_0x15a380[_0x5dd5('0x1c')]=qs[_0x5dd5('0x1c')](_0x4440b8[_0x5dd5('0x32')][_0x5dd5('0x1c')]);}return _0x340628[_0x5dd5('0x4c')](_0x15a380);}})[_0x5dd5('0x24')](function(_0xe6e3fd){if(_0xe6e3fd){return _0xe6e3fd?{'count':_0x2269a6,'rows':_0xe6e3fd}:null;}})[_0x5dd5('0x24')](respondWithResult(_0x4a298f,null))[_0x5dd5('0x48')](handleError(_0x4a298f,null));};exports[_0x5dd5('0x4f')]=function(_0x2ae720,_0x5e45f0,_0x22b3b8){var _0x47b98a={};var _0x35172c={};var _0x48a120;var _0x1bf840;return db[_0x5dd5('0x40')][_0x5dd5('0x50')]({'where':{'id':_0x2ae720[_0x5dd5('0x4b')]['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x5e45f0,null))[_0x5dd5('0x24')](function(_0x1f8de8){if(_0x1f8de8){_0x48a120=_0x1f8de8;_0x35172c['model']=_[_0x5dd5('0x45')](db[_0x5dd5('0x51')][_0x5dd5('0x2d')]);_0x35172c[_0x5dd5('0x32')]=_[_0x5dd5('0x45')](_0x2ae720[_0x5dd5('0x32')]);_0x35172c[_0x5dd5('0x33')]=_['intersection'](_0x35172c[_0x5dd5('0x31')],_0x35172c[_0x5dd5('0x32')]);_0x47b98a[_0x5dd5('0x34')]=_['intersection'](_0x35172c[_0x5dd5('0x31')],qs[_0x5dd5('0x36')](_0x2ae720['query'][_0x5dd5('0x36')]));_0x47b98a['attributes']=_0x47b98a[_0x5dd5('0x34')][_0x5dd5('0x37')]?_0x47b98a[_0x5dd5('0x34')]:_0x35172c[_0x5dd5('0x31')];_0x47b98a[_0x5dd5('0x39')]=qs[_0x5dd5('0x3a')](_0x2ae720[_0x5dd5('0x32')][_0x5dd5('0x3a')]);_0x47b98a[_0x5dd5('0x3b')]=qs[_0x5dd5('0x33')](_['pick'](_0x2ae720['query'],_0x35172c['filters']));if(_0x2ae720[_0x5dd5('0x32')]['filter']){_0x47b98a[_0x5dd5('0x3b')]=_['merge'](_0x47b98a[_0x5dd5('0x3b')],{'$or':_[_0x5dd5('0x2c')](_0x47b98a[_0x5dd5('0x34')],function(_0x416583){var _0xd2e2b2={};_0xd2e2b2[_0x416583]={'$like':'%'+_0x2ae720[_0x5dd5('0x32')][_0x5dd5('0x3e')]+'%'};return _0xd2e2b2;})});}_0x47b98a=_[_0x5dd5('0x3c')]({},_0x47b98a,_0x2ae720[_0x5dd5('0x3f')]);return _0x48a120[_0x5dd5('0x4f')](_0x47b98a);}})[_0x5dd5('0x24')](function(_0xc3358d){if(_0xc3358d){_0x1bf840=_0xc3358d[_0x5dd5('0x37')];if(!_0x2ae720[_0x5dd5('0x32')][_0x5dd5('0x38')]('nolimit')){_0x47b98a['limit']=qs[_0x5dd5('0x1f')](_0x2ae720['query'][_0x5dd5('0x1f')]);_0x47b98a[_0x5dd5('0x1c')]=qs[_0x5dd5('0x1c')](_0x2ae720[_0x5dd5('0x32')][_0x5dd5('0x1c')]);}return _0x48a120[_0x5dd5('0x4f')](_0x47b98a);}})[_0x5dd5('0x24')](function(_0x5f1ceb){if(_0x5f1ceb){return _0x5f1ceb?{'count':_0x1bf840,'rows':_0x5f1ceb}:null;}})['then'](respondWithResult(_0x5e45f0,null))['catch'](handleError(_0x5e45f0,null));};exports['getDescriptions']=function(_0x2da8cf,_0x1cf55b,_0xdce482){var _0x38e2fb={};var _0x1e0754={};var _0x1684b5;var _0x24c12c;return db['DeskConfiguration'][_0x5dd5('0x50')]({'where':{'id':_0x2da8cf['params']['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x1cf55b,null))[_0x5dd5('0x24')](function(_0x3651b1){if(_0x3651b1){_0x1684b5=_0x3651b1;_0x1e0754[_0x5dd5('0x31')]=_[_0x5dd5('0x45')](db[_0x5dd5('0x51')]['rawAttributes']);_0x1e0754[_0x5dd5('0x32')]=_[_0x5dd5('0x45')](_0x2da8cf[_0x5dd5('0x32')]);_0x1e0754[_0x5dd5('0x33')]=_['intersection'](_0x1e0754[_0x5dd5('0x31')],_0x1e0754['query']);_0x38e2fb[_0x5dd5('0x34')]=_['intersection'](_0x1e0754[_0x5dd5('0x31')],qs['fields'](_0x2da8cf[_0x5dd5('0x32')][_0x5dd5('0x36')]));_0x38e2fb[_0x5dd5('0x34')]=_0x38e2fb['attributes'][_0x5dd5('0x37')]?_0x38e2fb['attributes']:_0x1e0754[_0x5dd5('0x31')];_0x38e2fb[_0x5dd5('0x39')]=qs['sort'](_0x2da8cf[_0x5dd5('0x32')]['sort']);_0x38e2fb[_0x5dd5('0x3b')]=qs[_0x5dd5('0x33')](_[_0x5dd5('0x4d')](_0x2da8cf[_0x5dd5('0x32')],_0x1e0754[_0x5dd5('0x33')]));if(_0x2da8cf['query'][_0x5dd5('0x3e')]){_0x38e2fb[_0x5dd5('0x3b')]=_['merge'](_0x38e2fb[_0x5dd5('0x3b')],{'$or':_[_0x5dd5('0x2c')](_0x38e2fb[_0x5dd5('0x34')],function(_0x730d00){var _0xcdae3d={};_0xcdae3d[_0x730d00]={'$like':'%'+_0x2da8cf[_0x5dd5('0x32')][_0x5dd5('0x3e')]+'%'};return _0xcdae3d;})});}_0x38e2fb=_[_0x5dd5('0x3c')]({},_0x38e2fb,_0x2da8cf[_0x5dd5('0x3f')]);return _0x1684b5[_0x5dd5('0x52')](_0x38e2fb);}})[_0x5dd5('0x24')](function(_0x3cf3c8){if(_0x3cf3c8){_0x24c12c=_0x3cf3c8[_0x5dd5('0x37')];if(!_0x2da8cf['query'][_0x5dd5('0x38')](_0x5dd5('0x4e'))){_0x38e2fb[_0x5dd5('0x1f')]=qs[_0x5dd5('0x1f')](_0x2da8cf[_0x5dd5('0x32')][_0x5dd5('0x1f')]);_0x38e2fb[_0x5dd5('0x1c')]=qs[_0x5dd5('0x1c')](_0x2da8cf[_0x5dd5('0x32')][_0x5dd5('0x1c')]);}return _0x1684b5[_0x5dd5('0x52')](_0x38e2fb);}})[_0x5dd5('0x24')](function(_0xcc8ce6){if(_0xcc8ce6){return _0xcc8ce6?{'count':_0x24c12c,'rows':_0xcc8ce6}:null;}})['then'](respondWithResult(_0x1cf55b,null))[_0x5dd5('0x48')](handleError(_0x1cf55b,null));};exports['getTags']=function(_0x2c38ab,_0x42ea4f,_0x224d26){var _0x4a0539={};var _0xf862f2={};var _0x9a362d;var _0x44e743;return db[_0x5dd5('0x40')][_0x5dd5('0x50')]({'where':{'id':_0x2c38ab['params']['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x42ea4f,null))[_0x5dd5('0x24')](function(_0x400d20){if(_0x400d20){_0x9a362d=_0x400d20;_0xf862f2['model']=_[_0x5dd5('0x45')](db[_0x5dd5('0x53')]['rawAttributes']);_0xf862f2[_0x5dd5('0x32')]=_['keys'](_0x2c38ab['query']);_0xf862f2['filters']=_['intersection'](_0xf862f2[_0x5dd5('0x31')],_0xf862f2[_0x5dd5('0x32')]);_0x4a0539['attributes']=_['intersection'](_0xf862f2[_0x5dd5('0x31')],qs[_0x5dd5('0x36')](_0x2c38ab[_0x5dd5('0x32')][_0x5dd5('0x36')]));_0x4a0539[_0x5dd5('0x34')]=_0x4a0539[_0x5dd5('0x34')][_0x5dd5('0x37')]?_0x4a0539[_0x5dd5('0x34')]:_0xf862f2[_0x5dd5('0x31')];_0x4a0539[_0x5dd5('0x39')]=qs['sort'](_0x2c38ab[_0x5dd5('0x32')][_0x5dd5('0x3a')]);_0x4a0539[_0x5dd5('0x3b')]=qs['filters'](_['pick'](_0x2c38ab[_0x5dd5('0x32')],_0xf862f2[_0x5dd5('0x33')]));if(_0x2c38ab[_0x5dd5('0x32')][_0x5dd5('0x3e')]){_0x4a0539['where']=_[_0x5dd5('0x3c')](_0x4a0539[_0x5dd5('0x3b')],{'$or':_['map'](_0x4a0539[_0x5dd5('0x34')],function(_0x47cb92){var _0xe9e47c={};_0xe9e47c[_0x47cb92]={'$like':'%'+_0x2c38ab['query']['filter']+'%'};return _0xe9e47c;})});}_0x4a0539=_['merge']({},_0x4a0539,_0x2c38ab[_0x5dd5('0x3f')]);return _0x9a362d[_0x5dd5('0x54')](_0x4a0539);}})['then'](function(_0x17e35d){if(_0x17e35d){_0x44e743=_0x17e35d[_0x5dd5('0x37')];if(!_0x2c38ab[_0x5dd5('0x32')][_0x5dd5('0x38')](_0x5dd5('0x4e'))){_0x4a0539['limit']=qs[_0x5dd5('0x1f')](_0x2c38ab[_0x5dd5('0x32')]['limit']);_0x4a0539[_0x5dd5('0x1c')]=qs[_0x5dd5('0x1c')](_0x2c38ab[_0x5dd5('0x32')][_0x5dd5('0x1c')]);}return _0x9a362d['getTags'](_0x4a0539);}})[_0x5dd5('0x24')](function(_0x3fe98a){if(_0x3fe98a){return _0x3fe98a?{'count':_0x44e743,'rows':_0x3fe98a}:null;}})[_0x5dd5('0x24')](respondWithResult(_0x42ea4f,null))[_0x5dd5('0x48')](handleError(_0x42ea4f,null));};exports['setTags']=function(_0xaa6332,_0x1d90bc,_0x4143be){if(_0xaa6332[_0x5dd5('0x4a')]['id']){delete _0xaa6332['body']['id'];}return db['DeskConfiguration'][_0x5dd5('0x50')]({'where':{'id':_0xaa6332[_0x5dd5('0x4b')]['id']}})[_0x5dd5('0x24')](handleEntityNotFound(_0x1d90bc,null))['then'](function(_0x462680){if(_0x462680){return _0x462680[_0x5dd5('0x55')](_0xaa6332[_0x5dd5('0x4a')]['ids']||[]);}return null;})[_0x5dd5('0x24')](respondWithResult(_0x1d90bc,null))[_0x5dd5('0x48')](handleError(_0x1d90bc,null));};
\ No newline at end of file
index 2ab597d..1b6bbdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c64=['api','request-promise','path','rimraf','../../config/environment','exports','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger'];(function(_0xe7f74c,_0x36900b){var _0x221473=function(_0x35605b){while(--_0x35605b){_0xe7f74c['push'](_0xe7f74c['shift']());}};_0x221473(++_0x36900b);}(_0x1c64,0x1dd));var _0x41c6=function(_0x478e4e,_0x5176a1){_0x478e4e=_0x478e4e-0x0;var _0x403f7b=_0x1c64[_0x478e4e];return _0x403f7b;};'use strict';var _=require(_0x41c6('0x0'));var util=require(_0x41c6('0x1'));var logger=require(_0x41c6('0x2'))(_0x41c6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x41c6('0x4'));var fs=require('fs');var path=require(_0x41c6('0x5'));var rimraf=require(_0x41c6('0x6'));var config=require(_0x41c6('0x7'));var attributes=require('./intDeskConfiguration.attributes');module[_0x41c6('0x8')]=function(_0x58b7e5,_0x39f4b7){return _0x58b7e5[_0x41c6('0x9')](_0x41c6('0xa'),attributes,{'tableName':_0x41c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d94=['path','rimraf','../../config/environment','./intDeskConfiguration.attributes','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x3ea685,_0xad71bd){var _0x485332=function(_0x388b13){while(--_0x388b13){_0x3ea685['push'](_0x3ea685['shift']());}};_0x485332(++_0xad71bd);}(_0x6d94,0x14b));var _0x46d9=function(_0x4e0886,_0x25844c){_0x4e0886=_0x4e0886-0x0;var _0x13de2=_0x6d94[_0x4e0886];return _0x13de2;};'use strict';var _=require(_0x46d9('0x0'));var util=require(_0x46d9('0x1'));var logger=require(_0x46d9('0x2'))(_0x46d9('0x3'));var moment=require(_0x46d9('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x46d9('0x5'));var rimraf=require(_0x46d9('0x6'));var config=require(_0x46d9('0x7'));var attributes=require(_0x46d9('0x8'));module['exports']=function(_0x13e730,_0x574d34){return _0x13e730[_0x46d9('0x9')](_0x46d9('0xa'),attributes,{'tableName':_0x46d9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1621147..e198708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfed7=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x1257e6,_0x592639){var _0x2cd6b5=function(_0x4a7963){while(--_0x4a7963){_0x1257e6['push'](_0x1257e6['shift']());}};_0x2cd6b5(++_0x592639);}(_0xfed7,0x190));var _0x7fed=function(_0x47ad1a,_0x467d68){_0x47ad1a=_0x47ad1a-0x0;var _0x586211=_0xfed7[_0x47ad1a];return _0x586211;};'use strict';var _=require(_0x7fed('0x0'));var util=require(_0x7fed('0x1'));var moment=require(_0x7fed('0x2'));var BPromise=require(_0x7fed('0x3'));var rs=require(_0x7fed('0x4'));var fs=require('fs');var Redis=require(_0x7fed('0x5'));var db=require(_0x7fed('0x6'))['db'];var utils=require(_0x7fed('0x7'));var logger=require(_0x7fed('0x8'))(_0x7fed('0x9'));var config=require('../../config/environment');var jayson=require(_0x7fed('0xa'));var client=jayson[_0x7fed('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eeb9f,_0x42415f,_0x14fb65){return new BPromise(function(_0x1ebaad,_0x1a62bb){return client[_0x7fed('0xc')](_0x5eeb9f,_0x14fb65)['then'](function(_0x15a895){logger[_0x7fed('0xd')](_0x7fed('0xe'),_0x42415f,_0x7fed('0xf'));logger[_0x7fed('0x10')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x42415f,_0x7fed('0xf'),JSON[_0x7fed('0x11')](_0x15a895));if(_0x15a895[_0x7fed('0x12')]){if(_0x15a895['error']['code']===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);return _0x1a62bb(_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);}logger[_0x7fed('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);return _0x1ebaad(_0x15a895[_0x7fed('0x12')][_0x7fed('0x13')]);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x42415f,_0x7fed('0xf'));_0x1ebaad(_0x15a895[_0x7fed('0x14')]['message']);}})['catch'](function(_0x32a10b){logger[_0x7fed('0x12')](_0x7fed('0xe'),_0x42415f,_0x32a10b);_0x1a62bb(_0x32a10b);});});}
\ No newline at end of file
+var _0x65c9=['then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskConfiguration,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x6ca7f4,_0x51a5df){var _0x494fa6=function(_0x359532){while(--_0x359532){_0x6ca7f4['push'](_0x6ca7f4['shift']());}};_0x494fa6(++_0x51a5df);}(_0x65c9,0x182));var _0x965c=function(_0x4618ba,_0x5eab8b){_0x4618ba=_0x4618ba-0x0;var _0x15bf92=_0x65c9[_0x4618ba];return _0x15bf92;};'use strict';var _=require(_0x965c('0x0'));var util=require(_0x965c('0x1'));var moment=require('moment');var BPromise=require(_0x965c('0x2'));var rs=require(_0x965c('0x3'));var fs=require('fs');var Redis=require(_0x965c('0x4'));var db=require(_0x965c('0x5'))['db'];var utils=require(_0x965c('0x6'));var logger=require(_0x965c('0x7'))(_0x965c('0x8'));var config=require(_0x965c('0x9'));var jayson=require(_0x965c('0xa'));var client=jayson[_0x965c('0xb')][_0x965c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x849260,_0x5ec702,_0xd19e57){return new BPromise(function(_0x263652,_0x41d248){return client[_0x965c('0xd')](_0x849260,_0xd19e57)[_0x965c('0xe')](function(_0x26d859){logger[_0x965c('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x5ec702,_0x965c('0x10'));logger[_0x965c('0x11')](_0x965c('0x12'),_0x5ec702,_0x965c('0x10'),JSON[_0x965c('0x13')](_0x26d859));if(_0x26d859[_0x965c('0x14')]){if(_0x26d859[_0x965c('0x14')][_0x965c('0x15')]===0x1f4){logger[_0x965c('0x14')](_0x965c('0x16'),_0x5ec702,_0x26d859[_0x965c('0x14')][_0x965c('0x17')]);return _0x41d248(_0x26d859[_0x965c('0x14')][_0x965c('0x17')]);}logger['error'](_0x965c('0x16'),_0x5ec702,_0x26d859[_0x965c('0x14')][_0x965c('0x17')]);return _0x263652(_0x26d859['error'][_0x965c('0x17')]);}else{logger[_0x965c('0xf')](_0x965c('0x16'),_0x5ec702,'request\x20sent');_0x263652(_0x26d859[_0x965c('0x18')]['message']);}})['catch'](function(_0x542499){logger[_0x965c('0x14')](_0x965c('0x16'),_0x5ec702,_0x542499);_0x41d248(_0x542499);});});}
\ No newline at end of file
index 62201d4..63f338d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fa=['create','put','update','delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','get','/:id','show','post'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0x43fa,0x15c));var _0xa43f=function(_0x57474e,_0x4178b8){_0x57474e=_0x57474e-0x0;var _0xfaae8c=_0x43fa[_0x57474e];return _0xfaae8c;};'use strict';var multer=require(_0xa43f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa43f('0x1'));var express=require(_0xa43f('0x2'));var router=express['Router']();var fs_extra=require(_0xa43f('0x3'));var auth=require(_0xa43f('0x4'));var interaction=require(_0xa43f('0x5'));var config=require(_0xa43f('0x6'));var controller=require(_0xa43f('0x7'));router['get']('/',auth[_0xa43f('0x8')](),controller['index']);router[_0xa43f('0x9')](_0xa43f('0xa'),auth[_0xa43f('0x8')](),controller[_0xa43f('0xb')]);router[_0xa43f('0xc')]('/',auth['isAuthenticated'](),controller[_0xa43f('0xd')]);router[_0xa43f('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xa43f('0xf')]);router[_0xa43f('0x10')]('/:id',auth[_0xa43f('0x8')](),controller[_0xa43f('0x11')]);module[_0xa43f('0x12')]=router;
\ No newline at end of file
+var _0xb368=['get','isAuthenticated','/:id','show','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2ac9c4,_0x3cfc5f){var _0x393883=function(_0x2e49de){while(--_0x2e49de){_0x2ac9c4['push'](_0x2ac9c4['shift']());}};_0x393883(++_0x3cfc5f);}(_0xb368,0x68));var _0x8b36=function(_0x2bb6ea,_0x3a1a2d){_0x2bb6ea=_0x2bb6ea-0x0;var _0x4966be=_0xb368[_0x2bb6ea];return _0x4966be;};'use strict';var multer=require(_0x8b36('0x0'));var util=require(_0x8b36('0x1'));var path=require(_0x8b36('0x2'));var timeout=require(_0x8b36('0x3'));var express=require(_0x8b36('0x4'));var router=express[_0x8b36('0x5')]();var fs_extra=require(_0x8b36('0x6'));var auth=require(_0x8b36('0x7'));var interaction=require(_0x8b36('0x8'));var config=require(_0x8b36('0x9'));var controller=require('./intDeskField.controller');router[_0x8b36('0xa')]('/',auth[_0x8b36('0xb')](),controller['index']);router['get'](_0x8b36('0xc'),auth['isAuthenticated'](),controller[_0x8b36('0xd')]);router['post']('/',auth[_0x8b36('0xb')](),controller[_0x8b36('0xe')]);router[_0x8b36('0xf')]('/:id',auth[_0x8b36('0xb')](),controller[_0x8b36('0x10')]);router['delete']('/:id',auth[_0x8b36('0xb')](),controller[_0x8b36('0x11')]);module[_0x8b36('0x12')]=router;
\ No newline at end of file
index 3573c10..4d106f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string','variable'];(function(_0x4cde6b,_0x358ae2){var _0x179ed6=function(_0x168b7f){while(--_0x168b7f){_0x4cde6b['push'](_0x4cde6b['shift']());}};_0x179ed6(++_0x358ae2);}(_0xb9a7,0x100));var _0x7b9a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xb9a7[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require(_0x7b9a('0x0'));module[_0x7b9a('0x1')]={'type':{'type':Sequelize[_0x7b9a('0x2')](_0x7b9a('0x3'),_0x7b9a('0x4'),_0x7b9a('0x5'),_0x7b9a('0x6'),_0x7b9a('0x7')),'defaultValue':_0x7b9a('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7b9a('0x8')]},'keyType':{'type':Sequelize[_0x7b9a('0x2')](_0x7b9a('0x3'),_0x7b9a('0x4'),_0x7b9a('0x5'))},'keyContent':{'type':Sequelize[_0x7b9a('0x8')]},'idField':{'type':Sequelize[_0x7b9a('0x8')]},'nameField':{'type':Sequelize[_0x7b9a('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7b9a('0x8')]}};
\ No newline at end of file
+var _0x4a00=['sequelize','ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0x593d89,_0x45145f){var _0x4aa403=function(_0x21f674){while(--_0x21f674){_0x593d89['push'](_0x593d89['shift']());}};_0x4aa403(++_0x45145f);}(_0x4a00,0xd8));var _0x04a0=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4a00[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x04a0('0x0'));module['exports']={'type':{'type':Sequelize[_0x04a0('0x1')](_0x04a0('0x2'),_0x04a0('0x3'),_0x04a0('0x4'),'keyValue',_0x04a0('0x5')),'defaultValue':_0x04a0('0x2')},'content':{'type':Sequelize[_0x04a0('0x6')]},'key':{'type':Sequelize[_0x04a0('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x04a0('0x2'),_0x04a0('0x3'),_0x04a0('0x4'))},'keyContent':{'type':Sequelize[_0x04a0('0x6')]},'idField':{'type':Sequelize[_0x04a0('0x6')]},'nameField':{'type':Sequelize[_0x04a0('0x6')]},'customField':{'type':Sequelize[_0x04a0('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x04a0('0x6')]}};
\ No newline at end of file
index 37a49dc..104782c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc949=['include','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','DeskField','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','findAll','catch','rawAttributes','intersection'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc949,0x181));var _0x9c94=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0xc949[_0xd1d19a];return _0x52a79d;};'use strict';var emlformat=require(_0x9c94('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9c94('0x1'));var jsonpatch=require(_0x9c94('0x2'));var rp=require(_0x9c94('0x3'));var moment=require(_0x9c94('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9c94('0x5'));var util=require(_0x9c94('0x6'));var path=require('path');var sox=require(_0x9c94('0x7'));var csv=require(_0x9c94('0x8'));var ejs=require(_0x9c94('0x9'));var fs=require('fs');var fs_extra=require(_0x9c94('0xa'));var _=require('lodash');var squel=require(_0x9c94('0xb'));var crypto=require(_0x9c94('0xc'));var jsforce=require(_0x9c94('0xd'));var deskjs=require(_0x9c94('0xe'));var toCsv=require(_0x9c94('0x8'));var querystring=require(_0x9c94('0xf'));var Papa=require(_0x9c94('0x10'));var Redis=require(_0x9c94('0x11'));var authService=require(_0x9c94('0x12'));var qs=require(_0x9c94('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9c94('0x14'));var logger=require(_0x9c94('0x15'))(_0x9c94('0x16'));var utils=require(_0x9c94('0x17'));var config=require(_0x9c94('0x18'));var licenseUtil=require(_0x9c94('0x19'));var db=require(_0x9c94('0x1a'))['db'];function respondWithStatusCode(_0x423adb,_0x30f64e){_0x30f64e=_0x30f64e||0xcc;return function(_0x1e326f){if(_0x1e326f){return _0x423adb[_0x9c94('0x1b')](_0x30f64e);}return _0x423adb[_0x9c94('0x1c')](_0x30f64e)[_0x9c94('0x1d')]();};}function respondWithResult(_0x15c51c,_0x54d956){_0x54d956=_0x54d956||0xc8;return function(_0x9789bc){if(_0x9789bc){return _0x15c51c['status'](_0x54d956)[_0x9c94('0x1e')](_0x9789bc);}};}function respondWithFilteredResult(_0x26e629,_0x4f0013){return function(_0xe52641){if(_0xe52641){var _0x4d6308=typeof _0x4f0013['offset']===_0x9c94('0x1f')&&typeof _0x4f0013['limit']===_0x9c94('0x1f');var _0x33bd19=_0xe52641['count'];var _0x201e04=_0x4d6308?0x0:_0x4f0013[_0x9c94('0x20')];var _0x412804=_0x4d6308?_0xe52641[_0x9c94('0x21')]:_0x4f0013[_0x9c94('0x20')]+_0x4f0013[_0x9c94('0x22')];var _0x3e361c;if(_0x412804>=_0x33bd19){_0x412804=_0x33bd19;_0x3e361c=0xc8;}else{_0x3e361c=0xce;}_0x26e629['status'](_0x3e361c);return _0x26e629[_0x9c94('0x23')](_0x9c94('0x24'),_0x201e04+'-'+_0x412804+'/'+_0x33bd19)['json'](_0xe52641);}return null;};}function patchUpdates(_0x141801){return function(_0x845304){try{jsonpatch[_0x9c94('0x25')](_0x845304,_0x141801,!![]);}catch(_0x326b38){return BPromise[_0x9c94('0x26')](_0x326b38);}return _0x845304[_0x9c94('0x27')]();};}function saveUpdates(_0xadab16,_0x23cdf5){return function(_0x8fe4fb){if(_0x8fe4fb){return _0x8fe4fb[_0x9c94('0x28')](_0xadab16)[_0x9c94('0x29')](function(_0xe9280a){return _0xe9280a;});}return null;};}function removeEntity(_0x44d732,_0x8c0b7f){return function(_0x5b1020){if(_0x5b1020){return _0x5b1020[_0x9c94('0x2a')]()[_0x9c94('0x29')](function(){_0x44d732['status'](0xcc)[_0x9c94('0x1d')]();});}};}function handleEntityNotFound(_0x2c3d25,_0x4795bb){return function(_0x335184){if(!_0x335184){_0x2c3d25[_0x9c94('0x1b')](0x194);}return _0x335184;};}function handleError(_0x4dd38e,_0xc18230){_0xc18230=_0xc18230||0x1f4;return function(_0x45cf4d){logger['error'](_0x45cf4d[_0x9c94('0x2b')]);if(_0x45cf4d['name']){delete _0x45cf4d[_0x9c94('0x2c')];}_0x4dd38e[_0x9c94('0x1c')](_0xc18230)[_0x9c94('0x2d')](_0x45cf4d);};}exports[_0x9c94('0x2e')]=function(_0x1581c0,_0x3f2622){var _0xf30dd1={},_0x561fdc={},_0x5a6b1c={'count':0x0,'rows':[]};var _0xc4a819=_[_0x9c94('0x2f')](db[_0x9c94('0x30')]['rawAttributes'],function(_0x25a6b9){return{'name':_0x25a6b9['fieldName'],'type':_0x25a6b9[_0x9c94('0x31')][_0x9c94('0x32')]};});_0x561fdc[_0x9c94('0x33')]=_['map'](_0xc4a819,'name');_0x561fdc[_0x9c94('0x34')]=_[_0x9c94('0x35')](_0x1581c0[_0x9c94('0x34')]);_0x561fdc['filters']=_['intersection'](_0x561fdc['model'],_0x561fdc['query']);_0xf30dd1[_0x9c94('0x36')]=_['intersection'](_0x561fdc[_0x9c94('0x33')],qs[_0x9c94('0x37')](_0x1581c0['query']['fields']));_0xf30dd1[_0x9c94('0x36')]=_0xf30dd1[_0x9c94('0x36')][_0x9c94('0x38')]?_0xf30dd1[_0x9c94('0x36')]:_0x561fdc[_0x9c94('0x33')];if(!_0x1581c0[_0x9c94('0x34')][_0x9c94('0x39')](_0x9c94('0x3a'))){_0xf30dd1[_0x9c94('0x22')]=qs[_0x9c94('0x22')](_0x1581c0[_0x9c94('0x34')][_0x9c94('0x22')]);_0xf30dd1[_0x9c94('0x20')]=qs[_0x9c94('0x20')](_0x1581c0[_0x9c94('0x34')][_0x9c94('0x20')]);}_0xf30dd1[_0x9c94('0x3b')]=qs[_0x9c94('0x3c')](_0x1581c0['query'][_0x9c94('0x3c')]);_0xf30dd1[_0x9c94('0x3d')]=qs[_0x9c94('0x3e')](_[_0x9c94('0x3f')](_0x1581c0[_0x9c94('0x34')],_0x561fdc[_0x9c94('0x3e')]),_0xc4a819);if(_0x1581c0[_0x9c94('0x34')]['filter']){_0xf30dd1[_0x9c94('0x3d')]=_['merge'](_0xf30dd1[_0x9c94('0x3d')],{'$or':_[_0x9c94('0x2f')](_0xc4a819,function(_0x442d46){if(_0x442d46[_0x9c94('0x31')]!=='VIRTUAL'){var _0x245278={};_0x245278[_0x442d46['name']]={'$like':'%'+_0x1581c0[_0x9c94('0x34')][_0x9c94('0x40')]+'%'};return _0x245278;}})});}_0xf30dd1=_[_0x9c94('0x41')]({},_0xf30dd1,_0x1581c0['options']);var _0x21e9f7={'where':_0xf30dd1['where']};return db[_0x9c94('0x30')]['count'](_0x21e9f7)['then'](function(_0x9a75f0){_0x5a6b1c[_0x9c94('0x21')]=_0x9a75f0;if(_0x1581c0[_0x9c94('0x34')][_0x9c94('0x42')]){_0xf30dd1['include']=[{'all':!![]}];}return db[_0x9c94('0x30')][_0x9c94('0x43')](_0xf30dd1);})[_0x9c94('0x29')](function(_0x360960){_0x5a6b1c['rows']=_0x360960;return _0x5a6b1c;})[_0x9c94('0x29')](respondWithFilteredResult(_0x3f2622,_0xf30dd1))[_0x9c94('0x44')](handleError(_0x3f2622,null));};exports['show']=function(_0x24e74c,_0x3d8b31){var _0x2a5bd5={'raw':!![],'where':{'id':_0x24e74c['params']['id']}},_0x5e6a90={};_0x5e6a90[_0x9c94('0x33')]=_[_0x9c94('0x35')](db[_0x9c94('0x30')][_0x9c94('0x45')]);_0x5e6a90[_0x9c94('0x34')]=_[_0x9c94('0x35')](_0x24e74c[_0x9c94('0x34')]);_0x5e6a90[_0x9c94('0x3e')]=_[_0x9c94('0x46')](_0x5e6a90[_0x9c94('0x33')],_0x5e6a90[_0x9c94('0x34')]);_0x2a5bd5['attributes']=_[_0x9c94('0x46')](_0x5e6a90['model'],qs[_0x9c94('0x37')](_0x24e74c[_0x9c94('0x34')][_0x9c94('0x37')]));_0x2a5bd5[_0x9c94('0x36')]=_0x2a5bd5[_0x9c94('0x36')][_0x9c94('0x38')]?_0x2a5bd5[_0x9c94('0x36')]:_0x5e6a90['model'];if(_0x24e74c['query'][_0x9c94('0x42')]){_0x2a5bd5[_0x9c94('0x47')]=[{'all':!![]}];}_0x2a5bd5=_[_0x9c94('0x41')]({},_0x2a5bd5,_0x24e74c['options']);return db[_0x9c94('0x30')][_0x9c94('0x48')](_0x2a5bd5)['then'](handleEntityNotFound(_0x3d8b31,null))['then'](respondWithResult(_0x3d8b31,null))['catch'](handleError(_0x3d8b31,null));};exports['create']=function(_0x2b94e0,_0x5362f4){return db['DeskField'][_0x9c94('0x49')](_0x2b94e0['body'],{})[_0x9c94('0x29')](respondWithResult(_0x5362f4,0xc9))[_0x9c94('0x44')](handleError(_0x5362f4,null));};exports[_0x9c94('0x28')]=function(_0x205f51,_0x22eaa4){if(_0x205f51['body']['id']){delete _0x205f51[_0x9c94('0x4a')]['id'];}return db[_0x9c94('0x30')][_0x9c94('0x48')]({'where':{'id':_0x205f51[_0x9c94('0x4b')]['id']}})[_0x9c94('0x29')](handleEntityNotFound(_0x22eaa4,null))[_0x9c94('0x29')](saveUpdates(_0x205f51['body'],null))[_0x9c94('0x29')](respondWithResult(_0x22eaa4,null))['catch'](handleError(_0x22eaa4,null));};exports[_0x9c94('0x2a')]=function(_0x38bb48,_0x426c0f){return db['DeskField'][_0x9c94('0x48')]({'where':{'id':_0x38bb48[_0x9c94('0x4b')]['id']}})['then'](handleEntityNotFound(_0x426c0f,null))[_0x9c94('0x29')](removeEntity(_0x426c0f,null))['catch'](handleError(_0x426c0f,null));};
\ No newline at end of file
+var _0x8838=['bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','then','destroy','name','send','DeskField','rawAttributes','fieldName','type','key','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','intersection','include','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x1cdf06,_0x2a1b06){var _0x4ac479=function(_0x5c70e0){while(--_0x5c70e0){_0x1cdf06['push'](_0x1cdf06['shift']());}};_0x4ac479(++_0x2a1b06);}(_0x8838,0x90));var _0x8883=function(_0x12664f,_0xce915a){_0x12664f=_0x12664f-0x0;var _0x202397=_0x8838[_0x12664f];return _0x202397;};'use strict';var emlformat=require(_0x8883('0x0'));var rimraf=require(_0x8883('0x1'));var zipdir=require(_0x8883('0x2'));var jsonpatch=require(_0x8883('0x3'));var rp=require(_0x8883('0x4'));var moment=require(_0x8883('0x5'));var BPromise=require(_0x8883('0x6'));var Mustache=require(_0x8883('0x7'));var util=require(_0x8883('0x8'));var path=require(_0x8883('0x9'));var sox=require(_0x8883('0xa'));var csv=require(_0x8883('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8883('0xc'));var squel=require('squel');var crypto=require(_0x8883('0xd'));var jsforce=require(_0x8883('0xe'));var deskjs=require(_0x8883('0xf'));var toCsv=require(_0x8883('0xb'));var querystring=require(_0x8883('0x10'));var Papa=require(_0x8883('0x11'));var Redis=require(_0x8883('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x8883('0x13'));var as=require(_0x8883('0x14'));var hardwareService=require(_0x8883('0x15'));var logger=require(_0x8883('0x16'))('api');var utils=require(_0x8883('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8883('0x18'));var db=require(_0x8883('0x19'))['db'];function respondWithStatusCode(_0x357db6,_0x42dd7f){_0x42dd7f=_0x42dd7f||0xcc;return function(_0x3ad46c){if(_0x3ad46c){return _0x357db6[_0x8883('0x1a')](_0x42dd7f);}return _0x357db6[_0x8883('0x1b')](_0x42dd7f)[_0x8883('0x1c')]();};}function respondWithResult(_0x4663ba,_0x5f5259){_0x5f5259=_0x5f5259||0xc8;return function(_0x37ed54){if(_0x37ed54){return _0x4663ba[_0x8883('0x1b')](_0x5f5259)[_0x8883('0x1d')](_0x37ed54);}};}function respondWithFilteredResult(_0x347575,_0x5b9cba){return function(_0x126280){if(_0x126280){var _0x55e8ab=typeof _0x5b9cba[_0x8883('0x1e')]==='undefined'&&typeof _0x5b9cba[_0x8883('0x1f')]==='undefined';var _0x2ff211=_0x126280[_0x8883('0x20')];var _0x127b5f=_0x55e8ab?0x0:_0x5b9cba[_0x8883('0x1e')];var _0x1ec1b5=_0x55e8ab?_0x126280['count']:_0x5b9cba['offset']+_0x5b9cba[_0x8883('0x1f')];var _0x118c33;if(_0x1ec1b5>=_0x2ff211){_0x1ec1b5=_0x2ff211;_0x118c33=0xc8;}else{_0x118c33=0xce;}_0x347575['status'](_0x118c33);return _0x347575[_0x8883('0x21')](_0x8883('0x22'),_0x127b5f+'-'+_0x1ec1b5+'/'+_0x2ff211)[_0x8883('0x1d')](_0x126280);}return null;};}function patchUpdates(_0x4a7185){return function(_0x1bb80d){try{jsonpatch[_0x8883('0x23')](_0x1bb80d,_0x4a7185,!![]);}catch(_0x10d674){return BPromise[_0x8883('0x24')](_0x10d674);}return _0x1bb80d[_0x8883('0x25')]();};}function saveUpdates(_0x4c2376,_0x2ee36c){return function(_0xbb362f){if(_0xbb362f){return _0xbb362f['update'](_0x4c2376)[_0x8883('0x26')](function(_0x154e5f){return _0x154e5f;});}return null;};}function removeEntity(_0x171d63,_0x51fdd9){return function(_0x3f90e8){if(_0x3f90e8){return _0x3f90e8[_0x8883('0x27')]()[_0x8883('0x26')](function(){_0x171d63[_0x8883('0x1b')](0xcc)[_0x8883('0x1c')]();});}};}function handleEntityNotFound(_0x223412,_0x2b53e5){return function(_0x5d7c59){if(!_0x5d7c59){_0x223412[_0x8883('0x1a')](0x194);}return _0x5d7c59;};}function handleError(_0x576019,_0x1b6c13){_0x1b6c13=_0x1b6c13||0x1f4;return function(_0x5c3a68){logger['error'](_0x5c3a68['stack']);if(_0x5c3a68['name']){delete _0x5c3a68[_0x8883('0x28')];}_0x576019[_0x8883('0x1b')](_0x1b6c13)[_0x8883('0x29')](_0x5c3a68);};}exports['index']=function(_0x21529a,_0x1147ed){var _0x26df5b={},_0x2e772e={},_0x576605={'count':0x0,'rows':[]};var _0x15fcdb=_['map'](db[_0x8883('0x2a')][_0x8883('0x2b')],function(_0x2bdd57){return{'name':_0x2bdd57[_0x8883('0x2c')],'type':_0x2bdd57[_0x8883('0x2d')][_0x8883('0x2e')]};});_0x2e772e[_0x8883('0x2f')]=_['map'](_0x15fcdb,'name');_0x2e772e['query']=_[_0x8883('0x30')](_0x21529a[_0x8883('0x31')]);_0x2e772e[_0x8883('0x32')]=_['intersection'](_0x2e772e[_0x8883('0x2f')],_0x2e772e[_0x8883('0x31')]);_0x26df5b['attributes']=_['intersection'](_0x2e772e[_0x8883('0x2f')],qs['fields'](_0x21529a['query'][_0x8883('0x33')]));_0x26df5b[_0x8883('0x34')]=_0x26df5b['attributes'][_0x8883('0x35')]?_0x26df5b[_0x8883('0x34')]:_0x2e772e[_0x8883('0x2f')];if(!_0x21529a['query'][_0x8883('0x36')](_0x8883('0x37'))){_0x26df5b[_0x8883('0x1f')]=qs[_0x8883('0x1f')](_0x21529a[_0x8883('0x31')][_0x8883('0x1f')]);_0x26df5b[_0x8883('0x1e')]=qs[_0x8883('0x1e')](_0x21529a[_0x8883('0x31')][_0x8883('0x1e')]);}_0x26df5b[_0x8883('0x38')]=qs[_0x8883('0x39')](_0x21529a[_0x8883('0x31')][_0x8883('0x39')]);_0x26df5b[_0x8883('0x3a')]=qs['filters'](_[_0x8883('0x3b')](_0x21529a['query'],_0x2e772e[_0x8883('0x32')]),_0x15fcdb);if(_0x21529a['query'][_0x8883('0x3c')]){_0x26df5b['where']=_[_0x8883('0x3d')](_0x26df5b[_0x8883('0x3a')],{'$or':_['map'](_0x15fcdb,function(_0x2c3965){if(_0x2c3965[_0x8883('0x2d')]!==_0x8883('0x3e')){var _0x480609={};_0x480609[_0x2c3965[_0x8883('0x28')]]={'$like':'%'+_0x21529a[_0x8883('0x31')][_0x8883('0x3c')]+'%'};return _0x480609;}})});}_0x26df5b=_[_0x8883('0x3d')]({},_0x26df5b,_0x21529a[_0x8883('0x3f')]);var _0x21e90c={'where':_0x26df5b[_0x8883('0x3a')]};return db[_0x8883('0x2a')][_0x8883('0x20')](_0x21e90c)[_0x8883('0x26')](function(_0x262ef7){_0x576605[_0x8883('0x20')]=_0x262ef7;if(_0x21529a[_0x8883('0x31')][_0x8883('0x40')]){_0x26df5b['include']=[{'all':!![]}];}return db[_0x8883('0x2a')]['findAll'](_0x26df5b);})[_0x8883('0x26')](function(_0x3626bf){_0x576605[_0x8883('0x41')]=_0x3626bf;return _0x576605;})[_0x8883('0x26')](respondWithFilteredResult(_0x1147ed,_0x26df5b))[_0x8883('0x42')](handleError(_0x1147ed,null));};exports[_0x8883('0x43')]=function(_0x12af4c,_0x27a11a){var _0x5a66de={'raw':!![],'where':{'id':_0x12af4c[_0x8883('0x44')]['id']}},_0x35b867={};_0x35b867[_0x8883('0x2f')]=_[_0x8883('0x30')](db[_0x8883('0x2a')][_0x8883('0x2b')]);_0x35b867[_0x8883('0x31')]=_['keys'](_0x12af4c[_0x8883('0x31')]);_0x35b867[_0x8883('0x32')]=_[_0x8883('0x45')](_0x35b867[_0x8883('0x2f')],_0x35b867['query']);_0x5a66de[_0x8883('0x34')]=_[_0x8883('0x45')](_0x35b867[_0x8883('0x2f')],qs['fields'](_0x12af4c[_0x8883('0x31')]['fields']));_0x5a66de[_0x8883('0x34')]=_0x5a66de['attributes'][_0x8883('0x35')]?_0x5a66de[_0x8883('0x34')]:_0x35b867['model'];if(_0x12af4c['query']['includeAll']){_0x5a66de[_0x8883('0x46')]=[{'all':!![]}];}_0x5a66de=_[_0x8883('0x3d')]({},_0x5a66de,_0x12af4c[_0x8883('0x3f')]);return db['DeskField'][_0x8883('0x47')](_0x5a66de)[_0x8883('0x26')](handleEntityNotFound(_0x27a11a,null))[_0x8883('0x26')](respondWithResult(_0x27a11a,null))[_0x8883('0x42')](handleError(_0x27a11a,null));};exports[_0x8883('0x48')]=function(_0x58fdd8,_0x43683f){return db[_0x8883('0x2a')][_0x8883('0x48')](_0x58fdd8[_0x8883('0x49')],{})[_0x8883('0x26')](respondWithResult(_0x43683f,0xc9))[_0x8883('0x42')](handleError(_0x43683f,null));};exports[_0x8883('0x4a')]=function(_0x21ee60,_0x598086){if(_0x21ee60['body']['id']){delete _0x21ee60[_0x8883('0x49')]['id'];}return db[_0x8883('0x2a')]['find']({'where':{'id':_0x21ee60[_0x8883('0x44')]['id']}})['then'](handleEntityNotFound(_0x598086,null))['then'](saveUpdates(_0x21ee60[_0x8883('0x49')],null))[_0x8883('0x26')](respondWithResult(_0x598086,null))['catch'](handleError(_0x598086,null));};exports[_0x8883('0x27')]=function(_0x153ba6,_0x23f464){return db[_0x8883('0x2a')][_0x8883('0x47')]({'where':{'id':_0x153ba6[_0x8883('0x44')]['id']}})[_0x8883('0x26')](handleEntityNotFound(_0x23f464,null))[_0x8883('0x26')](removeEntity(_0x23f464,null))[_0x8883('0x42')](handleError(_0x23f464,null));};
\ No newline at end of file
index 3b31151..0633126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f14=['request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x46e185,_0x497985){var _0x131570=function(_0xd16576){while(--_0xd16576){_0x46e185['push'](_0x46e185['shift']());}};_0x131570(++_0x497985);}(_0x6f14,0x1e0));var _0x46f1=function(_0x3e94b1,_0x14218b){_0x3e94b1=_0x3e94b1-0x0;var _0x4b8663=_0x6f14[_0x3e94b1];return _0x4b8663;};'use strict';var _=require(_0x46f1('0x0'));var util=require(_0x46f1('0x1'));var logger=require(_0x46f1('0x2'))(_0x46f1('0x3'));var moment=require(_0x46f1('0x4'));var BPromise=require(_0x46f1('0x5'));var rp=require(_0x46f1('0x6'));var fs=require('fs');var path=require(_0x46f1('0x7'));var rimraf=require(_0x46f1('0x8'));var config=require(_0x46f1('0x9'));var attributes=require(_0x46f1('0xa'));module[_0x46f1('0xb')]=function(_0x19e869,_0x254426){return _0x19e869[_0x46f1('0xc')](_0x46f1('0xd'),attributes,{'tableName':_0x46f1('0xe'),'paranoid':![],'indexes':[{'name':_0x46f1('0xf'),'fields':[_0x46f1('0x10'),_0x46f1('0x11')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a16=['path','rimraf','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','../../config/logger','api','moment','request-promise'];(function(_0x1709e7,_0x2ced21){var _0x402819=function(_0x3637a0){while(--_0x3637a0){_0x1709e7['push'](_0x1709e7['shift']());}};_0x402819(++_0x2ced21);}(_0x8a16,0x10f));var _0x68a1=function(_0x240c6b,_0x2bb058){_0x240c6b=_0x240c6b-0x0;var _0x31baa7=_0x8a16[_0x240c6b];return _0x31baa7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x68a1('0x0'))(_0x68a1('0x1'));var moment=require(_0x68a1('0x2'));var BPromise=require('bluebird');var rp=require(_0x68a1('0x3'));var fs=require('fs');var path=require(_0x68a1('0x4'));var rimraf=require(_0x68a1('0x5'));var config=require('../../config/environment');var attributes=require('./intDeskField.attributes');module['exports']=function(_0x38f331,_0x62c843){return _0x38f331['define'](_0x68a1('0x6'),attributes,{'tableName':_0x68a1('0x7'),'paranoid':![],'indexes':[{'name':_0x68a1('0x8'),'fields':[_0x68a1('0x9'),_0x68a1('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 71f4c6c..94f395b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbc6=['info','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','then','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','error','code','DeskField,\x20%s,\x20%s','message'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xcbc6,0x158));var _0x6cbc=function(_0x4df748,_0x3589b0){_0x4df748=_0x4df748-0x0;var _0x34fb47=_0xcbc6[_0x4df748];return _0x34fb47;};'use strict';var _=require(_0x6cbc('0x0'));var util=require(_0x6cbc('0x1'));var moment=require(_0x6cbc('0x2'));var BPromise=require(_0x6cbc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6cbc('0x4'));var db=require(_0x6cbc('0x5'))['db'];var utils=require(_0x6cbc('0x6'));var logger=require(_0x6cbc('0x7'))(_0x6cbc('0x8'));var config=require('../../config/environment');var jayson=require(_0x6cbc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x139711,_0x3f49c7,_0xcab36b){return new BPromise(function(_0x54fb91,_0x3a27ce){return client['request'](_0x139711,_0xcab36b)[_0x6cbc('0xa')](function(_0x133f06){logger['info']('DeskField,\x20%s,\x20%s',_0x3f49c7,_0x6cbc('0xb'));logger['debug'](_0x6cbc('0xc'),_0x3f49c7,_0x6cbc('0xb'),JSON['stringify'](_0x133f06));if(_0x133f06[_0x6cbc('0xd')]){if(_0x133f06[_0x6cbc('0xd')][_0x6cbc('0xe')]===0x1f4){logger[_0x6cbc('0xd')](_0x6cbc('0xf'),_0x3f49c7,_0x133f06[_0x6cbc('0xd')][_0x6cbc('0x10')]);return _0x3a27ce(_0x133f06[_0x6cbc('0xd')][_0x6cbc('0x10')]);}logger[_0x6cbc('0xd')]('DeskField,\x20%s,\x20%s',_0x3f49c7,_0x133f06[_0x6cbc('0xd')][_0x6cbc('0x10')]);return _0x54fb91(_0x133f06[_0x6cbc('0xd')][_0x6cbc('0x10')]);}else{logger[_0x6cbc('0x11')](_0x6cbc('0xf'),_0x3f49c7,_0x6cbc('0xb'));_0x54fb91(_0x133f06['result'][_0x6cbc('0x10')]);}})[_0x6cbc('0x12')](function(_0x192e04){logger[_0x6cbc('0xd')](_0x6cbc('0xf'),_0x3f49c7,_0x192e04);_0x3a27ce(_0x192e04);});});}
\ No newline at end of file
+var _0xbd68=['client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xbd68,0x1ab));var _0x8bd6=function(_0x20f90d,_0x59d3dc){_0x20f90d=_0x20f90d-0x0;var _0x4fd688=_0xbd68[_0x20f90d];return _0x4fd688;};'use strict';var _=require(_0x8bd6('0x0'));var util=require(_0x8bd6('0x1'));var moment=require(_0x8bd6('0x2'));var BPromise=require('bluebird');var rs=require(_0x8bd6('0x3'));var fs=require('fs');var Redis=require(_0x8bd6('0x4'));var db=require(_0x8bd6('0x5'))['db'];var utils=require(_0x8bd6('0x6'));var logger=require(_0x8bd6('0x7'))('rpc');var config=require(_0x8bd6('0x8'));var jayson=require(_0x8bd6('0x9'));var client=jayson[_0x8bd6('0xa')][_0x8bd6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x50221d,_0x5ac381,_0x3f9833){return new BPromise(function(_0x426579,_0x277c79){return client[_0x8bd6('0xc')](_0x50221d,_0x3f9833)[_0x8bd6('0xd')](function(_0x107431){logger['info'](_0x8bd6('0xe'),_0x5ac381,_0x8bd6('0xf'));logger[_0x8bd6('0x10')]('DeskField,\x20%s,\x20%s,\x20%s',_0x5ac381,_0x8bd6('0xf'),JSON[_0x8bd6('0x11')](_0x107431));if(_0x107431[_0x8bd6('0x12')]){if(_0x107431[_0x8bd6('0x12')][_0x8bd6('0x13')]===0x1f4){logger['error']('DeskField,\x20%s,\x20%s',_0x5ac381,_0x107431[_0x8bd6('0x12')][_0x8bd6('0x14')]);return _0x277c79(_0x107431[_0x8bd6('0x12')][_0x8bd6('0x14')]);}logger[_0x8bd6('0x12')](_0x8bd6('0xe'),_0x5ac381,_0x107431[_0x8bd6('0x12')][_0x8bd6('0x14')]);return _0x426579(_0x107431[_0x8bd6('0x12')][_0x8bd6('0x14')]);}else{logger[_0x8bd6('0x15')](_0x8bd6('0xe'),_0x5ac381,_0x8bd6('0xf'));_0x426579(_0x107431['result'][_0x8bd6('0x14')]);}})[_0x8bd6('0x16')](function(_0x51caec){logger[_0x8bd6('0x12')]('DeskField,\x20%s,\x20%s',_0x5ac381,_0x51caec);_0x277c79(_0x51caec);});});}
\ No newline at end of file
index ab361a5..0832064 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ba=['get','index','/:id','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2af297,_0xe0fd9d){var _0x4e213e=function(_0x4fde26){while(--_0x4fde26){_0x2af297['push'](_0x2af297['shift']());}};_0x4e213e(++_0xe0fd9d);}(_0x14ba,0x94));var _0xa14b=function(_0x256525,_0x2233f2){_0x256525=_0x256525-0x0;var _0x2a5596=_0x14ba[_0x256525];return _0x2a5596;};'use strict';var multer=require(_0xa14b('0x0'));var util=require(_0xa14b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa14b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa14b('0x3'));var interaction=require(_0xa14b('0x4'));var config=require(_0xa14b('0x5'));var controller=require('./intDynamics365Account.controller');router[_0xa14b('0x6')]('/',auth['isAuthenticated'](),controller[_0xa14b('0x7')]);router[_0xa14b('0x6')](_0xa14b('0x8'),auth[_0xa14b('0x9')](),controller[_0xa14b('0xa')]);router[_0xa14b('0x6')](_0xa14b('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0xa14b('0xc'),auth[_0xa14b('0x9')](),controller[_0xa14b('0xd')]);router[_0xa14b('0xe')]('/',auth[_0xa14b('0x9')](),controller[_0xa14b('0xf')]);router[_0xa14b('0xe')](_0xa14b('0xb'),auth[_0xa14b('0x9')](),controller[_0xa14b('0x10')]);router[_0xa14b('0x11')]('/:id',auth[_0xa14b('0x9')](),controller[_0xa14b('0x12')]);router[_0xa14b('0x13')](_0xa14b('0x8'),auth[_0xa14b('0x9')](),controller[_0xa14b('0x14')]);module[_0xa14b('0x15')]=router;
\ No newline at end of file
+var _0x2f1b=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Account.controller','get','index','show','/:id/configurations','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0x2f1b,0xcd));var _0xb2f1=function(_0x24d630,_0x40eede){_0x24d630=_0x24d630-0x0;var _0x2de7cf=_0x2f1b[_0x24d630];return _0x2de7cf;};'use strict';var multer=require(_0xb2f1('0x0'));var util=require(_0xb2f1('0x1'));var path=require(_0xb2f1('0x2'));var timeout=require(_0xb2f1('0x3'));var express=require(_0xb2f1('0x4'));var router=express[_0xb2f1('0x5')]();var fs_extra=require(_0xb2f1('0x6'));var auth=require(_0xb2f1('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb2f1('0x8'));var controller=require(_0xb2f1('0x9'));router[_0xb2f1('0xa')]('/',auth['isAuthenticated'](),controller[_0xb2f1('0xb')]);router[_0xb2f1('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xb2f1('0xc')]);router[_0xb2f1('0xa')](_0xb2f1('0xd'),auth['isAuthenticated'](),controller[_0xb2f1('0xe')]);router[_0xb2f1('0xa')](_0xb2f1('0xf'),auth[_0xb2f1('0x10')](),controller[_0xb2f1('0x11')]);router[_0xb2f1('0x12')]('/',auth[_0xb2f1('0x10')](),controller['create']);router[_0xb2f1('0x12')](_0xb2f1('0xd'),auth[_0xb2f1('0x10')](),controller[_0xb2f1('0x13')]);router[_0xb2f1('0x14')]('/:id',auth[_0xb2f1('0x10')](),controller[_0xb2f1('0x15')]);router[_0xb2f1('0x16')]('/:id',auth[_0xb2f1('0x10')](),controller[_0xb2f1('0x17')]);module[_0xb2f1('0x18')]=router;
\ No newline at end of file
index c02f1c2..a6961d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde81=['BOOLEAN','sequelize','exports','STRING'];(function(_0x5519a9,_0x1c5147){var _0x32f2cc=function(_0x52ed58){while(--_0x52ed58){_0x5519a9['push'](_0x5519a9['shift']());}};_0x32f2cc(++_0x1c5147);}(_0xde81,0x109));var _0x1de8=function(_0x2389bc,_0x167cd2){_0x2389bc=_0x2389bc-0x0;var _0x170548=_0xde81[_0x2389bc];return _0x170548;};'use strict';var Sequelize=require(_0x1de8('0x0'));module[_0x1de8('0x1')]={'name':{'type':Sequelize[_0x1de8('0x2')]},'username':{'type':Sequelize[_0x1de8('0x2')]},'password':{'type':Sequelize[_0x1de8('0x2')]},'remoteUri':{'type':Sequelize[_0x1de8('0x2')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x1de8('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x1de8('0x2')]},'modernAuthentication':{'type':Sequelize[_0x1de8('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xfcbd=['BOOLEAN','sequelize','STRING'];(function(_0x3167a8,_0x4d5006){var _0x20073f=function(_0x5b7216){while(--_0x5b7216){_0x3167a8['push'](_0x3167a8['shift']());}};_0x20073f(++_0x4d5006);}(_0xfcbd,0x160));var _0xdfcb=function(_0x183bd8,_0x53bd79){_0x183bd8=_0x183bd8-0x0;var _0x1388e3=_0xfcbd[_0x183bd8];return _0x1388e3;};'use strict';var Sequelize=require(_0xdfcb('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xdfcb('0x1')]},'password':{'type':Sequelize[_0xdfcb('0x1')]},'remoteUri':{'type':Sequelize[_0xdfcb('0x1')]},'tenantId':{'type':Sequelize[_0xdfcb('0x1')]},'clientId':{'type':Sequelize[_0xdfcb('0x1')]},'clientSecret':{'type':Sequelize[_0xdfcb('0x1')]},'serverUrl':{'type':Sequelize[_0xdfcb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xdfcb('0x1')]},'modernAuthentication':{'type':Sequelize[_0xdfcb('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index df39634..ac2a029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2da5=['slice','substring','format','%s/api/data/v9.0/','ticketType','incident','Incident','title','description','customerid','caseorigincode','subject','phonenumber','directioncode','accountidname','actualserviceunits','billedserviceunits','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdonbehalfbyyominame','customeridname','customeridtype','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','responseby','responsiblecontactidyominame','slainvokedidname','socialprofileidname','statecode','subjectidname','ticketnumber','timezoneruleversionnumber','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','tenantId','clientId','modernAuthentication','CloudProvider','data5','data7','access_token','POST','https://login.microsoftonline.com/','/oauth2/token','clientSecret','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','stack','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value','DisplayName','OptionSet','true','FalseOption','false','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../config/logger','api','../../mysqldb','json','offset','undefined','limit','count','set','update','then','destroy','status','end','error','name','send','index','Dynamics365Account','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','findAll','rows','catch','params','length','include','find','create','body','Dynamics365Configuration','pick','getConfigurations','findOne','Subjects','getSubjects','channel','Dynamics365Field','Descriptions'];(function(_0x2726fe,_0x2351ce){var _0x55c66c=function(_0x4a41de){while(--_0x4a41de){_0x2726fe['push'](_0x2726fe['shift']());}};_0x55c66c(++_0x2351ce);}(_0x2da5,0x123));var _0x52da=function(_0x568fb5,_0x55a557){_0x568fb5=_0x568fb5-0x0;var _0x230034=_0x2da5[_0x568fb5];return _0x230034;};'use strict';var rp=require(_0x52da('0x0'));var util=require(_0x52da('0x1'));var _=require(_0x52da('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0x52da('0x3'))(_0x52da('0x4'));var db=require(_0x52da('0x5'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0xcefe51,_0x377a9a){_0x377a9a=_0x377a9a||0xc8;return function(_0x2d32ca){if(_0x2d32ca){return _0xcefe51['status'](_0x377a9a)[_0x52da('0x6')](_0x2d32ca);}};}function respondWithFilteredResult(_0x5ab74e,_0x49e477){return function(_0x54a7fd){if(_0x54a7fd){var _0x29dce6=typeof _0x49e477[_0x52da('0x7')]===_0x52da('0x8')&&typeof _0x49e477[_0x52da('0x9')]===_0x52da('0x8');var _0x785aeb=_0x54a7fd[_0x52da('0xa')];var _0x285da0=_0x29dce6?0x0:_0x49e477['offset'];var _0x3a5f6a=_0x29dce6?_0x54a7fd[_0x52da('0xa')]:_0x49e477[_0x52da('0x7')]+_0x49e477[_0x52da('0x9')];var _0x24061e;if(_0x3a5f6a>=_0x785aeb){_0x3a5f6a=_0x785aeb;_0x24061e=0xc8;}else{_0x24061e=0xce;}_0x5ab74e['status'](_0x24061e);return _0x5ab74e[_0x52da('0xb')]('Content-Range',_0x285da0+'-'+_0x3a5f6a+'/'+_0x785aeb)[_0x52da('0x6')](_0x54a7fd);}return null;};}function saveUpdates(_0x14cab9){return function(_0x5a1c2d){if(_0x5a1c2d){return _0x5a1c2d[_0x52da('0xc')](_0x14cab9)[_0x52da('0xd')](function(_0x4571b6){return _0x4571b6;});}return null;};}function removeEntity(_0x54762c){return function(_0x208f86){if(_0x208f86){return _0x208f86[_0x52da('0xe')]()[_0x52da('0xd')](function(){_0x54762c[_0x52da('0xf')](0xcc)[_0x52da('0x10')]();});}};}function handleEntityNotFound(_0x49d1a4){return function(_0x5eeca6){if(!_0x5eeca6){_0x49d1a4['sendStatus'](0x194);}return _0x5eeca6;};}function handleError(_0x325128,_0x505ba4){_0x505ba4=_0x505ba4||0x1f4;return function(_0x2f6745){logger[_0x52da('0x11')](_0x2f6745['stack']);if(_0x2f6745[_0x52da('0x12')]){delete _0x2f6745['name'];}_0x325128[_0x52da('0xf')](_0x505ba4)[_0x52da('0x13')](_0x2f6745);};}exports[_0x52da('0x14')]=function(_0x32e767,_0x477953){var _0x52db41={},_0x3c5d4c={},_0x256ae2={'count':0x0,'rows':[]};var _0x5a194e=_['map'](db[_0x52da('0x15')][_0x52da('0x16')],function(_0x38abe2){return{'name':_0x38abe2[_0x52da('0x17')],'type':_0x38abe2[_0x52da('0x18')][_0x52da('0x19')]};});_0x3c5d4c[_0x52da('0x1a')]=_[_0x52da('0x1b')](_0x5a194e,_0x52da('0x12'));_0x3c5d4c[_0x52da('0x1c')]=_[_0x52da('0x1d')](_0x32e767[_0x52da('0x1c')]);_0x3c5d4c[_0x52da('0x1e')]=_[_0x52da('0x1f')](_0x3c5d4c['model'],_0x3c5d4c[_0x52da('0x1c')]);_0x52db41['attributes']=_['intersection'](_0x3c5d4c[_0x52da('0x1a')],qs[_0x52da('0x20')](_0x32e767[_0x52da('0x1c')]['fields']));_0x52db41[_0x52da('0x21')]=_0x52db41[_0x52da('0x21')]['length']?_0x52db41['attributes']:_0x3c5d4c[_0x52da('0x1a')];if(!_0x32e767[_0x52da('0x1c')][_0x52da('0x22')](_0x52da('0x23'))){_0x52db41['limit']=qs['limit'](_0x32e767['query']['limit']);_0x52db41[_0x52da('0x7')]=qs[_0x52da('0x7')](_0x32e767[_0x52da('0x1c')][_0x52da('0x7')]);}_0x52db41[_0x52da('0x24')]=qs[_0x52da('0x25')](_0x32e767[_0x52da('0x1c')]['sort']);_0x52db41[_0x52da('0x26')]=qs['filters'](_['pick'](_0x32e767[_0x52da('0x1c')],_0x3c5d4c[_0x52da('0x1e')]),_0x5a194e);if(_0x32e767[_0x52da('0x1c')]['filter']){_0x52db41[_0x52da('0x26')]=_['merge'](_0x52db41[_0x52da('0x26')],{'$or':_['map'](_0x5a194e,function(_0x2799e5){if(_0x2799e5['type']!==_0x52da('0x27')){var _0x311de8={};_0x311de8[_0x2799e5[_0x52da('0x12')]]={'$like':'%'+_0x32e767[_0x52da('0x1c')][_0x52da('0x28')]+'%'};return _0x311de8;}})});}_0x52db41=_[_0x52da('0x29')]({},_0x52db41,_0x32e767[_0x52da('0x2a')]);var _0x9d9aa9={'where':_0x52db41[_0x52da('0x26')]};return db['Dynamics365Account']['count'](_0x9d9aa9)[_0x52da('0xd')](function(_0x56d874){_0x256ae2[_0x52da('0xa')]=_0x56d874;if(_0x32e767[_0x52da('0x1c')]['includeAll']){_0x52db41['include']=[{'all':!![]}];}return db[_0x52da('0x15')][_0x52da('0x2b')](_0x52db41);})['then'](function(_0x2d3ada){_0x256ae2[_0x52da('0x2c')]=_0x2d3ada;return _0x256ae2;})[_0x52da('0xd')](respondWithFilteredResult(_0x477953,_0x52db41))[_0x52da('0x2d')](handleError(_0x477953,null));};exports['show']=function(_0xf857e4,_0x502c63){var _0x1055b1={'raw':![],'where':{'id':_0xf857e4[_0x52da('0x2e')]['id']}},_0x24eaea={};_0x24eaea[_0x52da('0x1a')]=_['keys'](db['Dynamics365Account']['rawAttributes']);_0x24eaea[_0x52da('0x1c')]=_[_0x52da('0x1d')](_0xf857e4[_0x52da('0x1c')]);_0x24eaea['filters']=_[_0x52da('0x1f')](_0x24eaea[_0x52da('0x1a')],_0x24eaea[_0x52da('0x1c')]);_0x1055b1[_0x52da('0x21')]=_[_0x52da('0x1f')](_0x24eaea[_0x52da('0x1a')],qs[_0x52da('0x20')](_0xf857e4['query'][_0x52da('0x20')]));_0x1055b1[_0x52da('0x21')]=_0x1055b1[_0x52da('0x21')][_0x52da('0x2f')]?_0x1055b1[_0x52da('0x21')]:_0x24eaea[_0x52da('0x1a')];if(_0xf857e4['query']['includeAll']){_0x1055b1[_0x52da('0x30')]=[{'all':!![]}];}_0x1055b1=_['merge']({},_0x1055b1,_0xf857e4[_0x52da('0x2a')]);return db[_0x52da('0x15')][_0x52da('0x31')](_0x1055b1)[_0x52da('0xd')](handleEntityNotFound(_0x502c63,null))[_0x52da('0xd')](respondWithResult(_0x502c63,null))[_0x52da('0x2d')](handleError(_0x502c63,null));};exports[_0x52da('0x32')]=function(_0x1bcbc9,_0x4fdafa){return db[_0x52da('0x15')][_0x52da('0x32')](_0x1bcbc9['body'],{})[_0x52da('0xd')](respondWithResult(_0x4fdafa,0xc9))[_0x52da('0x2d')](handleError(_0x4fdafa,null));};exports[_0x52da('0xc')]=function(_0x442c34,_0x5efdb3){if(_0x442c34[_0x52da('0x33')]['id']){delete _0x442c34[_0x52da('0x33')]['id'];}return db['Dynamics365Account'][_0x52da('0x31')]({'where':{'id':_0x442c34['params']['id']}})[_0x52da('0xd')](handleEntityNotFound(_0x5efdb3,null))[_0x52da('0xd')](saveUpdates(_0x442c34[_0x52da('0x33')],null))[_0x52da('0xd')](respondWithResult(_0x5efdb3,null))[_0x52da('0x2d')](handleError(_0x5efdb3,null));};exports[_0x52da('0xe')]=function(_0x394094,_0x261425){return db[_0x52da('0x15')]['find']({'where':{'id':_0x394094[_0x52da('0x2e')]['id']}})[_0x52da('0xd')](handleEntityNotFound(_0x261425,null))['then'](removeEntity(_0x261425,null))[_0x52da('0x2d')](handleError(_0x261425,null));};exports['getConfigurations']=function(_0x124d44,_0x38ddf3){var _0x2d9d98={};var _0x56b89a={};var _0x2a904e;var _0x27c493;return db[_0x52da('0x15')]['findOne']({'where':{'id':_0x124d44[_0x52da('0x2e')]['id']}})['then'](handleEntityNotFound(_0x38ddf3,null))['then'](function(_0x27fff0){if(_0x27fff0){_0x2a904e=_0x27fff0;_0x56b89a[_0x52da('0x1a')]=_[_0x52da('0x1d')](db[_0x52da('0x34')][_0x52da('0x16')]);_0x56b89a[_0x52da('0x1c')]=_[_0x52da('0x1d')](_0x124d44[_0x52da('0x1c')]);_0x56b89a[_0x52da('0x1e')]=_[_0x52da('0x1f')](_0x56b89a['model'],_0x56b89a['query']);_0x2d9d98['attributes']=_['intersection'](_0x56b89a['model'],qs['fields'](_0x124d44['query'][_0x52da('0x20')]));_0x2d9d98['attributes']=_0x2d9d98['attributes']['length']?_0x2d9d98[_0x52da('0x21')]:_0x56b89a[_0x52da('0x1a')];_0x2d9d98[_0x52da('0x24')]=qs[_0x52da('0x25')](_0x124d44[_0x52da('0x1c')][_0x52da('0x25')]);_0x2d9d98[_0x52da('0x26')]=qs['filters'](_[_0x52da('0x35')](_0x124d44[_0x52da('0x1c')],_0x56b89a[_0x52da('0x1e')]));if(_0x124d44['query']['filter']){_0x2d9d98[_0x52da('0x26')]=_['merge'](_0x2d9d98['where'],{'$or':_[_0x52da('0x1b')](_0x2d9d98[_0x52da('0x21')],function(_0x11fed1){var _0x2cae9b={};_0x2cae9b[_0x11fed1]={'$like':'%'+_0x124d44[_0x52da('0x1c')][_0x52da('0x28')]+'%'};return _0x2cae9b;})});}_0x2d9d98=_[_0x52da('0x29')]({},_0x2d9d98,_0x124d44[_0x52da('0x2a')]);return _0x2a904e[_0x52da('0x36')](_0x2d9d98);}})['then'](function(_0x35c387){if(_0x35c387){_0x27c493=_0x35c387[_0x52da('0x2f')];if(!_0x124d44[_0x52da('0x1c')][_0x52da('0x22')]('nolimit')){_0x2d9d98[_0x52da('0x9')]=qs[_0x52da('0x9')](_0x124d44[_0x52da('0x1c')][_0x52da('0x9')]);_0x2d9d98[_0x52da('0x7')]=qs[_0x52da('0x7')](_0x124d44[_0x52da('0x1c')][_0x52da('0x7')]);}return _0x2a904e[_0x52da('0x36')](_0x2d9d98);}})[_0x52da('0xd')](function(_0x2307ab){if(_0x2307ab){return _0x2307ab?{'count':_0x27c493,'rows':_0x2307ab}:null;}})[_0x52da('0xd')](respondWithResult(_0x38ddf3,null))[_0x52da('0x2d')](handleError(_0x38ddf3,null));};exports['addConfiguration']=function(_0x258623,_0x34d1eb){if(_0x258623[_0x52da('0x33')]['id']){delete _0x258623[_0x52da('0x33')]['id'];}return db['Dynamics365Account'][_0x52da('0x37')]({'where':{'id':_0x258623[_0x52da('0x2e')]['id']}})[_0x52da('0xd')](handleEntityNotFound(_0x34d1eb,null))[_0x52da('0xd')](function(_0x36bba7){if(_0x36bba7){_0x258623[_0x52da('0x33')]['AccountId']=_0x36bba7['id'];_0x258623['body'][_0x52da('0x38')]=integrations[_0x52da('0x39')](_0x258623[_0x52da('0x33')]['channel'],_0x258623[_0x52da('0x33')][_0x52da('0x18')]);_0x258623['body']['Descriptions']=integrations['getDescriptions'](_0x258623[_0x52da('0x33')][_0x52da('0x3a')],_0x258623[_0x52da('0x33')][_0x52da('0x18')]);return db[_0x52da('0x34')][_0x52da('0x32')](_0x258623[_0x52da('0x33')],{'include':[{'model':db[_0x52da('0x3b')],'as':_0x52da('0x38')},{'model':db[_0x52da('0x3b')],'as':_0x52da('0x3c')}]});}return null;})[_0x52da('0xd')](respondWithResult(_0x34d1eb,null))['catch'](handleError(_0x34d1eb,null));};function sanitizeRemoteUri(_0x4c300b){var _0xfb8c79=_0x4c300b[_0x52da('0x3d')](-0x1);if(_0xfb8c79==='/')return _0x4c300b[_0x52da('0x3e')](0x0,_0x4c300b['lastIndexOf'](_0xfb8c79));return _0x4c300b;}function getWebApiUrl(_0x5f4df){return util[_0x52da('0x3f')](_0x52da('0x40'),_0x5f4df);}exports['getFields']=function(_0x29ba56,_0x2d7c65){var _0x27676d=_0x29ba56['query'][_0x52da('0x41')];var _0x1ccca8=_0x27676d===_0x52da('0x42')?_0x52da('0x43'):'PhoneCall';var _0xbb5e96='';var _0x29c510='';var _0x37a122='';var _0x350c23='';var _0x9d8a6c='';var _0x1629cb='';var _0x376437='';var _0x169273='';var _0x2a6ab5=[_0x52da('0x44'),_0x52da('0x45'),_0x52da('0x46'),'ownerid',_0x52da('0x47'),_0x52da('0x48'),_0x52da('0x49'),'regardingobjectid',_0x52da('0x4a'),'phonecall_activity_parties'];var _0x2d3bde=[_0x52da('0x4b'),'accountidyominame',_0x52da('0x4c'),_0x52da('0x4d'),'contactidname',_0x52da('0x4e'),_0x52da('0x4f'),'contractidname',_0x52da('0x50'),_0x52da('0x51'),_0x52da('0x52'),'createdbyyominame','createdon','createdonbehalfbyname',_0x52da('0x53'),_0x52da('0x54'),_0x52da('0x55'),'customeridyominame','emailaddress','entitlementidname','entityimage_timestamp',_0x52da('0x56'),_0x52da('0x57'),'exchangerate',_0x52da('0x58'),_0x52da('0x59'),_0x52da('0x5a'),_0x52da('0x5b'),_0x52da('0x5c'),_0x52da('0x5d'),_0x52da('0x5e'),_0x52da('0x5f'),'modifiedbyexternalpartyyominame','modifiedbyname',_0x52da('0x60'),_0x52da('0x61'),_0x52da('0x62'),_0x52da('0x63'),'msdyn_incidenttypename',_0x52da('0x64'),'numberofchildincidents',_0x52da('0x65'),_0x52da('0x66'),_0x52da('0x67'),'owneridtype',_0x52da('0x68'),_0x52da('0x69'),_0x52da('0x6a'),_0x52da('0x6b'),_0x52da('0x6c'),_0x52da('0x6d'),_0x52da('0x6e'),'resolveby','resolvebykpiidname',_0x52da('0x6f'),'responsiblecontactidname',_0x52da('0x70'),'sentimentvalue',_0x52da('0x71'),'slaname',_0x52da('0x72'),_0x52da('0x73'),'statuscode',_0x52da('0x74'),_0x52da('0x75'),_0x52da('0x76'),'transactioncurrencyidname','traversedpath',_0x52da('0x77'),_0x52da('0x78')];var _0x5962f4=_0x2a6ab5[_0x52da('0x79')](_0x2d3bde);return db['Dynamics365Account'][_0x52da('0x37')]({'where':{'id':_0x29ba56[_0x52da('0x2e')]['id']},'attributes':['id',_0x52da('0x7a'),_0x52da('0x7b'),_0x52da('0x7c'),_0x52da('0x7d'),_0x52da('0x7e'),'clientSecret',_0x52da('0x7f')],'include':[{'model':db[_0x52da('0x80')],'as':_0x52da('0x80'),'attributes':['id',_0x52da('0x81'),_0x52da('0x82')]}]})[_0x52da('0xd')](handleEntityNotFound(_0x2d7c65,null))[_0x52da('0xd')](function(_0x1dfe66){if(_0x1dfe66){if(_0x1dfe66[_0x52da('0x7f')]){_0x1dfe66[_0x52da('0x83')]=_0x1dfe66['CloudProvider'][_0x52da('0x81')];_0x169273=sanitizeRemoteUri(_0x1dfe66[_0x52da('0x80')][_0x52da('0x82')]);_0x376437=getWebApiUrl(_0x169273);return _0x1dfe66;}_0x169273=sanitizeRemoteUri(_0x1dfe66['remoteUri']);_0x376437=getWebApiUrl(_0x169273);var _0x551b0b={'method':_0x52da('0x84'),'uri':_0x52da('0x85')+_0x1dfe66['tenantId']+_0x52da('0x86'),'form':{'client_id':_0x1dfe66['clientId'],'resource':_0x169273,'username':_0x1dfe66[_0x52da('0x7a')],'password':_0x1dfe66[_0x52da('0x7b')],'grant_type':_0x52da('0x7b'),'client_secret':_0x1dfe66[_0x52da('0x87')]},'json':!![]};return rp(_0x551b0b);}})[_0x52da('0xd')](function(_0x5e4bc2){_0x1629cb=_0x5e4bc2[_0x52da('0x83')];var _0x5f498f={'method':'GET','uri':encodeURI(_0x376437+_0x52da('0x88')+_0x1ccca8+'\x27'),'headers':{'Authorization':_0x52da('0x89')+_0x1629cb,'If-None-Match':null,'OData-Version':_0x52da('0x8a')},'json':!![]};return rp(_0x5f498f);})[_0x52da('0xd')](function(_0x21fe2d){var _0x3b635f=_0x21fe2d[_0x52da('0x8b')][0x0];var _0x1abd0c=_0x3b635f[_0x52da('0x8c')];var _0x25324f={'method':_0x52da('0x8d'),'uri':_0x376437+_0x52da('0x8e')+_0x1abd0c+_0x52da('0x8f'),'headers':{'Authorization':_0x52da('0x89')+_0x1629cb,'If-None-Match':null,'OData-Version':_0x52da('0x8a')},'json':!![]};return rp(_0x25324f);})[_0x52da('0xd')](function(_0x2ee2f5){_0xbb5e96=_0x2ee2f5;_0x29c510=_0xbb5e96['Attributes'];_0x29c510=_['remove'](_0x29c510,function(_0x23f059){return!_0x5962f4['includes'](_0x23f059[_0x52da('0x90')]);});var _0x3a6e3c=[];var _0x1ad19e=[];_0x29c510[_0x52da('0x91')](function(_0x5e3eee){if(_0x5e3eee['@odata.type']){var _0x3255bc=_0x5e3eee[_0x52da('0x92')][_0x52da('0x3e')](_0x5e3eee['@odata.type'][_0x52da('0x93')]('.')+0x1);if(_0x3255bc===_0x52da('0x94')){_0x3a6e3c[_0x52da('0x95')](getSelectList(_0x376437,_0x27676d,_0x1ad19e,_0xbb5e96[_0x52da('0x8c')],_0x5e3eee[_0x52da('0x8c')],_0x1629cb));}}});return Promise[_0x52da('0x96')](_0x3a6e3c);})['then'](function(_0x4b1f0a){_0x37a122=_0x4b1f0a[0x0];var _0x100ff6=[];var _0x2a6cbf=[];_0x29c510[_0x52da('0x91')](function(_0x204d4c){if(!_['isNil'](_0x204d4c['@odata.type'])){var _0x41d50d=_0x204d4c[_0x52da('0x92')][_0x52da('0x3e')](_0x204d4c['@odata.type'][_0x52da('0x93')]('.')+0x1);if(_0x41d50d===_0x52da('0x97')){_0x100ff6['push'](getBooleanList(_0x376437,_0x27676d,_0x2a6cbf,_0xbb5e96[_0x52da('0x8c')],_0x204d4c['MetadataId'],_0x1629cb));}}});return Promise['all'](_0x100ff6);})[_0x52da('0xd')](function(_0x2dd70c){_0x350c23=_0x2dd70c[0x0];var _0x42117a=[];var _0x4c1a59=[];_0x29c510[_0x52da('0x91')](function(_0x39eb43){if(_0x39eb43[_0x52da('0x92')]){var _0x1c7e7f=_0x39eb43[_0x52da('0x92')][_0x52da('0x3e')](_0x39eb43[_0x52da('0x92')][_0x52da('0x93')]('.')+0x1);if(_0x1c7e7f===_0x52da('0x98')||_0x1c7e7f===_0x52da('0x99')||_0x1c7e7f===_0x52da('0x9a')||_0x1c7e7f==='IntegerAttributeMetadata'||_0x1c7e7f===_0x52da('0x9b')||_0x1c7e7f==='DateTimeAttributeMetadata'||_0x1c7e7f===_0x52da('0x9c')||_0x1c7e7f===_0x52da('0x9d')||_0x1c7e7f==='StateAttributeMetadata'||_0x1c7e7f===_0x52da('0x9e')){_0x42117a[_0x52da('0x95')](getInputList(_0x376437,_0x27676d,_0x1c7e7f,_0x4c1a59,_0xbb5e96['MetadataId'],_0x39eb43['MetadataId'],_0x1629cb));}}});return Promise[_0x52da('0x96')](_0x42117a);})['then'](function(_0x4efd1b){_0x9d8a6c=_0x4efd1b[0x0];var _0x2f004d=_0x37a122['concat'](_0x350c23)['concat'](_0x9d8a6c);var _0x5e007e={'count':_0x2f004d['length'],'rows':_0x2f004d};return _0x5e007e;})[_0x52da('0xd')](respondWithResult(_0x2d7c65,null))['catch'](function(_0xa82f92){var _0x5c0197=_0x29ba56[_0x52da('0x1c')][_0x52da('0x9f')]?0x1f4:_0xa82f92[_0x52da('0xa0')]||0x1f4;logger[_0x52da('0x11')](_0xa82f92[_0x52da('0xa1')]);delete _0xa82f92[_0x52da('0x12')];if(_0x5c0197===0x191){_0x5c0197=0x190;}_0x2d7c65[_0x52da('0xf')](_0x5c0197)[_0x52da('0x13')](_0x29ba56[_0x52da('0x1c')][_0x52da('0x9f')]?{'message':_0x52da('0xa2'),'statusCode':_0xa82f92[_0x52da('0xa0')]}:_0xa82f92);});};function getSelectList(_0x5a29f7,_0x5bbdce,_0x249ecf,_0x447e47,_0x346a14,_0x2831f0){var _0x1653f8={'method':_0x52da('0x8d'),'uri':_0x5a29f7+'EntityDefinitions('+_0x447e47+_0x52da('0xa3')+_0x346a14+_0x52da('0xa4')+_0x52da('0xa5'),'headers':{'Authorization':_0x52da('0x89')+_0x2831f0,'If-None-Match':null,'OData-Version':_0x52da('0x8a')},'json':!![]};return rp(_0x1653f8)[_0x52da('0xd')](function(_0x51bc08){var _0x45a954=[];var _0x221468=_0x51bc08['OptionSet'][_0x52da('0xa6')];_0x221468[_0x52da('0x91')](function(_0xd80837){_0x45a954[_0x52da('0x95')]({'name':_0xd80837[_0x52da('0xa7')][_0x52da('0xa8')][_0x52da('0xa7')],'value':String(_0xd80837[_0x52da('0xa9')])});});var _0x3e2b67={'id':_0x5bbdce+'_'+_0x51bc08['LogicalName'],'name':_0x51bc08[_0x52da('0xaa')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x45a954};_0x249ecf[_0x52da('0x95')](_0x3e2b67);return _0x249ecf;});}function getBooleanList(_0x56eeca,_0x5cb71d,_0x5f0506,_0x44accc,_0x40c46c,_0x5017de){var _0x5b5c48={'method':'GET','uri':_0x56eeca+'EntityDefinitions('+_0x44accc+_0x52da('0xa3')+_0x40c46c+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x52da('0x89')+_0x5017de,'If-None-Match':null,'OData-Version':_0x52da('0x8a')},'json':!![]};return rp(_0x5b5c48)[_0x52da('0xd')](function(_0xe39c22){var _0x32a859=[];_0x32a859['push']({'name':_0xe39c22[_0x52da('0xab')]['TrueOption'][_0x52da('0xa7')][_0x52da('0xa8')]['Label'],'value':_0x52da('0xac')},{'name':_0xe39c22['OptionSet'][_0x52da('0xad')]['Label'][_0x52da('0xa8')][_0x52da('0xa7')],'value':_0x52da('0xae')});var _0x540751={'id':_0x5cb71d+'_'+_0xe39c22[_0x52da('0x90')],'name':_0xe39c22[_0x52da('0xaa')][_0x52da('0xa8')][_0x52da('0xa7')],'custom':![],'options':_0x32a859};_0x5f0506['push'](_0x540751);return _0x5f0506;});}function getInputList(_0x330f8a,_0x10cb21,_0x3edef3,_0x21fb1a,_0x4e2642,_0xb6eb1d,_0x2dceed){var _0x36ec0b={'method':_0x52da('0x8d'),'uri':_0x330f8a+_0x52da('0x8e')+_0x4e2642+')/Attributes('+_0xb6eb1d+')/Microsoft.Dynamics.CRM.'+_0x3edef3+_0x52da('0xaf'),'headers':{'Authorization':_0x52da('0x89')+_0x2dceed,'If-None-Match':null,'OData-Version':_0x52da('0x8a')},'json':!![]};return rp(_0x36ec0b)['then'](function(_0x5ddc8f){var _0x226d9a={'id':_0x10cb21+'_'+_0x5ddc8f[_0x52da('0x90')],'name':_0x5ddc8f[_0x52da('0xaa')][_0x52da('0xa8')]?_0x5ddc8f[_0x52da('0xaa')][_0x52da('0xa8')][_0x52da('0xa7')]:_0x5ddc8f[_0x52da('0x90')],'custom':![],'options':[]};_0x21fb1a[_0x52da('0x95')](_0x226d9a);return _0x21fb1a;});}
\ No newline at end of file
+var _0xe802=['fields','hasOwnProperty','nolimit','order','where','pick','filter','map','VIRTUAL','merge','options','Dynamics365Account','findAll','show','params','keys','includeAll','include','find','catch','create','body','destroy','getConfigurations','Dynamics365Configuration','length','sort','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','slice','format','incident','Incident','PhoneCall','description','caseorigincode','subject','directioncode','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','escalatedon','firstresponsebykpiidname','followupby','influencescore','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedonbehalfbyname','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','sentimentvalue','slaname','socialprofileidname','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','versionnumber','concat','username','password','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','tenantId','/oauth2/token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','remove','includes','@odata.type','substring','PicklistAttributeMetadata','push','forEach','isNil','lastIndexOf','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','all','test','stack','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','UserLocalizedLabel','Value','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','../../components/parsers/qs','../../config/logger','api','../../mysqldb','json','offset','undefined','limit','count','status','set','Content-Range','update','then','end','error','name','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes'];(function(_0x1fa16f,_0x14373c){var _0x5e15a1=function(_0x509320){while(--_0x509320){_0x1fa16f['push'](_0x1fa16f['shift']());}};_0x5e15a1(++_0x14373c);}(_0xe802,0x97));var _0x2e80=function(_0x32ef14,_0x1e6822){_0x32ef14=_0x32ef14-0x0;var _0x567f79=_0xe802[_0x32ef14];return _0x567f79;};'use strict';var rp=require('request-promise');var util=require(_0x2e80('0x0'));var _=require('lodash');var qs=require(_0x2e80('0x1'));var logger=require(_0x2e80('0x2'))(_0x2e80('0x3'));var db=require(_0x2e80('0x4'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0xe5ea04,_0x2c7798){_0x2c7798=_0x2c7798||0xc8;return function(_0x1e3b68){if(_0x1e3b68){return _0xe5ea04['status'](_0x2c7798)[_0x2e80('0x5')](_0x1e3b68);}};}function respondWithFilteredResult(_0x79b44a,_0x1f6242){return function(_0x1c218e){if(_0x1c218e){var _0x228f1c=typeof _0x1f6242[_0x2e80('0x6')]===_0x2e80('0x7')&&typeof _0x1f6242[_0x2e80('0x8')]===_0x2e80('0x7');var _0x58a95f=_0x1c218e[_0x2e80('0x9')];var _0x2423bf=_0x228f1c?0x0:_0x1f6242['offset'];var _0x3d3181=_0x228f1c?_0x1c218e[_0x2e80('0x9')]:_0x1f6242[_0x2e80('0x6')]+_0x1f6242[_0x2e80('0x8')];var _0x9d3613;if(_0x3d3181>=_0x58a95f){_0x3d3181=_0x58a95f;_0x9d3613=0xc8;}else{_0x9d3613=0xce;}_0x79b44a[_0x2e80('0xa')](_0x9d3613);return _0x79b44a[_0x2e80('0xb')](_0x2e80('0xc'),_0x2423bf+'-'+_0x3d3181+'/'+_0x58a95f)[_0x2e80('0x5')](_0x1c218e);}return null;};}function saveUpdates(_0x95bdb8){return function(_0xc435fa){if(_0xc435fa){return _0xc435fa[_0x2e80('0xd')](_0x95bdb8)['then'](function(_0x3eaa53){return _0x3eaa53;});}return null;};}function removeEntity(_0x279f48){return function(_0x4801a0){if(_0x4801a0){return _0x4801a0['destroy']()[_0x2e80('0xe')](function(){_0x279f48[_0x2e80('0xa')](0xcc)[_0x2e80('0xf')]();});}};}function handleEntityNotFound(_0x14589d){return function(_0xe4ad41){if(!_0xe4ad41){_0x14589d['sendStatus'](0x194);}return _0xe4ad41;};}function handleError(_0x474cc6,_0x225b5e){_0x225b5e=_0x225b5e||0x1f4;return function(_0x13ad4d){logger[_0x2e80('0x10')](_0x13ad4d['stack']);if(_0x13ad4d[_0x2e80('0x11')]){delete _0x13ad4d[_0x2e80('0x11')];}_0x474cc6[_0x2e80('0xa')](_0x225b5e)['send'](_0x13ad4d);};}exports[_0x2e80('0x12')]=function(_0x53c6e6,_0x4590cf){var _0x2511ad={},_0x1401f2={},_0x1fe616={'count':0x0,'rows':[]};var _0x1c175a=_['map'](db['Dynamics365Account'][_0x2e80('0x13')],function(_0x5f1535){return{'name':_0x5f1535[_0x2e80('0x14')],'type':_0x5f1535[_0x2e80('0x15')][_0x2e80('0x16')]};});_0x1401f2[_0x2e80('0x17')]=_['map'](_0x1c175a,_0x2e80('0x11'));_0x1401f2[_0x2e80('0x18')]=_['keys'](_0x53c6e6[_0x2e80('0x18')]);_0x1401f2[_0x2e80('0x19')]=_[_0x2e80('0x1a')](_0x1401f2['model'],_0x1401f2[_0x2e80('0x18')]);_0x2511ad[_0x2e80('0x1b')]=_['intersection'](_0x1401f2['model'],qs[_0x2e80('0x1c')](_0x53c6e6[_0x2e80('0x18')]['fields']));_0x2511ad[_0x2e80('0x1b')]=_0x2511ad[_0x2e80('0x1b')]['length']?_0x2511ad[_0x2e80('0x1b')]:_0x1401f2[_0x2e80('0x17')];if(!_0x53c6e6['query'][_0x2e80('0x1d')](_0x2e80('0x1e'))){_0x2511ad[_0x2e80('0x8')]=qs[_0x2e80('0x8')](_0x53c6e6[_0x2e80('0x18')][_0x2e80('0x8')]);_0x2511ad['offset']=qs['offset'](_0x53c6e6[_0x2e80('0x18')][_0x2e80('0x6')]);}_0x2511ad[_0x2e80('0x1f')]=qs['sort'](_0x53c6e6[_0x2e80('0x18')]['sort']);_0x2511ad[_0x2e80('0x20')]=qs[_0x2e80('0x19')](_[_0x2e80('0x21')](_0x53c6e6['query'],_0x1401f2[_0x2e80('0x19')]),_0x1c175a);if(_0x53c6e6[_0x2e80('0x18')][_0x2e80('0x22')]){_0x2511ad['where']=_['merge'](_0x2511ad['where'],{'$or':_[_0x2e80('0x23')](_0x1c175a,function(_0x27e302){if(_0x27e302[_0x2e80('0x15')]!==_0x2e80('0x24')){var _0x21783c={};_0x21783c[_0x27e302[_0x2e80('0x11')]]={'$like':'%'+_0x53c6e6[_0x2e80('0x18')][_0x2e80('0x22')]+'%'};return _0x21783c;}})});}_0x2511ad=_[_0x2e80('0x25')]({},_0x2511ad,_0x53c6e6[_0x2e80('0x26')]);var _0x389b9a={'where':_0x2511ad[_0x2e80('0x20')]};return db[_0x2e80('0x27')][_0x2e80('0x9')](_0x389b9a)[_0x2e80('0xe')](function(_0x502a24){_0x1fe616[_0x2e80('0x9')]=_0x502a24;if(_0x53c6e6[_0x2e80('0x18')]['includeAll']){_0x2511ad['include']=[{'all':!![]}];}return db[_0x2e80('0x27')][_0x2e80('0x28')](_0x2511ad);})[_0x2e80('0xe')](function(_0x1608a9){_0x1fe616['rows']=_0x1608a9;return _0x1fe616;})[_0x2e80('0xe')](respondWithFilteredResult(_0x4590cf,_0x2511ad))['catch'](handleError(_0x4590cf,null));};exports[_0x2e80('0x29')]=function(_0x108183,_0xd6cd35){var _0x243f13={'raw':![],'where':{'id':_0x108183[_0x2e80('0x2a')]['id']}},_0x211031={};_0x211031[_0x2e80('0x17')]=_[_0x2e80('0x2b')](db[_0x2e80('0x27')]['rawAttributes']);_0x211031[_0x2e80('0x18')]=_['keys'](_0x108183['query']);_0x211031[_0x2e80('0x19')]=_['intersection'](_0x211031[_0x2e80('0x17')],_0x211031['query']);_0x243f13[_0x2e80('0x1b')]=_['intersection'](_0x211031['model'],qs['fields'](_0x108183[_0x2e80('0x18')][_0x2e80('0x1c')]));_0x243f13[_0x2e80('0x1b')]=_0x243f13[_0x2e80('0x1b')]['length']?_0x243f13[_0x2e80('0x1b')]:_0x211031[_0x2e80('0x17')];if(_0x108183[_0x2e80('0x18')][_0x2e80('0x2c')]){_0x243f13[_0x2e80('0x2d')]=[{'all':!![]}];}_0x243f13=_[_0x2e80('0x25')]({},_0x243f13,_0x108183[_0x2e80('0x26')]);return db[_0x2e80('0x27')][_0x2e80('0x2e')](_0x243f13)[_0x2e80('0xe')](handleEntityNotFound(_0xd6cd35,null))[_0x2e80('0xe')](respondWithResult(_0xd6cd35,null))[_0x2e80('0x2f')](handleError(_0xd6cd35,null));};exports[_0x2e80('0x30')]=function(_0x9d0132,_0x44efdf){return db[_0x2e80('0x27')]['create'](_0x9d0132[_0x2e80('0x31')],{})[_0x2e80('0xe')](respondWithResult(_0x44efdf,0xc9))[_0x2e80('0x2f')](handleError(_0x44efdf,null));};exports['update']=function(_0x504a56,_0x25128f){if(_0x504a56['body']['id']){delete _0x504a56[_0x2e80('0x31')]['id'];}return db['Dynamics365Account'][_0x2e80('0x2e')]({'where':{'id':_0x504a56[_0x2e80('0x2a')]['id']}})[_0x2e80('0xe')](handleEntityNotFound(_0x25128f,null))['then'](saveUpdates(_0x504a56['body'],null))['then'](respondWithResult(_0x25128f,null))[_0x2e80('0x2f')](handleError(_0x25128f,null));};exports[_0x2e80('0x32')]=function(_0x346e7a,_0x382b90){return db[_0x2e80('0x27')][_0x2e80('0x2e')]({'where':{'id':_0x346e7a[_0x2e80('0x2a')]['id']}})[_0x2e80('0xe')](handleEntityNotFound(_0x382b90,null))[_0x2e80('0xe')](removeEntity(_0x382b90,null))[_0x2e80('0x2f')](handleError(_0x382b90,null));};exports[_0x2e80('0x33')]=function(_0x2396d1,_0x35b680){var _0x21c179={};var _0x28613e={};var _0x290a2d;var _0x15f3b5;return db[_0x2e80('0x27')]['findOne']({'where':{'id':_0x2396d1[_0x2e80('0x2a')]['id']}})[_0x2e80('0xe')](handleEntityNotFound(_0x35b680,null))[_0x2e80('0xe')](function(_0x567d1b){if(_0x567d1b){_0x290a2d=_0x567d1b;_0x28613e[_0x2e80('0x17')]=_[_0x2e80('0x2b')](db[_0x2e80('0x34')]['rawAttributes']);_0x28613e[_0x2e80('0x18')]=_['keys'](_0x2396d1['query']);_0x28613e['filters']=_[_0x2e80('0x1a')](_0x28613e[_0x2e80('0x17')],_0x28613e[_0x2e80('0x18')]);_0x21c179[_0x2e80('0x1b')]=_[_0x2e80('0x1a')](_0x28613e['model'],qs[_0x2e80('0x1c')](_0x2396d1[_0x2e80('0x18')][_0x2e80('0x1c')]));_0x21c179['attributes']=_0x21c179['attributes'][_0x2e80('0x35')]?_0x21c179[_0x2e80('0x1b')]:_0x28613e[_0x2e80('0x17')];_0x21c179[_0x2e80('0x1f')]=qs[_0x2e80('0x36')](_0x2396d1['query'][_0x2e80('0x36')]);_0x21c179[_0x2e80('0x20')]=qs['filters'](_['pick'](_0x2396d1[_0x2e80('0x18')],_0x28613e[_0x2e80('0x19')]));if(_0x2396d1[_0x2e80('0x18')][_0x2e80('0x22')]){_0x21c179[_0x2e80('0x20')]=_[_0x2e80('0x25')](_0x21c179[_0x2e80('0x20')],{'$or':_['map'](_0x21c179[_0x2e80('0x1b')],function(_0x1e1231){var _0x45a420={};_0x45a420[_0x1e1231]={'$like':'%'+_0x2396d1[_0x2e80('0x18')]['filter']+'%'};return _0x45a420;})});}_0x21c179=_[_0x2e80('0x25')]({},_0x21c179,_0x2396d1[_0x2e80('0x26')]);return _0x290a2d[_0x2e80('0x33')](_0x21c179);}})[_0x2e80('0xe')](function(_0x45193e){if(_0x45193e){_0x15f3b5=_0x45193e['length'];if(!_0x2396d1['query']['hasOwnProperty']('nolimit')){_0x21c179['limit']=qs[_0x2e80('0x8')](_0x2396d1['query'][_0x2e80('0x8')]);_0x21c179[_0x2e80('0x6')]=qs[_0x2e80('0x6')](_0x2396d1[_0x2e80('0x18')]['offset']);}return _0x290a2d[_0x2e80('0x33')](_0x21c179);}})[_0x2e80('0xe')](function(_0xe6e18c){if(_0xe6e18c){return _0xe6e18c?{'count':_0x15f3b5,'rows':_0xe6e18c}:null;}})[_0x2e80('0xe')](respondWithResult(_0x35b680,null))[_0x2e80('0x2f')](handleError(_0x35b680,null));};exports[_0x2e80('0x37')]=function(_0x170a46,_0x141449){if(_0x170a46['body']['id']){delete _0x170a46['body']['id'];}return db[_0x2e80('0x27')][_0x2e80('0x38')]({'where':{'id':_0x170a46[_0x2e80('0x2a')]['id']}})[_0x2e80('0xe')](handleEntityNotFound(_0x141449,null))[_0x2e80('0xe')](function(_0x153032){if(_0x153032){_0x170a46[_0x2e80('0x31')]['AccountId']=_0x153032['id'];_0x170a46['body'][_0x2e80('0x39')]=integrations[_0x2e80('0x3a')](_0x170a46[_0x2e80('0x31')][_0x2e80('0x3b')],_0x170a46[_0x2e80('0x31')][_0x2e80('0x15')]);_0x170a46[_0x2e80('0x31')][_0x2e80('0x3c')]=integrations[_0x2e80('0x3d')](_0x170a46['body'][_0x2e80('0x3b')],_0x170a46[_0x2e80('0x31')][_0x2e80('0x15')]);return db[_0x2e80('0x34')][_0x2e80('0x30')](_0x170a46[_0x2e80('0x31')],{'include':[{'model':db[_0x2e80('0x3e')],'as':_0x2e80('0x39')},{'model':db['Dynamics365Field'],'as':_0x2e80('0x3c')}]});}return null;})['then'](respondWithResult(_0x141449,null))['catch'](handleError(_0x141449,null));};function sanitizeRemoteUri(_0x4c0594){var _0x1eb553=_0x4c0594[_0x2e80('0x3f')](-0x1);if(_0x1eb553==='/')return _0x4c0594['substring'](0x0,_0x4c0594['lastIndexOf'](_0x1eb553));return _0x4c0594;}function getWebApiUrl(_0x44a118){return util[_0x2e80('0x40')]('%s/api/data/v9.0/',_0x44a118);}exports['getFields']=function(_0x27f903,_0x5c7ed9){var _0x5bba79=_0x27f903[_0x2e80('0x18')]['ticketType'];var _0x5bcb66=_0x5bba79===_0x2e80('0x41')?_0x2e80('0x42'):_0x2e80('0x43');var _0x3faf1a='';var _0x566513='';var _0x2095dd='';var _0x2bdd3f='';var _0x2f3eb1='';var _0xc20a23='';var _0x1e1258='';var _0x689c93='';var _0x25dcd0=['title',_0x2e80('0x44'),'customerid','ownerid',_0x2e80('0x45'),_0x2e80('0x46'),'phonenumber','regardingobjectid',_0x2e80('0x47'),'phonecall_activity_parties'];var _0x5b5f9f=[_0x2e80('0x48'),_0x2e80('0x49'),_0x2e80('0x4a'),'billedserviceunits',_0x2e80('0x4b'),_0x2e80('0x4c'),_0x2e80('0x4d'),'contractidname',_0x2e80('0x4e'),_0x2e80('0x4f'),'createdbyname',_0x2e80('0x50'),'createdon',_0x2e80('0x51'),_0x2e80('0x52'),_0x2e80('0x53'),_0x2e80('0x54'),_0x2e80('0x55'),_0x2e80('0x56'),_0x2e80('0x57'),'entityimage_timestamp','entityimage_url',_0x2e80('0x58'),'exchangerate',_0x2e80('0x59'),_0x2e80('0x5a'),'importsequencenumber',_0x2e80('0x5b'),'kbarticleidname',_0x2e80('0x5c'),'masteridname',_0x2e80('0x5d'),_0x2e80('0x5e'),_0x2e80('0x5f'),'modifiedbyyominame','modifiedon',_0x2e80('0x60'),'modifiedonbehalfbyyominame',_0x2e80('0x61'),_0x2e80('0x62'),_0x2e80('0x63'),_0x2e80('0x64'),'overriddencreatedon',_0x2e80('0x65'),_0x2e80('0x66'),_0x2e80('0x67'),_0x2e80('0x68'),_0x2e80('0x69'),'primarycontactidyominame',_0x2e80('0x6a'),_0x2e80('0x6b'),_0x2e80('0x6c'),_0x2e80('0x6d'),_0x2e80('0x6e'),_0x2e80('0x6f'),_0x2e80('0x70'),'responsiblecontactidyominame',_0x2e80('0x71'),'slainvokedidname',_0x2e80('0x72'),_0x2e80('0x73'),'statecode',_0x2e80('0x74'),'subjectidname',_0x2e80('0x75'),_0x2e80('0x76'),_0x2e80('0x77'),'traversedpath','utcconversiontimezonecode',_0x2e80('0x78')];var _0x1efb99=_0x25dcd0[_0x2e80('0x79')](_0x5b5f9f);return db[_0x2e80('0x27')]['findOne']({'where':{'id':_0x27f903[_0x2e80('0x2a')]['id']},'attributes':['id',_0x2e80('0x7a'),_0x2e80('0x7b'),'remoteUri','tenantId','clientId',_0x2e80('0x7c'),_0x2e80('0x7d')],'include':[{'model':db[_0x2e80('0x7e')],'as':'CloudProvider','attributes':['id',_0x2e80('0x7f'),_0x2e80('0x80')]}]})[_0x2e80('0xe')](handleEntityNotFound(_0x5c7ed9,null))[_0x2e80('0xe')](function(_0x3ed92c){if(_0x3ed92c){if(_0x3ed92c[_0x2e80('0x7d')]){_0x3ed92c[_0x2e80('0x81')]=_0x3ed92c[_0x2e80('0x7e')][_0x2e80('0x7f')];_0x689c93=sanitizeRemoteUri(_0x3ed92c[_0x2e80('0x7e')][_0x2e80('0x80')]);_0x1e1258=getWebApiUrl(_0x689c93);return _0x3ed92c;}_0x689c93=sanitizeRemoteUri(_0x3ed92c[_0x2e80('0x82')]);_0x1e1258=getWebApiUrl(_0x689c93);var _0x2da9d5={'method':_0x2e80('0x83'),'uri':'https://login.microsoftonline.com/'+_0x3ed92c[_0x2e80('0x84')]+_0x2e80('0x85'),'form':{'client_id':_0x3ed92c['clientId'],'resource':_0x689c93,'username':_0x3ed92c[_0x2e80('0x7a')],'password':_0x3ed92c[_0x2e80('0x7b')],'grant_type':_0x2e80('0x7b'),'client_secret':_0x3ed92c[_0x2e80('0x7c')]},'json':!![]};return rp(_0x2da9d5);}})[_0x2e80('0xe')](function(_0x45211e){_0xc20a23=_0x45211e[_0x2e80('0x81')];var _0x4ebc1b={'method':_0x2e80('0x86'),'uri':encodeURI(_0x1e1258+_0x2e80('0x87')+_0x5bcb66+'\x27'),'headers':{'Authorization':_0x2e80('0x88')+_0xc20a23,'If-None-Match':null,'OData-Version':_0x2e80('0x89')},'json':!![]};return rp(_0x4ebc1b);})['then'](function(_0x7624f4){var _0x277f7f=_0x7624f4[_0x2e80('0x8a')][0x0];var _0x5683e6=_0x277f7f[_0x2e80('0x8b')];var _0x457b65={'method':_0x2e80('0x86'),'uri':_0x1e1258+_0x2e80('0x8c')+_0x5683e6+_0x2e80('0x8d'),'headers':{'Authorization':_0x2e80('0x88')+_0xc20a23,'If-None-Match':null,'OData-Version':_0x2e80('0x89')},'json':!![]};return rp(_0x457b65);})['then'](function(_0x10fa5c){_0x3faf1a=_0x10fa5c;_0x566513=_0x3faf1a['Attributes'];_0x566513=_[_0x2e80('0x8e')](_0x566513,function(_0xfae729){return!_0x1efb99[_0x2e80('0x8f')](_0xfae729['LogicalName']);});var _0x5d1547=[];var _0x57ed28=[];_0x566513['forEach'](function(_0xabe520){if(_0xabe520[_0x2e80('0x90')]){var _0x51cdce=_0xabe520[_0x2e80('0x90')][_0x2e80('0x91')](_0xabe520[_0x2e80('0x90')]['lastIndexOf']('.')+0x1);if(_0x51cdce===_0x2e80('0x92')){_0x5d1547[_0x2e80('0x93')](getSelectList(_0x1e1258,_0x5bba79,_0x57ed28,_0x3faf1a[_0x2e80('0x8b')],_0xabe520[_0x2e80('0x8b')],_0xc20a23));}}});return Promise['all'](_0x5d1547);})['then'](function(_0x23792f){_0x2095dd=_0x23792f[0x0];var _0x27541c=[];var _0x3c6218=[];_0x566513[_0x2e80('0x94')](function(_0x491815){if(!_[_0x2e80('0x95')](_0x491815[_0x2e80('0x90')])){var _0x3c0610=_0x491815[_0x2e80('0x90')][_0x2e80('0x91')](_0x491815['@odata.type'][_0x2e80('0x96')]('.')+0x1);if(_0x3c0610===_0x2e80('0x97')){_0x27541c[_0x2e80('0x93')](getBooleanList(_0x1e1258,_0x5bba79,_0x3c6218,_0x3faf1a[_0x2e80('0x8b')],_0x491815['MetadataId'],_0xc20a23));}}});return Promise['all'](_0x27541c);})[_0x2e80('0xe')](function(_0x166b88){_0x2bdd3f=_0x166b88[0x0];var _0x4045d2=[];var _0x16d1f2=[];_0x566513['forEach'](function(_0x577484){if(_0x577484[_0x2e80('0x90')]){var _0x2c43d1=_0x577484[_0x2e80('0x90')]['substring'](_0x577484['@odata.type'][_0x2e80('0x96')]('.')+0x1);if(_0x2c43d1===_0x2e80('0x98')||_0x2c43d1===_0x2e80('0x99')||_0x2c43d1===_0x2e80('0x9a')||_0x2c43d1===_0x2e80('0x9b')||_0x2c43d1===_0x2e80('0x9c')||_0x2c43d1===_0x2e80('0x9d')||_0x2c43d1===_0x2e80('0x9e')||_0x2c43d1===_0x2e80('0x9f')||_0x2c43d1===_0x2e80('0xa0')||_0x2c43d1==='DecimalAttributeMetadata'){_0x4045d2[_0x2e80('0x93')](getInputList(_0x1e1258,_0x5bba79,_0x2c43d1,_0x16d1f2,_0x3faf1a[_0x2e80('0x8b')],_0x577484[_0x2e80('0x8b')],_0xc20a23));}}});return Promise[_0x2e80('0xa1')](_0x4045d2);})[_0x2e80('0xe')](function(_0x348901){_0x2f3eb1=_0x348901[0x0];var _0x4fef52=_0x2095dd[_0x2e80('0x79')](_0x2bdd3f)['concat'](_0x2f3eb1);var _0xf6db11={'count':_0x4fef52['length'],'rows':_0x4fef52};return _0xf6db11;})[_0x2e80('0xe')](respondWithResult(_0x5c7ed9,null))['catch'](function(_0x54e6f6){var _0x2618bf=_0x27f903[_0x2e80('0x18')][_0x2e80('0xa2')]?0x1f4:_0x54e6f6['statusCode']||0x1f4;logger[_0x2e80('0x10')](_0x54e6f6[_0x2e80('0xa3')]);delete _0x54e6f6[_0x2e80('0x11')];if(_0x2618bf===0x191){_0x2618bf=0x190;}_0x5c7ed9[_0x2e80('0xa')](_0x2618bf)['send'](_0x27f903[_0x2e80('0x18')][_0x2e80('0xa2')]?{'message':'Wrong\x20credentials','statusCode':_0x54e6f6[_0x2e80('0xa4')]}:_0x54e6f6);});};function getSelectList(_0x5dc7a6,_0x4a4bf0,_0x4fc01d,_0x5bc029,_0x231cd6,_0x330427){var _0x500e63={'method':_0x2e80('0x86'),'uri':_0x5dc7a6+_0x2e80('0x8c')+_0x5bc029+_0x2e80('0xa5')+_0x231cd6+_0x2e80('0xa6')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x2e80('0x88')+_0x330427,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x500e63)[_0x2e80('0xe')](function(_0x490dce){var _0x1aa11b=[];var _0x52b1e8=_0x490dce[_0x2e80('0xa7')][_0x2e80('0xa8')];_0x52b1e8['forEach'](function(_0x120523){_0x1aa11b[_0x2e80('0x93')]({'name':_0x120523[_0x2e80('0xa9')][_0x2e80('0xaa')][_0x2e80('0xa9')],'value':String(_0x120523[_0x2e80('0xab')])});});var _0x553fbe={'id':_0x4a4bf0+'_'+_0x490dce[_0x2e80('0xac')],'name':_0x490dce[_0x2e80('0xad')][_0x2e80('0xaa')][_0x2e80('0xa9')],'custom':![],'options':_0x1aa11b};_0x4fc01d[_0x2e80('0x93')](_0x553fbe);return _0x4fc01d;});}function getBooleanList(_0x5c6d3e,_0x4e49e4,_0x11d676,_0x197d96,_0x9a0122,_0x5e24ab){var _0x4d36da={'method':_0x2e80('0x86'),'uri':_0x5c6d3e+'EntityDefinitions('+_0x197d96+_0x2e80('0xa5')+_0x9a0122+_0x2e80('0xae'),'headers':{'Authorization':_0x2e80('0x88')+_0x5e24ab,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4d36da)[_0x2e80('0xe')](function(_0x11561c){var _0x184283=[];_0x184283[_0x2e80('0x93')]({'name':_0x11561c[_0x2e80('0xa7')][_0x2e80('0xaf')][_0x2e80('0xa9')][_0x2e80('0xaa')][_0x2e80('0xa9')],'value':_0x2e80('0xb0')},{'name':_0x11561c['OptionSet']['FalseOption'][_0x2e80('0xa9')][_0x2e80('0xaa')]['Label'],'value':'false'});var _0x539859={'id':_0x4e49e4+'_'+_0x11561c[_0x2e80('0xac')],'name':_0x11561c['DisplayName']['UserLocalizedLabel'][_0x2e80('0xa9')],'custom':![],'options':_0x184283};_0x11d676[_0x2e80('0x93')](_0x539859);return _0x11d676;});}function getInputList(_0x260872,_0x4a4fe1,_0x480e18,_0x3e6733,_0x2a006e,_0xc64bae,_0x7677ad){var _0x45af00={'method':_0x2e80('0x86'),'uri':_0x260872+_0x2e80('0x8c')+_0x2a006e+')/Attributes('+_0xc64bae+_0x2e80('0xb1')+_0x480e18+_0x2e80('0xb2'),'headers':{'Authorization':_0x2e80('0x88')+_0x7677ad,'If-None-Match':null,'OData-Version':_0x2e80('0x89')},'json':!![]};return rp(_0x45af00)[_0x2e80('0xe')](function(_0x403927){var _0x4ea738={'id':_0x4a4fe1+'_'+_0x403927[_0x2e80('0xac')],'name':_0x403927['DisplayName'][_0x2e80('0xaa')]?_0x403927[_0x2e80('0xad')][_0x2e80('0xaa')][_0x2e80('0xa9')]:_0x403927[_0x2e80('0xac')],'custom':![],'options':[]};_0x3e6733[_0x2e80('0x93')](_0x4ea738);return _0x3e6733;});}
\ No newline at end of file
index 665a36e..fa913dd 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(_0x7cf264,_0x1c0055){var _0x1b7262=function(_0x1f8f7f){while(--_0x1f8f7f){_0x7cf264['push'](_0x7cf264['shift']());}};_0x1b7262(++_0x1c0055);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'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 _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x17e7fd,_0x53bcab){var _0x514a1a=function(_0x3bb91c){while(--_0x3bb91c){_0x17e7fd['push'](_0x17e7fd['shift']());}};_0x514a1a(++_0x53bcab);}(_0x757a,0xde));var _0xa757=function(_0x38e2d8,_0x3e3614){_0x38e2d8=_0x38e2d8-0x0;var _0x25191c=_0x757a[_0x38e2d8];return _0x25191c;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 326341e..ff65f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf1=['include','map','model','debug','catch','find','raw','ShowDynamics365Account','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetDynamics365Account','findAll','options','where','attributes','limit'];(function(_0x4260f3,_0x4988d6){var _0x31b726=function(_0x5a5513){while(--_0x5a5513){_0x4260f3['push'](_0x4260f3['shift']());}};_0x31b726(++_0x4988d6);}(_0xecf1,0x71));var _0x1ecf=function(_0x1e05c1,_0x3cffa3){_0x1e05c1=_0x1e05c1-0x0;var _0x15f1ca=_0xecf1[_0x1e05c1];return _0x15f1ca;};'use strict';var _=require(_0x1ecf('0x0'));var util=require(_0x1ecf('0x1'));var moment=require(_0x1ecf('0x2'));var BPromise=require(_0x1ecf('0x3'));var rs=require(_0x1ecf('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1ecf('0x5'))['db'];var utils=require(_0x1ecf('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x1ecf('0x7'));var jayson=require(_0x1ecf('0x8'));var client=jayson[_0x1ecf('0x9')][_0x1ecf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30b471,_0x1f2321,_0x44b5b8){return new BPromise(function(_0x4e9e74,_0x2839e6){return client['request'](_0x30b471,_0x44b5b8)[_0x1ecf('0xb')](function(_0x9f0262){logger[_0x1ecf('0xc')](_0x1ecf('0xd'),_0x1f2321,_0x1ecf('0xe'));logger['debug'](_0x1ecf('0xf'),_0x1f2321,_0x1ecf('0xe'),JSON[_0x1ecf('0x10')](_0x9f0262));if(_0x9f0262[_0x1ecf('0x11')]){if(_0x9f0262[_0x1ecf('0x11')][_0x1ecf('0x12')]===0x1f4){logger['error'](_0x1ecf('0xd'),_0x1f2321,_0x9f0262[_0x1ecf('0x11')][_0x1ecf('0x13')]);return _0x2839e6(_0x9f0262['error'][_0x1ecf('0x13')]);}logger[_0x1ecf('0x11')](_0x1ecf('0xd'),_0x1f2321,_0x9f0262['error'][_0x1ecf('0x13')]);return _0x4e9e74(_0x9f0262[_0x1ecf('0x11')][_0x1ecf('0x13')]);}else{logger[_0x1ecf('0xc')](_0x1ecf('0xd'),_0x1f2321,_0x1ecf('0xe'));_0x4e9e74(_0x9f0262[_0x1ecf('0x14')][_0x1ecf('0x13')]);}})['catch'](function(_0xf9d481){logger['error'](_0x1ecf('0xd'),_0x1f2321,_0xf9d481);_0x2839e6(_0xf9d481);});});}exports[_0x1ecf('0x15')]=function(_0x1afb96){var _0x2f7360=this;return new Promise(function(_0x43aa2b,_0xf7628b){return db['Dynamics365Account'][_0x1ecf('0x16')]({'raw':_0x1afb96[_0x1ecf('0x17')]?_0x1afb96[_0x1ecf('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x1afb96[_0x1ecf('0x17')]?_0x1afb96[_0x1ecf('0x17')][_0x1ecf('0x18')]||null:null,'attributes':_0x1afb96[_0x1ecf('0x17')]?_0x1afb96[_0x1ecf('0x17')][_0x1ecf('0x19')]||null:null,'limit':_0x1afb96[_0x1ecf('0x17')]?_0x1afb96[_0x1ecf('0x17')][_0x1ecf('0x1a')]||null:null,'include':_0x1afb96[_0x1ecf('0x17')]?_0x1afb96['options'][_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x1afb96[_0x1ecf('0x17')]['include'],function(_0x2a2d28){return{'model':db[_0x2a2d28[_0x1ecf('0x1d')]],'as':_0x2a2d28['as'],'attributes':_0x2a2d28[_0x1ecf('0x19')],'include':_0x2a2d28[_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x2a2d28[_0x1ecf('0x1b')],function(_0x430dac){return{'model':db[_0x430dac[_0x1ecf('0x1d')]],'as':_0x430dac['as'],'attributes':_0x430dac[_0x1ecf('0x19')],'include':_0x430dac[_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x430dac[_0x1ecf('0x1b')],function(_0x466b13){return{'model':db[_0x466b13[_0x1ecf('0x1d')]],'as':_0x466b13['as'],'attributes':_0x466b13[_0x1ecf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1ecf('0xb')](function(_0x3cd462){logger[_0x1ecf('0xc')](_0x1ecf('0x15'),_0x1afb96);logger[_0x1ecf('0x1e')](_0x1ecf('0x15'),_0x1afb96,JSON[_0x1ecf('0x10')](_0x3cd462));_0x43aa2b(_0x3cd462);})[_0x1ecf('0x1f')](function(_0x1c14cf){logger[_0x1ecf('0x11')](_0x1ecf('0x15'),_0x1c14cf[_0x1ecf('0x13')],_0x1afb96);_0xf7628b(_0x2f7360[_0x1ecf('0x11')](0x1f4,_0x1c14cf['message']));});});};exports['ShowDynamics365Account']=function(_0x683758){var _0xad2bc1=this;return new Promise(function(_0x1844b8,_0x1aa467){return db['Dynamics365Account'][_0x1ecf('0x20')]({'raw':_0x683758[_0x1ecf('0x17')]?_0x683758[_0x1ecf('0x17')][_0x1ecf('0x21')]===undefined?!![]:![]:!![],'where':_0x683758[_0x1ecf('0x17')]?_0x683758[_0x1ecf('0x17')][_0x1ecf('0x18')]||null:null,'attributes':_0x683758[_0x1ecf('0x17')]?_0x683758[_0x1ecf('0x17')][_0x1ecf('0x19')]||null:null,'include':_0x683758['options']?_0x683758[_0x1ecf('0x17')][_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x683758['options']['include'],function(_0x2ce5c5){return{'model':db[_0x2ce5c5[_0x1ecf('0x1d')]],'as':_0x2ce5c5['as'],'attributes':_0x2ce5c5[_0x1ecf('0x19')],'include':_0x2ce5c5[_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x2ce5c5[_0x1ecf('0x1b')],function(_0x303766){return{'model':db[_0x303766[_0x1ecf('0x1d')]],'as':_0x303766['as'],'attributes':_0x303766['attributes'],'include':_0x303766[_0x1ecf('0x1b')]?_[_0x1ecf('0x1c')](_0x303766[_0x1ecf('0x1b')],function(_0x35b2d5){return{'model':db[_0x35b2d5[_0x1ecf('0x1d')]],'as':_0x35b2d5['as'],'attributes':_0x35b2d5[_0x1ecf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1ecf('0xb')](function(_0x149659){logger[_0x1ecf('0xc')](_0x1ecf('0x22'),_0x683758);logger['debug'](_0x1ecf('0x22'),_0x683758,JSON[_0x1ecf('0x10')](_0x149659));_0x1844b8(_0x149659);})['catch'](function(_0x6b7329){logger[_0x1ecf('0x11')](_0x1ecf('0x22'),_0x6b7329[_0x1ecf('0x13')],_0x683758);_0x1aa467(_0xad2bc1[_0x1ecf('0x11')](0x1f4,_0x6b7329[_0x1ecf('0x13')]));});});};
\ No newline at end of file
+var _0x4485=['include','attributes','map','model','GetDynamics365Account','debug','ShowDynamics365Account','find','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Dynamics365Account','findAll','options','raw','limit'];(function(_0x2879dc,_0x1e5b35){var _0x54864d=function(_0x46f929){while(--_0x46f929){_0x2879dc['push'](_0x2879dc['shift']());}};_0x54864d(++_0x1e5b35);}(_0x4485,0xbc));var _0x5448=function(_0x5807d4,_0x29306b){_0x5807d4=_0x5807d4-0x0;var _0x5ddf9b=_0x4485[_0x5807d4];return _0x5ddf9b;};'use strict';var _=require(_0x5448('0x0'));var util=require(_0x5448('0x1'));var moment=require('moment');var BPromise=require(_0x5448('0x2'));var rs=require(_0x5448('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5448('0x4'))['db'];var utils=require(_0x5448('0x5'));var logger=require(_0x5448('0x6'))(_0x5448('0x7'));var config=require(_0x5448('0x8'));var jayson=require(_0x5448('0x9'));var client=jayson[_0x5448('0xa')][_0x5448('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48383d,_0x326b09,_0x2519da){return new BPromise(function(_0x23cf53,_0x120483){return client['request'](_0x48383d,_0x2519da)[_0x5448('0xc')](function(_0x135567){logger[_0x5448('0xd')](_0x5448('0xe'),_0x326b09,_0x5448('0xf'));logger['debug'](_0x5448('0x10'),_0x326b09,_0x5448('0xf'),JSON[_0x5448('0x11')](_0x135567));if(_0x135567[_0x5448('0x12')]){if(_0x135567[_0x5448('0x12')][_0x5448('0x13')]===0x1f4){logger[_0x5448('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x326b09,_0x135567['error']['message']);return _0x120483(_0x135567[_0x5448('0x12')][_0x5448('0x14')]);}logger[_0x5448('0x12')](_0x5448('0xe'),_0x326b09,_0x135567[_0x5448('0x12')]['message']);return _0x23cf53(_0x135567['error'][_0x5448('0x14')]);}else{logger[_0x5448('0xd')]('Dynamics365Account,\x20%s,\x20%s',_0x326b09,_0x5448('0xf'));_0x23cf53(_0x135567[_0x5448('0x15')]['message']);}})[_0x5448('0x16')](function(_0x12f23f){logger[_0x5448('0x12')](_0x5448('0xe'),_0x326b09,_0x12f23f);_0x120483(_0x12f23f);});});}exports['GetDynamics365Account']=function(_0x584778){var _0x404d60=this;return new Promise(function(_0x16345f,_0x417b76){return db[_0x5448('0x17')][_0x5448('0x18')]({'raw':_0x584778[_0x5448('0x19')]?_0x584778['options'][_0x5448('0x1a')]===undefined?!![]:![]:!![],'where':_0x584778['options']?_0x584778[_0x5448('0x19')]['where']||null:null,'attributes':_0x584778[_0x5448('0x19')]?_0x584778[_0x5448('0x19')]['attributes']||null:null,'limit':_0x584778['options']?_0x584778['options'][_0x5448('0x1b')]||null:null,'include':_0x584778[_0x5448('0x19')]?_0x584778[_0x5448('0x19')][_0x5448('0x1c')]?_['map'](_0x584778[_0x5448('0x19')][_0x5448('0x1c')],function(_0x2b38d5){return{'model':db[_0x2b38d5['model']],'as':_0x2b38d5['as'],'attributes':_0x2b38d5[_0x5448('0x1d')],'include':_0x2b38d5[_0x5448('0x1c')]?_[_0x5448('0x1e')](_0x2b38d5[_0x5448('0x1c')],function(_0xdd0580){return{'model':db[_0xdd0580[_0x5448('0x1f')]],'as':_0xdd0580['as'],'attributes':_0xdd0580[_0x5448('0x1d')],'include':_0xdd0580[_0x5448('0x1c')]?_['map'](_0xdd0580[_0x5448('0x1c')],function(_0x886f4){return{'model':db[_0x886f4[_0x5448('0x1f')]],'as':_0x886f4['as'],'attributes':_0x886f4[_0x5448('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5448('0xc')](function(_0x4ad71a){logger['info'](_0x5448('0x20'),_0x584778);logger[_0x5448('0x21')](_0x5448('0x20'),_0x584778,JSON[_0x5448('0x11')](_0x4ad71a));_0x16345f(_0x4ad71a);})[_0x5448('0x16')](function(_0x528d37){logger[_0x5448('0x12')](_0x5448('0x20'),_0x528d37[_0x5448('0x14')],_0x584778);_0x417b76(_0x404d60[_0x5448('0x12')](0x1f4,_0x528d37['message']));});});};exports[_0x5448('0x22')]=function(_0x574ee8){var _0x1fb420=this;return new Promise(function(_0x3b5aa5,_0x4845ca){return db[_0x5448('0x17')][_0x5448('0x23')]({'raw':_0x574ee8['options']?_0x574ee8[_0x5448('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x574ee8[_0x5448('0x19')]?_0x574ee8[_0x5448('0x19')]['where']||null:null,'attributes':_0x574ee8[_0x5448('0x19')]?_0x574ee8[_0x5448('0x19')]['attributes']||null:null,'include':_0x574ee8[_0x5448('0x19')]?_0x574ee8[_0x5448('0x19')][_0x5448('0x1c')]?_[_0x5448('0x1e')](_0x574ee8[_0x5448('0x19')][_0x5448('0x1c')],function(_0x195c5b){return{'model':db[_0x195c5b[_0x5448('0x1f')]],'as':_0x195c5b['as'],'attributes':_0x195c5b[_0x5448('0x1d')],'include':_0x195c5b[_0x5448('0x1c')]?_['map'](_0x195c5b['include'],function(_0x890ff3){return{'model':db[_0x890ff3['model']],'as':_0x890ff3['as'],'attributes':_0x890ff3['attributes'],'include':_0x890ff3[_0x5448('0x1c')]?_[_0x5448('0x1e')](_0x890ff3['include'],function(_0x1f0997){return{'model':db[_0x1f0997['model']],'as':_0x1f0997['as'],'attributes':_0x1f0997[_0x5448('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5448('0xc')](function(_0x2f7acd){logger[_0x5448('0xd')]('ShowDynamics365Account',_0x574ee8);logger[_0x5448('0x21')](_0x5448('0x22'),_0x574ee8,JSON['stringify'](_0x2f7acd));_0x3b5aa5(_0x2f7acd);})[_0x5448('0x16')](function(_0x37e13b){logger[_0x5448('0x12')](_0x5448('0x22'),_0x37e13b[_0x5448('0x14')],_0x574ee8);_0x4845ca(_0x1fb420['error'](0x1f4,_0x37e13b[_0x5448('0x14')]));});});};
\ No newline at end of file
index 36aaf29..84268ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1275=['create','put','update','delete','destroy','exports','path','connect-timeout','Router','fs-extra','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','post'];(function(_0x23cd5a,_0x45de7d){var _0x4e4719=function(_0xe1ad36){while(--_0xe1ad36){_0x23cd5a['push'](_0x23cd5a['shift']());}};_0x4e4719(++_0x45de7d);}(_0x1275,0x1a8));var _0x5127=function(_0x375bf2,_0x202a98){_0x375bf2=_0x375bf2-0x0;var _0x32f802=_0x1275[_0x375bf2];return _0x32f802;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5127('0x0'));var timeout=require(_0x5127('0x1'));var express=require('express');var router=express[_0x5127('0x2')]();var fs_extra=require(_0x5127('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5127('0x4'));var controller=require(_0x5127('0x5'));router[_0x5127('0x6')]('/',auth[_0x5127('0x7')](),controller[_0x5127('0x8')]);router[_0x5127('0x6')](_0x5127('0x9'),auth['isAuthenticated'](),controller[_0x5127('0xa')]);router[_0x5127('0x6')](_0x5127('0xb'),auth[_0x5127('0x7')](),controller[_0x5127('0xc')]);router[_0x5127('0x6')]('/:id/subjects',auth[_0x5127('0x7')](),controller[_0x5127('0xd')]);router['get'](_0x5127('0xe'),auth[_0x5127('0x7')](),controller['getDescriptions']);router[_0x5127('0xf')]('/',auth[_0x5127('0x7')](),controller[_0x5127('0x10')]);router[_0x5127('0x11')](_0x5127('0x9'),auth[_0x5127('0x7')](),controller[_0x5127('0x12')]);router[_0x5127('0x13')](_0x5127('0x9'),auth[_0x5127('0x7')](),controller[_0x5127('0x14')]);module[_0x5127('0x15')]=router;
\ No newline at end of file
+var _0x7b1c=['/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','/:id','update','delete','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show'];(function(_0x5dc4c8,_0x5adb38){var _0x11777a=function(_0x290c85){while(--_0x290c85){_0x5dc4c8['push'](_0x5dc4c8['shift']());}};_0x11777a(++_0x5adb38);}(_0x7b1c,0x78));var _0xc7b1=function(_0x215f46,_0x3e625a){_0x215f46=_0x215f46-0x0;var _0x1f33f1=_0x7b1c[_0x215f46];return _0x1f33f1;};'use strict';var multer=require(_0xc7b1('0x0'));var util=require(_0xc7b1('0x1'));var path=require(_0xc7b1('0x2'));var timeout=require(_0xc7b1('0x3'));var express=require('express');var router=express[_0xc7b1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc7b1('0x5'));var interaction=require(_0xc7b1('0x6'));var config=require(_0xc7b1('0x7'));var controller=require('./intDynamics365Configuration.controller');router[_0xc7b1('0x8')]('/',auth[_0xc7b1('0x9')](),controller[_0xc7b1('0xa')]);router[_0xc7b1('0x8')]('/:id',auth[_0xc7b1('0x9')](),controller[_0xc7b1('0xb')]);router[_0xc7b1('0x8')](_0xc7b1('0xc'),auth[_0xc7b1('0x9')](),controller[_0xc7b1('0xd')]);router[_0xc7b1('0x8')](_0xc7b1('0xe'),auth[_0xc7b1('0x9')](),controller[_0xc7b1('0xf')]);router['get'](_0xc7b1('0x10'),auth[_0xc7b1('0x9')](),controller['getDescriptions']);router[_0xc7b1('0x11')]('/',auth[_0xc7b1('0x9')](),controller[_0xc7b1('0x12')]);router['put'](_0xc7b1('0x13'),auth[_0xc7b1('0x9')](),controller[_0xc7b1('0x14')]);router[_0xc7b1('0x15')](_0xc7b1('0x13'),auth[_0xc7b1('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d2775d7..eb20595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd35a=['contact','nothing','BOOLEAN','sequelize','exports','STRING','ENUM','incident'];(function(_0x30a38a,_0x489436){var _0x5d7641=function(_0x11da28){while(--_0x11da28){_0x30a38a['push'](_0x30a38a['shift']());}};_0x5d7641(++_0x489436);}(_0xd35a,0x123));var _0xad35=function(_0x54c695,_0x5d6677){_0x54c695=_0x54c695-0x0;var _0x3ce06b=_0xd35a[_0x54c695];return _0x3ce06b;};'use strict';var Sequelize=require(_0xad35('0x0'));module[_0xad35('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xad35('0x2')]},'ticketType':{'type':Sequelize[_0xad35('0x3')](_0xad35('0x4'),'phonecall'),'defaultValue':_0xad35('0x4')},'moduleCreate':{'type':Sequelize['ENUM'](_0xad35('0x5'),_0xad35('0x6')),'defaultValue':_0xad35('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0xad35('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x92c1=['BOOLEAN','sequelize','STRING','ENUM','incident','contact','nothing'];(function(_0x59eefb,_0x2151ce){var _0x1a49e8=function(_0x5a758c){while(--_0x5a758c){_0x59eefb['push'](_0x59eefb['shift']());}};_0x1a49e8(++_0x2151ce);}(_0x92c1,0x197));var _0x192c=function(_0x3b9cbe,_0x14936e){_0x3b9cbe=_0x3b9cbe-0x0;var _0x4bc66a=_0x92c1[_0x3b9cbe];return _0x4bc66a;};'use strict';var Sequelize=require(_0x192c('0x0'));module['exports']={'name':{'type':Sequelize[_0x192c('0x1')]},'description':{'type':Sequelize[_0x192c('0x1')]},'ticketType':{'type':Sequelize[_0x192c('0x2')](_0x192c('0x3'),'phonecall'),'defaultValue':_0x192c('0x3')},'moduleCreate':{'type':Sequelize['ENUM'](_0x192c('0x4'),_0x192c('0x5')),'defaultValue':_0x192c('0x4'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x192c('0x1')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x192c('0x6')],'defaultValue':!![]}};
\ No newline at end of file
index c88b8b8..d932470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7b0=['end','error','stack','name','send','map','Dynamics365Configuration','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','includeAll','include','findAll','show','params','keys','rawAttributes','options','find','catch','create','body','update','getFields','findOne','pick','Dynamics365Field','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy'];(function(_0x43d5b4,_0x11402e){var _0x4d828d=function(_0x48eac4){while(--_0x48eac4){_0x43d5b4['push'](_0x43d5b4['shift']());}};_0x4d828d(++_0x11402e);}(_0xe7b0,0xc7));var _0x0e7b=function(_0x3d9dc2,_0x4d0f69){_0x3d9dc2=_0x3d9dc2-0x0;var _0x9f75a0=_0xe7b0[_0x3d9dc2];return _0x9f75a0;};'use strict';var emlformat=require(_0x0e7b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0e7b('0x1'));var jsonpatch=require(_0x0e7b('0x2'));var rp=require(_0x0e7b('0x3'));var moment=require('moment');var BPromise=require(_0x0e7b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0e7b('0x5'));var sox=require(_0x0e7b('0x6'));var csv=require(_0x0e7b('0x7'));var ejs=require(_0x0e7b('0x8'));var fs=require('fs');var fs_extra=require(_0x0e7b('0x9'));var _=require('lodash');var squel=require(_0x0e7b('0xa'));var crypto=require(_0x0e7b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0e7b('0x7'));var querystring=require(_0x0e7b('0xc'));var Papa=require(_0x0e7b('0xd'));var Redis=require(_0x0e7b('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0e7b('0xf'));var as=require(_0x0e7b('0x10'));var hardwareService=require(_0x0e7b('0x11'));var logger=require('../../config/logger')(_0x0e7b('0x12'));var utils=require('../../config/utils');var config=require(_0x0e7b('0x13'));var licenseUtil=require(_0x0e7b('0x14'));var db=require(_0x0e7b('0x15'))['db'];function respondWithStatusCode(_0xd18d3b,_0x3a7746){_0x3a7746=_0x3a7746||0xcc;return function(_0x1414d9){if(_0x1414d9){return _0xd18d3b[_0x0e7b('0x16')](_0x3a7746);}return _0xd18d3b[_0x0e7b('0x17')](_0x3a7746)['end']();};}function respondWithResult(_0x1e3c56,_0x2e6249){_0x2e6249=_0x2e6249||0xc8;return function(_0x57cf9e){if(_0x57cf9e){return _0x1e3c56[_0x0e7b('0x17')](_0x2e6249)[_0x0e7b('0x18')](_0x57cf9e);}};}function respondWithFilteredResult(_0xd1ce46,_0xd993f1){return function(_0x9849a6){if(_0x9849a6){var _0x19af3e=typeof _0xd993f1[_0x0e7b('0x19')]===_0x0e7b('0x1a')&&typeof _0xd993f1[_0x0e7b('0x1b')]===_0x0e7b('0x1a');var _0x52df57=_0x9849a6[_0x0e7b('0x1c')];var _0x1d8662=_0x19af3e?0x0:_0xd993f1[_0x0e7b('0x19')];var _0x4c125c=_0x19af3e?_0x9849a6[_0x0e7b('0x1c')]:_0xd993f1['offset']+_0xd993f1['limit'];var _0x20e1bf;if(_0x4c125c>=_0x52df57){_0x4c125c=_0x52df57;_0x20e1bf=0xc8;}else{_0x20e1bf=0xce;}_0xd1ce46[_0x0e7b('0x17')](_0x20e1bf);return _0xd1ce46[_0x0e7b('0x1d')]('Content-Range',_0x1d8662+'-'+_0x4c125c+'/'+_0x52df57)['json'](_0x9849a6);}return null;};}function patchUpdates(_0x4aea88){return function(_0x5219c5){try{jsonpatch[_0x0e7b('0x1e')](_0x5219c5,_0x4aea88,!![]);}catch(_0x214a88){return BPromise[_0x0e7b('0x1f')](_0x214a88);}return _0x5219c5[_0x0e7b('0x20')]();};}function saveUpdates(_0x4cfea7,_0x11d88a){return function(_0x220c68){if(_0x220c68){return _0x220c68['update'](_0x4cfea7)[_0x0e7b('0x21')](function(_0x35c9ba){return _0x35c9ba;});}return null;};}function removeEntity(_0x3f401f,_0x2e6cab){return function(_0x312252){if(_0x312252){return _0x312252[_0x0e7b('0x22')]()['then'](function(){_0x3f401f[_0x0e7b('0x17')](0xcc)[_0x0e7b('0x23')]();});}};}function handleEntityNotFound(_0x471dfd,_0x3b1392){return function(_0x1c5e75){if(!_0x1c5e75){_0x471dfd[_0x0e7b('0x16')](0x194);}return _0x1c5e75;};}function handleError(_0xebf2a2,_0x60c9aa){_0x60c9aa=_0x60c9aa||0x1f4;return function(_0x3200c2){logger[_0x0e7b('0x24')](_0x3200c2[_0x0e7b('0x25')]);if(_0x3200c2['name']){delete _0x3200c2[_0x0e7b('0x26')];}_0xebf2a2[_0x0e7b('0x17')](_0x60c9aa)[_0x0e7b('0x27')](_0x3200c2);};}exports['index']=function(_0x3aa09e,_0x55b29f){var _0xc22bbb={},_0x2c04a6={},_0x52dd7f={'count':0x0,'rows':[]};var _0x5a3472=_[_0x0e7b('0x28')](db[_0x0e7b('0x29')]['rawAttributes'],function(_0xe2780d){return{'name':_0xe2780d['fieldName'],'type':_0xe2780d[_0x0e7b('0x2a')][_0x0e7b('0x2b')]};});_0x2c04a6[_0x0e7b('0x2c')]=_[_0x0e7b('0x28')](_0x5a3472,_0x0e7b('0x26'));_0x2c04a6[_0x0e7b('0x2d')]=_['keys'](_0x3aa09e[_0x0e7b('0x2d')]);_0x2c04a6[_0x0e7b('0x2e')]=_['intersection'](_0x2c04a6['model'],_0x2c04a6[_0x0e7b('0x2d')]);_0xc22bbb[_0x0e7b('0x2f')]=_[_0x0e7b('0x30')](_0x2c04a6[_0x0e7b('0x2c')],qs[_0x0e7b('0x31')](_0x3aa09e['query'][_0x0e7b('0x31')]));_0xc22bbb[_0x0e7b('0x2f')]=_0xc22bbb[_0x0e7b('0x2f')][_0x0e7b('0x32')]?_0xc22bbb[_0x0e7b('0x2f')]:_0x2c04a6['model'];if(!_0x3aa09e['query'][_0x0e7b('0x33')](_0x0e7b('0x34'))){_0xc22bbb[_0x0e7b('0x1b')]=qs['limit'](_0x3aa09e[_0x0e7b('0x2d')][_0x0e7b('0x1b')]);_0xc22bbb[_0x0e7b('0x19')]=qs[_0x0e7b('0x19')](_0x3aa09e[_0x0e7b('0x2d')][_0x0e7b('0x19')]);}_0xc22bbb[_0x0e7b('0x35')]=qs[_0x0e7b('0x36')](_0x3aa09e['query'][_0x0e7b('0x36')]);_0xc22bbb['where']=qs[_0x0e7b('0x2e')](_['pick'](_0x3aa09e[_0x0e7b('0x2d')],_0x2c04a6[_0x0e7b('0x2e')]),_0x5a3472);if(_0x3aa09e[_0x0e7b('0x2d')][_0x0e7b('0x37')]){_0xc22bbb['where']=_[_0x0e7b('0x38')](_0xc22bbb[_0x0e7b('0x39')],{'$or':_[_0x0e7b('0x28')](_0x5a3472,function(_0x3a1497){if(_0x3a1497[_0x0e7b('0x2a')]!==_0x0e7b('0x3a')){var _0x2e6ff8={};_0x2e6ff8[_0x3a1497[_0x0e7b('0x26')]]={'$like':'%'+_0x3aa09e[_0x0e7b('0x2d')][_0x0e7b('0x37')]+'%'};return _0x2e6ff8;}})});}_0xc22bbb=_['merge']({},_0xc22bbb,_0x3aa09e['options']);var _0x248004={'where':_0xc22bbb['where']};return db[_0x0e7b('0x29')]['count'](_0x248004)[_0x0e7b('0x21')](function(_0x326a2e){_0x52dd7f['count']=_0x326a2e;if(_0x3aa09e['query'][_0x0e7b('0x3b')]){_0xc22bbb[_0x0e7b('0x3c')]=[{'all':!![]}];}return db[_0x0e7b('0x29')][_0x0e7b('0x3d')](_0xc22bbb);})['then'](function(_0x481d8d){_0x52dd7f['rows']=_0x481d8d;return _0x52dd7f;})['then'](respondWithFilteredResult(_0x55b29f,_0xc22bbb))['catch'](handleError(_0x55b29f,null));};exports[_0x0e7b('0x3e')]=function(_0x52df21,_0x1dd3b9){var _0x3a1992={'raw':![],'where':{'id':_0x52df21[_0x0e7b('0x3f')]['id']}},_0x143252={};_0x143252['model']=_[_0x0e7b('0x40')](db[_0x0e7b('0x29')][_0x0e7b('0x41')]);_0x143252[_0x0e7b('0x2d')]=_[_0x0e7b('0x40')](_0x52df21[_0x0e7b('0x2d')]);_0x143252[_0x0e7b('0x2e')]=_[_0x0e7b('0x30')](_0x143252[_0x0e7b('0x2c')],_0x143252[_0x0e7b('0x2d')]);_0x3a1992[_0x0e7b('0x2f')]=_[_0x0e7b('0x30')](_0x143252['model'],qs[_0x0e7b('0x31')](_0x52df21[_0x0e7b('0x2d')][_0x0e7b('0x31')]));_0x3a1992[_0x0e7b('0x2f')]=_0x3a1992[_0x0e7b('0x2f')]['length']?_0x3a1992['attributes']:_0x143252[_0x0e7b('0x2c')];if(_0x52df21[_0x0e7b('0x2d')][_0x0e7b('0x3b')]){_0x3a1992[_0x0e7b('0x3c')]=[{'all':!![]}];}_0x3a1992=_[_0x0e7b('0x38')]({},_0x3a1992,_0x52df21[_0x0e7b('0x42')]);return db['Dynamics365Configuration'][_0x0e7b('0x43')](_0x3a1992)['then'](handleEntityNotFound(_0x1dd3b9,null))[_0x0e7b('0x21')](respondWithResult(_0x1dd3b9,null))[_0x0e7b('0x44')](handleError(_0x1dd3b9,null));};exports[_0x0e7b('0x45')]=function(_0x3c6d88,_0x1a96c0){return db[_0x0e7b('0x29')][_0x0e7b('0x45')](_0x3c6d88[_0x0e7b('0x46')],{})[_0x0e7b('0x21')](respondWithResult(_0x1a96c0,0xc9))[_0x0e7b('0x44')](handleError(_0x1a96c0,null));};exports[_0x0e7b('0x47')]=function(_0x169cdf,_0x3c2e7d){if(_0x169cdf['body']['id']){delete _0x169cdf['body']['id'];}return db['Dynamics365Configuration'][_0x0e7b('0x43')]({'where':{'id':_0x169cdf[_0x0e7b('0x3f')]['id']}})[_0x0e7b('0x21')](handleEntityNotFound(_0x3c2e7d,null))[_0x0e7b('0x21')](saveUpdates(_0x169cdf[_0x0e7b('0x46')],null))['then'](respondWithResult(_0x3c2e7d,null))[_0x0e7b('0x44')](handleError(_0x3c2e7d,null));};exports['destroy']=function(_0x3c6db9,_0x365d10){return db[_0x0e7b('0x29')]['find']({'where':{'id':_0x3c6db9[_0x0e7b('0x3f')]['id']}})[_0x0e7b('0x21')](handleEntityNotFound(_0x365d10,null))['then'](removeEntity(_0x365d10,null))[_0x0e7b('0x44')](handleError(_0x365d10,null));};exports[_0x0e7b('0x48')]=function(_0x1bc397,_0x3335e1,_0x4e014d){var _0x182027={};var _0x5a590c={};var _0x5ba30b;var _0x1d14c4;return db[_0x0e7b('0x29')][_0x0e7b('0x49')]({'where':{'id':_0x1bc397[_0x0e7b('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3335e1,null))[_0x0e7b('0x21')](function(_0x337eeb){if(_0x337eeb){_0x5ba30b=_0x337eeb;_0x5a590c[_0x0e7b('0x2c')]=_['keys'](db['Dynamics365Field'][_0x0e7b('0x41')]);_0x5a590c[_0x0e7b('0x2d')]=_[_0x0e7b('0x40')](_0x1bc397[_0x0e7b('0x2d')]);_0x5a590c[_0x0e7b('0x2e')]=_[_0x0e7b('0x30')](_0x5a590c['model'],_0x5a590c[_0x0e7b('0x2d')]);_0x182027[_0x0e7b('0x2f')]=_[_0x0e7b('0x30')](_0x5a590c[_0x0e7b('0x2c')],qs[_0x0e7b('0x31')](_0x1bc397['query'][_0x0e7b('0x31')]));_0x182027[_0x0e7b('0x2f')]=_0x182027[_0x0e7b('0x2f')]['length']?_0x182027[_0x0e7b('0x2f')]:_0x5a590c[_0x0e7b('0x2c')];_0x182027['order']=qs[_0x0e7b('0x36')](_0x1bc397[_0x0e7b('0x2d')][_0x0e7b('0x36')]);_0x182027[_0x0e7b('0x39')]=qs[_0x0e7b('0x2e')](_[_0x0e7b('0x4a')](_0x1bc397[_0x0e7b('0x2d')],_0x5a590c[_0x0e7b('0x2e')]));if(_0x1bc397[_0x0e7b('0x2d')][_0x0e7b('0x37')]){_0x182027[_0x0e7b('0x39')]=_[_0x0e7b('0x38')](_0x182027[_0x0e7b('0x39')],{'$or':_['map'](_0x182027[_0x0e7b('0x2f')],function(_0x355db2){var _0x43a4b2={};_0x43a4b2[_0x355db2]={'$like':'%'+_0x1bc397['query']['filter']+'%'};return _0x43a4b2;})});}_0x182027=_['merge']({},_0x182027,_0x1bc397['options']);return _0x5ba30b[_0x0e7b('0x48')](_0x182027);}})[_0x0e7b('0x21')](function(_0x1034bc){if(_0x1034bc){_0x1d14c4=_0x1034bc[_0x0e7b('0x32')];if(!_0x1bc397[_0x0e7b('0x2d')][_0x0e7b('0x33')](_0x0e7b('0x34'))){_0x182027[_0x0e7b('0x1b')]=qs[_0x0e7b('0x1b')](_0x1bc397[_0x0e7b('0x2d')][_0x0e7b('0x1b')]);_0x182027[_0x0e7b('0x19')]=qs['offset'](_0x1bc397[_0x0e7b('0x2d')][_0x0e7b('0x19')]);}return _0x5ba30b['getFields'](_0x182027);}})[_0x0e7b('0x21')](function(_0x149249){if(_0x149249){return _0x149249?{'count':_0x1d14c4,'rows':_0x149249}:null;}})['then'](respondWithResult(_0x3335e1,null))[_0x0e7b('0x44')](handleError(_0x3335e1,null));};exports['getSubjects']=function(_0x2fce76,_0x174280,_0x562b6f){var _0x4eee57={};var _0x3cd574={};var _0x20eaf3;var _0x595887;return db[_0x0e7b('0x29')][_0x0e7b('0x49')]({'where':{'id':_0x2fce76['params']['id']}})[_0x0e7b('0x21')](handleEntityNotFound(_0x174280,null))[_0x0e7b('0x21')](function(_0x427aaf){if(_0x427aaf){_0x20eaf3=_0x427aaf;_0x3cd574[_0x0e7b('0x2c')]=_[_0x0e7b('0x40')](db[_0x0e7b('0x4b')][_0x0e7b('0x41')]);_0x3cd574[_0x0e7b('0x2d')]=_[_0x0e7b('0x40')](_0x2fce76['query']);_0x3cd574[_0x0e7b('0x2e')]=_['intersection'](_0x3cd574['model'],_0x3cd574[_0x0e7b('0x2d')]);_0x4eee57[_0x0e7b('0x2f')]=_[_0x0e7b('0x30')](_0x3cd574['model'],qs[_0x0e7b('0x31')](_0x2fce76[_0x0e7b('0x2d')]['fields']));_0x4eee57[_0x0e7b('0x2f')]=_0x4eee57[_0x0e7b('0x2f')]['length']?_0x4eee57[_0x0e7b('0x2f')]:_0x3cd574[_0x0e7b('0x2c')];_0x4eee57[_0x0e7b('0x35')]=qs[_0x0e7b('0x36')](_0x2fce76[_0x0e7b('0x2d')][_0x0e7b('0x36')]);_0x4eee57['where']=qs[_0x0e7b('0x2e')](_[_0x0e7b('0x4a')](_0x2fce76[_0x0e7b('0x2d')],_0x3cd574[_0x0e7b('0x2e')]));if(_0x2fce76[_0x0e7b('0x2d')][_0x0e7b('0x37')]){_0x4eee57['where']=_[_0x0e7b('0x38')](_0x4eee57['where'],{'$or':_[_0x0e7b('0x28')](_0x4eee57[_0x0e7b('0x2f')],function(_0x280292){var _0x50bacf={};_0x50bacf[_0x280292]={'$like':'%'+_0x2fce76[_0x0e7b('0x2d')][_0x0e7b('0x37')]+'%'};return _0x50bacf;})});}_0x4eee57=_['merge']({},_0x4eee57,_0x2fce76[_0x0e7b('0x42')]);return _0x20eaf3[_0x0e7b('0x4c')](_0x4eee57);}})[_0x0e7b('0x21')](function(_0x5c4465){if(_0x5c4465){_0x595887=_0x5c4465[_0x0e7b('0x32')];if(!_0x2fce76[_0x0e7b('0x2d')][_0x0e7b('0x33')](_0x0e7b('0x34'))){_0x4eee57['limit']=qs[_0x0e7b('0x1b')](_0x2fce76[_0x0e7b('0x2d')]['limit']);_0x4eee57[_0x0e7b('0x19')]=qs[_0x0e7b('0x19')](_0x2fce76[_0x0e7b('0x2d')][_0x0e7b('0x19')]);}return _0x20eaf3['getSubjects'](_0x4eee57);}})[_0x0e7b('0x21')](function(_0x143a9b){if(_0x143a9b){return _0x143a9b?{'count':_0x595887,'rows':_0x143a9b}:null;}})[_0x0e7b('0x21')](respondWithResult(_0x174280,null))['catch'](handleError(_0x174280,null));};exports['getDescriptions']=function(_0x57d5a7,_0x3cf2a1,_0x4f74fc){var _0x19812a={};var _0x18a1b8={};var _0x4c5a10;var _0x35506a;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x57d5a7[_0x0e7b('0x3f')]['id']}})[_0x0e7b('0x21')](handleEntityNotFound(_0x3cf2a1,null))[_0x0e7b('0x21')](function(_0x3f86a1){if(_0x3f86a1){_0x4c5a10=_0x3f86a1;_0x18a1b8['model']=_[_0x0e7b('0x40')](db['Dynamics365Field'][_0x0e7b('0x41')]);_0x18a1b8[_0x0e7b('0x2d')]=_['keys'](_0x57d5a7[_0x0e7b('0x2d')]);_0x18a1b8[_0x0e7b('0x2e')]=_['intersection'](_0x18a1b8['model'],_0x18a1b8[_0x0e7b('0x2d')]);_0x19812a[_0x0e7b('0x2f')]=_[_0x0e7b('0x30')](_0x18a1b8[_0x0e7b('0x2c')],qs['fields'](_0x57d5a7[_0x0e7b('0x2d')][_0x0e7b('0x31')]));_0x19812a[_0x0e7b('0x2f')]=_0x19812a[_0x0e7b('0x2f')][_0x0e7b('0x32')]?_0x19812a[_0x0e7b('0x2f')]:_0x18a1b8[_0x0e7b('0x2c')];_0x19812a[_0x0e7b('0x35')]=qs[_0x0e7b('0x36')](_0x57d5a7[_0x0e7b('0x2d')]['sort']);_0x19812a['where']=qs['filters'](_['pick'](_0x57d5a7[_0x0e7b('0x2d')],_0x18a1b8[_0x0e7b('0x2e')]));if(_0x57d5a7[_0x0e7b('0x2d')][_0x0e7b('0x37')]){_0x19812a[_0x0e7b('0x39')]=_['merge'](_0x19812a[_0x0e7b('0x39')],{'$or':_[_0x0e7b('0x28')](_0x19812a[_0x0e7b('0x2f')],function(_0x17d921){var _0x21d538={};_0x21d538[_0x17d921]={'$like':'%'+_0x57d5a7[_0x0e7b('0x2d')][_0x0e7b('0x37')]+'%'};return _0x21d538;})});}_0x19812a=_[_0x0e7b('0x38')]({},_0x19812a,_0x57d5a7[_0x0e7b('0x42')]);return _0x4c5a10[_0x0e7b('0x4d')](_0x19812a);}})[_0x0e7b('0x21')](function(_0xec75a7){if(_0xec75a7){_0x35506a=_0xec75a7[_0x0e7b('0x32')];if(!_0x57d5a7[_0x0e7b('0x2d')][_0x0e7b('0x33')](_0x0e7b('0x34'))){_0x19812a['limit']=qs[_0x0e7b('0x1b')](_0x57d5a7['query']['limit']);_0x19812a[_0x0e7b('0x19')]=qs[_0x0e7b('0x19')](_0x57d5a7['query'][_0x0e7b('0x19')]);}return _0x4c5a10[_0x0e7b('0x4d')](_0x19812a);}})[_0x0e7b('0x21')](function(_0x5344f8){if(_0x5344f8){return _0x5344f8?{'count':_0x35506a,'rows':_0x5344f8}:null;}})[_0x0e7b('0x21')](respondWithResult(_0x3cf2a1,null))['catch'](handleError(_0x3cf2a1,null));};
\ No newline at end of file
+var _0x84e5=['bluebird','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','update','then','error','stack','send','index','Dynamics365Configuration','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','create','body','find','getFields','Dynamics365Field','getSubjects','findOne','getDescriptions','fast-json-patch','request-promise','moment'];(function(_0x23c138,_0x52ffd6){var _0x29b4f2=function(_0x381c34){while(--_0x381c34){_0x23c138['push'](_0x23c138['shift']());}};_0x29b4f2(++_0x52ffd6);}(_0x84e5,0x12d));var _0x584e=function(_0x3c504b,_0x437693){_0x3c504b=_0x3c504b-0x0;var _0x2e5354=_0x84e5[_0x3c504b];return _0x2e5354;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x584e('0x0'));var rp=require(_0x584e('0x1'));var moment=require(_0x584e('0x2'));var BPromise=require(_0x584e('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x584e('0x4'));var sox=require(_0x584e('0x5'));var csv=require(_0x584e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x584e('0x7'));var _=require(_0x584e('0x8'));var squel=require('squel');var crypto=require(_0x584e('0x9'));var jsforce=require(_0x584e('0xa'));var deskjs=require(_0x584e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x584e('0xc'));var Papa=require('papaparse');var Redis=require(_0x584e('0xd'));var authService=require(_0x584e('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x584e('0xf'));var hardwareService=require(_0x584e('0x10'));var logger=require('../../config/logger')(_0x584e('0x11'));var utils=require(_0x584e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x584e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x7d13a3,_0x24715b){_0x24715b=_0x24715b||0xcc;return function(_0xf5d72d){if(_0xf5d72d){return _0x7d13a3[_0x584e('0x14')](_0x24715b);}return _0x7d13a3[_0x584e('0x15')](_0x24715b)[_0x584e('0x16')]();};}function respondWithResult(_0x21553d,_0x141ac2){_0x141ac2=_0x141ac2||0xc8;return function(_0x2ce9d4){if(_0x2ce9d4){return _0x21553d[_0x584e('0x15')](_0x141ac2)[_0x584e('0x17')](_0x2ce9d4);}};}function respondWithFilteredResult(_0x425342,_0x860100){return function(_0x1aa386){if(_0x1aa386){var _0x31bc97=typeof _0x860100['offset']==='undefined'&&typeof _0x860100[_0x584e('0x18')]===_0x584e('0x19');var _0x102ac6=_0x1aa386[_0x584e('0x1a')];var _0x2662b9=_0x31bc97?0x0:_0x860100[_0x584e('0x1b')];var _0x3206f9=_0x31bc97?_0x1aa386[_0x584e('0x1a')]:_0x860100[_0x584e('0x1b')]+_0x860100[_0x584e('0x18')];var _0x347c7b;if(_0x3206f9>=_0x102ac6){_0x3206f9=_0x102ac6;_0x347c7b=0xc8;}else{_0x347c7b=0xce;}_0x425342['status'](_0x347c7b);return _0x425342['set'](_0x584e('0x1c'),_0x2662b9+'-'+_0x3206f9+'/'+_0x102ac6)['json'](_0x1aa386);}return null;};}function patchUpdates(_0x13d434){return function(_0x2d77e1){try{jsonpatch[_0x584e('0x1d')](_0x2d77e1,_0x13d434,!![]);}catch(_0x25d716){return BPromise[_0x584e('0x1e')](_0x25d716);}return _0x2d77e1['save']();};}function saveUpdates(_0x5ca861,_0x51a077){return function(_0x3b76fc){if(_0x3b76fc){return _0x3b76fc[_0x584e('0x1f')](_0x5ca861)[_0x584e('0x20')](function(_0x94636b){return _0x94636b;});}return null;};}function removeEntity(_0x295f46,_0x25c8fc){return function(_0x50a058){if(_0x50a058){return _0x50a058['destroy']()['then'](function(){_0x295f46[_0x584e('0x15')](0xcc)[_0x584e('0x16')]();});}};}function handleEntityNotFound(_0x3cc724,_0x562284){return function(_0x27e555){if(!_0x27e555){_0x3cc724[_0x584e('0x14')](0x194);}return _0x27e555;};}function handleError(_0x3601bd,_0x498831){_0x498831=_0x498831||0x1f4;return function(_0x5054c4){logger[_0x584e('0x21')](_0x5054c4[_0x584e('0x22')]);if(_0x5054c4['name']){delete _0x5054c4['name'];}_0x3601bd['status'](_0x498831)[_0x584e('0x23')](_0x5054c4);};}exports[_0x584e('0x24')]=function(_0x1e2d9e,_0x4862cc){var _0x4444e6={},_0x2fedd4={},_0x17c62f={'count':0x0,'rows':[]};var _0x4728cd=_['map'](db[_0x584e('0x25')][_0x584e('0x26')],function(_0x4bbebd){return{'name':_0x4bbebd[_0x584e('0x27')],'type':_0x4bbebd[_0x584e('0x28')][_0x584e('0x29')]};});_0x2fedd4['model']=_['map'](_0x4728cd,_0x584e('0x2a'));_0x2fedd4[_0x584e('0x2b')]=_[_0x584e('0x2c')](_0x1e2d9e[_0x584e('0x2b')]);_0x2fedd4[_0x584e('0x2d')]=_[_0x584e('0x2e')](_0x2fedd4[_0x584e('0x2f')],_0x2fedd4[_0x584e('0x2b')]);_0x4444e6[_0x584e('0x30')]=_['intersection'](_0x2fedd4[_0x584e('0x2f')],qs[_0x584e('0x31')](_0x1e2d9e[_0x584e('0x2b')][_0x584e('0x31')]));_0x4444e6[_0x584e('0x30')]=_0x4444e6[_0x584e('0x30')][_0x584e('0x32')]?_0x4444e6[_0x584e('0x30')]:_0x2fedd4['model'];if(!_0x1e2d9e[_0x584e('0x2b')][_0x584e('0x33')](_0x584e('0x34'))){_0x4444e6[_0x584e('0x18')]=qs[_0x584e('0x18')](_0x1e2d9e[_0x584e('0x2b')]['limit']);_0x4444e6[_0x584e('0x1b')]=qs['offset'](_0x1e2d9e[_0x584e('0x2b')][_0x584e('0x1b')]);}_0x4444e6[_0x584e('0x35')]=qs[_0x584e('0x36')](_0x1e2d9e[_0x584e('0x2b')]['sort']);_0x4444e6[_0x584e('0x37')]=qs[_0x584e('0x2d')](_[_0x584e('0x38')](_0x1e2d9e[_0x584e('0x2b')],_0x2fedd4[_0x584e('0x2d')]),_0x4728cd);if(_0x1e2d9e[_0x584e('0x2b')][_0x584e('0x39')]){_0x4444e6[_0x584e('0x37')]=_['merge'](_0x4444e6[_0x584e('0x37')],{'$or':_[_0x584e('0x3a')](_0x4728cd,function(_0x4934ce){if(_0x4934ce[_0x584e('0x28')]!==_0x584e('0x3b')){var _0xe02609={};_0xe02609[_0x4934ce['name']]={'$like':'%'+_0x1e2d9e[_0x584e('0x2b')]['filter']+'%'};return _0xe02609;}})});}_0x4444e6=_[_0x584e('0x3c')]({},_0x4444e6,_0x1e2d9e[_0x584e('0x3d')]);var _0x377c6b={'where':_0x4444e6[_0x584e('0x37')]};return db[_0x584e('0x25')]['count'](_0x377c6b)[_0x584e('0x20')](function(_0x1950bb){_0x17c62f[_0x584e('0x1a')]=_0x1950bb;if(_0x1e2d9e['query'][_0x584e('0x3e')]){_0x4444e6[_0x584e('0x3f')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x584e('0x40')](_0x4444e6);})[_0x584e('0x20')](function(_0x4c705a){_0x17c62f[_0x584e('0x41')]=_0x4c705a;return _0x17c62f;})[_0x584e('0x20')](respondWithFilteredResult(_0x4862cc,_0x4444e6))[_0x584e('0x42')](handleError(_0x4862cc,null));};exports['show']=function(_0x4de3ee,_0xda3aed){var _0x504678={'raw':![],'where':{'id':_0x4de3ee[_0x584e('0x43')]['id']}},_0x1fb084={};_0x1fb084[_0x584e('0x2f')]=_[_0x584e('0x2c')](db['Dynamics365Configuration'][_0x584e('0x26')]);_0x1fb084['query']=_[_0x584e('0x2c')](_0x4de3ee[_0x584e('0x2b')]);_0x1fb084['filters']=_[_0x584e('0x2e')](_0x1fb084[_0x584e('0x2f')],_0x1fb084[_0x584e('0x2b')]);_0x504678[_0x584e('0x30')]=_['intersection'](_0x1fb084[_0x584e('0x2f')],qs[_0x584e('0x31')](_0x4de3ee[_0x584e('0x2b')][_0x584e('0x31')]));_0x504678['attributes']=_0x504678[_0x584e('0x30')][_0x584e('0x32')]?_0x504678[_0x584e('0x30')]:_0x1fb084['model'];if(_0x4de3ee[_0x584e('0x2b')][_0x584e('0x3e')]){_0x504678[_0x584e('0x3f')]=[{'all':!![]}];}_0x504678=_[_0x584e('0x3c')]({},_0x504678,_0x4de3ee[_0x584e('0x3d')]);return db['Dynamics365Configuration']['find'](_0x504678)[_0x584e('0x20')](handleEntityNotFound(_0xda3aed,null))[_0x584e('0x20')](respondWithResult(_0xda3aed,null))[_0x584e('0x42')](handleError(_0xda3aed,null));};exports[_0x584e('0x44')]=function(_0x595b6d,_0x5c854c){return db['Dynamics365Configuration']['create'](_0x595b6d[_0x584e('0x45')],{})[_0x584e('0x20')](respondWithResult(_0x5c854c,0xc9))[_0x584e('0x42')](handleError(_0x5c854c,null));};exports[_0x584e('0x1f')]=function(_0x669b2f,_0x5881dd){if(_0x669b2f['body']['id']){delete _0x669b2f[_0x584e('0x45')]['id'];}return db[_0x584e('0x25')][_0x584e('0x46')]({'where':{'id':_0x669b2f[_0x584e('0x43')]['id']}})['then'](handleEntityNotFound(_0x5881dd,null))[_0x584e('0x20')](saveUpdates(_0x669b2f[_0x584e('0x45')],null))['then'](respondWithResult(_0x5881dd,null))[_0x584e('0x42')](handleError(_0x5881dd,null));};exports['destroy']=function(_0x1f1e5f,_0x130f6c){return db[_0x584e('0x25')][_0x584e('0x46')]({'where':{'id':_0x1f1e5f['params']['id']}})['then'](handleEntityNotFound(_0x130f6c,null))['then'](removeEntity(_0x130f6c,null))[_0x584e('0x42')](handleError(_0x130f6c,null));};exports[_0x584e('0x47')]=function(_0x45a439,_0x5cce0b,_0x7e3ad9){var _0x22349d={};var _0x314c56={};var _0x2fe53a;var _0x332ad2;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x45a439[_0x584e('0x43')]['id']}})[_0x584e('0x20')](handleEntityNotFound(_0x5cce0b,null))['then'](function(_0x193f67){if(_0x193f67){_0x2fe53a=_0x193f67;_0x314c56['model']=_['keys'](db[_0x584e('0x48')][_0x584e('0x26')]);_0x314c56[_0x584e('0x2b')]=_[_0x584e('0x2c')](_0x45a439[_0x584e('0x2b')]);_0x314c56['filters']=_[_0x584e('0x2e')](_0x314c56[_0x584e('0x2f')],_0x314c56[_0x584e('0x2b')]);_0x22349d[_0x584e('0x30')]=_[_0x584e('0x2e')](_0x314c56[_0x584e('0x2f')],qs['fields'](_0x45a439[_0x584e('0x2b')][_0x584e('0x31')]));_0x22349d['attributes']=_0x22349d[_0x584e('0x30')]['length']?_0x22349d[_0x584e('0x30')]:_0x314c56[_0x584e('0x2f')];_0x22349d[_0x584e('0x35')]=qs[_0x584e('0x36')](_0x45a439[_0x584e('0x2b')][_0x584e('0x36')]);_0x22349d['where']=qs[_0x584e('0x2d')](_['pick'](_0x45a439['query'],_0x314c56[_0x584e('0x2d')]));if(_0x45a439[_0x584e('0x2b')][_0x584e('0x39')]){_0x22349d[_0x584e('0x37')]=_[_0x584e('0x3c')](_0x22349d[_0x584e('0x37')],{'$or':_['map'](_0x22349d['attributes'],function(_0x309bac){var _0x3dffcf={};_0x3dffcf[_0x309bac]={'$like':'%'+_0x45a439[_0x584e('0x2b')][_0x584e('0x39')]+'%'};return _0x3dffcf;})});}_0x22349d=_['merge']({},_0x22349d,_0x45a439['options']);return _0x2fe53a[_0x584e('0x47')](_0x22349d);}})[_0x584e('0x20')](function(_0x413779){if(_0x413779){_0x332ad2=_0x413779['length'];if(!_0x45a439[_0x584e('0x2b')]['hasOwnProperty'](_0x584e('0x34'))){_0x22349d[_0x584e('0x18')]=qs['limit'](_0x45a439[_0x584e('0x2b')]['limit']);_0x22349d[_0x584e('0x1b')]=qs[_0x584e('0x1b')](_0x45a439['query']['offset']);}return _0x2fe53a[_0x584e('0x47')](_0x22349d);}})['then'](function(_0x3453c2){if(_0x3453c2){return _0x3453c2?{'count':_0x332ad2,'rows':_0x3453c2}:null;}})[_0x584e('0x20')](respondWithResult(_0x5cce0b,null))[_0x584e('0x42')](handleError(_0x5cce0b,null));};exports[_0x584e('0x49')]=function(_0x4f5ae8,_0x44ddd3,_0x3b7247){var _0x2fe026={};var _0x30a338={};var _0x2fff24;var _0x309a91;return db['Dynamics365Configuration'][_0x584e('0x4a')]({'where':{'id':_0x4f5ae8[_0x584e('0x43')]['id']}})[_0x584e('0x20')](handleEntityNotFound(_0x44ddd3,null))[_0x584e('0x20')](function(_0x222145){if(_0x222145){_0x2fff24=_0x222145;_0x30a338['model']=_['keys'](db[_0x584e('0x48')][_0x584e('0x26')]);_0x30a338[_0x584e('0x2b')]=_[_0x584e('0x2c')](_0x4f5ae8['query']);_0x30a338[_0x584e('0x2d')]=_[_0x584e('0x2e')](_0x30a338[_0x584e('0x2f')],_0x30a338['query']);_0x2fe026[_0x584e('0x30')]=_[_0x584e('0x2e')](_0x30a338[_0x584e('0x2f')],qs['fields'](_0x4f5ae8[_0x584e('0x2b')]['fields']));_0x2fe026['attributes']=_0x2fe026[_0x584e('0x30')][_0x584e('0x32')]?_0x2fe026[_0x584e('0x30')]:_0x30a338[_0x584e('0x2f')];_0x2fe026['order']=qs[_0x584e('0x36')](_0x4f5ae8[_0x584e('0x2b')]['sort']);_0x2fe026['where']=qs[_0x584e('0x2d')](_['pick'](_0x4f5ae8['query'],_0x30a338[_0x584e('0x2d')]));if(_0x4f5ae8['query'][_0x584e('0x39')]){_0x2fe026[_0x584e('0x37')]=_[_0x584e('0x3c')](_0x2fe026['where'],{'$or':_[_0x584e('0x3a')](_0x2fe026[_0x584e('0x30')],function(_0x47e22a){var _0x373002={};_0x373002[_0x47e22a]={'$like':'%'+_0x4f5ae8[_0x584e('0x2b')][_0x584e('0x39')]+'%'};return _0x373002;})});}_0x2fe026=_['merge']({},_0x2fe026,_0x4f5ae8[_0x584e('0x3d')]);return _0x2fff24['getSubjects'](_0x2fe026);}})[_0x584e('0x20')](function(_0x46775d){if(_0x46775d){_0x309a91=_0x46775d[_0x584e('0x32')];if(!_0x4f5ae8[_0x584e('0x2b')][_0x584e('0x33')](_0x584e('0x34'))){_0x2fe026['limit']=qs[_0x584e('0x18')](_0x4f5ae8[_0x584e('0x2b')][_0x584e('0x18')]);_0x2fe026[_0x584e('0x1b')]=qs[_0x584e('0x1b')](_0x4f5ae8[_0x584e('0x2b')][_0x584e('0x1b')]);}return _0x2fff24['getSubjects'](_0x2fe026);}})[_0x584e('0x20')](function(_0x28bb4b){if(_0x28bb4b){return _0x28bb4b?{'count':_0x309a91,'rows':_0x28bb4b}:null;}})[_0x584e('0x20')](respondWithResult(_0x44ddd3,null))[_0x584e('0x42')](handleError(_0x44ddd3,null));};exports[_0x584e('0x4b')]=function(_0x5f43ee,_0x1c258f,_0x41c1cc){var _0x194cee={};var _0x2d118c={};var _0x40323b;var _0x33b01a;return db['Dynamics365Configuration'][_0x584e('0x4a')]({'where':{'id':_0x5f43ee[_0x584e('0x43')]['id']}})[_0x584e('0x20')](handleEntityNotFound(_0x1c258f,null))[_0x584e('0x20')](function(_0x20057b){if(_0x20057b){_0x40323b=_0x20057b;_0x2d118c[_0x584e('0x2f')]=_[_0x584e('0x2c')](db['Dynamics365Field']['rawAttributes']);_0x2d118c[_0x584e('0x2b')]=_['keys'](_0x5f43ee['query']);_0x2d118c[_0x584e('0x2d')]=_[_0x584e('0x2e')](_0x2d118c[_0x584e('0x2f')],_0x2d118c[_0x584e('0x2b')]);_0x194cee[_0x584e('0x30')]=_[_0x584e('0x2e')](_0x2d118c[_0x584e('0x2f')],qs[_0x584e('0x31')](_0x5f43ee[_0x584e('0x2b')]['fields']));_0x194cee[_0x584e('0x30')]=_0x194cee[_0x584e('0x30')]['length']?_0x194cee[_0x584e('0x30')]:_0x2d118c[_0x584e('0x2f')];_0x194cee[_0x584e('0x35')]=qs[_0x584e('0x36')](_0x5f43ee[_0x584e('0x2b')][_0x584e('0x36')]);_0x194cee['where']=qs['filters'](_[_0x584e('0x38')](_0x5f43ee[_0x584e('0x2b')],_0x2d118c[_0x584e('0x2d')]));if(_0x5f43ee[_0x584e('0x2b')]['filter']){_0x194cee[_0x584e('0x37')]=_[_0x584e('0x3c')](_0x194cee[_0x584e('0x37')],{'$or':_[_0x584e('0x3a')](_0x194cee[_0x584e('0x30')],function(_0x47e4f8){var _0x363fee={};_0x363fee[_0x47e4f8]={'$like':'%'+_0x5f43ee[_0x584e('0x2b')][_0x584e('0x39')]+'%'};return _0x363fee;})});}_0x194cee=_[_0x584e('0x3c')]({},_0x194cee,_0x5f43ee[_0x584e('0x3d')]);return _0x40323b[_0x584e('0x4b')](_0x194cee);}})[_0x584e('0x20')](function(_0xd89549){if(_0xd89549){_0x33b01a=_0xd89549[_0x584e('0x32')];if(!_0x5f43ee[_0x584e('0x2b')][_0x584e('0x33')](_0x584e('0x34'))){_0x194cee[_0x584e('0x18')]=qs[_0x584e('0x18')](_0x5f43ee[_0x584e('0x2b')]['limit']);_0x194cee[_0x584e('0x1b')]=qs[_0x584e('0x1b')](_0x5f43ee[_0x584e('0x2b')][_0x584e('0x1b')]);}return _0x40323b['getDescriptions'](_0x194cee);}})[_0x584e('0x20')](function(_0x6953b9){if(_0x6953b9){return _0x6953b9?{'count':_0x33b01a,'rows':_0x6953b9}:null;}})[_0x584e('0x20')](respondWithResult(_0x1c258f,null))['catch'](handleError(_0x1c258f,null));};
\ No newline at end of file
index 4cfb9ff..92400be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash'];(function(_0x170310,_0x31acf9){var _0x1b6006=function(_0x294e50){while(--_0x294e50){_0x170310['push'](_0x170310['shift']());}};_0x1b6006(++_0x31acf9);}(_0xaa88,0x137));var _0x8aa8=function(_0x2eec1f,_0x1b9987){_0x2eec1f=_0x2eec1f-0x0;var _0x543075=_0xaa88[_0x2eec1f];return _0x543075;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var moment=require('moment');var BPromise=require(_0x8aa8('0x4'));var rp=require(_0x8aa8('0x5'));var fs=require('fs');var path=require(_0x8aa8('0x6'));var rimraf=require(_0x8aa8('0x7'));var config=require(_0x8aa8('0x8'));var attributes=require(_0x8aa8('0x9'));module['exports']=function(_0x5bda0d,_0x460042){return _0x5bda0d['define'](_0x8aa8('0xa'),attributes,{'tableName':_0x8aa8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f62=['api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util'];(function(_0x23d278,_0x411ea7){var _0x12c538=function(_0x2078ab){while(--_0x2078ab){_0x23d278['push'](_0x23d278['shift']());}};_0x12c538(++_0x411ea7);}(_0x9f62,0x154));var _0x29f6=function(_0x2b8a29,_0x156924){_0x2b8a29=_0x2b8a29-0x0;var _0x25fd2c=_0x9f62[_0x2b8a29];return _0x25fd2c;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var logger=require('../../config/logger')(_0x29f6('0x1'));var moment=require(_0x29f6('0x2'));var BPromise=require(_0x29f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var attributes=require(_0x29f6('0x6'));module[_0x29f6('0x7')]=function(_0x595034,_0xf66137){return _0x595034[_0x29f6('0x8')](_0x29f6('0x9'),attributes,{'tableName':_0x29f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10eb47e..2c4e094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ea=['error','code','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','Dynamics365Configuration,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x14b8ee,_0x26d31a){var _0x50ef2b=function(_0x27d7bc){while(--_0x27d7bc){_0x14b8ee['push'](_0x14b8ee['shift']());}};_0x50ef2b(++_0x26d31a);}(_0xa9ea,0xaf));var _0xaa9e=function(_0x56756b,_0x3e8cc7){_0x56756b=_0x56756b-0x0;var _0xa3002=_0xa9ea[_0x56756b];return _0xa3002;};'use strict';var _=require(_0xaa9e('0x0'));var util=require('util');var moment=require(_0xaa9e('0x1'));var BPromise=require('bluebird');var rs=require(_0xaa9e('0x2'));var fs=require('fs');var Redis=require(_0xaa9e('0x3'));var db=require(_0xaa9e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaa9e('0x5'))(_0xaa9e('0x6'));var config=require(_0xaa9e('0x7'));var jayson=require(_0xaa9e('0x8'));var client=jayson['client'][_0xaa9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5da2ee,_0x12362d,_0x2b9a11){return new BPromise(function(_0x4f772e,_0xaeb0b7){return client[_0xaa9e('0xa')](_0x5da2ee,_0x2b9a11)['then'](function(_0x571bf9){logger['info'](_0xaa9e('0xb'),_0x12362d,'request\x20sent');logger[_0xaa9e('0xc')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x12362d,_0xaa9e('0xd'),JSON[_0xaa9e('0xe')](_0x571bf9));if(_0x571bf9[_0xaa9e('0xf')]){if(_0x571bf9[_0xaa9e('0xf')][_0xaa9e('0x10')]===0x1f4){logger[_0xaa9e('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x12362d,_0x571bf9['error'][_0xaa9e('0x11')]);return _0xaeb0b7(_0x571bf9[_0xaa9e('0xf')]['message']);}logger[_0xaa9e('0xf')](_0xaa9e('0xb'),_0x12362d,_0x571bf9[_0xaa9e('0xf')][_0xaa9e('0x11')]);return _0x4f772e(_0x571bf9[_0xaa9e('0xf')][_0xaa9e('0x11')]);}else{logger['info'](_0xaa9e('0xb'),_0x12362d,_0xaa9e('0xd'));_0x4f772e(_0x571bf9['result'][_0xaa9e('0x11')]);}})[_0xaa9e('0x12')](function(_0xb07e0d){logger[_0xaa9e('0xf')](_0xaa9e('0xb'),_0x12362d,_0xb07e0d);_0xaeb0b7(_0xb07e0d);});});}
\ No newline at end of file
+var _0x5628=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x5628,0xf8));var _0x8562=function(_0x10e678,_0x4705a2){_0x10e678=_0x10e678-0x0;var _0x49f641=_0x5628[_0x10e678];return _0x49f641;};'use strict';var _=require('lodash');var util=require(_0x8562('0x0'));var moment=require(_0x8562('0x1'));var BPromise=require(_0x8562('0x2'));var rs=require(_0x8562('0x3'));var fs=require('fs');var Redis=require(_0x8562('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8562('0x5'));var logger=require(_0x8562('0x6'))(_0x8562('0x7'));var config=require(_0x8562('0x8'));var jayson=require(_0x8562('0x9'));var client=jayson[_0x8562('0xa')][_0x8562('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x372408,_0x1dd678,_0x2fe8d2){return new BPromise(function(_0x840cbe,_0x2eb429){return client[_0x8562('0xc')](_0x372408,_0x2fe8d2)[_0x8562('0xd')](function(_0x20aa5a){logger['info'](_0x8562('0xe'),_0x1dd678,_0x8562('0xf'));logger[_0x8562('0x10')](_0x8562('0x11'),_0x1dd678,'request\x20sent',JSON[_0x8562('0x12')](_0x20aa5a));if(_0x20aa5a[_0x8562('0x13')]){if(_0x20aa5a['error'][_0x8562('0x14')]===0x1f4){logger['error'](_0x8562('0xe'),_0x1dd678,_0x20aa5a[_0x8562('0x13')][_0x8562('0x15')]);return _0x2eb429(_0x20aa5a[_0x8562('0x13')][_0x8562('0x15')]);}logger[_0x8562('0x13')](_0x8562('0xe'),_0x1dd678,_0x20aa5a[_0x8562('0x13')][_0x8562('0x15')]);return _0x840cbe(_0x20aa5a[_0x8562('0x13')][_0x8562('0x15')]);}else{logger[_0x8562('0x16')](_0x8562('0xe'),_0x1dd678,_0x8562('0xf'));_0x840cbe(_0x20aa5a[_0x8562('0x17')][_0x8562('0x15')]);}})[_0x8562('0x18')](function(_0x5474e1){logger[_0x8562('0x13')](_0x8562('0xe'),_0x1dd678,_0x5474e1);_0x2eb429(_0x5474e1);});});}
\ No newline at end of file
index 81e3bd4..1d160b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239c=['show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','/:id'];(function(_0x57812b,_0x1db473){var _0x393e17=function(_0x8cd085){while(--_0x8cd085){_0x57812b['push'](_0x57812b['shift']());}};_0x393e17(++_0x1db473);}(_0x239c,0x14b));var _0xc239=function(_0x349d76,_0x32ce9a){_0x349d76=_0x349d76-0x0;var _0x213cf4=_0x239c[_0x349d76];return _0x213cf4;};'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('../../components/interaction/service');var config=require(_0xc239('0x6'));var controller=require(_0xc239('0x7'));router[_0xc239('0x8')]('/',auth[_0xc239('0x9')](),controller['index']);router[_0xc239('0x8')](_0xc239('0xa'),auth[_0xc239('0x9')](),controller[_0xc239('0xb')]);router[_0xc239('0xc')]('/',auth[_0xc239('0x9')](),controller[_0xc239('0xd')]);router[_0xc239('0xe')](_0xc239('0xa'),auth[_0xc239('0x9')](),controller['update']);router[_0xc239('0xf')]('/:id',auth[_0xc239('0x9')](),controller[_0xc239('0x10')]);module[_0xc239('0x11')]=router;
\ No newline at end of file
+var _0x2bed=['create','put','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x20eed6,_0x2efa9d){var _0x1dc085=function(_0x30b5d2){while(--_0x30b5d2){_0x20eed6['push'](_0x20eed6['shift']());}};_0x1dc085(++_0x2efa9d);}(_0x2bed,0x75));var _0xd2be=function(_0x35e4d3,_0x231ab8){_0x35e4d3=_0x35e4d3-0x0;var _0x42e509=_0x2bed[_0x35e4d3];return _0x42e509;};'use strict';var multer=require(_0xd2be('0x0'));var util=require(_0xd2be('0x1'));var path=require(_0xd2be('0x2'));var timeout=require('connect-timeout');var express=require(_0xd2be('0x3'));var router=express[_0xd2be('0x4')]();var fs_extra=require(_0xd2be('0x5'));var auth=require(_0xd2be('0x6'));var interaction=require(_0xd2be('0x7'));var config=require(_0xd2be('0x8'));var controller=require(_0xd2be('0x9'));router[_0xd2be('0xa')]('/',auth['isAuthenticated'](),controller[_0xd2be('0xb')]);router[_0xd2be('0xa')](_0xd2be('0xc'),auth[_0xd2be('0xd')](),controller[_0xd2be('0xe')]);router[_0xd2be('0xf')]('/',auth[_0xd2be('0xd')](),controller[_0xd2be('0x10')]);router[_0xd2be('0x11')](_0xd2be('0xc'),auth[_0xd2be('0xd')](),controller['update']);router['delete']('/:id',auth[_0xd2be('0xd')](),controller['destroy']);module[_0xd2be('0x12')]=router;
\ No newline at end of file
index b1f83d6..08edf58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc2=['string','variable','customVariable','picklist','STRING','BOOLEAN','exports','ENUM'];(function(_0x52ddc8,_0xada5d6){var _0x41e9c3=function(_0x432441){while(--_0x432441){_0x52ddc8['push'](_0x52ddc8['shift']());}};_0x41e9c3(++_0xada5d6);}(_0xacc2,0x13e));var _0x2acc=function(_0x48ebf8,_0xfe2fd0){_0x48ebf8=_0x48ebf8-0x0;var _0x5c7125=_0xacc2[_0x48ebf8];return _0x5c7125;};'use strict';var Sequelize=require('sequelize');module[_0x2acc('0x0')]={'type':{'type':Sequelize[_0x2acc('0x1')](_0x2acc('0x2'),_0x2acc('0x3'),_0x2acc('0x4'),'keyValue',_0x2acc('0x5')),'defaultValue':_0x2acc('0x2')},'content':{'type':Sequelize[_0x2acc('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x2acc('0x1')](_0x2acc('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x2acc('0x6')]},'idField':{'type':Sequelize[_0x2acc('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x2acc('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd317=['customVariable','keyValue','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM','variable'];(function(_0x57e630,_0x42f4a8){var _0x391bf6=function(_0x2b5875){while(--_0x2b5875){_0x57e630['push'](_0x57e630['shift']());}};_0x391bf6(++_0x42f4a8);}(_0xd317,0x9c));var _0x7d31=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xd317[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0x7d31('0x0'));module[_0x7d31('0x1')]={'type':{'type':Sequelize[_0x7d31('0x2')]('string',_0x7d31('0x3'),_0x7d31('0x4'),_0x7d31('0x5'),_0x7d31('0x6')),'defaultValue':_0x7d31('0x7')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7d31('0x8')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x7d31('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7d31('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7d31('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7d31('0x8')]}};
\ No newline at end of file
index 7769424..c34e4f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b7=['body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','update','then','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','create'];(function(_0x1c671f,_0x15dc2b){var _0x3e4ca6=function(_0x1683e0){while(--_0x1683e0){_0x1c671f['push'](_0x1c671f['shift']());}};_0x3e4ca6(++_0x15dc2b);}(_0x14b7,0xdf));var _0x714b=function(_0x23733d,_0x56f0a1){_0x23733d=_0x23733d-0x0;var _0x4a9cc4=_0x14b7[_0x23733d];return _0x4a9cc4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x714b('0x0'));var zipdir=require(_0x714b('0x1'));var jsonpatch=require(_0x714b('0x2'));var rp=require(_0x714b('0x3'));var moment=require(_0x714b('0x4'));var BPromise=require(_0x714b('0x5'));var Mustache=require(_0x714b('0x6'));var util=require('util');var path=require(_0x714b('0x7'));var sox=require(_0x714b('0x8'));var csv=require(_0x714b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x714b('0xa'));var _=require(_0x714b('0xb'));var squel=require(_0x714b('0xc'));var crypto=require(_0x714b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x714b('0xe'));var toCsv=require(_0x714b('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x714b('0xf'));var authService=require(_0x714b('0x10'));var qs=require(_0x714b('0x11'));var as=require(_0x714b('0x12'));var hardwareService=require(_0x714b('0x13'));var logger=require(_0x714b('0x14'))(_0x714b('0x15'));var utils=require(_0x714b('0x16'));var config=require(_0x714b('0x17'));var licenseUtil=require(_0x714b('0x18'));var db=require(_0x714b('0x19'))['db'];function respondWithStatusCode(_0x43292b,_0x14c0fe){_0x14c0fe=_0x14c0fe||0xcc;return function(_0x2ee122){if(_0x2ee122){return _0x43292b[_0x714b('0x1a')](_0x14c0fe);}return _0x43292b[_0x714b('0x1b')](_0x14c0fe)[_0x714b('0x1c')]();};}function respondWithResult(_0xc9b217,_0x135664){_0x135664=_0x135664||0xc8;return function(_0x18ce2b){if(_0x18ce2b){return _0xc9b217[_0x714b('0x1b')](_0x135664)[_0x714b('0x1d')](_0x18ce2b);}};}function respondWithFilteredResult(_0xca1116,_0x24e068){return function(_0x4084f9){if(_0x4084f9){var _0x3397aa=typeof _0x24e068[_0x714b('0x1e')]==='undefined'&&typeof _0x24e068[_0x714b('0x1f')]===_0x714b('0x20');var _0x16dfef=_0x4084f9['count'];var _0x3c2d29=_0x3397aa?0x0:_0x24e068['offset'];var _0x504bfa=_0x3397aa?_0x4084f9[_0x714b('0x21')]:_0x24e068[_0x714b('0x1e')]+_0x24e068['limit'];var _0x42602d;if(_0x504bfa>=_0x16dfef){_0x504bfa=_0x16dfef;_0x42602d=0xc8;}else{_0x42602d=0xce;}_0xca1116['status'](_0x42602d);return _0xca1116['set']('Content-Range',_0x3c2d29+'-'+_0x504bfa+'/'+_0x16dfef)[_0x714b('0x1d')](_0x4084f9);}return null;};}function patchUpdates(_0x147d63){return function(_0x16eeee){try{jsonpatch[_0x714b('0x22')](_0x16eeee,_0x147d63,!![]);}catch(_0x2e9b0c){return BPromise[_0x714b('0x23')](_0x2e9b0c);}return _0x16eeee['save']();};}function saveUpdates(_0x802f95,_0x387965){return function(_0x4b396f){if(_0x4b396f){return _0x4b396f[_0x714b('0x24')](_0x802f95)[_0x714b('0x25')](function(_0xfcd96c){return _0xfcd96c;});}return null;};}function removeEntity(_0x352600,_0x469b34){return function(_0x46117b){if(_0x46117b){return _0x46117b['destroy']()[_0x714b('0x25')](function(){_0x352600['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43d358,_0x38207f){return function(_0x5e8edf){if(!_0x5e8edf){_0x43d358['sendStatus'](0x194);}return _0x5e8edf;};}function handleError(_0x1ab374,_0x3bffba){_0x3bffba=_0x3bffba||0x1f4;return function(_0x2740dd){logger[_0x714b('0x26')](_0x2740dd[_0x714b('0x27')]);if(_0x2740dd['name']){delete _0x2740dd[_0x714b('0x28')];}_0x1ab374[_0x714b('0x1b')](_0x3bffba)[_0x714b('0x29')](_0x2740dd);};}exports[_0x714b('0x2a')]=function(_0x57afc3,_0x382cda){var _0x20d7f4={},_0x55e6e7={},_0x2f4416={'count':0x0,'rows':[]};var _0x59f3c5=_[_0x714b('0x2b')](db[_0x714b('0x2c')][_0x714b('0x2d')],function(_0x46f9a4){return{'name':_0x46f9a4[_0x714b('0x2e')],'type':_0x46f9a4[_0x714b('0x2f')][_0x714b('0x30')]};});_0x55e6e7[_0x714b('0x31')]=_[_0x714b('0x2b')](_0x59f3c5,_0x714b('0x28'));_0x55e6e7[_0x714b('0x32')]=_[_0x714b('0x33')](_0x57afc3[_0x714b('0x32')]);_0x55e6e7[_0x714b('0x34')]=_[_0x714b('0x35')](_0x55e6e7[_0x714b('0x31')],_0x55e6e7[_0x714b('0x32')]);_0x20d7f4[_0x714b('0x36')]=_[_0x714b('0x35')](_0x55e6e7[_0x714b('0x31')],qs['fields'](_0x57afc3[_0x714b('0x32')][_0x714b('0x37')]));_0x20d7f4[_0x714b('0x36')]=_0x20d7f4['attributes'][_0x714b('0x38')]?_0x20d7f4[_0x714b('0x36')]:_0x55e6e7[_0x714b('0x31')];if(!_0x57afc3[_0x714b('0x32')][_0x714b('0x39')]('nolimit')){_0x20d7f4[_0x714b('0x1f')]=qs[_0x714b('0x1f')](_0x57afc3[_0x714b('0x32')][_0x714b('0x1f')]);_0x20d7f4[_0x714b('0x1e')]=qs[_0x714b('0x1e')](_0x57afc3[_0x714b('0x32')][_0x714b('0x1e')]);}_0x20d7f4[_0x714b('0x3a')]=qs['sort'](_0x57afc3[_0x714b('0x32')]['sort']);_0x20d7f4[_0x714b('0x3b')]=qs[_0x714b('0x34')](_[_0x714b('0x3c')](_0x57afc3['query'],_0x55e6e7[_0x714b('0x34')]),_0x59f3c5);if(_0x57afc3[_0x714b('0x32')][_0x714b('0x3d')]){_0x20d7f4[_0x714b('0x3b')]=_[_0x714b('0x3e')](_0x20d7f4[_0x714b('0x3b')],{'$or':_[_0x714b('0x2b')](_0x59f3c5,function(_0x269b94){if(_0x269b94[_0x714b('0x2f')]!==_0x714b('0x3f')){var _0x2841b2={};_0x2841b2[_0x269b94[_0x714b('0x28')]]={'$like':'%'+_0x57afc3[_0x714b('0x32')]['filter']+'%'};return _0x2841b2;}})});}_0x20d7f4=_['merge']({},_0x20d7f4,_0x57afc3['options']);var _0x6f1d23={'where':_0x20d7f4[_0x714b('0x3b')]};return db['Dynamics365Field']['count'](_0x6f1d23)[_0x714b('0x25')](function(_0x14c94f){_0x2f4416[_0x714b('0x21')]=_0x14c94f;if(_0x57afc3[_0x714b('0x32')]['includeAll']){_0x20d7f4[_0x714b('0x40')]=[{'all':!![]}];}return db[_0x714b('0x2c')][_0x714b('0x41')](_0x20d7f4);})['then'](function(_0x433422){_0x2f4416['rows']=_0x433422;return _0x2f4416;})['then'](respondWithFilteredResult(_0x382cda,_0x20d7f4))['catch'](handleError(_0x382cda,null));};exports[_0x714b('0x42')]=function(_0x374af1,_0x500978){var _0x319db4={'raw':!![],'where':{'id':_0x374af1[_0x714b('0x43')]['id']}},_0x4e11c2={};_0x4e11c2[_0x714b('0x31')]=_[_0x714b('0x33')](db[_0x714b('0x2c')][_0x714b('0x2d')]);_0x4e11c2[_0x714b('0x32')]=_[_0x714b('0x33')](_0x374af1[_0x714b('0x32')]);_0x4e11c2['filters']=_[_0x714b('0x35')](_0x4e11c2[_0x714b('0x31')],_0x4e11c2[_0x714b('0x32')]);_0x319db4['attributes']=_['intersection'](_0x4e11c2[_0x714b('0x31')],qs[_0x714b('0x37')](_0x374af1['query'][_0x714b('0x37')]));_0x319db4['attributes']=_0x319db4[_0x714b('0x36')][_0x714b('0x38')]?_0x319db4['attributes']:_0x4e11c2[_0x714b('0x31')];if(_0x374af1['query'][_0x714b('0x44')]){_0x319db4['include']=[{'all':!![]}];}_0x319db4=_['merge']({},_0x319db4,_0x374af1[_0x714b('0x45')]);return db[_0x714b('0x2c')][_0x714b('0x46')](_0x319db4)[_0x714b('0x25')](handleEntityNotFound(_0x500978,null))[_0x714b('0x25')](respondWithResult(_0x500978,null))[_0x714b('0x47')](handleError(_0x500978,null));};exports['create']=function(_0x573ee2,_0x25bc86){return db['Dynamics365Field'][_0x714b('0x48')](_0x573ee2['body'],{})['then'](respondWithResult(_0x25bc86,0xc9))['catch'](handleError(_0x25bc86,null));};exports[_0x714b('0x24')]=function(_0x58036f,_0x542dfc){if(_0x58036f[_0x714b('0x49')]['id']){delete _0x58036f[_0x714b('0x49')]['id'];}return db[_0x714b('0x2c')]['find']({'where':{'id':_0x58036f['params']['id']}})[_0x714b('0x25')](handleEntityNotFound(_0x542dfc,null))[_0x714b('0x25')](saveUpdates(_0x58036f[_0x714b('0x49')],null))[_0x714b('0x25')](respondWithResult(_0x542dfc,null))[_0x714b('0x47')](handleError(_0x542dfc,null));};exports['destroy']=function(_0x3310a3,_0x3dccaa){return db[_0x714b('0x2c')][_0x714b('0x46')]({'where':{'id':_0x3310a3[_0x714b('0x43')]['id']}})['then'](handleEntityNotFound(_0x3dccaa,null))[_0x714b('0x25')](removeEntity(_0x3dccaa,null))[_0x714b('0x47')](handleError(_0x3dccaa,null));};
\ No newline at end of file
+var _0x9278=['count','set','Content-Range','save','update','then','destroy','end','error','stack','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','Dynamics365Field','findAll','catch','params','rawAttributes','length','find','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','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','status','json','offset','undefined'];(function(_0x3376e9,_0x537d51){var _0xa223cf=function(_0x315fcd){while(--_0x315fcd){_0x3376e9['push'](_0x3376e9['shift']());}};_0xa223cf(++_0x537d51);}(_0x9278,0x161));var _0x8927=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x9278[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0x8927('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8927('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8927('0x2'));var moment=require(_0x8927('0x3'));var BPromise=require(_0x8927('0x4'));var Mustache=require(_0x8927('0x5'));var util=require(_0x8927('0x6'));var path=require(_0x8927('0x7'));var sox=require(_0x8927('0x8'));var csv=require(_0x8927('0x9'));var ejs=require(_0x8927('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8927('0xb'));var squel=require(_0x8927('0xc'));var crypto=require(_0x8927('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8927('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8927('0xf'));var Papa=require('papaparse');var Redis=require(_0x8927('0x10'));var authService=require(_0x8927('0x11'));var qs=require(_0x8927('0x12'));var as=require(_0x8927('0x13'));var hardwareService=require(_0x8927('0x14'));var logger=require(_0x8927('0x15'))(_0x8927('0x16'));var utils=require(_0x8927('0x17'));var config=require(_0x8927('0x18'));var licenseUtil=require(_0x8927('0x19'));var db=require(_0x8927('0x1a'))['db'];function respondWithStatusCode(_0x56958e,_0x335e59){_0x335e59=_0x335e59||0xcc;return function(_0x547beb){if(_0x547beb){return _0x56958e[_0x8927('0x1b')](_0x335e59);}return _0x56958e[_0x8927('0x1c')](_0x335e59)['end']();};}function respondWithResult(_0x4cb643,_0x344158){_0x344158=_0x344158||0xc8;return function(_0x276f65){if(_0x276f65){return _0x4cb643[_0x8927('0x1c')](_0x344158)[_0x8927('0x1d')](_0x276f65);}};}function respondWithFilteredResult(_0x22fd1c,_0x3bbc02){return function(_0x444697){if(_0x444697){var _0x4ed285=typeof _0x3bbc02[_0x8927('0x1e')]===_0x8927('0x1f')&&typeof _0x3bbc02['limit']==='undefined';var _0x3b2ad1=_0x444697[_0x8927('0x20')];var _0x2d9c97=_0x4ed285?0x0:_0x3bbc02[_0x8927('0x1e')];var _0x315cee=_0x4ed285?_0x444697[_0x8927('0x20')]:_0x3bbc02[_0x8927('0x1e')]+_0x3bbc02['limit'];var _0x2d1a7b;if(_0x315cee>=_0x3b2ad1){_0x315cee=_0x3b2ad1;_0x2d1a7b=0xc8;}else{_0x2d1a7b=0xce;}_0x22fd1c[_0x8927('0x1c')](_0x2d1a7b);return _0x22fd1c[_0x8927('0x21')](_0x8927('0x22'),_0x2d9c97+'-'+_0x315cee+'/'+_0x3b2ad1)['json'](_0x444697);}return null;};}function patchUpdates(_0x4f6c08){return function(_0x115944){try{jsonpatch['apply'](_0x115944,_0x4f6c08,!![]);}catch(_0x57d05e){return BPromise['reject'](_0x57d05e);}return _0x115944[_0x8927('0x23')]();};}function saveUpdates(_0x378ada,_0x6c88){return function(_0x25b64f){if(_0x25b64f){return _0x25b64f[_0x8927('0x24')](_0x378ada)[_0x8927('0x25')](function(_0x33e4e0){return _0x33e4e0;});}return null;};}function removeEntity(_0x5b0cec,_0x31e8a4){return function(_0x498ae1){if(_0x498ae1){return _0x498ae1[_0x8927('0x26')]()[_0x8927('0x25')](function(){_0x5b0cec['status'](0xcc)[_0x8927('0x27')]();});}};}function handleEntityNotFound(_0x1857e7,_0x20f01b){return function(_0x4a1b28){if(!_0x4a1b28){_0x1857e7['sendStatus'](0x194);}return _0x4a1b28;};}function handleError(_0x22bc02,_0x51d759){_0x51d759=_0x51d759||0x1f4;return function(_0x45f034){logger[_0x8927('0x28')](_0x45f034[_0x8927('0x29')]);if(_0x45f034[_0x8927('0x2a')]){delete _0x45f034[_0x8927('0x2a')];}_0x22bc02[_0x8927('0x1c')](_0x51d759)['send'](_0x45f034);};}exports[_0x8927('0x2b')]=function(_0x527395,_0xdc7123){var _0x54bf22={},_0x35a849={},_0x286743={'count':0x0,'rows':[]};var _0x48cb50=_[_0x8927('0x2c')](db['Dynamics365Field']['rawAttributes'],function(_0x53aa77){return{'name':_0x53aa77[_0x8927('0x2d')],'type':_0x53aa77[_0x8927('0x2e')][_0x8927('0x2f')]};});_0x35a849[_0x8927('0x30')]=_[_0x8927('0x2c')](_0x48cb50,_0x8927('0x2a'));_0x35a849[_0x8927('0x31')]=_[_0x8927('0x32')](_0x527395[_0x8927('0x31')]);_0x35a849[_0x8927('0x33')]=_[_0x8927('0x34')](_0x35a849[_0x8927('0x30')],_0x35a849[_0x8927('0x31')]);_0x54bf22[_0x8927('0x35')]=_[_0x8927('0x34')](_0x35a849['model'],qs[_0x8927('0x36')](_0x527395[_0x8927('0x31')][_0x8927('0x36')]));_0x54bf22[_0x8927('0x35')]=_0x54bf22[_0x8927('0x35')]['length']?_0x54bf22['attributes']:_0x35a849[_0x8927('0x30')];if(!_0x527395[_0x8927('0x31')][_0x8927('0x37')](_0x8927('0x38'))){_0x54bf22[_0x8927('0x39')]=qs[_0x8927('0x39')](_0x527395[_0x8927('0x31')][_0x8927('0x39')]);_0x54bf22['offset']=qs[_0x8927('0x1e')](_0x527395[_0x8927('0x31')][_0x8927('0x1e')]);}_0x54bf22[_0x8927('0x3a')]=qs[_0x8927('0x3b')](_0x527395[_0x8927('0x31')][_0x8927('0x3b')]);_0x54bf22[_0x8927('0x3c')]=qs[_0x8927('0x33')](_[_0x8927('0x3d')](_0x527395[_0x8927('0x31')],_0x35a849[_0x8927('0x33')]),_0x48cb50);if(_0x527395[_0x8927('0x31')]['filter']){_0x54bf22['where']=_[_0x8927('0x3e')](_0x54bf22[_0x8927('0x3c')],{'$or':_[_0x8927('0x2c')](_0x48cb50,function(_0x125779){if(_0x125779['type']!==_0x8927('0x3f')){var _0x2f8c1f={};_0x2f8c1f[_0x125779[_0x8927('0x2a')]]={'$like':'%'+_0x527395['query'][_0x8927('0x40')]+'%'};return _0x2f8c1f;}})});}_0x54bf22=_[_0x8927('0x3e')]({},_0x54bf22,_0x527395[_0x8927('0x41')]);var _0x5ae402={'where':_0x54bf22[_0x8927('0x3c')]};return db['Dynamics365Field']['count'](_0x5ae402)[_0x8927('0x25')](function(_0x32a645){_0x286743[_0x8927('0x20')]=_0x32a645;if(_0x527395['query'][_0x8927('0x42')]){_0x54bf22[_0x8927('0x43')]=[{'all':!![]}];}return db[_0x8927('0x44')][_0x8927('0x45')](_0x54bf22);})[_0x8927('0x25')](function(_0xf4bef0){_0x286743['rows']=_0xf4bef0;return _0x286743;})[_0x8927('0x25')](respondWithFilteredResult(_0xdc7123,_0x54bf22))[_0x8927('0x46')](handleError(_0xdc7123,null));};exports['show']=function(_0xdfd78d,_0x27fbfb){var _0x25a97e={'raw':!![],'where':{'id':_0xdfd78d[_0x8927('0x47')]['id']}},_0x44c0de={};_0x44c0de[_0x8927('0x30')]=_[_0x8927('0x32')](db[_0x8927('0x44')][_0x8927('0x48')]);_0x44c0de[_0x8927('0x31')]=_[_0x8927('0x32')](_0xdfd78d['query']);_0x44c0de[_0x8927('0x33')]=_[_0x8927('0x34')](_0x44c0de['model'],_0x44c0de[_0x8927('0x31')]);_0x25a97e[_0x8927('0x35')]=_[_0x8927('0x34')](_0x44c0de['model'],qs[_0x8927('0x36')](_0xdfd78d[_0x8927('0x31')][_0x8927('0x36')]));_0x25a97e[_0x8927('0x35')]=_0x25a97e[_0x8927('0x35')][_0x8927('0x49')]?_0x25a97e['attributes']:_0x44c0de[_0x8927('0x30')];if(_0xdfd78d[_0x8927('0x31')][_0x8927('0x42')]){_0x25a97e[_0x8927('0x43')]=[{'all':!![]}];}_0x25a97e=_['merge']({},_0x25a97e,_0xdfd78d[_0x8927('0x41')]);return db[_0x8927('0x44')][_0x8927('0x4a')](_0x25a97e)[_0x8927('0x25')](handleEntityNotFound(_0x27fbfb,null))[_0x8927('0x25')](respondWithResult(_0x27fbfb,null))['catch'](handleError(_0x27fbfb,null));};exports[_0x8927('0x4b')]=function(_0x1ae11e,_0x3acf95){return db[_0x8927('0x44')]['create'](_0x1ae11e[_0x8927('0x4c')],{})[_0x8927('0x25')](respondWithResult(_0x3acf95,0xc9))['catch'](handleError(_0x3acf95,null));};exports[_0x8927('0x24')]=function(_0x15899c,_0xdbf1b){if(_0x15899c[_0x8927('0x4c')]['id']){delete _0x15899c[_0x8927('0x4c')]['id'];}return db['Dynamics365Field'][_0x8927('0x4a')]({'where':{'id':_0x15899c[_0x8927('0x47')]['id']}})[_0x8927('0x25')](handleEntityNotFound(_0xdbf1b,null))[_0x8927('0x25')](saveUpdates(_0x15899c[_0x8927('0x4c')],null))['then'](respondWithResult(_0xdbf1b,null))[_0x8927('0x46')](handleError(_0xdbf1b,null));};exports[_0x8927('0x26')]=function(_0x18598e,_0x55970f){return db['Dynamics365Field'][_0x8927('0x4a')]({'where':{'id':_0x18598e['params']['id']}})[_0x8927('0x25')](handleEntityNotFound(_0x55970f,null))[_0x8927('0x25')](removeEntity(_0x55970f,null))[_0x8927('0x46')](handleError(_0x55970f,null));};
\ No newline at end of file
index 404150d..a6ccdb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30fa=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','dynamics365_unique_index','idField','FieldId'];(function(_0x5db4b0,_0x17dfb5){var _0x126c9f=function(_0x1f87f2){while(--_0x1f87f2){_0x5db4b0['push'](_0x5db4b0['shift']());}};_0x126c9f(++_0x17dfb5);}(_0x30fa,0x10e));var _0xa30f=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x30fa[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xa30f('0x0'));var util=require(_0xa30f('0x1'));var logger=require(_0xa30f('0x2'))(_0xa30f('0x3'));var moment=require(_0xa30f('0x4'));var BPromise=require(_0xa30f('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa30f('0x6'));var config=require(_0xa30f('0x7'));var attributes=require(_0xa30f('0x8'));module[_0xa30f('0x9')]=function(_0x544bb2,_0x1ec437){return _0x544bb2[_0xa30f('0xa')](_0xa30f('0xb'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0xa30f('0xc'),'fields':[_0xa30f('0xd'),_0xa30f('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf228=['path','rimraf','../../config/environment','exports','int_dynamics365_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4678f6,_0x19e88c){var _0x3271e2=function(_0x1ad6a1){while(--_0x1ad6a1){_0x4678f6['push'](_0x4678f6['shift']());}};_0x3271e2(++_0x19e88c);}(_0xf228,0x1c7));var _0x8f22=function(_0x89402e,_0x2781f9){_0x89402e=_0x89402e-0x0;var _0x5b7955=_0xf228[_0x89402e];return _0x5b7955;};'use strict';var _=require(_0x8f22('0x0'));var util=require(_0x8f22('0x1'));var logger=require(_0x8f22('0x2'))(_0x8f22('0x3'));var moment=require(_0x8f22('0x4'));var BPromise=require(_0x8f22('0x5'));var rp=require(_0x8f22('0x6'));var fs=require('fs');var path=require(_0x8f22('0x7'));var rimraf=require(_0x8f22('0x8'));var config=require(_0x8f22('0x9'));var attributes=require('./intDynamics365Field.attributes');module[_0x8f22('0xa')]=function(_0x7314f9,_0x317555){return _0x7314f9['define']('Dynamics365Field',attributes,{'tableName':_0x8f22('0xb'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x8f22('0xc'),_0x8f22('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0b4d00e..7dd0d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91a=['error','code','Dynamics365Field,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s'];(function(_0x2a3fc8,_0x28f8a4){var _0x2e02b5=function(_0x1c015b){while(--_0x1c015b){_0x2a3fc8['push'](_0x2a3fc8['shift']());}};_0x2e02b5(++_0x28f8a4);}(_0xb91a,0x16a));var _0xab91=function(_0x3c6cd7,_0x23ebf5){_0x3c6cd7=_0x3c6cd7-0x0;var _0x1a1d15=_0xb91a[_0x3c6cd7];return _0x1a1d15;};'use strict';var _=require('lodash');var util=require(_0xab91('0x0'));var moment=require(_0xab91('0x1'));var BPromise=require(_0xab91('0x2'));var rs=require(_0xab91('0x3'));var fs=require('fs');var Redis=require(_0xab91('0x4'));var db=require(_0xab91('0x5'))['db'];var utils=require(_0xab91('0x6'));var logger=require(_0xab91('0x7'))('rpc');var config=require(_0xab91('0x8'));var jayson=require(_0xab91('0x9'));var client=jayson[_0xab91('0xa')][_0xab91('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x50fe64,_0x3ff6e5,_0x1f6df5){return new BPromise(function(_0x236760,_0x222342){return client['request'](_0x50fe64,_0x1f6df5)['then'](function(_0x442c59){logger[_0xab91('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x3ff6e5,_0xab91('0xd'));logger[_0xab91('0xe')](_0xab91('0xf'),_0x3ff6e5,'request\x20sent',JSON['stringify'](_0x442c59));if(_0x442c59[_0xab91('0x10')]){if(_0x442c59[_0xab91('0x10')][_0xab91('0x11')]===0x1f4){logger[_0xab91('0x10')](_0xab91('0x12'),_0x3ff6e5,_0x442c59[_0xab91('0x10')][_0xab91('0x13')]);return _0x222342(_0x442c59[_0xab91('0x10')][_0xab91('0x13')]);}logger[_0xab91('0x10')](_0xab91('0x12'),_0x3ff6e5,_0x442c59[_0xab91('0x10')][_0xab91('0x13')]);return _0x236760(_0x442c59[_0xab91('0x10')][_0xab91('0x13')]);}else{logger[_0xab91('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x3ff6e5,'request\x20sent');_0x236760(_0x442c59[_0xab91('0x14')][_0xab91('0x13')]);}})['catch'](function(_0x2e7aa1){logger[_0xab91('0x10')](_0xab91('0x12'),_0x3ff6e5,_0x2e7aa1);_0x222342(_0x2e7aa1);});});}
\ No newline at end of file
+var _0x4451=['jayson/promise','client','http','then','request\x20sent','debug','stringify','error','Dynamics365Field,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x52a903,_0x3bab0f){var _0x14a58e=function(_0x325805){while(--_0x325805){_0x52a903['push'](_0x52a903['shift']());}};_0x14a58e(++_0x3bab0f);}(_0x4451,0x1ed));var _0x1445=function(_0x2630dd,_0x35e6b0){_0x2630dd=_0x2630dd-0x0;var _0x3a08ec=_0x4451[_0x2630dd];return _0x3a08ec;};'use strict';var _=require(_0x1445('0x0'));var util=require('util');var moment=require(_0x1445('0x1'));var BPromise=require(_0x1445('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1445('0x3'));var logger=require(_0x1445('0x4'))(_0x1445('0x5'));var config=require(_0x1445('0x6'));var jayson=require(_0x1445('0x7'));var client=jayson[_0x1445('0x8')][_0x1445('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57fd23,_0xf7a015,_0x41dd94){return new BPromise(function(_0x18fdb8,_0x19df19){return client['request'](_0x57fd23,_0x41dd94)[_0x1445('0xa')](function(_0xadc1ac){logger['info']('Dynamics365Field,\x20%s,\x20%s',_0xf7a015,_0x1445('0xb'));logger[_0x1445('0xc')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0xf7a015,_0x1445('0xb'),JSON[_0x1445('0xd')](_0xadc1ac));if(_0xadc1ac['error']){if(_0xadc1ac[_0x1445('0xe')]['code']===0x1f4){logger[_0x1445('0xe')](_0x1445('0xf'),_0xf7a015,_0xadc1ac[_0x1445('0xe')]['message']);return _0x19df19(_0xadc1ac['error'][_0x1445('0x10')]);}logger['error'](_0x1445('0xf'),_0xf7a015,_0xadc1ac[_0x1445('0xe')][_0x1445('0x10')]);return _0x18fdb8(_0xadc1ac[_0x1445('0xe')][_0x1445('0x10')]);}else{logger[_0x1445('0x11')](_0x1445('0xf'),_0xf7a015,_0x1445('0xb'));_0x18fdb8(_0xadc1ac[_0x1445('0x12')][_0x1445('0x10')]);}})[_0x1445('0x13')](function(_0x59533d){logger[_0x1445('0xe')]('Dynamics365Field,\x20%s,\x20%s',_0xf7a015,_0x59533d);_0x19df19(_0x59533d);});});}
\ No newline at end of file
index b48213f..79d7e5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x759f=['express','Router','../../components/auth/service','../../components/interaction/service','get','/:id','show','/:id/configurations','isAuthenticated','/:id/fields','getFields','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x313f7a,_0x441821){var _0x5f5367=function(_0x2a13ab){while(--_0x2a13ab){_0x313f7a['push'](_0x313f7a['shift']());}};_0x5f5367(++_0x441821);}(_0x759f,0xe6));var _0xf759=function(_0x38ee81,_0x32429e){_0x38ee81=_0x38ee81-0x0;var _0x2d5507=_0x759f[_0x38ee81];return _0x2d5507;};'use strict';var multer=require(_0xf759('0x0'));var util=require(_0xf759('0x1'));var path=require(_0xf759('0x2'));var timeout=require(_0xf759('0x3'));var express=require(_0xf759('0x4'));var router=express[_0xf759('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf759('0x6'));var interaction=require(_0xf759('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskAccount.controller');router[_0xf759('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf759('0x8')](_0xf759('0x9'),auth['isAuthenticated'](),controller[_0xf759('0xa')]);router[_0xf759('0x8')](_0xf759('0xb'),auth[_0xf759('0xc')](),controller['getConfigurations']);router['get'](_0xf759('0xd'),auth[_0xf759('0xc')](),controller[_0xf759('0xe')]);router['post']('/',auth[_0xf759('0xc')](),controller['create']);router['post'](_0xf759('0xb'),auth[_0xf759('0xc')](),controller['addConfiguration']);router['put'](_0xf759('0x9'),auth[_0xf759('0xc')](),controller[_0xf759('0xf')]);router['delete'](_0xf759('0x9'),auth[_0xf759('0xc')](),controller[_0xf759('0x10')]);module[_0xf759('0x11')]=router;
\ No newline at end of file
+var _0xd4c6=['/:id/configurations','/:id/fields','getFields','create','addConfiguration','put','update','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','/:id'];(function(_0x3cb6dc,_0x120dd3){var _0x47ec89=function(_0x55150a){while(--_0x55150a){_0x3cb6dc['push'](_0x3cb6dc['shift']());}};_0x47ec89(++_0x120dd3);}(_0xd4c6,0x144));var _0x6d4c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd4c6[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x6d4c('0x0'));var util=require('util');var path=require(_0x6d4c('0x1'));var timeout=require(_0x6d4c('0x2'));var express=require(_0x6d4c('0x3'));var router=express[_0x6d4c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6d4c('0x5'));var interaction=require(_0x6d4c('0x6'));var config=require(_0x6d4c('0x7'));var controller=require(_0x6d4c('0x8'));router[_0x6d4c('0x9')]('/',auth[_0x6d4c('0xa')](),controller['index']);router[_0x6d4c('0x9')](_0x6d4c('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0x6d4c('0xc'),auth[_0x6d4c('0xa')](),controller['getConfigurations']);router[_0x6d4c('0x9')](_0x6d4c('0xd'),auth[_0x6d4c('0xa')](),controller[_0x6d4c('0xe')]);router['post']('/',auth[_0x6d4c('0xa')](),controller[_0x6d4c('0xf')]);router['post'](_0x6d4c('0xc'),auth[_0x6d4c('0xa')](),controller[_0x6d4c('0x10')]);router[_0x6d4c('0x11')](_0x6d4c('0xb'),auth[_0x6d4c('0xa')](),controller[_0x6d4c('0x12')]);router[_0x6d4c('0x13')](_0x6d4c('0xb'),auth[_0x6d4c('0xa')](),controller['destroy']);module[_0x6d4c('0x14')]=router;
\ No newline at end of file
index 0165211..d11e843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['remoteUri','exports','STRING'];(function(_0x22da9f,_0x321b1b){var _0x43758d=function(_0x7b556f){while(--_0x7b556f){_0x22da9f['push'](_0x22da9f['shift']());}};_0x43758d(++_0x321b1b);}(_0x8603,0x190));var _0x3860=function(_0x59216e,_0x867c5b){_0x59216e=_0x59216e-0x0;var _0x20e424=_0x8603[_0x59216e];return _0x20e424;};'use strict';var Sequelize=require('sequelize');module[_0x3860('0x0')]={'name':{'type':Sequelize[_0x3860('0x1')]},'description':{'type':Sequelize[_0x3860('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'apiKey':{'type':Sequelize[_0x3860('0x1')]},'remoteUri':{'type':Sequelize[_0x3860('0x1')],'unique':_0x3860('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xeb3b=['sequelize','exports','STRING'];(function(_0x53b53e,_0x498437){var _0xbb6179=function(_0x3975eb){while(--_0x3975eb){_0x53b53e['push'](_0x53b53e['shift']());}};_0xbb6179(++_0x498437);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x4ea6af,_0x4aa32e){_0x4ea6af=_0x4ea6af-0x0;var _0x4cb1e6=_0xeb3b[_0x4ea6af];return _0x4cb1e6;};'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
index b9694f9..b86d2a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0901=['limit','count','set','apply','reject','save','then','error','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','destroy','getConfigurations','length','order','addConfiguration','findOne','AccountId','Subjects','channel','getDescriptions','FreshdeskConfiguration','FreshdeskField','Descriptions','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','%s/%s','api/v2/ticket_fields','format','%s:X','base64','requester','agent','description','group','source','ticket_type','company','default','custom_text','custom_dropdown','label','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined'];(function(_0x2a55f8,_0x540ac4){var _0x245efd=function(_0x4dbc19){while(--_0x4dbc19){_0x2a55f8['push'](_0x2a55f8['shift']());}};_0x245efd(++_0x540ac4);}(_0x0901,0x134));var _0x1090=function(_0x4320cb,_0x3fa014){_0x4320cb=_0x4320cb-0x0;var _0x218846=_0x0901[_0x4320cb];return _0x218846;};'use strict';var emlformat=require(_0x1090('0x0'));var rimraf=require(_0x1090('0x1'));var zipdir=require(_0x1090('0x2'));var jsonpatch=require(_0x1090('0x3'));var rp=require(_0x1090('0x4'));var moment=require(_0x1090('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1090('0x6'));var path=require(_0x1090('0x7'));var sox=require(_0x1090('0x8'));var csv=require(_0x1090('0x9'));var ejs=require(_0x1090('0xa'));var fs=require('fs');var fs_extra=require(_0x1090('0xb'));var _=require('lodash');var squel=require(_0x1090('0xc'));var crypto=require(_0x1090('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1090('0xe'));var toCsv=require(_0x1090('0x9'));var querystring=require(_0x1090('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1090('0x10'));var as=require(_0x1090('0x11'));var hardwareService=require(_0x1090('0x12'));var logger=require('../../config/logger')(_0x1090('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1090('0x14'));var db=require(_0x1090('0x15'))['db'];var integrations=require(_0x1090('0x16'));function respondWithStatusCode(_0x2c0afa,_0x4250c6){_0x4250c6=_0x4250c6||0xcc;return function(_0x793497){if(_0x793497){return _0x2c0afa[_0x1090('0x17')](_0x4250c6);}return _0x2c0afa[_0x1090('0x18')](_0x4250c6)[_0x1090('0x19')]();};}function respondWithResult(_0x897055,_0x477a41){_0x477a41=_0x477a41||0xc8;return function(_0x43317a){if(_0x43317a){return _0x897055[_0x1090('0x18')](_0x477a41)['json'](_0x43317a);}};}function respondWithFilteredResult(_0x465cbd,_0x28a09a){return function(_0x14e6dc){if(_0x14e6dc){var _0x56d312=typeof _0x28a09a[_0x1090('0x1a')]===_0x1090('0x1b')&&typeof _0x28a09a[_0x1090('0x1c')]===_0x1090('0x1b');var _0x365975=_0x14e6dc['count'];var _0x3db4bb=_0x56d312?0x0:_0x28a09a[_0x1090('0x1a')];var _0xf77749=_0x56d312?_0x14e6dc[_0x1090('0x1d')]:_0x28a09a[_0x1090('0x1a')]+_0x28a09a[_0x1090('0x1c')];var _0x3ed180;if(_0xf77749>=_0x365975){_0xf77749=_0x365975;_0x3ed180=0xc8;}else{_0x3ed180=0xce;}_0x465cbd[_0x1090('0x18')](_0x3ed180);return _0x465cbd[_0x1090('0x1e')]('Content-Range',_0x3db4bb+'-'+_0xf77749+'/'+_0x365975)['json'](_0x14e6dc);}return null;};}function patchUpdates(_0x8df216){return function(_0x51514c){try{jsonpatch[_0x1090('0x1f')](_0x51514c,_0x8df216,!![]);}catch(_0x28502a){return BPromise[_0x1090('0x20')](_0x28502a);}return _0x51514c[_0x1090('0x21')]();};}function saveUpdates(_0x211b39,_0x29633c){return function(_0x2f04da){if(_0x2f04da){return _0x2f04da['update'](_0x211b39)['then'](function(_0x4c7434){return _0x4c7434;});}return null;};}function removeEntity(_0x48b5c0,_0x4d187a){return function(_0x53d6c1){if(_0x53d6c1){return _0x53d6c1['destroy']()[_0x1090('0x22')](function(){_0x48b5c0[_0x1090('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3face7,_0x50267d){return function(_0x12ee12){if(!_0x12ee12){_0x3face7[_0x1090('0x17')](0x194);}return _0x12ee12;};}function handleError(_0x3a2123,_0x5e2859){_0x5e2859=_0x5e2859||0x1f4;return function(_0x5d0e70){logger[_0x1090('0x23')](_0x5d0e70['stack']);if(_0x5d0e70[_0x1090('0x24')]){delete _0x5d0e70['name'];}_0x3a2123[_0x1090('0x18')](_0x5e2859)[_0x1090('0x25')](_0x5d0e70);};}exports[_0x1090('0x26')]=function(_0x3b7f54,_0x257645){var _0x5bd6ab={},_0x23f8a2={},_0x19fcdb={'count':0x0,'rows':[]};var _0x1d6d1e=_[_0x1090('0x27')](db[_0x1090('0x28')][_0x1090('0x29')],function(_0x312e27){return{'name':_0x312e27[_0x1090('0x2a')],'type':_0x312e27[_0x1090('0x2b')][_0x1090('0x2c')]};});_0x23f8a2['model']=_['map'](_0x1d6d1e,_0x1090('0x24'));_0x23f8a2[_0x1090('0x2d')]=_[_0x1090('0x2e')](_0x3b7f54['query']);_0x23f8a2[_0x1090('0x2f')]=_[_0x1090('0x30')](_0x23f8a2[_0x1090('0x31')],_0x23f8a2[_0x1090('0x2d')]);_0x5bd6ab[_0x1090('0x32')]=_['intersection'](_0x23f8a2[_0x1090('0x31')],qs[_0x1090('0x33')](_0x3b7f54[_0x1090('0x2d')][_0x1090('0x33')]));_0x5bd6ab[_0x1090('0x32')]=_0x5bd6ab[_0x1090('0x32')]['length']?_0x5bd6ab[_0x1090('0x32')]:_0x23f8a2['model'];if(!_0x3b7f54[_0x1090('0x2d')][_0x1090('0x34')](_0x1090('0x35'))){_0x5bd6ab[_0x1090('0x1c')]=qs['limit'](_0x3b7f54[_0x1090('0x2d')][_0x1090('0x1c')]);_0x5bd6ab[_0x1090('0x1a')]=qs['offset'](_0x3b7f54['query'][_0x1090('0x1a')]);}_0x5bd6ab['order']=qs[_0x1090('0x36')](_0x3b7f54['query'][_0x1090('0x36')]);_0x5bd6ab['where']=qs[_0x1090('0x2f')](_[_0x1090('0x37')](_0x3b7f54['query'],_0x23f8a2[_0x1090('0x2f')]),_0x1d6d1e);if(_0x3b7f54[_0x1090('0x2d')][_0x1090('0x38')]){_0x5bd6ab[_0x1090('0x39')]=_[_0x1090('0x3a')](_0x5bd6ab[_0x1090('0x39')],{'$or':_[_0x1090('0x27')](_0x1d6d1e,function(_0x3e96c1){if(_0x3e96c1[_0x1090('0x2b')]!==_0x1090('0x3b')){var _0x19d96b={};_0x19d96b[_0x3e96c1['name']]={'$like':'%'+_0x3b7f54[_0x1090('0x2d')][_0x1090('0x38')]+'%'};return _0x19d96b;}})});}_0x5bd6ab=_[_0x1090('0x3a')]({},_0x5bd6ab,_0x3b7f54[_0x1090('0x3c')]);var _0x21b0c8={'where':_0x5bd6ab[_0x1090('0x39')]};return db['FreshdeskAccount']['count'](_0x21b0c8)[_0x1090('0x22')](function(_0xb4323e){_0x19fcdb[_0x1090('0x1d')]=_0xb4323e;if(_0x3b7f54[_0x1090('0x2d')][_0x1090('0x3d')]){_0x5bd6ab[_0x1090('0x3e')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x1090('0x3f')](_0x5bd6ab);})[_0x1090('0x22')](function(_0x25de72){_0x19fcdb[_0x1090('0x40')]=_0x25de72;return _0x19fcdb;})[_0x1090('0x22')](respondWithFilteredResult(_0x257645,_0x5bd6ab))[_0x1090('0x41')](handleError(_0x257645,null));};exports[_0x1090('0x42')]=function(_0x1a7ef4,_0xe5273a){var _0x56876c={'raw':![],'where':{'id':_0x1a7ef4[_0x1090('0x43')]['id']}},_0x221720={};_0x221720['model']=_[_0x1090('0x2e')](db[_0x1090('0x28')][_0x1090('0x29')]);_0x221720[_0x1090('0x2d')]=_[_0x1090('0x2e')](_0x1a7ef4['query']);_0x221720[_0x1090('0x2f')]=_[_0x1090('0x30')](_0x221720[_0x1090('0x31')],_0x221720[_0x1090('0x2d')]);_0x56876c[_0x1090('0x32')]=_['intersection'](_0x221720[_0x1090('0x31')],qs[_0x1090('0x33')](_0x1a7ef4[_0x1090('0x2d')]['fields']));_0x56876c['attributes']=_0x56876c[_0x1090('0x32')]['length']?_0x56876c[_0x1090('0x32')]:_0x221720[_0x1090('0x31')];if(_0x1a7ef4[_0x1090('0x2d')]['includeAll']){_0x56876c['include']=[{'all':!![]}];}_0x56876c=_[_0x1090('0x3a')]({},_0x56876c,_0x1a7ef4[_0x1090('0x3c')]);return db['FreshdeskAccount'][_0x1090('0x44')](_0x56876c)[_0x1090('0x22')](handleEntityNotFound(_0xe5273a,null))['then'](respondWithResult(_0xe5273a,null))[_0x1090('0x41')](handleError(_0xe5273a,null));};exports[_0x1090('0x45')]=function(_0x38622e,_0x11d861){return db[_0x1090('0x28')]['create'](_0x38622e['body'],{})[_0x1090('0x22')](respondWithResult(_0x11d861,0xc9))['catch'](handleError(_0x11d861,null));};exports[_0x1090('0x46')]=function(_0x1e45a9,_0x8171eb){if(_0x1e45a9['body']['id']){delete _0x1e45a9[_0x1090('0x47')]['id'];}return db[_0x1090('0x28')][_0x1090('0x44')]({'where':{'id':_0x1e45a9[_0x1090('0x43')]['id']}})[_0x1090('0x22')](handleEntityNotFound(_0x8171eb,null))[_0x1090('0x22')](saveUpdates(_0x1e45a9[_0x1090('0x47')],null))[_0x1090('0x22')](respondWithResult(_0x8171eb,null))[_0x1090('0x41')](handleError(_0x8171eb,null));};exports[_0x1090('0x48')]=function(_0x36c2dd,_0x419b22){return db[_0x1090('0x28')][_0x1090('0x44')]({'where':{'id':_0x36c2dd['params']['id']}})[_0x1090('0x22')](handleEntityNotFound(_0x419b22,null))[_0x1090('0x22')](removeEntity(_0x419b22,null))['catch'](handleError(_0x419b22,null));};exports[_0x1090('0x49')]=function(_0x4d0b43,_0x1ab946,_0x1a94bd){var _0x4bb3e9={};var _0x30a7c7={};var _0xf82aa5;var _0x540e20;return db[_0x1090('0x28')]['findOne']({'where':{'id':_0x4d0b43['params']['id']}})[_0x1090('0x22')](handleEntityNotFound(_0x1ab946,null))[_0x1090('0x22')](function(_0x3187b9){if(_0x3187b9){_0xf82aa5=_0x3187b9;_0x30a7c7[_0x1090('0x31')]=_[_0x1090('0x2e')](db['FreshdeskConfiguration']['rawAttributes']);_0x30a7c7[_0x1090('0x2d')]=_[_0x1090('0x2e')](_0x4d0b43[_0x1090('0x2d')]);_0x30a7c7[_0x1090('0x2f')]=_['intersection'](_0x30a7c7['model'],_0x30a7c7[_0x1090('0x2d')]);_0x4bb3e9['attributes']=_['intersection'](_0x30a7c7[_0x1090('0x31')],qs[_0x1090('0x33')](_0x4d0b43[_0x1090('0x2d')][_0x1090('0x33')]));_0x4bb3e9[_0x1090('0x32')]=_0x4bb3e9[_0x1090('0x32')][_0x1090('0x4a')]?_0x4bb3e9[_0x1090('0x32')]:_0x30a7c7[_0x1090('0x31')];_0x4bb3e9[_0x1090('0x4b')]=qs[_0x1090('0x36')](_0x4d0b43[_0x1090('0x2d')]['sort']);_0x4bb3e9[_0x1090('0x39')]=qs[_0x1090('0x2f')](_[_0x1090('0x37')](_0x4d0b43[_0x1090('0x2d')],_0x30a7c7[_0x1090('0x2f')]));if(_0x4d0b43[_0x1090('0x2d')][_0x1090('0x38')]){_0x4bb3e9['where']=_[_0x1090('0x3a')](_0x4bb3e9[_0x1090('0x39')],{'$or':_[_0x1090('0x27')](_0x4bb3e9['attributes'],function(_0x16fa9f){var _0x30b912={};_0x30b912[_0x16fa9f]={'$like':'%'+_0x4d0b43[_0x1090('0x2d')][_0x1090('0x38')]+'%'};return _0x30b912;})});}_0x4bb3e9=_['merge']({},_0x4bb3e9,_0x4d0b43[_0x1090('0x3c')]);return _0xf82aa5[_0x1090('0x49')](_0x4bb3e9);}})['then'](function(_0xfd7c03){if(_0xfd7c03){_0x540e20=_0xfd7c03[_0x1090('0x4a')];if(!_0x4d0b43[_0x1090('0x2d')][_0x1090('0x34')](_0x1090('0x35'))){_0x4bb3e9[_0x1090('0x1c')]=qs[_0x1090('0x1c')](_0x4d0b43[_0x1090('0x2d')][_0x1090('0x1c')]);_0x4bb3e9[_0x1090('0x1a')]=qs[_0x1090('0x1a')](_0x4d0b43['query'][_0x1090('0x1a')]);}return _0xf82aa5[_0x1090('0x49')](_0x4bb3e9);}})[_0x1090('0x22')](function(_0x496cc0){if(_0x496cc0){return _0x496cc0?{'count':_0x540e20,'rows':_0x496cc0}:null;}})['then'](respondWithResult(_0x1ab946,null))[_0x1090('0x41')](handleError(_0x1ab946,null));};exports[_0x1090('0x4c')]=function(_0x31e628,_0x188d09,_0x3b9d9f){if(_0x31e628['body']['id']){delete _0x31e628[_0x1090('0x47')]['id'];}return db[_0x1090('0x28')][_0x1090('0x4d')]({'where':{'id':_0x31e628[_0x1090('0x43')]['id']}})[_0x1090('0x22')](handleEntityNotFound(_0x188d09,null))['then'](function(_0xc50fb7){if(_0xc50fb7){_0x31e628['body'][_0x1090('0x4e')]=_0xc50fb7['id'];_0x31e628[_0x1090('0x47')][_0x1090('0x4f')]=integrations['getSubjects'](_0x31e628['body'][_0x1090('0x50')],_0x31e628[_0x1090('0x47')]['type']);_0x31e628[_0x1090('0x47')]['Descriptions']=integrations[_0x1090('0x51')](_0x31e628[_0x1090('0x47')][_0x1090('0x50')],_0x31e628['body'][_0x1090('0x2b')]);return db[_0x1090('0x52')][_0x1090('0x45')](_0x31e628['body'],{'include':[{'model':db[_0x1090('0x53')],'as':_0x1090('0x4f')},{'model':db['FreshdeskField'],'as':_0x1090('0x54')}]});}return null;})[_0x1090('0x22')](respondWithResult(_0x188d09,null))['catch'](handleError(_0x188d09,null));};exports[_0x1090('0x55')]=function(_0x8f2332,_0x3b8060,_0x3ca0d4){var _0x54e6cb='';return db['FreshdeskAccount'][_0x1090('0x4d')]({'where':{'id':_0x8f2332[_0x1090('0x43')]['id']},'attributes':['id','remoteUri',_0x1090('0x56')]})[_0x1090('0x22')](handleEntityNotFound(_0x3b8060,null))['then'](function(_0x2abbd1){if(_0x2abbd1){_0x54e6cb=_0x2abbd1[_0x1090('0x57')];var _0x583e9c=_0x54e6cb[_0x1090('0x58')](-0x1);if(_0x583e9c==='/'){_0x54e6cb=_0x54e6cb[_0x1090('0x59')](0x0,_0x54e6cb[_0x1090('0x5a')](_0x583e9c));}return rp({'method':'GET','uri':util['format'](_0x1090('0x5b'),_0x54e6cb,_0x1090('0x5c')),'headers':{'Authorization':util[_0x1090('0x5d')]('Basic\x20%s',new Buffer(util[_0x1090('0x5d')](_0x1090('0x5e'),_0x2abbd1[_0x1090('0x56')]))['toString'](_0x1090('0x5f')))},'json':!![]});}})['then'](function(_0x565501){if(_0x565501){var _0x399adc=[_0x1090('0x60'),'subject',_0x1090('0x61'),_0x1090('0x62'),'status','priority',_0x1090('0x63'),_0x1090('0x64'),_0x1090('0x65'),_0x1090('0x63'),_0x1090('0x66')];_['remove'](_0x565501,function(_0x2073a4){return _0x399adc['includes'](_0x2073a4[_0x1090('0x24')])||!_0x2073a4[_0x1090('0x67')]&&_0x2073a4['type']!==_0x1090('0x68')&&_0x2073a4[_0x1090('0x2b')]!==_0x1090('0x69');});return{'count':_0x565501[_0x1090('0x4a')],'rows':_['map'](_0x565501,function(_0x20d013){return{'id':_0x20d013[_0x1090('0x24')],'name':_0x20d013[_0x1090('0x6a')],'custom':!_0x20d013[_0x1090('0x67')],'options':_0x20d013[_0x1090('0x6b')]?_[_0x1090('0x27')](_0x20d013[_0x1090('0x6b')],function(_0x119ebb){return{'name':_[_0x1090('0x6c')](_0x119ebb),'value':_0x119ebb};}):[]};})};}})[_0x1090('0x22')](respondWithResult(_0x3b8060,null))[_0x1090('0x41')](function(_0x24e4ea){var _0x39f0e0=_0x8f2332['query']['test']?0x1f4:_0x24e4ea[_0x1090('0x6d')]||0x1f4;logger['error'](_0x1090('0x6e'),_0x1090('0x55'),_0x39f0e0,JSON['stringify'](_0x24e4ea));delete _0x24e4ea[_0x1090('0x24')];if(_0x39f0e0===0x191){_0x39f0e0=0x190;}_0x3b8060[_0x1090('0x18')](_0x39f0e0)['send'](_0x8f2332[_0x1090('0x2d')][_0x1090('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x24e4ea[_0x1090('0x6d')]}:_0x24e4ea);});};
\ No newline at end of file
+var _0x17d1=['set','json','apply','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','params','getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','base64','requester','subject','agent','description','priority','group','source','company','includes','default','custom_text','choices','test','stringify','statusCode','eml-format','rimraf','request-promise','moment','util','path','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','undefined','limit','offset'];(function(_0x340fc7,_0x12a901){var _0x586c93=function(_0xc3a679){while(--_0xc3a679){_0x340fc7['push'](_0x340fc7['shift']());}};_0x586c93(++_0x12a901);}(_0x17d1,0xc9));var _0x117d=function(_0x5d18e1,_0x5b54ae){_0x5d18e1=_0x5d18e1-0x0;var _0x3427d6=_0x17d1[_0x5d18e1];return _0x3427d6;};'use strict';var emlformat=require(_0x117d('0x0'));var rimraf=require(_0x117d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x117d('0x2'));var moment=require(_0x117d('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x117d('0x4'));var path=require(_0x117d('0x5'));var sox=require(_0x117d('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x117d('0x7'));var _=require('lodash');var squel=require(_0x117d('0x8'));var crypto=require(_0x117d('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x117d('0xa'));var toCsv=require(_0x117d('0xb'));var querystring=require(_0x117d('0xc'));var Papa=require(_0x117d('0xd'));var Redis=require(_0x117d('0xe'));var authService=require(_0x117d('0xf'));var qs=require(_0x117d('0x10'));var as=require(_0x117d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x117d('0x12'))(_0x117d('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x117d('0x14'));var db=require(_0x117d('0x15'))['db'];var integrations=require(_0x117d('0x16'));function respondWithStatusCode(_0x46ba04,_0x4e486d){_0x4e486d=_0x4e486d||0xcc;return function(_0x29b874){if(_0x29b874){return _0x46ba04['sendStatus'](_0x4e486d);}return _0x46ba04[_0x117d('0x17')](_0x4e486d)['end']();};}function respondWithResult(_0x322bd6,_0x2f8e6a){_0x2f8e6a=_0x2f8e6a||0xc8;return function(_0x363d13){if(_0x363d13){return _0x322bd6[_0x117d('0x17')](_0x2f8e6a)['json'](_0x363d13);}};}function respondWithFilteredResult(_0x3d7151,_0x47055e){return function(_0x24de6b){if(_0x24de6b){var _0x1be81c=typeof _0x47055e['offset']===_0x117d('0x18')&&typeof _0x47055e[_0x117d('0x19')]===_0x117d('0x18');var _0x1b487d=_0x24de6b['count'];var _0xaac8a4=_0x1be81c?0x0:_0x47055e['offset'];var _0x341dbe=_0x1be81c?_0x24de6b['count']:_0x47055e[_0x117d('0x1a')]+_0x47055e[_0x117d('0x19')];var _0x2adca2;if(_0x341dbe>=_0x1b487d){_0x341dbe=_0x1b487d;_0x2adca2=0xc8;}else{_0x2adca2=0xce;}_0x3d7151[_0x117d('0x17')](_0x2adca2);return _0x3d7151[_0x117d('0x1b')]('Content-Range',_0xaac8a4+'-'+_0x341dbe+'/'+_0x1b487d)[_0x117d('0x1c')](_0x24de6b);}return null;};}function patchUpdates(_0x1a816f){return function(_0x3e047e){try{jsonpatch[_0x117d('0x1d')](_0x3e047e,_0x1a816f,!![]);}catch(_0x385af8){return BPromise['reject'](_0x385af8);}return _0x3e047e[_0x117d('0x1e')]();};}function saveUpdates(_0x1def09,_0x512740){return function(_0x4f47ce){if(_0x4f47ce){return _0x4f47ce[_0x117d('0x1f')](_0x1def09)[_0x117d('0x20')](function(_0x4085d0){return _0x4085d0;});}return null;};}function removeEntity(_0x150cdf,_0x1fb841){return function(_0x460c06){if(_0x460c06){return _0x460c06[_0x117d('0x21')]()[_0x117d('0x20')](function(){_0x150cdf['status'](0xcc)[_0x117d('0x22')]();});}};}function handleEntityNotFound(_0x4cd194,_0x1cfc01){return function(_0x20915c){if(!_0x20915c){_0x4cd194[_0x117d('0x23')](0x194);}return _0x20915c;};}function handleError(_0x3d1722,_0x7aa4e3){_0x7aa4e3=_0x7aa4e3||0x1f4;return function(_0x5b95c6){logger[_0x117d('0x24')](_0x5b95c6[_0x117d('0x25')]);if(_0x5b95c6[_0x117d('0x26')]){delete _0x5b95c6[_0x117d('0x26')];}_0x3d1722[_0x117d('0x17')](_0x7aa4e3)[_0x117d('0x27')](_0x5b95c6);};}exports[_0x117d('0x28')]=function(_0x50f6b4,_0x27a526){var _0x2edd00={},_0x9bb65d={},_0x2f90fa={'count':0x0,'rows':[]};var _0x1cf52b=_[_0x117d('0x29')](db[_0x117d('0x2a')][_0x117d('0x2b')],function(_0x125055){return{'name':_0x125055['fieldName'],'type':_0x125055['type'][_0x117d('0x2c')]};});_0x9bb65d[_0x117d('0x2d')]=_[_0x117d('0x29')](_0x1cf52b,_0x117d('0x26'));_0x9bb65d[_0x117d('0x2e')]=_[_0x117d('0x2f')](_0x50f6b4['query']);_0x9bb65d[_0x117d('0x30')]=_[_0x117d('0x31')](_0x9bb65d[_0x117d('0x2d')],_0x9bb65d['query']);_0x2edd00[_0x117d('0x32')]=_[_0x117d('0x31')](_0x9bb65d[_0x117d('0x2d')],qs[_0x117d('0x33')](_0x50f6b4[_0x117d('0x2e')]['fields']));_0x2edd00[_0x117d('0x32')]=_0x2edd00[_0x117d('0x32')][_0x117d('0x34')]?_0x2edd00[_0x117d('0x32')]:_0x9bb65d[_0x117d('0x2d')];if(!_0x50f6b4[_0x117d('0x2e')][_0x117d('0x35')](_0x117d('0x36'))){_0x2edd00[_0x117d('0x19')]=qs[_0x117d('0x19')](_0x50f6b4[_0x117d('0x2e')][_0x117d('0x19')]);_0x2edd00['offset']=qs[_0x117d('0x1a')](_0x50f6b4[_0x117d('0x2e')][_0x117d('0x1a')]);}_0x2edd00[_0x117d('0x37')]=qs['sort'](_0x50f6b4[_0x117d('0x2e')][_0x117d('0x38')]);_0x2edd00[_0x117d('0x39')]=qs[_0x117d('0x30')](_[_0x117d('0x3a')](_0x50f6b4['query'],_0x9bb65d[_0x117d('0x30')]),_0x1cf52b);if(_0x50f6b4[_0x117d('0x2e')][_0x117d('0x3b')]){_0x2edd00['where']=_['merge'](_0x2edd00[_0x117d('0x39')],{'$or':_[_0x117d('0x29')](_0x1cf52b,function(_0x787407){if(_0x787407[_0x117d('0x3c')]!==_0x117d('0x3d')){var _0x794d8d={};_0x794d8d[_0x787407['name']]={'$like':'%'+_0x50f6b4[_0x117d('0x2e')]['filter']+'%'};return _0x794d8d;}})});}_0x2edd00=_[_0x117d('0x3e')]({},_0x2edd00,_0x50f6b4[_0x117d('0x3f')]);var _0x38a986={'where':_0x2edd00[_0x117d('0x39')]};return db[_0x117d('0x2a')][_0x117d('0x40')](_0x38a986)[_0x117d('0x20')](function(_0x4179fc){_0x2f90fa[_0x117d('0x40')]=_0x4179fc;if(_0x50f6b4[_0x117d('0x2e')][_0x117d('0x41')]){_0x2edd00[_0x117d('0x42')]=[{'all':!![]}];}return db[_0x117d('0x2a')][_0x117d('0x43')](_0x2edd00);})[_0x117d('0x20')](function(_0x59cf25){_0x2f90fa[_0x117d('0x44')]=_0x59cf25;return _0x2f90fa;})[_0x117d('0x20')](respondWithFilteredResult(_0x27a526,_0x2edd00))[_0x117d('0x45')](handleError(_0x27a526,null));};exports[_0x117d('0x46')]=function(_0x2e9f7b,_0x232abb){var _0x405901={'raw':![],'where':{'id':_0x2e9f7b['params']['id']}},_0x145d41={};_0x145d41[_0x117d('0x2d')]=_[_0x117d('0x2f')](db['FreshdeskAccount'][_0x117d('0x2b')]);_0x145d41[_0x117d('0x2e')]=_[_0x117d('0x2f')](_0x2e9f7b[_0x117d('0x2e')]);_0x145d41[_0x117d('0x30')]=_[_0x117d('0x31')](_0x145d41[_0x117d('0x2d')],_0x145d41[_0x117d('0x2e')]);_0x405901[_0x117d('0x32')]=_['intersection'](_0x145d41[_0x117d('0x2d')],qs[_0x117d('0x33')](_0x2e9f7b['query']['fields']));_0x405901[_0x117d('0x32')]=_0x405901[_0x117d('0x32')][_0x117d('0x34')]?_0x405901[_0x117d('0x32')]:_0x145d41[_0x117d('0x2d')];if(_0x2e9f7b[_0x117d('0x2e')][_0x117d('0x41')]){_0x405901[_0x117d('0x42')]=[{'all':!![]}];}_0x405901=_[_0x117d('0x3e')]({},_0x405901,_0x2e9f7b[_0x117d('0x3f')]);return db[_0x117d('0x2a')][_0x117d('0x47')](_0x405901)[_0x117d('0x20')](handleEntityNotFound(_0x232abb,null))[_0x117d('0x20')](respondWithResult(_0x232abb,null))['catch'](handleError(_0x232abb,null));};exports['create']=function(_0xc7c49f,_0xf926e2){return db[_0x117d('0x2a')][_0x117d('0x48')](_0xc7c49f[_0x117d('0x49')],{})[_0x117d('0x20')](respondWithResult(_0xf926e2,0xc9))[_0x117d('0x45')](handleError(_0xf926e2,null));};exports[_0x117d('0x1f')]=function(_0x678640,_0x48e879){if(_0x678640[_0x117d('0x49')]['id']){delete _0x678640[_0x117d('0x49')]['id'];}return db[_0x117d('0x2a')][_0x117d('0x47')]({'where':{'id':_0x678640['params']['id']}})['then'](handleEntityNotFound(_0x48e879,null))[_0x117d('0x20')](saveUpdates(_0x678640[_0x117d('0x49')],null))['then'](respondWithResult(_0x48e879,null))[_0x117d('0x45')](handleError(_0x48e879,null));};exports[_0x117d('0x21')]=function(_0x1d127e,_0x2cdbe2){return db[_0x117d('0x2a')][_0x117d('0x47')]({'where':{'id':_0x1d127e[_0x117d('0x4a')]['id']}})[_0x117d('0x20')](handleEntityNotFound(_0x2cdbe2,null))['then'](removeEntity(_0x2cdbe2,null))['catch'](handleError(_0x2cdbe2,null));};exports[_0x117d('0x4b')]=function(_0x2d96dd,_0x5d541e,_0x7d0cf8){var _0xb936e={};var _0x4919d9={};var _0x15ca3f;var _0x44330c;return db['FreshdeskAccount'][_0x117d('0x4c')]({'where':{'id':_0x2d96dd[_0x117d('0x4a')]['id']}})[_0x117d('0x20')](handleEntityNotFound(_0x5d541e,null))[_0x117d('0x20')](function(_0xc92cd){if(_0xc92cd){_0x15ca3f=_0xc92cd;_0x4919d9[_0x117d('0x2d')]=_[_0x117d('0x2f')](db[_0x117d('0x4d')][_0x117d('0x2b')]);_0x4919d9[_0x117d('0x2e')]=_[_0x117d('0x2f')](_0x2d96dd[_0x117d('0x2e')]);_0x4919d9[_0x117d('0x30')]=_[_0x117d('0x31')](_0x4919d9['model'],_0x4919d9['query']);_0xb936e['attributes']=_[_0x117d('0x31')](_0x4919d9[_0x117d('0x2d')],qs[_0x117d('0x33')](_0x2d96dd[_0x117d('0x2e')][_0x117d('0x33')]));_0xb936e[_0x117d('0x32')]=_0xb936e[_0x117d('0x32')][_0x117d('0x34')]?_0xb936e[_0x117d('0x32')]:_0x4919d9[_0x117d('0x2d')];_0xb936e['order']=qs[_0x117d('0x38')](_0x2d96dd[_0x117d('0x2e')]['sort']);_0xb936e[_0x117d('0x39')]=qs['filters'](_[_0x117d('0x3a')](_0x2d96dd[_0x117d('0x2e')],_0x4919d9[_0x117d('0x30')]));if(_0x2d96dd[_0x117d('0x2e')]['filter']){_0xb936e['where']=_[_0x117d('0x3e')](_0xb936e[_0x117d('0x39')],{'$or':_[_0x117d('0x29')](_0xb936e[_0x117d('0x32')],function(_0x439c78){var _0x4223f5={};_0x4223f5[_0x439c78]={'$like':'%'+_0x2d96dd[_0x117d('0x2e')][_0x117d('0x3b')]+'%'};return _0x4223f5;})});}_0xb936e=_[_0x117d('0x3e')]({},_0xb936e,_0x2d96dd['options']);return _0x15ca3f[_0x117d('0x4b')](_0xb936e);}})['then'](function(_0x5d2aaa){if(_0x5d2aaa){_0x44330c=_0x5d2aaa[_0x117d('0x34')];if(!_0x2d96dd[_0x117d('0x2e')][_0x117d('0x35')]('nolimit')){_0xb936e[_0x117d('0x19')]=qs[_0x117d('0x19')](_0x2d96dd[_0x117d('0x2e')]['limit']);_0xb936e[_0x117d('0x1a')]=qs['offset'](_0x2d96dd[_0x117d('0x2e')]['offset']);}return _0x15ca3f['getConfigurations'](_0xb936e);}})['then'](function(_0x1eaef0){if(_0x1eaef0){return _0x1eaef0?{'count':_0x44330c,'rows':_0x1eaef0}:null;}})[_0x117d('0x20')](respondWithResult(_0x5d541e,null))[_0x117d('0x45')](handleError(_0x5d541e,null));};exports[_0x117d('0x4e')]=function(_0x474ee3,_0x50b903,_0x1a0c04){if(_0x474ee3[_0x117d('0x49')]['id']){delete _0x474ee3[_0x117d('0x49')]['id'];}return db[_0x117d('0x2a')][_0x117d('0x4c')]({'where':{'id':_0x474ee3['params']['id']}})[_0x117d('0x20')](handleEntityNotFound(_0x50b903,null))[_0x117d('0x20')](function(_0xe1e45){if(_0xe1e45){_0x474ee3[_0x117d('0x49')][_0x117d('0x4f')]=_0xe1e45['id'];_0x474ee3['body'][_0x117d('0x50')]=integrations[_0x117d('0x51')](_0x474ee3[_0x117d('0x49')][_0x117d('0x52')],_0x474ee3[_0x117d('0x49')][_0x117d('0x3c')]);_0x474ee3[_0x117d('0x49')]['Descriptions']=integrations[_0x117d('0x53')](_0x474ee3[_0x117d('0x49')][_0x117d('0x52')],_0x474ee3['body']['type']);return db[_0x117d('0x4d')]['create'](_0x474ee3[_0x117d('0x49')],{'include':[{'model':db[_0x117d('0x54')],'as':_0x117d('0x50')},{'model':db[_0x117d('0x54')],'as':_0x117d('0x55')}]});}return null;})['then'](respondWithResult(_0x50b903,null))[_0x117d('0x45')](handleError(_0x50b903,null));};exports[_0x117d('0x56')]=function(_0xd9cd9,_0x223c4e,_0x387a5e){var _0x4cd6d4='';return db['FreshdeskAccount']['findOne']({'where':{'id':_0xd9cd9[_0x117d('0x4a')]['id']},'attributes':['id',_0x117d('0x57'),_0x117d('0x58')]})['then'](handleEntityNotFound(_0x223c4e,null))['then'](function(_0x5c34a0){if(_0x5c34a0){_0x4cd6d4=_0x5c34a0['remoteUri'];var _0xdfdcff=_0x4cd6d4[_0x117d('0x59')](-0x1);if(_0xdfdcff==='/'){_0x4cd6d4=_0x4cd6d4[_0x117d('0x5a')](0x0,_0x4cd6d4[_0x117d('0x5b')](_0xdfdcff));}return rp({'method':_0x117d('0x5c'),'uri':util[_0x117d('0x5d')](_0x117d('0x5e'),_0x4cd6d4,_0x117d('0x5f')),'headers':{'Authorization':util[_0x117d('0x5d')](_0x117d('0x60'),new Buffer(util[_0x117d('0x5d')](_0x117d('0x61'),_0x5c34a0['apiKey']))['toString'](_0x117d('0x62')))},'json':!![]});}})['then'](function(_0x38d024){if(_0x38d024){var _0x3e9387=[_0x117d('0x63'),_0x117d('0x64'),_0x117d('0x65'),_0x117d('0x66'),_0x117d('0x17'),_0x117d('0x67'),_0x117d('0x68'),_0x117d('0x69'),'ticket_type',_0x117d('0x68'),_0x117d('0x6a')];_['remove'](_0x38d024,function(_0x566094){return _0x3e9387[_0x117d('0x6b')](_0x566094[_0x117d('0x26')])||!_0x566094[_0x117d('0x6c')]&&_0x566094[_0x117d('0x3c')]!==_0x117d('0x6d')&&_0x566094[_0x117d('0x3c')]!=='custom_dropdown';});return{'count':_0x38d024['length'],'rows':_['map'](_0x38d024,function(_0x27592d){return{'id':_0x27592d['name'],'name':_0x27592d['label'],'custom':!_0x27592d['default'],'options':_0x27592d['choices']?_[_0x117d('0x29')](_0x27592d[_0x117d('0x6e')],function(_0x211ed7){return{'name':_['capitalize'](_0x211ed7),'value':_0x211ed7};}):[]};})};}})['then'](respondWithResult(_0x223c4e,null))[_0x117d('0x45')](function(_0x113c0b){var _0x440fe4=_0xd9cd9[_0x117d('0x2e')][_0x117d('0x6f')]?0x1f4:_0x113c0b['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x440fe4,JSON[_0x117d('0x70')](_0x113c0b));delete _0x113c0b['name'];if(_0x440fe4===0x191){_0x440fe4=0x190;}_0x223c4e['status'](_0x440fe4)[_0x117d('0x27')](_0xd9cd9['query'][_0x117d('0x6f')]?{'message':'Wrong\x20credentials','statusCode':_0x113c0b[_0x117d('0x71')]}:_0x113c0b);});};
\ No newline at end of file
index 4edac38..ac02386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f92=['../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes'];(function(_0xd0434a,_0x1a0b5a){var _0x464715=function(_0x286728){while(--_0x286728){_0xd0434a['push'](_0xd0434a['shift']());}};_0x464715(++_0x1a0b5a);}(_0x7f92,0xe4));var _0x27f9=function(_0x4fb185,_0x13c90f){_0x4fb185=_0x4fb185-0x0;var _0x236118=_0x7f92[_0x4fb185];return _0x236118;};'use strict';var _=require(_0x27f9('0x0'));var util=require(_0x27f9('0x1'));var logger=require(_0x27f9('0x2'))(_0x27f9('0x3'));var moment=require(_0x27f9('0x4'));var BPromise=require('bluebird');var rp=require(_0x27f9('0x5'));var fs=require('fs');var path=require(_0x27f9('0x6'));var rimraf=require(_0x27f9('0x7'));var config=require(_0x27f9('0x8'));var attributes=require(_0x27f9('0x9'));var integrations=require(_0x27f9('0xa'));module['exports']=function(_0x30a08a,_0x5618b4){return _0x30a08a[_0x27f9('0xb')](_0x27f9('0xc'),attributes,{'tableName':_0x27f9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b1f=['exports','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x7b1f,0xc1));var _0xf7b1=function(_0x32aa9f,_0x917afb){_0x32aa9f=_0x32aa9f-0x0;var _0x3514df=_0x7b1f[_0x32aa9f];return _0x3514df;};'use strict';var _=require(_0xf7b1('0x0'));var util=require('util');var logger=require(_0xf7b1('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf7b1('0x2'));var fs=require('fs');var path=require(_0xf7b1('0x3'));var rimraf=require(_0xf7b1('0x4'));var config=require(_0xf7b1('0x5'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xf7b1('0x6'));module[_0xf7b1('0x7')]=function(_0x455796,_0x1c4628){return _0x455796['define']('FreshdeskAccount',attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fc2e665..1956d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4dd=['message','result','catch','GetFreshdeskAccount','options','where','limit','include','map','model','attributes','ShowFreshdeskAccount','FreshdeskAccount','raw','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s'];(function(_0x52c3ec,_0x55b3ed){var _0x3fa422=function(_0x93170){while(--_0x93170){_0x52c3ec['push'](_0x52c3ec['shift']());}};_0x3fa422(++_0x55b3ed);}(_0xb4dd,0x1a6));var _0xdb4d=function(_0x2b0f70,_0xd18ca0){_0x2b0f70=_0x2b0f70-0x0;var _0x1b5b3a=_0xb4dd[_0x2b0f70];return _0x1b5b3a;};'use strict';var _=require(_0xdb4d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xdb4d('0x1'));var rs=require(_0xdb4d('0x2'));var fs=require('fs');var Redis=require(_0xdb4d('0x3'));var db=require(_0xdb4d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xdb4d('0x5'))(_0xdb4d('0x6'));var config=require(_0xdb4d('0x7'));var jayson=require(_0xdb4d('0x8'));var client=jayson[_0xdb4d('0x9')][_0xdb4d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bbf24,_0x4cea42,_0x34c2f8){return new BPromise(function(_0x384f5b,_0xd85a2e){return client[_0xdb4d('0xb')](_0x1bbf24,_0x34c2f8)[_0xdb4d('0xc')](function(_0x125e79){logger[_0xdb4d('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x4cea42,_0xdb4d('0xe'));logger[_0xdb4d('0xf')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x4cea42,_0xdb4d('0xe'),JSON[_0xdb4d('0x10')](_0x125e79));if(_0x125e79[_0xdb4d('0x11')]){if(_0x125e79['error'][_0xdb4d('0x12')]===0x1f4){logger[_0xdb4d('0x11')](_0xdb4d('0x13'),_0x4cea42,_0x125e79['error']['message']);return _0xd85a2e(_0x125e79['error'][_0xdb4d('0x14')]);}logger[_0xdb4d('0x11')](_0xdb4d('0x13'),_0x4cea42,_0x125e79[_0xdb4d('0x11')][_0xdb4d('0x14')]);return _0x384f5b(_0x125e79['error'][_0xdb4d('0x14')]);}else{logger[_0xdb4d('0xd')](_0xdb4d('0x13'),_0x4cea42,_0xdb4d('0xe'));_0x384f5b(_0x125e79[_0xdb4d('0x15')][_0xdb4d('0x14')]);}})[_0xdb4d('0x16')](function(_0x5e59bd){logger['error'](_0xdb4d('0x13'),_0x4cea42,_0x5e59bd);_0xd85a2e(_0x5e59bd);});});}exports[_0xdb4d('0x17')]=function(_0x512136){var _0x2013b3=this;return new Promise(function(_0x3ce64e,_0xf5c5b7){return db['FreshdeskAccount']['findAll']({'raw':_0x512136[_0xdb4d('0x18')]?_0x512136[_0xdb4d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x512136[_0xdb4d('0x18')]?_0x512136[_0xdb4d('0x18')][_0xdb4d('0x19')]||null:null,'attributes':_0x512136['options']?_0x512136[_0xdb4d('0x18')]['attributes']||null:null,'limit':_0x512136[_0xdb4d('0x18')]?_0x512136['options'][_0xdb4d('0x1a')]||null:null,'include':_0x512136[_0xdb4d('0x18')]?_0x512136[_0xdb4d('0x18')][_0xdb4d('0x1b')]?_[_0xdb4d('0x1c')](_0x512136[_0xdb4d('0x18')][_0xdb4d('0x1b')],function(_0xa70b8e){return{'model':db[_0xa70b8e[_0xdb4d('0x1d')]],'as':_0xa70b8e['as'],'attributes':_0xa70b8e[_0xdb4d('0x1e')],'include':_0xa70b8e[_0xdb4d('0x1b')]?_[_0xdb4d('0x1c')](_0xa70b8e['include'],function(_0x14e190){return{'model':db[_0x14e190['model']],'as':_0x14e190['as'],'attributes':_0x14e190[_0xdb4d('0x1e')],'include':_0x14e190[_0xdb4d('0x1b')]?_[_0xdb4d('0x1c')](_0x14e190[_0xdb4d('0x1b')],function(_0x14ba13){return{'model':db[_0x14ba13['model']],'as':_0x14ba13['as'],'attributes':_0x14ba13[_0xdb4d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d6f04){logger[_0xdb4d('0xd')](_0xdb4d('0x17'),_0x512136);logger[_0xdb4d('0xf')]('GetFreshdeskAccount',_0x512136,JSON['stringify'](_0x2d6f04));_0x3ce64e(_0x2d6f04);})[_0xdb4d('0x16')](function(_0x4d7097){logger['error'](_0xdb4d('0x17'),_0x4d7097['message'],_0x512136);_0xf5c5b7(_0x2013b3[_0xdb4d('0x11')](0x1f4,_0x4d7097[_0xdb4d('0x14')]));});});};exports[_0xdb4d('0x1f')]=function(_0x32143a){var _0x4a4ba2=this;return new Promise(function(_0x3a6130,_0x49922e){return db[_0xdb4d('0x20')]['find']({'raw':_0x32143a[_0xdb4d('0x18')]?_0x32143a['options'][_0xdb4d('0x21')]===undefined?!![]:![]:!![],'where':_0x32143a[_0xdb4d('0x18')]?_0x32143a[_0xdb4d('0x18')][_0xdb4d('0x19')]||null:null,'attributes':_0x32143a['options']?_0x32143a['options'][_0xdb4d('0x1e')]||null:null,'include':_0x32143a[_0xdb4d('0x18')]?_0x32143a[_0xdb4d('0x18')][_0xdb4d('0x1b')]?_[_0xdb4d('0x1c')](_0x32143a['options']['include'],function(_0x565414){return{'model':db[_0x565414['model']],'as':_0x565414['as'],'attributes':_0x565414[_0xdb4d('0x1e')],'include':_0x565414[_0xdb4d('0x1b')]?_[_0xdb4d('0x1c')](_0x565414[_0xdb4d('0x1b')],function(_0x566749){return{'model':db[_0x566749[_0xdb4d('0x1d')]],'as':_0x566749['as'],'attributes':_0x566749['attributes'],'include':_0x566749['include']?_[_0xdb4d('0x1c')](_0x566749[_0xdb4d('0x1b')],function(_0x510e9c){return{'model':db[_0x510e9c[_0xdb4d('0x1d')]],'as':_0x510e9c['as'],'attributes':_0x510e9c[_0xdb4d('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4bd21e){logger['info'](_0xdb4d('0x1f'),_0x32143a);logger[_0xdb4d('0xf')](_0xdb4d('0x1f'),_0x32143a,JSON[_0xdb4d('0x10')](_0x4bd21e));_0x3a6130(_0x4bd21e);})[_0xdb4d('0x16')](function(_0x174c8e){logger[_0xdb4d('0x11')](_0xdb4d('0x1f'),_0x174c8e[_0xdb4d('0x14')],_0x32143a);_0x49922e(_0x4a4ba2['error'](0x1f4,_0x174c8e['message']));});});};
\ No newline at end of file
+var _0x3383=['error','code','message','info','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','limit','include','map','model','attributes','ShowFreshdeskAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1f4a19,_0x35236f){var _0xb062e3=function(_0x5b16d0){while(--_0x5b16d0){_0x1f4a19['push'](_0x1f4a19['shift']());}};_0xb062e3(++_0x35236f);}(_0x3383,0x1b5));var _0x3338=function(_0x185567,_0x17db12){_0x185567=_0x185567-0x0;var _0x1e98e7=_0x3383[_0x185567];return _0x1e98e7;};'use strict';var _=require(_0x3338('0x0'));var util=require('util');var moment=require(_0x3338('0x1'));var BPromise=require(_0x3338('0x2'));var rs=require(_0x3338('0x3'));var fs=require('fs');var Redis=require(_0x3338('0x4'));var db=require(_0x3338('0x5'))['db'];var utils=require(_0x3338('0x6'));var logger=require(_0x3338('0x7'))(_0x3338('0x8'));var config=require(_0x3338('0x9'));var jayson=require(_0x3338('0xa'));var client=jayson['client'][_0x3338('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x238700,_0x8961c7,_0x34c0ef){return new BPromise(function(_0x1c6ead,_0x5b3b2b){return client[_0x3338('0xc')](_0x238700,_0x34c0ef)[_0x3338('0xd')](function(_0x577048){logger['info'](_0x3338('0xe'),_0x8961c7,_0x3338('0xf'));logger[_0x3338('0x10')](_0x3338('0x11'),_0x8961c7,_0x3338('0xf'),JSON[_0x3338('0x12')](_0x577048));if(_0x577048[_0x3338('0x13')]){if(_0x577048[_0x3338('0x13')][_0x3338('0x14')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x8961c7,_0x577048[_0x3338('0x13')]['message']);return _0x5b3b2b(_0x577048[_0x3338('0x13')][_0x3338('0x15')]);}logger['error'](_0x3338('0xe'),_0x8961c7,_0x577048['error'][_0x3338('0x15')]);return _0x1c6ead(_0x577048['error'][_0x3338('0x15')]);}else{logger[_0x3338('0x16')](_0x3338('0xe'),_0x8961c7,_0x3338('0xf'));_0x1c6ead(_0x577048[_0x3338('0x17')]['message']);}})[_0x3338('0x18')](function(_0xa729eb){logger[_0x3338('0x13')]('FreshdeskAccount,\x20%s,\x20%s',_0x8961c7,_0xa729eb);_0x5b3b2b(_0xa729eb);});});}exports[_0x3338('0x19')]=function(_0xc0b450){var _0xdbf352=this;return new Promise(function(_0x26b2ce,_0x2488a8){return db[_0x3338('0x1a')][_0x3338('0x1b')]({'raw':_0xc0b450[_0x3338('0x1c')]?_0xc0b450[_0x3338('0x1c')][_0x3338('0x1d')]===undefined?!![]:![]:!![],'where':_0xc0b450['options']?_0xc0b450[_0x3338('0x1c')][_0x3338('0x1e')]||null:null,'attributes':_0xc0b450['options']?_0xc0b450[_0x3338('0x1c')]['attributes']||null:null,'limit':_0xc0b450['options']?_0xc0b450[_0x3338('0x1c')][_0x3338('0x1f')]||null:null,'include':_0xc0b450[_0x3338('0x1c')]?_0xc0b450[_0x3338('0x1c')][_0x3338('0x20')]?_[_0x3338('0x21')](_0xc0b450[_0x3338('0x1c')][_0x3338('0x20')],function(_0x3a4ac3){return{'model':db[_0x3a4ac3[_0x3338('0x22')]],'as':_0x3a4ac3['as'],'attributes':_0x3a4ac3['attributes'],'include':_0x3a4ac3[_0x3338('0x20')]?_[_0x3338('0x21')](_0x3a4ac3['include'],function(_0x51026f){return{'model':db[_0x51026f[_0x3338('0x22')]],'as':_0x51026f['as'],'attributes':_0x51026f[_0x3338('0x23')],'include':_0x51026f[_0x3338('0x20')]?_['map'](_0x51026f[_0x3338('0x20')],function(_0x298aaa){return{'model':db[_0x298aaa[_0x3338('0x22')]],'as':_0x298aaa['as'],'attributes':_0x298aaa['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x264102){logger['info']('GetFreshdeskAccount',_0xc0b450);logger[_0x3338('0x10')]('GetFreshdeskAccount',_0xc0b450,JSON[_0x3338('0x12')](_0x264102));_0x26b2ce(_0x264102);})['catch'](function(_0x141699){logger[_0x3338('0x13')]('GetFreshdeskAccount',_0x141699['message'],_0xc0b450);_0x2488a8(_0xdbf352['error'](0x1f4,_0x141699['message']));});});};exports[_0x3338('0x24')]=function(_0x2c1451){var _0x550341=this;return new Promise(function(_0x4dc143,_0x89054e){return db['FreshdeskAccount'][_0x3338('0x25')]({'raw':_0x2c1451['options']?_0x2c1451[_0x3338('0x1c')][_0x3338('0x1d')]===undefined?!![]:![]:!![],'where':_0x2c1451['options']?_0x2c1451[_0x3338('0x1c')][_0x3338('0x1e')]||null:null,'attributes':_0x2c1451['options']?_0x2c1451[_0x3338('0x1c')][_0x3338('0x23')]||null:null,'include':_0x2c1451[_0x3338('0x1c')]?_0x2c1451[_0x3338('0x1c')][_0x3338('0x20')]?_['map'](_0x2c1451['options']['include'],function(_0x3a511a){return{'model':db[_0x3a511a[_0x3338('0x22')]],'as':_0x3a511a['as'],'attributes':_0x3a511a[_0x3338('0x23')],'include':_0x3a511a[_0x3338('0x20')]?_[_0x3338('0x21')](_0x3a511a[_0x3338('0x20')],function(_0x1939b6){return{'model':db[_0x1939b6[_0x3338('0x22')]],'as':_0x1939b6['as'],'attributes':_0x1939b6[_0x3338('0x23')],'include':_0x1939b6['include']?_[_0x3338('0x21')](_0x1939b6[_0x3338('0x20')],function(_0x29f089){return{'model':db[_0x29f089[_0x3338('0x22')]],'as':_0x29f089['as'],'attributes':_0x29f089['attributes']};}):[]};}):[]};}):[]:[]})[_0x3338('0xd')](function(_0x43dc8c){logger[_0x3338('0x16')](_0x3338('0x24'),_0x2c1451);logger['debug']('ShowFreshdeskAccount',_0x2c1451,JSON[_0x3338('0x12')](_0x43dc8c));_0x4dc143(_0x43dc8c);})[_0x3338('0x18')](function(_0x269c4a){logger['error'](_0x3338('0x24'),_0x269c4a['message'],_0x2c1451);_0x89054e(_0x550341['error'](0x1f4,_0x269c4a[_0x3338('0x15')]));});});};
\ No newline at end of file
index 441129e..0f9e323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde4e=['setTags','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/:id','show','get','getFields','/:id/subjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post'];(function(_0x5a1a51,_0x144c79){var _0x47edd7=function(_0x2259bb){while(--_0x2259bb){_0x5a1a51['push'](_0x5a1a51['shift']());}};_0x47edd7(++_0x144c79);}(_0xde4e,0x13e));var _0xede4=function(_0x4a3846,_0x47025f){_0x4a3846=_0x4a3846-0x0;var _0x4a58c5=_0xde4e[_0x4a3846];return _0x4a58c5;};'use strict';var multer=require(_0xede4('0x0'));var util=require(_0xede4('0x1'));var path=require(_0xede4('0x2'));var timeout=require(_0xede4('0x3'));var express=require(_0xede4('0x4'));var router=express[_0xede4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xede4('0x6'));var interaction=require(_0xede4('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskConfiguration.controller');router['get']('/',auth[_0xede4('0x8')](),controller[_0xede4('0x9')]);router['get'](_0xede4('0xa'),auth['isAuthenticated'](),controller[_0xede4('0xb')]);router[_0xede4('0xc')]('/:id/fields',auth[_0xede4('0x8')](),controller[_0xede4('0xd')]);router['get'](_0xede4('0xe'),auth[_0xede4('0x8')](),controller['getSubjects']);router['get'](_0xede4('0xf'),auth[_0xede4('0x8')](),controller[_0xede4('0x10')]);router[_0xede4('0xc')](_0xede4('0x11'),auth['isAuthenticated'](),controller[_0xede4('0x12')]);router[_0xede4('0x13')]('/',auth[_0xede4('0x8')](),controller['create']);router[_0xede4('0x13')]('/:id/tags',auth[_0xede4('0x8')](),controller[_0xede4('0x14')]);router[_0xede4('0x15')]('/:id',auth[_0xede4('0x8')](),controller[_0xede4('0x16')]);router[_0xede4('0x17')](_0xede4('0xa'),auth[_0xede4('0x8')](),controller[_0xede4('0x18')]);module[_0xede4('0x19')]=router;
\ No newline at end of file
+var _0x3c09=['setTags','put','update','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0x3c09,0x82));var _0x93c0=function(_0x5b1795,_0x31cf65){_0x5b1795=_0x5b1795-0x0;var _0x45d8de=_0x3c09[_0x5b1795];return _0x45d8de;};'use strict';var multer=require(_0x93c0('0x0'));var util=require(_0x93c0('0x1'));var path=require(_0x93c0('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x93c0('0x3'));var auth=require(_0x93c0('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x93c0('0x5'));var controller=require(_0x93c0('0x6'));router['get']('/',auth[_0x93c0('0x7')](),controller[_0x93c0('0x8')]);router[_0x93c0('0x9')](_0x93c0('0xa'),auth[_0x93c0('0x7')](),controller['show']);router[_0x93c0('0x9')](_0x93c0('0xb'),auth[_0x93c0('0x7')](),controller[_0x93c0('0xc')]);router[_0x93c0('0x9')](_0x93c0('0xd'),auth[_0x93c0('0x7')](),controller['getSubjects']);router[_0x93c0('0x9')](_0x93c0('0xe'),auth[_0x93c0('0x7')](),controller[_0x93c0('0xf')]);router['get'](_0x93c0('0x10'),auth[_0x93c0('0x7')](),controller[_0x93c0('0x11')]);router[_0x93c0('0x12')]('/',auth[_0x93c0('0x7')](),controller[_0x93c0('0x13')]);router['post'](_0x93c0('0x10'),auth[_0x93c0('0x7')](),controller[_0x93c0('0x14')]);router[_0x93c0('0x15')](_0x93c0('0xa'),auth[_0x93c0('0x7')](),controller[_0x93c0('0x16')]);router['delete'](_0x93c0('0xa'),auth['isAuthenticated'](),controller[_0x93c0('0x17')]);module[_0x93c0('0x18')]=router;
\ No newline at end of file
index ed8269e..a08707a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa483=['sequelize','STRING'];(function(_0x122f19,_0x31c3fd){var _0x2f364a=function(_0x3e4aa7){while(--_0x3e4aa7){_0x122f19['push'](_0x122f19['shift']());}};_0x2f364a(++_0x31c3fd);}(_0xa483,0x134));var _0x3a48=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa483[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x3a48('0x0'));module['exports']={'name':{'type':Sequelize[_0x3a48('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe7ce=['sequelize','STRING'];(function(_0x4da7e4,_0x23f4b1){var _0x3d78c9=function(_0x2c3015){while(--_0x2c3015){_0x4da7e4['push'](_0x4da7e4['shift']());}};_0x3d78c9(++_0x23f4b1);}(_0xe7ce,0x116));var _0xee7c=function(_0x3e6adf,_0x2e2232){_0x3e6adf=_0x3e6adf-0x0;var _0x28ad5f=_0xe7ce[_0x3e6adf];return _0x28ad5f;};'use strict';var Sequelize=require(_0xee7c('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xee7c('0x1')]}};
\ No newline at end of file
index 28eba02..ae1d160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ed=['Tag','setTags','ids','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','destroy','then','stack','name','send','map','FreshdeskConfiguration','fieldName','type','key','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','include','find','catch','create','body','findOne','FreshdeskField','pick','getFields','rawAttributes','getSubjects','getDescriptions','getTags'];(function(_0x1eaf3a,_0x2f9cbc){var _0x2152f8=function(_0x48fd0e){while(--_0x48fd0e){_0x1eaf3a['push'](_0x1eaf3a['shift']());}};_0x2152f8(++_0x2f9cbc);}(_0x52ed,0xf0));var _0xd52e=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0x52ed[_0x3718b7];return _0xf8c91e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd52e('0x0'));var zipdir=require(_0xd52e('0x1'));var jsonpatch=require(_0xd52e('0x2'));var rp=require('request-promise');var moment=require(_0xd52e('0x3'));var BPromise=require(_0xd52e('0x4'));var Mustache=require(_0xd52e('0x5'));var util=require('util');var path=require(_0xd52e('0x6'));var sox=require(_0xd52e('0x7'));var csv=require(_0xd52e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd52e('0x9'));var _=require(_0xd52e('0xa'));var squel=require(_0xd52e('0xb'));var crypto=require('crypto');var jsforce=require(_0xd52e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xd52e('0x8'));var querystring=require('querystring');var Papa=require(_0xd52e('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd52e('0xe'));var as=require(_0xd52e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd52e('0x10'))('api');var utils=require(_0xd52e('0x11'));var config=require(_0xd52e('0x12'));var licenseUtil=require(_0xd52e('0x13'));var db=require(_0xd52e('0x14'))['db'];function respondWithStatusCode(_0x17323a,_0x59733e){_0x59733e=_0x59733e||0xcc;return function(_0x4a166b){if(_0x4a166b){return _0x17323a[_0xd52e('0x15')](_0x59733e);}return _0x17323a[_0xd52e('0x16')](_0x59733e)[_0xd52e('0x17')]();};}function respondWithResult(_0x1ee2c4,_0x574cbe){_0x574cbe=_0x574cbe||0xc8;return function(_0x1314ca){if(_0x1314ca){return _0x1ee2c4[_0xd52e('0x16')](_0x574cbe)[_0xd52e('0x18')](_0x1314ca);}};}function respondWithFilteredResult(_0x178109,_0x32b76d){return function(_0x305a56){if(_0x305a56){var _0x38da58=typeof _0x32b76d[_0xd52e('0x19')]==='undefined'&&typeof _0x32b76d[_0xd52e('0x1a')]==='undefined';var _0x424df3=_0x305a56[_0xd52e('0x1b')];var _0x238e1f=_0x38da58?0x0:_0x32b76d[_0xd52e('0x19')];var _0xb11910=_0x38da58?_0x305a56['count']:_0x32b76d[_0xd52e('0x19')]+_0x32b76d[_0xd52e('0x1a')];var _0x5ae597;if(_0xb11910>=_0x424df3){_0xb11910=_0x424df3;_0x5ae597=0xc8;}else{_0x5ae597=0xce;}_0x178109[_0xd52e('0x16')](_0x5ae597);return _0x178109['set'](_0xd52e('0x1c'),_0x238e1f+'-'+_0xb11910+'/'+_0x424df3)[_0xd52e('0x18')](_0x305a56);}return null;};}function patchUpdates(_0x4997c1){return function(_0x58bcce){try{jsonpatch[_0xd52e('0x1d')](_0x58bcce,_0x4997c1,!![]);}catch(_0x43d6b5){return BPromise[_0xd52e('0x1e')](_0x43d6b5);}return _0x58bcce[_0xd52e('0x1f')]();};}function saveUpdates(_0x4ab083,_0x10f809){return function(_0x417c14){if(_0x417c14){return _0x417c14['update'](_0x4ab083)['then'](function(_0x5eabac){return _0x5eabac;});}return null;};}function removeEntity(_0x279ac7,_0xdf6c2){return function(_0x40ad96){if(_0x40ad96){return _0x40ad96[_0xd52e('0x20')]()[_0xd52e('0x21')](function(){_0x279ac7[_0xd52e('0x16')](0xcc)[_0xd52e('0x17')]();});}};}function handleEntityNotFound(_0x56b94f,_0x50d784){return function(_0x500ad5){if(!_0x500ad5){_0x56b94f[_0xd52e('0x15')](0x194);}return _0x500ad5;};}function handleError(_0x190bb5,_0x1c2cda){_0x1c2cda=_0x1c2cda||0x1f4;return function(_0x143b7e){logger['error'](_0x143b7e[_0xd52e('0x22')]);if(_0x143b7e[_0xd52e('0x23')]){delete _0x143b7e[_0xd52e('0x23')];}_0x190bb5[_0xd52e('0x16')](_0x1c2cda)[_0xd52e('0x24')](_0x143b7e);};}exports['index']=function(_0x203318,_0x4a3867){var _0x74faf8={},_0x221f7f={},_0x20e321={'count':0x0,'rows':[]};var _0x407819=_[_0xd52e('0x25')](db[_0xd52e('0x26')]['rawAttributes'],function(_0x592700){return{'name':_0x592700[_0xd52e('0x27')],'type':_0x592700[_0xd52e('0x28')][_0xd52e('0x29')]};});_0x221f7f[_0xd52e('0x2a')]=_[_0xd52e('0x25')](_0x407819,_0xd52e('0x23'));_0x221f7f[_0xd52e('0x2b')]=_['keys'](_0x203318[_0xd52e('0x2b')]);_0x221f7f['filters']=_['intersection'](_0x221f7f[_0xd52e('0x2a')],_0x221f7f[_0xd52e('0x2b')]);_0x74faf8[_0xd52e('0x2c')]=_[_0xd52e('0x2d')](_0x221f7f['model'],qs[_0xd52e('0x2e')](_0x203318[_0xd52e('0x2b')][_0xd52e('0x2e')]));_0x74faf8[_0xd52e('0x2c')]=_0x74faf8[_0xd52e('0x2c')][_0xd52e('0x2f')]?_0x74faf8['attributes']:_0x221f7f[_0xd52e('0x2a')];if(!_0x203318[_0xd52e('0x2b')][_0xd52e('0x30')](_0xd52e('0x31'))){_0x74faf8['limit']=qs[_0xd52e('0x1a')](_0x203318[_0xd52e('0x2b')][_0xd52e('0x1a')]);_0x74faf8[_0xd52e('0x19')]=qs[_0xd52e('0x19')](_0x203318['query'][_0xd52e('0x19')]);}_0x74faf8[_0xd52e('0x32')]=qs[_0xd52e('0x33')](_0x203318[_0xd52e('0x2b')][_0xd52e('0x33')]);_0x74faf8[_0xd52e('0x34')]=qs[_0xd52e('0x35')](_['pick'](_0x203318[_0xd52e('0x2b')],_0x221f7f['filters']),_0x407819);if(_0x203318['query'][_0xd52e('0x36')]){_0x74faf8[_0xd52e('0x34')]=_[_0xd52e('0x37')](_0x74faf8[_0xd52e('0x34')],{'$or':_[_0xd52e('0x25')](_0x407819,function(_0x3c413d){if(_0x3c413d[_0xd52e('0x28')]!==_0xd52e('0x38')){var _0x3ca27e={};_0x3ca27e[_0x3c413d['name']]={'$like':'%'+_0x203318[_0xd52e('0x2b')][_0xd52e('0x36')]+'%'};return _0x3ca27e;}})});}_0x74faf8=_['merge']({},_0x74faf8,_0x203318[_0xd52e('0x39')]);var _0xe77502={'where':_0x74faf8[_0xd52e('0x34')]};return db[_0xd52e('0x26')][_0xd52e('0x1b')](_0xe77502)['then'](function(_0x3e3465){_0x20e321[_0xd52e('0x1b')]=_0x3e3465;if(_0x203318['query'][_0xd52e('0x3a')]){_0x74faf8['include']=[{'all':!![]}];}return db[_0xd52e('0x26')]['findAll'](_0x74faf8);})[_0xd52e('0x21')](function(_0x28bb64){_0x20e321[_0xd52e('0x3b')]=_0x28bb64;return _0x20e321;})[_0xd52e('0x21')](respondWithFilteredResult(_0x4a3867,_0x74faf8))['catch'](handleError(_0x4a3867,null));};exports[_0xd52e('0x3c')]=function(_0xf62702,_0x5bdda0){var _0x262b09={'raw':![],'where':{'id':_0xf62702[_0xd52e('0x3d')]['id']}},_0x12f692={};_0x12f692['model']=_[_0xd52e('0x3e')](db[_0xd52e('0x26')]['rawAttributes']);_0x12f692['query']=_[_0xd52e('0x3e')](_0xf62702[_0xd52e('0x2b')]);_0x12f692[_0xd52e('0x35')]=_[_0xd52e('0x2d')](_0x12f692[_0xd52e('0x2a')],_0x12f692[_0xd52e('0x2b')]);_0x262b09['attributes']=_[_0xd52e('0x2d')](_0x12f692[_0xd52e('0x2a')],qs[_0xd52e('0x2e')](_0xf62702[_0xd52e('0x2b')][_0xd52e('0x2e')]));_0x262b09['attributes']=_0x262b09[_0xd52e('0x2c')][_0xd52e('0x2f')]?_0x262b09['attributes']:_0x12f692['model'];if(_0xf62702[_0xd52e('0x2b')][_0xd52e('0x3a')]){_0x262b09[_0xd52e('0x3f')]=[{'all':!![]}];}_0x262b09=_['merge']({},_0x262b09,_0xf62702[_0xd52e('0x39')]);return db['FreshdeskConfiguration'][_0xd52e('0x40')](_0x262b09)['then'](handleEntityNotFound(_0x5bdda0,null))['then'](respondWithResult(_0x5bdda0,null))[_0xd52e('0x41')](handleError(_0x5bdda0,null));};exports[_0xd52e('0x42')]=function(_0x1daa75,_0x309c3b){return db[_0xd52e('0x26')]['create'](_0x1daa75[_0xd52e('0x43')],{})[_0xd52e('0x21')](respondWithResult(_0x309c3b,0xc9))[_0xd52e('0x41')](handleError(_0x309c3b,null));};exports['update']=function(_0x331cbf,_0x40699c){if(_0x331cbf[_0xd52e('0x43')]['id']){delete _0x331cbf['body']['id'];}return db[_0xd52e('0x26')][_0xd52e('0x40')]({'where':{'id':_0x331cbf[_0xd52e('0x3d')]['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x40699c,null))[_0xd52e('0x21')](saveUpdates(_0x331cbf[_0xd52e('0x43')],null))[_0xd52e('0x21')](respondWithResult(_0x40699c,null))['catch'](handleError(_0x40699c,null));};exports[_0xd52e('0x20')]=function(_0x22acc6,_0x1f6a4b){return db[_0xd52e('0x26')][_0xd52e('0x40')]({'where':{'id':_0x22acc6[_0xd52e('0x3d')]['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x1f6a4b,null))[_0xd52e('0x21')](removeEntity(_0x1f6a4b,null))['catch'](handleError(_0x1f6a4b,null));};exports['getFields']=function(_0x50898d,_0x5e1902,_0x3bd6c6){var _0x4c0de5={};var _0x3590f0={};var _0x494a37;var _0x19a32c;return db[_0xd52e('0x26')][_0xd52e('0x44')]({'where':{'id':_0x50898d[_0xd52e('0x3d')]['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x5e1902,null))[_0xd52e('0x21')](function(_0xc5ee8c){if(_0xc5ee8c){_0x494a37=_0xc5ee8c;_0x3590f0['model']=_[_0xd52e('0x3e')](db[_0xd52e('0x45')]['rawAttributes']);_0x3590f0[_0xd52e('0x2b')]=_[_0xd52e('0x3e')](_0x50898d[_0xd52e('0x2b')]);_0x3590f0[_0xd52e('0x35')]=_['intersection'](_0x3590f0[_0xd52e('0x2a')],_0x3590f0[_0xd52e('0x2b')]);_0x4c0de5[_0xd52e('0x2c')]=_[_0xd52e('0x2d')](_0x3590f0[_0xd52e('0x2a')],qs['fields'](_0x50898d[_0xd52e('0x2b')][_0xd52e('0x2e')]));_0x4c0de5[_0xd52e('0x2c')]=_0x4c0de5['attributes'][_0xd52e('0x2f')]?_0x4c0de5[_0xd52e('0x2c')]:_0x3590f0[_0xd52e('0x2a')];_0x4c0de5[_0xd52e('0x32')]=qs[_0xd52e('0x33')](_0x50898d[_0xd52e('0x2b')][_0xd52e('0x33')]);_0x4c0de5[_0xd52e('0x34')]=qs[_0xd52e('0x35')](_[_0xd52e('0x46')](_0x50898d[_0xd52e('0x2b')],_0x3590f0[_0xd52e('0x35')]));if(_0x50898d[_0xd52e('0x2b')][_0xd52e('0x36')]){_0x4c0de5['where']=_[_0xd52e('0x37')](_0x4c0de5['where'],{'$or':_['map'](_0x4c0de5[_0xd52e('0x2c')],function(_0x401d62){var _0x58fb89={};_0x58fb89[_0x401d62]={'$like':'%'+_0x50898d[_0xd52e('0x2b')][_0xd52e('0x36')]+'%'};return _0x58fb89;})});}_0x4c0de5=_[_0xd52e('0x37')]({},_0x4c0de5,_0x50898d[_0xd52e('0x39')]);return _0x494a37[_0xd52e('0x47')](_0x4c0de5);}})[_0xd52e('0x21')](function(_0x503f45){if(_0x503f45){_0x19a32c=_0x503f45['length'];if(!_0x50898d[_0xd52e('0x2b')]['hasOwnProperty'](_0xd52e('0x31'))){_0x4c0de5[_0xd52e('0x1a')]=qs[_0xd52e('0x1a')](_0x50898d[_0xd52e('0x2b')][_0xd52e('0x1a')]);_0x4c0de5[_0xd52e('0x19')]=qs[_0xd52e('0x19')](_0x50898d['query'][_0xd52e('0x19')]);}return _0x494a37[_0xd52e('0x47')](_0x4c0de5);}})[_0xd52e('0x21')](function(_0x2a0b77){if(_0x2a0b77){return _0x2a0b77?{'count':_0x19a32c,'rows':_0x2a0b77}:null;}})[_0xd52e('0x21')](respondWithResult(_0x5e1902,null))[_0xd52e('0x41')](handleError(_0x5e1902,null));};exports['getSubjects']=function(_0x3daa01,_0x216f07,_0x1d2abe){var _0x2e6dc4={};var _0x1fa23f={};var _0x1c2687;var _0x579d75;return db[_0xd52e('0x26')]['findOne']({'where':{'id':_0x3daa01[_0xd52e('0x3d')]['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x216f07,null))[_0xd52e('0x21')](function(_0x10aca9){if(_0x10aca9){_0x1c2687=_0x10aca9;_0x1fa23f[_0xd52e('0x2a')]=_[_0xd52e('0x3e')](db[_0xd52e('0x45')][_0xd52e('0x48')]);_0x1fa23f[_0xd52e('0x2b')]=_[_0xd52e('0x3e')](_0x3daa01[_0xd52e('0x2b')]);_0x1fa23f['filters']=_[_0xd52e('0x2d')](_0x1fa23f[_0xd52e('0x2a')],_0x1fa23f[_0xd52e('0x2b')]);_0x2e6dc4[_0xd52e('0x2c')]=_[_0xd52e('0x2d')](_0x1fa23f[_0xd52e('0x2a')],qs[_0xd52e('0x2e')](_0x3daa01['query']['fields']));_0x2e6dc4[_0xd52e('0x2c')]=_0x2e6dc4[_0xd52e('0x2c')][_0xd52e('0x2f')]?_0x2e6dc4[_0xd52e('0x2c')]:_0x1fa23f[_0xd52e('0x2a')];_0x2e6dc4['order']=qs[_0xd52e('0x33')](_0x3daa01[_0xd52e('0x2b')]['sort']);_0x2e6dc4['where']=qs[_0xd52e('0x35')](_[_0xd52e('0x46')](_0x3daa01[_0xd52e('0x2b')],_0x1fa23f['filters']));if(_0x3daa01[_0xd52e('0x2b')][_0xd52e('0x36')]){_0x2e6dc4[_0xd52e('0x34')]=_['merge'](_0x2e6dc4[_0xd52e('0x34')],{'$or':_[_0xd52e('0x25')](_0x2e6dc4['attributes'],function(_0x4c5fa8){var _0x3daa07={};_0x3daa07[_0x4c5fa8]={'$like':'%'+_0x3daa01[_0xd52e('0x2b')]['filter']+'%'};return _0x3daa07;})});}_0x2e6dc4=_['merge']({},_0x2e6dc4,_0x3daa01[_0xd52e('0x39')]);return _0x1c2687[_0xd52e('0x49')](_0x2e6dc4);}})['then'](function(_0x3e88da){if(_0x3e88da){_0x579d75=_0x3e88da[_0xd52e('0x2f')];if(!_0x3daa01[_0xd52e('0x2b')]['hasOwnProperty']('nolimit')){_0x2e6dc4[_0xd52e('0x1a')]=qs[_0xd52e('0x1a')](_0x3daa01[_0xd52e('0x2b')][_0xd52e('0x1a')]);_0x2e6dc4['offset']=qs['offset'](_0x3daa01[_0xd52e('0x2b')]['offset']);}return _0x1c2687[_0xd52e('0x49')](_0x2e6dc4);}})[_0xd52e('0x21')](function(_0x1ef578){if(_0x1ef578){return _0x1ef578?{'count':_0x579d75,'rows':_0x1ef578}:null;}})[_0xd52e('0x21')](respondWithResult(_0x216f07,null))[_0xd52e('0x41')](handleError(_0x216f07,null));};exports['getDescriptions']=function(_0x313b55,_0x29267a,_0x32d7b0){var _0xad9940={};var _0x65654a={};var _0x55ec34;var _0x299bee;return db[_0xd52e('0x26')]['findOne']({'where':{'id':_0x313b55['params']['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x29267a,null))[_0xd52e('0x21')](function(_0x4f330d){if(_0x4f330d){_0x55ec34=_0x4f330d;_0x65654a[_0xd52e('0x2a')]=_[_0xd52e('0x3e')](db[_0xd52e('0x45')][_0xd52e('0x48')]);_0x65654a[_0xd52e('0x2b')]=_[_0xd52e('0x3e')](_0x313b55[_0xd52e('0x2b')]);_0x65654a['filters']=_['intersection'](_0x65654a[_0xd52e('0x2a')],_0x65654a['query']);_0xad9940[_0xd52e('0x2c')]=_[_0xd52e('0x2d')](_0x65654a[_0xd52e('0x2a')],qs[_0xd52e('0x2e')](_0x313b55[_0xd52e('0x2b')][_0xd52e('0x2e')]));_0xad9940['attributes']=_0xad9940[_0xd52e('0x2c')][_0xd52e('0x2f')]?_0xad9940[_0xd52e('0x2c')]:_0x65654a[_0xd52e('0x2a')];_0xad9940['order']=qs['sort'](_0x313b55[_0xd52e('0x2b')]['sort']);_0xad9940[_0xd52e('0x34')]=qs[_0xd52e('0x35')](_[_0xd52e('0x46')](_0x313b55[_0xd52e('0x2b')],_0x65654a['filters']));if(_0x313b55[_0xd52e('0x2b')][_0xd52e('0x36')]){_0xad9940['where']=_[_0xd52e('0x37')](_0xad9940['where'],{'$or':_['map'](_0xad9940[_0xd52e('0x2c')],function(_0x29f64a){var _0x53b0d4={};_0x53b0d4[_0x29f64a]={'$like':'%'+_0x313b55['query'][_0xd52e('0x36')]+'%'};return _0x53b0d4;})});}_0xad9940=_[_0xd52e('0x37')]({},_0xad9940,_0x313b55[_0xd52e('0x39')]);return _0x55ec34[_0xd52e('0x4a')](_0xad9940);}})[_0xd52e('0x21')](function(_0x47bc53){if(_0x47bc53){_0x299bee=_0x47bc53[_0xd52e('0x2f')];if(!_0x313b55[_0xd52e('0x2b')]['hasOwnProperty'](_0xd52e('0x31'))){_0xad9940[_0xd52e('0x1a')]=qs[_0xd52e('0x1a')](_0x313b55['query'][_0xd52e('0x1a')]);_0xad9940['offset']=qs[_0xd52e('0x19')](_0x313b55[_0xd52e('0x2b')]['offset']);}return _0x55ec34[_0xd52e('0x4a')](_0xad9940);}})[_0xd52e('0x21')](function(_0x202470){if(_0x202470){return _0x202470?{'count':_0x299bee,'rows':_0x202470}:null;}})['then'](respondWithResult(_0x29267a,null))['catch'](handleError(_0x29267a,null));};exports[_0xd52e('0x4b')]=function(_0x44589f,_0x583bc8,_0x280475){var _0x554a9a={};var _0x529d60={};var _0x3e4d04;var _0x4708f5;return db[_0xd52e('0x26')][_0xd52e('0x44')]({'where':{'id':_0x44589f['params']['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0x583bc8,null))[_0xd52e('0x21')](function(_0x2ab8d0){if(_0x2ab8d0){_0x3e4d04=_0x2ab8d0;_0x529d60['model']=_[_0xd52e('0x3e')](db[_0xd52e('0x4c')][_0xd52e('0x48')]);_0x529d60['query']=_['keys'](_0x44589f[_0xd52e('0x2b')]);_0x529d60[_0xd52e('0x35')]=_[_0xd52e('0x2d')](_0x529d60[_0xd52e('0x2a')],_0x529d60[_0xd52e('0x2b')]);_0x554a9a[_0xd52e('0x2c')]=_[_0xd52e('0x2d')](_0x529d60['model'],qs[_0xd52e('0x2e')](_0x44589f['query'][_0xd52e('0x2e')]));_0x554a9a[_0xd52e('0x2c')]=_0x554a9a['attributes'][_0xd52e('0x2f')]?_0x554a9a[_0xd52e('0x2c')]:_0x529d60[_0xd52e('0x2a')];_0x554a9a[_0xd52e('0x32')]=qs[_0xd52e('0x33')](_0x44589f[_0xd52e('0x2b')]['sort']);_0x554a9a[_0xd52e('0x34')]=qs[_0xd52e('0x35')](_[_0xd52e('0x46')](_0x44589f['query'],_0x529d60[_0xd52e('0x35')]));if(_0x44589f[_0xd52e('0x2b')]['filter']){_0x554a9a[_0xd52e('0x34')]=_[_0xd52e('0x37')](_0x554a9a[_0xd52e('0x34')],{'$or':_[_0xd52e('0x25')](_0x554a9a[_0xd52e('0x2c')],function(_0x581b24){var _0x46cb61={};_0x46cb61[_0x581b24]={'$like':'%'+_0x44589f['query']['filter']+'%'};return _0x46cb61;})});}_0x554a9a=_[_0xd52e('0x37')]({},_0x554a9a,_0x44589f[_0xd52e('0x39')]);return _0x3e4d04[_0xd52e('0x4b')](_0x554a9a);}})[_0xd52e('0x21')](function(_0xe8cb2b){if(_0xe8cb2b){_0x4708f5=_0xe8cb2b[_0xd52e('0x2f')];if(!_0x44589f[_0xd52e('0x2b')][_0xd52e('0x30')](_0xd52e('0x31'))){_0x554a9a[_0xd52e('0x1a')]=qs[_0xd52e('0x1a')](_0x44589f[_0xd52e('0x2b')]['limit']);_0x554a9a[_0xd52e('0x19')]=qs['offset'](_0x44589f[_0xd52e('0x2b')][_0xd52e('0x19')]);}return _0x3e4d04[_0xd52e('0x4b')](_0x554a9a);}})['then'](function(_0x42039d){if(_0x42039d){return _0x42039d?{'count':_0x4708f5,'rows':_0x42039d}:null;}})[_0xd52e('0x21')](respondWithResult(_0x583bc8,null))[_0xd52e('0x41')](handleError(_0x583bc8,null));};exports[_0xd52e('0x4d')]=function(_0x518763,_0xb5ee4,_0x2a7406){if(_0x518763[_0xd52e('0x43')]['id']){delete _0x518763['body']['id'];}return db[_0xd52e('0x26')]['findOne']({'where':{'id':_0x518763[_0xd52e('0x3d')]['id']}})[_0xd52e('0x21')](handleEntityNotFound(_0xb5ee4,null))[_0xd52e('0x21')](function(_0x2afa2e){if(_0x2afa2e){return _0x2afa2e[_0xd52e('0x4d')](_0x518763[_0xd52e('0x43')][_0xd52e('0x4e')]||[]);}return null;})[_0xd52e('0x21')](respondWithResult(_0xb5ee4,null))['catch'](handleError(_0xb5ee4,null));};
\ No newline at end of file
+var _0x398b=['query','keys','filters','intersection','attributes','fields','length','order','sort','where','merge','type','VIRTUAL','filter','options','FreshdeskConfiguration','includeAll','include','findAll','catch','show','params','create','body','find','destroy','getFields','findOne','FreshdeskField','hasOwnProperty','nolimit','getSubjects','pick','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','offset','count','limit','set','Content-Range','json','reject','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','model'];(function(_0x6e1239,_0x3562ac){var _0x418150=function(_0x279f06){while(--_0x279f06){_0x6e1239['push'](_0x6e1239['shift']());}};_0x418150(++_0x3562ac);}(_0x398b,0x1b6));var _0xb398=function(_0x2d48fa,_0x103065){_0x2d48fa=_0x2d48fa-0x0;var _0x4645b7=_0x398b[_0x2d48fa];return _0x4645b7;};'use strict';var emlformat=require(_0xb398('0x0'));var rimraf=require(_0xb398('0x1'));var zipdir=require(_0xb398('0x2'));var jsonpatch=require(_0xb398('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb398('0x4'));var Mustache=require(_0xb398('0x5'));var util=require('util');var path=require(_0xb398('0x6'));var sox=require(_0xb398('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb398('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xb398('0x9'));var jsforce=require(_0xb398('0xa'));var deskjs=require(_0xb398('0xb'));var toCsv=require(_0xb398('0xc'));var querystring=require('querystring');var Papa=require(_0xb398('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb398('0xe'));var as=require(_0xb398('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb398('0x10'));var utils=require(_0xb398('0x11'));var config=require(_0xb398('0x12'));var licenseUtil=require(_0xb398('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x79e2ad,_0x3fcbd1){_0x3fcbd1=_0x3fcbd1||0xcc;return function(_0x4d01e9){if(_0x4d01e9){return _0x79e2ad[_0xb398('0x14')](_0x3fcbd1);}return _0x79e2ad[_0xb398('0x15')](_0x3fcbd1)[_0xb398('0x16')]();};}function respondWithResult(_0x22c72f,_0x5d53ff){_0x5d53ff=_0x5d53ff||0xc8;return function(_0x347305){if(_0x347305){return _0x22c72f['status'](_0x5d53ff)['json'](_0x347305);}};}function respondWithFilteredResult(_0x1abe86,_0x4e2a41){return function(_0x3d3413){if(_0x3d3413){var _0x570fbb=typeof _0x4e2a41['offset']===_0xb398('0x17')&&typeof _0x4e2a41['limit']===_0xb398('0x17');var _0x2f3517=_0x3d3413['count'];var _0x1ac750=_0x570fbb?0x0:_0x4e2a41[_0xb398('0x18')];var _0xbf5005=_0x570fbb?_0x3d3413[_0xb398('0x19')]:_0x4e2a41[_0xb398('0x18')]+_0x4e2a41[_0xb398('0x1a')];var _0x5913a0;if(_0xbf5005>=_0x2f3517){_0xbf5005=_0x2f3517;_0x5913a0=0xc8;}else{_0x5913a0=0xce;}_0x1abe86['status'](_0x5913a0);return _0x1abe86[_0xb398('0x1b')](_0xb398('0x1c'),_0x1ac750+'-'+_0xbf5005+'/'+_0x2f3517)[_0xb398('0x1d')](_0x3d3413);}return null;};}function patchUpdates(_0x3aad2b){return function(_0x368d97){try{jsonpatch['apply'](_0x368d97,_0x3aad2b,!![]);}catch(_0x515b71){return BPromise[_0xb398('0x1e')](_0x515b71);}return _0x368d97[_0xb398('0x1f')]();};}function saveUpdates(_0x52cfcc,_0x3541e4){return function(_0x44af5e){if(_0x44af5e){return _0x44af5e[_0xb398('0x20')](_0x52cfcc)[_0xb398('0x21')](function(_0x492dbb){return _0x492dbb;});}return null;};}function removeEntity(_0x2bbfe9,_0x4a930c){return function(_0x48b6e0){if(_0x48b6e0){return _0x48b6e0['destroy']()[_0xb398('0x21')](function(){_0x2bbfe9['status'](0xcc)[_0xb398('0x16')]();});}};}function handleEntityNotFound(_0x36d5f3,_0x361d10){return function(_0x3765a5){if(!_0x3765a5){_0x36d5f3[_0xb398('0x14')](0x194);}return _0x3765a5;};}function handleError(_0x452bd1,_0x38628b){_0x38628b=_0x38628b||0x1f4;return function(_0xf59af8){logger['error'](_0xf59af8[_0xb398('0x22')]);if(_0xf59af8[_0xb398('0x23')]){delete _0xf59af8[_0xb398('0x23')];}_0x452bd1['status'](_0x38628b)[_0xb398('0x24')](_0xf59af8);};}exports[_0xb398('0x25')]=function(_0xea819,_0x23221f){var _0x425cac={},_0x3cbc14={},_0x25a31e={'count':0x0,'rows':[]};var _0x4df9a8=_[_0xb398('0x26')](db['FreshdeskConfiguration'][_0xb398('0x27')],function(_0x3912e6){return{'name':_0x3912e6[_0xb398('0x28')],'type':_0x3912e6['type']['key']};});_0x3cbc14[_0xb398('0x29')]=_[_0xb398('0x26')](_0x4df9a8,_0xb398('0x23'));_0x3cbc14[_0xb398('0x2a')]=_[_0xb398('0x2b')](_0xea819[_0xb398('0x2a')]);_0x3cbc14[_0xb398('0x2c')]=_[_0xb398('0x2d')](_0x3cbc14['model'],_0x3cbc14[_0xb398('0x2a')]);_0x425cac[_0xb398('0x2e')]=_['intersection'](_0x3cbc14[_0xb398('0x29')],qs[_0xb398('0x2f')](_0xea819[_0xb398('0x2a')][_0xb398('0x2f')]));_0x425cac['attributes']=_0x425cac[_0xb398('0x2e')][_0xb398('0x30')]?_0x425cac[_0xb398('0x2e')]:_0x3cbc14[_0xb398('0x29')];if(!_0xea819[_0xb398('0x2a')]['hasOwnProperty']('nolimit')){_0x425cac[_0xb398('0x1a')]=qs['limit'](_0xea819[_0xb398('0x2a')]['limit']);_0x425cac[_0xb398('0x18')]=qs[_0xb398('0x18')](_0xea819[_0xb398('0x2a')]['offset']);}_0x425cac[_0xb398('0x31')]=qs[_0xb398('0x32')](_0xea819[_0xb398('0x2a')][_0xb398('0x32')]);_0x425cac[_0xb398('0x33')]=qs[_0xb398('0x2c')](_['pick'](_0xea819[_0xb398('0x2a')],_0x3cbc14[_0xb398('0x2c')]),_0x4df9a8);if(_0xea819[_0xb398('0x2a')]['filter']){_0x425cac[_0xb398('0x33')]=_[_0xb398('0x34')](_0x425cac['where'],{'$or':_[_0xb398('0x26')](_0x4df9a8,function(_0x167cd3){if(_0x167cd3[_0xb398('0x35')]!==_0xb398('0x36')){var _0x1dae69={};_0x1dae69[_0x167cd3[_0xb398('0x23')]]={'$like':'%'+_0xea819[_0xb398('0x2a')][_0xb398('0x37')]+'%'};return _0x1dae69;}})});}_0x425cac=_['merge']({},_0x425cac,_0xea819[_0xb398('0x38')]);var _0x2cf98f={'where':_0x425cac[_0xb398('0x33')]};return db[_0xb398('0x39')][_0xb398('0x19')](_0x2cf98f)['then'](function(_0x4663d1){_0x25a31e[_0xb398('0x19')]=_0x4663d1;if(_0xea819[_0xb398('0x2a')][_0xb398('0x3a')]){_0x425cac[_0xb398('0x3b')]=[{'all':!![]}];}return db[_0xb398('0x39')][_0xb398('0x3c')](_0x425cac);})['then'](function(_0x4d4ef7){_0x25a31e['rows']=_0x4d4ef7;return _0x25a31e;})[_0xb398('0x21')](respondWithFilteredResult(_0x23221f,_0x425cac))[_0xb398('0x3d')](handleError(_0x23221f,null));};exports[_0xb398('0x3e')]=function(_0x248676,_0x3c58dc){var _0x3f2c52={'raw':![],'where':{'id':_0x248676[_0xb398('0x3f')]['id']}},_0x49d5d9={};_0x49d5d9[_0xb398('0x29')]=_[_0xb398('0x2b')](db['FreshdeskConfiguration']['rawAttributes']);_0x49d5d9[_0xb398('0x2a')]=_[_0xb398('0x2b')](_0x248676[_0xb398('0x2a')]);_0x49d5d9[_0xb398('0x2c')]=_['intersection'](_0x49d5d9[_0xb398('0x29')],_0x49d5d9[_0xb398('0x2a')]);_0x3f2c52[_0xb398('0x2e')]=_[_0xb398('0x2d')](_0x49d5d9['model'],qs['fields'](_0x248676[_0xb398('0x2a')][_0xb398('0x2f')]));_0x3f2c52[_0xb398('0x2e')]=_0x3f2c52[_0xb398('0x2e')]['length']?_0x3f2c52[_0xb398('0x2e')]:_0x49d5d9['model'];if(_0x248676[_0xb398('0x2a')][_0xb398('0x3a')]){_0x3f2c52[_0xb398('0x3b')]=[{'all':!![]}];}_0x3f2c52=_[_0xb398('0x34')]({},_0x3f2c52,_0x248676[_0xb398('0x38')]);return db[_0xb398('0x39')]['find'](_0x3f2c52)[_0xb398('0x21')](handleEntityNotFound(_0x3c58dc,null))[_0xb398('0x21')](respondWithResult(_0x3c58dc,null))[_0xb398('0x3d')](handleError(_0x3c58dc,null));};exports['create']=function(_0x5e8001,_0x392606){return db[_0xb398('0x39')][_0xb398('0x40')](_0x5e8001[_0xb398('0x41')],{})[_0xb398('0x21')](respondWithResult(_0x392606,0xc9))[_0xb398('0x3d')](handleError(_0x392606,null));};exports[_0xb398('0x20')]=function(_0x409b81,_0x31f76e){if(_0x409b81[_0xb398('0x41')]['id']){delete _0x409b81[_0xb398('0x41')]['id'];}return db['FreshdeskConfiguration'][_0xb398('0x42')]({'where':{'id':_0x409b81[_0xb398('0x3f')]['id']}})[_0xb398('0x21')](handleEntityNotFound(_0x31f76e,null))[_0xb398('0x21')](saveUpdates(_0x409b81[_0xb398('0x41')],null))[_0xb398('0x21')](respondWithResult(_0x31f76e,null))[_0xb398('0x3d')](handleError(_0x31f76e,null));};exports[_0xb398('0x43')]=function(_0x3adf1f,_0x59ee37){return db[_0xb398('0x39')][_0xb398('0x42')]({'where':{'id':_0x3adf1f[_0xb398('0x3f')]['id']}})[_0xb398('0x21')](handleEntityNotFound(_0x59ee37,null))[_0xb398('0x21')](removeEntity(_0x59ee37,null))[_0xb398('0x3d')](handleError(_0x59ee37,null));};exports[_0xb398('0x44')]=function(_0x406bd0,_0x341ede,_0x5203c2){var _0x5dee42={};var _0x29b20c={};var _0x6960af;var _0x5ad750;return db['FreshdeskConfiguration'][_0xb398('0x45')]({'where':{'id':_0x406bd0[_0xb398('0x3f')]['id']}})[_0xb398('0x21')](handleEntityNotFound(_0x341ede,null))['then'](function(_0x71c774){if(_0x71c774){_0x6960af=_0x71c774;_0x29b20c[_0xb398('0x29')]=_[_0xb398('0x2b')](db[_0xb398('0x46')]['rawAttributes']);_0x29b20c[_0xb398('0x2a')]=_[_0xb398('0x2b')](_0x406bd0[_0xb398('0x2a')]);_0x29b20c[_0xb398('0x2c')]=_['intersection'](_0x29b20c[_0xb398('0x29')],_0x29b20c[_0xb398('0x2a')]);_0x5dee42[_0xb398('0x2e')]=_[_0xb398('0x2d')](_0x29b20c[_0xb398('0x29')],qs[_0xb398('0x2f')](_0x406bd0[_0xb398('0x2a')][_0xb398('0x2f')]));_0x5dee42[_0xb398('0x2e')]=_0x5dee42[_0xb398('0x2e')][_0xb398('0x30')]?_0x5dee42[_0xb398('0x2e')]:_0x29b20c[_0xb398('0x29')];_0x5dee42[_0xb398('0x31')]=qs[_0xb398('0x32')](_0x406bd0[_0xb398('0x2a')]['sort']);_0x5dee42['where']=qs[_0xb398('0x2c')](_['pick'](_0x406bd0[_0xb398('0x2a')],_0x29b20c[_0xb398('0x2c')]));if(_0x406bd0[_0xb398('0x2a')]['filter']){_0x5dee42['where']=_['merge'](_0x5dee42[_0xb398('0x33')],{'$or':_['map'](_0x5dee42[_0xb398('0x2e')],function(_0x3618c4){var _0x128286={};_0x128286[_0x3618c4]={'$like':'%'+_0x406bd0[_0xb398('0x2a')][_0xb398('0x37')]+'%'};return _0x128286;})});}_0x5dee42=_['merge']({},_0x5dee42,_0x406bd0[_0xb398('0x38')]);return _0x6960af[_0xb398('0x44')](_0x5dee42);}})[_0xb398('0x21')](function(_0x54d469){if(_0x54d469){_0x5ad750=_0x54d469[_0xb398('0x30')];if(!_0x406bd0[_0xb398('0x2a')][_0xb398('0x47')](_0xb398('0x48'))){_0x5dee42[_0xb398('0x1a')]=qs[_0xb398('0x1a')](_0x406bd0['query'][_0xb398('0x1a')]);_0x5dee42[_0xb398('0x18')]=qs[_0xb398('0x18')](_0x406bd0[_0xb398('0x2a')]['offset']);}return _0x6960af[_0xb398('0x44')](_0x5dee42);}})[_0xb398('0x21')](function(_0x358f3d){if(_0x358f3d){return _0x358f3d?{'count':_0x5ad750,'rows':_0x358f3d}:null;}})[_0xb398('0x21')](respondWithResult(_0x341ede,null))['catch'](handleError(_0x341ede,null));};exports[_0xb398('0x49')]=function(_0x51599b,_0x311b17,_0x4fda46){var _0x4c2472={};var _0x2f6f26={};var _0x503c1e;var _0x2477cd;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x51599b[_0xb398('0x3f')]['id']}})[_0xb398('0x21')](handleEntityNotFound(_0x311b17,null))[_0xb398('0x21')](function(_0x67e9ae){if(_0x67e9ae){_0x503c1e=_0x67e9ae;_0x2f6f26['model']=_[_0xb398('0x2b')](db[_0xb398('0x46')][_0xb398('0x27')]);_0x2f6f26[_0xb398('0x2a')]=_['keys'](_0x51599b[_0xb398('0x2a')]);_0x2f6f26[_0xb398('0x2c')]=_[_0xb398('0x2d')](_0x2f6f26[_0xb398('0x29')],_0x2f6f26[_0xb398('0x2a')]);_0x4c2472['attributes']=_['intersection'](_0x2f6f26['model'],qs[_0xb398('0x2f')](_0x51599b[_0xb398('0x2a')][_0xb398('0x2f')]));_0x4c2472[_0xb398('0x2e')]=_0x4c2472[_0xb398('0x2e')]['length']?_0x4c2472['attributes']:_0x2f6f26[_0xb398('0x29')];_0x4c2472['order']=qs[_0xb398('0x32')](_0x51599b[_0xb398('0x2a')][_0xb398('0x32')]);_0x4c2472['where']=qs[_0xb398('0x2c')](_[_0xb398('0x4a')](_0x51599b[_0xb398('0x2a')],_0x2f6f26['filters']));if(_0x51599b['query'][_0xb398('0x37')]){_0x4c2472[_0xb398('0x33')]=_['merge'](_0x4c2472[_0xb398('0x33')],{'$or':_[_0xb398('0x26')](_0x4c2472[_0xb398('0x2e')],function(_0x836e40){var _0x1a9c06={};_0x1a9c06[_0x836e40]={'$like':'%'+_0x51599b[_0xb398('0x2a')]['filter']+'%'};return _0x1a9c06;})});}_0x4c2472=_[_0xb398('0x34')]({},_0x4c2472,_0x51599b[_0xb398('0x38')]);return _0x503c1e[_0xb398('0x49')](_0x4c2472);}})['then'](function(_0x5e253d){if(_0x5e253d){_0x2477cd=_0x5e253d[_0xb398('0x30')];if(!_0x51599b[_0xb398('0x2a')][_0xb398('0x47')](_0xb398('0x48'))){_0x4c2472[_0xb398('0x1a')]=qs[_0xb398('0x1a')](_0x51599b['query'][_0xb398('0x1a')]);_0x4c2472['offset']=qs[_0xb398('0x18')](_0x51599b['query']['offset']);}return _0x503c1e[_0xb398('0x49')](_0x4c2472);}})[_0xb398('0x21')](function(_0x4ac0f5){if(_0x4ac0f5){return _0x4ac0f5?{'count':_0x2477cd,'rows':_0x4ac0f5}:null;}})[_0xb398('0x21')](respondWithResult(_0x311b17,null))[_0xb398('0x3d')](handleError(_0x311b17,null));};exports[_0xb398('0x4b')]=function(_0x861b44,_0x4e1204,_0x159221){var _0x49683d={};var _0x2b0b3e={};var _0x167ad8;var _0xb709f9;return db[_0xb398('0x39')][_0xb398('0x45')]({'where':{'id':_0x861b44[_0xb398('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4e1204,null))[_0xb398('0x21')](function(_0x4bd810){if(_0x4bd810){_0x167ad8=_0x4bd810;_0x2b0b3e[_0xb398('0x29')]=_['keys'](db[_0xb398('0x46')][_0xb398('0x27')]);_0x2b0b3e['query']=_['keys'](_0x861b44[_0xb398('0x2a')]);_0x2b0b3e[_0xb398('0x2c')]=_['intersection'](_0x2b0b3e['model'],_0x2b0b3e['query']);_0x49683d[_0xb398('0x2e')]=_[_0xb398('0x2d')](_0x2b0b3e[_0xb398('0x29')],qs[_0xb398('0x2f')](_0x861b44['query']['fields']));_0x49683d[_0xb398('0x2e')]=_0x49683d[_0xb398('0x2e')]['length']?_0x49683d[_0xb398('0x2e')]:_0x2b0b3e[_0xb398('0x29')];_0x49683d['order']=qs[_0xb398('0x32')](_0x861b44['query']['sort']);_0x49683d['where']=qs[_0xb398('0x2c')](_[_0xb398('0x4a')](_0x861b44[_0xb398('0x2a')],_0x2b0b3e['filters']));if(_0x861b44[_0xb398('0x2a')][_0xb398('0x37')]){_0x49683d[_0xb398('0x33')]=_[_0xb398('0x34')](_0x49683d[_0xb398('0x33')],{'$or':_[_0xb398('0x26')](_0x49683d[_0xb398('0x2e')],function(_0x2c9175){var _0x467c29={};_0x467c29[_0x2c9175]={'$like':'%'+_0x861b44[_0xb398('0x2a')][_0xb398('0x37')]+'%'};return _0x467c29;})});}_0x49683d=_['merge']({},_0x49683d,_0x861b44['options']);return _0x167ad8[_0xb398('0x4b')](_0x49683d);}})[_0xb398('0x21')](function(_0x1793d7){if(_0x1793d7){_0xb709f9=_0x1793d7[_0xb398('0x30')];if(!_0x861b44[_0xb398('0x2a')][_0xb398('0x47')](_0xb398('0x48'))){_0x49683d[_0xb398('0x1a')]=qs[_0xb398('0x1a')](_0x861b44[_0xb398('0x2a')][_0xb398('0x1a')]);_0x49683d['offset']=qs['offset'](_0x861b44[_0xb398('0x2a')][_0xb398('0x18')]);}return _0x167ad8[_0xb398('0x4b')](_0x49683d);}})[_0xb398('0x21')](function(_0x1f5b9d){if(_0x1f5b9d){return _0x1f5b9d?{'count':_0xb709f9,'rows':_0x1f5b9d}:null;}})['then'](respondWithResult(_0x4e1204,null))[_0xb398('0x3d')](handleError(_0x4e1204,null));};exports[_0xb398('0x4c')]=function(_0x2f5a5a,_0x122814,_0x5305cc){var _0x24feda={};var _0x3acd96={};var _0x3efa1e;var _0x5cd292;return db[_0xb398('0x39')][_0xb398('0x45')]({'where':{'id':_0x2f5a5a[_0xb398('0x3f')]['id']}})['then'](handleEntityNotFound(_0x122814,null))['then'](function(_0x828d99){if(_0x828d99){_0x3efa1e=_0x828d99;_0x3acd96[_0xb398('0x29')]=_[_0xb398('0x2b')](db[_0xb398('0x4d')]['rawAttributes']);_0x3acd96[_0xb398('0x2a')]=_['keys'](_0x2f5a5a[_0xb398('0x2a')]);_0x3acd96['filters']=_[_0xb398('0x2d')](_0x3acd96[_0xb398('0x29')],_0x3acd96['query']);_0x24feda[_0xb398('0x2e')]=_['intersection'](_0x3acd96[_0xb398('0x29')],qs['fields'](_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x2f')]));_0x24feda['attributes']=_0x24feda[_0xb398('0x2e')][_0xb398('0x30')]?_0x24feda[_0xb398('0x2e')]:_0x3acd96[_0xb398('0x29')];_0x24feda[_0xb398('0x31')]=qs['sort'](_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x32')]);_0x24feda[_0xb398('0x33')]=qs[_0xb398('0x2c')](_['pick'](_0x2f5a5a[_0xb398('0x2a')],_0x3acd96[_0xb398('0x2c')]));if(_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x37')]){_0x24feda['where']=_[_0xb398('0x34')](_0x24feda[_0xb398('0x33')],{'$or':_['map'](_0x24feda[_0xb398('0x2e')],function(_0x39a039){var _0x3381dc={};_0x3381dc[_0x39a039]={'$like':'%'+_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x37')]+'%'};return _0x3381dc;})});}_0x24feda=_[_0xb398('0x34')]({},_0x24feda,_0x2f5a5a[_0xb398('0x38')]);return _0x3efa1e['getTags'](_0x24feda);}})[_0xb398('0x21')](function(_0x43b486){if(_0x43b486){_0x5cd292=_0x43b486[_0xb398('0x30')];if(!_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x47')](_0xb398('0x48'))){_0x24feda['limit']=qs[_0xb398('0x1a')](_0x2f5a5a[_0xb398('0x2a')][_0xb398('0x1a')]);_0x24feda[_0xb398('0x18')]=qs['offset'](_0x2f5a5a[_0xb398('0x2a')]['offset']);}return _0x3efa1e[_0xb398('0x4c')](_0x24feda);}})[_0xb398('0x21')](function(_0x914b01){if(_0x914b01){return _0x914b01?{'count':_0x5cd292,'rows':_0x914b01}:null;}})[_0xb398('0x21')](respondWithResult(_0x122814,null))['catch'](handleError(_0x122814,null));};exports[_0xb398('0x4e')]=function(_0x3960e5,_0x1b4aba,_0x176e2b){if(_0x3960e5[_0xb398('0x41')]['id']){delete _0x3960e5[_0xb398('0x41')]['id'];}return db[_0xb398('0x39')][_0xb398('0x45')]({'where':{'id':_0x3960e5[_0xb398('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1b4aba,null))[_0xb398('0x21')](function(_0xc673b3){if(_0xc673b3){return _0xc673b3['setTags'](_0x3960e5[_0xb398('0x41')][_0xb398('0x4f')]||[]);}return null;})[_0xb398('0x21')](respondWithResult(_0x1b4aba,null))['catch'](handleError(_0x1b4aba,null));};
\ No newline at end of file
index 4471758..d009e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5de4=['FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','define'];(function(_0x583515,_0x1ee889){var _0x3d2b62=function(_0x45c138){while(--_0x45c138){_0x583515['push'](_0x583515['shift']());}};_0x3d2b62(++_0x1ee889);}(_0x5de4,0x136));var _0x45de=function(_0x19cc8a,_0x404dd0){_0x19cc8a=_0x19cc8a-0x0;var _0x4d6188=_0x5de4[_0x19cc8a];return _0x4d6188;};'use strict';var _=require(_0x45de('0x0'));var util=require(_0x45de('0x1'));var logger=require(_0x45de('0x2'))(_0x45de('0x3'));var moment=require(_0x45de('0x4'));var BPromise=require(_0x45de('0x5'));var rp=require(_0x45de('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x45de('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x2ad0f9,_0x3166ab){return _0x2ad0f9[_0x45de('0x8')](_0x45de('0x9'),attributes,{'tableName':_0x45de('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb10=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x5a55e6,_0x11b472){var _0xcefd7c=function(_0x1ede7a){while(--_0x1ede7a){_0x5a55e6['push'](_0x5a55e6['shift']());}};_0xcefd7c(++_0x11b472);}(_0xbb10,0x186));var _0x0bb1=function(_0x421b37,_0x444068){_0x421b37=_0x421b37-0x0;var _0x43369c=_0xbb10[_0x421b37];return _0x43369c;};'use strict';var _=require(_0x0bb1('0x0'));var util=require('util');var logger=require(_0x0bb1('0x1'))(_0x0bb1('0x2'));var moment=require(_0x0bb1('0x3'));var BPromise=require('bluebird');var rp=require(_0x0bb1('0x4'));var fs=require('fs');var path=require(_0x0bb1('0x5'));var rimraf=require(_0x0bb1('0x6'));var config=require(_0x0bb1('0x7'));var attributes=require(_0x0bb1('0x8'));module[_0x0bb1('0x9')]=function(_0x17bc46,_0x22e862){return _0x17bc46[_0x0bb1('0xa')](_0x0bb1('0xb'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98c0fe2..65ca36b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0a=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','moment'];(function(_0x382565,_0x518498){var _0x3ce771=function(_0x45712e){while(--_0x45712e){_0x382565['push'](_0x382565['shift']());}};_0x3ce771(++_0x518498);}(_0xfd0a,0x8a));var _0xafd0=function(_0x386ab9,_0x3a3234){_0x386ab9=_0x386ab9-0x0;var _0x407220=_0xfd0a[_0x386ab9];return _0x407220;};'use strict';var _=require(_0xafd0('0x0'));var util=require('util');var moment=require(_0xafd0('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xafd0('0x2'));var db=require(_0xafd0('0x3'))['db'];var utils=require(_0xafd0('0x4'));var logger=require('../../config/logger')(_0xafd0('0x5'));var config=require(_0xafd0('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xafd0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1ae22f,_0x381a6e,_0x35a9a2){return new BPromise(function(_0x4fdeaf,_0x3f39ea){return client[_0xafd0('0x8')](_0x1ae22f,_0x35a9a2)[_0xafd0('0x9')](function(_0x48604c){logger[_0xafd0('0xa')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x381a6e,_0xafd0('0xb'));logger[_0xafd0('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x381a6e,'request\x20sent',JSON[_0xafd0('0xd')](_0x48604c));if(_0x48604c[_0xafd0('0xe')]){if(_0x48604c[_0xafd0('0xe')][_0xafd0('0xf')]===0x1f4){logger[_0xafd0('0xe')](_0xafd0('0x10'),_0x381a6e,_0x48604c[_0xafd0('0xe')][_0xafd0('0x11')]);return _0x3f39ea(_0x48604c[_0xafd0('0xe')]['message']);}logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x381a6e,_0x48604c['error'][_0xafd0('0x11')]);return _0x4fdeaf(_0x48604c[_0xafd0('0xe')]['message']);}else{logger[_0xafd0('0xa')](_0xafd0('0x10'),_0x381a6e,_0xafd0('0xb'));_0x4fdeaf(_0x48604c[_0xafd0('0x12')][_0xafd0('0x11')]);}})[_0xafd0('0x13')](function(_0x4c8655){logger[_0xafd0('0xe')](_0xafd0('0x10'),_0x381a6e,_0x4c8655);_0x3f39ea(_0x4c8655);});});}
\ No newline at end of file
+var _0xfdf9=['debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x2fcdcf,_0x345cef){var _0x56aa71=function(_0x500482){while(--_0x500482){_0x2fcdcf['push'](_0x2fcdcf['shift']());}};_0x56aa71(++_0x345cef);}(_0xfdf9,0xa9));var _0x9fdf=function(_0x53ce90,_0x160161){_0x53ce90=_0x53ce90-0x0;var _0x2d3947=_0xfdf9[_0x53ce90];return _0x2d3947;};'use strict';var _=require(_0x9fdf('0x0'));var util=require(_0x9fdf('0x1'));var moment=require(_0x9fdf('0x2'));var BPromise=require('bluebird');var rs=require(_0x9fdf('0x3'));var fs=require('fs');var Redis=require(_0x9fdf('0x4'));var db=require(_0x9fdf('0x5'))['db'];var utils=require(_0x9fdf('0x6'));var logger=require(_0x9fdf('0x7'))('rpc');var config=require(_0x9fdf('0x8'));var jayson=require(_0x9fdf('0x9'));var client=jayson[_0x9fdf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x517b03,_0x47c18d,_0x3e2b83){return new BPromise(function(_0x1e43a,_0x493c31){return client[_0x9fdf('0xb')](_0x517b03,_0x3e2b83)['then'](function(_0x4d12c2){logger[_0x9fdf('0xc')](_0x9fdf('0xd'),_0x47c18d,_0x9fdf('0xe'));logger[_0x9fdf('0xf')](_0x9fdf('0x10'),_0x47c18d,'request\x20sent',JSON[_0x9fdf('0x11')](_0x4d12c2));if(_0x4d12c2[_0x9fdf('0x12')]){if(_0x4d12c2['error'][_0x9fdf('0x13')]===0x1f4){logger[_0x9fdf('0x12')](_0x9fdf('0xd'),_0x47c18d,_0x4d12c2[_0x9fdf('0x12')][_0x9fdf('0x14')]);return _0x493c31(_0x4d12c2[_0x9fdf('0x12')]['message']);}logger[_0x9fdf('0x12')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x47c18d,_0x4d12c2[_0x9fdf('0x12')][_0x9fdf('0x14')]);return _0x1e43a(_0x4d12c2[_0x9fdf('0x12')][_0x9fdf('0x14')]);}else{logger[_0x9fdf('0xc')](_0x9fdf('0xd'),_0x47c18d,_0x9fdf('0xe'));_0x1e43a(_0x4d12c2[_0x9fdf('0x15')][_0x9fdf('0x14')]);}})[_0x9fdf('0x16')](function(_0x4416c2){logger['error'](_0x9fdf('0xd'),_0x47c18d,_0x4416c2);_0x493c31(_0x4416c2);});});}
\ No newline at end of file
index 9505bd4..2fffbf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dd0=['express','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9dd0,0x85));var _0x09dd=function(_0x30b75e,_0x2083b8){_0x30b75e=_0x30b75e-0x0;var _0x38f5b6=_0x9dd0[_0x30b75e];return _0x38f5b6;};'use strict';var multer=require(_0x09dd('0x0'));var util=require('util');var path=require(_0x09dd('0x1'));var timeout=require(_0x09dd('0x2'));var express=require(_0x09dd('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x09dd('0x4'));var config=require(_0x09dd('0x5'));var controller=require('./intFreshdeskField.controller');router[_0x09dd('0x6')]('/',auth[_0x09dd('0x7')](),controller['index']);router[_0x09dd('0x6')](_0x09dd('0x8'),auth[_0x09dd('0x7')](),controller[_0x09dd('0x9')]);router[_0x09dd('0xa')]('/',auth[_0x09dd('0x7')](),controller[_0x09dd('0xb')]);router[_0x09dd('0xc')](_0x09dd('0x8'),auth[_0x09dd('0x7')](),controller[_0x09dd('0xd')]);router[_0x09dd('0xe')](_0x09dd('0x8'),auth[_0x09dd('0x7')](),controller[_0x09dd('0xf')]);module[_0x09dd('0x10')]=router;
\ No newline at end of file
+var _0xd429=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','exports','multer','util','path','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd429,0x19f));var _0x9d42=function(_0x1b0113,_0x6270cd){_0x1b0113=_0x1b0113-0x0;var _0x258d38=_0xd429[_0x1b0113];return _0x258d38;};'use strict';var multer=require(_0x9d42('0x0'));var util=require(_0x9d42('0x1'));var path=require(_0x9d42('0x2'));var timeout=require('connect-timeout');var express=require(_0x9d42('0x3'));var router=express[_0x9d42('0x4')]();var fs_extra=require(_0x9d42('0x5'));var auth=require(_0x9d42('0x6'));var interaction=require(_0x9d42('0x7'));var config=require(_0x9d42('0x8'));var controller=require(_0x9d42('0x9'));router[_0x9d42('0xa')]('/',auth[_0x9d42('0xb')](),controller[_0x9d42('0xc')]);router[_0x9d42('0xa')](_0x9d42('0xd'),auth[_0x9d42('0xb')](),controller['show']);router[_0x9d42('0xe')]('/',auth[_0x9d42('0xb')](),controller[_0x9d42('0xf')]);router[_0x9d42('0x10')](_0x9d42('0xd'),auth[_0x9d42('0xb')](),controller[_0x9d42('0x11')]);router[_0x9d42('0x12')](_0x9d42('0xd'),auth[_0x9d42('0xb')](),controller['destroy']);module[_0x9d42('0x13')]=router;
\ No newline at end of file
index fda0ecf..93b1ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e1=['picklist','string','STRING','variable','BOOLEAN','sequelize','ENUM','customVariable','keyValue'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xd5e1,0x15b));var _0x1d5e=function(_0x22c104,_0x987aef){_0x22c104=_0x22c104-0x0;var _0x2669cd=_0xd5e1[_0x22c104];return _0x2669cd;};'use strict';var Sequelize=require(_0x1d5e('0x0'));module['exports']={'type':{'type':Sequelize[_0x1d5e('0x1')]('string','variable',_0x1d5e('0x2'),_0x1d5e('0x3'),_0x1d5e('0x4')),'defaultValue':_0x1d5e('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1d5e('0x6')]},'keyType':{'type':Sequelize[_0x1d5e('0x1')](_0x1d5e('0x5'),_0x1d5e('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x1d5e('0x6')]},'idField':{'type':Sequelize[_0x1d5e('0x6')]},'nameField':{'type':Sequelize[_0x1d5e('0x6')]},'customField':{'type':Sequelize[_0x1d5e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1d5e('0x6')]}};
\ No newline at end of file
+var _0x7598=['string','STRING','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x476e57,_0x4a44d9){var _0x17a8dc=function(_0xee58b){while(--_0xee58b){_0x476e57['push'](_0x476e57['shift']());}};_0x17a8dc(++_0x4a44d9);}(_0x7598,0xc6));var _0x8759=function(_0x2fb0e7,_0x228cc7){_0x2fb0e7=_0x2fb0e7-0x0;var _0x2f0a46=_0x7598[_0x2fb0e7];return _0x2f0a46;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x8759('0x0')]('string',_0x8759('0x1'),_0x8759('0x2'),_0x8759('0x3'),_0x8759('0x4')),'defaultValue':_0x8759('0x5')},'content':{'type':Sequelize[_0x8759('0x6')]},'key':{'type':Sequelize[_0x8759('0x6')]},'keyType':{'type':Sequelize[_0x8759('0x0')]('string',_0x8759('0x1'),_0x8759('0x2'))},'keyContent':{'type':Sequelize[_0x8759('0x6')]},'idField':{'type':Sequelize[_0x8759('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8759('0x6')]}};
\ No newline at end of file
index 2271f5e..61051a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe57=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','update','then','name','send','map','FreshdeskField','fieldName','key','model','query','filters','intersection','fields','attributes','length','sort','where','filter','merge','type','VIRTUAL','options','include','findAll','rows','params','keys','includeAll','find','catch','create','body','destroy','eml-format','rimraf','request-promise'];(function(_0x391987,_0x154738){var _0x12055e=function(_0x3a9731){while(--_0x3a9731){_0x391987['push'](_0x391987['shift']());}};_0x12055e(++_0x154738);}(_0xfe57,0x195));var _0x7fe5=function(_0x1e03a6,_0xf0349){_0x1e03a6=_0x1e03a6-0x0;var _0x295b64=_0xfe57[_0x1e03a6];return _0x295b64;};'use strict';var emlformat=require(_0x7fe5('0x0'));var rimraf=require(_0x7fe5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7fe5('0x2'));var moment=require(_0x7fe5('0x3'));var BPromise=require(_0x7fe5('0x4'));var Mustache=require(_0x7fe5('0x5'));var util=require(_0x7fe5('0x6'));var path=require(_0x7fe5('0x7'));var sox=require(_0x7fe5('0x8'));var csv=require(_0x7fe5('0x9'));var ejs=require(_0x7fe5('0xa'));var fs=require('fs');var fs_extra=require(_0x7fe5('0xb'));var _=require(_0x7fe5('0xc'));var squel=require(_0x7fe5('0xd'));var crypto=require(_0x7fe5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7fe5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7fe5('0x10'));var Papa=require(_0x7fe5('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7fe5('0x12'));var as=require(_0x7fe5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7fe5('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x7fe5('0x15'));var licenseUtil=require(_0x7fe5('0x16'));var db=require(_0x7fe5('0x17'))['db'];function respondWithStatusCode(_0x225fc3,_0x53f76c){_0x53f76c=_0x53f76c||0xcc;return function(_0x329c95){if(_0x329c95){return _0x225fc3[_0x7fe5('0x18')](_0x53f76c);}return _0x225fc3['status'](_0x53f76c)[_0x7fe5('0x19')]();};}function respondWithResult(_0x54cfb2,_0x1f84b5){_0x1f84b5=_0x1f84b5||0xc8;return function(_0x2d297b){if(_0x2d297b){return _0x54cfb2['status'](_0x1f84b5)[_0x7fe5('0x1a')](_0x2d297b);}};}function respondWithFilteredResult(_0x56e76f,_0x39f175){return function(_0x221ab2){if(_0x221ab2){var _0xbdf0a4=typeof _0x39f175[_0x7fe5('0x1b')]===_0x7fe5('0x1c')&&typeof _0x39f175[_0x7fe5('0x1d')]==='undefined';var _0x166e23=_0x221ab2[_0x7fe5('0x1e')];var _0x340d5e=_0xbdf0a4?0x0:_0x39f175[_0x7fe5('0x1b')];var _0x2533db=_0xbdf0a4?_0x221ab2[_0x7fe5('0x1e')]:_0x39f175[_0x7fe5('0x1b')]+_0x39f175[_0x7fe5('0x1d')];var _0x478523;if(_0x2533db>=_0x166e23){_0x2533db=_0x166e23;_0x478523=0xc8;}else{_0x478523=0xce;}_0x56e76f[_0x7fe5('0x1f')](_0x478523);return _0x56e76f['set']('Content-Range',_0x340d5e+'-'+_0x2533db+'/'+_0x166e23)[_0x7fe5('0x1a')](_0x221ab2);}return null;};}function patchUpdates(_0x459c2d){return function(_0x2f6592){try{jsonpatch[_0x7fe5('0x20')](_0x2f6592,_0x459c2d,!![]);}catch(_0x39c560){return BPromise[_0x7fe5('0x21')](_0x39c560);}return _0x2f6592[_0x7fe5('0x22')]();};}function saveUpdates(_0xdd9df7,_0x1b271c){return function(_0x28a7fd){if(_0x28a7fd){return _0x28a7fd[_0x7fe5('0x23')](_0xdd9df7)[_0x7fe5('0x24')](function(_0x54ee98){return _0x54ee98;});}return null;};}function removeEntity(_0x3e7340,_0x2f39e0){return function(_0x43e547){if(_0x43e547){return _0x43e547['destroy']()[_0x7fe5('0x24')](function(){_0x3e7340['status'](0xcc)[_0x7fe5('0x19')]();});}};}function handleEntityNotFound(_0x53f522,_0x5c3b37){return function(_0x190355){if(!_0x190355){_0x53f522[_0x7fe5('0x18')](0x194);}return _0x190355;};}function handleError(_0x2a96f4,_0x399c55){_0x399c55=_0x399c55||0x1f4;return function(_0x4393c3){logger['error'](_0x4393c3['stack']);if(_0x4393c3[_0x7fe5('0x25')]){delete _0x4393c3[_0x7fe5('0x25')];}_0x2a96f4[_0x7fe5('0x1f')](_0x399c55)[_0x7fe5('0x26')](_0x4393c3);};}exports['index']=function(_0x46f816,_0x4a77e9){var _0x150ab9={},_0x1420de={},_0x204bc8={'count':0x0,'rows':[]};var _0x28a689=_[_0x7fe5('0x27')](db[_0x7fe5('0x28')]['rawAttributes'],function(_0xe521c6){return{'name':_0xe521c6[_0x7fe5('0x29')],'type':_0xe521c6['type'][_0x7fe5('0x2a')]};});_0x1420de[_0x7fe5('0x2b')]=_[_0x7fe5('0x27')](_0x28a689,_0x7fe5('0x25'));_0x1420de[_0x7fe5('0x2c')]=_['keys'](_0x46f816['query']);_0x1420de[_0x7fe5('0x2d')]=_[_0x7fe5('0x2e')](_0x1420de[_0x7fe5('0x2b')],_0x1420de[_0x7fe5('0x2c')]);_0x150ab9['attributes']=_[_0x7fe5('0x2e')](_0x1420de[_0x7fe5('0x2b')],qs[_0x7fe5('0x2f')](_0x46f816[_0x7fe5('0x2c')][_0x7fe5('0x2f')]));_0x150ab9[_0x7fe5('0x30')]=_0x150ab9['attributes'][_0x7fe5('0x31')]?_0x150ab9[_0x7fe5('0x30')]:_0x1420de[_0x7fe5('0x2b')];if(!_0x46f816[_0x7fe5('0x2c')]['hasOwnProperty']('nolimit')){_0x150ab9[_0x7fe5('0x1d')]=qs['limit'](_0x46f816[_0x7fe5('0x2c')]['limit']);_0x150ab9[_0x7fe5('0x1b')]=qs['offset'](_0x46f816['query']['offset']);}_0x150ab9['order']=qs[_0x7fe5('0x32')](_0x46f816[_0x7fe5('0x2c')]['sort']);_0x150ab9[_0x7fe5('0x33')]=qs[_0x7fe5('0x2d')](_['pick'](_0x46f816[_0x7fe5('0x2c')],_0x1420de['filters']),_0x28a689);if(_0x46f816['query'][_0x7fe5('0x34')]){_0x150ab9[_0x7fe5('0x33')]=_[_0x7fe5('0x35')](_0x150ab9[_0x7fe5('0x33')],{'$or':_[_0x7fe5('0x27')](_0x28a689,function(_0x4c4b05){if(_0x4c4b05[_0x7fe5('0x36')]!==_0x7fe5('0x37')){var _0x5839b2={};_0x5839b2[_0x4c4b05[_0x7fe5('0x25')]]={'$like':'%'+_0x46f816[_0x7fe5('0x2c')][_0x7fe5('0x34')]+'%'};return _0x5839b2;}})});}_0x150ab9=_[_0x7fe5('0x35')]({},_0x150ab9,_0x46f816[_0x7fe5('0x38')]);var _0x1c81c8={'where':_0x150ab9[_0x7fe5('0x33')]};return db['FreshdeskField']['count'](_0x1c81c8)[_0x7fe5('0x24')](function(_0x5f5db0){_0x204bc8[_0x7fe5('0x1e')]=_0x5f5db0;if(_0x46f816[_0x7fe5('0x2c')]['includeAll']){_0x150ab9[_0x7fe5('0x39')]=[{'all':!![]}];}return db[_0x7fe5('0x28')][_0x7fe5('0x3a')](_0x150ab9);})[_0x7fe5('0x24')](function(_0x2fd004){_0x204bc8[_0x7fe5('0x3b')]=_0x2fd004;return _0x204bc8;})[_0x7fe5('0x24')](respondWithFilteredResult(_0x4a77e9,_0x150ab9))['catch'](handleError(_0x4a77e9,null));};exports['show']=function(_0x411002,_0x4f81ca){var _0xad0b05={'raw':!![],'where':{'id':_0x411002[_0x7fe5('0x3c')]['id']}},_0x1a3e0d={};_0x1a3e0d[_0x7fe5('0x2b')]=_['keys'](db[_0x7fe5('0x28')]['rawAttributes']);_0x1a3e0d['query']=_[_0x7fe5('0x3d')](_0x411002[_0x7fe5('0x2c')]);_0x1a3e0d['filters']=_[_0x7fe5('0x2e')](_0x1a3e0d[_0x7fe5('0x2b')],_0x1a3e0d[_0x7fe5('0x2c')]);_0xad0b05[_0x7fe5('0x30')]=_[_0x7fe5('0x2e')](_0x1a3e0d['model'],qs[_0x7fe5('0x2f')](_0x411002[_0x7fe5('0x2c')]['fields']));_0xad0b05[_0x7fe5('0x30')]=_0xad0b05[_0x7fe5('0x30')][_0x7fe5('0x31')]?_0xad0b05[_0x7fe5('0x30')]:_0x1a3e0d['model'];if(_0x411002[_0x7fe5('0x2c')][_0x7fe5('0x3e')]){_0xad0b05[_0x7fe5('0x39')]=[{'all':!![]}];}_0xad0b05=_['merge']({},_0xad0b05,_0x411002[_0x7fe5('0x38')]);return db[_0x7fe5('0x28')][_0x7fe5('0x3f')](_0xad0b05)['then'](handleEntityNotFound(_0x4f81ca,null))[_0x7fe5('0x24')](respondWithResult(_0x4f81ca,null))[_0x7fe5('0x40')](handleError(_0x4f81ca,null));};exports[_0x7fe5('0x41')]=function(_0x4b8642,_0x19c4a6){return db[_0x7fe5('0x28')][_0x7fe5('0x41')](_0x4b8642[_0x7fe5('0x42')],{})[_0x7fe5('0x24')](respondWithResult(_0x19c4a6,0xc9))[_0x7fe5('0x40')](handleError(_0x19c4a6,null));};exports[_0x7fe5('0x23')]=function(_0x447b57,_0x446f01){if(_0x447b57[_0x7fe5('0x42')]['id']){delete _0x447b57[_0x7fe5('0x42')]['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x447b57['params']['id']}})['then'](handleEntityNotFound(_0x446f01,null))[_0x7fe5('0x24')](saveUpdates(_0x447b57['body'],null))[_0x7fe5('0x24')](respondWithResult(_0x446f01,null))[_0x7fe5('0x40')](handleError(_0x446f01,null));};exports[_0x7fe5('0x43')]=function(_0x1d9ca8,_0x362f33){return db['FreshdeskField'][_0x7fe5('0x3f')]({'where':{'id':_0x1d9ca8[_0x7fe5('0x3c')]['id']}})[_0x7fe5('0x24')](handleEntityNotFound(_0x362f33,null))[_0x7fe5('0x24')](removeEntity(_0x362f33,null))[_0x7fe5('0x40')](handleError(_0x362f33,null));};
\ No newline at end of file
+var _0xda3f=['keys','filters','intersection','attributes','fields','nolimit','sort','filter','where','merge','type','VIRTUAL','options','FreshdeskField','includeAll','include','findAll','rows','catch','params','rawAttributes','length','find','create','body','destroy','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','end','stack','name','send','map','key','model','query'];(function(_0x53f740,_0x1c689c){var _0x50636a=function(_0x304fbc){while(--_0x304fbc){_0x53f740['push'](_0x53f740['shift']());}};_0x50636a(++_0x1c689c);}(_0xda3f,0xec));var _0xfda3=function(_0x5e9119,_0x3afa7a){_0x5e9119=_0x5e9119-0x0;var _0x494c11=_0xda3f[_0x5e9119];return _0x494c11;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];function respondWithStatusCode(_0x4b77ea,_0x583125){_0x583125=_0x583125||0xcc;return function(_0x5d7d5b){if(_0x5d7d5b){return _0x4b77ea[_0xfda3('0x17')](_0x583125);}return _0x4b77ea[_0xfda3('0x18')](_0x583125)['end']();};}function respondWithResult(_0x501588,_0x587e9b){_0x587e9b=_0x587e9b||0xc8;return function(_0x227d72){if(_0x227d72){return _0x501588[_0xfda3('0x18')](_0x587e9b)['json'](_0x227d72);}};}function respondWithFilteredResult(_0x57a229,_0x533365){return function(_0x80ea80){if(_0x80ea80){var _0x474707=typeof _0x533365[_0xfda3('0x19')]===_0xfda3('0x1a')&&typeof _0x533365[_0xfda3('0x1b')]===_0xfda3('0x1a');var _0x2aadcb=_0x80ea80[_0xfda3('0x1c')];var _0x4680bf=_0x474707?0x0:_0x533365[_0xfda3('0x19')];var _0x54a7c6=_0x474707?_0x80ea80[_0xfda3('0x1c')]:_0x533365[_0xfda3('0x19')]+_0x533365[_0xfda3('0x1b')];var _0x32855a;if(_0x54a7c6>=_0x2aadcb){_0x54a7c6=_0x2aadcb;_0x32855a=0xc8;}else{_0x32855a=0xce;}_0x57a229['status'](_0x32855a);return _0x57a229[_0xfda3('0x1d')](_0xfda3('0x1e'),_0x4680bf+'-'+_0x54a7c6+'/'+_0x2aadcb)[_0xfda3('0x1f')](_0x80ea80);}return null;};}function patchUpdates(_0x51e731){return function(_0x5ad52a){try{jsonpatch[_0xfda3('0x20')](_0x5ad52a,_0x51e731,!![]);}catch(_0x38d428){return BPromise[_0xfda3('0x21')](_0x38d428);}return _0x5ad52a['save']();};}function saveUpdates(_0x3cf5a9,_0xef2535){return function(_0x1e15a8){if(_0x1e15a8){return _0x1e15a8[_0xfda3('0x22')](_0x3cf5a9)[_0xfda3('0x23')](function(_0x2b84b7){return _0x2b84b7;});}return null;};}function removeEntity(_0x2677f6,_0xc6fb9a){return function(_0x16eaa6){if(_0x16eaa6){return _0x16eaa6['destroy']()[_0xfda3('0x23')](function(){_0x2677f6[_0xfda3('0x18')](0xcc)[_0xfda3('0x24')]();});}};}function handleEntityNotFound(_0x4ae9b9,_0x45a977){return function(_0x39e246){if(!_0x39e246){_0x4ae9b9[_0xfda3('0x17')](0x194);}return _0x39e246;};}function handleError(_0x38946d,_0x1cb831){_0x1cb831=_0x1cb831||0x1f4;return function(_0xad9f7b){logger['error'](_0xad9f7b[_0xfda3('0x25')]);if(_0xad9f7b[_0xfda3('0x26')]){delete _0xad9f7b[_0xfda3('0x26')];}_0x38946d[_0xfda3('0x18')](_0x1cb831)[_0xfda3('0x27')](_0xad9f7b);};}exports['index']=function(_0x3c1549,_0x4101b1){var _0x301509={},_0x474992={},_0xe21ec6={'count':0x0,'rows':[]};var _0x3cfeb2=_[_0xfda3('0x28')](db['FreshdeskField']['rawAttributes'],function(_0x3aef3c){return{'name':_0x3aef3c['fieldName'],'type':_0x3aef3c['type'][_0xfda3('0x29')]};});_0x474992[_0xfda3('0x2a')]=_[_0xfda3('0x28')](_0x3cfeb2,_0xfda3('0x26'));_0x474992[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x3c1549[_0xfda3('0x2b')]);_0x474992[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x474992['model'],_0x474992[_0xfda3('0x2b')]);_0x301509[_0xfda3('0x2f')]=_[_0xfda3('0x2e')](_0x474992[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x301509[_0xfda3('0x2f')]=_0x301509[_0xfda3('0x2f')]['length']?_0x301509['attributes']:_0x474992[_0xfda3('0x2a')];if(!_0x3c1549[_0xfda3('0x2b')]['hasOwnProperty'](_0xfda3('0x31'))){_0x301509[_0xfda3('0x1b')]=qs[_0xfda3('0x1b')](_0x3c1549['query'][_0xfda3('0x1b')]);_0x301509[_0xfda3('0x19')]=qs[_0xfda3('0x19')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x19')]);}_0x301509['order']=qs[_0xfda3('0x32')](_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x32')]);_0x301509['where']=qs[_0xfda3('0x2d')](_['pick'](_0x3c1549[_0xfda3('0x2b')],_0x474992[_0xfda3('0x2d')]),_0x3cfeb2);if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x33')]){_0x301509[_0xfda3('0x34')]=_[_0xfda3('0x35')](_0x301509[_0xfda3('0x34')],{'$or':_[_0xfda3('0x28')](_0x3cfeb2,function(_0x577be8){if(_0x577be8[_0xfda3('0x36')]!==_0xfda3('0x37')){var _0xd2dde0={};_0xd2dde0[_0x577be8[_0xfda3('0x26')]]={'$like':'%'+_0x3c1549['query'][_0xfda3('0x33')]+'%'};return _0xd2dde0;}})});}_0x301509=_[_0xfda3('0x35')]({},_0x301509,_0x3c1549[_0xfda3('0x38')]);var _0x5bad90={'where':_0x301509['where']};return db[_0xfda3('0x39')][_0xfda3('0x1c')](_0x5bad90)[_0xfda3('0x23')](function(_0x1aaa6c){_0xe21ec6[_0xfda3('0x1c')]=_0x1aaa6c;if(_0x3c1549[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x301509[_0xfda3('0x3b')]=[{'all':!![]}];}return db[_0xfda3('0x39')][_0xfda3('0x3c')](_0x301509);})['then'](function(_0x27200f){_0xe21ec6[_0xfda3('0x3d')]=_0x27200f;return _0xe21ec6;})['then'](respondWithFilteredResult(_0x4101b1,_0x301509))[_0xfda3('0x3e')](handleError(_0x4101b1,null));};exports['show']=function(_0x51a314,_0x4e6886){var _0x2208bc={'raw':!![],'where':{'id':_0x51a314[_0xfda3('0x3f')]['id']}},_0x107fb1={};_0x107fb1[_0xfda3('0x2a')]=_['keys'](db[_0xfda3('0x39')][_0xfda3('0x40')]);_0x107fb1[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x51a314['query']);_0x107fb1[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],_0x107fb1['query']);_0x2208bc['attributes']=_[_0xfda3('0x2e')](_0x107fb1[_0xfda3('0x2a')],qs[_0xfda3('0x30')](_0x51a314[_0xfda3('0x2b')][_0xfda3('0x30')]));_0x2208bc[_0xfda3('0x2f')]=_0x2208bc[_0xfda3('0x2f')][_0xfda3('0x41')]?_0x2208bc[_0xfda3('0x2f')]:_0x107fb1[_0xfda3('0x2a')];if(_0x51a314[_0xfda3('0x2b')][_0xfda3('0x3a')]){_0x2208bc[_0xfda3('0x3b')]=[{'all':!![]}];}_0x2208bc=_[_0xfda3('0x35')]({},_0x2208bc,_0x51a314['options']);return db['FreshdeskField'][_0xfda3('0x42')](_0x2208bc)[_0xfda3('0x23')](handleEntityNotFound(_0x4e6886,null))[_0xfda3('0x23')](respondWithResult(_0x4e6886,null))[_0xfda3('0x3e')](handleError(_0x4e6886,null));};exports[_0xfda3('0x43')]=function(_0x60a89d,_0x192133){return db[_0xfda3('0x39')][_0xfda3('0x43')](_0x60a89d[_0xfda3('0x44')],{})['then'](respondWithResult(_0x192133,0xc9))[_0xfda3('0x3e')](handleError(_0x192133,null));};exports[_0xfda3('0x22')]=function(_0x481356,_0x36aa3a){if(_0x481356[_0xfda3('0x44')]['id']){delete _0x481356['body']['id'];}return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x481356[_0xfda3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x36aa3a,null))[_0xfda3('0x23')](saveUpdates(_0x481356[_0xfda3('0x44')],null))[_0xfda3('0x23')](respondWithResult(_0x36aa3a,null))['catch'](handleError(_0x36aa3a,null));};exports[_0xfda3('0x45')]=function(_0x33565d,_0x2f54eb){return db[_0xfda3('0x39')][_0xfda3('0x42')]({'where':{'id':_0x33565d['params']['id']}})[_0xfda3('0x23')](handleEntityNotFound(_0x2f54eb,null))['then'](removeEntity(_0x2f54eb,null))[_0xfda3('0x3e')](handleError(_0x2f54eb,null));};
\ No newline at end of file
index 76ac2eb..5a3276a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7940=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x7940,0x1ee));var _0x0794=function(_0x1e2c09,_0x1c06a8){_0x1e2c09=_0x1e2c09-0x0;var _0x321bc4=_0x7940[_0x1e2c09];return _0x321bc4;};'use strict';var _=require(_0x0794('0x0'));var util=require('util');var logger=require(_0x0794('0x1'))(_0x0794('0x2'));var moment=require(_0x0794('0x3'));var BPromise=require('bluebird');var rp=require(_0x0794('0x4'));var fs=require('fs');var path=require(_0x0794('0x5'));var rimraf=require(_0x0794('0x6'));var config=require(_0x0794('0x7'));var attributes=require('./intFreshdeskField.attributes');module[_0x0794('0x8')]=function(_0x3a74d2,_0x1597f0){return _0x3a74d2[_0x0794('0x9')](_0x0794('0xa'),attributes,{'tableName':_0x0794('0xb'),'paranoid':![],'indexes':[{'name':_0x0794('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x59e0=['FreshdeskField','int_freshdesk_fields','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define'];(function(_0x3e06dd,_0x55694f){var _0x4bbb8b=function(_0x3586fa){while(--_0x3586fa){_0x3e06dd['push'](_0x3e06dd['shift']());}};_0x4bbb8b(++_0x55694f);}(_0x59e0,0x1f4));var _0x059e=function(_0x29e358,_0x5b4d6a){_0x29e358=_0x29e358-0x0;var _0x274f62=_0x59e0[_0x29e358];return _0x274f62;};'use strict';var _=require('lodash');var util=require(_0x059e('0x0'));var logger=require(_0x059e('0x1'))(_0x059e('0x2'));var moment=require(_0x059e('0x3'));var BPromise=require(_0x059e('0x4'));var rp=require(_0x059e('0x5'));var fs=require('fs');var path=require(_0x059e('0x6'));var rimraf=require(_0x059e('0x7'));var config=require(_0x059e('0x8'));var attributes=require(_0x059e('0x9'));module[_0x059e('0xa')]=function(_0x1ce502,_0x4a4a89){return _0x1ce502[_0x059e('0xb')](_0x059e('0xc'),attributes,{'tableName':_0x059e('0xd'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x059e('0xe'),_0x059e('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0ade842..ae2c772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c0c=['request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','FreshdeskField,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3c0c,0x112));var _0xc3c0=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3c0c[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xc3c0('0x0'));var util=require('util');var moment=require(_0xc3c0('0x1'));var BPromise=require(_0xc3c0('0x2'));var rs=require(_0xc3c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc3c0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc3c0('0x5'))(_0xc3c0('0x6'));var config=require('../../config/environment');var jayson=require(_0xc3c0('0x7'));var client=jayson[_0xc3c0('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4831c8,_0x50d048,_0x1fd124){return new BPromise(function(_0x404369,_0x3803a6){return client[_0xc3c0('0x9')](_0x4831c8,_0x1fd124)['then'](function(_0x3bb710){logger['info'](_0xc3c0('0xa'),_0x50d048,_0xc3c0('0xb'));logger[_0xc3c0('0xc')](_0xc3c0('0xd'),_0x50d048,'request\x20sent',JSON['stringify'](_0x3bb710));if(_0x3bb710[_0xc3c0('0xe')]){if(_0x3bb710[_0xc3c0('0xe')][_0xc3c0('0xf')]===0x1f4){logger[_0xc3c0('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x50d048,_0x3bb710['error'][_0xc3c0('0x10')]);return _0x3803a6(_0x3bb710[_0xc3c0('0xe')][_0xc3c0('0x10')]);}logger[_0xc3c0('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x50d048,_0x3bb710[_0xc3c0('0xe')][_0xc3c0('0x10')]);return _0x404369(_0x3bb710['error'][_0xc3c0('0x10')]);}else{logger['info'](_0xc3c0('0xa'),_0x50d048,_0xc3c0('0xb'));_0x404369(_0x3bb710[_0xc3c0('0x11')][_0xc3c0('0x10')]);}})[_0xc3c0('0x12')](function(_0x4ce642){logger['error'](_0xc3c0('0xa'),_0x50d048,_0x4ce642);_0x3803a6(_0x4ce642);});});}
\ No newline at end of file
+var _0x21c1=['result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','request','then','FreshdeskField,\x20%s,\x20%s','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x21c1,0x1c3));var _0x121c=function(_0xd2dfa,_0x335a68){_0xd2dfa=_0xd2dfa-0x0;var _0x363e44=_0x21c1[_0xd2dfa];return _0x363e44;};'use strict';var _=require('lodash');var util=require(_0x121c('0x0'));var moment=require('moment');var BPromise=require(_0x121c('0x1'));var rs=require(_0x121c('0x2'));var fs=require('fs');var Redis=require(_0x121c('0x3'));var db=require(_0x121c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x121c('0x5'));var jayson=require(_0x121c('0x6'));var client=jayson[_0x121c('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x6c2fcf,_0x115f76,_0x2989b7){return new BPromise(function(_0x3e90c9,_0x5ea9b1){return client[_0x121c('0x8')](_0x6c2fcf,_0x2989b7)[_0x121c('0x9')](function(_0x5e0331){logger['info'](_0x121c('0xa'),_0x115f76,'request\x20sent');logger['debug'](_0x121c('0xb'),_0x115f76,_0x121c('0xc'),JSON[_0x121c('0xd')](_0x5e0331));if(_0x5e0331[_0x121c('0xe')]){if(_0x5e0331[_0x121c('0xe')][_0x121c('0xf')]===0x1f4){logger[_0x121c('0xe')](_0x121c('0xa'),_0x115f76,_0x5e0331[_0x121c('0xe')][_0x121c('0x10')]);return _0x5ea9b1(_0x5e0331[_0x121c('0xe')][_0x121c('0x10')]);}logger['error']('FreshdeskField,\x20%s,\x20%s',_0x115f76,_0x5e0331[_0x121c('0xe')][_0x121c('0x10')]);return _0x3e90c9(_0x5e0331[_0x121c('0xe')]['message']);}else{logger['info'](_0x121c('0xa'),_0x115f76,'request\x20sent');_0x3e90c9(_0x5e0331[_0x121c('0x11')][_0x121c('0x10')]);}})['catch'](function(_0x582aa5){logger[_0x121c('0xe')](_0x121c('0xa'),_0x115f76,_0x582aa5);_0x5ea9b1(_0x582aa5);});});}
\ No newline at end of file
index e8fb9de..4b9ed9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffd=['/:id','show','getConfigurations','getFields','post','create','/:id/configurations','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xeffd,0x6b));var _0xdeff=function(_0x4dc63c,_0x9ab099){_0x4dc63c=_0x4dc63c-0x0;var _0x299e4b=_0xeffd[_0x4dc63c];return _0x299e4b;};'use strict';var multer=require(_0xdeff('0x0'));var util=require('util');var path=require(_0xdeff('0x1'));var timeout=require(_0xdeff('0x2'));var express=require(_0xdeff('0x3'));var router=express[_0xdeff('0x4')]();var fs_extra=require(_0xdeff('0x5'));var auth=require(_0xdeff('0x6'));var interaction=require(_0xdeff('0x7'));var config=require(_0xdeff('0x8'));var controller=require(_0xdeff('0x9'));router[_0xdeff('0xa')]('/',auth[_0xdeff('0xb')](),controller[_0xdeff('0xc')]);router[_0xdeff('0xa')](_0xdeff('0xd'),auth[_0xdeff('0xb')](),controller[_0xdeff('0xe')]);router[_0xdeff('0xa')]('/:id/configurations',auth[_0xdeff('0xb')](),controller[_0xdeff('0xf')]);router[_0xdeff('0xa')]('/:id/fields',auth[_0xdeff('0xb')](),controller[_0xdeff('0x10')]);router[_0xdeff('0x11')]('/',auth[_0xdeff('0xb')](),controller[_0xdeff('0x12')]);router[_0xdeff('0x11')](_0xdeff('0x13'),auth[_0xdeff('0xb')](),controller['addConfiguration']);router[_0xdeff('0x14')](_0xdeff('0xd'),auth['isAuthenticated'](),controller[_0xdeff('0x15')]);router['delete']('/:id',auth[_0xdeff('0xb')](),controller[_0xdeff('0x16')]);module[_0xdeff('0x17')]=router;
\ No newline at end of file
+var _0x282b=['../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show','getConfigurations','/:id/fields','post','create','/:id/configurations','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x282b,0xec));var _0xb282=function(_0x899969,_0x4c0bd3){_0x899969=_0x899969-0x0;var _0x4474b3=_0x282b[_0x899969];return _0x4474b3;};'use strict';var multer=require(_0xb282('0x0'));var util=require(_0xb282('0x1'));var path=require(_0xb282('0x2'));var timeout=require(_0xb282('0x3'));var express=require(_0xb282('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb282('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb282('0x6'));var controller=require(_0xb282('0x7'));router[_0xb282('0x8')]('/',auth[_0xb282('0x9')](),controller[_0xb282('0xa')]);router[_0xb282('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb282('0xb')]);router[_0xb282('0x8')]('/:id/configurations',auth[_0xb282('0x9')](),controller[_0xb282('0xc')]);router[_0xb282('0x8')](_0xb282('0xd'),auth['isAuthenticated'](),controller['getFields']);router[_0xb282('0xe')]('/',auth[_0xb282('0x9')](),controller[_0xb282('0xf')]);router[_0xb282('0xe')](_0xb282('0x10'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xb282('0x11')](_0xb282('0x12'),auth[_0xb282('0x9')](),controller[_0xb282('0x13')]);router[_0xb282('0x14')]('/:id',auth[_0xb282('0x9')](),controller['destroy']);module[_0xb282('0x15')]=router;
\ No newline at end of file
index e5cc017..3aec43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['STRING','username','sequelize','exports'];(function(_0x1fb4c1,_0x2b1fb5){var _0x228def=function(_0x5c4ca9){while(--_0x5c4ca9){_0x1fb4c1['push'](_0x1fb4c1['shift']());}};_0x228def(++_0x2b1fb5);}(_0xa456,0x142));var _0x6a45=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xa456[_0x2112d4];return _0x434972;};'use strict';var Sequelize=require(_0x6a45('0x0'));module[_0x6a45('0x1')]={'name':{'type':Sequelize[_0x6a45('0x2')]},'description':{'type':Sequelize[_0x6a45('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x6a45('0x3')},'apiKey':{'type':Sequelize[_0x6a45('0x2')]},'remoteUri':{'type':Sequelize[_0x6a45('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x6a45('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xdf55=['exports','STRING','remoteUri','sequelize'];(function(_0x40e150,_0xd92c7c){var _0x3ff52e=function(_0x277505){while(--_0x277505){_0x40e150['push'](_0x40e150['shift']());}};_0x3ff52e(++_0xd92c7c);}(_0xdf55,0x83));var _0x5df5=function(_0x260073,_0xbe6af9){_0x260073=_0x260073-0x0;var _0x4ff033=_0xdf55[_0x260073];return _0x4ff033;};'use strict';var Sequelize=require(_0x5df5('0x0'));module[_0x5df5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5df5('0x2')]},'username':{'type':Sequelize[_0x5df5('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x5df5('0x2')]},'remoteUri':{'type':Sequelize[_0x5df5('0x2')],'unique':_0x5df5('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 3db7f51..d613380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40af=['../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','FreshsalesAccount','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','order','addConfiguration','AccountId','channel','Descriptions','getDescriptions','FreshsalesField','Subjects','getFields','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','/api/selector/owners','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','send','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x59db6c,_0x41e38b){var _0x475416=function(_0x1d9b32){while(--_0x1d9b32){_0x59db6c['push'](_0x59db6c['shift']());}};_0x475416(++_0x41e38b);}(_0x40af,0x110));var _0xf40a=function(_0x280b8f,_0x4e0e92){_0x280b8f=_0x280b8f-0x0;var _0x368b87=_0x40af[_0x280b8f];return _0x368b87;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf40a('0x0'));var jsonpatch=require(_0xf40a('0x1'));var rp=require(_0xf40a('0x2'));var moment=require(_0xf40a('0x3'));var BPromise=require(_0xf40a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf40a('0x5'));var sox=require(_0xf40a('0x6'));var csv=require(_0xf40a('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf40a('0x8'));var squel=require(_0xf40a('0x9'));var crypto=require(_0xf40a('0xa'));var jsforce=require(_0xf40a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xf40a('0xc'));var Redis=require(_0xf40a('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf40a('0xe'));var hardwareService=require(_0xf40a('0xf'));var logger=require(_0xf40a('0x10'))(_0xf40a('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf40a('0x12'));var db=require(_0xf40a('0x13'))['db'];var integrations=require(_0xf40a('0x14'));function respondWithStatusCode(_0xa253e3,_0x5df7f5){_0x5df7f5=_0x5df7f5||0xcc;return function(_0x1415b0){if(_0x1415b0){return _0xa253e3[_0xf40a('0x15')](_0x5df7f5);}return _0xa253e3[_0xf40a('0x16')](_0x5df7f5)[_0xf40a('0x17')]();};}function respondWithResult(_0x22e60c,_0x25fe36){_0x25fe36=_0x25fe36||0xc8;return function(_0x5e1b8e){if(_0x5e1b8e){return _0x22e60c[_0xf40a('0x16')](_0x25fe36)[_0xf40a('0x18')](_0x5e1b8e);}};}function respondWithFilteredResult(_0x1f1a83,_0x243094){return function(_0x3131d4){if(_0x3131d4){var _0x4e8218=typeof _0x243094['offset']===_0xf40a('0x19')&&typeof _0x243094[_0xf40a('0x1a')]===_0xf40a('0x19');var _0x564fed=_0x3131d4[_0xf40a('0x1b')];var _0x48455b=_0x4e8218?0x0:_0x243094[_0xf40a('0x1c')];var _0x34311b=_0x4e8218?_0x3131d4[_0xf40a('0x1b')]:_0x243094[_0xf40a('0x1c')]+_0x243094[_0xf40a('0x1a')];var _0x2f49c2;if(_0x34311b>=_0x564fed){_0x34311b=_0x564fed;_0x2f49c2=0xc8;}else{_0x2f49c2=0xce;}_0x1f1a83[_0xf40a('0x16')](_0x2f49c2);return _0x1f1a83[_0xf40a('0x1d')](_0xf40a('0x1e'),_0x48455b+'-'+_0x34311b+'/'+_0x564fed)[_0xf40a('0x18')](_0x3131d4);}return null;};}function patchUpdates(_0x49e679){return function(_0x5a656f){try{jsonpatch[_0xf40a('0x1f')](_0x5a656f,_0x49e679,!![]);}catch(_0x30d192){return BPromise[_0xf40a('0x20')](_0x30d192);}return _0x5a656f[_0xf40a('0x21')]();};}function saveUpdates(_0x1c8774,_0x511b2a){return function(_0x2e2892){if(_0x2e2892){return _0x2e2892[_0xf40a('0x22')](_0x1c8774)[_0xf40a('0x23')](function(_0x4ee4a1){return _0x4ee4a1;});}return null;};}function removeEntity(_0x217680,_0x44ebeb){return function(_0x5245d0){if(_0x5245d0){return _0x5245d0[_0xf40a('0x24')]()['then'](function(){_0x217680['status'](0xcc)[_0xf40a('0x17')]();});}};}function handleEntityNotFound(_0x2aa8b9,_0x2897fe){return function(_0x12b220){if(!_0x12b220){_0x2aa8b9[_0xf40a('0x15')](0x194);}return _0x12b220;};}function handleError(_0x2fdc94,_0x111f0b){_0x111f0b=_0x111f0b||0x1f4;return function(_0x190556){logger['error'](_0x190556[_0xf40a('0x25')]);if(_0x190556[_0xf40a('0x26')]){delete _0x190556[_0xf40a('0x26')];}_0x2fdc94['status'](_0x111f0b)['send'](_0x190556);};}exports['index']=function(_0x2b39b6,_0x5a36bc){var _0x229df5={},_0x3b4543={},_0xc7bf2d={'count':0x0,'rows':[]};var _0x207fae=_[_0xf40a('0x27')](db['FreshsalesAccount'][_0xf40a('0x28')],function(_0x248937){return{'name':_0x248937[_0xf40a('0x29')],'type':_0x248937[_0xf40a('0x2a')][_0xf40a('0x2b')]};});_0x3b4543[_0xf40a('0x2c')]=_[_0xf40a('0x27')](_0x207fae,_0xf40a('0x26'));_0x3b4543['query']=_[_0xf40a('0x2d')](_0x2b39b6['query']);_0x3b4543[_0xf40a('0x2e')]=_[_0xf40a('0x2f')](_0x3b4543[_0xf40a('0x2c')],_0x3b4543[_0xf40a('0x30')]);_0x229df5['attributes']=_[_0xf40a('0x2f')](_0x3b4543[_0xf40a('0x2c')],qs[_0xf40a('0x31')](_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x31')]));_0x229df5['attributes']=_0x229df5[_0xf40a('0x32')][_0xf40a('0x33')]?_0x229df5[_0xf40a('0x32')]:_0x3b4543[_0xf40a('0x2c')];if(!_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x34')](_0xf40a('0x35'))){_0x229df5[_0xf40a('0x1a')]=qs[_0xf40a('0x1a')](_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x1a')]);_0x229df5['offset']=qs[_0xf40a('0x1c')](_0x2b39b6[_0xf40a('0x30')]['offset']);}_0x229df5['order']=qs['sort'](_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x36')]);_0x229df5[_0xf40a('0x37')]=qs[_0xf40a('0x2e')](_[_0xf40a('0x38')](_0x2b39b6['query'],_0x3b4543[_0xf40a('0x2e')]),_0x207fae);if(_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x39')]){_0x229df5['where']=_[_0xf40a('0x3a')](_0x229df5['where'],{'$or':_[_0xf40a('0x27')](_0x207fae,function(_0x99f74d){if(_0x99f74d[_0xf40a('0x2a')]!=='VIRTUAL'){var _0xa09075={};_0xa09075[_0x99f74d['name']]={'$like':'%'+_0x2b39b6[_0xf40a('0x30')]['filter']+'%'};return _0xa09075;}})});}_0x229df5=_[_0xf40a('0x3a')]({},_0x229df5,_0x2b39b6[_0xf40a('0x3b')]);var _0x2e5f52={'where':_0x229df5[_0xf40a('0x37')]};return db['FreshsalesAccount'][_0xf40a('0x1b')](_0x2e5f52)[_0xf40a('0x23')](function(_0x3f8573){_0xc7bf2d['count']=_0x3f8573;if(_0x2b39b6[_0xf40a('0x30')][_0xf40a('0x3c')]){_0x229df5[_0xf40a('0x3d')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0xf40a('0x3e')](_0x229df5);})[_0xf40a('0x23')](function(_0xf658dc){_0xc7bf2d[_0xf40a('0x3f')]=_0xf658dc;return _0xc7bf2d;})[_0xf40a('0x23')](respondWithFilteredResult(_0x5a36bc,_0x229df5))[_0xf40a('0x40')](handleError(_0x5a36bc,null));};exports[_0xf40a('0x41')]=function(_0x46c9f2,_0x18ba87){var _0x2ef9e1={'raw':![],'where':{'id':_0x46c9f2[_0xf40a('0x42')]['id']}},_0x2d08f3={};_0x2d08f3[_0xf40a('0x2c')]=_[_0xf40a('0x2d')](db[_0xf40a('0x43')]['rawAttributes']);_0x2d08f3[_0xf40a('0x30')]=_['keys'](_0x46c9f2[_0xf40a('0x30')]);_0x2d08f3[_0xf40a('0x2e')]=_['intersection'](_0x2d08f3[_0xf40a('0x2c')],_0x2d08f3['query']);_0x2ef9e1[_0xf40a('0x32')]=_[_0xf40a('0x2f')](_0x2d08f3[_0xf40a('0x2c')],qs[_0xf40a('0x31')](_0x46c9f2[_0xf40a('0x30')]['fields']));_0x2ef9e1['attributes']=_0x2ef9e1['attributes'][_0xf40a('0x33')]?_0x2ef9e1[_0xf40a('0x32')]:_0x2d08f3[_0xf40a('0x2c')];if(_0x46c9f2[_0xf40a('0x30')][_0xf40a('0x3c')]){_0x2ef9e1[_0xf40a('0x3d')]=[{'all':!![]}];}_0x2ef9e1=_[_0xf40a('0x3a')]({},_0x2ef9e1,_0x46c9f2[_0xf40a('0x3b')]);return db[_0xf40a('0x43')][_0xf40a('0x44')](_0x2ef9e1)[_0xf40a('0x23')](handleEntityNotFound(_0x18ba87,null))[_0xf40a('0x23')](respondWithResult(_0x18ba87,null))[_0xf40a('0x40')](handleError(_0x18ba87,null));};exports[_0xf40a('0x45')]=function(_0x38f291,_0x1657f3){return db[_0xf40a('0x43')][_0xf40a('0x45')](_0x38f291['body'],{})['then'](respondWithResult(_0x1657f3,0xc9))[_0xf40a('0x40')](handleError(_0x1657f3,null));};exports[_0xf40a('0x22')]=function(_0xd572b2,_0x475534){if(_0xd572b2[_0xf40a('0x46')]['id']){delete _0xd572b2[_0xf40a('0x46')]['id'];}return db[_0xf40a('0x43')]['find']({'where':{'id':_0xd572b2[_0xf40a('0x42')]['id']}})[_0xf40a('0x23')](handleEntityNotFound(_0x475534,null))[_0xf40a('0x23')](saveUpdates(_0xd572b2[_0xf40a('0x46')],null))[_0xf40a('0x23')](respondWithResult(_0x475534,null))[_0xf40a('0x40')](handleError(_0x475534,null));};exports['destroy']=function(_0x594df5,_0x7a1b8a){return db['FreshsalesAccount'][_0xf40a('0x44')]({'where':{'id':_0x594df5[_0xf40a('0x42')]['id']}})[_0xf40a('0x23')](handleEntityNotFound(_0x7a1b8a,null))[_0xf40a('0x23')](removeEntity(_0x7a1b8a,null))[_0xf40a('0x40')](handleError(_0x7a1b8a,null));};exports[_0xf40a('0x47')]=function(_0x34c85e,_0x4f50e4,_0x5eddc7){var _0x5ce28a={};var _0x3a9ff8={};var _0x5d0886;var _0x24669e;return db[_0xf40a('0x43')][_0xf40a('0x48')]({'where':{'id':_0x34c85e[_0xf40a('0x42')]['id']}})[_0xf40a('0x23')](handleEntityNotFound(_0x4f50e4,null))[_0xf40a('0x23')](function(_0xa45481){if(_0xa45481){_0x5d0886=_0xa45481;_0x3a9ff8[_0xf40a('0x2c')]=_[_0xf40a('0x2d')](db[_0xf40a('0x49')]['rawAttributes']);_0x3a9ff8[_0xf40a('0x30')]=_[_0xf40a('0x2d')](_0x34c85e[_0xf40a('0x30')]);_0x3a9ff8[_0xf40a('0x2e')]=_[_0xf40a('0x2f')](_0x3a9ff8[_0xf40a('0x2c')],_0x3a9ff8[_0xf40a('0x30')]);_0x5ce28a['attributes']=_[_0xf40a('0x2f')](_0x3a9ff8[_0xf40a('0x2c')],qs['fields'](_0x34c85e[_0xf40a('0x30')][_0xf40a('0x31')]));_0x5ce28a[_0xf40a('0x32')]=_0x5ce28a[_0xf40a('0x32')]['length']?_0x5ce28a[_0xf40a('0x32')]:_0x3a9ff8[_0xf40a('0x2c')];_0x5ce28a[_0xf40a('0x4a')]=qs[_0xf40a('0x36')](_0x34c85e[_0xf40a('0x30')]['sort']);_0x5ce28a['where']=qs[_0xf40a('0x2e')](_['pick'](_0x34c85e['query'],_0x3a9ff8[_0xf40a('0x2e')]));if(_0x34c85e['query']['filter']){_0x5ce28a[_0xf40a('0x37')]=_['merge'](_0x5ce28a['where'],{'$or':_[_0xf40a('0x27')](_0x5ce28a[_0xf40a('0x32')],function(_0x1ca4ce){var _0x35f26d={};_0x35f26d[_0x1ca4ce]={'$like':'%'+_0x34c85e[_0xf40a('0x30')][_0xf40a('0x39')]+'%'};return _0x35f26d;})});}_0x5ce28a=_[_0xf40a('0x3a')]({},_0x5ce28a,_0x34c85e[_0xf40a('0x3b')]);return _0x5d0886[_0xf40a('0x47')](_0x5ce28a);}})[_0xf40a('0x23')](function(_0x5a0489){if(_0x5a0489){_0x24669e=_0x5a0489[_0xf40a('0x33')];if(!_0x34c85e[_0xf40a('0x30')][_0xf40a('0x34')](_0xf40a('0x35'))){_0x5ce28a['limit']=qs[_0xf40a('0x1a')](_0x34c85e[_0xf40a('0x30')][_0xf40a('0x1a')]);_0x5ce28a[_0xf40a('0x1c')]=qs[_0xf40a('0x1c')](_0x34c85e[_0xf40a('0x30')][_0xf40a('0x1c')]);}return _0x5d0886[_0xf40a('0x47')](_0x5ce28a);}})[_0xf40a('0x23')](function(_0x50f8ea){if(_0x50f8ea){return _0x50f8ea?{'count':_0x24669e,'rows':_0x50f8ea}:null;}})['then'](respondWithResult(_0x4f50e4,null))[_0xf40a('0x40')](handleError(_0x4f50e4,null));};exports[_0xf40a('0x4b')]=function(_0x1ebbb5,_0x23b8bc,_0x17690f){if(_0x1ebbb5[_0xf40a('0x46')]['id']){delete _0x1ebbb5['body']['id'];}return db['FreshsalesAccount'][_0xf40a('0x48')]({'where':{'id':_0x1ebbb5['params']['id']}})['then'](handleEntityNotFound(_0x23b8bc,null))['then'](function(_0xd28b96){if(_0xd28b96){_0x1ebbb5[_0xf40a('0x46')][_0xf40a('0x4c')]=_0xd28b96['id'];_0x1ebbb5[_0xf40a('0x46')]['Subjects']=integrations['getSubjects'](_0x1ebbb5[_0xf40a('0x46')][_0xf40a('0x4d')],_0x1ebbb5[_0xf40a('0x46')][_0xf40a('0x2a')]);_0x1ebbb5[_0xf40a('0x46')][_0xf40a('0x4e')]=integrations[_0xf40a('0x4f')](_0x1ebbb5[_0xf40a('0x46')][_0xf40a('0x4d')],_0x1ebbb5[_0xf40a('0x46')]['type']);return db[_0xf40a('0x49')][_0xf40a('0x45')](_0x1ebbb5[_0xf40a('0x46')],{'include':[{'model':db[_0xf40a('0x50')],'as':_0xf40a('0x51')},{'model':db[_0xf40a('0x50')],'as':_0xf40a('0x4e')}]});}return null;})[_0xf40a('0x23')](respondWithResult(_0x23b8bc,null))[_0xf40a('0x40')](handleError(_0x23b8bc,null));};exports[_0xf40a('0x52')]=function(_0x102485,_0x43f94d,_0x37fe62){var _0x11e0a4='';var _0x456c14='';return db['FreshsalesAccount'][_0xf40a('0x48')]({'where':{'id':_0x102485[_0xf40a('0x42')]['id']},'attributes':['id',_0xf40a('0x53'),_0xf40a('0x54'),_0xf40a('0x55')]})[_0xf40a('0x23')](handleEntityNotFound(_0x43f94d,null))[_0xf40a('0x23')](function(_0x47646c){if(_0x47646c){_0x456c14=_0x47646c[_0xf40a('0x53')];_0x11e0a4=_0x47646c[_0xf40a('0x54')];var _0x59dbe2=_0x47646c[_0xf40a('0x54')][_0xf40a('0x56')](-0x1);if(_0x59dbe2==='/'){_0x11e0a4=_0x11e0a4[_0xf40a('0x57')](0x0,_0x11e0a4[_0xf40a('0x58')](_0x59dbe2));}return rp({'method':_0xf40a('0x59'),'uri':util[_0xf40a('0x5a')]('%s%s',_0x11e0a4,_0xf40a('0x5b')),'headers':{'Authorization':'Token\x20token='+_0x47646c[_0xf40a('0x55')]},'json':!![]});}})[_0xf40a('0x23')](function(_0x4cc974){if(_0x4cc974){var _0x218e3f=_0x4cc974['users'];var _0xfb8e6b=![];var _0x2e54f9=null;for(_0x2e54f9=0x0;_0x2e54f9<_0x218e3f[_0xf40a('0x33')];_0x2e54f9++){if(_0x218e3f[_0x2e54f9]['email']===_0x456c14){_0xfb8e6b=!![];}}if(_0xfb8e6b){return!![];}else{throw new Error({'statusCode':0x194,'message':_0xf40a('0x5c')});}}})[_0xf40a('0x23')](respondWithResult(_0x43f94d,null))['catch'](function(_0x5f19ff){var _0x267699=_0x102485['query'][_0xf40a('0x5d')]?0x1f4:_0x5f19ff['statusCode']||0x1f4;logger['error'](_0xf40a('0x5e'),_0xf40a('0x52'),_0x267699,JSON['stringify'](_0x5f19ff));delete _0x5f19ff[_0xf40a('0x26')];if(_0x267699===0x191){_0x267699=0x190;}_0x43f94d['status'](_0x267699)[_0xf40a('0x5f')](_0x102485[_0xf40a('0x30')][_0xf40a('0x5d')]?{'message':'Wrong\x20credentials','statusCode':_0x5f19ff['statusCode']}:_0x5f19ff);});};
\ No newline at end of file
+var _0xe0b9=['rows','catch','params','fields','options','find','create','body','destroy','getConfigurations','findOne','FreshsalesConfiguration','pick','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshsalesField','getFields','username','remoteUri','apiKey','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','update','then','end','stack','name','send','map','FreshsalesAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','merge','VIRTUAL','filter','count','includeAll','include','findAll'];(function(_0x225809,_0x2866c8){var _0x1862c2=function(_0xe83fd){while(--_0xe83fd){_0x225809['push'](_0x225809['shift']());}};_0x1862c2(++_0x2866c8);}(_0xe0b9,0x1be));var _0x9e0b=function(_0x48e1ec,_0x35f468){_0x48e1ec=_0x48e1ec-0x0;var _0x3b33eb=_0xe0b9[_0x48e1ec];return _0x3b33eb;};'use strict';var emlformat=require(_0x9e0b('0x0'));var rimraf=require(_0x9e0b('0x1'));var zipdir=require(_0x9e0b('0x2'));var jsonpatch=require(_0x9e0b('0x3'));var rp=require(_0x9e0b('0x4'));var moment=require(_0x9e0b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9e0b('0x6'));var util=require(_0x9e0b('0x7'));var path=require(_0x9e0b('0x8'));var sox=require(_0x9e0b('0x9'));var csv=require(_0x9e0b('0xa'));var ejs=require(_0x9e0b('0xb'));var fs=require('fs');var fs_extra=require(_0x9e0b('0xc'));var _=require(_0x9e0b('0xd'));var squel=require('squel');var crypto=require(_0x9e0b('0xe'));var jsforce=require(_0x9e0b('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x9e0b('0xa'));var querystring=require('querystring');var Papa=require(_0x9e0b('0x10'));var Redis=require('ioredis');var authService=require(_0x9e0b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9e0b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9e0b('0x13'))(_0x9e0b('0x14'));var utils=require(_0x9e0b('0x15'));var config=require(_0x9e0b('0x16'));var licenseUtil=require(_0x9e0b('0x17'));var db=require(_0x9e0b('0x18'))['db'];var integrations=require(_0x9e0b('0x19'));function respondWithStatusCode(_0x3ef8c4,_0x5349a0){_0x5349a0=_0x5349a0||0xcc;return function(_0x12e7db){if(_0x12e7db){return _0x3ef8c4[_0x9e0b('0x1a')](_0x5349a0);}return _0x3ef8c4[_0x9e0b('0x1b')](_0x5349a0)['end']();};}function respondWithResult(_0x10822f,_0x1b08c8){_0x1b08c8=_0x1b08c8||0xc8;return function(_0x4d36ac){if(_0x4d36ac){return _0x10822f[_0x9e0b('0x1b')](_0x1b08c8)[_0x9e0b('0x1c')](_0x4d36ac);}};}function respondWithFilteredResult(_0x3cd06c,_0x45e3ca){return function(_0x2cb501){if(_0x2cb501){var _0x1aa76b=typeof _0x45e3ca[_0x9e0b('0x1d')]===_0x9e0b('0x1e')&&typeof _0x45e3ca[_0x9e0b('0x1f')]===_0x9e0b('0x1e');var _0x2768ae=_0x2cb501['count'];var _0x49a3f6=_0x1aa76b?0x0:_0x45e3ca[_0x9e0b('0x1d')];var _0x998a27=_0x1aa76b?_0x2cb501['count']:_0x45e3ca[_0x9e0b('0x1d')]+_0x45e3ca[_0x9e0b('0x1f')];var _0x53e337;if(_0x998a27>=_0x2768ae){_0x998a27=_0x2768ae;_0x53e337=0xc8;}else{_0x53e337=0xce;}_0x3cd06c[_0x9e0b('0x1b')](_0x53e337);return _0x3cd06c[_0x9e0b('0x20')](_0x9e0b('0x21'),_0x49a3f6+'-'+_0x998a27+'/'+_0x2768ae)[_0x9e0b('0x1c')](_0x2cb501);}return null;};}function patchUpdates(_0xd20ee4){return function(_0x432e21){try{jsonpatch[_0x9e0b('0x22')](_0x432e21,_0xd20ee4,!![]);}catch(_0x18a8c6){return BPromise['reject'](_0x18a8c6);}return _0x432e21['save']();};}function saveUpdates(_0x3911c6,_0x4a3249){return function(_0x85ed04){if(_0x85ed04){return _0x85ed04[_0x9e0b('0x23')](_0x3911c6)[_0x9e0b('0x24')](function(_0x39e9e4){return _0x39e9e4;});}return null;};}function removeEntity(_0xdfdd51,_0x1bf0b1){return function(_0x4e837f){if(_0x4e837f){return _0x4e837f['destroy']()[_0x9e0b('0x24')](function(){_0xdfdd51['status'](0xcc)[_0x9e0b('0x25')]();});}};}function handleEntityNotFound(_0x4f3692,_0x3e476){return function(_0x1681fe){if(!_0x1681fe){_0x4f3692[_0x9e0b('0x1a')](0x194);}return _0x1681fe;};}function handleError(_0x47daee,_0x16a228){_0x16a228=_0x16a228||0x1f4;return function(_0x2c68a0){logger['error'](_0x2c68a0[_0x9e0b('0x26')]);if(_0x2c68a0[_0x9e0b('0x27')]){delete _0x2c68a0[_0x9e0b('0x27')];}_0x47daee[_0x9e0b('0x1b')](_0x16a228)[_0x9e0b('0x28')](_0x2c68a0);};}exports['index']=function(_0x51e8db,_0x200c56){var _0x59b491={},_0x2b2d18={},_0x5a238d={'count':0x0,'rows':[]};var _0x3679c8=_[_0x9e0b('0x29')](db[_0x9e0b('0x2a')][_0x9e0b('0x2b')],function(_0x224960){return{'name':_0x224960[_0x9e0b('0x2c')],'type':_0x224960[_0x9e0b('0x2d')]['key']};});_0x2b2d18[_0x9e0b('0x2e')]=_['map'](_0x3679c8,_0x9e0b('0x27'));_0x2b2d18[_0x9e0b('0x2f')]=_[_0x9e0b('0x30')](_0x51e8db[_0x9e0b('0x2f')]);_0x2b2d18[_0x9e0b('0x31')]=_[_0x9e0b('0x32')](_0x2b2d18[_0x9e0b('0x2e')],_0x2b2d18['query']);_0x59b491[_0x9e0b('0x33')]=_[_0x9e0b('0x32')](_0x2b2d18[_0x9e0b('0x2e')],qs['fields'](_0x51e8db[_0x9e0b('0x2f')]['fields']));_0x59b491['attributes']=_0x59b491[_0x9e0b('0x33')][_0x9e0b('0x34')]?_0x59b491[_0x9e0b('0x33')]:_0x2b2d18[_0x9e0b('0x2e')];if(!_0x51e8db[_0x9e0b('0x2f')]['hasOwnProperty'](_0x9e0b('0x35'))){_0x59b491['limit']=qs[_0x9e0b('0x1f')](_0x51e8db[_0x9e0b('0x2f')]['limit']);_0x59b491['offset']=qs[_0x9e0b('0x1d')](_0x51e8db[_0x9e0b('0x2f')]['offset']);}_0x59b491[_0x9e0b('0x36')]=qs[_0x9e0b('0x37')](_0x51e8db[_0x9e0b('0x2f')][_0x9e0b('0x37')]);_0x59b491[_0x9e0b('0x38')]=qs[_0x9e0b('0x31')](_['pick'](_0x51e8db[_0x9e0b('0x2f')],_0x2b2d18[_0x9e0b('0x31')]),_0x3679c8);if(_0x51e8db['query']['filter']){_0x59b491['where']=_[_0x9e0b('0x39')](_0x59b491['where'],{'$or':_['map'](_0x3679c8,function(_0x4a9418){if(_0x4a9418['type']!==_0x9e0b('0x3a')){var _0x482e44={};_0x482e44[_0x4a9418[_0x9e0b('0x27')]]={'$like':'%'+_0x51e8db[_0x9e0b('0x2f')][_0x9e0b('0x3b')]+'%'};return _0x482e44;}})});}_0x59b491=_[_0x9e0b('0x39')]({},_0x59b491,_0x51e8db['options']);var _0x24fca5={'where':_0x59b491[_0x9e0b('0x38')]};return db[_0x9e0b('0x2a')]['count'](_0x24fca5)['then'](function(_0x51101e){_0x5a238d[_0x9e0b('0x3c')]=_0x51101e;if(_0x51e8db[_0x9e0b('0x2f')][_0x9e0b('0x3d')]){_0x59b491[_0x9e0b('0x3e')]=[{'all':!![]}];}return db[_0x9e0b('0x2a')][_0x9e0b('0x3f')](_0x59b491);})['then'](function(_0x22e774){_0x5a238d[_0x9e0b('0x40')]=_0x22e774;return _0x5a238d;})[_0x9e0b('0x24')](respondWithFilteredResult(_0x200c56,_0x59b491))[_0x9e0b('0x41')](handleError(_0x200c56,null));};exports['show']=function(_0xae3eae,_0x36ed29){var _0x1eabb0={'raw':![],'where':{'id':_0xae3eae[_0x9e0b('0x42')]['id']}},_0x27b7c7={};_0x27b7c7['model']=_[_0x9e0b('0x30')](db['FreshsalesAccount'][_0x9e0b('0x2b')]);_0x27b7c7[_0x9e0b('0x2f')]=_[_0x9e0b('0x30')](_0xae3eae['query']);_0x27b7c7['filters']=_[_0x9e0b('0x32')](_0x27b7c7['model'],_0x27b7c7[_0x9e0b('0x2f')]);_0x1eabb0[_0x9e0b('0x33')]=_['intersection'](_0x27b7c7[_0x9e0b('0x2e')],qs[_0x9e0b('0x43')](_0xae3eae[_0x9e0b('0x2f')][_0x9e0b('0x43')]));_0x1eabb0[_0x9e0b('0x33')]=_0x1eabb0['attributes']['length']?_0x1eabb0[_0x9e0b('0x33')]:_0x27b7c7[_0x9e0b('0x2e')];if(_0xae3eae[_0x9e0b('0x2f')][_0x9e0b('0x3d')]){_0x1eabb0[_0x9e0b('0x3e')]=[{'all':!![]}];}_0x1eabb0=_[_0x9e0b('0x39')]({},_0x1eabb0,_0xae3eae[_0x9e0b('0x44')]);return db[_0x9e0b('0x2a')][_0x9e0b('0x45')](_0x1eabb0)[_0x9e0b('0x24')](handleEntityNotFound(_0x36ed29,null))['then'](respondWithResult(_0x36ed29,null))[_0x9e0b('0x41')](handleError(_0x36ed29,null));};exports[_0x9e0b('0x46')]=function(_0x25e10d,_0x2c2adf){return db[_0x9e0b('0x2a')]['create'](_0x25e10d[_0x9e0b('0x47')],{})['then'](respondWithResult(_0x2c2adf,0xc9))[_0x9e0b('0x41')](handleError(_0x2c2adf,null));};exports[_0x9e0b('0x23')]=function(_0x1eb98a,_0x18497e){if(_0x1eb98a[_0x9e0b('0x47')]['id']){delete _0x1eb98a[_0x9e0b('0x47')]['id'];}return db['FreshsalesAccount'][_0x9e0b('0x45')]({'where':{'id':_0x1eb98a[_0x9e0b('0x42')]['id']}})[_0x9e0b('0x24')](handleEntityNotFound(_0x18497e,null))[_0x9e0b('0x24')](saveUpdates(_0x1eb98a['body'],null))['then'](respondWithResult(_0x18497e,null))['catch'](handleError(_0x18497e,null));};exports[_0x9e0b('0x48')]=function(_0x30ba02,_0x39fa8d){return db[_0x9e0b('0x2a')][_0x9e0b('0x45')]({'where':{'id':_0x30ba02[_0x9e0b('0x42')]['id']}})[_0x9e0b('0x24')](handleEntityNotFound(_0x39fa8d,null))[_0x9e0b('0x24')](removeEntity(_0x39fa8d,null))['catch'](handleError(_0x39fa8d,null));};exports[_0x9e0b('0x49')]=function(_0x5f5bf1,_0x1cfe7d,_0x343c3a){var _0x372b42={};var _0x2b3547={};var _0x387b1d;var _0x2a7e72;return db['FreshsalesAccount'][_0x9e0b('0x4a')]({'where':{'id':_0x5f5bf1[_0x9e0b('0x42')]['id']}})[_0x9e0b('0x24')](handleEntityNotFound(_0x1cfe7d,null))[_0x9e0b('0x24')](function(_0x266ad5){if(_0x266ad5){_0x387b1d=_0x266ad5;_0x2b3547[_0x9e0b('0x2e')]=_['keys'](db[_0x9e0b('0x4b')][_0x9e0b('0x2b')]);_0x2b3547[_0x9e0b('0x2f')]=_['keys'](_0x5f5bf1[_0x9e0b('0x2f')]);_0x2b3547[_0x9e0b('0x31')]=_[_0x9e0b('0x32')](_0x2b3547[_0x9e0b('0x2e')],_0x2b3547[_0x9e0b('0x2f')]);_0x372b42[_0x9e0b('0x33')]=_['intersection'](_0x2b3547['model'],qs[_0x9e0b('0x43')](_0x5f5bf1[_0x9e0b('0x2f')][_0x9e0b('0x43')]));_0x372b42[_0x9e0b('0x33')]=_0x372b42['attributes'][_0x9e0b('0x34')]?_0x372b42[_0x9e0b('0x33')]:_0x2b3547[_0x9e0b('0x2e')];_0x372b42[_0x9e0b('0x36')]=qs[_0x9e0b('0x37')](_0x5f5bf1[_0x9e0b('0x2f')]['sort']);_0x372b42[_0x9e0b('0x38')]=qs[_0x9e0b('0x31')](_[_0x9e0b('0x4c')](_0x5f5bf1[_0x9e0b('0x2f')],_0x2b3547[_0x9e0b('0x31')]));if(_0x5f5bf1['query'][_0x9e0b('0x3b')]){_0x372b42[_0x9e0b('0x38')]=_[_0x9e0b('0x39')](_0x372b42['where'],{'$or':_[_0x9e0b('0x29')](_0x372b42['attributes'],function(_0x3323b9){var _0x42c116={};_0x42c116[_0x3323b9]={'$like':'%'+_0x5f5bf1[_0x9e0b('0x2f')][_0x9e0b('0x3b')]+'%'};return _0x42c116;})});}_0x372b42=_[_0x9e0b('0x39')]({},_0x372b42,_0x5f5bf1[_0x9e0b('0x44')]);return _0x387b1d['getConfigurations'](_0x372b42);}})[_0x9e0b('0x24')](function(_0x3a4a4e){if(_0x3a4a4e){_0x2a7e72=_0x3a4a4e[_0x9e0b('0x34')];if(!_0x5f5bf1['query'][_0x9e0b('0x4d')]('nolimit')){_0x372b42['limit']=qs[_0x9e0b('0x1f')](_0x5f5bf1[_0x9e0b('0x2f')]['limit']);_0x372b42[_0x9e0b('0x1d')]=qs['offset'](_0x5f5bf1[_0x9e0b('0x2f')]['offset']);}return _0x387b1d[_0x9e0b('0x49')](_0x372b42);}})['then'](function(_0x117393){if(_0x117393){return _0x117393?{'count':_0x2a7e72,'rows':_0x117393}:null;}})['then'](respondWithResult(_0x1cfe7d,null))[_0x9e0b('0x41')](handleError(_0x1cfe7d,null));};exports[_0x9e0b('0x4e')]=function(_0x4c7ded,_0x3a3e90,_0x142425){if(_0x4c7ded[_0x9e0b('0x47')]['id']){delete _0x4c7ded['body']['id'];}return db['FreshsalesAccount'][_0x9e0b('0x4a')]({'where':{'id':_0x4c7ded['params']['id']}})[_0x9e0b('0x24')](handleEntityNotFound(_0x3a3e90,null))['then'](function(_0x46eab2){if(_0x46eab2){_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x4f')]=_0x46eab2['id'];_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x50')]=integrations[_0x9e0b('0x51')](_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x52')],_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x2d')]);_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x53')]=integrations['getDescriptions'](_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x52')],_0x4c7ded[_0x9e0b('0x47')][_0x9e0b('0x2d')]);return db[_0x9e0b('0x4b')][_0x9e0b('0x46')](_0x4c7ded[_0x9e0b('0x47')],{'include':[{'model':db[_0x9e0b('0x54')],'as':_0x9e0b('0x50')},{'model':db[_0x9e0b('0x54')],'as':_0x9e0b('0x53')}]});}return null;})[_0x9e0b('0x24')](respondWithResult(_0x3a3e90,null))[_0x9e0b('0x41')](handleError(_0x3a3e90,null));};exports[_0x9e0b('0x55')]=function(_0x457353,_0x1843a5,_0x383174){var _0x1f4f17='';var _0x4f57a1='';return db['FreshsalesAccount'][_0x9e0b('0x4a')]({'where':{'id':_0x457353[_0x9e0b('0x42')]['id']},'attributes':['id',_0x9e0b('0x56'),_0x9e0b('0x57'),_0x9e0b('0x58')]})[_0x9e0b('0x24')](handleEntityNotFound(_0x1843a5,null))[_0x9e0b('0x24')](function(_0x189b18){if(_0x189b18){_0x4f57a1=_0x189b18[_0x9e0b('0x56')];_0x1f4f17=_0x189b18['remoteUri'];var _0x4c5b87=_0x189b18[_0x9e0b('0x57')]['slice'](-0x1);if(_0x4c5b87==='/'){_0x1f4f17=_0x1f4f17[_0x9e0b('0x59')](0x0,_0x1f4f17['lastIndexOf'](_0x4c5b87));}return rp({'method':_0x9e0b('0x5a'),'uri':util[_0x9e0b('0x5b')](_0x9e0b('0x5c'),_0x1f4f17,_0x9e0b('0x5d')),'headers':{'Authorization':_0x9e0b('0x5e')+_0x189b18['apiKey']},'json':!![]});}})['then'](function(_0x3ac604){if(_0x3ac604){var _0x2b183c=_0x3ac604[_0x9e0b('0x5f')];var _0x2fa70f=![];var _0x315173=null;for(_0x315173=0x0;_0x315173<_0x2b183c[_0x9e0b('0x34')];_0x315173++){if(_0x2b183c[_0x315173][_0x9e0b('0x60')]===_0x4f57a1){_0x2fa70f=!![];}}if(_0x2fa70f){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x9e0b('0x61')});}}})[_0x9e0b('0x24')](respondWithResult(_0x1843a5,null))['catch'](function(_0x2b6c2c){var _0x4d884c=_0x457353[_0x9e0b('0x2f')][_0x9e0b('0x62')]?0x1f4:_0x2b6c2c['statusCode']||0x1f4;logger['error'](_0x9e0b('0x63'),_0x9e0b('0x55'),_0x4d884c,JSON[_0x9e0b('0x64')](_0x2b6c2c));delete _0x2b6c2c[_0x9e0b('0x27')];if(_0x4d884c===0x191){_0x4d884c=0x190;}_0x1843a5[_0x9e0b('0x1b')](_0x4d884c)[_0x9e0b('0x28')](_0x457353[_0x9e0b('0x2f')][_0x9e0b('0x62')]?{'message':_0x9e0b('0x65'),'statusCode':_0x2b6c2c['statusCode']}:_0x2b6c2c);});};
\ No newline at end of file
index 1271d24..ba9f8ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5464=['int_freshsales_accounts','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','define','FreshsalesAccount'];(function(_0x4e9996,_0x5c4e49){var _0x14d8b3=function(_0x2daa9d){while(--_0x2daa9d){_0x4e9996['push'](_0x4e9996['shift']());}};_0x14d8b3(++_0x5c4e49);}(_0x5464,0x15d));var _0x4546=function(_0x55776f,_0x2e19c4){_0x55776f=_0x55776f-0x0;var _0x17948f=_0x5464[_0x55776f];return _0x17948f;};'use strict';var _=require(_0x4546('0x0'));var util=require(_0x4546('0x1'));var logger=require(_0x4546('0x2'))('api');var moment=require(_0x4546('0x3'));var BPromise=require('bluebird');var rp=require(_0x4546('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4546('0x5'));var config=require(_0x4546('0x6'));var attributes=require(_0x4546('0x7'));var integrations=require(_0x4546('0x8'));module['exports']=function(_0x57391f,_0x5c5e09){return _0x57391f[_0x4546('0x9')](_0x4546('0xa'),attributes,{'tableName':_0x4546('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57ca=['exports','define','FreshsalesAccount','int_freshsales_accounts','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x57ca,0x108));var _0xa57c=function(_0x4d5c75,_0x10460a){_0x4d5c75=_0x4d5c75-0x0;var _0x939022=_0x57ca[_0x4d5c75];return _0x939022;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var fs=require('fs');var path=require(_0xa57c('0x5'));var rimraf=require(_0xa57c('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57c('0x7'));var integrations=require(_0xa57c('0x8'));module[_0xa57c('0x9')]=function(_0x19473f,_0xbdfffb){return _0x19473f[_0xa57c('0xa')](_0xa57c('0xb'),attributes,{'tableName':_0xa57c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab3a5e7..1a48193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['include','model','attributes','map','GetFreshsalesAccount','ShowFreshsalesAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FreshsalesAccount','findAll','options','raw'];(function(_0x126eef,_0x3f0c74){var _0x238dfa=function(_0x443863){while(--_0x443863){_0x126eef['push'](_0x126eef['shift']());}};_0x238dfa(++_0x3f0c74);}(_0x47c5,0x165));var _0x547c=function(_0x268509,_0x196d93){_0x268509=_0x268509-0x0;var _0x5de441=_0x47c5[_0x268509];return _0x5de441;};'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')]('FreshsalesAccount,\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')]('FreshsalesAccount,\x20%s,\x20%s',_0x381f2e,_0x39498d);_0x4ef079(_0x39498d);});});}exports['GetFreshsalesAccount']=function(_0x23fa9e){var _0x199e4f=this;return new Promise(function(_0xeb059e,_0x4a8901){return db[_0x547c('0x18')][_0x547c('0x19')]({'raw':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e['options'][_0x547c('0x1b')]===undefined?!![]:![]:!![],'where':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e['options']['where']||null:null,'attributes':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')]['attributes']||null:null,'limit':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')]['limit']||null:null,'include':_0x23fa9e[_0x547c('0x1a')]?_0x23fa9e[_0x547c('0x1a')][_0x547c('0x1c')]?_['map'](_0x23fa9e[_0x547c('0x1a')][_0x547c('0x1c')],function(_0x470694){return{'model':db[_0x470694[_0x547c('0x1d')]],'as':_0x470694['as'],'attributes':_0x470694[_0x547c('0x1e')],'include':_0x470694[_0x547c('0x1c')]?_[_0x547c('0x1f')](_0x470694[_0x547c('0x1c')],function(_0x507895){return{'model':db[_0x507895[_0x547c('0x1d')]],'as':_0x507895['as'],'attributes':_0x507895['attributes'],'include':_0x507895['include']?_['map'](_0x507895['include'],function(_0x2c725d){return{'model':db[_0x2c725d['model']],'as':_0x2c725d['as'],'attributes':_0x2c725d[_0x547c('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ea493){logger['info'](_0x547c('0x20'),_0x23fa9e);logger[_0x547c('0x10')](_0x547c('0x20'),_0x23fa9e,JSON[_0x547c('0x12')](_0x3ea493));_0xeb059e(_0x3ea493);})[_0x547c('0x17')](function(_0x569924){logger['error'](_0x547c('0x20'),_0x569924['message'],_0x23fa9e);_0x4a8901(_0x199e4f[_0x547c('0x13')](0x1f4,_0x569924[_0x547c('0x15')]));});});};exports[_0x547c('0x21')]=function(_0x1695be){var _0x4652e7=this;return new Promise(function(_0x51e6e7,_0x342c10){return db['FreshsalesAccount']['find']({'raw':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1b')]===undefined?!![]:![]:!![],'where':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x22')]||null:null,'attributes':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1e')]||null:null,'include':_0x1695be[_0x547c('0x1a')]?_0x1695be[_0x547c('0x1a')][_0x547c('0x1c')]?_[_0x547c('0x1f')](_0x1695be[_0x547c('0x1a')]['include'],function(_0x3afc28){return{'model':db[_0x3afc28['model']],'as':_0x3afc28['as'],'attributes':_0x3afc28['attributes'],'include':_0x3afc28['include']?_[_0x547c('0x1f')](_0x3afc28[_0x547c('0x1c')],function(_0x31c7d3){return{'model':db[_0x31c7d3[_0x547c('0x1d')]],'as':_0x31c7d3['as'],'attributes':_0x31c7d3[_0x547c('0x1e')],'include':_0x31c7d3[_0x547c('0x1c')]?_['map'](_0x31c7d3['include'],function(_0x5ea2c7){return{'model':db[_0x5ea2c7[_0x547c('0x1d')]],'as':_0x5ea2c7['as'],'attributes':_0x5ea2c7[_0x547c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x547c('0xc')](function(_0x44687e){logger[_0x547c('0xd')](_0x547c('0x21'),_0x1695be);logger['debug'](_0x547c('0x21'),_0x1695be,JSON['stringify'](_0x44687e));_0x51e6e7(_0x44687e);})[_0x547c('0x17')](function(_0x18fcc5){logger['error'](_0x547c('0x21'),_0x18fcc5['message'],_0x1695be);_0x342c10(_0x4652e7['error'](0x1f4,_0x18fcc5[_0x547c('0x15')]));});});};
\ No newline at end of file
+var _0xfcf0=['request','info','FreshsalesAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','FreshsalesAccount','find','ShowFreshsalesAccount','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2819dd,_0x5f0b77){var _0x3ac379=function(_0x3d7a85){while(--_0x3d7a85){_0x2819dd['push'](_0x2819dd['shift']());}};_0x3ac379(++_0x5f0b77);}(_0xfcf0,0x138));var _0x0fcf=function(_0x53a7a8,_0xed2bff){_0x53a7a8=_0x53a7a8-0x0;var _0x555f71=_0xfcf0[_0x53a7a8];return _0x555f71;};'use strict';var _=require(_0x0fcf('0x0'));var util=require(_0x0fcf('0x1'));var moment=require('moment');var BPromise=require(_0x0fcf('0x2'));var rs=require(_0x0fcf('0x3'));var fs=require('fs');var Redis=require(_0x0fcf('0x4'));var db=require(_0x0fcf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0fcf('0x6'))(_0x0fcf('0x7'));var config=require(_0x0fcf('0x8'));var jayson=require(_0x0fcf('0x9'));var client=jayson[_0x0fcf('0xa')][_0x0fcf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x61bbb9,_0x2dfdf8,_0x50c575){return new BPromise(function(_0x1388d1,_0x6ced94){return client[_0x0fcf('0xc')](_0x61bbb9,_0x50c575)['then'](function(_0x69a840){logger[_0x0fcf('0xd')](_0x0fcf('0xe'),_0x2dfdf8,'request\x20sent');logger[_0x0fcf('0xf')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x2dfdf8,_0x0fcf('0x10'),JSON[_0x0fcf('0x11')](_0x69a840));if(_0x69a840[_0x0fcf('0x12')]){if(_0x69a840['error']['code']===0x1f4){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x6ced94(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x69a840['error'][_0x0fcf('0x13')]);return _0x1388d1(_0x69a840[_0x0fcf('0x12')][_0x0fcf('0x13')]);}else{logger['info'](_0x0fcf('0xe'),_0x2dfdf8,_0x0fcf('0x10'));_0x1388d1(_0x69a840[_0x0fcf('0x14')][_0x0fcf('0x13')]);}})['catch'](function(_0x3e78d0){logger[_0x0fcf('0x12')](_0x0fcf('0xe'),_0x2dfdf8,_0x3e78d0);_0x6ced94(_0x3e78d0);});});}exports[_0x0fcf('0x15')]=function(_0x19cfbd){var _0x567320=this;return new Promise(function(_0x18ea32,_0x1a8f58){return db['FreshsalesAccount'][_0x0fcf('0x16')]({'raw':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'where':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x19')]||null:null,'attributes':_0x19cfbd['options']?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1a')]||null:null,'limit':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd['options'][_0x0fcf('0x1b')]||null:null,'include':_0x19cfbd[_0x0fcf('0x17')]?_0x19cfbd[_0x0fcf('0x17')][_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x19cfbd[_0x0fcf('0x17')]['include'],function(_0x2eef74){return{'model':db[_0x2eef74[_0x0fcf('0x1e')]],'as':_0x2eef74['as'],'attributes':_0x2eef74[_0x0fcf('0x1a')],'include':_0x2eef74[_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x2eef74[_0x0fcf('0x1c')],function(_0x2ce990){return{'model':db[_0x2ce990[_0x0fcf('0x1e')]],'as':_0x2ce990['as'],'attributes':_0x2ce990[_0x0fcf('0x1a')],'include':_0x2ce990['include']?_[_0x0fcf('0x1d')](_0x2ce990[_0x0fcf('0x1c')],function(_0x41b7a2){return{'model':db[_0x41b7a2[_0x0fcf('0x1e')]],'as':_0x41b7a2['as'],'attributes':_0x41b7a2[_0x0fcf('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0fcf('0x1f')](function(_0x2730b0){logger['info'](_0x0fcf('0x15'),_0x19cfbd);logger[_0x0fcf('0xf')](_0x0fcf('0x15'),_0x19cfbd,JSON[_0x0fcf('0x11')](_0x2730b0));_0x18ea32(_0x2730b0);})['catch'](function(_0x5d9bcd){logger['error'](_0x0fcf('0x15'),_0x5d9bcd['message'],_0x19cfbd);_0x1a8f58(_0x567320[_0x0fcf('0x12')](0x1f4,_0x5d9bcd[_0x0fcf('0x13')]));});});};exports['ShowFreshsalesAccount']=function(_0xdfd3ec){var _0x117041=this;return new Promise(function(_0xa52f52,_0x161496){return db[_0x0fcf('0x20')][_0x0fcf('0x21')]({'raw':_0xdfd3ec['options']?_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x18')]===undefined?!![]:![]:!![],'where':_0xdfd3ec[_0x0fcf('0x17')]?_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x19')]||null:null,'attributes':_0xdfd3ec[_0x0fcf('0x17')]?_0xdfd3ec['options'][_0x0fcf('0x1a')]||null:null,'include':_0xdfd3ec[_0x0fcf('0x17')]?_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0xdfd3ec[_0x0fcf('0x17')][_0x0fcf('0x1c')],function(_0x344957){return{'model':db[_0x344957[_0x0fcf('0x1e')]],'as':_0x344957['as'],'attributes':_0x344957[_0x0fcf('0x1a')],'include':_0x344957[_0x0fcf('0x1c')]?_[_0x0fcf('0x1d')](_0x344957[_0x0fcf('0x1c')],function(_0x17346e){return{'model':db[_0x17346e['model']],'as':_0x17346e['as'],'attributes':_0x17346e['attributes'],'include':_0x17346e[_0x0fcf('0x1c')]?_['map'](_0x17346e['include'],function(_0x1a1e07){return{'model':db[_0x1a1e07[_0x0fcf('0x1e')]],'as':_0x1a1e07['as'],'attributes':_0x1a1e07[_0x0fcf('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57e635){logger[_0x0fcf('0xd')](_0x0fcf('0x22'),_0xdfd3ec);logger[_0x0fcf('0xf')]('ShowFreshsalesAccount',_0xdfd3ec,JSON[_0x0fcf('0x11')](_0x57e635));_0xa52f52(_0x57e635);})[_0x0fcf('0x23')](function(_0x29067e){logger['error']('ShowFreshsalesAccount',_0x29067e['message'],_0xdfd3ec);_0x161496(_0x117041[_0x0fcf('0x12')](0x1f4,_0x29067e[_0x0fcf('0x13')]));});});};
\ No newline at end of file
index 3cffa09..0958a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b68=['isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','put','update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get'];(function(_0x2e212e,_0x50c0b1){var _0x58cd4c=function(_0x13e711){while(--_0x13e711){_0x2e212e['push'](_0x2e212e['shift']());}};_0x58cd4c(++_0x50c0b1);}(_0x5b68,0xe6));var _0x85b6=function(_0x4db4ef,_0x53d906){_0x4db4ef=_0x4db4ef-0x0;var _0x42b8e7=_0x5b68[_0x4db4ef];return _0x42b8e7;};'use strict';var multer=require(_0x85b6('0x0'));var util=require(_0x85b6('0x1'));var path=require(_0x85b6('0x2'));var timeout=require(_0x85b6('0x3'));var express=require('express');var router=express[_0x85b6('0x4')]();var fs_extra=require(_0x85b6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x85b6('0x6'));var config=require(_0x85b6('0x7'));var controller=require(_0x85b6('0x8'));router[_0x85b6('0x9')]('/',auth[_0x85b6('0xa')](),controller[_0x85b6('0xb')]);router['get'](_0x85b6('0xc'),auth[_0x85b6('0xa')](),controller[_0x85b6('0xd')]);router[_0x85b6('0x9')](_0x85b6('0xe'),auth[_0x85b6('0xa')](),controller[_0x85b6('0xf')]);router[_0x85b6('0x9')](_0x85b6('0x10'),auth[_0x85b6('0xa')](),controller[_0x85b6('0x11')]);router[_0x85b6('0x9')](_0x85b6('0x12'),auth['isAuthenticated'](),controller['getFields']);router[_0x85b6('0x13')]('/',auth['isAuthenticated'](),controller[_0x85b6('0x14')]);router[_0x85b6('0x15')](_0x85b6('0xc'),auth['isAuthenticated'](),controller[_0x85b6('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x85b6('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x3273=['isAuthenticated','/:id','show','get','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller'];(function(_0xf5d35b,_0x3d061f){var _0x11434e=function(_0x3a048a){while(--_0x3a048a){_0xf5d35b['push'](_0xf5d35b['shift']());}};_0x11434e(++_0x3d061f);}(_0x3273,0x139));var _0x3327=function(_0x512980,_0x401e50){_0x512980=_0x512980-0x0;var _0x571f0a=_0x3273[_0x512980];return _0x571f0a;};'use strict';var multer=require('multer');var util=require(_0x3327('0x0'));var path=require(_0x3327('0x1'));var timeout=require('connect-timeout');var express=require(_0x3327('0x2'));var router=express[_0x3327('0x3')]();var fs_extra=require(_0x3327('0x4'));var auth=require(_0x3327('0x5'));var interaction=require(_0x3327('0x6'));var config=require(_0x3327('0x7'));var controller=require(_0x3327('0x8'));router['get']('/',auth[_0x3327('0x9')](),controller['index']);router['get'](_0x3327('0xa'),auth[_0x3327('0x9')](),controller[_0x3327('0xb')]);router[_0x3327('0xc')](_0x3327('0xd'),auth[_0x3327('0x9')](),controller[_0x3327('0xe')]);router[_0x3327('0xc')]('/:id/descriptions',auth[_0x3327('0x9')](),controller[_0x3327('0xf')]);router[_0x3327('0xc')]('/:id/fields',auth[_0x3327('0x9')](),controller['getFields']);router[_0x3327('0x10')]('/',auth['isAuthenticated'](),controller[_0x3327('0x11')]);router[_0x3327('0x12')](_0x3327('0xa'),auth[_0x3327('0x9')](),controller[_0x3327('0x13')]);router[_0x3327('0x14')](_0x3327('0xa'),auth['isAuthenticated'](),controller[_0x3327('0x15')]);module[_0x3327('0x16')]=router;
\ No newline at end of file
index 10ec820..74b948c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd403=['sequelize'];(function(_0x1b3ed4,_0x251a26){var _0x39d562=function(_0x2325ae){while(--_0x2325ae){_0x1b3ed4['push'](_0x1b3ed4['shift']());}};_0x39d562(++_0x251a26);}(_0xd403,0x146));var _0x3d40=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xd403[_0xaa0309];return _0x5de7ce;};'use strict';var Sequelize=require(_0x3d40('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x215c=['exports','STRING'];(function(_0x1333bc,_0x5ac8af){var _0x572021=function(_0x3cc36b){while(--_0x3cc36b){_0x1333bc['push'](_0x1333bc['shift']());}};_0x572021(++_0x5ac8af);}(_0x215c,0xc0));var _0xc215=function(_0x3de4b2,_0x2b1cb8){_0x3de4b2=_0x3de4b2-0x0;var _0x57ca15=_0x215c[_0x3de4b2];return _0x57ca15;};'use strict';var Sequelize=require('sequelize');module[_0xc215('0x0')]={'name':{'type':Sequelize[_0xc215('0x1')]},'description':{'type':Sequelize[_0xc215('0x1')]}};
\ No newline at end of file
index 8a8781a..42bbb5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x893a=['includeAll','include','find','create','body','params','getSubjects','findOne','FreshsalesField','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','error','stack','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','length'];(function(_0x5b1a85,_0x308e61){var _0x3bddf5=function(_0x47b63a){while(--_0x47b63a){_0x5b1a85['push'](_0x5b1a85['shift']());}};_0x3bddf5(++_0x308e61);}(_0x893a,0xf7));var _0xa893=function(_0x4aee36,_0xb24cb5){_0x4aee36=_0x4aee36-0x0;var _0x2ebc2c=_0x893a[_0x4aee36];return _0x2ebc2c;};'use strict';var emlformat=require(_0xa893('0x0'));var rimraf=require(_0xa893('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa893('0x2'));var rp=require(_0xa893('0x3'));var moment=require('moment');var BPromise=require(_0xa893('0x4'));var Mustache=require(_0xa893('0x5'));var util=require('util');var path=require(_0xa893('0x6'));var sox=require(_0xa893('0x7'));var csv=require(_0xa893('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa893('0x9'));var _=require(_0xa893('0xa'));var squel=require('squel');var crypto=require(_0xa893('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xa893('0xc'));var toCsv=require(_0xa893('0x8'));var querystring=require(_0xa893('0xd'));var Papa=require(_0xa893('0xe'));var Redis=require(_0xa893('0xf'));var authService=require(_0xa893('0x10'));var qs=require(_0xa893('0x11'));var as=require(_0xa893('0x12'));var hardwareService=require(_0xa893('0x13'));var logger=require('../../config/logger')(_0xa893('0x14'));var utils=require('../../config/utils');var config=require(_0xa893('0x15'));var licenseUtil=require(_0xa893('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48a8ad,_0x4e1dc2){_0x4e1dc2=_0x4e1dc2||0xcc;return function(_0x491f82){if(_0x491f82){return _0x48a8ad[_0xa893('0x17')](_0x4e1dc2);}return _0x48a8ad[_0xa893('0x18')](_0x4e1dc2)[_0xa893('0x19')]();};}function respondWithResult(_0x3a2614,_0x258d67){_0x258d67=_0x258d67||0xc8;return function(_0x940df9){if(_0x940df9){return _0x3a2614['status'](_0x258d67)[_0xa893('0x1a')](_0x940df9);}};}function respondWithFilteredResult(_0x21cb9e,_0x22f66e){return function(_0x5d8ea5){if(_0x5d8ea5){var _0x367452=typeof _0x22f66e[_0xa893('0x1b')]===_0xa893('0x1c')&&typeof _0x22f66e[_0xa893('0x1d')]===_0xa893('0x1c');var _0x26b8fc=_0x5d8ea5['count'];var _0x131d07=_0x367452?0x0:_0x22f66e[_0xa893('0x1b')];var _0x38e61e=_0x367452?_0x5d8ea5[_0xa893('0x1e')]:_0x22f66e[_0xa893('0x1b')]+_0x22f66e[_0xa893('0x1d')];var _0x51f55e;if(_0x38e61e>=_0x26b8fc){_0x38e61e=_0x26b8fc;_0x51f55e=0xc8;}else{_0x51f55e=0xce;}_0x21cb9e[_0xa893('0x18')](_0x51f55e);return _0x21cb9e['set'](_0xa893('0x1f'),_0x131d07+'-'+_0x38e61e+'/'+_0x26b8fc)['json'](_0x5d8ea5);}return null;};}function patchUpdates(_0x45e597){return function(_0x5110fc){try{jsonpatch[_0xa893('0x20')](_0x5110fc,_0x45e597,!![]);}catch(_0x213c68){return BPromise['reject'](_0x213c68);}return _0x5110fc[_0xa893('0x21')]();};}function saveUpdates(_0x181ed0,_0x12085d){return function(_0xdc8de1){if(_0xdc8de1){return _0xdc8de1['update'](_0x181ed0)[_0xa893('0x22')](function(_0x48a35e){return _0x48a35e;});}return null;};}function removeEntity(_0x818fab,_0x4481fb){return function(_0x530b41){if(_0x530b41){return _0x530b41[_0xa893('0x23')]()[_0xa893('0x22')](function(){_0x818fab['status'](0xcc)[_0xa893('0x19')]();});}};}function handleEntityNotFound(_0x2a4d57,_0x7f726e){return function(_0xea3394){if(!_0xea3394){_0x2a4d57['sendStatus'](0x194);}return _0xea3394;};}function handleError(_0xb49a8d,_0x166ef5){_0x166ef5=_0x166ef5||0x1f4;return function(_0x2443d1){logger[_0xa893('0x24')](_0x2443d1[_0xa893('0x25')]);if(_0x2443d1['name']){delete _0x2443d1['name'];}_0xb49a8d[_0xa893('0x18')](_0x166ef5)[_0xa893('0x26')](_0x2443d1);};}exports[_0xa893('0x27')]=function(_0x287389,_0x51538e){var _0x3e3936={},_0x1bc1b3={},_0x116185={'count':0x0,'rows':[]};var _0x3723d1=_[_0xa893('0x28')](db[_0xa893('0x29')][_0xa893('0x2a')],function(_0x17e641){return{'name':_0x17e641[_0xa893('0x2b')],'type':_0x17e641[_0xa893('0x2c')][_0xa893('0x2d')]};});_0x1bc1b3[_0xa893('0x2e')]=_[_0xa893('0x28')](_0x3723d1,_0xa893('0x2f'));_0x1bc1b3[_0xa893('0x30')]=_[_0xa893('0x31')](_0x287389[_0xa893('0x30')]);_0x1bc1b3[_0xa893('0x32')]=_[_0xa893('0x33')](_0x1bc1b3[_0xa893('0x2e')],_0x1bc1b3[_0xa893('0x30')]);_0x3e3936[_0xa893('0x34')]=_['intersection'](_0x1bc1b3[_0xa893('0x2e')],qs[_0xa893('0x35')](_0x287389[_0xa893('0x30')][_0xa893('0x35')]));_0x3e3936[_0xa893('0x34')]=_0x3e3936[_0xa893('0x34')]['length']?_0x3e3936[_0xa893('0x34')]:_0x1bc1b3[_0xa893('0x2e')];if(!_0x287389[_0xa893('0x30')][_0xa893('0x36')](_0xa893('0x37'))){_0x3e3936['limit']=qs[_0xa893('0x1d')](_0x287389[_0xa893('0x30')][_0xa893('0x1d')]);_0x3e3936[_0xa893('0x1b')]=qs[_0xa893('0x1b')](_0x287389[_0xa893('0x30')]['offset']);}_0x3e3936[_0xa893('0x38')]=qs[_0xa893('0x39')](_0x287389[_0xa893('0x30')][_0xa893('0x39')]);_0x3e3936[_0xa893('0x3a')]=qs[_0xa893('0x32')](_[_0xa893('0x3b')](_0x287389[_0xa893('0x30')],_0x1bc1b3[_0xa893('0x32')]),_0x3723d1);if(_0x287389[_0xa893('0x30')][_0xa893('0x3c')]){_0x3e3936['where']=_[_0xa893('0x3d')](_0x3e3936[_0xa893('0x3a')],{'$or':_[_0xa893('0x28')](_0x3723d1,function(_0x530d93){if(_0x530d93['type']!==_0xa893('0x3e')){var _0x456a57={};_0x456a57[_0x530d93[_0xa893('0x2f')]]={'$like':'%'+_0x287389[_0xa893('0x30')][_0xa893('0x3c')]+'%'};return _0x456a57;}})});}_0x3e3936=_[_0xa893('0x3d')]({},_0x3e3936,_0x287389[_0xa893('0x3f')]);var _0x1e54c0={'where':_0x3e3936['where']};return db['FreshsalesConfiguration']['count'](_0x1e54c0)[_0xa893('0x22')](function(_0x4aa223){_0x116185[_0xa893('0x1e')]=_0x4aa223;if(_0x287389[_0xa893('0x30')]['includeAll']){_0x3e3936['include']=[{'all':!![]}];}return db[_0xa893('0x29')][_0xa893('0x40')](_0x3e3936);})[_0xa893('0x22')](function(_0x2c3858){_0x116185[_0xa893('0x41')]=_0x2c3858;return _0x116185;})[_0xa893('0x22')](respondWithFilteredResult(_0x51538e,_0x3e3936))[_0xa893('0x42')](handleError(_0x51538e,null));};exports[_0xa893('0x43')]=function(_0x50065b,_0x4ef98f){var _0x46dab7={'raw':![],'where':{'id':_0x50065b['params']['id']}},_0x34f82b={};_0x34f82b[_0xa893('0x2e')]=_[_0xa893('0x31')](db['FreshsalesConfiguration']['rawAttributes']);_0x34f82b[_0xa893('0x30')]=_[_0xa893('0x31')](_0x50065b[_0xa893('0x30')]);_0x34f82b[_0xa893('0x32')]=_[_0xa893('0x33')](_0x34f82b[_0xa893('0x2e')],_0x34f82b['query']);_0x46dab7['attributes']=_[_0xa893('0x33')](_0x34f82b[_0xa893('0x2e')],qs['fields'](_0x50065b[_0xa893('0x30')][_0xa893('0x35')]));_0x46dab7[_0xa893('0x34')]=_0x46dab7['attributes'][_0xa893('0x44')]?_0x46dab7[_0xa893('0x34')]:_0x34f82b['model'];if(_0x50065b[_0xa893('0x30')][_0xa893('0x45')]){_0x46dab7[_0xa893('0x46')]=[{'all':!![]}];}_0x46dab7=_['merge']({},_0x46dab7,_0x50065b[_0xa893('0x3f')]);return db[_0xa893('0x29')][_0xa893('0x47')](_0x46dab7)[_0xa893('0x22')](handleEntityNotFound(_0x4ef98f,null))[_0xa893('0x22')](respondWithResult(_0x4ef98f,null))[_0xa893('0x42')](handleError(_0x4ef98f,null));};exports['create']=function(_0xb7e0b8,_0x21d2c3){return db['FreshsalesConfiguration'][_0xa893('0x48')](_0xb7e0b8[_0xa893('0x49')],{})[_0xa893('0x22')](respondWithResult(_0x21d2c3,0xc9))[_0xa893('0x42')](handleError(_0x21d2c3,null));};exports['update']=function(_0x4dae88,_0x4442d7){if(_0x4dae88['body']['id']){delete _0x4dae88['body']['id'];}return db[_0xa893('0x29')][_0xa893('0x47')]({'where':{'id':_0x4dae88['params']['id']}})[_0xa893('0x22')](handleEntityNotFound(_0x4442d7,null))['then'](saveUpdates(_0x4dae88['body'],null))[_0xa893('0x22')](respondWithResult(_0x4442d7,null))[_0xa893('0x42')](handleError(_0x4442d7,null));};exports[_0xa893('0x23')]=function(_0x5becf3,_0x30c975){return db[_0xa893('0x29')][_0xa893('0x47')]({'where':{'id':_0x5becf3[_0xa893('0x4a')]['id']}})[_0xa893('0x22')](handleEntityNotFound(_0x30c975,null))[_0xa893('0x22')](removeEntity(_0x30c975,null))[_0xa893('0x42')](handleError(_0x30c975,null));};exports[_0xa893('0x4b')]=function(_0x53a982,_0x37f385,_0x5c42e8){var _0x5c3c57={};var _0x366e70={};var _0x444d9e;var _0x238729;return db[_0xa893('0x29')][_0xa893('0x4c')]({'where':{'id':_0x53a982['params']['id']}})[_0xa893('0x22')](handleEntityNotFound(_0x37f385,null))[_0xa893('0x22')](function(_0x3fc3ca){if(_0x3fc3ca){_0x444d9e=_0x3fc3ca;_0x366e70['model']=_['keys'](db[_0xa893('0x4d')][_0xa893('0x2a')]);_0x366e70[_0xa893('0x30')]=_['keys'](_0x53a982[_0xa893('0x30')]);_0x366e70['filters']=_[_0xa893('0x33')](_0x366e70[_0xa893('0x2e')],_0x366e70['query']);_0x5c3c57[_0xa893('0x34')]=_[_0xa893('0x33')](_0x366e70[_0xa893('0x2e')],qs[_0xa893('0x35')](_0x53a982[_0xa893('0x30')][_0xa893('0x35')]));_0x5c3c57[_0xa893('0x34')]=_0x5c3c57['attributes'][_0xa893('0x44')]?_0x5c3c57[_0xa893('0x34')]:_0x366e70['model'];_0x5c3c57[_0xa893('0x38')]=qs[_0xa893('0x39')](_0x53a982[_0xa893('0x30')][_0xa893('0x39')]);_0x5c3c57['where']=qs['filters'](_[_0xa893('0x3b')](_0x53a982[_0xa893('0x30')],_0x366e70[_0xa893('0x32')]));if(_0x53a982[_0xa893('0x30')]['filter']){_0x5c3c57[_0xa893('0x3a')]=_[_0xa893('0x3d')](_0x5c3c57[_0xa893('0x3a')],{'$or':_[_0xa893('0x28')](_0x5c3c57['attributes'],function(_0x26926d){var _0x29a1e5={};_0x29a1e5[_0x26926d]={'$like':'%'+_0x53a982[_0xa893('0x30')][_0xa893('0x3c')]+'%'};return _0x29a1e5;})});}_0x5c3c57=_[_0xa893('0x3d')]({},_0x5c3c57,_0x53a982[_0xa893('0x3f')]);return _0x444d9e[_0xa893('0x4b')](_0x5c3c57);}})['then'](function(_0x5b361d){if(_0x5b361d){_0x238729=_0x5b361d[_0xa893('0x44')];if(!_0x53a982[_0xa893('0x30')][_0xa893('0x36')]('nolimit')){_0x5c3c57[_0xa893('0x1d')]=qs[_0xa893('0x1d')](_0x53a982[_0xa893('0x30')][_0xa893('0x1d')]);_0x5c3c57[_0xa893('0x1b')]=qs[_0xa893('0x1b')](_0x53a982['query'][_0xa893('0x1b')]);}return _0x444d9e[_0xa893('0x4b')](_0x5c3c57);}})[_0xa893('0x22')](function(_0x34939c){if(_0x34939c){return _0x34939c?{'count':_0x238729,'rows':_0x34939c}:null;}})[_0xa893('0x22')](respondWithResult(_0x37f385,null))['catch'](handleError(_0x37f385,null));};exports[_0xa893('0x4e')]=function(_0xd973e7,_0x1c51d0,_0x2b9ca7){var _0x47d696={};var _0x54684c={};var _0x1df080;var _0x29581a;return db[_0xa893('0x29')]['findOne']({'where':{'id':_0xd973e7[_0xa893('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1c51d0,null))[_0xa893('0x22')](function(_0x5346c7){if(_0x5346c7){_0x1df080=_0x5346c7;_0x54684c[_0xa893('0x2e')]=_['keys'](db[_0xa893('0x4d')]['rawAttributes']);_0x54684c[_0xa893('0x30')]=_['keys'](_0xd973e7[_0xa893('0x30')]);_0x54684c[_0xa893('0x32')]=_[_0xa893('0x33')](_0x54684c['model'],_0x54684c['query']);_0x47d696[_0xa893('0x34')]=_['intersection'](_0x54684c[_0xa893('0x2e')],qs[_0xa893('0x35')](_0xd973e7[_0xa893('0x30')]['fields']));_0x47d696[_0xa893('0x34')]=_0x47d696[_0xa893('0x34')][_0xa893('0x44')]?_0x47d696[_0xa893('0x34')]:_0x54684c['model'];_0x47d696['order']=qs[_0xa893('0x39')](_0xd973e7[_0xa893('0x30')][_0xa893('0x39')]);_0x47d696['where']=qs[_0xa893('0x32')](_[_0xa893('0x3b')](_0xd973e7[_0xa893('0x30')],_0x54684c[_0xa893('0x32')]));if(_0xd973e7[_0xa893('0x30')][_0xa893('0x3c')]){_0x47d696[_0xa893('0x3a')]=_['merge'](_0x47d696[_0xa893('0x3a')],{'$or':_[_0xa893('0x28')](_0x47d696[_0xa893('0x34')],function(_0x204875){var _0x301269={};_0x301269[_0x204875]={'$like':'%'+_0xd973e7['query']['filter']+'%'};return _0x301269;})});}_0x47d696=_['merge']({},_0x47d696,_0xd973e7[_0xa893('0x3f')]);return _0x1df080[_0xa893('0x4e')](_0x47d696);}})[_0xa893('0x22')](function(_0x24ba5a){if(_0x24ba5a){_0x29581a=_0x24ba5a[_0xa893('0x44')];if(!_0xd973e7[_0xa893('0x30')][_0xa893('0x36')](_0xa893('0x37'))){_0x47d696[_0xa893('0x1d')]=qs[_0xa893('0x1d')](_0xd973e7['query'][_0xa893('0x1d')]);_0x47d696['offset']=qs[_0xa893('0x1b')](_0xd973e7[_0xa893('0x30')][_0xa893('0x1b')]);}return _0x1df080['getDescriptions'](_0x47d696);}})[_0xa893('0x22')](function(_0x381dce){if(_0x381dce){return _0x381dce?{'count':_0x29581a,'rows':_0x381dce}:null;}})[_0xa893('0x22')](respondWithResult(_0x1c51d0,null))[_0xa893('0x42')](handleError(_0x1c51d0,null));};exports['getFields']=function(_0x21e414,_0x369140,_0x3f41c1){var _0x4511c2={};var _0x2c1c64={};var _0x2a99ee;var _0x7cc130;return db[_0xa893('0x29')][_0xa893('0x4c')]({'where':{'id':_0x21e414[_0xa893('0x4a')]['id']}})['then'](handleEntityNotFound(_0x369140,null))[_0xa893('0x22')](function(_0x551692){if(_0x551692){_0x2a99ee=_0x551692;_0x2c1c64[_0xa893('0x2e')]=_[_0xa893('0x31')](db[_0xa893('0x4d')][_0xa893('0x2a')]);_0x2c1c64[_0xa893('0x30')]=_[_0xa893('0x31')](_0x21e414[_0xa893('0x30')]);_0x2c1c64[_0xa893('0x32')]=_[_0xa893('0x33')](_0x2c1c64[_0xa893('0x2e')],_0x2c1c64[_0xa893('0x30')]);_0x4511c2[_0xa893('0x34')]=_[_0xa893('0x33')](_0x2c1c64[_0xa893('0x2e')],qs[_0xa893('0x35')](_0x21e414[_0xa893('0x30')]['fields']));_0x4511c2[_0xa893('0x34')]=_0x4511c2[_0xa893('0x34')][_0xa893('0x44')]?_0x4511c2[_0xa893('0x34')]:_0x2c1c64[_0xa893('0x2e')];_0x4511c2[_0xa893('0x38')]=qs[_0xa893('0x39')](_0x21e414[_0xa893('0x30')]['sort']);_0x4511c2[_0xa893('0x3a')]=qs[_0xa893('0x32')](_[_0xa893('0x3b')](_0x21e414[_0xa893('0x30')],_0x2c1c64[_0xa893('0x32')]));if(_0x21e414[_0xa893('0x30')]['filter']){_0x4511c2[_0xa893('0x3a')]=_[_0xa893('0x3d')](_0x4511c2[_0xa893('0x3a')],{'$or':_[_0xa893('0x28')](_0x4511c2[_0xa893('0x34')],function(_0x5b93c5){var _0x5a1df5={};_0x5a1df5[_0x5b93c5]={'$like':'%'+_0x21e414['query'][_0xa893('0x3c')]+'%'};return _0x5a1df5;})});}_0x4511c2=_[_0xa893('0x3d')]({},_0x4511c2,_0x21e414[_0xa893('0x3f')]);return _0x2a99ee['getFields'](_0x4511c2);}})[_0xa893('0x22')](function(_0x422f0a){if(_0x422f0a){_0x7cc130=_0x422f0a['length'];if(!_0x21e414['query'][_0xa893('0x36')](_0xa893('0x37'))){_0x4511c2[_0xa893('0x1d')]=qs[_0xa893('0x1d')](_0x21e414[_0xa893('0x30')][_0xa893('0x1d')]);_0x4511c2['offset']=qs['offset'](_0x21e414['query']['offset']);}return _0x2a99ee['getFields'](_0x4511c2);}})['then'](function(_0x187306){if(_0x187306){return _0x187306?{'count':_0x7cc130,'rows':_0x187306}:null;}})[_0xa893('0x22')](respondWithResult(_0x369140,null))[_0xa893('0x42')](handleError(_0x369140,null));};
\ No newline at end of file
+var _0xd8ca=['model','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','fields','create','body','find','params','getSubjects','FreshsalesField','nolimit','getDescriptions','filter','getFields','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','length'];(function(_0x13effd,_0x250245){var _0x497661=function(_0x11b921){while(--_0x11b921){_0x13effd['push'](_0x13effd['shift']());}};_0x497661(++_0x250245);}(_0xd8ca,0xc3));var _0xad8c=function(_0xe51920,_0x4a1092){_0xe51920=_0xe51920-0x0;var _0x4e4c70=_0xd8ca[_0xe51920];return _0x4e4c70;};'use strict';var emlformat=require(_0xad8c('0x0'));var rimraf=require(_0xad8c('0x1'));var zipdir=require(_0xad8c('0x2'));var jsonpatch=require(_0xad8c('0x3'));var rp=require(_0xad8c('0x4'));var moment=require(_0xad8c('0x5'));var BPromise=require(_0xad8c('0x6'));var Mustache=require('mustache');var util=require(_0xad8c('0x7'));var path=require(_0xad8c('0x8'));var sox=require(_0xad8c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xad8c('0xa'));var _=require(_0xad8c('0xb'));var squel=require(_0xad8c('0xc'));var crypto=require(_0xad8c('0xd'));var jsforce=require(_0xad8c('0xe'));var deskjs=require(_0xad8c('0xf'));var toCsv=require(_0xad8c('0x10'));var querystring=require(_0xad8c('0x11'));var Papa=require(_0xad8c('0x12'));var Redis=require(_0xad8c('0x13'));var authService=require(_0xad8c('0x14'));var qs=require(_0xad8c('0x15'));var as=require(_0xad8c('0x16'));var hardwareService=require(_0xad8c('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0xad8c('0x18'));var config=require(_0xad8c('0x19'));var licenseUtil=require(_0xad8c('0x1a'));var db=require(_0xad8c('0x1b'))['db'];function respondWithStatusCode(_0x152b21,_0xa3e1fe){_0xa3e1fe=_0xa3e1fe||0xcc;return function(_0x39e7fb){if(_0x39e7fb){return _0x152b21[_0xad8c('0x1c')](_0xa3e1fe);}return _0x152b21['status'](_0xa3e1fe)[_0xad8c('0x1d')]();};}function respondWithResult(_0x29b765,_0x1f597f){_0x1f597f=_0x1f597f||0xc8;return function(_0x2e5020){if(_0x2e5020){return _0x29b765[_0xad8c('0x1e')](_0x1f597f)[_0xad8c('0x1f')](_0x2e5020);}};}function respondWithFilteredResult(_0x24344c,_0x255954){return function(_0x4db4af){if(_0x4db4af){var _0x383fa6=typeof _0x255954[_0xad8c('0x20')]===_0xad8c('0x21')&&typeof _0x255954['limit']===_0xad8c('0x21');var _0x3da9b3=_0x4db4af[_0xad8c('0x22')];var _0x448bb9=_0x383fa6?0x0:_0x255954[_0xad8c('0x20')];var _0x224868=_0x383fa6?_0x4db4af[_0xad8c('0x22')]:_0x255954[_0xad8c('0x20')]+_0x255954[_0xad8c('0x23')];var _0x36086d;if(_0x224868>=_0x3da9b3){_0x224868=_0x3da9b3;_0x36086d=0xc8;}else{_0x36086d=0xce;}_0x24344c['status'](_0x36086d);return _0x24344c[_0xad8c('0x24')]('Content-Range',_0x448bb9+'-'+_0x224868+'/'+_0x3da9b3)[_0xad8c('0x1f')](_0x4db4af);}return null;};}function patchUpdates(_0x388751){return function(_0x4fbbec){try{jsonpatch[_0xad8c('0x25')](_0x4fbbec,_0x388751,!![]);}catch(_0x24a2f1){return BPromise[_0xad8c('0x26')](_0x24a2f1);}return _0x4fbbec[_0xad8c('0x27')]();};}function saveUpdates(_0x58b732,_0x36fe30){return function(_0x1f3104){if(_0x1f3104){return _0x1f3104[_0xad8c('0x28')](_0x58b732)['then'](function(_0x463429){return _0x463429;});}return null;};}function removeEntity(_0x4b0a6b,_0x254c4f){return function(_0x5ac9cc){if(_0x5ac9cc){return _0x5ac9cc[_0xad8c('0x29')]()[_0xad8c('0x2a')](function(){_0x4b0a6b[_0xad8c('0x1e')](0xcc)[_0xad8c('0x1d')]();});}};}function handleEntityNotFound(_0x3e1313,_0x57110f){return function(_0x471fb1){if(!_0x471fb1){_0x3e1313[_0xad8c('0x1c')](0x194);}return _0x471fb1;};}function handleError(_0x3dbefc,_0x3befda){_0x3befda=_0x3befda||0x1f4;return function(_0x4548c1){logger[_0xad8c('0x2b')](_0x4548c1[_0xad8c('0x2c')]);if(_0x4548c1['name']){delete _0x4548c1[_0xad8c('0x2d')];}_0x3dbefc['status'](_0x3befda)[_0xad8c('0x2e')](_0x4548c1);};}exports[_0xad8c('0x2f')]=function(_0x222f83,_0x1f4bc8){var _0xd6df59={},_0x20cb61={},_0x24b8c7={'count':0x0,'rows':[]};var _0x1fc887=_[_0xad8c('0x30')](db[_0xad8c('0x31')][_0xad8c('0x32')],function(_0x2391a6){return{'name':_0x2391a6[_0xad8c('0x33')],'type':_0x2391a6[_0xad8c('0x34')][_0xad8c('0x35')]};});_0x20cb61['model']=_[_0xad8c('0x30')](_0x1fc887,_0xad8c('0x2d'));_0x20cb61['query']=_[_0xad8c('0x36')](_0x222f83[_0xad8c('0x37')]);_0x20cb61[_0xad8c('0x38')]=_[_0xad8c('0x39')](_0x20cb61['model'],_0x20cb61['query']);_0xd6df59[_0xad8c('0x3a')]=_[_0xad8c('0x39')](_0x20cb61['model'],qs['fields'](_0x222f83['query']['fields']));_0xd6df59[_0xad8c('0x3a')]=_0xd6df59['attributes'][_0xad8c('0x3b')]?_0xd6df59['attributes']:_0x20cb61[_0xad8c('0x3c')];if(!_0x222f83[_0xad8c('0x37')][_0xad8c('0x3d')]('nolimit')){_0xd6df59['limit']=qs['limit'](_0x222f83[_0xad8c('0x37')][_0xad8c('0x23')]);_0xd6df59[_0xad8c('0x20')]=qs[_0xad8c('0x20')](_0x222f83[_0xad8c('0x37')][_0xad8c('0x20')]);}_0xd6df59[_0xad8c('0x3e')]=qs[_0xad8c('0x3f')](_0x222f83[_0xad8c('0x37')][_0xad8c('0x3f')]);_0xd6df59[_0xad8c('0x40')]=qs[_0xad8c('0x38')](_[_0xad8c('0x41')](_0x222f83[_0xad8c('0x37')],_0x20cb61[_0xad8c('0x38')]),_0x1fc887);if(_0x222f83['query']['filter']){_0xd6df59[_0xad8c('0x40')]=_[_0xad8c('0x42')](_0xd6df59[_0xad8c('0x40')],{'$or':_[_0xad8c('0x30')](_0x1fc887,function(_0x387c75){if(_0x387c75[_0xad8c('0x34')]!==_0xad8c('0x43')){var _0x1410f3={};_0x1410f3[_0x387c75['name']]={'$like':'%'+_0x222f83['query']['filter']+'%'};return _0x1410f3;}})});}_0xd6df59=_[_0xad8c('0x42')]({},_0xd6df59,_0x222f83[_0xad8c('0x44')]);var _0x4b271a={'where':_0xd6df59['where']};return db[_0xad8c('0x31')][_0xad8c('0x22')](_0x4b271a)[_0xad8c('0x2a')](function(_0x5a5537){_0x24b8c7['count']=_0x5a5537;if(_0x222f83[_0xad8c('0x37')][_0xad8c('0x45')]){_0xd6df59[_0xad8c('0x46')]=[{'all':!![]}];}return db[_0xad8c('0x31')]['findAll'](_0xd6df59);})[_0xad8c('0x2a')](function(_0x21826f){_0x24b8c7[_0xad8c('0x47')]=_0x21826f;return _0x24b8c7;})[_0xad8c('0x2a')](respondWithFilteredResult(_0x1f4bc8,_0xd6df59))[_0xad8c('0x48')](handleError(_0x1f4bc8,null));};exports['show']=function(_0x374cd8,_0x5316a7){var _0x11c978={'raw':![],'where':{'id':_0x374cd8['params']['id']}},_0x460527={};_0x460527[_0xad8c('0x3c')]=_['keys'](db['FreshsalesConfiguration']['rawAttributes']);_0x460527[_0xad8c('0x37')]=_[_0xad8c('0x36')](_0x374cd8['query']);_0x460527[_0xad8c('0x38')]=_[_0xad8c('0x39')](_0x460527['model'],_0x460527['query']);_0x11c978[_0xad8c('0x3a')]=_['intersection'](_0x460527['model'],qs[_0xad8c('0x49')](_0x374cd8[_0xad8c('0x37')][_0xad8c('0x49')]));_0x11c978['attributes']=_0x11c978['attributes'][_0xad8c('0x3b')]?_0x11c978[_0xad8c('0x3a')]:_0x460527[_0xad8c('0x3c')];if(_0x374cd8[_0xad8c('0x37')][_0xad8c('0x45')]){_0x11c978[_0xad8c('0x46')]=[{'all':!![]}];}_0x11c978=_[_0xad8c('0x42')]({},_0x11c978,_0x374cd8[_0xad8c('0x44')]);return db[_0xad8c('0x31')]['find'](_0x11c978)[_0xad8c('0x2a')](handleEntityNotFound(_0x5316a7,null))[_0xad8c('0x2a')](respondWithResult(_0x5316a7,null))[_0xad8c('0x48')](handleError(_0x5316a7,null));};exports[_0xad8c('0x4a')]=function(_0x3470da,_0xe65279){return db[_0xad8c('0x31')]['create'](_0x3470da['body'],{})[_0xad8c('0x2a')](respondWithResult(_0xe65279,0xc9))[_0xad8c('0x48')](handleError(_0xe65279,null));};exports['update']=function(_0x4c4b65,_0x20cf16){if(_0x4c4b65['body']['id']){delete _0x4c4b65[_0xad8c('0x4b')]['id'];}return db['FreshsalesConfiguration'][_0xad8c('0x4c')]({'where':{'id':_0x4c4b65['params']['id']}})[_0xad8c('0x2a')](handleEntityNotFound(_0x20cf16,null))[_0xad8c('0x2a')](saveUpdates(_0x4c4b65[_0xad8c('0x4b')],null))[_0xad8c('0x2a')](respondWithResult(_0x20cf16,null))['catch'](handleError(_0x20cf16,null));};exports['destroy']=function(_0x40f239,_0x441338){return db['FreshsalesConfiguration'][_0xad8c('0x4c')]({'where':{'id':_0x40f239[_0xad8c('0x4d')]['id']}})[_0xad8c('0x2a')](handleEntityNotFound(_0x441338,null))[_0xad8c('0x2a')](removeEntity(_0x441338,null))['catch'](handleError(_0x441338,null));};exports[_0xad8c('0x4e')]=function(_0x5aed31,_0x120dc2,_0x111915){var _0x1c57ef={};var _0x5f56fd={};var _0x331dae;var _0x36d14e;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x5aed31['params']['id']}})[_0xad8c('0x2a')](handleEntityNotFound(_0x120dc2,null))['then'](function(_0xc798dc){if(_0xc798dc){_0x331dae=_0xc798dc;_0x5f56fd[_0xad8c('0x3c')]=_[_0xad8c('0x36')](db[_0xad8c('0x4f')][_0xad8c('0x32')]);_0x5f56fd['query']=_['keys'](_0x5aed31[_0xad8c('0x37')]);_0x5f56fd['filters']=_[_0xad8c('0x39')](_0x5f56fd['model'],_0x5f56fd[_0xad8c('0x37')]);_0x1c57ef[_0xad8c('0x3a')]=_[_0xad8c('0x39')](_0x5f56fd[_0xad8c('0x3c')],qs['fields'](_0x5aed31['query'][_0xad8c('0x49')]));_0x1c57ef[_0xad8c('0x3a')]=_0x1c57ef[_0xad8c('0x3a')][_0xad8c('0x3b')]?_0x1c57ef[_0xad8c('0x3a')]:_0x5f56fd[_0xad8c('0x3c')];_0x1c57ef[_0xad8c('0x3e')]=qs['sort'](_0x5aed31[_0xad8c('0x37')][_0xad8c('0x3f')]);_0x1c57ef['where']=qs[_0xad8c('0x38')](_['pick'](_0x5aed31[_0xad8c('0x37')],_0x5f56fd[_0xad8c('0x38')]));if(_0x5aed31[_0xad8c('0x37')]['filter']){_0x1c57ef[_0xad8c('0x40')]=_['merge'](_0x1c57ef[_0xad8c('0x40')],{'$or':_[_0xad8c('0x30')](_0x1c57ef['attributes'],function(_0x15840a){var _0xab4eac={};_0xab4eac[_0x15840a]={'$like':'%'+_0x5aed31[_0xad8c('0x37')]['filter']+'%'};return _0xab4eac;})});}_0x1c57ef=_[_0xad8c('0x42')]({},_0x1c57ef,_0x5aed31[_0xad8c('0x44')]);return _0x331dae[_0xad8c('0x4e')](_0x1c57ef);}})['then'](function(_0x30375e){if(_0x30375e){_0x36d14e=_0x30375e[_0xad8c('0x3b')];if(!_0x5aed31['query'][_0xad8c('0x3d')](_0xad8c('0x50'))){_0x1c57ef['limit']=qs[_0xad8c('0x23')](_0x5aed31[_0xad8c('0x37')][_0xad8c('0x23')]);_0x1c57ef[_0xad8c('0x20')]=qs[_0xad8c('0x20')](_0x5aed31[_0xad8c('0x37')][_0xad8c('0x20')]);}return _0x331dae[_0xad8c('0x4e')](_0x1c57ef);}})[_0xad8c('0x2a')](function(_0x4cb586){if(_0x4cb586){return _0x4cb586?{'count':_0x36d14e,'rows':_0x4cb586}:null;}})['then'](respondWithResult(_0x120dc2,null))[_0xad8c('0x48')](handleError(_0x120dc2,null));};exports[_0xad8c('0x51')]=function(_0x253ed1,_0x1a5758,_0x378e11){var _0xf63cbd={};var _0x218156={};var _0x35f3aa;var _0x53c744;return db[_0xad8c('0x31')]['findOne']({'where':{'id':_0x253ed1['params']['id']}})['then'](handleEntityNotFound(_0x1a5758,null))[_0xad8c('0x2a')](function(_0x28aa97){if(_0x28aa97){_0x35f3aa=_0x28aa97;_0x218156[_0xad8c('0x3c')]=_['keys'](db[_0xad8c('0x4f')]['rawAttributes']);_0x218156[_0xad8c('0x37')]=_[_0xad8c('0x36')](_0x253ed1[_0xad8c('0x37')]);_0x218156['filters']=_[_0xad8c('0x39')](_0x218156[_0xad8c('0x3c')],_0x218156[_0xad8c('0x37')]);_0xf63cbd[_0xad8c('0x3a')]=_['intersection'](_0x218156['model'],qs[_0xad8c('0x49')](_0x253ed1[_0xad8c('0x37')]['fields']));_0xf63cbd[_0xad8c('0x3a')]=_0xf63cbd[_0xad8c('0x3a')][_0xad8c('0x3b')]?_0xf63cbd[_0xad8c('0x3a')]:_0x218156[_0xad8c('0x3c')];_0xf63cbd[_0xad8c('0x3e')]=qs['sort'](_0x253ed1[_0xad8c('0x37')][_0xad8c('0x3f')]);_0xf63cbd[_0xad8c('0x40')]=qs['filters'](_[_0xad8c('0x41')](_0x253ed1[_0xad8c('0x37')],_0x218156['filters']));if(_0x253ed1[_0xad8c('0x37')]['filter']){_0xf63cbd[_0xad8c('0x40')]=_[_0xad8c('0x42')](_0xf63cbd['where'],{'$or':_['map'](_0xf63cbd[_0xad8c('0x3a')],function(_0x28e75f){var _0x10c755={};_0x10c755[_0x28e75f]={'$like':'%'+_0x253ed1[_0xad8c('0x37')][_0xad8c('0x52')]+'%'};return _0x10c755;})});}_0xf63cbd=_[_0xad8c('0x42')]({},_0xf63cbd,_0x253ed1[_0xad8c('0x44')]);return _0x35f3aa[_0xad8c('0x51')](_0xf63cbd);}})['then'](function(_0x8b4be7){if(_0x8b4be7){_0x53c744=_0x8b4be7[_0xad8c('0x3b')];if(!_0x253ed1[_0xad8c('0x37')][_0xad8c('0x3d')]('nolimit')){_0xf63cbd[_0xad8c('0x23')]=qs[_0xad8c('0x23')](_0x253ed1[_0xad8c('0x37')]['limit']);_0xf63cbd[_0xad8c('0x20')]=qs[_0xad8c('0x20')](_0x253ed1[_0xad8c('0x37')][_0xad8c('0x20')]);}return _0x35f3aa['getDescriptions'](_0xf63cbd);}})['then'](function(_0x51947a){if(_0x51947a){return _0x51947a?{'count':_0x53c744,'rows':_0x51947a}:null;}})[_0xad8c('0x2a')](respondWithResult(_0x1a5758,null))[_0xad8c('0x48')](handleError(_0x1a5758,null));};exports[_0xad8c('0x53')]=function(_0x514890,_0x45428c,_0x15ab6d){var _0x5116a1={};var _0x2b1635={};var _0x581b49;var _0x1c7ee2;return db[_0xad8c('0x31')][_0xad8c('0x54')]({'where':{'id':_0x514890[_0xad8c('0x4d')]['id']}})['then'](handleEntityNotFound(_0x45428c,null))[_0xad8c('0x2a')](function(_0xd57ce3){if(_0xd57ce3){_0x581b49=_0xd57ce3;_0x2b1635[_0xad8c('0x3c')]=_['keys'](db[_0xad8c('0x4f')][_0xad8c('0x32')]);_0x2b1635[_0xad8c('0x37')]=_[_0xad8c('0x36')](_0x514890['query']);_0x2b1635[_0xad8c('0x38')]=_[_0xad8c('0x39')](_0x2b1635['model'],_0x2b1635[_0xad8c('0x37')]);_0x5116a1['attributes']=_[_0xad8c('0x39')](_0x2b1635[_0xad8c('0x3c')],qs[_0xad8c('0x49')](_0x514890[_0xad8c('0x37')][_0xad8c('0x49')]));_0x5116a1[_0xad8c('0x3a')]=_0x5116a1[_0xad8c('0x3a')][_0xad8c('0x3b')]?_0x5116a1[_0xad8c('0x3a')]:_0x2b1635[_0xad8c('0x3c')];_0x5116a1[_0xad8c('0x3e')]=qs[_0xad8c('0x3f')](_0x514890[_0xad8c('0x37')][_0xad8c('0x3f')]);_0x5116a1[_0xad8c('0x40')]=qs['filters'](_[_0xad8c('0x41')](_0x514890['query'],_0x2b1635[_0xad8c('0x38')]));if(_0x514890[_0xad8c('0x37')][_0xad8c('0x52')]){_0x5116a1[_0xad8c('0x40')]=_[_0xad8c('0x42')](_0x5116a1[_0xad8c('0x40')],{'$or':_[_0xad8c('0x30')](_0x5116a1[_0xad8c('0x3a')],function(_0x38be66){var _0x1e0a89={};_0x1e0a89[_0x38be66]={'$like':'%'+_0x514890[_0xad8c('0x37')][_0xad8c('0x52')]+'%'};return _0x1e0a89;})});}_0x5116a1=_['merge']({},_0x5116a1,_0x514890['options']);return _0x581b49[_0xad8c('0x53')](_0x5116a1);}})[_0xad8c('0x2a')](function(_0x2e39a4){if(_0x2e39a4){_0x1c7ee2=_0x2e39a4[_0xad8c('0x3b')];if(!_0x514890[_0xad8c('0x37')]['hasOwnProperty']('nolimit')){_0x5116a1[_0xad8c('0x23')]=qs[_0xad8c('0x23')](_0x514890[_0xad8c('0x37')][_0xad8c('0x23')]);_0x5116a1[_0xad8c('0x20')]=qs['offset'](_0x514890[_0xad8c('0x37')][_0xad8c('0x20')]);}return _0x581b49['getFields'](_0x5116a1);}})[_0xad8c('0x2a')](function(_0x22717b){if(_0x22717b){return _0x22717b?{'count':_0x1c7ee2,'rows':_0x22717b}:null;}})[_0xad8c('0x2a')](respondWithResult(_0x45428c,null))[_0xad8c('0x48')](handleError(_0x45428c,null));};
\ No newline at end of file
index 8011282..4671d93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21c6=['rimraf','./intFreshsalesConfiguration.attributes','exports','lodash','util','api','moment','request-promise','path'];(function(_0x5484f4,_0x4f2c3a){var _0x7f7dc9=function(_0x491bcd){while(--_0x491bcd){_0x5484f4['push'](_0x5484f4['shift']());}};_0x7f7dc9(++_0x4f2c3a);}(_0x21c6,0x12c));var _0x621c=function(_0x1fa4b5,_0x595f95){_0x1fa4b5=_0x1fa4b5-0x0;var _0x10ee12=_0x21c6[_0x1fa4b5];return _0x10ee12;};'use strict';var _=require(_0x621c('0x0'));var util=require(_0x621c('0x1'));var logger=require('../../config/logger')(_0x621c('0x2'));var moment=require(_0x621c('0x3'));var BPromise=require('bluebird');var rp=require(_0x621c('0x4'));var fs=require('fs');var path=require(_0x621c('0x5'));var rimraf=require(_0x621c('0x6'));var config=require('../../config/environment');var attributes=require(_0x621c('0x7'));module[_0x621c('0x8')]=function(_0x342a54,_0x16938e){return _0x342a54['define']('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb027=['path','rimraf','../../config/environment','exports','define','FreshsalesConfiguration','lodash','../../config/logger','bluebird','request-promise'];(function(_0x2b5b14,_0x9c967b){var _0x5c883c=function(_0x1188e5){while(--_0x1188e5){_0x2b5b14['push'](_0x2b5b14['shift']());}};_0x5c883c(++_0x9c967b);}(_0xb027,0x6a));var _0x7b02=function(_0x3bf7df,_0x42d714){_0x3bf7df=_0x3bf7df-0x0;var _0x2a00cd=_0xb027[_0x3bf7df];return _0x2a00cd;};'use strict';var _=require(_0x7b02('0x0'));var util=require('util');var logger=require(_0x7b02('0x1'))('api');var moment=require('moment');var BPromise=require(_0x7b02('0x2'));var rp=require(_0x7b02('0x3'));var fs=require('fs');var path=require(_0x7b02('0x4'));var rimraf=require(_0x7b02('0x5'));var config=require(_0x7b02('0x6'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0x7b02('0x7')]=function(_0x57830e,_0x1fe42f){return _0x57830e[_0x7b02('0x8')](_0x7b02('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a70de9..3374de9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e98=['FreshsalesConfiguration,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2de4de,_0x5cf269){var _0x5163a2=function(_0x56b0f3){while(--_0x56b0f3){_0x2de4de['push'](_0x2de4de['shift']());}};_0x5163a2(++_0x5cf269);}(_0x0e98,0xdb));var _0x80e9=function(_0x259cc8,_0x1e2288){_0x259cc8=_0x259cc8-0x0;var _0x1a551d=_0x0e98[_0x259cc8];return _0x1a551d;};'use strict';var _=require(_0x80e9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x80e9('0x1'));var rs=require(_0x80e9('0x2'));var fs=require('fs');var Redis=require(_0x80e9('0x3'));var db=require(_0x80e9('0x4'))['db'];var utils=require(_0x80e9('0x5'));var logger=require(_0x80e9('0x6'))(_0x80e9('0x7'));var config=require(_0x80e9('0x8'));var jayson=require(_0x80e9('0x9'));var client=jayson[_0x80e9('0xa')][_0x80e9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1449f3,_0x260712,_0x4fe7c5){return new BPromise(function(_0x2cd2b3,_0x1c650b){return client['request'](_0x1449f3,_0x4fe7c5)['then'](function(_0x6dca1d){logger['info'](_0x80e9('0xc'),_0x260712,'request\x20sent');logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x260712,'request\x20sent',JSON[_0x80e9('0xd')](_0x6dca1d));if(_0x6dca1d['error']){if(_0x6dca1d[_0x80e9('0xe')][_0x80e9('0xf')]===0x1f4){logger['error'](_0x80e9('0xc'),_0x260712,_0x6dca1d[_0x80e9('0xe')][_0x80e9('0x10')]);return _0x1c650b(_0x6dca1d[_0x80e9('0xe')]['message']);}logger[_0x80e9('0xe')](_0x80e9('0xc'),_0x260712,_0x6dca1d['error'][_0x80e9('0x10')]);return _0x2cd2b3(_0x6dca1d[_0x80e9('0xe')][_0x80e9('0x10')]);}else{logger[_0x80e9('0x11')](_0x80e9('0xc'),_0x260712,_0x80e9('0x12'));_0x2cd2b3(_0x6dca1d[_0x80e9('0x13')][_0x80e9('0x10')]);}})[_0x80e9('0x14')](function(_0x57f8ed){logger[_0x80e9('0xe')](_0x80e9('0xc'),_0x260712,_0x57f8ed);_0x1c650b(_0x57f8ed);});});}
\ No newline at end of file
+var _0x2944=['request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s'];(function(_0x4cbf20,_0x1bfa66){var _0x582ae4=function(_0x5eca38){while(--_0x5eca38){_0x4cbf20['push'](_0x4cbf20['shift']());}};_0x582ae4(++_0x1bfa66);}(_0x2944,0x1d1));var _0x4294=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x2944[_0x1beef3];return _0x5af964;};'use strict';var _=require(_0x4294('0x0'));var util=require(_0x4294('0x1'));var moment=require(_0x4294('0x2'));var BPromise=require(_0x4294('0x3'));var rs=require(_0x4294('0x4'));var fs=require('fs');var Redis=require(_0x4294('0x5'));var db=require(_0x4294('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4294('0x7'))(_0x4294('0x8'));var config=require(_0x4294('0x9'));var jayson=require(_0x4294('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2f777e,_0x4d92cb,_0x399758){return new BPromise(function(_0x5e9d54,_0x335164){return client[_0x4294('0xb')](_0x2f777e,_0x399758)[_0x4294('0xc')](function(_0x47e513){logger[_0x4294('0xd')](_0x4294('0xe'),_0x4d92cb,_0x4294('0xf'));logger[_0x4294('0x10')](_0x4294('0x11'),_0x4d92cb,'request\x20sent',JSON[_0x4294('0x12')](_0x47e513));if(_0x47e513[_0x4294('0x13')]){if(_0x47e513['error'][_0x4294('0x14')]===0x1f4){logger[_0x4294('0x13')](_0x4294('0xe'),_0x4d92cb,_0x47e513[_0x4294('0x13')][_0x4294('0x15')]);return _0x335164(_0x47e513[_0x4294('0x13')][_0x4294('0x15')]);}logger[_0x4294('0x13')](_0x4294('0xe'),_0x4d92cb,_0x47e513['error'][_0x4294('0x15')]);return _0x5e9d54(_0x47e513[_0x4294('0x13')][_0x4294('0x15')]);}else{logger[_0x4294('0xd')](_0x4294('0xe'),_0x4d92cb,_0x4294('0xf'));_0x5e9d54(_0x47e513[_0x4294('0x16')][_0x4294('0x15')]);}})[_0x4294('0x17')](function(_0x24c4ea){logger['error'](_0x4294('0xe'),_0x4d92cb,_0x24c4ea);_0x335164(_0x24c4ea);});});}
\ No newline at end of file
index 6a9c2b6..614ef51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b2=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports'];(function(_0xc0bde9,_0x355373){var _0x3483f9=function(_0x5820a2){while(--_0x5820a2){_0xc0bde9['push'](_0xc0bde9['shift']());}};_0x3483f9(++_0x355373);}(_0x52b2,0x11e));var _0x252b=function(_0x35e31e,_0x2b074e){_0x35e31e=_0x35e31e-0x0;var _0x284167=_0x52b2[_0x35e31e];return _0x284167;};'use strict';var multer=require(_0x252b('0x0'));var util=require(_0x252b('0x1'));var path=require(_0x252b('0x2'));var timeout=require(_0x252b('0x3'));var express=require(_0x252b('0x4'));var router=express[_0x252b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x252b('0x6'));var interaction=require(_0x252b('0x7'));var config=require(_0x252b('0x8'));var controller=require(_0x252b('0x9'));router[_0x252b('0xa')]('/',auth['isAuthenticated'](),controller[_0x252b('0xb')]);router[_0x252b('0xa')](_0x252b('0xc'),auth[_0x252b('0xd')](),controller[_0x252b('0xe')]);router[_0x252b('0xf')]('/',auth['isAuthenticated'](),controller[_0x252b('0x10')]);router[_0x252b('0x11')]('/:id',auth[_0x252b('0xd')](),controller[_0x252b('0x12')]);router[_0x252b('0x13')](_0x252b('0xc'),auth[_0x252b('0xd')](),controller[_0x252b('0x14')]);module[_0x252b('0x15')]=router;
\ No newline at end of file
+var _0xed8a=['show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id'];(function(_0x57ee81,_0x6863e7){var _0x2c2c66=function(_0x3f1195){while(--_0x3f1195){_0x57ee81['push'](_0x57ee81['shift']());}};_0x2c2c66(++_0x6863e7);}(_0xed8a,0xc5));var _0xaed8=function(_0x40d3f3,_0x35d87d){_0x40d3f3=_0x40d3f3-0x0;var _0x491ab2=_0xed8a[_0x40d3f3];return _0x491ab2;};'use strict';var multer=require(_0xaed8('0x0'));var util=require(_0xaed8('0x1'));var path=require(_0xaed8('0x2'));var timeout=require(_0xaed8('0x3'));var express=require('express');var router=express[_0xaed8('0x4')]();var fs_extra=require(_0xaed8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xaed8('0x6'));var config=require(_0xaed8('0x7'));var controller=require('./intFreshsalesField.controller');router['get']('/',auth[_0xaed8('0x8')](),controller[_0xaed8('0x9')]);router[_0xaed8('0xa')](_0xaed8('0xb'),auth[_0xaed8('0x8')](),controller[_0xaed8('0xc')]);router[_0xaed8('0xd')]('/',auth['isAuthenticated'](),controller[_0xaed8('0xe')]);router[_0xaed8('0xf')](_0xaed8('0xb'),auth['isAuthenticated'](),controller[_0xaed8('0x10')]);router[_0xaed8('0x11')](_0xaed8('0xb'),auth[_0xaed8('0x8')](),controller[_0xaed8('0x12')]);module['exports']=router;
\ No newline at end of file
index 35f794d..d2a12f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ddc=['STRING','BOOLEAN','exports','ENUM','customVariable','keyValue','picklist','string'];(function(_0x151926,_0x1c66fb){var _0x3a2182=function(_0x88cb4c){while(--_0x88cb4c){_0x151926['push'](_0x151926['shift']());}};_0x3a2182(++_0x1c66fb);}(_0x0ddc,0xb2));var _0xc0dd=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x0ddc[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0xc0dd('0x0')]={'type':{'type':Sequelize[_0xc0dd('0x1')]('string','variable',_0xc0dd('0x2'),_0xc0dd('0x3'),_0xc0dd('0x4')),'defaultValue':_0xc0dd('0x5')},'content':{'type':Sequelize[_0xc0dd('0x6')]},'key':{'type':Sequelize[_0xc0dd('0x6')]},'keyType':{'type':Sequelize[_0xc0dd('0x1')](_0xc0dd('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xc0dd('0x6')]},'idField':{'type':Sequelize[_0xc0dd('0x6')]},'nameField':{'type':Sequelize[_0xc0dd('0x6')]},'customField':{'type':Sequelize[_0xc0dd('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc0dd('0x6')]}};
\ No newline at end of file
+var _0xb39d=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x49c5af,_0x2dd320){var _0x322710=function(_0x34d4a4){while(--_0x34d4a4){_0x49c5af['push'](_0x49c5af['shift']());}};_0x322710(++_0x2dd320);}(_0xb39d,0x72));var _0xdb39=function(_0x26a10d,_0xe5c001){_0x26a10d=_0x26a10d-0x0;var _0xf90201=_0xb39d[_0x26a10d];return _0xf90201;};'use strict';var Sequelize=require(_0xdb39('0x0'));module[_0xdb39('0x1')]={'type':{'type':Sequelize[_0xdb39('0x2')](_0xdb39('0x3'),_0xdb39('0x4'),_0xdb39('0x5'),_0xdb39('0x6'),_0xdb39('0x7')),'defaultValue':_0xdb39('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xdb39('0x8')]},'keyType':{'type':Sequelize[_0xdb39('0x2')](_0xdb39('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xdb39('0x8')]},'idField':{'type':Sequelize[_0xdb39('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xdb39('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xdb39('0x8')]}};
\ No newline at end of file
index f607d01..9e77cb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x085c=['include','findAll','rows','catch','show','params','find','create','body','eml-format','zip-dir','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','name','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x085c,0x9d));var _0xc085=function(_0xf1f2e0,_0x37c415){_0xf1f2e0=_0xf1f2e0-0x0;var _0x991373=_0x085c[_0xf1f2e0];return _0x991373;};'use strict';var emlformat=require(_0xc085('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc085('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc085('0x2'));var Mustache=require(_0xc085('0x3'));var util=require('util');var path=require(_0xc085('0x4'));var sox=require('sox');var csv=require(_0xc085('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc085('0x6'));var _=require(_0xc085('0x7'));var squel=require(_0xc085('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc085('0x9'));var toCsv=require(_0xc085('0x5'));var querystring=require(_0xc085('0xa'));var Papa=require(_0xc085('0xb'));var Redis=require(_0xc085('0xc'));var authService=require(_0xc085('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xc085('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc085('0xf'))(_0xc085('0x10'));var utils=require('../../config/utils');var config=require(_0xc085('0x11'));var licenseUtil=require(_0xc085('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2edd6e,_0x1e5b16){_0x1e5b16=_0x1e5b16||0xcc;return function(_0xd3c8b7){if(_0xd3c8b7){return _0x2edd6e[_0xc085('0x13')](_0x1e5b16);}return _0x2edd6e[_0xc085('0x14')](_0x1e5b16)['end']();};}function respondWithResult(_0x4ace93,_0x1475f5){_0x1475f5=_0x1475f5||0xc8;return function(_0x1df606){if(_0x1df606){return _0x4ace93['status'](_0x1475f5)[_0xc085('0x15')](_0x1df606);}};}function respondWithFilteredResult(_0x38e882,_0x40957b){return function(_0x4b5da6){if(_0x4b5da6){var _0x3519df=typeof _0x40957b[_0xc085('0x16')]===_0xc085('0x17')&&typeof _0x40957b[_0xc085('0x18')]==='undefined';var _0x262467=_0x4b5da6['count'];var _0x1bad63=_0x3519df?0x0:_0x40957b[_0xc085('0x16')];var _0x4af93f=_0x3519df?_0x4b5da6['count']:_0x40957b[_0xc085('0x16')]+_0x40957b[_0xc085('0x18')];var _0x40b7a1;if(_0x4af93f>=_0x262467){_0x4af93f=_0x262467;_0x40b7a1=0xc8;}else{_0x40b7a1=0xce;}_0x38e882[_0xc085('0x14')](_0x40b7a1);return _0x38e882[_0xc085('0x19')](_0xc085('0x1a'),_0x1bad63+'-'+_0x4af93f+'/'+_0x262467)[_0xc085('0x15')](_0x4b5da6);}return null;};}function patchUpdates(_0xbd72a){return function(_0x1db6ac){try{jsonpatch[_0xc085('0x1b')](_0x1db6ac,_0xbd72a,!![]);}catch(_0x148cde){return BPromise[_0xc085('0x1c')](_0x148cde);}return _0x1db6ac[_0xc085('0x1d')]();};}function saveUpdates(_0x511131,_0x50dbbf){return function(_0x186c40){if(_0x186c40){return _0x186c40[_0xc085('0x1e')](_0x511131)[_0xc085('0x1f')](function(_0x415a4a){return _0x415a4a;});}return null;};}function removeEntity(_0x340089,_0x44a0ac){return function(_0x3c7498){if(_0x3c7498){return _0x3c7498[_0xc085('0x20')]()[_0xc085('0x1f')](function(){_0x340089[_0xc085('0x14')](0xcc)[_0xc085('0x21')]();});}};}function handleEntityNotFound(_0x2abb00,_0x595fdb){return function(_0x3b827b){if(!_0x3b827b){_0x2abb00[_0xc085('0x13')](0x194);}return _0x3b827b;};}function handleError(_0x1526f3,_0x41d34e){_0x41d34e=_0x41d34e||0x1f4;return function(_0x528940){logger[_0xc085('0x22')](_0x528940[_0xc085('0x23')]);if(_0x528940['name']){delete _0x528940['name'];}_0x1526f3[_0xc085('0x14')](_0x41d34e)[_0xc085('0x24')](_0x528940);};}exports[_0xc085('0x25')]=function(_0x2b4b0b,_0x4463f4){var _0x2c43bf={},_0x297999={},_0x179ba4={'count':0x0,'rows':[]};var _0x39d350=_[_0xc085('0x26')](db[_0xc085('0x27')][_0xc085('0x28')],function(_0x3b17da){return{'name':_0x3b17da[_0xc085('0x29')],'type':_0x3b17da[_0xc085('0x2a')][_0xc085('0x2b')]};});_0x297999[_0xc085('0x2c')]=_[_0xc085('0x26')](_0x39d350,_0xc085('0x2d'));_0x297999['query']=_[_0xc085('0x2e')](_0x2b4b0b['query']);_0x297999[_0xc085('0x2f')]=_[_0xc085('0x30')](_0x297999['model'],_0x297999[_0xc085('0x31')]);_0x2c43bf[_0xc085('0x32')]=_[_0xc085('0x30')](_0x297999[_0xc085('0x2c')],qs[_0xc085('0x33')](_0x2b4b0b[_0xc085('0x31')][_0xc085('0x33')]));_0x2c43bf[_0xc085('0x32')]=_0x2c43bf[_0xc085('0x32')][_0xc085('0x34')]?_0x2c43bf[_0xc085('0x32')]:_0x297999['model'];if(!_0x2b4b0b['query'][_0xc085('0x35')](_0xc085('0x36'))){_0x2c43bf[_0xc085('0x18')]=qs['limit'](_0x2b4b0b[_0xc085('0x31')]['limit']);_0x2c43bf['offset']=qs[_0xc085('0x16')](_0x2b4b0b['query'][_0xc085('0x16')]);}_0x2c43bf[_0xc085('0x37')]=qs[_0xc085('0x38')](_0x2b4b0b[_0xc085('0x31')][_0xc085('0x38')]);_0x2c43bf[_0xc085('0x39')]=qs[_0xc085('0x2f')](_[_0xc085('0x3a')](_0x2b4b0b[_0xc085('0x31')],_0x297999[_0xc085('0x2f')]),_0x39d350);if(_0x2b4b0b[_0xc085('0x31')][_0xc085('0x3b')]){_0x2c43bf[_0xc085('0x39')]=_[_0xc085('0x3c')](_0x2c43bf[_0xc085('0x39')],{'$or':_['map'](_0x39d350,function(_0x25af38){if(_0x25af38[_0xc085('0x2a')]!==_0xc085('0x3d')){var _0x1997e5={};_0x1997e5[_0x25af38[_0xc085('0x2d')]]={'$like':'%'+_0x2b4b0b['query']['filter']+'%'};return _0x1997e5;}})});}_0x2c43bf=_['merge']({},_0x2c43bf,_0x2b4b0b[_0xc085('0x3e')]);var _0x5baed9={'where':_0x2c43bf[_0xc085('0x39')]};return db[_0xc085('0x27')][_0xc085('0x3f')](_0x5baed9)['then'](function(_0x2ac522){_0x179ba4[_0xc085('0x3f')]=_0x2ac522;if(_0x2b4b0b[_0xc085('0x31')][_0xc085('0x40')]){_0x2c43bf[_0xc085('0x41')]=[{'all':!![]}];}return db[_0xc085('0x27')][_0xc085('0x42')](_0x2c43bf);})[_0xc085('0x1f')](function(_0x373db9){_0x179ba4[_0xc085('0x43')]=_0x373db9;return _0x179ba4;})[_0xc085('0x1f')](respondWithFilteredResult(_0x4463f4,_0x2c43bf))[_0xc085('0x44')](handleError(_0x4463f4,null));};exports[_0xc085('0x45')]=function(_0x1c0158,_0x315e71){var _0x35ba5f={'raw':!![],'where':{'id':_0x1c0158[_0xc085('0x46')]['id']}},_0x569641={};_0x569641['model']=_['keys'](db[_0xc085('0x27')][_0xc085('0x28')]);_0x569641['query']=_['keys'](_0x1c0158[_0xc085('0x31')]);_0x569641['filters']=_[_0xc085('0x30')](_0x569641['model'],_0x569641[_0xc085('0x31')]);_0x35ba5f[_0xc085('0x32')]=_['intersection'](_0x569641['model'],qs[_0xc085('0x33')](_0x1c0158[_0xc085('0x31')][_0xc085('0x33')]));_0x35ba5f[_0xc085('0x32')]=_0x35ba5f['attributes'][_0xc085('0x34')]?_0x35ba5f[_0xc085('0x32')]:_0x569641['model'];if(_0x1c0158[_0xc085('0x31')][_0xc085('0x40')]){_0x35ba5f[_0xc085('0x41')]=[{'all':!![]}];}_0x35ba5f=_['merge']({},_0x35ba5f,_0x1c0158[_0xc085('0x3e')]);return db['FreshsalesField'][_0xc085('0x47')](_0x35ba5f)[_0xc085('0x1f')](handleEntityNotFound(_0x315e71,null))[_0xc085('0x1f')](respondWithResult(_0x315e71,null))['catch'](handleError(_0x315e71,null));};exports[_0xc085('0x48')]=function(_0x45b31a,_0x51d531){return db[_0xc085('0x27')][_0xc085('0x48')](_0x45b31a['body'],{})['then'](respondWithResult(_0x51d531,0xc9))[_0xc085('0x44')](handleError(_0x51d531,null));};exports[_0xc085('0x1e')]=function(_0x5223f0,_0x2fc3cf){if(_0x5223f0[_0xc085('0x49')]['id']){delete _0x5223f0[_0xc085('0x49')]['id'];}return db[_0xc085('0x27')][_0xc085('0x47')]({'where':{'id':_0x5223f0['params']['id']}})[_0xc085('0x1f')](handleEntityNotFound(_0x2fc3cf,null))[_0xc085('0x1f')](saveUpdates(_0x5223f0[_0xc085('0x49')],null))[_0xc085('0x1f')](respondWithResult(_0x2fc3cf,null))[_0xc085('0x44')](handleError(_0x2fc3cf,null));};exports['destroy']=function(_0x31fe63,_0x566967){return db[_0xc085('0x27')][_0xc085('0x47')]({'where':{'id':_0x31fe63[_0xc085('0x46')]['id']}})[_0xc085('0x1f')](handleEntityNotFound(_0x566967,null))[_0xc085('0x1f')](removeEntity(_0x566967,null))[_0xc085('0x44')](handleError(_0x566967,null));};
\ No newline at end of file
+var _0xe7c2=['stack','name','send','map','FreshsalesField','rawAttributes','type','key','query','keys','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','intersection','find','create','body','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','count','Content-Range','json','apply','reject','save','destroy','then'];(function(_0x18360a,_0x534fae){var _0x2f91f2=function(_0x59f7b0){while(--_0x59f7b0){_0x18360a['push'](_0x18360a['shift']());}};_0x2f91f2(++_0x534fae);}(_0xe7c2,0xfe));var _0x2e7c=function(_0x2c8227,_0x2cb39e){_0x2c8227=_0x2c8227-0x0;var _0x277e69=_0xe7c2[_0x2c8227];return _0x277e69;};'use strict';var emlformat=require(_0x2e7c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2e7c('0x1'));var jsonpatch=require(_0x2e7c('0x2'));var rp=require(_0x2e7c('0x3'));var moment=require(_0x2e7c('0x4'));var BPromise=require(_0x2e7c('0x5'));var Mustache=require(_0x2e7c('0x6'));var util=require(_0x2e7c('0x7'));var path=require('path');var sox=require(_0x2e7c('0x8'));var csv=require(_0x2e7c('0x9'));var ejs=require(_0x2e7c('0xa'));var fs=require('fs');var fs_extra=require(_0x2e7c('0xb'));var _=require(_0x2e7c('0xc'));var squel=require('squel');var crypto=require(_0x2e7c('0xd'));var jsforce=require(_0x2e7c('0xe'));var deskjs=require(_0x2e7c('0xf'));var toCsv=require(_0x2e7c('0x9'));var querystring=require(_0x2e7c('0x10'));var Papa=require(_0x2e7c('0x11'));var Redis=require(_0x2e7c('0x12'));var authService=require(_0x2e7c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2e7c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2e7c('0x15'))('api');var utils=require(_0x2e7c('0x16'));var config=require(_0x2e7c('0x17'));var licenseUtil=require(_0x2e7c('0x18'));var db=require(_0x2e7c('0x19'))['db'];function respondWithStatusCode(_0x4bfb4f,_0x3ca902){_0x3ca902=_0x3ca902||0xcc;return function(_0x190c8e){if(_0x190c8e){return _0x4bfb4f[_0x2e7c('0x1a')](_0x3ca902);}return _0x4bfb4f['status'](_0x3ca902)[_0x2e7c('0x1b')]();};}function respondWithResult(_0x3779a0,_0x9272a9){_0x9272a9=_0x9272a9||0xc8;return function(_0x5286e4){if(_0x5286e4){return _0x3779a0[_0x2e7c('0x1c')](_0x9272a9)['json'](_0x5286e4);}};}function respondWithFilteredResult(_0xb5ef5d,_0x5b854f){return function(_0x46f0b6){if(_0x46f0b6){var _0x4e7064=typeof _0x5b854f[_0x2e7c('0x1d')]==='undefined'&&typeof _0x5b854f['limit']==='undefined';var _0x5e0f9b=_0x46f0b6[_0x2e7c('0x1e')];var _0x4c34df=_0x4e7064?0x0:_0x5b854f[_0x2e7c('0x1d')];var _0xc3c269=_0x4e7064?_0x46f0b6[_0x2e7c('0x1e')]:_0x5b854f['offset']+_0x5b854f['limit'];var _0x30574b;if(_0xc3c269>=_0x5e0f9b){_0xc3c269=_0x5e0f9b;_0x30574b=0xc8;}else{_0x30574b=0xce;}_0xb5ef5d[_0x2e7c('0x1c')](_0x30574b);return _0xb5ef5d['set'](_0x2e7c('0x1f'),_0x4c34df+'-'+_0xc3c269+'/'+_0x5e0f9b)[_0x2e7c('0x20')](_0x46f0b6);}return null;};}function patchUpdates(_0x2a3d4b){return function(_0x4d7b77){try{jsonpatch[_0x2e7c('0x21')](_0x4d7b77,_0x2a3d4b,!![]);}catch(_0x4fdb91){return BPromise[_0x2e7c('0x22')](_0x4fdb91);}return _0x4d7b77[_0x2e7c('0x23')]();};}function saveUpdates(_0x1d6b4b,_0x3c3488){return function(_0x34cbdd){if(_0x34cbdd){return _0x34cbdd['update'](_0x1d6b4b)['then'](function(_0xd258f9){return _0xd258f9;});}return null;};}function removeEntity(_0xa09f51,_0x16d322){return function(_0x868467){if(_0x868467){return _0x868467[_0x2e7c('0x24')]()[_0x2e7c('0x25')](function(){_0xa09f51['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x38171f,_0x6ac6a0){return function(_0x15d222){if(!_0x15d222){_0x38171f[_0x2e7c('0x1a')](0x194);}return _0x15d222;};}function handleError(_0x3e8250,_0x408580){_0x408580=_0x408580||0x1f4;return function(_0x3c142f){logger['error'](_0x3c142f[_0x2e7c('0x26')]);if(_0x3c142f[_0x2e7c('0x27')]){delete _0x3c142f['name'];}_0x3e8250[_0x2e7c('0x1c')](_0x408580)[_0x2e7c('0x28')](_0x3c142f);};}exports['index']=function(_0xd4f3a5,_0x76a460){var _0x1aa914={},_0x2c2515={},_0x34d41e={'count':0x0,'rows':[]};var _0x4e7927=_[_0x2e7c('0x29')](db[_0x2e7c('0x2a')][_0x2e7c('0x2b')],function(_0x5e991f){return{'name':_0x5e991f['fieldName'],'type':_0x5e991f[_0x2e7c('0x2c')][_0x2e7c('0x2d')]};});_0x2c2515['model']=_['map'](_0x4e7927,_0x2e7c('0x27'));_0x2c2515[_0x2e7c('0x2e')]=_[_0x2e7c('0x2f')](_0xd4f3a5[_0x2e7c('0x2e')]);_0x2c2515['filters']=_['intersection'](_0x2c2515[_0x2e7c('0x30')],_0x2c2515[_0x2e7c('0x2e')]);_0x1aa914[_0x2e7c('0x31')]=_['intersection'](_0x2c2515[_0x2e7c('0x30')],qs[_0x2e7c('0x32')](_0xd4f3a5['query'][_0x2e7c('0x32')]));_0x1aa914['attributes']=_0x1aa914[_0x2e7c('0x31')][_0x2e7c('0x33')]?_0x1aa914[_0x2e7c('0x31')]:_0x2c2515[_0x2e7c('0x30')];if(!_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x34')]('nolimit')){_0x1aa914[_0x2e7c('0x35')]=qs[_0x2e7c('0x35')](_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x35')]);_0x1aa914[_0x2e7c('0x1d')]=qs[_0x2e7c('0x1d')](_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x1d')]);}_0x1aa914[_0x2e7c('0x36')]=qs[_0x2e7c('0x37')](_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x37')]);_0x1aa914[_0x2e7c('0x38')]=qs['filters'](_[_0x2e7c('0x39')](_0xd4f3a5[_0x2e7c('0x2e')],_0x2c2515[_0x2e7c('0x3a')]),_0x4e7927);if(_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x3b')]){_0x1aa914[_0x2e7c('0x38')]=_['merge'](_0x1aa914['where'],{'$or':_[_0x2e7c('0x29')](_0x4e7927,function(_0x4a5b79){if(_0x4a5b79[_0x2e7c('0x2c')]!==_0x2e7c('0x3c')){var _0x34598b={};_0x34598b[_0x4a5b79[_0x2e7c('0x27')]]={'$like':'%'+_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x3b')]+'%'};return _0x34598b;}})});}_0x1aa914=_[_0x2e7c('0x3d')]({},_0x1aa914,_0xd4f3a5[_0x2e7c('0x3e')]);var _0x39e42a={'where':_0x1aa914['where']};return db[_0x2e7c('0x2a')][_0x2e7c('0x1e')](_0x39e42a)[_0x2e7c('0x25')](function(_0x4c5c75){_0x34d41e[_0x2e7c('0x1e')]=_0x4c5c75;if(_0xd4f3a5[_0x2e7c('0x2e')][_0x2e7c('0x3f')]){_0x1aa914[_0x2e7c('0x40')]=[{'all':!![]}];}return db['FreshsalesField'][_0x2e7c('0x41')](_0x1aa914);})['then'](function(_0x56539b){_0x34d41e['rows']=_0x56539b;return _0x34d41e;})[_0x2e7c('0x25')](respondWithFilteredResult(_0x76a460,_0x1aa914))[_0x2e7c('0x42')](handleError(_0x76a460,null));};exports['show']=function(_0x5984ee,_0x1dc996){var _0x13d761={'raw':!![],'where':{'id':_0x5984ee['params']['id']}},_0x7cfc3f={};_0x7cfc3f[_0x2e7c('0x30')]=_[_0x2e7c('0x2f')](db[_0x2e7c('0x2a')][_0x2e7c('0x2b')]);_0x7cfc3f['query']=_['keys'](_0x5984ee[_0x2e7c('0x2e')]);_0x7cfc3f[_0x2e7c('0x3a')]=_['intersection'](_0x7cfc3f['model'],_0x7cfc3f[_0x2e7c('0x2e')]);_0x13d761[_0x2e7c('0x31')]=_[_0x2e7c('0x43')](_0x7cfc3f['model'],qs[_0x2e7c('0x32')](_0x5984ee[_0x2e7c('0x2e')][_0x2e7c('0x32')]));_0x13d761[_0x2e7c('0x31')]=_0x13d761[_0x2e7c('0x31')]['length']?_0x13d761[_0x2e7c('0x31')]:_0x7cfc3f[_0x2e7c('0x30')];if(_0x5984ee[_0x2e7c('0x2e')][_0x2e7c('0x3f')]){_0x13d761[_0x2e7c('0x40')]=[{'all':!![]}];}_0x13d761=_[_0x2e7c('0x3d')]({},_0x13d761,_0x5984ee['options']);return db[_0x2e7c('0x2a')][_0x2e7c('0x44')](_0x13d761)[_0x2e7c('0x25')](handleEntityNotFound(_0x1dc996,null))['then'](respondWithResult(_0x1dc996,null))[_0x2e7c('0x42')](handleError(_0x1dc996,null));};exports[_0x2e7c('0x45')]=function(_0x1f88df,_0x12666e){return db[_0x2e7c('0x2a')][_0x2e7c('0x45')](_0x1f88df[_0x2e7c('0x46')],{})['then'](respondWithResult(_0x12666e,0xc9))[_0x2e7c('0x42')](handleError(_0x12666e,null));};exports[_0x2e7c('0x47')]=function(_0xd20b9b,_0x5e3569){if(_0xd20b9b['body']['id']){delete _0xd20b9b[_0x2e7c('0x46')]['id'];}return db[_0x2e7c('0x2a')][_0x2e7c('0x44')]({'where':{'id':_0xd20b9b[_0x2e7c('0x48')]['id']}})[_0x2e7c('0x25')](handleEntityNotFound(_0x5e3569,null))[_0x2e7c('0x25')](saveUpdates(_0xd20b9b[_0x2e7c('0x46')],null))['then'](respondWithResult(_0x5e3569,null))['catch'](handleError(_0x5e3569,null));};exports[_0x2e7c('0x24')]=function(_0x34d486,_0x27fd64){return db[_0x2e7c('0x2a')][_0x2e7c('0x44')]({'where':{'id':_0x34d486[_0x2e7c('0x48')]['id']}})[_0x2e7c('0x25')](handleEntityNotFound(_0x27fd64,null))[_0x2e7c('0x25')](removeEntity(_0x27fd64,null))['catch'](handleError(_0x27fd64,null));};
\ No newline at end of file
index a107245..6c50bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['FreshsalesField','int_freshsales_fields','idField','FieldId','lodash','util','api','moment','bluebird','path','../../config/environment','./intFreshsalesField.attributes','exports'];(function(_0x566760,_0x1f7104){var _0x30ca6d=function(_0x3aa193){while(--_0x3aa193){_0x566760['push'](_0x566760['shift']());}};_0x30ca6d(++_0x1f7104);}(_0x2a84,0x170));var _0x42a8=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2a84[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x42a8('0x0'));var util=require(_0x42a8('0x1'));var logger=require('../../config/logger')(_0x42a8('0x2'));var moment=require(_0x42a8('0x3'));var BPromise=require(_0x42a8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x42a8('0x5'));var rimraf=require('rimraf');var config=require(_0x42a8('0x6'));var attributes=require(_0x42a8('0x7'));module[_0x42a8('0x8')]=function(_0x59505e,_0x593b3a){return _0x59505e['define'](_0x42a8('0x9'),attributes,{'tableName':_0x42a8('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x42a8('0xb'),_0x42a8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a1b=['bluebird','request-promise','path','../../config/environment','./intFreshsalesField.attributes','define','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','moment'];(function(_0x1e28e6,_0x11b9b7){var _0x478351=function(_0x4b62c7){while(--_0x4b62c7){_0x1e28e6['push'](_0x1e28e6['shift']());}};_0x478351(++_0x11b9b7);}(_0x9a1b,0x1ba));var _0xb9a1=function(_0x323b82,_0x415ac3){_0x323b82=_0x323b82-0x0;var _0x1dcca1=_0x9a1b[_0x323b82];return _0x1dcca1;};'use strict';var _=require(_0xb9a1('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb9a1('0x1'));var BPromise=require(_0xb9a1('0x2'));var rp=require(_0xb9a1('0x3'));var fs=require('fs');var path=require(_0xb9a1('0x4'));var rimraf=require('rimraf');var config=require(_0xb9a1('0x5'));var attributes=require(_0xb9a1('0x6'));module['exports']=function(_0x69b74e,_0x455fac){return _0x69b74e[_0xb9a1('0x7')]('FreshsalesField',attributes,{'tableName':_0xb9a1('0x8'),'paranoid':![],'indexes':[{'name':_0xb9a1('0x9'),'fields':[_0xb9a1('0xa'),_0xb9a1('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b3a8b2c..4cc7536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x458eef,_0x551783){var _0x2fb384=function(_0x28465e){while(--_0x28465e){_0x458eef['push'](_0x458eef['shift']());}};_0x2fb384(++_0x551783);}(_0x33af,0xec));var _0xf33a=function(_0x45fe9c,_0x55e0d7){_0x45fe9c=_0x45fe9c-0x0;var _0x233d48=_0x33af[_0x45fe9c];return _0x233d48;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var moment=require('moment');var BPromise=require(_0xf33a('0x1'));var rs=require(_0xf33a('0x2'));var fs=require('fs');var Redis=require(_0xf33a('0x3'));var db=require(_0xf33a('0x4'))['db'];var utils=require(_0xf33a('0x5'));var logger=require(_0xf33a('0x6'))('rpc');var config=require(_0xf33a('0x7'));var jayson=require(_0xf33a('0x8'));var client=jayson['client'][_0xf33a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x384b14,_0x1b2b01,_0x2f3730){return new BPromise(function(_0x2baabb,_0x2cb169){return client['request'](_0x384b14,_0x2f3730)[_0xf33a('0xa')](function(_0x14eb0e){logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,_0xf33a('0xd'));logger[_0xf33a('0xe')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x1b2b01,'request\x20sent',JSON[_0xf33a('0xf')](_0x14eb0e));if(_0x14eb0e[_0xf33a('0x10')]){if(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x11')]===0x1f4){logger[_0xf33a('0x10')]('FreshsalesField,\x20%s,\x20%s',_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2cb169(_0x14eb0e['error']['message']);}logger[_0xf33a('0x10')](_0xf33a('0xc'),_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2baabb(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);}else{logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,'request\x20sent');_0x2baabb(_0x14eb0e[_0xf33a('0x13')]['message']);}})[_0xf33a('0x14')](function(_0x229389){logger['error'](_0xf33a('0xc'),_0x1b2b01,_0x229389);_0x2cb169(_0x229389);});});}
\ No newline at end of file
+var _0x326f=['info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5ef6cb,_0x242d4c){var _0x48d687=function(_0x4a4d83){while(--_0x4a4d83){_0x5ef6cb['push'](_0x5ef6cb['shift']());}};_0x48d687(++_0x242d4c);}(_0x326f,0xd1));var _0xf326=function(_0x4b3e48,_0x48d15e){_0x4b3e48=_0x4b3e48-0x0;var _0x1571f1=_0x326f[_0x4b3e48];return _0x1571f1;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
index 7c85e92..a2a844d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x40c7ca,_0x5cc1ce){var _0x415789=function(_0x48223f){while(--_0x48223f){_0x40c7ca['push'](_0x40c7ca['shift']());}};_0x415789(++_0x5cc1ce);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x54db87,_0x2c9fb5){var _0xf5a3f7=function(_0x1b1a7c){while(--_0x1b1a7c){_0x54db87['push'](_0x54db87['shift']());}};_0xf5a3f7(++_0x2c9fb5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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 2fb4f72..35613ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7669=['STRING','username','ENUM','integrationTab','newTab','sequelize','exports'];(function(_0x4c624b,_0x232e25){var _0x4cd079=function(_0x5b151c){while(--_0x5b151c){_0x4c624b['push'](_0x4c624b['shift']());}};_0x4cd079(++_0x232e25);}(_0x7669,0xe5));var _0x9766=function(_0x106fbb,_0x3bd17a){_0x106fbb=_0x106fbb-0x0;var _0x354e0c=_0x7669[_0x106fbb];return _0x354e0c;};'use strict';var Sequelize=require(_0x9766('0x0'));module[_0x9766('0x1')]={'name':{'type':Sequelize[_0x9766('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x9766('0x2')],'unique':_0x9766('0x3')},'remoteUri':{'type':Sequelize[_0x9766('0x2')]},'password':{'type':Sequelize[_0x9766('0x2')]},'clientId':{'type':Sequelize[_0x9766('0x2')]},'clientSecret':{'type':Sequelize[_0x9766('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x9766('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9766('0x4')](_0x9766('0x5'),_0x9766('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x5943=['newTab','sequelize','exports','STRING','username','ENUM','integrationTab'];(function(_0x2a077d,_0x84e86b){var _0x1d3027=function(_0x2e2aa6){while(--_0x2e2aa6){_0x2a077d['push'](_0x2a077d['shift']());}};_0x1d3027(++_0x84e86b);}(_0x5943,0x1f2));var _0x3594=function(_0x25f9a4,_0x260641){_0x25f9a4=_0x25f9a4-0x0;var _0x138f3c=_0x5943[_0x25f9a4];return _0x138f3c;};'use strict';var Sequelize=require(_0x3594('0x0'));module[_0x3594('0x1')]={'name':{'type':Sequelize[_0x3594('0x2')]},'description':{'type':Sequelize[_0x3594('0x2')]},'username':{'type':Sequelize[_0x3594('0x2')],'unique':_0x3594('0x3')},'remoteUri':{'type':Sequelize[_0x3594('0x2')]},'password':{'type':Sequelize[_0x3594('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x3594('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x3594('0x4')](_0x3594('0x5'),_0x3594('0x6')),'defaultValue':_0x3594('0x5')}};
\ No newline at end of file
index b1017ae..b910d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c73=['map','SalesforceAccount','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','keys','find','create','update','body','getConfigurations','SalesforceConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','findOne','remoteUri','clientId','clientSecret','password','securityToken','substring','lastIndexOf','Connection','login','username','concat','isNil','ticketType','sobject','IsReminderSet','IsRecurrence','Description','string','boolean','textarea','phone','remove','label','picklistValues','value','True','true','False','false','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','name','index'];(function(_0x41e1b9,_0x3d0b2f){var _0x412640=function(_0xa302cf){while(--_0xa302cf){_0x41e1b9['push'](_0x41e1b9['shift']());}};_0x412640(++_0x3d0b2f);}(_0x1c73,0xc2));var _0x31c7=function(_0xe71cf6,_0x120a90){_0xe71cf6=_0xe71cf6-0x0;var _0x1ffd42=_0x1c73[_0xe71cf6];return _0x1ffd42;};'use strict';var emlformat=require(_0x31c7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x31c7('0x1'));var jsonpatch=require(_0x31c7('0x2'));var rp=require(_0x31c7('0x3'));var moment=require(_0x31c7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x31c7('0x5'));var util=require(_0x31c7('0x6'));var path=require(_0x31c7('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x31c7('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x31c7('0x9'));var crypto=require(_0x31c7('0xa'));var jsforce=require(_0x31c7('0xb'));var deskjs=require(_0x31c7('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x31c7('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x31c7('0xe'));var hardwareService=require(_0x31c7('0xf'));var logger=require(_0x31c7('0x10'))('api');var utils=require(_0x31c7('0x11'));var config=require(_0x31c7('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x31c7('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x55e67f,_0x3967a7){_0x3967a7=_0x3967a7||0xcc;return function(_0x5de326){if(_0x5de326){return _0x55e67f['sendStatus'](_0x3967a7);}return _0x55e67f['status'](_0x3967a7)['end']();};}function respondWithResult(_0x43fa38,_0x353f39){_0x353f39=_0x353f39||0xc8;return function(_0x4505b7){if(_0x4505b7){return _0x43fa38[_0x31c7('0x14')](_0x353f39)[_0x31c7('0x15')](_0x4505b7);}};}function respondWithFilteredResult(_0x122ef8,_0x53f1a5){return function(_0x2ce0e2){if(_0x2ce0e2){var _0x24c360=typeof _0x53f1a5[_0x31c7('0x16')]===_0x31c7('0x17')&&typeof _0x53f1a5[_0x31c7('0x18')]===_0x31c7('0x17');var _0x59ee93=_0x2ce0e2[_0x31c7('0x19')];var _0x3d43da=_0x24c360?0x0:_0x53f1a5[_0x31c7('0x16')];var _0xf8a195=_0x24c360?_0x2ce0e2[_0x31c7('0x19')]:_0x53f1a5['offset']+_0x53f1a5[_0x31c7('0x18')];var _0x7d345c;if(_0xf8a195>=_0x59ee93){_0xf8a195=_0x59ee93;_0x7d345c=0xc8;}else{_0x7d345c=0xce;}_0x122ef8['status'](_0x7d345c);return _0x122ef8['set'](_0x31c7('0x1a'),_0x3d43da+'-'+_0xf8a195+'/'+_0x59ee93)[_0x31c7('0x15')](_0x2ce0e2);}return null;};}function patchUpdates(_0x1f2695){return function(_0x25766f){try{jsonpatch[_0x31c7('0x1b')](_0x25766f,_0x1f2695,!![]);}catch(_0xcf4c7){return BPromise[_0x31c7('0x1c')](_0xcf4c7);}return _0x25766f[_0x31c7('0x1d')]();};}function saveUpdates(_0x305e65,_0x1d10a8){return function(_0x429e53){if(_0x429e53){return _0x429e53['update'](_0x305e65)[_0x31c7('0x1e')](function(_0x54eedf){return _0x54eedf;});}return null;};}function removeEntity(_0x22926f,_0x27d925){return function(_0x25f49b){if(_0x25f49b){return _0x25f49b[_0x31c7('0x1f')]()[_0x31c7('0x1e')](function(){_0x22926f[_0x31c7('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x279773,_0xa357d2){return function(_0x2c22b3){if(!_0x2c22b3){_0x279773['sendStatus'](0x194);}return _0x2c22b3;};}function handleError(_0x60ff22,_0x5b5bdc){_0x5b5bdc=_0x5b5bdc||0x1f4;return function(_0x36a72f){logger['error'](_0x36a72f['stack']);if(_0x36a72f[_0x31c7('0x20')]){delete _0x36a72f[_0x31c7('0x20')];}_0x60ff22[_0x31c7('0x14')](_0x5b5bdc)['send'](_0x36a72f);};}exports[_0x31c7('0x21')]=function(_0x24474e,_0x1caab6){var _0x5ab29e={},_0x35037f={},_0x2b15ce={'count':0x0,'rows':[]};var _0x23a73c=_[_0x31c7('0x22')](db[_0x31c7('0x23')][_0x31c7('0x24')],function(_0x26021c){return{'name':_0x26021c['fieldName'],'type':_0x26021c[_0x31c7('0x25')][_0x31c7('0x26')]};});_0x35037f[_0x31c7('0x27')]=_[_0x31c7('0x22')](_0x23a73c,'name');_0x35037f['query']=_['keys'](_0x24474e[_0x31c7('0x28')]);_0x35037f['filters']=_[_0x31c7('0x29')](_0x35037f['model'],_0x35037f[_0x31c7('0x28')]);_0x5ab29e[_0x31c7('0x2a')]=_[_0x31c7('0x29')](_0x35037f[_0x31c7('0x27')],qs[_0x31c7('0x2b')](_0x24474e[_0x31c7('0x28')][_0x31c7('0x2b')]));_0x5ab29e[_0x31c7('0x2a')]=_0x5ab29e[_0x31c7('0x2a')][_0x31c7('0x2c')]?_0x5ab29e[_0x31c7('0x2a')]:_0x35037f['model'];if(!_0x24474e[_0x31c7('0x28')][_0x31c7('0x2d')](_0x31c7('0x2e'))){_0x5ab29e[_0x31c7('0x18')]=qs['limit'](_0x24474e[_0x31c7('0x28')][_0x31c7('0x18')]);_0x5ab29e[_0x31c7('0x16')]=qs[_0x31c7('0x16')](_0x24474e[_0x31c7('0x28')]['offset']);}_0x5ab29e[_0x31c7('0x2f')]=qs[_0x31c7('0x30')](_0x24474e[_0x31c7('0x28')]['sort']);_0x5ab29e[_0x31c7('0x31')]=qs[_0x31c7('0x32')](_[_0x31c7('0x33')](_0x24474e[_0x31c7('0x28')],_0x35037f['filters']),_0x23a73c);if(_0x24474e[_0x31c7('0x28')][_0x31c7('0x34')]){_0x5ab29e[_0x31c7('0x31')]=_[_0x31c7('0x35')](_0x5ab29e[_0x31c7('0x31')],{'$or':_[_0x31c7('0x22')](_0x23a73c,function(_0x6e5633){if(_0x6e5633[_0x31c7('0x25')]!==_0x31c7('0x36')){var _0x21eb55={};_0x21eb55[_0x6e5633[_0x31c7('0x20')]]={'$like':'%'+_0x24474e['query'][_0x31c7('0x34')]+'%'};return _0x21eb55;}})});}_0x5ab29e=_['merge']({},_0x5ab29e,_0x24474e[_0x31c7('0x37')]);var _0x6007e={'where':_0x5ab29e[_0x31c7('0x31')]};return db[_0x31c7('0x23')][_0x31c7('0x19')](_0x6007e)['then'](function(_0x32c1bb){_0x2b15ce[_0x31c7('0x19')]=_0x32c1bb;if(_0x24474e[_0x31c7('0x28')][_0x31c7('0x38')]){_0x5ab29e[_0x31c7('0x39')]=[{'all':!![]}];}return db[_0x31c7('0x23')]['findAll'](_0x5ab29e);})[_0x31c7('0x1e')](function(_0xde37a){_0x2b15ce['rows']=_0xde37a;return _0x2b15ce;})['then'](respondWithFilteredResult(_0x1caab6,_0x5ab29e))[_0x31c7('0x3a')](handleError(_0x1caab6,null));};exports[_0x31c7('0x3b')]=function(_0x4922d8,_0x163099){var _0x10469c={'raw':![],'where':{'id':_0x4922d8[_0x31c7('0x3c')]['id']}},_0x1ae423={};_0x1ae423['model']=_['keys'](db['SalesforceAccount'][_0x31c7('0x24')]);_0x1ae423[_0x31c7('0x28')]=_[_0x31c7('0x3d')](_0x4922d8['query']);_0x1ae423[_0x31c7('0x32')]=_['intersection'](_0x1ae423[_0x31c7('0x27')],_0x1ae423[_0x31c7('0x28')]);_0x10469c[_0x31c7('0x2a')]=_[_0x31c7('0x29')](_0x1ae423[_0x31c7('0x27')],qs[_0x31c7('0x2b')](_0x4922d8[_0x31c7('0x28')][_0x31c7('0x2b')]));_0x10469c['attributes']=_0x10469c['attributes'][_0x31c7('0x2c')]?_0x10469c['attributes']:_0x1ae423[_0x31c7('0x27')];if(_0x4922d8[_0x31c7('0x28')][_0x31c7('0x38')]){_0x10469c[_0x31c7('0x39')]=[{'all':!![]}];}_0x10469c=_['merge']({},_0x10469c,_0x4922d8[_0x31c7('0x37')]);return db['SalesforceAccount'][_0x31c7('0x3e')](_0x10469c)['then'](handleEntityNotFound(_0x163099,null))[_0x31c7('0x1e')](respondWithResult(_0x163099,null))[_0x31c7('0x3a')](handleError(_0x163099,null));};exports[_0x31c7('0x3f')]=function(_0x42c181,_0x21db0b){return db[_0x31c7('0x23')][_0x31c7('0x3f')](_0x42c181['body'],{})[_0x31c7('0x1e')](respondWithResult(_0x21db0b,0xc9))[_0x31c7('0x3a')](handleError(_0x21db0b,null));};exports[_0x31c7('0x40')]=function(_0x5c851f,_0x56c45e){if(_0x5c851f[_0x31c7('0x41')]['id']){delete _0x5c851f['body']['id'];}return db[_0x31c7('0x23')][_0x31c7('0x3e')]({'where':{'id':_0x5c851f['params']['id']}})[_0x31c7('0x1e')](handleEntityNotFound(_0x56c45e,null))[_0x31c7('0x1e')](saveUpdates(_0x5c851f['body'],null))[_0x31c7('0x1e')](respondWithResult(_0x56c45e,null))['catch'](handleError(_0x56c45e,null));};exports[_0x31c7('0x1f')]=function(_0x4cb508,_0x1f529a){return db['SalesforceAccount']['find']({'where':{'id':_0x4cb508[_0x31c7('0x3c')]['id']}})['then'](handleEntityNotFound(_0x1f529a,null))['then'](removeEntity(_0x1f529a,null))[_0x31c7('0x3a')](handleError(_0x1f529a,null));};exports[_0x31c7('0x42')]=function(_0x39b8c1,_0x1b2b5b,_0x4903ba){var _0x3ef084={};var _0xd7180c={};var _0x1c7f94;var _0x17a323;return db['SalesforceAccount']['findOne']({'where':{'id':_0x39b8c1[_0x31c7('0x3c')]['id']}})['then'](handleEntityNotFound(_0x1b2b5b,null))[_0x31c7('0x1e')](function(_0x5e7511){if(_0x5e7511){_0x1c7f94=_0x5e7511;_0xd7180c['model']=_[_0x31c7('0x3d')](db[_0x31c7('0x43')][_0x31c7('0x24')]);_0xd7180c[_0x31c7('0x28')]=_[_0x31c7('0x3d')](_0x39b8c1[_0x31c7('0x28')]);_0xd7180c[_0x31c7('0x32')]=_[_0x31c7('0x29')](_0xd7180c['model'],_0xd7180c[_0x31c7('0x28')]);_0x3ef084['attributes']=_['intersection'](_0xd7180c['model'],qs[_0x31c7('0x2b')](_0x39b8c1['query'][_0x31c7('0x2b')]));_0x3ef084['attributes']=_0x3ef084[_0x31c7('0x2a')][_0x31c7('0x2c')]?_0x3ef084['attributes']:_0xd7180c[_0x31c7('0x27')];_0x3ef084[_0x31c7('0x2f')]=qs[_0x31c7('0x30')](_0x39b8c1[_0x31c7('0x28')][_0x31c7('0x30')]);_0x3ef084['where']=qs[_0x31c7('0x32')](_[_0x31c7('0x33')](_0x39b8c1[_0x31c7('0x28')],_0xd7180c[_0x31c7('0x32')]));if(_0x39b8c1[_0x31c7('0x28')]['filter']){_0x3ef084['where']=_[_0x31c7('0x35')](_0x3ef084[_0x31c7('0x31')],{'$or':_[_0x31c7('0x22')](_0x3ef084[_0x31c7('0x2a')],function(_0x68dcfa){var _0x30bbfe={};_0x30bbfe[_0x68dcfa]={'$like':'%'+_0x39b8c1[_0x31c7('0x28')][_0x31c7('0x34')]+'%'};return _0x30bbfe;})});}_0x3ef084=_[_0x31c7('0x35')]({},_0x3ef084,_0x39b8c1[_0x31c7('0x37')]);return _0x1c7f94['getConfigurations'](_0x3ef084);}})[_0x31c7('0x1e')](function(_0x2fe61b){if(_0x2fe61b){_0x17a323=_0x2fe61b['length'];if(!_0x39b8c1[_0x31c7('0x28')][_0x31c7('0x2d')]('nolimit')){_0x3ef084[_0x31c7('0x18')]=qs['limit'](_0x39b8c1[_0x31c7('0x28')][_0x31c7('0x18')]);_0x3ef084['offset']=qs[_0x31c7('0x16')](_0x39b8c1[_0x31c7('0x28')][_0x31c7('0x16')]);}return _0x1c7f94[_0x31c7('0x42')](_0x3ef084);}})[_0x31c7('0x1e')](function(_0x56e437){if(_0x56e437){return _0x56e437?{'count':_0x17a323,'rows':_0x56e437}:null;}})[_0x31c7('0x1e')](respondWithResult(_0x1b2b5b,null))[_0x31c7('0x3a')](handleError(_0x1b2b5b,null));};exports[_0x31c7('0x44')]=function(_0x303e39,_0x17c9e7,_0x132fb9){if(_0x303e39[_0x31c7('0x41')]['id']){delete _0x303e39[_0x31c7('0x41')]['id'];}return db[_0x31c7('0x23')]['findOne']({'where':{'id':_0x303e39['params']['id']}})[_0x31c7('0x1e')](handleEntityNotFound(_0x17c9e7,null))[_0x31c7('0x1e')](function(_0x49cfc5){if(_0x49cfc5){_0x303e39[_0x31c7('0x41')][_0x31c7('0x45')]=_0x49cfc5['id'];_0x303e39[_0x31c7('0x41')][_0x31c7('0x46')]=integrations[_0x31c7('0x47')](_0x303e39[_0x31c7('0x41')][_0x31c7('0x48')],_0x303e39[_0x31c7('0x41')][_0x31c7('0x25')]);_0x303e39['body'][_0x31c7('0x49')]=integrations[_0x31c7('0x4a')](_0x303e39[_0x31c7('0x41')][_0x31c7('0x48')],_0x303e39[_0x31c7('0x41')]['type']);return db[_0x31c7('0x43')][_0x31c7('0x3f')](_0x303e39[_0x31c7('0x41')],{'include':[{'model':db[_0x31c7('0x4b')],'as':_0x31c7('0x46')},{'model':db[_0x31c7('0x4b')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x17c9e7,null))[_0x31c7('0x3a')](handleError(_0x17c9e7,null));};exports[_0x31c7('0x4c')]=function(_0x287880,_0xb4fee4,_0x16decc){var _0x1efb54;var _0x21d418='';var _0x3b5fde='Task';return db[_0x31c7('0x23')][_0x31c7('0x4d')]({'where':{'id':_0x287880[_0x31c7('0x3c')]['id']},'attributes':['id',_0x31c7('0x4e'),_0x31c7('0x4f'),_0x31c7('0x50'),'username',_0x31c7('0x51'),_0x31c7('0x52')]})[_0x31c7('0x1e')](handleEntityNotFound(_0xb4fee4,null))[_0x31c7('0x1e')](function(_0x5d4e28){if(_0x5d4e28){_0x21d418=_0x5d4e28[_0x31c7('0x4e')];var _0x2cd53b=_0x21d418['slice'](-0x1);if(_0x2cd53b==='/'){_0x21d418=_0x21d418[_0x31c7('0x53')](0x0,_0x21d418[_0x31c7('0x54')](_0x2cd53b));}_0x1efb54=new jsforce[(_0x31c7('0x55'))]({'oauth2':{'loginUrl':_0x21d418,'clientId':_0x5d4e28['clientId'],'clientSecret':_0x5d4e28['clientSecret']}});return _0x1efb54[_0x31c7('0x56')](_0x5d4e28[_0x31c7('0x57')],_0x5d4e28[_0x31c7('0x51')][_0x31c7('0x58')](_0x5d4e28[_0x31c7('0x52')]));}})[_0x31c7('0x1e')](function(_0x11691d){if(_0x11691d){if(!_[_0x31c7('0x59')](_0x287880[_0x31c7('0x28')]['ticketType'])){_0x3b5fde=_0x287880[_0x31c7('0x28')][_0x31c7('0x5a')];}return _0x1efb54[_0x31c7('0x5b')](_0x3b5fde)['describe']();}})[_0x31c7('0x1e')](function(_0x257889){var _0x2f1bd5=['OwnerId','ActivityDate',_0x31c7('0x5c'),_0x31c7('0x5d'),'Subject',_0x31c7('0x5e')];var _0x1104a7=[_0x31c7('0x5f'),'int','picklist',_0x31c7('0x60'),'email',_0x31c7('0x61'),_0x31c7('0x62')];if(_0x257889){_[_0x31c7('0x63')](_0x257889[_0x31c7('0x2b')],function(_0x24e5e0){return _0x2f1bd5['includes'](_0x24e5e0['name'])||!_0x1104a7['includes'](_0x24e5e0['type']);});return{'count':_0x257889[_0x31c7('0x2b')][_0x31c7('0x2c')],'rows':_[_0x31c7('0x22')](_0x257889[_0x31c7('0x2b')],function(_0x338f95){return{'id':_0x338f95[_0x31c7('0x20')],'name':_0x338f95[_0x31c7('0x64')],'custom':_0x338f95['custom'],'options':_0x338f95['picklistValues'][_0x31c7('0x2c')]>0x0?_[_0x31c7('0x22')](_0x338f95[_0x31c7('0x65')],function(_0x160ed0){return{'name':_0x160ed0[_0x31c7('0x64')],'value':_0x160ed0[_0x31c7('0x66')]};}):_0x338f95['type']=='boolean'?[{'name':_0x31c7('0x67'),'value':_0x31c7('0x68')},{'name':_0x31c7('0x69'),'value':_0x31c7('0x6a')}]:[]};})};}})[_0x31c7('0x1e')](respondWithResult(_0xb4fee4,null))['catch'](function(_0x4d245a){var _0x5d8689=_0x287880[_0x31c7('0x28')]['test']?0x1f4:_0x4d245a[_0x31c7('0x6b')]||0x1f4;logger[_0x31c7('0x6c')](_0x31c7('0x6d'),_0x31c7('0x4c'),_0x5d8689,JSON[_0x31c7('0x6e')](_0x4d245a));delete _0x4d245a[_0x31c7('0x20')];if(_0x5d8689===0x191){_0x5d8689=0x190;}_0xb4fee4[_0x31c7('0x14')](_0x5d8689)[_0x31c7('0x6f')](_0x287880[_0x31c7('0x28')][_0x31c7('0x70')]?{'message':_0x31c7('0x71'),'statusCode':_0x4d245a[_0x31c7('0x6b')]}:_0x4d245a);});};
\ No newline at end of file
+var _0xad38=['destroy','stack','name','send','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','SalesforceAccount','includeAll','include','catch','show','params','rawAttributes','length','options','find','create','body','getConfigurations','order','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','Task','remoteUri','clientId','username','password','securityToken','substring','lastIndexOf','Connection','clientSecret','login','concat','isNil','ticketType','sobject','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','int','boolean','email','phone','remove','label','custom','picklistValues','value','True','true','false','test','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','../../components/integrations/configuration','end','status','json','limit','undefined','count','offset','Content-Range','reject','save','update','then'];(function(_0x51ab83,_0x2721b9){var _0x14b6de=function(_0x243483){while(--_0x243483){_0x51ab83['push'](_0x51ab83['shift']());}};_0x14b6de(++_0x2721b9);}(_0xad38,0x149));var _0x8ad3=function(_0xe58887,_0x51ae5e){_0xe58887=_0xe58887-0x0;var _0x263605=_0xad38[_0xe58887];return _0x263605;};'use strict';var emlformat=require(_0x8ad3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8ad3('0x1'));var jsonpatch=require(_0x8ad3('0x2'));var rp=require(_0x8ad3('0x3'));var moment=require(_0x8ad3('0x4'));var BPromise=require(_0x8ad3('0x5'));var Mustache=require(_0x8ad3('0x6'));var util=require(_0x8ad3('0x7'));var path=require(_0x8ad3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8ad3('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ad3('0xa'));var squel=require(_0x8ad3('0xb'));var crypto=require('crypto');var jsforce=require(_0x8ad3('0xc'));var deskjs=require(_0x8ad3('0xd'));var toCsv=require(_0x8ad3('0xe'));var querystring=require(_0x8ad3('0xf'));var Papa=require(_0x8ad3('0x10'));var Redis=require('ioredis');var authService=require(_0x8ad3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8ad3('0x12'));var hardwareService=require(_0x8ad3('0x13'));var logger=require(_0x8ad3('0x14'))(_0x8ad3('0x15'));var utils=require('../../config/utils');var config=require(_0x8ad3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8ad3('0x17'))['db'];var integrations=require(_0x8ad3('0x18'));function respondWithStatusCode(_0x4c9fa3,_0xc85320){_0xc85320=_0xc85320||0xcc;return function(_0x2ec63c){if(_0x2ec63c){return _0x4c9fa3['sendStatus'](_0xc85320);}return _0x4c9fa3['status'](_0xc85320)[_0x8ad3('0x19')]();};}function respondWithResult(_0x3dcc85,_0x65cec8){_0x65cec8=_0x65cec8||0xc8;return function(_0x153041){if(_0x153041){return _0x3dcc85[_0x8ad3('0x1a')](_0x65cec8)[_0x8ad3('0x1b')](_0x153041);}};}function respondWithFilteredResult(_0x45f724,_0x33b92d){return function(_0x5f3fae){if(_0x5f3fae){var _0x582a97=typeof _0x33b92d['offset']==='undefined'&&typeof _0x33b92d[_0x8ad3('0x1c')]===_0x8ad3('0x1d');var _0x13c469=_0x5f3fae[_0x8ad3('0x1e')];var _0x19c721=_0x582a97?0x0:_0x33b92d[_0x8ad3('0x1f')];var _0x120af3=_0x582a97?_0x5f3fae[_0x8ad3('0x1e')]:_0x33b92d[_0x8ad3('0x1f')]+_0x33b92d[_0x8ad3('0x1c')];var _0x21e648;if(_0x120af3>=_0x13c469){_0x120af3=_0x13c469;_0x21e648=0xc8;}else{_0x21e648=0xce;}_0x45f724[_0x8ad3('0x1a')](_0x21e648);return _0x45f724['set'](_0x8ad3('0x20'),_0x19c721+'-'+_0x120af3+'/'+_0x13c469)[_0x8ad3('0x1b')](_0x5f3fae);}return null;};}function patchUpdates(_0x2371e2){return function(_0x4d4bf4){try{jsonpatch['apply'](_0x4d4bf4,_0x2371e2,!![]);}catch(_0x24e8f0){return BPromise[_0x8ad3('0x21')](_0x24e8f0);}return _0x4d4bf4[_0x8ad3('0x22')]();};}function saveUpdates(_0x3f5b35,_0x2ad9d9){return function(_0x65dfac){if(_0x65dfac){return _0x65dfac[_0x8ad3('0x23')](_0x3f5b35)[_0x8ad3('0x24')](function(_0xda7777){return _0xda7777;});}return null;};}function removeEntity(_0x26d9e2,_0x353409){return function(_0x534881){if(_0x534881){return _0x534881[_0x8ad3('0x25')]()['then'](function(){_0x26d9e2['status'](0xcc)[_0x8ad3('0x19')]();});}};}function handleEntityNotFound(_0x5a9f34,_0x40da69){return function(_0x3db264){if(!_0x3db264){_0x5a9f34['sendStatus'](0x194);}return _0x3db264;};}function handleError(_0x48c836,_0x557f69){_0x557f69=_0x557f69||0x1f4;return function(_0x38daf7){logger['error'](_0x38daf7[_0x8ad3('0x26')]);if(_0x38daf7['name']){delete _0x38daf7[_0x8ad3('0x27')];}_0x48c836[_0x8ad3('0x1a')](_0x557f69)[_0x8ad3('0x28')](_0x38daf7);};}exports['index']=function(_0x134eff,_0x52ebf5){var _0x106cbb={},_0xa8d8e2={},_0x362a1d={'count':0x0,'rows':[]};var _0x173520=_['map'](db['SalesforceAccount']['rawAttributes'],function(_0x3e8ad3){return{'name':_0x3e8ad3[_0x8ad3('0x29')],'type':_0x3e8ad3[_0x8ad3('0x2a')][_0x8ad3('0x2b')]};});_0xa8d8e2[_0x8ad3('0x2c')]=_[_0x8ad3('0x2d')](_0x173520,_0x8ad3('0x27'));_0xa8d8e2[_0x8ad3('0x2e')]=_[_0x8ad3('0x2f')](_0x134eff[_0x8ad3('0x2e')]);_0xa8d8e2[_0x8ad3('0x30')]=_[_0x8ad3('0x31')](_0xa8d8e2[_0x8ad3('0x2c')],_0xa8d8e2['query']);_0x106cbb[_0x8ad3('0x32')]=_[_0x8ad3('0x31')](_0xa8d8e2[_0x8ad3('0x2c')],qs['fields'](_0x134eff['query'][_0x8ad3('0x33')]));_0x106cbb['attributes']=_0x106cbb[_0x8ad3('0x32')]['length']?_0x106cbb[_0x8ad3('0x32')]:_0xa8d8e2[_0x8ad3('0x2c')];if(!_0x134eff[_0x8ad3('0x2e')][_0x8ad3('0x34')](_0x8ad3('0x35'))){_0x106cbb[_0x8ad3('0x1c')]=qs[_0x8ad3('0x1c')](_0x134eff[_0x8ad3('0x2e')]['limit']);_0x106cbb['offset']=qs['offset'](_0x134eff[_0x8ad3('0x2e')]['offset']);}_0x106cbb['order']=qs[_0x8ad3('0x36')](_0x134eff['query'][_0x8ad3('0x36')]);_0x106cbb['where']=qs[_0x8ad3('0x30')](_[_0x8ad3('0x37')](_0x134eff[_0x8ad3('0x2e')],_0xa8d8e2['filters']),_0x173520);if(_0x134eff[_0x8ad3('0x2e')][_0x8ad3('0x38')]){_0x106cbb[_0x8ad3('0x39')]=_[_0x8ad3('0x3a')](_0x106cbb['where'],{'$or':_[_0x8ad3('0x2d')](_0x173520,function(_0x3eebc6){if(_0x3eebc6[_0x8ad3('0x2a')]!==_0x8ad3('0x3b')){var _0x17eddd={};_0x17eddd[_0x3eebc6['name']]={'$like':'%'+_0x134eff[_0x8ad3('0x2e')][_0x8ad3('0x38')]+'%'};return _0x17eddd;}})});}_0x106cbb=_[_0x8ad3('0x3a')]({},_0x106cbb,_0x134eff['options']);var _0x5aa786={'where':_0x106cbb[_0x8ad3('0x39')]};return db[_0x8ad3('0x3c')]['count'](_0x5aa786)[_0x8ad3('0x24')](function(_0x3d9be8){_0x362a1d[_0x8ad3('0x1e')]=_0x3d9be8;if(_0x134eff['query'][_0x8ad3('0x3d')]){_0x106cbb[_0x8ad3('0x3e')]=[{'all':!![]}];}return db[_0x8ad3('0x3c')]['findAll'](_0x106cbb);})['then'](function(_0x11e09e){_0x362a1d['rows']=_0x11e09e;return _0x362a1d;})['then'](respondWithFilteredResult(_0x52ebf5,_0x106cbb))[_0x8ad3('0x3f')](handleError(_0x52ebf5,null));};exports[_0x8ad3('0x40')]=function(_0x34e416,_0x3eba26){var _0x2c7906={'raw':![],'where':{'id':_0x34e416[_0x8ad3('0x41')]['id']}},_0x1935ca={};_0x1935ca[_0x8ad3('0x2c')]=_['keys'](db[_0x8ad3('0x3c')][_0x8ad3('0x42')]);_0x1935ca[_0x8ad3('0x2e')]=_[_0x8ad3('0x2f')](_0x34e416[_0x8ad3('0x2e')]);_0x1935ca['filters']=_['intersection'](_0x1935ca[_0x8ad3('0x2c')],_0x1935ca[_0x8ad3('0x2e')]);_0x2c7906['attributes']=_[_0x8ad3('0x31')](_0x1935ca[_0x8ad3('0x2c')],qs[_0x8ad3('0x33')](_0x34e416['query'][_0x8ad3('0x33')]));_0x2c7906[_0x8ad3('0x32')]=_0x2c7906[_0x8ad3('0x32')][_0x8ad3('0x43')]?_0x2c7906['attributes']:_0x1935ca['model'];if(_0x34e416[_0x8ad3('0x2e')][_0x8ad3('0x3d')]){_0x2c7906[_0x8ad3('0x3e')]=[{'all':!![]}];}_0x2c7906=_[_0x8ad3('0x3a')]({},_0x2c7906,_0x34e416[_0x8ad3('0x44')]);return db[_0x8ad3('0x3c')][_0x8ad3('0x45')](_0x2c7906)[_0x8ad3('0x24')](handleEntityNotFound(_0x3eba26,null))['then'](respondWithResult(_0x3eba26,null))[_0x8ad3('0x3f')](handleError(_0x3eba26,null));};exports[_0x8ad3('0x46')]=function(_0x5678c8,_0x4e23f4){return db[_0x8ad3('0x3c')]['create'](_0x5678c8['body'],{})[_0x8ad3('0x24')](respondWithResult(_0x4e23f4,0xc9))[_0x8ad3('0x3f')](handleError(_0x4e23f4,null));};exports[_0x8ad3('0x23')]=function(_0x15f583,_0xf0134c){if(_0x15f583[_0x8ad3('0x47')]['id']){delete _0x15f583[_0x8ad3('0x47')]['id'];}return db[_0x8ad3('0x3c')]['find']({'where':{'id':_0x15f583[_0x8ad3('0x41')]['id']}})['then'](handleEntityNotFound(_0xf0134c,null))[_0x8ad3('0x24')](saveUpdates(_0x15f583['body'],null))[_0x8ad3('0x24')](respondWithResult(_0xf0134c,null))['catch'](handleError(_0xf0134c,null));};exports[_0x8ad3('0x25')]=function(_0x108cf0,_0x300311){return db[_0x8ad3('0x3c')][_0x8ad3('0x45')]({'where':{'id':_0x108cf0[_0x8ad3('0x41')]['id']}})[_0x8ad3('0x24')](handleEntityNotFound(_0x300311,null))['then'](removeEntity(_0x300311,null))[_0x8ad3('0x3f')](handleError(_0x300311,null));};exports[_0x8ad3('0x48')]=function(_0x554498,_0x1d7c84,_0xad2f54){var _0x15a4e0={};var _0x4a6064={};var _0x30bddf;var _0x31fec8;return db['SalesforceAccount']['findOne']({'where':{'id':_0x554498[_0x8ad3('0x41')]['id']}})[_0x8ad3('0x24')](handleEntityNotFound(_0x1d7c84,null))[_0x8ad3('0x24')](function(_0x90a175){if(_0x90a175){_0x30bddf=_0x90a175;_0x4a6064[_0x8ad3('0x2c')]=_[_0x8ad3('0x2f')](db['SalesforceConfiguration'][_0x8ad3('0x42')]);_0x4a6064[_0x8ad3('0x2e')]=_['keys'](_0x554498[_0x8ad3('0x2e')]);_0x4a6064[_0x8ad3('0x30')]=_[_0x8ad3('0x31')](_0x4a6064[_0x8ad3('0x2c')],_0x4a6064[_0x8ad3('0x2e')]);_0x15a4e0[_0x8ad3('0x32')]=_[_0x8ad3('0x31')](_0x4a6064[_0x8ad3('0x2c')],qs[_0x8ad3('0x33')](_0x554498[_0x8ad3('0x2e')][_0x8ad3('0x33')]));_0x15a4e0[_0x8ad3('0x32')]=_0x15a4e0[_0x8ad3('0x32')][_0x8ad3('0x43')]?_0x15a4e0['attributes']:_0x4a6064[_0x8ad3('0x2c')];_0x15a4e0[_0x8ad3('0x49')]=qs[_0x8ad3('0x36')](_0x554498[_0x8ad3('0x2e')][_0x8ad3('0x36')]);_0x15a4e0['where']=qs['filters'](_[_0x8ad3('0x37')](_0x554498[_0x8ad3('0x2e')],_0x4a6064[_0x8ad3('0x30')]));if(_0x554498[_0x8ad3('0x2e')]['filter']){_0x15a4e0['where']=_[_0x8ad3('0x3a')](_0x15a4e0[_0x8ad3('0x39')],{'$or':_['map'](_0x15a4e0['attributes'],function(_0x438431){var _0x26f810={};_0x26f810[_0x438431]={'$like':'%'+_0x554498[_0x8ad3('0x2e')]['filter']+'%'};return _0x26f810;})});}_0x15a4e0=_[_0x8ad3('0x3a')]({},_0x15a4e0,_0x554498[_0x8ad3('0x44')]);return _0x30bddf[_0x8ad3('0x48')](_0x15a4e0);}})[_0x8ad3('0x24')](function(_0x1600aa){if(_0x1600aa){_0x31fec8=_0x1600aa[_0x8ad3('0x43')];if(!_0x554498['query'][_0x8ad3('0x34')](_0x8ad3('0x35'))){_0x15a4e0[_0x8ad3('0x1c')]=qs[_0x8ad3('0x1c')](_0x554498['query'][_0x8ad3('0x1c')]);_0x15a4e0['offset']=qs[_0x8ad3('0x1f')](_0x554498[_0x8ad3('0x2e')][_0x8ad3('0x1f')]);}return _0x30bddf['getConfigurations'](_0x15a4e0);}})[_0x8ad3('0x24')](function(_0x4ab593){if(_0x4ab593){return _0x4ab593?{'count':_0x31fec8,'rows':_0x4ab593}:null;}})['then'](respondWithResult(_0x1d7c84,null))[_0x8ad3('0x3f')](handleError(_0x1d7c84,null));};exports[_0x8ad3('0x4a')]=function(_0x27cec8,_0x5ac8a7,_0x2248d0){if(_0x27cec8[_0x8ad3('0x47')]['id']){delete _0x27cec8[_0x8ad3('0x47')]['id'];}return db[_0x8ad3('0x3c')][_0x8ad3('0x4b')]({'where':{'id':_0x27cec8[_0x8ad3('0x41')]['id']}})[_0x8ad3('0x24')](handleEntityNotFound(_0x5ac8a7,null))[_0x8ad3('0x24')](function(_0x232058){if(_0x232058){_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x4c')]=_0x232058['id'];_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x4d')]=integrations[_0x8ad3('0x4e')](_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x4f')],_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x2a')]);_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x50')]=integrations[_0x8ad3('0x51')](_0x27cec8['body']['channel'],_0x27cec8[_0x8ad3('0x47')][_0x8ad3('0x2a')]);return db[_0x8ad3('0x52')][_0x8ad3('0x46')](_0x27cec8[_0x8ad3('0x47')],{'include':[{'model':db[_0x8ad3('0x53')],'as':_0x8ad3('0x4d')},{'model':db[_0x8ad3('0x53')],'as':_0x8ad3('0x50')}]});}return null;})[_0x8ad3('0x24')](respondWithResult(_0x5ac8a7,null))[_0x8ad3('0x3f')](handleError(_0x5ac8a7,null));};exports['getFields']=function(_0x5efece,_0x4e06ff,_0x33b84d){var _0x2826c7;var _0x5a0453='';var _0x280407=_0x8ad3('0x54');return db['SalesforceAccount'][_0x8ad3('0x4b')]({'where':{'id':_0x5efece[_0x8ad3('0x41')]['id']},'attributes':['id',_0x8ad3('0x55'),_0x8ad3('0x56'),'clientSecret',_0x8ad3('0x57'),_0x8ad3('0x58'),_0x8ad3('0x59')]})[_0x8ad3('0x24')](handleEntityNotFound(_0x4e06ff,null))[_0x8ad3('0x24')](function(_0x31af9c){if(_0x31af9c){_0x5a0453=_0x31af9c[_0x8ad3('0x55')];var _0x4a19b2=_0x5a0453['slice'](-0x1);if(_0x4a19b2==='/'){_0x5a0453=_0x5a0453[_0x8ad3('0x5a')](0x0,_0x5a0453[_0x8ad3('0x5b')](_0x4a19b2));}_0x2826c7=new jsforce[(_0x8ad3('0x5c'))]({'oauth2':{'loginUrl':_0x5a0453,'clientId':_0x31af9c[_0x8ad3('0x56')],'clientSecret':_0x31af9c[_0x8ad3('0x5d')]}});return _0x2826c7[_0x8ad3('0x5e')](_0x31af9c['username'],_0x31af9c[_0x8ad3('0x58')][_0x8ad3('0x5f')](_0x31af9c[_0x8ad3('0x59')]));}})['then'](function(_0x49110c){if(_0x49110c){if(!_[_0x8ad3('0x60')](_0x5efece[_0x8ad3('0x2e')][_0x8ad3('0x61')])){_0x280407=_0x5efece['query'][_0x8ad3('0x61')];}return _0x2826c7[_0x8ad3('0x62')](_0x280407)['describe']();}})[_0x8ad3('0x24')](function(_0x5b933c){var _0x57bc1e=['OwnerId',_0x8ad3('0x63'),_0x8ad3('0x64'),_0x8ad3('0x65'),_0x8ad3('0x66'),_0x8ad3('0x67')];var _0x4f0deb=['string',_0x8ad3('0x68'),'picklist',_0x8ad3('0x69'),_0x8ad3('0x6a'),'textarea',_0x8ad3('0x6b')];if(_0x5b933c){_[_0x8ad3('0x6c')](_0x5b933c[_0x8ad3('0x33')],function(_0x387fdf){return _0x57bc1e['includes'](_0x387fdf['name'])||!_0x4f0deb['includes'](_0x387fdf['type']);});return{'count':_0x5b933c['fields']['length'],'rows':_[_0x8ad3('0x2d')](_0x5b933c[_0x8ad3('0x33')],function(_0x42ab05){return{'id':_0x42ab05[_0x8ad3('0x27')],'name':_0x42ab05[_0x8ad3('0x6d')],'custom':_0x42ab05[_0x8ad3('0x6e')],'options':_0x42ab05[_0x8ad3('0x6f')][_0x8ad3('0x43')]>0x0?_[_0x8ad3('0x2d')](_0x42ab05[_0x8ad3('0x6f')],function(_0x3433b0){return{'name':_0x3433b0['label'],'value':_0x3433b0[_0x8ad3('0x70')]};}):_0x42ab05['type']=='boolean'?[{'name':_0x8ad3('0x71'),'value':_0x8ad3('0x72')},{'name':'False','value':_0x8ad3('0x73')}]:[]};})};}})[_0x8ad3('0x24')](respondWithResult(_0x4e06ff,null))[_0x8ad3('0x3f')](function(_0x357fd9){var _0x283b87=_0x5efece[_0x8ad3('0x2e')][_0x8ad3('0x74')]?0x1f4:_0x357fd9['statusCode']||0x1f4;logger[_0x8ad3('0x75')](_0x8ad3('0x76'),_0x8ad3('0x77'),_0x283b87,JSON[_0x8ad3('0x78')](_0x357fd9));delete _0x357fd9['name'];if(_0x283b87===0x191){_0x283b87=0x190;}_0x4e06ff['status'](_0x283b87)[_0x8ad3('0x28')](_0x5efece[_0x8ad3('0x2e')][_0x8ad3('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x357fd9[_0x8ad3('0x79')]}:_0x357fd9);});};
\ No newline at end of file
index 5d6b4af..90a4a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x194b=['moment','bluebird','request-promise','path','rimraf','exports','SalesforceAccount','int_salesforce_accounts','util','../../config/logger'];(function(_0x53502a,_0x14a2bd){var _0x3e719f=function(_0x2861a9){while(--_0x2861a9){_0x53502a['push'](_0x53502a['shift']());}};_0x3e719f(++_0x14a2bd);}(_0x194b,0x134));var _0xb194=function(_0x565c2e,_0x4479e1){_0x565c2e=_0x565c2e-0x0;var _0x56d830=_0x194b[_0x565c2e];return _0x56d830;};'use strict';var _=require('lodash');var util=require(_0xb194('0x0'));var logger=require(_0xb194('0x1'))('api');var moment=require(_0xb194('0x2'));var BPromise=require(_0xb194('0x3'));var rp=require(_0xb194('0x4'));var fs=require('fs');var path=require(_0xb194('0x5'));var rimraf=require(_0xb194('0x6'));var config=require('../../config/environment');var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xb194('0x7')]=function(_0x51e5f5,_0x2d2c59){return _0x51e5f5['define'](_0xb194('0x8'),attributes,{'tableName':_0xb194('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb620=['request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','exports','SalesforceAccount','int_salesforce_accounts','lodash','../../config/logger','api','bluebird'];(function(_0x2bdfe3,_0x1d0469){var _0x3423b2=function(_0x506bd9){while(--_0x506bd9){_0x2bdfe3['push'](_0x2bdfe3['shift']());}};_0x3423b2(++_0x1d0469);}(_0xb620,0x1a0));var _0x0b62=function(_0x336bca,_0x18ab6c){_0x336bca=_0x336bca-0x0;var _0x1a760c=_0xb620[_0x336bca];return _0x1a760c;};'use strict';var _=require(_0x0b62('0x0'));var util=require('util');var logger=require(_0x0b62('0x1'))(_0x0b62('0x2'));var moment=require('moment');var BPromise=require(_0x0b62('0x3'));var rp=require(_0x0b62('0x4'));var fs=require('fs');var path=require(_0x0b62('0x5'));var rimraf=require(_0x0b62('0x6'));var config=require(_0x0b62('0x7'));var attributes=require(_0x0b62('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x0b62('0x9')]=function(_0xee4338,_0x481fef){return _0xee4338['define'](_0x0b62('0xa'),attributes,{'tableName':_0x0b62('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 721f479..b1dedd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e69=['attributes','include','map','model','GetSalesforceAccount','ShowSalesforceAccount','find','lodash','util','moment','../../mysqldb','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','stringify','error','code','message','result','catch','SalesforceAccount','findAll','options','raw','where'];(function(_0x5a3d41,_0x300e94){var _0x3520dc=function(_0x18198b){while(--_0x18198b){_0x5a3d41['push'](_0x5a3d41['shift']());}};_0x3520dc(++_0x300e94);}(_0x9e69,0x15b));var _0x99e6=function(_0x26b85f,_0x19ab33){_0x26b85f=_0x26b85f-0x0;var _0x36acb0=_0x9e69[_0x26b85f];return _0x36acb0;};'use strict';var _=require(_0x99e6('0x0'));var util=require(_0x99e6('0x1'));var moment=require(_0x99e6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99e6('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x99e6('0x4'));var config=require(_0x99e6('0x5'));var jayson=require(_0x99e6('0x6'));var client=jayson[_0x99e6('0x7')][_0x99e6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x588338,_0x29b860,_0x374812){return new BPromise(function(_0x264827,_0x5a0e11){return client[_0x99e6('0x9')](_0x588338,_0x374812)[_0x99e6('0xa')](function(_0x397a3f){logger[_0x99e6('0xb')](_0x99e6('0xc'),_0x29b860,_0x99e6('0xd'));logger[_0x99e6('0xe')](_0x99e6('0xf'),_0x29b860,_0x99e6('0xd'),JSON[_0x99e6('0x10')](_0x397a3f));if(_0x397a3f['error']){if(_0x397a3f[_0x99e6('0x11')][_0x99e6('0x12')]===0x1f4){logger[_0x99e6('0x11')](_0x99e6('0xc'),_0x29b860,_0x397a3f['error'][_0x99e6('0x13')]);return _0x5a0e11(_0x397a3f[_0x99e6('0x11')][_0x99e6('0x13')]);}logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x29b860,_0x397a3f[_0x99e6('0x11')][_0x99e6('0x13')]);return _0x264827(_0x397a3f[_0x99e6('0x11')][_0x99e6('0x13')]);}else{logger[_0x99e6('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x29b860,_0x99e6('0xd'));_0x264827(_0x397a3f[_0x99e6('0x14')]['message']);}})[_0x99e6('0x15')](function(_0x24578d){logger['error'](_0x99e6('0xc'),_0x29b860,_0x24578d);_0x5a0e11(_0x24578d);});});}exports['GetSalesforceAccount']=function(_0x57b091){var _0x2423a2=this;return new Promise(function(_0x30702d,_0x503f0a){return db[_0x99e6('0x16')][_0x99e6('0x17')]({'raw':_0x57b091[_0x99e6('0x18')]?_0x57b091[_0x99e6('0x18')][_0x99e6('0x19')]===undefined?!![]:![]:!![],'where':_0x57b091[_0x99e6('0x18')]?_0x57b091[_0x99e6('0x18')][_0x99e6('0x1a')]||null:null,'attributes':_0x57b091[_0x99e6('0x18')]?_0x57b091[_0x99e6('0x18')][_0x99e6('0x1b')]||null:null,'limit':_0x57b091[_0x99e6('0x18')]?_0x57b091[_0x99e6('0x18')]['limit']||null:null,'include':_0x57b091[_0x99e6('0x18')]?_0x57b091[_0x99e6('0x18')][_0x99e6('0x1c')]?_[_0x99e6('0x1d')](_0x57b091[_0x99e6('0x18')][_0x99e6('0x1c')],function(_0x3c116e){return{'model':db[_0x3c116e[_0x99e6('0x1e')]],'as':_0x3c116e['as'],'attributes':_0x3c116e[_0x99e6('0x1b')],'include':_0x3c116e[_0x99e6('0x1c')]?_[_0x99e6('0x1d')](_0x3c116e[_0x99e6('0x1c')],function(_0x1f89d3){return{'model':db[_0x1f89d3[_0x99e6('0x1e')]],'as':_0x1f89d3['as'],'attributes':_0x1f89d3[_0x99e6('0x1b')],'include':_0x1f89d3[_0x99e6('0x1c')]?_['map'](_0x1f89d3['include'],function(_0x16f887){return{'model':db[_0x16f887[_0x99e6('0x1e')]],'as':_0x16f887['as'],'attributes':_0x16f887[_0x99e6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38d8f6){logger[_0x99e6('0xb')](_0x99e6('0x1f'),_0x57b091);logger[_0x99e6('0xe')](_0x99e6('0x1f'),_0x57b091,JSON[_0x99e6('0x10')](_0x38d8f6));_0x30702d(_0x38d8f6);})[_0x99e6('0x15')](function(_0x4bba0f){logger[_0x99e6('0x11')](_0x99e6('0x1f'),_0x4bba0f[_0x99e6('0x13')],_0x57b091);_0x503f0a(_0x2423a2[_0x99e6('0x11')](0x1f4,_0x4bba0f['message']));});});};exports[_0x99e6('0x20')]=function(_0x224380){var _0x4c5164=this;return new Promise(function(_0x1a2e99,_0x1363d3){return db[_0x99e6('0x16')][_0x99e6('0x21')]({'raw':_0x224380['options']?_0x224380[_0x99e6('0x18')][_0x99e6('0x19')]===undefined?!![]:![]:!![],'where':_0x224380[_0x99e6('0x18')]?_0x224380['options'][_0x99e6('0x1a')]||null:null,'attributes':_0x224380[_0x99e6('0x18')]?_0x224380[_0x99e6('0x18')][_0x99e6('0x1b')]||null:null,'include':_0x224380[_0x99e6('0x18')]?_0x224380[_0x99e6('0x18')]['include']?_[_0x99e6('0x1d')](_0x224380[_0x99e6('0x18')][_0x99e6('0x1c')],function(_0x190831){return{'model':db[_0x190831[_0x99e6('0x1e')]],'as':_0x190831['as'],'attributes':_0x190831[_0x99e6('0x1b')],'include':_0x190831[_0x99e6('0x1c')]?_['map'](_0x190831[_0x99e6('0x1c')],function(_0x3799a2){return{'model':db[_0x3799a2[_0x99e6('0x1e')]],'as':_0x3799a2['as'],'attributes':_0x3799a2[_0x99e6('0x1b')],'include':_0x3799a2[_0x99e6('0x1c')]?_[_0x99e6('0x1d')](_0x3799a2[_0x99e6('0x1c')],function(_0x17c186){return{'model':db[_0x17c186[_0x99e6('0x1e')]],'as':_0x17c186['as'],'attributes':_0x17c186['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x7dcb51){logger[_0x99e6('0xb')](_0x99e6('0x20'),_0x224380);logger[_0x99e6('0xe')](_0x99e6('0x20'),_0x224380,JSON[_0x99e6('0x10')](_0x7dcb51));_0x1a2e99(_0x7dcb51);})[_0x99e6('0x15')](function(_0x26409c){logger[_0x99e6('0x11')](_0x99e6('0x20'),_0x26409c['message'],_0x224380);_0x1363d3(_0x4c5164[_0x99e6('0x11')](0x1f4,_0x26409c[_0x99e6('0x13')]));});});};
\ No newline at end of file
+var _0x2085=['then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowSalesforceAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2085,0x13f));var _0x5208=function(_0x4f25f9,_0x255051){_0x4f25f9=_0x4f25f9-0x0;var _0x92083c=_0x2085[_0x4f25f9];return _0x92083c;};'use strict';var _=require(_0x5208('0x0'));var util=require(_0x5208('0x1'));var moment=require(_0x5208('0x2'));var BPromise=require(_0x5208('0x3'));var rs=require(_0x5208('0x4'));var fs=require('fs');var Redis=require(_0x5208('0x5'));var db=require(_0x5208('0x6'))['db'];var utils=require(_0x5208('0x7'));var logger=require('../../config/logger')(_0x5208('0x8'));var config=require(_0x5208('0x9'));var jayson=require(_0x5208('0xa'));var client=jayson[_0x5208('0xb')][_0x5208('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2030f4,_0x198cbd,_0x234b0b){return new BPromise(function(_0x31dbb8,_0x54a8ce){return client[_0x5208('0xd')](_0x2030f4,_0x234b0b)[_0x5208('0xe')](function(_0xf2dcaa){logger[_0x5208('0xf')](_0x5208('0x10'),_0x198cbd,_0x5208('0x11'));logger[_0x5208('0x12')](_0x5208('0x13'),_0x198cbd,_0x5208('0x11'),JSON[_0x5208('0x14')](_0xf2dcaa));if(_0xf2dcaa[_0x5208('0x15')]){if(_0xf2dcaa[_0x5208('0x15')]['code']===0x1f4){logger['error'](_0x5208('0x10'),_0x198cbd,_0xf2dcaa[_0x5208('0x15')][_0x5208('0x16')]);return _0x54a8ce(_0xf2dcaa[_0x5208('0x15')][_0x5208('0x16')]);}logger[_0x5208('0x15')]('SalesforceAccount,\x20%s,\x20%s',_0x198cbd,_0xf2dcaa[_0x5208('0x15')][_0x5208('0x16')]);return _0x31dbb8(_0xf2dcaa['error'][_0x5208('0x16')]);}else{logger[_0x5208('0xf')](_0x5208('0x10'),_0x198cbd,_0x5208('0x11'));_0x31dbb8(_0xf2dcaa['result']['message']);}})[_0x5208('0x17')](function(_0x20d29c){logger[_0x5208('0x15')](_0x5208('0x10'),_0x198cbd,_0x20d29c);_0x54a8ce(_0x20d29c);});});}exports[_0x5208('0x18')]=function(_0x3957e5){var _0xf3a34d=this;return new Promise(function(_0x100363,_0x141da2){return db[_0x5208('0x19')][_0x5208('0x1a')]({'raw':_0x3957e5[_0x5208('0x1b')]?_0x3957e5[_0x5208('0x1b')][_0x5208('0x1c')]===undefined?!![]:![]:!![],'where':_0x3957e5['options']?_0x3957e5['options'][_0x5208('0x1d')]||null:null,'attributes':_0x3957e5[_0x5208('0x1b')]?_0x3957e5[_0x5208('0x1b')][_0x5208('0x1e')]||null:null,'limit':_0x3957e5[_0x5208('0x1b')]?_0x3957e5[_0x5208('0x1b')][_0x5208('0x1f')]||null:null,'include':_0x3957e5[_0x5208('0x1b')]?_0x3957e5[_0x5208('0x1b')][_0x5208('0x20')]?_[_0x5208('0x21')](_0x3957e5[_0x5208('0x1b')][_0x5208('0x20')],function(_0x4742ea){return{'model':db[_0x4742ea[_0x5208('0x22')]],'as':_0x4742ea['as'],'attributes':_0x4742ea[_0x5208('0x1e')],'include':_0x4742ea[_0x5208('0x20')]?_[_0x5208('0x21')](_0x4742ea['include'],function(_0x1ac0d3){return{'model':db[_0x1ac0d3['model']],'as':_0x1ac0d3['as'],'attributes':_0x1ac0d3[_0x5208('0x1e')],'include':_0x1ac0d3[_0x5208('0x20')]?_[_0x5208('0x21')](_0x1ac0d3['include'],function(_0x5b1abf){return{'model':db[_0x5b1abf[_0x5208('0x22')]],'as':_0x5b1abf['as'],'attributes':_0x5b1abf[_0x5208('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x5208('0xe')](function(_0x4c3714){logger[_0x5208('0xf')](_0x5208('0x18'),_0x3957e5);logger[_0x5208('0x12')]('GetSalesforceAccount',_0x3957e5,JSON[_0x5208('0x14')](_0x4c3714));_0x100363(_0x4c3714);})['catch'](function(_0x54c4fe){logger[_0x5208('0x15')]('GetSalesforceAccount',_0x54c4fe[_0x5208('0x16')],_0x3957e5);_0x141da2(_0xf3a34d[_0x5208('0x15')](0x1f4,_0x54c4fe['message']));});});};exports['ShowSalesforceAccount']=function(_0x4a0b3f){var _0x513c3c=this;return new Promise(function(_0x341406,_0x5f0d63){return db['SalesforceAccount'][_0x5208('0x23')]({'raw':_0x4a0b3f[_0x5208('0x1b')]?_0x4a0b3f[_0x5208('0x1b')][_0x5208('0x1c')]===undefined?!![]:![]:!![],'where':_0x4a0b3f[_0x5208('0x1b')]?_0x4a0b3f[_0x5208('0x1b')][_0x5208('0x1d')]||null:null,'attributes':_0x4a0b3f['options']?_0x4a0b3f[_0x5208('0x1b')][_0x5208('0x1e')]||null:null,'include':_0x4a0b3f['options']?_0x4a0b3f['options'][_0x5208('0x20')]?_[_0x5208('0x21')](_0x4a0b3f['options']['include'],function(_0x30c782){return{'model':db[_0x30c782[_0x5208('0x22')]],'as':_0x30c782['as'],'attributes':_0x30c782['attributes'],'include':_0x30c782['include']?_[_0x5208('0x21')](_0x30c782[_0x5208('0x20')],function(_0x4e4575){return{'model':db[_0x4e4575[_0x5208('0x22')]],'as':_0x4e4575['as'],'attributes':_0x4e4575[_0x5208('0x1e')],'include':_0x4e4575[_0x5208('0x20')]?_[_0x5208('0x21')](_0x4e4575[_0x5208('0x20')],function(_0x28c7fb){return{'model':db[_0x28c7fb['model']],'as':_0x28c7fb['as'],'attributes':_0x28c7fb[_0x5208('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x425757){logger[_0x5208('0xf')](_0x5208('0x24'),_0x4a0b3f);logger[_0x5208('0x12')](_0x5208('0x24'),_0x4a0b3f,JSON[_0x5208('0x14')](_0x425757));_0x341406(_0x425757);})[_0x5208('0x17')](function(_0x25d6ed){logger[_0x5208('0x15')](_0x5208('0x24'),_0x25d6ed[_0x5208('0x16')],_0x4a0b3f);_0x5f0d63(_0x513c3c['error'](0x1f4,_0x25d6ed['message']));});});};
\ No newline at end of file
index a7ffca8..bf9dfab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x1d4275,_0x275f37){var _0xa30808=function(_0x405f11){while(--_0x405f11){_0x1d4275['push'](_0x1d4275['shift']());}};_0xa30808(++_0x275f37);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3c3d15,_0x120d77){_0x3c3d15=_0x3c3d15-0x0;var _0x2145fa=_0x5f2f[_0x3c3d15];return _0x2145fa;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
+var _0x5f2f=['Router','fs-extra','../../components/auth/service','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3c92c3,_0x24809c){var _0x33c1d4=function(_0x2749fa){while(--_0x2749fa){_0x3c92c3['push'](_0x3c92c3['shift']());}};_0x33c1d4(++_0x24809c);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1f50ae,_0x247e94){_0x1f50ae=_0x1f50ae-0x0;var _0x59b4bb=_0x5f2f[_0x1f50ae];return _0x59b4bb;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x9')](_0xf5f2('0x10'),auth['isAuthenticated'](),controller[_0xf5f2('0x11')]);router['get']('/:id/descriptions',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x12')]);router['post']('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x13')]);router[_0xf5f2('0x14')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x15')]);router['delete'](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x16')]);module[_0xf5f2('0x17')]=router;
\ No newline at end of file
index 16d0c99..00cb407 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3e=['nothing','contact','sequelize','STRING','Task','Case','ENUM','contact_lead','lead','account_contact_lead','account'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x0f3e,0x1e6));var _0xe0f3=function(_0x83ee0a,_0x44947d){_0x83ee0a=_0x83ee0a-0x0;var _0x5dc29f=_0x0f3e[_0x83ee0a];return _0x5dc29f;};'use strict';var Sequelize=require(_0xe0f3('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0f3('0x1')]},'description':{'type':Sequelize[_0xe0f3('0x1')]},'ticketType':{'type':Sequelize['ENUM'](_0xe0f3('0x2'),_0xe0f3('0x3')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0xe0f3('0x4')](_0xe0f3('0x5'),'contact',_0xe0f3('0x6'),_0xe0f3('0x7'),_0xe0f3('0x8')),'defaultValue':_0xe0f3('0x5')},'moduleCreate':{'type':Sequelize[_0xe0f3('0x4')](_0xe0f3('0x9'),_0xe0f3('0xa'),_0xe0f3('0x6'),_0xe0f3('0x8')),'defaultValue':_0xe0f3('0x6')},'leadId':{'type':Sequelize[_0xe0f3('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xe0f3('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xe0f3('0x1')]},'additionalSearchLead':{'type':Sequelize[_0xe0f3('0x1')]}};
\ No newline at end of file
+var _0x8cb8=['ENUM','Task','Case','contact_lead','contact','lead','account','sequelize','exports','STRING'];(function(_0x2eb5d7,_0x406c2c){var _0xca8fd6=function(_0x2d73ec){while(--_0x2d73ec){_0x2eb5d7['push'](_0x2eb5d7['shift']());}};_0xca8fd6(++_0x406c2c);}(_0x8cb8,0x147));var _0x88cb=function(_0xd511d,_0x3546b9){_0xd511d=_0xd511d-0x0;var _0x3f148e=_0x8cb8[_0xd511d];return _0x3f148e;};'use strict';var Sequelize=require(_0x88cb('0x0'));module[_0x88cb('0x1')]={'name':{'type':Sequelize[_0x88cb('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0x88cb('0x3')](_0x88cb('0x4'),_0x88cb('0x5')),'defaultValue':_0x88cb('0x4')},'moduleSearch':{'type':Sequelize[_0x88cb('0x3')](_0x88cb('0x6'),_0x88cb('0x7'),_0x88cb('0x8'),'account_contact_lead',_0x88cb('0x9')),'defaultValue':_0x88cb('0x6')},'moduleCreate':{'type':Sequelize[_0x88cb('0x3')]('nothing',_0x88cb('0x7'),'lead',_0x88cb('0x9')),'defaultValue':_0x88cb('0x8')},'leadId':{'type':Sequelize[_0x88cb('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x88cb('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x88cb('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x88cb('0x2')]}};
\ No newline at end of file
index e1cdd9e..9a0615b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xece0=['find','getFields','findOne','SalesforceField','pick','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','findAll','rows','catch','show','params','include','options','create','body'];(function(_0x339be6,_0x4b0dd1){var _0x559a0b=function(_0x256263){while(--_0x256263){_0x339be6['push'](_0x339be6['shift']());}};_0x559a0b(++_0x4b0dd1);}(_0xece0,0xa5));var _0x0ece=function(_0x327c12,_0x2874c9){_0x327c12=_0x327c12-0x0;var _0x4cd602=_0xece0[_0x327c12];return _0x4cd602;};'use strict';var emlformat=require(_0x0ece('0x0'));var rimraf=require(_0x0ece('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ece('0x2'));var rp=require(_0x0ece('0x3'));var moment=require('moment');var BPromise=require(_0x0ece('0x4'));var Mustache=require(_0x0ece('0x5'));var util=require(_0x0ece('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0ece('0x7'));var ejs=require(_0x0ece('0x8'));var fs=require('fs');var fs_extra=require(_0x0ece('0x9'));var _=require(_0x0ece('0xa'));var squel=require(_0x0ece('0xb'));var crypto=require(_0x0ece('0xc'));var jsforce=require(_0x0ece('0xd'));var deskjs=require(_0x0ece('0xe'));var toCsv=require(_0x0ece('0x7'));var querystring=require(_0x0ece('0xf'));var Papa=require(_0x0ece('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0ece('0x11'));var as=require(_0x0ece('0x12'));var hardwareService=require(_0x0ece('0x13'));var logger=require(_0x0ece('0x14'))(_0x0ece('0x15'));var utils=require('../../config/utils');var config=require(_0x0ece('0x16'));var licenseUtil=require(_0x0ece('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x340dfa,_0x555b81){_0x555b81=_0x555b81||0xcc;return function(_0x5a7e18){if(_0x5a7e18){return _0x340dfa[_0x0ece('0x18')](_0x555b81);}return _0x340dfa[_0x0ece('0x19')](_0x555b81)[_0x0ece('0x1a')]();};}function respondWithResult(_0x52ad37,_0x532df0){_0x532df0=_0x532df0||0xc8;return function(_0x1d475e){if(_0x1d475e){return _0x52ad37[_0x0ece('0x19')](_0x532df0)[_0x0ece('0x1b')](_0x1d475e);}};}function respondWithFilteredResult(_0x3a0da1,_0x54715d){return function(_0x3e01c6){if(_0x3e01c6){var _0x3f13ae=typeof _0x54715d[_0x0ece('0x1c')]===_0x0ece('0x1d')&&typeof _0x54715d['limit']===_0x0ece('0x1d');var _0x155a01=_0x3e01c6[_0x0ece('0x1e')];var _0x47cbbc=_0x3f13ae?0x0:_0x54715d[_0x0ece('0x1c')];var _0x4530a4=_0x3f13ae?_0x3e01c6[_0x0ece('0x1e')]:_0x54715d[_0x0ece('0x1c')]+_0x54715d[_0x0ece('0x1f')];var _0x35300d;if(_0x4530a4>=_0x155a01){_0x4530a4=_0x155a01;_0x35300d=0xc8;}else{_0x35300d=0xce;}_0x3a0da1[_0x0ece('0x19')](_0x35300d);return _0x3a0da1[_0x0ece('0x20')](_0x0ece('0x21'),_0x47cbbc+'-'+_0x4530a4+'/'+_0x155a01)[_0x0ece('0x1b')](_0x3e01c6);}return null;};}function patchUpdates(_0x54c627){return function(_0x464126){try{jsonpatch[_0x0ece('0x22')](_0x464126,_0x54c627,!![]);}catch(_0xc7f059){return BPromise['reject'](_0xc7f059);}return _0x464126[_0x0ece('0x23')]();};}function saveUpdates(_0x3d0401,_0x42b12c){return function(_0x16e838){if(_0x16e838){return _0x16e838[_0x0ece('0x24')](_0x3d0401)['then'](function(_0x916078){return _0x916078;});}return null;};}function removeEntity(_0x4d072e,_0x352aeb){return function(_0x2e2e8f){if(_0x2e2e8f){return _0x2e2e8f[_0x0ece('0x25')]()[_0x0ece('0x26')](function(){_0x4d072e['status'](0xcc)[_0x0ece('0x1a')]();});}};}function handleEntityNotFound(_0x21c4ff,_0x102d55){return function(_0x2850d4){if(!_0x2850d4){_0x21c4ff[_0x0ece('0x18')](0x194);}return _0x2850d4;};}function handleError(_0x4efd12,_0x1773f7){_0x1773f7=_0x1773f7||0x1f4;return function(_0x38acac){logger['error'](_0x38acac[_0x0ece('0x27')]);if(_0x38acac[_0x0ece('0x28')]){delete _0x38acac['name'];}_0x4efd12[_0x0ece('0x19')](_0x1773f7)[_0x0ece('0x29')](_0x38acac);};}exports['index']=function(_0x11d5af,_0x593818){var _0x42b340={},_0x4b71ea={},_0x3c5343={'count':0x0,'rows':[]};var _0x5a7a86=_[_0x0ece('0x2a')](db[_0x0ece('0x2b')][_0x0ece('0x2c')],function(_0x307c66){return{'name':_0x307c66[_0x0ece('0x2d')],'type':_0x307c66['type'][_0x0ece('0x2e')]};});_0x4b71ea[_0x0ece('0x2f')]=_['map'](_0x5a7a86,_0x0ece('0x28'));_0x4b71ea[_0x0ece('0x30')]=_[_0x0ece('0x31')](_0x11d5af['query']);_0x4b71ea[_0x0ece('0x32')]=_[_0x0ece('0x33')](_0x4b71ea[_0x0ece('0x2f')],_0x4b71ea[_0x0ece('0x30')]);_0x42b340[_0x0ece('0x34')]=_[_0x0ece('0x33')](_0x4b71ea[_0x0ece('0x2f')],qs[_0x0ece('0x35')](_0x11d5af[_0x0ece('0x30')][_0x0ece('0x35')]));_0x42b340[_0x0ece('0x34')]=_0x42b340[_0x0ece('0x34')][_0x0ece('0x36')]?_0x42b340[_0x0ece('0x34')]:_0x4b71ea[_0x0ece('0x2f')];if(!_0x11d5af[_0x0ece('0x30')][_0x0ece('0x37')](_0x0ece('0x38'))){_0x42b340[_0x0ece('0x1f')]=qs[_0x0ece('0x1f')](_0x11d5af[_0x0ece('0x30')]['limit']);_0x42b340[_0x0ece('0x1c')]=qs['offset'](_0x11d5af[_0x0ece('0x30')][_0x0ece('0x1c')]);}_0x42b340[_0x0ece('0x39')]=qs[_0x0ece('0x3a')](_0x11d5af[_0x0ece('0x30')][_0x0ece('0x3a')]);_0x42b340['where']=qs['filters'](_['pick'](_0x11d5af['query'],_0x4b71ea['filters']),_0x5a7a86);if(_0x11d5af[_0x0ece('0x30')][_0x0ece('0x3b')]){_0x42b340['where']=_[_0x0ece('0x3c')](_0x42b340[_0x0ece('0x3d')],{'$or':_[_0x0ece('0x2a')](_0x5a7a86,function(_0x5d0c49){if(_0x5d0c49['type']!==_0x0ece('0x3e')){var _0x10f3ef={};_0x10f3ef[_0x5d0c49[_0x0ece('0x28')]]={'$like':'%'+_0x11d5af[_0x0ece('0x30')][_0x0ece('0x3b')]+'%'};return _0x10f3ef;}})});}_0x42b340=_[_0x0ece('0x3c')]({},_0x42b340,_0x11d5af['options']);var _0x1aad76={'where':_0x42b340[_0x0ece('0x3d')]};return db[_0x0ece('0x2b')][_0x0ece('0x1e')](_0x1aad76)[_0x0ece('0x26')](function(_0x9f6bd6){_0x3c5343[_0x0ece('0x1e')]=_0x9f6bd6;if(_0x11d5af[_0x0ece('0x30')]['includeAll']){_0x42b340['include']=[{'all':!![]}];}return db[_0x0ece('0x2b')][_0x0ece('0x3f')](_0x42b340);})[_0x0ece('0x26')](function(_0x35a4c4){_0x3c5343[_0x0ece('0x40')]=_0x35a4c4;return _0x3c5343;})[_0x0ece('0x26')](respondWithFilteredResult(_0x593818,_0x42b340))[_0x0ece('0x41')](handleError(_0x593818,null));};exports[_0x0ece('0x42')]=function(_0x33922f,_0x491ac3){var _0x4a962e={'raw':![],'where':{'id':_0x33922f[_0x0ece('0x43')]['id']}},_0x396b60={};_0x396b60[_0x0ece('0x2f')]=_[_0x0ece('0x31')](db[_0x0ece('0x2b')][_0x0ece('0x2c')]);_0x396b60[_0x0ece('0x30')]=_['keys'](_0x33922f[_0x0ece('0x30')]);_0x396b60[_0x0ece('0x32')]=_[_0x0ece('0x33')](_0x396b60[_0x0ece('0x2f')],_0x396b60[_0x0ece('0x30')]);_0x4a962e[_0x0ece('0x34')]=_[_0x0ece('0x33')](_0x396b60[_0x0ece('0x2f')],qs['fields'](_0x33922f['query'][_0x0ece('0x35')]));_0x4a962e['attributes']=_0x4a962e[_0x0ece('0x34')][_0x0ece('0x36')]?_0x4a962e[_0x0ece('0x34')]:_0x396b60[_0x0ece('0x2f')];if(_0x33922f[_0x0ece('0x30')]['includeAll']){_0x4a962e[_0x0ece('0x44')]=[{'all':!![]}];}_0x4a962e=_['merge']({},_0x4a962e,_0x33922f[_0x0ece('0x45')]);return db['SalesforceConfiguration']['find'](_0x4a962e)[_0x0ece('0x26')](handleEntityNotFound(_0x491ac3,null))[_0x0ece('0x26')](respondWithResult(_0x491ac3,null))['catch'](handleError(_0x491ac3,null));};exports[_0x0ece('0x46')]=function(_0x70659,_0x3da32f){return db[_0x0ece('0x2b')]['create'](_0x70659[_0x0ece('0x47')],{})['then'](respondWithResult(_0x3da32f,0xc9))[_0x0ece('0x41')](handleError(_0x3da32f,null));};exports[_0x0ece('0x24')]=function(_0x42a060,_0x384314){if(_0x42a060[_0x0ece('0x47')]['id']){delete _0x42a060[_0x0ece('0x47')]['id'];}return db[_0x0ece('0x2b')][_0x0ece('0x48')]({'where':{'id':_0x42a060[_0x0ece('0x43')]['id']}})[_0x0ece('0x26')](handleEntityNotFound(_0x384314,null))['then'](saveUpdates(_0x42a060['body'],null))[_0x0ece('0x26')](respondWithResult(_0x384314,null))[_0x0ece('0x41')](handleError(_0x384314,null));};exports[_0x0ece('0x25')]=function(_0x35e6ab,_0x17d624){return db['SalesforceConfiguration']['find']({'where':{'id':_0x35e6ab[_0x0ece('0x43')]['id']}})['then'](handleEntityNotFound(_0x17d624,null))[_0x0ece('0x26')](removeEntity(_0x17d624,null))[_0x0ece('0x41')](handleError(_0x17d624,null));};exports[_0x0ece('0x49')]=function(_0x3ec979,_0x222baf,_0x43097c){var _0x2ad782={};var _0x248a54={};var _0xe171d8;var _0x4339a2;return db[_0x0ece('0x2b')][_0x0ece('0x4a')]({'where':{'id':_0x3ec979[_0x0ece('0x43')]['id']}})[_0x0ece('0x26')](handleEntityNotFound(_0x222baf,null))[_0x0ece('0x26')](function(_0x5c9e33){if(_0x5c9e33){_0xe171d8=_0x5c9e33;_0x248a54[_0x0ece('0x2f')]=_['keys'](db[_0x0ece('0x4b')]['rawAttributes']);_0x248a54[_0x0ece('0x30')]=_[_0x0ece('0x31')](_0x3ec979[_0x0ece('0x30')]);_0x248a54[_0x0ece('0x32')]=_[_0x0ece('0x33')](_0x248a54['model'],_0x248a54[_0x0ece('0x30')]);_0x2ad782['attributes']=_[_0x0ece('0x33')](_0x248a54[_0x0ece('0x2f')],qs[_0x0ece('0x35')](_0x3ec979['query']['fields']));_0x2ad782[_0x0ece('0x34')]=_0x2ad782[_0x0ece('0x34')][_0x0ece('0x36')]?_0x2ad782[_0x0ece('0x34')]:_0x248a54[_0x0ece('0x2f')];_0x2ad782[_0x0ece('0x39')]=qs[_0x0ece('0x3a')](_0x3ec979[_0x0ece('0x30')][_0x0ece('0x3a')]);_0x2ad782[_0x0ece('0x3d')]=qs['filters'](_[_0x0ece('0x4c')](_0x3ec979[_0x0ece('0x30')],_0x248a54[_0x0ece('0x32')]));if(_0x3ec979[_0x0ece('0x30')][_0x0ece('0x3b')]){_0x2ad782['where']=_[_0x0ece('0x3c')](_0x2ad782[_0x0ece('0x3d')],{'$or':_['map'](_0x2ad782['attributes'],function(_0x1c969b){var _0x52609a={};_0x52609a[_0x1c969b]={'$like':'%'+_0x3ec979['query'][_0x0ece('0x3b')]+'%'};return _0x52609a;})});}_0x2ad782=_['merge']({},_0x2ad782,_0x3ec979['options']);return _0xe171d8['getFields'](_0x2ad782);}})['then'](function(_0x234d22){if(_0x234d22){_0x4339a2=_0x234d22[_0x0ece('0x36')];if(!_0x3ec979[_0x0ece('0x30')]['hasOwnProperty'](_0x0ece('0x38'))){_0x2ad782['limit']=qs[_0x0ece('0x1f')](_0x3ec979[_0x0ece('0x30')][_0x0ece('0x1f')]);_0x2ad782[_0x0ece('0x1c')]=qs[_0x0ece('0x1c')](_0x3ec979[_0x0ece('0x30')][_0x0ece('0x1c')]);}return _0xe171d8[_0x0ece('0x49')](_0x2ad782);}})[_0x0ece('0x26')](function(_0x2d1c3c){if(_0x2d1c3c){return _0x2d1c3c?{'count':_0x4339a2,'rows':_0x2d1c3c}:null;}})[_0x0ece('0x26')](respondWithResult(_0x222baf,null))[_0x0ece('0x41')](handleError(_0x222baf,null));};exports[_0x0ece('0x4d')]=function(_0x34082e,_0xc4220f,_0x529eb4){var _0x4ffbdc={};var _0x3c7d39={};var _0x41d51c;var _0x34a4d1;return db[_0x0ece('0x2b')][_0x0ece('0x4a')]({'where':{'id':_0x34082e[_0x0ece('0x43')]['id']}})[_0x0ece('0x26')](handleEntityNotFound(_0xc4220f,null))['then'](function(_0x4e1ae1){if(_0x4e1ae1){_0x41d51c=_0x4e1ae1;_0x3c7d39[_0x0ece('0x2f')]=_[_0x0ece('0x31')](db[_0x0ece('0x4b')][_0x0ece('0x2c')]);_0x3c7d39[_0x0ece('0x30')]=_[_0x0ece('0x31')](_0x34082e[_0x0ece('0x30')]);_0x3c7d39[_0x0ece('0x32')]=_[_0x0ece('0x33')](_0x3c7d39[_0x0ece('0x2f')],_0x3c7d39[_0x0ece('0x30')]);_0x4ffbdc[_0x0ece('0x34')]=_[_0x0ece('0x33')](_0x3c7d39[_0x0ece('0x2f')],qs['fields'](_0x34082e[_0x0ece('0x30')][_0x0ece('0x35')]));_0x4ffbdc[_0x0ece('0x34')]=_0x4ffbdc[_0x0ece('0x34')]['length']?_0x4ffbdc[_0x0ece('0x34')]:_0x3c7d39[_0x0ece('0x2f')];_0x4ffbdc[_0x0ece('0x39')]=qs['sort'](_0x34082e['query'][_0x0ece('0x3a')]);_0x4ffbdc[_0x0ece('0x3d')]=qs[_0x0ece('0x32')](_[_0x0ece('0x4c')](_0x34082e[_0x0ece('0x30')],_0x3c7d39[_0x0ece('0x32')]));if(_0x34082e[_0x0ece('0x30')]['filter']){_0x4ffbdc[_0x0ece('0x3d')]=_['merge'](_0x4ffbdc['where'],{'$or':_[_0x0ece('0x2a')](_0x4ffbdc[_0x0ece('0x34')],function(_0x6efda2){var _0x3886c4={};_0x3886c4[_0x6efda2]={'$like':'%'+_0x34082e['query'][_0x0ece('0x3b')]+'%'};return _0x3886c4;})});}_0x4ffbdc=_['merge']({},_0x4ffbdc,_0x34082e[_0x0ece('0x45')]);return _0x41d51c[_0x0ece('0x4d')](_0x4ffbdc);}})[_0x0ece('0x26')](function(_0x5d0bf1){if(_0x5d0bf1){_0x34a4d1=_0x5d0bf1[_0x0ece('0x36')];if(!_0x34082e['query'][_0x0ece('0x37')]('nolimit')){_0x4ffbdc[_0x0ece('0x1f')]=qs[_0x0ece('0x1f')](_0x34082e[_0x0ece('0x30')][_0x0ece('0x1f')]);_0x4ffbdc[_0x0ece('0x1c')]=qs[_0x0ece('0x1c')](_0x34082e[_0x0ece('0x30')][_0x0ece('0x1c')]);}return _0x41d51c[_0x0ece('0x4d')](_0x4ffbdc);}})[_0x0ece('0x26')](function(_0x3c9f15){if(_0x3c9f15){return _0x3c9f15?{'count':_0x34a4d1,'rows':_0x3c9f15}:null;}})['then'](respondWithResult(_0xc4220f,null))[_0x0ece('0x41')](handleError(_0xc4220f,null));};exports[_0x0ece('0x4e')]=function(_0x12bfba,_0x1f3b05,_0x5bef24){var _0x568c38={};var _0x2c7132={};var _0x232a56;var _0x217fe7;return db[_0x0ece('0x2b')]['findOne']({'where':{'id':_0x12bfba[_0x0ece('0x43')]['id']}})[_0x0ece('0x26')](handleEntityNotFound(_0x1f3b05,null))[_0x0ece('0x26')](function(_0x36e02e){if(_0x36e02e){_0x232a56=_0x36e02e;_0x2c7132['model']=_[_0x0ece('0x31')](db[_0x0ece('0x4b')][_0x0ece('0x2c')]);_0x2c7132[_0x0ece('0x30')]=_[_0x0ece('0x31')](_0x12bfba[_0x0ece('0x30')]);_0x2c7132[_0x0ece('0x32')]=_[_0x0ece('0x33')](_0x2c7132['model'],_0x2c7132[_0x0ece('0x30')]);_0x568c38[_0x0ece('0x34')]=_['intersection'](_0x2c7132[_0x0ece('0x2f')],qs[_0x0ece('0x35')](_0x12bfba['query'][_0x0ece('0x35')]));_0x568c38['attributes']=_0x568c38['attributes'][_0x0ece('0x36')]?_0x568c38[_0x0ece('0x34')]:_0x2c7132[_0x0ece('0x2f')];_0x568c38[_0x0ece('0x39')]=qs[_0x0ece('0x3a')](_0x12bfba[_0x0ece('0x30')][_0x0ece('0x3a')]);_0x568c38[_0x0ece('0x3d')]=qs['filters'](_[_0x0ece('0x4c')](_0x12bfba[_0x0ece('0x30')],_0x2c7132['filters']));if(_0x12bfba[_0x0ece('0x30')][_0x0ece('0x3b')]){_0x568c38[_0x0ece('0x3d')]=_[_0x0ece('0x3c')](_0x568c38[_0x0ece('0x3d')],{'$or':_[_0x0ece('0x2a')](_0x568c38[_0x0ece('0x34')],function(_0x304116){var _0x4b1788={};_0x4b1788[_0x304116]={'$like':'%'+_0x12bfba[_0x0ece('0x30')][_0x0ece('0x3b')]+'%'};return _0x4b1788;})});}_0x568c38=_[_0x0ece('0x3c')]({},_0x568c38,_0x12bfba[_0x0ece('0x45')]);return _0x232a56[_0x0ece('0x4e')](_0x568c38);}})[_0x0ece('0x26')](function(_0x4bc4c2){if(_0x4bc4c2){_0x217fe7=_0x4bc4c2['length'];if(!_0x12bfba[_0x0ece('0x30')][_0x0ece('0x37')](_0x0ece('0x38'))){_0x568c38[_0x0ece('0x1f')]=qs[_0x0ece('0x1f')](_0x12bfba[_0x0ece('0x30')][_0x0ece('0x1f')]);_0x568c38[_0x0ece('0x1c')]=qs[_0x0ece('0x1c')](_0x12bfba[_0x0ece('0x30')][_0x0ece('0x1c')]);}return _0x232a56[_0x0ece('0x4e')](_0x568c38);}})[_0x0ece('0x26')](function(_0x229791){if(_0x229791){return _0x229791?{'count':_0x217fe7,'rows':_0x229791}:null;}})['then'](respondWithResult(_0x1f3b05,null))[_0x0ece('0x41')](handleError(_0x1f3b05,null));};
\ No newline at end of file
+var _0x6dac=['catch','show','intersection','find','create','body','params','getFields','SalesforceField','order','pick','getSubjects','findOne','getDescriptions','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/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','send','index','rawAttributes','fieldName','type','key','map','name','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','merge','options','SalesforceConfiguration','includeAll','include','findAll'];(function(_0x8fe368,_0x424407){var _0x3f3c8a=function(_0x5b6237){while(--_0x5b6237){_0x8fe368['push'](_0x8fe368['shift']());}};_0x3f3c8a(++_0x424407);}(_0x6dac,0x16e));var _0xc6da=function(_0x4b090f,_0x17df3b){_0x4b090f=_0x4b090f-0x0;var _0x16f828=_0x6dac[_0x4b090f];return _0x16f828;};'use strict';var emlformat=require(_0xc6da('0x0'));var rimraf=require(_0xc6da('0x1'));var zipdir=require(_0xc6da('0x2'));var jsonpatch=require(_0xc6da('0x3'));var rp=require(_0xc6da('0x4'));var moment=require(_0xc6da('0x5'));var BPromise=require(_0xc6da('0x6'));var Mustache=require(_0xc6da('0x7'));var util=require(_0xc6da('0x8'));var path=require(_0xc6da('0x9'));var sox=require(_0xc6da('0xa'));var csv=require(_0xc6da('0xb'));var ejs=require(_0xc6da('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc6da('0xd'));var squel=require(_0xc6da('0xe'));var crypto=require(_0xc6da('0xf'));var jsforce=require(_0xc6da('0x10'));var deskjs=require(_0xc6da('0x11'));var toCsv=require(_0xc6da('0xb'));var querystring=require(_0xc6da('0x12'));var Papa=require(_0xc6da('0x13'));var Redis=require(_0xc6da('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xc6da('0x15'));var as=require(_0xc6da('0x16'));var hardwareService=require(_0xc6da('0x17'));var logger=require(_0xc6da('0x18'))(_0xc6da('0x19'));var utils=require(_0xc6da('0x1a'));var config=require(_0xc6da('0x1b'));var licenseUtil=require(_0xc6da('0x1c'));var db=require(_0xc6da('0x1d'))['db'];function respondWithStatusCode(_0x22d0e3,_0x3b8656){_0x3b8656=_0x3b8656||0xcc;return function(_0x3a3b39){if(_0x3a3b39){return _0x22d0e3[_0xc6da('0x1e')](_0x3b8656);}return _0x22d0e3['status'](_0x3b8656)[_0xc6da('0x1f')]();};}function respondWithResult(_0x18e521,_0x13d9df){_0x13d9df=_0x13d9df||0xc8;return function(_0x344b09){if(_0x344b09){return _0x18e521[_0xc6da('0x20')](_0x13d9df)[_0xc6da('0x21')](_0x344b09);}};}function respondWithFilteredResult(_0x4fa18b,_0x43e6b3){return function(_0x37767a){if(_0x37767a){var _0x287468=typeof _0x43e6b3[_0xc6da('0x22')]===_0xc6da('0x23')&&typeof _0x43e6b3['limit']===_0xc6da('0x23');var _0x4cf6c4=_0x37767a[_0xc6da('0x24')];var _0x2a63cc=_0x287468?0x0:_0x43e6b3[_0xc6da('0x22')];var _0x25737d=_0x287468?_0x37767a['count']:_0x43e6b3[_0xc6da('0x22')]+_0x43e6b3[_0xc6da('0x25')];var _0x40c346;if(_0x25737d>=_0x4cf6c4){_0x25737d=_0x4cf6c4;_0x40c346=0xc8;}else{_0x40c346=0xce;}_0x4fa18b[_0xc6da('0x20')](_0x40c346);return _0x4fa18b[_0xc6da('0x26')](_0xc6da('0x27'),_0x2a63cc+'-'+_0x25737d+'/'+_0x4cf6c4)[_0xc6da('0x21')](_0x37767a);}return null;};}function patchUpdates(_0x36ac99){return function(_0xe00c70){try{jsonpatch[_0xc6da('0x28')](_0xe00c70,_0x36ac99,!![]);}catch(_0x4deb23){return BPromise[_0xc6da('0x29')](_0x4deb23);}return _0xe00c70[_0xc6da('0x2a')]();};}function saveUpdates(_0x3c7483,_0x94bee1){return function(_0x5f070b){if(_0x5f070b){return _0x5f070b[_0xc6da('0x2b')](_0x3c7483)[_0xc6da('0x2c')](function(_0x5ddab9){return _0x5ddab9;});}return null;};}function removeEntity(_0x2a2ef9,_0x3b180c){return function(_0x1003a3){if(_0x1003a3){return _0x1003a3[_0xc6da('0x2d')]()['then'](function(){_0x2a2ef9[_0xc6da('0x20')](0xcc)[_0xc6da('0x1f')]();});}};}function handleEntityNotFound(_0x55c059,_0x67ebf9){return function(_0x89b637){if(!_0x89b637){_0x55c059[_0xc6da('0x1e')](0x194);}return _0x89b637;};}function handleError(_0x57c198,_0x4d232d){_0x4d232d=_0x4d232d||0x1f4;return function(_0x1ded21){logger[_0xc6da('0x2e')](_0x1ded21['stack']);if(_0x1ded21['name']){delete _0x1ded21['name'];}_0x57c198['status'](_0x4d232d)[_0xc6da('0x2f')](_0x1ded21);};}exports[_0xc6da('0x30')]=function(_0x33eba0,_0x579dab){var _0x32b83={},_0xda1aef={},_0x13cb9e={'count':0x0,'rows':[]};var _0x890254=_['map'](db['SalesforceConfiguration'][_0xc6da('0x31')],function(_0x572204){return{'name':_0x572204[_0xc6da('0x32')],'type':_0x572204[_0xc6da('0x33')][_0xc6da('0x34')]};});_0xda1aef['model']=_[_0xc6da('0x35')](_0x890254,_0xc6da('0x36'));_0xda1aef[_0xc6da('0x37')]=_[_0xc6da('0x38')](_0x33eba0[_0xc6da('0x37')]);_0xda1aef[_0xc6da('0x39')]=_['intersection'](_0xda1aef[_0xc6da('0x3a')],_0xda1aef[_0xc6da('0x37')]);_0x32b83[_0xc6da('0x3b')]=_['intersection'](_0xda1aef['model'],qs[_0xc6da('0x3c')](_0x33eba0[_0xc6da('0x37')][_0xc6da('0x3c')]));_0x32b83[_0xc6da('0x3b')]=_0x32b83[_0xc6da('0x3b')][_0xc6da('0x3d')]?_0x32b83[_0xc6da('0x3b')]:_0xda1aef[_0xc6da('0x3a')];if(!_0x33eba0[_0xc6da('0x37')][_0xc6da('0x3e')](_0xc6da('0x3f'))){_0x32b83[_0xc6da('0x25')]=qs[_0xc6da('0x25')](_0x33eba0['query'][_0xc6da('0x25')]);_0x32b83['offset']=qs[_0xc6da('0x22')](_0x33eba0[_0xc6da('0x37')][_0xc6da('0x22')]);}_0x32b83['order']=qs[_0xc6da('0x40')](_0x33eba0[_0xc6da('0x37')][_0xc6da('0x40')]);_0x32b83['where']=qs[_0xc6da('0x39')](_['pick'](_0x33eba0[_0xc6da('0x37')],_0xda1aef['filters']),_0x890254);if(_0x33eba0[_0xc6da('0x37')][_0xc6da('0x41')]){_0x32b83[_0xc6da('0x42')]=_['merge'](_0x32b83['where'],{'$or':_[_0xc6da('0x35')](_0x890254,function(_0x56b071){if(_0x56b071['type']!==_0xc6da('0x43')){var _0x16b440={};_0x16b440[_0x56b071[_0xc6da('0x36')]]={'$like':'%'+_0x33eba0[_0xc6da('0x37')][_0xc6da('0x41')]+'%'};return _0x16b440;}})});}_0x32b83=_[_0xc6da('0x44')]({},_0x32b83,_0x33eba0[_0xc6da('0x45')]);var _0x3368c9={'where':_0x32b83['where']};return db[_0xc6da('0x46')][_0xc6da('0x24')](_0x3368c9)[_0xc6da('0x2c')](function(_0x4fd663){_0x13cb9e[_0xc6da('0x24')]=_0x4fd663;if(_0x33eba0[_0xc6da('0x37')][_0xc6da('0x47')]){_0x32b83[_0xc6da('0x48')]=[{'all':!![]}];}return db[_0xc6da('0x46')][_0xc6da('0x49')](_0x32b83);})[_0xc6da('0x2c')](function(_0xb5e11e){_0x13cb9e['rows']=_0xb5e11e;return _0x13cb9e;})[_0xc6da('0x2c')](respondWithFilteredResult(_0x579dab,_0x32b83))[_0xc6da('0x4a')](handleError(_0x579dab,null));};exports[_0xc6da('0x4b')]=function(_0x34e19a,_0x4f3374){var _0x4e00fc={'raw':![],'where':{'id':_0x34e19a['params']['id']}},_0xd20888={};_0xd20888['model']=_[_0xc6da('0x38')](db[_0xc6da('0x46')][_0xc6da('0x31')]);_0xd20888[_0xc6da('0x37')]=_[_0xc6da('0x38')](_0x34e19a[_0xc6da('0x37')]);_0xd20888['filters']=_[_0xc6da('0x4c')](_0xd20888['model'],_0xd20888[_0xc6da('0x37')]);_0x4e00fc['attributes']=_[_0xc6da('0x4c')](_0xd20888[_0xc6da('0x3a')],qs[_0xc6da('0x3c')](_0x34e19a[_0xc6da('0x37')][_0xc6da('0x3c')]));_0x4e00fc[_0xc6da('0x3b')]=_0x4e00fc[_0xc6da('0x3b')][_0xc6da('0x3d')]?_0x4e00fc['attributes']:_0xd20888[_0xc6da('0x3a')];if(_0x34e19a[_0xc6da('0x37')]['includeAll']){_0x4e00fc[_0xc6da('0x48')]=[{'all':!![]}];}_0x4e00fc=_['merge']({},_0x4e00fc,_0x34e19a[_0xc6da('0x45')]);return db[_0xc6da('0x46')][_0xc6da('0x4d')](_0x4e00fc)[_0xc6da('0x2c')](handleEntityNotFound(_0x4f3374,null))['then'](respondWithResult(_0x4f3374,null))['catch'](handleError(_0x4f3374,null));};exports[_0xc6da('0x4e')]=function(_0x3b2f06,_0x4fd983){return db[_0xc6da('0x46')][_0xc6da('0x4e')](_0x3b2f06[_0xc6da('0x4f')],{})[_0xc6da('0x2c')](respondWithResult(_0x4fd983,0xc9))['catch'](handleError(_0x4fd983,null));};exports['update']=function(_0x3d7016,_0x1cd932){if(_0x3d7016[_0xc6da('0x4f')]['id']){delete _0x3d7016[_0xc6da('0x4f')]['id'];}return db['SalesforceConfiguration'][_0xc6da('0x4d')]({'where':{'id':_0x3d7016['params']['id']}})[_0xc6da('0x2c')](handleEntityNotFound(_0x1cd932,null))[_0xc6da('0x2c')](saveUpdates(_0x3d7016[_0xc6da('0x4f')],null))[_0xc6da('0x2c')](respondWithResult(_0x1cd932,null))['catch'](handleError(_0x1cd932,null));};exports[_0xc6da('0x2d')]=function(_0x12f27b,_0x225d74){return db[_0xc6da('0x46')][_0xc6da('0x4d')]({'where':{'id':_0x12f27b[_0xc6da('0x50')]['id']}})[_0xc6da('0x2c')](handleEntityNotFound(_0x225d74,null))[_0xc6da('0x2c')](removeEntity(_0x225d74,null))[_0xc6da('0x4a')](handleError(_0x225d74,null));};exports[_0xc6da('0x51')]=function(_0x579a46,_0x5d2213,_0x5e350c){var _0x2b3c9a={};var _0x59ecd8={};var _0x2f1863;var _0x2977c4;return db[_0xc6da('0x46')]['findOne']({'where':{'id':_0x579a46[_0xc6da('0x50')]['id']}})[_0xc6da('0x2c')](handleEntityNotFound(_0x5d2213,null))['then'](function(_0x6a74b0){if(_0x6a74b0){_0x2f1863=_0x6a74b0;_0x59ecd8[_0xc6da('0x3a')]=_[_0xc6da('0x38')](db[_0xc6da('0x52')][_0xc6da('0x31')]);_0x59ecd8[_0xc6da('0x37')]=_[_0xc6da('0x38')](_0x579a46[_0xc6da('0x37')]);_0x59ecd8[_0xc6da('0x39')]=_[_0xc6da('0x4c')](_0x59ecd8[_0xc6da('0x3a')],_0x59ecd8[_0xc6da('0x37')]);_0x2b3c9a[_0xc6da('0x3b')]=_[_0xc6da('0x4c')](_0x59ecd8[_0xc6da('0x3a')],qs[_0xc6da('0x3c')](_0x579a46['query'][_0xc6da('0x3c')]));_0x2b3c9a['attributes']=_0x2b3c9a[_0xc6da('0x3b')][_0xc6da('0x3d')]?_0x2b3c9a[_0xc6da('0x3b')]:_0x59ecd8[_0xc6da('0x3a')];_0x2b3c9a[_0xc6da('0x53')]=qs[_0xc6da('0x40')](_0x579a46['query']['sort']);_0x2b3c9a['where']=qs[_0xc6da('0x39')](_[_0xc6da('0x54')](_0x579a46['query'],_0x59ecd8['filters']));if(_0x579a46[_0xc6da('0x37')][_0xc6da('0x41')]){_0x2b3c9a[_0xc6da('0x42')]=_[_0xc6da('0x44')](_0x2b3c9a[_0xc6da('0x42')],{'$or':_[_0xc6da('0x35')](_0x2b3c9a[_0xc6da('0x3b')],function(_0x29e541){var _0x5f4f13={};_0x5f4f13[_0x29e541]={'$like':'%'+_0x579a46['query']['filter']+'%'};return _0x5f4f13;})});}_0x2b3c9a=_[_0xc6da('0x44')]({},_0x2b3c9a,_0x579a46[_0xc6da('0x45')]);return _0x2f1863[_0xc6da('0x51')](_0x2b3c9a);}})[_0xc6da('0x2c')](function(_0x4b0699){if(_0x4b0699){_0x2977c4=_0x4b0699[_0xc6da('0x3d')];if(!_0x579a46[_0xc6da('0x37')][_0xc6da('0x3e')](_0xc6da('0x3f'))){_0x2b3c9a['limit']=qs[_0xc6da('0x25')](_0x579a46[_0xc6da('0x37')][_0xc6da('0x25')]);_0x2b3c9a[_0xc6da('0x22')]=qs[_0xc6da('0x22')](_0x579a46[_0xc6da('0x37')][_0xc6da('0x22')]);}return _0x2f1863['getFields'](_0x2b3c9a);}})[_0xc6da('0x2c')](function(_0x295ceb){if(_0x295ceb){return _0x295ceb?{'count':_0x2977c4,'rows':_0x295ceb}:null;}})[_0xc6da('0x2c')](respondWithResult(_0x5d2213,null))['catch'](handleError(_0x5d2213,null));};exports[_0xc6da('0x55')]=function(_0x54dd05,_0x2224ad,_0x1fece3){var _0xa4599f={};var _0x4732ea={};var _0x5dabd0;var _0x54d389;return db['SalesforceConfiguration'][_0xc6da('0x56')]({'where':{'id':_0x54dd05[_0xc6da('0x50')]['id']}})[_0xc6da('0x2c')](handleEntityNotFound(_0x2224ad,null))[_0xc6da('0x2c')](function(_0xc71538){if(_0xc71538){_0x5dabd0=_0xc71538;_0x4732ea[_0xc6da('0x3a')]=_['keys'](db[_0xc6da('0x52')]['rawAttributes']);_0x4732ea[_0xc6da('0x37')]=_['keys'](_0x54dd05[_0xc6da('0x37')]);_0x4732ea[_0xc6da('0x39')]=_[_0xc6da('0x4c')](_0x4732ea[_0xc6da('0x3a')],_0x4732ea[_0xc6da('0x37')]);_0xa4599f[_0xc6da('0x3b')]=_[_0xc6da('0x4c')](_0x4732ea[_0xc6da('0x3a')],qs[_0xc6da('0x3c')](_0x54dd05[_0xc6da('0x37')][_0xc6da('0x3c')]));_0xa4599f[_0xc6da('0x3b')]=_0xa4599f['attributes'][_0xc6da('0x3d')]?_0xa4599f[_0xc6da('0x3b')]:_0x4732ea[_0xc6da('0x3a')];_0xa4599f['order']=qs[_0xc6da('0x40')](_0x54dd05[_0xc6da('0x37')][_0xc6da('0x40')]);_0xa4599f['where']=qs[_0xc6da('0x39')](_[_0xc6da('0x54')](_0x54dd05['query'],_0x4732ea[_0xc6da('0x39')]));if(_0x54dd05['query'][_0xc6da('0x41')]){_0xa4599f['where']=_[_0xc6da('0x44')](_0xa4599f[_0xc6da('0x42')],{'$or':_[_0xc6da('0x35')](_0xa4599f['attributes'],function(_0x34cd30){var _0x2d684f={};_0x2d684f[_0x34cd30]={'$like':'%'+_0x54dd05[_0xc6da('0x37')][_0xc6da('0x41')]+'%'};return _0x2d684f;})});}_0xa4599f=_[_0xc6da('0x44')]({},_0xa4599f,_0x54dd05['options']);return _0x5dabd0['getSubjects'](_0xa4599f);}})['then'](function(_0x4eb439){if(_0x4eb439){_0x54d389=_0x4eb439[_0xc6da('0x3d')];if(!_0x54dd05[_0xc6da('0x37')][_0xc6da('0x3e')]('nolimit')){_0xa4599f[_0xc6da('0x25')]=qs[_0xc6da('0x25')](_0x54dd05[_0xc6da('0x37')][_0xc6da('0x25')]);_0xa4599f['offset']=qs[_0xc6da('0x22')](_0x54dd05['query'][_0xc6da('0x22')]);}return _0x5dabd0[_0xc6da('0x55')](_0xa4599f);}})[_0xc6da('0x2c')](function(_0x55f274){if(_0x55f274){return _0x55f274?{'count':_0x54d389,'rows':_0x55f274}:null;}})[_0xc6da('0x2c')](respondWithResult(_0x2224ad,null))['catch'](handleError(_0x2224ad,null));};exports['getDescriptions']=function(_0x3f679b,_0x1bf4e2,_0x5c8c94){var _0x70f6e4={};var _0x547d5c={};var _0x3d5c61;var _0x3a178e;return db['SalesforceConfiguration'][_0xc6da('0x56')]({'where':{'id':_0x3f679b[_0xc6da('0x50')]['id']}})[_0xc6da('0x2c')](handleEntityNotFound(_0x1bf4e2,null))[_0xc6da('0x2c')](function(_0x1ab014){if(_0x1ab014){_0x3d5c61=_0x1ab014;_0x547d5c['model']=_[_0xc6da('0x38')](db[_0xc6da('0x52')][_0xc6da('0x31')]);_0x547d5c[_0xc6da('0x37')]=_[_0xc6da('0x38')](_0x3f679b['query']);_0x547d5c[_0xc6da('0x39')]=_[_0xc6da('0x4c')](_0x547d5c[_0xc6da('0x3a')],_0x547d5c[_0xc6da('0x37')]);_0x70f6e4['attributes']=_[_0xc6da('0x4c')](_0x547d5c[_0xc6da('0x3a')],qs[_0xc6da('0x3c')](_0x3f679b[_0xc6da('0x37')][_0xc6da('0x3c')]));_0x70f6e4[_0xc6da('0x3b')]=_0x70f6e4[_0xc6da('0x3b')][_0xc6da('0x3d')]?_0x70f6e4['attributes']:_0x547d5c[_0xc6da('0x3a')];_0x70f6e4[_0xc6da('0x53')]=qs['sort'](_0x3f679b[_0xc6da('0x37')]['sort']);_0x70f6e4[_0xc6da('0x42')]=qs[_0xc6da('0x39')](_[_0xc6da('0x54')](_0x3f679b[_0xc6da('0x37')],_0x547d5c['filters']));if(_0x3f679b[_0xc6da('0x37')][_0xc6da('0x41')]){_0x70f6e4['where']=_[_0xc6da('0x44')](_0x70f6e4['where'],{'$or':_[_0xc6da('0x35')](_0x70f6e4['attributes'],function(_0x13a276){var _0x1b2fe9={};_0x1b2fe9[_0x13a276]={'$like':'%'+_0x3f679b[_0xc6da('0x37')]['filter']+'%'};return _0x1b2fe9;})});}_0x70f6e4=_['merge']({},_0x70f6e4,_0x3f679b['options']);return _0x3d5c61[_0xc6da('0x57')](_0x70f6e4);}})[_0xc6da('0x2c')](function(_0x2b207f){if(_0x2b207f){_0x3a178e=_0x2b207f[_0xc6da('0x3d')];if(!_0x3f679b[_0xc6da('0x37')]['hasOwnProperty']('nolimit')){_0x70f6e4[_0xc6da('0x25')]=qs[_0xc6da('0x25')](_0x3f679b[_0xc6da('0x37')][_0xc6da('0x25')]);_0x70f6e4['offset']=qs['offset'](_0x3f679b[_0xc6da('0x37')][_0xc6da('0x22')]);}return _0x3d5c61[_0xc6da('0x57')](_0x70f6e4);}})[_0xc6da('0x2c')](function(_0x575154){if(_0x575154){return _0x575154?{'count':_0x3a178e,'rows':_0x575154}:null;}})[_0xc6da('0x2c')](respondWithResult(_0x1bf4e2,null))[_0xc6da('0x4a')](handleError(_0x1bf4e2,null));};
\ No newline at end of file
index 4aa26f2..a2531ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x000d=['int_salesforce_configurations','util','api','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define'];(function(_0x1451b0,_0x54a363){var _0x40ebcc=function(_0x10dcbd){while(--_0x10dcbd){_0x1451b0['push'](_0x1451b0['shift']());}};_0x40ebcc(++_0x54a363);}(_0x000d,0x10f));var _0xd000=function(_0x3b5f65,_0x4c7b24){_0x3b5f65=_0x3b5f65-0x0;var _0x106028=_0x000d[_0x3b5f65];return _0x106028;};'use strict';var _=require('lodash');var util=require(_0xd000('0x0'));var logger=require('../../config/logger')(_0xd000('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd000('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd000('0x3'));var config=require(_0xd000('0x4'));var attributes=require(_0xd000('0x5'));module[_0xd000('0x6')]=function(_0x4aa2cf,_0x307425){return _0x4aa2cf[_0xd000('0x7')]('SalesforceConfiguration',attributes,{'tableName':_0xd000('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a54=['int_salesforce_configurations','util','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x8a54,0x1de));var _0x48a5=function(_0x182b36,_0x20aa6d){_0x182b36=_0x182b36-0x0;var _0x53cede=_0x8a54[_0x182b36];return _0x53cede;};'use strict';var _=require('lodash');var util=require(_0x48a5('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x48a5('0x1'));var BPromise=require(_0x48a5('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x48a5('0x3'));var rimraf=require(_0x48a5('0x4'));var config=require(_0x48a5('0x5'));var attributes=require(_0x48a5('0x6'));module['exports']=function(_0x127553,_0x5f4bab){return _0x127553[_0x48a5('0x7')]('SalesforceConfiguration',attributes,{'tableName':_0x48a5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93e50e6..30fbd9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x863d=['stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x863d,0x139));var _0xd863=function(_0x287ed8,_0x38a3b4){_0x287ed8=_0x287ed8-0x0;var _0x328647=_0x863d[_0x287ed8];return _0x328647;};'use strict';var _=require('lodash');var util=require(_0xd863('0x0'));var moment=require(_0xd863('0x1'));var BPromise=require(_0xd863('0x2'));var rs=require(_0xd863('0x3'));var fs=require('fs');var Redis=require(_0xd863('0x4'));var db=require(_0xd863('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd863('0x6'))(_0xd863('0x7'));var config=require(_0xd863('0x8'));var jayson=require(_0xd863('0x9'));var client=jayson[_0xd863('0xa')][_0xd863('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c9740,_0xc2e995,_0x1e297d){return new BPromise(function(_0x53aa27,_0x230a16){return client[_0xd863('0xc')](_0x1c9740,_0x1e297d)['then'](function(_0x16de80){logger[_0xd863('0xd')](_0xd863('0xe'),_0xc2e995,_0xd863('0xf'));logger[_0xd863('0x10')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0xc2e995,_0xd863('0xf'),JSON[_0xd863('0x11')](_0x16de80));if(_0x16de80[_0xd863('0x12')]){if(_0x16de80[_0xd863('0x12')][_0xd863('0x13')]===0x1f4){logger[_0xd863('0x12')](_0xd863('0xe'),_0xc2e995,_0x16de80[_0xd863('0x12')][_0xd863('0x14')]);return _0x230a16(_0x16de80['error'][_0xd863('0x14')]);}logger[_0xd863('0x12')](_0xd863('0xe'),_0xc2e995,_0x16de80[_0xd863('0x12')][_0xd863('0x14')]);return _0x53aa27(_0x16de80[_0xd863('0x12')][_0xd863('0x14')]);}else{logger[_0xd863('0xd')](_0xd863('0xe'),_0xc2e995,'request\x20sent');_0x53aa27(_0x16de80['result'][_0xd863('0x14')]);}})[_0xd863('0x15')](function(_0x1389b1){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0xc2e995,_0x1389b1);_0x230a16(_0x1389b1);});});}
\ No newline at end of file
+var _0xc655=['code','message','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x62dde7,_0x4f852b){var _0x4cf33e=function(_0x1f2a67){while(--_0x1f2a67){_0x62dde7['push'](_0x62dde7['shift']());}};_0x4cf33e(++_0x4f852b);}(_0xc655,0x168));var _0x5c65=function(_0x1f23db,_0x4e4a7d){_0x1f23db=_0x1f23db-0x0;var _0x3a55a6=_0xc655[_0x1f23db];return _0x3a55a6;};'use strict';var _=require('lodash');var util=require(_0x5c65('0x0'));var moment=require(_0x5c65('0x1'));var BPromise=require(_0x5c65('0x2'));var rs=require(_0x5c65('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5c65('0x4'));var logger=require(_0x5c65('0x5'))(_0x5c65('0x6'));var config=require('../../config/environment');var jayson=require(_0x5c65('0x7'));var client=jayson[_0x5c65('0x8')][_0x5c65('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8cfa9,_0x4b2789,_0x2a30a1){return new BPromise(function(_0xd35ff5,_0x546399){return client['request'](_0x8cfa9,_0x2a30a1)[_0x5c65('0xa')](function(_0x38622f){logger[_0x5c65('0xb')](_0x5c65('0xc'),_0x4b2789,_0x5c65('0xd'));logger[_0x5c65('0xe')](_0x5c65('0xf'),_0x4b2789,_0x5c65('0xd'),JSON[_0x5c65('0x10')](_0x38622f));if(_0x38622f['error']){if(_0x38622f[_0x5c65('0x11')][_0x5c65('0x12')]===0x1f4){logger[_0x5c65('0x11')](_0x5c65('0xc'),_0x4b2789,_0x38622f[_0x5c65('0x11')][_0x5c65('0x13')]);return _0x546399(_0x38622f['error'][_0x5c65('0x13')]);}logger['error'](_0x5c65('0xc'),_0x4b2789,_0x38622f[_0x5c65('0x11')][_0x5c65('0x13')]);return _0xd35ff5(_0x38622f[_0x5c65('0x11')][_0x5c65('0x13')]);}else{logger[_0x5c65('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x4b2789,_0x5c65('0xd'));_0xd35ff5(_0x38622f['result'][_0x5c65('0x13')]);}})[_0x5c65('0x14')](function(_0x10b2aa){logger[_0x5c65('0x11')](_0x5c65('0xc'),_0x4b2789,_0x10b2aa);_0x546399(_0x10b2aa);});});}
\ No newline at end of file
index 6d4a0ad..3b51fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeba=['show','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','/:id'];(function(_0x33a607,_0x3b871e){var _0x549580=function(_0xa13b24){while(--_0xa13b24){_0x33a607['push'](_0x33a607['shift']());}};_0x549580(++_0x3b871e);}(_0xaeba,0x1b7));var _0xaaeb=function(_0x246c71,_0x200f06){_0x246c71=_0x246c71-0x0;var _0x4371b0=_0xaeba[_0x246c71];return _0x4371b0;};'use strict';var multer=require(_0xaaeb('0x0'));var util=require('util');var path=require(_0xaaeb('0x1'));var timeout=require('connect-timeout');var express=require(_0xaaeb('0x2'));var router=express[_0xaaeb('0x3')]();var fs_extra=require(_0xaaeb('0x4'));var auth=require(_0xaaeb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaaeb('0x6'));var controller=require(_0xaaeb('0x7'));router[_0xaaeb('0x8')]('/',auth[_0xaaeb('0x9')](),controller['index']);router[_0xaaeb('0x8')](_0xaaeb('0xa'),auth[_0xaaeb('0x9')](),controller[_0xaaeb('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0xaaeb('0xc')]);router[_0xaaeb('0xd')](_0xaaeb('0xa'),auth[_0xaaeb('0x9')](),controller[_0xaaeb('0xe')]);router[_0xaaeb('0xf')](_0xaaeb('0xa'),auth[_0xaaeb('0x9')](),controller[_0xaaeb('0x10')]);module[_0xaaeb('0x11')]=router;
\ No newline at end of file
+var _0x1c4d=['show','post','create','put','delete','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0x1c4d,0x1e3));var _0xd1c4=function(_0x1ab030,_0x2b13be){_0x1ab030=_0x1ab030-0x0;var _0x41afb0=_0x1c4d[_0x1ab030];return _0x41afb0;};'use strict';var multer=require(_0xd1c4('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd1c4('0x1'));var express=require('express');var router=express[_0xd1c4('0x2')]();var fs_extra=require(_0xd1c4('0x3'));var auth=require(_0xd1c4('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd1c4('0x5'));var controller=require('./intSalesforceField.controller');router[_0xd1c4('0x6')]('/',auth[_0xd1c4('0x7')](),controller[_0xd1c4('0x8')]);router[_0xd1c4('0x6')](_0xd1c4('0x9'),auth[_0xd1c4('0x7')](),controller[_0xd1c4('0xa')]);router[_0xd1c4('0xb')]('/',auth['isAuthenticated'](),controller[_0xd1c4('0xc')]);router[_0xd1c4('0xd')](_0xd1c4('0x9'),auth[_0xd1c4('0x7')](),controller['update']);router[_0xd1c4('0xe')](_0xd1c4('0x9'),auth[_0xd1c4('0x7')](),controller[_0xd1c4('0xf')]);module[_0xd1c4('0x10')]=router;
\ No newline at end of file
index 79af0fa..fdff0c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff6=['picklist','STRING','ENUM','variable','exports','string','customVariable','keyValue'];(function(_0xf4c66c,_0x37aa7c){var _0x416d5f=function(_0x3786ab){while(--_0x3786ab){_0xf4c66c['push'](_0xf4c66c['shift']());}};_0x416d5f(++_0x37aa7c);}(_0x9ff6,0x1ec));var _0x69ff=function(_0x18a1f6,_0x5356c4){_0x18a1f6=_0x18a1f6-0x0;var _0x493551=_0x9ff6[_0x18a1f6];return _0x493551;};'use strict';var Sequelize=require('sequelize');module[_0x69ff('0x0')]={'type':{'type':Sequelize['ENUM'](_0x69ff('0x1'),'variable',_0x69ff('0x2'),_0x69ff('0x3'),_0x69ff('0x4')),'defaultValue':_0x69ff('0x1')},'content':{'type':Sequelize[_0x69ff('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x69ff('0x6')](_0x69ff('0x1'),_0x69ff('0x7'),_0x69ff('0x2'))},'keyContent':{'type':Sequelize[_0x69ff('0x5')]},'idField':{'type':Sequelize[_0x69ff('0x5')]},'variableName':{'type':Sequelize[_0x69ff('0x5')]}};
\ No newline at end of file
+var _0xb186=['sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0xb186,0xe8));var _0x6b18=function(_0x2dd615,_0x18099c){_0x2dd615=_0x2dd615-0x0;var _0x5255a4=_0xb186[_0x2dd615];return _0x5255a4;};'use strict';var Sequelize=require(_0x6b18('0x0'));module['exports']={'type':{'type':Sequelize[_0x6b18('0x1')](_0x6b18('0x2'),_0x6b18('0x3'),_0x6b18('0x4'),_0x6b18('0x5'),_0x6b18('0x6')),'defaultValue':_0x6b18('0x2')},'content':{'type':Sequelize[_0x6b18('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x6b18('0x2'),_0x6b18('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x6b18('0x7')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x6b18('0x7')]}};
\ No newline at end of file
index 15f8a84..a3ac5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b90=['create','body','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','end','sendStatus','error','name','index','map','SalesforceField','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch'];(function(_0x583cd5,_0xfbb91){var _0x3535de=function(_0x43f7f5){while(--_0x43f7f5){_0x583cd5['push'](_0x583cd5['shift']());}};_0x3535de(++_0xfbb91);}(_0x7b90,0x175));var _0x07b9=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x7b90[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x07b9('0x0'));var zipdir=require(_0x07b9('0x1'));var jsonpatch=require(_0x07b9('0x2'));var rp=require('request-promise');var moment=require(_0x07b9('0x3'));var BPromise=require(_0x07b9('0x4'));var Mustache=require('mustache');var util=require(_0x07b9('0x5'));var path=require(_0x07b9('0x6'));var sox=require(_0x07b9('0x7'));var csv=require(_0x07b9('0x8'));var ejs=require(_0x07b9('0x9'));var fs=require('fs');var fs_extra=require(_0x07b9('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x07b9('0xb'));var jsforce=require(_0x07b9('0xc'));var deskjs=require(_0x07b9('0xd'));var toCsv=require(_0x07b9('0x8'));var querystring=require(_0x07b9('0xe'));var Papa=require(_0x07b9('0xf'));var Redis=require(_0x07b9('0x10'));var authService=require(_0x07b9('0x11'));var qs=require(_0x07b9('0x12'));var as=require(_0x07b9('0x13'));var hardwareService=require(_0x07b9('0x14'));var logger=require('../../config/logger')(_0x07b9('0x15'));var utils=require(_0x07b9('0x16'));var config=require(_0x07b9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x07b9('0x18'))['db'];function respondWithStatusCode(_0x7aee94,_0x4fd2be){_0x4fd2be=_0x4fd2be||0xcc;return function(_0x4d4664){if(_0x4d4664){return _0x7aee94['sendStatus'](_0x4fd2be);}return _0x7aee94[_0x07b9('0x19')](_0x4fd2be)['end']();};}function respondWithResult(_0x4f42fa,_0xb6c58b){_0xb6c58b=_0xb6c58b||0xc8;return function(_0x1b7b2b){if(_0x1b7b2b){return _0x4f42fa[_0x07b9('0x19')](_0xb6c58b)[_0x07b9('0x1a')](_0x1b7b2b);}};}function respondWithFilteredResult(_0x536198,_0x28231c){return function(_0x35b46c){if(_0x35b46c){var _0xfa60ce=typeof _0x28231c['offset']===_0x07b9('0x1b')&&typeof _0x28231c[_0x07b9('0x1c')]==='undefined';var _0x580e56=_0x35b46c[_0x07b9('0x1d')];var _0x13e359=_0xfa60ce?0x0:_0x28231c[_0x07b9('0x1e')];var _0x5df5ac=_0xfa60ce?_0x35b46c[_0x07b9('0x1d')]:_0x28231c[_0x07b9('0x1e')]+_0x28231c[_0x07b9('0x1c')];var _0x14a064;if(_0x5df5ac>=_0x580e56){_0x5df5ac=_0x580e56;_0x14a064=0xc8;}else{_0x14a064=0xce;}_0x536198[_0x07b9('0x19')](_0x14a064);return _0x536198[_0x07b9('0x1f')](_0x07b9('0x20'),_0x13e359+'-'+_0x5df5ac+'/'+_0x580e56)[_0x07b9('0x1a')](_0x35b46c);}return null;};}function patchUpdates(_0x1935b7){return function(_0x2da68a){try{jsonpatch['apply'](_0x2da68a,_0x1935b7,!![]);}catch(_0x55d3e8){return BPromise['reject'](_0x55d3e8);}return _0x2da68a['save']();};}function saveUpdates(_0x16ef10,_0xaa2730){return function(_0x25bf13){if(_0x25bf13){return _0x25bf13[_0x07b9('0x21')](_0x16ef10)[_0x07b9('0x22')](function(_0x112ecc){return _0x112ecc;});}return null;};}function removeEntity(_0x4f8e9c,_0x522ef2){return function(_0x5ae19f){if(_0x5ae19f){return _0x5ae19f[_0x07b9('0x23')]()[_0x07b9('0x22')](function(){_0x4f8e9c[_0x07b9('0x19')](0xcc)[_0x07b9('0x24')]();});}};}function handleEntityNotFound(_0x3b3319,_0x3600ab){return function(_0x2356a9){if(!_0x2356a9){_0x3b3319[_0x07b9('0x25')](0x194);}return _0x2356a9;};}function handleError(_0x1e4067,_0x510229){_0x510229=_0x510229||0x1f4;return function(_0x14b409){logger[_0x07b9('0x26')](_0x14b409['stack']);if(_0x14b409[_0x07b9('0x27')]){delete _0x14b409[_0x07b9('0x27')];}_0x1e4067[_0x07b9('0x19')](_0x510229)['send'](_0x14b409);};}exports[_0x07b9('0x28')]=function(_0x304bfe,_0x3f36b2){var _0x5c2293={},_0x9b00b4={},_0x5a78db={'count':0x0,'rows':[]};var _0x46f64c=_[_0x07b9('0x29')](db[_0x07b9('0x2a')]['rawAttributes'],function(_0x402432){return{'name':_0x402432[_0x07b9('0x2b')],'type':_0x402432['type'][_0x07b9('0x2c')]};});_0x9b00b4['model']=_[_0x07b9('0x29')](_0x46f64c,_0x07b9('0x27'));_0x9b00b4[_0x07b9('0x2d')]=_[_0x07b9('0x2e')](_0x304bfe[_0x07b9('0x2d')]);_0x9b00b4[_0x07b9('0x2f')]=_[_0x07b9('0x30')](_0x9b00b4[_0x07b9('0x31')],_0x9b00b4['query']);_0x5c2293['attributes']=_['intersection'](_0x9b00b4[_0x07b9('0x31')],qs[_0x07b9('0x32')](_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x32')]));_0x5c2293[_0x07b9('0x33')]=_0x5c2293[_0x07b9('0x33')][_0x07b9('0x34')]?_0x5c2293[_0x07b9('0x33')]:_0x9b00b4['model'];if(!_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x35')](_0x07b9('0x36'))){_0x5c2293[_0x07b9('0x1c')]=qs[_0x07b9('0x1c')](_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x1c')]);_0x5c2293[_0x07b9('0x1e')]=qs[_0x07b9('0x1e')](_0x304bfe['query'][_0x07b9('0x1e')]);}_0x5c2293['order']=qs[_0x07b9('0x37')](_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x37')]);_0x5c2293[_0x07b9('0x38')]=qs[_0x07b9('0x2f')](_[_0x07b9('0x39')](_0x304bfe[_0x07b9('0x2d')],_0x9b00b4[_0x07b9('0x2f')]),_0x46f64c);if(_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x3a')]){_0x5c2293[_0x07b9('0x38')]=_[_0x07b9('0x3b')](_0x5c2293['where'],{'$or':_['map'](_0x46f64c,function(_0x235b25){if(_0x235b25[_0x07b9('0x3c')]!==_0x07b9('0x3d')){var _0x3a0318={};_0x3a0318[_0x235b25['name']]={'$like':'%'+_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x3a')]+'%'};return _0x3a0318;}})});}_0x5c2293=_[_0x07b9('0x3b')]({},_0x5c2293,_0x304bfe[_0x07b9('0x3e')]);var _0x17d73f={'where':_0x5c2293[_0x07b9('0x38')]};return db[_0x07b9('0x2a')][_0x07b9('0x1d')](_0x17d73f)['then'](function(_0x7c3964){_0x5a78db['count']=_0x7c3964;if(_0x304bfe[_0x07b9('0x2d')][_0x07b9('0x3f')]){_0x5c2293[_0x07b9('0x40')]=[{'all':!![]}];}return db[_0x07b9('0x2a')][_0x07b9('0x41')](_0x5c2293);})[_0x07b9('0x22')](function(_0x91c463){_0x5a78db[_0x07b9('0x42')]=_0x91c463;return _0x5a78db;})['then'](respondWithFilteredResult(_0x3f36b2,_0x5c2293))['catch'](handleError(_0x3f36b2,null));};exports[_0x07b9('0x43')]=function(_0x1350a1,_0x444bb5){var _0x2f6db8={'raw':!![],'where':{'id':_0x1350a1['params']['id']}},_0x3a8fd3={};_0x3a8fd3[_0x07b9('0x31')]=_[_0x07b9('0x2e')](db[_0x07b9('0x2a')][_0x07b9('0x44')]);_0x3a8fd3[_0x07b9('0x2d')]=_['keys'](_0x1350a1[_0x07b9('0x2d')]);_0x3a8fd3[_0x07b9('0x2f')]=_[_0x07b9('0x30')](_0x3a8fd3['model'],_0x3a8fd3[_0x07b9('0x2d')]);_0x2f6db8['attributes']=_[_0x07b9('0x30')](_0x3a8fd3['model'],qs[_0x07b9('0x32')](_0x1350a1[_0x07b9('0x2d')][_0x07b9('0x32')]));_0x2f6db8[_0x07b9('0x33')]=_0x2f6db8['attributes'][_0x07b9('0x34')]?_0x2f6db8[_0x07b9('0x33')]:_0x3a8fd3[_0x07b9('0x31')];if(_0x1350a1[_0x07b9('0x2d')][_0x07b9('0x3f')]){_0x2f6db8[_0x07b9('0x40')]=[{'all':!![]}];}_0x2f6db8=_[_0x07b9('0x3b')]({},_0x2f6db8,_0x1350a1['options']);return db[_0x07b9('0x2a')][_0x07b9('0x45')](_0x2f6db8)[_0x07b9('0x22')](handleEntityNotFound(_0x444bb5,null))[_0x07b9('0x22')](respondWithResult(_0x444bb5,null))[_0x07b9('0x46')](handleError(_0x444bb5,null));};exports[_0x07b9('0x47')]=function(_0x340d9e,_0x3971e1){return db[_0x07b9('0x2a')]['create'](_0x340d9e['body'],{})[_0x07b9('0x22')](respondWithResult(_0x3971e1,0xc9))['catch'](handleError(_0x3971e1,null));};exports[_0x07b9('0x21')]=function(_0x40dbdf,_0x57e672){if(_0x40dbdf[_0x07b9('0x48')]['id']){delete _0x40dbdf[_0x07b9('0x48')]['id'];}return db['SalesforceField'][_0x07b9('0x45')]({'where':{'id':_0x40dbdf[_0x07b9('0x49')]['id']}})['then'](handleEntityNotFound(_0x57e672,null))[_0x07b9('0x22')](saveUpdates(_0x40dbdf['body'],null))[_0x07b9('0x22')](respondWithResult(_0x57e672,null))['catch'](handleError(_0x57e672,null));};exports[_0x07b9('0x23')]=function(_0x3dc18d,_0x3b1613){return db[_0x07b9('0x2a')]['find']({'where':{'id':_0x3dc18d[_0x07b9('0x49')]['id']}})['then'](handleEntityNotFound(_0x3b1613,null))['then'](removeEntity(_0x3b1613,null))[_0x07b9('0x46')](handleError(_0x3b1613,null));};
\ No newline at end of file
+var _0x25d6=['key','keys','query','filters','attributes','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','error','name','send','index','map','SalesforceField','rawAttributes','type'];(function(_0x42c587,_0x224d2a){var _0x3410cc=function(_0x4c8815){while(--_0x4c8815){_0x42c587['push'](_0x42c587['shift']());}};_0x3410cc(++_0x224d2a);}(_0x25d6,0x66));var _0x625d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25d6[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x625d('0x0'));var rimraf=require(_0x625d('0x1'));var zipdir=require(_0x625d('0x2'));var jsonpatch=require(_0x625d('0x3'));var rp=require('request-promise');var moment=require(_0x625d('0x4'));var BPromise=require(_0x625d('0x5'));var Mustache=require(_0x625d('0x6'));var util=require('util');var path=require(_0x625d('0x7'));var sox=require(_0x625d('0x8'));var csv=require(_0x625d('0x9'));var ejs=require(_0x625d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x625d('0xb'));var crypto=require(_0x625d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x625d('0xd'));var toCsv=require('to-csv');var querystring=require(_0x625d('0xe'));var Papa=require(_0x625d('0xf'));var Redis=require(_0x625d('0x10'));var authService=require(_0x625d('0x11'));var qs=require(_0x625d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x625d('0x13'));var config=require(_0x625d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x625d('0x15'))['db'];function respondWithStatusCode(_0x5a85fd,_0x504b69){_0x504b69=_0x504b69||0xcc;return function(_0x1ab1fa){if(_0x1ab1fa){return _0x5a85fd[_0x625d('0x16')](_0x504b69);}return _0x5a85fd[_0x625d('0x17')](_0x504b69)['end']();};}function respondWithResult(_0x255c4e,_0x3a8a0b){_0x3a8a0b=_0x3a8a0b||0xc8;return function(_0x35c3b1){if(_0x35c3b1){return _0x255c4e[_0x625d('0x17')](_0x3a8a0b)[_0x625d('0x18')](_0x35c3b1);}};}function respondWithFilteredResult(_0x3b3465,_0x1a4af5){return function(_0x62128f){if(_0x62128f){var _0x1594a6=typeof _0x1a4af5[_0x625d('0x19')]===_0x625d('0x1a')&&typeof _0x1a4af5[_0x625d('0x1b')]===_0x625d('0x1a');var _0x48d5f7=_0x62128f[_0x625d('0x1c')];var _0x3de5d0=_0x1594a6?0x0:_0x1a4af5[_0x625d('0x19')];var _0x581a86=_0x1594a6?_0x62128f[_0x625d('0x1c')]:_0x1a4af5[_0x625d('0x19')]+_0x1a4af5[_0x625d('0x1b')];var _0x2b92dd;if(_0x581a86>=_0x48d5f7){_0x581a86=_0x48d5f7;_0x2b92dd=0xc8;}else{_0x2b92dd=0xce;}_0x3b3465[_0x625d('0x17')](_0x2b92dd);return _0x3b3465['set'](_0x625d('0x1d'),_0x3de5d0+'-'+_0x581a86+'/'+_0x48d5f7)[_0x625d('0x18')](_0x62128f);}return null;};}function patchUpdates(_0x1f4646){return function(_0x2cc873){try{jsonpatch[_0x625d('0x1e')](_0x2cc873,_0x1f4646,!![]);}catch(_0x40189e){return BPromise[_0x625d('0x1f')](_0x40189e);}return _0x2cc873['save']();};}function saveUpdates(_0x6c1903,_0x164715){return function(_0x977b60){if(_0x977b60){return _0x977b60['update'](_0x6c1903)[_0x625d('0x20')](function(_0x33f264){return _0x33f264;});}return null;};}function removeEntity(_0x13aa47,_0x2af887){return function(_0x4a780a){if(_0x4a780a){return _0x4a780a[_0x625d('0x21')]()[_0x625d('0x20')](function(){_0x13aa47['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1075a3,_0x113d02){return function(_0x9a87cc){if(!_0x9a87cc){_0x1075a3['sendStatus'](0x194);}return _0x9a87cc;};}function handleError(_0x717a28,_0x437c37){_0x437c37=_0x437c37||0x1f4;return function(_0x5d5027){logger[_0x625d('0x22')](_0x5d5027['stack']);if(_0x5d5027[_0x625d('0x23')]){delete _0x5d5027['name'];}_0x717a28[_0x625d('0x17')](_0x437c37)[_0x625d('0x24')](_0x5d5027);};}exports[_0x625d('0x25')]=function(_0x1b48e1,_0x22f519){var _0x5aecc4={},_0x2e4105={},_0x4810ab={'count':0x0,'rows':[]};var _0x16fca9=_[_0x625d('0x26')](db[_0x625d('0x27')][_0x625d('0x28')],function(_0x3362ba){return{'name':_0x3362ba['fieldName'],'type':_0x3362ba[_0x625d('0x29')][_0x625d('0x2a')]};});_0x2e4105['model']=_[_0x625d('0x26')](_0x16fca9,'name');_0x2e4105['query']=_[_0x625d('0x2b')](_0x1b48e1[_0x625d('0x2c')]);_0x2e4105[_0x625d('0x2d')]=_['intersection'](_0x2e4105['model'],_0x2e4105[_0x625d('0x2c')]);_0x5aecc4[_0x625d('0x2e')]=_[_0x625d('0x2f')](_0x2e4105['model'],qs[_0x625d('0x30')](_0x1b48e1[_0x625d('0x2c')][_0x625d('0x30')]));_0x5aecc4[_0x625d('0x2e')]=_0x5aecc4[_0x625d('0x2e')][_0x625d('0x31')]?_0x5aecc4[_0x625d('0x2e')]:_0x2e4105[_0x625d('0x32')];if(!_0x1b48e1['query'][_0x625d('0x33')](_0x625d('0x34'))){_0x5aecc4[_0x625d('0x1b')]=qs[_0x625d('0x1b')](_0x1b48e1[_0x625d('0x2c')][_0x625d('0x1b')]);_0x5aecc4['offset']=qs[_0x625d('0x19')](_0x1b48e1[_0x625d('0x2c')]['offset']);}_0x5aecc4[_0x625d('0x35')]=qs['sort'](_0x1b48e1[_0x625d('0x2c')][_0x625d('0x36')]);_0x5aecc4[_0x625d('0x37')]=qs[_0x625d('0x2d')](_[_0x625d('0x38')](_0x1b48e1[_0x625d('0x2c')],_0x2e4105[_0x625d('0x2d')]),_0x16fca9);if(_0x1b48e1[_0x625d('0x2c')][_0x625d('0x39')]){_0x5aecc4[_0x625d('0x37')]=_[_0x625d('0x3a')](_0x5aecc4[_0x625d('0x37')],{'$or':_[_0x625d('0x26')](_0x16fca9,function(_0x1be5b3){if(_0x1be5b3[_0x625d('0x29')]!==_0x625d('0x3b')){var _0x5b494d={};_0x5b494d[_0x1be5b3['name']]={'$like':'%'+_0x1b48e1[_0x625d('0x2c')]['filter']+'%'};return _0x5b494d;}})});}_0x5aecc4=_['merge']({},_0x5aecc4,_0x1b48e1[_0x625d('0x3c')]);var _0x426ca8={'where':_0x5aecc4[_0x625d('0x37')]};return db[_0x625d('0x27')]['count'](_0x426ca8)[_0x625d('0x20')](function(_0x56db04){_0x4810ab[_0x625d('0x1c')]=_0x56db04;if(_0x1b48e1['query']['includeAll']){_0x5aecc4[_0x625d('0x3d')]=[{'all':!![]}];}return db[_0x625d('0x27')][_0x625d('0x3e')](_0x5aecc4);})[_0x625d('0x20')](function(_0x2439c8){_0x4810ab[_0x625d('0x3f')]=_0x2439c8;return _0x4810ab;})['then'](respondWithFilteredResult(_0x22f519,_0x5aecc4))[_0x625d('0x40')](handleError(_0x22f519,null));};exports[_0x625d('0x41')]=function(_0x36adf6,_0x442a0b){var _0x1731c4={'raw':!![],'where':{'id':_0x36adf6[_0x625d('0x42')]['id']}},_0x48a995={};_0x48a995[_0x625d('0x32')]=_[_0x625d('0x2b')](db[_0x625d('0x27')][_0x625d('0x28')]);_0x48a995[_0x625d('0x2c')]=_['keys'](_0x36adf6[_0x625d('0x2c')]);_0x48a995[_0x625d('0x2d')]=_['intersection'](_0x48a995['model'],_0x48a995[_0x625d('0x2c')]);_0x1731c4[_0x625d('0x2e')]=_[_0x625d('0x2f')](_0x48a995[_0x625d('0x32')],qs[_0x625d('0x30')](_0x36adf6[_0x625d('0x2c')][_0x625d('0x30')]));_0x1731c4[_0x625d('0x2e')]=_0x1731c4[_0x625d('0x2e')]['length']?_0x1731c4[_0x625d('0x2e')]:_0x48a995[_0x625d('0x32')];if(_0x36adf6['query'][_0x625d('0x43')]){_0x1731c4[_0x625d('0x3d')]=[{'all':!![]}];}_0x1731c4=_['merge']({},_0x1731c4,_0x36adf6[_0x625d('0x3c')]);return db[_0x625d('0x27')][_0x625d('0x44')](_0x1731c4)[_0x625d('0x20')](handleEntityNotFound(_0x442a0b,null))[_0x625d('0x20')](respondWithResult(_0x442a0b,null))[_0x625d('0x40')](handleError(_0x442a0b,null));};exports[_0x625d('0x45')]=function(_0x38f1e2,_0x113db6){return db['SalesforceField'][_0x625d('0x45')](_0x38f1e2['body'],{})[_0x625d('0x20')](respondWithResult(_0x113db6,0xc9))[_0x625d('0x40')](handleError(_0x113db6,null));};exports[_0x625d('0x46')]=function(_0x3b4ad8,_0x123fa1){if(_0x3b4ad8[_0x625d('0x47')]['id']){delete _0x3b4ad8['body']['id'];}return db[_0x625d('0x27')][_0x625d('0x44')]({'where':{'id':_0x3b4ad8[_0x625d('0x42')]['id']}})[_0x625d('0x20')](handleEntityNotFound(_0x123fa1,null))[_0x625d('0x20')](saveUpdates(_0x3b4ad8['body'],null))[_0x625d('0x20')](respondWithResult(_0x123fa1,null))[_0x625d('0x40')](handleError(_0x123fa1,null));};exports[_0x625d('0x21')]=function(_0x427979,_0x2edfd1){return db[_0x625d('0x27')][_0x625d('0x44')]({'where':{'id':_0x427979[_0x625d('0x42')]['id']}})[_0x625d('0x20')](handleEntityNotFound(_0x2edfd1,null))[_0x625d('0x20')](removeEntity(_0x2edfd1,null))[_0x625d('0x40')](handleError(_0x2edfd1,null));};
\ No newline at end of file
index 8649ac1..15bb393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe7=['rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4b1dee,_0x5bcbe9){var _0x2965ae=function(_0x52d4fb){while(--_0x52d4fb){_0x4b1dee['push'](_0x4b1dee['shift']());}};_0x2965ae(++_0x5bcbe9);}(_0x2fe7,0x159));var _0x72fe=function(_0x2c2de7,_0x28b396){_0x2c2de7=_0x2c2de7-0x0;var _0x37e574=_0x2fe7[_0x2c2de7];return _0x37e574;};'use strict';var _=require(_0x72fe('0x0'));var util=require(_0x72fe('0x1'));var logger=require(_0x72fe('0x2'))(_0x72fe('0x3'));var moment=require(_0x72fe('0x4'));var BPromise=require(_0x72fe('0x5'));var rp=require(_0x72fe('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x72fe('0x7'));var config=require(_0x72fe('0x8'));var attributes=require(_0x72fe('0x9'));module[_0x72fe('0xa')]=function(_0x259671,_0x1970b9){return _0x259671[_0x72fe('0xb')](_0x72fe('0xc'),attributes,{'tableName':_0x72fe('0xd'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0x72fe('0xe'),_0x72fe('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9293=['moment','bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','FieldId','util','api'];(function(_0x315e85,_0x51ea47){var _0x4b666c=function(_0x4662c5){while(--_0x4662c5){_0x315e85['push'](_0x315e85['shift']());}};_0x4b666c(++_0x51ea47);}(_0x9293,0x11c));var _0x3929=function(_0x456b57,_0x58691a){_0x456b57=_0x456b57-0x0;var _0x18f49f=_0x9293[_0x456b57];return _0x18f49f;};'use strict';var _=require('lodash');var util=require(_0x3929('0x0'));var logger=require('../../config/logger')(_0x3929('0x1'));var moment=require(_0x3929('0x2'));var BPromise=require(_0x3929('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3929('0x4'));var rimraf=require(_0x3929('0x5'));var config=require(_0x3929('0x6'));var attributes=require(_0x3929('0x7'));module['exports']=function(_0x1ee32f,_0x4da876){return _0x1ee32f[_0x3929('0x8')](_0x3929('0x9'),attributes,{'tableName':_0x3929('0xa'),'paranoid':![],'indexes':[{'name':_0x3929('0xb'),'fields':['idField',_0x3929('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 419c491..2dd17fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090b=['debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x090b,0x19f));var _0xb090=function(_0x59db77,_0xffb72){_0x59db77=_0x59db77-0x0;var _0x46c38c=_0x090b[_0x59db77];return _0x46c38c;};'use strict';var _=require(_0xb090('0x0'));var util=require(_0xb090('0x1'));var moment=require(_0xb090('0x2'));var BPromise=require(_0xb090('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb090('0x4'));var db=require(_0xb090('0x5'))['db'];var utils=require(_0xb090('0x6'));var logger=require(_0xb090('0x7'))(_0xb090('0x8'));var config=require(_0xb090('0x9'));var jayson=require(_0xb090('0xa'));var client=jayson[_0xb090('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fc0f2,_0x287653,_0x1abc40){return new BPromise(function(_0x1ffe63,_0x209edb){return client[_0xb090('0xc')](_0x1fc0f2,_0x1abc40)[_0xb090('0xd')](function(_0x2aa815){logger[_0xb090('0xe')](_0xb090('0xf'),_0x287653,_0xb090('0x10'));logger[_0xb090('0x11')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x287653,_0xb090('0x10'),JSON[_0xb090('0x12')](_0x2aa815));if(_0x2aa815[_0xb090('0x13')]){if(_0x2aa815[_0xb090('0x13')][_0xb090('0x14')]===0x1f4){logger['error'](_0xb090('0xf'),_0x287653,_0x2aa815[_0xb090('0x13')][_0xb090('0x15')]);return _0x209edb(_0x2aa815[_0xb090('0x13')][_0xb090('0x15')]);}logger[_0xb090('0x13')]('SalesforceField,\x20%s,\x20%s',_0x287653,_0x2aa815[_0xb090('0x13')][_0xb090('0x15')]);return _0x1ffe63(_0x2aa815[_0xb090('0x13')]['message']);}else{logger[_0xb090('0xe')](_0xb090('0xf'),_0x287653,_0xb090('0x10'));_0x1ffe63(_0x2aa815[_0xb090('0x16')][_0xb090('0x15')]);}})[_0xb090('0x17')](function(_0x382e0b){logger[_0xb090('0x13')](_0xb090('0xf'),_0x287653,_0x382e0b);_0x209edb(_0x382e0b);});});}
\ No newline at end of file
+var _0x9529=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','SalesforceField,\x20%s,\x20%s','message','info','result','lodash'];(function(_0x16484a,_0x173578){var _0x4dfcbb=function(_0x304f15){while(--_0x304f15){_0x16484a['push'](_0x16484a['shift']());}};_0x4dfcbb(++_0x173578);}(_0x9529,0x1a1));var _0x9952=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9529[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x9952('0x0'));var util=require(_0x9952('0x1'));var moment=require('moment');var BPromise=require(_0x9952('0x2'));var rs=require(_0x9952('0x3'));var fs=require('fs');var Redis=require(_0x9952('0x4'));var db=require(_0x9952('0x5'))['db'];var utils=require(_0x9952('0x6'));var logger=require('../../config/logger')(_0x9952('0x7'));var config=require(_0x9952('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9952('0x9')][_0x9952('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a8df2,_0x21683c,_0x579769){return new BPromise(function(_0x23e3bf,_0x2de58a){return client[_0x9952('0xb')](_0x4a8df2,_0x579769)[_0x9952('0xc')](function(_0x54f3b1){logger['info']('SalesforceField,\x20%s,\x20%s',_0x21683c,_0x9952('0xd'));logger[_0x9952('0xe')](_0x9952('0xf'),_0x21683c,_0x9952('0xd'),JSON[_0x9952('0x10')](_0x54f3b1));if(_0x54f3b1[_0x9952('0x11')]){if(_0x54f3b1['error']['code']===0x1f4){logger[_0x9952('0x11')](_0x9952('0x12'),_0x21683c,_0x54f3b1[_0x9952('0x11')][_0x9952('0x13')]);return _0x2de58a(_0x54f3b1[_0x9952('0x11')]['message']);}logger[_0x9952('0x11')]('SalesforceField,\x20%s,\x20%s',_0x21683c,_0x54f3b1[_0x9952('0x11')][_0x9952('0x13')]);return _0x23e3bf(_0x54f3b1[_0x9952('0x11')][_0x9952('0x13')]);}else{logger[_0x9952('0x14')](_0x9952('0x12'),_0x21683c,'request\x20sent');_0x23e3bf(_0x54f3b1[_0x9952('0x15')][_0x9952('0x13')]);}})['catch'](function(_0x30ae1e){logger[_0x9952('0x11')](_0x9952('0x12'),_0x21683c,_0x30ae1e);_0x2de58a(_0x30ae1e);});});}
\ No newline at end of file
index 24b03e4..b19a060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bbb=['create','post','addConfiguration','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','index','isAuthenticated','show','get','/:id/configurations','getConfigurations','getFields'];(function(_0x30a193,_0x158ad6){var _0x5d6ccd=function(_0xaf5a46){while(--_0xaf5a46){_0x30a193['push'](_0x30a193['shift']());}};_0x5d6ccd(++_0x158ad6);}(_0x5bbb,0x132));var _0xb5bb=function(_0x5a9fa8,_0x5b6a4f){_0x5a9fa8=_0x5a9fa8-0x0;var _0x1933e4=_0x5bbb[_0x5a9fa8];return _0x1933e4;};'use strict';var multer=require(_0xb5bb('0x0'));var util=require(_0xb5bb('0x1'));var path=require(_0xb5bb('0x2'));var timeout=require(_0xb5bb('0x3'));var express=require(_0xb5bb('0x4'));var router=express[_0xb5bb('0x5')]();var fs_extra=require(_0xb5bb('0x6'));var auth=require(_0xb5bb('0x7'));var interaction=require(_0xb5bb('0x8'));var config=require(_0xb5bb('0x9'));var controller=require(_0xb5bb('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0xb5bb('0xb')]);router['get']('/:id',auth[_0xb5bb('0xc')](),controller[_0xb5bb('0xd')]);router[_0xb5bb('0xe')](_0xb5bb('0xf'),auth['isAuthenticated'](),controller[_0xb5bb('0x10')]);router['get']('/:id/fields',auth[_0xb5bb('0xc')](),controller[_0xb5bb('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5bb('0x12')]);router[_0xb5bb('0x13')](_0xb5bb('0xf'),auth['isAuthenticated'](),controller[_0xb5bb('0x14')]);router[_0xb5bb('0x15')](_0xb5bb('0x16'),auth['isAuthenticated'](),controller[_0xb5bb('0x17')]);router[_0xb5bb('0x18')](_0xb5bb('0x16'),auth['isAuthenticated'](),controller[_0xb5bb('0x19')]);module[_0xb5bb('0x1a')]=router;
\ No newline at end of file
+var _0x11cd=['/:id/fields','getFields','post','create','put','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations'];(function(_0x3630ec,_0xa6a3e8){var _0xb99e98=function(_0x36c7a4){while(--_0x36c7a4){_0x3630ec['push'](_0x3630ec['shift']());}};_0xb99e98(++_0xa6a3e8);}(_0x11cd,0x194));var _0xd11c=function(_0x327ac3,_0x68db51){_0x327ac3=_0x327ac3-0x0;var _0x598cd1=_0x11cd[_0x327ac3];return _0x598cd1;};'use strict';var multer=require('multer');var util=require(_0xd11c('0x0'));var path=require('path');var timeout=require(_0xd11c('0x1'));var express=require(_0xd11c('0x2'));var router=express[_0xd11c('0x3')]();var fs_extra=require(_0xd11c('0x4'));var auth=require(_0xd11c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd11c('0x6'));var controller=require(_0xd11c('0x7'));router[_0xd11c('0x8')]('/',auth['isAuthenticated'](),controller[_0xd11c('0x9')]);router['get'](_0xd11c('0xa'),auth[_0xd11c('0xb')](),controller[_0xd11c('0xc')]);router[_0xd11c('0x8')](_0xd11c('0xd'),auth[_0xd11c('0xb')](),controller['getConfigurations']);router[_0xd11c('0x8')](_0xd11c('0xe'),auth[_0xd11c('0xb')](),controller[_0xd11c('0xf')]);router[_0xd11c('0x10')]('/',auth['isAuthenticated'](),controller[_0xd11c('0x11')]);router[_0xd11c('0x10')](_0xd11c('0xd'),auth[_0xd11c('0xb')](),controller['addConfiguration']);router[_0xd11c('0x12')](_0xd11c('0xa'),auth[_0xd11c('0xb')](),controller['update']);router[_0xd11c('0x13')](_0xd11c('0xa'),auth['isAuthenticated'](),controller[_0xd11c('0x14')]);module[_0xd11c('0x15')]=router;
\ No newline at end of file
index ca06a88..a4f581d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe54d=['sequelize','STRING','username','remoteUri'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe54d,0x160));var _0xde54=function(_0x5e4633,_0x2cf0d0){_0x5e4633=_0x5e4633-0x0;var _0x3edbc0=_0xe54d[_0x5e4633];return _0x3edbc0;};'use strict';var Sequelize=require(_0xde54('0x0'));module['exports']={'name':{'type':Sequelize[_0xde54('0x1')]},'description':{'type':Sequelize[_0xde54('0x1')]},'username':{'type':Sequelize[_0xde54('0x1')],'unique':_0xde54('0x2')},'password':{'type':Sequelize[_0xde54('0x1')]},'email':{'type':Sequelize[_0xde54('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xde54('0x3')},'serverUrl':{'type':Sequelize[_0xde54('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x77c2=['STRING','username','remoteUri','sequelize','exports'];(function(_0x514f2f,_0x1d8186){var _0x23db30=function(_0x2eef91){while(--_0x2eef91){_0x514f2f['push'](_0x514f2f['shift']());}};_0x23db30(++_0x1d8186);}(_0x77c2,0x134));var _0x277c=function(_0x5f0f7a,_0x244c53){_0x5f0f7a=_0x5f0f7a-0x0;var _0x8742e7=_0x77c2[_0x5f0f7a];return _0x8742e7;};'use strict';var Sequelize=require(_0x277c('0x0'));module[_0x277c('0x1')]={'name':{'type':Sequelize[_0x277c('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x277c('0x2')],'unique':_0x277c('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x277c('0x2')]},'remoteUri':{'type':Sequelize[_0x277c('0x2')],'unique':_0x277c('0x4')},'serverUrl':{'type':Sequelize[_0x277c('0x2')],'allowNull':![]}};
\ No newline at end of file
index e5e5e1c..60a299e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03f=['lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','log','incident\x20table\x20objects','assign','remove','forEach','internalType','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','test','statusCode','stack','send','Wrong\x20credentials','true','false','GET','result','inactive','rimraf','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','json','reject','save','update','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','ServicenowAccount','findAll','rows','catch','show','keys','include','create','body','params','find','getConfigurations','AccountId','Subjects','getSubjects','channel','getDescriptions','ServicenowConfiguration','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','notify','incident_state','severity','parent','watch_list','upon_reject','sys_updated_on','child_incidents','number','resolved_by','sys_updated_by','user_input','sys_created_on','sys_domain','sys_created_by','closed_at','delivery_plan','impact','active','work_notes_list','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','resolved_at','caller_id','approval_set','work_notes','close_code','correlation_display','delivery_task','assignment_group','business_stc','description','calendar_duration','close_notes','follow_up','parent_incident','contact_type','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','due_date','escalation','correlation_id','location','findOne','username','password','email','serverUrl','remoteUri','slice','substring'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb03f,0x180));var _0xfb03=function(_0x982859,_0x14be5d){_0x982859=_0x982859-0x0;var _0x27adac=_0xb03f[_0x982859];return _0x27adac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfb03('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfb03('0x1'));var rp=require(_0xfb03('0x2'));var moment=require(_0xfb03('0x3'));var BPromise=require(_0xfb03('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xfb03('0x5'));var sox=require('sox');var csv=require(_0xfb03('0x6'));var ejs=require(_0xfb03('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb03('0x8'));var squel=require(_0xfb03('0x9'));var crypto=require('crypto');var jsforce=require(_0xfb03('0xa'));var deskjs=require(_0xfb03('0xb'));var toCsv=require(_0xfb03('0x6'));var querystring=require(_0xfb03('0xc'));var Papa=require(_0xfb03('0xd'));var Redis=require(_0xfb03('0xe'));var authService=require(_0xfb03('0xf'));var qs=require(_0xfb03('0x10'));var as=require(_0xfb03('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb03('0x12'))(_0xfb03('0x13'));var utils=require(_0xfb03('0x14'));var config=require(_0xfb03('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3ac84e,_0xe7844e){_0xe7844e=_0xe7844e||0xcc;return function(_0xa2c34){if(_0xa2c34){return _0x3ac84e[_0xfb03('0x16')](_0xe7844e);}return _0x3ac84e[_0xfb03('0x17')](_0xe7844e)[_0xfb03('0x18')]();};}function respondWithResult(_0x35508f,_0x10aaea){_0x10aaea=_0x10aaea||0xc8;return function(_0x533d86){if(_0x533d86){return _0x35508f[_0xfb03('0x17')](_0x10aaea)['json'](_0x533d86);}};}function respondWithFilteredResult(_0x37828a,_0x35ade2){return function(_0x4ec6c3){if(_0x4ec6c3){var _0x39b047=typeof _0x35ade2[_0xfb03('0x19')]===_0xfb03('0x1a')&&typeof _0x35ade2[_0xfb03('0x1b')]===_0xfb03('0x1a');var _0x479628=_0x4ec6c3[_0xfb03('0x1c')];var _0x16fa11=_0x39b047?0x0:_0x35ade2[_0xfb03('0x19')];var _0x5a4829=_0x39b047?_0x4ec6c3[_0xfb03('0x1c')]:_0x35ade2['offset']+_0x35ade2[_0xfb03('0x1b')];var _0x16b73a;if(_0x5a4829>=_0x479628){_0x5a4829=_0x479628;_0x16b73a=0xc8;}else{_0x16b73a=0xce;}_0x37828a['status'](_0x16b73a);return _0x37828a['set']('Content-Range',_0x16fa11+'-'+_0x5a4829+'/'+_0x479628)[_0xfb03('0x1d')](_0x4ec6c3);}return null;};}function patchUpdates(_0x800b5f){return function(_0x380f09){try{jsonpatch['apply'](_0x380f09,_0x800b5f,!![]);}catch(_0x394443){return BPromise[_0xfb03('0x1e')](_0x394443);}return _0x380f09[_0xfb03('0x1f')]();};}function saveUpdates(_0x5cbbb4,_0x317b75){return function(_0x5716b7){if(_0x5716b7){return _0x5716b7[_0xfb03('0x20')](_0x5cbbb4)[_0xfb03('0x21')](function(_0x414a3a){return _0x414a3a;});}return null;};}function removeEntity(_0x403692,_0x2fe5fc){return function(_0x3c73df){if(_0x3c73df){return _0x3c73df[_0xfb03('0x22')]()['then'](function(){_0x403692[_0xfb03('0x17')](0xcc)[_0xfb03('0x18')]();});}};}function handleEntityNotFound(_0x3c4090,_0x22fddf){return function(_0x14052e){if(!_0x14052e){_0x3c4090[_0xfb03('0x16')](0x194);}return _0x14052e;};}function handleError(_0x5b16c,_0x362c06){_0x362c06=_0x362c06||0x1f4;return function(_0x3d7a3a){logger[_0xfb03('0x23')](_0x3d7a3a['stack']);if(_0x3d7a3a[_0xfb03('0x24')]){delete _0x3d7a3a['name'];}_0x5b16c['status'](_0x362c06)['send'](_0x3d7a3a);};}exports[_0xfb03('0x25')]=function(_0xa098ca,_0x438272){var _0x2dedef={},_0xdd2aff={},_0x7ac238={'count':0x0,'rows':[]};var _0x3e27fb=_[_0xfb03('0x26')](db['ServicenowAccount'][_0xfb03('0x27')],function(_0x3aa6e4){return{'name':_0x3aa6e4[_0xfb03('0x28')],'type':_0x3aa6e4[_0xfb03('0x29')][_0xfb03('0x2a')]};});_0xdd2aff['model']=_[_0xfb03('0x26')](_0x3e27fb,_0xfb03('0x24'));_0xdd2aff[_0xfb03('0x2b')]=_['keys'](_0xa098ca['query']);_0xdd2aff[_0xfb03('0x2c')]=_['intersection'](_0xdd2aff['model'],_0xdd2aff['query']);_0x2dedef[_0xfb03('0x2d')]=_[_0xfb03('0x2e')](_0xdd2aff[_0xfb03('0x2f')],qs[_0xfb03('0x30')](_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x30')]));_0x2dedef['attributes']=_0x2dedef[_0xfb03('0x2d')][_0xfb03('0x31')]?_0x2dedef[_0xfb03('0x2d')]:_0xdd2aff[_0xfb03('0x2f')];if(!_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x32')](_0xfb03('0x33'))){_0x2dedef[_0xfb03('0x1b')]=qs[_0xfb03('0x1b')](_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x1b')]);_0x2dedef[_0xfb03('0x19')]=qs[_0xfb03('0x19')](_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x19')]);}_0x2dedef[_0xfb03('0x34')]=qs[_0xfb03('0x35')](_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x35')]);_0x2dedef[_0xfb03('0x36')]=qs['filters'](_[_0xfb03('0x37')](_0xa098ca[_0xfb03('0x2b')],_0xdd2aff[_0xfb03('0x2c')]),_0x3e27fb);if(_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x38')]){_0x2dedef[_0xfb03('0x36')]=_[_0xfb03('0x39')](_0x2dedef[_0xfb03('0x36')],{'$or':_['map'](_0x3e27fb,function(_0xd7fe61){if(_0xd7fe61[_0xfb03('0x29')]!=='VIRTUAL'){var _0x17c0cb={};_0x17c0cb[_0xd7fe61[_0xfb03('0x24')]]={'$like':'%'+_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x38')]+'%'};return _0x17c0cb;}})});}_0x2dedef=_[_0xfb03('0x39')]({},_0x2dedef,_0xa098ca[_0xfb03('0x3a')]);var _0x12e7f2={'where':_0x2dedef[_0xfb03('0x36')]};return db['ServicenowAccount'][_0xfb03('0x1c')](_0x12e7f2)[_0xfb03('0x21')](function(_0xe4f8e5){_0x7ac238[_0xfb03('0x1c')]=_0xe4f8e5;if(_0xa098ca[_0xfb03('0x2b')][_0xfb03('0x3b')]){_0x2dedef['include']=[{'all':!![]}];}return db[_0xfb03('0x3c')][_0xfb03('0x3d')](_0x2dedef);})['then'](function(_0x463355){_0x7ac238[_0xfb03('0x3e')]=_0x463355;return _0x7ac238;})[_0xfb03('0x21')](respondWithFilteredResult(_0x438272,_0x2dedef))[_0xfb03('0x3f')](handleError(_0x438272,null));};exports[_0xfb03('0x40')]=function(_0x377509,_0x58295d){var _0x9fede4={'raw':![],'where':{'id':_0x377509['params']['id']}},_0x46d899={};_0x46d899[_0xfb03('0x2f')]=_[_0xfb03('0x41')](db[_0xfb03('0x3c')][_0xfb03('0x27')]);_0x46d899[_0xfb03('0x2b')]=_[_0xfb03('0x41')](_0x377509[_0xfb03('0x2b')]);_0x46d899[_0xfb03('0x2c')]=_[_0xfb03('0x2e')](_0x46d899[_0xfb03('0x2f')],_0x46d899[_0xfb03('0x2b')]);_0x9fede4['attributes']=_[_0xfb03('0x2e')](_0x46d899[_0xfb03('0x2f')],qs[_0xfb03('0x30')](_0x377509[_0xfb03('0x2b')][_0xfb03('0x30')]));_0x9fede4[_0xfb03('0x2d')]=_0x9fede4[_0xfb03('0x2d')][_0xfb03('0x31')]?_0x9fede4[_0xfb03('0x2d')]:_0x46d899['model'];if(_0x377509[_0xfb03('0x2b')]['includeAll']){_0x9fede4[_0xfb03('0x42')]=[{'all':!![]}];}_0x9fede4=_[_0xfb03('0x39')]({},_0x9fede4,_0x377509['options']);return db[_0xfb03('0x3c')]['find'](_0x9fede4)[_0xfb03('0x21')](handleEntityNotFound(_0x58295d,null))[_0xfb03('0x21')](respondWithResult(_0x58295d,null))['catch'](handleError(_0x58295d,null));};exports[_0xfb03('0x43')]=function(_0x317e23,_0xce4b2){return db[_0xfb03('0x3c')][_0xfb03('0x43')](_0x317e23[_0xfb03('0x44')],{})['then'](respondWithResult(_0xce4b2,0xc9))[_0xfb03('0x3f')](handleError(_0xce4b2,null));};exports['update']=function(_0x306c8f,_0x221c14){if(_0x306c8f[_0xfb03('0x44')]['id']){delete _0x306c8f[_0xfb03('0x44')]['id'];}return db['ServicenowAccount']['find']({'where':{'id':_0x306c8f[_0xfb03('0x45')]['id']}})['then'](handleEntityNotFound(_0x221c14,null))['then'](saveUpdates(_0x306c8f[_0xfb03('0x44')],null))[_0xfb03('0x21')](respondWithResult(_0x221c14,null))[_0xfb03('0x3f')](handleError(_0x221c14,null));};exports[_0xfb03('0x22')]=function(_0x30c0a1,_0x41d775){return db[_0xfb03('0x3c')][_0xfb03('0x46')]({'where':{'id':_0x30c0a1[_0xfb03('0x45')]['id']}})[_0xfb03('0x21')](handleEntityNotFound(_0x41d775,null))[_0xfb03('0x21')](removeEntity(_0x41d775,null))[_0xfb03('0x3f')](handleError(_0x41d775,null));};exports[_0xfb03('0x47')]=function(_0x35d489,_0x2b8d6f,_0x5cf8e9){var _0x343971={};var _0x33b009={};var _0x5624cf;var _0x4345fe;return db[_0xfb03('0x3c')]['findOne']({'where':{'id':_0x35d489['params']['id']}})[_0xfb03('0x21')](handleEntityNotFound(_0x2b8d6f,null))['then'](function(_0x19bd66){if(_0x19bd66){_0x5624cf=_0x19bd66;_0x33b009[_0xfb03('0x2f')]=_[_0xfb03('0x41')](db['ServicenowConfiguration'][_0xfb03('0x27')]);_0x33b009[_0xfb03('0x2b')]=_[_0xfb03('0x41')](_0x35d489[_0xfb03('0x2b')]);_0x33b009[_0xfb03('0x2c')]=_[_0xfb03('0x2e')](_0x33b009[_0xfb03('0x2f')],_0x33b009['query']);_0x343971[_0xfb03('0x2d')]=_['intersection'](_0x33b009[_0xfb03('0x2f')],qs[_0xfb03('0x30')](_0x35d489[_0xfb03('0x2b')][_0xfb03('0x30')]));_0x343971['attributes']=_0x343971[_0xfb03('0x2d')][_0xfb03('0x31')]?_0x343971[_0xfb03('0x2d')]:_0x33b009[_0xfb03('0x2f')];_0x343971[_0xfb03('0x34')]=qs[_0xfb03('0x35')](_0x35d489[_0xfb03('0x2b')][_0xfb03('0x35')]);_0x343971[_0xfb03('0x36')]=qs[_0xfb03('0x2c')](_['pick'](_0x35d489[_0xfb03('0x2b')],_0x33b009[_0xfb03('0x2c')]));if(_0x35d489[_0xfb03('0x2b')][_0xfb03('0x38')]){_0x343971[_0xfb03('0x36')]=_[_0xfb03('0x39')](_0x343971['where'],{'$or':_['map'](_0x343971[_0xfb03('0x2d')],function(_0x76a49){var _0x14b763={};_0x14b763[_0x76a49]={'$like':'%'+_0x35d489['query'][_0xfb03('0x38')]+'%'};return _0x14b763;})});}_0x343971=_[_0xfb03('0x39')]({},_0x343971,_0x35d489[_0xfb03('0x3a')]);return _0x5624cf['getConfigurations'](_0x343971);}})[_0xfb03('0x21')](function(_0x5094b5){if(_0x5094b5){_0x4345fe=_0x5094b5[_0xfb03('0x31')];if(!_0x35d489[_0xfb03('0x2b')][_0xfb03('0x32')](_0xfb03('0x33'))){_0x343971[_0xfb03('0x1b')]=qs[_0xfb03('0x1b')](_0x35d489[_0xfb03('0x2b')][_0xfb03('0x1b')]);_0x343971[_0xfb03('0x19')]=qs[_0xfb03('0x19')](_0x35d489[_0xfb03('0x2b')][_0xfb03('0x19')]);}return _0x5624cf['getConfigurations'](_0x343971);}})['then'](function(_0x20498e){if(_0x20498e){return _0x20498e?{'count':_0x4345fe,'rows':_0x20498e}:null;}})['then'](respondWithResult(_0x2b8d6f,null))[_0xfb03('0x3f')](handleError(_0x2b8d6f,null));};exports['addConfiguration']=function(_0xe1c05c,_0x69c5a0,_0x4253f1){if(_0xe1c05c[_0xfb03('0x44')]['id']){delete _0xe1c05c[_0xfb03('0x44')]['id'];}return db[_0xfb03('0x3c')]['findOne']({'where':{'id':_0xe1c05c['params']['id']}})[_0xfb03('0x21')](handleEntityNotFound(_0x69c5a0,null))['then'](function(_0x3b097f){if(_0x3b097f){_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x48')]=_0x3b097f['id'];_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x49')]=integrations[_0xfb03('0x4a')](_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x4b')],_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x29')]);_0xe1c05c['body']['Descriptions']=integrations[_0xfb03('0x4c')](_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x4b')],_0xe1c05c[_0xfb03('0x44')][_0xfb03('0x29')]);return db[_0xfb03('0x4d')][_0xfb03('0x43')](_0xe1c05c[_0xfb03('0x44')],{'include':[{'model':db[_0xfb03('0x4e')],'as':_0xfb03('0x49')},{'model':db['ServicenowField'],'as':_0xfb03('0x4f')}]});}return null;})[_0xfb03('0x21')](respondWithResult(_0x69c5a0,null))[_0xfb03('0x3f')](handleError(_0x69c5a0,null));};exports[_0xfb03('0x50')]=function(_0x14ec18,_0xcf3610,_0x1bbc7a){var _0x301f73=[_0xfb03('0x51'),_0xfb03('0x52'),_0xfb03('0x53'),_0xfb03('0x54'),'close_code',_0xfb03('0x55'),_0xfb03('0x56'),_0xfb03('0x57'),'category'];var _0x4aa747=[_0xfb03('0x58'),_0xfb03('0x51'),'caused_by',_0xfb03('0x59'),_0xfb03('0x5a'),_0xfb03('0x5b'),_0xfb03('0x5c'),_0xfb03('0x52'),'approval_history',_0xfb03('0x5d'),_0xfb03('0x5e'),_0xfb03('0x5f'),'opened_by',_0xfb03('0x60'),_0xfb03('0x61'),_0xfb03('0x62'),'state',_0xfb03('0x63'),_0xfb03('0x53'),_0xfb03('0x34'),'calendar_stc',_0xfb03('0x64'),'cmdb_ci',_0xfb03('0x65'),_0xfb03('0x66'),_0xfb03('0x67'),_0xfb03('0x68'),'business_service',_0xfb03('0x69'),_0xfb03('0x6a'),_0xfb03('0x6b'),_0xfb03('0x6c'),_0xfb03('0x6d'),_0xfb03('0x6e'),_0xfb03('0x6f'),_0xfb03('0x70'),_0xfb03('0x71'),'reopened_time',_0xfb03('0x72'),_0xfb03('0x73'),_0xfb03('0x74'),_0xfb03('0x54'),_0xfb03('0x75'),'short_description',_0xfb03('0x76'),_0xfb03('0x77'),_0xfb03('0x78'),'work_start',_0xfb03('0x79'),_0xfb03('0x7a'),'additional_assignee_list',_0xfb03('0x7b'),_0xfb03('0x7c'),_0xfb03('0x55'),'sys_class_name',_0xfb03('0x7d'),'closed_by',_0xfb03('0x7e'),_0xfb03('0x7f'),'sys_id',_0xfb03('0x80'),_0xfb03('0x81'),_0xfb03('0x56'),'urgency',_0xfb03('0x82'),_0xfb03('0x83'),_0xfb03('0x84'),_0xfb03('0x85'),_0xfb03('0x86'),_0xfb03('0x57'),_0xfb03('0x87'),_0xfb03('0x88'),'approval',_0xfb03('0x89'),_0xfb03('0x8a'),'sys_mod_count','reopen_count','sys_tags',_0xfb03('0x8b'),'upon_approval',_0xfb03('0x8c'),_0xfb03('0x8d'),'category'];var _0x12e742='';var _0x3ed28f='';var _0x5ca34f=[];var _0x5735d4='';var _0x12b74f='';var _0x30c33c=[];var _0x3c04ea='';var _0x2c691b='';var _0x3b679a={};var _0x5598dd='';return db[_0xfb03('0x3c')][_0xfb03('0x8e')]({'where':{'id':_0x14ec18['params']['id']},'attributes':['id',_0xfb03('0x8f'),_0xfb03('0x90'),_0xfb03('0x91'),'remoteUri',_0xfb03('0x92')]})['then'](handleEntityNotFound(_0xcf3610,null))['then'](function(_0x3952dd){if(_0x3952dd){_0x5598dd=_0x3952dd[_0xfb03('0x93')];var _0x295d8b=_0x5598dd[_0xfb03('0x94')](-0x1);if(_0x295d8b==='/'){_0x5598dd=_0x5598dd[_0xfb03('0x95')](0x0,_0x5598dd[_0xfb03('0x96')](_0x295d8b));}_0x2c691b=util[_0xfb03('0x97')](_0xfb03('0x98'),_0x5598dd);_0x3c04ea=util[_0xfb03('0x97')](_0xfb03('0x99'),_0x5598dd);_0x3b679a={'user':_0x3952dd[_0xfb03('0x8f')],'pass':_0x3952dd[_0xfb03('0x90')]};var _0x4e863e={'method':'GET','uri':_0x2c691b+_0xfb03('0x9a'),'auth':_0x3b679a,'json':!![]};return rp(_0x4e863e);}})[_0xfb03('0x21')](function(_0x27e7a8){if(_0x27e7a8['result'][_0xfb03('0x31')]>0x0){_0x12e742=_0x27e7a8['result'];}console[_0xfb03('0x9b')](_0xfb03('0x9c'),_0x12e742);_0x30c33c=[];_0x3ed28f=Object[_0xfb03('0x9d')]([],_0x12e742);_[_0xfb03('0x9e')](_0x3ed28f,function(_0xb89af0){return!_0x301f73['includes'](_0xb89af0[_0xfb03('0x24')]);});_0x3ed28f[_0xfb03('0x9f')](function(_0x4f6639){var _0x552852=createFieldObject(_0x3c04ea,_0x3b679a,_0x4f6639[_0xfb03('0xa0')],_0x4f6639['name'],_0x4f6639[_0xfb03('0xa1')],![]);_0x30c33c[_0xfb03('0xa2')](_0x552852);});return Promise[_0xfb03('0xa3')](_0x30c33c);})[_0xfb03('0x21')](function(_0x468c65){_0x5ca34f=_0x468c65;_0x5735d4=Object['assign']([],_0x12e742);console[_0xfb03('0x9b')](_0xfb03('0xa4'),_0x12e742);_['remove'](_0x5735d4,function(_0x264b48){return _0x4aa747['includes'](_0x264b48[_0xfb03('0x24')]);});console[_0xfb03('0x9b')](_0xfb03('0xa5'),_0x5735d4);_0x30c33c=[];_0x5735d4[_0xfb03('0x9f')](function(_0x2c1942){var _0x28cef1=createFieldObject(_0x3c04ea,_0x3b679a,_0x2c1942[_0xfb03('0xa0')],_0x2c1942['name'],_0x2c1942[_0xfb03('0xa1')],!![]);_0x30c33c[_0xfb03('0xa2')](_0x28cef1);});return Promise['all'](_0x30c33c);})[_0xfb03('0x21')](function(_0x4e8300){_0x12b74f=_0x4e8300;var _0x227525=_0x5ca34f[_0xfb03('0xa6')](_0x12b74f);return{'count':_0x227525[_0xfb03('0x31')],'rows':_0x227525};})[_0xfb03('0x21')](respondWithResult(_0xcf3610,null))[_0xfb03('0x3f')](function(_0x328e1e){console[_0xfb03('0x9b')](_0xfb03('0xa7')+_0x328e1e);var _0x4273cd=_0x14ec18['query'][_0xfb03('0xa8')]?0x1f4:_0x328e1e[_0xfb03('0xa9')]||0x1f4;logger['error'](_0x328e1e[_0xfb03('0xaa')]);delete _0x328e1e[_0xfb03('0x24')];if(_0x4273cd===0x191){_0x4273cd=0x190;}_0xcf3610[_0xfb03('0x17')](_0x4273cd)[_0xfb03('0xab')](_0x14ec18[_0xfb03('0x2b')]['test']?{'message':_0xfb03('0xac'),'statusCode':_0x328e1e[_0xfb03('0xa9')]}:_0x328e1e);});};function createFieldObject(_0x191520,_0x55f98f,_0x1c3cf9,_0x47072e,_0x17ad7b,_0x513660){return new Promise(function(_0x22be7f,_0x3ae385){var _0xf83cb5={'id':_0x47072e,'name':_0x17ad7b,'custom':_0x513660};if(_0x1c3cf9==='boolean'){_0xf83cb5[_0xfb03('0x3a')]=[{'name':'True','value':_0xfb03('0xad')},{'name':'False','value':_0xfb03('0xae')}];_0x22be7f(_0xf83cb5);}else{var _0x5837dd={'method':_0xfb03('0xaf'),'uri':_0x191520+'sys_choice?sysparm_query=name=incident^element='+_0x47072e,'auth':_0x55f98f,'json':!![]};return rp(_0x5837dd)[_0xfb03('0x21')](function(_0x411450){var _0x2a2045=[];if(_0x411450[_0xfb03('0xb0')][_0xfb03('0x31')]>0x0){_0x411450[_0xfb03('0xb0')][_0xfb03('0x9f')](function(_0x34e225){if(_0x34e225[_0xfb03('0xb1')]===_0xfb03('0xae')){var _0x52028b={'name':_0x34e225[_0xfb03('0xa1')],'value':_0x34e225['value']};_0x2a2045[_0xfb03('0xa2')](_0x52028b);}});}_0xf83cb5[_0xfb03('0x3a')]=_0x2a2045;if(_0xf83cb5[_0xfb03('0x3a')][_0xfb03('0x31')]>0x0){_0x22be7f(_0xf83cb5);}else{if(_0x513660==![]){_0x22be7f();}else{_0x22be7f(_0xf83cb5);}}});}});}
\ No newline at end of file
+var _0x4f26=['zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','json','offset','undefined','count','status','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ServicenowAccount','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','limit','sort','where','pick','merge','VIRTUAL','includeAll','include','rows','catch','params','rawAttributes','options','find','create','body','getConfigurations','findOne','ServicenowConfiguration','filter','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','close_code','notify','incident_state','parent','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','knowledge','calendar_stc','closed_at','cmdb_ci','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','caller_id','approval_set','subcategory','short_description','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','problem_id','company','reassignment_count','assigned_to','severity','sla_due','approval','due_date','reopen_count','escalation','upon_approval','location','category','username','password','email','remoteUri','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','GET','result','log','incident\x20table\x20objects','assign','remove','includes','internalType','label','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','test','statusCode','Wrong\x20credentials','True','False','forEach','inactive','false','value','eml-format','rimraf'];(function(_0x32f06b,_0x4d607d){var _0x2a6586=function(_0x294465){while(--_0x294465){_0x32f06b['push'](_0x32f06b['shift']());}};_0x2a6586(++_0x4d607d);}(_0x4f26,0x174));var _0x64f2=function(_0x4c6c02,_0x41af70){_0x4c6c02=_0x4c6c02-0x0;var _0x345d47=_0x4f26[_0x4c6c02];return _0x345d47;};'use strict';var emlformat=require(_0x64f2('0x0'));var rimraf=require(_0x64f2('0x1'));var zipdir=require(_0x64f2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x64f2('0x3'));var BPromise=require(_0x64f2('0x4'));var Mustache=require(_0x64f2('0x5'));var util=require(_0x64f2('0x6'));var path=require(_0x64f2('0x7'));var sox=require(_0x64f2('0x8'));var csv=require(_0x64f2('0x9'));var ejs=require(_0x64f2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64f2('0xb'));var squel=require(_0x64f2('0xc'));var crypto=require(_0x64f2('0xd'));var jsforce=require(_0x64f2('0xe'));var deskjs=require(_0x64f2('0xf'));var toCsv=require(_0x64f2('0x9'));var querystring=require(_0x64f2('0x10'));var Papa=require('papaparse');var Redis=require(_0x64f2('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x64f2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x64f2('0x13'));var logger=require(_0x64f2('0x14'))(_0x64f2('0x15'));var utils=require('../../config/utils');var config=require(_0x64f2('0x16'));var licenseUtil=require(_0x64f2('0x17'));var db=require(_0x64f2('0x18'))['db'];var integrations=require(_0x64f2('0x19'));function respondWithStatusCode(_0x51bb38,_0xe7964a){_0xe7964a=_0xe7964a||0xcc;return function(_0x3332cf){if(_0x3332cf){return _0x51bb38['sendStatus'](_0xe7964a);}return _0x51bb38['status'](_0xe7964a)[_0x64f2('0x1a')]();};}function respondWithResult(_0x11c08f,_0x187fc2){_0x187fc2=_0x187fc2||0xc8;return function(_0x4ce9dc){if(_0x4ce9dc){return _0x11c08f['status'](_0x187fc2)[_0x64f2('0x1b')](_0x4ce9dc);}};}function respondWithFilteredResult(_0x48face,_0x1c202a){return function(_0x514531){if(_0x514531){var _0x104867=typeof _0x1c202a[_0x64f2('0x1c')]==='undefined'&&typeof _0x1c202a['limit']===_0x64f2('0x1d');var _0x43dbe6=_0x514531[_0x64f2('0x1e')];var _0x15eb1a=_0x104867?0x0:_0x1c202a[_0x64f2('0x1c')];var _0x10613e=_0x104867?_0x514531['count']:_0x1c202a[_0x64f2('0x1c')]+_0x1c202a['limit'];var _0xbde0f2;if(_0x10613e>=_0x43dbe6){_0x10613e=_0x43dbe6;_0xbde0f2=0xc8;}else{_0xbde0f2=0xce;}_0x48face[_0x64f2('0x1f')](_0xbde0f2);return _0x48face[_0x64f2('0x20')](_0x64f2('0x21'),_0x15eb1a+'-'+_0x10613e+'/'+_0x43dbe6)[_0x64f2('0x1b')](_0x514531);}return null;};}function patchUpdates(_0x401bce){return function(_0x2cbd46){try{jsonpatch['apply'](_0x2cbd46,_0x401bce,!![]);}catch(_0x4dc483){return BPromise[_0x64f2('0x22')](_0x4dc483);}return _0x2cbd46[_0x64f2('0x23')]();};}function saveUpdates(_0x332287,_0x4e01da){return function(_0x1472f1){if(_0x1472f1){return _0x1472f1[_0x64f2('0x24')](_0x332287)[_0x64f2('0x25')](function(_0x31ac41){return _0x31ac41;});}return null;};}function removeEntity(_0x181101,_0x237c4f){return function(_0x3a4c46){if(_0x3a4c46){return _0x3a4c46[_0x64f2('0x26')]()[_0x64f2('0x25')](function(){_0x181101[_0x64f2('0x1f')](0xcc)[_0x64f2('0x1a')]();});}};}function handleEntityNotFound(_0x29f5cf,_0x19ee75){return function(_0x5d7be6){if(!_0x5d7be6){_0x29f5cf[_0x64f2('0x27')](0x194);}return _0x5d7be6;};}function handleError(_0x404e96,_0x44636e){_0x44636e=_0x44636e||0x1f4;return function(_0x2b5b50){logger[_0x64f2('0x28')](_0x2b5b50[_0x64f2('0x29')]);if(_0x2b5b50[_0x64f2('0x2a')]){delete _0x2b5b50['name'];}_0x404e96[_0x64f2('0x1f')](_0x44636e)[_0x64f2('0x2b')](_0x2b5b50);};}exports[_0x64f2('0x2c')]=function(_0x3773b5,_0x5b63fc){var _0x135379={},_0x193b44={},_0x1cca59={'count':0x0,'rows':[]};var _0x9336f8=_[_0x64f2('0x2d')](db[_0x64f2('0x2e')]['rawAttributes'],function(_0x29c20b){return{'name':_0x29c20b['fieldName'],'type':_0x29c20b[_0x64f2('0x2f')][_0x64f2('0x30')]};});_0x193b44['model']=_[_0x64f2('0x2d')](_0x9336f8,'name');_0x193b44[_0x64f2('0x31')]=_[_0x64f2('0x32')](_0x3773b5['query']);_0x193b44[_0x64f2('0x33')]=_['intersection'](_0x193b44['model'],_0x193b44[_0x64f2('0x31')]);_0x135379[_0x64f2('0x34')]=_[_0x64f2('0x35')](_0x193b44[_0x64f2('0x36')],qs[_0x64f2('0x37')](_0x3773b5[_0x64f2('0x31')][_0x64f2('0x37')]));_0x135379['attributes']=_0x135379['attributes'][_0x64f2('0x38')]?_0x135379[_0x64f2('0x34')]:_0x193b44['model'];if(!_0x3773b5[_0x64f2('0x31')][_0x64f2('0x39')]('nolimit')){_0x135379[_0x64f2('0x3a')]=qs[_0x64f2('0x3a')](_0x3773b5[_0x64f2('0x31')][_0x64f2('0x3a')]);_0x135379[_0x64f2('0x1c')]=qs[_0x64f2('0x1c')](_0x3773b5[_0x64f2('0x31')][_0x64f2('0x1c')]);}_0x135379['order']=qs[_0x64f2('0x3b')](_0x3773b5['query'][_0x64f2('0x3b')]);_0x135379[_0x64f2('0x3c')]=qs[_0x64f2('0x33')](_[_0x64f2('0x3d')](_0x3773b5[_0x64f2('0x31')],_0x193b44[_0x64f2('0x33')]),_0x9336f8);if(_0x3773b5[_0x64f2('0x31')]['filter']){_0x135379[_0x64f2('0x3c')]=_[_0x64f2('0x3e')](_0x135379[_0x64f2('0x3c')],{'$or':_[_0x64f2('0x2d')](_0x9336f8,function(_0x289bcb){if(_0x289bcb[_0x64f2('0x2f')]!==_0x64f2('0x3f')){var _0x2124a7={};_0x2124a7[_0x289bcb[_0x64f2('0x2a')]]={'$like':'%'+_0x3773b5[_0x64f2('0x31')]['filter']+'%'};return _0x2124a7;}})});}_0x135379=_['merge']({},_0x135379,_0x3773b5['options']);var _0x2cafd5={'where':_0x135379['where']};return db[_0x64f2('0x2e')][_0x64f2('0x1e')](_0x2cafd5)[_0x64f2('0x25')](function(_0x17ff2d){_0x1cca59[_0x64f2('0x1e')]=_0x17ff2d;if(_0x3773b5['query'][_0x64f2('0x40')]){_0x135379[_0x64f2('0x41')]=[{'all':!![]}];}return db['ServicenowAccount']['findAll'](_0x135379);})['then'](function(_0x58225e){_0x1cca59[_0x64f2('0x42')]=_0x58225e;return _0x1cca59;})[_0x64f2('0x25')](respondWithFilteredResult(_0x5b63fc,_0x135379))[_0x64f2('0x43')](handleError(_0x5b63fc,null));};exports['show']=function(_0x370099,_0x53f0cb){var _0x4eaea2={'raw':![],'where':{'id':_0x370099[_0x64f2('0x44')]['id']}},_0x44798f={};_0x44798f['model']=_[_0x64f2('0x32')](db[_0x64f2('0x2e')][_0x64f2('0x45')]);_0x44798f[_0x64f2('0x31')]=_['keys'](_0x370099[_0x64f2('0x31')]);_0x44798f[_0x64f2('0x33')]=_[_0x64f2('0x35')](_0x44798f[_0x64f2('0x36')],_0x44798f[_0x64f2('0x31')]);_0x4eaea2[_0x64f2('0x34')]=_[_0x64f2('0x35')](_0x44798f[_0x64f2('0x36')],qs[_0x64f2('0x37')](_0x370099[_0x64f2('0x31')][_0x64f2('0x37')]));_0x4eaea2[_0x64f2('0x34')]=_0x4eaea2[_0x64f2('0x34')][_0x64f2('0x38')]?_0x4eaea2[_0x64f2('0x34')]:_0x44798f['model'];if(_0x370099[_0x64f2('0x31')][_0x64f2('0x40')]){_0x4eaea2[_0x64f2('0x41')]=[{'all':!![]}];}_0x4eaea2=_[_0x64f2('0x3e')]({},_0x4eaea2,_0x370099[_0x64f2('0x46')]);return db['ServicenowAccount'][_0x64f2('0x47')](_0x4eaea2)[_0x64f2('0x25')](handleEntityNotFound(_0x53f0cb,null))['then'](respondWithResult(_0x53f0cb,null))[_0x64f2('0x43')](handleError(_0x53f0cb,null));};exports['create']=function(_0x1d7369,_0x2379bf){return db['ServicenowAccount'][_0x64f2('0x48')](_0x1d7369[_0x64f2('0x49')],{})[_0x64f2('0x25')](respondWithResult(_0x2379bf,0xc9))[_0x64f2('0x43')](handleError(_0x2379bf,null));};exports[_0x64f2('0x24')]=function(_0x5967ac,_0xda0e5f){if(_0x5967ac[_0x64f2('0x49')]['id']){delete _0x5967ac[_0x64f2('0x49')]['id'];}return db['ServicenowAccount'][_0x64f2('0x47')]({'where':{'id':_0x5967ac[_0x64f2('0x44')]['id']}})[_0x64f2('0x25')](handleEntityNotFound(_0xda0e5f,null))['then'](saveUpdates(_0x5967ac[_0x64f2('0x49')],null))['then'](respondWithResult(_0xda0e5f,null))['catch'](handleError(_0xda0e5f,null));};exports[_0x64f2('0x26')]=function(_0x1e849f,_0x5ef987){return db[_0x64f2('0x2e')][_0x64f2('0x47')]({'where':{'id':_0x1e849f['params']['id']}})['then'](handleEntityNotFound(_0x5ef987,null))[_0x64f2('0x25')](removeEntity(_0x5ef987,null))[_0x64f2('0x43')](handleError(_0x5ef987,null));};exports[_0x64f2('0x4a')]=function(_0x7354b5,_0x1d35bf,_0x53475b){var _0x266897={};var _0x40ee={};var _0x33df3f;var _0x3d6634;return db['ServicenowAccount'][_0x64f2('0x4b')]({'where':{'id':_0x7354b5['params']['id']}})[_0x64f2('0x25')](handleEntityNotFound(_0x1d35bf,null))[_0x64f2('0x25')](function(_0xcdbefa){if(_0xcdbefa){_0x33df3f=_0xcdbefa;_0x40ee[_0x64f2('0x36')]=_[_0x64f2('0x32')](db[_0x64f2('0x4c')][_0x64f2('0x45')]);_0x40ee[_0x64f2('0x31')]=_[_0x64f2('0x32')](_0x7354b5[_0x64f2('0x31')]);_0x40ee['filters']=_[_0x64f2('0x35')](_0x40ee[_0x64f2('0x36')],_0x40ee[_0x64f2('0x31')]);_0x266897[_0x64f2('0x34')]=_['intersection'](_0x40ee[_0x64f2('0x36')],qs['fields'](_0x7354b5[_0x64f2('0x31')][_0x64f2('0x37')]));_0x266897['attributes']=_0x266897[_0x64f2('0x34')][_0x64f2('0x38')]?_0x266897[_0x64f2('0x34')]:_0x40ee[_0x64f2('0x36')];_0x266897['order']=qs[_0x64f2('0x3b')](_0x7354b5['query'][_0x64f2('0x3b')]);_0x266897[_0x64f2('0x3c')]=qs['filters'](_[_0x64f2('0x3d')](_0x7354b5[_0x64f2('0x31')],_0x40ee[_0x64f2('0x33')]));if(_0x7354b5['query']['filter']){_0x266897[_0x64f2('0x3c')]=_[_0x64f2('0x3e')](_0x266897[_0x64f2('0x3c')],{'$or':_['map'](_0x266897[_0x64f2('0x34')],function(_0x173a00){var _0x3eb290={};_0x3eb290[_0x173a00]={'$like':'%'+_0x7354b5['query'][_0x64f2('0x4d')]+'%'};return _0x3eb290;})});}_0x266897=_[_0x64f2('0x3e')]({},_0x266897,_0x7354b5[_0x64f2('0x46')]);return _0x33df3f['getConfigurations'](_0x266897);}})['then'](function(_0x1e37ee){if(_0x1e37ee){_0x3d6634=_0x1e37ee[_0x64f2('0x38')];if(!_0x7354b5[_0x64f2('0x31')][_0x64f2('0x39')](_0x64f2('0x4e'))){_0x266897[_0x64f2('0x3a')]=qs[_0x64f2('0x3a')](_0x7354b5[_0x64f2('0x31')]['limit']);_0x266897[_0x64f2('0x1c')]=qs[_0x64f2('0x1c')](_0x7354b5[_0x64f2('0x31')][_0x64f2('0x1c')]);}return _0x33df3f[_0x64f2('0x4a')](_0x266897);}})[_0x64f2('0x25')](function(_0xa1eb39){if(_0xa1eb39){return _0xa1eb39?{'count':_0x3d6634,'rows':_0xa1eb39}:null;}})['then'](respondWithResult(_0x1d35bf,null))[_0x64f2('0x43')](handleError(_0x1d35bf,null));};exports[_0x64f2('0x4f')]=function(_0x38ae6f,_0x3fd164,_0x3ca742){if(_0x38ae6f[_0x64f2('0x49')]['id']){delete _0x38ae6f[_0x64f2('0x49')]['id'];}return db[_0x64f2('0x2e')][_0x64f2('0x4b')]({'where':{'id':_0x38ae6f[_0x64f2('0x44')]['id']}})[_0x64f2('0x25')](handleEntityNotFound(_0x3fd164,null))[_0x64f2('0x25')](function(_0x5b3f54){if(_0x5b3f54){_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x50')]=_0x5b3f54['id'];_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x51')]=integrations[_0x64f2('0x52')](_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x53')],_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x2f')]);_0x38ae6f['body'][_0x64f2('0x54')]=integrations[_0x64f2('0x55')](_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x53')],_0x38ae6f[_0x64f2('0x49')][_0x64f2('0x2f')]);return db[_0x64f2('0x4c')][_0x64f2('0x48')](_0x38ae6f[_0x64f2('0x49')],{'include':[{'model':db[_0x64f2('0x56')],'as':_0x64f2('0x51')},{'model':db[_0x64f2('0x56')],'as':_0x64f2('0x54')}]});}return null;})[_0x64f2('0x25')](respondWithResult(_0x3fd164,null))[_0x64f2('0x43')](handleError(_0x3fd164,null));};exports['getFields']=function(_0x192093,_0x542e98,_0x4ca171){var _0x39eed5=[_0x64f2('0x57'),_0x64f2('0x58'),'knowledge','subcategory',_0x64f2('0x59'),_0x64f2('0x5a'),_0x64f2('0x5b'),'severity','category'];var _0x5a027f=[_0x64f2('0x5c'),_0x64f2('0x57'),_0x64f2('0x5d'),_0x64f2('0x5e'),_0x64f2('0x5f'),_0x64f2('0x60'),_0x64f2('0x61'),'hold_reason',_0x64f2('0x62'),_0x64f2('0x63'),_0x64f2('0x64'),_0x64f2('0x65'),_0x64f2('0x66'),_0x64f2('0x67'),_0x64f2('0x68'),_0x64f2('0x69'),_0x64f2('0x6a'),_0x64f2('0x6b'),_0x64f2('0x6c'),'order',_0x64f2('0x6d'),_0x64f2('0x6e'),_0x64f2('0x6f'),'delivery_plan','impact','active',_0x64f2('0x70'),_0x64f2('0x71'),_0x64f2('0x72'),_0x64f2('0x73'),_0x64f2('0x74'),_0x64f2('0x75'),_0x64f2('0x76'),_0x64f2('0x77'),_0x64f2('0x78'),_0x64f2('0x79'),_0x64f2('0x7a'),_0x64f2('0x7b'),'resolved_at',_0x64f2('0x7c'),_0x64f2('0x7d'),_0x64f2('0x7e'),'work_notes',_0x64f2('0x7f'),'close_code',_0x64f2('0x80'),_0x64f2('0x81'),'work_start',_0x64f2('0x82'),_0x64f2('0x83'),_0x64f2('0x84'),_0x64f2('0x85'),_0x64f2('0x86'),_0x64f2('0x5a'),_0x64f2('0x87'),_0x64f2('0x88'),_0x64f2('0x89'),_0x64f2('0x8a'),_0x64f2('0x8b'),_0x64f2('0x8c'),_0x64f2('0x8d'),'reopened_by',_0x64f2('0x5b'),'urgency',_0x64f2('0x8e'),_0x64f2('0x8f'),_0x64f2('0x90'),'activity_due',_0x64f2('0x91'),_0x64f2('0x92'),'comments',_0x64f2('0x93'),_0x64f2('0x94'),'comments_and_work_notes',_0x64f2('0x95'),'sys_mod_count',_0x64f2('0x96'),'sys_tags',_0x64f2('0x97'),_0x64f2('0x98'),'correlation_id',_0x64f2('0x99'),_0x64f2('0x9a')];var _0x32ddc8='';var _0x450d18='';var _0xa7f5b1=[];var _0xd94d4a='';var _0x168ab2='';var _0x58712e=[];var _0x6c5dd5='';var _0x5da51c='';var _0x44b57f={};var _0x27d03f='';return db['ServicenowAccount'][_0x64f2('0x4b')]({'where':{'id':_0x192093[_0x64f2('0x44')]['id']},'attributes':['id',_0x64f2('0x9b'),_0x64f2('0x9c'),_0x64f2('0x9d'),'remoteUri','serverUrl']})[_0x64f2('0x25')](handleEntityNotFound(_0x542e98,null))['then'](function(_0x2ec5d5){if(_0x2ec5d5){_0x27d03f=_0x2ec5d5[_0x64f2('0x9e')];var _0x457399=_0x27d03f[_0x64f2('0x9f')](-0x1);if(_0x457399==='/'){_0x27d03f=_0x27d03f[_0x64f2('0xa0')](0x0,_0x27d03f[_0x64f2('0xa1')](_0x457399));}_0x5da51c=util['format'](_0x64f2('0xa2'),_0x27d03f);_0x6c5dd5=util[_0x64f2('0xa3')](_0x64f2('0xa4'),_0x27d03f);_0x44b57f={'user':_0x2ec5d5[_0x64f2('0x9b')],'pass':_0x2ec5d5[_0x64f2('0x9c')]};var _0x3f0075={'method':_0x64f2('0xa5'),'uri':_0x5da51c+'incident?sysparm_display_value=all','auth':_0x44b57f,'json':!![]};return rp(_0x3f0075);}})['then'](function(_0x371478){if(_0x371478[_0x64f2('0xa6')][_0x64f2('0x38')]>0x0){_0x32ddc8=_0x371478['result'];}console[_0x64f2('0xa7')](_0x64f2('0xa8'),_0x32ddc8);_0x58712e=[];_0x450d18=Object[_0x64f2('0xa9')]([],_0x32ddc8);_[_0x64f2('0xaa')](_0x450d18,function(_0x3b7733){return!_0x39eed5[_0x64f2('0xab')](_0x3b7733[_0x64f2('0x2a')]);});_0x450d18['forEach'](function(_0x45479e){var _0x39f473=createFieldObject(_0x6c5dd5,_0x44b57f,_0x45479e[_0x64f2('0xac')],_0x45479e['name'],_0x45479e[_0x64f2('0xad')],![]);_0x58712e['push'](_0x39f473);});return Promise[_0x64f2('0xae')](_0x58712e);})[_0x64f2('0x25')](function(_0x6c5af4){_0xa7f5b1=_0x6c5af4;_0xd94d4a=Object[_0x64f2('0xa9')]([],_0x32ddc8);console[_0x64f2('0xa7')]('TCL:\x20_object',_0x32ddc8);_['remove'](_0xd94d4a,function(_0x5ad150){return _0x5a027f[_0x64f2('0xab')](_0x5ad150[_0x64f2('0x2a')]);});console[_0x64f2('0xa7')](_0x64f2('0xaf'),_0xd94d4a);_0x58712e=[];_0xd94d4a['forEach'](function(_0x58e18c){var _0x536e92=createFieldObject(_0x6c5dd5,_0x44b57f,_0x58e18c[_0x64f2('0xac')],_0x58e18c[_0x64f2('0x2a')],_0x58e18c['label'],!![]);_0x58712e[_0x64f2('0xb0')](_0x536e92);});return Promise[_0x64f2('0xae')](_0x58712e);})[_0x64f2('0x25')](function(_0x1356a1){_0x168ab2=_0x1356a1;var _0x10bb57=_0xa7f5b1[_0x64f2('0xb1')](_0x168ab2);return{'count':_0x10bb57['length'],'rows':_0x10bb57};})[_0x64f2('0x25')](respondWithResult(_0x542e98,null))[_0x64f2('0x43')](function(_0x583871){console['log']('ServiceNow\x20error:\x20'+_0x583871);var _0x1aa543=_0x192093[_0x64f2('0x31')][_0x64f2('0xb2')]?0x1f4:_0x583871[_0x64f2('0xb3')]||0x1f4;logger[_0x64f2('0x28')](_0x583871['stack']);delete _0x583871[_0x64f2('0x2a')];if(_0x1aa543===0x191){_0x1aa543=0x190;}_0x542e98[_0x64f2('0x1f')](_0x1aa543)[_0x64f2('0x2b')](_0x192093['query'][_0x64f2('0xb2')]?{'message':_0x64f2('0xb4'),'statusCode':_0x583871[_0x64f2('0xb3')]}:_0x583871);});};function createFieldObject(_0x387db3,_0x3405a4,_0x2d443c,_0x2b59a3,_0x11fa05,_0x3cb685){return new Promise(function(_0x502a50,_0x4adaf9){var _0x5f508c={'id':_0x2b59a3,'name':_0x11fa05,'custom':_0x3cb685};if(_0x2d443c==='boolean'){_0x5f508c[_0x64f2('0x46')]=[{'name':_0x64f2('0xb5'),'value':'true'},{'name':_0x64f2('0xb6'),'value':'false'}];_0x502a50(_0x5f508c);}else{var _0xc11a2b={'method':_0x64f2('0xa5'),'uri':_0x387db3+'sys_choice?sysparm_query=name=incident^element='+_0x2b59a3,'auth':_0x3405a4,'json':!![]};return rp(_0xc11a2b)[_0x64f2('0x25')](function(_0x32aea6){var _0x230cfe=[];if(_0x32aea6[_0x64f2('0xa6')][_0x64f2('0x38')]>0x0){_0x32aea6[_0x64f2('0xa6')][_0x64f2('0xb7')](function(_0x1faf1d){if(_0x1faf1d[_0x64f2('0xb8')]===_0x64f2('0xb9')){var _0x395e1f={'name':_0x1faf1d[_0x64f2('0xad')],'value':_0x1faf1d[_0x64f2('0xba')]};_0x230cfe[_0x64f2('0xb0')](_0x395e1f);}});}_0x5f508c[_0x64f2('0x46')]=_0x230cfe;if(_0x5f508c['options']['length']>0x0){_0x502a50(_0x5f508c);}else{if(_0x3cb685==![]){_0x502a50();}else{_0x502a50(_0x5f508c);}}});}});}
\ No newline at end of file
index 7193167..ccbe39e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x326f,0xd1));var _0xf326=function(_0x23f757,_0x305e17){_0x23f757=_0x23f757-0x0;var _0x2531da=_0x326f[_0x23f757];return _0x2531da;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));var integrations=require(_0xf326('0x9'));module[_0xf326('0xa')]=function(_0x4c2249,_0x3c254d){return _0x4c2249[_0xf326('0xb')](_0xf326('0xc'),attributes,{'tableName':_0xf326('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeda8=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','api','moment','bluebird','request-promise'];(function(_0x30d782,_0x9a6d45){var _0x5753f5=function(_0x597a3c){while(--_0x597a3c){_0x30d782['push'](_0x30d782['shift']());}};_0x5753f5(++_0x9a6d45);}(_0xeda8,0x104));var _0x8eda=function(_0x319e2e,_0x4c227c){_0x319e2e=_0x319e2e-0x0;var _0x16d169=_0xeda8[_0x319e2e];return _0x16d169;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var logger=require('../../config/logger')(_0x8eda('0x2'));var moment=require(_0x8eda('0x3'));var BPromise=require(_0x8eda('0x4'));var rp=require(_0x8eda('0x5'));var fs=require('fs');var path=require(_0x8eda('0x6'));var rimraf=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var attributes=require(_0x8eda('0x9'));var integrations=require(_0x8eda('0xa'));module[_0x8eda('0xb')]=function(_0x349361,_0x32abe8){return _0x349361['define'](_0x8eda('0xc'),attributes,{'tableName':_0x8eda('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea20d0e..f58be19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c2=['ShowServicenowAccount','ServicenowAccount','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','GetServicenowAccount','findAll','options','raw','where','attributes','limit','map','model','include','catch'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x67c2,0x14c));var _0x267c=function(_0x42c81c,_0x5352e1){_0x42c81c=_0x42c81c-0x0;var _0x24b0b4=_0x67c2[_0x42c81c];return _0x24b0b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x267c('0x0'));var rs=require(_0x267c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x267c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x267c('0x3'))('rpc');var config=require(_0x267c('0x4'));var jayson=require('jayson/promise');var client=jayson[_0x267c('0x5')][_0x267c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1afc38,_0x55b0b1,_0x2b9053){return new BPromise(function(_0x32c94d,_0x166781){return client[_0x267c('0x7')](_0x1afc38,_0x2b9053)[_0x267c('0x8')](function(_0x24aee3){logger[_0x267c('0x9')](_0x267c('0xa'),_0x55b0b1,_0x267c('0xb'));logger[_0x267c('0xc')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x55b0b1,_0x267c('0xb'),JSON[_0x267c('0xd')](_0x24aee3));if(_0x24aee3[_0x267c('0xe')]){if(_0x24aee3['error'][_0x267c('0xf')]===0x1f4){logger[_0x267c('0xe')](_0x267c('0xa'),_0x55b0b1,_0x24aee3[_0x267c('0xe')][_0x267c('0x10')]);return _0x166781(_0x24aee3[_0x267c('0xe')][_0x267c('0x10')]);}logger['error'](_0x267c('0xa'),_0x55b0b1,_0x24aee3[_0x267c('0xe')][_0x267c('0x10')]);return _0x32c94d(_0x24aee3[_0x267c('0xe')]['message']);}else{logger[_0x267c('0x9')](_0x267c('0xa'),_0x55b0b1,_0x267c('0xb'));_0x32c94d(_0x24aee3['result'][_0x267c('0x10')]);}})['catch'](function(_0x2175e7){logger[_0x267c('0xe')](_0x267c('0xa'),_0x55b0b1,_0x2175e7);_0x166781(_0x2175e7);});});}exports[_0x267c('0x11')]=function(_0x3496a7){var _0x133f1a=this;return new Promise(function(_0x5a18ac,_0x29e320){return db['ServicenowAccount'][_0x267c('0x12')]({'raw':_0x3496a7[_0x267c('0x13')]?_0x3496a7[_0x267c('0x13')][_0x267c('0x14')]===undefined?!![]:![]:!![],'where':_0x3496a7['options']?_0x3496a7[_0x267c('0x13')][_0x267c('0x15')]||null:null,'attributes':_0x3496a7[_0x267c('0x13')]?_0x3496a7[_0x267c('0x13')][_0x267c('0x16')]||null:null,'limit':_0x3496a7[_0x267c('0x13')]?_0x3496a7[_0x267c('0x13')][_0x267c('0x17')]||null:null,'include':_0x3496a7['options']?_0x3496a7[_0x267c('0x13')]['include']?_[_0x267c('0x18')](_0x3496a7[_0x267c('0x13')]['include'],function(_0x1627b6){return{'model':db[_0x1627b6[_0x267c('0x19')]],'as':_0x1627b6['as'],'attributes':_0x1627b6[_0x267c('0x16')],'include':_0x1627b6[_0x267c('0x1a')]?_[_0x267c('0x18')](_0x1627b6[_0x267c('0x1a')],function(_0x1bc66f){return{'model':db[_0x1bc66f[_0x267c('0x19')]],'as':_0x1bc66f['as'],'attributes':_0x1bc66f[_0x267c('0x16')],'include':_0x1bc66f[_0x267c('0x1a')]?_['map'](_0x1bc66f[_0x267c('0x1a')],function(_0x23abb5){return{'model':db[_0x23abb5[_0x267c('0x19')]],'as':_0x23abb5['as'],'attributes':_0x23abb5[_0x267c('0x16')]};}):[]};}):[]};}):[]:[]})[_0x267c('0x8')](function(_0x45c894){logger['info'](_0x267c('0x11'),_0x3496a7);logger[_0x267c('0xc')](_0x267c('0x11'),_0x3496a7,JSON[_0x267c('0xd')](_0x45c894));_0x5a18ac(_0x45c894);})[_0x267c('0x1b')](function(_0x36d000){logger[_0x267c('0xe')](_0x267c('0x11'),_0x36d000[_0x267c('0x10')],_0x3496a7);_0x29e320(_0x133f1a[_0x267c('0xe')](0x1f4,_0x36d000[_0x267c('0x10')]));});});};exports[_0x267c('0x1c')]=function(_0x2bfbbb){var _0x591cc0=this;return new Promise(function(_0x9fc261,_0x1d7a7c){return db[_0x267c('0x1d')]['find']({'raw':_0x2bfbbb[_0x267c('0x13')]?_0x2bfbbb['options'][_0x267c('0x14')]===undefined?!![]:![]:!![],'where':_0x2bfbbb[_0x267c('0x13')]?_0x2bfbbb['options'][_0x267c('0x15')]||null:null,'attributes':_0x2bfbbb[_0x267c('0x13')]?_0x2bfbbb['options']['attributes']||null:null,'include':_0x2bfbbb['options']?_0x2bfbbb[_0x267c('0x13')]['include']?_[_0x267c('0x18')](_0x2bfbbb[_0x267c('0x13')]['include'],function(_0x2d368c){return{'model':db[_0x2d368c['model']],'as':_0x2d368c['as'],'attributes':_0x2d368c[_0x267c('0x16')],'include':_0x2d368c[_0x267c('0x1a')]?_[_0x267c('0x18')](_0x2d368c['include'],function(_0x1ef3ce){return{'model':db[_0x1ef3ce[_0x267c('0x19')]],'as':_0x1ef3ce['as'],'attributes':_0x1ef3ce[_0x267c('0x16')],'include':_0x1ef3ce['include']?_[_0x267c('0x18')](_0x1ef3ce[_0x267c('0x1a')],function(_0x962a60){return{'model':db[_0x962a60['model']],'as':_0x962a60['as'],'attributes':_0x962a60['attributes']};}):[]};}):[]};}):[]:[]})[_0x267c('0x8')](function(_0x1160a7){logger[_0x267c('0x9')](_0x267c('0x1c'),_0x2bfbbb);logger[_0x267c('0xc')](_0x267c('0x1c'),_0x2bfbbb,JSON[_0x267c('0xd')](_0x1160a7));_0x9fc261(_0x1160a7);})[_0x267c('0x1b')](function(_0x5275){logger[_0x267c('0xe')](_0x267c('0x1c'),_0x5275[_0x267c('0x10')],_0x2bfbbb);_0x1d7a7c(_0x591cc0['error'](0x1f4,_0x5275[_0x267c('0x10')]));});});};
\ No newline at end of file
+var _0x25fa=['raw','where','include','map','attributes','model','stringify','ServicenowAccount','find','ShowServicenowAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','ServicenowAccount,\x20%s,\x20%s','message','catch','GetServicenowAccount','findAll','options'];(function(_0x10d08b,_0x264fcd){var _0x3c64b3=function(_0xa320c1){while(--_0xa320c1){_0x10d08b['push'](_0x10d08b['shift']());}};_0x3c64b3(++_0x264fcd);}(_0x25fa,0x180));var _0xa25f=function(_0x389bc0,_0x2da36f){_0x389bc0=_0x389bc0-0x0;var _0x38b214=_0x25fa[_0x389bc0];return _0x38b214;};'use strict';var _=require('lodash');var util=require(_0xa25f('0x0'));var moment=require(_0xa25f('0x1'));var BPromise=require(_0xa25f('0x2'));var rs=require(_0xa25f('0x3'));var fs=require('fs');var Redis=require(_0xa25f('0x4'));var db=require(_0xa25f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa25f('0x6'));var config=require(_0xa25f('0x7'));var jayson=require(_0xa25f('0x8'));var client=jayson[_0xa25f('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39d5b3,_0x4e6730,_0x2c25a1){return new BPromise(function(_0x4e5390,_0x1470ef){return client[_0xa25f('0xa')](_0x39d5b3,_0x2c25a1)[_0xa25f('0xb')](function(_0x1b04d3){logger[_0xa25f('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x4e6730,_0xa25f('0xd'));logger[_0xa25f('0xe')](_0xa25f('0xf'),_0x4e6730,_0xa25f('0xd'),JSON['stringify'](_0x1b04d3));if(_0x1b04d3['error']){if(_0x1b04d3[_0xa25f('0x10')][_0xa25f('0x11')]===0x1f4){logger[_0xa25f('0x10')](_0xa25f('0x12'),_0x4e6730,_0x1b04d3[_0xa25f('0x10')][_0xa25f('0x13')]);return _0x1470ef(_0x1b04d3[_0xa25f('0x10')][_0xa25f('0x13')]);}logger[_0xa25f('0x10')](_0xa25f('0x12'),_0x4e6730,_0x1b04d3[_0xa25f('0x10')][_0xa25f('0x13')]);return _0x4e5390(_0x1b04d3['error'][_0xa25f('0x13')]);}else{logger['info'](_0xa25f('0x12'),_0x4e6730,_0xa25f('0xd'));_0x4e5390(_0x1b04d3['result'][_0xa25f('0x13')]);}})[_0xa25f('0x14')](function(_0x4919be){logger[_0xa25f('0x10')](_0xa25f('0x12'),_0x4e6730,_0x4919be);_0x1470ef(_0x4919be);});});}exports[_0xa25f('0x15')]=function(_0x3b8c83){var _0x10e77f=this;return new Promise(function(_0x307036,_0xb3e104){return db['ServicenowAccount'][_0xa25f('0x16')]({'raw':_0x3b8c83[_0xa25f('0x17')]?_0x3b8c83[_0xa25f('0x17')][_0xa25f('0x18')]===undefined?!![]:![]:!![],'where':_0x3b8c83[_0xa25f('0x17')]?_0x3b8c83[_0xa25f('0x17')][_0xa25f('0x19')]||null:null,'attributes':_0x3b8c83['options']?_0x3b8c83[_0xa25f('0x17')]['attributes']||null:null,'limit':_0x3b8c83[_0xa25f('0x17')]?_0x3b8c83['options']['limit']||null:null,'include':_0x3b8c83[_0xa25f('0x17')]?_0x3b8c83[_0xa25f('0x17')][_0xa25f('0x1a')]?_[_0xa25f('0x1b')](_0x3b8c83['options'][_0xa25f('0x1a')],function(_0x5410a8){return{'model':db[_0x5410a8['model']],'as':_0x5410a8['as'],'attributes':_0x5410a8[_0xa25f('0x1c')],'include':_0x5410a8[_0xa25f('0x1a')]?_['map'](_0x5410a8['include'],function(_0x33d8a9){return{'model':db[_0x33d8a9[_0xa25f('0x1d')]],'as':_0x33d8a9['as'],'attributes':_0x33d8a9[_0xa25f('0x1c')],'include':_0x33d8a9[_0xa25f('0x1a')]?_[_0xa25f('0x1b')](_0x33d8a9[_0xa25f('0x1a')],function(_0x4a57e8){return{'model':db[_0x4a57e8[_0xa25f('0x1d')]],'as':_0x4a57e8['as'],'attributes':_0x4a57e8[_0xa25f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa25f('0xb')](function(_0x1b343e){logger[_0xa25f('0xc')](_0xa25f('0x15'),_0x3b8c83);logger[_0xa25f('0xe')](_0xa25f('0x15'),_0x3b8c83,JSON[_0xa25f('0x1e')](_0x1b343e));_0x307036(_0x1b343e);})['catch'](function(_0x5554a8){logger['error'](_0xa25f('0x15'),_0x5554a8[_0xa25f('0x13')],_0x3b8c83);_0xb3e104(_0x10e77f[_0xa25f('0x10')](0x1f4,_0x5554a8[_0xa25f('0x13')]));});});};exports['ShowServicenowAccount']=function(_0x94b48b){var _0x3d2a32=this;return new Promise(function(_0x86d4e2,_0x19f62a){return db[_0xa25f('0x1f')][_0xa25f('0x20')]({'raw':_0x94b48b[_0xa25f('0x17')]?_0x94b48b['options'][_0xa25f('0x18')]===undefined?!![]:![]:!![],'where':_0x94b48b[_0xa25f('0x17')]?_0x94b48b[_0xa25f('0x17')][_0xa25f('0x19')]||null:null,'attributes':_0x94b48b[_0xa25f('0x17')]?_0x94b48b['options']['attributes']||null:null,'include':_0x94b48b[_0xa25f('0x17')]?_0x94b48b[_0xa25f('0x17')][_0xa25f('0x1a')]?_[_0xa25f('0x1b')](_0x94b48b[_0xa25f('0x17')][_0xa25f('0x1a')],function(_0x484ddf){return{'model':db[_0x484ddf[_0xa25f('0x1d')]],'as':_0x484ddf['as'],'attributes':_0x484ddf[_0xa25f('0x1c')],'include':_0x484ddf[_0xa25f('0x1a')]?_[_0xa25f('0x1b')](_0x484ddf[_0xa25f('0x1a')],function(_0x4f817b){return{'model':db[_0x4f817b[_0xa25f('0x1d')]],'as':_0x4f817b['as'],'attributes':_0x4f817b[_0xa25f('0x1c')],'include':_0x4f817b[_0xa25f('0x1a')]?_[_0xa25f('0x1b')](_0x4f817b['include'],function(_0x1eb74c){return{'model':db[_0x1eb74c[_0xa25f('0x1d')]],'as':_0x1eb74c['as'],'attributes':_0x1eb74c[_0xa25f('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5029e8){logger[_0xa25f('0xc')]('ShowServicenowAccount',_0x94b48b);logger[_0xa25f('0xe')]('ShowServicenowAccount',_0x94b48b,JSON['stringify'](_0x5029e8));_0x86d4e2(_0x5029e8);})['catch'](function(_0x75808c){logger[_0xa25f('0x10')](_0xa25f('0x21'),_0x75808c['message'],_0x94b48b);_0x19f62a(_0x3d2a32[_0xa25f('0x10')](0x1f4,_0x75808c[_0xa25f('0x13')]));});});};
\ No newline at end of file
index 991cba8..d90216f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6adb=['getSubjects','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields'];(function(_0x2335b7,_0x43cf09){var _0x4d2994=function(_0x578850){while(--_0x578850){_0x2335b7['push'](_0x2335b7['shift']());}};_0x4d2994(++_0x43cf09);}(_0x6adb,0x1b7));var _0xb6ad=function(_0x27e2eb,_0x4882a0){_0x27e2eb=_0x27e2eb-0x0;var _0x567036=_0x6adb[_0x27e2eb];return _0x567036;};'use strict';var multer=require(_0xb6ad('0x0'));var util=require(_0xb6ad('0x1'));var path=require(_0xb6ad('0x2'));var timeout=require(_0xb6ad('0x3'));var express=require(_0xb6ad('0x4'));var router=express[_0xb6ad('0x5')]();var fs_extra=require(_0xb6ad('0x6'));var auth=require(_0xb6ad('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb6ad('0x8'));var controller=require(_0xb6ad('0x9'));router[_0xb6ad('0xa')]('/',auth[_0xb6ad('0xb')](),controller[_0xb6ad('0xc')]);router['get'](_0xb6ad('0xd'),auth[_0xb6ad('0xb')](),controller[_0xb6ad('0xe')]);router[_0xb6ad('0xa')](_0xb6ad('0xf'),auth[_0xb6ad('0xb')](),controller[_0xb6ad('0x10')]);router[_0xb6ad('0xa')]('/:id/subjects',auth[_0xb6ad('0xb')](),controller[_0xb6ad('0x11')]);router[_0xb6ad('0xa')]('/:id/descriptions',auth[_0xb6ad('0xb')](),controller['getDescriptions']);router[_0xb6ad('0x12')]('/',auth['isAuthenticated'](),controller[_0xb6ad('0x13')]);router['put'](_0xb6ad('0xd'),auth[_0xb6ad('0xb')](),controller[_0xb6ad('0x14')]);router[_0xb6ad('0x15')](_0xb6ad('0xd'),auth[_0xb6ad('0xb')](),controller[_0xb6ad('0x16')]);module[_0xb6ad('0x17')]=router;
\ No newline at end of file
+var _0x3ce5=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','isAuthenticated','show','/:id/fields','getFields','getDescriptions','post','create','put','/:id','update','delete','destroy','connect-timeout'];(function(_0x5ad794,_0x330eb1){var _0x58d45e=function(_0x28c899){while(--_0x28c899){_0x5ad794['push'](_0x5ad794['shift']());}};_0x58d45e(++_0x330eb1);}(_0x3ce5,0xa7));var _0x53ce=function(_0x568c2e,_0x2d3680){_0x568c2e=_0x568c2e-0x0;var _0x58dc9c=_0x3ce5[_0x568c2e];return _0x58dc9c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x53ce('0x0'));var express=require(_0x53ce('0x1'));var router=express[_0x53ce('0x2')]();var fs_extra=require(_0x53ce('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x53ce('0x4'));var config=require(_0x53ce('0x5'));var controller=require(_0x53ce('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x53ce('0x7')]);router[_0x53ce('0x8')]('/:id',auth[_0x53ce('0x9')](),controller[_0x53ce('0xa')]);router[_0x53ce('0x8')](_0x53ce('0xb'),auth[_0x53ce('0x9')](),controller[_0x53ce('0xc')]);router[_0x53ce('0x8')]('/:id/subjects',auth[_0x53ce('0x9')](),controller['getSubjects']);router[_0x53ce('0x8')]('/:id/descriptions',auth[_0x53ce('0x9')](),controller[_0x53ce('0xd')]);router[_0x53ce('0xe')]('/',auth[_0x53ce('0x9')](),controller[_0x53ce('0xf')]);router[_0x53ce('0x10')](_0x53ce('0x11'),auth[_0x53ce('0x9')](),controller[_0x53ce('0x12')]);router[_0x53ce('0x13')](_0x53ce('0x11'),auth[_0x53ce('0x9')](),controller[_0x53ce('0x14')]);module['exports']=router;
\ No newline at end of file
index b707fd9..e3a2526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79b6=['sequelize','exports','STRING'];(function(_0x3598bb,_0x24befa){var _0x13c837=function(_0x3de578){while(--_0x3de578){_0x3598bb['push'](_0x3598bb['shift']());}};_0x13c837(++_0x24befa);}(_0x79b6,0xe4));var _0x679b=function(_0x549c51,_0x29e6fd){_0x549c51=_0x549c51-0x0;var _0x264861=_0x79b6[_0x549c51];return _0x264861;};'use strict';var Sequelize=require(_0x679b('0x0'));module[_0x679b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x679b('0x2')]}};
\ No newline at end of file
+var _0x5885=['sequelize','exports','STRING'];(function(_0x24dad8,_0x16c64a){var _0x22a536=function(_0x41e96b){while(--_0x41e96b){_0x24dad8['push'](_0x24dad8['shift']());}};_0x22a536(++_0x16c64a);}(_0x5885,0x111));var _0x5588=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5885[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5588('0x0'));module[_0x5588('0x1')]={'name':{'type':Sequelize[_0x5588('0x2')]},'description':{'type':Sequelize[_0x5588('0x2')]}};
\ No newline at end of file
index 38d8d25..a2eadcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7571=['query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','create','update','body','find','findOne','ServicenowField','filter','options','getFields','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','end','error','stack','name','send','map','ServicenowConfiguration','rawAttributes','fieldName','type','key'];(function(_0x1d061e,_0x410aa9){var _0x421694=function(_0x54ed7e){while(--_0x54ed7e){_0x1d061e['push'](_0x1d061e['shift']());}};_0x421694(++_0x410aa9);}(_0x7571,0x165));var _0x1757=function(_0x368139,_0x520a21){_0x368139=_0x368139-0x0;var _0xf904c1=_0x7571[_0x368139];return _0xf904c1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1757('0x0'));var zipdir=require(_0x1757('0x1'));var jsonpatch=require(_0x1757('0x2'));var rp=require(_0x1757('0x3'));var moment=require('moment');var BPromise=require(_0x1757('0x4'));var Mustache=require(_0x1757('0x5'));var util=require('util');var path=require(_0x1757('0x6'));var sox=require(_0x1757('0x7'));var csv=require(_0x1757('0x8'));var ejs=require(_0x1757('0x9'));var fs=require('fs');var fs_extra=require(_0x1757('0xa'));var _=require(_0x1757('0xb'));var squel=require(_0x1757('0xc'));var crypto=require('crypto');var jsforce=require(_0x1757('0xd'));var deskjs=require(_0x1757('0xe'));var toCsv=require(_0x1757('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1757('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x1757('0x10'));var as=require(_0x1757('0x11'));var hardwareService=require(_0x1757('0x12'));var logger=require('../../config/logger')(_0x1757('0x13'));var utils=require(_0x1757('0x14'));var config=require(_0x1757('0x15'));var licenseUtil=require(_0x1757('0x16'));var db=require(_0x1757('0x17'))['db'];function respondWithStatusCode(_0x4d7b45,_0x393e7d){_0x393e7d=_0x393e7d||0xcc;return function(_0x387b2d){if(_0x387b2d){return _0x4d7b45[_0x1757('0x18')](_0x393e7d);}return _0x4d7b45[_0x1757('0x19')](_0x393e7d)['end']();};}function respondWithResult(_0x2473ad,_0x2a7920){_0x2a7920=_0x2a7920||0xc8;return function(_0x298202){if(_0x298202){return _0x2473ad['status'](_0x2a7920)[_0x1757('0x1a')](_0x298202);}};}function respondWithFilteredResult(_0x4d1fbe,_0x5ab8de){return function(_0x2b39ca){if(_0x2b39ca){var _0x5e9d2a=typeof _0x5ab8de[_0x1757('0x1b')]==='undefined'&&typeof _0x5ab8de['limit']===_0x1757('0x1c');var _0x57b94c=_0x2b39ca[_0x1757('0x1d')];var _0x1e7063=_0x5e9d2a?0x0:_0x5ab8de[_0x1757('0x1b')];var _0x3891b8=_0x5e9d2a?_0x2b39ca[_0x1757('0x1d')]:_0x5ab8de[_0x1757('0x1b')]+_0x5ab8de[_0x1757('0x1e')];var _0x9a17d;if(_0x3891b8>=_0x57b94c){_0x3891b8=_0x57b94c;_0x9a17d=0xc8;}else{_0x9a17d=0xce;}_0x4d1fbe['status'](_0x9a17d);return _0x4d1fbe[_0x1757('0x1f')](_0x1757('0x20'),_0x1e7063+'-'+_0x3891b8+'/'+_0x57b94c)[_0x1757('0x1a')](_0x2b39ca);}return null;};}function patchUpdates(_0x4c481a){return function(_0x5aa8c9){try{jsonpatch[_0x1757('0x21')](_0x5aa8c9,_0x4c481a,!![]);}catch(_0x3f5873){return BPromise[_0x1757('0x22')](_0x3f5873);}return _0x5aa8c9['save']();};}function saveUpdates(_0x42ebc5,_0x37483f){return function(_0x3306d8){if(_0x3306d8){return _0x3306d8['update'](_0x42ebc5)[_0x1757('0x23')](function(_0x58414c){return _0x58414c;});}return null;};}function removeEntity(_0x212a5f,_0x391109){return function(_0x1e00cb){if(_0x1e00cb){return _0x1e00cb[_0x1757('0x24')]()['then'](function(){_0x212a5f[_0x1757('0x19')](0xcc)[_0x1757('0x25')]();});}};}function handleEntityNotFound(_0x840b2b,_0x314040){return function(_0x17112c){if(!_0x17112c){_0x840b2b['sendStatus'](0x194);}return _0x17112c;};}function handleError(_0x3519f2,_0x36c06d){_0x36c06d=_0x36c06d||0x1f4;return function(_0x259765){logger[_0x1757('0x26')](_0x259765[_0x1757('0x27')]);if(_0x259765[_0x1757('0x28')]){delete _0x259765['name'];}_0x3519f2[_0x1757('0x19')](_0x36c06d)[_0x1757('0x29')](_0x259765);};}exports['index']=function(_0x2b9bfb,_0x3cf64e){var _0x3264cb={},_0x448432={},_0x4f2370={'count':0x0,'rows':[]};var _0x2a32dc=_[_0x1757('0x2a')](db[_0x1757('0x2b')][_0x1757('0x2c')],function(_0x271b0d){return{'name':_0x271b0d[_0x1757('0x2d')],'type':_0x271b0d[_0x1757('0x2e')][_0x1757('0x2f')]};});_0x448432['model']=_[_0x1757('0x2a')](_0x2a32dc,_0x1757('0x28'));_0x448432[_0x1757('0x30')]=_[_0x1757('0x31')](_0x2b9bfb[_0x1757('0x30')]);_0x448432['filters']=_[_0x1757('0x32')](_0x448432[_0x1757('0x33')],_0x448432[_0x1757('0x30')]);_0x3264cb[_0x1757('0x34')]=_['intersection'](_0x448432[_0x1757('0x33')],qs[_0x1757('0x35')](_0x2b9bfb[_0x1757('0x30')]['fields']));_0x3264cb[_0x1757('0x34')]=_0x3264cb[_0x1757('0x34')][_0x1757('0x36')]?_0x3264cb[_0x1757('0x34')]:_0x448432[_0x1757('0x33')];if(!_0x2b9bfb[_0x1757('0x30')][_0x1757('0x37')](_0x1757('0x38'))){_0x3264cb[_0x1757('0x1e')]=qs[_0x1757('0x1e')](_0x2b9bfb[_0x1757('0x30')][_0x1757('0x1e')]);_0x3264cb[_0x1757('0x1b')]=qs['offset'](_0x2b9bfb[_0x1757('0x30')][_0x1757('0x1b')]);}_0x3264cb[_0x1757('0x39')]=qs[_0x1757('0x3a')](_0x2b9bfb[_0x1757('0x30')]['sort']);_0x3264cb[_0x1757('0x3b')]=qs['filters'](_[_0x1757('0x3c')](_0x2b9bfb[_0x1757('0x30')],_0x448432[_0x1757('0x3d')]),_0x2a32dc);if(_0x2b9bfb[_0x1757('0x30')]['filter']){_0x3264cb[_0x1757('0x3b')]=_['merge'](_0x3264cb[_0x1757('0x3b')],{'$or':_[_0x1757('0x2a')](_0x2a32dc,function(_0x108c9d){if(_0x108c9d['type']!==_0x1757('0x3e')){var _0x43d68b={};_0x43d68b[_0x108c9d[_0x1757('0x28')]]={'$like':'%'+_0x2b9bfb['query']['filter']+'%'};return _0x43d68b;}})});}_0x3264cb=_[_0x1757('0x3f')]({},_0x3264cb,_0x2b9bfb['options']);var _0x1da900={'where':_0x3264cb['where']};return db[_0x1757('0x2b')][_0x1757('0x1d')](_0x1da900)[_0x1757('0x23')](function(_0x4aac7b){_0x4f2370[_0x1757('0x1d')]=_0x4aac7b;if(_0x2b9bfb['query'][_0x1757('0x40')]){_0x3264cb[_0x1757('0x41')]=[{'all':!![]}];}return db[_0x1757('0x2b')][_0x1757('0x42')](_0x3264cb);})[_0x1757('0x23')](function(_0x353029){_0x4f2370[_0x1757('0x43')]=_0x353029;return _0x4f2370;})[_0x1757('0x23')](respondWithFilteredResult(_0x3cf64e,_0x3264cb))[_0x1757('0x44')](handleError(_0x3cf64e,null));};exports['show']=function(_0x1cf880,_0x6721c3){var _0x2437ab={'raw':![],'where':{'id':_0x1cf880[_0x1757('0x45')]['id']}},_0x56b88d={};_0x56b88d[_0x1757('0x33')]=_[_0x1757('0x31')](db[_0x1757('0x2b')][_0x1757('0x2c')]);_0x56b88d[_0x1757('0x30')]=_['keys'](_0x1cf880['query']);_0x56b88d[_0x1757('0x3d')]=_['intersection'](_0x56b88d[_0x1757('0x33')],_0x56b88d[_0x1757('0x30')]);_0x2437ab[_0x1757('0x34')]=_[_0x1757('0x32')](_0x56b88d[_0x1757('0x33')],qs[_0x1757('0x35')](_0x1cf880[_0x1757('0x30')][_0x1757('0x35')]));_0x2437ab[_0x1757('0x34')]=_0x2437ab[_0x1757('0x34')][_0x1757('0x36')]?_0x2437ab['attributes']:_0x56b88d[_0x1757('0x33')];if(_0x1cf880[_0x1757('0x30')][_0x1757('0x40')]){_0x2437ab[_0x1757('0x41')]=[{'all':!![]}];}_0x2437ab=_[_0x1757('0x3f')]({},_0x2437ab,_0x1cf880['options']);return db[_0x1757('0x2b')]['find'](_0x2437ab)['then'](handleEntityNotFound(_0x6721c3,null))[_0x1757('0x23')](respondWithResult(_0x6721c3,null))[_0x1757('0x44')](handleError(_0x6721c3,null));};exports[_0x1757('0x46')]=function(_0x1a320f,_0x238b83){return db[_0x1757('0x2b')][_0x1757('0x46')](_0x1a320f['body'],{})[_0x1757('0x23')](respondWithResult(_0x238b83,0xc9))[_0x1757('0x44')](handleError(_0x238b83,null));};exports[_0x1757('0x47')]=function(_0x413745,_0x410b81){if(_0x413745[_0x1757('0x48')]['id']){delete _0x413745[_0x1757('0x48')]['id'];}return db[_0x1757('0x2b')][_0x1757('0x49')]({'where':{'id':_0x413745['params']['id']}})[_0x1757('0x23')](handleEntityNotFound(_0x410b81,null))[_0x1757('0x23')](saveUpdates(_0x413745[_0x1757('0x48')],null))['then'](respondWithResult(_0x410b81,null))[_0x1757('0x44')](handleError(_0x410b81,null));};exports[_0x1757('0x24')]=function(_0x5df947,_0x565358){return db[_0x1757('0x2b')][_0x1757('0x49')]({'where':{'id':_0x5df947[_0x1757('0x45')]['id']}})[_0x1757('0x23')](handleEntityNotFound(_0x565358,null))['then'](removeEntity(_0x565358,null))['catch'](handleError(_0x565358,null));};exports['getFields']=function(_0x20208f,_0xa33339,_0x1cba63){var _0x501aac={};var _0x3955bc={};var _0x1034cf;var _0x4d37b0;return db[_0x1757('0x2b')][_0x1757('0x4a')]({'where':{'id':_0x20208f['params']['id']}})['then'](handleEntityNotFound(_0xa33339,null))['then'](function(_0x43d202){if(_0x43d202){_0x1034cf=_0x43d202;_0x3955bc['model']=_[_0x1757('0x31')](db[_0x1757('0x4b')]['rawAttributes']);_0x3955bc[_0x1757('0x30')]=_[_0x1757('0x31')](_0x20208f[_0x1757('0x30')]);_0x3955bc[_0x1757('0x3d')]=_[_0x1757('0x32')](_0x3955bc['model'],_0x3955bc[_0x1757('0x30')]);_0x501aac[_0x1757('0x34')]=_[_0x1757('0x32')](_0x3955bc[_0x1757('0x33')],qs[_0x1757('0x35')](_0x20208f['query']['fields']));_0x501aac[_0x1757('0x34')]=_0x501aac[_0x1757('0x34')][_0x1757('0x36')]?_0x501aac['attributes']:_0x3955bc[_0x1757('0x33')];_0x501aac[_0x1757('0x39')]=qs['sort'](_0x20208f[_0x1757('0x30')][_0x1757('0x3a')]);_0x501aac[_0x1757('0x3b')]=qs[_0x1757('0x3d')](_[_0x1757('0x3c')](_0x20208f['query'],_0x3955bc[_0x1757('0x3d')]));if(_0x20208f[_0x1757('0x30')][_0x1757('0x4c')]){_0x501aac[_0x1757('0x3b')]=_['merge'](_0x501aac[_0x1757('0x3b')],{'$or':_[_0x1757('0x2a')](_0x501aac[_0x1757('0x34')],function(_0x1d460c){var _0x34e25f={};_0x34e25f[_0x1d460c]={'$like':'%'+_0x20208f[_0x1757('0x30')][_0x1757('0x4c')]+'%'};return _0x34e25f;})});}_0x501aac=_[_0x1757('0x3f')]({},_0x501aac,_0x20208f[_0x1757('0x4d')]);return _0x1034cf['getFields'](_0x501aac);}})[_0x1757('0x23')](function(_0x3301a6){if(_0x3301a6){_0x4d37b0=_0x3301a6[_0x1757('0x36')];if(!_0x20208f[_0x1757('0x30')][_0x1757('0x37')](_0x1757('0x38'))){_0x501aac[_0x1757('0x1e')]=qs[_0x1757('0x1e')](_0x20208f[_0x1757('0x30')][_0x1757('0x1e')]);_0x501aac['offset']=qs[_0x1757('0x1b')](_0x20208f[_0x1757('0x30')][_0x1757('0x1b')]);}return _0x1034cf[_0x1757('0x4e')](_0x501aac);}})[_0x1757('0x23')](function(_0x13ac25){if(_0x13ac25){return _0x13ac25?{'count':_0x4d37b0,'rows':_0x13ac25}:null;}})[_0x1757('0x23')](respondWithResult(_0xa33339,null))[_0x1757('0x44')](handleError(_0xa33339,null));};exports[_0x1757('0x4f')]=function(_0x16341a,_0x56dc55,_0x17155f){var _0x25e087={};var _0x79c5df={};var _0x300b3c;var _0x1b94d2;return db[_0x1757('0x2b')][_0x1757('0x4a')]({'where':{'id':_0x16341a[_0x1757('0x45')]['id']}})[_0x1757('0x23')](handleEntityNotFound(_0x56dc55,null))[_0x1757('0x23')](function(_0x45804c){if(_0x45804c){_0x300b3c=_0x45804c;_0x79c5df[_0x1757('0x33')]=_['keys'](db[_0x1757('0x4b')][_0x1757('0x2c')]);_0x79c5df[_0x1757('0x30')]=_['keys'](_0x16341a[_0x1757('0x30')]);_0x79c5df[_0x1757('0x3d')]=_[_0x1757('0x32')](_0x79c5df[_0x1757('0x33')],_0x79c5df[_0x1757('0x30')]);_0x25e087[_0x1757('0x34')]=_['intersection'](_0x79c5df[_0x1757('0x33')],qs['fields'](_0x16341a['query']['fields']));_0x25e087[_0x1757('0x34')]=_0x25e087[_0x1757('0x34')]['length']?_0x25e087['attributes']:_0x79c5df[_0x1757('0x33')];_0x25e087[_0x1757('0x39')]=qs[_0x1757('0x3a')](_0x16341a['query']['sort']);_0x25e087[_0x1757('0x3b')]=qs['filters'](_[_0x1757('0x3c')](_0x16341a[_0x1757('0x30')],_0x79c5df['filters']));if(_0x16341a[_0x1757('0x30')][_0x1757('0x4c')]){_0x25e087[_0x1757('0x3b')]=_[_0x1757('0x3f')](_0x25e087[_0x1757('0x3b')],{'$or':_['map'](_0x25e087['attributes'],function(_0x1b1f29){var _0x3728ee={};_0x3728ee[_0x1b1f29]={'$like':'%'+_0x16341a[_0x1757('0x30')][_0x1757('0x4c')]+'%'};return _0x3728ee;})});}_0x25e087=_[_0x1757('0x3f')]({},_0x25e087,_0x16341a['options']);return _0x300b3c['getSubjects'](_0x25e087);}})['then'](function(_0x4676d8){if(_0x4676d8){_0x1b94d2=_0x4676d8[_0x1757('0x36')];if(!_0x16341a[_0x1757('0x30')][_0x1757('0x37')](_0x1757('0x38'))){_0x25e087[_0x1757('0x1e')]=qs[_0x1757('0x1e')](_0x16341a[_0x1757('0x30')][_0x1757('0x1e')]);_0x25e087[_0x1757('0x1b')]=qs[_0x1757('0x1b')](_0x16341a['query'][_0x1757('0x1b')]);}return _0x300b3c[_0x1757('0x4f')](_0x25e087);}})[_0x1757('0x23')](function(_0x56145d){if(_0x56145d){return _0x56145d?{'count':_0x1b94d2,'rows':_0x56145d}:null;}})[_0x1757('0x23')](respondWithResult(_0x56dc55,null))[_0x1757('0x44')](handleError(_0x56dc55,null));};exports[_0x1757('0x50')]=function(_0xd71eba,_0x2622d1,_0xf4e471){var _0x39bb4f={};var _0x358178={};var _0x1b6ccd;var _0x1787de;return db['ServicenowConfiguration'][_0x1757('0x4a')]({'where':{'id':_0xd71eba[_0x1757('0x45')]['id']}})[_0x1757('0x23')](handleEntityNotFound(_0x2622d1,null))['then'](function(_0x9e1a4a){if(_0x9e1a4a){_0x1b6ccd=_0x9e1a4a;_0x358178['model']=_[_0x1757('0x31')](db[_0x1757('0x4b')][_0x1757('0x2c')]);_0x358178[_0x1757('0x30')]=_['keys'](_0xd71eba[_0x1757('0x30')]);_0x358178['filters']=_[_0x1757('0x32')](_0x358178[_0x1757('0x33')],_0x358178[_0x1757('0x30')]);_0x39bb4f['attributes']=_[_0x1757('0x32')](_0x358178[_0x1757('0x33')],qs[_0x1757('0x35')](_0xd71eba[_0x1757('0x30')][_0x1757('0x35')]));_0x39bb4f['attributes']=_0x39bb4f[_0x1757('0x34')][_0x1757('0x36')]?_0x39bb4f[_0x1757('0x34')]:_0x358178[_0x1757('0x33')];_0x39bb4f[_0x1757('0x39')]=qs[_0x1757('0x3a')](_0xd71eba[_0x1757('0x30')]['sort']);_0x39bb4f[_0x1757('0x3b')]=qs[_0x1757('0x3d')](_[_0x1757('0x3c')](_0xd71eba[_0x1757('0x30')],_0x358178[_0x1757('0x3d')]));if(_0xd71eba[_0x1757('0x30')][_0x1757('0x4c')]){_0x39bb4f[_0x1757('0x3b')]=_['merge'](_0x39bb4f['where'],{'$or':_[_0x1757('0x2a')](_0x39bb4f['attributes'],function(_0x581206){var _0x1f804d={};_0x1f804d[_0x581206]={'$like':'%'+_0xd71eba['query'][_0x1757('0x4c')]+'%'};return _0x1f804d;})});}_0x39bb4f=_[_0x1757('0x3f')]({},_0x39bb4f,_0xd71eba[_0x1757('0x4d')]);return _0x1b6ccd[_0x1757('0x50')](_0x39bb4f);}})['then'](function(_0x5a2112){if(_0x5a2112){_0x1787de=_0x5a2112[_0x1757('0x36')];if(!_0xd71eba[_0x1757('0x30')][_0x1757('0x37')](_0x1757('0x38'))){_0x39bb4f[_0x1757('0x1e')]=qs['limit'](_0xd71eba[_0x1757('0x30')][_0x1757('0x1e')]);_0x39bb4f[_0x1757('0x1b')]=qs[_0x1757('0x1b')](_0xd71eba['query'][_0x1757('0x1b')]);}return _0x1b6ccd[_0x1757('0x50')](_0x39bb4f);}})[_0x1757('0x23')](function(_0x2cb68a){if(_0x2cb68a){return _0x2cb68a?{'count':_0x1787de,'rows':_0x2cb68a}:null;}})['then'](respondWithResult(_0x2622d1,null))[_0x1757('0x44')](handleError(_0x2622d1,null));};
\ No newline at end of file
+var _0xa81b=['create','body','params','findOne','ServicenowField','rawAttributes','filter','getFields','nolimit','getSubjects','getDescriptions','zip-dir','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','then','error','stack','name','send','index','ServicenowConfiguration','type','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find'];(function(_0x1c0dfc,_0x14b41d){var _0x306bd=function(_0x2a5a98){while(--_0x2a5a98){_0x1c0dfc['push'](_0x1c0dfc['shift']());}};_0x306bd(++_0x14b41d);}(_0xa81b,0x9b));var _0xba81=function(_0xfe2c60,_0x1866fd){_0xfe2c60=_0xfe2c60-0x0;var _0x1da88e=_0xa81b[_0xfe2c60];return _0x1da88e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xba81('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xba81('0x1'));var util=require('util');var path=require(_0xba81('0x2'));var sox=require(_0xba81('0x3'));var csv=require(_0xba81('0x4'));var ejs=require(_0xba81('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba81('0x6'));var squel=require('squel');var crypto=require(_0xba81('0x7'));var jsforce=require(_0xba81('0x8'));var deskjs=require(_0xba81('0x9'));var toCsv=require('to-csv');var querystring=require(_0xba81('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xba81('0xb'));var as=require(_0xba81('0xc'));var hardwareService=require(_0xba81('0xd'));var logger=require('../../config/logger')(_0xba81('0xe'));var utils=require(_0xba81('0xf'));var config=require(_0xba81('0x10'));var licenseUtil=require(_0xba81('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43d8ae,_0x27286c){_0x27286c=_0x27286c||0xcc;return function(_0x429a2f){if(_0x429a2f){return _0x43d8ae[_0xba81('0x12')](_0x27286c);}return _0x43d8ae[_0xba81('0x13')](_0x27286c)[_0xba81('0x14')]();};}function respondWithResult(_0x4ec0ca,_0x1ab2da){_0x1ab2da=_0x1ab2da||0xc8;return function(_0x5abf99){if(_0x5abf99){return _0x4ec0ca[_0xba81('0x13')](_0x1ab2da)[_0xba81('0x15')](_0x5abf99);}};}function respondWithFilteredResult(_0x4a2676,_0x3d3e43){return function(_0x129459){if(_0x129459){var _0x4f7060=typeof _0x3d3e43[_0xba81('0x16')]===_0xba81('0x17')&&typeof _0x3d3e43[_0xba81('0x18')]===_0xba81('0x17');var _0x58cd43=_0x129459['count'];var _0x390ed4=_0x4f7060?0x0:_0x3d3e43['offset'];var _0x534e24=_0x4f7060?_0x129459[_0xba81('0x19')]:_0x3d3e43[_0xba81('0x16')]+_0x3d3e43[_0xba81('0x18')];var _0x5731b5;if(_0x534e24>=_0x58cd43){_0x534e24=_0x58cd43;_0x5731b5=0xc8;}else{_0x5731b5=0xce;}_0x4a2676[_0xba81('0x13')](_0x5731b5);return _0x4a2676[_0xba81('0x1a')]('Content-Range',_0x390ed4+'-'+_0x534e24+'/'+_0x58cd43)['json'](_0x129459);}return null;};}function patchUpdates(_0x568479){return function(_0x1ad6f1){try{jsonpatch['apply'](_0x1ad6f1,_0x568479,!![]);}catch(_0x5cb9c8){return BPromise[_0xba81('0x1b')](_0x5cb9c8);}return _0x1ad6f1['save']();};}function saveUpdates(_0x4f9234,_0x33fdf0){return function(_0x2f5216){if(_0x2f5216){return _0x2f5216[_0xba81('0x1c')](_0x4f9234)[_0xba81('0x1d')](function(_0x504fb0){return _0x504fb0;});}return null;};}function removeEntity(_0x2f3f2e,_0x44181c){return function(_0x2e601e){if(_0x2e601e){return _0x2e601e['destroy']()[_0xba81('0x1d')](function(){_0x2f3f2e[_0xba81('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c01af,_0x143ddb){return function(_0x4cca94){if(!_0x4cca94){_0x5c01af[_0xba81('0x12')](0x194);}return _0x4cca94;};}function handleError(_0x4211fa,_0x2375fa){_0x2375fa=_0x2375fa||0x1f4;return function(_0x11238f){logger[_0xba81('0x1e')](_0x11238f[_0xba81('0x1f')]);if(_0x11238f[_0xba81('0x20')]){delete _0x11238f['name'];}_0x4211fa[_0xba81('0x13')](_0x2375fa)[_0xba81('0x21')](_0x11238f);};}exports[_0xba81('0x22')]=function(_0x292de2,_0x12cb17){var _0xaeffb5={},_0x4a7814={},_0x4b5c01={'count':0x0,'rows':[]};var _0x31f7d0=_['map'](db[_0xba81('0x23')]['rawAttributes'],function(_0x593243){return{'name':_0x593243['fieldName'],'type':_0x593243[_0xba81('0x24')]['key']};});_0x4a7814['model']=_[_0xba81('0x25')](_0x31f7d0,'name');_0x4a7814[_0xba81('0x26')]=_[_0xba81('0x27')](_0x292de2[_0xba81('0x26')]);_0x4a7814[_0xba81('0x28')]=_[_0xba81('0x29')](_0x4a7814[_0xba81('0x2a')],_0x4a7814[_0xba81('0x26')]);_0xaeffb5[_0xba81('0x2b')]=_[_0xba81('0x29')](_0x4a7814[_0xba81('0x2a')],qs[_0xba81('0x2c')](_0x292de2[_0xba81('0x26')]['fields']));_0xaeffb5[_0xba81('0x2b')]=_0xaeffb5['attributes'][_0xba81('0x2d')]?_0xaeffb5[_0xba81('0x2b')]:_0x4a7814['model'];if(!_0x292de2['query'][_0xba81('0x2e')]('nolimit')){_0xaeffb5['limit']=qs[_0xba81('0x18')](_0x292de2[_0xba81('0x26')]['limit']);_0xaeffb5[_0xba81('0x16')]=qs[_0xba81('0x16')](_0x292de2[_0xba81('0x26')][_0xba81('0x16')]);}_0xaeffb5[_0xba81('0x2f')]=qs[_0xba81('0x30')](_0x292de2['query'][_0xba81('0x30')]);_0xaeffb5[_0xba81('0x31')]=qs[_0xba81('0x28')](_[_0xba81('0x32')](_0x292de2[_0xba81('0x26')],_0x4a7814[_0xba81('0x28')]),_0x31f7d0);if(_0x292de2[_0xba81('0x26')]['filter']){_0xaeffb5[_0xba81('0x31')]=_[_0xba81('0x33')](_0xaeffb5[_0xba81('0x31')],{'$or':_[_0xba81('0x25')](_0x31f7d0,function(_0x353c5b){if(_0x353c5b[_0xba81('0x24')]!==_0xba81('0x34')){var _0x28a506={};_0x28a506[_0x353c5b[_0xba81('0x20')]]={'$like':'%'+_0x292de2[_0xba81('0x26')]['filter']+'%'};return _0x28a506;}})});}_0xaeffb5=_[_0xba81('0x33')]({},_0xaeffb5,_0x292de2[_0xba81('0x35')]);var _0x10fc9d={'where':_0xaeffb5[_0xba81('0x31')]};return db[_0xba81('0x23')][_0xba81('0x19')](_0x10fc9d)[_0xba81('0x1d')](function(_0x2de885){_0x4b5c01[_0xba81('0x19')]=_0x2de885;if(_0x292de2['query'][_0xba81('0x36')]){_0xaeffb5[_0xba81('0x37')]=[{'all':!![]}];}return db[_0xba81('0x23')][_0xba81('0x38')](_0xaeffb5);})[_0xba81('0x1d')](function(_0x51f9f6){_0x4b5c01[_0xba81('0x39')]=_0x51f9f6;return _0x4b5c01;})['then'](respondWithFilteredResult(_0x12cb17,_0xaeffb5))[_0xba81('0x3a')](handleError(_0x12cb17,null));};exports[_0xba81('0x3b')]=function(_0x2f8943,_0x89f96e){var _0x4938a3={'raw':![],'where':{'id':_0x2f8943['params']['id']}},_0x21b6fe={};_0x21b6fe['model']=_[_0xba81('0x27')](db[_0xba81('0x23')]['rawAttributes']);_0x21b6fe['query']=_[_0xba81('0x27')](_0x2f8943[_0xba81('0x26')]);_0x21b6fe[_0xba81('0x28')]=_[_0xba81('0x29')](_0x21b6fe[_0xba81('0x2a')],_0x21b6fe['query']);_0x4938a3[_0xba81('0x2b')]=_[_0xba81('0x29')](_0x21b6fe['model'],qs[_0xba81('0x2c')](_0x2f8943[_0xba81('0x26')][_0xba81('0x2c')]));_0x4938a3[_0xba81('0x2b')]=_0x4938a3[_0xba81('0x2b')][_0xba81('0x2d')]?_0x4938a3[_0xba81('0x2b')]:_0x21b6fe['model'];if(_0x2f8943[_0xba81('0x26')][_0xba81('0x36')]){_0x4938a3['include']=[{'all':!![]}];}_0x4938a3=_[_0xba81('0x33')]({},_0x4938a3,_0x2f8943['options']);return db[_0xba81('0x23')][_0xba81('0x3c')](_0x4938a3)['then'](handleEntityNotFound(_0x89f96e,null))[_0xba81('0x1d')](respondWithResult(_0x89f96e,null))['catch'](handleError(_0x89f96e,null));};exports[_0xba81('0x3d')]=function(_0x5a146d,_0x82a353){return db['ServicenowConfiguration']['create'](_0x5a146d[_0xba81('0x3e')],{})[_0xba81('0x1d')](respondWithResult(_0x82a353,0xc9))[_0xba81('0x3a')](handleError(_0x82a353,null));};exports[_0xba81('0x1c')]=function(_0x131b44,_0x30adf7){if(_0x131b44[_0xba81('0x3e')]['id']){delete _0x131b44[_0xba81('0x3e')]['id'];}return db[_0xba81('0x23')][_0xba81('0x3c')]({'where':{'id':_0x131b44[_0xba81('0x3f')]['id']}})[_0xba81('0x1d')](handleEntityNotFound(_0x30adf7,null))[_0xba81('0x1d')](saveUpdates(_0x131b44[_0xba81('0x3e')],null))[_0xba81('0x1d')](respondWithResult(_0x30adf7,null))[_0xba81('0x3a')](handleError(_0x30adf7,null));};exports['destroy']=function(_0x4a9e3d,_0x3a8557){return db[_0xba81('0x23')]['find']({'where':{'id':_0x4a9e3d['params']['id']}})[_0xba81('0x1d')](handleEntityNotFound(_0x3a8557,null))[_0xba81('0x1d')](removeEntity(_0x3a8557,null))[_0xba81('0x3a')](handleError(_0x3a8557,null));};exports['getFields']=function(_0x2ff642,_0x4e62e3,_0x120483){var _0x221f0e={};var _0x480dea={};var _0x40f8b1;var _0x2b4d68;return db['ServicenowConfiguration'][_0xba81('0x40')]({'where':{'id':_0x2ff642[_0xba81('0x3f')]['id']}})[_0xba81('0x1d')](handleEntityNotFound(_0x4e62e3,null))[_0xba81('0x1d')](function(_0x483171){if(_0x483171){_0x40f8b1=_0x483171;_0x480dea['model']=_[_0xba81('0x27')](db[_0xba81('0x41')][_0xba81('0x42')]);_0x480dea[_0xba81('0x26')]=_[_0xba81('0x27')](_0x2ff642[_0xba81('0x26')]);_0x480dea['filters']=_[_0xba81('0x29')](_0x480dea['model'],_0x480dea[_0xba81('0x26')]);_0x221f0e['attributes']=_[_0xba81('0x29')](_0x480dea['model'],qs['fields'](_0x2ff642[_0xba81('0x26')][_0xba81('0x2c')]));_0x221f0e[_0xba81('0x2b')]=_0x221f0e['attributes']['length']?_0x221f0e[_0xba81('0x2b')]:_0x480dea[_0xba81('0x2a')];_0x221f0e[_0xba81('0x2f')]=qs[_0xba81('0x30')](_0x2ff642[_0xba81('0x26')]['sort']);_0x221f0e[_0xba81('0x31')]=qs[_0xba81('0x28')](_['pick'](_0x2ff642['query'],_0x480dea[_0xba81('0x28')]));if(_0x2ff642[_0xba81('0x26')][_0xba81('0x43')]){_0x221f0e[_0xba81('0x31')]=_['merge'](_0x221f0e[_0xba81('0x31')],{'$or':_['map'](_0x221f0e['attributes'],function(_0x1475f8){var _0x4a7d73={};_0x4a7d73[_0x1475f8]={'$like':'%'+_0x2ff642[_0xba81('0x26')][_0xba81('0x43')]+'%'};return _0x4a7d73;})});}_0x221f0e=_['merge']({},_0x221f0e,_0x2ff642['options']);return _0x40f8b1[_0xba81('0x44')](_0x221f0e);}})[_0xba81('0x1d')](function(_0x4a487d){if(_0x4a487d){_0x2b4d68=_0x4a487d[_0xba81('0x2d')];if(!_0x2ff642[_0xba81('0x26')]['hasOwnProperty'](_0xba81('0x45'))){_0x221f0e['limit']=qs['limit'](_0x2ff642[_0xba81('0x26')][_0xba81('0x18')]);_0x221f0e[_0xba81('0x16')]=qs[_0xba81('0x16')](_0x2ff642[_0xba81('0x26')][_0xba81('0x16')]);}return _0x40f8b1[_0xba81('0x44')](_0x221f0e);}})[_0xba81('0x1d')](function(_0x33c1d2){if(_0x33c1d2){return _0x33c1d2?{'count':_0x2b4d68,'rows':_0x33c1d2}:null;}})[_0xba81('0x1d')](respondWithResult(_0x4e62e3,null))[_0xba81('0x3a')](handleError(_0x4e62e3,null));};exports[_0xba81('0x46')]=function(_0x5b8866,_0x2256de,_0xa2ba4){var _0x291678={};var _0x5243f0={};var _0x4e94ec;var _0x1f5e1f;return db[_0xba81('0x23')][_0xba81('0x40')]({'where':{'id':_0x5b8866[_0xba81('0x3f')]['id']}})[_0xba81('0x1d')](handleEntityNotFound(_0x2256de,null))[_0xba81('0x1d')](function(_0x162924){if(_0x162924){_0x4e94ec=_0x162924;_0x5243f0[_0xba81('0x2a')]=_[_0xba81('0x27')](db[_0xba81('0x41')][_0xba81('0x42')]);_0x5243f0[_0xba81('0x26')]=_[_0xba81('0x27')](_0x5b8866['query']);_0x5243f0[_0xba81('0x28')]=_[_0xba81('0x29')](_0x5243f0[_0xba81('0x2a')],_0x5243f0['query']);_0x291678['attributes']=_['intersection'](_0x5243f0[_0xba81('0x2a')],qs[_0xba81('0x2c')](_0x5b8866[_0xba81('0x26')][_0xba81('0x2c')]));_0x291678[_0xba81('0x2b')]=_0x291678[_0xba81('0x2b')]['length']?_0x291678[_0xba81('0x2b')]:_0x5243f0[_0xba81('0x2a')];_0x291678[_0xba81('0x2f')]=qs['sort'](_0x5b8866['query'][_0xba81('0x30')]);_0x291678['where']=qs[_0xba81('0x28')](_[_0xba81('0x32')](_0x5b8866['query'],_0x5243f0[_0xba81('0x28')]));if(_0x5b8866[_0xba81('0x26')][_0xba81('0x43')]){_0x291678[_0xba81('0x31')]=_[_0xba81('0x33')](_0x291678['where'],{'$or':_[_0xba81('0x25')](_0x291678['attributes'],function(_0x3f77ed){var _0x2e46b6={};_0x2e46b6[_0x3f77ed]={'$like':'%'+_0x5b8866[_0xba81('0x26')][_0xba81('0x43')]+'%'};return _0x2e46b6;})});}_0x291678=_[_0xba81('0x33')]({},_0x291678,_0x5b8866[_0xba81('0x35')]);return _0x4e94ec[_0xba81('0x46')](_0x291678);}})[_0xba81('0x1d')](function(_0x185904){if(_0x185904){_0x1f5e1f=_0x185904[_0xba81('0x2d')];if(!_0x5b8866[_0xba81('0x26')][_0xba81('0x2e')](_0xba81('0x45'))){_0x291678['limit']=qs[_0xba81('0x18')](_0x5b8866[_0xba81('0x26')][_0xba81('0x18')]);_0x291678[_0xba81('0x16')]=qs[_0xba81('0x16')](_0x5b8866['query'][_0xba81('0x16')]);}return _0x4e94ec[_0xba81('0x46')](_0x291678);}})[_0xba81('0x1d')](function(_0x2f7a41){if(_0x2f7a41){return _0x2f7a41?{'count':_0x1f5e1f,'rows':_0x2f7a41}:null;}})['then'](respondWithResult(_0x2256de,null))[_0xba81('0x3a')](handleError(_0x2256de,null));};exports[_0xba81('0x47')]=function(_0xe8b023,_0x5a823a,_0x398c47){var _0x50bc53={};var _0x1fe108={};var _0x337a69;var _0x5dbd8a;return db[_0xba81('0x23')][_0xba81('0x40')]({'where':{'id':_0xe8b023['params']['id']}})['then'](handleEntityNotFound(_0x5a823a,null))[_0xba81('0x1d')](function(_0x36818a){if(_0x36818a){_0x337a69=_0x36818a;_0x1fe108[_0xba81('0x2a')]=_[_0xba81('0x27')](db['ServicenowField'][_0xba81('0x42')]);_0x1fe108[_0xba81('0x26')]=_['keys'](_0xe8b023[_0xba81('0x26')]);_0x1fe108['filters']=_['intersection'](_0x1fe108[_0xba81('0x2a')],_0x1fe108[_0xba81('0x26')]);_0x50bc53['attributes']=_[_0xba81('0x29')](_0x1fe108['model'],qs[_0xba81('0x2c')](_0xe8b023[_0xba81('0x26')]['fields']));_0x50bc53[_0xba81('0x2b')]=_0x50bc53['attributes'][_0xba81('0x2d')]?_0x50bc53[_0xba81('0x2b')]:_0x1fe108[_0xba81('0x2a')];_0x50bc53['order']=qs[_0xba81('0x30')](_0xe8b023[_0xba81('0x26')][_0xba81('0x30')]);_0x50bc53[_0xba81('0x31')]=qs[_0xba81('0x28')](_[_0xba81('0x32')](_0xe8b023['query'],_0x1fe108['filters']));if(_0xe8b023[_0xba81('0x26')][_0xba81('0x43')]){_0x50bc53[_0xba81('0x31')]=_[_0xba81('0x33')](_0x50bc53[_0xba81('0x31')],{'$or':_[_0xba81('0x25')](_0x50bc53[_0xba81('0x2b')],function(_0x3307d4){var _0x10f42f={};_0x10f42f[_0x3307d4]={'$like':'%'+_0xe8b023[_0xba81('0x26')][_0xba81('0x43')]+'%'};return _0x10f42f;})});}_0x50bc53=_[_0xba81('0x33')]({},_0x50bc53,_0xe8b023[_0xba81('0x35')]);return _0x337a69[_0xba81('0x47')](_0x50bc53);}})[_0xba81('0x1d')](function(_0x190e64){if(_0x190e64){_0x5dbd8a=_0x190e64[_0xba81('0x2d')];if(!_0xe8b023[_0xba81('0x26')][_0xba81('0x2e')]('nolimit')){_0x50bc53[_0xba81('0x18')]=qs[_0xba81('0x18')](_0xe8b023[_0xba81('0x26')][_0xba81('0x18')]);_0x50bc53['offset']=qs[_0xba81('0x16')](_0xe8b023[_0xba81('0x26')][_0xba81('0x16')]);}return _0x337a69[_0xba81('0x47')](_0x50bc53);}})['then'](function(_0x3dd469){if(_0x3dd469){return _0x3dd469?{'count':_0x5dbd8a,'rows':_0x3dd469}:null;}})[_0xba81('0x1d')](respondWithResult(_0x5a823a,null))['catch'](handleError(_0x5a823a,null));};
\ No newline at end of file
index 7791de3..f77c61f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b7=['path','rimraf','../../config/environment','define','int_servicenow_configurations','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x3e2bb7,_0x2b4f07){var _0x4b1aee=function(_0x46b026){while(--_0x46b026){_0x3e2bb7['push'](_0x3e2bb7['shift']());}};_0x4b1aee(++_0x2b4f07);}(_0x14b7,0x144));var _0x714b=function(_0x1d606d,_0x376e51){_0x1d606d=_0x1d606d-0x0;var _0x3c38bd=_0x14b7[_0x1d606d];return _0x3c38bd;};'use strict';var _=require(_0x714b('0x0'));var util=require(_0x714b('0x1'));var logger=require(_0x714b('0x2'))(_0x714b('0x3'));var moment=require('moment');var BPromise=require(_0x714b('0x4'));var rp=require(_0x714b('0x5'));var fs=require('fs');var path=require(_0x714b('0x6'));var rimraf=require(_0x714b('0x7'));var config=require(_0x714b('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x45c9ae,_0x966048){return _0x45c9ae[_0x714b('0x9')]('ServicenowConfiguration',attributes,{'tableName':_0x714b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbecf=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations'];(function(_0x569a32,_0xb6e572){var _0x87b2c3=function(_0x1c5073){while(--_0x1c5073){_0x569a32['push'](_0x569a32['shift']());}};_0x87b2c3(++_0xb6e572);}(_0xbecf,0x15c));var _0xfbec=function(_0x191983,_0x592d0e){_0x191983=_0x191983-0x0;var _0x1db328=_0xbecf[_0x191983];return _0x1db328;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfbec('0x0'))(_0xfbec('0x1'));var moment=require(_0xfbec('0x2'));var BPromise=require(_0xfbec('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfbec('0x4'));var rimraf=require(_0xfbec('0x5'));var config=require(_0xfbec('0x6'));var attributes=require(_0xfbec('0x7'));module[_0xfbec('0x8')]=function(_0x5bd6f1,_0x297f85){return _0x5bd6f1[_0xfbec('0x9')](_0xfbec('0xa'),attributes,{'tableName':_0xfbec('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7fedfb0..7b0db6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a33=['rpc','jayson/promise','client','http','request','then','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ServicenowConfiguration,\x20%s,\x20%s','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x189fd9,_0x3c2480){var _0x13f098=function(_0x3d5b43){while(--_0x3d5b43){_0x189fd9['push'](_0x189fd9['shift']());}};_0x13f098(++_0x3c2480);}(_0x9a33,0x6c));var _0x39a3=function(_0x591df1,_0xd2030b){_0x591df1=_0x591df1-0x0;var _0x28f068=_0x9a33[_0x591df1];return _0x28f068;};'use strict';var _=require('lodash');var util=require(_0x39a3('0x0'));var moment=require(_0x39a3('0x1'));var BPromise=require(_0x39a3('0x2'));var rs=require(_0x39a3('0x3'));var fs=require('fs');var Redis=require(_0x39a3('0x4'));var db=require(_0x39a3('0x5'))['db'];var utils=require(_0x39a3('0x6'));var logger=require('../../config/logger')(_0x39a3('0x7'));var config=require('../../config/environment');var jayson=require(_0x39a3('0x8'));var client=jayson[_0x39a3('0x9')][_0x39a3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x222b4a,_0x8dce84,_0x55c4ed){return new BPromise(function(_0x20c3c8,_0x109206){return client[_0x39a3('0xb')](_0x222b4a,_0x55c4ed)[_0x39a3('0xc')](function(_0x345946){logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x8dce84,'request\x20sent');logger['debug'](_0x39a3('0xd'),_0x8dce84,_0x39a3('0xe'),JSON[_0x39a3('0xf')](_0x345946));if(_0x345946[_0x39a3('0x10')]){if(_0x345946[_0x39a3('0x10')][_0x39a3('0x11')]===0x1f4){logger['error'](_0x39a3('0x12'),_0x8dce84,_0x345946[_0x39a3('0x10')][_0x39a3('0x13')]);return _0x109206(_0x345946[_0x39a3('0x10')][_0x39a3('0x13')]);}logger[_0x39a3('0x10')]('ServicenowConfiguration,\x20%s,\x20%s',_0x8dce84,_0x345946['error']['message']);return _0x20c3c8(_0x345946[_0x39a3('0x10')][_0x39a3('0x13')]);}else{logger[_0x39a3('0x14')]('ServicenowConfiguration,\x20%s,\x20%s',_0x8dce84,_0x39a3('0xe'));_0x20c3c8(_0x345946[_0x39a3('0x15')][_0x39a3('0x13')]);}})[_0x39a3('0x16')](function(_0x343be2){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x8dce84,_0x343be2);_0x109206(_0x343be2);});});}
\ No newline at end of file
+var _0x1f38=['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','../../mysqldb','jayson/promise','client','http'];(function(_0x1c98bc,_0x5e4d18){var _0x4bead2=function(_0x4d7fca){while(--_0x4d7fca){_0x1c98bc['push'](_0x1c98bc['shift']());}};_0x4bead2(++_0x5e4d18);}(_0x1f38,0x116));var _0x81f3=function(_0xb98d8d,_0x481423){_0xb98d8d=_0xb98d8d-0x0;var _0x489b15=_0x1f38[_0xb98d8d];return _0x489b15;};'use strict';var _=require(_0x81f3('0x0'));var util=require(_0x81f3('0x1'));var moment=require(_0x81f3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x81f3('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x81f3('0x4'));var client=jayson[_0x81f3('0x5')][_0x81f3('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x542c32,_0x47c0d2,_0x35be55){return new BPromise(function(_0x591f67,_0x446652){return client['request'](_0x542c32,_0x35be55)[_0x81f3('0x7')](function(_0x1f907e){logger[_0x81f3('0x8')](_0x81f3('0x9'),_0x47c0d2,_0x81f3('0xa'));logger[_0x81f3('0xb')](_0x81f3('0xc'),_0x47c0d2,'request\x20sent',JSON[_0x81f3('0xd')](_0x1f907e));if(_0x1f907e[_0x81f3('0xe')]){if(_0x1f907e[_0x81f3('0xe')][_0x81f3('0xf')]===0x1f4){logger[_0x81f3('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x47c0d2,_0x1f907e[_0x81f3('0xe')][_0x81f3('0x10')]);return _0x446652(_0x1f907e['error']['message']);}logger[_0x81f3('0xe')]('ServicenowConfiguration,\x20%s,\x20%s',_0x47c0d2,_0x1f907e[_0x81f3('0xe')][_0x81f3('0x10')]);return _0x591f67(_0x1f907e['error']['message']);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0x47c0d2,'request\x20sent');_0x591f67(_0x1f907e[_0x81f3('0x11')][_0x81f3('0x10')]);}})[_0x81f3('0x12')](function(_0x161c03){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x47c0d2,_0x161c03);_0x446652(_0x161c03);});});}
\ No newline at end of file
index dd17df0..655b75b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e62=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','isAuthenticated','index','get','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x374df1,_0x1eb35b){var _0xa7acf9=function(_0x4f704c){while(--_0x4f704c){_0x374df1['push'](_0x374df1['shift']());}};_0xa7acf9(++_0x1eb35b);}(_0x1e62,0x18b));var _0x21e6=function(_0x6530a3,_0x770107){_0x6530a3=_0x6530a3-0x0;var _0xc0987e=_0x1e62[_0x6530a3];return _0xc0987e;};'use strict';var multer=require(_0x21e6('0x0'));var util=require(_0x21e6('0x1'));var path=require(_0x21e6('0x2'));var timeout=require(_0x21e6('0x3'));var express=require(_0x21e6('0x4'));var router=express[_0x21e6('0x5')]();var fs_extra=require(_0x21e6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x21e6('0x7'));var config=require(_0x21e6('0x8'));var controller=require(_0x21e6('0x9'));router['get']('/',auth[_0x21e6('0xa')](),controller[_0x21e6('0xb')]);router[_0x21e6('0xc')](_0x21e6('0xd'),auth[_0x21e6('0xa')](),controller[_0x21e6('0xe')]);router[_0x21e6('0xf')]('/',auth['isAuthenticated'](),controller[_0x21e6('0x10')]);router['put'](_0x21e6('0xd'),auth[_0x21e6('0xa')](),controller[_0x21e6('0x11')]);router[_0x21e6('0x12')]('/:id',auth[_0x21e6('0xa')](),controller[_0x21e6('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x7154=['/:id','post','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index'];(function(_0x5ee627,_0x151c4f){var _0x3a3f7a=function(_0x151df7){while(--_0x151df7){_0x5ee627['push'](_0x5ee627['shift']());}};_0x3a3f7a(++_0x151c4f);}(_0x7154,0x114));var _0x4715=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x7154[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require('multer');var util=require(_0x4715('0x0'));var path=require(_0x4715('0x1'));var timeout=require(_0x4715('0x2'));var express=require(_0x4715('0x3'));var router=express[_0x4715('0x4')]();var fs_extra=require(_0x4715('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4715('0x6'));var config=require(_0x4715('0x7'));var controller=require(_0x4715('0x8'));router[_0x4715('0x9')]('/',auth[_0x4715('0xa')](),controller[_0x4715('0xb')]);router[_0x4715('0x9')](_0x4715('0xc'),auth[_0x4715('0xa')](),controller['show']);router[_0x4715('0xd')]('/',auth[_0x4715('0xa')](),controller['create']);router[_0x4715('0xe')]('/:id',auth[_0x4715('0xa')](),controller[_0x4715('0xf')]);router['delete'](_0x4715('0xc'),auth[_0x4715('0xa')](),controller[_0x4715('0x10')]);module[_0x4715('0x11')]=router;
\ No newline at end of file
index 8ab4a6d..9d2bc66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc959=['sequelize','exports','ENUM','variable','customVariable','picklist','STRING','BOOLEAN'];(function(_0x47a8c0,_0x4d5931){var _0x551fa1=function(_0x45ac5a){while(--_0x45ac5a){_0x47a8c0['push'](_0x47a8c0['shift']());}};_0x551fa1(++_0x4d5931);}(_0xc959,0x190));var _0x9c95=function(_0x2db12b,_0x30ab1d){_0x2db12b=_0x2db12b-0x0;var _0x20990b=_0xc959[_0x2db12b];return _0x20990b;};'use strict';var Sequelize=require(_0x9c95('0x0'));module[_0x9c95('0x1')]={'type':{'type':Sequelize[_0x9c95('0x2')]('string',_0x9c95('0x3'),_0x9c95('0x4'),'keyValue',_0x9c95('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9c95('0x6')]},'key':{'type':Sequelize[_0x9c95('0x6')]},'keyType':{'type':Sequelize[_0x9c95('0x2')]('string',_0x9c95('0x3'),_0x9c95('0x4'))},'keyContent':{'type':Sequelize[_0x9c95('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x9c95('0x6')]},'customField':{'type':Sequelize[_0x9c95('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9c95('0x6')]}};
\ No newline at end of file
+var _0xea86=['customVariable','sequelize','string','variable','STRING','ENUM'];(function(_0x1ddbba,_0x3501e2){var _0x3a347d=function(_0xbc1080){while(--_0xbc1080){_0x1ddbba['push'](_0x1ddbba['shift']());}};_0x3a347d(++_0x3501e2);}(_0xea86,0x85));var _0x6ea8=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xea86[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x6ea8('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x6ea8('0x1'),_0x6ea8('0x2'),'customVariable','keyValue','picklist'),'defaultValue':_0x6ea8('0x1')},'content':{'type':Sequelize[_0x6ea8('0x3')]},'key':{'type':Sequelize[_0x6ea8('0x3')]},'keyType':{'type':Sequelize[_0x6ea8('0x4')]('string',_0x6ea8('0x2'),_0x6ea8('0x5'))},'keyContent':{'type':Sequelize[_0x6ea8('0x3')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x6ea8('0x3')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6ea8('0x3')]}};
\ No newline at end of file
index 4e3fa73..be84183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb98=['save','then','destroy','stack','name','send','index','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','ServicenowField','include','rows','catch','show','params','rawAttributes','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','reject'];(function(_0x5b013d,_0xc7691c){var _0x2b6eef=function(_0x3143ca){while(--_0x3143ca){_0x5b013d['push'](_0x5b013d['shift']());}};_0x2b6eef(++_0xc7691c);}(_0xcb98,0x138));var _0x8cb9=function(_0x5e6bec,_0x1eb54d){_0x5e6bec=_0x5e6bec-0x0;var _0x5dc5cf=_0xcb98[_0x5e6bec];return _0x5dc5cf;};'use strict';var emlformat=require(_0x8cb9('0x0'));var rimraf=require(_0x8cb9('0x1'));var zipdir=require(_0x8cb9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8cb9('0x3'));var moment=require(_0x8cb9('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8cb9('0x5'));var path=require(_0x8cb9('0x6'));var sox=require(_0x8cb9('0x7'));var csv=require(_0x8cb9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8cb9('0x9'));var _=require(_0x8cb9('0xa'));var squel=require(_0x8cb9('0xb'));var crypto=require(_0x8cb9('0xc'));var jsforce=require(_0x8cb9('0xd'));var deskjs=require(_0x8cb9('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8cb9('0xf'));var Papa=require(_0x8cb9('0x10'));var Redis=require(_0x8cb9('0x11'));var authService=require(_0x8cb9('0x12'));var qs=require(_0x8cb9('0x13'));var as=require(_0x8cb9('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8cb9('0x15'));var utils=require(_0x8cb9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x8cb9('0x17'));var db=require(_0x8cb9('0x18'))['db'];function respondWithStatusCode(_0x418945,_0x3abef9){_0x3abef9=_0x3abef9||0xcc;return function(_0x53b032){if(_0x53b032){return _0x418945[_0x8cb9('0x19')](_0x3abef9);}return _0x418945[_0x8cb9('0x1a')](_0x3abef9)[_0x8cb9('0x1b')]();};}function respondWithResult(_0x3b9e60,_0x4fe80d){_0x4fe80d=_0x4fe80d||0xc8;return function(_0x1201fd){if(_0x1201fd){return _0x3b9e60['status'](_0x4fe80d)['json'](_0x1201fd);}};}function respondWithFilteredResult(_0x358fbe,_0x58e531){return function(_0x260907){if(_0x260907){var _0x57fab3=typeof _0x58e531['offset']===_0x8cb9('0x1c')&&typeof _0x58e531[_0x8cb9('0x1d')]===_0x8cb9('0x1c');var _0x41f3be=_0x260907[_0x8cb9('0x1e')];var _0x32035c=_0x57fab3?0x0:_0x58e531[_0x8cb9('0x1f')];var _0x1305cb=_0x57fab3?_0x260907['count']:_0x58e531[_0x8cb9('0x1f')]+_0x58e531[_0x8cb9('0x1d')];var _0x589fff;if(_0x1305cb>=_0x41f3be){_0x1305cb=_0x41f3be;_0x589fff=0xc8;}else{_0x589fff=0xce;}_0x358fbe['status'](_0x589fff);return _0x358fbe['set']('Content-Range',_0x32035c+'-'+_0x1305cb+'/'+_0x41f3be)['json'](_0x260907);}return null;};}function patchUpdates(_0x5f4575){return function(_0x532f4a){try{jsonpatch['apply'](_0x532f4a,_0x5f4575,!![]);}catch(_0x50d0e9){return BPromise[_0x8cb9('0x20')](_0x50d0e9);}return _0x532f4a[_0x8cb9('0x21')]();};}function saveUpdates(_0xd5adf7,_0x4679a2){return function(_0x46d4e5){if(_0x46d4e5){return _0x46d4e5['update'](_0xd5adf7)[_0x8cb9('0x22')](function(_0x4fd27d){return _0x4fd27d;});}return null;};}function removeEntity(_0x4c8f76,_0x3603ad){return function(_0x1b74e1){if(_0x1b74e1){return _0x1b74e1[_0x8cb9('0x23')]()[_0x8cb9('0x22')](function(){_0x4c8f76['status'](0xcc)[_0x8cb9('0x1b')]();});}};}function handleEntityNotFound(_0x5d96fa,_0x250f03){return function(_0x19f06e){if(!_0x19f06e){_0x5d96fa['sendStatus'](0x194);}return _0x19f06e;};}function handleError(_0x5de551,_0x51cae2){_0x51cae2=_0x51cae2||0x1f4;return function(_0x2058bc){logger['error'](_0x2058bc[_0x8cb9('0x24')]);if(_0x2058bc[_0x8cb9('0x25')]){delete _0x2058bc['name'];}_0x5de551[_0x8cb9('0x1a')](_0x51cae2)[_0x8cb9('0x26')](_0x2058bc);};}exports[_0x8cb9('0x27')]=function(_0x5ab168,_0x29fc89){var _0x5c3843={},_0x5b5bc9={},_0x92c329={'count':0x0,'rows':[]};var _0x3ab658=_['map'](db['ServicenowField']['rawAttributes'],function(_0x2654c8){return{'name':_0x2654c8[_0x8cb9('0x28')],'type':_0x2654c8[_0x8cb9('0x29')]['key']};});_0x5b5bc9[_0x8cb9('0x2a')]=_['map'](_0x3ab658,'name');_0x5b5bc9[_0x8cb9('0x2b')]=_[_0x8cb9('0x2c')](_0x5ab168['query']);_0x5b5bc9[_0x8cb9('0x2d')]=_['intersection'](_0x5b5bc9[_0x8cb9('0x2a')],_0x5b5bc9['query']);_0x5c3843[_0x8cb9('0x2e')]=_[_0x8cb9('0x2f')](_0x5b5bc9[_0x8cb9('0x2a')],qs[_0x8cb9('0x30')](_0x5ab168['query'][_0x8cb9('0x30')]));_0x5c3843[_0x8cb9('0x2e')]=_0x5c3843[_0x8cb9('0x2e')][_0x8cb9('0x31')]?_0x5c3843[_0x8cb9('0x2e')]:_0x5b5bc9[_0x8cb9('0x2a')];if(!_0x5ab168[_0x8cb9('0x2b')]['hasOwnProperty'](_0x8cb9('0x32'))){_0x5c3843[_0x8cb9('0x1d')]=qs[_0x8cb9('0x1d')](_0x5ab168[_0x8cb9('0x2b')][_0x8cb9('0x1d')]);_0x5c3843[_0x8cb9('0x1f')]=qs[_0x8cb9('0x1f')](_0x5ab168[_0x8cb9('0x2b')][_0x8cb9('0x1f')]);}_0x5c3843[_0x8cb9('0x33')]=qs[_0x8cb9('0x34')](_0x5ab168[_0x8cb9('0x2b')][_0x8cb9('0x34')]);_0x5c3843['where']=qs[_0x8cb9('0x2d')](_[_0x8cb9('0x35')](_0x5ab168[_0x8cb9('0x2b')],_0x5b5bc9['filters']),_0x3ab658);if(_0x5ab168['query']['filter']){_0x5c3843[_0x8cb9('0x36')]=_[_0x8cb9('0x37')](_0x5c3843[_0x8cb9('0x36')],{'$or':_['map'](_0x3ab658,function(_0x4fee58){if(_0x4fee58[_0x8cb9('0x29')]!==_0x8cb9('0x38')){var _0x2f625b={};_0x2f625b[_0x4fee58['name']]={'$like':'%'+_0x5ab168[_0x8cb9('0x2b')][_0x8cb9('0x39')]+'%'};return _0x2f625b;}})});}_0x5c3843=_[_0x8cb9('0x37')]({},_0x5c3843,_0x5ab168[_0x8cb9('0x3a')]);var _0x4712e8={'where':_0x5c3843[_0x8cb9('0x36')]};return db[_0x8cb9('0x3b')][_0x8cb9('0x1e')](_0x4712e8)['then'](function(_0xdd6649){_0x92c329[_0x8cb9('0x1e')]=_0xdd6649;if(_0x5ab168['query']['includeAll']){_0x5c3843[_0x8cb9('0x3c')]=[{'all':!![]}];}return db[_0x8cb9('0x3b')]['findAll'](_0x5c3843);})['then'](function(_0x43c583){_0x92c329[_0x8cb9('0x3d')]=_0x43c583;return _0x92c329;})[_0x8cb9('0x22')](respondWithFilteredResult(_0x29fc89,_0x5c3843))[_0x8cb9('0x3e')](handleError(_0x29fc89,null));};exports[_0x8cb9('0x3f')]=function(_0x294b7f,_0x5969c3){var _0x2683c6={'raw':!![],'where':{'id':_0x294b7f[_0x8cb9('0x40')]['id']}},_0x5d472a={};_0x5d472a[_0x8cb9('0x2a')]=_[_0x8cb9('0x2c')](db['ServicenowField'][_0x8cb9('0x41')]);_0x5d472a[_0x8cb9('0x2b')]=_[_0x8cb9('0x2c')](_0x294b7f['query']);_0x5d472a['filters']=_[_0x8cb9('0x2f')](_0x5d472a[_0x8cb9('0x2a')],_0x5d472a[_0x8cb9('0x2b')]);_0x2683c6[_0x8cb9('0x2e')]=_[_0x8cb9('0x2f')](_0x5d472a[_0x8cb9('0x2a')],qs[_0x8cb9('0x30')](_0x294b7f[_0x8cb9('0x2b')][_0x8cb9('0x30')]));_0x2683c6['attributes']=_0x2683c6[_0x8cb9('0x2e')]['length']?_0x2683c6[_0x8cb9('0x2e')]:_0x5d472a[_0x8cb9('0x2a')];if(_0x294b7f['query']['includeAll']){_0x2683c6[_0x8cb9('0x3c')]=[{'all':!![]}];}_0x2683c6=_[_0x8cb9('0x37')]({},_0x2683c6,_0x294b7f[_0x8cb9('0x3a')]);return db['ServicenowField']['find'](_0x2683c6)[_0x8cb9('0x22')](handleEntityNotFound(_0x5969c3,null))[_0x8cb9('0x22')](respondWithResult(_0x5969c3,null))[_0x8cb9('0x3e')](handleError(_0x5969c3,null));};exports['create']=function(_0xe915b7,_0x581212){return db[_0x8cb9('0x3b')][_0x8cb9('0x42')](_0xe915b7[_0x8cb9('0x43')],{})[_0x8cb9('0x22')](respondWithResult(_0x581212,0xc9))[_0x8cb9('0x3e')](handleError(_0x581212,null));};exports['update']=function(_0x4ce782,_0x27366){if(_0x4ce782['body']['id']){delete _0x4ce782[_0x8cb9('0x43')]['id'];}return db[_0x8cb9('0x3b')][_0x8cb9('0x44')]({'where':{'id':_0x4ce782[_0x8cb9('0x40')]['id']}})['then'](handleEntityNotFound(_0x27366,null))['then'](saveUpdates(_0x4ce782['body'],null))['then'](respondWithResult(_0x27366,null))[_0x8cb9('0x3e')](handleError(_0x27366,null));};exports[_0x8cb9('0x23')]=function(_0x2cb35e,_0xe84ea7){return db['ServicenowField'][_0x8cb9('0x44')]({'where':{'id':_0x2cb35e[_0x8cb9('0x40')]['id']}})[_0x8cb9('0x22')](handleEntityNotFound(_0xe84ea7,null))[_0x8cb9('0x22')](removeEntity(_0xe84ea7,null))['catch'](handleError(_0xe84ea7,null));};
\ No newline at end of file
+var _0xf278=['querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','ServicenowField','includeAll','include','findAll','rows','show','keys','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto'];(function(_0x159f91,_0xe8a30f){var _0x26bd65=function(_0x5680d1){while(--_0x5680d1){_0x159f91['push'](_0x159f91['shift']());}};_0x26bd65(++_0xe8a30f);}(_0xf278,0xcb));var _0x8f27=function(_0x5c110f,_0x3c4bd8){_0x5c110f=_0x5c110f-0x0;var _0x5ebfc5=_0xf278[_0x5c110f];return _0x5ebfc5;};'use strict';var emlformat=require(_0x8f27('0x0'));var rimraf=require(_0x8f27('0x1'));var zipdir=require(_0x8f27('0x2'));var jsonpatch=require(_0x8f27('0x3'));var rp=require(_0x8f27('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8f27('0x5'));var util=require('util');var path=require(_0x8f27('0x6'));var sox=require(_0x8f27('0x7'));var csv=require(_0x8f27('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8f27('0x9'));var _=require(_0x8f27('0xa'));var squel=require(_0x8f27('0xb'));var crypto=require(_0x8f27('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8f27('0x8'));var querystring=require(_0x8f27('0xd'));var Papa=require(_0x8f27('0xe'));var Redis=require(_0x8f27('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8f27('0x10'));var hardwareService=require(_0x8f27('0x11'));var logger=require(_0x8f27('0x12'))('api');var utils=require(_0x8f27('0x13'));var config=require(_0x8f27('0x14'));var licenseUtil=require(_0x8f27('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cc401,_0x403f36){_0x403f36=_0x403f36||0xcc;return function(_0x1ed011){if(_0x1ed011){return _0x3cc401[_0x8f27('0x16')](_0x403f36);}return _0x3cc401[_0x8f27('0x17')](_0x403f36)[_0x8f27('0x18')]();};}function respondWithResult(_0x412d92,_0x170d91){_0x170d91=_0x170d91||0xc8;return function(_0x367f10){if(_0x367f10){return _0x412d92[_0x8f27('0x17')](_0x170d91)[_0x8f27('0x19')](_0x367f10);}};}function respondWithFilteredResult(_0x2ba9db,_0x3175cd){return function(_0x3c2d33){if(_0x3c2d33){var _0x3740d2=typeof _0x3175cd['offset']===_0x8f27('0x1a')&&typeof _0x3175cd[_0x8f27('0x1b')]===_0x8f27('0x1a');var _0x36ae26=_0x3c2d33['count'];var _0x2bccf0=_0x3740d2?0x0:_0x3175cd[_0x8f27('0x1c')];var _0x32689a=_0x3740d2?_0x3c2d33[_0x8f27('0x1d')]:_0x3175cd['offset']+_0x3175cd[_0x8f27('0x1b')];var _0x1d7e06;if(_0x32689a>=_0x36ae26){_0x32689a=_0x36ae26;_0x1d7e06=0xc8;}else{_0x1d7e06=0xce;}_0x2ba9db[_0x8f27('0x17')](_0x1d7e06);return _0x2ba9db[_0x8f27('0x1e')](_0x8f27('0x1f'),_0x2bccf0+'-'+_0x32689a+'/'+_0x36ae26)[_0x8f27('0x19')](_0x3c2d33);}return null;};}function patchUpdates(_0x2d49e2){return function(_0x261757){try{jsonpatch[_0x8f27('0x20')](_0x261757,_0x2d49e2,!![]);}catch(_0x5a4649){return BPromise[_0x8f27('0x21')](_0x5a4649);}return _0x261757['save']();};}function saveUpdates(_0x3a954c,_0x570ab5){return function(_0x135be1){if(_0x135be1){return _0x135be1[_0x8f27('0x22')](_0x3a954c)[_0x8f27('0x23')](function(_0x357c5e){return _0x357c5e;});}return null;};}function removeEntity(_0x252e6c,_0x8d46d2){return function(_0x443e27){if(_0x443e27){return _0x443e27[_0x8f27('0x24')]()[_0x8f27('0x23')](function(){_0x252e6c[_0x8f27('0x17')](0xcc)[_0x8f27('0x18')]();});}};}function handleEntityNotFound(_0x5ec642,_0x4c6de1){return function(_0x4ef385){if(!_0x4ef385){_0x5ec642['sendStatus'](0x194);}return _0x4ef385;};}function handleError(_0xc9053f,_0x48e02e){_0x48e02e=_0x48e02e||0x1f4;return function(_0x46f8c7){logger['error'](_0x46f8c7[_0x8f27('0x25')]);if(_0x46f8c7['name']){delete _0x46f8c7[_0x8f27('0x26')];}_0xc9053f['status'](_0x48e02e)['send'](_0x46f8c7);};}exports[_0x8f27('0x27')]=function(_0x5c271c,_0x35c34f){var _0x1f6ca8={},_0x2cb007={},_0x1def07={'count':0x0,'rows':[]};var _0x25c034=_[_0x8f27('0x28')](db['ServicenowField'][_0x8f27('0x29')],function(_0x312031){return{'name':_0x312031[_0x8f27('0x2a')],'type':_0x312031[_0x8f27('0x2b')][_0x8f27('0x2c')]};});_0x2cb007['model']=_[_0x8f27('0x28')](_0x25c034,_0x8f27('0x26'));_0x2cb007[_0x8f27('0x2d')]=_['keys'](_0x5c271c[_0x8f27('0x2d')]);_0x2cb007[_0x8f27('0x2e')]=_[_0x8f27('0x2f')](_0x2cb007[_0x8f27('0x30')],_0x2cb007[_0x8f27('0x2d')]);_0x1f6ca8[_0x8f27('0x31')]=_[_0x8f27('0x2f')](_0x2cb007[_0x8f27('0x30')],qs[_0x8f27('0x32')](_0x5c271c['query'][_0x8f27('0x32')]));_0x1f6ca8[_0x8f27('0x31')]=_0x1f6ca8[_0x8f27('0x31')][_0x8f27('0x33')]?_0x1f6ca8[_0x8f27('0x31')]:_0x2cb007[_0x8f27('0x30')];if(!_0x5c271c[_0x8f27('0x2d')][_0x8f27('0x34')](_0x8f27('0x35'))){_0x1f6ca8[_0x8f27('0x1b')]=qs[_0x8f27('0x1b')](_0x5c271c[_0x8f27('0x2d')]['limit']);_0x1f6ca8[_0x8f27('0x1c')]=qs[_0x8f27('0x1c')](_0x5c271c[_0x8f27('0x2d')][_0x8f27('0x1c')]);}_0x1f6ca8[_0x8f27('0x36')]=qs[_0x8f27('0x37')](_0x5c271c[_0x8f27('0x2d')][_0x8f27('0x37')]);_0x1f6ca8[_0x8f27('0x38')]=qs[_0x8f27('0x2e')](_[_0x8f27('0x39')](_0x5c271c[_0x8f27('0x2d')],_0x2cb007[_0x8f27('0x2e')]),_0x25c034);if(_0x5c271c['query'][_0x8f27('0x3a')]){_0x1f6ca8[_0x8f27('0x38')]=_['merge'](_0x1f6ca8[_0x8f27('0x38')],{'$or':_[_0x8f27('0x28')](_0x25c034,function(_0x419416){if(_0x419416[_0x8f27('0x2b')]!=='VIRTUAL'){var _0x2d7220={};_0x2d7220[_0x419416['name']]={'$like':'%'+_0x5c271c['query'][_0x8f27('0x3a')]+'%'};return _0x2d7220;}})});}_0x1f6ca8=_[_0x8f27('0x3b')]({},_0x1f6ca8,_0x5c271c[_0x8f27('0x3c')]);var _0x37a582={'where':_0x1f6ca8[_0x8f27('0x38')]};return db[_0x8f27('0x3d')][_0x8f27('0x1d')](_0x37a582)[_0x8f27('0x23')](function(_0x2c7398){_0x1def07[_0x8f27('0x1d')]=_0x2c7398;if(_0x5c271c[_0x8f27('0x2d')][_0x8f27('0x3e')]){_0x1f6ca8[_0x8f27('0x3f')]=[{'all':!![]}];}return db[_0x8f27('0x3d')][_0x8f27('0x40')](_0x1f6ca8);})[_0x8f27('0x23')](function(_0x3cc57f){_0x1def07[_0x8f27('0x41')]=_0x3cc57f;return _0x1def07;})['then'](respondWithFilteredResult(_0x35c34f,_0x1f6ca8))['catch'](handleError(_0x35c34f,null));};exports[_0x8f27('0x42')]=function(_0x5e5e59,_0x39c9b9){var _0x122131={'raw':!![],'where':{'id':_0x5e5e59['params']['id']}},_0x26b792={};_0x26b792[_0x8f27('0x30')]=_[_0x8f27('0x43')](db[_0x8f27('0x3d')]['rawAttributes']);_0x26b792[_0x8f27('0x2d')]=_['keys'](_0x5e5e59[_0x8f27('0x2d')]);_0x26b792[_0x8f27('0x2e')]=_['intersection'](_0x26b792[_0x8f27('0x30')],_0x26b792[_0x8f27('0x2d')]);_0x122131[_0x8f27('0x31')]=_[_0x8f27('0x2f')](_0x26b792[_0x8f27('0x30')],qs['fields'](_0x5e5e59[_0x8f27('0x2d')]['fields']));_0x122131[_0x8f27('0x31')]=_0x122131['attributes'][_0x8f27('0x33')]?_0x122131['attributes']:_0x26b792[_0x8f27('0x30')];if(_0x5e5e59[_0x8f27('0x2d')][_0x8f27('0x3e')]){_0x122131[_0x8f27('0x3f')]=[{'all':!![]}];}_0x122131=_['merge']({},_0x122131,_0x5e5e59['options']);return db['ServicenowField'][_0x8f27('0x44')](_0x122131)[_0x8f27('0x23')](handleEntityNotFound(_0x39c9b9,null))[_0x8f27('0x23')](respondWithResult(_0x39c9b9,null))[_0x8f27('0x45')](handleError(_0x39c9b9,null));};exports[_0x8f27('0x46')]=function(_0x168474,_0x5635c1){return db[_0x8f27('0x3d')][_0x8f27('0x46')](_0x168474[_0x8f27('0x47')],{})[_0x8f27('0x23')](respondWithResult(_0x5635c1,0xc9))[_0x8f27('0x45')](handleError(_0x5635c1,null));};exports['update']=function(_0x52477d,_0xc3cf37){if(_0x52477d[_0x8f27('0x47')]['id']){delete _0x52477d[_0x8f27('0x47')]['id'];}return db[_0x8f27('0x3d')][_0x8f27('0x44')]({'where':{'id':_0x52477d['params']['id']}})[_0x8f27('0x23')](handleEntityNotFound(_0xc3cf37,null))['then'](saveUpdates(_0x52477d[_0x8f27('0x47')],null))[_0x8f27('0x23')](respondWithResult(_0xc3cf37,null))[_0x8f27('0x45')](handleError(_0xc3cf37,null));};exports[_0x8f27('0x24')]=function(_0x426cf5,_0x2d298f){return db[_0x8f27('0x3d')][_0x8f27('0x44')]({'where':{'id':_0x426cf5['params']['id']}})[_0x8f27('0x23')](handleEntityNotFound(_0x2d298f,null))['then'](removeEntity(_0x2d298f,null))['catch'](handleError(_0x2d298f,null));};
\ No newline at end of file
index fd9e889..c531ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a0=['path','rimraf','../../config/environment','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x4f4d19,_0x574245){var _0x27a258=function(_0x38da3e){while(--_0x38da3e){_0x4f4d19['push'](_0x4f4d19['shift']());}};_0x27a258(++_0x574245);}(_0x37a0,0x86));var _0x037a=function(_0x285c33,_0x2b5228){_0x285c33=_0x285c33-0x0;var _0x5f6fc8=_0x37a0[_0x285c33];return _0x5f6fc8;};'use strict';var _=require(_0x037a('0x0'));var util=require(_0x037a('0x1'));var logger=require(_0x037a('0x2'))('api');var moment=require(_0x037a('0x3'));var BPromise=require(_0x037a('0x4'));var rp=require(_0x037a('0x5'));var fs=require('fs');var path=require(_0x037a('0x6'));var rimraf=require(_0x037a('0x7'));var config=require(_0x037a('0x8'));var attributes=require('./intServicenowField.attributes');module['exports']=function(_0x1a321e,_0x594be5){return _0x1a321e['define'](_0x037a('0x9'),attributes,{'tableName':_0x037a('0xa'),'paranoid':![],'indexes':[{'name':_0x037a('0xb'),'fields':[_0x037a('0xc'),_0x037a('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1aae=['exports','define','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intServicenowField.attributes'];(function(_0x4904f3,_0x88328c){var _0x5674cc=function(_0x2b89a1){while(--_0x2b89a1){_0x4904f3['push'](_0x4904f3['shift']());}};_0x5674cc(++_0x88328c);}(_0x1aae,0x11d));var _0xe1aa=function(_0x3a2d4,_0x2c5b45){_0x3a2d4=_0x3a2d4-0x0;var _0x29b9fb=_0x1aae[_0x3a2d4];return _0x29b9fb;};'use strict';var _=require(_0xe1aa('0x0'));var util=require(_0xe1aa('0x1'));var logger=require(_0xe1aa('0x2'))(_0xe1aa('0x3'));var moment=require('moment');var BPromise=require(_0xe1aa('0x4'));var rp=require(_0xe1aa('0x5'));var fs=require('fs');var path=require(_0xe1aa('0x6'));var rimraf=require(_0xe1aa('0x7'));var config=require('../../config/environment');var attributes=require(_0xe1aa('0x8'));module[_0xe1aa('0x9')]=function(_0x28eb72,_0x2ba7b8){return _0x28eb72[_0xe1aa('0xa')]('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0xe1aa('0xb'),'fields':[_0xe1aa('0xc'),_0xe1aa('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 90b9647..e3217ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['client','http','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2e3545,_0x20a6ec){var _0xcf18f=function(_0x3c85dd){while(--_0x3c85dd){_0x2e3545['push'](_0x2e3545['shift']());}};_0xcf18f(++_0x20a6ec);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var moment=require(_0x0baf('0x1'));var BPromise=require(_0x0baf('0x2'));var rs=require(_0x0baf('0x3'));var fs=require('fs');var Redis=require(_0x0baf('0x4'));var db=require(_0x0baf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0baf('0x6'))(_0x0baf('0x7'));var config=require(_0x0baf('0x8'));var jayson=require(_0x0baf('0x9'));var client=jayson[_0x0baf('0xa')][_0x0baf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){return client['request'](_0x1a10b1,_0x1d0a0d)[_0x0baf('0xc')](function(_0x2c7442){logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,_0x0baf('0xf'));logger[_0x0baf('0x10')](_0x0baf('0x11'),_0x2dcaac,_0x0baf('0xf'),JSON[_0x0baf('0x12')](_0x2c7442));if(_0x2c7442[_0x0baf('0x13')]){if(_0x2c7442[_0x0baf('0x13')]['code']===0x1f4){logger['error'](_0x0baf('0xe'),_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x11b947(_0x2c7442[_0x0baf('0x13')]['message']);}logger[_0x0baf('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2dcaac,_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);return _0x5f5030(_0x2c7442[_0x0baf('0x13')][_0x0baf('0x14')]);}else{logger[_0x0baf('0xd')](_0x0baf('0xe'),_0x2dcaac,'request\x20sent');_0x5f5030(_0x2c7442['result'][_0x0baf('0x14')]);}})[_0x0baf('0x15')](function(_0x283408){logger[_0x0baf('0x13')](_0x0baf('0xe'),_0x2dcaac,_0x283408);_0x11b947(_0x283408);});});}
\ No newline at end of file
+var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x3a9623,_0x1ca157){var _0xf7c401=function(_0x8b55ae){while(--_0x8b55ae){_0x3a9623['push'](_0x3a9623['shift']());}};_0xf7c401(++_0x1ca157);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x40ebff,_0x1dd15e){_0x40ebff=_0x40ebff-0x0;var _0x40122a=_0xcb91[_0x40ebff];return _0x40122a;};'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')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index 425b5de..f1f45ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x615e44,_0x2a6283){var _0x46ae37=function(_0x2aac3f){while(--_0x2aac3f){_0x615e44['push'](_0x615e44['shift']());}};_0x46ae37(++_0x2a6283);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 _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(_0x3adb39,_0x426ab4){var _0x3e5a43=function(_0x8bd8bc){while(--_0x8bd8bc){_0x3adb39['push'](_0x3adb39['shift']());}};_0x3e5a43(++_0x426ab4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 d477fbb..84b9c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x29042e,_0x22e2f9){var _0x47b7ff=function(_0x5055d9){while(--_0x5055d9){_0x29042e['push'](_0x29042e['shift']());}};_0x47b7ff(++_0x22e2f9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x22c6e4,_0x25e27f){var _0x14e051=function(_0x2b42d2){while(--_0x2b42d2){_0x22c6e4['push'](_0x22c6e4['shift']());}};_0x14e051(++_0x25e27f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 79a1512..b5f09be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x200d=['stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','JSON','Calls','values','module_fields','remove','includes','label','endsWith','value','test','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','limit','count','Content-Range','json','save','update','then','destroy','error','stack','name','index','map','SugarcrmAccount','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','rawAttributes','keys','includeAll','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','Subjects','getSubjects','getDescriptions','channel','SugarcrmField','getFields','description','duration_minutes','parent_type','parent_name','direction','username','remoteUri','slice','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login'];(function(_0x2b6820,_0x3e54ef){var _0xcd8357=function(_0x44c31d){while(--_0x44c31d){_0x2b6820['push'](_0x2b6820['shift']());}};_0xcd8357(++_0x3e54ef);}(_0x200d,0x176));var _0xd200=function(_0x4bc4c8,_0x3139d3){_0x4bc4c8=_0x4bc4c8-0x0;var _0x3bb121=_0x200d[_0x4bc4c8];return _0x3bb121;};'use strict';var emlformat=require(_0xd200('0x0'));var rimraf=require(_0xd200('0x1'));var zipdir=require(_0xd200('0x2'));var jsonpatch=require(_0xd200('0x3'));var rp=require(_0xd200('0x4'));var moment=require('moment');var BPromise=require(_0xd200('0x5'));var Mustache=require(_0xd200('0x6'));var util=require('util');var path=require(_0xd200('0x7'));var sox=require('sox');var csv=require(_0xd200('0x8'));var ejs=require(_0xd200('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd200('0xa'));var squel=require(_0xd200('0xb'));var crypto=require('crypto');var jsforce=require(_0xd200('0xc'));var deskjs=require(_0xd200('0xd'));var toCsv=require(_0xd200('0x8'));var querystring=require(_0xd200('0xe'));var Papa=require(_0xd200('0xf'));var Redis=require(_0xd200('0x10'));var authService=require(_0xd200('0x11'));var qs=require(_0xd200('0x12'));var as=require(_0xd200('0x13'));var hardwareService=require(_0xd200('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd200('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd200('0x16'));var db=require(_0xd200('0x17'))['db'];var integrations=require(_0xd200('0x18'));function respondWithStatusCode(_0x105739,_0x14c782){_0x14c782=_0x14c782||0xcc;return function(_0x3d0ad5){if(_0x3d0ad5){return _0x105739[_0xd200('0x19')](_0x14c782);}return _0x105739[_0xd200('0x1a')](_0x14c782)[_0xd200('0x1b')]();};}function respondWithResult(_0x3404bd,_0xd3a131){_0xd3a131=_0xd3a131||0xc8;return function(_0x2edd2b){if(_0x2edd2b){return _0x3404bd['status'](_0xd3a131)['json'](_0x2edd2b);}};}function respondWithFilteredResult(_0x37074b,_0xc92468){return function(_0x57621f){if(_0x57621f){var _0x17eaab=typeof _0xc92468[_0xd200('0x1c')]==='undefined'&&typeof _0xc92468[_0xd200('0x1d')]==='undefined';var _0x1abac5=_0x57621f[_0xd200('0x1e')];var _0x4c88e1=_0x17eaab?0x0:_0xc92468[_0xd200('0x1c')];var _0xd57212=_0x17eaab?_0x57621f[_0xd200('0x1e')]:_0xc92468[_0xd200('0x1c')]+_0xc92468[_0xd200('0x1d')];var _0x3930b0;if(_0xd57212>=_0x1abac5){_0xd57212=_0x1abac5;_0x3930b0=0xc8;}else{_0x3930b0=0xce;}_0x37074b['status'](_0x3930b0);return _0x37074b['set'](_0xd200('0x1f'),_0x4c88e1+'-'+_0xd57212+'/'+_0x1abac5)[_0xd200('0x20')](_0x57621f);}return null;};}function patchUpdates(_0x3d353b){return function(_0x25749e){try{jsonpatch['apply'](_0x25749e,_0x3d353b,!![]);}catch(_0x37b276){return BPromise['reject'](_0x37b276);}return _0x25749e[_0xd200('0x21')]();};}function saveUpdates(_0x5b7671,_0x3e5cb1){return function(_0x39b10d){if(_0x39b10d){return _0x39b10d[_0xd200('0x22')](_0x5b7671)[_0xd200('0x23')](function(_0x54673d){return _0x54673d;});}return null;};}function removeEntity(_0x4a56f2,_0x56ae38){return function(_0x4601e3){if(_0x4601e3){return _0x4601e3[_0xd200('0x24')]()[_0xd200('0x23')](function(){_0x4a56f2[_0xd200('0x1a')](0xcc)[_0xd200('0x1b')]();});}};}function handleEntityNotFound(_0x50a720,_0x426ed3){return function(_0x558ffd){if(!_0x558ffd){_0x50a720[_0xd200('0x19')](0x194);}return _0x558ffd;};}function handleError(_0x2768be,_0x3738d2){_0x3738d2=_0x3738d2||0x1f4;return function(_0x4e571e){logger[_0xd200('0x25')](_0x4e571e[_0xd200('0x26')]);if(_0x4e571e[_0xd200('0x27')]){delete _0x4e571e[_0xd200('0x27')];}_0x2768be[_0xd200('0x1a')](_0x3738d2)['send'](_0x4e571e);};}exports[_0xd200('0x28')]=function(_0x580f79,_0x52ef5e){var _0x2d0cff={},_0x37c244={},_0x163cb3={'count':0x0,'rows':[]};var _0x24ed80=_[_0xd200('0x29')](db[_0xd200('0x2a')]['rawAttributes'],function(_0x4cab84){return{'name':_0x4cab84[_0xd200('0x2b')],'type':_0x4cab84[_0xd200('0x2c')][_0xd200('0x2d')]};});_0x37c244[_0xd200('0x2e')]=_['map'](_0x24ed80,_0xd200('0x27'));_0x37c244[_0xd200('0x2f')]=_['keys'](_0x580f79[_0xd200('0x2f')]);_0x37c244[_0xd200('0x30')]=_[_0xd200('0x31')](_0x37c244[_0xd200('0x2e')],_0x37c244[_0xd200('0x2f')]);_0x2d0cff[_0xd200('0x32')]=_['intersection'](_0x37c244['model'],qs[_0xd200('0x33')](_0x580f79[_0xd200('0x2f')][_0xd200('0x33')]));_0x2d0cff['attributes']=_0x2d0cff[_0xd200('0x32')][_0xd200('0x34')]?_0x2d0cff[_0xd200('0x32')]:_0x37c244['model'];if(!_0x580f79['query'][_0xd200('0x35')](_0xd200('0x36'))){_0x2d0cff[_0xd200('0x1d')]=qs[_0xd200('0x1d')](_0x580f79[_0xd200('0x2f')][_0xd200('0x1d')]);_0x2d0cff[_0xd200('0x1c')]=qs[_0xd200('0x1c')](_0x580f79[_0xd200('0x2f')][_0xd200('0x1c')]);}_0x2d0cff[_0xd200('0x37')]=qs[_0xd200('0x38')](_0x580f79[_0xd200('0x2f')][_0xd200('0x38')]);_0x2d0cff[_0xd200('0x39')]=qs[_0xd200('0x30')](_[_0xd200('0x3a')](_0x580f79[_0xd200('0x2f')],_0x37c244[_0xd200('0x30')]),_0x24ed80);if(_0x580f79[_0xd200('0x2f')][_0xd200('0x3b')]){_0x2d0cff[_0xd200('0x39')]=_[_0xd200('0x3c')](_0x2d0cff[_0xd200('0x39')],{'$or':_['map'](_0x24ed80,function(_0x4f73aa){if(_0x4f73aa['type']!=='VIRTUAL'){var _0x41adad={};_0x41adad[_0x4f73aa[_0xd200('0x27')]]={'$like':'%'+_0x580f79[_0xd200('0x2f')]['filter']+'%'};return _0x41adad;}})});}_0x2d0cff=_[_0xd200('0x3c')]({},_0x2d0cff,_0x580f79[_0xd200('0x3d')]);var _0x155329={'where':_0x2d0cff['where']};return db['SugarcrmAccount'][_0xd200('0x1e')](_0x155329)[_0xd200('0x23')](function(_0x7d1562){_0x163cb3[_0xd200('0x1e')]=_0x7d1562;if(_0x580f79[_0xd200('0x2f')]['includeAll']){_0x2d0cff[_0xd200('0x3e')]=[{'all':!![]}];}return db[_0xd200('0x2a')][_0xd200('0x3f')](_0x2d0cff);})['then'](function(_0x4bf1af){_0x163cb3[_0xd200('0x40')]=_0x4bf1af;return _0x163cb3;})[_0xd200('0x23')](respondWithFilteredResult(_0x52ef5e,_0x2d0cff))[_0xd200('0x41')](handleError(_0x52ef5e,null));};exports[_0xd200('0x42')]=function(_0x1d5963,_0x13e1d6){var _0x52ff09={'raw':![],'where':{'id':_0x1d5963[_0xd200('0x43')]['id']}},_0x5ca135={};_0x5ca135[_0xd200('0x2e')]=_['keys'](db['SugarcrmAccount'][_0xd200('0x44')]);_0x5ca135[_0xd200('0x2f')]=_[_0xd200('0x45')](_0x1d5963['query']);_0x5ca135[_0xd200('0x30')]=_[_0xd200('0x31')](_0x5ca135['model'],_0x5ca135[_0xd200('0x2f')]);_0x52ff09[_0xd200('0x32')]=_['intersection'](_0x5ca135[_0xd200('0x2e')],qs['fields'](_0x1d5963[_0xd200('0x2f')][_0xd200('0x33')]));_0x52ff09[_0xd200('0x32')]=_0x52ff09[_0xd200('0x32')][_0xd200('0x34')]?_0x52ff09[_0xd200('0x32')]:_0x5ca135[_0xd200('0x2e')];if(_0x1d5963[_0xd200('0x2f')][_0xd200('0x46')]){_0x52ff09[_0xd200('0x3e')]=[{'all':!![]}];}_0x52ff09=_[_0xd200('0x3c')]({},_0x52ff09,_0x1d5963['options']);return db[_0xd200('0x2a')][_0xd200('0x47')](_0x52ff09)[_0xd200('0x23')](handleEntityNotFound(_0x13e1d6,null))[_0xd200('0x23')](respondWithResult(_0x13e1d6,null))['catch'](handleError(_0x13e1d6,null));};exports['create']=function(_0x5eb883,_0x5cb675){return db[_0xd200('0x2a')][_0xd200('0x48')](_0x5eb883[_0xd200('0x49')],{})[_0xd200('0x23')](respondWithResult(_0x5cb675,0xc9))[_0xd200('0x41')](handleError(_0x5cb675,null));};exports[_0xd200('0x22')]=function(_0x5e7b3c,_0xe42f2e){if(_0x5e7b3c[_0xd200('0x49')]['id']){delete _0x5e7b3c[_0xd200('0x49')]['id'];}return db[_0xd200('0x2a')]['find']({'where':{'id':_0x5e7b3c[_0xd200('0x43')]['id']}})[_0xd200('0x23')](handleEntityNotFound(_0xe42f2e,null))['then'](saveUpdates(_0x5e7b3c[_0xd200('0x49')],null))[_0xd200('0x23')](respondWithResult(_0xe42f2e,null))['catch'](handleError(_0xe42f2e,null));};exports[_0xd200('0x24')]=function(_0x2f65c2,_0x3b9cf6){return db[_0xd200('0x2a')][_0xd200('0x47')]({'where':{'id':_0x2f65c2['params']['id']}})['then'](handleEntityNotFound(_0x3b9cf6,null))[_0xd200('0x23')](removeEntity(_0x3b9cf6,null))[_0xd200('0x41')](handleError(_0x3b9cf6,null));};exports[_0xd200('0x4a')]=function(_0x3019d1,_0x311032,_0x37c37c){var _0x148b2b={};var _0x288684={};var _0x427d85;var _0x519dc2;return db['SugarcrmAccount'][_0xd200('0x4b')]({'where':{'id':_0x3019d1['params']['id']}})[_0xd200('0x23')](handleEntityNotFound(_0x311032,null))[_0xd200('0x23')](function(_0x380368){if(_0x380368){_0x427d85=_0x380368;_0x288684['model']=_['keys'](db[_0xd200('0x4c')][_0xd200('0x44')]);_0x288684[_0xd200('0x2f')]=_[_0xd200('0x45')](_0x3019d1[_0xd200('0x2f')]);_0x288684[_0xd200('0x30')]=_[_0xd200('0x31')](_0x288684[_0xd200('0x2e')],_0x288684[_0xd200('0x2f')]);_0x148b2b['attributes']=_[_0xd200('0x31')](_0x288684[_0xd200('0x2e')],qs['fields'](_0x3019d1[_0xd200('0x2f')][_0xd200('0x33')]));_0x148b2b[_0xd200('0x32')]=_0x148b2b[_0xd200('0x32')]['length']?_0x148b2b['attributes']:_0x288684['model'];_0x148b2b[_0xd200('0x37')]=qs[_0xd200('0x38')](_0x3019d1[_0xd200('0x2f')]['sort']);_0x148b2b[_0xd200('0x39')]=qs['filters'](_[_0xd200('0x3a')](_0x3019d1[_0xd200('0x2f')],_0x288684[_0xd200('0x30')]));if(_0x3019d1['query'][_0xd200('0x3b')]){_0x148b2b[_0xd200('0x39')]=_[_0xd200('0x3c')](_0x148b2b[_0xd200('0x39')],{'$or':_[_0xd200('0x29')](_0x148b2b[_0xd200('0x32')],function(_0x112a4e){var _0x107448={};_0x107448[_0x112a4e]={'$like':'%'+_0x3019d1[_0xd200('0x2f')][_0xd200('0x3b')]+'%'};return _0x107448;})});}_0x148b2b=_['merge']({},_0x148b2b,_0x3019d1['options']);return _0x427d85['getConfigurations'](_0x148b2b);}})[_0xd200('0x23')](function(_0x405a1a){if(_0x405a1a){_0x519dc2=_0x405a1a[_0xd200('0x34')];if(!_0x3019d1[_0xd200('0x2f')][_0xd200('0x35')](_0xd200('0x36'))){_0x148b2b['limit']=qs[_0xd200('0x1d')](_0x3019d1[_0xd200('0x2f')][_0xd200('0x1d')]);_0x148b2b[_0xd200('0x1c')]=qs[_0xd200('0x1c')](_0x3019d1[_0xd200('0x2f')][_0xd200('0x1c')]);}return _0x427d85[_0xd200('0x4a')](_0x148b2b);}})['then'](function(_0x4f5eda){if(_0x4f5eda){return _0x4f5eda?{'count':_0x519dc2,'rows':_0x4f5eda}:null;}})['then'](respondWithResult(_0x311032,null))['catch'](handleError(_0x311032,null));};exports[_0xd200('0x4d')]=function(_0x39ff18,_0x868636,_0x408155){if(_0x39ff18[_0xd200('0x49')]['id']){delete _0x39ff18[_0xd200('0x49')]['id'];}return db[_0xd200('0x2a')][_0xd200('0x4b')]({'where':{'id':_0x39ff18[_0xd200('0x43')]['id']}})[_0xd200('0x23')](handleEntityNotFound(_0x868636,null))[_0xd200('0x23')](function(_0x24c56d){if(_0x24c56d){_0x39ff18[_0xd200('0x49')]['AccountId']=_0x24c56d['id'];_0x39ff18[_0xd200('0x49')][_0xd200('0x4e')]=integrations[_0xd200('0x4f')](_0x39ff18[_0xd200('0x49')]['channel'],_0x39ff18[_0xd200('0x49')][_0xd200('0x2c')]);_0x39ff18['body']['Descriptions']=integrations[_0xd200('0x50')](_0x39ff18['body'][_0xd200('0x51')],_0x39ff18[_0xd200('0x49')][_0xd200('0x2c')]);return db['SugarcrmConfiguration'][_0xd200('0x48')](_0x39ff18[_0xd200('0x49')],{'include':[{'model':db['SugarcrmField'],'as':_0xd200('0x4e')},{'model':db[_0xd200('0x52')],'as':'Descriptions'}]});}return null;})[_0xd200('0x23')](respondWithResult(_0x868636,null))[_0xd200('0x41')](handleError(_0x868636,null));};exports[_0xd200('0x53')]=function(_0xf7780f,_0x2c64f4,_0xd9bf23){var _0x82c753='';var _0x26a515=['id',_0xd200('0x27'),'assigned_user_id','created_by',_0xd200('0x54'),'date_start','duration_hours',_0xd200('0x55'),'parent_id',_0xd200('0x56'),_0xd200('0x57'),_0xd200('0x58')];return db[_0xd200('0x2a')][_0xd200('0x4b')]({'where':{'id':_0xf7780f[_0xd200('0x43')]['id']},'attributes':['id',_0xd200('0x59'),'password',_0xd200('0x5a')]})[_0xd200('0x23')](handleEntityNotFound(_0x2c64f4,null))[_0xd200('0x23')](function(_0x37829c){if(_0x37829c){_0x82c753=_0x37829c[_0xd200('0x5a')];var _0x4d6f76=_0x82c753[_0xd200('0x5b')](-0x1);if(_0x4d6f76==='/'){_0x82c753=_0x82c753['substring'](0x0,_0x82c753[_0xd200('0x5c')](_0x4d6f76));}return rp({'method':_0xd200('0x5d'),'uri':util[_0xd200('0x5e')](_0xd200('0x5f'),_0x82c753,_0xd200('0x60')),'json':!![],'form':{'method':_0xd200('0x61'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xd200('0x62')]({'user_auth':{'user_name':_0x37829c['username'],'password':_0x37829c[_0xd200('0x63')],'encryption':_0xd200('0x64')},'application':_0xd200('0x65')})}});}})[_0xd200('0x23')](function(_0x3c0a31){if(_0x3c0a31&&_0x3c0a31[_0xd200('0x27')]!==_0xd200('0x66')&&_0x3c0a31[_0xd200('0x27')]!==_0xd200('0x67')){return rp({'method':_0xd200('0x5d'),'uri':util[_0xd200('0x5e')](_0xd200('0x5f'),_0x82c753,_0xd200('0x60')),'json':!![],'form':{'method':_0xd200('0x68'),'input_type':'JSON','response_type':_0xd200('0x69'),'rest_data':JSON[_0xd200('0x62')]({'session':_0x3c0a31['id'],'module_name':_0xd200('0x6a')})}})[_0xd200('0x23')](function(_0xe358c4){if(_0xe358c4){var _0x438ccd=_[_0xd200('0x6b')](_0xe358c4[_0xd200('0x6c')]);_[_0xd200('0x6d')](_0x438ccd,function(_0xaed795){return _0x26a515[_0xd200('0x6e')](_0xaed795['name']);});return{'count':_0x438ccd['length'],'rows':_[_0xd200('0x29')](_0x438ccd,function(_0x164085){return{'id':_0x164085[_0xd200('0x27')],'name':_0x164085[_0xd200('0x6f')],'custom':_[_0xd200('0x70')](_0x164085['name'],'_c')?!![]:![],'options':_0x164085[_0xd200('0x3d')]?_['map'](_[_0xd200('0x6b')](_0x164085[_0xd200('0x3d')]),function(_0x2c684a){return{'name':_0x2c684a[_0xd200('0x71')],'value':_0x2c684a[_0xd200('0x27')]};}):[]};})};}})['then'](respondWithResult(_0x2c64f4,null))[_0xd200('0x41')](function(_0x58b561){var _0x1ebdef=_0xf7780f[_0xd200('0x2f')][_0xd200('0x72')]?0x1f4:_0x58b561['statusCode']||0x1f4;logger[_0xd200('0x25')](_0xd200('0x73'),_0xd200('0x53'),_0x1ebdef,JSON['stringify'](_0x58b561));delete _0x58b561[_0xd200('0x27')];if(_0x1ebdef===0x191){_0x1ebdef=0x190;}_0x2c64f4['status'](_0x1ebdef)[_0xd200('0x74')](_0xf7780f[_0xd200('0x2f')][_0xd200('0x72')]?{'message':_0xd200('0x75'),'statusCode':_0x58b561['statusCode']}:_0x58b561);});}else{var _0x3ce997=0x1f4;_0x2c64f4['status'](_0x3ce997)[_0xd200('0x74')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0xe9ae=['lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','Calls','values','module_fields','label','value','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','send','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','index','map','SugarcrmAccount','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','rawAttributes','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','length','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','SugarcrmField','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','direction','username','remoteUri','substring'];(function(_0x3af730,_0x37e8a6){var _0x2fc7b1=function(_0x582aa7){while(--_0x582aa7){_0x3af730['push'](_0x3af730['shift']());}};_0x2fc7b1(++_0x37e8a6);}(_0xe9ae,0x1e8));var _0xee9a=function(_0x4c34d7,_0x1983a9){_0x4c34d7=_0x4c34d7-0x0;var _0xe01f72=_0xe9ae[_0x4c34d7];return _0xe01f72;};'use strict';var emlformat=require(_0xee9a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee9a('0x1'));var jsonpatch=require(_0xee9a('0x2'));var rp=require('request-promise');var moment=require(_0xee9a('0x3'));var BPromise=require(_0xee9a('0x4'));var Mustache=require(_0xee9a('0x5'));var util=require(_0xee9a('0x6'));var path=require('path');var sox=require(_0xee9a('0x7'));var csv=require('to-csv');var ejs=require(_0xee9a('0x8'));var fs=require('fs');var fs_extra=require(_0xee9a('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xee9a('0xa'));var jsforce=require(_0xee9a('0xb'));var deskjs=require(_0xee9a('0xc'));var toCsv=require(_0xee9a('0xd'));var querystring=require('querystring');var Papa=require(_0xee9a('0xe'));var Redis=require('ioredis');var authService=require(_0xee9a('0xf'));var qs=require(_0xee9a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xee9a('0x11'));var logger=require(_0xee9a('0x12'))(_0xee9a('0x13'));var utils=require(_0xee9a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xee9a('0x15'));var db=require(_0xee9a('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x56a6b7,_0x190b48){_0x190b48=_0x190b48||0xcc;return function(_0x231a8b){if(_0x231a8b){return _0x56a6b7[_0xee9a('0x17')](_0x190b48);}return _0x56a6b7[_0xee9a('0x18')](_0x190b48)['end']();};}function respondWithResult(_0x3bd611,_0x3b77f8){_0x3b77f8=_0x3b77f8||0xc8;return function(_0x488ae6){if(_0x488ae6){return _0x3bd611['status'](_0x3b77f8)[_0xee9a('0x19')](_0x488ae6);}};}function respondWithFilteredResult(_0x1ce1f2,_0x53752e){return function(_0x2edf32){if(_0x2edf32){var _0x57eae5=typeof _0x53752e['offset']===_0xee9a('0x1a')&&typeof _0x53752e[_0xee9a('0x1b')]==='undefined';var _0x2ca71b=_0x2edf32[_0xee9a('0x1c')];var _0x45ad74=_0x57eae5?0x0:_0x53752e['offset'];var _0x467559=_0x57eae5?_0x2edf32[_0xee9a('0x1c')]:_0x53752e[_0xee9a('0x1d')]+_0x53752e['limit'];var _0x585243;if(_0x467559>=_0x2ca71b){_0x467559=_0x2ca71b;_0x585243=0xc8;}else{_0x585243=0xce;}_0x1ce1f2[_0xee9a('0x18')](_0x585243);return _0x1ce1f2[_0xee9a('0x1e')](_0xee9a('0x1f'),_0x45ad74+'-'+_0x467559+'/'+_0x2ca71b)['json'](_0x2edf32);}return null;};}function patchUpdates(_0x3abd90){return function(_0x3d493e){try{jsonpatch[_0xee9a('0x20')](_0x3d493e,_0x3abd90,!![]);}catch(_0x470cc6){return BPromise[_0xee9a('0x21')](_0x470cc6);}return _0x3d493e[_0xee9a('0x22')]();};}function saveUpdates(_0x451185,_0xa4560d){return function(_0x8e2c2e){if(_0x8e2c2e){return _0x8e2c2e[_0xee9a('0x23')](_0x451185)[_0xee9a('0x24')](function(_0x54181b){return _0x54181b;});}return null;};}function removeEntity(_0x4750cf,_0x586d5f){return function(_0x5ebfb9){if(_0x5ebfb9){return _0x5ebfb9[_0xee9a('0x25')]()[_0xee9a('0x24')](function(){_0x4750cf[_0xee9a('0x18')](0xcc)[_0xee9a('0x26')]();});}};}function handleEntityNotFound(_0x3980dc,_0x4fc561){return function(_0x1a619b){if(!_0x1a619b){_0x3980dc[_0xee9a('0x17')](0x194);}return _0x1a619b;};}function handleError(_0x4212c2,_0x23e0ea){_0x23e0ea=_0x23e0ea||0x1f4;return function(_0x3e78b4){logger['error'](_0x3e78b4[_0xee9a('0x27')]);if(_0x3e78b4[_0xee9a('0x28')]){delete _0x3e78b4[_0xee9a('0x28')];}_0x4212c2[_0xee9a('0x18')](_0x23e0ea)['send'](_0x3e78b4);};}exports[_0xee9a('0x29')]=function(_0x269d19,_0x55f438){var _0x1ac7fa={},_0x456ff8={},_0x2b6a54={'count':0x0,'rows':[]};var _0x9fb67b=_[_0xee9a('0x2a')](db[_0xee9a('0x2b')]['rawAttributes'],function(_0x137946){return{'name':_0x137946[_0xee9a('0x2c')],'type':_0x137946[_0xee9a('0x2d')]['key']};});_0x456ff8[_0xee9a('0x2e')]=_['map'](_0x9fb67b,_0xee9a('0x28'));_0x456ff8[_0xee9a('0x2f')]=_[_0xee9a('0x30')](_0x269d19['query']);_0x456ff8[_0xee9a('0x31')]=_[_0xee9a('0x32')](_0x456ff8['model'],_0x456ff8[_0xee9a('0x2f')]);_0x1ac7fa['attributes']=_[_0xee9a('0x32')](_0x456ff8[_0xee9a('0x2e')],qs[_0xee9a('0x33')](_0x269d19[_0xee9a('0x2f')][_0xee9a('0x33')]));_0x1ac7fa['attributes']=_0x1ac7fa[_0xee9a('0x34')]['length']?_0x1ac7fa['attributes']:_0x456ff8['model'];if(!_0x269d19[_0xee9a('0x2f')][_0xee9a('0x35')]('nolimit')){_0x1ac7fa[_0xee9a('0x1b')]=qs[_0xee9a('0x1b')](_0x269d19['query'][_0xee9a('0x1b')]);_0x1ac7fa[_0xee9a('0x1d')]=qs[_0xee9a('0x1d')](_0x269d19[_0xee9a('0x2f')]['offset']);}_0x1ac7fa['order']=qs[_0xee9a('0x36')](_0x269d19[_0xee9a('0x2f')][_0xee9a('0x36')]);_0x1ac7fa[_0xee9a('0x37')]=qs['filters'](_[_0xee9a('0x38')](_0x269d19['query'],_0x456ff8['filters']),_0x9fb67b);if(_0x269d19[_0xee9a('0x2f')]['filter']){_0x1ac7fa[_0xee9a('0x37')]=_[_0xee9a('0x39')](_0x1ac7fa[_0xee9a('0x37')],{'$or':_[_0xee9a('0x2a')](_0x9fb67b,function(_0x20c58f){if(_0x20c58f[_0xee9a('0x2d')]!==_0xee9a('0x3a')){var _0xb8a1ef={};_0xb8a1ef[_0x20c58f[_0xee9a('0x28')]]={'$like':'%'+_0x269d19[_0xee9a('0x2f')][_0xee9a('0x3b')]+'%'};return _0xb8a1ef;}})});}_0x1ac7fa=_[_0xee9a('0x39')]({},_0x1ac7fa,_0x269d19[_0xee9a('0x3c')]);var _0x26c09f={'where':_0x1ac7fa[_0xee9a('0x37')]};return db[_0xee9a('0x2b')][_0xee9a('0x1c')](_0x26c09f)[_0xee9a('0x24')](function(_0x36f282){_0x2b6a54[_0xee9a('0x1c')]=_0x36f282;if(_0x269d19[_0xee9a('0x2f')][_0xee9a('0x3d')]){_0x1ac7fa['include']=[{'all':!![]}];}return db[_0xee9a('0x2b')][_0xee9a('0x3e')](_0x1ac7fa);})[_0xee9a('0x24')](function(_0x4db771){_0x2b6a54[_0xee9a('0x3f')]=_0x4db771;return _0x2b6a54;})[_0xee9a('0x24')](respondWithFilteredResult(_0x55f438,_0x1ac7fa))[_0xee9a('0x40')](handleError(_0x55f438,null));};exports[_0xee9a('0x41')]=function(_0xf40c73,_0x29d7a2){var _0x12c516={'raw':![],'where':{'id':_0xf40c73[_0xee9a('0x42')]['id']}},_0x3693b5={};_0x3693b5[_0xee9a('0x2e')]=_[_0xee9a('0x30')](db[_0xee9a('0x2b')][_0xee9a('0x43')]);_0x3693b5[_0xee9a('0x2f')]=_[_0xee9a('0x30')](_0xf40c73[_0xee9a('0x2f')]);_0x3693b5[_0xee9a('0x31')]=_[_0xee9a('0x32')](_0x3693b5[_0xee9a('0x2e')],_0x3693b5[_0xee9a('0x2f')]);_0x12c516[_0xee9a('0x34')]=_[_0xee9a('0x32')](_0x3693b5['model'],qs['fields'](_0xf40c73['query'][_0xee9a('0x33')]));_0x12c516[_0xee9a('0x34')]=_0x12c516[_0xee9a('0x34')]['length']?_0x12c516[_0xee9a('0x34')]:_0x3693b5[_0xee9a('0x2e')];if(_0xf40c73[_0xee9a('0x2f')][_0xee9a('0x3d')]){_0x12c516['include']=[{'all':!![]}];}_0x12c516=_[_0xee9a('0x39')]({},_0x12c516,_0xf40c73['options']);return db[_0xee9a('0x2b')][_0xee9a('0x44')](_0x12c516)[_0xee9a('0x24')](handleEntityNotFound(_0x29d7a2,null))[_0xee9a('0x24')](respondWithResult(_0x29d7a2,null))[_0xee9a('0x40')](handleError(_0x29d7a2,null));};exports['create']=function(_0x514a62,_0x375c7e){return db['SugarcrmAccount'][_0xee9a('0x45')](_0x514a62[_0xee9a('0x46')],{})[_0xee9a('0x24')](respondWithResult(_0x375c7e,0xc9))['catch'](handleError(_0x375c7e,null));};exports['update']=function(_0x5066d0,_0x490b25){if(_0x5066d0[_0xee9a('0x46')]['id']){delete _0x5066d0[_0xee9a('0x46')]['id'];}return db[_0xee9a('0x2b')]['find']({'where':{'id':_0x5066d0['params']['id']}})[_0xee9a('0x24')](handleEntityNotFound(_0x490b25,null))[_0xee9a('0x24')](saveUpdates(_0x5066d0[_0xee9a('0x46')],null))[_0xee9a('0x24')](respondWithResult(_0x490b25,null))[_0xee9a('0x40')](handleError(_0x490b25,null));};exports[_0xee9a('0x25')]=function(_0x3a640d,_0x124336){return db[_0xee9a('0x2b')][_0xee9a('0x44')]({'where':{'id':_0x3a640d['params']['id']}})['then'](handleEntityNotFound(_0x124336,null))[_0xee9a('0x24')](removeEntity(_0x124336,null))['catch'](handleError(_0x124336,null));};exports[_0xee9a('0x47')]=function(_0x5bfac7,_0x16ee98,_0x267999){var _0x3cdc5e={};var _0x2d1304={};var _0x5c2b1f;var _0x457473;return db[_0xee9a('0x2b')][_0xee9a('0x48')]({'where':{'id':_0x5bfac7['params']['id']}})[_0xee9a('0x24')](handleEntityNotFound(_0x16ee98,null))[_0xee9a('0x24')](function(_0x276fb3){if(_0x276fb3){_0x5c2b1f=_0x276fb3;_0x2d1304[_0xee9a('0x2e')]=_[_0xee9a('0x30')](db[_0xee9a('0x49')]['rawAttributes']);_0x2d1304[_0xee9a('0x2f')]=_[_0xee9a('0x30')](_0x5bfac7[_0xee9a('0x2f')]);_0x2d1304[_0xee9a('0x31')]=_[_0xee9a('0x32')](_0x2d1304[_0xee9a('0x2e')],_0x2d1304[_0xee9a('0x2f')]);_0x3cdc5e['attributes']=_[_0xee9a('0x32')](_0x2d1304[_0xee9a('0x2e')],qs[_0xee9a('0x33')](_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x33')]));_0x3cdc5e[_0xee9a('0x34')]=_0x3cdc5e[_0xee9a('0x34')][_0xee9a('0x4a')]?_0x3cdc5e[_0xee9a('0x34')]:_0x2d1304[_0xee9a('0x2e')];_0x3cdc5e['order']=qs[_0xee9a('0x36')](_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x36')]);_0x3cdc5e['where']=qs[_0xee9a('0x31')](_[_0xee9a('0x38')](_0x5bfac7[_0xee9a('0x2f')],_0x2d1304[_0xee9a('0x31')]));if(_0x5bfac7['query'][_0xee9a('0x3b')]){_0x3cdc5e[_0xee9a('0x37')]=_[_0xee9a('0x39')](_0x3cdc5e[_0xee9a('0x37')],{'$or':_[_0xee9a('0x2a')](_0x3cdc5e['attributes'],function(_0x5b38b4){var _0x43ff7a={};_0x43ff7a[_0x5b38b4]={'$like':'%'+_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x3b')]+'%'};return _0x43ff7a;})});}_0x3cdc5e=_[_0xee9a('0x39')]({},_0x3cdc5e,_0x5bfac7[_0xee9a('0x3c')]);return _0x5c2b1f[_0xee9a('0x47')](_0x3cdc5e);}})[_0xee9a('0x24')](function(_0x29a38c){if(_0x29a38c){_0x457473=_0x29a38c[_0xee9a('0x4a')];if(!_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x35')](_0xee9a('0x4b'))){_0x3cdc5e['limit']=qs[_0xee9a('0x1b')](_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x1b')]);_0x3cdc5e[_0xee9a('0x1d')]=qs['offset'](_0x5bfac7[_0xee9a('0x2f')][_0xee9a('0x1d')]);}return _0x5c2b1f[_0xee9a('0x47')](_0x3cdc5e);}})[_0xee9a('0x24')](function(_0x3465d4){if(_0x3465d4){return _0x3465d4?{'count':_0x457473,'rows':_0x3465d4}:null;}})['then'](respondWithResult(_0x16ee98,null))[_0xee9a('0x40')](handleError(_0x16ee98,null));};exports['addConfiguration']=function(_0x37f0a2,_0x4eea85,_0x36dd80){if(_0x37f0a2[_0xee9a('0x46')]['id']){delete _0x37f0a2[_0xee9a('0x46')]['id'];}return db[_0xee9a('0x2b')]['findOne']({'where':{'id':_0x37f0a2['params']['id']}})['then'](handleEntityNotFound(_0x4eea85,null))[_0xee9a('0x24')](function(_0x440d44){if(_0x440d44){_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x4c')]=_0x440d44['id'];_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x4d')]=integrations[_0xee9a('0x4e')](_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x4f')],_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x2d')]);_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x50')]=integrations['getDescriptions'](_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x4f')],_0x37f0a2[_0xee9a('0x46')][_0xee9a('0x2d')]);return db[_0xee9a('0x49')][_0xee9a('0x45')](_0x37f0a2[_0xee9a('0x46')],{'include':[{'model':db[_0xee9a('0x51')],'as':_0xee9a('0x4d')},{'model':db['SugarcrmField'],'as':_0xee9a('0x50')}]});}return null;})['then'](respondWithResult(_0x4eea85,null))[_0xee9a('0x40')](handleError(_0x4eea85,null));};exports['getFields']=function(_0x52f35,_0x39fac3,_0x4d8b60){var _0x4498d='';var _0x67ff5a=['id','name','assigned_user_id','created_by',_0xee9a('0x52'),_0xee9a('0x53'),_0xee9a('0x54'),_0xee9a('0x55'),_0xee9a('0x56'),_0xee9a('0x57'),'parent_name',_0xee9a('0x58')];return db[_0xee9a('0x2b')][_0xee9a('0x48')]({'where':{'id':_0x52f35[_0xee9a('0x42')]['id']},'attributes':['id',_0xee9a('0x59'),'password',_0xee9a('0x5a')]})[_0xee9a('0x24')](handleEntityNotFound(_0x39fac3,null))[_0xee9a('0x24')](function(_0x2369a7){if(_0x2369a7){_0x4498d=_0x2369a7[_0xee9a('0x5a')];var _0x48f26d=_0x4498d['slice'](-0x1);if(_0x48f26d==='/'){_0x4498d=_0x4498d[_0xee9a('0x5b')](0x0,_0x4498d[_0xee9a('0x5c')](_0x48f26d));}return rp({'method':_0xee9a('0x5d'),'uri':util[_0xee9a('0x5e')](_0xee9a('0x5f'),_0x4498d,_0xee9a('0x60')),'json':!![],'form':{'method':_0xee9a('0x61'),'input_type':_0xee9a('0x62'),'response_type':_0xee9a('0x62'),'rest_data':JSON[_0xee9a('0x63')]({'user_auth':{'user_name':_0x2369a7[_0xee9a('0x59')],'password':_0x2369a7[_0xee9a('0x64')],'encryption':'PLAIN'},'application':_0xee9a('0x65')})}});}})['then'](function(_0x5b279c){if(_0x5b279c&&_0x5b279c['name']!==_0xee9a('0x66')&&_0x5b279c[_0xee9a('0x28')]!=='Password\x20Expired'){return rp({'method':_0xee9a('0x5d'),'uri':util[_0xee9a('0x5e')]('%s%s',_0x4498d,_0xee9a('0x60')),'json':!![],'form':{'method':_0xee9a('0x67'),'input_type':_0xee9a('0x62'),'response_type':_0xee9a('0x62'),'rest_data':JSON[_0xee9a('0x63')]({'session':_0x5b279c['id'],'module_name':_0xee9a('0x68')})}})[_0xee9a('0x24')](function(_0x154ee1){if(_0x154ee1){var _0x4be02b=_[_0xee9a('0x69')](_0x154ee1[_0xee9a('0x6a')]);_['remove'](_0x4be02b,function(_0x3d1902){return _0x67ff5a['includes'](_0x3d1902[_0xee9a('0x28')]);});return{'count':_0x4be02b['length'],'rows':_[_0xee9a('0x2a')](_0x4be02b,function(_0x78e11c){return{'id':_0x78e11c[_0xee9a('0x28')],'name':_0x78e11c[_0xee9a('0x6b')],'custom':_['endsWith'](_0x78e11c[_0xee9a('0x28')],'_c')?!![]:![],'options':_0x78e11c[_0xee9a('0x3c')]?_[_0xee9a('0x2a')](_['values'](_0x78e11c[_0xee9a('0x3c')]),function(_0x3ae4c6){return{'name':_0x3ae4c6[_0xee9a('0x6c')],'value':_0x3ae4c6[_0xee9a('0x28')]};}):[]};})};}})[_0xee9a('0x24')](respondWithResult(_0x39fac3,null))[_0xee9a('0x40')](function(_0x801fb3){var _0x5b231c=_0x52f35[_0xee9a('0x2f')][_0xee9a('0x6d')]?0x1f4:_0x801fb3[_0xee9a('0x6e')]||0x1f4;logger[_0xee9a('0x6f')](_0xee9a('0x70'),_0xee9a('0x71'),_0x5b231c,JSON['stringify'](_0x801fb3));delete _0x801fb3[_0xee9a('0x28')];if(_0x5b231c===0x191){_0x5b231c=0x190;}_0x39fac3['status'](_0x5b231c)['send'](_0x52f35[_0xee9a('0x2f')][_0xee9a('0x6d')]?{'message':_0xee9a('0x72'),'statusCode':_0x801fb3[_0xee9a('0x6e')]}:_0x801fb3);});}else{var _0x265a9a=0x1f4;_0x39fac3['status'](_0x265a9a)[_0xee9a('0x73')]({'message':_0xee9a('0x72'),'statusCode':0x190});}});};
\ No newline at end of file
index 71e5adc..4049728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x467e=['../../components/integrations/configuration','define','SugarcrmAccount','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x467e,0x121));var _0xe467=function(_0x235884,_0x1c4355){_0x235884=_0x235884-0x0;var _0x211158=_0x467e[_0x235884];return _0x211158;};'use strict';var _=require(_0xe467('0x0'));var util=require(_0xe467('0x1'));var logger=require(_0xe467('0x2'))('api');var moment=require(_0xe467('0x3'));var BPromise=require('bluebird');var rp=require(_0xe467('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe467('0x5'));var config=require(_0xe467('0x6'));var attributes=require(_0xe467('0x7'));var integrations=require(_0xe467('0x8'));module['exports']=function(_0x531c00,_0x2b2442){return _0x531c00[_0xe467('0x9')](_0xe467('0xa'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc584=['path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','util','../../config/logger','bluebird'];(function(_0x562faf,_0x102bcc){var _0x22c1f6=function(_0x2cd3b8){while(--_0x2cd3b8){_0x562faf['push'](_0x562faf['shift']());}};_0x22c1f6(++_0x102bcc);}(_0xc584,0xa8));var _0x4c58=function(_0x55c979,_0x36c5f0){_0x55c979=_0x55c979-0x0;var _0x690107=_0xc584[_0x55c979];return _0x690107;};'use strict';var _=require('lodash');var util=require(_0x4c58('0x0'));var logger=require(_0x4c58('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4c58('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c58('0x3'));var rimraf=require(_0x4c58('0x4'));var config=require(_0x4c58('0x5'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x4c58('0x6'));module[_0x4c58('0x7')]=function(_0x3e94f0,_0x2fbd47){return _0x3e94f0[_0x4c58('0x8')]('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95224f2..789b9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc34c=['raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','then','info','SugarcrmAccount,\x20%s,\x20%s','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount','options','where','limit','include','map','model','attributes','stringify','ShowSugarcrmAccount'];(function(_0x4a64c2,_0x27f119){var _0x261601=function(_0x4d723d){while(--_0x4d723d){_0x4a64c2['push'](_0x4a64c2['shift']());}};_0x261601(++_0x27f119);}(_0xc34c,0xe1));var _0xcc34=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc34c[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xcc34('0x0'));var util=require(_0xcc34('0x1'));var moment=require('moment');var BPromise=require(_0xcc34('0x2'));var rs=require(_0xcc34('0x3'));var fs=require('fs');var Redis=require(_0xcc34('0x4'));var db=require(_0xcc34('0x5'))['db'];var utils=require(_0xcc34('0x6'));var logger=require('../../config/logger')(_0xcc34('0x7'));var config=require(_0xcc34('0x8'));var jayson=require(_0xcc34('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x43fe24,_0x5dac0a,_0x25ce93){return new BPromise(function(_0x418b95,_0xe9af35){return client['request'](_0x43fe24,_0x25ce93)[_0xcc34('0xa')](function(_0x5053b2){logger[_0xcc34('0xb')](_0xcc34('0xc'),_0x5dac0a,'request\x20sent');logger[_0xcc34('0xd')](_0xcc34('0xe'),_0x5dac0a,'request\x20sent',JSON['stringify'](_0x5053b2));if(_0x5053b2[_0xcc34('0xf')]){if(_0x5053b2[_0xcc34('0xf')][_0xcc34('0x10')]===0x1f4){logger[_0xcc34('0xf')](_0xcc34('0xc'),_0x5dac0a,_0x5053b2[_0xcc34('0xf')][_0xcc34('0x11')]);return _0xe9af35(_0x5053b2[_0xcc34('0xf')][_0xcc34('0x11')]);}logger['error'](_0xcc34('0xc'),_0x5dac0a,_0x5053b2[_0xcc34('0xf')][_0xcc34('0x11')]);return _0x418b95(_0x5053b2[_0xcc34('0xf')][_0xcc34('0x11')]);}else{logger[_0xcc34('0xb')](_0xcc34('0xc'),_0x5dac0a,'request\x20sent');_0x418b95(_0x5053b2[_0xcc34('0x12')][_0xcc34('0x11')]);}})[_0xcc34('0x13')](function(_0x10e9db){logger['error'](_0xcc34('0xc'),_0x5dac0a,_0x10e9db);_0xe9af35(_0x10e9db);});});}exports[_0xcc34('0x14')]=function(_0x18c431){var _0xeb7580=this;return new Promise(function(_0x10aa07,_0x2e49a9){return db[_0xcc34('0x15')]['findAll']({'raw':_0x18c431[_0xcc34('0x16')]?_0x18c431[_0xcc34('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x18c431[_0xcc34('0x16')]?_0x18c431[_0xcc34('0x16')][_0xcc34('0x17')]||null:null,'attributes':_0x18c431[_0xcc34('0x16')]?_0x18c431[_0xcc34('0x16')]['attributes']||null:null,'limit':_0x18c431['options']?_0x18c431['options'][_0xcc34('0x18')]||null:null,'include':_0x18c431['options']?_0x18c431[_0xcc34('0x16')][_0xcc34('0x19')]?_[_0xcc34('0x1a')](_0x18c431[_0xcc34('0x16')][_0xcc34('0x19')],function(_0x3904ba){return{'model':db[_0x3904ba[_0xcc34('0x1b')]],'as':_0x3904ba['as'],'attributes':_0x3904ba[_0xcc34('0x1c')],'include':_0x3904ba[_0xcc34('0x19')]?_['map'](_0x3904ba[_0xcc34('0x19')],function(_0x280b7e){return{'model':db[_0x280b7e[_0xcc34('0x1b')]],'as':_0x280b7e['as'],'attributes':_0x280b7e[_0xcc34('0x1c')],'include':_0x280b7e[_0xcc34('0x19')]?_[_0xcc34('0x1a')](_0x280b7e[_0xcc34('0x19')],function(_0x433731){return{'model':db[_0x433731['model']],'as':_0x433731['as'],'attributes':_0x433731[_0xcc34('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcc34('0xa')](function(_0xb7501a){logger['info'](_0xcc34('0x14'),_0x18c431);logger['debug'](_0xcc34('0x14'),_0x18c431,JSON[_0xcc34('0x1d')](_0xb7501a));_0x10aa07(_0xb7501a);})[_0xcc34('0x13')](function(_0x23dfd9){logger[_0xcc34('0xf')](_0xcc34('0x14'),_0x23dfd9[_0xcc34('0x11')],_0x18c431);_0x2e49a9(_0xeb7580[_0xcc34('0xf')](0x1f4,_0x23dfd9['message']));});});};exports[_0xcc34('0x1e')]=function(_0x41560e){var _0x137ff2=this;return new Promise(function(_0x1e5cff,_0x25aa9b){return db[_0xcc34('0x15')]['find']({'raw':_0x41560e[_0xcc34('0x16')]?_0x41560e[_0xcc34('0x16')][_0xcc34('0x1f')]===undefined?!![]:![]:!![],'where':_0x41560e['options']?_0x41560e[_0xcc34('0x16')][_0xcc34('0x17')]||null:null,'attributes':_0x41560e['options']?_0x41560e[_0xcc34('0x16')][_0xcc34('0x1c')]||null:null,'include':_0x41560e[_0xcc34('0x16')]?_0x41560e['options'][_0xcc34('0x19')]?_[_0xcc34('0x1a')](_0x41560e[_0xcc34('0x16')][_0xcc34('0x19')],function(_0x60b575){return{'model':db[_0x60b575[_0xcc34('0x1b')]],'as':_0x60b575['as'],'attributes':_0x60b575[_0xcc34('0x1c')],'include':_0x60b575[_0xcc34('0x19')]?_[_0xcc34('0x1a')](_0x60b575[_0xcc34('0x19')],function(_0x461020){return{'model':db[_0x461020[_0xcc34('0x1b')]],'as':_0x461020['as'],'attributes':_0x461020[_0xcc34('0x1c')],'include':_0x461020['include']?_[_0xcc34('0x1a')](_0x461020[_0xcc34('0x19')],function(_0x1d2a45){return{'model':db[_0x1d2a45[_0xcc34('0x1b')]],'as':_0x1d2a45['as'],'attributes':_0x1d2a45[_0xcc34('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcc34('0xa')](function(_0x4dbe0a){logger[_0xcc34('0xb')](_0xcc34('0x1e'),_0x41560e);logger[_0xcc34('0xd')](_0xcc34('0x1e'),_0x41560e,JSON[_0xcc34('0x1d')](_0x4dbe0a));_0x1e5cff(_0x4dbe0a);})['catch'](function(_0x46d297){logger['error']('ShowSugarcrmAccount',_0x46d297[_0xcc34('0x11')],_0x41560e);_0x25aa9b(_0x137ff2[_0xcc34('0xf')](0x1f4,_0x46d297['message']));});});};
\ No newline at end of file
+var _0x92aa=['find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','then','info','SugarcrmAccount,\x20%s,\x20%s','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','GetSugarcrmAccount','options','raw','where','attributes','limit','include','map','model','debug','stringify','catch','ShowSugarcrmAccount'];(function(_0x55550f,_0x4311c0){var _0x306237=function(_0x17a01c){while(--_0x17a01c){_0x55550f['push'](_0x55550f['shift']());}};_0x306237(++_0x4311c0);}(_0x92aa,0x1e1));var _0xa92a=function(_0x46f057,_0x218882){_0x46f057=_0x46f057-0x0;var _0x326cbf=_0x92aa[_0x46f057];return _0x326cbf;};'use strict';var _=require('lodash');var util=require(_0xa92a('0x0'));var moment=require(_0xa92a('0x1'));var BPromise=require(_0xa92a('0x2'));var rs=require(_0xa92a('0x3'));var fs=require('fs');var Redis=require(_0xa92a('0x4'));var db=require(_0xa92a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa92a('0x6'));var config=require(_0xa92a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa92a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b3d42,_0x5b10fa,_0xf2d992){return new BPromise(function(_0x11e068,_0x1d481f){return client['request'](_0x5b3d42,_0xf2d992)[_0xa92a('0x9')](function(_0x417410){logger[_0xa92a('0xa')](_0xa92a('0xb'),_0x5b10fa,'request\x20sent');logger['debug'](_0xa92a('0xc'),_0x5b10fa,_0xa92a('0xd'),JSON['stringify'](_0x417410));if(_0x417410[_0xa92a('0xe')]){if(_0x417410[_0xa92a('0xe')][_0xa92a('0xf')]===0x1f4){logger[_0xa92a('0xe')](_0xa92a('0xb'),_0x5b10fa,_0x417410[_0xa92a('0xe')][_0xa92a('0x10')]);return _0x1d481f(_0x417410[_0xa92a('0xe')]['message']);}logger[_0xa92a('0xe')](_0xa92a('0xb'),_0x5b10fa,_0x417410[_0xa92a('0xe')][_0xa92a('0x10')]);return _0x11e068(_0x417410[_0xa92a('0xe')][_0xa92a('0x10')]);}else{logger[_0xa92a('0xa')](_0xa92a('0xb'),_0x5b10fa,_0xa92a('0xd'));_0x11e068(_0x417410[_0xa92a('0x11')][_0xa92a('0x10')]);}})['catch'](function(_0x5c8f45){logger[_0xa92a('0xe')](_0xa92a('0xb'),_0x5b10fa,_0x5c8f45);_0x1d481f(_0x5c8f45);});});}exports[_0xa92a('0x12')]=function(_0x11d7a7){var _0xd6f8d9=this;return new Promise(function(_0xbd4c35,_0x15abba){return db['SugarcrmAccount']['findAll']({'raw':_0x11d7a7[_0xa92a('0x13')]?_0x11d7a7[_0xa92a('0x13')][_0xa92a('0x14')]===undefined?!![]:![]:!![],'where':_0x11d7a7['options']?_0x11d7a7[_0xa92a('0x13')][_0xa92a('0x15')]||null:null,'attributes':_0x11d7a7[_0xa92a('0x13')]?_0x11d7a7[_0xa92a('0x13')][_0xa92a('0x16')]||null:null,'limit':_0x11d7a7['options']?_0x11d7a7['options'][_0xa92a('0x17')]||null:null,'include':_0x11d7a7[_0xa92a('0x13')]?_0x11d7a7[_0xa92a('0x13')][_0xa92a('0x18')]?_[_0xa92a('0x19')](_0x11d7a7[_0xa92a('0x13')]['include'],function(_0x5b1c89){return{'model':db[_0x5b1c89['model']],'as':_0x5b1c89['as'],'attributes':_0x5b1c89[_0xa92a('0x16')],'include':_0x5b1c89[_0xa92a('0x18')]?_['map'](_0x5b1c89[_0xa92a('0x18')],function(_0x506acc){return{'model':db[_0x506acc[_0xa92a('0x1a')]],'as':_0x506acc['as'],'attributes':_0x506acc[_0xa92a('0x16')],'include':_0x506acc['include']?_['map'](_0x506acc[_0xa92a('0x18')],function(_0x254c42){return{'model':db[_0x254c42[_0xa92a('0x1a')]],'as':_0x254c42['as'],'attributes':_0x254c42[_0xa92a('0x16')]};}):[]};}):[]};}):[]:[]})[_0xa92a('0x9')](function(_0x50ce14){logger[_0xa92a('0xa')](_0xa92a('0x12'),_0x11d7a7);logger[_0xa92a('0x1b')](_0xa92a('0x12'),_0x11d7a7,JSON[_0xa92a('0x1c')](_0x50ce14));_0xbd4c35(_0x50ce14);})[_0xa92a('0x1d')](function(_0x511a27){logger[_0xa92a('0xe')](_0xa92a('0x12'),_0x511a27[_0xa92a('0x10')],_0x11d7a7);_0x15abba(_0xd6f8d9[_0xa92a('0xe')](0x1f4,_0x511a27[_0xa92a('0x10')]));});});};exports[_0xa92a('0x1e')]=function(_0x3802ed){var _0x1ae97c=this;return new Promise(function(_0xaf3709,_0xbc691c){return db['SugarcrmAccount'][_0xa92a('0x1f')]({'raw':_0x3802ed[_0xa92a('0x13')]?_0x3802ed['options'][_0xa92a('0x14')]===undefined?!![]:![]:!![],'where':_0x3802ed[_0xa92a('0x13')]?_0x3802ed['options']['where']||null:null,'attributes':_0x3802ed[_0xa92a('0x13')]?_0x3802ed[_0xa92a('0x13')]['attributes']||null:null,'include':_0x3802ed[_0xa92a('0x13')]?_0x3802ed[_0xa92a('0x13')][_0xa92a('0x18')]?_[_0xa92a('0x19')](_0x3802ed[_0xa92a('0x13')][_0xa92a('0x18')],function(_0x436657){return{'model':db[_0x436657[_0xa92a('0x1a')]],'as':_0x436657['as'],'attributes':_0x436657[_0xa92a('0x16')],'include':_0x436657[_0xa92a('0x18')]?_[_0xa92a('0x19')](_0x436657['include'],function(_0x2192c8){return{'model':db[_0x2192c8['model']],'as':_0x2192c8['as'],'attributes':_0x2192c8[_0xa92a('0x16')],'include':_0x2192c8['include']?_['map'](_0x2192c8['include'],function(_0xb3d92){return{'model':db[_0xb3d92[_0xa92a('0x1a')]],'as':_0xb3d92['as'],'attributes':_0xb3d92[_0xa92a('0x16')]};}):[]};}):[]};}):[]:[]})[_0xa92a('0x9')](function(_0x49f8e7){logger[_0xa92a('0xa')](_0xa92a('0x1e'),_0x3802ed);logger[_0xa92a('0x1b')]('ShowSugarcrmAccount',_0x3802ed,JSON[_0xa92a('0x1c')](_0x49f8e7));_0xaf3709(_0x49f8e7);})[_0xa92a('0x1d')](function(_0x180c1d){logger['error']('ShowSugarcrmAccount',_0x180c1d[_0xa92a('0x10')],_0x3802ed);_0xbc691c(_0x1ae97c[_0xa92a('0xe')](0x1f4,_0x180c1d[_0xa92a('0x10')]));});});};
\ No newline at end of file
index 3585682..6c5bdf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa02f=['express','Router','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','put','update','exports','multer','util','connect-timeout'];(function(_0x58f3d1,_0x671365){var _0x550b2a=function(_0x589379){while(--_0x589379){_0x58f3d1['push'](_0x58f3d1['shift']());}};_0x550b2a(++_0x671365);}(_0xa02f,0x97));var _0xfa02=function(_0x352ffd,_0xd9f656){_0x352ffd=_0x352ffd-0x0;var _0x890eaf=_0xa02f[_0x352ffd];return _0x890eaf;};'use strict';var multer=require(_0xfa02('0x0'));var util=require(_0xfa02('0x1'));var path=require('path');var timeout=require(_0xfa02('0x2'));var express=require(_0xfa02('0x3'));var router=express[_0xfa02('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfa02('0x5'));var config=require(_0xfa02('0x6'));var controller=require(_0xfa02('0x7'));router[_0xfa02('0x8')]('/',auth[_0xfa02('0x9')](),controller[_0xfa02('0xa')]);router[_0xfa02('0x8')](_0xfa02('0xb'),auth[_0xfa02('0x9')](),controller[_0xfa02('0xc')]);router[_0xfa02('0x8')](_0xfa02('0xd'),auth['isAuthenticated'](),controller[_0xfa02('0xe')]);router[_0xfa02('0x8')](_0xfa02('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xfa02('0x8')](_0xfa02('0x10'),auth[_0xfa02('0x9')](),controller[_0xfa02('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0xfa02('0x12')]);router[_0xfa02('0x13')](_0xfa02('0xb'),auth[_0xfa02('0x9')](),controller[_0xfa02('0x14')]);router['delete'](_0xfa02('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xfa02('0x15')]=router;
\ No newline at end of file
+var _0x7f62=['multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','destroy'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x7f62,0x118));var _0x27f6=function(_0x3cae69,_0x233c38){_0x3cae69=_0x3cae69-0x0;var _0x3128eb=_0x7f62[_0x3cae69];return _0x3128eb;};'use strict';var multer=require(_0x27f6('0x0'));var util=require('util');var path=require(_0x27f6('0x1'));var timeout=require(_0x27f6('0x2'));var express=require(_0x27f6('0x3'));var router=express['Router']();var fs_extra=require(_0x27f6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x27f6('0x5'));var config=require(_0x27f6('0x6'));var controller=require(_0x27f6('0x7'));router[_0x27f6('0x8')]('/',auth[_0x27f6('0x9')](),controller['index']);router[_0x27f6('0x8')](_0x27f6('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x27f6('0x8')](_0x27f6('0xb'),auth[_0x27f6('0x9')](),controller['getFields']);router[_0x27f6('0x8')](_0x27f6('0xc'),auth[_0x27f6('0x9')](),controller[_0x27f6('0xd')]);router[_0x27f6('0x8')](_0x27f6('0xe'),auth[_0x27f6('0x9')](),controller[_0x27f6('0xf')]);router[_0x27f6('0x10')]('/',auth['isAuthenticated'](),controller[_0x27f6('0x11')]);router['put'](_0x27f6('0xa'),auth[_0x27f6('0x9')](),controller[_0x27f6('0x12')]);router['delete'](_0x27f6('0xa'),auth[_0x27f6('0x9')](),controller[_0x27f6('0x13')]);module['exports']=router;
\ No newline at end of file
index ea643d6..674eb4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8394=['STRING','sequelize','exports'];(function(_0x4f51cb,_0x3d7bd4){var _0x4b34b1=function(_0x1bab33){while(--_0x1bab33){_0x4f51cb['push'](_0x4f51cb['shift']());}};_0x4b34b1(++_0x3d7bd4);}(_0x8394,0x11b));var _0x4839=function(_0x56d7e6,_0xa625b2){_0x56d7e6=_0x56d7e6-0x0;var _0x3330e4=_0x8394[_0x56d7e6];return _0x3330e4;};'use strict';var Sequelize=require(_0x4839('0x0'));module[_0x4839('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4839('0x2')]}};
\ No newline at end of file
+var _0x761f=['STRING','exports'];(function(_0x154940,_0x4a448a){var _0x401409=function(_0x45cdcf){while(--_0x45cdcf){_0x154940['push'](_0x154940['shift']());}};_0x401409(++_0x4a448a);}(_0x761f,0x157));var _0xf761=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x761f[_0x5a2285];return _0x48f6ed;};'use strict';var Sequelize=require('sequelize');module[_0xf761('0x0')]={'name':{'type':Sequelize[_0xf761('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 35f38df..f5e88fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbbf=['count','offset','limit','Content-Range','apply','update','then','destroy','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','catch','create','body','SugarcrmField','getFields','getSubjects','getDescriptions','findOne','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/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xfbbf,0x17a));var _0xffbb=function(_0x44fa98,_0x3f8059){_0x44fa98=_0x44fa98-0x0;var _0x2d8e51=_0xfbbf[_0x44fa98];return _0x2d8e51;};'use strict';var emlformat=require(_0xffbb('0x0'));var rimraf=require(_0xffbb('0x1'));var zipdir=require(_0xffbb('0x2'));var jsonpatch=require(_0xffbb('0x3'));var rp=require(_0xffbb('0x4'));var moment=require(_0xffbb('0x5'));var BPromise=require(_0xffbb('0x6'));var Mustache=require(_0xffbb('0x7'));var util=require(_0xffbb('0x8'));var path=require('path');var sox=require(_0xffbb('0x9'));var csv=require(_0xffbb('0xa'));var ejs=require(_0xffbb('0xb'));var fs=require('fs');var fs_extra=require(_0xffbb('0xc'));var _=require(_0xffbb('0xd'));var squel=require(_0xffbb('0xe'));var crypto=require(_0xffbb('0xf'));var jsforce=require(_0xffbb('0x10'));var deskjs=require(_0xffbb('0x11'));var toCsv=require(_0xffbb('0xa'));var querystring=require(_0xffbb('0x12'));var Papa=require(_0xffbb('0x13'));var Redis=require(_0xffbb('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xffbb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xffbb('0x16'))(_0xffbb('0x17'));var utils=require(_0xffbb('0x18'));var config=require(_0xffbb('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xffbb('0x1a'))['db'];function respondWithStatusCode(_0x5c9c86,_0x58e0aa){_0x58e0aa=_0x58e0aa||0xcc;return function(_0x362e9e){if(_0x362e9e){return _0x5c9c86[_0xffbb('0x1b')](_0x58e0aa);}return _0x5c9c86[_0xffbb('0x1c')](_0x58e0aa)[_0xffbb('0x1d')]();};}function respondWithResult(_0x24f4fa,_0x1b6187){_0x1b6187=_0x1b6187||0xc8;return function(_0x432ad4){if(_0x432ad4){return _0x24f4fa[_0xffbb('0x1c')](_0x1b6187)[_0xffbb('0x1e')](_0x432ad4);}};}function respondWithFilteredResult(_0x1776b4,_0xe87bd2){return function(_0x39ff5a){if(_0x39ff5a){var _0x4743f5=typeof _0xe87bd2['offset']===_0xffbb('0x1f')&&typeof _0xe87bd2['limit']===_0xffbb('0x1f');var _0xc3a470=_0x39ff5a[_0xffbb('0x20')];var _0x2b46df=_0x4743f5?0x0:_0xe87bd2[_0xffbb('0x21')];var _0x45fbc5=_0x4743f5?_0x39ff5a['count']:_0xe87bd2['offset']+_0xe87bd2[_0xffbb('0x22')];var _0x27650a;if(_0x45fbc5>=_0xc3a470){_0x45fbc5=_0xc3a470;_0x27650a=0xc8;}else{_0x27650a=0xce;}_0x1776b4[_0xffbb('0x1c')](_0x27650a);return _0x1776b4['set'](_0xffbb('0x23'),_0x2b46df+'-'+_0x45fbc5+'/'+_0xc3a470)['json'](_0x39ff5a);}return null;};}function patchUpdates(_0x381f0e){return function(_0x252633){try{jsonpatch[_0xffbb('0x24')](_0x252633,_0x381f0e,!![]);}catch(_0x3c4cf8){return BPromise['reject'](_0x3c4cf8);}return _0x252633['save']();};}function saveUpdates(_0x4bd480,_0x1a0358){return function(_0xd09587){if(_0xd09587){return _0xd09587[_0xffbb('0x25')](_0x4bd480)[_0xffbb('0x26')](function(_0xe6b0da){return _0xe6b0da;});}return null;};}function removeEntity(_0x4e8f98,_0x2e3fb9){return function(_0x1e5edf){if(_0x1e5edf){return _0x1e5edf[_0xffbb('0x27')]()[_0xffbb('0x26')](function(){_0x4e8f98[_0xffbb('0x1c')](0xcc)[_0xffbb('0x1d')]();});}};}function handleEntityNotFound(_0x328ab8,_0x306da5){return function(_0x386c9f){if(!_0x386c9f){_0x328ab8[_0xffbb('0x1b')](0x194);}return _0x386c9f;};}function handleError(_0x210a07,_0x7d198){_0x7d198=_0x7d198||0x1f4;return function(_0x43233a){logger[_0xffbb('0x28')](_0x43233a[_0xffbb('0x29')]);if(_0x43233a[_0xffbb('0x2a')]){delete _0x43233a[_0xffbb('0x2a')];}_0x210a07['status'](_0x7d198)[_0xffbb('0x2b')](_0x43233a);};}exports[_0xffbb('0x2c')]=function(_0x38c984,_0x57af2a){var _0x227a1f={},_0x5b9905={},_0x4e4229={'count':0x0,'rows':[]};var _0x2d46e0=_[_0xffbb('0x2d')](db[_0xffbb('0x2e')][_0xffbb('0x2f')],function(_0x49dd82){return{'name':_0x49dd82[_0xffbb('0x30')],'type':_0x49dd82[_0xffbb('0x31')][_0xffbb('0x32')]};});_0x5b9905['model']=_['map'](_0x2d46e0,_0xffbb('0x2a'));_0x5b9905[_0xffbb('0x33')]=_[_0xffbb('0x34')](_0x38c984[_0xffbb('0x33')]);_0x5b9905['filters']=_[_0xffbb('0x35')](_0x5b9905['model'],_0x5b9905[_0xffbb('0x33')]);_0x227a1f[_0xffbb('0x36')]=_[_0xffbb('0x35')](_0x5b9905['model'],qs[_0xffbb('0x37')](_0x38c984[_0xffbb('0x33')][_0xffbb('0x37')]));_0x227a1f['attributes']=_0x227a1f[_0xffbb('0x36')][_0xffbb('0x38')]?_0x227a1f[_0xffbb('0x36')]:_0x5b9905[_0xffbb('0x39')];if(!_0x38c984['query'][_0xffbb('0x3a')](_0xffbb('0x3b'))){_0x227a1f[_0xffbb('0x22')]=qs['limit'](_0x38c984[_0xffbb('0x33')][_0xffbb('0x22')]);_0x227a1f[_0xffbb('0x21')]=qs[_0xffbb('0x21')](_0x38c984['query'][_0xffbb('0x21')]);}_0x227a1f[_0xffbb('0x3c')]=qs[_0xffbb('0x3d')](_0x38c984[_0xffbb('0x33')][_0xffbb('0x3d')]);_0x227a1f[_0xffbb('0x3e')]=qs[_0xffbb('0x3f')](_[_0xffbb('0x40')](_0x38c984[_0xffbb('0x33')],_0x5b9905[_0xffbb('0x3f')]),_0x2d46e0);if(_0x38c984[_0xffbb('0x33')][_0xffbb('0x41')]){_0x227a1f['where']=_[_0xffbb('0x42')](_0x227a1f[_0xffbb('0x3e')],{'$or':_[_0xffbb('0x2d')](_0x2d46e0,function(_0x2acda3){if(_0x2acda3[_0xffbb('0x31')]!==_0xffbb('0x43')){var _0x55494f={};_0x55494f[_0x2acda3['name']]={'$like':'%'+_0x38c984[_0xffbb('0x33')]['filter']+'%'};return _0x55494f;}})});}_0x227a1f=_['merge']({},_0x227a1f,_0x38c984[_0xffbb('0x44')]);var _0x1c5afb={'where':_0x227a1f[_0xffbb('0x3e')]};return db[_0xffbb('0x2e')]['count'](_0x1c5afb)['then'](function(_0x38e1c2){_0x4e4229[_0xffbb('0x20')]=_0x38e1c2;if(_0x38c984[_0xffbb('0x33')][_0xffbb('0x45')]){_0x227a1f[_0xffbb('0x46')]=[{'all':!![]}];}return db[_0xffbb('0x2e')][_0xffbb('0x47')](_0x227a1f);})[_0xffbb('0x26')](function(_0x4bd10b){_0x4e4229[_0xffbb('0x48')]=_0x4bd10b;return _0x4e4229;})['then'](respondWithFilteredResult(_0x57af2a,_0x227a1f))['catch'](handleError(_0x57af2a,null));};exports['show']=function(_0x3639e8,_0x20ba27){var _0x638b15={'raw':![],'where':{'id':_0x3639e8[_0xffbb('0x49')]['id']}},_0xaed6bf={};_0xaed6bf[_0xffbb('0x39')]=_[_0xffbb('0x34')](db['SugarcrmConfiguration'][_0xffbb('0x2f')]);_0xaed6bf[_0xffbb('0x33')]=_[_0xffbb('0x34')](_0x3639e8['query']);_0xaed6bf['filters']=_[_0xffbb('0x35')](_0xaed6bf[_0xffbb('0x39')],_0xaed6bf[_0xffbb('0x33')]);_0x638b15[_0xffbb('0x36')]=_[_0xffbb('0x35')](_0xaed6bf[_0xffbb('0x39')],qs[_0xffbb('0x37')](_0x3639e8[_0xffbb('0x33')]['fields']));_0x638b15[_0xffbb('0x36')]=_0x638b15['attributes'][_0xffbb('0x38')]?_0x638b15[_0xffbb('0x36')]:_0xaed6bf[_0xffbb('0x39')];if(_0x3639e8[_0xffbb('0x33')][_0xffbb('0x45')]){_0x638b15[_0xffbb('0x46')]=[{'all':!![]}];}_0x638b15=_[_0xffbb('0x42')]({},_0x638b15,_0x3639e8[_0xffbb('0x44')]);return db[_0xffbb('0x2e')]['find'](_0x638b15)[_0xffbb('0x26')](handleEntityNotFound(_0x20ba27,null))['then'](respondWithResult(_0x20ba27,null))[_0xffbb('0x4a')](handleError(_0x20ba27,null));};exports['create']=function(_0x4c92c4,_0xd76238){return db[_0xffbb('0x2e')][_0xffbb('0x4b')](_0x4c92c4['body'],{})['then'](respondWithResult(_0xd76238,0xc9))[_0xffbb('0x4a')](handleError(_0xd76238,null));};exports[_0xffbb('0x25')]=function(_0x4ded32,_0x4a5044){if(_0x4ded32[_0xffbb('0x4c')]['id']){delete _0x4ded32['body']['id'];}return db[_0xffbb('0x2e')]['find']({'where':{'id':_0x4ded32['params']['id']}})[_0xffbb('0x26')](handleEntityNotFound(_0x4a5044,null))['then'](saveUpdates(_0x4ded32[_0xffbb('0x4c')],null))[_0xffbb('0x26')](respondWithResult(_0x4a5044,null))[_0xffbb('0x4a')](handleError(_0x4a5044,null));};exports[_0xffbb('0x27')]=function(_0x46a836,_0x4c8270){return db[_0xffbb('0x2e')]['find']({'where':{'id':_0x46a836['params']['id']}})['then'](handleEntityNotFound(_0x4c8270,null))[_0xffbb('0x26')](removeEntity(_0x4c8270,null))[_0xffbb('0x4a')](handleError(_0x4c8270,null));};exports['getFields']=function(_0x338a27,_0x371d59,_0x4e0cfd){var _0x37bf7c={};var _0xb3172e={};var _0x4dc7e9;var _0x3782d7;return db[_0xffbb('0x2e')]['findOne']({'where':{'id':_0x338a27[_0xffbb('0x49')]['id']}})['then'](handleEntityNotFound(_0x371d59,null))[_0xffbb('0x26')](function(_0x360698){if(_0x360698){_0x4dc7e9=_0x360698;_0xb3172e[_0xffbb('0x39')]=_[_0xffbb('0x34')](db[_0xffbb('0x4d')][_0xffbb('0x2f')]);_0xb3172e[_0xffbb('0x33')]=_['keys'](_0x338a27['query']);_0xb3172e[_0xffbb('0x3f')]=_[_0xffbb('0x35')](_0xb3172e[_0xffbb('0x39')],_0xb3172e[_0xffbb('0x33')]);_0x37bf7c[_0xffbb('0x36')]=_[_0xffbb('0x35')](_0xb3172e[_0xffbb('0x39')],qs[_0xffbb('0x37')](_0x338a27[_0xffbb('0x33')][_0xffbb('0x37')]));_0x37bf7c['attributes']=_0x37bf7c['attributes'][_0xffbb('0x38')]?_0x37bf7c[_0xffbb('0x36')]:_0xb3172e[_0xffbb('0x39')];_0x37bf7c[_0xffbb('0x3c')]=qs[_0xffbb('0x3d')](_0x338a27[_0xffbb('0x33')][_0xffbb('0x3d')]);_0x37bf7c[_0xffbb('0x3e')]=qs[_0xffbb('0x3f')](_[_0xffbb('0x40')](_0x338a27[_0xffbb('0x33')],_0xb3172e[_0xffbb('0x3f')]));if(_0x338a27[_0xffbb('0x33')][_0xffbb('0x41')]){_0x37bf7c[_0xffbb('0x3e')]=_[_0xffbb('0x42')](_0x37bf7c['where'],{'$or':_['map'](_0x37bf7c[_0xffbb('0x36')],function(_0x368f65){var _0x5734fa={};_0x5734fa[_0x368f65]={'$like':'%'+_0x338a27[_0xffbb('0x33')][_0xffbb('0x41')]+'%'};return _0x5734fa;})});}_0x37bf7c=_[_0xffbb('0x42')]({},_0x37bf7c,_0x338a27['options']);return _0x4dc7e9[_0xffbb('0x4e')](_0x37bf7c);}})[_0xffbb('0x26')](function(_0x398d9c){if(_0x398d9c){_0x3782d7=_0x398d9c[_0xffbb('0x38')];if(!_0x338a27['query']['hasOwnProperty'](_0xffbb('0x3b'))){_0x37bf7c['limit']=qs[_0xffbb('0x22')](_0x338a27[_0xffbb('0x33')]['limit']);_0x37bf7c[_0xffbb('0x21')]=qs[_0xffbb('0x21')](_0x338a27[_0xffbb('0x33')][_0xffbb('0x21')]);}return _0x4dc7e9[_0xffbb('0x4e')](_0x37bf7c);}})[_0xffbb('0x26')](function(_0x2a11f8){if(_0x2a11f8){return _0x2a11f8?{'count':_0x3782d7,'rows':_0x2a11f8}:null;}})[_0xffbb('0x26')](respondWithResult(_0x371d59,null))[_0xffbb('0x4a')](handleError(_0x371d59,null));};exports[_0xffbb('0x4f')]=function(_0x35279d,_0x26d10a,_0x53f435){var _0x21e720={};var _0x130dc6={};var _0x3eea61;var _0xbf1d2d;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x35279d['params']['id']}})[_0xffbb('0x26')](handleEntityNotFound(_0x26d10a,null))[_0xffbb('0x26')](function(_0x73820a){if(_0x73820a){_0x3eea61=_0x73820a;_0x130dc6[_0xffbb('0x39')]=_[_0xffbb('0x34')](db[_0xffbb('0x4d')][_0xffbb('0x2f')]);_0x130dc6['query']=_[_0xffbb('0x34')](_0x35279d[_0xffbb('0x33')]);_0x130dc6[_0xffbb('0x3f')]=_[_0xffbb('0x35')](_0x130dc6['model'],_0x130dc6[_0xffbb('0x33')]);_0x21e720['attributes']=_[_0xffbb('0x35')](_0x130dc6[_0xffbb('0x39')],qs[_0xffbb('0x37')](_0x35279d[_0xffbb('0x33')][_0xffbb('0x37')]));_0x21e720[_0xffbb('0x36')]=_0x21e720[_0xffbb('0x36')][_0xffbb('0x38')]?_0x21e720[_0xffbb('0x36')]:_0x130dc6[_0xffbb('0x39')];_0x21e720['order']=qs[_0xffbb('0x3d')](_0x35279d[_0xffbb('0x33')]['sort']);_0x21e720[_0xffbb('0x3e')]=qs[_0xffbb('0x3f')](_[_0xffbb('0x40')](_0x35279d['query'],_0x130dc6[_0xffbb('0x3f')]));if(_0x35279d[_0xffbb('0x33')]['filter']){_0x21e720[_0xffbb('0x3e')]=_[_0xffbb('0x42')](_0x21e720[_0xffbb('0x3e')],{'$or':_[_0xffbb('0x2d')](_0x21e720[_0xffbb('0x36')],function(_0x45aa2f){var _0x412770={};_0x412770[_0x45aa2f]={'$like':'%'+_0x35279d[_0xffbb('0x33')]['filter']+'%'};return _0x412770;})});}_0x21e720=_[_0xffbb('0x42')]({},_0x21e720,_0x35279d[_0xffbb('0x44')]);return _0x3eea61['getSubjects'](_0x21e720);}})[_0xffbb('0x26')](function(_0xd560f){if(_0xd560f){_0xbf1d2d=_0xd560f[_0xffbb('0x38')];if(!_0x35279d[_0xffbb('0x33')][_0xffbb('0x3a')](_0xffbb('0x3b'))){_0x21e720[_0xffbb('0x22')]=qs[_0xffbb('0x22')](_0x35279d[_0xffbb('0x33')][_0xffbb('0x22')]);_0x21e720[_0xffbb('0x21')]=qs[_0xffbb('0x21')](_0x35279d[_0xffbb('0x33')][_0xffbb('0x21')]);}return _0x3eea61[_0xffbb('0x4f')](_0x21e720);}})[_0xffbb('0x26')](function(_0x2b06b3){if(_0x2b06b3){return _0x2b06b3?{'count':_0xbf1d2d,'rows':_0x2b06b3}:null;}})[_0xffbb('0x26')](respondWithResult(_0x26d10a,null))[_0xffbb('0x4a')](handleError(_0x26d10a,null));};exports[_0xffbb('0x50')]=function(_0xfeaeff,_0x9575b0,_0x2fcaa6){var _0x1a7510={};var _0x31f335={};var _0x3664f4;var _0x40bb75;return db[_0xffbb('0x2e')][_0xffbb('0x51')]({'where':{'id':_0xfeaeff[_0xffbb('0x49')]['id']}})['then'](handleEntityNotFound(_0x9575b0,null))[_0xffbb('0x26')](function(_0x4b1d66){if(_0x4b1d66){_0x3664f4=_0x4b1d66;_0x31f335[_0xffbb('0x39')]=_['keys'](db[_0xffbb('0x4d')][_0xffbb('0x2f')]);_0x31f335['query']=_['keys'](_0xfeaeff['query']);_0x31f335[_0xffbb('0x3f')]=_[_0xffbb('0x35')](_0x31f335[_0xffbb('0x39')],_0x31f335[_0xffbb('0x33')]);_0x1a7510[_0xffbb('0x36')]=_[_0xffbb('0x35')](_0x31f335[_0xffbb('0x39')],qs[_0xffbb('0x37')](_0xfeaeff[_0xffbb('0x33')][_0xffbb('0x37')]));_0x1a7510[_0xffbb('0x36')]=_0x1a7510[_0xffbb('0x36')][_0xffbb('0x38')]?_0x1a7510[_0xffbb('0x36')]:_0x31f335[_0xffbb('0x39')];_0x1a7510[_0xffbb('0x3c')]=qs[_0xffbb('0x3d')](_0xfeaeff[_0xffbb('0x33')][_0xffbb('0x3d')]);_0x1a7510[_0xffbb('0x3e')]=qs[_0xffbb('0x3f')](_['pick'](_0xfeaeff[_0xffbb('0x33')],_0x31f335['filters']));if(_0xfeaeff[_0xffbb('0x33')][_0xffbb('0x41')]){_0x1a7510[_0xffbb('0x3e')]=_['merge'](_0x1a7510[_0xffbb('0x3e')],{'$or':_['map'](_0x1a7510[_0xffbb('0x36')],function(_0x196557){var _0x26a83b={};_0x26a83b[_0x196557]={'$like':'%'+_0xfeaeff['query'][_0xffbb('0x41')]+'%'};return _0x26a83b;})});}_0x1a7510=_[_0xffbb('0x42')]({},_0x1a7510,_0xfeaeff[_0xffbb('0x44')]);return _0x3664f4[_0xffbb('0x50')](_0x1a7510);}})[_0xffbb('0x26')](function(_0x58284a){if(_0x58284a){_0x40bb75=_0x58284a[_0xffbb('0x38')];if(!_0xfeaeff['query'][_0xffbb('0x3a')](_0xffbb('0x3b'))){_0x1a7510[_0xffbb('0x22')]=qs[_0xffbb('0x22')](_0xfeaeff['query'][_0xffbb('0x22')]);_0x1a7510['offset']=qs[_0xffbb('0x21')](_0xfeaeff[_0xffbb('0x33')][_0xffbb('0x21')]);}return _0x3664f4[_0xffbb('0x50')](_0x1a7510);}})[_0xffbb('0x26')](function(_0x50a6ea){if(_0x50a6ea){return _0x50a6ea?{'count':_0x40bb75,'rows':_0x50a6ea}:null;}})[_0xffbb('0x26')](respondWithResult(_0x9575b0,null))['catch'](handleError(_0x9575b0,null));};
\ No newline at end of file
+var _0xcfad=['name','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','rows','catch','merge','find','body','params','getFields','findOne','SugarcrmField','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','error','stack','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key'];(function(_0x614ef4,_0x28a060){var _0x35e8e2=function(_0x55e81b){while(--_0x55e81b){_0x614ef4['push'](_0x614ef4['shift']());}};_0x35e8e2(++_0x28a060);}(_0xcfad,0x103));var _0xdcfa=function(_0x416ac2,_0x9ec619){_0x416ac2=_0x416ac2-0x0;var _0x9272cf=_0xcfad[_0x416ac2];return _0x9272cf;};'use strict';var emlformat=require(_0xdcfa('0x0'));var rimraf=require(_0xdcfa('0x1'));var zipdir=require(_0xdcfa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdcfa('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdcfa('0x4'));var util=require(_0xdcfa('0x5'));var path=require('path');var sox=require(_0xdcfa('0x6'));var csv=require(_0xdcfa('0x7'));var ejs=require(_0xdcfa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdcfa('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdcfa('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xdcfa('0x7'));var querystring=require(_0xdcfa('0xb'));var Papa=require(_0xdcfa('0xc'));var Redis=require(_0xdcfa('0xd'));var authService=require(_0xdcfa('0xe'));var qs=require(_0xdcfa('0xf'));var as=require(_0xdcfa('0x10'));var hardwareService=require(_0xdcfa('0x11'));var logger=require(_0xdcfa('0x12'))(_0xdcfa('0x13'));var utils=require(_0xdcfa('0x14'));var config=require(_0xdcfa('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdcfa('0x16'))['db'];function respondWithStatusCode(_0x6a3171,_0x5573b1){_0x5573b1=_0x5573b1||0xcc;return function(_0x11b8c5){if(_0x11b8c5){return _0x6a3171['sendStatus'](_0x5573b1);}return _0x6a3171[_0xdcfa('0x17')](_0x5573b1)[_0xdcfa('0x18')]();};}function respondWithResult(_0x359d65,_0x2c76c0){_0x2c76c0=_0x2c76c0||0xc8;return function(_0x34179b){if(_0x34179b){return _0x359d65['status'](_0x2c76c0)[_0xdcfa('0x19')](_0x34179b);}};}function respondWithFilteredResult(_0x55bb14,_0x18f71e){return function(_0x5455ef){if(_0x5455ef){var _0xe6677f=typeof _0x18f71e[_0xdcfa('0x1a')]==='undefined'&&typeof _0x18f71e[_0xdcfa('0x1b')]===_0xdcfa('0x1c');var _0x265ba5=_0x5455ef[_0xdcfa('0x1d')];var _0x21f152=_0xe6677f?0x0:_0x18f71e[_0xdcfa('0x1a')];var _0x10580f=_0xe6677f?_0x5455ef[_0xdcfa('0x1d')]:_0x18f71e[_0xdcfa('0x1a')]+_0x18f71e[_0xdcfa('0x1b')];var _0x4604b9;if(_0x10580f>=_0x265ba5){_0x10580f=_0x265ba5;_0x4604b9=0xc8;}else{_0x4604b9=0xce;}_0x55bb14[_0xdcfa('0x17')](_0x4604b9);return _0x55bb14[_0xdcfa('0x1e')](_0xdcfa('0x1f'),_0x21f152+'-'+_0x10580f+'/'+_0x265ba5)['json'](_0x5455ef);}return null;};}function patchUpdates(_0x24209b){return function(_0x258ae6){try{jsonpatch['apply'](_0x258ae6,_0x24209b,!![]);}catch(_0x2f5627){return BPromise['reject'](_0x2f5627);}return _0x258ae6[_0xdcfa('0x20')]();};}function saveUpdates(_0x36390c,_0xda5602){return function(_0x3f05ae){if(_0x3f05ae){return _0x3f05ae[_0xdcfa('0x21')](_0x36390c)[_0xdcfa('0x22')](function(_0x42624b){return _0x42624b;});}return null;};}function removeEntity(_0x4caa2d,_0x2cd2cd){return function(_0x2b7bf2){if(_0x2b7bf2){return _0x2b7bf2[_0xdcfa('0x23')]()[_0xdcfa('0x22')](function(){_0x4caa2d[_0xdcfa('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53cc2b,_0x2394ad){return function(_0xf4674d){if(!_0xf4674d){_0x53cc2b['sendStatus'](0x194);}return _0xf4674d;};}function handleError(_0x2ffcc9,_0x12202c){_0x12202c=_0x12202c||0x1f4;return function(_0x2334b2){logger[_0xdcfa('0x24')](_0x2334b2[_0xdcfa('0x25')]);if(_0x2334b2['name']){delete _0x2334b2['name'];}_0x2ffcc9[_0xdcfa('0x17')](_0x12202c)['send'](_0x2334b2);};}exports[_0xdcfa('0x26')]=function(_0x4f56be,_0x31ba42){var _0x2a6f1d={},_0x42528e={},_0x26c66b={'count':0x0,'rows':[]};var _0x590554=_[_0xdcfa('0x27')](db[_0xdcfa('0x28')][_0xdcfa('0x29')],function(_0x1ecd54){return{'name':_0x1ecd54[_0xdcfa('0x2a')],'type':_0x1ecd54[_0xdcfa('0x2b')][_0xdcfa('0x2c')]};});_0x42528e['model']=_[_0xdcfa('0x27')](_0x590554,_0xdcfa('0x2d'));_0x42528e[_0xdcfa('0x2e')]=_[_0xdcfa('0x2f')](_0x4f56be['query']);_0x42528e[_0xdcfa('0x30')]=_[_0xdcfa('0x31')](_0x42528e[_0xdcfa('0x32')],_0x42528e['query']);_0x2a6f1d['attributes']=_[_0xdcfa('0x31')](_0x42528e[_0xdcfa('0x32')],qs[_0xdcfa('0x33')](_0x4f56be[_0xdcfa('0x2e')][_0xdcfa('0x33')]));_0x2a6f1d[_0xdcfa('0x34')]=_0x2a6f1d[_0xdcfa('0x34')][_0xdcfa('0x35')]?_0x2a6f1d[_0xdcfa('0x34')]:_0x42528e[_0xdcfa('0x32')];if(!_0x4f56be[_0xdcfa('0x2e')]['hasOwnProperty'](_0xdcfa('0x36'))){_0x2a6f1d[_0xdcfa('0x1b')]=qs[_0xdcfa('0x1b')](_0x4f56be[_0xdcfa('0x2e')][_0xdcfa('0x1b')]);_0x2a6f1d['offset']=qs[_0xdcfa('0x1a')](_0x4f56be[_0xdcfa('0x2e')][_0xdcfa('0x1a')]);}_0x2a6f1d[_0xdcfa('0x37')]=qs[_0xdcfa('0x38')](_0x4f56be[_0xdcfa('0x2e')][_0xdcfa('0x38')]);_0x2a6f1d[_0xdcfa('0x39')]=qs[_0xdcfa('0x30')](_[_0xdcfa('0x3a')](_0x4f56be[_0xdcfa('0x2e')],_0x42528e[_0xdcfa('0x30')]),_0x590554);if(_0x4f56be['query'][_0xdcfa('0x3b')]){_0x2a6f1d[_0xdcfa('0x39')]=_['merge'](_0x2a6f1d[_0xdcfa('0x39')],{'$or':_['map'](_0x590554,function(_0x4bdf9f){if(_0x4bdf9f['type']!==_0xdcfa('0x3c')){var _0x2ca5d2={};_0x2ca5d2[_0x4bdf9f['name']]={'$like':'%'+_0x4f56be[_0xdcfa('0x2e')][_0xdcfa('0x3b')]+'%'};return _0x2ca5d2;}})});}_0x2a6f1d=_['merge']({},_0x2a6f1d,_0x4f56be[_0xdcfa('0x3d')]);var _0x134a2d={'where':_0x2a6f1d[_0xdcfa('0x39')]};return db['SugarcrmConfiguration'][_0xdcfa('0x1d')](_0x134a2d)[_0xdcfa('0x22')](function(_0x729b4f){_0x26c66b[_0xdcfa('0x1d')]=_0x729b4f;if(_0x4f56be['query'][_0xdcfa('0x3e')]){_0x2a6f1d[_0xdcfa('0x3f')]=[{'all':!![]}];}return db['SugarcrmConfiguration']['findAll'](_0x2a6f1d);})[_0xdcfa('0x22')](function(_0x3c9ac7){_0x26c66b[_0xdcfa('0x40')]=_0x3c9ac7;return _0x26c66b;})['then'](respondWithFilteredResult(_0x31ba42,_0x2a6f1d))[_0xdcfa('0x41')](handleError(_0x31ba42,null));};exports['show']=function(_0x17b66a,_0x1ad7d3){var _0x48fe79={'raw':![],'where':{'id':_0x17b66a['params']['id']}},_0x434594={};_0x434594[_0xdcfa('0x32')]=_[_0xdcfa('0x2f')](db[_0xdcfa('0x28')][_0xdcfa('0x29')]);_0x434594[_0xdcfa('0x2e')]=_[_0xdcfa('0x2f')](_0x17b66a[_0xdcfa('0x2e')]);_0x434594[_0xdcfa('0x30')]=_[_0xdcfa('0x31')](_0x434594['model'],_0x434594['query']);_0x48fe79['attributes']=_[_0xdcfa('0x31')](_0x434594[_0xdcfa('0x32')],qs[_0xdcfa('0x33')](_0x17b66a[_0xdcfa('0x2e')]['fields']));_0x48fe79[_0xdcfa('0x34')]=_0x48fe79[_0xdcfa('0x34')][_0xdcfa('0x35')]?_0x48fe79[_0xdcfa('0x34')]:_0x434594[_0xdcfa('0x32')];if(_0x17b66a[_0xdcfa('0x2e')][_0xdcfa('0x3e')]){_0x48fe79[_0xdcfa('0x3f')]=[{'all':!![]}];}_0x48fe79=_[_0xdcfa('0x42')]({},_0x48fe79,_0x17b66a[_0xdcfa('0x3d')]);return db[_0xdcfa('0x28')][_0xdcfa('0x43')](_0x48fe79)[_0xdcfa('0x22')](handleEntityNotFound(_0x1ad7d3,null))['then'](respondWithResult(_0x1ad7d3,null))[_0xdcfa('0x41')](handleError(_0x1ad7d3,null));};exports['create']=function(_0x1f8615,_0x5ebdc3){return db[_0xdcfa('0x28')]['create'](_0x1f8615[_0xdcfa('0x44')],{})[_0xdcfa('0x22')](respondWithResult(_0x5ebdc3,0xc9))[_0xdcfa('0x41')](handleError(_0x5ebdc3,null));};exports['update']=function(_0xc3f624,_0x3a5f3b){if(_0xc3f624['body']['id']){delete _0xc3f624['body']['id'];}return db[_0xdcfa('0x28')][_0xdcfa('0x43')]({'where':{'id':_0xc3f624[_0xdcfa('0x45')]['id']}})[_0xdcfa('0x22')](handleEntityNotFound(_0x3a5f3b,null))[_0xdcfa('0x22')](saveUpdates(_0xc3f624[_0xdcfa('0x44')],null))[_0xdcfa('0x22')](respondWithResult(_0x3a5f3b,null))[_0xdcfa('0x41')](handleError(_0x3a5f3b,null));};exports[_0xdcfa('0x23')]=function(_0x141dd7,_0x50da13){return db[_0xdcfa('0x28')][_0xdcfa('0x43')]({'where':{'id':_0x141dd7[_0xdcfa('0x45')]['id']}})[_0xdcfa('0x22')](handleEntityNotFound(_0x50da13,null))[_0xdcfa('0x22')](removeEntity(_0x50da13,null))[_0xdcfa('0x41')](handleError(_0x50da13,null));};exports[_0xdcfa('0x46')]=function(_0x538bfb,_0x38e256,_0x11925f){var _0x345e5a={};var _0x4ec46d={};var _0x58691b;var _0x4ccf1e;return db[_0xdcfa('0x28')][_0xdcfa('0x47')]({'where':{'id':_0x538bfb[_0xdcfa('0x45')]['id']}})[_0xdcfa('0x22')](handleEntityNotFound(_0x38e256,null))[_0xdcfa('0x22')](function(_0x56b4f5){if(_0x56b4f5){_0x58691b=_0x56b4f5;_0x4ec46d[_0xdcfa('0x32')]=_[_0xdcfa('0x2f')](db[_0xdcfa('0x48')][_0xdcfa('0x29')]);_0x4ec46d['query']=_['keys'](_0x538bfb[_0xdcfa('0x2e')]);_0x4ec46d[_0xdcfa('0x30')]=_[_0xdcfa('0x31')](_0x4ec46d['model'],_0x4ec46d[_0xdcfa('0x2e')]);_0x345e5a[_0xdcfa('0x34')]=_[_0xdcfa('0x31')](_0x4ec46d[_0xdcfa('0x32')],qs[_0xdcfa('0x33')](_0x538bfb[_0xdcfa('0x2e')][_0xdcfa('0x33')]));_0x345e5a[_0xdcfa('0x34')]=_0x345e5a[_0xdcfa('0x34')][_0xdcfa('0x35')]?_0x345e5a[_0xdcfa('0x34')]:_0x4ec46d[_0xdcfa('0x32')];_0x345e5a['order']=qs[_0xdcfa('0x38')](_0x538bfb[_0xdcfa('0x2e')][_0xdcfa('0x38')]);_0x345e5a['where']=qs[_0xdcfa('0x30')](_['pick'](_0x538bfb[_0xdcfa('0x2e')],_0x4ec46d[_0xdcfa('0x30')]));if(_0x538bfb['query']['filter']){_0x345e5a[_0xdcfa('0x39')]=_[_0xdcfa('0x42')](_0x345e5a[_0xdcfa('0x39')],{'$or':_[_0xdcfa('0x27')](_0x345e5a[_0xdcfa('0x34')],function(_0x128719){var _0x5e40f5={};_0x5e40f5[_0x128719]={'$like':'%'+_0x538bfb[_0xdcfa('0x2e')][_0xdcfa('0x3b')]+'%'};return _0x5e40f5;})});}_0x345e5a=_[_0xdcfa('0x42')]({},_0x345e5a,_0x538bfb[_0xdcfa('0x3d')]);return _0x58691b[_0xdcfa('0x46')](_0x345e5a);}})['then'](function(_0x44b3b4){if(_0x44b3b4){_0x4ccf1e=_0x44b3b4[_0xdcfa('0x35')];if(!_0x538bfb[_0xdcfa('0x2e')][_0xdcfa('0x49')](_0xdcfa('0x36'))){_0x345e5a['limit']=qs[_0xdcfa('0x1b')](_0x538bfb[_0xdcfa('0x2e')][_0xdcfa('0x1b')]);_0x345e5a['offset']=qs[_0xdcfa('0x1a')](_0x538bfb['query'][_0xdcfa('0x1a')]);}return _0x58691b['getFields'](_0x345e5a);}})[_0xdcfa('0x22')](function(_0x1f25f0){if(_0x1f25f0){return _0x1f25f0?{'count':_0x4ccf1e,'rows':_0x1f25f0}:null;}})[_0xdcfa('0x22')](respondWithResult(_0x38e256,null))[_0xdcfa('0x41')](handleError(_0x38e256,null));};exports[_0xdcfa('0x4a')]=function(_0x56d598,_0x369b67,_0x3b7843){var _0x30523d={};var _0x4567b1={};var _0xc18ae5;var _0x55a9dd;return db[_0xdcfa('0x28')][_0xdcfa('0x47')]({'where':{'id':_0x56d598[_0xdcfa('0x45')]['id']}})[_0xdcfa('0x22')](handleEntityNotFound(_0x369b67,null))['then'](function(_0x14db35){if(_0x14db35){_0xc18ae5=_0x14db35;_0x4567b1[_0xdcfa('0x32')]=_[_0xdcfa('0x2f')](db[_0xdcfa('0x48')][_0xdcfa('0x29')]);_0x4567b1[_0xdcfa('0x2e')]=_[_0xdcfa('0x2f')](_0x56d598[_0xdcfa('0x2e')]);_0x4567b1['filters']=_['intersection'](_0x4567b1[_0xdcfa('0x32')],_0x4567b1['query']);_0x30523d[_0xdcfa('0x34')]=_[_0xdcfa('0x31')](_0x4567b1['model'],qs[_0xdcfa('0x33')](_0x56d598[_0xdcfa('0x2e')][_0xdcfa('0x33')]));_0x30523d[_0xdcfa('0x34')]=_0x30523d[_0xdcfa('0x34')][_0xdcfa('0x35')]?_0x30523d['attributes']:_0x4567b1[_0xdcfa('0x32')];_0x30523d[_0xdcfa('0x37')]=qs[_0xdcfa('0x38')](_0x56d598['query']['sort']);_0x30523d[_0xdcfa('0x39')]=qs[_0xdcfa('0x30')](_[_0xdcfa('0x3a')](_0x56d598[_0xdcfa('0x2e')],_0x4567b1[_0xdcfa('0x30')]));if(_0x56d598['query'][_0xdcfa('0x3b')]){_0x30523d[_0xdcfa('0x39')]=_[_0xdcfa('0x42')](_0x30523d[_0xdcfa('0x39')],{'$or':_[_0xdcfa('0x27')](_0x30523d[_0xdcfa('0x34')],function(_0x3c34c4){var _0x5d1cef={};_0x5d1cef[_0x3c34c4]={'$like':'%'+_0x56d598[_0xdcfa('0x2e')]['filter']+'%'};return _0x5d1cef;})});}_0x30523d=_['merge']({},_0x30523d,_0x56d598['options']);return _0xc18ae5['getSubjects'](_0x30523d);}})[_0xdcfa('0x22')](function(_0x5c0fb4){if(_0x5c0fb4){_0x55a9dd=_0x5c0fb4[_0xdcfa('0x35')];if(!_0x56d598[_0xdcfa('0x2e')][_0xdcfa('0x49')]('nolimit')){_0x30523d[_0xdcfa('0x1b')]=qs[_0xdcfa('0x1b')](_0x56d598[_0xdcfa('0x2e')][_0xdcfa('0x1b')]);_0x30523d[_0xdcfa('0x1a')]=qs[_0xdcfa('0x1a')](_0x56d598[_0xdcfa('0x2e')][_0xdcfa('0x1a')]);}return _0xc18ae5[_0xdcfa('0x4a')](_0x30523d);}})[_0xdcfa('0x22')](function(_0x684379){if(_0x684379){return _0x684379?{'count':_0x55a9dd,'rows':_0x684379}:null;}})[_0xdcfa('0x22')](respondWithResult(_0x369b67,null))[_0xdcfa('0x41')](handleError(_0x369b67,null));};exports[_0xdcfa('0x4b')]=function(_0x3b653d,_0x2dd96d,_0x1d488f){var _0x376ee8={};var _0x2b89ba={};var _0x4a8c34;var _0x5b9875;return db[_0xdcfa('0x28')][_0xdcfa('0x47')]({'where':{'id':_0x3b653d[_0xdcfa('0x45')]['id']}})['then'](handleEntityNotFound(_0x2dd96d,null))['then'](function(_0x5d3874){if(_0x5d3874){_0x4a8c34=_0x5d3874;_0x2b89ba[_0xdcfa('0x32')]=_[_0xdcfa('0x2f')](db[_0xdcfa('0x48')][_0xdcfa('0x29')]);_0x2b89ba[_0xdcfa('0x2e')]=_['keys'](_0x3b653d[_0xdcfa('0x2e')]);_0x2b89ba[_0xdcfa('0x30')]=_[_0xdcfa('0x31')](_0x2b89ba['model'],_0x2b89ba[_0xdcfa('0x2e')]);_0x376ee8[_0xdcfa('0x34')]=_[_0xdcfa('0x31')](_0x2b89ba[_0xdcfa('0x32')],qs[_0xdcfa('0x33')](_0x3b653d['query']['fields']));_0x376ee8[_0xdcfa('0x34')]=_0x376ee8[_0xdcfa('0x34')][_0xdcfa('0x35')]?_0x376ee8[_0xdcfa('0x34')]:_0x2b89ba[_0xdcfa('0x32')];_0x376ee8[_0xdcfa('0x37')]=qs[_0xdcfa('0x38')](_0x3b653d['query']['sort']);_0x376ee8[_0xdcfa('0x39')]=qs[_0xdcfa('0x30')](_[_0xdcfa('0x3a')](_0x3b653d['query'],_0x2b89ba[_0xdcfa('0x30')]));if(_0x3b653d['query'][_0xdcfa('0x3b')]){_0x376ee8[_0xdcfa('0x39')]=_['merge'](_0x376ee8[_0xdcfa('0x39')],{'$or':_[_0xdcfa('0x27')](_0x376ee8[_0xdcfa('0x34')],function(_0x4229e3){var _0x22caa3={};_0x22caa3[_0x4229e3]={'$like':'%'+_0x3b653d[_0xdcfa('0x2e')]['filter']+'%'};return _0x22caa3;})});}_0x376ee8=_[_0xdcfa('0x42')]({},_0x376ee8,_0x3b653d[_0xdcfa('0x3d')]);return _0x4a8c34['getDescriptions'](_0x376ee8);}})[_0xdcfa('0x22')](function(_0x51b105){if(_0x51b105){_0x5b9875=_0x51b105[_0xdcfa('0x35')];if(!_0x3b653d[_0xdcfa('0x2e')]['hasOwnProperty'](_0xdcfa('0x36'))){_0x376ee8[_0xdcfa('0x1b')]=qs[_0xdcfa('0x1b')](_0x3b653d[_0xdcfa('0x2e')][_0xdcfa('0x1b')]);_0x376ee8['offset']=qs['offset'](_0x3b653d['query']['offset']);}return _0x4a8c34[_0xdcfa('0x4b')](_0x376ee8);}})[_0xdcfa('0x22')](function(_0x3cd952){if(_0x3cd952){return _0x3cd952?{'count':_0x5b9875,'rows':_0x3cd952}:null;}})[_0xdcfa('0x22')](respondWithResult(_0x2dd96d,null))[_0xdcfa('0x41')](handleError(_0x2dd96d,null));};
\ No newline at end of file
index c926e8a..76584cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b2=['int_sugarcrm_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','SugarcrmConfiguration'];(function(_0x1f5d7c,_0x38ba1e){var _0x4d2970=function(_0x4cf453){while(--_0x4cf453){_0x1f5d7c['push'](_0x1f5d7c['shift']());}};_0x4d2970(++_0x38ba1e);}(_0x29b2,0x140));var _0x229b=function(_0x34ba29,_0x4d7718){_0x34ba29=_0x34ba29-0x0;var _0x3b2d02=_0x29b2[_0x34ba29];return _0x3b2d02;};'use strict';var _=require('lodash');var util=require(_0x229b('0x0'));var logger=require(_0x229b('0x1'))(_0x229b('0x2'));var moment=require(_0x229b('0x3'));var BPromise=require(_0x229b('0x4'));var rp=require(_0x229b('0x5'));var fs=require('fs');var path=require(_0x229b('0x6'));var rimraf=require('rimraf');var config=require(_0x229b('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module['exports']=function(_0x1fbabc,_0x695d24){return _0x1fbabc[_0x229b('0x8')](_0x229b('0x9'),attributes,{'tableName':_0x229b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa036=['request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','util','api','moment'];(function(_0x44b913,_0x567c84){var _0x1678c0=function(_0x3e49ff){while(--_0x3e49ff){_0x44b913['push'](_0x44b913['shift']());}};_0x1678c0(++_0x567c84);}(_0xa036,0x10b));var _0x6a03=function(_0x154dbd,_0x8fd445){_0x154dbd=_0x154dbd-0x0;var _0x5eac3f=_0xa036[_0x154dbd];return _0x5eac3f;};'use strict';var _=require('lodash');var util=require(_0x6a03('0x0'));var logger=require('../../config/logger')(_0x6a03('0x1'));var moment=require(_0x6a03('0x2'));var BPromise=require('bluebird');var rp=require(_0x6a03('0x3'));var fs=require('fs');var path=require(_0x6a03('0x4'));var rimraf=require(_0x6a03('0x5'));var config=require('../../config/environment');var attributes=require(_0x6a03('0x6'));module[_0x6a03('0x7')]=function(_0x2444a8,_0x458f8e){return _0x2444a8['define'](_0x6a03('0x8'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 084132c..f6bc78f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f5=['then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x52b0fc,_0x44be2c){var _0x415fb1=function(_0x33402c){while(--_0x33402c){_0x52b0fc['push'](_0x52b0fc['shift']());}};_0x415fb1(++_0x44be2c);}(_0x19f5,0x14a));var _0x519f=function(_0x58366f,_0x3f03b9){_0x58366f=_0x58366f-0x0;var _0x49a2b3=_0x19f5[_0x58366f];return _0x49a2b3;};'use strict';var _=require(_0x519f('0x0'));var util=require(_0x519f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x519f('0x2'));var fs=require('fs');var Redis=require(_0x519f('0x3'));var db=require(_0x519f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x519f('0x5'))('rpc');var config=require(_0x519f('0x6'));var jayson=require(_0x519f('0x7'));var client=jayson[_0x519f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d6b4a,_0x5bed9e,_0x4d4d80){return new BPromise(function(_0x34d680,_0x4ab5b6){return client[_0x519f('0x9')](_0x4d6b4a,_0x4d4d80)[_0x519f('0xa')](function(_0x1834c7){logger[_0x519f('0xb')](_0x519f('0xc'),_0x5bed9e,_0x519f('0xd'));logger['debug'](_0x519f('0xe'),_0x5bed9e,_0x519f('0xd'),JSON[_0x519f('0xf')](_0x1834c7));if(_0x1834c7[_0x519f('0x10')]){if(_0x1834c7[_0x519f('0x10')]['code']===0x1f4){logger[_0x519f('0x10')](_0x519f('0xc'),_0x5bed9e,_0x1834c7[_0x519f('0x10')][_0x519f('0x11')]);return _0x4ab5b6(_0x1834c7[_0x519f('0x10')]['message']);}logger['error'](_0x519f('0xc'),_0x5bed9e,_0x1834c7['error'][_0x519f('0x11')]);return _0x34d680(_0x1834c7[_0x519f('0x10')][_0x519f('0x11')]);}else{logger[_0x519f('0xb')](_0x519f('0xc'),_0x5bed9e,_0x519f('0xd'));_0x34d680(_0x1834c7[_0x519f('0x12')][_0x519f('0x11')]);}})[_0x519f('0x13')](function(_0x1c8ad0){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5bed9e,_0x1c8ad0);_0x4ab5b6(_0x1c8ad0);});});}
\ No newline at end of file
+var _0xffb9=['rpc','../../config/environment','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x503050,_0x2ec99a){var _0x2099c8=function(_0x4517f0){while(--_0x4517f0){_0x503050['push'](_0x503050['shift']());}};_0x2099c8(++_0x2ec99a);}(_0xffb9,0x10a));var _0x9ffb=function(_0x2ea53c,_0x1a4fc4){_0x2ea53c=_0x2ea53c-0x0;var _0x104c71=_0xffb9[_0x2ea53c];return _0x104c71;};'use strict';var _=require('lodash');var util=require(_0x9ffb('0x0'));var moment=require(_0x9ffb('0x1'));var BPromise=require(_0x9ffb('0x2'));var rs=require(_0x9ffb('0x3'));var fs=require('fs');var Redis=require(_0x9ffb('0x4'));var db=require(_0x9ffb('0x5'))['db'];var utils=require(_0x9ffb('0x6'));var logger=require('../../config/logger')(_0x9ffb('0x7'));var config=require(_0x9ffb('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9ffb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27c0a6,_0x2d8e23,_0x440442){return new BPromise(function(_0x3c4b3d,_0x2effad){return client[_0x9ffb('0xa')](_0x27c0a6,_0x440442)[_0x9ffb('0xb')](function(_0x44fe9e){logger[_0x9ffb('0xc')](_0x9ffb('0xd'),_0x2d8e23,_0x9ffb('0xe'));logger[_0x9ffb('0xf')](_0x9ffb('0x10'),_0x2d8e23,'request\x20sent',JSON['stringify'](_0x44fe9e));if(_0x44fe9e[_0x9ffb('0x11')]){if(_0x44fe9e['error'][_0x9ffb('0x12')]===0x1f4){logger[_0x9ffb('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x2d8e23,_0x44fe9e[_0x9ffb('0x11')]['message']);return _0x2effad(_0x44fe9e[_0x9ffb('0x11')][_0x9ffb('0x13')]);}logger[_0x9ffb('0x11')](_0x9ffb('0xd'),_0x2d8e23,_0x44fe9e[_0x9ffb('0x11')][_0x9ffb('0x13')]);return _0x3c4b3d(_0x44fe9e[_0x9ffb('0x11')]['message']);}else{logger[_0x9ffb('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x2d8e23,_0x9ffb('0xe'));_0x3c4b3d(_0x44fe9e['result'][_0x9ffb('0x13')]);}})[_0x9ffb('0x14')](function(_0x428fb4){logger['error'](_0x9ffb('0xd'),_0x2d8e23,_0x428fb4);_0x2effad(_0x428fb4);});});}
\ No newline at end of file
index 26a4266..4fd138f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d4=['./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','post','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x59d9fd,_0x5309f1){var _0x46e623=function(_0x3ab229){while(--_0x3ab229){_0x59d9fd['push'](_0x59d9fd['shift']());}};_0x46e623(++_0x5309f1);}(_0x00d4,0x19b));var _0x400d=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x00d4[_0x599f41];return _0x2e4d58;};'use strict';var multer=require(_0x400d('0x0'));var util=require('util');var path=require(_0x400d('0x1'));var timeout=require(_0x400d('0x2'));var express=require(_0x400d('0x3'));var router=express[_0x400d('0x4')]();var fs_extra=require(_0x400d('0x5'));var auth=require(_0x400d('0x6'));var interaction=require(_0x400d('0x7'));var config=require(_0x400d('0x8'));var controller=require(_0x400d('0x9'));router[_0x400d('0xa')]('/',auth[_0x400d('0xb')](),controller[_0x400d('0xc')]);router[_0x400d('0xa')](_0x400d('0xd'),auth[_0x400d('0xb')](),controller[_0x400d('0xe')]);router[_0x400d('0xf')]('/',auth[_0x400d('0xb')](),controller['create']);router[_0x400d('0x10')](_0x400d('0xd'),auth[_0x400d('0xb')](),controller['update']);router[_0x400d('0x11')](_0x400d('0xd'),auth[_0x400d('0xb')](),controller[_0x400d('0x12')]);module[_0x400d('0x13')]=router;
\ No newline at end of file
+var _0x61c5=['isAuthenticated','create','put','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','show'];(function(_0x54b062,_0x264bb5){var _0x255e41=function(_0x3c7e6f){while(--_0x3c7e6f){_0x54b062['push'](_0x54b062['shift']());}};_0x255e41(++_0x264bb5);}(_0x61c5,0x19e));var _0x561c=function(_0x1e3fa7,_0x4ca156){_0x1e3fa7=_0x1e3fa7-0x0;var _0x559ef8=_0x61c5[_0x1e3fa7];return _0x559ef8;};'use strict';var multer=require(_0x561c('0x0'));var util=require(_0x561c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x561c('0x2'));var router=express[_0x561c('0x3')]();var fs_extra=require(_0x561c('0x4'));var auth=require(_0x561c('0x5'));var interaction=require(_0x561c('0x6'));var config=require('../../config/environment');var controller=require('./intSugarcrmField.controller');router[_0x561c('0x7')]('/',auth['isAuthenticated'](),controller[_0x561c('0x8')]);router[_0x561c('0x7')](_0x561c('0x9'),auth['isAuthenticated'](),controller[_0x561c('0xa')]);router['post']('/',auth[_0x561c('0xb')](),controller[_0x561c('0xc')]);router[_0x561c('0xd')](_0x561c('0x9'),auth[_0x561c('0xb')](),controller[_0x561c('0xe')]);router[_0x561c('0xf')](_0x561c('0x9'),auth[_0x561c('0xb')](),controller['destroy']);module[_0x561c('0x10')]=router;
\ No newline at end of file
index 9cec018..06c5749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87e4=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x87e4,0xf3));var _0x487e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x87e4[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require(_0x487e('0x0'));module[_0x487e('0x1')]={'type':{'type':Sequelize[_0x487e('0x2')](_0x487e('0x3'),_0x487e('0x4'),_0x487e('0x5'),_0x487e('0x6'),_0x487e('0x7')),'defaultValue':_0x487e('0x3')},'content':{'type':Sequelize[_0x487e('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x487e('0x3'),'variable',_0x487e('0x5'))},'keyContent':{'type':Sequelize[_0x487e('0x8')]},'idField':{'type':Sequelize[_0x487e('0x8')]},'nameField':{'type':Sequelize[_0x487e('0x8')]},'customField':{'type':Sequelize[_0x487e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x487e('0x8')]}};
\ No newline at end of file
+var _0x5ecc=['picklist','STRING','ENUM','BOOLEAN','exports','string','customVariable','keyValue'];(function(_0x1a6fa1,_0x9a95ee){var _0x2b469e=function(_0x29825f){while(--_0x29825f){_0x1a6fa1['push'](_0x1a6fa1['shift']());}};_0x2b469e(++_0x9a95ee);}(_0x5ecc,0x134));var _0xc5ec=function(_0x143183,_0x1a251f){_0x143183=_0x143183-0x0;var _0x35cfaf=_0x5ecc[_0x143183];return _0x35cfaf;};'use strict';var Sequelize=require('sequelize');module[_0xc5ec('0x0')]={'type':{'type':Sequelize['ENUM'](_0xc5ec('0x1'),'variable',_0xc5ec('0x2'),_0xc5ec('0x3'),_0xc5ec('0x4')),'defaultValue':_0xc5ec('0x1')},'content':{'type':Sequelize[_0xc5ec('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xc5ec('0x6')](_0xc5ec('0x1'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xc5ec('0x5')]},'idField':{'type':Sequelize[_0xc5ec('0x5')]},'nameField':{'type':Sequelize[_0xc5ec('0x5')]},'customField':{'type':Sequelize[_0xc5ec('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc5ec('0x5')]}};
\ No newline at end of file
index 60d7c79..feeb06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc023=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','error','stack','name','send','map','SugarcrmField','rawAttributes','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','intersection','options','find','body','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x388b47,_0x5cdac5){var _0x4859df=function(_0x466a16){while(--_0x466a16){_0x388b47['push'](_0x388b47['shift']());}};_0x4859df(++_0x5cdac5);}(_0xc023,0x7c));var _0x3c02=function(_0xabd0bc,_0x203b56){_0xabd0bc=_0xabd0bc-0x0;var _0xdbde42=_0xc023[_0xabd0bc];return _0xdbde42;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c02('0x0'));var zipdir=require(_0x3c02('0x1'));var jsonpatch=require(_0x3c02('0x2'));var rp=require('request-promise');var moment=require(_0x3c02('0x3'));var BPromise=require(_0x3c02('0x4'));var Mustache=require(_0x3c02('0x5'));var util=require('util');var path=require('path');var sox=require(_0x3c02('0x6'));var csv=require(_0x3c02('0x7'));var ejs=require(_0x3c02('0x8'));var fs=require('fs');var fs_extra=require(_0x3c02('0x9'));var _=require('lodash');var squel=require(_0x3c02('0xa'));var crypto=require(_0x3c02('0xb'));var jsforce=require(_0x3c02('0xc'));var deskjs=require(_0x3c02('0xd'));var toCsv=require(_0x3c02('0x7'));var querystring=require(_0x3c02('0xe'));var Papa=require(_0x3c02('0xf'));var Redis=require(_0x3c02('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3c02('0x11'));var as=require(_0x3c02('0x12'));var hardwareService=require(_0x3c02('0x13'));var logger=require(_0x3c02('0x14'))(_0x3c02('0x15'));var utils=require(_0x3c02('0x16'));var config=require(_0x3c02('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3c02('0x18'))['db'];function respondWithStatusCode(_0x2b33e9,_0x443519){_0x443519=_0x443519||0xcc;return function(_0x4c23dd){if(_0x4c23dd){return _0x2b33e9[_0x3c02('0x19')](_0x443519);}return _0x2b33e9[_0x3c02('0x1a')](_0x443519)[_0x3c02('0x1b')]();};}function respondWithResult(_0x385679,_0x59f0f4){_0x59f0f4=_0x59f0f4||0xc8;return function(_0x3bc768){if(_0x3bc768){return _0x385679[_0x3c02('0x1a')](_0x59f0f4)['json'](_0x3bc768);}};}function respondWithFilteredResult(_0x5e1a66,_0x46ee7d){return function(_0x347c90){if(_0x347c90){var _0x5940bf=typeof _0x46ee7d[_0x3c02('0x1c')]===_0x3c02('0x1d')&&typeof _0x46ee7d[_0x3c02('0x1e')]===_0x3c02('0x1d');var _0x396c9b=_0x347c90['count'];var _0x471435=_0x5940bf?0x0:_0x46ee7d[_0x3c02('0x1c')];var _0x5c1296=_0x5940bf?_0x347c90[_0x3c02('0x1f')]:_0x46ee7d[_0x3c02('0x1c')]+_0x46ee7d[_0x3c02('0x1e')];var _0x48c326;if(_0x5c1296>=_0x396c9b){_0x5c1296=_0x396c9b;_0x48c326=0xc8;}else{_0x48c326=0xce;}_0x5e1a66[_0x3c02('0x1a')](_0x48c326);return _0x5e1a66[_0x3c02('0x20')](_0x3c02('0x21'),_0x471435+'-'+_0x5c1296+'/'+_0x396c9b)[_0x3c02('0x22')](_0x347c90);}return null;};}function patchUpdates(_0x20d024){return function(_0x20551b){try{jsonpatch['apply'](_0x20551b,_0x20d024,!![]);}catch(_0x1f881b){return BPromise[_0x3c02('0x23')](_0x1f881b);}return _0x20551b['save']();};}function saveUpdates(_0x5624ce,_0x30f5fc){return function(_0x5ccbe2){if(_0x5ccbe2){return _0x5ccbe2[_0x3c02('0x24')](_0x5624ce)[_0x3c02('0x25')](function(_0x315563){return _0x315563;});}return null;};}function removeEntity(_0x53d6a0,_0x332773){return function(_0x1c57a4){if(_0x1c57a4){return _0x1c57a4[_0x3c02('0x26')]()[_0x3c02('0x25')](function(){_0x53d6a0[_0x3c02('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d6eb3,_0x2c26f4){return function(_0x575500){if(!_0x575500){_0x1d6eb3[_0x3c02('0x19')](0x194);}return _0x575500;};}function handleError(_0x5abbe0,_0x5d7f26){_0x5d7f26=_0x5d7f26||0x1f4;return function(_0x221e0b){logger[_0x3c02('0x27')](_0x221e0b[_0x3c02('0x28')]);if(_0x221e0b[_0x3c02('0x29')]){delete _0x221e0b[_0x3c02('0x29')];}_0x5abbe0[_0x3c02('0x1a')](_0x5d7f26)[_0x3c02('0x2a')](_0x221e0b);};}exports['index']=function(_0x9ab4fe,_0x24d1b1){var _0x5c1e35={},_0x2aa6c4={},_0xebef4b={'count':0x0,'rows':[]};var _0x51f593=_[_0x3c02('0x2b')](db[_0x3c02('0x2c')][_0x3c02('0x2d')],function(_0x333926){return{'name':_0x333926['fieldName'],'type':_0x333926[_0x3c02('0x2e')][_0x3c02('0x2f')]};});_0x2aa6c4['model']=_[_0x3c02('0x2b')](_0x51f593,'name');_0x2aa6c4[_0x3c02('0x30')]=_[_0x3c02('0x31')](_0x9ab4fe[_0x3c02('0x30')]);_0x2aa6c4[_0x3c02('0x32')]=_['intersection'](_0x2aa6c4[_0x3c02('0x33')],_0x2aa6c4[_0x3c02('0x30')]);_0x5c1e35[_0x3c02('0x34')]=_['intersection'](_0x2aa6c4[_0x3c02('0x33')],qs[_0x3c02('0x35')](_0x9ab4fe['query'][_0x3c02('0x35')]));_0x5c1e35[_0x3c02('0x34')]=_0x5c1e35[_0x3c02('0x34')][_0x3c02('0x36')]?_0x5c1e35['attributes']:_0x2aa6c4[_0x3c02('0x33')];if(!_0x9ab4fe['query'][_0x3c02('0x37')](_0x3c02('0x38'))){_0x5c1e35['limit']=qs[_0x3c02('0x1e')](_0x9ab4fe['query'][_0x3c02('0x1e')]);_0x5c1e35[_0x3c02('0x1c')]=qs['offset'](_0x9ab4fe[_0x3c02('0x30')][_0x3c02('0x1c')]);}_0x5c1e35[_0x3c02('0x39')]=qs[_0x3c02('0x3a')](_0x9ab4fe[_0x3c02('0x30')][_0x3c02('0x3a')]);_0x5c1e35[_0x3c02('0x3b')]=qs['filters'](_[_0x3c02('0x3c')](_0x9ab4fe[_0x3c02('0x30')],_0x2aa6c4[_0x3c02('0x32')]),_0x51f593);if(_0x9ab4fe['query'][_0x3c02('0x3d')]){_0x5c1e35[_0x3c02('0x3b')]=_['merge'](_0x5c1e35['where'],{'$or':_[_0x3c02('0x2b')](_0x51f593,function(_0x4728d6){if(_0x4728d6[_0x3c02('0x2e')]!==_0x3c02('0x3e')){var _0x2f7929={};_0x2f7929[_0x4728d6[_0x3c02('0x29')]]={'$like':'%'+_0x9ab4fe[_0x3c02('0x30')][_0x3c02('0x3d')]+'%'};return _0x2f7929;}})});}_0x5c1e35=_[_0x3c02('0x3f')]({},_0x5c1e35,_0x9ab4fe['options']);var _0x587cf5={'where':_0x5c1e35['where']};return db[_0x3c02('0x2c')]['count'](_0x587cf5)[_0x3c02('0x25')](function(_0x5f04d1){_0xebef4b[_0x3c02('0x1f')]=_0x5f04d1;if(_0x9ab4fe['query'][_0x3c02('0x40')]){_0x5c1e35[_0x3c02('0x41')]=[{'all':!![]}];}return db[_0x3c02('0x2c')][_0x3c02('0x42')](_0x5c1e35);})[_0x3c02('0x25')](function(_0x391dac){_0xebef4b['rows']=_0x391dac;return _0xebef4b;})['then'](respondWithFilteredResult(_0x24d1b1,_0x5c1e35))[_0x3c02('0x43')](handleError(_0x24d1b1,null));};exports[_0x3c02('0x44')]=function(_0x5edafc,_0x4f2904){var _0xb657a5={'raw':!![],'where':{'id':_0x5edafc['params']['id']}},_0x34327e={};_0x34327e[_0x3c02('0x33')]=_[_0x3c02('0x31')](db['SugarcrmField']['rawAttributes']);_0x34327e['query']=_[_0x3c02('0x31')](_0x5edafc[_0x3c02('0x30')]);_0x34327e[_0x3c02('0x32')]=_[_0x3c02('0x45')](_0x34327e['model'],_0x34327e['query']);_0xb657a5[_0x3c02('0x34')]=_[_0x3c02('0x45')](_0x34327e['model'],qs[_0x3c02('0x35')](_0x5edafc[_0x3c02('0x30')][_0x3c02('0x35')]));_0xb657a5[_0x3c02('0x34')]=_0xb657a5[_0x3c02('0x34')]['length']?_0xb657a5['attributes']:_0x34327e[_0x3c02('0x33')];if(_0x5edafc[_0x3c02('0x30')][_0x3c02('0x40')]){_0xb657a5[_0x3c02('0x41')]=[{'all':!![]}];}_0xb657a5=_[_0x3c02('0x3f')]({},_0xb657a5,_0x5edafc[_0x3c02('0x46')]);return db[_0x3c02('0x2c')][_0x3c02('0x47')](_0xb657a5)[_0x3c02('0x25')](handleEntityNotFound(_0x4f2904,null))[_0x3c02('0x25')](respondWithResult(_0x4f2904,null))[_0x3c02('0x43')](handleError(_0x4f2904,null));};exports['create']=function(_0x39420e,_0x1a6890){return db[_0x3c02('0x2c')]['create'](_0x39420e['body'],{})['then'](respondWithResult(_0x1a6890,0xc9))['catch'](handleError(_0x1a6890,null));};exports[_0x3c02('0x24')]=function(_0x3bea25,_0x3c75e4){if(_0x3bea25[_0x3c02('0x48')]['id']){delete _0x3bea25[_0x3c02('0x48')]['id'];}return db[_0x3c02('0x2c')][_0x3c02('0x47')]({'where':{'id':_0x3bea25[_0x3c02('0x49')]['id']}})[_0x3c02('0x25')](handleEntityNotFound(_0x3c75e4,null))[_0x3c02('0x25')](saveUpdates(_0x3bea25[_0x3c02('0x48')],null))[_0x3c02('0x25')](respondWithResult(_0x3c75e4,null))['catch'](handleError(_0x3c75e4,null));};exports[_0x3c02('0x26')]=function(_0x5b9323,_0x2d07ed){return db['SugarcrmField'][_0x3c02('0x47')]({'where':{'id':_0x5b9323[_0x3c02('0x49')]['id']}})[_0x3c02('0x25')](handleEntityNotFound(_0x2d07ed,null))[_0x3c02('0x25')](removeEntity(_0x2d07ed,null))[_0x3c02('0x43')](handleError(_0x2d07ed,null));};
\ No newline at end of file
+var _0x88b9=['include','findAll','rows','catch','show','params','keys','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','fs-extra','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','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','destroy','name','send','map','SugarcrmField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','then'];(function(_0x3520b8,_0x2d2034){var _0x262768=function(_0xd3aab){while(--_0xd3aab){_0x3520b8['push'](_0x3520b8['shift']());}};_0x262768(++_0x2d2034);}(_0x88b9,0x1bb));var _0x988b=function(_0x164594,_0x5f196d){_0x164594=_0x164594-0x0;var _0x3e652c=_0x88b9[_0x164594];return _0x3e652c;};'use strict';var emlformat=require(_0x988b('0x0'));var rimraf=require(_0x988b('0x1'));var zipdir=require(_0x988b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x988b('0x3'));var moment=require(_0x988b('0x4'));var BPromise=require(_0x988b('0x5'));var Mustache=require(_0x988b('0x6'));var util=require('util');var path=require(_0x988b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x988b('0x8'));var _=require('lodash');var squel=require(_0x988b('0x9'));var crypto=require(_0x988b('0xa'));var jsforce=require(_0x988b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x988b('0xc'));var querystring=require(_0x988b('0xd'));var Papa=require(_0x988b('0xe'));var Redis=require(_0x988b('0xf'));var authService=require(_0x988b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x988b('0x11'));var hardwareService=require(_0x988b('0x12'));var logger=require(_0x988b('0x13'))(_0x988b('0x14'));var utils=require(_0x988b('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x988b('0x16'));var db=require(_0x988b('0x17'))['db'];function respondWithStatusCode(_0x22e3de,_0x11eaaa){_0x11eaaa=_0x11eaaa||0xcc;return function(_0x9a08ec){if(_0x9a08ec){return _0x22e3de['sendStatus'](_0x11eaaa);}return _0x22e3de[_0x988b('0x18')](_0x11eaaa)[_0x988b('0x19')]();};}function respondWithResult(_0x4ef475,_0x4d543c){_0x4d543c=_0x4d543c||0xc8;return function(_0x27f7c7){if(_0x27f7c7){return _0x4ef475['status'](_0x4d543c)[_0x988b('0x1a')](_0x27f7c7);}};}function respondWithFilteredResult(_0x4ccab5,_0xc16a7e){return function(_0x5572d1){if(_0x5572d1){var _0x14dff9=typeof _0xc16a7e[_0x988b('0x1b')]==='undefined'&&typeof _0xc16a7e[_0x988b('0x1c')]===_0x988b('0x1d');var _0x3452dd=_0x5572d1['count'];var _0x49dff5=_0x14dff9?0x0:_0xc16a7e[_0x988b('0x1b')];var _0x4eadf0=_0x14dff9?_0x5572d1[_0x988b('0x1e')]:_0xc16a7e[_0x988b('0x1b')]+_0xc16a7e[_0x988b('0x1c')];var _0x58363c;if(_0x4eadf0>=_0x3452dd){_0x4eadf0=_0x3452dd;_0x58363c=0xc8;}else{_0x58363c=0xce;}_0x4ccab5[_0x988b('0x18')](_0x58363c);return _0x4ccab5['set'](_0x988b('0x1f'),_0x49dff5+'-'+_0x4eadf0+'/'+_0x3452dd)[_0x988b('0x1a')](_0x5572d1);}return null;};}function patchUpdates(_0x23f55d){return function(_0x2165e1){try{jsonpatch[_0x988b('0x20')](_0x2165e1,_0x23f55d,!![]);}catch(_0x3e3bd0){return BPromise[_0x988b('0x21')](_0x3e3bd0);}return _0x2165e1[_0x988b('0x22')]();};}function saveUpdates(_0x230126,_0x3a43d5){return function(_0x5446ab){if(_0x5446ab){return _0x5446ab['update'](_0x230126)['then'](function(_0x4f65b7){return _0x4f65b7;});}return null;};}function removeEntity(_0x211459,_0x3e1ba1){return function(_0x1d8ee2){if(_0x1d8ee2){return _0x1d8ee2[_0x988b('0x23')]()['then'](function(){_0x211459[_0x988b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35c058,_0xf99815){return function(_0x2f306e){if(!_0x2f306e){_0x35c058['sendStatus'](0x194);}return _0x2f306e;};}function handleError(_0x3f60ff,_0xfe0040){_0xfe0040=_0xfe0040||0x1f4;return function(_0xeda536){logger['error'](_0xeda536['stack']);if(_0xeda536[_0x988b('0x24')]){delete _0xeda536[_0x988b('0x24')];}_0x3f60ff[_0x988b('0x18')](_0xfe0040)[_0x988b('0x25')](_0xeda536);};}exports['index']=function(_0x5db427,_0x27af51){var _0x54cb44={},_0x456b1e={},_0x1c5a07={'count':0x0,'rows':[]};var _0x3836df=_[_0x988b('0x26')](db[_0x988b('0x27')][_0x988b('0x28')],function(_0x4c2d1f){return{'name':_0x4c2d1f[_0x988b('0x29')],'type':_0x4c2d1f[_0x988b('0x2a')][_0x988b('0x2b')]};});_0x456b1e['model']=_[_0x988b('0x26')](_0x3836df,_0x988b('0x24'));_0x456b1e[_0x988b('0x2c')]=_['keys'](_0x5db427['query']);_0x456b1e[_0x988b('0x2d')]=_[_0x988b('0x2e')](_0x456b1e[_0x988b('0x2f')],_0x456b1e[_0x988b('0x2c')]);_0x54cb44[_0x988b('0x30')]=_[_0x988b('0x2e')](_0x456b1e['model'],qs['fields'](_0x5db427[_0x988b('0x2c')][_0x988b('0x31')]));_0x54cb44['attributes']=_0x54cb44[_0x988b('0x30')][_0x988b('0x32')]?_0x54cb44[_0x988b('0x30')]:_0x456b1e[_0x988b('0x2f')];if(!_0x5db427[_0x988b('0x2c')][_0x988b('0x33')](_0x988b('0x34'))){_0x54cb44['limit']=qs[_0x988b('0x1c')](_0x5db427[_0x988b('0x2c')][_0x988b('0x1c')]);_0x54cb44['offset']=qs[_0x988b('0x1b')](_0x5db427['query'][_0x988b('0x1b')]);}_0x54cb44['order']=qs['sort'](_0x5db427[_0x988b('0x2c')][_0x988b('0x35')]);_0x54cb44[_0x988b('0x36')]=qs['filters'](_[_0x988b('0x37')](_0x5db427[_0x988b('0x2c')],_0x456b1e[_0x988b('0x2d')]),_0x3836df);if(_0x5db427[_0x988b('0x2c')]['filter']){_0x54cb44[_0x988b('0x36')]=_[_0x988b('0x38')](_0x54cb44[_0x988b('0x36')],{'$or':_['map'](_0x3836df,function(_0x6467e7){if(_0x6467e7[_0x988b('0x2a')]!==_0x988b('0x39')){var _0x3fb063={};_0x3fb063[_0x6467e7[_0x988b('0x24')]]={'$like':'%'+_0x5db427[_0x988b('0x2c')][_0x988b('0x3a')]+'%'};return _0x3fb063;}})});}_0x54cb44=_[_0x988b('0x38')]({},_0x54cb44,_0x5db427[_0x988b('0x3b')]);var _0x5946b4={'where':_0x54cb44[_0x988b('0x36')]};return db['SugarcrmField'][_0x988b('0x1e')](_0x5946b4)[_0x988b('0x3c')](function(_0x5bd439){_0x1c5a07[_0x988b('0x1e')]=_0x5bd439;if(_0x5db427[_0x988b('0x2c')]['includeAll']){_0x54cb44[_0x988b('0x3d')]=[{'all':!![]}];}return db[_0x988b('0x27')][_0x988b('0x3e')](_0x54cb44);})[_0x988b('0x3c')](function(_0x162cd8){_0x1c5a07[_0x988b('0x3f')]=_0x162cd8;return _0x1c5a07;})[_0x988b('0x3c')](respondWithFilteredResult(_0x27af51,_0x54cb44))[_0x988b('0x40')](handleError(_0x27af51,null));};exports[_0x988b('0x41')]=function(_0x3ee0da,_0xdd4e0b){var _0x1cbe9c={'raw':!![],'where':{'id':_0x3ee0da[_0x988b('0x42')]['id']}},_0x2f29f8={};_0x2f29f8['model']=_[_0x988b('0x43')](db[_0x988b('0x27')][_0x988b('0x28')]);_0x2f29f8[_0x988b('0x2c')]=_[_0x988b('0x43')](_0x3ee0da['query']);_0x2f29f8['filters']=_[_0x988b('0x2e')](_0x2f29f8[_0x988b('0x2f')],_0x2f29f8[_0x988b('0x2c')]);_0x1cbe9c[_0x988b('0x30')]=_[_0x988b('0x2e')](_0x2f29f8['model'],qs[_0x988b('0x31')](_0x3ee0da['query'][_0x988b('0x31')]));_0x1cbe9c[_0x988b('0x30')]=_0x1cbe9c[_0x988b('0x30')][_0x988b('0x32')]?_0x1cbe9c[_0x988b('0x30')]:_0x2f29f8[_0x988b('0x2f')];if(_0x3ee0da[_0x988b('0x2c')]['includeAll']){_0x1cbe9c['include']=[{'all':!![]}];}_0x1cbe9c=_[_0x988b('0x38')]({},_0x1cbe9c,_0x3ee0da[_0x988b('0x3b')]);return db['SugarcrmField'][_0x988b('0x44')](_0x1cbe9c)[_0x988b('0x3c')](handleEntityNotFound(_0xdd4e0b,null))['then'](respondWithResult(_0xdd4e0b,null))[_0x988b('0x40')](handleError(_0xdd4e0b,null));};exports[_0x988b('0x45')]=function(_0x126425,_0x396d5c){return db[_0x988b('0x27')]['create'](_0x126425[_0x988b('0x46')],{})[_0x988b('0x3c')](respondWithResult(_0x396d5c,0xc9))[_0x988b('0x40')](handleError(_0x396d5c,null));};exports[_0x988b('0x47')]=function(_0x33141a,_0x5d689c){if(_0x33141a[_0x988b('0x46')]['id']){delete _0x33141a[_0x988b('0x46')]['id'];}return db[_0x988b('0x27')][_0x988b('0x44')]({'where':{'id':_0x33141a[_0x988b('0x42')]['id']}})[_0x988b('0x3c')](handleEntityNotFound(_0x5d689c,null))[_0x988b('0x3c')](saveUpdates(_0x33141a['body'],null))[_0x988b('0x3c')](respondWithResult(_0x5d689c,null))['catch'](handleError(_0x5d689c,null));};exports[_0x988b('0x23')]=function(_0x754d85,_0x1960f2){return db[_0x988b('0x27')][_0x988b('0x44')]({'where':{'id':_0x754d85[_0x988b('0x42')]['id']}})[_0x988b('0x3c')](handleEntityNotFound(_0x1960f2,null))[_0x988b('0x3c')](removeEntity(_0x1960f2,null))[_0x988b('0x40')](handleError(_0x1960f2,null));};
\ No newline at end of file
index 15b08dc..8b97c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a4b=['idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','int_sugarcrm_fields','sugarcrm_unique_index'];(function(_0xc2adf7,_0xd55f45){var _0x464209=function(_0x5cb2bb){while(--_0x5cb2bb){_0xc2adf7['push'](_0xc2adf7['shift']());}};_0x464209(++_0xd55f45);}(_0x7a4b,0xf1));var _0xb7a4=function(_0x5f56f1,_0x21328c){_0x5f56f1=_0x5f56f1-0x0;var _0x43f068=_0x7a4b[_0x5f56f1];return _0x43f068;};'use strict';var _=require(_0xb7a4('0x0'));var util=require(_0xb7a4('0x1'));var logger=require(_0xb7a4('0x2'))(_0xb7a4('0x3'));var moment=require(_0xb7a4('0x4'));var BPromise=require(_0xb7a4('0x5'));var rp=require(_0xb7a4('0x6'));var fs=require('fs');var path=require(_0xb7a4('0x7'));var rimraf=require(_0xb7a4('0x8'));var config=require(_0xb7a4('0x9'));var attributes=require('./intSugarcrmField.attributes');module[_0xb7a4('0xa')]=function(_0x4f080c,_0x385973){return _0x4f080c[_0xb7a4('0xb')]('SugarcrmField',attributes,{'tableName':_0xb7a4('0xc'),'paranoid':![],'indexes':[{'name':_0xb7a4('0xd'),'fields':[_0xb7a4('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x097c=['bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','lodash','util','../../config/logger','api','moment'];(function(_0x38ae4f,_0x1d3180){var _0x1e92db=function(_0x1a1cb9){while(--_0x1a1cb9){_0x38ae4f['push'](_0x38ae4f['shift']());}};_0x1e92db(++_0x1d3180);}(_0x097c,0x136));var _0xc097=function(_0x35d19e,_0x5c2fcd){_0x35d19e=_0x35d19e-0x0;var _0x27a927=_0x097c[_0x35d19e];return _0x27a927;};'use strict';var _=require(_0xc097('0x0'));var util=require(_0xc097('0x1'));var logger=require(_0xc097('0x2'))(_0xc097('0x3'));var moment=require(_0xc097('0x4'));var BPromise=require(_0xc097('0x5'));var rp=require(_0xc097('0x6'));var fs=require('fs');var path=require(_0xc097('0x7'));var rimraf=require(_0xc097('0x8'));var config=require(_0xc097('0x9'));var attributes=require(_0xc097('0xa'));module['exports']=function(_0x4fcfc4,_0x41400a){return _0x4fcfc4[_0xc097('0xb')](_0xc097('0xc'),attributes,{'tableName':_0xc097('0xd'),'paranoid':![],'indexes':[{'name':_0xc097('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ac4a2ce..d3d7c9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccb9=['rpc','../../config/environment','client','http','request','then','SugarcrmField,\x20%s,\x20%s','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xccb9,0x12e));var _0x9ccb=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0xccb9[_0xf51c06];return _0x1d5420;};'use strict';var _=require('lodash');var util=require(_0x9ccb('0x0'));var moment=require(_0x9ccb('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ccb('0x2'));var db=require(_0x9ccb('0x3'))['db'];var utils=require(_0x9ccb('0x4'));var logger=require(_0x9ccb('0x5'))(_0x9ccb('0x6'));var config=require(_0x9ccb('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9ccb('0x8')][_0x9ccb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51c287,_0xb84361,_0x40e566){return new BPromise(function(_0x3217f4,_0xb48b16){return client[_0x9ccb('0xa')](_0x51c287,_0x40e566)[_0x9ccb('0xb')](function(_0x352ec3){logger['info'](_0x9ccb('0xc'),_0xb84361,'request\x20sent');logger[_0x9ccb('0xd')](_0x9ccb('0xe'),_0xb84361,_0x9ccb('0xf'),JSON['stringify'](_0x352ec3));if(_0x352ec3[_0x9ccb('0x10')]){if(_0x352ec3[_0x9ccb('0x10')][_0x9ccb('0x11')]===0x1f4){logger[_0x9ccb('0x10')](_0x9ccb('0xc'),_0xb84361,_0x352ec3[_0x9ccb('0x10')][_0x9ccb('0x12')]);return _0xb48b16(_0x352ec3['error']['message']);}logger['error']('SugarcrmField,\x20%s,\x20%s',_0xb84361,_0x352ec3[_0x9ccb('0x10')][_0x9ccb('0x12')]);return _0x3217f4(_0x352ec3[_0x9ccb('0x10')]['message']);}else{logger[_0x9ccb('0x13')](_0x9ccb('0xc'),_0xb84361,_0x9ccb('0xf'));_0x3217f4(_0x352ec3[_0x9ccb('0x14')]['message']);}})[_0x9ccb('0x15')](function(_0xae1e77){logger['error'](_0x9ccb('0xc'),_0xb84361,_0xae1e77);_0xb48b16(_0xae1e77);});});}
\ No newline at end of file
+var _0x3549=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','info','SugarcrmField,\x20%s,\x20%s','SugarcrmField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch'];(function(_0x4f6d08,_0x1b3dd0){var _0x53a9c6=function(_0x2e0e0f){while(--_0x2e0e0f){_0x4f6d08['push'](_0x4f6d08['shift']());}};_0x53a9c6(++_0x1b3dd0);}(_0x3549,0x154));var _0x9354=function(_0x15ac45,_0x475ca0){_0x15ac45=_0x15ac45-0x0;var _0x11dbf4=_0x3549[_0x15ac45];return _0x11dbf4;};'use strict';var _=require('lodash');var util=require(_0x9354('0x0'));var moment=require('moment');var BPromise=require(_0x9354('0x1'));var rs=require(_0x9354('0x2'));var fs=require('fs');var Redis=require(_0x9354('0x3'));var db=require(_0x9354('0x4'))['db'];var utils=require(_0x9354('0x5'));var logger=require(_0x9354('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9354('0x7'));var client=jayson['client'][_0x9354('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xf5e351,_0x5f0c1d,_0xf9ec1f){return new BPromise(function(_0x2b882d,_0x2182ab){return client['request'](_0xf5e351,_0xf9ec1f)[_0x9354('0x9')](function(_0x236b21){logger[_0x9354('0xa')](_0x9354('0xb'),_0x5f0c1d,'request\x20sent');logger['debug'](_0x9354('0xc'),_0x5f0c1d,_0x9354('0xd'),JSON[_0x9354('0xe')](_0x236b21));if(_0x236b21['error']){if(_0x236b21['error'][_0x9354('0xf')]===0x1f4){logger[_0x9354('0x10')](_0x9354('0xb'),_0x5f0c1d,_0x236b21[_0x9354('0x10')][_0x9354('0x11')]);return _0x2182ab(_0x236b21[_0x9354('0x10')][_0x9354('0x11')]);}logger['error']('SugarcrmField,\x20%s,\x20%s',_0x5f0c1d,_0x236b21['error'][_0x9354('0x11')]);return _0x2b882d(_0x236b21[_0x9354('0x10')][_0x9354('0x11')]);}else{logger[_0x9354('0xa')](_0x9354('0xb'),_0x5f0c1d,_0x9354('0xd'));_0x2b882d(_0x236b21[_0x9354('0x12')][_0x9354('0x11')]);}})[_0x9354('0x13')](function(_0x1d5ecd){logger[_0x9354('0x10')](_0x9354('0xb'),_0x5f0c1d,_0x1d5ecd);_0x2182ab(_0x1d5ecd);});});}
\ No newline at end of file
index 235200a..ce9ec66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3297=['isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x3297,0x19f));var _0x7329=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x3297[_0x376b45];return _0x2341b3;};'use strict';var multer=require(_0x7329('0x0'));var util=require(_0x7329('0x1'));var path=require(_0x7329('0x2'));var timeout=require('connect-timeout');var express=require(_0x7329('0x3'));var router=express[_0x7329('0x4')]();var fs_extra=require(_0x7329('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7329('0x6'));var config=require(_0x7329('0x7'));var controller=require(_0x7329('0x8'));router[_0x7329('0x9')]('/',auth[_0x7329('0xa')](),controller[_0x7329('0xb')]);router[_0x7329('0x9')](_0x7329('0xc'),auth[_0x7329('0xa')](),controller[_0x7329('0xd')]);router[_0x7329('0x9')](_0x7329('0xe'),auth['isAuthenticated'](),controller[_0x7329('0xf')]);router['get'](_0x7329('0x10'),auth['isAuthenticated'](),controller['getFields']);router[_0x7329('0x11')]('/',auth['isAuthenticated'](),controller[_0x7329('0x12')]);router[_0x7329('0x11')](_0x7329('0xe'),auth[_0x7329('0xa')](),controller[_0x7329('0x13')]);router[_0x7329('0x14')]('/:id',auth[_0x7329('0xa')](),controller[_0x7329('0x15')]);router[_0x7329('0x16')](_0x7329('0xc'),auth[_0x7329('0xa')](),controller[_0x7329('0x17')]);module[_0x7329('0x18')]=router;
\ No newline at end of file
+var _0xdeb3=['addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post'];(function(_0xcc3fae,_0x122871){var _0x45c2cd=function(_0x27ee40){while(--_0x27ee40){_0xcc3fae['push'](_0xcc3fae['shift']());}};_0x45c2cd(++_0x122871);}(_0xdeb3,0xeb));var _0x3deb=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xdeb3[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x3deb('0x0'));var util=require(_0x3deb('0x1'));var path=require(_0x3deb('0x2'));var timeout=require(_0x3deb('0x3'));var express=require(_0x3deb('0x4'));var router=express[_0x3deb('0x5')]();var fs_extra=require(_0x3deb('0x6'));var auth=require(_0x3deb('0x7'));var interaction=require(_0x3deb('0x8'));var config=require('../../config/environment');var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0x3deb('0x9')](),controller[_0x3deb('0xa')]);router[_0x3deb('0xb')](_0x3deb('0xc'),auth[_0x3deb('0x9')](),controller['show']);router['get'](_0x3deb('0xd'),auth[_0x3deb('0x9')](),controller[_0x3deb('0xe')]);router[_0x3deb('0xb')](_0x3deb('0xf'),auth[_0x3deb('0x9')](),controller[_0x3deb('0x10')]);router[_0x3deb('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x3deb('0xd'),auth['isAuthenticated'](),controller[_0x3deb('0x12')]);router[_0x3deb('0x13')](_0x3deb('0xc'),auth[_0x3deb('0x9')](),controller['update']);router[_0x3deb('0x14')](_0x3deb('0xc'),auth[_0x3deb('0x9')](),controller[_0x3deb('0x15')]);module[_0x3deb('0x16')]=router;
\ No newline at end of file
index d09946e..5d49162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16bd=['STRING','exports'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0x16bd,0xdd));var _0xd16b=function(_0x5d8018,_0x588592){_0x5d8018=_0x5d8018-0x0;var _0x151ac4=_0x16bd[_0x5d8018];return _0x151ac4;};'use strict';var Sequelize=require('sequelize');module[_0xd16b('0x0')]={'name':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xd16b('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x4179=['exports','STRING','HelpDesk'];(function(_0x15af0f,_0x5454ce){var _0x2bd1cb=function(_0x593818){while(--_0x593818){_0x15af0f['push'](_0x15af0f['shift']());}};_0x2bd1cb(++_0x5454ce);}(_0x4179,0x75));var _0x9417=function(_0x1e4150,_0x55b02a){_0x1e4150=_0x1e4150-0x0;var _0x1ce3ee=_0x4179[_0x1e4150];return _0x1ce3ee;};'use strict';var Sequelize=require('sequelize');module[_0x9417('0x0')]={'name':{'type':Sequelize[_0x9417('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x9417('0x1')]},'username':{'type':Sequelize[_0x9417('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9417('0x2')},'remoteUri':{'type':Sequelize[_0x9417('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x9417('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x9417('0x1')],'allowNull':![]}};
\ No newline at end of file
index 6c31a27..e06e849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dfd=['sort','where','filter','merge','VIRTUAL','options','VtigerAccount','includeAll','findAll','rows','catch','keys','rawAttributes','find','create','body','update','params','destroy','getConfigurations','findOne','VtigerConfiguration','pick','length','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','moduleName','remoteUri','serverUrl','accessKey','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','POST','login','token','success','describe','result','autogenerated','reference','owner','includes','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','sendStatus','error','stack','send','index','fieldName','type','key','model','map','name','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x5bfa72,_0x425a7e){var _0x5983f7=function(_0x5ef198){while(--_0x5ef198){_0x5bfa72['push'](_0x5bfa72['shift']());}};_0x5983f7(++_0x425a7e);}(_0x5dfd,0x1c1));var _0xd5df=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0x5dfd[_0xb725be];return _0x2f2424;};'use strict';var emlformat=require(_0xd5df('0x0'));var rimraf=require(_0xd5df('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd5df('0x2'));var rp=require(_0xd5df('0x3'));var moment=require(_0xd5df('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd5df('0x5'));var util=require(_0xd5df('0x6'));var path=require(_0xd5df('0x7'));var sox=require(_0xd5df('0x8'));var csv=require(_0xd5df('0x9'));var ejs=require(_0xd5df('0xa'));var fs=require('fs');var fs_extra=require(_0xd5df('0xb'));var _=require(_0xd5df('0xc'));var squel=require(_0xd5df('0xd'));var crypto=require(_0xd5df('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd5df('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd5df('0x10'));var Papa=require(_0xd5df('0x11'));var Redis=require(_0xd5df('0x12'));var authService=require(_0xd5df('0x13'));var qs=require(_0xd5df('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd5df('0x15'));var logger=require(_0xd5df('0x16'))(_0xd5df('0x17'));var utils=require(_0xd5df('0x18'));var config=require(_0xd5df('0x19'));var licenseUtil=require(_0xd5df('0x1a'));var db=require(_0xd5df('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x26dac0,_0xf21a17){_0xf21a17=_0xf21a17||0xcc;return function(_0x55c1fa){if(_0x55c1fa){return _0x26dac0['sendStatus'](_0xf21a17);}return _0x26dac0[_0xd5df('0x1c')](_0xf21a17)[_0xd5df('0x1d')]();};}function respondWithResult(_0x4f2ee9,_0x2d29f5){_0x2d29f5=_0x2d29f5||0xc8;return function(_0x1aa7b7){if(_0x1aa7b7){return _0x4f2ee9[_0xd5df('0x1c')](_0x2d29f5)['json'](_0x1aa7b7);}};}function respondWithFilteredResult(_0x3c40f3,_0x48f940){return function(_0x6868c8){if(_0x6868c8){var _0x31bf09=typeof _0x48f940[_0xd5df('0x1e')]===_0xd5df('0x1f')&&typeof _0x48f940[_0xd5df('0x20')]===_0xd5df('0x1f');var _0x277fe1=_0x6868c8['count'];var _0x571210=_0x31bf09?0x0:_0x48f940[_0xd5df('0x1e')];var _0x1da8eb=_0x31bf09?_0x6868c8[_0xd5df('0x21')]:_0x48f940[_0xd5df('0x1e')]+_0x48f940[_0xd5df('0x20')];var _0x12f77f;if(_0x1da8eb>=_0x277fe1){_0x1da8eb=_0x277fe1;_0x12f77f=0xc8;}else{_0x12f77f=0xce;}_0x3c40f3[_0xd5df('0x1c')](_0x12f77f);return _0x3c40f3[_0xd5df('0x22')](_0xd5df('0x23'),_0x571210+'-'+_0x1da8eb+'/'+_0x277fe1)[_0xd5df('0x24')](_0x6868c8);}return null;};}function patchUpdates(_0x2371e4){return function(_0x574a1d){try{jsonpatch[_0xd5df('0x25')](_0x574a1d,_0x2371e4,!![]);}catch(_0x8ce432){return BPromise[_0xd5df('0x26')](_0x8ce432);}return _0x574a1d[_0xd5df('0x27')]();};}function saveUpdates(_0x7d4047,_0x1dbe10){return function(_0x51fbf9){if(_0x51fbf9){return _0x51fbf9['update'](_0x7d4047)[_0xd5df('0x28')](function(_0x4936f3){return _0x4936f3;});}return null;};}function removeEntity(_0x477714,_0x481576){return function(_0x50ca6a){if(_0x50ca6a){return _0x50ca6a['destroy']()[_0xd5df('0x28')](function(){_0x477714['status'](0xcc)[_0xd5df('0x1d')]();});}};}function handleEntityNotFound(_0x5efbfd,_0x22f041){return function(_0x3001f4){if(!_0x3001f4){_0x5efbfd[_0xd5df('0x29')](0x194);}return _0x3001f4;};}function handleError(_0x13f8a3,_0x5642ff){_0x5642ff=_0x5642ff||0x1f4;return function(_0x405d26){logger[_0xd5df('0x2a')](_0x405d26[_0xd5df('0x2b')]);if(_0x405d26['name']){delete _0x405d26['name'];}_0x13f8a3[_0xd5df('0x1c')](_0x5642ff)[_0xd5df('0x2c')](_0x405d26);};}exports[_0xd5df('0x2d')]=function(_0x1cc506,_0x1baaf3){var _0x12c145={},_0x536db9={},_0x4bdf30={'count':0x0,'rows':[]};var _0x3e5964=_['map'](db['VtigerAccount']['rawAttributes'],function(_0xb2c842){return{'name':_0xb2c842[_0xd5df('0x2e')],'type':_0xb2c842[_0xd5df('0x2f')][_0xd5df('0x30')]};});_0x536db9[_0xd5df('0x31')]=_[_0xd5df('0x32')](_0x3e5964,_0xd5df('0x33'));_0x536db9[_0xd5df('0x34')]=_['keys'](_0x1cc506[_0xd5df('0x34')]);_0x536db9[_0xd5df('0x35')]=_[_0xd5df('0x36')](_0x536db9[_0xd5df('0x31')],_0x536db9['query']);_0x12c145[_0xd5df('0x37')]=_['intersection'](_0x536db9[_0xd5df('0x31')],qs[_0xd5df('0x38')](_0x1cc506['query'][_0xd5df('0x38')]));_0x12c145[_0xd5df('0x37')]=_0x12c145[_0xd5df('0x37')]['length']?_0x12c145[_0xd5df('0x37')]:_0x536db9['model'];if(!_0x1cc506[_0xd5df('0x34')][_0xd5df('0x39')](_0xd5df('0x3a'))){_0x12c145['limit']=qs[_0xd5df('0x20')](_0x1cc506[_0xd5df('0x34')]['limit']);_0x12c145['offset']=qs[_0xd5df('0x1e')](_0x1cc506[_0xd5df('0x34')][_0xd5df('0x1e')]);}_0x12c145['order']=qs[_0xd5df('0x3b')](_0x1cc506[_0xd5df('0x34')]['sort']);_0x12c145[_0xd5df('0x3c')]=qs[_0xd5df('0x35')](_['pick'](_0x1cc506[_0xd5df('0x34')],_0x536db9[_0xd5df('0x35')]),_0x3e5964);if(_0x1cc506[_0xd5df('0x34')][_0xd5df('0x3d')]){_0x12c145[_0xd5df('0x3c')]=_[_0xd5df('0x3e')](_0x12c145[_0xd5df('0x3c')],{'$or':_['map'](_0x3e5964,function(_0x4c5f03){if(_0x4c5f03['type']!==_0xd5df('0x3f')){var _0x4cd1c4={};_0x4cd1c4[_0x4c5f03[_0xd5df('0x33')]]={'$like':'%'+_0x1cc506[_0xd5df('0x34')][_0xd5df('0x3d')]+'%'};return _0x4cd1c4;}})});}_0x12c145=_['merge']({},_0x12c145,_0x1cc506[_0xd5df('0x40')]);var _0xb14a76={'where':_0x12c145['where']};return db[_0xd5df('0x41')]['count'](_0xb14a76)['then'](function(_0x443ad8){_0x4bdf30[_0xd5df('0x21')]=_0x443ad8;if(_0x1cc506[_0xd5df('0x34')][_0xd5df('0x42')]){_0x12c145['include']=[{'all':!![]}];}return db[_0xd5df('0x41')][_0xd5df('0x43')](_0x12c145);})['then'](function(_0x305e11){_0x4bdf30[_0xd5df('0x44')]=_0x305e11;return _0x4bdf30;})['then'](respondWithFilteredResult(_0x1baaf3,_0x12c145))[_0xd5df('0x45')](handleError(_0x1baaf3,null));};exports['show']=function(_0x5711a1,_0x7b9c90){var _0x3675b2={'raw':![],'where':{'id':_0x5711a1['params']['id']}},_0x1483f6={};_0x1483f6[_0xd5df('0x31')]=_[_0xd5df('0x46')](db[_0xd5df('0x41')][_0xd5df('0x47')]);_0x1483f6[_0xd5df('0x34')]=_[_0xd5df('0x46')](_0x5711a1[_0xd5df('0x34')]);_0x1483f6[_0xd5df('0x35')]=_[_0xd5df('0x36')](_0x1483f6['model'],_0x1483f6[_0xd5df('0x34')]);_0x3675b2['attributes']=_[_0xd5df('0x36')](_0x1483f6[_0xd5df('0x31')],qs[_0xd5df('0x38')](_0x5711a1[_0xd5df('0x34')]['fields']));_0x3675b2[_0xd5df('0x37')]=_0x3675b2['attributes']['length']?_0x3675b2['attributes']:_0x1483f6[_0xd5df('0x31')];if(_0x5711a1[_0xd5df('0x34')]['includeAll']){_0x3675b2['include']=[{'all':!![]}];}_0x3675b2=_[_0xd5df('0x3e')]({},_0x3675b2,_0x5711a1[_0xd5df('0x40')]);return db[_0xd5df('0x41')][_0xd5df('0x48')](_0x3675b2)[_0xd5df('0x28')](handleEntityNotFound(_0x7b9c90,null))[_0xd5df('0x28')](respondWithResult(_0x7b9c90,null))['catch'](handleError(_0x7b9c90,null));};exports[_0xd5df('0x49')]=function(_0x6387ca,_0x8a2cf9){return db[_0xd5df('0x41')][_0xd5df('0x49')](_0x6387ca[_0xd5df('0x4a')],{})[_0xd5df('0x28')](respondWithResult(_0x8a2cf9,0xc9))[_0xd5df('0x45')](handleError(_0x8a2cf9,null));};exports[_0xd5df('0x4b')]=function(_0x12b833,_0x57d30f){if(_0x12b833[_0xd5df('0x4a')]['id']){delete _0x12b833['body']['id'];}return db['VtigerAccount'][_0xd5df('0x48')]({'where':{'id':_0x12b833[_0xd5df('0x4c')]['id']}})[_0xd5df('0x28')](handleEntityNotFound(_0x57d30f,null))[_0xd5df('0x28')](saveUpdates(_0x12b833['body'],null))[_0xd5df('0x28')](respondWithResult(_0x57d30f,null))[_0xd5df('0x45')](handleError(_0x57d30f,null));};exports[_0xd5df('0x4d')]=function(_0x253df9,_0x3d0f96){return db[_0xd5df('0x41')][_0xd5df('0x48')]({'where':{'id':_0x253df9[_0xd5df('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3d0f96,null))[_0xd5df('0x28')](removeEntity(_0x3d0f96,null))[_0xd5df('0x45')](handleError(_0x3d0f96,null));};exports[_0xd5df('0x4e')]=function(_0x394df0,_0x26c222,_0x285c62){var _0x60beea={};var _0x54c351={};var _0x557f2e;var _0x126d72;return db['VtigerAccount'][_0xd5df('0x4f')]({'where':{'id':_0x394df0[_0xd5df('0x4c')]['id']}})[_0xd5df('0x28')](handleEntityNotFound(_0x26c222,null))[_0xd5df('0x28')](function(_0x3af0bf){if(_0x3af0bf){_0x557f2e=_0x3af0bf;_0x54c351['model']=_[_0xd5df('0x46')](db[_0xd5df('0x50')][_0xd5df('0x47')]);_0x54c351['query']=_[_0xd5df('0x46')](_0x394df0[_0xd5df('0x34')]);_0x54c351[_0xd5df('0x35')]=_[_0xd5df('0x36')](_0x54c351[_0xd5df('0x31')],_0x54c351[_0xd5df('0x34')]);_0x60beea[_0xd5df('0x37')]=_[_0xd5df('0x36')](_0x54c351[_0xd5df('0x31')],qs[_0xd5df('0x38')](_0x394df0['query'][_0xd5df('0x38')]));_0x60beea[_0xd5df('0x37')]=_0x60beea['attributes']['length']?_0x60beea[_0xd5df('0x37')]:_0x54c351[_0xd5df('0x31')];_0x60beea['order']=qs['sort'](_0x394df0[_0xd5df('0x34')]['sort']);_0x60beea[_0xd5df('0x3c')]=qs['filters'](_[_0xd5df('0x51')](_0x394df0['query'],_0x54c351[_0xd5df('0x35')]));if(_0x394df0[_0xd5df('0x34')]['filter']){_0x60beea[_0xd5df('0x3c')]=_[_0xd5df('0x3e')](_0x60beea[_0xd5df('0x3c')],{'$or':_[_0xd5df('0x32')](_0x60beea['attributes'],function(_0x13ac4b){var _0x5bc01d={};_0x5bc01d[_0x13ac4b]={'$like':'%'+_0x394df0[_0xd5df('0x34')][_0xd5df('0x3d')]+'%'};return _0x5bc01d;})});}_0x60beea=_[_0xd5df('0x3e')]({},_0x60beea,_0x394df0[_0xd5df('0x40')]);return _0x557f2e[_0xd5df('0x4e')](_0x60beea);}})[_0xd5df('0x28')](function(_0x3c32f6){if(_0x3c32f6){_0x126d72=_0x3c32f6[_0xd5df('0x52')];if(!_0x394df0[_0xd5df('0x34')]['hasOwnProperty']('nolimit')){_0x60beea[_0xd5df('0x20')]=qs['limit'](_0x394df0[_0xd5df('0x34')][_0xd5df('0x20')]);_0x60beea['offset']=qs[_0xd5df('0x1e')](_0x394df0[_0xd5df('0x34')][_0xd5df('0x1e')]);}return _0x557f2e[_0xd5df('0x4e')](_0x60beea);}})[_0xd5df('0x28')](function(_0x4a27a9){if(_0x4a27a9){return _0x4a27a9?{'count':_0x126d72,'rows':_0x4a27a9}:null;}})[_0xd5df('0x28')](respondWithResult(_0x26c222,null))[_0xd5df('0x45')](handleError(_0x26c222,null));};exports[_0xd5df('0x53')]=function(_0x425406,_0x5c3f69,_0xc555be){if(_0x425406[_0xd5df('0x4a')]['id']){delete _0x425406[_0xd5df('0x4a')]['id'];}return db[_0xd5df('0x41')][_0xd5df('0x4f')]({'where':{'id':_0x425406['params']['id']}})['then'](handleEntityNotFound(_0x5c3f69,null))[_0xd5df('0x28')](function(_0x5b0952){if(_0x5b0952){_0x425406[_0xd5df('0x4a')][_0xd5df('0x54')]=_0x5b0952['id'];_0x425406['body'][_0xd5df('0x55')]=integrations[_0xd5df('0x56')](_0x425406[_0xd5df('0x4a')][_0xd5df('0x57')],_0x425406[_0xd5df('0x4a')][_0xd5df('0x2f')]);_0x425406[_0xd5df('0x4a')][_0xd5df('0x58')]=integrations[_0xd5df('0x59')](_0x425406[_0xd5df('0x4a')][_0xd5df('0x57')],_0x425406['body'][_0xd5df('0x2f')]);return db['VtigerConfiguration'][_0xd5df('0x49')](_0x425406[_0xd5df('0x4a')],{'include':[{'model':db['VtigerField'],'as':_0xd5df('0x55')},{'model':db[_0xd5df('0x5a')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x5c3f69,null))[_0xd5df('0x45')](handleError(_0x5c3f69,null));};var md5=require('md5');exports[_0xd5df('0x5b')]=function(_0x5c88eb,_0x5dc518,_0x542809){var _0x2bc1c0=null;var _0x494861=null;var _0x3aa515=null;var _0x1897f6=null;var _0x1b725c='';return db[_0xd5df('0x41')]['findOne']({'where':{'id':_0x5c88eb[_0xd5df('0x4c')]['id']},'attributes':['id','name',_0xd5df('0x5c'),'description',_0xd5df('0x5d'),_0xd5df('0x5e'),_0xd5df('0x5f'),'accessKey']})[_0xd5df('0x28')](handleEntityNotFound(_0x5dc518,null))[_0xd5df('0x28')](function(_0x52e7e6){if(_0x52e7e6){_0x2bc1c0=_0x52e7e6[_0xd5df('0x5c')];_0x494861=_0x52e7e6[_0xd5df('0x60')];_0x3aa515=_0x52e7e6['moduleName'];_0x1b725c=_0x52e7e6[_0xd5df('0x5e')];var _0x39cca9=_0x1b725c['slice'](-0x1);if(_0x39cca9==='/'){_0x1b725c=_0x1b725c[_0xd5df('0x61')](0x0,_0x1b725c[_0xd5df('0x62')](_0x39cca9));}_0x1897f6=util[_0xd5df('0x63')](_0xd5df('0x64'),_0x1b725c);var _0x117058={'method':_0xd5df('0x65'),'uri':_0x1897f6,'qs':{'operation':_0xd5df('0x66'),'username':_0x52e7e6[_0xd5df('0x5c')]},'json':!![]};return rp(_0x117058);}})[_0xd5df('0x28')](function(_0x124828){if(_0x124828['success']){var _0x1a48cf={'method':_0xd5df('0x67'),'uri':_0x1897f6,'form':{'operation':_0xd5df('0x68'),'username':_0x2bc1c0,'accessKey':md5(_0x124828['result'][_0xd5df('0x69')]+_0x494861)},'json':!![]};return rp(_0x1a48cf);}})[_0xd5df('0x28')](function(_0x2c53a1){if(_0x2c53a1[_0xd5df('0x6a')]){var _0x5a319d={'method':_0xd5df('0x65'),'uri':_0x1897f6,'qs':{'operation':_0xd5df('0x6b'),'username':_0x2bc1c0,'sessionName':_0x2c53a1[_0xd5df('0x6c')]['sessionName'],'elementType':_0x3aa515},'json':!![]};return rp(_0x5a319d);}})['then'](function(_0x45a9b5){if(_0x45a9b5[_0xd5df('0x6a')]){var _0x40d47b=[_0xd5df('0x6d'),_0xd5df('0x6e'),_0xd5df('0x6f')];_['remove'](_0x45a9b5[_0xd5df('0x6c')]['fields'],function(_0x59bf8f){return _0x40d47b[_0xd5df('0x70')](_0x59bf8f[_0xd5df('0x2f')][_0xd5df('0x33')]);});_[_0xd5df('0x71')](_0x45a9b5[_0xd5df('0x6c')][_0xd5df('0x38')],function(_0x1ecfe7){return _0x1ecfe7[_0xd5df('0x72')]===_0xd5df('0x73');});return{'count':_0x45a9b5[_0xd5df('0x6c')][_0xd5df('0x38')][_0xd5df('0x52')],'rows':_[_0xd5df('0x32')](_0x45a9b5['result']['fields'],function(_0x4dccb9){return{'id':_0x4dccb9[_0xd5df('0x33')],'name':_0x4dccb9[_0xd5df('0x74')],'custom':_[_0xd5df('0x75')](_0x4dccb9[_0xd5df('0x33')],_0xd5df('0x76'))?!![]:![],'options':_0x4dccb9[_0xd5df('0x2f')][_0xd5df('0x33')]===_0xd5df('0x77')&&_0x4dccb9[_0xd5df('0x2f')][_0xd5df('0x78')][_0xd5df('0x52')]>0x0?_['map'](_0x4dccb9[_0xd5df('0x2f')]['picklistValues'],function(_0x46c83b){return{'name':_0x46c83b[_0xd5df('0x74')],'value':_0x46c83b[_0xd5df('0x79')]};}):[]};})};}})['then'](respondWithResult(_0x5dc518,null))[_0xd5df('0x45')](function(_0x27d0ee){console['log']('vTiger\x20error:\x20'+_0x27d0ee);var _0x463fe2=_0x5c88eb[_0xd5df('0x34')]['test']?0x1f4:_0x27d0ee['statusCode']||0x1f4;logger['error'](_0xd5df('0x7a'),_0xd5df('0x5b'),_0x463fe2,JSON[_0xd5df('0x7b')](_0x27d0ee));delete _0x27d0ee[_0xd5df('0x33')];if(_0x463fe2===0x191){_0x463fe2=0x190;}_0x5dc518[_0xd5df('0x1c')](_0x463fe2)[_0xd5df('0x2c')](_0x5c88eb[_0xd5df('0x34')][_0xd5df('0x7c')]?{'message':_0xd5df('0x7d'),'statusCode':_0x27d0ee[_0xd5df('0x7e')]}:_0x27d0ee);});};
\ No newline at end of file
+var _0x4f43=['fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','VtigerAccount','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','rows','catch','params','keys','options','find','create','body','update','getConfigurations','findOne','VtigerConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','description','moduleName','remoteUri','serverUrl','accessKey','username','slice','substring','%s/webservice.php','GET','POST','login','result','token','success','describe','autogenerated','reference','owner','includes','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x318a06,_0x32c5ac){var _0x552d7b=function(_0x2c9e6d){while(--_0x2c9e6d){_0x318a06['push'](_0x318a06['shift']());}};_0x552d7b(++_0x32c5ac);}(_0x4f43,0x169));var _0x34f4=function(_0x30933a,_0x204cfe){_0x30933a=_0x30933a-0x0;var _0x57fab1=_0x4f43[_0x30933a];return _0x57fab1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x34f4('0x0'));var zipdir=require(_0x34f4('0x1'));var jsonpatch=require(_0x34f4('0x2'));var rp=require(_0x34f4('0x3'));var moment=require(_0x34f4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x34f4('0x5'));var util=require(_0x34f4('0x6'));var path=require(_0x34f4('0x7'));var sox=require(_0x34f4('0x8'));var csv=require(_0x34f4('0x9'));var ejs=require(_0x34f4('0xa'));var fs=require('fs');var fs_extra=require(_0x34f4('0xb'));var _=require(_0x34f4('0xc'));var squel=require(_0x34f4('0xd'));var crypto=require('crypto');var jsforce=require(_0x34f4('0xe'));var deskjs=require(_0x34f4('0xf'));var toCsv=require(_0x34f4('0x9'));var querystring=require(_0x34f4('0x10'));var Papa=require(_0x34f4('0x11'));var Redis=require(_0x34f4('0x12'));var authService=require(_0x34f4('0x13'));var qs=require(_0x34f4('0x14'));var as=require(_0x34f4('0x15'));var hardwareService=require(_0x34f4('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x34f4('0x17'));var config=require(_0x34f4('0x18'));var licenseUtil=require(_0x34f4('0x19'));var db=require(_0x34f4('0x1a'))['db'];var integrations=require(_0x34f4('0x1b'));function respondWithStatusCode(_0x2ef703,_0x1413dd){_0x1413dd=_0x1413dd||0xcc;return function(_0x33bb78){if(_0x33bb78){return _0x2ef703[_0x34f4('0x1c')](_0x1413dd);}return _0x2ef703[_0x34f4('0x1d')](_0x1413dd)[_0x34f4('0x1e')]();};}function respondWithResult(_0x2d22bb,_0x43bac1){_0x43bac1=_0x43bac1||0xc8;return function(_0x2eb836){if(_0x2eb836){return _0x2d22bb[_0x34f4('0x1d')](_0x43bac1)[_0x34f4('0x1f')](_0x2eb836);}};}function respondWithFilteredResult(_0x3695a2,_0x191a38){return function(_0x2e6e9d){if(_0x2e6e9d){var _0x26584a=typeof _0x191a38['offset']===_0x34f4('0x20')&&typeof _0x191a38[_0x34f4('0x21')]===_0x34f4('0x20');var _0x37f783=_0x2e6e9d[_0x34f4('0x22')];var _0x5d4fcb=_0x26584a?0x0:_0x191a38[_0x34f4('0x23')];var _0x305473=_0x26584a?_0x2e6e9d[_0x34f4('0x22')]:_0x191a38[_0x34f4('0x23')]+_0x191a38['limit'];var _0x1b0bf5;if(_0x305473>=_0x37f783){_0x305473=_0x37f783;_0x1b0bf5=0xc8;}else{_0x1b0bf5=0xce;}_0x3695a2[_0x34f4('0x1d')](_0x1b0bf5);return _0x3695a2[_0x34f4('0x24')]('Content-Range',_0x5d4fcb+'-'+_0x305473+'/'+_0x37f783)[_0x34f4('0x1f')](_0x2e6e9d);}return null;};}function patchUpdates(_0x420804){return function(_0x23d6f2){try{jsonpatch[_0x34f4('0x25')](_0x23d6f2,_0x420804,!![]);}catch(_0x55e2fa){return BPromise[_0x34f4('0x26')](_0x55e2fa);}return _0x23d6f2[_0x34f4('0x27')]();};}function saveUpdates(_0x15f4b7,_0xb95e92){return function(_0x1548c7){if(_0x1548c7){return _0x1548c7['update'](_0x15f4b7)[_0x34f4('0x28')](function(_0x26fc9b){return _0x26fc9b;});}return null;};}function removeEntity(_0x495fa7,_0x537547){return function(_0x1684c6){if(_0x1684c6){return _0x1684c6[_0x34f4('0x29')]()[_0x34f4('0x28')](function(){_0x495fa7['status'](0xcc)[_0x34f4('0x1e')]();});}};}function handleEntityNotFound(_0x1486de,_0x3b50d9){return function(_0x14cc7f){if(!_0x14cc7f){_0x1486de['sendStatus'](0x194);}return _0x14cc7f;};}function handleError(_0x2bdb2b,_0x25de2f){_0x25de2f=_0x25de2f||0x1f4;return function(_0x444431){logger[_0x34f4('0x2a')](_0x444431[_0x34f4('0x2b')]);if(_0x444431['name']){delete _0x444431[_0x34f4('0x2c')];}_0x2bdb2b[_0x34f4('0x1d')](_0x25de2f)[_0x34f4('0x2d')](_0x444431);};}exports[_0x34f4('0x2e')]=function(_0x567959,_0xd66127){var _0x498bf0={},_0x237bc1={},_0x3e2796={'count':0x0,'rows':[]};var _0x4d3270=_[_0x34f4('0x2f')](db[_0x34f4('0x30')][_0x34f4('0x31')],function(_0x14ca1c){return{'name':_0x14ca1c['fieldName'],'type':_0x14ca1c[_0x34f4('0x32')][_0x34f4('0x33')]};});_0x237bc1[_0x34f4('0x34')]=_[_0x34f4('0x2f')](_0x4d3270,_0x34f4('0x2c'));_0x237bc1[_0x34f4('0x35')]=_['keys'](_0x567959['query']);_0x237bc1['filters']=_[_0x34f4('0x36')](_0x237bc1['model'],_0x237bc1[_0x34f4('0x35')]);_0x498bf0[_0x34f4('0x37')]=_[_0x34f4('0x36')](_0x237bc1['model'],qs[_0x34f4('0x38')](_0x567959['query'][_0x34f4('0x38')]));_0x498bf0['attributes']=_0x498bf0[_0x34f4('0x37')][_0x34f4('0x39')]?_0x498bf0['attributes']:_0x237bc1[_0x34f4('0x34')];if(!_0x567959[_0x34f4('0x35')][_0x34f4('0x3a')](_0x34f4('0x3b'))){_0x498bf0['limit']=qs['limit'](_0x567959[_0x34f4('0x35')][_0x34f4('0x21')]);_0x498bf0['offset']=qs[_0x34f4('0x23')](_0x567959['query'][_0x34f4('0x23')]);}_0x498bf0[_0x34f4('0x3c')]=qs[_0x34f4('0x3d')](_0x567959[_0x34f4('0x35')][_0x34f4('0x3d')]);_0x498bf0[_0x34f4('0x3e')]=qs[_0x34f4('0x3f')](_[_0x34f4('0x40')](_0x567959['query'],_0x237bc1['filters']),_0x4d3270);if(_0x567959[_0x34f4('0x35')][_0x34f4('0x41')]){_0x498bf0['where']=_['merge'](_0x498bf0[_0x34f4('0x3e')],{'$or':_[_0x34f4('0x2f')](_0x4d3270,function(_0x42873a){if(_0x42873a[_0x34f4('0x32')]!=='VIRTUAL'){var _0x1ce798={};_0x1ce798[_0x42873a['name']]={'$like':'%'+_0x567959[_0x34f4('0x35')]['filter']+'%'};return _0x1ce798;}})});}_0x498bf0=_[_0x34f4('0x42')]({},_0x498bf0,_0x567959['options']);var _0x246a3f={'where':_0x498bf0[_0x34f4('0x3e')]};return db[_0x34f4('0x30')][_0x34f4('0x22')](_0x246a3f)[_0x34f4('0x28')](function(_0x4ef1e8){_0x3e2796[_0x34f4('0x22')]=_0x4ef1e8;if(_0x567959[_0x34f4('0x35')][_0x34f4('0x43')]){_0x498bf0[_0x34f4('0x44')]=[{'all':!![]}];}return db[_0x34f4('0x30')]['findAll'](_0x498bf0);})[_0x34f4('0x28')](function(_0x2b1b02){_0x3e2796[_0x34f4('0x45')]=_0x2b1b02;return _0x3e2796;})[_0x34f4('0x28')](respondWithFilteredResult(_0xd66127,_0x498bf0))[_0x34f4('0x46')](handleError(_0xd66127,null));};exports['show']=function(_0x4feade,_0x584748){var _0x32cf33={'raw':![],'where':{'id':_0x4feade[_0x34f4('0x47')]['id']}},_0x163cb3={};_0x163cb3['model']=_['keys'](db[_0x34f4('0x30')][_0x34f4('0x31')]);_0x163cb3[_0x34f4('0x35')]=_[_0x34f4('0x48')](_0x4feade['query']);_0x163cb3['filters']=_[_0x34f4('0x36')](_0x163cb3[_0x34f4('0x34')],_0x163cb3[_0x34f4('0x35')]);_0x32cf33['attributes']=_[_0x34f4('0x36')](_0x163cb3['model'],qs[_0x34f4('0x38')](_0x4feade[_0x34f4('0x35')][_0x34f4('0x38')]));_0x32cf33[_0x34f4('0x37')]=_0x32cf33[_0x34f4('0x37')]['length']?_0x32cf33[_0x34f4('0x37')]:_0x163cb3[_0x34f4('0x34')];if(_0x4feade[_0x34f4('0x35')][_0x34f4('0x43')]){_0x32cf33[_0x34f4('0x44')]=[{'all':!![]}];}_0x32cf33=_[_0x34f4('0x42')]({},_0x32cf33,_0x4feade[_0x34f4('0x49')]);return db['VtigerAccount'][_0x34f4('0x4a')](_0x32cf33)[_0x34f4('0x28')](handleEntityNotFound(_0x584748,null))[_0x34f4('0x28')](respondWithResult(_0x584748,null))[_0x34f4('0x46')](handleError(_0x584748,null));};exports[_0x34f4('0x4b')]=function(_0x55c561,_0x3bbdc9){return db[_0x34f4('0x30')][_0x34f4('0x4b')](_0x55c561[_0x34f4('0x4c')],{})[_0x34f4('0x28')](respondWithResult(_0x3bbdc9,0xc9))['catch'](handleError(_0x3bbdc9,null));};exports[_0x34f4('0x4d')]=function(_0x578a0e,_0x5e1df7){if(_0x578a0e['body']['id']){delete _0x578a0e[_0x34f4('0x4c')]['id'];}return db['VtigerAccount'][_0x34f4('0x4a')]({'where':{'id':_0x578a0e[_0x34f4('0x47')]['id']}})[_0x34f4('0x28')](handleEntityNotFound(_0x5e1df7,null))['then'](saveUpdates(_0x578a0e[_0x34f4('0x4c')],null))[_0x34f4('0x28')](respondWithResult(_0x5e1df7,null))[_0x34f4('0x46')](handleError(_0x5e1df7,null));};exports['destroy']=function(_0x2bbdd9,_0x194f00){return db['VtigerAccount'][_0x34f4('0x4a')]({'where':{'id':_0x2bbdd9[_0x34f4('0x47')]['id']}})['then'](handleEntityNotFound(_0x194f00,null))[_0x34f4('0x28')](removeEntity(_0x194f00,null))[_0x34f4('0x46')](handleError(_0x194f00,null));};exports[_0x34f4('0x4e')]=function(_0x36f4e2,_0x3dd394,_0x27975f){var _0x594dcc={};var _0x4b4af0={};var _0x2f7054;var _0x405bd6;return db['VtigerAccount'][_0x34f4('0x4f')]({'where':{'id':_0x36f4e2[_0x34f4('0x47')]['id']}})[_0x34f4('0x28')](handleEntityNotFound(_0x3dd394,null))[_0x34f4('0x28')](function(_0x4e6974){if(_0x4e6974){_0x2f7054=_0x4e6974;_0x4b4af0[_0x34f4('0x34')]=_[_0x34f4('0x48')](db[_0x34f4('0x50')][_0x34f4('0x31')]);_0x4b4af0[_0x34f4('0x35')]=_['keys'](_0x36f4e2['query']);_0x4b4af0[_0x34f4('0x3f')]=_[_0x34f4('0x36')](_0x4b4af0['model'],_0x4b4af0[_0x34f4('0x35')]);_0x594dcc[_0x34f4('0x37')]=_[_0x34f4('0x36')](_0x4b4af0[_0x34f4('0x34')],qs['fields'](_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x38')]));_0x594dcc[_0x34f4('0x37')]=_0x594dcc[_0x34f4('0x37')][_0x34f4('0x39')]?_0x594dcc[_0x34f4('0x37')]:_0x4b4af0[_0x34f4('0x34')];_0x594dcc[_0x34f4('0x3c')]=qs[_0x34f4('0x3d')](_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x3d')]);_0x594dcc[_0x34f4('0x3e')]=qs[_0x34f4('0x3f')](_[_0x34f4('0x40')](_0x36f4e2['query'],_0x4b4af0[_0x34f4('0x3f')]));if(_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x41')]){_0x594dcc[_0x34f4('0x3e')]=_[_0x34f4('0x42')](_0x594dcc['where'],{'$or':_[_0x34f4('0x2f')](_0x594dcc[_0x34f4('0x37')],function(_0x2a6eba){var _0x4ef8df={};_0x4ef8df[_0x2a6eba]={'$like':'%'+_0x36f4e2[_0x34f4('0x35')]['filter']+'%'};return _0x4ef8df;})});}_0x594dcc=_[_0x34f4('0x42')]({},_0x594dcc,_0x36f4e2[_0x34f4('0x49')]);return _0x2f7054['getConfigurations'](_0x594dcc);}})[_0x34f4('0x28')](function(_0x4d3d86){if(_0x4d3d86){_0x405bd6=_0x4d3d86[_0x34f4('0x39')];if(!_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x3a')](_0x34f4('0x3b'))){_0x594dcc['limit']=qs[_0x34f4('0x21')](_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x21')]);_0x594dcc[_0x34f4('0x23')]=qs[_0x34f4('0x23')](_0x36f4e2[_0x34f4('0x35')][_0x34f4('0x23')]);}return _0x2f7054[_0x34f4('0x4e')](_0x594dcc);}})[_0x34f4('0x28')](function(_0x4ed274){if(_0x4ed274){return _0x4ed274?{'count':_0x405bd6,'rows':_0x4ed274}:null;}})[_0x34f4('0x28')](respondWithResult(_0x3dd394,null))[_0x34f4('0x46')](handleError(_0x3dd394,null));};exports['addConfiguration']=function(_0x40e7a1,_0xc5ba26,_0x42f12b){if(_0x40e7a1['body']['id']){delete _0x40e7a1[_0x34f4('0x4c')]['id'];}return db['VtigerAccount']['findOne']({'where':{'id':_0x40e7a1[_0x34f4('0x47')]['id']}})[_0x34f4('0x28')](handleEntityNotFound(_0xc5ba26,null))[_0x34f4('0x28')](function(_0x30f028){if(_0x30f028){_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x51')]=_0x30f028['id'];_0x40e7a1['body'][_0x34f4('0x52')]=integrations[_0x34f4('0x53')](_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x54')],_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x32')]);_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x55')]=integrations[_0x34f4('0x56')](_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x54')],_0x40e7a1[_0x34f4('0x4c')][_0x34f4('0x32')]);return db['VtigerConfiguration'][_0x34f4('0x4b')](_0x40e7a1['body'],{'include':[{'model':db[_0x34f4('0x57')],'as':_0x34f4('0x52')},{'model':db[_0x34f4('0x57')],'as':_0x34f4('0x55')}]});}return null;})['then'](respondWithResult(_0xc5ba26,null))[_0x34f4('0x46')](handleError(_0xc5ba26,null));};var md5=require(_0x34f4('0x58'));exports[_0x34f4('0x59')]=function(_0x17e983,_0x289129,_0x251d76){var _0x5a8f09=null;var _0x3c5a5a=null;var _0x359f5c=null;var _0x486063=null;var _0x308802='';return db['VtigerAccount']['findOne']({'where':{'id':_0x17e983['params']['id']},'attributes':['id',_0x34f4('0x2c'),'username',_0x34f4('0x5a'),_0x34f4('0x5b'),_0x34f4('0x5c'),_0x34f4('0x5d'),_0x34f4('0x5e')]})[_0x34f4('0x28')](handleEntityNotFound(_0x289129,null))[_0x34f4('0x28')](function(_0x34b471){if(_0x34b471){_0x5a8f09=_0x34b471[_0x34f4('0x5f')];_0x3c5a5a=_0x34b471['accessKey'];_0x359f5c=_0x34b471['moduleName'];_0x308802=_0x34b471[_0x34f4('0x5c')];var _0x322034=_0x308802[_0x34f4('0x60')](-0x1);if(_0x322034==='/'){_0x308802=_0x308802[_0x34f4('0x61')](0x0,_0x308802['lastIndexOf'](_0x322034));}_0x486063=util['format'](_0x34f4('0x62'),_0x308802);var _0x351561={'method':_0x34f4('0x63'),'uri':_0x486063,'qs':{'operation':'getchallenge','username':_0x34b471[_0x34f4('0x5f')]},'json':!![]};return rp(_0x351561);}})[_0x34f4('0x28')](function(_0x43c577){if(_0x43c577['success']){var _0x5323a8={'method':_0x34f4('0x64'),'uri':_0x486063,'form':{'operation':_0x34f4('0x65'),'username':_0x5a8f09,'accessKey':md5(_0x43c577[_0x34f4('0x66')][_0x34f4('0x67')]+_0x3c5a5a)},'json':!![]};return rp(_0x5323a8);}})[_0x34f4('0x28')](function(_0x5c1067){if(_0x5c1067[_0x34f4('0x68')]){var _0x57d5c7={'method':'GET','uri':_0x486063,'qs':{'operation':_0x34f4('0x69'),'username':_0x5a8f09,'sessionName':_0x5c1067[_0x34f4('0x66')]['sessionName'],'elementType':_0x359f5c},'json':!![]};return rp(_0x57d5c7);}})[_0x34f4('0x28')](function(_0x5730b6){if(_0x5730b6[_0x34f4('0x68')]){var _0xa38e7c=[_0x34f4('0x6a'),_0x34f4('0x6b'),_0x34f4('0x6c')];_['remove'](_0x5730b6[_0x34f4('0x66')]['fields'],function(_0xd71486){return _0xa38e7c[_0x34f4('0x6d')](_0xd71486[_0x34f4('0x32')][_0x34f4('0x2c')]);});_[_0x34f4('0x6e')](_0x5730b6[_0x34f4('0x66')]['fields'],function(_0x3877c8){return _0x3877c8[_0x34f4('0x6f')]===_0x34f4('0x70');});return{'count':_0x5730b6[_0x34f4('0x66')][_0x34f4('0x38')]['length'],'rows':_[_0x34f4('0x2f')](_0x5730b6[_0x34f4('0x66')][_0x34f4('0x38')],function(_0x456af5){return{'id':_0x456af5['name'],'name':_0x456af5[_0x34f4('0x71')],'custom':_[_0x34f4('0x72')](_0x456af5[_0x34f4('0x2c')],_0x34f4('0x73'))?!![]:![],'options':_0x456af5[_0x34f4('0x32')]['name']===_0x34f4('0x74')&&_0x456af5[_0x34f4('0x32')][_0x34f4('0x75')][_0x34f4('0x39')]>0x0?_[_0x34f4('0x2f')](_0x456af5[_0x34f4('0x32')][_0x34f4('0x75')],function(_0x1acaf8){return{'name':_0x1acaf8[_0x34f4('0x71')],'value':_0x1acaf8[_0x34f4('0x76')]};}):[]};})};}})[_0x34f4('0x28')](respondWithResult(_0x289129,null))[_0x34f4('0x46')](function(_0x44ae88){console[_0x34f4('0x77')]('vTiger\x20error:\x20'+_0x44ae88);var _0x3887b1=_0x17e983[_0x34f4('0x35')]['test']?0x1f4:_0x44ae88[_0x34f4('0x78')]||0x1f4;logger[_0x34f4('0x2a')](_0x34f4('0x79'),_0x34f4('0x59'),_0x3887b1,JSON[_0x34f4('0x7a')](_0x44ae88));delete _0x44ae88['name'];if(_0x3887b1===0x191){_0x3887b1=0x190;}_0x289129[_0x34f4('0x1d')](_0x3887b1)[_0x34f4('0x2d')](_0x17e983['query'][_0x34f4('0x7b')]?{'message':'Wrong\x20credentials','statusCode':_0x44ae88[_0x34f4('0x78')]}:_0x44ae88);});};
\ No newline at end of file
index b34849a..d3b94d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de2=['exports','define','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes'];(function(_0x1bd2fa,_0x34735f){var _0x392f3f=function(_0x309d26){while(--_0x309d26){_0x1bd2fa['push'](_0x1bd2fa['shift']());}};_0x392f3f(++_0x34735f);}(_0x6de2,0x152));var _0x26de=function(_0x43d87d,_0x279baa){_0x43d87d=_0x43d87d-0x0;var _0x1d7356=_0x6de2[_0x43d87d];return _0x1d7356;};'use strict';var _=require(_0x26de('0x0'));var util=require(_0x26de('0x1'));var logger=require(_0x26de('0x2'))(_0x26de('0x3'));var moment=require(_0x26de('0x4'));var BPromise=require('bluebird');var rp=require(_0x26de('0x5'));var fs=require('fs');var path=require(_0x26de('0x6'));var rimraf=require(_0x26de('0x7'));var config=require(_0x26de('0x8'));var attributes=require(_0x26de('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x26de('0xa')]=function(_0x2b015f,_0x578486){return _0x2b015f[_0x26de('0xb')]('VtigerAccount',attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5d8=['path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','../../config/logger','api','bluebird','request-promise'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xd5d8,0x98));var _0x8d5d=function(_0x7e23cb,_0x424bbc){_0x7e23cb=_0x7e23cb-0x0;var _0x4aded9=_0xd5d8[_0x7e23cb];return _0x4aded9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8d5d('0x0'))(_0x8d5d('0x1'));var moment=require('moment');var BPromise=require(_0x8d5d('0x2'));var rp=require(_0x8d5d('0x3'));var fs=require('fs');var path=require(_0x8d5d('0x4'));var rimraf=require(_0x8d5d('0x5'));var config=require('../../config/environment');var attributes=require(_0x8d5d('0x6'));var integrations=require(_0x8d5d('0x7'));module[_0x8d5d('0x8')]=function(_0x5ed6bf,_0x186e9a){return _0x5ed6bf[_0x8d5d('0x9')](_0x8d5d('0xa'),attributes,{'tableName':_0x8d5d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7018c12..ed79b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','GetVtigerAccount','options','raw','attributes','include','map','model','ShowVtigerAccount','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x261b8a,_0x553ec4){_0x261b8a=_0x261b8a-0x0;var _0x3455e8=_0x4cf8[_0x261b8a];return _0x3455e8;};'use strict';var _=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var moment=require(_0x84cf('0x2'));var BPromise=require(_0x84cf('0x3'));var rs=require(_0x84cf('0x4'));var fs=require('fs');var Redis=require(_0x84cf('0x5'));var db=require(_0x84cf('0x6'))['db'];var utils=require(_0x84cf('0x7'));var logger=require(_0x84cf('0x8'))(_0x84cf('0x9'));var config=require(_0x84cf('0xa'));var jayson=require(_0x84cf('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x455345,_0x56c5cc,_0x15ba85){return new BPromise(function(_0x2c11b0,_0x51b84c){return client[_0x84cf('0xc')](_0x455345,_0x15ba85)[_0x84cf('0xd')](function(_0x489063){logger[_0x84cf('0xe')](_0x84cf('0xf'),_0x56c5cc,_0x84cf('0x10'));logger[_0x84cf('0x11')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x56c5cc,_0x84cf('0x10'),JSON[_0x84cf('0x12')](_0x489063));if(_0x489063['error']){if(_0x489063['error'][_0x84cf('0x13')]===0x1f4){logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);return _0x51b84c(_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);}logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);return _0x2c11b0(_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);}else{logger[_0x84cf('0xe')](_0x84cf('0xf'),_0x56c5cc,_0x84cf('0x10'));_0x2c11b0(_0x489063[_0x84cf('0x16')][_0x84cf('0x15')]);}})[_0x84cf('0x17')](function(_0x5b8ac8){logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x5b8ac8);_0x51b84c(_0x5b8ac8);});});}exports[_0x84cf('0x18')]=function(_0x1abe2d){var _0x1dad1a=this;return new Promise(function(_0x13ba16,_0xe6b5b6){return db['VtigerAccount']['findAll']({'raw':_0x1abe2d[_0x84cf('0x19')]?_0x1abe2d[_0x84cf('0x19')][_0x84cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x1abe2d[_0x84cf('0x19')]?_0x1abe2d[_0x84cf('0x19')]['where']||null:null,'attributes':_0x1abe2d[_0x84cf('0x19')]?_0x1abe2d[_0x84cf('0x19')][_0x84cf('0x1b')]||null:null,'limit':_0x1abe2d[_0x84cf('0x19')]?_0x1abe2d[_0x84cf('0x19')]['limit']||null:null,'include':_0x1abe2d[_0x84cf('0x19')]?_0x1abe2d[_0x84cf('0x19')][_0x84cf('0x1c')]?_[_0x84cf('0x1d')](_0x1abe2d[_0x84cf('0x19')][_0x84cf('0x1c')],function(_0x7feb4){return{'model':db[_0x7feb4['model']],'as':_0x7feb4['as'],'attributes':_0x7feb4[_0x84cf('0x1b')],'include':_0x7feb4[_0x84cf('0x1c')]?_[_0x84cf('0x1d')](_0x7feb4[_0x84cf('0x1c')],function(_0x1d220a){return{'model':db[_0x1d220a[_0x84cf('0x1e')]],'as':_0x1d220a['as'],'attributes':_0x1d220a[_0x84cf('0x1b')],'include':_0x1d220a[_0x84cf('0x1c')]?_[_0x84cf('0x1d')](_0x1d220a[_0x84cf('0x1c')],function(_0x5179c1){return{'model':db[_0x5179c1[_0x84cf('0x1e')]],'as':_0x5179c1['as'],'attributes':_0x5179c1[_0x84cf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x84cf('0xd')](function(_0x41a5db){logger['info'](_0x84cf('0x18'),_0x1abe2d);logger['debug'](_0x84cf('0x18'),_0x1abe2d,JSON[_0x84cf('0x12')](_0x41a5db));_0x13ba16(_0x41a5db);})[_0x84cf('0x17')](function(_0xc15298){logger[_0x84cf('0x14')](_0x84cf('0x18'),_0xc15298[_0x84cf('0x15')],_0x1abe2d);_0xe6b5b6(_0x1dad1a[_0x84cf('0x14')](0x1f4,_0xc15298[_0x84cf('0x15')]));});});};exports[_0x84cf('0x1f')]=function(_0x31dbf5){var _0x308f8f=this;return new Promise(function(_0x18243d,_0x44f16e){return db['VtigerAccount']['find']({'raw':_0x31dbf5[_0x84cf('0x19')]?_0x31dbf5[_0x84cf('0x19')][_0x84cf('0x1a')]===undefined?!![]:![]:!![],'where':_0x31dbf5[_0x84cf('0x19')]?_0x31dbf5[_0x84cf('0x19')][_0x84cf('0x20')]||null:null,'attributes':_0x31dbf5[_0x84cf('0x19')]?_0x31dbf5[_0x84cf('0x19')]['attributes']||null:null,'include':_0x31dbf5[_0x84cf('0x19')]?_0x31dbf5[_0x84cf('0x19')]['include']?_[_0x84cf('0x1d')](_0x31dbf5['options'][_0x84cf('0x1c')],function(_0x3ea5b9){return{'model':db[_0x3ea5b9[_0x84cf('0x1e')]],'as':_0x3ea5b9['as'],'attributes':_0x3ea5b9[_0x84cf('0x1b')],'include':_0x3ea5b9[_0x84cf('0x1c')]?_['map'](_0x3ea5b9[_0x84cf('0x1c')],function(_0x48309d){return{'model':db[_0x48309d['model']],'as':_0x48309d['as'],'attributes':_0x48309d[_0x84cf('0x1b')],'include':_0x48309d[_0x84cf('0x1c')]?_['map'](_0x48309d[_0x84cf('0x1c')],function(_0x263372){return{'model':db[_0x263372[_0x84cf('0x1e')]],'as':_0x263372['as'],'attributes':_0x263372[_0x84cf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x84cf('0xd')](function(_0x300f94){logger['info'](_0x84cf('0x1f'),_0x31dbf5);logger[_0x84cf('0x11')](_0x84cf('0x1f'),_0x31dbf5,JSON[_0x84cf('0x12')](_0x300f94));_0x18243d(_0x300f94);})[_0x84cf('0x17')](function(_0x2a8992){logger['error'](_0x84cf('0x1f'),_0x2a8992['message'],_0x31dbf5);_0x44f16e(_0x308f8f[_0x84cf('0x14')](0x1f4,_0x2a8992[_0x84cf('0x15')]));});});};
\ No newline at end of file
+var _0x5ec6=['util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','include','map','model','ShowVtigerAccount','find','lodash'];(function(_0xb32732,_0x14994a){var _0x2a6eb6=function(_0x426f26){while(--_0x426f26){_0xb32732['push'](_0xb32732['shift']());}};_0x2a6eb6(++_0x14994a);}(_0x5ec6,0x7f));var _0x65ec=function(_0x2d769f,_0x34e4b8){_0x2d769f=_0x2d769f-0x0;var _0x3675b6=_0x5ec6[_0x2d769f];return _0x3675b6;};'use strict';var _=require(_0x65ec('0x0'));var util=require(_0x65ec('0x1'));var moment=require(_0x65ec('0x2'));var BPromise=require('bluebird');var rs=require(_0x65ec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65ec('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x65ec('0x5'))('rpc');var config=require(_0x65ec('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x65ec('0x7')][_0x65ec('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5d6254,_0xb3600b,_0x266254){return new BPromise(function(_0x4f8653,_0x28aa8f){return client[_0x65ec('0x9')](_0x5d6254,_0x266254)[_0x65ec('0xa')](function(_0x50e5c4){logger['info'](_0x65ec('0xb'),_0xb3600b,'request\x20sent');logger[_0x65ec('0xc')](_0x65ec('0xd'),_0xb3600b,'request\x20sent',JSON[_0x65ec('0xe')](_0x50e5c4));if(_0x50e5c4[_0x65ec('0xf')]){if(_0x50e5c4['error'][_0x65ec('0x10')]===0x1f4){logger[_0x65ec('0xf')]('VtigerAccount,\x20%s,\x20%s',_0xb3600b,_0x50e5c4[_0x65ec('0xf')][_0x65ec('0x11')]);return _0x28aa8f(_0x50e5c4[_0x65ec('0xf')][_0x65ec('0x11')]);}logger[_0x65ec('0xf')](_0x65ec('0xb'),_0xb3600b,_0x50e5c4[_0x65ec('0xf')][_0x65ec('0x11')]);return _0x4f8653(_0x50e5c4['error'][_0x65ec('0x11')]);}else{logger[_0x65ec('0x12')](_0x65ec('0xb'),_0xb3600b,'request\x20sent');_0x4f8653(_0x50e5c4['result'][_0x65ec('0x11')]);}})[_0x65ec('0x13')](function(_0xa597d4){logger['error'](_0x65ec('0xb'),_0xb3600b,_0xa597d4);_0x28aa8f(_0xa597d4);});});}exports[_0x65ec('0x14')]=function(_0x1254f8){var _0xb4ed90=this;return new Promise(function(_0x29ebc4,_0xd81ed3){return db[_0x65ec('0x15')][_0x65ec('0x16')]({'raw':_0x1254f8[_0x65ec('0x17')]?_0x1254f8[_0x65ec('0x17')][_0x65ec('0x18')]===undefined?!![]:![]:!![],'where':_0x1254f8[_0x65ec('0x17')]?_0x1254f8[_0x65ec('0x17')][_0x65ec('0x19')]||null:null,'attributes':_0x1254f8[_0x65ec('0x17')]?_0x1254f8[_0x65ec('0x17')][_0x65ec('0x1a')]||null:null,'limit':_0x1254f8[_0x65ec('0x17')]?_0x1254f8[_0x65ec('0x17')]['limit']||null:null,'include':_0x1254f8[_0x65ec('0x17')]?_0x1254f8[_0x65ec('0x17')][_0x65ec('0x1b')]?_[_0x65ec('0x1c')](_0x1254f8[_0x65ec('0x17')][_0x65ec('0x1b')],function(_0x47288d){return{'model':db[_0x47288d['model']],'as':_0x47288d['as'],'attributes':_0x47288d[_0x65ec('0x1a')],'include':_0x47288d[_0x65ec('0x1b')]?_[_0x65ec('0x1c')](_0x47288d[_0x65ec('0x1b')],function(_0x288e66){return{'model':db[_0x288e66[_0x65ec('0x1d')]],'as':_0x288e66['as'],'attributes':_0x288e66[_0x65ec('0x1a')],'include':_0x288e66[_0x65ec('0x1b')]?_[_0x65ec('0x1c')](_0x288e66['include'],function(_0x10baef){return{'model':db[_0x10baef[_0x65ec('0x1d')]],'as':_0x10baef['as'],'attributes':_0x10baef[_0x65ec('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x65ec('0xa')](function(_0x4de451){logger[_0x65ec('0x12')]('GetVtigerAccount',_0x1254f8);logger[_0x65ec('0xc')](_0x65ec('0x14'),_0x1254f8,JSON[_0x65ec('0xe')](_0x4de451));_0x29ebc4(_0x4de451);})[_0x65ec('0x13')](function(_0x14431d){logger[_0x65ec('0xf')](_0x65ec('0x14'),_0x14431d[_0x65ec('0x11')],_0x1254f8);_0xd81ed3(_0xb4ed90[_0x65ec('0xf')](0x1f4,_0x14431d[_0x65ec('0x11')]));});});};exports[_0x65ec('0x1e')]=function(_0x4b435c){var _0x50d81f=this;return new Promise(function(_0x1d2e24,_0x5084af){return db[_0x65ec('0x15')][_0x65ec('0x1f')]({'raw':_0x4b435c['options']?_0x4b435c[_0x65ec('0x17')][_0x65ec('0x18')]===undefined?!![]:![]:!![],'where':_0x4b435c[_0x65ec('0x17')]?_0x4b435c[_0x65ec('0x17')]['where']||null:null,'attributes':_0x4b435c[_0x65ec('0x17')]?_0x4b435c[_0x65ec('0x17')][_0x65ec('0x1a')]||null:null,'include':_0x4b435c[_0x65ec('0x17')]?_0x4b435c[_0x65ec('0x17')][_0x65ec('0x1b')]?_[_0x65ec('0x1c')](_0x4b435c[_0x65ec('0x17')][_0x65ec('0x1b')],function(_0xff3f3c){return{'model':db[_0xff3f3c['model']],'as':_0xff3f3c['as'],'attributes':_0xff3f3c[_0x65ec('0x1a')],'include':_0xff3f3c[_0x65ec('0x1b')]?_['map'](_0xff3f3c[_0x65ec('0x1b')],function(_0x24a242){return{'model':db[_0x24a242[_0x65ec('0x1d')]],'as':_0x24a242['as'],'attributes':_0x24a242[_0x65ec('0x1a')],'include':_0x24a242[_0x65ec('0x1b')]?_[_0x65ec('0x1c')](_0x24a242[_0x65ec('0x1b')],function(_0x5afcfc){return{'model':db[_0x5afcfc[_0x65ec('0x1d')]],'as':_0x5afcfc['as'],'attributes':_0x5afcfc[_0x65ec('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x65ec('0xa')](function(_0x185447){logger['info'](_0x65ec('0x1e'),_0x4b435c);logger[_0x65ec('0xc')](_0x65ec('0x1e'),_0x4b435c,JSON[_0x65ec('0xe')](_0x185447));_0x1d2e24(_0x185447);})['catch'](function(_0x59a1c2){logger[_0x65ec('0xf')]('ShowVtigerAccount',_0x59a1c2[_0x65ec('0x11')],_0x4b435c);_0x5084af(_0x50d81f[_0x65ec('0xf')](0x1f4,_0x59a1c2['message']));});});};
\ No newline at end of file
index 382788c..a1298cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb93=['index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated'];(function(_0x455a16,_0x23330b){var _0x426bbd=function(_0x489ae8){while(--_0x489ae8){_0x455a16['push'](_0x455a16['shift']());}};_0x426bbd(++_0x23330b);}(_0xbb93,0x138));var _0x3bb9=function(_0x411224,_0x58e1e5){_0x411224=_0x411224-0x0;var _0x2fd181=_0xbb93[_0x411224];return _0x2fd181;};'use strict';var multer=require(_0x3bb9('0x0'));var util=require(_0x3bb9('0x1'));var path=require(_0x3bb9('0x2'));var timeout=require(_0x3bb9('0x3'));var express=require(_0x3bb9('0x4'));var router=express[_0x3bb9('0x5')]();var fs_extra=require(_0x3bb9('0x6'));var auth=require(_0x3bb9('0x7'));var interaction=require(_0x3bb9('0x8'));var config=require(_0x3bb9('0x9'));var controller=require(_0x3bb9('0xa'));router[_0x3bb9('0xb')]('/',auth[_0x3bb9('0xc')](),controller[_0x3bb9('0xd')]);router['get'](_0x3bb9('0xe'),auth[_0x3bb9('0xc')](),controller[_0x3bb9('0xf')]);router[_0x3bb9('0xb')](_0x3bb9('0x10'),auth[_0x3bb9('0xc')](),controller[_0x3bb9('0x11')]);router[_0x3bb9('0xb')](_0x3bb9('0x12'),auth[_0x3bb9('0xc')](),controller[_0x3bb9('0x13')]);router[_0x3bb9('0xb')]('/:id/descriptions',auth[_0x3bb9('0xc')](),controller[_0x3bb9('0x14')]);router[_0x3bb9('0x15')]('/',auth[_0x3bb9('0xc')](),controller['create']);router[_0x3bb9('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x3bb9('0x17')]);router[_0x3bb9('0x18')]('/:id',auth[_0x3bb9('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2d3d=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','/:id','update','delete'];(function(_0x4583d0,_0x24551f){var _0x7b3c5a=function(_0x14946a){while(--_0x14946a){_0x4583d0['push'](_0x4583d0['shift']());}};_0x7b3c5a(++_0x24551f);}(_0x2d3d,0x1e5));var _0xd2d3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d3d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xd2d3('0x0'));var util=require(_0xd2d3('0x1'));var path=require(_0xd2d3('0x2'));var timeout=require(_0xd2d3('0x3'));var express=require(_0xd2d3('0x4'));var router=express[_0xd2d3('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd2d3('0x6'));var config=require(_0xd2d3('0x7'));var controller=require('./intVtigerConfiguration.controller');router[_0xd2d3('0x8')]('/',auth[_0xd2d3('0x9')](),controller[_0xd2d3('0xa')]);router[_0xd2d3('0x8')]('/:id',auth[_0xd2d3('0x9')](),controller[_0xd2d3('0xb')]);router[_0xd2d3('0x8')](_0xd2d3('0xc'),auth[_0xd2d3('0x9')](),controller[_0xd2d3('0xd')]);router[_0xd2d3('0x8')](_0xd2d3('0xe'),auth[_0xd2d3('0x9')](),controller[_0xd2d3('0xf')]);router[_0xd2d3('0x8')]('/:id/descriptions',auth[_0xd2d3('0x9')](),controller[_0xd2d3('0x10')]);router['post']('/',auth[_0xd2d3('0x9')](),controller[_0xd2d3('0x11')]);router['put'](_0xd2d3('0x12'),auth['isAuthenticated'](),controller[_0xd2d3('0x13')]);router[_0xd2d3('0x14')](_0xd2d3('0x12'),auth[_0xd2d3('0x9')](),controller[_0xd2d3('0x15')]);module[_0xd2d3('0x16')]=router;
\ No newline at end of file
index 5dc136b..5df89a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2977=['STRING','sequelize','exports'];(function(_0x3d1ce2,_0x2a9d26){var _0x43c682=function(_0x1d3031){while(--_0x1d3031){_0x3d1ce2['push'](_0x3d1ce2['shift']());}};_0x43c682(++_0x2a9d26);}(_0x2977,0x12a));var _0x7297=function(_0x1f77c1,_0x219236){_0x1f77c1=_0x1f77c1-0x0;var _0x19a72d=_0x2977[_0x1f77c1];return _0x19a72d;};'use strict';var Sequelize=require(_0x7297('0x0'));module[_0x7297('0x1')]={'name':{'type':Sequelize[_0x7297('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xda3a=['STRING','sequelize','exports'];(function(_0x53d430,_0xd8e660){var _0x5dca28=function(_0x61c94f){while(--_0x61c94f){_0x53d430['push'](_0x53d430['shift']());}};_0x5dca28(++_0xd8e660);}(_0xda3a,0x1c0));var _0xada3=function(_0x2039ae,_0x5b09e5){_0x2039ae=_0x2039ae-0x0;var _0x286156=_0xda3a[_0x2039ae];return _0x286156;};'use strict';var Sequelize=require(_0xada3('0x0'));module[_0xada3('0x1')]={'name':{'type':Sequelize[_0xada3('0x2')]},'description':{'type':Sequelize[_0xada3('0x2')]}};
\ No newline at end of file
index 2e36dd8..2dd5c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d4=['getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','create','body','findOne','VtigerField','getFields'];(function(_0x46f3f8,_0x12c74b){var _0xbc57cd=function(_0x34df37){while(--_0x34df37){_0x46f3f8['push'](_0x46f3f8['shift']());}};_0xbc57cd(++_0x12c74b);}(_0xd1d4,0xfb));var _0x4d1d=function(_0xe73080,_0x24c56d){_0xe73080=_0xe73080-0x0;var _0x12cbc4=_0xd1d4[_0xe73080];return _0x12cbc4;};'use strict';var emlformat=require(_0x4d1d('0x0'));var rimraf=require(_0x4d1d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d1d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4d1d('0x3'));var Mustache=require(_0x4d1d('0x4'));var util=require(_0x4d1d('0x5'));var path=require(_0x4d1d('0x6'));var sox=require(_0x4d1d('0x7'));var csv=require(_0x4d1d('0x8'));var ejs=require(_0x4d1d('0x9'));var fs=require('fs');var fs_extra=require(_0x4d1d('0xa'));var _=require(_0x4d1d('0xb'));var squel=require(_0x4d1d('0xc'));var crypto=require(_0x4d1d('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4d1d('0x8'));var querystring=require(_0x4d1d('0xe'));var Papa=require('papaparse');var Redis=require(_0x4d1d('0xf'));var authService=require(_0x4d1d('0x10'));var qs=require(_0x4d1d('0x11'));var as=require(_0x4d1d('0x12'));var hardwareService=require(_0x4d1d('0x13'));var logger=require(_0x4d1d('0x14'))(_0x4d1d('0x15'));var utils=require(_0x4d1d('0x16'));var config=require(_0x4d1d('0x17'));var licenseUtil=require(_0x4d1d('0x18'));var db=require(_0x4d1d('0x19'))['db'];function respondWithStatusCode(_0xf8e311,_0x11115c){_0x11115c=_0x11115c||0xcc;return function(_0x515e43){if(_0x515e43){return _0xf8e311[_0x4d1d('0x1a')](_0x11115c);}return _0xf8e311[_0x4d1d('0x1b')](_0x11115c)[_0x4d1d('0x1c')]();};}function respondWithResult(_0x377ff7,_0x4fabbc){_0x4fabbc=_0x4fabbc||0xc8;return function(_0x58c1c0){if(_0x58c1c0){return _0x377ff7[_0x4d1d('0x1b')](_0x4fabbc)[_0x4d1d('0x1d')](_0x58c1c0);}};}function respondWithFilteredResult(_0x1db7a6,_0x569809){return function(_0x42ac80){if(_0x42ac80){var _0x460b3a=typeof _0x569809[_0x4d1d('0x1e')]===_0x4d1d('0x1f')&&typeof _0x569809['limit']==='undefined';var _0x4cec61=_0x42ac80[_0x4d1d('0x20')];var _0x83eb5a=_0x460b3a?0x0:_0x569809[_0x4d1d('0x1e')];var _0x38d465=_0x460b3a?_0x42ac80[_0x4d1d('0x20')]:_0x569809['offset']+_0x569809[_0x4d1d('0x21')];var _0x405dcd;if(_0x38d465>=_0x4cec61){_0x38d465=_0x4cec61;_0x405dcd=0xc8;}else{_0x405dcd=0xce;}_0x1db7a6[_0x4d1d('0x1b')](_0x405dcd);return _0x1db7a6[_0x4d1d('0x22')](_0x4d1d('0x23'),_0x83eb5a+'-'+_0x38d465+'/'+_0x4cec61)[_0x4d1d('0x1d')](_0x42ac80);}return null;};}function patchUpdates(_0x1a5dae){return function(_0x5a325c){try{jsonpatch[_0x4d1d('0x24')](_0x5a325c,_0x1a5dae,!![]);}catch(_0x4fcb5b){return BPromise[_0x4d1d('0x25')](_0x4fcb5b);}return _0x5a325c[_0x4d1d('0x26')]();};}function saveUpdates(_0x356d6f,_0xf1c555){return function(_0x2557b1){if(_0x2557b1){return _0x2557b1[_0x4d1d('0x27')](_0x356d6f)[_0x4d1d('0x28')](function(_0x4e4b7a){return _0x4e4b7a;});}return null;};}function removeEntity(_0x410916,_0x43d108){return function(_0x207472){if(_0x207472){return _0x207472[_0x4d1d('0x29')]()[_0x4d1d('0x28')](function(){_0x410916['status'](0xcc)[_0x4d1d('0x1c')]();});}};}function handleEntityNotFound(_0x45b17c,_0x33f17e){return function(_0x2a49a8){if(!_0x2a49a8){_0x45b17c[_0x4d1d('0x1a')](0x194);}return _0x2a49a8;};}function handleError(_0x5cf5f3,_0x30aa34){_0x30aa34=_0x30aa34||0x1f4;return function(_0x58ac25){logger[_0x4d1d('0x2a')](_0x58ac25[_0x4d1d('0x2b')]);if(_0x58ac25[_0x4d1d('0x2c')]){delete _0x58ac25[_0x4d1d('0x2c')];}_0x5cf5f3[_0x4d1d('0x1b')](_0x30aa34)[_0x4d1d('0x2d')](_0x58ac25);};}exports['index']=function(_0x666c88,_0x322e0f){var _0x276762={},_0x558888={},_0x3c84b9={'count':0x0,'rows':[]};var _0x380e9b=_['map'](db[_0x4d1d('0x2e')][_0x4d1d('0x2f')],function(_0x3bd19b){return{'name':_0x3bd19b[_0x4d1d('0x30')],'type':_0x3bd19b[_0x4d1d('0x31')][_0x4d1d('0x32')]};});_0x558888[_0x4d1d('0x33')]=_[_0x4d1d('0x34')](_0x380e9b,'name');_0x558888['query']=_[_0x4d1d('0x35')](_0x666c88[_0x4d1d('0x36')]);_0x558888['filters']=_[_0x4d1d('0x37')](_0x558888['model'],_0x558888['query']);_0x276762[_0x4d1d('0x38')]=_['intersection'](_0x558888[_0x4d1d('0x33')],qs['fields'](_0x666c88['query'][_0x4d1d('0x39')]));_0x276762[_0x4d1d('0x38')]=_0x276762[_0x4d1d('0x38')][_0x4d1d('0x3a')]?_0x276762['attributes']:_0x558888['model'];if(!_0x666c88[_0x4d1d('0x36')][_0x4d1d('0x3b')](_0x4d1d('0x3c'))){_0x276762[_0x4d1d('0x21')]=qs[_0x4d1d('0x21')](_0x666c88[_0x4d1d('0x36')]['limit']);_0x276762[_0x4d1d('0x1e')]=qs[_0x4d1d('0x1e')](_0x666c88[_0x4d1d('0x36')][_0x4d1d('0x1e')]);}_0x276762[_0x4d1d('0x3d')]=qs[_0x4d1d('0x3e')](_0x666c88['query'][_0x4d1d('0x3e')]);_0x276762[_0x4d1d('0x3f')]=qs[_0x4d1d('0x40')](_[_0x4d1d('0x41')](_0x666c88['query'],_0x558888[_0x4d1d('0x40')]),_0x380e9b);if(_0x666c88[_0x4d1d('0x36')]['filter']){_0x276762['where']=_[_0x4d1d('0x42')](_0x276762[_0x4d1d('0x3f')],{'$or':_['map'](_0x380e9b,function(_0x2ea2e3){if(_0x2ea2e3[_0x4d1d('0x31')]!==_0x4d1d('0x43')){var _0x3afac4={};_0x3afac4[_0x2ea2e3[_0x4d1d('0x2c')]]={'$like':'%'+_0x666c88[_0x4d1d('0x36')][_0x4d1d('0x44')]+'%'};return _0x3afac4;}})});}_0x276762=_[_0x4d1d('0x42')]({},_0x276762,_0x666c88[_0x4d1d('0x45')]);var _0x249ecc={'where':_0x276762[_0x4d1d('0x3f')]};return db['VtigerConfiguration'][_0x4d1d('0x20')](_0x249ecc)[_0x4d1d('0x28')](function(_0x44e773){_0x3c84b9['count']=_0x44e773;if(_0x666c88[_0x4d1d('0x36')][_0x4d1d('0x46')]){_0x276762[_0x4d1d('0x47')]=[{'all':!![]}];}return db[_0x4d1d('0x2e')][_0x4d1d('0x48')](_0x276762);})[_0x4d1d('0x28')](function(_0x5c8a9b){_0x3c84b9[_0x4d1d('0x49')]=_0x5c8a9b;return _0x3c84b9;})[_0x4d1d('0x28')](respondWithFilteredResult(_0x322e0f,_0x276762))[_0x4d1d('0x4a')](handleError(_0x322e0f,null));};exports['show']=function(_0x4bce4e,_0x70394d){var _0x50b4d9={'raw':![],'where':{'id':_0x4bce4e[_0x4d1d('0x4b')]['id']}},_0x8bd0b6={};_0x8bd0b6['model']=_['keys'](db[_0x4d1d('0x2e')][_0x4d1d('0x2f')]);_0x8bd0b6[_0x4d1d('0x36')]=_[_0x4d1d('0x35')](_0x4bce4e[_0x4d1d('0x36')]);_0x8bd0b6['filters']=_[_0x4d1d('0x37')](_0x8bd0b6[_0x4d1d('0x33')],_0x8bd0b6[_0x4d1d('0x36')]);_0x50b4d9[_0x4d1d('0x38')]=_['intersection'](_0x8bd0b6[_0x4d1d('0x33')],qs[_0x4d1d('0x39')](_0x4bce4e[_0x4d1d('0x36')][_0x4d1d('0x39')]));_0x50b4d9[_0x4d1d('0x38')]=_0x50b4d9[_0x4d1d('0x38')]['length']?_0x50b4d9[_0x4d1d('0x38')]:_0x8bd0b6[_0x4d1d('0x33')];if(_0x4bce4e[_0x4d1d('0x36')][_0x4d1d('0x46')]){_0x50b4d9[_0x4d1d('0x47')]=[{'all':!![]}];}_0x50b4d9=_[_0x4d1d('0x42')]({},_0x50b4d9,_0x4bce4e[_0x4d1d('0x45')]);return db[_0x4d1d('0x2e')]['find'](_0x50b4d9)[_0x4d1d('0x28')](handleEntityNotFound(_0x70394d,null))['then'](respondWithResult(_0x70394d,null))[_0x4d1d('0x4a')](handleError(_0x70394d,null));};exports[_0x4d1d('0x4c')]=function(_0x385d38,_0x5e2915){return db['VtigerConfiguration'][_0x4d1d('0x4c')](_0x385d38[_0x4d1d('0x4d')],{})['then'](respondWithResult(_0x5e2915,0xc9))[_0x4d1d('0x4a')](handleError(_0x5e2915,null));};exports[_0x4d1d('0x27')]=function(_0x143e13,_0x4719da){if(_0x143e13[_0x4d1d('0x4d')]['id']){delete _0x143e13['body']['id'];}return db[_0x4d1d('0x2e')]['find']({'where':{'id':_0x143e13['params']['id']}})[_0x4d1d('0x28')](handleEntityNotFound(_0x4719da,null))[_0x4d1d('0x28')](saveUpdates(_0x143e13[_0x4d1d('0x4d')],null))[_0x4d1d('0x28')](respondWithResult(_0x4719da,null))[_0x4d1d('0x4a')](handleError(_0x4719da,null));};exports[_0x4d1d('0x29')]=function(_0x47d4b1,_0x2f9da0){return db[_0x4d1d('0x2e')]['find']({'where':{'id':_0x47d4b1[_0x4d1d('0x4b')]['id']}})[_0x4d1d('0x28')](handleEntityNotFound(_0x2f9da0,null))[_0x4d1d('0x28')](removeEntity(_0x2f9da0,null))[_0x4d1d('0x4a')](handleError(_0x2f9da0,null));};exports['getFields']=function(_0x30378f,_0xfeca9e,_0x2fd491){var _0x12b9ce={};var _0x16d63b={};var _0x61acde;var _0x58a58c;return db['VtigerConfiguration'][_0x4d1d('0x4e')]({'where':{'id':_0x30378f[_0x4d1d('0x4b')]['id']}})[_0x4d1d('0x28')](handleEntityNotFound(_0xfeca9e,null))[_0x4d1d('0x28')](function(_0x4da68f){if(_0x4da68f){_0x61acde=_0x4da68f;_0x16d63b['model']=_[_0x4d1d('0x35')](db[_0x4d1d('0x4f')][_0x4d1d('0x2f')]);_0x16d63b[_0x4d1d('0x36')]=_[_0x4d1d('0x35')](_0x30378f[_0x4d1d('0x36')]);_0x16d63b[_0x4d1d('0x40')]=_[_0x4d1d('0x37')](_0x16d63b[_0x4d1d('0x33')],_0x16d63b[_0x4d1d('0x36')]);_0x12b9ce[_0x4d1d('0x38')]=_['intersection'](_0x16d63b[_0x4d1d('0x33')],qs[_0x4d1d('0x39')](_0x30378f[_0x4d1d('0x36')][_0x4d1d('0x39')]));_0x12b9ce[_0x4d1d('0x38')]=_0x12b9ce[_0x4d1d('0x38')][_0x4d1d('0x3a')]?_0x12b9ce[_0x4d1d('0x38')]:_0x16d63b['model'];_0x12b9ce[_0x4d1d('0x3d')]=qs[_0x4d1d('0x3e')](_0x30378f['query'][_0x4d1d('0x3e')]);_0x12b9ce[_0x4d1d('0x3f')]=qs[_0x4d1d('0x40')](_['pick'](_0x30378f[_0x4d1d('0x36')],_0x16d63b[_0x4d1d('0x40')]));if(_0x30378f[_0x4d1d('0x36')][_0x4d1d('0x44')]){_0x12b9ce[_0x4d1d('0x3f')]=_[_0x4d1d('0x42')](_0x12b9ce['where'],{'$or':_['map'](_0x12b9ce[_0x4d1d('0x38')],function(_0x4f5ba5){var _0xc48d0a={};_0xc48d0a[_0x4f5ba5]={'$like':'%'+_0x30378f[_0x4d1d('0x36')][_0x4d1d('0x44')]+'%'};return _0xc48d0a;})});}_0x12b9ce=_[_0x4d1d('0x42')]({},_0x12b9ce,_0x30378f[_0x4d1d('0x45')]);return _0x61acde['getFields'](_0x12b9ce);}})[_0x4d1d('0x28')](function(_0x4768fe){if(_0x4768fe){_0x58a58c=_0x4768fe[_0x4d1d('0x3a')];if(!_0x30378f['query'][_0x4d1d('0x3b')](_0x4d1d('0x3c'))){_0x12b9ce[_0x4d1d('0x21')]=qs[_0x4d1d('0x21')](_0x30378f[_0x4d1d('0x36')][_0x4d1d('0x21')]);_0x12b9ce[_0x4d1d('0x1e')]=qs[_0x4d1d('0x1e')](_0x30378f['query'][_0x4d1d('0x1e')]);}return _0x61acde[_0x4d1d('0x50')](_0x12b9ce);}})[_0x4d1d('0x28')](function(_0x2ab3ef){if(_0x2ab3ef){return _0x2ab3ef?{'count':_0x58a58c,'rows':_0x2ab3ef}:null;}})[_0x4d1d('0x28')](respondWithResult(_0xfeca9e,null))[_0x4d1d('0x4a')](handleError(_0xfeca9e,null));};exports[_0x4d1d('0x51')]=function(_0x352c77,_0xd2df36,_0x57cf3e){var _0x4c5f7e={};var _0x534db6={};var _0x9a01e7;var _0x558756;return db[_0x4d1d('0x2e')]['findOne']({'where':{'id':_0x352c77[_0x4d1d('0x4b')]['id']}})[_0x4d1d('0x28')](handleEntityNotFound(_0xd2df36,null))[_0x4d1d('0x28')](function(_0x6b4b4c){if(_0x6b4b4c){_0x9a01e7=_0x6b4b4c;_0x534db6[_0x4d1d('0x33')]=_[_0x4d1d('0x35')](db['VtigerField'][_0x4d1d('0x2f')]);_0x534db6[_0x4d1d('0x36')]=_['keys'](_0x352c77['query']);_0x534db6[_0x4d1d('0x40')]=_['intersection'](_0x534db6[_0x4d1d('0x33')],_0x534db6[_0x4d1d('0x36')]);_0x4c5f7e[_0x4d1d('0x38')]=_['intersection'](_0x534db6[_0x4d1d('0x33')],qs[_0x4d1d('0x39')](_0x352c77[_0x4d1d('0x36')][_0x4d1d('0x39')]));_0x4c5f7e['attributes']=_0x4c5f7e[_0x4d1d('0x38')][_0x4d1d('0x3a')]?_0x4c5f7e[_0x4d1d('0x38')]:_0x534db6[_0x4d1d('0x33')];_0x4c5f7e[_0x4d1d('0x3d')]=qs[_0x4d1d('0x3e')](_0x352c77[_0x4d1d('0x36')][_0x4d1d('0x3e')]);_0x4c5f7e[_0x4d1d('0x3f')]=qs[_0x4d1d('0x40')](_[_0x4d1d('0x41')](_0x352c77[_0x4d1d('0x36')],_0x534db6['filters']));if(_0x352c77['query'][_0x4d1d('0x44')]){_0x4c5f7e['where']=_[_0x4d1d('0x42')](_0x4c5f7e[_0x4d1d('0x3f')],{'$or':_[_0x4d1d('0x34')](_0x4c5f7e[_0x4d1d('0x38')],function(_0x16f71a){var _0x1e99c5={};_0x1e99c5[_0x16f71a]={'$like':'%'+_0x352c77[_0x4d1d('0x36')]['filter']+'%'};return _0x1e99c5;})});}_0x4c5f7e=_[_0x4d1d('0x42')]({},_0x4c5f7e,_0x352c77[_0x4d1d('0x45')]);return _0x9a01e7[_0x4d1d('0x51')](_0x4c5f7e);}})['then'](function(_0x6f8b8f){if(_0x6f8b8f){_0x558756=_0x6f8b8f[_0x4d1d('0x3a')];if(!_0x352c77[_0x4d1d('0x36')]['hasOwnProperty']('nolimit')){_0x4c5f7e[_0x4d1d('0x21')]=qs['limit'](_0x352c77[_0x4d1d('0x36')][_0x4d1d('0x21')]);_0x4c5f7e[_0x4d1d('0x1e')]=qs['offset'](_0x352c77[_0x4d1d('0x36')][_0x4d1d('0x1e')]);}return _0x9a01e7[_0x4d1d('0x51')](_0x4c5f7e);}})['then'](function(_0xdc7dee){if(_0xdc7dee){return _0xdc7dee?{'count':_0x558756,'rows':_0xdc7dee}:null;}})[_0x4d1d('0x28')](respondWithResult(_0xd2df36,null))['catch'](handleError(_0xd2df36,null));};exports[_0x4d1d('0x52')]=function(_0x5dad19,_0x4bb7bf,_0x4b592f){var _0x48531f={};var _0x532ef3={};var _0x2886c4;var _0x4018da;return db[_0x4d1d('0x2e')][_0x4d1d('0x4e')]({'where':{'id':_0x5dad19['params']['id']}})[_0x4d1d('0x28')](handleEntityNotFound(_0x4bb7bf,null))[_0x4d1d('0x28')](function(_0x4ed9c4){if(_0x4ed9c4){_0x2886c4=_0x4ed9c4;_0x532ef3[_0x4d1d('0x33')]=_[_0x4d1d('0x35')](db['VtigerField'][_0x4d1d('0x2f')]);_0x532ef3['query']=_[_0x4d1d('0x35')](_0x5dad19[_0x4d1d('0x36')]);_0x532ef3[_0x4d1d('0x40')]=_[_0x4d1d('0x37')](_0x532ef3[_0x4d1d('0x33')],_0x532ef3[_0x4d1d('0x36')]);_0x48531f[_0x4d1d('0x38')]=_[_0x4d1d('0x37')](_0x532ef3[_0x4d1d('0x33')],qs[_0x4d1d('0x39')](_0x5dad19[_0x4d1d('0x36')]['fields']));_0x48531f[_0x4d1d('0x38')]=_0x48531f[_0x4d1d('0x38')]['length']?_0x48531f[_0x4d1d('0x38')]:_0x532ef3['model'];_0x48531f[_0x4d1d('0x3d')]=qs['sort'](_0x5dad19['query'][_0x4d1d('0x3e')]);_0x48531f[_0x4d1d('0x3f')]=qs[_0x4d1d('0x40')](_[_0x4d1d('0x41')](_0x5dad19[_0x4d1d('0x36')],_0x532ef3[_0x4d1d('0x40')]));if(_0x5dad19['query'][_0x4d1d('0x44')]){_0x48531f['where']=_[_0x4d1d('0x42')](_0x48531f['where'],{'$or':_[_0x4d1d('0x34')](_0x48531f[_0x4d1d('0x38')],function(_0x1ac8b4){var _0x1a5d73={};_0x1a5d73[_0x1ac8b4]={'$like':'%'+_0x5dad19[_0x4d1d('0x36')][_0x4d1d('0x44')]+'%'};return _0x1a5d73;})});}_0x48531f=_[_0x4d1d('0x42')]({},_0x48531f,_0x5dad19[_0x4d1d('0x45')]);return _0x2886c4['getDescriptions'](_0x48531f);}})[_0x4d1d('0x28')](function(_0x493046){if(_0x493046){_0x4018da=_0x493046[_0x4d1d('0x3a')];if(!_0x5dad19['query'][_0x4d1d('0x3b')](_0x4d1d('0x3c'))){_0x48531f[_0x4d1d('0x21')]=qs[_0x4d1d('0x21')](_0x5dad19[_0x4d1d('0x36')]['limit']);_0x48531f[_0x4d1d('0x1e')]=qs['offset'](_0x5dad19[_0x4d1d('0x36')][_0x4d1d('0x1e')]);}return _0x2886c4[_0x4d1d('0x52')](_0x48531f);}})['then'](function(_0xf953e){if(_0xf953e){return _0xf953e?{'count':_0x4018da,'rows':_0xf953e}:null;}})['then'](respondWithResult(_0x4bb7bf,null))[_0x4d1d('0x4a')](handleError(_0x4bb7bf,null));};
\ No newline at end of file
+var _0xc2e1=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','destroy','then','end','error','name','index','VtigerConfiguration','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','create','body','find','getFields','VtigerField','getSubjects','getDescriptions','findOne','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js'];(function(_0x47a8c0,_0x4d5931){var _0x551fa1=function(_0x45ac5a){while(--_0x45ac5a){_0x47a8c0['push'](_0x47a8c0['shift']());}};_0x551fa1(++_0x4d5931);}(_0xc2e1,0x1b3));var _0x1c2e=function(_0x38bc94,_0x49f0b7){_0x38bc94=_0x38bc94-0x0;var _0x15564c=_0xc2e1[_0x38bc94];return _0x15564c;};'use strict';var emlformat=require(_0x1c2e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1c2e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1c2e('0x2'));var BPromise=require(_0x1c2e('0x3'));var Mustache=require(_0x1c2e('0x4'));var util=require(_0x1c2e('0x5'));var path=require(_0x1c2e('0x6'));var sox=require(_0x1c2e('0x7'));var csv=require(_0x1c2e('0x8'));var ejs=require(_0x1c2e('0x9'));var fs=require('fs');var fs_extra=require(_0x1c2e('0xa'));var _=require(_0x1c2e('0xb'));var squel=require('squel');var crypto=require(_0x1c2e('0xc'));var jsforce=require(_0x1c2e('0xd'));var deskjs=require(_0x1c2e('0xe'));var toCsv=require(_0x1c2e('0x8'));var querystring=require('querystring');var Papa=require(_0x1c2e('0xf'));var Redis=require(_0x1c2e('0x10'));var authService=require(_0x1c2e('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1c2e('0x12'));var logger=require(_0x1c2e('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x1c2e('0x14'));var licenseUtil=require(_0x1c2e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x175773,_0x28e33c){_0x28e33c=_0x28e33c||0xcc;return function(_0x291734){if(_0x291734){return _0x175773[_0x1c2e('0x16')](_0x28e33c);}return _0x175773[_0x1c2e('0x17')](_0x28e33c)['end']();};}function respondWithResult(_0x85eff5,_0x32a6c0){_0x32a6c0=_0x32a6c0||0xc8;return function(_0x2e9709){if(_0x2e9709){return _0x85eff5[_0x1c2e('0x17')](_0x32a6c0)['json'](_0x2e9709);}};}function respondWithFilteredResult(_0xdcd657,_0x44ea76){return function(_0x2878b0){if(_0x2878b0){var _0x50c5f6=typeof _0x44ea76[_0x1c2e('0x18')]==='undefined'&&typeof _0x44ea76['limit']===_0x1c2e('0x19');var _0xb02ae=_0x2878b0['count'];var _0x3f10f3=_0x50c5f6?0x0:_0x44ea76[_0x1c2e('0x18')];var _0x351ba4=_0x50c5f6?_0x2878b0[_0x1c2e('0x1a')]:_0x44ea76[_0x1c2e('0x18')]+_0x44ea76[_0x1c2e('0x1b')];var _0x26d7b6;if(_0x351ba4>=_0xb02ae){_0x351ba4=_0xb02ae;_0x26d7b6=0xc8;}else{_0x26d7b6=0xce;}_0xdcd657['status'](_0x26d7b6);return _0xdcd657['set']('Content-Range',_0x3f10f3+'-'+_0x351ba4+'/'+_0xb02ae)[_0x1c2e('0x1c')](_0x2878b0);}return null;};}function patchUpdates(_0x431a6a){return function(_0x49c1a3){try{jsonpatch[_0x1c2e('0x1d')](_0x49c1a3,_0x431a6a,!![]);}catch(_0x2f0b02){return BPromise[_0x1c2e('0x1e')](_0x2f0b02);}return _0x49c1a3['save']();};}function saveUpdates(_0x3a14b2,_0x35de4c){return function(_0x51a151){if(_0x51a151){return _0x51a151[_0x1c2e('0x1f')](_0x3a14b2)['then'](function(_0x340e7b){return _0x340e7b;});}return null;};}function removeEntity(_0x553bbf,_0x542ae1){return function(_0xa79800){if(_0xa79800){return _0xa79800[_0x1c2e('0x20')]()[_0x1c2e('0x21')](function(){_0x553bbf[_0x1c2e('0x17')](0xcc)[_0x1c2e('0x22')]();});}};}function handleEntityNotFound(_0x2c7d15,_0x3992c6){return function(_0x348077){if(!_0x348077){_0x2c7d15['sendStatus'](0x194);}return _0x348077;};}function handleError(_0x4d7e76,_0x4877a3){_0x4877a3=_0x4877a3||0x1f4;return function(_0x227e56){logger[_0x1c2e('0x23')](_0x227e56['stack']);if(_0x227e56[_0x1c2e('0x24')]){delete _0x227e56[_0x1c2e('0x24')];}_0x4d7e76[_0x1c2e('0x17')](_0x4877a3)['send'](_0x227e56);};}exports[_0x1c2e('0x25')]=function(_0x3b0f83,_0x11a611){var _0x130f55={},_0x53f3f9={},_0x2a66da={'count':0x0,'rows':[]};var _0x53d345=_['map'](db[_0x1c2e('0x26')][_0x1c2e('0x27')],function(_0x4dad71){return{'name':_0x4dad71['fieldName'],'type':_0x4dad71[_0x1c2e('0x28')][_0x1c2e('0x29')]};});_0x53f3f9[_0x1c2e('0x2a')]=_[_0x1c2e('0x2b')](_0x53d345,'name');_0x53f3f9[_0x1c2e('0x2c')]=_[_0x1c2e('0x2d')](_0x3b0f83['query']);_0x53f3f9[_0x1c2e('0x2e')]=_[_0x1c2e('0x2f')](_0x53f3f9[_0x1c2e('0x2a')],_0x53f3f9['query']);_0x130f55[_0x1c2e('0x30')]=_[_0x1c2e('0x2f')](_0x53f3f9[_0x1c2e('0x2a')],qs[_0x1c2e('0x31')](_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x31')]));_0x130f55[_0x1c2e('0x30')]=_0x130f55[_0x1c2e('0x30')][_0x1c2e('0x32')]?_0x130f55['attributes']:_0x53f3f9[_0x1c2e('0x2a')];if(!_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x33')](_0x1c2e('0x34'))){_0x130f55[_0x1c2e('0x1b')]=qs[_0x1c2e('0x1b')](_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x1b')]);_0x130f55[_0x1c2e('0x18')]=qs['offset'](_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x18')]);}_0x130f55[_0x1c2e('0x35')]=qs[_0x1c2e('0x36')](_0x3b0f83['query'][_0x1c2e('0x36')]);_0x130f55[_0x1c2e('0x37')]=qs[_0x1c2e('0x2e')](_[_0x1c2e('0x38')](_0x3b0f83[_0x1c2e('0x2c')],_0x53f3f9[_0x1c2e('0x2e')]),_0x53d345);if(_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x39')]){_0x130f55[_0x1c2e('0x37')]=_['merge'](_0x130f55[_0x1c2e('0x37')],{'$or':_[_0x1c2e('0x2b')](_0x53d345,function(_0x432998){if(_0x432998[_0x1c2e('0x28')]!==_0x1c2e('0x3a')){var _0x46deb1={};_0x46deb1[_0x432998['name']]={'$like':'%'+_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x39')]+'%'};return _0x46deb1;}})});}_0x130f55=_[_0x1c2e('0x3b')]({},_0x130f55,_0x3b0f83['options']);var _0x145520={'where':_0x130f55['where']};return db[_0x1c2e('0x26')][_0x1c2e('0x1a')](_0x145520)['then'](function(_0x5bf4de){_0x2a66da['count']=_0x5bf4de;if(_0x3b0f83[_0x1c2e('0x2c')][_0x1c2e('0x3c')]){_0x130f55[_0x1c2e('0x3d')]=[{'all':!![]}];}return db[_0x1c2e('0x26')][_0x1c2e('0x3e')](_0x130f55);})[_0x1c2e('0x21')](function(_0x1a2bce){_0x2a66da[_0x1c2e('0x3f')]=_0x1a2bce;return _0x2a66da;})['then'](respondWithFilteredResult(_0x11a611,_0x130f55))[_0x1c2e('0x40')](handleError(_0x11a611,null));};exports[_0x1c2e('0x41')]=function(_0x35d451,_0x3c5b2b){var _0x27a13d={'raw':![],'where':{'id':_0x35d451[_0x1c2e('0x42')]['id']}},_0x3c6bed={};_0x3c6bed[_0x1c2e('0x2a')]=_[_0x1c2e('0x2d')](db['VtigerConfiguration'][_0x1c2e('0x27')]);_0x3c6bed[_0x1c2e('0x2c')]=_[_0x1c2e('0x2d')](_0x35d451[_0x1c2e('0x2c')]);_0x3c6bed[_0x1c2e('0x2e')]=_['intersection'](_0x3c6bed[_0x1c2e('0x2a')],_0x3c6bed[_0x1c2e('0x2c')]);_0x27a13d[_0x1c2e('0x30')]=_[_0x1c2e('0x2f')](_0x3c6bed[_0x1c2e('0x2a')],qs[_0x1c2e('0x31')](_0x35d451[_0x1c2e('0x2c')][_0x1c2e('0x31')]));_0x27a13d[_0x1c2e('0x30')]=_0x27a13d[_0x1c2e('0x30')][_0x1c2e('0x32')]?_0x27a13d['attributes']:_0x3c6bed[_0x1c2e('0x2a')];if(_0x35d451[_0x1c2e('0x2c')][_0x1c2e('0x3c')]){_0x27a13d['include']=[{'all':!![]}];}_0x27a13d=_['merge']({},_0x27a13d,_0x35d451['options']);return db[_0x1c2e('0x26')]['find'](_0x27a13d)[_0x1c2e('0x21')](handleEntityNotFound(_0x3c5b2b,null))[_0x1c2e('0x21')](respondWithResult(_0x3c5b2b,null))[_0x1c2e('0x40')](handleError(_0x3c5b2b,null));};exports[_0x1c2e('0x43')]=function(_0x11ce42,_0x15e988){return db['VtigerConfiguration'][_0x1c2e('0x43')](_0x11ce42['body'],{})[_0x1c2e('0x21')](respondWithResult(_0x15e988,0xc9))[_0x1c2e('0x40')](handleError(_0x15e988,null));};exports['update']=function(_0x431639,_0x43a2bb){if(_0x431639[_0x1c2e('0x44')]['id']){delete _0x431639['body']['id'];}return db['VtigerConfiguration'][_0x1c2e('0x45')]({'where':{'id':_0x431639[_0x1c2e('0x42')]['id']}})[_0x1c2e('0x21')](handleEntityNotFound(_0x43a2bb,null))['then'](saveUpdates(_0x431639[_0x1c2e('0x44')],null))[_0x1c2e('0x21')](respondWithResult(_0x43a2bb,null))['catch'](handleError(_0x43a2bb,null));};exports[_0x1c2e('0x20')]=function(_0x3ff9e5,_0x232368){return db[_0x1c2e('0x26')][_0x1c2e('0x45')]({'where':{'id':_0x3ff9e5['params']['id']}})[_0x1c2e('0x21')](handleEntityNotFound(_0x232368,null))[_0x1c2e('0x21')](removeEntity(_0x232368,null))[_0x1c2e('0x40')](handleError(_0x232368,null));};exports[_0x1c2e('0x46')]=function(_0x3bd9f8,_0x45a0a9,_0x2e95bb){var _0x196c06={};var _0x27b405={};var _0x332029;var _0x1d172f;return db[_0x1c2e('0x26')]['findOne']({'where':{'id':_0x3bd9f8[_0x1c2e('0x42')]['id']}})[_0x1c2e('0x21')](handleEntityNotFound(_0x45a0a9,null))[_0x1c2e('0x21')](function(_0x538d5f){if(_0x538d5f){_0x332029=_0x538d5f;_0x27b405['model']=_['keys'](db[_0x1c2e('0x47')][_0x1c2e('0x27')]);_0x27b405[_0x1c2e('0x2c')]=_['keys'](_0x3bd9f8['query']);_0x27b405['filters']=_[_0x1c2e('0x2f')](_0x27b405[_0x1c2e('0x2a')],_0x27b405[_0x1c2e('0x2c')]);_0x196c06[_0x1c2e('0x30')]=_['intersection'](_0x27b405['model'],qs[_0x1c2e('0x31')](_0x3bd9f8[_0x1c2e('0x2c')][_0x1c2e('0x31')]));_0x196c06[_0x1c2e('0x30')]=_0x196c06[_0x1c2e('0x30')][_0x1c2e('0x32')]?_0x196c06[_0x1c2e('0x30')]:_0x27b405['model'];_0x196c06[_0x1c2e('0x35')]=qs[_0x1c2e('0x36')](_0x3bd9f8[_0x1c2e('0x2c')]['sort']);_0x196c06[_0x1c2e('0x37')]=qs[_0x1c2e('0x2e')](_[_0x1c2e('0x38')](_0x3bd9f8[_0x1c2e('0x2c')],_0x27b405['filters']));if(_0x3bd9f8[_0x1c2e('0x2c')][_0x1c2e('0x39')]){_0x196c06['where']=_['merge'](_0x196c06[_0x1c2e('0x37')],{'$or':_['map'](_0x196c06[_0x1c2e('0x30')],function(_0x496aea){var _0x2f089d={};_0x2f089d[_0x496aea]={'$like':'%'+_0x3bd9f8['query']['filter']+'%'};return _0x2f089d;})});}_0x196c06=_[_0x1c2e('0x3b')]({},_0x196c06,_0x3bd9f8['options']);return _0x332029[_0x1c2e('0x46')](_0x196c06);}})[_0x1c2e('0x21')](function(_0x16c6d9){if(_0x16c6d9){_0x1d172f=_0x16c6d9[_0x1c2e('0x32')];if(!_0x3bd9f8[_0x1c2e('0x2c')]['hasOwnProperty']('nolimit')){_0x196c06[_0x1c2e('0x1b')]=qs['limit'](_0x3bd9f8['query'][_0x1c2e('0x1b')]);_0x196c06['offset']=qs[_0x1c2e('0x18')](_0x3bd9f8[_0x1c2e('0x2c')][_0x1c2e('0x18')]);}return _0x332029[_0x1c2e('0x46')](_0x196c06);}})[_0x1c2e('0x21')](function(_0xd36e4d){if(_0xd36e4d){return _0xd36e4d?{'count':_0x1d172f,'rows':_0xd36e4d}:null;}})[_0x1c2e('0x21')](respondWithResult(_0x45a0a9,null))[_0x1c2e('0x40')](handleError(_0x45a0a9,null));};exports[_0x1c2e('0x48')]=function(_0x425a21,_0x1dc64a,_0x20e36c){var _0x395bac={};var _0x4f01ce={};var _0x1bd905;var _0xfe5198;return db[_0x1c2e('0x26')]['findOne']({'where':{'id':_0x425a21[_0x1c2e('0x42')]['id']}})[_0x1c2e('0x21')](handleEntityNotFound(_0x1dc64a,null))[_0x1c2e('0x21')](function(_0x4a9811){if(_0x4a9811){_0x1bd905=_0x4a9811;_0x4f01ce[_0x1c2e('0x2a')]=_['keys'](db[_0x1c2e('0x47')][_0x1c2e('0x27')]);_0x4f01ce[_0x1c2e('0x2c')]=_[_0x1c2e('0x2d')](_0x425a21['query']);_0x4f01ce[_0x1c2e('0x2e')]=_[_0x1c2e('0x2f')](_0x4f01ce[_0x1c2e('0x2a')],_0x4f01ce[_0x1c2e('0x2c')]);_0x395bac[_0x1c2e('0x30')]=_[_0x1c2e('0x2f')](_0x4f01ce[_0x1c2e('0x2a')],qs[_0x1c2e('0x31')](_0x425a21[_0x1c2e('0x2c')][_0x1c2e('0x31')]));_0x395bac[_0x1c2e('0x30')]=_0x395bac[_0x1c2e('0x30')][_0x1c2e('0x32')]?_0x395bac[_0x1c2e('0x30')]:_0x4f01ce[_0x1c2e('0x2a')];_0x395bac[_0x1c2e('0x35')]=qs[_0x1c2e('0x36')](_0x425a21[_0x1c2e('0x2c')]['sort']);_0x395bac[_0x1c2e('0x37')]=qs[_0x1c2e('0x2e')](_[_0x1c2e('0x38')](_0x425a21[_0x1c2e('0x2c')],_0x4f01ce[_0x1c2e('0x2e')]));if(_0x425a21[_0x1c2e('0x2c')][_0x1c2e('0x39')]){_0x395bac[_0x1c2e('0x37')]=_[_0x1c2e('0x3b')](_0x395bac[_0x1c2e('0x37')],{'$or':_[_0x1c2e('0x2b')](_0x395bac[_0x1c2e('0x30')],function(_0xed143a){var _0x2a1057={};_0x2a1057[_0xed143a]={'$like':'%'+_0x425a21['query'][_0x1c2e('0x39')]+'%'};return _0x2a1057;})});}_0x395bac=_[_0x1c2e('0x3b')]({},_0x395bac,_0x425a21['options']);return _0x1bd905[_0x1c2e('0x48')](_0x395bac);}})[_0x1c2e('0x21')](function(_0x3d74f9){if(_0x3d74f9){_0xfe5198=_0x3d74f9[_0x1c2e('0x32')];if(!_0x425a21['query']['hasOwnProperty'](_0x1c2e('0x34'))){_0x395bac[_0x1c2e('0x1b')]=qs['limit'](_0x425a21[_0x1c2e('0x2c')][_0x1c2e('0x1b')]);_0x395bac['offset']=qs[_0x1c2e('0x18')](_0x425a21[_0x1c2e('0x2c')][_0x1c2e('0x18')]);}return _0x1bd905[_0x1c2e('0x48')](_0x395bac);}})[_0x1c2e('0x21')](function(_0xde29d3){if(_0xde29d3){return _0xde29d3?{'count':_0xfe5198,'rows':_0xde29d3}:null;}})[_0x1c2e('0x21')](respondWithResult(_0x1dc64a,null))['catch'](handleError(_0x1dc64a,null));};exports[_0x1c2e('0x49')]=function(_0x54f7b9,_0x2dad27,_0x3ed1ba){var _0x3edb8a={};var _0x5d065d={};var _0x1263f2;var _0x1871d7;return db[_0x1c2e('0x26')][_0x1c2e('0x4a')]({'where':{'id':_0x54f7b9[_0x1c2e('0x42')]['id']}})[_0x1c2e('0x21')](handleEntityNotFound(_0x2dad27,null))[_0x1c2e('0x21')](function(_0x4e5d35){if(_0x4e5d35){_0x1263f2=_0x4e5d35;_0x5d065d[_0x1c2e('0x2a')]=_[_0x1c2e('0x2d')](db['VtigerField'][_0x1c2e('0x27')]);_0x5d065d['query']=_[_0x1c2e('0x2d')](_0x54f7b9[_0x1c2e('0x2c')]);_0x5d065d[_0x1c2e('0x2e')]=_[_0x1c2e('0x2f')](_0x5d065d[_0x1c2e('0x2a')],_0x5d065d[_0x1c2e('0x2c')]);_0x3edb8a['attributes']=_[_0x1c2e('0x2f')](_0x5d065d[_0x1c2e('0x2a')],qs['fields'](_0x54f7b9[_0x1c2e('0x2c')][_0x1c2e('0x31')]));_0x3edb8a[_0x1c2e('0x30')]=_0x3edb8a['attributes'][_0x1c2e('0x32')]?_0x3edb8a[_0x1c2e('0x30')]:_0x5d065d[_0x1c2e('0x2a')];_0x3edb8a[_0x1c2e('0x35')]=qs[_0x1c2e('0x36')](_0x54f7b9[_0x1c2e('0x2c')]['sort']);_0x3edb8a[_0x1c2e('0x37')]=qs[_0x1c2e('0x2e')](_[_0x1c2e('0x38')](_0x54f7b9['query'],_0x5d065d[_0x1c2e('0x2e')]));if(_0x54f7b9[_0x1c2e('0x2c')][_0x1c2e('0x39')]){_0x3edb8a[_0x1c2e('0x37')]=_['merge'](_0x3edb8a[_0x1c2e('0x37')],{'$or':_[_0x1c2e('0x2b')](_0x3edb8a[_0x1c2e('0x30')],function(_0x4077ca){var _0x441c3d={};_0x441c3d[_0x4077ca]={'$like':'%'+_0x54f7b9[_0x1c2e('0x2c')]['filter']+'%'};return _0x441c3d;})});}_0x3edb8a=_['merge']({},_0x3edb8a,_0x54f7b9['options']);return _0x1263f2[_0x1c2e('0x49')](_0x3edb8a);}})['then'](function(_0x46a296){if(_0x46a296){_0x1871d7=_0x46a296[_0x1c2e('0x32')];if(!_0x54f7b9[_0x1c2e('0x2c')][_0x1c2e('0x33')](_0x1c2e('0x34'))){_0x3edb8a[_0x1c2e('0x1b')]=qs['limit'](_0x54f7b9[_0x1c2e('0x2c')][_0x1c2e('0x1b')]);_0x3edb8a[_0x1c2e('0x18')]=qs[_0x1c2e('0x18')](_0x54f7b9[_0x1c2e('0x2c')]['offset']);}return _0x1263f2[_0x1c2e('0x49')](_0x3edb8a);}})[_0x1c2e('0x21')](function(_0x2be73a){if(_0x2be73a){return _0x2be73a?{'count':_0x1871d7,'rows':_0x2be73a}:null;}})[_0x1c2e('0x21')](respondWithResult(_0x2dad27,null))['catch'](handleError(_0x2dad27,null));};
\ No newline at end of file
index 5e52007..0f53ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8489=['./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x25f67a,_0x4fc182){var _0x28f557=function(_0x3adac6){while(--_0x3adac6){_0x25f67a['push'](_0x25f67a['shift']());}};_0x28f557(++_0x4fc182);}(_0x8489,0x9e));var _0x9848=function(_0x405968,_0x5c940f){_0x405968=_0x405968-0x0;var _0x1ca1ab=_0x8489[_0x405968];return _0x1ca1ab;};'use strict';var _=require(_0x9848('0x0'));var util=require('util');var logger=require(_0x9848('0x1'))(_0x9848('0x2'));var moment=require(_0x9848('0x3'));var BPromise=require('bluebird');var rp=require(_0x9848('0x4'));var fs=require('fs');var path=require(_0x9848('0x5'));var rimraf=require(_0x9848('0x6'));var config=require('../../config/environment');var attributes=require(_0x9848('0x7'));module[_0x9848('0x8')]=function(_0x719803,_0x5a350b){return _0x719803[_0x9848('0x9')](_0x9848('0xa'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb26=['api','bluebird','request-promise','path','./intVtigerConfiguration.attributes','define','VtigerConfiguration','int_vtiger_configurations','util','../../config/logger'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0xbb26,0x76));var _0x6bb2=function(_0x31194,_0x2184c7){_0x31194=_0x31194-0x0;var _0x4ed3d3=_0xbb26[_0x31194];return _0x4ed3d3;};'use strict';var _=require('lodash');var util=require(_0x6bb2('0x0'));var logger=require(_0x6bb2('0x1'))(_0x6bb2('0x2'));var moment=require('moment');var BPromise=require(_0x6bb2('0x3'));var rp=require(_0x6bb2('0x4'));var fs=require('fs');var path=require(_0x6bb2('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6bb2('0x6'));module['exports']=function(_0x2e520f,_0x98b5d0){return _0x2e520f[_0x6bb2('0x7')](_0x6bb2('0x8'),attributes,{'tableName':_0x6bb2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a46cdc..fa2e097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae3=['lodash','util','moment','bluebird','randomstring','../../config/utils','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x497f65,_0x4c7403){var _0x2a8f3b=function(_0x1bd5d4){while(--_0x1bd5d4){_0x497f65['push'](_0x497f65['shift']());}};_0x2a8f3b(++_0x4c7403);}(_0x6ae3,0x19e));var _0x36ae=function(_0x370c1a,_0x444e6f){_0x370c1a=_0x370c1a-0x0;var _0xb4f5e9=_0x6ae3[_0x370c1a];return _0xb4f5e9;};'use strict';var _=require(_0x36ae('0x0'));var util=require(_0x36ae('0x1'));var moment=require(_0x36ae('0x2'));var BPromise=require(_0x36ae('0x3'));var rs=require(_0x36ae('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x36ae('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x36ae('0x6')][_0x36ae('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x489d02,_0x2c48df,_0x3b195e){return new BPromise(function(_0x36ca18,_0x5ada1e){return client[_0x36ae('0x8')](_0x489d02,_0x3b195e)[_0x36ae('0x9')](function(_0x15b792){logger[_0x36ae('0xa')](_0x36ae('0xb'),_0x2c48df,_0x36ae('0xc'));logger[_0x36ae('0xd')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2c48df,'request\x20sent',JSON[_0x36ae('0xe')](_0x15b792));if(_0x15b792[_0x36ae('0xf')]){if(_0x15b792['error']['code']===0x1f4){logger[_0x36ae('0xf')](_0x36ae('0xb'),_0x2c48df,_0x15b792[_0x36ae('0xf')][_0x36ae('0x10')]);return _0x5ada1e(_0x15b792[_0x36ae('0xf')][_0x36ae('0x10')]);}logger[_0x36ae('0xf')](_0x36ae('0xb'),_0x2c48df,_0x15b792['error'][_0x36ae('0x10')]);return _0x36ca18(_0x15b792[_0x36ae('0xf')][_0x36ae('0x10')]);}else{logger[_0x36ae('0xa')](_0x36ae('0xb'),_0x2c48df,_0x36ae('0xc'));_0x36ca18(_0x15b792[_0x36ae('0x11')][_0x36ae('0x10')]);}})['catch'](function(_0x27b253){logger[_0x36ae('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x2c48df,_0x27b253);_0x5ada1e(_0x27b253);});});}
\ No newline at end of file
+var _0xbd9d=['VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x1304c6,_0x6bb485){var _0x2e6654=function(_0x2b623c){while(--_0x2b623c){_0x1304c6['push'](_0x1304c6['shift']());}};_0x2e6654(++_0x6bb485);}(_0xbd9d,0x17d));var _0xdbd9=function(_0xe582ec,_0x4aa227){_0xe582ec=_0xe582ec-0x0;var _0x3164fc=_0xbd9d[_0xe582ec];return _0x3164fc;};'use strict';var _=require(_0xdbd9('0x0'));var util=require(_0xdbd9('0x1'));var moment=require(_0xdbd9('0x2'));var BPromise=require(_0xdbd9('0x3'));var rs=require(_0xdbd9('0x4'));var fs=require('fs');var Redis=require(_0xdbd9('0x5'));var db=require(_0xdbd9('0x6'))['db'];var utils=require(_0xdbd9('0x7'));var logger=require(_0xdbd9('0x8'))('rpc');var config=require(_0xdbd9('0x9'));var jayson=require(_0xdbd9('0xa'));var client=jayson[_0xdbd9('0xb')][_0xdbd9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x39f823,_0x8d72eb,_0x7316ec){return new BPromise(function(_0x492c4e,_0x551d3b){return client['request'](_0x39f823,_0x7316ec)[_0xdbd9('0xd')](function(_0x177207){logger[_0xdbd9('0xe')](_0xdbd9('0xf'),_0x8d72eb,_0xdbd9('0x10'));logger[_0xdbd9('0x11')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x8d72eb,_0xdbd9('0x10'),JSON['stringify'](_0x177207));if(_0x177207[_0xdbd9('0x12')]){if(_0x177207[_0xdbd9('0x12')][_0xdbd9('0x13')]===0x1f4){logger[_0xdbd9('0x12')](_0xdbd9('0xf'),_0x8d72eb,_0x177207[_0xdbd9('0x12')]['message']);return _0x551d3b(_0x177207[_0xdbd9('0x12')]['message']);}logger[_0xdbd9('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x8d72eb,_0x177207[_0xdbd9('0x12')][_0xdbd9('0x14')]);return _0x492c4e(_0x177207['error']['message']);}else{logger[_0xdbd9('0xe')](_0xdbd9('0xf'),_0x8d72eb,_0xdbd9('0x10'));_0x492c4e(_0x177207[_0xdbd9('0x15')][_0xdbd9('0x14')]);}})['catch'](function(_0x5daa9d){logger['error'](_0xdbd9('0xf'),_0x8d72eb,_0x5daa9d);_0x551d3b(_0x5daa9d);});});}
\ No newline at end of file
index daf04e9..e8154e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e3=['create','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','index','isAuthenticated','post'];(function(_0x56a06f,_0x183813){var _0x3309ac=function(_0x562fb0){while(--_0x562fb0){_0x56a06f['push'](_0x56a06f['shift']());}};_0x3309ac(++_0x183813);}(_0x00e3,0x6c));var _0x300e=function(_0x5903da,_0x573b67){_0x5903da=_0x5903da-0x0;var _0x13f8bd=_0x00e3[_0x5903da];return _0x13f8bd;};'use strict';var multer=require('multer');var util=require(_0x300e('0x0'));var path=require(_0x300e('0x1'));var timeout=require(_0x300e('0x2'));var express=require(_0x300e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x300e('0x4'));var config=require(_0x300e('0x5'));var controller=require(_0x300e('0x6'));router[_0x300e('0x7')]('/',auth['isAuthenticated'](),controller[_0x300e('0x8')]);router['get']('/:id',auth[_0x300e('0x9')](),controller['show']);router[_0x300e('0xa')]('/',auth[_0x300e('0x9')](),controller[_0x300e('0xb')]);router['put'](_0x300e('0xc'),auth[_0x300e('0x9')](),controller[_0x300e('0xd')]);router[_0x300e('0xe')]('/:id',auth[_0x300e('0x9')](),controller[_0x300e('0xf')]);module[_0x300e('0x10')]=router;
\ No newline at end of file
+var _0x8080=['/:id','post','isAuthenticated','create','put','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','index','get'];(function(_0x2938ef,_0x26a7c1){var _0x40766b=function(_0x11d1b5){while(--_0x11d1b5){_0x2938ef['push'](_0x2938ef['shift']());}};_0x40766b(++_0x26a7c1);}(_0x8080,0x1db));var _0x0808=function(_0x2dcdce,_0x2a64ef){_0x2dcdce=_0x2dcdce-0x0;var _0x3cba3e=_0x8080[_0x2dcdce];return _0x3cba3e;};'use strict';var multer=require(_0x0808('0x0'));var util=require('util');var path=require(_0x0808('0x1'));var timeout=require('connect-timeout');var express=require(_0x0808('0x2'));var router=express[_0x0808('0x3')]();var fs_extra=require(_0x0808('0x4'));var auth=require(_0x0808('0x5'));var interaction=require(_0x0808('0x6'));var config=require(_0x0808('0x7'));var controller=require(_0x0808('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x0808('0x9')]);router[_0x0808('0xa')](_0x0808('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x0808('0xc')]('/',auth[_0x0808('0xd')](),controller[_0x0808('0xe')]);router[_0x0808('0xf')]('/:id',auth[_0x0808('0xd')](),controller['update']);router[_0x0808('0x10')](_0x0808('0xb'),auth[_0x0808('0xd')](),controller[_0x0808('0x11')]);module['exports']=router;
\ No newline at end of file
index c8ae000..f845bcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea3f=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string'];(function(_0xc0109e,_0x158e55){var _0x2a9de3=function(_0x3f2500){while(--_0x3f2500){_0xc0109e['push'](_0xc0109e['shift']());}};_0x2a9de3(++_0x158e55);}(_0xea3f,0x1c8));var _0xfea3=function(_0x2e1906,_0xa281e9){_0x2e1906=_0x2e1906-0x0;var _0x3ea10e=_0xea3f[_0x2e1906];return _0x3ea10e;};'use strict';var Sequelize=require('sequelize');module[_0xfea3('0x0')]={'type':{'type':Sequelize[_0xfea3('0x1')](_0xfea3('0x2'),_0xfea3('0x3'),_0xfea3('0x4'),_0xfea3('0x5'),_0xfea3('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xfea3('0x7')]},'key':{'type':Sequelize[_0xfea3('0x7')]},'keyType':{'type':Sequelize['ENUM']('string',_0xfea3('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xfea3('0x7')]},'idField':{'type':Sequelize[_0xfea3('0x7')]},'nameField':{'type':Sequelize[_0xfea3('0x7')]},'customField':{'type':Sequelize[_0xfea3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe2ef=['BOOLEAN','ENUM','variable','customVariable','picklist','STRING','string'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0xe2ef,0xfd));var _0xfe2e=function(_0x50f77a,_0x469295){_0x50f77a=_0x50f77a-0x0;var _0x4cd957=_0xe2ef[_0x50f77a];return _0x4cd957;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xfe2e('0x0')]('string',_0xfe2e('0x1'),_0xfe2e('0x2'),'keyValue',_0xfe2e('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0xfe2e('0x4')]},'key':{'type':Sequelize[_0xfe2e('0x4')]},'keyType':{'type':Sequelize[_0xfe2e('0x0')](_0xfe2e('0x5'),_0xfe2e('0x1'),'customVariable')},'keyContent':{'type':Sequelize[_0xfe2e('0x4')]},'idField':{'type':Sequelize[_0xfe2e('0x4')]},'nameField':{'type':Sequelize[_0xfe2e('0x4')]},'customField':{'type':Sequelize[_0xfe2e('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 058ce03..5c71785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','intersection','create','body','find','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','VtigerField','rawAttributes'];(function(_0x58d33c,_0x1690a5){var _0x34ead7=function(_0x292395){while(--_0x292395){_0x58d33c['push'](_0x58d33c['shift']());}};_0x34ead7(++_0x1690a5);}(_0xfcf0,0x184));var _0x0fcf=function(_0x234ae1,_0x42bdd6){_0x234ae1=_0x234ae1-0x0;var _0x227ba0=_0xfcf0[_0x234ae1];return _0x227ba0;};'use strict';var emlformat=require(_0x0fcf('0x0'));var rimraf=require(_0x0fcf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0fcf('0x2'));var rp=require('request-promise');var moment=require(_0x0fcf('0x3'));var BPromise=require(_0x0fcf('0x4'));var Mustache=require('mustache');var util=require(_0x0fcf('0x5'));var path=require(_0x0fcf('0x6'));var sox=require(_0x0fcf('0x7'));var csv=require(_0x0fcf('0x8'));var ejs=require(_0x0fcf('0x9'));var fs=require('fs');var fs_extra=require(_0x0fcf('0xa'));var _=require(_0x0fcf('0xb'));var squel=require(_0x0fcf('0xc'));var crypto=require('crypto');var jsforce=require(_0x0fcf('0xd'));var deskjs=require(_0x0fcf('0xe'));var toCsv=require(_0x0fcf('0x8'));var querystring=require(_0x0fcf('0xf'));var Papa=require(_0x0fcf('0x10'));var Redis=require(_0x0fcf('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0fcf('0x12'));var logger=require('../../config/logger')(_0x0fcf('0x13'));var utils=require('../../config/utils');var config=require(_0x0fcf('0x14'));var licenseUtil=require(_0x0fcf('0x15'));var db=require(_0x0fcf('0x16'))['db'];function respondWithStatusCode(_0x44d3b9,_0x24ffbf){_0x24ffbf=_0x24ffbf||0xcc;return function(_0x79c6d2){if(_0x79c6d2){return _0x44d3b9[_0x0fcf('0x17')](_0x24ffbf);}return _0x44d3b9[_0x0fcf('0x18')](_0x24ffbf)['end']();};}function respondWithResult(_0x4fe9a9,_0x54063a){_0x54063a=_0x54063a||0xc8;return function(_0x3ed3ac){if(_0x3ed3ac){return _0x4fe9a9[_0x0fcf('0x18')](_0x54063a)[_0x0fcf('0x19')](_0x3ed3ac);}};}function respondWithFilteredResult(_0x394f42,_0x4d5b3c){return function(_0x3cfedc){if(_0x3cfedc){var _0x4aa2a5=typeof _0x4d5b3c['offset']==='undefined'&&typeof _0x4d5b3c[_0x0fcf('0x1a')]==='undefined';var _0x5beb84=_0x3cfedc[_0x0fcf('0x1b')];var _0x13e88f=_0x4aa2a5?0x0:_0x4d5b3c['offset'];var _0x36e9a1=_0x4aa2a5?_0x3cfedc[_0x0fcf('0x1b')]:_0x4d5b3c['offset']+_0x4d5b3c[_0x0fcf('0x1a')];var _0x1f9c3f;if(_0x36e9a1>=_0x5beb84){_0x36e9a1=_0x5beb84;_0x1f9c3f=0xc8;}else{_0x1f9c3f=0xce;}_0x394f42[_0x0fcf('0x18')](_0x1f9c3f);return _0x394f42[_0x0fcf('0x1c')](_0x0fcf('0x1d'),_0x13e88f+'-'+_0x36e9a1+'/'+_0x5beb84)[_0x0fcf('0x19')](_0x3cfedc);}return null;};}function patchUpdates(_0x1154ad){return function(_0x4644f6){try{jsonpatch[_0x0fcf('0x1e')](_0x4644f6,_0x1154ad,!![]);}catch(_0x59182a){return BPromise['reject'](_0x59182a);}return _0x4644f6[_0x0fcf('0x1f')]();};}function saveUpdates(_0xf352e8,_0x2276c2){return function(_0x12d78f){if(_0x12d78f){return _0x12d78f[_0x0fcf('0x20')](_0xf352e8)[_0x0fcf('0x21')](function(_0x102c03){return _0x102c03;});}return null;};}function removeEntity(_0x4a77b1,_0x281c86){return function(_0x20d06f){if(_0x20d06f){return _0x20d06f[_0x0fcf('0x22')]()[_0x0fcf('0x21')](function(){_0x4a77b1[_0x0fcf('0x18')](0xcc)[_0x0fcf('0x23')]();});}};}function handleEntityNotFound(_0x52a9c3,_0x24ee17){return function(_0x2d2b86){if(!_0x2d2b86){_0x52a9c3[_0x0fcf('0x17')](0x194);}return _0x2d2b86;};}function handleError(_0x24eb70,_0x49a4e1){_0x49a4e1=_0x49a4e1||0x1f4;return function(_0x15c984){logger[_0x0fcf('0x24')](_0x15c984[_0x0fcf('0x25')]);if(_0x15c984[_0x0fcf('0x26')]){delete _0x15c984[_0x0fcf('0x26')];}_0x24eb70[_0x0fcf('0x18')](_0x49a4e1)[_0x0fcf('0x27')](_0x15c984);};}exports[_0x0fcf('0x28')]=function(_0x4bcbff,_0x5e9ed9){var _0x59d21a={},_0x3a2297={},_0xd5f43c={'count':0x0,'rows':[]};var _0x2293d8=_[_0x0fcf('0x29')](db[_0x0fcf('0x2a')][_0x0fcf('0x2b')],function(_0x4628a){return{'name':_0x4628a['fieldName'],'type':_0x4628a[_0x0fcf('0x2c')]['key']};});_0x3a2297[_0x0fcf('0x2d')]=_[_0x0fcf('0x29')](_0x2293d8,_0x0fcf('0x26'));_0x3a2297[_0x0fcf('0x2e')]=_[_0x0fcf('0x2f')](_0x4bcbff[_0x0fcf('0x2e')]);_0x3a2297[_0x0fcf('0x30')]=_['intersection'](_0x3a2297['model'],_0x3a2297[_0x0fcf('0x2e')]);_0x59d21a[_0x0fcf('0x31')]=_['intersection'](_0x3a2297['model'],qs[_0x0fcf('0x32')](_0x4bcbff['query'][_0x0fcf('0x32')]));_0x59d21a[_0x0fcf('0x31')]=_0x59d21a[_0x0fcf('0x31')][_0x0fcf('0x33')]?_0x59d21a[_0x0fcf('0x31')]:_0x3a2297[_0x0fcf('0x2d')];if(!_0x4bcbff[_0x0fcf('0x2e')][_0x0fcf('0x34')](_0x0fcf('0x35'))){_0x59d21a[_0x0fcf('0x1a')]=qs[_0x0fcf('0x1a')](_0x4bcbff[_0x0fcf('0x2e')][_0x0fcf('0x1a')]);_0x59d21a[_0x0fcf('0x36')]=qs[_0x0fcf('0x36')](_0x4bcbff[_0x0fcf('0x2e')][_0x0fcf('0x36')]);}_0x59d21a['order']=qs[_0x0fcf('0x37')](_0x4bcbff['query'][_0x0fcf('0x37')]);_0x59d21a[_0x0fcf('0x38')]=qs[_0x0fcf('0x30')](_[_0x0fcf('0x39')](_0x4bcbff['query'],_0x3a2297[_0x0fcf('0x30')]),_0x2293d8);if(_0x4bcbff[_0x0fcf('0x2e')]['filter']){_0x59d21a['where']=_[_0x0fcf('0x3a')](_0x59d21a[_0x0fcf('0x38')],{'$or':_[_0x0fcf('0x29')](_0x2293d8,function(_0x4345b6){if(_0x4345b6[_0x0fcf('0x2c')]!==_0x0fcf('0x3b')){var _0x46b557={};_0x46b557[_0x4345b6['name']]={'$like':'%'+_0x4bcbff[_0x0fcf('0x2e')][_0x0fcf('0x3c')]+'%'};return _0x46b557;}})});}_0x59d21a=_[_0x0fcf('0x3a')]({},_0x59d21a,_0x4bcbff[_0x0fcf('0x3d')]);var _0x20c9ac={'where':_0x59d21a[_0x0fcf('0x38')]};return db[_0x0fcf('0x2a')][_0x0fcf('0x1b')](_0x20c9ac)[_0x0fcf('0x21')](function(_0x84b31d){_0xd5f43c['count']=_0x84b31d;if(_0x4bcbff[_0x0fcf('0x2e')][_0x0fcf('0x3e')]){_0x59d21a['include']=[{'all':!![]}];}return db[_0x0fcf('0x2a')][_0x0fcf('0x3f')](_0x59d21a);})['then'](function(_0x18ce61){_0xd5f43c[_0x0fcf('0x40')]=_0x18ce61;return _0xd5f43c;})[_0x0fcf('0x21')](respondWithFilteredResult(_0x5e9ed9,_0x59d21a))[_0x0fcf('0x41')](handleError(_0x5e9ed9,null));};exports[_0x0fcf('0x42')]=function(_0x30373f,_0x4f7f88){var _0x254c38={'raw':!![],'where':{'id':_0x30373f[_0x0fcf('0x43')]['id']}},_0x489331={};_0x489331[_0x0fcf('0x2d')]=_[_0x0fcf('0x2f')](db[_0x0fcf('0x2a')][_0x0fcf('0x2b')]);_0x489331['query']=_[_0x0fcf('0x2f')](_0x30373f[_0x0fcf('0x2e')]);_0x489331[_0x0fcf('0x30')]=_[_0x0fcf('0x44')](_0x489331[_0x0fcf('0x2d')],_0x489331[_0x0fcf('0x2e')]);_0x254c38[_0x0fcf('0x31')]=_[_0x0fcf('0x44')](_0x489331['model'],qs['fields'](_0x30373f[_0x0fcf('0x2e')][_0x0fcf('0x32')]));_0x254c38['attributes']=_0x254c38[_0x0fcf('0x31')][_0x0fcf('0x33')]?_0x254c38[_0x0fcf('0x31')]:_0x489331[_0x0fcf('0x2d')];if(_0x30373f['query'][_0x0fcf('0x3e')]){_0x254c38['include']=[{'all':!![]}];}_0x254c38=_[_0x0fcf('0x3a')]({},_0x254c38,_0x30373f[_0x0fcf('0x3d')]);return db['VtigerField']['find'](_0x254c38)['then'](handleEntityNotFound(_0x4f7f88,null))['then'](respondWithResult(_0x4f7f88,null))['catch'](handleError(_0x4f7f88,null));};exports[_0x0fcf('0x45')]=function(_0x1f6646,_0x49ad04){return db[_0x0fcf('0x2a')][_0x0fcf('0x45')](_0x1f6646[_0x0fcf('0x46')],{})[_0x0fcf('0x21')](respondWithResult(_0x49ad04,0xc9))[_0x0fcf('0x41')](handleError(_0x49ad04,null));};exports[_0x0fcf('0x20')]=function(_0x4f04b7,_0x401271){if(_0x4f04b7[_0x0fcf('0x46')]['id']){delete _0x4f04b7[_0x0fcf('0x46')]['id'];}return db[_0x0fcf('0x2a')][_0x0fcf('0x47')]({'where':{'id':_0x4f04b7[_0x0fcf('0x43')]['id']}})[_0x0fcf('0x21')](handleEntityNotFound(_0x401271,null))[_0x0fcf('0x21')](saveUpdates(_0x4f04b7[_0x0fcf('0x46')],null))[_0x0fcf('0x21')](respondWithResult(_0x401271,null))[_0x0fcf('0x41')](handleError(_0x401271,null));};exports['destroy']=function(_0x488cad,_0x2c13e0){return db['VtigerField']['find']({'where':{'id':_0x488cad['params']['id']}})[_0x0fcf('0x21')](handleEntityNotFound(_0x2c13e0,null))[_0x0fcf('0x21')](removeEntity(_0x2c13e0,null))[_0x0fcf('0x41')](handleError(_0x2c13e0,null));};
\ No newline at end of file
+var _0xe9e1=['destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','VtigerField','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','apply','reject','update'];(function(_0x443fed,_0x4df6cf){var _0x551fd6=function(_0x47bc17){while(--_0x47bc17){_0x443fed['push'](_0x443fed['shift']());}};_0x551fd6(++_0x4df6cf);}(_0xe9e1,0x74));var _0x1e9e=function(_0x15ddab,_0x199e86){_0x15ddab=_0x15ddab-0x0;var _0x13979d=_0xe9e1[_0x15ddab];return _0x13979d;};'use strict';var emlformat=require(_0x1e9e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1e9e('0x1'));var jsonpatch=require(_0x1e9e('0x2'));var rp=require(_0x1e9e('0x3'));var moment=require(_0x1e9e('0x4'));var BPromise=require(_0x1e9e('0x5'));var Mustache=require(_0x1e9e('0x6'));var util=require(_0x1e9e('0x7'));var path=require(_0x1e9e('0x8'));var sox=require(_0x1e9e('0x9'));var csv=require(_0x1e9e('0xa'));var ejs=require(_0x1e9e('0xb'));var fs=require('fs');var fs_extra=require(_0x1e9e('0xc'));var _=require(_0x1e9e('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1e9e('0xe'));var deskjs=require(_0x1e9e('0xf'));var toCsv=require(_0x1e9e('0xa'));var querystring=require(_0x1e9e('0x10'));var Papa=require(_0x1e9e('0x11'));var Redis=require(_0x1e9e('0x12'));var authService=require(_0x1e9e('0x13'));var qs=require(_0x1e9e('0x14'));var as=require(_0x1e9e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1e9e('0x16'));var config=require(_0x1e9e('0x17'));var licenseUtil=require(_0x1e9e('0x18'));var db=require(_0x1e9e('0x19'))['db'];function respondWithStatusCode(_0x7c0152,_0x318760){_0x318760=_0x318760||0xcc;return function(_0x25ac40){if(_0x25ac40){return _0x7c0152[_0x1e9e('0x1a')](_0x318760);}return _0x7c0152[_0x1e9e('0x1b')](_0x318760)['end']();};}function respondWithResult(_0x28c345,_0x406a42){_0x406a42=_0x406a42||0xc8;return function(_0x3e34d4){if(_0x3e34d4){return _0x28c345[_0x1e9e('0x1b')](_0x406a42)[_0x1e9e('0x1c')](_0x3e34d4);}};}function respondWithFilteredResult(_0x1c9884,_0x26c8e4){return function(_0x2bd5b3){if(_0x2bd5b3){var _0x2b8186=typeof _0x26c8e4['offset']===_0x1e9e('0x1d')&&typeof _0x26c8e4['limit']==='undefined';var _0x19e422=_0x2bd5b3[_0x1e9e('0x1e')];var _0x232b98=_0x2b8186?0x0:_0x26c8e4[_0x1e9e('0x1f')];var _0x52d138=_0x2b8186?_0x2bd5b3['count']:_0x26c8e4[_0x1e9e('0x1f')]+_0x26c8e4[_0x1e9e('0x20')];var _0x4a88b6;if(_0x52d138>=_0x19e422){_0x52d138=_0x19e422;_0x4a88b6=0xc8;}else{_0x4a88b6=0xce;}_0x1c9884['status'](_0x4a88b6);return _0x1c9884['set']('Content-Range',_0x232b98+'-'+_0x52d138+'/'+_0x19e422)[_0x1e9e('0x1c')](_0x2bd5b3);}return null;};}function patchUpdates(_0x1619e1){return function(_0x5c2fda){try{jsonpatch[_0x1e9e('0x21')](_0x5c2fda,_0x1619e1,!![]);}catch(_0x13c453){return BPromise[_0x1e9e('0x22')](_0x13c453);}return _0x5c2fda['save']();};}function saveUpdates(_0x17fdb6,_0x2f7d93){return function(_0x5a3485){if(_0x5a3485){return _0x5a3485[_0x1e9e('0x23')](_0x17fdb6)['then'](function(_0x3d87c1){return _0x3d87c1;});}return null;};}function removeEntity(_0x2b5463,_0xcdc881){return function(_0x5873b0){if(_0x5873b0){return _0x5873b0[_0x1e9e('0x24')]()[_0x1e9e('0x25')](function(){_0x2b5463[_0x1e9e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ee799,_0x3a0eb2){return function(_0x41194e){if(!_0x41194e){_0x5ee799['sendStatus'](0x194);}return _0x41194e;};}function handleError(_0x429c16,_0x1f2514){_0x1f2514=_0x1f2514||0x1f4;return function(_0x51ed0a){logger[_0x1e9e('0x26')](_0x51ed0a[_0x1e9e('0x27')]);if(_0x51ed0a[_0x1e9e('0x28')]){delete _0x51ed0a[_0x1e9e('0x28')];}_0x429c16[_0x1e9e('0x1b')](_0x1f2514)[_0x1e9e('0x29')](_0x51ed0a);};}exports[_0x1e9e('0x2a')]=function(_0x2a627b,_0x1205cf){var _0x32961e={},_0x59ed20={},_0x34f6f1={'count':0x0,'rows':[]};var _0x229323=_[_0x1e9e('0x2b')](db['VtigerField'][_0x1e9e('0x2c')],function(_0x260b20){return{'name':_0x260b20[_0x1e9e('0x2d')],'type':_0x260b20[_0x1e9e('0x2e')][_0x1e9e('0x2f')]};});_0x59ed20[_0x1e9e('0x30')]=_['map'](_0x229323,'name');_0x59ed20['query']=_[_0x1e9e('0x31')](_0x2a627b[_0x1e9e('0x32')]);_0x59ed20[_0x1e9e('0x33')]=_[_0x1e9e('0x34')](_0x59ed20[_0x1e9e('0x30')],_0x59ed20['query']);_0x32961e[_0x1e9e('0x35')]=_['intersection'](_0x59ed20['model'],qs['fields'](_0x2a627b[_0x1e9e('0x32')][_0x1e9e('0x36')]));_0x32961e[_0x1e9e('0x35')]=_0x32961e[_0x1e9e('0x35')]['length']?_0x32961e[_0x1e9e('0x35')]:_0x59ed20[_0x1e9e('0x30')];if(!_0x2a627b[_0x1e9e('0x32')]['hasOwnProperty'](_0x1e9e('0x37'))){_0x32961e[_0x1e9e('0x20')]=qs['limit'](_0x2a627b['query']['limit']);_0x32961e[_0x1e9e('0x1f')]=qs[_0x1e9e('0x1f')](_0x2a627b[_0x1e9e('0x32')][_0x1e9e('0x1f')]);}_0x32961e[_0x1e9e('0x38')]=qs['sort'](_0x2a627b['query'][_0x1e9e('0x39')]);_0x32961e[_0x1e9e('0x3a')]=qs[_0x1e9e('0x33')](_[_0x1e9e('0x3b')](_0x2a627b[_0x1e9e('0x32')],_0x59ed20['filters']),_0x229323);if(_0x2a627b[_0x1e9e('0x32')][_0x1e9e('0x3c')]){_0x32961e[_0x1e9e('0x3a')]=_['merge'](_0x32961e[_0x1e9e('0x3a')],{'$or':_['map'](_0x229323,function(_0x8968bf){if(_0x8968bf[_0x1e9e('0x2e')]!==_0x1e9e('0x3d')){var _0x2dcd34={};_0x2dcd34[_0x8968bf['name']]={'$like':'%'+_0x2a627b[_0x1e9e('0x32')][_0x1e9e('0x3c')]+'%'};return _0x2dcd34;}})});}_0x32961e=_[_0x1e9e('0x3e')]({},_0x32961e,_0x2a627b[_0x1e9e('0x3f')]);var _0x3c11e9={'where':_0x32961e['where']};return db['VtigerField'][_0x1e9e('0x1e')](_0x3c11e9)[_0x1e9e('0x25')](function(_0x22918a){_0x34f6f1[_0x1e9e('0x1e')]=_0x22918a;if(_0x2a627b[_0x1e9e('0x32')][_0x1e9e('0x40')]){_0x32961e['include']=[{'all':!![]}];}return db[_0x1e9e('0x41')][_0x1e9e('0x42')](_0x32961e);})[_0x1e9e('0x25')](function(_0x1972fe){_0x34f6f1[_0x1e9e('0x43')]=_0x1972fe;return _0x34f6f1;})['then'](respondWithFilteredResult(_0x1205cf,_0x32961e))[_0x1e9e('0x44')](handleError(_0x1205cf,null));};exports[_0x1e9e('0x45')]=function(_0x3c214e,_0x5d20b1){var _0x5ee812={'raw':!![],'where':{'id':_0x3c214e[_0x1e9e('0x46')]['id']}},_0x1a9d14={};_0x1a9d14[_0x1e9e('0x30')]=_['keys'](db[_0x1e9e('0x41')][_0x1e9e('0x2c')]);_0x1a9d14['query']=_[_0x1e9e('0x31')](_0x3c214e[_0x1e9e('0x32')]);_0x1a9d14[_0x1e9e('0x33')]=_[_0x1e9e('0x34')](_0x1a9d14['model'],_0x1a9d14[_0x1e9e('0x32')]);_0x5ee812[_0x1e9e('0x35')]=_['intersection'](_0x1a9d14[_0x1e9e('0x30')],qs[_0x1e9e('0x36')](_0x3c214e['query']['fields']));_0x5ee812[_0x1e9e('0x35')]=_0x5ee812[_0x1e9e('0x35')][_0x1e9e('0x47')]?_0x5ee812[_0x1e9e('0x35')]:_0x1a9d14[_0x1e9e('0x30')];if(_0x3c214e[_0x1e9e('0x32')]['includeAll']){_0x5ee812[_0x1e9e('0x48')]=[{'all':!![]}];}_0x5ee812=_['merge']({},_0x5ee812,_0x3c214e[_0x1e9e('0x3f')]);return db[_0x1e9e('0x41')][_0x1e9e('0x49')](_0x5ee812)[_0x1e9e('0x25')](handleEntityNotFound(_0x5d20b1,null))['then'](respondWithResult(_0x5d20b1,null))['catch'](handleError(_0x5d20b1,null));};exports[_0x1e9e('0x4a')]=function(_0x4119f9,_0x117dca){return db['VtigerField'][_0x1e9e('0x4a')](_0x4119f9[_0x1e9e('0x4b')],{})[_0x1e9e('0x25')](respondWithResult(_0x117dca,0xc9))[_0x1e9e('0x44')](handleError(_0x117dca,null));};exports[_0x1e9e('0x23')]=function(_0x121be7,_0x102ef8){if(_0x121be7[_0x1e9e('0x4b')]['id']){delete _0x121be7[_0x1e9e('0x4b')]['id'];}return db[_0x1e9e('0x41')][_0x1e9e('0x49')]({'where':{'id':_0x121be7['params']['id']}})[_0x1e9e('0x25')](handleEntityNotFound(_0x102ef8,null))['then'](saveUpdates(_0x121be7['body'],null))[_0x1e9e('0x25')](respondWithResult(_0x102ef8,null))[_0x1e9e('0x44')](handleError(_0x102ef8,null));};exports[_0x1e9e('0x24')]=function(_0x27189b,_0x6ff3db){return db[_0x1e9e('0x41')][_0x1e9e('0x49')]({'where':{'id':_0x27189b[_0x1e9e('0x46')]['id']}})[_0x1e9e('0x25')](handleEntityNotFound(_0x6ff3db,null))[_0x1e9e('0x25')](removeEntity(_0x6ff3db,null))[_0x1e9e('0x44')](handleError(_0x6ff3db,null));};
\ No newline at end of file
index b531faf..972594d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcec1=['vtiger_unique_index','lodash','util','api','request-promise','path','../../config/environment','./intVtigerField.attributes','exports','define','int_vtiger_fields'];(function(_0x1d4d39,_0x2ad47e){var _0x5d2cb3=function(_0x1f6115){while(--_0x1f6115){_0x1d4d39['push'](_0x1d4d39['shift']());}};_0x5d2cb3(++_0x2ad47e);}(_0xcec1,0xc7));var _0x1cec=function(_0x503d8d,_0x3eee26){_0x503d8d=_0x503d8d-0x0;var _0x3b3a32=_0xcec1[_0x503d8d];return _0x3b3a32;};'use strict';var _=require(_0x1cec('0x0'));var util=require(_0x1cec('0x1'));var logger=require('../../config/logger')(_0x1cec('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1cec('0x3'));var fs=require('fs');var path=require(_0x1cec('0x4'));var rimraf=require('rimraf');var config=require(_0x1cec('0x5'));var attributes=require(_0x1cec('0x6'));module[_0x1cec('0x7')]=function(_0x16084a,_0x31f4a){return _0x16084a[_0x1cec('0x8')]('VtigerField',attributes,{'tableName':_0x1cec('0x9'),'paranoid':![],'indexes':[{'name':_0x1cec('0xa'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x67b6=['idField','FieldId','lodash','util','../../config/logger','api','request-promise','path','../../config/environment','./intVtigerField.attributes','exports','VtigerField','int_vtiger_fields'];(function(_0x43c34f,_0x50c335){var _0x3553a4=function(_0xa1e920){while(--_0xa1e920){_0x43c34f['push'](_0x43c34f['shift']());}};_0x3553a4(++_0x50c335);}(_0x67b6,0xdf));var _0x667b=function(_0x25bb67,_0x1c885f){_0x25bb67=_0x25bb67-0x0;var _0x30d77d=_0x67b6[_0x25bb67];return _0x30d77d;};'use strict';var _=require(_0x667b('0x0'));var util=require(_0x667b('0x1'));var logger=require(_0x667b('0x2'))(_0x667b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x667b('0x4'));var fs=require('fs');var path=require(_0x667b('0x5'));var rimraf=require('rimraf');var config=require(_0x667b('0x6'));var attributes=require(_0x667b('0x7'));module[_0x667b('0x8')]=function(_0x467164,_0x13a81b){return _0x467164['define'](_0x667b('0x9'),attributes,{'tableName':_0x667b('0xa'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0x667b('0xb'),_0x667b('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 68b68ec..4fde6a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f51=['VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VtigerField,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x5f51,0x9d));var _0x15f5=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5f51[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x15f5('0x0'));var util=require(_0x15f5('0x1'));var moment=require(_0x15f5('0x2'));var BPromise=require(_0x15f5('0x3'));var rs=require(_0x15f5('0x4'));var fs=require('fs');var Redis=require(_0x15f5('0x5'));var db=require(_0x15f5('0x6'))['db'];var utils=require(_0x15f5('0x7'));var logger=require(_0x15f5('0x8'))(_0x15f5('0x9'));var config=require(_0x15f5('0xa'));var jayson=require(_0x15f5('0xb'));var client=jayson[_0x15f5('0xc')][_0x15f5('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x19e9fd,_0x38f3c6,_0x548e14){return new BPromise(function(_0x3d7a8a,_0x59bc87){return client[_0x15f5('0xe')](_0x19e9fd,_0x548e14)[_0x15f5('0xf')](function(_0x1eb788){logger[_0x15f5('0x10')]('VtigerField,\x20%s,\x20%s',_0x38f3c6,_0x15f5('0x11'));logger['debug'](_0x15f5('0x12'),_0x38f3c6,_0x15f5('0x11'),JSON[_0x15f5('0x13')](_0x1eb788));if(_0x1eb788[_0x15f5('0x14')]){if(_0x1eb788['error'][_0x15f5('0x15')]===0x1f4){logger['error']('VtigerField,\x20%s,\x20%s',_0x38f3c6,_0x1eb788[_0x15f5('0x14')][_0x15f5('0x16')]);return _0x59bc87(_0x1eb788[_0x15f5('0x14')]['message']);}logger['error'](_0x15f5('0x17'),_0x38f3c6,_0x1eb788[_0x15f5('0x14')][_0x15f5('0x16')]);return _0x3d7a8a(_0x1eb788[_0x15f5('0x14')][_0x15f5('0x16')]);}else{logger[_0x15f5('0x10')](_0x15f5('0x17'),_0x38f3c6,'request\x20sent');_0x3d7a8a(_0x1eb788[_0x15f5('0x18')][_0x15f5('0x16')]);}})['catch'](function(_0x43eae7){logger['error']('VtigerField,\x20%s,\x20%s',_0x38f3c6,_0x43eae7);_0x59bc87(_0x43eae7);});});}
\ No newline at end of file
+var _0x96c9=['info','request\x20sent','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','code','error','VtigerField,\x20%s,\x20%s','message'];(function(_0x32b65a,_0xe2b10b){var _0x3b4335=function(_0x436a48){while(--_0x436a48){_0x32b65a['push'](_0x32b65a['shift']());}};_0x3b4335(++_0xe2b10b);}(_0x96c9,0xc9));var _0x996c=function(_0x4fb472,_0x140440){_0x4fb472=_0x4fb472-0x0;var _0x436005=_0x96c9[_0x4fb472];return _0x436005;};'use strict';var _=require(_0x996c('0x0'));var util=require('util');var moment=require(_0x996c('0x1'));var BPromise=require('bluebird');var rs=require(_0x996c('0x2'));var fs=require('fs');var Redis=require(_0x996c('0x3'));var db=require(_0x996c('0x4'))['db'];var utils=require(_0x996c('0x5'));var logger=require(_0x996c('0x6'))(_0x996c('0x7'));var config=require(_0x996c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x996c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x306646,_0x39796b,_0x5926a3){return new BPromise(function(_0x18c2fd,_0x4139b5){return client[_0x996c('0xa')](_0x306646,_0x5926a3)[_0x996c('0xb')](function(_0x3f83ec){logger['info']('VtigerField,\x20%s,\x20%s',_0x39796b,'request\x20sent');logger[_0x996c('0xc')](_0x996c('0xd'),_0x39796b,'request\x20sent',JSON[_0x996c('0xe')](_0x3f83ec));if(_0x3f83ec['error']){if(_0x3f83ec['error'][_0x996c('0xf')]===0x1f4){logger[_0x996c('0x10')](_0x996c('0x11'),_0x39796b,_0x3f83ec[_0x996c('0x10')][_0x996c('0x12')]);return _0x4139b5(_0x3f83ec[_0x996c('0x10')]['message']);}logger['error']('VtigerField,\x20%s,\x20%s',_0x39796b,_0x3f83ec['error']['message']);return _0x18c2fd(_0x3f83ec['error'][_0x996c('0x12')]);}else{logger[_0x996c('0x13')](_0x996c('0x11'),_0x39796b,_0x996c('0x14'));_0x18c2fd(_0x3f83ec[_0x996c('0x15')][_0x996c('0x12')]);}})['catch'](function(_0x2eb3b8){logger[_0x996c('0x10')](_0x996c('0x11'),_0x39796b,_0x2eb3b8);_0x4139b5(_0x2eb3b8);});});}
\ No newline at end of file
index 0fb1c10..e77bd6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd769=['getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','index','/:id','show','/:id/configurations','isAuthenticated'];(function(_0x2896f7,_0x44f1a1){var _0x1f6190=function(_0xb0a5d8){while(--_0xb0a5d8){_0x2896f7['push'](_0x2896f7['shift']());}};_0x1f6190(++_0x44f1a1);}(_0xd769,0x19a));var _0x9d76=function(_0xebdcc1,_0x24d0df){_0xebdcc1=_0xebdcc1-0x0;var _0x2d32d4=_0xd769[_0xebdcc1];return _0x2d32d4;};'use strict';var multer=require(_0x9d76('0x0'));var util=require(_0x9d76('0x1'));var path=require(_0x9d76('0x2'));var timeout=require('connect-timeout');var express=require(_0x9d76('0x3'));var router=express[_0x9d76('0x4')]();var fs_extra=require(_0x9d76('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9d76('0x6'));var config=require(_0x9d76('0x7'));var controller=require(_0x9d76('0x8'));router[_0x9d76('0x9')]('/',auth['isAuthenticated'](),controller[_0x9d76('0xa')]);router['get'](_0x9d76('0xb'),auth['isAuthenticated'](),controller[_0x9d76('0xc')]);router['get'](_0x9d76('0xd'),auth[_0x9d76('0xe')](),controller[_0x9d76('0xf')]);router['get'](_0x9d76('0x10'),auth[_0x9d76('0xe')](),controller['getFields']);router[_0x9d76('0x11')]('/',auth[_0x9d76('0xe')](),controller[_0x9d76('0x12')]);router[_0x9d76('0x11')](_0x9d76('0xd'),auth[_0x9d76('0xe')](),controller[_0x9d76('0x13')]);router[_0x9d76('0x14')](_0x9d76('0xb'),auth[_0x9d76('0xe')](),controller[_0x9d76('0x15')]);router[_0x9d76('0x16')](_0x9d76('0xb'),auth[_0x9d76('0xe')](),controller[_0x9d76('0x17')]);module[_0x9d76('0x18')]=router;
\ No newline at end of file
+var _0x9407=['getFields','create','post','update','delete','exports','multer','util','express','fs-extra','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','/:id/fields'];(function(_0xe73080,_0x24c56d){var _0x12cbc4=function(_0x1377e2){while(--_0x1377e2){_0xe73080['push'](_0xe73080['shift']());}};_0x12cbc4(++_0x24c56d);}(_0x9407,0x1ec));var _0x7940=function(_0x2fe1c3,_0x4db089){_0x2fe1c3=_0x2fe1c3-0x0;var _0x2bd97d=_0x9407[_0x2fe1c3];return _0x2bd97d;};'use strict';var multer=require(_0x7940('0x0'));var util=require(_0x7940('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7940('0x2'));var router=express['Router']();var fs_extra=require(_0x7940('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7940('0x4'));var controller=require(_0x7940('0x5'));router[_0x7940('0x6')]('/',auth[_0x7940('0x7')](),controller['index']);router[_0x7940('0x6')](_0x7940('0x8'),auth[_0x7940('0x7')](),controller['show']);router[_0x7940('0x6')](_0x7940('0x9'),auth[_0x7940('0x7')](),controller[_0x7940('0xa')]);router[_0x7940('0x6')](_0x7940('0xb'),auth[_0x7940('0x7')](),controller[_0x7940('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7940('0xd')]);router[_0x7940('0xe')](_0x7940('0x9'),auth[_0x7940('0x7')](),controller['addConfiguration']);router['put'](_0x7940('0x8'),auth[_0x7940('0x7')](),controller[_0x7940('0xf')]);router[_0x7940('0x10')]('/:id',auth[_0x7940('0x7')](),controller['destroy']);module[_0x7940('0x11')]=router;
\ No newline at end of file
index 7c941db..eb40fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c85=['password','token','newTab','sequelize','exports','STRING','ENUM'];(function(_0x216494,_0x21a0b4){var _0x3fce22=function(_0x510bbd){while(--_0x510bbd){_0x216494['push'](_0x216494['shift']());}};_0x3fce22(++_0x21a0b4);}(_0x3c85,0x1a0));var _0x53c8=function(_0xddc9ba,_0x596490){_0xddc9ba=_0xddc9ba-0x0;var _0x4d7a1c=_0x3c85[_0xddc9ba];return _0x4d7a1c;};'use strict';var Sequelize=require(_0x53c8('0x0'));module[_0x53c8('0x1')]={'name':{'type':Sequelize[_0x53c8('0x2')]},'description':{'type':Sequelize[_0x53c8('0x2')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize[_0x53c8('0x2')]},'token':{'type':Sequelize[_0x53c8('0x2')]},'remoteUri':{'type':Sequelize[_0x53c8('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0x53c8('0x3')](_0x53c8('0x4'),_0x53c8('0x5')),'defaultValue':'password'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x53c8('0x6')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x06ae=['username','remoteUri','password','ENUM','integrationTab','newTab','exports','STRING'];(function(_0x4d6ac0,_0x201628){var _0x5296c4=function(_0x3d0b3d){while(--_0x3d0b3d){_0x4d6ac0['push'](_0x4d6ac0['shift']());}};_0x5296c4(++_0x201628);}(_0x06ae,0x16e));var _0xe06a=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x06ae[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require('sequelize');module[_0xe06a('0x0')]={'name':{'type':Sequelize[_0xe06a('0x1')]},'description':{'type':Sequelize[_0xe06a('0x1')]},'username':{'type':Sequelize[_0xe06a('0x1')],'unique':_0xe06a('0x2')},'password':{'type':Sequelize[_0xe06a('0x1')]},'token':{'type':Sequelize[_0xe06a('0x1')]},'remoteUri':{'type':Sequelize[_0xe06a('0x1')],'unique':_0xe06a('0x3')},'authType':{'type':Sequelize['ENUM']('password','token'),'defaultValue':_0xe06a('0x4')},'serverUrl':{'type':Sequelize[_0xe06a('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xe06a('0x5')](_0xe06a('0x6'),_0xe06a('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index d8e0abf..6a6527e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d2=['where','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params','ZendeskConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','ZendeskField','getFields','password','authType','remoteUri','slice','substring','GET','%s/%s','ticket_fields','headers','format','%s:%s','toString','base64','Basic\x20%s','%s/token:%s','username','Sequelize','subject','description','assignee','remove','position','title','system_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','error','stack','index','map','ZendeskAccount','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge'];(function(_0x25b24a,_0x1c0163){var _0x224e68=function(_0x1fc9d2){while(--_0x1fc9d2){_0x25b24a['push'](_0x25b24a['shift']());}};_0x224e68(++_0x1c0163);}(_0x16d2,0x123));var _0x216d=function(_0x1f6a0f,_0x75bef2){_0x1f6a0f=_0x1f6a0f-0x0;var _0x1de297=_0x16d2[_0x1f6a0f];return _0x1de297;};'use strict';var emlformat=require(_0x216d('0x0'));var rimraf=require(_0x216d('0x1'));var zipdir=require(_0x216d('0x2'));var jsonpatch=require(_0x216d('0x3'));var rp=require(_0x216d('0x4'));var moment=require(_0x216d('0x5'));var BPromise=require(_0x216d('0x6'));var Mustache=require(_0x216d('0x7'));var util=require(_0x216d('0x8'));var path=require('path');var sox=require(_0x216d('0x9'));var csv=require(_0x216d('0xa'));var ejs=require(_0x216d('0xb'));var fs=require('fs');var fs_extra=require(_0x216d('0xc'));var _=require(_0x216d('0xd'));var squel=require(_0x216d('0xe'));var crypto=require(_0x216d('0xf'));var jsforce=require(_0x216d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x216d('0xa'));var querystring=require(_0x216d('0x11'));var Papa=require(_0x216d('0x12'));var Redis=require(_0x216d('0x13'));var authService=require(_0x216d('0x14'));var qs=require(_0x216d('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x216d('0x16'));var logger=require('../../config/logger')(_0x216d('0x17'));var utils=require(_0x216d('0x18'));var config=require(_0x216d('0x19'));var licenseUtil=require(_0x216d('0x1a'));var db=require(_0x216d('0x1b'))['db'];var integrations=require(_0x216d('0x1c'));function respondWithStatusCode(_0x4c92d9,_0xb36a43){_0xb36a43=_0xb36a43||0xcc;return function(_0x4c07d0){if(_0x4c07d0){return _0x4c92d9[_0x216d('0x1d')](_0xb36a43);}return _0x4c92d9[_0x216d('0x1e')](_0xb36a43)['end']();};}function respondWithResult(_0x165c19,_0x322e4b){_0x322e4b=_0x322e4b||0xc8;return function(_0x54a816){if(_0x54a816){return _0x165c19[_0x216d('0x1e')](_0x322e4b)['json'](_0x54a816);}};}function respondWithFilteredResult(_0x448c0d,_0xf571a4){return function(_0x4631b0){if(_0x4631b0){var _0x23ff86=typeof _0xf571a4[_0x216d('0x1f')]===_0x216d('0x20')&&typeof _0xf571a4[_0x216d('0x21')]===_0x216d('0x20');var _0x19fdac=_0x4631b0['count'];var _0x3b60dd=_0x23ff86?0x0:_0xf571a4['offset'];var _0x4ddc51=_0x23ff86?_0x4631b0[_0x216d('0x22')]:_0xf571a4[_0x216d('0x1f')]+_0xf571a4['limit'];var _0x3f32e0;if(_0x4ddc51>=_0x19fdac){_0x4ddc51=_0x19fdac;_0x3f32e0=0xc8;}else{_0x3f32e0=0xce;}_0x448c0d[_0x216d('0x1e')](_0x3f32e0);return _0x448c0d['set'](_0x216d('0x23'),_0x3b60dd+'-'+_0x4ddc51+'/'+_0x19fdac)[_0x216d('0x24')](_0x4631b0);}return null;};}function patchUpdates(_0x430e81){return function(_0x3e9818){try{jsonpatch['apply'](_0x3e9818,_0x430e81,!![]);}catch(_0x20ee7c){return BPromise[_0x216d('0x25')](_0x20ee7c);}return _0x3e9818[_0x216d('0x26')]();};}function saveUpdates(_0x438981,_0x206782){return function(_0x57cfbd){if(_0x57cfbd){return _0x57cfbd[_0x216d('0x27')](_0x438981)[_0x216d('0x28')](function(_0x188494){return _0x188494;});}return null;};}function removeEntity(_0x2880c6,_0x6fa4b3){return function(_0x54d96f){if(_0x54d96f){return _0x54d96f[_0x216d('0x29')]()[_0x216d('0x28')](function(){_0x2880c6[_0x216d('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec8a7,_0x56460f){return function(_0x4c792e){if(!_0x4c792e){_0x4ec8a7['sendStatus'](0x194);}return _0x4c792e;};}function handleError(_0x32f240,_0x470d8a){_0x470d8a=_0x470d8a||0x1f4;return function(_0x189413){logger[_0x216d('0x2a')](_0x189413[_0x216d('0x2b')]);if(_0x189413['name']){delete _0x189413['name'];}_0x32f240[_0x216d('0x1e')](_0x470d8a)['send'](_0x189413);};}exports[_0x216d('0x2c')]=function(_0x42abbe,_0x10f7c6){var _0x20bc16={},_0x307f2b={},_0x12bcab={'count':0x0,'rows':[]};var _0x28fcc2=_[_0x216d('0x2d')](db[_0x216d('0x2e')][_0x216d('0x2f')],function(_0x11be90){return{'name':_0x11be90[_0x216d('0x30')],'type':_0x11be90[_0x216d('0x31')]['key']};});_0x307f2b[_0x216d('0x32')]=_[_0x216d('0x2d')](_0x28fcc2,_0x216d('0x33'));_0x307f2b['query']=_[_0x216d('0x34')](_0x42abbe[_0x216d('0x35')]);_0x307f2b[_0x216d('0x36')]=_[_0x216d('0x37')](_0x307f2b['model'],_0x307f2b[_0x216d('0x35')]);_0x20bc16[_0x216d('0x38')]=_[_0x216d('0x37')](_0x307f2b[_0x216d('0x32')],qs[_0x216d('0x39')](_0x42abbe[_0x216d('0x35')][_0x216d('0x39')]));_0x20bc16[_0x216d('0x38')]=_0x20bc16[_0x216d('0x38')][_0x216d('0x3a')]?_0x20bc16[_0x216d('0x38')]:_0x307f2b['model'];if(!_0x42abbe[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x20bc16['limit']=qs[_0x216d('0x21')](_0x42abbe[_0x216d('0x35')]['limit']);_0x20bc16[_0x216d('0x1f')]=qs['offset'](_0x42abbe['query'][_0x216d('0x1f')]);}_0x20bc16[_0x216d('0x3d')]=qs[_0x216d('0x3e')](_0x42abbe[_0x216d('0x35')]['sort']);_0x20bc16['where']=qs['filters'](_[_0x216d('0x3f')](_0x42abbe[_0x216d('0x35')],_0x307f2b['filters']),_0x28fcc2);if(_0x42abbe[_0x216d('0x35')][_0x216d('0x40')]){_0x20bc16['where']=_[_0x216d('0x41')](_0x20bc16[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x28fcc2,function(_0x474fab){if(_0x474fab[_0x216d('0x31')]!==_0x216d('0x43')){var _0x35cb6e={};_0x35cb6e[_0x474fab[_0x216d('0x33')]]={'$like':'%'+_0x42abbe['query']['filter']+'%'};return _0x35cb6e;}})});}_0x20bc16=_[_0x216d('0x41')]({},_0x20bc16,_0x42abbe[_0x216d('0x44')]);var _0x504a34={'where':_0x20bc16[_0x216d('0x42')]};return db[_0x216d('0x2e')][_0x216d('0x22')](_0x504a34)['then'](function(_0x2c3e44){_0x12bcab[_0x216d('0x22')]=_0x2c3e44;if(_0x42abbe[_0x216d('0x35')][_0x216d('0x45')]){_0x20bc16['include']=[{'all':!![]}];}return db[_0x216d('0x2e')][_0x216d('0x46')](_0x20bc16);})['then'](function(_0x37bf4a){_0x12bcab[_0x216d('0x47')]=_0x37bf4a;return _0x12bcab;})['then'](respondWithFilteredResult(_0x10f7c6,_0x20bc16))['catch'](handleError(_0x10f7c6,null));};exports[_0x216d('0x48')]=function(_0x440bc9,_0x3c491e){var _0x498efe={'raw':![],'where':{'id':_0x440bc9['params']['id']}},_0x3e361a={};_0x3e361a['model']=_[_0x216d('0x34')](db[_0x216d('0x2e')][_0x216d('0x2f')]);_0x3e361a['query']=_[_0x216d('0x34')](_0x440bc9['query']);_0x3e361a[_0x216d('0x36')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],_0x3e361a['query']);_0x498efe[_0x216d('0x38')]=_[_0x216d('0x37')](_0x3e361a[_0x216d('0x32')],qs[_0x216d('0x39')](_0x440bc9['query']['fields']));_0x498efe['attributes']=_0x498efe[_0x216d('0x38')][_0x216d('0x3a')]?_0x498efe[_0x216d('0x38')]:_0x3e361a[_0x216d('0x32')];if(_0x440bc9[_0x216d('0x35')][_0x216d('0x45')]){_0x498efe[_0x216d('0x49')]=[{'all':!![]}];}_0x498efe=_[_0x216d('0x41')]({},_0x498efe,_0x440bc9['options']);return db[_0x216d('0x2e')][_0x216d('0x4a')](_0x498efe)[_0x216d('0x28')](handleEntityNotFound(_0x3c491e,null))[_0x216d('0x28')](respondWithResult(_0x3c491e,null))['catch'](handleError(_0x3c491e,null));};exports[_0x216d('0x4b')]=function(_0x542e1b,_0x1f2fa5){return db[_0x216d('0x2e')][_0x216d('0x4b')](_0x542e1b['body'],{})['then'](respondWithResult(_0x1f2fa5,0xc9))[_0x216d('0x4c')](handleError(_0x1f2fa5,null));};exports[_0x216d('0x27')]=function(_0x3932a3,_0x1340fe){if(_0x3932a3[_0x216d('0x4d')]['id']){delete _0x3932a3[_0x216d('0x4d')]['id'];}return db['ZendeskAccount']['find']({'where':{'id':_0x3932a3[_0x216d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1340fe,null))[_0x216d('0x28')](saveUpdates(_0x3932a3[_0x216d('0x4d')],null))['then'](respondWithResult(_0x1340fe,null))['catch'](handleError(_0x1340fe,null));};exports['destroy']=function(_0x4bac14,_0x1ae9b7){return db[_0x216d('0x2e')][_0x216d('0x4a')]({'where':{'id':_0x4bac14[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x1ae9b7,null))[_0x216d('0x28')](removeEntity(_0x1ae9b7,null))[_0x216d('0x4c')](handleError(_0x1ae9b7,null));};exports['getConfigurations']=function(_0x3f70c9,_0x34cdb9,_0x119b12){var _0x54dd49={};var _0x1e1caf={};var _0x10fe2e;var _0x2c7c67;return db[_0x216d('0x2e')]['findOne']({'where':{'id':_0x3f70c9[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x34cdb9,null))[_0x216d('0x28')](function(_0x1a4761){if(_0x1a4761){_0x10fe2e=_0x1a4761;_0x1e1caf['model']=_[_0x216d('0x34')](db[_0x216d('0x4f')]['rawAttributes']);_0x1e1caf[_0x216d('0x35')]=_['keys'](_0x3f70c9[_0x216d('0x35')]);_0x1e1caf[_0x216d('0x36')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],_0x1e1caf[_0x216d('0x35')]);_0x54dd49[_0x216d('0x38')]=_[_0x216d('0x37')](_0x1e1caf[_0x216d('0x32')],qs[_0x216d('0x39')](_0x3f70c9['query'][_0x216d('0x39')]));_0x54dd49[_0x216d('0x38')]=_0x54dd49['attributes'][_0x216d('0x3a')]?_0x54dd49[_0x216d('0x38')]:_0x1e1caf['model'];_0x54dd49['order']=qs[_0x216d('0x3e')](_0x3f70c9['query'][_0x216d('0x3e')]);_0x54dd49[_0x216d('0x42')]=qs[_0x216d('0x36')](_['pick'](_0x3f70c9[_0x216d('0x35')],_0x1e1caf['filters']));if(_0x3f70c9['query'][_0x216d('0x40')]){_0x54dd49[_0x216d('0x42')]=_['merge'](_0x54dd49[_0x216d('0x42')],{'$or':_[_0x216d('0x2d')](_0x54dd49[_0x216d('0x38')],function(_0x3f9097){var _0x2ae667={};_0x2ae667[_0x3f9097]={'$like':'%'+_0x3f70c9[_0x216d('0x35')]['filter']+'%'};return _0x2ae667;})});}_0x54dd49=_['merge']({},_0x54dd49,_0x3f70c9[_0x216d('0x44')]);return _0x10fe2e[_0x216d('0x50')](_0x54dd49);}})[_0x216d('0x28')](function(_0x1551b6){if(_0x1551b6){_0x2c7c67=_0x1551b6[_0x216d('0x3a')];if(!_0x3f70c9[_0x216d('0x35')][_0x216d('0x3b')](_0x216d('0x3c'))){_0x54dd49[_0x216d('0x21')]=qs[_0x216d('0x21')](_0x3f70c9[_0x216d('0x35')][_0x216d('0x21')]);_0x54dd49['offset']=qs['offset'](_0x3f70c9[_0x216d('0x35')][_0x216d('0x1f')]);}return _0x10fe2e['getConfigurations'](_0x54dd49);}})[_0x216d('0x28')](function(_0x5eb684){if(_0x5eb684){return _0x5eb684?{'count':_0x2c7c67,'rows':_0x5eb684}:null;}})['then'](respondWithResult(_0x34cdb9,null))[_0x216d('0x4c')](handleError(_0x34cdb9,null));};exports[_0x216d('0x51')]=function(_0x20806e,_0x17ce26,_0x1d404c){if(_0x20806e[_0x216d('0x4d')]['id']){delete _0x20806e[_0x216d('0x4d')]['id'];}return db[_0x216d('0x2e')][_0x216d('0x52')]({'where':{'id':_0x20806e[_0x216d('0x4e')]['id']}})[_0x216d('0x28')](handleEntityNotFound(_0x17ce26,null))[_0x216d('0x28')](function(_0x19c7cf){if(_0x19c7cf){_0x20806e[_0x216d('0x4d')][_0x216d('0x53')]=_0x19c7cf['id'];_0x20806e[_0x216d('0x4d')][_0x216d('0x54')]=integrations[_0x216d('0x55')](_0x20806e[_0x216d('0x4d')][_0x216d('0x56')],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);_0x20806e['body'][_0x216d('0x57')]=integrations['getDescriptions'](_0x20806e[_0x216d('0x4d')]['channel'],_0x20806e[_0x216d('0x4d')][_0x216d('0x31')]);return db['ZendeskConfiguration'][_0x216d('0x4b')](_0x20806e[_0x216d('0x4d')],{'include':[{'model':db[_0x216d('0x58')],'as':_0x216d('0x54')},{'model':db[_0x216d('0x58')],'as':_0x216d('0x57')}]});}return null;})[_0x216d('0x28')](respondWithResult(_0x17ce26,null))[_0x216d('0x4c')](handleError(_0x17ce26,null));};exports[_0x216d('0x59')]=function(_0x5acc44,_0x120f8a,_0x299cc7){var _0x16cf09='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x5acc44['params']['id']},'attributes':['id','username',_0x216d('0x5a'),'token',_0x216d('0x5b'),_0x216d('0x5c')]})[_0x216d('0x28')](handleEntityNotFound(_0x120f8a,null))[_0x216d('0x28')](function(_0x431014){if(_0x431014){_0x16cf09=_0x431014[_0x216d('0x5c')];var _0x3a2e7c=_0x16cf09[_0x216d('0x5d')](-0x1);if(_0x3a2e7c==='/'){_0x16cf09=_0x16cf09[_0x216d('0x5e')](0x0,_0x16cf09['lastIndexOf'](_0x3a2e7c));}var _0x4e4e1a={'method':_0x216d('0x5f'),'uri':util['format'](_0x216d('0x60'),_0x16cf09,_0x216d('0x61')),'json':!![]};switch(_0x431014[_0x216d('0x5b')]){case _0x216d('0x5a'):_0x4e4e1a[_0x216d('0x62')]={'Authorization':util[_0x216d('0x63')]('Basic\x20%s',new Buffer(util['format'](_0x216d('0x64'),_0x431014['username'],_0x431014[_0x216d('0x5a')]))[_0x216d('0x65')](_0x216d('0x66')))};break;case'token':_0x4e4e1a['headers']={'Authorization':util['format'](_0x216d('0x67'),new Buffer(util[_0x216d('0x63')](_0x216d('0x68'),_0x431014[_0x216d('0x69')],_0x431014['token']))[_0x216d('0x65')](_0x216d('0x66')))};break;default:throw new db[(_0x216d('0x6a'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x4e4e1a);}})[_0x216d('0x28')](function(_0x87511b){if(_0x87511b){var _0x273d11=[_0x216d('0x6b'),_0x216d('0x6c'),'group',_0x216d('0x6d')];_[_0x216d('0x6e')](_0x87511b[_0x216d('0x61')],function(_0x325bd8){return _0x273d11['includes'](_0x325bd8[_0x216d('0x31')]);});return{'count':_0x87511b['ticket_fields'][_0x216d('0x3a')],'rows':_['map'](_0x87511b[_0x216d('0x61')],function(_0x3ae6df){return{'id':_0x3ae6df['id'],'name':_0x3ae6df[_0x216d('0x6f')]>0x7?_0x3ae6df[_0x216d('0x70')]:_0x3ae6df[_0x216d('0x31')],'custom':_0x3ae6df['position']>0x7?!![]:![],'options':_0x3ae6df[_0x216d('0x71')]?_0x3ae6df['system_field_options']:_0x3ae6df['custom_field_options']?_0x3ae6df['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x120f8a,null))[_0x216d('0x4c')](function(_0x38e7d7){var _0xa1594b=_0x5acc44['query']['test']?0x1f4:_0x38e7d7[_0x216d('0x72')]||0x1f4;logger[_0x216d('0x2a')](_0x216d('0x73'),_0x216d('0x59'),_0xa1594b,JSON[_0x216d('0x74')](_0x38e7d7));delete _0x38e7d7['name'];if(_0xa1594b===0x191){_0xa1594b=0x190;}_0x120f8a['status'](_0xa1594b)[_0x216d('0x75')](_0x5acc44['query'][_0x216d('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x38e7d7[_0x216d('0x72')]}:_0x38e7d7);});};
\ No newline at end of file
+var _0xee5b=['model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','destroy','getConfigurations','findOne','ZendeskConfiguration','getSubjects','Descriptions','getDescriptions','ZendeskField','Subjects','getFields','username','password','token','authType','remoteUri','slice','lastIndexOf','GET','format','ticket_fields','%s:%s','toString','base64','headers','Basic\x20%s','%s/token:%s','Unknown\x20authentication\x20type','subject','description','group','includes','position','custom_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','error','name','send','index','map','ZendeskAccount','rawAttributes','type'];(function(_0x22d82b,_0xe798c4){var _0x37fea1=function(_0x2049ef){while(--_0x2049ef){_0x22d82b['push'](_0x22d82b['shift']());}};_0x37fea1(++_0xe798c4);}(_0xee5b,0x1f4));var _0xbee5=function(_0x13b32b,_0xe4079c){_0x13b32b=_0x13b32b-0x0;var _0x1e7407=_0xee5b[_0x13b32b];return _0x1e7407;};'use strict';var emlformat=require(_0xbee5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbee5('0x1'));var jsonpatch=require(_0xbee5('0x2'));var rp=require('request-promise');var moment=require(_0xbee5('0x3'));var BPromise=require(_0xbee5('0x4'));var Mustache=require(_0xbee5('0x5'));var util=require(_0xbee5('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xbee5('0x7'));var ejs=require(_0xbee5('0x8'));var fs=require('fs');var fs_extra=require(_0xbee5('0x9'));var _=require(_0xbee5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbee5('0xb'));var Papa=require(_0xbee5('0xc'));var Redis=require(_0xbee5('0xd'));var authService=require(_0xbee5('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xbee5('0xf'));var hardwareService=require(_0xbee5('0x10'));var logger=require(_0xbee5('0x11'))(_0xbee5('0x12'));var utils=require(_0xbee5('0x13'));var config=require(_0xbee5('0x14'));var licenseUtil=require(_0xbee5('0x15'));var db=require(_0xbee5('0x16'))['db'];var integrations=require(_0xbee5('0x17'));function respondWithStatusCode(_0x48f771,_0x14e032){_0x14e032=_0x14e032||0xcc;return function(_0x532a78){if(_0x532a78){return _0x48f771[_0xbee5('0x18')](_0x14e032);}return _0x48f771[_0xbee5('0x19')](_0x14e032)[_0xbee5('0x1a')]();};}function respondWithResult(_0x593ecb,_0x5092f2){_0x5092f2=_0x5092f2||0xc8;return function(_0x3c6e56){if(_0x3c6e56){return _0x593ecb['status'](_0x5092f2)[_0xbee5('0x1b')](_0x3c6e56);}};}function respondWithFilteredResult(_0x5426c9,_0x1a24bd){return function(_0x141878){if(_0x141878){var _0xf676b1=typeof _0x1a24bd['offset']===_0xbee5('0x1c')&&typeof _0x1a24bd[_0xbee5('0x1d')]==='undefined';var _0x254dd3=_0x141878[_0xbee5('0x1e')];var _0x11b4a3=_0xf676b1?0x0:_0x1a24bd[_0xbee5('0x1f')];var _0x35eb5c=_0xf676b1?_0x141878[_0xbee5('0x1e')]:_0x1a24bd[_0xbee5('0x1f')]+_0x1a24bd[_0xbee5('0x1d')];var _0x20cf52;if(_0x35eb5c>=_0x254dd3){_0x35eb5c=_0x254dd3;_0x20cf52=0xc8;}else{_0x20cf52=0xce;}_0x5426c9[_0xbee5('0x19')](_0x20cf52);return _0x5426c9[_0xbee5('0x20')](_0xbee5('0x21'),_0x11b4a3+'-'+_0x35eb5c+'/'+_0x254dd3)[_0xbee5('0x1b')](_0x141878);}return null;};}function patchUpdates(_0x40a06){return function(_0x450824){try{jsonpatch['apply'](_0x450824,_0x40a06,!![]);}catch(_0x550325){return BPromise[_0xbee5('0x22')](_0x550325);}return _0x450824['save']();};}function saveUpdates(_0x205491,_0x117cb3){return function(_0x3cee7f){if(_0x3cee7f){return _0x3cee7f[_0xbee5('0x23')](_0x205491)[_0xbee5('0x24')](function(_0xb665df){return _0xb665df;});}return null;};}function removeEntity(_0x359ccf,_0x3cfa8d){return function(_0xc79035){if(_0xc79035){return _0xc79035['destroy']()['then'](function(){_0x359ccf['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x50d774,_0x1af3de){return function(_0x18d7f4){if(!_0x18d7f4){_0x50d774[_0xbee5('0x18')](0x194);}return _0x18d7f4;};}function handleError(_0x28c74d,_0x169042){_0x169042=_0x169042||0x1f4;return function(_0x20e7e8){logger[_0xbee5('0x25')](_0x20e7e8['stack']);if(_0x20e7e8[_0xbee5('0x26')]){delete _0x20e7e8[_0xbee5('0x26')];}_0x28c74d[_0xbee5('0x19')](_0x169042)[_0xbee5('0x27')](_0x20e7e8);};}exports[_0xbee5('0x28')]=function(_0x5f0419,_0x21b993){var _0x15ffb1={},_0xb7a077={},_0x136a00={'count':0x0,'rows':[]};var _0xa57f85=_[_0xbee5('0x29')](db[_0xbee5('0x2a')][_0xbee5('0x2b')],function(_0x2ccb91){return{'name':_0x2ccb91['fieldName'],'type':_0x2ccb91[_0xbee5('0x2c')]['key']};});_0xb7a077[_0xbee5('0x2d')]=_['map'](_0xa57f85,_0xbee5('0x26'));_0xb7a077['query']=_[_0xbee5('0x2e')](_0x5f0419['query']);_0xb7a077[_0xbee5('0x2f')]=_[_0xbee5('0x30')](_0xb7a077[_0xbee5('0x2d')],_0xb7a077[_0xbee5('0x31')]);_0x15ffb1['attributes']=_[_0xbee5('0x30')](_0xb7a077[_0xbee5('0x2d')],qs[_0xbee5('0x32')](_0x5f0419[_0xbee5('0x31')]['fields']));_0x15ffb1[_0xbee5('0x33')]=_0x15ffb1[_0xbee5('0x33')][_0xbee5('0x34')]?_0x15ffb1[_0xbee5('0x33')]:_0xb7a077['model'];if(!_0x5f0419[_0xbee5('0x31')][_0xbee5('0x35')](_0xbee5('0x36'))){_0x15ffb1[_0xbee5('0x1d')]=qs['limit'](_0x5f0419[_0xbee5('0x31')]['limit']);_0x15ffb1[_0xbee5('0x1f')]=qs['offset'](_0x5f0419['query']['offset']);}_0x15ffb1[_0xbee5('0x37')]=qs[_0xbee5('0x38')](_0x5f0419[_0xbee5('0x31')][_0xbee5('0x38')]);_0x15ffb1[_0xbee5('0x39')]=qs[_0xbee5('0x2f')](_[_0xbee5('0x3a')](_0x5f0419[_0xbee5('0x31')],_0xb7a077['filters']),_0xa57f85);if(_0x5f0419[_0xbee5('0x31')]['filter']){_0x15ffb1[_0xbee5('0x39')]=_[_0xbee5('0x3b')](_0x15ffb1[_0xbee5('0x39')],{'$or':_[_0xbee5('0x29')](_0xa57f85,function(_0x4a89ac){if(_0x4a89ac[_0xbee5('0x2c')]!=='VIRTUAL'){var _0x565e9f={};_0x565e9f[_0x4a89ac[_0xbee5('0x26')]]={'$like':'%'+_0x5f0419[_0xbee5('0x31')][_0xbee5('0x3c')]+'%'};return _0x565e9f;}})});}_0x15ffb1=_[_0xbee5('0x3b')]({},_0x15ffb1,_0x5f0419['options']);var _0xf3dd5={'where':_0x15ffb1[_0xbee5('0x39')]};return db[_0xbee5('0x2a')][_0xbee5('0x1e')](_0xf3dd5)[_0xbee5('0x24')](function(_0x25cf17){_0x136a00[_0xbee5('0x1e')]=_0x25cf17;if(_0x5f0419[_0xbee5('0x31')][_0xbee5('0x3d')]){_0x15ffb1[_0xbee5('0x3e')]=[{'all':!![]}];}return db['ZendeskAccount'][_0xbee5('0x3f')](_0x15ffb1);})[_0xbee5('0x24')](function(_0x5637e0){_0x136a00[_0xbee5('0x40')]=_0x5637e0;return _0x136a00;})[_0xbee5('0x24')](respondWithFilteredResult(_0x21b993,_0x15ffb1))[_0xbee5('0x41')](handleError(_0x21b993,null));};exports[_0xbee5('0x42')]=function(_0x4dad75,_0x4cfe54){var _0x4b4641={'raw':![],'where':{'id':_0x4dad75[_0xbee5('0x43')]['id']}},_0x138a40={};_0x138a40[_0xbee5('0x2d')]=_[_0xbee5('0x2e')](db[_0xbee5('0x2a')][_0xbee5('0x2b')]);_0x138a40[_0xbee5('0x31')]=_[_0xbee5('0x2e')](_0x4dad75[_0xbee5('0x31')]);_0x138a40['filters']=_['intersection'](_0x138a40[_0xbee5('0x2d')],_0x138a40['query']);_0x4b4641[_0xbee5('0x33')]=_[_0xbee5('0x30')](_0x138a40['model'],qs[_0xbee5('0x32')](_0x4dad75[_0xbee5('0x31')]['fields']));_0x4b4641['attributes']=_0x4b4641[_0xbee5('0x33')][_0xbee5('0x34')]?_0x4b4641['attributes']:_0x138a40[_0xbee5('0x2d')];if(_0x4dad75[_0xbee5('0x31')]['includeAll']){_0x4b4641[_0xbee5('0x3e')]=[{'all':!![]}];}_0x4b4641=_[_0xbee5('0x3b')]({},_0x4b4641,_0x4dad75[_0xbee5('0x44')]);return db[_0xbee5('0x2a')][_0xbee5('0x45')](_0x4b4641)[_0xbee5('0x24')](handleEntityNotFound(_0x4cfe54,null))[_0xbee5('0x24')](respondWithResult(_0x4cfe54,null))['catch'](handleError(_0x4cfe54,null));};exports[_0xbee5('0x46')]=function(_0x34f01d,_0x27ea7b){return db[_0xbee5('0x2a')]['create'](_0x34f01d[_0xbee5('0x47')],{})[_0xbee5('0x24')](respondWithResult(_0x27ea7b,0xc9))[_0xbee5('0x41')](handleError(_0x27ea7b,null));};exports['update']=function(_0x44d4b1,_0xf637bf){if(_0x44d4b1['body']['id']){delete _0x44d4b1['body']['id'];}return db['ZendeskAccount'][_0xbee5('0x45')]({'where':{'id':_0x44d4b1['params']['id']}})[_0xbee5('0x24')](handleEntityNotFound(_0xf637bf,null))[_0xbee5('0x24')](saveUpdates(_0x44d4b1[_0xbee5('0x47')],null))[_0xbee5('0x24')](respondWithResult(_0xf637bf,null))[_0xbee5('0x41')](handleError(_0xf637bf,null));};exports[_0xbee5('0x48')]=function(_0x55e654,_0x24274d){return db[_0xbee5('0x2a')][_0xbee5('0x45')]({'where':{'id':_0x55e654[_0xbee5('0x43')]['id']}})['then'](handleEntityNotFound(_0x24274d,null))[_0xbee5('0x24')](removeEntity(_0x24274d,null))['catch'](handleError(_0x24274d,null));};exports[_0xbee5('0x49')]=function(_0x45d114,_0xf48059,_0x22c51){var _0x2484c7={};var _0x1b02eb={};var _0xe8902;var _0x35f1d1;return db[_0xbee5('0x2a')][_0xbee5('0x4a')]({'where':{'id':_0x45d114[_0xbee5('0x43')]['id']}})[_0xbee5('0x24')](handleEntityNotFound(_0xf48059,null))[_0xbee5('0x24')](function(_0x359738){if(_0x359738){_0xe8902=_0x359738;_0x1b02eb[_0xbee5('0x2d')]=_['keys'](db[_0xbee5('0x4b')][_0xbee5('0x2b')]);_0x1b02eb[_0xbee5('0x31')]=_['keys'](_0x45d114[_0xbee5('0x31')]);_0x1b02eb[_0xbee5('0x2f')]=_[_0xbee5('0x30')](_0x1b02eb['model'],_0x1b02eb[_0xbee5('0x31')]);_0x2484c7['attributes']=_[_0xbee5('0x30')](_0x1b02eb['model'],qs[_0xbee5('0x32')](_0x45d114[_0xbee5('0x31')][_0xbee5('0x32')]));_0x2484c7['attributes']=_0x2484c7['attributes']['length']?_0x2484c7[_0xbee5('0x33')]:_0x1b02eb[_0xbee5('0x2d')];_0x2484c7[_0xbee5('0x37')]=qs['sort'](_0x45d114[_0xbee5('0x31')]['sort']);_0x2484c7[_0xbee5('0x39')]=qs[_0xbee5('0x2f')](_[_0xbee5('0x3a')](_0x45d114['query'],_0x1b02eb[_0xbee5('0x2f')]));if(_0x45d114[_0xbee5('0x31')][_0xbee5('0x3c')]){_0x2484c7[_0xbee5('0x39')]=_[_0xbee5('0x3b')](_0x2484c7[_0xbee5('0x39')],{'$or':_[_0xbee5('0x29')](_0x2484c7[_0xbee5('0x33')],function(_0x22fc1a){var _0x111027={};_0x111027[_0x22fc1a]={'$like':'%'+_0x45d114[_0xbee5('0x31')][_0xbee5('0x3c')]+'%'};return _0x111027;})});}_0x2484c7=_[_0xbee5('0x3b')]({},_0x2484c7,_0x45d114[_0xbee5('0x44')]);return _0xe8902[_0xbee5('0x49')](_0x2484c7);}})[_0xbee5('0x24')](function(_0x32a8d2){if(_0x32a8d2){_0x35f1d1=_0x32a8d2['length'];if(!_0x45d114[_0xbee5('0x31')]['hasOwnProperty']('nolimit')){_0x2484c7[_0xbee5('0x1d')]=qs[_0xbee5('0x1d')](_0x45d114['query']['limit']);_0x2484c7[_0xbee5('0x1f')]=qs['offset'](_0x45d114[_0xbee5('0x31')][_0xbee5('0x1f')]);}return _0xe8902['getConfigurations'](_0x2484c7);}})[_0xbee5('0x24')](function(_0x1a98c9){if(_0x1a98c9){return _0x1a98c9?{'count':_0x35f1d1,'rows':_0x1a98c9}:null;}})[_0xbee5('0x24')](respondWithResult(_0xf48059,null))[_0xbee5('0x41')](handleError(_0xf48059,null));};exports['addConfiguration']=function(_0x205784,_0x4ad4b5,_0x3294f1){if(_0x205784[_0xbee5('0x47')]['id']){delete _0x205784['body']['id'];}return db[_0xbee5('0x2a')][_0xbee5('0x4a')]({'where':{'id':_0x205784['params']['id']}})[_0xbee5('0x24')](handleEntityNotFound(_0x4ad4b5,null))[_0xbee5('0x24')](function(_0x4f431e){if(_0x4f431e){_0x205784[_0xbee5('0x47')]['AccountId']=_0x4f431e['id'];_0x205784[_0xbee5('0x47')]['Subjects']=integrations[_0xbee5('0x4c')](_0x205784['body']['channel'],_0x205784[_0xbee5('0x47')][_0xbee5('0x2c')]);_0x205784[_0xbee5('0x47')][_0xbee5('0x4d')]=integrations[_0xbee5('0x4e')](_0x205784[_0xbee5('0x47')]['channel'],_0x205784[_0xbee5('0x47')][_0xbee5('0x2c')]);return db[_0xbee5('0x4b')][_0xbee5('0x46')](_0x205784[_0xbee5('0x47')],{'include':[{'model':db[_0xbee5('0x4f')],'as':_0xbee5('0x50')},{'model':db[_0xbee5('0x4f')],'as':_0xbee5('0x4d')}]});}return null;})['then'](respondWithResult(_0x4ad4b5,null))[_0xbee5('0x41')](handleError(_0x4ad4b5,null));};exports[_0xbee5('0x51')]=function(_0x43452f,_0x274a2c,_0x59fe10){var _0x13e84a='';return db[_0xbee5('0x2a')][_0xbee5('0x4a')]({'where':{'id':_0x43452f[_0xbee5('0x43')]['id']},'attributes':['id',_0xbee5('0x52'),_0xbee5('0x53'),_0xbee5('0x54'),_0xbee5('0x55'),_0xbee5('0x56')]})[_0xbee5('0x24')](handleEntityNotFound(_0x274a2c,null))[_0xbee5('0x24')](function(_0x24cd85){if(_0x24cd85){_0x13e84a=_0x24cd85['remoteUri'];var _0x20a9d2=_0x13e84a[_0xbee5('0x57')](-0x1);if(_0x20a9d2==='/'){_0x13e84a=_0x13e84a['substring'](0x0,_0x13e84a[_0xbee5('0x58')](_0x20a9d2));}var _0x56ceeb={'method':_0xbee5('0x59'),'uri':util[_0xbee5('0x5a')]('%s/%s',_0x13e84a,_0xbee5('0x5b')),'json':!![]};switch(_0x24cd85['authType']){case'password':_0x56ceeb['headers']={'Authorization':util['format']('Basic\x20%s',new Buffer(util['format'](_0xbee5('0x5c'),_0x24cd85[_0xbee5('0x52')],_0x24cd85[_0xbee5('0x53')]))[_0xbee5('0x5d')](_0xbee5('0x5e')))};break;case _0xbee5('0x54'):_0x56ceeb[_0xbee5('0x5f')]={'Authorization':util[_0xbee5('0x5a')](_0xbee5('0x60'),new Buffer(util[_0xbee5('0x5a')](_0xbee5('0x61'),_0x24cd85[_0xbee5('0x52')],_0x24cd85['token']))[_0xbee5('0x5d')](_0xbee5('0x5e')))};break;default:throw new db['Sequelize']['ValidationError'](_0xbee5('0x62'));}return rp(_0x56ceeb);}})[_0xbee5('0x24')](function(_0x39cc65){if(_0x39cc65){var _0x5e5cba=[_0xbee5('0x63'),_0xbee5('0x64'),_0xbee5('0x65'),'assignee'];_['remove'](_0x39cc65['ticket_fields'],function(_0x3b0d82){return _0x5e5cba[_0xbee5('0x66')](_0x3b0d82[_0xbee5('0x2c')]);});return{'count':_0x39cc65[_0xbee5('0x5b')][_0xbee5('0x34')],'rows':_[_0xbee5('0x29')](_0x39cc65[_0xbee5('0x5b')],function(_0x435b75){return{'id':_0x435b75['id'],'name':_0x435b75['position']>0x7?_0x435b75['title']:_0x435b75[_0xbee5('0x2c')],'custom':_0x435b75[_0xbee5('0x67')]>0x7?!![]:![],'options':_0x435b75['system_field_options']?_0x435b75['system_field_options']:_0x435b75[_0xbee5('0x68')]?_0x435b75['custom_field_options']:[]};})};}})['then'](respondWithResult(_0x274a2c,null))[_0xbee5('0x41')](function(_0x525472){var _0x2b4ac9=_0x43452f[_0xbee5('0x31')]['test']?0x1f4:_0x525472[_0xbee5('0x69')]||0x1f4;logger[_0xbee5('0x25')](_0xbee5('0x6a'),_0xbee5('0x51'),_0x2b4ac9,JSON[_0xbee5('0x6b')](_0x525472));delete _0x525472['name'];if(_0x2b4ac9===0x191){_0x2b4ac9=0x190;}_0x274a2c['status'](_0x2b4ac9)[_0xbee5('0x27')](_0x43452f['query'][_0xbee5('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x525472[_0xbee5('0x69')]}:_0x525472);});};
\ No newline at end of file
index 94270fe..183cfdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7094=['path','./intZendeskAccount.attributes','exports','define','util','../../config/logger','api','moment','request-promise'];(function(_0x558afb,_0x416855){var _0x2ccab0=function(_0x1ff089){while(--_0x1ff089){_0x558afb['push'](_0x558afb['shift']());}};_0x2ccab0(++_0x416855);}(_0x7094,0x79));var _0x4709=function(_0x7d8795,_0x16d00d){_0x7d8795=_0x7d8795-0x0;var _0x2c48c6=_0x7094[_0x7d8795];return _0x2c48c6;};'use strict';var _=require('lodash');var util=require(_0x4709('0x0'));var logger=require(_0x4709('0x1'))(_0x4709('0x2'));var moment=require(_0x4709('0x3'));var BPromise=require('bluebird');var rp=require(_0x4709('0x4'));var fs=require('fs');var path=require(_0x4709('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4709('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x4709('0x7')]=function(_0x39e6b6,_0x129f36){return _0x39e6b6[_0x4709('0x8')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xadbe=['util','../../config/logger','api','bluebird','path','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash'];(function(_0x3825a8,_0x2ce1a2){var _0xabc9bc=function(_0x101073){while(--_0x101073){_0x3825a8['push'](_0x3825a8['shift']());}};_0xabc9bc(++_0x2ce1a2);}(_0xadbe,0xcf));var _0xeadb=function(_0xb41148,_0x120d1a){_0xb41148=_0xb41148-0x0;var _0x4e97cd=_0xadbe[_0xb41148];return _0x4e97cd;};'use strict';var _=require(_0xeadb('0x0'));var util=require(_0xeadb('0x1'));var logger=require(_0xeadb('0x2'))(_0xeadb('0x3'));var moment=require('moment');var BPromise=require(_0xeadb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeadb('0x5'));var rimraf=require('rimraf');var config=require(_0xeadb('0x6'));var attributes=require(_0xeadb('0x7'));var integrations=require(_0xeadb('0x8'));module[_0xeadb('0x9')]=function(_0x454c94,_0x191b3b){return _0x454c94[_0xeadb('0xa')](_0xeadb('0xb'),attributes,{'tableName':_0xeadb('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8388309..94e3df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d63=['info','result','catch','ZendeskAccount','findAll','options','where','attributes','include','map','model','GetZendeskAccount','ShowZendeskAccount','find','raw','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x1d63,0x16f));var _0x31d6=function(_0x5d74b8,_0x29301f){_0x5d74b8=_0x5d74b8-0x0;var _0x487b26=_0x1d63[_0x5d74b8];return _0x487b26;};'use strict';var _=require(_0x31d6('0x0'));var util=require('util');var moment=require(_0x31d6('0x1'));var BPromise=require(_0x31d6('0x2'));var rs=require(_0x31d6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31d6('0x4'))['db'];var utils=require(_0x31d6('0x5'));var logger=require('../../config/logger')(_0x31d6('0x6'));var config=require('../../config/environment');var jayson=require(_0x31d6('0x7'));var client=jayson[_0x31d6('0x8')][_0x31d6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1782bd,_0x5321b7,_0xbbc8a9){return new BPromise(function(_0x29fb28,_0x148b31){return client['request'](_0x1782bd,_0xbbc8a9)[_0x31d6('0xa')](function(_0x648cf8){logger['info'](_0x31d6('0xb'),_0x5321b7,_0x31d6('0xc'));logger[_0x31d6('0xd')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x5321b7,_0x31d6('0xc'),JSON[_0x31d6('0xe')](_0x648cf8));if(_0x648cf8['error']){if(_0x648cf8[_0x31d6('0xf')]['code']===0x1f4){logger[_0x31d6('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x5321b7,_0x648cf8[_0x31d6('0xf')][_0x31d6('0x10')]);return _0x148b31(_0x648cf8[_0x31d6('0xf')]['message']);}logger[_0x31d6('0xf')](_0x31d6('0xb'),_0x5321b7,_0x648cf8[_0x31d6('0xf')]['message']);return _0x29fb28(_0x648cf8[_0x31d6('0xf')][_0x31d6('0x10')]);}else{logger[_0x31d6('0x11')]('ZendeskAccount,\x20%s,\x20%s',_0x5321b7,_0x31d6('0xc'));_0x29fb28(_0x648cf8[_0x31d6('0x12')][_0x31d6('0x10')]);}})[_0x31d6('0x13')](function(_0x1f391c){logger[_0x31d6('0xf')](_0x31d6('0xb'),_0x5321b7,_0x1f391c);_0x148b31(_0x1f391c);});});}exports['GetZendeskAccount']=function(_0x378bbe){var _0x400b34=this;return new Promise(function(_0x509b76,_0x1c396a){return db[_0x31d6('0x14')][_0x31d6('0x15')]({'raw':_0x378bbe[_0x31d6('0x16')]?_0x378bbe['options']['raw']===undefined?!![]:![]:!![],'where':_0x378bbe[_0x31d6('0x16')]?_0x378bbe[_0x31d6('0x16')][_0x31d6('0x17')]||null:null,'attributes':_0x378bbe[_0x31d6('0x16')]?_0x378bbe[_0x31d6('0x16')][_0x31d6('0x18')]||null:null,'limit':_0x378bbe[_0x31d6('0x16')]?_0x378bbe[_0x31d6('0x16')]['limit']||null:null,'include':_0x378bbe[_0x31d6('0x16')]?_0x378bbe[_0x31d6('0x16')][_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x378bbe[_0x31d6('0x16')]['include'],function(_0x5a1ba8){return{'model':db[_0x5a1ba8[_0x31d6('0x1b')]],'as':_0x5a1ba8['as'],'attributes':_0x5a1ba8[_0x31d6('0x18')],'include':_0x5a1ba8[_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x5a1ba8['include'],function(_0x4d4064){return{'model':db[_0x4d4064[_0x31d6('0x1b')]],'as':_0x4d4064['as'],'attributes':_0x4d4064['attributes'],'include':_0x4d4064[_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x4d4064['include'],function(_0x22268c){return{'model':db[_0x22268c['model']],'as':_0x22268c['as'],'attributes':_0x22268c[_0x31d6('0x18')]};}):[]};}):[]};}):[]:[]})[_0x31d6('0xa')](function(_0x1308fa){logger[_0x31d6('0x11')]('GetZendeskAccount',_0x378bbe);logger[_0x31d6('0xd')](_0x31d6('0x1c'),_0x378bbe,JSON[_0x31d6('0xe')](_0x1308fa));_0x509b76(_0x1308fa);})['catch'](function(_0x540998){logger[_0x31d6('0xf')](_0x31d6('0x1c'),_0x540998[_0x31d6('0x10')],_0x378bbe);_0x1c396a(_0x400b34['error'](0x1f4,_0x540998[_0x31d6('0x10')]));});});};exports[_0x31d6('0x1d')]=function(_0x3bd078){var _0x1b223c=this;return new Promise(function(_0x5e814f,_0x3f9783){return db[_0x31d6('0x14')][_0x31d6('0x1e')]({'raw':_0x3bd078[_0x31d6('0x16')]?_0x3bd078[_0x31d6('0x16')][_0x31d6('0x1f')]===undefined?!![]:![]:!![],'where':_0x3bd078[_0x31d6('0x16')]?_0x3bd078[_0x31d6('0x16')][_0x31d6('0x17')]||null:null,'attributes':_0x3bd078['options']?_0x3bd078[_0x31d6('0x16')]['attributes']||null:null,'include':_0x3bd078[_0x31d6('0x16')]?_0x3bd078[_0x31d6('0x16')][_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x3bd078[_0x31d6('0x16')][_0x31d6('0x19')],function(_0x9ac832){return{'model':db[_0x9ac832[_0x31d6('0x1b')]],'as':_0x9ac832['as'],'attributes':_0x9ac832[_0x31d6('0x18')],'include':_0x9ac832[_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x9ac832['include'],function(_0x54430f){return{'model':db[_0x54430f['model']],'as':_0x54430f['as'],'attributes':_0x54430f[_0x31d6('0x18')],'include':_0x54430f[_0x31d6('0x19')]?_[_0x31d6('0x1a')](_0x54430f[_0x31d6('0x19')],function(_0x2c351c){return{'model':db[_0x2c351c[_0x31d6('0x1b')]],'as':_0x2c351c['as'],'attributes':_0x2c351c[_0x31d6('0x18')]};}):[]};}):[]};}):[]:[]})[_0x31d6('0xa')](function(_0x2c6f6b){logger['info']('ShowZendeskAccount',_0x3bd078);logger[_0x31d6('0xd')](_0x31d6('0x1d'),_0x3bd078,JSON['stringify'](_0x2c6f6b));_0x5e814f(_0x2c6f6b);})[_0x31d6('0x13')](function(_0x5e88a2){logger[_0x31d6('0xf')](_0x31d6('0x1d'),_0x5e88a2[_0x31d6('0x10')],_0x3bd078);_0x3f9783(_0x1b223c[_0x31d6('0xf')](0x1f4,_0x5e88a2[_0x31d6('0x10')]));});});};
\ No newline at end of file
+var _0x0984=['rpc','../../config/environment','jayson/promise','client','request','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','catch','ZendeskAccount','options','raw','where','attributes','include','model','map','then','info','GetZendeskAccount','ShowZendeskAccount','find','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x0984,0x9f));var _0x4098=function(_0x2b5e15,_0x44227d){_0x2b5e15=_0x2b5e15-0x0;var _0x2f3426=_0x0984[_0x2b5e15];return _0x2f3426;};'use strict';var _=require(_0x4098('0x0'));var util=require(_0x4098('0x1'));var moment=require('moment');var BPromise=require(_0x4098('0x2'));var rs=require(_0x4098('0x3'));var fs=require('fs');var Redis=require(_0x4098('0x4'));var db=require(_0x4098('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4098('0x6'));var config=require(_0x4098('0x7'));var jayson=require(_0x4098('0x8'));var client=jayson[_0x4098('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43e1a2,_0x12997e,_0x136ab5){return new BPromise(function(_0x549a5e,_0x1258ea){return client[_0x4098('0xa')](_0x43e1a2,_0x136ab5)['then'](function(_0x18fb97){logger['info'](_0x4098('0xb'),_0x12997e,'request\x20sent');logger[_0x4098('0xc')](_0x4098('0xd'),_0x12997e,_0x4098('0xe'),JSON['stringify'](_0x18fb97));if(_0x18fb97['error']){if(_0x18fb97['error'][_0x4098('0xf')]===0x1f4){logger[_0x4098('0x10')](_0x4098('0xb'),_0x12997e,_0x18fb97[_0x4098('0x10')][_0x4098('0x11')]);return _0x1258ea(_0x18fb97[_0x4098('0x10')]['message']);}logger['error'](_0x4098('0xb'),_0x12997e,_0x18fb97['error']['message']);return _0x549a5e(_0x18fb97['error']['message']);}else{logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x12997e,_0x4098('0xe'));_0x549a5e(_0x18fb97['result']['message']);}})[_0x4098('0x12')](function(_0x814b1f){logger[_0x4098('0x10')](_0x4098('0xb'),_0x12997e,_0x814b1f);_0x1258ea(_0x814b1f);});});}exports['GetZendeskAccount']=function(_0x21d9f3){var _0x1e0c09=this;return new Promise(function(_0x480724,_0x533374){return db[_0x4098('0x13')]['findAll']({'raw':_0x21d9f3[_0x4098('0x14')]?_0x21d9f3[_0x4098('0x14')][_0x4098('0x15')]===undefined?!![]:![]:!![],'where':_0x21d9f3['options']?_0x21d9f3['options'][_0x4098('0x16')]||null:null,'attributes':_0x21d9f3[_0x4098('0x14')]?_0x21d9f3[_0x4098('0x14')][_0x4098('0x17')]||null:null,'limit':_0x21d9f3[_0x4098('0x14')]?_0x21d9f3['options']['limit']||null:null,'include':_0x21d9f3['options']?_0x21d9f3[_0x4098('0x14')][_0x4098('0x18')]?_['map'](_0x21d9f3[_0x4098('0x14')][_0x4098('0x18')],function(_0x2706f6){return{'model':db[_0x2706f6[_0x4098('0x19')]],'as':_0x2706f6['as'],'attributes':_0x2706f6[_0x4098('0x17')],'include':_0x2706f6[_0x4098('0x18')]?_['map'](_0x2706f6[_0x4098('0x18')],function(_0x40928a){return{'model':db[_0x40928a[_0x4098('0x19')]],'as':_0x40928a['as'],'attributes':_0x40928a[_0x4098('0x17')],'include':_0x40928a[_0x4098('0x18')]?_[_0x4098('0x1a')](_0x40928a['include'],function(_0x2c5d1b){return{'model':db[_0x2c5d1b[_0x4098('0x19')]],'as':_0x2c5d1b['as'],'attributes':_0x2c5d1b[_0x4098('0x17')]};}):[]};}):[]};}):[]:[]})[_0x4098('0x1b')](function(_0x2402f3){logger[_0x4098('0x1c')](_0x4098('0x1d'),_0x21d9f3);logger['debug'](_0x4098('0x1d'),_0x21d9f3,JSON['stringify'](_0x2402f3));_0x480724(_0x2402f3);})[_0x4098('0x12')](function(_0x5ce419){logger['error'](_0x4098('0x1d'),_0x5ce419[_0x4098('0x11')],_0x21d9f3);_0x533374(_0x1e0c09[_0x4098('0x10')](0x1f4,_0x5ce419[_0x4098('0x11')]));});});};exports[_0x4098('0x1e')]=function(_0x33b241){var _0x209253=this;return new Promise(function(_0xd7760f,_0x176042){return db['ZendeskAccount'][_0x4098('0x1f')]({'raw':_0x33b241[_0x4098('0x14')]?_0x33b241['options'][_0x4098('0x15')]===undefined?!![]:![]:!![],'where':_0x33b241[_0x4098('0x14')]?_0x33b241[_0x4098('0x14')]['where']||null:null,'attributes':_0x33b241[_0x4098('0x14')]?_0x33b241[_0x4098('0x14')][_0x4098('0x17')]||null:null,'include':_0x33b241[_0x4098('0x14')]?_0x33b241[_0x4098('0x14')]['include']?_[_0x4098('0x1a')](_0x33b241[_0x4098('0x14')]['include'],function(_0x73d0a3){return{'model':db[_0x73d0a3[_0x4098('0x19')]],'as':_0x73d0a3['as'],'attributes':_0x73d0a3[_0x4098('0x17')],'include':_0x73d0a3[_0x4098('0x18')]?_[_0x4098('0x1a')](_0x73d0a3['include'],function(_0xa7f4f0){return{'model':db[_0xa7f4f0[_0x4098('0x19')]],'as':_0xa7f4f0['as'],'attributes':_0xa7f4f0[_0x4098('0x17')],'include':_0xa7f4f0[_0x4098('0x18')]?_[_0x4098('0x1a')](_0xa7f4f0[_0x4098('0x18')],function(_0x1668e4){return{'model':db[_0x1668e4['model']],'as':_0x1668e4['as'],'attributes':_0x1668e4[_0x4098('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xc4228a){logger[_0x4098('0x1c')](_0x4098('0x1e'),_0x33b241);logger[_0x4098('0xc')](_0x4098('0x1e'),_0x33b241,JSON[_0x4098('0x20')](_0xc4228a));_0xd7760f(_0xc4228a);})['catch'](function(_0xcb7432){logger[_0x4098('0x10')](_0x4098('0x1e'),_0xcb7432['message'],_0x33b241);_0x176042(_0x209253[_0x4098('0x10')](0x1f4,_0xcb7432[_0x4098('0x11')]));});});};
\ No newline at end of file
index 0d495b5..6a6a0c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','setTags','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields'];(function(_0x37851e,_0x13765c){var _0x5af6be=function(_0x2777a2){while(--_0x2777a2){_0x37851e['push'](_0x37851e['shift']());}};_0x5af6be(++_0x13765c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['getFields']);router[_0x3071('0x8')](_0x3071('0xe'),auth[_0x3071('0x9')](),controller[_0x3071('0xf')]);router[_0x3071('0x8')]('/:id/descriptions',auth[_0x3071('0x9')](),controller[_0x3071('0x10')]);router[_0x3071('0x8')](_0x3071('0x11'),auth[_0x3071('0x9')](),controller['getTags']);router['post']('/',auth[_0x3071('0x9')](),controller['create']);router[_0x3071('0x12')](_0x3071('0x11'),auth['isAuthenticated'](),controller[_0x3071('0x13')]);router['put'](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x14')]);router[_0x3071('0x15')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x16')]);module[_0x3071('0x17')]=router;
\ No newline at end of file
+var _0x087b=['getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields'];(function(_0x4b757a,_0x37191f){var _0x5a504e=function(_0xc9cb4d){while(--_0xc9cb4d){_0x4b757a['push'](_0x4b757a['shift']());}};_0x5a504e(++_0x37191f);}(_0x087b,0x11a));var _0xb087=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x087b[_0x45d3f0];return _0x314b79;};'use strict';var multer=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb087('0x2'));var router=express['Router']();var fs_extra=require(_0xb087('0x3'));var auth=require(_0xb087('0x4'));var interaction=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var controller=require(_0xb087('0x7'));router[_0xb087('0x8')]('/',auth[_0xb087('0x9')](),controller[_0xb087('0xa')]);router[_0xb087('0x8')](_0xb087('0xb'),auth[_0xb087('0x9')](),controller[_0xb087('0xc')]);router[_0xb087('0x8')](_0xb087('0xd'),auth[_0xb087('0x9')](),controller[_0xb087('0xe')]);router[_0xb087('0x8')]('/:id/subjects',auth[_0xb087('0x9')](),controller[_0xb087('0xf')]);router[_0xb087('0x8')](_0xb087('0x10'),auth[_0xb087('0x9')](),controller[_0xb087('0x11')]);router[_0xb087('0x8')]('/:id/tags',auth[_0xb087('0x9')](),controller[_0xb087('0x12')]);router[_0xb087('0x13')]('/',auth['isAuthenticated'](),controller[_0xb087('0x14')]);router[_0xb087('0x13')](_0xb087('0x15'),auth[_0xb087('0x9')](),controller[_0xb087('0x16')]);router[_0xb087('0x17')](_0xb087('0xb'),auth[_0xb087('0x9')](),controller[_0xb087('0x18')]);router[_0xb087('0x19')]('/:id',auth[_0xb087('0x9')](),controller[_0xb087('0x1a')]);module['exports']=router;
\ No newline at end of file
index 3cdf33f..4b83af0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['STRING','exports'];(function(_0x54fe80,_0x135111){var _0x4b12ad=function(_0x3ec3c5){while(--_0x3ec3c5){_0x54fe80['push'](_0x54fe80['shift']());}};_0x4b12ad(++_0x135111);}(_0x7217,0x1a1));var _0x7721=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x7217[_0x110c3d];return _0x226d67;};'use strict';var Sequelize=require('sequelize');module[_0x7721('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7721('0x1')]}};
\ No newline at end of file
+var _0x31c5=['sequelize','STRING'];(function(_0x7c5ec6,_0x592184){var _0x27467d=function(_0x26d8f3){while(--_0x26d8f3){_0x7c5ec6['push'](_0x7c5ec6['shift']());}};_0x27467d(++_0x592184);}(_0x31c5,0xb2));var _0x531c=function(_0x3396d8,_0x51145f){_0x3396d8=_0x3396d8-0x0;var _0x5c14f7=_0x31c5[_0x3396d8];return _0x5c14f7;};'use strict';var Sequelize=require(_0x531c('0x0'));module['exports']={'name':{'type':Sequelize[_0x531c('0x1')]},'description':{'type':Sequelize[_0x531c('0x1')]}};
\ No newline at end of file
index eaba2aa..7623161 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x989e=['type','key','model','keys','query','filters','attributes','fields','length','nolimit','order','where','pick','filter','merge','VIRTUAL','options','ZendeskConfiguration','include','findAll','catch','show','params','intersection','includeAll','find','create','body','ZendeskField','sort','map','getFields','hasOwnProperty','getSubjects','findOne','getDescriptions','getTags','setTags','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','rawAttributes','fieldName'];(function(_0x4ec520,_0x15fee2){var _0xed49d7=function(_0x3031f2){while(--_0x3031f2){_0x4ec520['push'](_0x4ec520['shift']());}};_0xed49d7(++_0x15fee2);}(_0x989e,0x1cf));var _0xe989=function(_0x47e7dd,_0x51b041){_0x47e7dd=_0x47e7dd-0x0;var _0x38501f=_0x989e[_0x47e7dd];return _0x38501f;};'use strict';var emlformat=require(_0xe989('0x0'));var rimraf=require(_0xe989('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe989('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe989('0x3'));var Mustache=require(_0xe989('0x4'));var util=require('util');var path=require(_0xe989('0x5'));var sox=require(_0xe989('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe989('0x7'));var _=require(_0xe989('0x8'));var squel=require(_0xe989('0x9'));var crypto=require(_0xe989('0xa'));var jsforce=require(_0xe989('0xb'));var deskjs=require(_0xe989('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe989('0xd'));var Redis=require(_0xe989('0xe'));var authService=require(_0xe989('0xf'));var qs=require(_0xe989('0x10'));var as=require(_0xe989('0x11'));var hardwareService=require(_0xe989('0x12'));var logger=require(_0xe989('0x13'))('api');var utils=require(_0xe989('0x14'));var config=require(_0xe989('0x15'));var licenseUtil=require(_0xe989('0x16'));var db=require(_0xe989('0x17'))['db'];function respondWithStatusCode(_0x528ff6,_0x50c83c){_0x50c83c=_0x50c83c||0xcc;return function(_0x2220d9){if(_0x2220d9){return _0x528ff6['sendStatus'](_0x50c83c);}return _0x528ff6[_0xe989('0x18')](_0x50c83c)[_0xe989('0x19')]();};}function respondWithResult(_0x5aa307,_0x2183fd){_0x2183fd=_0x2183fd||0xc8;return function(_0x34c158){if(_0x34c158){return _0x5aa307[_0xe989('0x18')](_0x2183fd)['json'](_0x34c158);}};}function respondWithFilteredResult(_0x3c4f60,_0x2051b8){return function(_0x17b663){if(_0x17b663){var _0x3dec25=typeof _0x2051b8[_0xe989('0x1a')]===_0xe989('0x1b')&&typeof _0x2051b8['limit']===_0xe989('0x1b');var _0x26abd6=_0x17b663[_0xe989('0x1c')];var _0xff7a08=_0x3dec25?0x0:_0x2051b8[_0xe989('0x1a')];var _0x3f4605=_0x3dec25?_0x17b663[_0xe989('0x1c')]:_0x2051b8['offset']+_0x2051b8[_0xe989('0x1d')];var _0x81eb10;if(_0x3f4605>=_0x26abd6){_0x3f4605=_0x26abd6;_0x81eb10=0xc8;}else{_0x81eb10=0xce;}_0x3c4f60['status'](_0x81eb10);return _0x3c4f60[_0xe989('0x1e')](_0xe989('0x1f'),_0xff7a08+'-'+_0x3f4605+'/'+_0x26abd6)[_0xe989('0x20')](_0x17b663);}return null;};}function patchUpdates(_0x54bdd8){return function(_0x509aff){try{jsonpatch[_0xe989('0x21')](_0x509aff,_0x54bdd8,!![]);}catch(_0x15abf2){return BPromise[_0xe989('0x22')](_0x15abf2);}return _0x509aff[_0xe989('0x23')]();};}function saveUpdates(_0x411965,_0x50429b){return function(_0x4eef68){if(_0x4eef68){return _0x4eef68[_0xe989('0x24')](_0x411965)[_0xe989('0x25')](function(_0x4ff36d){return _0x4ff36d;});}return null;};}function removeEntity(_0x23da59,_0x41f999){return function(_0x5df431){if(_0x5df431){return _0x5df431[_0xe989('0x26')]()[_0xe989('0x25')](function(){_0x23da59[_0xe989('0x18')](0xcc)[_0xe989('0x19')]();});}};}function handleEntityNotFound(_0x2d7241,_0x4b60a9){return function(_0x4070a4){if(!_0x4070a4){_0x2d7241[_0xe989('0x27')](0x194);}return _0x4070a4;};}function handleError(_0x42d3b1,_0x194987){_0x194987=_0x194987||0x1f4;return function(_0x3f4487){logger[_0xe989('0x28')](_0x3f4487[_0xe989('0x29')]);if(_0x3f4487[_0xe989('0x2a')]){delete _0x3f4487[_0xe989('0x2a')];}_0x42d3b1['status'](_0x194987)[_0xe989('0x2b')](_0x3f4487);};}exports[_0xe989('0x2c')]=function(_0xed0210,_0x1df828){var _0x7c8c6c={},_0x320d27={},_0x15da74={'count':0x0,'rows':[]};var _0x4741f1=_['map'](db['ZendeskConfiguration'][_0xe989('0x2d')],function(_0x3d4158){return{'name':_0x3d4158[_0xe989('0x2e')],'type':_0x3d4158[_0xe989('0x2f')][_0xe989('0x30')]};});_0x320d27[_0xe989('0x31')]=_['map'](_0x4741f1,'name');_0x320d27['query']=_[_0xe989('0x32')](_0xed0210[_0xe989('0x33')]);_0x320d27[_0xe989('0x34')]=_['intersection'](_0x320d27['model'],_0x320d27[_0xe989('0x33')]);_0x7c8c6c[_0xe989('0x35')]=_['intersection'](_0x320d27[_0xe989('0x31')],qs[_0xe989('0x36')](_0xed0210[_0xe989('0x33')]['fields']));_0x7c8c6c[_0xe989('0x35')]=_0x7c8c6c[_0xe989('0x35')][_0xe989('0x37')]?_0x7c8c6c[_0xe989('0x35')]:_0x320d27[_0xe989('0x31')];if(!_0xed0210[_0xe989('0x33')]['hasOwnProperty'](_0xe989('0x38'))){_0x7c8c6c[_0xe989('0x1d')]=qs[_0xe989('0x1d')](_0xed0210['query'][_0xe989('0x1d')]);_0x7c8c6c[_0xe989('0x1a')]=qs[_0xe989('0x1a')](_0xed0210[_0xe989('0x33')][_0xe989('0x1a')]);}_0x7c8c6c[_0xe989('0x39')]=qs['sort'](_0xed0210[_0xe989('0x33')]['sort']);_0x7c8c6c[_0xe989('0x3a')]=qs[_0xe989('0x34')](_[_0xe989('0x3b')](_0xed0210[_0xe989('0x33')],_0x320d27[_0xe989('0x34')]),_0x4741f1);if(_0xed0210[_0xe989('0x33')][_0xe989('0x3c')]){_0x7c8c6c[_0xe989('0x3a')]=_[_0xe989('0x3d')](_0x7c8c6c[_0xe989('0x3a')],{'$or':_['map'](_0x4741f1,function(_0x2faccf){if(_0x2faccf['type']!==_0xe989('0x3e')){var _0x286241={};_0x286241[_0x2faccf[_0xe989('0x2a')]]={'$like':'%'+_0xed0210[_0xe989('0x33')]['filter']+'%'};return _0x286241;}})});}_0x7c8c6c=_[_0xe989('0x3d')]({},_0x7c8c6c,_0xed0210[_0xe989('0x3f')]);var _0x85e60a={'where':_0x7c8c6c[_0xe989('0x3a')]};return db[_0xe989('0x40')][_0xe989('0x1c')](_0x85e60a)[_0xe989('0x25')](function(_0x1145b5){_0x15da74[_0xe989('0x1c')]=_0x1145b5;if(_0xed0210[_0xe989('0x33')]['includeAll']){_0x7c8c6c[_0xe989('0x41')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xe989('0x42')](_0x7c8c6c);})[_0xe989('0x25')](function(_0x263c8c){_0x15da74['rows']=_0x263c8c;return _0x15da74;})['then'](respondWithFilteredResult(_0x1df828,_0x7c8c6c))[_0xe989('0x43')](handleError(_0x1df828,null));};exports[_0xe989('0x44')]=function(_0x30c43e,_0x3f981c){var _0xe20ef5={'raw':![],'where':{'id':_0x30c43e[_0xe989('0x45')]['id']}},_0x23ba5b={};_0x23ba5b[_0xe989('0x31')]=_[_0xe989('0x32')](db['ZendeskConfiguration'][_0xe989('0x2d')]);_0x23ba5b['query']=_[_0xe989('0x32')](_0x30c43e[_0xe989('0x33')]);_0x23ba5b[_0xe989('0x34')]=_[_0xe989('0x46')](_0x23ba5b[_0xe989('0x31')],_0x23ba5b['query']);_0xe20ef5[_0xe989('0x35')]=_[_0xe989('0x46')](_0x23ba5b[_0xe989('0x31')],qs[_0xe989('0x36')](_0x30c43e[_0xe989('0x33')][_0xe989('0x36')]));_0xe20ef5[_0xe989('0x35')]=_0xe20ef5[_0xe989('0x35')][_0xe989('0x37')]?_0xe20ef5[_0xe989('0x35')]:_0x23ba5b['model'];if(_0x30c43e['query'][_0xe989('0x47')]){_0xe20ef5[_0xe989('0x41')]=[{'all':!![]}];}_0xe20ef5=_['merge']({},_0xe20ef5,_0x30c43e[_0xe989('0x3f')]);return db[_0xe989('0x40')][_0xe989('0x48')](_0xe20ef5)['then'](handleEntityNotFound(_0x3f981c,null))[_0xe989('0x25')](respondWithResult(_0x3f981c,null))[_0xe989('0x43')](handleError(_0x3f981c,null));};exports[_0xe989('0x49')]=function(_0x4ea263,_0x154a45){return db[_0xe989('0x40')]['create'](_0x4ea263[_0xe989('0x4a')],{})[_0xe989('0x25')](respondWithResult(_0x154a45,0xc9))['catch'](handleError(_0x154a45,null));};exports[_0xe989('0x24')]=function(_0x549b54,_0x540142){if(_0x549b54['body']['id']){delete _0x549b54['body']['id'];}return db[_0xe989('0x40')][_0xe989('0x48')]({'where':{'id':_0x549b54[_0xe989('0x45')]['id']}})[_0xe989('0x25')](handleEntityNotFound(_0x540142,null))[_0xe989('0x25')](saveUpdates(_0x549b54[_0xe989('0x4a')],null))[_0xe989('0x25')](respondWithResult(_0x540142,null))['catch'](handleError(_0x540142,null));};exports['destroy']=function(_0x395165,_0x218b9b){return db['ZendeskConfiguration'][_0xe989('0x48')]({'where':{'id':_0x395165['params']['id']}})['then'](handleEntityNotFound(_0x218b9b,null))[_0xe989('0x25')](removeEntity(_0x218b9b,null))[_0xe989('0x43')](handleError(_0x218b9b,null));};exports['getFields']=function(_0x363648,_0x1fc27e,_0xb39be9){var _0x28b79a={};var _0xdce421={};var _0x59b932;var _0x1ef842;return db[_0xe989('0x40')]['findOne']({'where':{'id':_0x363648[_0xe989('0x45')]['id']}})['then'](handleEntityNotFound(_0x1fc27e,null))['then'](function(_0x282fd2){if(_0x282fd2){_0x59b932=_0x282fd2;_0xdce421['model']=_[_0xe989('0x32')](db[_0xe989('0x4b')][_0xe989('0x2d')]);_0xdce421[_0xe989('0x33')]=_['keys'](_0x363648[_0xe989('0x33')]);_0xdce421[_0xe989('0x34')]=_[_0xe989('0x46')](_0xdce421['model'],_0xdce421[_0xe989('0x33')]);_0x28b79a[_0xe989('0x35')]=_[_0xe989('0x46')](_0xdce421[_0xe989('0x31')],qs[_0xe989('0x36')](_0x363648[_0xe989('0x33')]['fields']));_0x28b79a['attributes']=_0x28b79a[_0xe989('0x35')][_0xe989('0x37')]?_0x28b79a['attributes']:_0xdce421['model'];_0x28b79a[_0xe989('0x39')]=qs[_0xe989('0x4c')](_0x363648[_0xe989('0x33')][_0xe989('0x4c')]);_0x28b79a[_0xe989('0x3a')]=qs[_0xe989('0x34')](_[_0xe989('0x3b')](_0x363648[_0xe989('0x33')],_0xdce421[_0xe989('0x34')]));if(_0x363648[_0xe989('0x33')][_0xe989('0x3c')]){_0x28b79a['where']=_['merge'](_0x28b79a[_0xe989('0x3a')],{'$or':_[_0xe989('0x4d')](_0x28b79a[_0xe989('0x35')],function(_0x4ebbce){var _0x5dccdd={};_0x5dccdd[_0x4ebbce]={'$like':'%'+_0x363648[_0xe989('0x33')][_0xe989('0x3c')]+'%'};return _0x5dccdd;})});}_0x28b79a=_[_0xe989('0x3d')]({},_0x28b79a,_0x363648[_0xe989('0x3f')]);return _0x59b932[_0xe989('0x4e')](_0x28b79a);}})[_0xe989('0x25')](function(_0x5ce5fd){if(_0x5ce5fd){_0x1ef842=_0x5ce5fd['length'];if(!_0x363648[_0xe989('0x33')][_0xe989('0x4f')](_0xe989('0x38'))){_0x28b79a[_0xe989('0x1d')]=qs[_0xe989('0x1d')](_0x363648[_0xe989('0x33')][_0xe989('0x1d')]);_0x28b79a[_0xe989('0x1a')]=qs[_0xe989('0x1a')](_0x363648['query'][_0xe989('0x1a')]);}return _0x59b932['getFields'](_0x28b79a);}})[_0xe989('0x25')](function(_0xb71170){if(_0xb71170){return _0xb71170?{'count':_0x1ef842,'rows':_0xb71170}:null;}})[_0xe989('0x25')](respondWithResult(_0x1fc27e,null))[_0xe989('0x43')](handleError(_0x1fc27e,null));};exports[_0xe989('0x50')]=function(_0x1f373f,_0x1bf4cb,_0x3601a9){var _0x5c5e7e={};var _0x448994={};var _0x1ba7ed;var _0x228f11;return db[_0xe989('0x40')][_0xe989('0x51')]({'where':{'id':_0x1f373f[_0xe989('0x45')]['id']}})[_0xe989('0x25')](handleEntityNotFound(_0x1bf4cb,null))[_0xe989('0x25')](function(_0x12a4e1){if(_0x12a4e1){_0x1ba7ed=_0x12a4e1;_0x448994['model']=_[_0xe989('0x32')](db[_0xe989('0x4b')]['rawAttributes']);_0x448994[_0xe989('0x33')]=_[_0xe989('0x32')](_0x1f373f[_0xe989('0x33')]);_0x448994['filters']=_[_0xe989('0x46')](_0x448994[_0xe989('0x31')],_0x448994[_0xe989('0x33')]);_0x5c5e7e[_0xe989('0x35')]=_[_0xe989('0x46')](_0x448994[_0xe989('0x31')],qs[_0xe989('0x36')](_0x1f373f['query']['fields']));_0x5c5e7e[_0xe989('0x35')]=_0x5c5e7e[_0xe989('0x35')][_0xe989('0x37')]?_0x5c5e7e['attributes']:_0x448994[_0xe989('0x31')];_0x5c5e7e[_0xe989('0x39')]=qs['sort'](_0x1f373f['query'][_0xe989('0x4c')]);_0x5c5e7e['where']=qs[_0xe989('0x34')](_['pick'](_0x1f373f[_0xe989('0x33')],_0x448994[_0xe989('0x34')]));if(_0x1f373f[_0xe989('0x33')][_0xe989('0x3c')]){_0x5c5e7e['where']=_['merge'](_0x5c5e7e['where'],{'$or':_['map'](_0x5c5e7e[_0xe989('0x35')],function(_0x36b7bd){var _0x2bb617={};_0x2bb617[_0x36b7bd]={'$like':'%'+_0x1f373f['query'][_0xe989('0x3c')]+'%'};return _0x2bb617;})});}_0x5c5e7e=_['merge']({},_0x5c5e7e,_0x1f373f[_0xe989('0x3f')]);return _0x1ba7ed[_0xe989('0x50')](_0x5c5e7e);}})[_0xe989('0x25')](function(_0x1d59c0){if(_0x1d59c0){_0x228f11=_0x1d59c0[_0xe989('0x37')];if(!_0x1f373f['query'][_0xe989('0x4f')](_0xe989('0x38'))){_0x5c5e7e[_0xe989('0x1d')]=qs[_0xe989('0x1d')](_0x1f373f['query'][_0xe989('0x1d')]);_0x5c5e7e[_0xe989('0x1a')]=qs['offset'](_0x1f373f[_0xe989('0x33')][_0xe989('0x1a')]);}return _0x1ba7ed[_0xe989('0x50')](_0x5c5e7e);}})[_0xe989('0x25')](function(_0x190a6d){if(_0x190a6d){return _0x190a6d?{'count':_0x228f11,'rows':_0x190a6d}:null;}})['then'](respondWithResult(_0x1bf4cb,null))['catch'](handleError(_0x1bf4cb,null));};exports['getDescriptions']=function(_0x7980ca,_0x4adda9,_0xbbec07){var _0x2d8dd5={};var _0xab0cf2={};var _0x5b0589;var _0x398546;return db[_0xe989('0x40')][_0xe989('0x51')]({'where':{'id':_0x7980ca[_0xe989('0x45')]['id']}})['then'](handleEntityNotFound(_0x4adda9,null))[_0xe989('0x25')](function(_0x2e7366){if(_0x2e7366){_0x5b0589=_0x2e7366;_0xab0cf2[_0xe989('0x31')]=_[_0xe989('0x32')](db[_0xe989('0x4b')][_0xe989('0x2d')]);_0xab0cf2[_0xe989('0x33')]=_[_0xe989('0x32')](_0x7980ca[_0xe989('0x33')]);_0xab0cf2[_0xe989('0x34')]=_['intersection'](_0xab0cf2[_0xe989('0x31')],_0xab0cf2[_0xe989('0x33')]);_0x2d8dd5['attributes']=_['intersection'](_0xab0cf2['model'],qs[_0xe989('0x36')](_0x7980ca[_0xe989('0x33')][_0xe989('0x36')]));_0x2d8dd5['attributes']=_0x2d8dd5[_0xe989('0x35')]['length']?_0x2d8dd5['attributes']:_0xab0cf2[_0xe989('0x31')];_0x2d8dd5[_0xe989('0x39')]=qs['sort'](_0x7980ca[_0xe989('0x33')]['sort']);_0x2d8dd5['where']=qs[_0xe989('0x34')](_[_0xe989('0x3b')](_0x7980ca[_0xe989('0x33')],_0xab0cf2['filters']));if(_0x7980ca['query'][_0xe989('0x3c')]){_0x2d8dd5[_0xe989('0x3a')]=_[_0xe989('0x3d')](_0x2d8dd5[_0xe989('0x3a')],{'$or':_[_0xe989('0x4d')](_0x2d8dd5[_0xe989('0x35')],function(_0x508c81){var _0xd959f2={};_0xd959f2[_0x508c81]={'$like':'%'+_0x7980ca[_0xe989('0x33')]['filter']+'%'};return _0xd959f2;})});}_0x2d8dd5=_[_0xe989('0x3d')]({},_0x2d8dd5,_0x7980ca[_0xe989('0x3f')]);return _0x5b0589['getDescriptions'](_0x2d8dd5);}})['then'](function(_0x57d919){if(_0x57d919){_0x398546=_0x57d919['length'];if(!_0x7980ca[_0xe989('0x33')][_0xe989('0x4f')](_0xe989('0x38'))){_0x2d8dd5[_0xe989('0x1d')]=qs[_0xe989('0x1d')](_0x7980ca[_0xe989('0x33')][_0xe989('0x1d')]);_0x2d8dd5[_0xe989('0x1a')]=qs[_0xe989('0x1a')](_0x7980ca[_0xe989('0x33')][_0xe989('0x1a')]);}return _0x5b0589[_0xe989('0x52')](_0x2d8dd5);}})[_0xe989('0x25')](function(_0x1e820c){if(_0x1e820c){return _0x1e820c?{'count':_0x398546,'rows':_0x1e820c}:null;}})[_0xe989('0x25')](respondWithResult(_0x4adda9,null))['catch'](handleError(_0x4adda9,null));};exports[_0xe989('0x53')]=function(_0x39a85b,_0x1be0c0,_0x193f25){var _0x6ec262={};var _0x500f70={};var _0x2e696d;var _0x4e5cd9;return db[_0xe989('0x40')]['findOne']({'where':{'id':_0x39a85b[_0xe989('0x45')]['id']}})[_0xe989('0x25')](handleEntityNotFound(_0x1be0c0,null))[_0xe989('0x25')](function(_0x57ad38){if(_0x57ad38){_0x2e696d=_0x57ad38;_0x500f70[_0xe989('0x31')]=_[_0xe989('0x32')](db['Tag'][_0xe989('0x2d')]);_0x500f70[_0xe989('0x33')]=_['keys'](_0x39a85b[_0xe989('0x33')]);_0x500f70[_0xe989('0x34')]=_['intersection'](_0x500f70[_0xe989('0x31')],_0x500f70[_0xe989('0x33')]);_0x6ec262[_0xe989('0x35')]=_['intersection'](_0x500f70[_0xe989('0x31')],qs['fields'](_0x39a85b[_0xe989('0x33')][_0xe989('0x36')]));_0x6ec262[_0xe989('0x35')]=_0x6ec262[_0xe989('0x35')][_0xe989('0x37')]?_0x6ec262[_0xe989('0x35')]:_0x500f70[_0xe989('0x31')];_0x6ec262['order']=qs[_0xe989('0x4c')](_0x39a85b[_0xe989('0x33')][_0xe989('0x4c')]);_0x6ec262['where']=qs[_0xe989('0x34')](_['pick'](_0x39a85b[_0xe989('0x33')],_0x500f70[_0xe989('0x34')]));if(_0x39a85b[_0xe989('0x33')][_0xe989('0x3c')]){_0x6ec262['where']=_[_0xe989('0x3d')](_0x6ec262['where'],{'$or':_[_0xe989('0x4d')](_0x6ec262['attributes'],function(_0x4735dd){var _0x4ddf4c={};_0x4ddf4c[_0x4735dd]={'$like':'%'+_0x39a85b[_0xe989('0x33')]['filter']+'%'};return _0x4ddf4c;})});}_0x6ec262=_['merge']({},_0x6ec262,_0x39a85b['options']);return _0x2e696d[_0xe989('0x53')](_0x6ec262);}})['then'](function(_0x2f489a){if(_0x2f489a){_0x4e5cd9=_0x2f489a[_0xe989('0x37')];if(!_0x39a85b[_0xe989('0x33')][_0xe989('0x4f')](_0xe989('0x38'))){_0x6ec262[_0xe989('0x1d')]=qs[_0xe989('0x1d')](_0x39a85b[_0xe989('0x33')][_0xe989('0x1d')]);_0x6ec262['offset']=qs['offset'](_0x39a85b[_0xe989('0x33')][_0xe989('0x1a')]);}return _0x2e696d[_0xe989('0x53')](_0x6ec262);}})[_0xe989('0x25')](function(_0x3c6437){if(_0x3c6437){return _0x3c6437?{'count':_0x4e5cd9,'rows':_0x3c6437}:null;}})[_0xe989('0x25')](respondWithResult(_0x1be0c0,null))['catch'](handleError(_0x1be0c0,null));};exports[_0xe989('0x54')]=function(_0x1a57d2,_0x30b7c3,_0x461b74){if(_0x1a57d2[_0xe989('0x4a')]['id']){delete _0x1a57d2[_0xe989('0x4a')]['id'];}return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x1a57d2[_0xe989('0x45')]['id']}})[_0xe989('0x25')](handleEntityNotFound(_0x30b7c3,null))[_0xe989('0x25')](function(_0x5e0dca){if(_0x5e0dca){return _0x5e0dca[_0xe989('0x54')](_0x1a57d2[_0xe989('0x4a')]['ids']||[]);}return null;})[_0xe989('0x25')](respondWithResult(_0x30b7c3,null))['catch'](handleError(_0x30b7c3,null));};
\ No newline at end of file
+var _0xfaef=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','update','destroy','then','name','send','map','ZendeskConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','getFields','ZendeskField','length','getSubjects','findOne','getDescriptions','Tag','setTags','ids','eml-format','rimraf','zip-dir'];(function(_0x25df80,_0xa2aec5){var _0x17b6d0=function(_0x446155){while(--_0x446155){_0x25df80['push'](_0x25df80['shift']());}};_0x17b6d0(++_0xa2aec5);}(_0xfaef,0xe4));var _0xffae=function(_0x314329,_0x1f7d08){_0x314329=_0x314329-0x0;var _0x370e08=_0xfaef[_0x314329];return _0x370e08;};'use strict';var emlformat=require(_0xffae('0x0'));var rimraf=require(_0xffae('0x1'));var zipdir=require(_0xffae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xffae('0x3'));var moment=require('moment');var BPromise=require(_0xffae('0x4'));var Mustache=require(_0xffae('0x5'));var util=require(_0xffae('0x6'));var path=require(_0xffae('0x7'));var sox=require(_0xffae('0x8'));var csv=require(_0xffae('0x9'));var ejs=require(_0xffae('0xa'));var fs=require('fs');var fs_extra=require(_0xffae('0xb'));var _=require(_0xffae('0xc'));var squel=require('squel');var crypto=require(_0xffae('0xd'));var jsforce=require(_0xffae('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xffae('0x9'));var querystring=require(_0xffae('0xf'));var Papa=require('papaparse');var Redis=require(_0xffae('0x10'));var authService=require(_0xffae('0x11'));var qs=require(_0xffae('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xffae('0x13'));var logger=require(_0xffae('0x14'))(_0xffae('0x15'));var utils=require('../../config/utils');var config=require(_0xffae('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x142024,_0x5470e3){_0x5470e3=_0x5470e3||0xcc;return function(_0x12cb31){if(_0x12cb31){return _0x142024[_0xffae('0x17')](_0x5470e3);}return _0x142024[_0xffae('0x18')](_0x5470e3)[_0xffae('0x19')]();};}function respondWithResult(_0x593225,_0x5616f1){_0x5616f1=_0x5616f1||0xc8;return function(_0x3fc6f4){if(_0x3fc6f4){return _0x593225['status'](_0x5616f1)[_0xffae('0x1a')](_0x3fc6f4);}};}function respondWithFilteredResult(_0x20432d,_0x402733){return function(_0x448863){if(_0x448863){var _0xa333db=typeof _0x402733[_0xffae('0x1b')]===_0xffae('0x1c')&&typeof _0x402733[_0xffae('0x1d')]==='undefined';var _0x35c7db=_0x448863[_0xffae('0x1e')];var _0x368da7=_0xa333db?0x0:_0x402733[_0xffae('0x1b')];var _0x45f336=_0xa333db?_0x448863[_0xffae('0x1e')]:_0x402733['offset']+_0x402733[_0xffae('0x1d')];var _0x565ce2;if(_0x45f336>=_0x35c7db){_0x45f336=_0x35c7db;_0x565ce2=0xc8;}else{_0x565ce2=0xce;}_0x20432d[_0xffae('0x18')](_0x565ce2);return _0x20432d[_0xffae('0x1f')]('Content-Range',_0x368da7+'-'+_0x45f336+'/'+_0x35c7db)['json'](_0x448863);}return null;};}function patchUpdates(_0x292080){return function(_0x3ae187){try{jsonpatch['apply'](_0x3ae187,_0x292080,!![]);}catch(_0x50a999){return BPromise['reject'](_0x50a999);}return _0x3ae187['save']();};}function saveUpdates(_0x11a65c,_0x2efebf){return function(_0x499945){if(_0x499945){return _0x499945[_0xffae('0x20')](_0x11a65c)['then'](function(_0x2f8ca9){return _0x2f8ca9;});}return null;};}function removeEntity(_0x80d71d,_0x2f8b35){return function(_0x3c6d55){if(_0x3c6d55){return _0x3c6d55[_0xffae('0x21')]()[_0xffae('0x22')](function(){_0x80d71d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xb0962d,_0xe8cdf7){return function(_0x54f1fa){if(!_0x54f1fa){_0xb0962d[_0xffae('0x17')](0x194);}return _0x54f1fa;};}function handleError(_0xf99ca5,_0x5f03c1){_0x5f03c1=_0x5f03c1||0x1f4;return function(_0x3371f8){logger['error'](_0x3371f8['stack']);if(_0x3371f8[_0xffae('0x23')]){delete _0x3371f8[_0xffae('0x23')];}_0xf99ca5['status'](_0x5f03c1)[_0xffae('0x24')](_0x3371f8);};}exports['index']=function(_0x2cd2c8,_0x4b036d){var _0xb7bfff={},_0x349bc4={},_0x1c8a2a={'count':0x0,'rows':[]};var _0x482136=_[_0xffae('0x25')](db[_0xffae('0x26')][_0xffae('0x27')],function(_0xb2b6){return{'name':_0xb2b6['fieldName'],'type':_0xb2b6[_0xffae('0x28')][_0xffae('0x29')]};});_0x349bc4[_0xffae('0x2a')]=_[_0xffae('0x25')](_0x482136,_0xffae('0x23'));_0x349bc4[_0xffae('0x2b')]=_[_0xffae('0x2c')](_0x2cd2c8[_0xffae('0x2b')]);_0x349bc4[_0xffae('0x2d')]=_[_0xffae('0x2e')](_0x349bc4[_0xffae('0x2a')],_0x349bc4[_0xffae('0x2b')]);_0xb7bfff['attributes']=_['intersection'](_0x349bc4[_0xffae('0x2a')],qs[_0xffae('0x2f')](_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x2f')]));_0xb7bfff[_0xffae('0x30')]=_0xb7bfff['attributes']['length']?_0xb7bfff['attributes']:_0x349bc4[_0xffae('0x2a')];if(!_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x31')](_0xffae('0x32'))){_0xb7bfff[_0xffae('0x1d')]=qs[_0xffae('0x1d')](_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x1d')]);_0xb7bfff[_0xffae('0x1b')]=qs[_0xffae('0x1b')](_0x2cd2c8['query'][_0xffae('0x1b')]);}_0xb7bfff[_0xffae('0x33')]=qs[_0xffae('0x34')](_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x34')]);_0xb7bfff[_0xffae('0x35')]=qs[_0xffae('0x2d')](_[_0xffae('0x36')](_0x2cd2c8[_0xffae('0x2b')],_0x349bc4[_0xffae('0x2d')]),_0x482136);if(_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x37')]){_0xb7bfff[_0xffae('0x35')]=_['merge'](_0xb7bfff[_0xffae('0x35')],{'$or':_[_0xffae('0x25')](_0x482136,function(_0x26d80d){if(_0x26d80d[_0xffae('0x28')]!=='VIRTUAL'){var _0x24544e={};_0x24544e[_0x26d80d['name']]={'$like':'%'+_0x2cd2c8['query'][_0xffae('0x37')]+'%'};return _0x24544e;}})});}_0xb7bfff=_[_0xffae('0x38')]({},_0xb7bfff,_0x2cd2c8[_0xffae('0x39')]);var _0x1f6283={'where':_0xb7bfff['where']};return db[_0xffae('0x26')][_0xffae('0x1e')](_0x1f6283)['then'](function(_0x26a93b){_0x1c8a2a['count']=_0x26a93b;if(_0x2cd2c8[_0xffae('0x2b')][_0xffae('0x3a')]){_0xb7bfff[_0xffae('0x3b')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xffae('0x3c')](_0xb7bfff);})[_0xffae('0x22')](function(_0x122ce8){_0x1c8a2a[_0xffae('0x3d')]=_0x122ce8;return _0x1c8a2a;})['then'](respondWithFilteredResult(_0x4b036d,_0xb7bfff))[_0xffae('0x3e')](handleError(_0x4b036d,null));};exports[_0xffae('0x3f')]=function(_0x1a764f,_0x2a2d9b){var _0x4f7df4={'raw':![],'where':{'id':_0x1a764f['params']['id']}},_0xbcf97={};_0xbcf97[_0xffae('0x2a')]=_[_0xffae('0x2c')](db[_0xffae('0x26')][_0xffae('0x27')]);_0xbcf97['query']=_[_0xffae('0x2c')](_0x1a764f['query']);_0xbcf97['filters']=_['intersection'](_0xbcf97[_0xffae('0x2a')],_0xbcf97[_0xffae('0x2b')]);_0x4f7df4[_0xffae('0x30')]=_[_0xffae('0x2e')](_0xbcf97[_0xffae('0x2a')],qs[_0xffae('0x2f')](_0x1a764f['query'][_0xffae('0x2f')]));_0x4f7df4[_0xffae('0x30')]=_0x4f7df4['attributes']['length']?_0x4f7df4[_0xffae('0x30')]:_0xbcf97['model'];if(_0x1a764f[_0xffae('0x2b')]['includeAll']){_0x4f7df4[_0xffae('0x3b')]=[{'all':!![]}];}_0x4f7df4=_[_0xffae('0x38')]({},_0x4f7df4,_0x1a764f[_0xffae('0x39')]);return db['ZendeskConfiguration']['find'](_0x4f7df4)[_0xffae('0x22')](handleEntityNotFound(_0x2a2d9b,null))[_0xffae('0x22')](respondWithResult(_0x2a2d9b,null))[_0xffae('0x3e')](handleError(_0x2a2d9b,null));};exports[_0xffae('0x40')]=function(_0x26d5f0,_0x11dd24){return db[_0xffae('0x26')][_0xffae('0x40')](_0x26d5f0[_0xffae('0x41')],{})['then'](respondWithResult(_0x11dd24,0xc9))[_0xffae('0x3e')](handleError(_0x11dd24,null));};exports[_0xffae('0x20')]=function(_0x4df783,_0x211d06){if(_0x4df783[_0xffae('0x41')]['id']){delete _0x4df783['body']['id'];}return db[_0xffae('0x26')][_0xffae('0x42')]({'where':{'id':_0x4df783[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x211d06,null))[_0xffae('0x22')](saveUpdates(_0x4df783['body'],null))['then'](respondWithResult(_0x211d06,null))[_0xffae('0x3e')](handleError(_0x211d06,null));};exports[_0xffae('0x21')]=function(_0xec10cf,_0x928169){return db[_0xffae('0x26')][_0xffae('0x42')]({'where':{'id':_0xec10cf[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x928169,null))[_0xffae('0x22')](removeEntity(_0x928169,null))['catch'](handleError(_0x928169,null));};exports[_0xffae('0x44')]=function(_0x3d529b,_0x131f16,_0x3bb387){var _0x59f6d5={};var _0x4e90f3={};var _0x2b680c;var _0xc05ef7;return db[_0xffae('0x26')]['findOne']({'where':{'id':_0x3d529b[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x131f16,null))[_0xffae('0x22')](function(_0x53908f){if(_0x53908f){_0x2b680c=_0x53908f;_0x4e90f3[_0xffae('0x2a')]=_[_0xffae('0x2c')](db[_0xffae('0x45')][_0xffae('0x27')]);_0x4e90f3['query']=_[_0xffae('0x2c')](_0x3d529b['query']);_0x4e90f3[_0xffae('0x2d')]=_[_0xffae('0x2e')](_0x4e90f3[_0xffae('0x2a')],_0x4e90f3['query']);_0x59f6d5[_0xffae('0x30')]=_[_0xffae('0x2e')](_0x4e90f3[_0xffae('0x2a')],qs[_0xffae('0x2f')](_0x3d529b[_0xffae('0x2b')][_0xffae('0x2f')]));_0x59f6d5[_0xffae('0x30')]=_0x59f6d5['attributes'][_0xffae('0x46')]?_0x59f6d5[_0xffae('0x30')]:_0x4e90f3[_0xffae('0x2a')];_0x59f6d5[_0xffae('0x33')]=qs[_0xffae('0x34')](_0x3d529b[_0xffae('0x2b')][_0xffae('0x34')]);_0x59f6d5[_0xffae('0x35')]=qs['filters'](_[_0xffae('0x36')](_0x3d529b['query'],_0x4e90f3[_0xffae('0x2d')]));if(_0x3d529b[_0xffae('0x2b')]['filter']){_0x59f6d5[_0xffae('0x35')]=_['merge'](_0x59f6d5[_0xffae('0x35')],{'$or':_['map'](_0x59f6d5[_0xffae('0x30')],function(_0x17ae31){var _0x1d9c45={};_0x1d9c45[_0x17ae31]={'$like':'%'+_0x3d529b[_0xffae('0x2b')][_0xffae('0x37')]+'%'};return _0x1d9c45;})});}_0x59f6d5=_[_0xffae('0x38')]({},_0x59f6d5,_0x3d529b[_0xffae('0x39')]);return _0x2b680c[_0xffae('0x44')](_0x59f6d5);}})[_0xffae('0x22')](function(_0x5bc3ff){if(_0x5bc3ff){_0xc05ef7=_0x5bc3ff[_0xffae('0x46')];if(!_0x3d529b['query']['hasOwnProperty'](_0xffae('0x32'))){_0x59f6d5[_0xffae('0x1d')]=qs['limit'](_0x3d529b[_0xffae('0x2b')][_0xffae('0x1d')]);_0x59f6d5[_0xffae('0x1b')]=qs[_0xffae('0x1b')](_0x3d529b['query']['offset']);}return _0x2b680c[_0xffae('0x44')](_0x59f6d5);}})['then'](function(_0x2c0fcc){if(_0x2c0fcc){return _0x2c0fcc?{'count':_0xc05ef7,'rows':_0x2c0fcc}:null;}})[_0xffae('0x22')](respondWithResult(_0x131f16,null))[_0xffae('0x3e')](handleError(_0x131f16,null));};exports[_0xffae('0x47')]=function(_0x3aa803,_0x133d57,_0x3197ad){var _0x5de0a1={};var _0x1320a1={};var _0x126137;var _0x5c520a;return db[_0xffae('0x26')][_0xffae('0x48')]({'where':{'id':_0x3aa803[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x133d57,null))['then'](function(_0x219c8c){if(_0x219c8c){_0x126137=_0x219c8c;_0x1320a1[_0xffae('0x2a')]=_['keys'](db[_0xffae('0x45')][_0xffae('0x27')]);_0x1320a1[_0xffae('0x2b')]=_[_0xffae('0x2c')](_0x3aa803['query']);_0x1320a1[_0xffae('0x2d')]=_[_0xffae('0x2e')](_0x1320a1['model'],_0x1320a1[_0xffae('0x2b')]);_0x5de0a1['attributes']=_['intersection'](_0x1320a1[_0xffae('0x2a')],qs['fields'](_0x3aa803[_0xffae('0x2b')][_0xffae('0x2f')]));_0x5de0a1[_0xffae('0x30')]=_0x5de0a1[_0xffae('0x30')][_0xffae('0x46')]?_0x5de0a1[_0xffae('0x30')]:_0x1320a1[_0xffae('0x2a')];_0x5de0a1[_0xffae('0x33')]=qs[_0xffae('0x34')](_0x3aa803[_0xffae('0x2b')][_0xffae('0x34')]);_0x5de0a1['where']=qs[_0xffae('0x2d')](_[_0xffae('0x36')](_0x3aa803[_0xffae('0x2b')],_0x1320a1[_0xffae('0x2d')]));if(_0x3aa803[_0xffae('0x2b')][_0xffae('0x37')]){_0x5de0a1['where']=_[_0xffae('0x38')](_0x5de0a1['where'],{'$or':_[_0xffae('0x25')](_0x5de0a1['attributes'],function(_0x6656cd){var _0x31a8dd={};_0x31a8dd[_0x6656cd]={'$like':'%'+_0x3aa803[_0xffae('0x2b')]['filter']+'%'};return _0x31a8dd;})});}_0x5de0a1=_[_0xffae('0x38')]({},_0x5de0a1,_0x3aa803[_0xffae('0x39')]);return _0x126137[_0xffae('0x47')](_0x5de0a1);}})[_0xffae('0x22')](function(_0x41f12f){if(_0x41f12f){_0x5c520a=_0x41f12f[_0xffae('0x46')];if(!_0x3aa803[_0xffae('0x2b')][_0xffae('0x31')]('nolimit')){_0x5de0a1[_0xffae('0x1d')]=qs['limit'](_0x3aa803[_0xffae('0x2b')]['limit']);_0x5de0a1[_0xffae('0x1b')]=qs[_0xffae('0x1b')](_0x3aa803['query'][_0xffae('0x1b')]);}return _0x126137[_0xffae('0x47')](_0x5de0a1);}})[_0xffae('0x22')](function(_0x3f5ee6){if(_0x3f5ee6){return _0x3f5ee6?{'count':_0x5c520a,'rows':_0x3f5ee6}:null;}})[_0xffae('0x22')](respondWithResult(_0x133d57,null))[_0xffae('0x3e')](handleError(_0x133d57,null));};exports[_0xffae('0x49')]=function(_0x3102d2,_0x525bf6,_0x195d20){var _0x4b0862={};var _0x45cbb1={};var _0x53f546;var _0x1f0a1c;return db[_0xffae('0x26')][_0xffae('0x48')]({'where':{'id':_0x3102d2[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x525bf6,null))['then'](function(_0xffe52b){if(_0xffe52b){_0x53f546=_0xffe52b;_0x45cbb1['model']=_[_0xffae('0x2c')](db[_0xffae('0x45')][_0xffae('0x27')]);_0x45cbb1[_0xffae('0x2b')]=_['keys'](_0x3102d2[_0xffae('0x2b')]);_0x45cbb1[_0xffae('0x2d')]=_[_0xffae('0x2e')](_0x45cbb1['model'],_0x45cbb1[_0xffae('0x2b')]);_0x4b0862[_0xffae('0x30')]=_['intersection'](_0x45cbb1[_0xffae('0x2a')],qs[_0xffae('0x2f')](_0x3102d2[_0xffae('0x2b')][_0xffae('0x2f')]));_0x4b0862['attributes']=_0x4b0862[_0xffae('0x30')][_0xffae('0x46')]?_0x4b0862[_0xffae('0x30')]:_0x45cbb1[_0xffae('0x2a')];_0x4b0862[_0xffae('0x33')]=qs[_0xffae('0x34')](_0x3102d2['query'][_0xffae('0x34')]);_0x4b0862[_0xffae('0x35')]=qs['filters'](_[_0xffae('0x36')](_0x3102d2[_0xffae('0x2b')],_0x45cbb1['filters']));if(_0x3102d2[_0xffae('0x2b')][_0xffae('0x37')]){_0x4b0862[_0xffae('0x35')]=_[_0xffae('0x38')](_0x4b0862[_0xffae('0x35')],{'$or':_[_0xffae('0x25')](_0x4b0862['attributes'],function(_0x2ee15f){var _0x5ebf5e={};_0x5ebf5e[_0x2ee15f]={'$like':'%'+_0x3102d2[_0xffae('0x2b')][_0xffae('0x37')]+'%'};return _0x5ebf5e;})});}_0x4b0862=_[_0xffae('0x38')]({},_0x4b0862,_0x3102d2[_0xffae('0x39')]);return _0x53f546[_0xffae('0x49')](_0x4b0862);}})[_0xffae('0x22')](function(_0x2ac0f4){if(_0x2ac0f4){_0x1f0a1c=_0x2ac0f4['length'];if(!_0x3102d2[_0xffae('0x2b')][_0xffae('0x31')](_0xffae('0x32'))){_0x4b0862[_0xffae('0x1d')]=qs[_0xffae('0x1d')](_0x3102d2['query'][_0xffae('0x1d')]);_0x4b0862[_0xffae('0x1b')]=qs[_0xffae('0x1b')](_0x3102d2[_0xffae('0x2b')][_0xffae('0x1b')]);}return _0x53f546[_0xffae('0x49')](_0x4b0862);}})[_0xffae('0x22')](function(_0x9ae5df){if(_0x9ae5df){return _0x9ae5df?{'count':_0x1f0a1c,'rows':_0x9ae5df}:null;}})[_0xffae('0x22')](respondWithResult(_0x525bf6,null))[_0xffae('0x3e')](handleError(_0x525bf6,null));};exports['getTags']=function(_0x20f039,_0x4c7efa,_0xa80b7c){var _0x441e1f={};var _0x5e8e6c={};var _0x3722f4;var _0x5194e9;return db[_0xffae('0x26')][_0xffae('0x48')]({'where':{'id':_0x20f039[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x4c7efa,null))[_0xffae('0x22')](function(_0x3a11f8){if(_0x3a11f8){_0x3722f4=_0x3a11f8;_0x5e8e6c[_0xffae('0x2a')]=_[_0xffae('0x2c')](db[_0xffae('0x4a')]['rawAttributes']);_0x5e8e6c['query']=_[_0xffae('0x2c')](_0x20f039[_0xffae('0x2b')]);_0x5e8e6c[_0xffae('0x2d')]=_[_0xffae('0x2e')](_0x5e8e6c['model'],_0x5e8e6c[_0xffae('0x2b')]);_0x441e1f['attributes']=_[_0xffae('0x2e')](_0x5e8e6c[_0xffae('0x2a')],qs[_0xffae('0x2f')](_0x20f039[_0xffae('0x2b')]['fields']));_0x441e1f[_0xffae('0x30')]=_0x441e1f['attributes'][_0xffae('0x46')]?_0x441e1f['attributes']:_0x5e8e6c[_0xffae('0x2a')];_0x441e1f[_0xffae('0x33')]=qs[_0xffae('0x34')](_0x20f039[_0xffae('0x2b')]['sort']);_0x441e1f[_0xffae('0x35')]=qs[_0xffae('0x2d')](_[_0xffae('0x36')](_0x20f039[_0xffae('0x2b')],_0x5e8e6c['filters']));if(_0x20f039[_0xffae('0x2b')]['filter']){_0x441e1f[_0xffae('0x35')]=_['merge'](_0x441e1f[_0xffae('0x35')],{'$or':_['map'](_0x441e1f[_0xffae('0x30')],function(_0x25c3c1){var _0x26a12f={};_0x26a12f[_0x25c3c1]={'$like':'%'+_0x20f039[_0xffae('0x2b')][_0xffae('0x37')]+'%'};return _0x26a12f;})});}_0x441e1f=_[_0xffae('0x38')]({},_0x441e1f,_0x20f039[_0xffae('0x39')]);return _0x3722f4['getTags'](_0x441e1f);}})[_0xffae('0x22')](function(_0x1b0928){if(_0x1b0928){_0x5194e9=_0x1b0928[_0xffae('0x46')];if(!_0x20f039['query'][_0xffae('0x31')](_0xffae('0x32'))){_0x441e1f[_0xffae('0x1d')]=qs[_0xffae('0x1d')](_0x20f039[_0xffae('0x2b')][_0xffae('0x1d')]);_0x441e1f[_0xffae('0x1b')]=qs[_0xffae('0x1b')](_0x20f039['query']['offset']);}return _0x3722f4['getTags'](_0x441e1f);}})[_0xffae('0x22')](function(_0x41e63c){if(_0x41e63c){return _0x41e63c?{'count':_0x5194e9,'rows':_0x41e63c}:null;}})[_0xffae('0x22')](respondWithResult(_0x4c7efa,null))[_0xffae('0x3e')](handleError(_0x4c7efa,null));};exports[_0xffae('0x4b')]=function(_0x453b4c,_0x4af949,_0x4f2a7a){if(_0x453b4c[_0xffae('0x41')]['id']){delete _0x453b4c[_0xffae('0x41')]['id'];}return db[_0xffae('0x26')]['findOne']({'where':{'id':_0x453b4c[_0xffae('0x43')]['id']}})[_0xffae('0x22')](handleEntityNotFound(_0x4af949,null))['then'](function(_0xd37d8d){if(_0xd37d8d){return _0xd37d8d[_0xffae('0x4b')](_0x453b4c[_0xffae('0x41')][_0xffae('0x4c')]||[]);}return null;})['then'](respondWithResult(_0x4af949,null))[_0xffae('0x3e')](handleError(_0x4af949,null));};
\ No newline at end of file
index 8ee9cfd..4e44972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['exports','define','ZendeskConfiguration','lodash','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x4c9c38,_0x2d0e47){_0x4c9c38=_0x4c9c38-0x0;var _0x166b04=_0xdd4f[_0x4c9c38];return _0x166b04;};'use strict';var _=require(_0xfdd4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfdd4('0x1'));var BPromise=require(_0xfdd4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfdd4('0x3'));var rimraf=require(_0xfdd4('0x4'));var config=require(_0xfdd4('0x5'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xfdd4('0x6')]=function(_0x43cbcf,_0x30e080){return _0x43cbcf[_0xfdd4('0x7')](_0xfdd4('0x8'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5eb8=['request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','ZendeskConfiguration','int_zendesk_configurations','../../config/logger','api','moment','bluebird'];(function(_0x40c116,_0x355d09){var _0x52e0b0=function(_0x4ea50c){while(--_0x4ea50c){_0x40c116['push'](_0x40c116['shift']());}};_0x52e0b0(++_0x355d09);}(_0x5eb8,0xb0));var _0x85eb=function(_0x11deef,_0x34bbdb){_0x11deef=_0x11deef-0x0;var _0xe9ba85=_0x5eb8[_0x11deef];return _0xe9ba85;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x85eb('0x0'))(_0x85eb('0x1'));var moment=require(_0x85eb('0x2'));var BPromise=require(_0x85eb('0x3'));var rp=require(_0x85eb('0x4'));var fs=require('fs');var path=require(_0x85eb('0x5'));var rimraf=require(_0x85eb('0x6'));var config=require(_0x85eb('0x7'));var attributes=require(_0x85eb('0x8'));module[_0x85eb('0x9')]=function(_0x2bf83c,_0x1ba1d8){return _0x2bf83c['define'](_0x85eb('0xa'),attributes,{'tableName':_0x85eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 479bd6a..50ce8a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc08=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','ZendeskConfiguration,\x20%s,\x20%s','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird'];(function(_0x520f7e,_0x67518d){var _0x587f49=function(_0x226a93){while(--_0x226a93){_0x520f7e['push'](_0x520f7e['shift']());}};_0x587f49(++_0x67518d);}(_0xbc08,0xa4));var _0x8bc0=function(_0x12cfa8,_0x2deabd){_0x12cfa8=_0x12cfa8-0x0;var _0x58390c=_0xbc08[_0x12cfa8];return _0x58390c;};'use strict';var _=require(_0x8bc0('0x0'));var util=require(_0x8bc0('0x1'));var moment=require(_0x8bc0('0x2'));var BPromise=require(_0x8bc0('0x3'));var rs=require(_0x8bc0('0x4'));var fs=require('fs');var Redis=require(_0x8bc0('0x5'));var db=require(_0x8bc0('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8bc0('0x7'))(_0x8bc0('0x8'));var config=require(_0x8bc0('0x9'));var jayson=require(_0x8bc0('0xa'));var client=jayson['client'][_0x8bc0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1088d8,_0x4290dd,_0x9f8f4a){return new BPromise(function(_0x1b8183,_0x293f2f){return client['request'](_0x1088d8,_0x9f8f4a)[_0x8bc0('0xc')](function(_0x17c27d){logger['info'](_0x8bc0('0xd'),_0x4290dd,'request\x20sent');logger['debug'](_0x8bc0('0xe'),_0x4290dd,_0x8bc0('0xf'),JSON[_0x8bc0('0x10')](_0x17c27d));if(_0x17c27d[_0x8bc0('0x11')]){if(_0x17c27d['error']['code']===0x1f4){logger[_0x8bc0('0x11')](_0x8bc0('0xd'),_0x4290dd,_0x17c27d[_0x8bc0('0x11')][_0x8bc0('0x12')]);return _0x293f2f(_0x17c27d['error']['message']);}logger[_0x8bc0('0x11')]('ZendeskConfiguration,\x20%s,\x20%s',_0x4290dd,_0x17c27d['error']['message']);return _0x1b8183(_0x17c27d[_0x8bc0('0x11')][_0x8bc0('0x12')]);}else{logger['info'](_0x8bc0('0xd'),_0x4290dd,_0x8bc0('0xf'));_0x1b8183(_0x17c27d[_0x8bc0('0x13')][_0x8bc0('0x12')]);}})[_0x8bc0('0x14')](function(_0x4d8a22){logger[_0x8bc0('0x11')](_0x8bc0('0xd'),_0x4290dd,_0x4d8a22);_0x293f2f(_0x4d8a22);});});}
\ No newline at end of file
+var _0x9bbb=['ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\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','http','info'];(function(_0x44875d,_0x2c98b6){var _0x3942bb=function(_0x2fd2c8){while(--_0x2fd2c8){_0x44875d['push'](_0x44875d['shift']());}};_0x3942bb(++_0x2c98b6);}(_0x9bbb,0x1cc));var _0xb9bb=function(_0xc2bc89,_0x32362b){_0xc2bc89=_0xc2bc89-0x0;var _0x45480a=_0x9bbb[_0xc2bc89];return _0x45480a;};'use strict';var _=require(_0xb9bb('0x0'));var util=require(_0xb9bb('0x1'));var moment=require(_0xb9bb('0x2'));var BPromise=require(_0xb9bb('0x3'));var rs=require(_0xb9bb('0x4'));var fs=require('fs');var Redis=require(_0xb9bb('0x5'));var db=require(_0xb9bb('0x6'))['db'];var utils=require(_0xb9bb('0x7'));var logger=require(_0xb9bb('0x8'))(_0xb9bb('0x9'));var config=require(_0xb9bb('0xa'));var jayson=require(_0xb9bb('0xb'));var client=jayson[_0xb9bb('0xc')][_0xb9bb('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2b5401,_0x33c17d,_0x3bc3c9){return new BPromise(function(_0xb51c93,_0x240b4e){return client['request'](_0x2b5401,_0x3bc3c9)['then'](function(_0x7a109c){logger[_0xb9bb('0xe')](_0xb9bb('0xf'),_0x33c17d,_0xb9bb('0x10'));logger[_0xb9bb('0x11')](_0xb9bb('0x12'),_0x33c17d,_0xb9bb('0x10'),JSON[_0xb9bb('0x13')](_0x7a109c));if(_0x7a109c[_0xb9bb('0x14')]){if(_0x7a109c[_0xb9bb('0x14')][_0xb9bb('0x15')]===0x1f4){logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x33c17d,_0x7a109c[_0xb9bb('0x14')]['message']);return _0x240b4e(_0x7a109c[_0xb9bb('0x14')][_0xb9bb('0x16')]);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x33c17d,_0x7a109c['error']['message']);return _0xb51c93(_0x7a109c[_0xb9bb('0x14')][_0xb9bb('0x16')]);}else{logger[_0xb9bb('0xe')](_0xb9bb('0xf'),_0x33c17d,_0xb9bb('0x10'));_0xb51c93(_0x7a109c[_0xb9bb('0x17')][_0xb9bb('0x16')]);}})[_0xb9bb('0x18')](function(_0x3d6bbd){logger[_0xb9bb('0x14')](_0xb9bb('0xf'),_0x33c17d,_0x3d6bbd);_0x240b4e(_0x3d6bbd);});});}
\ No newline at end of file
index 596ec05..75ba7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c25=['put','/:id','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','show','post','create'];(function(_0x364e6d,_0x5b7d49){var _0x3051cd=function(_0x417c9b){while(--_0x417c9b){_0x364e6d['push'](_0x364e6d['shift']());}};_0x3051cd(++_0x5b7d49);}(_0x4c25,0x1f2));var _0x54c2=function(_0x1e06f1,_0x59d7e1){_0x1e06f1=_0x1e06f1-0x0;var _0x34f77e=_0x4c25[_0x1e06f1];return _0x34f77e;};'use strict';var multer=require(_0x54c2('0x0'));var util=require(_0x54c2('0x1'));var path=require('path');var timeout=require(_0x54c2('0x2'));var express=require(_0x54c2('0x3'));var router=express[_0x54c2('0x4')]();var fs_extra=require(_0x54c2('0x5'));var auth=require(_0x54c2('0x6'));var interaction=require(_0x54c2('0x7'));var config=require(_0x54c2('0x8'));var controller=require(_0x54c2('0x9'));router[_0x54c2('0xa')]('/',auth[_0x54c2('0xb')](),controller['index']);router[_0x54c2('0xa')]('/:id',auth[_0x54c2('0xb')](),controller[_0x54c2('0xc')]);router[_0x54c2('0xd')]('/',auth['isAuthenticated'](),controller[_0x54c2('0xe')]);router[_0x54c2('0xf')](_0x54c2('0x10'),auth[_0x54c2('0xb')](),controller[_0x54c2('0x11')]);router['delete'](_0x54c2('0x10'),auth[_0x54c2('0xb')](),controller[_0x54c2('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa7e7=['../../components/interaction/service','../../config/environment','./intZendeskField.controller','index','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xa7e7,0x117));var _0x7a7e=function(_0x1c58ef,_0xcba064){_0x1c58ef=_0x1c58ef-0x0;var _0x1a1714=_0xa7e7[_0x1c58ef];return _0x1a1714;};'use strict';var multer=require('multer');var util=require(_0x7a7e('0x0'));var path=require(_0x7a7e('0x1'));var timeout=require(_0x7a7e('0x2'));var express=require(_0x7a7e('0x3'));var router=express[_0x7a7e('0x4')]();var fs_extra=require(_0x7a7e('0x5'));var auth=require(_0x7a7e('0x6'));var interaction=require(_0x7a7e('0x7'));var config=require(_0x7a7e('0x8'));var controller=require(_0x7a7e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x7a7e('0xa')]);router[_0x7a7e('0xb')](_0x7a7e('0xc'),auth[_0x7a7e('0xd')](),controller[_0x7a7e('0xe')]);router[_0x7a7e('0xf')]('/',auth['isAuthenticated'](),controller[_0x7a7e('0x10')]);router[_0x7a7e('0x11')](_0x7a7e('0xc'),auth['isAuthenticated'](),controller[_0x7a7e('0x12')]);router[_0x7a7e('0x13')]('/:id',auth[_0x7a7e('0xd')](),controller[_0x7a7e('0x14')]);module[_0x7a7e('0x15')]=router;
\ No newline at end of file
index 5f22a4c..2062149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7044=['string','STRING','BOOLEAN','sequelize','exports','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x3de6ea,_0x7467f9){var _0x38fe1d=function(_0x43a16f){while(--_0x43a16f){_0x3de6ea['push'](_0x3de6ea['shift']());}};_0x38fe1d(++_0x7467f9);}(_0x7044,0x1b1));var _0x4704=function(_0x49217d,_0x5d7e15){_0x49217d=_0x49217d-0x0;var _0x409671=_0x7044[_0x49217d];return _0x409671;};'use strict';var Sequelize=require(_0x4704('0x0'));module[_0x4704('0x1')]={'type':{'type':Sequelize[_0x4704('0x2')]('string',_0x4704('0x3'),_0x4704('0x4'),_0x4704('0x5'),_0x4704('0x6')),'defaultValue':_0x4704('0x7')},'content':{'type':Sequelize[_0x4704('0x8')]},'key':{'type':Sequelize[_0x4704('0x8')]},'keyType':{'type':Sequelize[_0x4704('0x2')](_0x4704('0x7'),_0x4704('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x4704('0x8')]},'idField':{'type':Sequelize[_0x4704('0x8')]},'nameField':{'type':Sequelize[_0x4704('0x8')]},'customField':{'type':Sequelize[_0x4704('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4704('0x8')]}};
\ No newline at end of file
+var _0x64ed=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','STRING'];(function(_0x103817,_0x401c31){var _0x7ef8b7=function(_0x276c08){while(--_0x276c08){_0x103817['push'](_0x103817['shift']());}};_0x7ef8b7(++_0x401c31);}(_0x64ed,0x101));var _0xd64e=function(_0x99189b,_0x1d5f56){_0x99189b=_0x99189b-0x0;var _0x2ce25c=_0x64ed[_0x99189b];return _0x2ce25c;};'use strict';var Sequelize=require(_0xd64e('0x0'));module[_0xd64e('0x1')]={'type':{'type':Sequelize[_0xd64e('0x2')](_0xd64e('0x3'),_0xd64e('0x4'),_0xd64e('0x5'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xd64e('0x6')]},'key':{'type':Sequelize[_0xd64e('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xd64e('0x3'),'variable',_0xd64e('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xd64e('0x6')]},'nameField':{'type':Sequelize[_0xd64e('0x6')]},'customField':{'type':Sequelize[_0xd64e('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd64e('0x6')]}};
\ No newline at end of file
index eea0425..a86fd7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b5=['name','send','index','ZendeskField','rawAttributes','fieldName','key','model','map','query','filters','attributes','intersection','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','fields','length','merge','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack'];(function(_0x1b5e8b,_0x7c03eb){var _0xa005f3=function(_0x3eab49){while(--_0x3eab49){_0x1b5e8b['push'](_0x1b5e8b['shift']());}};_0xa005f3(++_0x7c03eb);}(_0x87b5,0x160));var _0x587b=function(_0x239452,_0x28ac37){_0x239452=_0x239452-0x0;var _0x1c11ae=_0x87b5[_0x239452];return _0x1c11ae;};'use strict';var emlformat=require(_0x587b('0x0'));var rimraf=require(_0x587b('0x1'));var zipdir=require(_0x587b('0x2'));var jsonpatch=require(_0x587b('0x3'));var rp=require('request-promise');var moment=require(_0x587b('0x4'));var BPromise=require(_0x587b('0x5'));var Mustache=require(_0x587b('0x6'));var util=require(_0x587b('0x7'));var path=require(_0x587b('0x8'));var sox=require(_0x587b('0x9'));var csv=require(_0x587b('0xa'));var ejs=require(_0x587b('0xb'));var fs=require('fs');var fs_extra=require(_0x587b('0xc'));var _=require('lodash');var squel=require(_0x587b('0xd'));var crypto=require('crypto');var jsforce=require(_0x587b('0xe'));var deskjs=require(_0x587b('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x587b('0x10'));var authService=require(_0x587b('0x11'));var qs=require(_0x587b('0x12'));var as=require(_0x587b('0x13'));var hardwareService=require(_0x587b('0x14'));var logger=require(_0x587b('0x15'))(_0x587b('0x16'));var utils=require(_0x587b('0x17'));var config=require(_0x587b('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb86573,_0x30e879){_0x30e879=_0x30e879||0xcc;return function(_0x4dd993){if(_0x4dd993){return _0xb86573[_0x587b('0x19')](_0x30e879);}return _0xb86573['status'](_0x30e879)[_0x587b('0x1a')]();};}function respondWithResult(_0x4ff427,_0x31aefd){_0x31aefd=_0x31aefd||0xc8;return function(_0x2d0e7d){if(_0x2d0e7d){return _0x4ff427[_0x587b('0x1b')](_0x31aefd)['json'](_0x2d0e7d);}};}function respondWithFilteredResult(_0x365dc6,_0x133337){return function(_0x2557ac){if(_0x2557ac){var _0x3b0c0f=typeof _0x133337[_0x587b('0x1c')]===_0x587b('0x1d')&&typeof _0x133337[_0x587b('0x1e')]===_0x587b('0x1d');var _0x2b8779=_0x2557ac[_0x587b('0x1f')];var _0x457b7a=_0x3b0c0f?0x0:_0x133337[_0x587b('0x1c')];var _0x3162be=_0x3b0c0f?_0x2557ac['count']:_0x133337[_0x587b('0x1c')]+_0x133337['limit'];var _0x5a96ac;if(_0x3162be>=_0x2b8779){_0x3162be=_0x2b8779;_0x5a96ac=0xc8;}else{_0x5a96ac=0xce;}_0x365dc6[_0x587b('0x1b')](_0x5a96ac);return _0x365dc6[_0x587b('0x20')](_0x587b('0x21'),_0x457b7a+'-'+_0x3162be+'/'+_0x2b8779)[_0x587b('0x22')](_0x2557ac);}return null;};}function patchUpdates(_0x135d4c){return function(_0xce2741){try{jsonpatch[_0x587b('0x23')](_0xce2741,_0x135d4c,!![]);}catch(_0x4905f3){return BPromise[_0x587b('0x24')](_0x4905f3);}return _0xce2741[_0x587b('0x25')]();};}function saveUpdates(_0x53646a,_0x31e81a){return function(_0x1575f9){if(_0x1575f9){return _0x1575f9[_0x587b('0x26')](_0x53646a)[_0x587b('0x27')](function(_0x3f14ea){return _0x3f14ea;});}return null;};}function removeEntity(_0x32cf4f,_0x28801d){return function(_0x360ef7){if(_0x360ef7){return _0x360ef7[_0x587b('0x28')]()['then'](function(){_0x32cf4f[_0x587b('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c9315,_0x5954dd){return function(_0x32a783){if(!_0x32a783){_0x1c9315['sendStatus'](0x194);}return _0x32a783;};}function handleError(_0x3dd191,_0x503227){_0x503227=_0x503227||0x1f4;return function(_0x9fe4b8){logger[_0x587b('0x29')](_0x9fe4b8[_0x587b('0x2a')]);if(_0x9fe4b8['name']){delete _0x9fe4b8[_0x587b('0x2b')];}_0x3dd191['status'](_0x503227)[_0x587b('0x2c')](_0x9fe4b8);};}exports[_0x587b('0x2d')]=function(_0x4d86d4,_0xd20a48){var _0x1e7f69={},_0x4d5fa1={},_0x257a32={'count':0x0,'rows':[]};var _0x3fede3=_['map'](db[_0x587b('0x2e')][_0x587b('0x2f')],function(_0x19b1e4){return{'name':_0x19b1e4[_0x587b('0x30')],'type':_0x19b1e4['type'][_0x587b('0x31')]};});_0x4d5fa1[_0x587b('0x32')]=_[_0x587b('0x33')](_0x3fede3,_0x587b('0x2b'));_0x4d5fa1['query']=_['keys'](_0x4d86d4[_0x587b('0x34')]);_0x4d5fa1[_0x587b('0x35')]=_['intersection'](_0x4d5fa1[_0x587b('0x32')],_0x4d5fa1[_0x587b('0x34')]);_0x1e7f69[_0x587b('0x36')]=_[_0x587b('0x37')](_0x4d5fa1[_0x587b('0x32')],qs['fields'](_0x4d86d4['query']['fields']));_0x1e7f69[_0x587b('0x36')]=_0x1e7f69[_0x587b('0x36')]['length']?_0x1e7f69['attributes']:_0x4d5fa1['model'];if(!_0x4d86d4[_0x587b('0x34')]['hasOwnProperty'](_0x587b('0x38'))){_0x1e7f69[_0x587b('0x1e')]=qs[_0x587b('0x1e')](_0x4d86d4[_0x587b('0x34')][_0x587b('0x1e')]);_0x1e7f69['offset']=qs[_0x587b('0x1c')](_0x4d86d4[_0x587b('0x34')]['offset']);}_0x1e7f69[_0x587b('0x39')]=qs[_0x587b('0x3a')](_0x4d86d4[_0x587b('0x34')]['sort']);_0x1e7f69[_0x587b('0x3b')]=qs['filters'](_[_0x587b('0x3c')](_0x4d86d4['query'],_0x4d5fa1['filters']),_0x3fede3);if(_0x4d86d4[_0x587b('0x34')][_0x587b('0x3d')]){_0x1e7f69['where']=_['merge'](_0x1e7f69[_0x587b('0x3b')],{'$or':_[_0x587b('0x33')](_0x3fede3,function(_0x29d6f7){if(_0x29d6f7[_0x587b('0x3e')]!==_0x587b('0x3f')){var _0x24277d={};_0x24277d[_0x29d6f7[_0x587b('0x2b')]]={'$like':'%'+_0x4d86d4['query'][_0x587b('0x3d')]+'%'};return _0x24277d;}})});}_0x1e7f69=_['merge']({},_0x1e7f69,_0x4d86d4[_0x587b('0x40')]);var _0x53f777={'where':_0x1e7f69[_0x587b('0x3b')]};return db[_0x587b('0x2e')][_0x587b('0x1f')](_0x53f777)[_0x587b('0x27')](function(_0x17fb0f){_0x257a32['count']=_0x17fb0f;if(_0x4d86d4[_0x587b('0x34')][_0x587b('0x41')]){_0x1e7f69[_0x587b('0x42')]=[{'all':!![]}];}return db[_0x587b('0x2e')][_0x587b('0x43')](_0x1e7f69);})['then'](function(_0x28f83b){_0x257a32[_0x587b('0x44')]=_0x28f83b;return _0x257a32;})['then'](respondWithFilteredResult(_0xd20a48,_0x1e7f69))[_0x587b('0x45')](handleError(_0xd20a48,null));};exports[_0x587b('0x46')]=function(_0x597231,_0x2a41cb){var _0x539e06={'raw':!![],'where':{'id':_0x597231['params']['id']}},_0x4b21df={};_0x4b21df[_0x587b('0x32')]=_[_0x587b('0x47')](db[_0x587b('0x2e')][_0x587b('0x2f')]);_0x4b21df[_0x587b('0x34')]=_['keys'](_0x597231['query']);_0x4b21df[_0x587b('0x35')]=_[_0x587b('0x37')](_0x4b21df['model'],_0x4b21df[_0x587b('0x34')]);_0x539e06[_0x587b('0x36')]=_[_0x587b('0x37')](_0x4b21df[_0x587b('0x32')],qs[_0x587b('0x48')](_0x597231[_0x587b('0x34')][_0x587b('0x48')]));_0x539e06[_0x587b('0x36')]=_0x539e06['attributes'][_0x587b('0x49')]?_0x539e06[_0x587b('0x36')]:_0x4b21df[_0x587b('0x32')];if(_0x597231[_0x587b('0x34')][_0x587b('0x41')]){_0x539e06[_0x587b('0x42')]=[{'all':!![]}];}_0x539e06=_[_0x587b('0x4a')]({},_0x539e06,_0x597231[_0x587b('0x40')]);return db[_0x587b('0x2e')][_0x587b('0x4b')](_0x539e06)[_0x587b('0x27')](handleEntityNotFound(_0x2a41cb,null))[_0x587b('0x27')](respondWithResult(_0x2a41cb,null))[_0x587b('0x45')](handleError(_0x2a41cb,null));};exports['create']=function(_0xbd32,_0x402ba5){return db[_0x587b('0x2e')][_0x587b('0x4c')](_0xbd32[_0x587b('0x4d')],{})[_0x587b('0x27')](respondWithResult(_0x402ba5,0xc9))['catch'](handleError(_0x402ba5,null));};exports[_0x587b('0x26')]=function(_0x262f86,_0x4b223f){if(_0x262f86['body']['id']){delete _0x262f86[_0x587b('0x4d')]['id'];}return db[_0x587b('0x2e')][_0x587b('0x4b')]({'where':{'id':_0x262f86[_0x587b('0x4e')]['id']}})[_0x587b('0x27')](handleEntityNotFound(_0x4b223f,null))[_0x587b('0x27')](saveUpdates(_0x262f86['body'],null))['then'](respondWithResult(_0x4b223f,null))[_0x587b('0x45')](handleError(_0x4b223f,null));};exports['destroy']=function(_0x48eafd,_0x2f1ed1){return db[_0x587b('0x2e')][_0x587b('0x4b')]({'where':{'id':_0x48eafd[_0x587b('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2f1ed1,null))['then'](removeEntity(_0x2f1ed1,null))[_0x587b('0x45')](handleError(_0x2f1ed1,null));};
\ No newline at end of file
+var _0x4bf2=['where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','destroy','then','sendStatus','error','name','index','map','ZendeskField','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','sort'];(function(_0x438778,_0x81b5d){var _0x2de8b7=function(_0x3c668f){while(--_0x3c668f){_0x438778['push'](_0x438778['shift']());}};_0x2de8b7(++_0x81b5d);}(_0x4bf2,0xa3));var _0x24bf=function(_0x3c3528,_0x2bbe98){_0x3c3528=_0x3c3528-0x0;var _0x3a0e95=_0x4bf2[_0x3c3528];return _0x3a0e95;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x24bf('0x0'));var zipdir=require(_0x24bf('0x1'));var jsonpatch=require(_0x24bf('0x2'));var rp=require(_0x24bf('0x3'));var moment=require(_0x24bf('0x4'));var BPromise=require(_0x24bf('0x5'));var Mustache=require(_0x24bf('0x6'));var util=require(_0x24bf('0x7'));var path=require(_0x24bf('0x8'));var sox=require(_0x24bf('0x9'));var csv=require('to-csv');var ejs=require(_0x24bf('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x24bf('0xb'));var crypto=require(_0x24bf('0xc'));var jsforce=require(_0x24bf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x24bf('0xe'));var querystring=require(_0x24bf('0xf'));var Papa=require(_0x24bf('0x10'));var Redis=require(_0x24bf('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x24bf('0x12'));var as=require(_0x24bf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x24bf('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x24bf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x592119,_0x1d561a){_0x1d561a=_0x1d561a||0xcc;return function(_0x14085f){if(_0x14085f){return _0x592119['sendStatus'](_0x1d561a);}return _0x592119[_0x24bf('0x16')](_0x1d561a)[_0x24bf('0x17')]();};}function respondWithResult(_0x480f73,_0x281dbd){_0x281dbd=_0x281dbd||0xc8;return function(_0x27d3c4){if(_0x27d3c4){return _0x480f73['status'](_0x281dbd)[_0x24bf('0x18')](_0x27d3c4);}};}function respondWithFilteredResult(_0x59fdd2,_0x5681da){return function(_0x14a274){if(_0x14a274){var _0x401523=typeof _0x5681da[_0x24bf('0x19')]===_0x24bf('0x1a')&&typeof _0x5681da[_0x24bf('0x1b')]===_0x24bf('0x1a');var _0x2a2cd6=_0x14a274['count'];var _0x43eef0=_0x401523?0x0:_0x5681da[_0x24bf('0x19')];var _0x3ae6ae=_0x401523?_0x14a274['count']:_0x5681da[_0x24bf('0x19')]+_0x5681da[_0x24bf('0x1b')];var _0x49bc50;if(_0x3ae6ae>=_0x2a2cd6){_0x3ae6ae=_0x2a2cd6;_0x49bc50=0xc8;}else{_0x49bc50=0xce;}_0x59fdd2[_0x24bf('0x16')](_0x49bc50);return _0x59fdd2[_0x24bf('0x1c')](_0x24bf('0x1d'),_0x43eef0+'-'+_0x3ae6ae+'/'+_0x2a2cd6)[_0x24bf('0x18')](_0x14a274);}return null;};}function patchUpdates(_0x534799){return function(_0x1ec416){try{jsonpatch[_0x24bf('0x1e')](_0x1ec416,_0x534799,!![]);}catch(_0x4a76b3){return BPromise[_0x24bf('0x1f')](_0x4a76b3);}return _0x1ec416['save']();};}function saveUpdates(_0x2061c6,_0x58debd){return function(_0x48c54a){if(_0x48c54a){return _0x48c54a['update'](_0x2061c6)['then'](function(_0x301a9e){return _0x301a9e;});}return null;};}function removeEntity(_0x3e8394,_0x197d92){return function(_0xa8eb11){if(_0xa8eb11){return _0xa8eb11[_0x24bf('0x20')]()[_0x24bf('0x21')](function(){_0x3e8394[_0x24bf('0x16')](0xcc)[_0x24bf('0x17')]();});}};}function handleEntityNotFound(_0x5a10cb,_0x262b25){return function(_0x17d027){if(!_0x17d027){_0x5a10cb[_0x24bf('0x22')](0x194);}return _0x17d027;};}function handleError(_0x2e793d,_0x5567f6){_0x5567f6=_0x5567f6||0x1f4;return function(_0x261802){logger[_0x24bf('0x23')](_0x261802['stack']);if(_0x261802[_0x24bf('0x24')]){delete _0x261802[_0x24bf('0x24')];}_0x2e793d[_0x24bf('0x16')](_0x5567f6)['send'](_0x261802);};}exports[_0x24bf('0x25')]=function(_0x259c5a,_0x1ecc64){var _0x199f2d={},_0x1e3736={},_0x56e313={'count':0x0,'rows':[]};var _0x10d6fa=_[_0x24bf('0x26')](db[_0x24bf('0x27')]['rawAttributes'],function(_0x5b61f4){return{'name':_0x5b61f4[_0x24bf('0x28')],'type':_0x5b61f4[_0x24bf('0x29')][_0x24bf('0x2a')]};});_0x1e3736['model']=_[_0x24bf('0x26')](_0x10d6fa,_0x24bf('0x24'));_0x1e3736['query']=_[_0x24bf('0x2b')](_0x259c5a[_0x24bf('0x2c')]);_0x1e3736[_0x24bf('0x2d')]=_[_0x24bf('0x2e')](_0x1e3736[_0x24bf('0x2f')],_0x1e3736['query']);_0x199f2d[_0x24bf('0x30')]=_['intersection'](_0x1e3736[_0x24bf('0x2f')],qs[_0x24bf('0x31')](_0x259c5a[_0x24bf('0x2c')][_0x24bf('0x31')]));_0x199f2d[_0x24bf('0x30')]=_0x199f2d['attributes'][_0x24bf('0x32')]?_0x199f2d['attributes']:_0x1e3736['model'];if(!_0x259c5a['query']['hasOwnProperty'](_0x24bf('0x33'))){_0x199f2d[_0x24bf('0x1b')]=qs[_0x24bf('0x1b')](_0x259c5a[_0x24bf('0x2c')][_0x24bf('0x1b')]);_0x199f2d['offset']=qs[_0x24bf('0x19')](_0x259c5a[_0x24bf('0x2c')]['offset']);}_0x199f2d['order']=qs['sort'](_0x259c5a[_0x24bf('0x2c')][_0x24bf('0x34')]);_0x199f2d[_0x24bf('0x35')]=qs[_0x24bf('0x2d')](_[_0x24bf('0x36')](_0x259c5a['query'],_0x1e3736[_0x24bf('0x2d')]),_0x10d6fa);if(_0x259c5a['query'][_0x24bf('0x37')]){_0x199f2d['where']=_[_0x24bf('0x38')](_0x199f2d['where'],{'$or':_[_0x24bf('0x26')](_0x10d6fa,function(_0x210cde){if(_0x210cde[_0x24bf('0x29')]!==_0x24bf('0x39')){var _0x32161e={};_0x32161e[_0x210cde[_0x24bf('0x24')]]={'$like':'%'+_0x259c5a[_0x24bf('0x2c')][_0x24bf('0x37')]+'%'};return _0x32161e;}})});}_0x199f2d=_[_0x24bf('0x38')]({},_0x199f2d,_0x259c5a[_0x24bf('0x3a')]);var _0x23a44b={'where':_0x199f2d[_0x24bf('0x35')]};return db[_0x24bf('0x27')][_0x24bf('0x3b')](_0x23a44b)[_0x24bf('0x21')](function(_0xdae915){_0x56e313[_0x24bf('0x3b')]=_0xdae915;if(_0x259c5a['query'][_0x24bf('0x3c')]){_0x199f2d[_0x24bf('0x3d')]=[{'all':!![]}];}return db[_0x24bf('0x27')][_0x24bf('0x3e')](_0x199f2d);})[_0x24bf('0x21')](function(_0x30af6c){_0x56e313[_0x24bf('0x3f')]=_0x30af6c;return _0x56e313;})['then'](respondWithFilteredResult(_0x1ecc64,_0x199f2d))[_0x24bf('0x40')](handleError(_0x1ecc64,null));};exports[_0x24bf('0x41')]=function(_0x246514,_0x3cc53f){var _0x2b76f7={'raw':!![],'where':{'id':_0x246514['params']['id']}},_0x125ee1={};_0x125ee1[_0x24bf('0x2f')]=_[_0x24bf('0x2b')](db['ZendeskField'][_0x24bf('0x42')]);_0x125ee1['query']=_[_0x24bf('0x2b')](_0x246514[_0x24bf('0x2c')]);_0x125ee1[_0x24bf('0x2d')]=_[_0x24bf('0x2e')](_0x125ee1['model'],_0x125ee1[_0x24bf('0x2c')]);_0x2b76f7['attributes']=_[_0x24bf('0x2e')](_0x125ee1[_0x24bf('0x2f')],qs['fields'](_0x246514[_0x24bf('0x2c')]['fields']));_0x2b76f7[_0x24bf('0x30')]=_0x2b76f7[_0x24bf('0x30')]['length']?_0x2b76f7[_0x24bf('0x30')]:_0x125ee1[_0x24bf('0x2f')];if(_0x246514['query'][_0x24bf('0x3c')]){_0x2b76f7[_0x24bf('0x3d')]=[{'all':!![]}];}_0x2b76f7=_[_0x24bf('0x38')]({},_0x2b76f7,_0x246514[_0x24bf('0x3a')]);return db['ZendeskField'][_0x24bf('0x43')](_0x2b76f7)[_0x24bf('0x21')](handleEntityNotFound(_0x3cc53f,null))['then'](respondWithResult(_0x3cc53f,null))[_0x24bf('0x40')](handleError(_0x3cc53f,null));};exports[_0x24bf('0x44')]=function(_0x5338dd,_0x15488e){return db[_0x24bf('0x27')][_0x24bf('0x44')](_0x5338dd[_0x24bf('0x45')],{})[_0x24bf('0x21')](respondWithResult(_0x15488e,0xc9))[_0x24bf('0x40')](handleError(_0x15488e,null));};exports[_0x24bf('0x46')]=function(_0x33951b,_0x552d7f){if(_0x33951b[_0x24bf('0x45')]['id']){delete _0x33951b[_0x24bf('0x45')]['id'];}return db[_0x24bf('0x27')]['find']({'where':{'id':_0x33951b[_0x24bf('0x47')]['id']}})[_0x24bf('0x21')](handleEntityNotFound(_0x552d7f,null))[_0x24bf('0x21')](saveUpdates(_0x33951b['body'],null))[_0x24bf('0x21')](respondWithResult(_0x552d7f,null))[_0x24bf('0x40')](handleError(_0x552d7f,null));};exports['destroy']=function(_0x115e72,_0x418780){return db[_0x24bf('0x27')][_0x24bf('0x43')]({'where':{'id':_0x115e72[_0x24bf('0x47')]['id']}})[_0x24bf('0x21')](handleEntityNotFound(_0x418780,null))['then'](removeEntity(_0x418780,null))[_0x24bf('0x40')](handleError(_0x418780,null));};
\ No newline at end of file
index e406594..967ecc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4681=['exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intZendeskField.attributes'];(function(_0x2a0346,_0x2c1300){var _0x1f5232=function(_0x345c8e){while(--_0x345c8e){_0x2a0346['push'](_0x2a0346['shift']());}};_0x1f5232(++_0x2c1300);}(_0x4681,0x16e));var _0x1468=function(_0x3921d5,_0x2320b8){_0x3921d5=_0x3921d5-0x0;var _0x9b1100=_0x4681[_0x3921d5];return _0x9b1100;};'use strict';var _=require(_0x1468('0x0'));var util=require(_0x1468('0x1'));var logger=require(_0x1468('0x2'))(_0x1468('0x3'));var moment=require(_0x1468('0x4'));var BPromise=require(_0x1468('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1468('0x6'));var config=require(_0x1468('0x7'));var attributes=require(_0x1468('0x8'));module[_0x1468('0x9')]=function(_0x155ee2,_0x5a9ee3){return _0x155ee2[_0x1468('0xa')](_0x1468('0xb'),attributes,{'tableName':_0x1468('0xc'),'paranoid':![],'indexes':[{'name':_0x1468('0xd'),'fields':[_0x1468('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x69cb=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util'];(function(_0x117f87,_0x4a1be5){var _0x3b46ad=function(_0x36e7e0){while(--_0x36e7e0){_0x117f87['push'](_0x117f87['shift']());}};_0x3b46ad(++_0x4a1be5);}(_0x69cb,0x148));var _0xb69c=function(_0x4574b0,_0x3bd754){_0x4574b0=_0x4574b0-0x0;var _0x3d720c=_0x69cb[_0x4574b0];return _0x3d720c;};'use strict';var _=require(_0xb69c('0x0'));var util=require(_0xb69c('0x1'));var logger=require(_0xb69c('0x2'))(_0xb69c('0x3'));var moment=require('moment');var BPromise=require(_0xb69c('0x4'));var rp=require(_0xb69c('0x5'));var fs=require('fs');var path=require(_0xb69c('0x6'));var rimraf=require(_0xb69c('0x7'));var config=require(_0xb69c('0x8'));var attributes=require(_0xb69c('0x9'));module['exports']=function(_0x47fd2b,_0x1c9269){return _0x47fd2b[_0xb69c('0xa')](_0xb69c('0xb'),attributes,{'tableName':_0xb69c('0xc'),'paranoid':![],'indexes':[{'name':_0xb69c('0xd'),'fields':['idField',_0xb69c('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 58e1229..dab47fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ca4=['jayson/promise','client','request','then','info','ZendeskField,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','util','moment','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x9ca4,0xfe));var _0x49ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ca4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x49ca('0x0'));var moment=require(_0x49ca('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x49ca('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x49ca('0x3'))(_0x49ca('0x4'));var config=require(_0x49ca('0x5'));var jayson=require(_0x49ca('0x6'));var client=jayson[_0x49ca('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c3a71,_0x2be468,_0x3472ec){return new BPromise(function(_0x16fd3a,_0x4110d5){return client[_0x49ca('0x8')](_0x5c3a71,_0x3472ec)[_0x49ca('0x9')](function(_0x51c8a8){logger[_0x49ca('0xa')](_0x49ca('0xb'),_0x2be468,'request\x20sent');logger[_0x49ca('0xc')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x2be468,_0x49ca('0xd'),JSON[_0x49ca('0xe')](_0x51c8a8));if(_0x51c8a8['error']){if(_0x51c8a8['error'][_0x49ca('0xf')]===0x1f4){logger[_0x49ca('0x10')](_0x49ca('0xb'),_0x2be468,_0x51c8a8[_0x49ca('0x10')][_0x49ca('0x11')]);return _0x4110d5(_0x51c8a8['error'][_0x49ca('0x11')]);}logger[_0x49ca('0x10')](_0x49ca('0xb'),_0x2be468,_0x51c8a8['error']['message']);return _0x16fd3a(_0x51c8a8[_0x49ca('0x10')][_0x49ca('0x11')]);}else{logger['info'](_0x49ca('0xb'),_0x2be468,_0x49ca('0xd'));_0x16fd3a(_0x51c8a8[_0x49ca('0x12')][_0x49ca('0x11')]);}})[_0x49ca('0x13')](function(_0x383e2c){logger[_0x49ca('0x10')](_0x49ca('0xb'),_0x2be468,_0x383e2c);_0x4110d5(_0x383e2c);});});}
\ No newline at end of file
+var _0xcefe=['rpc','../../config/environment','jayson/promise','client','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5e447e,_0x333926){var _0x3d6e9b=function(_0x2bbe22){while(--_0x2bbe22){_0x5e447e['push'](_0x5e447e['shift']());}};_0x3d6e9b(++_0x333926);}(_0xcefe,0x1dd));var _0xecef=function(_0x1bbce7,_0x581b65){_0x1bbce7=_0x1bbce7-0x0;var _0xe3a3ef=_0xcefe[_0x1bbce7];return _0xe3a3ef;};'use strict';var _=require(_0xecef('0x0'));var util=require(_0xecef('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xecef('0x2'));var fs=require('fs');var Redis=require(_0xecef('0x3'));var db=require(_0xecef('0x4'))['db'];var utils=require(_0xecef('0x5'));var logger=require(_0xecef('0x6'))(_0xecef('0x7'));var config=require(_0xecef('0x8'));var jayson=require(_0xecef('0x9'));var client=jayson[_0xecef('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41f4f0,_0x46395a,_0x4bb5ad){return new BPromise(function(_0x37a802,_0x45e953){return client[_0xecef('0xb')](_0x41f4f0,_0x4bb5ad)[_0xecef('0xc')](function(_0x2bdc23){logger[_0xecef('0xd')](_0xecef('0xe'),_0x46395a,_0xecef('0xf'));logger[_0xecef('0x10')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x46395a,_0xecef('0xf'),JSON[_0xecef('0x11')](_0x2bdc23));if(_0x2bdc23[_0xecef('0x12')]){if(_0x2bdc23['error'][_0xecef('0x13')]===0x1f4){logger[_0xecef('0x12')]('ZendeskField,\x20%s,\x20%s',_0x46395a,_0x2bdc23[_0xecef('0x12')]['message']);return _0x45e953(_0x2bdc23[_0xecef('0x12')][_0xecef('0x14')]);}logger['error'](_0xecef('0xe'),_0x46395a,_0x2bdc23[_0xecef('0x12')]['message']);return _0x37a802(_0x2bdc23[_0xecef('0x12')][_0xecef('0x14')]);}else{logger['info'](_0xecef('0xe'),_0x46395a,_0xecef('0xf'));_0x37a802(_0x2bdc23[_0xecef('0x15')][_0xecef('0x14')]);}})['catch'](function(_0x49646f){logger[_0xecef('0x12')]('ZendeskField,\x20%s,\x20%s',_0x46395a,_0x49646f);_0x45e953(_0x49646f);});});}
\ No newline at end of file
index bd35850..2894fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d12=['multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','exports'];(function(_0x1ccbe6,_0x46ab45){var _0x4d6d98=function(_0x1d5227){while(--_0x1d5227){_0x1ccbe6['push'](_0x1ccbe6['shift']());}};_0x4d6d98(++_0x46ab45);}(_0x3d12,0x1b8));var _0x23d1=function(_0x1671fd,_0x33ecf6){_0x1671fd=_0x1671fd-0x0;var _0x27dc4b=_0x3d12[_0x1671fd];return _0x27dc4b;};'use strict';var multer=require(_0x23d1('0x0'));var util=require('util');var path=require(_0x23d1('0x1'));var timeout=require('connect-timeout');var express=require(_0x23d1('0x2'));var router=express[_0x23d1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x23d1('0x4'));var interaction=require(_0x23d1('0x5'));var config=require(_0x23d1('0x6'));var controller=require(_0x23d1('0x7'));router['get']('/',auth[_0x23d1('0x8')](),controller[_0x23d1('0x9')]);router[_0x23d1('0xa')](_0x23d1('0xb'),auth[_0x23d1('0x8')](),controller[_0x23d1('0xc')]);router[_0x23d1('0xa')](_0x23d1('0xd'),auth[_0x23d1('0x8')](),controller[_0x23d1('0xe')]);router[_0x23d1('0xa')](_0x23d1('0xf'),auth['isAuthenticated'](),controller[_0x23d1('0x10')]);router[_0x23d1('0x11')]('/',auth[_0x23d1('0x8')](),controller['create']);router[_0x23d1('0x11')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x23d1('0x12')]);router[_0x23d1('0x13')](_0x23d1('0xb'),auth[_0x23d1('0x8')](),controller[_0x23d1('0x14')]);router['delete'](_0x23d1('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x23d1('0x15')]=router;
\ No newline at end of file
+var _0x3a14=['isAuthenticated','/:id','/:id/fields','post','create','/:id/configurations','addConfiguration','put','update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0xad13a,_0x1e98d6){var _0x5405ad=function(_0x24a505){while(--_0x24a505){_0xad13a['push'](_0xad13a['shift']());}};_0x5405ad(++_0x1e98d6);}(_0x3a14,0x69));var _0x43a1=function(_0x40e313,_0x5d101d){_0x40e313=_0x40e313-0x0;var _0x2eea5e=_0x3a14[_0x40e313];return _0x2eea5e;};'use strict';var multer=require(_0x43a1('0x0'));var util=require(_0x43a1('0x1'));var path=require(_0x43a1('0x2'));var timeout=require(_0x43a1('0x3'));var express=require('express');var router=express[_0x43a1('0x4')]();var fs_extra=require(_0x43a1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x43a1('0x6'));var config=require(_0x43a1('0x7'));var controller=require('./intZohoAccount.controller');router[_0x43a1('0x8')]('/',auth[_0x43a1('0x9')](),controller['index']);router[_0x43a1('0x8')](_0x43a1('0xa'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth[_0x43a1('0x9')](),controller['getConfigurations']);router[_0x43a1('0x8')](_0x43a1('0xb'),auth[_0x43a1('0x9')](),controller['getFields']);router[_0x43a1('0xc')]('/',auth[_0x43a1('0x9')](),controller[_0x43a1('0xd')]);router['post'](_0x43a1('0xe'),auth['isAuthenticated'](),controller[_0x43a1('0xf')]);router[_0x43a1('0x10')]('/:id',auth[_0x43a1('0x9')](),controller[_0x43a1('0x11')]);router['delete'](_0x43a1('0xa'),auth['isAuthenticated'](),controller[_0x43a1('0x12')]);module['exports']=router;
\ No newline at end of file
index 324db32..93bb7e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['STRING'];(function(_0x3e2ce6,_0x1e055c){var _0x4ccc1b=function(_0x3c7cb9){while(--_0x3c7cb9){_0x3e2ce6['push'](_0x3e2ce6['shift']());}};_0x4ccc1b(++_0x1e055c);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x49c4('0x0')]},'description':{'type':Sequelize[_0x49c4('0x0')]},'host':{'type':Sequelize[_0x49c4('0x0')]},'zone':{'type':Sequelize[_0x49c4('0x0')]},'clientId':{'type':Sequelize[_0x49c4('0x0')]},'clientSecret':{'type':Sequelize[_0x49c4('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x49c4('0x0')]}};
\ No newline at end of file
+var _0x00bb=['STRING','sequelize','exports'];(function(_0x5489ef,_0x44910e){var _0x312c74=function(_0x2d8e68){while(--_0x2d8e68){_0x5489ef['push'](_0x5489ef['shift']());}};_0x312c74(++_0x44910e);}(_0x00bb,0x1d8));var _0xb00b=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x00bb[_0x46aff0];return _0x9d78cf;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'name':{'type':Sequelize[_0xb00b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xb00b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xb00b('0x2')]},'clientSecret':{'type':Sequelize[_0xb00b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xb00b('0x2')]},'refreshToken':{'type':Sequelize[_0xb00b('0x2')]}};
\ No newline at end of file
index ddb1023..9141c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221b=['filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','update','body','destroy','getConfigurations','findOne','addConfiguration','Subjects','channel','getDescriptions','ZohoConfiguration','ZohoField','Descriptions','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','zone','serverUrl','code','host','zoho.eu','com','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','response','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','picklist','pick_list_values','test','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','key','query','keys'];(function(_0x679dfb,_0x6c9255){var _0x3b30ef=function(_0x3952de){while(--_0x3952de){_0x679dfb['push'](_0x679dfb['shift']());}};_0x3b30ef(++_0x6c9255);}(_0x221b,0x1db));var _0xb221=function(_0x17807d,_0x363b0d){_0x17807d=_0x17807d-0x0;var _0x24b110=_0x221b[_0x17807d];return _0x24b110;};'use strict';var emlformat=require(_0xb221('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb221('0x1'));var jsonpatch=require(_0xb221('0x2'));var rp=require(_0xb221('0x3'));var moment=require(_0xb221('0x4'));var BPromise=require(_0xb221('0x5'));var Mustache=require(_0xb221('0x6'));var util=require(_0xb221('0x7'));var path=require(_0xb221('0x8'));var sox=require(_0xb221('0x9'));var csv=require(_0xb221('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb221('0xb'));var _=require('lodash');var squel=require(_0xb221('0xc'));var crypto=require(_0xb221('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb221('0xe'));var toCsv=require(_0xb221('0xa'));var querystring=require(_0xb221('0xf'));var Papa=require('papaparse');var Redis=require(_0xb221('0x10'));var authService=require(_0xb221('0x11'));var qs=require(_0xb221('0x12'));var as=require(_0xb221('0x13'));var hardwareService=require(_0xb221('0x14'));var logger=require(_0xb221('0x15'))(_0xb221('0x16'));var utils=require(_0xb221('0x17'));var config=require(_0xb221('0x18'));var licenseUtil=require(_0xb221('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0xb221('0x1a'));function respondWithStatusCode(_0x4514dd,_0x38aa05){_0x38aa05=_0x38aa05||0xcc;return function(_0x376522){if(_0x376522){return _0x4514dd['sendStatus'](_0x38aa05);}return _0x4514dd[_0xb221('0x1b')](_0x38aa05)[_0xb221('0x1c')]();};}function respondWithResult(_0x338dfa,_0x1a396e){_0x1a396e=_0x1a396e||0xc8;return function(_0x58ee5b){if(_0x58ee5b){return _0x338dfa[_0xb221('0x1b')](_0x1a396e)[_0xb221('0x1d')](_0x58ee5b);}};}function respondWithFilteredResult(_0x5982bb,_0x539213){return function(_0x13a1f9){if(_0x13a1f9){var _0x14638c=typeof _0x539213[_0xb221('0x1e')]===_0xb221('0x1f')&&typeof _0x539213['limit']===_0xb221('0x1f');var _0x56b541=_0x13a1f9['count'];var _0x302618=_0x14638c?0x0:_0x539213['offset'];var _0x3ae68d=_0x14638c?_0x13a1f9[_0xb221('0x20')]:_0x539213[_0xb221('0x1e')]+_0x539213[_0xb221('0x21')];var _0x5bfe39;if(_0x3ae68d>=_0x56b541){_0x3ae68d=_0x56b541;_0x5bfe39=0xc8;}else{_0x5bfe39=0xce;}_0x5982bb['status'](_0x5bfe39);return _0x5982bb[_0xb221('0x22')](_0xb221('0x23'),_0x302618+'-'+_0x3ae68d+'/'+_0x56b541)[_0xb221('0x1d')](_0x13a1f9);}return null;};}function patchUpdates(_0x2387af){return function(_0x5df9ea){try{jsonpatch[_0xb221('0x24')](_0x5df9ea,_0x2387af,!![]);}catch(_0x4b1167){return BPromise['reject'](_0x4b1167);}return _0x5df9ea[_0xb221('0x25')]();};}function saveUpdates(_0x25e29b,_0x1b9cd8){return function(_0x5ef7fc){if(_0x5ef7fc){return _0x5ef7fc['update'](_0x25e29b)['then'](function(_0x360bae){return _0x360bae;});}return null;};}function removeEntity(_0x1b0e8c,_0x84263b){return function(_0x2c60e8){if(_0x2c60e8){return _0x2c60e8['destroy']()[_0xb221('0x26')](function(){_0x1b0e8c['status'](0xcc)[_0xb221('0x1c')]();});}};}function handleEntityNotFound(_0x1520b3,_0x7614d0){return function(_0x3b2366){if(!_0x3b2366){_0x1520b3[_0xb221('0x27')](0x194);}return _0x3b2366;};}function handleError(_0x62b38e,_0x3c5318){_0x3c5318=_0x3c5318||0x1f4;return function(_0x311ebd){logger[_0xb221('0x28')](_0x311ebd[_0xb221('0x29')]);if(_0x311ebd[_0xb221('0x2a')]){delete _0x311ebd[_0xb221('0x2a')];}_0x62b38e['status'](_0x3c5318)[_0xb221('0x2b')](_0x311ebd);};}exports[_0xb221('0x2c')]=function(_0x56513e,_0x3401f6){var _0x2213b2={},_0x1ab4c2={},_0x2466a7={'count':0x0,'rows':[]};var _0x3e5c0e=_[_0xb221('0x2d')](db[_0xb221('0x2e')][_0xb221('0x2f')],function(_0x423f68){return{'name':_0x423f68[_0xb221('0x30')],'type':_0x423f68[_0xb221('0x31')][_0xb221('0x32')]};});_0x1ab4c2['model']=_['map'](_0x3e5c0e,'name');_0x1ab4c2[_0xb221('0x33')]=_[_0xb221('0x34')](_0x56513e[_0xb221('0x33')]);_0x1ab4c2[_0xb221('0x35')]=_['intersection'](_0x1ab4c2['model'],_0x1ab4c2[_0xb221('0x33')]);_0x2213b2[_0xb221('0x36')]=_[_0xb221('0x37')](_0x1ab4c2[_0xb221('0x38')],qs[_0xb221('0x39')](_0x56513e['query']['fields']));_0x2213b2['attributes']=_0x2213b2[_0xb221('0x36')][_0xb221('0x3a')]?_0x2213b2[_0xb221('0x36')]:_0x1ab4c2[_0xb221('0x38')];if(!_0x56513e[_0xb221('0x33')][_0xb221('0x3b')](_0xb221('0x3c'))){_0x2213b2[_0xb221('0x21')]=qs[_0xb221('0x21')](_0x56513e['query']['limit']);_0x2213b2[_0xb221('0x1e')]=qs[_0xb221('0x1e')](_0x56513e[_0xb221('0x33')][_0xb221('0x1e')]);}_0x2213b2['order']=qs[_0xb221('0x3d')](_0x56513e[_0xb221('0x33')][_0xb221('0x3d')]);_0x2213b2[_0xb221('0x3e')]=qs['filters'](_[_0xb221('0x3f')](_0x56513e[_0xb221('0x33')],_0x1ab4c2['filters']),_0x3e5c0e);if(_0x56513e['query'][_0xb221('0x40')]){_0x2213b2[_0xb221('0x3e')]=_[_0xb221('0x41')](_0x2213b2[_0xb221('0x3e')],{'$or':_['map'](_0x3e5c0e,function(_0x8ec1be){if(_0x8ec1be[_0xb221('0x31')]!=='VIRTUAL'){var _0x48c920={};_0x48c920[_0x8ec1be[_0xb221('0x2a')]]={'$like':'%'+_0x56513e[_0xb221('0x33')][_0xb221('0x40')]+'%'};return _0x48c920;}})});}_0x2213b2=_['merge']({},_0x2213b2,_0x56513e[_0xb221('0x42')]);var _0xf5f2e1={'where':_0x2213b2['where']};return db[_0xb221('0x2e')][_0xb221('0x20')](_0xf5f2e1)[_0xb221('0x26')](function(_0x4a4022){_0x2466a7[_0xb221('0x20')]=_0x4a4022;if(_0x56513e[_0xb221('0x33')]['includeAll']){_0x2213b2[_0xb221('0x43')]=[{'all':!![]}];}return db[_0xb221('0x2e')][_0xb221('0x44')](_0x2213b2);})['then'](function(_0x4642ad){_0x2466a7[_0xb221('0x45')]=_0x4642ad;return _0x2466a7;})[_0xb221('0x26')](respondWithFilteredResult(_0x3401f6,_0x2213b2))[_0xb221('0x46')](handleError(_0x3401f6,null));};exports[_0xb221('0x47')]=function(_0x5d5845,_0x39f7a2){var _0xeff957={'raw':![],'where':{'id':_0x5d5845[_0xb221('0x48')]['id']}},_0x54427e={};_0x54427e[_0xb221('0x38')]=_[_0xb221('0x34')](db[_0xb221('0x2e')][_0xb221('0x2f')]);_0x54427e[_0xb221('0x33')]=_['keys'](_0x5d5845['query']);_0x54427e[_0xb221('0x35')]=_[_0xb221('0x37')](_0x54427e[_0xb221('0x38')],_0x54427e['query']);_0xeff957['attributes']=_[_0xb221('0x37')](_0x54427e[_0xb221('0x38')],qs[_0xb221('0x39')](_0x5d5845[_0xb221('0x33')][_0xb221('0x39')]));_0xeff957[_0xb221('0x36')]=_0xeff957[_0xb221('0x36')][_0xb221('0x3a')]?_0xeff957[_0xb221('0x36')]:_0x54427e[_0xb221('0x38')];if(_0x5d5845[_0xb221('0x33')][_0xb221('0x49')]){_0xeff957['include']=[{'all':!![]}];}_0xeff957=_[_0xb221('0x41')]({},_0xeff957,_0x5d5845[_0xb221('0x42')]);return db[_0xb221('0x2e')][_0xb221('0x4a')](_0xeff957)[_0xb221('0x26')](handleEntityNotFound(_0x39f7a2,null))[_0xb221('0x26')](respondWithResult(_0x39f7a2,null))[_0xb221('0x46')](handleError(_0x39f7a2,null));};exports[_0xb221('0x4b')]=function(_0x30467c,_0x4f6c66){return db[_0xb221('0x2e')][_0xb221('0x4b')](_0x30467c['body'],{})['then'](respondWithResult(_0x4f6c66,0xc9))[_0xb221('0x46')](handleError(_0x4f6c66,null));};exports[_0xb221('0x4c')]=function(_0x59abbd,_0xfa297f){if(_0x59abbd[_0xb221('0x4d')]['id']){delete _0x59abbd[_0xb221('0x4d')]['id'];}return db['ZohoAccount'][_0xb221('0x4a')]({'where':{'id':_0x59abbd[_0xb221('0x48')]['id']}})[_0xb221('0x26')](handleEntityNotFound(_0xfa297f,null))[_0xb221('0x26')](saveUpdates(_0x59abbd['body'],null))['then'](respondWithResult(_0xfa297f,null))[_0xb221('0x46')](handleError(_0xfa297f,null));};exports[_0xb221('0x4e')]=function(_0xc8ef02,_0x2c39af){return db[_0xb221('0x2e')][_0xb221('0x4a')]({'where':{'id':_0xc8ef02[_0xb221('0x48')]['id']}})[_0xb221('0x26')](handleEntityNotFound(_0x2c39af,null))[_0xb221('0x26')](removeEntity(_0x2c39af,null))['catch'](handleError(_0x2c39af,null));};exports[_0xb221('0x4f')]=function(_0x179452,_0x210564,_0x39b18d){var _0x4dff5e={};var _0x3a0988={};var _0x88eae6;var _0x57d7d8;return db[_0xb221('0x2e')][_0xb221('0x50')]({'where':{'id':_0x179452[_0xb221('0x48')]['id']}})[_0xb221('0x26')](handleEntityNotFound(_0x210564,null))[_0xb221('0x26')](function(_0x23405d){if(_0x23405d){_0x88eae6=_0x23405d;_0x3a0988[_0xb221('0x38')]=_[_0xb221('0x34')](db['ZohoConfiguration']['rawAttributes']);_0x3a0988['query']=_[_0xb221('0x34')](_0x179452[_0xb221('0x33')]);_0x3a0988[_0xb221('0x35')]=_[_0xb221('0x37')](_0x3a0988['model'],_0x3a0988[_0xb221('0x33')]);_0x4dff5e[_0xb221('0x36')]=_[_0xb221('0x37')](_0x3a0988[_0xb221('0x38')],qs[_0xb221('0x39')](_0x179452[_0xb221('0x33')][_0xb221('0x39')]));_0x4dff5e[_0xb221('0x36')]=_0x4dff5e[_0xb221('0x36')][_0xb221('0x3a')]?_0x4dff5e[_0xb221('0x36')]:_0x3a0988[_0xb221('0x38')];_0x4dff5e['order']=qs[_0xb221('0x3d')](_0x179452[_0xb221('0x33')][_0xb221('0x3d')]);_0x4dff5e[_0xb221('0x3e')]=qs[_0xb221('0x35')](_[_0xb221('0x3f')](_0x179452['query'],_0x3a0988['filters']));if(_0x179452[_0xb221('0x33')]['filter']){_0x4dff5e[_0xb221('0x3e')]=_[_0xb221('0x41')](_0x4dff5e[_0xb221('0x3e')],{'$or':_['map'](_0x4dff5e[_0xb221('0x36')],function(_0x302a45){var _0x6d3feb={};_0x6d3feb[_0x302a45]={'$like':'%'+_0x179452[_0xb221('0x33')][_0xb221('0x40')]+'%'};return _0x6d3feb;})});}_0x4dff5e=_[_0xb221('0x41')]({},_0x4dff5e,_0x179452[_0xb221('0x42')]);return _0x88eae6[_0xb221('0x4f')](_0x4dff5e);}})['then'](function(_0x525c7b){if(_0x525c7b){_0x57d7d8=_0x525c7b['length'];if(!_0x179452[_0xb221('0x33')][_0xb221('0x3b')](_0xb221('0x3c'))){_0x4dff5e[_0xb221('0x21')]=qs['limit'](_0x179452[_0xb221('0x33')]['limit']);_0x4dff5e[_0xb221('0x1e')]=qs[_0xb221('0x1e')](_0x179452[_0xb221('0x33')][_0xb221('0x1e')]);}return _0x88eae6['getConfigurations'](_0x4dff5e);}})[_0xb221('0x26')](function(_0x5e04d3){if(_0x5e04d3){return _0x5e04d3?{'count':_0x57d7d8,'rows':_0x5e04d3}:null;}})[_0xb221('0x26')](respondWithResult(_0x210564,null))['catch'](handleError(_0x210564,null));};exports[_0xb221('0x51')]=function(_0x2b230f,_0x22fef0,_0x4c988e){if(_0x2b230f[_0xb221('0x4d')]['id']){delete _0x2b230f[_0xb221('0x4d')]['id'];}return db[_0xb221('0x2e')]['findOne']({'where':{'id':_0x2b230f[_0xb221('0x48')]['id']}})[_0xb221('0x26')](handleEntityNotFound(_0x22fef0,null))[_0xb221('0x26')](function(_0x506fed){if(_0x506fed){_0x2b230f[_0xb221('0x4d')]['AccountId']=_0x506fed['id'];_0x2b230f[_0xb221('0x4d')][_0xb221('0x52')]=integrations['getSubjects'](_0x2b230f[_0xb221('0x4d')][_0xb221('0x53')],_0x2b230f[_0xb221('0x4d')][_0xb221('0x31')]);_0x2b230f[_0xb221('0x4d')]['Descriptions']=integrations[_0xb221('0x54')](_0x2b230f['body']['channel'],_0x2b230f[_0xb221('0x4d')][_0xb221('0x31')]);return db[_0xb221('0x55')][_0xb221('0x4b')](_0x2b230f[_0xb221('0x4d')],{'include':[{'model':db['ZohoField'],'as':_0xb221('0x52')},{'model':db[_0xb221('0x56')],'as':_0xb221('0x57')}]});}return null;})[_0xb221('0x26')](respondWithResult(_0x22fef0,null))['catch'](handleError(_0x22fef0,null));};function getAccessToken(_0x558a53){return new Promise(function(_0x396223,_0xcb538e){var _0x5cc261;switch(_0x558a53['zone']){case'US':_0x5cc261=_0xb221('0x58');break;case'AU':_0x5cc261=_0xb221('0x59');break;case'EU':_0x5cc261='https://accounts.zoho.eu';break;case'IN':_0x5cc261=_0xb221('0x5a');break;case'CN':_0x5cc261='https://accounts.zoho.com.cn';break;default:_0x5cc261=_0xb221('0x5b');break;}var _0x444fd0={'method':'POST','uri':_0x5cc261+_0xb221('0x5c'),'qs':{'refresh_token':_0x558a53[_0xb221('0x5d')],'client_id':_0x558a53[_0xb221('0x5e')],'client_secret':_0x558a53[_0xb221('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x444fd0)[_0xb221('0x26')](function(_0x353160){if(_0x353160[_0xb221('0x60')]){_0x396223(_0x353160['access_token']);}else{_0xcb538e(_0xb221('0x61'));}})[_0xb221('0x46')](function(_0x2fd5bb){_0xcb538e(_0x2fd5bb);});});}exports[_0xb221('0x62')]=function(_0x4fc5d3,_0x5b3fef,_0x347efb){var _0x3b03a4,_0x350402,_0x476757,_0x1884df,_0x3ed16f;return db[_0xb221('0x2e')][_0xb221('0x50')]({'where':{'id':_0x4fc5d3[_0xb221('0x48')]['id']},'attributes':['id','host',_0xb221('0x63'),_0xb221('0x5e'),_0xb221('0x5f'),_0xb221('0x64'),_0xb221('0x65'),_0xb221('0x5d')]})[_0xb221('0x26')](handleEntityNotFound(_0x5b3fef,null))[_0xb221('0x26')](function(_0x3c2b8b){_0x3ed16f=_0x3c2b8b;_0x3b03a4=_0x3ed16f[_0xb221('0x66')];_0x350402=_0x3b03a4===_0xb221('0x67')?'eu':_0xb221('0x68');_0x476757=_0x3ed16f[_0xb221('0x64')];var _0x50fbeb=_0x476757['slice'](-0x1);if(_0x50fbeb==='/'||_0x50fbeb==='\x5c'||_0x50fbeb===':'){_0x476757=_0x476757[_0xb221('0x69')](0x0,_0x476757[_0xb221('0x6a')](_0x50fbeb));}if(!_0x3ed16f[_0xb221('0x5d')]){throw new Error(_0xb221('0x6b'));}return getAccessToken(_0x3ed16f);})[_0xb221('0x26')](function(_0x19893e){if(_0x19893e){return rp({'method':_0xb221('0x6c'),'uri':util[_0xb221('0x6d')](_0xb221('0x6e'),_0x350402),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x19893e},'json':!![]});}})[_0xb221('0x26')](function(_0x305c1f){if(_0x305c1f){if(_0x305c1f[_0xb221('0x6f')]&&_0x305c1f[_0xb221('0x6f')]['error']){throw new Error(_0x305c1f[_0xb221('0x6f')][_0xb221('0x28')][_0xb221('0x70')]);}var _0x6dbb54=[];var _0x24fd4b=[];var _0x54e84a=[_0xb221('0x71'),_0xb221('0x72'),_0xb221('0x73'),_0xb221('0x74'),_0xb221('0x75'),_0xb221('0x76'),_0xb221('0x77'),_0xb221('0x78')];_0x24fd4b=_[_0xb221('0x79')](_0x305c1f[_0xb221('0x39')],function(_0x128e84){return _0x54e84a[_0xb221('0x7a')](_0x128e84[_0xb221('0x7b')]);});for(var _0xd8a70d=0x0;_0xd8a70d<_0x24fd4b[_0xb221('0x3a')];_0xd8a70d++){if(_0x24fd4b[_0xd8a70d][_0xb221('0x7c')]===![]){_0x6dbb54[_0xb221('0x7d')]({'id':_0x24fd4b[_0xd8a70d]['id'],'name':_0x24fd4b[_0xd8a70d]['display_label'],'custom':_0x24fd4b[_0xd8a70d]['custom_field'],'options':_0x24fd4b[_0xd8a70d]['data_type']===_0xb221('0x7e')&&_0x24fd4b[_0xd8a70d][_0xb221('0x7f')][_0xb221('0x3a')]>-0x1?_[_0xb221('0x2d')](_0x24fd4b[_0xd8a70d][_0xb221('0x7f')],function(_0x4c71dc){return{'name':_0x4c71dc,'value':_0x4c71dc};}):[]});}}return{'count':_0x6dbb54[_0xb221('0x3a')],'rows':_0x6dbb54};}else{return{'count':0x0,'rows':[]};}})[_0xb221('0x26')](respondWithResult(_0x5b3fef,null))[_0xb221('0x46')](function(_0x4c39e7){var _0x56c53e=_0x4fc5d3[_0xb221('0x33')][_0xb221('0x80')]?0x1f4:_0x4c39e7['statusCode']||0x1f4;logger[_0xb221('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0xb221('0x62'),_0x56c53e,JSON[_0xb221('0x81')](_0x4c39e7));delete _0x4c39e7['name'];if(_0x56c53e===0x191){_0x56c53e=0x190;}_0x5b3fef['status'](_0x56c53e)[_0xb221('0x2b')](_0x4fc5d3[_0xb221('0x33')][_0xb221('0x80')]?{'message':_0xb221('0x82'),'statusCode':_0x4c39e7[_0xb221('0x83')]}:_0x4c39e7);});};
\ No newline at end of file
+var _0x23cb=['Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','remove','includes','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','destroy','then','name','send','map','ZohoAccount','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','rawAttributes','fields','options','find','create','body','getConfigurations','findOne','order','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','ZohoConfiguration','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','clientSecret','serverUrl','code','zoho.eu','com','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account'];(function(_0x318410,_0x451962){var _0x2898a3=function(_0x58e572){while(--_0x58e572){_0x318410['push'](_0x318410['shift']());}};_0x2898a3(++_0x451962);}(_0x23cb,0x19d));var _0xb23c=function(_0x5cd70a,_0x51f70a){_0x5cd70a=_0x5cd70a-0x0;var _0x28d47e=_0x23cb[_0x5cd70a];return _0x28d47e;};'use strict';var emlformat=require(_0xb23c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb23c('0x1'));var jsonpatch=require(_0xb23c('0x2'));var rp=require(_0xb23c('0x3'));var moment=require('moment');var BPromise=require(_0xb23c('0x4'));var Mustache=require(_0xb23c('0x5'));var util=require(_0xb23c('0x6'));var path=require('path');var sox=require(_0xb23c('0x7'));var csv=require('to-csv');var ejs=require(_0xb23c('0x8'));var fs=require('fs');var fs_extra=require(_0xb23c('0x9'));var _=require('lodash');var squel=require(_0xb23c('0xa'));var crypto=require('crypto');var jsforce=require(_0xb23c('0xb'));var deskjs=require(_0xb23c('0xc'));var toCsv=require(_0xb23c('0xd'));var querystring=require(_0xb23c('0xe'));var Papa=require(_0xb23c('0xf'));var Redis=require(_0xb23c('0x10'));var authService=require(_0xb23c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb23c('0x12'));var logger=require(_0xb23c('0x13'))(_0xb23c('0x14'));var utils=require(_0xb23c('0x15'));var config=require(_0xb23c('0x16'));var licenseUtil=require(_0xb23c('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xb23c('0x18'));function respondWithStatusCode(_0x5a2e89,_0x120d4d){_0x120d4d=_0x120d4d||0xcc;return function(_0x51085f){if(_0x51085f){return _0x5a2e89[_0xb23c('0x19')](_0x120d4d);}return _0x5a2e89[_0xb23c('0x1a')](_0x120d4d)[_0xb23c('0x1b')]();};}function respondWithResult(_0x3ba50f,_0x14df4c){_0x14df4c=_0x14df4c||0xc8;return function(_0x1d84c1){if(_0x1d84c1){return _0x3ba50f[_0xb23c('0x1a')](_0x14df4c)['json'](_0x1d84c1);}};}function respondWithFilteredResult(_0x32d57c,_0x274511){return function(_0x523070){if(_0x523070){var _0x58a3e2=typeof _0x274511[_0xb23c('0x1c')]===_0xb23c('0x1d')&&typeof _0x274511[_0xb23c('0x1e')]==='undefined';var _0x1e8631=_0x523070['count'];var _0x36fc4a=_0x58a3e2?0x0:_0x274511[_0xb23c('0x1c')];var _0x194f13=_0x58a3e2?_0x523070[_0xb23c('0x1f')]:_0x274511[_0xb23c('0x1c')]+_0x274511[_0xb23c('0x1e')];var _0x2be8bf;if(_0x194f13>=_0x1e8631){_0x194f13=_0x1e8631;_0x2be8bf=0xc8;}else{_0x2be8bf=0xce;}_0x32d57c[_0xb23c('0x1a')](_0x2be8bf);return _0x32d57c[_0xb23c('0x20')]('Content-Range',_0x36fc4a+'-'+_0x194f13+'/'+_0x1e8631)[_0xb23c('0x21')](_0x523070);}return null;};}function patchUpdates(_0x4ca412){return function(_0x3ecf81){try{jsonpatch['apply'](_0x3ecf81,_0x4ca412,!![]);}catch(_0x44a750){return BPromise[_0xb23c('0x22')](_0x44a750);}return _0x3ecf81[_0xb23c('0x23')]();};}function saveUpdates(_0x57ed18,_0x5c88f0){return function(_0x4e2f81){if(_0x4e2f81){return _0x4e2f81[_0xb23c('0x24')](_0x57ed18)['then'](function(_0x2a585b){return _0x2a585b;});}return null;};}function removeEntity(_0x3fec09,_0x15fee7){return function(_0x1eb834){if(_0x1eb834){return _0x1eb834[_0xb23c('0x25')]()[_0xb23c('0x26')](function(){_0x3fec09['status'](0xcc)[_0xb23c('0x1b')]();});}};}function handleEntityNotFound(_0x10ddca,_0x5be8bf){return function(_0x34ed59){if(!_0x34ed59){_0x10ddca[_0xb23c('0x19')](0x194);}return _0x34ed59;};}function handleError(_0x818138,_0x4681c0){_0x4681c0=_0x4681c0||0x1f4;return function(_0x5480c4){logger['error'](_0x5480c4['stack']);if(_0x5480c4[_0xb23c('0x27')]){delete _0x5480c4[_0xb23c('0x27')];}_0x818138[_0xb23c('0x1a')](_0x4681c0)[_0xb23c('0x28')](_0x5480c4);};}exports['index']=function(_0x4e0520,_0x142b1c){var _0x3c1d8c={},_0x37f2ec={},_0x3b5883={'count':0x0,'rows':[]};var _0x45136b=_[_0xb23c('0x29')](db[_0xb23c('0x2a')]['rawAttributes'],function(_0x150f43){return{'name':_0x150f43[_0xb23c('0x2b')],'type':_0x150f43['type'][_0xb23c('0x2c')]};});_0x37f2ec[_0xb23c('0x2d')]=_[_0xb23c('0x29')](_0x45136b,_0xb23c('0x27'));_0x37f2ec[_0xb23c('0x2e')]=_[_0xb23c('0x2f')](_0x4e0520['query']);_0x37f2ec[_0xb23c('0x30')]=_[_0xb23c('0x31')](_0x37f2ec[_0xb23c('0x2d')],_0x37f2ec['query']);_0x3c1d8c[_0xb23c('0x32')]=_[_0xb23c('0x31')](_0x37f2ec[_0xb23c('0x2d')],qs['fields'](_0x4e0520['query']['fields']));_0x3c1d8c[_0xb23c('0x32')]=_0x3c1d8c[_0xb23c('0x32')][_0xb23c('0x33')]?_0x3c1d8c[_0xb23c('0x32')]:_0x37f2ec[_0xb23c('0x2d')];if(!_0x4e0520[_0xb23c('0x2e')][_0xb23c('0x34')]('nolimit')){_0x3c1d8c['limit']=qs[_0xb23c('0x1e')](_0x4e0520['query'][_0xb23c('0x1e')]);_0x3c1d8c[_0xb23c('0x1c')]=qs['offset'](_0x4e0520[_0xb23c('0x2e')][_0xb23c('0x1c')]);}_0x3c1d8c['order']=qs['sort'](_0x4e0520[_0xb23c('0x2e')][_0xb23c('0x35')]);_0x3c1d8c[_0xb23c('0x36')]=qs[_0xb23c('0x30')](_[_0xb23c('0x37')](_0x4e0520[_0xb23c('0x2e')],_0x37f2ec[_0xb23c('0x30')]),_0x45136b);if(_0x4e0520['query']['filter']){_0x3c1d8c[_0xb23c('0x36')]=_[_0xb23c('0x38')](_0x3c1d8c[_0xb23c('0x36')],{'$or':_[_0xb23c('0x29')](_0x45136b,function(_0x25ea8d){if(_0x25ea8d['type']!==_0xb23c('0x39')){var _0x309f16={};_0x309f16[_0x25ea8d[_0xb23c('0x27')]]={'$like':'%'+_0x4e0520[_0xb23c('0x2e')][_0xb23c('0x3a')]+'%'};return _0x309f16;}})});}_0x3c1d8c=_[_0xb23c('0x38')]({},_0x3c1d8c,_0x4e0520['options']);var _0x106201={'where':_0x3c1d8c[_0xb23c('0x36')]};return db['ZohoAccount'][_0xb23c('0x1f')](_0x106201)[_0xb23c('0x26')](function(_0x422ec1){_0x3b5883[_0xb23c('0x1f')]=_0x422ec1;if(_0x4e0520['query'][_0xb23c('0x3b')]){_0x3c1d8c[_0xb23c('0x3c')]=[{'all':!![]}];}return db[_0xb23c('0x2a')][_0xb23c('0x3d')](_0x3c1d8c);})[_0xb23c('0x26')](function(_0x3f3374){_0x3b5883[_0xb23c('0x3e')]=_0x3f3374;return _0x3b5883;})['then'](respondWithFilteredResult(_0x142b1c,_0x3c1d8c))[_0xb23c('0x3f')](handleError(_0x142b1c,null));};exports['show']=function(_0x35b0cd,_0x49aad6){var _0x2cf50f={'raw':![],'where':{'id':_0x35b0cd[_0xb23c('0x40')]['id']}},_0x3c6d95={};_0x3c6d95[_0xb23c('0x2d')]=_[_0xb23c('0x2f')](db[_0xb23c('0x2a')][_0xb23c('0x41')]);_0x3c6d95[_0xb23c('0x2e')]=_[_0xb23c('0x2f')](_0x35b0cd[_0xb23c('0x2e')]);_0x3c6d95[_0xb23c('0x30')]=_[_0xb23c('0x31')](_0x3c6d95['model'],_0x3c6d95[_0xb23c('0x2e')]);_0x2cf50f[_0xb23c('0x32')]=_[_0xb23c('0x31')](_0x3c6d95[_0xb23c('0x2d')],qs[_0xb23c('0x42')](_0x35b0cd[_0xb23c('0x2e')][_0xb23c('0x42')]));_0x2cf50f[_0xb23c('0x32')]=_0x2cf50f[_0xb23c('0x32')][_0xb23c('0x33')]?_0x2cf50f['attributes']:_0x3c6d95[_0xb23c('0x2d')];if(_0x35b0cd[_0xb23c('0x2e')][_0xb23c('0x3b')]){_0x2cf50f[_0xb23c('0x3c')]=[{'all':!![]}];}_0x2cf50f=_[_0xb23c('0x38')]({},_0x2cf50f,_0x35b0cd[_0xb23c('0x43')]);return db['ZohoAccount'][_0xb23c('0x44')](_0x2cf50f)[_0xb23c('0x26')](handleEntityNotFound(_0x49aad6,null))[_0xb23c('0x26')](respondWithResult(_0x49aad6,null))[_0xb23c('0x3f')](handleError(_0x49aad6,null));};exports[_0xb23c('0x45')]=function(_0x4ac97b,_0x497a29){return db[_0xb23c('0x2a')][_0xb23c('0x45')](_0x4ac97b[_0xb23c('0x46')],{})[_0xb23c('0x26')](respondWithResult(_0x497a29,0xc9))[_0xb23c('0x3f')](handleError(_0x497a29,null));};exports[_0xb23c('0x24')]=function(_0x2afadd,_0x4c12cf){if(_0x2afadd[_0xb23c('0x46')]['id']){delete _0x2afadd[_0xb23c('0x46')]['id'];}return db[_0xb23c('0x2a')][_0xb23c('0x44')]({'where':{'id':_0x2afadd[_0xb23c('0x40')]['id']}})['then'](handleEntityNotFound(_0x4c12cf,null))[_0xb23c('0x26')](saveUpdates(_0x2afadd[_0xb23c('0x46')],null))[_0xb23c('0x26')](respondWithResult(_0x4c12cf,null))['catch'](handleError(_0x4c12cf,null));};exports[_0xb23c('0x25')]=function(_0x28dfed,_0x1bef1b){return db[_0xb23c('0x2a')][_0xb23c('0x44')]({'where':{'id':_0x28dfed[_0xb23c('0x40')]['id']}})[_0xb23c('0x26')](handleEntityNotFound(_0x1bef1b,null))['then'](removeEntity(_0x1bef1b,null))[_0xb23c('0x3f')](handleError(_0x1bef1b,null));};exports[_0xb23c('0x47')]=function(_0x32c803,_0x15655a,_0x48a63a){var _0x5be3d2={};var _0x5100cc={};var _0x273b9f;var _0x39b862;return db['ZohoAccount'][_0xb23c('0x48')]({'where':{'id':_0x32c803[_0xb23c('0x40')]['id']}})[_0xb23c('0x26')](handleEntityNotFound(_0x15655a,null))[_0xb23c('0x26')](function(_0x1b4b49){if(_0x1b4b49){_0x273b9f=_0x1b4b49;_0x5100cc[_0xb23c('0x2d')]=_[_0xb23c('0x2f')](db['ZohoConfiguration'][_0xb23c('0x41')]);_0x5100cc[_0xb23c('0x2e')]=_[_0xb23c('0x2f')](_0x32c803[_0xb23c('0x2e')]);_0x5100cc[_0xb23c('0x30')]=_['intersection'](_0x5100cc[_0xb23c('0x2d')],_0x5100cc['query']);_0x5be3d2[_0xb23c('0x32')]=_['intersection'](_0x5100cc[_0xb23c('0x2d')],qs['fields'](_0x32c803['query']['fields']));_0x5be3d2[_0xb23c('0x32')]=_0x5be3d2[_0xb23c('0x32')]['length']?_0x5be3d2[_0xb23c('0x32')]:_0x5100cc[_0xb23c('0x2d')];_0x5be3d2[_0xb23c('0x49')]=qs[_0xb23c('0x35')](_0x32c803[_0xb23c('0x2e')][_0xb23c('0x35')]);_0x5be3d2[_0xb23c('0x36')]=qs['filters'](_['pick'](_0x32c803[_0xb23c('0x2e')],_0x5100cc[_0xb23c('0x30')]));if(_0x32c803[_0xb23c('0x2e')]['filter']){_0x5be3d2['where']=_[_0xb23c('0x38')](_0x5be3d2[_0xb23c('0x36')],{'$or':_[_0xb23c('0x29')](_0x5be3d2['attributes'],function(_0x49592a){var _0x273755={};_0x273755[_0x49592a]={'$like':'%'+_0x32c803['query']['filter']+'%'};return _0x273755;})});}_0x5be3d2=_['merge']({},_0x5be3d2,_0x32c803[_0xb23c('0x43')]);return _0x273b9f[_0xb23c('0x47')](_0x5be3d2);}})[_0xb23c('0x26')](function(_0x1b7c2d){if(_0x1b7c2d){_0x39b862=_0x1b7c2d[_0xb23c('0x33')];if(!_0x32c803['query'][_0xb23c('0x34')](_0xb23c('0x4a'))){_0x5be3d2['limit']=qs[_0xb23c('0x1e')](_0x32c803[_0xb23c('0x2e')]['limit']);_0x5be3d2['offset']=qs['offset'](_0x32c803[_0xb23c('0x2e')]['offset']);}return _0x273b9f[_0xb23c('0x47')](_0x5be3d2);}})[_0xb23c('0x26')](function(_0x2188a5){if(_0x2188a5){return _0x2188a5?{'count':_0x39b862,'rows':_0x2188a5}:null;}})[_0xb23c('0x26')](respondWithResult(_0x15655a,null))['catch'](handleError(_0x15655a,null));};exports[_0xb23c('0x4b')]=function(_0x49cbdd,_0x15c611,_0x14c805){if(_0x49cbdd['body']['id']){delete _0x49cbdd['body']['id'];}return db[_0xb23c('0x2a')][_0xb23c('0x48')]({'where':{'id':_0x49cbdd[_0xb23c('0x40')]['id']}})[_0xb23c('0x26')](handleEntityNotFound(_0x15c611,null))[_0xb23c('0x26')](function(_0x213c4c){if(_0x213c4c){_0x49cbdd['body'][_0xb23c('0x4c')]=_0x213c4c['id'];_0x49cbdd[_0xb23c('0x46')][_0xb23c('0x4d')]=integrations[_0xb23c('0x4e')](_0x49cbdd['body'][_0xb23c('0x4f')],_0x49cbdd[_0xb23c('0x46')][_0xb23c('0x50')]);_0x49cbdd['body'][_0xb23c('0x51')]=integrations[_0xb23c('0x52')](_0x49cbdd['body'][_0xb23c('0x4f')],_0x49cbdd[_0xb23c('0x46')]['type']);return db[_0xb23c('0x53')]['create'](_0x49cbdd[_0xb23c('0x46')],{'include':[{'model':db[_0xb23c('0x54')],'as':_0xb23c('0x4d')},{'model':db[_0xb23c('0x54')],'as':'Descriptions'}]});}return null;})[_0xb23c('0x26')](respondWithResult(_0x15c611,null))[_0xb23c('0x3f')](handleError(_0x15c611,null));};function getAccessToken(_0x5bf718){return new Promise(function(_0x384012,_0x5e24da){var _0x1ab2f1;switch(_0x5bf718['zone']){case'US':_0x1ab2f1=_0xb23c('0x55');break;case'AU':_0x1ab2f1=_0xb23c('0x56');break;case'EU':_0x1ab2f1=_0xb23c('0x57');break;case'IN':_0x1ab2f1=_0xb23c('0x58');break;case'CN':_0x1ab2f1=_0xb23c('0x59');break;default:_0x1ab2f1='https://accounts.zoho.eu';break;}var _0x49203d={'method':'POST','uri':_0x1ab2f1+_0xb23c('0x5a'),'qs':{'refresh_token':_0x5bf718[_0xb23c('0x5b')],'client_id':_0x5bf718[_0xb23c('0x5c')],'client_secret':_0x5bf718['clientSecret'],'grant_type':_0xb23c('0x5d')},'json':!![]};return rp(_0x49203d)[_0xb23c('0x26')](function(_0x4907e8){if(_0x4907e8[_0xb23c('0x5e')]){_0x384012(_0x4907e8[_0xb23c('0x5e')]);}else{_0x5e24da(_0xb23c('0x5f'));}})[_0xb23c('0x3f')](function(_0x49e8c6){_0x5e24da(_0x49e8c6);});});}exports[_0xb23c('0x60')]=function(_0xf88d3c,_0x4dd417,_0x33befe){var _0x1adb71,_0x42a872,_0x4fffa0,_0x4633a1,_0x348637;return db['ZohoAccount'][_0xb23c('0x48')]({'where':{'id':_0xf88d3c[_0xb23c('0x40')]['id']},'attributes':['id',_0xb23c('0x61'),_0xb23c('0x62'),_0xb23c('0x5c'),_0xb23c('0x63'),_0xb23c('0x64'),_0xb23c('0x65'),_0xb23c('0x5b')]})[_0xb23c('0x26')](handleEntityNotFound(_0x4dd417,null))[_0xb23c('0x26')](function(_0x3d1ea9){_0x348637=_0x3d1ea9;_0x1adb71=_0x348637[_0xb23c('0x61')];_0x42a872=_0x1adb71===_0xb23c('0x66')?'eu':_0xb23c('0x67');_0x4fffa0=_0x348637['serverUrl'];var _0x366931=_0x4fffa0[_0xb23c('0x68')](-0x1);if(_0x366931==='/'||_0x366931==='\x5c'||_0x366931===':'){_0x4fffa0=_0x4fffa0[_0xb23c('0x69')](0x0,_0x4fffa0['lastIndexOf'](_0x366931));}if(!_0x348637['refreshToken']){throw new Error(_0xb23c('0x6a'));}return getAccessToken(_0x348637);})['then'](function(_0x33cb36){if(_0x33cb36){return rp({'method':'GET','uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x42a872),'qs':{'module':_0xb23c('0x6b')},'headers':{'Authorization':_0xb23c('0x6c')+_0x33cb36},'json':!![]});}})[_0xb23c('0x26')](function(_0x408f0f){if(_0x408f0f){if(_0x408f0f[_0xb23c('0x6d')]&&_0x408f0f[_0xb23c('0x6d')]['error']){throw new Error(_0x408f0f[_0xb23c('0x6d')][_0xb23c('0x6e')][_0xb23c('0x6f')]);}var _0x102e46=[];var _0xb116f0=[];var _0x32b5ea=[_0xb23c('0x70'),_0xb23c('0x71'),_0xb23c('0x72'),_0xb23c('0x73'),_0xb23c('0x74'),_0xb23c('0x75'),'Call_Start_Time','Call_Type'];_0xb116f0=_[_0xb23c('0x76')](_0x408f0f['fields'],function(_0x5f4f60){return _0x32b5ea[_0xb23c('0x77')](_0x5f4f60['api_name']);});for(var _0x334fa5=0x0;_0x334fa5<_0xb116f0[_0xb23c('0x33')];_0x334fa5++){if(_0xb116f0[_0x334fa5][_0xb23c('0x78')]===![]){_0x102e46[_0xb23c('0x79')]({'id':_0xb116f0[_0x334fa5]['id'],'name':_0xb116f0[_0x334fa5]['display_label'],'custom':_0xb116f0[_0x334fa5][_0xb23c('0x7a')],'options':_0xb116f0[_0x334fa5][_0xb23c('0x7b')]===_0xb23c('0x7c')&&_0xb116f0[_0x334fa5][_0xb23c('0x7d')]['length']>-0x1?_['map'](_0xb116f0[_0x334fa5]['pick_list_values'],function(_0x41e46a){return{'name':_0x41e46a,'value':_0x41e46a};}):[]});}}return{'count':_0x102e46[_0xb23c('0x33')],'rows':_0x102e46};}else{return{'count':0x0,'rows':[]};}})[_0xb23c('0x26')](respondWithResult(_0x4dd417,null))[_0xb23c('0x3f')](function(_0xe74cf1){var _0x3958a5=_0xf88d3c['query']['test']?0x1f4:_0xe74cf1['statusCode']||0x1f4;logger[_0xb23c('0x6e')](_0xb23c('0x7e'),_0xb23c('0x60'),_0x3958a5,JSON[_0xb23c('0x7f')](_0xe74cf1));delete _0xe74cf1[_0xb23c('0x27')];if(_0x3958a5===0x191){_0x3958a5=0x190;}_0x4dd417[_0xb23c('0x1a')](_0x3958a5)[_0xb23c('0x28')](_0xf88d3c[_0xb23c('0x2e')]['test']?{'message':_0xb23c('0x80'),'statusCode':_0xe74cf1[_0xb23c('0x81')]}:_0xe74cf1);});};
\ No newline at end of file
index ca55ea3..2935688 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2478=['ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','slice','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','error','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','define','ZohoAccount','changed','zone','serverUrl','clientId','code','host','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','/oauth/v2/token','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','format'];(function(_0x4ded65,_0xc8d7c1){var _0x5864fb=function(_0x40df9d){while(--_0x40df9d){_0x4ded65['push'](_0x4ded65['shift']());}};_0x5864fb(++_0xc8d7c1);}(_0x2478,0x15a));var _0x8247=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x2478[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x8247('0x0'));var util=require(_0x8247('0x1'));var logger=require(_0x8247('0x2'))(_0x8247('0x3'));var moment=require(_0x8247('0x4'));var BPromise=require('bluebird');var rp=require(_0x8247('0x5'));var fs=require('fs');var path=require(_0x8247('0x6'));var rimraf=require(_0x8247('0x7'));var config=require('../../config/environment');var attributes=require(_0x8247('0x8'));var integrations=require(_0x8247('0x9'));module['exports']=function(_0x3e76e8,_0x437eb1){return _0x3e76e8[_0x8247('0xa')](_0x8247('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x27595c,_0x4c0bb4,_0x592c5e){if(_0x27595c[_0x8247('0xc')](_0x8247('0xd'))||_0x27595c[_0x8247('0xc')](_0x8247('0xe'))||_0x27595c[_0x8247('0xc')](_0x8247('0xf'))||_0x27595c[_0x8247('0xc')]('clientSecret')||_0x27595c[_0x8247('0xc')](_0x8247('0x10'))||_0x27595c[_0x8247('0xc')](_0x8247('0x11'))){var _0x29ab28,_0x53f5dc;_0x29ab28=_0x27595c[_0x8247('0xe')];var _0x44304e=_0x29ab28['slice'](-0x1);if(_0x44304e==='/'||_0x44304e==='\x5c'||_0x44304e===':'){_0x29ab28=_0x29ab28[_0x8247('0x12')](0x0,_0x29ab28[_0x8247('0x13')](_0x44304e));}switch(_0x27595c['zone']){case'US':_0x53f5dc=_0x8247('0x14');break;case'AU':_0x53f5dc=_0x8247('0x15');break;case'IN':_0x53f5dc='https://accounts.zoho.in';break;case'CN':_0x53f5dc='https://accounts.zoho.com.cn';break;default:_0x53f5dc=_0x8247('0x16');break;}var _0x37a476={'method':'POST','uri':_0x53f5dc+_0x8247('0x17'),'form':{'grant_type':'authorization_code','client_id':_0x27595c['clientId'],'client_secret':_0x27595c[_0x8247('0x18')],'redirect_uri':_0x27595c[_0x8247('0xe')],'code':_0x27595c[_0x8247('0x10')]},'headers':{'Content-Type':_0x8247('0x19')}};return rp(_0x37a476)[_0x8247('0x1a')](function(_0x1ff46a){var _0xc3883e=JSON[_0x8247('0x1b')](_0x1ff46a);if(_0xc3883e[_0x8247('0x1c')]){_0x27595c[_0x8247('0x1d')]=_0xc3883e[_0x8247('0x1c')];logger[_0x8247('0x1e')](util[_0x8247('0x1f')](_0x8247('0x20'),_0x27595c['name'],_0x27595c['id']));}else{logger['error'](util[_0x8247('0x1f')](_0x8247('0x21'),_0x27595c[_0x8247('0x22')],_0x27595c['id']),util[_0x8247('0x23')](_0xc3883e,{'showHidden':![],'depth':null}));}return _0x592c5e(null,_0x4c0bb4);})[_0x8247('0x24')](function(_0x40516b){logger['error'](util[_0x8247('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x27595c[_0x8247('0x22')],_0x27595c['id']),util[_0x8247('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x592c5e(_0x40516b);});}else{return _0x592c5e(null,_0x4c0bb4);}},'beforeUpdate':function(_0x2670d4,_0x337c26,_0xd163cf){if(_0x2670d4[_0x8247('0xc')](_0x8247('0xd'))||_0x2670d4[_0x8247('0xc')](_0x8247('0xe'))||_0x2670d4[_0x8247('0xc')](_0x8247('0xf'))||_0x2670d4[_0x8247('0xc')](_0x8247('0x18'))||_0x2670d4[_0x8247('0xc')](_0x8247('0x10'))||_0x2670d4['changed']('host')){var _0xf98c9,_0x3583a7;_0xf98c9=_0x2670d4['serverUrl'];var _0xfce44c=_0xf98c9[_0x8247('0x25')](-0x1);if(_0xfce44c==='/'||_0xfce44c==='\x5c'||_0xfce44c===':'){_0xf98c9=_0xf98c9[_0x8247('0x12')](0x0,_0xf98c9[_0x8247('0x13')](_0xfce44c));}switch(_0x2670d4[_0x8247('0xd')]){case'US':_0x3583a7=_0x8247('0x14');break;case'AU':_0x3583a7='https://accounts.zoho.com.au';break;case'IN':_0x3583a7=_0x8247('0x26');break;case'CN':_0x3583a7=_0x8247('0x27');break;default:_0x3583a7=_0x8247('0x16');break;}var _0x10877d={'method':_0x8247('0x28'),'uri':_0x3583a7+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x2670d4['clientId'],'client_secret':_0x2670d4[_0x8247('0x18')],'redirect_uri':_0x2670d4[_0x8247('0xe')],'code':_0x2670d4['code']},'headers':{'Content-Type':_0x8247('0x19')}};return rp(_0x10877d)[_0x8247('0x1a')](function(_0x3d2c35){var _0x48a97a=JSON['parse'](_0x3d2c35);if(_0x48a97a[_0x8247('0x1c')]){_0x2670d4['refreshToken']=_0x48a97a['refresh_token'];logger[_0x8247('0x1e')](util[_0x8247('0x1f')](_0x8247('0x20'),_0x2670d4['name'],_0x2670d4['id']));}else{logger[_0x8247('0x29')](util['format'](_0x8247('0x21'),_0x2670d4['name'],_0x2670d4['id']),util[_0x8247('0x23')](_0x48a97a,{'showHidden':![],'depth':null}));}return _0xd163cf(null,_0x337c26);})[_0x8247('0x24')](function(_0x295e15){logger[_0x8247('0x29')](util[_0x8247('0x1f')](_0x8247('0x21'),_0x2670d4[_0x8247('0x22')],_0x2670d4['id']),util[_0x8247('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0xd163cf(_0x295e15);});}else{return _0xd163cf(null,_0x337c26);}}}});};
\ No newline at end of file
+var _0x9e69=['../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','define','int_zoho_accounts','changed','serverUrl','clientSecret','code','host','substring','lastIndexOf','zone','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','clientId','application/x-www-form-urlencoded','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','https://accounts.zoho.com.au','https://accounts.zoho.in','parse','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4ce47b,_0x4241c5){var _0x2661a3=function(_0x5adf9a){while(--_0x5adf9a){_0x4ce47b['push'](_0x4ce47b['shift']());}};_0x2661a3(++_0x4241c5);}(_0x9e69,0x150));var _0x99e6=function(_0x593097,_0x2318b5){_0x593097=_0x593097-0x0;var _0x284ba2=_0x9e69[_0x593097];return _0x284ba2;};'use strict';var _=require('lodash');var util=require(_0x99e6('0x0'));var logger=require(_0x99e6('0x1'))(_0x99e6('0x2'));var moment=require(_0x99e6('0x3'));var BPromise=require('bluebird');var rp=require(_0x99e6('0x4'));var fs=require('fs');var path=require(_0x99e6('0x5'));var rimraf=require('rimraf');var config=require(_0x99e6('0x6'));var attributes=require(_0x99e6('0x7'));var integrations=require(_0x99e6('0x8'));module['exports']=function(_0x857e0c,_0x3cf241){return _0x857e0c[_0x99e6('0x9')]('ZohoAccount',attributes,{'tableName':_0x99e6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x305140,_0x4a657d,_0x1a3e1e){if(_0x305140[_0x99e6('0xb')]('zone')||_0x305140[_0x99e6('0xb')](_0x99e6('0xc'))||_0x305140['changed']('clientId')||_0x305140[_0x99e6('0xb')](_0x99e6('0xd'))||_0x305140[_0x99e6('0xb')](_0x99e6('0xe'))||_0x305140[_0x99e6('0xb')](_0x99e6('0xf'))){var _0x51de85,_0x13a62b;_0x51de85=_0x305140[_0x99e6('0xc')];var _0x2b40de=_0x51de85['slice'](-0x1);if(_0x2b40de==='/'||_0x2b40de==='\x5c'||_0x2b40de===':'){_0x51de85=_0x51de85[_0x99e6('0x10')](0x0,_0x51de85[_0x99e6('0x11')](_0x2b40de));}switch(_0x305140[_0x99e6('0x12')]){case'US':_0x13a62b='https://accounts.zoho.com';break;case'AU':_0x13a62b='https://accounts.zoho.com.au';break;case'IN':_0x13a62b='https://accounts.zoho.in';break;case'CN':_0x13a62b=_0x99e6('0x13');break;default:_0x13a62b=_0x99e6('0x14');break;}var _0x1d910a={'method':'POST','uri':_0x13a62b+_0x99e6('0x15'),'form':{'grant_type':_0x99e6('0x16'),'client_id':_0x305140[_0x99e6('0x17')],'client_secret':_0x305140[_0x99e6('0xd')],'redirect_uri':_0x305140[_0x99e6('0xc')],'code':_0x305140['code']},'headers':{'Content-Type':_0x99e6('0x18')}};return rp(_0x1d910a)['then'](function(_0x2749bf){var _0x359358=JSON['parse'](_0x2749bf);if(_0x359358[_0x99e6('0x19')]){_0x305140[_0x99e6('0x1a')]=_0x359358[_0x99e6('0x19')];logger[_0x99e6('0x1b')](util[_0x99e6('0x1c')](_0x99e6('0x1d'),_0x305140[_0x99e6('0x1e')],_0x305140['id']));}else{logger[_0x99e6('0x1f')](util[_0x99e6('0x1c')](_0x99e6('0x20'),_0x305140['name'],_0x305140['id']),util[_0x99e6('0x21')](_0x359358,{'showHidden':![],'depth':null}));}return _0x1a3e1e(null,_0x4a657d);})[_0x99e6('0x22')](function(_0x16f05d){logger[_0x99e6('0x1f')](util[_0x99e6('0x1c')](_0x99e6('0x20'),_0x305140[_0x99e6('0x1e')],_0x305140['id']),util[_0x99e6('0x21')](parsedResult,{'showHidden':![],'depth':null}));return _0x1a3e1e(_0x16f05d);});}else{return _0x1a3e1e(null,_0x4a657d);}},'beforeUpdate':function(_0x2033af,_0x1b4339,_0x38d174){if(_0x2033af[_0x99e6('0xb')](_0x99e6('0x12'))||_0x2033af[_0x99e6('0xb')](_0x99e6('0xc'))||_0x2033af[_0x99e6('0xb')](_0x99e6('0x17'))||_0x2033af['changed'](_0x99e6('0xd'))||_0x2033af['changed'](_0x99e6('0xe'))||_0x2033af[_0x99e6('0xb')](_0x99e6('0xf'))){var _0x52c7da,_0x3a1325;_0x52c7da=_0x2033af['serverUrl'];var _0x378c17=_0x52c7da['slice'](-0x1);if(_0x378c17==='/'||_0x378c17==='\x5c'||_0x378c17===':'){_0x52c7da=_0x52c7da[_0x99e6('0x10')](0x0,_0x52c7da[_0x99e6('0x11')](_0x378c17));}switch(_0x2033af['zone']){case'US':_0x3a1325='https://accounts.zoho.com';break;case'AU':_0x3a1325=_0x99e6('0x23');break;case'IN':_0x3a1325=_0x99e6('0x24');break;case'CN':_0x3a1325=_0x99e6('0x13');break;default:_0x3a1325=_0x99e6('0x14');break;}var _0x3f821a={'method':'POST','uri':_0x3a1325+_0x99e6('0x15'),'form':{'grant_type':_0x99e6('0x16'),'client_id':_0x2033af[_0x99e6('0x17')],'client_secret':_0x2033af['clientSecret'],'redirect_uri':_0x2033af['serverUrl'],'code':_0x2033af[_0x99e6('0xe')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3f821a)['then'](function(_0x213a6f){var _0x4f77a0=JSON[_0x99e6('0x25')](_0x213a6f);if(_0x4f77a0[_0x99e6('0x19')]){_0x2033af[_0x99e6('0x1a')]=_0x4f77a0['refresh_token'];logger[_0x99e6('0x1b')](util[_0x99e6('0x1c')](_0x99e6('0x1d'),_0x2033af[_0x99e6('0x1e')],_0x2033af['id']));}else{logger['error'](util[_0x99e6('0x1c')](_0x99e6('0x20'),_0x2033af[_0x99e6('0x1e')],_0x2033af['id']),util[_0x99e6('0x21')](_0x4f77a0,{'showHidden':![],'depth':null}));}return _0x38d174(null,_0x1b4339);})[_0x99e6('0x22')](function(_0x40e298){logger['error'](util[_0x99e6('0x1c')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2033af['name'],_0x2033af['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x38d174(_0x40e298);});}else{return _0x38d174(null,_0x1b4339);}}}});};
\ No newline at end of file
index 705b228..3e6b6b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5226=['request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','raw','where','attributes','limit','include','map','model','then','GetZohoAccount','ShowZohoAccount','ZohoAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','ZohoAccount,\x20%s,\x20%s'];(function(_0x4eb082,_0x5ee5de){var _0x2f17e0=function(_0x189b86){while(--_0x189b86){_0x4eb082['push'](_0x4eb082['shift']());}};_0x2f17e0(++_0x5ee5de);}(_0x5226,0x137));var _0x6522=function(_0x264995,_0x3c459b){_0x264995=_0x264995-0x0;var _0x2b39a7=_0x5226[_0x264995];return _0x2b39a7;};'use strict';var _=require(_0x6522('0x0'));var util=require(_0x6522('0x1'));var moment=require(_0x6522('0x2'));var BPromise=require(_0x6522('0x3'));var rs=require(_0x6522('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6522('0x5'))['db'];var utils=require(_0x6522('0x6'));var logger=require(_0x6522('0x7'))('rpc');var config=require(_0x6522('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6522('0x9')][_0x6522('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x183be8,_0x17c139,_0x6efdb7){return new BPromise(function(_0x2dbe49,_0x318dc1){return client['request'](_0x183be8,_0x6efdb7)['then'](function(_0x2ff0e0){logger[_0x6522('0xb')](_0x6522('0xc'),_0x17c139,_0x6522('0xd'));logger[_0x6522('0xe')](_0x6522('0xf'),_0x17c139,_0x6522('0xd'),JSON[_0x6522('0x10')](_0x2ff0e0));if(_0x2ff0e0[_0x6522('0x11')]){if(_0x2ff0e0[_0x6522('0x11')][_0x6522('0x12')]===0x1f4){logger[_0x6522('0x11')](_0x6522('0xc'),_0x17c139,_0x2ff0e0['error'][_0x6522('0x13')]);return _0x318dc1(_0x2ff0e0[_0x6522('0x11')][_0x6522('0x13')]);}logger[_0x6522('0x11')](_0x6522('0xc'),_0x17c139,_0x2ff0e0['error'][_0x6522('0x13')]);return _0x2dbe49(_0x2ff0e0[_0x6522('0x11')][_0x6522('0x13')]);}else{logger[_0x6522('0xb')](_0x6522('0xc'),_0x17c139,_0x6522('0xd'));_0x2dbe49(_0x2ff0e0[_0x6522('0x14')][_0x6522('0x13')]);}})[_0x6522('0x15')](function(_0x2de2e5){logger[_0x6522('0x11')](_0x6522('0xc'),_0x17c139,_0x2de2e5);_0x318dc1(_0x2de2e5);});});}exports['GetZohoAccount']=function(_0x6f0909){var _0x1edcb6=this;return new Promise(function(_0x2bb08c,_0x368dd1){return db['ZohoAccount'][_0x6522('0x16')]({'raw':_0x6f0909[_0x6522('0x17')]?_0x6f0909['options'][_0x6522('0x18')]===undefined?!![]:![]:!![],'where':_0x6f0909['options']?_0x6f0909[_0x6522('0x17')][_0x6522('0x19')]||null:null,'attributes':_0x6f0909[_0x6522('0x17')]?_0x6f0909[_0x6522('0x17')][_0x6522('0x1a')]||null:null,'limit':_0x6f0909[_0x6522('0x17')]?_0x6f0909['options'][_0x6522('0x1b')]||null:null,'include':_0x6f0909[_0x6522('0x17')]?_0x6f0909[_0x6522('0x17')][_0x6522('0x1c')]?_[_0x6522('0x1d')](_0x6f0909[_0x6522('0x17')]['include'],function(_0x11ed35){return{'model':db[_0x11ed35[_0x6522('0x1e')]],'as':_0x11ed35['as'],'attributes':_0x11ed35[_0x6522('0x1a')],'include':_0x11ed35[_0x6522('0x1c')]?_['map'](_0x11ed35['include'],function(_0x263d7d){return{'model':db[_0x263d7d[_0x6522('0x1e')]],'as':_0x263d7d['as'],'attributes':_0x263d7d[_0x6522('0x1a')],'include':_0x263d7d[_0x6522('0x1c')]?_['map'](_0x263d7d[_0x6522('0x1c')],function(_0x1af303){return{'model':db[_0x1af303['model']],'as':_0x1af303['as'],'attributes':_0x1af303[_0x6522('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6522('0x1f')](function(_0x23dc77){logger[_0x6522('0xb')]('GetZohoAccount',_0x6f0909);logger[_0x6522('0xe')](_0x6522('0x20'),_0x6f0909,JSON[_0x6522('0x10')](_0x23dc77));_0x2bb08c(_0x23dc77);})[_0x6522('0x15')](function(_0x13a851){logger[_0x6522('0x11')](_0x6522('0x20'),_0x13a851[_0x6522('0x13')],_0x6f0909);_0x368dd1(_0x1edcb6[_0x6522('0x11')](0x1f4,_0x13a851[_0x6522('0x13')]));});});};exports[_0x6522('0x21')]=function(_0x2c2e97){var _0x4c4d29=this;return new Promise(function(_0x1cb044,_0x1164a4){return db[_0x6522('0x22')][_0x6522('0x23')]({'raw':_0x2c2e97[_0x6522('0x17')]?_0x2c2e97[_0x6522('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2c2e97[_0x6522('0x17')]?_0x2c2e97[_0x6522('0x17')][_0x6522('0x19')]||null:null,'attributes':_0x2c2e97[_0x6522('0x17')]?_0x2c2e97[_0x6522('0x17')][_0x6522('0x1a')]||null:null,'include':_0x2c2e97[_0x6522('0x17')]?_0x2c2e97[_0x6522('0x17')][_0x6522('0x1c')]?_[_0x6522('0x1d')](_0x2c2e97[_0x6522('0x17')][_0x6522('0x1c')],function(_0xb0b612){return{'model':db[_0xb0b612['model']],'as':_0xb0b612['as'],'attributes':_0xb0b612['attributes'],'include':_0xb0b612['include']?_[_0x6522('0x1d')](_0xb0b612[_0x6522('0x1c')],function(_0x28cafc){return{'model':db[_0x28cafc[_0x6522('0x1e')]],'as':_0x28cafc['as'],'attributes':_0x28cafc[_0x6522('0x1a')],'include':_0x28cafc[_0x6522('0x1c')]?_['map'](_0x28cafc[_0x6522('0x1c')],function(_0x409d32){return{'model':db[_0x409d32[_0x6522('0x1e')]],'as':_0x409d32['as'],'attributes':_0x409d32[_0x6522('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6522('0x1f')](function(_0x4ec7ab){logger['info']('ShowZohoAccount',_0x2c2e97);logger[_0x6522('0xe')](_0x6522('0x21'),_0x2c2e97,JSON['stringify'](_0x4ec7ab));_0x1cb044(_0x4ec7ab);})['catch'](function(_0xed4641){logger['error']('ShowZohoAccount',_0xed4641[_0x6522('0x13')],_0x2c2e97);_0x1164a4(_0x4c4d29[_0x6522('0x11')](0x1f4,_0xed4641[_0x6522('0x13')]));});});};
\ No newline at end of file
+var _0x20de=['ZohoAccount','findAll','options','raw','include','model','attributes','map','ShowZohoAccount','find','where','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetZohoAccount'];(function(_0x47841b,_0x35633c){var _0x122652=function(_0xf30147){while(--_0xf30147){_0x47841b['push'](_0x47841b['shift']());}};_0x122652(++_0x35633c);}(_0x20de,0x134));var _0xe20d=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0x20de[_0x9c2427];return _0x51984f;};'use strict';var _=require(_0xe20d('0x0'));var util=require('util');var moment=require(_0xe20d('0x1'));var BPromise=require(_0xe20d('0x2'));var rs=require(_0xe20d('0x3'));var fs=require('fs');var Redis=require(_0xe20d('0x4'));var db=require(_0xe20d('0x5'))['db'];var utils=require(_0xe20d('0x6'));var logger=require(_0xe20d('0x7'))(_0xe20d('0x8'));var config=require(_0xe20d('0x9'));var jayson=require(_0xe20d('0xa'));var client=jayson[_0xe20d('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x374faa,_0x5a5ac2,_0x4e1fb9){return new BPromise(function(_0x4909c9,_0x110ff5){return client[_0xe20d('0xc')](_0x374faa,_0x4e1fb9)[_0xe20d('0xd')](function(_0x50f487){logger[_0xe20d('0xe')](_0xe20d('0xf'),_0x5a5ac2,'request\x20sent');logger[_0xe20d('0x10')](_0xe20d('0x11'),_0x5a5ac2,'request\x20sent',JSON[_0xe20d('0x12')](_0x50f487));if(_0x50f487[_0xe20d('0x13')]){if(_0x50f487[_0xe20d('0x13')][_0xe20d('0x14')]===0x1f4){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5a5ac2,_0x50f487[_0xe20d('0x13')][_0xe20d('0x15')]);return _0x110ff5(_0x50f487[_0xe20d('0x13')][_0xe20d('0x15')]);}logger[_0xe20d('0x13')](_0xe20d('0xf'),_0x5a5ac2,_0x50f487[_0xe20d('0x13')][_0xe20d('0x15')]);return _0x4909c9(_0x50f487[_0xe20d('0x13')]['message']);}else{logger[_0xe20d('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x5a5ac2,_0xe20d('0x16'));_0x4909c9(_0x50f487[_0xe20d('0x17')][_0xe20d('0x15')]);}})['catch'](function(_0x1d6179){logger['error'](_0xe20d('0xf'),_0x5a5ac2,_0x1d6179);_0x110ff5(_0x1d6179);});});}exports[_0xe20d('0x18')]=function(_0x285916){var _0x4e8dd6=this;return new Promise(function(_0x4353cb,_0x17a2f1){return db[_0xe20d('0x19')][_0xe20d('0x1a')]({'raw':_0x285916['options']?_0x285916[_0xe20d('0x1b')][_0xe20d('0x1c')]===undefined?!![]:![]:!![],'where':_0x285916[_0xe20d('0x1b')]?_0x285916[_0xe20d('0x1b')]['where']||null:null,'attributes':_0x285916[_0xe20d('0x1b')]?_0x285916['options']['attributes']||null:null,'limit':_0x285916[_0xe20d('0x1b')]?_0x285916[_0xe20d('0x1b')]['limit']||null:null,'include':_0x285916['options']?_0x285916[_0xe20d('0x1b')][_0xe20d('0x1d')]?_['map'](_0x285916[_0xe20d('0x1b')][_0xe20d('0x1d')],function(_0x3f0227){return{'model':db[_0x3f0227[_0xe20d('0x1e')]],'as':_0x3f0227['as'],'attributes':_0x3f0227[_0xe20d('0x1f')],'include':_0x3f0227['include']?_[_0xe20d('0x20')](_0x3f0227[_0xe20d('0x1d')],function(_0x1a76bc){return{'model':db[_0x1a76bc[_0xe20d('0x1e')]],'as':_0x1a76bc['as'],'attributes':_0x1a76bc[_0xe20d('0x1f')],'include':_0x1a76bc['include']?_['map'](_0x1a76bc[_0xe20d('0x1d')],function(_0x497726){return{'model':db[_0x497726[_0xe20d('0x1e')]],'as':_0x497726['as'],'attributes':_0x497726[_0xe20d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe20d('0xd')](function(_0x46fc0e){logger[_0xe20d('0xe')](_0xe20d('0x18'),_0x285916);logger[_0xe20d('0x10')]('GetZohoAccount',_0x285916,JSON[_0xe20d('0x12')](_0x46fc0e));_0x4353cb(_0x46fc0e);})['catch'](function(_0x555eb5){logger['error']('GetZohoAccount',_0x555eb5['message'],_0x285916);_0x17a2f1(_0x4e8dd6[_0xe20d('0x13')](0x1f4,_0x555eb5[_0xe20d('0x15')]));});});};exports[_0xe20d('0x21')]=function(_0x4f2d27){var _0x4f4369=this;return new Promise(function(_0x243311,_0x3b9866){return db[_0xe20d('0x19')][_0xe20d('0x22')]({'raw':_0x4f2d27[_0xe20d('0x1b')]?_0x4f2d27[_0xe20d('0x1b')][_0xe20d('0x1c')]===undefined?!![]:![]:!![],'where':_0x4f2d27[_0xe20d('0x1b')]?_0x4f2d27['options'][_0xe20d('0x23')]||null:null,'attributes':_0x4f2d27['options']?_0x4f2d27['options'][_0xe20d('0x1f')]||null:null,'include':_0x4f2d27['options']?_0x4f2d27[_0xe20d('0x1b')][_0xe20d('0x1d')]?_['map'](_0x4f2d27['options']['include'],function(_0x2b1867){return{'model':db[_0x2b1867[_0xe20d('0x1e')]],'as':_0x2b1867['as'],'attributes':_0x2b1867[_0xe20d('0x1f')],'include':_0x2b1867[_0xe20d('0x1d')]?_[_0xe20d('0x20')](_0x2b1867[_0xe20d('0x1d')],function(_0x4b5a10){return{'model':db[_0x4b5a10[_0xe20d('0x1e')]],'as':_0x4b5a10['as'],'attributes':_0x4b5a10[_0xe20d('0x1f')],'include':_0x4b5a10[_0xe20d('0x1d')]?_[_0xe20d('0x20')](_0x4b5a10['include'],function(_0x1da5bf){return{'model':db[_0x1da5bf[_0xe20d('0x1e')]],'as':_0x1da5bf['as'],'attributes':_0x1da5bf[_0xe20d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xe20d('0xd')](function(_0x5bf0f4){logger['info'](_0xe20d('0x21'),_0x4f2d27);logger[_0xe20d('0x10')]('ShowZohoAccount',_0x4f2d27,JSON[_0xe20d('0x12')](_0x5bf0f4));_0x243311(_0x5bf0f4);})[_0xe20d('0x24')](function(_0x223666){logger[_0xe20d('0x13')](_0xe20d('0x21'),_0x223666[_0xe20d('0x15')],_0x4f2d27);_0x3b9866(_0x4f4369[_0xe20d('0x13')](0x1f4,_0x223666[_0xe20d('0x15')]));});});};
\ No newline at end of file
index 583bc14..814500c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4449=['/:id/subjects','getSubjects','getDescriptions','post','update','delete','/:id','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./intZohoConfiguration.controller','get','isAuthenticated','show','/:id/fields','getFields'];(function(_0x262886,_0x31de4b){var _0x22a66c=function(_0x480977){while(--_0x480977){_0x262886['push'](_0x262886['shift']());}};_0x22a66c(++_0x31de4b);}(_0x4449,0x1ac));var _0x9444=function(_0x234412,_0x4cb9b8){_0x234412=_0x234412-0x0;var _0x86ddd0=_0x4449[_0x234412];return _0x86ddd0;};'use strict';var multer=require(_0x9444('0x0'));var util=require('util');var path=require(_0x9444('0x1'));var timeout=require(_0x9444('0x2'));var express=require('express');var router=express[_0x9444('0x3')]();var fs_extra=require(_0x9444('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9444('0x5'));var config=require('../../config/environment');var controller=require(_0x9444('0x6'));router[_0x9444('0x7')]('/',auth[_0x9444('0x8')](),controller['index']);router[_0x9444('0x7')]('/:id',auth[_0x9444('0x8')](),controller[_0x9444('0x9')]);router['get'](_0x9444('0xa'),auth[_0x9444('0x8')](),controller[_0x9444('0xb')]);router[_0x9444('0x7')](_0x9444('0xc'),auth[_0x9444('0x8')](),controller[_0x9444('0xd')]);router[_0x9444('0x7')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x9444('0xe')]);router[_0x9444('0xf')]('/',auth[_0x9444('0x8')](),controller['create']);router['put']('/:id',auth[_0x9444('0x8')](),controller[_0x9444('0x10')]);router[_0x9444('0x11')](_0x9444('0x12'),auth[_0x9444('0x8')](),controller['destroy']);module[_0x9444('0x13')]=router;
\ No newline at end of file
+var _0xf9c9=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','show','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','/:id','delete','destroy','exports','multer','util','path','Router'];(function(_0x3ad176,_0x571fcb){var _0x4c329f=function(_0x56b462){while(--_0x56b462){_0x3ad176['push'](_0x3ad176['shift']());}};_0x4c329f(++_0x571fcb);}(_0xf9c9,0xe2));var _0x9f9c=function(_0x293fa4,_0x3ee6cc){_0x293fa4=_0x293fa4-0x0;var _0x58d190=_0xf9c9[_0x293fa4];return _0x58d190;};'use strict';var multer=require(_0x9f9c('0x0'));var util=require(_0x9f9c('0x1'));var path=require(_0x9f9c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9f9c('0x3')]();var fs_extra=require(_0x9f9c('0x4'));var auth=require(_0x9f9c('0x5'));var interaction=require(_0x9f9c('0x6'));var config=require(_0x9f9c('0x7'));var controller=require(_0x9f9c('0x8'));router[_0x9f9c('0x9')]('/',auth[_0x9f9c('0xa')](),controller['index']);router[_0x9f9c('0x9')]('/:id',auth[_0x9f9c('0xa')](),controller[_0x9f9c('0xb')]);router[_0x9f9c('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x9f9c('0xc')]);router[_0x9f9c('0x9')](_0x9f9c('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x9f9c('0x9')](_0x9f9c('0xe'),auth[_0x9f9c('0xa')](),controller[_0x9f9c('0xf')]);router[_0x9f9c('0x10')]('/',auth[_0x9f9c('0xa')](),controller[_0x9f9c('0x11')]);router[_0x9f9c('0x12')](_0x9f9c('0x13'),auth[_0x9f9c('0xa')](),controller['update']);router[_0x9f9c('0x14')](_0x9f9c('0x13'),auth[_0x9f9c('0xa')](),controller[_0x9f9c('0x15')]);module[_0x9f9c('0x16')]=router;
\ No newline at end of file
index 985d56c..d12ccd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe211=['contact_lead','sequelize','exports','STRING','lead','nothing','contact'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xe211,0x19e));var _0x1e21=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe211[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x1e21('0x0'));module[_0x1e21('0x1')]={'name':{'type':Sequelize[_0x1e21('0x2')]},'moduleCreate':{'type':Sequelize['ENUM'](_0x1e21('0x3'),'contact',_0x1e21('0x4')),'defaultValue':_0x1e21('0x3')},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x1e21('0x5'),'lead'),'defaultValue':_0x1e21('0x6')},'description':{'type':Sequelize[_0x1e21('0x2')]}};
\ No newline at end of file
+var _0x4edd=['nothing','lead','contact_lead','STRING','sequelize','ENUM','contact'];(function(_0x3c9c3f,_0x544a8e){var _0x91e734=function(_0xa0a558){while(--_0xa0a558){_0x3c9c3f['push'](_0x3c9c3f['shift']());}};_0x91e734(++_0x544a8e);}(_0x4edd,0x146));var _0xd4ed=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4edd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd4ed('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xd4ed('0x1')]('lead',_0xd4ed('0x2'),_0xd4ed('0x3')),'defaultValue':_0xd4ed('0x4')},'moduleSearch':{'type':Sequelize[_0xd4ed('0x1')](_0xd4ed('0x5'),'contact',_0xd4ed('0x4')),'defaultValue':_0xd4ed('0x5')},'description':{'type':Sequelize[_0xd4ed('0x6')]}};
\ No newline at end of file
index 156f5a3..298abf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe080=['sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','getFields','findOne','ZohoField','getSubjects','getDescriptions','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/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','save','update','then','destroy','error','name','send','ZohoConfiguration','rawAttributes','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe080,0x167));var _0x0e08=function(_0x526143,_0x11814a){_0x526143=_0x526143-0x0;var _0x19b43b=_0xe080[_0x526143];return _0x19b43b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e08('0x0'));var zipdir=require(_0x0e08('0x1'));var jsonpatch=require(_0x0e08('0x2'));var rp=require(_0x0e08('0x3'));var moment=require(_0x0e08('0x4'));var BPromise=require(_0x0e08('0x5'));var Mustache=require(_0x0e08('0x6'));var util=require(_0x0e08('0x7'));var path=require('path');var sox=require(_0x0e08('0x8'));var csv=require(_0x0e08('0x9'));var ejs=require(_0x0e08('0xa'));var fs=require('fs');var fs_extra=require(_0x0e08('0xb'));var _=require(_0x0e08('0xc'));var squel=require(_0x0e08('0xd'));var crypto=require('crypto');var jsforce=require(_0x0e08('0xe'));var deskjs=require(_0x0e08('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0e08('0x10'));var Papa=require(_0x0e08('0x11'));var Redis=require(_0x0e08('0x12'));var authService=require(_0x0e08('0x13'));var qs=require(_0x0e08('0x14'));var as=require(_0x0e08('0x15'));var hardwareService=require(_0x0e08('0x16'));var logger=require(_0x0e08('0x17'))(_0x0e08('0x18'));var utils=require('../../config/utils');var config=require(_0x0e08('0x19'));var licenseUtil=require(_0x0e08('0x1a'));var db=require(_0x0e08('0x1b'))['db'];function respondWithStatusCode(_0x5b9fd2,_0x3a6fa3){_0x3a6fa3=_0x3a6fa3||0xcc;return function(_0x50b8f7){if(_0x50b8f7){return _0x5b9fd2[_0x0e08('0x1c')](_0x3a6fa3);}return _0x5b9fd2[_0x0e08('0x1d')](_0x3a6fa3)[_0x0e08('0x1e')]();};}function respondWithResult(_0x5b6141,_0x2a12f1){_0x2a12f1=_0x2a12f1||0xc8;return function(_0x1113e4){if(_0x1113e4){return _0x5b6141[_0x0e08('0x1d')](_0x2a12f1)[_0x0e08('0x1f')](_0x1113e4);}};}function respondWithFilteredResult(_0x2ad9d5,_0x620a2f){return function(_0x32e054){if(_0x32e054){var _0x5294d4=typeof _0x620a2f[_0x0e08('0x20')]===_0x0e08('0x21')&&typeof _0x620a2f[_0x0e08('0x22')]==='undefined';var _0x5c3ea9=_0x32e054[_0x0e08('0x23')];var _0x14e49b=_0x5294d4?0x0:_0x620a2f[_0x0e08('0x20')];var _0x1daaf8=_0x5294d4?_0x32e054[_0x0e08('0x23')]:_0x620a2f[_0x0e08('0x20')]+_0x620a2f[_0x0e08('0x22')];var _0x91ab18;if(_0x1daaf8>=_0x5c3ea9){_0x1daaf8=_0x5c3ea9;_0x91ab18=0xc8;}else{_0x91ab18=0xce;}_0x2ad9d5[_0x0e08('0x1d')](_0x91ab18);return _0x2ad9d5[_0x0e08('0x24')](_0x0e08('0x25'),_0x14e49b+'-'+_0x1daaf8+'/'+_0x5c3ea9)[_0x0e08('0x1f')](_0x32e054);}return null;};}function patchUpdates(_0x19f717){return function(_0x27baa9){try{jsonpatch[_0x0e08('0x26')](_0x27baa9,_0x19f717,!![]);}catch(_0x32954e){return BPromise['reject'](_0x32954e);}return _0x27baa9[_0x0e08('0x27')]();};}function saveUpdates(_0x3f7bdc,_0x1fd9ea){return function(_0x491b03){if(_0x491b03){return _0x491b03[_0x0e08('0x28')](_0x3f7bdc)[_0x0e08('0x29')](function(_0x2c6542){return _0x2c6542;});}return null;};}function removeEntity(_0x1e1479,_0xbfaf31){return function(_0x404528){if(_0x404528){return _0x404528[_0x0e08('0x2a')]()['then'](function(){_0x1e1479['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x734e30,_0x26ab87){return function(_0x36c900){if(!_0x36c900){_0x734e30['sendStatus'](0x194);}return _0x36c900;};}function handleError(_0x39e0d0,_0x5e389c){_0x5e389c=_0x5e389c||0x1f4;return function(_0x3ef4c5){logger[_0x0e08('0x2b')](_0x3ef4c5['stack']);if(_0x3ef4c5['name']){delete _0x3ef4c5[_0x0e08('0x2c')];}_0x39e0d0['status'](_0x5e389c)[_0x0e08('0x2d')](_0x3ef4c5);};}exports['index']=function(_0x554af5,_0xf8eb44){var _0x181627={},_0xbeaf6c={},_0x4e42f6={'count':0x0,'rows':[]};var _0x31057e=_['map'](db[_0x0e08('0x2e')][_0x0e08('0x2f')],function(_0x217f0c){return{'name':_0x217f0c['fieldName'],'type':_0x217f0c[_0x0e08('0x30')][_0x0e08('0x31')]};});_0xbeaf6c['model']=_[_0x0e08('0x32')](_0x31057e,'name');_0xbeaf6c[_0x0e08('0x33')]=_[_0x0e08('0x34')](_0x554af5['query']);_0xbeaf6c[_0x0e08('0x35')]=_[_0x0e08('0x36')](_0xbeaf6c[_0x0e08('0x37')],_0xbeaf6c[_0x0e08('0x33')]);_0x181627[_0x0e08('0x38')]=_[_0x0e08('0x36')](_0xbeaf6c['model'],qs[_0x0e08('0x39')](_0x554af5[_0x0e08('0x33')][_0x0e08('0x39')]));_0x181627[_0x0e08('0x38')]=_0x181627[_0x0e08('0x38')][_0x0e08('0x3a')]?_0x181627[_0x0e08('0x38')]:_0xbeaf6c[_0x0e08('0x37')];if(!_0x554af5[_0x0e08('0x33')][_0x0e08('0x3b')]('nolimit')){_0x181627['limit']=qs[_0x0e08('0x22')](_0x554af5[_0x0e08('0x33')][_0x0e08('0x22')]);_0x181627[_0x0e08('0x20')]=qs[_0x0e08('0x20')](_0x554af5[_0x0e08('0x33')][_0x0e08('0x20')]);}_0x181627[_0x0e08('0x3c')]=qs[_0x0e08('0x3d')](_0x554af5[_0x0e08('0x33')]['sort']);_0x181627['where']=qs['filters'](_[_0x0e08('0x3e')](_0x554af5['query'],_0xbeaf6c[_0x0e08('0x35')]),_0x31057e);if(_0x554af5[_0x0e08('0x33')][_0x0e08('0x3f')]){_0x181627[_0x0e08('0x40')]=_[_0x0e08('0x41')](_0x181627[_0x0e08('0x40')],{'$or':_[_0x0e08('0x32')](_0x31057e,function(_0x261d31){if(_0x261d31[_0x0e08('0x30')]!==_0x0e08('0x42')){var _0x2ad578={};_0x2ad578[_0x261d31[_0x0e08('0x2c')]]={'$like':'%'+_0x554af5[_0x0e08('0x33')][_0x0e08('0x3f')]+'%'};return _0x2ad578;}})});}_0x181627=_['merge']({},_0x181627,_0x554af5[_0x0e08('0x43')]);var _0x48fbe2={'where':_0x181627[_0x0e08('0x40')]};return db[_0x0e08('0x2e')][_0x0e08('0x23')](_0x48fbe2)[_0x0e08('0x29')](function(_0x4e4871){_0x4e42f6[_0x0e08('0x23')]=_0x4e4871;if(_0x554af5[_0x0e08('0x33')][_0x0e08('0x44')]){_0x181627[_0x0e08('0x45')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x0e08('0x46')](_0x181627);})[_0x0e08('0x29')](function(_0x20cb55){_0x4e42f6[_0x0e08('0x47')]=_0x20cb55;return _0x4e42f6;})[_0x0e08('0x29')](respondWithFilteredResult(_0xf8eb44,_0x181627))[_0x0e08('0x48')](handleError(_0xf8eb44,null));};exports[_0x0e08('0x49')]=function(_0x2648b9,_0x11ee65){var _0x1d8cea={'raw':![],'where':{'id':_0x2648b9['params']['id']}},_0x4ab0e2={};_0x4ab0e2[_0x0e08('0x37')]=_[_0x0e08('0x34')](db['ZohoConfiguration'][_0x0e08('0x2f')]);_0x4ab0e2[_0x0e08('0x33')]=_[_0x0e08('0x34')](_0x2648b9[_0x0e08('0x33')]);_0x4ab0e2['filters']=_[_0x0e08('0x36')](_0x4ab0e2[_0x0e08('0x37')],_0x4ab0e2['query']);_0x1d8cea[_0x0e08('0x38')]=_[_0x0e08('0x36')](_0x4ab0e2[_0x0e08('0x37')],qs[_0x0e08('0x39')](_0x2648b9[_0x0e08('0x33')][_0x0e08('0x39')]));_0x1d8cea[_0x0e08('0x38')]=_0x1d8cea[_0x0e08('0x38')][_0x0e08('0x3a')]?_0x1d8cea[_0x0e08('0x38')]:_0x4ab0e2[_0x0e08('0x37')];if(_0x2648b9[_0x0e08('0x33')][_0x0e08('0x44')]){_0x1d8cea['include']=[{'all':!![]}];}_0x1d8cea=_['merge']({},_0x1d8cea,_0x2648b9[_0x0e08('0x43')]);return db[_0x0e08('0x2e')][_0x0e08('0x4a')](_0x1d8cea)[_0x0e08('0x29')](handleEntityNotFound(_0x11ee65,null))[_0x0e08('0x29')](respondWithResult(_0x11ee65,null))[_0x0e08('0x48')](handleError(_0x11ee65,null));};exports[_0x0e08('0x4b')]=function(_0x130f99,_0x4e0397){return db[_0x0e08('0x2e')][_0x0e08('0x4b')](_0x130f99[_0x0e08('0x4c')],{})[_0x0e08('0x29')](respondWithResult(_0x4e0397,0xc9))[_0x0e08('0x48')](handleError(_0x4e0397,null));};exports[_0x0e08('0x28')]=function(_0x7b731a,_0x15e644){if(_0x7b731a[_0x0e08('0x4c')]['id']){delete _0x7b731a[_0x0e08('0x4c')]['id'];}return db['ZohoConfiguration']['find']({'where':{'id':_0x7b731a[_0x0e08('0x4d')]['id']}})[_0x0e08('0x29')](handleEntityNotFound(_0x15e644,null))[_0x0e08('0x29')](saveUpdates(_0x7b731a[_0x0e08('0x4c')],null))['then'](respondWithResult(_0x15e644,null))[_0x0e08('0x48')](handleError(_0x15e644,null));};exports[_0x0e08('0x2a')]=function(_0x1541db,_0x400af6){return db[_0x0e08('0x2e')][_0x0e08('0x4a')]({'where':{'id':_0x1541db[_0x0e08('0x4d')]['id']}})[_0x0e08('0x29')](handleEntityNotFound(_0x400af6,null))[_0x0e08('0x29')](removeEntity(_0x400af6,null))['catch'](handleError(_0x400af6,null));};exports[_0x0e08('0x4e')]=function(_0x485ee8,_0x32bd43,_0x431dbd){var _0x2edadf={};var _0x4d79cc={};var _0x4f1d3b;var _0x48091e;return db[_0x0e08('0x2e')][_0x0e08('0x4f')]({'where':{'id':_0x485ee8[_0x0e08('0x4d')]['id']}})[_0x0e08('0x29')](handleEntityNotFound(_0x32bd43,null))[_0x0e08('0x29')](function(_0x3f89c2){if(_0x3f89c2){_0x4f1d3b=_0x3f89c2;_0x4d79cc[_0x0e08('0x37')]=_['keys'](db[_0x0e08('0x50')][_0x0e08('0x2f')]);_0x4d79cc[_0x0e08('0x33')]=_[_0x0e08('0x34')](_0x485ee8[_0x0e08('0x33')]);_0x4d79cc[_0x0e08('0x35')]=_[_0x0e08('0x36')](_0x4d79cc[_0x0e08('0x37')],_0x4d79cc[_0x0e08('0x33')]);_0x2edadf[_0x0e08('0x38')]=_[_0x0e08('0x36')](_0x4d79cc[_0x0e08('0x37')],qs[_0x0e08('0x39')](_0x485ee8[_0x0e08('0x33')][_0x0e08('0x39')]));_0x2edadf['attributes']=_0x2edadf[_0x0e08('0x38')][_0x0e08('0x3a')]?_0x2edadf['attributes']:_0x4d79cc[_0x0e08('0x37')];_0x2edadf[_0x0e08('0x3c')]=qs[_0x0e08('0x3d')](_0x485ee8[_0x0e08('0x33')][_0x0e08('0x3d')]);_0x2edadf[_0x0e08('0x40')]=qs[_0x0e08('0x35')](_[_0x0e08('0x3e')](_0x485ee8['query'],_0x4d79cc['filters']));if(_0x485ee8[_0x0e08('0x33')][_0x0e08('0x3f')]){_0x2edadf['where']=_[_0x0e08('0x41')](_0x2edadf[_0x0e08('0x40')],{'$or':_[_0x0e08('0x32')](_0x2edadf[_0x0e08('0x38')],function(_0x42f456){var _0x201101={};_0x201101[_0x42f456]={'$like':'%'+_0x485ee8['query'][_0x0e08('0x3f')]+'%'};return _0x201101;})});}_0x2edadf=_[_0x0e08('0x41')]({},_0x2edadf,_0x485ee8[_0x0e08('0x43')]);return _0x4f1d3b[_0x0e08('0x4e')](_0x2edadf);}})[_0x0e08('0x29')](function(_0x4763f4){if(_0x4763f4){_0x48091e=_0x4763f4[_0x0e08('0x3a')];if(!_0x485ee8[_0x0e08('0x33')][_0x0e08('0x3b')]('nolimit')){_0x2edadf[_0x0e08('0x22')]=qs[_0x0e08('0x22')](_0x485ee8[_0x0e08('0x33')][_0x0e08('0x22')]);_0x2edadf[_0x0e08('0x20')]=qs[_0x0e08('0x20')](_0x485ee8['query'][_0x0e08('0x20')]);}return _0x4f1d3b[_0x0e08('0x4e')](_0x2edadf);}})[_0x0e08('0x29')](function(_0x408ab2){if(_0x408ab2){return _0x408ab2?{'count':_0x48091e,'rows':_0x408ab2}:null;}})[_0x0e08('0x29')](respondWithResult(_0x32bd43,null))[_0x0e08('0x48')](handleError(_0x32bd43,null));};exports[_0x0e08('0x51')]=function(_0x150514,_0x3979c5,_0x1acadf){var _0x706973={};var _0x29e5a6={};var _0x4be8e8;var _0xe53f24;return db[_0x0e08('0x2e')][_0x0e08('0x4f')]({'where':{'id':_0x150514[_0x0e08('0x4d')]['id']}})[_0x0e08('0x29')](handleEntityNotFound(_0x3979c5,null))[_0x0e08('0x29')](function(_0x3d998c){if(_0x3d998c){_0x4be8e8=_0x3d998c;_0x29e5a6[_0x0e08('0x37')]=_[_0x0e08('0x34')](db['ZohoField']['rawAttributes']);_0x29e5a6['query']=_[_0x0e08('0x34')](_0x150514[_0x0e08('0x33')]);_0x29e5a6[_0x0e08('0x35')]=_[_0x0e08('0x36')](_0x29e5a6[_0x0e08('0x37')],_0x29e5a6[_0x0e08('0x33')]);_0x706973[_0x0e08('0x38')]=_[_0x0e08('0x36')](_0x29e5a6['model'],qs[_0x0e08('0x39')](_0x150514[_0x0e08('0x33')][_0x0e08('0x39')]));_0x706973['attributes']=_0x706973['attributes'][_0x0e08('0x3a')]?_0x706973[_0x0e08('0x38')]:_0x29e5a6[_0x0e08('0x37')];_0x706973[_0x0e08('0x3c')]=qs[_0x0e08('0x3d')](_0x150514[_0x0e08('0x33')][_0x0e08('0x3d')]);_0x706973[_0x0e08('0x40')]=qs[_0x0e08('0x35')](_[_0x0e08('0x3e')](_0x150514['query'],_0x29e5a6[_0x0e08('0x35')]));if(_0x150514[_0x0e08('0x33')][_0x0e08('0x3f')]){_0x706973[_0x0e08('0x40')]=_['merge'](_0x706973[_0x0e08('0x40')],{'$or':_[_0x0e08('0x32')](_0x706973[_0x0e08('0x38')],function(_0x58c7cb){var _0x5792d7={};_0x5792d7[_0x58c7cb]={'$like':'%'+_0x150514[_0x0e08('0x33')][_0x0e08('0x3f')]+'%'};return _0x5792d7;})});}_0x706973=_[_0x0e08('0x41')]({},_0x706973,_0x150514[_0x0e08('0x43')]);return _0x4be8e8['getSubjects'](_0x706973);}})['then'](function(_0x372e19){if(_0x372e19){_0xe53f24=_0x372e19[_0x0e08('0x3a')];if(!_0x150514[_0x0e08('0x33')]['hasOwnProperty']('nolimit')){_0x706973[_0x0e08('0x22')]=qs[_0x0e08('0x22')](_0x150514['query'][_0x0e08('0x22')]);_0x706973[_0x0e08('0x20')]=qs[_0x0e08('0x20')](_0x150514[_0x0e08('0x33')][_0x0e08('0x20')]);}return _0x4be8e8[_0x0e08('0x51')](_0x706973);}})[_0x0e08('0x29')](function(_0x182c32){if(_0x182c32){return _0x182c32?{'count':_0xe53f24,'rows':_0x182c32}:null;}})[_0x0e08('0x29')](respondWithResult(_0x3979c5,null))[_0x0e08('0x48')](handleError(_0x3979c5,null));};exports['getDescriptions']=function(_0x2476e3,_0x4f49e6,_0x43e653){var _0x258bc1={};var _0x12a399={};var _0x334b49;var _0x304f74;return db[_0x0e08('0x2e')][_0x0e08('0x4f')]({'where':{'id':_0x2476e3[_0x0e08('0x4d')]['id']}})[_0x0e08('0x29')](handleEntityNotFound(_0x4f49e6,null))[_0x0e08('0x29')](function(_0x14a21){if(_0x14a21){_0x334b49=_0x14a21;_0x12a399['model']=_[_0x0e08('0x34')](db['ZohoField']['rawAttributes']);_0x12a399[_0x0e08('0x33')]=_['keys'](_0x2476e3[_0x0e08('0x33')]);_0x12a399[_0x0e08('0x35')]=_[_0x0e08('0x36')](_0x12a399[_0x0e08('0x37')],_0x12a399['query']);_0x258bc1[_0x0e08('0x38')]=_[_0x0e08('0x36')](_0x12a399[_0x0e08('0x37')],qs[_0x0e08('0x39')](_0x2476e3['query']['fields']));_0x258bc1[_0x0e08('0x38')]=_0x258bc1[_0x0e08('0x38')][_0x0e08('0x3a')]?_0x258bc1['attributes']:_0x12a399[_0x0e08('0x37')];_0x258bc1['order']=qs[_0x0e08('0x3d')](_0x2476e3[_0x0e08('0x33')][_0x0e08('0x3d')]);_0x258bc1['where']=qs[_0x0e08('0x35')](_[_0x0e08('0x3e')](_0x2476e3[_0x0e08('0x33')],_0x12a399[_0x0e08('0x35')]));if(_0x2476e3[_0x0e08('0x33')][_0x0e08('0x3f')]){_0x258bc1[_0x0e08('0x40')]=_[_0x0e08('0x41')](_0x258bc1[_0x0e08('0x40')],{'$or':_['map'](_0x258bc1[_0x0e08('0x38')],function(_0x27aafc){var _0x1fdb2c={};_0x1fdb2c[_0x27aafc]={'$like':'%'+_0x2476e3[_0x0e08('0x33')]['filter']+'%'};return _0x1fdb2c;})});}_0x258bc1=_[_0x0e08('0x41')]({},_0x258bc1,_0x2476e3['options']);return _0x334b49[_0x0e08('0x52')](_0x258bc1);}})['then'](function(_0x23822b){if(_0x23822b){_0x304f74=_0x23822b['length'];if(!_0x2476e3[_0x0e08('0x33')][_0x0e08('0x3b')](_0x0e08('0x53'))){_0x258bc1['limit']=qs['limit'](_0x2476e3[_0x0e08('0x33')][_0x0e08('0x22')]);_0x258bc1['offset']=qs[_0x0e08('0x20')](_0x2476e3[_0x0e08('0x33')][_0x0e08('0x20')]);}return _0x334b49[_0x0e08('0x52')](_0x258bc1);}})[_0x0e08('0x29')](function(_0x1293f8){if(_0x1293f8){return _0x1293f8?{'count':_0x304f74,'rows':_0x1293f8}:null;}})[_0x0e08('0x29')](respondWithResult(_0x4f49e6,null))[_0x0e08('0x48')](handleError(_0x4f49e6,null));};
\ No newline at end of file
+var _0x0d5d=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','ZohoConfiguration','options','find','catch','create','body','getFields','findOne','ZohoField','order','hasOwnProperty','getSubjects','getDescriptions'];(function(_0x54c933,_0x2df4f0){var _0x2a0f72=function(_0x423473){while(--_0x423473){_0x54c933['push'](_0x54c933['shift']());}};_0x2a0f72(++_0x2df4f0);}(_0x0d5d,0x19f));var _0xd0d5=function(_0x4ecae0,_0x2cb517){_0x4ecae0=_0x4ecae0-0x0;var _0x3cc777=_0x0d5d[_0x4ecae0];return _0x3cc777;};'use strict';var emlformat=require(_0xd0d5('0x0'));var rimraf=require(_0xd0d5('0x1'));var zipdir=require(_0xd0d5('0x2'));var jsonpatch=require(_0xd0d5('0x3'));var rp=require(_0xd0d5('0x4'));var moment=require(_0xd0d5('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd0d5('0x6'));var path=require(_0xd0d5('0x7'));var sox=require(_0xd0d5('0x8'));var csv=require(_0xd0d5('0x9'));var ejs=require(_0xd0d5('0xa'));var fs=require('fs');var fs_extra=require(_0xd0d5('0xb'));var _=require(_0xd0d5('0xc'));var squel=require('squel');var crypto=require(_0xd0d5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd0d5('0xe'));var toCsv=require(_0xd0d5('0x9'));var querystring=require(_0xd0d5('0xf'));var Papa=require(_0xd0d5('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd0d5('0x11'));var as=require(_0xd0d5('0x12'));var hardwareService=require(_0xd0d5('0x13'));var logger=require('../../config/logger')(_0xd0d5('0x14'));var utils=require(_0xd0d5('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd0d5('0x16'));var db=require(_0xd0d5('0x17'))['db'];function respondWithStatusCode(_0x1f1168,_0x1beeab){_0x1beeab=_0x1beeab||0xcc;return function(_0x42c0f8){if(_0x42c0f8){return _0x1f1168[_0xd0d5('0x18')](_0x1beeab);}return _0x1f1168[_0xd0d5('0x19')](_0x1beeab)['end']();};}function respondWithResult(_0x4e0926,_0x4b032d){_0x4b032d=_0x4b032d||0xc8;return function(_0x4c6845){if(_0x4c6845){return _0x4e0926['status'](_0x4b032d)[_0xd0d5('0x1a')](_0x4c6845);}};}function respondWithFilteredResult(_0x2d6a3c,_0x83d332){return function(_0x1be161){if(_0x1be161){var _0x1920d2=typeof _0x83d332[_0xd0d5('0x1b')]===_0xd0d5('0x1c')&&typeof _0x83d332[_0xd0d5('0x1d')]===_0xd0d5('0x1c');var _0x412530=_0x1be161[_0xd0d5('0x1e')];var _0x66b995=_0x1920d2?0x0:_0x83d332['offset'];var _0x2a4906=_0x1920d2?_0x1be161[_0xd0d5('0x1e')]:_0x83d332[_0xd0d5('0x1b')]+_0x83d332[_0xd0d5('0x1d')];var _0x1a221e;if(_0x2a4906>=_0x412530){_0x2a4906=_0x412530;_0x1a221e=0xc8;}else{_0x1a221e=0xce;}_0x2d6a3c[_0xd0d5('0x19')](_0x1a221e);return _0x2d6a3c['set'](_0xd0d5('0x1f'),_0x66b995+'-'+_0x2a4906+'/'+_0x412530)['json'](_0x1be161);}return null;};}function patchUpdates(_0x1c19bc){return function(_0x69cf6){try{jsonpatch[_0xd0d5('0x20')](_0x69cf6,_0x1c19bc,!![]);}catch(_0x1544be){return BPromise[_0xd0d5('0x21')](_0x1544be);}return _0x69cf6[_0xd0d5('0x22')]();};}function saveUpdates(_0x2a3d19,_0x2889bc){return function(_0x20284b){if(_0x20284b){return _0x20284b[_0xd0d5('0x23')](_0x2a3d19)['then'](function(_0x17b0ff){return _0x17b0ff;});}return null;};}function removeEntity(_0x121bda,_0x56f2d2){return function(_0x4fd416){if(_0x4fd416){return _0x4fd416[_0xd0d5('0x24')]()[_0xd0d5('0x25')](function(){_0x121bda[_0xd0d5('0x19')](0xcc)[_0xd0d5('0x26')]();});}};}function handleEntityNotFound(_0x203489,_0x3bbe7d){return function(_0x457b9e){if(!_0x457b9e){_0x203489[_0xd0d5('0x18')](0x194);}return _0x457b9e;};}function handleError(_0x4dfe7f,_0x5cd01a){_0x5cd01a=_0x5cd01a||0x1f4;return function(_0x2af1bc){logger[_0xd0d5('0x27')](_0x2af1bc[_0xd0d5('0x28')]);if(_0x2af1bc['name']){delete _0x2af1bc[_0xd0d5('0x29')];}_0x4dfe7f['status'](_0x5cd01a)[_0xd0d5('0x2a')](_0x2af1bc);};}exports[_0xd0d5('0x2b')]=function(_0x51eb6f,_0x214660){var _0x1a0278={},_0x4d3c7f={},_0x1d3081={'count':0x0,'rows':[]};var _0x3aa9e8=_['map'](db['ZohoConfiguration'][_0xd0d5('0x2c')],function(_0x555ac5){return{'name':_0x555ac5[_0xd0d5('0x2d')],'type':_0x555ac5[_0xd0d5('0x2e')][_0xd0d5('0x2f')]};});_0x4d3c7f[_0xd0d5('0x30')]=_[_0xd0d5('0x31')](_0x3aa9e8,_0xd0d5('0x29'));_0x4d3c7f['query']=_[_0xd0d5('0x32')](_0x51eb6f[_0xd0d5('0x33')]);_0x4d3c7f[_0xd0d5('0x34')]=_[_0xd0d5('0x35')](_0x4d3c7f[_0xd0d5('0x30')],_0x4d3c7f['query']);_0x1a0278[_0xd0d5('0x36')]=_[_0xd0d5('0x35')](_0x4d3c7f[_0xd0d5('0x30')],qs[_0xd0d5('0x37')](_0x51eb6f[_0xd0d5('0x33')][_0xd0d5('0x37')]));_0x1a0278['attributes']=_0x1a0278[_0xd0d5('0x36')][_0xd0d5('0x38')]?_0x1a0278[_0xd0d5('0x36')]:_0x4d3c7f[_0xd0d5('0x30')];if(!_0x51eb6f[_0xd0d5('0x33')]['hasOwnProperty'](_0xd0d5('0x39'))){_0x1a0278[_0xd0d5('0x1d')]=qs[_0xd0d5('0x1d')](_0x51eb6f[_0xd0d5('0x33')][_0xd0d5('0x1d')]);_0x1a0278['offset']=qs[_0xd0d5('0x1b')](_0x51eb6f[_0xd0d5('0x33')][_0xd0d5('0x1b')]);}_0x1a0278['order']=qs['sort'](_0x51eb6f['query'][_0xd0d5('0x3a')]);_0x1a0278[_0xd0d5('0x3b')]=qs[_0xd0d5('0x34')](_[_0xd0d5('0x3c')](_0x51eb6f[_0xd0d5('0x33')],_0x4d3c7f[_0xd0d5('0x34')]),_0x3aa9e8);if(_0x51eb6f[_0xd0d5('0x33')][_0xd0d5('0x3d')]){_0x1a0278[_0xd0d5('0x3b')]=_['merge'](_0x1a0278[_0xd0d5('0x3b')],{'$or':_[_0xd0d5('0x31')](_0x3aa9e8,function(_0x51d7b8){if(_0x51d7b8[_0xd0d5('0x2e')]!==_0xd0d5('0x3e')){var _0x2527fd={};_0x2527fd[_0x51d7b8['name']]={'$like':'%'+_0x51eb6f[_0xd0d5('0x33')]['filter']+'%'};return _0x2527fd;}})});}_0x1a0278=_[_0xd0d5('0x3f')]({},_0x1a0278,_0x51eb6f['options']);var _0x2331f6={'where':_0x1a0278['where']};return db['ZohoConfiguration'][_0xd0d5('0x1e')](_0x2331f6)[_0xd0d5('0x25')](function(_0x538ce9){_0x1d3081['count']=_0x538ce9;if(_0x51eb6f[_0xd0d5('0x33')][_0xd0d5('0x40')]){_0x1a0278[_0xd0d5('0x41')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0xd0d5('0x42')](_0x1a0278);})[_0xd0d5('0x25')](function(_0x2b7fd7){_0x1d3081[_0xd0d5('0x43')]=_0x2b7fd7;return _0x1d3081;})['then'](respondWithFilteredResult(_0x214660,_0x1a0278))['catch'](handleError(_0x214660,null));};exports[_0xd0d5('0x44')]=function(_0xa9f589,_0x588cee){var _0x43d27b={'raw':![],'where':{'id':_0xa9f589[_0xd0d5('0x45')]['id']}},_0x4e012b={};_0x4e012b[_0xd0d5('0x30')]=_[_0xd0d5('0x32')](db[_0xd0d5('0x46')][_0xd0d5('0x2c')]);_0x4e012b['query']=_[_0xd0d5('0x32')](_0xa9f589['query']);_0x4e012b['filters']=_['intersection'](_0x4e012b['model'],_0x4e012b['query']);_0x43d27b[_0xd0d5('0x36')]=_[_0xd0d5('0x35')](_0x4e012b[_0xd0d5('0x30')],qs[_0xd0d5('0x37')](_0xa9f589[_0xd0d5('0x33')][_0xd0d5('0x37')]));_0x43d27b['attributes']=_0x43d27b[_0xd0d5('0x36')]['length']?_0x43d27b['attributes']:_0x4e012b[_0xd0d5('0x30')];if(_0xa9f589['query'][_0xd0d5('0x40')]){_0x43d27b[_0xd0d5('0x41')]=[{'all':!![]}];}_0x43d27b=_[_0xd0d5('0x3f')]({},_0x43d27b,_0xa9f589[_0xd0d5('0x47')]);return db[_0xd0d5('0x46')][_0xd0d5('0x48')](_0x43d27b)['then'](handleEntityNotFound(_0x588cee,null))[_0xd0d5('0x25')](respondWithResult(_0x588cee,null))[_0xd0d5('0x49')](handleError(_0x588cee,null));};exports[_0xd0d5('0x4a')]=function(_0x1e93de,_0x352baa){return db[_0xd0d5('0x46')][_0xd0d5('0x4a')](_0x1e93de[_0xd0d5('0x4b')],{})[_0xd0d5('0x25')](respondWithResult(_0x352baa,0xc9))[_0xd0d5('0x49')](handleError(_0x352baa,null));};exports['update']=function(_0x228b3a,_0x5192a2){if(_0x228b3a[_0xd0d5('0x4b')]['id']){delete _0x228b3a['body']['id'];}return db[_0xd0d5('0x46')][_0xd0d5('0x48')]({'where':{'id':_0x228b3a['params']['id']}})[_0xd0d5('0x25')](handleEntityNotFound(_0x5192a2,null))[_0xd0d5('0x25')](saveUpdates(_0x228b3a[_0xd0d5('0x4b')],null))['then'](respondWithResult(_0x5192a2,null))[_0xd0d5('0x49')](handleError(_0x5192a2,null));};exports[_0xd0d5('0x24')]=function(_0x146d7e,_0x3695dd){return db[_0xd0d5('0x46')][_0xd0d5('0x48')]({'where':{'id':_0x146d7e[_0xd0d5('0x45')]['id']}})['then'](handleEntityNotFound(_0x3695dd,null))[_0xd0d5('0x25')](removeEntity(_0x3695dd,null))['catch'](handleError(_0x3695dd,null));};exports[_0xd0d5('0x4c')]=function(_0x4b67c9,_0x3645c0,_0x57fd24){var _0x1e57b2={};var _0x2236ca={};var _0x5e7878;var _0x29ba04;return db[_0xd0d5('0x46')][_0xd0d5('0x4d')]({'where':{'id':_0x4b67c9[_0xd0d5('0x45')]['id']}})[_0xd0d5('0x25')](handleEntityNotFound(_0x3645c0,null))[_0xd0d5('0x25')](function(_0x84b4ef){if(_0x84b4ef){_0x5e7878=_0x84b4ef;_0x2236ca['model']=_[_0xd0d5('0x32')](db[_0xd0d5('0x4e')][_0xd0d5('0x2c')]);_0x2236ca['query']=_['keys'](_0x4b67c9['query']);_0x2236ca[_0xd0d5('0x34')]=_[_0xd0d5('0x35')](_0x2236ca[_0xd0d5('0x30')],_0x2236ca[_0xd0d5('0x33')]);_0x1e57b2[_0xd0d5('0x36')]=_['intersection'](_0x2236ca[_0xd0d5('0x30')],qs['fields'](_0x4b67c9[_0xd0d5('0x33')]['fields']));_0x1e57b2[_0xd0d5('0x36')]=_0x1e57b2[_0xd0d5('0x36')][_0xd0d5('0x38')]?_0x1e57b2[_0xd0d5('0x36')]:_0x2236ca[_0xd0d5('0x30')];_0x1e57b2[_0xd0d5('0x4f')]=qs[_0xd0d5('0x3a')](_0x4b67c9['query'][_0xd0d5('0x3a')]);_0x1e57b2[_0xd0d5('0x3b')]=qs[_0xd0d5('0x34')](_[_0xd0d5('0x3c')](_0x4b67c9['query'],_0x2236ca[_0xd0d5('0x34')]));if(_0x4b67c9[_0xd0d5('0x33')][_0xd0d5('0x3d')]){_0x1e57b2[_0xd0d5('0x3b')]=_[_0xd0d5('0x3f')](_0x1e57b2[_0xd0d5('0x3b')],{'$or':_[_0xd0d5('0x31')](_0x1e57b2[_0xd0d5('0x36')],function(_0x10d479){var _0x4fde17={};_0x4fde17[_0x10d479]={'$like':'%'+_0x4b67c9[_0xd0d5('0x33')]['filter']+'%'};return _0x4fde17;})});}_0x1e57b2=_['merge']({},_0x1e57b2,_0x4b67c9[_0xd0d5('0x47')]);return _0x5e7878[_0xd0d5('0x4c')](_0x1e57b2);}})[_0xd0d5('0x25')](function(_0x1a93f3){if(_0x1a93f3){_0x29ba04=_0x1a93f3[_0xd0d5('0x38')];if(!_0x4b67c9[_0xd0d5('0x33')][_0xd0d5('0x50')](_0xd0d5('0x39'))){_0x1e57b2[_0xd0d5('0x1d')]=qs['limit'](_0x4b67c9[_0xd0d5('0x33')][_0xd0d5('0x1d')]);_0x1e57b2[_0xd0d5('0x1b')]=qs['offset'](_0x4b67c9[_0xd0d5('0x33')][_0xd0d5('0x1b')]);}return _0x5e7878['getFields'](_0x1e57b2);}})[_0xd0d5('0x25')](function(_0x253f85){if(_0x253f85){return _0x253f85?{'count':_0x29ba04,'rows':_0x253f85}:null;}})['then'](respondWithResult(_0x3645c0,null))[_0xd0d5('0x49')](handleError(_0x3645c0,null));};exports[_0xd0d5('0x51')]=function(_0x3fdc01,_0x1bcea3,_0x381a3a){var _0x33a55f={};var _0x5ab42f={};var _0x1a2436;var _0x1a5f11;return db[_0xd0d5('0x46')][_0xd0d5('0x4d')]({'where':{'id':_0x3fdc01[_0xd0d5('0x45')]['id']}})[_0xd0d5('0x25')](handleEntityNotFound(_0x1bcea3,null))[_0xd0d5('0x25')](function(_0x2c07d5){if(_0x2c07d5){_0x1a2436=_0x2c07d5;_0x5ab42f[_0xd0d5('0x30')]=_[_0xd0d5('0x32')](db[_0xd0d5('0x4e')][_0xd0d5('0x2c')]);_0x5ab42f['query']=_[_0xd0d5('0x32')](_0x3fdc01[_0xd0d5('0x33')]);_0x5ab42f['filters']=_[_0xd0d5('0x35')](_0x5ab42f[_0xd0d5('0x30')],_0x5ab42f['query']);_0x33a55f[_0xd0d5('0x36')]=_[_0xd0d5('0x35')](_0x5ab42f[_0xd0d5('0x30')],qs[_0xd0d5('0x37')](_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x37')]));_0x33a55f[_0xd0d5('0x36')]=_0x33a55f[_0xd0d5('0x36')][_0xd0d5('0x38')]?_0x33a55f['attributes']:_0x5ab42f[_0xd0d5('0x30')];_0x33a55f['order']=qs[_0xd0d5('0x3a')](_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x3a')]);_0x33a55f['where']=qs[_0xd0d5('0x34')](_['pick'](_0x3fdc01[_0xd0d5('0x33')],_0x5ab42f[_0xd0d5('0x34')]));if(_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x3d')]){_0x33a55f[_0xd0d5('0x3b')]=_[_0xd0d5('0x3f')](_0x33a55f['where'],{'$or':_[_0xd0d5('0x31')](_0x33a55f[_0xd0d5('0x36')],function(_0x42d735){var _0x53166c={};_0x53166c[_0x42d735]={'$like':'%'+_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x3d')]+'%'};return _0x53166c;})});}_0x33a55f=_[_0xd0d5('0x3f')]({},_0x33a55f,_0x3fdc01['options']);return _0x1a2436['getSubjects'](_0x33a55f);}})[_0xd0d5('0x25')](function(_0x5e027e){if(_0x5e027e){_0x1a5f11=_0x5e027e[_0xd0d5('0x38')];if(!_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x50')](_0xd0d5('0x39'))){_0x33a55f[_0xd0d5('0x1d')]=qs[_0xd0d5('0x1d')](_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x1d')]);_0x33a55f[_0xd0d5('0x1b')]=qs[_0xd0d5('0x1b')](_0x3fdc01[_0xd0d5('0x33')][_0xd0d5('0x1b')]);}return _0x1a2436[_0xd0d5('0x51')](_0x33a55f);}})[_0xd0d5('0x25')](function(_0x11cce3){if(_0x11cce3){return _0x11cce3?{'count':_0x1a5f11,'rows':_0x11cce3}:null;}})['then'](respondWithResult(_0x1bcea3,null))[_0xd0d5('0x49')](handleError(_0x1bcea3,null));};exports[_0xd0d5('0x52')]=function(_0x1fdb5d,_0x5da628,_0x259578){var _0xa1e0dc={};var _0x154aa1={};var _0x567969;var _0x3ee34c;return db[_0xd0d5('0x46')][_0xd0d5('0x4d')]({'where':{'id':_0x1fdb5d[_0xd0d5('0x45')]['id']}})['then'](handleEntityNotFound(_0x5da628,null))['then'](function(_0x52694c){if(_0x52694c){_0x567969=_0x52694c;_0x154aa1[_0xd0d5('0x30')]=_[_0xd0d5('0x32')](db[_0xd0d5('0x4e')][_0xd0d5('0x2c')]);_0x154aa1[_0xd0d5('0x33')]=_[_0xd0d5('0x32')](_0x1fdb5d[_0xd0d5('0x33')]);_0x154aa1[_0xd0d5('0x34')]=_[_0xd0d5('0x35')](_0x154aa1[_0xd0d5('0x30')],_0x154aa1[_0xd0d5('0x33')]);_0xa1e0dc[_0xd0d5('0x36')]=_[_0xd0d5('0x35')](_0x154aa1[_0xd0d5('0x30')],qs['fields'](_0x1fdb5d[_0xd0d5('0x33')]['fields']));_0xa1e0dc['attributes']=_0xa1e0dc[_0xd0d5('0x36')][_0xd0d5('0x38')]?_0xa1e0dc['attributes']:_0x154aa1[_0xd0d5('0x30')];_0xa1e0dc['order']=qs[_0xd0d5('0x3a')](_0x1fdb5d[_0xd0d5('0x33')][_0xd0d5('0x3a')]);_0xa1e0dc[_0xd0d5('0x3b')]=qs[_0xd0d5('0x34')](_['pick'](_0x1fdb5d[_0xd0d5('0x33')],_0x154aa1[_0xd0d5('0x34')]));if(_0x1fdb5d['query'][_0xd0d5('0x3d')]){_0xa1e0dc[_0xd0d5('0x3b')]=_[_0xd0d5('0x3f')](_0xa1e0dc[_0xd0d5('0x3b')],{'$or':_[_0xd0d5('0x31')](_0xa1e0dc[_0xd0d5('0x36')],function(_0x2d1b1a){var _0x31068c={};_0x31068c[_0x2d1b1a]={'$like':'%'+_0x1fdb5d['query']['filter']+'%'};return _0x31068c;})});}_0xa1e0dc=_[_0xd0d5('0x3f')]({},_0xa1e0dc,_0x1fdb5d[_0xd0d5('0x47')]);return _0x567969[_0xd0d5('0x52')](_0xa1e0dc);}})[_0xd0d5('0x25')](function(_0x2aab45){if(_0x2aab45){_0x3ee34c=_0x2aab45[_0xd0d5('0x38')];if(!_0x1fdb5d[_0xd0d5('0x33')]['hasOwnProperty'](_0xd0d5('0x39'))){_0xa1e0dc[_0xd0d5('0x1d')]=qs[_0xd0d5('0x1d')](_0x1fdb5d['query']['limit']);_0xa1e0dc[_0xd0d5('0x1b')]=qs[_0xd0d5('0x1b')](_0x1fdb5d[_0xd0d5('0x33')][_0xd0d5('0x1b')]);}return _0x567969[_0xd0d5('0x52')](_0xa1e0dc);}})[_0xd0d5('0x25')](function(_0x4ac321){if(_0x4ac321){return _0x4ac321?{'count':_0x3ee34c,'rows':_0x4ac321}:null;}})[_0xd0d5('0x25')](respondWithResult(_0x5da628,null))[_0xd0d5('0x49')](handleError(_0x5da628,null));};
\ No newline at end of file
index c3b489a..9e32c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc1=['./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','util','moment','bluebird','request-promise','path','rimraf'];(function(_0x533219,_0x493b82){var _0x3a49ee=function(_0x190d39){while(--_0x190d39){_0x533219['push'](_0x533219['shift']());}};_0x3a49ee(++_0x493b82);}(_0x6dc1,0x89));var _0x16dc=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6dc1[_0x31e29a];return _0x32d892;};'use strict';var _=require('lodash');var util=require(_0x16dc('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x16dc('0x1'));var BPromise=require(_0x16dc('0x2'));var rp=require(_0x16dc('0x3'));var fs=require('fs');var path=require(_0x16dc('0x4'));var rimraf=require(_0x16dc('0x5'));var config=require('../../config/environment');var attributes=require(_0x16dc('0x6'));module[_0x16dc('0x7')]=function(_0x56944b,_0x549601){return _0x56944b[_0x16dc('0x8')](_0x16dc('0x9'),attributes,{'tableName':_0x16dc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd67=['lodash','util','moment','request-promise','path','rimraf','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations'];(function(_0x422ea7,_0x2621c2){var _0x3ad7e4=function(_0x48067d){while(--_0x48067d){_0x422ea7['push'](_0x422ea7['shift']());}};_0x3ad7e4(++_0x2621c2);}(_0xcd67,0x79));var _0x7cd6=function(_0x12e450,_0x5e84f9){_0x12e450=_0x12e450-0x0;var _0x34ec20=_0xcd67[_0x12e450];return _0x34ec20;};'use strict';var _=require(_0x7cd6('0x0'));var util=require(_0x7cd6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7cd6('0x2'));var BPromise=require('bluebird');var rp=require(_0x7cd6('0x3'));var fs=require('fs');var path=require(_0x7cd6('0x4'));var rimraf=require(_0x7cd6('0x5'));var config=require(_0x7cd6('0x6'));var attributes=require('./intZohoConfiguration.attributes');module[_0x7cd6('0x7')]=function(_0x2836d7,_0x58f743){return _0x2836d7[_0x7cd6('0x8')](_0x7cd6('0x9'),attributes,{'tableName':_0x7cd6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6a3983..d97a8fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa701=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0x5918ee,_0x5ed9b1){var _0x1974ce=function(_0x465d2b){while(--_0x465d2b){_0x5918ee['push'](_0x5918ee['shift']());}};_0x1974ce(++_0x5ed9b1);}(_0xa701,0x13b));var _0x1a70=function(_0x4dabf0,_0x42a38a){_0x4dabf0=_0x4dabf0-0x0;var _0x3adbc9=_0xa701[_0x4dabf0];return _0x3adbc9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1a70('0x0'));var BPromise=require(_0x1a70('0x1'));var rs=require(_0x1a70('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a70('0x3'))['db'];var utils=require(_0x1a70('0x4'));var logger=require(_0x1a70('0x5'))(_0x1a70('0x6'));var config=require('../../config/environment');var jayson=require(_0x1a70('0x7'));var client=jayson[_0x1a70('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x44b0dd,_0x30de28,_0x3e8405){return new BPromise(function(_0x37e95c,_0x2e8fdd){return client[_0x1a70('0x9')](_0x44b0dd,_0x3e8405)[_0x1a70('0xa')](function(_0xd1d90b){logger['info'](_0x1a70('0xb'),_0x30de28,'request\x20sent');logger[_0x1a70('0xc')](_0x1a70('0xd'),_0x30de28,_0x1a70('0xe'),JSON[_0x1a70('0xf')](_0xd1d90b));if(_0xd1d90b[_0x1a70('0x10')]){if(_0xd1d90b[_0x1a70('0x10')]['code']===0x1f4){logger[_0x1a70('0x10')](_0x1a70('0xb'),_0x30de28,_0xd1d90b[_0x1a70('0x10')]['message']);return _0x2e8fdd(_0xd1d90b[_0x1a70('0x10')][_0x1a70('0x11')]);}logger[_0x1a70('0x10')](_0x1a70('0xb'),_0x30de28,_0xd1d90b[_0x1a70('0x10')][_0x1a70('0x11')]);return _0x37e95c(_0xd1d90b['error'][_0x1a70('0x11')]);}else{logger[_0x1a70('0x12')]('ZohoConfiguration,\x20%s,\x20%s',_0x30de28,_0x1a70('0xe'));_0x37e95c(_0xd1d90b[_0x1a70('0x13')][_0x1a70('0x11')]);}})[_0x1a70('0x14')](function(_0x360abc){logger[_0x1a70('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x30de28,_0x360abc);_0x2e8fdd(_0x360abc);});});}
\ No newline at end of file
+var _0xf281=['lodash','util','bluebird','randomstring','../../config/utils','rpc','jayson/promise','http','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoConfiguration,\x20%s,\x20%s','message','result','catch'];(function(_0xee3b34,_0x283f44){var _0x44c11e=function(_0x1423b6){while(--_0x1423b6){_0xee3b34['push'](_0xee3b34['shift']());}};_0x44c11e(++_0x283f44);}(_0xf281,0x17c));var _0x1f28=function(_0x2a9422,_0x115cd4){_0x2a9422=_0x2a9422-0x0;var _0x36232f=_0xf281[_0x2a9422];return _0x36232f;};'use strict';var _=require(_0x1f28('0x0'));var util=require(_0x1f28('0x1'));var moment=require('moment');var BPromise=require(_0x1f28('0x2'));var rs=require(_0x1f28('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1f28('0x4'));var logger=require('../../config/logger')(_0x1f28('0x5'));var config=require('../../config/environment');var jayson=require(_0x1f28('0x6'));var client=jayson['client'][_0x1f28('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x37488b,_0x211089,_0x161007){return new BPromise(function(_0x3d55d2,_0x1c23b8){return client['request'](_0x37488b,_0x161007)[_0x1f28('0x8')](function(_0x5e6560){logger[_0x1f28('0x9')]('ZohoConfiguration,\x20%s,\x20%s',_0x211089,_0x1f28('0xa'));logger[_0x1f28('0xb')](_0x1f28('0xc'),_0x211089,_0x1f28('0xa'),JSON[_0x1f28('0xd')](_0x5e6560));if(_0x5e6560[_0x1f28('0xe')]){if(_0x5e6560[_0x1f28('0xe')][_0x1f28('0xf')]===0x1f4){logger[_0x1f28('0xe')](_0x1f28('0x10'),_0x211089,_0x5e6560[_0x1f28('0xe')][_0x1f28('0x11')]);return _0x1c23b8(_0x5e6560[_0x1f28('0xe')]['message']);}logger[_0x1f28('0xe')](_0x1f28('0x10'),_0x211089,_0x5e6560[_0x1f28('0xe')][_0x1f28('0x11')]);return _0x3d55d2(_0x5e6560['error'][_0x1f28('0x11')]);}else{logger['info'](_0x1f28('0x10'),_0x211089,_0x1f28('0xa'));_0x3d55d2(_0x5e6560[_0x1f28('0x12')][_0x1f28('0x11')]);}})[_0x1f28('0x13')](function(_0x3c8881){logger[_0x1f28('0xe')](_0x1f28('0x10'),_0x211089,_0x3c8881);_0x1c23b8(_0x3c8881);});});}
\ No newline at end of file
index ba47dd9..5f96005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d6=['exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','create','put','update','delete','destroy'];(function(_0x15a25a,_0x19c429){var _0x1d25f8=function(_0x1bbf5c){while(--_0x1bbf5c){_0x15a25a['push'](_0x15a25a['shift']());}};_0x1d25f8(++_0x19c429);}(_0x45d6,0x121));var _0x645d=function(_0x196138,_0x585238){_0x196138=_0x196138-0x0;var _0x3d5b50=_0x45d6[_0x196138];return _0x3d5b50;};'use strict';var multer=require(_0x645d('0x0'));var util=require(_0x645d('0x1'));var path=require('path');var timeout=require(_0x645d('0x2'));var express=require(_0x645d('0x3'));var router=express[_0x645d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x645d('0x5'));var config=require(_0x645d('0x6'));var controller=require('./intZohoField.controller');router[_0x645d('0x7')]('/',auth[_0x645d('0x8')](),controller['index']);router[_0x645d('0x7')](_0x645d('0x9'),auth[_0x645d('0x8')](),controller['show']);router['post']('/',auth[_0x645d('0x8')](),controller[_0x645d('0xa')]);router[_0x645d('0xb')](_0x645d('0x9'),auth[_0x645d('0x8')](),controller[_0x645d('0xc')]);router[_0x645d('0xd')](_0x645d('0x9'),auth[_0x645d('0x8')](),controller[_0x645d('0xe')]);module[_0x645d('0xf')]=router;
\ No newline at end of file
+var _0x1618=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','update'];(function(_0x1b6cc4,_0x3d83fa){var _0x4b394d=function(_0x56ba1a){while(--_0x56ba1a){_0x1b6cc4['push'](_0x1b6cc4['shift']());}};_0x4b394d(++_0x3d83fa);}(_0x1618,0x87));var _0x8161=function(_0x1e4305,_0x5b1de6){_0x1e4305=_0x1e4305-0x0;var _0x27b4ec=_0x1618[_0x1e4305];return _0x27b4ec;};'use strict';var multer=require(_0x8161('0x0'));var util=require(_0x8161('0x1'));var path=require('path');var timeout=require(_0x8161('0x2'));var express=require(_0x8161('0x3'));var router=express[_0x8161('0x4')]();var fs_extra=require(_0x8161('0x5'));var auth=require(_0x8161('0x6'));var interaction=require(_0x8161('0x7'));var config=require(_0x8161('0x8'));var controller=require('./intZohoField.controller');router[_0x8161('0x9')]('/',auth[_0x8161('0xa')](),controller[_0x8161('0xb')]);router[_0x8161('0x9')](_0x8161('0xc'),auth['isAuthenticated'](),controller[_0x8161('0xd')]);router[_0x8161('0xe')]('/',auth[_0x8161('0xa')](),controller[_0x8161('0xf')]);router['put'](_0x8161('0xc'),auth[_0x8161('0xa')](),controller[_0x8161('0x10')]);router['delete']('/:id',auth[_0x8161('0xa')](),controller[_0x8161('0x11')]);module[_0x8161('0x12')]=router;
\ No newline at end of file
index 20c7835..6350b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f97=['ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports'];(function(_0x2a12d8,_0x14ed9a){var _0x138052=function(_0xa0387a){while(--_0xa0387a){_0x2a12d8['push'](_0x2a12d8['shift']());}};_0x138052(++_0x14ed9a);}(_0x1f97,0x1c0));var _0x71f9=function(_0x3655a0,_0x3abca0){_0x3655a0=_0x3655a0-0x0;var _0x1b09af=_0x1f97[_0x3655a0];return _0x1b09af;};'use strict';var Sequelize=require(_0x71f9('0x0'));module[_0x71f9('0x1')]={'type':{'type':Sequelize[_0x71f9('0x2')](_0x71f9('0x3'),'variable',_0x71f9('0x4'),_0x71f9('0x5'),_0x71f9('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x71f9('0x7')]},'key':{'type':Sequelize[_0x71f9('0x7')]},'keyType':{'type':Sequelize[_0x71f9('0x2')]('string',_0x71f9('0x8'),_0x71f9('0x4'))},'keyContent':{'type':Sequelize[_0x71f9('0x7')]},'idField':{'type':Sequelize[_0x71f9('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x71f9('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x71f9('0x7')]}};
\ No newline at end of file
+var _0x215f=['variable','picklist','STRING','customVariable','sequelize','exports','ENUM','string'];(function(_0x3bec0a,_0x31a063){var _0x49b5fb=function(_0x227538){while(--_0x227538){_0x3bec0a['push'](_0x3bec0a['shift']());}};_0x49b5fb(++_0x31a063);}(_0x215f,0x14c));var _0xf215=function(_0x276c0b,_0x93d21){_0x276c0b=_0x276c0b-0x0;var _0x16e749=_0x215f[_0x276c0b];return _0x16e749;};'use strict';var Sequelize=require(_0xf215('0x0'));module[_0xf215('0x1')]={'type':{'type':Sequelize[_0xf215('0x2')](_0xf215('0x3'),_0xf215('0x4'),'customVariable','keyValue',_0xf215('0x5')),'defaultValue':_0xf215('0x3')},'content':{'type':Sequelize[_0xf215('0x6')]},'key':{'type':Sequelize[_0xf215('0x6')]},'keyType':{'type':Sequelize[_0xf215('0x2')](_0xf215('0x3'),_0xf215('0x4'),_0xf215('0x7'))},'keyContent':{'type':Sequelize[_0xf215('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf215('0x6')]}};
\ No newline at end of file
index f6cee26..b43c187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6973=['catch','show','params','keys','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','status','end','json','offset','limit','count','set','apply','save','update','then','sendStatus','error','send','map','ZohoField','rawAttributes','fieldName','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','name','options','include','rows'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x6973,0x1f3));var _0x3697=function(_0x2e6def,_0x490582){_0x2e6def=_0x2e6def-0x0;var _0x52ca11=_0x6973[_0x2e6def];return _0x52ca11;};'use strict';var emlformat=require(_0x3697('0x0'));var rimraf=require(_0x3697('0x1'));var zipdir=require(_0x3697('0x2'));var jsonpatch=require(_0x3697('0x3'));var rp=require(_0x3697('0x4'));var moment=require(_0x3697('0x5'));var BPromise=require(_0x3697('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x3697('0x7'));var csv=require(_0x3697('0x8'));var ejs=require(_0x3697('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3697('0xa'));var squel=require(_0x3697('0xb'));var crypto=require(_0x3697('0xc'));var jsforce=require(_0x3697('0xd'));var deskjs=require(_0x3697('0xe'));var toCsv=require(_0x3697('0x8'));var querystring=require('querystring');var Papa=require(_0x3697('0xf'));var Redis=require(_0x3697('0x10'));var authService=require(_0x3697('0x11'));var qs=require(_0x3697('0x12'));var as=require(_0x3697('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3697('0x14'));var utils=require(_0x3697('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3697('0x16'))['db'];function respondWithStatusCode(_0x3dda91,_0x3ff808){_0x3ff808=_0x3ff808||0xcc;return function(_0xafd35e){if(_0xafd35e){return _0x3dda91['sendStatus'](_0x3ff808);}return _0x3dda91[_0x3697('0x17')](_0x3ff808)[_0x3697('0x18')]();};}function respondWithResult(_0xae1231,_0x25a65c){_0x25a65c=_0x25a65c||0xc8;return function(_0x1ec6c7){if(_0x1ec6c7){return _0xae1231[_0x3697('0x17')](_0x25a65c)[_0x3697('0x19')](_0x1ec6c7);}};}function respondWithFilteredResult(_0x4d92b0,_0x565561){return function(_0x4fdb6b){if(_0x4fdb6b){var _0x49cbc0=typeof _0x565561[_0x3697('0x1a')]==='undefined'&&typeof _0x565561[_0x3697('0x1b')]==='undefined';var _0x78f64a=_0x4fdb6b['count'];var _0x112efb=_0x49cbc0?0x0:_0x565561[_0x3697('0x1a')];var _0x13f558=_0x49cbc0?_0x4fdb6b[_0x3697('0x1c')]:_0x565561[_0x3697('0x1a')]+_0x565561['limit'];var _0x15ebd3;if(_0x13f558>=_0x78f64a){_0x13f558=_0x78f64a;_0x15ebd3=0xc8;}else{_0x15ebd3=0xce;}_0x4d92b0['status'](_0x15ebd3);return _0x4d92b0[_0x3697('0x1d')]('Content-Range',_0x112efb+'-'+_0x13f558+'/'+_0x78f64a)[_0x3697('0x19')](_0x4fdb6b);}return null;};}function patchUpdates(_0x279fa3){return function(_0x862a7c){try{jsonpatch[_0x3697('0x1e')](_0x862a7c,_0x279fa3,!![]);}catch(_0x57908a){return BPromise['reject'](_0x57908a);}return _0x862a7c[_0x3697('0x1f')]();};}function saveUpdates(_0x5f101f,_0x1f3cca){return function(_0x244599){if(_0x244599){return _0x244599[_0x3697('0x20')](_0x5f101f)[_0x3697('0x21')](function(_0xc19e4a){return _0xc19e4a;});}return null;};}function removeEntity(_0x55b735,_0x3c3501){return function(_0x27cb99){if(_0x27cb99){return _0x27cb99['destroy']()[_0x3697('0x21')](function(){_0x55b735['status'](0xcc)[_0x3697('0x18')]();});}};}function handleEntityNotFound(_0x364e0b,_0x2a7663){return function(_0x34448a){if(!_0x34448a){_0x364e0b[_0x3697('0x22')](0x194);}return _0x34448a;};}function handleError(_0x2a6632,_0x937f){_0x937f=_0x937f||0x1f4;return function(_0x12b8e5){logger[_0x3697('0x23')](_0x12b8e5['stack']);if(_0x12b8e5['name']){delete _0x12b8e5['name'];}_0x2a6632[_0x3697('0x17')](_0x937f)[_0x3697('0x24')](_0x12b8e5);};}exports['index']=function(_0x3cf3ec,_0x2285d7){var _0x419458={},_0x5a75d8={},_0x5c7c42={'count':0x0,'rows':[]};var _0x595090=_[_0x3697('0x25')](db[_0x3697('0x26')][_0x3697('0x27')],function(_0x319847){return{'name':_0x319847[_0x3697('0x28')],'type':_0x319847['type']['key']};});_0x5a75d8[_0x3697('0x29')]=_[_0x3697('0x25')](_0x595090,'name');_0x5a75d8[_0x3697('0x2a')]=_['keys'](_0x3cf3ec['query']);_0x5a75d8['filters']=_[_0x3697('0x2b')](_0x5a75d8[_0x3697('0x29')],_0x5a75d8['query']);_0x419458[_0x3697('0x2c')]=_[_0x3697('0x2b')](_0x5a75d8['model'],qs[_0x3697('0x2d')](_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x2d')]));_0x419458[_0x3697('0x2c')]=_0x419458['attributes'][_0x3697('0x2e')]?_0x419458[_0x3697('0x2c')]:_0x5a75d8['model'];if(!_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x2f')](_0x3697('0x30'))){_0x419458[_0x3697('0x1b')]=qs['limit'](_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x1b')]);_0x419458['offset']=qs['offset'](_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x1a')]);}_0x419458[_0x3697('0x31')]=qs[_0x3697('0x32')](_0x3cf3ec['query'][_0x3697('0x32')]);_0x419458[_0x3697('0x33')]=qs[_0x3697('0x34')](_[_0x3697('0x35')](_0x3cf3ec[_0x3697('0x2a')],_0x5a75d8[_0x3697('0x34')]),_0x595090);if(_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x36')]){_0x419458[_0x3697('0x33')]=_[_0x3697('0x37')](_0x419458[_0x3697('0x33')],{'$or':_[_0x3697('0x25')](_0x595090,function(_0x154bef){if(_0x154bef[_0x3697('0x38')]!=='VIRTUAL'){var _0x14a2c6={};_0x14a2c6[_0x154bef[_0x3697('0x39')]]={'$like':'%'+_0x3cf3ec[_0x3697('0x2a')][_0x3697('0x36')]+'%'};return _0x14a2c6;}})});}_0x419458=_['merge']({},_0x419458,_0x3cf3ec[_0x3697('0x3a')]);var _0xa8b836={'where':_0x419458[_0x3697('0x33')]};return db[_0x3697('0x26')][_0x3697('0x1c')](_0xa8b836)[_0x3697('0x21')](function(_0x39b93f){_0x5c7c42[_0x3697('0x1c')]=_0x39b93f;if(_0x3cf3ec['query']['includeAll']){_0x419458[_0x3697('0x3b')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x419458);})[_0x3697('0x21')](function(_0x4137fe){_0x5c7c42[_0x3697('0x3c')]=_0x4137fe;return _0x5c7c42;})[_0x3697('0x21')](respondWithFilteredResult(_0x2285d7,_0x419458))[_0x3697('0x3d')](handleError(_0x2285d7,null));};exports[_0x3697('0x3e')]=function(_0x46fc80,_0x298034){var _0x51ea8a={'raw':!![],'where':{'id':_0x46fc80[_0x3697('0x3f')]['id']}},_0x4fc22f={};_0x4fc22f[_0x3697('0x29')]=_[_0x3697('0x40')](db[_0x3697('0x26')][_0x3697('0x27')]);_0x4fc22f[_0x3697('0x2a')]=_[_0x3697('0x40')](_0x46fc80[_0x3697('0x2a')]);_0x4fc22f[_0x3697('0x34')]=_['intersection'](_0x4fc22f[_0x3697('0x29')],_0x4fc22f['query']);_0x51ea8a[_0x3697('0x2c')]=_[_0x3697('0x2b')](_0x4fc22f['model'],qs[_0x3697('0x2d')](_0x46fc80['query'][_0x3697('0x2d')]));_0x51ea8a[_0x3697('0x2c')]=_0x51ea8a[_0x3697('0x2c')][_0x3697('0x2e')]?_0x51ea8a[_0x3697('0x2c')]:_0x4fc22f[_0x3697('0x29')];if(_0x46fc80['query'][_0x3697('0x41')]){_0x51ea8a[_0x3697('0x3b')]=[{'all':!![]}];}_0x51ea8a=_['merge']({},_0x51ea8a,_0x46fc80['options']);return db[_0x3697('0x26')][_0x3697('0x42')](_0x51ea8a)[_0x3697('0x21')](handleEntityNotFound(_0x298034,null))['then'](respondWithResult(_0x298034,null))['catch'](handleError(_0x298034,null));};exports[_0x3697('0x43')]=function(_0x39cbe0,_0x2c036c){return db[_0x3697('0x26')][_0x3697('0x43')](_0x39cbe0[_0x3697('0x44')],{})[_0x3697('0x21')](respondWithResult(_0x2c036c,0xc9))['catch'](handleError(_0x2c036c,null));};exports['update']=function(_0x35af76,_0x599361){if(_0x35af76['body']['id']){delete _0x35af76[_0x3697('0x44')]['id'];}return db[_0x3697('0x26')][_0x3697('0x42')]({'where':{'id':_0x35af76[_0x3697('0x3f')]['id']}})[_0x3697('0x21')](handleEntityNotFound(_0x599361,null))[_0x3697('0x21')](saveUpdates(_0x35af76['body'],null))[_0x3697('0x21')](respondWithResult(_0x599361,null))[_0x3697('0x3d')](handleError(_0x599361,null));};exports[_0x3697('0x45')]=function(_0x587685,_0x53a992){return db[_0x3697('0x26')][_0x3697('0x42')]({'where':{'id':_0x587685['params']['id']}})[_0x3697('0x21')](handleEntityNotFound(_0x53a992,null))[_0x3697('0x21')](removeEntity(_0x53a992,null))[_0x3697('0x3d')](handleError(_0x53a992,null));};
\ No newline at end of file
+var _0x7611=['model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','ZohoField','includeAll','include','findAll','rows','show','params','find','create','body','catch','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','save','destroy','then','end','error','stack','name','index','rawAttributes','fieldName','type','key'];(function(_0x3f576a,_0x592ba2){var _0x4872fb=function(_0x3d850b){while(--_0x3d850b){_0x3f576a['push'](_0x3f576a['shift']());}};_0x4872fb(++_0x592ba2);}(_0x7611,0xb1));var _0x1761=function(_0x1602a5,_0xd2cbbd){_0x1602a5=_0x1602a5-0x0;var _0x5776cc=_0x7611[_0x1602a5];return _0x5776cc;};'use strict';var emlformat=require(_0x1761('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1761('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1761('0x2'));var moment=require(_0x1761('0x3'));var BPromise=require(_0x1761('0x4'));var Mustache=require(_0x1761('0x5'));var util=require(_0x1761('0x6'));var path=require('path');var sox=require(_0x1761('0x7'));var csv=require(_0x1761('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1761('0x9'));var _=require(_0x1761('0xa'));var squel=require(_0x1761('0xb'));var crypto=require(_0x1761('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1761('0xd'));var toCsv=require(_0x1761('0x8'));var querystring=require('querystring');var Papa=require(_0x1761('0xe'));var Redis=require(_0x1761('0xf'));var authService=require(_0x1761('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1761('0x11'));var hardwareService=require(_0x1761('0x12'));var logger=require(_0x1761('0x13'))(_0x1761('0x14'));var utils=require(_0x1761('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1761('0x16'));var db=require(_0x1761('0x17'))['db'];function respondWithStatusCode(_0x4082db,_0x32df82){_0x32df82=_0x32df82||0xcc;return function(_0x3a92b1){if(_0x3a92b1){return _0x4082db[_0x1761('0x18')](_0x32df82);}return _0x4082db[_0x1761('0x19')](_0x32df82)['end']();};}function respondWithResult(_0x6c11b6,_0x32f2c9){_0x32f2c9=_0x32f2c9||0xc8;return function(_0x2e78ba){if(_0x2e78ba){return _0x6c11b6['status'](_0x32f2c9)[_0x1761('0x1a')](_0x2e78ba);}};}function respondWithFilteredResult(_0x518bea,_0x5428d6){return function(_0x28f132){if(_0x28f132){var _0x1144b3=typeof _0x5428d6[_0x1761('0x1b')]===_0x1761('0x1c')&&typeof _0x5428d6['limit']==='undefined';var _0x4a5140=_0x28f132[_0x1761('0x1d')];var _0x51ffcd=_0x1144b3?0x0:_0x5428d6[_0x1761('0x1b')];var _0x197280=_0x1144b3?_0x28f132['count']:_0x5428d6['offset']+_0x5428d6['limit'];var _0x5522b3;if(_0x197280>=_0x4a5140){_0x197280=_0x4a5140;_0x5522b3=0xc8;}else{_0x5522b3=0xce;}_0x518bea['status'](_0x5522b3);return _0x518bea[_0x1761('0x1e')](_0x1761('0x1f'),_0x51ffcd+'-'+_0x197280+'/'+_0x4a5140)[_0x1761('0x1a')](_0x28f132);}return null;};}function patchUpdates(_0x47e8b1){return function(_0x52ab60){try{jsonpatch['apply'](_0x52ab60,_0x47e8b1,!![]);}catch(_0x47e5bd){return BPromise[_0x1761('0x20')](_0x47e5bd);}return _0x52ab60[_0x1761('0x21')]();};}function saveUpdates(_0x4294c5,_0x4e8f4e){return function(_0x5292a9){if(_0x5292a9){return _0x5292a9['update'](_0x4294c5)['then'](function(_0x2c9f5f){return _0x2c9f5f;});}return null;};}function removeEntity(_0x107509,_0x5449ac){return function(_0x4a8702){if(_0x4a8702){return _0x4a8702[_0x1761('0x22')]()[_0x1761('0x23')](function(){_0x107509['status'](0xcc)[_0x1761('0x24')]();});}};}function handleEntityNotFound(_0x5d51b6,_0x24e6c6){return function(_0x23e186){if(!_0x23e186){_0x5d51b6[_0x1761('0x18')](0x194);}return _0x23e186;};}function handleError(_0x239a53,_0x1cf184){_0x1cf184=_0x1cf184||0x1f4;return function(_0x29f307){logger[_0x1761('0x25')](_0x29f307[_0x1761('0x26')]);if(_0x29f307[_0x1761('0x27')]){delete _0x29f307[_0x1761('0x27')];}_0x239a53[_0x1761('0x19')](_0x1cf184)['send'](_0x29f307);};}exports[_0x1761('0x28')]=function(_0x298eee,_0x432ee9){var _0x4d02dc={},_0xe33f0f={},_0x5cb574={'count':0x0,'rows':[]};var _0x548522=_['map'](db['ZohoField'][_0x1761('0x29')],function(_0x7e44cb){return{'name':_0x7e44cb[_0x1761('0x2a')],'type':_0x7e44cb[_0x1761('0x2b')][_0x1761('0x2c')]};});_0xe33f0f[_0x1761('0x2d')]=_['map'](_0x548522,_0x1761('0x27'));_0xe33f0f[_0x1761('0x2e')]=_[_0x1761('0x2f')](_0x298eee[_0x1761('0x2e')]);_0xe33f0f[_0x1761('0x30')]=_[_0x1761('0x31')](_0xe33f0f[_0x1761('0x2d')],_0xe33f0f['query']);_0x4d02dc['attributes']=_[_0x1761('0x31')](_0xe33f0f[_0x1761('0x2d')],qs['fields'](_0x298eee[_0x1761('0x2e')][_0x1761('0x32')]));_0x4d02dc['attributes']=_0x4d02dc['attributes'][_0x1761('0x33')]?_0x4d02dc[_0x1761('0x34')]:_0xe33f0f[_0x1761('0x2d')];if(!_0x298eee['query'][_0x1761('0x35')]('nolimit')){_0x4d02dc[_0x1761('0x36')]=qs['limit'](_0x298eee[_0x1761('0x2e')][_0x1761('0x36')]);_0x4d02dc[_0x1761('0x1b')]=qs[_0x1761('0x1b')](_0x298eee[_0x1761('0x2e')][_0x1761('0x1b')]);}_0x4d02dc[_0x1761('0x37')]=qs[_0x1761('0x38')](_0x298eee[_0x1761('0x2e')][_0x1761('0x38')]);_0x4d02dc['where']=qs[_0x1761('0x30')](_[_0x1761('0x39')](_0x298eee[_0x1761('0x2e')],_0xe33f0f['filters']),_0x548522);if(_0x298eee['query'][_0x1761('0x3a')]){_0x4d02dc[_0x1761('0x3b')]=_['merge'](_0x4d02dc['where'],{'$or':_['map'](_0x548522,function(_0x1f2e07){if(_0x1f2e07[_0x1761('0x2b')]!==_0x1761('0x3c')){var _0x25a34b={};_0x25a34b[_0x1f2e07['name']]={'$like':'%'+_0x298eee['query'][_0x1761('0x3a')]+'%'};return _0x25a34b;}})});}_0x4d02dc=_[_0x1761('0x3d')]({},_0x4d02dc,_0x298eee[_0x1761('0x3e')]);var _0x478950={'where':_0x4d02dc['where']};return db[_0x1761('0x3f')][_0x1761('0x1d')](_0x478950)[_0x1761('0x23')](function(_0x2b72ca){_0x5cb574[_0x1761('0x1d')]=_0x2b72ca;if(_0x298eee[_0x1761('0x2e')][_0x1761('0x40')]){_0x4d02dc[_0x1761('0x41')]=[{'all':!![]}];}return db[_0x1761('0x3f')][_0x1761('0x42')](_0x4d02dc);})[_0x1761('0x23')](function(_0x5b7a99){_0x5cb574[_0x1761('0x43')]=_0x5b7a99;return _0x5cb574;})['then'](respondWithFilteredResult(_0x432ee9,_0x4d02dc))['catch'](handleError(_0x432ee9,null));};exports[_0x1761('0x44')]=function(_0x50e0e8,_0xca0caf){var _0x21fa17={'raw':!![],'where':{'id':_0x50e0e8[_0x1761('0x45')]['id']}},_0x2b8689={};_0x2b8689[_0x1761('0x2d')]=_[_0x1761('0x2f')](db[_0x1761('0x3f')][_0x1761('0x29')]);_0x2b8689[_0x1761('0x2e')]=_['keys'](_0x50e0e8[_0x1761('0x2e')]);_0x2b8689[_0x1761('0x30')]=_['intersection'](_0x2b8689[_0x1761('0x2d')],_0x2b8689[_0x1761('0x2e')]);_0x21fa17[_0x1761('0x34')]=_[_0x1761('0x31')](_0x2b8689['model'],qs['fields'](_0x50e0e8[_0x1761('0x2e')][_0x1761('0x32')]));_0x21fa17[_0x1761('0x34')]=_0x21fa17[_0x1761('0x34')][_0x1761('0x33')]?_0x21fa17[_0x1761('0x34')]:_0x2b8689[_0x1761('0x2d')];if(_0x50e0e8[_0x1761('0x2e')][_0x1761('0x40')]){_0x21fa17[_0x1761('0x41')]=[{'all':!![]}];}_0x21fa17=_[_0x1761('0x3d')]({},_0x21fa17,_0x50e0e8[_0x1761('0x3e')]);return db['ZohoField'][_0x1761('0x46')](_0x21fa17)[_0x1761('0x23')](handleEntityNotFound(_0xca0caf,null))[_0x1761('0x23')](respondWithResult(_0xca0caf,null))['catch'](handleError(_0xca0caf,null));};exports[_0x1761('0x47')]=function(_0x1725b9,_0x919744){return db[_0x1761('0x3f')][_0x1761('0x47')](_0x1725b9[_0x1761('0x48')],{})['then'](respondWithResult(_0x919744,0xc9))['catch'](handleError(_0x919744,null));};exports['update']=function(_0x147950,_0x112e28){if(_0x147950[_0x1761('0x48')]['id']){delete _0x147950[_0x1761('0x48')]['id'];}return db[_0x1761('0x3f')]['find']({'where':{'id':_0x147950[_0x1761('0x45')]['id']}})[_0x1761('0x23')](handleEntityNotFound(_0x112e28,null))[_0x1761('0x23')](saveUpdates(_0x147950['body'],null))[_0x1761('0x23')](respondWithResult(_0x112e28,null))[_0x1761('0x49')](handleError(_0x112e28,null));};exports['destroy']=function(_0x11752d,_0x43ff87){return db['ZohoField']['find']({'where':{'id':_0x11752d[_0x1761('0x45')]['id']}})[_0x1761('0x23')](handleEntityNotFound(_0x43ff87,null))['then'](removeEntity(_0x43ff87,null))[_0x1761('0x49')](handleError(_0x43ff87,null));};
\ No newline at end of file
index 6ff5338..4131785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d72=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4733d3,_0x454290){var _0x1b9a44=function(_0x1a93bb){while(--_0x1a93bb){_0x4733d3['push'](_0x4733d3['shift']());}};_0x1b9a44(++_0x454290);}(_0x2d72,0xa8));var _0x22d7=function(_0x56edf6,_0x5f5ce4){_0x56edf6=_0x56edf6-0x0;var _0x47cf79=_0x2d72[_0x56edf6];return _0x47cf79;};'use strict';var _=require(_0x22d7('0x0'));var util=require(_0x22d7('0x1'));var logger=require(_0x22d7('0x2'))(_0x22d7('0x3'));var moment=require(_0x22d7('0x4'));var BPromise=require(_0x22d7('0x5'));var rp=require(_0x22d7('0x6'));var fs=require('fs');var path=require(_0x22d7('0x7'));var rimraf=require(_0x22d7('0x8'));var config=require(_0x22d7('0x9'));var attributes=require(_0x22d7('0xa'));module[_0x22d7('0xb')]=function(_0x208b5b,_0x100426){return _0x208b5b['define'](_0x22d7('0xc'),attributes,{'tableName':_0x22d7('0xd'),'paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x22d7('0xe'),_0x22d7('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x90b1=['FieldId','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','define','ZohoField','int_zoho_fields','zoho_unique_index','idField'];(function(_0x4b0b07,_0xea7423){var _0xb289c4=function(_0x13be6d){while(--_0x13be6d){_0x4b0b07['push'](_0x4b0b07['shift']());}};_0xb289c4(++_0xea7423);}(_0x90b1,0x1bb));var _0x190b=function(_0x205328,_0x12c15a){_0x205328=_0x205328-0x0;var _0x4a30eb=_0x90b1[_0x205328];return _0x4a30eb;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var logger=require(_0x190b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x190b('0x3'));var rp=require(_0x190b('0x4'));var fs=require('fs');var path=require(_0x190b('0x5'));var rimraf=require(_0x190b('0x6'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module['exports']=function(_0x5da9c1,_0x27ff8c){return _0x5da9c1[_0x190b('0x7')](_0x190b('0x8'),attributes,{'tableName':_0x190b('0x9'),'paranoid':![],'indexes':[{'name':_0x190b('0xa'),'fields':[_0x190b('0xb'),_0x190b('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a6c9ea6..b3daa43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd32f=['ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird'];(function(_0x46a634,_0x439b70){var _0x42007a=function(_0x2a9e29){while(--_0x2a9e29){_0x46a634['push'](_0x46a634['shift']());}};_0x42007a(++_0x439b70);}(_0xd32f,0x6e));var _0xfd32=function(_0x236910,_0x3188bd){_0x236910=_0x236910-0x0;var _0x187faa=_0xd32f[_0x236910];return _0x187faa;};'use strict';var _=require(_0xfd32('0x0'));var util=require(_0xfd32('0x1'));var moment=require(_0xfd32('0x2'));var BPromise=require(_0xfd32('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd32('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd32('0x5'));var logger=require(_0xfd32('0x6'))('rpc');var config=require(_0xfd32('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfd32('0x8')][_0xfd32('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b5e5b,_0x311cef,_0x45c8c4){return new BPromise(function(_0x547360,_0x3b5105){return client['request'](_0x4b5e5b,_0x45c8c4)[_0xfd32('0xa')](function(_0x3d10d2){logger[_0xfd32('0xb')](_0xfd32('0xc'),_0x311cef,_0xfd32('0xd'));logger[_0xfd32('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x311cef,'request\x20sent',JSON['stringify'](_0x3d10d2));if(_0x3d10d2[_0xfd32('0xf')]){if(_0x3d10d2[_0xfd32('0xf')][_0xfd32('0x10')]===0x1f4){logger['error'](_0xfd32('0xc'),_0x311cef,_0x3d10d2[_0xfd32('0xf')][_0xfd32('0x11')]);return _0x3b5105(_0x3d10d2[_0xfd32('0xf')][_0xfd32('0x11')]);}logger[_0xfd32('0xf')](_0xfd32('0xc'),_0x311cef,_0x3d10d2[_0xfd32('0xf')][_0xfd32('0x11')]);return _0x547360(_0x3d10d2[_0xfd32('0xf')]['message']);}else{logger[_0xfd32('0xb')](_0xfd32('0xc'),_0x311cef,_0xfd32('0xd'));_0x547360(_0x3d10d2[_0xfd32('0x12')][_0xfd32('0x11')]);}})['catch'](function(_0x465198){logger[_0xfd32('0xf')](_0xfd32('0xc'),_0x311cef,_0x465198);_0x3b5105(_0x465198);});});}
\ No newline at end of file
+var _0xc6ee=['request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','ZohoField,\x20%s,\x20%s'];(function(_0x1d5a32,_0x31695a){var _0x30d289=function(_0x51f0c3){while(--_0x51f0c3){_0x1d5a32['push'](_0x1d5a32['shift']());}};_0x30d289(++_0x31695a);}(_0xc6ee,0x16d));var _0xec6e=function(_0x3fa37f,_0x397f16){_0x3fa37f=_0x3fa37f-0x0;var _0x5a01d5=_0xc6ee[_0x3fa37f];return _0x5a01d5;};'use strict';var _=require('lodash');var util=require(_0xec6e('0x0'));var moment=require(_0xec6e('0x1'));var BPromise=require(_0xec6e('0x2'));var rs=require(_0xec6e('0x3'));var fs=require('fs');var Redis=require(_0xec6e('0x4'));var db=require(_0xec6e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xec6e('0x6'))(_0xec6e('0x7'));var config=require(_0xec6e('0x8'));var jayson=require(_0xec6e('0x9'));var client=jayson['client'][_0xec6e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e1ba1,_0x5ce4d1,_0x27f9ca){return new BPromise(function(_0x301b94,_0x585c77){return client['request'](_0x5e1ba1,_0x27f9ca)[_0xec6e('0xb')](function(_0x57c9f7){logger['info'](_0xec6e('0xc'),_0x5ce4d1,_0xec6e('0xd'));logger['debug'](_0xec6e('0xe'),_0x5ce4d1,'request\x20sent',JSON[_0xec6e('0xf')](_0x57c9f7));if(_0x57c9f7[_0xec6e('0x10')]){if(_0x57c9f7[_0xec6e('0x10')][_0xec6e('0x11')]===0x1f4){logger[_0xec6e('0x10')](_0xec6e('0xc'),_0x5ce4d1,_0x57c9f7[_0xec6e('0x10')][_0xec6e('0x12')]);return _0x585c77(_0x57c9f7[_0xec6e('0x10')][_0xec6e('0x12')]);}logger[_0xec6e('0x10')](_0xec6e('0xc'),_0x5ce4d1,_0x57c9f7['error']['message']);return _0x301b94(_0x57c9f7['error'][_0xec6e('0x12')]);}else{logger['info']('ZohoField,\x20%s,\x20%s',_0x5ce4d1,_0xec6e('0xd'));_0x301b94(_0x57c9f7[_0xec6e('0x13')]['message']);}})[_0xec6e('0x14')](function(_0x6e012){logger[_0xec6e('0x10')](_0xec6e('0xc'),_0x5ce4d1,_0x6e012);_0x585c77(_0x6e012);});});}
\ No newline at end of file
index 0a178cb..efe8baa 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(_0x5e3c7a,_0x24d8aa){var _0x2097a5=function(_0x1bfef5){while(--_0x1bfef5){_0x5e3c7a['push'](_0x5e3c7a['shift']());}};_0x2097a5(++_0x24d8aa);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x28611e,_0x586726){_0x28611e=_0x28611e-0x0;var _0x530f69=_0xcb91[_0x28611e];return _0x530f69;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xe49862,_0x2bfd27){var _0x55eed0=function(_0x5ad9ce){while(--_0x5ad9ce){_0xe49862['push'](_0xe49862['shift']());}};_0x55eed0(++_0x2bfd27);}(_0xe706,0xa3));var _0x6e70=function(_0x2c1114,_0x2a5c50){_0x2c1114=_0x2c1114-0x0;var _0x2b877c=_0xe706[_0x2c1114];return _0x2b877c;};'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 ac43aee..cbef089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5e=['BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version','INTEGER'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x9c5e,0x9c));var _0xe9c5=function(_0xeba907,_0x48670c){_0xeba907=_0xeba907-0x0;var _0x2f4776=_0x9c5e[_0xeba907];return _0x2f4776;};'use strict';var Sequelize=require(_0xe9c5('0x0'));module[_0xe9c5('0x1')]={'name':{'type':Sequelize[_0xe9c5('0x2')],'allowNull':![],'unique':_0xe9c5('0x3')},'version':{'type':Sequelize[_0xe9c5('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xe9c5('0x2')]},'path':{'type':Sequelize[_0xe9c5('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xe9c5('0x4')]},'active':{'type':Sequelize[_0xe9c5('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xe9c5('0x2')]},'logo':{'type':Sequelize[_0xe9c5('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0xe9c5('0x6')},'description':{'type':Sequelize[_0xe9c5('0x2')]},'title':{'type':Sequelize[_0xe9c5('0x2')]},'remoteUri':{'type':Sequelize[_0xe9c5('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xcd54=['sequelize','exports','STRING','BOOLEAN','state'];(function(_0x118fe6,_0x361848){var _0x41aaa7=function(_0x2ec4a8){while(--_0x2ec4a8){_0x118fe6['push'](_0x118fe6['shift']());}};_0x41aaa7(++_0x361848);}(_0xcd54,0xaf));var _0x4cd5=function(_0x455e89,_0x4a26c8){_0x455e89=_0x455e89-0x0;var _0x38d8a9=_0xcd54[_0x455e89];return _0x38d8a9;};'use strict';var Sequelize=require(_0x4cd5('0x0'));module[_0x4cd5('0x1')]={'name':{'type':Sequelize[_0x4cd5('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x4cd5('0x2')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x4cd5('0x2')]},'path':{'type':Sequelize[_0x4cd5('0x2')]},'type':{'type':Sequelize[_0x4cd5('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x4cd5('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x4cd5('0x2')]},'logo':{'type':Sequelize[_0x4cd5('0x2')]},'state':{'type':Sequelize[_0x4cd5('0x2')],'unique':_0x4cd5('0x4')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x4cd5('0x2')]},'remoteUri':{'type':Sequelize[_0x4cd5('0x2')]},'link':{'type':Sequelize[_0x4cd5('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index e1168ac..602add5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','then','rows','show','params','intersection','fields','options','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce'];(function(_0x3c3021,_0x189015){var _0x347432=function(_0x324dfc){while(--_0x324dfc){_0x3c3021['push'](_0x3c3021['shift']());}};_0x347432(++_0x189015);}(_0x5fab,0x177));var _0xb5fa=function(_0x306626,_0x425e93){_0x306626=_0x306626-0x0;var _0x466728=_0x5fab[_0x306626];return _0x466728;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];function respondWithStatusCode(_0x4d3576,_0x2ad830){_0x2ad830=_0x2ad830||0xcc;return function(_0x3dad4d){if(_0x3dad4d){return _0x4d3576['sendStatus'](_0x2ad830);}return _0x4d3576[_0xb5fa('0x1a')](_0x2ad830)['end']();};}function respondWithResult(_0x265992,_0x3fc372){_0x3fc372=_0x3fc372||0xc8;return function(_0x40c914){if(_0x40c914){return _0x265992[_0xb5fa('0x1a')](_0x3fc372)[_0xb5fa('0x1b')](_0x40c914);}};}function respondWithFilteredResult(_0x5371cf,_0x567f31){return function(_0x38e964){if(_0x38e964){var _0x587043=typeof _0x567f31[_0xb5fa('0x1c')]===_0xb5fa('0x1d')&&typeof _0x567f31['limit']==='undefined';var _0x451a55=_0x38e964[_0xb5fa('0x1e')];var _0x32e9e5=_0x587043?0x0:_0x567f31[_0xb5fa('0x1c')];var _0x324ba5=_0x587043?_0x38e964[_0xb5fa('0x1e')]:_0x567f31[_0xb5fa('0x1c')]+_0x567f31[_0xb5fa('0x1f')];var _0xc14dc4;if(_0x324ba5>=_0x451a55){_0x324ba5=_0x451a55;_0xc14dc4=0xc8;}else{_0xc14dc4=0xce;}_0x5371cf[_0xb5fa('0x1a')](_0xc14dc4);return _0x5371cf[_0xb5fa('0x20')](_0xb5fa('0x21'),_0x32e9e5+'-'+_0x324ba5+'/'+_0x451a55)['json'](_0x38e964);}return null;};}function patchUpdates(_0x432bfa){return function(_0x519e20){try{jsonpatch[_0xb5fa('0x22')](_0x519e20,_0x432bfa,!![]);}catch(_0x4a6c04){return BPromise[_0xb5fa('0x23')](_0x4a6c04);}return _0x519e20[_0xb5fa('0x24')]();};}function saveUpdates(_0x4e05c0,_0x40dfdf){return function(_0x3a2ab9){if(_0x3a2ab9){return _0x3a2ab9[_0xb5fa('0x25')](_0x4e05c0)['then'](function(_0x32a85c){return _0x32a85c;});}return null;};}function removeEntity(_0xec108f,_0x444237){return function(_0x542348){if(_0x542348){return _0x542348[_0xb5fa('0x26')]()['then'](function(){_0xec108f[_0xb5fa('0x1a')](0xcc)[_0xb5fa('0x27')]();});}};}function handleEntityNotFound(_0x11053a,_0x543edf){return function(_0x2dbd22){if(!_0x2dbd22){_0x11053a[_0xb5fa('0x28')](0x194);}return _0x2dbd22;};}function handleError(_0x6a455c,_0x20d649){_0x20d649=_0x20d649||0x1f4;return function(_0x568870){logger['error'](_0x568870['stack']);if(_0x568870['name']){delete _0x568870[_0xb5fa('0x29')];}_0x6a455c[_0xb5fa('0x1a')](_0x20d649)[_0xb5fa('0x2a')](_0x568870);};}exports[_0xb5fa('0x2b')]=function(_0x534884,_0x3506a4){var _0x358549={},_0x353314={},_0x409af9={'count':0x0,'rows':[]};var _0x2a5690=_[_0xb5fa('0x2c')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')],function(_0x1f4380){return{'name':_0x1f4380[_0xb5fa('0x2f')],'type':_0x1f4380[_0xb5fa('0x30')][_0xb5fa('0x31')]};});_0x353314[_0xb5fa('0x32')]=_[_0xb5fa('0x2c')](_0x2a5690,_0xb5fa('0x29'));_0x353314[_0xb5fa('0x33')]=_[_0xb5fa('0x34')](_0x534884[_0xb5fa('0x33')]);_0x353314[_0xb5fa('0x35')]=_['intersection'](_0x353314[_0xb5fa('0x32')],_0x353314['query']);_0x358549['attributes']=_['intersection'](_0x353314[_0xb5fa('0x32')],qs['fields'](_0x534884[_0xb5fa('0x33')]['fields']));_0x358549['attributes']=_0x358549[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x358549['attributes']:_0x353314['model'];if(!_0x534884[_0xb5fa('0x33')][_0xb5fa('0x38')](_0xb5fa('0x39'))){_0x358549['limit']=qs[_0xb5fa('0x1f')](_0x534884[_0xb5fa('0x33')]['limit']);_0x358549[_0xb5fa('0x1c')]=qs[_0xb5fa('0x1c')](_0x534884[_0xb5fa('0x33')]['offset']);}_0x358549[_0xb5fa('0x3a')]=qs[_0xb5fa('0x3b')](_0x534884[_0xb5fa('0x33')]['sort']);_0x358549[_0xb5fa('0x3c')]=qs[_0xb5fa('0x35')](_[_0xb5fa('0x3d')](_0x534884[_0xb5fa('0x33')],_0x353314['filters']),_0x2a5690);if(_0x534884['query']['filter']){_0x358549['where']=_['merge'](_0x358549['where'],{'$or':_[_0xb5fa('0x2c')](_0x2a5690,function(_0x4c0a4d){if(_0x4c0a4d[_0xb5fa('0x30')]!==_0xb5fa('0x3e')){var _0x36db1a={};_0x36db1a[_0x4c0a4d[_0xb5fa('0x29')]]={'$like':'%'+_0x534884[_0xb5fa('0x33')][_0xb5fa('0x3f')]+'%'};return _0x36db1a;}})});}_0x358549=_['merge']({},_0x358549,_0x534884['options']);var _0x4c4bf0={'where':_0x358549[_0xb5fa('0x3c')]};return db['Integration'][_0xb5fa('0x1e')](_0x4c4bf0)['then'](function(_0x58aa97){_0x409af9[_0xb5fa('0x1e')]=_0x58aa97;if(_0x534884[_0xb5fa('0x33')][_0xb5fa('0x40')]){_0x358549[_0xb5fa('0x41')]=[{'all':!![]}];}return db[_0xb5fa('0x2d')][_0xb5fa('0x42')](_0x358549);})[_0xb5fa('0x43')](function(_0x83df0b){_0x409af9[_0xb5fa('0x44')]=_0x83df0b;return _0x409af9;})[_0xb5fa('0x43')](respondWithFilteredResult(_0x3506a4,_0x358549))['catch'](handleError(_0x3506a4,null));};exports[_0xb5fa('0x45')]=function(_0x4bc9df,_0x233f90){var _0x39aac3={'raw':![],'where':{'id':_0x4bc9df[_0xb5fa('0x46')]['id']}},_0x2c7c5f={};_0x2c7c5f[_0xb5fa('0x32')]=_[_0xb5fa('0x34')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')]);_0x2c7c5f['query']=_[_0xb5fa('0x34')](_0x4bc9df[_0xb5fa('0x33')]);_0x2c7c5f['filters']=_[_0xb5fa('0x47')](_0x2c7c5f['model'],_0x2c7c5f[_0xb5fa('0x33')]);_0x39aac3[_0xb5fa('0x36')]=_['intersection'](_0x2c7c5f['model'],qs[_0xb5fa('0x48')](_0x4bc9df[_0xb5fa('0x33')][_0xb5fa('0x48')]));_0x39aac3[_0xb5fa('0x36')]=_0x39aac3[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x39aac3[_0xb5fa('0x36')]:_0x2c7c5f[_0xb5fa('0x32')];if(_0x4bc9df['query'][_0xb5fa('0x40')]){_0x39aac3[_0xb5fa('0x41')]=[{'all':!![]}];}_0x39aac3=_['merge']({},_0x39aac3,_0x4bc9df[_0xb5fa('0x49')]);return db[_0xb5fa('0x2d')][_0xb5fa('0x4a')](_0x39aac3)[_0xb5fa('0x43')](handleEntityNotFound(_0x233f90,null))[_0xb5fa('0x43')](respondWithResult(_0x233f90,null))[_0xb5fa('0x4b')](handleError(_0x233f90,null));};exports[_0xb5fa('0x4c')]=function(_0x33eb2c,_0x20f5f5){return db[_0xb5fa('0x2d')][_0xb5fa('0x4c')](_0x33eb2c[_0xb5fa('0x4d')],{})[_0xb5fa('0x43')](respondWithResult(_0x20f5f5,0xc9))[_0xb5fa('0x4b')](handleError(_0x20f5f5,null));};exports[_0xb5fa('0x25')]=function(_0x3a39f2,_0x52f5d8){if(_0x3a39f2['body']['id']){delete _0x3a39f2[_0xb5fa('0x4d')]['id'];}return db['Integration'][_0xb5fa('0x4a')]({'where':{'id':_0x3a39f2[_0xb5fa('0x46')]['id']}})['then'](handleEntityNotFound(_0x52f5d8,null))[_0xb5fa('0x43')](saveUpdates(_0x3a39f2[_0xb5fa('0x4d')],null))[_0xb5fa('0x43')](respondWithResult(_0x52f5d8,null))[_0xb5fa('0x4b')](handleError(_0x52f5d8,null));};exports[_0xb5fa('0x26')]=function(_0x3ffee0,_0x51d5f7){return db[_0xb5fa('0x2d')]['find']({'where':{'id':_0x3ffee0[_0xb5fa('0x46')]['id']}})[_0xb5fa('0x43')](handleEntityNotFound(_0x51d5f7,null))[_0xb5fa('0x43')](removeEntity(_0x51d5f7,null))['catch'](handleError(_0x51d5f7,null));};
\ No newline at end of file
+var _0x7a54=['offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','Integration','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(_0x4f9e20,_0x1d52fa){var _0x4b613d=function(_0x173784){while(--_0x173784){_0x4f9e20['push'](_0x4f9e20['shift']());}};_0x4b613d(++_0x1d52fa);}(_0x7a54,0x106));var _0x47a5=function(_0x524ffb,_0x3de2bc){_0x524ffb=_0x524ffb-0x0;var _0x537d49=_0x7a54[_0x524ffb];return _0x537d49;};'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['Integration'][_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['Integration']['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['Integration']['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
index b3f40e4..c1a0786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cdd=['exports','integrations','lodash','util','api','moment','request-promise','path','../../config/environment'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7cdd,0x1b2));var _0xd7cd=function(_0x3c8d72,_0x2c87e6){_0x3c8d72=_0x3c8d72-0x0;var _0xa381db=_0x7cdd[_0x3c8d72];return _0xa381db;};'use strict';var _=require(_0xd7cd('0x0'));var util=require(_0xd7cd('0x1'));var logger=require('../../config/logger')(_0xd7cd('0x2'));var moment=require(_0xd7cd('0x3'));var BPromise=require('bluebird');var rp=require(_0xd7cd('0x4'));var fs=require('fs');var path=require(_0xd7cd('0x5'));var rimraf=require('rimraf');var config=require(_0xd7cd('0x6'));var attributes=require('./integration.attributes');module[_0xd7cd('0x7')]=function(_0x2b1641,_0xa1b461){return _0x2b1641['define']('Integration',attributes,{'tableName':_0xd7cd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0943=['../../config/logger','api','moment','bluebird','request-promise','path','./integration.attributes','exports','Integration','lodash'];(function(_0x4c4278,_0xde7e2e){var _0x5ec748=function(_0x4f535c){while(--_0x4f535c){_0x4c4278['push'](_0x4c4278['shift']());}};_0x5ec748(++_0xde7e2e);}(_0x0943,0x77));var _0x3094=function(_0x4fbee5,_0x1b6278){_0x4fbee5=_0x4fbee5-0x0;var _0x4be70b=_0x0943[_0x4fbee5];return _0x4be70b;};'use strict';var _=require(_0x3094('0x0'));var util=require('util');var logger=require(_0x3094('0x1'))(_0x3094('0x2'));var moment=require(_0x3094('0x3'));var BPromise=require(_0x3094('0x4'));var rp=require(_0x3094('0x5'));var fs=require('fs');var path=require(_0x3094('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3094('0x7'));module[_0x3094('0x8')]=function(_0x362f40,_0x1b58cb){return _0x362f40['define'](_0x3094('0x9'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cba7d72..21af561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../config/environment','jayson/promise','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x1f9862,_0x1047d7){var _0x5c41b0=function(_0x4790a3){while(--_0x4790a3){_0x1f9862['push'](_0x1f9862['shift']());}};_0x5c41b0(++_0x1047d7);}(_0x9f0e,0x116));var _0xe9f0=function(_0x174428,_0x55b3f0){_0x174428=_0x174428-0x0;var _0x504a5a=_0x9f0e[_0x174428];return _0x504a5a;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('Integration,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}
\ No newline at end of file
+var _0x0295=['client','http','then','info','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','Integration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x11975f,_0x41f438){var _0x1ecee8=function(_0x377330){while(--_0x377330){_0x11975f['push'](_0x11975f['shift']());}};_0x1ecee8(++_0x41f438);}(_0x0295,0x1f0));var _0x5029=function(_0x32bb12,_0x1baa09){_0x32bb12=_0x32bb12-0x0;var _0x1af866=_0x0295[_0x32bb12];return _0x1af866;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('Integration,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
index 0278475..945bf63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update'];(function(_0x5d6270,_0x83b57a){var _0x168f26=function(_0x258a27){while(--_0x258a27){_0x5d6270['push'](_0x5d6270['shift']());}};_0x168f26(++_0x83b57a);}(_0xadb5,0xad));var _0x5adb=function(_0x1191eb,_0x4627bb){_0x1191eb=_0x1191eb-0x0;var _0x3b7ab4=_0xadb5[_0x1191eb];return _0x3b7ab4;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./integrationReport.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0xf')]);router['put']('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller['destroy']);module[_0x5adb('0x12')]=router;
\ No newline at end of file
+var _0x524e=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','path','connect-timeout'];(function(_0x30e0da,_0xf22354){var _0x35f3ca=function(_0x5bafc2){while(--_0x5bafc2){_0x30e0da['push'](_0x30e0da['shift']());}};_0x35f3ca(++_0xf22354);}(_0x524e,0x15e));var _0xe524=function(_0x4a4324,_0x4c327c){_0x4a4324=_0x4a4324-0x0;var _0x576665=_0x524e[_0x4a4324];return _0x576665;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe524('0x0'));var timeout=require(_0xe524('0x1'));var express=require(_0xe524('0x2'));var router=express[_0xe524('0x3')]();var fs_extra=require(_0xe524('0x4'));var auth=require(_0xe524('0x5'));var interaction=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var controller=require(_0xe524('0x8'));router[_0xe524('0x9')]('/',auth['isAuthenticated'](),controller[_0xe524('0xa')]);router[_0xe524('0x9')](_0xe524('0xb'),auth['isAuthenticated'](),controller[_0xe524('0xc')]);router[_0xe524('0x9')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0xf')]);router[_0xe524('0x10')]('/',auth[_0xe524('0xe')](),controller[_0xe524('0x11')]);router[_0xe524('0x12')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x13')]);router[_0xe524('0x14')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x15')]);module['exports']=router;
\ No newline at end of file
index abc42de..1721031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd57a=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','SENT','SENDING','FAILED'];(function(_0x1c8648,_0x42e313){var _0x1b770c=function(_0x16d380){while(--_0x16d380){_0x1c8648['push'](_0x1c8648['shift']());}};_0x1b770c(++_0x42e313);}(_0xd57a,0x1a7));var _0xad57=function(_0x45edad,_0xbe4524){_0x45edad=_0x45edad-0x0;var _0xd89e1b=_0xd57a[_0x45edad];return _0xd89e1b;};'use strict';var Sequelize=require('sequelize');module[_0xad57('0x0')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xad57('0x1')]},'exitStatus':{'type':Sequelize[_0xad57('0x1')]},'ticketId':{'type':Sequelize[_0xad57('0x1')]},'integrationId':{'type':Sequelize[_0xad57('0x2')]},'contacts':{'type':Sequelize[_0xad57('0x1')]},'uniqueid':{'type':Sequelize[_0xad57('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xad57('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xad57('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xad57('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xad57('0x3')]},'talktime':{'type':Sequelize[_0xad57('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xad57('0x2')]},'reason':{'type':Sequelize[_0xad57('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xad57('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xad57('0x3')]},'agentdump':{'type':Sequelize[_0xad57('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xad57('0x3')]},'lastevent':{'type':Sequelize[_0xad57('0x1')]},'channel':{'type':Sequelize[_0xad57('0x1')]},'channelstate':{'type':Sequelize[_0xad57('0x2')]},'channelstatedesc':{'type':Sequelize[_0xad57('0x1')]},'connectedlinenum':{'type':Sequelize[_0xad57('0x1')]},'connectedlinename':{'type':Sequelize[_0xad57('0x1')]},'language':{'type':Sequelize[_0xad57('0x1')]},'accountcode':{'type':Sequelize[_0xad57('0x1')]},'context':{'type':Sequelize[_0xad57('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xad57('0x1')]},'destchannel':{'type':Sequelize[_0xad57('0x1')]},'destchannelstate':{'type':Sequelize[_0xad57('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xad57('0x1')]},'destcalleridnum':{'type':Sequelize[_0xad57('0x1')]},'destcalleridname':{'type':Sequelize[_0xad57('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xad57('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xad57('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xad57('0x1')]},'destcontext':{'type':Sequelize[_0xad57('0x1')]},'destexten':{'type':Sequelize[_0xad57('0x1')]},'destpriority':{'type':Sequelize[_0xad57('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0xad57('0x1')]},'subject':{'type':Sequelize[_0xad57('0x1')]},'from':{'type':Sequelize[_0xad57('0x1')]},'to':{'type':Sequelize[_0xad57('0x1')]},'cc':{'type':Sequelize[_0xad57('0x1')]},'attachment':{'type':Sequelize[_0xad57('0x5')]},'html':{'type':Sequelize[_0xad57('0x5')]},'text':{'type':Sequelize[_0xad57('0x5')]},'status':{'type':Sequelize['ENUM'](_0xad57('0x6'),_0xad57('0x7'),'RECEIVED',_0xad57('0x8'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0xad57('0x1')]},'appdata':{'type':Sequelize[_0xad57('0x1')]},'projectId':{'type':Sequelize[_0xad57('0x2')]}};
\ No newline at end of file
+var _0x987c=['INTEGER','BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','DATE'];(function(_0x421214,_0x585bc4){var _0x2f1248=function(_0xb69ad7){while(--_0xb69ad7){_0x421214['push'](_0x421214['shift']());}};_0x2f1248(++_0x585bc4);}(_0x987c,0x134));var _0xc987=function(_0x15e218,_0x38cfd4){_0x15e218=_0x15e218-0x0;var _0xada465=_0x987c[_0x15e218];return _0xada465;};'use strict';var Sequelize=require(_0xc987('0x0'));module[_0xc987('0x1')]={'integration':{'type':Sequelize[_0xc987('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xc987('0x2')]},'ticketId':{'type':Sequelize[_0xc987('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xc987('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xc987('0x2')]},'queue':{'type':Sequelize[_0xc987('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xc987('0x2')]},'agentcalledAt':{'type':Sequelize[_0xc987('0x3')]},'agentconnectAt':{'type':Sequelize[_0xc987('0x3')]},'holdtime':{'type':Sequelize[_0xc987('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xc987('0x3')]},'talktime':{'type':Sequelize[_0xc987('0x4')]},'agentacw':{'type':Sequelize[_0xc987('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xc987('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xc987('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xc987('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xc987('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xc987('0x4')]},'channelstatedesc':{'type':Sequelize[_0xc987('0x2')]},'connectedlinenum':{'type':Sequelize[_0xc987('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xc987('0x2')]},'accountcode':{'type':Sequelize[_0xc987('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xc987('0x2')]},'destchannelstate':{'type':Sequelize[_0xc987('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xc987('0x2')]},'destcalleridnum':{'type':Sequelize[_0xc987('0x2')]},'destcalleridname':{'type':Sequelize[_0xc987('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xc987('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xc987('0x2')]},'destlanguage':{'type':Sequelize[_0xc987('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xc987('0x2')]},'destexten':{'type':Sequelize[_0xc987('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xc987('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xc987('0x2')]},'cc':{'type':Sequelize[_0xc987('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0xc987('0x6')]},'text':{'type':Sequelize[_0xc987('0x6')]},'status':{'type':Sequelize[_0xc987('0x7')](_0xc987('0x8'),_0xc987('0x9'),_0xc987('0xa'),_0xc987('0xb'))},'url':{'type':Sequelize[_0xc987('0x2')]},'app':{'type':Sequelize[_0xc987('0x2')]},'appdata':{'type':Sequelize[_0xc987('0x2')]},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 69b05f8..6632b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead0=['request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xead0,0x144));var _0x0ead=function(_0x4480b9,_0x5c2949){_0x4480b9=_0x4480b9-0x0;var _0x3f0f02=_0xead0[_0x4480b9];return _0x3f0f02;};'use strict';var emlformat=require(_0x0ead('0x0'));var rimraf=require(_0x0ead('0x1'));var zipdir=require(_0x0ead('0x2'));var jsonpatch=require(_0x0ead('0x3'));var rp=require(_0x0ead('0x4'));var moment=require(_0x0ead('0x5'));var BPromise=require(_0x0ead('0x6'));var Mustache=require('mustache');var util=require(_0x0ead('0x7'));var path=require(_0x0ead('0x8'));var sox=require(_0x0ead('0x9'));var csv=require(_0x0ead('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0ead('0xb'));var _=require(_0x0ead('0xc'));var squel=require(_0x0ead('0xd'));var crypto=require(_0x0ead('0xe'));var jsforce=require(_0x0ead('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0ead('0xa'));var querystring=require(_0x0ead('0x10'));var Papa=require(_0x0ead('0x11'));var Redis=require(_0x0ead('0x12'));var authService=require(_0x0ead('0x13'));var qs=require(_0x0ead('0x14'));var as=require(_0x0ead('0x15'));var hardwareService=require(_0x0ead('0x16'));var logger=require(_0x0ead('0x17'))(_0x0ead('0x18'));var utils=require(_0x0ead('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x0ead('0x1a'));var db=require(_0x0ead('0x1b'))['db'];function respondWithStatusCode(_0x1e248f,_0x17e4cc){_0x17e4cc=_0x17e4cc||0xcc;return function(_0x24e1cf){if(_0x24e1cf){return _0x1e248f[_0x0ead('0x1c')](_0x17e4cc);}return _0x1e248f[_0x0ead('0x1d')](_0x17e4cc)[_0x0ead('0x1e')]();};}function respondWithResult(_0x242d06,_0x46ce73){_0x46ce73=_0x46ce73||0xc8;return function(_0x4f33b5){if(_0x4f33b5){return _0x242d06['status'](_0x46ce73)[_0x0ead('0x1f')](_0x4f33b5);}};}function respondWithFilteredResult(_0x3a7a06,_0x24722d){return function(_0x95a56d){if(_0x95a56d){var _0x5eb802=typeof _0x24722d[_0x0ead('0x20')]===_0x0ead('0x21')&&typeof _0x24722d[_0x0ead('0x22')]==='undefined';var _0x11ebeb=_0x95a56d['count'];var _0x572c98=_0x5eb802?0x0:_0x24722d[_0x0ead('0x20')];var _0x44ea4f=_0x5eb802?_0x95a56d[_0x0ead('0x23')]:_0x24722d[_0x0ead('0x20')]+_0x24722d[_0x0ead('0x22')];var _0x590c36;if(_0x44ea4f>=_0x11ebeb){_0x44ea4f=_0x11ebeb;_0x590c36=0xc8;}else{_0x590c36=0xce;}_0x3a7a06['status'](_0x590c36);return _0x3a7a06[_0x0ead('0x24')](_0x0ead('0x25'),_0x572c98+'-'+_0x44ea4f+'/'+_0x11ebeb)[_0x0ead('0x1f')](_0x95a56d);}return null;};}function patchUpdates(_0x35ec71){return function(_0x8e81d6){try{jsonpatch[_0x0ead('0x26')](_0x8e81d6,_0x35ec71,!![]);}catch(_0x71c60c){return BPromise[_0x0ead('0x27')](_0x71c60c);}return _0x8e81d6[_0x0ead('0x28')]();};}function saveUpdates(_0x4dc175,_0x318227){return function(_0x5db93a){if(_0x5db93a){return _0x5db93a[_0x0ead('0x29')](_0x4dc175)[_0x0ead('0x2a')](function(_0x2ffa3a){return _0x2ffa3a;});}return null;};}function removeEntity(_0x2c31b1,_0x3d3066){return function(_0x48fab0){if(_0x48fab0){return _0x48fab0[_0x0ead('0x2b')]()['then'](function(){_0x2c31b1[_0x0ead('0x1d')](0xcc)[_0x0ead('0x1e')]();});}};}function handleEntityNotFound(_0x4436bc,_0x19a27f){return function(_0x25f7e3){if(!_0x25f7e3){_0x4436bc[_0x0ead('0x1c')](0x194);}return _0x25f7e3;};}function handleError(_0xe401be,_0x1bca54){_0x1bca54=_0x1bca54||0x1f4;return function(_0x266a12){logger[_0x0ead('0x2c')](_0x266a12[_0x0ead('0x2d')]);if(_0x266a12[_0x0ead('0x2e')]){delete _0x266a12['name'];}_0xe401be['status'](_0x1bca54)[_0x0ead('0x2f')](_0x266a12);};}exports[_0x0ead('0x30')]=function(_0x1edb7a,_0x587db7){var _0x3a0351={},_0x1ca68d={},_0x70894a={'count':0x0,'rows':[]};var _0x2d96ce=_[_0x0ead('0x31')](db[_0x0ead('0x32')][_0x0ead('0x33')],function(_0x11c1b2){return{'name':_0x11c1b2[_0x0ead('0x34')],'type':_0x11c1b2[_0x0ead('0x35')][_0x0ead('0x36')]};});_0x1ca68d[_0x0ead('0x37')]=_[_0x0ead('0x31')](_0x2d96ce,'name');_0x1ca68d[_0x0ead('0x38')]=_[_0x0ead('0x39')](_0x1edb7a['query']);_0x1ca68d[_0x0ead('0x3a')]=_[_0x0ead('0x3b')](_0x1ca68d[_0x0ead('0x37')],_0x1ca68d['query']);_0x3a0351['attributes']=_['intersection'](_0x1ca68d[_0x0ead('0x37')],qs[_0x0ead('0x3c')](_0x1edb7a['query']['fields']));_0x3a0351[_0x0ead('0x3d')]=_0x3a0351[_0x0ead('0x3d')][_0x0ead('0x3e')]?_0x3a0351[_0x0ead('0x3d')]:_0x1ca68d[_0x0ead('0x37')];if(!_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x3f')](_0x0ead('0x40'))){_0x3a0351[_0x0ead('0x22')]=qs[_0x0ead('0x22')](_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x22')]);_0x3a0351[_0x0ead('0x20')]=qs[_0x0ead('0x20')](_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x20')]);}_0x3a0351[_0x0ead('0x41')]=qs[_0x0ead('0x42')](_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x42')]);_0x3a0351[_0x0ead('0x43')]=qs['filters'](_[_0x0ead('0x44')](_0x1edb7a[_0x0ead('0x38')],_0x1ca68d[_0x0ead('0x3a')]),_0x2d96ce);if(_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x45')]){_0x3a0351[_0x0ead('0x43')]=_['merge'](_0x3a0351[_0x0ead('0x43')],{'$or':_[_0x0ead('0x31')](_0x2d96ce,function(_0x4b2e4b){if(_0x4b2e4b[_0x0ead('0x35')]!=='VIRTUAL'){var _0x36c487={};_0x36c487[_0x4b2e4b[_0x0ead('0x2e')]]={'$like':'%'+_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x45')]+'%'};return _0x36c487;}})});}_0x3a0351=_[_0x0ead('0x46')]({},_0x3a0351,_0x1edb7a[_0x0ead('0x47')]);var _0x43c86b={'where':_0x3a0351['where']};return db[_0x0ead('0x32')]['count'](_0x43c86b)[_0x0ead('0x2a')](function(_0x56b0f0){_0x70894a[_0x0ead('0x23')]=_0x56b0f0;if(_0x1edb7a[_0x0ead('0x38')][_0x0ead('0x48')]){_0x3a0351[_0x0ead('0x49')]=[{'all':!![]}];}return db[_0x0ead('0x32')][_0x0ead('0x4a')](_0x3a0351);})[_0x0ead('0x2a')](function(_0x27794b){_0x70894a[_0x0ead('0x4b')]=_0x27794b;return _0x70894a;})[_0x0ead('0x2a')](respondWithFilteredResult(_0x587db7,_0x3a0351))[_0x0ead('0x4c')](handleError(_0x587db7,null));};exports['show']=function(_0x1053f2,_0x3ef15a){var _0x2cd231={'raw':![],'where':{'id':_0x1053f2[_0x0ead('0x4d')]['id']}},_0x23642b={};_0x23642b[_0x0ead('0x37')]=_[_0x0ead('0x39')](db[_0x0ead('0x32')][_0x0ead('0x33')]);_0x23642b['query']=_[_0x0ead('0x39')](_0x1053f2[_0x0ead('0x38')]);_0x23642b[_0x0ead('0x3a')]=_[_0x0ead('0x3b')](_0x23642b[_0x0ead('0x37')],_0x23642b['query']);_0x2cd231['attributes']=_[_0x0ead('0x3b')](_0x23642b['model'],qs['fields'](_0x1053f2['query'][_0x0ead('0x3c')]));_0x2cd231[_0x0ead('0x3d')]=_0x2cd231[_0x0ead('0x3d')]['length']?_0x2cd231['attributes']:_0x23642b[_0x0ead('0x37')];if(_0x1053f2[_0x0ead('0x38')][_0x0ead('0x48')]){_0x2cd231[_0x0ead('0x49')]=[{'all':!![]}];}_0x2cd231=_[_0x0ead('0x46')]({},_0x2cd231,_0x1053f2[_0x0ead('0x47')]);return db[_0x0ead('0x32')]['find'](_0x2cd231)[_0x0ead('0x2a')](handleEntityNotFound(_0x3ef15a,null))[_0x0ead('0x2a')](respondWithResult(_0x3ef15a,null))['catch'](handleError(_0x3ef15a,null));};exports[_0x0ead('0x4e')]=function(_0x4daf84,_0x3bfb26){return db[_0x0ead('0x32')][_0x0ead('0x4e')](_0x4daf84['body'],{})[_0x0ead('0x2a')](respondWithResult(_0x3bfb26,0xc9))['catch'](handleError(_0x3bfb26,null));};exports[_0x0ead('0x29')]=function(_0x2f8b3c,_0x4cf443){if(_0x2f8b3c[_0x0ead('0x4f')]['id']){delete _0x2f8b3c[_0x0ead('0x4f')]['id'];}return db[_0x0ead('0x32')]['find']({'where':{'id':_0x2f8b3c[_0x0ead('0x4d')]['id']}})[_0x0ead('0x2a')](handleEntityNotFound(_0x4cf443,null))[_0x0ead('0x2a')](saveUpdates(_0x2f8b3c['body'],null))['then'](respondWithResult(_0x4cf443,null))[_0x0ead('0x4c')](handleError(_0x4cf443,null));};exports['destroy']=function(_0x992e60,_0x415b8f){return db['IntegrationReport'][_0x0ead('0x50')]({'where':{'id':_0x992e60['params']['id']}})[_0x0ead('0x2a')](handleEntityNotFound(_0x415b8f,null))['then'](removeEntity(_0x415b8f,null))[_0x0ead('0x4c')](handleError(_0x415b8f,null));};exports[_0x0ead('0x51')]=function(_0x3b3f89,_0x312fb3){return db[_0x0ead('0x32')][_0x0ead('0x51')]()[_0x0ead('0x2a')](respondWithResult(_0x312fb3,null))[_0x0ead('0x4c')](handleError(_0x312fb3,null));};
\ No newline at end of file
+var _0x4b75=['fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','reject','save','then','destroy','end','name','index','map','IntegrationReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs'];(function(_0x3f8a03,_0x319b9c){var _0x147fb2=function(_0x523c1c){while(--_0x523c1c){_0x3f8a03['push'](_0x3f8a03['shift']());}};_0x147fb2(++_0x319b9c);}(_0x4b75,0x19a));var _0x54b7=function(_0x575613,_0x1a2cad){_0x575613=_0x575613-0x0;var _0x5cb89c=_0x4b75[_0x575613];return _0x5cb89c;};'use strict';var emlformat=require(_0x54b7('0x0'));var rimraf=require(_0x54b7('0x1'));var zipdir=require(_0x54b7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x54b7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x54b7('0x4'));var util=require(_0x54b7('0x5'));var path=require(_0x54b7('0x6'));var sox=require(_0x54b7('0x7'));var csv=require(_0x54b7('0x8'));var ejs=require(_0x54b7('0x9'));var fs=require('fs');var fs_extra=require(_0x54b7('0xa'));var _=require(_0x54b7('0xb'));var squel=require(_0x54b7('0xc'));var crypto=require(_0x54b7('0xd'));var jsforce=require(_0x54b7('0xe'));var deskjs=require(_0x54b7('0xf'));var toCsv=require(_0x54b7('0x8'));var querystring=require(_0x54b7('0x10'));var Papa=require('papaparse');var Redis=require(_0x54b7('0x11'));var authService=require(_0x54b7('0x12'));var qs=require(_0x54b7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x54b7('0x14'));var logger=require(_0x54b7('0x15'))('api');var utils=require(_0x54b7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x54b7('0x17'));var db=require(_0x54b7('0x18'))['db'];function respondWithStatusCode(_0x9bd0,_0x135b82){_0x135b82=_0x135b82||0xcc;return function(_0x52b52b){if(_0x52b52b){return _0x9bd0[_0x54b7('0x19')](_0x135b82);}return _0x9bd0['status'](_0x135b82)['end']();};}function respondWithResult(_0x4dcf39,_0x47dd53){_0x47dd53=_0x47dd53||0xc8;return function(_0x23c44b){if(_0x23c44b){return _0x4dcf39[_0x54b7('0x1a')](_0x47dd53)['json'](_0x23c44b);}};}function respondWithFilteredResult(_0x2e9128,_0x612d35){return function(_0x12a12f){if(_0x12a12f){var _0x5157b0=typeof _0x612d35[_0x54b7('0x1b')]===_0x54b7('0x1c')&&typeof _0x612d35[_0x54b7('0x1d')]===_0x54b7('0x1c');var _0x42ea91=_0x12a12f[_0x54b7('0x1e')];var _0x4a3e25=_0x5157b0?0x0:_0x612d35['offset'];var _0x48d592=_0x5157b0?_0x12a12f['count']:_0x612d35[_0x54b7('0x1b')]+_0x612d35['limit'];var _0x1cfde1;if(_0x48d592>=_0x42ea91){_0x48d592=_0x42ea91;_0x1cfde1=0xc8;}else{_0x1cfde1=0xce;}_0x2e9128['status'](_0x1cfde1);return _0x2e9128[_0x54b7('0x1f')]('Content-Range',_0x4a3e25+'-'+_0x48d592+'/'+_0x42ea91)['json'](_0x12a12f);}return null;};}function patchUpdates(_0x10ba65){return function(_0x20d7bd){try{jsonpatch['apply'](_0x20d7bd,_0x10ba65,!![]);}catch(_0x16ff81){return BPromise[_0x54b7('0x20')](_0x16ff81);}return _0x20d7bd[_0x54b7('0x21')]();};}function saveUpdates(_0x5a352d,_0x2b2d45){return function(_0x352933){if(_0x352933){return _0x352933['update'](_0x5a352d)[_0x54b7('0x22')](function(_0x1444e6){return _0x1444e6;});}return null;};}function removeEntity(_0x52c787,_0x1cc3d4){return function(_0x36dd83){if(_0x36dd83){return _0x36dd83[_0x54b7('0x23')]()['then'](function(){_0x52c787[_0x54b7('0x1a')](0xcc)[_0x54b7('0x24')]();});}};}function handleEntityNotFound(_0x13628a,_0x16ab99){return function(_0x45c643){if(!_0x45c643){_0x13628a[_0x54b7('0x19')](0x194);}return _0x45c643;};}function handleError(_0x348a9b,_0x551811){_0x551811=_0x551811||0x1f4;return function(_0x31ee2b){logger['error'](_0x31ee2b['stack']);if(_0x31ee2b[_0x54b7('0x25')]){delete _0x31ee2b['name'];}_0x348a9b[_0x54b7('0x1a')](_0x551811)['send'](_0x31ee2b);};}exports[_0x54b7('0x26')]=function(_0x25c3d7,_0x4694f2){var _0x118c7e={},_0x57be41={},_0x2e0f5e={'count':0x0,'rows':[]};var _0x13af9a=_[_0x54b7('0x27')](db[_0x54b7('0x28')][_0x54b7('0x29')],function(_0x2bc266){return{'name':_0x2bc266['fieldName'],'type':_0x2bc266[_0x54b7('0x2a')]['key']};});_0x57be41[_0x54b7('0x2b')]=_[_0x54b7('0x27')](_0x13af9a,_0x54b7('0x25'));_0x57be41[_0x54b7('0x2c')]=_[_0x54b7('0x2d')](_0x25c3d7[_0x54b7('0x2c')]);_0x57be41[_0x54b7('0x2e')]=_[_0x54b7('0x2f')](_0x57be41[_0x54b7('0x2b')],_0x57be41['query']);_0x118c7e[_0x54b7('0x30')]=_[_0x54b7('0x2f')](_0x57be41[_0x54b7('0x2b')],qs[_0x54b7('0x31')](_0x25c3d7[_0x54b7('0x2c')][_0x54b7('0x31')]));_0x118c7e['attributes']=_0x118c7e['attributes'][_0x54b7('0x32')]?_0x118c7e['attributes']:_0x57be41[_0x54b7('0x2b')];if(!_0x25c3d7[_0x54b7('0x2c')][_0x54b7('0x33')](_0x54b7('0x34'))){_0x118c7e[_0x54b7('0x1d')]=qs[_0x54b7('0x1d')](_0x25c3d7['query'][_0x54b7('0x1d')]);_0x118c7e[_0x54b7('0x1b')]=qs[_0x54b7('0x1b')](_0x25c3d7['query']['offset']);}_0x118c7e[_0x54b7('0x35')]=qs[_0x54b7('0x36')](_0x25c3d7[_0x54b7('0x2c')][_0x54b7('0x36')]);_0x118c7e['where']=qs[_0x54b7('0x2e')](_[_0x54b7('0x37')](_0x25c3d7['query'],_0x57be41[_0x54b7('0x2e')]),_0x13af9a);if(_0x25c3d7['query'][_0x54b7('0x38')]){_0x118c7e['where']=_[_0x54b7('0x39')](_0x118c7e[_0x54b7('0x3a')],{'$or':_[_0x54b7('0x27')](_0x13af9a,function(_0x6ed71d){if(_0x6ed71d['type']!==_0x54b7('0x3b')){var _0x16947d={};_0x16947d[_0x6ed71d[_0x54b7('0x25')]]={'$like':'%'+_0x25c3d7['query']['filter']+'%'};return _0x16947d;}})});}_0x118c7e=_['merge']({},_0x118c7e,_0x25c3d7[_0x54b7('0x3c')]);var _0x1ad52c={'where':_0x118c7e[_0x54b7('0x3a')]};return db[_0x54b7('0x28')][_0x54b7('0x1e')](_0x1ad52c)[_0x54b7('0x22')](function(_0x3bf5c2){_0x2e0f5e['count']=_0x3bf5c2;if(_0x25c3d7[_0x54b7('0x2c')]['includeAll']){_0x118c7e[_0x54b7('0x3d')]=[{'all':!![]}];}return db['IntegrationReport'][_0x54b7('0x3e')](_0x118c7e);})[_0x54b7('0x22')](function(_0x22d84a){_0x2e0f5e[_0x54b7('0x3f')]=_0x22d84a;return _0x2e0f5e;})[_0x54b7('0x22')](respondWithFilteredResult(_0x4694f2,_0x118c7e))[_0x54b7('0x40')](handleError(_0x4694f2,null));};exports['show']=function(_0xfa00f2,_0x4b8444){var _0x1488ab={'raw':![],'where':{'id':_0xfa00f2[_0x54b7('0x41')]['id']}},_0x4c5852={};_0x4c5852[_0x54b7('0x2b')]=_[_0x54b7('0x2d')](db[_0x54b7('0x28')][_0x54b7('0x29')]);_0x4c5852[_0x54b7('0x2c')]=_[_0x54b7('0x2d')](_0xfa00f2[_0x54b7('0x2c')]);_0x4c5852[_0x54b7('0x2e')]=_[_0x54b7('0x2f')](_0x4c5852[_0x54b7('0x2b')],_0x4c5852[_0x54b7('0x2c')]);_0x1488ab[_0x54b7('0x30')]=_[_0x54b7('0x2f')](_0x4c5852[_0x54b7('0x2b')],qs[_0x54b7('0x31')](_0xfa00f2['query'][_0x54b7('0x31')]));_0x1488ab[_0x54b7('0x30')]=_0x1488ab['attributes'][_0x54b7('0x32')]?_0x1488ab[_0x54b7('0x30')]:_0x4c5852[_0x54b7('0x2b')];if(_0xfa00f2[_0x54b7('0x2c')]['includeAll']){_0x1488ab[_0x54b7('0x3d')]=[{'all':!![]}];}_0x1488ab=_[_0x54b7('0x39')]({},_0x1488ab,_0xfa00f2[_0x54b7('0x3c')]);return db[_0x54b7('0x28')][_0x54b7('0x42')](_0x1488ab)['then'](handleEntityNotFound(_0x4b8444,null))[_0x54b7('0x22')](respondWithResult(_0x4b8444,null))[_0x54b7('0x40')](handleError(_0x4b8444,null));};exports[_0x54b7('0x43')]=function(_0x2e2738,_0x268891){return db[_0x54b7('0x28')][_0x54b7('0x43')](_0x2e2738[_0x54b7('0x44')],{})[_0x54b7('0x22')](respondWithResult(_0x268891,0xc9))[_0x54b7('0x40')](handleError(_0x268891,null));};exports['update']=function(_0x554195,_0x4d371e){if(_0x554195[_0x54b7('0x44')]['id']){delete _0x554195[_0x54b7('0x44')]['id'];}return db[_0x54b7('0x28')]['find']({'where':{'id':_0x554195['params']['id']}})[_0x54b7('0x22')](handleEntityNotFound(_0x4d371e,null))['then'](saveUpdates(_0x554195['body'],null))[_0x54b7('0x22')](respondWithResult(_0x4d371e,null))[_0x54b7('0x40')](handleError(_0x4d371e,null));};exports[_0x54b7('0x23')]=function(_0x5cd342,_0x66b0d6){return db['IntegrationReport'][_0x54b7('0x42')]({'where':{'id':_0x5cd342[_0x54b7('0x41')]['id']}})[_0x54b7('0x22')](handleEntityNotFound(_0x66b0d6,null))[_0x54b7('0x22')](removeEntity(_0x66b0d6,null))['catch'](handleError(_0x66b0d6,null));};exports[_0x54b7('0x45')]=function(_0x340171,_0x3b4aeb){return db[_0x54b7('0x28')]['describe']()[_0x54b7('0x22')](respondWithResult(_0x3b4aeb,null))[_0x54b7('0x40')](handleError(_0x3b4aeb,null));};
\ No newline at end of file
index dfaca59..2b2d2b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a4=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./integrationReport.attributes','exports','define','report_integration','lodash'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc6a4,0x18b));var _0x4c6a=function(_0x1152f4,_0x31f267){_0x1152f4=_0x1152f4-0x0;var _0x502cfc=_0xc6a4[_0x1152f4];return _0x502cfc;};'use strict';var _=require(_0x4c6a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4c6a('0x1'));var moment=require(_0x4c6a('0x2'));var BPromise=require(_0x4c6a('0x3'));var rp=require(_0x4c6a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4c6a('0x5'));var config=require(_0x4c6a('0x6'));var attributes=require(_0x4c6a('0x7'));module[_0x4c6a('0x8')]=function(_0x4f184a,_0x384b3b){return _0x4f184a[_0x4c6a('0x9')]('IntegrationReport',attributes,{'tableName':_0x4c6a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f0c=['report_integration','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport'];(function(_0x2765b3,_0x3201d7){var _0x2aeff1=function(_0x3e4821){while(--_0x3e4821){_0x2765b3['push'](_0x2765b3['shift']());}};_0x2aeff1(++_0x3201d7);}(_0x0f0c,0xfd));var _0xc0f0=function(_0x40800c,_0x3a3f45){_0x40800c=_0x40800c-0x0;var _0x3761f7=_0x0f0c[_0x40800c];return _0x3761f7;};'use strict';var _=require('lodash');var util=require(_0xc0f0('0x0'));var logger=require(_0xc0f0('0x1'))(_0xc0f0('0x2'));var moment=require('moment');var BPromise=require(_0xc0f0('0x3'));var rp=require(_0xc0f0('0x4'));var fs=require('fs');var path=require(_0xc0f0('0x5'));var rimraf=require('rimraf');var config=require(_0xc0f0('0x6'));var attributes=require(_0xc0f0('0x7'));module[_0xc0f0('0x8')]=function(_0x4e3312,_0x1688f2){return _0x4e3312[_0xc0f0('0x9')](_0xc0f0('0xa'),attributes,{'tableName':_0xc0f0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39eeab9..edd51b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['error','message','info','result','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1f597d,_0xaf684b){var _0x1ac9f0=function(_0x1c3acb){while(--_0x1c3acb){_0x1f597d['push'](_0x1f597d['shift']());}};_0x1ac9f0(++_0xaf684b);}(_0xda19,0xd5));var _0x9da1=function(_0x1b7602,_0x36b39c){_0x1b7602=_0x1b7602-0x0;var _0x5b8083=_0xda19[_0x1b7602];return _0x5b8083;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var moment=require(_0x9da1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9da1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9da1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x9da1('0x4'))(_0x9da1('0x5'));var config=require(_0x9da1('0x6'));var jayson=require(_0x9da1('0x7'));var client=jayson[_0x9da1('0x8')][_0x9da1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23e4f7,_0x2c3cdd,_0x1c24e6){return new BPromise(function(_0x5e2d18,_0x47df89){return client['request'](_0x23e4f7,_0x1c24e6)['then'](function(_0x417312){logger['info'](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));logger[_0x9da1('0xc')](_0x9da1('0xd'),_0x2c3cdd,_0x9da1('0xb'),JSON[_0x9da1('0xe')](_0x417312));if(_0x417312[_0x9da1('0xf')]){if(_0x417312['error']['code']===0x1f4){logger[_0x9da1('0xf')]('IntegrationReport,\x20%s,\x20%s',_0x2c3cdd,_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);return _0x47df89(_0x417312[_0x9da1('0xf')][_0x9da1('0x10')]);}logger['error'](_0x9da1('0xa'),_0x2c3cdd,_0x417312['error']['message']);return _0x5e2d18(_0x417312[_0x9da1('0xf')]['message']);}else{logger[_0x9da1('0x11')](_0x9da1('0xa'),_0x2c3cdd,_0x9da1('0xb'));_0x5e2d18(_0x417312[_0x9da1('0x12')][_0x9da1('0x10')]);}})['catch'](function(_0x16f75a){logger[_0x9da1('0xf')](_0x9da1('0xa'),_0x2c3cdd,_0x16f75a);_0x47df89(_0x16f75a);});});}
\ No newline at end of file
+var _0x7a54=['info','IntegrationReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0x293a4f,_0x33d161){_0x293a4f=_0x293a4f-0x0;var _0x3cd177=_0x7a54[_0x293a4f];return _0x3cd177;};'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')]('IntegrationReport,\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 965f8a5..674841e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1115=['get','getIntervals','create','/:id/sub_intervals','addInterval','post','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id'];(function(_0xcf17ec,_0x31fa9c){var _0x45d065=function(_0x1af637){while(--_0x1af637){_0xcf17ec['push'](_0xcf17ec['shift']());}};_0x45d065(++_0x31fa9c);}(_0x1115,0x1b6));var _0x5111=function(_0x474e31,_0x317eb9){_0x474e31=_0x474e31-0x0;var _0x18d68c=_0x1115[_0x474e31];return _0x18d68c;};'use strict';var multer=require('multer');var util=require(_0x5111('0x0'));var path=require(_0x5111('0x1'));var timeout=require(_0x5111('0x2'));var express=require(_0x5111('0x3'));var router=express[_0x5111('0x4')]();var fs_extra=require(_0x5111('0x5'));var auth=require(_0x5111('0x6'));var interaction=require(_0x5111('0x7'));var config=require(_0x5111('0x8'));var controller=require('./interval.controller');router['get']('/',auth[_0x5111('0x9')](),controller[_0x5111('0xa')]);router['get'](_0x5111('0xb'),auth[_0x5111('0x9')](),controller['show']);router[_0x5111('0xc')]('/:id/sub_intervals',auth[_0x5111('0x9')](),controller[_0x5111('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5111('0xe')]);router['post'](_0x5111('0xf'),auth['isAuthenticated'](),controller[_0x5111('0x10')]);router[_0x5111('0x11')](_0x5111('0x12'),auth[_0x5111('0x9')](),controller[_0x5111('0x13')]);router[_0x5111('0x14')](_0x5111('0xb'),auth[_0x5111('0x9')](),controller[_0x5111('0x15')]);router[_0x5111('0x16')](_0x5111('0xb'),auth[_0x5111('0x9')](),controller[_0x5111('0x17')]);module[_0x5111('0x18')]=router;
\ No newline at end of file
+var _0x15ff=['isAuthenticated','get','/:id','show','/:id/sub_intervals','getIntervals','create','addInterval','post','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x15ff,0x74));var _0xf15f=function(_0x4ba4c1,_0x59f6a9){_0x4ba4c1=_0x4ba4c1-0x0;var _0x5845c3=_0x15ff[_0x4ba4c1];return _0x5845c3;};'use strict';var multer=require(_0xf15f('0x0'));var util=require(_0xf15f('0x1'));var path=require('path');var timeout=require(_0xf15f('0x2'));var express=require('express');var router=express[_0xf15f('0x3')]();var fs_extra=require(_0xf15f('0x4'));var auth=require(_0xf15f('0x5'));var interaction=require(_0xf15f('0x6'));var config=require(_0xf15f('0x7'));var controller=require(_0xf15f('0x8'));router['get']('/',auth[_0xf15f('0x9')](),controller['index']);router[_0xf15f('0xa')](_0xf15f('0xb'),auth[_0xf15f('0x9')](),controller[_0xf15f('0xc')]);router['get'](_0xf15f('0xd'),auth[_0xf15f('0x9')](),controller[_0xf15f('0xe')]);router['post']('/',auth[_0xf15f('0x9')](),controller[_0xf15f('0xf')]);router['post'](_0xf15f('0xd'),auth[_0xf15f('0x9')](),controller[_0xf15f('0x10')]);router[_0xf15f('0x11')](_0xf15f('0x12'),auth[_0xf15f('0x9')](),controller[_0xf15f('0x13')]);router[_0xf15f('0x14')](_0xf15f('0xb'),auth[_0xf15f('0x9')](),controller[_0xf15f('0x15')]);router[_0xf15f('0x16')](_0xf15f('0xb'),auth[_0xf15f('0x9')](),controller[_0xf15f('0x17')]);module[_0xf15f('0x18')]=router;
\ No newline at end of file
index 0d25016..d391dec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e4f=['exports','STRING','sequelize'];(function(_0x1e52e4,_0x372805){var _0xfb0770=function(_0x4a7ce4){while(--_0x4a7ce4){_0x1e52e4['push'](_0x1e52e4['shift']());}};_0xfb0770(++_0x372805);}(_0x6e4f,0x1a3));var _0xf6e4=function(_0x3ef4cb,_0x2e50bd){_0x3ef4cb=_0x3ef4cb-0x0;var _0x3c4f0f=_0x6e4f[_0x3ef4cb];return _0x3c4f0f;};'use strict';var Sequelize=require(_0xf6e4('0x0'));module[_0xf6e4('0x1')]={'name':{'type':Sequelize[_0xf6e4('0x2')]},'description':{'type':Sequelize[_0xf6e4('0x2')]},'interval':{'type':Sequelize[_0xf6e4('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xae8c=['sequelize','exports','STRING'];(function(_0x1844f1,_0x14d2bd){var _0x59f3c3=function(_0x4ef922){while(--_0x4ef922){_0x1844f1['push'](_0x1844f1['shift']());}};_0x59f3c3(++_0x14d2bd);}(_0xae8c,0x8d));var _0xcae8=function(_0x3f0a0d,_0x2ed710){_0x3f0a0d=_0x3f0a0d-0x0;var _0x2fd911=_0xae8c[_0x3f0a0d];return _0x2fd911;};'use strict';var Sequelize=require(_0xcae8('0x0'));module[_0xcae8('0x1')]={'name':{'type':Sequelize[_0xcae8('0x2')]},'description':{'type':Sequelize[_0xcae8('0x2')]},'interval':{'type':Sequelize[_0xcae8('0x2')],'allowNull':!![]}};
\ No newline at end of file
index b7c8e10..d77a953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848e=['nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','addInterval','IntervalId','getIntervals','findOne','length','addIntervals','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','Intervals','UserProfileResource','error','name','send','index','map','Interval','rawAttributes','fieldName','type','key','model','keys','intersection','query','fields','attributes','hasOwnProperty'];(function(_0x1dd0f4,_0x1ff8b6){var _0x14835d=function(_0x4e92eb){while(--_0x4e92eb){_0x1dd0f4['push'](_0x1dd0f4['shift']());}};_0x14835d(++_0x1ff8b6);}(_0x848e,0xdf));var _0xe848=function(_0x46763f,_0x473c32){_0x46763f=_0x46763f-0x0;var _0x22d8d4=_0x848e[_0x46763f];return _0x22d8d4;};'use strict';var emlformat=require(_0xe848('0x0'));var rimraf=require(_0xe848('0x1'));var zipdir=require(_0xe848('0x2'));var jsonpatch=require(_0xe848('0x3'));var rp=require('request-promise');var moment=require(_0xe848('0x4'));var BPromise=require(_0xe848('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe848('0x6'));var sox=require(_0xe848('0x7'));var csv=require(_0xe848('0x8'));var ejs=require(_0xe848('0x9'));var fs=require('fs');var fs_extra=require(_0xe848('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xe848('0xb'));var jsforce=require(_0xe848('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe848('0x8'));var querystring=require(_0xe848('0xd'));var Papa=require(_0xe848('0xe'));var Redis=require(_0xe848('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe848('0x10'));var as=require(_0xe848('0x11'));var hardwareService=require(_0xe848('0x12'));var logger=require('../../config/logger')(_0xe848('0x13'));var utils=require('../../config/utils');var config=require(_0xe848('0x14'));var licenseUtil=require(_0xe848('0x15'));var db=require(_0xe848('0x16'))['db'];var extensions=require(_0xe848('0x17'));function respondWithStatusCode(_0x551cbe,_0x28b6aa){_0x28b6aa=_0x28b6aa||0xcc;return function(_0x35e72f){if(_0x35e72f){return _0x551cbe[_0xe848('0x18')](_0x28b6aa);}return _0x551cbe[_0xe848('0x19')](_0x28b6aa)[_0xe848('0x1a')]();};}function respondWithResult(_0x3bcdda,_0x17d40f){_0x17d40f=_0x17d40f||0xc8;return function(_0x3d28fd){if(_0x3d28fd){return _0x3bcdda[_0xe848('0x19')](_0x17d40f)[_0xe848('0x1b')](_0x3d28fd);}};}function respondWithFilteredResult(_0x200d83,_0x5393cf){return function(_0x2631a4){if(_0x2631a4){var _0x2d64eb=typeof _0x5393cf[_0xe848('0x1c')]===_0xe848('0x1d')&&typeof _0x5393cf[_0xe848('0x1e')]===_0xe848('0x1d');var _0x25fe28=_0x2631a4[_0xe848('0x1f')];var _0x3248c2=_0x2d64eb?0x0:_0x5393cf['offset'];var _0x132413=_0x2d64eb?_0x2631a4['count']:_0x5393cf['offset']+_0x5393cf[_0xe848('0x1e')];var _0x69ea8d;if(_0x132413>=_0x25fe28){_0x132413=_0x25fe28;_0x69ea8d=0xc8;}else{_0x69ea8d=0xce;}_0x200d83[_0xe848('0x19')](_0x69ea8d);return _0x200d83['set']('Content-Range',_0x3248c2+'-'+_0x132413+'/'+_0x25fe28)[_0xe848('0x1b')](_0x2631a4);}return null;};}function patchUpdates(_0x1e08dd){return function(_0x2e9882){try{jsonpatch[_0xe848('0x20')](_0x2e9882,_0x1e08dd,!![]);}catch(_0x1a0d30){return BPromise[_0xe848('0x21')](_0x1a0d30);}return _0x2e9882[_0xe848('0x22')]();};}function saveUpdates(_0x105d8e,_0x55c096){return function(_0x521cb0){if(_0x521cb0){return _0x521cb0[_0xe848('0x23')](_0x105d8e)[_0xe848('0x24')](function(_0xa711f4){return _0xa711f4;});}return null;};}function removeEntity(_0x4b62af,_0x5ea387){return function(_0x86a80c){if(_0x86a80c){return _0x86a80c['destroy']()[_0xe848('0x24')](function(){var _0x2a663e=_0x86a80c['get']({'plain':!![]});var _0x31872e=_0xe848('0x25');return db[_0xe848('0x26')]['destroy']({'where':{'type':_0x31872e,'resourceId':_0x2a663e['id']}})[_0xe848('0x24')](function(){return _0x86a80c;});})['then'](function(){_0x4b62af[_0xe848('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2869ac,_0x16445d){return function(_0x485a90){if(!_0x485a90){_0x2869ac['sendStatus'](0x194);}return _0x485a90;};}function handleError(_0x3c8fd6,_0x40d3df){_0x40d3df=_0x40d3df||0x1f4;return function(_0x52ce78){logger[_0xe848('0x27')](_0x52ce78['stack']);if(_0x52ce78[_0xe848('0x28')]){delete _0x52ce78['name'];}_0x3c8fd6['status'](_0x40d3df)[_0xe848('0x29')](_0x52ce78);};}exports[_0xe848('0x2a')]=function(_0x26f9de,_0x18dbaf){var _0x1f3799={},_0x48f73b={},_0x9888b5={'count':0x0,'rows':[]};var _0x5d7596=_[_0xe848('0x2b')](db[_0xe848('0x2c')][_0xe848('0x2d')],function(_0x1b45a3){return{'name':_0x1b45a3[_0xe848('0x2e')],'type':_0x1b45a3[_0xe848('0x2f')][_0xe848('0x30')]};});_0x48f73b[_0xe848('0x31')]=_[_0xe848('0x2b')](_0x5d7596,_0xe848('0x28'));_0x48f73b['query']=_[_0xe848('0x32')](_0x26f9de['query']);_0x48f73b['filters']=_[_0xe848('0x33')](_0x48f73b[_0xe848('0x31')],_0x48f73b[_0xe848('0x34')]);_0x1f3799['attributes']=_[_0xe848('0x33')](_0x48f73b[_0xe848('0x31')],qs[_0xe848('0x35')](_0x26f9de[_0xe848('0x34')][_0xe848('0x35')]));_0x1f3799[_0xe848('0x36')]=_0x1f3799['attributes']['length']?_0x1f3799[_0xe848('0x36')]:_0x48f73b[_0xe848('0x31')];if(!_0x26f9de['query'][_0xe848('0x37')](_0xe848('0x38'))){_0x1f3799[_0xe848('0x1e')]=qs[_0xe848('0x1e')](_0x26f9de[_0xe848('0x34')][_0xe848('0x1e')]);_0x1f3799[_0xe848('0x1c')]=qs[_0xe848('0x1c')](_0x26f9de['query'][_0xe848('0x1c')]);}_0x1f3799[_0xe848('0x39')]=qs[_0xe848('0x3a')](_0x26f9de[_0xe848('0x34')]['sort']);_0x1f3799['where']=qs[_0xe848('0x3b')](_[_0xe848('0x3c')](_0x26f9de[_0xe848('0x34')],_0x48f73b['filters']),_0x5d7596);if(_0x26f9de['query'][_0xe848('0x3d')]){_0x1f3799[_0xe848('0x3e')]=_[_0xe848('0x3f')](_0x1f3799[_0xe848('0x3e')],{'$or':_['map'](_0x5d7596,function(_0x2c19bb){if(_0x2c19bb['type']!=='VIRTUAL'){var _0x54bb07={};_0x54bb07[_0x2c19bb[_0xe848('0x28')]]={'$like':'%'+_0x26f9de[_0xe848('0x34')][_0xe848('0x3d')]+'%'};return _0x54bb07;}})});}_0x1f3799=_[_0xe848('0x3f')]({},_0x1f3799,_0x26f9de[_0xe848('0x40')]);var _0x249192={'where':_0x1f3799[_0xe848('0x3e')]};return db[_0xe848('0x2c')][_0xe848('0x1f')](_0x249192)[_0xe848('0x24')](function(_0x3e360c){_0x9888b5[_0xe848('0x1f')]=_0x3e360c;if(_0x26f9de['query'][_0xe848('0x41')]){_0x1f3799[_0xe848('0x42')]=[{'all':!![]}];}return db[_0xe848('0x2c')][_0xe848('0x43')](_0x1f3799);})[_0xe848('0x24')](function(_0x58a9cd){_0x9888b5[_0xe848('0x44')]=_0x58a9cd;return _0x9888b5;})[_0xe848('0x24')](respondWithFilteredResult(_0x18dbaf,_0x1f3799))[_0xe848('0x45')](handleError(_0x18dbaf,null));};exports[_0xe848('0x46')]=function(_0x1498ea,_0x5c6310){var _0xe2a139={'raw':!![],'where':{'id':_0x1498ea[_0xe848('0x47')]['id']}},_0x266e48={};_0x266e48[_0xe848('0x31')]=_[_0xe848('0x32')](db[_0xe848('0x2c')][_0xe848('0x2d')]);_0x266e48[_0xe848('0x34')]=_['keys'](_0x1498ea['query']);_0x266e48[_0xe848('0x3b')]=_['intersection'](_0x266e48[_0xe848('0x31')],_0x266e48[_0xe848('0x34')]);_0xe2a139['attributes']=_[_0xe848('0x33')](_0x266e48[_0xe848('0x31')],qs[_0xe848('0x35')](_0x1498ea[_0xe848('0x34')][_0xe848('0x35')]));_0xe2a139[_0xe848('0x36')]=_0xe2a139['attributes']['length']?_0xe2a139[_0xe848('0x36')]:_0x266e48[_0xe848('0x31')];if(_0x1498ea[_0xe848('0x34')][_0xe848('0x41')]){_0xe2a139['include']=[{'all':!![]}];}_0xe2a139=_[_0xe848('0x3f')]({},_0xe2a139,_0x1498ea[_0xe848('0x40')]);return db[_0xe848('0x2c')][_0xe848('0x48')](_0xe2a139)[_0xe848('0x24')](handleEntityNotFound(_0x5c6310,null))['then'](respondWithResult(_0x5c6310,null))['catch'](handleError(_0x5c6310,null));};exports[_0xe848('0x49')]=function(_0x22befd,_0x14e503){return db[_0xe848('0x2c')][_0xe848('0x49')](_0x22befd[_0xe848('0x4a')],{})[_0xe848('0x24')](function(_0x4a6393){var _0x1d2599=_0x22befd['user'][_0xe848('0x4b')]({'plain':!![]});if(!_0x1d2599)throw new Error(_0xe848('0x4c'));if(_0x1d2599[_0xe848('0x4d')]===_0xe848('0x4e')){var _0x863e17=_0x4a6393[_0xe848('0x4b')]({'plain':!![]});var _0x596a66=_0xe848('0x25');return db[_0xe848('0x4f')][_0xe848('0x48')]({'where':{'name':_0x596a66,'userProfileId':_0x1d2599[_0xe848('0x50')]},'raw':!![]})[_0xe848('0x24')](function(_0x436d0b){if(_0x436d0b&&_0x436d0b[_0xe848('0x51')]===0x0){return db['UserProfileResource'][_0xe848('0x49')]({'name':_0x863e17[_0xe848('0x28')],'resourceId':_0x863e17['id'],'type':_0x436d0b['name'],'sectionId':_0x436d0b['id']},{})[_0xe848('0x24')](function(){return _0x4a6393;});}else{return _0x4a6393;}})['catch'](function(_0x2c0962){logger[_0xe848('0x27')](_0xe848('0x52'),_0x2c0962);throw _0x2c0962;});}return _0x4a6393;})[_0xe848('0x24')](respondWithResult(_0x14e503,0xc9))[_0xe848('0x45')](handleError(_0x14e503,null));};exports['update']=function(_0x5c57ef,_0x3a5129){if(_0x5c57ef[_0xe848('0x4a')]['id']){delete _0x5c57ef['body']['id'];}return db[_0xe848('0x2c')][_0xe848('0x48')]({'where':{'id':_0x5c57ef[_0xe848('0x47')]['id']}})[_0xe848('0x24')](handleEntityNotFound(_0x3a5129,null))[_0xe848('0x24')](saveUpdates(_0x5c57ef[_0xe848('0x4a')],null))[_0xe848('0x24')](respondWithResult(_0x3a5129,null))[_0xe848('0x45')](handleError(_0x3a5129,null));};exports[_0xe848('0x53')]=function(_0x56c072,_0x18334a){return db[_0xe848('0x2c')][_0xe848('0x48')]({'where':{'id':_0x56c072[_0xe848('0x47')]['id']}})['then'](handleEntityNotFound(_0x18334a,null))[_0xe848('0x24')](removeEntity(_0x18334a,null))[_0xe848('0x45')](handleError(_0x18334a,null));};exports[_0xe848('0x54')]=function(_0x354820,_0x5e04fb,_0x271063){if(_0x354820[_0xe848('0x4a')]['id']){delete _0x354820[_0xe848('0x4a')]['id'];}return db[_0xe848('0x2c')][_0xe848('0x48')]({'where':{'id':_0x354820[_0xe848('0x47')]['id']}})['then'](handleEntityNotFound(_0x5e04fb,null))[_0xe848('0x24')](function(_0x45bc6f){if(_0x45bc6f){_0x354820[_0xe848('0x4a')][_0xe848('0x55')]=_0x45bc6f['id'];return db[_0xe848('0x2c')][_0xe848('0x49')](_0x354820[_0xe848('0x4a')]);}})[_0xe848('0x24')](respondWithResult(_0x5e04fb,null))[_0xe848('0x45')](handleError(_0x5e04fb,null));};exports[_0xe848('0x56')]=function(_0x4f39f5,_0x440c12,_0x3e534c){var _0x5b4da8={};var _0x19c60f={};var _0x358219;var _0x3c0ad7;return db[_0xe848('0x2c')][_0xe848('0x57')]({'where':{'id':_0x4f39f5[_0xe848('0x47')]['id']}})[_0xe848('0x24')](handleEntityNotFound(_0x440c12,null))['then'](function(_0x498e2f){if(_0x498e2f){_0x358219=_0x498e2f;_0x19c60f['model']=_[_0xe848('0x32')](db['Interval'][_0xe848('0x2d')]);_0x19c60f['query']=_[_0xe848('0x32')](_0x4f39f5[_0xe848('0x34')]);_0x19c60f[_0xe848('0x3b')]=_[_0xe848('0x33')](_0x19c60f['model'],_0x19c60f[_0xe848('0x34')]);_0x5b4da8[_0xe848('0x36')]=_[_0xe848('0x33')](_0x19c60f['model'],qs[_0xe848('0x35')](_0x4f39f5['query'][_0xe848('0x35')]));_0x5b4da8[_0xe848('0x36')]=_0x5b4da8[_0xe848('0x36')][_0xe848('0x58')]?_0x5b4da8[_0xe848('0x36')]:_0x19c60f['model'];_0x5b4da8[_0xe848('0x39')]=qs[_0xe848('0x3a')](_0x4f39f5[_0xe848('0x34')][_0xe848('0x3a')]);_0x5b4da8[_0xe848('0x3e')]=qs['filters'](_[_0xe848('0x3c')](_0x4f39f5[_0xe848('0x34')],_0x19c60f['filters']));if(_0x4f39f5[_0xe848('0x34')]['filter']){_0x5b4da8[_0xe848('0x3e')]=_[_0xe848('0x3f')](_0x5b4da8['where'],{'$or':_[_0xe848('0x2b')](_0x5b4da8['attributes'],function(_0x407354){var _0x3a207c={};_0x3a207c[_0x407354]={'$like':'%'+_0x4f39f5[_0xe848('0x34')][_0xe848('0x3d')]+'%'};return _0x3a207c;})});}_0x5b4da8=_[_0xe848('0x3f')]({},_0x5b4da8,_0x4f39f5[_0xe848('0x40')]);return _0x358219[_0xe848('0x56')](_0x5b4da8);}})[_0xe848('0x24')](function(_0x44f3e5){if(_0x44f3e5){_0x3c0ad7=_0x44f3e5[_0xe848('0x58')];if(!_0x4f39f5[_0xe848('0x34')][_0xe848('0x37')](_0xe848('0x38'))){_0x5b4da8['limit']=qs[_0xe848('0x1e')](_0x4f39f5[_0xe848('0x34')][_0xe848('0x1e')]);_0x5b4da8[_0xe848('0x1c')]=qs[_0xe848('0x1c')](_0x4f39f5[_0xe848('0x34')]['offset']);}return _0x358219['getIntervals'](_0x5b4da8);}})[_0xe848('0x24')](function(_0x2e6d2a){if(_0x2e6d2a){return _0x2e6d2a?{'count':_0x3c0ad7,'rows':_0x2e6d2a}:null;}})[_0xe848('0x24')](respondWithResult(_0x440c12,null))[_0xe848('0x45')](handleError(_0x440c12,null));};exports[_0xe848('0x59')]=function(_0x235028,_0x2832b9,_0x150c2b){return db['Interval'][_0xe848('0x57')]({'where':{'id':_0x235028['params']['id']}})[_0xe848('0x24')](handleEntityNotFound(_0x2832b9,null))[_0xe848('0x24')](function(_0x4c6d69){if(_0x4c6d69){return db[_0xe848('0x5a')][_0xe848('0x5b')](function(_0x225aca){return db[_0xe848('0x2c')][_0xe848('0x53')]({'where':{'IntervalId':_0x235028[_0xe848('0x47')]['id']},'transaction':_0x225aca})[_0xe848('0x24')](function(_0xe63b83){var _0x260d6e=_['map'](_0x235028[_0xe848('0x4a')],function(_0x1ee66d){delete _0x1ee66d['id'];_0x1ee66d[_0xe848('0x55')]=_0x235028['params']['id'];return _0x1ee66d;});return db[_0xe848('0x2c')][_0xe848('0x5c')](_0x260d6e,{'transaction':_0x225aca});});})['then'](function(){return db[_0xe848('0x2c')][_0xe848('0x43')]({'where':{'IntervalId':_0x235028[_0xe848('0x47')]['id']}});});}})['then'](respondWithResult(_0x2832b9,null))['catch'](handleError(_0x2832b9,null));};
\ No newline at end of file
+var _0x6b77=['reject','save','update','then','destroy','get','Intervals','UserProfileResource','stack','name','send','index','map','Interval','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','catch','params','includeAll','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','getIntervals','addIntervals','findOne','sequelize','transaction','bulkCreate','findAll','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply'];(function(_0x543b96,_0x54b356){var _0x144eb6=function(_0x3a2e80){while(--_0x3a2e80){_0x543b96['push'](_0x543b96['shift']());}};_0x144eb6(++_0x54b356);}(_0x6b77,0x152));var _0x76b7=function(_0x5f1c4b,_0x57c084){_0x5f1c4b=_0x5f1c4b-0x0;var _0x19ddda=_0x6b77[_0x5f1c4b];return _0x19ddda;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x76b7('0x0'));var zipdir=require(_0x76b7('0x1'));var jsonpatch=require(_0x76b7('0x2'));var rp=require(_0x76b7('0x3'));var moment=require(_0x76b7('0x4'));var BPromise=require(_0x76b7('0x5'));var Mustache=require(_0x76b7('0x6'));var util=require(_0x76b7('0x7'));var path=require('path');var sox=require(_0x76b7('0x8'));var csv=require('to-csv');var ejs=require(_0x76b7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76b7('0xa'));var squel=require(_0x76b7('0xb'));var crypto=require(_0x76b7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x76b7('0xd'));var toCsv=require(_0x76b7('0xe'));var querystring=require('querystring');var Papa=require(_0x76b7('0xf'));var Redis=require(_0x76b7('0x10'));var authService=require(_0x76b7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x76b7('0x12'));var hardwareService=require(_0x76b7('0x13'));var logger=require(_0x76b7('0x14'))(_0x76b7('0x15'));var utils=require(_0x76b7('0x16'));var config=require(_0x76b7('0x17'));var licenseUtil=require(_0x76b7('0x18'));var db=require(_0x76b7('0x19'))['db'];var extensions=require(_0x76b7('0x1a'));function respondWithStatusCode(_0x1e55f7,_0x6a57ac){_0x6a57ac=_0x6a57ac||0xcc;return function(_0x5a1e71){if(_0x5a1e71){return _0x1e55f7[_0x76b7('0x1b')](_0x6a57ac);}return _0x1e55f7[_0x76b7('0x1c')](_0x6a57ac)[_0x76b7('0x1d')]();};}function respondWithResult(_0x5350e3,_0x5ceaf6){_0x5ceaf6=_0x5ceaf6||0xc8;return function(_0x29350d){if(_0x29350d){return _0x5350e3[_0x76b7('0x1c')](_0x5ceaf6)['json'](_0x29350d);}};}function respondWithFilteredResult(_0x325bed,_0x150f83){return function(_0x5614e2){if(_0x5614e2){var _0x289e8a=typeof _0x150f83[_0x76b7('0x1e')]===_0x76b7('0x1f')&&typeof _0x150f83[_0x76b7('0x20')]===_0x76b7('0x1f');var _0x4e9ec2=_0x5614e2[_0x76b7('0x21')];var _0x5ecfd1=_0x289e8a?0x0:_0x150f83['offset'];var _0x134076=_0x289e8a?_0x5614e2[_0x76b7('0x21')]:_0x150f83[_0x76b7('0x1e')]+_0x150f83[_0x76b7('0x20')];var _0x371836;if(_0x134076>=_0x4e9ec2){_0x134076=_0x4e9ec2;_0x371836=0xc8;}else{_0x371836=0xce;}_0x325bed[_0x76b7('0x1c')](_0x371836);return _0x325bed[_0x76b7('0x22')](_0x76b7('0x23'),_0x5ecfd1+'-'+_0x134076+'/'+_0x4e9ec2)[_0x76b7('0x24')](_0x5614e2);}return null;};}function patchUpdates(_0x470107){return function(_0x5ebc9c){try{jsonpatch[_0x76b7('0x25')](_0x5ebc9c,_0x470107,!![]);}catch(_0x174ab2){return BPromise[_0x76b7('0x26')](_0x174ab2);}return _0x5ebc9c[_0x76b7('0x27')]();};}function saveUpdates(_0x567f58,_0x19beb7){return function(_0x557491){if(_0x557491){return _0x557491[_0x76b7('0x28')](_0x567f58)[_0x76b7('0x29')](function(_0x495e46){return _0x495e46;});}return null;};}function removeEntity(_0x5b7cb7,_0x24b5fd){return function(_0x586f9c){if(_0x586f9c){return _0x586f9c[_0x76b7('0x2a')]()[_0x76b7('0x29')](function(){var _0x34dbd5=_0x586f9c[_0x76b7('0x2b')]({'plain':!![]});var _0x21a303=_0x76b7('0x2c');return db[_0x76b7('0x2d')][_0x76b7('0x2a')]({'where':{'type':_0x21a303,'resourceId':_0x34dbd5['id']}})[_0x76b7('0x29')](function(){return _0x586f9c;});})[_0x76b7('0x29')](function(){_0x5b7cb7[_0x76b7('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x293f73,_0x4dbd47){return function(_0x579f9a){if(!_0x579f9a){_0x293f73[_0x76b7('0x1b')](0x194);}return _0x579f9a;};}function handleError(_0x2124d3,_0x138475){_0x138475=_0x138475||0x1f4;return function(_0x5dcf3d){logger['error'](_0x5dcf3d[_0x76b7('0x2e')]);if(_0x5dcf3d[_0x76b7('0x2f')]){delete _0x5dcf3d[_0x76b7('0x2f')];}_0x2124d3[_0x76b7('0x1c')](_0x138475)[_0x76b7('0x30')](_0x5dcf3d);};}exports[_0x76b7('0x31')]=function(_0x3386ab,_0x19a6a4){var _0x2650fc={},_0x1a195c={},_0x2975b4={'count':0x0,'rows':[]};var _0x145b32=_[_0x76b7('0x32')](db[_0x76b7('0x33')][_0x76b7('0x34')],function(_0x3c3dfc){return{'name':_0x3c3dfc[_0x76b7('0x35')],'type':_0x3c3dfc[_0x76b7('0x36')]['key']};});_0x1a195c[_0x76b7('0x37')]=_[_0x76b7('0x32')](_0x145b32,_0x76b7('0x2f'));_0x1a195c[_0x76b7('0x38')]=_[_0x76b7('0x39')](_0x3386ab['query']);_0x1a195c[_0x76b7('0x3a')]=_[_0x76b7('0x3b')](_0x1a195c[_0x76b7('0x37')],_0x1a195c[_0x76b7('0x38')]);_0x2650fc[_0x76b7('0x3c')]=_[_0x76b7('0x3b')](_0x1a195c[_0x76b7('0x37')],qs[_0x76b7('0x3d')](_0x3386ab['query'][_0x76b7('0x3d')]));_0x2650fc[_0x76b7('0x3c')]=_0x2650fc[_0x76b7('0x3c')][_0x76b7('0x3e')]?_0x2650fc[_0x76b7('0x3c')]:_0x1a195c[_0x76b7('0x37')];if(!_0x3386ab['query'][_0x76b7('0x3f')](_0x76b7('0x40'))){_0x2650fc[_0x76b7('0x20')]=qs['limit'](_0x3386ab[_0x76b7('0x38')][_0x76b7('0x20')]);_0x2650fc[_0x76b7('0x1e')]=qs['offset'](_0x3386ab['query'][_0x76b7('0x1e')]);}_0x2650fc[_0x76b7('0x41')]=qs['sort'](_0x3386ab[_0x76b7('0x38')][_0x76b7('0x42')]);_0x2650fc[_0x76b7('0x43')]=qs['filters'](_[_0x76b7('0x44')](_0x3386ab['query'],_0x1a195c[_0x76b7('0x3a')]),_0x145b32);if(_0x3386ab[_0x76b7('0x38')][_0x76b7('0x45')]){_0x2650fc[_0x76b7('0x43')]=_['merge'](_0x2650fc[_0x76b7('0x43')],{'$or':_[_0x76b7('0x32')](_0x145b32,function(_0x2d8c92){if(_0x2d8c92[_0x76b7('0x36')]!==_0x76b7('0x46')){var _0x5d9e5d={};_0x5d9e5d[_0x2d8c92[_0x76b7('0x2f')]]={'$like':'%'+_0x3386ab[_0x76b7('0x38')]['filter']+'%'};return _0x5d9e5d;}})});}_0x2650fc=_[_0x76b7('0x47')]({},_0x2650fc,_0x3386ab[_0x76b7('0x48')]);var _0x217255={'where':_0x2650fc['where']};return db[_0x76b7('0x33')][_0x76b7('0x21')](_0x217255)[_0x76b7('0x29')](function(_0x9db0a9){_0x2975b4[_0x76b7('0x21')]=_0x9db0a9;if(_0x3386ab[_0x76b7('0x38')]['includeAll']){_0x2650fc[_0x76b7('0x49')]=[{'all':!![]}];}return db[_0x76b7('0x33')]['findAll'](_0x2650fc);})[_0x76b7('0x29')](function(_0x2482bb){_0x2975b4[_0x76b7('0x4a')]=_0x2482bb;return _0x2975b4;})['then'](respondWithFilteredResult(_0x19a6a4,_0x2650fc))[_0x76b7('0x4b')](handleError(_0x19a6a4,null));};exports['show']=function(_0x1b75b5,_0x4fc6f0){var _0x5dc966={'raw':!![],'where':{'id':_0x1b75b5[_0x76b7('0x4c')]['id']}},_0x29ac10={};_0x29ac10[_0x76b7('0x37')]=_[_0x76b7('0x39')](db[_0x76b7('0x33')][_0x76b7('0x34')]);_0x29ac10[_0x76b7('0x38')]=_[_0x76b7('0x39')](_0x1b75b5[_0x76b7('0x38')]);_0x29ac10['filters']=_[_0x76b7('0x3b')](_0x29ac10[_0x76b7('0x37')],_0x29ac10[_0x76b7('0x38')]);_0x5dc966[_0x76b7('0x3c')]=_[_0x76b7('0x3b')](_0x29ac10[_0x76b7('0x37')],qs[_0x76b7('0x3d')](_0x1b75b5['query'][_0x76b7('0x3d')]));_0x5dc966[_0x76b7('0x3c')]=_0x5dc966['attributes']['length']?_0x5dc966[_0x76b7('0x3c')]:_0x29ac10[_0x76b7('0x37')];if(_0x1b75b5[_0x76b7('0x38')][_0x76b7('0x4d')]){_0x5dc966[_0x76b7('0x49')]=[{'all':!![]}];}_0x5dc966=_[_0x76b7('0x47')]({},_0x5dc966,_0x1b75b5['options']);return db['Interval'][_0x76b7('0x4e')](_0x5dc966)[_0x76b7('0x29')](handleEntityNotFound(_0x4fc6f0,null))['then'](respondWithResult(_0x4fc6f0,null))[_0x76b7('0x4b')](handleError(_0x4fc6f0,null));};exports[_0x76b7('0x4f')]=function(_0x9e0fbe,_0x1f0d14){return db[_0x76b7('0x33')][_0x76b7('0x4f')](_0x9e0fbe[_0x76b7('0x50')],{})[_0x76b7('0x29')](function(_0x2aa76d){var _0x480854=_0x9e0fbe['user'][_0x76b7('0x2b')]({'plain':!![]});if(!_0x480854)throw new Error(_0x76b7('0x51'));if(_0x480854[_0x76b7('0x52')]==='user'){var _0x5188f8=_0x2aa76d['get']({'plain':!![]});var _0x4ad59d='Intervals';return db['UserProfileSection']['find']({'where':{'name':_0x4ad59d,'userProfileId':_0x480854['userProfileId']},'raw':!![]})[_0x76b7('0x29')](function(_0x19f66b){if(_0x19f66b&&_0x19f66b[_0x76b7('0x53')]===0x0){return db[_0x76b7('0x2d')][_0x76b7('0x4f')]({'name':_0x5188f8[_0x76b7('0x2f')],'resourceId':_0x5188f8['id'],'type':_0x19f66b[_0x76b7('0x2f')],'sectionId':_0x19f66b['id']},{})[_0x76b7('0x29')](function(){return _0x2aa76d;});}else{return _0x2aa76d;}})[_0x76b7('0x4b')](function(_0x12eb51){logger[_0x76b7('0x54')](_0x76b7('0x55'),_0x12eb51);throw _0x12eb51;});}return _0x2aa76d;})['then'](respondWithResult(_0x1f0d14,0xc9))[_0x76b7('0x4b')](handleError(_0x1f0d14,null));};exports[_0x76b7('0x28')]=function(_0x425e21,_0x231099){if(_0x425e21[_0x76b7('0x50')]['id']){delete _0x425e21[_0x76b7('0x50')]['id'];}return db[_0x76b7('0x33')][_0x76b7('0x4e')]({'where':{'id':_0x425e21[_0x76b7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x231099,null))[_0x76b7('0x29')](saveUpdates(_0x425e21['body'],null))['then'](respondWithResult(_0x231099,null))[_0x76b7('0x4b')](handleError(_0x231099,null));};exports[_0x76b7('0x2a')]=function(_0x91c6c,_0x53922b){return db[_0x76b7('0x33')][_0x76b7('0x4e')]({'where':{'id':_0x91c6c[_0x76b7('0x4c')]['id']}})[_0x76b7('0x29')](handleEntityNotFound(_0x53922b,null))[_0x76b7('0x29')](removeEntity(_0x53922b,null))[_0x76b7('0x4b')](handleError(_0x53922b,null));};exports[_0x76b7('0x56')]=function(_0x210edd,_0x5d23df,_0x2f1491){if(_0x210edd[_0x76b7('0x50')]['id']){delete _0x210edd[_0x76b7('0x50')]['id'];}return db[_0x76b7('0x33')][_0x76b7('0x4e')]({'where':{'id':_0x210edd[_0x76b7('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5d23df,null))[_0x76b7('0x29')](function(_0x30fa26){if(_0x30fa26){_0x210edd[_0x76b7('0x50')]['IntervalId']=_0x30fa26['id'];return db['Interval'][_0x76b7('0x4f')](_0x210edd[_0x76b7('0x50')]);}})[_0x76b7('0x29')](respondWithResult(_0x5d23df,null))['catch'](handleError(_0x5d23df,null));};exports[_0x76b7('0x57')]=function(_0x368443,_0x1c4d5e,_0x23c1a1){var _0x159349={};var _0x239228={};var _0x59dfd3;var _0xf09e28;return db[_0x76b7('0x33')]['findOne']({'where':{'id':_0x368443[_0x76b7('0x4c')]['id']}})[_0x76b7('0x29')](handleEntityNotFound(_0x1c4d5e,null))[_0x76b7('0x29')](function(_0x1d96b7){if(_0x1d96b7){_0x59dfd3=_0x1d96b7;_0x239228[_0x76b7('0x37')]=_[_0x76b7('0x39')](db[_0x76b7('0x33')][_0x76b7('0x34')]);_0x239228[_0x76b7('0x38')]=_[_0x76b7('0x39')](_0x368443['query']);_0x239228[_0x76b7('0x3a')]=_[_0x76b7('0x3b')](_0x239228['model'],_0x239228[_0x76b7('0x38')]);_0x159349[_0x76b7('0x3c')]=_['intersection'](_0x239228['model'],qs[_0x76b7('0x3d')](_0x368443['query'][_0x76b7('0x3d')]));_0x159349['attributes']=_0x159349[_0x76b7('0x3c')][_0x76b7('0x3e')]?_0x159349['attributes']:_0x239228[_0x76b7('0x37')];_0x159349[_0x76b7('0x41')]=qs[_0x76b7('0x42')](_0x368443[_0x76b7('0x38')][_0x76b7('0x42')]);_0x159349['where']=qs[_0x76b7('0x3a')](_[_0x76b7('0x44')](_0x368443[_0x76b7('0x38')],_0x239228['filters']));if(_0x368443[_0x76b7('0x38')][_0x76b7('0x45')]){_0x159349['where']=_[_0x76b7('0x47')](_0x159349[_0x76b7('0x43')],{'$or':_[_0x76b7('0x32')](_0x159349[_0x76b7('0x3c')],function(_0x5e60fe){var _0xf94420={};_0xf94420[_0x5e60fe]={'$like':'%'+_0x368443[_0x76b7('0x38')][_0x76b7('0x45')]+'%'};return _0xf94420;})});}_0x159349=_['merge']({},_0x159349,_0x368443['options']);return _0x59dfd3['getIntervals'](_0x159349);}})[_0x76b7('0x29')](function(_0x1b67fa){if(_0x1b67fa){_0xf09e28=_0x1b67fa['length'];if(!_0x368443[_0x76b7('0x38')][_0x76b7('0x3f')](_0x76b7('0x40'))){_0x159349[_0x76b7('0x20')]=qs[_0x76b7('0x20')](_0x368443['query'][_0x76b7('0x20')]);_0x159349[_0x76b7('0x1e')]=qs[_0x76b7('0x1e')](_0x368443[_0x76b7('0x38')][_0x76b7('0x1e')]);}return _0x59dfd3[_0x76b7('0x57')](_0x159349);}})[_0x76b7('0x29')](function(_0x36e860){if(_0x36e860){return _0x36e860?{'count':_0xf09e28,'rows':_0x36e860}:null;}})[_0x76b7('0x29')](respondWithResult(_0x1c4d5e,null))[_0x76b7('0x4b')](handleError(_0x1c4d5e,null));};exports[_0x76b7('0x58')]=function(_0x188ef6,_0x5578a4,_0x25cd48){return db[_0x76b7('0x33')][_0x76b7('0x59')]({'where':{'id':_0x188ef6['params']['id']}})[_0x76b7('0x29')](handleEntityNotFound(_0x5578a4,null))[_0x76b7('0x29')](function(_0x1dd8e8){if(_0x1dd8e8){return db[_0x76b7('0x5a')][_0x76b7('0x5b')](function(_0x22f187){return db['Interval'][_0x76b7('0x2a')]({'where':{'IntervalId':_0x188ef6[_0x76b7('0x4c')]['id']},'transaction':_0x22f187})[_0x76b7('0x29')](function(_0x2c9b49){var _0x40a042=_[_0x76b7('0x32')](_0x188ef6['body'],function(_0x51c364){delete _0x51c364['id'];_0x51c364['IntervalId']=_0x188ef6[_0x76b7('0x4c')]['id'];return _0x51c364;});return db['Interval'][_0x76b7('0x5c')](_0x40a042,{'transaction':_0x22f187});});})['then'](function(){return db[_0x76b7('0x33')][_0x76b7('0x5d')]({'where':{'IntervalId':_0x188ef6[_0x76b7('0x4c')]['id']}});});}})[_0x76b7('0x29')](respondWithResult(_0x5578a4,null))[_0x76b7('0x4b')](handleError(_0x5578a4,null));};
\ No newline at end of file
index d10bc5e..6cc6684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3737=['ifTime','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','define','Interval','tools_intervals','rewrite','interval','string','getIntervals','then','all'];(function(_0x1e57ba,_0x44f960){var _0x1fcd20=function(_0x1c8a18){while(--_0x1c8a18){_0x1e57ba['push'](_0x1e57ba['shift']());}};_0x1fcd20(++_0x44f960);}(_0x3737,0x1c3));var _0x7373=function(_0x28bda3,_0x43f1a6){_0x28bda3=_0x28bda3-0x0;var _0x346c2c=_0x3737[_0x28bda3];return _0x346c2c;};'use strict';var attributes=require(_0x7373('0x0'));var extensions=require(_0x7373('0x1'));var iftime=require(_0x7373('0x2'))[_0x7373('0x3')];module[_0x7373('0x4')]=function(_0x364fe3){return _0x364fe3[_0x7373('0x5')](_0x7373('0x6'),attributes,{'tableName':_0x7373('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4fddf8){extensions[_0x7373('0x8')](_0x364fe3,_0x4fddf8);},'afterBulkCreate':function(_0x1ee1b2,_0x465790,_0x5639e6){_0x5639e6();extensions[_0x7373('0x8')](_0x364fe3,_0x1ee1b2[0x0]);},'afterUpdate':function(_0x2ef8a1){extensions['rewrite'](_0x364fe3,_0x2ef8a1);},'afterDestroy':function(_0x4297fc){extensions[_0x7373('0x8')](_0x364fe3,_0x4297fc);}},'instanceMethods':{'ifTime':function(_0x14cf10=undefined,_0x20ff21=new Date()){if(typeof this[_0x7373('0x9')]===_0x7373('0xa')){return iftime(this[_0x7373('0x9')],_0x14cf10,_0x20ff21);}else{return this[_0x7373('0xb')]()[_0x7373('0xc')](function(_0x52e99c){return Promise[_0x7373('0xd')](_0x52e99c['map'](function(_0x1266cc){return _0x1266cc[_0x7373('0xe')](_0x14cf10,_0x20ff21);}));})[_0x7373('0xc')](function(_0x5b7dec){return _0x5b7dec['reduce'](function(_0x3a5d78,_0x55977a){return _0x3a5d78||_0x55977a;},![]);});}}}});};
\ No newline at end of file
+var _0xfd6e=['./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','exports','define','Interval','tools_intervals','rewrite','string','interval','getIntervals','then','all','map','ifTime','reduce'];(function(_0x245503,_0x239a16){var _0x3e35f0=function(_0x53fff0){while(--_0x53fff0){_0x245503['push'](_0x245503['shift']());}};_0x3e35f0(++_0x239a16);}(_0xfd6e,0x90));var _0xefd6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfd6e[_0x3ab51d];return _0x29a04e;};'use strict';var attributes=require(_0xefd6('0x0'));var extensions=require(_0xefd6('0x1'));var iftime=require(_0xefd6('0x2'))['iftime'];module[_0xefd6('0x3')]=function(_0x524f05){return _0x524f05[_0xefd6('0x4')](_0xefd6('0x5'),attributes,{'tableName':_0xefd6('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4dc0f1){extensions[_0xefd6('0x7')](_0x524f05,_0x4dc0f1);},'afterBulkCreate':function(_0x2a126e,_0x2f57b0,_0x3a7b72){_0x3a7b72();extensions['rewrite'](_0x524f05,_0x2a126e[0x0]);},'afterUpdate':function(_0x127076){extensions[_0xefd6('0x7')](_0x524f05,_0x127076);},'afterDestroy':function(_0x18a06d){extensions[_0xefd6('0x7')](_0x524f05,_0x18a06d);}},'instanceMethods':{'ifTime':function(_0x54b486=undefined,_0x1c054c=new Date()){if(typeof this['interval']===_0xefd6('0x8')){return iftime(this[_0xefd6('0x9')],_0x54b486,_0x1c054c);}else{return this[_0xefd6('0xa')]()[_0xefd6('0xb')](function(_0x231223){return Promise[_0xefd6('0xc')](_0x231223[_0xefd6('0xd')](function(_0x1ac718){return _0x1ac718[_0xefd6('0xe')](_0x54b486,_0x1c054c);}));})[_0xefd6('0xb')](function(_0x2d20e2){return _0x2d20e2[_0xefd6('0xf')](function(_0x341f67,_0x24b10b){return _0x341f67||_0x24b10b;},![]);});}}}});};
\ No newline at end of file
index 3233b91..e90611c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2206=['ShowInterval','info','catch','all','ifTime','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','IntervalIftime','intervalIds','isArray','intervals','string','length','Iftime','silly','reduce','lodash','util','../../mysqldb','../../utils/iftime','iftime','GetInterval','Interval','options','raw','where','attributes','limit','include','model','map','then','debug','stringify','error','message'];(function(_0x22981b,_0x2d7ec4){var _0x268780=function(_0x2ce6ac){while(--_0x2ce6ac){_0x22981b['push'](_0x22981b['shift']());}};_0x268780(++_0x2d7ec4);}(_0x2206,0x14b));var _0x6220=function(_0x2abcfa,_0x1d47a5){_0x2abcfa=_0x2abcfa-0x0;var _0x1bcea3=_0x2206[_0x2abcfa];return _0x1bcea3;};'use strict';var _=require(_0x6220('0x0'));var util=require(_0x6220('0x1'));var db=require(_0x6220('0x2'))['db'];var iftime=require(_0x6220('0x3'))[_0x6220('0x4')];var logger=require('../../config/logger')('rpc');exports[_0x6220('0x5')]=function(_0x121baa){var _0x5a01e0=this;return new Promise(function(_0x51d682,_0x3a25f2){return db[_0x6220('0x6')]['findAll']({'raw':_0x121baa[_0x6220('0x7')]?_0x121baa[_0x6220('0x7')][_0x6220('0x8')]===undefined?!![]:![]:!![],'where':_0x121baa['options']?_0x121baa['options'][_0x6220('0x9')]||null:null,'attributes':_0x121baa[_0x6220('0x7')]?_0x121baa['options'][_0x6220('0xa')]||null:null,'limit':_0x121baa[_0x6220('0x7')]?_0x121baa['options'][_0x6220('0xb')]||null:null,'include':_0x121baa['options']?_0x121baa[_0x6220('0x7')]['include']?_['map'](_0x121baa[_0x6220('0x7')][_0x6220('0xc')],function(_0x571a41){return{'model':db[_0x571a41[_0x6220('0xd')]],'as':_0x571a41['as'],'attributes':_0x571a41[_0x6220('0xa')],'include':_0x571a41[_0x6220('0xc')]?_[_0x6220('0xe')](_0x571a41[_0x6220('0xc')],function(_0x4d6c82){return{'model':db[_0x4d6c82[_0x6220('0xd')]],'as':_0x4d6c82['as'],'attributes':_0x4d6c82[_0x6220('0xa')],'include':_0x4d6c82['include']?_['map'](_0x4d6c82[_0x6220('0xc')],function(_0x2fb1ec){return{'model':db[_0x2fb1ec[_0x6220('0xd')]],'as':_0x2fb1ec['as'],'attributes':_0x2fb1ec['attributes']};}):[]};}):[]};}):[]:[]})[_0x6220('0xf')](function(_0x5eb6f8){logger['info']('GetInterval',_0x121baa);logger[_0x6220('0x10')](_0x6220('0x5'),_0x121baa,JSON[_0x6220('0x11')](_0x5eb6f8));_0x51d682(_0x5eb6f8);})['catch'](function(_0x3342cc){logger[_0x6220('0x12')](_0x6220('0x5'),_0x3342cc[_0x6220('0x13')],_0x121baa);_0x3a25f2(_0x5a01e0[_0x6220('0x12')](0x1f4,_0x3342cc['message']));});});};exports[_0x6220('0x14')]=function(_0x2cef1e){var _0xcf0701=this;return new Promise(function(_0x5b8c49,_0x1169e7){return db[_0x6220('0x6')]['find']({'raw':_0x2cef1e[_0x6220('0x7')]?_0x2cef1e[_0x6220('0x7')][_0x6220('0x8')]===undefined?!![]:![]:!![],'where':_0x2cef1e[_0x6220('0x7')]?_0x2cef1e[_0x6220('0x7')][_0x6220('0x9')]||null:null,'attributes':_0x2cef1e[_0x6220('0x7')]?_0x2cef1e['options'][_0x6220('0xa')]||null:null,'include':_0x2cef1e[_0x6220('0x7')]?_0x2cef1e[_0x6220('0x7')][_0x6220('0xc')]?_['map'](_0x2cef1e[_0x6220('0x7')]['include'],function(_0x3ed8d7){return{'model':db[_0x3ed8d7[_0x6220('0xd')]],'as':_0x3ed8d7['as'],'attributes':_0x3ed8d7['attributes'],'include':_0x3ed8d7[_0x6220('0xc')]?_[_0x6220('0xe')](_0x3ed8d7[_0x6220('0xc')],function(_0x5d06f3){return{'model':db[_0x5d06f3[_0x6220('0xd')]],'as':_0x5d06f3['as'],'attributes':_0x5d06f3['attributes'],'include':_0x5d06f3[_0x6220('0xc')]?_[_0x6220('0xe')](_0x5d06f3[_0x6220('0xc')],function(_0x12f42a){return{'model':db[_0x12f42a['model']],'as':_0x12f42a['as'],'attributes':_0x12f42a['attributes']};}):[]};}):[]};}):[]:[]})[_0x6220('0xf')](function(_0x7440b8){logger[_0x6220('0x15')](_0x6220('0x14'),_0x2cef1e);logger[_0x6220('0x10')]('ShowInterval',_0x2cef1e,JSON[_0x6220('0x11')](_0x7440b8));_0x5b8c49(_0x7440b8);})[_0x6220('0x16')](function(_0x43f45b){logger[_0x6220('0x12')](_0x6220('0x14'),_0x43f45b[_0x6220('0x13')],_0x2cef1e);_0x1169e7(_0xcf0701[_0x6220('0x12')](0x1f4,_0x43f45b[_0x6220('0x13')]));});});};function checkArrayOfIntervals(_0x36fb82,_0x27c3b6){var _0x292114=[];return db[_0x6220('0x6')]['findAll']({'where':{'id':_0x36fb82}})[_0x6220('0xf')](function(_0x29af38){_0x292114=_0x29af38;return Promise[_0x6220('0x17')](_0x292114[_0x6220('0xe')](function(_0x44ca09){return _0x44ca09[_0x6220('0x18')](_0x27c3b6);}));})[_0x6220('0xf')](function(_0x61408d){var _0x2d7453=_0x61408d['reduce'](function(_0x33718f,_0x2b2608){return _0x33718f||_0x2b2608;},![]);logger[_0x6220('0x15')](util[_0x6220('0x19')](_0x6220('0x1a'),_0x292114[_0x6220('0xe')](function(_0x593565){return _0x593565[_0x6220('0x1b')];})[_0x6220('0x1c')](',\x20'),_0x292114[_0x6220('0xe')](function(_0x3af407){return _0x3af407['id'];})[_0x6220('0x1c')](',\x20')));return _0x2d7453;});}function checkSingleInterval(_0x2afc0d,_0x484d0c){return db[_0x6220('0x6')]['findById'](_0x2afc0d)[_0x6220('0xf')](function(_0xed5962){if(_0xed5962){logger['info'](util[_0x6220('0x19')](_0x6220('0x1d'),_0xed5962[_0x6220('0x1b')],_0xed5962['id']));return _0xed5962['ifTime'](_0x484d0c);}});}exports[_0x6220('0x1e')]=function(_0x39f381){var _0x1fd7b2=_0x39f381[_0x6220('0x1f')];var _0x31714d=Array[_0x6220('0x20')](_0x39f381['intervals'])?_0x39f381[_0x6220('0x21')]:typeof _0x39f381[_0x6220('0x21')]===_0x6220('0x22')?[_0x39f381[_0x6220('0x21')]]:[];var _0x4f71fa=_0x39f381['timezone']||undefined;var _0x32b1ec=![];if(_0x31714d[_0x6220('0x23')]){logger[_0x6220('0x15')](util['format']('IntervalIftime:\x20interval\x20strings\x20=\x20%s',_0x31714d[_0x6220('0x1c')](';\x20')));}if(_0x4f71fa){logger[_0x6220('0x15')](util['format']('IntervalIftime:\x20timezone\x20=\x20%s',_0x4f71fa));}logger['debug'](_0x6220('0x24'),_0x32b1ec);logger[_0x6220('0x25')]('IntervalIftime',_0x39f381);return Promise['resolve']()['then'](function(){if(Array['isArray'](_0x1fd7b2)){return checkArrayOfIntervals(_0x1fd7b2,_0x4f71fa);}else if(_0x1fd7b2){return checkSingleInterval(_0x1fd7b2,_0x4f71fa);}})['then'](function(_0x44ee1b){var _0x490a7a=_0x31714d[_0x6220('0x26')](function(_0x332085,_0x51c370){return _0x332085||iftime(_0x51c370,_0x4f71fa);},![]);_0x32b1ec=_0x44ee1b||_0x490a7a;return _0x32b1ec;})[_0x6220('0x16')](function(_0x2f2313){logger[_0x6220('0x12')](_0x6220('0x1e'),_0x39f381,_0x2f2313);throw this['error'](0x1f4,_0x2f2313['message']);});};
\ No newline at end of file
+var _0xab3c=['name','IntervalIftime','intervalIds','isArray','intervals','string','length','IntervalIftime:\x20interval\x20strings\x20=\x20%s','IntervalIftime:\x20timezone\x20=\x20%s','silly','resolve','lodash','util','../../mysqldb','../../utils/iftime','iftime','../../config/logger','rpc','GetInterval','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','catch','message','error','Interval','find','info','ShowInterval','all','ifTime','reduce','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','join','findById','format','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)'];(function(_0x16ae1b,_0x3261c0){var _0x4cc3f9=function(_0x673a9a){while(--_0x673a9a){_0x16ae1b['push'](_0x16ae1b['shift']());}};_0x4cc3f9(++_0x3261c0);}(_0xab3c,0x95));var _0xcab3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xab3c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcab3('0x0'));var util=require(_0xcab3('0x1'));var db=require(_0xcab3('0x2'))['db'];var iftime=require(_0xcab3('0x3'))[_0xcab3('0x4')];var logger=require(_0xcab3('0x5'))(_0xcab3('0x6'));exports[_0xcab3('0x7')]=function(_0x26bbe9){var _0x3af0f1=this;return new Promise(function(_0x218a7b,_0x170b95){return db['Interval'][_0xcab3('0x8')]({'raw':_0x26bbe9[_0xcab3('0x9')]?_0x26bbe9[_0xcab3('0x9')][_0xcab3('0xa')]===undefined?!![]:![]:!![],'where':_0x26bbe9[_0xcab3('0x9')]?_0x26bbe9['options'][_0xcab3('0xb')]||null:null,'attributes':_0x26bbe9[_0xcab3('0x9')]?_0x26bbe9['options'][_0xcab3('0xc')]||null:null,'limit':_0x26bbe9['options']?_0x26bbe9[_0xcab3('0x9')][_0xcab3('0xd')]||null:null,'include':_0x26bbe9[_0xcab3('0x9')]?_0x26bbe9[_0xcab3('0x9')][_0xcab3('0xe')]?_[_0xcab3('0xf')](_0x26bbe9['options'][_0xcab3('0xe')],function(_0x62ef61){return{'model':db[_0x62ef61[_0xcab3('0x10')]],'as':_0x62ef61['as'],'attributes':_0x62ef61['attributes'],'include':_0x62ef61[_0xcab3('0xe')]?_['map'](_0x62ef61[_0xcab3('0xe')],function(_0x5a63e3){return{'model':db[_0x5a63e3['model']],'as':_0x5a63e3['as'],'attributes':_0x5a63e3[_0xcab3('0xc')],'include':_0x5a63e3['include']?_[_0xcab3('0xf')](_0x5a63e3[_0xcab3('0xe')],function(_0x3d604d){return{'model':db[_0x3d604d['model']],'as':_0x3d604d['as'],'attributes':_0x3d604d[_0xcab3('0xc')]};}):[]};}):[]};}):[]:[]})[_0xcab3('0x11')](function(_0x1f3049){logger['info']('GetInterval',_0x26bbe9);logger[_0xcab3('0x12')]('GetInterval',_0x26bbe9,JSON[_0xcab3('0x13')](_0x1f3049));_0x218a7b(_0x1f3049);})[_0xcab3('0x14')](function(_0x38c3d9){logger['error'](_0xcab3('0x7'),_0x38c3d9[_0xcab3('0x15')],_0x26bbe9);_0x170b95(_0x3af0f1[_0xcab3('0x16')](0x1f4,_0x38c3d9[_0xcab3('0x15')]));});});};exports['ShowInterval']=function(_0x36af37){var _0xfb9782=this;return new Promise(function(_0x4479ce,_0x2f0d89){return db[_0xcab3('0x17')][_0xcab3('0x18')]({'raw':_0x36af37['options']?_0x36af37[_0xcab3('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0x36af37[_0xcab3('0x9')]?_0x36af37['options'][_0xcab3('0xb')]||null:null,'attributes':_0x36af37[_0xcab3('0x9')]?_0x36af37[_0xcab3('0x9')][_0xcab3('0xc')]||null:null,'include':_0x36af37[_0xcab3('0x9')]?_0x36af37[_0xcab3('0x9')][_0xcab3('0xe')]?_[_0xcab3('0xf')](_0x36af37[_0xcab3('0x9')][_0xcab3('0xe')],function(_0xbf21d4){return{'model':db[_0xbf21d4[_0xcab3('0x10')]],'as':_0xbf21d4['as'],'attributes':_0xbf21d4['attributes'],'include':_0xbf21d4[_0xcab3('0xe')]?_['map'](_0xbf21d4[_0xcab3('0xe')],function(_0xceb2df){return{'model':db[_0xceb2df['model']],'as':_0xceb2df['as'],'attributes':_0xceb2df[_0xcab3('0xc')],'include':_0xceb2df[_0xcab3('0xe')]?_[_0xcab3('0xf')](_0xceb2df[_0xcab3('0xe')],function(_0x18ac0c){return{'model':db[_0x18ac0c[_0xcab3('0x10')]],'as':_0x18ac0c['as'],'attributes':_0x18ac0c[_0xcab3('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x41c10d){logger[_0xcab3('0x19')](_0xcab3('0x1a'),_0x36af37);logger[_0xcab3('0x12')](_0xcab3('0x1a'),_0x36af37,JSON[_0xcab3('0x13')](_0x41c10d));_0x4479ce(_0x41c10d);})[_0xcab3('0x14')](function(_0x2c045b){logger[_0xcab3('0x16')](_0xcab3('0x1a'),_0x2c045b[_0xcab3('0x15')],_0x36af37);_0x2f0d89(_0xfb9782[_0xcab3('0x16')](0x1f4,_0x2c045b['message']));});});};function checkArrayOfIntervals(_0x3308ea,_0x240b0c){var _0x4cd7de=[];return db['Interval']['findAll']({'where':{'id':_0x3308ea}})[_0xcab3('0x11')](function(_0x291299){_0x4cd7de=_0x291299;return Promise[_0xcab3('0x1b')](_0x4cd7de[_0xcab3('0xf')](function(_0x5bcf4e){return _0x5bcf4e[_0xcab3('0x1c')](_0x240b0c);}));})['then'](function(_0x3946d6){var _0x5cf406=_0x3946d6[_0xcab3('0x1d')](function(_0x20a3fc,_0x53e9af){return _0x20a3fc||_0x53e9af;},![]);logger[_0xcab3('0x19')](util['format'](_0xcab3('0x1e'),_0x4cd7de[_0xcab3('0xf')](function(_0x5056f3){return _0x5056f3['name'];})[_0xcab3('0x1f')](',\x20'),_0x4cd7de['map'](function(_0x2b00c3){return _0x2b00c3['id'];})[_0xcab3('0x1f')](',\x20')));return _0x5cf406;});}function checkSingleInterval(_0x2bb0f6,_0x29d6ee){return db['Interval'][_0xcab3('0x20')](_0x2bb0f6)[_0xcab3('0x11')](function(_0x2af6fb){if(_0x2af6fb){logger[_0xcab3('0x19')](util[_0xcab3('0x21')](_0xcab3('0x22'),_0x2af6fb[_0xcab3('0x23')],_0x2af6fb['id']));return _0x2af6fb[_0xcab3('0x1c')](_0x29d6ee);}});}exports[_0xcab3('0x24')]=function(_0x542ef1){var _0x2c949c=_0x542ef1[_0xcab3('0x25')];var _0xe687aa=Array[_0xcab3('0x26')](_0x542ef1['intervals'])?_0x542ef1[_0xcab3('0x27')]:typeof _0x542ef1[_0xcab3('0x27')]===_0xcab3('0x28')?[_0x542ef1[_0xcab3('0x27')]]:[];var _0x394f1d=_0x542ef1['timezone']||undefined;var _0x1c1535=![];if(_0xe687aa[_0xcab3('0x29')]){logger[_0xcab3('0x19')](util[_0xcab3('0x21')](_0xcab3('0x2a'),_0xe687aa[_0xcab3('0x1f')](';\x20')));}if(_0x394f1d){logger[_0xcab3('0x19')](util[_0xcab3('0x21')](_0xcab3('0x2b'),_0x394f1d));}logger['debug']('Iftime',_0x1c1535);logger[_0xcab3('0x2c')](_0xcab3('0x24'),_0x542ef1);return Promise[_0xcab3('0x2d')]()['then'](function(){if(Array[_0xcab3('0x26')](_0x2c949c)){return checkArrayOfIntervals(_0x2c949c,_0x394f1d);}else if(_0x2c949c){return checkSingleInterval(_0x2c949c,_0x394f1d);}})[_0xcab3('0x11')](function(_0x24730a){var _0x7b78ab=_0xe687aa[_0xcab3('0x1d')](function(_0x3e0503,_0x1c7b4a){return _0x3e0503||iftime(_0x1c7b4a,_0x394f1d);},![]);_0x1c1535=_0x24730a||_0x7b78ab;return _0x1c1535;})[_0xcab3('0x14')](function(_0x56e47c){logger['error'](_0xcab3('0x24'),_0x542ef1,_0x56e47c);throw this['error'](0x1f4,_0x56e47c[_0xcab3('0x15')]);});};
\ No newline at end of file
index 3cd043a..e5cc9a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['exports','express','../../components/auth/service','post','isAuthenticated','send'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x0b0e,0x187));var _0xe0b0=function(_0x2650e9,_0xb91cc){_0x2650e9=_0x2650e9-0x0;var _0x3511c8=_0x0b0e[_0x2650e9];return _0x3511c8;};'use strict';var express=require(_0xe0b0('0x0'));var router=express['Router']();var auth=require(_0xe0b0('0x1'));var controller=require('./jira.controller');router[_0xe0b0('0x2')]('/',auth[_0xe0b0('0x3')](),controller[_0xe0b0('0x4')]);module[_0xe0b0('0x5')]=router;
\ No newline at end of file
+var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x5a6c3f,_0x358342){var _0x2bd67e=function(_0x373365){while(--_0x373365){_0x5a6c3f['push'](_0x5a6c3f['shift']());}};_0x2bd67e(++_0x358342);}(_0x2ef3,0xba));var _0x32ef=function(_0x3fb447,_0x324b02){_0x3fb447=_0x3fb447-0x0;var _0x360396=_0x2ef3[_0x3fb447];return _0x360396;};'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
index 5a6b218..49f0f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ce=['setEncoding','utf8','data','status','statusCode','json','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','openIssue','send','body','headers','remoteAddress','socket','connection','bluebird','https','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','customfield_11500','email','customfield_11501','fields','customfield_11502','newToken','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString','base64','request'];(function(_0x29e9fe,_0x2e8c2b){var _0x2d6f79=function(_0x5bd8bb){while(--_0x5bd8bb){_0x29e9fe['push'](_0x29e9fe['shift']());}};_0x2d6f79(++_0x2e8c2b);}(_0x09ce,0x6c));var _0xe09c=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x09ce[_0x122ef9];return _0x42fba0;};'use strict';var BPromise=require(_0xe09c('0x0'));var https=require(_0xe09c('0x1'));var logger=require('../../config/logger')(_0xe09c('0x2'));var USERNAME=_0xe09c('0x3');var PASSWORD=_0xe09c('0x4');function openIssue(_0x443df3,_0x249ca0){var _0x1a9aad={'fields':{'project':{'key':_0x443df3[_0xe09c('0x5')]||_0xe09c('0x6')},'summary':(_0x443df3[_0xe09c('0x7')]||_0xe09c('0x8'))+_0xe09c('0x9')+_0x443df3['ip'],'description':_0x443df3[_0xe09c('0xa')]||JSON[_0xe09c('0xb')](_0x443df3),'issuetype':{'name':_0x443df3[_0xe09c('0xc')]||_0xe09c('0xd')}}};_0x1a9aad['fields'][_0xe09c('0xe')]=_0x443df3[_0xe09c('0xf')];_0x1a9aad['fields'][_0xe09c('0x10')]=_0x443df3['oldToken'];_0x1a9aad[_0xe09c('0x11')][_0xe09c('0x12')]=_0x443df3[_0xe09c('0x13')];_0x1a9aad['fields']['customfield_11503']=_0x443df3['name'];_0x1a9aad[_0xe09c('0x11')][_0xe09c('0x14')]=_0x443df3[_0xe09c('0x15')];_0x1a9aad['fields'][_0xe09c('0x16')]=_0x443df3['ip'];var _0x1a7651={'host':_0xe09c('0x17'),'port':0x1bb,'path':_0xe09c('0x18'),'method':_0xe09c('0x19'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xe09c('0x1a')+new Buffer(USERNAME+':'+PASSWORD)[_0xe09c('0x1b')](_0xe09c('0x1c'))}};var _0x13c1c2=JSON[_0xe09c('0xb')](_0x1a9aad);var _0x560c7e=https[_0xe09c('0x1d')](_0x1a7651,function(_0x3363b4){_0x3363b4[_0xe09c('0x1e')](_0xe09c('0x1f'));var _0x22c002='';_0x3363b4['on'](_0xe09c('0x20'),function(_0x5e83af){_0x22c002+=_0x5e83af;});_0x3363b4['on']('end',function(){if(_0x249ca0){return _0x249ca0[_0xe09c('0x21')](_0x3363b4[_0xe09c('0x22')])[_0xe09c('0x23')](JSON['parse'](_0x22c002));}});});_0x560c7e['on'](_0xe09c('0x24'),function(_0x369061){if(_0x249ca0){return _0x249ca0[_0xe09c('0x21')](0x1f4)['json']({'errors':[{'message':_0xe09c('0x25'),'type':_0xe09c('0x26')}]});}});_0x560c7e['write'](_0x13c1c2);_0x560c7e['end']();}exports[_0xe09c('0x27')]=openIssue;exports[_0xe09c('0x28')]=function(_0x2c7057,_0x26629b){_0x2c7057[_0xe09c('0x29')]['ip']=_0x2c7057[_0xe09c('0x2a')]['x-forwarded-for']||_0x2c7057['connection'][_0xe09c('0x2b')]||_0x2c7057[_0xe09c('0x2c')][_0xe09c('0x2b')]||_0x2c7057[_0xe09c('0x2d')][_0xe09c('0x2c')][_0xe09c('0x2b')];return openIssue(_0x2c7057[_0xe09c('0x29')],_0x26629b);};
\ No newline at end of file
+var _0xdb7c=['summary','Report','\x20from\x20','description','stringify','fields','customfield_11500','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','end','status','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','send','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','key','MOTGUI'];(function(_0x362f5f,_0x48b55c){var _0xd5b7c4=function(_0x2d7749){while(--_0x2d7749){_0x362f5f['push'](_0x362f5f['shift']());}};_0xd5b7c4(++_0x48b55c);}(_0xdb7c,0x1bb));var _0xcdb7=function(_0x5cbd7b,_0x207439){_0x5cbd7b=_0x5cbd7b-0x0;var _0x3fdfb8=_0xdb7c[_0x5cbd7b];return _0x3fdfb8;};'use strict';var BPromise=require(_0xcdb7('0x0'));var https=require(_0xcdb7('0x1'));var logger=require(_0xcdb7('0x2'))(_0xcdb7('0x3'));var USERNAME=_0xcdb7('0x4');var PASSWORD='3eAmWpBVP0';function openIssue(_0x4094e8,_0x51ed47){var _0x23b71c={'fields':{'project':{'key':_0x4094e8[_0xcdb7('0x5')]||_0xcdb7('0x6')},'summary':(_0x4094e8[_0xcdb7('0x7')]||_0xcdb7('0x8'))+_0xcdb7('0x9')+_0x4094e8['ip'],'description':_0x4094e8[_0xcdb7('0xa')]||JSON[_0xcdb7('0xb')](_0x4094e8),'issuetype':{'name':_0x4094e8['issuetype']||'Bug'}}};_0x23b71c[_0xcdb7('0xc')][_0xcdb7('0xd')]=_0x4094e8['email'];_0x23b71c['fields'][_0xcdb7('0xe')]=_0x4094e8[_0xcdb7('0xf')];_0x23b71c[_0xcdb7('0xc')][_0xcdb7('0x10')]=_0x4094e8[_0xcdb7('0x11')];_0x23b71c['fields'][_0xcdb7('0x12')]=_0x4094e8['name'];_0x23b71c[_0xcdb7('0xc')][_0xcdb7('0x13')]=_0x4094e8['reason'];_0x23b71c[_0xcdb7('0xc')][_0xcdb7('0x14')]=_0x4094e8['ip'];var _0x746133={'host':_0xcdb7('0x15'),'port':0x1bb,'path':_0xcdb7('0x16'),'method':_0xcdb7('0x17'),'timeout':0x4e20,'headers':{'Content-Type':_0xcdb7('0x18'),'Authorization':_0xcdb7('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0xcdb7('0x1a')](_0xcdb7('0x1b'))}};var _0x359c0e=JSON[_0xcdb7('0xb')](_0x23b71c);var _0x35020d=https[_0xcdb7('0x1c')](_0x746133,function(_0xfa973b){_0xfa973b[_0xcdb7('0x1d')](_0xcdb7('0x1e'));var _0x119c64='';_0xfa973b['on'](_0xcdb7('0x1f'),function(_0x79220c){_0x119c64+=_0x79220c;});_0xfa973b['on'](_0xcdb7('0x20'),function(){if(_0x51ed47){return _0x51ed47[_0xcdb7('0x21')](_0xfa973b['statusCode'])[_0xcdb7('0x22')](JSON[_0xcdb7('0x23')](_0x119c64));}});});_0x35020d['on'](_0xcdb7('0x24'),function(_0x12c97e){if(_0x51ed47){return _0x51ed47['status'](0x1f4)['json']({'errors':[{'message':_0xcdb7('0x25'),'type':'api.jira'}]});}});_0x35020d[_0xcdb7('0x26')](_0x359c0e);_0x35020d[_0xcdb7('0x20')]();}exports['openIssue']=openIssue;exports[_0xcdb7('0x27')]=function(_0x4ccb5d,_0x7d3cb6){_0x4ccb5d[_0xcdb7('0x28')]['ip']=_0x4ccb5d[_0xcdb7('0x29')]['x-forwarded-for']||_0x4ccb5d[_0xcdb7('0x2a')][_0xcdb7('0x2b')]||_0x4ccb5d[_0xcdb7('0x2c')][_0xcdb7('0x2b')]||_0x4ccb5d[_0xcdb7('0x2a')][_0xcdb7('0x2c')][_0xcdb7('0x2b')];return openIssue(_0x4ccb5d[_0xcdb7('0x28')],_0x7d3cb6);};
\ No newline at end of file
index 8bca1d6..c822889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer','util','path'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x702d,0x147));var _0xd702=function(_0x56a2f2,_0x175901){_0x56a2f2=_0x56a2f2-0x0;var _0x3abb0b=_0x702d[_0x56a2f2];return _0x3abb0b;};'use strict';var multer=require(_0xd702('0x0'));var util=require(_0xd702('0x1'));var path=require(_0xd702('0x2'));var timeout=require(_0xd702('0x3'));var express=require(_0xd702('0x4'));var router=express['Router']();var fs_extra=require(_0xd702('0x5'));var auth=require(_0xd702('0x6'));var interaction=require(_0xd702('0x7'));var config=require(_0xd702('0x8'));var controller=require('./jscriptyAnswerReport.controller');router[_0xd702('0x9')]('/',auth['isAuthenticated'](),controller[_0xd702('0xa')]);router[_0xd702('0x9')](_0xd702('0xb'),auth['isAuthenticated'](),controller[_0xd702('0xc')]);router['get'](_0xd702('0xd'),auth[_0xd702('0xe')](),controller[_0xd702('0xf')]);router[_0xd702('0x10')]('/',auth[_0xd702('0xe')](),controller[_0xd702('0x11')]);router[_0xd702('0x12')](_0xd702('0xd'),auth[_0xd702('0xe')](),controller[_0xd702('0x13')]);router['delete']('/:id',auth[_0xd702('0xe')](),controller[_0xd702('0x14')]);module[_0xd702('0x15')]=router;
\ No newline at end of file
+var _0x17ba=['/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x17ba,0xab));var _0xa17b=function(_0xfa7a1a,_0xd2f9d8){_0xfa7a1a=_0xfa7a1a-0x0;var _0x2c73f7=_0x17ba[_0xfa7a1a];return _0x2c73f7;};'use strict';var multer=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var path=require('path');var timeout=require(_0xa17b('0x2'));var express=require(_0xa17b('0x3'));var router=express[_0xa17b('0x4')]();var fs_extra=require(_0xa17b('0x5'));var auth=require(_0xa17b('0x6'));var interaction=require(_0xa17b('0x7'));var config=require(_0xa17b('0x8'));var controller=require(_0xa17b('0x9'));router[_0xa17b('0xa')]('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0xc')]);router[_0xa17b('0xa')](_0xa17b('0xd'),auth[_0xa17b('0xb')](),controller[_0xa17b('0xe')]);router[_0xa17b('0xa')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x10')]);router['post']('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0x11')]);router[_0xa17b('0x12')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x13')]);router[_0xa17b('0x14')]('/:id',auth[_0xa17b('0xb')](),controller[_0xa17b('0x15')]);module[_0xa17b('0x16')]=router;
\ No newline at end of file
index aee62a7..6a52dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x7a54,0x106));var _0x47a5=function(_0x4a3fd6,_0x52518f){_0x4a3fd6=_0x4a3fd6-0x0;var _0x5f5792=_0x7a54[_0x4a3fd6];return _0x5f5792;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x7a54,0x106));var _0x47a5=function(_0x5d30b4,_0x23d057){_0x5d30b4=_0x5d30b4-0x0;var _0x58273d=_0x7a54[_0x5d30b4];return _0x58273d;};'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 77c9d81..33cd84e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x093a=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','map','JscriptyAnswerReport','rawAttributes','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x23bd7d,_0xef06dd){var _0x300da8=function(_0x3cd7f9){while(--_0x3cd7f9){_0x23bd7d['push'](_0x23bd7d['shift']());}};_0x300da8(++_0xef06dd);}(_0x093a,0x16a));var _0xa093=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0x093a[_0x2ff762];return _0x158b02;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa093('0x0'));var zipdir=require(_0xa093('0x1'));var jsonpatch=require(_0xa093('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa093('0x3'));var Mustache=require(_0xa093('0x4'));var util=require(_0xa093('0x5'));var path=require(_0xa093('0x6'));var sox=require(_0xa093('0x7'));var csv=require(_0xa093('0x8'));var ejs=require(_0xa093('0x9'));var fs=require('fs');var fs_extra=require(_0xa093('0xa'));var _=require(_0xa093('0xb'));var squel=require(_0xa093('0xc'));var crypto=require(_0xa093('0xd'));var jsforce=require(_0xa093('0xe'));var deskjs=require(_0xa093('0xf'));var toCsv=require(_0xa093('0x8'));var querystring=require(_0xa093('0x10'));var Papa=require(_0xa093('0x11'));var Redis=require(_0xa093('0x12'));var authService=require(_0xa093('0x13'));var qs=require(_0xa093('0x14'));var as=require(_0xa093('0x15'));var hardwareService=require(_0xa093('0x16'));var logger=require('../../config/logger')(_0xa093('0x17'));var utils=require(_0xa093('0x18'));var config=require(_0xa093('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa093('0x1a'))['db'];function respondWithStatusCode(_0x37b045,_0x306405){_0x306405=_0x306405||0xcc;return function(_0x33b118){if(_0x33b118){return _0x37b045[_0xa093('0x1b')](_0x306405);}return _0x37b045[_0xa093('0x1c')](_0x306405)[_0xa093('0x1d')]();};}function respondWithResult(_0x5b7b2c,_0x108037){_0x108037=_0x108037||0xc8;return function(_0x56fc96){if(_0x56fc96){return _0x5b7b2c[_0xa093('0x1c')](_0x108037)[_0xa093('0x1e')](_0x56fc96);}};}function respondWithFilteredResult(_0x45005f,_0x2f8e67){return function(_0x8245d8){if(_0x8245d8){var _0x26ac40=typeof _0x2f8e67[_0xa093('0x1f')]===_0xa093('0x20')&&typeof _0x2f8e67['limit']===_0xa093('0x20');var _0x226d1e=_0x8245d8[_0xa093('0x21')];var _0x30782c=_0x26ac40?0x0:_0x2f8e67[_0xa093('0x1f')];var _0x3b63db=_0x26ac40?_0x8245d8[_0xa093('0x21')]:_0x2f8e67['offset']+_0x2f8e67[_0xa093('0x22')];var _0x4bcb2a;if(_0x3b63db>=_0x226d1e){_0x3b63db=_0x226d1e;_0x4bcb2a=0xc8;}else{_0x4bcb2a=0xce;}_0x45005f[_0xa093('0x1c')](_0x4bcb2a);return _0x45005f['set'](_0xa093('0x23'),_0x30782c+'-'+_0x3b63db+'/'+_0x226d1e)[_0xa093('0x1e')](_0x8245d8);}return null;};}function patchUpdates(_0x4b1a16){return function(_0x3841c8){try{jsonpatch[_0xa093('0x24')](_0x3841c8,_0x4b1a16,!![]);}catch(_0x93f81a){return BPromise[_0xa093('0x25')](_0x93f81a);}return _0x3841c8[_0xa093('0x26')]();};}function saveUpdates(_0x4b61c2,_0x2fa9ca){return function(_0x57125e){if(_0x57125e){return _0x57125e[_0xa093('0x27')](_0x4b61c2)['then'](function(_0x38d68a){return _0x38d68a;});}return null;};}function removeEntity(_0x329847,_0x2e909d){return function(_0x3aeb7f){if(_0x3aeb7f){return _0x3aeb7f[_0xa093('0x28')]()[_0xa093('0x29')](function(){_0x329847[_0xa093('0x1c')](0xcc)[_0xa093('0x1d')]();});}};}function handleEntityNotFound(_0x302f21,_0x536311){return function(_0xd20fd){if(!_0xd20fd){_0x302f21[_0xa093('0x1b')](0x194);}return _0xd20fd;};}function handleError(_0x1f9506,_0x36fd8f){_0x36fd8f=_0x36fd8f||0x1f4;return function(_0x31909b){logger[_0xa093('0x2a')](_0x31909b[_0xa093('0x2b')]);if(_0x31909b[_0xa093('0x2c')]){delete _0x31909b[_0xa093('0x2c')];}_0x1f9506[_0xa093('0x1c')](_0x36fd8f)['send'](_0x31909b);};}exports[_0xa093('0x2d')]=function(_0x1b9148,_0x2d0e05){var _0x238904={},_0xdae8ec={},_0x4cc949={'count':0x0,'rows':[]};var _0x507f20=_[_0xa093('0x2e')](db[_0xa093('0x2f')][_0xa093('0x30')],function(_0x1bfe1a){return{'name':_0x1bfe1a['fieldName'],'type':_0x1bfe1a['type']['key']};});_0xdae8ec[_0xa093('0x31')]=_['map'](_0x507f20,_0xa093('0x2c'));_0xdae8ec[_0xa093('0x32')]=_[_0xa093('0x33')](_0x1b9148['query']);_0xdae8ec[_0xa093('0x34')]=_[_0xa093('0x35')](_0xdae8ec[_0xa093('0x31')],_0xdae8ec[_0xa093('0x32')]);_0x238904[_0xa093('0x36')]=_[_0xa093('0x35')](_0xdae8ec[_0xa093('0x31')],qs[_0xa093('0x37')](_0x1b9148[_0xa093('0x32')][_0xa093('0x37')]));_0x238904[_0xa093('0x36')]=_0x238904[_0xa093('0x36')]['length']?_0x238904[_0xa093('0x36')]:_0xdae8ec['model'];if(!_0x1b9148[_0xa093('0x32')][_0xa093('0x38')](_0xa093('0x39'))){_0x238904[_0xa093('0x22')]=qs['limit'](_0x1b9148[_0xa093('0x32')]['limit']);_0x238904[_0xa093('0x1f')]=qs[_0xa093('0x1f')](_0x1b9148[_0xa093('0x32')][_0xa093('0x1f')]);}_0x238904[_0xa093('0x3a')]=qs['sort'](_0x1b9148[_0xa093('0x32')]['sort']);_0x238904[_0xa093('0x3b')]=qs['filters'](_['pick'](_0x1b9148[_0xa093('0x32')],_0xdae8ec[_0xa093('0x34')]),_0x507f20);if(_0x1b9148['query'][_0xa093('0x3c')]){_0x238904[_0xa093('0x3b')]=_['merge'](_0x238904[_0xa093('0x3b')],{'$or':_['map'](_0x507f20,function(_0x158a7b){if(_0x158a7b[_0xa093('0x3d')]!==_0xa093('0x3e')){var _0x4acb9b={};_0x4acb9b[_0x158a7b['name']]={'$like':'%'+_0x1b9148[_0xa093('0x32')][_0xa093('0x3c')]+'%'};return _0x4acb9b;}})});}_0x238904=_[_0xa093('0x3f')]({},_0x238904,_0x1b9148[_0xa093('0x40')]);var _0x425cdf={'where':_0x238904[_0xa093('0x3b')]};return db[_0xa093('0x2f')][_0xa093('0x21')](_0x425cdf)['then'](function(_0xe3e89b){_0x4cc949['count']=_0xe3e89b;if(_0x1b9148[_0xa093('0x32')][_0xa093('0x41')]){_0x238904[_0xa093('0x42')]=[{'all':!![]}];}return db[_0xa093('0x2f')][_0xa093('0x43')](_0x238904);})['then'](function(_0x2f5f07){_0x4cc949[_0xa093('0x44')]=_0x2f5f07;return _0x4cc949;})['then'](respondWithFilteredResult(_0x2d0e05,_0x238904))[_0xa093('0x45')](handleError(_0x2d0e05,null));};exports[_0xa093('0x46')]=function(_0x1f73eb,_0x3303da){var _0x58c10e={'raw':!![],'where':{'id':_0x1f73eb[_0xa093('0x47')]['id']}},_0x4205f8={};_0x4205f8[_0xa093('0x31')]=_[_0xa093('0x33')](db[_0xa093('0x2f')]['rawAttributes']);_0x4205f8[_0xa093('0x32')]=_[_0xa093('0x33')](_0x1f73eb[_0xa093('0x32')]);_0x4205f8[_0xa093('0x34')]=_['intersection'](_0x4205f8[_0xa093('0x31')],_0x4205f8[_0xa093('0x32')]);_0x58c10e[_0xa093('0x36')]=_[_0xa093('0x35')](_0x4205f8[_0xa093('0x31')],qs[_0xa093('0x37')](_0x1f73eb[_0xa093('0x32')][_0xa093('0x37')]));_0x58c10e[_0xa093('0x36')]=_0x58c10e[_0xa093('0x36')]['length']?_0x58c10e['attributes']:_0x4205f8[_0xa093('0x31')];if(_0x1f73eb[_0xa093('0x32')][_0xa093('0x41')]){_0x58c10e[_0xa093('0x42')]=[{'all':!![]}];}_0x58c10e=_[_0xa093('0x3f')]({},_0x58c10e,_0x1f73eb[_0xa093('0x40')]);return db[_0xa093('0x2f')][_0xa093('0x48')](_0x58c10e)[_0xa093('0x29')](handleEntityNotFound(_0x3303da,null))[_0xa093('0x29')](respondWithResult(_0x3303da,null))[_0xa093('0x45')](handleError(_0x3303da,null));};exports[_0xa093('0x49')]=function(_0x436c5c,_0x295c21){return db[_0xa093('0x2f')]['create'](_0x436c5c['body'],{})['then'](respondWithResult(_0x295c21,0xc9))[_0xa093('0x45')](handleError(_0x295c21,null));};exports[_0xa093('0x27')]=function(_0x36fb5a,_0x2fefaf){if(_0x36fb5a[_0xa093('0x4a')]['id']){delete _0x36fb5a[_0xa093('0x4a')]['id'];}return db[_0xa093('0x2f')][_0xa093('0x48')]({'where':{'id':_0x36fb5a['params']['id']}})[_0xa093('0x29')](handleEntityNotFound(_0x2fefaf,null))[_0xa093('0x29')](saveUpdates(_0x36fb5a[_0xa093('0x4a')],null))['then'](respondWithResult(_0x2fefaf,null))[_0xa093('0x45')](handleError(_0x2fefaf,null));};exports['destroy']=function(_0x5e567f,_0x21b83f){return db[_0xa093('0x2f')]['find']({'where':{'id':_0x5e567f[_0xa093('0x47')]['id']}})['then'](handleEntityNotFound(_0x21b83f,null))[_0xa093('0x29')](removeEntity(_0x21b83f,null))[_0xa093('0x45')](handleError(_0x21b83f,null));};exports[_0xa093('0x4b')]=function(_0xd88868,_0x142ef0){return db[_0xa093('0x2f')][_0xa093('0x4b')]()[_0xa093('0x29')](respondWithResult(_0x142ef0,null))[_0xa093('0x45')](handleError(_0x142ef0,null));};
\ No newline at end of file
+var _0x8375=['rawAttributes','include','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','map','JscriptyAnswerReport','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','filter','where','merge','options','includeAll','findAll','rows','catch','show','params'];(function(_0x175e97,_0x57a798){var _0x3b8785=function(_0xdac906){while(--_0xdac906){_0x175e97['push'](_0x175e97['shift']());}};_0x3b8785(++_0x57a798);}(_0x8375,0x132));var _0x5837=function(_0x3fff2b,_0x13f12d){_0x3fff2b=_0x3fff2b-0x0;var _0x1aa9ad=_0x8375[_0x3fff2b];return _0x1aa9ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5837('0x0'));var zipdir=require(_0x5837('0x1'));var jsonpatch=require(_0x5837('0x2'));var rp=require(_0x5837('0x3'));var moment=require(_0x5837('0x4'));var BPromise=require(_0x5837('0x5'));var Mustache=require('mustache');var util=require(_0x5837('0x6'));var path=require(_0x5837('0x7'));var sox=require('sox');var csv=require(_0x5837('0x8'));var ejs=require(_0x5837('0x9'));var fs=require('fs');var fs_extra=require(_0x5837('0xa'));var _=require(_0x5837('0xb'));var squel=require('squel');var crypto=require(_0x5837('0xc'));var jsforce=require(_0x5837('0xd'));var deskjs=require(_0x5837('0xe'));var toCsv=require(_0x5837('0x8'));var querystring=require(_0x5837('0xf'));var Papa=require(_0x5837('0x10'));var Redis=require(_0x5837('0x11'));var authService=require(_0x5837('0x12'));var qs=require(_0x5837('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5837('0x14'));var logger=require(_0x5837('0x15'))('api');var utils=require(_0x5837('0x16'));var config=require(_0x5837('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5837('0x18'))['db'];function respondWithStatusCode(_0x5abd5e,_0x2b0b43){_0x2b0b43=_0x2b0b43||0xcc;return function(_0x3ad5b3){if(_0x3ad5b3){return _0x5abd5e[_0x5837('0x19')](_0x2b0b43);}return _0x5abd5e[_0x5837('0x1a')](_0x2b0b43)['end']();};}function respondWithResult(_0x2b82a9,_0x103b9c){_0x103b9c=_0x103b9c||0xc8;return function(_0x2bc6f6){if(_0x2bc6f6){return _0x2b82a9['status'](_0x103b9c)[_0x5837('0x1b')](_0x2bc6f6);}};}function respondWithFilteredResult(_0x11f16c,_0x2f8af0){return function(_0x23c3af){if(_0x23c3af){var _0x304fe7=typeof _0x2f8af0[_0x5837('0x1c')]==='undefined'&&typeof _0x2f8af0['limit']==='undefined';var _0x37824b=_0x23c3af[_0x5837('0x1d')];var _0x1a5725=_0x304fe7?0x0:_0x2f8af0[_0x5837('0x1c')];var _0x128b4a=_0x304fe7?_0x23c3af[_0x5837('0x1d')]:_0x2f8af0[_0x5837('0x1c')]+_0x2f8af0['limit'];var _0x3c5ec9;if(_0x128b4a>=_0x37824b){_0x128b4a=_0x37824b;_0x3c5ec9=0xc8;}else{_0x3c5ec9=0xce;}_0x11f16c[_0x5837('0x1a')](_0x3c5ec9);return _0x11f16c[_0x5837('0x1e')](_0x5837('0x1f'),_0x1a5725+'-'+_0x128b4a+'/'+_0x37824b)[_0x5837('0x1b')](_0x23c3af);}return null;};}function patchUpdates(_0x50c42c){return function(_0x4bd76c){try{jsonpatch[_0x5837('0x20')](_0x4bd76c,_0x50c42c,!![]);}catch(_0x21c0bf){return BPromise[_0x5837('0x21')](_0x21c0bf);}return _0x4bd76c['save']();};}function saveUpdates(_0x31010b,_0x46786c){return function(_0x4b59b1){if(_0x4b59b1){return _0x4b59b1[_0x5837('0x22')](_0x31010b)[_0x5837('0x23')](function(_0x5e9c2e){return _0x5e9c2e;});}return null;};}function removeEntity(_0x332a90,_0x2709cf){return function(_0x1366c1){if(_0x1366c1){return _0x1366c1['destroy']()[_0x5837('0x23')](function(){_0x332a90['status'](0xcc)[_0x5837('0x24')]();});}};}function handleEntityNotFound(_0x8e5a48,_0x31d25b){return function(_0x3f96b1){if(!_0x3f96b1){_0x8e5a48[_0x5837('0x19')](0x194);}return _0x3f96b1;};}function handleError(_0x1f7f97,_0x22564a){_0x22564a=_0x22564a||0x1f4;return function(_0x1d7285){logger[_0x5837('0x25')](_0x1d7285[_0x5837('0x26')]);if(_0x1d7285[_0x5837('0x27')]){delete _0x1d7285[_0x5837('0x27')];}_0x1f7f97[_0x5837('0x1a')](_0x22564a)[_0x5837('0x28')](_0x1d7285);};}exports[_0x5837('0x29')]=function(_0x5c17dd,_0x321c49){var _0x2818c0={},_0x170cb2={},_0x430bd1={'count':0x0,'rows':[]};var _0x80cfc6=_[_0x5837('0x2a')](db[_0x5837('0x2b')]['rawAttributes'],function(_0x89e7e5){return{'name':_0x89e7e5[_0x5837('0x2c')],'type':_0x89e7e5[_0x5837('0x2d')][_0x5837('0x2e')]};});_0x170cb2['model']=_['map'](_0x80cfc6,_0x5837('0x27'));_0x170cb2[_0x5837('0x2f')]=_[_0x5837('0x30')](_0x5c17dd['query']);_0x170cb2[_0x5837('0x31')]=_[_0x5837('0x32')](_0x170cb2[_0x5837('0x33')],_0x170cb2[_0x5837('0x2f')]);_0x2818c0[_0x5837('0x34')]=_[_0x5837('0x32')](_0x170cb2['model'],qs[_0x5837('0x35')](_0x5c17dd[_0x5837('0x2f')]['fields']));_0x2818c0[_0x5837('0x34')]=_0x2818c0[_0x5837('0x34')][_0x5837('0x36')]?_0x2818c0['attributes']:_0x170cb2['model'];if(!_0x5c17dd['query']['hasOwnProperty'](_0x5837('0x37'))){_0x2818c0['limit']=qs['limit'](_0x5c17dd[_0x5837('0x2f')][_0x5837('0x38')]);_0x2818c0['offset']=qs[_0x5837('0x1c')](_0x5c17dd['query'][_0x5837('0x1c')]);}_0x2818c0[_0x5837('0x39')]=qs['sort'](_0x5c17dd[_0x5837('0x2f')][_0x5837('0x3a')]);_0x2818c0['where']=qs[_0x5837('0x31')](_['pick'](_0x5c17dd[_0x5837('0x2f')],_0x170cb2['filters']),_0x80cfc6);if(_0x5c17dd['query'][_0x5837('0x3b')]){_0x2818c0[_0x5837('0x3c')]=_[_0x5837('0x3d')](_0x2818c0[_0x5837('0x3c')],{'$or':_[_0x5837('0x2a')](_0x80cfc6,function(_0x5ca1ea){if(_0x5ca1ea[_0x5837('0x2d')]!=='VIRTUAL'){var _0x5d29ed={};_0x5d29ed[_0x5ca1ea[_0x5837('0x27')]]={'$like':'%'+_0x5c17dd[_0x5837('0x2f')]['filter']+'%'};return _0x5d29ed;}})});}_0x2818c0=_[_0x5837('0x3d')]({},_0x2818c0,_0x5c17dd[_0x5837('0x3e')]);var _0x414254={'where':_0x2818c0[_0x5837('0x3c')]};return db[_0x5837('0x2b')][_0x5837('0x1d')](_0x414254)[_0x5837('0x23')](function(_0x7b3c75){_0x430bd1[_0x5837('0x1d')]=_0x7b3c75;if(_0x5c17dd['query'][_0x5837('0x3f')]){_0x2818c0['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x5837('0x40')](_0x2818c0);})[_0x5837('0x23')](function(_0x5e6916){_0x430bd1[_0x5837('0x41')]=_0x5e6916;return _0x430bd1;})[_0x5837('0x23')](respondWithFilteredResult(_0x321c49,_0x2818c0))[_0x5837('0x42')](handleError(_0x321c49,null));};exports[_0x5837('0x43')]=function(_0x561f0a,_0x26fd6d){var _0x25237a={'raw':!![],'where':{'id':_0x561f0a[_0x5837('0x44')]['id']}},_0x84eff={};_0x84eff[_0x5837('0x33')]=_['keys'](db[_0x5837('0x2b')][_0x5837('0x45')]);_0x84eff[_0x5837('0x2f')]=_['keys'](_0x561f0a[_0x5837('0x2f')]);_0x84eff[_0x5837('0x31')]=_[_0x5837('0x32')](_0x84eff[_0x5837('0x33')],_0x84eff[_0x5837('0x2f')]);_0x25237a[_0x5837('0x34')]=_[_0x5837('0x32')](_0x84eff[_0x5837('0x33')],qs[_0x5837('0x35')](_0x561f0a[_0x5837('0x2f')][_0x5837('0x35')]));_0x25237a['attributes']=_0x25237a[_0x5837('0x34')][_0x5837('0x36')]?_0x25237a['attributes']:_0x84eff['model'];if(_0x561f0a[_0x5837('0x2f')]['includeAll']){_0x25237a[_0x5837('0x46')]=[{'all':!![]}];}_0x25237a=_[_0x5837('0x3d')]({},_0x25237a,_0x561f0a[_0x5837('0x3e')]);return db[_0x5837('0x2b')]['find'](_0x25237a)[_0x5837('0x23')](handleEntityNotFound(_0x26fd6d,null))[_0x5837('0x23')](respondWithResult(_0x26fd6d,null))[_0x5837('0x42')](handleError(_0x26fd6d,null));};exports[_0x5837('0x47')]=function(_0x3fc3c8,_0x3b1293){return db[_0x5837('0x2b')][_0x5837('0x47')](_0x3fc3c8[_0x5837('0x48')],{})['then'](respondWithResult(_0x3b1293,0xc9))[_0x5837('0x42')](handleError(_0x3b1293,null));};exports[_0x5837('0x22')]=function(_0xd49ba7,_0x16f12f){if(_0xd49ba7[_0x5837('0x48')]['id']){delete _0xd49ba7[_0x5837('0x48')]['id'];}return db['JscriptyAnswerReport'][_0x5837('0x49')]({'where':{'id':_0xd49ba7[_0x5837('0x44')]['id']}})[_0x5837('0x23')](handleEntityNotFound(_0x16f12f,null))[_0x5837('0x23')](saveUpdates(_0xd49ba7[_0x5837('0x48')],null))['then'](respondWithResult(_0x16f12f,null))[_0x5837('0x42')](handleError(_0x16f12f,null));};exports['destroy']=function(_0x105315,_0x345547){return db[_0x5837('0x2b')]['find']({'where':{'id':_0x105315[_0x5837('0x44')]['id']}})[_0x5837('0x23')](handleEntityNotFound(_0x345547,null))[_0x5837('0x23')](removeEntity(_0x345547,null))[_0x5837('0x42')](handleError(_0x345547,null));};exports[_0x5837('0x4a')]=function(_0x424d59,_0x41604b){return db[_0x5837('0x2b')][_0x5837('0x4a')]()['then'](respondWithResult(_0x41604b,null))['catch'](handleError(_0x41604b,null));};
\ No newline at end of file
index 9e3a118..3f48983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea59=['bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','report_jscripty_answers','lodash','util','../../config/logger','api','moment'];(function(_0x404711,_0x179691){var _0x44868b=function(_0x1aa477){while(--_0x1aa477){_0x404711['push'](_0x404711['shift']());}};_0x44868b(++_0x179691);}(_0xea59,0x167));var _0x9ea5=function(_0x497a75,_0x112fe3){_0x497a75=_0x497a75-0x0;var _0x214e58=_0xea59[_0x497a75];return _0x214e58;};'use strict';var _=require(_0x9ea5('0x0'));var util=require(_0x9ea5('0x1'));var logger=require(_0x9ea5('0x2'))(_0x9ea5('0x3'));var moment=require(_0x9ea5('0x4'));var BPromise=require(_0x9ea5('0x5'));var rp=require(_0x9ea5('0x6'));var fs=require('fs');var path=require(_0x9ea5('0x7'));var rimraf=require(_0x9ea5('0x8'));var config=require(_0x9ea5('0x9'));var attributes=require(_0x9ea5('0xa'));module[_0x9ea5('0xb')]=function(_0x4bd6ff,_0x41eb6e){return _0x4bd6ff['define']('JscriptyAnswerReport',attributes,{'tableName':_0x9ea5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x798f=['util','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','define','report_jscripty_answers','lodash'];(function(_0x517cf1,_0x5b6704){var _0x3c1ba7=function(_0x91ce62){while(--_0x91ce62){_0x517cf1['push'](_0x517cf1['shift']());}};_0x3c1ba7(++_0x5b6704);}(_0x798f,0x135));var _0xf798=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x798f[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf798('0x0'));var util=require(_0xf798('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf798('0x2'));var BPromise=require(_0xf798('0x3'));var rp=require(_0xf798('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf798('0x5'));var config=require(_0xf798('0x6'));var attributes=require(_0xf798('0x7'));module['exports']=function(_0x36dcef,_0x35e686){return _0x36dcef[_0xf798('0x8')]('JscriptyAnswerReport',attributes,{'tableName':_0xf798('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be83090..6aa5804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aed=['moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x1c93e0,_0x536b71){var _0x3ac40a=function(_0x42c918){while(--_0x42c918){_0x1c93e0['push'](_0x1c93e0['shift']());}};_0x3ac40a(++_0x536b71);}(_0x8aed,0x96));var _0xd8ae=function(_0x55b3da,_0x55361a){_0x55b3da=_0x55b3da-0x0;var _0xd7f9fe=_0x8aed[_0x55b3da];return _0xd7f9fe;};'use strict';var _=require(_0xd8ae('0x0'));var util=require(_0xd8ae('0x1'));var moment=require(_0xd8ae('0x2'));var BPromise=require('bluebird');var rs=require(_0xd8ae('0x3'));var fs=require('fs');var Redis=require(_0xd8ae('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd8ae('0x5'));var logger=require(_0xd8ae('0x6'))('rpc');var config=require(_0xd8ae('0x7'));var jayson=require(_0xd8ae('0x8'));var client=jayson['client'][_0xd8ae('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ead09,_0x3c5f1a,_0x16b0fe){return new BPromise(function(_0x2317b5,_0x42236e){return client['request'](_0x3ead09,_0x16b0fe)[_0xd8ae('0xa')](function(_0xdb8c2f){logger['info']('JscriptyAnswerReport,\x20%s,\x20%s',_0x3c5f1a,_0xd8ae('0xb'));logger[_0xd8ae('0xc')](_0xd8ae('0xd'),_0x3c5f1a,'request\x20sent',JSON['stringify'](_0xdb8c2f));if(_0xdb8c2f[_0xd8ae('0xe')]){if(_0xdb8c2f[_0xd8ae('0xe')][_0xd8ae('0xf')]===0x1f4){logger[_0xd8ae('0xe')](_0xd8ae('0x10'),_0x3c5f1a,_0xdb8c2f[_0xd8ae('0xe')][_0xd8ae('0x11')]);return _0x42236e(_0xdb8c2f[_0xd8ae('0xe')]['message']);}logger[_0xd8ae('0xe')](_0xd8ae('0x10'),_0x3c5f1a,_0xdb8c2f[_0xd8ae('0xe')]['message']);return _0x2317b5(_0xdb8c2f[_0xd8ae('0xe')][_0xd8ae('0x11')]);}else{logger['info'](_0xd8ae('0x10'),_0x3c5f1a,'request\x20sent');_0x2317b5(_0xdb8c2f['result'][_0xd8ae('0x11')]);}})[_0xd8ae('0x12')](function(_0x192ea5){logger[_0xd8ae('0xe')](_0xd8ae('0x10'),_0x3c5f1a,_0x192ea5);_0x42236e(_0x192ea5);});});}
\ No newline at end of file
+var _0xac91=['moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac91,0x1ca));var _0x1ac9=function(_0xcd26a9,_0x512e77){_0xcd26a9=_0xcd26a9-0x0;var _0x3afcbc=_0xac91[_0xcd26a9];return _0x3afcbc;};'use strict';var _=require(_0x1ac9('0x0'));var util=require(_0x1ac9('0x1'));var moment=require(_0x1ac9('0x2'));var BPromise=require(_0x1ac9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1ac9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1ac9('0x5'));var logger=require(_0x1ac9('0x6'))('rpc');var config=require(_0x1ac9('0x7'));var jayson=require(_0x1ac9('0x8'));var client=jayson[_0x1ac9('0x9')][_0x1ac9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x329c2d,_0x493dce,_0x1a3905){return new BPromise(function(_0x1cabac,_0x43d099){return client[_0x1ac9('0xb')](_0x329c2d,_0x1a3905)[_0x1ac9('0xc')](function(_0x22665b){logger[_0x1ac9('0xd')](_0x1ac9('0xe'),_0x493dce,_0x1ac9('0xf'));logger[_0x1ac9('0x10')](_0x1ac9('0x11'),_0x493dce,_0x1ac9('0xf'),JSON[_0x1ac9('0x12')](_0x22665b));if(_0x22665b[_0x1ac9('0x13')]){if(_0x22665b[_0x1ac9('0x13')][_0x1ac9('0x14')]===0x1f4){logger[_0x1ac9('0x13')](_0x1ac9('0xe'),_0x493dce,_0x22665b[_0x1ac9('0x13')][_0x1ac9('0x15')]);return _0x43d099(_0x22665b[_0x1ac9('0x13')][_0x1ac9('0x15')]);}logger[_0x1ac9('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x493dce,_0x22665b[_0x1ac9('0x13')][_0x1ac9('0x15')]);return _0x1cabac(_0x22665b[_0x1ac9('0x13')]['message']);}else{logger[_0x1ac9('0xd')](_0x1ac9('0xe'),_0x493dce,_0x1ac9('0xf'));_0x1cabac(_0x22665b[_0x1ac9('0x16')][_0x1ac9('0x15')]);}})['catch'](function(_0x24b873){logger['error'](_0x1ac9('0xe'),_0x493dce,_0x24b873);_0x43d099(_0x24b873);});});}
\ No newline at end of file
index b600a6e..7d151f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd445=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/answers','getAnswers','post','create','clone','delete','destroy','exports','multer','util'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0xd445,0xe4));var _0x5d44=function(_0x27b93a,_0x1470b6){_0x27b93a=_0x27b93a-0x0;var _0xaf7338=_0xd445[_0x27b93a];return _0xaf7338;};'use strict';var multer=require(_0x5d44('0x0'));var util=require(_0x5d44('0x1'));var path=require(_0x5d44('0x2'));var timeout=require(_0x5d44('0x3'));var express=require(_0x5d44('0x4'));var router=express[_0x5d44('0x5')]();var fs_extra=require(_0x5d44('0x6'));var auth=require(_0x5d44('0x7'));var interaction=require(_0x5d44('0x8'));var config=require(_0x5d44('0x9'));var controller=require('./jscriptyProject.controller');router[_0x5d44('0xa')]('/',auth['isAuthenticated'](),controller[_0x5d44('0xb')]);router[_0x5d44('0xa')](_0x5d44('0xc'),auth[_0x5d44('0xd')](),controller[_0x5d44('0xe')]);router[_0x5d44('0xa')]('/:id/sessions',auth['isAuthenticated'](),controller['getSessions']);router[_0x5d44('0xa')](_0x5d44('0xf'),auth[_0x5d44('0xd')](),controller[_0x5d44('0x10')]);router[_0x5d44('0xa')]('/:id/summary',auth['isAuthenticated'](),timeout('30s'),controller['getSummary']);router[_0x5d44('0x11')]('/',auth[_0x5d44('0xd')](),controller[_0x5d44('0x12')]);router[_0x5d44('0x11')]('/:id/clone',auth[_0x5d44('0xd')](),controller[_0x5d44('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x5d44('0x14')]('/:id',auth[_0x5d44('0xd')](),controller[_0x5d44('0x15')]);module[_0x5d44('0x16')]=router;
\ No newline at end of file
+var _0x16fe=['show','/:id/sessions','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','delete','exports','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','index','/:id','isAuthenticated'];(function(_0xcbcdb6,_0x58edb0){var _0x4becc1=function(_0x1c2193){while(--_0x1c2193){_0xcbcdb6['push'](_0xcbcdb6['shift']());}};_0x4becc1(++_0x58edb0);}(_0x16fe,0x1ad));var _0xe16f=function(_0x439a88,_0x3b38de){_0x439a88=_0x439a88-0x0;var _0x3bd847=_0x16fe[_0x439a88];return _0x3bd847;};'use strict';var multer=require(_0xe16f('0x0'));var util=require(_0xe16f('0x1'));var path=require('path');var timeout=require(_0xe16f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe16f('0x3'));var interaction=require(_0xe16f('0x4'));var config=require(_0xe16f('0x5'));var controller=require(_0xe16f('0x6'));router[_0xe16f('0x7')]('/',auth['isAuthenticated'](),controller[_0xe16f('0x8')]);router['get'](_0xe16f('0x9'),auth[_0xe16f('0xa')](),controller[_0xe16f('0xb')]);router[_0xe16f('0x7')](_0xe16f('0xc'),auth[_0xe16f('0xa')](),controller['getSessions']);router[_0xe16f('0x7')]('/:id/answers',auth[_0xe16f('0xa')](),controller['getAnswers']);router[_0xe16f('0x7')](_0xe16f('0xd'),auth[_0xe16f('0xa')](),timeout(_0xe16f('0xe')),controller[_0xe16f('0xf')]);router[_0xe16f('0x10')]('/',auth[_0xe16f('0xa')](),controller[_0xe16f('0x11')]);router['post'](_0xe16f('0x12'),auth[_0xe16f('0xa')](),controller[_0xe16f('0x13')]);router['put'](_0xe16f('0x9'),auth[_0xe16f('0xa')](),controller['update']);router[_0xe16f('0x14')](_0xe16f('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0xe16f('0x15')]=router;
\ No newline at end of file
index 6b864a8..7cfb522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf676=['TEXT','long','isObjectLike','stringify','isString','setDataValue','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','sequelize','exports','STRING','name'];(function(_0x46e523,_0xe6fccb){var _0x5da0ee=function(_0x396682){while(--_0x396682){_0x46e523['push'](_0x46e523['shift']());}};_0x5da0ee(++_0xe6fccb);}(_0xf676,0x83));var _0x6f67=function(_0x33fc8e,_0x86491b){_0x33fc8e=_0x33fc8e-0x0;var _0x165534=_0xf676[_0x33fc8e];return _0x165534;};'use strict';var Sequelize=require(_0x6f67('0x0'));var _=require('lodash');var util=require('util');module[_0x6f67('0x1')]={'name':{'type':Sequelize[_0x6f67('0x2')],'unique':_0x6f67('0x3')},'description':{'type':Sequelize[_0x6f67('0x2')]},'formData':{'type':Sequelize[_0x6f67('0x4')](_0x6f67('0x5')),'set':function(_0x3212f8){if(_[_0x6f67('0x6')](_0x3212f8)){this['setDataValue']('formData',JSON[_0x6f67('0x7')](_0x3212f8));}else if(_[_0x6f67('0x8')](_0x3212f8)){this[_0x6f67('0x9')](_0x6f67('0xa'),_0x3212f8);}else{this['setDataValue'](_0x6f67('0xa'),util[_0x6f67('0xb')](_0x6f67('0xc'),this[_0x6f67('0xd')](_0x6f67('0x3'))||'',this[_0x6f67('0xd')](_0x6f67('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2e1b=['formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','name','STRING','long','isObjectLike','setDataValue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2e1b,0x1f0));var _0xb2e1=function(_0x11a013,_0x497ba3){_0x11a013=_0x11a013-0x0;var _0x56ae2c=_0x2e1b[_0x11a013];return _0x56ae2c;};'use strict';var Sequelize=require(_0xb2e1('0x0'));var _=require(_0xb2e1('0x1'));var util=require(_0xb2e1('0x2'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xb2e1('0x3')},'description':{'type':Sequelize[_0xb2e1('0x4')]},'formData':{'type':Sequelize['TEXT'](_0xb2e1('0x5')),'set':function(_0x52c48c){if(_[_0xb2e1('0x6')](_0x52c48c)){this[_0xb2e1('0x7')](_0xb2e1('0x8'),JSON[_0xb2e1('0x9')](_0x52c48c));}else if(_['isString'](_0x52c48c)){this[_0xb2e1('0x7')]('formData',_0x52c48c);}else{this['setDataValue'](_0xb2e1('0x8'),util['format'](_0xb2e1('0xa'),this['getDataValue']('name')||'',this[_0xb2e1('0xb')](_0xb2e1('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xb2e1('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xb2e1('0xd')],'defaultValue':![]}};
\ No newline at end of file
index 3bea86b..e30642c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d3=['sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','Projects','UserProfileResource','error','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','omit','findOne','sort','ProjectId','JscriptySessionReport','findAll','order','JscriptyAnswerReport','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0xd1d3,0xd7));var _0x3d1d=function(_0x14e89f,_0x543ed4){_0x14e89f=_0x14e89f-0x0;var _0x4a2482=_0xd1d3[_0x14e89f];return _0x4a2482;};'use strict';var emlformat=require(_0x3d1d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3d1d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3d1d('0x2'));var moment=require(_0x3d1d('0x3'));var BPromise=require(_0x3d1d('0x4'));var Mustache=require(_0x3d1d('0x5'));var util=require(_0x3d1d('0x6'));var path=require('path');var sox=require(_0x3d1d('0x7'));var csv=require(_0x3d1d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d1d('0x9'));var _=require(_0x3d1d('0xa'));var squel=require('squel');var crypto=require(_0x3d1d('0xb'));var jsforce=require(_0x3d1d('0xc'));var deskjs=require(_0x3d1d('0xd'));var toCsv=require(_0x3d1d('0x8'));var querystring=require(_0x3d1d('0xe'));var Papa=require(_0x3d1d('0xf'));var Redis=require(_0x3d1d('0x10'));var authService=require(_0x3d1d('0x11'));var qs=require(_0x3d1d('0x12'));var as=require(_0x3d1d('0x13'));var hardwareService=require(_0x3d1d('0x14'));var logger=require(_0x3d1d('0x15'))(_0x3d1d('0x16'));var utils=require(_0x3d1d('0x17'));var config=require(_0x3d1d('0x18'));var licenseUtil=require(_0x3d1d('0x19'));var db=require(_0x3d1d('0x1a'))['db'];function respondWithStatusCode(_0x24b002,_0x8a7a6e){_0x8a7a6e=_0x8a7a6e||0xcc;return function(_0x5d7db5){if(_0x5d7db5){return _0x24b002[_0x3d1d('0x1b')](_0x8a7a6e);}return _0x24b002[_0x3d1d('0x1c')](_0x8a7a6e)[_0x3d1d('0x1d')]();};}function respondWithResult(_0x277ada,_0x461a0a){_0x461a0a=_0x461a0a||0xc8;return function(_0x12dd84){if(_0x12dd84){return _0x277ada[_0x3d1d('0x1c')](_0x461a0a)[_0x3d1d('0x1e')](_0x12dd84);}};}function respondWithFilteredResult(_0x59fa63,_0x325e90){return function(_0x128f51){if(_0x128f51){var _0x5d6a51=typeof _0x325e90['offset']===_0x3d1d('0x1f')&&typeof _0x325e90[_0x3d1d('0x20')]===_0x3d1d('0x1f');var _0x2f984c=_0x128f51['count'];var _0x1898ce=_0x5d6a51?0x0:_0x325e90[_0x3d1d('0x21')];var _0x1f6035=_0x5d6a51?_0x128f51[_0x3d1d('0x22')]:_0x325e90[_0x3d1d('0x21')]+_0x325e90[_0x3d1d('0x20')];var _0x4b1f8f;if(_0x1f6035>=_0x2f984c){_0x1f6035=_0x2f984c;_0x4b1f8f=0xc8;}else{_0x4b1f8f=0xce;}_0x59fa63['status'](_0x4b1f8f);return _0x59fa63['set'](_0x3d1d('0x23'),_0x1898ce+'-'+_0x1f6035+'/'+_0x2f984c)[_0x3d1d('0x1e')](_0x128f51);}return null;};}function patchUpdates(_0x982a88){return function(_0xedf825){try{jsonpatch[_0x3d1d('0x24')](_0xedf825,_0x982a88,!![]);}catch(_0x4737f4){return BPromise[_0x3d1d('0x25')](_0x4737f4);}return _0xedf825[_0x3d1d('0x26')]();};}function saveUpdates(_0x3f1543,_0x4bbb58){return function(_0x553fa1){if(_0x553fa1){return _0x553fa1[_0x3d1d('0x27')](_0x3f1543)[_0x3d1d('0x28')](function(_0x36331f){return _0x36331f;});}return null;};}function removeEntity(_0x550bb5,_0x228735){return function(_0x3dae29){if(_0x3dae29){return _0x3dae29[_0x3d1d('0x29')]()[_0x3d1d('0x28')](function(){var _0x12f5ab=_0x3dae29['get']({'plain':!![]});var _0xb56ae1=_0x3d1d('0x2a');return db[_0x3d1d('0x2b')][_0x3d1d('0x29')]({'where':{'type':_0xb56ae1,'resourceId':_0x12f5ab['id']}})[_0x3d1d('0x28')](function(){return _0x3dae29;});})[_0x3d1d('0x28')](function(){_0x550bb5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4efc5c,_0x2feb04){return function(_0x2a983f){if(!_0x2a983f){_0x4efc5c[_0x3d1d('0x1b')](0x194);}return _0x2a983f;};}function handleError(_0xf7687d,_0x54d7d5){_0x54d7d5=_0x54d7d5||0x1f4;return function(_0x4a4623){logger[_0x3d1d('0x2c')](_0x4a4623['stack']);if(_0x4a4623[_0x3d1d('0x2d')]){delete _0x4a4623[_0x3d1d('0x2d')];}_0xf7687d[_0x3d1d('0x1c')](_0x54d7d5)[_0x3d1d('0x2e')](_0x4a4623);};}exports[_0x3d1d('0x2f')]=function(_0x151ded,_0x1d2bb5){var _0x635ca5={},_0x33bbed={},_0x58b541={'count':0x0,'rows':[]};var _0x1de5cf=_[_0x3d1d('0x30')](db[_0x3d1d('0x31')][_0x3d1d('0x32')],function(_0x262e6e){return{'name':_0x262e6e[_0x3d1d('0x33')],'type':_0x262e6e[_0x3d1d('0x34')][_0x3d1d('0x35')]};});_0x33bbed['model']=_[_0x3d1d('0x30')](_0x1de5cf,_0x3d1d('0x2d'));_0x33bbed[_0x3d1d('0x36')]=_[_0x3d1d('0x37')](_0x151ded[_0x3d1d('0x36')]);_0x33bbed[_0x3d1d('0x38')]=_[_0x3d1d('0x39')](_0x33bbed[_0x3d1d('0x3a')],_0x33bbed[_0x3d1d('0x36')]);_0x635ca5[_0x3d1d('0x3b')]=_['intersection'](_0x33bbed[_0x3d1d('0x3a')],qs[_0x3d1d('0x3c')](_0x151ded[_0x3d1d('0x36')][_0x3d1d('0x3c')]));_0x635ca5[_0x3d1d('0x3b')]=_0x635ca5[_0x3d1d('0x3b')][_0x3d1d('0x3d')]?_0x635ca5[_0x3d1d('0x3b')]:_0x33bbed[_0x3d1d('0x3a')];if(!_0x151ded[_0x3d1d('0x36')][_0x3d1d('0x3e')](_0x3d1d('0x3f'))){_0x635ca5['limit']=qs[_0x3d1d('0x20')](_0x151ded[_0x3d1d('0x36')][_0x3d1d('0x20')]);_0x635ca5['offset']=qs[_0x3d1d('0x21')](_0x151ded[_0x3d1d('0x36')][_0x3d1d('0x21')]);}_0x635ca5['order']=qs['sort'](_0x151ded[_0x3d1d('0x36')]['sort']);_0x635ca5['where']=qs[_0x3d1d('0x38')](_[_0x3d1d('0x40')](_0x151ded[_0x3d1d('0x36')],_0x33bbed[_0x3d1d('0x38')]),_0x1de5cf);if(_0x151ded['query'][_0x3d1d('0x41')]){_0x635ca5[_0x3d1d('0x42')]=_[_0x3d1d('0x43')](_0x635ca5['where'],{'$or':_[_0x3d1d('0x30')](_0x1de5cf,function(_0x16661d){if(_0x16661d[_0x3d1d('0x34')]!==_0x3d1d('0x44')){var _0x1e34bc={};_0x1e34bc[_0x16661d[_0x3d1d('0x2d')]]={'$like':'%'+_0x151ded[_0x3d1d('0x36')]['filter']+'%'};return _0x1e34bc;}})});}_0x635ca5=_[_0x3d1d('0x43')]({},_0x635ca5,_0x151ded[_0x3d1d('0x45')]);var _0x1aa04b={'where':_0x635ca5[_0x3d1d('0x42')]};return db[_0x3d1d('0x31')][_0x3d1d('0x22')](_0x1aa04b)[_0x3d1d('0x28')](function(_0x102b18){_0x58b541[_0x3d1d('0x22')]=_0x102b18;if(_0x151ded[_0x3d1d('0x36')][_0x3d1d('0x46')]){_0x635ca5[_0x3d1d('0x47')]=[{'all':!![]}];}return db['JscriptyProject']['findAll'](_0x635ca5);})[_0x3d1d('0x28')](function(_0x493175){_0x58b541[_0x3d1d('0x48')]=_0x493175;return _0x58b541;})['then'](respondWithFilteredResult(_0x1d2bb5,_0x635ca5))['catch'](handleError(_0x1d2bb5,null));};exports[_0x3d1d('0x49')]=function(_0x12a8e3,_0x60066e){var _0x13b618={'raw':![],'where':{'id':_0x12a8e3[_0x3d1d('0x4a')]['id']}},_0x44e43e={};_0x44e43e[_0x3d1d('0x3a')]=_[_0x3d1d('0x37')](db[_0x3d1d('0x31')][_0x3d1d('0x32')]);_0x44e43e[_0x3d1d('0x36')]=_[_0x3d1d('0x37')](_0x12a8e3[_0x3d1d('0x36')]);_0x44e43e['filters']=_[_0x3d1d('0x39')](_0x44e43e[_0x3d1d('0x3a')],_0x44e43e[_0x3d1d('0x36')]);_0x13b618[_0x3d1d('0x3b')]=_[_0x3d1d('0x39')](_0x44e43e[_0x3d1d('0x3a')],qs[_0x3d1d('0x3c')](_0x12a8e3['query']['fields']));_0x13b618['attributes']=_0x13b618[_0x3d1d('0x3b')][_0x3d1d('0x3d')]?_0x13b618[_0x3d1d('0x3b')]:_0x44e43e['model'];if(_0x12a8e3[_0x3d1d('0x36')][_0x3d1d('0x46')]){_0x13b618[_0x3d1d('0x47')]=[{'all':!![]}];}_0x13b618=_[_0x3d1d('0x43')]({},_0x13b618,_0x12a8e3[_0x3d1d('0x45')]);return db[_0x3d1d('0x31')][_0x3d1d('0x4b')](_0x13b618)[_0x3d1d('0x28')](handleEntityNotFound(_0x60066e,null))[_0x3d1d('0x28')](respondWithResult(_0x60066e,null))[_0x3d1d('0x4c')](handleError(_0x60066e,null));};exports[_0x3d1d('0x4d')]=function(_0x1b3c71,_0x2330fe){return db['JscriptyProject']['create'](_0x1b3c71[_0x3d1d('0x4e')],{})[_0x3d1d('0x28')](function(_0x5579ad){var _0x1a4ff0=_0x1b3c71[_0x3d1d('0x4f')][_0x3d1d('0x50')]({'plain':!![]});if(!_0x1a4ff0)throw new Error(_0x3d1d('0x51'));if(_0x1a4ff0[_0x3d1d('0x52')]===_0x3d1d('0x4f')){var _0x110738=_0x5579ad[_0x3d1d('0x50')]({'plain':!![]});var _0x1d7d9f=_0x3d1d('0x2a');return db['UserProfileSection'][_0x3d1d('0x4b')]({'where':{'name':_0x1d7d9f,'userProfileId':_0x1a4ff0[_0x3d1d('0x53')]},'raw':!![]})['then'](function(_0x3a2a6c){if(_0x3a2a6c&&_0x3a2a6c[_0x3d1d('0x54')]===0x0){return db[_0x3d1d('0x2b')]['create']({'name':_0x110738[_0x3d1d('0x2d')],'resourceId':_0x110738['id'],'type':_0x3a2a6c['name'],'sectionId':_0x3a2a6c['id']},{})['then'](function(){return _0x5579ad;});}else{return _0x5579ad;}})['catch'](function(_0x250e43){logger[_0x3d1d('0x2c')](_0x3d1d('0x55'),_0x250e43);throw _0x250e43;});}return _0x5579ad;})[_0x3d1d('0x28')](respondWithResult(_0x2330fe,0xc9))[_0x3d1d('0x4c')](handleError(_0x2330fe,null));};exports['clone']=function(_0x63702f,_0x3a1ba9){var _0x493aa7={'where':{'id':_0x63702f[_0x3d1d('0x4a')]['id']}},_0x4b8170={};_0x4b8170[_0x3d1d('0x3a')]=_[_0x3d1d('0x37')](db['JscriptyProject'][_0x3d1d('0x32')]);_0x493aa7[_0x3d1d('0x3b')]=_['intersection'](_0x4b8170[_0x3d1d('0x3a')],qs[_0x3d1d('0x3c')](_0x63702f[_0x3d1d('0x36')]['fields']));_0x493aa7[_0x3d1d('0x3b')]=_0x493aa7[_0x3d1d('0x3b')][_0x3d1d('0x3d')]?_0x493aa7['attributes']:_0x4b8170[_0x3d1d('0x3a')];if(_0x63702f['query']['includeAll']){_0x493aa7[_0x3d1d('0x47')]=[{'all':!![]}];}_0x493aa7=_[_0x3d1d('0x43')]({},_0x493aa7,_0x63702f['options']);return db[_0x3d1d('0x31')]['find'](_0x493aa7)[_0x3d1d('0x28')](handleEntityNotFound(_0x3a1ba9,null))['then'](function(_0x1a15aa){if(_0x1a15aa){var _0x4a222d=_0x1a15aa[_0x3d1d('0x50')]({'plain':!![]});_0x4a222d=qs['omit'](_0x4a222d,['id',_0x3d1d('0x56'),_0x3d1d('0x57')]);_0x63702f[_0x3d1d('0x4e')]=_[_0x3d1d('0x58')](_0x63702f[_0x3d1d('0x4e')],['id',_0x3d1d('0x56'),'updatedAt']);return db[_0x3d1d('0x31')][_0x3d1d('0x4d')](_[_0x3d1d('0x43')](_0x4a222d,_0x63702f[_0x3d1d('0x4e')]),{'include':_0x63702f['query'][_0x3d1d('0x46')]?[{'all':!![]}]:undefined})[_0x3d1d('0x28')](function(_0x274a6b){var _0x1ace4a=_0x63702f[_0x3d1d('0x4f')][_0x3d1d('0x50')]({'plain':!![]});if(!_0x1ace4a)throw new Error(_0x3d1d('0x51'));if(_0x1ace4a[_0x3d1d('0x52')]===_0x3d1d('0x4f')){var _0x474d6f=_0x274a6b[_0x3d1d('0x50')]({'plain':!![]});var _0x26c51e=_0x3d1d('0x2a');return db['UserProfileSection'][_0x3d1d('0x4b')]({'where':{'name':_0x26c51e,'userProfileId':_0x1ace4a[_0x3d1d('0x53')]},'raw':!![]})['then'](function(_0x344700){if(_0x344700&&_0x344700[_0x3d1d('0x54')]===0x0){return db[_0x3d1d('0x2b')][_0x3d1d('0x4d')]({'name':_0x474d6f[_0x3d1d('0x2d')],'resourceId':_0x474d6f['id'],'type':_0x344700['name'],'sectionId':_0x344700['id']},{})[_0x3d1d('0x28')](function(){return _0x274a6b;});}else{return _0x274a6b;}})['catch'](function(_0x334d6b){logger[_0x3d1d('0x2c')](_0x3d1d('0x55'),_0x334d6b);throw _0x334d6b;});}return _0x274a6b;});}})[_0x3d1d('0x28')](respondWithResult(_0x3a1ba9,0xc9))['catch'](handleError(_0x3a1ba9,null));};exports['update']=function(_0x5222cb,_0x3097ac){if(_0x5222cb['body']['id']){delete _0x5222cb[_0x3d1d('0x4e')]['id'];}return db['JscriptyProject'][_0x3d1d('0x4b')]({'where':{'id':_0x5222cb[_0x3d1d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3097ac,null))[_0x3d1d('0x28')](saveUpdates(_0x5222cb[_0x3d1d('0x4e')],null))['then'](respondWithResult(_0x3097ac,null))[_0x3d1d('0x4c')](handleError(_0x3097ac,null));};exports[_0x3d1d('0x29')]=function(_0x1f5b43,_0x4ad96e){return db['JscriptyProject'][_0x3d1d('0x4b')]({'where':{'id':_0x1f5b43[_0x3d1d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4ad96e,null))['then'](removeEntity(_0x4ad96e,null))['catch'](handleError(_0x4ad96e,null));};exports['getSessions']=function(_0x119f45,_0x40d393,_0x5d8609){var _0x205c4a={'raw':!![],'where':{}};var _0x1ae110={};var _0x1c46ad={'count':0x0,'rows':[]};return db[_0x3d1d('0x31')][_0x3d1d('0x59')]({'where':{'id':_0x119f45[_0x3d1d('0x4a')]['id']}})[_0x3d1d('0x28')](handleEntityNotFound(_0x40d393,null))['then'](function(_0x19fde5){if(_0x19fde5){_0x1ae110[_0x3d1d('0x3a')]=_[_0x3d1d('0x37')](db['JscriptySessionReport']['rawAttributes']);_0x1ae110[_0x3d1d('0x36')]=_[_0x3d1d('0x37')](_0x119f45[_0x3d1d('0x36')]);_0x1ae110[_0x3d1d('0x38')]=_[_0x3d1d('0x39')](_0x1ae110[_0x3d1d('0x3a')],_0x1ae110[_0x3d1d('0x36')]);_0x205c4a['attributes']=_['intersection'](_0x1ae110[_0x3d1d('0x3a')],qs[_0x3d1d('0x3c')](_0x119f45[_0x3d1d('0x36')]['fields']));_0x205c4a[_0x3d1d('0x3b')]=_0x205c4a['attributes']['length']?_0x205c4a[_0x3d1d('0x3b')]:_0x1ae110[_0x3d1d('0x3a')];if(!_0x119f45[_0x3d1d('0x36')][_0x3d1d('0x3e')](_0x3d1d('0x3f'))){_0x205c4a['limit']=qs[_0x3d1d('0x20')](_0x119f45[_0x3d1d('0x36')]['limit']);_0x205c4a[_0x3d1d('0x21')]=qs['offset'](_0x119f45['query']['offset']);}_0x205c4a['order']=qs[_0x3d1d('0x5a')](_0x119f45[_0x3d1d('0x36')][_0x3d1d('0x5a')]);_0x205c4a[_0x3d1d('0x42')]=qs[_0x3d1d('0x38')](_[_0x3d1d('0x40')](_0x119f45[_0x3d1d('0x36')],_0x1ae110[_0x3d1d('0x38')]));_0x205c4a[_0x3d1d('0x42')][_0x3d1d('0x5b')]=_0x19fde5['id'];if(_0x119f45['query'][_0x3d1d('0x41')]){_0x205c4a['where']=_[_0x3d1d('0x43')](_0x205c4a['where'],{'$or':_[_0x3d1d('0x30')](_0x205c4a[_0x3d1d('0x3b')],function(_0x16d5c3){var _0x146a46={};_0x146a46[_0x16d5c3]={'$like':'%'+_0x119f45['query'][_0x3d1d('0x41')]+'%'};return _0x146a46;})});}_0x205c4a=_[_0x3d1d('0x43')]({},_0x205c4a,_0x119f45['options']);return db[_0x3d1d('0x5c')][_0x3d1d('0x22')]({'where':_0x205c4a[_0x3d1d('0x42')]})['then'](function(_0x859b55){_0x1c46ad[_0x3d1d('0x22')]=_0x859b55;if(_0x119f45[_0x3d1d('0x36')]['includeAll']){_0x205c4a[_0x3d1d('0x47')]=[{'all':!![]}];}return db[_0x3d1d('0x5c')][_0x3d1d('0x5d')](_0x205c4a);})[_0x3d1d('0x28')](function(_0x5cd169){_0x1c46ad[_0x3d1d('0x48')]=_0x5cd169;return _0x1c46ad;});}})[_0x3d1d('0x28')](respondWithFilteredResult(_0x40d393,_0x205c4a))[_0x3d1d('0x4c')](handleError(_0x40d393,null));};exports['getAnswers']=function(_0x4fc823,_0x206967,_0x516146){var _0x50479e={'raw':!![],'where':{}};var _0x315788={};var _0x2cf63d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x3d1d('0x59')]({'where':{'id':_0x4fc823[_0x3d1d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x206967,null))[_0x3d1d('0x28')](function(_0x1b901f){if(_0x1b901f){_0x315788[_0x3d1d('0x3a')]=_[_0x3d1d('0x37')](db['JscriptyAnswerReport']['rawAttributes']);_0x315788['query']=_[_0x3d1d('0x37')](_0x4fc823[_0x3d1d('0x36')]);_0x315788[_0x3d1d('0x38')]=_[_0x3d1d('0x39')](_0x315788[_0x3d1d('0x3a')],_0x315788['query']);_0x50479e['attributes']=_['intersection'](_0x315788[_0x3d1d('0x3a')],qs[_0x3d1d('0x3c')](_0x4fc823[_0x3d1d('0x36')][_0x3d1d('0x3c')]));_0x50479e[_0x3d1d('0x3b')]=_0x50479e[_0x3d1d('0x3b')]['length']?_0x50479e[_0x3d1d('0x3b')]:_0x315788['model'];if(!_0x4fc823[_0x3d1d('0x36')][_0x3d1d('0x3e')]('nolimit')){_0x50479e[_0x3d1d('0x20')]=qs['limit'](_0x4fc823[_0x3d1d('0x36')]['limit']);_0x50479e[_0x3d1d('0x21')]=qs[_0x3d1d('0x21')](_0x4fc823[_0x3d1d('0x36')]['offset']);}_0x50479e[_0x3d1d('0x5e')]=qs[_0x3d1d('0x5a')](_0x4fc823[_0x3d1d('0x36')][_0x3d1d('0x5a')]);_0x50479e[_0x3d1d('0x42')]=qs[_0x3d1d('0x38')](_[_0x3d1d('0x40')](_0x4fc823[_0x3d1d('0x36')],_0x315788['filters']));_0x50479e[_0x3d1d('0x42')][_0x3d1d('0x5b')]=_0x1b901f['id'];if(_0x4fc823[_0x3d1d('0x36')]['filter']){_0x50479e[_0x3d1d('0x42')]=_['merge'](_0x50479e[_0x3d1d('0x42')],{'$or':_[_0x3d1d('0x30')](_0x50479e[_0x3d1d('0x3b')],function(_0x19bdb8){var _0x5379fb={};_0x5379fb[_0x19bdb8]={'$like':'%'+_0x4fc823[_0x3d1d('0x36')][_0x3d1d('0x41')]+'%'};return _0x5379fb;})});}_0x50479e=_['merge']({},_0x50479e,_0x4fc823[_0x3d1d('0x45')]);return db['JscriptyAnswerReport'][_0x3d1d('0x22')]({'where':_0x50479e['where']})['then'](function(_0x1a26f2){_0x2cf63d['count']=_0x1a26f2;if(_0x4fc823[_0x3d1d('0x36')][_0x3d1d('0x46')]){_0x50479e[_0x3d1d('0x47')]=[{'all':!![]}];}return db[_0x3d1d('0x5f')][_0x3d1d('0x5d')](_0x50479e);})[_0x3d1d('0x28')](function(_0x22de2f){_0x2cf63d[_0x3d1d('0x48')]=_0x22de2f;return _0x2cf63d;});}})[_0x3d1d('0x28')](respondWithFilteredResult(_0x206967,_0x50479e))['catch'](handleError(_0x206967,null));};function char(_0x338302){return'number'===typeof _0x338302?String[_0x3d1d('0x60')][_0x3d1d('0x24')](null,arguments):_0x338302;}function needsEncapsulation(_0x460382){return!!_0x460382&&(_0x460382[_0x3d1d('0x61')]()['indexOf'](char(0xd))>=0x0||_0x460382[_0x3d1d('0x61')]()[_0x3d1d('0x62')](char(0xa))>=0x0||_0x460382[_0x3d1d('0x61')]()[_0x3d1d('0x62')](char(0x2c))>=0x0||_0x460382[_0x3d1d('0x61')]()[_0x3d1d('0x62')](char(0x22))>=0x0);}function encapsulate(_0x2e77d0){var _0x46511c=char(0x22),_0x329e78='\x5c'+char(0x22),_0x164831=_0x2e77d0['toString']()[_0x3d1d('0x63')](new RegExp(_0x46511c,'g'),_0x329e78);return _0x46511c+_0x164831+_0x46511c;}exports[_0x3d1d('0x64')]=function(_0x1c2ae9,_0x38ecd9,_0xafe17a){var _0x3e3427,_0x2483ea;var _0x3928af={'where':{'ProjectId':_0x1c2ae9['params']['id']}};if(_0x1c2ae9[_0x3d1d('0x36')][_0x3d1d('0x65')]){_0x3928af[_0x3d1d('0x42')][_0x3d1d('0x66')]=JSON[_0x3d1d('0x67')](_0x1c2ae9[_0x3d1d('0x36')]['startTime']);}return db[_0x3d1d('0x5c')][_0x3d1d('0x5d')](_0x3928af)[_0x3d1d('0x28')](handleEntityNotFound(_0x38ecd9,null))['then'](function(_0x40622a){if(_0x40622a){_0x3e3427=_0x40622a;return db['JscriptyQuestionReport'][_0x3d1d('0x5d')]({'where':{'SessionId':{'$in':_[_0x3d1d('0x30')](_0x3e3427,'id')},'ProjectId':_0x1c2ae9[_0x3d1d('0x4a')]['id']},'order':_0x3d1d('0x68')});}})[_0x3d1d('0x28')](handleEntityNotFound(_0x38ecd9,null))[_0x3d1d('0x28')](function(_0x52091d){if(_0x52091d){_0x2483ea=_0x52091d;var _0xd96f98={};for(var _0x8dc454=0x0,_0x5ad7cd=_0x2483ea['length'];_0x8dc454<_0x5ad7cd;_0x8dc454++){if(!_0xd96f98[_0x3d1d('0x3e')](_0x2483ea[_0x8dc454][_0x3d1d('0x69')])){_0xd96f98[_0x2483ea[_0x8dc454][_0x3d1d('0x69')]]=needsEncapsulation(_0x2483ea[_0x8dc454][_0x3d1d('0x6a')])?encapsulate(_0x2483ea[_0x8dc454][_0x3d1d('0x6a')]):_0x2483ea[_0x8dc454][_0x3d1d('0x6a')];}}var _0x274983=[],_0x4a1cd7={};for(var _0x5b1e9e=0x0,_0x52b32f=_0x3e3427['length'];_0x5b1e9e<_0x52b32f;_0x5b1e9e++){_0x4a1cd7={'ProjectId':_0x1c2ae9[_0x3d1d('0x4a')]['id'],'SessionId':_0x3e3427[_0x5b1e9e]['id'],'StartTime':moment(_0x3e3427[_0x5b1e9e]['starttime'])[_0x3d1d('0x6b')](_0x3d1d('0x6c'))};for(var _0x1a9925=0x0,_0x34cc7a=_0x2483ea['length'];_0x1a9925<_0x34cc7a;_0x1a9925++){if(_0x2483ea[_0x1a9925][_0x3d1d('0x6d')]==_0x3e3427[_0x5b1e9e]['id']&&_0xd96f98['hasOwnProperty'](_0x2483ea[_0x1a9925][_0x3d1d('0x69')])){_0x4a1cd7[_0xd96f98[_0x2483ea[_0x1a9925][_0x3d1d('0x69')]]]=_0x2483ea[_0x1a9925][_0x3d1d('0x6e')];}}for(var _0xf18151 in _0xd96f98){if(!_0x4a1cd7['hasOwnProperty'](_0xd96f98[_0xf18151])){_0x4a1cd7[_0xd96f98[_0xf18151]]=null;}}_0x274983['push'](_0x4a1cd7);}return _0x274983;}})[_0x3d1d('0x28')](function(_0x1a0c8e){if(!_[_0x3d1d('0x6f')](_0x1a0c8e)){var _0x40dcd7=toCsv(_0x1a0c8e);var _0x3cbed5=Date[_0x3d1d('0x70')]();fs[_0x3d1d('0x71')](util[_0x3d1d('0x6b')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1c2ae9['params']['id'],_0x3cbed5),_0x40dcd7);_0x38ecd9[_0x3d1d('0x72')](_0x3d1d('0x73'),_0x3d1d('0x74')+util['format'](_0x3d1d('0x75'),_0x1c2ae9['params']['id'],_0x3cbed5));_0x38ecd9[_0x3d1d('0x72')](_0x3d1d('0x76'),_0x3d1d('0x77'));return _0x38ecd9[_0x3d1d('0x78')](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x1c2ae9[_0x3d1d('0x4a')]['id'],_0x3cbed5));}else{return _0x38ecd9[_0x3d1d('0x1b')](0xcc);}})[_0x3d1d('0x4c')](handleError(_0x38ecd9,null));};
\ No newline at end of file
+var _0xa9f0=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','error','name','send','index','fieldName','type','key','map','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','JscriptyProject','includeAll','include','catch','keys','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','find','omit','createdAt','updatedAt','body','Projects','getSessions','findOne','JscriptySessionReport','rawAttributes','order','ProjectId','rows','getAnswers','JscriptyAnswerReport','findAll','number','fromCharCode','apply','toString','indexOf','getSummary','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','text/csv','download','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x261522,_0x1adc1f){var _0x98a25a=function(_0x1b0f9c){while(--_0x1b0f9c){_0x261522['push'](_0x261522['shift']());}};_0x98a25a(++_0x1adc1f);}(_0xa9f0,0x153));var _0x0a9f=function(_0x3e883a,_0x1b986c){_0x3e883a=_0x3e883a-0x0;var _0x35e565=_0xa9f0[_0x3e883a];return _0x35e565;};'use strict';var emlformat=require(_0x0a9f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0a9f('0x1'));var jsonpatch=require(_0x0a9f('0x2'));var rp=require(_0x0a9f('0x3'));var moment=require(_0x0a9f('0x4'));var BPromise=require(_0x0a9f('0x5'));var Mustache=require(_0x0a9f('0x6'));var util=require(_0x0a9f('0x7'));var path=require(_0x0a9f('0x8'));var sox=require('sox');var csv=require(_0x0a9f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9f('0xa'));var _=require('lodash');var squel=require(_0x0a9f('0xb'));var crypto=require(_0x0a9f('0xc'));var jsforce=require(_0x0a9f('0xd'));var deskjs=require(_0x0a9f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0a9f('0xf'));var Papa=require(_0x0a9f('0x10'));var Redis=require(_0x0a9f('0x11'));var authService=require(_0x0a9f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0a9f('0x13'));var logger=require(_0x0a9f('0x14'))(_0x0a9f('0x15'));var utils=require(_0x0a9f('0x16'));var config=require(_0x0a9f('0x17'));var licenseUtil=require(_0x0a9f('0x18'));var db=require(_0x0a9f('0x19'))['db'];function respondWithStatusCode(_0x273f6b,_0x3710c2){_0x3710c2=_0x3710c2||0xcc;return function(_0x1340e3){if(_0x1340e3){return _0x273f6b[_0x0a9f('0x1a')](_0x3710c2);}return _0x273f6b[_0x0a9f('0x1b')](_0x3710c2)[_0x0a9f('0x1c')]();};}function respondWithResult(_0x4aac66,_0xa9b7e){_0xa9b7e=_0xa9b7e||0xc8;return function(_0x482d30){if(_0x482d30){return _0x4aac66[_0x0a9f('0x1b')](_0xa9b7e)[_0x0a9f('0x1d')](_0x482d30);}};}function respondWithFilteredResult(_0x25bd38,_0x450165){return function(_0x54dec9){if(_0x54dec9){var _0x5110b6=typeof _0x450165['offset']==='undefined'&&typeof _0x450165[_0x0a9f('0x1e')]===_0x0a9f('0x1f');var _0x4efe03=_0x54dec9[_0x0a9f('0x20')];var _0x31bbc4=_0x5110b6?0x0:_0x450165[_0x0a9f('0x21')];var _0x505444=_0x5110b6?_0x54dec9[_0x0a9f('0x20')]:_0x450165[_0x0a9f('0x21')]+_0x450165[_0x0a9f('0x1e')];var _0x4fabc3;if(_0x505444>=_0x4efe03){_0x505444=_0x4efe03;_0x4fabc3=0xc8;}else{_0x4fabc3=0xce;}_0x25bd38[_0x0a9f('0x1b')](_0x4fabc3);return _0x25bd38['set'](_0x0a9f('0x22'),_0x31bbc4+'-'+_0x505444+'/'+_0x4efe03)[_0x0a9f('0x1d')](_0x54dec9);}return null;};}function patchUpdates(_0x2e010d){return function(_0x2c3d31){try{jsonpatch['apply'](_0x2c3d31,_0x2e010d,!![]);}catch(_0x5ad23c){return BPromise[_0x0a9f('0x23')](_0x5ad23c);}return _0x2c3d31[_0x0a9f('0x24')]();};}function saveUpdates(_0x917803,_0x957df0){return function(_0x2c4f1a){if(_0x2c4f1a){return _0x2c4f1a[_0x0a9f('0x25')](_0x917803)[_0x0a9f('0x26')](function(_0x40e5b3){return _0x40e5b3;});}return null;};}function removeEntity(_0x2e218f,_0x57f649){return function(_0x588ecc){if(_0x588ecc){return _0x588ecc[_0x0a9f('0x27')]()['then'](function(){var _0x957556=_0x588ecc[_0x0a9f('0x28')]({'plain':!![]});var _0x74f17d='Projects';return db[_0x0a9f('0x29')]['destroy']({'where':{'type':_0x74f17d,'resourceId':_0x957556['id']}})[_0x0a9f('0x26')](function(){return _0x588ecc;});})['then'](function(){_0x2e218f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x44b380,_0x433801){return function(_0x163d67){if(!_0x163d67){_0x44b380['sendStatus'](0x194);}return _0x163d67;};}function handleError(_0x48e90b,_0x18d470){_0x18d470=_0x18d470||0x1f4;return function(_0x48cfc5){logger[_0x0a9f('0x2a')](_0x48cfc5['stack']);if(_0x48cfc5['name']){delete _0x48cfc5[_0x0a9f('0x2b')];}_0x48e90b[_0x0a9f('0x1b')](_0x18d470)[_0x0a9f('0x2c')](_0x48cfc5);};}exports[_0x0a9f('0x2d')]=function(_0x40bd5d,_0x340d94){var _0x30d944={},_0x28d4c3={},_0x3231f8={'count':0x0,'rows':[]};var _0x5b19e5=_['map'](db['JscriptyProject']['rawAttributes'],function(_0x5cf498){return{'name':_0x5cf498[_0x0a9f('0x2e')],'type':_0x5cf498[_0x0a9f('0x2f')][_0x0a9f('0x30')]};});_0x28d4c3['model']=_[_0x0a9f('0x31')](_0x5b19e5,_0x0a9f('0x2b'));_0x28d4c3[_0x0a9f('0x32')]=_['keys'](_0x40bd5d[_0x0a9f('0x32')]);_0x28d4c3['filters']=_[_0x0a9f('0x33')](_0x28d4c3[_0x0a9f('0x34')],_0x28d4c3['query']);_0x30d944[_0x0a9f('0x35')]=_[_0x0a9f('0x33')](_0x28d4c3[_0x0a9f('0x34')],qs[_0x0a9f('0x36')](_0x40bd5d['query'][_0x0a9f('0x36')]));_0x30d944[_0x0a9f('0x35')]=_0x30d944[_0x0a9f('0x35')][_0x0a9f('0x37')]?_0x30d944[_0x0a9f('0x35')]:_0x28d4c3[_0x0a9f('0x34')];if(!_0x40bd5d['query'][_0x0a9f('0x38')](_0x0a9f('0x39'))){_0x30d944[_0x0a9f('0x1e')]=qs['limit'](_0x40bd5d['query']['limit']);_0x30d944[_0x0a9f('0x21')]=qs[_0x0a9f('0x21')](_0x40bd5d[_0x0a9f('0x32')][_0x0a9f('0x21')]);}_0x30d944['order']=qs['sort'](_0x40bd5d[_0x0a9f('0x32')][_0x0a9f('0x3a')]);_0x30d944[_0x0a9f('0x3b')]=qs[_0x0a9f('0x3c')](_[_0x0a9f('0x3d')](_0x40bd5d['query'],_0x28d4c3[_0x0a9f('0x3c')]),_0x5b19e5);if(_0x40bd5d[_0x0a9f('0x32')][_0x0a9f('0x3e')]){_0x30d944[_0x0a9f('0x3b')]=_[_0x0a9f('0x3f')](_0x30d944[_0x0a9f('0x3b')],{'$or':_[_0x0a9f('0x31')](_0x5b19e5,function(_0x125827){if(_0x125827[_0x0a9f('0x2f')]!==_0x0a9f('0x40')){var _0x242e30={};_0x242e30[_0x125827[_0x0a9f('0x2b')]]={'$like':'%'+_0x40bd5d[_0x0a9f('0x32')][_0x0a9f('0x3e')]+'%'};return _0x242e30;}})});}_0x30d944=_[_0x0a9f('0x3f')]({},_0x30d944,_0x40bd5d[_0x0a9f('0x41')]);var _0x1db7f2={'where':_0x30d944[_0x0a9f('0x3b')]};return db[_0x0a9f('0x42')][_0x0a9f('0x20')](_0x1db7f2)[_0x0a9f('0x26')](function(_0x186dd7){_0x3231f8[_0x0a9f('0x20')]=_0x186dd7;if(_0x40bd5d[_0x0a9f('0x32')][_0x0a9f('0x43')]){_0x30d944[_0x0a9f('0x44')]=[{'all':!![]}];}return db[_0x0a9f('0x42')]['findAll'](_0x30d944);})[_0x0a9f('0x26')](function(_0x29ffb0){_0x3231f8['rows']=_0x29ffb0;return _0x3231f8;})[_0x0a9f('0x26')](respondWithFilteredResult(_0x340d94,_0x30d944))[_0x0a9f('0x45')](handleError(_0x340d94,null));};exports['show']=function(_0x599377,_0x2e8495){var _0x4ee4c1={'raw':![],'where':{'id':_0x599377['params']['id']}},_0x33d3cb={};_0x33d3cb[_0x0a9f('0x34')]=_[_0x0a9f('0x46')](db['JscriptyProject']['rawAttributes']);_0x33d3cb['query']=_[_0x0a9f('0x46')](_0x599377[_0x0a9f('0x32')]);_0x33d3cb[_0x0a9f('0x3c')]=_[_0x0a9f('0x33')](_0x33d3cb[_0x0a9f('0x34')],_0x33d3cb[_0x0a9f('0x32')]);_0x4ee4c1[_0x0a9f('0x35')]=_[_0x0a9f('0x33')](_0x33d3cb[_0x0a9f('0x34')],qs['fields'](_0x599377[_0x0a9f('0x32')][_0x0a9f('0x36')]));_0x4ee4c1['attributes']=_0x4ee4c1['attributes']['length']?_0x4ee4c1['attributes']:_0x33d3cb[_0x0a9f('0x34')];if(_0x599377['query'][_0x0a9f('0x43')]){_0x4ee4c1[_0x0a9f('0x44')]=[{'all':!![]}];}_0x4ee4c1=_[_0x0a9f('0x3f')]({},_0x4ee4c1,_0x599377[_0x0a9f('0x41')]);return db[_0x0a9f('0x42')]['find'](_0x4ee4c1)[_0x0a9f('0x26')](handleEntityNotFound(_0x2e8495,null))[_0x0a9f('0x26')](respondWithResult(_0x2e8495,null))[_0x0a9f('0x45')](handleError(_0x2e8495,null));};exports[_0x0a9f('0x47')]=function(_0x3c9dd8,_0x2cac3e){return db[_0x0a9f('0x42')]['create'](_0x3c9dd8['body'],{})['then'](function(_0x12c23e){var _0x4c239c=_0x3c9dd8['user'][_0x0a9f('0x28')]({'plain':!![]});if(!_0x4c239c)throw new Error(_0x0a9f('0x48'));if(_0x4c239c[_0x0a9f('0x49')]===_0x0a9f('0x4a')){var _0x197849=_0x12c23e[_0x0a9f('0x28')]({'plain':!![]});var _0x1ea659='Projects';return db[_0x0a9f('0x4b')]['find']({'where':{'name':_0x1ea659,'userProfileId':_0x4c239c[_0x0a9f('0x4c')]},'raw':!![]})[_0x0a9f('0x26')](function(_0x95bede){if(_0x95bede&&_0x95bede[_0x0a9f('0x4d')]===0x0){return db[_0x0a9f('0x29')]['create']({'name':_0x197849[_0x0a9f('0x2b')],'resourceId':_0x197849['id'],'type':_0x95bede[_0x0a9f('0x2b')],'sectionId':_0x95bede['id']},{})[_0x0a9f('0x26')](function(){return _0x12c23e;});}else{return _0x12c23e;}})[_0x0a9f('0x45')](function(_0x2c58c7){logger[_0x0a9f('0x2a')](_0x0a9f('0x4e'),_0x2c58c7);throw _0x2c58c7;});}return _0x12c23e;})[_0x0a9f('0x26')](respondWithResult(_0x2cac3e,0xc9))[_0x0a9f('0x45')](handleError(_0x2cac3e,null));};exports['clone']=function(_0x4bce0d,_0x3d7193){var _0x2a08c1={'where':{'id':_0x4bce0d[_0x0a9f('0x4f')]['id']}},_0x2b40f3={};_0x2b40f3[_0x0a9f('0x34')]=_['keys'](db[_0x0a9f('0x42')]['rawAttributes']);_0x2a08c1[_0x0a9f('0x35')]=_['intersection'](_0x2b40f3[_0x0a9f('0x34')],qs['fields'](_0x4bce0d[_0x0a9f('0x32')][_0x0a9f('0x36')]));_0x2a08c1[_0x0a9f('0x35')]=_0x2a08c1[_0x0a9f('0x35')][_0x0a9f('0x37')]?_0x2a08c1[_0x0a9f('0x35')]:_0x2b40f3[_0x0a9f('0x34')];if(_0x4bce0d[_0x0a9f('0x32')][_0x0a9f('0x43')]){_0x2a08c1[_0x0a9f('0x44')]=[{'all':!![]}];}_0x2a08c1=_[_0x0a9f('0x3f')]({},_0x2a08c1,_0x4bce0d[_0x0a9f('0x41')]);return db['JscriptyProject'][_0x0a9f('0x50')](_0x2a08c1)['then'](handleEntityNotFound(_0x3d7193,null))[_0x0a9f('0x26')](function(_0x10b08f){if(_0x10b08f){var _0xd54cbe=_0x10b08f[_0x0a9f('0x28')]({'plain':!![]});_0xd54cbe=qs[_0x0a9f('0x51')](_0xd54cbe,['id',_0x0a9f('0x52'),_0x0a9f('0x53')]);_0x4bce0d[_0x0a9f('0x54')]=_[_0x0a9f('0x51')](_0x4bce0d['body'],['id',_0x0a9f('0x52'),_0x0a9f('0x53')]);return db[_0x0a9f('0x42')]['create'](_[_0x0a9f('0x3f')](_0xd54cbe,_0x4bce0d['body']),{'include':_0x4bce0d[_0x0a9f('0x32')][_0x0a9f('0x43')]?[{'all':!![]}]:undefined})['then'](function(_0x2b7b74){var _0x228537=_0x4bce0d[_0x0a9f('0x4a')][_0x0a9f('0x28')]({'plain':!![]});if(!_0x228537)throw new Error(_0x0a9f('0x48'));if(_0x228537[_0x0a9f('0x49')]===_0x0a9f('0x4a')){var _0x393b70=_0x2b7b74[_0x0a9f('0x28')]({'plain':!![]});var _0x2f7995=_0x0a9f('0x55');return db[_0x0a9f('0x4b')][_0x0a9f('0x50')]({'where':{'name':_0x2f7995,'userProfileId':_0x228537[_0x0a9f('0x4c')]},'raw':!![]})[_0x0a9f('0x26')](function(_0x2c796f){if(_0x2c796f&&_0x2c796f['autoAssociation']===0x0){return db['UserProfileResource'][_0x0a9f('0x47')]({'name':_0x393b70[_0x0a9f('0x2b')],'resourceId':_0x393b70['id'],'type':_0x2c796f['name'],'sectionId':_0x2c796f['id']},{})[_0x0a9f('0x26')](function(){return _0x2b7b74;});}else{return _0x2b7b74;}})[_0x0a9f('0x45')](function(_0x4b3d8f){logger[_0x0a9f('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b3d8f);throw _0x4b3d8f;});}return _0x2b7b74;});}})['then'](respondWithResult(_0x3d7193,0xc9))[_0x0a9f('0x45')](handleError(_0x3d7193,null));};exports[_0x0a9f('0x25')]=function(_0xb3deaa,_0x14876c){if(_0xb3deaa['body']['id']){delete _0xb3deaa[_0x0a9f('0x54')]['id'];}return db[_0x0a9f('0x42')]['find']({'where':{'id':_0xb3deaa[_0x0a9f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x14876c,null))[_0x0a9f('0x26')](saveUpdates(_0xb3deaa['body'],null))[_0x0a9f('0x26')](respondWithResult(_0x14876c,null))[_0x0a9f('0x45')](handleError(_0x14876c,null));};exports[_0x0a9f('0x27')]=function(_0x5d7e8b,_0x12ebf4){return db[_0x0a9f('0x42')][_0x0a9f('0x50')]({'where':{'id':_0x5d7e8b[_0x0a9f('0x4f')]['id']}})[_0x0a9f('0x26')](handleEntityNotFound(_0x12ebf4,null))[_0x0a9f('0x26')](removeEntity(_0x12ebf4,null))[_0x0a9f('0x45')](handleError(_0x12ebf4,null));};exports[_0x0a9f('0x56')]=function(_0x3f91d5,_0x26ff64,_0x118d65){var _0xa4eb64={'raw':!![],'where':{}};var _0x58ad16={};var _0x1cc583={'count':0x0,'rows':[]};return db[_0x0a9f('0x42')][_0x0a9f('0x57')]({'where':{'id':_0x3f91d5['params']['id']}})[_0x0a9f('0x26')](handleEntityNotFound(_0x26ff64,null))[_0x0a9f('0x26')](function(_0x420c3e){if(_0x420c3e){_0x58ad16[_0x0a9f('0x34')]=_[_0x0a9f('0x46')](db[_0x0a9f('0x58')][_0x0a9f('0x59')]);_0x58ad16[_0x0a9f('0x32')]=_[_0x0a9f('0x46')](_0x3f91d5[_0x0a9f('0x32')]);_0x58ad16[_0x0a9f('0x3c')]=_[_0x0a9f('0x33')](_0x58ad16[_0x0a9f('0x34')],_0x58ad16[_0x0a9f('0x32')]);_0xa4eb64[_0x0a9f('0x35')]=_['intersection'](_0x58ad16['model'],qs[_0x0a9f('0x36')](_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x36')]));_0xa4eb64[_0x0a9f('0x35')]=_0xa4eb64['attributes'][_0x0a9f('0x37')]?_0xa4eb64[_0x0a9f('0x35')]:_0x58ad16['model'];if(!_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x38')](_0x0a9f('0x39'))){_0xa4eb64[_0x0a9f('0x1e')]=qs[_0x0a9f('0x1e')](_0x3f91d5[_0x0a9f('0x32')]['limit']);_0xa4eb64['offset']=qs[_0x0a9f('0x21')](_0x3f91d5[_0x0a9f('0x32')]['offset']);}_0xa4eb64[_0x0a9f('0x5a')]=qs[_0x0a9f('0x3a')](_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x3a')]);_0xa4eb64[_0x0a9f('0x3b')]=qs[_0x0a9f('0x3c')](_[_0x0a9f('0x3d')](_0x3f91d5[_0x0a9f('0x32')],_0x58ad16[_0x0a9f('0x3c')]));_0xa4eb64['where'][_0x0a9f('0x5b')]=_0x420c3e['id'];if(_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x3e')]){_0xa4eb64['where']=_[_0x0a9f('0x3f')](_0xa4eb64[_0x0a9f('0x3b')],{'$or':_[_0x0a9f('0x31')](_0xa4eb64['attributes'],function(_0xd07013){var _0x1ae150={};_0x1ae150[_0xd07013]={'$like':'%'+_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x3e')]+'%'};return _0x1ae150;})});}_0xa4eb64=_['merge']({},_0xa4eb64,_0x3f91d5[_0x0a9f('0x41')]);return db[_0x0a9f('0x58')][_0x0a9f('0x20')]({'where':_0xa4eb64[_0x0a9f('0x3b')]})[_0x0a9f('0x26')](function(_0x44b4a4){_0x1cc583['count']=_0x44b4a4;if(_0x3f91d5[_0x0a9f('0x32')][_0x0a9f('0x43')]){_0xa4eb64[_0x0a9f('0x44')]=[{'all':!![]}];}return db[_0x0a9f('0x58')]['findAll'](_0xa4eb64);})[_0x0a9f('0x26')](function(_0x1dc13f){_0x1cc583[_0x0a9f('0x5c')]=_0x1dc13f;return _0x1cc583;});}})[_0x0a9f('0x26')](respondWithFilteredResult(_0x26ff64,_0xa4eb64))['catch'](handleError(_0x26ff64,null));};exports[_0x0a9f('0x5d')]=function(_0x4deb76,_0x23d162,_0x897406){var _0x5c5b1b={'raw':!![],'where':{}};var _0x13675b={};var _0x508ca7={'count':0x0,'rows':[]};return db[_0x0a9f('0x42')]['findOne']({'where':{'id':_0x4deb76[_0x0a9f('0x4f')]['id']}})[_0x0a9f('0x26')](handleEntityNotFound(_0x23d162,null))[_0x0a9f('0x26')](function(_0x5043c9){if(_0x5043c9){_0x13675b[_0x0a9f('0x34')]=_['keys'](db['JscriptyAnswerReport'][_0x0a9f('0x59')]);_0x13675b['query']=_[_0x0a9f('0x46')](_0x4deb76[_0x0a9f('0x32')]);_0x13675b[_0x0a9f('0x3c')]=_[_0x0a9f('0x33')](_0x13675b['model'],_0x13675b[_0x0a9f('0x32')]);_0x5c5b1b[_0x0a9f('0x35')]=_[_0x0a9f('0x33')](_0x13675b[_0x0a9f('0x34')],qs[_0x0a9f('0x36')](_0x4deb76['query'][_0x0a9f('0x36')]));_0x5c5b1b['attributes']=_0x5c5b1b[_0x0a9f('0x35')][_0x0a9f('0x37')]?_0x5c5b1b[_0x0a9f('0x35')]:_0x13675b[_0x0a9f('0x34')];if(!_0x4deb76[_0x0a9f('0x32')][_0x0a9f('0x38')]('nolimit')){_0x5c5b1b['limit']=qs[_0x0a9f('0x1e')](_0x4deb76[_0x0a9f('0x32')]['limit']);_0x5c5b1b['offset']=qs[_0x0a9f('0x21')](_0x4deb76[_0x0a9f('0x32')][_0x0a9f('0x21')]);}_0x5c5b1b[_0x0a9f('0x5a')]=qs[_0x0a9f('0x3a')](_0x4deb76[_0x0a9f('0x32')]['sort']);_0x5c5b1b['where']=qs[_0x0a9f('0x3c')](_['pick'](_0x4deb76[_0x0a9f('0x32')],_0x13675b['filters']));_0x5c5b1b[_0x0a9f('0x3b')][_0x0a9f('0x5b')]=_0x5043c9['id'];if(_0x4deb76[_0x0a9f('0x32')][_0x0a9f('0x3e')]){_0x5c5b1b[_0x0a9f('0x3b')]=_[_0x0a9f('0x3f')](_0x5c5b1b[_0x0a9f('0x3b')],{'$or':_[_0x0a9f('0x31')](_0x5c5b1b[_0x0a9f('0x35')],function(_0x3d8df6){var _0x40c21e={};_0x40c21e[_0x3d8df6]={'$like':'%'+_0x4deb76[_0x0a9f('0x32')][_0x0a9f('0x3e')]+'%'};return _0x40c21e;})});}_0x5c5b1b=_['merge']({},_0x5c5b1b,_0x4deb76[_0x0a9f('0x41')]);return db[_0x0a9f('0x5e')][_0x0a9f('0x20')]({'where':_0x5c5b1b[_0x0a9f('0x3b')]})[_0x0a9f('0x26')](function(_0x4dad11){_0x508ca7[_0x0a9f('0x20')]=_0x4dad11;if(_0x4deb76[_0x0a9f('0x32')][_0x0a9f('0x43')]){_0x5c5b1b[_0x0a9f('0x44')]=[{'all':!![]}];}return db[_0x0a9f('0x5e')][_0x0a9f('0x5f')](_0x5c5b1b);})[_0x0a9f('0x26')](function(_0x309fc4){_0x508ca7[_0x0a9f('0x5c')]=_0x309fc4;return _0x508ca7;});}})[_0x0a9f('0x26')](respondWithFilteredResult(_0x23d162,_0x5c5b1b))['catch'](handleError(_0x23d162,null));};function char(_0x454ee3){return _0x0a9f('0x60')===typeof _0x454ee3?String[_0x0a9f('0x61')][_0x0a9f('0x62')](null,arguments):_0x454ee3;}function needsEncapsulation(_0x23fc53){return!!_0x23fc53&&(_0x23fc53[_0x0a9f('0x63')]()[_0x0a9f('0x64')](char(0xd))>=0x0||_0x23fc53[_0x0a9f('0x63')]()[_0x0a9f('0x64')](char(0xa))>=0x0||_0x23fc53[_0x0a9f('0x63')]()[_0x0a9f('0x64')](char(0x2c))>=0x0||_0x23fc53[_0x0a9f('0x63')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x117e43){var _0x1634ec=char(0x22),_0x44b074='\x5c'+char(0x22),_0x27b644=_0x117e43[_0x0a9f('0x63')]()['replace'](new RegExp(_0x1634ec,'g'),_0x44b074);return _0x1634ec+_0x27b644+_0x1634ec;}exports[_0x0a9f('0x65')]=function(_0x2c5dc8,_0x3d4a88,_0x13c00f){var _0x32ae1b,_0x225c9c;var _0x35ea31={'where':{'ProjectId':_0x2c5dc8[_0x0a9f('0x4f')]['id']}};if(_0x2c5dc8[_0x0a9f('0x32')]['startTime']){_0x35ea31[_0x0a9f('0x3b')]['starttime']=JSON[_0x0a9f('0x66')](_0x2c5dc8[_0x0a9f('0x32')][_0x0a9f('0x67')]);}return db[_0x0a9f('0x58')]['findAll'](_0x35ea31)['then'](handleEntityNotFound(_0x3d4a88,null))[_0x0a9f('0x26')](function(_0xb816c9){if(_0xb816c9){_0x32ae1b=_0xb816c9;return db[_0x0a9f('0x68')][_0x0a9f('0x5f')]({'where':{'SessionId':{'$in':_[_0x0a9f('0x31')](_0x32ae1b,'id')},'ProjectId':_0x2c5dc8[_0x0a9f('0x4f')]['id']},'order':_0x0a9f('0x69')});}})[_0x0a9f('0x26')](handleEntityNotFound(_0x3d4a88,null))['then'](function(_0x1bf4e4){if(_0x1bf4e4){_0x225c9c=_0x1bf4e4;var _0x324998={};for(var _0x334cfe=0x0,_0x33ccd0=_0x225c9c['length'];_0x334cfe<_0x33ccd0;_0x334cfe++){if(!_0x324998['hasOwnProperty'](_0x225c9c[_0x334cfe][_0x0a9f('0x6a')])){_0x324998[_0x225c9c[_0x334cfe][_0x0a9f('0x6a')]]=needsEncapsulation(_0x225c9c[_0x334cfe][_0x0a9f('0x6b')])?encapsulate(_0x225c9c[_0x334cfe][_0x0a9f('0x6b')]):_0x225c9c[_0x334cfe]['question'];}}var _0x29a216=[],_0x5ee243={};for(var _0x5016a3=0x0,_0x21043e=_0x32ae1b[_0x0a9f('0x37')];_0x5016a3<_0x21043e;_0x5016a3++){_0x5ee243={'ProjectId':_0x2c5dc8['params']['id'],'SessionId':_0x32ae1b[_0x5016a3]['id'],'StartTime':moment(_0x32ae1b[_0x5016a3][_0x0a9f('0x6c')])[_0x0a9f('0x6d')](_0x0a9f('0x6e'))};for(var _0x28a4f3=0x0,_0x53dfc8=_0x225c9c[_0x0a9f('0x37')];_0x28a4f3<_0x53dfc8;_0x28a4f3++){if(_0x225c9c[_0x28a4f3][_0x0a9f('0x6f')]==_0x32ae1b[_0x5016a3]['id']&&_0x324998['hasOwnProperty'](_0x225c9c[_0x28a4f3][_0x0a9f('0x6a')])){_0x5ee243[_0x324998[_0x225c9c[_0x28a4f3][_0x0a9f('0x6a')]]]=_0x225c9c[_0x28a4f3][_0x0a9f('0x70')];}}for(var _0x53a2e3 in _0x324998){if(!_0x5ee243[_0x0a9f('0x38')](_0x324998[_0x53a2e3])){_0x5ee243[_0x324998[_0x53a2e3]]=null;}}_0x29a216['push'](_0x5ee243);}return _0x29a216;}})[_0x0a9f('0x26')](function(_0x4a83cd){if(!_['isEmpty'](_0x4a83cd)){var _0x5b4e9c=toCsv(_0x4a83cd);var _0x2b17e6=Date[_0x0a9f('0x71')]();fs[_0x0a9f('0x72')](util[_0x0a9f('0x6d')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x2c5dc8[_0x0a9f('0x4f')]['id'],_0x2b17e6),_0x5b4e9c);_0x3d4a88[_0x0a9f('0x73')](_0x0a9f('0x74'),_0x0a9f('0x75')+util[_0x0a9f('0x6d')](_0x0a9f('0x76'),_0x2c5dc8[_0x0a9f('0x4f')]['id'],_0x2b17e6));_0x3d4a88[_0x0a9f('0x73')]('Content-type',_0x0a9f('0x77'));return _0x3d4a88[_0x0a9f('0x78')](util[_0x0a9f('0x6d')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x2c5dc8[_0x0a9f('0x4f')]['id'],_0x2b17e6));}else{return _0x3d4a88['sendStatus'](0xcc);}})[_0x0a9f('0x45')](handleError(_0x3d4a88,null));};
\ No newline at end of file
index 23edfa1..4e4d490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fe=['path','rimraf','../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','lodash','util','../../config/logger','bluebird'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x49fe,0x100));var _0xe49f=function(_0x56c3c1,_0x128e91){_0x56c3c1=_0x56c3c1-0x0;var _0x561a66=_0x49fe[_0x56c3c1];return _0x561a66;};'use strict';var _=require(_0xe49f('0x0'));var util=require(_0xe49f('0x1'));var logger=require(_0xe49f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xe49f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe49f('0x4'));var rimraf=require(_0xe49f('0x5'));var config=require(_0xe49f('0x6'));var attributes=require(_0xe49f('0x7'));module['exports']=function(_0x20633a,_0x51fe70){return _0x20633a[_0xe49f('0x8')](_0xe49f('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0bb=['JscriptyProject','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','exports','define'];(function(_0x1f46de,_0x188483){var _0x5bbb3d=function(_0x43e3fd){while(--_0x43e3fd){_0x1f46de['push'](_0x1f46de['shift']());}};_0x5bbb3d(++_0x188483);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x573773,_0x36caa2){_0x573773=_0x573773-0x0;var _0x2b56af=_0xd0bb[_0x573773];return _0x2b56af;};'use strict';var _=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var logger=require(_0xbd0b('0x2'))('api');var moment=require(_0xbd0b('0x3'));var BPromise=require('bluebird');var rp=require(_0xbd0b('0x4'));var fs=require('fs');var path=require(_0xbd0b('0x5'));var rimraf=require('rimraf');var config=require(_0xbd0b('0x6'));var attributes=require('./jscriptyProject.attributes');module[_0xbd0b('0x7')]=function(_0x1b2499,_0x158b5c){return _0x1b2499[_0xbd0b('0x8')](_0xbd0b('0x9'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c6ea8d..7d73979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x303f7d,_0xb36ce4){var _0xb7935f=function(_0x477b8c){while(--_0x477b8c){_0x303f7d['push'](_0x303f7d['shift']());}};_0xb7935f(++_0xb36ce4);}(_0x70e0,0x17b));var _0x070e=function(_0x51185d,_0x530344){_0x51185d=_0x51185d-0x0;var _0x21afe6=_0x70e0[_0x51185d];return _0x21afe6;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0xf4eb=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x21b077,_0x3d75bb){var _0x417e98=function(_0x2e3b92){while(--_0x2e3b92){_0x21b077['push'](_0x21b077['shift']());}};_0x417e98(++_0x3d75bb);}(_0xf4eb,0xec));var _0xbf4e=function(_0xb7858b,_0x16a4e8){_0xb7858b=_0xb7858b-0x0;var _0x4bf366=_0xf4eb[_0xb7858b];return _0x4bf366;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('JscriptyProject,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index 3e52a4e..dfd3e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54b9=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x4bc3a3,_0x352283){var _0x474735=function(_0x430c07){while(--_0x430c07){_0x4bc3a3['push'](_0x4bc3a3['shift']());}};_0x474735(++_0x352283);}(_0x54b9,0x126));var _0x954b=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x54b9[_0xa1e3e3];return _0xc980e9;};'use strict';var multer=require(_0x954b('0x0'));var util=require('util');var path=require(_0x954b('0x1'));var timeout=require(_0x954b('0x2'));var express=require(_0x954b('0x3'));var router=express[_0x954b('0x4')]();var fs_extra=require(_0x954b('0x5'));var auth=require(_0x954b('0x6'));var interaction=require(_0x954b('0x7'));var config=require(_0x954b('0x8'));var controller=require(_0x954b('0x9'));router[_0x954b('0xa')]('/',auth[_0x954b('0xb')](),controller[_0x954b('0xc')]);router[_0x954b('0xa')](_0x954b('0xd'),auth[_0x954b('0xb')](),controller[_0x954b('0xe')]);router['get'](_0x954b('0xf'),auth['isAuthenticated'](),controller[_0x954b('0x10')]);router['post']('/',auth[_0x954b('0xb')](),controller[_0x954b('0x11')]);router[_0x954b('0x12')](_0x954b('0xf'),auth['isAuthenticated'](),controller[_0x954b('0x13')]);router[_0x954b('0x14')]('/:id',auth[_0x954b('0xb')](),controller[_0x954b('0x15')]);module[_0x954b('0x16')]=router;
\ No newline at end of file
+var _0xe836=['create','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','/:id','show','post'];(function(_0x3cf3fe,_0x386edb){var _0xb78b28=function(_0x13acde){while(--_0x13acde){_0x3cf3fe['push'](_0x3cf3fe['shift']());}};_0xb78b28(++_0x386edb);}(_0xe836,0xf5));var _0x6e83=function(_0x2b58ba,_0x1c5695){_0x2b58ba=_0x2b58ba-0x0;var _0x5dc914=_0xe836[_0x2b58ba];return _0x5dc914;};'use strict';var multer=require(_0x6e83('0x0'));var util=require(_0x6e83('0x1'));var path=require(_0x6e83('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e83('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6e83('0x4'));var interaction=require(_0x6e83('0x5'));var config=require(_0x6e83('0x6'));var controller=require(_0x6e83('0x7'));router[_0x6e83('0x8')]('/',auth[_0x6e83('0x9')](),controller[_0x6e83('0xa')]);router[_0x6e83('0x8')](_0x6e83('0xb'),auth[_0x6e83('0x9')](),controller['describe']);router['get'](_0x6e83('0xc'),auth[_0x6e83('0x9')](),controller[_0x6e83('0xd')]);router[_0x6e83('0xe')]('/',auth[_0x6e83('0x9')](),controller[_0x6e83('0xf')]);router[_0x6e83('0x10')](_0x6e83('0xc'),auth['isAuthenticated'](),controller[_0x6e83('0x11')]);router[_0x6e83('0x12')](_0x6e83('0xc'),auth[_0x6e83('0x9')](),controller[_0x6e83('0x13')]);module['exports']=router;
\ No newline at end of file
index 38ee621..8293aaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x7a54,0x106));var _0x47a5=function(_0x596eec,_0x31ead7){_0x596eec=_0x596eec-0x0;var _0xc0d8bb=_0x7a54[_0x596eec];return _0xc0d8bb;};'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(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x7a54,0x106));var _0x47a5=function(_0x4e530e,_0x52dc6e){_0x4e530e=_0x4e530e-0x0;var _0x324827=_0x7a54[_0x4e530e];return _0x324827;};'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 fbfc975..b38c31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6718=['show','params','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','error','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','key','model','map','query','keys','attributes','intersection','fields','length','nolimit','sort','pick','where','merge','type','filter','options','include','catch'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0x6718,0xdc));var _0x8671=function(_0x29db36,_0x410ae9){_0x29db36=_0x29db36-0x0;var _0x234e87=_0x6718[_0x29db36];return _0x234e87;};'use strict';var emlformat=require(_0x8671('0x0'));var rimraf=require(_0x8671('0x1'));var zipdir=require(_0x8671('0x2'));var jsonpatch=require(_0x8671('0x3'));var rp=require(_0x8671('0x4'));var moment=require(_0x8671('0x5'));var BPromise=require(_0x8671('0x6'));var Mustache=require('mustache');var util=require(_0x8671('0x7'));var path=require(_0x8671('0x8'));var sox=require('sox');var csv=require(_0x8671('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8671('0xa'));var _=require(_0x8671('0xb'));var squel=require(_0x8671('0xc'));var crypto=require('crypto');var jsforce=require(_0x8671('0xd'));var deskjs=require(_0x8671('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8671('0xf'));var Papa=require(_0x8671('0x10'));var Redis=require('ioredis');var authService=require(_0x8671('0x11'));var qs=require(_0x8671('0x12'));var as=require(_0x8671('0x13'));var hardwareService=require(_0x8671('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x8671('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8671('0x16'));var db=require(_0x8671('0x17'))['db'];function respondWithStatusCode(_0x465a52,_0x24eeb1){_0x24eeb1=_0x24eeb1||0xcc;return function(_0x25dd09){if(_0x25dd09){return _0x465a52[_0x8671('0x18')](_0x24eeb1);}return _0x465a52[_0x8671('0x19')](_0x24eeb1)[_0x8671('0x1a')]();};}function respondWithResult(_0x245bae,_0x16066c){_0x16066c=_0x16066c||0xc8;return function(_0x2a9091){if(_0x2a9091){return _0x245bae[_0x8671('0x19')](_0x16066c)[_0x8671('0x1b')](_0x2a9091);}};}function respondWithFilteredResult(_0x347d0c,_0xb83f39){return function(_0x12e30f){if(_0x12e30f){var _0x2fc9fd=typeof _0xb83f39[_0x8671('0x1c')]===_0x8671('0x1d')&&typeof _0xb83f39['limit']===_0x8671('0x1d');var _0x16aac3=_0x12e30f[_0x8671('0x1e')];var _0x4b3549=_0x2fc9fd?0x0:_0xb83f39[_0x8671('0x1c')];var _0x460351=_0x2fc9fd?_0x12e30f['count']:_0xb83f39[_0x8671('0x1c')]+_0xb83f39[_0x8671('0x1f')];var _0x103b26;if(_0x460351>=_0x16aac3){_0x460351=_0x16aac3;_0x103b26=0xc8;}else{_0x103b26=0xce;}_0x347d0c[_0x8671('0x19')](_0x103b26);return _0x347d0c[_0x8671('0x20')]('Content-Range',_0x4b3549+'-'+_0x460351+'/'+_0x16aac3)[_0x8671('0x1b')](_0x12e30f);}return null;};}function patchUpdates(_0x311234){return function(_0x3878c2){try{jsonpatch[_0x8671('0x21')](_0x3878c2,_0x311234,!![]);}catch(_0x4b3b73){return BPromise['reject'](_0x4b3b73);}return _0x3878c2[_0x8671('0x22')]();};}function saveUpdates(_0x371929,_0x524056){return function(_0x478246){if(_0x478246){return _0x478246[_0x8671('0x23')](_0x371929)[_0x8671('0x24')](function(_0x403556){return _0x403556;});}return null;};}function removeEntity(_0x58e18d,_0x4fe458){return function(_0x3c254b){if(_0x3c254b){return _0x3c254b['destroy']()[_0x8671('0x24')](function(){_0x58e18d[_0x8671('0x19')](0xcc)[_0x8671('0x1a')]();});}};}function handleEntityNotFound(_0x5bd4e1,_0x5df349){return function(_0x59a79e){if(!_0x59a79e){_0x5bd4e1[_0x8671('0x18')](0x194);}return _0x59a79e;};}function handleError(_0x3659c3,_0x30dc1e){_0x30dc1e=_0x30dc1e||0x1f4;return function(_0x5b6fa9){logger[_0x8671('0x25')](_0x5b6fa9[_0x8671('0x26')]);if(_0x5b6fa9[_0x8671('0x27')]){delete _0x5b6fa9[_0x8671('0x27')];}_0x3659c3[_0x8671('0x19')](_0x30dc1e)[_0x8671('0x28')](_0x5b6fa9);};}exports[_0x8671('0x29')]=function(_0x558962,_0x372489){var _0x39fb15={},_0x2f9bff={},_0x31a971={'count':0x0,'rows':[]};var _0x153396=_['map'](db[_0x8671('0x2a')][_0x8671('0x2b')],function(_0x5c312e){return{'name':_0x5c312e[_0x8671('0x2c')],'type':_0x5c312e['type'][_0x8671('0x2d')]};});_0x2f9bff[_0x8671('0x2e')]=_[_0x8671('0x2f')](_0x153396,_0x8671('0x27'));_0x2f9bff[_0x8671('0x30')]=_[_0x8671('0x31')](_0x558962['query']);_0x2f9bff['filters']=_['intersection'](_0x2f9bff[_0x8671('0x2e')],_0x2f9bff[_0x8671('0x30')]);_0x39fb15[_0x8671('0x32')]=_[_0x8671('0x33')](_0x2f9bff[_0x8671('0x2e')],qs['fields'](_0x558962[_0x8671('0x30')][_0x8671('0x34')]));_0x39fb15['attributes']=_0x39fb15['attributes'][_0x8671('0x35')]?_0x39fb15['attributes']:_0x2f9bff[_0x8671('0x2e')];if(!_0x558962[_0x8671('0x30')]['hasOwnProperty'](_0x8671('0x36'))){_0x39fb15['limit']=qs['limit'](_0x558962[_0x8671('0x30')]['limit']);_0x39fb15[_0x8671('0x1c')]=qs[_0x8671('0x1c')](_0x558962[_0x8671('0x30')][_0x8671('0x1c')]);}_0x39fb15['order']=qs[_0x8671('0x37')](_0x558962['query'][_0x8671('0x37')]);_0x39fb15['where']=qs['filters'](_[_0x8671('0x38')](_0x558962[_0x8671('0x30')],_0x2f9bff['filters']),_0x153396);if(_0x558962[_0x8671('0x30')]['filter']){_0x39fb15[_0x8671('0x39')]=_[_0x8671('0x3a')](_0x39fb15[_0x8671('0x39')],{'$or':_[_0x8671('0x2f')](_0x153396,function(_0xa0bea1){if(_0xa0bea1[_0x8671('0x3b')]!=='VIRTUAL'){var _0x144993={};_0x144993[_0xa0bea1[_0x8671('0x27')]]={'$like':'%'+_0x558962[_0x8671('0x30')][_0x8671('0x3c')]+'%'};return _0x144993;}})});}_0x39fb15=_[_0x8671('0x3a')]({},_0x39fb15,_0x558962[_0x8671('0x3d')]);var _0x3107f5={'where':_0x39fb15[_0x8671('0x39')]};return db[_0x8671('0x2a')][_0x8671('0x1e')](_0x3107f5)[_0x8671('0x24')](function(_0x3e22b9){_0x31a971[_0x8671('0x1e')]=_0x3e22b9;if(_0x558962[_0x8671('0x30')]['includeAll']){_0x39fb15[_0x8671('0x3e')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x39fb15);})['then'](function(_0x556049){_0x31a971['rows']=_0x556049;return _0x31a971;})[_0x8671('0x24')](respondWithFilteredResult(_0x372489,_0x39fb15))[_0x8671('0x3f')](handleError(_0x372489,null));};exports[_0x8671('0x40')]=function(_0x55e191,_0x3b0af7){var _0x359791={'raw':!![],'where':{'id':_0x55e191[_0x8671('0x41')]['id']}},_0x291ec6={};_0x291ec6[_0x8671('0x2e')]=_[_0x8671('0x31')](db['JscriptyQuestionReport'][_0x8671('0x2b')]);_0x291ec6[_0x8671('0x30')]=_['keys'](_0x55e191[_0x8671('0x30')]);_0x291ec6['filters']=_[_0x8671('0x33')](_0x291ec6[_0x8671('0x2e')],_0x291ec6['query']);_0x359791[_0x8671('0x32')]=_[_0x8671('0x33')](_0x291ec6[_0x8671('0x2e')],qs[_0x8671('0x34')](_0x55e191[_0x8671('0x30')][_0x8671('0x34')]));_0x359791['attributes']=_0x359791[_0x8671('0x32')][_0x8671('0x35')]?_0x359791[_0x8671('0x32')]:_0x291ec6[_0x8671('0x2e')];if(_0x55e191[_0x8671('0x30')][_0x8671('0x42')]){_0x359791['include']=[{'all':!![]}];}_0x359791=_[_0x8671('0x3a')]({},_0x359791,_0x55e191[_0x8671('0x3d')]);return db[_0x8671('0x2a')][_0x8671('0x43')](_0x359791)[_0x8671('0x24')](handleEntityNotFound(_0x3b0af7,null))[_0x8671('0x24')](respondWithResult(_0x3b0af7,null))['catch'](handleError(_0x3b0af7,null));};exports[_0x8671('0x44')]=function(_0x1ee136,_0x16df51){return db[_0x8671('0x2a')]['create'](_0x1ee136['body'],{})[_0x8671('0x24')](respondWithResult(_0x16df51,0xc9))['catch'](handleError(_0x16df51,null));};exports[_0x8671('0x23')]=function(_0x307ffd,_0x518944){if(_0x307ffd[_0x8671('0x45')]['id']){delete _0x307ffd[_0x8671('0x45')]['id'];}return db[_0x8671('0x2a')]['find']({'where':{'id':_0x307ffd['params']['id']}})['then'](handleEntityNotFound(_0x518944,null))['then'](saveUpdates(_0x307ffd['body'],null))[_0x8671('0x24')](respondWithResult(_0x518944,null))['catch'](handleError(_0x518944,null));};exports['destroy']=function(_0x2a523c,_0x1c1963){return db[_0x8671('0x2a')][_0x8671('0x43')]({'where':{'id':_0x2a523c['params']['id']}})[_0x8671('0x24')](handleEntityNotFound(_0x1c1963,null))[_0x8671('0x24')](removeEntity(_0x1c1963,null))['catch'](handleError(_0x1c1963,null));};exports[_0x8671('0x46')]=function(_0x1a7450,_0x22be60){return db[_0x8671('0x2a')][_0x8671('0x46')]()[_0x8671('0x24')](respondWithResult(_0x22be60,null))[_0x8671('0x3f')](handleError(_0x22be60,null));};
\ No newline at end of file
+var _0xdfa0=['moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','map','JscriptyQuestionReport','rawAttributes','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','show','params','length','find','catch','create','body','describe','rimraf','fast-json-patch','request-promise'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xdfa0,0x119));var _0x0dfa=function(_0x137cd0,_0x19449b){_0x137cd0=_0x137cd0-0x0;var _0x2c8d56=_0xdfa0[_0x137cd0];return _0x2c8d56;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0dfa('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0dfa('0x1'));var rp=require(_0x0dfa('0x2'));var moment=require(_0x0dfa('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0dfa('0x4'));var util=require(_0x0dfa('0x5'));var path=require(_0x0dfa('0x6'));var sox=require(_0x0dfa('0x7'));var csv=require('to-csv');var ejs=require(_0x0dfa('0x8'));var fs=require('fs');var fs_extra=require(_0x0dfa('0x9'));var _=require('lodash');var squel=require(_0x0dfa('0xa'));var crypto=require(_0x0dfa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x0dfa('0xc'));var toCsv=require(_0x0dfa('0xd'));var querystring=require(_0x0dfa('0xe'));var Papa=require(_0x0dfa('0xf'));var Redis=require(_0x0dfa('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0dfa('0x11'));var as=require(_0x0dfa('0x12'));var hardwareService=require(_0x0dfa('0x13'));var logger=require(_0x0dfa('0x14'))(_0x0dfa('0x15'));var utils=require(_0x0dfa('0x16'));var config=require(_0x0dfa('0x17'));var licenseUtil=require(_0x0dfa('0x18'));var db=require(_0x0dfa('0x19'))['db'];function respondWithStatusCode(_0x153658,_0x64c2e7){_0x64c2e7=_0x64c2e7||0xcc;return function(_0x289bd8){if(_0x289bd8){return _0x153658[_0x0dfa('0x1a')](_0x64c2e7);}return _0x153658[_0x0dfa('0x1b')](_0x64c2e7)[_0x0dfa('0x1c')]();};}function respondWithResult(_0x33a297,_0x1edf57){_0x1edf57=_0x1edf57||0xc8;return function(_0x2ba033){if(_0x2ba033){return _0x33a297[_0x0dfa('0x1b')](_0x1edf57)[_0x0dfa('0x1d')](_0x2ba033);}};}function respondWithFilteredResult(_0x26d000,_0x163e9f){return function(_0x2b2d7d){if(_0x2b2d7d){var _0x2dbd88=typeof _0x163e9f[_0x0dfa('0x1e')]==='undefined'&&typeof _0x163e9f[_0x0dfa('0x1f')]==='undefined';var _0x1dc356=_0x2b2d7d[_0x0dfa('0x20')];var _0x2271e0=_0x2dbd88?0x0:_0x163e9f[_0x0dfa('0x1e')];var _0x32a055=_0x2dbd88?_0x2b2d7d[_0x0dfa('0x20')]:_0x163e9f[_0x0dfa('0x1e')]+_0x163e9f['limit'];var _0x10a385;if(_0x32a055>=_0x1dc356){_0x32a055=_0x1dc356;_0x10a385=0xc8;}else{_0x10a385=0xce;}_0x26d000['status'](_0x10a385);return _0x26d000[_0x0dfa('0x21')]('Content-Range',_0x2271e0+'-'+_0x32a055+'/'+_0x1dc356)['json'](_0x2b2d7d);}return null;};}function patchUpdates(_0x7217f8){return function(_0x2cdae8){try{jsonpatch[_0x0dfa('0x22')](_0x2cdae8,_0x7217f8,!![]);}catch(_0x1960a4){return BPromise[_0x0dfa('0x23')](_0x1960a4);}return _0x2cdae8[_0x0dfa('0x24')]();};}function saveUpdates(_0x4d211e,_0x4813c6){return function(_0x580384){if(_0x580384){return _0x580384[_0x0dfa('0x25')](_0x4d211e)[_0x0dfa('0x26')](function(_0xd36a4a){return _0xd36a4a;});}return null;};}function removeEntity(_0x14d8bd,_0x32790d){return function(_0x3118ec){if(_0x3118ec){return _0x3118ec[_0x0dfa('0x27')]()[_0x0dfa('0x26')](function(){_0x14d8bd['status'](0xcc)[_0x0dfa('0x1c')]();});}};}function handleEntityNotFound(_0xb0d8d4,_0x1a946d){return function(_0x4953eb){if(!_0x4953eb){_0xb0d8d4[_0x0dfa('0x1a')](0x194);}return _0x4953eb;};}function handleError(_0x3739f4,_0x47f27e){_0x47f27e=_0x47f27e||0x1f4;return function(_0x41cf67){logger[_0x0dfa('0x28')](_0x41cf67['stack']);if(_0x41cf67[_0x0dfa('0x29')]){delete _0x41cf67[_0x0dfa('0x29')];}_0x3739f4[_0x0dfa('0x1b')](_0x47f27e)[_0x0dfa('0x2a')](_0x41cf67);};}exports['index']=function(_0x3e08fb,_0x45ac57){var _0x38facb={},_0x257a0e={},_0x26b291={'count':0x0,'rows':[]};var _0x2b88d2=_[_0x0dfa('0x2b')](db[_0x0dfa('0x2c')][_0x0dfa('0x2d')],function(_0x2aecde){return{'name':_0x2aecde['fieldName'],'type':_0x2aecde['type']['key']};});_0x257a0e[_0x0dfa('0x2e')]=_[_0x0dfa('0x2b')](_0x2b88d2,_0x0dfa('0x29'));_0x257a0e[_0x0dfa('0x2f')]=_[_0x0dfa('0x30')](_0x3e08fb[_0x0dfa('0x2f')]);_0x257a0e[_0x0dfa('0x31')]=_[_0x0dfa('0x32')](_0x257a0e['model'],_0x257a0e[_0x0dfa('0x2f')]);_0x38facb[_0x0dfa('0x33')]=_['intersection'](_0x257a0e[_0x0dfa('0x2e')],qs[_0x0dfa('0x34')](_0x3e08fb[_0x0dfa('0x2f')][_0x0dfa('0x34')]));_0x38facb[_0x0dfa('0x33')]=_0x38facb[_0x0dfa('0x33')]['length']?_0x38facb[_0x0dfa('0x33')]:_0x257a0e[_0x0dfa('0x2e')];if(!_0x3e08fb[_0x0dfa('0x2f')][_0x0dfa('0x35')](_0x0dfa('0x36'))){_0x38facb[_0x0dfa('0x1f')]=qs[_0x0dfa('0x1f')](_0x3e08fb[_0x0dfa('0x2f')][_0x0dfa('0x1f')]);_0x38facb['offset']=qs[_0x0dfa('0x1e')](_0x3e08fb['query']['offset']);}_0x38facb[_0x0dfa('0x37')]=qs[_0x0dfa('0x38')](_0x3e08fb['query']['sort']);_0x38facb['where']=qs[_0x0dfa('0x31')](_['pick'](_0x3e08fb[_0x0dfa('0x2f')],_0x257a0e['filters']),_0x2b88d2);if(_0x3e08fb[_0x0dfa('0x2f')][_0x0dfa('0x39')]){_0x38facb[_0x0dfa('0x3a')]=_[_0x0dfa('0x3b')](_0x38facb['where'],{'$or':_[_0x0dfa('0x2b')](_0x2b88d2,function(_0xcaeee9){if(_0xcaeee9['type']!==_0x0dfa('0x3c')){var _0x5dba0c={};_0x5dba0c[_0xcaeee9[_0x0dfa('0x29')]]={'$like':'%'+_0x3e08fb[_0x0dfa('0x2f')]['filter']+'%'};return _0x5dba0c;}})});}_0x38facb=_[_0x0dfa('0x3b')]({},_0x38facb,_0x3e08fb[_0x0dfa('0x3d')]);var _0x4d378f={'where':_0x38facb['where']};return db[_0x0dfa('0x2c')]['count'](_0x4d378f)['then'](function(_0x25ea86){_0x26b291[_0x0dfa('0x20')]=_0x25ea86;if(_0x3e08fb[_0x0dfa('0x2f')]['includeAll']){_0x38facb[_0x0dfa('0x3e')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x38facb);})[_0x0dfa('0x26')](function(_0x1f5c7a){_0x26b291['rows']=_0x1f5c7a;return _0x26b291;})[_0x0dfa('0x26')](respondWithFilteredResult(_0x45ac57,_0x38facb))['catch'](handleError(_0x45ac57,null));};exports[_0x0dfa('0x3f')]=function(_0x410dc0,_0x538cbb){var _0x14eb53={'raw':!![],'where':{'id':_0x410dc0[_0x0dfa('0x40')]['id']}},_0x5e4258={};_0x5e4258['model']=_['keys'](db[_0x0dfa('0x2c')]['rawAttributes']);_0x5e4258[_0x0dfa('0x2f')]=_[_0x0dfa('0x30')](_0x410dc0[_0x0dfa('0x2f')]);_0x5e4258['filters']=_['intersection'](_0x5e4258[_0x0dfa('0x2e')],_0x5e4258[_0x0dfa('0x2f')]);_0x14eb53['attributes']=_[_0x0dfa('0x32')](_0x5e4258[_0x0dfa('0x2e')],qs[_0x0dfa('0x34')](_0x410dc0['query'][_0x0dfa('0x34')]));_0x14eb53[_0x0dfa('0x33')]=_0x14eb53[_0x0dfa('0x33')][_0x0dfa('0x41')]?_0x14eb53['attributes']:_0x5e4258[_0x0dfa('0x2e')];if(_0x410dc0[_0x0dfa('0x2f')]['includeAll']){_0x14eb53[_0x0dfa('0x3e')]=[{'all':!![]}];}_0x14eb53=_[_0x0dfa('0x3b')]({},_0x14eb53,_0x410dc0[_0x0dfa('0x3d')]);return db['JscriptyQuestionReport'][_0x0dfa('0x42')](_0x14eb53)[_0x0dfa('0x26')](handleEntityNotFound(_0x538cbb,null))[_0x0dfa('0x26')](respondWithResult(_0x538cbb,null))[_0x0dfa('0x43')](handleError(_0x538cbb,null));};exports[_0x0dfa('0x44')]=function(_0x156053,_0x23b892){return db[_0x0dfa('0x2c')]['create'](_0x156053[_0x0dfa('0x45')],{})[_0x0dfa('0x26')](respondWithResult(_0x23b892,0xc9))['catch'](handleError(_0x23b892,null));};exports[_0x0dfa('0x25')]=function(_0x34906b,_0x1b9e09){if(_0x34906b[_0x0dfa('0x45')]['id']){delete _0x34906b[_0x0dfa('0x45')]['id'];}return db[_0x0dfa('0x2c')][_0x0dfa('0x42')]({'where':{'id':_0x34906b[_0x0dfa('0x40')]['id']}})['then'](handleEntityNotFound(_0x1b9e09,null))[_0x0dfa('0x26')](saveUpdates(_0x34906b[_0x0dfa('0x45')],null))[_0x0dfa('0x26')](respondWithResult(_0x1b9e09,null))[_0x0dfa('0x43')](handleError(_0x1b9e09,null));};exports[_0x0dfa('0x27')]=function(_0x41f9a7,_0x299d36){return db[_0x0dfa('0x2c')][_0x0dfa('0x42')]({'where':{'id':_0x41f9a7[_0x0dfa('0x40')]['id']}})['then'](handleEntityNotFound(_0x299d36,null))['then'](removeEntity(_0x299d36,null))[_0x0dfa('0x43')](handleError(_0x299d36,null));};exports['describe']=function(_0x366606,_0x1b5339){return db[_0x0dfa('0x2c')][_0x0dfa('0x46')]()[_0x0dfa('0x26')](respondWithResult(_0x1b5339,null))[_0x0dfa('0x43')](handleError(_0x1b5339,null));};
\ No newline at end of file
index 5b493e0..a4b067e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02f8=['JscriptyQuestionReport','report_jscripty_questions','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define'];(function(_0x165f0d,_0x52bfee){var _0x1b2b96=function(_0x7b706){while(--_0x7b706){_0x165f0d['push'](_0x165f0d['shift']());}};_0x1b2b96(++_0x52bfee);}(_0x02f8,0x19a));var _0x802f=function(_0x466f51,_0x1393ed){_0x466f51=_0x466f51-0x0;var _0x2db305=_0x02f8[_0x466f51];return _0x2db305;};'use strict';var _=require(_0x802f('0x0'));var util=require('util');var logger=require(_0x802f('0x1'))('api');var moment=require(_0x802f('0x2'));var BPromise=require('bluebird');var rp=require(_0x802f('0x3'));var fs=require('fs');var path=require(_0x802f('0x4'));var rimraf=require(_0x802f('0x5'));var config=require(_0x802f('0x6'));var attributes=require(_0x802f('0x7'));module[_0x802f('0x8')]=function(_0x2777d5,_0x4f65fc){return _0x2777d5[_0x802f('0x9')](_0x802f('0xa'),attributes,{'tableName':_0x802f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb167=['./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','bluebird','../../config/environment'];(function(_0x493ef4,_0x17a576){var _0x299eff=function(_0x2898af){while(--_0x2898af){_0x493ef4['push'](_0x493ef4['shift']());}};_0x299eff(++_0x17a576);}(_0xb167,0xbb));var _0x7b16=function(_0x1ebf4c,_0x4c3bc9){_0x1ebf4c=_0x1ebf4c-0x0;var _0xf4ee5b=_0xb167[_0x1ebf4c];return _0xf4ee5b;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7b16('0x0'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7b16('0x1'));var attributes=require(_0x7b16('0x2'));module[_0x7b16('0x3')]=function(_0x55c0bf,_0x59f564){return _0x55c0bf[_0x7b16('0x4')](_0x7b16('0x5'),attributes,{'tableName':_0x7b16('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2264c8..8df3797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e6d=['http','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x254a19,_0x7b092b){var _0xba020a=function(_0x231bb3){while(--_0x231bb3){_0x254a19['push'](_0x254a19['shift']());}};_0xba020a(++_0x7b092b);}(_0x5e6d,0x171));var _0xd5e6=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x5e6d[_0x46d0c9];return _0x174506;};'use strict';var _=require(_0xd5e6('0x0'));var util=require(_0xd5e6('0x1'));var moment=require(_0xd5e6('0x2'));var BPromise=require('bluebird');var rs=require(_0xd5e6('0x3'));var fs=require('fs');var Redis=require(_0xd5e6('0x4'));var db=require(_0xd5e6('0x5'))['db'];var utils=require(_0xd5e6('0x6'));var logger=require(_0xd5e6('0x7'))(_0xd5e6('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xd5e6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c7744,_0x3c0d1a,_0x3dfd19){return new BPromise(function(_0x2d9786,_0x2f4e90){return client['request'](_0x2c7744,_0x3dfd19)[_0xd5e6('0xa')](function(_0x1a486f){logger['info'](_0xd5e6('0xb'),_0x3c0d1a,'request\x20sent');logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x3c0d1a,_0xd5e6('0xc'),JSON[_0xd5e6('0xd')](_0x1a486f));if(_0x1a486f['error']){if(_0x1a486f[_0xd5e6('0xe')][_0xd5e6('0xf')]===0x1f4){logger[_0xd5e6('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x3c0d1a,_0x1a486f[_0xd5e6('0xe')][_0xd5e6('0x10')]);return _0x2f4e90(_0x1a486f['error']['message']);}logger[_0xd5e6('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x3c0d1a,_0x1a486f[_0xd5e6('0xe')][_0xd5e6('0x10')]);return _0x2d9786(_0x1a486f[_0xd5e6('0xe')]['message']);}else{logger['info'](_0xd5e6('0xb'),_0x3c0d1a,_0xd5e6('0xc'));_0x2d9786(_0x1a486f['result'][_0xd5e6('0x10')]);}})[_0xd5e6('0x11')](function(_0x37c025){logger[_0xd5e6('0xe')](_0xd5e6('0xb'),_0x3c0d1a,_0x37c025);_0x2f4e90(_0x37c025);});});}
\ No newline at end of file
+var _0xe8b4=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4354dc,_0x44fc9d){var _0x3bc8ae=function(_0x2c58e8){while(--_0x2c58e8){_0x4354dc['push'](_0x4354dc['shift']());}};_0x3bc8ae(++_0x44fc9d);}(_0xe8b4,0x101));var _0x4e8b=function(_0x2d425f,_0x4534e5){_0x2d425f=_0x2d425f-0x0;var _0x1e8b97=_0xe8b4[_0x2d425f];return _0x1e8b97;};'use strict';var _=require(_0x4e8b('0x0'));var util=require(_0x4e8b('0x1'));var moment=require(_0x4e8b('0x2'));var BPromise=require(_0x4e8b('0x3'));var rs=require(_0x4e8b('0x4'));var fs=require('fs');var Redis=require(_0x4e8b('0x5'));var db=require(_0x4e8b('0x6'))['db'];var utils=require(_0x4e8b('0x7'));var logger=require('../../config/logger')(_0x4e8b('0x8'));var config=require(_0x4e8b('0x9'));var jayson=require(_0x4e8b('0xa'));var client=jayson[_0x4e8b('0xb')][_0x4e8b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1c37b2,_0x47dcac,_0x4878ea){return new BPromise(function(_0x2fefc2,_0x5059f0){return client[_0x4e8b('0xd')](_0x1c37b2,_0x4878ea)['then'](function(_0x2cc0dd){logger[_0x4e8b('0xe')](_0x4e8b('0xf'),_0x47dcac,_0x4e8b('0x10'));logger[_0x4e8b('0x11')](_0x4e8b('0x12'),_0x47dcac,_0x4e8b('0x10'),JSON[_0x4e8b('0x13')](_0x2cc0dd));if(_0x2cc0dd[_0x4e8b('0x14')]){if(_0x2cc0dd[_0x4e8b('0x14')][_0x4e8b('0x15')]===0x1f4){logger['error'](_0x4e8b('0xf'),_0x47dcac,_0x2cc0dd[_0x4e8b('0x14')][_0x4e8b('0x16')]);return _0x5059f0(_0x2cc0dd[_0x4e8b('0x14')]['message']);}logger[_0x4e8b('0x14')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x47dcac,_0x2cc0dd['error'][_0x4e8b('0x16')]);return _0x2fefc2(_0x2cc0dd['error'][_0x4e8b('0x16')]);}else{logger[_0x4e8b('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x47dcac,_0x4e8b('0x10'));_0x2fefc2(_0x2cc0dd['result'][_0x4e8b('0x16')]);}})[_0x4e8b('0x17')](function(_0x3d0ece){logger['error'](_0x4e8b('0xf'),_0x47dcac,_0x3d0ece);_0x5059f0(_0x3d0ece);});});}
\ No newline at end of file
index 5f2a2c6..d0dc03b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2819=['isAuthenticated','/describe','get','/:id','show','/:id/questions','getQuestions','post','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x2819,0x1d3));var _0x9281=function(_0x2ddb1d,_0x5673bd){_0x2ddb1d=_0x2ddb1d-0x0;var _0xb678f9=_0x2819[_0x2ddb1d];return _0xb678f9;};'use strict';var multer=require(_0x9281('0x0'));var util=require(_0x9281('0x1'));var path=require(_0x9281('0x2'));var timeout=require('connect-timeout');var express=require(_0x9281('0x3'));var router=express[_0x9281('0x4')]();var fs_extra=require(_0x9281('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9281('0x6'));var config=require(_0x9281('0x7'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0x9281('0x8')](),controller['index']);router['get'](_0x9281('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x9281('0xa')](_0x9281('0xb'),auth[_0x9281('0x8')](),controller[_0x9281('0xc')]);router[_0x9281('0xa')](_0x9281('0xd'),auth[_0x9281('0x8')](),controller[_0x9281('0xe')]);router[_0x9281('0xf')]('/',auth[_0x9281('0x8')](),controller['create']);router['put']('/:id',auth[_0x9281('0x8')](),controller['update']);router[_0x9281('0x10')](_0x9281('0xb'),auth[_0x9281('0x8')](),controller[_0x9281('0x11')]);module[_0x9281('0x12')]=router;
\ No newline at end of file
+var _0xec26=['../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','index','get','/describe','describe','/:id/questions','getQuestions','post','create','put','/:id','update','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x4e4afa,_0x9ee0e6){var _0x41219c=function(_0x15b7ac){while(--_0x15b7ac){_0x4e4afa['push'](_0x4e4afa['shift']());}};_0x41219c(++_0x9ee0e6);}(_0xec26,0x78));var _0x6ec2=function(_0x57bb76,_0x423d85){_0x57bb76=_0x57bb76-0x0;var _0x4f7c04=_0xec26[_0x57bb76];return _0x4f7c04;};'use strict';var multer=require(_0x6ec2('0x0'));var util=require(_0x6ec2('0x1'));var path=require(_0x6ec2('0x2'));var timeout=require(_0x6ec2('0x3'));var express=require('express');var router=express[_0x6ec2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6ec2('0x5'));var interaction=require(_0x6ec2('0x6'));var config=require(_0x6ec2('0x7'));var controller=require(_0x6ec2('0x8'));router['get']('/',auth[_0x6ec2('0x9')](),controller[_0x6ec2('0xa')]);router[_0x6ec2('0xb')](_0x6ec2('0xc'),auth['isAuthenticated'](),controller[_0x6ec2('0xd')]);router[_0x6ec2('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x6ec2('0xb')](_0x6ec2('0xe'),auth[_0x6ec2('0x9')](),controller[_0x6ec2('0xf')]);router[_0x6ec2('0x10')]('/',auth[_0x6ec2('0x9')](),controller[_0x6ec2('0x11')]);router[_0x6ec2('0x12')](_0x6ec2('0x13'),auth['isAuthenticated'](),controller[_0x6ec2('0x14')]);router['delete'](_0x6ec2('0x13'),auth[_0x6ec2('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 64e5e22..b0dc66d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeeb=['moment','sequelize','exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN'];(function(_0x3dcf15,_0x45aed9){var _0x98fd66=function(_0x471489){while(--_0x471489){_0x3dcf15['push'](_0x3dcf15['shift']());}};_0x98fd66(++_0x45aed9);}(_0xeeeb,0x1d9));var _0xbeee=function(_0x2d7d06,_0x29551e){_0x2d7d06=_0x2d7d06-0x0;var _0x48c29d=_0xeeeb[_0x2d7d06];return _0x48c29d;};'use strict';var moment=require(_0xbeee('0x0'));var Sequelize=require(_0xbeee('0x1'));module[_0xbeee('0x2')]={'starttime':{'type':Sequelize[_0xbeee('0x3')],'set':function(_0x2d8999){this[_0xbeee('0x4')](_0xbeee('0x5'),_0x2d8999);this[_0xbeee('0x4')](_0xbeee('0x6'),moment()[_0xbeee('0x7')](_0xbeee('0x8')));}},'endtime':{'type':Sequelize[_0xbeee('0x3')]},'membername':{'type':Sequelize[_0xbeee('0x9')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xbeee('0x9')]},'calleridname':{'type':Sequelize[_0xbeee('0x9')]},'calleridnum':{'type':Sequelize[_0xbeee('0x9')]},'completed':{'type':Sequelize[_0xbeee('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2ee5=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','exports','DATE','setDataValue'];(function(_0xc88493,_0x1b0b27){var _0x9279b0=function(_0x3cf213){while(--_0x3cf213){_0xc88493['push'](_0xc88493['shift']());}};_0x9279b0(++_0x1b0b27);}(_0x2ee5,0x1ab));var _0x52ee=function(_0x212856,_0x1a505a){_0x212856=_0x212856-0x0;var _0x26f0c1=_0x2ee5[_0x212856];return _0x26f0c1;};'use strict';var moment=require(_0x52ee('0x0'));var Sequelize=require(_0x52ee('0x1'));module[_0x52ee('0x2')]={'starttime':{'type':Sequelize[_0x52ee('0x3')],'set':function(_0x28d66e){this[_0x52ee('0x4')]('starttime',_0x28d66e);this[_0x52ee('0x4')]('endtime',moment()[_0x52ee('0x5')](_0x52ee('0x6')));}},'endtime':{'type':Sequelize[_0x52ee('0x3')]},'membername':{'type':Sequelize[_0x52ee('0x7')]},'projectname':{'type':Sequelize[_0x52ee('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x52ee('0x7')]},'calleridname':{'type':Sequelize[_0x52ee('0x7')]},'calleridnum':{'type':Sequelize[_0x52ee('0x7')]},'completed':{'type':Sequelize[_0x52ee('0x8')],'defaultValue':![]}};
\ No newline at end of file
index fb08061..02e790e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa741=['jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','keys','includeAll','include','create','catch','body','find','params','describe','findOne','JscriptyQuestionReport','SessionId','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto'];(function(_0x52c3ec,_0x55b3ed){var _0x3fa422=function(_0x93170){while(--_0x93170){_0x52c3ec['push'](_0x52c3ec['shift']());}};_0x3fa422(++_0x55b3ed);}(_0xa741,0x8f));var _0x1a74=function(_0x57fa0b,_0x5df1ce){_0x57fa0b=_0x57fa0b-0x0;var _0x18669f=_0xa741[_0x57fa0b];return _0x18669f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1a74('0x0'));var jsonpatch=require(_0x1a74('0x1'));var rp=require(_0x1a74('0x2'));var moment=require(_0x1a74('0x3'));var BPromise=require(_0x1a74('0x4'));var Mustache=require('mustache');var util=require(_0x1a74('0x5'));var path=require(_0x1a74('0x6'));var sox=require(_0x1a74('0x7'));var csv=require(_0x1a74('0x8'));var ejs=require(_0x1a74('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1a74('0xa'));var squel=require(_0x1a74('0xb'));var crypto=require(_0x1a74('0xc'));var jsforce=require(_0x1a74('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x1a74('0x8'));var querystring=require(_0x1a74('0xe'));var Papa=require(_0x1a74('0xf'));var Redis=require(_0x1a74('0x10'));var authService=require(_0x1a74('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1a74('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x1a74('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x334946,_0x17e191){_0x17e191=_0x17e191||0xcc;return function(_0x4f24a6){if(_0x4f24a6){return _0x334946[_0x1a74('0x14')](_0x17e191);}return _0x334946[_0x1a74('0x15')](_0x17e191)['end']();};}function respondWithResult(_0x2e3718,_0x1ae0f0){_0x1ae0f0=_0x1ae0f0||0xc8;return function(_0x1f83f4){if(_0x1f83f4){return _0x2e3718['status'](_0x1ae0f0)[_0x1a74('0x16')](_0x1f83f4);}};}function respondWithFilteredResult(_0xfad065,_0x339e2f){return function(_0x65b7e3){if(_0x65b7e3){var _0x4be6d1=typeof _0x339e2f[_0x1a74('0x17')]===_0x1a74('0x18')&&typeof _0x339e2f[_0x1a74('0x19')]===_0x1a74('0x18');var _0x32afbe=_0x65b7e3[_0x1a74('0x1a')];var _0x58605f=_0x4be6d1?0x0:_0x339e2f[_0x1a74('0x17')];var _0x325326=_0x4be6d1?_0x65b7e3['count']:_0x339e2f[_0x1a74('0x17')]+_0x339e2f['limit'];var _0x55d64f;if(_0x325326>=_0x32afbe){_0x325326=_0x32afbe;_0x55d64f=0xc8;}else{_0x55d64f=0xce;}_0xfad065[_0x1a74('0x15')](_0x55d64f);return _0xfad065[_0x1a74('0x1b')](_0x1a74('0x1c'),_0x58605f+'-'+_0x325326+'/'+_0x32afbe)[_0x1a74('0x16')](_0x65b7e3);}return null;};}function patchUpdates(_0x592391){return function(_0x293189){try{jsonpatch[_0x1a74('0x1d')](_0x293189,_0x592391,!![]);}catch(_0x47053a){return BPromise[_0x1a74('0x1e')](_0x47053a);}return _0x293189[_0x1a74('0x1f')]();};}function saveUpdates(_0x10763e,_0x471fc6){return function(_0x5e1074){if(_0x5e1074){return _0x5e1074[_0x1a74('0x20')](_0x10763e)[_0x1a74('0x21')](function(_0x5d6a49){return _0x5d6a49;});}return null;};}function removeEntity(_0x369709,_0x52d5a5){return function(_0x202c56){if(_0x202c56){return _0x202c56[_0x1a74('0x22')]()[_0x1a74('0x21')](function(){_0x369709[_0x1a74('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2041cf,_0x1398b5){return function(_0x322cfc){if(!_0x322cfc){_0x2041cf['sendStatus'](0x194);}return _0x322cfc;};}function handleError(_0x38cc60,_0x5f22d4){_0x5f22d4=_0x5f22d4||0x1f4;return function(_0x438731){logger[_0x1a74('0x23')](_0x438731[_0x1a74('0x24')]);if(_0x438731[_0x1a74('0x25')]){delete _0x438731[_0x1a74('0x25')];}_0x38cc60[_0x1a74('0x15')](_0x5f22d4)[_0x1a74('0x26')](_0x438731);};}exports[_0x1a74('0x27')]=function(_0x1ac999,_0x198fc7){var _0x4a81a6={},_0x13d6b0={},_0x5253d4={'count':0x0,'rows':[]};var _0x2dca4e=_[_0x1a74('0x28')](db[_0x1a74('0x29')][_0x1a74('0x2a')],function(_0x1f43b8){return{'name':_0x1f43b8[_0x1a74('0x2b')],'type':_0x1f43b8[_0x1a74('0x2c')][_0x1a74('0x2d')]};});_0x13d6b0[_0x1a74('0x2e')]=_['map'](_0x2dca4e,_0x1a74('0x25'));_0x13d6b0['query']=_['keys'](_0x1ac999['query']);_0x13d6b0[_0x1a74('0x2f')]=_[_0x1a74('0x30')](_0x13d6b0[_0x1a74('0x2e')],_0x13d6b0[_0x1a74('0x31')]);_0x4a81a6['attributes']=_['intersection'](_0x13d6b0['model'],qs[_0x1a74('0x32')](_0x1ac999[_0x1a74('0x31')]['fields']));_0x4a81a6[_0x1a74('0x33')]=_0x4a81a6[_0x1a74('0x33')][_0x1a74('0x34')]?_0x4a81a6[_0x1a74('0x33')]:_0x13d6b0['model'];if(!_0x1ac999['query'][_0x1a74('0x35')](_0x1a74('0x36'))){_0x4a81a6['limit']=qs[_0x1a74('0x19')](_0x1ac999[_0x1a74('0x31')][_0x1a74('0x19')]);_0x4a81a6[_0x1a74('0x17')]=qs[_0x1a74('0x17')](_0x1ac999[_0x1a74('0x31')][_0x1a74('0x17')]);}_0x4a81a6[_0x1a74('0x37')]=qs[_0x1a74('0x38')](_0x1ac999[_0x1a74('0x31')][_0x1a74('0x38')]);_0x4a81a6[_0x1a74('0x39')]=qs[_0x1a74('0x2f')](_[_0x1a74('0x3a')](_0x1ac999['query'],_0x13d6b0[_0x1a74('0x2f')]),_0x2dca4e);if(_0x1ac999[_0x1a74('0x31')][_0x1a74('0x3b')]){_0x4a81a6[_0x1a74('0x39')]=_[_0x1a74('0x3c')](_0x4a81a6[_0x1a74('0x39')],{'$or':_['map'](_0x2dca4e,function(_0x3a5b1b){if(_0x3a5b1b['type']!==_0x1a74('0x3d')){var _0x152d60={};_0x152d60[_0x3a5b1b[_0x1a74('0x25')]]={'$like':'%'+_0x1ac999[_0x1a74('0x31')]['filter']+'%'};return _0x152d60;}})});}_0x4a81a6=_[_0x1a74('0x3c')]({},_0x4a81a6,_0x1ac999[_0x1a74('0x3e')]);var _0x4b293d={'where':_0x4a81a6[_0x1a74('0x39')]};return db['JscriptySessionReport'][_0x1a74('0x1a')](_0x4b293d)[_0x1a74('0x21')](function(_0x1fc111){_0x5253d4[_0x1a74('0x1a')]=_0x1fc111;if(_0x1ac999[_0x1a74('0x31')]['includeAll']){_0x4a81a6['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x1a74('0x3f')](_0x4a81a6);})[_0x1a74('0x21')](function(_0x51d70b){_0x5253d4[_0x1a74('0x40')]=_0x51d70b;return _0x5253d4;})[_0x1a74('0x21')](respondWithFilteredResult(_0x198fc7,_0x4a81a6))['catch'](handleError(_0x198fc7,null));};exports[_0x1a74('0x41')]=function(_0x5e6bbc,_0x2b4a9f){var _0xbc88c1={'raw':!![],'where':{'id':_0x5e6bbc['params']['id']}},_0x5728ab={};_0x5728ab[_0x1a74('0x2e')]=_[_0x1a74('0x42')](db[_0x1a74('0x29')][_0x1a74('0x2a')]);_0x5728ab[_0x1a74('0x31')]=_[_0x1a74('0x42')](_0x5e6bbc[_0x1a74('0x31')]);_0x5728ab[_0x1a74('0x2f')]=_[_0x1a74('0x30')](_0x5728ab[_0x1a74('0x2e')],_0x5728ab[_0x1a74('0x31')]);_0xbc88c1[_0x1a74('0x33')]=_[_0x1a74('0x30')](_0x5728ab[_0x1a74('0x2e')],qs[_0x1a74('0x32')](_0x5e6bbc[_0x1a74('0x31')][_0x1a74('0x32')]));_0xbc88c1['attributes']=_0xbc88c1['attributes'][_0x1a74('0x34')]?_0xbc88c1['attributes']:_0x5728ab[_0x1a74('0x2e')];if(_0x5e6bbc[_0x1a74('0x31')][_0x1a74('0x43')]){_0xbc88c1[_0x1a74('0x44')]=[{'all':!![]}];}_0xbc88c1=_['merge']({},_0xbc88c1,_0x5e6bbc[_0x1a74('0x3e')]);return db[_0x1a74('0x29')]['find'](_0xbc88c1)[_0x1a74('0x21')](handleEntityNotFound(_0x2b4a9f,null))[_0x1a74('0x21')](respondWithResult(_0x2b4a9f,null))['catch'](handleError(_0x2b4a9f,null));};exports[_0x1a74('0x45')]=function(_0xe6a4a9,_0x6dd8f6){return db[_0x1a74('0x29')][_0x1a74('0x45')](_0xe6a4a9['body'],{})[_0x1a74('0x21')](respondWithResult(_0x6dd8f6,0xc9))[_0x1a74('0x46')](handleError(_0x6dd8f6,null));};exports[_0x1a74('0x20')]=function(_0x4fb47a,_0x452065){if(_0x4fb47a['body']['id']){delete _0x4fb47a[_0x1a74('0x47')]['id'];}return db[_0x1a74('0x29')][_0x1a74('0x48')]({'where':{'id':_0x4fb47a['params']['id']}})['then'](handleEntityNotFound(_0x452065,null))[_0x1a74('0x21')](saveUpdates(_0x4fb47a['body'],null))[_0x1a74('0x21')](respondWithResult(_0x452065,null))[_0x1a74('0x46')](handleError(_0x452065,null));};exports['destroy']=function(_0x395167,_0x53e571){return db[_0x1a74('0x29')][_0x1a74('0x48')]({'where':{'id':_0x395167[_0x1a74('0x49')]['id']}})[_0x1a74('0x21')](handleEntityNotFound(_0x53e571,null))[_0x1a74('0x21')](removeEntity(_0x53e571,null))['catch'](handleError(_0x53e571,null));};exports[_0x1a74('0x4a')]=function(_0x37da2d,_0x3d1194){return db[_0x1a74('0x29')]['describe']()[_0x1a74('0x21')](respondWithResult(_0x3d1194,null))[_0x1a74('0x46')](handleError(_0x3d1194,null));};exports['getQuestions']=function(_0x2b252c,_0x4f2292,_0xbfa56a){var _0x3f3ddc={'raw':!![],'where':{}};var _0x3234b4={};var _0x1b380d={'count':0x0,'rows':[]};return db[_0x1a74('0x29')][_0x1a74('0x4b')]({'where':{'id':_0x2b252c[_0x1a74('0x49')]['id']}})['then'](handleEntityNotFound(_0x4f2292,null))['then'](function(_0x4dc258){if(_0x4dc258){_0x3234b4['model']=_[_0x1a74('0x42')](db[_0x1a74('0x4c')][_0x1a74('0x2a')]);_0x3234b4[_0x1a74('0x31')]=_['keys'](_0x2b252c['query']);_0x3234b4['filters']=_['intersection'](_0x3234b4['model'],_0x3234b4[_0x1a74('0x31')]);_0x3f3ddc[_0x1a74('0x33')]=_[_0x1a74('0x30')](_0x3234b4['model'],qs[_0x1a74('0x32')](_0x2b252c[_0x1a74('0x31')][_0x1a74('0x32')]));_0x3f3ddc[_0x1a74('0x33')]=_0x3f3ddc[_0x1a74('0x33')]['length']?_0x3f3ddc['attributes']:_0x3234b4[_0x1a74('0x2e')];if(!_0x2b252c['query']['hasOwnProperty']('nolimit')){_0x3f3ddc[_0x1a74('0x19')]=qs[_0x1a74('0x19')](_0x2b252c[_0x1a74('0x31')]['limit']);_0x3f3ddc['offset']=qs[_0x1a74('0x17')](_0x2b252c[_0x1a74('0x31')][_0x1a74('0x17')]);}_0x3f3ddc[_0x1a74('0x37')]=qs[_0x1a74('0x38')](_0x2b252c[_0x1a74('0x31')][_0x1a74('0x38')]);_0x3f3ddc[_0x1a74('0x39')]=qs[_0x1a74('0x2f')](_[_0x1a74('0x3a')](_0x2b252c[_0x1a74('0x31')],_0x3234b4[_0x1a74('0x2f')]));_0x3f3ddc[_0x1a74('0x39')][_0x1a74('0x4d')]=_0x4dc258['id'];if(_0x2b252c[_0x1a74('0x31')][_0x1a74('0x3b')]){_0x3f3ddc[_0x1a74('0x39')]=_[_0x1a74('0x3c')](_0x3f3ddc[_0x1a74('0x39')],{'$or':_[_0x1a74('0x28')](_0x3f3ddc[_0x1a74('0x33')],function(_0x442ccc){var _0x2a82fa={};_0x2a82fa[_0x442ccc]={'$like':'%'+_0x2b252c[_0x1a74('0x31')][_0x1a74('0x3b')]+'%'};return _0x2a82fa;})});}_0x3f3ddc=_['merge']({},_0x3f3ddc,_0x2b252c[_0x1a74('0x3e')]);return db[_0x1a74('0x4c')][_0x1a74('0x1a')]({'where':_0x3f3ddc[_0x1a74('0x39')]})['then'](function(_0x259249){_0x1b380d[_0x1a74('0x1a')]=_0x259249;if(_0x2b252c[_0x1a74('0x31')][_0x1a74('0x43')]){_0x3f3ddc['include']=[{'all':!![]}];}return db[_0x1a74('0x4c')]['findAll'](_0x3f3ddc);})[_0x1a74('0x21')](function(_0x1137de){_0x1b380d[_0x1a74('0x40')]=_0x1137de;return _0x1b380d;});}})[_0x1a74('0x21')](respondWithFilteredResult(_0x4f2292,_0x3f3ddc))[_0x1a74('0x46')](handleError(_0x4f2292,null));};
\ No newline at end of file
+var _0xccc8=['send','index','map','JscriptySessionReport','rawAttributes','type','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','count','then','includeAll','include','rows','catch','params','find','create','body','destroy','describe','findOne','JscriptyQuestionReport','nolimit','findAll','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','reject','save','update','name'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xccc8,0xff));var _0x8ccc=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0xccc8[_0x533e4e];return _0x1f14bb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ccc('0x0'));var zipdir=require(_0x8ccc('0x1'));var jsonpatch=require(_0x8ccc('0x2'));var rp=require('request-promise');var moment=require(_0x8ccc('0x3'));var BPromise=require(_0x8ccc('0x4'));var Mustache=require(_0x8ccc('0x5'));var util=require('util');var path=require(_0x8ccc('0x6'));var sox=require('sox');var csv=require(_0x8ccc('0x7'));var ejs=require(_0x8ccc('0x8'));var fs=require('fs');var fs_extra=require(_0x8ccc('0x9'));var _=require(_0x8ccc('0xa'));var squel=require(_0x8ccc('0xb'));var crypto=require('crypto');var jsforce=require(_0x8ccc('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8ccc('0xd'));var Papa=require('papaparse');var Redis=require(_0x8ccc('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8ccc('0xf'));var hardwareService=require(_0x8ccc('0x10'));var logger=require('../../config/logger')(_0x8ccc('0x11'));var utils=require(_0x8ccc('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x8ccc('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23097a,_0x4fbd2f){_0x4fbd2f=_0x4fbd2f||0xcc;return function(_0x27a591){if(_0x27a591){return _0x23097a[_0x8ccc('0x14')](_0x4fbd2f);}return _0x23097a[_0x8ccc('0x15')](_0x4fbd2f)[_0x8ccc('0x16')]();};}function respondWithResult(_0x23a47b,_0x527a1d){_0x527a1d=_0x527a1d||0xc8;return function(_0x28530c){if(_0x28530c){return _0x23a47b['status'](_0x527a1d)['json'](_0x28530c);}};}function respondWithFilteredResult(_0x5936a1,_0x1d3daf){return function(_0x4a9b6c){if(_0x4a9b6c){var _0x1b82ac=typeof _0x1d3daf['offset']===_0x8ccc('0x17')&&typeof _0x1d3daf[_0x8ccc('0x18')]===_0x8ccc('0x17');var _0x492fbf=_0x4a9b6c['count'];var _0x19edfe=_0x1b82ac?0x0:_0x1d3daf[_0x8ccc('0x19')];var _0x363d60=_0x1b82ac?_0x4a9b6c['count']:_0x1d3daf['offset']+_0x1d3daf[_0x8ccc('0x18')];var _0x131e90;if(_0x363d60>=_0x492fbf){_0x363d60=_0x492fbf;_0x131e90=0xc8;}else{_0x131e90=0xce;}_0x5936a1[_0x8ccc('0x15')](_0x131e90);return _0x5936a1[_0x8ccc('0x1a')](_0x8ccc('0x1b'),_0x19edfe+'-'+_0x363d60+'/'+_0x492fbf)[_0x8ccc('0x1c')](_0x4a9b6c);}return null;};}function patchUpdates(_0x5a49b3){return function(_0xfdc9cb){try{jsonpatch['apply'](_0xfdc9cb,_0x5a49b3,!![]);}catch(_0x4ab502){return BPromise[_0x8ccc('0x1d')](_0x4ab502);}return _0xfdc9cb[_0x8ccc('0x1e')]();};}function saveUpdates(_0x4e9305,_0x337e46){return function(_0x21d0bf){if(_0x21d0bf){return _0x21d0bf[_0x8ccc('0x1f')](_0x4e9305)['then'](function(_0x182248){return _0x182248;});}return null;};}function removeEntity(_0xde5f42,_0x51911e){return function(_0x4f2654){if(_0x4f2654){return _0x4f2654['destroy']()['then'](function(){_0xde5f42[_0x8ccc('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51db6a,_0x365513){return function(_0x5eda72){if(!_0x5eda72){_0x51db6a[_0x8ccc('0x14')](0x194);}return _0x5eda72;};}function handleError(_0x17df46,_0x5ce8fe){_0x5ce8fe=_0x5ce8fe||0x1f4;return function(_0x2b969b){logger['error'](_0x2b969b['stack']);if(_0x2b969b[_0x8ccc('0x20')]){delete _0x2b969b['name'];}_0x17df46[_0x8ccc('0x15')](_0x5ce8fe)[_0x8ccc('0x21')](_0x2b969b);};}exports[_0x8ccc('0x22')]=function(_0xb652ba,_0x4680e0){var _0x14c0b0={},_0x2ae305={},_0x95de67={'count':0x0,'rows':[]};var _0x590fd4=_[_0x8ccc('0x23')](db[_0x8ccc('0x24')][_0x8ccc('0x25')],function(_0x406efb){return{'name':_0x406efb['fieldName'],'type':_0x406efb[_0x8ccc('0x26')]['key']};});_0x2ae305[_0x8ccc('0x27')]=_[_0x8ccc('0x23')](_0x590fd4,_0x8ccc('0x20'));_0x2ae305['query']=_[_0x8ccc('0x28')](_0xb652ba[_0x8ccc('0x29')]);_0x2ae305['filters']=_['intersection'](_0x2ae305[_0x8ccc('0x27')],_0x2ae305['query']);_0x14c0b0[_0x8ccc('0x2a')]=_[_0x8ccc('0x2b')](_0x2ae305[_0x8ccc('0x27')],qs[_0x8ccc('0x2c')](_0xb652ba['query'][_0x8ccc('0x2c')]));_0x14c0b0['attributes']=_0x14c0b0[_0x8ccc('0x2a')][_0x8ccc('0x2d')]?_0x14c0b0[_0x8ccc('0x2a')]:_0x2ae305[_0x8ccc('0x27')];if(!_0xb652ba[_0x8ccc('0x29')][_0x8ccc('0x2e')]('nolimit')){_0x14c0b0[_0x8ccc('0x18')]=qs[_0x8ccc('0x18')](_0xb652ba[_0x8ccc('0x29')][_0x8ccc('0x18')]);_0x14c0b0[_0x8ccc('0x19')]=qs[_0x8ccc('0x19')](_0xb652ba['query'][_0x8ccc('0x19')]);}_0x14c0b0[_0x8ccc('0x2f')]=qs[_0x8ccc('0x30')](_0xb652ba[_0x8ccc('0x29')][_0x8ccc('0x30')]);_0x14c0b0[_0x8ccc('0x31')]=qs[_0x8ccc('0x32')](_[_0x8ccc('0x33')](_0xb652ba['query'],_0x2ae305[_0x8ccc('0x32')]),_0x590fd4);if(_0xb652ba[_0x8ccc('0x29')]['filter']){_0x14c0b0[_0x8ccc('0x31')]=_[_0x8ccc('0x34')](_0x14c0b0['where'],{'$or':_[_0x8ccc('0x23')](_0x590fd4,function(_0xec3d97){if(_0xec3d97['type']!==_0x8ccc('0x35')){var _0x114dfb={};_0x114dfb[_0xec3d97[_0x8ccc('0x20')]]={'$like':'%'+_0xb652ba[_0x8ccc('0x29')][_0x8ccc('0x36')]+'%'};return _0x114dfb;}})});}_0x14c0b0=_['merge']({},_0x14c0b0,_0xb652ba[_0x8ccc('0x37')]);var _0x3a98dd={'where':_0x14c0b0[_0x8ccc('0x31')]};return db[_0x8ccc('0x24')][_0x8ccc('0x38')](_0x3a98dd)[_0x8ccc('0x39')](function(_0x143a5d){_0x95de67['count']=_0x143a5d;if(_0xb652ba['query'][_0x8ccc('0x3a')]){_0x14c0b0[_0x8ccc('0x3b')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x14c0b0);})[_0x8ccc('0x39')](function(_0xe91709){_0x95de67[_0x8ccc('0x3c')]=_0xe91709;return _0x95de67;})['then'](respondWithFilteredResult(_0x4680e0,_0x14c0b0))[_0x8ccc('0x3d')](handleError(_0x4680e0,null));};exports['show']=function(_0x256818,_0x4692ce){var _0x371b5e={'raw':!![],'where':{'id':_0x256818[_0x8ccc('0x3e')]['id']}},_0x216224={};_0x216224[_0x8ccc('0x27')]=_['keys'](db['JscriptySessionReport'][_0x8ccc('0x25')]);_0x216224['query']=_['keys'](_0x256818[_0x8ccc('0x29')]);_0x216224[_0x8ccc('0x32')]=_[_0x8ccc('0x2b')](_0x216224[_0x8ccc('0x27')],_0x216224['query']);_0x371b5e['attributes']=_[_0x8ccc('0x2b')](_0x216224[_0x8ccc('0x27')],qs['fields'](_0x256818[_0x8ccc('0x29')]['fields']));_0x371b5e[_0x8ccc('0x2a')]=_0x371b5e['attributes'][_0x8ccc('0x2d')]?_0x371b5e['attributes']:_0x216224['model'];if(_0x256818[_0x8ccc('0x29')][_0x8ccc('0x3a')]){_0x371b5e[_0x8ccc('0x3b')]=[{'all':!![]}];}_0x371b5e=_[_0x8ccc('0x34')]({},_0x371b5e,_0x256818[_0x8ccc('0x37')]);return db['JscriptySessionReport'][_0x8ccc('0x3f')](_0x371b5e)[_0x8ccc('0x39')](handleEntityNotFound(_0x4692ce,null))['then'](respondWithResult(_0x4692ce,null))[_0x8ccc('0x3d')](handleError(_0x4692ce,null));};exports['create']=function(_0x58bb4c,_0x4d41b9){return db[_0x8ccc('0x24')][_0x8ccc('0x40')](_0x58bb4c[_0x8ccc('0x41')],{})[_0x8ccc('0x39')](respondWithResult(_0x4d41b9,0xc9))['catch'](handleError(_0x4d41b9,null));};exports['update']=function(_0x54bb72,_0x50840d){if(_0x54bb72[_0x8ccc('0x41')]['id']){delete _0x54bb72[_0x8ccc('0x41')]['id'];}return db[_0x8ccc('0x24')]['find']({'where':{'id':_0x54bb72[_0x8ccc('0x3e')]['id']}})[_0x8ccc('0x39')](handleEntityNotFound(_0x50840d,null))[_0x8ccc('0x39')](saveUpdates(_0x54bb72[_0x8ccc('0x41')],null))['then'](respondWithResult(_0x50840d,null))[_0x8ccc('0x3d')](handleError(_0x50840d,null));};exports[_0x8ccc('0x42')]=function(_0x121690,_0xa081e6){return db['JscriptySessionReport'][_0x8ccc('0x3f')]({'where':{'id':_0x121690[_0x8ccc('0x3e')]['id']}})[_0x8ccc('0x39')](handleEntityNotFound(_0xa081e6,null))[_0x8ccc('0x39')](removeEntity(_0xa081e6,null))[_0x8ccc('0x3d')](handleError(_0xa081e6,null));};exports['describe']=function(_0x2493b5,_0x5541fb){return db[_0x8ccc('0x24')][_0x8ccc('0x43')]()[_0x8ccc('0x39')](respondWithResult(_0x5541fb,null))['catch'](handleError(_0x5541fb,null));};exports['getQuestions']=function(_0x2be7ce,_0x51b220,_0x3c8efe){var _0x8b0d51={'raw':!![],'where':{}};var _0x193881={};var _0x18e298={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x8ccc('0x44')]({'where':{'id':_0x2be7ce['params']['id']}})[_0x8ccc('0x39')](handleEntityNotFound(_0x51b220,null))[_0x8ccc('0x39')](function(_0x450cf3){if(_0x450cf3){_0x193881[_0x8ccc('0x27')]=_[_0x8ccc('0x28')](db[_0x8ccc('0x45')][_0x8ccc('0x25')]);_0x193881[_0x8ccc('0x29')]=_[_0x8ccc('0x28')](_0x2be7ce[_0x8ccc('0x29')]);_0x193881['filters']=_[_0x8ccc('0x2b')](_0x193881[_0x8ccc('0x27')],_0x193881[_0x8ccc('0x29')]);_0x8b0d51[_0x8ccc('0x2a')]=_['intersection'](_0x193881['model'],qs[_0x8ccc('0x2c')](_0x2be7ce[_0x8ccc('0x29')][_0x8ccc('0x2c')]));_0x8b0d51['attributes']=_0x8b0d51[_0x8ccc('0x2a')]['length']?_0x8b0d51['attributes']:_0x193881['model'];if(!_0x2be7ce['query']['hasOwnProperty'](_0x8ccc('0x46'))){_0x8b0d51[_0x8ccc('0x18')]=qs[_0x8ccc('0x18')](_0x2be7ce[_0x8ccc('0x29')][_0x8ccc('0x18')]);_0x8b0d51[_0x8ccc('0x19')]=qs[_0x8ccc('0x19')](_0x2be7ce['query'][_0x8ccc('0x19')]);}_0x8b0d51[_0x8ccc('0x2f')]=qs[_0x8ccc('0x30')](_0x2be7ce[_0x8ccc('0x29')][_0x8ccc('0x30')]);_0x8b0d51[_0x8ccc('0x31')]=qs['filters'](_[_0x8ccc('0x33')](_0x2be7ce[_0x8ccc('0x29')],_0x193881['filters']));_0x8b0d51[_0x8ccc('0x31')]['SessionId']=_0x450cf3['id'];if(_0x2be7ce[_0x8ccc('0x29')][_0x8ccc('0x36')]){_0x8b0d51[_0x8ccc('0x31')]=_[_0x8ccc('0x34')](_0x8b0d51[_0x8ccc('0x31')],{'$or':_['map'](_0x8b0d51[_0x8ccc('0x2a')],function(_0x5558cf){var _0x5ed236={};_0x5ed236[_0x5558cf]={'$like':'%'+_0x2be7ce[_0x8ccc('0x29')]['filter']+'%'};return _0x5ed236;})});}_0x8b0d51=_[_0x8ccc('0x34')]({},_0x8b0d51,_0x2be7ce[_0x8ccc('0x37')]);return db['JscriptyQuestionReport'][_0x8ccc('0x38')]({'where':_0x8b0d51[_0x8ccc('0x31')]})['then'](function(_0x11f0c0){_0x18e298[_0x8ccc('0x38')]=_0x11f0c0;if(_0x2be7ce[_0x8ccc('0x29')][_0x8ccc('0x3a')]){_0x8b0d51[_0x8ccc('0x3b')]=[{'all':!![]}];}return db[_0x8ccc('0x45')][_0x8ccc('0x47')](_0x8b0d51);})[_0x8ccc('0x39')](function(_0x4be6c8){_0x18e298[_0x8ccc('0x3c')]=_0x4be6c8;return _0x18e298;});}})['then'](respondWithFilteredResult(_0x51b220,_0x8b0d51))[_0x8ccc('0x3d')](handleError(_0x51b220,null));};
\ No newline at end of file
index 54a7ad3..c253321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','moment'];(function(_0x349f9e,_0x463357){var _0x10c675=function(_0x4339b0){while(--_0x4339b0){_0x349f9e['push'](_0x349f9e['shift']());}};_0x10c675(++_0x463357);}(_0xe14b,0x93));var _0xbe14=function(_0x2835cd,_0xd31390){_0x2835cd=_0x2835cd-0x0;var _0x4d6f1e=_0xe14b[_0x2835cd];return _0x4d6f1e;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d17=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0xf9946c,_0x48fd6f){var _0xd78074=function(_0x5e86b6){while(--_0x5e86b6){_0xf9946c['push'](_0xf9946c['shift']());}};_0xd78074(++_0x48fd6f);}(_0x5d17,0x114));var _0x75d1=function(_0x27d958,_0x29ef87){_0x27d958=_0x27d958-0x0;var _0x53e63e=_0x5d17[_0x27d958];return _0x53e63e;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));module[_0x75d1('0x8')]=function(_0x56ac0a,_0x458681){return _0x56ac0a[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2551eaf..f7d7231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptySessionReport,\x20%s,\x20%s','message','result','catch'];(function(_0x5a073f,_0x374b8b){var _0x514c5d=function(_0x58cfec){while(--_0x58cfec){_0x5a073f['push'](_0x5a073f['shift']());}};_0x514c5d(++_0x374b8b);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'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')]('JscriptySessionReport,\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);});});}
\ No newline at end of file
+var _0x33af=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x5155b1,_0x447c2e){var _0x2b50b1=function(_0x492ee5){while(--_0x492ee5){_0x5155b1['push'](_0x5155b1['shift']());}};_0x2b50b1(++_0x447c2e);}(_0x33af,0xec));var _0xf33a=function(_0x2d69e1,_0x43f881){_0x2d69e1=_0x2d69e1-0x0;var _0x9b5140=_0x33af[_0x2d69e1];return _0x9b5140;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var moment=require('moment');var BPromise=require(_0xf33a('0x1'));var rs=require(_0xf33a('0x2'));var fs=require('fs');var Redis=require(_0xf33a('0x3'));var db=require(_0xf33a('0x4'))['db'];var utils=require(_0xf33a('0x5'));var logger=require(_0xf33a('0x6'))('rpc');var config=require(_0xf33a('0x7'));var jayson=require(_0xf33a('0x8'));var client=jayson['client'][_0xf33a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x384b14,_0x1b2b01,_0x2f3730){return new BPromise(function(_0x2baabb,_0x2cb169){return client['request'](_0x384b14,_0x2f3730)[_0xf33a('0xa')](function(_0x14eb0e){logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,_0xf33a('0xd'));logger[_0xf33a('0xe')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x1b2b01,'request\x20sent',JSON[_0xf33a('0xf')](_0x14eb0e));if(_0x14eb0e[_0xf33a('0x10')]){if(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x11')]===0x1f4){logger[_0xf33a('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2cb169(_0x14eb0e['error']['message']);}logger[_0xf33a('0x10')](_0xf33a('0xc'),_0x1b2b01,_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);return _0x2baabb(_0x14eb0e[_0xf33a('0x10')][_0xf33a('0x12')]);}else{logger[_0xf33a('0xb')](_0xf33a('0xc'),_0x1b2b01,'request\x20sent');_0x2baabb(_0x14eb0e[_0xf33a('0x13')]['message']);}})[_0xf33a('0x14')](function(_0x229389){logger['error'](_0xf33a('0xc'),_0x1b2b01,_0x229389);_0x2cb169(_0x229389);});});}
\ No newline at end of file
index 0ca617f..9a70daf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5c=['/download_log_file','downloadLogFile','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','put','/:id','isAuthenticated','get'];(function(_0x4b182b,_0x35d8a5){var _0x33b074=function(_0x514ddd){while(--_0x514ddd){_0x4b182b['push'](_0x4b182b['shift']());}};_0x33b074(++_0x35d8a5);}(_0xfd5c,0x1f0));var _0xcfd5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd5c[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xcfd5('0x0'));var util=require(_0xcfd5('0x1'));var path=require('path');var timeout=require(_0xcfd5('0x2'));var express=require(_0xcfd5('0x3'));var router=express[_0xcfd5('0x4')]();var fs_extra=require(_0xcfd5('0x5'));var auth=require(_0xcfd5('0x6'));var interaction=require(_0xcfd5('0x7'));var config=require(_0xcfd5('0x8'));var controller=require(_0xcfd5('0x9'));router['get']('/',controller['index']);router[_0xcfd5('0xa')](_0xcfd5('0xb'),auth[_0xcfd5('0xc')](),controller['update']);router[_0xcfd5('0xd')](_0xcfd5('0xe'),auth[_0xcfd5('0xc')](),controller[_0xcfd5('0xf')]);module[_0xcfd5('0x10')]=router;
\ No newline at end of file
+var _0x5284=['/download_log_file','isAuthenticated','downloadLogFile','exports','path','connect-timeout','express','Router','../../config/environment','./license.controller','get','index','put','/:id','update'];(function(_0x41ccbb,_0x3771e8){var _0x519c61=function(_0x4724a6){while(--_0x4724a6){_0x41ccbb['push'](_0x41ccbb['shift']());}};_0x519c61(++_0x3771e8);}(_0x5284,0xc7));var _0x4528=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x5284[_0xefd519];return _0x4bb882;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4528('0x0'));var timeout=require(_0x4528('0x1'));var express=require(_0x4528('0x2'));var router=express[_0x4528('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4528('0x4'));var controller=require(_0x4528('0x5'));router[_0x4528('0x6')]('/',controller[_0x4528('0x7')]);router[_0x4528('0x8')](_0x4528('0x9'),auth['isAuthenticated'](),controller[_0x4528('0xa')]);router[_0x4528('0x6')](_0x4528('0xb'),auth[_0x4528('0xc')](),controller[_0x4528('0xd')]);module[_0x4528('0xe')]=router;
\ No newline at end of file
index eacead5..2f01705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc664=['sequelize','exports','TEXT','STRING','INTEGER'];(function(_0xa29b37,_0x41f51e){var _0x487c42=function(_0x3ae00){while(--_0x3ae00){_0xa29b37['push'](_0xa29b37['shift']());}};_0x487c42(++_0x41f51e);}(_0xc664,0xbe));var _0x4c66=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc664[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4c66('0x0'));module[_0x4c66('0x1')]={'license':{'type':Sequelize[_0x4c66('0x2')]},'data1':{'type':Sequelize[_0x4c66('0x3')]},'data2':{'type':Sequelize[_0x4c66('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x4c66('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaa59=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x3691de,_0x10eed0){var _0x3d9117=function(_0x59f888){while(--_0x59f888){_0x3691de['push'](_0x3691de['shift']());}};_0x3d9117(++_0x10eed0);}(_0xaa59,0xbb));var _0x9aa5=function(_0x12957b,_0x11e8ef){_0x12957b=_0x12957b-0x0;var _0x4b4fb3=_0xaa59[_0x12957b];return _0x4b4fb3;};'use strict';var Sequelize=require(_0x9aa5('0x0'));module[_0x9aa5('0x1')]={'license':{'type':Sequelize[_0x9aa5('0x2')]},'data1':{'type':Sequelize[_0x9aa5('0x3')]},'data2':{'type':Sequelize[_0x9aa5('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x9aa5('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 632f5eb..b209732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb005=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','body','License','find','checkLicense','key','demo','downloadLogFile','license-info.log','join','/var','xcally','attachment;\x20filename=','Content-Type','text/plain','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x54260a,_0x2a5245){var _0x92abb5=function(_0x3c402c){while(--_0x3c402c){_0x54260a['push'](_0x54260a['shift']());}};_0x92abb5(++_0x2a5245);}(_0xb005,0xff));var _0x5b00=function(_0x7c4535,_0x1645c8){_0x7c4535=_0x7c4535-0x0;var _0x4a0206=_0xb005[_0x7c4535];return _0x4a0206;};'use strict';var emlformat=require(_0x5b00('0x0'));var rimraf=require(_0x5b00('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5b00('0x2'));var moment=require(_0x5b00('0x3'));var BPromise=require(_0x5b00('0x4'));var Mustache=require(_0x5b00('0x5'));var util=require(_0x5b00('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5b00('0x7'));var _=require(_0x5b00('0x8'));var squel=require(_0x5b00('0x9'));var crypto=require(_0x5b00('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5b00('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5b00('0xc'));var Papa=require('papaparse');var Redis=require(_0x5b00('0xd'));var authService=require(_0x5b00('0xe'));var qs=require(_0x5b00('0xf'));var as=require(_0x5b00('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5b00('0x11'));var utils=require(_0x5b00('0x12'));var config=require(_0x5b00('0x13'));var licenseUtil=require(_0x5b00('0x14'));var db=require(_0x5b00('0x15'))['db'];function respondWithStatusCode(_0x345408,_0x6e8ed3){_0x6e8ed3=_0x6e8ed3||0xcc;return function(_0x336ae8){if(_0x336ae8){return _0x345408[_0x5b00('0x16')](_0x6e8ed3);}return _0x345408[_0x5b00('0x17')](_0x6e8ed3)[_0x5b00('0x18')]();};}function respondWithResult(_0x151124,_0x18b33a){_0x18b33a=_0x18b33a||0xc8;return function(_0x11319d){if(_0x11319d){return _0x151124['status'](_0x18b33a)['json'](_0x11319d);}};}function respondWithFilteredResult(_0x4c19e3,_0x27e055){return function(_0x240907){if(_0x240907){var _0x4e9b1d=typeof _0x27e055[_0x5b00('0x19')]===_0x5b00('0x1a')&&typeof _0x27e055['limit']===_0x5b00('0x1a');var _0x80885b=_0x240907['count'];var _0x1e891b=_0x4e9b1d?0x0:_0x27e055[_0x5b00('0x19')];var _0x3a5abd=_0x4e9b1d?_0x240907[_0x5b00('0x1b')]:_0x27e055[_0x5b00('0x19')]+_0x27e055[_0x5b00('0x1c')];var _0x50f502;if(_0x3a5abd>=_0x80885b){_0x3a5abd=_0x80885b;_0x50f502=0xc8;}else{_0x50f502=0xce;}_0x4c19e3[_0x5b00('0x17')](_0x50f502);return _0x4c19e3[_0x5b00('0x1d')]('Content-Range',_0x1e891b+'-'+_0x3a5abd+'/'+_0x80885b)['json'](_0x240907);}return null;};}function patchUpdates(_0x4ac8c7){return function(_0x2594d6){try{jsonpatch[_0x5b00('0x1e')](_0x2594d6,_0x4ac8c7,!![]);}catch(_0x5498ea){return BPromise[_0x5b00('0x1f')](_0x5498ea);}return _0x2594d6[_0x5b00('0x20')]();};}function saveUpdates(_0x5d6586,_0x1ce4ef){return function(_0x1d3642){if(_0x1d3642){return _0x1d3642[_0x5b00('0x21')](_0x5d6586)[_0x5b00('0x22')](function(_0x3ba9d9){return _0x3ba9d9;});}return null;};}function removeEntity(_0x1f1064,_0x2b6615){return function(_0x472e40){if(_0x472e40){return _0x472e40[_0x5b00('0x23')]()['then'](function(){_0x1f1064['status'](0xcc)[_0x5b00('0x18')]();});}};}function handleEntityNotFound(_0x2e9bdc,_0x22da04){return function(_0x30affc){if(!_0x30affc){_0x2e9bdc['sendStatus'](0x194);}return _0x30affc;};}function handleError(_0x309cc5,_0x599475){_0x599475=_0x599475||0x1f4;return function(_0x24f3b0){logger[_0x5b00('0x24')](_0x24f3b0[_0x5b00('0x25')]);if(_0x24f3b0[_0x5b00('0x26')]){delete _0x24f3b0['name'];}_0x309cc5[_0x5b00('0x17')](_0x599475)[_0x5b00('0x27')](_0x24f3b0);};}var utilLicense=require(_0x5b00('0x14'));exports[_0x5b00('0x28')]=function(_0x5bd6ee,_0x3ddedd){var _0x2487d4={'raw':!![],'where':{'id':0x1}},_0x362673={};_0x362673[_0x5b00('0x29')]=_[_0x5b00('0x2a')](db['License'][_0x5b00('0x2b')]);_0x362673[_0x5b00('0x2c')]=_[_0x5b00('0x2a')](_0x5bd6ee['query']);_0x362673[_0x5b00('0x2d')]=_[_0x5b00('0x2e')](_0x362673[_0x5b00('0x29')],_0x362673[_0x5b00('0x2c')]);_0x2487d4[_0x5b00('0x2f')]=_[_0x5b00('0x2e')](_0x362673[_0x5b00('0x29')],qs[_0x5b00('0x30')](_0x5bd6ee[_0x5b00('0x2c')][_0x5b00('0x30')]));_0x2487d4[_0x5b00('0x2f')]=_0x2487d4[_0x5b00('0x2f')][_0x5b00('0x31')]?_0x2487d4[_0x5b00('0x2f')]:_0x362673[_0x5b00('0x29')];_0x2487d4=_[_0x5b00('0x32')]({},_0x2487d4,_0x5bd6ee[_0x5b00('0x33')]);return utilLicense[_0x5b00('0x34')](_0x2487d4)['then'](respondWithResult(_0x3ddedd,null))[_0x5b00('0x35')](handleError(_0x3ddedd,null));};exports[_0x5b00('0x21')]=function(_0x2866f3,_0x35ee20){if(_0x2866f3[_0x5b00('0x36')]['id']){delete _0x2866f3['body']['id'];}return db[_0x5b00('0x37')][_0x5b00('0x38')]({'where':{'id':_0x2866f3['params']['id']}})['then'](handleEntityNotFound(_0x35ee20,null))[_0x5b00('0x22')](function(_0x5a8d3){var _0x44ceb4=_0x5a8d3['get']({'plain':!![]});return utilLicense[_0x5b00('0x39')](_0x44ceb4,_0x2866f3[_0x5b00('0x36')][_0x5b00('0x3a')]);})[_0x5b00('0x22')](function(_0x424eaf){if(!_0x424eaf[_0x5b00('0x3b')]){return saveUpdates(_0x2866f3[_0x5b00('0x36')],null);}return _0x424eaf;})['then'](respondWithResult(_0x35ee20,null))[_0x5b00('0x35')](handleError(_0x35ee20,null));};exports[_0x5b00('0x3c')]=function(_0x265137,_0x10c442){var _0x134840=_0x5b00('0x3d');var _0x397e0e=path[_0x5b00('0x3e')](_0x5b00('0x3f'),'log',_0x5b00('0x40'),_0x134840);_0x10c442['setHeader']('Content-disposition',_0x5b00('0x41')+_0x134840);_0x10c442['set'](_0x5b00('0x42'),_0x5b00('0x43'));_0x10c442['download'](_0x397e0e);};
\ No newline at end of file
+var _0x78be=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','update','then','end','send','index','keys','rawAttributes','query','model','attributes','intersection','fields','length','options','getLicense','catch','body','License','find','get','checkLicense','key','downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','attachment;\x20filename=','Content-Type','text/plain','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis'];(function(_0x2ceff1,_0x2e2f7b){var _0x4c1648=function(_0x5ae9af){while(--_0x5ae9af){_0x2ceff1['push'](_0x2ceff1['shift']());}};_0x4c1648(++_0x2e2f7b);}(_0x78be,0x13d));var _0xe78b=function(_0x522e54,_0x2ed415){_0x522e54=_0x522e54-0x0;var _0x5434c3=_0x78be[_0x522e54];return _0x5434c3;};'use strict';var emlformat=require(_0xe78b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe78b('0x1'));var jsonpatch=require(_0xe78b('0x2'));var rp=require(_0xe78b('0x3'));var moment=require(_0xe78b('0x4'));var BPromise=require(_0xe78b('0x5'));var Mustache=require(_0xe78b('0x6'));var util=require(_0xe78b('0x7'));var path=require('path');var sox=require(_0xe78b('0x8'));var csv=require(_0xe78b('0x9'));var ejs=require(_0xe78b('0xa'));var fs=require('fs');var fs_extra=require(_0xe78b('0xb'));var _=require(_0xe78b('0xc'));var squel=require(_0xe78b('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe78b('0xe'));var toCsv=require(_0xe78b('0x9'));var querystring=require(_0xe78b('0xf'));var Papa=require(_0xe78b('0x10'));var Redis=require(_0xe78b('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe78b('0x12'));var logger=require(_0xe78b('0x13'))(_0xe78b('0x14'));var utils=require(_0xe78b('0x15'));var config=require(_0xe78b('0x16'));var licenseUtil=require(_0xe78b('0x17'));var db=require(_0xe78b('0x18'))['db'];function respondWithStatusCode(_0x2bb12d,_0x18bf60){_0x18bf60=_0x18bf60||0xcc;return function(_0x19ef4d){if(_0x19ef4d){return _0x2bb12d[_0xe78b('0x19')](_0x18bf60);}return _0x2bb12d[_0xe78b('0x1a')](_0x18bf60)['end']();};}function respondWithResult(_0x357901,_0x4da47f){_0x4da47f=_0x4da47f||0xc8;return function(_0x495f65){if(_0x495f65){return _0x357901['status'](_0x4da47f)[_0xe78b('0x1b')](_0x495f65);}};}function respondWithFilteredResult(_0x54ac05,_0x199e21){return function(_0x2354ad){if(_0x2354ad){var _0x1c7e92=typeof _0x199e21[_0xe78b('0x1c')]===_0xe78b('0x1d')&&typeof _0x199e21[_0xe78b('0x1e')]===_0xe78b('0x1d');var _0x3d44e2=_0x2354ad['count'];var _0xeb9796=_0x1c7e92?0x0:_0x199e21[_0xe78b('0x1c')];var _0x2a1e4b=_0x1c7e92?_0x2354ad['count']:_0x199e21['offset']+_0x199e21[_0xe78b('0x1e')];var _0x198f99;if(_0x2a1e4b>=_0x3d44e2){_0x2a1e4b=_0x3d44e2;_0x198f99=0xc8;}else{_0x198f99=0xce;}_0x54ac05['status'](_0x198f99);return _0x54ac05[_0xe78b('0x1f')](_0xe78b('0x20'),_0xeb9796+'-'+_0x2a1e4b+'/'+_0x3d44e2)['json'](_0x2354ad);}return null;};}function patchUpdates(_0x380a97){return function(_0x1da950){try{jsonpatch[_0xe78b('0x21')](_0x1da950,_0x380a97,!![]);}catch(_0x224fe0){return BPromise[_0xe78b('0x22')](_0x224fe0);}return _0x1da950['save']();};}function saveUpdates(_0x4b9cfc,_0x1a3bac){return function(_0x3670cb){if(_0x3670cb){return _0x3670cb[_0xe78b('0x23')](_0x4b9cfc)[_0xe78b('0x24')](function(_0x170f91){return _0x170f91;});}return null;};}function removeEntity(_0x443828,_0x34b005){return function(_0x20457a){if(_0x20457a){return _0x20457a['destroy']()[_0xe78b('0x24')](function(){_0x443828[_0xe78b('0x1a')](0xcc)[_0xe78b('0x25')]();});}};}function handleEntityNotFound(_0x68b41b,_0x2e1630){return function(_0x2635e8){if(!_0x2635e8){_0x68b41b['sendStatus'](0x194);}return _0x2635e8;};}function handleError(_0x473e4e,_0x37d6dd){_0x37d6dd=_0x37d6dd||0x1f4;return function(_0x690264){logger['error'](_0x690264['stack']);if(_0x690264['name']){delete _0x690264['name'];}_0x473e4e[_0xe78b('0x1a')](_0x37d6dd)[_0xe78b('0x26')](_0x690264);};}var utilLicense=require(_0xe78b('0x17'));exports[_0xe78b('0x27')]=function(_0x391604,_0xba97ab){var _0x123bd8={'raw':!![],'where':{'id':0x1}},_0x20ae46={};_0x20ae46['model']=_[_0xe78b('0x28')](db['License'][_0xe78b('0x29')]);_0x20ae46['query']=_[_0xe78b('0x28')](_0x391604[_0xe78b('0x2a')]);_0x20ae46['filters']=_['intersection'](_0x20ae46[_0xe78b('0x2b')],_0x20ae46[_0xe78b('0x2a')]);_0x123bd8[_0xe78b('0x2c')]=_[_0xe78b('0x2d')](_0x20ae46[_0xe78b('0x2b')],qs[_0xe78b('0x2e')](_0x391604[_0xe78b('0x2a')][_0xe78b('0x2e')]));_0x123bd8[_0xe78b('0x2c')]=_0x123bd8[_0xe78b('0x2c')][_0xe78b('0x2f')]?_0x123bd8['attributes']:_0x20ae46[_0xe78b('0x2b')];_0x123bd8=_['merge']({},_0x123bd8,_0x391604[_0xe78b('0x30')]);return utilLicense[_0xe78b('0x31')](_0x123bd8)[_0xe78b('0x24')](respondWithResult(_0xba97ab,null))[_0xe78b('0x32')](handleError(_0xba97ab,null));};exports[_0xe78b('0x23')]=function(_0x15cc68,_0xd904ed){if(_0x15cc68[_0xe78b('0x33')]['id']){delete _0x15cc68[_0xe78b('0x33')]['id'];}return db[_0xe78b('0x34')][_0xe78b('0x35')]({'where':{'id':_0x15cc68['params']['id']}})[_0xe78b('0x24')](handleEntityNotFound(_0xd904ed,null))[_0xe78b('0x24')](function(_0x2a8bfe){var _0x2ff012=_0x2a8bfe[_0xe78b('0x36')]({'plain':!![]});return utilLicense[_0xe78b('0x37')](_0x2ff012,_0x15cc68['body'][_0xe78b('0x38')]);})[_0xe78b('0x24')](function(_0x48b6e1){if(!_0x48b6e1['demo']){return saveUpdates(_0x15cc68[_0xe78b('0x33')],null);}return _0x48b6e1;})[_0xe78b('0x24')](respondWithResult(_0xd904ed,null))[_0xe78b('0x32')](handleError(_0xd904ed,null));};exports[_0xe78b('0x39')]=function(_0x4a59c6,_0x30a13f){var _0x4ab17d=_0xe78b('0x3a');var _0x25fa70=path[_0xe78b('0x3b')](_0xe78b('0x3c'),_0xe78b('0x3d'),_0xe78b('0x3e'),_0x4ab17d);_0x30a13f[_0xe78b('0x3f')]('Content-disposition',_0xe78b('0x40')+_0x4ab17d);_0x30a13f[_0xe78b('0x1f')](_0xe78b('0x41'),_0xe78b('0x42'));_0x30a13f['download'](_0x25fa70);};
\ No newline at end of file
index 15d708f..381e03b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cca=['rimraf','exports','define','License','license','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x49e35a,_0x285e0c){var _0x81091a=function(_0x4912e9){while(--_0x4912e9){_0x49e35a['push'](_0x49e35a['shift']());}};_0x81091a(++_0x285e0c);}(_0x6cca,0x1b5));var _0xa6cc=function(_0x5276c4,_0x471b82){_0x5276c4=_0x5276c4-0x0;var _0x23441d=_0x6cca[_0x5276c4];return _0x23441d;};'use strict';var _=require(_0xa6cc('0x0'));var util=require(_0xa6cc('0x1'));var logger=require(_0xa6cc('0x2'))('api');var moment=require(_0xa6cc('0x3'));var BPromise=require(_0xa6cc('0x4'));var rp=require(_0xa6cc('0x5'));var fs=require('fs');var path=require(_0xa6cc('0x6'));var rimraf=require(_0xa6cc('0x7'));var config=require('../../config/environment');var attributes=require('./license.attributes');module[_0xa6cc('0x8')]=function(_0x3ea026,_0x1e778f){return _0x3ea026[_0xa6cc('0x9')](_0xa6cc('0xa'),attributes,{'tableName':_0xa6cc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f7e=['request-promise','path','rimraf','../../config/environment','define','license','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x20bf56,_0x19dd3a){var _0x21fcef=function(_0x896abd){while(--_0x896abd){_0x20bf56['push'](_0x20bf56['shift']());}};_0x21fcef(++_0x19dd3a);}(_0x1f7e,0xc6));var _0xe1f7=function(_0x3cc5b0,_0x44b6c3){_0x3cc5b0=_0x3cc5b0-0x0;var _0xfccc42=_0x1f7e[_0x3cc5b0];return _0xfccc42;};'use strict';var _=require(_0xe1f7('0x0'));var util=require(_0xe1f7('0x1'));var logger=require(_0xe1f7('0x2'))(_0xe1f7('0x3'));var moment=require(_0xe1f7('0x4'));var BPromise=require(_0xe1f7('0x5'));var rp=require(_0xe1f7('0x6'));var fs=require('fs');var path=require(_0xe1f7('0x7'));var rimraf=require(_0xe1f7('0x8'));var config=require(_0xe1f7('0x9'));var attributes=require('./license.attributes');module['exports']=function(_0x900b31,_0x2067ce){return _0x900b31[_0xe1f7('0xa')]('License',attributes,{'tableName':_0xe1f7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7202e6d..f974e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b7f=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x7c1a96,_0x53d1d6){var _0x3cacee=function(_0x1a3feb){while(--_0x1a3feb){_0x7c1a96['push'](_0x7c1a96['shift']());}};_0x3cacee(++_0x53d1d6);}(_0x8b7f,0xd7));var _0xf8b7=function(_0x39ce93,_0x1a3200){_0x39ce93=_0x39ce93-0x0;var _0x1437e3=_0x8b7f[_0x39ce93];return _0x1437e3;};'use strict';var _=require(_0xf8b7('0x0'));var util=require(_0xf8b7('0x1'));var moment=require('moment');var BPromise=require(_0xf8b7('0x2'));var rs=require(_0xf8b7('0x3'));var fs=require('fs');var Redis=require(_0xf8b7('0x4'));var db=require(_0xf8b7('0x5'))['db'];var utils=require(_0xf8b7('0x6'));var logger=require(_0xf8b7('0x7'))('rpc');var config=require(_0xf8b7('0x8'));var jayson=require(_0xf8b7('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3f7515,_0x43c4fe,_0x155880){return new BPromise(function(_0xaa0218,_0xdd6665){return client['request'](_0x3f7515,_0x155880)[_0xf8b7('0xa')](function(_0x247671){logger[_0xf8b7('0xb')](_0xf8b7('0xc'),_0x43c4fe,_0xf8b7('0xd'));logger[_0xf8b7('0xe')](_0xf8b7('0xf'),_0x43c4fe,_0xf8b7('0xd'),JSON['stringify'](_0x247671));if(_0x247671[_0xf8b7('0x10')]){if(_0x247671[_0xf8b7('0x10')][_0xf8b7('0x11')]===0x1f4){logger[_0xf8b7('0x10')](_0xf8b7('0xc'),_0x43c4fe,_0x247671[_0xf8b7('0x10')][_0xf8b7('0x12')]);return _0xdd6665(_0x247671['error']['message']);}logger[_0xf8b7('0x10')](_0xf8b7('0xc'),_0x43c4fe,_0x247671[_0xf8b7('0x10')][_0xf8b7('0x12')]);return _0xaa0218(_0x247671['error'][_0xf8b7('0x12')]);}else{logger[_0xf8b7('0xb')](_0xf8b7('0xc'),_0x43c4fe,_0xf8b7('0xd'));_0xaa0218(_0x247671['result'][_0xf8b7('0x12')]);}})[_0xf8b7('0x13')](function(_0x397bca){logger[_0xf8b7('0x10')](_0xf8b7('0xc'),_0x43c4fe,_0x397bca);_0xdd6665(_0x397bca);});});}
\ No newline at end of file
+var _0x1364=['client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x40ef47,_0x2629c9){var _0x41793f=function(_0x41c798){while(--_0x41c798){_0x40ef47['push'](_0x40ef47['shift']());}};_0x41793f(++_0x2629c9);}(_0x1364,0xd3));var _0x4136=function(_0x252a41,_0x4751e9){_0x252a41=_0x252a41-0x0;var _0x15f608=_0x1364[_0x252a41];return _0x15f608;};'use strict';var _=require(_0x4136('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4136('0x1'));var rs=require(_0x4136('0x2'));var fs=require('fs');var Redis=require(_0x4136('0x3'));var db=require(_0x4136('0x4'))['db'];var utils=require(_0x4136('0x5'));var logger=require(_0x4136('0x6'))(_0x4136('0x7'));var config=require(_0x4136('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4136('0x9')][_0x4136('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x121539,_0xfdb11d,_0xc3afc4){return new BPromise(function(_0x9d099c,_0x3d4552){return client[_0x4136('0xb')](_0x121539,_0xc3afc4)[_0x4136('0xc')](function(_0x5d5819){logger[_0x4136('0xd')](_0x4136('0xe'),_0xfdb11d,_0x4136('0xf'));logger[_0x4136('0x10')](_0x4136('0x11'),_0xfdb11d,'request\x20sent',JSON['stringify'](_0x5d5819));if(_0x5d5819[_0x4136('0x12')]){if(_0x5d5819['error'][_0x4136('0x13')]===0x1f4){logger[_0x4136('0x12')](_0x4136('0xe'),_0xfdb11d,_0x5d5819[_0x4136('0x12')][_0x4136('0x14')]);return _0x3d4552(_0x5d5819[_0x4136('0x12')][_0x4136('0x14')]);}logger['error'](_0x4136('0xe'),_0xfdb11d,_0x5d5819['error']['message']);return _0x9d099c(_0x5d5819[_0x4136('0x12')][_0x4136('0x14')]);}else{logger[_0x4136('0xd')](_0x4136('0xe'),_0xfdb11d,_0x4136('0xf'));_0x9d099c(_0x5d5819['result'][_0x4136('0x14')]);}})[_0x4136('0x15')](function(_0x44f436){logger[_0x4136('0x12')]('License,\x20%s,\x20%s',_0xfdb11d,_0x44f436);_0x3d4552(_0x44f436);});});}
\ No newline at end of file
index 68b187e..e32759f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cf9=['../../config/environment','./mailAccount.controller','isAuthenticated','describe','get','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','post','/:id/canned_answers','addAnswer','create','addSmtp','addApplications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','destroy','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x2e63e8,_0xed68f5){var _0x3fe904=function(_0x10e876){while(--_0x10e876){_0x2e63e8['push'](_0x2e63e8['shift']());}};_0x3fe904(++_0xed68f5);}(_0x7cf9,0x1d8));var _0x97cf=function(_0x1bb873,_0x5e5f2b){_0x1bb873=_0x1bb873-0x0;var _0xf5c42e=_0x7cf9[_0x1bb873];return _0xf5c42e;};'use strict';var multer=require(_0x97cf('0x0'));var util=require(_0x97cf('0x1'));var path=require(_0x97cf('0x2'));var timeout=require(_0x97cf('0x3'));var express=require(_0x97cf('0x4'));var router=express[_0x97cf('0x5')]();var fs_extra=require(_0x97cf('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x97cf('0x7'));var config=require(_0x97cf('0x8'));var controller=require(_0x97cf('0x9'));router['get']('/',auth[_0x97cf('0xa')](),controller['index']);router['get']('/describe',auth[_0x97cf('0xa')](),controller[_0x97cf('0xb')]);router[_0x97cf('0xc')](_0x97cf('0xd'),auth[_0x97cf('0xa')](),controller[_0x97cf('0xe')]);router[_0x97cf('0xc')](_0x97cf('0xf'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x10')]);router[_0x97cf('0xc')]('/:id/canned_answers',auth[_0x97cf('0xa')](),controller[_0x97cf('0x11')]);router['get'](_0x97cf('0x12'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x13')]);router['get'](_0x97cf('0x14'),auth['isAuthenticated'](),controller[_0x97cf('0x15')]);router[_0x97cf('0xc')](_0x97cf('0x16'),auth[_0x97cf('0xa')](),controller['getInteractions']);router[_0x97cf('0xc')](_0x97cf('0x17'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x18')]);router[_0x97cf('0xc')](_0x97cf('0x19'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x1a')]);router[_0x97cf('0xc')](_0x97cf('0x1b'),auth['isAuthenticated'](),controller[_0x97cf('0x1c')]);router[_0x97cf('0xc')]('/:id/users',auth[_0x97cf('0xa')](),controller['getAgents']);router[_0x97cf('0x1d')](_0x97cf('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0x97cf('0x1e'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x1f')]);router['post']('/',auth[_0x97cf('0xa')](),controller[_0x97cf('0x20')]);router['post'](_0x97cf('0x12'),auth[_0x97cf('0xa')](),controller['addImap']);router[_0x97cf('0x1d')]('/:id/out_servers',auth['isAuthenticated'](),controller[_0x97cf('0x21')]);router['post'](_0x97cf('0x16'),auth[_0x97cf('0xa')](),controller['addInteraction']);router['post'](_0x97cf('0x17'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x22')]);router['post'](_0x97cf('0x23'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x24')]);router[_0x97cf('0x1d')]('/:id/users',auth['isAuthenticated'](),controller[_0x97cf('0x25')]);router[_0x97cf('0x26')]('/:id',auth[_0x97cf('0xa')](),controller[_0x97cf('0x27')]);router[_0x97cf('0x28')](_0x97cf('0xf'),auth['isAuthenticated'](),controller[_0x97cf('0x29')]);router['delete']('/:id/canned_answers',auth[_0x97cf('0xa')](),controller[_0x97cf('0x2a')]);router[_0x97cf('0x28')]('/:id/in_servers',auth[_0x97cf('0xa')](),controller[_0x97cf('0x2b')]);router[_0x97cf('0x28')](_0x97cf('0x14'),auth['isAuthenticated'](),controller['removeSmtp']);router[_0x97cf('0x28')]('/:id',auth[_0x97cf('0xa')](),controller[_0x97cf('0x2c')]);router[_0x97cf('0x28')](_0x97cf('0x2d'),auth[_0x97cf('0xa')](),controller[_0x97cf('0x2e')]);module[_0x97cf('0x2f')]=router;
\ No newline at end of file
+var _0xbb73=['removeImap','/:id','destroy','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','getAgents','post','addDisposition','addAnswer','addImap','addSmtp','addInteraction','/:id/users','addAgents','delete','removeAnswers'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xbb73,0x1de));var _0x3bb7=function(_0x5dce9a,_0x442821){_0x5dce9a=_0x5dce9a-0x0;var _0x3f59b5=_0xbb73[_0x5dce9a];return _0x3f59b5;};'use strict';var multer=require(_0x3bb7('0x0'));var util=require(_0x3bb7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3bb7('0x2'));var router=express[_0x3bb7('0x3')]();var fs_extra=require(_0x3bb7('0x4'));var auth=require(_0x3bb7('0x5'));var interaction=require(_0x3bb7('0x6'));var config=require(_0x3bb7('0x7'));var controller=require(_0x3bb7('0x8'));router[_0x3bb7('0x9')]('/',auth[_0x3bb7('0xa')](),controller[_0x3bb7('0xb')]);router[_0x3bb7('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x3bb7('0xc')]);router[_0x3bb7('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3bb7('0xd')]);router[_0x3bb7('0x9')](_0x3bb7('0xe'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0xf')]);router['get'](_0x3bb7('0x10'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x11')]);router[_0x3bb7('0x9')](_0x3bb7('0x12'),auth[_0x3bb7('0xa')](),controller['getImap']);router[_0x3bb7('0x9')](_0x3bb7('0x13'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x14')]);router[_0x3bb7('0x9')](_0x3bb7('0x15'),auth[_0x3bb7('0xa')](),controller['getInteractions']);router['get'](_0x3bb7('0x16'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x17')]);router['get'](_0x3bb7('0x18'),auth['isAuthenticated'](),controller[_0x3bb7('0x19')]);router[_0x3bb7('0x9')](_0x3bb7('0x1a'),auth[_0x3bb7('0xa')](),controller['verifySmtp']);router[_0x3bb7('0x9')]('/:id/users',auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x1b')]);router[_0x3bb7('0x1c')](_0x3bb7('0xe'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x1d')]);router[_0x3bb7('0x1c')](_0x3bb7('0x10'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x1e')]);router[_0x3bb7('0x1c')]('/',auth[_0x3bb7('0xa')](),controller['create']);router['post'](_0x3bb7('0x12'),auth['isAuthenticated'](),controller[_0x3bb7('0x1f')]);router[_0x3bb7('0x1c')](_0x3bb7('0x13'),auth['isAuthenticated'](),controller[_0x3bb7('0x20')]);router[_0x3bb7('0x1c')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x3bb7('0x21')]);router[_0x3bb7('0x1c')](_0x3bb7('0x16'),auth[_0x3bb7('0xa')](),controller['addApplications']);router[_0x3bb7('0x1c')]('/:id/send',auth[_0x3bb7('0xa')](),controller['send']);router[_0x3bb7('0x1c')](_0x3bb7('0x22'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x23')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x3bb7('0x24')](_0x3bb7('0xe'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x3bb7('0x24')]('/:id/canned_answers',auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x25')]);router[_0x3bb7('0x24')](_0x3bb7('0x12'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x26')]);router['delete']('/:id/out_servers',auth[_0x3bb7('0xa')](),controller['removeSmtp']);router[_0x3bb7('0x24')](_0x3bb7('0x27'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x28')]);router[_0x3bb7('0x24')](_0x3bb7('0x22'),auth[_0x3bb7('0xa')](),controller[_0x3bb7('0x29')]);module[_0x3bb7('0x2a')]=router;
\ No newline at end of file
index 03f0825..d5f1cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca22=['UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','gmail','hotmail','yahoo','getDataValue','provider','custom','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif'];(function(_0x3af502,_0x32f602){var _0x2c8679=function(_0x5310cd){while(--_0x5310cd){_0x3af502['push'](_0x3af502['shift']());}};_0x2c8679(++_0x32f602);}(_0xca22,0x126));var _0x2ca2=function(_0x36ed6c,_0x302b25){_0x36ed6c=_0x36ed6c-0x0;var _0x13a7e4=_0xca22[_0x36ed6c];return _0x13a7e4;};'use strict';var Sequelize=require(_0x2ca2('0x0'));module[_0x2ca2('0x1')]={'description':{'type':Sequelize[_0x2ca2('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x2ca2('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x2ca2('0x4')]},'markAsUnread':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x2ca2('0x2')],'allowNull':![],'defaultValue':_0x2ca2('0x5')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0x2ca2('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x2ca2('0x7');}},'notificationSound':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2ca2('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2ca2('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2ca2('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2ca2('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0x2ca2('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x2ca2('0x3')],'defaultValue':![],'comment':_0x2ca2('0xa'),'set':function(_0x4343b8){if(!_0x4343b8)this[_0x2ca2('0xb')](_0x2ca2('0xc'),null);this[_0x2ca2('0xb')](_0x2ca2('0xd'),_0x4343b8);}},'provider':{'type':Sequelize['ENUM'](_0x2ca2('0xe'),_0x2ca2('0xf'),_0x2ca2('0x10'),'outlook365'),'defaultValue':null,'get':function(){if(!this[_0x2ca2('0x11')](_0x2ca2('0x12')))return _0x2ca2('0x13');return this[_0x2ca2('0x11')](_0x2ca2('0x12'));},'set':function(_0xb294de){if(_0xb294de==='custom')_0xb294de=null;return this[_0x2ca2('0xb')](_0x2ca2('0x12'),_0xb294de);}}};
\ No newline at end of file
+var _0xc460=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','yahoo','outlook365','provider','custom','getDataValue','sequelize','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'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xc460,0xb2));var _0x0c46=function(_0x33dbba,_0x27b255){_0x33dbba=_0x33dbba-0x0;var _0x23c142=_0xc460[_0x33dbba];return _0x23c142;};'use strict';var Sequelize=require(_0x0c46('0x0'));module[_0x0c46('0x1')]={'description':{'type':Sequelize[_0x0c46('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x0c46('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x0c46('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x0c46('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x0c46('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x0c46('0x5')](0x2)[_0x0c46('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x0c46('0x4')],'defaultValue':function(){return _0x0c46('0x7');}},'notificationSound':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0c46('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0c46('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x0c46('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x0c46('0x3')],'defaultValue':![],'comment':_0x0c46('0x9'),'set':function(_0x34006e){if(!_0x34006e)this[_0x0c46('0xa')](_0x0c46('0xb'),null);this['setDataValue']('mandatoryDisposition',_0x34006e);}},'provider':{'type':Sequelize['ENUM']('gmail','hotmail',_0x0c46('0xc'),_0x0c46('0xd')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0x0c46('0xe')))return _0x0c46('0xf');return this[_0x0c46('0x10')](_0x0c46('0xe'));},'set':function(_0x46cfa7){if(_0x46cfa7==='custom')_0x46cfa7=null;return this[_0x0c46('0xa')](_0x0c46('0xe'),_0x46cfa7);}}};
\ No newline at end of file
index 9ac9ce0..91ae3a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f91=['send','gmail','yahoo','imap.mail.yahoo.com','outlook365','outlook.office365.com','hotmail','smtp-mail.outlook.com','Unknown\x20email\x20service\x20provider','user','username','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Smtp','index','MailServerOut','Pause','mandatoryDispositionPause','map','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','MailAccount','includeAll','include','findAll','rows','show','params','MailServerIn','Imap','rawAttributes','find','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','email','ListId','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','UserProfileResource','getImap','addImap','removeImap','setImap','getSmtp','setSmtp','addInteraction','omit','MailInteraction','CmContact','Contact','User','fullname','internal','color','tag','sequelize','ISOLATION_LEVELS','MailApplication','bulkCreate','findAndCountAll','priority','stack','finally','getApplications','MailMessage','$gte','split','inlineCss','true','CmList','List','Contacts','updatedAt','DESC','Smtp\x20configuration\x20not\x20found','isNil','from','format','%s\x20<%s>','attachments','join','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','CloudProvider','Sequelize','ValidationError','addAgents','spread','emit','removeAgents','isArray','userMailAccount:remove','getAgents','moment','util','path','lodash','juice','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','get','sendStatus','name'];(function(_0x5370be,_0x4d97c0){var _0x1b3950=function(_0x10f818){while(--_0x10f818){_0x5370be['push'](_0x5370be['shift']());}};_0x1b3950(++_0x4d97c0);}(_0x5f91,0x158));var _0x15f9=function(_0x2f0214,_0x3e95f6){_0x2f0214=_0x2f0214-0x0;var _0x4ca2fa=_0x5f91[_0x2f0214];return _0x4ca2fa;};'use strict';var moment=require(_0x15f9('0x0'));var BPromise=require('bluebird');var util=require(_0x15f9('0x1'));var path=require(_0x15f9('0x2'));var _=require(_0x15f9('0x3'));var juice=require(_0x15f9('0x4'));var Redis=require('ioredis');var qs=require(_0x15f9('0x5'));var logger=require(_0x15f9('0x6'))(_0x15f9('0x7'));var config=require('../../config/environment');var db=require(_0x15f9('0x8'))['db'];config['redis']=_[_0x15f9('0x9')](config[_0x15f9('0xa')],{'host':_0x15f9('0xb'),'port':0x18eb});var socket=require(_0x15f9('0xc'))(new Redis(config[_0x15f9('0xa')]));require('./mailAccount.socket')[_0x15f9('0xd')](socket);var jayson=require(_0x15f9('0xe'));var client=jayson['client'][_0x15f9('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x30a434,_0x532382,_0x1a46fc,_0x2d3970){return new BPromise(function(_0x25b984,_0x1aed83){var _0x30b84a=_0x2d3970||client;return _0x30b84a[_0x15f9('0x10')](_0x30a434,_0x1a46fc)[_0x15f9('0x11')](function(_0xa4dfa5){logger[_0x15f9('0x12')](_0x15f9('0x13'),_0x532382,'request\x20sent');logger[_0x15f9('0x14')](_0x15f9('0x15'),_0x532382,_0x15f9('0x16'),JSON['stringify'](_0xa4dfa5));if(_0xa4dfa5['error']){if(_0xa4dfa5[_0x15f9('0x17')][_0x15f9('0x18')]===0x1f4){logger[_0x15f9('0x17')]('MailAccount,\x20%s,\x20%s',_0x532382,_0xa4dfa5[_0x15f9('0x17')][_0x15f9('0x19')]);return _0x1aed83(_0xa4dfa5[_0x15f9('0x17')][_0x15f9('0x19')]);}logger[_0x15f9('0x17')](_0x15f9('0x13'),_0x532382,_0xa4dfa5[_0x15f9('0x17')]['message']);return _0x25b984(_0xa4dfa5[_0x15f9('0x17')][_0x15f9('0x19')]);}else{logger[_0x15f9('0x12')](_0x15f9('0x13'),_0x532382,_0x15f9('0x16'));_0x25b984(_0xa4dfa5[_0x15f9('0x1a')][_0x15f9('0x19')]);}})[_0x15f9('0x1b')](function(_0x191b71){logger[_0x15f9('0x17')]('MailAccount,\x20%s,\x20%s',_0x532382,_0x191b71);_0x1aed83(_0x191b71);});});}function respondWithStatusCode(_0x5c722b,_0x27d496){_0x27d496=_0x27d496||0xcc;return function(_0x5217d8){if(_0x5217d8){return _0x5c722b['sendStatus'](_0x27d496);}return _0x5c722b[_0x15f9('0x1c')](_0x27d496)[_0x15f9('0x1d')]();};}function respondWithResult(_0x1bd201,_0x5e7377){_0x5e7377=_0x5e7377||0xc8;return function(_0x132bcc){if(_0x132bcc){return _0x1bd201[_0x15f9('0x1c')](_0x5e7377)[_0x15f9('0x1e')](_0x132bcc);}};}function respondWithFilteredResult(_0x5194af,_0x477d1e){return function(_0x17c945){if(_0x17c945){var _0x11ffbb=typeof _0x477d1e[_0x15f9('0x1f')]===_0x15f9('0x20')&&typeof _0x477d1e[_0x15f9('0x21')]===_0x15f9('0x20');var _0x48b054=_0x17c945[_0x15f9('0x22')];var _0x13d2af=_0x11ffbb?0x0:_0x477d1e[_0x15f9('0x1f')];var _0x25e284=_0x11ffbb?_0x17c945['count']:_0x477d1e[_0x15f9('0x1f')]+_0x477d1e[_0x15f9('0x21')];var _0x385ee8;if(_0x25e284>=_0x48b054){_0x25e284=_0x48b054;_0x385ee8=0xc8;}else{_0x385ee8=0xce;}_0x5194af[_0x15f9('0x1c')](_0x385ee8);return _0x5194af[_0x15f9('0x23')](_0x15f9('0x24'),_0x13d2af+'-'+_0x25e284+'/'+_0x48b054)['json'](_0x17c945);}return null;};}function saveUpdates(_0x366212){return function(_0x318fe9){if(_0x318fe9){return _0x318fe9[_0x15f9('0x25')](_0x366212)[_0x15f9('0x11')](function(_0x317e0f){return _0x317e0f;});}return null;};}function removeEntity(_0x3c62dc){return function(_0x4556a8){if(_0x4556a8){return _0x4556a8[_0x15f9('0x26')]()[_0x15f9('0x11')](function(){var _0x5b53d3=_0x4556a8[_0x15f9('0x27')]({'plain':!![]});var _0x433aa3='MailAccounts';return db['UserProfileResource'][_0x15f9('0x26')]({'where':{'type':_0x433aa3,'resourceId':_0x5b53d3['id']}})['then'](function(){return _0x4556a8;});})[_0x15f9('0x11')](function(){_0x3c62dc[_0x15f9('0x1c')](0xcc)[_0x15f9('0x1d')]();});}};}function handleEntityNotFound(_0x225e4f){return function(_0x3ee25f){if(!_0x3ee25f){_0x225e4f[_0x15f9('0x28')](0x194);}return _0x3ee25f;};}function handleError(_0x4d9602,_0x4db33b){_0x4db33b=_0x4db33b||0x1f4;return function(_0x42c3b7){logger[_0x15f9('0x17')](_0x42c3b7['stack']);if(_0x42c3b7['name']){delete _0x42c3b7[_0x15f9('0x29')];}_0x4d9602['status'](_0x4db33b)[_0x15f9('0x2a')](_0x42c3b7);};}function getImapHost(_0x4b5f5f){switch(_0x4b5f5f){case _0x15f9('0x2b'):return'imap.gmail.com';case _0x15f9('0x2c'):return _0x15f9('0x2d');case'hotmail':return'imap-mail.outlook.com';case _0x15f9('0x2e'):return _0x15f9('0x2f');}throw new Error('Unknown\x20email\x20service\x20provider',_0x4b5f5f);}function getSmtpHost(_0x29ca6b){switch(_0x29ca6b){case _0x15f9('0x2b'):return'smtp.gmail.com';case _0x15f9('0x2c'):return'smtp.mail.yahoo.com';case _0x15f9('0x30'):return _0x15f9('0x31');case _0x15f9('0x2e'):return'smtp.office365.com';}throw new Error(_0x15f9('0x32'),_0x29ca6b);}function getAuthenticationOptions(_0x424d46,_0x501982){var _0x500aa8={};var _0x204114={};if(_0x424d46){_0x500aa8[_0x15f9('0x33')]=_0x204114[_0x15f9('0x33')]=_0x501982[_0x15f9('0x34')];_0x500aa8[_0x15f9('0x35')]=_0x204114[_0x15f9('0x36')]=_0x501982[_0x15f9('0x35')];if(_0x501982[_0x15f9('0x37')]){_0x500aa8[_0x15f9('0x37')]=_0x204114[_0x15f9('0x37')]=!![];_0x500aa8[_0x15f9('0x38')]=_0x204114[_0x15f9('0x38')]=_0x501982[_0x15f9('0x38')];_0x500aa8[_0x15f9('0x35')]=_0x204114[_0x15f9('0x36')]=null;}else{_0x500aa8[_0x15f9('0x38')]=_0x204114[_0x15f9('0x38')]=null;}_0x500aa8[_0x15f9('0x39')]=getImapHost(_0x424d46);_0x500aa8[_0x15f9('0x3a')]=0x3e1;_0x204114[_0x15f9('0x39')]=getSmtpHost(_0x424d46);_0x204114[_0x15f9('0x3a')]=0x24b;_0x204114[_0x15f9('0x3b')]=![];_0x500aa8['service']=_0x204114[_0x15f9('0x3c')]=null;}else{if(_0x501982['authentication']){_0x500aa8[_0x15f9('0x33')]=_0x204114[_0x15f9('0x33')]=_0x501982[_0x15f9('0x34')];_0x500aa8[_0x15f9('0x35')]=_0x204114[_0x15f9('0x36')]=_0x501982[_0x15f9('0x35')];}else{_0x500aa8[_0x15f9('0x3d')]=_0x204114[_0x15f9('0x3d')]=![];_0x500aa8[_0x15f9('0x33')]=_0x204114['user']=null;_0x500aa8['password']=_0x204114['pass']=null;}_0x500aa8[_0x15f9('0x39')]=_0x501982['Imap'][_0x15f9('0x39')];_0x500aa8['port']=_0x501982['Imap'][_0x15f9('0x3a')];_0x204114[_0x15f9('0x39')]=_0x501982[_0x15f9('0x3e')][_0x15f9('0x39')];_0x204114[_0x15f9('0x3a')]=_0x501982['Smtp'][_0x15f9('0x3a')];}return{'Imap':_0x500aa8,'Smtp':_0x204114};}exports[_0x15f9('0x3f')]=function(_0x1a5ea6,_0x43dc78){var _0x4d0f63={'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e')},{'model':db[_0x15f9('0x41')],'as':_0x15f9('0x42')}]},_0xd14ed2={},_0x938ec7={'count':0x0,'rows':[]};var _0xaee5f0=_[_0x15f9('0x43')](db['MailAccount']['rawAttributes'],function(_0xa88c00){return{'name':_0xa88c00[_0x15f9('0x44')],'type':_0xa88c00[_0x15f9('0x45')][_0x15f9('0x46')]};});_0xd14ed2[_0x15f9('0x47')]=_[_0x15f9('0x43')](_0xaee5f0,'name');_0xd14ed2[_0x15f9('0x48')]=_[_0x15f9('0x49')](_0x1a5ea6['query']);_0xd14ed2['filters']=_['intersection'](_0xd14ed2[_0x15f9('0x47')],_0xd14ed2[_0x15f9('0x48')]);_0x4d0f63[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0xd14ed2[_0x15f9('0x47')],qs[_0x15f9('0x4c')](_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x4c')]));_0x4d0f63[_0x15f9('0x4a')]=_0x4d0f63[_0x15f9('0x4a')][_0x15f9('0x4d')]?_0x4d0f63['attributes']:_0xd14ed2[_0x15f9('0x47')];if(!_0x1a5ea6[_0x15f9('0x48')]['hasOwnProperty'](_0x15f9('0x4e'))){_0x4d0f63['limit']=qs[_0x15f9('0x21')](_0x1a5ea6[_0x15f9('0x48')]['limit']);_0x4d0f63['offset']=qs[_0x15f9('0x1f')](_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x1f')]);}_0x4d0f63[_0x15f9('0x4f')]=qs[_0x15f9('0x50')](_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x50')]);_0x4d0f63[_0x15f9('0x51')]=qs['filters'](_[_0x15f9('0x52')](_0x1a5ea6['query'],_0xd14ed2[_0x15f9('0x53')]),_0xaee5f0);if(_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x54')]){_0x4d0f63[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0x4d0f63['where'],{'$or':_[_0x15f9('0x43')](_0xaee5f0,function(_0x201ed6){if(_0x201ed6['type']!==_0x15f9('0x56')){var _0x54f0fe={};_0x54f0fe[_0x201ed6[_0x15f9('0x29')]]={'$like':'%'+_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x54')]+'%'};return _0x54f0fe;}})});}_0x4d0f63=_[_0x15f9('0x55')]({},_0x4d0f63,_0x1a5ea6[_0x15f9('0x57')]);var _0x54bf43={'where':_0x4d0f63[_0x15f9('0x51')]};return db[_0x15f9('0x58')][_0x15f9('0x22')](_0x54bf43)[_0x15f9('0x11')](function(_0xd5123b){_0x938ec7['count']=_0xd5123b;if(_0x1a5ea6[_0x15f9('0x48')][_0x15f9('0x59')]){_0x4d0f63[_0x15f9('0x5a')]=[{'all':!![]}];}return db['MailAccount'][_0x15f9('0x5b')](_0x4d0f63);})[_0x15f9('0x11')](function(_0x225bca){_0x938ec7[_0x15f9('0x5c')]=_0x225bca;return _0x938ec7;})[_0x15f9('0x11')](respondWithFilteredResult(_0x43dc78,_0x4d0f63))[_0x15f9('0x1b')](handleError(_0x43dc78,null));};exports[_0x15f9('0x5d')]=function(_0x1959a6,_0x3945e5){var _0x3731b5={'raw':![],'where':{'id':_0x1959a6[_0x15f9('0x5e')]['id']},'include':[{'model':db[_0x15f9('0x5f')],'as':_0x15f9('0x60')},{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e')},{'model':db[_0x15f9('0x41')],'as':'mandatoryDispositionPause'}]},_0x103a9e={};_0x103a9e[_0x15f9('0x47')]=_['keys'](db[_0x15f9('0x58')][_0x15f9('0x61')]);_0x103a9e[_0x15f9('0x48')]=_[_0x15f9('0x49')](_0x1959a6[_0x15f9('0x48')]);_0x103a9e[_0x15f9('0x53')]=_[_0x15f9('0x4b')](_0x103a9e[_0x15f9('0x47')],_0x103a9e['query']);_0x3731b5[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0x103a9e[_0x15f9('0x47')],qs[_0x15f9('0x4c')](_0x1959a6[_0x15f9('0x48')][_0x15f9('0x4c')]));_0x3731b5['attributes']=_0x3731b5[_0x15f9('0x4a')][_0x15f9('0x4d')]?_0x3731b5['attributes']:_0x103a9e[_0x15f9('0x47')];if(_0x1959a6[_0x15f9('0x48')][_0x15f9('0x59')]){_0x3731b5[_0x15f9('0x5a')]=[{'all':!![]}];}_0x3731b5=_[_0x15f9('0x55')]({},_0x3731b5,_0x1959a6[_0x15f9('0x57')]);return db['MailAccount'][_0x15f9('0x62')](_0x3731b5)[_0x15f9('0x11')](handleEntityNotFound(_0x3945e5,null))['then'](respondWithResult(_0x3945e5,null))[_0x15f9('0x1b')](handleError(_0x3945e5,null));};exports[_0x15f9('0x25')]=function(_0x439b9c,_0x362313){if(_0x439b9c[_0x15f9('0x63')]['id']){delete _0x439b9c[_0x15f9('0x63')]['id'];}var _0xcfbf48=_0x439b9c[_0x15f9('0x63')][_0x15f9('0x64')]===_0x15f9('0x65')?null:_0x439b9c[_0x15f9('0x63')][_0x15f9('0x64')];var _0x3afb24=_0x439b9c['body'][_0x15f9('0x60')]||{};var _0x56bfff=_0x439b9c['body']['Smtp']||{};if(_0xcfbf48){_0x3afb24[_0x15f9('0x39')]=getImapHost(_0xcfbf48);_0x3afb24[_0x15f9('0x3a')]=0x3e1;_0x56bfff['host']=getSmtpHost(_0xcfbf48);_0x56bfff[_0x15f9('0x3a')]=0x24b;_0x56bfff[_0x15f9('0x3b')]=![];}if(_0x56bfff[_0x15f9('0x37')]){_0x56bfff[_0x15f9('0x3b')]=![];}else{_0x56bfff[_0x15f9('0x38')]=null;}if(!_0x3afb24[_0x15f9('0x37')])_0x3afb24['CloudProviderId']=null;_0x439b9c['body'][_0x15f9('0x60')]=_0x3afb24;_0x439b9c['body']['Smtp']=_0x56bfff;return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x439b9c[_0x15f9('0x5e')]['id']},'include':[{'model':db[_0x15f9('0x5f')],'as':_0x15f9('0x60')},{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e')},{'model':db[_0x15f9('0x41')],'as':_0x15f9('0x42')}]})['then'](handleEntityNotFound(_0x362313,null))['then'](function(_0x27a31a){if(!_0x27a31a)throw new Error(_0x15f9('0x66'));if(_0x27a31a[_0x15f9('0x3c')])delete _0x439b9c[_0x15f9('0x63')]['Imap'];return _0x27a31a;})['then'](saveUpdates(_0x439b9c['body'],null))[_0x15f9('0x11')](function(_0x2b9695){if(!_0x439b9c[_0x15f9('0x63')][_0x15f9('0x60')])return _0x2b9695;return db['MailServerIn'][_0x15f9('0x25')](_0x439b9c['body'][_0x15f9('0x60')],{'where':{'MailAccountId':_0x2b9695['id']}})[_0x15f9('0x11')](function(){return _0x2b9695;});})[_0x15f9('0x11')](function(_0x5ebc87){if(!_0x439b9c[_0x15f9('0x63')]['Smtp'])return _0x5ebc87;return db['MailServerOut']['update'](_0x439b9c[_0x15f9('0x63')][_0x15f9('0x3e')],{'where':{'MailAccountId':_0x5ebc87['id']}})[_0x15f9('0x11')](function(){return _0x5ebc87;});})[_0x15f9('0x11')](respondWithResult(_0x362313,null))['catch'](handleError(_0x362313,null));};exports[_0x15f9('0x67')]=function(_0x2dcbb3,_0x32ee14){return db[_0x15f9('0x58')]['describe']()['then'](respondWithResult(_0x32ee14,null))[_0x15f9('0x1b')](handleError(_0x32ee14,null));};exports[_0x15f9('0x68')]=function(_0xc3fcd3,_0x502779){if(_0xc3fcd3[_0x15f9('0x63')]['id']){delete _0xc3fcd3[_0x15f9('0x63')]['id'];}return db['MailAccount']['find']({'where':{'id':_0xc3fcd3[_0x15f9('0x5e')]['id']}})['then'](handleEntityNotFound(_0x502779,null))[_0x15f9('0x11')](function(_0x539c1a){if(_0x539c1a){_0xc3fcd3[_0x15f9('0x63')][_0x15f9('0x69')]=_0x539c1a['id'];return db[_0x15f9('0x6a')][_0x15f9('0x6b')](_0xc3fcd3[_0x15f9('0x63')]);}})['then'](respondWithResult(_0x502779,null))['catch'](handleError(_0x502779,null));};exports[_0x15f9('0x6c')]=function(_0x3df5dd,_0x3d96fc){var _0x2efbd0={'raw':![],'where':{}};var _0x5534eb={};var _0x30b25f={'count':0x0,'rows':[]};return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x3df5dd[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x3d96fc,null))[_0x15f9('0x11')](function(_0x577235){if(_0x577235){_0x5534eb[_0x15f9('0x47')]=_[_0x15f9('0x49')](db[_0x15f9('0x6a')][_0x15f9('0x61')]);_0x5534eb['query']=_['keys'](_0x3df5dd['query']);_0x5534eb[_0x15f9('0x53')]=_['intersection'](_0x5534eb[_0x15f9('0x47')],_0x5534eb[_0x15f9('0x48')]);_0x2efbd0[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0x5534eb['model'],qs[_0x15f9('0x4c')](_0x3df5dd[_0x15f9('0x48')][_0x15f9('0x4c')]));_0x2efbd0['attributes']=_0x2efbd0[_0x15f9('0x4a')]['length']?_0x2efbd0[_0x15f9('0x4a')]:_0x5534eb[_0x15f9('0x47')];if(!_0x3df5dd[_0x15f9('0x48')]['hasOwnProperty'](_0x15f9('0x4e'))){_0x2efbd0[_0x15f9('0x21')]=qs[_0x15f9('0x21')](_0x3df5dd['query'][_0x15f9('0x21')]);_0x2efbd0[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x3df5dd[_0x15f9('0x48')]['offset']);}_0x2efbd0[_0x15f9('0x4f')]=qs[_0x15f9('0x50')](_0x3df5dd[_0x15f9('0x48')][_0x15f9('0x50')]);_0x2efbd0[_0x15f9('0x51')]=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x3df5dd[_0x15f9('0x48')],_0x5534eb[_0x15f9('0x53')]));_0x2efbd0[_0x15f9('0x51')]['MailAccountId']=_0x577235['id'];if(_0x3df5dd[_0x15f9('0x48')][_0x15f9('0x54')]){_0x2efbd0[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0x2efbd0[_0x15f9('0x51')],{'$or':_[_0x15f9('0x43')](_0x2efbd0[_0x15f9('0x4a')],function(_0x22ffe6){var _0x3c6c64={};_0x3c6c64[_0x22ffe6]={'$like':'%'+_0x3df5dd['query'][_0x15f9('0x54')]+'%'};return _0x3c6c64;})});}_0x2efbd0=_[_0x15f9('0x55')]({},_0x2efbd0,_0x3df5dd[_0x15f9('0x57')]);return db[_0x15f9('0x6a')][_0x15f9('0x22')]({'where':_0x2efbd0['where']})['then'](function(_0x32f50b){_0x30b25f[_0x15f9('0x22')]=_0x32f50b;if(_0x3df5dd['query'][_0x15f9('0x59')]){_0x2efbd0[_0x15f9('0x5a')]=[{'all':!![]}];}return db[_0x15f9('0x6a')][_0x15f9('0x5b')](_0x2efbd0);})['then'](function(_0x365476){_0x30b25f[_0x15f9('0x5c')]=_0x365476;return _0x30b25f;});}})['then'](respondWithFilteredResult(_0x3d96fc,_0x2efbd0))['catch'](handleError(_0x3d96fc,null));};exports[_0x15f9('0x6e')]=function(_0x4fae82,_0x36a81a){return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x4fae82[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x36a81a,null))[_0x15f9('0x11')](function(_0x563e17){if(_0x563e17){return _0x563e17[_0x15f9('0x6e')](_0x4fae82[_0x15f9('0x48')][_0x15f9('0x6f')]);}})[_0x15f9('0x11')](respondWithStatusCode(_0x36a81a,null))[_0x15f9('0x1b')](handleError(_0x36a81a,null));};exports[_0x15f9('0x70')]=function(_0x8afbb0,_0x586588){if(_0x8afbb0[_0x15f9('0x63')]['id']){delete _0x8afbb0[_0x15f9('0x63')]['id'];}return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x8afbb0[_0x15f9('0x5e')]['id']}})['then'](handleEntityNotFound(_0x586588,null))['then'](function(_0x1a56c2){if(_0x1a56c2){_0x8afbb0['body']['MailAccountId']=_0x1a56c2['id'];return db[_0x15f9('0x71')][_0x15f9('0x6b')](_0x8afbb0[_0x15f9('0x63')]);}})['then'](respondWithResult(_0x586588,null))[_0x15f9('0x1b')](handleError(_0x586588,null));};exports[_0x15f9('0x72')]=function(_0x5679b3,_0x4dc2c1){var _0x3cf632={'raw':![],'where':{}};var _0x587c0f={};var _0x449981={'count':0x0,'rows':[]};return db['MailAccount'][_0x15f9('0x6d')]({'where':{'id':_0x5679b3[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x4dc2c1,null))['then'](function(_0x261836){if(_0x261836){_0x587c0f[_0x15f9('0x47')]=_['keys'](db['CannedAnswer'][_0x15f9('0x61')]);_0x587c0f[_0x15f9('0x48')]=_[_0x15f9('0x49')](_0x5679b3[_0x15f9('0x48')]);_0x587c0f[_0x15f9('0x53')]=_[_0x15f9('0x4b')](_0x587c0f[_0x15f9('0x47')],_0x587c0f['query']);_0x3cf632[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0x587c0f['model'],qs['fields'](_0x5679b3['query'][_0x15f9('0x4c')]));_0x3cf632[_0x15f9('0x4a')]=_0x3cf632['attributes'][_0x15f9('0x4d')]?_0x3cf632[_0x15f9('0x4a')]:_0x587c0f[_0x15f9('0x47')];if(!_0x5679b3['query'][_0x15f9('0x73')](_0x15f9('0x4e'))){_0x3cf632['limit']=qs[_0x15f9('0x21')](_0x5679b3[_0x15f9('0x48')][_0x15f9('0x21')]);_0x3cf632[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x5679b3[_0x15f9('0x48')]['offset']);}_0x3cf632['order']=qs[_0x15f9('0x50')](_0x5679b3[_0x15f9('0x48')]['sort']);_0x3cf632['where']=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x5679b3['query'],_0x587c0f[_0x15f9('0x53')]));_0x3cf632[_0x15f9('0x51')][_0x15f9('0x69')]=_0x261836['id'];if(_0x5679b3['query'][_0x15f9('0x54')]){_0x3cf632[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0x3cf632[_0x15f9('0x51')],{'$or':_[_0x15f9('0x43')](_0x3cf632[_0x15f9('0x4a')],function(_0x5c6d1f){var _0x23e424={};_0x23e424[_0x5c6d1f]={'$like':'%'+_0x5679b3[_0x15f9('0x48')][_0x15f9('0x54')]+'%'};return _0x23e424;})});}_0x3cf632=_[_0x15f9('0x55')]({},_0x3cf632,_0x5679b3[_0x15f9('0x57')]);return db['CannedAnswer'][_0x15f9('0x22')]({'where':_0x3cf632[_0x15f9('0x51')]})[_0x15f9('0x11')](function(_0x301dd1){_0x449981[_0x15f9('0x22')]=_0x301dd1;if(_0x5679b3['query'][_0x15f9('0x59')]){_0x3cf632['include']=[{'all':!![]}];}return db[_0x15f9('0x71')][_0x15f9('0x5b')](_0x3cf632);})['then'](function(_0x5829a0){_0x449981[_0x15f9('0x5c')]=_0x5829a0;return _0x449981;});}})[_0x15f9('0x11')](respondWithFilteredResult(_0x4dc2c1,_0x3cf632))['catch'](handleError(_0x4dc2c1,null));};exports[_0x15f9('0x74')]=function(_0x222603,_0x153188){return db['MailAccount'][_0x15f9('0x62')]({'where':{'id':_0x222603[_0x15f9('0x5e')]['id']}})['then'](handleEntityNotFound(_0x153188,null))[_0x15f9('0x11')](function(_0x2c98f1){if(_0x2c98f1){return _0x2c98f1[_0x15f9('0x74')](_0x222603[_0x15f9('0x48')][_0x15f9('0x6f')]);}})[_0x15f9('0x11')](respondWithStatusCode(_0x153188,null))[_0x15f9('0x1b')](handleError(_0x153188,null));};exports[_0x15f9('0x6b')]=function(_0x33c2b8,_0x17083d){var _0x3fefcf={'name':_0x33c2b8['body']['name'],'key':_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x46')],'provider':_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x64')]==='custom'?null:_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x64')],'email':_0x33c2b8['body'][_0x15f9('0x75')],'ListId':_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x76')],'active':!_['isNil'](_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x77')])?_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x77')]:!![],'description':_0x33c2b8[_0x15f9('0x63')][_0x15f9('0x78')]||null};var _0xcfa688=getAuthenticationOptions(_0x3fefcf[_0x15f9('0x64')],_0x33c2b8[_0x15f9('0x63')]);_0x3fefcf[_0x15f9('0x60')]=_0xcfa688[_0x15f9('0x60')];_0x3fefcf['Smtp']=_0xcfa688[_0x15f9('0x3e')];return db[_0x15f9('0x58')][_0x15f9('0x6b')](_0x3fefcf,{'include':[{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e')},{'model':db['MailServerIn'],'as':_0x15f9('0x60')}]})['then'](function(_0x1342ae){var _0x1ee856=_0x33c2b8[_0x15f9('0x33')][_0x15f9('0x27')]({'plain':!![]});if(!_0x1ee856)throw new Error(_0x15f9('0x79'));if(_0x1ee856[_0x15f9('0x7a')]===_0x15f9('0x33')){var _0x309571=_0x1342ae['get']({'plain':!![]});return db[_0x15f9('0x7b')]['find']({'where':{'name':_0x15f9('0x7c'),'userProfileId':_0x1ee856[_0x15f9('0x7d')]},'raw':!![]})[_0x15f9('0x11')](function(_0x8eefad){if(_0x8eefad&&_0x8eefad[_0x15f9('0x7e')]===0x0){return db[_0x15f9('0x7f')]['create']({'name':_0x309571[_0x15f9('0x29')],'resourceId':_0x309571['id'],'type':_0x8eefad[_0x15f9('0x29')],'sectionId':_0x8eefad['id']},{})[_0x15f9('0x11')](function(){return _0x1342ae;});}else{return _0x1342ae;}})[_0x15f9('0x1b')](function(_0x703a9a){logger[_0x15f9('0x17')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x703a9a);throw _0x703a9a;});}return _0x1342ae;})[_0x15f9('0x11')](respondWithResult(_0x17083d,0xc9))[_0x15f9('0x1b')](handleError(_0x17083d,null));};exports[_0x15f9('0x80')]=function(_0x3efa8e,_0x2400a1){return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x3efa8e[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x2400a1,null))['then'](function(_0x1a7356){if(_0x1a7356){return _0x1a7356['getImap']();}return null;})['then'](respondWithResult(_0x2400a1,null))[_0x15f9('0x1b')](handleError(_0x2400a1,null));};exports[_0x15f9('0x81')]=function(_0x31cfc2,_0x57400a){if(_0x31cfc2[_0x15f9('0x63')]['id']){delete _0x31cfc2[_0x15f9('0x63')]['id'];}return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x31cfc2[_0x15f9('0x5e')]['id']}})['then'](handleEntityNotFound(_0x57400a,null))[_0x15f9('0x11')](function(_0x4ced87){if(_0x4ced87){_0x31cfc2['body'][_0x15f9('0x69')]=_0x4ced87['id'];return db['MailServerIn'][_0x15f9('0x6b')](_0x31cfc2[_0x15f9('0x63')]);}})['then'](respondWithResult(_0x57400a,null))[_0x15f9('0x1b')](handleError(_0x57400a,null));};exports[_0x15f9('0x82')]=function(_0x5c7651,_0x3986bc){return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x5c7651[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x3986bc,null))[_0x15f9('0x11')](function(_0x22c1f8){if(_0x22c1f8){return _0x22c1f8[_0x15f9('0x83')](null);}return null;})[_0x15f9('0x11')](respondWithStatusCode(_0x3986bc,null))[_0x15f9('0x1b')](handleError(_0x3986bc,null));};exports[_0x15f9('0x84')]=function(_0x5abba6,_0x5c9680){return db[_0x15f9('0x58')]['findOne']({'where':{'id':_0x5abba6[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x5c9680,null))[_0x15f9('0x11')](function(_0xe0d975){if(_0xe0d975){return _0xe0d975[_0x15f9('0x84')]();}return null;})['then'](respondWithResult(_0x5c9680,null))[_0x15f9('0x1b')](handleError(_0x5c9680,null));};exports['addSmtp']=function(_0xf16d40,_0x6e1b6e){if(_0xf16d40[_0x15f9('0x63')]['id']){delete _0xf16d40[_0x15f9('0x63')]['id'];}return db[_0x15f9('0x58')]['find']({'where':{'id':_0xf16d40[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x6e1b6e,null))['then'](function(_0x4275e7){if(_0x4275e7){_0xf16d40[_0x15f9('0x63')][_0x15f9('0x69')]=_0x4275e7['id'];return db[_0x15f9('0x40')][_0x15f9('0x6b')](_0xf16d40['body']);}})[_0x15f9('0x11')](respondWithResult(_0x6e1b6e,null))[_0x15f9('0x1b')](handleError(_0x6e1b6e,null));};exports['removeSmtp']=function(_0x11a95c,_0x41d546){return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x11a95c['params']['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x41d546,null))['then'](function(_0x4ab1a9){if(_0x4ab1a9){return _0x4ab1a9[_0x15f9('0x85')](null);}return null;})[_0x15f9('0x11')](respondWithStatusCode(_0x41d546,null))[_0x15f9('0x1b')](handleError(_0x41d546,null));};exports[_0x15f9('0x86')]=function(_0x4a5b83,_0x274d06){return db['MailInteraction'][_0x15f9('0x62')]({'where':{'id':_0x4a5b83[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x274d06,null))[_0x15f9('0x11')](function(_0x38c68a){if(_0x38c68a){return _0x38c68a[_0x15f9('0x86')](_0x4a5b83[_0x15f9('0x63')][_0x15f9('0x6f')],_[_0x15f9('0x87')](_0x4a5b83['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x274d06,null))[_0x15f9('0x1b')](handleError(_0x274d06,null));};exports['getInteractions']=function(_0x19b065,_0x1361c7){var _0xe0117e={'raw':![],'where':{}};var _0x4aa00f={};var _0x5659f7={'count':0x0,'rows':[]};return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x19b065['params']['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x1361c7,null))['then'](function(_0x541ce2){if(_0x541ce2){_0x4aa00f[_0x15f9('0x47')]=_[_0x15f9('0x49')](db[_0x15f9('0x88')][_0x15f9('0x61')]);_0x4aa00f[_0x15f9('0x48')]=_[_0x15f9('0x49')](_0x19b065[_0x15f9('0x48')]);_0x4aa00f[_0x15f9('0x53')]=_[_0x15f9('0x4b')](_0x4aa00f[_0x15f9('0x47')],_0x4aa00f[_0x15f9('0x48')]);_0xe0117e[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0x4aa00f['model'],qs[_0x15f9('0x4c')](_0x19b065[_0x15f9('0x48')]['fields']));_0xe0117e[_0x15f9('0x4a')]=_0xe0117e[_0x15f9('0x4a')][_0x15f9('0x4d')]?_0xe0117e[_0x15f9('0x4a')]:_0x4aa00f['model'];if(!_0x19b065[_0x15f9('0x48')][_0x15f9('0x73')](_0x15f9('0x4e'))){_0xe0117e[_0x15f9('0x21')]=qs[_0x15f9('0x21')](_0x19b065[_0x15f9('0x48')][_0x15f9('0x21')]);_0xe0117e[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x19b065[_0x15f9('0x48')][_0x15f9('0x1f')]);}_0xe0117e[_0x15f9('0x4f')]=qs[_0x15f9('0x50')](_0x19b065[_0x15f9('0x48')][_0x15f9('0x50')]);_0xe0117e[_0x15f9('0x51')]=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x19b065[_0x15f9('0x48')],_0x4aa00f[_0x15f9('0x53')]));_0xe0117e['where']['MailAccountId']=_0x541ce2['id'];if(_0x19b065[_0x15f9('0x48')][_0x15f9('0x54')]){_0xe0117e[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0xe0117e[_0x15f9('0x51')],{'$or':_[_0x15f9('0x43')](_0xe0117e[_0x15f9('0x4a')],function(_0x3b074b){var _0x50f591={};_0x50f591[_0x3b074b]={'$like':'%'+_0x19b065[_0x15f9('0x48')][_0x15f9('0x54')]+'%'};return _0x50f591;})});}_0xe0117e=_[_0x15f9('0x55')]({},_0xe0117e,_0x19b065[_0x15f9('0x57')]);return db['MailInteraction'][_0x15f9('0x22')]({'where':_0xe0117e[_0x15f9('0x51')]})[_0x15f9('0x11')](function(_0x4ad76e){_0x5659f7[_0x15f9('0x22')]=_0x4ad76e;if(_0x19b065['query']['includeAll']){_0xe0117e[_0x15f9('0x5a')]=[{'model':db[_0x15f9('0x89')],'as':_0x15f9('0x8a'),'required':![]},{'model':db[_0x15f9('0x8b')],'as':'Owner','attributes':[_0x15f9('0x29'),_0x15f9('0x8c'),_0x15f9('0x8d')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x15f9('0x29'),_0x15f9('0x8e')],'where':_0x19b065[_0x15f9('0x48')]['tag']?{'id':_0x19b065[_0x15f9('0x48')][_0x15f9('0x8f')]}:undefined,'required':_0x19b065[_0x15f9('0x48')]['tag']?!![]:![]}];}return db[_0x15f9('0x88')]['findAll'](_0xe0117e);})['then'](function(_0x33691e){_0x5659f7[_0x15f9('0x5c')]=_0x33691e;return _0x5659f7;});}})[_0x15f9('0x11')](respondWithFilteredResult(_0x1361c7,_0xe0117e))[_0x15f9('0x1b')](handleError(_0x1361c7,null));};exports['addApplications']=function addApplications(_0x52ea47,_0x2aaabb){var _0x112815=_0x52ea47[_0x15f9('0x5e')]['id'];var _0x2a157a=_0x52ea47[_0x15f9('0x63')];var _0x1ef3e8=0xc8;var _0x8952cf=null;return db[_0x15f9('0x90')]['transaction']({'isolationLevel':db[_0x15f9('0x90')]['Transaction'][_0x15f9('0x91')]['READ_COMMITTED']},function(_0x4c3581){return db[_0x15f9('0x58')]['findOne']({'where':{'id':_0x112815},'transaction':_0x4c3581})[_0x15f9('0x11')](function(_0x554fa6){if(_0x554fa6){return db['MailApplication'][_0x15f9('0x26')]({'where':{'MailAccountId':_0x112815},'transaction':_0x4c3581})['then'](function(){var _0x1a4a56=_['map'](_0x2a157a,function(_0x349932){_0x349932['MailAccountId']=_0x112815;return _0x349932;});return db[_0x15f9('0x92')][_0x15f9('0x93')](_0x1a4a56,{'transaction':_0x4c3581});});}else{_0x1ef3e8=0x194;_0x8952cf=[];}});})[_0x15f9('0x11')](function(){if(_0x1ef3e8!==0x194){return db[_0x15f9('0x92')][_0x15f9('0x94')]({'where':{'MailAccountId':_0x112815},'order':_0x15f9('0x95')})['then'](function(_0x365eac){_0x8952cf=_0x365eac;});}})[_0x15f9('0x1b')](function(_0x6fe409){_0x1ef3e8=0x1f4;logger[_0x15f9('0x17')](_0x6fe409[_0x15f9('0x96')]);if(_0x6fe409[_0x15f9('0x29')]){delete _0x6fe409['name'];}_0x8952cf=_0x6fe409;})[_0x15f9('0x97')](function(){if(_0x8952cf===null){_0x2aaabb['sendStatus'](_0x1ef3e8);}else{if(_0x1ef3e8===0x1f4){_0x2aaabb[_0x15f9('0x1c')](_0x1ef3e8)[_0x15f9('0x2a')](_0x8952cf);}else{_0x2aaabb[_0x15f9('0x1c')](_0x1ef3e8)[_0x15f9('0x1e')](_0x8952cf);}}});};exports[_0x15f9('0x98')]=function(_0x2d6960,_0x134c4d){var _0x17ab10={};var _0x4af1c7={};var _0x985bd2;var _0x4a33d1;return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x2d6960['params']['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x134c4d,null))[_0x15f9('0x11')](function(_0x12fe78){if(_0x12fe78){_0x985bd2=_0x12fe78;_0x4af1c7[_0x15f9('0x47')]=_[_0x15f9('0x49')](db[_0x15f9('0x92')]['rawAttributes']);_0x4af1c7['query']=_['keys'](_0x2d6960['query']);_0x4af1c7[_0x15f9('0x53')]=_['intersection'](_0x4af1c7[_0x15f9('0x47')],_0x4af1c7['query']);_0x17ab10[_0x15f9('0x4a')]=_['intersection'](_0x4af1c7[_0x15f9('0x47')],qs[_0x15f9('0x4c')](_0x2d6960[_0x15f9('0x48')][_0x15f9('0x4c')]));_0x17ab10[_0x15f9('0x4a')]=_0x17ab10[_0x15f9('0x4a')][_0x15f9('0x4d')]?_0x17ab10[_0x15f9('0x4a')]:_0x4af1c7[_0x15f9('0x47')];_0x17ab10[_0x15f9('0x4f')]=qs['sort'](_0x2d6960[_0x15f9('0x48')][_0x15f9('0x50')]);_0x17ab10['where']=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x2d6960[_0x15f9('0x48')],_0x4af1c7['filters']));if(_0x2d6960[_0x15f9('0x48')][_0x15f9('0x54')]){_0x17ab10[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0x17ab10['where'],{'$or':_['map'](_0x17ab10['attributes'],function(_0x38b7ce){var _0xc00f53={};_0xc00f53[_0x38b7ce]={'$like':'%'+_0x2d6960['query']['filter']+'%'};return _0xc00f53;})});}_0x17ab10=_['merge']({},_0x17ab10,_0x2d6960[_0x15f9('0x57')]);return _0x985bd2[_0x15f9('0x98')](_0x17ab10);}})[_0x15f9('0x11')](function(_0x30ac59){if(_0x30ac59){_0x4a33d1=_0x30ac59[_0x15f9('0x4d')];if(!_0x2d6960[_0x15f9('0x48')][_0x15f9('0x73')](_0x15f9('0x4e'))){_0x17ab10['limit']=qs[_0x15f9('0x21')](_0x2d6960[_0x15f9('0x48')]['limit']);_0x17ab10[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x2d6960[_0x15f9('0x48')][_0x15f9('0x1f')]);}return _0x985bd2[_0x15f9('0x98')](_0x17ab10);}})['then'](function(_0x47e390){if(_0x47e390){return _0x47e390?{'count':_0x4a33d1,'rows':_0x47e390}:null;}})[_0x15f9('0x11')](respondWithResult(_0x134c4d,null))[_0x15f9('0x1b')](handleError(_0x134c4d,null));};exports['getMessages']=function(_0x1ee473,_0x18b7b3){var _0x1184c1={'raw':!![],'where':{}};var _0x2b756d={};var _0x3f5fb4={'count':0x0,'rows':[]};return db[_0x15f9('0x58')][_0x15f9('0x6d')]({'where':{'id':_0x1ee473[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x18b7b3,null))[_0x15f9('0x11')](function(_0x44f046){if(_0x44f046){_0x2b756d[_0x15f9('0x47')]=_[_0x15f9('0x49')](db[_0x15f9('0x99')][_0x15f9('0x61')]);_0x2b756d[_0x15f9('0x48')]=_['keys'](_0x1ee473['query']);_0x2b756d['filters']=_['intersection'](_0x2b756d[_0x15f9('0x47')],_0x2b756d[_0x15f9('0x48')]);_0x1184c1[_0x15f9('0x4a')]=_[_0x15f9('0x4b')](_0x2b756d[_0x15f9('0x47')],qs[_0x15f9('0x4c')](_0x1ee473[_0x15f9('0x48')][_0x15f9('0x4c')]));_0x1184c1[_0x15f9('0x4a')]=_0x1184c1[_0x15f9('0x4a')][_0x15f9('0x4d')]?_0x1184c1['attributes']:_0x2b756d[_0x15f9('0x47')];if(!_0x1ee473['query'][_0x15f9('0x73')](_0x15f9('0x4e'))){_0x1184c1['limit']=qs[_0x15f9('0x21')](_0x1ee473['query']['limit']);_0x1184c1[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x1ee473[_0x15f9('0x48')][_0x15f9('0x1f')]);}_0x1184c1['order']=qs[_0x15f9('0x50')](_0x1ee473[_0x15f9('0x48')]['sort']);_0x1184c1['where']=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x1ee473['query'],_0x2b756d['filters']));_0x1184c1['where']['MailAccountId']=_0x44f046['id'];if(_0x1ee473[_0x15f9('0x48')]['filter']){_0x1184c1[_0x15f9('0x51')]=_['merge'](_0x1184c1[_0x15f9('0x51')],{'$or':_[_0x15f9('0x43')](_0x1184c1[_0x15f9('0x4a')],function(_0x1e8c4a){var _0x4a18d8={};_0x4a18d8[_0x1e8c4a]={'$like':'%'+_0x1ee473['query'][_0x15f9('0x54')]+'%'};return _0x4a18d8;})});}if(_0x1ee473[_0x15f9('0x48')][_0x15f9('0x9a')]){var _0x3c4dc3=_0x1ee473[_0x15f9('0x48')]['$gte'][_0x15f9('0x9b')](',');var _0x59cd67={};_0x59cd67[_0x3c4dc3[0x0]]={'$gte':moment(_0x3c4dc3[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x1184c1['where']=_[_0x15f9('0x55')](_0x1184c1[_0x15f9('0x51')],_0x59cd67);}_0x1184c1=_[_0x15f9('0x55')]({},_0x1184c1,_0x1ee473[_0x15f9('0x57')]);return db['MailMessage'][_0x15f9('0x22')]({'where':_0x1184c1[_0x15f9('0x51')]})[_0x15f9('0x11')](function(_0x266948){_0x3f5fb4[_0x15f9('0x22')]=_0x266948;if(_0x1ee473[_0x15f9('0x48')]['includeAll']){_0x1184c1[_0x15f9('0x5a')]=[{'all':!![]}];}return db[_0x15f9('0x99')][_0x15f9('0x5b')](_0x1184c1);})[_0x15f9('0x11')](function(_0x6207f){if(_0x1ee473[_0x15f9('0x48')][_0x15f9('0x9c')]===_0x15f9('0x9d')){for(var _0x10c997=0x0;_0x10c997<_0x6207f['length'];_0x10c997++){_0x6207f[_0x10c997][_0x15f9('0x63')]=juice(_0x6207f[_0x10c997]['body']);}}_0x3f5fb4[_0x15f9('0x5c')]=_0x6207f;return _0x3f5fb4;});}})[_0x15f9('0x11')](respondWithFilteredResult(_0x18b7b3,_0x1184c1))[_0x15f9('0x1b')](handleError(_0x18b7b3,null));};exports[_0x15f9('0x2a')]=function(_0x20e40e,_0x2a6286){var _0x1da2dc,_0x4e7fc2={},_0x5ee37c;if(_0x20e40e['body']['to']){_0x5ee37c=_0x20e40e[_0x15f9('0x63')]['to'][_0x15f9('0x9b')](',')[0x0];}return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x20e40e[_0x15f9('0x5e')]['id']},'include':[{'model':db[_0x15f9('0x9e')],'as':_0x15f9('0x9f'),'include':[{'model':db[_0x15f9('0x89')],'as':_0x15f9('0xa0'),'where':{'email':_0x5ee37c},'limit':0x1,'order':[[_0x15f9('0xa1'),_0x15f9('0xa2')]]}]},{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})['then'](handleEntityNotFound(_0x2a6286,null))[_0x15f9('0x11')](function(_0x11032f){if(!_0x11032f)return;_0x1da2dc=_0x11032f;if(!_0x11032f[_0x15f9('0x3e')])throw new Error(_0x15f9('0xa3'));if(_[_0x15f9('0xa4')](_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa5')])){_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa5')]=util[_0x15f9('0xa6')](_0x15f9('0xa7'),_0x11032f[_0x15f9('0x29')],_0x11032f['email']||_0x11032f[_0x15f9('0x3e')][_0x15f9('0x33')]);}if(_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa8')]&&_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa8')][_0x15f9('0x4d')]){for(var _0x1ae57f=0x0;_0x1ae57f<_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa8')][_0x15f9('0x4d')];_0x1ae57f+=0x1){_0x20e40e[_0x15f9('0x63')][_0x15f9('0xa8')][_0x1ae57f]={'filename':_0x20e40e[_0x15f9('0x63')]['attachments'][_0x1ae57f][_0x15f9('0x29')],'path':path[_0x15f9('0xa9')](config['root'],_0x15f9('0xaa'),_0x20e40e['body'][_0x15f9('0xa8')][_0x1ae57f][_0x15f9('0xab')])};}}var _0x489549=_0x11032f[_0x15f9('0xac')]();return respondWithRpcPromise(_0x15f9('0xad'),_0x15f9('0xae'),{'account':_0x489549,'message':_0x20e40e[_0x15f9('0x63')]});})['then'](function(_0x331713){if(!_0x331713)return;_0x4e7fc2=_0x331713;if(!_0x1da2dc['List'])throw new Error('List\x20not\x20found');if(_0x1da2dc[_0x15f9('0x9f')][_0x15f9('0xa0')][_0x15f9('0x4d')])return _0x1da2dc[_0x15f9('0x9f')]['Contacts'][0x0];return db['CmContact'][_0x15f9('0x6b')](_['defaults'](_0x20e40e[_0x15f9('0x63')],{'firstName':_0x20e40e['body']['to'],'email':_0x20e40e['body']['to'],'phone':_0x20e40e[_0x15f9('0x63')]['to'],'ListId':_0x1da2dc[_0x15f9('0x76')]}));})['then'](function(_0x4ed076){if(!_0x4ed076)return;var _0x22a164={'UserId':_0x20e40e[_0x15f9('0x33')]['id'],'ContactId':_0x4ed076['id'],'MailAccountId':_0x1da2dc['id'],'inReplyTo':_0x4e7fc2[_0x15f9('0xaf')],'to':_0x20e40e[_0x15f9('0x63')]['from'],'cc':_0x20e40e['body']['cc'],'subject':_0x20e40e[_0x15f9('0x63')][_0x15f9('0xb0')],'attach':_0x20e40e[_0x15f9('0x63')][_0x15f9('0xb1')],'firstMsgDirection':_0x15f9('0xb2'),'lastMsgAt':moment()[_0x15f9('0xa6')](_0x15f9('0xb3')),'lastMsgDirection':'out','Messages':[_[_0x15f9('0x55')](_0x20e40e[_0x15f9('0x63')],{'messageId':_0x4e7fc2['messageId'],'sentAt':moment()[_0x15f9('0xa6')](_0x15f9('0xb3')),'read':!![],'MailAccountId':_0x1da2dc['id'],'UserId':_0x20e40e[_0x15f9('0x33')]['id'],'ContactId':_0x4ed076['id']})]};if(_0x20e40e[_0x15f9('0x63')][_0x15f9('0xb4')]){_0x22a164=_[_0x15f9('0x55')](_0x22a164,_0x20e40e[_0x15f9('0x63')][_0x15f9('0xb4')]);}return db['MailInteraction']['create'](_0x22a164,{'include':[{'model':db['MailMessage'],'as':_0x15f9('0xb5')}]});})[_0x15f9('0x11')](respondWithResult(_0x2a6286,null))[_0x15f9('0x1b')](handleError(_0x2a6286,null));};exports[_0x15f9('0xb6')]=function(_0x360a8d,_0x1776c8){return db['MailAccount'][_0x15f9('0x62')]({'where':{'id':_0x360a8d[_0x15f9('0x5e')]['id']},'include':[{'model':db[_0x15f9('0x40')],'as':_0x15f9('0x3e'),'raw':!![],'include':[{'model':db[_0x15f9('0xb7')],'as':'CloudProvider','raw':!![]}]}]})[_0x15f9('0x11')](handleEntityNotFound(_0x1776c8,null))[_0x15f9('0x11')](function(_0x130cb6){if(!_0x130cb6[_0x15f9('0x3e')])return;var _0x2a609d=_0x130cb6[_0x15f9('0xac')]();return respondWithRpcPromise('VerifySmtp',_0x15f9('0xb6'),{'account':_0x2a609d});})[_0x15f9('0x11')](respondWithResult(_0x1776c8,null))['catch'](handleError(_0x1776c8,null));};exports['destroy']=function(_0x430194,_0x2db105){return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x430194[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x2db105,null))[_0x15f9('0x11')](function(_0xc66e8f){if(_0xc66e8f&&_0xc66e8f[_0x15f9('0x3c')]){throw new db[(_0x15f9('0xb8'))][(_0x15f9('0xb9'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0xc66e8f;})[_0x15f9('0x11')](removeEntity(_0x2db105,null))[_0x15f9('0x1b')](handleError(_0x2db105,null));};exports[_0x15f9('0xba')]=function(_0x3a27c2,_0x3bcbd2){return db[_0x15f9('0x58')][_0x15f9('0x62')]({'where':{'id':_0x3a27c2['params']['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x3bcbd2,null))[_0x15f9('0x11')](function(_0x399c2a){if(_0x399c2a){return _0x399c2a[_0x15f9('0xba')](_0x3a27c2['body']['ids'],_['omit'](_0x3a27c2[_0x15f9('0x63')],[_0x15f9('0x6f'),'id'])||{})[_0x15f9('0xbb')](function(_0x2e0e37){for(var _0x3cceb8=0x0;_0x3cceb8<_0x3a27c2['body']['ids'][_0x15f9('0x4d')];_0x3cceb8+=0x1){socket[_0x15f9('0xbc')]('userMailAccount:save',{'UserId':Number(_0x3a27c2[_0x15f9('0x63')]['ids'][_0x3cceb8]),'MailAccountId':Number(_0x3a27c2[_0x15f9('0x5e')]['id'])});}return _0x2e0e37;});}})[_0x15f9('0x11')](respondWithResult(_0x3bcbd2,null))[_0x15f9('0x1b')](handleError(_0x3bcbd2,null));};exports[_0x15f9('0xbd')]=function(_0x248e40,_0x1f6f84){return db[_0x15f9('0x58')]['find']({'where':{'id':_0x248e40[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x1f6f84,null))[_0x15f9('0x11')](function(_0x2d2c83){if(_0x2d2c83){return _0x2d2c83[_0x15f9('0xbd')](_0x248e40[_0x15f9('0x48')]['ids'])[_0x15f9('0x11')](function(){if(_[_0x15f9('0xbe')](_0x248e40[_0x15f9('0x48')][_0x15f9('0x6f')])){for(var _0x42338a=0x0;_0x42338a<_0x248e40[_0x15f9('0x48')][_0x15f9('0x6f')]['length'];_0x42338a+=0x1){socket[_0x15f9('0xbc')](_0x15f9('0xbf'),{'UserId':Number(_0x248e40['query'][_0x15f9('0x6f')][_0x42338a]),'MailAccountId':Number(_0x248e40[_0x15f9('0x5e')]['id'])});}}else{socket[_0x15f9('0xbc')](_0x15f9('0xbf'),{'UserId':Number(_0x248e40[_0x15f9('0x48')][_0x15f9('0x6f')]),'MailAccountId':Number(_0x248e40['params']['id'])});}});}})[_0x15f9('0x11')](respondWithStatusCode(_0x1f6f84,null))[_0x15f9('0x1b')](handleError(_0x1f6f84,null));};exports[_0x15f9('0xc0')]=function(_0x6d74b3,_0x4c0ec3){var _0x5da80c={};var _0x216acc={};var _0x3a3829;var _0x402ee3;return db[_0x15f9('0x58')]['findOne']({'where':{'id':_0x6d74b3[_0x15f9('0x5e')]['id']}})[_0x15f9('0x11')](handleEntityNotFound(_0x4c0ec3,null))[_0x15f9('0x11')](function(_0x351d6e){if(_0x351d6e){_0x3a3829=_0x351d6e;_0x216acc[_0x15f9('0x47')]=_['keys'](db[_0x15f9('0x8b')]['rawAttributes']);_0x216acc['query']=_[_0x15f9('0x49')](_0x6d74b3['query']);_0x216acc['filters']=_[_0x15f9('0x4b')](_0x216acc[_0x15f9('0x47')],_0x216acc[_0x15f9('0x48')]);_0x5da80c[_0x15f9('0x4a')]=_['intersection'](_0x216acc[_0x15f9('0x47')],qs['fields'](_0x6d74b3[_0x15f9('0x48')]['fields']));_0x5da80c['attributes']=_0x5da80c['attributes'][_0x15f9('0x4d')]?_0x5da80c[_0x15f9('0x4a')]:_0x216acc[_0x15f9('0x47')];_0x5da80c[_0x15f9('0x4f')]=qs[_0x15f9('0x50')](_0x6d74b3[_0x15f9('0x48')][_0x15f9('0x50')]);_0x5da80c[_0x15f9('0x51')]=qs[_0x15f9('0x53')](_[_0x15f9('0x52')](_0x6d74b3['query'],_0x216acc[_0x15f9('0x53')]));if(_0x6d74b3[_0x15f9('0x48')]['filter']){_0x5da80c[_0x15f9('0x51')]=_[_0x15f9('0x55')](_0x5da80c[_0x15f9('0x51')],{'$or':_[_0x15f9('0x43')](_0x5da80c[_0x15f9('0x4a')],function(_0x2a595c){var _0x2cbfe1={};_0x2cbfe1[_0x2a595c]={'$like':'%'+_0x6d74b3[_0x15f9('0x48')][_0x15f9('0x54')]+'%'};return _0x2cbfe1;})});}_0x5da80c=_[_0x15f9('0x55')]({},_0x5da80c,_0x6d74b3[_0x15f9('0x57')]);return _0x3a3829['getAgents'](_0x5da80c);}})['then'](function(_0x4e8898){if(_0x4e8898){_0x402ee3=_0x4e8898[_0x15f9('0x4d')];if(!_0x6d74b3['query']['hasOwnProperty'](_0x15f9('0x4e'))){_0x5da80c['limit']=qs[_0x15f9('0x21')](_0x6d74b3[_0x15f9('0x48')][_0x15f9('0x21')]);_0x5da80c[_0x15f9('0x1f')]=qs[_0x15f9('0x1f')](_0x6d74b3[_0x15f9('0x48')][_0x15f9('0x1f')]);}return _0x3a3829['getAgents'](_0x5da80c);}})[_0x15f9('0x11')](function(_0x97415f){if(_0x97415f){return _0x97415f?{'count':_0x402ee3,'rows':_0x97415f}:null;}})[_0x15f9('0x11')](respondWithResult(_0x4c0ec3,null))[_0x15f9('0x1b')](handleError(_0x4c0ec3,null));};
\ No newline at end of file
+var _0xbdf9=['include','findAll','rows','show','params','Pause','find','body','provider','custom','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','create','getDispositions','findOne','Disposition','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','key','email','ListId','isNil','active','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','Contact','User','Owner','fullname','internal','Tag','tag','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','json','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','true','CmList','List','CmContact','Contacts','updatedAt','DESC','CloudProvider','from','%s\x20<%s>','attachments','root','server/files/attachments','getSmtpOptions','SendMail','List\x20not\x20found','defaults','attach','out','YYYY-MM-DD\x20HH:mm:ss','messageId','Interaction','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','removeAgents','isArray','userMailAccount:remove','getAgents','moment','util','path','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','update','destroy','get','UserProfileResource','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','user','Imap','Smtp','index','MailServerIn','MailServerOut','mandatoryDispositionPause','MailAccount','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll'];(function(_0x4dbf23,_0x2fbc5c){var _0x48ceb2=function(_0x28d0db){while(--_0x28d0db){_0x4dbf23['push'](_0x4dbf23['shift']());}};_0x48ceb2(++_0x2fbc5c);}(_0xbdf9,0x129));var _0x9bdf=function(_0x40f991,_0x576819){_0x40f991=_0x40f991-0x0;var _0x38eca2=_0xbdf9[_0x40f991];return _0x38eca2;};'use strict';var moment=require(_0x9bdf('0x0'));var BPromise=require('bluebird');var util=require(_0x9bdf('0x1'));var path=require(_0x9bdf('0x2'));var _=require('lodash');var juice=require('juice');var Redis=require(_0x9bdf('0x3'));var qs=require('../../components/parsers/qs');var logger=require(_0x9bdf('0x4'))(_0x9bdf('0x5'));var config=require(_0x9bdf('0x6'));var db=require(_0x9bdf('0x7'))['db'];config[_0x9bdf('0x8')]=_['defaults'](config[_0x9bdf('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9bdf('0x8')]));require(_0x9bdf('0x9'))[_0x9bdf('0xa')](socket);var jayson=require(_0x9bdf('0xb'));var client=jayson[_0x9bdf('0xc')][_0x9bdf('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x3f90cf,_0x54ef19,_0x14a4da,_0x289b9f){return new BPromise(function(_0x38d382,_0x14fbd0){var _0x1b0948=_0x289b9f||client;return _0x1b0948[_0x9bdf('0xe')](_0x3f90cf,_0x14a4da)[_0x9bdf('0xf')](function(_0x30c755){logger[_0x9bdf('0x10')](_0x9bdf('0x11'),_0x54ef19,_0x9bdf('0x12'));logger[_0x9bdf('0x13')](_0x9bdf('0x14'),_0x54ef19,_0x9bdf('0x12'),JSON[_0x9bdf('0x15')](_0x30c755));if(_0x30c755[_0x9bdf('0x16')]){if(_0x30c755[_0x9bdf('0x16')]['code']===0x1f4){logger[_0x9bdf('0x16')](_0x9bdf('0x11'),_0x54ef19,_0x30c755['error'][_0x9bdf('0x17')]);return _0x14fbd0(_0x30c755[_0x9bdf('0x16')][_0x9bdf('0x17')]);}logger[_0x9bdf('0x16')]('MailAccount,\x20%s,\x20%s',_0x54ef19,_0x30c755['error']['message']);return _0x38d382(_0x30c755['error'][_0x9bdf('0x17')]);}else{logger[_0x9bdf('0x10')]('MailAccount,\x20%s,\x20%s',_0x54ef19,'request\x20sent');_0x38d382(_0x30c755[_0x9bdf('0x18')][_0x9bdf('0x17')]);}})[_0x9bdf('0x19')](function(_0x11018d){logger[_0x9bdf('0x16')](_0x9bdf('0x11'),_0x54ef19,_0x11018d);_0x14fbd0(_0x11018d);});});}function respondWithStatusCode(_0x429af8,_0x2fea7f){_0x2fea7f=_0x2fea7f||0xcc;return function(_0x42a1fc){if(_0x42a1fc){return _0x429af8[_0x9bdf('0x1a')](_0x2fea7f);}return _0x429af8[_0x9bdf('0x1b')](_0x2fea7f)[_0x9bdf('0x1c')]();};}function respondWithResult(_0x50564b,_0x5b3e1d){_0x5b3e1d=_0x5b3e1d||0xc8;return function(_0x320ad1){if(_0x320ad1){return _0x50564b['status'](_0x5b3e1d)['json'](_0x320ad1);}};}function respondWithFilteredResult(_0x38280e,_0x426a56){return function(_0x43143a){if(_0x43143a){var _0x529660=typeof _0x426a56['offset']===_0x9bdf('0x1d')&&typeof _0x426a56[_0x9bdf('0x1e')]===_0x9bdf('0x1d');var _0x3eb900=_0x43143a['count'];var _0x12479e=_0x529660?0x0:_0x426a56['offset'];var _0x40aa01=_0x529660?_0x43143a[_0x9bdf('0x1f')]:_0x426a56[_0x9bdf('0x20')]+_0x426a56[_0x9bdf('0x1e')];var _0x2c7a7b;if(_0x40aa01>=_0x3eb900){_0x40aa01=_0x3eb900;_0x2c7a7b=0xc8;}else{_0x2c7a7b=0xce;}_0x38280e['status'](_0x2c7a7b);return _0x38280e[_0x9bdf('0x21')](_0x9bdf('0x22'),_0x12479e+'-'+_0x40aa01+'/'+_0x3eb900)['json'](_0x43143a);}return null;};}function saveUpdates(_0x24917b){return function(_0x182e2d){if(_0x182e2d){return _0x182e2d[_0x9bdf('0x23')](_0x24917b)[_0x9bdf('0xf')](function(_0x525e0f){return _0x525e0f;});}return null;};}function removeEntity(_0x5f3d55){return function(_0x1f296d){if(_0x1f296d){return _0x1f296d[_0x9bdf('0x24')]()[_0x9bdf('0xf')](function(){var _0x16e10e=_0x1f296d[_0x9bdf('0x25')]({'plain':!![]});var _0x5d7046='MailAccounts';return db[_0x9bdf('0x26')][_0x9bdf('0x24')]({'where':{'type':_0x5d7046,'resourceId':_0x16e10e['id']}})[_0x9bdf('0xf')](function(){return _0x1f296d;});})['then'](function(){_0x5f3d55[_0x9bdf('0x1b')](0xcc)[_0x9bdf('0x1c')]();});}};}function handleEntityNotFound(_0x6a739e){return function(_0x307409){if(!_0x307409){_0x6a739e[_0x9bdf('0x1a')](0x194);}return _0x307409;};}function handleError(_0x3df77d,_0x478aaa){_0x478aaa=_0x478aaa||0x1f4;return function(_0x5450dd){logger[_0x9bdf('0x16')](_0x5450dd[_0x9bdf('0x27')]);if(_0x5450dd[_0x9bdf('0x28')]){delete _0x5450dd['name'];}_0x3df77d[_0x9bdf('0x1b')](_0x478aaa)[_0x9bdf('0x29')](_0x5450dd);};}function getImapHost(_0x2f246c){switch(_0x2f246c){case _0x9bdf('0x2a'):return _0x9bdf('0x2b');case _0x9bdf('0x2c'):return _0x9bdf('0x2d');case _0x9bdf('0x2e'):return'imap-mail.outlook.com';case _0x9bdf('0x2f'):return _0x9bdf('0x30');}throw new Error('Unknown\x20email\x20service\x20provider',_0x2f246c);}function getSmtpHost(_0x36b441){switch(_0x36b441){case _0x9bdf('0x2a'):return _0x9bdf('0x31');case'yahoo':return _0x9bdf('0x32');case _0x9bdf('0x2e'):return _0x9bdf('0x33');case'outlook365':return _0x9bdf('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x36b441);}function getAuthenticationOptions(_0x4ea1d8,_0x135bae){var _0x1a328b={};var _0x9cb235={};if(_0x4ea1d8){_0x1a328b['user']=_0x9cb235['user']=_0x135bae[_0x9bdf('0x35')];_0x1a328b[_0x9bdf('0x36')]=_0x9cb235[_0x9bdf('0x37')]=_0x135bae[_0x9bdf('0x36')];if(_0x135bae[_0x9bdf('0x38')]){_0x1a328b[_0x9bdf('0x38')]=_0x9cb235['modernAuthentication']=!![];_0x1a328b[_0x9bdf('0x39')]=_0x9cb235[_0x9bdf('0x39')]=_0x135bae[_0x9bdf('0x39')];_0x1a328b[_0x9bdf('0x36')]=_0x9cb235[_0x9bdf('0x37')]=null;}else{_0x1a328b[_0x9bdf('0x39')]=_0x9cb235['CloudProviderId']=null;}_0x1a328b['host']=getImapHost(_0x4ea1d8);_0x1a328b[_0x9bdf('0x3a')]=0x3e1;_0x9cb235[_0x9bdf('0x3b')]=getSmtpHost(_0x4ea1d8);_0x9cb235[_0x9bdf('0x3a')]=0x24b;_0x9cb235[_0x9bdf('0x3c')]=![];_0x1a328b['service']=_0x9cb235[_0x9bdf('0x3d')]=null;}else{if(_0x135bae[_0x9bdf('0x3e')]){_0x1a328b[_0x9bdf('0x3f')]=_0x9cb235[_0x9bdf('0x3f')]=_0x135bae['username'];_0x1a328b[_0x9bdf('0x36')]=_0x9cb235[_0x9bdf('0x37')]=_0x135bae[_0x9bdf('0x36')];}else{_0x1a328b[_0x9bdf('0x3e')]=_0x9cb235[_0x9bdf('0x3e')]=![];_0x1a328b[_0x9bdf('0x3f')]=_0x9cb235[_0x9bdf('0x3f')]=null;_0x1a328b[_0x9bdf('0x36')]=_0x9cb235[_0x9bdf('0x37')]=null;}_0x1a328b[_0x9bdf('0x3b')]=_0x135bae['Imap']['host'];_0x1a328b['port']=_0x135bae[_0x9bdf('0x40')][_0x9bdf('0x3a')];_0x9cb235[_0x9bdf('0x3b')]=_0x135bae[_0x9bdf('0x41')][_0x9bdf('0x3b')];_0x9cb235[_0x9bdf('0x3a')]=_0x135bae[_0x9bdf('0x41')][_0x9bdf('0x3a')];}return{'Imap':_0x1a328b,'Smtp':_0x9cb235};}exports[_0x9bdf('0x42')]=function(_0x365714,_0x9c41f6){var _0x387101={'include':[{'model':db[_0x9bdf('0x43')],'as':_0x9bdf('0x40')},{'model':db[_0x9bdf('0x44')],'as':'Smtp'},{'model':db['Pause'],'as':_0x9bdf('0x45')}]},_0x258297={},_0x3bc84e={'count':0x0,'rows':[]};var _0x40c9ee=_['map'](db[_0x9bdf('0x46')][_0x9bdf('0x47')],function(_0x21c842){return{'name':_0x21c842[_0x9bdf('0x48')],'type':_0x21c842[_0x9bdf('0x49')]['key']};});_0x258297[_0x9bdf('0x4a')]=_[_0x9bdf('0x4b')](_0x40c9ee,_0x9bdf('0x28'));_0x258297[_0x9bdf('0x4c')]=_[_0x9bdf('0x4d')](_0x365714[_0x9bdf('0x4c')]);_0x258297[_0x9bdf('0x4e')]=_[_0x9bdf('0x4f')](_0x258297[_0x9bdf('0x4a')],_0x258297[_0x9bdf('0x4c')]);_0x387101[_0x9bdf('0x50')]=_[_0x9bdf('0x4f')](_0x258297[_0x9bdf('0x4a')],qs['fields'](_0x365714['query'][_0x9bdf('0x51')]));_0x387101[_0x9bdf('0x50')]=_0x387101[_0x9bdf('0x50')][_0x9bdf('0x52')]?_0x387101['attributes']:_0x258297[_0x9bdf('0x4a')];if(!_0x365714['query'][_0x9bdf('0x53')](_0x9bdf('0x54'))){_0x387101[_0x9bdf('0x1e')]=qs['limit'](_0x365714[_0x9bdf('0x4c')]['limit']);_0x387101[_0x9bdf('0x20')]=qs[_0x9bdf('0x20')](_0x365714[_0x9bdf('0x4c')][_0x9bdf('0x20')]);}_0x387101[_0x9bdf('0x55')]=qs[_0x9bdf('0x56')](_0x365714['query'][_0x9bdf('0x56')]);_0x387101[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x365714['query'],_0x258297[_0x9bdf('0x4e')]),_0x40c9ee);if(_0x365714['query']['filter']){_0x387101[_0x9bdf('0x57')]=_['merge'](_0x387101['where'],{'$or':_['map'](_0x40c9ee,function(_0xc36c31){if(_0xc36c31['type']!=='VIRTUAL'){var _0x493ff5={};_0x493ff5[_0xc36c31['name']]={'$like':'%'+_0x365714['query'][_0x9bdf('0x59')]+'%'};return _0x493ff5;}})});}_0x387101=_[_0x9bdf('0x5a')]({},_0x387101,_0x365714[_0x9bdf('0x5b')]);var _0x21f5b5={'where':_0x387101['where']};return db[_0x9bdf('0x46')][_0x9bdf('0x1f')](_0x21f5b5)[_0x9bdf('0xf')](function(_0x1e2d2a){_0x3bc84e['count']=_0x1e2d2a;if(_0x365714['query'][_0x9bdf('0x5c')]){_0x387101[_0x9bdf('0x5d')]=[{'all':!![]}];}return db['MailAccount'][_0x9bdf('0x5e')](_0x387101);})[_0x9bdf('0xf')](function(_0x15c2ee){_0x3bc84e[_0x9bdf('0x5f')]=_0x15c2ee;return _0x3bc84e;})[_0x9bdf('0xf')](respondWithFilteredResult(_0x9c41f6,_0x387101))[_0x9bdf('0x19')](handleError(_0x9c41f6,null));};exports[_0x9bdf('0x60')]=function(_0xf4945a,_0x19117d){var _0x232e0b={'raw':![],'where':{'id':_0xf4945a[_0x9bdf('0x61')]['id']},'include':[{'model':db[_0x9bdf('0x43')],'as':_0x9bdf('0x40')},{'model':db[_0x9bdf('0x44')],'as':'Smtp'},{'model':db[_0x9bdf('0x62')],'as':'mandatoryDispositionPause'}]},_0x1f003c={};_0x1f003c[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db[_0x9bdf('0x46')][_0x9bdf('0x47')]);_0x1f003c[_0x9bdf('0x4c')]=_[_0x9bdf('0x4d')](_0xf4945a[_0x9bdf('0x4c')]);_0x1f003c['filters']=_[_0x9bdf('0x4f')](_0x1f003c[_0x9bdf('0x4a')],_0x1f003c['query']);_0x232e0b[_0x9bdf('0x50')]=_[_0x9bdf('0x4f')](_0x1f003c[_0x9bdf('0x4a')],qs[_0x9bdf('0x51')](_0xf4945a['query'][_0x9bdf('0x51')]));_0x232e0b[_0x9bdf('0x50')]=_0x232e0b['attributes'][_0x9bdf('0x52')]?_0x232e0b['attributes']:_0x1f003c[_0x9bdf('0x4a')];if(_0xf4945a['query']['includeAll']){_0x232e0b[_0x9bdf('0x5d')]=[{'all':!![]}];}_0x232e0b=_[_0x9bdf('0x5a')]({},_0x232e0b,_0xf4945a['options']);return db[_0x9bdf('0x46')][_0x9bdf('0x63')](_0x232e0b)['then'](handleEntityNotFound(_0x19117d,null))[_0x9bdf('0xf')](respondWithResult(_0x19117d,null))[_0x9bdf('0x19')](handleError(_0x19117d,null));};exports[_0x9bdf('0x23')]=function(_0x199a40,_0x12ed56){if(_0x199a40[_0x9bdf('0x64')]['id']){delete _0x199a40[_0x9bdf('0x64')]['id'];}var _0x2b4d70=_0x199a40[_0x9bdf('0x64')][_0x9bdf('0x65')]===_0x9bdf('0x66')?null:_0x199a40['body'][_0x9bdf('0x65')];var _0x44a977=_0x199a40[_0x9bdf('0x64')][_0x9bdf('0x40')]||{};var _0x4022e6=_0x199a40['body'][_0x9bdf('0x41')]||{};if(_0x2b4d70){_0x44a977['host']=getImapHost(_0x2b4d70);_0x44a977[_0x9bdf('0x3a')]=0x3e1;_0x4022e6[_0x9bdf('0x3b')]=getSmtpHost(_0x2b4d70);_0x4022e6['port']=0x24b;_0x4022e6[_0x9bdf('0x3c')]=![];}if(_0x4022e6[_0x9bdf('0x38')]){_0x4022e6[_0x9bdf('0x3c')]=![];}else{_0x4022e6[_0x9bdf('0x39')]=null;}if(!_0x44a977[_0x9bdf('0x38')])_0x44a977[_0x9bdf('0x39')]=null;_0x199a40[_0x9bdf('0x64')]['Imap']=_0x44a977;_0x199a40[_0x9bdf('0x64')]['Smtp']=_0x4022e6;return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x199a40[_0x9bdf('0x61')]['id']},'include':[{'model':db[_0x9bdf('0x43')],'as':'Imap'},{'model':db[_0x9bdf('0x44')],'as':_0x9bdf('0x41')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x9bdf('0xf')](handleEntityNotFound(_0x12ed56,null))[_0x9bdf('0xf')](function(_0x4038b8){if(!_0x4038b8)throw new Error(_0x9bdf('0x67'));if(_0x4038b8[_0x9bdf('0x3d')])delete _0x199a40['body'][_0x9bdf('0x40')];return _0x4038b8;})[_0x9bdf('0xf')](saveUpdates(_0x199a40[_0x9bdf('0x64')],null))[_0x9bdf('0xf')](function(_0x345393){if(!_0x199a40[_0x9bdf('0x64')]['Imap'])return _0x345393;return db['MailServerIn'][_0x9bdf('0x23')](_0x199a40[_0x9bdf('0x64')][_0x9bdf('0x40')],{'where':{'MailAccountId':_0x345393['id']}})['then'](function(){return _0x345393;});})[_0x9bdf('0xf')](function(_0x3047da){if(!_0x199a40['body'][_0x9bdf('0x41')])return _0x3047da;return db[_0x9bdf('0x44')]['update'](_0x199a40[_0x9bdf('0x64')][_0x9bdf('0x41')],{'where':{'MailAccountId':_0x3047da['id']}})[_0x9bdf('0xf')](function(){return _0x3047da;});})[_0x9bdf('0xf')](respondWithResult(_0x12ed56,null))[_0x9bdf('0x19')](handleError(_0x12ed56,null));};exports[_0x9bdf('0x68')]=function(_0x1cc3f5,_0x1256d5){return db[_0x9bdf('0x46')][_0x9bdf('0x68')]()[_0x9bdf('0xf')](respondWithResult(_0x1256d5,null))[_0x9bdf('0x19')](handleError(_0x1256d5,null));};exports[_0x9bdf('0x69')]=function(_0x446bcb,_0x1d2655){if(_0x446bcb[_0x9bdf('0x64')]['id']){delete _0x446bcb[_0x9bdf('0x64')]['id'];}return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x446bcb[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x1d2655,null))[_0x9bdf('0xf')](function(_0x133cfa){if(_0x133cfa){_0x446bcb['body'][_0x9bdf('0x6a')]=_0x133cfa['id'];return db['Disposition'][_0x9bdf('0x6b')](_0x446bcb[_0x9bdf('0x64')]);}})[_0x9bdf('0xf')](respondWithResult(_0x1d2655,null))[_0x9bdf('0x19')](handleError(_0x1d2655,null));};exports[_0x9bdf('0x6c')]=function(_0x2c674c,_0x2e7337){var _0x31bbfd={'raw':![],'where':{}};var _0x14fa4e={};var _0x57944b={'count':0x0,'rows':[]};return db['MailAccount'][_0x9bdf('0x6d')]({'where':{'id':_0x2c674c[_0x9bdf('0x61')]['id']}})['then'](handleEntityNotFound(_0x2e7337,null))[_0x9bdf('0xf')](function(_0x1e26d2){if(_0x1e26d2){_0x14fa4e[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db[_0x9bdf('0x6e')][_0x9bdf('0x47')]);_0x14fa4e[_0x9bdf('0x4c')]=_[_0x9bdf('0x4d')](_0x2c674c[_0x9bdf('0x4c')]);_0x14fa4e['filters']=_['intersection'](_0x14fa4e[_0x9bdf('0x4a')],_0x14fa4e[_0x9bdf('0x4c')]);_0x31bbfd[_0x9bdf('0x50')]=_['intersection'](_0x14fa4e['model'],qs['fields'](_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x51')]));_0x31bbfd[_0x9bdf('0x50')]=_0x31bbfd['attributes'][_0x9bdf('0x52')]?_0x31bbfd[_0x9bdf('0x50')]:_0x14fa4e[_0x9bdf('0x4a')];if(!_0x2c674c[_0x9bdf('0x4c')]['hasOwnProperty'](_0x9bdf('0x54'))){_0x31bbfd['limit']=qs[_0x9bdf('0x1e')](_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x1e')]);_0x31bbfd[_0x9bdf('0x20')]=qs[_0x9bdf('0x20')](_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x20')]);}_0x31bbfd['order']=qs['sort'](_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x56')]);_0x31bbfd[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x2c674c[_0x9bdf('0x4c')],_0x14fa4e[_0x9bdf('0x4e')]));_0x31bbfd['where']['MailAccountId']=_0x1e26d2['id'];if(_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x59')]){_0x31bbfd[_0x9bdf('0x57')]=_['merge'](_0x31bbfd[_0x9bdf('0x57')],{'$or':_[_0x9bdf('0x4b')](_0x31bbfd['attributes'],function(_0x447a2a){var _0x87adc5={};_0x87adc5[_0x447a2a]={'$like':'%'+_0x2c674c['query'][_0x9bdf('0x59')]+'%'};return _0x87adc5;})});}_0x31bbfd=_[_0x9bdf('0x5a')]({},_0x31bbfd,_0x2c674c[_0x9bdf('0x5b')]);return db[_0x9bdf('0x6e')][_0x9bdf('0x1f')]({'where':_0x31bbfd[_0x9bdf('0x57')]})['then'](function(_0x57c416){_0x57944b[_0x9bdf('0x1f')]=_0x57c416;if(_0x2c674c[_0x9bdf('0x4c')][_0x9bdf('0x5c')]){_0x31bbfd[_0x9bdf('0x5d')]=[{'all':!![]}];}return db[_0x9bdf('0x6e')][_0x9bdf('0x5e')](_0x31bbfd);})[_0x9bdf('0xf')](function(_0x25cf3f){_0x57944b['rows']=_0x25cf3f;return _0x57944b;});}})[_0x9bdf('0xf')](respondWithFilteredResult(_0x2e7337,_0x31bbfd))['catch'](handleError(_0x2e7337,null));};exports['removeDispositions']=function(_0x2015e7,_0x2f4b9d){return db[_0x9bdf('0x46')]['find']({'where':{'id':_0x2015e7[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x2f4b9d,null))['then'](function(_0x3226c7){if(_0x3226c7){return _0x3226c7[_0x9bdf('0x6f')](_0x2015e7[_0x9bdf('0x4c')][_0x9bdf('0x70')]);}})[_0x9bdf('0xf')](respondWithStatusCode(_0x2f4b9d,null))['catch'](handleError(_0x2f4b9d,null));};exports['addAnswer']=function(_0x3a216c,_0x3d6ac9){if(_0x3a216c[_0x9bdf('0x64')]['id']){delete _0x3a216c['body']['id'];}return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x3a216c[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x3d6ac9,null))['then'](function(_0x1cb492){if(_0x1cb492){_0x3a216c[_0x9bdf('0x64')][_0x9bdf('0x6a')]=_0x1cb492['id'];return db[_0x9bdf('0x71')][_0x9bdf('0x6b')](_0x3a216c['body']);}})[_0x9bdf('0xf')](respondWithResult(_0x3d6ac9,null))[_0x9bdf('0x19')](handleError(_0x3d6ac9,null));};exports[_0x9bdf('0x72')]=function(_0x34ba08,_0xfd7296){var _0x5a0445={'raw':![],'where':{}};var _0x659b20={};var _0x31b52d={'count':0x0,'rows':[]};return db[_0x9bdf('0x46')]['findOne']({'where':{'id':_0x34ba08[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0xfd7296,null))[_0x9bdf('0xf')](function(_0x2b71c7){if(_0x2b71c7){_0x659b20['model']=_['keys'](db[_0x9bdf('0x71')]['rawAttributes']);_0x659b20[_0x9bdf('0x4c')]=_[_0x9bdf('0x4d')](_0x34ba08[_0x9bdf('0x4c')]);_0x659b20[_0x9bdf('0x4e')]=_[_0x9bdf('0x4f')](_0x659b20[_0x9bdf('0x4a')],_0x659b20[_0x9bdf('0x4c')]);_0x5a0445[_0x9bdf('0x50')]=_[_0x9bdf('0x4f')](_0x659b20[_0x9bdf('0x4a')],qs['fields'](_0x34ba08[_0x9bdf('0x4c')][_0x9bdf('0x51')]));_0x5a0445[_0x9bdf('0x50')]=_0x5a0445[_0x9bdf('0x50')][_0x9bdf('0x52')]?_0x5a0445[_0x9bdf('0x50')]:_0x659b20['model'];if(!_0x34ba08[_0x9bdf('0x4c')][_0x9bdf('0x53')](_0x9bdf('0x54'))){_0x5a0445[_0x9bdf('0x1e')]=qs[_0x9bdf('0x1e')](_0x34ba08[_0x9bdf('0x4c')]['limit']);_0x5a0445['offset']=qs[_0x9bdf('0x20')](_0x34ba08[_0x9bdf('0x4c')][_0x9bdf('0x20')]);}_0x5a0445['order']=qs['sort'](_0x34ba08['query']['sort']);_0x5a0445[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x34ba08[_0x9bdf('0x4c')],_0x659b20[_0x9bdf('0x4e')]));_0x5a0445[_0x9bdf('0x57')][_0x9bdf('0x6a')]=_0x2b71c7['id'];if(_0x34ba08['query'][_0x9bdf('0x59')]){_0x5a0445[_0x9bdf('0x57')]=_[_0x9bdf('0x5a')](_0x5a0445[_0x9bdf('0x57')],{'$or':_[_0x9bdf('0x4b')](_0x5a0445['attributes'],function(_0x188e6c){var _0x502402={};_0x502402[_0x188e6c]={'$like':'%'+_0x34ba08[_0x9bdf('0x4c')]['filter']+'%'};return _0x502402;})});}_0x5a0445=_[_0x9bdf('0x5a')]({},_0x5a0445,_0x34ba08[_0x9bdf('0x5b')]);return db[_0x9bdf('0x71')]['count']({'where':_0x5a0445[_0x9bdf('0x57')]})[_0x9bdf('0xf')](function(_0x116cad){_0x31b52d[_0x9bdf('0x1f')]=_0x116cad;if(_0x34ba08[_0x9bdf('0x4c')][_0x9bdf('0x5c')]){_0x5a0445[_0x9bdf('0x5d')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x5a0445);})[_0x9bdf('0xf')](function(_0x43dd11){_0x31b52d['rows']=_0x43dd11;return _0x31b52d;});}})[_0x9bdf('0xf')](respondWithFilteredResult(_0xfd7296,_0x5a0445))['catch'](handleError(_0xfd7296,null));};exports[_0x9bdf('0x73')]=function(_0x24d0e3,_0x26802a){return db['MailAccount'][_0x9bdf('0x63')]({'where':{'id':_0x24d0e3[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x26802a,null))[_0x9bdf('0xf')](function(_0x18a8db){if(_0x18a8db){return _0x18a8db[_0x9bdf('0x73')](_0x24d0e3[_0x9bdf('0x4c')][_0x9bdf('0x70')]);}})['then'](respondWithStatusCode(_0x26802a,null))[_0x9bdf('0x19')](handleError(_0x26802a,null));};exports[_0x9bdf('0x6b')]=function(_0x4d47ea,_0x32a7e2){var _0x4a13bd={'name':_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x28')],'key':_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x74')],'provider':_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x65')]===_0x9bdf('0x66')?null:_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x65')],'email':_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x75')],'ListId':_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x76')],'active':!_[_0x9bdf('0x77')](_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x78')])?_0x4d47ea[_0x9bdf('0x64')][_0x9bdf('0x78')]:!![],'description':_0x4d47ea['body']['description']||null};var _0x4fe2d2=getAuthenticationOptions(_0x4a13bd[_0x9bdf('0x65')],_0x4d47ea[_0x9bdf('0x64')]);_0x4a13bd[_0x9bdf('0x40')]=_0x4fe2d2[_0x9bdf('0x40')];_0x4a13bd['Smtp']=_0x4fe2d2[_0x9bdf('0x41')];return db['MailAccount']['create'](_0x4a13bd,{'include':[{'model':db[_0x9bdf('0x44')],'as':_0x9bdf('0x41')},{'model':db[_0x9bdf('0x43')],'as':_0x9bdf('0x40')}]})[_0x9bdf('0xf')](function(_0x3d588e){var _0x902dd8=_0x4d47ea['user'][_0x9bdf('0x25')]({'plain':!![]});if(!_0x902dd8)throw new Error(_0x9bdf('0x79'));if(_0x902dd8[_0x9bdf('0x7a')]===_0x9bdf('0x3f')){var _0x33ec12=_0x3d588e[_0x9bdf('0x25')]({'plain':!![]});return db[_0x9bdf('0x7b')][_0x9bdf('0x63')]({'where':{'name':_0x9bdf('0x7c'),'userProfileId':_0x902dd8[_0x9bdf('0x7d')]},'raw':!![]})[_0x9bdf('0xf')](function(_0x239bc1){if(_0x239bc1&&_0x239bc1[_0x9bdf('0x7e')]===0x0){return db[_0x9bdf('0x26')]['create']({'name':_0x33ec12[_0x9bdf('0x28')],'resourceId':_0x33ec12['id'],'type':_0x239bc1['name'],'sectionId':_0x239bc1['id']},{})[_0x9bdf('0xf')](function(){return _0x3d588e;});}else{return _0x3d588e;}})[_0x9bdf('0x19')](function(_0x16977a){logger[_0x9bdf('0x16')](_0x9bdf('0x7f'),_0x16977a);throw _0x16977a;});}return _0x3d588e;})['then'](respondWithResult(_0x32a7e2,0xc9))[_0x9bdf('0x19')](handleError(_0x32a7e2,null));};exports[_0x9bdf('0x80')]=function(_0x46cec0,_0x7a22d1){return db['MailAccount']['findOne']({'where':{'id':_0x46cec0[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x7a22d1,null))[_0x9bdf('0xf')](function(_0xc2b73f){if(_0xc2b73f){return _0xc2b73f['getImap']();}return null;})[_0x9bdf('0xf')](respondWithResult(_0x7a22d1,null))[_0x9bdf('0x19')](handleError(_0x7a22d1,null));};exports[_0x9bdf('0x81')]=function(_0x201d14,_0x3b5332){if(_0x201d14[_0x9bdf('0x64')]['id']){delete _0x201d14['body']['id'];}return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x201d14['params']['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x3b5332,null))[_0x9bdf('0xf')](function(_0x1ca4fa){if(_0x1ca4fa){_0x201d14['body'][_0x9bdf('0x6a')]=_0x1ca4fa['id'];return db['MailServerIn'][_0x9bdf('0x6b')](_0x201d14['body']);}})[_0x9bdf('0xf')](respondWithResult(_0x3b5332,null))[_0x9bdf('0x19')](handleError(_0x3b5332,null));};exports[_0x9bdf('0x82')]=function(_0x2c8964,_0xcbb124){return db['MailAccount']['findOne']({'where':{'id':_0x2c8964['params']['id']}})['then'](handleEntityNotFound(_0xcbb124,null))['then'](function(_0x4feee3){if(_0x4feee3){return _0x4feee3[_0x9bdf('0x83')](null);}return null;})[_0x9bdf('0xf')](respondWithStatusCode(_0xcbb124,null))[_0x9bdf('0x19')](handleError(_0xcbb124,null));};exports[_0x9bdf('0x84')]=function(_0x16e2dd,_0x3b02e3){return db[_0x9bdf('0x46')]['findOne']({'where':{'id':_0x16e2dd[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x3b02e3,null))[_0x9bdf('0xf')](function(_0x4e065c){if(_0x4e065c){return _0x4e065c[_0x9bdf('0x84')]();}return null;})[_0x9bdf('0xf')](respondWithResult(_0x3b02e3,null))[_0x9bdf('0x19')](handleError(_0x3b02e3,null));};exports['addSmtp']=function(_0x58a6c5,_0x6949b9){if(_0x58a6c5['body']['id']){delete _0x58a6c5['body']['id'];}return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x58a6c5[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x6949b9,null))[_0x9bdf('0xf')](function(_0x2216bb){if(_0x2216bb){_0x58a6c5[_0x9bdf('0x64')][_0x9bdf('0x6a')]=_0x2216bb['id'];return db[_0x9bdf('0x44')][_0x9bdf('0x6b')](_0x58a6c5[_0x9bdf('0x64')]);}})['then'](respondWithResult(_0x6949b9,null))[_0x9bdf('0x19')](handleError(_0x6949b9,null));};exports[_0x9bdf('0x85')]=function(_0x42640a,_0x2a60f8){return db[_0x9bdf('0x46')][_0x9bdf('0x6d')]({'where':{'id':_0x42640a[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x2a60f8,null))[_0x9bdf('0xf')](function(_0x52da67){if(_0x52da67){return _0x52da67[_0x9bdf('0x86')](null);}return null;})['then'](respondWithStatusCode(_0x2a60f8,null))[_0x9bdf('0x19')](handleError(_0x2a60f8,null));};exports[_0x9bdf('0x87')]=function(_0x4d760f,_0x34c827){return db[_0x9bdf('0x88')][_0x9bdf('0x63')]({'where':{'id':_0x4d760f['params']['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x34c827,null))[_0x9bdf('0xf')](function(_0x30a1b1){if(_0x30a1b1){return _0x30a1b1[_0x9bdf('0x87')](_0x4d760f[_0x9bdf('0x64')][_0x9bdf('0x70')],_[_0x9bdf('0x89')](_0x4d760f[_0x9bdf('0x64')],[_0x9bdf('0x70'),'id'])||{});}})[_0x9bdf('0xf')](respondWithResult(_0x34c827,null))[_0x9bdf('0x19')](handleError(_0x34c827,null));};exports[_0x9bdf('0x8a')]=function(_0x3a7bac,_0x5aded2){var _0x2883ae={'raw':![],'where':{}};var _0x42683e={};var _0xbec54c={'count':0x0,'rows':[]};return db[_0x9bdf('0x46')]['findOne']({'where':{'id':_0x3a7bac[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x5aded2,null))['then'](function(_0x2be21d){if(_0x2be21d){_0x42683e[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db['MailInteraction']['rawAttributes']);_0x42683e[_0x9bdf('0x4c')]=_['keys'](_0x3a7bac[_0x9bdf('0x4c')]);_0x42683e[_0x9bdf('0x4e')]=_['intersection'](_0x42683e['model'],_0x42683e['query']);_0x2883ae['attributes']=_[_0x9bdf('0x4f')](_0x42683e[_0x9bdf('0x4a')],qs['fields'](_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x51')]));_0x2883ae['attributes']=_0x2883ae[_0x9bdf('0x50')][_0x9bdf('0x52')]?_0x2883ae[_0x9bdf('0x50')]:_0x42683e['model'];if(!_0x3a7bac[_0x9bdf('0x4c')]['hasOwnProperty'](_0x9bdf('0x54'))){_0x2883ae[_0x9bdf('0x1e')]=qs[_0x9bdf('0x1e')](_0x3a7bac[_0x9bdf('0x4c')]['limit']);_0x2883ae[_0x9bdf('0x20')]=qs[_0x9bdf('0x20')](_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x20')]);}_0x2883ae[_0x9bdf('0x55')]=qs['sort'](_0x3a7bac[_0x9bdf('0x4c')]['sort']);_0x2883ae[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x3a7bac['query'],_0x42683e[_0x9bdf('0x4e')]));_0x2883ae[_0x9bdf('0x57')][_0x9bdf('0x6a')]=_0x2be21d['id'];if(_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x59')]){_0x2883ae[_0x9bdf('0x57')]=_[_0x9bdf('0x5a')](_0x2883ae[_0x9bdf('0x57')],{'$or':_[_0x9bdf('0x4b')](_0x2883ae[_0x9bdf('0x50')],function(_0x5a1fb4){var _0x562394={};_0x562394[_0x5a1fb4]={'$like':'%'+_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x59')]+'%'};return _0x562394;})});}_0x2883ae=_[_0x9bdf('0x5a')]({},_0x2883ae,_0x3a7bac[_0x9bdf('0x5b')]);return db['MailInteraction']['count']({'where':_0x2883ae[_0x9bdf('0x57')]})[_0x9bdf('0xf')](function(_0x2d3806){_0xbec54c['count']=_0x2d3806;if(_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x5c')]){_0x2883ae['include']=[{'model':db['CmContact'],'as':_0x9bdf('0x8b'),'required':![]},{'model':db[_0x9bdf('0x8c')],'as':_0x9bdf('0x8d'),'attributes':[_0x9bdf('0x28'),_0x9bdf('0x8e'),_0x9bdf('0x8f')],'required':![]},{'model':db[_0x9bdf('0x90')],'as':'Tags','attributes':['id',_0x9bdf('0x28'),'color'],'where':_0x3a7bac[_0x9bdf('0x4c')][_0x9bdf('0x91')]?{'id':_0x3a7bac[_0x9bdf('0x4c')]['tag']}:undefined,'required':_0x3a7bac[_0x9bdf('0x4c')]['tag']?!![]:![]}];}return db[_0x9bdf('0x88')][_0x9bdf('0x5e')](_0x2883ae);})[_0x9bdf('0xf')](function(_0x364d06){_0xbec54c['rows']=_0x364d06;return _0xbec54c;});}})[_0x9bdf('0xf')](respondWithFilteredResult(_0x5aded2,_0x2883ae))[_0x9bdf('0x19')](handleError(_0x5aded2,null));};exports['addApplications']=function addApplications(_0x2552a2,_0x273e92){var _0x3665d4=_0x2552a2['params']['id'];var _0x2c9623=_0x2552a2[_0x9bdf('0x64')];var _0x1ae59e=0xc8;var _0x27a294=null;return db[_0x9bdf('0x92')]['transaction']({'isolationLevel':db['sequelize'][_0x9bdf('0x93')][_0x9bdf('0x94')][_0x9bdf('0x95')]},function(_0x151ab8){return db[_0x9bdf('0x46')][_0x9bdf('0x6d')]({'where':{'id':_0x3665d4},'transaction':_0x151ab8})[_0x9bdf('0xf')](function(_0x468166){if(_0x468166){return db[_0x9bdf('0x96')][_0x9bdf('0x24')]({'where':{'MailAccountId':_0x3665d4},'transaction':_0x151ab8})[_0x9bdf('0xf')](function(){var _0x4c8ea3=_['map'](_0x2c9623,function(_0x4993c0){_0x4993c0[_0x9bdf('0x6a')]=_0x3665d4;return _0x4993c0;});return db[_0x9bdf('0x96')][_0x9bdf('0x97')](_0x4c8ea3,{'transaction':_0x151ab8});});}else{_0x1ae59e=0x194;_0x27a294=[];}});})['then'](function(){if(_0x1ae59e!==0x194){return db[_0x9bdf('0x96')][_0x9bdf('0x98')]({'where':{'MailAccountId':_0x3665d4},'order':_0x9bdf('0x99')})[_0x9bdf('0xf')](function(_0x71ef62){_0x27a294=_0x71ef62;});}})[_0x9bdf('0x19')](function(_0x3ea574){_0x1ae59e=0x1f4;logger[_0x9bdf('0x16')](_0x3ea574['stack']);if(_0x3ea574[_0x9bdf('0x28')]){delete _0x3ea574['name'];}_0x27a294=_0x3ea574;})[_0x9bdf('0x9a')](function(){if(_0x27a294===null){_0x273e92[_0x9bdf('0x1a')](_0x1ae59e);}else{if(_0x1ae59e===0x1f4){_0x273e92[_0x9bdf('0x1b')](_0x1ae59e)[_0x9bdf('0x29')](_0x27a294);}else{_0x273e92[_0x9bdf('0x1b')](_0x1ae59e)[_0x9bdf('0x9b')](_0x27a294);}}});};exports[_0x9bdf('0x9c')]=function(_0x4d77a3,_0x3fcd0e){var _0x57efa5={};var _0x8ab071={};var _0x1b2c09;var _0x57342a;return db['MailAccount'][_0x9bdf('0x6d')]({'where':{'id':_0x4d77a3[_0x9bdf('0x61')]['id']}})['then'](handleEntityNotFound(_0x3fcd0e,null))[_0x9bdf('0xf')](function(_0xc183ef){if(_0xc183ef){_0x1b2c09=_0xc183ef;_0x8ab071[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db[_0x9bdf('0x96')][_0x9bdf('0x47')]);_0x8ab071[_0x9bdf('0x4c')]=_[_0x9bdf('0x4d')](_0x4d77a3[_0x9bdf('0x4c')]);_0x8ab071[_0x9bdf('0x4e')]=_[_0x9bdf('0x4f')](_0x8ab071[_0x9bdf('0x4a')],_0x8ab071['query']);_0x57efa5[_0x9bdf('0x50')]=_[_0x9bdf('0x4f')](_0x8ab071['model'],qs['fields'](_0x4d77a3['query'][_0x9bdf('0x51')]));_0x57efa5[_0x9bdf('0x50')]=_0x57efa5['attributes'][_0x9bdf('0x52')]?_0x57efa5[_0x9bdf('0x50')]:_0x8ab071[_0x9bdf('0x4a')];_0x57efa5[_0x9bdf('0x55')]=qs[_0x9bdf('0x56')](_0x4d77a3[_0x9bdf('0x4c')]['sort']);_0x57efa5[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x4d77a3[_0x9bdf('0x4c')],_0x8ab071[_0x9bdf('0x4e')]));if(_0x4d77a3['query'][_0x9bdf('0x59')]){_0x57efa5[_0x9bdf('0x57')]=_[_0x9bdf('0x5a')](_0x57efa5['where'],{'$or':_['map'](_0x57efa5[_0x9bdf('0x50')],function(_0x2b74e8){var _0x5e07a8={};_0x5e07a8[_0x2b74e8]={'$like':'%'+_0x4d77a3[_0x9bdf('0x4c')][_0x9bdf('0x59')]+'%'};return _0x5e07a8;})});}_0x57efa5=_['merge']({},_0x57efa5,_0x4d77a3[_0x9bdf('0x5b')]);return _0x1b2c09['getApplications'](_0x57efa5);}})[_0x9bdf('0xf')](function(_0x53691b){if(_0x53691b){_0x57342a=_0x53691b['length'];if(!_0x4d77a3['query'][_0x9bdf('0x53')](_0x9bdf('0x54'))){_0x57efa5[_0x9bdf('0x1e')]=qs['limit'](_0x4d77a3[_0x9bdf('0x4c')]['limit']);_0x57efa5[_0x9bdf('0x20')]=qs['offset'](_0x4d77a3[_0x9bdf('0x4c')]['offset']);}return _0x1b2c09[_0x9bdf('0x9c')](_0x57efa5);}})[_0x9bdf('0xf')](function(_0x2dca8f){if(_0x2dca8f){return _0x2dca8f?{'count':_0x57342a,'rows':_0x2dca8f}:null;}})[_0x9bdf('0xf')](respondWithResult(_0x3fcd0e,null))[_0x9bdf('0x19')](handleError(_0x3fcd0e,null));};exports[_0x9bdf('0x9d')]=function(_0x3849c1,_0x10278f){var _0x329e8e={'raw':!![],'where':{}};var _0x5557f2={};var _0x22913a={'count':0x0,'rows':[]};return db[_0x9bdf('0x46')]['findOne']({'where':{'id':_0x3849c1[_0x9bdf('0x61')]['id']}})['then'](handleEntityNotFound(_0x10278f,null))[_0x9bdf('0xf')](function(_0x2fa697){if(_0x2fa697){_0x5557f2[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db[_0x9bdf('0x9e')][_0x9bdf('0x47')]);_0x5557f2['query']=_[_0x9bdf('0x4d')](_0x3849c1[_0x9bdf('0x4c')]);_0x5557f2[_0x9bdf('0x4e')]=_[_0x9bdf('0x4f')](_0x5557f2[_0x9bdf('0x4a')],_0x5557f2[_0x9bdf('0x4c')]);_0x329e8e[_0x9bdf('0x50')]=_[_0x9bdf('0x4f')](_0x5557f2['model'],qs[_0x9bdf('0x51')](_0x3849c1[_0x9bdf('0x4c')][_0x9bdf('0x51')]));_0x329e8e[_0x9bdf('0x50')]=_0x329e8e[_0x9bdf('0x50')][_0x9bdf('0x52')]?_0x329e8e[_0x9bdf('0x50')]:_0x5557f2['model'];if(!_0x3849c1[_0x9bdf('0x4c')]['hasOwnProperty']('nolimit')){_0x329e8e[_0x9bdf('0x1e')]=qs[_0x9bdf('0x1e')](_0x3849c1[_0x9bdf('0x4c')]['limit']);_0x329e8e[_0x9bdf('0x20')]=qs[_0x9bdf('0x20')](_0x3849c1[_0x9bdf('0x4c')]['offset']);}_0x329e8e[_0x9bdf('0x55')]=qs[_0x9bdf('0x56')](_0x3849c1[_0x9bdf('0x4c')]['sort']);_0x329e8e[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_[_0x9bdf('0x58')](_0x3849c1[_0x9bdf('0x4c')],_0x5557f2[_0x9bdf('0x4e')]));_0x329e8e[_0x9bdf('0x57')][_0x9bdf('0x6a')]=_0x2fa697['id'];if(_0x3849c1['query']['filter']){_0x329e8e[_0x9bdf('0x57')]=_[_0x9bdf('0x5a')](_0x329e8e[_0x9bdf('0x57')],{'$or':_[_0x9bdf('0x4b')](_0x329e8e[_0x9bdf('0x50')],function(_0x3e00ed){var _0x3a265c={};_0x3a265c[_0x3e00ed]={'$like':'%'+_0x3849c1[_0x9bdf('0x4c')]['filter']+'%'};return _0x3a265c;})});}if(_0x3849c1[_0x9bdf('0x4c')][_0x9bdf('0x9f')]){var _0x1c929e=_0x3849c1[_0x9bdf('0x4c')][_0x9bdf('0x9f')][_0x9bdf('0xa0')](',');var _0x20b94b={};_0x20b94b[_0x1c929e[0x0]]={'$gte':moment(_0x1c929e[0x1])[_0x9bdf('0xa1')]('YYYY-MM-DD\x20HH:mm:ss')};_0x329e8e['where']=_[_0x9bdf('0x5a')](_0x329e8e['where'],_0x20b94b);}_0x329e8e=_[_0x9bdf('0x5a')]({},_0x329e8e,_0x3849c1['options']);return db[_0x9bdf('0x9e')][_0x9bdf('0x1f')]({'where':_0x329e8e['where']})[_0x9bdf('0xf')](function(_0x2d9abb){_0x22913a[_0x9bdf('0x1f')]=_0x2d9abb;if(_0x3849c1['query'][_0x9bdf('0x5c')]){_0x329e8e[_0x9bdf('0x5d')]=[{'all':!![]}];}return db[_0x9bdf('0x9e')]['findAll'](_0x329e8e);})['then'](function(_0x3faffb){if(_0x3849c1[_0x9bdf('0x4c')][_0x9bdf('0xa2')]===_0x9bdf('0xa3')){for(var _0x468dd0=0x0;_0x468dd0<_0x3faffb[_0x9bdf('0x52')];_0x468dd0++){_0x3faffb[_0x468dd0][_0x9bdf('0x64')]=juice(_0x3faffb[_0x468dd0]['body']);}}_0x22913a[_0x9bdf('0x5f')]=_0x3faffb;return _0x22913a;});}})[_0x9bdf('0xf')](respondWithFilteredResult(_0x10278f,_0x329e8e))['catch'](handleError(_0x10278f,null));};exports[_0x9bdf('0x29')]=function(_0x4d75dd,_0x3bf007){var _0x2c646,_0x271b15={},_0x113079;if(_0x4d75dd['body']['to']){_0x113079=_0x4d75dd['body']['to'][_0x9bdf('0xa0')](',')[0x0];}return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x4d75dd[_0x9bdf('0x61')]['id']},'include':[{'model':db[_0x9bdf('0xa4')],'as':_0x9bdf('0xa5'),'include':[{'model':db[_0x9bdf('0xa6')],'as':_0x9bdf('0xa7'),'where':{'email':_0x113079},'limit':0x1,'order':[[_0x9bdf('0xa8'),_0x9bdf('0xa9')]]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![],'include':[{'model':db[_0x9bdf('0xaa')],'as':_0x9bdf('0xaa'),'raw':!![]}]}]})[_0x9bdf('0xf')](handleEntityNotFound(_0x3bf007,null))[_0x9bdf('0xf')](function(_0x3434df){if(!_0x3434df)return;_0x2c646=_0x3434df;if(!_0x3434df[_0x9bdf('0x41')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_[_0x9bdf('0x77')](_0x4d75dd['body'][_0x9bdf('0xab')])){_0x4d75dd['body']['from']=util[_0x9bdf('0xa1')](_0x9bdf('0xac'),_0x3434df[_0x9bdf('0x28')],_0x3434df['email']||_0x3434df['Smtp'][_0x9bdf('0x3f')]);}if(_0x4d75dd[_0x9bdf('0x64')]['attachments']&&_0x4d75dd[_0x9bdf('0x64')][_0x9bdf('0xad')][_0x9bdf('0x52')]){for(var _0x24a210=0x0;_0x24a210<_0x4d75dd['body'][_0x9bdf('0xad')]['length'];_0x24a210+=0x1){_0x4d75dd['body'][_0x9bdf('0xad')][_0x24a210]={'filename':_0x4d75dd[_0x9bdf('0x64')]['attachments'][_0x24a210]['name'],'path':path['join'](config[_0x9bdf('0xae')],_0x9bdf('0xaf'),_0x4d75dd[_0x9bdf('0x64')]['attachments'][_0x24a210]['basename'])};}}var _0x474ee1=_0x3434df[_0x9bdf('0xb0')]();return respondWithRpcPromise(_0x9bdf('0xb1'),'sendMail',{'account':_0x474ee1,'message':_0x4d75dd[_0x9bdf('0x64')]});})[_0x9bdf('0xf')](function(_0x5d7359){if(!_0x5d7359)return;_0x271b15=_0x5d7359;if(!_0x2c646[_0x9bdf('0xa5')])throw new Error(_0x9bdf('0xb2'));if(_0x2c646[_0x9bdf('0xa5')][_0x9bdf('0xa7')][_0x9bdf('0x52')])return _0x2c646[_0x9bdf('0xa5')]['Contacts'][0x0];return db[_0x9bdf('0xa6')][_0x9bdf('0x6b')](_[_0x9bdf('0xb3')](_0x4d75dd['body'],{'firstName':_0x4d75dd[_0x9bdf('0x64')]['to'],'email':_0x4d75dd[_0x9bdf('0x64')]['to'],'phone':_0x4d75dd[_0x9bdf('0x64')]['to'],'ListId':_0x2c646[_0x9bdf('0x76')]}));})['then'](function(_0x157864){if(!_0x157864)return;var _0x5a51f7={'UserId':_0x4d75dd[_0x9bdf('0x3f')]['id'],'ContactId':_0x157864['id'],'MailAccountId':_0x2c646['id'],'inReplyTo':_0x271b15['messageId'],'to':_0x4d75dd['body'][_0x9bdf('0xab')],'cc':_0x4d75dd['body']['cc'],'subject':_0x4d75dd[_0x9bdf('0x64')]['subject'],'attach':_0x4d75dd[_0x9bdf('0x64')][_0x9bdf('0xb4')],'firstMsgDirection':_0x9bdf('0xb5'),'lastMsgAt':moment()['format'](_0x9bdf('0xb6')),'lastMsgDirection':'out','Messages':[_['merge'](_0x4d75dd[_0x9bdf('0x64')],{'messageId':_0x271b15[_0x9bdf('0xb7')],'sentAt':moment()['format'](_0x9bdf('0xb6')),'read':!![],'MailAccountId':_0x2c646['id'],'UserId':_0x4d75dd[_0x9bdf('0x3f')]['id'],'ContactId':_0x157864['id']})]};if(_0x4d75dd[_0x9bdf('0x64')][_0x9bdf('0xb8')]){_0x5a51f7=_['merge'](_0x5a51f7,_0x4d75dd['body'][_0x9bdf('0xb8')]);}return db[_0x9bdf('0x88')][_0x9bdf('0x6b')](_0x5a51f7,{'include':[{'model':db[_0x9bdf('0x9e')],'as':'Messages'}]});})['then'](respondWithResult(_0x3bf007,null))[_0x9bdf('0x19')](handleError(_0x3bf007,null));};exports[_0x9bdf('0xb9')]=function(_0xf25602,_0x5ca48b){return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0xf25602['params']['id']},'include':[{'model':db[_0x9bdf('0x44')],'as':_0x9bdf('0x41'),'raw':!![],'include':[{'model':db[_0x9bdf('0xaa')],'as':_0x9bdf('0xaa'),'raw':!![]}]}]})[_0x9bdf('0xf')](handleEntityNotFound(_0x5ca48b,null))[_0x9bdf('0xf')](function(_0x3820c9){if(!_0x3820c9[_0x9bdf('0x41')])return;var _0x23b140=_0x3820c9[_0x9bdf('0xb0')]();return respondWithRpcPromise('VerifySmtp',_0x9bdf('0xb9'),{'account':_0x23b140});})[_0x9bdf('0xf')](respondWithResult(_0x5ca48b,null))[_0x9bdf('0x19')](handleError(_0x5ca48b,null));};exports[_0x9bdf('0x24')]=function(_0x4a0bd5,_0x1a3678){return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x4a0bd5[_0x9bdf('0x61')]['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x1a3678,null))[_0x9bdf('0xf')](function(_0x12fd13){if(_0x12fd13&&_0x12fd13[_0x9bdf('0x3d')]){throw new db[(_0x9bdf('0xba'))][(_0x9bdf('0xbb'))](_0x9bdf('0xbc'));}return _0x12fd13;})[_0x9bdf('0xf')](removeEntity(_0x1a3678,null))[_0x9bdf('0x19')](handleError(_0x1a3678,null));};exports[_0x9bdf('0xbd')]=function(_0x3dae31,_0x2312af){return db[_0x9bdf('0x46')][_0x9bdf('0x63')]({'where':{'id':_0x3dae31['params']['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x2312af,null))[_0x9bdf('0xf')](function(_0x5942ad){if(_0x5942ad){return _0x5942ad['addAgents'](_0x3dae31[_0x9bdf('0x64')][_0x9bdf('0x70')],_[_0x9bdf('0x89')](_0x3dae31[_0x9bdf('0x64')],[_0x9bdf('0x70'),'id'])||{})['spread'](function(_0x27709a){for(var _0x42748c=0x0;_0x42748c<_0x3dae31[_0x9bdf('0x64')][_0x9bdf('0x70')][_0x9bdf('0x52')];_0x42748c+=0x1){socket[_0x9bdf('0xbe')]('userMailAccount:save',{'UserId':Number(_0x3dae31['body'][_0x9bdf('0x70')][_0x42748c]),'MailAccountId':Number(_0x3dae31[_0x9bdf('0x61')]['id'])});}return _0x27709a;});}})['then'](respondWithResult(_0x2312af,null))[_0x9bdf('0x19')](handleError(_0x2312af,null));};exports[_0x9bdf('0xbf')]=function(_0xf1bac9,_0x2d2ce2){return db['MailAccount'][_0x9bdf('0x63')]({'where':{'id':_0xf1bac9['params']['id']}})[_0x9bdf('0xf')](handleEntityNotFound(_0x2d2ce2,null))[_0x9bdf('0xf')](function(_0x1bd20c){if(_0x1bd20c){return _0x1bd20c[_0x9bdf('0xbf')](_0xf1bac9[_0x9bdf('0x4c')]['ids'])[_0x9bdf('0xf')](function(){if(_[_0x9bdf('0xc0')](_0xf1bac9[_0x9bdf('0x4c')][_0x9bdf('0x70')])){for(var _0x509987=0x0;_0x509987<_0xf1bac9[_0x9bdf('0x4c')][_0x9bdf('0x70')][_0x9bdf('0x52')];_0x509987+=0x1){socket[_0x9bdf('0xbe')](_0x9bdf('0xc1'),{'UserId':Number(_0xf1bac9[_0x9bdf('0x4c')][_0x9bdf('0x70')][_0x509987]),'MailAccountId':Number(_0xf1bac9[_0x9bdf('0x61')]['id'])});}}else{socket['emit'](_0x9bdf('0xc1'),{'UserId':Number(_0xf1bac9[_0x9bdf('0x4c')]['ids']),'MailAccountId':Number(_0xf1bac9[_0x9bdf('0x61')]['id'])});}});}})[_0x9bdf('0xf')](respondWithStatusCode(_0x2d2ce2,null))[_0x9bdf('0x19')](handleError(_0x2d2ce2,null));};exports[_0x9bdf('0xc2')]=function(_0x166a97,_0x21ff23){var _0x569199={};var _0x5cf86d={};var _0x1bacef;var _0x35f853;return db['MailAccount'][_0x9bdf('0x6d')]({'where':{'id':_0x166a97[_0x9bdf('0x61')]['id']}})['then'](handleEntityNotFound(_0x21ff23,null))[_0x9bdf('0xf')](function(_0x2441a9){if(_0x2441a9){_0x1bacef=_0x2441a9;_0x5cf86d[_0x9bdf('0x4a')]=_[_0x9bdf('0x4d')](db[_0x9bdf('0x8c')][_0x9bdf('0x47')]);_0x5cf86d[_0x9bdf('0x4c')]=_['keys'](_0x166a97[_0x9bdf('0x4c')]);_0x5cf86d['filters']=_[_0x9bdf('0x4f')](_0x5cf86d['model'],_0x5cf86d['query']);_0x569199[_0x9bdf('0x50')]=_['intersection'](_0x5cf86d[_0x9bdf('0x4a')],qs[_0x9bdf('0x51')](_0x166a97[_0x9bdf('0x4c')][_0x9bdf('0x51')]));_0x569199[_0x9bdf('0x50')]=_0x569199[_0x9bdf('0x50')][_0x9bdf('0x52')]?_0x569199[_0x9bdf('0x50')]:_0x5cf86d['model'];_0x569199[_0x9bdf('0x55')]=qs[_0x9bdf('0x56')](_0x166a97[_0x9bdf('0x4c')]['sort']);_0x569199[_0x9bdf('0x57')]=qs[_0x9bdf('0x4e')](_['pick'](_0x166a97[_0x9bdf('0x4c')],_0x5cf86d[_0x9bdf('0x4e')]));if(_0x166a97[_0x9bdf('0x4c')]['filter']){_0x569199['where']=_[_0x9bdf('0x5a')](_0x569199[_0x9bdf('0x57')],{'$or':_['map'](_0x569199[_0x9bdf('0x50')],function(_0x308933){var _0x43bd2c={};_0x43bd2c[_0x308933]={'$like':'%'+_0x166a97[_0x9bdf('0x4c')]['filter']+'%'};return _0x43bd2c;})});}_0x569199=_[_0x9bdf('0x5a')]({},_0x569199,_0x166a97['options']);return _0x1bacef[_0x9bdf('0xc2')](_0x569199);}})['then'](function(_0x284a3b){if(_0x284a3b){_0x35f853=_0x284a3b[_0x9bdf('0x52')];if(!_0x166a97[_0x9bdf('0x4c')][_0x9bdf('0x53')](_0x9bdf('0x54'))){_0x569199[_0x9bdf('0x1e')]=qs[_0x9bdf('0x1e')](_0x166a97['query']['limit']);_0x569199[_0x9bdf('0x20')]=qs['offset'](_0x166a97[_0x9bdf('0x4c')]['offset']);}return _0x1bacef['getAgents'](_0x569199);}})['then'](function(_0x51d90e){if(_0x51d90e){return _0x51d90e?{'count':_0x35f853,'rows':_0x51d90e}:null;}})['then'](respondWithResult(_0x21ff23,null))['catch'](handleError(_0x21ff23,null));};
\ No newline at end of file
index 045eb2f..5b3c7d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa647=['../../mysqldb','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x73f519,_0x15fa15){var _0x410358=function(_0x7d7b48){while(--_0x7d7b48){_0x73f519['push'](_0x73f519['shift']());}};_0x410358(++_0x15fa15);}(_0xa647,0x81));var _0x7a64=function(_0x569f4e,_0x92ca5a){_0x569f4e=_0x569f4e-0x0;var _0x36a111=_0xa647[_0x569f4e];return _0x36a111;};'use strict';var EventEmitter=require(_0x7a64('0x0'));var MailAccount=require(_0x7a64('0x1'))['db'][_0x7a64('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x7a64('0x3')](0x0);var events={'afterCreate':_0x7a64('0x4'),'afterUpdate':_0x7a64('0x5'),'afterDestroy':_0x7a64('0x6')};function emitEvent(_0x30b8b7){return function(_0x1c7a04,_0x2e1029,_0x46b8b0){MailAccountEvents[_0x7a64('0x7')](_0x30b8b7+':'+_0x1c7a04['id'],_0x1c7a04);MailAccountEvents['emit'](_0x30b8b7,_0x1c7a04);_0x46b8b0(null);};}for(var e in events){if(events[_0x7a64('0x8')](e)){var event=events[e];MailAccount[_0x7a64('0x9')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0xc051=['exports','events','../../mysqldb','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x1a5fe9,_0x23479b){var _0x200223=function(_0x6237b){while(--_0x6237b){_0x1a5fe9['push'](_0x1a5fe9['shift']());}};_0x200223(++_0x23479b);}(_0xc051,0xb5));var _0x1c05=function(_0x353a14,_0x2fd1ee){_0x353a14=_0x353a14-0x0;var _0x4b9a6b=_0xc051[_0x353a14];return _0x4b9a6b;};'use strict';var EventEmitter=require(_0x1c05('0x0'));var MailAccount=require(_0x1c05('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1c05('0x2'),'afterUpdate':_0x1c05('0x3'),'afterDestroy':_0x1c05('0x4')};function emitEvent(_0xd5f638){return function(_0x5d181d,_0x352877,_0x1493c6){MailAccountEvents[_0x1c05('0x5')](_0xd5f638+':'+_0x5d181d['id'],_0x5d181d);MailAccountEvents[_0x1c05('0x5')](_0xd5f638,_0x5d181d);_0x1493c6(null);};}for(var e in events){if(events[_0x1c05('0x6')](e)){var event=events[e];MailAccount[_0x1c05('0x7')](e,emitEvent(event));}}module[_0x1c05('0x8')]=MailAccountEvents;
\ No newline at end of file
index 15cbc8a..59de138 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5433=['service','host','Smtp','port','secure','authentication','CloudProvider','auth','OAuth2','user','data5','pass','./mailAccount.attributes','exports','define','MailAccount','provider','custom'];(function(_0x5ad600,_0x5ec1e3){var _0x556bb1=function(_0x3602aa){while(--_0x3602aa){_0x5ad600['push'](_0x5ad600['shift']());}};_0x556bb1(++_0x5ec1e3);}(_0x5433,0x9c));var _0x3543=function(_0x2382bf,_0x5efff4){_0x2382bf=_0x2382bf-0x0;var _0x1f2ff9=_0x5433[_0x2382bf];return _0x1f2ff9;};'use strict';var attributes=require(_0x3543('0x0'));module[_0x3543('0x1')]=function(_0x3fba07){return _0x3fba07[_0x3543('0x2')](_0x3543('0x3'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x4d2a8c=this;var _0x486460={'id':_0x4d2a8c['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4d2a8c[_0x3543('0x4')]!==_0x3543('0x5')){_0x486460[_0x3543('0x6')]=_0x4d2a8c[_0x3543('0x4')];}else{_0x486460[_0x3543('0x7')]=_0x4d2a8c[_0x3543('0x8')][_0x3543('0x7')];_0x486460[_0x3543('0x9')]=_0x4d2a8c['Smtp'][_0x3543('0x9')];_0x486460[_0x3543('0xa')]=_0x4d2a8c[_0x3543('0x8')][_0x3543('0xa')];}if(_0x4d2a8c[_0x3543('0x8')][_0x3543('0xb')]){if(_0x4d2a8c['Smtp']['modernAuthentication']){if(!_0x4d2a8c['Smtp'][_0x3543('0xc')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x486460[_0x3543('0xd')]={'type':_0x3543('0xe'),'user':_0x4d2a8c[_0x3543('0x8')][_0x3543('0xf')],'accessToken':_0x4d2a8c[_0x3543('0x8')][_0x3543('0xc')][_0x3543('0x10')]};}else{_0x486460['auth']={'user':_0x4d2a8c[_0x3543('0x8')][_0x3543('0xf')],'pass':_0x4d2a8c[_0x3543('0x8')][_0x3543('0x11')]};}}return _0x486460;}}});};
\ No newline at end of file
+var _0x8739=['service','host','port','Smtp','secure','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','OAuth2','user','data5','pass','exports','define','MailAccount','mail_accounts','provider','custom'];(function(_0x3c04fd,_0x477d16){var _0x50e19b=function(_0x1faaff){while(--_0x1faaff){_0x3c04fd['push'](_0x3c04fd['shift']());}};_0x50e19b(++_0x477d16);}(_0x8739,0x13d));var _0x9873=function(_0x15cfef,_0x1d3503){_0x15cfef=_0x15cfef-0x0;var _0x271a5b=_0x8739[_0x15cfef];return _0x271a5b;};'use strict';var attributes=require('./mailAccount.attributes');module[_0x9873('0x0')]=function(_0x19f28f){return _0x19f28f[_0x9873('0x1')](_0x9873('0x2'),attributes,{'tableName':_0x9873('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x17b651=this;var _0x57232f={'id':_0x17b651['id'],'tls':{'rejectUnauthorized':![]}};if(_0x17b651[_0x9873('0x4')]!==_0x9873('0x5')){_0x57232f[_0x9873('0x6')]=_0x17b651['provider'];}else{_0x57232f['host']=_0x17b651['Smtp'][_0x9873('0x7')];_0x57232f[_0x9873('0x8')]=_0x17b651[_0x9873('0x9')][_0x9873('0x8')];_0x57232f[_0x9873('0xa')]=_0x17b651[_0x9873('0x9')][_0x9873('0xa')];}if(_0x17b651[_0x9873('0x9')]['authentication']){if(_0x17b651[_0x9873('0x9')][_0x9873('0xb')]){if(!_0x17b651[_0x9873('0x9')][_0x9873('0xc')])throw new Error(_0x9873('0xd'));_0x57232f[_0x9873('0xe')]={'type':_0x9873('0xf'),'user':_0x17b651[_0x9873('0x9')][_0x9873('0x10')],'accessToken':_0x17b651[_0x9873('0x9')]['CloudProvider'][_0x9873('0x11')]};}else{_0x57232f[_0x9873('0xe')]={'user':_0x17b651[_0x9873('0x9')][_0x9873('0x10')],'pass':_0x17b651[_0x9873('0x9')][_0x9873('0x12')]};}}return _0x57232f;}}});};
\ No newline at end of file
index 556d2bd..a5b0880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['MailMessage','Messages','create','Contact\x20not\x20found','spread','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','User','UserId','agent','name','waitForTheAssignedAgent','startRouting','Start','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','catch','GetMailAccount','MailAccount','findAll','options','raw','attributes','limit','include','map','model','debug','ShowMailAccount','find','smtp','setDataValue','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','CloudProvider','get','omit','Applications','list','applications','orderBy','priority','asc','push','close','autoclose','*,*,*,*','length','List\x20not\x20found','contact','messageId','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x4975,0x86));var _0x5497=function(_0x490a2a,_0x12bfa2){_0x490a2a=_0x490a2a-0x0;var _0x4f91aa=_0x4975[_0x490a2a];return _0x4f91aa;};'use strict';var _=require(_0x5497('0x0'));var moment=require('moment');var BPromise=require(_0x5497('0x1'));var rs=require(_0x5497('0x2'));var Redis=require(_0x5497('0x3'));var db=require(_0x5497('0x4'))['db'];var logger=require(_0x5497('0x5'))(_0x5497('0x6'));var config=require(_0x5497('0x7'));var jayson=require(_0x5497('0x8'));var client=jayson[_0x5497('0x9')][_0x5497('0xa')]({'port':0x232c});config['redis']=_[_0x5497('0xb')](config['redis'],{'host':_0x5497('0xc'),'port':0x18eb});var socket=require(_0x5497('0xd'))(new Redis(config[_0x5497('0xe')]));require('./mailAccount.socket')[_0x5497('0xf')](socket);function respondWithRpcPromise(_0x49d94b,_0x1f63d8,_0x29c93f){return new BPromise(function(_0x2ec5a4,_0x32a8a2){return client[_0x5497('0x10')](_0x49d94b,_0x29c93f)[_0x5497('0x11')](function(_0x3e7886){logger[_0x5497('0x12')]('MailAccount,\x20%s,\x20%s',_0x1f63d8,'request\x20sent');logger['debug'](_0x5497('0x13'),_0x1f63d8,_0x5497('0x14'),JSON[_0x5497('0x15')](_0x3e7886));if(_0x3e7886[_0x5497('0x16')]){if(_0x3e7886[_0x5497('0x16')][_0x5497('0x17')]===0x1f4){logger[_0x5497('0x16')](_0x5497('0x18'),_0x1f63d8,_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);return _0x32a8a2(_0x3e7886['error'][_0x5497('0x19')]);}logger['error'](_0x5497('0x18'),_0x1f63d8,_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);return _0x2ec5a4(_0x3e7886[_0x5497('0x16')][_0x5497('0x19')]);}else{logger[_0x5497('0x12')](_0x5497('0x18'),_0x1f63d8,'request\x20sent');_0x2ec5a4(_0x3e7886['result'][_0x5497('0x19')]);}})[_0x5497('0x1a')](function(_0x3a47fd){logger['error'](_0x5497('0x18'),_0x1f63d8,_0x3a47fd);_0x32a8a2(_0x3a47fd);});});}exports[_0x5497('0x1b')]=function(_0x18e8a8){var _0x43da2c=this;return new Promise(function(_0x1b1b43,_0x1f6f18){return db[_0x5497('0x1c')][_0x5497('0x1d')]({'raw':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x1f')]===undefined?!![]:![]:!![],'where':_0x18e8a8['options']?_0x18e8a8[_0x5497('0x1e')]['where']||null:null,'attributes':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x20')]||null:null,'limit':_0x18e8a8[_0x5497('0x1e')]?_0x18e8a8[_0x5497('0x1e')][_0x5497('0x21')]||null:null,'include':_0x18e8a8['options']?_0x18e8a8['options'][_0x5497('0x22')]?_[_0x5497('0x23')](_0x18e8a8[_0x5497('0x1e')][_0x5497('0x22')],function(_0x5223b5){return{'model':db[_0x5223b5[_0x5497('0x24')]],'as':_0x5223b5['as'],'attributes':_0x5223b5['attributes'],'include':_0x5223b5[_0x5497('0x22')]?_[_0x5497('0x23')](_0x5223b5[_0x5497('0x22')],function(_0x34a1a5){return{'model':db[_0x34a1a5[_0x5497('0x24')]],'as':_0x34a1a5['as'],'attributes':_0x34a1a5[_0x5497('0x20')],'include':_0x34a1a5['include']?_[_0x5497('0x23')](_0x34a1a5['include'],function(_0x583d06){return{'model':db[_0x583d06['model']],'as':_0x583d06['as'],'attributes':_0x583d06[_0x5497('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e9356){logger[_0x5497('0x12')](_0x5497('0x1b'),_0x18e8a8);logger[_0x5497('0x25')]('GetMailAccount',_0x18e8a8,JSON['stringify'](_0x5e9356));_0x1b1b43(_0x5e9356);})['catch'](function(_0x371874){logger[_0x5497('0x16')](_0x5497('0x1b'),_0x371874['message'],_0x18e8a8);_0x1f6f18(_0x43da2c['error'](0x1f4,_0x371874['message']));});});};exports[_0x5497('0x26')]=function(_0x572460){var _0x438ee4=this;return new Promise(function(_0x258c2d,_0x77c575){return db['MailAccount'][_0x5497('0x27')]({'raw':_0x572460[_0x5497('0x1e')]?_0x572460['options'][_0x5497('0x1f')]===undefined?!![]:![]:!![],'where':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')]['where']||null:null,'attributes':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')][_0x5497('0x20')]||null:null,'include':_0x572460[_0x5497('0x1e')]?_0x572460[_0x5497('0x1e')]['include']?_[_0x5497('0x23')](_0x572460[_0x5497('0x1e')]['include'],function(_0x1ffc9b){return{'model':db[_0x1ffc9b[_0x5497('0x24')]],'as':_0x1ffc9b['as'],'attributes':_0x1ffc9b[_0x5497('0x20')],'include':_0x1ffc9b[_0x5497('0x22')]?_[_0x5497('0x23')](_0x1ffc9b[_0x5497('0x22')],function(_0x580e86){return{'model':db[_0x580e86[_0x5497('0x24')]],'as':_0x580e86['as'],'attributes':_0x580e86['attributes'],'include':_0x580e86[_0x5497('0x22')]?_[_0x5497('0x23')](_0x580e86[_0x5497('0x22')],function(_0x5ab18c){return{'model':db[_0x5ab18c['model']],'as':_0x5ab18c['as'],'attributes':_0x5ab18c[_0x5497('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5497('0x11')](function(_0x326d48){if(_0x572460[_0x5497('0x1e')][_0x5497('0x28')]===!![])_0x326d48[_0x5497('0x29')]('smtpOptions',_0x326d48[_0x5497('0x2a')]());logger[_0x5497('0x12')](_0x5497('0x26'),_0x572460);logger[_0x5497('0x25')](_0x5497('0x26'),_0x572460,JSON[_0x5497('0x15')](_0x326d48));_0x258c2d(_0x326d48);})[_0x5497('0x1a')](function(_0x179635){logger[_0x5497('0x16')]('ShowMailAccount',_0x179635[_0x5497('0x19')],_0x572460);_0x77c575(_0x438ee4[_0x5497('0x16')](0x1f4,_0x179635[_0x5497('0x19')]));});});};exports[_0x5497('0x2b')]=function(_0x15029d){var _0xa5ebe6=this;return new Promise(function(_0x4299be,_0x59ed13){var _0x3e5f7d={'body':_0x15029d[_0x5497('0x2c')],'channel':_0x5497('0x2d')};var _0x35993c=_[_0x5497('0x2e')](_[_0x5497('0x2f')](db[_0x5497('0x30')]['rawAttributes']),[_0x5497('0x31'),_0x5497('0x32'),_0x5497('0x33'),_0x5497('0x34')]);var _0x20e947=![];if(_0x15029d[_0x5497('0x2c')]['id']){delete _0x15029d[_0x5497('0x2c')]['id'];}if(_[_0x5497('0x35')](_0x15029d[_0x5497('0x2c')][_0x5497('0x36')])){return _0x59ed13(_0xa5ebe6['error'](0x1f4,_0x5497('0x37')));}if(_['isNil'](_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')])||_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')]===''){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x5497('0x35')](_0x15029d[_0x5497('0x2c')]['mapKey'])){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x35993c));}if(!_[_0x5497('0x38')](_0x35993c,_0x15029d['body'][_0x5497('0x39')])){return _0x59ed13(_0xa5ebe6[_0x5497('0x16')](0x1f4,_0x5497('0x3a')+_0x35993c));}var _0x3a852a={};_0x3a852a[_0x15029d[_0x5497('0x2c')]['mapKey']]=_0x15029d['body']['from'];return db['MailAccount'][_0x5497('0x27')]({'where':{'id':_0x15029d[_0x5497('0x3b')]['id']},'include':[{'model':db[_0x5497('0x3c')],'as':_0x5497('0x3d'),'include':[{'model':db[_0x5497('0x30')],'as':_0x5497('0x3e'),'where':_0x3a852a,'limit':0x1,'order':[[_0x5497('0x32'),_0x5497('0x3f')]]}]},{'model':db[_0x5497('0x40')],'as':'Applications'},{'model':db[_0x5497('0x41')],'as':_0x5497('0x42'),'include':[{'model':db[_0x5497('0x43')],'as':'CloudProvider'}]}]})[_0x5497('0x11')](function(_0x530475){if(_0x530475&&_0x530475[_0x5497('0x3d')]){var _0x31f1ba=_0x530475[_0x5497('0x44')]({'plain':!![]});_0x3e5f7d['account']=_[_0x5497('0x45')](_0x31f1ba,[_0x5497('0x46'),'List']);_0x3e5f7d[_0x5497('0x3b')]['smtpOptions']=_0x530475[_0x5497('0x2a')]();_0x3e5f7d['applications']=_0x31f1ba[_0x5497('0x46')];_0x3e5f7d[_0x5497('0x47')]=_0x31f1ba[_0x5497('0x3d')];_0x3e5f7d[_0x5497('0x48')]=_[_0x5497('0x49')](_0x3e5f7d[_0x5497('0x48')],[_0x5497('0x4a')],[_0x5497('0x4b')]);if(_0x3e5f7d['account']&&_0x3e5f7d[_0x5497('0x3b')]['autoclose']){_0x3e5f7d['applications'][_0x5497('0x4c')]({'id':0x0,'priority':_0x3e5f7d[_0x5497('0x48')]['length']+0x1,'app':_0x5497('0x4d'),'appdata':_0x5497('0x4e'),'interval':_0x5497('0x4f')});}if(_0x3e5f7d[_0x5497('0x3b')]['Applications']){delete _0x3e5f7d[_0x5497('0x3b')]['Applications'];}if(_0x3e5f7d['account'][_0x5497('0x3d')]){delete _0x3e5f7d[_0x5497('0x3b')][_0x5497('0x3d')];}if(_0x31f1ba['List']['Contacts'][_0x5497('0x50')]){return _0x31f1ba['List'][_0x5497('0x3e')][0x0];}var _0x530431=_[_0x5497('0xb')](_0x15029d['body'],{'firstName':_0x15029d[_0x5497('0x2c')][_0x5497('0x36')],'ListId':_0x31f1ba['ListId']});_0x530431[_0x15029d[_0x5497('0x2c')]['mapKey']]=_0x15029d['body'][_0x5497('0x36')];return db[_0x5497('0x30')]['create'](_0x530431);}else{throw new Error(_0x5497('0x51'));}})[_0x5497('0x11')](function(_0x1dbab2){_0x3e5f7d[_0x5497('0x52')]=_0x1dbab2;if(_0x1dbab2){if(!_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['messageId']){_0x15029d[_0x5497('0x2c')]['message']['messageId']=rs['generate']()+'\x20'+_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')];}var _0x544085={'ContactId':_0x1dbab2['id'],'MailAccountId':_0x15029d[_0x5497('0x3b')]['id'],'inReplyTo':_0x15029d['body']['message'][_0x5497('0x53')],'to':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')],'cc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['cc'],'subject':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x54')],'attach':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['attach'],'lastMsgAt':moment()[_0x5497('0x55')](_0x5497('0x56')),'lastMsgDirection':'in'};return db[_0x5497('0x57')][_0x5497('0x27')]({'where':{'closed':![],'MailAccountId':_0x15029d['account']['id']},'include':[{'model':db[_0x5497('0x58')],'as':_0x5497('0x59'),'attributes':[_0x5497('0x53')],'where':{'messageId':_0x15029d['body'][_0x5497('0x19')]['inReplyTo']}}]})['then'](function(_0x53e050){if(_0x53e050){return[_0x53e050,![]];}return db[_0x5497('0x57')][_0x5497('0x5a')](_0x544085)[_0x5497('0x11')](function(_0x4e7d4c){return[_0x4e7d4c,!![]];});});}else{throw new Error(_0x5497('0x5b'));}})[_0x5497('0x5c')](function(_0x3cfebc,_0x35e75a){if(_0x3cfebc){_0x20e947=_0x35e75a;if(!_0x35e75a){return _0x3cfebc['update']({'inReplyTo':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x53')],'to':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x36')],'cc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['cc'],'subject':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x54')],'attach':_0x3cfebc['attach']?_0x3cfebc[_0x5497('0x5d')]:_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x5d')],'substatus':null,'substatusAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()['format'](_0x5497('0x56')),'lastMsgDirection':'in'});}else{return _0x3cfebc;}}})[_0x5497('0x11')](function(_0x179bbc){_0x3e5f7d['interaction']=_0x179bbc[_0x5497('0x44')]({'plain':!![]});_0x3e5f7d[_0x5497('0x5e')][_0x5497('0x5f')]=_0x20e947;return db[_0x5497('0x58')][_0x5497('0x5a')]({'body':_0x15029d[_0x5497('0x2c')][_0x5497('0x2c')],'MailAccountId':_0x15029d[_0x5497('0x3b')]['id'],'MailInteractionId':_0x179bbc['id'],'direction':'in','ContactId':_0x3e5f7d[_0x5497('0x52')]['id'],'messageId':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['messageId'],'from':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x36')],'to':_0x15029d['body'][_0x5497('0x19')]['to'],'cc':_0x15029d['body'][_0x5497('0x19')]['cc'],'subject':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x54')],'attach':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x5d')],'Attachments':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x60')],'originTo':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x61')],'originCc':_0x15029d[_0x5497('0x2c')]['message'][_0x5497('0x62')],'bcc':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')]['bcc'],'ChatWebsiteId':_0x15029d['body'][_0x5497('0x19')][_0x5497('0x63')]||null,'originChannel':_0x15029d[_0x5497('0x2c')][_0x5497('0x19')][_0x5497('0x64')]||_0x5497('0x65'),'ChatOfflineMessageId':_0x15029d[_0x5497('0x2c')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x5497('0x66')],'as':_0x5497('0x67')}]});})['then'](function(_0x15ca59){_0x3e5f7d[_0x5497('0x19')]=_0x15ca59;if(_0x3e5f7d[_0x5497('0x5e')]['UserId']){return db[_0x5497('0x68')][_0x5497('0x27')]({'attributes':['id','name'],'where':{'id':_0x3e5f7d[_0x5497('0x5e')][_0x5497('0x69')]}})[_0x5497('0x11')](function(_0x42d745){if(_0x42d745){_0x3e5f7d[_0x5497('0x48')]['unshift']({'id':0x0,'priority':0x0,'app':_0x5497('0x6a'),'appdata':_0x42d745[_0x5497('0x6b')]+','+(_0x3e5f7d[_0x5497('0x3b')][_0x5497('0x6c')]||0xa),'interval':_0x5497('0x4f')});}return respondWithRpcPromise('Start',_0x5497('0x6d'),_0x3e5f7d);});}return respondWithRpcPromise(_0x5497('0x6e'),_0x5497('0x6d'),_0x3e5f7d);})[_0x5497('0x11')](function(_0x521d74){_0x4299be(_0x521d74);})[_0x5497('0x1a')](function(_0x21fc4e){_0x59ed13(_0xa5ebe6['error'](0x1f4,_0x21fc4e[_0x5497('0x19')]));});});};
\ No newline at end of file
+var _0x2ef3=['result','catch','MailAccount','findAll','options','attributes','limit','model','include','map','GetMailAccount','find','raw','smtp','setDataValue','smtpOptions','ShowMailAccount','stringify','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','get','account','omit','getSmtpOptions','applications','list','orderBy','priority','autoclose','push','length','close','*,*,*,*','defaults','create','List\x20not\x20found','messageId','generate','attach','MailInteraction','update','subject','format','YYYY-MM-DD\x20HH:mm:ss','interaction','created','attachments','originTo','ChatWebsiteId','Email','ChatOfflineMessageId','UserId','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s','debug','request\x20sent','error','message'];(function(_0x6c712d,_0x3ea26d){var _0x192acc=function(_0x45d762){while(--_0x45d762){_0x6c712d['push'](_0x6c712d['shift']());}};_0x192acc(++_0x3ea26d);}(_0x2ef3,0xba));var _0x32ef=function(_0x4ebdf7,_0x7187af){_0x4ebdf7=_0x4ebdf7-0x0;var _0x1b600d=_0x2ef3[_0x4ebdf7];return _0x1b600d;};'use strict';var _=require(_0x32ef('0x0'));var moment=require(_0x32ef('0x1'));var BPromise=require(_0x32ef('0x2'));var rs=require(_0x32ef('0x3'));var Redis=require(_0x32ef('0x4'));var db=require(_0x32ef('0x5'))['db'];var logger=require('../../config/logger')(_0x32ef('0x6'));var config=require(_0x32ef('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x32ef('0x8')][_0x32ef('0x9')]({'port':0x232c});config['redis']=_['defaults'](config[_0x32ef('0xa')],{'host':_0x32ef('0xb'),'port':0x18eb});var socket=require(_0x32ef('0xc'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xd'))[_0x32ef('0xe')](socket);function respondWithRpcPromise(_0x2484a0,_0x2bbb50,_0x28275c){return new BPromise(function(_0x77df79,_0x56eb42){return client['request'](_0x2484a0,_0x28275c)[_0x32ef('0xf')](function(_0x33281d){logger[_0x32ef('0x10')](_0x32ef('0x11'),_0x2bbb50,'request\x20sent');logger[_0x32ef('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x2bbb50,_0x32ef('0x13'),JSON['stringify'](_0x33281d));if(_0x33281d[_0x32ef('0x14')]){if(_0x33281d[_0x32ef('0x14')]['code']===0x1f4){logger['error'](_0x32ef('0x11'),_0x2bbb50,_0x33281d['error'][_0x32ef('0x15')]);return _0x56eb42(_0x33281d[_0x32ef('0x14')][_0x32ef('0x15')]);}logger[_0x32ef('0x14')]('MailAccount,\x20%s,\x20%s',_0x2bbb50,_0x33281d['error']['message']);return _0x77df79(_0x33281d[_0x32ef('0x14')][_0x32ef('0x15')]);}else{logger[_0x32ef('0x10')]('MailAccount,\x20%s,\x20%s',_0x2bbb50,'request\x20sent');_0x77df79(_0x33281d[_0x32ef('0x16')][_0x32ef('0x15')]);}})[_0x32ef('0x17')](function(_0x57863c){logger[_0x32ef('0x14')](_0x32ef('0x11'),_0x2bbb50,_0x57863c);_0x56eb42(_0x57863c);});});}exports['GetMailAccount']=function(_0x304505){var _0x314ef1=this;return new Promise(function(_0x26aff3,_0x251084){return db[_0x32ef('0x18')][_0x32ef('0x19')]({'raw':_0x304505['options']?_0x304505[_0x32ef('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x304505[_0x32ef('0x1a')]?_0x304505[_0x32ef('0x1a')]['where']||null:null,'attributes':_0x304505[_0x32ef('0x1a')]?_0x304505[_0x32ef('0x1a')][_0x32ef('0x1b')]||null:null,'limit':_0x304505['options']?_0x304505['options'][_0x32ef('0x1c')]||null:null,'include':_0x304505[_0x32ef('0x1a')]?_0x304505[_0x32ef('0x1a')]['include']?_['map'](_0x304505[_0x32ef('0x1a')]['include'],function(_0x51a412){return{'model':db[_0x51a412[_0x32ef('0x1d')]],'as':_0x51a412['as'],'attributes':_0x51a412[_0x32ef('0x1b')],'include':_0x51a412[_0x32ef('0x1e')]?_[_0x32ef('0x1f')](_0x51a412[_0x32ef('0x1e')],function(_0x234175){return{'model':db[_0x234175[_0x32ef('0x1d')]],'as':_0x234175['as'],'attributes':_0x234175[_0x32ef('0x1b')],'include':_0x234175[_0x32ef('0x1e')]?_[_0x32ef('0x1f')](_0x234175[_0x32ef('0x1e')],function(_0xba4b3f){return{'model':db[_0xba4b3f['model']],'as':_0xba4b3f['as'],'attributes':_0xba4b3f[_0x32ef('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x32ef('0xf')](function(_0x5a04cd){logger[_0x32ef('0x10')](_0x32ef('0x20'),_0x304505);logger[_0x32ef('0x12')](_0x32ef('0x20'),_0x304505,JSON['stringify'](_0x5a04cd));_0x26aff3(_0x5a04cd);})[_0x32ef('0x17')](function(_0x22bf86){logger[_0x32ef('0x14')](_0x32ef('0x20'),_0x22bf86[_0x32ef('0x15')],_0x304505);_0x251084(_0x314ef1[_0x32ef('0x14')](0x1f4,_0x22bf86[_0x32ef('0x15')]));});});};exports['ShowMailAccount']=function(_0x36ac37){var _0x537214=this;return new Promise(function(_0x38bf73,_0x2b6c6a){return db['MailAccount'][_0x32ef('0x21')]({'raw':_0x36ac37[_0x32ef('0x1a')]?_0x36ac37[_0x32ef('0x1a')][_0x32ef('0x22')]===undefined?!![]:![]:!![],'where':_0x36ac37[_0x32ef('0x1a')]?_0x36ac37['options']['where']||null:null,'attributes':_0x36ac37[_0x32ef('0x1a')]?_0x36ac37['options'][_0x32ef('0x1b')]||null:null,'include':_0x36ac37[_0x32ef('0x1a')]?_0x36ac37[_0x32ef('0x1a')][_0x32ef('0x1e')]?_[_0x32ef('0x1f')](_0x36ac37[_0x32ef('0x1a')]['include'],function(_0x482d3a){return{'model':db[_0x482d3a['model']],'as':_0x482d3a['as'],'attributes':_0x482d3a[_0x32ef('0x1b')],'include':_0x482d3a[_0x32ef('0x1e')]?_[_0x32ef('0x1f')](_0x482d3a['include'],function(_0x4fb402){return{'model':db[_0x4fb402[_0x32ef('0x1d')]],'as':_0x4fb402['as'],'attributes':_0x4fb402[_0x32ef('0x1b')],'include':_0x4fb402[_0x32ef('0x1e')]?_['map'](_0x4fb402['include'],function(_0xcbdec8){return{'model':db[_0xcbdec8[_0x32ef('0x1d')]],'as':_0xcbdec8['as'],'attributes':_0xcbdec8[_0x32ef('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x32ef('0xf')](function(_0x3a7c49){if(_0x36ac37[_0x32ef('0x1a')][_0x32ef('0x23')]===!![])_0x3a7c49[_0x32ef('0x24')](_0x32ef('0x25'),_0x3a7c49['getSmtpOptions']());logger[_0x32ef('0x10')](_0x32ef('0x26'),_0x36ac37);logger[_0x32ef('0x12')]('ShowMailAccount',_0x36ac37,JSON[_0x32ef('0x27')](_0x3a7c49));_0x38bf73(_0x3a7c49);})[_0x32ef('0x17')](function(_0x879e33){logger[_0x32ef('0x14')](_0x32ef('0x26'),_0x879e33[_0x32ef('0x15')],_0x36ac37);_0x2b6c6a(_0x537214[_0x32ef('0x14')](0x1f4,_0x879e33[_0x32ef('0x15')]));});});};exports[_0x32ef('0x28')]=function(_0x57a3c0){var _0xb4db74=this;return new Promise(function(_0x4615b4,_0x48e071){var _0x3cac2e={'body':_0x57a3c0[_0x32ef('0x29')],'channel':_0x32ef('0x2a')};var _0x1733e3=_[_0x32ef('0x2b')](_[_0x32ef('0x2c')](db[_0x32ef('0x2d')]['rawAttributes']),['createdAt',_0x32ef('0x2e'),_0x32ef('0x2f'),_0x32ef('0x30')]);var _0x765c63=![];if(_0x57a3c0['body']['id']){delete _0x57a3c0[_0x32ef('0x29')]['id'];}if(_[_0x32ef('0x31')](_0x57a3c0['body'][_0x32ef('0x32')])){return _0x48e071(_0xb4db74['error'](0x1f4,_0x32ef('0x33')));}if(_[_0x32ef('0x31')](_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x29')])||_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x29')]===''){return _0x48e071(_0xb4db74[_0x32ef('0x14')](0x1f4,_0x32ef('0x34')));}if(_[_0x32ef('0x31')](_0x57a3c0[_0x32ef('0x29')]['mapKey'])){return _0x48e071(_0xb4db74[_0x32ef('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1733e3));}if(!_[_0x32ef('0x35')](_0x1733e3,_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x36')])){return _0x48e071(_0xb4db74['error'](0x1f4,_0x32ef('0x37')+_0x1733e3));}var _0x230ac9={};_0x230ac9[_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x36')]]=_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x32')];return db[_0x32ef('0x18')]['find']({'where':{'id':_0x57a3c0['account']['id']},'include':[{'model':db[_0x32ef('0x38')],'as':_0x32ef('0x39'),'include':[{'model':db[_0x32ef('0x2d')],'as':_0x32ef('0x3a'),'where':_0x230ac9,'limit':0x1,'order':[[_0x32ef('0x2e'),_0x32ef('0x3b')]]}]},{'model':db[_0x32ef('0x3c')],'as':_0x32ef('0x3d')},{'model':db[_0x32ef('0x3e')],'as':_0x32ef('0x3f'),'include':[{'model':db[_0x32ef('0x40')],'as':_0x32ef('0x40')}]}]})[_0x32ef('0xf')](function(_0x4c2534){if(_0x4c2534&&_0x4c2534[_0x32ef('0x39')]){var _0x12fbd7=_0x4c2534[_0x32ef('0x41')]({'plain':!![]});_0x3cac2e[_0x32ef('0x42')]=_[_0x32ef('0x43')](_0x12fbd7,[_0x32ef('0x3d'),_0x32ef('0x39')]);_0x3cac2e[_0x32ef('0x42')][_0x32ef('0x25')]=_0x4c2534[_0x32ef('0x44')]();_0x3cac2e[_0x32ef('0x45')]=_0x12fbd7[_0x32ef('0x3d')];_0x3cac2e[_0x32ef('0x46')]=_0x12fbd7[_0x32ef('0x39')];_0x3cac2e[_0x32ef('0x45')]=_[_0x32ef('0x47')](_0x3cac2e[_0x32ef('0x45')],[_0x32ef('0x48')],['asc']);if(_0x3cac2e['account']&&_0x3cac2e[_0x32ef('0x42')][_0x32ef('0x49')]){_0x3cac2e[_0x32ef('0x45')][_0x32ef('0x4a')]({'id':0x0,'priority':_0x3cac2e[_0x32ef('0x45')][_0x32ef('0x4b')]+0x1,'app':_0x32ef('0x4c'),'appdata':_0x32ef('0x49'),'interval':_0x32ef('0x4d')});}if(_0x3cac2e[_0x32ef('0x42')][_0x32ef('0x3d')]){delete _0x3cac2e['account'][_0x32ef('0x3d')];}if(_0x3cac2e[_0x32ef('0x42')][_0x32ef('0x39')]){delete _0x3cac2e[_0x32ef('0x42')][_0x32ef('0x39')];}if(_0x12fbd7[_0x32ef('0x39')]['Contacts'][_0x32ef('0x4b')]){return _0x12fbd7[_0x32ef('0x39')][_0x32ef('0x3a')][0x0];}var _0x56b7ce=_[_0x32ef('0x4e')](_0x57a3c0['body'],{'firstName':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x32')],'ListId':_0x12fbd7['ListId']});_0x56b7ce[_0x57a3c0[_0x32ef('0x29')]['mapKey']]=_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x32')];return db[_0x32ef('0x2d')][_0x32ef('0x4f')](_0x56b7ce);}else{throw new Error(_0x32ef('0x50'));}})[_0x32ef('0xf')](function(_0x42c7f4){_0x3cac2e['contact']=_0x42c7f4;if(_0x42c7f4){if(!_0x57a3c0['body'][_0x32ef('0x15')]['messageId']){_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x51')]=rs[_0x32ef('0x52')]()+'\x20'+_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x32')];}var _0x316547={'ContactId':_0x42c7f4['id'],'MailAccountId':_0x57a3c0[_0x32ef('0x42')]['id'],'inReplyTo':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['messageId'],'to':_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x32')],'cc':_0x57a3c0['body'][_0x32ef('0x15')]['cc'],'subject':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['subject'],'attach':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x53')],'lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x32ef('0x54')]['find']({'where':{'closed':![],'MailAccountId':_0x57a3c0[_0x32ef('0x42')]['id']},'include':[{'model':db['MailMessage'],'as':'Messages','attributes':[_0x32ef('0x51')],'where':{'messageId':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['inReplyTo']}}]})[_0x32ef('0xf')](function(_0x222b24){if(_0x222b24){return[_0x222b24,![]];}return db[_0x32ef('0x54')]['create'](_0x316547)[_0x32ef('0xf')](function(_0x12b7f8){return[_0x12b7f8,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x2e20dc,_0x3a6697){if(_0x2e20dc){_0x765c63=_0x3a6697;if(!_0x3a6697){return _0x2e20dc[_0x32ef('0x55')]({'inReplyTo':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x51')],'to':_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x32')],'cc':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['cc'],'subject':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x56')],'attach':_0x2e20dc[_0x32ef('0x53')]?_0x2e20dc[_0x32ef('0x53')]:_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x53')],'substatus':null,'substatusAt':moment()[_0x32ef('0x57')](_0x32ef('0x58')),'lastMsgAt':moment()[_0x32ef('0x57')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x2e20dc;}}})['then'](function(_0x2125de){_0x3cac2e[_0x32ef('0x59')]=_0x2125de[_0x32ef('0x41')]({'plain':!![]});_0x3cac2e[_0x32ef('0x59')][_0x32ef('0x5a')]=_0x765c63;return db['MailMessage'][_0x32ef('0x4f')]({'body':_0x57a3c0['body'][_0x32ef('0x29')],'MailAccountId':_0x57a3c0[_0x32ef('0x42')]['id'],'MailInteractionId':_0x2125de['id'],'direction':'in','ContactId':_0x3cac2e['contact']['id'],'messageId':_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x51')],'from':_0x57a3c0[_0x32ef('0x29')]['message']['from'],'to':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['to'],'cc':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['cc'],'subject':_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x56')],'attach':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x53')],'Attachments':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x5b')],'originTo':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')][_0x32ef('0x5c')],'originCc':_0x57a3c0[_0x32ef('0x29')]['message']['originCc'],'bcc':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['bcc'],'ChatWebsiteId':_0x57a3c0[_0x32ef('0x29')]['message'][_0x32ef('0x5d')]||null,'originChannel':_0x57a3c0[_0x32ef('0x29')][_0x32ef('0x15')]['originChannel']||_0x32ef('0x5e'),'ChatOfflineMessageId':_0x57a3c0['body'][_0x32ef('0x15')][_0x32ef('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':'Attachments'}]});})[_0x32ef('0xf')](function(_0x5970db){_0x3cac2e[_0x32ef('0x15')]=_0x5970db;if(_0x3cac2e['interaction'][_0x32ef('0x60')]){return db[_0x32ef('0x61')][_0x32ef('0x21')]({'attributes':['id','name'],'where':{'id':_0x3cac2e['interaction']['UserId']}})[_0x32ef('0xf')](function(_0x5e5766){if(_0x5e5766){_0x3cac2e[_0x32ef('0x45')][_0x32ef('0x62')]({'id':0x0,'priority':0x0,'app':_0x32ef('0x63'),'appdata':_0x5e5766[_0x32ef('0x64')]+','+(_0x3cac2e[_0x32ef('0x42')][_0x32ef('0x65')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x32ef('0x66'),'startRouting',_0x3cac2e);});}return respondWithRpcPromise('Start',_0x32ef('0x67'),_0x3cac2e);})['then'](function(_0x145e27){_0x4615b4(_0x145e27);})[_0x32ef('0x17')](function(_0x4d64ec){_0x48e071(_0xb4db74[_0x32ef('0x14')](0x1f4,_0x4d64ec[_0x32ef('0x15')]));});});};
\ No newline at end of file
index 8696392..9841f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f7c=['./mailAccount.events','save','remove','emit','removeListener','register','length'];(function(_0xdf0c09,_0x8fbdd5){var _0x48f3c6=function(_0x126a8a){while(--_0x126a8a){_0xdf0c09['push'](_0xdf0c09['shift']());}};_0x48f3c6(++_0x8fbdd5);}(_0x3f7c,0x17a));var _0xc3f7=function(_0x1d6495,_0x52e671){_0x1d6495=_0x1d6495-0x0;var _0x4f9f70=_0x3f7c[_0x1d6495];return _0x4f9f70;};'use strict';var MailAccountEvents=require(_0xc3f7('0x0'));var events=[_0xc3f7('0x1'),_0xc3f7('0x2'),'update'];function createListener(_0x40af1e,_0x772dac){return function(_0x296471){_0x772dac[_0xc3f7('0x3')](_0x40af1e,_0x296471);};}function removeListener(_0xc56b13,_0x40dbc6){return function(){MailAccountEvents[_0xc3f7('0x4')](_0xc56b13,_0x40dbc6);};}exports[_0xc3f7('0x5')]=function(_0xd8f1c6){for(var _0x524236=0x0,_0x160e60=events[_0xc3f7('0x6')];_0x524236<_0x160e60;_0x524236++){var _0x4cff6d=events[_0x524236];var _0x41cc8e=createListener('mailAccount:'+_0x4cff6d,_0xd8f1c6);MailAccountEvents['on'](_0x4cff6d,_0x41cc8e);}};
\ No newline at end of file
+var _0x0737=['length','mailAccount:','./mailAccount.events','save','remove','update','emit'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x0737,0x79));var _0x7073=function(_0x26d509,_0x56b7ff){_0x26d509=_0x26d509-0x0;var _0x19f020=_0x0737[_0x26d509];return _0x19f020;};'use strict';var MailAccountEvents=require(_0x7073('0x0'));var events=[_0x7073('0x1'),_0x7073('0x2'),_0x7073('0x3')];function createListener(_0x2c8fe7,_0x440bdc){return function(_0x5123f6){_0x440bdc[_0x7073('0x4')](_0x2c8fe7,_0x5123f6);};}function removeListener(_0x6d565e,_0x47937a){return function(){MailAccountEvents['removeListener'](_0x6d565e,_0x47937a);};}exports['register']=function(_0x11900d){for(var _0x40d010=0x0,_0xc0f021=events[_0x7073('0x5')];_0x40d010<_0xc0f021;_0x40d010++){var _0x1a93ee=events[_0x40d010];var _0x26b1d8=createListener(_0x7073('0x6')+_0x1a93ee,_0x11900d);MailAccountEvents['on'](_0x1a93ee,_0x26b1d8);}};
\ No newline at end of file
index 4a8c284..d8ab321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd165=['/:id','isAuthenticated','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','show','put'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xd165,0xc0));var _0x5d16=function(_0x463baf,_0x328072){_0x463baf=_0x463baf-0x0;var _0x11eadc=_0xd165[_0x463baf];return _0x11eadc;};'use strict';var multer=require(_0x5d16('0x0'));var util=require(_0x5d16('0x1'));var path=require(_0x5d16('0x2'));var timeout=require('connect-timeout');var express=require(_0x5d16('0x3'));var router=express[_0x5d16('0x4')]();var fs_extra=require(_0x5d16('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x5d16('0x6'));var config=require(_0x5d16('0x7'));var controller=require(_0x5d16('0x8'));router[_0x5d16('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x5d16('0xa')]);router[_0x5d16('0xb')](_0x5d16('0xc'),auth[_0x5d16('0xd')](),controller[_0x5d16('0xe')]);router['delete'](_0x5d16('0xc'),auth[_0x5d16('0xd')](),controller[_0x5d16('0xf')]);module[_0x5d16('0x10')]=router;
\ No newline at end of file
+var _0xea0f=['multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','destroy','exports'];(function(_0x237968,_0x1558e0){var _0x3e06ee=function(_0x498b77){while(--_0x498b77){_0x237968['push'](_0x237968['shift']());}};_0x3e06ee(++_0x1558e0);}(_0xea0f,0x1ba));var _0xfea0=function(_0x580b56,_0x102ab3){_0x580b56=_0x580b56-0x0;var _0x12153f=_0xea0f[_0x580b56];return _0x12153f;};'use strict';var multer=require(_0xfea0('0x0'));var util=require(_0xfea0('0x1'));var path=require(_0xfea0('0x2'));var timeout=require(_0xfea0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xfea0('0x4'));var interaction=require(_0xfea0('0x5'));var config=require(_0xfea0('0x6'));var controller=require(_0xfea0('0x7'));router[_0xfea0('0x8')](_0xfea0('0x9'),auth[_0xfea0('0xa')](),controller[_0xfea0('0xb')]);router[_0xfea0('0xc')](_0xfea0('0x9'),auth['isAuthenticated'](),controller[_0xfea0('0xd')]);router[_0xfea0('0xe')](_0xfea0('0x9'),auth[_0xfea0('0xa')](),controller[_0xfea0('0xf')]);module[_0xfea0('0x10')]=router;
\ No newline at end of file
index 5bed58c..4294e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x401a=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x34417b,_0x4b43dc){var _0x49097f=function(_0x546261){while(--_0x546261){_0x34417b['push'](_0x34417b['shift']());}};_0x49097f(++_0x4b43dc);}(_0x401a,0x17b));var _0xa401=function(_0x284c45,_0x553305){_0x284c45=_0x284c45-0x0;var _0x4e42e4=_0x401a[_0x284c45];return _0x4e42e4;};'use strict';var Sequelize=require(_0xa401('0x0'));module[_0xa401('0x1')]={'priority':{'type':Sequelize[_0xa401('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa401('0x3')],'allowNull':![],'defaultValue':_0xa401('0x4')},'appdata':{'type':Sequelize[_0xa401('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xa401('0x3')],'defaultValue':_0xa401('0x6')}};
\ No newline at end of file
+var _0xa391=['STRING','*,*,*,*','exports','INTEGER','TEXT'];(function(_0x39a50e,_0x4d06e6){var _0x3ce778=function(_0x289c00){while(--_0x289c00){_0x39a50e['push'](_0x39a50e['shift']());}};_0x3ce778(++_0x4d06e6);}(_0xa391,0x115));var _0x1a39=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xa391[_0x32f7d7];return _0x133d09;};'use strict';var Sequelize=require('sequelize');module[_0x1a39('0x0')]={'priority':{'type':Sequelize[_0x1a39('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x1a39('0x2')]()},'description':{'type':Sequelize[_0x1a39('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x1a39('0x4')}};
\ No newline at end of file
index 5a5654b..6a1652b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['util','sox','ejs','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','end','status','json','offset','undefined','count','limit','set','apply','save','update','then','error','stack','name','send','show','model','keys','MailApplication','query','filters','attributes','intersection','length','includeAll','include','find','catch','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache'];(function(_0x1ba3f0,_0x3b220d){var _0x53064d=function(_0x4ac6e3){while(--_0x4ac6e3){_0x1ba3f0['push'](_0x1ba3f0['shift']());}};_0x53064d(++_0x3b220d);}(_0x70e0,0x17b));var _0x070e=function(_0x132f2f,_0x58b304){_0x132f2f=_0x132f2f-0x0;var _0x1ea740=_0x70e0[_0x132f2f];return _0x1ea740;};'use strict';var emlformat=require(_0x070e('0x0'));var rimraf=require(_0x070e('0x1'));var zipdir=require(_0x070e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x070e('0x3'));var BPromise=require(_0x070e('0x4'));var Mustache=require(_0x070e('0x5'));var util=require(_0x070e('0x6'));var path=require('path');var sox=require(_0x070e('0x7'));var csv=require('to-csv');var ejs=require(_0x070e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x070e('0x9'));var jsforce=require(_0x070e('0xa'));var deskjs=require(_0x070e('0xb'));var toCsv=require(_0x070e('0xc'));var querystring=require(_0x070e('0xd'));var Papa=require(_0x070e('0xe'));var Redis=require(_0x070e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x070e('0x10'));var hardwareService=require(_0x070e('0x11'));var logger=require(_0x070e('0x12'))(_0x070e('0x13'));var utils=require(_0x070e('0x14'));var config=require(_0x070e('0x15'));var licenseUtil=require(_0x070e('0x16'));var db=require(_0x070e('0x17'))['db'];function respondWithStatusCode(_0x39d2b9,_0x5bf079){_0x5bf079=_0x5bf079||0xcc;return function(_0x2930b8){if(_0x2930b8){return _0x39d2b9['sendStatus'](_0x5bf079);}return _0x39d2b9['status'](_0x5bf079)[_0x070e('0x18')]();};}function respondWithResult(_0x56c7ba,_0x4a33d2){_0x4a33d2=_0x4a33d2||0xc8;return function(_0x5bae0f){if(_0x5bae0f){return _0x56c7ba[_0x070e('0x19')](_0x4a33d2)[_0x070e('0x1a')](_0x5bae0f);}};}function respondWithFilteredResult(_0x51d14d,_0x5d3a38){return function(_0x373d86){if(_0x373d86){var _0xeae1a5=typeof _0x5d3a38[_0x070e('0x1b')]===_0x070e('0x1c')&&typeof _0x5d3a38['limit']==='undefined';var _0x17e2e4=_0x373d86[_0x070e('0x1d')];var _0x38f6e6=_0xeae1a5?0x0:_0x5d3a38[_0x070e('0x1b')];var _0x364b3f=_0xeae1a5?_0x373d86['count']:_0x5d3a38[_0x070e('0x1b')]+_0x5d3a38[_0x070e('0x1e')];var _0x1ad3de;if(_0x364b3f>=_0x17e2e4){_0x364b3f=_0x17e2e4;_0x1ad3de=0xc8;}else{_0x1ad3de=0xce;}_0x51d14d[_0x070e('0x19')](_0x1ad3de);return _0x51d14d[_0x070e('0x1f')]('Content-Range',_0x38f6e6+'-'+_0x364b3f+'/'+_0x17e2e4)['json'](_0x373d86);}return null;};}function patchUpdates(_0x4e958f){return function(_0x9907cf){try{jsonpatch[_0x070e('0x20')](_0x9907cf,_0x4e958f,!![]);}catch(_0x20dc60){return BPromise['reject'](_0x20dc60);}return _0x9907cf[_0x070e('0x21')]();};}function saveUpdates(_0x5dc5d2,_0xf8dd5d){return function(_0x3f6985){if(_0x3f6985){return _0x3f6985[_0x070e('0x22')](_0x5dc5d2)[_0x070e('0x23')](function(_0x28a1c3){return _0x28a1c3;});}return null;};}function removeEntity(_0xa86797,_0xe405e){return function(_0x164cdf){if(_0x164cdf){return _0x164cdf['destroy']()[_0x070e('0x23')](function(){_0xa86797[_0x070e('0x19')](0xcc)[_0x070e('0x18')]();});}};}function handleEntityNotFound(_0x503f4d,_0xf17c56){return function(_0x5f3e9d){if(!_0x5f3e9d){_0x503f4d['sendStatus'](0x194);}return _0x5f3e9d;};}function handleError(_0x2ccbd7,_0x25f6e){_0x25f6e=_0x25f6e||0x1f4;return function(_0x41deb1){logger[_0x070e('0x24')](_0x41deb1[_0x070e('0x25')]);if(_0x41deb1['name']){delete _0x41deb1[_0x070e('0x26')];}_0x2ccbd7[_0x070e('0x19')](_0x25f6e)[_0x070e('0x27')](_0x41deb1);};}exports[_0x070e('0x28')]=function(_0x43dd96,_0x28d7f2){var _0x1a1892={'raw':!![],'where':{'id':_0x43dd96['params']['id']}},_0x26373b={};_0x26373b[_0x070e('0x29')]=_[_0x070e('0x2a')](db[_0x070e('0x2b')]['rawAttributes']);_0x26373b['query']=_[_0x070e('0x2a')](_0x43dd96[_0x070e('0x2c')]);_0x26373b[_0x070e('0x2d')]=_['intersection'](_0x26373b[_0x070e('0x29')],_0x26373b[_0x070e('0x2c')]);_0x1a1892[_0x070e('0x2e')]=_[_0x070e('0x2f')](_0x26373b['model'],qs['fields'](_0x43dd96['query']['fields']));_0x1a1892[_0x070e('0x2e')]=_0x1a1892['attributes'][_0x070e('0x30')]?_0x1a1892[_0x070e('0x2e')]:_0x26373b['model'];if(_0x43dd96['query'][_0x070e('0x31')]){_0x1a1892[_0x070e('0x32')]=[{'all':!![]}];}_0x1a1892=_['merge']({},_0x1a1892,_0x43dd96['options']);return db[_0x070e('0x2b')][_0x070e('0x33')](_0x1a1892)[_0x070e('0x23')](handleEntityNotFound(_0x28d7f2,null))[_0x070e('0x23')](respondWithResult(_0x28d7f2,null))[_0x070e('0x34')](handleError(_0x28d7f2,null));};exports['update']=function(_0x482cc2,_0x24d17d){if(_0x482cc2[_0x070e('0x35')]['id']){delete _0x482cc2[_0x070e('0x35')]['id'];}return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x482cc2['params']['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x24d17d,null))[_0x070e('0x23')](saveUpdates(_0x482cc2['body'],null))[_0x070e('0x23')](respondWithResult(_0x24d17d,null))[_0x070e('0x34')](handleError(_0x24d17d,null));};exports['destroy']=function(_0x4d4ee8,_0x5ddbe9){return db[_0x070e('0x2b')][_0x070e('0x33')]({'where':{'id':_0x4d4ee8[_0x070e('0x36')]['id']}})[_0x070e('0x23')](handleEntityNotFound(_0x5ddbe9,null))[_0x070e('0x23')](removeEntity(_0x5ddbe9,null))['catch'](handleError(_0x5ddbe9,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x1b852e,_0x185f0d){var _0x2fd5cf=function(_0x1dc638){while(--_0x1dc638){_0x1b852e['push'](_0x1b852e['shift']());}};_0x2fd5cf(++_0x185f0d);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index 88cd64e..a220de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf465=['path','rimraf','../../config/environment','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x95781a,_0x4d9eb6){var _0x5ce205=function(_0x3a5d51){while(--_0x3a5d51){_0x95781a['push'](_0x95781a['shift']());}};_0x5ce205(++_0x4d9eb6);}(_0xf465,0x1e5));var _0x5f46=function(_0x5aaa70,_0x23c9d6){_0x5aaa70=_0x5aaa70-0x0;var _0x49312d=_0xf465[_0x5aaa70];return _0x49312d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5f46('0x0'))(_0x5f46('0x1'));var moment=require(_0x5f46('0x2'));var BPromise=require(_0x5f46('0x3'));var rp=require(_0x5f46('0x4'));var fs=require('fs');var path=require(_0x5f46('0x5'));var rimraf=require(_0x5f46('0x6'));var config=require(_0x5f46('0x7'));var attributes=require('./mailApplication.attributes');module[_0x5f46('0x8')]=function(_0x2e874f,_0x418e28){return _0x2e874f[_0x5f46('0x9')](_0x5f46('0xa'),attributes,{'tableName':_0x5f46('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5f46('0xc'),'collate':_0x5f46('0xd')});};
\ No newline at end of file
+var _0xa968=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','lodash'];(function(_0x3d4876,_0x366386){var _0x58ca9d=function(_0x5bd045){while(--_0x5bd045){_0x3d4876['push'](_0x3d4876['shift']());}};_0x58ca9d(++_0x366386);}(_0xa968,0x151));var _0x8a96=function(_0x56e518,_0x50e1e3){_0x56e518=_0x56e518-0x0;var _0x3f1322=_0xa968[_0x56e518];return _0x3f1322;};'use strict';var _=require(_0x8a96('0x0'));var util=require(_0x8a96('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8a96('0x2'));var BPromise=require(_0x8a96('0x3'));var rp=require(_0x8a96('0x4'));var fs=require('fs');var path=require(_0x8a96('0x5'));var rimraf=require(_0x8a96('0x6'));var config=require(_0x8a96('0x7'));var attributes=require(_0x8a96('0x8'));module[_0x8a96('0x9')]=function(_0x317168,_0x538961){return _0x317168[_0x8a96('0xa')](_0x8a96('0xb'),attributes,{'tableName':_0x8a96('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2571633..15e2a18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e78=['MailApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','UpdateMailApplication','MailApplication','update','body','options','where','attributes','limit','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','then','info'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x6e78,0x16f));var _0x86e7=function(_0x5b08dc,_0x4a8a21){_0x5b08dc=_0x5b08dc-0x0;var _0x3b57c4=_0x6e78[_0x5b08dc];return _0x3b57c4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x86e7('0x0'));var BPromise=require(_0x86e7('0x1'));var rs=require(_0x86e7('0x2'));var fs=require('fs');var Redis=require(_0x86e7('0x3'));var db=require(_0x86e7('0x4'))['db'];var utils=require(_0x86e7('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x86e7('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x86e7('0x7')][_0x86e7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x136fad,_0x1c88b5,_0x4e4ab1){return new BPromise(function(_0x64aafb,_0xf64ce6){return client['request'](_0x136fad,_0x4e4ab1)[_0x86e7('0x9')](function(_0x5e5df1){logger[_0x86e7('0xa')](_0x86e7('0xb'),_0x1c88b5,_0x86e7('0xc'));logger[_0x86e7('0xd')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x1c88b5,_0x86e7('0xc'),JSON[_0x86e7('0xe')](_0x5e5df1));if(_0x5e5df1[_0x86e7('0xf')]){if(_0x5e5df1[_0x86e7('0xf')]['code']===0x1f4){logger[_0x86e7('0xf')](_0x86e7('0xb'),_0x1c88b5,_0x5e5df1['error'][_0x86e7('0x10')]);return _0xf64ce6(_0x5e5df1[_0x86e7('0xf')][_0x86e7('0x10')]);}logger[_0x86e7('0xf')]('MailApplication,\x20%s,\x20%s',_0x1c88b5,_0x5e5df1[_0x86e7('0xf')]['message']);return _0x64aafb(_0x5e5df1['error'][_0x86e7('0x10')]);}else{logger[_0x86e7('0xa')](_0x86e7('0xb'),_0x1c88b5,_0x86e7('0xc'));_0x64aafb(_0x5e5df1[_0x86e7('0x11')]['message']);}})['catch'](function(_0x393fc9){logger[_0x86e7('0xf')]('MailApplication,\x20%s,\x20%s',_0x1c88b5,_0x393fc9);_0xf64ce6(_0x393fc9);});});}exports[_0x86e7('0x12')]=function(_0x51d0dd){var _0x344abe=this;return new Promise(function(_0x51f364,_0x369d9f){return db[_0x86e7('0x13')][_0x86e7('0x14')](_0x51d0dd[_0x86e7('0x15')],{'raw':_0x51d0dd[_0x86e7('0x16')]?_0x51d0dd['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x51d0dd[_0x86e7('0x16')]?_0x51d0dd['options'][_0x86e7('0x17')]||null:null,'attributes':_0x51d0dd[_0x86e7('0x16')]?_0x51d0dd[_0x86e7('0x16')][_0x86e7('0x18')]||null:null,'limit':_0x51d0dd['options']?_0x51d0dd[_0x86e7('0x16')][_0x86e7('0x19')]||null:null})[_0x86e7('0x9')](function(_0x3d3b84){logger[_0x86e7('0xa')](_0x86e7('0x12'),_0x51d0dd);logger['debug'](_0x86e7('0x12'),_0x51d0dd,JSON[_0x86e7('0xe')](_0x3d3b84));_0x51f364(_0x3d3b84);})[_0x86e7('0x1a')](function(_0x39a12c){logger[_0x86e7('0xf')](_0x86e7('0x12'),_0x39a12c[_0x86e7('0x10')],_0x51d0dd);_0x369d9f(_0x344abe['error'](0x1f4,_0x39a12c[_0x86e7('0x10')]));});});};
\ No newline at end of file
+var _0x3f60=['limit','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateMailApplication','MailApplication','body','options','where','attributes'];(function(_0x5c585d,_0x69819f){var _0x3fdd3b=function(_0x5234b4){while(--_0x5234b4){_0x5c585d['push'](_0x5c585d['shift']());}};_0x3fdd3b(++_0x69819f);}(_0x3f60,0x119));var _0x03f6=function(_0x499d15,_0x5376c1){_0x499d15=_0x499d15-0x0;var _0x189291=_0x3f60[_0x499d15];return _0x189291;};'use strict';var _=require(_0x03f6('0x0'));var util=require(_0x03f6('0x1'));var moment=require(_0x03f6('0x2'));var BPromise=require(_0x03f6('0x3'));var rs=require(_0x03f6('0x4'));var fs=require('fs');var Redis=require(_0x03f6('0x5'));var db=require(_0x03f6('0x6'))['db'];var utils=require(_0x03f6('0x7'));var logger=require('../../config/logger')(_0x03f6('0x8'));var config=require('../../config/environment');var jayson=require(_0x03f6('0x9'));var client=jayson[_0x03f6('0xa')][_0x03f6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1af0d7,_0x14b8a4,_0x4d64fc){return new BPromise(function(_0x2eefb3,_0x34f83f){return client['request'](_0x1af0d7,_0x4d64fc)[_0x03f6('0xc')](function(_0x59c78a){logger[_0x03f6('0xd')](_0x03f6('0xe'),_0x14b8a4,_0x03f6('0xf'));logger[_0x03f6('0x10')](_0x03f6('0x11'),_0x14b8a4,_0x03f6('0xf'),JSON[_0x03f6('0x12')](_0x59c78a));if(_0x59c78a['error']){if(_0x59c78a[_0x03f6('0x13')][_0x03f6('0x14')]===0x1f4){logger[_0x03f6('0x13')](_0x03f6('0xe'),_0x14b8a4,_0x59c78a['error'][_0x03f6('0x15')]);return _0x34f83f(_0x59c78a[_0x03f6('0x13')][_0x03f6('0x15')]);}logger[_0x03f6('0x13')](_0x03f6('0xe'),_0x14b8a4,_0x59c78a[_0x03f6('0x13')]['message']);return _0x2eefb3(_0x59c78a[_0x03f6('0x13')][_0x03f6('0x15')]);}else{logger[_0x03f6('0xd')](_0x03f6('0xe'),_0x14b8a4,_0x03f6('0xf'));_0x2eefb3(_0x59c78a[_0x03f6('0x16')]['message']);}})['catch'](function(_0x4b0cd3){logger[_0x03f6('0x13')](_0x03f6('0xe'),_0x14b8a4,_0x4b0cd3);_0x34f83f(_0x4b0cd3);});});}exports[_0x03f6('0x17')]=function(_0x170b75){var _0x15e0bb=this;return new Promise(function(_0x51bc4d,_0x3eb45f){return db[_0x03f6('0x18')]['update'](_0x170b75[_0x03f6('0x19')],{'raw':_0x170b75[_0x03f6('0x1a')]?_0x170b75['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x170b75[_0x03f6('0x1a')]?_0x170b75[_0x03f6('0x1a')][_0x03f6('0x1b')]||null:null,'attributes':_0x170b75[_0x03f6('0x1a')]?_0x170b75['options'][_0x03f6('0x1c')]||null:null,'limit':_0x170b75['options']?_0x170b75[_0x03f6('0x1a')][_0x03f6('0x1d')]||null:null})[_0x03f6('0xc')](function(_0x6b0d6f){logger[_0x03f6('0xd')](_0x03f6('0x17'),_0x170b75);logger[_0x03f6('0x10')](_0x03f6('0x17'),_0x170b75,JSON[_0x03f6('0x12')](_0x6b0d6f));_0x51bc4d(_0x6b0d6f);})[_0x03f6('0x1e')](function(_0x1418ff){logger[_0x03f6('0x13')]('UpdateMailApplication',_0x1418ff[_0x03f6('0x15')],_0x170b75);_0x3eb45f(_0x15e0bb[_0x03f6('0x13')](0x1f4,_0x1418ff[_0x03f6('0x15')]));});});};
\ No newline at end of file
index 5d25bad..1c24c54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x654b=['/:id/download','download','post','/:id/messages','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','destroy','removeTags','exports','express','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages'];(function(_0xf6835d,_0x389aad){var _0x19162f=function(_0x3d9e5c){while(--_0x3d9e5c){_0xf6835d['push'](_0xf6835d['shift']());}};_0x19162f(++_0x389aad);}(_0x654b,0xf9));var _0xb654=function(_0x197065,_0x2e79d0){_0x197065=_0x197065-0x0;var _0x3d9404=_0x654b[_0x197065];return _0x3d9404;};'use strict';var express=require(_0xb654('0x0'));var router=express['Router']();var auth=require(_0xb654('0x1'));var interaction=require(_0xb654('0x2'));var controller=require(_0xb654('0x3'));router[_0xb654('0x4')]('/',auth[_0xb654('0x5')](),controller[_0xb654('0x6')]);router[_0xb654('0x4')](_0xb654('0x7'),auth[_0xb654('0x5')](),controller[_0xb654('0x8')]);router[_0xb654('0x4')](_0xb654('0x9'),auth[_0xb654('0x5')](),controller[_0xb654('0xa')]);router['get']('/:id/messages',auth[_0xb654('0x5')](),controller[_0xb654('0xb')]);router[_0xb654('0x4')](_0xb654('0xc'),auth[_0xb654('0x5')](),controller[_0xb654('0xd')]);router[_0xb654('0xe')]('/',auth[_0xb654('0x5')](),controller['create']);router[_0xb654('0xe')](_0xb654('0xf'),auth[_0xb654('0x5')](),controller[_0xb654('0x10')]);router[_0xb654('0xe')](_0xb654('0x11'),auth['isAuthenticated'](),interaction[_0xb654('0x12')](_0xb654('0x13'),_0xb654('0x14')),controller[_0xb654('0x15')]);router[_0xb654('0x16')](_0xb654('0x9'),auth[_0xb654('0x5')](),interaction[_0xb654('0x12')]('mail',_0xb654('0x17')),controller[_0xb654('0x18')]);router[_0xb654('0x19')](_0xb654('0x9'),auth['isAuthenticated'](),interaction[_0xb654('0x12')]('mail','mailinteraction:destroy'),controller[_0xb654('0x1a')]);router['delete']('/:id/tags',auth[_0xb654('0x5')](),controller[_0xb654('0x1b')]);module[_0xb654('0x1c')]=router;
\ No newline at end of file
+var _0x2ab2=['mail','mailinteraction:addtags','addTags','put','update','delete','/:id','tracked','removeTags','exports','../../components/auth/service','get','isAuthenticated','index','describe','/:id/messages','getMessages','post','create','/:id/tags'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0x2ab2,0xfa));var _0x22ab=function(_0x2f2b55,_0x19bee9){_0x2f2b55=_0x2f2b55-0x0;var _0xd7dd26=_0x2ab2[_0x2f2b55];return _0xd7dd26;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x22ab('0x0'));var interaction=require('../../components/interaction/service');var controller=require('./mailInteraction.controller');router[_0x22ab('0x1')]('/',auth[_0x22ab('0x2')](),controller[_0x22ab('0x3')]);router[_0x22ab('0x1')]('/describe',auth[_0x22ab('0x2')](),controller[_0x22ab('0x4')]);router[_0x22ab('0x1')]('/:id',auth[_0x22ab('0x2')](),controller['show']);router['get'](_0x22ab('0x5'),auth['isAuthenticated'](),controller[_0x22ab('0x6')]);router['get']('/:id/download',auth[_0x22ab('0x2')](),controller['download']);router[_0x22ab('0x7')]('/',auth[_0x22ab('0x2')](),controller[_0x22ab('0x8')]);router['post'](_0x22ab('0x5'),auth[_0x22ab('0x2')](),controller['addMessage']);router['post'](_0x22ab('0x9'),auth[_0x22ab('0x2')](),interaction['tracked'](_0x22ab('0xa'),_0x22ab('0xb')),controller[_0x22ab('0xc')]);router[_0x22ab('0xd')]('/:id',auth['isAuthenticated'](),interaction['tracked']('mail','mailinteraction:update'),controller[_0x22ab('0xe')]);router[_0x22ab('0xf')](_0x22ab('0x10'),auth[_0x22ab('0x2')](),interaction[_0x22ab('0x11')](_0x22ab('0xa'),'mailinteraction:destroy'),controller['destroy']);router[_0x22ab('0xf')](_0x22ab('0x9'),auth[_0x22ab('0x2')](),controller[_0x22ab('0x12')]);module[_0x22ab('0x13')]=router;
\ No newline at end of file
index be712eb..cabb163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6068=['ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE','STRING','TEXT','long'];(function(_0x5d9191,_0x584016){var _0x33b397=function(_0x1d6eb7){while(--_0x1d6eb7){_0x5d9191['push'](_0x5d9191['shift']());}};_0x33b397(++_0x584016);}(_0x6068,0x66));var _0x8606=function(_0x3c1373,_0xd8e0e0){_0x3c1373=_0x3c1373-0x0;var _0xa5b4dc=_0x6068[_0x3c1373];return _0xa5b4dc;};'use strict';var Sequelize=require(_0x8606('0x0'));var iconv=require(_0x8606('0x1'));module[_0x8606('0x2')]={'closed':{'type':Sequelize[_0x8606('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8606('0x4')]},'disposition':{'type':Sequelize[_0x8606('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x8606('0x5')]},'note':{'type':Sequelize[_0x8606('0x5')]},'inReplyTo':{'type':Sequelize[_0x8606('0x5')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x8606('0x6')](_0x8606('0x7'))},'subject':{'type':Sequelize[_0x8606('0x6')]()},'attach':{'type':Sequelize[_0x8606('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x8606('0x4')]},'substatus':{'type':Sequelize[_0x8606('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x8606('0x8')]('in',_0x8606('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8606('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x8606('0x8')]('in',_0x8606('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2809=['long','TEXT','ENUM','out','exports','BOOLEAN','DATE','STRING'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0x2809,0xac));var _0x9280=function(_0x169600,_0x1d1346){_0x169600=_0x169600-0x0;var _0x3bee22=_0x2809[_0x169600];return _0x3bee22;};'use strict';var Sequelize=require('sequelize');var iconv=require('iconv');module[_0x9280('0x0')]={'closed':{'type':Sequelize[_0x9280('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9280('0x2')]},'disposition':{'type':Sequelize[_0x9280('0x3')]},'secondDisposition':{'type':Sequelize[_0x9280('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x9280('0x3')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x9280('0x3')]},'cc':{'type':Sequelize['TEXT'](_0x9280('0x4'))},'subject':{'type':Sequelize[_0x9280('0x5')]()},'attach':{'type':Sequelize[_0x9280('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x9280('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x9280('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x9280('0x6')]('in',_0x9280('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9280('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x9280('0x6')]('in',_0x9280('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9280('0x1')],'defaultValue':![]}};
\ No newline at end of file
index d1df314..5bb2160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4704=['mkdirSync','each','decode','headers','Bcc','basename','existsSync','type','readFileSync','writeFileSync','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','juice','ioredis','../../components/interaction/service','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','socket.io-emitter','./mailInteraction.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','send','MailInteraction','fieldName','key','findAll','query','user','catch','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','create','body','params','describe','MailMessage','addMessage','ids','omit','getMessages','rawAttributes','order','sort','where','MailInteractionId','filter','map','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','rows','addTags','setTags','spread','name','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','root','server','files','join','attachments','transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','get'];(function(_0x4e2db3,_0x5c37a5){var _0x2c2d7a=function(_0x53888e){while(--_0x53888e){_0x4e2db3['push'](_0x4e2db3['shift']());}};_0x2c2d7a(++_0x5c37a5);}(_0x4704,0x1c7));var _0x4470=function(_0x30b547,_0x5b89e9){_0x30b547=_0x30b547-0x0;var _0xab9618=_0x4704[_0x30b547];return _0xab9618;};'use strict';var emlformat=require(_0x4470('0x0'));var rimraf=require(_0x4470('0x1'));var zipdir=require(_0x4470('0x2'));var moment=require(_0x4470('0x3'));var BPromise=require(_0x4470('0x4'));var util=require('util');var path=require(_0x4470('0x5'));var fs=require('fs');var _=require(_0x4470('0x6'));var juice=require(_0x4470('0x7'));var Redis=require(_0x4470('0x8'));var interaction=require(_0x4470('0x9'));var qs=require('../../components/parsers/qs');var logger=require(_0x4470('0xa'))(_0x4470('0xb'));var config=require(_0x4470('0xc'));var db=require(_0x4470('0xd'))['db'];var htmlEntities=require(_0x4470('0xe'));config[_0x4470('0xf')]=_[_0x4470('0x10')](config[_0x4470('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0x4470('0x11'))(new Redis(config[_0x4470('0xf')]));require(_0x4470('0x12'))['register'](socket);function respondWithStatusCode(_0x31b0c6,_0x1257bb){_0x1257bb=_0x1257bb||0xcc;return function(_0x204290){if(_0x204290){return _0x31b0c6[_0x4470('0x13')](_0x1257bb);}return _0x31b0c6[_0x4470('0x14')](_0x1257bb)['end']();};}function respondWithResult(_0x5e4338,_0x58d9ee){_0x58d9ee=_0x58d9ee||0xc8;return function(_0x505231){if(_0x505231){return _0x5e4338[_0x4470('0x14')](_0x58d9ee)[_0x4470('0x15')](_0x505231);}};}function respondWithFilteredResult(_0x2c27c5,_0x37f1ae){return function(_0xd939f){if(_0xd939f){var _0x323ca0=typeof _0x37f1ae[_0x4470('0x16')]===_0x4470('0x17')&&typeof _0x37f1ae[_0x4470('0x18')]===_0x4470('0x17');var _0x43336b=_0xd939f['count'];var _0x262410=_0x323ca0?0x0:_0x37f1ae['offset'];var _0x309645=_0x323ca0?_0xd939f[_0x4470('0x19')]:_0x37f1ae[_0x4470('0x16')]+_0x37f1ae[_0x4470('0x18')];var _0x3490a9;if(_0x309645>=_0x43336b){_0x309645=_0x43336b;_0x3490a9=0xc8;}else{_0x3490a9=0xce;}_0x2c27c5[_0x4470('0x14')](_0x3490a9);return _0x2c27c5[_0x4470('0x1a')](_0x4470('0x1b'),_0x262410+'-'+_0x309645+'/'+_0x43336b)[_0x4470('0x15')](_0xd939f);}return null;};}function saveUpdates(_0x1c991a){return function(_0x49a03b){if(_0x49a03b){return _0x49a03b[_0x4470('0x1c')](_0x1c991a)['then'](function(_0x3369bd){return _0x3369bd;});}return null;};}function removeEntity(_0x5ebb4a){return function(_0x1e610e){if(_0x1e610e){return _0x1e610e[_0x4470('0x1d')]()[_0x4470('0x1e')](function(){_0x5ebb4a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x184d14){return function(_0x187446){if(!_0x187446){_0x184d14['sendStatus'](0x194);}return _0x187446;};}function handleError(_0x1d03ea,_0x43792e){_0x43792e=_0x43792e||0x1f4;return function(_0x17f77a){logger[_0x4470('0x1f')](_0x17f77a['stack']);if(_0x17f77a['name']){delete _0x17f77a['name'];}_0x1d03ea['status'](_0x43792e)[_0x4470('0x20')](_0x17f77a);};}exports['index']=function(_0x5c9090,_0x2d9a17){var _0x106f89={};var _0x117f80=_['map'](db[_0x4470('0x21')]['rawAttributes'],function(_0xb94eb2){return{'name':_0xb94eb2[_0x4470('0x22')],'type':_0xb94eb2['type'][_0x4470('0x23')]};});_0x106f89=qs['getOptions'](_0x117f80,_0x5c9090);return interaction[_0x4470('0x24')]('mail',_0x5c9090[_0x4470('0x25')],_0x5c9090[_0x4470('0x26')],_0x106f89,_0x117f80)[_0x4470('0x1e')](respondWithFilteredResult(_0x2d9a17,_0x106f89))[_0x4470('0x27')](handleError(_0x2d9a17,null));};exports['show']=function(_0x53e916,_0x16aed7){var _0x436715={'raw':![],'where':{'id':_0x53e916['params']['id']}},_0x3cffcb={};_0x3cffcb[_0x4470('0x28')]=_['keys'](db['MailInteraction']['rawAttributes']);_0x3cffcb['query']=_[_0x4470('0x29')](_0x53e916[_0x4470('0x25')]);_0x3cffcb[_0x4470('0x2a')]=_[_0x4470('0x2b')](_0x3cffcb[_0x4470('0x28')],_0x3cffcb['query']);_0x436715[_0x4470('0x2c')]=_[_0x4470('0x2b')](_0x3cffcb[_0x4470('0x28')],qs[_0x4470('0x2d')](_0x53e916[_0x4470('0x25')][_0x4470('0x2d')]));_0x436715['attributes']=_0x436715[_0x4470('0x2c')][_0x4470('0x2e')]?_0x436715[_0x4470('0x2c')]:_0x3cffcb[_0x4470('0x28')];if(_0x53e916['query'][_0x4470('0x2f')]){_0x436715[_0x4470('0x30')]=[{'all':!![]}];}_0x436715=_[_0x4470('0x31')]({},_0x436715,_0x53e916[_0x4470('0x32')]);return db['MailInteraction'][_0x4470('0x33')](_0x436715)['then'](handleEntityNotFound(_0x16aed7,null))[_0x4470('0x1e')](respondWithResult(_0x16aed7,null))[_0x4470('0x27')](handleError(_0x16aed7,null));};exports[_0x4470('0x34')]=function(_0x727981,_0x37db1e){return db['MailInteraction']['create'](_0x727981[_0x4470('0x35')],{})['then'](respondWithResult(_0x37db1e,0xc9))[_0x4470('0x27')](handleError(_0x37db1e,null));};exports[_0x4470('0x1c')]=function(_0x4bd8ef,_0x219c8f){if(_0x4bd8ef[_0x4470('0x35')]['id']){delete _0x4bd8ef['body']['id'];}return db[_0x4470('0x21')][_0x4470('0x33')]({'where':{'id':_0x4bd8ef[_0x4470('0x36')]['id']}})[_0x4470('0x1e')](handleEntityNotFound(_0x219c8f,null))[_0x4470('0x1e')](saveUpdates(_0x4bd8ef[_0x4470('0x35')],null))[_0x4470('0x1e')](respondWithResult(_0x219c8f,null))[_0x4470('0x27')](handleError(_0x219c8f,null));};exports[_0x4470('0x1d')]=function(_0x3084cf,_0x2f76db){return db[_0x4470('0x21')][_0x4470('0x33')]({'where':{'id':_0x3084cf[_0x4470('0x36')]['id']}})['then'](handleEntityNotFound(_0x2f76db,null))['then'](removeEntity(_0x2f76db,null))[_0x4470('0x27')](handleError(_0x2f76db,null));};exports[_0x4470('0x37')]=function(_0x14e67d,_0x4db1dc){return db[_0x4470('0x21')]['describe']()['then'](respondWithResult(_0x4db1dc,null))[_0x4470('0x27')](handleError(_0x4db1dc,null));};exports['addMessage']=function(_0x546b8c,_0x384011){return db[_0x4470('0x38')][_0x4470('0x33')]({'where':{'id':_0x546b8c[_0x4470('0x36')]['id']}})[_0x4470('0x1e')](handleEntityNotFound(_0x384011,null))[_0x4470('0x1e')](function(_0x3cd99b){if(_0x3cd99b){return _0x3cd99b[_0x4470('0x39')](_0x546b8c[_0x4470('0x35')][_0x4470('0x3a')],_[_0x4470('0x3b')](_0x546b8c[_0x4470('0x35')],[_0x4470('0x3a'),'id'])||{});}})[_0x4470('0x1e')](respondWithResult(_0x384011,null))[_0x4470('0x27')](handleError(_0x384011,null));};exports[_0x4470('0x3c')]=function(_0x4b9607,_0x562b41){var _0x16bd6e={'raw':![],'where':{}};var _0x1c88b6={};var _0x16ed48={'count':0x0,'rows':[]};return db[_0x4470('0x21')]['findOne']({'where':{'id':_0x4b9607[_0x4470('0x36')]['id']}})[_0x4470('0x1e')](handleEntityNotFound(_0x562b41,null))['then'](function(_0x518d34){if(_0x518d34){_0x1c88b6[_0x4470('0x28')]=_['keys'](db[_0x4470('0x38')][_0x4470('0x3d')]);_0x1c88b6[_0x4470('0x25')]=_['keys'](_0x4b9607[_0x4470('0x25')]);_0x1c88b6['filters']=_['intersection'](_0x1c88b6[_0x4470('0x28')],_0x1c88b6['query']);_0x16bd6e[_0x4470('0x2c')]=_[_0x4470('0x2b')](_0x1c88b6[_0x4470('0x28')],qs[_0x4470('0x2d')](_0x4b9607[_0x4470('0x25')][_0x4470('0x2d')]));_0x16bd6e['attributes']=_0x16bd6e[_0x4470('0x2c')]['length']?_0x16bd6e[_0x4470('0x2c')]:_0x1c88b6[_0x4470('0x28')];if(!_0x4b9607[_0x4470('0x25')]['hasOwnProperty']('nolimit')){_0x16bd6e['limit']=qs[_0x4470('0x18')](_0x4b9607[_0x4470('0x25')]['limit']);_0x16bd6e[_0x4470('0x16')]=qs['offset'](_0x4b9607[_0x4470('0x25')][_0x4470('0x16')]);}_0x16bd6e[_0x4470('0x3e')]=qs[_0x4470('0x3f')](_0x4b9607['query'][_0x4470('0x3f')]);_0x16bd6e[_0x4470('0x40')]=qs['filters'](_['pick'](_0x4b9607[_0x4470('0x25')],_0x1c88b6[_0x4470('0x2a')]));_0x16bd6e[_0x4470('0x40')][_0x4470('0x41')]=_0x518d34['id'];if(_0x4b9607['query'][_0x4470('0x42')]){_0x16bd6e[_0x4470('0x40')]=_['merge'](_0x16bd6e['where'],{'$or':_[_0x4470('0x43')](_0x16bd6e[_0x4470('0x2c')],function(_0x29ef12){var _0x3a89bd={};_0x3a89bd[_0x29ef12]={'$like':'%'+_0x4b9607['query'][_0x4470('0x42')]+'%'};return _0x3a89bd;})});}if(_0x4b9607[_0x4470('0x25')]['$gte']){var _0x48ee32=_0x4b9607[_0x4470('0x25')]['$gte'][_0x4470('0x44')](',');var _0x1ea4f3={};_0x1ea4f3[_0x48ee32[0x0]]={'$gte':moment(_0x48ee32[0x1])[_0x4470('0x45')](_0x4470('0x46'))};_0x16bd6e[_0x4470('0x40')]=_[_0x4470('0x31')](_0x16bd6e['where'],_0x1ea4f3);}_0x16bd6e=_['merge']({},_0x16bd6e,_0x4b9607[_0x4470('0x32')]);return db['MailMessage'][_0x4470('0x19')]({'where':_0x16bd6e[_0x4470('0x40')]})['then'](function(_0x433ab4){_0x16ed48[_0x4470('0x19')]=_0x433ab4;if(_0x4b9607['query'][_0x4470('0x2f')]){_0x16bd6e[_0x4470('0x30')]=[{'all':!![]}];}return db[_0x4470('0x38')][_0x4470('0x24')](_0x16bd6e);})[_0x4470('0x1e')](function(_0x5a2879){if(_0x4b9607['query'][_0x4470('0x47')]===_0x4470('0x48')){for(var _0x5700c2=0x0;_0x5700c2<_0x5a2879[_0x4470('0x2e')];_0x5700c2++){_0x5a2879[_0x5700c2][_0x4470('0x35')]=juice(_0x5a2879[_0x5700c2][_0x4470('0x35')]);}}_0x16ed48[_0x4470('0x49')]=_0x5a2879;return _0x16ed48;});}})[_0x4470('0x1e')](respondWithFilteredResult(_0x562b41,_0x16bd6e))['catch'](handleError(_0x562b41,null));};exports[_0x4470('0x4a')]=function(_0x3760b0,_0x1ce7c6){return db[_0x4470('0x21')][_0x4470('0x33')]({'where':{'id':_0x3760b0['params']['id']}})['then'](handleEntityNotFound(_0x1ce7c6,null))[_0x4470('0x1e')](function(_0x28d6b8){if(_0x28d6b8){return _0x28d6b8[_0x4470('0x4b')](_0x3760b0[_0x4470('0x35')][_0x4470('0x3a')],_[_0x4470('0x3b')](_0x3760b0['body'],[_0x4470('0x3a'),'id'])||{})[_0x4470('0x4c')](function(){return db['Tag'][_0x4470('0x24')]({'attributes':['id',_0x4470('0x4d'),_0x4470('0x4e')],'where':{'id':_0x3760b0[_0x4470('0x35')][_0x4470('0x3a')]}});})[_0x4470('0x1e')](function(_0xeba11f){socket[_0x4470('0x4f')](_0x4470('0x50'),{'id':Number(_0x3760b0[_0x4470('0x36')]['id']),'tags':_0xeba11f||[]});return{'id':Number(_0x3760b0[_0x4470('0x36')]['id']),'tags':_0xeba11f||[]};});}})[_0x4470('0x1e')](respondWithResult(_0x1ce7c6,null))['catch'](handleError(_0x1ce7c6,null));};exports[_0x4470('0x51')]=function(_0x28c832,_0x17a12c){return db[_0x4470('0x21')]['find']({'where':{'id':_0x28c832[_0x4470('0x36')]['id']}})['then'](handleEntityNotFound(_0x17a12c,null))[_0x4470('0x1e')](function(_0x17273f){if(_0x17273f){return _0x17273f[_0x4470('0x51')](_0x28c832[_0x4470('0x25')][_0x4470('0x3a')]);}})[_0x4470('0x1e')](respondWithStatusCode(_0x17a12c,null))[_0x4470('0x27')](handleError(_0x17a12c,null));};exports[_0x4470('0x52')]=function(_0x5a2035,_0x3e1078){var _0x3ab408=moment()[_0x4470('0x53')]()[_0x4470('0x54')]();var _0x1a2d03=path['join'](config[_0x4470('0x55')],_0x4470('0x56'),_0x4470('0x57'),'tmp');var _0x5f0e79=path[_0x4470('0x58')](config['root'],_0x4470('0x56'),_0x4470('0x57'),_0x4470('0x59'));var _0x795849=path[_0x4470('0x58')](_0x1a2d03,_0x3ab408);var _0x4ce6b6=util[_0x4470('0x45')](_0x4470('0x5a'),_0x5a2035[_0x4470('0x36')]['id'],_0x3ab408);var _0xeab576=path[_0x4470('0x58')](_0x1a2d03,_0x4ce6b6);var _0x5158cc=[];if(_0x5a2035[_0x4470('0x25')][_0x4470('0x59')]){_0x5158cc[_0x4470('0x5b')]({'model':db[_0x4470('0x5c')],'as':_0x4470('0x5d'),'raw':!![]});}var _0x3d791d=[{'model':db[_0x4470('0x38')],'as':_0x4470('0x5e'),'attributes':['id',_0x4470('0x35'),_0x4470('0x5f'),'to','cc',_0x4470('0x60'),_0x4470('0x61'),_0x4470('0x62')],'where':{'secret':![]},'order':qs[_0x4470('0x3f')]('id'),'include':_0x5158cc}];return db[_0x4470('0x21')]['find']({'where':{'id':_0x5a2035[_0x4470('0x36')]['id']},'include':_0x3d791d})['then'](handleEntityNotFound(_0x3e1078,null))['then'](function(_0x3bbd75){if(_0x3bbd75&&_0x3bbd75[_0x4470('0x5e')]){var _0xa0310c=_0x3bbd75[_0x4470('0x63')]({'plain':!![]});fs[_0x4470('0x64')](_0x795849);return BPromise[_0x4470('0x65')](_0xa0310c[_0x4470('0x5e')],function(_0x461ad7,_0x10299a){var _0x501d90={'from':_0x461ad7[_0x4470('0x5f')],'to':_0x461ad7['to']||'missing.recipient@your.company.com','subject':_0x461ad7[_0x4470('0x61')],'html':htmlEntities[_0x4470('0x66')](_0x461ad7['body']),'headers':{'Date':moment(_0x461ad7[_0x4470('0x62')])[_0x4470('0x45')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x461ad7['cc']){_0x501d90[_0x4470('0x67')]['Cc']=_0x461ad7['cc'];}if(_0x461ad7[_0x4470('0x60')]){_0x501d90[_0x4470('0x67')][_0x4470('0x68')]=_0x461ad7[_0x4470('0x60')];}return new BPromise(function(_0xf6675,_0x392fdf){if(_0x461ad7[_0x4470('0x5d')]){for(var _0x301f8e=0x0;_0x301f8e<_0x461ad7[_0x4470('0x5d')]['length'];_0x301f8e++){var _0x2c8e77=_0x461ad7['Attachments'][_0x301f8e];var _0xdc10a5=path[_0x4470('0x58')](_0x5f0e79,_0x2c8e77[_0x4470('0x69')]);if(fs[_0x4470('0x6a')](_0xdc10a5)){_0x501d90[_0x4470('0x59')][_0x4470('0x5b')]({'name':_0x2c8e77[_0x4470('0x4d')],'contentType':_0x2c8e77[_0x4470('0x6b')],'data':fs[_0x4470('0x6c')](_0xdc10a5)});}}}emlformat['build'](_0x501d90,function(_0x4cba4b,_0x17934f){if(_0x4cba4b)return _0x392fdf(_0x4cba4b);fs[_0x4470('0x6d')](path[_0x4470('0x58')](_0x795849,util[_0x4470('0x45')]('message%d.eml',_0x10299a)),_0x17934f);return _0xf6675(_0x17934f);});});})['then'](function(){return new BPromise(function(_0x134866,_0x8bfeed){zipdir(_0x795849,{'saveTo':_0xeab576},function(_0x49208f,_0x186015){if(_0x49208f)return _0x8bfeed(_0x49208f);return _0x134866(_0x186015);});})[_0x4470('0x1e')](function(){return new BPromise(function(_0x5a0494,_0x17b995){rimraf(_0x795849,function(_0x5c772b){if(_0x5c772b)_0x17b995(_0x5c772b);return _0x5a0494();});});})[_0x4470('0x1e')](function(){return _0x3e1078[_0x4470('0x52')](_0xeab576,_0x4ce6b6,function(_0x7f7d2e){if(!_0x7f7d2e)fs[_0x4470('0x6e')](_0xeab576);});});});}else{return _0x3e1078[_0x4470('0x13')](0xc8);}})[_0x4470('0x27')](handleError(_0x3e1078,null));};
\ No newline at end of file
+var _0x7fae=['length','includeAll','include','options','find','create','body','update','describe','addMessage','ids','omit','getMessages','findOne','MailMessage','hasOwnProperty','nolimit','order','sort','where','filters','pick','MailInteractionId','filter','merge','$gte','format','YYYY-MM-DD\x20HH:mm:ss','count','inlineCss','true','rows','addTags','spread','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','transcript-%d-%s.zip','attachments','push','Attachments','Messages','from','bcc','subject','createdAt','get','mkdirSync','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','type','readFileSync','writeFileSync','message%d.eml','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','moment','bluebird','path','lodash','juice','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','html-entities','redis','defaults','socket.io-emitter','status','end','json','offset','undefined','limit','Content-Range','then','destroy','error','name','send','index','map','MailInteraction','rawAttributes','fieldName','key','getOptions','findAll','mail','query','catch','params','model','keys','intersection','attributes','fields'];(function(_0x27a848,_0x2dfc9a){var _0x57dbb0=function(_0x403443){while(--_0x403443){_0x27a848['push'](_0x27a848['shift']());}};_0x57dbb0(++_0x2dfc9a);}(_0x7fae,0xb1));var _0xe7fa=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x7fae[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require(_0xe7fa('0x0'));var rimraf=require(_0xe7fa('0x1'));var zipdir=require(_0xe7fa('0x2'));var moment=require(_0xe7fa('0x3'));var BPromise=require(_0xe7fa('0x4'));var util=require('util');var path=require(_0xe7fa('0x5'));var fs=require('fs');var _=require(_0xe7fa('0x6'));var juice=require(_0xe7fa('0x7'));var Redis=require(_0xe7fa('0x8'));var interaction=require(_0xe7fa('0x9'));var qs=require(_0xe7fa('0xa'));var logger=require(_0xe7fa('0xb'))(_0xe7fa('0xc'));var config=require(_0xe7fa('0xd'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0xe7fa('0xe'));config[_0xe7fa('0xf')]=_[_0xe7fa('0x10')](config[_0xe7fa('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0xe7fa('0x11'))(new Redis(config[_0xe7fa('0xf')]));require('./mailInteraction.socket')['register'](socket);function respondWithStatusCode(_0x29a47e,_0x2033e8){_0x2033e8=_0x2033e8||0xcc;return function(_0x2b61ab){if(_0x2b61ab){return _0x29a47e['sendStatus'](_0x2033e8);}return _0x29a47e[_0xe7fa('0x12')](_0x2033e8)[_0xe7fa('0x13')]();};}function respondWithResult(_0x47a751,_0x3b6af6){_0x3b6af6=_0x3b6af6||0xc8;return function(_0x225a27){if(_0x225a27){return _0x47a751[_0xe7fa('0x12')](_0x3b6af6)[_0xe7fa('0x14')](_0x225a27);}};}function respondWithFilteredResult(_0x166ad9,_0x387708){return function(_0x295e6d){if(_0x295e6d){var _0x27dfa6=typeof _0x387708[_0xe7fa('0x15')]===_0xe7fa('0x16')&&typeof _0x387708[_0xe7fa('0x17')]===_0xe7fa('0x16');var _0x1bb401=_0x295e6d['count'];var _0xab53e8=_0x27dfa6?0x0:_0x387708[_0xe7fa('0x15')];var _0x664f66=_0x27dfa6?_0x295e6d['count']:_0x387708['offset']+_0x387708['limit'];var _0x42da0e;if(_0x664f66>=_0x1bb401){_0x664f66=_0x1bb401;_0x42da0e=0xc8;}else{_0x42da0e=0xce;}_0x166ad9[_0xe7fa('0x12')](_0x42da0e);return _0x166ad9['set'](_0xe7fa('0x18'),_0xab53e8+'-'+_0x664f66+'/'+_0x1bb401)[_0xe7fa('0x14')](_0x295e6d);}return null;};}function saveUpdates(_0x4ecb84){return function(_0x2b5fe3){if(_0x2b5fe3){return _0x2b5fe3['update'](_0x4ecb84)[_0xe7fa('0x19')](function(_0xce27a7){return _0xce27a7;});}return null;};}function removeEntity(_0x859dfc){return function(_0x55d38c){if(_0x55d38c){return _0x55d38c[_0xe7fa('0x1a')]()['then'](function(){_0x859dfc[_0xe7fa('0x12')](0xcc)[_0xe7fa('0x13')]();});}};}function handleEntityNotFound(_0x259d79){return function(_0x133e97){if(!_0x133e97){_0x259d79['sendStatus'](0x194);}return _0x133e97;};}function handleError(_0x3234e8,_0x2169d4){_0x2169d4=_0x2169d4||0x1f4;return function(_0xf26a0){logger[_0xe7fa('0x1b')](_0xf26a0['stack']);if(_0xf26a0[_0xe7fa('0x1c')]){delete _0xf26a0['name'];}_0x3234e8[_0xe7fa('0x12')](_0x2169d4)[_0xe7fa('0x1d')](_0xf26a0);};}exports[_0xe7fa('0x1e')]=function(_0x1939e0,_0x34fec6){var _0x50fb14={};var _0x8030c=_[_0xe7fa('0x1f')](db[_0xe7fa('0x20')][_0xe7fa('0x21')],function(_0x38d17c){return{'name':_0x38d17c[_0xe7fa('0x22')],'type':_0x38d17c['type'][_0xe7fa('0x23')]};});_0x50fb14=qs[_0xe7fa('0x24')](_0x8030c,_0x1939e0);return interaction[_0xe7fa('0x25')](_0xe7fa('0x26'),_0x1939e0[_0xe7fa('0x27')],_0x1939e0['user'],_0x50fb14,_0x8030c)[_0xe7fa('0x19')](respondWithFilteredResult(_0x34fec6,_0x50fb14))[_0xe7fa('0x28')](handleError(_0x34fec6,null));};exports['show']=function(_0x53f478,_0x397808){var _0x20755c={'raw':![],'where':{'id':_0x53f478[_0xe7fa('0x29')]['id']}},_0x5a1784={};_0x5a1784[_0xe7fa('0x2a')]=_[_0xe7fa('0x2b')](db[_0xe7fa('0x20')][_0xe7fa('0x21')]);_0x5a1784[_0xe7fa('0x27')]=_[_0xe7fa('0x2b')](_0x53f478['query']);_0x5a1784['filters']=_[_0xe7fa('0x2c')](_0x5a1784[_0xe7fa('0x2a')],_0x5a1784[_0xe7fa('0x27')]);_0x20755c[_0xe7fa('0x2d')]=_['intersection'](_0x5a1784[_0xe7fa('0x2a')],qs[_0xe7fa('0x2e')](_0x53f478[_0xe7fa('0x27')]['fields']));_0x20755c[_0xe7fa('0x2d')]=_0x20755c[_0xe7fa('0x2d')][_0xe7fa('0x2f')]?_0x20755c[_0xe7fa('0x2d')]:_0x5a1784[_0xe7fa('0x2a')];if(_0x53f478[_0xe7fa('0x27')][_0xe7fa('0x30')]){_0x20755c[_0xe7fa('0x31')]=[{'all':!![]}];}_0x20755c=_['merge']({},_0x20755c,_0x53f478[_0xe7fa('0x32')]);return db[_0xe7fa('0x20')][_0xe7fa('0x33')](_0x20755c)[_0xe7fa('0x19')](handleEntityNotFound(_0x397808,null))[_0xe7fa('0x19')](respondWithResult(_0x397808,null))[_0xe7fa('0x28')](handleError(_0x397808,null));};exports[_0xe7fa('0x34')]=function(_0xbe9a21,_0x2d60f1){return db[_0xe7fa('0x20')]['create'](_0xbe9a21[_0xe7fa('0x35')],{})['then'](respondWithResult(_0x2d60f1,0xc9))['catch'](handleError(_0x2d60f1,null));};exports[_0xe7fa('0x36')]=function(_0x4408ea,_0x3762bc){if(_0x4408ea['body']['id']){delete _0x4408ea[_0xe7fa('0x35')]['id'];}return db[_0xe7fa('0x20')][_0xe7fa('0x33')]({'where':{'id':_0x4408ea[_0xe7fa('0x29')]['id']}})['then'](handleEntityNotFound(_0x3762bc,null))[_0xe7fa('0x19')](saveUpdates(_0x4408ea[_0xe7fa('0x35')],null))[_0xe7fa('0x19')](respondWithResult(_0x3762bc,null))[_0xe7fa('0x28')](handleError(_0x3762bc,null));};exports[_0xe7fa('0x1a')]=function(_0x1a49e6,_0x2695bb){return db[_0xe7fa('0x20')][_0xe7fa('0x33')]({'where':{'id':_0x1a49e6[_0xe7fa('0x29')]['id']}})[_0xe7fa('0x19')](handleEntityNotFound(_0x2695bb,null))['then'](removeEntity(_0x2695bb,null))['catch'](handleError(_0x2695bb,null));};exports[_0xe7fa('0x37')]=function(_0xfabcb0,_0xcf6c01){return db['MailInteraction'][_0xe7fa('0x37')]()[_0xe7fa('0x19')](respondWithResult(_0xcf6c01,null))[_0xe7fa('0x28')](handleError(_0xcf6c01,null));};exports[_0xe7fa('0x38')]=function(_0x4e0086,_0x1ab412){return db['MailMessage'][_0xe7fa('0x33')]({'where':{'id':_0x4e0086[_0xe7fa('0x29')]['id']}})[_0xe7fa('0x19')](handleEntityNotFound(_0x1ab412,null))[_0xe7fa('0x19')](function(_0x57d421){if(_0x57d421){return _0x57d421['addMessage'](_0x4e0086['body'][_0xe7fa('0x39')],_[_0xe7fa('0x3a')](_0x4e0086[_0xe7fa('0x35')],['ids','id'])||{});}})[_0xe7fa('0x19')](respondWithResult(_0x1ab412,null))[_0xe7fa('0x28')](handleError(_0x1ab412,null));};exports[_0xe7fa('0x3b')]=function(_0x16527e,_0x44c584){var _0x440076={'raw':![],'where':{}};var _0x13f095={};var _0x2bf035={'count':0x0,'rows':[]};return db[_0xe7fa('0x20')][_0xe7fa('0x3c')]({'where':{'id':_0x16527e['params']['id']}})[_0xe7fa('0x19')](handleEntityNotFound(_0x44c584,null))[_0xe7fa('0x19')](function(_0x3ae994){if(_0x3ae994){_0x13f095[_0xe7fa('0x2a')]=_[_0xe7fa('0x2b')](db[_0xe7fa('0x3d')][_0xe7fa('0x21')]);_0x13f095['query']=_[_0xe7fa('0x2b')](_0x16527e['query']);_0x13f095['filters']=_['intersection'](_0x13f095[_0xe7fa('0x2a')],_0x13f095[_0xe7fa('0x27')]);_0x440076[_0xe7fa('0x2d')]=_['intersection'](_0x13f095[_0xe7fa('0x2a')],qs[_0xe7fa('0x2e')](_0x16527e['query'][_0xe7fa('0x2e')]));_0x440076[_0xe7fa('0x2d')]=_0x440076[_0xe7fa('0x2d')]['length']?_0x440076[_0xe7fa('0x2d')]:_0x13f095[_0xe7fa('0x2a')];if(!_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x3e')](_0xe7fa('0x3f'))){_0x440076['limit']=qs['limit'](_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x17')]);_0x440076['offset']=qs[_0xe7fa('0x15')](_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x15')]);}_0x440076[_0xe7fa('0x40')]=qs['sort'](_0x16527e['query'][_0xe7fa('0x41')]);_0x440076[_0xe7fa('0x42')]=qs[_0xe7fa('0x43')](_[_0xe7fa('0x44')](_0x16527e[_0xe7fa('0x27')],_0x13f095[_0xe7fa('0x43')]));_0x440076[_0xe7fa('0x42')][_0xe7fa('0x45')]=_0x3ae994['id'];if(_0x16527e['query'][_0xe7fa('0x46')]){_0x440076[_0xe7fa('0x42')]=_[_0xe7fa('0x47')](_0x440076[_0xe7fa('0x42')],{'$or':_[_0xe7fa('0x1f')](_0x440076[_0xe7fa('0x2d')],function(_0xa2c944){var _0x4623d2={};_0x4623d2[_0xa2c944]={'$like':'%'+_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x46')]+'%'};return _0x4623d2;})});}if(_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x48')]){var _0x3c2948=_0x16527e[_0xe7fa('0x27')]['$gte']['split'](',');var _0x512f80={};_0x512f80[_0x3c2948[0x0]]={'$gte':moment(_0x3c2948[0x1])[_0xe7fa('0x49')](_0xe7fa('0x4a'))};_0x440076[_0xe7fa('0x42')]=_['merge'](_0x440076['where'],_0x512f80);}_0x440076=_[_0xe7fa('0x47')]({},_0x440076,_0x16527e[_0xe7fa('0x32')]);return db[_0xe7fa('0x3d')][_0xe7fa('0x4b')]({'where':_0x440076['where']})[_0xe7fa('0x19')](function(_0x1520c3){_0x2bf035['count']=_0x1520c3;if(_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x30')]){_0x440076['include']=[{'all':!![]}];}return db[_0xe7fa('0x3d')][_0xe7fa('0x25')](_0x440076);})[_0xe7fa('0x19')](function(_0x30773c){if(_0x16527e[_0xe7fa('0x27')][_0xe7fa('0x4c')]===_0xe7fa('0x4d')){for(var _0x1c3f1d=0x0;_0x1c3f1d<_0x30773c['length'];_0x1c3f1d++){_0x30773c[_0x1c3f1d][_0xe7fa('0x35')]=juice(_0x30773c[_0x1c3f1d][_0xe7fa('0x35')]);}}_0x2bf035[_0xe7fa('0x4e')]=_0x30773c;return _0x2bf035;});}})[_0xe7fa('0x19')](respondWithFilteredResult(_0x44c584,_0x440076))[_0xe7fa('0x28')](handleError(_0x44c584,null));};exports[_0xe7fa('0x4f')]=function(_0x4f9249,_0x5733f2){return db[_0xe7fa('0x20')][_0xe7fa('0x33')]({'where':{'id':_0x4f9249[_0xe7fa('0x29')]['id']}})[_0xe7fa('0x19')](handleEntityNotFound(_0x5733f2,null))[_0xe7fa('0x19')](function(_0x4d0dd3){if(_0x4d0dd3){return _0x4d0dd3['setTags'](_0x4f9249[_0xe7fa('0x35')][_0xe7fa('0x39')],_['omit'](_0x4f9249['body'],[_0xe7fa('0x39'),'id'])||{})[_0xe7fa('0x50')](function(){return db['Tag'][_0xe7fa('0x25')]({'attributes':['id',_0xe7fa('0x1c'),'color'],'where':{'id':_0x4f9249[_0xe7fa('0x35')]['ids']}});})[_0xe7fa('0x19')](function(_0x27a095){socket[_0xe7fa('0x51')](_0xe7fa('0x52'),{'id':Number(_0x4f9249[_0xe7fa('0x29')]['id']),'tags':_0x27a095||[]});return{'id':Number(_0x4f9249[_0xe7fa('0x29')]['id']),'tags':_0x27a095||[]};});}})[_0xe7fa('0x19')](respondWithResult(_0x5733f2,null))[_0xe7fa('0x28')](handleError(_0x5733f2,null));};exports[_0xe7fa('0x53')]=function(_0x3e44f8,_0x1246cb){return db['MailInteraction'][_0xe7fa('0x33')]({'where':{'id':_0x3e44f8[_0xe7fa('0x29')]['id']}})['then'](handleEntityNotFound(_0x1246cb,null))[_0xe7fa('0x19')](function(_0x5c00a1){if(_0x5c00a1){return _0x5c00a1['removeTags'](_0x3e44f8[_0xe7fa('0x27')][_0xe7fa('0x39')]);}})[_0xe7fa('0x19')](respondWithStatusCode(_0x1246cb,null))['catch'](handleError(_0x1246cb,null));};exports[_0xe7fa('0x54')]=function(_0x152f81,_0x4c0502){var _0x31c9ea=moment()[_0xe7fa('0x55')]()[_0xe7fa('0x56')]();var _0x3f8432=path[_0xe7fa('0x57')](config['root'],'server','files','tmp');var _0x3b9aa1=path['join'](config[_0xe7fa('0x58')],_0xe7fa('0x59'),'files','attachments');var _0x3271f4=path[_0xe7fa('0x57')](_0x3f8432,_0x31c9ea);var _0x47a29d=util[_0xe7fa('0x49')](_0xe7fa('0x5a'),_0x152f81[_0xe7fa('0x29')]['id'],_0x31c9ea);var _0x429a65=path[_0xe7fa('0x57')](_0x3f8432,_0x47a29d);var _0x414f6d=[];if(_0x152f81[_0xe7fa('0x27')][_0xe7fa('0x5b')]){_0x414f6d[_0xe7fa('0x5c')]({'model':db['Attachment'],'as':_0xe7fa('0x5d'),'raw':!![]});}var _0x501b7a=[{'model':db[_0xe7fa('0x3d')],'as':_0xe7fa('0x5e'),'attributes':['id',_0xe7fa('0x35'),_0xe7fa('0x5f'),'to','cc',_0xe7fa('0x60'),_0xe7fa('0x61'),_0xe7fa('0x62')],'where':{'secret':![]},'order':qs[_0xe7fa('0x41')]('id'),'include':_0x414f6d}];return db[_0xe7fa('0x20')]['find']({'where':{'id':_0x152f81[_0xe7fa('0x29')]['id']},'include':_0x501b7a})[_0xe7fa('0x19')](handleEntityNotFound(_0x4c0502,null))[_0xe7fa('0x19')](function(_0x3fd66b){if(_0x3fd66b&&_0x3fd66b[_0xe7fa('0x5e')]){var _0xd52f71=_0x3fd66b[_0xe7fa('0x63')]({'plain':!![]});fs[_0xe7fa('0x64')](_0x3271f4);return BPromise[_0xe7fa('0x65')](_0xd52f71[_0xe7fa('0x5e')],function(_0x15c7f5,_0x248e67){var _0x2261c2={'from':_0x15c7f5['from'],'to':_0x15c7f5['to']||'missing.recipient@your.company.com','subject':_0x15c7f5[_0xe7fa('0x61')],'html':htmlEntities['decode'](_0x15c7f5[_0xe7fa('0x35')]),'headers':{'Date':moment(_0x15c7f5[_0xe7fa('0x62')])[_0xe7fa('0x49')](_0xe7fa('0x66'))},'attachments':[]};if(_0x15c7f5['cc']){_0x2261c2[_0xe7fa('0x67')]['Cc']=_0x15c7f5['cc'];}if(_0x15c7f5[_0xe7fa('0x60')]){_0x2261c2[_0xe7fa('0x67')][_0xe7fa('0x68')]=_0x15c7f5[_0xe7fa('0x60')];}return new BPromise(function(_0x9ff1df,_0x3a239b){if(_0x15c7f5[_0xe7fa('0x5d')]){for(var _0x5ddecc=0x0;_0x5ddecc<_0x15c7f5[_0xe7fa('0x5d')][_0xe7fa('0x2f')];_0x5ddecc++){var _0x52af8d=_0x15c7f5[_0xe7fa('0x5d')][_0x5ddecc];var _0x312b86=path[_0xe7fa('0x57')](_0x3b9aa1,_0x52af8d[_0xe7fa('0x69')]);if(fs['existsSync'](_0x312b86)){_0x2261c2[_0xe7fa('0x5b')]['push']({'name':_0x52af8d[_0xe7fa('0x1c')],'contentType':_0x52af8d[_0xe7fa('0x6a')],'data':fs[_0xe7fa('0x6b')](_0x312b86)});}}}emlformat['build'](_0x2261c2,function(_0x7262cd,_0x2c9921){if(_0x7262cd)return _0x3a239b(_0x7262cd);fs[_0xe7fa('0x6c')](path[_0xe7fa('0x57')](_0x3271f4,util['format'](_0xe7fa('0x6d'),_0x248e67)),_0x2c9921);return _0x9ff1df(_0x2c9921);});});})[_0xe7fa('0x19')](function(){return new BPromise(function(_0x3d6cfd,_0x240e63){zipdir(_0x3271f4,{'saveTo':_0x429a65},function(_0x39db9a,_0x55c0dc){if(_0x39db9a)return _0x240e63(_0x39db9a);return _0x3d6cfd(_0x55c0dc);});})[_0xe7fa('0x19')](function(){return new BPromise(function(_0x2bcb01,_0x39f426){rimraf(_0x3271f4,function(_0x512ab7){if(_0x512ab7)_0x39f426(_0x512ab7);return _0x2bcb01();});});})[_0xe7fa('0x19')](function(){return _0x4c0502['download'](_0x429a65,_0x47a29d,function(_0x1c86aa){if(!_0x1c86aa)fs[_0xe7fa('0x6e')](_0x429a65);});});});}else{return _0x4c0502[_0xe7fa('0x6f')](0xc8);}})[_0xe7fa('0x28')](handleError(_0x4c0502,null));};
\ No newline at end of file
index c397128..155868b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63a=['then','map','findAll','setDataValue','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','update','remove','getUsers'];(function(_0x3fa800,_0x5cf271){var _0x59af43=function(_0x499d99){while(--_0x499d99){_0x3fa800['push'](_0x3fa800['shift']());}};_0x59af43(++_0x5cf271);}(_0xe63a,0x106));var _0xae63=function(_0x2cb5f5,_0x6e4cda){_0x2cb5f5=_0x2cb5f5-0x0;var _0x39b1dc=_0xe63a[_0x2cb5f5];return _0x39b1dc;};'use strict';var EventEmitter=require(_0xae63('0x0'));var MailInteraction=require(_0xae63('0x1'))['db'][_0xae63('0x2')];var MailMessage=require(_0xae63('0x1'))['db'][_0xae63('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xae63('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xae63('0x5'),'afterDestroy':_0xae63('0x6')};function emitEvent(_0x200eb2){return function(_0x3655d4,_0x1749ba,_0x2bfdaa){_0x3655d4[_0xae63('0x7')]({'attributes':['id'],'raw':!![]})[_0xae63('0x8')](function(_0x1f0101){_0x3655d4['setDataValue']('Users',_0x1f0101[_0xae63('0x9')](function(_0xe8bb55){return{'id':_0xe8bb55['id']};}));return MailMessage[_0xae63('0xa')]({'where':{'MailInteractionId':_0x3655d4['id'],'direction':'in','read':![]},'raw':!![]});})[_0xae63('0x8')](function(_0x570054){_0x3655d4[_0xae63('0xb')](_0xae63('0xc'),_0x570054[_0xae63('0xd')]);MailInteractionEvents[_0xae63('0xe')](_0x200eb2+':'+_0x3655d4['id'],_0x3655d4);MailInteractionEvents['emit'](_0x200eb2,_0x3655d4);_0x2bfdaa(null);})[_0xae63('0xf')](_0x2bfdaa(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xae63('0x10')](e,emitEvent(event));}}module[_0xae63('0x11')]=MailInteractionEvents;
\ No newline at end of file
+var _0x4f38=['save','update','remove','setDataValue','map','findAll','then','unreadMessages','length','catch','hook','exports','events','MailInteraction','../../mysqldb','MailMessage','setMaxListeners'];(function(_0xbd8972,_0x441803){var _0x4ebd73=function(_0x36f655){while(--_0x36f655){_0xbd8972['push'](_0xbd8972['shift']());}};_0x4ebd73(++_0x441803);}(_0x4f38,0x11c));var _0x84f3=function(_0xecd913,_0x2974e7){_0xecd913=_0xecd913-0x0;var _0x531174=_0x4f38[_0xecd913];return _0x531174;};'use strict';var EventEmitter=require(_0x84f3('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x84f3('0x1')];var MailMessage=require(_0x84f3('0x2'))['db'][_0x84f3('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x84f3('0x4')](0x0);var events={'afterCreate':_0x84f3('0x5'),'afterUpdate':_0x84f3('0x6'),'afterDestroy':_0x84f3('0x7')};function emitEvent(_0x101dfb){return function(_0x4b8e02,_0x3015a1,_0x4a27e5){_0x4b8e02['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x3e55e2){_0x4b8e02[_0x84f3('0x8')]('Users',_0x3e55e2[_0x84f3('0x9')](function(_0x4e06d3){return{'id':_0x4e06d3['id']};}));return MailMessage[_0x84f3('0xa')]({'where':{'MailInteractionId':_0x4b8e02['id'],'direction':'in','read':![]},'raw':!![]});})[_0x84f3('0xb')](function(_0x280dd5){_0x4b8e02[_0x84f3('0x8')](_0x84f3('0xc'),_0x280dd5[_0x84f3('0xd')]);MailInteractionEvents['emit'](_0x101dfb+':'+_0x4b8e02['id'],_0x4b8e02);MailInteractionEvents['emit'](_0x101dfb,_0x4b8e02);_0x4a27e5(null);})[_0x84f3('0xe')](_0x4a27e5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x84f3('0xf')](e,emitEvent(event));}}module[_0x84f3('0x10')]=MailInteractionEvents;
\ No newline at end of file
index 494d129..e9b6f2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed94=['moment','bluebird','path','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed','models','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x4d761f,_0x1364ca){var _0x11fe7f=function(_0x7f5fba){while(--_0x7f5fba){_0x4d761f['push'](_0x4d761f['shift']());}};_0x11fe7f(++_0x1364ca);}(_0xed94,0x65));var _0x4ed9=function(_0xa3fadc,_0xd1e16){_0xa3fadc=_0xa3fadc-0x0;var _0x23ecb8=_0xed94[_0xa3fadc];return _0x23ecb8;};'use strict';var _=require(_0x4ed9('0x0'));var util=require(_0x4ed9('0x1'));var logger=require('../../config/logger')(_0x4ed9('0x2'));var moment=require(_0x4ed9('0x3'));var BPromise=require(_0x4ed9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ed9('0x5'));var rimraf=require('rimraf');var config=require(_0x4ed9('0x6'));var attributes=require(_0x4ed9('0x7'));module[_0x4ed9('0x8')]=function(_0x435eec,_0x34b24a){return _0x435eec[_0x4ed9('0x9')]('MailInteraction',attributes,{'tableName':_0x4ed9('0xa'),'paranoid':![],'indexes':[{'name':_0x4ed9('0xb'),'fields':[_0x4ed9('0xc'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5c8c6a,_0x24ced4,_0x4193bb){if(_0x5c8c6a[_0x4ed9('0xd')]){_0x5c8c6a[_0x4ed9('0xe')]=moment()[_0x4ed9('0xf')](_0x4ed9('0x10'));}if(_0x5c8c6a['closed']){_0x5c8c6a[_0x4ed9('0x11')]=moment()[_0x4ed9('0xf')](_0x4ed9('0x10'));}_0x4193bb(null,_0x24ced4);},'beforeUpdate':function(_0x3edb90,_0x576b53,_0x8d8fd4){if(_0x3edb90[_0x4ed9('0x12')](_0x4ed9('0xd'))){_0x3edb90[_0x4ed9('0xe')]=_0x3edb90['substatus']?moment()[_0x4ed9('0xf')](_0x4ed9('0x10')):null;}if(_0x3edb90[_0x4ed9('0x12')](_0x4ed9('0x13'))){_0x3edb90[_0x4ed9('0x11')]=moment()[_0x4ed9('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x3edb90[_0x4ed9('0xd')]=null;_0x3edb90[_0x4ed9('0xe')]=null;}_0x8d8fd4(null,_0x3edb90);},'afterUpdate':function(_0x1fcf73,_0x5ed115,_0x2a1e90){var _0x1d017b=_0x435eec[_0x4ed9('0x14')];var _0x1613f2=_0x1fcf73['get']({'plain':!![]});if(_0x1613f2[_0x4ed9('0x13')]){return _0x1d017b[_0x4ed9('0x15')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x1613f2['id']}})[_0x4ed9('0x16')](function(){_0x2a1e90();})[_0x4ed9('0x17')](function(_0x22b776){_0x2a1e90(_0x22b776);});}else{_0x2a1e90();}}},'charset':_0x4ed9('0x18'),'collate':_0x4ed9('0x19')});};
\ No newline at end of file
+var _0xb002=['FULLTEXT','substatus','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','substatusAt','models','update','catch','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailInteraction.attributes','define','mail_interactions','subject'];(function(_0x250de2,_0x2a85ec){var _0x3d6b80=function(_0x595709){while(--_0x595709){_0x250de2['push'](_0x250de2['shift']());}};_0x3d6b80(++_0x2a85ec);}(_0xb002,0x12d));var _0x2b00=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb002[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2b00('0x0'))(_0x2b00('0x1'));var moment=require(_0x2b00('0x2'));var BPromise=require(_0x2b00('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2b00('0x4'));var rimraf=require(_0x2b00('0x5'));var config=require(_0x2b00('0x6'));var attributes=require(_0x2b00('0x7'));module['exports']=function(_0x398e41,_0x452bf0){return _0x398e41[_0x2b00('0x8')]('MailInteraction',attributes,{'tableName':_0x2b00('0x9'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x2b00('0xa'),'to'],'type':_0x2b00('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x195bf2,_0x4db935,_0x3b43cd){if(_0x195bf2[_0x2b00('0xc')]){_0x195bf2['substatusAt']=moment()['format'](_0x2b00('0xd'));}if(_0x195bf2[_0x2b00('0xe')]){_0x195bf2[_0x2b00('0xf')]=moment()[_0x2b00('0x10')](_0x2b00('0xd'));}_0x3b43cd(null,_0x4db935);},'beforeUpdate':function(_0x43e786,_0x53415f,_0x109673){if(_0x43e786[_0x2b00('0x11')]('substatus')){_0x43e786[_0x2b00('0x12')]=_0x43e786[_0x2b00('0xc')]?moment()[_0x2b00('0x10')](_0x2b00('0xd')):null;}if(_0x43e786['changed'](_0x2b00('0xe'))){_0x43e786[_0x2b00('0xf')]=moment()['format'](_0x2b00('0xd'));_0x43e786[_0x2b00('0xc')]=null;_0x43e786[_0x2b00('0x12')]=null;}_0x109673(null,_0x43e786);},'afterUpdate':function(_0x359db8,_0x286487,_0x58e1ff){var _0xc60f0a=_0x398e41[_0x2b00('0x13')];var _0x37ffce=_0x359db8['get']({'plain':!![]});if(_0x37ffce[_0x2b00('0xe')]){return _0xc60f0a['MailMessage'][_0x2b00('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x37ffce['id']}})['then'](function(){_0x58e1ff();})[_0x2b00('0x15')](function(_0x5c5929){_0x58e1ff(_0x5c5929);});}else{_0x58e1ff();}}},'charset':_0x2b00('0x16'),'collate':_0x2b00('0x17')});};
\ No newline at end of file
index ed384c5..4eada7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf213=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','MailInteraction,\x20%s,\x20%s','debug','MailInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','MailInteraction','update','body','options','where','limit','UpdateMailInteraction','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags'];(function(_0x1c349a,_0x1cbfdd){var _0x2e3cd7=function(_0x5c0c81){while(--_0x5c0c81){_0x1c349a['push'](_0x1c349a['shift']());}};_0x2e3cd7(++_0x1cbfdd);}(_0xf213,0x84));var _0x3f21=function(_0x3f73dc,_0x5576f4){_0x3f73dc=_0x3f73dc-0x0;var _0x52ad28=_0xf213[_0x3f73dc];return _0x52ad28;};'use strict';var _=require(_0x3f21('0x0'));var util=require(_0x3f21('0x1'));var moment=require(_0x3f21('0x2'));var BPromise=require('bluebird');var rs=require(_0x3f21('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3f21('0x4'))['db'];var utils=require(_0x3f21('0x5'));var logger=require(_0x3f21('0x6'))(_0x3f21('0x7'));var config=require(_0x3f21('0x8'));var jayson=require(_0x3f21('0x9'));var client=jayson[_0x3f21('0xa')][_0x3f21('0xb')]({'port':0x232a});config[_0x3f21('0xc')]=_[_0x3f21('0xd')](config[_0x3f21('0xc')],{'host':_0x3f21('0xe'),'port':0x18eb});var socket=require(_0x3f21('0xf'))(new Redis(config[_0x3f21('0xc')]));require('./mailInteraction.socket')[_0x3f21('0x10')](socket);function respondWithRpcPromise(_0x570b98,_0x555408,_0x27de67){return new BPromise(function(_0x103932,_0x3ee220){return client[_0x3f21('0x11')](_0x570b98,_0x27de67)[_0x3f21('0x12')](function(_0x5d8952){logger[_0x3f21('0x13')](_0x3f21('0x14'),_0x555408,'request\x20sent');logger[_0x3f21('0x15')](_0x3f21('0x16'),_0x555408,_0x3f21('0x17'),JSON[_0x3f21('0x18')](_0x5d8952));if(_0x5d8952['error']){if(_0x5d8952[_0x3f21('0x19')][_0x3f21('0x1a')]===0x1f4){logger['error'](_0x3f21('0x14'),_0x555408,_0x5d8952['error'][_0x3f21('0x1b')]);return _0x3ee220(_0x5d8952[_0x3f21('0x19')][_0x3f21('0x1b')]);}logger[_0x3f21('0x19')]('MailInteraction,\x20%s,\x20%s',_0x555408,_0x5d8952[_0x3f21('0x19')]['message']);return _0x103932(_0x5d8952['error'][_0x3f21('0x1b')]);}else{logger[_0x3f21('0x13')](_0x3f21('0x14'),_0x555408,'request\x20sent');_0x103932(_0x5d8952[_0x3f21('0x1c')][_0x3f21('0x1b')]);}})[_0x3f21('0x1d')](function(_0x2f4af0){logger[_0x3f21('0x19')]('MailInteraction,\x20%s,\x20%s',_0x555408,_0x2f4af0);_0x3ee220(_0x2f4af0);});});}exports['UpdateMailInteraction']=function(_0x218bbc){var _0x3139a3=this;return new Promise(function(_0x2b7933,_0x170231){return db[_0x3f21('0x1e')][_0x3f21('0x1f')](_0x218bbc[_0x3f21('0x20')],{'raw':_0x218bbc[_0x3f21('0x21')]?_0x218bbc[_0x3f21('0x21')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x218bbc[_0x3f21('0x21')]?_0x218bbc['options'][_0x3f21('0x22')]||null:null,'attributes':_0x218bbc[_0x3f21('0x21')]?_0x218bbc[_0x3f21('0x21')]['attributes']||null:null,'limit':_0x218bbc[_0x3f21('0x21')]?_0x218bbc['options'][_0x3f21('0x23')]||null:null})[_0x3f21('0x12')](function(_0x46b8a5){logger[_0x3f21('0x13')](_0x3f21('0x24'),_0x218bbc);logger[_0x3f21('0x15')]('UpdateMailInteraction',_0x218bbc,JSON[_0x3f21('0x18')](_0x46b8a5));_0x2b7933(_0x46b8a5);})[_0x3f21('0x1d')](function(_0xe60847){logger[_0x3f21('0x19')](_0x3f21('0x24'),_0xe60847['message'],_0x218bbc);_0x170231(_0x3139a3['error'](0x1f4,_0xe60847[_0x3f21('0x1b')]));});});};exports[_0x3f21('0x25')]=function(_0x300e4c){return new Promise(function(_0x1adea1,_0x5c0b5c){return db[_0x3f21('0x1e')][_0x3f21('0x26')]({'where':_0x300e4c[_0x3f21('0x21')]?_0x300e4c[_0x3f21('0x21')][_0x3f21('0x22')]||null:null})[_0x3f21('0x12')](function(_0x5d512f){if(_0x5d512f){return _0x5d512f[_0x3f21('0x27')](_0x300e4c[_0x3f21('0x20')][_0x3f21('0x28')],_[_0x3f21('0x29')](_0x300e4c[_0x3f21('0x20')],[_0x3f21('0x28'),'id'])||{});}})[_0x3f21('0x2a')](function(_0x506cd2){logger[_0x3f21('0x13')](_0x3f21('0x2b'),_0x300e4c);logger[_0x3f21('0x15')]('AddTags',_0x300e4c,JSON[_0x3f21('0x18')](_0x506cd2));_0x1adea1(_0x506cd2);})[_0x3f21('0x1d')](function(_0x403724){logger['error'](_0x3f21('0x2b'),_0x403724[_0x3f21('0x1b')],_0x300e4c);_0x5c0b5c(_this['error'](0x1f4,_0x403724['message']));});});};
\ No newline at end of file
+var _0x7567=['MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','MailInteraction,\x20%s,\x20%s','message','result','catch','UpdateMailInteraction','MailInteraction','update','options','where','attributes','debug','AddTagsToMailInteraction','find','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','request','then','info','request\x20sent'];(function(_0x5e2152,_0x172f3d){var _0x5ddcf6=function(_0x30a5cc){while(--_0x30a5cc){_0x5e2152['push'](_0x5e2152['shift']());}};_0x5ddcf6(++_0x172f3d);}(_0x7567,0x143));var _0x7756=function(_0x2f772b,_0x435228){_0x2f772b=_0x2f772b-0x0;var _0x4439ad=_0x7567[_0x2f772b];return _0x4439ad;};'use strict';var _=require(_0x7756('0x0'));var util=require(_0x7756('0x1'));var moment=require(_0x7756('0x2'));var BPromise=require(_0x7756('0x3'));var rs=require(_0x7756('0x4'));var fs=require('fs');var Redis=require(_0x7756('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7756('0x6'));var logger=require(_0x7756('0x7'))(_0x7756('0x8'));var config=require(_0x7756('0x9'));var jayson=require(_0x7756('0xa'));var client=jayson['client'][_0x7756('0xb')]({'port':0x232a});config[_0x7756('0xc')]=_[_0x7756('0xd')](config[_0x7756('0xc')],{'host':_0x7756('0xe'),'port':0x18eb});var socket=require(_0x7756('0xf'))(new Redis(config[_0x7756('0xc')]));require(_0x7756('0x10'))['register'](socket);function respondWithRpcPromise(_0x58d891,_0x4f0081,_0x217251){return new BPromise(function(_0x59387c,_0x5ca726){return client[_0x7756('0x11')](_0x58d891,_0x217251)[_0x7756('0x12')](function(_0x23e939){logger[_0x7756('0x13')]('MailInteraction,\x20%s,\x20%s',_0x4f0081,_0x7756('0x14'));logger['debug'](_0x7756('0x15'),_0x4f0081,_0x7756('0x14'),JSON[_0x7756('0x16')](_0x23e939));if(_0x23e939[_0x7756('0x17')]){if(_0x23e939[_0x7756('0x17')]['code']===0x1f4){logger[_0x7756('0x17')](_0x7756('0x18'),_0x4f0081,_0x23e939[_0x7756('0x17')][_0x7756('0x19')]);return _0x5ca726(_0x23e939['error'][_0x7756('0x19')]);}logger[_0x7756('0x17')]('MailInteraction,\x20%s,\x20%s',_0x4f0081,_0x23e939[_0x7756('0x17')][_0x7756('0x19')]);return _0x59387c(_0x23e939[_0x7756('0x17')][_0x7756('0x19')]);}else{logger[_0x7756('0x13')](_0x7756('0x18'),_0x4f0081,'request\x20sent');_0x59387c(_0x23e939[_0x7756('0x1a')][_0x7756('0x19')]);}})[_0x7756('0x1b')](function(_0x10964a){logger['error']('MailInteraction,\x20%s,\x20%s',_0x4f0081,_0x10964a);_0x5ca726(_0x10964a);});});}exports[_0x7756('0x1c')]=function(_0x430ecd){var _0x432776=this;return new Promise(function(_0x34937a,_0x3c1be5){return db[_0x7756('0x1d')][_0x7756('0x1e')](_0x430ecd['body'],{'raw':_0x430ecd[_0x7756('0x1f')]?_0x430ecd[_0x7756('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x430ecd[_0x7756('0x1f')]?_0x430ecd[_0x7756('0x1f')][_0x7756('0x20')]||null:null,'attributes':_0x430ecd['options']?_0x430ecd['options'][_0x7756('0x21')]||null:null,'limit':_0x430ecd[_0x7756('0x1f')]?_0x430ecd[_0x7756('0x1f')]['limit']||null:null})[_0x7756('0x12')](function(_0x4aa883){logger[_0x7756('0x13')](_0x7756('0x1c'),_0x430ecd);logger[_0x7756('0x22')](_0x7756('0x1c'),_0x430ecd,JSON[_0x7756('0x16')](_0x4aa883));_0x34937a(_0x4aa883);})[_0x7756('0x1b')](function(_0x4b3712){logger[_0x7756('0x17')](_0x7756('0x1c'),_0x4b3712[_0x7756('0x19')],_0x430ecd);_0x3c1be5(_0x432776['error'](0x1f4,_0x4b3712['message']));});});};exports[_0x7756('0x23')]=function(_0x11fbea){return new Promise(function(_0x284fe9,_0x149d30){return db[_0x7756('0x1d')][_0x7756('0x24')]({'where':_0x11fbea[_0x7756('0x1f')]?_0x11fbea[_0x7756('0x1f')]['where']||null:null})['then'](function(_0x292e91){if(_0x292e91){return _0x292e91[_0x7756('0x25')](_0x11fbea[_0x7756('0x26')][_0x7756('0x27')],_[_0x7756('0x28')](_0x11fbea[_0x7756('0x26')],[_0x7756('0x27'),'id'])||{});}})[_0x7756('0x29')](function(_0x539fb0){logger[_0x7756('0x13')](_0x7756('0x2a'),_0x11fbea);logger[_0x7756('0x22')](_0x7756('0x2a'),_0x11fbea,JSON['stringify'](_0x539fb0));_0x284fe9(_0x539fb0);})['catch'](function(_0xdecc6c){logger[_0x7756('0x17')]('AddTags',_0xdecc6c['message'],_0x11fbea);_0x149d30(_this[_0x7756('0x17')](0x1f4,_0xdecc6c[_0x7756('0x19')]));});});};
\ No newline at end of file
index 70cadbf..e17123d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf318=['removeListener','register','length','./mailInteraction.events','save','update'];(function(_0x4ca036,_0xb0da04){var _0x134455=function(_0x362fb3){while(--_0x362fb3){_0x4ca036['push'](_0x4ca036['shift']());}};_0x134455(++_0xb0da04);}(_0xf318,0x123));var _0x8f31=function(_0x12d606,_0x47a12c){_0x12d606=_0x12d606-0x0;var _0x15607e=_0xf318[_0x12d606];return _0x15607e;};'use strict';var MailInteractionEvents=require(_0x8f31('0x0'));var events=[_0x8f31('0x1'),'remove',_0x8f31('0x2')];function createListener(_0x246e22,_0x15691a){return function(_0x1a563d){_0x15691a['emit'](_0x246e22,_0x1a563d);};}function removeListener(_0xc6f601,_0x3ed60d){return function(){MailInteractionEvents[_0x8f31('0x3')](_0xc6f601,_0x3ed60d);};}exports[_0x8f31('0x4')]=function(_0x1f8d06){for(var _0x7fa82e=0x0,_0x2aa233=events[_0x8f31('0x5')];_0x7fa82e<_0x2aa233;_0x7fa82e++){var _0x3aaf87=events[_0x7fa82e];var _0x57f8f1=createListener('mailInteraction:'+_0x3aaf87,_0x1f8d06);MailInteractionEvents['on'](_0x3aaf87,_0x57f8f1);}};
\ No newline at end of file
+var _0x774a=['remove','update','removeListener','length','mailInteraction:'];(function(_0x15e289,_0x4d75f5){var _0x477c37=function(_0x36d9b0){while(--_0x36d9b0){_0x15e289['push'](_0x15e289['shift']());}};_0x477c37(++_0x4d75f5);}(_0x774a,0xd2));var _0xa774=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x774a[_0x19e35c];return _0x3e1fe8;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=['save',_0xa774('0x0'),_0xa774('0x1')];function createListener(_0x386850,_0x28aefe){return function(_0x17bca8){_0x28aefe['emit'](_0x386850,_0x17bca8);};}function removeListener(_0x33b458,_0x20ff8c){return function(){MailInteractionEvents[_0xa774('0x2')](_0x33b458,_0x20ff8c);};}exports['register']=function(_0x42ec0e){for(var _0x5221f9=0x0,_0x27313b=events[_0xa774('0x3')];_0x5221f9<_0x27313b;_0x5221f9++){var _0x10573d=events[_0x5221f9];var _0x3941f5=createListener(_0xa774('0x4')+_0x10573d,_0x42ec0e);MailInteractionEvents['on'](_0x10573d,_0x3941f5);}};
\ No newline at end of file
index 94dc1ce..aab154b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ceb=['./mailMessage.controller','get','index','isAuthenticated','describe','show','download','post','tracked','mail','create','put','/:id','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x495cd4,_0xd98f23){var _0x41bc01=function(_0x2d1732){while(--_0x2d1732){_0x495cd4['push'](_0x495cd4['shift']());}};_0x41bc01(++_0xd98f23);}(_0x2ceb,0x110));var _0xb2ce=function(_0x41ec14,_0x2f9e1a){_0x41ec14=_0x41ec14-0x0;var _0x3704ac=_0x2ceb[_0x41ec14];return _0x3704ac;};'use strict';var multer=require(_0xb2ce('0x0'));var util=require(_0xb2ce('0x1'));var path=require('path');var timeout=require(_0xb2ce('0x2'));var express=require(_0xb2ce('0x3'));var router=express[_0xb2ce('0x4')]();var fs_extra=require(_0xb2ce('0x5'));var auth=require(_0xb2ce('0x6'));var interaction=require(_0xb2ce('0x7'));var config=require('../../config/environment');var controller=require(_0xb2ce('0x8'));router[_0xb2ce('0x9')]('/',auth['isAuthenticated'](),controller[_0xb2ce('0xa')]);router[_0xb2ce('0x9')]('/describe',auth[_0xb2ce('0xb')](),controller[_0xb2ce('0xc')]);router[_0xb2ce('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xb2ce('0xd')]);router[_0xb2ce('0x9')]('/:id/download',auth[_0xb2ce('0xb')](),controller[_0xb2ce('0xe')]);router[_0xb2ce('0xf')]('/',auth[_0xb2ce('0xb')](),interaction[_0xb2ce('0x10')](_0xb2ce('0x11'),'mailmessage:create'),controller[_0xb2ce('0x12')]);router[_0xb2ce('0x13')](_0xb2ce('0x14'),auth[_0xb2ce('0xb')](),controller[_0xb2ce('0x15')]);router['put']('/:id/accept',auth[_0xb2ce('0xb')](),controller[_0xb2ce('0x16')]);router[_0xb2ce('0x13')](_0xb2ce('0x17'),auth[_0xb2ce('0xb')](),controller[_0xb2ce('0x18')]);router[_0xb2ce('0x19')](_0xb2ce('0x14'),auth[_0xb2ce('0xb')](),controller[_0xb2ce('0x1a')]);module[_0xb2ce('0x1b')]=router;
\ No newline at end of file
+var _0xc901=['mail','mailmessage:create','create','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post'];(function(_0x3f75ec,_0x5a156f){var _0x1f6bf3=function(_0x54a4a3){while(--_0x54a4a3){_0x3f75ec['push'](_0x3f75ec['shift']());}};_0x1f6bf3(++_0x5a156f);}(_0xc901,0x142));var _0x1c90=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc901[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x1c90('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1c90('0x1')]();var fs_extra=require(_0x1c90('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x1c90('0x3'));var config=require(_0x1c90('0x4'));var controller=require(_0x1c90('0x5'));router[_0x1c90('0x6')]('/',auth[_0x1c90('0x7')](),controller[_0x1c90('0x8')]);router[_0x1c90('0x6')](_0x1c90('0x9'),auth[_0x1c90('0x7')](),controller[_0x1c90('0xa')]);router['get'](_0x1c90('0xb'),auth[_0x1c90('0x7')](),controller[_0x1c90('0xc')]);router[_0x1c90('0x6')](_0x1c90('0xd'),auth[_0x1c90('0x7')](),controller[_0x1c90('0xe')]);router[_0x1c90('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x1c90('0x10'),_0x1c90('0x11')),controller[_0x1c90('0x12')]);router['put']('/:id',auth[_0x1c90('0x7')](),controller[_0x1c90('0x13')]);router['put'](_0x1c90('0x14'),auth[_0x1c90('0x7')](),controller[_0x1c90('0x15')]);router['put'](_0x1c90('0x16'),auth['isAuthenticated'](),controller[_0x1c90('0x17')]);router[_0x1c90('0x18')](_0x1c90('0xb'),auth[_0x1c90('0x7')](),controller['destroy']);module[_0x1c90('0x19')]=router;
\ No newline at end of file
index b8a27f8..7bb7d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3685=['long','DATE','Email','Chat','sequelize','lodash','exports','TEXT','BOOLEAN','ENUM','out','STRING'];(function(_0x118986,_0x2ea044){var _0x25c9e6=function(_0x13b4d4){while(--_0x13b4d4){_0x118986['push'](_0x118986['shift']());}};_0x25c9e6(++_0x2ea044);}(_0x3685,0x94));var _0x5368=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3685[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x5368('0x0'));var _=require(_0x5368('0x1'));module[_0x5368('0x2')]={'body':{'type':Sequelize[_0x5368('0x3')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5368('0x3')]('medium')},'read':{'type':Sequelize[_0x5368('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5368('0x5')]('in',_0x5368('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0x5368('0x7')]},'to':{'type':Sequelize[_0x5368('0x3')](_0x5368('0x8'))},'cc':{'type':Sequelize[_0x5368('0x3')]('long')},'bcc':{'type':Sequelize[_0x5368('0x3')]('long')},'subject':{'type':Sequelize[_0x5368('0x3')]},'sentAt':{'type':Sequelize[_0x5368('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x5368('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x5368('0x9')]},'originTo':{'type':Sequelize[_0x5368('0x3')](_0x5368('0x8'))},'originCc':{'type':Sequelize[_0x5368('0x3')]('long')},'originChannel':{'type':Sequelize['ENUM'](_0x5368('0xa'),_0x5368('0xb')),'defaultValue':_0x5368('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x94a6=['out','STRING','DATE','INTEGER','BOOLEAN','Email','lodash','exports','TEXT','long','medium','ENUM'];(function(_0x348179,_0x769b94){var _0x53564d=function(_0x363165){while(--_0x363165){_0x348179['push'](_0x348179['shift']());}};_0x53564d(++_0x769b94);}(_0x94a6,0xae));var _0x694a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x94a6[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var _=require(_0x694a('0x0'));module[_0x694a('0x1')]={'body':{'type':Sequelize[_0x694a('0x2')](_0x694a('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x694a('0x2')](_0x694a('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x694a('0x5')]('in','out'),'defaultValue':_0x694a('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x694a('0x7')](0x1fe)},'from':{'type':Sequelize[_0x694a('0x7')]},'to':{'type':Sequelize[_0x694a('0x2')](_0x694a('0x3'))},'cc':{'type':Sequelize[_0x694a('0x2')](_0x694a('0x3'))},'bcc':{'type':Sequelize[_0x694a('0x2')]('long')},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x694a('0x8')]},'attach':{'type':Sequelize[_0x694a('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x694a('0xa')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x694a('0x2')](_0x694a('0x3'))},'originCc':{'type':Sequelize['TEXT'](_0x694a('0x3'))},'originChannel':{'type':Sequelize[_0x694a('0x5')](_0x694a('0xb'),'Chat'),'defaultValue':_0x694a('0xb'),'allowNull':![]}};
\ No newline at end of file
index 8c3c0a2..77e0273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd407=['SendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','contact','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','Sequelize','User','interface','fromString','rejectmessage','download','unix','toString','server','files','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','readFileSync','writeFileSync','eml-format','moment','bluebird','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailMessage.socket','jayson/promise','client','http','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','status','offset','undefined','limit','count','set','Content-Range','json','update','destroy','end','stack','name','index','MailMessage','rawAttributes','type','key','map','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','options','find','body','params','describe','create','direction','out','secret','split','findOne','MailAccountId','CmList','List','CmContact','updatedAt','MailServerOut','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','basename','Contacts','defaults','List\x20not\x20found'];(function(_0x502be5,_0x55e06b){var _0x820b75=function(_0x16f30a){while(--_0x16f30a){_0x502be5['push'](_0x502be5['shift']());}};_0x820b75(++_0x55e06b);}(_0xd407,0x17b));var _0x7d40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd407[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7d40('0x0'));var moment=require(_0x7d40('0x1'));var BPromise=require(_0x7d40('0x2'));var util=require('util');var path=require(_0x7d40('0x3'));var fs=require('fs');var _=require(_0x7d40('0x4'));var Redis=require(_0x7d40('0x5'));var htmlToText=require('html-to-text');var qs=require(_0x7d40('0x6'));var logger=require(_0x7d40('0x7'))(_0x7d40('0x8'));var interaction_log=require('../../config/logger')(_0x7d40('0x9'));var config=require(_0x7d40('0xa'));var db=require(_0x7d40('0xb'))['db'];config[_0x7d40('0xc')]=_['defaults'](config[_0x7d40('0xc')],{'host':_0x7d40('0xd'),'port':0x18eb});var socket=require(_0x7d40('0xe'))(new Redis(config[_0x7d40('0xc')]));var htmlEntities=require('html-entities');require(_0x7d40('0xf'))['register'](socket);var jayson=require(_0x7d40('0x10'));var client=jayson[_0x7d40('0x11')][_0x7d40('0x12')]({'port':0x232c});var client9003=jayson[_0x7d40('0x11')][_0x7d40('0x12')]({'port':0x232b});var client9002=jayson[_0x7d40('0x11')][_0x7d40('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x5ee396,_0x5cd9da,_0x5b75ac,_0x13ae68){return new BPromise(function(_0x5368f3,_0x59d219){var _0x5f1b05=_0x13ae68||client;return _0x5f1b05['request'](_0x5ee396,_0x5b75ac)[_0x7d40('0x13')](function(_0x348144){logger['info'](_0x7d40('0x14'),_0x5cd9da,_0x7d40('0x15'));logger[_0x7d40('0x16')](_0x7d40('0x17'),_0x5cd9da,_0x7d40('0x15'),JSON[_0x7d40('0x18')](_0x348144));if(_0x348144[_0x7d40('0x19')]){if(_0x348144['error']['code']===0x1f4){logger['error'](_0x7d40('0x14'),_0x5cd9da,_0x348144[_0x7d40('0x19')][_0x7d40('0x1a')]);return _0x59d219(_0x348144[_0x7d40('0x19')]['message']);}logger[_0x7d40('0x19')](_0x7d40('0x14'),_0x5cd9da,_0x348144[_0x7d40('0x19')]['message']);return _0x5368f3(_0x348144[_0x7d40('0x19')][_0x7d40('0x1a')]);}else{logger[_0x7d40('0x1b')](_0x7d40('0x14'),_0x5cd9da,'request\x20sent');_0x5368f3(_0x348144[_0x7d40('0x1c')][_0x7d40('0x1a')]);}})[_0x7d40('0x1d')](function(_0x40f720){logger[_0x7d40('0x19')](_0x7d40('0x14'),_0x5cd9da,_0x40f720);_0x59d219(_0x40f720);});});}function respondWithResult(_0x5b3910,_0x34967f){_0x34967f=_0x34967f||0xc8;return function(_0x2b2d6d){if(_0x2b2d6d){return _0x5b3910[_0x7d40('0x1e')](_0x34967f)['json'](_0x2b2d6d);}};}function respondWithFilteredResult(_0x12e3b8,_0x48cde2){return function(_0x1ff076){if(_0x1ff076){var _0x1eab2a=typeof _0x48cde2[_0x7d40('0x1f')]===_0x7d40('0x20')&&typeof _0x48cde2[_0x7d40('0x21')]===_0x7d40('0x20');var _0x5591df=_0x1ff076[_0x7d40('0x22')];var _0x5a610f=_0x1eab2a?0x0:_0x48cde2['offset'];var _0x3585cd=_0x1eab2a?_0x1ff076['count']:_0x48cde2[_0x7d40('0x1f')]+_0x48cde2[_0x7d40('0x21')];var _0x4ca7a0;if(_0x3585cd>=_0x5591df){_0x3585cd=_0x5591df;_0x4ca7a0=0xc8;}else{_0x4ca7a0=0xce;}_0x12e3b8['status'](_0x4ca7a0);return _0x12e3b8[_0x7d40('0x23')](_0x7d40('0x24'),_0x5a610f+'-'+_0x3585cd+'/'+_0x5591df)[_0x7d40('0x25')](_0x1ff076);}return null;};}function saveUpdates(_0xfd360){return function(_0x1f4c9f){if(_0x1f4c9f){return _0x1f4c9f[_0x7d40('0x26')](_0xfd360)[_0x7d40('0x13')](function(_0x3c25e2){return _0x3c25e2;});}return null;};}function removeEntity(_0x118f12){return function(_0x3d94bf){if(_0x3d94bf){return _0x3d94bf[_0x7d40('0x27')]()['then'](function(){_0x118f12[_0x7d40('0x1e')](0xcc)[_0x7d40('0x28')]();});}};}function handleEntityNotFound(_0x10515a){return function(_0x13d111){if(!_0x13d111){_0x10515a['sendStatus'](0x194);}return _0x13d111;};}function handleError(_0x24d22b,_0x2c0f49){_0x2c0f49=_0x2c0f49||0x1f4;return function(_0x122577){logger[_0x7d40('0x19')](_0x122577[_0x7d40('0x29')]);if(_0x122577[_0x7d40('0x2a')]){delete _0x122577[_0x7d40('0x2a')];}_0x24d22b[_0x7d40('0x1e')](_0x2c0f49)['send'](_0x122577);};}exports[_0x7d40('0x2b')]=function(_0x1f6840,_0x8e093d){var _0x57bc61={},_0x55ad51={},_0x252db0={'count':0x0,'rows':[]};var _0x504660=_['map'](db[_0x7d40('0x2c')][_0x7d40('0x2d')],function(_0x36ad7e){return{'name':_0x36ad7e['fieldName'],'type':_0x36ad7e[_0x7d40('0x2e')][_0x7d40('0x2f')]};});_0x55ad51['model']=_[_0x7d40('0x30')](_0x504660,_0x7d40('0x2a'));_0x55ad51['query']=_[_0x7d40('0x31')](_0x1f6840[_0x7d40('0x32')]);_0x55ad51[_0x7d40('0x33')]=_[_0x7d40('0x34')](_0x55ad51[_0x7d40('0x35')],_0x55ad51[_0x7d40('0x32')]);_0x57bc61['attributes']=_[_0x7d40('0x34')](_0x55ad51[_0x7d40('0x35')],qs[_0x7d40('0x36')](_0x1f6840['query'][_0x7d40('0x36')]));_0x57bc61[_0x7d40('0x37')]=_0x57bc61['attributes'][_0x7d40('0x38')]?_0x57bc61['attributes']:_0x55ad51[_0x7d40('0x35')];if(!_0x1f6840[_0x7d40('0x32')][_0x7d40('0x39')]('nolimit')){_0x57bc61[_0x7d40('0x21')]=qs[_0x7d40('0x21')](_0x1f6840['query']['limit']);_0x57bc61[_0x7d40('0x1f')]=qs[_0x7d40('0x1f')](_0x1f6840['query']['offset']);}_0x57bc61['order']=qs[_0x7d40('0x3a')](_0x1f6840[_0x7d40('0x32')][_0x7d40('0x3a')]);_0x57bc61[_0x7d40('0x3b')]=qs['filters'](_[_0x7d40('0x3c')](_0x1f6840[_0x7d40('0x32')],_0x55ad51[_0x7d40('0x33')]),_0x504660);if(_0x1f6840['query'][_0x7d40('0x3d')]){_0x57bc61[_0x7d40('0x3b')]=_[_0x7d40('0x3e')](_0x57bc61['where'],{'$or':_['map'](_0x504660,function(_0x1c679c){if(_0x1c679c[_0x7d40('0x2e')]!==_0x7d40('0x3f')){var _0x3cf855={};_0x3cf855[_0x1c679c[_0x7d40('0x2a')]]={'$like':'%'+_0x1f6840['query'][_0x7d40('0x3d')]+'%'};return _0x3cf855;}})});}_0x57bc61=_[_0x7d40('0x3e')]({},_0x57bc61,_0x1f6840['options']);var _0x134d32={'where':_0x57bc61[_0x7d40('0x3b')]};return db[_0x7d40('0x2c')][_0x7d40('0x22')](_0x134d32)[_0x7d40('0x13')](function(_0x11b318){_0x252db0[_0x7d40('0x22')]=_0x11b318;if(_0x1f6840[_0x7d40('0x32')][_0x7d40('0x40')]){_0x57bc61[_0x7d40('0x41')]=[{'all':!![]}];}return db['MailMessage'][_0x7d40('0x42')](_0x57bc61);})[_0x7d40('0x13')](function(_0x4bef0b){_0x252db0[_0x7d40('0x43')]=_0x4bef0b;return _0x252db0;})[_0x7d40('0x13')](respondWithFilteredResult(_0x8e093d,_0x57bc61))['catch'](handleError(_0x8e093d,null));};exports['show']=function(_0x2b81da,_0x301c21){var _0x572734={'raw':!![],'where':{'id':_0x2b81da['params']['id']}},_0x201028={};_0x201028[_0x7d40('0x35')]=_[_0x7d40('0x31')](db[_0x7d40('0x2c')]['rawAttributes']);_0x201028[_0x7d40('0x32')]=_['keys'](_0x2b81da['query']);_0x201028[_0x7d40('0x33')]=_[_0x7d40('0x34')](_0x201028[_0x7d40('0x35')],_0x201028[_0x7d40('0x32')]);_0x572734[_0x7d40('0x37')]=_[_0x7d40('0x34')](_0x201028['model'],qs[_0x7d40('0x36')](_0x2b81da[_0x7d40('0x32')][_0x7d40('0x36')]));_0x572734[_0x7d40('0x37')]=_0x572734['attributes'][_0x7d40('0x38')]?_0x572734[_0x7d40('0x37')]:_0x201028[_0x7d40('0x35')];if(_0x2b81da['query'][_0x7d40('0x40')]){_0x572734[_0x7d40('0x41')]=[{'all':!![]}];}_0x572734=_[_0x7d40('0x3e')]({},_0x572734,_0x2b81da[_0x7d40('0x44')]);return db['MailMessage'][_0x7d40('0x45')](_0x572734)[_0x7d40('0x13')](handleEntityNotFound(_0x301c21,null))[_0x7d40('0x13')](respondWithResult(_0x301c21,null))[_0x7d40('0x1d')](handleError(_0x301c21,null));};exports[_0x7d40('0x26')]=function(_0x307030,_0x1a28fa){if(_0x307030[_0x7d40('0x46')]['id']){delete _0x307030[_0x7d40('0x46')]['id'];}return db[_0x7d40('0x2c')][_0x7d40('0x45')]({'where':{'id':_0x307030[_0x7d40('0x47')]['id']}})[_0x7d40('0x13')](handleEntityNotFound(_0x1a28fa,null))[_0x7d40('0x13')](saveUpdates(_0x307030[_0x7d40('0x46')],null))[_0x7d40('0x13')](respondWithResult(_0x1a28fa,null))[_0x7d40('0x1d')](handleError(_0x1a28fa,null));};exports[_0x7d40('0x27')]=function(_0x16d436,_0x4e70cd){return db['MailMessage'][_0x7d40('0x45')]({'where':{'id':_0x16d436['params']['id']}})[_0x7d40('0x13')](handleEntityNotFound(_0x4e70cd,null))['then'](removeEntity(_0x4e70cd,null))[_0x7d40('0x1d')](handleError(_0x4e70cd,null));};exports['describe']=function(_0xba5004,_0x8726aa){return db[_0x7d40('0x2c')][_0x7d40('0x48')]()[_0x7d40('0x13')](respondWithResult(_0x8726aa,null))[_0x7d40('0x1d')](handleError(_0x8726aa,null));};exports[_0x7d40('0x49')]=function(_0x22aa47,_0x41b86c){return db[_0x7d40('0x2c')][_0x7d40('0x49')](_0x22aa47[_0x7d40('0x46')])['then'](function(_0x2c1477){if(_0x2c1477){if(_0x2c1477[_0x7d40('0x4a')]===_0x7d40('0x4b')&&!_0x2c1477[_0x7d40('0x4c')]){var _0x51189f,_0x2e5d90,_0x4a9762;if(_0x22aa47[_0x7d40('0x46')]['to']){_0x2e5d90=_0x22aa47['body']['to'][_0x7d40('0x4d')](',')[0x0];}return db['MailAccount'][_0x7d40('0x4e')]({'where':{'id':_0x2c1477[_0x7d40('0x4f')]},'include':[{'model':db[_0x7d40('0x50')],'as':_0x7d40('0x51'),'include':[{'model':db[_0x7d40('0x52')],'as':'Contacts','where':{'email':_0x2e5d90},'limit':0x1,'order':[[_0x7d40('0x53'),'DESC']]}]},{'model':db[_0x7d40('0x54')],'as':'Smtp','raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x7d40('0x55'),'raw':!![]}]}]})[_0x7d40('0x13')](function(_0x4310e6){_0x51189f=_0x4310e6;if(!_0x51189f||!_0x51189f['Smtp'])return;var _0x4b2e2b=_0x51189f[_0x7d40('0x56')]();if(_0x22aa47[_0x7d40('0x46')][_0x7d40('0x57')]&&_0x22aa47['body'][_0x7d40('0x57')][_0x7d40('0x38')]){for(var _0x419bd4=0x0;_0x419bd4<_0x22aa47['body'][_0x7d40('0x57')][_0x7d40('0x38')];_0x419bd4+=0x1){_0x22aa47[_0x7d40('0x46')]['attachments'][_0x419bd4]={'filename':_0x22aa47[_0x7d40('0x46')][_0x7d40('0x57')][_0x419bd4][_0x7d40('0x2a')],'path':path[_0x7d40('0x58')](config[_0x7d40('0x59')],_0x7d40('0x5a'),_0x22aa47[_0x7d40('0x46')][_0x7d40('0x57')][_0x419bd4][_0x7d40('0x5b')])};}}_0x4a9762={'account':_0x4b2e2b,'message':_0x22aa47[_0x7d40('0x46')]};return;})[_0x7d40('0x13')](function(){if(_0x51189f['List']){if(_0x51189f[_0x7d40('0x51')][_0x7d40('0x5c')]['length']){return _0x51189f[_0x7d40('0x51')][_0x7d40('0x5c')][0x0];}else{return db[_0x7d40('0x52')][_0x7d40('0x49')](_[_0x7d40('0x5d')](_0x22aa47['body'],{'firstName':_0x22aa47[_0x7d40('0x46')]['to'],'email':_0x22aa47[_0x7d40('0x46')]['to'],'phone':_0x22aa47['body']['to'],'ListId':_0x51189f['ListId']}));}}else{throw new Error(_0x7d40('0x5e'));}})[_0x7d40('0x13')](function(){if(_0x4a9762){return respondWithRpcPromise(_0x7d40('0x5f'),'sendMail',_0x4a9762,client9003)[_0x7d40('0x13')](function(_0x348f1c){return _0x2c1477[_0x7d40('0x26')]({'read':!![],'messageId':_0x348f1c[_0x7d40('0x60')],'sentAt':moment()[_0x7d40('0x61')](_0x7d40('0x62'))});})[_0x7d40('0x1d')](function(_0xa36f9d){logger[_0x7d40('0x19')]('%s',JSON['stringify'](_0xa36f9d));return _0x2c1477;});}return _0x2c1477;});}return _0x2c1477;}})[_0x7d40('0x13')](respondWithResult(_0x41b86c,0xc9))[_0x7d40('0x1d')](handleError(_0x41b86c,null));};exports[_0x7d40('0x63')]=function(_0x46dae7,_0x18773e){var _0x20a0ed={'agent':{},'channel':_0x7d40('0x64')};if(_0x46dae7['body']['id']){delete _0x46dae7[_0x7d40('0x46')]['id'];}_0x46dae7[_0x7d40('0x46')][_0x7d40('0x65')]=!![];_0x46dae7[_0x7d40('0x46')]['readAt']=moment()[_0x7d40('0x61')](_0x7d40('0x62'));_0x46dae7[_0x7d40('0x46')][_0x7d40('0x66')]=_0x46dae7[_0x7d40('0x46')]['UserId']||_0x46dae7[_0x7d40('0x67')]['id'];_0x20a0ed[_0x7d40('0x68')]['id']=_0x46dae7[_0x7d40('0x46')][_0x7d40('0x66')];return db['MailMessage'][_0x7d40('0x45')]({'where':{'id':_0x46dae7[_0x7d40('0x47')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x18773e,null))[_0x7d40('0x13')](saveUpdates(_0x46dae7['body'],null))['then'](function(_0xfdddee){if(_0xfdddee){_0x20a0ed[_0x7d40('0x1a')]=_0xfdddee[_0x7d40('0x69')]({'plain':!![]});return db[_0x7d40('0x6a')]['find']({'where':{'id':_0xfdddee[_0x7d40('0x6b')]}});}return null;})[_0x7d40('0x13')](handleEntityNotFound(_0x18773e,null))[_0x7d40('0x13')](function(_0x1a9f04){if(_0x1a9f04){return _0x1a9f04[_0x7d40('0x26')]({'UserId':_0x46dae7[_0x7d40('0x46')][_0x7d40('0x66')],'read1stAt':_[_0x7d40('0x6c')](_0x1a9f04[_0x7d40('0x6d')])?moment()['format'](_0x7d40('0x62')):undefined});}return null;})['then'](function(_0x4a5b83){if(_0x4a5b83){_0x20a0ed[_0x7d40('0x6e')]=_0x4a5b83['get']({'plain':!![]});interaction_log[_0x7d40('0x1b')](_0x7d40('0x6f'),_0x46dae7['user']['id'],_0x46dae7[_0x7d40('0x67')][_0x7d40('0x2a')],_0x46dae7[_0x7d40('0x67')][_0x7d40('0x70')],_0x20a0ed['interaction']['id'],_0x46dae7[_0x7d40('0x46')]?JSON[_0x7d40('0x18')](_0x46dae7[_0x7d40('0x46')]):_0x7d40('0x71'));return respondWithRpcPromise(_0x7d40('0x72'),_0x7d40('0x73'),_0x20a0ed);}return null;})[_0x7d40('0x13')](function(_0x534a0b){var _0x26e1db=_0x7d40('0x74')+_0x534a0b[_0x7d40('0x1a')][_0x7d40('0x75')];return db[_0x7d40('0x76')][_0x7d40('0x32')](_0x26e1db,{'type':db['Sequelize']['QueryTypes'][_0x7d40('0x77')],'raw':!![]})[_0x7d40('0x13')](function(_0x35ef43){return _0x35ef43;});})[_0x7d40('0x13')](function(_0x40a5cb){if(_0x40a5cb){_0x20a0ed[_0x7d40('0x1a')][_0x7d40('0x78')]=_0x40a5cb[0x0];if(!_0x46dae7[_0x7d40('0x46')][_0x7d40('0x66')])return;return db['User']['find']({'where':{'id':_0x46dae7[_0x7d40('0x46')][_0x7d40('0x66')],'role':_0x7d40('0x68')},'attributes':['id','name',_0x7d40('0x79'),_0x7d40('0x7a'),_0x7d40('0x7b')],'raw':!![]});}return null;})['then'](function(_0x71bf38){if(!_0x71bf38)return null;_0x20a0ed[_0x7d40('0x1a')]['agent']=_0x71bf38;return _0x20a0ed;})[_0x7d40('0x13')](function(_0x17ce65){if(_0x17ce65){if(_0x46dae7[_0x7d40('0x46')][_0x7d40('0x7c')]){_0x20a0ed['message']['interface']=util[_0x7d40('0x61')](_0x7d40('0x7d'),_0x46dae7['user'][_0x7d40('0x2a')]);_0x20a0ed[_0x7d40('0x1a')]['channel']=_0x20a0ed[_0x7d40('0x7e')];_0x20a0ed['message']['motionChannel']=_0x20a0ed[_0x7d40('0x7e')];_0x20a0ed[_0x7d40('0x1a')][_0x7d40('0x7f')]='accept';_0x20a0ed[_0x7d40('0x1a')][_0x7d40('0x46')]=htmlToText['fromString'](_0x20a0ed[_0x7d40('0x1a')][_0x7d40('0x46')]);return respondWithRpcPromise(_0x7d40('0x80'),_0x7d40('0x80'),{'event':_0x7d40('0x81'),'message':_0x20a0ed[_0x7d40('0x1a')]},client9002)['then'](function(){return _0x20a0ed;});}return _0x20a0ed;}return null;})[_0x7d40('0x13')](respondWithResult(_0x18773e,null))[_0x7d40('0x1d')](handleError(_0x18773e,null));};exports[_0x7d40('0x82')]=function(_0x429e0e,_0x24706d){var _0xf74094={'agent':{},'channel':_0x7d40('0x64')};if(_0x429e0e['body']['id']){delete _0x429e0e['body']['id'];}_0x429e0e[_0x7d40('0x46')][_0x7d40('0x66')]=_0x429e0e['body'][_0x7d40('0x66')]||_0x429e0e[_0x7d40('0x67')]['id'];_0xf74094[_0x7d40('0x68')]['id']=_0x429e0e[_0x7d40('0x46')]['UserId'];return db['MailMessage'][_0x7d40('0x45')]({'where':{'id':_0x429e0e['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x24706d,null))['then'](function(_0x582bfd){if(_0x582bfd){_0xf74094['message']=_0x582bfd[_0x7d40('0x69')]({'plain':!![]});return db['MailInteraction'][_0x7d40('0x45')]({'where':{'id':_0x582bfd[_0x7d40('0x6b')]}});}return null;})[_0x7d40('0x13')](handleEntityNotFound(_0x24706d,null))['then'](function(_0x17c27a){if(_0x17c27a){_0xf74094[_0x7d40('0x6e')]=_0x17c27a[_0x7d40('0x69')]({'plain':!![]});interaction_log[_0x7d40('0x1b')](_0x7d40('0x83'),_0x429e0e[_0x7d40('0x67')]['id'],_0x429e0e[_0x7d40('0x67')][_0x7d40('0x2a')],_0x429e0e[_0x7d40('0x67')]['role'],_0xf74094[_0x7d40('0x6e')]['id'],_0x429e0e[_0x7d40('0x46')]?JSON[_0x7d40('0x18')](_0x429e0e[_0x7d40('0x46')]):_0x7d40('0x71'));return respondWithRpcPromise(_0x7d40('0x84'),'rejectMessage',_0xf74094);}return null;})['then'](function(_0x3404fa){var _0x42eb25=_0x7d40('0x74')+_0x3404fa[_0x7d40('0x1a')][_0x7d40('0x75')];return db[_0x7d40('0x76')][_0x7d40('0x32')](_0x42eb25,{'type':db[_0x7d40('0x85')]['QueryTypes'][_0x7d40('0x77')],'raw':!![]})[_0x7d40('0x13')](function(_0x304902){return _0x304902;});})['then'](function(_0x1294ba){if(_0x1294ba){_0xf74094['message'][_0x7d40('0x78')]=_0x1294ba[0x0];if(!_0x429e0e[_0x7d40('0x46')][_0x7d40('0x66')])return;return db[_0x7d40('0x86')][_0x7d40('0x45')]({'where':{'id':_0x429e0e['body'][_0x7d40('0x66')],'role':_0x7d40('0x68')},'attributes':['id',_0x7d40('0x2a'),'fullname','email',_0x7d40('0x7b')],'raw':!![]});}return null;})[_0x7d40('0x13')](function(_0x4fe87e){if(!_0x4fe87e)return null;_0xf74094[_0x7d40('0x1a')][_0x7d40('0x68')]=_0x4fe87e;return _0xf74094;})[_0x7d40('0x13')](function(_0x478a6e){if(_0x478a6e){_0x478a6e[_0x7d40('0x1a')][_0x7d40('0x87')]=util['format'](_0x7d40('0x7d'),_0x429e0e[_0x7d40('0x67')][_0x7d40('0x2a')]);_0x478a6e['message'][_0x7d40('0x7e')]=_0xf74094[_0x7d40('0x7e')];_0x478a6e[_0x7d40('0x1a')]['motionChannel']=_0xf74094[_0x7d40('0x7e')];_0x478a6e[_0x7d40('0x1a')]['event']=_0x7d40('0x82');_0x478a6e[_0x7d40('0x1a')][_0x7d40('0x46')]=htmlToText[_0x7d40('0x88')](_0xf74094[_0x7d40('0x1a')][_0x7d40('0x46')]);respondWithRpcPromise('EventManager',_0x7d40('0x80'),{'event':_0x7d40('0x89'),'message':_0x478a6e['message']},client9002);return _0xf74094;}return null;})[_0x7d40('0x13')](respondWithResult(_0x24706d,null))['catch'](handleError(_0x24706d,null));};exports[_0x7d40('0x8a')]=function(_0xab1d2c,_0x2ff221){var _0x59b916=moment()[_0x7d40('0x8b')]()[_0x7d40('0x8c')]();var _0x15172a=path[_0x7d40('0x58')](config[_0x7d40('0x59')],_0x7d40('0x8d'),_0x7d40('0x8e'),'tmp');var _0x3f5ade=path[_0x7d40('0x58')](config[_0x7d40('0x59')],_0x7d40('0x8d'),_0x7d40('0x8e'),'attachments');var _0x3747a7=util[_0x7d40('0x61')](_0x7d40('0x8f'),_0x59b916);return db['MailMessage'][_0x7d40('0x45')]({'where':{'id':_0xab1d2c[_0x7d40('0x47')]['id']},'attributes':['id',_0x7d40('0x46'),_0x7d40('0x90'),'to','cc',_0x7d40('0x91'),_0x7d40('0x92'),_0x7d40('0x93')],'include':_0xab1d2c[_0x7d40('0x32')]['attachments']?[{'model':db[_0x7d40('0x94')],'as':_0x7d40('0x95')}]:undefined})[_0x7d40('0x13')](handleEntityNotFound(_0x2ff221,null))['then'](function(_0x1a996e){if(_0x1a996e){var _0x4702f3=_0x1a996e;var _0x268213={'from':_0x4702f3['from'],'to':_0x4702f3['to'],'subject':_0x4702f3[_0x7d40('0x92')],'html':htmlEntities[_0x7d40('0x96')](_0x4702f3['body']),'headers':{'Date':moment(_0x4702f3[_0x7d40('0x93')])[_0x7d40('0x61')](_0x7d40('0x97'))},'attachments':[]};if(_0x1a996e['cc']){_0x268213[_0x7d40('0x98')]['Cc']=_0x1a996e['cc'];}if(_0x1a996e['bcc']){_0x268213[_0x7d40('0x98')][_0x7d40('0x99')]=_0x1a996e[_0x7d40('0x91')];}return new BPromise(function(_0x34ec9f,_0x1ecbbb){if(_0x1a996e[_0x7d40('0x95')]){for(var _0x201434=0x0;_0x201434<_0x1a996e['Attachments']['length'];_0x201434++){var _0x3a5708=_0x1a996e[_0x7d40('0x95')][_0x201434];var _0x2d11f0=path[_0x7d40('0x58')](_0x3f5ade,_0x3a5708['basename']);if(fs[_0x7d40('0x9a')](_0x2d11f0)){_0x268213[_0x7d40('0x57')][_0x7d40('0x9b')]({'name':_0x3a5708[_0x7d40('0x2a')],'contentType':_0x3a5708[_0x7d40('0x2e')],'data':fs[_0x7d40('0x9c')](_0x2d11f0)});}}}emlformat['build'](_0x268213,function(_0x1321b6,_0x7d5cb5){if(_0x1321b6)return _0x1ecbbb(_0x1321b6);fs[_0x7d40('0x9d')](path[_0x7d40('0x58')](_0x15172a,_0x3747a7),_0x7d5cb5);return _0x34ec9f(_0x7d5cb5);});});}})['then'](function(_0x14b06d){if(_0x14b06d){return _0x2ff221[_0x7d40('0x8a')](path[_0x7d40('0x58')](_0x15172a,_0x3747a7),_0x3747a7,function(_0x1e0f93){if(!_0x1e0f93)fs['unlinkSync'](path['join'](_0x15172a,_0x3747a7));});}})[_0x7d40('0x1d')](handleError(_0x2ff221,null));};
\ No newline at end of file
+var _0x72ed=['server','files','tmp','message-%s.eml','from','Attachment','Attachments','subject','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','existsSync','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','bluebird','util','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','redis','defaults','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','json','offset','undefined','limit','count','set','update','destroy','end','sendStatus','stack','name','send','index','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','order','sort','pick','filter','where','merge','VIRTUAL','options','MailMessage','includeAll','rows','catch','show','params','keys','find','body','describe','create','direction','out','secret','split','MailAccount','MailAccountId','CmList','List','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','basename','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','UserId','user','agent','get','MailInteractionId','isNil','read1stAt','interaction','role','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','motionChannel','event','fromString','EventManager','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','reject','rejectmessage','unix','toString'];(function(_0x377797,_0x16a9bd){var _0x120f81=function(_0x56eebf){while(--_0x56eebf){_0x377797['push'](_0x377797['shift']());}};_0x120f81(++_0x16a9bd);}(_0x72ed,0xb4));var _0xd72e=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0x72ed[_0x56916d];return _0x2b7f1f;};'use strict';var emlformat=require(_0xd72e('0x0'));var moment=require(_0xd72e('0x1'));var BPromise=require(_0xd72e('0x2'));var util=require(_0xd72e('0x3'));var path=require('path');var fs=require('fs');var _=require(_0xd72e('0x4'));var Redis=require(_0xd72e('0x5'));var htmlToText=require(_0xd72e('0x6'));var qs=require(_0xd72e('0x7'));var logger=require(_0xd72e('0x8'))(_0xd72e('0x9'));var interaction_log=require(_0xd72e('0x8'))(_0xd72e('0xa'));var config=require(_0xd72e('0xb'));var db=require('../../mysqldb')['db'];config[_0xd72e('0xc')]=_[_0xd72e('0xd')](config[_0xd72e('0xc')],{'host':_0xd72e('0xe'),'port':0x18eb});var socket=require(_0xd72e('0xf'))(new Redis(config[_0xd72e('0xc')]));var htmlEntities=require(_0xd72e('0x10'));require(_0xd72e('0x11'))[_0xd72e('0x12')](socket);var jayson=require(_0xd72e('0x13'));var client=jayson['client'][_0xd72e('0x14')]({'port':0x232c});var client9003=jayson['client'][_0xd72e('0x14')]({'port':0x232b});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4a8334,_0x5675e6,_0x227116,_0x234027){return new BPromise(function(_0x16e71e,_0x153c79){var _0x31c56a=_0x234027||client;return _0x31c56a['request'](_0x4a8334,_0x227116)[_0xd72e('0x15')](function(_0x4e44d0){logger[_0xd72e('0x16')](_0xd72e('0x17'),_0x5675e6,_0xd72e('0x18'));logger[_0xd72e('0x19')](_0xd72e('0x1a'),_0x5675e6,_0xd72e('0x18'),JSON[_0xd72e('0x1b')](_0x4e44d0));if(_0x4e44d0[_0xd72e('0x1c')]){if(_0x4e44d0[_0xd72e('0x1c')][_0xd72e('0x1d')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x5675e6,_0x4e44d0[_0xd72e('0x1c')][_0xd72e('0x1e')]);return _0x153c79(_0x4e44d0[_0xd72e('0x1c')][_0xd72e('0x1e')]);}logger[_0xd72e('0x1c')](_0xd72e('0x17'),_0x5675e6,_0x4e44d0[_0xd72e('0x1c')][_0xd72e('0x1e')]);return _0x16e71e(_0x4e44d0[_0xd72e('0x1c')][_0xd72e('0x1e')]);}else{logger['info'](_0xd72e('0x17'),_0x5675e6,_0xd72e('0x18'));_0x16e71e(_0x4e44d0[_0xd72e('0x1f')][_0xd72e('0x1e')]);}})['catch'](function(_0x219dcc){logger[_0xd72e('0x1c')](_0xd72e('0x17'),_0x5675e6,_0x219dcc);_0x153c79(_0x219dcc);});});}function respondWithResult(_0x2298be,_0x318d12){_0x318d12=_0x318d12||0xc8;return function(_0x355a1c){if(_0x355a1c){return _0x2298be[_0xd72e('0x20')](_0x318d12)[_0xd72e('0x21')](_0x355a1c);}};}function respondWithFilteredResult(_0x172dff,_0x416d30){return function(_0x1e3365){if(_0x1e3365){var _0x81e1a4=typeof _0x416d30[_0xd72e('0x22')]===_0xd72e('0x23')&&typeof _0x416d30[_0xd72e('0x24')]===_0xd72e('0x23');var _0x3721e3=_0x1e3365[_0xd72e('0x25')];var _0x5e0db8=_0x81e1a4?0x0:_0x416d30[_0xd72e('0x22')];var _0x5d5a04=_0x81e1a4?_0x1e3365[_0xd72e('0x25')]:_0x416d30[_0xd72e('0x22')]+_0x416d30[_0xd72e('0x24')];var _0x4c9da5;if(_0x5d5a04>=_0x3721e3){_0x5d5a04=_0x3721e3;_0x4c9da5=0xc8;}else{_0x4c9da5=0xce;}_0x172dff[_0xd72e('0x20')](_0x4c9da5);return _0x172dff[_0xd72e('0x26')]('Content-Range',_0x5e0db8+'-'+_0x5d5a04+'/'+_0x3721e3)['json'](_0x1e3365);}return null;};}function saveUpdates(_0x25f456){return function(_0x884ac7){if(_0x884ac7){return _0x884ac7[_0xd72e('0x27')](_0x25f456)['then'](function(_0x359e98){return _0x359e98;});}return null;};}function removeEntity(_0x54d27b){return function(_0x230454){if(_0x230454){return _0x230454[_0xd72e('0x28')]()[_0xd72e('0x15')](function(){_0x54d27b[_0xd72e('0x20')](0xcc)[_0xd72e('0x29')]();});}};}function handleEntityNotFound(_0x2da280){return function(_0x262476){if(!_0x262476){_0x2da280[_0xd72e('0x2a')](0x194);}return _0x262476;};}function handleError(_0x283605,_0x45c5b0){_0x45c5b0=_0x45c5b0||0x1f4;return function(_0x5e0470){logger[_0xd72e('0x1c')](_0x5e0470[_0xd72e('0x2b')]);if(_0x5e0470[_0xd72e('0x2c')]){delete _0x5e0470[_0xd72e('0x2c')];}_0x283605[_0xd72e('0x20')](_0x45c5b0)[_0xd72e('0x2d')](_0x5e0470);};}exports[_0xd72e('0x2e')]=function(_0x38b812,_0x3a8dd1){var _0x35216d={},_0x1e2681={},_0x1bcba1={'count':0x0,'rows':[]};var _0x54d0bd=_['map'](db['MailMessage'][_0xd72e('0x2f')],function(_0x2ef9d8){return{'name':_0x2ef9d8[_0xd72e('0x30')],'type':_0x2ef9d8[_0xd72e('0x31')]['key']};});_0x1e2681['model']=_[_0xd72e('0x32')](_0x54d0bd,_0xd72e('0x2c'));_0x1e2681[_0xd72e('0x33')]=_['keys'](_0x38b812[_0xd72e('0x33')]);_0x1e2681[_0xd72e('0x34')]=_[_0xd72e('0x35')](_0x1e2681[_0xd72e('0x36')],_0x1e2681['query']);_0x35216d[_0xd72e('0x37')]=_['intersection'](_0x1e2681[_0xd72e('0x36')],qs[_0xd72e('0x38')](_0x38b812['query'][_0xd72e('0x38')]));_0x35216d[_0xd72e('0x37')]=_0x35216d[_0xd72e('0x37')][_0xd72e('0x39')]?_0x35216d[_0xd72e('0x37')]:_0x1e2681[_0xd72e('0x36')];if(!_0x38b812[_0xd72e('0x33')]['hasOwnProperty']('nolimit')){_0x35216d[_0xd72e('0x24')]=qs['limit'](_0x38b812[_0xd72e('0x33')][_0xd72e('0x24')]);_0x35216d['offset']=qs[_0xd72e('0x22')](_0x38b812[_0xd72e('0x33')][_0xd72e('0x22')]);}_0x35216d[_0xd72e('0x3a')]=qs['sort'](_0x38b812['query'][_0xd72e('0x3b')]);_0x35216d['where']=qs[_0xd72e('0x34')](_[_0xd72e('0x3c')](_0x38b812[_0xd72e('0x33')],_0x1e2681[_0xd72e('0x34')]),_0x54d0bd);if(_0x38b812[_0xd72e('0x33')][_0xd72e('0x3d')]){_0x35216d[_0xd72e('0x3e')]=_[_0xd72e('0x3f')](_0x35216d[_0xd72e('0x3e')],{'$or':_[_0xd72e('0x32')](_0x54d0bd,function(_0x476ac2){if(_0x476ac2[_0xd72e('0x31')]!==_0xd72e('0x40')){var _0xfb26ed={};_0xfb26ed[_0x476ac2['name']]={'$like':'%'+_0x38b812[_0xd72e('0x33')][_0xd72e('0x3d')]+'%'};return _0xfb26ed;}})});}_0x35216d=_[_0xd72e('0x3f')]({},_0x35216d,_0x38b812[_0xd72e('0x41')]);var _0x447825={'where':_0x35216d[_0xd72e('0x3e')]};return db[_0xd72e('0x42')][_0xd72e('0x25')](_0x447825)[_0xd72e('0x15')](function(_0x1e8084){_0x1bcba1['count']=_0x1e8084;if(_0x38b812[_0xd72e('0x33')][_0xd72e('0x43')]){_0x35216d['include']=[{'all':!![]}];}return db[_0xd72e('0x42')]['findAll'](_0x35216d);})[_0xd72e('0x15')](function(_0x44b5c9){_0x1bcba1[_0xd72e('0x44')]=_0x44b5c9;return _0x1bcba1;})[_0xd72e('0x15')](respondWithFilteredResult(_0x3a8dd1,_0x35216d))[_0xd72e('0x45')](handleError(_0x3a8dd1,null));};exports[_0xd72e('0x46')]=function(_0x3a317b,_0x15189d){var _0x34d2c3={'raw':!![],'where':{'id':_0x3a317b[_0xd72e('0x47')]['id']}},_0x7def28={};_0x7def28[_0xd72e('0x36')]=_[_0xd72e('0x48')](db[_0xd72e('0x42')][_0xd72e('0x2f')]);_0x7def28[_0xd72e('0x33')]=_[_0xd72e('0x48')](_0x3a317b[_0xd72e('0x33')]);_0x7def28[_0xd72e('0x34')]=_['intersection'](_0x7def28[_0xd72e('0x36')],_0x7def28['query']);_0x34d2c3[_0xd72e('0x37')]=_[_0xd72e('0x35')](_0x7def28[_0xd72e('0x36')],qs[_0xd72e('0x38')](_0x3a317b[_0xd72e('0x33')][_0xd72e('0x38')]));_0x34d2c3[_0xd72e('0x37')]=_0x34d2c3[_0xd72e('0x37')][_0xd72e('0x39')]?_0x34d2c3[_0xd72e('0x37')]:_0x7def28['model'];if(_0x3a317b['query'][_0xd72e('0x43')]){_0x34d2c3['include']=[{'all':!![]}];}_0x34d2c3=_[_0xd72e('0x3f')]({},_0x34d2c3,_0x3a317b[_0xd72e('0x41')]);return db[_0xd72e('0x42')][_0xd72e('0x49')](_0x34d2c3)[_0xd72e('0x15')](handleEntityNotFound(_0x15189d,null))['then'](respondWithResult(_0x15189d,null))[_0xd72e('0x45')](handleError(_0x15189d,null));};exports[_0xd72e('0x27')]=function(_0x523c53,_0x56ba30){if(_0x523c53[_0xd72e('0x4a')]['id']){delete _0x523c53[_0xd72e('0x4a')]['id'];}return db[_0xd72e('0x42')]['find']({'where':{'id':_0x523c53['params']['id']}})['then'](handleEntityNotFound(_0x56ba30,null))[_0xd72e('0x15')](saveUpdates(_0x523c53[_0xd72e('0x4a')],null))[_0xd72e('0x15')](respondWithResult(_0x56ba30,null))[_0xd72e('0x45')](handleError(_0x56ba30,null));};exports['destroy']=function(_0x1f51e6,_0x524d96){return db['MailMessage']['find']({'where':{'id':_0x1f51e6[_0xd72e('0x47')]['id']}})['then'](handleEntityNotFound(_0x524d96,null))['then'](removeEntity(_0x524d96,null))[_0xd72e('0x45')](handleError(_0x524d96,null));};exports['describe']=function(_0x25fe75,_0x2c57ad){return db[_0xd72e('0x42')][_0xd72e('0x4b')]()['then'](respondWithResult(_0x2c57ad,null))[_0xd72e('0x45')](handleError(_0x2c57ad,null));};exports['create']=function(_0x403a2b,_0x30d3cf){return db[_0xd72e('0x42')][_0xd72e('0x4c')](_0x403a2b['body'])[_0xd72e('0x15')](function(_0x33435f){if(_0x33435f){if(_0x33435f[_0xd72e('0x4d')]===_0xd72e('0x4e')&&!_0x33435f[_0xd72e('0x4f')]){var _0x565962,_0x4b53b5,_0x5494dd;if(_0x403a2b[_0xd72e('0x4a')]['to']){_0x4b53b5=_0x403a2b['body']['to'][_0xd72e('0x50')](',')[0x0];}return db[_0xd72e('0x51')]['findOne']({'where':{'id':_0x33435f[_0xd72e('0x52')]},'include':[{'model':db[_0xd72e('0x53')],'as':_0xd72e('0x54'),'include':[{'model':db['CmContact'],'as':_0xd72e('0x55'),'where':{'email':_0x4b53b5},'limit':0x1,'order':[[_0xd72e('0x56'),_0xd72e('0x57')]]}]},{'model':db[_0xd72e('0x58')],'as':_0xd72e('0x59'),'raw':!![],'include':[{'model':db[_0xd72e('0x5a')],'as':'CloudProvider','raw':!![]}]}]})['then'](function(_0x391bc8){_0x565962=_0x391bc8;if(!_0x565962||!_0x565962[_0xd72e('0x59')])return;var _0x3ed551=_0x565962[_0xd72e('0x5b')]();if(_0x403a2b[_0xd72e('0x4a')][_0xd72e('0x5c')]&&_0x403a2b[_0xd72e('0x4a')][_0xd72e('0x5c')]['length']){for(var _0x112b37=0x0;_0x112b37<_0x403a2b['body'][_0xd72e('0x5c')][_0xd72e('0x39')];_0x112b37+=0x1){_0x403a2b[_0xd72e('0x4a')][_0xd72e('0x5c')][_0x112b37]={'filename':_0x403a2b[_0xd72e('0x4a')][_0xd72e('0x5c')][_0x112b37][_0xd72e('0x2c')],'path':path[_0xd72e('0x5d')](config[_0xd72e('0x5e')],'server/files/attachments',_0x403a2b[_0xd72e('0x4a')]['attachments'][_0x112b37][_0xd72e('0x5f')])};}}_0x5494dd={'account':_0x3ed551,'message':_0x403a2b[_0xd72e('0x4a')]};return;})[_0xd72e('0x15')](function(){if(_0x565962[_0xd72e('0x54')]){if(_0x565962[_0xd72e('0x54')][_0xd72e('0x55')][_0xd72e('0x39')]){return _0x565962['List'][_0xd72e('0x55')][0x0];}else{return db['CmContact'][_0xd72e('0x4c')](_[_0xd72e('0xd')](_0x403a2b[_0xd72e('0x4a')],{'firstName':_0x403a2b[_0xd72e('0x4a')]['to'],'email':_0x403a2b['body']['to'],'phone':_0x403a2b[_0xd72e('0x4a')]['to'],'ListId':_0x565962[_0xd72e('0x60')]}));}}else{throw new Error('List\x20not\x20found');}})[_0xd72e('0x15')](function(){if(_0x5494dd){return respondWithRpcPromise(_0xd72e('0x61'),_0xd72e('0x62'),_0x5494dd,client9003)[_0xd72e('0x15')](function(_0x207c82){return _0x33435f[_0xd72e('0x27')]({'read':!![],'messageId':_0x207c82[_0xd72e('0x63')],'sentAt':moment()[_0xd72e('0x64')](_0xd72e('0x65'))});})[_0xd72e('0x45')](function(_0x123c15){logger['error']('%s',JSON[_0xd72e('0x1b')](_0x123c15));return _0x33435f;});}return _0x33435f;});}return _0x33435f;}})[_0xd72e('0x15')](respondWithResult(_0x30d3cf,0xc9))['catch'](handleError(_0x30d3cf,null));};exports[_0xd72e('0x66')]=function(_0x2ca7c3,_0x2c6af5){var _0x266e16={'agent':{},'channel':_0xd72e('0x67')};if(_0x2ca7c3[_0xd72e('0x4a')]['id']){delete _0x2ca7c3[_0xd72e('0x4a')]['id'];}_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x68')]=!![];_0x2ca7c3['body'][_0xd72e('0x69')]=moment()[_0xd72e('0x64')](_0xd72e('0x65'));_0x2ca7c3['body'][_0xd72e('0x6a')]=_0x2ca7c3[_0xd72e('0x4a')]['UserId']||_0x2ca7c3[_0xd72e('0x6b')]['id'];_0x266e16[_0xd72e('0x6c')]['id']=_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x6a')];return db[_0xd72e('0x42')][_0xd72e('0x49')]({'where':{'id':_0x2ca7c3['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2c6af5,null))['then'](saveUpdates(_0x2ca7c3['body'],null))[_0xd72e('0x15')](function(_0x1fef83){if(_0x1fef83){_0x266e16['message']=_0x1fef83[_0xd72e('0x6d')]({'plain':!![]});return db['MailInteraction'][_0xd72e('0x49')]({'where':{'id':_0x1fef83[_0xd72e('0x6e')]}});}return null;})[_0xd72e('0x15')](handleEntityNotFound(_0x2c6af5,null))[_0xd72e('0x15')](function(_0x5287bc){if(_0x5287bc){return _0x5287bc[_0xd72e('0x27')]({'UserId':_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x6a')],'read1stAt':_[_0xd72e('0x6f')](_0x5287bc[_0xd72e('0x70')])?moment()[_0xd72e('0x64')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xd72e('0x15')](function(_0x58a078){if(_0x58a078){_0x266e16[_0xd72e('0x71')]=_0x58a078[_0xd72e('0x6d')]({'plain':!![]});interaction_log[_0xd72e('0x16')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2ca7c3[_0xd72e('0x6b')]['id'],_0x2ca7c3[_0xd72e('0x6b')][_0xd72e('0x2c')],_0x2ca7c3[_0xd72e('0x6b')][_0xd72e('0x72')],_0x266e16[_0xd72e('0x71')]['id'],_0x2ca7c3[_0xd72e('0x4a')]?JSON['stringify'](_0x2ca7c3[_0xd72e('0x4a')]):'null');return respondWithRpcPromise(_0xd72e('0x73'),_0xd72e('0x74'),_0x266e16);}return null;})['then'](function(_0x238eb4){var _0x12f2dc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x238eb4['message'][_0xd72e('0x75')];return db[_0xd72e('0x76')]['query'](_0x12f2dc,{'type':db[_0xd72e('0x77')][_0xd72e('0x78')][_0xd72e('0x79')],'raw':!![]})[_0xd72e('0x15')](function(_0x83c7cb){return _0x83c7cb;});})[_0xd72e('0x15')](function(_0x4dee4c){if(_0x4dee4c){_0x266e16[_0xd72e('0x1e')][_0xd72e('0x7a')]=_0x4dee4c[0x0];if(!_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x6a')])return;return db[_0xd72e('0x7b')]['find']({'where':{'id':_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x6a')],'role':_0xd72e('0x6c')},'attributes':['id',_0xd72e('0x2c'),_0xd72e('0x7c'),_0xd72e('0x7d'),_0xd72e('0x7e')],'raw':!![]});}return null;})[_0xd72e('0x15')](function(_0x1d8639){if(!_0x1d8639)return null;_0x266e16[_0xd72e('0x1e')][_0xd72e('0x6c')]=_0x1d8639;return _0x266e16;})['then'](function(_0x49d2a5){if(_0x49d2a5){if(_0x2ca7c3[_0xd72e('0x4a')][_0xd72e('0x7f')]){_0x266e16[_0xd72e('0x1e')][_0xd72e('0x80')]=util[_0xd72e('0x64')]('SIP/%s',_0x2ca7c3[_0xd72e('0x6b')][_0xd72e('0x2c')]);_0x266e16[_0xd72e('0x1e')]['channel']=_0x266e16[_0xd72e('0x81')];_0x266e16['message'][_0xd72e('0x82')]=_0x266e16[_0xd72e('0x81')];_0x266e16[_0xd72e('0x1e')][_0xd72e('0x83')]='accept';_0x266e16[_0xd72e('0x1e')][_0xd72e('0x4a')]=htmlToText[_0xd72e('0x84')](_0x266e16[_0xd72e('0x1e')][_0xd72e('0x4a')]);return respondWithRpcPromise(_0xd72e('0x85'),'EventManager',{'event':'acceptmessage','message':_0x266e16[_0xd72e('0x1e')]},client9002)[_0xd72e('0x15')](function(){return _0x266e16;});}return _0x266e16;}return null;})['then'](respondWithResult(_0x2c6af5,null))[_0xd72e('0x45')](handleError(_0x2c6af5,null));};exports['reject']=function(_0x473158,_0x1390a0){var _0x532c9c={'agent':{},'channel':_0xd72e('0x67')};if(_0x473158[_0xd72e('0x4a')]['id']){delete _0x473158[_0xd72e('0x4a')]['id'];}_0x473158[_0xd72e('0x4a')]['UserId']=_0x473158['body'][_0xd72e('0x6a')]||_0x473158[_0xd72e('0x6b')]['id'];_0x532c9c[_0xd72e('0x6c')]['id']=_0x473158[_0xd72e('0x4a')][_0xd72e('0x6a')];return db[_0xd72e('0x42')][_0xd72e('0x49')]({'where':{'id':_0x473158[_0xd72e('0x47')]['id'],'UserId':null}})[_0xd72e('0x15')](handleEntityNotFound(_0x1390a0,null))[_0xd72e('0x15')](function(_0xd8a593){if(_0xd8a593){_0x532c9c[_0xd72e('0x1e')]=_0xd8a593[_0xd72e('0x6d')]({'plain':!![]});return db[_0xd72e('0x86')][_0xd72e('0x49')]({'where':{'id':_0xd8a593[_0xd72e('0x6e')]}});}return null;})['then'](handleEntityNotFound(_0x1390a0,null))[_0xd72e('0x15')](function(_0x25f2cc){if(_0x25f2cc){_0x532c9c[_0xd72e('0x71')]=_0x25f2cc['get']({'plain':!![]});interaction_log[_0xd72e('0x16')](_0xd72e('0x87'),_0x473158['user']['id'],_0x473158[_0xd72e('0x6b')][_0xd72e('0x2c')],_0x473158['user'][_0xd72e('0x72')],_0x532c9c[_0xd72e('0x71')]['id'],_0x473158[_0xd72e('0x4a')]?JSON[_0xd72e('0x1b')](_0x473158[_0xd72e('0x4a')]):_0xd72e('0x88'));return respondWithRpcPromise('RejectMessage',_0xd72e('0x89'),_0x532c9c);}return null;})[_0xd72e('0x15')](function(_0x4a54b0){var _0x16930d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4a54b0['message']['ContactId'];return db['sequelize'][_0xd72e('0x33')](_0x16930d,{'type':db[_0xd72e('0x77')][_0xd72e('0x78')][_0xd72e('0x79')],'raw':!![]})[_0xd72e('0x15')](function(_0x42c649){return _0x42c649;});})[_0xd72e('0x15')](function(_0x3079f4){if(_0x3079f4){_0x532c9c[_0xd72e('0x1e')][_0xd72e('0x7a')]=_0x3079f4[0x0];if(!_0x473158[_0xd72e('0x4a')]['UserId'])return;return db[_0xd72e('0x7b')][_0xd72e('0x49')]({'where':{'id':_0x473158['body']['UserId'],'role':_0xd72e('0x6c')},'attributes':['id',_0xd72e('0x2c'),_0xd72e('0x7c'),_0xd72e('0x7d'),'internal'],'raw':!![]});}return null;})[_0xd72e('0x15')](function(_0x12e105){if(!_0x12e105)return null;_0x532c9c['message'][_0xd72e('0x6c')]=_0x12e105;return _0x532c9c;})['then'](function(_0x4cb8bd){if(_0x4cb8bd){_0x4cb8bd[_0xd72e('0x1e')][_0xd72e('0x80')]=util[_0xd72e('0x64')]('SIP/%s',_0x473158['user']['name']);_0x4cb8bd[_0xd72e('0x1e')][_0xd72e('0x81')]=_0x532c9c[_0xd72e('0x81')];_0x4cb8bd[_0xd72e('0x1e')][_0xd72e('0x82')]=_0x532c9c['channel'];_0x4cb8bd['message'][_0xd72e('0x83')]=_0xd72e('0x8a');_0x4cb8bd['message'][_0xd72e('0x4a')]=htmlToText[_0xd72e('0x84')](_0x532c9c[_0xd72e('0x1e')][_0xd72e('0x4a')]);respondWithRpcPromise(_0xd72e('0x85'),'EventManager',{'event':_0xd72e('0x8b'),'message':_0x4cb8bd['message']},client9002);return _0x532c9c;}return null;})[_0xd72e('0x15')](respondWithResult(_0x1390a0,null))[_0xd72e('0x45')](handleError(_0x1390a0,null));};exports['download']=function(_0x53a234,_0x1ded00){var _0x19fff0=moment()[_0xd72e('0x8c')]()[_0xd72e('0x8d')]();var _0x15baa2=path[_0xd72e('0x5d')](config[_0xd72e('0x5e')],_0xd72e('0x8e'),_0xd72e('0x8f'),_0xd72e('0x90'));var _0x3044eb=path[_0xd72e('0x5d')](config['root'],_0xd72e('0x8e'),_0xd72e('0x8f'),_0xd72e('0x5c'));var _0x2f6567=util[_0xd72e('0x64')](_0xd72e('0x91'),_0x19fff0);return db[_0xd72e('0x42')]['find']({'where':{'id':_0x53a234[_0xd72e('0x47')]['id']},'attributes':['id',_0xd72e('0x4a'),_0xd72e('0x92'),'to','cc','bcc','subject','createdAt'],'include':_0x53a234[_0xd72e('0x33')][_0xd72e('0x5c')]?[{'model':db[_0xd72e('0x93')],'as':_0xd72e('0x94')}]:undefined})[_0xd72e('0x15')](handleEntityNotFound(_0x1ded00,null))[_0xd72e('0x15')](function(_0x2f2c3c){if(_0x2f2c3c){var _0x4630ea=_0x2f2c3c;var _0x56ed93={'from':_0x4630ea[_0xd72e('0x92')],'to':_0x4630ea['to'],'subject':_0x4630ea[_0xd72e('0x95')],'html':htmlEntities[_0xd72e('0x96')](_0x4630ea['body']),'headers':{'Date':moment(_0x4630ea[_0xd72e('0x97')])['format'](_0xd72e('0x98'))},'attachments':[]};if(_0x2f2c3c['cc']){_0x56ed93[_0xd72e('0x99')]['Cc']=_0x2f2c3c['cc'];}if(_0x2f2c3c[_0xd72e('0x9a')]){_0x56ed93['headers'][_0xd72e('0x9b')]=_0x2f2c3c[_0xd72e('0x9a')];}return new BPromise(function(_0x1c2c1d,_0x81fd1c){if(_0x2f2c3c[_0xd72e('0x94')]){for(var _0x1df378=0x0;_0x1df378<_0x2f2c3c['Attachments'][_0xd72e('0x39')];_0x1df378++){var _0x314bd7=_0x2f2c3c[_0xd72e('0x94')][_0x1df378];var _0x1bbf32=path['join'](_0x3044eb,_0x314bd7['basename']);if(fs[_0xd72e('0x9c')](_0x1bbf32)){_0x56ed93['attachments']['push']({'name':_0x314bd7['name'],'contentType':_0x314bd7[_0xd72e('0x31')],'data':fs[_0xd72e('0x9d')](_0x1bbf32)});}}}emlformat[_0xd72e('0x9e')](_0x56ed93,function(_0x29ab14,_0x2a85cf){if(_0x29ab14)return _0x81fd1c(_0x29ab14);fs[_0xd72e('0x9f')](path[_0xd72e('0x5d')](_0x15baa2,_0x2f6567),_0x2a85cf);return _0x1c2c1d(_0x2a85cf);});});}})[_0xd72e('0x15')](function(_0x45cfdc){if(_0x45cfdc){return _0x1ded00['download'](path[_0xd72e('0x5d')](_0x15baa2,_0x2f6567),_0x2f6567,function(_0x4726b6){if(!_0x4726b6)fs[_0xd72e('0xa0')](path[_0xd72e('0x5d')](_0x15baa2,_0x2f6567));});}})[_0xd72e('0x45')](handleError(_0x1ded00,null));};
\ No newline at end of file
index e51a209..f777391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa964=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners'];(function(_0x18b64c,_0x44d2aa){var _0x28a753=function(_0x18a82d){while(--_0x18a82d){_0x18b64c['push'](_0x18b64c['shift']());}};_0x28a753(++_0x44d2aa);}(_0xa964,0x146));var _0x4a96=function(_0x4d8789,_0x3fdff1){_0x4d8789=_0x4d8789-0x0;var _0x404e41=_0xa964[_0x4d8789];return _0x404e41;};'use strict';var EventEmitter=require(_0x4a96('0x0'));var MailMessage=require(_0x4a96('0x1'))['db'][_0x4a96('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x4a96('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4a96('0x4'),'afterDestroy':_0x4a96('0x5')};function emitEvent(_0x5a3475){return function(_0x4a7726,_0xc03fdc,_0x3bbeea){MailMessageEvents[_0x4a96('0x6')](_0x5a3475+':'+_0x4a7726['id'],_0x4a7726);MailMessageEvents['emit'](_0x5a3475,_0x4a7726);_0x3bbeea(null);};}for(var e in events){if(events[_0x4a96('0x7')](e)){var event=events[e];MailMessage[_0x4a96('0x8')](e,emitEvent(event));}}module[_0x4a96('0x9')]=MailMessageEvents;
\ No newline at end of file
+var _0xc709=['setMaxListeners','save','remove','emit','hasOwnProperty','exports','events','MailMessage'];(function(_0x41418c,_0x463e02){var _0x59975f=function(_0x8ac0a0){while(--_0x8ac0a0){_0x41418c['push'](_0x41418c['shift']());}};_0x59975f(++_0x463e02);}(_0xc709,0x1a6));var _0x9c70=function(_0x483ab9,_0x419148){_0x483ab9=_0x483ab9-0x0;var _0x35043b=_0xc709[_0x483ab9];return _0x35043b;};'use strict';var EventEmitter=require(_0x9c70('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x9c70('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x9c70('0x2')](0x0);var events={'afterCreate':_0x9c70('0x3'),'afterUpdate':'update','afterDestroy':_0x9c70('0x4')};function emitEvent(_0x30fc01){return function(_0x3f7908,_0x46cfe4,_0x93c99d){MailMessageEvents[_0x9c70('0x5')](_0x30fc01+':'+_0x3f7908['id'],_0x3f7908);MailMessageEvents['emit'](_0x30fc01,_0x3f7908);_0x93c99d(null);};}for(var e in events){if(events[_0x9c70('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x9c70('0x7')]=MailMessageEvents;
\ No newline at end of file
index 76cfc7f..b61610b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82e3=['html-to-text','path','../../config/environment','define','mail_messages','messageId','subject','FULLTEXT','body','plainBody','fromString','models','direction','toLowerCase','out','secret','isNil','findOne','MailInteractionId','then','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','lodash','api','bluebird','request-promise'];(function(_0x44abd2,_0x2d34c8){var _0x4938dc=function(_0x437fdb){while(--_0x437fdb){_0x44abd2['push'](_0x44abd2['shift']());}};_0x4938dc(++_0x2d34c8);}(_0x82e3,0x6c));var _0x382e=function(_0xd897e4,_0x11e197){_0xd897e4=_0xd897e4-0x0;var _0x43b275=_0x82e3[_0xd897e4];return _0x43b275;};'use strict';var _=require(_0x382e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x382e('0x1'));var moment=require('moment');var BPromise=require(_0x382e('0x2'));var rp=require(_0x382e('0x3'));var htmlToText=require(_0x382e('0x4'));var fs=require('fs');var path=require(_0x382e('0x5'));var rimraf=require('rimraf');var config=require(_0x382e('0x6'));var attributes=require('./mailMessage.attributes');module['exports']=function(_0x1da2c2,_0x3192c9){return _0x1da2c2[_0x382e('0x7')]('MailMessage',attributes,{'tableName':_0x382e('0x8'),'paranoid':![],'indexes':[{'name':_0x382e('0x9'),'fields':[_0x382e('0x9')]},{'name':'fti_mail_messages','fields':['plainBody',_0x382e('0xa')],'type':_0x382e('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x34945e,_0xd071c5,_0xde54ee){if(_0x34945e[_0x382e('0xc')]){_0x34945e[_0x382e('0xd')]=htmlToText[_0x382e('0xe')](_0x34945e[_0x382e('0xc')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0xde54ee(null,_0xd071c5);},'afterCreate':function(_0x16c762,_0x2d3218,_0x59bb91){var _0x587d55=_0x1da2c2[_0x382e('0xf')];var _0x5116b1=_0x16c762['get']({'plain':!![]});if(_0x5116b1[_0x382e('0x10')][_0x382e('0x11')]()==='in'||_0x5116b1[_0x382e('0x10')]['toLowerCase']()===_0x382e('0x12')&&!_0x5116b1[_0x382e('0x13')]&&!_[_0x382e('0x14')](_0x5116b1['UserId'])){_0x587d55['MailInteraction'][_0x382e('0x15')]({'where':{'id':_0x5116b1[_0x382e('0x16')]}})[_0x382e('0x17')](function(_0x105be8){if(_0x105be8){_0x105be8['update']({'lastMsgAt':_0x5116b1[_0x382e('0x18')],'lastMsgDirection':_0x5116b1['direction'][_0x382e('0x11')]()});}})[_0x382e('0x19')](function(_0x2a7a37){console['error'](_0x2a7a37);});}_0x59bb91();}},'charset':_0x382e('0x1a'),'collate':_0x382e('0x1b')});};
\ No newline at end of file
+var _0x51e9=['isNil','UserId','findOne','MailInteractionId','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','html-to-text','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','direction','toLowerCase','secret'];(function(_0x4f7bef,_0x16130e){var _0x1612e9=function(_0x330849){while(--_0x330849){_0x4f7bef['push'](_0x4f7bef['shift']());}};_0x1612e9(++_0x16130e);}(_0x51e9,0xdc));var _0x951e=function(_0x2fa5a4,_0x4f5c70){_0x2fa5a4=_0x2fa5a4-0x0;var _0x20b66a=_0x51e9[_0x2fa5a4];return _0x20b66a;};'use strict';var _=require(_0x951e('0x0'));var util=require('util');var logger=require(_0x951e('0x1'))(_0x951e('0x2'));var moment=require(_0x951e('0x3'));var BPromise=require(_0x951e('0x4'));var rp=require(_0x951e('0x5'));var htmlToText=require(_0x951e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x951e('0x7'));var config=require(_0x951e('0x8'));var attributes=require(_0x951e('0x9'));module[_0x951e('0xa')]=function(_0x3cd8b9,_0x4a13e5){return _0x3cd8b9[_0x951e('0xb')](_0x951e('0xc'),attributes,{'tableName':_0x951e('0xd'),'paranoid':![],'indexes':[{'name':_0x951e('0xe'),'fields':[_0x951e('0xe')]},{'name':_0x951e('0xf'),'fields':[_0x951e('0x10'),_0x951e('0x11')],'type':_0x951e('0x12')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x549a8e,_0x12ab16,_0xfca8d9){if(_0x549a8e[_0x951e('0x13')]){_0x549a8e['plainBody']=htmlToText[_0x951e('0x14')](_0x549a8e[_0x951e('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0xfca8d9(null,_0x12ab16);},'afterCreate':function(_0x2bff80,_0x3a8dbd,_0x802411){var _0x73ef9e=_0x3cd8b9[_0x951e('0x15')];var _0x230967=_0x2bff80['get']({'plain':!![]});if(_0x230967[_0x951e('0x16')][_0x951e('0x17')]()==='in'||_0x230967['direction'][_0x951e('0x17')]()==='out'&&!_0x230967[_0x951e('0x18')]&&!_[_0x951e('0x19')](_0x230967[_0x951e('0x1a')])){_0x73ef9e['MailInteraction'][_0x951e('0x1b')]({'where':{'id':_0x230967[_0x951e('0x1c')]}})[_0x951e('0x1d')](function(_0x35e0ac){if(_0x35e0ac){_0x35e0ac[_0x951e('0x1e')]({'lastMsgAt':_0x230967[_0x951e('0x1f')],'lastMsgDirection':_0x230967[_0x951e('0x16')][_0x951e('0x17')]()});}})['catch'](function(_0x3cf795){console[_0x951e('0x20')](_0x3cf795);});}_0x802411();}},'charset':_0x951e('0x21'),'collate':_0x951e('0x22')});};
\ No newline at end of file
index b585b7d..8739e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['./mailMessage.socket','then','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','CreateMailMessage','MailMessage','body','options','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x4922e1,_0x1e515f){var _0x2a81da=function(_0x40b7b7){while(--_0x40b7b7){_0x4922e1['push'](_0x4922e1['shift']());}};_0x2a81da(++_0x1e515f);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3342('0x0'));var BPromise=require(_0x3342('0x1'));var rs=require(_0x3342('0x2'));var fs=require('fs');var Redis=require(_0x3342('0x3'));var db=require(_0x3342('0x4'))['db'];var utils=require(_0x3342('0x5'));var logger=require(_0x3342('0x6'))(_0x3342('0x7'));var config=require(_0x3342('0x8'));var jayson=require(_0x3342('0x9'));var client=jayson[_0x3342('0xa')][_0x3342('0xb')]({'port':0x232a});config[_0x3342('0xc')]=_[_0x3342('0xd')](config[_0x3342('0xc')],{'host':_0x3342('0xe'),'port':0x18eb});var socket=require(_0x3342('0xf'))(new Redis(config[_0x3342('0xc')]));require(_0x3342('0x10'))['register'](socket);function respondWithRpcPromise(_0x582c37,_0x2d0cb0,_0x481a17){return new BPromise(function(_0x5a1fba,_0x51b276){return client['request'](_0x582c37,_0x481a17)[_0x3342('0x11')](function(_0x2f3c47){logger['info'](_0x3342('0x12'),_0x2d0cb0,'request\x20sent');logger[_0x3342('0x13')](_0x3342('0x14'),_0x2d0cb0,'request\x20sent',JSON[_0x3342('0x15')](_0x2f3c47));if(_0x2f3c47[_0x3342('0x16')]){if(_0x2f3c47[_0x3342('0x16')][_0x3342('0x17')]===0x1f4){logger[_0x3342('0x16')](_0x3342('0x12'),_0x2d0cb0,_0x2f3c47[_0x3342('0x16')]['message']);return _0x51b276(_0x2f3c47[_0x3342('0x16')][_0x3342('0x18')]);}logger['error'](_0x3342('0x12'),_0x2d0cb0,_0x2f3c47[_0x3342('0x16')]['message']);return _0x5a1fba(_0x2f3c47['error'][_0x3342('0x18')]);}else{logger[_0x3342('0x19')](_0x3342('0x12'),_0x2d0cb0,_0x3342('0x1a'));_0x5a1fba(_0x2f3c47[_0x3342('0x1b')][_0x3342('0x18')]);}})[_0x3342('0x1c')](function(_0x3ebf6b){logger[_0x3342('0x16')]('MailMessage,\x20%s,\x20%s',_0x2d0cb0,_0x3ebf6b);_0x51b276(_0x3ebf6b);});});}exports[_0x3342('0x1d')]=function(_0xda235a){var _0x2f6395=this;return new Promise(function(_0x5e05f5,_0x3cb86f){return db[_0x3342('0x1e')]['create'](_0xda235a[_0x3342('0x1f')],{'raw':_0xda235a[_0x3342('0x20')]?_0xda235a['options'][_0x3342('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x3f271c){logger[_0x3342('0x19')](_0x3342('0x1d'),_0xda235a);logger[_0x3342('0x13')](_0x3342('0x1d'),_0xda235a,JSON[_0x3342('0x15')](_0x3f271c));_0x5e05f5(_0x3f271c);})[_0x3342('0x1c')](function(_0x2d8622){logger['error'](_0x3342('0x1d'),_0x2d8622['message'],_0xda235a);_0x3cb86f(_0x2f6395['error'](0x1f4,_0x2d8622[_0x3342('0x18')]));});});};
\ No newline at end of file
+var _0xb78e=['http','redis','defaults','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','stringify','error','code','message','catch','CreateMailMessage','MailMessage','create','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x510275,_0x5a9044){var _0x15488c=function(_0x56123a){while(--_0x56123a){_0x510275['push'](_0x510275['shift']());}};_0x15488c(++_0x5a9044);}(_0xb78e,0x1c9));var _0xeb78=function(_0x4b3a17,_0x30fdb4){_0x4b3a17=_0x4b3a17-0x0;var _0x574a2b=_0xb78e[_0x4b3a17];return _0x574a2b;};'use strict';var _=require(_0xeb78('0x0'));var util=require(_0xeb78('0x1'));var moment=require('moment');var BPromise=require(_0xeb78('0x2'));var rs=require(_0xeb78('0x3'));var fs=require('fs');var Redis=require(_0xeb78('0x4'));var db=require(_0xeb78('0x5'))['db'];var utils=require(_0xeb78('0x6'));var logger=require(_0xeb78('0x7'))(_0xeb78('0x8'));var config=require(_0xeb78('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb78('0xa')][_0xeb78('0xb')]({'port':0x232a});config[_0xeb78('0xc')]=_[_0xeb78('0xd')](config[_0xeb78('0xc')],{'host':_0xeb78('0xe'),'port':0x18eb});var socket=require(_0xeb78('0xf'))(new Redis(config['redis']));require(_0xeb78('0x10'))[_0xeb78('0x11')](socket);function respondWithRpcPromise(_0xa1ca82,_0x46fbad,_0x125e97){return new BPromise(function(_0x402680,_0x15137b){return client[_0xeb78('0x12')](_0xa1ca82,_0x125e97)[_0xeb78('0x13')](function(_0x59d8d8){logger[_0xeb78('0x14')](_0xeb78('0x15'),_0x46fbad,_0xeb78('0x16'));logger[_0xeb78('0x17')](_0xeb78('0x18'),_0x46fbad,_0xeb78('0x16'),JSON[_0xeb78('0x19')](_0x59d8d8));if(_0x59d8d8[_0xeb78('0x1a')]){if(_0x59d8d8[_0xeb78('0x1a')][_0xeb78('0x1b')]===0x1f4){logger['error'](_0xeb78('0x15'),_0x46fbad,_0x59d8d8[_0xeb78('0x1a')]['message']);return _0x15137b(_0x59d8d8['error']['message']);}logger[_0xeb78('0x1a')]('MailMessage,\x20%s,\x20%s',_0x46fbad,_0x59d8d8[_0xeb78('0x1a')][_0xeb78('0x1c')]);return _0x402680(_0x59d8d8['error'][_0xeb78('0x1c')]);}else{logger['info'](_0xeb78('0x15'),_0x46fbad,_0xeb78('0x16'));_0x402680(_0x59d8d8['result'][_0xeb78('0x1c')]);}})[_0xeb78('0x1d')](function(_0x1cb338){logger['error'](_0xeb78('0x15'),_0x46fbad,_0x1cb338);_0x15137b(_0x1cb338);});});}exports[_0xeb78('0x1e')]=function(_0x4ab933){var _0x48b106=this;return new Promise(function(_0x455e30,_0x106c5d){return db[_0xeb78('0x1f')][_0xeb78('0x20')](_0x4ab933[_0xeb78('0x21')],{'raw':_0x4ab933[_0xeb78('0x22')]?_0x4ab933[_0xeb78('0x22')][_0xeb78('0x23')]===undefined?!![]:![]:!![]})[_0xeb78('0x13')](function(_0x52b8c1){logger['info']('CreateMailMessage',_0x4ab933);logger['debug'](_0xeb78('0x1e'),_0x4ab933,JSON['stringify'](_0x52b8c1));_0x455e30(_0x52b8c1);})[_0xeb78('0x1d')](function(_0x1fbf2f){logger['error'](_0xeb78('0x1e'),_0x1fbf2f['message'],_0x4ab933);_0x106c5d(_0x48b106[_0xeb78('0x1a')](0x1f4,_0x1fbf2f[_0xeb78('0x1c')]));});});};
\ No newline at end of file
index af63e10..4f95275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ee=['mailMessage:','./mailMessage.events','update','emit','removeListener','length'];(function(_0x5cc212,_0x5038e0){var _0x1c9f9d=function(_0x3d0a2f){while(--_0x3d0a2f){_0x5cc212['push'](_0x5cc212['shift']());}};_0x1c9f9d(++_0x5038e0);}(_0x14ee,0x115));var _0xe14e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x14ee[_0x3dd15e];return _0x231fd0;};'use strict';var MailMessageEvents=require(_0xe14e('0x0'));var events=['save','remove',_0xe14e('0x1')];function createListener(_0x43dba9,_0x9df8cf){return function(_0xdff449){_0x9df8cf[_0xe14e('0x2')](_0x43dba9,_0xdff449);};}function removeListener(_0x5db128,_0x1c8074){return function(){MailMessageEvents[_0xe14e('0x3')](_0x5db128,_0x1c8074);};}exports['register']=function(_0x55d396){for(var _0x4c78d1=0x0,_0x1113a9=events[_0xe14e('0x4')];_0x4c78d1<_0x1113a9;_0x4c78d1++){var _0x29b76d=events[_0x4c78d1];var _0x10b6ac=createListener(_0xe14e('0x5')+_0x29b76d,_0x55d396);MailMessageEvents['on'](_0x29b76d,_0x10b6ac);}};
\ No newline at end of file
+var _0xb647=['register','length','mailMessage:','./mailMessage.events','save','remove','update','emit'];(function(_0x17d4fc,_0x22e86e){var _0x1fcb1d=function(_0x41a674){while(--_0x41a674){_0x17d4fc['push'](_0x17d4fc['shift']());}};_0x1fcb1d(++_0x22e86e);}(_0xb647,0xdb));var _0x7b64=function(_0x1f96da,_0x1bee5b){_0x1f96da=_0x1f96da-0x0;var _0x961b2=_0xb647[_0x1f96da];return _0x961b2;};'use strict';var MailMessageEvents=require(_0x7b64('0x0'));var events=[_0x7b64('0x1'),_0x7b64('0x2'),_0x7b64('0x3')];function createListener(_0x38de52,_0x3b659e){return function(_0x274824){_0x3b659e[_0x7b64('0x4')](_0x38de52,_0x274824);};}function removeListener(_0x54eee8,_0x36ff12){return function(){MailMessageEvents['removeListener'](_0x54eee8,_0x36ff12);};}exports[_0x7b64('0x5')]=function(_0x38ebf7){for(var _0x31915b=0x0,_0x80721a=events[_0x7b64('0x6')];_0x31915b<_0x80721a;_0x31915b++){var _0x22eca3=events[_0x31915b];var _0x727684=createListener(_0x7b64('0x7')+_0x22eca3,_0x38ebf7);MailMessageEvents['on'](_0x22eca3,_0x727684);}};
\ No newline at end of file
index 9ea11ef..01df33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd72f=['getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','put','update','delete','destroy','removeAgents','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xd72f,0x150));var _0xfd72=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xd72f[_0x53cf8e];return _0x459197;};'use strict';var multer=require(_0xfd72('0x0'));var util=require('util');var path=require(_0xfd72('0x1'));var timeout=require(_0xfd72('0x2'));var express=require(_0xfd72('0x3'));var router=express[_0xfd72('0x4')]();var fs_extra=require(_0xfd72('0x5'));var auth=require(_0xfd72('0x6'));var interaction=require(_0xfd72('0x7'));var config=require(_0xfd72('0x8'));var controller=require(_0xfd72('0x9'));router[_0xfd72('0xa')]('/',auth[_0xfd72('0xb')](),controller['index']);router[_0xfd72('0xa')]('/describe',auth[_0xfd72('0xb')](),controller[_0xfd72('0xc')]);router[_0xfd72('0xa')](_0xfd72('0xd'),auth[_0xfd72('0xb')](),controller[_0xfd72('0xe')]);router[_0xfd72('0xa')]('/:id/members',auth[_0xfd72('0xb')](),controller[_0xfd72('0xf')]);router[_0xfd72('0xa')](_0xfd72('0x10'),auth[_0xfd72('0xb')](),controller[_0xfd72('0x11')]);router[_0xfd72('0xa')](_0xfd72('0x12'),auth[_0xfd72('0xb')](),controller['getAgents']);router[_0xfd72('0x13')]('/',auth[_0xfd72('0xb')](),controller[_0xfd72('0x14')]);router[_0xfd72('0x13')](_0xfd72('0x10'),auth[_0xfd72('0xb')](),controller[_0xfd72('0x15')]);router[_0xfd72('0x13')](_0xfd72('0x12'),auth[_0xfd72('0xb')](),controller['addAgents']);router[_0xfd72('0x16')]('/:id',auth[_0xfd72('0xb')](),controller[_0xfd72('0x17')]);router[_0xfd72('0x18')]('/:id',auth[_0xfd72('0xb')](),controller[_0xfd72('0x19')]);router[_0xfd72('0x18')](_0xfd72('0x10'),auth[_0xfd72('0xb')](),controller['removeTeams']);router[_0xfd72('0x18')](_0xfd72('0x12'),auth['isAuthenticated'](),controller[_0xfd72('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x611c=['removeTeams','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/members','getMembers','getTeams','getAgents','post','create','/:id/teams','addTeams','/:id/users','put','delete','destroy'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x611c,0xc5));var _0xc611=function(_0x42539d,_0x3c9b8a){_0x42539d=_0x42539d-0x0;var _0x2dac44=_0x611c[_0x42539d];return _0x2dac44;};'use strict';var multer=require(_0xc611('0x0'));var util=require(_0xc611('0x1'));var path=require(_0xc611('0x2'));var timeout=require(_0xc611('0x3'));var express=require('express');var router=express[_0xc611('0x4')]();var fs_extra=require(_0xc611('0x5'));var auth=require(_0xc611('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc611('0x7'));var controller=require(_0xc611('0x8'));router[_0xc611('0x9')]('/',auth[_0xc611('0xa')](),controller[_0xc611('0xb')]);router['get'](_0xc611('0xc'),auth[_0xc611('0xa')](),controller[_0xc611('0xd')]);router[_0xc611('0x9')](_0xc611('0xe'),auth[_0xc611('0xa')](),controller['show']);router[_0xc611('0x9')](_0xc611('0xf'),auth[_0xc611('0xa')](),controller[_0xc611('0x10')]);router[_0xc611('0x9')]('/:id/teams',auth[_0xc611('0xa')](),controller[_0xc611('0x11')]);router[_0xc611('0x9')]('/:id/users',auth[_0xc611('0xa')](),controller[_0xc611('0x12')]);router[_0xc611('0x13')]('/',auth[_0xc611('0xa')](),controller[_0xc611('0x14')]);router[_0xc611('0x13')](_0xc611('0x15'),auth[_0xc611('0xa')](),controller[_0xc611('0x16')]);router[_0xc611('0x13')](_0xc611('0x17'),auth[_0xc611('0xa')](),controller['addAgents']);router[_0xc611('0x18')](_0xc611('0xe'),auth[_0xc611('0xa')](),controller['update']);router[_0xc611('0x19')]('/:id',auth[_0xc611('0xa')](),controller[_0xc611('0x1a')]);router[_0xc611('0x19')](_0xc611('0x15'),auth[_0xc611('0xa')](),controller[_0xc611('0x1b')]);router[_0xc611('0x19')](_0xc611('0x17'),auth[_0xc611('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 674aed9..82cc8ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc47c=['sequelize','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x443e6b,_0x4926b9){var _0x864ee4=function(_0x72138b){while(--_0x72138b){_0x443e6b['push'](_0x443e6b['shift']());}};_0x864ee4(++_0x4926b9);}(_0xc47c,0x9a));var _0xcc47=function(_0x1dfe96,_0xacd7bf){_0x1dfe96=_0x1dfe96-0x0;var _0x23bb8a=_0xc47c[_0x1dfe96];return _0x23bb8a;};'use strict';var Sequelize=require(_0xcc47('0x0'));module['exports']={'name':{'type':Sequelize[_0xcc47('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xcc47('0x1')]},'timeout':{'type':Sequelize[_0xcc47('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xcc47('0x3')](_0xcc47('0x4'),_0xcc47('0x5'),_0xcc47('0x6'))}};
\ No newline at end of file
+var _0x2052=['roundrobin','sequelize','exports','INTEGER','ENUM','rrmemory','beepall'];(function(_0x4fdcc0,_0x560a01){var _0xc0ce94=function(_0x36ea12){while(--_0x36ea12){_0x4fdcc0['push'](_0x4fdcc0['shift']());}};_0xc0ce94(++_0x560a01);}(_0x2052,0xef));var _0x2205=function(_0x418547,_0x5145af){_0x418547=_0x418547-0x0;var _0x30a56f=_0x2052[_0x418547];return _0x30a56f;};'use strict';var Sequelize=require(_0x2205('0x0'));module[_0x2205('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x2205('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2205('0x3')](_0x2205('0x4'),_0x2205('0x5'),_0x2205('0x6'))}};
\ No newline at end of file
index 1c08611..f9dd96a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7fc=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','MailQueues','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','MailQueueId','UserMailQueue','User','UserId','agent','updatedAt','createdAt','rows','format','%s/%s','SIP','mailPause','getTeams','Team','options','addTeams','ids','Agents','online','voicePause','flatMap','each','findOrCreate','emit','removeTeams','select','field','join','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','transaction','isEmpty','removeAgents','forEach','userMailQueue:remove','addAgents','omit','spread','userMailQueue:save','isArray','getAgents','eml-format','fast-json-patch','request-promise','moment','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/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','MailQueue','includeAll','findAll','catch','show','params','keys','include','find','create'];(function(_0x387442,_0x22cf1c){var _0x4def6d=function(_0x33743d){while(--_0x33743d){_0x387442['push'](_0x387442['shift']());}};_0x4def6d(++_0x22cf1c);}(_0xb7fc,0x1e3));var _0xcb7f=function(_0x2468b5,_0x506b9e){_0x2468b5=_0x2468b5-0x0;var _0x1056e4=_0xb7fc[_0x2468b5];return _0x1056e4;};'use strict';var emlformat=require(_0xcb7f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcb7f('0x1'));var rp=require(_0xcb7f('0x2'));var moment=require(_0xcb7f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcb7f('0x4'));var path=require(_0xcb7f('0x5'));var sox=require(_0xcb7f('0x6'));var csv=require(_0xcb7f('0x7'));var ejs=require(_0xcb7f('0x8'));var fs=require('fs');var fs_extra=require(_0xcb7f('0x9'));var _=require('lodash');var squel=require(_0xcb7f('0xa'));var crypto=require(_0xcb7f('0xb'));var jsforce=require(_0xcb7f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xcb7f('0x7'));var querystring=require(_0xcb7f('0xd'));var Papa=require('papaparse');var Redis=require(_0xcb7f('0xe'));var authService=require(_0xcb7f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xcb7f('0x10'));var hardwareService=require(_0xcb7f('0x11'));var logger=require(_0xcb7f('0x12'))(_0xcb7f('0x13'));var utils=require(_0xcb7f('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xcb7f('0x15'))['db'];config[_0xcb7f('0x16')]=_[_0xcb7f('0x17')](config[_0xcb7f('0x16')],{'host':_0xcb7f('0x18'),'port':0x18eb});var socket=require(_0xcb7f('0x19'))(new Redis(config[_0xcb7f('0x16')]));require(_0xcb7f('0x1a'))[_0xcb7f('0x1b')](socket);function respondWithStatusCode(_0x1b47ca,_0x1f4a2d){_0x1f4a2d=_0x1f4a2d||0xcc;return function(_0x35a3b7){if(_0x35a3b7){return _0x1b47ca[_0xcb7f('0x1c')](_0x1f4a2d);}return _0x1b47ca[_0xcb7f('0x1d')](_0x1f4a2d)[_0xcb7f('0x1e')]();};}function respondWithResult(_0x45189d,_0x17e54f){_0x17e54f=_0x17e54f||0xc8;return function(_0x3fb85d){if(_0x3fb85d){return _0x45189d[_0xcb7f('0x1d')](_0x17e54f)[_0xcb7f('0x1f')](_0x3fb85d);}};}function respondWithFilteredResult(_0x137a6f,_0x2e76c5){return function(_0x5d43b6){if(_0x5d43b6){var _0x2430b3=typeof _0x2e76c5[_0xcb7f('0x20')]==='undefined'&&typeof _0x2e76c5['limit']===_0xcb7f('0x21');var _0x1763ed=_0x5d43b6[_0xcb7f('0x22')];var _0x478ae2=_0x2430b3?0x0:_0x2e76c5['offset'];var _0x29c19c=_0x2430b3?_0x5d43b6['count']:_0x2e76c5['offset']+_0x2e76c5['limit'];var _0x2c8dbd;if(_0x29c19c>=_0x1763ed){_0x29c19c=_0x1763ed;_0x2c8dbd=0xc8;}else{_0x2c8dbd=0xce;}_0x137a6f[_0xcb7f('0x1d')](_0x2c8dbd);return _0x137a6f['set'](_0xcb7f('0x23'),_0x478ae2+'-'+_0x29c19c+'/'+_0x1763ed)[_0xcb7f('0x1f')](_0x5d43b6);}return null;};}function patchUpdates(_0x417738){return function(_0x27ed68){try{jsonpatch[_0xcb7f('0x24')](_0x27ed68,_0x417738,!![]);}catch(_0x875b59){return BPromise['reject'](_0x875b59);}return _0x27ed68['save']();};}function saveUpdates(_0x44d513,_0x3974ae){return function(_0x41523c){if(_0x41523c){return _0x41523c[_0xcb7f('0x25')](_0x44d513)[_0xcb7f('0x26')](function(_0x2a1a8c){return _0x2a1a8c;});}return null;};}function removeEntity(_0x4835f8,_0x9a5a64){return function(_0x397539){if(_0x397539){return _0x397539[_0xcb7f('0x27')]()['then'](function(){var _0x30ecb7=_0x397539[_0xcb7f('0x28')]({'plain':!![]});var _0x1b954c='MailQueues';return db[_0xcb7f('0x29')]['destroy']({'where':{'type':_0x1b954c,'resourceId':_0x30ecb7['id']}})[_0xcb7f('0x26')](function(){return _0x397539;});})['then'](function(){_0x4835f8[_0xcb7f('0x1d')](0xcc)[_0xcb7f('0x1e')]();});}};}function handleEntityNotFound(_0x5659a8,_0x597a82){return function(_0x5c0e90){if(!_0x5c0e90){_0x5659a8[_0xcb7f('0x1c')](0x194);}return _0x5c0e90;};}function handleError(_0xff7b82,_0x53d6de){_0x53d6de=_0x53d6de||0x1f4;return function(_0x193bcd){logger[_0xcb7f('0x2a')](_0x193bcd[_0xcb7f('0x2b')]);if(_0x193bcd[_0xcb7f('0x2c')]){delete _0x193bcd[_0xcb7f('0x2c')];}_0xff7b82['status'](_0x53d6de)[_0xcb7f('0x2d')](_0x193bcd);};}exports[_0xcb7f('0x2e')]=function(_0x3cec8f,_0x130e03){var _0x1a317a={},_0x35fc2d={},_0x3c48f1={'count':0x0,'rows':[]};var _0x280571=_[_0xcb7f('0x2f')](db['MailQueue'][_0xcb7f('0x30')],function(_0x3cd06c){return{'name':_0x3cd06c['fieldName'],'type':_0x3cd06c[_0xcb7f('0x31')][_0xcb7f('0x32')]};});_0x35fc2d[_0xcb7f('0x33')]=_[_0xcb7f('0x2f')](_0x280571,'name');_0x35fc2d['query']=_['keys'](_0x3cec8f['query']);_0x35fc2d[_0xcb7f('0x34')]=_[_0xcb7f('0x35')](_0x35fc2d[_0xcb7f('0x33')],_0x35fc2d[_0xcb7f('0x36')]);_0x1a317a[_0xcb7f('0x37')]=_[_0xcb7f('0x35')](_0x35fc2d['model'],qs[_0xcb7f('0x38')](_0x3cec8f[_0xcb7f('0x36')][_0xcb7f('0x38')]));_0x1a317a[_0xcb7f('0x37')]=_0x1a317a[_0xcb7f('0x37')][_0xcb7f('0x39')]?_0x1a317a[_0xcb7f('0x37')]:_0x35fc2d[_0xcb7f('0x33')];if(!_0x3cec8f['query'][_0xcb7f('0x3a')](_0xcb7f('0x3b'))){_0x1a317a['limit']=qs[_0xcb7f('0x3c')](_0x3cec8f['query'][_0xcb7f('0x3c')]);_0x1a317a[_0xcb7f('0x20')]=qs[_0xcb7f('0x20')](_0x3cec8f[_0xcb7f('0x36')][_0xcb7f('0x20')]);}_0x1a317a[_0xcb7f('0x3d')]=qs[_0xcb7f('0x3e')](_0x3cec8f[_0xcb7f('0x36')]['sort']);_0x1a317a[_0xcb7f('0x3f')]=qs[_0xcb7f('0x34')](_[_0xcb7f('0x40')](_0x3cec8f['query'],_0x35fc2d[_0xcb7f('0x34')]),_0x280571);if(_0x3cec8f[_0xcb7f('0x36')][_0xcb7f('0x41')]){_0x1a317a[_0xcb7f('0x3f')]=_[_0xcb7f('0x42')](_0x1a317a[_0xcb7f('0x3f')],{'$or':_[_0xcb7f('0x2f')](_0x280571,function(_0x5d40c1){if(_0x5d40c1[_0xcb7f('0x31')]!=='VIRTUAL'){var _0x519c3c={};_0x519c3c[_0x5d40c1[_0xcb7f('0x2c')]]={'$like':'%'+_0x3cec8f[_0xcb7f('0x36')][_0xcb7f('0x41')]+'%'};return _0x519c3c;}})});}_0x1a317a=_[_0xcb7f('0x42')]({},_0x1a317a,_0x3cec8f['options']);var _0xe7a210={'where':_0x1a317a['where']};return db[_0xcb7f('0x43')][_0xcb7f('0x22')](_0xe7a210)[_0xcb7f('0x26')](function(_0x2719a0){_0x3c48f1[_0xcb7f('0x22')]=_0x2719a0;if(_0x3cec8f[_0xcb7f('0x36')][_0xcb7f('0x44')]){_0x1a317a['include']=[{'all':!![]}];}return db[_0xcb7f('0x43')][_0xcb7f('0x45')](_0x1a317a);})[_0xcb7f('0x26')](function(_0x558958){_0x3c48f1['rows']=_0x558958;return _0x3c48f1;})['then'](respondWithFilteredResult(_0x130e03,_0x1a317a))[_0xcb7f('0x46')](handleError(_0x130e03,null));};exports[_0xcb7f('0x47')]=function(_0x37f617,_0x3ff529){var _0x12a205={'raw':!![],'where':{'id':_0x37f617[_0xcb7f('0x48')]['id']}},_0x5795f8={};_0x5795f8['model']=_[_0xcb7f('0x49')](db['MailQueue'][_0xcb7f('0x30')]);_0x5795f8['query']=_[_0xcb7f('0x49')](_0x37f617['query']);_0x5795f8[_0xcb7f('0x34')]=_[_0xcb7f('0x35')](_0x5795f8[_0xcb7f('0x33')],_0x5795f8['query']);_0x12a205['attributes']=_[_0xcb7f('0x35')](_0x5795f8[_0xcb7f('0x33')],qs[_0xcb7f('0x38')](_0x37f617[_0xcb7f('0x36')][_0xcb7f('0x38')]));_0x12a205[_0xcb7f('0x37')]=_0x12a205[_0xcb7f('0x37')][_0xcb7f('0x39')]?_0x12a205[_0xcb7f('0x37')]:_0x5795f8[_0xcb7f('0x33')];if(_0x37f617[_0xcb7f('0x36')][_0xcb7f('0x44')]){_0x12a205[_0xcb7f('0x4a')]=[{'all':!![]}];}_0x12a205=_[_0xcb7f('0x42')]({},_0x12a205,_0x37f617['options']);return db['MailQueue'][_0xcb7f('0x4b')](_0x12a205)['then'](handleEntityNotFound(_0x3ff529,null))[_0xcb7f('0x26')](respondWithResult(_0x3ff529,null))[_0xcb7f('0x46')](handleError(_0x3ff529,null));};exports[_0xcb7f('0x4c')]=function(_0x174100,_0x53ab05){return db['MailQueue']['create'](_0x174100[_0xcb7f('0x4d')],{})[_0xcb7f('0x26')](function(_0x1e780b){var _0xea4b1b=_0x174100[_0xcb7f('0x4e')]['get']({'plain':!![]});if(!_0xea4b1b)throw new Error(_0xcb7f('0x4f'));if(_0xea4b1b['role']===_0xcb7f('0x4e')){var _0x3544c2=_0x1e780b[_0xcb7f('0x28')]({'plain':!![]});var _0x523866=_0xcb7f('0x50');return db[_0xcb7f('0x51')][_0xcb7f('0x4b')]({'where':{'name':_0x523866,'userProfileId':_0xea4b1b['userProfileId']},'raw':!![]})[_0xcb7f('0x26')](function(_0x4c9ba4){if(_0x4c9ba4&&_0x4c9ba4[_0xcb7f('0x52')]===0x0){return db[_0xcb7f('0x29')]['create']({'name':_0x3544c2[_0xcb7f('0x2c')],'resourceId':_0x3544c2['id'],'type':_0x4c9ba4[_0xcb7f('0x2c')],'sectionId':_0x4c9ba4['id']},{})[_0xcb7f('0x26')](function(){return _0x1e780b;});}else{return _0x1e780b;}})['catch'](function(_0x24d270){logger[_0xcb7f('0x2a')](_0xcb7f('0x53'),_0x24d270);throw _0x24d270;});}return _0x1e780b;})[_0xcb7f('0x26')](respondWithResult(_0x53ab05,0xc9))['catch'](handleError(_0x53ab05,null));};exports[_0xcb7f('0x25')]=function(_0x46fe88,_0x4cb761){if(_0x46fe88[_0xcb7f('0x4d')]['id']){delete _0x46fe88[_0xcb7f('0x4d')]['id'];}return db['MailQueue'][_0xcb7f('0x4b')]({'where':{'id':_0x46fe88[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0x4cb761,null))[_0xcb7f('0x26')](saveUpdates(_0x46fe88['body'],null))['then'](respondWithResult(_0x4cb761,null))[_0xcb7f('0x46')](handleError(_0x4cb761,null));};exports['destroy']=function(_0x1e4b36,_0x3cd25a){return db[_0xcb7f('0x43')]['find']({'where':{'id':_0x1e4b36['params']['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0x3cd25a,null))[_0xcb7f('0x26')](removeEntity(_0x3cd25a,null))['catch'](handleError(_0x3cd25a,null));};exports[_0xcb7f('0x54')]=function(_0x43a380,_0x24ea56){return db[_0xcb7f('0x43')][_0xcb7f('0x54')]()[_0xcb7f('0x26')](respondWithResult(_0x24ea56,null))[_0xcb7f('0x46')](handleError(_0x24ea56,null));};exports[_0xcb7f('0x55')]=function(_0x504892,_0x140621,_0x25b877){var _0x2fb3f8={'raw':!![],'where':{}},_0x5ac227={},_0xef6df7;return db[_0xcb7f('0x43')][_0xcb7f('0x56')]({'where':{'id':_0x504892[_0xcb7f('0x48')]['id']}})['then'](handleEntityNotFound(_0x140621,null))[_0xcb7f('0x26')](function(_0x51d6a6){if(_0x51d6a6){_0xef6df7=_0x51d6a6[_0xcb7f('0x28')]({'plain':!![]});_0x5ac227[_0xcb7f('0x33')]=_[_0xcb7f('0x49')](db['UserMailQueue']['rawAttributes']);_0x5ac227['query']=_[_0xcb7f('0x49')](_0x504892[_0xcb7f('0x36')]);_0x5ac227[_0xcb7f('0x34')]=_[_0xcb7f('0x35')](_0x5ac227[_0xcb7f('0x33')],_0x5ac227[_0xcb7f('0x36')]);_0x2fb3f8[_0xcb7f('0x37')]=_['intersection'](_0x5ac227['model'],qs['fields'](_0x504892[_0xcb7f('0x36')]['fields']));_0x2fb3f8[_0xcb7f('0x37')]=_0x2fb3f8[_0xcb7f('0x37')][_0xcb7f('0x39')]?_0x2fb3f8[_0xcb7f('0x37')]:_0x5ac227[_0xcb7f('0x33')];if(!_0x504892[_0xcb7f('0x36')]['hasOwnProperty'](_0xcb7f('0x3b'))){_0x2fb3f8[_0xcb7f('0x3c')]=qs[_0xcb7f('0x3c')](_0x504892[_0xcb7f('0x36')]['limit']);_0x2fb3f8[_0xcb7f('0x20')]=qs[_0xcb7f('0x20')](_0x504892[_0xcb7f('0x36')][_0xcb7f('0x20')]);}_0x2fb3f8['order']=qs[_0xcb7f('0x3e')](_0x504892['query'][_0xcb7f('0x3e')]);_0x2fb3f8[_0xcb7f('0x3f')]=qs[_0xcb7f('0x34')](_[_0xcb7f('0x40')](_0x504892['query'],_0x5ac227['filters']));_0x2fb3f8[_0xcb7f('0x3f')][_0xcb7f('0x57')]=_0x51d6a6['id'];if(_0x504892[_0xcb7f('0x36')]['filter']){_0x2fb3f8['where']=_[_0xcb7f('0x42')](_0x2fb3f8[_0xcb7f('0x3f')],{'$or':_[_0xcb7f('0x2f')](_0x2fb3f8[_0xcb7f('0x37')],function(_0x4b9572){var _0xaf7ee7={};_0xaf7ee7[_0x4b9572]={'$like':'%'+_0x504892[_0xcb7f('0x36')][_0xcb7f('0x41')]+'%'};return _0xaf7ee7;})});}_0x2fb3f8=_[_0xcb7f('0x42')]({},_0x2fb3f8,_0x504892['options']);return db[_0xcb7f('0x58')]['findAll'](_0x2fb3f8);}})[_0xcb7f('0x26')](function(_0x25bb7b){if(_0x25bb7b){return db[_0xcb7f('0x59')]['findAndCountAll']({'where':{'id':_['map'](_0x25bb7b,_0xcb7f('0x5a')),'role':_0xcb7f('0x5b')},'attributes':['id',_0xcb7f('0x2c'),'mailPause',_0xcb7f('0x5c'),_0xcb7f('0x5d')]});}})[_0xcb7f('0x26')](function(_0x2ba9f8){if(_0x2ba9f8){return{'count':_0x2ba9f8[_0xcb7f('0x22')],'rows':_['map'](_0x2ba9f8[_0xcb7f('0x5e')],function(_0xfa9182){return{'membername':_0xfa9182['name'],'UserId':_0xfa9182['id'],'queue_name':_0xef6df7[_0xcb7f('0x2c')],'MailQueueId':_0xef6df7['id'],'interface':util[_0xcb7f('0x5f')](_0xcb7f('0x60'),_0xcb7f('0x61'),_0xfa9182['name']),'penalty':0x0,'paused':_0xfa9182[_0xcb7f('0x62')],'createdAt':_0xfa9182[_0xcb7f('0x5d')],'updatedAt':_0xfa9182[_0xcb7f('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xcb7f('0x26')](respondWithFilteredResult(_0x140621,_0x2fb3f8))[_0xcb7f('0x46')](handleError(_0x140621,null));};exports[_0xcb7f('0x63')]=function(_0x8f0972,_0xa13d39,_0x2452a6){var _0x147a1e={};var _0x1030db={};var _0xebfdd1;var _0xfa2e30;return db[_0xcb7f('0x43')][_0xcb7f('0x56')]({'where':{'id':_0x8f0972[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0xa13d39,null))['then'](function(_0x1c3aa6){if(_0x1c3aa6){_0xebfdd1=_0x1c3aa6;_0x1030db['model']=_['keys'](db[_0xcb7f('0x64')][_0xcb7f('0x30')]);_0x1030db['query']=_[_0xcb7f('0x49')](_0x8f0972[_0xcb7f('0x36')]);_0x1030db[_0xcb7f('0x34')]=_['intersection'](_0x1030db['model'],_0x1030db[_0xcb7f('0x36')]);_0x147a1e[_0xcb7f('0x37')]=_['intersection'](_0x1030db[_0xcb7f('0x33')],qs[_0xcb7f('0x38')](_0x8f0972[_0xcb7f('0x36')][_0xcb7f('0x38')]));_0x147a1e[_0xcb7f('0x37')]=_0x147a1e['attributes']['length']?_0x147a1e[_0xcb7f('0x37')]:_0x1030db[_0xcb7f('0x33')];_0x147a1e[_0xcb7f('0x3d')]=qs[_0xcb7f('0x3e')](_0x8f0972[_0xcb7f('0x36')][_0xcb7f('0x3e')]);_0x147a1e[_0xcb7f('0x3f')]=qs[_0xcb7f('0x34')](_['pick'](_0x8f0972['query'],_0x1030db[_0xcb7f('0x34')]));if(_0x8f0972[_0xcb7f('0x36')]['filter']){_0x147a1e[_0xcb7f('0x3f')]=_[_0xcb7f('0x42')](_0x147a1e[_0xcb7f('0x3f')],{'$or':_[_0xcb7f('0x2f')](_0x147a1e[_0xcb7f('0x37')],function(_0x8d5d13){var _0x12f6c9={};_0x12f6c9[_0x8d5d13]={'$like':'%'+_0x8f0972[_0xcb7f('0x36')][_0xcb7f('0x41')]+'%'};return _0x12f6c9;})});}_0x147a1e=_['merge']({},_0x147a1e,_0x8f0972[_0xcb7f('0x65')]);return _0xebfdd1['getTeams'](_0x147a1e);}})[_0xcb7f('0x26')](function(_0x2d5f6d){if(_0x2d5f6d){_0xfa2e30=_0x2d5f6d[_0xcb7f('0x39')];if(!_0x8f0972['query'][_0xcb7f('0x3a')]('nolimit')){_0x147a1e['limit']=qs['limit'](_0x8f0972[_0xcb7f('0x36')][_0xcb7f('0x3c')]);_0x147a1e['offset']=qs[_0xcb7f('0x20')](_0x8f0972[_0xcb7f('0x36')][_0xcb7f('0x20')]);}return _0xebfdd1['getTeams'](_0x147a1e);}})['then'](function(_0x43c4e6){if(_0x43c4e6){return _0x43c4e6?{'count':_0xfa2e30,'rows':_0x43c4e6}:null;}})[_0xcb7f('0x26')](respondWithResult(_0xa13d39,null))[_0xcb7f('0x46')](handleError(_0xa13d39,null));};exports[_0xcb7f('0x66')]=function(_0x289558,_0x1cd91a,_0x318a4d){var _0x5a1a6b=_0x289558[_0xcb7f('0x4d')][_0xcb7f('0x67')];return db[_0xcb7f('0x64')]['findAll']({'where':{'id':_0x5a1a6b},'attributes':['id'],'include':[{'model':db[_0xcb7f('0x59')],'as':_0xcb7f('0x68'),'attributes':['id',_0xcb7f('0x2c'),_0xcb7f('0x69'),_0xcb7f('0x6a'),'interface'],'raw':!![]}]})[_0xcb7f('0x26')](function(_0x5e147d){if(_0x5e147d){var _0x46876b=_[_0xcb7f('0x6b')](_0x5e147d,function(_0x48fd75){var _0x36df80=_0x48fd75[_0xcb7f('0x28')]({'plain':!![]});return _0x36df80[_0xcb7f('0x68')];});return db['MailQueue'][_0xcb7f('0x4b')]({'where':{'id':_0x289558[_0xcb7f('0x48')]['id']}})['then'](function(_0x277ec8){return db['sequelize']['transaction'](function(_0xb396a4){return _0x277ec8[_0xcb7f('0x66')](_0x5a1a6b,{'transaction':_0xb396a4})[_0xcb7f('0x26')](function(){return BPromise[_0xcb7f('0x6c')](_0x46876b,function(_0x3bba98){return db[_0xcb7f('0x58')][_0xcb7f('0x6d')]({'where':{'UserId':_0x3bba98['id'],'MailQueueId':_0x289558[_0xcb7f('0x48')]['id']},'transaction':_0xb396a4});});})[_0xcb7f('0x26')](function(){_0x46876b['forEach'](function(_0xc07f34){socket[_0xcb7f('0x6e')]('userMailQueue:save',{'UserId':_0xc07f34['id'],'MailQueueId':_0x277ec8['id']});});});});});}})[_0xcb7f('0x26')](respondWithStatusCode(_0x1cd91a,null))[_0xcb7f('0x46')](handleError(_0x1cd91a,null));};exports[_0xcb7f('0x6f')]=function(_0x43a40f,_0x5a7f4b,_0x4d3667){return db[_0xcb7f('0x64')][_0xcb7f('0x45')]({'where':{'id':_0x43a40f[_0xcb7f('0x36')][_0xcb7f('0x67')]},'attributes':['id'],'include':[{'model':db[_0xcb7f('0x59')],'as':_0xcb7f('0x68'),'attributes':['id'],'raw':!![]}]})[_0xcb7f('0x26')](handleEntityNotFound(_0x5a7f4b,null))[_0xcb7f('0x26')](function(_0x3e2a16){var _0xe24664=_[_0xcb7f('0x2f')](_0x3e2a16,'id');var _0x381d23=[];var _0x49fd3b=[];var _0x5ae61b=squel[_0xcb7f('0x70')]();_0x5ae61b[_0xcb7f('0x71')]('tq.TeamId')['from']('team_has_mail_queues','tq')[_0xcb7f('0x72')]('user_has_teams','ut',_0xcb7f('0x73'))['where'](_0xcb7f('0x74'),_0x43a40f[_0xcb7f('0x48')]['id']);for(var _0x134574=0x0;_0x134574<_0x3e2a16[_0xcb7f('0x39')];_0x134574+=0x1){let _0x4413f9=_0x3e2a16[_0x134574];for(var _0x58b056=0x0;_0x58b056<_0x4413f9['Agents']['length'];_0x58b056+=0x1){let _0x116a77=_0x4413f9[_0xcb7f('0x68')][_0x58b056];var _0x122ed7=_0x5ae61b[_0xcb7f('0x75')]();_0x122ed7[_0xcb7f('0x3f')](_0xcb7f('0x76'),_0x116a77['id']);_0x49fd3b[_0xcb7f('0x77')](db[_0xcb7f('0x78')][_0xcb7f('0x36')](_0x122ed7[_0xcb7f('0x79')](),{'type':db['sequelize'][_0xcb7f('0x7a')][_0xcb7f('0x7b')]})[_0xcb7f('0x26')](function(_0x1957d5){if(_0x1957d5['length']===0x1){return _0x116a77['id'];}else{var _0x330e1f=_[_0xcb7f('0x7c')](_[_0xcb7f('0x2f')](_0x1957d5,_0xcb7f('0x7d')),function(_0x2052bd){return _[_0xcb7f('0x7e')](_0xe24664,_0x2052bd);});if(_0x330e1f){return _0x116a77['id'];}}}));}}return BPromise[_0xcb7f('0x7f')](_0x49fd3b)[_0xcb7f('0x26')](function(_0x1792dd){_0x381d23=_(_0x381d23)[_0xcb7f('0x80')](_0x1792dd)['compact']()['value']();return db['MailQueue'][_0xcb7f('0x4b')]({'where':{'id':_0x43a40f[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](function(_0x578b44){return db[_0xcb7f('0x78')][_0xcb7f('0x81')](function(_0x240c36){return _0x578b44['removeTeams'](_0x43a40f[_0xcb7f('0x36')][_0xcb7f('0x67')],{'transaction':_0x240c36})[_0xcb7f('0x26')](function(){if(!_[_0xcb7f('0x82')](_0x381d23)){return _0x578b44[_0xcb7f('0x83')](_0x381d23,{'transaction':_0x240c36});}})[_0xcb7f('0x26')](function(){_0x381d23[_0xcb7f('0x84')](function(_0x12239f){socket[_0xcb7f('0x6e')](_0xcb7f('0x85'),{'UserId':_0x12239f,'MailQueueId':_0x578b44['id']});});});});});});})['then'](respondWithStatusCode(_0x5a7f4b,null))[_0xcb7f('0x46')](handleError(_0x5a7f4b,null));};exports[_0xcb7f('0x86')]=function(_0x3686a9,_0x5ed03a,_0x264775){return db[_0xcb7f('0x43')][_0xcb7f('0x4b')]({'where':{'id':_0x3686a9[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0x5ed03a,null))[_0xcb7f('0x26')](function(_0x12c78b){if(_0x12c78b){return _0x12c78b[_0xcb7f('0x86')](_0x3686a9[_0xcb7f('0x4d')][_0xcb7f('0x67')],_[_0xcb7f('0x87')](_0x3686a9[_0xcb7f('0x4d')],[_0xcb7f('0x67'),'id'])||{})[_0xcb7f('0x88')](function(_0xbefa6b){for(var _0x136748=0x0;_0x136748<_0x3686a9[_0xcb7f('0x4d')][_0xcb7f('0x67')]['length'];_0x136748+=0x1){socket[_0xcb7f('0x6e')](_0xcb7f('0x89'),{'UserId':Number(_0x3686a9['body'][_0xcb7f('0x67')][_0x136748]),'MailQueueId':Number(_0x3686a9[_0xcb7f('0x48')]['id'])});}return _0xbefa6b;});}})[_0xcb7f('0x26')](respondWithResult(_0x5ed03a,null))[_0xcb7f('0x46')](handleError(_0x5ed03a,null));};exports['removeAgents']=function(_0x1e9d95,_0x3bbc8f,_0x562f76){return db[_0xcb7f('0x43')][_0xcb7f('0x4b')]({'where':{'id':_0x1e9d95[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0x3bbc8f,null))[_0xcb7f('0x26')](function(_0x17c465){if(_0x17c465){return _0x17c465['removeAgents'](_0x1e9d95[_0xcb7f('0x36')]['ids'])['then'](function(){if(_[_0xcb7f('0x8a')](_0x1e9d95[_0xcb7f('0x36')][_0xcb7f('0x67')])){for(var _0x4d0a1c=0x0;_0x4d0a1c<_0x1e9d95[_0xcb7f('0x36')][_0xcb7f('0x67')][_0xcb7f('0x39')];_0x4d0a1c+=0x1){socket[_0xcb7f('0x6e')]('userMailQueue:remove',{'UserId':Number(_0x1e9d95[_0xcb7f('0x36')][_0xcb7f('0x67')][_0x4d0a1c]),'MailQueueId':Number(_0x1e9d95[_0xcb7f('0x48')]['id'])});}}else{socket[_0xcb7f('0x6e')](_0xcb7f('0x85'),{'UserId':Number(_0x1e9d95[_0xcb7f('0x36')][_0xcb7f('0x67')]),'MailQueueId':Number(_0x1e9d95['params']['id'])});}});}})[_0xcb7f('0x26')](respondWithStatusCode(_0x3bbc8f,null))[_0xcb7f('0x46')](handleError(_0x3bbc8f,null));};exports[_0xcb7f('0x8b')]=function(_0x1d6ab5,_0x1db488,_0x425773){var _0x37e995={};var _0x274992={};var _0x2894cc;var _0x5e309f;return db['MailQueue'][_0xcb7f('0x56')]({'where':{'id':_0x1d6ab5[_0xcb7f('0x48')]['id']}})[_0xcb7f('0x26')](handleEntityNotFound(_0x1db488,null))[_0xcb7f('0x26')](function(_0x4353aa){if(_0x4353aa){_0x2894cc=_0x4353aa;_0x274992[_0xcb7f('0x33')]=_[_0xcb7f('0x49')](db[_0xcb7f('0x59')]['rawAttributes']);_0x274992[_0xcb7f('0x36')]=_['keys'](_0x1d6ab5[_0xcb7f('0x36')]);_0x274992[_0xcb7f('0x34')]=_[_0xcb7f('0x35')](_0x274992['model'],_0x274992[_0xcb7f('0x36')]);_0x37e995[_0xcb7f('0x37')]=_[_0xcb7f('0x35')](_0x274992[_0xcb7f('0x33')],qs[_0xcb7f('0x38')](_0x1d6ab5['query']['fields']));_0x37e995[_0xcb7f('0x37')]=_0x37e995[_0xcb7f('0x37')][_0xcb7f('0x39')]?_0x37e995[_0xcb7f('0x37')]:_0x274992[_0xcb7f('0x33')];_0x37e995['order']=qs['sort'](_0x1d6ab5[_0xcb7f('0x36')][_0xcb7f('0x3e')]);_0x37e995[_0xcb7f('0x3f')]=qs['filters'](_[_0xcb7f('0x40')](_0x1d6ab5['query'],_0x274992[_0xcb7f('0x34')]));if(_0x1d6ab5['query'][_0xcb7f('0x41')]){_0x37e995['where']=_['merge'](_0x37e995[_0xcb7f('0x3f')],{'$or':_[_0xcb7f('0x2f')](_0x37e995[_0xcb7f('0x37')],function(_0x2a081a){var _0x4039f4={};_0x4039f4[_0x2a081a]={'$like':'%'+_0x1d6ab5[_0xcb7f('0x36')][_0xcb7f('0x41')]+'%'};return _0x4039f4;})});}_0x37e995=_[_0xcb7f('0x42')]({},_0x37e995,_0x1d6ab5['options']);return _0x2894cc['getAgents'](_0x37e995);}})[_0xcb7f('0x26')](function(_0x591e37){if(_0x591e37){_0x5e309f=_0x591e37[_0xcb7f('0x39')];if(!_0x1d6ab5[_0xcb7f('0x36')][_0xcb7f('0x3a')](_0xcb7f('0x3b'))){_0x37e995[_0xcb7f('0x3c')]=qs['limit'](_0x1d6ab5[_0xcb7f('0x36')][_0xcb7f('0x3c')]);_0x37e995[_0xcb7f('0x20')]=qs['offset'](_0x1d6ab5[_0xcb7f('0x36')][_0xcb7f('0x20')]);}return _0x2894cc[_0xcb7f('0x8b')](_0x37e995);}})[_0xcb7f('0x26')](function(_0xc735c){if(_0xc735c){return _0xc735c?{'count':_0x5e309f,'rows':_0xc735c}:null;}})[_0xcb7f('0x26')](respondWithResult(_0x1db488,null))[_0xcb7f('0x46')](handleError(_0x1db488,null));};
\ No newline at end of file
+var _0xb7a9=['moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','offset','limit','undefined','set','json','apply','update','then','destroy','UserProfileResource','error','stack','name','send','map','MailQueue','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','findAll','catch','show','params','keys','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','findOne','UserMailQueue','MailQueueId','User','mailPause','updatedAt','createdAt','rows','format','%s/%s','getTeams','Team','addTeams','ids','voicePause','flatMap','sequelize','transaction','each','forEach','userMailQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','compact','value','isEmpty','removeAgents','emit','userMailQueue:remove','addAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x81cf76,_0x4c434a){var _0x26d14f=function(_0x30786d){while(--_0x30786d){_0x81cf76['push'](_0x81cf76['shift']());}};_0x26d14f(++_0x4c434a);}(_0xb7a9,0x1a3));var _0x9b7a=function(_0xa9d74c,_0x3fa658){_0xa9d74c=_0xa9d74c-0x0;var _0x6a6c70=_0xb7a9[_0xa9d74c];return _0x6a6c70;};'use strict';var emlformat=require(_0x9b7a('0x0'));var rimraf=require(_0x9b7a('0x1'));var zipdir=require(_0x9b7a('0x2'));var jsonpatch=require(_0x9b7a('0x3'));var rp=require('request-promise');var moment=require(_0x9b7a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9b7a('0x5'));var util=require(_0x9b7a('0x6'));var path=require(_0x9b7a('0x7'));var sox=require(_0x9b7a('0x8'));var csv=require(_0x9b7a('0x9'));var ejs=require(_0x9b7a('0xa'));var fs=require('fs');var fs_extra=require(_0x9b7a('0xb'));var _=require(_0x9b7a('0xc'));var squel=require(_0x9b7a('0xd'));var crypto=require(_0x9b7a('0xe'));var jsforce=require(_0x9b7a('0xf'));var deskjs=require(_0x9b7a('0x10'));var toCsv=require('to-csv');var querystring=require(_0x9b7a('0x11'));var Papa=require(_0x9b7a('0x12'));var Redis=require(_0x9b7a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x9b7a('0x14'));var as=require(_0x9b7a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9b7a('0x16'));var utils=require(_0x9b7a('0x17'));var config=require(_0x9b7a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b7a('0x19'))['db'];config[_0x9b7a('0x1a')]=_[_0x9b7a('0x1b')](config[_0x9b7a('0x1a')],{'host':_0x9b7a('0x1c'),'port':0x18eb});var socket=require(_0x9b7a('0x1d'))(new Redis(config[_0x9b7a('0x1a')]));require(_0x9b7a('0x1e'))[_0x9b7a('0x1f')](socket);function respondWithStatusCode(_0x1ec7f2,_0x3ab3c6){_0x3ab3c6=_0x3ab3c6||0xcc;return function(_0xe017bc){if(_0xe017bc){return _0x1ec7f2[_0x9b7a('0x20')](_0x3ab3c6);}return _0x1ec7f2[_0x9b7a('0x21')](_0x3ab3c6)[_0x9b7a('0x22')]();};}function respondWithResult(_0x423976,_0x1ae638){_0x1ae638=_0x1ae638||0xc8;return function(_0x1e4bfa){if(_0x1e4bfa){return _0x423976['status'](_0x1ae638)['json'](_0x1e4bfa);}};}function respondWithFilteredResult(_0x164ed3,_0xc8773){return function(_0x4f5831){if(_0x4f5831){var _0xed3ca=typeof _0xc8773[_0x9b7a('0x23')]==='undefined'&&typeof _0xc8773[_0x9b7a('0x24')]===_0x9b7a('0x25');var _0x4bd204=_0x4f5831['count'];var _0x57e8e7=_0xed3ca?0x0:_0xc8773[_0x9b7a('0x23')];var _0x33c33a=_0xed3ca?_0x4f5831['count']:_0xc8773[_0x9b7a('0x23')]+_0xc8773[_0x9b7a('0x24')];var _0x551498;if(_0x33c33a>=_0x4bd204){_0x33c33a=_0x4bd204;_0x551498=0xc8;}else{_0x551498=0xce;}_0x164ed3[_0x9b7a('0x21')](_0x551498);return _0x164ed3[_0x9b7a('0x26')]('Content-Range',_0x57e8e7+'-'+_0x33c33a+'/'+_0x4bd204)[_0x9b7a('0x27')](_0x4f5831);}return null;};}function patchUpdates(_0x2c1a26){return function(_0x19ec01){try{jsonpatch[_0x9b7a('0x28')](_0x19ec01,_0x2c1a26,!![]);}catch(_0x35c10c){return BPromise['reject'](_0x35c10c);}return _0x19ec01['save']();};}function saveUpdates(_0x3e53de,_0x5646bb){return function(_0x56c139){if(_0x56c139){return _0x56c139[_0x9b7a('0x29')](_0x3e53de)[_0x9b7a('0x2a')](function(_0x222a9d){return _0x222a9d;});}return null;};}function removeEntity(_0x30ec57,_0x5570c8){return function(_0x52990b){if(_0x52990b){return _0x52990b[_0x9b7a('0x2b')]()[_0x9b7a('0x2a')](function(){var _0x15fca3=_0x52990b['get']({'plain':!![]});var _0x520e15='MailQueues';return db[_0x9b7a('0x2c')]['destroy']({'where':{'type':_0x520e15,'resourceId':_0x15fca3['id']}})[_0x9b7a('0x2a')](function(){return _0x52990b;});})[_0x9b7a('0x2a')](function(){_0x30ec57[_0x9b7a('0x21')](0xcc)[_0x9b7a('0x22')]();});}};}function handleEntityNotFound(_0x1ab1a2,_0x3b5d54){return function(_0x4eb38d){if(!_0x4eb38d){_0x1ab1a2['sendStatus'](0x194);}return _0x4eb38d;};}function handleError(_0x4ad7d3,_0x431bdd){_0x431bdd=_0x431bdd||0x1f4;return function(_0xeb7500){logger[_0x9b7a('0x2d')](_0xeb7500[_0x9b7a('0x2e')]);if(_0xeb7500[_0x9b7a('0x2f')]){delete _0xeb7500[_0x9b7a('0x2f')];}_0x4ad7d3['status'](_0x431bdd)[_0x9b7a('0x30')](_0xeb7500);};}exports['index']=function(_0x28930e,_0xe88c6b){var _0x3cadf2={},_0x29e35f={},_0x509c2e={'count':0x0,'rows':[]};var _0x2b98f8=_[_0x9b7a('0x31')](db[_0x9b7a('0x32')][_0x9b7a('0x33')],function(_0x45fa62){return{'name':_0x45fa62[_0x9b7a('0x34')],'type':_0x45fa62['type'][_0x9b7a('0x35')]};});_0x29e35f['model']=_['map'](_0x2b98f8,_0x9b7a('0x2f'));_0x29e35f[_0x9b7a('0x36')]=_['keys'](_0x28930e['query']);_0x29e35f[_0x9b7a('0x37')]=_[_0x9b7a('0x38')](_0x29e35f[_0x9b7a('0x39')],_0x29e35f[_0x9b7a('0x36')]);_0x3cadf2[_0x9b7a('0x3a')]=_[_0x9b7a('0x38')](_0x29e35f[_0x9b7a('0x39')],qs[_0x9b7a('0x3b')](_0x28930e[_0x9b7a('0x36')]['fields']));_0x3cadf2[_0x9b7a('0x3a')]=_0x3cadf2['attributes'][_0x9b7a('0x3c')]?_0x3cadf2[_0x9b7a('0x3a')]:_0x29e35f['model'];if(!_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x3d')](_0x9b7a('0x3e'))){_0x3cadf2[_0x9b7a('0x24')]=qs[_0x9b7a('0x24')](_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x24')]);_0x3cadf2[_0x9b7a('0x23')]=qs[_0x9b7a('0x23')](_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x23')]);}_0x3cadf2[_0x9b7a('0x3f')]=qs[_0x9b7a('0x40')](_0x28930e['query'][_0x9b7a('0x40')]);_0x3cadf2[_0x9b7a('0x41')]=qs['filters'](_[_0x9b7a('0x42')](_0x28930e[_0x9b7a('0x36')],_0x29e35f[_0x9b7a('0x37')]),_0x2b98f8);if(_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x43')]){_0x3cadf2['where']=_[_0x9b7a('0x44')](_0x3cadf2[_0x9b7a('0x41')],{'$or':_[_0x9b7a('0x31')](_0x2b98f8,function(_0x5d4e1a){if(_0x5d4e1a[_0x9b7a('0x45')]!==_0x9b7a('0x46')){var _0x119075={};_0x119075[_0x5d4e1a[_0x9b7a('0x2f')]]={'$like':'%'+_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x43')]+'%'};return _0x119075;}})});}_0x3cadf2=_[_0x9b7a('0x44')]({},_0x3cadf2,_0x28930e[_0x9b7a('0x47')]);var _0x4e278b={'where':_0x3cadf2[_0x9b7a('0x41')]};return db[_0x9b7a('0x32')]['count'](_0x4e278b)['then'](function(_0x42ab39){_0x509c2e[_0x9b7a('0x48')]=_0x42ab39;if(_0x28930e[_0x9b7a('0x36')][_0x9b7a('0x49')]){_0x3cadf2['include']=[{'all':!![]}];}return db['MailQueue'][_0x9b7a('0x4a')](_0x3cadf2);})[_0x9b7a('0x2a')](function(_0x1dc1de){_0x509c2e['rows']=_0x1dc1de;return _0x509c2e;})[_0x9b7a('0x2a')](respondWithFilteredResult(_0xe88c6b,_0x3cadf2))[_0x9b7a('0x4b')](handleError(_0xe88c6b,null));};exports[_0x9b7a('0x4c')]=function(_0x77192f,_0x19b83c){var _0x3c390b={'raw':!![],'where':{'id':_0x77192f[_0x9b7a('0x4d')]['id']}},_0x2db9b2={};_0x2db9b2[_0x9b7a('0x39')]=_[_0x9b7a('0x4e')](db[_0x9b7a('0x32')][_0x9b7a('0x33')]);_0x2db9b2['query']=_[_0x9b7a('0x4e')](_0x77192f[_0x9b7a('0x36')]);_0x2db9b2['filters']=_['intersection'](_0x2db9b2['model'],_0x2db9b2[_0x9b7a('0x36')]);_0x3c390b[_0x9b7a('0x3a')]=_[_0x9b7a('0x38')](_0x2db9b2[_0x9b7a('0x39')],qs['fields'](_0x77192f[_0x9b7a('0x36')][_0x9b7a('0x3b')]));_0x3c390b[_0x9b7a('0x3a')]=_0x3c390b[_0x9b7a('0x3a')][_0x9b7a('0x3c')]?_0x3c390b['attributes']:_0x2db9b2[_0x9b7a('0x39')];if(_0x77192f[_0x9b7a('0x36')]['includeAll']){_0x3c390b[_0x9b7a('0x4f')]=[{'all':!![]}];}_0x3c390b=_[_0x9b7a('0x44')]({},_0x3c390b,_0x77192f[_0x9b7a('0x47')]);return db[_0x9b7a('0x32')][_0x9b7a('0x50')](_0x3c390b)['then'](handleEntityNotFound(_0x19b83c,null))[_0x9b7a('0x2a')](respondWithResult(_0x19b83c,null))[_0x9b7a('0x4b')](handleError(_0x19b83c,null));};exports[_0x9b7a('0x51')]=function(_0x5a70af,_0x218b8b){return db[_0x9b7a('0x32')][_0x9b7a('0x51')](_0x5a70af['body'],{})[_0x9b7a('0x2a')](function(_0x21be4d){var _0x307f4c=_0x5a70af[_0x9b7a('0x52')][_0x9b7a('0x53')]({'plain':!![]});if(!_0x307f4c)throw new Error(_0x9b7a('0x54'));if(_0x307f4c[_0x9b7a('0x55')]==='user'){var _0x4cb5e5=_0x21be4d[_0x9b7a('0x53')]({'plain':!![]});var _0x5e5996=_0x9b7a('0x56');return db[_0x9b7a('0x57')]['find']({'where':{'name':_0x5e5996,'userProfileId':_0x307f4c[_0x9b7a('0x58')]},'raw':!![]})[_0x9b7a('0x2a')](function(_0x54a877){if(_0x54a877&&_0x54a877[_0x9b7a('0x59')]===0x0){return db[_0x9b7a('0x2c')][_0x9b7a('0x51')]({'name':_0x4cb5e5[_0x9b7a('0x2f')],'resourceId':_0x4cb5e5['id'],'type':_0x54a877[_0x9b7a('0x2f')],'sectionId':_0x54a877['id']},{})['then'](function(){return _0x21be4d;});}else{return _0x21be4d;}})[_0x9b7a('0x4b')](function(_0x4942f2){logger[_0x9b7a('0x2d')](_0x9b7a('0x5a'),_0x4942f2);throw _0x4942f2;});}return _0x21be4d;})['then'](respondWithResult(_0x218b8b,0xc9))[_0x9b7a('0x4b')](handleError(_0x218b8b,null));};exports['update']=function(_0x429bb4,_0x2051a3){if(_0x429bb4[_0x9b7a('0x5b')]['id']){delete _0x429bb4[_0x9b7a('0x5b')]['id'];}return db[_0x9b7a('0x32')][_0x9b7a('0x50')]({'where':{'id':_0x429bb4[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x2051a3,null))[_0x9b7a('0x2a')](saveUpdates(_0x429bb4[_0x9b7a('0x5b')],null))[_0x9b7a('0x2a')](respondWithResult(_0x2051a3,null))[_0x9b7a('0x4b')](handleError(_0x2051a3,null));};exports[_0x9b7a('0x2b')]=function(_0x897dfa,_0x24c5c5){return db['MailQueue']['find']({'where':{'id':_0x897dfa[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x24c5c5,null))[_0x9b7a('0x2a')](removeEntity(_0x24c5c5,null))[_0x9b7a('0x4b')](handleError(_0x24c5c5,null));};exports[_0x9b7a('0x5c')]=function(_0x21c5bf,_0x52c1e2){return db[_0x9b7a('0x32')][_0x9b7a('0x5c')]()[_0x9b7a('0x2a')](respondWithResult(_0x52c1e2,null))[_0x9b7a('0x4b')](handleError(_0x52c1e2,null));};exports['getMembers']=function(_0x2a9150,_0x260af2,_0x5c2ee3){var _0x4b40bc={'raw':!![],'where':{}},_0x28d6bc={},_0x5453b0;return db[_0x9b7a('0x32')][_0x9b7a('0x5d')]({'where':{'id':_0x2a9150['params']['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x260af2,null))[_0x9b7a('0x2a')](function(_0x38a621){if(_0x38a621){_0x5453b0=_0x38a621[_0x9b7a('0x53')]({'plain':!![]});_0x28d6bc[_0x9b7a('0x39')]=_[_0x9b7a('0x4e')](db[_0x9b7a('0x5e')]['rawAttributes']);_0x28d6bc[_0x9b7a('0x36')]=_[_0x9b7a('0x4e')](_0x2a9150[_0x9b7a('0x36')]);_0x28d6bc['filters']=_[_0x9b7a('0x38')](_0x28d6bc[_0x9b7a('0x39')],_0x28d6bc[_0x9b7a('0x36')]);_0x4b40bc['attributes']=_[_0x9b7a('0x38')](_0x28d6bc[_0x9b7a('0x39')],qs[_0x9b7a('0x3b')](_0x2a9150[_0x9b7a('0x36')]['fields']));_0x4b40bc['attributes']=_0x4b40bc[_0x9b7a('0x3a')][_0x9b7a('0x3c')]?_0x4b40bc[_0x9b7a('0x3a')]:_0x28d6bc[_0x9b7a('0x39')];if(!_0x2a9150[_0x9b7a('0x36')]['hasOwnProperty']('nolimit')){_0x4b40bc[_0x9b7a('0x24')]=qs[_0x9b7a('0x24')](_0x2a9150[_0x9b7a('0x36')]['limit']);_0x4b40bc['offset']=qs[_0x9b7a('0x23')](_0x2a9150['query']['offset']);}_0x4b40bc[_0x9b7a('0x3f')]=qs['sort'](_0x2a9150[_0x9b7a('0x36')]['sort']);_0x4b40bc[_0x9b7a('0x41')]=qs['filters'](_[_0x9b7a('0x42')](_0x2a9150['query'],_0x28d6bc[_0x9b7a('0x37')]));_0x4b40bc[_0x9b7a('0x41')][_0x9b7a('0x5f')]=_0x38a621['id'];if(_0x2a9150[_0x9b7a('0x36')][_0x9b7a('0x43')]){_0x4b40bc[_0x9b7a('0x41')]=_['merge'](_0x4b40bc[_0x9b7a('0x41')],{'$or':_[_0x9b7a('0x31')](_0x4b40bc[_0x9b7a('0x3a')],function(_0x2c89ee){var _0x40805a={};_0x40805a[_0x2c89ee]={'$like':'%'+_0x2a9150[_0x9b7a('0x36')]['filter']+'%'};return _0x40805a;})});}_0x4b40bc=_[_0x9b7a('0x44')]({},_0x4b40bc,_0x2a9150[_0x9b7a('0x47')]);return db[_0x9b7a('0x5e')][_0x9b7a('0x4a')](_0x4b40bc);}})[_0x9b7a('0x2a')](function(_0x5aa2d8){if(_0x5aa2d8){return db[_0x9b7a('0x60')]['findAndCountAll']({'where':{'id':_['map'](_0x5aa2d8,'UserId'),'role':'agent'},'attributes':['id',_0x9b7a('0x2f'),_0x9b7a('0x61'),_0x9b7a('0x62'),_0x9b7a('0x63')]});}})[_0x9b7a('0x2a')](function(_0x26df4e){if(_0x26df4e){return{'count':_0x26df4e[_0x9b7a('0x48')],'rows':_[_0x9b7a('0x31')](_0x26df4e[_0x9b7a('0x64')],function(_0x17707a){return{'membername':_0x17707a[_0x9b7a('0x2f')],'UserId':_0x17707a['id'],'queue_name':_0x5453b0['name'],'MailQueueId':_0x5453b0['id'],'interface':util[_0x9b7a('0x65')](_0x9b7a('0x66'),'SIP',_0x17707a[_0x9b7a('0x2f')]),'penalty':0x0,'paused':_0x17707a[_0x9b7a('0x61')],'createdAt':_0x17707a[_0x9b7a('0x63')],'updatedAt':_0x17707a[_0x9b7a('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9b7a('0x2a')](respondWithFilteredResult(_0x260af2,_0x4b40bc))[_0x9b7a('0x4b')](handleError(_0x260af2,null));};exports[_0x9b7a('0x67')]=function(_0x1f2e4a,_0x2b2b33,_0x25fc1e){var _0x525abe={};var _0x1d0b5f={};var _0x576427;var _0x52c4a1;return db[_0x9b7a('0x32')][_0x9b7a('0x5d')]({'where':{'id':_0x1f2e4a[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x2b2b33,null))[_0x9b7a('0x2a')](function(_0x6917b3){if(_0x6917b3){_0x576427=_0x6917b3;_0x1d0b5f['model']=_['keys'](db[_0x9b7a('0x68')][_0x9b7a('0x33')]);_0x1d0b5f[_0x9b7a('0x36')]=_[_0x9b7a('0x4e')](_0x1f2e4a[_0x9b7a('0x36')]);_0x1d0b5f[_0x9b7a('0x37')]=_[_0x9b7a('0x38')](_0x1d0b5f[_0x9b7a('0x39')],_0x1d0b5f[_0x9b7a('0x36')]);_0x525abe['attributes']=_[_0x9b7a('0x38')](_0x1d0b5f[_0x9b7a('0x39')],qs[_0x9b7a('0x3b')](_0x1f2e4a[_0x9b7a('0x36')]['fields']));_0x525abe['attributes']=_0x525abe['attributes'][_0x9b7a('0x3c')]?_0x525abe[_0x9b7a('0x3a')]:_0x1d0b5f['model'];_0x525abe['order']=qs[_0x9b7a('0x40')](_0x1f2e4a[_0x9b7a('0x36')][_0x9b7a('0x40')]);_0x525abe[_0x9b7a('0x41')]=qs['filters'](_[_0x9b7a('0x42')](_0x1f2e4a['query'],_0x1d0b5f[_0x9b7a('0x37')]));if(_0x1f2e4a[_0x9b7a('0x36')][_0x9b7a('0x43')]){_0x525abe[_0x9b7a('0x41')]=_['merge'](_0x525abe['where'],{'$or':_[_0x9b7a('0x31')](_0x525abe[_0x9b7a('0x3a')],function(_0x4b133b){var _0x4618db={};_0x4618db[_0x4b133b]={'$like':'%'+_0x1f2e4a['query'][_0x9b7a('0x43')]+'%'};return _0x4618db;})});}_0x525abe=_['merge']({},_0x525abe,_0x1f2e4a[_0x9b7a('0x47')]);return _0x576427[_0x9b7a('0x67')](_0x525abe);}})['then'](function(_0x5d1cd5){if(_0x5d1cd5){_0x52c4a1=_0x5d1cd5['length'];if(!_0x1f2e4a['query'][_0x9b7a('0x3d')](_0x9b7a('0x3e'))){_0x525abe[_0x9b7a('0x24')]=qs[_0x9b7a('0x24')](_0x1f2e4a[_0x9b7a('0x36')]['limit']);_0x525abe[_0x9b7a('0x23')]=qs['offset'](_0x1f2e4a['query'][_0x9b7a('0x23')]);}return _0x576427['getTeams'](_0x525abe);}})[_0x9b7a('0x2a')](function(_0x411324){if(_0x411324){return _0x411324?{'count':_0x52c4a1,'rows':_0x411324}:null;}})[_0x9b7a('0x2a')](respondWithResult(_0x2b2b33,null))[_0x9b7a('0x4b')](handleError(_0x2b2b33,null));};exports[_0x9b7a('0x69')]=function(_0x25f2a4,_0x699f9d,_0x481c66){var _0x19fbc9=_0x25f2a4[_0x9b7a('0x5b')][_0x9b7a('0x6a')];return db[_0x9b7a('0x68')][_0x9b7a('0x4a')]({'where':{'id':_0x19fbc9},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x9b7a('0x2f'),'online',_0x9b7a('0x6b'),'interface'],'raw':!![]}]})[_0x9b7a('0x2a')](function(_0x509b9a){if(_0x509b9a){var _0x750540=_[_0x9b7a('0x6c')](_0x509b9a,function(_0x13ba83){var _0x572c75=_0x13ba83['get']({'plain':!![]});return _0x572c75['Agents'];});return db['MailQueue']['find']({'where':{'id':_0x25f2a4[_0x9b7a('0x4d')]['id']}})['then'](function(_0x5775d1){return db[_0x9b7a('0x6d')][_0x9b7a('0x6e')](function(_0x372552){return _0x5775d1['addTeams'](_0x19fbc9,{'transaction':_0x372552})[_0x9b7a('0x2a')](function(){return BPromise[_0x9b7a('0x6f')](_0x750540,function(_0x500929){return db[_0x9b7a('0x5e')]['findOrCreate']({'where':{'UserId':_0x500929['id'],'MailQueueId':_0x25f2a4['params']['id']},'transaction':_0x372552});});})['then'](function(){_0x750540[_0x9b7a('0x70')](function(_0x274d53){socket['emit'](_0x9b7a('0x71'),{'UserId':_0x274d53['id'],'MailQueueId':_0x5775d1['id']});});});});});}})[_0x9b7a('0x2a')](respondWithStatusCode(_0x699f9d,null))[_0x9b7a('0x4b')](handleError(_0x699f9d,null));};exports[_0x9b7a('0x72')]=function(_0x2ac0ae,_0x1be72d,_0x24cc58){return db['Team']['findAll']({'where':{'id':_0x2ac0ae[_0x9b7a('0x36')][_0x9b7a('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x9b7a('0x60')],'as':_0x9b7a('0x73'),'attributes':['id'],'raw':!![]}]})[_0x9b7a('0x2a')](handleEntityNotFound(_0x1be72d,null))[_0x9b7a('0x2a')](function(_0x462a61){var _0x570627=_[_0x9b7a('0x31')](_0x462a61,'id');var _0x21473f=[];var _0x2217ce=[];var _0xfc1cb4=squel[_0x9b7a('0x74')]();_0xfc1cb4[_0x9b7a('0x75')](_0x9b7a('0x76'))[_0x9b7a('0x77')]('team_has_mail_queues','tq')[_0x9b7a('0x78')](_0x9b7a('0x79'),'ut',_0x9b7a('0x7a'))[_0x9b7a('0x41')]('MailQueueId\x20=\x20?',_0x2ac0ae[_0x9b7a('0x4d')]['id']);for(var _0x5a6f51=0x0;_0x5a6f51<_0x462a61['length'];_0x5a6f51+=0x1){let _0x56e892=_0x462a61[_0x5a6f51];for(var _0x57229e=0x0;_0x57229e<_0x56e892['Agents']['length'];_0x57229e+=0x1){let _0x121d75=_0x56e892[_0x9b7a('0x73')][_0x57229e];var _0x3b7d29=_0xfc1cb4[_0x9b7a('0x7b')]();_0x3b7d29['where'](_0x9b7a('0x7c'),_0x121d75['id']);_0x2217ce[_0x9b7a('0x7d')](db[_0x9b7a('0x6d')]['query'](_0x3b7d29[_0x9b7a('0x7e')](),{'type':db[_0x9b7a('0x6d')][_0x9b7a('0x7f')][_0x9b7a('0x80')]})[_0x9b7a('0x2a')](function(_0x357046){if(_0x357046['length']===0x1){return _0x121d75['id'];}else{var _0x113165=_['every'](_[_0x9b7a('0x31')](_0x357046,_0x9b7a('0x81')),function(_0x3a19cf){return _[_0x9b7a('0x82')](_0x570627,_0x3a19cf);});if(_0x113165){return _0x121d75['id'];}}}));}}return BPromise[_0x9b7a('0x83')](_0x2217ce)[_0x9b7a('0x2a')](function(_0x36053f){_0x21473f=_(_0x21473f)['union'](_0x36053f)[_0x9b7a('0x84')]()[_0x9b7a('0x85')]();return db[_0x9b7a('0x32')][_0x9b7a('0x50')]({'where':{'id':_0x2ac0ae[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](function(_0xfd03dc){return db[_0x9b7a('0x6d')][_0x9b7a('0x6e')](function(_0x20e913){return _0xfd03dc['removeTeams'](_0x2ac0ae[_0x9b7a('0x36')][_0x9b7a('0x6a')],{'transaction':_0x20e913})[_0x9b7a('0x2a')](function(){if(!_[_0x9b7a('0x86')](_0x21473f)){return _0xfd03dc[_0x9b7a('0x87')](_0x21473f,{'transaction':_0x20e913});}})[_0x9b7a('0x2a')](function(){_0x21473f[_0x9b7a('0x70')](function(_0x8566ff){socket[_0x9b7a('0x88')](_0x9b7a('0x89'),{'UserId':_0x8566ff,'MailQueueId':_0xfd03dc['id']});});});});});});})[_0x9b7a('0x2a')](respondWithStatusCode(_0x1be72d,null))[_0x9b7a('0x4b')](handleError(_0x1be72d,null));};exports[_0x9b7a('0x8a')]=function(_0x3c6594,_0x35dc91,_0xdd6260){return db['MailQueue'][_0x9b7a('0x50')]({'where':{'id':_0x3c6594[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x35dc91,null))[_0x9b7a('0x2a')](function(_0xb1a59c){if(_0xb1a59c){return _0xb1a59c[_0x9b7a('0x8a')](_0x3c6594['body'][_0x9b7a('0x6a')],_['omit'](_0x3c6594[_0x9b7a('0x5b')],[_0x9b7a('0x6a'),'id'])||{})['spread'](function(_0x5070ce){for(var _0x5719ce=0x0;_0x5719ce<_0x3c6594[_0x9b7a('0x5b')][_0x9b7a('0x6a')][_0x9b7a('0x3c')];_0x5719ce+=0x1){socket['emit'](_0x9b7a('0x71'),{'UserId':Number(_0x3c6594['body'][_0x9b7a('0x6a')][_0x5719ce]),'MailQueueId':Number(_0x3c6594[_0x9b7a('0x4d')]['id'])});}return _0x5070ce;});}})[_0x9b7a('0x2a')](respondWithResult(_0x35dc91,null))[_0x9b7a('0x4b')](handleError(_0x35dc91,null));};exports[_0x9b7a('0x87')]=function(_0x4d01cb,_0x293343,_0x55cd3e){return db[_0x9b7a('0x32')][_0x9b7a('0x50')]({'where':{'id':_0x4d01cb[_0x9b7a('0x4d')]['id']}})['then'](handleEntityNotFound(_0x293343,null))[_0x9b7a('0x2a')](function(_0x3760c5){if(_0x3760c5){return _0x3760c5[_0x9b7a('0x87')](_0x4d01cb[_0x9b7a('0x36')][_0x9b7a('0x6a')])[_0x9b7a('0x2a')](function(){if(_[_0x9b7a('0x8b')](_0x4d01cb[_0x9b7a('0x36')][_0x9b7a('0x6a')])){for(var _0x5209c1=0x0;_0x5209c1<_0x4d01cb[_0x9b7a('0x36')]['ids'][_0x9b7a('0x3c')];_0x5209c1+=0x1){socket['emit'](_0x9b7a('0x89'),{'UserId':Number(_0x4d01cb[_0x9b7a('0x36')]['ids'][_0x5209c1]),'MailQueueId':Number(_0x4d01cb[_0x9b7a('0x4d')]['id'])});}}else{socket[_0x9b7a('0x88')](_0x9b7a('0x89'),{'UserId':Number(_0x4d01cb['query']['ids']),'MailQueueId':Number(_0x4d01cb[_0x9b7a('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x293343,null))[_0x9b7a('0x4b')](handleError(_0x293343,null));};exports[_0x9b7a('0x8c')]=function(_0x2e7554,_0x346c3c,_0x28ff9a){var _0x5c6df0={};var _0x19296e={};var _0x22d3e0;var _0x1184f8;return db[_0x9b7a('0x32')][_0x9b7a('0x5d')]({'where':{'id':_0x2e7554[_0x9b7a('0x4d')]['id']}})[_0x9b7a('0x2a')](handleEntityNotFound(_0x346c3c,null))[_0x9b7a('0x2a')](function(_0x5a7c14){if(_0x5a7c14){_0x22d3e0=_0x5a7c14;_0x19296e[_0x9b7a('0x39')]=_[_0x9b7a('0x4e')](db[_0x9b7a('0x60')][_0x9b7a('0x33')]);_0x19296e['query']=_[_0x9b7a('0x4e')](_0x2e7554['query']);_0x19296e['filters']=_[_0x9b7a('0x38')](_0x19296e['model'],_0x19296e[_0x9b7a('0x36')]);_0x5c6df0[_0x9b7a('0x3a')]=_[_0x9b7a('0x38')](_0x19296e['model'],qs[_0x9b7a('0x3b')](_0x2e7554[_0x9b7a('0x36')][_0x9b7a('0x3b')]));_0x5c6df0[_0x9b7a('0x3a')]=_0x5c6df0[_0x9b7a('0x3a')]['length']?_0x5c6df0[_0x9b7a('0x3a')]:_0x19296e['model'];_0x5c6df0[_0x9b7a('0x3f')]=qs[_0x9b7a('0x40')](_0x2e7554[_0x9b7a('0x36')][_0x9b7a('0x40')]);_0x5c6df0[_0x9b7a('0x41')]=qs[_0x9b7a('0x37')](_[_0x9b7a('0x42')](_0x2e7554[_0x9b7a('0x36')],_0x19296e[_0x9b7a('0x37')]));if(_0x2e7554[_0x9b7a('0x36')]['filter']){_0x5c6df0[_0x9b7a('0x41')]=_[_0x9b7a('0x44')](_0x5c6df0[_0x9b7a('0x41')],{'$or':_[_0x9b7a('0x31')](_0x5c6df0[_0x9b7a('0x3a')],function(_0x22da36){var _0x1185eb={};_0x1185eb[_0x22da36]={'$like':'%'+_0x2e7554[_0x9b7a('0x36')][_0x9b7a('0x43')]+'%'};return _0x1185eb;})});}_0x5c6df0=_[_0x9b7a('0x44')]({},_0x5c6df0,_0x2e7554['options']);return _0x22d3e0[_0x9b7a('0x8c')](_0x5c6df0);}})[_0x9b7a('0x2a')](function(_0x2f22e2){if(_0x2f22e2){_0x1184f8=_0x2f22e2['length'];if(!_0x2e7554['query'][_0x9b7a('0x3d')]('nolimit')){_0x5c6df0[_0x9b7a('0x24')]=qs[_0x9b7a('0x24')](_0x2e7554[_0x9b7a('0x36')][_0x9b7a('0x24')]);_0x5c6df0['offset']=qs[_0x9b7a('0x23')](_0x2e7554[_0x9b7a('0x36')]['offset']);}return _0x22d3e0[_0x9b7a('0x8c')](_0x5c6df0);}})[_0x9b7a('0x2a')](function(_0x2136ba){if(_0x2136ba){return _0x2136ba?{'count':_0x1184f8,'rows':_0x2136ba}:null;}})['then'](respondWithResult(_0x346c3c,null))[_0x9b7a('0x4b')](handleError(_0x346c3c,null));};
\ No newline at end of file
index aada5eb..4c00fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43d3=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x39cd38,_0x493083){var _0x4af410=function(_0x52c917){while(--_0x52c917){_0x39cd38['push'](_0x39cd38['shift']());}};_0x4af410(++_0x493083);}(_0x43d3,0x181));var _0x343d=function(_0x7192fa,_0x486a1a){_0x7192fa=_0x7192fa-0x0;var _0x552ce3=_0x43d3[_0x7192fa];return _0x552ce3;};'use strict';var EventEmitter=require(_0x343d('0x0'));var MailQueue=require(_0x343d('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x343d('0x2')](0x0);var events={'afterCreate':_0x343d('0x3'),'afterUpdate':_0x343d('0x4'),'afterDestroy':_0x343d('0x5')};function emitEvent(_0x468beb){return function(_0x24bcff,_0xc17b5c,_0x52dd49){MailQueueEvents[_0x343d('0x6')](_0x468beb+':'+_0x24bcff['id'],_0x24bcff);MailQueueEvents['emit'](_0x468beb,_0x24bcff);_0x52dd49(null);};}for(var e in events){if(events[_0x343d('0x7')](e)){var event=events[e];MailQueue[_0x343d('0x8')](e,emitEvent(event));}}module[_0x343d('0x9')]=MailQueueEvents;
\ No newline at end of file
+var _0x2525=['MailQueue','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2525,0xd0));var _0x5252=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x2525[_0x3c4737];return _0x2bb926;};'use strict';var EventEmitter=require(_0x5252('0x0'));var MailQueue=require(_0x5252('0x1'))['db'][_0x5252('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5252('0x3'),'afterUpdate':_0x5252('0x4'),'afterDestroy':_0x5252('0x5')};function emitEvent(_0x3ca440){return function(_0x4f67e8,_0x55a2eb,_0x35ebfd){MailQueueEvents[_0x5252('0x6')](_0x3ca440+':'+_0x4f67e8['id'],_0x4f67e8);MailQueueEvents[_0x5252('0x6')](_0x3ca440,_0x4f67e8);_0x35ebfd(null);};}for(var e in events){if(events[_0x5252('0x7')](e)){var event=events[e];MailQueue[_0x5252('0x8')](e,emitEvent(event));}}module[_0x5252('0x9')]=MailQueueEvents;
\ No newline at end of file
index 9549e3d..8f3391c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58ab=['bluebird','request-promise','rimraf','../../config/environment','exports','define','mail_queues','lodash','util','../../config/logger','moment'];(function(_0x32c400,_0x283523){var _0x30180d=function(_0xe49c98){while(--_0xe49c98){_0x32c400['push'](_0x32c400['shift']());}};_0x30180d(++_0x283523);}(_0x58ab,0x104));var _0xb58a=function(_0x5e7f3c,_0x5ea646){_0x5e7f3c=_0x5e7f3c-0x0;var _0x42dba2=_0x58ab[_0x5e7f3c];return _0x42dba2;};'use strict';var _=require(_0xb58a('0x0'));var util=require(_0xb58a('0x1'));var logger=require(_0xb58a('0x2'))('api');var moment=require(_0xb58a('0x3'));var BPromise=require(_0xb58a('0x4'));var rp=require(_0xb58a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb58a('0x6'));var config=require(_0xb58a('0x7'));var attributes=require('./mailQueue.attributes');module[_0xb58a('0x8')]=function(_0x32f57b,_0x46ae95){return _0x32f57b[_0xb58a('0x9')]('MailQueue',attributes,{'tableName':_0xb58a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb55e=['../../config/logger','api','bluebird','path','rimraf','./mailQueue.attributes','define','mail_queues','util'];(function(_0x4f7405,_0x2ecb6c){var _0x36b429=function(_0x335716){while(--_0x335716){_0x4f7405['push'](_0x4f7405['shift']());}};_0x36b429(++_0x2ecb6c);}(_0xb55e,0x1e5));var _0xeb55=function(_0x4b628f,_0x543683){_0x4b628f=_0x4b628f-0x0;var _0x366060=_0xb55e[_0x4b628f];return _0x366060;};'use strict';var _=require('lodash');var util=require(_0xeb55('0x0'));var logger=require(_0xeb55('0x1'))(_0xeb55('0x2'));var moment=require('moment');var BPromise=require(_0xeb55('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb55('0x4'));var rimraf=require(_0xeb55('0x5'));var config=require('../../config/environment');var attributes=require(_0xeb55('0x6'));module['exports']=function(_0x2a1ac4,_0x4db42c){return _0x2a1ac4[_0xeb55('0x7')]('MailQueue',attributes,{'tableName':_0xeb55('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4745058..990677b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7914=['request','then','info','request\x20sent','debug','stringify','error','code','MailQueue,\x20%s,\x20%s','message','result','catch','MailQueue','options','raw','where','attributes','limit','include','map','model','GetMailQueue','ShowMailQueue','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./mailQueue.socket','register'];(function(_0x86b219,_0x43038f){var _0x1f320c=function(_0x8cd63f){while(--_0x8cd63f){_0x86b219['push'](_0x86b219['shift']());}};_0x1f320c(++_0x43038f);}(_0x7914,0x107));var _0x4791=function(_0x819ecd,_0x25299d){_0x819ecd=_0x819ecd-0x0;var _0xe44226=_0x7914[_0x819ecd];return _0xe44226;};'use strict';var _=require(_0x4791('0x0'));var util=require(_0x4791('0x1'));var moment=require('moment');var BPromise=require(_0x4791('0x2'));var rs=require(_0x4791('0x3'));var fs=require('fs');var Redis=require(_0x4791('0x4'));var db=require(_0x4791('0x5'))['db'];var utils=require(_0x4791('0x6'));var logger=require(_0x4791('0x7'))(_0x4791('0x8'));var config=require(_0x4791('0x9'));var jayson=require(_0x4791('0xa'));var client=jayson[_0x4791('0xb')]['http']({'port':0x232a});config[_0x4791('0xc')]=_['defaults'](config[_0x4791('0xc')],{'host':_0x4791('0xd'),'port':0x18eb});var socket=require(_0x4791('0xe'))(new Redis(config[_0x4791('0xc')]));require(_0x4791('0xf'))[_0x4791('0x10')](socket);function respondWithRpcPromise(_0x438679,_0x3790aa,_0x57bb07){return new BPromise(function(_0x20e264,_0x3aa426){return client[_0x4791('0x11')](_0x438679,_0x57bb07)[_0x4791('0x12')](function(_0x876bdd){logger[_0x4791('0x13')]('MailQueue,\x20%s,\x20%s',_0x3790aa,_0x4791('0x14'));logger[_0x4791('0x15')]('MailQueue,\x20%s,\x20%s,\x20%s',_0x3790aa,_0x4791('0x14'),JSON[_0x4791('0x16')](_0x876bdd));if(_0x876bdd[_0x4791('0x17')]){if(_0x876bdd[_0x4791('0x17')][_0x4791('0x18')]===0x1f4){logger[_0x4791('0x17')](_0x4791('0x19'),_0x3790aa,_0x876bdd['error'][_0x4791('0x1a')]);return _0x3aa426(_0x876bdd[_0x4791('0x17')]['message']);}logger[_0x4791('0x17')](_0x4791('0x19'),_0x3790aa,_0x876bdd[_0x4791('0x17')][_0x4791('0x1a')]);return _0x20e264(_0x876bdd[_0x4791('0x17')]['message']);}else{logger['info'](_0x4791('0x19'),_0x3790aa,_0x4791('0x14'));_0x20e264(_0x876bdd[_0x4791('0x1b')][_0x4791('0x1a')]);}})[_0x4791('0x1c')](function(_0x59260a){logger[_0x4791('0x17')]('MailQueue,\x20%s,\x20%s',_0x3790aa,_0x59260a);_0x3aa426(_0x59260a);});});}exports['GetMailQueue']=function(_0x32a7eb){var _0x27a87b=this;return new Promise(function(_0x25286b,_0xcb902f){return db[_0x4791('0x1d')]['findAll']({'raw':_0x32a7eb[_0x4791('0x1e')]?_0x32a7eb['options'][_0x4791('0x1f')]===undefined?!![]:![]:!![],'where':_0x32a7eb[_0x4791('0x1e')]?_0x32a7eb['options'][_0x4791('0x20')]||null:null,'attributes':_0x32a7eb[_0x4791('0x1e')]?_0x32a7eb[_0x4791('0x1e')][_0x4791('0x21')]||null:null,'limit':_0x32a7eb['options']?_0x32a7eb[_0x4791('0x1e')][_0x4791('0x22')]||null:null,'include':_0x32a7eb[_0x4791('0x1e')]?_0x32a7eb['options'][_0x4791('0x23')]?_[_0x4791('0x24')](_0x32a7eb['options'][_0x4791('0x23')],function(_0x2e4234){return{'model':db[_0x2e4234[_0x4791('0x25')]],'as':_0x2e4234['as'],'attributes':_0x2e4234[_0x4791('0x21')],'include':_0x2e4234[_0x4791('0x23')]?_[_0x4791('0x24')](_0x2e4234[_0x4791('0x23')],function(_0x3dbfaa){return{'model':db[_0x3dbfaa[_0x4791('0x25')]],'as':_0x3dbfaa['as'],'attributes':_0x3dbfaa[_0x4791('0x21')],'include':_0x3dbfaa[_0x4791('0x23')]?_[_0x4791('0x24')](_0x3dbfaa[_0x4791('0x23')],function(_0x55117f){return{'model':db[_0x55117f[_0x4791('0x25')]],'as':_0x55117f['as'],'attributes':_0x55117f[_0x4791('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4791('0x12')](function(_0x1dab4b){logger[_0x4791('0x13')](_0x4791('0x26'),_0x32a7eb);logger['debug'](_0x4791('0x26'),_0x32a7eb,JSON[_0x4791('0x16')](_0x1dab4b));_0x25286b(_0x1dab4b);})[_0x4791('0x1c')](function(_0x4e2f09){logger['error'](_0x4791('0x26'),_0x4e2f09[_0x4791('0x1a')],_0x32a7eb);_0xcb902f(_0x27a87b[_0x4791('0x17')](0x1f4,_0x4e2f09[_0x4791('0x1a')]));});});};exports[_0x4791('0x27')]=function(_0x827074){var _0x1b4a2d=this;return new Promise(function(_0x2c73f6,_0x2767a1){return db[_0x4791('0x1d')]['find']({'raw':_0x827074[_0x4791('0x1e')]?_0x827074[_0x4791('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x827074[_0x4791('0x1e')]?_0x827074['options'][_0x4791('0x20')]||null:null,'attributes':_0x827074[_0x4791('0x1e')]?_0x827074['options'][_0x4791('0x21')]||null:null,'include':_0x827074[_0x4791('0x1e')]?_0x827074[_0x4791('0x1e')][_0x4791('0x23')]?_[_0x4791('0x24')](_0x827074[_0x4791('0x1e')][_0x4791('0x23')],function(_0x3afd90){return{'model':db[_0x3afd90[_0x4791('0x25')]],'as':_0x3afd90['as'],'attributes':_0x3afd90['attributes'],'include':_0x3afd90['include']?_['map'](_0x3afd90[_0x4791('0x23')],function(_0x42026a){return{'model':db[_0x42026a['model']],'as':_0x42026a['as'],'attributes':_0x42026a[_0x4791('0x21')],'include':_0x42026a['include']?_[_0x4791('0x24')](_0x42026a[_0x4791('0x23')],function(_0x634000){return{'model':db[_0x634000[_0x4791('0x25')]],'as':_0x634000['as'],'attributes':_0x634000[_0x4791('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4791('0x12')](function(_0x4d7b55){logger['info'](_0x4791('0x27'),_0x827074);logger['debug']('ShowMailQueue',_0x827074,JSON[_0x4791('0x16')](_0x4d7b55));_0x2c73f6(_0x4d7b55);})[_0x4791('0x1c')](function(_0x2b8958){logger[_0x4791('0x17')](_0x4791('0x27'),_0x2b8958[_0x4791('0x1a')],_0x827074);_0x2767a1(_0x1b4a2d['error'](0x1f4,_0x2b8958[_0x4791('0x1a')]));});});};
\ No newline at end of file
+var _0x93cc=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','MailQueue','findAll','options','limit','map','include','attributes','model','ShowMailQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x720f58,_0x51ad3d){var _0x4a7755=function(_0x21db74){while(--_0x21db74){_0x720f58['push'](_0x720f58['shift']());}};_0x4a7755(++_0x51ad3d);}(_0x93cc,0xc9));var _0xc93c=function(_0x5405f2,_0x5e801d){_0x5405f2=_0x5405f2-0x0;var _0x30c762=_0x93cc[_0x5405f2];return _0x30c762;};'use strict';var _=require(_0xc93c('0x0'));var util=require(_0xc93c('0x1'));var moment=require(_0xc93c('0x2'));var BPromise=require(_0xc93c('0x3'));var rs=require(_0xc93c('0x4'));var fs=require('fs');var Redis=require(_0xc93c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc93c('0x6'));var logger=require(_0xc93c('0x7'))('rpc');var config=require(_0xc93c('0x8'));var jayson=require(_0xc93c('0x9'));var client=jayson[_0xc93c('0xa')][_0xc93c('0xb')]({'port':0x232a});config[_0xc93c('0xc')]=_[_0xc93c('0xd')](config['redis'],{'host':_0xc93c('0xe'),'port':0x18eb});var socket=require(_0xc93c('0xf'))(new Redis(config[_0xc93c('0xc')]));require('./mailQueue.socket')[_0xc93c('0x10')](socket);function respondWithRpcPromise(_0x54363f,_0x2a3927,_0x1c8801){return new BPromise(function(_0x2daf34,_0x451e64){return client[_0xc93c('0x11')](_0x54363f,_0x1c8801)[_0xc93c('0x12')](function(_0x5613a2){logger['info']('MailQueue,\x20%s,\x20%s',_0x2a3927,_0xc93c('0x13'));logger[_0xc93c('0x14')](_0xc93c('0x15'),_0x2a3927,'request\x20sent',JSON[_0xc93c('0x16')](_0x5613a2));if(_0x5613a2[_0xc93c('0x17')]){if(_0x5613a2[_0xc93c('0x17')][_0xc93c('0x18')]===0x1f4){logger[_0xc93c('0x17')](_0xc93c('0x19'),_0x2a3927,_0x5613a2[_0xc93c('0x17')][_0xc93c('0x1a')]);return _0x451e64(_0x5613a2['error']['message']);}logger[_0xc93c('0x17')](_0xc93c('0x19'),_0x2a3927,_0x5613a2[_0xc93c('0x17')][_0xc93c('0x1a')]);return _0x2daf34(_0x5613a2[_0xc93c('0x17')][_0xc93c('0x1a')]);}else{logger[_0xc93c('0x1b')](_0xc93c('0x19'),_0x2a3927,_0xc93c('0x13'));_0x2daf34(_0x5613a2[_0xc93c('0x1c')][_0xc93c('0x1a')]);}})[_0xc93c('0x1d')](function(_0x583cf0){logger[_0xc93c('0x17')]('MailQueue,\x20%s,\x20%s',_0x2a3927,_0x583cf0);_0x451e64(_0x583cf0);});});}exports[_0xc93c('0x1e')]=function(_0x9f8b65){var _0x524fce=this;return new Promise(function(_0x1996d6,_0x13313d){return db[_0xc93c('0x1f')][_0xc93c('0x20')]({'raw':_0x9f8b65[_0xc93c('0x21')]?_0x9f8b65['options']['raw']===undefined?!![]:![]:!![],'where':_0x9f8b65[_0xc93c('0x21')]?_0x9f8b65[_0xc93c('0x21')]['where']||null:null,'attributes':_0x9f8b65[_0xc93c('0x21')]?_0x9f8b65[_0xc93c('0x21')]['attributes']||null:null,'limit':_0x9f8b65[_0xc93c('0x21')]?_0x9f8b65[_0xc93c('0x21')][_0xc93c('0x22')]||null:null,'include':_0x9f8b65[_0xc93c('0x21')]?_0x9f8b65[_0xc93c('0x21')]['include']?_[_0xc93c('0x23')](_0x9f8b65['options'][_0xc93c('0x24')],function(_0x2f7214){return{'model':db[_0x2f7214['model']],'as':_0x2f7214['as'],'attributes':_0x2f7214[_0xc93c('0x25')],'include':_0x2f7214[_0xc93c('0x24')]?_[_0xc93c('0x23')](_0x2f7214[_0xc93c('0x24')],function(_0x583bb7){return{'model':db[_0x583bb7[_0xc93c('0x26')]],'as':_0x583bb7['as'],'attributes':_0x583bb7[_0xc93c('0x25')],'include':_0x583bb7[_0xc93c('0x24')]?_[_0xc93c('0x23')](_0x583bb7[_0xc93c('0x24')],function(_0x17f37b){return{'model':db[_0x17f37b[_0xc93c('0x26')]],'as':_0x17f37b['as'],'attributes':_0x17f37b[_0xc93c('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x992b91){logger['info'](_0xc93c('0x1e'),_0x9f8b65);logger[_0xc93c('0x14')]('GetMailQueue',_0x9f8b65,JSON[_0xc93c('0x16')](_0x992b91));_0x1996d6(_0x992b91);})['catch'](function(_0xa3f8cb){logger[_0xc93c('0x17')]('GetMailQueue',_0xa3f8cb[_0xc93c('0x1a')],_0x9f8b65);_0x13313d(_0x524fce[_0xc93c('0x17')](0x1f4,_0xa3f8cb[_0xc93c('0x1a')]));});});};exports[_0xc93c('0x27')]=function(_0x2c1033){var _0x40e8d0=this;return new Promise(function(_0x36096f,_0x548af1){return db[_0xc93c('0x1f')][_0xc93c('0x28')]({'raw':_0x2c1033[_0xc93c('0x21')]?_0x2c1033[_0xc93c('0x21')][_0xc93c('0x29')]===undefined?!![]:![]:!![],'where':_0x2c1033['options']?_0x2c1033['options']['where']||null:null,'attributes':_0x2c1033[_0xc93c('0x21')]?_0x2c1033[_0xc93c('0x21')][_0xc93c('0x25')]||null:null,'include':_0x2c1033[_0xc93c('0x21')]?_0x2c1033[_0xc93c('0x21')]['include']?_[_0xc93c('0x23')](_0x2c1033[_0xc93c('0x21')][_0xc93c('0x24')],function(_0x4a389d){return{'model':db[_0x4a389d[_0xc93c('0x26')]],'as':_0x4a389d['as'],'attributes':_0x4a389d[_0xc93c('0x25')],'include':_0x4a389d['include']?_[_0xc93c('0x23')](_0x4a389d[_0xc93c('0x24')],function(_0x12d66d){return{'model':db[_0x12d66d[_0xc93c('0x26')]],'as':_0x12d66d['as'],'attributes':_0x12d66d[_0xc93c('0x25')],'include':_0x12d66d[_0xc93c('0x24')]?_['map'](_0x12d66d[_0xc93c('0x24')],function(_0x5b53be){return{'model':db[_0x5b53be['model']],'as':_0x5b53be['as'],'attributes':_0x5b53be['attributes']};}):[]};}):[]};}):[]:[]})[_0xc93c('0x12')](function(_0x426ebe){logger[_0xc93c('0x1b')](_0xc93c('0x27'),_0x2c1033);logger['debug'](_0xc93c('0x27'),_0x2c1033,JSON['stringify'](_0x426ebe));_0x36096f(_0x426ebe);})[_0xc93c('0x1d')](function(_0x424bb6){logger['error'](_0xc93c('0x27'),_0x424bb6[_0xc93c('0x1a')],_0x2c1033);_0x548af1(_0x40e8d0[_0xc93c('0x17')](0x1f4,_0x424bb6[_0xc93c('0x1a')]));});});};
\ No newline at end of file
index f4c3aff..7a33c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc48=['register','length','mailQueue:','save','remove','update','emit','removeListener'];(function(_0x479143,_0x4e798d){var _0x3a47f5=function(_0x27c154){while(--_0x27c154){_0x479143['push'](_0x479143['shift']());}};_0x3a47f5(++_0x4e798d);}(_0xbc48,0x16b));var _0x8bc4=function(_0x4410f9,_0x175692){_0x4410f9=_0x4410f9-0x0;var _0x2b2000=_0xbc48[_0x4410f9];return _0x2b2000;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x8bc4('0x0'),_0x8bc4('0x1'),_0x8bc4('0x2')];function createListener(_0x5b0d08,_0x46bbd8){return function(_0x51f087){_0x46bbd8[_0x8bc4('0x3')](_0x5b0d08,_0x51f087);};}function removeListener(_0xdd2942,_0x3271df){return function(){MailQueueEvents[_0x8bc4('0x4')](_0xdd2942,_0x3271df);};}exports[_0x8bc4('0x5')]=function(_0x20e04c){for(var _0x35ffbf=0x0,_0x2fe686=events[_0x8bc4('0x6')];_0x35ffbf<_0x2fe686;_0x35ffbf++){var _0x2f2372=events[_0x35ffbf];var _0x10c6c2=createListener(_0x8bc4('0x7')+_0x2f2372,_0x20e04c);MailQueueEvents['on'](_0x2f2372,_0x10c6c2);}};
\ No newline at end of file
+var _0xa5ea=['removeListener','length','mailQueue:','remove','update','emit'];(function(_0x2b690f,_0x1544c4){var _0x42df6a=function(_0x1c1dae){while(--_0x1c1dae){_0x2b690f['push'](_0x2b690f['shift']());}};_0x42df6a(++_0x1544c4);}(_0xa5ea,0x1e9));var _0xaa5e=function(_0x2bda08,_0x5e519c){_0x2bda08=_0x2bda08-0x0;var _0x5f24ca=_0xa5ea[_0x2bda08];return _0x5f24ca;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=['save',_0xaa5e('0x0'),_0xaa5e('0x1')];function createListener(_0x662a2f,_0x4ccda6){return function(_0x359b30){_0x4ccda6[_0xaa5e('0x2')](_0x662a2f,_0x359b30);};}function removeListener(_0x140db1,_0x17bb4d){return function(){MailQueueEvents[_0xaa5e('0x3')](_0x140db1,_0x17bb4d);};}exports['register']=function(_0x57edd3){for(var _0x133617=0x0,_0x465809=events[_0xaa5e('0x4')];_0x133617<_0x465809;_0x133617++){var _0xeb267f=events[_0x133617];var _0x1cf2ee=createListener(_0xaa5e('0x5')+_0xeb267f,_0x57edd3);MailQueueEvents['on'](_0xeb267f,_0x1cf2ee);}};
\ No newline at end of file
index 39aedae..9ca8330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e9b=['show','create','put','update','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x177fb6,_0x58d84b){var _0xee056e=function(_0x152b35){while(--_0x152b35){_0x177fb6['push'](_0x177fb6['shift']());}};_0xee056e(++_0x58d84b);}(_0x1e9b,0x1e5));var _0xb1e9=function(_0x194f06,_0x2133f5){_0x194f06=_0x194f06-0x0;var _0x3d6635=_0x1e9b[_0x194f06];return _0x3d6635;};'use strict';var multer=require(_0xb1e9('0x0'));var util=require('util');var path=require(_0xb1e9('0x1'));var timeout=require('connect-timeout');var express=require(_0xb1e9('0x2'));var router=express[_0xb1e9('0x3')]();var fs_extra=require(_0xb1e9('0x4'));var auth=require(_0xb1e9('0x5'));var interaction=require(_0xb1e9('0x6'));var config=require(_0xb1e9('0x7'));var controller=require(_0xb1e9('0x8'));router[_0xb1e9('0x9')]('/',auth[_0xb1e9('0xa')](),controller[_0xb1e9('0xb')]);router[_0xb1e9('0x9')](_0xb1e9('0xc'),auth['isAuthenticated'](),controller[_0xb1e9('0xd')]);router['get'](_0xb1e9('0xe'),auth[_0xb1e9('0xa')](),controller[_0xb1e9('0xf')]);router['post']('/',auth[_0xb1e9('0xa')](),controller[_0xb1e9('0x10')]);router[_0xb1e9('0x11')](_0xb1e9('0xe'),auth[_0xb1e9('0xa')](),controller[_0xb1e9('0x12')]);router['delete'](_0xb1e9('0xe'),auth[_0xb1e9('0xa')](),controller[_0xb1e9('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x9af0=['describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x5e9ded,_0x537dec){var _0x2e9824=function(_0x245a8e){while(--_0x245a8e){_0x5e9ded['push'](_0x5e9ded['shift']());}};_0x2e9824(++_0x537dec);}(_0x9af0,0x1c3));var _0x09af=function(_0x48e38d,_0x5bf8e2){_0x48e38d=_0x48e38d-0x0;var _0x242b70=_0x9af0[_0x48e38d];return _0x242b70;};'use strict';var multer=require(_0x09af('0x0'));var util=require(_0x09af('0x1'));var path=require(_0x09af('0x2'));var timeout=require(_0x09af('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x09af('0x4'));var auth=require(_0x09af('0x5'));var interaction=require(_0x09af('0x6'));var config=require(_0x09af('0x7'));var controller=require('./mailQueueReport.controller');router[_0x09af('0x8')]('/',auth[_0x09af('0x9')](),controller['index']);router[_0x09af('0x8')](_0x09af('0xa'),auth[_0x09af('0x9')](),controller[_0x09af('0xb')]);router[_0x09af('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x09af('0xc')]);router[_0x09af('0xd')]('/',auth['isAuthenticated'](),controller[_0x09af('0xe')]);router[_0x09af('0xf')](_0x09af('0x10'),auth[_0x09af('0x9')](),controller[_0x09af('0x11')]);router[_0x09af('0x12')](_0x09af('0x10'),auth[_0x09af('0x9')](),controller[_0x09af('0x13')]);module[_0x09af('0x14')]=router;
\ No newline at end of file
index d783074..7c6dd9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e52=['STRING','DATE','sequelize','exports'];(function(_0x1b1f5e,_0x3e7a79){var _0x211ef6=function(_0x369940){while(--_0x369940){_0x1b1f5e['push'](_0x1b1f5e['shift']());}};_0x211ef6(++_0x3e7a79);}(_0x8e52,0x1c6));var _0x28e5=function(_0x1bc762,_0x523eb3){_0x1bc762=_0x1bc762-0x0;var _0x40f70c=_0x8e52[_0x1bc762];return _0x40f70c;};'use strict';var moment=require('moment');var Sequelize=require(_0x28e5('0x0'));module[_0x28e5('0x1')]={'uniqueid':{'type':Sequelize[_0x28e5('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x28e5('0x2')]},'joinAt':{'type':Sequelize[_0x28e5('0x3')]},'leaveAt':{'type':Sequelize[_0x28e5('0x3')]},'acceptAt':{'type':Sequelize[_0x28e5('0x3')]},'exitAt':{'type':Sequelize[_0x28e5('0x3')]},'reason':{'type':Sequelize[_0x28e5('0x2')]}};
\ No newline at end of file
+var _0x58b9=['sequelize','exports','STRING','DATE','moment'];(function(_0x2d4154,_0x1f2102){var _0x581050=function(_0x3a117b){while(--_0x3a117b){_0x2d4154['push'](_0x2d4154['shift']());}};_0x581050(++_0x1f2102);}(_0x58b9,0x1b2));var _0x958b=function(_0x5c9ac8,_0x272210){_0x5c9ac8=_0x5c9ac8-0x0;var _0x2fabcd=_0x58b9[_0x5c9ac8];return _0x2fabcd;};'use strict';var moment=require(_0x958b('0x0'));var Sequelize=require(_0x958b('0x1'));module[_0x958b('0x2')]={'uniqueid':{'type':Sequelize[_0x958b('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x958b('0x3')]},'joinAt':{'type':Sequelize[_0x958b('0x4')]},'leaveAt':{'type':Sequelize[_0x958b('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x958b('0x3')]}};
\ No newline at end of file
index 87b7065..082800d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['options','includeAll','include','findAll','then','show','params','rawAttributes','catch','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','Content-Range','apply','reject','update','destroy','error','name','index','map','MailQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x17273a,_0x228cf2){var _0x386ae3=function(_0x42d7ba){while(--_0x42d7ba){_0x17273a['push'](_0x17273a['shift']());}};_0x386ae3(++_0x228cf2);}(_0x5b12,0xa3));var _0x25b1=function(_0xa26a4b,_0x44c77e){_0xa26a4b=_0xa26a4b-0x0;var _0x27ed4a=_0x5b12[_0xa26a4b];return _0x27ed4a;};'use strict';var emlformat=require(_0x25b1('0x0'));var rimraf=require(_0x25b1('0x1'));var zipdir=require(_0x25b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25b1('0x3'));var moment=require('moment');var BPromise=require(_0x25b1('0x4'));var Mustache=require(_0x25b1('0x5'));var util=require('util');var path=require(_0x25b1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x25b1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25b1('0x8'));var crypto=require(_0x25b1('0x9'));var jsforce=require(_0x25b1('0xa'));var deskjs=require(_0x25b1('0xb'));var toCsv=require(_0x25b1('0xc'));var querystring=require(_0x25b1('0xd'));var Papa=require(_0x25b1('0xe'));var Redis=require(_0x25b1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x25b1('0x10'));var as=require(_0x25b1('0x11'));var hardwareService=require(_0x25b1('0x12'));var logger=require(_0x25b1('0x13'))(_0x25b1('0x14'));var utils=require(_0x25b1('0x15'));var config=require(_0x25b1('0x16'));var licenseUtil=require(_0x25b1('0x17'));var db=require(_0x25b1('0x18'))['db'];function respondWithStatusCode(_0x459070,_0xbdd348){_0xbdd348=_0xbdd348||0xcc;return function(_0x1c5421){if(_0x1c5421){return _0x459070[_0x25b1('0x19')](_0xbdd348);}return _0x459070[_0x25b1('0x1a')](_0xbdd348)[_0x25b1('0x1b')]();};}function respondWithResult(_0x76b5c4,_0x4ee40c){_0x4ee40c=_0x4ee40c||0xc8;return function(_0x2c337a){if(_0x2c337a){return _0x76b5c4[_0x25b1('0x1a')](_0x4ee40c)['json'](_0x2c337a);}};}function respondWithFilteredResult(_0xb5b9cf,_0x4bb1bb){return function(_0xe32e02){if(_0xe32e02){var _0x4a5a58=typeof _0x4bb1bb['offset']===_0x25b1('0x1c')&&typeof _0x4bb1bb['limit']===_0x25b1('0x1c');var _0x2ca567=_0xe32e02[_0x25b1('0x1d')];var _0x27ccc9=_0x4a5a58?0x0:_0x4bb1bb[_0x25b1('0x1e')];var _0x2a7d14=_0x4a5a58?_0xe32e02[_0x25b1('0x1d')]:_0x4bb1bb[_0x25b1('0x1e')]+_0x4bb1bb['limit'];var _0x4ecff1;if(_0x2a7d14>=_0x2ca567){_0x2a7d14=_0x2ca567;_0x4ecff1=0xc8;}else{_0x4ecff1=0xce;}_0xb5b9cf[_0x25b1('0x1a')](_0x4ecff1);return _0xb5b9cf['set'](_0x25b1('0x1f'),_0x27ccc9+'-'+_0x2a7d14+'/'+_0x2ca567)['json'](_0xe32e02);}return null;};}function patchUpdates(_0x3bfd7d){return function(_0x59aa37){try{jsonpatch[_0x25b1('0x20')](_0x59aa37,_0x3bfd7d,!![]);}catch(_0x529310){return BPromise[_0x25b1('0x21')](_0x529310);}return _0x59aa37['save']();};}function saveUpdates(_0x4e3f48,_0x565cfd){return function(_0x3bca9f){if(_0x3bca9f){return _0x3bca9f[_0x25b1('0x22')](_0x4e3f48)['then'](function(_0x19bab8){return _0x19bab8;});}return null;};}function removeEntity(_0x26b555,_0x1e5915){return function(_0x246acd){if(_0x246acd){return _0x246acd[_0x25b1('0x23')]()['then'](function(){_0x26b555[_0x25b1('0x1a')](0xcc)[_0x25b1('0x1b')]();});}};}function handleEntityNotFound(_0xd22469,_0x282187){return function(_0x1f37ed){if(!_0x1f37ed){_0xd22469[_0x25b1('0x19')](0x194);}return _0x1f37ed;};}function handleError(_0x5d9ed7,_0x3c05c6){_0x3c05c6=_0x3c05c6||0x1f4;return function(_0x27dd68){logger[_0x25b1('0x24')](_0x27dd68['stack']);if(_0x27dd68[_0x25b1('0x25')]){delete _0x27dd68[_0x25b1('0x25')];}_0x5d9ed7[_0x25b1('0x1a')](_0x3c05c6)['send'](_0x27dd68);};}exports[_0x25b1('0x26')]=function(_0x54ce2d,_0x19ecd1){var _0x3febb8={},_0x3a4475={},_0x293413={'count':0x0,'rows':[]};var _0x362118=_[_0x25b1('0x27')](db[_0x25b1('0x28')]['rawAttributes'],function(_0x30d455){return{'name':_0x30d455[_0x25b1('0x29')],'type':_0x30d455[_0x25b1('0x2a')][_0x25b1('0x2b')]};});_0x3a4475[_0x25b1('0x2c')]=_['map'](_0x362118,_0x25b1('0x25'));_0x3a4475[_0x25b1('0x2d')]=_[_0x25b1('0x2e')](_0x54ce2d[_0x25b1('0x2d')]);_0x3a4475[_0x25b1('0x2f')]=_['intersection'](_0x3a4475['model'],_0x3a4475[_0x25b1('0x2d')]);_0x3febb8['attributes']=_[_0x25b1('0x30')](_0x3a4475[_0x25b1('0x2c')],qs[_0x25b1('0x31')](_0x54ce2d['query']['fields']));_0x3febb8[_0x25b1('0x32')]=_0x3febb8[_0x25b1('0x32')][_0x25b1('0x33')]?_0x3febb8['attributes']:_0x3a4475[_0x25b1('0x2c')];if(!_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x34')](_0x25b1('0x35'))){_0x3febb8['limit']=qs[_0x25b1('0x36')](_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x36')]);_0x3febb8['offset']=qs['offset'](_0x54ce2d[_0x25b1('0x2d')]['offset']);}_0x3febb8[_0x25b1('0x37')]=qs[_0x25b1('0x38')](_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x38')]);_0x3febb8[_0x25b1('0x39')]=qs[_0x25b1('0x2f')](_[_0x25b1('0x3a')](_0x54ce2d[_0x25b1('0x2d')],_0x3a4475[_0x25b1('0x2f')]),_0x362118);if(_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3b')]){_0x3febb8[_0x25b1('0x39')]=_[_0x25b1('0x3c')](_0x3febb8[_0x25b1('0x39')],{'$or':_[_0x25b1('0x27')](_0x362118,function(_0x4837d5){if(_0x4837d5[_0x25b1('0x2a')]!==_0x25b1('0x3d')){var _0x53423d={};_0x53423d[_0x4837d5[_0x25b1('0x25')]]={'$like':'%'+_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3b')]+'%'};return _0x53423d;}})});}_0x3febb8=_[_0x25b1('0x3c')]({},_0x3febb8,_0x54ce2d[_0x25b1('0x3e')]);var _0x5bdefd={'where':_0x3febb8[_0x25b1('0x39')]};return db['MailQueueReport'][_0x25b1('0x1d')](_0x5bdefd)['then'](function(_0x2e8747){_0x293413[_0x25b1('0x1d')]=_0x2e8747;if(_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3f')]){_0x3febb8[_0x25b1('0x40')]=[{'all':!![]}];}return db[_0x25b1('0x28')][_0x25b1('0x41')](_0x3febb8);})[_0x25b1('0x42')](function(_0x3f9754){_0x293413['rows']=_0x3f9754;return _0x293413;})[_0x25b1('0x42')](respondWithFilteredResult(_0x19ecd1,_0x3febb8))['catch'](handleError(_0x19ecd1,null));};exports[_0x25b1('0x43')]=function(_0x2f56ac,_0x4d4e32){var _0x52d3f8={'raw':!![],'where':{'id':_0x2f56ac[_0x25b1('0x44')]['id']}},_0x39b4c7={};_0x39b4c7[_0x25b1('0x2c')]=_[_0x25b1('0x2e')](db[_0x25b1('0x28')][_0x25b1('0x45')]);_0x39b4c7[_0x25b1('0x2d')]=_[_0x25b1('0x2e')](_0x2f56ac[_0x25b1('0x2d')]);_0x39b4c7[_0x25b1('0x2f')]=_[_0x25b1('0x30')](_0x39b4c7[_0x25b1('0x2c')],_0x39b4c7[_0x25b1('0x2d')]);_0x52d3f8[_0x25b1('0x32')]=_[_0x25b1('0x30')](_0x39b4c7[_0x25b1('0x2c')],qs[_0x25b1('0x31')](_0x2f56ac['query']['fields']));_0x52d3f8['attributes']=_0x52d3f8[_0x25b1('0x32')]['length']?_0x52d3f8[_0x25b1('0x32')]:_0x39b4c7['model'];if(_0x2f56ac[_0x25b1('0x2d')][_0x25b1('0x3f')]){_0x52d3f8[_0x25b1('0x40')]=[{'all':!![]}];}_0x52d3f8=_[_0x25b1('0x3c')]({},_0x52d3f8,_0x2f56ac[_0x25b1('0x3e')]);return db[_0x25b1('0x28')]['find'](_0x52d3f8)[_0x25b1('0x42')](handleEntityNotFound(_0x4d4e32,null))[_0x25b1('0x42')](respondWithResult(_0x4d4e32,null))[_0x25b1('0x46')](handleError(_0x4d4e32,null));};exports[_0x25b1('0x47')]=function(_0x58ae67,_0x489f73){return db[_0x25b1('0x28')][_0x25b1('0x47')](_0x58ae67['body'],{})[_0x25b1('0x42')](respondWithResult(_0x489f73,0xc9))['catch'](handleError(_0x489f73,null));};exports[_0x25b1('0x22')]=function(_0x4b6181,_0x543f9b){if(_0x4b6181[_0x25b1('0x48')]['id']){delete _0x4b6181[_0x25b1('0x48')]['id'];}return db[_0x25b1('0x28')][_0x25b1('0x49')]({'where':{'id':_0x4b6181['params']['id']}})[_0x25b1('0x42')](handleEntityNotFound(_0x543f9b,null))['then'](saveUpdates(_0x4b6181[_0x25b1('0x48')],null))['then'](respondWithResult(_0x543f9b,null))[_0x25b1('0x46')](handleError(_0x543f9b,null));};exports[_0x25b1('0x23')]=function(_0x1fcc79,_0x4fb92e){return db[_0x25b1('0x28')][_0x25b1('0x49')]({'where':{'id':_0x1fcc79[_0x25b1('0x44')]['id']}})[_0x25b1('0x42')](handleEntityNotFound(_0x4fb92e,null))[_0x25b1('0x42')](removeEntity(_0x4fb92e,null))[_0x25b1('0x46')](handleError(_0x4fb92e,null));};exports['describe']=function(_0x134c64,_0x133f50){return db[_0x25b1('0x28')][_0x25b1('0x4a')]()[_0x25b1('0x42')](respondWithResult(_0x133f50,null))[_0x25b1('0x46')](handleError(_0x133f50,null));};
\ No newline at end of file
+var _0xc1c6=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','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','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','MailQueueReport','rawAttributes','type','key','model','query'];(function(_0x5302f9,_0x431617){var _0x108a62=function(_0x128e21){while(--_0x128e21){_0x5302f9['push'](_0x5302f9['shift']());}};_0x108a62(++_0x431617);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x5f09c4,_0x126d3b){_0x5f09c4=_0x5f09c4-0x0;var _0x3e1b43=_0xc1c6[_0x5f09c4];return _0x3e1b43;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require('moment');var BPromise=require(_0x6c1c('0x4'));var Mustache=require(_0x6c1c('0x5'));var util=require(_0x6c1c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6c1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c1c('0x8'));var _=require('lodash');var squel=require(_0x6c1c('0x9'));var crypto=require(_0x6c1c('0xa'));var jsforce=require(_0x6c1c('0xb'));var deskjs=require(_0x6c1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xd'));var Papa=require(_0x6c1c('0xe'));var Redis=require('ioredis');var authService=require(_0x6c1c('0xf'));var qs=require(_0x6c1c('0x10'));var as=require(_0x6c1c('0x11'));var hardwareService=require(_0x6c1c('0x12'));var logger=require('../../config/logger')(_0x6c1c('0x13'));var utils=require(_0x6c1c('0x14'));var config=require(_0x6c1c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x16'))['db'];function respondWithStatusCode(_0x12a9e6,_0x2067bd){_0x2067bd=_0x2067bd||0xcc;return function(_0x49304f){if(_0x49304f){return _0x12a9e6[_0x6c1c('0x17')](_0x2067bd);}return _0x12a9e6['status'](_0x2067bd)[_0x6c1c('0x18')]();};}function respondWithResult(_0x15a1fc,_0x2d279e){_0x2d279e=_0x2d279e||0xc8;return function(_0x154107){if(_0x154107){return _0x15a1fc[_0x6c1c('0x19')](_0x2d279e)[_0x6c1c('0x1a')](_0x154107);}};}function respondWithFilteredResult(_0x297c33,_0x41aa74){return function(_0x448f35){if(_0x448f35){var _0x5f3758=typeof _0x41aa74[_0x6c1c('0x1b')]===_0x6c1c('0x1c')&&typeof _0x41aa74['limit']===_0x6c1c('0x1c');var _0x237cac=_0x448f35['count'];var _0x137770=_0x5f3758?0x0:_0x41aa74['offset'];var _0x338dc2=_0x5f3758?_0x448f35[_0x6c1c('0x1d')]:_0x41aa74['offset']+_0x41aa74[_0x6c1c('0x1e')];var _0x59ab38;if(_0x338dc2>=_0x237cac){_0x338dc2=_0x237cac;_0x59ab38=0xc8;}else{_0x59ab38=0xce;}_0x297c33[_0x6c1c('0x19')](_0x59ab38);return _0x297c33[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x137770+'-'+_0x338dc2+'/'+_0x237cac)[_0x6c1c('0x1a')](_0x448f35);}return null;};}function patchUpdates(_0x1acf7f){return function(_0x1efb19){try{jsonpatch[_0x6c1c('0x21')](_0x1efb19,_0x1acf7f,!![]);}catch(_0x2ed830){return BPromise[_0x6c1c('0x22')](_0x2ed830);}return _0x1efb19[_0x6c1c('0x23')]();};}function saveUpdates(_0x3d2bf3,_0x450b1f){return function(_0x2382c0){if(_0x2382c0){return _0x2382c0[_0x6c1c('0x24')](_0x3d2bf3)[_0x6c1c('0x25')](function(_0x19c269){return _0x19c269;});}return null;};}function removeEntity(_0x2319d3,_0x12c638){return function(_0x3a3f13){if(_0x3a3f13){return _0x3a3f13[_0x6c1c('0x26')]()[_0x6c1c('0x25')](function(){_0x2319d3[_0x6c1c('0x19')](0xcc)[_0x6c1c('0x18')]();});}};}function handleEntityNotFound(_0x7ff10d,_0x18452d){return function(_0x80bc05){if(!_0x80bc05){_0x7ff10d[_0x6c1c('0x17')](0x194);}return _0x80bc05;};}function handleError(_0x1b9d7d,_0x2feaf4){_0x2feaf4=_0x2feaf4||0x1f4;return function(_0x5f4568){logger[_0x6c1c('0x27')](_0x5f4568['stack']);if(_0x5f4568[_0x6c1c('0x28')]){delete _0x5f4568['name'];}_0x1b9d7d[_0x6c1c('0x19')](_0x2feaf4)['send'](_0x5f4568);};}exports[_0x6c1c('0x29')]=function(_0xf557ba,_0x504348){var _0x3b1a4f={},_0x24da4c={},_0x4e13e3={'count':0x0,'rows':[]};var _0x3b319a=_[_0x6c1c('0x2a')](db[_0x6c1c('0x2b')][_0x6c1c('0x2c')],function(_0x4fc279){return{'name':_0x4fc279['fieldName'],'type':_0x4fc279[_0x6c1c('0x2d')][_0x6c1c('0x2e')]};});_0x24da4c[_0x6c1c('0x2f')]=_[_0x6c1c('0x2a')](_0x3b319a,_0x6c1c('0x28'));_0x24da4c[_0x6c1c('0x30')]=_['keys'](_0xf557ba[_0x6c1c('0x30')]);_0x24da4c[_0x6c1c('0x31')]=_['intersection'](_0x24da4c[_0x6c1c('0x2f')],_0x24da4c[_0x6c1c('0x30')]);_0x3b1a4f[_0x6c1c('0x32')]=_[_0x6c1c('0x33')](_0x24da4c['model'],qs[_0x6c1c('0x34')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x3b1a4f['attributes']=_0x3b1a4f[_0x6c1c('0x32')]['length']?_0x3b1a4f[_0x6c1c('0x32')]:_0x24da4c['model'];if(!_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x35')](_0x6c1c('0x36'))){_0x3b1a4f['limit']=qs['limit'](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x1e')]);_0x3b1a4f[_0x6c1c('0x1b')]=qs['offset'](_0xf557ba[_0x6c1c('0x30')]['offset']);}_0x3b1a4f['order']=qs[_0x6c1c('0x37')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x37')]);_0x3b1a4f[_0x6c1c('0x38')]=qs['filters'](_[_0x6c1c('0x39')](_0xf557ba[_0x6c1c('0x30')],_0x24da4c[_0x6c1c('0x31')]),_0x3b319a);if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]){_0x3b1a4f[_0x6c1c('0x38')]=_[_0x6c1c('0x3b')](_0x3b1a4f[_0x6c1c('0x38')],{'$or':_[_0x6c1c('0x2a')](_0x3b319a,function(_0x232508){if(_0x232508['type']!==_0x6c1c('0x3c')){var _0x464549={};_0x464549[_0x232508[_0x6c1c('0x28')]]={'$like':'%'+_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]+'%'};return _0x464549;}})});}_0x3b1a4f=_['merge']({},_0x3b1a4f,_0xf557ba['options']);var _0x549db1={'where':_0x3b1a4f[_0x6c1c('0x38')]};return db['MailQueueReport']['count'](_0x549db1)[_0x6c1c('0x25')](function(_0x37244e){_0x4e13e3['count']=_0x37244e;if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x3b1a4f[_0x6c1c('0x3e')]=[{'all':!![]}];}return db['MailQueueReport'][_0x6c1c('0x3f')](_0x3b1a4f);})[_0x6c1c('0x25')](function(_0x502e75){_0x4e13e3[_0x6c1c('0x40')]=_0x502e75;return _0x4e13e3;})['then'](respondWithFilteredResult(_0x504348,_0x3b1a4f))[_0x6c1c('0x41')](handleError(_0x504348,null));};exports[_0x6c1c('0x42')]=function(_0x16a389,_0x174f2c){var _0x10764a={'raw':!![],'where':{'id':_0x16a389[_0x6c1c('0x43')]['id']}},_0x595ba2={};_0x595ba2[_0x6c1c('0x2f')]=_[_0x6c1c('0x44')](db['MailQueueReport'][_0x6c1c('0x2c')]);_0x595ba2[_0x6c1c('0x30')]=_[_0x6c1c('0x44')](_0x16a389[_0x6c1c('0x30')]);_0x595ba2[_0x6c1c('0x31')]=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],_0x595ba2['query']);_0x10764a['attributes']=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],qs[_0x6c1c('0x34')](_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x10764a[_0x6c1c('0x32')]=_0x10764a[_0x6c1c('0x32')][_0x6c1c('0x45')]?_0x10764a[_0x6c1c('0x32')]:_0x595ba2['model'];if(_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x10764a['include']=[{'all':!![]}];}_0x10764a=_[_0x6c1c('0x3b')]({},_0x10764a,_0x16a389['options']);return db[_0x6c1c('0x2b')][_0x6c1c('0x46')](_0x10764a)[_0x6c1c('0x25')](handleEntityNotFound(_0x174f2c,null))[_0x6c1c('0x25')](respondWithResult(_0x174f2c,null))[_0x6c1c('0x41')](handleError(_0x174f2c,null));};exports['create']=function(_0x1fe6e8,_0x58d075){return db[_0x6c1c('0x2b')][_0x6c1c('0x47')](_0x1fe6e8[_0x6c1c('0x48')],{})[_0x6c1c('0x25')](respondWithResult(_0x58d075,0xc9))[_0x6c1c('0x41')](handleError(_0x58d075,null));};exports[_0x6c1c('0x24')]=function(_0x52c14d,_0xa9889a){if(_0x52c14d[_0x6c1c('0x48')]['id']){delete _0x52c14d['body']['id'];}return db[_0x6c1c('0x2b')][_0x6c1c('0x46')]({'where':{'id':_0x52c14d[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0xa9889a,null))['then'](saveUpdates(_0x52c14d[_0x6c1c('0x48')],null))[_0x6c1c('0x25')](respondWithResult(_0xa9889a,null))[_0x6c1c('0x41')](handleError(_0xa9889a,null));};exports['destroy']=function(_0x5b8d69,_0x56b367){return db['MailQueueReport']['find']({'where':{'id':_0x5b8d69[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0x56b367,null))['then'](removeEntity(_0x56b367,null))[_0x6c1c('0x41')](handleError(_0x56b367,null));};exports[_0x6c1c('0x49')]=function(_0x2450ab,_0x5489ac){return db['MailQueueReport'][_0x6c1c('0x49')]()[_0x6c1c('0x25')](respondWithResult(_0x5489ac,null))['catch'](handleError(_0x5489ac,null));};
\ No newline at end of file
index 01ea8da..c5215ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46c5=['./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x46c5,0x157));var _0x546c=function(_0x320bab,_0x414db3){_0x320bab=_0x320bab-0x0;var _0x5be81c=_0x46c5[_0x320bab];return _0x5be81c;};'use strict';var _=require(_0x546c('0x0'));var util=require('util');var logger=require(_0x546c('0x1'))(_0x546c('0x2'));var moment=require(_0x546c('0x3'));var BPromise=require(_0x546c('0x4'));var rp=require(_0x546c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x546c('0x6'));var config=require(_0x546c('0x7'));var attributes=require(_0x546c('0x8'));module[_0x546c('0x9')]=function(_0x211d8e,_0x28eb9e){return _0x211d8e['define'](_0x546c('0xa'),attributes,{'tableName':_0x546c('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x546c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d1e=['exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes'];(function(_0x44a64f,_0x38475c){var _0x52024b=function(_0x2cd055){while(--_0x2cd055){_0x44a64f['push'](_0x44a64f['shift']());}};_0x52024b(++_0x38475c);}(_0x4d1e,0xf5));var _0xe4d1=function(_0x2d486b,_0x5f213c){_0x2d486b=_0x2d486b-0x0;var _0x4291d1=_0x4d1e[_0x2d486b];return _0x4291d1;};'use strict';var _=require(_0xe4d1('0x0'));var util=require(_0xe4d1('0x1'));var logger=require(_0xe4d1('0x2'))(_0xe4d1('0x3'));var moment=require(_0xe4d1('0x4'));var BPromise=require(_0xe4d1('0x5'));var rp=require(_0xe4d1('0x6'));var fs=require('fs');var path=require(_0xe4d1('0x7'));var rimraf=require(_0xe4d1('0x8'));var config=require(_0xe4d1('0x9'));var attributes=require(_0xe4d1('0xa'));module[_0xe4d1('0xb')]=function(_0x376de2,_0x2b5471){return _0x376de2[_0xe4d1('0xc')](_0xe4d1('0xd'),attributes,{'tableName':_0xe4d1('0xe'),'paranoid':![],'indexes':[{'name':_0xe4d1('0xf'),'fields':[_0xe4d1('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 10e6daa..b5595bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x32b894,_0x14c458){var _0x1f4d76=function(_0x4737af){while(--_0x4737af){_0x32b894['push'](_0x32b894['shift']());}};_0x1f4d76(++_0x14c458);}(_0xdb28,0x106));var _0x8db2=function(_0x54aafd,_0x94dc0c){_0x54aafd=_0x54aafd-0x0;var _0x5330df=_0xdb28[_0x54aafd];return _0x5330df;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
+var _0x5f2f=['error','code','message','request\x20sent','result','catch','CreateMailQueueReport','MailQueueReport','create','body','options','raw','UpdateMailQueueReport','update','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailQueueReport,\x20%s,\x20%s','debug','stringify'];(function(_0x4e9e3b,_0x47cb62){var _0x31b353=function(_0x557fba){while(--_0x557fba){_0x4e9e3b['push'](_0x4e9e3b['shift']());}};_0x31b353(++_0x47cb62);}(_0x5f2f,0x73));var _0xf5f2=function(_0x503ac6,_0x5ef9f5){_0x503ac6=_0x503ac6-0x0;var _0x3aa041=_0x5f2f[_0x503ac6];return _0x3aa041;};'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')]('MailQueueReport,\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')](_0x20fccd[_0xf5f2('0x1a')],{'raw':_0x20fccd['options']?_0x20fccd[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x47acfc){logger[_0xf5f2('0xd')](_0xf5f2('0x17'),_0x20fccd);logger['debug'](_0xf5f2('0x17'),_0x20fccd,JSON[_0xf5f2('0x10')](_0x47acfc));_0x4ff59b(_0x47acfc);})[_0xf5f2('0x16')](function(_0x39c024){logger[_0xf5f2('0x11')]('CreateMailQueueReport',_0x39c024[_0xf5f2('0x13')],_0x20fccd);_0x3ee69(_0x28e097[_0xf5f2('0x11')](0x1f4,_0x39c024[_0xf5f2('0x13')]));});});};exports[_0xf5f2('0x1d')]=function(_0x287ad5){var _0x5bdf4a=this;return new Promise(function(_0x529f07,_0x5f1124){return db[_0xf5f2('0x18')][_0xf5f2('0x1e')](_0x287ad5[_0xf5f2('0x1a')],{'raw':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')]['where']||null:null,'attributes':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x1f')]||null:null,'limit':_0x287ad5[_0xf5f2('0x1b')]?_0x287ad5[_0xf5f2('0x1b')][_0xf5f2('0x20')]||null:null})['then'](function(_0x53cb96){logger[_0xf5f2('0xd')](_0xf5f2('0x1d'),_0x287ad5);logger[_0xf5f2('0xf')]('UpdateMailQueueReport',_0x287ad5,JSON['stringify'](_0x53cb96));_0x529f07(_0x53cb96);})[_0xf5f2('0x16')](function(_0x50b8a2){logger[_0xf5f2('0x11')](_0xf5f2('0x1d'),_0x50b8a2[_0xf5f2('0x13')],_0x287ad5);_0x5f1124(_0x5bdf4a['error'](0x1f4,_0x50b8a2['message']));});});};
\ No newline at end of file
index 0bce088..30fb624 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(_0x1e2919,_0x4b24be){var _0x3e7279=function(_0x52bada){while(--_0x52bada){_0x1e2919['push'](_0x1e2919['shift']());}};_0x3e7279(++_0x4b24be);}(_0xe706,0xa3));var _0x6e70=function(_0x3d0247,_0x2e5a09){_0x3d0247=_0x3d0247-0x0;var _0x5d2f3a=_0xe706[_0x3d0247];return _0x5d2f3a;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x30229c,_0x49fdc8){var _0x3c6edc=function(_0x54b050){while(--_0x54b050){_0x30229c['push'](_0x30229c['shift']());}};_0x3c6edc(++_0x49fdc8);}(_0xe706,0xa3));var _0x6e70=function(_0x425561,_0x3a4598){_0x425561=_0x425561-0x0;var _0x303b28=_0xe706[_0x425561];return _0x303b28;};'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 9dbe1b0..92bf3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c4=['BOOLEAN','sequelize','exports','STRING','INTEGER','INBOX'];(function(_0x1c92fd,_0x2febff){var _0x68d434=function(_0x1dda0d){while(--_0x1dda0d){_0x1c92fd['push'](_0x1c92fd['shift']());}};_0x68d434(++_0x2febff);}(_0x95c4,0x15d));var _0x495c=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0x95c4[_0x1a36a5];return _0x746243;};'use strict';var Sequelize=require(_0x495c('0x0'));module[_0x495c('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x495c('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x495c('0x2')]},'password':{'type':Sequelize[_0x495c('0x2')]},'port':{'type':Sequelize[_0x495c('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x495c('0x2')],'defaultValue':_0x495c('0x4')},'connTimeout':{'type':Sequelize[_0x495c('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x495c('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x495c('0x2')]},'modernAuthentication':{'type':Sequelize[_0x495c('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0xf05f=['STRING','INTEGER','BOOLEAN','INBOX','exports'];(function(_0x28fcdc,_0x17e930){var _0x80bd4c=function(_0x2c490d){while(--_0x2c490d){_0x28fcdc['push'](_0x28fcdc['shift']());}};_0x80bd4c(++_0x17e930);}(_0xf05f,0xae));var _0xff05=function(_0x2a974a,_0x3ebbd3){_0x2a974a=_0x2a974a-0x0;var _0x2ffff6=_0xf05f[_0x2a974a];return _0x2ffff6;};'use strict';var Sequelize=require('sequelize');module[_0xff05('0x0')]={'description':{'type':Sequelize[_0xff05('0x1')]},'host':{'type':Sequelize[_0xff05('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xff05('0x1')]},'password':{'type':Sequelize[_0xff05('0x1')]},'port':{'type':Sequelize[_0xff05('0x2')]},'tls':{'type':Sequelize[_0xff05('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xff05('0x1')],'defaultValue':_0xff05('0x4')},'connTimeout':{'type':Sequelize[_0xff05('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xff05('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xff05('0x1')]},'modernAuthentication':{'type':Sequelize[_0xff05('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 0319fad..00decfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d30=['exports','define','MailServerIn','mail_servers_in','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./mailServerIn.attributes'];(function(_0x240dae,_0x2f8c73){var _0x78f752=function(_0x3f3b95){while(--_0x3f3b95){_0x240dae['push'](_0x240dae['shift']());}};_0x78f752(++_0x2f8c73);}(_0x2d30,0x7c));var _0x02d3=function(_0xe4d6c6,_0x3bdbf2){_0xe4d6c6=_0xe4d6c6-0x0;var _0x3a8935=_0x2d30[_0xe4d6c6];return _0x3a8935;};'use strict';var _=require(_0x02d3('0x0'));var util=require(_0x02d3('0x1'));var logger=require(_0x02d3('0x2'))(_0x02d3('0x3'));var moment=require(_0x02d3('0x4'));var BPromise=require('bluebird');var rp=require(_0x02d3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x02d3('0x6'));var attributes=require(_0x02d3('0x7'));module[_0x02d3('0x8')]=function(_0x58f231,_0x5d88d2){return _0x58f231[_0x02d3('0x9')](_0x02d3('0xa'),attributes,{'tableName':_0x02d3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde28=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailServerIn','mail_servers_in','lodash'];(function(_0x17a68c,_0x2c01a4){var _0x258f21=function(_0x3f8b36){while(--_0x3f8b36){_0x17a68c['push'](_0x17a68c['shift']());}};_0x258f21(++_0x2c01a4);}(_0xde28,0xe9));var _0x8de2=function(_0x25336b,_0x55f6b6){_0x25336b=_0x25336b-0x0;var _0x4d2aea=_0xde28[_0x25336b];return _0x4d2aea;};'use strict';var _=require(_0x8de2('0x0'));var util=require(_0x8de2('0x1'));var logger=require('../../config/logger')(_0x8de2('0x2'));var moment=require(_0x8de2('0x3'));var BPromise=require(_0x8de2('0x4'));var rp=require(_0x8de2('0x5'));var fs=require('fs');var path=require(_0x8de2('0x6'));var rimraf=require(_0x8de2('0x7'));var config=require(_0x8de2('0x8'));var attributes=require('./mailServerIn.attributes');module[_0x8de2('0x9')]=function(_0x1f1cc3,_0x4b6f60){return _0x1f1cc3[_0x8de2('0xa')](_0x8de2('0xb'),attributes,{'tableName':_0x8de2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32880fa..7cf6c57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eb5=['findAll','options','attributes','limit','map','include','model','GetMailServerIn','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','MailServerIn,\x20%s,\x20%s','message','result','catch','MailServerIn'];(function(_0x56f95b,_0x14b581){var _0x4a5c83=function(_0x29b652){while(--_0x29b652){_0x56f95b['push'](_0x56f95b['shift']());}};_0x4a5c83(++_0x14b581);}(_0x9eb5,0x15d));var _0x59eb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9eb5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x59eb('0x0'));var util=require(_0x59eb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x59eb('0x2'));var fs=require('fs');var Redis=require(_0x59eb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x59eb('0x4'));var logger=require(_0x59eb('0x5'))(_0x59eb('0x6'));var config=require('../../config/environment');var jayson=require(_0x59eb('0x7'));var client=jayson[_0x59eb('0x8')][_0x59eb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ea153,_0x37d45c,_0x3853e8){return new BPromise(function(_0x1ed195,_0x4c29c0){return client[_0x59eb('0xa')](_0x1ea153,_0x3853e8)[_0x59eb('0xb')](function(_0x4e68d8){logger[_0x59eb('0xc')]('MailServerIn,\x20%s,\x20%s',_0x37d45c,_0x59eb('0xd'));logger[_0x59eb('0xe')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x37d45c,'request\x20sent',JSON[_0x59eb('0xf')](_0x4e68d8));if(_0x4e68d8[_0x59eb('0x10')]){if(_0x4e68d8[_0x59eb('0x10')][_0x59eb('0x11')]===0x1f4){logger['error'](_0x59eb('0x12'),_0x37d45c,_0x4e68d8[_0x59eb('0x10')][_0x59eb('0x13')]);return _0x4c29c0(_0x4e68d8[_0x59eb('0x10')][_0x59eb('0x13')]);}logger[_0x59eb('0x10')](_0x59eb('0x12'),_0x37d45c,_0x4e68d8[_0x59eb('0x10')][_0x59eb('0x13')]);return _0x1ed195(_0x4e68d8['error'][_0x59eb('0x13')]);}else{logger['info']('MailServerIn,\x20%s,\x20%s',_0x37d45c,'request\x20sent');_0x1ed195(_0x4e68d8[_0x59eb('0x14')]['message']);}})[_0x59eb('0x15')](function(_0x3752d9){logger[_0x59eb('0x10')](_0x59eb('0x12'),_0x37d45c,_0x3752d9);_0x4c29c0(_0x3752d9);});});}exports['GetMailServerIn']=function(_0x12bbc1){var _0x215787=this;return new Promise(function(_0x3b953b,_0x149b7b){return db[_0x59eb('0x16')][_0x59eb('0x17')]({'raw':_0x12bbc1[_0x59eb('0x18')]?_0x12bbc1[_0x59eb('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x12bbc1[_0x59eb('0x18')]?_0x12bbc1[_0x59eb('0x18')]['where']||null:null,'attributes':_0x12bbc1['options']?_0x12bbc1[_0x59eb('0x18')][_0x59eb('0x19')]||null:null,'limit':_0x12bbc1['options']?_0x12bbc1[_0x59eb('0x18')][_0x59eb('0x1a')]||null:null,'include':_0x12bbc1[_0x59eb('0x18')]?_0x12bbc1[_0x59eb('0x18')]['include']?_[_0x59eb('0x1b')](_0x12bbc1['options'][_0x59eb('0x1c')],function(_0x53d255){return{'model':db[_0x53d255[_0x59eb('0x1d')]],'as':_0x53d255['as'],'attributes':_0x53d255['attributes'],'include':_0x53d255['include']?_['map'](_0x53d255[_0x59eb('0x1c')],function(_0x2c0123){return{'model':db[_0x2c0123['model']],'as':_0x2c0123['as'],'attributes':_0x2c0123[_0x59eb('0x19')],'include':_0x2c0123[_0x59eb('0x1c')]?_[_0x59eb('0x1b')](_0x2c0123[_0x59eb('0x1c')],function(_0x347b77){return{'model':db[_0x347b77[_0x59eb('0x1d')]],'as':_0x347b77['as'],'attributes':_0x347b77['attributes']};}):[]};}):[]};}):[]:[]})[_0x59eb('0xb')](function(_0x218b51){logger[_0x59eb('0xc')](_0x59eb('0x1e'),_0x12bbc1);logger[_0x59eb('0xe')]('GetMailServerIn',_0x12bbc1,JSON[_0x59eb('0xf')](_0x218b51));_0x3b953b(_0x218b51);})[_0x59eb('0x15')](function(_0x170215){logger[_0x59eb('0x10')]('GetMailServerIn',_0x170215[_0x59eb('0x13')],_0x12bbc1);_0x149b7b(_0x215787[_0x59eb('0x10')](0x1f4,_0x170215[_0x59eb('0x13')]));});});};
\ No newline at end of file
+var _0x6de9=['../../config/environment','client','http','request','info','MailServerIn,\x20%s,\x20%s','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x276279,_0x3f12ce){var _0x125071=function(_0x245a60){while(--_0x245a60){_0x276279['push'](_0x276279['shift']());}};_0x125071(++_0x3f12ce);}(_0x6de9,0xe6));var _0x96de=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x6de9[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x96de('0x0'));var util=require(_0x96de('0x1'));var moment=require(_0x96de('0x2'));var BPromise=require(_0x96de('0x3'));var rs=require(_0x96de('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96de('0x5'))['db'];var utils=require(_0x96de('0x6'));var logger=require('../../config/logger')(_0x96de('0x7'));var config=require(_0x96de('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x96de('0x9')][_0x96de('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20ed57,_0x46afa4,_0x48e213){return new BPromise(function(_0x8624be,_0x14fad5){return client[_0x96de('0xb')](_0x20ed57,_0x48e213)['then'](function(_0x415b5f){logger[_0x96de('0xc')](_0x96de('0xd'),_0x46afa4,'request\x20sent');logger['debug'](_0x96de('0xe'),_0x46afa4,_0x96de('0xf'),JSON['stringify'](_0x415b5f));if(_0x415b5f[_0x96de('0x10')]){if(_0x415b5f[_0x96de('0x10')]['code']===0x1f4){logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')]['message']);return _0x14fad5(_0x415b5f[_0x96de('0x10')]['message']);}logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);return _0x8624be(_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);}else{logger['info'](_0x96de('0xd'),_0x46afa4,_0x96de('0xf'));_0x8624be(_0x415b5f[_0x96de('0x12')][_0x96de('0x11')]);}})[_0x96de('0x13')](function(_0x198663){logger[_0x96de('0x10')](_0x96de('0xd'),_0x46afa4,_0x198663);_0x14fad5(_0x198663);});});}exports[_0x96de('0x14')]=function(_0x9701bb){var _0x321bf4=this;return new Promise(function(_0x389a4d,_0xe0878b){return db[_0x96de('0x15')][_0x96de('0x16')]({'raw':_0x9701bb[_0x96de('0x17')]?_0x9701bb[_0x96de('0x17')][_0x96de('0x18')]===undefined?!![]:![]:!![],'where':_0x9701bb['options']?_0x9701bb[_0x96de('0x17')][_0x96de('0x19')]||null:null,'attributes':_0x9701bb[_0x96de('0x17')]?_0x9701bb['options'][_0x96de('0x1a')]||null:null,'limit':_0x9701bb['options']?_0x9701bb[_0x96de('0x17')][_0x96de('0x1b')]||null:null,'include':_0x9701bb[_0x96de('0x17')]?_0x9701bb[_0x96de('0x17')][_0x96de('0x1c')]?_[_0x96de('0x1d')](_0x9701bb[_0x96de('0x17')][_0x96de('0x1c')],function(_0x37b616){return{'model':db[_0x37b616['model']],'as':_0x37b616['as'],'attributes':_0x37b616[_0x96de('0x1a')],'include':_0x37b616['include']?_[_0x96de('0x1d')](_0x37b616[_0x96de('0x1c')],function(_0x2e0b75){return{'model':db[_0x2e0b75[_0x96de('0x1e')]],'as':_0x2e0b75['as'],'attributes':_0x2e0b75[_0x96de('0x1a')],'include':_0x2e0b75[_0x96de('0x1c')]?_[_0x96de('0x1d')](_0x2e0b75[_0x96de('0x1c')],function(_0x1f8f97){return{'model':db[_0x1f8f97[_0x96de('0x1e')]],'as':_0x1f8f97['as'],'attributes':_0x1f8f97[_0x96de('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x96de('0x1f')](function(_0xe590fc){logger[_0x96de('0xc')]('GetMailServerIn',_0x9701bb);logger[_0x96de('0x20')](_0x96de('0x14'),_0x9701bb,JSON[_0x96de('0x21')](_0xe590fc));_0x389a4d(_0xe590fc);})[_0x96de('0x13')](function(_0x9d324f){logger['error']('GetMailServerIn',_0x9d324f[_0x96de('0x11')],_0x9701bb);_0xe0878b(_0x321bf4[_0x96de('0x10')](0x1f4,_0x9d324f[_0x96de('0x11')]));});});};
\ No newline at end of file
index e27af1b..504a177 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(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+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(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x7a54,0x106));var _0x47a5=function(_0x5da3f5,_0x4a1e99){_0x5da3f5=_0x5da3f5-0x0;var _0x3897f5=_0x7a54[_0x5da3f5];return _0x3897f5;};'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 927d2e6..456e1bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0xa7c249,_0x599b5e){var _0x1a9b26=function(_0x2b8797){while(--_0x2b8797){_0xa7c249['push'](_0xa7c249['shift']());}};_0x1a9b26(++_0x599b5e);}(_0xea28,0x13a));var _0x8ea2=function(_0x9447eb,_0x3c9a0d){_0x9447eb=_0x9447eb-0x0;var _0x1e1286=_0xea28[_0x9447eb];return _0x1e1286;};'use strict';var Sequelize=require(_0x8ea2('0x0'));module[_0x8ea2('0x1')]={'description':{'type':Sequelize[_0x8ea2('0x2')]},'host':{'type':Sequelize[_0x8ea2('0x2')]},'user':{'type':Sequelize[_0x8ea2('0x2')]},'pass':{'type':Sequelize[_0x8ea2('0x2')]},'port':{'type':Sequelize[_0x8ea2('0x3')]},'secure':{'type':Sequelize[_0x8ea2('0x4')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x8ea2('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x8ea2('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2e54=['BOOLEAN','sequelize','STRING','INTEGER'];(function(_0x2baf85,_0x2594af){var _0x4063bb=function(_0x16d4e5){while(--_0x16d4e5){_0x2baf85['push'](_0x2baf85['shift']());}};_0x4063bb(++_0x2594af);}(_0x2e54,0x1dd));var _0x42e5=function(_0xb3cfe9,_0x540100){_0xb3cfe9=_0xb3cfe9-0x0;var _0x1dc043=_0x2e54[_0xb3cfe9];return _0x1dc043;};'use strict';var Sequelize=require(_0x42e5('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x42e5('0x1')]},'user':{'type':Sequelize[_0x42e5('0x1')]},'pass':{'type':Sequelize[_0x42e5('0x1')]},'port':{'type':Sequelize[_0x42e5('0x2')]},'secure':{'type':Sequelize[_0x42e5('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x42e5('0x1')]},'authentication':{'type':Sequelize[_0x42e5('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 00d678d..761715f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77de=['update','then','destroy','sendStatus','stack','name','send','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','count','findAll','rows','catch','show','params','includeAll','include','find','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','Content-Range','apply','save'];(function(_0x29af39,_0x343c56){var _0x3ab715=function(_0x24eaea){while(--_0x24eaea){_0x29af39['push'](_0x29af39['shift']());}};_0x3ab715(++_0x343c56);}(_0x77de,0xbf));var _0xe77d=function(_0x3c6b7d,_0x5f0d90){_0x3c6b7d=_0x3c6b7d-0x0;var _0x1d3ed2=_0x77de[_0x3c6b7d];return _0x1d3ed2;};'use strict';var emlformat=require(_0xe77d('0x0'));var rimraf=require(_0xe77d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe77d('0x2'));var rp=require(_0xe77d('0x3'));var moment=require(_0xe77d('0x4'));var BPromise=require(_0xe77d('0x5'));var Mustache=require(_0xe77d('0x6'));var util=require(_0xe77d('0x7'));var path=require(_0xe77d('0x8'));var sox=require(_0xe77d('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe77d('0xa'));var _=require('lodash');var squel=require(_0xe77d('0xb'));var crypto=require(_0xe77d('0xc'));var jsforce=require(_0xe77d('0xd'));var deskjs=require(_0xe77d('0xe'));var toCsv=require(_0xe77d('0xf'));var querystring=require(_0xe77d('0x10'));var Papa=require(_0xe77d('0x11'));var Redis=require(_0xe77d('0x12'));var authService=require(_0xe77d('0x13'));var qs=require(_0xe77d('0x14'));var as=require(_0xe77d('0x15'));var hardwareService=require(_0xe77d('0x16'));var logger=require(_0xe77d('0x17'))(_0xe77d('0x18'));var utils=require(_0xe77d('0x19'));var config=require(_0xe77d('0x1a'));var licenseUtil=require(_0xe77d('0x1b'));var db=require(_0xe77d('0x1c'))['db'];function respondWithStatusCode(_0x4feaae,_0x44c71a){_0x44c71a=_0x44c71a||0xcc;return function(_0x2fd6dc){if(_0x2fd6dc){return _0x4feaae['sendStatus'](_0x44c71a);}return _0x4feaae[_0xe77d('0x1d')](_0x44c71a)[_0xe77d('0x1e')]();};}function respondWithResult(_0x305756,_0x5306ff){_0x5306ff=_0x5306ff||0xc8;return function(_0x238deb){if(_0x238deb){return _0x305756[_0xe77d('0x1d')](_0x5306ff)[_0xe77d('0x1f')](_0x238deb);}};}function respondWithFilteredResult(_0x26ae92,_0x256b8d){return function(_0x1e2c6d){if(_0x1e2c6d){var _0x12d605=typeof _0x256b8d[_0xe77d('0x20')]==='undefined'&&typeof _0x256b8d[_0xe77d('0x21')]==='undefined';var _0x2981f0=_0x1e2c6d['count'];var _0x5205b7=_0x12d605?0x0:_0x256b8d[_0xe77d('0x20')];var _0x2917e7=_0x12d605?_0x1e2c6d['count']:_0x256b8d[_0xe77d('0x20')]+_0x256b8d[_0xe77d('0x21')];var _0x216fe4;if(_0x2917e7>=_0x2981f0){_0x2917e7=_0x2981f0;_0x216fe4=0xc8;}else{_0x216fe4=0xce;}_0x26ae92[_0xe77d('0x1d')](_0x216fe4);return _0x26ae92['set'](_0xe77d('0x22'),_0x5205b7+'-'+_0x2917e7+'/'+_0x2981f0)[_0xe77d('0x1f')](_0x1e2c6d);}return null;};}function patchUpdates(_0x298538){return function(_0x37d006){try{jsonpatch[_0xe77d('0x23')](_0x37d006,_0x298538,!![]);}catch(_0x67a17b){return BPromise['reject'](_0x67a17b);}return _0x37d006[_0xe77d('0x24')]();};}function saveUpdates(_0x2358c3,_0x1b061f){return function(_0x3cf2e1){if(_0x3cf2e1){return _0x3cf2e1[_0xe77d('0x25')](_0x2358c3)[_0xe77d('0x26')](function(_0x5ae2ae){return _0x5ae2ae;});}return null;};}function removeEntity(_0x527c6e,_0x205d14){return function(_0x48b728){if(_0x48b728){return _0x48b728[_0xe77d('0x27')]()['then'](function(){_0x527c6e['status'](0xcc)[_0xe77d('0x1e')]();});}};}function handleEntityNotFound(_0x23de52,_0x3c86a9){return function(_0x5f3001){if(!_0x5f3001){_0x23de52[_0xe77d('0x28')](0x194);}return _0x5f3001;};}function handleError(_0x94d09,_0xe77a68){_0xe77a68=_0xe77a68||0x1f4;return function(_0xdb6578){logger['error'](_0xdb6578[_0xe77d('0x29')]);if(_0xdb6578[_0xe77d('0x2a')]){delete _0xdb6578[_0xe77d('0x2a')];}_0x94d09[_0xe77d('0x1d')](_0xe77a68)[_0xe77d('0x2b')](_0xdb6578);};}exports['index']=function(_0x28e0e5,_0x5464be){var _0x53b020={},_0xdc0ef={},_0x33005e={'count':0x0,'rows':[]};var _0x42e67d=_[_0xe77d('0x2c')](db[_0xe77d('0x2d')][_0xe77d('0x2e')],function(_0x4e183a){return{'name':_0x4e183a[_0xe77d('0x2f')],'type':_0x4e183a[_0xe77d('0x30')][_0xe77d('0x31')]};});_0xdc0ef[_0xe77d('0x32')]=_[_0xe77d('0x2c')](_0x42e67d,_0xe77d('0x2a'));_0xdc0ef[_0xe77d('0x33')]=_[_0xe77d('0x34')](_0x28e0e5['query']);_0xdc0ef[_0xe77d('0x35')]=_[_0xe77d('0x36')](_0xdc0ef['model'],_0xdc0ef['query']);_0x53b020[_0xe77d('0x37')]=_[_0xe77d('0x36')](_0xdc0ef['model'],qs['fields'](_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x38')]));_0x53b020[_0xe77d('0x37')]=_0x53b020[_0xe77d('0x37')][_0xe77d('0x39')]?_0x53b020[_0xe77d('0x37')]:_0xdc0ef[_0xe77d('0x32')];if(!_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x3a')](_0xe77d('0x3b'))){_0x53b020[_0xe77d('0x21')]=qs['limit'](_0x28e0e5['query'][_0xe77d('0x21')]);_0x53b020[_0xe77d('0x20')]=qs[_0xe77d('0x20')](_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x20')]);}_0x53b020['order']=qs[_0xe77d('0x3c')](_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x3c')]);_0x53b020[_0xe77d('0x3d')]=qs[_0xe77d('0x35')](_[_0xe77d('0x3e')](_0x28e0e5[_0xe77d('0x33')],_0xdc0ef[_0xe77d('0x35')]),_0x42e67d);if(_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x3f')]){_0x53b020[_0xe77d('0x3d')]=_[_0xe77d('0x40')](_0x53b020[_0xe77d('0x3d')],{'$or':_[_0xe77d('0x2c')](_0x42e67d,function(_0xb90ca1){if(_0xb90ca1['type']!=='VIRTUAL'){var _0x50831a={};_0x50831a[_0xb90ca1['name']]={'$like':'%'+_0x28e0e5[_0xe77d('0x33')][_0xe77d('0x3f')]+'%'};return _0x50831a;}})});}_0x53b020=_[_0xe77d('0x40')]({},_0x53b020,_0x28e0e5[_0xe77d('0x41')]);var _0x554003={'where':_0x53b020[_0xe77d('0x3d')]};return db[_0xe77d('0x2d')]['count'](_0x554003)['then'](function(_0x809e84){_0x33005e[_0xe77d('0x42')]=_0x809e84;if(_0x28e0e5['query']['includeAll']){_0x53b020['include']=[{'all':!![]}];}return db[_0xe77d('0x2d')][_0xe77d('0x43')](_0x53b020);})[_0xe77d('0x26')](function(_0x699f0a){_0x33005e[_0xe77d('0x44')]=_0x699f0a;return _0x33005e;})['then'](respondWithFilteredResult(_0x5464be,_0x53b020))[_0xe77d('0x45')](handleError(_0x5464be,null));};exports[_0xe77d('0x46')]=function(_0x1ab196,_0x5747b1){var _0x51d68c={'raw':!![],'where':{'id':_0x1ab196[_0xe77d('0x47')]['id']}},_0x4f9890={};_0x4f9890[_0xe77d('0x32')]=_[_0xe77d('0x34')](db[_0xe77d('0x2d')][_0xe77d('0x2e')]);_0x4f9890['query']=_[_0xe77d('0x34')](_0x1ab196[_0xe77d('0x33')]);_0x4f9890[_0xe77d('0x35')]=_['intersection'](_0x4f9890[_0xe77d('0x32')],_0x4f9890[_0xe77d('0x33')]);_0x51d68c[_0xe77d('0x37')]=_['intersection'](_0x4f9890['model'],qs[_0xe77d('0x38')](_0x1ab196[_0xe77d('0x33')][_0xe77d('0x38')]));_0x51d68c[_0xe77d('0x37')]=_0x51d68c[_0xe77d('0x37')][_0xe77d('0x39')]?_0x51d68c[_0xe77d('0x37')]:_0x4f9890['model'];if(_0x1ab196['query'][_0xe77d('0x48')]){_0x51d68c[_0xe77d('0x49')]=[{'all':!![]}];}_0x51d68c=_[_0xe77d('0x40')]({},_0x51d68c,_0x1ab196['options']);return db[_0xe77d('0x2d')][_0xe77d('0x4a')](_0x51d68c)['then'](handleEntityNotFound(_0x5747b1,null))[_0xe77d('0x26')](respondWithResult(_0x5747b1,null))[_0xe77d('0x45')](handleError(_0x5747b1,null));};exports['create']=function(_0x4bdd10,_0x113375){return db[_0xe77d('0x2d')]['create'](_0x4bdd10[_0xe77d('0x4b')],{})[_0xe77d('0x26')](respondWithResult(_0x113375,0xc9))[_0xe77d('0x45')](handleError(_0x113375,null));};exports[_0xe77d('0x25')]=function(_0x41ca07,_0x54f34c){if(_0x41ca07[_0xe77d('0x4b')]['id']){delete _0x41ca07[_0xe77d('0x4b')]['id'];}return db[_0xe77d('0x2d')][_0xe77d('0x4a')]({'where':{'id':_0x41ca07[_0xe77d('0x47')]['id']}})[_0xe77d('0x26')](handleEntityNotFound(_0x54f34c,null))[_0xe77d('0x26')](saveUpdates(_0x41ca07[_0xe77d('0x4b')],null))['then'](respondWithResult(_0x54f34c,null))[_0xe77d('0x45')](handleError(_0x54f34c,null));};exports[_0xe77d('0x27')]=function(_0x57f797,_0x1b6b59){return db['MailServerOut']['find']({'where':{'id':_0x57f797[_0xe77d('0x47')]['id']}})[_0xe77d('0x26')](handleEntityNotFound(_0x1b6b59,null))[_0xe77d('0x26')](removeEntity(_0x1b6b59,null))[_0xe77d('0x45')](handleError(_0x1b6b59,null));};
\ No newline at end of file
+var _0x361b=['params','includeAll','include','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','show'];(function(_0x5890ed,_0x5eec7c){var _0x49ef9b=function(_0x3d68eb){while(--_0x3d68eb){_0x5890ed['push'](_0x5890ed['shift']());}};_0x49ef9b(++_0x5eec7c);}(_0x361b,0x147));var _0xb361=function(_0x15bb5e,_0x106b48){_0x15bb5e=_0x15bb5e-0x0;var _0x446554=_0x361b[_0x15bb5e];return _0x446554;};'use strict';var emlformat=require(_0xb361('0x0'));var rimraf=require(_0xb361('0x1'));var zipdir=require(_0xb361('0x2'));var jsonpatch=require(_0xb361('0x3'));var rp=require(_0xb361('0x4'));var moment=require(_0xb361('0x5'));var BPromise=require(_0xb361('0x6'));var Mustache=require(_0xb361('0x7'));var util=require(_0xb361('0x8'));var path=require(_0xb361('0x9'));var sox=require(_0xb361('0xa'));var csv=require(_0xb361('0xb'));var ejs=require(_0xb361('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb361('0xd'));var squel=require(_0xb361('0xe'));var crypto=require('crypto');var jsforce=require(_0xb361('0xf'));var deskjs=require(_0xb361('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb361('0x11'));var Papa=require(_0xb361('0x12'));var Redis=require('ioredis');var authService=require(_0xb361('0x13'));var qs=require(_0xb361('0x14'));var as=require(_0xb361('0x15'));var hardwareService=require(_0xb361('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xb361('0x17'));var config=require(_0xb361('0x18'));var licenseUtil=require(_0xb361('0x19'));var db=require(_0xb361('0x1a'))['db'];function respondWithStatusCode(_0x266d6d,_0x208442){_0x208442=_0x208442||0xcc;return function(_0x56e111){if(_0x56e111){return _0x266d6d[_0xb361('0x1b')](_0x208442);}return _0x266d6d['status'](_0x208442)[_0xb361('0x1c')]();};}function respondWithResult(_0x9b7c35,_0x2c1444){_0x2c1444=_0x2c1444||0xc8;return function(_0x53cf0e){if(_0x53cf0e){return _0x9b7c35[_0xb361('0x1d')](_0x2c1444)[_0xb361('0x1e')](_0x53cf0e);}};}function respondWithFilteredResult(_0x2722d0,_0x54efe2){return function(_0x4af597){if(_0x4af597){var _0x1a0fe1=typeof _0x54efe2[_0xb361('0x1f')]===_0xb361('0x20')&&typeof _0x54efe2[_0xb361('0x21')]==='undefined';var _0x117dda=_0x4af597[_0xb361('0x22')];var _0x1c57eb=_0x1a0fe1?0x0:_0x54efe2[_0xb361('0x1f')];var _0x39a02f=_0x1a0fe1?_0x4af597[_0xb361('0x22')]:_0x54efe2[_0xb361('0x1f')]+_0x54efe2[_0xb361('0x21')];var _0x834abf;if(_0x39a02f>=_0x117dda){_0x39a02f=_0x117dda;_0x834abf=0xc8;}else{_0x834abf=0xce;}_0x2722d0[_0xb361('0x1d')](_0x834abf);return _0x2722d0[_0xb361('0x23')](_0xb361('0x24'),_0x1c57eb+'-'+_0x39a02f+'/'+_0x117dda)[_0xb361('0x1e')](_0x4af597);}return null;};}function patchUpdates(_0x4c78d7){return function(_0x57d3d8){try{jsonpatch[_0xb361('0x25')](_0x57d3d8,_0x4c78d7,!![]);}catch(_0x5d108c){return BPromise[_0xb361('0x26')](_0x5d108c);}return _0x57d3d8[_0xb361('0x27')]();};}function saveUpdates(_0x252ce3,_0x29dcff){return function(_0x1e2562){if(_0x1e2562){return _0x1e2562[_0xb361('0x28')](_0x252ce3)[_0xb361('0x29')](function(_0x5a5aab){return _0x5a5aab;});}return null;};}function removeEntity(_0x40428c,_0x2e8ed1){return function(_0x558de8){if(_0x558de8){return _0x558de8[_0xb361('0x2a')]()[_0xb361('0x29')](function(){_0x40428c[_0xb361('0x1d')](0xcc)[_0xb361('0x1c')]();});}};}function handleEntityNotFound(_0x1617d7,_0x2469cf){return function(_0x12691d){if(!_0x12691d){_0x1617d7['sendStatus'](0x194);}return _0x12691d;};}function handleError(_0x561459,_0x338d00){_0x338d00=_0x338d00||0x1f4;return function(_0x4a2dd9){logger[_0xb361('0x2b')](_0x4a2dd9[_0xb361('0x2c')]);if(_0x4a2dd9[_0xb361('0x2d')]){delete _0x4a2dd9['name'];}_0x561459[_0xb361('0x1d')](_0x338d00)[_0xb361('0x2e')](_0x4a2dd9);};}exports[_0xb361('0x2f')]=function(_0x5eab1b,_0x52e9d1){var _0x5ea569={},_0x34dd0d={},_0x533885={'count':0x0,'rows':[]};var _0x4ce28c=_[_0xb361('0x30')](db[_0xb361('0x31')][_0xb361('0x32')],function(_0x163cd4){return{'name':_0x163cd4[_0xb361('0x33')],'type':_0x163cd4[_0xb361('0x34')][_0xb361('0x35')]};});_0x34dd0d['model']=_['map'](_0x4ce28c,_0xb361('0x2d'));_0x34dd0d[_0xb361('0x36')]=_[_0xb361('0x37')](_0x5eab1b[_0xb361('0x36')]);_0x34dd0d[_0xb361('0x38')]=_[_0xb361('0x39')](_0x34dd0d[_0xb361('0x3a')],_0x34dd0d[_0xb361('0x36')]);_0x5ea569[_0xb361('0x3b')]=_[_0xb361('0x39')](_0x34dd0d[_0xb361('0x3a')],qs[_0xb361('0x3c')](_0x5eab1b[_0xb361('0x36')][_0xb361('0x3c')]));_0x5ea569[_0xb361('0x3b')]=_0x5ea569[_0xb361('0x3b')][_0xb361('0x3d')]?_0x5ea569[_0xb361('0x3b')]:_0x34dd0d[_0xb361('0x3a')];if(!_0x5eab1b[_0xb361('0x36')]['hasOwnProperty'](_0xb361('0x3e'))){_0x5ea569[_0xb361('0x21')]=qs['limit'](_0x5eab1b[_0xb361('0x36')]['limit']);_0x5ea569['offset']=qs['offset'](_0x5eab1b[_0xb361('0x36')][_0xb361('0x1f')]);}_0x5ea569[_0xb361('0x3f')]=qs[_0xb361('0x40')](_0x5eab1b[_0xb361('0x36')][_0xb361('0x40')]);_0x5ea569[_0xb361('0x41')]=qs[_0xb361('0x38')](_[_0xb361('0x42')](_0x5eab1b[_0xb361('0x36')],_0x34dd0d[_0xb361('0x38')]),_0x4ce28c);if(_0x5eab1b[_0xb361('0x36')][_0xb361('0x43')]){_0x5ea569['where']=_['merge'](_0x5ea569[_0xb361('0x41')],{'$or':_[_0xb361('0x30')](_0x4ce28c,function(_0x5498e1){if(_0x5498e1['type']!==_0xb361('0x44')){var _0x11a55a={};_0x11a55a[_0x5498e1[_0xb361('0x2d')]]={'$like':'%'+_0x5eab1b[_0xb361('0x36')][_0xb361('0x43')]+'%'};return _0x11a55a;}})});}_0x5ea569=_[_0xb361('0x45')]({},_0x5ea569,_0x5eab1b[_0xb361('0x46')]);var _0x319f29={'where':_0x5ea569['where']};return db[_0xb361('0x31')][_0xb361('0x22')](_0x319f29)[_0xb361('0x29')](function(_0x1dfc4c){_0x533885[_0xb361('0x22')]=_0x1dfc4c;if(_0x5eab1b[_0xb361('0x36')]['includeAll']){_0x5ea569['include']=[{'all':!![]}];}return db[_0xb361('0x31')][_0xb361('0x47')](_0x5ea569);})['then'](function(_0x516cfb){_0x533885['rows']=_0x516cfb;return _0x533885;})['then'](respondWithFilteredResult(_0x52e9d1,_0x5ea569))['catch'](handleError(_0x52e9d1,null));};exports[_0xb361('0x48')]=function(_0x421ec6,_0x1cc564){var _0x35e25a={'raw':!![],'where':{'id':_0x421ec6[_0xb361('0x49')]['id']}},_0x2d28e1={};_0x2d28e1['model']=_[_0xb361('0x37')](db[_0xb361('0x31')][_0xb361('0x32')]);_0x2d28e1[_0xb361('0x36')]=_[_0xb361('0x37')](_0x421ec6[_0xb361('0x36')]);_0x2d28e1[_0xb361('0x38')]=_[_0xb361('0x39')](_0x2d28e1[_0xb361('0x3a')],_0x2d28e1[_0xb361('0x36')]);_0x35e25a[_0xb361('0x3b')]=_[_0xb361('0x39')](_0x2d28e1[_0xb361('0x3a')],qs[_0xb361('0x3c')](_0x421ec6[_0xb361('0x36')][_0xb361('0x3c')]));_0x35e25a[_0xb361('0x3b')]=_0x35e25a[_0xb361('0x3b')][_0xb361('0x3d')]?_0x35e25a[_0xb361('0x3b')]:_0x2d28e1[_0xb361('0x3a')];if(_0x421ec6[_0xb361('0x36')][_0xb361('0x4a')]){_0x35e25a[_0xb361('0x4b')]=[{'all':!![]}];}_0x35e25a=_['merge']({},_0x35e25a,_0x421ec6[_0xb361('0x46')]);return db['MailServerOut'][_0xb361('0x4c')](_0x35e25a)[_0xb361('0x29')](handleEntityNotFound(_0x1cc564,null))[_0xb361('0x29')](respondWithResult(_0x1cc564,null))['catch'](handleError(_0x1cc564,null));};exports[_0xb361('0x4d')]=function(_0x7b874,_0x4805e9){return db[_0xb361('0x31')][_0xb361('0x4d')](_0x7b874[_0xb361('0x4e')],{})['then'](respondWithResult(_0x4805e9,0xc9))['catch'](handleError(_0x4805e9,null));};exports[_0xb361('0x28')]=function(_0x17d531,_0xfa2ba8){if(_0x17d531[_0xb361('0x4e')]['id']){delete _0x17d531[_0xb361('0x4e')]['id'];}return db[_0xb361('0x31')][_0xb361('0x4c')]({'where':{'id':_0x17d531[_0xb361('0x49')]['id']}})[_0xb361('0x29')](handleEntityNotFound(_0xfa2ba8,null))[_0xb361('0x29')](saveUpdates(_0x17d531['body'],null))[_0xb361('0x29')](respondWithResult(_0xfa2ba8,null))['catch'](handleError(_0xfa2ba8,null));};exports[_0xb361('0x2a')]=function(_0x14ab17,_0x1824e9){return db[_0xb361('0x31')]['find']({'where':{'id':_0x14ab17[_0xb361('0x49')]['id']}})[_0xb361('0x29')](handleEntityNotFound(_0x1824e9,null))[_0xb361('0x29')](removeEntity(_0x1824e9,null))[_0xb361('0x4f')](handleError(_0x1824e9,null));};
\ No newline at end of file
index 254e201..64689ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa212=['exports','define','mail_servers_out','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x5f382f,_0x3f1432){var _0x3bb11b=function(_0x4daf9b){while(--_0x4daf9b){_0x5f382f['push'](_0x5f382f['shift']());}};_0x3bb11b(++_0x3f1432);}(_0xa212,0xd4));var _0x2a21=function(_0xd78f07,_0x58c7e3){_0xd78f07=_0xd78f07-0x0;var _0x264102=_0xa212[_0xd78f07];return _0x264102;};'use strict';var _=require(_0x2a21('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x2a21('0x1'));var BPromise=require(_0x2a21('0x2'));var rp=require(_0x2a21('0x3'));var fs=require('fs');var path=require(_0x2a21('0x4'));var rimraf=require(_0x2a21('0x5'));var config=require(_0x2a21('0x6'));var attributes=require(_0x2a21('0x7'));module[_0x2a21('0x8')]=function(_0x3add07,_0x61abc9){return _0x3add07[_0x2a21('0x9')]('MailServerOut',attributes,{'tableName':_0x2a21('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e8c=['path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','api','moment','bluebird','request-promise'];(function(_0x39752d,_0x841f68){var _0x5a62df=function(_0x15bf10){while(--_0x15bf10){_0x39752d['push'](_0x39752d['shift']());}};_0x5a62df(++_0x841f68);}(_0x2e8c,0xd8));var _0xc2e8=function(_0x102e07,_0x2d187a){_0x102e07=_0x102e07-0x0;var _0x4c6d92=_0x2e8c[_0x102e07];return _0x4c6d92;};'use strict';var _=require(_0xc2e8('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc2e8('0x1'));var moment=require(_0xc2e8('0x2'));var BPromise=require(_0xc2e8('0x3'));var rp=require(_0xc2e8('0x4'));var fs=require('fs');var path=require(_0xc2e8('0x5'));var rimraf=require(_0xc2e8('0x6'));var config=require(_0xc2e8('0x7'));var attributes=require(_0xc2e8('0x8'));module[_0xc2e8('0x9')]=function(_0x11681e,_0x284ae0){return _0x11681e[_0xc2e8('0xa')](_0xc2e8('0xb'),attributes,{'tableName':_0xc2e8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfe17e3..c1973c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x1ce9fa,_0x101dba){var _0x24bc72=function(_0x7554ff){while(--_0x7554ff){_0x1ce9fa['push'](_0x1ce9fa['shift']());}};_0x24bc72(++_0x101dba);}(_0x1261,0x144));var _0x1126=function(_0x27c822,_0x4850f1){_0x27c822=_0x27c822-0x0;var _0x2e60b2=_0x1261[_0x27c822];return _0x2e60b2;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x32c6e7,_0x540b99){var _0x26b6f4=function(_0x4ec13b){while(--_0x4ec13b){_0x32c6e7['push'](_0x32c6e7['shift']());}};_0x26b6f4(++_0x540b99);}(_0x2ef3,0xba));var _0x32ef=function(_0x3e7d1e,_0xda082){_0x3e7d1e=_0x3e7d1e-0x0;var _0x11301b=_0x2ef3[_0x3e7d1e];return _0x11301b;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index d9a1974..1601e13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf055=['describe','show','post','create','put','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe'];(function(_0x4099ee,_0x38495a){var _0x1b7bfc=function(_0x5f5388){while(--_0x5f5388){_0x4099ee['push'](_0x4099ee['shift']());}};_0x1b7bfc(++_0x38495a);}(_0xf055,0x190));var _0x5f05=function(_0x1a1b6e,_0x3a07a9){_0x1a1b6e=_0x1a1b6e-0x0;var _0x571e2c=_0xf055[_0x1a1b6e];return _0x571e2c;};'use strict';var multer=require(_0x5f05('0x0'));var util=require(_0x5f05('0x1'));var path=require(_0x5f05('0x2'));var timeout=require(_0x5f05('0x3'));var express=require(_0x5f05('0x4'));var router=express['Router']();var fs_extra=require(_0x5f05('0x5'));var auth=require(_0x5f05('0x6'));var interaction=require(_0x5f05('0x7'));var config=require(_0x5f05('0x8'));var controller=require(_0x5f05('0x9'));router[_0x5f05('0xa')]('/',auth[_0x5f05('0xb')](),controller[_0x5f05('0xc')]);router[_0x5f05('0xa')](_0x5f05('0xd'),auth[_0x5f05('0xb')](),controller[_0x5f05('0xe')]);router[_0x5f05('0xa')]('/:id',auth[_0x5f05('0xb')](),controller[_0x5f05('0xf')]);router[_0x5f05('0x10')]('/',auth[_0x5f05('0xb')](),controller[_0x5f05('0x11')]);router[_0x5f05('0x12')]('/:id',auth[_0x5f05('0xb')](),controller['update']);router[_0x5f05('0x13')](_0x5f05('0x14'),auth[_0x5f05('0xb')](),controller[_0x5f05('0x15')]);module[_0x5f05('0x16')]=router;
\ No newline at end of file
+var _0xd555=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','path','fs-extra','../../components/auth/service','../../components/interaction/service','./mailSubstatus.controller','get'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xd555,0xe4));var _0x5d55=function(_0xfb3b3,_0x10db7a){_0xfb3b3=_0xfb3b3-0x0;var _0x36cae7=_0xd555[_0xfb3b3];return _0x36cae7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5d55('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x5d55('0x1'));var auth=require(_0x5d55('0x2'));var interaction=require(_0x5d55('0x3'));var config=require('../../config/environment');var controller=require(_0x5d55('0x4'));router[_0x5d55('0x5')]('/',auth[_0x5d55('0x6')](),controller[_0x5d55('0x7')]);router['get'](_0x5d55('0x8'),auth[_0x5d55('0x6')](),controller[_0x5d55('0x9')]);router['get'](_0x5d55('0xa'),auth[_0x5d55('0x6')](),controller[_0x5d55('0xb')]);router[_0x5d55('0xc')]('/',auth[_0x5d55('0x6')](),controller[_0x5d55('0xd')]);router[_0x5d55('0xe')](_0x5d55('0xa'),auth['isAuthenticated'](),controller[_0x5d55('0xf')]);router[_0x5d55('0x10')]('/:id',auth[_0x5d55('0x6')](),controller[_0x5d55('0x11')]);module['exports']=router;
\ No newline at end of file
index 6c37c4e..eb7dccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde7=['name','STRING'];(function(_0x55137a,_0x495481){var _0x1cfe93=function(_0x448e25){while(--_0x448e25){_0x55137a['push'](_0x55137a['shift']());}};_0x1cfe93(++_0x495481);}(_0xcde7,0x65));var _0x7cde=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xcde7[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7cde('0x0')],'unique':_0x7cde('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7cde('0x0')]}};
\ No newline at end of file
+var _0x126e=['exports','STRING','name'];(function(_0x43abca,_0x1df29d){var _0x14dae8=function(_0x18d874){while(--_0x18d874){_0x43abca['push'](_0x43abca['shift']());}};_0x14dae8(++_0x1df29d);}(_0x126e,0x108));var _0xe126=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x126e[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require('sequelize');module[_0xe126('0x0')]={'name':{'type':Sequelize[_0xe126('0x1')],'unique':_0xe126('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xe126('0x1')]}};
\ No newline at end of file
index aa965d4..1516b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x698c=['save','update','then','destroy','error','stack','send','fieldName','model','map','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','name','merge','options','MailSubstatus','include','rows','catch','show','params','rawAttributes','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x2ba720,_0xc69449){var _0x130f4e=function(_0x24f2da){while(--_0x24f2da){_0x2ba720['push'](_0x2ba720['shift']());}};_0x130f4e(++_0xc69449);}(_0x698c,0x158));var _0xc698=function(_0x522f16,_0x376723){_0x522f16=_0x522f16-0x0;var _0x5a53cb=_0x698c[_0x522f16];return _0x5a53cb;};'use strict';var emlformat=require(_0xc698('0x0'));var rimraf=require(_0xc698('0x1'));var zipdir=require(_0xc698('0x2'));var jsonpatch=require(_0xc698('0x3'));var rp=require(_0xc698('0x4'));var moment=require(_0xc698('0x5'));var BPromise=require(_0xc698('0x6'));var Mustache=require('mustache');var util=require(_0xc698('0x7'));var path=require('path');var sox=require(_0xc698('0x8'));var csv=require(_0xc698('0x9'));var ejs=require(_0xc698('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc698('0xb'));var squel=require(_0xc698('0xc'));var crypto=require(_0xc698('0xd'));var jsforce=require(_0xc698('0xe'));var deskjs=require(_0xc698('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc698('0x10'));var authService=require(_0xc698('0x11'));var qs=require(_0xc698('0x12'));var as=require(_0xc698('0x13'));var hardwareService=require(_0xc698('0x14'));var logger=require(_0xc698('0x15'))(_0xc698('0x16'));var utils=require(_0xc698('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc698('0x18'))['db'];function respondWithStatusCode(_0x5da881,_0x2efecf){_0x2efecf=_0x2efecf||0xcc;return function(_0x40387d){if(_0x40387d){return _0x5da881[_0xc698('0x19')](_0x2efecf);}return _0x5da881[_0xc698('0x1a')](_0x2efecf)[_0xc698('0x1b')]();};}function respondWithResult(_0x26e132,_0x3fde88){_0x3fde88=_0x3fde88||0xc8;return function(_0x3d8069){if(_0x3d8069){return _0x26e132[_0xc698('0x1a')](_0x3fde88)[_0xc698('0x1c')](_0x3d8069);}};}function respondWithFilteredResult(_0x10846e,_0x14d7dd){return function(_0x397a29){if(_0x397a29){var _0x39ad09=typeof _0x14d7dd[_0xc698('0x1d')]===_0xc698('0x1e')&&typeof _0x14d7dd[_0xc698('0x1f')]===_0xc698('0x1e');var _0x30d5de=_0x397a29[_0xc698('0x20')];var _0x129f80=_0x39ad09?0x0:_0x14d7dd[_0xc698('0x1d')];var _0x34ec95=_0x39ad09?_0x397a29['count']:_0x14d7dd['offset']+_0x14d7dd['limit'];var _0x332875;if(_0x34ec95>=_0x30d5de){_0x34ec95=_0x30d5de;_0x332875=0xc8;}else{_0x332875=0xce;}_0x10846e[_0xc698('0x1a')](_0x332875);return _0x10846e[_0xc698('0x21')]('Content-Range',_0x129f80+'-'+_0x34ec95+'/'+_0x30d5de)[_0xc698('0x1c')](_0x397a29);}return null;};}function patchUpdates(_0x21e3ec){return function(_0x2a18cf){try{jsonpatch[_0xc698('0x22')](_0x2a18cf,_0x21e3ec,!![]);}catch(_0x53ff0a){return BPromise[_0xc698('0x23')](_0x53ff0a);}return _0x2a18cf[_0xc698('0x24')]();};}function saveUpdates(_0x126ab9,_0x265cc3){return function(_0x645674){if(_0x645674){return _0x645674[_0xc698('0x25')](_0x126ab9)[_0xc698('0x26')](function(_0x19fdc7){return _0x19fdc7;});}return null;};}function removeEntity(_0x230c49,_0x33aec8){return function(_0x582af4){if(_0x582af4){return _0x582af4[_0xc698('0x27')]()[_0xc698('0x26')](function(){_0x230c49[_0xc698('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2abdee,_0x1d8cc9){return function(_0x40e48b){if(!_0x40e48b){_0x2abdee['sendStatus'](0x194);}return _0x40e48b;};}function handleError(_0xdc1022,_0x2d982f){_0x2d982f=_0x2d982f||0x1f4;return function(_0x7145f0){logger[_0xc698('0x28')](_0x7145f0[_0xc698('0x29')]);if(_0x7145f0['name']){delete _0x7145f0['name'];}_0xdc1022[_0xc698('0x1a')](_0x2d982f)[_0xc698('0x2a')](_0x7145f0);};}exports['index']=function(_0x3f41f5,_0x5e2446){var _0x20cf84={},_0x301cfd={},_0x15e91c={'count':0x0,'rows':[]};var _0x23b328=_['map'](db['MailSubstatus']['rawAttributes'],function(_0x4d799d){return{'name':_0x4d799d[_0xc698('0x2b')],'type':_0x4d799d['type']['key']};});_0x301cfd[_0xc698('0x2c')]=_[_0xc698('0x2d')](_0x23b328,'name');_0x301cfd[_0xc698('0x2e')]=_[_0xc698('0x2f')](_0x3f41f5['query']);_0x301cfd[_0xc698('0x30')]=_['intersection'](_0x301cfd[_0xc698('0x2c')],_0x301cfd[_0xc698('0x2e')]);_0x20cf84['attributes']=_[_0xc698('0x31')](_0x301cfd[_0xc698('0x2c')],qs[_0xc698('0x32')](_0x3f41f5['query'][_0xc698('0x32')]));_0x20cf84['attributes']=_0x20cf84['attributes'][_0xc698('0x33')]?_0x20cf84[_0xc698('0x34')]:_0x301cfd['model'];if(!_0x3f41f5[_0xc698('0x2e')][_0xc698('0x35')](_0xc698('0x36'))){_0x20cf84[_0xc698('0x1f')]=qs['limit'](_0x3f41f5['query'][_0xc698('0x1f')]);_0x20cf84[_0xc698('0x1d')]=qs[_0xc698('0x1d')](_0x3f41f5[_0xc698('0x2e')]['offset']);}_0x20cf84[_0xc698('0x37')]=qs[_0xc698('0x38')](_0x3f41f5['query']['sort']);_0x20cf84[_0xc698('0x39')]=qs[_0xc698('0x30')](_['pick'](_0x3f41f5[_0xc698('0x2e')],_0x301cfd[_0xc698('0x30')]),_0x23b328);if(_0x3f41f5['query'][_0xc698('0x3a')]){_0x20cf84[_0xc698('0x39')]=_['merge'](_0x20cf84[_0xc698('0x39')],{'$or':_[_0xc698('0x2d')](_0x23b328,function(_0x2efda8){if(_0x2efda8[_0xc698('0x3b')]!==_0xc698('0x3c')){var _0x1e8798={};_0x1e8798[_0x2efda8[_0xc698('0x3d')]]={'$like':'%'+_0x3f41f5[_0xc698('0x2e')][_0xc698('0x3a')]+'%'};return _0x1e8798;}})});}_0x20cf84=_[_0xc698('0x3e')]({},_0x20cf84,_0x3f41f5[_0xc698('0x3f')]);var _0x2cbb17={'where':_0x20cf84[_0xc698('0x39')]};return db[_0xc698('0x40')][_0xc698('0x20')](_0x2cbb17)[_0xc698('0x26')](function(_0x3f125b){_0x15e91c[_0xc698('0x20')]=_0x3f125b;if(_0x3f41f5['query']['includeAll']){_0x20cf84[_0xc698('0x41')]=[{'all':!![]}];}return db[_0xc698('0x40')]['findAll'](_0x20cf84);})[_0xc698('0x26')](function(_0x47274a){_0x15e91c[_0xc698('0x42')]=_0x47274a;return _0x15e91c;})[_0xc698('0x26')](respondWithFilteredResult(_0x5e2446,_0x20cf84))[_0xc698('0x43')](handleError(_0x5e2446,null));};exports[_0xc698('0x44')]=function(_0x411c50,_0x253f1d){var _0x5edd6c={'raw':!![],'where':{'id':_0x411c50[_0xc698('0x45')]['id']}},_0xb63197={};_0xb63197[_0xc698('0x2c')]=_[_0xc698('0x2f')](db[_0xc698('0x40')][_0xc698('0x46')]);_0xb63197[_0xc698('0x2e')]=_[_0xc698('0x2f')](_0x411c50[_0xc698('0x2e')]);_0xb63197[_0xc698('0x30')]=_[_0xc698('0x31')](_0xb63197[_0xc698('0x2c')],_0xb63197[_0xc698('0x2e')]);_0x5edd6c[_0xc698('0x34')]=_['intersection'](_0xb63197['model'],qs[_0xc698('0x32')](_0x411c50[_0xc698('0x2e')]['fields']));_0x5edd6c[_0xc698('0x34')]=_0x5edd6c[_0xc698('0x34')]['length']?_0x5edd6c[_0xc698('0x34')]:_0xb63197['model'];if(_0x411c50[_0xc698('0x2e')][_0xc698('0x47')]){_0x5edd6c[_0xc698('0x41')]=[{'all':!![]}];}_0x5edd6c=_[_0xc698('0x3e')]({},_0x5edd6c,_0x411c50[_0xc698('0x3f')]);return db['MailSubstatus'][_0xc698('0x48')](_0x5edd6c)[_0xc698('0x26')](handleEntityNotFound(_0x253f1d,null))[_0xc698('0x26')](respondWithResult(_0x253f1d,null))['catch'](handleError(_0x253f1d,null));};exports[_0xc698('0x49')]=function(_0x5ad1aa,_0x4715ae){return db[_0xc698('0x40')][_0xc698('0x49')](_0x5ad1aa[_0xc698('0x4a')],{})['then'](respondWithResult(_0x4715ae,0xc9))[_0xc698('0x43')](handleError(_0x4715ae,null));};exports[_0xc698('0x25')]=function(_0x1c9f36,_0x2517de){if(_0x1c9f36['body']['id']){delete _0x1c9f36[_0xc698('0x4a')]['id'];}return db[_0xc698('0x40')][_0xc698('0x48')]({'where':{'id':_0x1c9f36[_0xc698('0x45')]['id']}})[_0xc698('0x26')](handleEntityNotFound(_0x2517de,null))['then'](saveUpdates(_0x1c9f36[_0xc698('0x4a')],null))['then'](respondWithResult(_0x2517de,null))[_0xc698('0x43')](handleError(_0x2517de,null));};exports[_0xc698('0x27')]=function(_0x23cd12,_0xf36f07){return db[_0xc698('0x40')][_0xc698('0x48')]({'where':{'id':_0x23cd12[_0xc698('0x45')]['id']}})[_0xc698('0x26')](handleEntityNotFound(_0xf36f07,null))[_0xc698('0x26')](removeEntity(_0xf36f07,null))[_0xc698('0x43')](handleError(_0xf36f07,null));};exports[_0xc698('0x4b')]=function(_0x9df93,_0x3bef1f){return db[_0xc698('0x40')][_0xc698('0x4b')]()['then'](respondWithResult(_0x3bef1f,null))[_0xc698('0x43')](handleError(_0x3bef1f,null));};
\ No newline at end of file
+var _0xb51f=['api','../../mysqldb','sendStatus','end','json','undefined','offset','count','status','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','index','map','MailSubstatus','rawAttributes','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','include','findAll','show','params','includeAll','find','create','body','catch','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x4a095e,_0x381cd5){var _0x10ef73=function(_0x1f6964){while(--_0x1f6964){_0x4a095e['push'](_0x4a095e['shift']());}};_0x10ef73(++_0x381cd5);}(_0xb51f,0x111));var _0xfb51=function(_0x3a60fb,_0x4003cd){_0x3a60fb=_0x3a60fb-0x0;var _0x37c1fb=_0xb51f[_0x3a60fb];return _0x37c1fb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfb51('0x0'));var zipdir=require(_0xfb51('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb51('0x2'));var moment=require('moment');var BPromise=require(_0xfb51('0x3'));var Mustache=require(_0xfb51('0x4'));var util=require(_0xfb51('0x5'));var path=require(_0xfb51('0x6'));var sox=require('sox');var csv=require(_0xfb51('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfb51('0x8'));var _=require(_0xfb51('0x9'));var squel=require(_0xfb51('0xa'));var crypto=require(_0xfb51('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfb51('0xc'));var Papa=require(_0xfb51('0xd'));var Redis=require('ioredis');var authService=require(_0xfb51('0xe'));var qs=require(_0xfb51('0xf'));var as=require(_0xfb51('0x10'));var hardwareService=require(_0xfb51('0x11'));var logger=require(_0xfb51('0x12'))(_0xfb51('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfb51('0x14'))['db'];function respondWithStatusCode(_0x476145,_0x492d4b){_0x492d4b=_0x492d4b||0xcc;return function(_0x5e4dcc){if(_0x5e4dcc){return _0x476145[_0xfb51('0x15')](_0x492d4b);}return _0x476145['status'](_0x492d4b)[_0xfb51('0x16')]();};}function respondWithResult(_0x2791fb,_0x425950){_0x425950=_0x425950||0xc8;return function(_0x2cda41){if(_0x2cda41){return _0x2791fb['status'](_0x425950)[_0xfb51('0x17')](_0x2cda41);}};}function respondWithFilteredResult(_0x4b3dad,_0xfc551a){return function(_0x450261){if(_0x450261){var _0x4848e3=typeof _0xfc551a['offset']===_0xfb51('0x18')&&typeof _0xfc551a['limit']===_0xfb51('0x18');var _0x1be493=_0x450261['count'];var _0x320ebc=_0x4848e3?0x0:_0xfc551a[_0xfb51('0x19')];var _0x334263=_0x4848e3?_0x450261[_0xfb51('0x1a')]:_0xfc551a[_0xfb51('0x19')]+_0xfc551a['limit'];var _0x479e5d;if(_0x334263>=_0x1be493){_0x334263=_0x1be493;_0x479e5d=0xc8;}else{_0x479e5d=0xce;}_0x4b3dad[_0xfb51('0x1b')](_0x479e5d);return _0x4b3dad[_0xfb51('0x1c')](_0xfb51('0x1d'),_0x320ebc+'-'+_0x334263+'/'+_0x1be493)['json'](_0x450261);}return null;};}function patchUpdates(_0x6627be){return function(_0x20c78e){try{jsonpatch[_0xfb51('0x1e')](_0x20c78e,_0x6627be,!![]);}catch(_0x5296c2){return BPromise[_0xfb51('0x1f')](_0x5296c2);}return _0x20c78e[_0xfb51('0x20')]();};}function saveUpdates(_0x44c96d,_0x3646ef){return function(_0x5bc6a0){if(_0x5bc6a0){return _0x5bc6a0[_0xfb51('0x21')](_0x44c96d)[_0xfb51('0x22')](function(_0x17b199){return _0x17b199;});}return null;};}function removeEntity(_0xac6acd,_0x229200){return function(_0x45a1c3){if(_0x45a1c3){return _0x45a1c3[_0xfb51('0x23')]()[_0xfb51('0x22')](function(){_0xac6acd['status'](0xcc)[_0xfb51('0x16')]();});}};}function handleEntityNotFound(_0x6f6e5a,_0xdb6a6){return function(_0x1c6364){if(!_0x1c6364){_0x6f6e5a[_0xfb51('0x15')](0x194);}return _0x1c6364;};}function handleError(_0x4a9eb1,_0x12af99){_0x12af99=_0x12af99||0x1f4;return function(_0x10cccb){logger[_0xfb51('0x24')](_0x10cccb[_0xfb51('0x25')]);if(_0x10cccb['name']){delete _0x10cccb['name'];}_0x4a9eb1[_0xfb51('0x1b')](_0x12af99)['send'](_0x10cccb);};}exports[_0xfb51('0x26')]=function(_0x5023d7,_0x2cf4e2){var _0x2e3b53={},_0x4ba475={},_0x1271d3={'count':0x0,'rows':[]};var _0x575088=_[_0xfb51('0x27')](db[_0xfb51('0x28')][_0xfb51('0x29')],function(_0x34b0b8){return{'name':_0x34b0b8['fieldName'],'type':_0x34b0b8[_0xfb51('0x2a')][_0xfb51('0x2b')]};});_0x4ba475[_0xfb51('0x2c')]=_[_0xfb51('0x27')](_0x575088,_0xfb51('0x2d'));_0x4ba475['query']=_[_0xfb51('0x2e')](_0x5023d7[_0xfb51('0x2f')]);_0x4ba475[_0xfb51('0x30')]=_[_0xfb51('0x31')](_0x4ba475[_0xfb51('0x2c')],_0x4ba475[_0xfb51('0x2f')]);_0x2e3b53[_0xfb51('0x32')]=_[_0xfb51('0x31')](_0x4ba475[_0xfb51('0x2c')],qs[_0xfb51('0x33')](_0x5023d7[_0xfb51('0x2f')][_0xfb51('0x33')]));_0x2e3b53['attributes']=_0x2e3b53[_0xfb51('0x32')][_0xfb51('0x34')]?_0x2e3b53[_0xfb51('0x32')]:_0x4ba475[_0xfb51('0x2c')];if(!_0x5023d7['query'][_0xfb51('0x35')](_0xfb51('0x36'))){_0x2e3b53[_0xfb51('0x37')]=qs[_0xfb51('0x37')](_0x5023d7['query'][_0xfb51('0x37')]);_0x2e3b53['offset']=qs[_0xfb51('0x19')](_0x5023d7[_0xfb51('0x2f')][_0xfb51('0x19')]);}_0x2e3b53[_0xfb51('0x38')]=qs[_0xfb51('0x39')](_0x5023d7['query']['sort']);_0x2e3b53[_0xfb51('0x3a')]=qs[_0xfb51('0x30')](_[_0xfb51('0x3b')](_0x5023d7[_0xfb51('0x2f')],_0x4ba475[_0xfb51('0x30')]),_0x575088);if(_0x5023d7[_0xfb51('0x2f')][_0xfb51('0x3c')]){_0x2e3b53[_0xfb51('0x3a')]=_[_0xfb51('0x3d')](_0x2e3b53['where'],{'$or':_['map'](_0x575088,function(_0x32fc65){if(_0x32fc65[_0xfb51('0x2a')]!=='VIRTUAL'){var _0x4acf2a={};_0x4acf2a[_0x32fc65[_0xfb51('0x2d')]]={'$like':'%'+_0x5023d7[_0xfb51('0x2f')][_0xfb51('0x3c')]+'%'};return _0x4acf2a;}})});}_0x2e3b53=_[_0xfb51('0x3d')]({},_0x2e3b53,_0x5023d7[_0xfb51('0x3e')]);var _0x9a2a6={'where':_0x2e3b53[_0xfb51('0x3a')]};return db[_0xfb51('0x28')][_0xfb51('0x1a')](_0x9a2a6)[_0xfb51('0x22')](function(_0x16d05b){_0x1271d3['count']=_0x16d05b;if(_0x5023d7[_0xfb51('0x2f')]['includeAll']){_0x2e3b53[_0xfb51('0x3f')]=[{'all':!![]}];}return db[_0xfb51('0x28')][_0xfb51('0x40')](_0x2e3b53);})[_0xfb51('0x22')](function(_0x48facd){_0x1271d3['rows']=_0x48facd;return _0x1271d3;})[_0xfb51('0x22')](respondWithFilteredResult(_0x2cf4e2,_0x2e3b53))['catch'](handleError(_0x2cf4e2,null));};exports[_0xfb51('0x41')]=function(_0x156398,_0x19b65d){var _0x34dfb1={'raw':!![],'where':{'id':_0x156398[_0xfb51('0x42')]['id']}},_0x4f40c5={};_0x4f40c5[_0xfb51('0x2c')]=_['keys'](db[_0xfb51('0x28')][_0xfb51('0x29')]);_0x4f40c5[_0xfb51('0x2f')]=_[_0xfb51('0x2e')](_0x156398[_0xfb51('0x2f')]);_0x4f40c5[_0xfb51('0x30')]=_[_0xfb51('0x31')](_0x4f40c5[_0xfb51('0x2c')],_0x4f40c5[_0xfb51('0x2f')]);_0x34dfb1[_0xfb51('0x32')]=_[_0xfb51('0x31')](_0x4f40c5[_0xfb51('0x2c')],qs[_0xfb51('0x33')](_0x156398['query'][_0xfb51('0x33')]));_0x34dfb1['attributes']=_0x34dfb1[_0xfb51('0x32')][_0xfb51('0x34')]?_0x34dfb1['attributes']:_0x4f40c5[_0xfb51('0x2c')];if(_0x156398['query'][_0xfb51('0x43')]){_0x34dfb1[_0xfb51('0x3f')]=[{'all':!![]}];}_0x34dfb1=_[_0xfb51('0x3d')]({},_0x34dfb1,_0x156398[_0xfb51('0x3e')]);return db[_0xfb51('0x28')][_0xfb51('0x44')](_0x34dfb1)[_0xfb51('0x22')](handleEntityNotFound(_0x19b65d,null))[_0xfb51('0x22')](respondWithResult(_0x19b65d,null))['catch'](handleError(_0x19b65d,null));};exports['create']=function(_0x2134a2,_0x467ea7){return db[_0xfb51('0x28')][_0xfb51('0x45')](_0x2134a2[_0xfb51('0x46')],{})['then'](respondWithResult(_0x467ea7,0xc9))['catch'](handleError(_0x467ea7,null));};exports['update']=function(_0x143494,_0x3e342c){if(_0x143494['body']['id']){delete _0x143494['body']['id'];}return db[_0xfb51('0x28')][_0xfb51('0x44')]({'where':{'id':_0x143494['params']['id']}})[_0xfb51('0x22')](handleEntityNotFound(_0x3e342c,null))[_0xfb51('0x22')](saveUpdates(_0x143494[_0xfb51('0x46')],null))[_0xfb51('0x22')](respondWithResult(_0x3e342c,null))[_0xfb51('0x47')](handleError(_0x3e342c,null));};exports['destroy']=function(_0x26dac2,_0x1ee9c4){return db[_0xfb51('0x28')][_0xfb51('0x44')]({'where':{'id':_0x26dac2[_0xfb51('0x42')]['id']}})[_0xfb51('0x22')](handleEntityNotFound(_0x1ee9c4,null))[_0xfb51('0x22')](removeEntity(_0x1ee9c4,null))[_0xfb51('0x47')](handleError(_0x1ee9c4,null));};exports[_0xfb51('0x48')]=function(_0x18f563,_0x3eae12){return db[_0xfb51('0x28')]['describe']()[_0xfb51('0x22')](respondWithResult(_0x3eae12,null))[_0xfb51('0x47')](handleError(_0x3eae12,null));};
\ No newline at end of file
index 297fff9..6fa8371 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f6=['hook','exports','events','MailSubstatus','setMaxListeners','update','emit','hasOwnProperty'];(function(_0xca7903,_0x31160e){var _0x9ae08a=function(_0x5b12fe){while(--_0x5b12fe){_0xca7903['push'](_0xca7903['shift']());}};_0x9ae08a(++_0x31160e);}(_0x21f6,0x152));var _0x621f=function(_0x4ce2ef,_0x44aeba){_0x4ce2ef=_0x4ce2ef-0x0;var _0x456e7b=_0x21f6[_0x4ce2ef];return _0x456e7b;};'use strict';var EventEmitter=require(_0x621f('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x621f('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x621f('0x2')](0x0);var events={'afterUpdate':_0x621f('0x3')};function emitEvent(_0x467d17){return function(_0x223d88,_0x387b71,_0x2dd73a){MailSubstatusEvents[_0x621f('0x4')](_0x467d17+':'+_0x223d88['id'],_0x223d88);MailSubstatusEvents[_0x621f('0x4')](_0x467d17,_0x223d88);_0x2dd73a(null);};}for(var e in events){if(events[_0x621f('0x5')](e)){var event=events[e];MailSubstatus[_0x621f('0x6')](e,emitEvent(event));}}module[_0x621f('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0xb181=['emit','hasOwnProperty','hook','exports','events','MailSubstatus','setMaxListeners','update'];(function(_0x147e3f,_0x3d6ce4){var _0x1ce9e5=function(_0x1aebdf){while(--_0x1aebdf){_0x147e3f['push'](_0x147e3f['shift']());}};_0x1ce9e5(++_0x3d6ce4);}(_0xb181,0x124));var _0x1b18=function(_0x32860a,_0x60692b){_0x32860a=_0x32860a-0x0;var _0x2f0b18=_0xb181[_0x32860a];return _0x2f0b18;};'use strict';var EventEmitter=require(_0x1b18('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x1b18('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x1b18('0x2')](0x0);var events={'afterUpdate':_0x1b18('0x3')};function emitEvent(_0x345a03){return function(_0xa86291,_0x1ed987,_0x166851){MailSubstatusEvents[_0x1b18('0x4')](_0x345a03+':'+_0xa86291['id'],_0xa86291);MailSubstatusEvents[_0x1b18('0x4')](_0x345a03,_0xa86291);_0x166851(null);};}for(var e in events){if(events[_0x1b18('0x5')](e)){var event=events[e];MailSubstatus[_0x1b18('0x6')](e,emitEvent(event));}}module[_0x1b18('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 3cf926e..f52750c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b08=['_previousDataValues','then','./mailSubstatus.attributes','define','mail_substatuses','update','name','mailSubstatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8b08,0x10a));var _0x88b0=function(_0x2a1cd4,_0x19e730){_0x2a1cd4=_0x2a1cd4-0x0;var _0x1d688d=_0x8b08[_0x2a1cd4];return _0x1d688d;};'use strict';var attributes=require(_0x88b0('0x0'));module['exports']=function(_0x44b80b){var _0x3f37d1=_0x44b80b['models'];return _0x44b80b[_0x88b0('0x1')]('MailSubstatus',attributes,{'tableName':_0x88b0('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x3d3773,_0x15e4a6,_0x3d15fa){return _0x3f37d1['Condition'][_0x88b0('0x3')]({'value':_0x3d3773[_0x88b0('0x4')]},{'where':{'field':_0x88b0('0x5'),'value':_0x3d3773[_0x88b0('0x6')][_0x88b0('0x4')]}})[_0x88b0('0x7')](function(){_0x3d15fa();})['catch'](function(_0x5c22bd){_0x3d15fa(_0x5c22bd);});}}});};
\ No newline at end of file
+var _0xa5db=['MailSubstatus','mail_substatuses','Condition','update','name','mailSubstatus','then','catch','./mailSubstatus.attributes','exports','define'];(function(_0x57e857,_0xc01b48){var _0x52166f=function(_0x199d26){while(--_0x199d26){_0x57e857['push'](_0x57e857['shift']());}};_0x52166f(++_0xc01b48);}(_0xa5db,0x1e1));var _0xba5d=function(_0xf706c7,_0x6c9079){_0xf706c7=_0xf706c7-0x0;var _0x23894f=_0xa5db[_0xf706c7];return _0x23894f;};'use strict';var attributes=require(_0xba5d('0x0'));module[_0xba5d('0x1')]=function(_0x522ad8){var _0x5566ab=_0x522ad8['models'];return _0x522ad8[_0xba5d('0x2')](_0xba5d('0x3'),attributes,{'tableName':_0xba5d('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x4eecfc,_0x3e83a8,_0xf48ba4){return _0x5566ab[_0xba5d('0x5')][_0xba5d('0x6')]({'value':_0x4eecfc[_0xba5d('0x7')]},{'where':{'field':_0xba5d('0x8'),'value':_0x4eecfc['_previousDataValues'][_0xba5d('0x7')]}})[_0xba5d('0x9')](function(){_0xf48ba4();})[_0xba5d('0xa')](function(_0x5aca5d){_0xf48ba4(_0x5aca5d);});}}});};
\ No newline at end of file
index ed998c4..ba1261f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x619e=['http','request','MailSubstatus,\x20%s,\x20%s','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x58b754,_0x464e39){var _0x20cc09=function(_0x323424){while(--_0x323424){_0x58b754['push'](_0x58b754['shift']());}};_0x20cc09(++_0x464e39);}(_0x619e,0x19b));var _0xe619=function(_0x486e6f,_0x395450){_0x486e6f=_0x486e6f-0x0;var _0x104212=_0x619e[_0x486e6f];return _0x104212;};'use strict';var _=require(_0xe619('0x0'));var util=require(_0xe619('0x1'));var moment=require(_0xe619('0x2'));var BPromise=require(_0xe619('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe619('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe619('0x5'));var config=require(_0xe619('0x6'));var jayson=require(_0xe619('0x7'));var client=jayson[_0xe619('0x8')][_0xe619('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x543165,_0x26d81c,_0x2c9ce2){return new BPromise(function(_0x8607ab,_0x541caf){return client[_0xe619('0xa')](_0x543165,_0x2c9ce2)['then'](function(_0xa0d0e2){logger['info'](_0xe619('0xb'),_0x26d81c,'request\x20sent');logger['debug'](_0xe619('0xc'),_0x26d81c,_0xe619('0xd'),JSON[_0xe619('0xe')](_0xa0d0e2));if(_0xa0d0e2[_0xe619('0xf')]){if(_0xa0d0e2[_0xe619('0xf')][_0xe619('0x10')]===0x1f4){logger[_0xe619('0xf')](_0xe619('0xb'),_0x26d81c,_0xa0d0e2[_0xe619('0xf')][_0xe619('0x11')]);return _0x541caf(_0xa0d0e2[_0xe619('0xf')][_0xe619('0x11')]);}logger['error'](_0xe619('0xb'),_0x26d81c,_0xa0d0e2[_0xe619('0xf')][_0xe619('0x11')]);return _0x8607ab(_0xa0d0e2['error'][_0xe619('0x11')]);}else{logger[_0xe619('0x12')](_0xe619('0xb'),_0x26d81c,'request\x20sent');_0x8607ab(_0xa0d0e2[_0xe619('0x13')][_0xe619('0x11')]);}})[_0xe619('0x14')](function(_0x4fb704){logger[_0xe619('0xf')](_0xe619('0xb'),_0x26d81c,_0x4fb704);_0x541caf(_0x4fb704);});});}
\ No newline at end of file
+var _0x48ab=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird'];(function(_0x87d11c,_0x479956){var _0x43f3ac=function(_0x48ce57){while(--_0x48ce57){_0x87d11c['push'](_0x87d11c['shift']());}};_0x43f3ac(++_0x479956);}(_0x48ab,0x6b));var _0xb48a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x48ab[_0x3b0731];return _0x4204d7;};'use strict';var _=require('lodash');var util=require(_0xb48a('0x0'));var moment=require(_0xb48a('0x1'));var BPromise=require(_0xb48a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb48a('0x3'));var db=require(_0xb48a('0x4'))['db'];var utils=require(_0xb48a('0x5'));var logger=require(_0xb48a('0x6'))(_0xb48a('0x7'));var config=require(_0xb48a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb48a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xf3718,_0x5dafaa,_0x27c104){return new BPromise(function(_0x13775f,_0x147397){return client[_0xb48a('0xa')](_0xf3718,_0x27c104)['then'](function(_0x2260ac){logger[_0xb48a('0xb')](_0xb48a('0xc'),_0x5dafaa,_0xb48a('0xd'));logger[_0xb48a('0xe')](_0xb48a('0xf'),_0x5dafaa,_0xb48a('0xd'),JSON[_0xb48a('0x10')](_0x2260ac));if(_0x2260ac[_0xb48a('0x11')]){if(_0x2260ac[_0xb48a('0x11')][_0xb48a('0x12')]===0x1f4){logger['error'](_0xb48a('0xc'),_0x5dafaa,_0x2260ac[_0xb48a('0x11')][_0xb48a('0x13')]);return _0x147397(_0x2260ac[_0xb48a('0x11')]['message']);}logger[_0xb48a('0x11')](_0xb48a('0xc'),_0x5dafaa,_0x2260ac[_0xb48a('0x11')][_0xb48a('0x13')]);return _0x13775f(_0x2260ac['error']['message']);}else{logger['info'](_0xb48a('0xc'),_0x5dafaa,_0xb48a('0xd'));_0x13775f(_0x2260ac[_0xb48a('0x14')][_0xb48a('0x13')]);}})[_0xb48a('0x15')](function(_0x51c8b5){logger['error'](_0xb48a('0xc'),_0x5dafaa,_0x51c8b5);_0x147397(_0x51c8b5);});});}
\ No newline at end of file
index 9613e2c..9f6a571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fa=['isAuthenticated','index','/describe','describe','show','/:id','update','delete','destroy','exports','util','Router','fs-extra','../../config/environment','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf8fa,0xeb));var _0xaf8f=function(_0x2f086b,_0x5333f7){_0x2f086b=_0x2f086b-0x0;var _0x330112=_0xf8fa[_0x2f086b];return _0x330112;};'use strict';var multer=require('multer');var util=require(_0xaf8f('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xaf8f('0x1')]();var fs_extra=require(_0xaf8f('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xaf8f('0x3'));var controller=require('./mailTransferReport.controller');router[_0xaf8f('0x4')]('/',auth[_0xaf8f('0x5')](),controller[_0xaf8f('0x6')]);router[_0xaf8f('0x4')](_0xaf8f('0x7'),auth[_0xaf8f('0x5')](),controller[_0xaf8f('0x8')]);router[_0xaf8f('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xaf8f('0x9')]);router['post']('/',auth[_0xaf8f('0x5')](),controller['create']);router['put'](_0xaf8f('0xa'),auth['isAuthenticated'](),controller[_0xaf8f('0xb')]);router[_0xaf8f('0xc')](_0xaf8f('0xa'),auth[_0xaf8f('0x5')](),controller[_0xaf8f('0xd')]);module[_0xaf8f('0xe')]=router;
\ No newline at end of file
+var _0xdad4=['delete','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id','update'];(function(_0x22506b,_0x426ee8){var _0xb87ce4=function(_0x245239){while(--_0x245239){_0x22506b['push'](_0x22506b['shift']());}};_0xb87ce4(++_0x426ee8);}(_0xdad4,0x99));var _0x4dad=function(_0x11e03f,_0x20b967){_0x11e03f=_0x11e03f-0x0;var _0x5666fe=_0xdad4[_0x11e03f];return _0x5666fe;};'use strict';var multer=require(_0x4dad('0x0'));var util=require(_0x4dad('0x1'));var path=require('path');var timeout=require(_0x4dad('0x2'));var express=require('express');var router=express[_0x4dad('0x3')]();var fs_extra=require(_0x4dad('0x4'));var auth=require(_0x4dad('0x5'));var interaction=require(_0x4dad('0x6'));var config=require('../../config/environment');var controller=require(_0x4dad('0x7'));router[_0x4dad('0x8')]('/',auth[_0x4dad('0x9')](),controller[_0x4dad('0xa')]);router[_0x4dad('0x8')]('/describe',auth[_0x4dad('0x9')](),controller[_0x4dad('0xb')]);router[_0x4dad('0x8')]('/:id',auth[_0x4dad('0x9')](),controller[_0x4dad('0xc')]);router[_0x4dad('0xd')]('/',auth[_0x4dad('0x9')](),controller[_0x4dad('0xe')]);router[_0x4dad('0xf')](_0x4dad('0x10'),auth[_0x4dad('0x9')](),controller[_0x4dad('0x11')]);router[_0x4dad('0x12')](_0x4dad('0x10'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 64336bd..58b5f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x33f73c,_0x3478b8){var _0x4bbd91=function(_0x1274de){while(--_0x1274de){_0x33f73c['push'](_0x33f73c['shift']());}};_0x4bbd91(++_0x3478b8);}(_0xf4eb,0xec));var _0xbf4e=function(_0x1405e2,_0x11d3b4){_0x1405e2=_0x1405e2-0x0;var _0x4521e4=_0xf4eb[_0x1405e2];return _0x4521e4;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2b2678,_0x576151){_0x2b2678=_0x2b2678-0x0;var _0x300d2=_0xb43b[_0x2b2678];return _0x300d2;};'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 65129cc..1e9e3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2916=['fieldName','type','key','model','query','keys','attributes','intersection','length','sort','where','filters','filter','VIRTUAL','merge','options','MailTransferReport','then','includeAll','include','findAll','catch','show','params','fields','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','destroy','sendStatus','name','send','index','map','rawAttributes'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x2916,0x1e0));var _0x6291=function(_0x1300ec,_0x3ff267){_0x1300ec=_0x1300ec-0x0;var _0x2c13c9=_0x2916[_0x1300ec];return _0x2c13c9;};'use strict';var emlformat=require(_0x6291('0x0'));var rimraf=require(_0x6291('0x1'));var zipdir=require(_0x6291('0x2'));var jsonpatch=require(_0x6291('0x3'));var rp=require(_0x6291('0x4'));var moment=require(_0x6291('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6291('0x6'));var util=require(_0x6291('0x7'));var path=require(_0x6291('0x8'));var sox=require(_0x6291('0x9'));var csv=require('to-csv');var ejs=require(_0x6291('0xa'));var fs=require('fs');var fs_extra=require(_0x6291('0xb'));var _=require('lodash');var squel=require(_0x6291('0xc'));var crypto=require(_0x6291('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6291('0xe'));var toCsv=require(_0x6291('0xf'));var querystring=require(_0x6291('0x10'));var Papa=require(_0x6291('0x11'));var Redis=require(_0x6291('0x12'));var authService=require(_0x6291('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x6291('0x14'));var hardwareService=require(_0x6291('0x15'));var logger=require(_0x6291('0x16'))(_0x6291('0x17'));var utils=require('../../config/utils');var config=require(_0x6291('0x18'));var licenseUtil=require(_0x6291('0x19'));var db=require(_0x6291('0x1a'))['db'];function respondWithStatusCode(_0x251847,_0x385734){_0x385734=_0x385734||0xcc;return function(_0x19a932){if(_0x19a932){return _0x251847['sendStatus'](_0x385734);}return _0x251847[_0x6291('0x1b')](_0x385734)[_0x6291('0x1c')]();};}function respondWithResult(_0x5b13d5,_0x48a93f){_0x48a93f=_0x48a93f||0xc8;return function(_0x414207){if(_0x414207){return _0x5b13d5[_0x6291('0x1b')](_0x48a93f)[_0x6291('0x1d')](_0x414207);}};}function respondWithFilteredResult(_0x3117cb,_0x3691f4){return function(_0x4c6a3e){if(_0x4c6a3e){var _0x34037a=typeof _0x3691f4[_0x6291('0x1e')]===_0x6291('0x1f')&&typeof _0x3691f4['limit']==='undefined';var _0x183d28=_0x4c6a3e['count'];var _0x3da1a6=_0x34037a?0x0:_0x3691f4[_0x6291('0x1e')];var _0x12da41=_0x34037a?_0x4c6a3e[_0x6291('0x20')]:_0x3691f4['offset']+_0x3691f4[_0x6291('0x21')];var _0x5e824e;if(_0x12da41>=_0x183d28){_0x12da41=_0x183d28;_0x5e824e=0xc8;}else{_0x5e824e=0xce;}_0x3117cb[_0x6291('0x1b')](_0x5e824e);return _0x3117cb[_0x6291('0x22')](_0x6291('0x23'),_0x3da1a6+'-'+_0x12da41+'/'+_0x183d28)[_0x6291('0x1d')](_0x4c6a3e);}return null;};}function patchUpdates(_0x4e5017){return function(_0x17f0f3){try{jsonpatch[_0x6291('0x24')](_0x17f0f3,_0x4e5017,!![]);}catch(_0xe9ab4a){return BPromise[_0x6291('0x25')](_0xe9ab4a);}return _0x17f0f3['save']();};}function saveUpdates(_0x28e253,_0x599947){return function(_0x3b504c){if(_0x3b504c){return _0x3b504c['update'](_0x28e253)['then'](function(_0x47e52d){return _0x47e52d;});}return null;};}function removeEntity(_0x521617,_0x43b4ee){return function(_0x2c9a83){if(_0x2c9a83){return _0x2c9a83[_0x6291('0x26')]()['then'](function(){_0x521617[_0x6291('0x1b')](0xcc)[_0x6291('0x1c')]();});}};}function handleEntityNotFound(_0x43b2b2,_0x1f887f){return function(_0x1dc1d1){if(!_0x1dc1d1){_0x43b2b2[_0x6291('0x27')](0x194);}return _0x1dc1d1;};}function handleError(_0x9002df,_0x2bb1c6){_0x2bb1c6=_0x2bb1c6||0x1f4;return function(_0x5a2845){logger['error'](_0x5a2845['stack']);if(_0x5a2845['name']){delete _0x5a2845[_0x6291('0x28')];}_0x9002df[_0x6291('0x1b')](_0x2bb1c6)[_0x6291('0x29')](_0x5a2845);};}exports[_0x6291('0x2a')]=function(_0x281d8a,_0x208feb){var _0x2cf8c6={},_0x5954f1={},_0x534b54={'count':0x0,'rows':[]};var _0x706487=_[_0x6291('0x2b')](db['MailTransferReport'][_0x6291('0x2c')],function(_0x10c624){return{'name':_0x10c624[_0x6291('0x2d')],'type':_0x10c624[_0x6291('0x2e')][_0x6291('0x2f')]};});_0x5954f1[_0x6291('0x30')]=_[_0x6291('0x2b')](_0x706487,_0x6291('0x28'));_0x5954f1[_0x6291('0x31')]=_[_0x6291('0x32')](_0x281d8a['query']);_0x5954f1['filters']=_['intersection'](_0x5954f1[_0x6291('0x30')],_0x5954f1[_0x6291('0x31')]);_0x2cf8c6[_0x6291('0x33')]=_[_0x6291('0x34')](_0x5954f1['model'],qs['fields'](_0x281d8a['query']['fields']));_0x2cf8c6[_0x6291('0x33')]=_0x2cf8c6[_0x6291('0x33')][_0x6291('0x35')]?_0x2cf8c6[_0x6291('0x33')]:_0x5954f1[_0x6291('0x30')];if(!_0x281d8a[_0x6291('0x31')]['hasOwnProperty']('nolimit')){_0x2cf8c6[_0x6291('0x21')]=qs[_0x6291('0x21')](_0x281d8a[_0x6291('0x31')]['limit']);_0x2cf8c6[_0x6291('0x1e')]=qs[_0x6291('0x1e')](_0x281d8a[_0x6291('0x31')][_0x6291('0x1e')]);}_0x2cf8c6['order']=qs['sort'](_0x281d8a[_0x6291('0x31')][_0x6291('0x36')]);_0x2cf8c6[_0x6291('0x37')]=qs['filters'](_['pick'](_0x281d8a['query'],_0x5954f1[_0x6291('0x38')]),_0x706487);if(_0x281d8a[_0x6291('0x31')][_0x6291('0x39')]){_0x2cf8c6['where']=_['merge'](_0x2cf8c6['where'],{'$or':_['map'](_0x706487,function(_0x1face5){if(_0x1face5[_0x6291('0x2e')]!==_0x6291('0x3a')){var _0x5cba5e={};_0x5cba5e[_0x1face5[_0x6291('0x28')]]={'$like':'%'+_0x281d8a[_0x6291('0x31')][_0x6291('0x39')]+'%'};return _0x5cba5e;}})});}_0x2cf8c6=_[_0x6291('0x3b')]({},_0x2cf8c6,_0x281d8a[_0x6291('0x3c')]);var _0x4bd8bc={'where':_0x2cf8c6[_0x6291('0x37')]};return db[_0x6291('0x3d')][_0x6291('0x20')](_0x4bd8bc)[_0x6291('0x3e')](function(_0x41f64f){_0x534b54[_0x6291('0x20')]=_0x41f64f;if(_0x281d8a['query'][_0x6291('0x3f')]){_0x2cf8c6[_0x6291('0x40')]=[{'all':!![]}];}return db[_0x6291('0x3d')][_0x6291('0x41')](_0x2cf8c6);})[_0x6291('0x3e')](function(_0x2a74f9){_0x534b54['rows']=_0x2a74f9;return _0x534b54;})[_0x6291('0x3e')](respondWithFilteredResult(_0x208feb,_0x2cf8c6))[_0x6291('0x42')](handleError(_0x208feb,null));};exports[_0x6291('0x43')]=function(_0x360a1e,_0x5d959f){var _0x49363a={'raw':!![],'where':{'id':_0x360a1e[_0x6291('0x44')]['id']}},_0x14669e={};_0x14669e[_0x6291('0x30')]=_[_0x6291('0x32')](db[_0x6291('0x3d')][_0x6291('0x2c')]);_0x14669e[_0x6291('0x31')]=_['keys'](_0x360a1e[_0x6291('0x31')]);_0x14669e['filters']=_[_0x6291('0x34')](_0x14669e[_0x6291('0x30')],_0x14669e[_0x6291('0x31')]);_0x49363a['attributes']=_[_0x6291('0x34')](_0x14669e['model'],qs[_0x6291('0x45')](_0x360a1e['query'][_0x6291('0x45')]));_0x49363a[_0x6291('0x33')]=_0x49363a[_0x6291('0x33')][_0x6291('0x35')]?_0x49363a[_0x6291('0x33')]:_0x14669e[_0x6291('0x30')];if(_0x360a1e[_0x6291('0x31')][_0x6291('0x3f')]){_0x49363a[_0x6291('0x40')]=[{'all':!![]}];}_0x49363a=_[_0x6291('0x3b')]({},_0x49363a,_0x360a1e[_0x6291('0x3c')]);return db[_0x6291('0x3d')]['find'](_0x49363a)['then'](handleEntityNotFound(_0x5d959f,null))[_0x6291('0x3e')](respondWithResult(_0x5d959f,null))[_0x6291('0x42')](handleError(_0x5d959f,null));};exports[_0x6291('0x46')]=function(_0x751bf1,_0x3c7632){return db[_0x6291('0x3d')][_0x6291('0x46')](_0x751bf1[_0x6291('0x47')],{})['then'](respondWithResult(_0x3c7632,0xc9))[_0x6291('0x42')](handleError(_0x3c7632,null));};exports[_0x6291('0x48')]=function(_0x3b6827,_0x5a6338){if(_0x3b6827['body']['id']){delete _0x3b6827['body']['id'];}return db[_0x6291('0x3d')][_0x6291('0x49')]({'where':{'id':_0x3b6827[_0x6291('0x44')]['id']}})[_0x6291('0x3e')](handleEntityNotFound(_0x5a6338,null))[_0x6291('0x3e')](saveUpdates(_0x3b6827[_0x6291('0x47')],null))[_0x6291('0x3e')](respondWithResult(_0x5a6338,null))['catch'](handleError(_0x5a6338,null));};exports[_0x6291('0x26')]=function(_0x35f01f,_0x4d32f7){return db[_0x6291('0x3d')][_0x6291('0x49')]({'where':{'id':_0x35f01f[_0x6291('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d32f7,null))[_0x6291('0x3e')](removeEntity(_0x4d32f7,null))['catch'](handleError(_0x4d32f7,null));};exports[_0x6291('0x4a')]=function(_0x10ffaa,_0x15aabe){return db[_0x6291('0x3d')][_0x6291('0x4a')]()[_0x6291('0x3e')](respondWithResult(_0x15aabe,null))['catch'](handleError(_0x15aabe,null));};
\ No newline at end of file
+var _0xd1a4=['include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','rimraf','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','save','update','end','error','stack','name','send','map','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','MailTransferReport','then','includeAll'];(function(_0x1976b7,_0xea718a){var _0x2ad878=function(_0x34412a){while(--_0x34412a){_0x1976b7['push'](_0x1976b7['shift']());}};_0x2ad878(++_0xea718a);}(_0xd1a4,0x16e));var _0x4d1a=function(_0x50d16f,_0x236757){_0x50d16f=_0x50d16f-0x0;var _0x479855=_0xd1a4[_0x50d16f];return _0x479855;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d1a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4d1a('0x1'));var BPromise=require(_0x4d1a('0x2'));var Mustache=require('mustache');var util=require(_0x4d1a('0x3'));var path=require(_0x4d1a('0x4'));var sox=require('sox');var csv=require(_0x4d1a('0x5'));var ejs=require(_0x4d1a('0x6'));var fs=require('fs');var fs_extra=require(_0x4d1a('0x7'));var _=require('lodash');var squel=require(_0x4d1a('0x8'));var crypto=require('crypto');var jsforce=require(_0x4d1a('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x4d1a('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4d1a('0xa'));var authService=require(_0x4d1a('0xb'));var qs=require(_0x4d1a('0xc'));var as=require(_0x4d1a('0xd'));var hardwareService=require(_0x4d1a('0xe'));var logger=require(_0x4d1a('0xf'))('api');var utils=require(_0x4d1a('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x4d1a('0x11'));var db=require(_0x4d1a('0x12'))['db'];function respondWithStatusCode(_0x3a37c3,_0x46c26a){_0x46c26a=_0x46c26a||0xcc;return function(_0x2a6beb){if(_0x2a6beb){return _0x3a37c3[_0x4d1a('0x13')](_0x46c26a);}return _0x3a37c3[_0x4d1a('0x14')](_0x46c26a)['end']();};}function respondWithResult(_0x1292b6,_0x36390b){_0x36390b=_0x36390b||0xc8;return function(_0x5f24b0){if(_0x5f24b0){return _0x1292b6['status'](_0x36390b)[_0x4d1a('0x15')](_0x5f24b0);}};}function respondWithFilteredResult(_0x237d87,_0x4c2726){return function(_0xddd5b1){if(_0xddd5b1){var _0x2be92e=typeof _0x4c2726[_0x4d1a('0x16')]==='undefined'&&typeof _0x4c2726[_0x4d1a('0x17')]==='undefined';var _0x2970c5=_0xddd5b1[_0x4d1a('0x18')];var _0x4c1ceb=_0x2be92e?0x0:_0x4c2726['offset'];var _0x5b32a3=_0x2be92e?_0xddd5b1[_0x4d1a('0x18')]:_0x4c2726[_0x4d1a('0x16')]+_0x4c2726[_0x4d1a('0x17')];var _0x278a95;if(_0x5b32a3>=_0x2970c5){_0x5b32a3=_0x2970c5;_0x278a95=0xc8;}else{_0x278a95=0xce;}_0x237d87[_0x4d1a('0x14')](_0x278a95);return _0x237d87[_0x4d1a('0x19')](_0x4d1a('0x1a'),_0x4c1ceb+'-'+_0x5b32a3+'/'+_0x2970c5)[_0x4d1a('0x15')](_0xddd5b1);}return null;};}function patchUpdates(_0x59375f){return function(_0x6d84b7){try{jsonpatch[_0x4d1a('0x1b')](_0x6d84b7,_0x59375f,!![]);}catch(_0x2f6158){return BPromise['reject'](_0x2f6158);}return _0x6d84b7[_0x4d1a('0x1c')]();};}function saveUpdates(_0x55f589,_0x1b7334){return function(_0x516e80){if(_0x516e80){return _0x516e80[_0x4d1a('0x1d')](_0x55f589)['then'](function(_0x53e68c){return _0x53e68c;});}return null;};}function removeEntity(_0x19c769,_0x4c8240){return function(_0xe1bd2b){if(_0xe1bd2b){return _0xe1bd2b['destroy']()['then'](function(){_0x19c769[_0x4d1a('0x14')](0xcc)[_0x4d1a('0x1e')]();});}};}function handleEntityNotFound(_0x5169dd,_0x4c1887){return function(_0x2ff62e){if(!_0x2ff62e){_0x5169dd[_0x4d1a('0x13')](0x194);}return _0x2ff62e;};}function handleError(_0x98c5f0,_0x30fbdb){_0x30fbdb=_0x30fbdb||0x1f4;return function(_0x2b63c1){logger[_0x4d1a('0x1f')](_0x2b63c1[_0x4d1a('0x20')]);if(_0x2b63c1[_0x4d1a('0x21')]){delete _0x2b63c1['name'];}_0x98c5f0[_0x4d1a('0x14')](_0x30fbdb)[_0x4d1a('0x22')](_0x2b63c1);};}exports['index']=function(_0x9e9c3a,_0x4c8172){var _0x2e310a={},_0x65e141={},_0xd7afe7={'count':0x0,'rows':[]};var _0x3856c2=_[_0x4d1a('0x23')](db['MailTransferReport']['rawAttributes'],function(_0x2a7ec2){return{'name':_0x2a7ec2[_0x4d1a('0x24')],'type':_0x2a7ec2[_0x4d1a('0x25')][_0x4d1a('0x26')]};});_0x65e141[_0x4d1a('0x27')]=_[_0x4d1a('0x23')](_0x3856c2,_0x4d1a('0x21'));_0x65e141['query']=_[_0x4d1a('0x28')](_0x9e9c3a[_0x4d1a('0x29')]);_0x65e141['filters']=_[_0x4d1a('0x2a')](_0x65e141[_0x4d1a('0x27')],_0x65e141[_0x4d1a('0x29')]);_0x2e310a['attributes']=_[_0x4d1a('0x2a')](_0x65e141[_0x4d1a('0x27')],qs[_0x4d1a('0x2b')](_0x9e9c3a[_0x4d1a('0x29')]['fields']));_0x2e310a[_0x4d1a('0x2c')]=_0x2e310a['attributes'][_0x4d1a('0x2d')]?_0x2e310a['attributes']:_0x65e141[_0x4d1a('0x27')];if(!_0x9e9c3a[_0x4d1a('0x29')][_0x4d1a('0x2e')](_0x4d1a('0x2f'))){_0x2e310a['limit']=qs[_0x4d1a('0x17')](_0x9e9c3a[_0x4d1a('0x29')][_0x4d1a('0x17')]);_0x2e310a[_0x4d1a('0x16')]=qs[_0x4d1a('0x16')](_0x9e9c3a['query'][_0x4d1a('0x16')]);}_0x2e310a[_0x4d1a('0x30')]=qs[_0x4d1a('0x31')](_0x9e9c3a[_0x4d1a('0x29')][_0x4d1a('0x31')]);_0x2e310a[_0x4d1a('0x32')]=qs[_0x4d1a('0x33')](_[_0x4d1a('0x34')](_0x9e9c3a['query'],_0x65e141[_0x4d1a('0x33')]),_0x3856c2);if(_0x9e9c3a[_0x4d1a('0x29')][_0x4d1a('0x35')]){_0x2e310a['where']=_[_0x4d1a('0x36')](_0x2e310a[_0x4d1a('0x32')],{'$or':_['map'](_0x3856c2,function(_0x2ea2c9){if(_0x2ea2c9['type']!==_0x4d1a('0x37')){var _0x252c51={};_0x252c51[_0x2ea2c9['name']]={'$like':'%'+_0x9e9c3a[_0x4d1a('0x29')][_0x4d1a('0x35')]+'%'};return _0x252c51;}})});}_0x2e310a=_[_0x4d1a('0x36')]({},_0x2e310a,_0x9e9c3a[_0x4d1a('0x38')]);var _0x1cdbb4={'where':_0x2e310a[_0x4d1a('0x32')]};return db[_0x4d1a('0x39')][_0x4d1a('0x18')](_0x1cdbb4)[_0x4d1a('0x3a')](function(_0x3a7ad3){_0xd7afe7['count']=_0x3a7ad3;if(_0x9e9c3a['query'][_0x4d1a('0x3b')]){_0x2e310a[_0x4d1a('0x3c')]=[{'all':!![]}];}return db[_0x4d1a('0x39')][_0x4d1a('0x3d')](_0x2e310a);})[_0x4d1a('0x3a')](function(_0x512009){_0xd7afe7[_0x4d1a('0x3e')]=_0x512009;return _0xd7afe7;})[_0x4d1a('0x3a')](respondWithFilteredResult(_0x4c8172,_0x2e310a))[_0x4d1a('0x3f')](handleError(_0x4c8172,null));};exports[_0x4d1a('0x40')]=function(_0x466695,_0xec8da1){var _0x5b8ec9={'raw':!![],'where':{'id':_0x466695[_0x4d1a('0x41')]['id']}},_0x22f2c5={};_0x22f2c5['model']=_['keys'](db[_0x4d1a('0x39')][_0x4d1a('0x42')]);_0x22f2c5[_0x4d1a('0x29')]=_['keys'](_0x466695[_0x4d1a('0x29')]);_0x22f2c5[_0x4d1a('0x33')]=_['intersection'](_0x22f2c5[_0x4d1a('0x27')],_0x22f2c5[_0x4d1a('0x29')]);_0x5b8ec9[_0x4d1a('0x2c')]=_[_0x4d1a('0x2a')](_0x22f2c5[_0x4d1a('0x27')],qs[_0x4d1a('0x2b')](_0x466695[_0x4d1a('0x29')][_0x4d1a('0x2b')]));_0x5b8ec9[_0x4d1a('0x2c')]=_0x5b8ec9[_0x4d1a('0x2c')][_0x4d1a('0x2d')]?_0x5b8ec9[_0x4d1a('0x2c')]:_0x22f2c5[_0x4d1a('0x27')];if(_0x466695[_0x4d1a('0x29')]['includeAll']){_0x5b8ec9[_0x4d1a('0x3c')]=[{'all':!![]}];}_0x5b8ec9=_['merge']({},_0x5b8ec9,_0x466695[_0x4d1a('0x38')]);return db[_0x4d1a('0x39')][_0x4d1a('0x43')](_0x5b8ec9)[_0x4d1a('0x3a')](handleEntityNotFound(_0xec8da1,null))[_0x4d1a('0x3a')](respondWithResult(_0xec8da1,null))[_0x4d1a('0x3f')](handleError(_0xec8da1,null));};exports[_0x4d1a('0x44')]=function(_0x375152,_0x5b2ea0){return db[_0x4d1a('0x39')][_0x4d1a('0x44')](_0x375152[_0x4d1a('0x45')],{})[_0x4d1a('0x3a')](respondWithResult(_0x5b2ea0,0xc9))[_0x4d1a('0x3f')](handleError(_0x5b2ea0,null));};exports[_0x4d1a('0x1d')]=function(_0x18b843,_0x44b241){if(_0x18b843[_0x4d1a('0x45')]['id']){delete _0x18b843[_0x4d1a('0x45')]['id'];}return db[_0x4d1a('0x39')][_0x4d1a('0x43')]({'where':{'id':_0x18b843[_0x4d1a('0x41')]['id']}})['then'](handleEntityNotFound(_0x44b241,null))[_0x4d1a('0x3a')](saveUpdates(_0x18b843[_0x4d1a('0x45')],null))[_0x4d1a('0x3a')](respondWithResult(_0x44b241,null))[_0x4d1a('0x3f')](handleError(_0x44b241,null));};exports['destroy']=function(_0x1591e8,_0x3691c4){return db[_0x4d1a('0x39')][_0x4d1a('0x43')]({'where':{'id':_0x1591e8[_0x4d1a('0x41')]['id']}})[_0x4d1a('0x3a')](handleEntityNotFound(_0x3691c4,null))['then'](removeEntity(_0x3691c4,null))[_0x4d1a('0x3f')](handleError(_0x3691c4,null));};exports[_0x4d1a('0x46')]=function(_0x4fa6fd,_0x588a11){return db[_0x4d1a('0x39')][_0x4d1a('0x46')]()[_0x4d1a('0x3a')](respondWithResult(_0x588a11,null))[_0x4d1a('0x3f')](handleError(_0x588a11,null));};
\ No newline at end of file
index 4e63647..e73d4c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fb0=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash'];(function(_0x2d0914,_0x1ad927){var _0x4a1889=function(_0xbbf058){while(--_0xbbf058){_0x2d0914['push'](_0x2d0914['shift']());}};_0x4a1889(++_0x1ad927);}(_0x7fb0,0x99));var _0x07fb=function(_0x1971fb,_0x360683){_0x1971fb=_0x1971fb-0x0;var _0x10992f=_0x7fb0[_0x1971fb];return _0x10992f;};'use strict';var _=require(_0x07fb('0x0'));var util=require(_0x07fb('0x1'));var logger=require(_0x07fb('0x2'))(_0x07fb('0x3'));var moment=require(_0x07fb('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x07fb('0x5'));var rimraf=require(_0x07fb('0x6'));var config=require(_0x07fb('0x7'));var attributes=require(_0x07fb('0x8'));module[_0x07fb('0x9')]=function(_0xa457b0,_0x5f46f1){return _0xa457b0[_0x07fb('0xa')](_0x07fb('0xb'),attributes,{'tableName':_0x07fb('0xc'),'paranoid':![],'indexes':[{'name':_0x07fb('0xd'),'fields':[_0x07fb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7aaa=['request-promise','path','rimraf','./mailTransferReport.attributes','exports','define','MailTransferReport','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x1fdb40,_0x51351c){var _0x281f93=function(_0x35eebe){while(--_0x35eebe){_0x1fdb40['push'](_0x1fdb40['shift']());}};_0x281f93(++_0x51351c);}(_0x7aaa,0x164));var _0xa7aa=function(_0x381dbb,_0x4a1419){_0x381dbb=_0x381dbb-0x0;var _0x301378=_0x7aaa[_0x381dbb];return _0x301378;};'use strict';var _=require(_0xa7aa('0x0'));var util=require('util');var logger=require(_0xa7aa('0x1'))(_0xa7aa('0x2'));var moment=require(_0xa7aa('0x3'));var BPromise=require('bluebird');var rp=require(_0xa7aa('0x4'));var fs=require('fs');var path=require(_0xa7aa('0x5'));var rimraf=require(_0xa7aa('0x6'));var config=require('../../config/environment');var attributes=require(_0xa7aa('0x7'));module[_0xa7aa('0x8')]=function(_0x3eaa6a,_0x166a17){return _0x3eaa6a[_0xa7aa('0x9')](_0xa7aa('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0xa7aa('0xb'),'fields':[_0xa7aa('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index c3b1f21..a28d0a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef1c=['info','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','MailTransferReport,\x20%s,\x20%s','message','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x40292e,_0xaa2a7b){var _0x1ed986=function(_0x10dbef){while(--_0x10dbef){_0x40292e['push'](_0x40292e['shift']());}};_0x1ed986(++_0xaa2a7b);}(_0xef1c,0x113));var _0xcef1=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xef1c[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xcef1('0x0'));var BPromise=require('bluebird');var rs=require(_0xcef1('0x1'));var fs=require('fs');var Redis=require(_0xcef1('0x2'));var db=require(_0xcef1('0x3'))['db'];var utils=require(_0xcef1('0x4'));var logger=require(_0xcef1('0x5'))(_0xcef1('0x6'));var config=require(_0xcef1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcef1('0x8')][_0xcef1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x42d2e8,_0x22b2f8,_0x1b32c9){return new BPromise(function(_0x3d4305,_0x12d108){return client[_0xcef1('0xa')](_0x42d2e8,_0x1b32c9)['then'](function(_0x3d18dc){logger[_0xcef1('0xb')]('MailTransferReport,\x20%s,\x20%s',_0x22b2f8,_0xcef1('0xc'));logger[_0xcef1('0xd')](_0xcef1('0xe'),_0x22b2f8,'request\x20sent',JSON[_0xcef1('0xf')](_0x3d18dc));if(_0x3d18dc['error']){if(_0x3d18dc['error'][_0xcef1('0x10')]===0x1f4){logger[_0xcef1('0x11')](_0xcef1('0x12'),_0x22b2f8,_0x3d18dc['error'][_0xcef1('0x13')]);return _0x12d108(_0x3d18dc['error'][_0xcef1('0x13')]);}logger[_0xcef1('0x11')](_0xcef1('0x12'),_0x22b2f8,_0x3d18dc[_0xcef1('0x11')][_0xcef1('0x13')]);return _0x3d4305(_0x3d18dc[_0xcef1('0x11')][_0xcef1('0x13')]);}else{logger['info'](_0xcef1('0x12'),_0x22b2f8,'request\x20sent');_0x3d4305(_0x3d18dc[_0xcef1('0x14')][_0xcef1('0x13')]);}})[_0xcef1('0x15')](function(_0x3ff7bf){logger[_0xcef1('0x11')](_0xcef1('0x12'),_0x22b2f8,_0x3ff7bf);_0x12d108(_0x3ff7bf);});});}
\ No newline at end of file
+var _0x6eb9=['request','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x40119b,_0x574bdf){var _0x5c2688=function(_0x5e75bd){while(--_0x5e75bd){_0x40119b['push'](_0x40119b['shift']());}};_0x5c2688(++_0x574bdf);}(_0x6eb9,0xaa));var _0x96eb=function(_0xdbc5d,_0x2f34a0){_0xdbc5d=_0xdbc5d-0x0;var _0x18717a=_0x6eb9[_0xdbc5d];return _0x18717a;};'use strict';var _=require('lodash');var util=require(_0x96eb('0x0'));var moment=require(_0x96eb('0x1'));var BPromise=require(_0x96eb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96eb('0x3'));var db=require(_0x96eb('0x4'))['db'];var utils=require(_0x96eb('0x5'));var logger=require(_0x96eb('0x6'))(_0x96eb('0x7'));var config=require('../../config/environment');var jayson=require(_0x96eb('0x8'));var client=jayson[_0x96eb('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c527f,_0x3bb97e,_0x3dd5c8){return new BPromise(function(_0x3fcbc3,_0x46c91c){return client[_0x96eb('0xa')](_0x5c527f,_0x3dd5c8)['then'](function(_0x1183e6){logger[_0x96eb('0xb')](_0x96eb('0xc'),_0x3bb97e,_0x96eb('0xd'));logger[_0x96eb('0xe')](_0x96eb('0xf'),_0x3bb97e,'request\x20sent',JSON[_0x96eb('0x10')](_0x1183e6));if(_0x1183e6['error']){if(_0x1183e6[_0x96eb('0x11')]['code']===0x1f4){logger[_0x96eb('0x11')](_0x96eb('0xc'),_0x3bb97e,_0x1183e6[_0x96eb('0x11')]['message']);return _0x46c91c(_0x1183e6[_0x96eb('0x11')][_0x96eb('0x12')]);}logger['error'](_0x96eb('0xc'),_0x3bb97e,_0x1183e6[_0x96eb('0x11')][_0x96eb('0x12')]);return _0x3fcbc3(_0x1183e6[_0x96eb('0x11')][_0x96eb('0x12')]);}else{logger[_0x96eb('0xb')](_0x96eb('0xc'),_0x3bb97e,'request\x20sent');_0x3fcbc3(_0x1183e6['result']['message']);}})[_0x96eb('0x13')](function(_0x536eea){logger[_0x96eb('0x11')](_0x96eb('0xc'),_0x3bb97e,_0x536eea);_0x46c91c(_0x536eea);});});}
\ No newline at end of file
index 7fd4ce7..56892bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb0=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./memberReport.controller','get','describe','/:id','isAuthenticated','put','update','delete','destroy','exports','multer','util'];(function(_0x1559a5,_0x41924e){var _0x17a783=function(_0x152c63){while(--_0x152c63){_0x1559a5['push'](_0x1559a5['shift']());}};_0x17a783(++_0x41924e);}(_0x2eb0,0x96));var _0x02eb=function(_0x2a3561,_0x3c0118){_0x2a3561=_0x2a3561-0x0;var _0x50d4d7=_0x2eb0[_0x2a3561];return _0x50d4d7;};'use strict';var multer=require(_0x02eb('0x0'));var util=require(_0x02eb('0x1'));var path=require(_0x02eb('0x2'));var timeout=require(_0x02eb('0x3'));var express=require(_0x02eb('0x4'));var router=express[_0x02eb('0x5')]();var fs_extra=require(_0x02eb('0x6'));var auth=require(_0x02eb('0x7'));var interaction=require(_0x02eb('0x8'));var config=require('../../config/environment');var controller=require(_0x02eb('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x02eb('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x02eb('0xb')]);router[_0x02eb('0xa')](_0x02eb('0xc'),auth[_0x02eb('0xd')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x02eb('0xe')](_0x02eb('0xc'),auth[_0x02eb('0xd')](),controller[_0x02eb('0xf')]);router[_0x02eb('0x10')](_0x02eb('0xc'),auth['isAuthenticated'](),controller[_0x02eb('0x11')]);module[_0x02eb('0x12')]=router;
\ No newline at end of file
+var _0x22d0=['../../components/auth/service','../../config/environment','./memberReport.controller','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','exports','multer','path','connect-timeout','Router','fs-extra'];(function(_0x4a8e35,_0x1613b5){var _0x2c38d9=function(_0x9b189c){while(--_0x9b189c){_0x4a8e35['push'](_0x4a8e35['shift']());}};_0x2c38d9(++_0x1613b5);}(_0x22d0,0x160));var _0x022d=function(_0x4fe19c,_0x45d0fe){_0x4fe19c=_0x4fe19c-0x0;var _0x952ac7=_0x22d0[_0x4fe19c];return _0x952ac7;};'use strict';var multer=require(_0x022d('0x0'));var util=require('util');var path=require(_0x022d('0x1'));var timeout=require(_0x022d('0x2'));var express=require('express');var router=express[_0x022d('0x3')]();var fs_extra=require(_0x022d('0x4'));var auth=require(_0x022d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x022d('0x6'));var controller=require(_0x022d('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x022d('0x8')]);router[_0x022d('0x9')](_0x022d('0xa'),auth[_0x022d('0xb')](),controller[_0x022d('0xc')]);router[_0x022d('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x022d('0xd')]);router[_0x022d('0xe')]('/',auth[_0x022d('0xb')](),controller[_0x022d('0xf')]);router[_0x022d('0x10')](_0x022d('0x11'),auth[_0x022d('0xb')](),controller[_0x022d('0x12')]);router[_0x022d('0x13')](_0x022d('0x11'),auth[_0x022d('0xb')](),controller['destroy']);module[_0x022d('0x14')]=router;
\ No newline at end of file
index 3fea57b..8d59073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf84e=['talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','moment','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','seconds','setDataValue','exitAt'];(function(_0x1cc217,_0x57b413){var _0x203be2=function(_0x2848ad){while(--_0x2848ad){_0x1cc217['push'](_0x1cc217['shift']());}};_0x203be2(++_0x57b413);}(_0xf84e,0xb8));var _0xef84=function(_0x4560f3,_0x517d6e){_0x4560f3=_0x4560f3-0x0;var _0x531125=_0xf84e[_0x4560f3];return _0x531125;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xef84('0x0'));module[_0xef84('0x1')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xef84('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xef84('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xef84('0x3')},'duration':{'type':Sequelize[_0xef84('0x4')]},'enterAt':{'type':Sequelize[_0xef84('0x5')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x210019){var _0x1ac283=moment(_0x210019);var _0x3c4c1b=moment(this[_0xef84('0x6')](_0xef84('0x7')));var _0x4624e2=_0x1ac283['diff'](_0x3c4c1b,_0xef84('0x8'));this[_0xef84('0x9')](_0xef84('0xa'),_0x210019);this[_0xef84('0x9')]('duration',_0x4624e2>=0x0?_0x4624e2:null);}},'data1':{'type':Sequelize[_0xef84('0x2')],'comment':_0xef84('0xb')},'data2':{'type':Sequelize[_0xef84('0x2')],'comment':_0xef84('0xc')},'data3':{'type':Sequelize['STRING'],'comment':_0xef84('0xd')},'data4':{'type':Sequelize[_0xef84('0x2')],'comment':_0xef84('0xe')},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xef84('0x2')]},'internal':{'type':Sequelize[_0xef84('0x4')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x356c=['sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]'];(function(_0x549c39,_0x1f88de){var _0xb88b84=function(_0x1dee91){while(--_0x1dee91){_0x549c39['push'](_0x549c39['shift']());}};_0xb88b84(++_0x1f88de);}(_0x356c,0x143));var _0xc356=function(_0x53b064,_0x26b63a){_0x53b064=_0x53b064-0x0;var _0x174482=_0x356c[_0x53b064];return _0x174482;};'use strict';var Sequelize=require(_0xc356('0x0'));var moment=require(_0xc356('0x1'));module['exports']={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xc356('0x2')]},'interface':{'type':Sequelize[_0xc356('0x2')]},'type':{'type':Sequelize[_0xc356('0x2')],'defaultValue':_0xc356('0x3'),'comment':_0xc356('0x4')},'duration':{'type':Sequelize[_0xc356('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x539ce8){var _0x5ba6d5=moment(_0x539ce8);var _0xbd6af4=moment(this[_0xc356('0x6')](_0xc356('0x7')));var _0x235b9e=_0x5ba6d5[_0xc356('0x8')](_0xbd6af4,_0xc356('0x9'));this[_0xc356('0xa')](_0xc356('0xb'),_0x539ce8);this[_0xc356('0xa')](_0xc356('0xc'),_0x235b9e>=0x0?_0x235b9e:null);}},'data1':{'type':Sequelize['STRING'],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0xc356('0x2')],'comment':_0xc356('0xd')},'data3':{'type':Sequelize[_0xc356('0x2')],'comment':_0xc356('0xe')},'data4':{'type':Sequelize[_0xc356('0x2')],'comment':_0xc356('0xf')},'data5':{'type':Sequelize[_0xc356('0x2')],'comment':_0xc356('0x10')},'role':{'type':Sequelize[_0xc356('0x2')]},'internal':{'type':Sequelize[_0xc356('0x5')]},'uniqueid':{'type':Sequelize[_0xc356('0x2')]}};
\ No newline at end of file
index 4074c6b..139fdb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x271c06,_0x5c144){var _0x418cc4=function(_0x2e5d6e){while(--_0x2e5d6e){_0x271c06['push'](_0x271c06['shift']());}};_0x418cc4(++_0x5c144);}(_0x7217,0x19e));var _0x7721=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x7217[_0x4dbaad];return _0x226c72;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
+var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x55ca,0x126));var _0xa55c=function(_0x3d1996,_0x1f08f0){_0x3d1996=_0x3d1996-0x0;var _0x550afd=_0x55ca[_0x3d1996];return _0x550afd;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x28')](_0x201941,'name');_0x22f6b6[_0xa55c('0x2d')]=_[_0xa55c('0x2e')](_0x906caa[_0xa55c('0x2d')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2d')]);_0x1377b0[_0xa55c('0x31')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x906caa['query']['fields']));_0x1377b0[_0xa55c('0x31')]=_0x1377b0[_0xa55c('0x31')]['length']?_0x1377b0[_0xa55c('0x31')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2d')][_0xa55c('0x33')](_0xa55c('0x34'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa[_0xa55c('0x2d')][_0xa55c('0x1c')]);_0x1377b0['offset']=qs['offset'](_0x906caa['query'][_0xa55c('0x1a')]);}_0x1377b0[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_0x906caa['query'][_0xa55c('0x36')]);_0x1377b0['where']=qs[_0xa55c('0x2f')](_['pick'](_0x906caa[_0xa55c('0x2d')],_0x22f6b6[_0xa55c('0x2f')]),_0x201941);if(_0x906caa[_0xa55c('0x2d')]['filter']){_0x1377b0[_0xa55c('0x37')]=_[_0xa55c('0x38')](_0x1377b0['where'],{'$or':_[_0xa55c('0x28')](_0x201941,function(_0x194e78){if(_0x194e78['type']!=='VIRTUAL'){var _0x235f6b={};_0x235f6b[_0x194e78['name']]={'$like':'%'+_0x906caa[_0xa55c('0x2d')][_0xa55c('0x39')]+'%'};return _0x235f6b;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x5e50b6={'where':_0x1377b0['where']};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x5e50b6)[_0xa55c('0x20')](function(_0x99c4f8){_0x1b8388[_0xa55c('0x1d')]=_0x99c4f8;if(_0x906caa['query'][_0xa55c('0x3a')]){_0x1377b0[_0xa55c('0x3b')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3c')](_0x1377b0);})[_0xa55c('0x20')](function(_0x23cef5){_0x1b8388['rows']=_0x23cef5;return _0x1b8388;})[_0xa55c('0x20')](respondWithFilteredResult(_0x5d940d,_0x1377b0))['catch'](handleError(_0x5d940d,null));};exports['show']=function(_0x404e7f,_0x1f63d8){var _0x496920={'raw':!![],'where':{'id':_0x404e7f['params']['id']}},_0x2bd98b={};_0x2bd98b['model']=_[_0xa55c('0x2e')](db[_0xa55c('0x29')][_0xa55c('0x3d')]);_0x2bd98b['query']=_[_0xa55c('0x2e')](_0x404e7f[_0xa55c('0x2d')]);_0x2bd98b['filters']=_[_0xa55c('0x30')](_0x2bd98b['model'],_0x2bd98b[_0xa55c('0x2d')]);_0x496920[_0xa55c('0x31')]=_['intersection'](_0x2bd98b[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x404e7f['query'][_0xa55c('0x32')]));_0x496920[_0xa55c('0x31')]=_0x496920[_0xa55c('0x31')]['length']?_0x496920[_0xa55c('0x31')]:_0x2bd98b['model'];if(_0x404e7f[_0xa55c('0x2d')][_0xa55c('0x3a')]){_0x496920[_0xa55c('0x3b')]=[{'all':!![]}];}_0x496920=_['merge']({},_0x496920,_0x404e7f[_0xa55c('0x3e')]);return db[_0xa55c('0x29')]['find'](_0x496920)[_0xa55c('0x20')](handleEntityNotFound(_0x1f63d8,null))[_0xa55c('0x20')](respondWithResult(_0x1f63d8,null))['catch'](handleError(_0x1f63d8,null));};exports[_0xa55c('0x3f')]=function(_0xd3fe78,_0x52f9a7){return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0xd3fe78[_0xa55c('0x40')],{})[_0xa55c('0x20')](respondWithResult(_0x52f9a7,0xc9))['catch'](handleError(_0x52f9a7,null));};exports[_0xa55c('0x1f')]=function(_0x58a7ea,_0x2157d6){if(_0x58a7ea[_0xa55c('0x40')]['id']){delete _0x58a7ea[_0xa55c('0x40')]['id'];}return db['MemberReport'][_0xa55c('0x41')]({'where':{'id':_0x58a7ea[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x2157d6,null))[_0xa55c('0x20')](saveUpdates(_0x58a7ea[_0xa55c('0x40')],null))[_0xa55c('0x20')](respondWithResult(_0x2157d6,null))[_0xa55c('0x43')](handleError(_0x2157d6,null));};exports[_0xa55c('0x44')]=function(_0x1c84d9,_0x1e1293){return db[_0xa55c('0x29')][_0xa55c('0x41')]({'where':{'id':_0x1c84d9[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e1293,null))[_0xa55c('0x20')](removeEntity(_0x1e1293,null))[_0xa55c('0x43')](handleError(_0x1e1293,null));};exports[_0xa55c('0x45')]=function(_0x4f73b6,_0x4c3095){return db[_0xa55c('0x29')]['describe']()[_0xa55c('0x20')](respondWithResult(_0x4c3095,null))['catch'](handleError(_0x4c3095,null));};
\ No newline at end of file
index 593c441..9ad3465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0453=['request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','membername_interface','membername','interface','util','../../config/logger','api','bluebird'];(function(_0x436a9b,_0xfe3d6f){var _0x2aecd2=function(_0x28c7e8){while(--_0x28c7e8){_0x436a9b['push'](_0x436a9b['shift']());}};_0x2aecd2(++_0xfe3d6f);}(_0x0453,0x155));var _0x3045=function(_0x37a262,_0x1c18e3){_0x37a262=_0x37a262-0x0;var _0x1848b0=_0x0453[_0x37a262];return _0x1848b0;};'use strict';var _=require('lodash');var util=require(_0x3045('0x0'));var logger=require(_0x3045('0x1'))(_0x3045('0x2'));var moment=require('moment');var BPromise=require(_0x3045('0x3'));var rp=require(_0x3045('0x4'));var fs=require('fs');var path=require(_0x3045('0x5'));var rimraf=require(_0x3045('0x6'));var config=require(_0x3045('0x7'));var attributes=require(_0x3045('0x8'));module[_0x3045('0x9')]=function(_0x5b8ea1,_0xe209fb){return _0x5b8ea1[_0x3045('0xa')](_0x3045('0xb'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x3045('0xc'),'fields':[_0x3045('0xd'),_0x3045('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5e61=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','define','MemberReport','membername_interface','interface'];(function(_0xbac4d6,_0x2ad886){var _0x490136=function(_0x1dc185){while(--_0x1dc185){_0xbac4d6['push'](_0xbac4d6['shift']());}};_0x490136(++_0x2ad886);}(_0x5e61,0x1e0));var _0x15e6=function(_0x3fe5f5,_0x374689){_0x3fe5f5=_0x3fe5f5-0x0;var _0x2d9c4e=_0x5e61[_0x3fe5f5];return _0x2d9c4e;};'use strict';var _=require(_0x15e6('0x0'));var util=require(_0x15e6('0x1'));var logger=require(_0x15e6('0x2'))(_0x15e6('0x3'));var moment=require(_0x15e6('0x4'));var BPromise=require(_0x15e6('0x5'));var rp=require(_0x15e6('0x6'));var fs=require('fs');var path=require(_0x15e6('0x7'));var rimraf=require(_0x15e6('0x8'));var config=require(_0x15e6('0x9'));var attributes=require(_0x15e6('0xa'));module['exports']=function(_0x5daa6a,_0x382aff){return _0x5daa6a[_0x15e6('0xb')](_0x15e6('0xc'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x15e6('0xd'),'fields':['membername',_0x15e6('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 5321cdc..ca900ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc319=['http','request','then','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','MemberReport,\x20%s,\x20%s','result','catch','GetMemberReport','findAll','options','where','attributes','limit','map','include','model','CreateMemberReport','MemberReport','create','body','raw','UpdateMemberReport','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x334fea,_0x1f1e18){var _0x3c5829=function(_0x4fd6ac){while(--_0x4fd6ac){_0x334fea['push'](_0x334fea['shift']());}};_0x3c5829(++_0x1f1e18);}(_0xc319,0x12e));var _0x9c31=function(_0x5045a1,_0x569801){_0x5045a1=_0x5045a1-0x0;var _0x485a0e=_0xc319[_0x5045a1];return _0x485a0e;};'use strict';var _=require(_0x9c31('0x0'));var util=require(_0x9c31('0x1'));var moment=require(_0x9c31('0x2'));var BPromise=require('bluebird');var rs=require(_0x9c31('0x3'));var fs=require('fs');var Redis=require(_0x9c31('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9c31('0x5'));var logger=require(_0x9c31('0x6'))(_0x9c31('0x7'));var config=require(_0x9c31('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9c31('0x9')][_0x9c31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x348e09,_0x2bdff2,_0x3aa031){return new BPromise(function(_0x573261,_0x3b99f9){return client[_0x9c31('0xb')](_0x348e09,_0x3aa031)[_0x9c31('0xc')](function(_0x4ab864){logger['info']('MemberReport,\x20%s,\x20%s',_0x2bdff2,_0x9c31('0xd'));logger[_0x9c31('0xe')](_0x9c31('0xf'),_0x2bdff2,_0x9c31('0xd'),JSON[_0x9c31('0x10')](_0x4ab864));if(_0x4ab864['error']){if(_0x4ab864[_0x9c31('0x11')][_0x9c31('0x12')]===0x1f4){logger[_0x9c31('0x11')]('MemberReport,\x20%s,\x20%s',_0x2bdff2,_0x4ab864[_0x9c31('0x11')][_0x9c31('0x13')]);return _0x3b99f9(_0x4ab864[_0x9c31('0x11')][_0x9c31('0x13')]);}logger[_0x9c31('0x11')]('MemberReport,\x20%s,\x20%s',_0x2bdff2,_0x4ab864['error']['message']);return _0x573261(_0x4ab864['error']['message']);}else{logger[_0x9c31('0x14')](_0x9c31('0x15'),_0x2bdff2,'request\x20sent');_0x573261(_0x4ab864[_0x9c31('0x16')][_0x9c31('0x13')]);}})[_0x9c31('0x17')](function(_0xb39f1e){logger[_0x9c31('0x11')]('MemberReport,\x20%s,\x20%s',_0x2bdff2,_0xb39f1e);_0x3b99f9(_0xb39f1e);});});}exports[_0x9c31('0x18')]=function(_0x47b5a7){var _0xf3a426=this;return new Promise(function(_0x4aacad,_0xeeadd3){return db['MemberReport'][_0x9c31('0x19')]({'raw':_0x47b5a7[_0x9c31('0x1a')]?_0x47b5a7[_0x9c31('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x47b5a7[_0x9c31('0x1a')]?_0x47b5a7[_0x9c31('0x1a')][_0x9c31('0x1b')]||null:null,'attributes':_0x47b5a7['options']?_0x47b5a7[_0x9c31('0x1a')][_0x9c31('0x1c')]||null:null,'limit':_0x47b5a7['options']?_0x47b5a7[_0x9c31('0x1a')][_0x9c31('0x1d')]||null:null,'include':_0x47b5a7[_0x9c31('0x1a')]?_0x47b5a7[_0x9c31('0x1a')]['include']?_[_0x9c31('0x1e')](_0x47b5a7[_0x9c31('0x1a')][_0x9c31('0x1f')],function(_0x438a05){return{'model':db[_0x438a05[_0x9c31('0x20')]],'as':_0x438a05['as'],'attributes':_0x438a05[_0x9c31('0x1c')],'include':_0x438a05[_0x9c31('0x1f')]?_['map'](_0x438a05[_0x9c31('0x1f')],function(_0x1b9600){return{'model':db[_0x1b9600[_0x9c31('0x20')]],'as':_0x1b9600['as'],'attributes':_0x1b9600[_0x9c31('0x1c')],'include':_0x1b9600[_0x9c31('0x1f')]?_[_0x9c31('0x1e')](_0x1b9600['include'],function(_0x183916){return{'model':db[_0x183916['model']],'as':_0x183916['as'],'attributes':_0x183916['attributes']};}):[]};}):[]};}):[]:[]})[_0x9c31('0xc')](function(_0x6f4b92){logger[_0x9c31('0x14')](_0x9c31('0x18'),_0x47b5a7);logger['debug'](_0x9c31('0x18'),_0x47b5a7,JSON[_0x9c31('0x10')](_0x6f4b92));_0x4aacad(_0x6f4b92);})[_0x9c31('0x17')](function(_0x2f7208){logger[_0x9c31('0x11')](_0x9c31('0x18'),_0x2f7208[_0x9c31('0x13')],_0x47b5a7);_0xeeadd3(_0xf3a426['error'](0x1f4,_0x2f7208[_0x9c31('0x13')]));});});};exports[_0x9c31('0x21')]=function(_0x1df7b7){var _0x44a8b0=this;return new Promise(function(_0x323386,_0x3ac1e5){return db[_0x9c31('0x22')][_0x9c31('0x23')](_0x1df7b7[_0x9c31('0x24')],{'raw':_0x1df7b7[_0x9c31('0x1a')]?_0x1df7b7[_0x9c31('0x1a')][_0x9c31('0x25')]===undefined?!![]:![]:!![]})[_0x9c31('0xc')](function(_0x54a294){logger['info'](_0x9c31('0x21'),_0x1df7b7);logger[_0x9c31('0xe')](_0x9c31('0x21'),_0x1df7b7,JSON[_0x9c31('0x10')](_0x54a294));_0x323386(_0x54a294);})['catch'](function(_0x135fcb){logger[_0x9c31('0x11')](_0x9c31('0x21'),_0x135fcb[_0x9c31('0x13')],_0x1df7b7);_0x3ac1e5(_0x44a8b0[_0x9c31('0x11')](0x1f4,_0x135fcb[_0x9c31('0x13')]));});});};exports[_0x9c31('0x26')]=function(_0x474829){var _0x51992d=this;return new Promise(function(_0xf4aa5d,_0x1181a0){return db[_0x9c31('0x22')]['update'](_0x474829[_0x9c31('0x24')],{'raw':_0x474829[_0x9c31('0x1a')]?_0x474829[_0x9c31('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x474829[_0x9c31('0x1a')]?_0x474829[_0x9c31('0x1a')]['where']||null:null,'attributes':_0x474829['options']?_0x474829[_0x9c31('0x1a')][_0x9c31('0x1c')]||null:null,'limit':_0x474829[_0x9c31('0x1a')]?_0x474829[_0x9c31('0x1a')][_0x9c31('0x1d')]||null:null})[_0x9c31('0xc')](function(_0x482487){logger[_0x9c31('0x14')]('UpdateMemberReport',_0x474829);logger[_0x9c31('0xe')](_0x9c31('0x26'),_0x474829,JSON[_0x9c31('0x10')](_0x482487));_0xf4aa5d(_0x482487);})[_0x9c31('0x17')](function(_0xa9106){logger[_0x9c31('0x11')]('UpdateMemberReport',_0xa9106['message'],_0x474829);_0x1181a0(_0x51992d[_0x9c31('0x11')](0x1f4,_0xa9106[_0x9c31('0x13')]));});});};
\ No newline at end of file
+var _0x0b3d=['result','GetMemberReport','MemberReport','options','raw','where','attributes','limit','map','include','model','then','CreateMemberReport','create','body','catch','UpdateMemberReport','update','debug','lodash','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','MemberReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','info'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x0b3d,0x76));var _0xd0b3=function(_0x732d54,_0x5708f4){_0x732d54=_0x732d54-0x0;var _0x55e766=_0x0b3d[_0x732d54];return _0x55e766;};'use strict';var _=require(_0xd0b3('0x0'));var util=require('util');var moment=require(_0xd0b3('0x1'));var BPromise=require('bluebird');var rs=require(_0xd0b3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd0b3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0b3('0x4'))('rpc');var config=require(_0xd0b3('0x5'));var jayson=require(_0xd0b3('0x6'));var client=jayson['client'][_0xd0b3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5bc883,_0x872957,_0x5f3196){return new BPromise(function(_0x5ab5b2,_0x2f79f7){return client['request'](_0x5bc883,_0x5f3196)['then'](function(_0x7b8b92){logger['info'](_0xd0b3('0x8'),_0x872957,_0xd0b3('0x9'));logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x872957,_0xd0b3('0x9'),JSON[_0xd0b3('0xa')](_0x7b8b92));if(_0x7b8b92[_0xd0b3('0xb')]){if(_0x7b8b92[_0xd0b3('0xb')]['code']===0x1f4){logger['error'](_0xd0b3('0x8'),_0x872957,_0x7b8b92[_0xd0b3('0xb')][_0xd0b3('0xc')]);return _0x2f79f7(_0x7b8b92[_0xd0b3('0xb')][_0xd0b3('0xc')]);}logger[_0xd0b3('0xb')](_0xd0b3('0x8'),_0x872957,_0x7b8b92['error'][_0xd0b3('0xc')]);return _0x5ab5b2(_0x7b8b92[_0xd0b3('0xb')][_0xd0b3('0xc')]);}else{logger[_0xd0b3('0xd')]('MemberReport,\x20%s,\x20%s',_0x872957,_0xd0b3('0x9'));_0x5ab5b2(_0x7b8b92[_0xd0b3('0xe')][_0xd0b3('0xc')]);}})['catch'](function(_0x537e76){logger[_0xd0b3('0xb')]('MemberReport,\x20%s,\x20%s',_0x872957,_0x537e76);_0x2f79f7(_0x537e76);});});}exports[_0xd0b3('0xf')]=function(_0x232e6a){var _0x5045b4=this;return new Promise(function(_0x4ed917,_0x3fc7be){return db[_0xd0b3('0x10')]['findAll']({'raw':_0x232e6a[_0xd0b3('0x11')]?_0x232e6a[_0xd0b3('0x11')][_0xd0b3('0x12')]===undefined?!![]:![]:!![],'where':_0x232e6a['options']?_0x232e6a['options'][_0xd0b3('0x13')]||null:null,'attributes':_0x232e6a['options']?_0x232e6a[_0xd0b3('0x11')][_0xd0b3('0x14')]||null:null,'limit':_0x232e6a[_0xd0b3('0x11')]?_0x232e6a[_0xd0b3('0x11')][_0xd0b3('0x15')]||null:null,'include':_0x232e6a['options']?_0x232e6a['options']['include']?_[_0xd0b3('0x16')](_0x232e6a[_0xd0b3('0x11')][_0xd0b3('0x17')],function(_0x1bfe7b){return{'model':db[_0x1bfe7b[_0xd0b3('0x18')]],'as':_0x1bfe7b['as'],'attributes':_0x1bfe7b['attributes'],'include':_0x1bfe7b[_0xd0b3('0x17')]?_[_0xd0b3('0x16')](_0x1bfe7b[_0xd0b3('0x17')],function(_0x2e0dcc){return{'model':db[_0x2e0dcc['model']],'as':_0x2e0dcc['as'],'attributes':_0x2e0dcc[_0xd0b3('0x14')],'include':_0x2e0dcc[_0xd0b3('0x17')]?_[_0xd0b3('0x16')](_0x2e0dcc['include'],function(_0x48fb43){return{'model':db[_0x48fb43[_0xd0b3('0x18')]],'as':_0x48fb43['as'],'attributes':_0x48fb43[_0xd0b3('0x14')]};}):[]};}):[]};}):[]:[]})[_0xd0b3('0x19')](function(_0x4d42b4){logger[_0xd0b3('0xd')](_0xd0b3('0xf'),_0x232e6a);logger['debug'](_0xd0b3('0xf'),_0x232e6a,JSON[_0xd0b3('0xa')](_0x4d42b4));_0x4ed917(_0x4d42b4);})['catch'](function(_0x2b2d05){logger['error'](_0xd0b3('0xf'),_0x2b2d05['message'],_0x232e6a);_0x3fc7be(_0x5045b4[_0xd0b3('0xb')](0x1f4,_0x2b2d05[_0xd0b3('0xc')]));});});};exports[_0xd0b3('0x1a')]=function(_0x366931){var _0x23609e=this;return new Promise(function(_0x2f79cd,_0x44e5ad){return db['MemberReport'][_0xd0b3('0x1b')](_0x366931[_0xd0b3('0x1c')],{'raw':_0x366931[_0xd0b3('0x11')]?_0x366931[_0xd0b3('0x11')]['raw']===undefined?!![]:![]:!![]})[_0xd0b3('0x19')](function(_0x246bee){logger[_0xd0b3('0xd')](_0xd0b3('0x1a'),_0x366931);logger['debug'](_0xd0b3('0x1a'),_0x366931,JSON[_0xd0b3('0xa')](_0x246bee));_0x2f79cd(_0x246bee);})[_0xd0b3('0x1d')](function(_0x2f2e00){logger[_0xd0b3('0xb')](_0xd0b3('0x1a'),_0x2f2e00[_0xd0b3('0xc')],_0x366931);_0x44e5ad(_0x23609e[_0xd0b3('0xb')](0x1f4,_0x2f2e00[_0xd0b3('0xc')]));});});};exports[_0xd0b3('0x1e')]=function(_0x22de39){var _0xa53787=this;return new Promise(function(_0x1926ca,_0x1f587f){return db['MemberReport'][_0xd0b3('0x1f')](_0x22de39[_0xd0b3('0x1c')],{'raw':_0x22de39[_0xd0b3('0x11')]?_0x22de39[_0xd0b3('0x11')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22de39['options']?_0x22de39['options'][_0xd0b3('0x13')]||null:null,'attributes':_0x22de39[_0xd0b3('0x11')]?_0x22de39[_0xd0b3('0x11')][_0xd0b3('0x14')]||null:null,'limit':_0x22de39[_0xd0b3('0x11')]?_0x22de39[_0xd0b3('0x11')]['limit']||null:null})[_0xd0b3('0x19')](function(_0x4504e5){logger[_0xd0b3('0xd')](_0xd0b3('0x1e'),_0x22de39);logger[_0xd0b3('0x20')](_0xd0b3('0x1e'),_0x22de39,JSON[_0xd0b3('0xa')](_0x4504e5));_0x1926ca(_0x4504e5);})[_0xd0b3('0x1d')](function(_0x3be7ee){logger[_0xd0b3('0xb')](_0xd0b3('0x1e'),_0x3be7ee['message'],_0x22de39);_0x1f587f(_0xa53787['error'](0x1f4,_0x3be7ee[_0xd0b3('0xc')]));});});};
\ No newline at end of file
index 0e69a43..1ed5ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ca=['fs-extra','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','util','connect-timeout','express'];(function(_0x4058be,_0x1550c3){var _0x23fdd8=function(_0x480fd1){while(--_0x480fd1){_0x4058be['push'](_0x4058be['shift']());}};_0x23fdd8(++_0x1550c3);}(_0x02ca,0x197));var _0xa02c=function(_0x3c0e06,_0x2fb458){_0x3c0e06=_0x3c0e06-0x0;var _0x454437=_0x02ca[_0x3c0e06];return _0x454437;};'use strict';var multer=require('multer');var util=require(_0xa02c('0x0'));var path=require('path');var timeout=require(_0xa02c('0x1'));var express=require(_0xa02c('0x2'));var router=express['Router']();var fs_extra=require(_0xa02c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa02c('0x4'));var config=require(_0xa02c('0x5'));var controller=require(_0xa02c('0x6'));router[_0xa02c('0x7')]('/',controller[_0xa02c('0x8')]);module[_0xa02c('0x9')]=router;
\ No newline at end of file
+var _0x120b=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports'];(function(_0x21fe10,_0x184540){var _0x255397=function(_0x43c663){while(--_0x43c663){_0x21fe10['push'](_0x21fe10['shift']());}};_0x255397(++_0x184540);}(_0x120b,0x8f));var _0xb120=function(_0x528001,_0x1f0b84){_0x528001=_0x528001-0x0;var _0x2823f2=_0x120b[_0x528001];return _0x2823f2;};'use strict';var multer=require(_0xb120('0x0'));var util=require(_0xb120('0x1'));var path=require('path');var timeout=require(_0xb120('0x2'));var express=require(_0xb120('0x3'));var router=express[_0xb120('0x4')]();var fs_extra=require(_0xb120('0x5'));var auth=require(_0xb120('0x6'));var interaction=require(_0xb120('0x7'));var config=require(_0xb120('0x8'));var controller=require(_0xb120('0x9'));router[_0xb120('0xa')]('/',controller[_0xb120('0xb')]);module[_0xb120('0xc')]=router;
\ No newline at end of file
index 81da28e..0d7ef1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8678=['version','exports','STRING'];(function(_0x1383fa,_0xcdb650){var _0x1f024d=function(_0x548592){while(--_0x548592){_0x1383fa['push'](_0x1383fa['shift']());}};_0x1f024d(++_0xcdb650);}(_0x8678,0x187));var _0x8867=function(_0x3d9867,_0x228474){_0x3d9867=_0x3d9867-0x0;var _0x35b3ee=_0x8678[_0x3d9867];return _0x35b3ee;};'use strict';var Sequelize=require('sequelize');module[_0x8867('0x0')]={'version':{'type':Sequelize[_0x8867('0x1')],'unique':_0x8867('0x2')}};
\ No newline at end of file
+var _0xbd50=['exports','STRING','version'];(function(_0x402ad2,_0x4f1ac0){var _0x5de770=function(_0x5f299c){while(--_0x5f299c){_0x402ad2['push'](_0x402ad2['shift']());}};_0x5de770(++_0x4f1ac0);}(_0xbd50,0xc3));var _0x0bd5=function(_0x11cb91,_0x5ef17c){_0x11cb91=_0x11cb91-0x0;var _0x2bc42f=_0xbd50[_0x11cb91];return _0x2bc42f;};'use strict';var Sequelize=require('sequelize');module[_0x0bd5('0x0')]={'version':{'type':Sequelize[_0x0bd5('0x1')],'unique':_0x0bd5('0x2')}};
\ No newline at end of file
index dc4d375..f7ccbbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c4c=['lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','update','then','name','send','index','Migration','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','options','includeAll','include','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x67a151,_0x3201de){var _0x47b5a8=function(_0x2bf317){while(--_0x2bf317){_0x67a151['push'](_0x67a151['shift']());}};_0x47b5a8(++_0x3201de);}(_0x6c4c,0xb3));var _0xc6c4=function(_0x1d0d2b,_0x41539b){_0x1d0d2b=_0x1d0d2b-0x0;var _0x32f442=_0x6c4c[_0x1d0d2b];return _0x32f442;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc6c4('0x0'));var zipdir=require(_0xc6c4('0x1'));var jsonpatch=require(_0xc6c4('0x2'));var rp=require(_0xc6c4('0x3'));var moment=require(_0xc6c4('0x4'));var BPromise=require(_0xc6c4('0x5'));var Mustache=require(_0xc6c4('0x6'));var util=require(_0xc6c4('0x7'));var path=require(_0xc6c4('0x8'));var sox=require(_0xc6c4('0x9'));var csv=require(_0xc6c4('0xa'));var ejs=require(_0xc6c4('0xb'));var fs=require('fs');var fs_extra=require(_0xc6c4('0xc'));var _=require(_0xc6c4('0xd'));var squel=require(_0xc6c4('0xe'));var crypto=require('crypto');var jsforce=require(_0xc6c4('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc6c4('0xa'));var querystring=require('querystring');var Papa=require(_0xc6c4('0x10'));var Redis=require(_0xc6c4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc6c4('0x12'));var as=require(_0xc6c4('0x13'));var hardwareService=require(_0xc6c4('0x14'));var logger=require(_0xc6c4('0x15'))(_0xc6c4('0x16'));var utils=require(_0xc6c4('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc6c4('0x18'))['db'];function respondWithStatusCode(_0x1cc4b0,_0x472038){_0x472038=_0x472038||0xcc;return function(_0x2fc812){if(_0x2fc812){return _0x1cc4b0[_0xc6c4('0x19')](_0x472038);}return _0x1cc4b0[_0xc6c4('0x1a')](_0x472038)[_0xc6c4('0x1b')]();};}function respondWithResult(_0x201abf,_0x57d598){_0x57d598=_0x57d598||0xc8;return function(_0x117540){if(_0x117540){return _0x201abf['status'](_0x57d598)[_0xc6c4('0x1c')](_0x117540);}};}function respondWithFilteredResult(_0x5e75d1,_0x2df006){return function(_0xef290a){if(_0xef290a){var _0x486005=typeof _0x2df006[_0xc6c4('0x1d')]==='undefined'&&typeof _0x2df006[_0xc6c4('0x1e')]===_0xc6c4('0x1f');var _0x41e75e=_0xef290a[_0xc6c4('0x20')];var _0x770c8d=_0x486005?0x0:_0x2df006[_0xc6c4('0x1d')];var _0x14d69b=_0x486005?_0xef290a[_0xc6c4('0x20')]:_0x2df006['offset']+_0x2df006[_0xc6c4('0x1e')];var _0x3d7fa0;if(_0x14d69b>=_0x41e75e){_0x14d69b=_0x41e75e;_0x3d7fa0=0xc8;}else{_0x3d7fa0=0xce;}_0x5e75d1[_0xc6c4('0x1a')](_0x3d7fa0);return _0x5e75d1['set']('Content-Range',_0x770c8d+'-'+_0x14d69b+'/'+_0x41e75e)[_0xc6c4('0x1c')](_0xef290a);}return null;};}function patchUpdates(_0x2f67c2){return function(_0x4ebcac){try{jsonpatch[_0xc6c4('0x21')](_0x4ebcac,_0x2f67c2,!![]);}catch(_0x1630b1){return BPromise[_0xc6c4('0x22')](_0x1630b1);}return _0x4ebcac[_0xc6c4('0x23')]();};}function saveUpdates(_0x109b14,_0x36d1af){return function(_0x248b22){if(_0x248b22){return _0x248b22[_0xc6c4('0x24')](_0x109b14)[_0xc6c4('0x25')](function(_0xa699c9){return _0xa699c9;});}return null;};}function removeEntity(_0x30b3d9,_0x188615){return function(_0x24a387){if(_0x24a387){return _0x24a387['destroy']()[_0xc6c4('0x25')](function(){_0x30b3d9['status'](0xcc)[_0xc6c4('0x1b')]();});}};}function handleEntityNotFound(_0x578577,_0x42fcb1){return function(_0x1fd288){if(!_0x1fd288){_0x578577[_0xc6c4('0x19')](0x194);}return _0x1fd288;};}function handleError(_0x276f7c,_0x1657ed){_0x1657ed=_0x1657ed||0x1f4;return function(_0x3903a8){logger['error'](_0x3903a8['stack']);if(_0x3903a8[_0xc6c4('0x26')]){delete _0x3903a8[_0xc6c4('0x26')];}_0x276f7c[_0xc6c4('0x1a')](_0x1657ed)[_0xc6c4('0x27')](_0x3903a8);};}exports[_0xc6c4('0x28')]=function(_0x2dc449,_0x5563fa){var _0x1cd98b={},_0x1027e2={},_0x436505={'count':0x0,'rows':[]};var _0x4896fb=_['map'](db[_0xc6c4('0x29')][_0xc6c4('0x2a')],function(_0x2ad8dc){return{'name':_0x2ad8dc[_0xc6c4('0x2b')],'type':_0x2ad8dc[_0xc6c4('0x2c')]['key']};});_0x1027e2['model']=_['map'](_0x4896fb,_0xc6c4('0x26'));_0x1027e2[_0xc6c4('0x2d')]=_[_0xc6c4('0x2e')](_0x2dc449[_0xc6c4('0x2d')]);_0x1027e2['filters']=_[_0xc6c4('0x2f')](_0x1027e2[_0xc6c4('0x30')],_0x1027e2[_0xc6c4('0x2d')]);_0x1cd98b[_0xc6c4('0x31')]=_['intersection'](_0x1027e2[_0xc6c4('0x30')],qs[_0xc6c4('0x32')](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x32')]));_0x1cd98b[_0xc6c4('0x31')]=_0x1cd98b[_0xc6c4('0x31')][_0xc6c4('0x33')]?_0x1cd98b[_0xc6c4('0x31')]:_0x1027e2[_0xc6c4('0x30')];if(!_0x2dc449['query'][_0xc6c4('0x34')](_0xc6c4('0x35'))){_0x1cd98b[_0xc6c4('0x1e')]=qs['limit'](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x1e')]);_0x1cd98b[_0xc6c4('0x1d')]=qs[_0xc6c4('0x1d')](_0x2dc449['query']['offset']);}_0x1cd98b['order']=qs['sort'](_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x36')]);_0x1cd98b[_0xc6c4('0x37')]=qs[_0xc6c4('0x38')](_[_0xc6c4('0x39')](_0x2dc449[_0xc6c4('0x2d')],_0x1027e2[_0xc6c4('0x38')]),_0x4896fb);if(_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3a')]){_0x1cd98b['where']=_['merge'](_0x1cd98b[_0xc6c4('0x37')],{'$or':_[_0xc6c4('0x3b')](_0x4896fb,function(_0x5ef092){if(_0x5ef092[_0xc6c4('0x2c')]!=='VIRTUAL'){var _0x493df6={};_0x493df6[_0x5ef092[_0xc6c4('0x26')]]={'$like':'%'+_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3a')]+'%'};return _0x493df6;}})});}_0x1cd98b=_[_0xc6c4('0x3c')]({},_0x1cd98b,_0x2dc449[_0xc6c4('0x3d')]);var _0x55eba3={'where':_0x1cd98b[_0xc6c4('0x37')]};return db[_0xc6c4('0x29')]['count'](_0x55eba3)[_0xc6c4('0x25')](function(_0x25d7ec){_0x436505[_0xc6c4('0x20')]=_0x25d7ec;if(_0x2dc449[_0xc6c4('0x2d')][_0xc6c4('0x3e')]){_0x1cd98b[_0xc6c4('0x3f')]=[{'all':!![]}];}return db[_0xc6c4('0x29')]['findAll'](_0x1cd98b);})['then'](function(_0xe3b34){_0x436505['rows']=_0xe3b34;return _0x436505;})['then'](respondWithFilteredResult(_0x5563fa,_0x1cd98b))['catch'](handleError(_0x5563fa,null));};
\ No newline at end of file
+var _0xc592=['../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','Migration','rawAttributes','fieldName','type','key','keys','query','intersection','model','attributes','length','nolimit','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x4856eb,_0x159ef9){var _0x59377f=function(_0x1026cd){while(--_0x1026cd){_0x4856eb['push'](_0x4856eb['shift']());}};_0x59377f(++_0x159ef9);}(_0xc592,0x18c));var _0x2c59=function(_0x1ab92c,_0x369d5a){_0x1ab92c=_0x1ab92c-0x0;var _0x300e70=_0xc592[_0x1ab92c];return _0x300e70;};'use strict';var emlformat=require(_0x2c59('0x0'));var rimraf=require(_0x2c59('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c59('0x2'));var rp=require('request-promise');var moment=require(_0x2c59('0x3'));var BPromise=require(_0x2c59('0x4'));var Mustache=require(_0x2c59('0x5'));var util=require(_0x2c59('0x6'));var path=require(_0x2c59('0x7'));var sox=require(_0x2c59('0x8'));var csv=require('to-csv');var ejs=require(_0x2c59('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2c59('0xa'));var squel=require(_0x2c59('0xb'));var crypto=require(_0x2c59('0xc'));var jsforce=require(_0x2c59('0xd'));var deskjs=require(_0x2c59('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2c59('0xf'));var Redis=require(_0x2c59('0x10'));var authService=require(_0x2c59('0x11'));var qs=require(_0x2c59('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2c59('0x13'));var logger=require(_0x2c59('0x14'))('api');var utils=require(_0x2c59('0x15'));var config=require(_0x2c59('0x16'));var licenseUtil=require(_0x2c59('0x17'));var db=require(_0x2c59('0x18'))['db'];function respondWithStatusCode(_0x14f73d,_0x575b61){_0x575b61=_0x575b61||0xcc;return function(_0x4a247a){if(_0x4a247a){return _0x14f73d[_0x2c59('0x19')](_0x575b61);}return _0x14f73d['status'](_0x575b61)[_0x2c59('0x1a')]();};}function respondWithResult(_0x3d7710,_0xe5eb40){_0xe5eb40=_0xe5eb40||0xc8;return function(_0x3d9faf){if(_0x3d9faf){return _0x3d7710['status'](_0xe5eb40)[_0x2c59('0x1b')](_0x3d9faf);}};}function respondWithFilteredResult(_0x1c5a6e,_0x14bdb9){return function(_0xb6ff7a){if(_0xb6ff7a){var _0x30036a=typeof _0x14bdb9[_0x2c59('0x1c')]==='undefined'&&typeof _0x14bdb9[_0x2c59('0x1d')]===_0x2c59('0x1e');var _0x130e48=_0xb6ff7a[_0x2c59('0x1f')];var _0x5733a7=_0x30036a?0x0:_0x14bdb9[_0x2c59('0x1c')];var _0x3b3bb6=_0x30036a?_0xb6ff7a[_0x2c59('0x1f')]:_0x14bdb9[_0x2c59('0x1c')]+_0x14bdb9[_0x2c59('0x1d')];var _0x1ad12b;if(_0x3b3bb6>=_0x130e48){_0x3b3bb6=_0x130e48;_0x1ad12b=0xc8;}else{_0x1ad12b=0xce;}_0x1c5a6e[_0x2c59('0x20')](_0x1ad12b);return _0x1c5a6e[_0x2c59('0x21')](_0x2c59('0x22'),_0x5733a7+'-'+_0x3b3bb6+'/'+_0x130e48)[_0x2c59('0x1b')](_0xb6ff7a);}return null;};}function patchUpdates(_0x1ef071){return function(_0x393936){try{jsonpatch[_0x2c59('0x23')](_0x393936,_0x1ef071,!![]);}catch(_0x15598a){return BPromise[_0x2c59('0x24')](_0x15598a);}return _0x393936[_0x2c59('0x25')]();};}function saveUpdates(_0x35825c,_0x48f8bd){return function(_0x15e73e){if(_0x15e73e){return _0x15e73e[_0x2c59('0x26')](_0x35825c)[_0x2c59('0x27')](function(_0x1d42b3){return _0x1d42b3;});}return null;};}function removeEntity(_0x4ddb97,_0x6e653d){return function(_0x592bfd){if(_0x592bfd){return _0x592bfd['destroy']()[_0x2c59('0x27')](function(){_0x4ddb97[_0x2c59('0x20')](0xcc)[_0x2c59('0x1a')]();});}};}function handleEntityNotFound(_0x3a56b5,_0x4fa332){return function(_0x2c5c16){if(!_0x2c5c16){_0x3a56b5[_0x2c59('0x19')](0x194);}return _0x2c5c16;};}function handleError(_0x2b48e0,_0x5b2d8d){_0x5b2d8d=_0x5b2d8d||0x1f4;return function(_0x33b8f3){logger[_0x2c59('0x28')](_0x33b8f3[_0x2c59('0x29')]);if(_0x33b8f3[_0x2c59('0x2a')]){delete _0x33b8f3[_0x2c59('0x2a')];}_0x2b48e0[_0x2c59('0x20')](_0x5b2d8d)['send'](_0x33b8f3);};}exports[_0x2c59('0x2b')]=function(_0x814d2c,_0x473706){var _0x5da8d6={},_0x1eda06={},_0x10cd0b={'count':0x0,'rows':[]};var _0x9f1dec=_[_0x2c59('0x2c')](db[_0x2c59('0x2d')][_0x2c59('0x2e')],function(_0x3e4dc1){return{'name':_0x3e4dc1[_0x2c59('0x2f')],'type':_0x3e4dc1[_0x2c59('0x30')][_0x2c59('0x31')]};});_0x1eda06['model']=_[_0x2c59('0x2c')](_0x9f1dec,_0x2c59('0x2a'));_0x1eda06['query']=_[_0x2c59('0x32')](_0x814d2c[_0x2c59('0x33')]);_0x1eda06['filters']=_[_0x2c59('0x34')](_0x1eda06[_0x2c59('0x35')],_0x1eda06[_0x2c59('0x33')]);_0x5da8d6[_0x2c59('0x36')]=_[_0x2c59('0x34')](_0x1eda06[_0x2c59('0x35')],qs['fields'](_0x814d2c[_0x2c59('0x33')]['fields']));_0x5da8d6[_0x2c59('0x36')]=_0x5da8d6[_0x2c59('0x36')][_0x2c59('0x37')]?_0x5da8d6[_0x2c59('0x36')]:_0x1eda06[_0x2c59('0x35')];if(!_0x814d2c[_0x2c59('0x33')]['hasOwnProperty'](_0x2c59('0x38'))){_0x5da8d6[_0x2c59('0x1d')]=qs['limit'](_0x814d2c[_0x2c59('0x33')][_0x2c59('0x1d')]);_0x5da8d6[_0x2c59('0x1c')]=qs[_0x2c59('0x1c')](_0x814d2c[_0x2c59('0x33')]['offset']);}_0x5da8d6['order']=qs[_0x2c59('0x39')](_0x814d2c['query'][_0x2c59('0x39')]);_0x5da8d6[_0x2c59('0x3a')]=qs[_0x2c59('0x3b')](_['pick'](_0x814d2c[_0x2c59('0x33')],_0x1eda06[_0x2c59('0x3b')]),_0x9f1dec);if(_0x814d2c[_0x2c59('0x33')]['filter']){_0x5da8d6['where']=_[_0x2c59('0x3c')](_0x5da8d6[_0x2c59('0x3a')],{'$or':_['map'](_0x9f1dec,function(_0x2cc799){if(_0x2cc799[_0x2c59('0x30')]!==_0x2c59('0x3d')){var _0xe5b3c8={};_0xe5b3c8[_0x2cc799[_0x2c59('0x2a')]]={'$like':'%'+_0x814d2c[_0x2c59('0x33')][_0x2c59('0x3e')]+'%'};return _0xe5b3c8;}})});}_0x5da8d6=_[_0x2c59('0x3c')]({},_0x5da8d6,_0x814d2c[_0x2c59('0x3f')]);var _0x3e5e83={'where':_0x5da8d6['where']};return db[_0x2c59('0x2d')][_0x2c59('0x1f')](_0x3e5e83)['then'](function(_0x2d734b){_0x10cd0b[_0x2c59('0x1f')]=_0x2d734b;if(_0x814d2c[_0x2c59('0x33')][_0x2c59('0x40')]){_0x5da8d6[_0x2c59('0x41')]=[{'all':!![]}];}return db[_0x2c59('0x2d')][_0x2c59('0x42')](_0x5da8d6);})[_0x2c59('0x27')](function(_0x4377f8){_0x10cd0b[_0x2c59('0x43')]=_0x4377f8;return _0x10cd0b;})[_0x2c59('0x27')](respondWithFilteredResult(_0x473706,_0x5da8d6))[_0x2c59('0x44')](handleError(_0x473706,null));};
\ No newline at end of file
index f56c3b2..fc065a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf25e=['Migration','migrations','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports'];(function(_0x369c70,_0x5892f0){var _0xb7e463=function(_0x3822c8){while(--_0x3822c8){_0x369c70['push'](_0x369c70['shift']());}};_0xb7e463(++_0x5892f0);}(_0xf25e,0x7a));var _0xef25=function(_0x1248c4,_0x3db5ae){_0x1248c4=_0x1248c4-0x0;var _0x89499e=_0xf25e[_0x1248c4];return _0x89499e;};'use strict';var _=require(_0xef25('0x0'));var util=require(_0xef25('0x1'));var logger=require(_0xef25('0x2'))('api');var moment=require('moment');var BPromise=require(_0xef25('0x3'));var rp=require(_0xef25('0x4'));var fs=require('fs');var path=require(_0xef25('0x5'));var rimraf=require(_0xef25('0x6'));var config=require(_0xef25('0x7'));var attributes=require(_0xef25('0x8'));module[_0xef25('0x9')]=function(_0xcf6647,_0x27bf71){return _0xcf6647['define'](_0xef25('0xa'),attributes,{'tableName':_0xef25('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x167e=['path','rimraf','../../config/environment','./migration.attributes','exports','define','Migration','util','api','bluebird','request-promise'];(function(_0x294a3c,_0x2c7f0d){var _0x511f60=function(_0x1f7444){while(--_0x1f7444){_0x294a3c['push'](_0x294a3c['shift']());}};_0x511f60(++_0x2c7f0d);}(_0x167e,0xe3));var _0xe167=function(_0x21f657,_0x391ac1){_0x21f657=_0x21f657-0x0;var _0x4b04a7=_0x167e[_0x21f657];return _0x4b04a7;};'use strict';var _=require('lodash');var util=require(_0xe167('0x0'));var logger=require('../../config/logger')(_0xe167('0x1'));var moment=require('moment');var BPromise=require(_0xe167('0x2'));var rp=require(_0xe167('0x3'));var fs=require('fs');var path=require(_0xe167('0x4'));var rimraf=require(_0xe167('0x5'));var config=require(_0xe167('0x6'));var attributes=require(_0xe167('0x7'));module[_0xe167('0x8')]=function(_0x50a283,_0x396fa2){return _0x50a283[_0xe167('0x9')](_0xe167('0xa'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4ce2e4..ed4e111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0834=['bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment'];(function(_0x4b2b03,_0xbf34ee){var _0x1bf0ed=function(_0x562785){while(--_0x562785){_0x4b2b03['push'](_0x4b2b03['shift']());}};_0x1bf0ed(++_0xbf34ee);}(_0x0834,0x18e));var _0x4083=function(_0x1e09b7,_0x3b7f6f){_0x1e09b7=_0x1e09b7-0x0;var _0x480c35=_0x0834[_0x1e09b7];return _0x480c35;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4083('0x0'));var BPromise=require(_0x4083('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4083('0x2'));var logger=require(_0x4083('0x3'))('rpc');var config=require(_0x4083('0x4'));var jayson=require(_0x4083('0x5'));var client=jayson['client'][_0x4083('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x5c5a54,_0x31c7ef,_0x26ed53){return new BPromise(function(_0x2c42bb,_0x1d56dd){return client[_0x4083('0x7')](_0x5c5a54,_0x26ed53)[_0x4083('0x8')](function(_0x3cee37){logger[_0x4083('0x9')](_0x4083('0xa'),_0x31c7ef,_0x4083('0xb'));logger[_0x4083('0xc')](_0x4083('0xd'),_0x31c7ef,_0x4083('0xb'),JSON[_0x4083('0xe')](_0x3cee37));if(_0x3cee37[_0x4083('0xf')]){if(_0x3cee37['error']['code']===0x1f4){logger[_0x4083('0xf')](_0x4083('0xa'),_0x31c7ef,_0x3cee37['error'][_0x4083('0x10')]);return _0x1d56dd(_0x3cee37[_0x4083('0xf')][_0x4083('0x10')]);}logger['error']('Migration,\x20%s,\x20%s',_0x31c7ef,_0x3cee37[_0x4083('0xf')][_0x4083('0x10')]);return _0x2c42bb(_0x3cee37['error'][_0x4083('0x10')]);}else{logger[_0x4083('0x9')](_0x4083('0xa'),_0x31c7ef,_0x4083('0xb'));_0x2c42bb(_0x3cee37[_0x4083('0x11')]['message']);}})[_0x4083('0x12')](function(_0x10cadd){logger[_0x4083('0xf')](_0x4083('0xa'),_0x31c7ef,_0x10cadd);_0x1d56dd(_0x10cadd);});});}
\ No newline at end of file
+var _0xe0b2=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x1992ab,_0x9abd59){var _0x1cf51a=function(_0x22c202){while(--_0x22c202){_0x1992ab['push'](_0x1992ab['shift']());}};_0x1cf51a(++_0x9abd59);}(_0xe0b2,0xec));var _0x2e0b=function(_0x11c28b,_0x55bcd1){_0x11c28b=_0x11c28b-0x0;var _0xdc52e0=_0xe0b2[_0x11c28b];return _0xdc52e0;};'use strict';var _=require('lodash');var util=require(_0x2e0b('0x0'));var moment=require(_0x2e0b('0x1'));var BPromise=require(_0x2e0b('0x2'));var rs=require(_0x2e0b('0x3'));var fs=require('fs');var Redis=require(_0x2e0b('0x4'));var db=require(_0x2e0b('0x5'))['db'];var utils=require(_0x2e0b('0x6'));var logger=require('../../config/logger')(_0x2e0b('0x7'));var config=require(_0x2e0b('0x8'));var jayson=require(_0x2e0b('0x9'));var client=jayson[_0x2e0b('0xa')][_0x2e0b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x264319,_0x4b62b7,_0x2e1e40){return new BPromise(function(_0x504ea6,_0x1afd43){return client[_0x2e0b('0xc')](_0x264319,_0x2e1e40)[_0x2e0b('0xd')](function(_0x3078eb){logger[_0x2e0b('0xe')](_0x2e0b('0xf'),_0x4b62b7,_0x2e0b('0x10'));logger[_0x2e0b('0x11')](_0x2e0b('0x12'),_0x4b62b7,'request\x20sent',JSON[_0x2e0b('0x13')](_0x3078eb));if(_0x3078eb[_0x2e0b('0x14')]){if(_0x3078eb['error']['code']===0x1f4){logger[_0x2e0b('0x14')](_0x2e0b('0xf'),_0x4b62b7,_0x3078eb[_0x2e0b('0x14')][_0x2e0b('0x15')]);return _0x1afd43(_0x3078eb[_0x2e0b('0x14')][_0x2e0b('0x15')]);}logger[_0x2e0b('0x14')](_0x2e0b('0xf'),_0x4b62b7,_0x3078eb[_0x2e0b('0x14')][_0x2e0b('0x15')]);return _0x504ea6(_0x3078eb[_0x2e0b('0x14')][_0x2e0b('0x15')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x4b62b7,'request\x20sent');_0x504ea6(_0x3078eb[_0x2e0b('0x16')]['message']);}})[_0x2e0b('0x17')](function(_0x426879){logger['error']('Migration,\x20%s,\x20%s',_0x4b62b7,_0x426879);_0x1afd43(_0x426879);});});}
\ No newline at end of file
index 421a0b8..19a77cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc4=['isAuthenticated','index','show','post','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','./network.controller','get'];(function(_0x157171,_0x40d493){var _0x104caa=function(_0x54ed45){while(--_0x54ed45){_0x157171['push'](_0x157171['shift']());}};_0x104caa(++_0x40d493);}(_0x2cc4,0x1f0));var _0x42cc=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x2cc4[_0x946518];return _0x909b69;};'use strict';var multer=require(_0x42cc('0x0'));var util=require(_0x42cc('0x1'));var path=require(_0x42cc('0x2'));var timeout=require(_0x42cc('0x3'));var express=require('express');var router=express[_0x42cc('0x4')]();var fs_extra=require(_0x42cc('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x42cc('0x6'));router[_0x42cc('0x7')]('/',auth[_0x42cc('0x8')](),controller[_0x42cc('0x9')]);router[_0x42cc('0x7')]('/:id',auth[_0x42cc('0x8')](),controller[_0x42cc('0xa')]);router[_0x42cc('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x42cc('0xc')](_0x42cc('0xd'),auth[_0x42cc('0x8')](),controller[_0x42cc('0xe')]);router[_0x42cc('0xf')](_0x42cc('0xd'),auth[_0x42cc('0x8')](),controller[_0x42cc('0x10')]);module[_0x42cc('0x11')]=router;
\ No newline at end of file
+var _0xf31b=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x2e51e7,_0x3a8704){var _0x201f8a=function(_0x1c57e9){while(--_0x1c57e9){_0x2e51e7['push'](_0x2e51e7['shift']());}};_0x201f8a(++_0x3a8704);}(_0xf31b,0x1a0));var _0xbf31=function(_0x3ee25b,_0x3c2491){_0x3ee25b=_0x3ee25b-0x0;var _0x3a6cf7=_0xf31b[_0x3ee25b];return _0x3a6cf7;};'use strict';var multer=require(_0xbf31('0x0'));var util=require(_0xbf31('0x1'));var path=require(_0xbf31('0x2'));var timeout=require(_0xbf31('0x3'));var express=require(_0xbf31('0x4'));var router=express[_0xbf31('0x5')]();var fs_extra=require(_0xbf31('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xbf31('0x7'));var config=require(_0xbf31('0x8'));var controller=require('./network.controller');router['get']('/',auth[_0xbf31('0x9')](),controller['index']);router[_0xbf31('0xa')](_0xbf31('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbf31('0xc')]('/',auth['isAuthenticated'](),controller[_0xbf31('0xd')]);router[_0xbf31('0xe')](_0xbf31('0xb'),auth[_0xbf31('0x9')](),controller[_0xbf31('0xf')]);router[_0xbf31('0x10')](_0xbf31('0xb'),auth[_0xbf31('0x9')](),controller[_0xbf31('0x11')]);module[_0xbf31('0x12')]=router;
\ No newline at end of file
index 8010c42..ce9f38c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2444=['sequelize','exports','ENUM','externip','stun','turn','STRING'];(function(_0x265e3f,_0x36d65a){var _0x19a23b=function(_0x4f9a36){while(--_0x4f9a36){_0x265e3f['push'](_0x265e3f['shift']());}};_0x19a23b(++_0x36d65a);}(_0x2444,0x142));var _0x4244=function(_0x523cd6,_0x2aff53){_0x523cd6=_0x523cd6-0x0;var _0x7413f=_0x2444[_0x523cd6];return _0x7413f;};'use strict';var Sequelize=require(_0x4244('0x0'));module[_0x4244('0x1')]={'type':{'type':Sequelize[_0x4244('0x2')]('localnet',_0x4244('0x3'),_0x4244('0x4'),_0x4244('0x5'))},'value':{'type':Sequelize[_0x4244('0x6')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x4244('0x6')]}};
\ No newline at end of file
+var _0x6f48=['stun','turn','STRING','sequelize','exports','ENUM','externip'];(function(_0x3daf97,_0x226682){var _0x20575b=function(_0x83e0db){while(--_0x83e0db){_0x3daf97['push'](_0x3daf97['shift']());}};_0x20575b(++_0x226682);}(_0x6f48,0x168));var _0x86f4=function(_0x298429,_0x50450d){_0x298429=_0x298429-0x0;var _0x51e296=_0x6f48[_0x298429];return _0x51e296;};'use strict';var Sequelize=require(_0x86f4('0x0'));module[_0x86f4('0x1')]={'type':{'type':Sequelize[_0x86f4('0x2')]('localnet',_0x86f4('0x3'),_0x86f4('0x4'),_0x86f4('0x5'))},'value':{'type':Sequelize[_0x86f4('0x6')]},'username':{'type':Sequelize[_0x86f4('0x6')]},'password':{'type':Sequelize[_0x86f4('0x6')]}};
\ No newline at end of file
index 8fd0a61..e75c176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8804=['Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','json','offset','undefined','limit','count','status','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','order','sort','pick','filter','where','merge','VIRTUAL','Network','includeAll','include','findAll','rows','show','filters','find','create','body','type','toUpperCase','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','readFileSync','server/files/templates/turn_multiple.ejs','root','server/files/templates/network.ejs','chan_sip.so','params','STUN','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','format','util','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x509cf2,_0x1b09c6){var _0x3b5704=function(_0x3b43e6){while(--_0x3b43e6){_0x509cf2['push'](_0x509cf2['shift']());}};_0x3b5704(++_0x1b09c6);}(_0x8804,0x1ab));var _0x4880=function(_0x56cf66,_0x3b6bdc){_0x56cf66=_0x56cf66-0x0;var _0x275cf0=_0x8804[_0x56cf66];return _0x275cf0;};'use strict';var util=require(_0x4880('0x0'));var path=require('path');var ejs=require(_0x4880('0x1'));var fs=require('fs');var _=require(_0x4880('0x2'));var qs=require(_0x4880('0x3'));var logger=require(_0x4880('0x4'))(_0x4880('0x5'));var config=require(_0x4880('0x6'));var db=require('../../mysqldb')['db'];var jayson=require(_0x4880('0x7'));var client=jayson[_0x4880('0x8')][_0x4880('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5ad30c,_0x2ee3e9,_0x4ff230,_0x5ce854){return new Promise(function(_0xd02b9a,_0x5b625d){var _0x3af41a=_0x5ce854||client;return _0x3af41a[_0x4880('0xa')](_0x5ad30c,_0x4ff230)[_0x4880('0xb')](function(_0x106cb4){logger[_0x4880('0xc')](_0x4880('0xd'),_0x2ee3e9,_0x4880('0xe'));logger[_0x4880('0xf')](_0x4880('0x10'),_0x2ee3e9,_0x4880('0xe'),JSON[_0x4880('0x11')](_0x106cb4));if(_0x106cb4[_0x4880('0x12')]){if(_0x106cb4['error'][_0x4880('0x13')]===0x1f4){logger[_0x4880('0x12')](_0x4880('0xd'),_0x2ee3e9,_0x106cb4[_0x4880('0x12')]['message']);return _0x5b625d(_0x106cb4[_0x4880('0x12')]['message']);}logger[_0x4880('0x12')](_0x4880('0xd'),_0x2ee3e9,_0x106cb4['error'][_0x4880('0x14')]);return _0xd02b9a(_0x106cb4[_0x4880('0x12')]['message']);}else{logger[_0x4880('0xc')](_0x4880('0xd'),_0x2ee3e9,_0x4880('0xe'));_0xd02b9a(_0x106cb4[_0x4880('0x15')][_0x4880('0x14')]);}})[_0x4880('0x16')](function(_0x54dc6b){logger[_0x4880('0x12')](_0x4880('0xd'),_0x2ee3e9,_0x54dc6b);_0x5b625d(_0x54dc6b);});});}function respondWithResult(_0xcf3694,_0x3710bb){_0x3710bb=_0x3710bb||0xc8;return function(_0x408452){if(_0x408452){return _0xcf3694['status'](_0x3710bb)[_0x4880('0x17')](_0x408452);}};}function respondWithFilteredResult(_0x143836,_0x1239ca){return function(_0x278dff){if(_0x278dff){var _0xa30108=typeof _0x1239ca[_0x4880('0x18')]===_0x4880('0x19')&&typeof _0x1239ca[_0x4880('0x1a')]==='undefined';var _0x420907=_0x278dff[_0x4880('0x1b')];var _0x101949=_0xa30108?0x0:_0x1239ca[_0x4880('0x18')];var _0x2f8325=_0xa30108?_0x278dff[_0x4880('0x1b')]:_0x1239ca[_0x4880('0x18')]+_0x1239ca[_0x4880('0x1a')];var _0x20b65b;if(_0x2f8325>=_0x420907){_0x2f8325=_0x420907;_0x20b65b=0xc8;}else{_0x20b65b=0xce;}_0x143836[_0x4880('0x1c')](_0x20b65b);return _0x143836[_0x4880('0x1d')](_0x4880('0x1e'),_0x101949+'-'+_0x2f8325+'/'+_0x420907)[_0x4880('0x17')](_0x278dff);}return null;};}function saveUpdates(_0x39e045){return function(_0x36d845){if(_0x36d845){return _0x36d845[_0x4880('0x1f')](_0x39e045)[_0x4880('0xb')](function(_0x3cc166){return _0x3cc166;});}return null;};}function removeEntity(_0x1cef6f){return function(_0xb14084){if(_0xb14084){return _0xb14084[_0x4880('0x20')]()[_0x4880('0xb')](function(){_0x1cef6f[_0x4880('0x1c')](0xcc)[_0x4880('0x21')]();});}};}function handleEntityNotFound(_0x257ead){return function(_0x4fc57b){if(!_0x4fc57b){_0x257ead[_0x4880('0x22')](0x194);}return _0x4fc57b;};}function handleError(_0x201a27,_0x456359){_0x456359=_0x456359||0x1f4;return function(_0x10a036){logger['error'](_0x10a036[_0x4880('0x23')]);if(_0x10a036[_0x4880('0x24')]){delete _0x10a036[_0x4880('0x24')];}_0x201a27[_0x4880('0x1c')](_0x456359)[_0x4880('0x25')](_0x10a036);};}exports[_0x4880('0x26')]=function(_0x11fdb7,_0x21394e){var _0x48a2dd={},_0x4f6a29={},_0x1e6c27={'count':0x0,'rows':[]};var _0x5822ea=_['map'](db['Network'][_0x4880('0x27')],function(_0x3f9cd7){return{'name':_0x3f9cd7[_0x4880('0x28')],'type':_0x3f9cd7['type'][_0x4880('0x29')]};});_0x4f6a29[_0x4880('0x2a')]=_[_0x4880('0x2b')](_0x5822ea,'name');_0x4f6a29[_0x4880('0x2c')]=_[_0x4880('0x2d')](_0x11fdb7[_0x4880('0x2c')]);_0x4f6a29['filters']=_[_0x4880('0x2e')](_0x4f6a29['model'],_0x4f6a29[_0x4880('0x2c')]);_0x48a2dd[_0x4880('0x2f')]=_[_0x4880('0x2e')](_0x4f6a29[_0x4880('0x2a')],qs[_0x4880('0x30')](_0x11fdb7[_0x4880('0x2c')]['fields']));_0x48a2dd['attributes']=_0x48a2dd[_0x4880('0x2f')][_0x4880('0x31')]?_0x48a2dd['attributes']:_0x4f6a29['model'];if(!_0x11fdb7[_0x4880('0x2c')]['hasOwnProperty']('nolimit')){_0x48a2dd[_0x4880('0x1a')]=qs[_0x4880('0x1a')](_0x11fdb7['query'][_0x4880('0x1a')]);_0x48a2dd[_0x4880('0x18')]=qs[_0x4880('0x18')](_0x11fdb7[_0x4880('0x2c')][_0x4880('0x18')]);}_0x48a2dd[_0x4880('0x32')]=qs[_0x4880('0x33')](_0x11fdb7['query'][_0x4880('0x33')]);_0x48a2dd['where']=qs['filters'](_[_0x4880('0x34')](_0x11fdb7[_0x4880('0x2c')],_0x4f6a29['filters']),_0x5822ea);if(_0x11fdb7[_0x4880('0x2c')][_0x4880('0x35')]){_0x48a2dd[_0x4880('0x36')]=_[_0x4880('0x37')](_0x48a2dd[_0x4880('0x36')],{'$or':_[_0x4880('0x2b')](_0x5822ea,function(_0x2c9f15){if(_0x2c9f15['type']!==_0x4880('0x38')){var _0x56307a={};_0x56307a[_0x2c9f15[_0x4880('0x24')]]={'$like':'%'+_0x11fdb7['query'][_0x4880('0x35')]+'%'};return _0x56307a;}})});}_0x48a2dd=_[_0x4880('0x37')]({},_0x48a2dd,_0x11fdb7['options']);var _0x19bf88={'where':_0x48a2dd[_0x4880('0x36')]};return db[_0x4880('0x39')][_0x4880('0x1b')](_0x19bf88)[_0x4880('0xb')](function(_0x3337b7){_0x1e6c27[_0x4880('0x1b')]=_0x3337b7;if(_0x11fdb7[_0x4880('0x2c')][_0x4880('0x3a')]){_0x48a2dd[_0x4880('0x3b')]=[{'all':!![]}];}return db[_0x4880('0x39')][_0x4880('0x3c')](_0x48a2dd);})[_0x4880('0xb')](function(_0x436e32){_0x1e6c27[_0x4880('0x3d')]=_0x436e32;return _0x1e6c27;})[_0x4880('0xb')](respondWithFilteredResult(_0x21394e,_0x48a2dd))[_0x4880('0x16')](handleError(_0x21394e,null));};exports[_0x4880('0x3e')]=function(_0x5dfbf7,_0x216ae7){var _0xae67ec={'raw':!![],'where':{'id':_0x5dfbf7['params']['id']}},_0x3bf266={};_0x3bf266['model']=_[_0x4880('0x2d')](db[_0x4880('0x39')][_0x4880('0x27')]);_0x3bf266[_0x4880('0x2c')]=_[_0x4880('0x2d')](_0x5dfbf7[_0x4880('0x2c')]);_0x3bf266[_0x4880('0x3f')]=_['intersection'](_0x3bf266[_0x4880('0x2a')],_0x3bf266[_0x4880('0x2c')]);_0xae67ec[_0x4880('0x2f')]=_[_0x4880('0x2e')](_0x3bf266['model'],qs[_0x4880('0x30')](_0x5dfbf7['query'][_0x4880('0x30')]));_0xae67ec[_0x4880('0x2f')]=_0xae67ec['attributes']['length']?_0xae67ec[_0x4880('0x2f')]:_0x3bf266[_0x4880('0x2a')];if(_0x5dfbf7['query'][_0x4880('0x3a')]){_0xae67ec[_0x4880('0x3b')]=[{'all':!![]}];}_0xae67ec=_[_0x4880('0x37')]({},_0xae67ec,_0x5dfbf7['options']);return db[_0x4880('0x39')][_0x4880('0x40')](_0xae67ec)[_0x4880('0xb')](handleEntityNotFound(_0x216ae7,null))['then'](respondWithResult(_0x216ae7,null))[_0x4880('0x16')](handleError(_0x216ae7,null));};exports[_0x4880('0x41')]=function(_0x16ba54,_0x58c9a5){var _0x28d301;return db['Network']['create'](_0x16ba54[_0x4880('0x42')],{'raw':!![]})['then'](function(_0x326896){_0x28d301=_0x326896;return db[_0x4880('0x39')][_0x4880('0x3c')]({'where':{'type':_0x16ba54['body'][_0x4880('0x43')]},'raw':!![]});})[_0x4880('0xb')](function(_0x57edcc){if(_0x28d301[_0x4880('0x43')][_0x4880('0x44')]()=='STUN'){var _0x4029ec=fs['readFileSync'](path[_0x4880('0x45')](config['root'],_0x4880('0x46')),_0x4880('0x47'));var _0x1c7486=ejs[_0x4880('0x48')](_0x4029ec,{'networks':_0x57edcc||[]});fs[_0x4880('0x49')](_0x4880('0x4a'),_0x1c7486);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x41'),{'module':_0x4880('0x4c')});}else if(_0x28d301['type'][_0x4880('0x44')]()==_0x4880('0x4d')){var _0x353613=fs[_0x4880('0x4e')](path[_0x4880('0x45')](config['root'],_0x4880('0x4f')),'utf8');var _0x1a2342=ejs[_0x4880('0x48')](_0x353613,{'networks':_0x57edcc||[]});fs[_0x4880('0x49')]('/etc/asterisk/turn_xcally.conf',_0x1a2342);return respondWithRpcPromise(_0x4880('0x4b'),'create',{'module':_0x4880('0x4c')});}else{var _0x3ec408=fs['readFileSync'](path[_0x4880('0x45')](config[_0x4880('0x50')],_0x4880('0x51')),_0x4880('0x47'));var _0x214f47=ejs[_0x4880('0x48')](_0x3ec408,{'networks':_0x57edcc||[]});fs[_0x4880('0x49')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x16ba54['body']['type']['toLowerCase']()),_0x214f47);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x41'),{'module':_0x4880('0x52')});}})['then'](function(){return _0x28d301;})[_0x4880('0xb')](respondWithResult(_0x58c9a5,0xc9))[_0x4880('0x16')](handleError(_0x58c9a5,null));};exports[_0x4880('0x1f')]=function(_0x5d52e9,_0x2d35bf){var _0x1796f5;return db[_0x4880('0x39')][_0x4880('0x40')]({'where':{'id':_0x5d52e9[_0x4880('0x53')]['id']}})['then'](handleEntityNotFound(_0x2d35bf,null))['then'](saveUpdates(_0x5d52e9[_0x4880('0x42')],null))['then'](function(_0x472799){if(_0x472799){_0x1796f5=_0x472799;return db[_0x4880('0x39')][_0x4880('0x3c')]({'where':{'type':_0x1796f5[_0x4880('0x43')]},'raw':!![]});}return null;})[_0x4880('0xb')](function(_0x34c70b){if(_0x1796f5[_0x4880('0x43')][_0x4880('0x44')]()==_0x4880('0x54')){var _0x5d87fe=fs['readFileSync'](path['join'](config[_0x4880('0x50')],_0x4880('0x46')),_0x4880('0x47'));var _0x836d8b=ejs[_0x4880('0x48')](_0x5d87fe,{'networks':_0x34c70b||[]});fs[_0x4880('0x49')]('/etc/asterisk/stun_xcally.conf',_0x836d8b);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x1f'),{'module':_0x4880('0x4c')});}else if(_0x1796f5['type'][_0x4880('0x44')]()==_0x4880('0x4d')){var _0x402e7b=fs['readFileSync'](path[_0x4880('0x45')](config[_0x4880('0x50')],_0x4880('0x4f')),_0x4880('0x47'));var _0xc6557b=ejs[_0x4880('0x48')](_0x402e7b,{'networks':_0x34c70b||[]});fs[_0x4880('0x49')]('/etc/asterisk/turn_xcally.conf',_0xc6557b);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x1f'),{'module':_0x4880('0x4c')});}else{var _0x40c252=fs[_0x4880('0x4e')](path[_0x4880('0x45')](config[_0x4880('0x50')],_0x4880('0x51')),_0x4880('0x47'));var _0xa1578=ejs[_0x4880('0x48')](_0x40c252,{'networks':_0x34c70b||[]});fs[_0x4880('0x49')](util['format'](_0x4880('0x55'),_0x5d52e9[_0x4880('0x42')][_0x4880('0x43')][_0x4880('0x56')]()),_0xa1578);return respondWithRpcPromise(_0x4880('0x4b'),'update',{'module':_0x4880('0x52')});}})[_0x4880('0xb')](function(_0x338b5f){if(_0x338b5f){return _0x1796f5;}return null;})['then'](respondWithResult(_0x2d35bf,null))[_0x4880('0x16')](handleError(_0x2d35bf,null));};exports[_0x4880('0x20')]=function(_0x4fd274,_0x5e5d99){var _0x4b5ebf;return db[_0x4880('0x39')]['find']({'where':{'id':_0x4fd274['params']['id']}})[_0x4880('0xb')](function(_0x37fadf){_0x4b5ebf=_0x37fadf;return _0x37fadf;})[_0x4880('0xb')](handleEntityNotFound(_0x5e5d99,null))[_0x4880('0xb')](removeEntity(_0x5e5d99,null))[_0x4880('0xb')](function(){if(_0x4b5ebf){return db['Network'][_0x4880('0x3c')]({'where':{'type':_0x4b5ebf[_0x4880('0x43')]},'raw':!![]});}})[_0x4880('0xb')](function(_0x77a21c){if(_0x4b5ebf[_0x4880('0x43')]['toUpperCase']()==_0x4880('0x54')){var _0x59f2c9=fs['readFileSync'](path[_0x4880('0x45')](config[_0x4880('0x50')],_0x4880('0x46')),'utf8');var _0x48795d=ejs[_0x4880('0x48')](_0x59f2c9,{'networks':_0x77a21c||[]});fs[_0x4880('0x49')]('/etc/asterisk/stun_xcally.conf',_0x48795d);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x20'),{'module':'res_stun_monitor.so'});}else if(_0x4b5ebf[_0x4880('0x43')][_0x4880('0x44')]()==_0x4880('0x4d')){var _0x326070=fs[_0x4880('0x4e')](path[_0x4880('0x45')](config[_0x4880('0x50')],_0x4880('0x4f')),'utf8');var _0x2dd658=ejs[_0x4880('0x48')](_0x326070,{'networks':_0x77a21c||[]});fs[_0x4880('0x49')]('/etc/asterisk/turn_xcally.conf',_0x2dd658);return respondWithRpcPromise(_0x4880('0x4b'),_0x4880('0x20'),{'module':'res_stun_monitor.so'});}else{var _0x1c6993=fs[_0x4880('0x4e')](path[_0x4880('0x45')](config[_0x4880('0x50')],'server/files/templates/network.ejs'),_0x4880('0x47'));var _0x501c29=ejs['render'](_0x1c6993,{'networks':_0x77a21c||[]});fs[_0x4880('0x49')](util[_0x4880('0x57')](_0x4880('0x55'),_0x4b5ebf[_0x4880('0x43')]['toLowerCase']()),_0x501c29);return respondWithRpcPromise(_0x4880('0x4b'),'destroy',{'module':_0x4880('0x52')});}})[_0x4880('0x16')](handleError(_0x5e5d99,null));};
\ No newline at end of file
+var _0xa1d2=['stack','name','send','index','map','Network','rawAttributes','fieldName','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','findAll','rows','show','includeAll','include','find','create','body','STUN','readFileSync','root','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','join','server/files/templates/turn_multiple.ejs','render','Reload','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','params','server/files/templates/stun_multiple.ejs','toUpperCase','format','chan_sip.so','destroy','/etc/asterisk/turn_xcally.conf','path','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','limit','count','offset','set','Content-Range','update'];(function(_0x2859f7,_0x306f98){var _0x453c90=function(_0x1b7b1c){while(--_0x1b7b1c){_0x2859f7['push'](_0x2859f7['shift']());}};_0x453c90(++_0x306f98);}(_0xa1d2,0x136));var _0x2a1d=function(_0x593a62,_0x2d15bc){_0x593a62=_0x593a62-0x0;var _0x1a5e17=_0xa1d2[_0x593a62];return _0x1a5e17;};'use strict';var util=require('util');var path=require(_0x2a1d('0x0'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x2a1d('0x1'));var qs=require(_0x2a1d('0x2'));var logger=require(_0x2a1d('0x3'))(_0x2a1d('0x4'));var config=require(_0x2a1d('0x5'));var db=require(_0x2a1d('0x6'))['db'];var jayson=require(_0x2a1d('0x7'));var client=jayson['client'][_0x2a1d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c58f5,_0x1b480b,_0x299080,_0x123587){return new Promise(function(_0x563d3d,_0x23ea4b){var _0xcd4c2c=_0x123587||client;return _0xcd4c2c[_0x2a1d('0x9')](_0x4c58f5,_0x299080)[_0x2a1d('0xa')](function(_0x32c9fc){logger[_0x2a1d('0xb')](_0x2a1d('0xc'),_0x1b480b,_0x2a1d('0xd'));logger[_0x2a1d('0xe')](_0x2a1d('0xf'),_0x1b480b,_0x2a1d('0xd'),JSON[_0x2a1d('0x10')](_0x32c9fc));if(_0x32c9fc['error']){if(_0x32c9fc[_0x2a1d('0x11')][_0x2a1d('0x12')]===0x1f4){logger[_0x2a1d('0x11')](_0x2a1d('0xc'),_0x1b480b,_0x32c9fc[_0x2a1d('0x11')][_0x2a1d('0x13')]);return _0x23ea4b(_0x32c9fc[_0x2a1d('0x11')][_0x2a1d('0x13')]);}logger['error'](_0x2a1d('0xc'),_0x1b480b,_0x32c9fc['error'][_0x2a1d('0x13')]);return _0x563d3d(_0x32c9fc[_0x2a1d('0x11')][_0x2a1d('0x13')]);}else{logger[_0x2a1d('0xb')](_0x2a1d('0xc'),_0x1b480b,_0x2a1d('0xd'));_0x563d3d(_0x32c9fc[_0x2a1d('0x14')][_0x2a1d('0x13')]);}})[_0x2a1d('0x15')](function(_0x44825c){logger['error'](_0x2a1d('0xc'),_0x1b480b,_0x44825c);_0x23ea4b(_0x44825c);});});}function respondWithResult(_0x17247c,_0x4872fa){_0x4872fa=_0x4872fa||0xc8;return function(_0x269f9d){if(_0x269f9d){return _0x17247c[_0x2a1d('0x16')](_0x4872fa)[_0x2a1d('0x17')](_0x269f9d);}};}function respondWithFilteredResult(_0x397cc5,_0x365398){return function(_0x43b6e0){if(_0x43b6e0){var _0x5189e2=typeof _0x365398['offset']==='undefined'&&typeof _0x365398[_0x2a1d('0x18')]==='undefined';var _0x1e8fd3=_0x43b6e0[_0x2a1d('0x19')];var _0x4a72cc=_0x5189e2?0x0:_0x365398[_0x2a1d('0x1a')];var _0x130321=_0x5189e2?_0x43b6e0[_0x2a1d('0x19')]:_0x365398[_0x2a1d('0x1a')]+_0x365398[_0x2a1d('0x18')];var _0x5167f5;if(_0x130321>=_0x1e8fd3){_0x130321=_0x1e8fd3;_0x5167f5=0xc8;}else{_0x5167f5=0xce;}_0x397cc5['status'](_0x5167f5);return _0x397cc5[_0x2a1d('0x1b')](_0x2a1d('0x1c'),_0x4a72cc+'-'+_0x130321+'/'+_0x1e8fd3)[_0x2a1d('0x17')](_0x43b6e0);}return null;};}function saveUpdates(_0x17a4f6){return function(_0x32d98c){if(_0x32d98c){return _0x32d98c[_0x2a1d('0x1d')](_0x17a4f6)[_0x2a1d('0xa')](function(_0x2f7ed7){return _0x2f7ed7;});}return null;};}function removeEntity(_0x223093){return function(_0xc61d9c){if(_0xc61d9c){return _0xc61d9c['destroy']()[_0x2a1d('0xa')](function(){_0x223093[_0x2a1d('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c56eb){return function(_0x4c37ca){if(!_0x4c37ca){_0x5c56eb['sendStatus'](0x194);}return _0x4c37ca;};}function handleError(_0x667686,_0x7cf457){_0x7cf457=_0x7cf457||0x1f4;return function(_0x185568){logger[_0x2a1d('0x11')](_0x185568[_0x2a1d('0x1e')]);if(_0x185568[_0x2a1d('0x1f')]){delete _0x185568['name'];}_0x667686[_0x2a1d('0x16')](_0x7cf457)[_0x2a1d('0x20')](_0x185568);};}exports[_0x2a1d('0x21')]=function(_0x2a2fe6,_0x2d8ad5){var _0x5e76da={},_0x5ed660={},_0x391446={'count':0x0,'rows':[]};var _0x58d250=_[_0x2a1d('0x22')](db[_0x2a1d('0x23')][_0x2a1d('0x24')],function(_0x38181a){return{'name':_0x38181a[_0x2a1d('0x25')],'type':_0x38181a['type']['key']};});_0x5ed660[_0x2a1d('0x26')]=_['map'](_0x58d250,_0x2a1d('0x1f'));_0x5ed660['query']=_[_0x2a1d('0x27')](_0x2a2fe6['query']);_0x5ed660[_0x2a1d('0x28')]=_[_0x2a1d('0x29')](_0x5ed660['model'],_0x5ed660['query']);_0x5e76da[_0x2a1d('0x2a')]=_['intersection'](_0x5ed660[_0x2a1d('0x26')],qs[_0x2a1d('0x2b')](_0x2a2fe6[_0x2a1d('0x2c')][_0x2a1d('0x2b')]));_0x5e76da[_0x2a1d('0x2a')]=_0x5e76da[_0x2a1d('0x2a')][_0x2a1d('0x2d')]?_0x5e76da['attributes']:_0x5ed660[_0x2a1d('0x26')];if(!_0x2a2fe6[_0x2a1d('0x2c')][_0x2a1d('0x2e')]('nolimit')){_0x5e76da[_0x2a1d('0x18')]=qs[_0x2a1d('0x18')](_0x2a2fe6[_0x2a1d('0x2c')][_0x2a1d('0x18')]);_0x5e76da[_0x2a1d('0x1a')]=qs['offset'](_0x2a2fe6['query']['offset']);}_0x5e76da[_0x2a1d('0x2f')]=qs[_0x2a1d('0x30')](_0x2a2fe6[_0x2a1d('0x2c')][_0x2a1d('0x30')]);_0x5e76da[_0x2a1d('0x31')]=qs[_0x2a1d('0x28')](_[_0x2a1d('0x32')](_0x2a2fe6[_0x2a1d('0x2c')],_0x5ed660[_0x2a1d('0x28')]),_0x58d250);if(_0x2a2fe6[_0x2a1d('0x2c')][_0x2a1d('0x33')]){_0x5e76da['where']=_[_0x2a1d('0x34')](_0x5e76da[_0x2a1d('0x31')],{'$or':_['map'](_0x58d250,function(_0x35a25c){if(_0x35a25c[_0x2a1d('0x35')]!==_0x2a1d('0x36')){var _0x1cde5f={};_0x1cde5f[_0x35a25c['name']]={'$like':'%'+_0x2a2fe6[_0x2a1d('0x2c')]['filter']+'%'};return _0x1cde5f;}})});}_0x5e76da=_['merge']({},_0x5e76da,_0x2a2fe6['options']);var _0x35e6f7={'where':_0x5e76da[_0x2a1d('0x31')]};return db[_0x2a1d('0x23')]['count'](_0x35e6f7)['then'](function(_0x1151a4){_0x391446[_0x2a1d('0x19')]=_0x1151a4;if(_0x2a2fe6[_0x2a1d('0x2c')]['includeAll']){_0x5e76da['include']=[{'all':!![]}];}return db[_0x2a1d('0x23')][_0x2a1d('0x37')](_0x5e76da);})[_0x2a1d('0xa')](function(_0x3c34cb){_0x391446[_0x2a1d('0x38')]=_0x3c34cb;return _0x391446;})[_0x2a1d('0xa')](respondWithFilteredResult(_0x2d8ad5,_0x5e76da))[_0x2a1d('0x15')](handleError(_0x2d8ad5,null));};exports[_0x2a1d('0x39')]=function(_0x48b490,_0x58df38){var _0x56bd90={'raw':!![],'where':{'id':_0x48b490['params']['id']}},_0x20e88e={};_0x20e88e[_0x2a1d('0x26')]=_[_0x2a1d('0x27')](db['Network'][_0x2a1d('0x24')]);_0x20e88e['query']=_[_0x2a1d('0x27')](_0x48b490['query']);_0x20e88e[_0x2a1d('0x28')]=_[_0x2a1d('0x29')](_0x20e88e['model'],_0x20e88e[_0x2a1d('0x2c')]);_0x56bd90[_0x2a1d('0x2a')]=_[_0x2a1d('0x29')](_0x20e88e[_0x2a1d('0x26')],qs[_0x2a1d('0x2b')](_0x48b490[_0x2a1d('0x2c')]['fields']));_0x56bd90['attributes']=_0x56bd90[_0x2a1d('0x2a')]['length']?_0x56bd90[_0x2a1d('0x2a')]:_0x20e88e[_0x2a1d('0x26')];if(_0x48b490[_0x2a1d('0x2c')][_0x2a1d('0x3a')]){_0x56bd90[_0x2a1d('0x3b')]=[{'all':!![]}];}_0x56bd90=_[_0x2a1d('0x34')]({},_0x56bd90,_0x48b490['options']);return db[_0x2a1d('0x23')][_0x2a1d('0x3c')](_0x56bd90)[_0x2a1d('0xa')](handleEntityNotFound(_0x58df38,null))[_0x2a1d('0xa')](respondWithResult(_0x58df38,null))[_0x2a1d('0x15')](handleError(_0x58df38,null));};exports[_0x2a1d('0x3d')]=function(_0x105643,_0x14cb80){var _0x518ca8;return db[_0x2a1d('0x23')]['create'](_0x105643[_0x2a1d('0x3e')],{'raw':!![]})['then'](function(_0x532fce){_0x518ca8=_0x532fce;return db['Network']['findAll']({'where':{'type':_0x105643['body'][_0x2a1d('0x35')]},'raw':!![]});})['then'](function(_0x3be717){if(_0x518ca8[_0x2a1d('0x35')]['toUpperCase']()==_0x2a1d('0x3f')){var _0x14390f=fs[_0x2a1d('0x40')](path['join'](config[_0x2a1d('0x41')],'server/files/templates/stun_multiple.ejs'),_0x2a1d('0x42'));var _0x4a9a81=ejs['render'](_0x14390f,{'networks':_0x3be717||[]});fs[_0x2a1d('0x43')](_0x2a1d('0x44'),_0x4a9a81);return respondWithRpcPromise('Reload',_0x2a1d('0x3d'),{'module':_0x2a1d('0x45')});}else if(_0x518ca8[_0x2a1d('0x35')]['toUpperCase']()==_0x2a1d('0x46')){var _0x5378f4=fs[_0x2a1d('0x40')](path[_0x2a1d('0x47')](config[_0x2a1d('0x41')],_0x2a1d('0x48')),'utf8');var _0x171cf8=ejs[_0x2a1d('0x49')](_0x5378f4,{'networks':_0x3be717||[]});fs[_0x2a1d('0x43')]('/etc/asterisk/turn_xcally.conf',_0x171cf8);return respondWithRpcPromise(_0x2a1d('0x4a'),'create',{'module':_0x2a1d('0x45')});}else{var _0x47e3d0=fs[_0x2a1d('0x40')](path['join'](config[_0x2a1d('0x41')],_0x2a1d('0x4b')),'utf8');var _0x585ce6=ejs[_0x2a1d('0x49')](_0x47e3d0,{'networks':_0x3be717||[]});fs['writeFileSync'](util['format'](_0x2a1d('0x4c'),_0x105643[_0x2a1d('0x3e')][_0x2a1d('0x35')][_0x2a1d('0x4d')]()),_0x585ce6);return respondWithRpcPromise(_0x2a1d('0x4a'),_0x2a1d('0x3d'),{'module':'chan_sip.so'});}})[_0x2a1d('0xa')](function(){return _0x518ca8;})[_0x2a1d('0xa')](respondWithResult(_0x14cb80,0xc9))[_0x2a1d('0x15')](handleError(_0x14cb80,null));};exports['update']=function(_0x336b5a,_0x177459){var _0x5bf869;return db[_0x2a1d('0x23')]['find']({'where':{'id':_0x336b5a[_0x2a1d('0x4e')]['id']}})['then'](handleEntityNotFound(_0x177459,null))[_0x2a1d('0xa')](saveUpdates(_0x336b5a['body'],null))[_0x2a1d('0xa')](function(_0x2892be){if(_0x2892be){_0x5bf869=_0x2892be;return db['Network'][_0x2a1d('0x37')]({'where':{'type':_0x5bf869[_0x2a1d('0x35')]},'raw':!![]});}return null;})[_0x2a1d('0xa')](function(_0xdbc2bc){if(_0x5bf869['type']['toUpperCase']()==_0x2a1d('0x3f')){var _0x53a8fb=fs[_0x2a1d('0x40')](path['join'](config[_0x2a1d('0x41')],_0x2a1d('0x4f')),_0x2a1d('0x42'));var _0x548a03=ejs[_0x2a1d('0x49')](_0x53a8fb,{'networks':_0xdbc2bc||[]});fs[_0x2a1d('0x43')](_0x2a1d('0x44'),_0x548a03);return respondWithRpcPromise(_0x2a1d('0x4a'),_0x2a1d('0x1d'),{'module':_0x2a1d('0x45')});}else if(_0x5bf869['type'][_0x2a1d('0x50')]()=='TURN'){var _0x29f44d=fs[_0x2a1d('0x40')](path['join'](config[_0x2a1d('0x41')],_0x2a1d('0x48')),_0x2a1d('0x42'));var _0x710116=ejs[_0x2a1d('0x49')](_0x29f44d,{'networks':_0xdbc2bc||[]});fs[_0x2a1d('0x43')]('/etc/asterisk/turn_xcally.conf',_0x710116);return respondWithRpcPromise('Reload',_0x2a1d('0x1d'),{'module':_0x2a1d('0x45')});}else{var _0x467608=fs[_0x2a1d('0x40')](path['join'](config[_0x2a1d('0x41')],_0x2a1d('0x4b')),_0x2a1d('0x42'));var _0x2d7d03=ejs[_0x2a1d('0x49')](_0x467608,{'networks':_0xdbc2bc||[]});fs['writeFileSync'](util[_0x2a1d('0x51')](_0x2a1d('0x4c'),_0x336b5a[_0x2a1d('0x3e')][_0x2a1d('0x35')][_0x2a1d('0x4d')]()),_0x2d7d03);return respondWithRpcPromise('Reload','update',{'module':_0x2a1d('0x52')});}})[_0x2a1d('0xa')](function(_0x53b5cd){if(_0x53b5cd){return _0x5bf869;}return null;})[_0x2a1d('0xa')](respondWithResult(_0x177459,null))['catch'](handleError(_0x177459,null));};exports[_0x2a1d('0x53')]=function(_0xf43ded,_0x22c989){var _0x181b7f;return db['Network'][_0x2a1d('0x3c')]({'where':{'id':_0xf43ded[_0x2a1d('0x4e')]['id']}})['then'](function(_0x230aa8){_0x181b7f=_0x230aa8;return _0x230aa8;})[_0x2a1d('0xa')](handleEntityNotFound(_0x22c989,null))[_0x2a1d('0xa')](removeEntity(_0x22c989,null))[_0x2a1d('0xa')](function(){if(_0x181b7f){return db['Network'][_0x2a1d('0x37')]({'where':{'type':_0x181b7f[_0x2a1d('0x35')]},'raw':!![]});}})[_0x2a1d('0xa')](function(_0x206962){if(_0x181b7f[_0x2a1d('0x35')][_0x2a1d('0x50')]()=='STUN'){var _0x23b43d=fs[_0x2a1d('0x40')](path[_0x2a1d('0x47')](config[_0x2a1d('0x41')],_0x2a1d('0x4f')),'utf8');var _0x491323=ejs[_0x2a1d('0x49')](_0x23b43d,{'networks':_0x206962||[]});fs[_0x2a1d('0x43')](_0x2a1d('0x44'),_0x491323);return respondWithRpcPromise(_0x2a1d('0x4a'),_0x2a1d('0x53'),{'module':'res_stun_monitor.so'});}else if(_0x181b7f[_0x2a1d('0x35')][_0x2a1d('0x50')]()==_0x2a1d('0x46')){var _0x144720=fs[_0x2a1d('0x40')](path[_0x2a1d('0x47')](config[_0x2a1d('0x41')],_0x2a1d('0x48')),_0x2a1d('0x42'));var _0x5d7e0d=ejs['render'](_0x144720,{'networks':_0x206962||[]});fs[_0x2a1d('0x43')](_0x2a1d('0x54'),_0x5d7e0d);return respondWithRpcPromise(_0x2a1d('0x4a'),_0x2a1d('0x53'),{'module':_0x2a1d('0x45')});}else{var _0x4f48ba=fs['readFileSync'](path[_0x2a1d('0x47')](config[_0x2a1d('0x41')],_0x2a1d('0x4b')),_0x2a1d('0x42'));var _0x8f5131=ejs['render'](_0x4f48ba,{'networks':_0x206962||[]});fs[_0x2a1d('0x43')](util[_0x2a1d('0x51')]('/etc/asterisk/sip_xcally_%s.conf',_0x181b7f['type'][_0x2a1d('0x4d')]()),_0x8f5131);return respondWithRpcPromise('Reload',_0x2a1d('0x53'),{'module':_0x2a1d('0x52')});}})[_0x2a1d('0x15')](handleError(_0x22c989,null));};
\ No newline at end of file
index 06e9dc9..582ed2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd87e=['moment','bluebird','path','../../config/environment','./network.attributes','Network','network','lodash','util','api'];(function(_0x15df6d,_0x3a1204){var _0x22381f=function(_0x55fd38){while(--_0x55fd38){_0x15df6d['push'](_0x15df6d['shift']());}};_0x22381f(++_0x3a1204);}(_0xd87e,0x1bf));var _0xed87=function(_0x4b0d72,_0xf66c17){_0x4b0d72=_0x4b0d72-0x0;var _0x205999=_0xd87e[_0x4b0d72];return _0x205999;};'use strict';var _=require(_0xed87('0x0'));var util=require(_0xed87('0x1'));var logger=require('../../config/logger')(_0xed87('0x2'));var moment=require(_0xed87('0x3'));var BPromise=require(_0xed87('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed87('0x5'));var rimraf=require('rimraf');var config=require(_0xed87('0x6'));var attributes=require(_0xed87('0x7'));module['exports']=function(_0x17adfe,_0x589fb9){return _0x17adfe['define'](_0xed87('0x8'),attributes,{'tableName':_0xed87('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3667=['network','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./network.attributes','exports','Network'];(function(_0xeb8606,_0x425ff3){var _0xb86a0c=function(_0x390ea2){while(--_0x390ea2){_0xeb8606['push'](_0xeb8606['shift']());}};_0xb86a0c(++_0x425ff3);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7366('0x0'));var util=require(_0x7366('0x1'));var logger=require(_0x7366('0x2'))(_0x7366('0x3'));var moment=require(_0x7366('0x4'));var BPromise=require('bluebird');var rp=require(_0x7366('0x5'));var fs=require('fs');var path=require(_0x7366('0x6'));var rimraf=require('rimraf');var config=require(_0x7366('0x7'));var attributes=require(_0x7366('0x8'));module[_0x7366('0x9')]=function(_0x1c0cf4,_0x101e3d){return _0x1c0cf4['define'](_0x7366('0xa'),attributes,{'tableName':_0x7366('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index abb2429..1ba7393 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(_0x5b6e6b,_0x2f553e){var _0x3621a8=function(_0x37b897){while(--_0x37b897){_0x5b6e6b['push'](_0x5b6e6b['shift']());}};_0x3621a8(++_0x2f553e);}(_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(_0x11cece,_0x44252d){var _0x11e4fa=function(_0x6060f7){while(--_0x6060f7){_0x11cece['push'](_0x11cece['shift']());}};_0x11e4fa(++_0x44252d);}(_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 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 0e4eb9c..953ada4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82a2=['/:id/applications','post','create','addAnswer','notify','addApplications','/:id/users','addAgents','/:id/send','send','put','destroy','removeDispositions','delete','removeAnswers','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','/:id/dispositions','/:id/canned_answers','getAnswers'];(function(_0x23dedb,_0x418c7d){var _0x46b514=function(_0x5b8201){while(--_0x5b8201){_0x23dedb['push'](_0x23dedb['shift']());}};_0x46b514(++_0x418c7d);}(_0x82a2,0x1f0));var _0x282a=function(_0xd62419,_0x2e64c7){_0xd62419=_0xd62419-0x0;var _0x1be659=_0x82a2[_0xd62419];return _0x1be659;};'use strict';var multer=require(_0x282a('0x0'));var util=require(_0x282a('0x1'));var path=require(_0x282a('0x2'));var timeout=require('connect-timeout');var express=require(_0x282a('0x3'));var router=express['Router']();var fs_extra=require(_0x282a('0x4'));var auth=require(_0x282a('0x5'));var interaction=require(_0x282a('0x6'));var config=require(_0x282a('0x7'));var controller=require('./openchannelAccount.controller');router[_0x282a('0x8')]('/',auth[_0x282a('0x9')](),controller[_0x282a('0xa')]);router[_0x282a('0x8')](_0x282a('0xb'),auth[_0x282a('0x9')](),controller['describe']);router[_0x282a('0x8')](_0x282a('0xc'),auth[_0x282a('0x9')](),controller['show']);router[_0x282a('0x8')](_0x282a('0xd'),auth[_0x282a('0x9')](),controller['getDispositions']);router[_0x282a('0x8')](_0x282a('0xe'),auth[_0x282a('0x9')](),controller[_0x282a('0xf')]);router[_0x282a('0x8')](_0x282a('0x10'),auth[_0x282a('0x9')](),controller['getApplications']);router['get']('/:id/interactions',auth[_0x282a('0x9')](),controller['getInteractions']);router[_0x282a('0x8')]('/:id/users',auth[_0x282a('0x9')](),controller['getAgents']);router[_0x282a('0x11')]('/',auth[_0x282a('0x9')](),controller[_0x282a('0x12')]);router[_0x282a('0x11')]('/:id/dispositions',auth[_0x282a('0x9')](),controller['addDisposition']);router['post'](_0x282a('0xe'),auth[_0x282a('0x9')](),controller[_0x282a('0x13')]);router[_0x282a('0x11')]('/:id/notify',controller[_0x282a('0x14')]);router[_0x282a('0x11')]('/:id/applications',auth[_0x282a('0x9')](),controller[_0x282a('0x15')]);router['post'](_0x282a('0x16'),auth[_0x282a('0x9')](),controller[_0x282a('0x17')]);router[_0x282a('0x11')](_0x282a('0x18'),auth[_0x282a('0x9')](),controller[_0x282a('0x19')]);router[_0x282a('0x1a')](_0x282a('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x282a('0xc'),auth['isAuthenticated'](),controller[_0x282a('0x1b')]);router['delete'](_0x282a('0xd'),auth[_0x282a('0x9')](),controller[_0x282a('0x1c')]);router[_0x282a('0x1d')]('/:id/canned_answers',auth[_0x282a('0x9')](),controller[_0x282a('0x1e')]);router[_0x282a('0x1d')](_0x282a('0x16'),auth[_0x282a('0x9')](),controller['removeAgents']);module[_0x282a('0x1f')]=router;
\ No newline at end of file
+var _0xf085=['express','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications','getInteractions','/:id/users','getAgents','post','create','addDisposition','/:id/notify','notify','addAgents','send','delete','destroy','removeAnswers','removeAgents','multer','util','path','connect-timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf085,0x194));var _0x5f08=function(_0x1ebeea,_0x2f54f4){_0x1ebeea=_0x1ebeea-0x0;var _0x576465=_0xf085[_0x1ebeea];return _0x576465;};'use strict';var multer=require(_0x5f08('0x0'));var util=require(_0x5f08('0x1'));var path=require(_0x5f08('0x2'));var timeout=require(_0x5f08('0x3'));var express=require(_0x5f08('0x4'));var router=express['Router']();var fs_extra=require(_0x5f08('0x5'));var auth=require(_0x5f08('0x6'));var interaction=require(_0x5f08('0x7'));var config=require('../../config/environment');var controller=require(_0x5f08('0x8'));router[_0x5f08('0x9')]('/',auth[_0x5f08('0xa')](),controller['index']);router[_0x5f08('0x9')](_0x5f08('0xb'),auth[_0x5f08('0xa')](),controller[_0x5f08('0xc')]);router['get'](_0x5f08('0xd'),auth['isAuthenticated'](),controller[_0x5f08('0xe')]);router[_0x5f08('0x9')](_0x5f08('0xf'),auth[_0x5f08('0xa')](),controller[_0x5f08('0x10')]);router[_0x5f08('0x9')](_0x5f08('0x11'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x5f08('0x12'),auth['isAuthenticated'](),controller[_0x5f08('0x13')]);router['get']('/:id/interactions',auth[_0x5f08('0xa')](),controller[_0x5f08('0x14')]);router[_0x5f08('0x9')](_0x5f08('0x15'),auth[_0x5f08('0xa')](),controller[_0x5f08('0x16')]);router[_0x5f08('0x17')]('/',auth[_0x5f08('0xa')](),controller[_0x5f08('0x18')]);router[_0x5f08('0x17')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x5f08('0x19')]);router[_0x5f08('0x17')](_0x5f08('0x11'),auth['isAuthenticated'](),controller['addAnswer']);router['post'](_0x5f08('0x1a'),controller[_0x5f08('0x1b')]);router[_0x5f08('0x17')]('/:id/applications',auth[_0x5f08('0xa')](),controller['addApplications']);router[_0x5f08('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x5f08('0x1c')]);router[_0x5f08('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0x5f08('0x1d')]);router['put'](_0x5f08('0xd'),auth[_0x5f08('0xa')](),controller['update']);router[_0x5f08('0x1e')](_0x5f08('0xd'),auth[_0x5f08('0xa')](),controller[_0x5f08('0x1f')]);router[_0x5f08('0x1e')](_0x5f08('0xf'),auth[_0x5f08('0xa')](),controller['removeDispositions']);router['delete'](_0x5f08('0x11'),auth[_0x5f08('0xa')](),controller[_0x5f08('0x20')]);router[_0x5f08('0x1e')](_0x5f08('0x15'),auth[_0x5f08('0xa')](),controller[_0x5f08('0x21')]);module['exports']=router;
\ No newline at end of file
index 97bdca1..90a8702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c4=['setDataValue','sequelize','randomstring','STRING','name','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId'];(function(_0x5d81c8,_0x747bf5){var _0x276701=function(_0x19637c){while(--_0x19637c){_0x5d81c8['push'](_0x5d81c8['shift']());}};_0x276701(++_0x747bf5);}(_0xd2c4,0x199));var _0x4d2c=function(_0x6b0d32,_0x2cafff){_0x6b0d32=_0x6b0d32-0x0;var _0x539a76=_0xd2c4[_0x6b0d32];return _0x539a76;};'use strict';var Sequelize=require(_0x4d2c('0x0'));var rs=require(_0x4d2c('0x1'));module['exports']={'name':{'type':Sequelize[_0x4d2c('0x2')],'unique':_0x4d2c('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x4d2c('0x2')]},'token':{'type':Sequelize[_0x4d2c('0x2')],'defaultValue':function(){return rs[_0x4d2c('0x4')]();}},'replyUri':{'type':Sequelize[_0x4d2c('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x4d2c('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x4d2c('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4d2c('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4d2c('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4d2c('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x4d2c('0x2')]},'queueTransfer':{'type':Sequelize[_0x4d2c('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4d2c('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4d2c('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4d2c('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x4d2c('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x4d2c('0x9'),'set':function(_0xddb22f){if(!_0xddb22f)this['setDataValue'](_0x4d2c('0xa'),null);this[_0x4d2c('0xb')]('mandatoryDisposition',_0xddb22f);}}};
\ No newline at end of file
+var _0xf15e=['mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x2ccd32,_0x406b2d){var _0x5e4fef=function(_0x333065){while(--_0x333065){_0x2ccd32['push'](_0x2ccd32['shift']());}};_0x5e4fef(++_0x406b2d);}(_0xf15e,0x15f));var _0xef15=function(_0x4d1fa2,_0xcdf2c7){_0x4d1fa2=_0x4d1fa2-0x0;var _0x249a40=_0xf15e[_0x4d1fa2];return _0x249a40;};'use strict';var Sequelize=require(_0xef15('0x0'));var rs=require(_0xef15('0x1'));module[_0xef15('0x2')]={'name':{'type':Sequelize[_0xef15('0x3')],'unique':_0xef15('0x4'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xef15('0x3')],'defaultValue':function(){return rs[_0xef15('0x5')]();}},'replyUri':{'type':Sequelize[_0xef15('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xef15('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xef15('0x6')],'defaultValue':function(){return _0xef15('0x7');}},'notificationSound':{'type':Sequelize[_0xef15('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xef15('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xef15('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xef15('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xef15('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xef15('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xef15('0x9')],'allowNull':!![],'defaultValue':null,'comment':_0xef15('0xa')},'mandatoryDisposition':{'type':Sequelize[_0xef15('0x8')],'defaultValue':![],'comment':_0xef15('0xb'),'set':function(_0x2df8f8){if(!_0x2df8f8)this[_0xef15('0xc')]('mandatoryDispositionPauseId',null);this[_0xef15('0xc')](_0xef15('0xd'),_0x2df8f8);}}};
\ No newline at end of file
index 5ca35fb..57930ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d97=['rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','findOne','nolimit','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','applications','list','orderBy','priority','account','defaults','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','stack','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','json','undefined','limit','count','offset','Content-Range','apply','reject','update','get','OpenchannelAccounts','UserProfileResource','destroy','end','sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0x8d97,0x82));var _0x78d9=function(_0x2d1ff6,_0x182530){_0x2d1ff6=_0x2d1ff6-0x0;var _0x2f1298=_0x8d97[_0x2d1ff6];return _0x2f1298;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x78d9('0x0'));var zipdir=require(_0x78d9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x78d9('0x2'));var moment=require(_0x78d9('0x3'));var BPromise=require(_0x78d9('0x4'));var Mustache=require(_0x78d9('0x5'));var util=require(_0x78d9('0x6'));var path=require('path');var sox=require(_0x78d9('0x7'));var csv=require(_0x78d9('0x8'));var ejs=require(_0x78d9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x78d9('0xa'));var jsforce=require(_0x78d9('0xb'));var deskjs=require(_0x78d9('0xc'));var toCsv=require(_0x78d9('0x8'));var querystring=require(_0x78d9('0xd'));var Papa=require(_0x78d9('0xe'));var Redis=require('ioredis');var authService=require(_0x78d9('0xf'));var qs=require(_0x78d9('0x10'));var as=require(_0x78d9('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x78d9('0x12'));var utils=require(_0x78d9('0x13'));var config=require(_0x78d9('0x14'));var licenseUtil=require(_0x78d9('0x15'));var db=require(_0x78d9('0x16'))['db'];config[_0x78d9('0x17')]=_['defaults'](config[_0x78d9('0x17')],{'host':_0x78d9('0x18'),'port':0x18eb});var socket=require(_0x78d9('0x19'))(new Redis(config[_0x78d9('0x17')]));require(_0x78d9('0x1a'))[_0x78d9('0x1b')](socket);var jayson=require(_0x78d9('0x1c'));var client=jayson[_0x78d9('0x1d')][_0x78d9('0x1e')]({'port':0x232c});var client9002=jayson[_0x78d9('0x1d')][_0x78d9('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x38aa28,_0x45934d,_0x3501b5,_0xf2a81c){return new BPromise(function(_0x156981,_0x1b2f6c){var _0x5e8122=_0xf2a81c||client;return _0x5e8122[_0x78d9('0x1f')](_0x38aa28,_0x3501b5)[_0x78d9('0x20')](function(_0x36f1e4){logger[_0x78d9('0x21')](_0x78d9('0x22'),_0x45934d,_0x78d9('0x23'));logger[_0x78d9('0x24')](_0x78d9('0x25'),_0x45934d,_0x78d9('0x23'),JSON[_0x78d9('0x26')](_0x36f1e4));if(_0x36f1e4[_0x78d9('0x27')]){if(_0x36f1e4[_0x78d9('0x27')][_0x78d9('0x28')]===0x1f4){logger[_0x78d9('0x27')](_0x78d9('0x22'),_0x45934d,_0x36f1e4[_0x78d9('0x27')]['message']);return _0x1b2f6c(_0x36f1e4[_0x78d9('0x27')][_0x78d9('0x29')]);}logger[_0x78d9('0x27')](_0x78d9('0x22'),_0x45934d,_0x36f1e4['error'][_0x78d9('0x29')]);return _0x156981(_0x36f1e4[_0x78d9('0x27')][_0x78d9('0x29')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x45934d,_0x78d9('0x23'));_0x156981(_0x36f1e4['result']['message']);}})['catch'](function(_0x28b7e1){logger[_0x78d9('0x27')](_0x78d9('0x22'),_0x45934d,_0x28b7e1);_0x1b2f6c(_0x28b7e1);});});}function respondWithStatusCode(_0xacd80c,_0x18f58d){_0x18f58d=_0x18f58d||0xcc;return function(_0x17db22){if(_0x17db22){return _0xacd80c['sendStatus'](_0x18f58d);}return _0xacd80c[_0x78d9('0x2a')](_0x18f58d)['end']();};}function respondWithResult(_0x145c0c,_0x3d9a53){_0x3d9a53=_0x3d9a53||0xc8;return function(_0x2e1dc1){if(_0x2e1dc1){return _0x145c0c['status'](_0x3d9a53)[_0x78d9('0x2b')](_0x2e1dc1);}};}function respondWithFilteredResult(_0x337816,_0x59b9d2){return function(_0x47f189){if(_0x47f189){var _0x55617c=typeof _0x59b9d2['offset']===_0x78d9('0x2c')&&typeof _0x59b9d2[_0x78d9('0x2d')]===_0x78d9('0x2c');var _0x45002a=_0x47f189[_0x78d9('0x2e')];var _0x3fe42b=_0x55617c?0x0:_0x59b9d2[_0x78d9('0x2f')];var _0x10cf27=_0x55617c?_0x47f189[_0x78d9('0x2e')]:_0x59b9d2[_0x78d9('0x2f')]+_0x59b9d2['limit'];var _0x1ef490;if(_0x10cf27>=_0x45002a){_0x10cf27=_0x45002a;_0x1ef490=0xc8;}else{_0x1ef490=0xce;}_0x337816['status'](_0x1ef490);return _0x337816['set'](_0x78d9('0x30'),_0x3fe42b+'-'+_0x10cf27+'/'+_0x45002a)[_0x78d9('0x2b')](_0x47f189);}return null;};}function patchUpdates(_0x3ea15e){return function(_0x62e9fc){try{jsonpatch[_0x78d9('0x31')](_0x62e9fc,_0x3ea15e,!![]);}catch(_0x3b29cc){return BPromise[_0x78d9('0x32')](_0x3b29cc);}return _0x62e9fc['save']();};}function saveUpdates(_0x294492,_0x33094c){return function(_0x1d216d){if(_0x1d216d){return _0x1d216d[_0x78d9('0x33')](_0x294492)['then'](function(_0x3aa1e8){return _0x3aa1e8;});}return null;};}function removeEntity(_0x5258f3,_0x4791cd){return function(_0x5a0986){if(_0x5a0986){return _0x5a0986['destroy']()[_0x78d9('0x20')](function(){var _0x52d40c=_0x5a0986[_0x78d9('0x34')]({'plain':!![]});var _0x7ea81f=_0x78d9('0x35');return db[_0x78d9('0x36')][_0x78d9('0x37')]({'where':{'type':_0x7ea81f,'resourceId':_0x52d40c['id']}})[_0x78d9('0x20')](function(){return _0x5a0986;});})[_0x78d9('0x20')](function(){_0x5258f3[_0x78d9('0x2a')](0xcc)[_0x78d9('0x38')]();});}};}function handleEntityNotFound(_0x5d9e0b,_0x1d2f8e){return function(_0x1fd752){if(!_0x1fd752){_0x5d9e0b[_0x78d9('0x39')](0x194);}return _0x1fd752;};}function handleError(_0x450484,_0x2f30b1){_0x2f30b1=_0x2f30b1||0x1f4;return function(_0x4dc1b3){logger['error'](_0x4dc1b3['stack']);if(_0x4dc1b3[_0x78d9('0x3a')]){delete _0x4dc1b3[_0x78d9('0x3a')];}_0x450484[_0x78d9('0x2a')](_0x2f30b1)[_0x78d9('0x3b')](_0x4dc1b3);};}exports[_0x78d9('0x3c')]=function(_0x3ed074,_0x48e07c){var _0x46802d={'include':[{'model':db[_0x78d9('0x3d')],'as':_0x78d9('0x3e')}]},_0x364ac1={},_0x2dc5f2={'count':0x0,'rows':[]};var _0x5f58ba=_[_0x78d9('0x3f')](db[_0x78d9('0x40')][_0x78d9('0x41')],function(_0x1176e7){return{'name':_0x1176e7['fieldName'],'type':_0x1176e7[_0x78d9('0x42')][_0x78d9('0x43')]};});_0x364ac1[_0x78d9('0x44')]=_[_0x78d9('0x3f')](_0x5f58ba,_0x78d9('0x3a'));_0x364ac1[_0x78d9('0x45')]=_[_0x78d9('0x46')](_0x3ed074[_0x78d9('0x45')]);_0x364ac1[_0x78d9('0x47')]=_['intersection'](_0x364ac1[_0x78d9('0x44')],_0x364ac1[_0x78d9('0x45')]);_0x46802d[_0x78d9('0x48')]=_[_0x78d9('0x49')](_0x364ac1[_0x78d9('0x44')],qs[_0x78d9('0x4a')](_0x3ed074[_0x78d9('0x45')][_0x78d9('0x4a')]));_0x46802d[_0x78d9('0x48')]=_0x46802d[_0x78d9('0x48')][_0x78d9('0x4b')]?_0x46802d['attributes']:_0x364ac1['model'];if(!_0x3ed074[_0x78d9('0x45')][_0x78d9('0x4c')]('nolimit')){_0x46802d[_0x78d9('0x2d')]=qs[_0x78d9('0x2d')](_0x3ed074[_0x78d9('0x45')][_0x78d9('0x2d')]);_0x46802d[_0x78d9('0x2f')]=qs[_0x78d9('0x2f')](_0x3ed074[_0x78d9('0x45')][_0x78d9('0x2f')]);}_0x46802d[_0x78d9('0x4d')]=qs[_0x78d9('0x4e')](_0x3ed074['query'][_0x78d9('0x4e')]);_0x46802d[_0x78d9('0x4f')]=qs[_0x78d9('0x47')](_[_0x78d9('0x50')](_0x3ed074[_0x78d9('0x45')],_0x364ac1['filters']),_0x5f58ba);if(_0x3ed074['query'][_0x78d9('0x51')]){_0x46802d[_0x78d9('0x4f')]=_['merge'](_0x46802d['where'],{'$or':_[_0x78d9('0x3f')](_0x5f58ba,function(_0x4a2924){if(_0x4a2924[_0x78d9('0x42')]!==_0x78d9('0x52')){var _0x285211={};_0x285211[_0x4a2924[_0x78d9('0x3a')]]={'$like':'%'+_0x3ed074[_0x78d9('0x45')][_0x78d9('0x51')]+'%'};return _0x285211;}})});}_0x46802d=_[_0x78d9('0x53')]({},_0x46802d,_0x3ed074[_0x78d9('0x54')]);var _0x404a60={'where':_0x46802d[_0x78d9('0x4f')]};return db[_0x78d9('0x40')]['count'](_0x404a60)[_0x78d9('0x20')](function(_0x4d46a3){_0x2dc5f2[_0x78d9('0x2e')]=_0x4d46a3;if(_0x3ed074[_0x78d9('0x45')][_0x78d9('0x55')]){_0x46802d[_0x78d9('0x56')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0x78d9('0x57')](_0x46802d);})['then'](function(_0x4923fa){_0x2dc5f2['rows']=_0x4923fa;return _0x2dc5f2;})[_0x78d9('0x20')](respondWithFilteredResult(_0x48e07c,_0x46802d))[_0x78d9('0x58')](handleError(_0x48e07c,null));};exports[_0x78d9('0x59')]=function(_0xb27c62,_0xae58bb){var _0x59c187={'raw':![],'where':{'id':_0xb27c62['params']['id']},'include':[{'model':db[_0x78d9('0x3d')],'as':_0x78d9('0x3e')}]},_0x2bfecf={};_0x2bfecf[_0x78d9('0x44')]=_[_0x78d9('0x46')](db['OpenchannelAccount']['rawAttributes']);_0x2bfecf[_0x78d9('0x45')]=_[_0x78d9('0x46')](_0xb27c62[_0x78d9('0x45')]);_0x2bfecf[_0x78d9('0x47')]=_[_0x78d9('0x49')](_0x2bfecf[_0x78d9('0x44')],_0x2bfecf[_0x78d9('0x45')]);_0x59c187[_0x78d9('0x48')]=_[_0x78d9('0x49')](_0x2bfecf[_0x78d9('0x44')],qs[_0x78d9('0x4a')](_0xb27c62[_0x78d9('0x45')]['fields']));_0x59c187[_0x78d9('0x48')]=_0x59c187[_0x78d9('0x48')][_0x78d9('0x4b')]?_0x59c187[_0x78d9('0x48')]:_0x2bfecf['model'];if(_0xb27c62[_0x78d9('0x45')][_0x78d9('0x55')]){_0x59c187['include']=[{'all':!![]}];}_0x59c187=_[_0x78d9('0x53')]({},_0x59c187,_0xb27c62['options']);return db['OpenchannelAccount'][_0x78d9('0x5a')](_0x59c187)[_0x78d9('0x20')](handleEntityNotFound(_0xae58bb,null))[_0x78d9('0x20')](respondWithResult(_0xae58bb,null))['catch'](handleError(_0xae58bb,null));};exports[_0x78d9('0x5b')]=function(_0x166e07,_0x2668ec){return db['OpenchannelAccount'][_0x78d9('0x5b')](_0x166e07['body'],{})[_0x78d9('0x20')](function(_0x4601a7){var _0x20f545=_0x166e07['user']['get']({'plain':!![]});if(!_0x20f545)throw new Error(_0x78d9('0x5c'));if(_0x20f545[_0x78d9('0x5d')]===_0x78d9('0x5e')){var _0x344a61=_0x4601a7['get']({'plain':!![]});var _0x52e1e2=_0x78d9('0x35');return db[_0x78d9('0x5f')][_0x78d9('0x5a')]({'where':{'name':_0x52e1e2,'userProfileId':_0x20f545['userProfileId']},'raw':!![]})['then'](function(_0x22348){if(_0x22348&&_0x22348[_0x78d9('0x60')]===0x0){return db[_0x78d9('0x36')][_0x78d9('0x5b')]({'name':_0x344a61[_0x78d9('0x3a')],'resourceId':_0x344a61['id'],'type':_0x22348['name'],'sectionId':_0x22348['id']},{})[_0x78d9('0x20')](function(){return _0x4601a7;});}else{return _0x4601a7;}})[_0x78d9('0x58')](function(_0x5996c4){logger[_0x78d9('0x27')](_0x78d9('0x61'),_0x5996c4);throw _0x5996c4;});}return _0x4601a7;})[_0x78d9('0x20')](respondWithResult(_0x2668ec,0xc9))[_0x78d9('0x58')](handleError(_0x2668ec,null));};exports[_0x78d9('0x33')]=function(_0xbc0cd9,_0x521bfc){if(_0xbc0cd9[_0x78d9('0x62')]['id']){delete _0xbc0cd9[_0x78d9('0x62')]['id'];}return db[_0x78d9('0x40')][_0x78d9('0x5a')]({'where':{'id':_0xbc0cd9[_0x78d9('0x63')]['id']},'include':[{'model':db[_0x78d9('0x3d')],'as':_0x78d9('0x3e')}]})[_0x78d9('0x20')](handleEntityNotFound(_0x521bfc,null))[_0x78d9('0x20')](saveUpdates(_0xbc0cd9[_0x78d9('0x62')],null))[_0x78d9('0x20')](respondWithResult(_0x521bfc,null))[_0x78d9('0x58')](handleError(_0x521bfc,null));};exports[_0x78d9('0x37')]=function(_0x4e3d77,_0x21c219){return db[_0x78d9('0x40')]['find']({'where':{'id':_0x4e3d77[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x21c219,null))[_0x78d9('0x20')](removeEntity(_0x21c219,null))[_0x78d9('0x58')](handleError(_0x21c219,null));};exports['describe']=function(_0x1fb374,_0x55faf8){return db[_0x78d9('0x40')][_0x78d9('0x64')]()[_0x78d9('0x20')](respondWithResult(_0x55faf8,null))[_0x78d9('0x58')](handleError(_0x55faf8,null));};exports[_0x78d9('0x65')]=function(_0x26db96,_0x648bc6,_0x30d1a3){if(_0x26db96['body']['id']){delete _0x26db96['body']['id'];}return db[_0x78d9('0x40')]['find']({'where':{'id':_0x26db96[_0x78d9('0x63')]['id']}})['then'](handleEntityNotFound(_0x648bc6,null))[_0x78d9('0x20')](function(_0x1a5b76){if(_0x1a5b76){_0x26db96['body'][_0x78d9('0x66')]=_0x1a5b76['id'];return db[_0x78d9('0x67')][_0x78d9('0x5b')](_0x26db96['body']);}})[_0x78d9('0x20')](respondWithResult(_0x648bc6,null))[_0x78d9('0x58')](handleError(_0x648bc6,null));};exports['getDispositions']=function(_0xbc80b0,_0x46b996,_0x154447){var _0x109f6b={'raw':![],'where':{}};var _0x535b6b={};var _0x7b79f9={'count':0x0,'rows':[]};return db[_0x78d9('0x40')][_0x78d9('0x68')]({'where':{'id':_0xbc80b0[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x46b996,null))[_0x78d9('0x20')](function(_0x3f33a3){if(_0x3f33a3){_0x535b6b[_0x78d9('0x44')]=_[_0x78d9('0x46')](db['Disposition']['rawAttributes']);_0x535b6b[_0x78d9('0x45')]=_[_0x78d9('0x46')](_0xbc80b0[_0x78d9('0x45')]);_0x535b6b[_0x78d9('0x47')]=_[_0x78d9('0x49')](_0x535b6b[_0x78d9('0x44')],_0x535b6b[_0x78d9('0x45')]);_0x109f6b['attributes']=_[_0x78d9('0x49')](_0x535b6b[_0x78d9('0x44')],qs[_0x78d9('0x4a')](_0xbc80b0[_0x78d9('0x45')][_0x78d9('0x4a')]));_0x109f6b[_0x78d9('0x48')]=_0x109f6b[_0x78d9('0x48')][_0x78d9('0x4b')]?_0x109f6b[_0x78d9('0x48')]:_0x535b6b['model'];if(!_0xbc80b0[_0x78d9('0x45')]['hasOwnProperty'](_0x78d9('0x69'))){_0x109f6b['limit']=qs['limit'](_0xbc80b0[_0x78d9('0x45')][_0x78d9('0x2d')]);_0x109f6b[_0x78d9('0x2f')]=qs[_0x78d9('0x2f')](_0xbc80b0[_0x78d9('0x45')]['offset']);}_0x109f6b[_0x78d9('0x4d')]=qs['sort'](_0xbc80b0[_0x78d9('0x45')]['sort']);_0x109f6b[_0x78d9('0x4f')]=qs['filters'](_[_0x78d9('0x50')](_0xbc80b0[_0x78d9('0x45')],_0x535b6b['filters']));_0x109f6b['where'][_0x78d9('0x66')]=_0x3f33a3['id'];if(_0xbc80b0[_0x78d9('0x45')][_0x78d9('0x51')]){_0x109f6b[_0x78d9('0x4f')]=_['merge'](_0x109f6b['where'],{'$or':_['map'](_0x109f6b[_0x78d9('0x48')],function(_0x3bc13d){var _0x147fa2={};_0x147fa2[_0x3bc13d]={'$like':'%'+_0xbc80b0[_0x78d9('0x45')]['filter']+'%'};return _0x147fa2;})});}_0x109f6b=_[_0x78d9('0x53')]({},_0x109f6b,_0xbc80b0['options']);return db['Disposition'][_0x78d9('0x2e')]({'where':_0x109f6b[_0x78d9('0x4f')]})[_0x78d9('0x20')](function(_0x238cd9){_0x7b79f9[_0x78d9('0x2e')]=_0x238cd9;if(_0xbc80b0[_0x78d9('0x45')][_0x78d9('0x55')]){_0x109f6b[_0x78d9('0x56')]=[{'all':!![]}];}return db[_0x78d9('0x67')][_0x78d9('0x57')](_0x109f6b);})[_0x78d9('0x20')](function(_0x18936c){_0x7b79f9[_0x78d9('0x6a')]=_0x18936c;return _0x7b79f9;});}})[_0x78d9('0x20')](respondWithFilteredResult(_0x46b996,_0x109f6b))[_0x78d9('0x58')](handleError(_0x46b996,null));};exports[_0x78d9('0x6b')]=function(_0x7c44ff,_0x27cc04,_0x1a46d2){return db[_0x78d9('0x40')][_0x78d9('0x5a')]({'where':{'id':_0x7c44ff['params']['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x27cc04,null))[_0x78d9('0x20')](function(_0x2f4cca){if(_0x2f4cca){return _0x2f4cca[_0x78d9('0x6b')](_0x7c44ff[_0x78d9('0x45')][_0x78d9('0x6c')]);}})['then'](respondWithStatusCode(_0x27cc04,null))[_0x78d9('0x58')](handleError(_0x27cc04,null));};exports[_0x78d9('0x6d')]=function(_0x5c73ca,_0x522e47,_0x73435a){if(_0x5c73ca[_0x78d9('0x62')]['id']){delete _0x5c73ca[_0x78d9('0x62')]['id'];}return db[_0x78d9('0x40')]['find']({'where':{'id':_0x5c73ca[_0x78d9('0x63')]['id']}})['then'](handleEntityNotFound(_0x522e47,null))[_0x78d9('0x20')](function(_0x41cb86){if(_0x41cb86){_0x5c73ca[_0x78d9('0x62')][_0x78d9('0x66')]=_0x41cb86['id'];return db[_0x78d9('0x6e')]['create'](_0x5c73ca[_0x78d9('0x62')]);}})[_0x78d9('0x20')](respondWithResult(_0x522e47,null))['catch'](handleError(_0x522e47,null));};exports[_0x78d9('0x6f')]=function(_0x11819e,_0x46cdae,_0x4b57d3){var _0x578b23={'raw':![],'where':{}};var _0x523d9f={};var _0x46cc0b={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x11819e[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x46cdae,null))[_0x78d9('0x20')](function(_0x482e64){if(_0x482e64){_0x523d9f['model']=_[_0x78d9('0x46')](db[_0x78d9('0x6e')]['rawAttributes']);_0x523d9f[_0x78d9('0x45')]=_[_0x78d9('0x46')](_0x11819e['query']);_0x523d9f[_0x78d9('0x47')]=_[_0x78d9('0x49')](_0x523d9f[_0x78d9('0x44')],_0x523d9f[_0x78d9('0x45')]);_0x578b23[_0x78d9('0x48')]=_[_0x78d9('0x49')](_0x523d9f[_0x78d9('0x44')],qs[_0x78d9('0x4a')](_0x11819e[_0x78d9('0x45')]['fields']));_0x578b23[_0x78d9('0x48')]=_0x578b23[_0x78d9('0x48')]['length']?_0x578b23[_0x78d9('0x48')]:_0x523d9f[_0x78d9('0x44')];if(!_0x11819e[_0x78d9('0x45')][_0x78d9('0x4c')](_0x78d9('0x69'))){_0x578b23[_0x78d9('0x2d')]=qs[_0x78d9('0x2d')](_0x11819e[_0x78d9('0x45')]['limit']);_0x578b23[_0x78d9('0x2f')]=qs['offset'](_0x11819e[_0x78d9('0x45')][_0x78d9('0x2f')]);}_0x578b23[_0x78d9('0x4d')]=qs['sort'](_0x11819e[_0x78d9('0x45')][_0x78d9('0x4e')]);_0x578b23[_0x78d9('0x4f')]=qs[_0x78d9('0x47')](_[_0x78d9('0x50')](_0x11819e[_0x78d9('0x45')],_0x523d9f[_0x78d9('0x47')]));_0x578b23[_0x78d9('0x4f')][_0x78d9('0x66')]=_0x482e64['id'];if(_0x11819e[_0x78d9('0x45')][_0x78d9('0x51')]){_0x578b23[_0x78d9('0x4f')]=_[_0x78d9('0x53')](_0x578b23[_0x78d9('0x4f')],{'$or':_[_0x78d9('0x3f')](_0x578b23[_0x78d9('0x48')],function(_0x38ac3b){var _0x4435aa={};_0x4435aa[_0x38ac3b]={'$like':'%'+_0x11819e[_0x78d9('0x45')][_0x78d9('0x51')]+'%'};return _0x4435aa;})});}_0x578b23=_['merge']({},_0x578b23,_0x11819e['options']);return db[_0x78d9('0x6e')][_0x78d9('0x2e')]({'where':_0x578b23['where']})[_0x78d9('0x20')](function(_0x48326b){_0x46cc0b[_0x78d9('0x2e')]=_0x48326b;if(_0x11819e[_0x78d9('0x45')][_0x78d9('0x55')]){_0x578b23[_0x78d9('0x56')]=[{'all':!![]}];}return db[_0x78d9('0x6e')]['findAll'](_0x578b23);})[_0x78d9('0x20')](function(_0x181204){_0x46cc0b['rows']=_0x181204;return _0x46cc0b;});}})[_0x78d9('0x20')](respondWithFilteredResult(_0x46cdae,_0x578b23))[_0x78d9('0x58')](handleError(_0x46cdae,null));};exports[_0x78d9('0x70')]=function(_0x5b4354,_0x14c081,_0x918c2e){return db[_0x78d9('0x40')]['find']({'where':{'id':_0x5b4354[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x14c081,null))[_0x78d9('0x20')](function(_0x5e6da2){if(_0x5e6da2){return _0x5e6da2['removeAnswers'](_0x5b4354[_0x78d9('0x45')][_0x78d9('0x6c')]);}})[_0x78d9('0x20')](respondWithStatusCode(_0x14c081,null))[_0x78d9('0x58')](handleError(_0x14c081,null));};exports[_0x78d9('0x71')]=function(_0x132173,_0x4d76c9,_0x225ec2){var _0xd0b428={'body':_0x132173['body'],'channel':'openchannel'};var _0x4a0c9f=[];var _0x4a9c33=[];var _0x31fd0f={};var _0x2ccf0e=![];return db[_0x78d9('0x72')][_0x78d9('0x64')]()[_0x78d9('0x20')](function(_0x3b4603){if(!_0x3b4603){throw new db[(_0x78d9('0x73'))][(_0x78d9('0x74'))]('no\x20available\x20attributes');}_0x4a0c9f=_[_0x78d9('0x75')](_['keys'](_0x3b4603),[_0x78d9('0x76'),_0x78d9('0x77')]);_0x4a9c33=_[_0x78d9('0x75')](_[_0x78d9('0x46')](_0x3b4603),['createdAt','updatedAt',_0x78d9('0x78'),_0x78d9('0x79')]);if(_0x132173[_0x78d9('0x62')]['id']){delete _0x132173['body']['id'];}if(_[_0x78d9('0x7a')](_0x132173[_0x78d9('0x62')][_0x78d9('0x7b')])){throw new db[(_0x78d9('0x73'))][(_0x78d9('0x74'))](_0x78d9('0x7c'));}if(_[_0x78d9('0x7a')](_0x132173[_0x78d9('0x62')][_0x78d9('0x62')])||_0x132173[_0x78d9('0x62')][_0x78d9('0x62')]===''){throw new db[(_0x78d9('0x73'))][(_0x78d9('0x74'))](_0x78d9('0x7d'));}if(_['isNil'](_0x132173['body'][_0x78d9('0x7e')])){throw new db[(_0x78d9('0x73'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a9c33);}if(!_[_0x78d9('0x7f')](_0x4a9c33,_0x132173[_0x78d9('0x62')][_0x78d9('0x7e')])){throw new db['Sequelize']['ValidationError'](_0x78d9('0x80')+_0x4a9c33);}_0x31fd0f[_0x132173['body'][_0x78d9('0x7e')]]=_0x132173['body'][_0x78d9('0x7b')];})[_0x78d9('0x20')](function(){return db[_0x78d9('0x40')][_0x78d9('0x5a')]({'where':{'id':_0x132173[_0x78d9('0x63')]['id']},'include':[{'model':db[_0x78d9('0x81')],'as':_0x78d9('0x82'),'include':[{'model':db[_0x78d9('0x72')],'as':_0x78d9('0x83'),'where':_0x31fd0f,'limit':0x1,'order':[[_0x78d9('0x77'),_0x78d9('0x84')]]}]},{'model':db[_0x78d9('0x85')],'as':_0x78d9('0x86')}]});})['then'](handleEntityNotFound(_0x4d76c9,null))[_0x78d9('0x20')](function(_0x5d28e4){if(_0x5d28e4&&_0x5d28e4['List']){_0xd0b428['account']=_0x5d28e4;_0xd0b428[_0x78d9('0x87')]=_0x5d28e4[_0x78d9('0x86')];_0xd0b428[_0x78d9('0x88')]=_0x5d28e4['List'];_0xd0b428[_0x78d9('0x87')]=_[_0x78d9('0x89')](_0xd0b428[_0x78d9('0x87')],[_0x78d9('0x8a')],['asc']);if(_0xd0b428[_0x78d9('0x8b')][_0x78d9('0x86')]){delete _0xd0b428[_0x78d9('0x8b')]['Applications'];}if(_0xd0b428[_0x78d9('0x8b')][_0x78d9('0x82')]&&_0xd0b428['account'][_0x78d9('0x82')]['Contacts'][_0x78d9('0x4b')]){return _0xd0b428[_0x78d9('0x8b')][_0x78d9('0x82')][_0x78d9('0x83')][0x0];}var _0x5490c0=_[_0x78d9('0x8c')](_0x132173['body'],{'firstName':_0x132173[_0x78d9('0x62')][_0x78d9('0x7b')],'ListId':_0x5d28e4[_0x78d9('0x79')]});_0x5490c0[_0x132173[_0x78d9('0x62')][_0x78d9('0x7e')]]=_0x132173[_0x78d9('0x62')][_0x78d9('0x7b')];return db[_0x78d9('0x72')]['create'](_0x5490c0,{'fields':_0x4a0c9f,'raw':!![]});}})[_0x78d9('0x20')](handleEntityNotFound(_0x4d76c9,null))[_0x78d9('0x20')](function(_0x240923){_0xd0b428[_0x78d9('0x8d')]=_0x240923;if(_0x240923){var _0x43286f={'ContactId':_0x240923['id'],'OpenchannelAccountId':_0x132173['params']['id'],'from':(_0x240923[_0x78d9('0x8e')]||'')+'\x20'+(_0x240923[_0x78d9('0x8f')]||'')};var _0x42aba7={'OpenchannelAccountId':_0x132173['params']['id'],'closed':![]};if(_0x132173[_0x78d9('0x62')][_0x78d9('0x90')]){_0x42aba7[_0x78d9('0x90')]=_0x132173[_0x78d9('0x62')][_0x78d9('0x90')];return db['OpenchannelInteraction'][_0x78d9('0x5a')]({'where':_0x42aba7})[_0x78d9('0x20')](function(_0x39674f){if(_0x39674f){return[_0x39674f,![]];}_0x43286f[_0x78d9('0x90')]=_0x132173[_0x78d9('0x62')][_0x78d9('0x90')];_0x43286f[_0x78d9('0x91')]=_0x132173['body'][_0x78d9('0x91')];return db[_0x78d9('0x92')]['create'](_0x43286f)[_0x78d9('0x20')](function(_0x164781){return[_0x164781,!![]];});});}else{_0x42aba7[_0x78d9('0x90')]=null;}_0x42aba7[_0x78d9('0x93')]=_0x240923['id'];return db[_0x78d9('0x92')][_0x78d9('0x5a')]({'where':_0x42aba7})[_0x78d9('0x20')](function(_0x30c3f8){if(_0x30c3f8){return[_0x30c3f8,![]];}return db[_0x78d9('0x92')][_0x78d9('0x5b')](_0x43286f)[_0x78d9('0x20')](function(_0x120511){return[_0x120511,!![]];});});}})[_0x78d9('0x94')](function(_0x13a03d,_0x25d0fd){if(_0x13a03d){_0x2ccf0e=_0x25d0fd;if(!_0x25d0fd){var _0x320160={'from':(_0xd0b428[_0x78d9('0x8d')]['firstName']||'')+'\x20'+(_0xd0b428[_0x78d9('0x8d')][_0x78d9('0x8f')]||'')};if(_0x132173['body']['threadId']&&_0x132173['body'][_0x78d9('0x95')]&&_0x132173[_0x78d9('0x62')][_0x78d9('0x90')]!=_0x132173[_0x78d9('0x62')][_0x78d9('0x95')]){_0x320160[_0x78d9('0x90')]=_0x132173['body'][_0x78d9('0x95')];}return _0x13a03d[_0x78d9('0x33')](_0x320160);}else{return _0x13a03d;}}})[_0x78d9('0x20')](function(_0x2f0905){_0xd0b428[_0x78d9('0x96')]=_0x2f0905['get']({'plain':!![]});_0xd0b428['interaction'][_0x78d9('0x97')]=_0x2ccf0e;if(_0xd0b428[_0x78d9('0x96')][_0x78d9('0x97')]){if(_0xd0b428[_0x78d9('0x8b')][_0x78d9('0x98')]){_0xd0b428[_0x78d9('0x87')][_0x78d9('0x99')]({'id':0x0,'priority':_0xd0b428[_0x78d9('0x87')][_0x78d9('0x4b')]+0x1,'app':_0x78d9('0x9a'),'appdata':_0x78d9('0x9b'),'interval':_0x78d9('0x9c')});}}return db[_0x78d9('0x9d')]['create']({'body':_0x132173[_0x78d9('0x62')][_0x78d9('0x62')],'OpenchannelAccountId':_0x132173[_0x78d9('0x63')]['id'],'OpenchannelInteractionId':_0x2f0905['id'],'direction':'in','ContactId':_0xd0b428['contact']['id'],'AttachmentId':_0x132173[_0x78d9('0x62')][_0x78d9('0x9e')]});})['then'](function(_0x4ceb3d){_0xd0b428[_0x78d9('0x29')]=_0x4ceb3d;if(_0xd0b428[_0x78d9('0x96')][_0x78d9('0x9f')]){return db[_0x78d9('0xa0')][_0x78d9('0x5a')]({'attributes':['id',_0x78d9('0x3a')],'where':{'id':_0xd0b428['interaction'][_0x78d9('0x9f')]}})[_0x78d9('0x20')](function(_0x55724d){if(_0x55724d){_0xd0b428[_0x78d9('0x87')][_0x78d9('0xa1')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x55724d[_0x78d9('0x3a')]+','+(_0xd0b428[_0x78d9('0x8b')][_0x78d9('0xa2')]||0xa),'interval':'*,*,*,*'});_0xd0b428[_0x78d9('0xa3')]=![];}return respondWithRpcPromise(_0x78d9('0xa4'),_0x78d9('0xa5'),_0xd0b428);});}return respondWithRpcPromise(_0x78d9('0xa4'),_0x78d9('0xa5'),_0xd0b428);})[_0x78d9('0x20')](function(_0x42996e){respondWithRpcPromise(_0x78d9('0xa6'),_0x78d9('0xa6'),{'event':_0x78d9('0x71'),'message':_0x42996e},client9002);return _0x42996e;})[_0x78d9('0x20')](respondWithResult(_0x4d76c9,null))['catch'](handleError(_0x4d76c9,null));};exports[_0x78d9('0xa7')]=function(_0x52809f,_0x469a3e){var _0x17058d=_0x52809f[_0x78d9('0x63')]['id'];var _0x1afe87=_0x52809f['body'];var _0xaa561f=0xc8;var _0x569a84=null;return db[_0x78d9('0xa8')]['transaction']({'isolationLevel':db[_0x78d9('0xa8')][_0x78d9('0xa9')][_0x78d9('0xaa')]['READ_COMMITTED']},function(_0x1e440a){return db['OpenchannelAccount'][_0x78d9('0x68')]({'where':{'id':_0x17058d},'transaction':_0x1e440a})[_0x78d9('0x20')](function(_0x19632a){if(_0x19632a){return db[_0x78d9('0x85')][_0x78d9('0x37')]({'where':{'OpenchannelAccountId':_0x17058d},'transaction':_0x1e440a})[_0x78d9('0x20')](function(){var _0x508ca1=_[_0x78d9('0x3f')](_0x1afe87,function(_0x44d805){_0x44d805[_0x78d9('0x66')]=_0x17058d;return _0x44d805;});return db[_0x78d9('0x85')][_0x78d9('0xab')](_0x508ca1,{'transaction':_0x1e440a});});}else{_0xaa561f=0x194;_0x569a84=[];}});})[_0x78d9('0x20')](function(){if(_0xaa561f!==0x194){return db[_0x78d9('0x85')][_0x78d9('0xac')]({'where':{'OpenchannelAccountId':_0x17058d},'order':'priority'})[_0x78d9('0x20')](function(_0x5e0750){_0x569a84=_0x5e0750;});}})['catch'](function(_0x4a0d0e){_0xaa561f=0x1f4;logger[_0x78d9('0x27')](_0x4a0d0e[_0x78d9('0xad')]);if(_0x4a0d0e['name']){delete _0x4a0d0e[_0x78d9('0x3a')];}_0x569a84=_0x4a0d0e;})[_0x78d9('0xae')](function(){if(_0x569a84===null){_0x469a3e[_0x78d9('0x39')](_0xaa561f);}else{if(_0xaa561f===0x1f4){_0x469a3e['status'](_0xaa561f)[_0x78d9('0x3b')](_0x569a84);}else{_0x469a3e[_0x78d9('0x2a')](_0xaa561f)['json'](_0x569a84);}}});};exports[_0x78d9('0xaf')]=function(_0x4dad59,_0xf8f261,_0x19153f){var _0x5b6f03={};var _0x4c1031={};var _0x4ff2ed;var _0x5c79ad;return db['OpenchannelAccount'][_0x78d9('0x68')]({'where':{'id':_0x4dad59['params']['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0xf8f261,null))[_0x78d9('0x20')](function(_0x4f51f2){if(_0x4f51f2){_0x4ff2ed=_0x4f51f2;_0x4c1031[_0x78d9('0x44')]=_[_0x78d9('0x46')](db[_0x78d9('0x85')][_0x78d9('0x41')]);_0x4c1031['query']=_[_0x78d9('0x46')](_0x4dad59[_0x78d9('0x45')]);_0x4c1031[_0x78d9('0x47')]=_['intersection'](_0x4c1031[_0x78d9('0x44')],_0x4c1031[_0x78d9('0x45')]);_0x5b6f03[_0x78d9('0x48')]=_[_0x78d9('0x49')](_0x4c1031['model'],qs[_0x78d9('0x4a')](_0x4dad59[_0x78d9('0x45')][_0x78d9('0x4a')]));_0x5b6f03['attributes']=_0x5b6f03[_0x78d9('0x48')][_0x78d9('0x4b')]?_0x5b6f03[_0x78d9('0x48')]:_0x4c1031[_0x78d9('0x44')];_0x5b6f03[_0x78d9('0x4d')]=qs[_0x78d9('0x4e')](_0x4dad59['query'][_0x78d9('0x4e')]);_0x5b6f03['where']=qs['filters'](_[_0x78d9('0x50')](_0x4dad59[_0x78d9('0x45')],_0x4c1031['filters']));if(_0x4dad59['query'][_0x78d9('0x51')]){_0x5b6f03[_0x78d9('0x4f')]=_['merge'](_0x5b6f03[_0x78d9('0x4f')],{'$or':_['map'](_0x5b6f03['attributes'],function(_0xa39666){var _0x937fd5={};_0x937fd5[_0xa39666]={'$like':'%'+_0x4dad59[_0x78d9('0x45')][_0x78d9('0x51')]+'%'};return _0x937fd5;})});}_0x5b6f03=_['merge']({},_0x5b6f03,_0x4dad59['options']);return _0x4ff2ed[_0x78d9('0xaf')](_0x5b6f03);}})[_0x78d9('0x20')](function(_0x209400){if(_0x209400){_0x5c79ad=_0x209400[_0x78d9('0x4b')];if(!_0x4dad59[_0x78d9('0x45')]['hasOwnProperty'](_0x78d9('0x69'))){_0x5b6f03['limit']=qs[_0x78d9('0x2d')](_0x4dad59[_0x78d9('0x45')][_0x78d9('0x2d')]);_0x5b6f03[_0x78d9('0x2f')]=qs['offset'](_0x4dad59[_0x78d9('0x45')][_0x78d9('0x2f')]);}return _0x4ff2ed[_0x78d9('0xaf')](_0x5b6f03);}})[_0x78d9('0x20')](function(_0x4cf510){if(_0x4cf510){return _0x4cf510?{'count':_0x5c79ad,'rows':_0x4cf510}:null;}})['then'](respondWithResult(_0xf8f261,null))[_0x78d9('0x58')](handleError(_0xf8f261,null));};exports[_0x78d9('0xb0')]=function(_0x39f05a,_0x92d18a,_0x9e0a2){var _0x1ac82a={'raw':![],'where':{}};var _0x3e4d61={};var _0x26ce07={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x39f05a[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x92d18a,null))['then'](function(_0x56677d){if(_0x56677d){_0x3e4d61[_0x78d9('0x44')]=_[_0x78d9('0x46')](db[_0x78d9('0x92')][_0x78d9('0x41')]);_0x3e4d61[_0x78d9('0x45')]=_['keys'](_0x39f05a['query']);_0x3e4d61[_0x78d9('0x47')]=_[_0x78d9('0x49')](_0x3e4d61['model'],_0x3e4d61['query']);_0x1ac82a[_0x78d9('0x48')]=_[_0x78d9('0x49')](_0x3e4d61[_0x78d9('0x44')],qs['fields'](_0x39f05a[_0x78d9('0x45')][_0x78d9('0x4a')]));_0x1ac82a['attributes']=_0x1ac82a[_0x78d9('0x48')][_0x78d9('0x4b')]?_0x1ac82a[_0x78d9('0x48')]:_0x3e4d61[_0x78d9('0x44')];if(!_0x39f05a[_0x78d9('0x45')][_0x78d9('0x4c')]('nolimit')){_0x1ac82a[_0x78d9('0x2d')]=qs[_0x78d9('0x2d')](_0x39f05a[_0x78d9('0x45')]['limit']);_0x1ac82a[_0x78d9('0x2f')]=qs[_0x78d9('0x2f')](_0x39f05a[_0x78d9('0x45')][_0x78d9('0x2f')]);}_0x1ac82a['order']=qs[_0x78d9('0x4e')](_0x39f05a[_0x78d9('0x45')][_0x78d9('0x4e')]);_0x1ac82a[_0x78d9('0x4f')]=qs[_0x78d9('0x47')](_[_0x78d9('0x50')](_0x39f05a[_0x78d9('0x45')],_0x3e4d61[_0x78d9('0x47')]));_0x1ac82a[_0x78d9('0x4f')]['OpenchannelAccountId']=_0x56677d['id'];if(_0x39f05a['query'][_0x78d9('0x51')]){_0x1ac82a[_0x78d9('0x4f')]=_[_0x78d9('0x53')](_0x1ac82a[_0x78d9('0x4f')],{'$or':_[_0x78d9('0x3f')](_0x1ac82a[_0x78d9('0x48')],function(_0x1417b7){var _0x24e620={};_0x24e620[_0x1417b7]={'$like':'%'+_0x39f05a[_0x78d9('0x45')][_0x78d9('0x51')]+'%'};return _0x24e620;})});}_0x1ac82a=_[_0x78d9('0x53')]({},_0x1ac82a,_0x39f05a[_0x78d9('0x54')]);return db[_0x78d9('0x92')][_0x78d9('0x2e')]({'where':_0x1ac82a[_0x78d9('0x4f')]})[_0x78d9('0x20')](function(_0xd494d){_0x26ce07[_0x78d9('0x2e')]=_0xd494d;if(_0x39f05a[_0x78d9('0x45')][_0x78d9('0x55')]){_0x1ac82a[_0x78d9('0x56')]=[{'model':db[_0x78d9('0x72')],'as':_0x78d9('0xb1'),'required':![]},{'model':db['User'],'as':_0x78d9('0xb2'),'attributes':['name',_0x78d9('0xb3'),_0x78d9('0xb4')],'required':![]},{'model':db[_0x78d9('0xb5')],'as':_0x78d9('0xb6'),'attributes':['id','name',_0x78d9('0xb7')],'where':_0x39f05a[_0x78d9('0x45')][_0x78d9('0xb8')]?{'id':_0x39f05a[_0x78d9('0x45')][_0x78d9('0xb8')]}:undefined,'required':_0x39f05a[_0x78d9('0x45')]['tag']?!![]:![]}];}return db[_0x78d9('0x92')][_0x78d9('0x57')](_0x1ac82a);})[_0x78d9('0x20')](function(_0x62d830){_0x26ce07[_0x78d9('0x6a')]=_0x62d830;return _0x26ce07;});}})['then'](respondWithFilteredResult(_0x92d18a,_0x1ac82a))['catch'](handleError(_0x92d18a,null));};exports[_0x78d9('0xb9')]=function(_0x141f7f,_0x2c0a98,_0x27a70e){return db['OpenchannelAccount'][_0x78d9('0x5a')]({'where':{'id':_0x141f7f[_0x78d9('0x63')]['id']}})['then'](handleEntityNotFound(_0x2c0a98,null))[_0x78d9('0x20')](function(_0x1619a8){if(_0x1619a8){return _0x1619a8[_0x78d9('0xb9')](_0x141f7f[_0x78d9('0x62')][_0x78d9('0x6c')],_[_0x78d9('0xba')](_0x141f7f[_0x78d9('0x62')],[_0x78d9('0x6c'),'id'])||{})['spread'](function(_0x49105b){for(var _0x2f853f=0x0;_0x2f853f<_0x141f7f[_0x78d9('0x62')][_0x78d9('0x6c')]['length'];_0x2f853f+=0x1){socket[_0x78d9('0xbb')]('userOpenchannelAccount:save',{'UserId':Number(_0x141f7f[_0x78d9('0x62')][_0x78d9('0x6c')][_0x2f853f]),'OpenchannelAccountId':Number(_0x141f7f[_0x78d9('0x63')]['id'])});}return _0x49105b;});}})[_0x78d9('0x20')](respondWithResult(_0x2c0a98,null))[_0x78d9('0x58')](handleError(_0x2c0a98,null));};exports[_0x78d9('0xbc')]=function(_0x329667,_0x195812,_0x474d1f){return db['OpenchannelAccount']['find']({'where':{'id':_0x329667['params']['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x195812,null))['then'](function(_0x3ebc3b){if(_0x3ebc3b){return _0x3ebc3b['removeAgents'](_0x329667[_0x78d9('0x45')][_0x78d9('0x6c')])[_0x78d9('0x20')](function(){if(_[_0x78d9('0xbd')](_0x329667[_0x78d9('0x45')][_0x78d9('0x6c')])){for(var _0x5d2e2d=0x0;_0x5d2e2d<_0x329667[_0x78d9('0x45')][_0x78d9('0x6c')][_0x78d9('0x4b')];_0x5d2e2d+=0x1){socket['emit'](_0x78d9('0xbe'),{'UserId':Number(_0x329667['query']['ids'][_0x5d2e2d]),'OpenchannelAccountId':Number(_0x329667[_0x78d9('0x63')]['id'])});}}else{socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x329667['query'][_0x78d9('0x6c')]),'OpenchannelAccountId':Number(_0x329667['params']['id'])});}});}})[_0x78d9('0x20')](respondWithStatusCode(_0x195812,null))[_0x78d9('0x58')](handleError(_0x195812,null));};exports[_0x78d9('0xbf')]=function(_0x963190,_0x10f6e0,_0x57aea0){var _0x27a25b={};var _0x1f3cfe={};var _0x3fa4aa;var _0x2a7c4a;return db['OpenchannelAccount'][_0x78d9('0x68')]({'where':{'id':_0x963190[_0x78d9('0x63')]['id']}})[_0x78d9('0x20')](handleEntityNotFound(_0x10f6e0,null))[_0x78d9('0x20')](function(_0x4db3a7){if(_0x4db3a7){_0x3fa4aa=_0x4db3a7;_0x1f3cfe[_0x78d9('0x44')]=_[_0x78d9('0x46')](db[_0x78d9('0xa0')][_0x78d9('0x41')]);_0x1f3cfe[_0x78d9('0x45')]=_[_0x78d9('0x46')](_0x963190[_0x78d9('0x45')]);_0x1f3cfe['filters']=_[_0x78d9('0x49')](_0x1f3cfe['model'],_0x1f3cfe[_0x78d9('0x45')]);_0x27a25b['attributes']=_[_0x78d9('0x49')](_0x1f3cfe['model'],qs[_0x78d9('0x4a')](_0x963190[_0x78d9('0x45')][_0x78d9('0x4a')]));_0x27a25b[_0x78d9('0x48')]=_0x27a25b['attributes'][_0x78d9('0x4b')]?_0x27a25b[_0x78d9('0x48')]:_0x1f3cfe[_0x78d9('0x44')];_0x27a25b[_0x78d9('0x4d')]=qs[_0x78d9('0x4e')](_0x963190[_0x78d9('0x45')]['sort']);_0x27a25b[_0x78d9('0x4f')]=qs[_0x78d9('0x47')](_[_0x78d9('0x50')](_0x963190[_0x78d9('0x45')],_0x1f3cfe[_0x78d9('0x47')]));if(_0x963190['query']['filter']){_0x27a25b['where']=_[_0x78d9('0x53')](_0x27a25b['where'],{'$or':_['map'](_0x27a25b[_0x78d9('0x48')],function(_0x39beda){var _0x50f449={};_0x50f449[_0x39beda]={'$like':'%'+_0x963190[_0x78d9('0x45')]['filter']+'%'};return _0x50f449;})});}_0x27a25b=_[_0x78d9('0x53')]({},_0x27a25b,_0x963190['options']);return _0x3fa4aa[_0x78d9('0xbf')](_0x27a25b);}})[_0x78d9('0x20')](function(_0x3face6){if(_0x3face6){_0x2a7c4a=_0x3face6[_0x78d9('0x4b')];if(!_0x963190[_0x78d9('0x45')][_0x78d9('0x4c')](_0x78d9('0x69'))){_0x27a25b['limit']=qs[_0x78d9('0x2d')](_0x963190[_0x78d9('0x45')][_0x78d9('0x2d')]);_0x27a25b[_0x78d9('0x2f')]=qs[_0x78d9('0x2f')](_0x963190['query'][_0x78d9('0x2f')]);}return _0x3fa4aa[_0x78d9('0xbf')](_0x27a25b);}})[_0x78d9('0x20')](function(_0x11f5d2){if(_0x11f5d2){return _0x11f5d2?{'count':_0x2a7c4a,'rows':_0x11f5d2}:null;}})[_0x78d9('0x20')](respondWithResult(_0x10f6e0,null))[_0x78d9('0x58')](handleError(_0x10f6e0,null));};exports[_0x78d9('0x3b')]=function(_0xddc1ae,_0x5f0883,_0x2cd813){var _0x496fbd,_0x185d53,_0x2ba7c1;if(_[_0x78d9('0x7a')](_0xddc1ae[_0x78d9('0x62')]['body'])||_0xddc1ae[_0x78d9('0x62')]['body']===''){throw new db[(_0x78d9('0x73'))]['ValidationError'](_0x78d9('0x7d'));}if(_[_0x78d9('0x7a')](_0xddc1ae[_0x78d9('0x62')]['to'])){}_0x496fbd=_0xddc1ae[_0x78d9('0x62')]['to'];return db[_0x78d9('0x40')][_0x78d9('0x68')]({'where':{'id':_0xddc1ae[_0x78d9('0x63')]['id']}})['then'](handleEntityNotFound(_0x5f0883,null))['then'](function(_0x4c2826){if(_0x4c2826){return db[_0x78d9('0x40')][_0x78d9('0x5a')]({'where':{'id':_0x4c2826['id']},'include':[{'model':db['CmList'],'as':_0x78d9('0x82'),'include':[{'model':db[_0x78d9('0x72')],'as':'Contacts','where':{[_0x4c2826[_0x78d9('0x7e')]]:_0x496fbd},'limit':0x1,'order':[[_0x78d9('0x77'),_0x78d9('0x84')]]}]}]})[_0x78d9('0x20')](handleEntityNotFound(_0x5f0883,null))['then'](function(_0x1daba4){if(_0x1daba4&&_0x1daba4[_0x78d9('0x82')]){_0x185d53=_0x1daba4[_0x78d9('0x34')]({'plain':!![]});if(_0x185d53[_0x78d9('0x82')]&&_0x185d53[_0x78d9('0x82')][_0x78d9('0x83')][_0x78d9('0x4b')]){return _0x185d53[_0x78d9('0x82')][_0x78d9('0x83')][0x0];}return db[_0x78d9('0x72')][_0x78d9('0x5b')](_[_0x78d9('0x8c')](_0xddc1ae['body'],{'firstName':_0x496fbd,[_0x1daba4[_0x78d9('0x7e')]]:_0x496fbd,'phone':_0x496fbd,'ListId':_0x185d53['ListId']}));}})[_0x78d9('0x20')](handleEntityNotFound(_0x5f0883,null))[_0x78d9('0x20')](function(_0x27a05a){if(_0x27a05a){_0x2ba7c1=_0x27a05a;return db[_0x78d9('0x92')][_0x78d9('0x5a')]({'where':{'ContactId':_0x2ba7c1['id'],'closed':![],'OpenchannelAccountId':_0x185d53['id']}})['then'](function(_0x12afb2){if(_0x12afb2){return[_0x12afb2,![]];}return db[_0x78d9('0x92')][_0x78d9('0x5b')]({'UserId':_0xddc1ae[_0x78d9('0x5e')]['id'],'ContactId':_0x2ba7c1['id'],'OpenchannelAccountId':_0x185d53['id'],'lastMsgDirection':'out','firstMsgDirection':_0x78d9('0xc0'),'Messages':[_[_0x78d9('0x53')](_0xddc1ae[_0x78d9('0x62')],{'read':![],'body':_0xddc1ae[_0x78d9('0x62')][_0x78d9('0x62')],'OpenchannelAccountId':_0x185d53['id'],'UserId':_0xddc1ae[_0x78d9('0x5e')]['id'],'ContactId':_0x2ba7c1['id']})]},{'include':[{'model':db[_0x78d9('0x9d')],'as':_0x78d9('0xc1')}]})[_0x78d9('0x20')](function(_0x25b0d3){return[_0x25b0d3,!![]];});});}})['spread'](function(_0x5333f6,_0x1d86f3){if(_0x1d86f3){return _0x5333f6;}return db[_0x78d9('0x9d')][_0x78d9('0x5b')](_[_0x78d9('0x53')](_0xddc1ae[_0x78d9('0x62')],{'read':![],'body':_0xddc1ae[_0x78d9('0x62')][_0x78d9('0x62')],'OpenchannelAccountId':_0x185d53['id'],'OpenchannelInteractionId':_0x5333f6['id'],'UserId':_0xddc1ae[_0x78d9('0x5e')]['id'],'ContactId':_0x2ba7c1['id']}))[_0x78d9('0x20')](function(_0x4770a0){_0x5333f6[_0x78d9('0xc2')]['Messages']=[];_0x5333f6[_0x78d9('0xc2')][_0x78d9('0xc1')][_0x78d9('0x99')](_0x4770a0['dataValues']);return _0x5333f6;});});}})['then'](respondWithResult(_0x5f0883,null))[_0x78d9('0x58')](handleError(_0x5f0883,null));};
\ No newline at end of file
+var _0x92e8=['fields','query','length','order','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','mandatoryDispositionPause','keys','include','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','OpenchannelAccountId','Disposition','getDispositions','findOne','nolimit','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','openchannel','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','List','CmContact','Contacts','DESC','OpenchannelApplication','Applications','account','list','applications','orderBy','asc','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','messageId','interaction','created','autoclose','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','notify','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','json','getApplications','getInteractions','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','push','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','sendStatus','limit','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','destroy','get','OpenchannelAccounts','end','stack','name','send','Pause','OpenchannelAccount','rawAttributes','fieldName','type','key','model','map','intersection','attributes'];(function(_0x38854e,_0x23cbc9){var _0x3f8415=function(_0x4e493e){while(--_0x4e493e){_0x38854e['push'](_0x38854e['shift']());}};_0x3f8415(++_0x23cbc9);}(_0x92e8,0x7f));var _0x892e=function(_0x23884b,_0x50c307){_0x23884b=_0x23884b-0x0;var _0x28113b=_0x92e8[_0x23884b];return _0x28113b;};'use strict';var emlformat=require(_0x892e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x892e('0x1'));var rp=require('request-promise');var moment=require(_0x892e('0x2'));var BPromise=require(_0x892e('0x3'));var Mustache=require(_0x892e('0x4'));var util=require(_0x892e('0x5'));var path=require(_0x892e('0x6'));var sox=require(_0x892e('0x7'));var csv=require('to-csv');var ejs=require(_0x892e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x892e('0x9'));var squel=require('squel');var crypto=require(_0x892e('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x892e('0xb'));var toCsv=require(_0x892e('0xc'));var querystring=require(_0x892e('0xd'));var Papa=require('papaparse');var Redis=require(_0x892e('0xe'));var authService=require(_0x892e('0xf'));var qs=require(_0x892e('0x10'));var as=require(_0x892e('0x11'));var hardwareService=require(_0x892e('0x12'));var logger=require('../../config/logger')(_0x892e('0x13'));var utils=require(_0x892e('0x14'));var config=require(_0x892e('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x892e('0x16'))['db'];config['redis']=_[_0x892e('0x17')](config[_0x892e('0x18')],{'host':_0x892e('0x19'),'port':0x18eb});var socket=require(_0x892e('0x1a'))(new Redis(config[_0x892e('0x18')]));require(_0x892e('0x1b'))[_0x892e('0x1c')](socket);var jayson=require(_0x892e('0x1d'));var client=jayson[_0x892e('0x1e')][_0x892e('0x1f')]({'port':0x232c});var client9002=jayson[_0x892e('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x356a4f,_0x5a86eb,_0x1ff7f3,_0x5b238d){return new BPromise(function(_0x54da87,_0x719b5e){var _0x111ee2=_0x5b238d||client;return _0x111ee2[_0x892e('0x20')](_0x356a4f,_0x1ff7f3)[_0x892e('0x21')](function(_0x263ae9){logger[_0x892e('0x22')](_0x892e('0x23'),_0x5a86eb,'request\x20sent');logger[_0x892e('0x24')](_0x892e('0x25'),_0x5a86eb,_0x892e('0x26'),JSON[_0x892e('0x27')](_0x263ae9));if(_0x263ae9[_0x892e('0x28')]){if(_0x263ae9[_0x892e('0x28')][_0x892e('0x29')]===0x1f4){logger[_0x892e('0x28')](_0x892e('0x23'),_0x5a86eb,_0x263ae9[_0x892e('0x28')][_0x892e('0x2a')]);return _0x719b5e(_0x263ae9[_0x892e('0x28')][_0x892e('0x2a')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x5a86eb,_0x263ae9[_0x892e('0x28')][_0x892e('0x2a')]);return _0x54da87(_0x263ae9[_0x892e('0x28')]['message']);}else{logger[_0x892e('0x22')](_0x892e('0x23'),_0x5a86eb,_0x892e('0x26'));_0x54da87(_0x263ae9['result'][_0x892e('0x2a')]);}})['catch'](function(_0x5d8f7c){logger['error'](_0x892e('0x23'),_0x5a86eb,_0x5d8f7c);_0x719b5e(_0x5d8f7c);});});}function respondWithStatusCode(_0x468fa6,_0x1ab645){_0x1ab645=_0x1ab645||0xcc;return function(_0x3a9378){if(_0x3a9378){return _0x468fa6[_0x892e('0x2b')](_0x1ab645);}return _0x468fa6['status'](_0x1ab645)['end']();};}function respondWithResult(_0x1daf9f,_0x1dfc69){_0x1dfc69=_0x1dfc69||0xc8;return function(_0x471abd){if(_0x471abd){return _0x1daf9f['status'](_0x1dfc69)['json'](_0x471abd);}};}function respondWithFilteredResult(_0x1fac3c,_0x56dcc4){return function(_0x45dc0a){if(_0x45dc0a){var _0x253c76=typeof _0x56dcc4['offset']==='undefined'&&typeof _0x56dcc4[_0x892e('0x2c')]===_0x892e('0x2d');var _0x561721=_0x45dc0a[_0x892e('0x2e')];var _0xed104d=_0x253c76?0x0:_0x56dcc4[_0x892e('0x2f')];var _0x3a6350=_0x253c76?_0x45dc0a[_0x892e('0x2e')]:_0x56dcc4[_0x892e('0x2f')]+_0x56dcc4[_0x892e('0x2c')];var _0xb6c376;if(_0x3a6350>=_0x561721){_0x3a6350=_0x561721;_0xb6c376=0xc8;}else{_0xb6c376=0xce;}_0x1fac3c[_0x892e('0x30')](_0xb6c376);return _0x1fac3c[_0x892e('0x31')](_0x892e('0x32'),_0xed104d+'-'+_0x3a6350+'/'+_0x561721)['json'](_0x45dc0a);}return null;};}function patchUpdates(_0x573f7c){return function(_0x480c12){try{jsonpatch[_0x892e('0x33')](_0x480c12,_0x573f7c,!![]);}catch(_0xa0cbaa){return BPromise[_0x892e('0x34')](_0xa0cbaa);}return _0x480c12[_0x892e('0x35')]();};}function saveUpdates(_0x956644,_0x255d17){return function(_0x4e8426){if(_0x4e8426){return _0x4e8426[_0x892e('0x36')](_0x956644)[_0x892e('0x21')](function(_0x3fc5d2){return _0x3fc5d2;});}return null;};}function removeEntity(_0x2923e3,_0x525ff1){return function(_0x4c937e){if(_0x4c937e){return _0x4c937e[_0x892e('0x37')]()[_0x892e('0x21')](function(){var _0x4c5a9b=_0x4c937e[_0x892e('0x38')]({'plain':!![]});var _0x39ddd0=_0x892e('0x39');return db['UserProfileResource'][_0x892e('0x37')]({'where':{'type':_0x39ddd0,'resourceId':_0x4c5a9b['id']}})[_0x892e('0x21')](function(){return _0x4c937e;});})[_0x892e('0x21')](function(){_0x2923e3[_0x892e('0x30')](0xcc)[_0x892e('0x3a')]();});}};}function handleEntityNotFound(_0x27961d,_0x1394cb){return function(_0x3e26a3){if(!_0x3e26a3){_0x27961d[_0x892e('0x2b')](0x194);}return _0x3e26a3;};}function handleError(_0x59fabc,_0x2dd36c){_0x2dd36c=_0x2dd36c||0x1f4;return function(_0x127e68){logger[_0x892e('0x28')](_0x127e68[_0x892e('0x3b')]);if(_0x127e68[_0x892e('0x3c')]){delete _0x127e68['name'];}_0x59fabc['status'](_0x2dd36c)[_0x892e('0x3d')](_0x127e68);};}exports['index']=function(_0x1eb841,_0x10dbb9){var _0x106f50={'include':[{'model':db[_0x892e('0x3e')],'as':'mandatoryDispositionPause'}]},_0x3bc5db={},_0xcefcb9={'count':0x0,'rows':[]};var _0x8540b8=_['map'](db[_0x892e('0x3f')][_0x892e('0x40')],function(_0x49e77e){return{'name':_0x49e77e[_0x892e('0x41')],'type':_0x49e77e[_0x892e('0x42')][_0x892e('0x43')]};});_0x3bc5db[_0x892e('0x44')]=_[_0x892e('0x45')](_0x8540b8,_0x892e('0x3c'));_0x3bc5db['query']=_['keys'](_0x1eb841['query']);_0x3bc5db['filters']=_[_0x892e('0x46')](_0x3bc5db[_0x892e('0x44')],_0x3bc5db['query']);_0x106f50[_0x892e('0x47')]=_[_0x892e('0x46')](_0x3bc5db[_0x892e('0x44')],qs[_0x892e('0x48')](_0x1eb841[_0x892e('0x49')][_0x892e('0x48')]));_0x106f50[_0x892e('0x47')]=_0x106f50[_0x892e('0x47')][_0x892e('0x4a')]?_0x106f50[_0x892e('0x47')]:_0x3bc5db[_0x892e('0x44')];if(!_0x1eb841['query']['hasOwnProperty']('nolimit')){_0x106f50[_0x892e('0x2c')]=qs['limit'](_0x1eb841[_0x892e('0x49')][_0x892e('0x2c')]);_0x106f50[_0x892e('0x2f')]=qs[_0x892e('0x2f')](_0x1eb841['query'][_0x892e('0x2f')]);}_0x106f50[_0x892e('0x4b')]=qs[_0x892e('0x4c')](_0x1eb841[_0x892e('0x49')][_0x892e('0x4c')]);_0x106f50[_0x892e('0x4d')]=qs['filters'](_[_0x892e('0x4e')](_0x1eb841[_0x892e('0x49')],_0x3bc5db[_0x892e('0x4f')]),_0x8540b8);if(_0x1eb841[_0x892e('0x49')][_0x892e('0x50')]){_0x106f50[_0x892e('0x4d')]=_[_0x892e('0x51')](_0x106f50['where'],{'$or':_['map'](_0x8540b8,function(_0x4d8d95){if(_0x4d8d95[_0x892e('0x42')]!==_0x892e('0x52')){var _0x3e35f7={};_0x3e35f7[_0x4d8d95['name']]={'$like':'%'+_0x1eb841[_0x892e('0x49')]['filter']+'%'};return _0x3e35f7;}})});}_0x106f50=_[_0x892e('0x51')]({},_0x106f50,_0x1eb841['options']);var _0x3919c4={'where':_0x106f50[_0x892e('0x4d')]};return db[_0x892e('0x3f')]['count'](_0x3919c4)[_0x892e('0x21')](function(_0xfabfa4){_0xcefcb9['count']=_0xfabfa4;if(_0x1eb841['query'][_0x892e('0x53')]){_0x106f50['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0x892e('0x54')](_0x106f50);})['then'](function(_0xd7d2ae){_0xcefcb9[_0x892e('0x55')]=_0xd7d2ae;return _0xcefcb9;})[_0x892e('0x21')](respondWithFilteredResult(_0x10dbb9,_0x106f50))[_0x892e('0x56')](handleError(_0x10dbb9,null));};exports[_0x892e('0x57')]=function(_0x4a46b9,_0x108861){var _0x365e5f={'raw':![],'where':{'id':_0x4a46b9['params']['id']},'include':[{'model':db['Pause'],'as':_0x892e('0x58')}]},_0x2a821c={};_0x2a821c['model']=_[_0x892e('0x59')](db['OpenchannelAccount'][_0x892e('0x40')]);_0x2a821c[_0x892e('0x49')]=_[_0x892e('0x59')](_0x4a46b9[_0x892e('0x49')]);_0x2a821c[_0x892e('0x4f')]=_[_0x892e('0x46')](_0x2a821c['model'],_0x2a821c[_0x892e('0x49')]);_0x365e5f[_0x892e('0x47')]=_[_0x892e('0x46')](_0x2a821c['model'],qs['fields'](_0x4a46b9[_0x892e('0x49')][_0x892e('0x48')]));_0x365e5f['attributes']=_0x365e5f['attributes'][_0x892e('0x4a')]?_0x365e5f[_0x892e('0x47')]:_0x2a821c[_0x892e('0x44')];if(_0x4a46b9[_0x892e('0x49')][_0x892e('0x53')]){_0x365e5f[_0x892e('0x5a')]=[{'all':!![]}];}_0x365e5f=_[_0x892e('0x51')]({},_0x365e5f,_0x4a46b9[_0x892e('0x5b')]);return db[_0x892e('0x3f')]['find'](_0x365e5f)['then'](handleEntityNotFound(_0x108861,null))[_0x892e('0x21')](respondWithResult(_0x108861,null))[_0x892e('0x56')](handleError(_0x108861,null));};exports[_0x892e('0x5c')]=function(_0x2bdb69,_0x190174){return db['OpenchannelAccount'][_0x892e('0x5c')](_0x2bdb69[_0x892e('0x5d')],{})[_0x892e('0x21')](function(_0xfb4780){var _0x1b693c=_0x2bdb69[_0x892e('0x5e')]['get']({'plain':!![]});if(!_0x1b693c)throw new Error(_0x892e('0x5f'));if(_0x1b693c[_0x892e('0x60')]==='user'){var _0x846dd3=_0xfb4780[_0x892e('0x38')]({'plain':!![]});var _0x21038e=_0x892e('0x39');return db[_0x892e('0x61')][_0x892e('0x62')]({'where':{'name':_0x21038e,'userProfileId':_0x1b693c['userProfileId']},'raw':!![]})['then'](function(_0x51abf5){if(_0x51abf5&&_0x51abf5[_0x892e('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x846dd3['name'],'resourceId':_0x846dd3['id'],'type':_0x51abf5['name'],'sectionId':_0x51abf5['id']},{})['then'](function(){return _0xfb4780;});}else{return _0xfb4780;}})[_0x892e('0x56')](function(_0x31b044){logger[_0x892e('0x28')](_0x892e('0x64'),_0x31b044);throw _0x31b044;});}return _0xfb4780;})[_0x892e('0x21')](respondWithResult(_0x190174,0xc9))['catch'](handleError(_0x190174,null));};exports[_0x892e('0x36')]=function(_0x53ca50,_0x380f16){if(_0x53ca50[_0x892e('0x5d')]['id']){delete _0x53ca50[_0x892e('0x5d')]['id'];}return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0x53ca50[_0x892e('0x65')]['id']},'include':[{'model':db[_0x892e('0x3e')],'as':_0x892e('0x58')}]})[_0x892e('0x21')](handleEntityNotFound(_0x380f16,null))['then'](saveUpdates(_0x53ca50[_0x892e('0x5d')],null))[_0x892e('0x21')](respondWithResult(_0x380f16,null))[_0x892e('0x56')](handleError(_0x380f16,null));};exports[_0x892e('0x37')]=function(_0x55a662,_0x4baa59){return db[_0x892e('0x3f')]['find']({'where':{'id':_0x55a662[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x4baa59,null))[_0x892e('0x21')](removeEntity(_0x4baa59,null))['catch'](handleError(_0x4baa59,null));};exports[_0x892e('0x66')]=function(_0x2eae4d,_0x25819b){return db[_0x892e('0x3f')][_0x892e('0x66')]()['then'](respondWithResult(_0x25819b,null))['catch'](handleError(_0x25819b,null));};exports['addDisposition']=function(_0x151f9b,_0x321d48,_0x3308eb){if(_0x151f9b[_0x892e('0x5d')]['id']){delete _0x151f9b[_0x892e('0x5d')]['id'];}return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0x151f9b[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x321d48,null))['then'](function(_0x351187){if(_0x351187){_0x151f9b[_0x892e('0x5d')][_0x892e('0x67')]=_0x351187['id'];return db[_0x892e('0x68')][_0x892e('0x5c')](_0x151f9b[_0x892e('0x5d')]);}})['then'](respondWithResult(_0x321d48,null))['catch'](handleError(_0x321d48,null));};exports[_0x892e('0x69')]=function(_0x114513,_0x247a32,_0x98492e){var _0x718849={'raw':![],'where':{}};var _0x3ae30b={};var _0x2b7dbb={'count':0x0,'rows':[]};return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x114513[_0x892e('0x65')]['id']}})['then'](handleEntityNotFound(_0x247a32,null))[_0x892e('0x21')](function(_0x42a5e0){if(_0x42a5e0){_0x3ae30b['model']=_['keys'](db[_0x892e('0x68')]['rawAttributes']);_0x3ae30b[_0x892e('0x49')]=_[_0x892e('0x59')](_0x114513[_0x892e('0x49')]);_0x3ae30b[_0x892e('0x4f')]=_[_0x892e('0x46')](_0x3ae30b[_0x892e('0x44')],_0x3ae30b['query']);_0x718849[_0x892e('0x47')]=_[_0x892e('0x46')](_0x3ae30b[_0x892e('0x44')],qs[_0x892e('0x48')](_0x114513[_0x892e('0x49')][_0x892e('0x48')]));_0x718849['attributes']=_0x718849[_0x892e('0x47')]['length']?_0x718849[_0x892e('0x47')]:_0x3ae30b[_0x892e('0x44')];if(!_0x114513[_0x892e('0x49')]['hasOwnProperty'](_0x892e('0x6b'))){_0x718849[_0x892e('0x2c')]=qs[_0x892e('0x2c')](_0x114513['query']['limit']);_0x718849[_0x892e('0x2f')]=qs[_0x892e('0x2f')](_0x114513['query']['offset']);}_0x718849[_0x892e('0x4b')]=qs[_0x892e('0x4c')](_0x114513[_0x892e('0x49')][_0x892e('0x4c')]);_0x718849['where']=qs['filters'](_[_0x892e('0x4e')](_0x114513[_0x892e('0x49')],_0x3ae30b[_0x892e('0x4f')]));_0x718849[_0x892e('0x4d')][_0x892e('0x67')]=_0x42a5e0['id'];if(_0x114513[_0x892e('0x49')]['filter']){_0x718849['where']=_[_0x892e('0x51')](_0x718849[_0x892e('0x4d')],{'$or':_[_0x892e('0x45')](_0x718849[_0x892e('0x47')],function(_0x4e0bee){var _0x353389={};_0x353389[_0x4e0bee]={'$like':'%'+_0x114513[_0x892e('0x49')][_0x892e('0x50')]+'%'};return _0x353389;})});}_0x718849=_[_0x892e('0x51')]({},_0x718849,_0x114513['options']);return db[_0x892e('0x68')]['count']({'where':_0x718849[_0x892e('0x4d')]})[_0x892e('0x21')](function(_0x20de4e){_0x2b7dbb[_0x892e('0x2e')]=_0x20de4e;if(_0x114513[_0x892e('0x49')]['includeAll']){_0x718849[_0x892e('0x5a')]=[{'all':!![]}];}return db[_0x892e('0x68')][_0x892e('0x54')](_0x718849);})[_0x892e('0x21')](function(_0x3e8fdf){_0x2b7dbb[_0x892e('0x55')]=_0x3e8fdf;return _0x2b7dbb;});}})[_0x892e('0x21')](respondWithFilteredResult(_0x247a32,_0x718849))[_0x892e('0x56')](handleError(_0x247a32,null));};exports[_0x892e('0x6c')]=function(_0x325ad9,_0x5853e1,_0x45c86b){return db[_0x892e('0x3f')]['find']({'where':{'id':_0x325ad9[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x5853e1,null))[_0x892e('0x21')](function(_0xa7d0d2){if(_0xa7d0d2){return _0xa7d0d2[_0x892e('0x6c')](_0x325ad9[_0x892e('0x49')][_0x892e('0x6d')]);}})['then'](respondWithStatusCode(_0x5853e1,null))[_0x892e('0x56')](handleError(_0x5853e1,null));};exports[_0x892e('0x6e')]=function(_0x4fed18,_0x2413f6,_0x2268de){if(_0x4fed18['body']['id']){delete _0x4fed18['body']['id'];}return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0x4fed18[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x2413f6,null))[_0x892e('0x21')](function(_0x3b6e14){if(_0x3b6e14){_0x4fed18['body'][_0x892e('0x67')]=_0x3b6e14['id'];return db[_0x892e('0x6f')][_0x892e('0x5c')](_0x4fed18[_0x892e('0x5d')]);}})[_0x892e('0x21')](respondWithResult(_0x2413f6,null))[_0x892e('0x56')](handleError(_0x2413f6,null));};exports[_0x892e('0x70')]=function(_0x5389a2,_0x50c4c3,_0x339421){var _0x1d8ba7={'raw':![],'where':{}};var _0x1adeb8={};var _0x1062b1={'count':0x0,'rows':[]};return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x5389a2[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x50c4c3,null))[_0x892e('0x21')](function(_0x21146d){if(_0x21146d){_0x1adeb8['model']=_['keys'](db[_0x892e('0x6f')]['rawAttributes']);_0x1adeb8[_0x892e('0x49')]=_[_0x892e('0x59')](_0x5389a2[_0x892e('0x49')]);_0x1adeb8['filters']=_[_0x892e('0x46')](_0x1adeb8[_0x892e('0x44')],_0x1adeb8[_0x892e('0x49')]);_0x1d8ba7[_0x892e('0x47')]=_[_0x892e('0x46')](_0x1adeb8[_0x892e('0x44')],qs['fields'](_0x5389a2['query'][_0x892e('0x48')]));_0x1d8ba7['attributes']=_0x1d8ba7[_0x892e('0x47')]['length']?_0x1d8ba7[_0x892e('0x47')]:_0x1adeb8['model'];if(!_0x5389a2[_0x892e('0x49')][_0x892e('0x71')](_0x892e('0x6b'))){_0x1d8ba7[_0x892e('0x2c')]=qs['limit'](_0x5389a2['query'][_0x892e('0x2c')]);_0x1d8ba7[_0x892e('0x2f')]=qs[_0x892e('0x2f')](_0x5389a2[_0x892e('0x49')]['offset']);}_0x1d8ba7['order']=qs[_0x892e('0x4c')](_0x5389a2[_0x892e('0x49')][_0x892e('0x4c')]);_0x1d8ba7[_0x892e('0x4d')]=qs[_0x892e('0x4f')](_[_0x892e('0x4e')](_0x5389a2[_0x892e('0x49')],_0x1adeb8['filters']));_0x1d8ba7[_0x892e('0x4d')][_0x892e('0x67')]=_0x21146d['id'];if(_0x5389a2[_0x892e('0x49')][_0x892e('0x50')]){_0x1d8ba7[_0x892e('0x4d')]=_['merge'](_0x1d8ba7[_0x892e('0x4d')],{'$or':_['map'](_0x1d8ba7['attributes'],function(_0x212b26){var _0x488a85={};_0x488a85[_0x212b26]={'$like':'%'+_0x5389a2[_0x892e('0x49')][_0x892e('0x50')]+'%'};return _0x488a85;})});}_0x1d8ba7=_['merge']({},_0x1d8ba7,_0x5389a2[_0x892e('0x5b')]);return db['CannedAnswer'][_0x892e('0x2e')]({'where':_0x1d8ba7[_0x892e('0x4d')]})[_0x892e('0x21')](function(_0xc8db3f){_0x1062b1[_0x892e('0x2e')]=_0xc8db3f;if(_0x5389a2['query']['includeAll']){_0x1d8ba7['include']=[{'all':!![]}];}return db[_0x892e('0x6f')][_0x892e('0x54')](_0x1d8ba7);})['then'](function(_0x580a35){_0x1062b1['rows']=_0x580a35;return _0x1062b1;});}})['then'](respondWithFilteredResult(_0x50c4c3,_0x1d8ba7))['catch'](handleError(_0x50c4c3,null));};exports['removeAnswers']=function(_0x458bb4,_0xac8b96,_0x351e7d){return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0x458bb4[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0xac8b96,null))['then'](function(_0x407d4e){if(_0x407d4e){return _0x407d4e[_0x892e('0x72')](_0x458bb4[_0x892e('0x49')][_0x892e('0x6d')]);}})[_0x892e('0x21')](respondWithStatusCode(_0xac8b96,null))[_0x892e('0x56')](handleError(_0xac8b96,null));};exports['notify']=function(_0x34733b,_0x5b4005,_0x396a83){var _0x4cf5b0={'body':_0x34733b[_0x892e('0x5d')],'channel':_0x892e('0x73')};var _0x2bfacf=[];var _0x223296=[];var _0x117190={};var _0x2b1dda=![];return db['CmContact'][_0x892e('0x66')]()[_0x892e('0x21')](function(_0x520e03){if(!_0x520e03){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))](_0x892e('0x76'));}_0x2bfacf=_[_0x892e('0x77')](_['keys'](_0x520e03),[_0x892e('0x78'),_0x892e('0x79')]);_0x223296=_[_0x892e('0x77')](_[_0x892e('0x59')](_0x520e03),[_0x892e('0x78'),_0x892e('0x79'),_0x892e('0x7a'),_0x892e('0x7b')]);if(_0x34733b[_0x892e('0x5d')]['id']){delete _0x34733b[_0x892e('0x5d')]['id'];}if(_[_0x892e('0x7c')](_0x34733b[_0x892e('0x5d')][_0x892e('0x7d')])){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))]('from\x20is\x20mandatory');}if(_[_0x892e('0x7c')](_0x34733b[_0x892e('0x5d')][_0x892e('0x5d')])||_0x34733b[_0x892e('0x5d')]['body']===''){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))](_0x892e('0x7e'));}if(_[_0x892e('0x7c')](_0x34733b['body']['mapKey'])){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x223296);}if(!_[_0x892e('0x7f')](_0x223296,_0x34733b[_0x892e('0x5d')]['mapKey'])){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))](_0x892e('0x80')+_0x223296);}_0x117190[_0x34733b[_0x892e('0x5d')][_0x892e('0x81')]]=_0x34733b[_0x892e('0x5d')][_0x892e('0x7d')];})['then'](function(){return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0x34733b[_0x892e('0x65')]['id']},'include':[{'model':db[_0x892e('0x82')],'as':_0x892e('0x83'),'include':[{'model':db[_0x892e('0x84')],'as':_0x892e('0x85'),'where':_0x117190,'limit':0x1,'order':[[_0x892e('0x79'),_0x892e('0x86')]]}]},{'model':db[_0x892e('0x87')],'as':_0x892e('0x88')}]});})[_0x892e('0x21')](handleEntityNotFound(_0x5b4005,null))[_0x892e('0x21')](function(_0xb6abc8){if(_0xb6abc8&&_0xb6abc8['List']){_0x4cf5b0[_0x892e('0x89')]=_0xb6abc8;_0x4cf5b0['applications']=_0xb6abc8[_0x892e('0x88')];_0x4cf5b0[_0x892e('0x8a')]=_0xb6abc8[_0x892e('0x83')];_0x4cf5b0[_0x892e('0x8b')]=_[_0x892e('0x8c')](_0x4cf5b0['applications'],['priority'],[_0x892e('0x8d')]);if(_0x4cf5b0[_0x892e('0x89')]['Applications']){delete _0x4cf5b0[_0x892e('0x89')]['Applications'];}if(_0x4cf5b0[_0x892e('0x89')]['List']&&_0x4cf5b0[_0x892e('0x89')][_0x892e('0x83')][_0x892e('0x85')][_0x892e('0x4a')]){return _0x4cf5b0['account'][_0x892e('0x83')]['Contacts'][0x0];}var _0x4d7223=_['defaults'](_0x34733b[_0x892e('0x5d')],{'firstName':_0x34733b[_0x892e('0x5d')][_0x892e('0x7d')],'ListId':_0xb6abc8[_0x892e('0x7b')]});_0x4d7223[_0x34733b[_0x892e('0x5d')]['mapKey']]=_0x34733b[_0x892e('0x5d')][_0x892e('0x7d')];return db['CmContact']['create'](_0x4d7223,{'fields':_0x2bfacf,'raw':!![]});}})[_0x892e('0x21')](handleEntityNotFound(_0x5b4005,null))[_0x892e('0x21')](function(_0x487eb2){_0x4cf5b0[_0x892e('0x8e')]=_0x487eb2;if(_0x487eb2){var _0x32acc9={'ContactId':_0x487eb2['id'],'OpenchannelAccountId':_0x34733b[_0x892e('0x65')]['id'],'from':(_0x487eb2[_0x892e('0x8f')]||'')+'\x20'+(_0x487eb2[_0x892e('0x90')]||'')};var _0x5f129a={'OpenchannelAccountId':_0x34733b[_0x892e('0x65')]['id'],'closed':![]};if(_0x34733b[_0x892e('0x5d')][_0x892e('0x91')]){_0x5f129a[_0x892e('0x91')]=_0x34733b['body'][_0x892e('0x91')];return db['OpenchannelInteraction'][_0x892e('0x62')]({'where':_0x5f129a})[_0x892e('0x21')](function(_0x1ba3f2){if(_0x1ba3f2){return[_0x1ba3f2,![]];}_0x32acc9['threadId']=_0x34733b[_0x892e('0x5d')][_0x892e('0x91')];_0x32acc9[_0x892e('0x92')]=_0x34733b[_0x892e('0x5d')]['externalUrl'];return db[_0x892e('0x93')][_0x892e('0x5c')](_0x32acc9)[_0x892e('0x21')](function(_0x327c2e){return[_0x327c2e,!![]];});});}else{_0x5f129a['threadId']=null;}_0x5f129a[_0x892e('0x94')]=_0x487eb2['id'];return db['OpenchannelInteraction'][_0x892e('0x62')]({'where':_0x5f129a})['then'](function(_0x4668b4){if(_0x4668b4){return[_0x4668b4,![]];}return db['OpenchannelInteraction'][_0x892e('0x5c')](_0x32acc9)['then'](function(_0x5e5e07){return[_0x5e5e07,!![]];});});}})[_0x892e('0x95')](function(_0x47e3f2,_0x1d724b){if(_0x47e3f2){_0x2b1dda=_0x1d724b;if(!_0x1d724b){var _0x1a9d94={'from':(_0x4cf5b0['contact'][_0x892e('0x8f')]||'')+'\x20'+(_0x4cf5b0[_0x892e('0x8e')][_0x892e('0x90')]||'')};if(_0x34733b['body']['threadId']&&_0x34733b[_0x892e('0x5d')][_0x892e('0x96')]&&_0x34733b[_0x892e('0x5d')][_0x892e('0x91')]!=_0x34733b['body'][_0x892e('0x96')]){_0x1a9d94[_0x892e('0x91')]=_0x34733b[_0x892e('0x5d')][_0x892e('0x96')];}return _0x47e3f2['update'](_0x1a9d94);}else{return _0x47e3f2;}}})[_0x892e('0x21')](function(_0x348423){_0x4cf5b0[_0x892e('0x97')]=_0x348423['get']({'plain':!![]});_0x4cf5b0[_0x892e('0x97')][_0x892e('0x98')]=_0x2b1dda;if(_0x4cf5b0[_0x892e('0x97')][_0x892e('0x98')]){if(_0x4cf5b0[_0x892e('0x89')][_0x892e('0x99')]){_0x4cf5b0[_0x892e('0x8b')]['push']({'id':0x0,'priority':_0x4cf5b0[_0x892e('0x8b')][_0x892e('0x4a')]+0x1,'app':'close','appdata':_0x892e('0x9a'),'interval':_0x892e('0x9b')});}}return db[_0x892e('0x9c')][_0x892e('0x5c')]({'body':_0x34733b['body'][_0x892e('0x5d')],'OpenchannelAccountId':_0x34733b[_0x892e('0x65')]['id'],'OpenchannelInteractionId':_0x348423['id'],'direction':'in','ContactId':_0x4cf5b0[_0x892e('0x8e')]['id'],'AttachmentId':_0x34733b['body'][_0x892e('0x9d')]});})[_0x892e('0x21')](function(_0xda0d0f){_0x4cf5b0[_0x892e('0x2a')]=_0xda0d0f;if(_0x4cf5b0[_0x892e('0x97')]['UserId']){return db['User'][_0x892e('0x62')]({'attributes':['id','name'],'where':{'id':_0x4cf5b0['interaction'][_0x892e('0x9e')]}})['then'](function(_0x14d935){if(_0x14d935){_0x4cf5b0[_0x892e('0x8b')][_0x892e('0x9f')]({'id':0x0,'priority':0x0,'app':_0x892e('0xa0'),'appdata':_0x14d935[_0x892e('0x3c')]+','+(_0x4cf5b0[_0x892e('0x89')][_0x892e('0xa1')]||0xa),'interval':_0x892e('0x9b')});_0x4cf5b0[_0x892e('0xa2')]=![];}return respondWithRpcPromise('Start',_0x892e('0xa3'),_0x4cf5b0);});}return respondWithRpcPromise(_0x892e('0xa4'),_0x892e('0xa3'),_0x4cf5b0);})[_0x892e('0x21')](function(_0x4f6c19){respondWithRpcPromise('EventManager',_0x892e('0xa5'),{'event':_0x892e('0xa6'),'message':_0x4f6c19},client9002);return _0x4f6c19;})[_0x892e('0x21')](respondWithResult(_0x5b4005,null))['catch'](handleError(_0x5b4005,null));};exports[_0x892e('0xa7')]=function(_0x1e3983,_0x52d365){var _0x325623=_0x1e3983[_0x892e('0x65')]['id'];var _0x1c07e2=_0x1e3983[_0x892e('0x5d')];var _0x50a956=0xc8;var _0x1d2a8c=null;return db[_0x892e('0xa8')][_0x892e('0xa9')]({'isolationLevel':db[_0x892e('0xa8')][_0x892e('0xaa')][_0x892e('0xab')][_0x892e('0xac')]},function(_0x203bba){return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x325623},'transaction':_0x203bba})['then'](function(_0x110389){if(_0x110389){return db['OpenchannelApplication'][_0x892e('0x37')]({'where':{'OpenchannelAccountId':_0x325623},'transaction':_0x203bba})[_0x892e('0x21')](function(){var _0x445b73=_[_0x892e('0x45')](_0x1c07e2,function(_0x81c0c3){_0x81c0c3[_0x892e('0x67')]=_0x325623;return _0x81c0c3;});return db[_0x892e('0x87')]['bulkCreate'](_0x445b73,{'transaction':_0x203bba});});}else{_0x50a956=0x194;_0x1d2a8c=[];}});})[_0x892e('0x21')](function(){if(_0x50a956!==0x194){return db[_0x892e('0x87')][_0x892e('0xad')]({'where':{'OpenchannelAccountId':_0x325623},'order':'priority'})['then'](function(_0x15e785){_0x1d2a8c=_0x15e785;});}})[_0x892e('0x56')](function(_0x384de2){_0x50a956=0x1f4;logger[_0x892e('0x28')](_0x384de2[_0x892e('0x3b')]);if(_0x384de2[_0x892e('0x3c')]){delete _0x384de2[_0x892e('0x3c')];}_0x1d2a8c=_0x384de2;})[_0x892e('0xae')](function(){if(_0x1d2a8c===null){_0x52d365[_0x892e('0x2b')](_0x50a956);}else{if(_0x50a956===0x1f4){_0x52d365[_0x892e('0x30')](_0x50a956)['send'](_0x1d2a8c);}else{_0x52d365[_0x892e('0x30')](_0x50a956)[_0x892e('0xaf')](_0x1d2a8c);}}});};exports[_0x892e('0xb0')]=function(_0x427400,_0x35773a,_0x338fd1){var _0x29b436={};var _0xce12a2={};var _0x36b114;var _0x12707f;return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x427400[_0x892e('0x65')]['id']}})['then'](handleEntityNotFound(_0x35773a,null))[_0x892e('0x21')](function(_0x5eaa34){if(_0x5eaa34){_0x36b114=_0x5eaa34;_0xce12a2[_0x892e('0x44')]=_[_0x892e('0x59')](db[_0x892e('0x87')][_0x892e('0x40')]);_0xce12a2['query']=_[_0x892e('0x59')](_0x427400[_0x892e('0x49')]);_0xce12a2[_0x892e('0x4f')]=_[_0x892e('0x46')](_0xce12a2[_0x892e('0x44')],_0xce12a2[_0x892e('0x49')]);_0x29b436['attributes']=_['intersection'](_0xce12a2[_0x892e('0x44')],qs[_0x892e('0x48')](_0x427400[_0x892e('0x49')]['fields']));_0x29b436[_0x892e('0x47')]=_0x29b436[_0x892e('0x47')][_0x892e('0x4a')]?_0x29b436[_0x892e('0x47')]:_0xce12a2[_0x892e('0x44')];_0x29b436['order']=qs[_0x892e('0x4c')](_0x427400[_0x892e('0x49')][_0x892e('0x4c')]);_0x29b436[_0x892e('0x4d')]=qs[_0x892e('0x4f')](_[_0x892e('0x4e')](_0x427400['query'],_0xce12a2['filters']));if(_0x427400['query']['filter']){_0x29b436[_0x892e('0x4d')]=_[_0x892e('0x51')](_0x29b436[_0x892e('0x4d')],{'$or':_['map'](_0x29b436[_0x892e('0x47')],function(_0x43ca07){var _0xff59d4={};_0xff59d4[_0x43ca07]={'$like':'%'+_0x427400[_0x892e('0x49')]['filter']+'%'};return _0xff59d4;})});}_0x29b436=_[_0x892e('0x51')]({},_0x29b436,_0x427400['options']);return _0x36b114[_0x892e('0xb0')](_0x29b436);}})[_0x892e('0x21')](function(_0x5dc283){if(_0x5dc283){_0x12707f=_0x5dc283[_0x892e('0x4a')];if(!_0x427400[_0x892e('0x49')][_0x892e('0x71')](_0x892e('0x6b'))){_0x29b436[_0x892e('0x2c')]=qs['limit'](_0x427400[_0x892e('0x49')][_0x892e('0x2c')]);_0x29b436[_0x892e('0x2f')]=qs[_0x892e('0x2f')](_0x427400['query']['offset']);}return _0x36b114[_0x892e('0xb0')](_0x29b436);}})['then'](function(_0x3d9708){if(_0x3d9708){return _0x3d9708?{'count':_0x12707f,'rows':_0x3d9708}:null;}})['then'](respondWithResult(_0x35773a,null))[_0x892e('0x56')](handleError(_0x35773a,null));};exports[_0x892e('0xb1')]=function(_0x54aac8,_0x21cf56,_0x507f0c){var _0x144a51={'raw':![],'where':{}};var _0xaef3b6={};var _0x16859e={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x892e('0x6a')]({'where':{'id':_0x54aac8[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x21cf56,null))[_0x892e('0x21')](function(_0x4a2d0e){if(_0x4a2d0e){_0xaef3b6[_0x892e('0x44')]=_[_0x892e('0x59')](db[_0x892e('0x93')][_0x892e('0x40')]);_0xaef3b6[_0x892e('0x49')]=_['keys'](_0x54aac8[_0x892e('0x49')]);_0xaef3b6[_0x892e('0x4f')]=_[_0x892e('0x46')](_0xaef3b6[_0x892e('0x44')],_0xaef3b6[_0x892e('0x49')]);_0x144a51[_0x892e('0x47')]=_['intersection'](_0xaef3b6[_0x892e('0x44')],qs[_0x892e('0x48')](_0x54aac8[_0x892e('0x49')]['fields']));_0x144a51['attributes']=_0x144a51[_0x892e('0x47')][_0x892e('0x4a')]?_0x144a51[_0x892e('0x47')]:_0xaef3b6['model'];if(!_0x54aac8[_0x892e('0x49')][_0x892e('0x71')](_0x892e('0x6b'))){_0x144a51['limit']=qs[_0x892e('0x2c')](_0x54aac8['query'][_0x892e('0x2c')]);_0x144a51[_0x892e('0x2f')]=qs['offset'](_0x54aac8[_0x892e('0x49')][_0x892e('0x2f')]);}_0x144a51[_0x892e('0x4b')]=qs['sort'](_0x54aac8[_0x892e('0x49')][_0x892e('0x4c')]);_0x144a51[_0x892e('0x4d')]=qs['filters'](_[_0x892e('0x4e')](_0x54aac8[_0x892e('0x49')],_0xaef3b6['filters']));_0x144a51[_0x892e('0x4d')][_0x892e('0x67')]=_0x4a2d0e['id'];if(_0x54aac8['query'][_0x892e('0x50')]){_0x144a51[_0x892e('0x4d')]=_['merge'](_0x144a51[_0x892e('0x4d')],{'$or':_[_0x892e('0x45')](_0x144a51[_0x892e('0x47')],function(_0xe38144){var _0x162efb={};_0x162efb[_0xe38144]={'$like':'%'+_0x54aac8[_0x892e('0x49')]['filter']+'%'};return _0x162efb;})});}_0x144a51=_[_0x892e('0x51')]({},_0x144a51,_0x54aac8[_0x892e('0x5b')]);return db[_0x892e('0x93')]['count']({'where':_0x144a51[_0x892e('0x4d')]})[_0x892e('0x21')](function(_0x22ccd7){_0x16859e[_0x892e('0x2e')]=_0x22ccd7;if(_0x54aac8[_0x892e('0x49')][_0x892e('0x53')]){_0x144a51['include']=[{'model':db[_0x892e('0x84')],'as':_0x892e('0xb2'),'required':![]},{'model':db[_0x892e('0xb3')],'as':_0x892e('0xb4'),'attributes':[_0x892e('0x3c'),_0x892e('0xb5'),_0x892e('0xb6')],'required':![]},{'model':db[_0x892e('0xb7')],'as':_0x892e('0xb8'),'attributes':['id',_0x892e('0x3c'),_0x892e('0xb9')],'where':_0x54aac8[_0x892e('0x49')][_0x892e('0xba')]?{'id':_0x54aac8[_0x892e('0x49')]['tag']}:undefined,'required':_0x54aac8[_0x892e('0x49')][_0x892e('0xba')]?!![]:![]}];}return db['OpenchannelInteraction']['findAll'](_0x144a51);})[_0x892e('0x21')](function(_0x5b847f){_0x16859e[_0x892e('0x55')]=_0x5b847f;return _0x16859e;});}})[_0x892e('0x21')](respondWithFilteredResult(_0x21cf56,_0x144a51))[_0x892e('0x56')](handleError(_0x21cf56,null));};exports[_0x892e('0xbb')]=function(_0x3587d2,_0xb3608,_0x107f90){return db['OpenchannelAccount'][_0x892e('0x62')]({'where':{'id':_0x3587d2[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0xb3608,null))['then'](function(_0x5369a8){if(_0x5369a8){return _0x5369a8[_0x892e('0xbb')](_0x3587d2[_0x892e('0x5d')][_0x892e('0x6d')],_[_0x892e('0xbc')](_0x3587d2[_0x892e('0x5d')],['ids','id'])||{})['spread'](function(_0x33fb52){for(var _0x3229b8=0x0;_0x3229b8<_0x3587d2[_0x892e('0x5d')]['ids']['length'];_0x3229b8+=0x1){socket[_0x892e('0xbd')](_0x892e('0xbe'),{'UserId':Number(_0x3587d2[_0x892e('0x5d')][_0x892e('0x6d')][_0x3229b8]),'OpenchannelAccountId':Number(_0x3587d2[_0x892e('0x65')]['id'])});}return _0x33fb52;});}})['then'](respondWithResult(_0xb3608,null))[_0x892e('0x56')](handleError(_0xb3608,null));};exports[_0x892e('0xbf')]=function(_0xd5d64b,_0x368fcf,_0x4fa156){return db[_0x892e('0x3f')][_0x892e('0x62')]({'where':{'id':_0xd5d64b[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x368fcf,null))['then'](function(_0x1b9ff8){if(_0x1b9ff8){return _0x1b9ff8[_0x892e('0xbf')](_0xd5d64b['query'][_0x892e('0x6d')])[_0x892e('0x21')](function(){if(_[_0x892e('0xc0')](_0xd5d64b[_0x892e('0x49')][_0x892e('0x6d')])){for(var _0x241348=0x0;_0x241348<_0xd5d64b[_0x892e('0x49')][_0x892e('0x6d')][_0x892e('0x4a')];_0x241348+=0x1){socket[_0x892e('0xbd')]('userOpenchannelAccount:remove',{'UserId':Number(_0xd5d64b[_0x892e('0x49')][_0x892e('0x6d')][_0x241348]),'OpenchannelAccountId':Number(_0xd5d64b['params']['id'])});}}else{socket[_0x892e('0xbd')](_0x892e('0xc1'),{'UserId':Number(_0xd5d64b['query']['ids']),'OpenchannelAccountId':Number(_0xd5d64b[_0x892e('0x65')]['id'])});}});}})['then'](respondWithStatusCode(_0x368fcf,null))[_0x892e('0x56')](handleError(_0x368fcf,null));};exports[_0x892e('0xc2')]=function(_0x1ca9fc,_0x1b56e3,_0x35d5f3){var _0x2c90ef={};var _0x1d261a={};var _0x2cca1b;var _0x2c6c91;return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x1ca9fc[_0x892e('0x65')]['id']}})['then'](handleEntityNotFound(_0x1b56e3,null))['then'](function(_0x214030){if(_0x214030){_0x2cca1b=_0x214030;_0x1d261a[_0x892e('0x44')]=_[_0x892e('0x59')](db[_0x892e('0xb3')][_0x892e('0x40')]);_0x1d261a[_0x892e('0x49')]=_['keys'](_0x1ca9fc['query']);_0x1d261a[_0x892e('0x4f')]=_[_0x892e('0x46')](_0x1d261a[_0x892e('0x44')],_0x1d261a[_0x892e('0x49')]);_0x2c90ef[_0x892e('0x47')]=_[_0x892e('0x46')](_0x1d261a[_0x892e('0x44')],qs[_0x892e('0x48')](_0x1ca9fc[_0x892e('0x49')]['fields']));_0x2c90ef['attributes']=_0x2c90ef[_0x892e('0x47')]['length']?_0x2c90ef[_0x892e('0x47')]:_0x1d261a[_0x892e('0x44')];_0x2c90ef[_0x892e('0x4b')]=qs[_0x892e('0x4c')](_0x1ca9fc[_0x892e('0x49')][_0x892e('0x4c')]);_0x2c90ef['where']=qs['filters'](_[_0x892e('0x4e')](_0x1ca9fc[_0x892e('0x49')],_0x1d261a['filters']));if(_0x1ca9fc['query'][_0x892e('0x50')]){_0x2c90ef[_0x892e('0x4d')]=_[_0x892e('0x51')](_0x2c90ef[_0x892e('0x4d')],{'$or':_[_0x892e('0x45')](_0x2c90ef[_0x892e('0x47')],function(_0x3e14b7){var _0x42c8f1={};_0x42c8f1[_0x3e14b7]={'$like':'%'+_0x1ca9fc[_0x892e('0x49')]['filter']+'%'};return _0x42c8f1;})});}_0x2c90ef=_['merge']({},_0x2c90ef,_0x1ca9fc[_0x892e('0x5b')]);return _0x2cca1b['getAgents'](_0x2c90ef);}})[_0x892e('0x21')](function(_0x2be8e9){if(_0x2be8e9){_0x2c6c91=_0x2be8e9[_0x892e('0x4a')];if(!_0x1ca9fc[_0x892e('0x49')]['hasOwnProperty'](_0x892e('0x6b'))){_0x2c90ef['limit']=qs['limit'](_0x1ca9fc[_0x892e('0x49')][_0x892e('0x2c')]);_0x2c90ef[_0x892e('0x2f')]=qs[_0x892e('0x2f')](_0x1ca9fc['query']['offset']);}return _0x2cca1b['getAgents'](_0x2c90ef);}})[_0x892e('0x21')](function(_0x1e5ffe){if(_0x1e5ffe){return _0x1e5ffe?{'count':_0x2c6c91,'rows':_0x1e5ffe}:null;}})[_0x892e('0x21')](respondWithResult(_0x1b56e3,null))[_0x892e('0x56')](handleError(_0x1b56e3,null));};exports[_0x892e('0x3d')]=function(_0x340ce0,_0x3cdfd8,_0x4766e0){var _0x43ecba,_0x202fda,_0xfe8aeb;if(_[_0x892e('0x7c')](_0x340ce0['body'][_0x892e('0x5d')])||_0x340ce0[_0x892e('0x5d')][_0x892e('0x5d')]===''){throw new db[(_0x892e('0x74'))][(_0x892e('0x75'))](_0x892e('0x7e'));}if(_[_0x892e('0x7c')](_0x340ce0[_0x892e('0x5d')]['to'])){}_0x43ecba=_0x340ce0['body']['to'];return db[_0x892e('0x3f')][_0x892e('0x6a')]({'where':{'id':_0x340ce0[_0x892e('0x65')]['id']}})[_0x892e('0x21')](handleEntityNotFound(_0x3cdfd8,null))['then'](function(_0x15251a){if(_0x15251a){return db['OpenchannelAccount'][_0x892e('0x62')]({'where':{'id':_0x15251a['id']},'include':[{'model':db[_0x892e('0x82')],'as':'List','include':[{'model':db[_0x892e('0x84')],'as':'Contacts','where':{[_0x15251a[_0x892e('0x81')]]:_0x43ecba},'limit':0x1,'order':[[_0x892e('0x79'),_0x892e('0x86')]]}]}]})['then'](handleEntityNotFound(_0x3cdfd8,null))[_0x892e('0x21')](function(_0x5c0a6a){if(_0x5c0a6a&&_0x5c0a6a[_0x892e('0x83')]){_0x202fda=_0x5c0a6a[_0x892e('0x38')]({'plain':!![]});if(_0x202fda['List']&&_0x202fda[_0x892e('0x83')][_0x892e('0x85')][_0x892e('0x4a')]){return _0x202fda[_0x892e('0x83')][_0x892e('0x85')][0x0];}return db[_0x892e('0x84')][_0x892e('0x5c')](_['defaults'](_0x340ce0[_0x892e('0x5d')],{'firstName':_0x43ecba,[_0x5c0a6a[_0x892e('0x81')]]:_0x43ecba,'phone':_0x43ecba,'ListId':_0x202fda['ListId']}));}})[_0x892e('0x21')](handleEntityNotFound(_0x3cdfd8,null))['then'](function(_0x1f9638){if(_0x1f9638){_0xfe8aeb=_0x1f9638;return db[_0x892e('0x93')][_0x892e('0x62')]({'where':{'ContactId':_0xfe8aeb['id'],'closed':![],'OpenchannelAccountId':_0x202fda['id']}})[_0x892e('0x21')](function(_0x1930f8){if(_0x1930f8){return[_0x1930f8,![]];}return db['OpenchannelInteraction']['create']({'UserId':_0x340ce0[_0x892e('0x5e')]['id'],'ContactId':_0xfe8aeb['id'],'OpenchannelAccountId':_0x202fda['id'],'lastMsgDirection':'out','firstMsgDirection':_0x892e('0xc3'),'Messages':[_[_0x892e('0x51')](_0x340ce0[_0x892e('0x5d')],{'read':![],'body':_0x340ce0[_0x892e('0x5d')][_0x892e('0x5d')],'OpenchannelAccountId':_0x202fda['id'],'UserId':_0x340ce0[_0x892e('0x5e')]['id'],'ContactId':_0xfe8aeb['id']})]},{'include':[{'model':db[_0x892e('0x9c')],'as':_0x892e('0xc4')}]})[_0x892e('0x21')](function(_0x33262e){return[_0x33262e,!![]];});});}})['spread'](function(_0xadfc2b,_0x190a39){if(_0x190a39){return _0xadfc2b;}return db[_0x892e('0x9c')][_0x892e('0x5c')](_[_0x892e('0x51')](_0x340ce0['body'],{'read':![],'body':_0x340ce0['body']['body'],'OpenchannelAccountId':_0x202fda['id'],'OpenchannelInteractionId':_0xadfc2b['id'],'UserId':_0x340ce0['user']['id'],'ContactId':_0xfe8aeb['id']}))[_0x892e('0x21')](function(_0x162de2){_0xadfc2b[_0x892e('0xc5')][_0x892e('0xc4')]=[];_0xadfc2b[_0x892e('0xc5')][_0x892e('0xc4')][_0x892e('0xc6')](_0x162de2['dataValues']);return _0xadfc2b;});});}})[_0x892e('0x21')](respondWithResult(_0x3cdfd8,null))[_0x892e('0x56')](handleError(_0x3cdfd8,null));};
\ No newline at end of file
index 2ffe105..e34807c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['OpenchannelAccount','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x9ea665,_0x4fecf4){var _0x583ad0=function(_0x52afa9){while(--_0x52afa9){_0x9ea665['push'](_0x9ea665['shift']());}};_0x583ad0(++_0x4fecf4);}(_0xf109,0xce));var _0x9f10=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xf109[_0x32f7d7];return _0x133d09;};'use strict';var EventEmitter=require(_0x9f10('0x0'));var OpenchannelAccount=require(_0x9f10('0x1'))['db'][_0x9f10('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x9f10('0x3')};function emitEvent(_0x74f517){return function(_0x74d0ee,_0x26f01c,_0x4027f4){OpenchannelAccountEvents[_0x9f10('0x4')](_0x74f517+':'+_0x74d0ee['id'],_0x74d0ee);OpenchannelAccountEvents[_0x9f10('0x4')](_0x74f517,_0x74d0ee);_0x4027f4(null);};}for(var e in events){if(events[_0x9f10('0x5')](e)){var event=events[e];OpenchannelAccount[_0x9f10('0x6')](e,emitEvent(event));}}module[_0x9f10('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xb688=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x279c80,_0x3c9692){var _0x4e1f5c=function(_0xe42af3){while(--_0xe42af3){_0x279c80['push'](_0x279c80['shift']());}};_0x4e1f5c(++_0x3c9692);}(_0xb688,0xcf));var _0x8b68=function(_0x21c2c8,_0x44257e){_0x21c2c8=_0x21c2c8-0x0;var _0x4dd745=_0xb688[_0x21c2c8];return _0x4dd745;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require(_0x8b68('0x0'))['db'][_0x8b68('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8b68('0x2')](0x0);var events={'afterCreate':_0x8b68('0x3'),'afterUpdate':_0x8b68('0x4'),'afterDestroy':_0x8b68('0x5')};function emitEvent(_0x4e281c){return function(_0x41030e,_0x27925d,_0x30f33d){OpenchannelAccountEvents[_0x8b68('0x6')](_0x4e281c+':'+_0x41030e['id'],_0x41030e);OpenchannelAccountEvents['emit'](_0x4e281c,_0x41030e);_0x30f33d(null);};}for(var e in events){if(events[_0x8b68('0x7')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8b68('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index 0adf37c..4041b4b 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(_0x5366ce,_0x6d12e4){var _0x52c31b=function(_0x493284){while(--_0x493284){_0x5366ce['push'](_0x5366ce['shift']());}};_0x52c31b(++_0x6d12e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x3c0a55,_0x3509b4){var _0x3fba6f=function(_0x3b5162){while(--_0x3b5162){_0x3c0a55['push'](_0x3c0a55['shift']());}};_0x3fba6f(++_0x3509b4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e76be8..fa1cfaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c00=['then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request'];(function(_0x1f4f76,_0x10c0c6){var _0x202150=function(_0x56d34a){while(--_0x56d34a){_0x1f4f76['push'](_0x1f4f76['shift']());}};_0x202150(++_0x10c0c6);}(_0x9c00,0x1a0));var _0x09c0=function(_0x203168,_0xa8d6be){_0x203168=_0x203168-0x0;var _0xde9a61=_0x9c00[_0x203168];return _0xde9a61;};'use strict';var _=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x09c0('0x2'));var fs=require('fs');var Redis=require(_0x09c0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x09c0('0x4'));var logger=require(_0x09c0('0x5'))(_0x09c0('0x6'));var config=require(_0x09c0('0x7'));var jayson=require(_0x09c0('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x09c0('0x9')]=_[_0x09c0('0xa')](config[_0x09c0('0x9')],{'host':_0x09c0('0xb'),'port':0x18eb});var socket=require(_0x09c0('0xc'))(new Redis(config['redis']));require(_0x09c0('0xd'))[_0x09c0('0xe')](socket);function respondWithRpcPromise(_0xa20b5c,_0x1feb1d,_0x27a33c){return new BPromise(function(_0x1e16f4,_0x1fec4f){return client[_0x09c0('0xf')](_0xa20b5c,_0x27a33c)[_0x09c0('0x10')](function(_0x4523ea){logger[_0x09c0('0x11')](_0x09c0('0x12'),_0x1feb1d,_0x09c0('0x13'));logger[_0x09c0('0x14')](_0x09c0('0x15'),_0x1feb1d,_0x09c0('0x13'),JSON[_0x09c0('0x16')](_0x4523ea));if(_0x4523ea[_0x09c0('0x17')]){if(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x18')]===0x1f4){logger[_0x09c0('0x17')](_0x09c0('0x12'),_0x1feb1d,_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);return _0x1fec4f(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x1feb1d,_0x4523ea['error'][_0x09c0('0x19')]);return _0x1e16f4(_0x4523ea[_0x09c0('0x17')][_0x09c0('0x19')]);}else{logger[_0x09c0('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x1feb1d,_0x09c0('0x13'));_0x1e16f4(_0x4523ea['result']['message']);}})[_0x09c0('0x1a')](function(_0x50fccc){logger[_0x09c0('0x17')](_0x09c0('0x12'),_0x1feb1d,_0x50fccc);_0x1fec4f(_0x50fccc);});});}
\ No newline at end of file
+var _0xf45e=['OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','message','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then'];(function(_0x474542,_0x214f97){var _0x5a5619=function(_0x126665){while(--_0x126665){_0x474542['push'](_0x474542['shift']());}};_0x5a5619(++_0x214f97);}(_0xf45e,0x115));var _0xef45=function(_0x1439fb,_0x1b69d7){_0x1439fb=_0x1439fb-0x0;var _0x39151e=_0xf45e[_0x1439fb];return _0x39151e;};'use strict';var _=require(_0xef45('0x0'));var util=require('util');var moment=require(_0xef45('0x1'));var BPromise=require('bluebird');var rs=require(_0xef45('0x2'));var fs=require('fs');var Redis=require(_0xef45('0x3'));var db=require(_0xef45('0x4'))['db'];var utils=require(_0xef45('0x5'));var logger=require(_0xef45('0x6'))(_0xef45('0x7'));var config=require(_0xef45('0x8'));var jayson=require(_0xef45('0x9'));var client=jayson[_0xef45('0xa')][_0xef45('0xb')]({'port':0x232a});config[_0xef45('0xc')]=_[_0xef45('0xd')](config[_0xef45('0xc')],{'host':_0xef45('0xe'),'port':0x18eb});var socket=require(_0xef45('0xf'))(new Redis(config[_0xef45('0xc')]));require(_0xef45('0x10'))[_0xef45('0x11')](socket);function respondWithRpcPromise(_0xdac512,_0x4d5cc7,_0x3e852f){return new BPromise(function(_0x400d25,_0x46cfeb){return client[_0xef45('0x12')](_0xdac512,_0x3e852f)[_0xef45('0x13')](function(_0x2b429f){logger['info'](_0xef45('0x14'),_0x4d5cc7,_0xef45('0x15'));logger[_0xef45('0x16')](_0xef45('0x17'),_0x4d5cc7,_0xef45('0x15'),JSON['stringify'](_0x2b429f));if(_0x2b429f['error']){if(_0x2b429f[_0xef45('0x18')]['code']===0x1f4){logger[_0xef45('0x18')](_0xef45('0x14'),_0x4d5cc7,_0x2b429f[_0xef45('0x18')]['message']);return _0x46cfeb(_0x2b429f['error'][_0xef45('0x19')]);}logger['error'](_0xef45('0x14'),_0x4d5cc7,_0x2b429f[_0xef45('0x18')][_0xef45('0x19')]);return _0x400d25(_0x2b429f[_0xef45('0x18')]['message']);}else{logger['info'](_0xef45('0x14'),_0x4d5cc7,_0xef45('0x15'));_0x400d25(_0x2b429f[_0xef45('0x1a')][_0xef45('0x19')]);}})['catch'](function(_0x562955){logger[_0xef45('0x18')](_0xef45('0x14'),_0x4d5cc7,_0x562955);_0x46cfeb(_0x562955);});});}
\ No newline at end of file
index 251cf01..623068e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b6b=['removeListener','register','length','openchannelAccount:','./openchannelAccount.events','remove','update'];(function(_0x7ab5ae,_0x29e111){var _0x11db13=function(_0x14d113){while(--_0x14d113){_0x7ab5ae['push'](_0x7ab5ae['shift']());}};_0x11db13(++_0x29e111);}(_0x7b6b,0xac));var _0xb7b6=function(_0x1f287f,_0x3038e5){_0x1f287f=_0x1f287f-0x0;var _0x184494=_0x7b6b[_0x1f287f];return _0x184494;};'use strict';var OpenchannelAccountEvents=require(_0xb7b6('0x0'));var events=['save',_0xb7b6('0x1'),_0xb7b6('0x2')];function createListener(_0x3d53dd,_0x547cab){return function(_0x27f1bd){_0x547cab['emit'](_0x3d53dd,_0x27f1bd);};}function removeListener(_0x2b546b,_0x7193f5){return function(){OpenchannelAccountEvents[_0xb7b6('0x3')](_0x2b546b,_0x7193f5);};}exports[_0xb7b6('0x4')]=function(_0xde6ac0){for(var _0x4109d2=0x0,_0x19e81f=events[_0xb7b6('0x5')];_0x4109d2<_0x19e81f;_0x4109d2++){var _0x36cd51=events[_0x4109d2];var _0x31809b=createListener(_0xb7b6('0x6')+_0x36cd51,_0xde6ac0);OpenchannelAccountEvents['on'](_0x36cd51,_0x31809b);}};
\ No newline at end of file
+var _0x1b73=['openchannelAccount:','save','remove','update','register','length'];(function(_0x359a73,_0x2ee207){var _0x41baa4=function(_0x5f16f){while(--_0x5f16f){_0x359a73['push'](_0x359a73['shift']());}};_0x41baa4(++_0x2ee207);}(_0x1b73,0x1d5));var _0x31b7=function(_0x1afd7b,_0x3b2ab8){_0x1afd7b=_0x1afd7b-0x0;var _0xf8d47e=_0x1b73[_0x1afd7b];return _0xf8d47e;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x31b7('0x0'),_0x31b7('0x1'),_0x31b7('0x2')];function createListener(_0x5c767e,_0x4bf5ae){return function(_0x17c0ef){_0x4bf5ae['emit'](_0x5c767e,_0x17c0ef);};}function removeListener(_0x40fef2,_0x3682cc){return function(){OpenchannelAccountEvents['removeListener'](_0x40fef2,_0x3682cc);};}exports[_0x31b7('0x3')]=function(_0x3d058f){for(var _0x15c31e=0x0,_0x502838=events[_0x31b7('0x4')];_0x15c31e<_0x502838;_0x15c31e++){var _0x1a730f=events[_0x15c31e];var _0x86ef8e=createListener(_0x31b7('0x5')+_0x1a730f,_0x3d058f);OpenchannelAccountEvents['on'](_0x1a730f,_0x86ef8e);}};
\ No newline at end of file
index cbfa445..fb5c8fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x075d=['get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller'];(function(_0x4e566c,_0x16e04c){var _0x31947e=function(_0x2479a3){while(--_0x2479a3){_0x4e566c['push'](_0x4e566c['shift']());}};_0x31947e(++_0x16e04c);}(_0x075d,0xc9));var _0xd075=function(_0x402c78,_0x4484c9){_0x402c78=_0x402c78-0x0;var _0x593215=_0x075d[_0x402c78];return _0x593215;};'use strict';var multer=require(_0xd075('0x0'));var util=require(_0xd075('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd075('0x2')]();var fs_extra=require(_0xd075('0x3'));var auth=require(_0xd075('0x4'));var interaction=require(_0xd075('0x5'));var config=require(_0xd075('0x6'));var controller=require(_0xd075('0x7'));router[_0xd075('0x8')]('/',auth[_0xd075('0x9')](),controller[_0xd075('0xa')]);router['get'](_0xd075('0xb'),auth[_0xd075('0x9')](),controller[_0xd075('0xc')]);router[_0xd075('0xd')]('/',auth['isAuthenticated'](),controller[_0xd075('0xe')]);router[_0xd075('0xf')]('/:id',auth[_0xd075('0x9')](),controller['update']);router[_0xd075('0x10')](_0xd075('0xb'),auth[_0xd075('0x9')](),controller[_0xd075('0x11')]);module[_0xd075('0x12')]=router;
\ No newline at end of file
+var _0x9460=['Router','../../components/auth/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','show','put','/:id','delete','destroy','multer','util','path','connect-timeout','express'];(function(_0x2c5a58,_0x33ef57){var _0x2f6988=function(_0x51584b){while(--_0x51584b){_0x2c5a58['push'](_0x2c5a58['shift']());}};_0x2f6988(++_0x33ef57);}(_0x9460,0x1e8));var _0x0946=function(_0x34c5d2,_0x2878ee){_0x34c5d2=_0x34c5d2-0x0;var _0x90e47c=_0x9460[_0x34c5d2];return _0x90e47c;};'use strict';var multer=require(_0x0946('0x0'));var util=require(_0x0946('0x1'));var path=require(_0x0946('0x2'));var timeout=require(_0x0946('0x3'));var express=require(_0x0946('0x4'));var router=express[_0x0946('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0946('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0946('0x7'));var controller=require(_0x0946('0x8'));router[_0x0946('0x9')]('/',auth[_0x0946('0xa')](),controller[_0x0946('0xb')]);router[_0x0946('0x9')]('/:id',auth[_0x0946('0xa')](),controller[_0x0946('0xc')]);router['post']('/',auth[_0x0946('0xa')](),controller['create']);router[_0x0946('0xd')](_0x0946('0xe'),auth[_0x0946('0xa')](),controller['update']);router[_0x0946('0xf')](_0x0946('0xe'),auth['isAuthenticated'](),controller[_0x0946('0x10')]);module['exports']=router;
\ No newline at end of file
index d10ee24..8532159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b00=['exports','INTEGER','STRING','TEXT'];(function(_0x3932f3,_0x21f617){var _0x3f875f=function(_0xbda52b){while(--_0xbda52b){_0x3932f3['push'](_0x3932f3['shift']());}};_0x3f875f(++_0x21f617);}(_0x8b00,0x100));var _0x08b0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8b00[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x08b0('0x0')]={'priority':{'type':Sequelize[_0x08b0('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x08b0('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x08b0('0x3')]()},'description':{'type':Sequelize[_0x08b0('0x2')]},'interval':{'type':Sequelize[_0x08b0('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xe107=['INTEGER','noop','STRING','sequelize','exports'];(function(_0x50c35a,_0x514e66){var _0x4dda1e=function(_0x18b5d1){while(--_0x18b5d1){_0x50c35a['push'](_0x50c35a['shift']());}};_0x4dda1e(++_0x514e66);}(_0xe107,0x17a));var _0x7e10=function(_0x4ca392,_0x5cfea3){_0x4ca392=_0x4ca392-0x0;var _0xb0f431=_0xe107[_0x4ca392];return _0xb0f431;};'use strict';var Sequelize=require(_0x7e10('0x0'));module[_0x7e10('0x1')]={'priority':{'type':Sequelize[_0x7e10('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7e10('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x7e10('0x4')]},'interval':{'type':Sequelize[_0x7e10('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 7123147..a8389ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6bf=['name','send','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','OpenchannelApplication','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','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','status','end','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack'];(function(_0x202d5c,_0x3a1cd0){var _0x313891=function(_0x42b817){while(--_0x42b817){_0x202d5c['push'](_0x202d5c['shift']());}};_0x313891(++_0x3a1cd0);}(_0xb6bf,0x115));var _0xfb6b=function(_0x4d885a,_0x57fb79){_0x4d885a=_0x4d885a-0x0;var _0x3b43fd=_0xb6bf[_0x4d885a];return _0x3b43fd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfb6b('0x0'));var zipdir=require(_0xfb6b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb6b('0x2'));var moment=require(_0xfb6b('0x3'));var BPromise=require(_0xfb6b('0x4'));var Mustache=require(_0xfb6b('0x5'));var util=require(_0xfb6b('0x6'));var path=require(_0xfb6b('0x7'));var sox=require('sox');var csv=require(_0xfb6b('0x8'));var ejs=require(_0xfb6b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb6b('0xa'));var squel=require(_0xfb6b('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfb6b('0xc'));var toCsv=require(_0xfb6b('0x8'));var querystring=require(_0xfb6b('0xd'));var Papa=require(_0xfb6b('0xe'));var Redis=require(_0xfb6b('0xf'));var authService=require(_0xfb6b('0x10'));var qs=require(_0xfb6b('0x11'));var as=require(_0xfb6b('0x12'));var hardwareService=require(_0xfb6b('0x13'));var logger=require(_0xfb6b('0x14'))(_0xfb6b('0x15'));var utils=require(_0xfb6b('0x16'));var config=require(_0xfb6b('0x17'));var licenseUtil=require(_0xfb6b('0x18'));var db=require(_0xfb6b('0x19'))['db'];function respondWithStatusCode(_0x4240ba,_0x269767){_0x269767=_0x269767||0xcc;return function(_0x1c32c8){if(_0x1c32c8){return _0x4240ba['sendStatus'](_0x269767);}return _0x4240ba[_0xfb6b('0x1a')](_0x269767)[_0xfb6b('0x1b')]();};}function respondWithResult(_0x499d41,_0x1aba40){_0x1aba40=_0x1aba40||0xc8;return function(_0x4bffa9){if(_0x4bffa9){return _0x499d41[_0xfb6b('0x1a')](_0x1aba40)['json'](_0x4bffa9);}};}function respondWithFilteredResult(_0x5db74c,_0x392ee1){return function(_0x457fa6){if(_0x457fa6){var _0x46fc98=typeof _0x392ee1[_0xfb6b('0x1c')]===_0xfb6b('0x1d')&&typeof _0x392ee1['limit']===_0xfb6b('0x1d');var _0x1b9033=_0x457fa6['count'];var _0x4727e2=_0x46fc98?0x0:_0x392ee1[_0xfb6b('0x1c')];var _0x3e7be6=_0x46fc98?_0x457fa6[_0xfb6b('0x1e')]:_0x392ee1[_0xfb6b('0x1c')]+_0x392ee1[_0xfb6b('0x1f')];var _0x33632e;if(_0x3e7be6>=_0x1b9033){_0x3e7be6=_0x1b9033;_0x33632e=0xc8;}else{_0x33632e=0xce;}_0x5db74c[_0xfb6b('0x1a')](_0x33632e);return _0x5db74c[_0xfb6b('0x20')](_0xfb6b('0x21'),_0x4727e2+'-'+_0x3e7be6+'/'+_0x1b9033)['json'](_0x457fa6);}return null;};}function patchUpdates(_0x4541dd){return function(_0x179ef3){try{jsonpatch[_0xfb6b('0x22')](_0x179ef3,_0x4541dd,!![]);}catch(_0x594cb0){return BPromise[_0xfb6b('0x23')](_0x594cb0);}return _0x179ef3[_0xfb6b('0x24')]();};}function saveUpdates(_0x4112db,_0xf79d1b){return function(_0x169856){if(_0x169856){return _0x169856[_0xfb6b('0x25')](_0x4112db)[_0xfb6b('0x26')](function(_0x4f25e2){return _0x4f25e2;});}return null;};}function removeEntity(_0x4f3444,_0x567d1d){return function(_0x458ef2){if(_0x458ef2){return _0x458ef2[_0xfb6b('0x27')]()[_0xfb6b('0x26')](function(){_0x4f3444[_0xfb6b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10ced4,_0x524f41){return function(_0x20a17c){if(!_0x20a17c){_0x10ced4[_0xfb6b('0x28')](0x194);}return _0x20a17c;};}function handleError(_0x3277b5,_0xcbfbc0){_0xcbfbc0=_0xcbfbc0||0x1f4;return function(_0x151b16){logger[_0xfb6b('0x29')](_0x151b16[_0xfb6b('0x2a')]);if(_0x151b16[_0xfb6b('0x2b')]){delete _0x151b16[_0xfb6b('0x2b')];}_0x3277b5[_0xfb6b('0x1a')](_0xcbfbc0)[_0xfb6b('0x2c')](_0x151b16);};}exports[_0xfb6b('0x2d')]=function(_0x364257,_0x2fe56e){var _0x53ba5e={},_0x21ab44={},_0x5ba508={'count':0x0,'rows':[]};var _0x32dc8f=_['map'](db['OpenchannelApplication'][_0xfb6b('0x2e')],function(_0x44d54e){return{'name':_0x44d54e[_0xfb6b('0x2f')],'type':_0x44d54e[_0xfb6b('0x30')][_0xfb6b('0x31')]};});_0x21ab44[_0xfb6b('0x32')]=_['map'](_0x32dc8f,_0xfb6b('0x2b'));_0x21ab44[_0xfb6b('0x33')]=_['keys'](_0x364257[_0xfb6b('0x33')]);_0x21ab44[_0xfb6b('0x34')]=_[_0xfb6b('0x35')](_0x21ab44[_0xfb6b('0x32')],_0x21ab44['query']);_0x53ba5e[_0xfb6b('0x36')]=_['intersection'](_0x21ab44['model'],qs[_0xfb6b('0x37')](_0x364257[_0xfb6b('0x33')][_0xfb6b('0x37')]));_0x53ba5e['attributes']=_0x53ba5e[_0xfb6b('0x36')]['length']?_0x53ba5e[_0xfb6b('0x36')]:_0x21ab44['model'];if(!_0x364257[_0xfb6b('0x33')][_0xfb6b('0x38')](_0xfb6b('0x39'))){_0x53ba5e[_0xfb6b('0x1f')]=qs['limit'](_0x364257[_0xfb6b('0x33')][_0xfb6b('0x1f')]);_0x53ba5e['offset']=qs['offset'](_0x364257['query'][_0xfb6b('0x1c')]);}_0x53ba5e[_0xfb6b('0x3a')]=qs[_0xfb6b('0x3b')](_0x364257[_0xfb6b('0x33')][_0xfb6b('0x3b')]);_0x53ba5e[_0xfb6b('0x3c')]=qs[_0xfb6b('0x34')](_[_0xfb6b('0x3d')](_0x364257[_0xfb6b('0x33')],_0x21ab44[_0xfb6b('0x34')]),_0x32dc8f);if(_0x364257[_0xfb6b('0x33')][_0xfb6b('0x3e')]){_0x53ba5e[_0xfb6b('0x3c')]=_[_0xfb6b('0x3f')](_0x53ba5e['where'],{'$or':_[_0xfb6b('0x40')](_0x32dc8f,function(_0x446666){if(_0x446666[_0xfb6b('0x30')]!==_0xfb6b('0x41')){var _0x1bad26={};_0x1bad26[_0x446666[_0xfb6b('0x2b')]]={'$like':'%'+_0x364257[_0xfb6b('0x33')][_0xfb6b('0x3e')]+'%'};return _0x1bad26;}})});}_0x53ba5e=_['merge']({},_0x53ba5e,_0x364257[_0xfb6b('0x42')]);var _0x2a9021={'where':_0x53ba5e[_0xfb6b('0x3c')]};return db[_0xfb6b('0x43')][_0xfb6b('0x1e')](_0x2a9021)[_0xfb6b('0x26')](function(_0x1aff0d){_0x5ba508[_0xfb6b('0x1e')]=_0x1aff0d;if(_0x364257[_0xfb6b('0x33')][_0xfb6b('0x44')]){_0x53ba5e[_0xfb6b('0x45')]=[{'all':!![]}];}return db[_0xfb6b('0x43')][_0xfb6b('0x46')](_0x53ba5e);})[_0xfb6b('0x26')](function(_0x4e87dd){_0x5ba508[_0xfb6b('0x47')]=_0x4e87dd;return _0x5ba508;})['then'](respondWithFilteredResult(_0x2fe56e,_0x53ba5e))[_0xfb6b('0x48')](handleError(_0x2fe56e,null));};exports[_0xfb6b('0x49')]=function(_0x2ffbaa,_0x2f713f){var _0x2da34c={'raw':!![],'where':{'id':_0x2ffbaa[_0xfb6b('0x4a')]['id']}},_0x2e1412={};_0x2e1412['model']=_[_0xfb6b('0x4b')](db[_0xfb6b('0x43')]['rawAttributes']);_0x2e1412[_0xfb6b('0x33')]=_[_0xfb6b('0x4b')](_0x2ffbaa[_0xfb6b('0x33')]);_0x2e1412[_0xfb6b('0x34')]=_[_0xfb6b('0x35')](_0x2e1412['model'],_0x2e1412[_0xfb6b('0x33')]);_0x2da34c[_0xfb6b('0x36')]=_[_0xfb6b('0x35')](_0x2e1412['model'],qs['fields'](_0x2ffbaa[_0xfb6b('0x33')][_0xfb6b('0x37')]));_0x2da34c[_0xfb6b('0x36')]=_0x2da34c[_0xfb6b('0x36')][_0xfb6b('0x4c')]?_0x2da34c[_0xfb6b('0x36')]:_0x2e1412['model'];if(_0x2ffbaa[_0xfb6b('0x33')][_0xfb6b('0x44')]){_0x2da34c[_0xfb6b('0x45')]=[{'all':!![]}];}_0x2da34c=_[_0xfb6b('0x3f')]({},_0x2da34c,_0x2ffbaa[_0xfb6b('0x42')]);return db[_0xfb6b('0x43')][_0xfb6b('0x4d')](_0x2da34c)[_0xfb6b('0x26')](handleEntityNotFound(_0x2f713f,null))[_0xfb6b('0x26')](respondWithResult(_0x2f713f,null))[_0xfb6b('0x48')](handleError(_0x2f713f,null));};exports['create']=function(_0x21117e,_0x4e6e10){return db[_0xfb6b('0x43')][_0xfb6b('0x4e')](_0x21117e[_0xfb6b('0x4f')],{})[_0xfb6b('0x26')](respondWithResult(_0x4e6e10,0xc9))[_0xfb6b('0x48')](handleError(_0x4e6e10,null));};exports[_0xfb6b('0x25')]=function(_0x642635,_0x157ba4){if(_0x642635[_0xfb6b('0x4f')]['id']){delete _0x642635[_0xfb6b('0x4f')]['id'];}return db[_0xfb6b('0x43')][_0xfb6b('0x4d')]({'where':{'id':_0x642635[_0xfb6b('0x4a')]['id']}})[_0xfb6b('0x26')](handleEntityNotFound(_0x157ba4,null))['then'](saveUpdates(_0x642635[_0xfb6b('0x4f')],null))[_0xfb6b('0x26')](respondWithResult(_0x157ba4,null))[_0xfb6b('0x48')](handleError(_0x157ba4,null));};exports['destroy']=function(_0x349cce,_0xb408d4){return db['OpenchannelApplication'][_0xfb6b('0x4d')]({'where':{'id':_0x349cce[_0xfb6b('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb408d4,null))[_0xfb6b('0x26')](removeEntity(_0xb408d4,null))['catch'](handleError(_0xb408d4,null));};
\ No newline at end of file
+var _0xbf0d=['path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelApplication','include','findAll','catch','show','params','keys','includeAll','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','util'];(function(_0x179535,_0x494780){var _0x11ef66=function(_0x5d924f){while(--_0x5d924f){_0x179535['push'](_0x179535['shift']());}};_0x11ef66(++_0x494780);}(_0xbf0d,0x1bc));var _0xdbf0=function(_0x313118,_0x112646){_0x313118=_0x313118-0x0;var _0x14052d=_0xbf0d[_0x313118];return _0x14052d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xdbf0('0x0'));var jsonpatch=require(_0xdbf0('0x1'));var rp=require(_0xdbf0('0x2'));var moment=require(_0xdbf0('0x3'));var BPromise=require(_0xdbf0('0x4'));var Mustache=require('mustache');var util=require(_0xdbf0('0x5'));var path=require(_0xdbf0('0x6'));var sox=require(_0xdbf0('0x7'));var csv=require(_0xdbf0('0x8'));var ejs=require(_0xdbf0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdbf0('0xa'));var squel=require('squel');var crypto=require(_0xdbf0('0xb'));var jsforce=require(_0xdbf0('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xdbf0('0xd'));var Papa=require(_0xdbf0('0xe'));var Redis=require(_0xdbf0('0xf'));var authService=require(_0xdbf0('0x10'));var qs=require(_0xdbf0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbf0('0x12'));var logger=require(_0xdbf0('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xdbf0('0x14'));var licenseUtil=require(_0xdbf0('0x15'));var db=require(_0xdbf0('0x16'))['db'];function respondWithStatusCode(_0x2ad122,_0xa4906a){_0xa4906a=_0xa4906a||0xcc;return function(_0xe94eaa){if(_0xe94eaa){return _0x2ad122[_0xdbf0('0x17')](_0xa4906a);}return _0x2ad122[_0xdbf0('0x18')](_0xa4906a)[_0xdbf0('0x19')]();};}function respondWithResult(_0x18435c,_0x3fd03d){_0x3fd03d=_0x3fd03d||0xc8;return function(_0x168564){if(_0x168564){return _0x18435c[_0xdbf0('0x18')](_0x3fd03d)[_0xdbf0('0x1a')](_0x168564);}};}function respondWithFilteredResult(_0x842959,_0x355714){return function(_0xd7458e){if(_0xd7458e){var _0x201c98=typeof _0x355714[_0xdbf0('0x1b')]==='undefined'&&typeof _0x355714[_0xdbf0('0x1c')]===_0xdbf0('0x1d');var _0x56fafc=_0xd7458e[_0xdbf0('0x1e')];var _0x36df84=_0x201c98?0x0:_0x355714[_0xdbf0('0x1b')];var _0x21dccc=_0x201c98?_0xd7458e['count']:_0x355714[_0xdbf0('0x1b')]+_0x355714[_0xdbf0('0x1c')];var _0x4c86e0;if(_0x21dccc>=_0x56fafc){_0x21dccc=_0x56fafc;_0x4c86e0=0xc8;}else{_0x4c86e0=0xce;}_0x842959[_0xdbf0('0x18')](_0x4c86e0);return _0x842959['set'](_0xdbf0('0x1f'),_0x36df84+'-'+_0x21dccc+'/'+_0x56fafc)['json'](_0xd7458e);}return null;};}function patchUpdates(_0x2f3e1d){return function(_0x4f1517){try{jsonpatch[_0xdbf0('0x20')](_0x4f1517,_0x2f3e1d,!![]);}catch(_0x26c013){return BPromise['reject'](_0x26c013);}return _0x4f1517[_0xdbf0('0x21')]();};}function saveUpdates(_0x948a27,_0x33355e){return function(_0x44cd25){if(_0x44cd25){return _0x44cd25[_0xdbf0('0x22')](_0x948a27)[_0xdbf0('0x23')](function(_0x316cf5){return _0x316cf5;});}return null;};}function removeEntity(_0x3ad326,_0x41e822){return function(_0x17ba8a){if(_0x17ba8a){return _0x17ba8a[_0xdbf0('0x24')]()[_0xdbf0('0x23')](function(){_0x3ad326['status'](0xcc)[_0xdbf0('0x19')]();});}};}function handleEntityNotFound(_0x217ce9,_0x1e295e){return function(_0x5b82df){if(!_0x5b82df){_0x217ce9['sendStatus'](0x194);}return _0x5b82df;};}function handleError(_0x5f4bfb,_0x1915d7){_0x1915d7=_0x1915d7||0x1f4;return function(_0x3b0cba){logger[_0xdbf0('0x25')](_0x3b0cba[_0xdbf0('0x26')]);if(_0x3b0cba[_0xdbf0('0x27')]){delete _0x3b0cba[_0xdbf0('0x27')];}_0x5f4bfb['status'](_0x1915d7)[_0xdbf0('0x28')](_0x3b0cba);};}exports[_0xdbf0('0x29')]=function(_0x1a1125,_0xd9399c){var _0x55d692={},_0x2b6399={},_0x1c7cec={'count':0x0,'rows':[]};var _0x5ee7fc=_['map'](db['OpenchannelApplication'][_0xdbf0('0x2a')],function(_0x4230a0){return{'name':_0x4230a0[_0xdbf0('0x2b')],'type':_0x4230a0[_0xdbf0('0x2c')][_0xdbf0('0x2d')]};});_0x2b6399[_0xdbf0('0x2e')]=_[_0xdbf0('0x2f')](_0x5ee7fc,_0xdbf0('0x27'));_0x2b6399[_0xdbf0('0x30')]=_['keys'](_0x1a1125[_0xdbf0('0x30')]);_0x2b6399[_0xdbf0('0x31')]=_['intersection'](_0x2b6399[_0xdbf0('0x2e')],_0x2b6399[_0xdbf0('0x30')]);_0x55d692[_0xdbf0('0x32')]=_[_0xdbf0('0x33')](_0x2b6399[_0xdbf0('0x2e')],qs[_0xdbf0('0x34')](_0x1a1125['query'][_0xdbf0('0x34')]));_0x55d692[_0xdbf0('0x32')]=_0x55d692[_0xdbf0('0x32')][_0xdbf0('0x35')]?_0x55d692[_0xdbf0('0x32')]:_0x2b6399['model'];if(!_0x1a1125[_0xdbf0('0x30')][_0xdbf0('0x36')](_0xdbf0('0x37'))){_0x55d692[_0xdbf0('0x1c')]=qs[_0xdbf0('0x1c')](_0x1a1125[_0xdbf0('0x30')][_0xdbf0('0x1c')]);_0x55d692[_0xdbf0('0x1b')]=qs[_0xdbf0('0x1b')](_0x1a1125[_0xdbf0('0x30')][_0xdbf0('0x1b')]);}_0x55d692[_0xdbf0('0x38')]=qs[_0xdbf0('0x39')](_0x1a1125['query'][_0xdbf0('0x39')]);_0x55d692[_0xdbf0('0x3a')]=qs[_0xdbf0('0x31')](_[_0xdbf0('0x3b')](_0x1a1125[_0xdbf0('0x30')],_0x2b6399[_0xdbf0('0x31')]),_0x5ee7fc);if(_0x1a1125['query'][_0xdbf0('0x3c')]){_0x55d692['where']=_[_0xdbf0('0x3d')](_0x55d692[_0xdbf0('0x3a')],{'$or':_['map'](_0x5ee7fc,function(_0x3b859d){if(_0x3b859d['type']!==_0xdbf0('0x3e')){var _0x2201b4={};_0x2201b4[_0x3b859d[_0xdbf0('0x27')]]={'$like':'%'+_0x1a1125[_0xdbf0('0x30')][_0xdbf0('0x3c')]+'%'};return _0x2201b4;}})});}_0x55d692=_[_0xdbf0('0x3d')]({},_0x55d692,_0x1a1125[_0xdbf0('0x3f')]);var _0x400db5={'where':_0x55d692['where']};return db[_0xdbf0('0x40')][_0xdbf0('0x1e')](_0x400db5)[_0xdbf0('0x23')](function(_0x38ec5b){_0x1c7cec['count']=_0x38ec5b;if(_0x1a1125[_0xdbf0('0x30')]['includeAll']){_0x55d692[_0xdbf0('0x41')]=[{'all':!![]}];}return db[_0xdbf0('0x40')][_0xdbf0('0x42')](_0x55d692);})[_0xdbf0('0x23')](function(_0xc93a3){_0x1c7cec['rows']=_0xc93a3;return _0x1c7cec;})[_0xdbf0('0x23')](respondWithFilteredResult(_0xd9399c,_0x55d692))[_0xdbf0('0x43')](handleError(_0xd9399c,null));};exports[_0xdbf0('0x44')]=function(_0x571ca3,_0x113b73){var _0x15ee40={'raw':!![],'where':{'id':_0x571ca3[_0xdbf0('0x45')]['id']}},_0x2e65bd={};_0x2e65bd[_0xdbf0('0x2e')]=_[_0xdbf0('0x46')](db['OpenchannelApplication'][_0xdbf0('0x2a')]);_0x2e65bd[_0xdbf0('0x30')]=_['keys'](_0x571ca3['query']);_0x2e65bd[_0xdbf0('0x31')]=_[_0xdbf0('0x33')](_0x2e65bd[_0xdbf0('0x2e')],_0x2e65bd[_0xdbf0('0x30')]);_0x15ee40['attributes']=_[_0xdbf0('0x33')](_0x2e65bd[_0xdbf0('0x2e')],qs[_0xdbf0('0x34')](_0x571ca3['query'][_0xdbf0('0x34')]));_0x15ee40['attributes']=_0x15ee40[_0xdbf0('0x32')][_0xdbf0('0x35')]?_0x15ee40[_0xdbf0('0x32')]:_0x2e65bd['model'];if(_0x571ca3['query'][_0xdbf0('0x47')]){_0x15ee40[_0xdbf0('0x41')]=[{'all':!![]}];}_0x15ee40=_[_0xdbf0('0x3d')]({},_0x15ee40,_0x571ca3['options']);return db['OpenchannelApplication'][_0xdbf0('0x48')](_0x15ee40)['then'](handleEntityNotFound(_0x113b73,null))['then'](respondWithResult(_0x113b73,null))[_0xdbf0('0x43')](handleError(_0x113b73,null));};exports[_0xdbf0('0x49')]=function(_0x170e76,_0x2e31ae){return db[_0xdbf0('0x40')][_0xdbf0('0x49')](_0x170e76[_0xdbf0('0x4a')],{})['then'](respondWithResult(_0x2e31ae,0xc9))[_0xdbf0('0x43')](handleError(_0x2e31ae,null));};exports[_0xdbf0('0x22')]=function(_0x18f0f6,_0x378c8b){if(_0x18f0f6['body']['id']){delete _0x18f0f6['body']['id'];}return db['OpenchannelApplication'][_0xdbf0('0x48')]({'where':{'id':_0x18f0f6[_0xdbf0('0x45')]['id']}})[_0xdbf0('0x23')](handleEntityNotFound(_0x378c8b,null))[_0xdbf0('0x23')](saveUpdates(_0x18f0f6['body'],null))['then'](respondWithResult(_0x378c8b,null))[_0xdbf0('0x43')](handleError(_0x378c8b,null));};exports[_0xdbf0('0x24')]=function(_0x2f11b3,_0xbbb69){return db[_0xdbf0('0x40')]['find']({'where':{'id':_0x2f11b3[_0xdbf0('0x45')]['id']}})[_0xdbf0('0x23')](handleEntityNotFound(_0xbbb69,null))[_0xdbf0('0x23')](removeEntity(_0xbbb69,null))[_0xdbf0('0x43')](handleError(_0xbbb69,null));};
\ No newline at end of file
index e93bd66..ef9287b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3afe=['path','rimraf','exports','define','openchannel_applications','utf8mb4','lodash','api','request-promise'];(function(_0x575e22,_0x46349){var _0x2765fc=function(_0x273046){while(--_0x273046){_0x575e22['push'](_0x575e22['shift']());}};_0x2765fc(++_0x46349);}(_0x3afe,0x1d1));var _0xe3af=function(_0x311df2,_0x5b6291){_0x311df2=_0x311df2-0x0;var _0x2d70d7=_0x3afe[_0x311df2];return _0x2d70d7;};'use strict';var _=require(_0xe3af('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe3af('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe3af('0x2'));var fs=require('fs');var path=require(_0xe3af('0x3'));var rimraf=require(_0xe3af('0x4'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module[_0xe3af('0x5')]=function(_0x2c00ab,_0xbf451b){return _0x2c00ab[_0xe3af('0x6')]('OpenchannelApplication',attributes,{'tableName':_0xe3af('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe3af('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd7e8=['path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x296897,_0x4d23ea){var _0x2b44ab=function(_0xdf90d8){while(--_0xdf90d8){_0x296897['push'](_0x296897['shift']());}};_0x2b44ab(++_0x4d23ea);}(_0xd7e8,0xba));var _0x8d7e=function(_0x52440f,_0x50868d){_0x52440f=_0x52440f-0x0;var _0x3c760b=_0xd7e8[_0x52440f];return _0x3c760b;};'use strict';var _=require(_0x8d7e('0x0'));var util=require(_0x8d7e('0x1'));var logger=require(_0x8d7e('0x2'))('api');var moment=require(_0x8d7e('0x3'));var BPromise=require(_0x8d7e('0x4'));var rp=require(_0x8d7e('0x5'));var fs=require('fs');var path=require(_0x8d7e('0x6'));var rimraf=require(_0x8d7e('0x7'));var config=require(_0x8d7e('0x8'));var attributes=require(_0x8d7e('0x9'));module[_0x8d7e('0xa')]=function(_0x4fbe13,_0x1a54d3){return _0x4fbe13[_0x8d7e('0xb')](_0x8d7e('0xc'),attributes,{'tableName':_0x8d7e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8d7e('0xe'),'collate':_0x8d7e('0xf')});};
\ No newline at end of file
index c1e5f1b..cec0071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa9f=['error','message','result','catch','OpenchannelApplication','update','body','raw','options','where','attributes','limit','UpdateOpenchannelApplication','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x14e9f0,_0x287f90){var _0xa63f7e=function(_0x4829d6){while(--_0x4829d6){_0x14e9f0['push'](_0x14e9f0['shift']());}};_0xa63f7e(++_0x287f90);}(_0xaa9f,0xd8));var _0xfaa9=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0xaa9f[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xfaa9('0x0'));var util=require(_0xfaa9('0x1'));var moment=require(_0xfaa9('0x2'));var BPromise=require(_0xfaa9('0x3'));var rs=require(_0xfaa9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfaa9('0x5'));var logger=require('../../config/logger')(_0xfaa9('0x6'));var config=require('../../config/environment');var jayson=require(_0xfaa9('0x7'));var client=jayson[_0xfaa9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32a417,_0x484c90,_0x462b0c){return new BPromise(function(_0x21d70b,_0x57f00c){return client[_0xfaa9('0x9')](_0x32a417,_0x462b0c)[_0xfaa9('0xa')](function(_0xad9518){logger[_0xfaa9('0xb')](_0xfaa9('0xc'),_0x484c90,_0xfaa9('0xd'));logger[_0xfaa9('0xe')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x484c90,_0xfaa9('0xd'),JSON[_0xfaa9('0xf')](_0xad9518));if(_0xad9518[_0xfaa9('0x10')]){if(_0xad9518[_0xfaa9('0x10')]['code']===0x1f4){logger['error'](_0xfaa9('0xc'),_0x484c90,_0xad9518[_0xfaa9('0x10')][_0xfaa9('0x11')]);return _0x57f00c(_0xad9518[_0xfaa9('0x10')]['message']);}logger[_0xfaa9('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x484c90,_0xad9518['error'][_0xfaa9('0x11')]);return _0x21d70b(_0xad9518[_0xfaa9('0x10')]['message']);}else{logger[_0xfaa9('0xb')](_0xfaa9('0xc'),_0x484c90,'request\x20sent');_0x21d70b(_0xad9518[_0xfaa9('0x12')]['message']);}})[_0xfaa9('0x13')](function(_0xa87659){logger[_0xfaa9('0x10')](_0xfaa9('0xc'),_0x484c90,_0xa87659);_0x57f00c(_0xa87659);});});}exports['UpdateOpenchannelApplication']=function(_0x47ca34){var _0x4e652a=this;return new Promise(function(_0x4123cd,_0x2416d0){return db[_0xfaa9('0x14')][_0xfaa9('0x15')](_0x47ca34[_0xfaa9('0x16')],{'raw':_0x47ca34['options']?_0x47ca34['options'][_0xfaa9('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x47ca34[_0xfaa9('0x18')]?_0x47ca34[_0xfaa9('0x18')][_0xfaa9('0x19')]||null:null,'attributes':_0x47ca34[_0xfaa9('0x18')]?_0x47ca34[_0xfaa9('0x18')][_0xfaa9('0x1a')]||null:null,'limit':_0x47ca34[_0xfaa9('0x18')]?_0x47ca34[_0xfaa9('0x18')][_0xfaa9('0x1b')]||null:null})[_0xfaa9('0xa')](function(_0x4db921){logger[_0xfaa9('0xb')](_0xfaa9('0x1c'),_0x47ca34);logger['debug'](_0xfaa9('0x1c'),_0x47ca34,JSON[_0xfaa9('0xf')](_0x4db921));_0x4123cd(_0x4db921);})[_0xfaa9('0x13')](function(_0x10cdb7){logger[_0xfaa9('0x10')](_0xfaa9('0x1c'),_0x10cdb7['message'],_0x47ca34);_0x2416d0(_0x4e652a[_0xfaa9('0x10')](0x1f4,_0x10cdb7[_0xfaa9('0x11')]));});});};
\ No newline at end of file
+var _0x2451=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','update','body','options','raw','attributes','limit','UpdateOpenchannelApplication','catch','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x1cd715,_0x17f636){var _0x1e60b6=function(_0x47ac27){while(--_0x47ac27){_0x1cd715['push'](_0x1cd715['shift']());}};_0x1e60b6(++_0x17f636);}(_0x2451,0x191));var _0x1245=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x2451[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require('lodash');var util=require(_0x1245('0x0'));var moment=require(_0x1245('0x1'));var BPromise=require(_0x1245('0x2'));var rs=require(_0x1245('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1245('0x4'))['db'];var utils=require(_0x1245('0x5'));var logger=require('../../config/logger')(_0x1245('0x6'));var config=require(_0x1245('0x7'));var jayson=require(_0x1245('0x8'));var client=jayson[_0x1245('0x9')][_0x1245('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x189a13,_0x49a999,_0x40d900){return new BPromise(function(_0xf0a65e,_0x56b91d){return client['request'](_0x189a13,_0x40d900)[_0x1245('0xb')](function(_0x48afdf){logger['info'](_0x1245('0xc'),_0x49a999,_0x1245('0xd'));logger[_0x1245('0xe')](_0x1245('0xf'),_0x49a999,_0x1245('0xd'),JSON[_0x1245('0x10')](_0x48afdf));if(_0x48afdf[_0x1245('0x11')]){if(_0x48afdf[_0x1245('0x11')]['code']===0x1f4){logger[_0x1245('0x11')](_0x1245('0xc'),_0x49a999,_0x48afdf[_0x1245('0x11')][_0x1245('0x12')]);return _0x56b91d(_0x48afdf['error'][_0x1245('0x12')]);}logger[_0x1245('0x11')](_0x1245('0xc'),_0x49a999,_0x48afdf['error'][_0x1245('0x12')]);return _0xf0a65e(_0x48afdf[_0x1245('0x11')][_0x1245('0x12')]);}else{logger[_0x1245('0x13')](_0x1245('0xc'),_0x49a999,_0x1245('0xd'));_0xf0a65e(_0x48afdf[_0x1245('0x14')][_0x1245('0x12')]);}})['catch'](function(_0x64ecbd){logger['error'](_0x1245('0xc'),_0x49a999,_0x64ecbd);_0x56b91d(_0x64ecbd);});});}exports['UpdateOpenchannelApplication']=function(_0x314c94){var _0x17ff90=this;return new Promise(function(_0x160b34,_0x3268bc){return db['OpenchannelApplication'][_0x1245('0x15')](_0x314c94[_0x1245('0x16')],{'raw':_0x314c94['options']?_0x314c94[_0x1245('0x17')][_0x1245('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x314c94[_0x1245('0x17')]?_0x314c94[_0x1245('0x17')]['where']||null:null,'attributes':_0x314c94[_0x1245('0x17')]?_0x314c94['options'][_0x1245('0x19')]||null:null,'limit':_0x314c94[_0x1245('0x17')]?_0x314c94['options'][_0x1245('0x1a')]||null:null})[_0x1245('0xb')](function(_0xe7618f){logger[_0x1245('0x13')]('UpdateOpenchannelApplication',_0x314c94);logger[_0x1245('0xe')](_0x1245('0x1b'),_0x314c94,JSON[_0x1245('0x10')](_0xe7618f));_0x160b34(_0xe7618f);})[_0x1245('0x1c')](function(_0x4cb48b){logger['error'](_0x1245('0x1b'),_0x4cb48b[_0x1245('0x12')],_0x314c94);_0x3268bc(_0x17ff90[_0x1245('0x11')](0x1f4,_0x4cb48b[_0x1245('0x12')]));});});};
\ No newline at end of file
index 987fa68..5bc0b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf73=['put','openchannelinteraction:update','delete','tracked','openchannelinteraction:destroy','destroy','removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','openchannel','openchannelinteraction:addtags','addTags'];(function(_0x53b343,_0x34568f){var _0x549f0e=function(_0x1bc2a1){while(--_0x1bc2a1){_0x53b343['push'](_0x53b343['shift']());}};_0x549f0e(++_0x34568f);}(_0xcf73,0x1c9));var _0x3cf7=function(_0xe52dca,_0x10d210){_0xe52dca=_0xe52dca-0x0;var _0x4c1a66=_0xcf73[_0xe52dca];return _0x4c1a66;};'use strict';var multer=require(_0x3cf7('0x0'));var util=require(_0x3cf7('0x1'));var path=require(_0x3cf7('0x2'));var timeout=require(_0x3cf7('0x3'));var express=require('express');var router=express[_0x3cf7('0x4')]();var fs_extra=require(_0x3cf7('0x5'));var auth=require(_0x3cf7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3cf7('0x7'));var controller=require('./openchannelInteraction.controller');router[_0x3cf7('0x8')]('/',auth[_0x3cf7('0x9')](),controller[_0x3cf7('0xa')]);router[_0x3cf7('0x8')](_0x3cf7('0xb'),auth[_0x3cf7('0x9')](),controller['describe']);router['get'](_0x3cf7('0xc'),auth[_0x3cf7('0x9')](),controller['show']);router[_0x3cf7('0x8')](_0x3cf7('0xd'),auth['isAuthenticated'](),controller[_0x3cf7('0xe')]);router['get'](_0x3cf7('0xf'),auth[_0x3cf7('0x9')](),controller[_0x3cf7('0x10')]);router[_0x3cf7('0x11')]('/',auth[_0x3cf7('0x9')](),controller[_0x3cf7('0x12')]);router[_0x3cf7('0x11')](_0x3cf7('0xd'),auth['isAuthenticated'](),controller[_0x3cf7('0x13')]);router[_0x3cf7('0x11')]('/:id/tags',auth[_0x3cf7('0x9')](),interaction['tracked'](_0x3cf7('0x14'),_0x3cf7('0x15')),controller[_0x3cf7('0x16')]);router[_0x3cf7('0x17')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x3cf7('0x14'),_0x3cf7('0x18')),controller['update']);router[_0x3cf7('0x19')](_0x3cf7('0xc'),auth[_0x3cf7('0x9')](),interaction[_0x3cf7('0x1a')]('openchannel',_0x3cf7('0x1b')),controller[_0x3cf7('0x1c')]);router['delete']('/:id/tags',auth[_0x3cf7('0x9')](),controller[_0x3cf7('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0x8cdf=['update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','connect-timeout','express','Router','fs-extra','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','/:id','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0x8cdf,0x16e));var _0xf8cd=function(_0x5f55da,_0x561ccc){_0x5f55da=_0x5f55da-0x0;var _0x53b511=_0x8cdf[_0x5f55da];return _0x53b511;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xf8cd('0x0'));var express=require(_0xf8cd('0x1'));var router=express[_0xf8cd('0x2')]();var fs_extra=require(_0xf8cd('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf8cd('0x4'));var controller=require(_0xf8cd('0x5'));router[_0xf8cd('0x6')]('/',auth[_0xf8cd('0x7')](),controller[_0xf8cd('0x8')]);router[_0xf8cd('0x6')](_0xf8cd('0x9'),auth[_0xf8cd('0x7')](),controller['describe']);router[_0xf8cd('0x6')](_0xf8cd('0xa'),auth[_0xf8cd('0x7')](),controller['show']);router[_0xf8cd('0x6')](_0xf8cd('0xb'),auth[_0xf8cd('0x7')](),controller[_0xf8cd('0xc')]);router['get'](_0xf8cd('0xd'),auth[_0xf8cd('0x7')](),controller[_0xf8cd('0xe')]);router[_0xf8cd('0xf')]('/',auth[_0xf8cd('0x7')](),controller['create']);router[_0xf8cd('0xf')](_0xf8cd('0xb'),auth['isAuthenticated'](),controller[_0xf8cd('0x10')]);router['post'](_0xf8cd('0x11'),auth[_0xf8cd('0x7')](),interaction[_0xf8cd('0x12')](_0xf8cd('0x13'),_0xf8cd('0x14')),controller[_0xf8cd('0x15')]);router[_0xf8cd('0x16')](_0xf8cd('0xa'),auth[_0xf8cd('0x7')](),interaction[_0xf8cd('0x12')](_0xf8cd('0x13'),_0xf8cd('0x17')),controller[_0xf8cd('0x18')]);router[_0xf8cd('0x19')](_0xf8cd('0xa'),auth['isAuthenticated'](),interaction[_0xf8cd('0x12')](_0xf8cd('0x13'),_0xf8cd('0x1a')),controller[_0xf8cd('0x1b')]);router['delete'](_0xf8cd('0x11'),auth[_0xf8cd('0x7')](),controller[_0xf8cd('0x1c')]);module[_0xf8cd('0x1d')]=router;
\ No newline at end of file
index 790a1ad..9e2b354 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce1=['STRING','ENUM','out','BOOLEAN','DATE'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x2ce1,0x8b));var _0x12ce=function(_0x5ad31e,_0x2db70e){_0x5ad31e=_0x5ad31e-0x0;var _0xe99530=_0x2ce1[_0x5ad31e];return _0xe99530;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x12ce('0x0')]},'disposition':{'type':Sequelize[_0x12ce('0x1')]},'secondDisposition':{'type':Sequelize[_0x12ce('0x1')]},'thirdDisposition':{'type':Sequelize[_0x12ce('0x1')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x12ce('0x0')]},'threadId':{'type':Sequelize[_0x12ce('0x1')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x12ce('0x0')]},'firstMsgDirection':{'type':Sequelize[_0x12ce('0x2')]('in',_0x12ce('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x12ce('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x12ce('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbdeb=['ENUM','out','BOOLEAN','exports','DATE','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbdeb,0x6f));var _0xbbde=function(_0x55cd06,_0x49cbdd){_0x55cd06=_0x55cd06-0x0;var _0x12b2b1=_0xbdeb[_0x55cd06];return _0x12b2b1;};'use strict';var Sequelize=require('sequelize');module[_0xbbde('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbbde('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xbbde('0x2')]},'thirdDisposition':{'type':Sequelize[_0xbbde('0x2')]},'note':{'type':Sequelize[_0xbbde('0x2')]},'read1stAt':{'type':Sequelize[_0xbbde('0x1')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0xbbde('0x1')]},'firstMsgDirection':{'type':Sequelize[_0xbbde('0x3')]('in',_0xbbde('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xbbde('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xbbde('0x5')],'defaultValue':![]}};
\ No newline at end of file
index 1413e87..64d8dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb904=['downloadInteraction.ejs','transcript-','Openchannel','createPdfFromHTML','error','rimraf','zip-dir','moment','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','update','then','destroy','stack','name','rawAttributes','fieldName','type','key','getOptions','findAll','openchannel','query','user','catch','show','from','params','model','OpenchannelInteraction','keys','filters','intersection','attributes','fields','includeAll','include','options','find','create','body','describe','OpenchannelMessage','ids','nolimit','order','sort','where','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','setTags','omit','spread','color','openchannelInteractionTags:save','removeTags','unix','join','root','server','tmp','files','attachments','format','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','direction','read','OpenchannelAccount','Owner','get','mkdirSync','Account','N.A.','toString','closedAt','disposition','Public','Private','existsSync','createReadStream','pipe','createWriteStream','basename','out','System','secret','value','renderFile'];(function(_0x2bb1c8,_0x256b45){var _0x398f8f=function(_0x3576a6){while(--_0x3576a6){_0x2bb1c8['push'](_0x2bb1c8['shift']());}};_0x398f8f(++_0x256b45);}(_0xb904,0x101));var _0x4b90=function(_0x106503,_0x2f2762){_0x106503=_0x106503-0x0;var _0x200f74=_0xb904[_0x106503];return _0x200f74;};'use strict';var rimraf=require(_0x4b90('0x0'));var zipdir=require(_0x4b90('0x1'));var moment=require(_0x4b90('0x2'));var util=require(_0x4b90('0x3'));var path=require(_0x4b90('0x4'));var ejs=require(_0x4b90('0x5'));var fs=require('fs');var _=require(_0x4b90('0x6'));var Redis=require(_0x4b90('0x7'));var interaction=require(_0x4b90('0x8'));var qs=require(_0x4b90('0x9'));var pdf=require(_0x4b90('0xa'));var logger=require(_0x4b90('0xb'))(_0x4b90('0xc'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x4b90('0xd')]=_[_0x4b90('0xe')](config[_0x4b90('0xd')],{'host':_0x4b90('0xf'),'port':0x18eb});var socket=require(_0x4b90('0x10'))(new Redis(config[_0x4b90('0xd')]));require('./openchannelInteraction.socket')[_0x4b90('0x11')](socket);function respondWithStatusCode(_0x40f45d,_0x200d65){_0x200d65=_0x200d65||0xcc;return function(_0xfbe227){if(_0xfbe227){return _0x40f45d[_0x4b90('0x12')](_0x200d65);}return _0x40f45d['status'](_0x200d65)[_0x4b90('0x13')]();};}function respondWithResult(_0x2e247c,_0x4f0859){_0x4f0859=_0x4f0859||0xc8;return function(_0x540047){if(_0x540047){return _0x2e247c[_0x4b90('0x14')](_0x4f0859)[_0x4b90('0x15')](_0x540047);}};}function respondWithFilteredResult(_0x163a33,_0x124d94){return function(_0x56846a){if(_0x56846a){var _0x9a3ef7=typeof _0x124d94['offset']===_0x4b90('0x16')&&typeof _0x124d94['limit']===_0x4b90('0x16');var _0x4695e0=_0x56846a[_0x4b90('0x17')];var _0x7d6901=_0x9a3ef7?0x0:_0x124d94[_0x4b90('0x18')];var _0x3d57f2=_0x9a3ef7?_0x56846a[_0x4b90('0x17')]:_0x124d94[_0x4b90('0x18')]+_0x124d94[_0x4b90('0x19')];var _0x4e0852;if(_0x3d57f2>=_0x4695e0){_0x3d57f2=_0x4695e0;_0x4e0852=0xc8;}else{_0x4e0852=0xce;}_0x163a33['status'](_0x4e0852);return _0x163a33[_0x4b90('0x1a')](_0x4b90('0x1b'),_0x7d6901+'-'+_0x3d57f2+'/'+_0x4695e0)[_0x4b90('0x15')](_0x56846a);}return null;};}function saveUpdates(_0x57e119){return function(_0x222d40){if(_0x222d40){return _0x222d40[_0x4b90('0x1c')](_0x57e119)[_0x4b90('0x1d')](function(_0x52ca4a){return _0x52ca4a;});}return null;};}function removeEntity(_0x2f6b23){return function(_0x342260){if(_0x342260){return _0x342260[_0x4b90('0x1e')]()[_0x4b90('0x1d')](function(){_0x2f6b23[_0x4b90('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47461a){return function(_0x22766e){if(!_0x22766e){_0x47461a[_0x4b90('0x12')](0x194);}return _0x22766e;};}function handleError(_0x396067,_0x12b5bb){_0x12b5bb=_0x12b5bb||0x1f4;return function(_0x5328cb){logger['error'](_0x5328cb[_0x4b90('0x1f')]);if(_0x5328cb[_0x4b90('0x20')]){delete _0x5328cb['name'];}_0x396067[_0x4b90('0x14')](_0x12b5bb)['send'](_0x5328cb);};}exports['index']=function(_0x23cc79,_0x25149b){var _0x2b211e={};var _0x1da55c=_['map'](db['OpenchannelInteraction'][_0x4b90('0x21')],function(_0x4bb04a){return{'name':_0x4bb04a[_0x4b90('0x22')],'type':_0x4bb04a[_0x4b90('0x23')][_0x4b90('0x24')]};});_0x2b211e=qs[_0x4b90('0x25')](_0x1da55c,_0x23cc79);return interaction[_0x4b90('0x26')](_0x4b90('0x27'),_0x23cc79[_0x4b90('0x28')],_0x23cc79[_0x4b90('0x29')],_0x2b211e,_0x1da55c)[_0x4b90('0x1d')](respondWithFilteredResult(_0x25149b,_0x2b211e))[_0x4b90('0x2a')](handleError(_0x25149b,null));};exports[_0x4b90('0x2b')]=function(_0x63492a,_0x31afb5){var _0x3c9821={};if(_0x63492a[_0x4b90('0x28')]['type']&&_0x63492a[_0x4b90('0x28')][_0x4b90('0x23')]===_0x4b90('0x2c')){_0x3c9821[_0x4b90('0x2c')]=_0x63492a[_0x4b90('0x2d')]['id'];}else{_0x3c9821['id']=_0x63492a[_0x4b90('0x2d')]['id'];}var _0x39f99c={'raw':![],'where':_0x3c9821},_0x4dcac8={};_0x4dcac8[_0x4b90('0x2e')]=_['keys'](db[_0x4b90('0x2f')][_0x4b90('0x21')]);_0x4dcac8[_0x4b90('0x28')]=_[_0x4b90('0x30')](_0x63492a[_0x4b90('0x28')]);_0x4dcac8[_0x4b90('0x31')]=_[_0x4b90('0x32')](_0x4dcac8['model'],_0x4dcac8['query']);_0x39f99c[_0x4b90('0x33')]=_[_0x4b90('0x32')](_0x4dcac8[_0x4b90('0x2e')],qs[_0x4b90('0x34')](_0x63492a[_0x4b90('0x28')][_0x4b90('0x34')]));_0x39f99c[_0x4b90('0x33')]=_0x39f99c[_0x4b90('0x33')]['length']?_0x39f99c[_0x4b90('0x33')]:_0x4dcac8[_0x4b90('0x2e')];if(_0x63492a[_0x4b90('0x28')][_0x4b90('0x35')]){_0x39f99c[_0x4b90('0x36')]=[{'all':!![]}];}_0x39f99c=_['merge']({},_0x39f99c,_0x63492a[_0x4b90('0x37')]);return db[_0x4b90('0x2f')][_0x4b90('0x38')](_0x39f99c)[_0x4b90('0x1d')](handleEntityNotFound(_0x31afb5,null))[_0x4b90('0x1d')](respondWithResult(_0x31afb5,null))[_0x4b90('0x2a')](handleError(_0x31afb5,null));};exports['create']=function(_0x32c88f,_0x2a69f6){return db[_0x4b90('0x2f')][_0x4b90('0x39')](_0x32c88f[_0x4b90('0x3a')],{})['then'](respondWithResult(_0x2a69f6,0xc9))[_0x4b90('0x2a')](handleError(_0x2a69f6,null));};exports[_0x4b90('0x1c')]=function(_0x4fcae4,_0x2fcfce){if(_0x4fcae4['body']['id']){delete _0x4fcae4['body']['id'];}return db[_0x4b90('0x2f')][_0x4b90('0x38')]({'where':{'id':_0x4fcae4[_0x4b90('0x2d')]['id']}})[_0x4b90('0x1d')](handleEntityNotFound(_0x2fcfce,null))[_0x4b90('0x1d')](saveUpdates(_0x4fcae4[_0x4b90('0x3a')],null))[_0x4b90('0x1d')](respondWithResult(_0x2fcfce,null))['catch'](handleError(_0x2fcfce,null));};exports[_0x4b90('0x1e')]=function(_0x49e322,_0x3f4ae0){return db[_0x4b90('0x2f')][_0x4b90('0x38')]({'where':{'id':_0x49e322[_0x4b90('0x2d')]['id']}})[_0x4b90('0x1d')](handleEntityNotFound(_0x3f4ae0,null))[_0x4b90('0x1d')](removeEntity(_0x3f4ae0,null))['catch'](handleError(_0x3f4ae0,null));};exports[_0x4b90('0x3b')]=function(_0x3e3737,_0x4d42ae){return db[_0x4b90('0x2f')][_0x4b90('0x3b')]()[_0x4b90('0x1d')](respondWithResult(_0x4d42ae,null))[_0x4b90('0x2a')](handleError(_0x4d42ae,null));};exports['addMessage']=function(_0x191071,_0x115872){return db[_0x4b90('0x3c')][_0x4b90('0x38')]({'where':{'id':_0x191071['params']['id']}})[_0x4b90('0x1d')](handleEntityNotFound(_0x115872,null))[_0x4b90('0x1d')](function(_0x2fd156){if(_0x2fd156){return _0x2fd156['addMessage'](_0x191071[_0x4b90('0x3a')][_0x4b90('0x3d')],_['omit'](_0x191071[_0x4b90('0x3a')],['ids','id'])||{});}})[_0x4b90('0x1d')](respondWithResult(_0x115872,null))[_0x4b90('0x2a')](handleError(_0x115872,null));};exports['getMessages']=function(_0x51fd34,_0x59ba4e){var _0x51f15c={'raw':![],'where':{}};var _0xad2acf={};var _0x2c40a3={'count':0x0,'rows':[]};return db[_0x4b90('0x2f')]['findOne']({'where':{'id':_0x51fd34[_0x4b90('0x2d')]['id']}})[_0x4b90('0x1d')](handleEntityNotFound(_0x59ba4e,null))[_0x4b90('0x1d')](function(_0x397fd1){if(_0x397fd1){_0xad2acf[_0x4b90('0x2e')]=_[_0x4b90('0x30')](db[_0x4b90('0x3c')][_0x4b90('0x21')]);_0xad2acf['query']=_['keys'](_0x51fd34[_0x4b90('0x28')]);_0xad2acf[_0x4b90('0x31')]=_[_0x4b90('0x32')](_0xad2acf[_0x4b90('0x2e')],_0xad2acf[_0x4b90('0x28')]);_0x51f15c['attributes']=_['intersection'](_0xad2acf[_0x4b90('0x2e')],qs[_0x4b90('0x34')](_0x51fd34[_0x4b90('0x28')][_0x4b90('0x34')]));_0x51f15c[_0x4b90('0x33')]=_0x51f15c[_0x4b90('0x33')]['length']?_0x51f15c[_0x4b90('0x33')]:_0xad2acf[_0x4b90('0x2e')];if(!_0x51fd34[_0x4b90('0x28')]['hasOwnProperty'](_0x4b90('0x3e'))){_0x51f15c[_0x4b90('0x19')]=qs[_0x4b90('0x19')](_0x51fd34[_0x4b90('0x28')][_0x4b90('0x19')]);_0x51f15c[_0x4b90('0x18')]=qs[_0x4b90('0x18')](_0x51fd34[_0x4b90('0x28')][_0x4b90('0x18')]);}_0x51f15c[_0x4b90('0x3f')]=qs[_0x4b90('0x40')](_0x51fd34[_0x4b90('0x28')][_0x4b90('0x40')]);_0x51f15c[_0x4b90('0x41')]=qs[_0x4b90('0x31')](_['pick'](_0x51fd34[_0x4b90('0x28')],_0xad2acf[_0x4b90('0x31')]));_0x51f15c['where']['OpenchannelInteractionId']=_0x397fd1['id'];if(_0x51fd34[_0x4b90('0x28')][_0x4b90('0x42')]){_0x51f15c['where']=_['merge'](_0x51f15c[_0x4b90('0x41')],{'$or':_[_0x4b90('0x43')](_0x51f15c[_0x4b90('0x33')],function(_0x35519f){var _0x492e3d={};_0x492e3d[_0x35519f]={'$like':'%'+_0x51fd34[_0x4b90('0x28')][_0x4b90('0x42')]+'%'};return _0x492e3d;})});}if(_0x51fd34[_0x4b90('0x28')][_0x4b90('0x44')]){var _0x22fea5=_0x51fd34[_0x4b90('0x28')]['$gte'][_0x4b90('0x45')](',');var _0x518b6d={};_0x518b6d[_0x22fea5[0x0]]={'$gte':moment(_0x22fea5[0x1])['format'](_0x4b90('0x46'))};_0x51f15c[_0x4b90('0x41')]=_[_0x4b90('0x47')](_0x51f15c['where'],_0x518b6d);}_0x51f15c=_[_0x4b90('0x47')]({},_0x51f15c,_0x51fd34[_0x4b90('0x37')]);return db['OpenchannelMessage'][_0x4b90('0x17')]({'where':_0x51f15c['where']})[_0x4b90('0x1d')](function(_0x537fce){_0x2c40a3['count']=_0x537fce;if(_0x51fd34[_0x4b90('0x28')][_0x4b90('0x35')]){_0x51f15c['include']=[{'all':!![]}];}return db[_0x4b90('0x3c')][_0x4b90('0x26')](_0x51f15c);})[_0x4b90('0x1d')](function(_0x411f44){_0x2c40a3[_0x4b90('0x48')]=_0x411f44;return _0x2c40a3;});}})[_0x4b90('0x1d')](respondWithFilteredResult(_0x59ba4e,_0x51f15c))[_0x4b90('0x2a')](handleError(_0x59ba4e,null));};exports[_0x4b90('0x49')]=function(_0x12fd03,_0x2aab2c){return db[_0x4b90('0x2f')][_0x4b90('0x38')]({'where':{'id':_0x12fd03[_0x4b90('0x2d')]['id']}})['then'](handleEntityNotFound(_0x2aab2c,null))[_0x4b90('0x1d')](function(_0x278eee){if(_0x278eee){return _0x278eee[_0x4b90('0x4a')](_0x12fd03['body']['ids'],_[_0x4b90('0x4b')](_0x12fd03['body'],[_0x4b90('0x3d'),'id'])||{})[_0x4b90('0x4c')](function(){return db['Tag'][_0x4b90('0x26')]({'attributes':['id',_0x4b90('0x20'),_0x4b90('0x4d')],'where':{'id':_0x12fd03[_0x4b90('0x3a')]['ids']}});})[_0x4b90('0x1d')](function(_0x1ddf88){socket['emit'](_0x4b90('0x4e'),{'id':Number(_0x12fd03[_0x4b90('0x2d')]['id']),'tags':_0x1ddf88||[]});return{'id':Number(_0x12fd03['params']['id']),'tags':_0x1ddf88||[]};});}})[_0x4b90('0x1d')](respondWithResult(_0x2aab2c,null))[_0x4b90('0x2a')](handleError(_0x2aab2c,null));};exports[_0x4b90('0x4f')]=function(_0x259435,_0x8e8d7e){return db[_0x4b90('0x2f')][_0x4b90('0x38')]({'where':{'id':_0x259435[_0x4b90('0x2d')]['id']}})[_0x4b90('0x1d')](handleEntityNotFound(_0x8e8d7e,null))['then'](function(_0xcdb20e){if(_0xcdb20e){return _0xcdb20e[_0x4b90('0x4f')](_0x259435[_0x4b90('0x28')][_0x4b90('0x3d')]);}})[_0x4b90('0x1d')](respondWithStatusCode(_0x8e8d7e,null))[_0x4b90('0x2a')](handleError(_0x8e8d7e,null));};exports['download']=function(_0x11b665,_0x4fba67){var _0x43e045=moment()[_0x4b90('0x50')]()['toString']();var _0x59ca47=path[_0x4b90('0x51')](config[_0x4b90('0x52')],_0x4b90('0x53'),'files',_0x4b90('0x54'));var _0x497fcc=path['join'](config[_0x4b90('0x52')],_0x4b90('0x53'),_0x4b90('0x55'),_0x4b90('0x56'));var _0x3e9f8c=path[_0x4b90('0x51')](_0x59ca47,_0x43e045);var _0x38a64c=util[_0x4b90('0x57')]('transcript-%d-%s.zip',_0x11b665['params']['id'],_0x43e045);var _0x25fd3d=path['join'](_0x59ca47,_0x38a64c);var _0x456ea8=[];_0x456ea8[_0x4b90('0x58')]({'model':db[_0x4b90('0x59')],'as':'User','attributes':['id',_0x4b90('0x5a')],'raw':!![]});_0x456ea8['push']({'model':db[_0x4b90('0x5b')],'as':_0x4b90('0x5c'),'attributes':['id',_0x4b90('0x5d'),_0x4b90('0x5e')],'raw':!![]});if(_0x11b665[_0x4b90('0x28')][_0x4b90('0x56')]){_0x456ea8['push']({'model':db[_0x4b90('0x5f')],'as':'Attachment','raw':!![]});}var _0x551da0=[{'model':db['OpenchannelMessage'],'as':_0x4b90('0x60'),'attributes':['id',_0x4b90('0x3a'),_0x4b90('0x61'),_0x4b90('0x62'),'secret',_0x4b90('0x63')],'include':_0x456ea8}];_0x551da0[_0x4b90('0x58')]({'model':db[_0x4b90('0x64')],'as':'Account','attributes':['id',_0x4b90('0x20')]});_0x551da0[_0x4b90('0x58')]({'model':db[_0x4b90('0x59')],'as':_0x4b90('0x65'),'attributes':['id','fullname']});return db[_0x4b90('0x2f')][_0x4b90('0x38')]({'where':{'id':_0x11b665[_0x4b90('0x2d')]['id']},'include':_0x551da0})[_0x4b90('0x1d')](handleEntityNotFound(_0x4fba67,null))[_0x4b90('0x1d')](function(_0x50f37b){if(_0x50f37b){var _0x12a1ce=_0x50f37b[_0x4b90('0x66')]({'plain':!![]});fs[_0x4b90('0x67')](_0x3e9f8c);var _0x9f96fc={'channel':'Openchannel','account':_0x12a1ce[_0x4b90('0x68')][_0x4b90('0x20')],'agent':_0x12a1ce[_0x4b90('0x65')]?_0x12a1ce[_0x4b90('0x65')][_0x4b90('0x5a')]:_0x4b90('0x69'),'createdAt':moment(_0x12a1ce[_0x4b90('0x61')])['format'](_0x4b90('0x46'))[_0x4b90('0x6a')](),'closedAt':_0x12a1ce['closed']?moment(_0x12a1ce[_0x4b90('0x6b')])[_0x4b90('0x57')](_0x4b90('0x46'))['toString']():'','disposition':_0x12a1ce[_0x4b90('0x6c')],'visibility':_0x12a1ce['threadId']?_0x4b90('0x6d'):_0x4b90('0x6e'),'messages':_(_0x12a1ce[_0x4b90('0x60')])[_0x4b90('0x42')]({'secret':![]})['map'](function(_0x34c63e){if(_0x34c63e[_0x4b90('0x5f')]){var _0x534ceb=path[_0x4b90('0x51')](_0x497fcc,_0x34c63e[_0x4b90('0x5f')]['basename']);if(fs[_0x4b90('0x6f')](_0x534ceb)){fs[_0x4b90('0x70')](_0x534ceb)[_0x4b90('0x71')](fs[_0x4b90('0x72')](path['join'](_0x3e9f8c,_0x34c63e['Attachment'][_0x4b90('0x73')])));}}return{'date':moment(_0x34c63e[_0x4b90('0x61')])[_0x4b90('0x57')](_0x4b90('0x46'))[_0x4b90('0x6a')](),'sender':_0x34c63e['direction']===_0x4b90('0x74')?_0x34c63e[_0x4b90('0x59')]?_0x34c63e[_0x4b90('0x59')][_0x4b90('0x5a')]:_0x4b90('0x75'):_0x34c63e[_0x4b90('0x5c')][_0x4b90('0x5d')]+(_0x34c63e[_0x4b90('0x5c')]['lastName']?'\x20'+_0x34c63e['Contact'][_0x4b90('0x5e')]:''),'body':_0x34c63e['Attachment']?_0x34c63e[_0x4b90('0x5f')][_0x4b90('0x73')]:_0x34c63e[_0x4b90('0x3a')],'direction':_0x34c63e[_0x4b90('0x62')]===_0x4b90('0x74')?'A':'C','secret':_0x34c63e[_0x4b90('0x76')],'read':_0x34c63e['read'],'attachment':_0x34c63e[_0x4b90('0x5f')]};})[_0x4b90('0x77')]()};return ejs[_0x4b90('0x78')](path[_0x4b90('0x51')](config[_0x4b90('0x52')],_0x4b90('0x53'),'views',_0x4b90('0x79')),{'interaction':_0x9f96fc})[_0x4b90('0x1d')](function(_0x503917){var _0x386a4d=path[_0x4b90('0x51')](_0x3e9f8c,_0x4b90('0x7a')+_0x12a1ce['id']+'-'+_0x43e045+'.pdf');var _0x51a534={'path':_0x386a4d,'channel':_0x4b90('0x7b'),'interactionId':_0x12a1ce['id']};return pdf[_0x4b90('0x7c')](_0x503917,_0x51a534);})[_0x4b90('0x1d')](function(){return new Promise(function(_0x5c24b9,_0x43d7a9){zipdir(_0x3e9f8c,{'saveTo':_0x25fd3d},function(_0x90d96e,_0x1410a3){if(_0x90d96e)return _0x43d7a9(_0x90d96e);return _0x5c24b9(_0x1410a3);});})[_0x4b90('0x1d')](function(){return new Promise(function(_0x1d5912,_0x55a0bb){rimraf(_0x3e9f8c,function(_0x3cdd03){if(_0x3cdd03)_0x55a0bb(_0x3cdd03);return _0x1d5912();});});})[_0x4b90('0x1d')](function(){return _0x4fba67['download'](_0x25fd3d,_0x38a64c,function(_0x1aeeb4){if(_0x1aeeb4){logger[_0x4b90('0x7d')]('Unable\x20to\x20delete\x20zip\x20file',_0x1aeeb4);}else{fs['unlinkSync'](_0x25fd3d);}});});});}else{return _0x4fba67['sendStatus'](0xc8);}})['catch'](handleError(_0x4fba67,null));};
\ No newline at end of file
+var _0xa5bf=['include','rows','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','createdAt','secret','read','OpenchannelAccount','Account','Owner','get','N.A.','Public','existsSync','pipe','createWriteStream','basename','toString','direction','out','System','value','renderFile','views','transcript-','.pdf','Openchannel','createPdfFromHTML','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','moment','path','ejs','lodash','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','destroy','then','error','name','send','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','findAll','openchannel','query','user','show','from','params','keys','filters','intersection','model','attributes','fields','includeAll','merge','options','find','catch','create','body','describe','addMessage','OpenchannelMessage','omit','ids','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','pick','where','OpenchannelInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xc471d2,_0x26ab16){var _0x334c68=function(_0x2deae4){while(--_0x2deae4){_0xc471d2['push'](_0xc471d2['shift']());}};_0x334c68(++_0x26ab16);}(_0xa5bf,0xb4));var _0xfa5b=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa5bf[_0x4e1d03];return _0x362d4b;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0xfa5b('0x0'));var util=require('util');var path=require(_0xfa5b('0x1'));var ejs=require(_0xfa5b('0x2'));var fs=require('fs');var _=require(_0xfa5b('0x3'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require(_0xfa5b('0x4'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0xfa5b('0x5'));var config=require(_0xfa5b('0x6'));var db=require(_0xfa5b('0x7'))['db'];config[_0xfa5b('0x8')]=_[_0xfa5b('0x9')](config[_0xfa5b('0x8')],{'host':_0xfa5b('0xa'),'port':0x18eb});var socket=require(_0xfa5b('0xb'))(new Redis(config[_0xfa5b('0x8')]));require(_0xfa5b('0xc'))[_0xfa5b('0xd')](socket);function respondWithStatusCode(_0x395d7e,_0x530732){_0x530732=_0x530732||0xcc;return function(_0x10043f){if(_0x10043f){return _0x395d7e[_0xfa5b('0xe')](_0x530732);}return _0x395d7e[_0xfa5b('0xf')](_0x530732)[_0xfa5b('0x10')]();};}function respondWithResult(_0x4db865,_0x35fc84){_0x35fc84=_0x35fc84||0xc8;return function(_0x385f91){if(_0x385f91){return _0x4db865[_0xfa5b('0xf')](_0x35fc84)['json'](_0x385f91);}};}function respondWithFilteredResult(_0xb52bba,_0x4a4245){return function(_0x404a53){if(_0x404a53){var _0x1c3ffb=typeof _0x4a4245[_0xfa5b('0x11')]===_0xfa5b('0x12')&&typeof _0x4a4245[_0xfa5b('0x13')]===_0xfa5b('0x12');var _0x2a343f=_0x404a53[_0xfa5b('0x14')];var _0xc2e7e8=_0x1c3ffb?0x0:_0x4a4245['offset'];var _0x322461=_0x1c3ffb?_0x404a53[_0xfa5b('0x14')]:_0x4a4245[_0xfa5b('0x11')]+_0x4a4245['limit'];var _0x32818b;if(_0x322461>=_0x2a343f){_0x322461=_0x2a343f;_0x32818b=0xc8;}else{_0x32818b=0xce;}_0xb52bba[_0xfa5b('0xf')](_0x32818b);return _0xb52bba[_0xfa5b('0x15')](_0xfa5b('0x16'),_0xc2e7e8+'-'+_0x322461+'/'+_0x2a343f)[_0xfa5b('0x17')](_0x404a53);}return null;};}function saveUpdates(_0x2abdc3){return function(_0x10d9de){if(_0x10d9de){return _0x10d9de['update'](_0x2abdc3)['then'](function(_0x5d6bc7){return _0x5d6bc7;});}return null;};}function removeEntity(_0x5536e7){return function(_0x2413e6){if(_0x2413e6){return _0x2413e6[_0xfa5b('0x18')]()[_0xfa5b('0x19')](function(){_0x5536e7[_0xfa5b('0xf')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b91b7){return function(_0x44eb4a){if(!_0x44eb4a){_0x2b91b7['sendStatus'](0x194);}return _0x44eb4a;};}function handleError(_0x42ece4,_0x4b10bd){_0x4b10bd=_0x4b10bd||0x1f4;return function(_0x52d7f8){logger[_0xfa5b('0x1a')](_0x52d7f8['stack']);if(_0x52d7f8[_0xfa5b('0x1b')]){delete _0x52d7f8[_0xfa5b('0x1b')];}_0x42ece4[_0xfa5b('0xf')](_0x4b10bd)[_0xfa5b('0x1c')](_0x52d7f8);};}exports['index']=function(_0x38d4d0,_0x56ef30){var _0x3e56fc={};var _0x109ad1=_[_0xfa5b('0x1d')](db[_0xfa5b('0x1e')][_0xfa5b('0x1f')],function(_0x5793b3){return{'name':_0x5793b3[_0xfa5b('0x20')],'type':_0x5793b3[_0xfa5b('0x21')][_0xfa5b('0x22')]};});_0x3e56fc=qs['getOptions'](_0x109ad1,_0x38d4d0);return interaction[_0xfa5b('0x23')](_0xfa5b('0x24'),_0x38d4d0[_0xfa5b('0x25')],_0x38d4d0[_0xfa5b('0x26')],_0x3e56fc,_0x109ad1)[_0xfa5b('0x19')](respondWithFilteredResult(_0x56ef30,_0x3e56fc))['catch'](handleError(_0x56ef30,null));};exports[_0xfa5b('0x27')]=function(_0x315b9e,_0x17e2ac){var _0x18d2bd={};if(_0x315b9e[_0xfa5b('0x25')][_0xfa5b('0x21')]&&_0x315b9e[_0xfa5b('0x25')][_0xfa5b('0x21')]===_0xfa5b('0x28')){_0x18d2bd[_0xfa5b('0x28')]=_0x315b9e[_0xfa5b('0x29')]['id'];}else{_0x18d2bd['id']=_0x315b9e[_0xfa5b('0x29')]['id'];}var _0x3b6c83={'raw':![],'where':_0x18d2bd},_0x28d828={};_0x28d828['model']=_[_0xfa5b('0x2a')](db[_0xfa5b('0x1e')][_0xfa5b('0x1f')]);_0x28d828[_0xfa5b('0x25')]=_['keys'](_0x315b9e[_0xfa5b('0x25')]);_0x28d828[_0xfa5b('0x2b')]=_[_0xfa5b('0x2c')](_0x28d828[_0xfa5b('0x2d')],_0x28d828[_0xfa5b('0x25')]);_0x3b6c83[_0xfa5b('0x2e')]=_[_0xfa5b('0x2c')](_0x28d828[_0xfa5b('0x2d')],qs[_0xfa5b('0x2f')](_0x315b9e['query']['fields']));_0x3b6c83[_0xfa5b('0x2e')]=_0x3b6c83[_0xfa5b('0x2e')]['length']?_0x3b6c83[_0xfa5b('0x2e')]:_0x28d828[_0xfa5b('0x2d')];if(_0x315b9e[_0xfa5b('0x25')][_0xfa5b('0x30')]){_0x3b6c83['include']=[{'all':!![]}];}_0x3b6c83=_[_0xfa5b('0x31')]({},_0x3b6c83,_0x315b9e[_0xfa5b('0x32')]);return db[_0xfa5b('0x1e')][_0xfa5b('0x33')](_0x3b6c83)['then'](handleEntityNotFound(_0x17e2ac,null))['then'](respondWithResult(_0x17e2ac,null))[_0xfa5b('0x34')](handleError(_0x17e2ac,null));};exports[_0xfa5b('0x35')]=function(_0xb8b9bb,_0x336910){return db[_0xfa5b('0x1e')][_0xfa5b('0x35')](_0xb8b9bb['body'],{})[_0xfa5b('0x19')](respondWithResult(_0x336910,0xc9))['catch'](handleError(_0x336910,null));};exports['update']=function(_0x54a4e9,_0x1ea65e){if(_0x54a4e9[_0xfa5b('0x36')]['id']){delete _0x54a4e9[_0xfa5b('0x36')]['id'];}return db[_0xfa5b('0x1e')][_0xfa5b('0x33')]({'where':{'id':_0x54a4e9['params']['id']}})['then'](handleEntityNotFound(_0x1ea65e,null))['then'](saveUpdates(_0x54a4e9[_0xfa5b('0x36')],null))[_0xfa5b('0x19')](respondWithResult(_0x1ea65e,null))[_0xfa5b('0x34')](handleError(_0x1ea65e,null));};exports['destroy']=function(_0x536c00,_0x37b329){return db[_0xfa5b('0x1e')][_0xfa5b('0x33')]({'where':{'id':_0x536c00[_0xfa5b('0x29')]['id']}})[_0xfa5b('0x19')](handleEntityNotFound(_0x37b329,null))['then'](removeEntity(_0x37b329,null))['catch'](handleError(_0x37b329,null));};exports[_0xfa5b('0x37')]=function(_0xae2ee9,_0x14c73b){return db[_0xfa5b('0x1e')]['describe']()[_0xfa5b('0x19')](respondWithResult(_0x14c73b,null))[_0xfa5b('0x34')](handleError(_0x14c73b,null));};exports[_0xfa5b('0x38')]=function(_0x13e14b,_0xc68a20){return db[_0xfa5b('0x39')][_0xfa5b('0x33')]({'where':{'id':_0x13e14b[_0xfa5b('0x29')]['id']}})[_0xfa5b('0x19')](handleEntityNotFound(_0xc68a20,null))[_0xfa5b('0x19')](function(_0x8bdd63){if(_0x8bdd63){return _0x8bdd63[_0xfa5b('0x38')](_0x13e14b[_0xfa5b('0x36')]['ids'],_[_0xfa5b('0x3a')](_0x13e14b[_0xfa5b('0x36')],[_0xfa5b('0x3b'),'id'])||{});}})[_0xfa5b('0x19')](respondWithResult(_0xc68a20,null))[_0xfa5b('0x34')](handleError(_0xc68a20,null));};exports[_0xfa5b('0x3c')]=function(_0x4d7028,_0x8c98a){var _0x374ed4={'raw':![],'where':{}};var _0x1ac42a={};var _0x36f0ca={'count':0x0,'rows':[]};return db[_0xfa5b('0x1e')][_0xfa5b('0x3d')]({'where':{'id':_0x4d7028[_0xfa5b('0x29')]['id']}})['then'](handleEntityNotFound(_0x8c98a,null))[_0xfa5b('0x19')](function(_0x25f35b){if(_0x25f35b){_0x1ac42a[_0xfa5b('0x2d')]=_[_0xfa5b('0x2a')](db[_0xfa5b('0x39')]['rawAttributes']);_0x1ac42a['query']=_['keys'](_0x4d7028['query']);_0x1ac42a[_0xfa5b('0x2b')]=_[_0xfa5b('0x2c')](_0x1ac42a['model'],_0x1ac42a[_0xfa5b('0x25')]);_0x374ed4['attributes']=_['intersection'](_0x1ac42a[_0xfa5b('0x2d')],qs[_0xfa5b('0x2f')](_0x4d7028['query'][_0xfa5b('0x2f')]));_0x374ed4['attributes']=_0x374ed4[_0xfa5b('0x2e')][_0xfa5b('0x3e')]?_0x374ed4[_0xfa5b('0x2e')]:_0x1ac42a[_0xfa5b('0x2d')];if(!_0x4d7028['query'][_0xfa5b('0x3f')](_0xfa5b('0x40'))){_0x374ed4[_0xfa5b('0x13')]=qs[_0xfa5b('0x13')](_0x4d7028[_0xfa5b('0x25')][_0xfa5b('0x13')]);_0x374ed4[_0xfa5b('0x11')]=qs['offset'](_0x4d7028[_0xfa5b('0x25')][_0xfa5b('0x11')]);}_0x374ed4[_0xfa5b('0x41')]=qs[_0xfa5b('0x42')](_0x4d7028[_0xfa5b('0x25')][_0xfa5b('0x42')]);_0x374ed4['where']=qs[_0xfa5b('0x2b')](_[_0xfa5b('0x43')](_0x4d7028[_0xfa5b('0x25')],_0x1ac42a['filters']));_0x374ed4[_0xfa5b('0x44')][_0xfa5b('0x45')]=_0x25f35b['id'];if(_0x4d7028['query']['filter']){_0x374ed4[_0xfa5b('0x44')]=_['merge'](_0x374ed4[_0xfa5b('0x44')],{'$or':_['map'](_0x374ed4[_0xfa5b('0x2e')],function(_0x2b82c9){var _0x86d2ff={};_0x86d2ff[_0x2b82c9]={'$like':'%'+_0x4d7028[_0xfa5b('0x25')][_0xfa5b('0x46')]+'%'};return _0x86d2ff;})});}if(_0x4d7028[_0xfa5b('0x25')][_0xfa5b('0x47')]){var _0x26a858=_0x4d7028[_0xfa5b('0x25')]['$gte']['split'](',');var _0x4acff1={};_0x4acff1[_0x26a858[0x0]]={'$gte':moment(_0x26a858[0x1])[_0xfa5b('0x48')](_0xfa5b('0x49'))};_0x374ed4[_0xfa5b('0x44')]=_[_0xfa5b('0x31')](_0x374ed4[_0xfa5b('0x44')],_0x4acff1);}_0x374ed4=_[_0xfa5b('0x31')]({},_0x374ed4,_0x4d7028[_0xfa5b('0x32')]);return db[_0xfa5b('0x39')][_0xfa5b('0x14')]({'where':_0x374ed4[_0xfa5b('0x44')]})[_0xfa5b('0x19')](function(_0x23e91a){_0x36f0ca['count']=_0x23e91a;if(_0x4d7028[_0xfa5b('0x25')]['includeAll']){_0x374ed4[_0xfa5b('0x4a')]=[{'all':!![]}];}return db[_0xfa5b('0x39')]['findAll'](_0x374ed4);})['then'](function(_0x13691f){_0x36f0ca[_0xfa5b('0x4b')]=_0x13691f;return _0x36f0ca;});}})[_0xfa5b('0x19')](respondWithFilteredResult(_0x8c98a,_0x374ed4))[_0xfa5b('0x34')](handleError(_0x8c98a,null));};exports[_0xfa5b('0x4c')]=function(_0x47034b,_0x2f74c2){return db[_0xfa5b('0x1e')][_0xfa5b('0x33')]({'where':{'id':_0x47034b[_0xfa5b('0x29')]['id']}})[_0xfa5b('0x19')](handleEntityNotFound(_0x2f74c2,null))[_0xfa5b('0x19')](function(_0x5bb80d){if(_0x5bb80d){return _0x5bb80d[_0xfa5b('0x4d')](_0x47034b[_0xfa5b('0x36')][_0xfa5b('0x3b')],_[_0xfa5b('0x3a')](_0x47034b[_0xfa5b('0x36')],[_0xfa5b('0x3b'),'id'])||{})[_0xfa5b('0x4e')](function(){return db[_0xfa5b('0x4f')][_0xfa5b('0x23')]({'attributes':['id','name',_0xfa5b('0x50')],'where':{'id':_0x47034b['body'][_0xfa5b('0x3b')]}});})[_0xfa5b('0x19')](function(_0x26ee77){socket[_0xfa5b('0x51')](_0xfa5b('0x52'),{'id':Number(_0x47034b[_0xfa5b('0x29')]['id']),'tags':_0x26ee77||[]});return{'id':Number(_0x47034b[_0xfa5b('0x29')]['id']),'tags':_0x26ee77||[]};});}})[_0xfa5b('0x19')](respondWithResult(_0x2f74c2,null))['catch'](handleError(_0x2f74c2,null));};exports[_0xfa5b('0x53')]=function(_0x2460d4,_0xd4ed38){return db[_0xfa5b('0x1e')][_0xfa5b('0x33')]({'where':{'id':_0x2460d4[_0xfa5b('0x29')]['id']}})[_0xfa5b('0x19')](handleEntityNotFound(_0xd4ed38,null))[_0xfa5b('0x19')](function(_0x5bc5b){if(_0x5bc5b){return _0x5bc5b['removeTags'](_0x2460d4[_0xfa5b('0x25')]['ids']);}})[_0xfa5b('0x19')](respondWithStatusCode(_0xd4ed38,null))['catch'](handleError(_0xd4ed38,null));};exports[_0xfa5b('0x54')]=function(_0x21092e,_0x1e1862){var _0x73f294=moment()[_0xfa5b('0x55')]()['toString']();var _0x4a127a=path[_0xfa5b('0x56')](config[_0xfa5b('0x57')],_0xfa5b('0x58'),_0xfa5b('0x59'),_0xfa5b('0x5a'));var _0x559082=path[_0xfa5b('0x56')](config[_0xfa5b('0x57')],'server',_0xfa5b('0x59'),_0xfa5b('0x5b'));var _0x4f4ed1=path[_0xfa5b('0x56')](_0x4a127a,_0x73f294);var _0x92ab77=util[_0xfa5b('0x48')]('transcript-%d-%s.zip',_0x21092e[_0xfa5b('0x29')]['id'],_0x73f294);var _0x335127=path[_0xfa5b('0x56')](_0x4a127a,_0x92ab77);var _0x446fab=[];_0x446fab[_0xfa5b('0x5c')]({'model':db[_0xfa5b('0x5d')],'as':'User','attributes':['id',_0xfa5b('0x5e')],'raw':!![]});_0x446fab[_0xfa5b('0x5c')]({'model':db[_0xfa5b('0x5f')],'as':_0xfa5b('0x60'),'attributes':['id',_0xfa5b('0x61'),_0xfa5b('0x62')],'raw':!![]});if(_0x21092e[_0xfa5b('0x25')][_0xfa5b('0x5b')]){_0x446fab['push']({'model':db[_0xfa5b('0x63')],'as':_0xfa5b('0x63'),'raw':!![]});}var _0x498e2a=[{'model':db['OpenchannelMessage'],'as':_0xfa5b('0x64'),'attributes':['id',_0xfa5b('0x36'),_0xfa5b('0x65'),'direction',_0xfa5b('0x66'),_0xfa5b('0x67')],'include':_0x446fab}];_0x498e2a[_0xfa5b('0x5c')]({'model':db[_0xfa5b('0x68')],'as':_0xfa5b('0x69'),'attributes':['id',_0xfa5b('0x1b')]});_0x498e2a[_0xfa5b('0x5c')]({'model':db[_0xfa5b('0x5d')],'as':_0xfa5b('0x6a'),'attributes':['id',_0xfa5b('0x5e')]});return db['OpenchannelInteraction'][_0xfa5b('0x33')]({'where':{'id':_0x21092e[_0xfa5b('0x29')]['id']},'include':_0x498e2a})[_0xfa5b('0x19')](handleEntityNotFound(_0x1e1862,null))[_0xfa5b('0x19')](function(_0x542f59){if(_0x542f59){var _0x424d4a=_0x542f59[_0xfa5b('0x6b')]({'plain':!![]});fs['mkdirSync'](_0x4f4ed1);var _0x2caca5={'channel':'Openchannel','account':_0x424d4a[_0xfa5b('0x69')][_0xfa5b('0x1b')],'agent':_0x424d4a[_0xfa5b('0x6a')]?_0x424d4a[_0xfa5b('0x6a')][_0xfa5b('0x5e')]:_0xfa5b('0x6c'),'createdAt':moment(_0x424d4a['createdAt'])['format'](_0xfa5b('0x49'))['toString'](),'closedAt':_0x424d4a['closed']?moment(_0x424d4a['closedAt'])[_0xfa5b('0x48')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x424d4a['disposition'],'visibility':_0x424d4a['threadId']?_0xfa5b('0x6d'):'Private','messages':_(_0x424d4a[_0xfa5b('0x64')])['filter']({'secret':![]})[_0xfa5b('0x1d')](function(_0x447264){if(_0x447264[_0xfa5b('0x63')]){var _0xe67650=path['join'](_0x559082,_0x447264[_0xfa5b('0x63')]['basename']);if(fs[_0xfa5b('0x6e')](_0xe67650)){fs['createReadStream'](_0xe67650)[_0xfa5b('0x6f')](fs[_0xfa5b('0x70')](path[_0xfa5b('0x56')](_0x4f4ed1,_0x447264[_0xfa5b('0x63')][_0xfa5b('0x71')])));}}return{'date':moment(_0x447264[_0xfa5b('0x65')])[_0xfa5b('0x48')](_0xfa5b('0x49'))[_0xfa5b('0x72')](),'sender':_0x447264[_0xfa5b('0x73')]===_0xfa5b('0x74')?_0x447264['User']?_0x447264[_0xfa5b('0x5d')]['fullname']:_0xfa5b('0x75'):_0x447264[_0xfa5b('0x60')]['firstName']+(_0x447264[_0xfa5b('0x60')][_0xfa5b('0x62')]?'\x20'+_0x447264[_0xfa5b('0x60')][_0xfa5b('0x62')]:''),'body':_0x447264[_0xfa5b('0x63')]?_0x447264[_0xfa5b('0x63')][_0xfa5b('0x71')]:_0x447264[_0xfa5b('0x36')],'direction':_0x447264[_0xfa5b('0x73')]==='out'?'A':'C','secret':_0x447264[_0xfa5b('0x66')],'read':_0x447264[_0xfa5b('0x67')],'attachment':_0x447264[_0xfa5b('0x63')]};})[_0xfa5b('0x76')]()};return ejs[_0xfa5b('0x77')](path[_0xfa5b('0x56')](config[_0xfa5b('0x57')],_0xfa5b('0x58'),_0xfa5b('0x78'),'downloadInteraction.ejs'),{'interaction':_0x2caca5})[_0xfa5b('0x19')](function(_0x490ade){var _0x488748=path['join'](_0x4f4ed1,_0xfa5b('0x79')+_0x424d4a['id']+'-'+_0x73f294+_0xfa5b('0x7a'));var _0x181cc0={'path':_0x488748,'channel':_0xfa5b('0x7b'),'interactionId':_0x424d4a['id']};return pdf[_0xfa5b('0x7c')](_0x490ade,_0x181cc0);})[_0xfa5b('0x19')](function(){return new Promise(function(_0x4b89a5,_0x38def7){zipdir(_0x4f4ed1,{'saveTo':_0x335127},function(_0x567e1c,_0x3f4bc2){if(_0x567e1c)return _0x38def7(_0x567e1c);return _0x4b89a5(_0x3f4bc2);});})[_0xfa5b('0x19')](function(){return new Promise(function(_0x32e16b,_0x54bee2){rimraf(_0x4f4ed1,function(_0x40ecce){if(_0x40ecce)_0x54bee2(_0x40ecce);return _0x32e16b();});});})[_0xfa5b('0x19')](function(){return _0x1e1862['download'](_0x335127,_0x92ab77,function(_0x85b13c){if(_0x85b13c){logger[_0xfa5b('0x1a')](_0xfa5b('0x7d'),_0x85b13c);}else{fs[_0xfa5b('0x7e')](_0x335127);}});});});}else{return _0x1e1862[_0xfa5b('0xe')](0xc8);}})[_0xfa5b('0x34')](handleError(_0x1e1862,null));};
\ No newline at end of file
index d399925..18dff50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7620=['remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','setMaxListeners','save','update'];(function(_0x336ca2,_0x1a813a){var _0xda59a6=function(_0x47caa6){while(--_0x47caa6){_0x336ca2['push'](_0x336ca2['shift']());}};_0xda59a6(++_0x1a813a);}(_0x7620,0x1e8));var _0x0762=function(_0x5aef12,_0x1edd9d){_0x5aef12=_0x5aef12-0x0;var _0x245089=_0x7620[_0x5aef12];return _0x245089;};'use strict';var EventEmitter=require(_0x0762('0x0'));var OpenchannelInteraction=require(_0x0762('0x1'))['db'][_0x0762('0x2')];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x0762('0x3')](0x0);var events={'afterCreate':_0x0762('0x4'),'afterUpdate':_0x0762('0x5'),'afterDestroy':_0x0762('0x6')};function emitEvent(_0x116c8){return function(_0x105546,_0x36ba81,_0x214b09){_0x105546['getUsers']({'attributes':['id'],'raw':!![]})[_0x0762('0x7')](function(_0x48f9fb){_0x105546[_0x0762('0x8')](_0x0762('0x9'),_0x48f9fb[_0x0762('0xa')](function(_0x3293eb){return{'id':_0x3293eb['id']};}));return OpenchannelMessage[_0x0762('0xb')]({'where':{'OpenchannelInteractionId':_0x105546['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0762('0x7')](function(_0x15668e){_0x105546[_0x0762('0x8')](_0x0762('0xc'),_0x15668e[_0x0762('0xd')]);OpenchannelInteractionEvents[_0x0762('0xe')](_0x116c8+':'+_0x105546['id'],_0x105546);OpenchannelInteractionEvents['emit'](_0x116c8,_0x105546);_0x214b09(null);})[_0x0762('0xf')](_0x214b09(null));};}for(var e in events){if(events[_0x0762('0x10')](e)){var event=events[e];OpenchannelInteraction[_0x0762('0x11')](e,emitEvent(event));}}module[_0x0762('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xe6da=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','save','update','remove','then','setDataValue','Users','findAll'];(function(_0x377df1,_0x4f3680){var _0x589a16=function(_0x43228d){while(--_0x43228d){_0x377df1['push'](_0x377df1['shift']());}};_0x589a16(++_0x4f3680);}(_0xe6da,0x14b));var _0xae6d=function(_0x285bc5,_0xab4d91){_0x285bc5=_0x285bc5-0x0;var _0x2cc2c6=_0xe6da[_0x285bc5];return _0x2cc2c6;};'use strict';var EventEmitter=require(_0xae6d('0x0'));var OpenchannelInteraction=require(_0xae6d('0x1'))['db'][_0xae6d('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0xae6d('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xae6d('0x4'),'afterUpdate':_0xae6d('0x5'),'afterDestroy':_0xae6d('0x6')};function emitEvent(_0x4b534c){return function(_0x325b4c,_0x16ff70,_0x5d2e75){_0x325b4c['getUsers']({'attributes':['id'],'raw':!![]})[_0xae6d('0x7')](function(_0x3a4d05){_0x325b4c[_0xae6d('0x8')](_0xae6d('0x9'),_0x3a4d05['map'](function(_0x4efba2){return{'id':_0x4efba2['id']};}));return OpenchannelMessage[_0xae6d('0xa')]({'where':{'OpenchannelInteractionId':_0x325b4c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xae6d('0x7')](function(_0x8caee1){_0x325b4c['setDataValue'](_0xae6d('0xb'),_0x8caee1[_0xae6d('0xc')]);OpenchannelInteractionEvents[_0xae6d('0xd')](_0x4b534c+':'+_0x325b4c['id'],_0x325b4c);OpenchannelInteractionEvents['emit'](_0x4b534c,_0x325b4c);_0x5d2e75(null);})[_0xae6d('0xe')](_0x5d2e75(null));};}for(var e in events){if(events[_0xae6d('0xf')](e)){var event=events[e];OpenchannelInteraction[_0xae6d('0x10')](e,emitEvent(event));}}module[_0xae6d('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 5b0ba8f..ef6eb17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['./openchannelInteraction.attributes','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x35eaaa,_0x46f736){var _0x5e344d=function(_0x15a92d){while(--_0x15a92d){_0x35eaaa['push'](_0x35eaaa['shift']());}};_0x5e344d(++_0x46f736);}(_0x0adf,0x1d2));var _0xf0ad=function(_0xf8ef4c,_0x557183){_0xf8ef4c=_0xf8ef4c-0x0;var _0x3f32c4=_0x0adf[_0xf8ef4c];return _0x3f32c4;};'use strict';var _=require(_0xf0ad('0x0'));var util=require(_0xf0ad('0x1'));var logger=require(_0xf0ad('0x2'))('api');var moment=require(_0xf0ad('0x3'));var BPromise=require(_0xf0ad('0x4'));var rp=require(_0xf0ad('0x5'));var fs=require('fs');var path=require(_0xf0ad('0x6'));var rimraf=require(_0xf0ad('0x7'));var config=require(_0xf0ad('0x8'));var attributes=require(_0xf0ad('0x9'));module['exports']=function(_0x3bbf85,_0x53221f){return _0x3bbf85[_0xf0ad('0xa')](_0xf0ad('0xb'),attributes,{'tableName':_0xf0ad('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf0ad('0xd'),'collate':_0xf0ad('0xe'),'hooks':{'beforeUpdate':function(_0x3bc706,_0xe65b20,_0x5bdf69){if(_0x3bc706[_0xf0ad('0xf')]('closed')){_0x3bc706[_0xf0ad('0x10')]=moment()[_0xf0ad('0x11')](_0xf0ad('0x12'));}_0x5bdf69(null,_0x3bc706);}}});};
\ No newline at end of file
+var _0x285f=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format'];(function(_0x11f7c9,_0xd41d19){var _0x31e087=function(_0x37c531){while(--_0x37c531){_0x11f7c9['push'](_0x11f7c9['shift']());}};_0x31e087(++_0xd41d19);}(_0x285f,0x18d));var _0xf285=function(_0x3c38fe,_0x2ec535){_0x3c38fe=_0x3c38fe-0x0;var _0x30880e=_0x285f[_0x3c38fe];return _0x30880e;};'use strict';var _=require(_0xf285('0x0'));var util=require(_0xf285('0x1'));var logger=require(_0xf285('0x2'))('api');var moment=require(_0xf285('0x3'));var BPromise=require(_0xf285('0x4'));var rp=require(_0xf285('0x5'));var fs=require('fs');var path=require(_0xf285('0x6'));var rimraf=require(_0xf285('0x7'));var config=require(_0xf285('0x8'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0xb5ec91,_0x3fa241){return _0xb5ec91['define'](_0xf285('0x9'),attributes,{'tableName':_0xf285('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf285('0xb'),'collate':_0xf285('0xc'),'hooks':{'beforeUpdate':function(_0x5ea054,_0x16c79c,_0x3f6e39){if(_0x5ea054[_0xf285('0xd')](_0xf285('0xe'))){_0x5ea054[_0xf285('0xf')]=moment()[_0xf285('0x10')](_0xf285('0x11'));}_0x3f6e39(null,_0x5ea054);}}});};
\ No newline at end of file
index 9750680..01c8e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6645=['lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','options','raw','where','attributes','limit','debug','AddTagsToOpenchannelInteraction','find','addTags','body','ids','omit','AddTags'];(function(_0x5496fd,_0x5ef589){var _0x3f315c=function(_0x23d855){while(--_0x23d855){_0x5496fd['push'](_0x5496fd['shift']());}};_0x3f315c(++_0x5ef589);}(_0x6645,0xd2));var _0x5664=function(_0x1e5e82,_0x3612a4){_0x1e5e82=_0x1e5e82-0x0;var _0x1a8a72=_0x6645[_0x1e5e82];return _0x1a8a72;};'use strict';var _=require(_0x5664('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5664('0x1'));var rs=require(_0x5664('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5664('0x3'))['db'];var utils=require(_0x5664('0x4'));var logger=require(_0x5664('0x5'))(_0x5664('0x6'));var config=require(_0x5664('0x7'));var jayson=require(_0x5664('0x8'));var client=jayson[_0x5664('0x9')][_0x5664('0xa')]({'port':0x232a});config[_0x5664('0xb')]=_['defaults'](config[_0x5664('0xb')],{'host':_0x5664('0xc'),'port':0x18eb});var socket=require(_0x5664('0xd'))(new Redis(config[_0x5664('0xb')]));require(_0x5664('0xe'))[_0x5664('0xf')](socket);function respondWithRpcPromise(_0x596e37,_0x388929,_0x398e22){return new BPromise(function(_0x4c5796,_0x4c1bd6){return client['request'](_0x596e37,_0x398e22)[_0x5664('0x10')](function(_0x35e43d){logger[_0x5664('0x11')](_0x5664('0x12'),_0x388929,_0x5664('0x13'));logger['debug'](_0x5664('0x14'),_0x388929,_0x5664('0x13'),JSON[_0x5664('0x15')](_0x35e43d));if(_0x35e43d[_0x5664('0x16')]){if(_0x35e43d[_0x5664('0x16')][_0x5664('0x17')]===0x1f4){logger[_0x5664('0x16')](_0x5664('0x12'),_0x388929,_0x35e43d[_0x5664('0x16')][_0x5664('0x18')]);return _0x4c1bd6(_0x35e43d[_0x5664('0x16')]['message']);}logger[_0x5664('0x16')](_0x5664('0x12'),_0x388929,_0x35e43d['error'][_0x5664('0x18')]);return _0x4c5796(_0x35e43d[_0x5664('0x16')][_0x5664('0x18')]);}else{logger[_0x5664('0x11')](_0x5664('0x12'),_0x388929,_0x5664('0x13'));_0x4c5796(_0x35e43d[_0x5664('0x19')][_0x5664('0x18')]);}})[_0x5664('0x1a')](function(_0x5c96c9){logger[_0x5664('0x16')](_0x5664('0x12'),_0x388929,_0x5c96c9);_0x4c1bd6(_0x5c96c9);});});}exports[_0x5664('0x1b')]=function(_0x1a0b3d){var _0x32da35=this;return new Promise(function(_0x191980,_0x23be3a){return db[_0x5664('0x1c')]['update'](_0x1a0b3d['body'],{'raw':_0x1a0b3d[_0x5664('0x1d')]?_0x1a0b3d['options'][_0x5664('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a0b3d['options']?_0x1a0b3d[_0x5664('0x1d')][_0x5664('0x1f')]||null:null,'attributes':_0x1a0b3d[_0x5664('0x1d')]?_0x1a0b3d[_0x5664('0x1d')][_0x5664('0x20')]||null:null,'limit':_0x1a0b3d[_0x5664('0x1d')]?_0x1a0b3d[_0x5664('0x1d')][_0x5664('0x21')]||null:null})[_0x5664('0x10')](function(_0x4b40eb){logger[_0x5664('0x11')](_0x5664('0x1b'),_0x1a0b3d);logger[_0x5664('0x22')]('UpdateOpenchannelInteraction',_0x1a0b3d,JSON[_0x5664('0x15')](_0x4b40eb));_0x191980(_0x4b40eb);})['catch'](function(_0x30686d){logger[_0x5664('0x16')](_0x5664('0x1b'),_0x30686d[_0x5664('0x18')],_0x1a0b3d);_0x23be3a(_0x32da35[_0x5664('0x16')](0x1f4,_0x30686d[_0x5664('0x18')]));});});};exports[_0x5664('0x23')]=function(_0x57a6dd){return new Promise(function(_0x270883,_0x344cee){return db['OpenchannelInteraction'][_0x5664('0x24')]({'where':_0x57a6dd[_0x5664('0x1d')]?_0x57a6dd[_0x5664('0x1d')][_0x5664('0x1f')]||null:null})[_0x5664('0x10')](function(_0x1ca095){if(_0x1ca095){return _0x1ca095[_0x5664('0x25')](_0x57a6dd[_0x5664('0x26')][_0x5664('0x27')],_[_0x5664('0x28')](_0x57a6dd['body'],['ids','id'])||{});}})['spread'](function(_0x1abbea){logger[_0x5664('0x11')](_0x5664('0x29'),_0x57a6dd);logger[_0x5664('0x22')](_0x5664('0x29'),_0x57a6dd,JSON[_0x5664('0x15')](_0x1abbea));_0x270883(_0x1abbea);})['catch'](function(_0x40a197){logger[_0x5664('0x16')](_0x5664('0x29'),_0x40a197['message'],_0x57a6dd);_0x344cee(_this[_0x5664('0x16')](0x1f4,_0x40a197[_0x5664('0x18')]));});});};
\ No newline at end of file
+var _0x3316=['code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','options','where','attributes','limit','find','addTags','body','ids','spread','AddTags','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','client','http','socket.io-emitter','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5c12f2,_0x5de043){var _0x5e8344=function(_0x445932){while(--_0x445932){_0x5c12f2['push'](_0x5c12f2['shift']());}};_0x5e8344(++_0x5de043);}(_0x3316,0xa4));var _0x6331=function(_0x3aaef5,_0x16cdc8){_0x3aaef5=_0x3aaef5-0x0;var _0x4c0ed5=_0x3316[_0x3aaef5];return _0x4c0ed5;};'use strict';var _=require('lodash');var util=require(_0x6331('0x0'));var moment=require(_0x6331('0x1'));var BPromise=require('bluebird');var rs=require(_0x6331('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6331('0x3'))['db'];var utils=require(_0x6331('0x4'));var logger=require('../../config/logger')(_0x6331('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6331('0x6')][_0x6331('0x7')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6331('0x8'))(new Redis(config[_0x6331('0x9')]));require(_0x6331('0xa'))[_0x6331('0xb')](socket);function respondWithRpcPromise(_0x4ed937,_0x1c835b,_0x2be131){return new BPromise(function(_0x5de119,_0x7bf939){return client[_0x6331('0xc')](_0x4ed937,_0x2be131)[_0x6331('0xd')](function(_0x34b840){logger[_0x6331('0xe')](_0x6331('0xf'),_0x1c835b,'request\x20sent');logger[_0x6331('0x10')](_0x6331('0x11'),_0x1c835b,_0x6331('0x12'),JSON[_0x6331('0x13')](_0x34b840));if(_0x34b840[_0x6331('0x14')]){if(_0x34b840[_0x6331('0x14')][_0x6331('0x15')]===0x1f4){logger['error'](_0x6331('0xf'),_0x1c835b,_0x34b840[_0x6331('0x14')]['message']);return _0x7bf939(_0x34b840[_0x6331('0x14')][_0x6331('0x16')]);}logger[_0x6331('0x14')](_0x6331('0xf'),_0x1c835b,_0x34b840[_0x6331('0x14')][_0x6331('0x16')]);return _0x5de119(_0x34b840['error'][_0x6331('0x16')]);}else{logger[_0x6331('0xe')](_0x6331('0xf'),_0x1c835b,_0x6331('0x12'));_0x5de119(_0x34b840[_0x6331('0x17')][_0x6331('0x16')]);}})[_0x6331('0x18')](function(_0x4b98c3){logger['error'](_0x6331('0xf'),_0x1c835b,_0x4b98c3);_0x7bf939(_0x4b98c3);});});}exports[_0x6331('0x19')]=function(_0x1798f2){var _0x7f8a10=this;return new Promise(function(_0x1f18cb,_0x275d40){return db[_0x6331('0x1a')]['update'](_0x1798f2['body'],{'raw':_0x1798f2[_0x6331('0x1b')]?_0x1798f2['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1798f2[_0x6331('0x1b')]?_0x1798f2[_0x6331('0x1b')][_0x6331('0x1c')]||null:null,'attributes':_0x1798f2[_0x6331('0x1b')]?_0x1798f2[_0x6331('0x1b')][_0x6331('0x1d')]||null:null,'limit':_0x1798f2[_0x6331('0x1b')]?_0x1798f2[_0x6331('0x1b')][_0x6331('0x1e')]||null:null})[_0x6331('0xd')](function(_0x1e4e52){logger[_0x6331('0xe')]('UpdateOpenchannelInteraction',_0x1798f2);logger['debug']('UpdateOpenchannelInteraction',_0x1798f2,JSON[_0x6331('0x13')](_0x1e4e52));_0x1f18cb(_0x1e4e52);})[_0x6331('0x18')](function(_0x2df1f5){logger[_0x6331('0x14')]('UpdateOpenchannelInteraction',_0x2df1f5[_0x6331('0x16')],_0x1798f2);_0x275d40(_0x7f8a10[_0x6331('0x14')](0x1f4,_0x2df1f5[_0x6331('0x16')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x452c59){return new Promise(function(_0x225e50,_0xc5032f){return db[_0x6331('0x1a')][_0x6331('0x1f')]({'where':_0x452c59[_0x6331('0x1b')]?_0x452c59[_0x6331('0x1b')]['where']||null:null})[_0x6331('0xd')](function(_0x528e9b){if(_0x528e9b){return _0x528e9b[_0x6331('0x20')](_0x452c59[_0x6331('0x21')][_0x6331('0x22')],_['omit'](_0x452c59[_0x6331('0x21')],[_0x6331('0x22'),'id'])||{});}})[_0x6331('0x23')](function(_0x484b95){logger['info'](_0x6331('0x24'),_0x452c59);logger[_0x6331('0x10')]('AddTags',_0x452c59,JSON[_0x6331('0x13')](_0x484b95));_0x225e50(_0x484b95);})[_0x6331('0x18')](function(_0x4d81f2){logger[_0x6331('0x14')](_0x6331('0x24'),_0x4d81f2['message'],_0x452c59);_0xc5032f(_this[_0x6331('0x14')](0x1f4,_0x4d81f2['message']));});});};
\ No newline at end of file
index c7f4804..6589a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21ca=['update','removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','save','remove'];(function(_0x57e459,_0x587e5c){var _0x873c64=function(_0x2114c1){while(--_0x2114c1){_0x57e459['push'](_0x57e459['shift']());}};_0x873c64(++_0x587e5c);}(_0x21ca,0xad));var _0xa21c=function(_0x561127,_0x2c9e70){_0x561127=_0x561127-0x0;var _0x23e164=_0x21ca[_0x561127];return _0x23e164;};'use strict';var OpenchannelInteractionEvents=require(_0xa21c('0x0'));var events=[_0xa21c('0x1'),_0xa21c('0x2'),_0xa21c('0x3')];function createListener(_0x392545,_0xbaffdf){return function(_0x1481e7){_0xbaffdf['emit'](_0x392545,_0x1481e7);};}function removeListener(_0x45c575,_0x43be3a){return function(){OpenchannelInteractionEvents[_0xa21c('0x4')](_0x45c575,_0x43be3a);};}exports[_0xa21c('0x5')]=function(_0x228d70){for(var _0x11632e=0x0,_0x555aa2=events[_0xa21c('0x6')];_0x11632e<_0x555aa2;_0x11632e++){var _0x5ea898=events[_0x11632e];var _0x24cf10=createListener(_0xa21c('0x7')+_0x5ea898,_0x228d70);OpenchannelInteractionEvents['on'](_0x5ea898,_0x24cf10);}};
\ No newline at end of file
+var _0x8aa6=['emit','removeListener','register','length','openchannelInteraction:','save','remove','update'];(function(_0x3f36f1,_0x3dc4e1){var _0x74dd1=function(_0x531315){while(--_0x531315){_0x3f36f1['push'](_0x3f36f1['shift']());}};_0x74dd1(++_0x3dc4e1);}(_0x8aa6,0xfd));var _0x68aa=function(_0x1a3fe2,_0x553b71){_0x1a3fe2=_0x1a3fe2-0x0;var _0x490ee2=_0x8aa6[_0x1a3fe2];return _0x490ee2;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x68aa('0x0'),_0x68aa('0x1'),_0x68aa('0x2')];function createListener(_0x3943e2,_0x304492){return function(_0x5c75f4){_0x304492[_0x68aa('0x3')](_0x3943e2,_0x5c75f4);};}function removeListener(_0x279442,_0x45474f){return function(){OpenchannelInteractionEvents[_0x68aa('0x4')](_0x279442,_0x45474f);};}exports[_0x68aa('0x5')]=function(_0x54f240){for(var _0xb8f495=0x0,_0x1b15bc=events[_0x68aa('0x6')];_0xb8f495<_0x1b15bc;_0xb8f495++){var _0x186f02=events[_0xb8f495];var _0x3dd4bf=createListener(_0x68aa('0x7')+_0x186f02,_0x54f240);OpenchannelInteractionEvents['on'](_0x186f02,_0x3dd4bf);}};
\ No newline at end of file
index 636a2c3..8cf8f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports'];(function(_0x15fda5,_0x40df80){var _0x428e58=function(_0x514a8d){while(--_0x514a8d){_0x15fda5['push'](_0x15fda5['shift']());}};_0x428e58(++_0x40df80);}(_0xedd9,0xfc));var _0x9edd=function(_0x2e805e,_0x4b168b){_0x2e805e=_0x2e805e-0x0;var _0x4f8767=_0xedd9[_0x2e805e];return _0x4f8767;};'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['show']);router[_0x9edd('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9edd('0x10')](_0x9edd('0x11'),'openchannelmessage:create'),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')](_0x9edd('0x15'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x16')]);router[_0x9edd('0x13')](_0x9edd('0x17'),auth['isAuthenticated'](),controller[_0x9edd('0x18')]);router[_0x9edd('0x19')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x1a')]);module[_0x9edd('0x1b')]=router;
\ No newline at end of file
+var _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x4d2329,_0x5c505a){var _0x37233b=function(_0x300618){while(--_0x300618){_0x4d2329['push'](_0x4d2329['shift']());}};_0x37233b(++_0x5c505a);}(_0xe706,0xa3));var _0x6e70=function(_0x2820fc,_0x481318){_0x2820fc=_0x2820fc-0x0;var _0x1e1508=_0xe706[_0x2820fc];return _0x1e1508;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index 53c4044..2c0e3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae87=['STRING','TEXT','BOOLEAN','out'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xae87,0x1ce));var _0x7ae8=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0xae87[_0x236d24];return _0x1574cf;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x7ae8('0x0')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7ae8('0x0')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x7ae8('0x1')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x7ae8('0x2')]},'providerResponse':{'type':Sequelize[_0x7ae8('0x3')]}};
\ No newline at end of file
+var _0xbc87=['STRING','TEXT','sequelize','medium','BOOLEAN','out','DATE'];(function(_0x56a48f,_0x2e9d81){var _0x19ed7b=function(_0x214c1a){while(--_0x214c1a){_0x56a48f['push'](_0x56a48f['shift']());}};_0x19ed7b(++_0x2e9d81);}(_0xbc87,0x144));var _0x7bc8=function(_0x3ac5fb,_0x5fbe6f){_0x3ac5fb=_0x3ac5fb-0x0;var _0x56260f=_0xbc87[_0x3ac5fb];return _0x56260f;};'use strict';var Sequelize=require(_0x7bc8('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x7bc8('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x7bc8('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x7bc8('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x7bc8('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x7bc8('0x4')]},'providerName':{'type':Sequelize[_0x7bc8('0x5')]},'providerResponse':{'type':Sequelize[_0x7bc8('0x6')]}};
\ No newline at end of file
index 82caada..23c87fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28cf=['fullname','email','manual','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','rejectmessage','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./openchannelMessage.socket','jayson/promise','client','http','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','merge','count','include','rows','show','params','includeAll','options','find','create','body','describe','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','isNil','read1stAt','interaction','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','contact','User'];(function(_0x114d1f,_0x55548e){var _0x5b91d4=function(_0x358415){while(--_0x358415){_0x114d1f['push'](_0x114d1f['shift']());}};_0x5b91d4(++_0x55548e);}(_0x28cf,0x113));var _0xf28c=function(_0x4cdc9d,_0x54b584){_0x4cdc9d=_0x4cdc9d-0x0;var _0x196054=_0x28cf[_0x4cdc9d];return _0x196054;};'use strict';var emlformat=require(_0xf28c('0x0'));var rimraf=require(_0xf28c('0x1'));var zipdir=require(_0xf28c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf28c('0x3'));var moment=require(_0xf28c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf28c('0x5'));var path=require(_0xf28c('0x6'));var sox=require(_0xf28c('0x7'));var csv=require(_0xf28c('0x8'));var ejs=require(_0xf28c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf28c('0xa'));var squel=require(_0xf28c('0xb'));var crypto=require(_0xf28c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf28c('0xd'));var toCsv=require(_0xf28c('0x8'));var querystring=require(_0xf28c('0xe'));var Papa=require(_0xf28c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf28c('0x10'));var as=require(_0xf28c('0x11'));var hardwareService=require(_0xf28c('0x12'));var logger=require(_0xf28c('0x13'))(_0xf28c('0x14'));var utils=require('../../config/utils');var config=require(_0xf28c('0x15'));var licenseUtil=require(_0xf28c('0x16'));var db=require('../../mysqldb')['db'];config[_0xf28c('0x17')]=_[_0xf28c('0x18')](config[_0xf28c('0x17')],{'host':_0xf28c('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf28c('0x17')]));require(_0xf28c('0x1a'))['register'](socket);var jayson=require(_0xf28c('0x1b'));var client=jayson[_0xf28c('0x1c')][_0xf28c('0x1d')]({'port':0x232c});var client9002=jayson[_0xf28c('0x1c')][_0xf28c('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x2cecab,_0x13e8d7,_0x5c7548,_0x9481dc){return new BPromise(function(_0x1bf1b3,_0x275980){var _0x181c37=_0x9481dc||client;return _0x181c37[_0xf28c('0x1e')](_0x2cecab,_0x5c7548)[_0xf28c('0x1f')](function(_0x36b094){logger['info'](_0xf28c('0x20'),_0x13e8d7,_0xf28c('0x21'));logger[_0xf28c('0x22')](_0xf28c('0x23'),_0x13e8d7,_0xf28c('0x21'),JSON[_0xf28c('0x24')](_0x36b094));if(_0x36b094[_0xf28c('0x25')]){if(_0x36b094[_0xf28c('0x25')][_0xf28c('0x26')]===0x1f4){logger[_0xf28c('0x25')](_0xf28c('0x20'),_0x13e8d7,_0x36b094['error'][_0xf28c('0x27')]);return _0x275980(_0x36b094[_0xf28c('0x25')][_0xf28c('0x27')]);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x13e8d7,_0x36b094[_0xf28c('0x25')][_0xf28c('0x27')]);return _0x1bf1b3(_0x36b094[_0xf28c('0x25')][_0xf28c('0x27')]);}else{logger[_0xf28c('0x28')](_0xf28c('0x20'),_0x13e8d7,_0xf28c('0x21'));_0x1bf1b3(_0x36b094['result'][_0xf28c('0x27')]);}})[_0xf28c('0x29')](function(_0x176244){logger['error'](_0xf28c('0x20'),_0x13e8d7,_0x176244);_0x275980(_0x176244);});});}function respondWithStatusCode(_0x1d6f9d,_0x65bc0d){_0x65bc0d=_0x65bc0d||0xcc;return function(_0xe63cd4){if(_0xe63cd4){return _0x1d6f9d[_0xf28c('0x2a')](_0x65bc0d);}return _0x1d6f9d[_0xf28c('0x2b')](_0x65bc0d)[_0xf28c('0x2c')]();};}function respondWithResult(_0x14531f,_0x18b6b1){_0x18b6b1=_0x18b6b1||0xc8;return function(_0x199775){if(_0x199775){return _0x14531f[_0xf28c('0x2b')](_0x18b6b1)[_0xf28c('0x2d')](_0x199775);}};}function respondWithFilteredResult(_0x12d6c6,_0x125370){return function(_0x5cafa6){if(_0x5cafa6){var _0x11d470=typeof _0x125370[_0xf28c('0x2e')]===_0xf28c('0x2f')&&typeof _0x125370['limit']===_0xf28c('0x2f');var _0x2d0c34=_0x5cafa6['count'];var _0x36446b=_0x11d470?0x0:_0x125370['offset'];var _0xdd9f90=_0x11d470?_0x5cafa6['count']:_0x125370[_0xf28c('0x2e')]+_0x125370[_0xf28c('0x30')];var _0x491eb0;if(_0xdd9f90>=_0x2d0c34){_0xdd9f90=_0x2d0c34;_0x491eb0=0xc8;}else{_0x491eb0=0xce;}_0x12d6c6[_0xf28c('0x2b')](_0x491eb0);return _0x12d6c6['set'](_0xf28c('0x31'),_0x36446b+'-'+_0xdd9f90+'/'+_0x2d0c34)[_0xf28c('0x2d')](_0x5cafa6);}return null;};}function patchUpdates(_0x16a0cb){return function(_0x316db5){try{jsonpatch[_0xf28c('0x32')](_0x316db5,_0x16a0cb,!![]);}catch(_0x198b94){return BPromise[_0xf28c('0x33')](_0x198b94);}return _0x316db5[_0xf28c('0x34')]();};}function saveUpdates(_0x329615,_0x3881aa){return function(_0x4440b7){if(_0x4440b7){return _0x4440b7[_0xf28c('0x35')](_0x329615)[_0xf28c('0x1f')](function(_0xc37a64){return _0xc37a64;});}return null;};}function removeEntity(_0x2fa17c,_0x2f5248){return function(_0x46d649){if(_0x46d649){return _0x46d649[_0xf28c('0x36')]()[_0xf28c('0x1f')](function(){_0x2fa17c[_0xf28c('0x2b')](0xcc)[_0xf28c('0x2c')]();});}};}function handleEntityNotFound(_0x416957,_0x4be834){return function(_0x3cdf6c){if(!_0x3cdf6c){_0x416957[_0xf28c('0x2a')](0x194);}return _0x3cdf6c;};}function handleError(_0x4b5591,_0x14f669){_0x14f669=_0x14f669||0x1f4;return function(_0x46686c){logger[_0xf28c('0x25')](_0x46686c[_0xf28c('0x37')]);if(_0x46686c[_0xf28c('0x38')]){delete _0x46686c[_0xf28c('0x38')];}_0x4b5591['status'](_0x14f669)[_0xf28c('0x39')](_0x46686c);};}exports[_0xf28c('0x3a')]=function(_0x22774f,_0x177edd){var _0x4dbe96={},_0x1c8158={},_0xed376e={'count':0x0,'rows':[]};var _0x1953c6=_[_0xf28c('0x3b')](db[_0xf28c('0x3c')][_0xf28c('0x3d')],function(_0x5d1603){return{'name':_0x5d1603[_0xf28c('0x3e')],'type':_0x5d1603['type'][_0xf28c('0x3f')]};});_0x1c8158['model']=_[_0xf28c('0x3b')](_0x1953c6,'name');_0x1c8158[_0xf28c('0x40')]=_[_0xf28c('0x41')](_0x22774f[_0xf28c('0x40')]);_0x1c8158['filters']=_[_0xf28c('0x42')](_0x1c8158[_0xf28c('0x43')],_0x1c8158['query']);_0x4dbe96[_0xf28c('0x44')]=_[_0xf28c('0x42')](_0x1c8158[_0xf28c('0x43')],qs['fields'](_0x22774f[_0xf28c('0x40')][_0xf28c('0x45')]));_0x4dbe96['attributes']=_0x4dbe96[_0xf28c('0x44')][_0xf28c('0x46')]?_0x4dbe96[_0xf28c('0x44')]:_0x1c8158[_0xf28c('0x43')];if(!_0x22774f[_0xf28c('0x40')][_0xf28c('0x47')](_0xf28c('0x48'))){_0x4dbe96[_0xf28c('0x30')]=qs[_0xf28c('0x30')](_0x22774f[_0xf28c('0x40')]['limit']);_0x4dbe96[_0xf28c('0x2e')]=qs[_0xf28c('0x2e')](_0x22774f[_0xf28c('0x40')][_0xf28c('0x2e')]);}_0x4dbe96[_0xf28c('0x49')]=qs[_0xf28c('0x4a')](_0x22774f[_0xf28c('0x40')][_0xf28c('0x4a')]);_0x4dbe96[_0xf28c('0x4b')]=qs[_0xf28c('0x4c')](_[_0xf28c('0x4d')](_0x22774f[_0xf28c('0x40')],_0x1c8158[_0xf28c('0x4c')]),_0x1953c6);if(_0x22774f[_0xf28c('0x40')][_0xf28c('0x4e')]){_0x4dbe96[_0xf28c('0x4b')]=_['merge'](_0x4dbe96[_0xf28c('0x4b')],{'$or':_['map'](_0x1953c6,function(_0x25524a){if(_0x25524a[_0xf28c('0x4f')]!=='VIRTUAL'){var _0x4a7d4a={};_0x4a7d4a[_0x25524a[_0xf28c('0x38')]]={'$like':'%'+_0x22774f['query'][_0xf28c('0x4e')]+'%'};return _0x4a7d4a;}})});}_0x4dbe96=_[_0xf28c('0x50')]({},_0x4dbe96,_0x22774f['options']);var _0x1a0e6e={'where':_0x4dbe96[_0xf28c('0x4b')]};return db[_0xf28c('0x3c')][_0xf28c('0x51')](_0x1a0e6e)[_0xf28c('0x1f')](function(_0x366fb0){_0xed376e[_0xf28c('0x51')]=_0x366fb0;if(_0x22774f['query']['includeAll']){_0x4dbe96[_0xf28c('0x52')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x4dbe96);})[_0xf28c('0x1f')](function(_0x1bfabd){_0xed376e[_0xf28c('0x53')]=_0x1bfabd;return _0xed376e;})[_0xf28c('0x1f')](respondWithFilteredResult(_0x177edd,_0x4dbe96))[_0xf28c('0x29')](handleError(_0x177edd,null));};exports[_0xf28c('0x54')]=function(_0x495093,_0x2a1813){var _0x48618e={'raw':!![],'where':{'id':_0x495093[_0xf28c('0x55')]['id']}},_0x36e253={};_0x36e253[_0xf28c('0x43')]=_[_0xf28c('0x41')](db['OpenchannelMessage'][_0xf28c('0x3d')]);_0x36e253[_0xf28c('0x40')]=_['keys'](_0x495093[_0xf28c('0x40')]);_0x36e253['filters']=_[_0xf28c('0x42')](_0x36e253[_0xf28c('0x43')],_0x36e253['query']);_0x48618e[_0xf28c('0x44')]=_[_0xf28c('0x42')](_0x36e253[_0xf28c('0x43')],qs[_0xf28c('0x45')](_0x495093['query']['fields']));_0x48618e[_0xf28c('0x44')]=_0x48618e['attributes']['length']?_0x48618e[_0xf28c('0x44')]:_0x36e253[_0xf28c('0x43')];if(_0x495093[_0xf28c('0x40')][_0xf28c('0x56')]){_0x48618e['include']=[{'all':!![]}];}_0x48618e=_['merge']({},_0x48618e,_0x495093[_0xf28c('0x57')]);return db[_0xf28c('0x3c')][_0xf28c('0x58')](_0x48618e)['then'](handleEntityNotFound(_0x2a1813,null))['then'](respondWithResult(_0x2a1813,null))[_0xf28c('0x29')](handleError(_0x2a1813,null));};exports[_0xf28c('0x59')]=function(_0x1a38a5,_0x43cd86){return db[_0xf28c('0x3c')]['create'](_0x1a38a5['body'],{})[_0xf28c('0x1f')](respondWithResult(_0x43cd86,0xc9))[_0xf28c('0x29')](handleError(_0x43cd86,null));};exports[_0xf28c('0x35')]=function(_0xef34a8,_0x434d60){if(_0xef34a8[_0xf28c('0x5a')]['id']){delete _0xef34a8[_0xf28c('0x5a')]['id'];}return db[_0xf28c('0x3c')]['find']({'where':{'id':_0xef34a8[_0xf28c('0x55')]['id']}})[_0xf28c('0x1f')](handleEntityNotFound(_0x434d60,null))[_0xf28c('0x1f')](saveUpdates(_0xef34a8[_0xf28c('0x5a')],null))[_0xf28c('0x1f')](respondWithResult(_0x434d60,null))[_0xf28c('0x29')](handleError(_0x434d60,null));};exports[_0xf28c('0x36')]=function(_0x435197,_0xa422f4){return db[_0xf28c('0x3c')][_0xf28c('0x58')]({'where':{'id':_0x435197[_0xf28c('0x55')]['id']}})[_0xf28c('0x1f')](handleEntityNotFound(_0xa422f4,null))[_0xf28c('0x1f')](removeEntity(_0xa422f4,null))['catch'](handleError(_0xa422f4,null));};exports[_0xf28c('0x5b')]=function(_0x4142b5,_0x1078a6){return db[_0xf28c('0x3c')][_0xf28c('0x5b')]()[_0xf28c('0x1f')](respondWithResult(_0x1078a6,null))[_0xf28c('0x29')](handleError(_0x1078a6,null));};var interaction_log=require(_0xf28c('0x13'))(_0xf28c('0x5c'));exports[_0xf28c('0x5d')]=function(_0x2cbc15,_0x2de022,_0x5d8c72){var _0x25f68d={'agent':{},'channel':_0xf28c('0x5e')};if(_0x2cbc15[_0xf28c('0x5a')]['id']){delete _0x2cbc15['body']['id'];}_0x2cbc15['body']['read']=!![];_0x2cbc15[_0xf28c('0x5a')][_0xf28c('0x5f')]=moment()[_0xf28c('0x60')](_0xf28c('0x61'));_0x2cbc15[_0xf28c('0x5a')]['UserId']=_0x2cbc15['body'][_0xf28c('0x62')]||_0x2cbc15[_0xf28c('0x63')]['id'];_0x25f68d[_0xf28c('0x64')]['id']=_0x2cbc15[_0xf28c('0x5a')][_0xf28c('0x62')];return db['OpenchannelMessage']['find']({'where':{'id':_0x2cbc15['params']['id'],'UserId':null}})[_0xf28c('0x1f')](handleEntityNotFound(_0x2de022,null))[_0xf28c('0x1f')](saveUpdates(_0x2cbc15['body'],null))['then'](function(_0x7e738){if(_0x7e738){_0x25f68d[_0xf28c('0x27')]=_0x7e738[_0xf28c('0x65')]({'plain':!![]});return db[_0xf28c('0x66')][_0xf28c('0x58')]({'where':{'id':_0x7e738['OpenchannelInteractionId']}});}return null;})[_0xf28c('0x1f')](handleEntityNotFound(_0x2de022,null))[_0xf28c('0x1f')](function(_0x25e857){if(_0x25e857){return _0x25e857['update']({'UserId':_0x2cbc15[_0xf28c('0x5a')][_0xf28c('0x62')],'read1stAt':_[_0xf28c('0x67')](_0x25e857[_0xf28c('0x68')])?moment()['format'](_0xf28c('0x61')):undefined});}return null;})[_0xf28c('0x1f')](function(_0x3b0854){if(_0x3b0854){_0x25f68d[_0xf28c('0x69')]=_0x3b0854[_0xf28c('0x65')]({'plain':!![]});interaction_log[_0xf28c('0x28')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2cbc15[_0xf28c('0x63')]['id'],_0x2cbc15[_0xf28c('0x63')][_0xf28c('0x38')],_0x2cbc15[_0xf28c('0x63')][_0xf28c('0x6a')],_0x25f68d[_0xf28c('0x69')]['id'],_0x2cbc15[_0xf28c('0x5a')]?JSON[_0xf28c('0x24')](_0x2cbc15[_0xf28c('0x5a')]):_0xf28c('0x6b'));return respondWithRpcPromise('AcceptMessage',_0xf28c('0x6c'),_0x25f68d);}return null;})[_0xf28c('0x1f')](function(_0x44ecb4){var _0x2fc39f=_0xf28c('0x6d')+_0x44ecb4[_0xf28c('0x27')][_0xf28c('0x6e')];return db[_0xf28c('0x6f')][_0xf28c('0x40')](_0x2fc39f,{'type':db['Sequelize']['QueryTypes'][_0xf28c('0x70')],'raw':!![]})['then'](function(_0x102a5e){return _0x102a5e;});})[_0xf28c('0x1f')](function(_0x25835e){if(_0x25835e){_0x25f68d[_0xf28c('0x27')][_0xf28c('0x71')]=_0x25835e[0x0];if(!_0x2cbc15[_0xf28c('0x5a')]['UserId'])return;return db[_0xf28c('0x72')][_0xf28c('0x58')]({'where':{'id':_0x2cbc15[_0xf28c('0x5a')][_0xf28c('0x62')],'role':_0xf28c('0x64')},'attributes':['id',_0xf28c('0x38'),_0xf28c('0x73'),_0xf28c('0x74'),'internal'],'raw':!![]});}return null;})[_0xf28c('0x1f')](function(_0x4bb882){if(!_0x4bb882)return null;_0x25f68d['message']['agent']=_0x4bb882;return _0x25f68d;})[_0xf28c('0x1f')](function(_0x41a06b){if(_0x41a06b){if(_0x2cbc15['body'][_0xf28c('0x75')]){_0x25f68d['message']['interface']=util[_0xf28c('0x60')](_0xf28c('0x76'),_0x2cbc15[_0xf28c('0x63')][_0xf28c('0x38')]);_0x25f68d[_0xf28c('0x27')]['channel']=_0x25f68d[_0xf28c('0x77')];_0x25f68d[_0xf28c('0x27')][_0xf28c('0x78')]=_0x25f68d[_0xf28c('0x77')];_0x25f68d[_0xf28c('0x27')][_0xf28c('0x79')]=_0xf28c('0x5d');return respondWithRpcPromise(_0xf28c('0x7a'),'EventManager',{'event':_0xf28c('0x7b'),'message':_0x25f68d['message']},client9002)['then'](function(){return _0x25f68d;});}return _0x25f68d;}return null;})['then'](respondWithResult(_0x2de022,null))['catch'](handleError(_0x2de022,null));};var interaction_log=require(_0xf28c('0x13'))('openchannel-interactions');exports['reject']=function(_0x5e80b6,_0x34c64f,_0x2ec0a8){var _0x49f8b2={'agent':{},'channel':_0xf28c('0x5e')};if(_0x5e80b6[_0xf28c('0x5a')]['id']){delete _0x5e80b6[_0xf28c('0x5a')]['id'];}_0x5e80b6[_0xf28c('0x5a')][_0xf28c('0x62')]=_0x5e80b6[_0xf28c('0x5a')][_0xf28c('0x62')]||_0x5e80b6[_0xf28c('0x63')]['id'];_0x49f8b2[_0xf28c('0x64')]['id']=_0x5e80b6[_0xf28c('0x5a')][_0xf28c('0x62')];return db[_0xf28c('0x3c')][_0xf28c('0x58')]({'where':{'id':_0x5e80b6[_0xf28c('0x55')]['id'],'UserId':null}})[_0xf28c('0x1f')](handleEntityNotFound(_0x34c64f,null))[_0xf28c('0x1f')](function(_0x248035){if(_0x248035){_0x49f8b2['message']=_0x248035[_0xf28c('0x65')]({'plain':!![]});return db[_0xf28c('0x66')][_0xf28c('0x58')]({'where':{'id':_0x248035[_0xf28c('0x7c')]}});}return null;})[_0xf28c('0x1f')](handleEntityNotFound(_0x34c64f,null))[_0xf28c('0x1f')](function(_0x234ef7){if(_0x234ef7){_0x49f8b2['interaction']=_0x234ef7[_0xf28c('0x65')]({'plain':!![]});interaction_log[_0xf28c('0x28')](_0xf28c('0x7d'),_0x5e80b6[_0xf28c('0x63')]['id'],_0x5e80b6[_0xf28c('0x63')]['name'],_0x5e80b6[_0xf28c('0x63')]['role'],_0x49f8b2[_0xf28c('0x69')]['id'],_0x5e80b6[_0xf28c('0x5a')]?JSON[_0xf28c('0x24')](_0x5e80b6[_0xf28c('0x5a')]):_0xf28c('0x6b'));return respondWithRpcPromise(_0xf28c('0x7e'),_0xf28c('0x7f'),_0x49f8b2);}return null;})[_0xf28c('0x1f')](function(_0x2a4b9b){var _0xda251e=_0xf28c('0x6d')+_0x2a4b9b[_0xf28c('0x27')]['ContactId'];return db['sequelize'][_0xf28c('0x40')](_0xda251e,{'type':db[_0xf28c('0x80')]['QueryTypes'][_0xf28c('0x70')],'raw':!![]})[_0xf28c('0x1f')](function(_0x47bf0b){return _0x47bf0b;});})[_0xf28c('0x1f')](function(_0x25d215){if(_0x25d215){_0x49f8b2[_0xf28c('0x27')][_0xf28c('0x71')]=_0x25d215[0x0];if(!_0x5e80b6[_0xf28c('0x5a')][_0xf28c('0x62')])return;return db[_0xf28c('0x72')][_0xf28c('0x58')]({'where':{'id':_0x5e80b6[_0xf28c('0x5a')][_0xf28c('0x62')],'role':_0xf28c('0x64')},'attributes':['id','name',_0xf28c('0x73'),'email','internal'],'raw':!![]});}return null;})[_0xf28c('0x1f')](function(_0x4e8d69){if(!_0x4e8d69)return null;_0x49f8b2[_0xf28c('0x27')][_0xf28c('0x64')]=_0x4e8d69;return _0x49f8b2;})[_0xf28c('0x1f')](function(_0x28150d){if(_0x28150d){_0x28150d[_0xf28c('0x27')]['interface']=util[_0xf28c('0x60')]('SIP/%s',_0x5e80b6[_0xf28c('0x63')][_0xf28c('0x38')]);_0x28150d['message'][_0xf28c('0x77')]=_0x49f8b2['channel'];_0x28150d['message']['motionChannel']=_0x49f8b2[_0xf28c('0x77')];_0x28150d[_0xf28c('0x27')][_0xf28c('0x79')]='reject';respondWithRpcPromise('EventManager','EventManager',{'event':_0xf28c('0x81'),'message':_0x28150d[_0xf28c('0x27')]},client9002);return _0x49f8b2;}return null;})[_0xf28c('0x1f')](respondWithResult(_0x34c64f,null))[_0xf28c('0x29')](handleError(_0x34c64f,null));};
\ No newline at end of file
+var _0xe453=['AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','openchannel-interactions','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','event','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','bluebird','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','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','then','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','end','stack','name','index','OpenchannelMessage','rawAttributes','fieldName','key','map','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','rows','find','create','body','destroy','params','describe','accept','openchannel','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','OpenchannelInteractionId','read1stAt','interaction','get','info','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null'];(function(_0x29ecbc,_0x2929d9){var _0x5709b0=function(_0x277721){while(--_0x277721){_0x29ecbc['push'](_0x29ecbc['shift']());}};_0x5709b0(++_0x2929d9);}(_0xe453,0x97));var _0x3e45=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe453[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x3e45('0x0'));var rimraf=require(_0x3e45('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e45('0x2'));var rp=require(_0x3e45('0x3'));var moment=require('moment');var BPromise=require(_0x3e45('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3e45('0x5'));var sox=require(_0x3e45('0x6'));var csv=require(_0x3e45('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e45('0x8'));var _=require(_0x3e45('0x9'));var squel=require(_0x3e45('0xa'));var crypto=require(_0x3e45('0xb'));var jsforce=require(_0x3e45('0xc'));var deskjs=require(_0x3e45('0xd'));var toCsv=require(_0x3e45('0x7'));var querystring=require(_0x3e45('0xe'));var Papa=require(_0x3e45('0xf'));var Redis=require(_0x3e45('0x10'));var authService=require(_0x3e45('0x11'));var qs=require(_0x3e45('0x12'));var as=require(_0x3e45('0x13'));var hardwareService=require(_0x3e45('0x14'));var logger=require(_0x3e45('0x15'))(_0x3e45('0x16'));var utils=require(_0x3e45('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3e45('0x18'))['db'];config['redis']=_[_0x3e45('0x19')](config[_0x3e45('0x1a')],{'host':_0x3e45('0x1b'),'port':0x18eb});var socket=require(_0x3e45('0x1c'))(new Redis(config['redis']));require(_0x3e45('0x1d'))[_0x3e45('0x1e')](socket);var jayson=require(_0x3e45('0x1f'));var client=jayson[_0x3e45('0x20')][_0x3e45('0x21')]({'port':0x232c});var client9002=jayson[_0x3e45('0x20')][_0x3e45('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x293c3d,_0x3e0286,_0x10df45,_0x14cfc1){return new BPromise(function(_0x189e4e,_0x1cb6e9){var _0x2e59a8=_0x14cfc1||client;return _0x2e59a8['request'](_0x293c3d,_0x10df45)[_0x3e45('0x22')](function(_0x5d8589){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x3e0286,_0x3e45('0x23'));logger['debug'](_0x3e45('0x24'),_0x3e0286,'request\x20sent',JSON[_0x3e45('0x25')](_0x5d8589));if(_0x5d8589['error']){if(_0x5d8589[_0x3e45('0x26')]['code']===0x1f4){logger[_0x3e45('0x26')](_0x3e45('0x27'),_0x3e0286,_0x5d8589[_0x3e45('0x26')][_0x3e45('0x28')]);return _0x1cb6e9(_0x5d8589[_0x3e45('0x26')][_0x3e45('0x28')]);}logger['error'](_0x3e45('0x27'),_0x3e0286,_0x5d8589['error'][_0x3e45('0x28')]);return _0x189e4e(_0x5d8589[_0x3e45('0x26')]['message']);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x3e0286,'request\x20sent');_0x189e4e(_0x5d8589[_0x3e45('0x29')][_0x3e45('0x28')]);}})[_0x3e45('0x2a')](function(_0x3f08ea){logger[_0x3e45('0x26')](_0x3e45('0x27'),_0x3e0286,_0x3f08ea);_0x1cb6e9(_0x3f08ea);});});}function respondWithStatusCode(_0x2e5a65,_0x281c05){_0x281c05=_0x281c05||0xcc;return function(_0x459ed4){if(_0x459ed4){return _0x2e5a65[_0x3e45('0x2b')](_0x281c05);}return _0x2e5a65[_0x3e45('0x2c')](_0x281c05)['end']();};}function respondWithResult(_0x40cf98,_0x15e401){_0x15e401=_0x15e401||0xc8;return function(_0x1aef3a){if(_0x1aef3a){return _0x40cf98[_0x3e45('0x2c')](_0x15e401)[_0x3e45('0x2d')](_0x1aef3a);}};}function respondWithFilteredResult(_0x1982ff,_0x19f3b1){return function(_0x400bfb){if(_0x400bfb){var _0x59ba97=typeof _0x19f3b1[_0x3e45('0x2e')]===_0x3e45('0x2f')&&typeof _0x19f3b1[_0x3e45('0x30')]==='undefined';var _0x3d82d3=_0x400bfb['count'];var _0x4206c7=_0x59ba97?0x0:_0x19f3b1['offset'];var _0x4419e0=_0x59ba97?_0x400bfb[_0x3e45('0x31')]:_0x19f3b1[_0x3e45('0x2e')]+_0x19f3b1[_0x3e45('0x30')];var _0x4166a1;if(_0x4419e0>=_0x3d82d3){_0x4419e0=_0x3d82d3;_0x4166a1=0xc8;}else{_0x4166a1=0xce;}_0x1982ff['status'](_0x4166a1);return _0x1982ff[_0x3e45('0x32')](_0x3e45('0x33'),_0x4206c7+'-'+_0x4419e0+'/'+_0x3d82d3)[_0x3e45('0x2d')](_0x400bfb);}return null;};}function patchUpdates(_0x22ff51){return function(_0x59894f){try{jsonpatch[_0x3e45('0x34')](_0x59894f,_0x22ff51,!![]);}catch(_0x2c16f1){return BPromise[_0x3e45('0x35')](_0x2c16f1);}return _0x59894f[_0x3e45('0x36')]();};}function saveUpdates(_0x302dce,_0x58232f){return function(_0x52fd1a){if(_0x52fd1a){return _0x52fd1a['update'](_0x302dce)[_0x3e45('0x22')](function(_0x480090){return _0x480090;});}return null;};}function removeEntity(_0x11cf8e,_0x57a0a5){return function(_0x5d4f3e){if(_0x5d4f3e){return _0x5d4f3e['destroy']()['then'](function(){_0x11cf8e[_0x3e45('0x2c')](0xcc)[_0x3e45('0x37')]();});}};}function handleEntityNotFound(_0x1e9a77,_0x496c81){return function(_0x729542){if(!_0x729542){_0x1e9a77[_0x3e45('0x2b')](0x194);}return _0x729542;};}function handleError(_0x48b4b2,_0x1611ce){_0x1611ce=_0x1611ce||0x1f4;return function(_0x247abd){logger[_0x3e45('0x26')](_0x247abd[_0x3e45('0x38')]);if(_0x247abd[_0x3e45('0x39')]){delete _0x247abd['name'];}_0x48b4b2['status'](_0x1611ce)['send'](_0x247abd);};}exports[_0x3e45('0x3a')]=function(_0x48c001,_0x2407ad){var _0x56f237={},_0x3b9d96={},_0x41d36c={'count':0x0,'rows':[]};var _0x445a43=_['map'](db[_0x3e45('0x3b')][_0x3e45('0x3c')],function(_0x45f7f0){return{'name':_0x45f7f0[_0x3e45('0x3d')],'type':_0x45f7f0['type'][_0x3e45('0x3e')]};});_0x3b9d96['model']=_[_0x3e45('0x3f')](_0x445a43,_0x3e45('0x39'));_0x3b9d96[_0x3e45('0x40')]=_[_0x3e45('0x41')](_0x48c001[_0x3e45('0x40')]);_0x3b9d96[_0x3e45('0x42')]=_['intersection'](_0x3b9d96[_0x3e45('0x43')],_0x3b9d96[_0x3e45('0x40')]);_0x56f237[_0x3e45('0x44')]=_[_0x3e45('0x45')](_0x3b9d96[_0x3e45('0x43')],qs[_0x3e45('0x46')](_0x48c001[_0x3e45('0x40')][_0x3e45('0x46')]));_0x56f237['attributes']=_0x56f237[_0x3e45('0x44')][_0x3e45('0x47')]?_0x56f237[_0x3e45('0x44')]:_0x3b9d96[_0x3e45('0x43')];if(!_0x48c001['query']['hasOwnProperty'](_0x3e45('0x48'))){_0x56f237[_0x3e45('0x30')]=qs[_0x3e45('0x30')](_0x48c001[_0x3e45('0x40')][_0x3e45('0x30')]);_0x56f237[_0x3e45('0x2e')]=qs['offset'](_0x48c001[_0x3e45('0x40')][_0x3e45('0x2e')]);}_0x56f237[_0x3e45('0x49')]=qs[_0x3e45('0x4a')](_0x48c001[_0x3e45('0x40')][_0x3e45('0x4a')]);_0x56f237[_0x3e45('0x4b')]=qs[_0x3e45('0x42')](_['pick'](_0x48c001[_0x3e45('0x40')],_0x3b9d96[_0x3e45('0x42')]),_0x445a43);if(_0x48c001[_0x3e45('0x40')]['filter']){_0x56f237[_0x3e45('0x4b')]=_[_0x3e45('0x4c')](_0x56f237[_0x3e45('0x4b')],{'$or':_[_0x3e45('0x3f')](_0x445a43,function(_0x4a7a49){if(_0x4a7a49[_0x3e45('0x4d')]!==_0x3e45('0x4e')){var _0x34db1e={};_0x34db1e[_0x4a7a49[_0x3e45('0x39')]]={'$like':'%'+_0x48c001['query'][_0x3e45('0x4f')]+'%'};return _0x34db1e;}})});}_0x56f237=_[_0x3e45('0x4c')]({},_0x56f237,_0x48c001[_0x3e45('0x50')]);var _0x1c4703={'where':_0x56f237['where']};return db[_0x3e45('0x3b')]['count'](_0x1c4703)['then'](function(_0x4cf62f){_0x41d36c[_0x3e45('0x31')]=_0x4cf62f;if(_0x48c001[_0x3e45('0x40')][_0x3e45('0x51')]){_0x56f237[_0x3e45('0x52')]=[{'all':!![]}];}return db[_0x3e45('0x3b')]['findAll'](_0x56f237);})[_0x3e45('0x22')](function(_0x267cba){_0x41d36c[_0x3e45('0x53')]=_0x267cba;return _0x41d36c;})[_0x3e45('0x22')](respondWithFilteredResult(_0x2407ad,_0x56f237))[_0x3e45('0x2a')](handleError(_0x2407ad,null));};exports['show']=function(_0x36b6ff,_0x2ea707){var _0x2cf963={'raw':!![],'where':{'id':_0x36b6ff['params']['id']}},_0x22ec6d={};_0x22ec6d[_0x3e45('0x43')]=_[_0x3e45('0x41')](db[_0x3e45('0x3b')][_0x3e45('0x3c')]);_0x22ec6d['query']=_[_0x3e45('0x41')](_0x36b6ff[_0x3e45('0x40')]);_0x22ec6d['filters']=_[_0x3e45('0x45')](_0x22ec6d[_0x3e45('0x43')],_0x22ec6d[_0x3e45('0x40')]);_0x2cf963[_0x3e45('0x44')]=_[_0x3e45('0x45')](_0x22ec6d[_0x3e45('0x43')],qs[_0x3e45('0x46')](_0x36b6ff[_0x3e45('0x40')][_0x3e45('0x46')]));_0x2cf963[_0x3e45('0x44')]=_0x2cf963[_0x3e45('0x44')][_0x3e45('0x47')]?_0x2cf963[_0x3e45('0x44')]:_0x22ec6d[_0x3e45('0x43')];if(_0x36b6ff['query'][_0x3e45('0x51')]){_0x2cf963['include']=[{'all':!![]}];}_0x2cf963=_[_0x3e45('0x4c')]({},_0x2cf963,_0x36b6ff[_0x3e45('0x50')]);return db[_0x3e45('0x3b')][_0x3e45('0x54')](_0x2cf963)[_0x3e45('0x22')](handleEntityNotFound(_0x2ea707,null))[_0x3e45('0x22')](respondWithResult(_0x2ea707,null))[_0x3e45('0x2a')](handleError(_0x2ea707,null));};exports[_0x3e45('0x55')]=function(_0x364662,_0x3f3212){return db['OpenchannelMessage'][_0x3e45('0x55')](_0x364662[_0x3e45('0x56')],{})[_0x3e45('0x22')](respondWithResult(_0x3f3212,0xc9))[_0x3e45('0x2a')](handleError(_0x3f3212,null));};exports['update']=function(_0x1c72ff,_0x765fb4){if(_0x1c72ff[_0x3e45('0x56')]['id']){delete _0x1c72ff[_0x3e45('0x56')]['id'];}return db[_0x3e45('0x3b')][_0x3e45('0x54')]({'where':{'id':_0x1c72ff['params']['id']}})[_0x3e45('0x22')](handleEntityNotFound(_0x765fb4,null))[_0x3e45('0x22')](saveUpdates(_0x1c72ff[_0x3e45('0x56')],null))['then'](respondWithResult(_0x765fb4,null))[_0x3e45('0x2a')](handleError(_0x765fb4,null));};exports[_0x3e45('0x57')]=function(_0x13a36a,_0x231266){return db[_0x3e45('0x3b')][_0x3e45('0x54')]({'where':{'id':_0x13a36a[_0x3e45('0x58')]['id']}})[_0x3e45('0x22')](handleEntityNotFound(_0x231266,null))[_0x3e45('0x22')](removeEntity(_0x231266,null))[_0x3e45('0x2a')](handleError(_0x231266,null));};exports[_0x3e45('0x59')]=function(_0x185507,_0x461b1a){return db['OpenchannelMessage']['describe']()[_0x3e45('0x22')](respondWithResult(_0x461b1a,null))['catch'](handleError(_0x461b1a,null));};var interaction_log=require(_0x3e45('0x15'))('openchannel-interactions');exports[_0x3e45('0x5a')]=function(_0xc1dba0,_0x88725,_0x11f13a){var _0xbd6590={'agent':{},'channel':_0x3e45('0x5b')};if(_0xc1dba0[_0x3e45('0x56')]['id']){delete _0xc1dba0['body']['id'];}_0xc1dba0[_0x3e45('0x56')]['read']=!![];_0xc1dba0[_0x3e45('0x56')]['readAt']=moment()[_0x3e45('0x5c')](_0x3e45('0x5d'));_0xc1dba0[_0x3e45('0x56')]['UserId']=_0xc1dba0[_0x3e45('0x56')][_0x3e45('0x5e')]||_0xc1dba0[_0x3e45('0x5f')]['id'];_0xbd6590[_0x3e45('0x60')]['id']=_0xc1dba0[_0x3e45('0x56')]['UserId'];return db[_0x3e45('0x3b')][_0x3e45('0x54')]({'where':{'id':_0xc1dba0['params']['id'],'UserId':null}})[_0x3e45('0x22')](handleEntityNotFound(_0x88725,null))[_0x3e45('0x22')](saveUpdates(_0xc1dba0['body'],null))[_0x3e45('0x22')](function(_0x3e42bb){if(_0x3e42bb){_0xbd6590['message']=_0x3e42bb['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x3e45('0x54')]({'where':{'id':_0x3e42bb[_0x3e45('0x61')]}});}return null;})[_0x3e45('0x22')](handleEntityNotFound(_0x88725,null))['then'](function(_0x3116ae){if(_0x3116ae){return _0x3116ae['update']({'UserId':_0xc1dba0[_0x3e45('0x56')][_0x3e45('0x5e')],'read1stAt':_['isNil'](_0x3116ae[_0x3e45('0x62')])?moment()[_0x3e45('0x5c')](_0x3e45('0x5d')):undefined});}return null;})['then'](function(_0x1f8e9f){if(_0x1f8e9f){_0xbd6590[_0x3e45('0x63')]=_0x1f8e9f[_0x3e45('0x64')]({'plain':!![]});interaction_log[_0x3e45('0x65')](_0x3e45('0x66'),_0xc1dba0[_0x3e45('0x5f')]['id'],_0xc1dba0[_0x3e45('0x5f')][_0x3e45('0x39')],_0xc1dba0[_0x3e45('0x5f')][_0x3e45('0x67')],_0xbd6590[_0x3e45('0x63')]['id'],_0xc1dba0['body']?JSON[_0x3e45('0x25')](_0xc1dba0[_0x3e45('0x56')]):_0x3e45('0x68'));return respondWithRpcPromise(_0x3e45('0x69'),'acceptMessage',_0xbd6590);}return null;})[_0x3e45('0x22')](function(_0x3f265b){var _0x1a0e01=_0x3e45('0x6a')+_0x3f265b[_0x3e45('0x28')][_0x3e45('0x6b')];return db[_0x3e45('0x6c')]['query'](_0x1a0e01,{'type':db[_0x3e45('0x6d')][_0x3e45('0x6e')][_0x3e45('0x6f')],'raw':!![]})[_0x3e45('0x22')](function(_0x3fbb6c){return _0x3fbb6c;});})[_0x3e45('0x22')](function(_0x5cb051){if(_0x5cb051){_0xbd6590[_0x3e45('0x28')][_0x3e45('0x70')]=_0x5cb051[0x0];if(!_0xc1dba0[_0x3e45('0x56')][_0x3e45('0x5e')])return;return db[_0x3e45('0x71')]['find']({'where':{'id':_0xc1dba0[_0x3e45('0x56')][_0x3e45('0x5e')],'role':_0x3e45('0x60')},'attributes':['id','name',_0x3e45('0x72'),_0x3e45('0x73'),'internal'],'raw':!![]});}return null;})[_0x3e45('0x22')](function(_0x55d708){if(!_0x55d708)return null;_0xbd6590['message'][_0x3e45('0x60')]=_0x55d708;return _0xbd6590;})['then'](function(_0x5ed828){if(_0x5ed828){if(_0xc1dba0['body'][_0x3e45('0x74')]){_0xbd6590['message'][_0x3e45('0x75')]=util[_0x3e45('0x5c')](_0x3e45('0x76'),_0xc1dba0[_0x3e45('0x5f')]['name']);_0xbd6590[_0x3e45('0x28')][_0x3e45('0x77')]=_0xbd6590[_0x3e45('0x77')];_0xbd6590[_0x3e45('0x28')][_0x3e45('0x78')]=_0xbd6590[_0x3e45('0x77')];_0xbd6590[_0x3e45('0x28')]['event']=_0x3e45('0x5a');return respondWithRpcPromise(_0x3e45('0x79'),_0x3e45('0x79'),{'event':_0x3e45('0x7a'),'message':_0xbd6590[_0x3e45('0x28')]},client9002)[_0x3e45('0x22')](function(){return _0xbd6590;});}return _0xbd6590;}return null;})[_0x3e45('0x22')](respondWithResult(_0x88725,null))[_0x3e45('0x2a')](handleError(_0x88725,null));};var interaction_log=require('../../config/logger')(_0x3e45('0x7b'));exports[_0x3e45('0x35')]=function(_0xf18552,_0x105f54,_0x56721e){var _0xd3cf85={'agent':{},'channel':_0x3e45('0x5b')};if(_0xf18552[_0x3e45('0x56')]['id']){delete _0xf18552['body']['id'];}_0xf18552[_0x3e45('0x56')][_0x3e45('0x5e')]=_0xf18552[_0x3e45('0x56')][_0x3e45('0x5e')]||_0xf18552[_0x3e45('0x5f')]['id'];_0xd3cf85[_0x3e45('0x60')]['id']=_0xf18552[_0x3e45('0x56')][_0x3e45('0x5e')];return db[_0x3e45('0x3b')][_0x3e45('0x54')]({'where':{'id':_0xf18552[_0x3e45('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x105f54,null))[_0x3e45('0x22')](function(_0x1d401d){if(_0x1d401d){_0xd3cf85['message']=_0x1d401d[_0x3e45('0x64')]({'plain':!![]});return db['OpenchannelInteraction'][_0x3e45('0x54')]({'where':{'id':_0x1d401d[_0x3e45('0x61')]}});}return null;})[_0x3e45('0x22')](handleEntityNotFound(_0x105f54,null))[_0x3e45('0x22')](function(_0x2389ca){if(_0x2389ca){_0xd3cf85[_0x3e45('0x63')]=_0x2389ca[_0x3e45('0x64')]({'plain':!![]});interaction_log['info'](_0x3e45('0x7c'),_0xf18552[_0x3e45('0x5f')]['id'],_0xf18552[_0x3e45('0x5f')]['name'],_0xf18552[_0x3e45('0x5f')]['role'],_0xd3cf85[_0x3e45('0x63')]['id'],_0xf18552[_0x3e45('0x56')]?JSON[_0x3e45('0x25')](_0xf18552['body']):'null');return respondWithRpcPromise('RejectMessage',_0x3e45('0x7d'),_0xd3cf85);}return null;})['then'](function(_0x22aee7){var _0x2e2ffd=_0x3e45('0x6a')+_0x22aee7[_0x3e45('0x28')]['ContactId'];return db[_0x3e45('0x6c')][_0x3e45('0x40')](_0x2e2ffd,{'type':db[_0x3e45('0x6d')]['QueryTypes'][_0x3e45('0x6f')],'raw':!![]})[_0x3e45('0x22')](function(_0x51b8ec){return _0x51b8ec;});})[_0x3e45('0x22')](function(_0x282395){if(_0x282395){_0xd3cf85[_0x3e45('0x28')][_0x3e45('0x70')]=_0x282395[0x0];if(!_0xf18552['body'][_0x3e45('0x5e')])return;return db[_0x3e45('0x71')]['find']({'where':{'id':_0xf18552['body'][_0x3e45('0x5e')],'role':_0x3e45('0x60')},'attributes':['id','name',_0x3e45('0x72'),_0x3e45('0x73'),'internal'],'raw':!![]});}return null;})['then'](function(_0x162413){if(!_0x162413)return null;_0xd3cf85[_0x3e45('0x28')]['agent']=_0x162413;return _0xd3cf85;})['then'](function(_0x3b967b){if(_0x3b967b){_0x3b967b[_0x3e45('0x28')][_0x3e45('0x75')]=util[_0x3e45('0x5c')]('SIP/%s',_0xf18552['user'][_0x3e45('0x39')]);_0x3b967b['message'][_0x3e45('0x77')]=_0xd3cf85['channel'];_0x3b967b[_0x3e45('0x28')][_0x3e45('0x78')]=_0xd3cf85['channel'];_0x3b967b[_0x3e45('0x28')][_0x3e45('0x7e')]=_0x3e45('0x35');respondWithRpcPromise(_0x3e45('0x79'),'EventManager',{'event':_0x3e45('0x7f'),'message':_0x3b967b[_0x3e45('0x28')]},client9002);return _0xd3cf85;}return null;})[_0x3e45('0x22')](respondWithResult(_0x105f54,null))[_0x3e45('0x2a')](handleError(_0x105f54,null));};
\ No newline at end of file
index 2c3abb2..2dd12c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaba1=['../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4350c2,_0x112f3c){var _0x8b6406=function(_0x49e845){while(--_0x49e845){_0x4350c2['push'](_0x4350c2['shift']());}};_0x8b6406(++_0x112f3c);}(_0xaba1,0x118));var _0x1aba=function(_0x4585ba,_0x2874da){_0x4585ba=_0x4585ba-0x0;var _0x29cc2f=_0xaba1[_0x4585ba];return _0x29cc2f;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x1aba('0x0'))['db'][_0x1aba('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x1aba('0x2')](0x0);var events={'afterCreate':_0x1aba('0x3'),'afterUpdate':_0x1aba('0x4'),'afterDestroy':_0x1aba('0x5')};function emitEvent(_0x22fdfb){return function(_0x333e06,_0x28f7a6,_0x52a8a4){OpenchannelMessageEvents['emit'](_0x22fdfb+':'+_0x333e06['id'],_0x333e06);OpenchannelMessageEvents[_0x1aba('0x6')](_0x22fdfb,_0x333e06);_0x52a8a4(null);};}for(var e in events){if(events[_0x1aba('0x7')](e)){var event=events[e];OpenchannelMessage[_0x1aba('0x8')](e,emitEvent(event));}}module[_0x1aba('0x9')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xf339=['../../mysqldb','setMaxListeners','save','update','remove','hook','exports','events'];(function(_0xd8a8af,_0x1e93f0){var _0x5b7278=function(_0x458800){while(--_0x458800){_0xd8a8af['push'](_0xd8a8af['shift']());}};_0x5b7278(++_0x1e93f0);}(_0xf339,0x157));var _0x9f33=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xf339[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0x9f33('0x0'));var OpenchannelMessage=require(_0x9f33('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x9f33('0x2')](0x0);var events={'afterCreate':_0x9f33('0x3'),'afterUpdate':_0x9f33('0x4'),'afterDestroy':_0x9f33('0x5')};function emitEvent(_0x12cfd8){return function(_0x1b4e8f,_0x138bb2,_0x3c766c){OpenchannelMessageEvents['emit'](_0x12cfd8+':'+_0x1b4e8f['id'],_0x1b4e8f);OpenchannelMessageEvents['emit'](_0x12cfd8,_0x1b4e8f);_0x3c766c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0x9f33('0x6')](e,emitEvent(event));}}module[_0x9f33('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 72414f3..02f5fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb5=['OpenchannelAccount','find','OpenchannelAccountId','Interactions','keys','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','Contact','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','define','OpenchannelMessage','fti_openchannel_messages','body','FULLTEXT','models','toLowerCase','out','secret','UserId','OpenchannelInteraction','findOne','then','update','direction','catch','error','CmContact'];(function(_0x319054,_0x5ca5d6){var _0x330158=function(_0x5d7a99){while(--_0x5d7a99){_0x319054['push'](_0x319054['shift']());}};_0x330158(++_0x5ca5d6);}(_0x3fb5,0x149));var _0x53fb=function(_0x2ba101,_0x7bd3c7){_0x2ba101=_0x2ba101-0x0;var _0x4f6cb8=_0x3fb5[_0x2ba101];return _0x4f6cb8;};'use strict';var _=require(_0x53fb('0x0'));var util=require(_0x53fb('0x1'));var logger=require(_0x53fb('0x2'))(_0x53fb('0x3'));var moment=require(_0x53fb('0x4'));var BPromise=require(_0x53fb('0x5'));var rp=require(_0x53fb('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x53fb('0x7'));var config=require(_0x53fb('0x8'));var attributes=require(_0x53fb('0x9'));module['exports']=function(_0x3e0692,_0x16f0ea){return _0x3e0692[_0x53fb('0xa')](_0x53fb('0xb'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0x53fb('0xc'),'fields':[_0x53fb('0xd')],'type':_0x53fb('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1004f8,_0x5047f2,_0x5b0c32){var _0x27b878=_0x3e0692[_0x53fb('0xf')];var _0x2b9d0c=_0x1004f8['get']({'plain':!![]});if(_0x2b9d0c['direction'][_0x53fb('0x10')]()==='in'||_0x2b9d0c['direction'][_0x53fb('0x10')]()===_0x53fb('0x11')&&!_0x2b9d0c[_0x53fb('0x12')]&&!_['isNil'](_0x2b9d0c[_0x53fb('0x13')])){_0x27b878[_0x53fb('0x14')][_0x53fb('0x15')]({'where':{'id':_0x2b9d0c['OpenchannelInteractionId']}})[_0x53fb('0x16')](function(_0x52c4ae){if(_0x52c4ae){_0x52c4ae[_0x53fb('0x17')]({'lastMsgAt':_0x2b9d0c['createdAt'],'lastMsgDirection':_0x2b9d0c[_0x53fb('0x18')]['toLowerCase']()});}})[_0x53fb('0x19')](function(_0x2f6994){console[_0x53fb('0x1a')](_0x2f6994);});}if(_0x2b9d0c[_0x53fb('0x18')]==='out'&&!_0x2b9d0c[_0x53fb('0x12')]){var _0x348035;_0x27b878[_0x53fb('0x1b')]['describe']()[_0x53fb('0x16')](function(_0x5c8daa){return _0x27b878[_0x53fb('0x1c')][_0x53fb('0x1d')]({'where':{'id':_0x2b9d0c[_0x53fb('0x1e')]},'include':[{'model':_0x27b878[_0x53fb('0x14')],'as':_0x53fb('0x1f'),'where':{'id':_0x2b9d0c['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x27b878['CmContact'],'as':'Contact','attributes':_[_0x53fb('0x20')](_0x5c8daa)}]}]});})['then'](function(_0x4e933e){_0x348035=_0x4e933e['get']({'plain':!![]});if(_0x348035&&_0x348035['replyUri']){logger[_0x53fb('0x21')](_0x53fb('0x22'),_0x53fb('0x23'),util['format'](_0x53fb('0x24'),_0x2b9d0c['id'],_0x348035[_0x53fb('0x25')]));if(_0x348035[_0x53fb('0x1f')]&&_0x348035[_0x53fb('0x1f')][_0x53fb('0x26')]){_0x2b9d0c[_0x53fb('0x27')]=_[_0x53fb('0x28')](_0x348035[_0x53fb('0x1f')][0x0],_0x53fb('0x29'));_0x2b9d0c[_0x53fb('0x29')]=_0x348035[_0x53fb('0x1f')][0x0][_0x53fb('0x29')];}var _0x5047f2={'method':_0x53fb('0x2a'),'uri':encodeURI(_0x348035['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5047f2[_0x53fb('0x2b')]){case _0x53fb('0x2c'):_0x5047f2['qs']=_0x2b9d0c;break;case'POST':_0x5047f2[_0x53fb('0xd')]=_0x2b9d0c;break;}return rp(_0x5047f2)[_0x53fb('0x16')](function(_0x297399){logger[_0x53fb('0x21')](_0x53fb('0x22'),_0x53fb('0x23'),util['format'](_0x53fb('0x2d'),_0x2b9d0c['id'],_0x348035[_0x53fb('0x25')]));if(_0x297399[_0x53fb('0xd')][_0x53fb('0x2e')]&&_0x297399[_0x53fb('0xd')][_0x53fb('0x2e')]!=_0x2b9d0c[_0x53fb('0x27')][_0x53fb('0x2e')]){return _0x27b878[_0x53fb('0x14')][_0x53fb('0x17')]({'threadId':_0x297399[_0x53fb('0xd')][_0x53fb('0x2e')]},{'where':{'id':_0x2b9d0c['Interaction']['id']}});}else{return;}})['then'](function(){return _0x1004f8[_0x53fb('0x17')]({'read':!![]});})['catch'](function(_0x4fb1cc){logger[_0x53fb('0x1a')](_0x53fb('0x22'),'afterCreate',util[_0x53fb('0x2f')](_0x4fb1cc,{'showHidden':![],'depth':null}));_0x5b0c32();});}else{_0x5b0c32();}})[_0x53fb('0x30')](function(){_0x5b0c32();});}else{_0x5b0c32();}}},'charset':_0x53fb('0x31'),'collate':_0x53fb('0x32')});};
\ No newline at end of file
+var _0xeb90=['isNil','OpenchannelInteraction','OpenchannelInteractionId','createdAt','catch','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','get','replyUri','OpenchannelMessage,\x20%s,\x20%s','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','method','POST','body','then','info','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','error','inspect','finally','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','direction','toLowerCase','out','secret'];(function(_0x1591d4,_0x4ea3bd){var _0x4c46bb=function(_0x13b7e7){while(--_0x13b7e7){_0x1591d4['push'](_0x1591d4['shift']());}};_0x4c46bb(++_0x4ea3bd);}(_0xeb90,0x89));var _0x0eb9=function(_0x1e401c,_0x33fb4d){_0x1e401c=_0x1e401c-0x0;var _0x599214=_0xeb90[_0x1e401c];return _0x599214;};'use strict';var _=require('lodash');var util=require(_0x0eb9('0x0'));var logger=require(_0x0eb9('0x1'))(_0x0eb9('0x2'));var moment=require(_0x0eb9('0x3'));var BPromise=require(_0x0eb9('0x4'));var rp=require(_0x0eb9('0x5'));var fs=require('fs');var path=require(_0x0eb9('0x6'));var rimraf=require('rimraf');var config=require(_0x0eb9('0x7'));var attributes=require(_0x0eb9('0x8'));module[_0x0eb9('0x9')]=function(_0x25399b,_0x39c88c){return _0x25399b[_0x0eb9('0xa')](_0x0eb9('0xb'),attributes,{'tableName':_0x0eb9('0xc'),'paranoid':![],'indexes':[{'name':_0x0eb9('0xd'),'fields':['body'],'type':_0x0eb9('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4a2b95,_0x5eec84,_0x543951){var _0x2226bc=_0x25399b['models'];var _0x945314=_0x4a2b95['get']({'plain':!![]});if(_0x945314[_0x0eb9('0xf')][_0x0eb9('0x10')]()==='in'||_0x945314[_0x0eb9('0xf')][_0x0eb9('0x10')]()===_0x0eb9('0x11')&&!_0x945314[_0x0eb9('0x12')]&&!_[_0x0eb9('0x13')](_0x945314['UserId'])){_0x2226bc[_0x0eb9('0x14')]['findOne']({'where':{'id':_0x945314[_0x0eb9('0x15')]}})['then'](function(_0x233191){if(_0x233191){_0x233191['update']({'lastMsgAt':_0x945314[_0x0eb9('0x16')],'lastMsgDirection':_0x945314[_0x0eb9('0xf')][_0x0eb9('0x10')]()});}})[_0x0eb9('0x17')](function(_0x179c9c){console['error'](_0x179c9c);});}if(_0x945314[_0x0eb9('0xf')]===_0x0eb9('0x11')&&!_0x945314[_0x0eb9('0x12')]){var _0x4e4a41;_0x2226bc[_0x0eb9('0x18')][_0x0eb9('0x19')]()['then'](function(_0x379fe8){return _0x2226bc[_0x0eb9('0x1a')][_0x0eb9('0x1b')]({'where':{'id':_0x945314[_0x0eb9('0x1c')]},'include':[{'model':_0x2226bc[_0x0eb9('0x14')],'as':_0x0eb9('0x1d'),'where':{'id':_0x945314[_0x0eb9('0x15')]},'limit':0x1,'include':[{'model':_0x2226bc[_0x0eb9('0x18')],'as':_0x0eb9('0x1e'),'attributes':_[_0x0eb9('0x1f')](_0x379fe8)}]}]});})['then'](function(_0x2ff7ff){_0x4e4a41=_0x2ff7ff[_0x0eb9('0x20')]({'plain':!![]});if(_0x4e4a41&&_0x4e4a41[_0x0eb9('0x21')]){logger['info'](_0x0eb9('0x22'),'afterCreate',util['format'](_0x0eb9('0x23'),_0x945314['id'],_0x4e4a41[_0x0eb9('0x21')]));if(_0x4e4a41[_0x0eb9('0x1d')]&&_0x4e4a41[_0x0eb9('0x1d')][_0x0eb9('0x24')]){_0x945314[_0x0eb9('0x25')]=_[_0x0eb9('0x26')](_0x4e4a41[_0x0eb9('0x1d')][0x0],_0x0eb9('0x1e'));_0x945314['Contact']=_0x4e4a41[_0x0eb9('0x1d')][0x0][_0x0eb9('0x1e')];}var _0x5eec84={'method':'POST','uri':encodeURI(_0x4e4a41[_0x0eb9('0x21')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5eec84[_0x0eb9('0x27')]){case'GET':_0x5eec84['qs']=_0x945314;break;case _0x0eb9('0x28'):_0x5eec84[_0x0eb9('0x29')]=_0x945314;break;}return rp(_0x5eec84)[_0x0eb9('0x2a')](function(_0x4bb40c){logger[_0x0eb9('0x2b')](_0x0eb9('0x22'),_0x0eb9('0x2c'),util['format'](_0x0eb9('0x2d'),_0x945314['id'],_0x4e4a41[_0x0eb9('0x21')]));if(_0x4bb40c[_0x0eb9('0x29')][_0x0eb9('0x2e')]&&_0x4bb40c[_0x0eb9('0x29')]['threadId']!=_0x945314[_0x0eb9('0x25')][_0x0eb9('0x2e')]){return _0x2226bc[_0x0eb9('0x14')][_0x0eb9('0x2f')]({'threadId':_0x4bb40c[_0x0eb9('0x29')][_0x0eb9('0x2e')]},{'where':{'id':_0x945314[_0x0eb9('0x25')]['id']}});}else{return;}})['then'](function(){return _0x4a2b95[_0x0eb9('0x2f')]({'read':!![]});})[_0x0eb9('0x17')](function(_0x1dbf1e){logger[_0x0eb9('0x30')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0x0eb9('0x31')](_0x1dbf1e,{'showHidden':![],'depth':null}));_0x543951();});}else{_0x543951();}})[_0x0eb9('0x32')](function(){_0x543951();});}else{_0x543951();}}},'charset':'utf8mb4','collate':_0x0eb9('0x33')});};
\ No newline at end of file
index 6a5d74a..51c77c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x30e76b,_0x1d5115){var _0x15a73a=function(_0xe8717b){while(--_0xe8717b){_0x30e76b['push'](_0x30e76b['shift']());}};_0x15a73a(++_0x1d5115);}(_0xadb5,0xad));var _0x5adb=function(_0x39d801,_0x345ca5){_0x39d801=_0x39d801-0x0;var _0x57c953=_0xadb5[_0x39d801];return _0x57c953;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
+var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x4616e7,_0x505f88){var _0x38f22d=function(_0x27d26e){while(--_0x27d26e){_0x4616e7['push'](_0x4616e7['shift']());}};_0x38f22d(++_0x505f88);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4b03d3,_0x32f1d2){_0x4b03d3=_0x4b03d3-0x0;var _0x58a968=_0x0b0e[_0x4b03d3];return _0x58a968;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
index 1d4b839..a582c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aaa=['./openchannelMessage.events','emit','removeListener','register','length'];(function(_0x598d84,_0x4f0a6d){var _0x50010d=function(_0x151c27){while(--_0x151c27){_0x598d84['push'](_0x598d84['shift']());}};_0x50010d(++_0x4f0a6d);}(_0x5aaa,0xff));var _0xa5aa=function(_0x4ef666,_0x2d0e76){_0x4ef666=_0x4ef666-0x0;var _0x3bcba7=_0x5aaa[_0x4ef666];return _0x3bcba7;};'use strict';var OpenchannelMessageEvents=require(_0xa5aa('0x0'));var events=['save','remove','update'];function createListener(_0x59ccda,_0x4926c9){return function(_0x128d2a){_0x4926c9[_0xa5aa('0x1')](_0x59ccda,_0x128d2a);};}function removeListener(_0x473061,_0x54ca19){return function(){OpenchannelMessageEvents[_0xa5aa('0x2')](_0x473061,_0x54ca19);};}exports[_0xa5aa('0x3')]=function(_0x5e1865){for(var _0x21d216=0x0,_0x143817=events[_0xa5aa('0x4')];_0x21d216<_0x143817;_0x21d216++){var _0x2c0b72=events[_0x21d216];var _0x5574aa=createListener('openchannelMessage:'+_0x2c0b72,_0x5e1865);OpenchannelMessageEvents['on'](_0x2c0b72,_0x5574aa);}};
\ No newline at end of file
+var _0xcf71=['register','length','./openchannelMessage.events','save','remove','update','emit','removeListener'];(function(_0x42cc41,_0x3c8e8e){var _0x345142=function(_0x47912e){while(--_0x47912e){_0x42cc41['push'](_0x42cc41['shift']());}};_0x345142(++_0x3c8e8e);}(_0xcf71,0xba));var _0x1cf7=function(_0x8854f2,_0x79542c){_0x8854f2=_0x8854f2-0x0;var _0x38505d=_0xcf71[_0x8854f2];return _0x38505d;};'use strict';var OpenchannelMessageEvents=require(_0x1cf7('0x0'));var events=[_0x1cf7('0x1'),_0x1cf7('0x2'),_0x1cf7('0x3')];function createListener(_0x50d1a1,_0x32cb2f){return function(_0x409e6f){_0x32cb2f[_0x1cf7('0x4')](_0x50d1a1,_0x409e6f);};}function removeListener(_0x21307d,_0x11e462){return function(){OpenchannelMessageEvents[_0x1cf7('0x5')](_0x21307d,_0x11e462);};}exports[_0x1cf7('0x6')]=function(_0x20e097){for(var _0x314796=0x0,_0x45ee6b=events[_0x1cf7('0x7')];_0x314796<_0x45ee6b;_0x314796++){var _0x19b626=events[_0x314796];var _0x4f908a=createListener('openchannelMessage:'+_0x19b626,_0x20e097);OpenchannelMessageEvents['on'](_0x19b626,_0x4f908a);}};
\ No newline at end of file
index fa2e1ea..198f6b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc783=['destroy','removeTeams','removeAgents','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','/:id/teams','getAgents','post','create','addTeams','/:id/users','put','delete'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc783,0x108));var _0x3c78=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc783[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3c78('0x0'));var timeout=require(_0x3c78('0x1'));var express=require(_0x3c78('0x2'));var router=express[_0x3c78('0x3')]();var fs_extra=require(_0x3c78('0x4'));var auth=require(_0x3c78('0x5'));var interaction=require(_0x3c78('0x6'));var config=require('../../config/environment');var controller=require(_0x3c78('0x7'));router[_0x3c78('0x8')]('/',auth[_0x3c78('0x9')](),controller[_0x3c78('0xa')]);router['get']('/describe',auth[_0x3c78('0x9')](),controller[_0x3c78('0xb')]);router[_0x3c78('0x8')](_0x3c78('0xc'),auth[_0x3c78('0x9')](),controller['show']);router[_0x3c78('0x8')](_0x3c78('0xd'),auth['isAuthenticated'](),controller['getMembers']);router[_0x3c78('0x8')](_0x3c78('0xe'),auth[_0x3c78('0x9')](),controller['getTeams']);router[_0x3c78('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0x3c78('0xf')]);router[_0x3c78('0x10')]('/',auth['isAuthenticated'](),controller[_0x3c78('0x11')]);router[_0x3c78('0x10')](_0x3c78('0xe'),auth[_0x3c78('0x9')](),controller[_0x3c78('0x12')]);router['post'](_0x3c78('0x13'),auth['isAuthenticated'](),controller['addAgents']);router[_0x3c78('0x14')](_0x3c78('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x3c78('0x15')](_0x3c78('0xc'),auth[_0x3c78('0x9')](),controller[_0x3c78('0x16')]);router[_0x3c78('0x15')](_0x3c78('0xe'),auth[_0x3c78('0x9')](),controller[_0x3c78('0x17')]);router[_0x3c78('0x15')]('/:id/users',auth[_0x3c78('0x9')](),controller[_0x3c78('0x18')]);module[_0x3c78('0x19')]=router;
\ No newline at end of file
+var _0x6457=['get','isAuthenticated','index','describe','show','/:id/members','getMembers','/:id/teams','getTeams','post','create','addTeams','addAgents','put','update','/:id','removeTeams','delete','/:id/users','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0x6457,0xab));var _0x7645=function(_0x396ebd,_0x2b620b){_0x396ebd=_0x396ebd-0x0;var _0x42fbe2=_0x6457[_0x396ebd];return _0x42fbe2;};'use strict';var multer=require(_0x7645('0x0'));var util=require(_0x7645('0x1'));var path=require('path');var timeout=require(_0x7645('0x2'));var express=require(_0x7645('0x3'));var router=express[_0x7645('0x4')]();var fs_extra=require(_0x7645('0x5'));var auth=require(_0x7645('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7645('0x7'));var controller=require(_0x7645('0x8'));router[_0x7645('0x9')]('/',auth[_0x7645('0xa')](),controller[_0x7645('0xb')]);router[_0x7645('0x9')]('/describe',auth[_0x7645('0xa')](),controller[_0x7645('0xc')]);router[_0x7645('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x7645('0xd')]);router[_0x7645('0x9')](_0x7645('0xe'),auth[_0x7645('0xa')](),controller[_0x7645('0xf')]);router[_0x7645('0x9')](_0x7645('0x10'),auth['isAuthenticated'](),controller[_0x7645('0x11')]);router['get']('/:id/users',auth[_0x7645('0xa')](),controller['getAgents']);router[_0x7645('0x12')]('/',auth[_0x7645('0xa')](),controller[_0x7645('0x13')]);router['post'](_0x7645('0x10'),auth[_0x7645('0xa')](),controller[_0x7645('0x14')]);router[_0x7645('0x12')]('/:id/users',auth[_0x7645('0xa')](),controller[_0x7645('0x15')]);router[_0x7645('0x16')]('/:id',auth[_0x7645('0xa')](),controller[_0x7645('0x17')]);router['delete'](_0x7645('0x18'),auth[_0x7645('0xa')](),controller['destroy']);router['delete']('/:id/teams',auth[_0x7645('0xa')](),controller[_0x7645('0x19')]);router[_0x7645('0x1a')](_0x7645('0x1b'),auth[_0x7645('0xa')](),controller[_0x7645('0x1c')]);module[_0x7645('0x1d')]=router;
\ No newline at end of file
index 52a80a3..4e29d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c5=['beepall','roundrobin','sequelize','name','STRING','INTEGER','ENUM','rrmemory'];(function(_0x5eb9b5,_0x4445a9){var _0x307967=function(_0x25ac30){while(--_0x25ac30){_0x5eb9b5['push'](_0x5eb9b5['shift']());}};_0x307967(++_0x4445a9);}(_0x26c5,0x12a));var _0x526c=function(_0x32bb9b,_0x232e46){_0x32bb9b=_0x32bb9b-0x0;var _0x4e4562=_0x26c5[_0x32bb9b];return _0x4e4562;};'use strict';var Sequelize=require(_0x526c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x526c('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x526c('0x2')]},'timeout':{'type':Sequelize[_0x526c('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x526c('0x4')](_0x526c('0x5'),_0x526c('0x6'),_0x526c('0x7'))}};
\ No newline at end of file
+var _0x22e3=['sequelize','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x22e3,0x103));var _0x322e=function(_0x45bece,_0x419dfa){_0x45bece=_0x45bece-0x0;var _0x17b639=_0x22e3[_0x45bece];return _0x17b639;};'use strict';var Sequelize=require(_0x322e('0x0'));module['exports']={'name':{'type':Sequelize[_0x322e('0x1')],'unique':_0x322e('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x322e('0x1')]},'timeout':{'type':Sequelize[_0x322e('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x322e('0x4')](_0x322e('0x5'),_0x322e('0x6'),'roundrobin')}};
\ No newline at end of file
index 0f841c9..f2a042f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd28e=['key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','options','OpenchannelQueue','includeAll','rows','catch','params','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAll','User','updatedAt','%s/%s','SIP','openchannelPause','createdAt','getTeams','order','addTeams','ids','Team','Agents','online','voicePause','interface','transaction','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','includes','value','removeAgents','userOpenchannelQueue:remove','addAgents','omit','spread','userOpenchannelQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','sendStatus','status','end','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','get','OpenchannelQueues','UserProfileResource','destroy','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xd28e,0x14b));var _0xed28=function(_0x2b8f2b,_0x3a14d3){_0x2b8f2b=_0x2b8f2b-0x0;var _0x3649e1=_0xd28e[_0x2b8f2b];return _0x3649e1;};'use strict';var emlformat=require(_0xed28('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xed28('0x1'));var jsonpatch=require(_0xed28('0x2'));var rp=require(_0xed28('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xed28('0x4'));var util=require('util');var path=require(_0xed28('0x5'));var sox=require(_0xed28('0x6'));var csv=require(_0xed28('0x7'));var ejs=require(_0xed28('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xed28('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xed28('0xa'));var toCsv=require(_0xed28('0x7'));var querystring=require(_0xed28('0xb'));var Papa=require(_0xed28('0xc'));var Redis=require(_0xed28('0xd'));var authService=require(_0xed28('0xe'));var qs=require(_0xed28('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xed28('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xed28('0x11'));var config=require(_0xed28('0x12'));var licenseUtil=require(_0xed28('0x13'));var db=require('../../mysqldb')['db'];config[_0xed28('0x14')]=_[_0xed28('0x15')](config[_0xed28('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0xed28('0x16'))(new Redis(config[_0xed28('0x14')]));require('./openchannelQueue.socket')[_0xed28('0x17')](socket);function respondWithStatusCode(_0xcb1368,_0x120096){_0x120096=_0x120096||0xcc;return function(_0x4a57a7){if(_0x4a57a7){return _0xcb1368[_0xed28('0x18')](_0x120096);}return _0xcb1368[_0xed28('0x19')](_0x120096)[_0xed28('0x1a')]();};}function respondWithResult(_0x35d9e2,_0xcf3b67){_0xcf3b67=_0xcf3b67||0xc8;return function(_0x1b3c5d){if(_0x1b3c5d){return _0x35d9e2[_0xed28('0x19')](_0xcf3b67)['json'](_0x1b3c5d);}};}function respondWithFilteredResult(_0x25b27e,_0x13e5bc){return function(_0x5f2e1b){if(_0x5f2e1b){var _0x492c9=typeof _0x13e5bc['offset']===_0xed28('0x1b')&&typeof _0x13e5bc['limit']===_0xed28('0x1b');var _0x3331cb=_0x5f2e1b[_0xed28('0x1c')];var _0x3de8db=_0x492c9?0x0:_0x13e5bc['offset'];var _0x38b36f=_0x492c9?_0x5f2e1b['count']:_0x13e5bc['offset']+_0x13e5bc[_0xed28('0x1d')];var _0x3e3b0e;if(_0x38b36f>=_0x3331cb){_0x38b36f=_0x3331cb;_0x3e3b0e=0xc8;}else{_0x3e3b0e=0xce;}_0x25b27e[_0xed28('0x19')](_0x3e3b0e);return _0x25b27e[_0xed28('0x1e')](_0xed28('0x1f'),_0x3de8db+'-'+_0x38b36f+'/'+_0x3331cb)[_0xed28('0x20')](_0x5f2e1b);}return null;};}function patchUpdates(_0x38b112){return function(_0x8d194d){try{jsonpatch[_0xed28('0x21')](_0x8d194d,_0x38b112,!![]);}catch(_0x5a9812){return BPromise[_0xed28('0x22')](_0x5a9812);}return _0x8d194d[_0xed28('0x23')]();};}function saveUpdates(_0x4e0a1,_0x49880b){return function(_0x2e0b14){if(_0x2e0b14){return _0x2e0b14[_0xed28('0x24')](_0x4e0a1)['then'](function(_0x17fafb){return _0x17fafb;});}return null;};}function removeEntity(_0x1190b6,_0x37c7a0){return function(_0x65d3fd){if(_0x65d3fd){return _0x65d3fd['destroy']()[_0xed28('0x25')](function(){var _0xf416b4=_0x65d3fd[_0xed28('0x26')]({'plain':!![]});var _0xe73ac3=_0xed28('0x27');return db[_0xed28('0x28')][_0xed28('0x29')]({'where':{'type':_0xe73ac3,'resourceId':_0xf416b4['id']}})[_0xed28('0x25')](function(){return _0x65d3fd;});})[_0xed28('0x25')](function(){_0x1190b6[_0xed28('0x19')](0xcc)[_0xed28('0x1a')]();});}};}function handleEntityNotFound(_0x3118df,_0x2aa1e0){return function(_0x3726c5){if(!_0x3726c5){_0x3118df[_0xed28('0x18')](0x194);}return _0x3726c5;};}function handleError(_0x282ba8,_0x376bbf){_0x376bbf=_0x376bbf||0x1f4;return function(_0x501cd6){logger['error'](_0x501cd6[_0xed28('0x2a')]);if(_0x501cd6['name']){delete _0x501cd6[_0xed28('0x2b')];}_0x282ba8[_0xed28('0x19')](_0x376bbf)[_0xed28('0x2c')](_0x501cd6);};}exports[_0xed28('0x2d')]=function(_0x26a681,_0xf0e5bc){var _0x19e07a={},_0x3862ba={},_0x588beb={'count':0x0,'rows':[]};var _0x49fc33=_[_0xed28('0x2e')](db['OpenchannelQueue'][_0xed28('0x2f')],function(_0x298421){return{'name':_0x298421[_0xed28('0x30')],'type':_0x298421[_0xed28('0x31')][_0xed28('0x32')]};});_0x3862ba['model']=_[_0xed28('0x2e')](_0x49fc33,_0xed28('0x2b'));_0x3862ba['query']=_['keys'](_0x26a681[_0xed28('0x33')]);_0x3862ba[_0xed28('0x34')]=_[_0xed28('0x35')](_0x3862ba['model'],_0x3862ba['query']);_0x19e07a[_0xed28('0x36')]=_[_0xed28('0x35')](_0x3862ba[_0xed28('0x37')],qs['fields'](_0x26a681[_0xed28('0x33')][_0xed28('0x38')]));_0x19e07a[_0xed28('0x36')]=_0x19e07a[_0xed28('0x36')][_0xed28('0x39')]?_0x19e07a[_0xed28('0x36')]:_0x3862ba[_0xed28('0x37')];if(!_0x26a681[_0xed28('0x33')][_0xed28('0x3a')](_0xed28('0x3b'))){_0x19e07a[_0xed28('0x1d')]=qs['limit'](_0x26a681[_0xed28('0x33')][_0xed28('0x1d')]);_0x19e07a['offset']=qs['offset'](_0x26a681[_0xed28('0x33')][_0xed28('0x3c')]);}_0x19e07a['order']=qs[_0xed28('0x3d')](_0x26a681[_0xed28('0x33')][_0xed28('0x3d')]);_0x19e07a[_0xed28('0x3e')]=qs[_0xed28('0x34')](_[_0xed28('0x3f')](_0x26a681[_0xed28('0x33')],_0x3862ba[_0xed28('0x34')]),_0x49fc33);if(_0x26a681[_0xed28('0x33')][_0xed28('0x40')]){_0x19e07a[_0xed28('0x3e')]=_[_0xed28('0x41')](_0x19e07a[_0xed28('0x3e')],{'$or':_[_0xed28('0x2e')](_0x49fc33,function(_0x19e6f6){if(_0x19e6f6[_0xed28('0x31')]!=='VIRTUAL'){var _0x4e2fd2={};_0x4e2fd2[_0x19e6f6[_0xed28('0x2b')]]={'$like':'%'+_0x26a681['query'][_0xed28('0x40')]+'%'};return _0x4e2fd2;}})});}_0x19e07a=_[_0xed28('0x41')]({},_0x19e07a,_0x26a681[_0xed28('0x42')]);var _0x5484e8={'where':_0x19e07a[_0xed28('0x3e')]};return db[_0xed28('0x43')][_0xed28('0x1c')](_0x5484e8)[_0xed28('0x25')](function(_0x525e69){_0x588beb[_0xed28('0x1c')]=_0x525e69;if(_0x26a681[_0xed28('0x33')][_0xed28('0x44')]){_0x19e07a['include']=[{'all':!![]}];}return db[_0xed28('0x43')]['findAll'](_0x19e07a);})[_0xed28('0x25')](function(_0xc54e65){_0x588beb[_0xed28('0x45')]=_0xc54e65;return _0x588beb;})[_0xed28('0x25')](respondWithFilteredResult(_0xf0e5bc,_0x19e07a))[_0xed28('0x46')](handleError(_0xf0e5bc,null));};exports['show']=function(_0x1944ee,_0x4bfc2f){var _0x40f4cb={'raw':!![],'where':{'id':_0x1944ee[_0xed28('0x47')]['id']}},_0x42261d={};_0x42261d[_0xed28('0x37')]=_[_0xed28('0x48')](db['OpenchannelQueue']['rawAttributes']);_0x42261d[_0xed28('0x33')]=_[_0xed28('0x48')](_0x1944ee[_0xed28('0x33')]);_0x42261d[_0xed28('0x34')]=_[_0xed28('0x35')](_0x42261d[_0xed28('0x37')],_0x42261d[_0xed28('0x33')]);_0x40f4cb['attributes']=_['intersection'](_0x42261d['model'],qs[_0xed28('0x38')](_0x1944ee[_0xed28('0x33')][_0xed28('0x38')]));_0x40f4cb[_0xed28('0x36')]=_0x40f4cb[_0xed28('0x36')]['length']?_0x40f4cb[_0xed28('0x36')]:_0x42261d['model'];if(_0x1944ee[_0xed28('0x33')][_0xed28('0x44')]){_0x40f4cb[_0xed28('0x49')]=[{'all':!![]}];}_0x40f4cb=_[_0xed28('0x41')]({},_0x40f4cb,_0x1944ee[_0xed28('0x42')]);return db[_0xed28('0x43')][_0xed28('0x4a')](_0x40f4cb)[_0xed28('0x25')](handleEntityNotFound(_0x4bfc2f,null))[_0xed28('0x25')](respondWithResult(_0x4bfc2f,null))[_0xed28('0x46')](handleError(_0x4bfc2f,null));};exports[_0xed28('0x4b')]=function(_0x3455d6,_0x6ab19a){return db[_0xed28('0x43')][_0xed28('0x4b')](_0x3455d6['body'],{})[_0xed28('0x25')](function(_0x41c451){var _0x414038=_0x3455d6[_0xed28('0x4c')][_0xed28('0x26')]({'plain':!![]});if(!_0x414038)throw new Error(_0xed28('0x4d'));if(_0x414038['role']===_0xed28('0x4c')){var _0x54577c=_0x41c451[_0xed28('0x26')]({'plain':!![]});var _0x42dd20='OpenchannelQueues';return db['UserProfileSection']['find']({'where':{'name':_0x42dd20,'userProfileId':_0x414038['userProfileId']},'raw':!![]})[_0xed28('0x25')](function(_0x677264){if(_0x677264&&_0x677264[_0xed28('0x4e')]===0x0){return db['UserProfileResource'][_0xed28('0x4b')]({'name':_0x54577c[_0xed28('0x2b')],'resourceId':_0x54577c['id'],'type':_0x677264[_0xed28('0x2b')],'sectionId':_0x677264['id']},{})[_0xed28('0x25')](function(){return _0x41c451;});}else{return _0x41c451;}})['catch'](function(_0x8546a9){logger['error'](_0xed28('0x4f'),_0x8546a9);throw _0x8546a9;});}return _0x41c451;})[_0xed28('0x25')](respondWithResult(_0x6ab19a,0xc9))[_0xed28('0x46')](handleError(_0x6ab19a,null));};exports[_0xed28('0x24')]=function(_0x345672,_0x54668c){if(_0x345672['body']['id']){delete _0x345672['body']['id'];}return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x345672[_0xed28('0x47')]['id']}})[_0xed28('0x25')](handleEntityNotFound(_0x54668c,null))['then'](saveUpdates(_0x345672[_0xed28('0x50')],null))['then'](respondWithResult(_0x54668c,null))['catch'](handleError(_0x54668c,null));};exports[_0xed28('0x29')]=function(_0x47cbdc,_0x162854){return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x47cbdc[_0xed28('0x47')]['id']}})['then'](handleEntityNotFound(_0x162854,null))[_0xed28('0x25')](removeEntity(_0x162854,null))['catch'](handleError(_0x162854,null));};exports['describe']=function(_0x42c5f7,_0x17904d){return db[_0xed28('0x43')]['describe']()['then'](respondWithResult(_0x17904d,null))[_0xed28('0x46')](handleError(_0x17904d,null));};exports['getMembers']=function(_0x2e1a81,_0x158fb0,_0x37d04f){var _0x241e09={'raw':!![],'where':{}},_0x24f43f={},_0x534c0a;return db[_0xed28('0x43')][_0xed28('0x51')]({'where':{'id':_0x2e1a81['params']['id']}})['then'](handleEntityNotFound(_0x158fb0,null))[_0xed28('0x25')](function(_0x4690d9){if(_0x4690d9){_0x534c0a=_0x4690d9[_0xed28('0x26')]({'plain':!![]});_0x24f43f[_0xed28('0x37')]=_['keys'](db[_0xed28('0x52')]['rawAttributes']);_0x24f43f[_0xed28('0x33')]=_[_0xed28('0x48')](_0x2e1a81[_0xed28('0x33')]);_0x24f43f[_0xed28('0x34')]=_[_0xed28('0x35')](_0x24f43f['model'],_0x24f43f[_0xed28('0x33')]);_0x241e09[_0xed28('0x36')]=_[_0xed28('0x35')](_0x24f43f[_0xed28('0x37')],qs[_0xed28('0x38')](_0x2e1a81['query'][_0xed28('0x38')]));_0x241e09[_0xed28('0x36')]=_0x241e09[_0xed28('0x36')][_0xed28('0x39')]?_0x241e09[_0xed28('0x36')]:_0x24f43f[_0xed28('0x37')];if(!_0x2e1a81[_0xed28('0x33')]['hasOwnProperty'](_0xed28('0x3b'))){_0x241e09[_0xed28('0x1d')]=qs['limit'](_0x2e1a81['query']['limit']);_0x241e09[_0xed28('0x3c')]=qs[_0xed28('0x3c')](_0x2e1a81[_0xed28('0x33')][_0xed28('0x3c')]);}_0x241e09['order']=qs[_0xed28('0x3d')](_0x2e1a81[_0xed28('0x33')][_0xed28('0x3d')]);_0x241e09[_0xed28('0x3e')]=qs[_0xed28('0x34')](_[_0xed28('0x3f')](_0x2e1a81[_0xed28('0x33')],_0x24f43f[_0xed28('0x34')]));_0x241e09[_0xed28('0x3e')][_0xed28('0x53')]=_0x4690d9['id'];if(_0x2e1a81[_0xed28('0x33')][_0xed28('0x40')]){_0x241e09[_0xed28('0x3e')]=_[_0xed28('0x41')](_0x241e09[_0xed28('0x3e')],{'$or':_[_0xed28('0x2e')](_0x241e09['attributes'],function(_0x1e2ded){var _0x4682f7={};_0x4682f7[_0x1e2ded]={'$like':'%'+_0x2e1a81['query']['filter']+'%'};return _0x4682f7;})});}_0x241e09=_[_0xed28('0x41')]({},_0x241e09,_0x2e1a81[_0xed28('0x42')]);return db['UserOpenchannelQueue'][_0xed28('0x54')](_0x241e09);}})[_0xed28('0x25')](function(_0x2162e3){if(_0x2162e3){return db[_0xed28('0x55')]['findAndCountAll']({'where':{'id':_[_0xed28('0x2e')](_0x2162e3,'UserId'),'role':'agent'},'attributes':['id',_0xed28('0x2b'),'openchannelPause',_0xed28('0x56'),'createdAt']});}})['then'](function(_0x921b68){if(_0x921b68){return{'count':_0x921b68['count'],'rows':_['map'](_0x921b68[_0xed28('0x45')],function(_0x2abdd7){return{'membername':_0x2abdd7[_0xed28('0x2b')],'UserId':_0x2abdd7['id'],'queue_name':_0x534c0a[_0xed28('0x2b')],'OpenchannelQueueId':_0x534c0a['id'],'interface':util['format'](_0xed28('0x57'),_0xed28('0x58'),_0x2abdd7[_0xed28('0x2b')]),'penalty':0x0,'paused':_0x2abdd7[_0xed28('0x59')],'createdAt':_0x2abdd7[_0xed28('0x5a')],'updatedAt':_0x2abdd7[_0xed28('0x56')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xed28('0x25')](respondWithFilteredResult(_0x158fb0,_0x241e09))[_0xed28('0x46')](handleError(_0x158fb0,null));};exports[_0xed28('0x5b')]=function(_0x168cd2,_0xa00f13,_0x45a928){var _0x5964a0={};var _0x8f602f={};var _0x5968ed;var _0x25a7d3;return db['OpenchannelQueue'][_0xed28('0x51')]({'where':{'id':_0x168cd2[_0xed28('0x47')]['id']}})[_0xed28('0x25')](handleEntityNotFound(_0xa00f13,null))[_0xed28('0x25')](function(_0x379afe){if(_0x379afe){_0x5968ed=_0x379afe;_0x8f602f['model']=_[_0xed28('0x48')](db['Team'][_0xed28('0x2f')]);_0x8f602f[_0xed28('0x33')]=_[_0xed28('0x48')](_0x168cd2[_0xed28('0x33')]);_0x8f602f[_0xed28('0x34')]=_[_0xed28('0x35')](_0x8f602f[_0xed28('0x37')],_0x8f602f[_0xed28('0x33')]);_0x5964a0['attributes']=_['intersection'](_0x8f602f[_0xed28('0x37')],qs['fields'](_0x168cd2[_0xed28('0x33')][_0xed28('0x38')]));_0x5964a0[_0xed28('0x36')]=_0x5964a0[_0xed28('0x36')]['length']?_0x5964a0[_0xed28('0x36')]:_0x8f602f[_0xed28('0x37')];_0x5964a0[_0xed28('0x5c')]=qs['sort'](_0x168cd2[_0xed28('0x33')][_0xed28('0x3d')]);_0x5964a0[_0xed28('0x3e')]=qs[_0xed28('0x34')](_['pick'](_0x168cd2[_0xed28('0x33')],_0x8f602f[_0xed28('0x34')]));if(_0x168cd2['query'][_0xed28('0x40')]){_0x5964a0[_0xed28('0x3e')]=_[_0xed28('0x41')](_0x5964a0[_0xed28('0x3e')],{'$or':_[_0xed28('0x2e')](_0x5964a0[_0xed28('0x36')],function(_0x2932bb){var _0x4e5a5c={};_0x4e5a5c[_0x2932bb]={'$like':'%'+_0x168cd2[_0xed28('0x33')][_0xed28('0x40')]+'%'};return _0x4e5a5c;})});}_0x5964a0=_[_0xed28('0x41')]({},_0x5964a0,_0x168cd2[_0xed28('0x42')]);return _0x5968ed['getTeams'](_0x5964a0);}})['then'](function(_0x4c890e){if(_0x4c890e){_0x25a7d3=_0x4c890e['length'];if(!_0x168cd2[_0xed28('0x33')]['hasOwnProperty'](_0xed28('0x3b'))){_0x5964a0[_0xed28('0x1d')]=qs[_0xed28('0x1d')](_0x168cd2['query'][_0xed28('0x1d')]);_0x5964a0[_0xed28('0x3c')]=qs[_0xed28('0x3c')](_0x168cd2[_0xed28('0x33')]['offset']);}return _0x5968ed['getTeams'](_0x5964a0);}})[_0xed28('0x25')](function(_0x349ee2){if(_0x349ee2){return _0x349ee2?{'count':_0x25a7d3,'rows':_0x349ee2}:null;}})['then'](respondWithResult(_0xa00f13,null))[_0xed28('0x46')](handleError(_0xa00f13,null));};exports[_0xed28('0x5d')]=function(_0x3f746f,_0x208ea,_0x5541f4){var _0x33860f=_0x3f746f[_0xed28('0x50')][_0xed28('0x5e')];return db[_0xed28('0x5f')]['findAll']({'where':{'id':_0x33860f},'attributes':['id'],'include':[{'model':db[_0xed28('0x55')],'as':_0xed28('0x60'),'attributes':['id',_0xed28('0x2b'),_0xed28('0x61'),_0xed28('0x62'),_0xed28('0x63')],'raw':!![]}]})[_0xed28('0x25')](function(_0x3a39cc){if(_0x3a39cc){var _0x315b0e=_['flatMap'](_0x3a39cc,function(_0x406f72){var _0x916f4b=_0x406f72[_0xed28('0x26')]({'plain':!![]});return _0x916f4b[_0xed28('0x60')];});return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x3f746f[_0xed28('0x47')]['id']}})['then'](function(_0x4cc41a){return db['sequelize'][_0xed28('0x64')](function(_0x189875){return _0x4cc41a[_0xed28('0x5d')](_0x33860f,{'transaction':_0x189875})['then'](function(){return BPromise['each'](_0x315b0e,function(_0x8f50ec){return db[_0xed28('0x52')][_0xed28('0x65')]({'where':{'UserId':_0x8f50ec['id'],'OpenchannelQueueId':_0x3f746f[_0xed28('0x47')]['id']},'transaction':_0x189875});});})[_0xed28('0x25')](function(){_0x315b0e[_0xed28('0x66')](function(_0x308263){socket[_0xed28('0x67')]('userOpenchannelQueue:save',{'UserId':_0x308263['id'],'OpenchannelQueueId':_0x4cc41a['id']});});});});});}})[_0xed28('0x25')](respondWithStatusCode(_0x208ea,null))['catch'](handleError(_0x208ea,null));};exports[_0xed28('0x68')]=function(_0x7ee020,_0xb1f3fb,_0x4d410c){return db[_0xed28('0x5f')][_0xed28('0x54')]({'where':{'id':_0x7ee020[_0xed28('0x33')][_0xed28('0x5e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xed28('0x60'),'attributes':['id'],'raw':!![]}]})[_0xed28('0x25')](handleEntityNotFound(_0xb1f3fb,null))[_0xed28('0x25')](function(_0x4bb294){var _0x50943d=_['map'](_0x4bb294,'id');var _0x11f4c9=[];var _0x39a95e=[];var _0x168ea9=squel[_0xed28('0x69')]();_0x168ea9[_0xed28('0x6a')](_0xed28('0x6b'))[_0xed28('0x6c')]('team_has_openchannel_queues','tq')[_0xed28('0x6d')]('user_has_teams','ut',_0xed28('0x6e'))['where']('OpenchannelQueueId\x20=\x20?',_0x7ee020[_0xed28('0x47')]['id']);for(var _0x318207=0x0;_0x318207<_0x4bb294[_0xed28('0x39')];_0x318207+=0x1){let _0x322800=_0x4bb294[_0x318207];for(var _0x5cef65=0x0;_0x5cef65<_0x322800[_0xed28('0x60')][_0xed28('0x39')];_0x5cef65+=0x1){let _0x2483c4=_0x322800[_0xed28('0x60')][_0x5cef65];var _0x2b942c=_0x168ea9['clone']();_0x2b942c[_0xed28('0x3e')](_0xed28('0x6f'),_0x2483c4['id']);_0x39a95e['push'](db[_0xed28('0x70')][_0xed28('0x33')](_0x2b942c[_0xed28('0x71')](),{'type':db[_0xed28('0x70')][_0xed28('0x72')][_0xed28('0x73')]})['then'](function(_0x3b4d4d){if(_0x3b4d4d['length']===0x1){return _0x2483c4['id'];}else{var _0x20b34d=_[_0xed28('0x74')](_[_0xed28('0x2e')](_0x3b4d4d,'TeamId'),function(_0x1f5473){return _[_0xed28('0x75')](_0x50943d,_0x1f5473);});if(_0x20b34d){return _0x2483c4['id'];}}}));}}return BPromise['all'](_0x39a95e)['then'](function(_0x245263){_0x11f4c9=_(_0x11f4c9)['union'](_0x245263)['compact']()[_0xed28('0x76')]();return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x7ee020[_0xed28('0x47')]['id']}})['then'](function(_0x975f06){return db[_0xed28('0x70')][_0xed28('0x64')](function(_0x3b9aae){return _0x975f06[_0xed28('0x68')](_0x7ee020[_0xed28('0x33')][_0xed28('0x5e')],{'transaction':_0x3b9aae})[_0xed28('0x25')](function(){if(!_['isEmpty'](_0x11f4c9)){return _0x975f06[_0xed28('0x77')](_0x11f4c9,{'transaction':_0x3b9aae});}})[_0xed28('0x25')](function(){_0x11f4c9['forEach'](function(_0xa7f09b){socket[_0xed28('0x67')](_0xed28('0x78'),{'UserId':_0xa7f09b,'OpenchannelQueueId':_0x975f06['id']});});});});});});})[_0xed28('0x25')](respondWithStatusCode(_0xb1f3fb,null))[_0xed28('0x46')](handleError(_0xb1f3fb,null));};exports[_0xed28('0x79')]=function(_0x3a8541,_0x532393,_0x34e27b){return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x3a8541[_0xed28('0x47')]['id']}})[_0xed28('0x25')](handleEntityNotFound(_0x532393,null))[_0xed28('0x25')](function(_0xb79842){if(_0xb79842){return _0xb79842[_0xed28('0x79')](_0x3a8541[_0xed28('0x50')][_0xed28('0x5e')],_[_0xed28('0x7a')](_0x3a8541[_0xed28('0x50')],['ids','id'])||{})[_0xed28('0x7b')](function(_0x4b3a41){for(var _0x40513e=0x0;_0x40513e<_0x3a8541[_0xed28('0x50')][_0xed28('0x5e')][_0xed28('0x39')];_0x40513e+=0x1){socket[_0xed28('0x67')](_0xed28('0x7c'),{'UserId':Number(_0x3a8541[_0xed28('0x50')][_0xed28('0x5e')][_0x40513e]),'OpenchannelQueueId':Number(_0x3a8541[_0xed28('0x47')]['id'])});}return _0x4b3a41;});}})[_0xed28('0x25')](respondWithResult(_0x532393,null))[_0xed28('0x46')](handleError(_0x532393,null));};exports[_0xed28('0x77')]=function(_0x26fe35,_0x35004f,_0xf73688){return db[_0xed28('0x43')][_0xed28('0x4a')]({'where':{'id':_0x26fe35['params']['id']}})[_0xed28('0x25')](handleEntityNotFound(_0x35004f,null))['then'](function(_0xa40b1f){if(_0xa40b1f){return _0xa40b1f[_0xed28('0x77')](_0x26fe35['query']['ids'])[_0xed28('0x25')](function(){if(_[_0xed28('0x7d')](_0x26fe35['query']['ids'])){for(var _0x2f8690=0x0;_0x2f8690<_0x26fe35[_0xed28('0x33')][_0xed28('0x5e')][_0xed28('0x39')];_0x2f8690+=0x1){socket[_0xed28('0x67')](_0xed28('0x78'),{'UserId':Number(_0x26fe35[_0xed28('0x33')][_0xed28('0x5e')][_0x2f8690]),'OpenchannelQueueId':Number(_0x26fe35[_0xed28('0x47')]['id'])});}}else{socket['emit'](_0xed28('0x78'),{'UserId':Number(_0x26fe35[_0xed28('0x33')]['ids']),'OpenchannelQueueId':Number(_0x26fe35[_0xed28('0x47')]['id'])});}});}})['then'](respondWithStatusCode(_0x35004f,null))[_0xed28('0x46')](handleError(_0x35004f,null));};exports[_0xed28('0x7e')]=function(_0x32a337,_0x3bfde8,_0x23f468){var _0x3cc4cf={};var _0x1c14c3={};var _0x133827;var _0x4cceb4;return db[_0xed28('0x43')][_0xed28('0x51')]({'where':{'id':_0x32a337[_0xed28('0x47')]['id']}})[_0xed28('0x25')](handleEntityNotFound(_0x3bfde8,null))[_0xed28('0x25')](function(_0x486f1f){if(_0x486f1f){_0x133827=_0x486f1f;_0x1c14c3[_0xed28('0x37')]=_[_0xed28('0x48')](db[_0xed28('0x55')][_0xed28('0x2f')]);_0x1c14c3[_0xed28('0x33')]=_[_0xed28('0x48')](_0x32a337[_0xed28('0x33')]);_0x1c14c3['filters']=_[_0xed28('0x35')](_0x1c14c3[_0xed28('0x37')],_0x1c14c3[_0xed28('0x33')]);_0x3cc4cf[_0xed28('0x36')]=_[_0xed28('0x35')](_0x1c14c3['model'],qs['fields'](_0x32a337[_0xed28('0x33')][_0xed28('0x38')]));_0x3cc4cf['attributes']=_0x3cc4cf[_0xed28('0x36')][_0xed28('0x39')]?_0x3cc4cf[_0xed28('0x36')]:_0x1c14c3[_0xed28('0x37')];_0x3cc4cf['order']=qs[_0xed28('0x3d')](_0x32a337[_0xed28('0x33')][_0xed28('0x3d')]);_0x3cc4cf[_0xed28('0x3e')]=qs['filters'](_[_0xed28('0x3f')](_0x32a337[_0xed28('0x33')],_0x1c14c3[_0xed28('0x34')]));if(_0x32a337['query'][_0xed28('0x40')]){_0x3cc4cf[_0xed28('0x3e')]=_[_0xed28('0x41')](_0x3cc4cf[_0xed28('0x3e')],{'$or':_['map'](_0x3cc4cf[_0xed28('0x36')],function(_0x421f1f){var _0x15f398={};_0x15f398[_0x421f1f]={'$like':'%'+_0x32a337[_0xed28('0x33')]['filter']+'%'};return _0x15f398;})});}_0x3cc4cf=_[_0xed28('0x41')]({},_0x3cc4cf,_0x32a337[_0xed28('0x42')]);return _0x133827[_0xed28('0x7e')](_0x3cc4cf);}})['then'](function(_0x5ca0f3){if(_0x5ca0f3){_0x4cceb4=_0x5ca0f3[_0xed28('0x39')];if(!_0x32a337['query'][_0xed28('0x3a')](_0xed28('0x3b'))){_0x3cc4cf[_0xed28('0x1d')]=qs[_0xed28('0x1d')](_0x32a337['query'][_0xed28('0x1d')]);_0x3cc4cf[_0xed28('0x3c')]=qs[_0xed28('0x3c')](_0x32a337['query'][_0xed28('0x3c')]);}return _0x133827[_0xed28('0x7e')](_0x3cc4cf);}})[_0xed28('0x25')](function(_0x31017){if(_0x31017){return _0x31017?{'count':_0x4cceb4,'rows':_0x31017}:null;}})[_0xed28('0x25')](respondWithResult(_0x3bfde8,null))[_0xed28('0x46')](handleError(_0x3bfde8,null));};
\ No newline at end of file
+var _0xed4e=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','get','OpenchannelQueues','UserProfileResource','destroy','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','params','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAll','User','UserId','agent','openchannelPause','rows','format','%s/%s','SIP','createdAt','updatedAt','getTeams','Team','Agents','interface','sequelize','transaction','addTeams','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','ids','isEmpty','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/parsers/qs'];(function(_0x489fec,_0x47af23){var _0x74ebfb=function(_0x111ef6){while(--_0x111ef6){_0x489fec['push'](_0x489fec['shift']());}};_0x74ebfb(++_0x47af23);}(_0xed4e,0x80));var _0xeed4=function(_0x48132a,_0x4692a0){_0x48132a=_0x48132a-0x0;var _0x3dfd6e=_0xed4e[_0x48132a];return _0x3dfd6e;};'use strict';var emlformat=require(_0xeed4('0x0'));var rimraf=require(_0xeed4('0x1'));var zipdir=require(_0xeed4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xeed4('0x3'));var moment=require(_0xeed4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xeed4('0x5'));var util=require(_0xeed4('0x6'));var path=require(_0xeed4('0x7'));var sox=require(_0xeed4('0x8'));var csv=require(_0xeed4('0x9'));var ejs=require(_0xeed4('0xa'));var fs=require('fs');var fs_extra=require(_0xeed4('0xb'));var _=require(_0xeed4('0xc'));var squel=require(_0xeed4('0xd'));var crypto=require('crypto');var jsforce=require(_0xeed4('0xe'));var deskjs=require(_0xeed4('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xeed4('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xeed4('0x11'));var as=require(_0xeed4('0x12'));var hardwareService=require(_0xeed4('0x13'));var logger=require(_0xeed4('0x14'))('api');var utils=require(_0xeed4('0x15'));var config=require(_0xeed4('0x16'));var licenseUtil=require(_0xeed4('0x17'));var db=require(_0xeed4('0x18'))['db'];config[_0xeed4('0x19')]=_[_0xeed4('0x1a')](config[_0xeed4('0x19')],{'host':_0xeed4('0x1b'),'port':0x18eb});var socket=require(_0xeed4('0x1c'))(new Redis(config[_0xeed4('0x19')]));require('./openchannelQueue.socket')[_0xeed4('0x1d')](socket);function respondWithStatusCode(_0x3ea40f,_0x2734e8){_0x2734e8=_0x2734e8||0xcc;return function(_0x146fee){if(_0x146fee){return _0x3ea40f[_0xeed4('0x1e')](_0x2734e8);}return _0x3ea40f[_0xeed4('0x1f')](_0x2734e8)[_0xeed4('0x20')]();};}function respondWithResult(_0xa20806,_0x4d7e09){_0x4d7e09=_0x4d7e09||0xc8;return function(_0x177fba){if(_0x177fba){return _0xa20806[_0xeed4('0x1f')](_0x4d7e09)[_0xeed4('0x21')](_0x177fba);}};}function respondWithFilteredResult(_0x2eb46a,_0x374ef3){return function(_0x25a449){if(_0x25a449){var _0x4d200c=typeof _0x374ef3[_0xeed4('0x22')]==='undefined'&&typeof _0x374ef3['limit']===_0xeed4('0x23');var _0x3ba4a0=_0x25a449['count'];var _0x37bfd6=_0x4d200c?0x0:_0x374ef3[_0xeed4('0x22')];var _0x1fd914=_0x4d200c?_0x25a449[_0xeed4('0x24')]:_0x374ef3[_0xeed4('0x22')]+_0x374ef3[_0xeed4('0x25')];var _0x1c1966;if(_0x1fd914>=_0x3ba4a0){_0x1fd914=_0x3ba4a0;_0x1c1966=0xc8;}else{_0x1c1966=0xce;}_0x2eb46a['status'](_0x1c1966);return _0x2eb46a[_0xeed4('0x26')](_0xeed4('0x27'),_0x37bfd6+'-'+_0x1fd914+'/'+_0x3ba4a0)[_0xeed4('0x21')](_0x25a449);}return null;};}function patchUpdates(_0x2c4ebe){return function(_0x51fc50){try{jsonpatch[_0xeed4('0x28')](_0x51fc50,_0x2c4ebe,!![]);}catch(_0x48b4b0){return BPromise[_0xeed4('0x29')](_0x48b4b0);}return _0x51fc50[_0xeed4('0x2a')]();};}function saveUpdates(_0x156675,_0x34d5a1){return function(_0x304d8b){if(_0x304d8b){return _0x304d8b[_0xeed4('0x2b')](_0x156675)[_0xeed4('0x2c')](function(_0x315328){return _0x315328;});}return null;};}function removeEntity(_0x1f7c87,_0x5b66bd){return function(_0x403664){if(_0x403664){return _0x403664['destroy']()[_0xeed4('0x2c')](function(){var _0x214ba9=_0x403664[_0xeed4('0x2d')]({'plain':!![]});var _0x5c7f9b=_0xeed4('0x2e');return db[_0xeed4('0x2f')][_0xeed4('0x30')]({'where':{'type':_0x5c7f9b,'resourceId':_0x214ba9['id']}})[_0xeed4('0x2c')](function(){return _0x403664;});})[_0xeed4('0x2c')](function(){_0x1f7c87[_0xeed4('0x1f')](0xcc)[_0xeed4('0x20')]();});}};}function handleEntityNotFound(_0x321417,_0x50e3de){return function(_0x3b341a){if(!_0x3b341a){_0x321417['sendStatus'](0x194);}return _0x3b341a;};}function handleError(_0xaa76d8,_0x4bb0a1){_0x4bb0a1=_0x4bb0a1||0x1f4;return function(_0x400ebf){logger[_0xeed4('0x31')](_0x400ebf[_0xeed4('0x32')]);if(_0x400ebf[_0xeed4('0x33')]){delete _0x400ebf[_0xeed4('0x33')];}_0xaa76d8[_0xeed4('0x1f')](_0x4bb0a1)[_0xeed4('0x34')](_0x400ebf);};}exports[_0xeed4('0x35')]=function(_0x1db6dc,_0x34017e){var _0x596c5b={},_0x3e4f98={},_0xb21984={'count':0x0,'rows':[]};var _0x4c1059=_[_0xeed4('0x36')](db[_0xeed4('0x37')][_0xeed4('0x38')],function(_0x1a9a4f){return{'name':_0x1a9a4f[_0xeed4('0x39')],'type':_0x1a9a4f[_0xeed4('0x3a')][_0xeed4('0x3b')]};});_0x3e4f98[_0xeed4('0x3c')]=_[_0xeed4('0x36')](_0x4c1059,_0xeed4('0x33'));_0x3e4f98[_0xeed4('0x3d')]=_[_0xeed4('0x3e')](_0x1db6dc[_0xeed4('0x3d')]);_0x3e4f98[_0xeed4('0x3f')]=_[_0xeed4('0x40')](_0x3e4f98['model'],_0x3e4f98['query']);_0x596c5b['attributes']=_['intersection'](_0x3e4f98[_0xeed4('0x3c')],qs[_0xeed4('0x41')](_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x41')]));_0x596c5b['attributes']=_0x596c5b[_0xeed4('0x42')][_0xeed4('0x43')]?_0x596c5b[_0xeed4('0x42')]:_0x3e4f98[_0xeed4('0x3c')];if(!_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x44')](_0xeed4('0x45'))){_0x596c5b['limit']=qs['limit'](_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x25')]);_0x596c5b['offset']=qs[_0xeed4('0x22')](_0x1db6dc['query']['offset']);}_0x596c5b[_0xeed4('0x46')]=qs[_0xeed4('0x47')](_0x1db6dc['query']['sort']);_0x596c5b[_0xeed4('0x48')]=qs[_0xeed4('0x3f')](_[_0xeed4('0x49')](_0x1db6dc[_0xeed4('0x3d')],_0x3e4f98[_0xeed4('0x3f')]),_0x4c1059);if(_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x4a')]){_0x596c5b['where']=_[_0xeed4('0x4b')](_0x596c5b[_0xeed4('0x48')],{'$or':_['map'](_0x4c1059,function(_0x2910ff){if(_0x2910ff[_0xeed4('0x3a')]!==_0xeed4('0x4c')){var _0x341287={};_0x341287[_0x2910ff['name']]={'$like':'%'+_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x4a')]+'%'};return _0x341287;}})});}_0x596c5b=_[_0xeed4('0x4b')]({},_0x596c5b,_0x1db6dc[_0xeed4('0x4d')]);var _0xc69dbf={'where':_0x596c5b[_0xeed4('0x48')]};return db[_0xeed4('0x37')][_0xeed4('0x24')](_0xc69dbf)[_0xeed4('0x2c')](function(_0x1a31b4){_0xb21984[_0xeed4('0x24')]=_0x1a31b4;if(_0x1db6dc[_0xeed4('0x3d')][_0xeed4('0x4e')]){_0x596c5b[_0xeed4('0x4f')]=[{'all':!![]}];}return db['OpenchannelQueue']['findAll'](_0x596c5b);})['then'](function(_0x583221){_0xb21984['rows']=_0x583221;return _0xb21984;})[_0xeed4('0x2c')](respondWithFilteredResult(_0x34017e,_0x596c5b))[_0xeed4('0x50')](handleError(_0x34017e,null));};exports['show']=function(_0x9d16ea,_0x3cb173){var _0x1a7063={'raw':!![],'where':{'id':_0x9d16ea[_0xeed4('0x51')]['id']}},_0xf3fe3e={};_0xf3fe3e[_0xeed4('0x3c')]=_[_0xeed4('0x3e')](db['OpenchannelQueue'][_0xeed4('0x38')]);_0xf3fe3e[_0xeed4('0x3d')]=_['keys'](_0x9d16ea[_0xeed4('0x3d')]);_0xf3fe3e[_0xeed4('0x3f')]=_['intersection'](_0xf3fe3e[_0xeed4('0x3c')],_0xf3fe3e['query']);_0x1a7063[_0xeed4('0x42')]=_[_0xeed4('0x40')](_0xf3fe3e[_0xeed4('0x3c')],qs['fields'](_0x9d16ea[_0xeed4('0x3d')][_0xeed4('0x41')]));_0x1a7063[_0xeed4('0x42')]=_0x1a7063['attributes'][_0xeed4('0x43')]?_0x1a7063[_0xeed4('0x42')]:_0xf3fe3e[_0xeed4('0x3c')];if(_0x9d16ea[_0xeed4('0x3d')][_0xeed4('0x4e')]){_0x1a7063[_0xeed4('0x4f')]=[{'all':!![]}];}_0x1a7063=_[_0xeed4('0x4b')]({},_0x1a7063,_0x9d16ea[_0xeed4('0x4d')]);return db[_0xeed4('0x37')][_0xeed4('0x52')](_0x1a7063)['then'](handleEntityNotFound(_0x3cb173,null))['then'](respondWithResult(_0x3cb173,null))['catch'](handleError(_0x3cb173,null));};exports['create']=function(_0x24a351,_0x1aaa99){return db[_0xeed4('0x37')][_0xeed4('0x53')](_0x24a351[_0xeed4('0x54')],{})[_0xeed4('0x2c')](function(_0x4ef36f){var _0x2e2e2c=_0x24a351[_0xeed4('0x55')]['get']({'plain':!![]});if(!_0x2e2e2c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e2e2c[_0xeed4('0x56')]===_0xeed4('0x55')){var _0x198cd7=_0x4ef36f[_0xeed4('0x2d')]({'plain':!![]});var _0x16e7a3=_0xeed4('0x2e');return db[_0xeed4('0x57')][_0xeed4('0x52')]({'where':{'name':_0x16e7a3,'userProfileId':_0x2e2e2c[_0xeed4('0x58')]},'raw':!![]})['then'](function(_0x260148){if(_0x260148&&_0x260148[_0xeed4('0x59')]===0x0){return db[_0xeed4('0x2f')][_0xeed4('0x53')]({'name':_0x198cd7[_0xeed4('0x33')],'resourceId':_0x198cd7['id'],'type':_0x260148[_0xeed4('0x33')],'sectionId':_0x260148['id']},{})[_0xeed4('0x2c')](function(){return _0x4ef36f;});}else{return _0x4ef36f;}})['catch'](function(_0x128e9d){logger[_0xeed4('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x128e9d);throw _0x128e9d;});}return _0x4ef36f;})[_0xeed4('0x2c')](respondWithResult(_0x1aaa99,0xc9))[_0xeed4('0x50')](handleError(_0x1aaa99,null));};exports['update']=function(_0x29ca2a,_0x5710a3){if(_0x29ca2a[_0xeed4('0x54')]['id']){delete _0x29ca2a['body']['id'];}return db[_0xeed4('0x37')][_0xeed4('0x52')]({'where':{'id':_0x29ca2a[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](handleEntityNotFound(_0x5710a3,null))['then'](saveUpdates(_0x29ca2a[_0xeed4('0x54')],null))[_0xeed4('0x2c')](respondWithResult(_0x5710a3,null))[_0xeed4('0x50')](handleError(_0x5710a3,null));};exports[_0xeed4('0x30')]=function(_0x49570e,_0x26f2a7){return db[_0xeed4('0x37')][_0xeed4('0x52')]({'where':{'id':_0x49570e['params']['id']}})['then'](handleEntityNotFound(_0x26f2a7,null))['then'](removeEntity(_0x26f2a7,null))[_0xeed4('0x50')](handleError(_0x26f2a7,null));};exports[_0xeed4('0x5a')]=function(_0x34501a,_0x27aa4c){return db[_0xeed4('0x37')]['describe']()[_0xeed4('0x2c')](respondWithResult(_0x27aa4c,null))[_0xeed4('0x50')](handleError(_0x27aa4c,null));};exports[_0xeed4('0x5b')]=function(_0x2c4c51,_0x35fe8d,_0x2c8243){var _0x341764={'raw':!![],'where':{}},_0x12ea44={},_0x1331cd;return db[_0xeed4('0x37')][_0xeed4('0x5c')]({'where':{'id':_0x2c4c51[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](handleEntityNotFound(_0x35fe8d,null))[_0xeed4('0x2c')](function(_0x4579a3){if(_0x4579a3){_0x1331cd=_0x4579a3[_0xeed4('0x2d')]({'plain':!![]});_0x12ea44[_0xeed4('0x3c')]=_['keys'](db[_0xeed4('0x5d')]['rawAttributes']);_0x12ea44[_0xeed4('0x3d')]=_[_0xeed4('0x3e')](_0x2c4c51[_0xeed4('0x3d')]);_0x12ea44[_0xeed4('0x3f')]=_[_0xeed4('0x40')](_0x12ea44[_0xeed4('0x3c')],_0x12ea44[_0xeed4('0x3d')]);_0x341764[_0xeed4('0x42')]=_[_0xeed4('0x40')](_0x12ea44[_0xeed4('0x3c')],qs[_0xeed4('0x41')](_0x2c4c51[_0xeed4('0x3d')][_0xeed4('0x41')]));_0x341764[_0xeed4('0x42')]=_0x341764[_0xeed4('0x42')][_0xeed4('0x43')]?_0x341764[_0xeed4('0x42')]:_0x12ea44[_0xeed4('0x3c')];if(!_0x2c4c51[_0xeed4('0x3d')][_0xeed4('0x44')](_0xeed4('0x45'))){_0x341764[_0xeed4('0x25')]=qs[_0xeed4('0x25')](_0x2c4c51[_0xeed4('0x3d')][_0xeed4('0x25')]);_0x341764[_0xeed4('0x22')]=qs['offset'](_0x2c4c51['query'][_0xeed4('0x22')]);}_0x341764[_0xeed4('0x46')]=qs['sort'](_0x2c4c51[_0xeed4('0x3d')]['sort']);_0x341764[_0xeed4('0x48')]=qs[_0xeed4('0x3f')](_['pick'](_0x2c4c51[_0xeed4('0x3d')],_0x12ea44[_0xeed4('0x3f')]));_0x341764[_0xeed4('0x48')][_0xeed4('0x5e')]=_0x4579a3['id'];if(_0x2c4c51[_0xeed4('0x3d')][_0xeed4('0x4a')]){_0x341764[_0xeed4('0x48')]=_[_0xeed4('0x4b')](_0x341764['where'],{'$or':_[_0xeed4('0x36')](_0x341764[_0xeed4('0x42')],function(_0x266760){var _0x390530={};_0x390530[_0x266760]={'$like':'%'+_0x2c4c51['query'][_0xeed4('0x4a')]+'%'};return _0x390530;})});}_0x341764=_[_0xeed4('0x4b')]({},_0x341764,_0x2c4c51[_0xeed4('0x4d')]);return db[_0xeed4('0x5d')][_0xeed4('0x5f')](_0x341764);}})[_0xeed4('0x2c')](function(_0x61630c){if(_0x61630c){return db[_0xeed4('0x60')]['findAndCountAll']({'where':{'id':_[_0xeed4('0x36')](_0x61630c,_0xeed4('0x61')),'role':_0xeed4('0x62')},'attributes':['id',_0xeed4('0x33'),_0xeed4('0x63'),'updatedAt','createdAt']});}})[_0xeed4('0x2c')](function(_0x2ded63){if(_0x2ded63){return{'count':_0x2ded63[_0xeed4('0x24')],'rows':_['map'](_0x2ded63[_0xeed4('0x64')],function(_0x321c87){return{'membername':_0x321c87['name'],'UserId':_0x321c87['id'],'queue_name':_0x1331cd['name'],'OpenchannelQueueId':_0x1331cd['id'],'interface':util[_0xeed4('0x65')](_0xeed4('0x66'),_0xeed4('0x67'),_0x321c87[_0xeed4('0x33')]),'penalty':0x0,'paused':_0x321c87[_0xeed4('0x63')],'createdAt':_0x321c87[_0xeed4('0x68')],'updatedAt':_0x321c87[_0xeed4('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x35fe8d,_0x341764))[_0xeed4('0x50')](handleError(_0x35fe8d,null));};exports[_0xeed4('0x6a')]=function(_0x275a21,_0x18282a,_0x2808ff){var _0x1e1b9e={};var _0x44f0dc={};var _0x2ebd77;var _0x505d23;return db[_0xeed4('0x37')][_0xeed4('0x5c')]({'where':{'id':_0x275a21[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](handleEntityNotFound(_0x18282a,null))['then'](function(_0x26adfd){if(_0x26adfd){_0x2ebd77=_0x26adfd;_0x44f0dc[_0xeed4('0x3c')]=_[_0xeed4('0x3e')](db[_0xeed4('0x6b')]['rawAttributes']);_0x44f0dc[_0xeed4('0x3d')]=_[_0xeed4('0x3e')](_0x275a21['query']);_0x44f0dc[_0xeed4('0x3f')]=_[_0xeed4('0x40')](_0x44f0dc['model'],_0x44f0dc[_0xeed4('0x3d')]);_0x1e1b9e[_0xeed4('0x42')]=_['intersection'](_0x44f0dc[_0xeed4('0x3c')],qs['fields'](_0x275a21[_0xeed4('0x3d')][_0xeed4('0x41')]));_0x1e1b9e[_0xeed4('0x42')]=_0x1e1b9e[_0xeed4('0x42')][_0xeed4('0x43')]?_0x1e1b9e[_0xeed4('0x42')]:_0x44f0dc[_0xeed4('0x3c')];_0x1e1b9e[_0xeed4('0x46')]=qs[_0xeed4('0x47')](_0x275a21[_0xeed4('0x3d')]['sort']);_0x1e1b9e['where']=qs[_0xeed4('0x3f')](_[_0xeed4('0x49')](_0x275a21['query'],_0x44f0dc[_0xeed4('0x3f')]));if(_0x275a21['query'][_0xeed4('0x4a')]){_0x1e1b9e[_0xeed4('0x48')]=_[_0xeed4('0x4b')](_0x1e1b9e[_0xeed4('0x48')],{'$or':_['map'](_0x1e1b9e[_0xeed4('0x42')],function(_0x3ddcc1){var _0xd91441={};_0xd91441[_0x3ddcc1]={'$like':'%'+_0x275a21[_0xeed4('0x3d')][_0xeed4('0x4a')]+'%'};return _0xd91441;})});}_0x1e1b9e=_[_0xeed4('0x4b')]({},_0x1e1b9e,_0x275a21[_0xeed4('0x4d')]);return _0x2ebd77[_0xeed4('0x6a')](_0x1e1b9e);}})[_0xeed4('0x2c')](function(_0x34eba7){if(_0x34eba7){_0x505d23=_0x34eba7[_0xeed4('0x43')];if(!_0x275a21['query'][_0xeed4('0x44')]('nolimit')){_0x1e1b9e[_0xeed4('0x25')]=qs[_0xeed4('0x25')](_0x275a21[_0xeed4('0x3d')][_0xeed4('0x25')]);_0x1e1b9e[_0xeed4('0x22')]=qs['offset'](_0x275a21[_0xeed4('0x3d')][_0xeed4('0x22')]);}return _0x2ebd77[_0xeed4('0x6a')](_0x1e1b9e);}})[_0xeed4('0x2c')](function(_0x160c31){if(_0x160c31){return _0x160c31?{'count':_0x505d23,'rows':_0x160c31}:null;}})[_0xeed4('0x2c')](respondWithResult(_0x18282a,null))[_0xeed4('0x50')](handleError(_0x18282a,null));};exports['addTeams']=function(_0x3e15c1,_0x4dc1b8,_0x94aa56){var _0x1748bc=_0x3e15c1[_0xeed4('0x54')]['ids'];return db['Team'][_0xeed4('0x5f')]({'where':{'id':_0x1748bc},'attributes':['id'],'include':[{'model':db[_0xeed4('0x60')],'as':_0xeed4('0x6c'),'attributes':['id',_0xeed4('0x33'),'online','voicePause',_0xeed4('0x6d')],'raw':!![]}]})['then'](function(_0x1677de){if(_0x1677de){var _0x1557d0=_['flatMap'](_0x1677de,function(_0x5c3c51){var _0x1b6607=_0x5c3c51[_0xeed4('0x2d')]({'plain':!![]});return _0x1b6607[_0xeed4('0x6c')];});return db['OpenchannelQueue'][_0xeed4('0x52')]({'where':{'id':_0x3e15c1[_0xeed4('0x51')]['id']}})['then'](function(_0x2ff2e3){return db[_0xeed4('0x6e')][_0xeed4('0x6f')](function(_0x243058){return _0x2ff2e3[_0xeed4('0x70')](_0x1748bc,{'transaction':_0x243058})[_0xeed4('0x2c')](function(){return BPromise[_0xeed4('0x71')](_0x1557d0,function(_0x439650){return db[_0xeed4('0x5d')][_0xeed4('0x72')]({'where':{'UserId':_0x439650['id'],'OpenchannelQueueId':_0x3e15c1[_0xeed4('0x51')]['id']},'transaction':_0x243058});});})[_0xeed4('0x2c')](function(){_0x1557d0['forEach'](function(_0x2f5189){socket[_0xeed4('0x73')](_0xeed4('0x74'),{'UserId':_0x2f5189['id'],'OpenchannelQueueId':_0x2ff2e3['id']});});});});});}})['then'](respondWithStatusCode(_0x4dc1b8,null))[_0xeed4('0x50')](handleError(_0x4dc1b8,null));};exports[_0xeed4('0x75')]=function(_0x23d674,_0x21b872,_0x1f2e25){return db[_0xeed4('0x6b')][_0xeed4('0x5f')]({'where':{'id':_0x23d674[_0xeed4('0x3d')]['ids']},'attributes':['id'],'include':[{'model':db[_0xeed4('0x60')],'as':_0xeed4('0x6c'),'attributes':['id'],'raw':!![]}]})[_0xeed4('0x2c')](handleEntityNotFound(_0x21b872,null))[_0xeed4('0x2c')](function(_0x350955){var _0x3715d3=_['map'](_0x350955,'id');var _0x4ddc95=[];var _0x9a4c8b=[];var _0x48eb41=squel[_0xeed4('0x76')]();_0x48eb41[_0xeed4('0x77')](_0xeed4('0x78'))[_0xeed4('0x79')]('team_has_openchannel_queues','tq')['join'](_0xeed4('0x7a'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xeed4('0x48')](_0xeed4('0x7b'),_0x23d674['params']['id']);for(var _0xd7868f=0x0;_0xd7868f<_0x350955['length'];_0xd7868f+=0x1){let _0x58fae3=_0x350955[_0xd7868f];for(var _0x4c6105=0x0;_0x4c6105<_0x58fae3[_0xeed4('0x6c')][_0xeed4('0x43')];_0x4c6105+=0x1){let _0x50f894=_0x58fae3['Agents'][_0x4c6105];var _0x585ce4=_0x48eb41[_0xeed4('0x7c')]();_0x585ce4[_0xeed4('0x48')](_0xeed4('0x7d'),_0x50f894['id']);_0x9a4c8b[_0xeed4('0x7e')](db[_0xeed4('0x6e')][_0xeed4('0x3d')](_0x585ce4[_0xeed4('0x7f')](),{'type':db[_0xeed4('0x6e')][_0xeed4('0x80')][_0xeed4('0x81')]})[_0xeed4('0x2c')](function(_0x20702a){if(_0x20702a[_0xeed4('0x43')]===0x1){return _0x50f894['id'];}else{var _0x11a4c9=_[_0xeed4('0x82')](_[_0xeed4('0x36')](_0x20702a,_0xeed4('0x83')),function(_0x2ef5eb){return _[_0xeed4('0x84')](_0x3715d3,_0x2ef5eb);});if(_0x11a4c9){return _0x50f894['id'];}}}));}}return BPromise[_0xeed4('0x85')](_0x9a4c8b)[_0xeed4('0x2c')](function(_0x47e8f2){_0x4ddc95=_(_0x4ddc95)[_0xeed4('0x86')](_0x47e8f2)[_0xeed4('0x87')]()[_0xeed4('0x88')]();return db[_0xeed4('0x37')]['find']({'where':{'id':_0x23d674[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](function(_0x398a2d){return db['sequelize'][_0xeed4('0x6f')](function(_0x507710){return _0x398a2d['removeTeams'](_0x23d674[_0xeed4('0x3d')][_0xeed4('0x89')],{'transaction':_0x507710})['then'](function(){if(!_[_0xeed4('0x8a')](_0x4ddc95)){return _0x398a2d['removeAgents'](_0x4ddc95,{'transaction':_0x507710});}})[_0xeed4('0x2c')](function(){_0x4ddc95[_0xeed4('0x8b')](function(_0x41bcf0){socket[_0xeed4('0x73')](_0xeed4('0x8c'),{'UserId':_0x41bcf0,'OpenchannelQueueId':_0x398a2d['id']});});});});});});})[_0xeed4('0x2c')](respondWithStatusCode(_0x21b872,null))[_0xeed4('0x50')](handleError(_0x21b872,null));};exports['addAgents']=function(_0x1bc6c6,_0x3a26b4,_0x43bd03){return db['OpenchannelQueue'][_0xeed4('0x52')]({'where':{'id':_0x1bc6c6[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](handleEntityNotFound(_0x3a26b4,null))[_0xeed4('0x2c')](function(_0xdb8b1c){if(_0xdb8b1c){return _0xdb8b1c[_0xeed4('0x8d')](_0x1bc6c6[_0xeed4('0x54')][_0xeed4('0x89')],_[_0xeed4('0x8e')](_0x1bc6c6['body'],[_0xeed4('0x89'),'id'])||{})[_0xeed4('0x8f')](function(_0x4c27ce){for(var _0x2d8979=0x0;_0x2d8979<_0x1bc6c6[_0xeed4('0x54')][_0xeed4('0x89')][_0xeed4('0x43')];_0x2d8979+=0x1){socket[_0xeed4('0x73')](_0xeed4('0x74'),{'UserId':Number(_0x1bc6c6['body'][_0xeed4('0x89')][_0x2d8979]),'OpenchannelQueueId':Number(_0x1bc6c6[_0xeed4('0x51')]['id'])});}return _0x4c27ce;});}})['then'](respondWithResult(_0x3a26b4,null))[_0xeed4('0x50')](handleError(_0x3a26b4,null));};exports['removeAgents']=function(_0xd1d63c,_0x539d04,_0x2ffb84){return db[_0xeed4('0x37')][_0xeed4('0x52')]({'where':{'id':_0xd1d63c[_0xeed4('0x51')]['id']}})['then'](handleEntityNotFound(_0x539d04,null))['then'](function(_0x182d99){if(_0x182d99){return _0x182d99['removeAgents'](_0xd1d63c[_0xeed4('0x3d')]['ids'])[_0xeed4('0x2c')](function(){if(_[_0xeed4('0x90')](_0xd1d63c['query'][_0xeed4('0x89')])){for(var _0xb296cc=0x0;_0xb296cc<_0xd1d63c[_0xeed4('0x3d')]['ids'][_0xeed4('0x43')];_0xb296cc+=0x1){socket['emit'](_0xeed4('0x8c'),{'UserId':Number(_0xd1d63c['query'][_0xeed4('0x89')][_0xb296cc]),'OpenchannelQueueId':Number(_0xd1d63c[_0xeed4('0x51')]['id'])});}}else{socket[_0xeed4('0x73')](_0xeed4('0x8c'),{'UserId':Number(_0xd1d63c[_0xeed4('0x3d')][_0xeed4('0x89')]),'OpenchannelQueueId':Number(_0xd1d63c['params']['id'])});}});}})[_0xeed4('0x2c')](respondWithStatusCode(_0x539d04,null))[_0xeed4('0x50')](handleError(_0x539d04,null));};exports[_0xeed4('0x91')]=function(_0x403483,_0x56b9e1,_0x48a39b){var _0x53a35f={};var _0x1b4e86={};var _0x4c3f4f;var _0x51174d;return db[_0xeed4('0x37')][_0xeed4('0x5c')]({'where':{'id':_0x403483[_0xeed4('0x51')]['id']}})[_0xeed4('0x2c')](handleEntityNotFound(_0x56b9e1,null))[_0xeed4('0x2c')](function(_0x7471d9){if(_0x7471d9){_0x4c3f4f=_0x7471d9;_0x1b4e86['model']=_[_0xeed4('0x3e')](db[_0xeed4('0x60')]['rawAttributes']);_0x1b4e86[_0xeed4('0x3d')]=_[_0xeed4('0x3e')](_0x403483[_0xeed4('0x3d')]);_0x1b4e86[_0xeed4('0x3f')]=_[_0xeed4('0x40')](_0x1b4e86[_0xeed4('0x3c')],_0x1b4e86[_0xeed4('0x3d')]);_0x53a35f[_0xeed4('0x42')]=_[_0xeed4('0x40')](_0x1b4e86[_0xeed4('0x3c')],qs[_0xeed4('0x41')](_0x403483[_0xeed4('0x3d')][_0xeed4('0x41')]));_0x53a35f[_0xeed4('0x42')]=_0x53a35f[_0xeed4('0x42')][_0xeed4('0x43')]?_0x53a35f[_0xeed4('0x42')]:_0x1b4e86[_0xeed4('0x3c')];_0x53a35f[_0xeed4('0x46')]=qs[_0xeed4('0x47')](_0x403483[_0xeed4('0x3d')][_0xeed4('0x47')]);_0x53a35f['where']=qs[_0xeed4('0x3f')](_[_0xeed4('0x49')](_0x403483[_0xeed4('0x3d')],_0x1b4e86[_0xeed4('0x3f')]));if(_0x403483[_0xeed4('0x3d')][_0xeed4('0x4a')]){_0x53a35f[_0xeed4('0x48')]=_[_0xeed4('0x4b')](_0x53a35f[_0xeed4('0x48')],{'$or':_[_0xeed4('0x36')](_0x53a35f[_0xeed4('0x42')],function(_0x4bdeed){var _0x482e97={};_0x482e97[_0x4bdeed]={'$like':'%'+_0x403483[_0xeed4('0x3d')]['filter']+'%'};return _0x482e97;})});}_0x53a35f=_[_0xeed4('0x4b')]({},_0x53a35f,_0x403483['options']);return _0x4c3f4f[_0xeed4('0x91')](_0x53a35f);}})[_0xeed4('0x2c')](function(_0x682608){if(_0x682608){_0x51174d=_0x682608[_0xeed4('0x43')];if(!_0x403483[_0xeed4('0x3d')][_0xeed4('0x44')](_0xeed4('0x45'))){_0x53a35f[_0xeed4('0x25')]=qs[_0xeed4('0x25')](_0x403483[_0xeed4('0x3d')][_0xeed4('0x25')]);_0x53a35f[_0xeed4('0x22')]=qs['offset'](_0x403483[_0xeed4('0x3d')][_0xeed4('0x22')]);}return _0x4c3f4f['getAgents'](_0x53a35f);}})[_0xeed4('0x2c')](function(_0x2dffc1){if(_0x2dffc1){return _0x2dffc1?{'count':_0x51174d,'rows':_0x2dffc1}:null;}})[_0xeed4('0x2c')](respondWithResult(_0x56b9e1,null))[_0xeed4('0x50')](handleError(_0x56b9e1,null));};
\ No newline at end of file
index 0f3cbf7..6ad61cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe695=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelQueue','setMaxListeners'];(function(_0x5ca31c,_0x700c04){var _0x2406bb=function(_0x3da0ff){while(--_0x3da0ff){_0x5ca31c['push'](_0x5ca31c['shift']());}};_0x2406bb(++_0x700c04);}(_0xe695,0x128));var _0x5e69=function(_0x52fec6,_0x2dd1b9){_0x52fec6=_0x52fec6-0x0;var _0x359bbb=_0xe695[_0x52fec6];return _0x359bbb;};'use strict';var EventEmitter=require(_0x5e69('0x0'));var OpenchannelQueue=require(_0x5e69('0x1'))['db'][_0x5e69('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x5e69('0x3')](0x0);var events={'afterCreate':_0x5e69('0x4'),'afterUpdate':'update','afterDestroy':_0x5e69('0x5')};function emitEvent(_0x2d44b0){return function(_0xbee8b,_0x3cc956,_0x2bc4c1){OpenchannelQueueEvents[_0x5e69('0x6')](_0x2d44b0+':'+_0xbee8b['id'],_0xbee8b);OpenchannelQueueEvents[_0x5e69('0x6')](_0x2d44b0,_0xbee8b);_0x2bc4c1(null);};}for(var e in events){if(events[_0x5e69('0x7')](e)){var event=events[e];OpenchannelQueue[_0x5e69('0x8')](e,emitEvent(event));}}module[_0x5e69('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x93c8=['events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x1859e8,_0x577325){var _0x485082=function(_0x1a950c){while(--_0x1a950c){_0x1859e8['push'](_0x1859e8['shift']());}};_0x485082(++_0x577325);}(_0x93c8,0x10e));var _0x893c=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x93c8[_0x126558];return _0x1f6d14;};'use strict';var EventEmitter=require(_0x893c('0x0'));var OpenchannelQueue=require(_0x893c('0x1'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x893c('0x2')](0x0);var events={'afterCreate':_0x893c('0x3'),'afterUpdate':_0x893c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1e1839){return function(_0x4ce367,_0x32526,_0x130aff){OpenchannelQueueEvents[_0x893c('0x5')](_0x1e1839+':'+_0x4ce367['id'],_0x4ce367);OpenchannelQueueEvents[_0x893c('0x5')](_0x1e1839,_0x4ce367);_0x130aff(null);};}for(var e in events){if(events[_0x893c('0x6')](e)){var event=events[e];OpenchannelQueue[_0x893c('0x7')](e,emitEvent(event));}}module[_0x893c('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index d4d92b9..e264ae1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x719e=['./openchannelQueue.attributes','exports','OpenchannelQueue','openchannel_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1a7edf,_0x5c4e04){var _0x56c1d9=function(_0x23947e){while(--_0x23947e){_0x1a7edf['push'](_0x1a7edf['shift']());}};_0x56c1d9(++_0x5c4e04);}(_0x719e,0x130));var _0xe719=function(_0x4ef721,_0x1513f3){_0x4ef721=_0x4ef721-0x0;var _0x1b035e=_0x719e[_0x4ef721];return _0x1b035e;};'use strict';var _=require(_0xe719('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe719('0x1'));var moment=require(_0xe719('0x2'));var BPromise=require(_0xe719('0x3'));var rp=require(_0xe719('0x4'));var fs=require('fs');var path=require(_0xe719('0x5'));var rimraf=require(_0xe719('0x6'));var config=require(_0xe719('0x7'));var attributes=require(_0xe719('0x8'));module[_0xe719('0x9')]=function(_0x57f49b,_0x57f055){return _0x57f49b['define'](_0xe719('0xa'),attributes,{'tableName':_0xe719('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5124=['../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x210e5d,_0x455fe9){var _0x3cfc28=function(_0x2a239f){while(--_0x2a239f){_0x210e5d['push'](_0x210e5d['shift']());}};_0x3cfc28(++_0x455fe9);}(_0x5124,0x1c6));var _0x4512=function(_0x27e065,_0x370d12){_0x27e065=_0x27e065-0x0;var _0x12d5df=_0x5124[_0x27e065];return _0x12d5df;};'use strict';var _=require(_0x4512('0x0'));var util=require(_0x4512('0x1'));var logger=require(_0x4512('0x2'))('api');var moment=require(_0x4512('0x3'));var BPromise=require(_0x4512('0x4'));var rp=require(_0x4512('0x5'));var fs=require('fs');var path=require(_0x4512('0x6'));var rimraf=require(_0x4512('0x7'));var config=require(_0x4512('0x8'));var attributes=require(_0x4512('0x9'));module[_0x4512('0xa')]=function(_0x2de8da,_0x26e93d){return _0x2de8da[_0x4512('0xb')](_0x4512('0xc'),attributes,{'tableName':_0x4512('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba434b1..7d3bd0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d61=['info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetOpenchannelQueue','options','raw','where','attributes','limit','include','map','model','stringify','ShowOpenchannelQueue','OpenchannelQueue','lodash','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','then'];(function(_0x3d83e8,_0x4c62be){var _0x53d29f=function(_0x5c1f4e){while(--_0x5c1f4e){_0x3d83e8['push'](_0x3d83e8['shift']());}};_0x53d29f(++_0x4c62be);}(_0x3d61,0x1ea));var _0x13d6=function(_0xbec4f4,_0x4de55f){_0xbec4f4=_0xbec4f4-0x0;var _0x56b24f=_0x3d61[_0xbec4f4];return _0x56b24f;};'use strict';var _=require(_0x13d6('0x0'));var util=require('util');var moment=require(_0x13d6('0x1'));var BPromise=require('bluebird');var rs=require(_0x13d6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x13d6('0x3'));var logger=require(_0x13d6('0x4'))('rpc');var config=require(_0x13d6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x13d6('0x6')][_0x13d6('0x7')]({'port':0x232a});config['redis']=_[_0x13d6('0x8')](config[_0x13d6('0x9')],{'host':_0x13d6('0xa'),'port':0x18eb});var socket=require(_0x13d6('0xb'))(new Redis(config[_0x13d6('0x9')]));require(_0x13d6('0xc'))['register'](socket);function respondWithRpcPromise(_0x54f439,_0x4e072d,_0x38d458){return new BPromise(function(_0x2fa0de,_0x360f61){return client['request'](_0x54f439,_0x38d458)[_0x13d6('0xd')](function(_0x39ee55){logger[_0x13d6('0xe')](_0x13d6('0xf'),_0x4e072d,_0x13d6('0x10'));logger[_0x13d6('0x11')](_0x13d6('0x12'),_0x4e072d,_0x13d6('0x10'),JSON['stringify'](_0x39ee55));if(_0x39ee55[_0x13d6('0x13')]){if(_0x39ee55[_0x13d6('0x13')][_0x13d6('0x14')]===0x1f4){logger[_0x13d6('0x13')](_0x13d6('0xf'),_0x4e072d,_0x39ee55['error'][_0x13d6('0x15')]);return _0x360f61(_0x39ee55['error'][_0x13d6('0x15')]);}logger[_0x13d6('0x13')](_0x13d6('0xf'),_0x4e072d,_0x39ee55['error']['message']);return _0x2fa0de(_0x39ee55['error'][_0x13d6('0x15')]);}else{logger[_0x13d6('0xe')](_0x13d6('0xf'),_0x4e072d,_0x13d6('0x10'));_0x2fa0de(_0x39ee55[_0x13d6('0x16')]['message']);}})[_0x13d6('0x17')](function(_0x3666d0){logger[_0x13d6('0x13')](_0x13d6('0xf'),_0x4e072d,_0x3666d0);_0x360f61(_0x3666d0);});});}exports[_0x13d6('0x18')]=function(_0x410086){var _0x5f87a7=this;return new Promise(function(_0x1e0582,_0x500235){return db['OpenchannelQueue']['findAll']({'raw':_0x410086[_0x13d6('0x19')]?_0x410086[_0x13d6('0x19')][_0x13d6('0x1a')]===undefined?!![]:![]:!![],'where':_0x410086['options']?_0x410086[_0x13d6('0x19')][_0x13d6('0x1b')]||null:null,'attributes':_0x410086[_0x13d6('0x19')]?_0x410086[_0x13d6('0x19')][_0x13d6('0x1c')]||null:null,'limit':_0x410086[_0x13d6('0x19')]?_0x410086['options'][_0x13d6('0x1d')]||null:null,'include':_0x410086[_0x13d6('0x19')]?_0x410086[_0x13d6('0x19')][_0x13d6('0x1e')]?_[_0x13d6('0x1f')](_0x410086[_0x13d6('0x19')][_0x13d6('0x1e')],function(_0x2e28ba){return{'model':db[_0x2e28ba[_0x13d6('0x20')]],'as':_0x2e28ba['as'],'attributes':_0x2e28ba[_0x13d6('0x1c')],'include':_0x2e28ba['include']?_[_0x13d6('0x1f')](_0x2e28ba[_0x13d6('0x1e')],function(_0x76b168){return{'model':db[_0x76b168[_0x13d6('0x20')]],'as':_0x76b168['as'],'attributes':_0x76b168['attributes'],'include':_0x76b168[_0x13d6('0x1e')]?_[_0x13d6('0x1f')](_0x76b168['include'],function(_0x3c5f64){return{'model':db[_0x3c5f64[_0x13d6('0x20')]],'as':_0x3c5f64['as'],'attributes':_0x3c5f64[_0x13d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x13d6('0xd')](function(_0x27afed){logger[_0x13d6('0xe')]('GetOpenchannelQueue',_0x410086);logger[_0x13d6('0x11')](_0x13d6('0x18'),_0x410086,JSON[_0x13d6('0x21')](_0x27afed));_0x1e0582(_0x27afed);})['catch'](function(_0x3d35e4){logger[_0x13d6('0x13')](_0x13d6('0x18'),_0x3d35e4[_0x13d6('0x15')],_0x410086);_0x500235(_0x5f87a7[_0x13d6('0x13')](0x1f4,_0x3d35e4['message']));});});};exports[_0x13d6('0x22')]=function(_0x4455bd){var _0x264672=this;return new Promise(function(_0x879116,_0x5db8b5){return db[_0x13d6('0x23')]['find']({'raw':_0x4455bd['options']?_0x4455bd[_0x13d6('0x19')][_0x13d6('0x1a')]===undefined?!![]:![]:!![],'where':_0x4455bd['options']?_0x4455bd[_0x13d6('0x19')]['where']||null:null,'attributes':_0x4455bd[_0x13d6('0x19')]?_0x4455bd[_0x13d6('0x19')][_0x13d6('0x1c')]||null:null,'include':_0x4455bd[_0x13d6('0x19')]?_0x4455bd[_0x13d6('0x19')]['include']?_[_0x13d6('0x1f')](_0x4455bd['options'][_0x13d6('0x1e')],function(_0x52457b){return{'model':db[_0x52457b[_0x13d6('0x20')]],'as':_0x52457b['as'],'attributes':_0x52457b[_0x13d6('0x1c')],'include':_0x52457b['include']?_[_0x13d6('0x1f')](_0x52457b['include'],function(_0x2bcdc4){return{'model':db[_0x2bcdc4[_0x13d6('0x20')]],'as':_0x2bcdc4['as'],'attributes':_0x2bcdc4[_0x13d6('0x1c')],'include':_0x2bcdc4[_0x13d6('0x1e')]?_[_0x13d6('0x1f')](_0x2bcdc4[_0x13d6('0x1e')],function(_0xbb2ebb){return{'model':db[_0xbb2ebb[_0x13d6('0x20')]],'as':_0xbb2ebb['as'],'attributes':_0xbb2ebb[_0x13d6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x13d6('0xd')](function(_0x26e7c9){logger[_0x13d6('0xe')](_0x13d6('0x22'),_0x4455bd);logger['debug'](_0x13d6('0x22'),_0x4455bd,JSON[_0x13d6('0x21')](_0x26e7c9));_0x879116(_0x26e7c9);})['catch'](function(_0x5b0f69){logger[_0x13d6('0x13')]('ShowOpenchannelQueue',_0x5b0f69['message'],_0x4455bd);_0x5db8b5(_0x264672['error'](0x1f4,_0x5b0f69[_0x13d6('0x15')]));});});};
\ No newline at end of file
+var _0x7176=['register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetOpenchannelQueue','debug','ShowOpenchannelQueue','find','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','./openchannelQueue.socket'];(function(_0x18298c,_0x49f0ee){var _0x27bf0a=function(_0x1b9ec4){while(--_0x1b9ec4){_0x18298c['push'](_0x18298c['shift']());}};_0x27bf0a(++_0x49f0ee);}(_0x7176,0x6b));var _0x6717=function(_0x288e72,_0xd94c34){_0x288e72=_0x288e72-0x0;var _0x4af292=_0x7176[_0x288e72];return _0x4af292;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6717('0x0'));var BPromise=require(_0x6717('0x1'));var rs=require(_0x6717('0x2'));var fs=require('fs');var Redis=require(_0x6717('0x3'));var db=require(_0x6717('0x4'))['db'];var utils=require(_0x6717('0x5'));var logger=require(_0x6717('0x6'))(_0x6717('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6717('0x8')]['http']({'port':0x232a});config[_0x6717('0x9')]=_[_0x6717('0xa')](config[_0x6717('0x9')],{'host':_0x6717('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6717('0x9')]));require(_0x6717('0xc'))[_0x6717('0xd')](socket);function respondWithRpcPromise(_0x3ad3e2,_0x1e0652,_0x415ad3){return new BPromise(function(_0x643707,_0x2c79f1){return client[_0x6717('0xe')](_0x3ad3e2,_0x415ad3)[_0x6717('0xf')](function(_0x2d36ba){logger[_0x6717('0x10')](_0x6717('0x11'),_0x1e0652,_0x6717('0x12'));logger['debug'](_0x6717('0x13'),_0x1e0652,_0x6717('0x12'),JSON[_0x6717('0x14')](_0x2d36ba));if(_0x2d36ba[_0x6717('0x15')]){if(_0x2d36ba[_0x6717('0x15')][_0x6717('0x16')]===0x1f4){logger[_0x6717('0x15')]('OpenchannelQueue,\x20%s,\x20%s',_0x1e0652,_0x2d36ba[_0x6717('0x15')][_0x6717('0x17')]);return _0x2c79f1(_0x2d36ba[_0x6717('0x15')][_0x6717('0x17')]);}logger[_0x6717('0x15')](_0x6717('0x11'),_0x1e0652,_0x2d36ba[_0x6717('0x15')]['message']);return _0x643707(_0x2d36ba[_0x6717('0x15')]['message']);}else{logger['info'](_0x6717('0x11'),_0x1e0652,_0x6717('0x12'));_0x643707(_0x2d36ba[_0x6717('0x18')][_0x6717('0x17')]);}})[_0x6717('0x19')](function(_0xffba1e){logger['error'](_0x6717('0x11'),_0x1e0652,_0xffba1e);_0x2c79f1(_0xffba1e);});});}exports['GetOpenchannelQueue']=function(_0x27d577){var _0x4307a7=this;return new Promise(function(_0x4d916e,_0x413afc){return db[_0x6717('0x1a')][_0x6717('0x1b')]({'raw':_0x27d577[_0x6717('0x1c')]?_0x27d577[_0x6717('0x1c')][_0x6717('0x1d')]===undefined?!![]:![]:!![],'where':_0x27d577[_0x6717('0x1c')]?_0x27d577[_0x6717('0x1c')][_0x6717('0x1e')]||null:null,'attributes':_0x27d577['options']?_0x27d577[_0x6717('0x1c')][_0x6717('0x1f')]||null:null,'limit':_0x27d577[_0x6717('0x1c')]?_0x27d577['options'][_0x6717('0x20')]||null:null,'include':_0x27d577[_0x6717('0x1c')]?_0x27d577['options'][_0x6717('0x21')]?_[_0x6717('0x22')](_0x27d577['options'][_0x6717('0x21')],function(_0x1a7837){return{'model':db[_0x1a7837[_0x6717('0x23')]],'as':_0x1a7837['as'],'attributes':_0x1a7837['attributes'],'include':_0x1a7837[_0x6717('0x21')]?_[_0x6717('0x22')](_0x1a7837[_0x6717('0x21')],function(_0x2c9d49){return{'model':db[_0x2c9d49[_0x6717('0x23')]],'as':_0x2c9d49['as'],'attributes':_0x2c9d49['attributes'],'include':_0x2c9d49[_0x6717('0x21')]?_[_0x6717('0x22')](_0x2c9d49['include'],function(_0x4d15b0){return{'model':db[_0x4d15b0[_0x6717('0x23')]],'as':_0x4d15b0['as'],'attributes':_0x4d15b0[_0x6717('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3277b7){logger[_0x6717('0x10')](_0x6717('0x24'),_0x27d577);logger[_0x6717('0x25')](_0x6717('0x24'),_0x27d577,JSON['stringify'](_0x3277b7));_0x4d916e(_0x3277b7);})[_0x6717('0x19')](function(_0x308835){logger[_0x6717('0x15')](_0x6717('0x24'),_0x308835[_0x6717('0x17')],_0x27d577);_0x413afc(_0x4307a7[_0x6717('0x15')](0x1f4,_0x308835[_0x6717('0x17')]));});});};exports[_0x6717('0x26')]=function(_0x422201){var _0x3746fe=this;return new Promise(function(_0x25bd53,_0x32c7cb){return db[_0x6717('0x1a')][_0x6717('0x27')]({'raw':_0x422201[_0x6717('0x1c')]?_0x422201[_0x6717('0x1c')][_0x6717('0x1d')]===undefined?!![]:![]:!![],'where':_0x422201[_0x6717('0x1c')]?_0x422201[_0x6717('0x1c')][_0x6717('0x1e')]||null:null,'attributes':_0x422201[_0x6717('0x1c')]?_0x422201[_0x6717('0x1c')][_0x6717('0x1f')]||null:null,'include':_0x422201[_0x6717('0x1c')]?_0x422201[_0x6717('0x1c')][_0x6717('0x21')]?_[_0x6717('0x22')](_0x422201['options'][_0x6717('0x21')],function(_0x228216){return{'model':db[_0x228216[_0x6717('0x23')]],'as':_0x228216['as'],'attributes':_0x228216[_0x6717('0x1f')],'include':_0x228216[_0x6717('0x21')]?_[_0x6717('0x22')](_0x228216[_0x6717('0x21')],function(_0x333596){return{'model':db[_0x333596[_0x6717('0x23')]],'as':_0x333596['as'],'attributes':_0x333596[_0x6717('0x1f')],'include':_0x333596[_0x6717('0x21')]?_[_0x6717('0x22')](_0x333596[_0x6717('0x21')],function(_0xce308f){return{'model':db[_0xce308f[_0x6717('0x23')]],'as':_0xce308f['as'],'attributes':_0xce308f[_0x6717('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6717('0xf')](function(_0x249548){logger['info'](_0x6717('0x26'),_0x422201);logger[_0x6717('0x25')]('ShowOpenchannelQueue',_0x422201,JSON[_0x6717('0x14')](_0x249548));_0x25bd53(_0x249548);})[_0x6717('0x19')](function(_0x2f46e7){logger[_0x6717('0x15')](_0x6717('0x26'),_0x2f46e7[_0x6717('0x17')],_0x422201);_0x32c7cb(_0x3746fe['error'](0x1f4,_0x2f46e7['message']));});});};
\ No newline at end of file
index 4062c9c..f0a3dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81f3=['remove','update','emit','register','length','openchannelQueue:','save'];(function(_0x57b236,_0x30614e){var _0x4feb29=function(_0x26d3e6){while(--_0x26d3e6){_0x57b236['push'](_0x57b236['shift']());}};_0x4feb29(++_0x30614e);}(_0x81f3,0x187));var _0x381f=function(_0x259bd4,_0x5e4923){_0x259bd4=_0x259bd4-0x0;var _0x993e47=_0x81f3[_0x259bd4];return _0x993e47;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0x381f('0x0'),_0x381f('0x1'),_0x381f('0x2')];function createListener(_0x2d7cf5,_0x37c316){return function(_0x5d4a8d){_0x37c316[_0x381f('0x3')](_0x2d7cf5,_0x5d4a8d);};}function removeListener(_0x2545ba,_0x2ee666){return function(){OpenchannelQueueEvents['removeListener'](_0x2545ba,_0x2ee666);};}exports[_0x381f('0x4')]=function(_0x308e56){for(var _0x50acae=0x0,_0x51571a=events[_0x381f('0x5')];_0x50acae<_0x51571a;_0x50acae++){var _0x2601e8=events[_0x50acae];var _0x3ff799=createListener(_0x381f('0x6')+_0x2601e8,_0x308e56);OpenchannelQueueEvents['on'](_0x2601e8,_0x3ff799);}};
\ No newline at end of file
+var _0x0bba=['emit','register','openchannelQueue:','save','remove','update'];(function(_0x38e57d,_0x4b8e13){var _0x2af007=function(_0x1e6b69){while(--_0x1e6b69){_0x38e57d['push'](_0x38e57d['shift']());}};_0x2af007(++_0x4b8e13);}(_0x0bba,0x129));var _0xa0bb=function(_0xc28920,_0x2d5919){_0xc28920=_0xc28920-0x0;var _0x381942=_0x0bba[_0xc28920];return _0x381942;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xa0bb('0x0'),_0xa0bb('0x1'),_0xa0bb('0x2')];function createListener(_0x259478,_0x4f1116){return function(_0x3e1fc5){_0x4f1116[_0xa0bb('0x3')](_0x259478,_0x3e1fc5);};}function removeListener(_0x1b1961,_0x2d2232){return function(){OpenchannelQueueEvents['removeListener'](_0x1b1961,_0x2d2232);};}exports[_0xa0bb('0x4')]=function(_0x500d31){for(var _0x275348=0x0,_0x40ee29=events['length'];_0x275348<_0x40ee29;_0x275348++){var _0x1f9ac4=events[_0x275348];var _0x291b02=createListener(_0xa0bb('0x5')+_0x1f9ac4,_0x500d31);OpenchannelQueueEvents['on'](_0x1f9ac4,_0x291b02);}};
\ No newline at end of file
index 116ad20..e20f944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28fc=['put','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x488b3e,_0x40f7fb){var _0x36fc4f=function(_0x5dfd13){while(--_0x5dfd13){_0x488b3e['push'](_0x488b3e['shift']());}};_0x36fc4f(++_0x40f7fb);}(_0x28fc,0x1f0));var _0xc28f=function(_0x24f6b2,_0x2b91f7){_0x24f6b2=_0x24f6b2-0x0;var _0x4b4661=_0x28fc[_0x24f6b2];return _0x4b4661;};'use strict';var multer=require(_0xc28f('0x0'));var util=require(_0xc28f('0x1'));var path=require(_0xc28f('0x2'));var timeout=require(_0xc28f('0x3'));var express=require('express');var router=express[_0xc28f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc28f('0x5'));var interaction=require(_0xc28f('0x6'));var config=require(_0xc28f('0x7'));var controller=require(_0xc28f('0x8'));router[_0xc28f('0x9')]('/',auth[_0xc28f('0xa')](),controller[_0xc28f('0xb')]);router[_0xc28f('0x9')](_0xc28f('0xc'),auth[_0xc28f('0xa')](),controller['describe']);router[_0xc28f('0x9')](_0xc28f('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc28f('0xa')](),controller['create']);router[_0xc28f('0xe')](_0xc28f('0xd'),auth[_0xc28f('0xa')](),controller['update']);router['delete'](_0xc28f('0xd'),auth[_0xc28f('0xa')](),controller[_0xc28f('0xf')]);module[_0xc28f('0x10')]=router;
\ No newline at end of file
+var _0x59df=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','destroy','multer','util','path','connect-timeout','express'];(function(_0x491485,_0xed71e8){var _0x38e71c=function(_0x33e72c){while(--_0x33e72c){_0x491485['push'](_0x491485['shift']());}};_0x38e71c(++_0xed71e8);}(_0x59df,0x1f3));var _0xf59d=function(_0x2a927c,_0x599c05){_0x2a927c=_0x2a927c-0x0;var _0x4f91ea=_0x59df[_0x2a927c];return _0x4f91ea;};'use strict';var multer=require(_0xf59d('0x0'));var util=require(_0xf59d('0x1'));var path=require(_0xf59d('0x2'));var timeout=require(_0xf59d('0x3'));var express=require(_0xf59d('0x4'));var router=express[_0xf59d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf59d('0x6'));var interaction=require(_0xf59d('0x7'));var config=require(_0xf59d('0x8'));var controller=require(_0xf59d('0x9'));router[_0xf59d('0xa')]('/',auth[_0xf59d('0xb')](),controller[_0xf59d('0xc')]);router[_0xf59d('0xa')](_0xf59d('0xd'),auth[_0xf59d('0xb')](),controller[_0xf59d('0xe')]);router[_0xf59d('0xa')]('/:id',auth[_0xf59d('0xb')](),controller[_0xf59d('0xf')]);router[_0xf59d('0x10')]('/',auth[_0xf59d('0xb')](),controller[_0xf59d('0x11')]);router[_0xf59d('0x12')](_0xf59d('0x13'),auth[_0xf59d('0xb')](),controller['update']);router['delete'](_0xf59d('0x13'),auth[_0xf59d('0xb')](),controller[_0xf59d('0x14')]);module['exports']=router;
\ No newline at end of file
index 98f0702..ddd16b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x931c=['exports','DATE','STRING','moment','sequelize'];(function(_0x4b95ca,_0x2a7579){var _0x235987=function(_0xd57d4d){while(--_0xd57d4d){_0x4b95ca['push'](_0x4b95ca['shift']());}};_0x235987(++_0x2a7579);}(_0x931c,0x14d));var _0xc931=function(_0x3e0145,_0x4edd59){_0x3e0145=_0x3e0145-0x0;var _0x4048ba=_0x931c[_0x3e0145];return _0x4048ba;};'use strict';var moment=require(_0xc931('0x0'));var Sequelize=require(_0xc931('0x1'));module[_0xc931('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc931('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xc931('0x3')]},'exitAt':{'type':Sequelize[_0xc931('0x3')]},'reason':{'type':Sequelize[_0xc931('0x4')]}};
\ No newline at end of file
+var _0xb0ac=['moment','sequelize','STRING','DATE'];(function(_0x1128a0,_0x40bb1f){var _0xbd4e17=function(_0x269380){while(--_0x269380){_0x1128a0['push'](_0x1128a0['shift']());}};_0xbd4e17(++_0x40bb1f);}(_0xb0ac,0x110));var _0xcb0a=function(_0x4ea4ed,_0x47e40f){_0x4ea4ed=_0x4ea4ed-0x0;var _0x140fb2=_0xb0ac[_0x4ea4ed];return _0x140fb2;};'use strict';var moment=require(_0xcb0a('0x0'));var Sequelize=require(_0xcb0a('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xcb0a('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xcb0a('0x3')]},'leaveAt':{'type':Sequelize[_0xcb0a('0x3')]},'acceptAt':{'type':Sequelize[_0xcb0a('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 77a0e7a..1db4896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfb3=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','save','then','destroy','end','error','stack','name','send','index','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filter','merge','OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','options','find','create','body','update','describe','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring'];(function(_0x4f6035,_0x403f70){var _0x52e533=function(_0x129884){while(--_0x129884){_0x4f6035['push'](_0x4f6035['shift']());}};_0x52e533(++_0x403f70);}(_0xbfb3,0x11c));var _0x3bfb=function(_0x56d5df,_0x59e405){_0x56d5df=_0x56d5df-0x0;var _0x55383d=_0xbfb3[_0x56d5df];return _0x55383d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x3bfb('0x0'));var jsonpatch=require(_0x3bfb('0x1'));var rp=require(_0x3bfb('0x2'));var moment=require(_0x3bfb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3bfb('0x4'));var util=require(_0x3bfb('0x5'));var path=require(_0x3bfb('0x6'));var sox=require(_0x3bfb('0x7'));var csv=require(_0x3bfb('0x8'));var ejs=require(_0x3bfb('0x9'));var fs=require('fs');var fs_extra=require(_0x3bfb('0xa'));var _=require('lodash');var squel=require(_0x3bfb('0xb'));var crypto=require(_0x3bfb('0xc'));var jsforce=require(_0x3bfb('0xd'));var deskjs=require(_0x3bfb('0xe'));var toCsv=require(_0x3bfb('0x8'));var querystring=require(_0x3bfb('0xf'));var Papa=require(_0x3bfb('0x10'));var Redis=require(_0x3bfb('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3bfb('0x12'));var as=require(_0x3bfb('0x13'));var hardwareService=require(_0x3bfb('0x14'));var logger=require('../../config/logger')(_0x3bfb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3bfb('0x16'))['db'];function respondWithStatusCode(_0x25c7c1,_0x114697){_0x114697=_0x114697||0xcc;return function(_0x4b66e0){if(_0x4b66e0){return _0x25c7c1[_0x3bfb('0x17')](_0x114697);}return _0x25c7c1[_0x3bfb('0x18')](_0x114697)['end']();};}function respondWithResult(_0x2b1265,_0x35288f){_0x35288f=_0x35288f||0xc8;return function(_0x509185){if(_0x509185){return _0x2b1265[_0x3bfb('0x18')](_0x35288f)['json'](_0x509185);}};}function respondWithFilteredResult(_0x20c39a,_0x222fbf){return function(_0x2b837d){if(_0x2b837d){var _0x9b0938=typeof _0x222fbf[_0x3bfb('0x19')]===_0x3bfb('0x1a')&&typeof _0x222fbf[_0x3bfb('0x1b')]==='undefined';var _0x262e05=_0x2b837d['count'];var _0x5a78d5=_0x9b0938?0x0:_0x222fbf[_0x3bfb('0x19')];var _0x3e5250=_0x9b0938?_0x2b837d[_0x3bfb('0x1c')]:_0x222fbf[_0x3bfb('0x19')]+_0x222fbf[_0x3bfb('0x1b')];var _0x4bbffb;if(_0x3e5250>=_0x262e05){_0x3e5250=_0x262e05;_0x4bbffb=0xc8;}else{_0x4bbffb=0xce;}_0x20c39a['status'](_0x4bbffb);return _0x20c39a[_0x3bfb('0x1d')]('Content-Range',_0x5a78d5+'-'+_0x3e5250+'/'+_0x262e05)[_0x3bfb('0x1e')](_0x2b837d);}return null;};}function patchUpdates(_0x4fb8a8){return function(_0x26c794){try{jsonpatch[_0x3bfb('0x1f')](_0x26c794,_0x4fb8a8,!![]);}catch(_0x4cb7e5){return BPromise[_0x3bfb('0x20')](_0x4cb7e5);}return _0x26c794[_0x3bfb('0x21')]();};}function saveUpdates(_0x51b0cf,_0x47cb71){return function(_0x40ccee){if(_0x40ccee){return _0x40ccee['update'](_0x51b0cf)[_0x3bfb('0x22')](function(_0x14e704){return _0x14e704;});}return null;};}function removeEntity(_0x3c035e,_0x27bbab){return function(_0x2899d2){if(_0x2899d2){return _0x2899d2[_0x3bfb('0x23')]()[_0x3bfb('0x22')](function(){_0x3c035e[_0x3bfb('0x18')](0xcc)[_0x3bfb('0x24')]();});}};}function handleEntityNotFound(_0x227415,_0x23f5ca){return function(_0x383afc){if(!_0x383afc){_0x227415['sendStatus'](0x194);}return _0x383afc;};}function handleError(_0x48e1c3,_0x8dcb51){_0x8dcb51=_0x8dcb51||0x1f4;return function(_0x3c2591){logger[_0x3bfb('0x25')](_0x3c2591[_0x3bfb('0x26')]);if(_0x3c2591[_0x3bfb('0x27')]){delete _0x3c2591[_0x3bfb('0x27')];}_0x48e1c3[_0x3bfb('0x18')](_0x8dcb51)[_0x3bfb('0x28')](_0x3c2591);};}exports[_0x3bfb('0x29')]=function(_0x28d508,_0x3c6c8f){var _0x1da945={},_0x5b5c18={},_0x1993d9={'count':0x0,'rows':[]};var _0x50ddd9=_['map'](db['OpenchannelQueueReport']['rawAttributes'],function(_0x598017){return{'name':_0x598017[_0x3bfb('0x2a')],'type':_0x598017[_0x3bfb('0x2b')][_0x3bfb('0x2c')]};});_0x5b5c18[_0x3bfb('0x2d')]=_[_0x3bfb('0x2e')](_0x50ddd9,'name');_0x5b5c18[_0x3bfb('0x2f')]=_[_0x3bfb('0x30')](_0x28d508[_0x3bfb('0x2f')]);_0x5b5c18[_0x3bfb('0x31')]=_['intersection'](_0x5b5c18[_0x3bfb('0x2d')],_0x5b5c18[_0x3bfb('0x2f')]);_0x1da945[_0x3bfb('0x32')]=_[_0x3bfb('0x33')](_0x5b5c18[_0x3bfb('0x2d')],qs['fields'](_0x28d508['query']['fields']));_0x1da945['attributes']=_0x1da945[_0x3bfb('0x32')][_0x3bfb('0x34')]?_0x1da945[_0x3bfb('0x32')]:_0x5b5c18[_0x3bfb('0x2d')];if(!_0x28d508[_0x3bfb('0x2f')][_0x3bfb('0x35')](_0x3bfb('0x36'))){_0x1da945[_0x3bfb('0x1b')]=qs['limit'](_0x28d508[_0x3bfb('0x2f')][_0x3bfb('0x1b')]);_0x1da945[_0x3bfb('0x19')]=qs[_0x3bfb('0x19')](_0x28d508[_0x3bfb('0x2f')]['offset']);}_0x1da945['order']=qs[_0x3bfb('0x37')](_0x28d508['query']['sort']);_0x1da945[_0x3bfb('0x38')]=qs[_0x3bfb('0x31')](_['pick'](_0x28d508['query'],_0x5b5c18[_0x3bfb('0x31')]),_0x50ddd9);if(_0x28d508['query'][_0x3bfb('0x39')]){_0x1da945['where']=_[_0x3bfb('0x3a')](_0x1da945[_0x3bfb('0x38')],{'$or':_[_0x3bfb('0x2e')](_0x50ddd9,function(_0x4478a4){if(_0x4478a4['type']!=='VIRTUAL'){var _0x5c99f3={};_0x5c99f3[_0x4478a4[_0x3bfb('0x27')]]={'$like':'%'+_0x28d508['query'][_0x3bfb('0x39')]+'%'};return _0x5c99f3;}})});}_0x1da945=_['merge']({},_0x1da945,_0x28d508['options']);var _0x48e5f2={'where':_0x1da945[_0x3bfb('0x38')]};return db[_0x3bfb('0x3b')][_0x3bfb('0x1c')](_0x48e5f2)['then'](function(_0x4c800a){_0x1993d9[_0x3bfb('0x1c')]=_0x4c800a;if(_0x28d508[_0x3bfb('0x2f')][_0x3bfb('0x3c')]){_0x1da945[_0x3bfb('0x3d')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x3bfb('0x3e')](_0x1da945);})[_0x3bfb('0x22')](function(_0x308b64){_0x1993d9[_0x3bfb('0x3f')]=_0x308b64;return _0x1993d9;})[_0x3bfb('0x22')](respondWithFilteredResult(_0x3c6c8f,_0x1da945))[_0x3bfb('0x40')](handleError(_0x3c6c8f,null));};exports[_0x3bfb('0x41')]=function(_0x3a56cf,_0x512e04){var _0x25a0dc={'raw':!![],'where':{'id':_0x3a56cf[_0x3bfb('0x42')]['id']}},_0x312b15={};_0x312b15['model']=_[_0x3bfb('0x30')](db['OpenchannelQueueReport'][_0x3bfb('0x43')]);_0x312b15[_0x3bfb('0x2f')]=_['keys'](_0x3a56cf[_0x3bfb('0x2f')]);_0x312b15[_0x3bfb('0x31')]=_['intersection'](_0x312b15[_0x3bfb('0x2d')],_0x312b15[_0x3bfb('0x2f')]);_0x25a0dc[_0x3bfb('0x32')]=_[_0x3bfb('0x33')](_0x312b15[_0x3bfb('0x2d')],qs['fields'](_0x3a56cf[_0x3bfb('0x2f')][_0x3bfb('0x44')]));_0x25a0dc[_0x3bfb('0x32')]=_0x25a0dc['attributes'][_0x3bfb('0x34')]?_0x25a0dc[_0x3bfb('0x32')]:_0x312b15[_0x3bfb('0x2d')];if(_0x3a56cf[_0x3bfb('0x2f')][_0x3bfb('0x3c')]){_0x25a0dc[_0x3bfb('0x3d')]=[{'all':!![]}];}_0x25a0dc=_['merge']({},_0x25a0dc,_0x3a56cf[_0x3bfb('0x45')]);return db[_0x3bfb('0x3b')][_0x3bfb('0x46')](_0x25a0dc)[_0x3bfb('0x22')](handleEntityNotFound(_0x512e04,null))[_0x3bfb('0x22')](respondWithResult(_0x512e04,null))['catch'](handleError(_0x512e04,null));};exports[_0x3bfb('0x47')]=function(_0x516118,_0x153422){return db['OpenchannelQueueReport'][_0x3bfb('0x47')](_0x516118[_0x3bfb('0x48')],{})['then'](respondWithResult(_0x153422,0xc9))['catch'](handleError(_0x153422,null));};exports[_0x3bfb('0x49')]=function(_0x3c46bc,_0x4b8391){if(_0x3c46bc['body']['id']){delete _0x3c46bc[_0x3bfb('0x48')]['id'];}return db[_0x3bfb('0x3b')][_0x3bfb('0x46')]({'where':{'id':_0x3c46bc[_0x3bfb('0x42')]['id']}})[_0x3bfb('0x22')](handleEntityNotFound(_0x4b8391,null))[_0x3bfb('0x22')](saveUpdates(_0x3c46bc['body'],null))[_0x3bfb('0x22')](respondWithResult(_0x4b8391,null))['catch'](handleError(_0x4b8391,null));};exports[_0x3bfb('0x23')]=function(_0x4f1334,_0x3bc9ae){return db['OpenchannelQueueReport'][_0x3bfb('0x46')]({'where':{'id':_0x4f1334[_0x3bfb('0x42')]['id']}})[_0x3bfb('0x22')](handleEntityNotFound(_0x3bc9ae,null))[_0x3bfb('0x22')](removeEntity(_0x3bc9ae,null))[_0x3bfb('0x40')](handleError(_0x3bc9ae,null));};exports['describe']=function(_0x9ee0f3,_0x38704a){return db[_0x3bfb('0x3b')][_0x3bfb('0x4a')]()[_0x3bfb('0x22')](respondWithResult(_0x38704a,null))[_0x3bfb('0x40')](handleError(_0x38704a,null));};
\ No newline at end of file
+var _0xb532=['OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','params','keys','attributes','find','create','update','body','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','then','error','name','send','rawAttributes','type','key','model','query','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','map','VIRTUAL','options'];(function(_0x7d0a91,_0x12de53){var _0x21139b=function(_0x1801ba){while(--_0x1801ba){_0x7d0a91['push'](_0x7d0a91['shift']());}};_0x21139b(++_0x12de53);}(_0xb532,0xa3));var _0x2b53=function(_0x596b3d,_0x2a6e03){_0x596b3d=_0x596b3d-0x0;var _0x53dda8=_0xb532[_0x596b3d];return _0x53dda8;};'use strict';var emlformat=require(_0x2b53('0x0'));var rimraf=require(_0x2b53('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b53('0x2'));var rp=require(_0x2b53('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2b53('0x4'));var util=require(_0x2b53('0x5'));var path=require('path');var sox=require(_0x2b53('0x6'));var csv=require(_0x2b53('0x7'));var ejs=require(_0x2b53('0x8'));var fs=require('fs');var fs_extra=require(_0x2b53('0x9'));var _=require(_0x2b53('0xa'));var squel=require(_0x2b53('0xb'));var crypto=require('crypto');var jsforce=require(_0x2b53('0xc'));var deskjs=require(_0x2b53('0xd'));var toCsv=require(_0x2b53('0x7'));var querystring=require(_0x2b53('0xe'));var Papa=require('papaparse');var Redis=require(_0x2b53('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2b53('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2b53('0x11'));var logger=require(_0x2b53('0x12'))(_0x2b53('0x13'));var utils=require('../../config/utils');var config=require(_0x2b53('0x14'));var licenseUtil=require(_0x2b53('0x15'));var db=require(_0x2b53('0x16'))['db'];function respondWithStatusCode(_0x2d5fe7,_0x169b2a){_0x169b2a=_0x169b2a||0xcc;return function(_0xf124aa){if(_0xf124aa){return _0x2d5fe7[_0x2b53('0x17')](_0x169b2a);}return _0x2d5fe7['status'](_0x169b2a)[_0x2b53('0x18')]();};}function respondWithResult(_0x41b525,_0x1a1353){_0x1a1353=_0x1a1353||0xc8;return function(_0x6ede99){if(_0x6ede99){return _0x41b525['status'](_0x1a1353)[_0x2b53('0x19')](_0x6ede99);}};}function respondWithFilteredResult(_0x1b5428,_0x2f69da){return function(_0x262b3d){if(_0x262b3d){var _0x4e7991=typeof _0x2f69da[_0x2b53('0x1a')]===_0x2b53('0x1b')&&typeof _0x2f69da[_0x2b53('0x1c')]===_0x2b53('0x1b');var _0x47be33=_0x262b3d[_0x2b53('0x1d')];var _0x4324f1=_0x4e7991?0x0:_0x2f69da[_0x2b53('0x1a')];var _0x2a6070=_0x4e7991?_0x262b3d[_0x2b53('0x1d')]:_0x2f69da['offset']+_0x2f69da[_0x2b53('0x1c')];var _0x547e03;if(_0x2a6070>=_0x47be33){_0x2a6070=_0x47be33;_0x547e03=0xc8;}else{_0x547e03=0xce;}_0x1b5428[_0x2b53('0x1e')](_0x547e03);return _0x1b5428[_0x2b53('0x1f')](_0x2b53('0x20'),_0x4324f1+'-'+_0x2a6070+'/'+_0x47be33)[_0x2b53('0x19')](_0x262b3d);}return null;};}function patchUpdates(_0x3cbf72){return function(_0x46a7d2){try{jsonpatch[_0x2b53('0x21')](_0x46a7d2,_0x3cbf72,!![]);}catch(_0x818166){return BPromise['reject'](_0x818166);}return _0x46a7d2[_0x2b53('0x22')]();};}function saveUpdates(_0x141993,_0x32f830){return function(_0x139ee1){if(_0x139ee1){return _0x139ee1['update'](_0x141993)[_0x2b53('0x23')](function(_0x2f4a3f){return _0x2f4a3f;});}return null;};}function removeEntity(_0x3b585a,_0x11b680){return function(_0xa9d870){if(_0xa9d870){return _0xa9d870['destroy']()[_0x2b53('0x23')](function(){_0x3b585a[_0x2b53('0x1e')](0xcc)[_0x2b53('0x18')]();});}};}function handleEntityNotFound(_0x4d040d,_0x5512d5){return function(_0x2a9d02){if(!_0x2a9d02){_0x4d040d[_0x2b53('0x17')](0x194);}return _0x2a9d02;};}function handleError(_0x73294a,_0x310aab){_0x310aab=_0x310aab||0x1f4;return function(_0x4099ac){logger[_0x2b53('0x24')](_0x4099ac['stack']);if(_0x4099ac[_0x2b53('0x25')]){delete _0x4099ac[_0x2b53('0x25')];}_0x73294a[_0x2b53('0x1e')](_0x310aab)[_0x2b53('0x26')](_0x4099ac);};}exports['index']=function(_0x2b8e6a,_0x2548ee){var _0x2f9511={},_0x451fdb={},_0x195f48={'count':0x0,'rows':[]};var _0x22fe02=_['map'](db['OpenchannelQueueReport'][_0x2b53('0x27')],function(_0x273e9d){return{'name':_0x273e9d['fieldName'],'type':_0x273e9d[_0x2b53('0x28')][_0x2b53('0x29')]};});_0x451fdb[_0x2b53('0x2a')]=_['map'](_0x22fe02,'name');_0x451fdb[_0x2b53('0x2b')]=_['keys'](_0x2b8e6a[_0x2b53('0x2b')]);_0x451fdb['filters']=_[_0x2b53('0x2c')](_0x451fdb['model'],_0x451fdb[_0x2b53('0x2b')]);_0x2f9511['attributes']=_[_0x2b53('0x2c')](_0x451fdb[_0x2b53('0x2a')],qs[_0x2b53('0x2d')](_0x2b8e6a[_0x2b53('0x2b')][_0x2b53('0x2d')]));_0x2f9511['attributes']=_0x2f9511['attributes'][_0x2b53('0x2e')]?_0x2f9511['attributes']:_0x451fdb[_0x2b53('0x2a')];if(!_0x2b8e6a['query'][_0x2b53('0x2f')](_0x2b53('0x30'))){_0x2f9511[_0x2b53('0x1c')]=qs[_0x2b53('0x1c')](_0x2b8e6a['query']['limit']);_0x2f9511['offset']=qs[_0x2b53('0x1a')](_0x2b8e6a[_0x2b53('0x2b')]['offset']);}_0x2f9511[_0x2b53('0x31')]=qs[_0x2b53('0x32')](_0x2b8e6a[_0x2b53('0x2b')][_0x2b53('0x32')]);_0x2f9511['where']=qs['filters'](_[_0x2b53('0x33')](_0x2b8e6a[_0x2b53('0x2b')],_0x451fdb[_0x2b53('0x34')]),_0x22fe02);if(_0x2b8e6a['query'][_0x2b53('0x35')]){_0x2f9511[_0x2b53('0x36')]=_[_0x2b53('0x37')](_0x2f9511[_0x2b53('0x36')],{'$or':_[_0x2b53('0x38')](_0x22fe02,function(_0x2145f0){if(_0x2145f0['type']!==_0x2b53('0x39')){var _0x2f0689={};_0x2f0689[_0x2145f0[_0x2b53('0x25')]]={'$like':'%'+_0x2b8e6a['query']['filter']+'%'};return _0x2f0689;}})});}_0x2f9511=_[_0x2b53('0x37')]({},_0x2f9511,_0x2b8e6a[_0x2b53('0x3a')]);var _0x41d7cd={'where':_0x2f9511[_0x2b53('0x36')]};return db[_0x2b53('0x3b')]['count'](_0x41d7cd)[_0x2b53('0x23')](function(_0x4aed8a){_0x195f48[_0x2b53('0x1d')]=_0x4aed8a;if(_0x2b8e6a[_0x2b53('0x2b')][_0x2b53('0x3c')]){_0x2f9511[_0x2b53('0x3d')]=[{'all':!![]}];}return db[_0x2b53('0x3b')][_0x2b53('0x3e')](_0x2f9511);})[_0x2b53('0x23')](function(_0x29aad3){_0x195f48[_0x2b53('0x3f')]=_0x29aad3;return _0x195f48;})[_0x2b53('0x23')](respondWithFilteredResult(_0x2548ee,_0x2f9511))[_0x2b53('0x40')](handleError(_0x2548ee,null));};exports[_0x2b53('0x41')]=function(_0x33e8c2,_0x3bfd7c){var _0x4d8bca={'raw':!![],'where':{'id':_0x33e8c2[_0x2b53('0x42')]['id']}},_0x196005={};_0x196005['model']=_['keys'](db['OpenchannelQueueReport'][_0x2b53('0x27')]);_0x196005[_0x2b53('0x2b')]=_[_0x2b53('0x43')](_0x33e8c2[_0x2b53('0x2b')]);_0x196005[_0x2b53('0x34')]=_['intersection'](_0x196005['model'],_0x196005['query']);_0x4d8bca[_0x2b53('0x44')]=_[_0x2b53('0x2c')](_0x196005[_0x2b53('0x2a')],qs[_0x2b53('0x2d')](_0x33e8c2['query']['fields']));_0x4d8bca[_0x2b53('0x44')]=_0x4d8bca['attributes'][_0x2b53('0x2e')]?_0x4d8bca[_0x2b53('0x44')]:_0x196005['model'];if(_0x33e8c2[_0x2b53('0x2b')]['includeAll']){_0x4d8bca[_0x2b53('0x3d')]=[{'all':!![]}];}_0x4d8bca=_[_0x2b53('0x37')]({},_0x4d8bca,_0x33e8c2[_0x2b53('0x3a')]);return db[_0x2b53('0x3b')][_0x2b53('0x45')](_0x4d8bca)[_0x2b53('0x23')](handleEntityNotFound(_0x3bfd7c,null))[_0x2b53('0x23')](respondWithResult(_0x3bfd7c,null))[_0x2b53('0x40')](handleError(_0x3bfd7c,null));};exports[_0x2b53('0x46')]=function(_0x30566c,_0x22ee00){return db[_0x2b53('0x3b')][_0x2b53('0x46')](_0x30566c['body'],{})[_0x2b53('0x23')](respondWithResult(_0x22ee00,0xc9))[_0x2b53('0x40')](handleError(_0x22ee00,null));};exports[_0x2b53('0x47')]=function(_0x26dc03,_0x23a796){if(_0x26dc03[_0x2b53('0x48')]['id']){delete _0x26dc03[_0x2b53('0x48')]['id'];}return db[_0x2b53('0x3b')][_0x2b53('0x45')]({'where':{'id':_0x26dc03[_0x2b53('0x42')]['id']}})[_0x2b53('0x23')](handleEntityNotFound(_0x23a796,null))['then'](saveUpdates(_0x26dc03[_0x2b53('0x48')],null))[_0x2b53('0x23')](respondWithResult(_0x23a796,null))[_0x2b53('0x40')](handleError(_0x23a796,null));};exports['destroy']=function(_0x4b29ac,_0x35ca85){return db[_0x2b53('0x3b')][_0x2b53('0x45')]({'where':{'id':_0x4b29ac[_0x2b53('0x42')]['id']}})[_0x2b53('0x23')](handleEntityNotFound(_0x35ca85,null))['then'](removeEntity(_0x35ca85,null))[_0x2b53('0x40')](handleError(_0x35ca85,null));};exports[_0x2b53('0x49')]=function(_0x5e45c8,_0x2f8a23){return db[_0x2b53('0x3b')][_0x2b53('0x49')]()[_0x2b53('0x23')](respondWithResult(_0x2f8a23,null))[_0x2b53('0x40')](handleError(_0x2f8a23,null));};
\ No newline at end of file
index a3eee93..cac9d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x3758ff,_0x4d7dc8){var _0x1a0518=function(_0x193a6f){while(--_0x193a6f){_0x3758ff['push'](_0x3758ff['shift']());}};_0x1a0518(++_0x4d7dc8);}(_0x326f,0xd1));var _0xf326=function(_0x327728,_0x2ea85c){_0x327728=_0x327728-0x0;var _0x9eeffd=_0x326f[_0x327728];return _0x9eeffd;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x3116be,_0x56cefa){var _0x38934a=function(_0x519e15){while(--_0x519e15){_0x3116be['push'](_0x3116be['shift']());}};_0x38934a(++_0x56cefa);}(_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':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 07a1a24..5bc7af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a5=['UpdateOpenchannelQueueReport','update','where','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','request\x20sent','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw','catch'];(function(_0x4a615e,_0x310ab4){var _0x1c1280=function(_0x3d1acf){while(--_0x3d1acf){_0x4a615e['push'](_0x4a615e['shift']());}};_0x1c1280(++_0x310ab4);}(_0x68a5,0xfc));var _0x568a=function(_0x32a2e9,_0x3f9b54){_0x32a2e9=_0x32a2e9-0x0;var _0x4dbacb=_0x68a5[_0x32a2e9];return _0x4dbacb;};'use strict';var _=require(_0x568a('0x0'));var util=require('util');var moment=require(_0x568a('0x1'));var BPromise=require(_0x568a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x568a('0x3'));var db=require(_0x568a('0x4'))['db'];var utils=require(_0x568a('0x5'));var logger=require(_0x568a('0x6'))('rpc');var config=require(_0x568a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x568a('0x8')][_0x568a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d36ec,_0x3a7a9c,_0x4cda9a){return new BPromise(function(_0x172efd,_0x56deb6){return client[_0x568a('0xa')](_0x2d36ec,_0x4cda9a)[_0x568a('0xb')](function(_0x335ecd){logger[_0x568a('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3a7a9c,'request\x20sent');logger[_0x568a('0xd')](_0x568a('0xe'),_0x3a7a9c,'request\x20sent',JSON[_0x568a('0xf')](_0x335ecd));if(_0x335ecd['error']){if(_0x335ecd[_0x568a('0x10')][_0x568a('0x11')]===0x1f4){logger[_0x568a('0x10')](_0x568a('0x12'),_0x3a7a9c,_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);return _0x56deb6(_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);}logger[_0x568a('0x10')](_0x568a('0x12'),_0x3a7a9c,_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);return _0x172efd(_0x335ecd[_0x568a('0x10')][_0x568a('0x13')]);}else{logger[_0x568a('0xc')](_0x568a('0x12'),_0x3a7a9c,_0x568a('0x14'));_0x172efd(_0x335ecd['result'][_0x568a('0x13')]);}})['catch'](function(_0xa77de8){logger[_0x568a('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3a7a9c,_0xa77de8);_0x56deb6(_0xa77de8);});});}exports[_0x568a('0x15')]=function(_0x561ae1){var _0x40d4a1=this;return new Promise(function(_0x1c8e3a,_0x9b4670){return db[_0x568a('0x16')]['create'](_0x561ae1[_0x568a('0x17')],{'raw':_0x561ae1['options']?_0x561ae1[_0x568a('0x18')][_0x568a('0x19')]===undefined?!![]:![]:!![]})[_0x568a('0xb')](function(_0x3b9968){logger[_0x568a('0xc')](_0x568a('0x15'),_0x561ae1);logger[_0x568a('0xd')](_0x568a('0x15'),_0x561ae1,JSON['stringify'](_0x3b9968));_0x1c8e3a(_0x3b9968);})[_0x568a('0x1a')](function(_0x1f12b5){logger['error'](_0x568a('0x15'),_0x1f12b5[_0x568a('0x13')],_0x561ae1);_0x9b4670(_0x40d4a1[_0x568a('0x10')](0x1f4,_0x1f12b5['message']));});});};exports[_0x568a('0x1b')]=function(_0x378f0e){var _0x1d5329=this;return new Promise(function(_0x1df7ab,_0xdb83a1){return db[_0x568a('0x16')][_0x568a('0x1c')](_0x378f0e[_0x568a('0x17')],{'raw':_0x378f0e[_0x568a('0x18')]?_0x378f0e['options'][_0x568a('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')][_0x568a('0x1d')]||null:null,'attributes':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')]['attributes']||null:null,'limit':_0x378f0e[_0x568a('0x18')]?_0x378f0e[_0x568a('0x18')][_0x568a('0x1e')]||null:null})[_0x568a('0xb')](function(_0x20498b){logger['info'](_0x568a('0x1b'),_0x378f0e);logger[_0x568a('0xd')](_0x568a('0x1b'),_0x378f0e,JSON[_0x568a('0xf')](_0x20498b));_0x1df7ab(_0x20498b);})[_0x568a('0x1a')](function(_0x153e1a){logger[_0x568a('0x10')](_0x568a('0x1b'),_0x153e1a[_0x568a('0x13')],_0x378f0e);_0xdb83a1(_0x1d5329[_0x568a('0x10')](0x1f4,_0x153e1a['message']));});});};
\ No newline at end of file
+var _0x8374=['limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','UpdateOpenchannelQueueReport','update','raw','where','attributes'];(function(_0x195577,_0x5de53a){var _0x13c367=function(_0x583022){while(--_0x583022){_0x195577['push'](_0x195577['shift']());}};_0x13c367(++_0x5de53a);}(_0x8374,0x174));var _0x4837=function(_0x1d54b8,_0x560503){_0x1d54b8=_0x1d54b8-0x0;var _0x32b5a4=_0x8374[_0x1d54b8];return _0x32b5a4;};'use strict';var _=require(_0x4837('0x0'));var util=require(_0x4837('0x1'));var moment=require(_0x4837('0x2'));var BPromise=require(_0x4837('0x3'));var rs=require(_0x4837('0x4'));var fs=require('fs');var Redis=require(_0x4837('0x5'));var db=require(_0x4837('0x6'))['db'];var utils=require(_0x4837('0x7'));var logger=require(_0x4837('0x8'))(_0x4837('0x9'));var config=require(_0x4837('0xa'));var jayson=require(_0x4837('0xb'));var client=jayson[_0x4837('0xc')][_0x4837('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x4e0e60,_0x2036a4,_0x560c37){return new BPromise(function(_0x408c14,_0x476a1d){return client[_0x4837('0xe')](_0x4e0e60,_0x560c37)[_0x4837('0xf')](function(_0x2f0ca6){logger[_0x4837('0x10')](_0x4837('0x11'),_0x2036a4,_0x4837('0x12'));logger[_0x4837('0x13')](_0x4837('0x14'),_0x2036a4,'request\x20sent',JSON['stringify'](_0x2f0ca6));if(_0x2f0ca6[_0x4837('0x15')]){if(_0x2f0ca6['error'][_0x4837('0x16')]===0x1f4){logger[_0x4837('0x15')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x2036a4,_0x2f0ca6['error']['message']);return _0x476a1d(_0x2f0ca6[_0x4837('0x15')][_0x4837('0x17')]);}logger[_0x4837('0x15')](_0x4837('0x11'),_0x2036a4,_0x2f0ca6['error'][_0x4837('0x17')]);return _0x408c14(_0x2f0ca6[_0x4837('0x15')][_0x4837('0x17')]);}else{logger['info'](_0x4837('0x11'),_0x2036a4,_0x4837('0x12'));_0x408c14(_0x2f0ca6['result'][_0x4837('0x17')]);}})[_0x4837('0x18')](function(_0xb95296){logger[_0x4837('0x15')](_0x4837('0x11'),_0x2036a4,_0xb95296);_0x476a1d(_0xb95296);});});}exports[_0x4837('0x19')]=function(_0x48b61b){var _0xf21681=this;return new Promise(function(_0x1cb24a,_0x427171){return db[_0x4837('0x1a')][_0x4837('0x1b')](_0x48b61b[_0x4837('0x1c')],{'raw':_0x48b61b[_0x4837('0x1d')]?_0x48b61b['options']['raw']===undefined?!![]:![]:!![]})[_0x4837('0xf')](function(_0x133e9d){logger[_0x4837('0x10')](_0x4837('0x19'),_0x48b61b);logger['debug'](_0x4837('0x19'),_0x48b61b,JSON['stringify'](_0x133e9d));_0x1cb24a(_0x133e9d);})[_0x4837('0x18')](function(_0x5f5631){logger['error'](_0x4837('0x19'),_0x5f5631['message'],_0x48b61b);_0x427171(_0xf21681['error'](0x1f4,_0x5f5631['message']));});});};exports[_0x4837('0x1e')]=function(_0x2d820a){var _0x4bbfbd=this;return new Promise(function(_0x36b841,_0xa10b75){return db['OpenchannelQueueReport'][_0x4837('0x1f')](_0x2d820a[_0x4837('0x1c')],{'raw':_0x2d820a['options']?_0x2d820a[_0x4837('0x1d')][_0x4837('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d820a[_0x4837('0x1d')]?_0x2d820a[_0x4837('0x1d')][_0x4837('0x21')]||null:null,'attributes':_0x2d820a['options']?_0x2d820a[_0x4837('0x1d')][_0x4837('0x22')]||null:null,'limit':_0x2d820a[_0x4837('0x1d')]?_0x2d820a[_0x4837('0x1d')][_0x4837('0x23')]||null:null})[_0x4837('0xf')](function(_0x215858){logger[_0x4837('0x10')]('UpdateOpenchannelQueueReport',_0x2d820a);logger[_0x4837('0x13')](_0x4837('0x1e'),_0x2d820a,JSON[_0x4837('0x24')](_0x215858));_0x36b841(_0x215858);})[_0x4837('0x18')](function(_0x594039){logger[_0x4837('0x15')](_0x4837('0x1e'),_0x594039[_0x4837('0x17')],_0x2d820a);_0xa10b75(_0x4bbfbd[_0x4837('0x15')](0x1f4,_0x594039['message']));});});};
\ No newline at end of file
index db5b9bd..3c051ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe13d=['update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','put'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xe13d,0x122));var _0xde13=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xe13d[_0xa1e3e3];return _0xc980e9;};'use strict';var multer=require('multer');var util=require(_0xde13('0x0'));var path=require(_0xde13('0x1'));var timeout=require(_0xde13('0x2'));var express=require('express');var router=express[_0xde13('0x3')]();var fs_extra=require(_0xde13('0x4'));var auth=require(_0xde13('0x5'));var interaction=require(_0xde13('0x6'));var config=require(_0xde13('0x7'));var controller=require(_0xde13('0x8'));router['get']('/',auth[_0xde13('0x9')](),controller[_0xde13('0xa')]);router['get'](_0xde13('0xb'),auth[_0xde13('0x9')](),controller[_0xde13('0xc')]);router[_0xde13('0xd')](_0xde13('0xe'),auth['isAuthenticated'](),controller[_0xde13('0xf')]);router[_0xde13('0x10')]('/',auth[_0xde13('0x9')](),controller['create']);router[_0xde13('0x11')](_0xde13('0xe'),auth[_0xde13('0x9')](),controller[_0xde13('0x12')]);router[_0xde13('0x13')](_0xde13('0xe'),auth['isAuthenticated'](),controller[_0xde13('0x14')]);module[_0xde13('0x15')]=router;
\ No newline at end of file
+var _0x6889=['create','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6889,0x1d6));var _0x9688=function(_0x2bcc8d,_0x5691d1){_0x2bcc8d=_0x2bcc8d-0x0;var _0x123b6a=_0x6889[_0x2bcc8d];return _0x123b6a;};'use strict';var multer=require(_0x9688('0x0'));var util=require(_0x9688('0x1'));var path=require(_0x9688('0x2'));var timeout=require(_0x9688('0x3'));var express=require('express');var router=express[_0x9688('0x4')]();var fs_extra=require(_0x9688('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9688('0x6'));var config=require(_0x9688('0x7'));var controller=require('./openchannelTransferReport.controller');router[_0x9688('0x8')]('/',auth[_0x9688('0x9')](),controller[_0x9688('0xa')]);router[_0x9688('0x8')](_0x9688('0xb'),auth['isAuthenticated'](),controller[_0x9688('0xc')]);router[_0x9688('0x8')](_0x9688('0xd'),auth['isAuthenticated'](),controller[_0x9688('0xe')]);router[_0x9688('0xf')]('/',auth[_0x9688('0x9')](),controller[_0x9688('0x10')]);router['put'](_0x9688('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x9688('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x9688('0x11')]=router;
\ No newline at end of file
index 148d7e4..b26fff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x3d886c,_0x4a1d74){var _0x6a38e4=function(_0x324707){while(--_0x324707){_0x3d886c['push'](_0x3d886c['shift']());}};_0x6a38e4(++_0x4a1d74);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xcb91[_0x403c20];return _0x2b271a;};'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(_0x556b01,_0xad5f4b){var _0x35824f=function(_0x4d044b){while(--_0x4d044b){_0x556b01['push'](_0x556b01['shift']());}};_0x35824f(++_0xad5f4b);}(_0x70e0,0x17b));var _0x070e=function(_0x1e7b35,_0x4234ab){_0x1e7b35=_0x1e7b35-0x0;var _0x347ca5=_0x70e0[_0x1e7b35];return _0x347ca5;};'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 cb88494..574a4ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ea=['params','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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','sendStatus','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','then','error','stack','name','status','send','index','OpenchannelTransferReport','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','rawAttributes','include','find','create','body'];(function(_0x35a990,_0x235df8){var _0x1d1f71=function(_0x3f4745){while(--_0x3f4745){_0x35a990['push'](_0x35a990['shift']());}};_0x1d1f71(++_0x235df8);}(_0xc7ea,0x136));var _0xac7e=function(_0x4f9522,_0x399e9f){_0x4f9522=_0x4f9522-0x0;var _0x5a89a7=_0xc7ea[_0x4f9522];return _0x5a89a7;};'use strict';var emlformat=require(_0xac7e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xac7e('0x1'));var jsonpatch=require(_0xac7e('0x2'));var rp=require('request-promise');var moment=require(_0xac7e('0x3'));var BPromise=require(_0xac7e('0x4'));var Mustache=require(_0xac7e('0x5'));var util=require(_0xac7e('0x6'));var path=require(_0xac7e('0x7'));var sox=require('sox');var csv=require(_0xac7e('0x8'));var ejs=require(_0xac7e('0x9'));var fs=require('fs');var fs_extra=require(_0xac7e('0xa'));var _=require(_0xac7e('0xb'));var squel=require(_0xac7e('0xc'));var crypto=require(_0xac7e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xac7e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xac7e('0xf'));var Papa=require(_0xac7e('0x10'));var Redis=require(_0xac7e('0x11'));var authService=require(_0xac7e('0x12'));var qs=require(_0xac7e('0x13'));var as=require(_0xac7e('0x14'));var hardwareService=require(_0xac7e('0x15'));var logger=require(_0xac7e('0x16'))(_0xac7e('0x17'));var utils=require('../../config/utils');var config=require(_0xac7e('0x18'));var licenseUtil=require(_0xac7e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x82526e,_0x195ae2){_0x195ae2=_0x195ae2||0xcc;return function(_0x21f0a4){if(_0x21f0a4){return _0x82526e[_0xac7e('0x1a')](_0x195ae2);}return _0x82526e['status'](_0x195ae2)[_0xac7e('0x1b')]();};}function respondWithResult(_0x332131,_0x3b0abe){_0x3b0abe=_0x3b0abe||0xc8;return function(_0x2f7d23){if(_0x2f7d23){return _0x332131['status'](_0x3b0abe)[_0xac7e('0x1c')](_0x2f7d23);}};}function respondWithFilteredResult(_0x365775,_0x2d027b){return function(_0x336aec){if(_0x336aec){var _0x295f29=typeof _0x2d027b[_0xac7e('0x1d')]===_0xac7e('0x1e')&&typeof _0x2d027b[_0xac7e('0x1f')]==='undefined';var _0x4826cf=_0x336aec[_0xac7e('0x20')];var _0x2bfd9b=_0x295f29?0x0:_0x2d027b[_0xac7e('0x1d')];var _0x56b2d0=_0x295f29?_0x336aec[_0xac7e('0x20')]:_0x2d027b[_0xac7e('0x1d')]+_0x2d027b[_0xac7e('0x1f')];var _0x295bfd;if(_0x56b2d0>=_0x4826cf){_0x56b2d0=_0x4826cf;_0x295bfd=0xc8;}else{_0x295bfd=0xce;}_0x365775['status'](_0x295bfd);return _0x365775['set'](_0xac7e('0x21'),_0x2bfd9b+'-'+_0x56b2d0+'/'+_0x4826cf)[_0xac7e('0x1c')](_0x336aec);}return null;};}function patchUpdates(_0x289923){return function(_0x2bc8cb){try{jsonpatch['apply'](_0x2bc8cb,_0x289923,!![]);}catch(_0x591c85){return BPromise[_0xac7e('0x22')](_0x591c85);}return _0x2bc8cb[_0xac7e('0x23')]();};}function saveUpdates(_0x18075d,_0x59dec5){return function(_0x2b6244){if(_0x2b6244){return _0x2b6244[_0xac7e('0x24')](_0x18075d)['then'](function(_0x197bdb){return _0x197bdb;});}return null;};}function removeEntity(_0x5089c7,_0x269ef0){return function(_0x2e67e7){if(_0x2e67e7){return _0x2e67e7[_0xac7e('0x25')]()[_0xac7e('0x26')](function(){_0x5089c7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29905d,_0x195ad2){return function(_0x4e7342){if(!_0x4e7342){_0x29905d[_0xac7e('0x1a')](0x194);}return _0x4e7342;};}function handleError(_0x192a1a,_0x504f21){_0x504f21=_0x504f21||0x1f4;return function(_0x2e06d5){logger[_0xac7e('0x27')](_0x2e06d5[_0xac7e('0x28')]);if(_0x2e06d5[_0xac7e('0x29')]){delete _0x2e06d5[_0xac7e('0x29')];}_0x192a1a[_0xac7e('0x2a')](_0x504f21)[_0xac7e('0x2b')](_0x2e06d5);};}exports[_0xac7e('0x2c')]=function(_0x18a5d4,_0x1e4955){var _0x548de5={},_0x165b9a={},_0x5e3643={'count':0x0,'rows':[]};var _0x5892e8=_['map'](db[_0xac7e('0x2d')]['rawAttributes'],function(_0x2613e0){return{'name':_0x2613e0[_0xac7e('0x2e')],'type':_0x2613e0['type'][_0xac7e('0x2f')]};});_0x165b9a[_0xac7e('0x30')]=_[_0xac7e('0x31')](_0x5892e8,_0xac7e('0x29'));_0x165b9a[_0xac7e('0x32')]=_[_0xac7e('0x33')](_0x18a5d4[_0xac7e('0x32')]);_0x165b9a[_0xac7e('0x34')]=_[_0xac7e('0x35')](_0x165b9a[_0xac7e('0x30')],_0x165b9a[_0xac7e('0x32')]);_0x548de5[_0xac7e('0x36')]=_['intersection'](_0x165b9a[_0xac7e('0x30')],qs[_0xac7e('0x37')](_0x18a5d4[_0xac7e('0x32')][_0xac7e('0x37')]));_0x548de5[_0xac7e('0x36')]=_0x548de5[_0xac7e('0x36')][_0xac7e('0x38')]?_0x548de5[_0xac7e('0x36')]:_0x165b9a[_0xac7e('0x30')];if(!_0x18a5d4[_0xac7e('0x32')]['hasOwnProperty']('nolimit')){_0x548de5[_0xac7e('0x1f')]=qs[_0xac7e('0x1f')](_0x18a5d4['query'][_0xac7e('0x1f')]);_0x548de5[_0xac7e('0x1d')]=qs['offset'](_0x18a5d4[_0xac7e('0x32')]['offset']);}_0x548de5[_0xac7e('0x39')]=qs[_0xac7e('0x3a')](_0x18a5d4['query'][_0xac7e('0x3a')]);_0x548de5[_0xac7e('0x3b')]=qs[_0xac7e('0x34')](_[_0xac7e('0x3c')](_0x18a5d4[_0xac7e('0x32')],_0x165b9a['filters']),_0x5892e8);if(_0x18a5d4[_0xac7e('0x32')][_0xac7e('0x3d')]){_0x548de5[_0xac7e('0x3b')]=_[_0xac7e('0x3e')](_0x548de5[_0xac7e('0x3b')],{'$or':_[_0xac7e('0x31')](_0x5892e8,function(_0x150b40){if(_0x150b40[_0xac7e('0x3f')]!==_0xac7e('0x40')){var _0x51064f={};_0x51064f[_0x150b40[_0xac7e('0x29')]]={'$like':'%'+_0x18a5d4[_0xac7e('0x32')][_0xac7e('0x3d')]+'%'};return _0x51064f;}})});}_0x548de5=_[_0xac7e('0x3e')]({},_0x548de5,_0x18a5d4[_0xac7e('0x41')]);var _0x1650fe={'where':_0x548de5[_0xac7e('0x3b')]};return db[_0xac7e('0x2d')][_0xac7e('0x20')](_0x1650fe)[_0xac7e('0x26')](function(_0x2c2e25){_0x5e3643[_0xac7e('0x20')]=_0x2c2e25;if(_0x18a5d4[_0xac7e('0x32')]['includeAll']){_0x548de5['include']=[{'all':!![]}];}return db[_0xac7e('0x2d')][_0xac7e('0x42')](_0x548de5);})['then'](function(_0x189fec){_0x5e3643[_0xac7e('0x43')]=_0x189fec;return _0x5e3643;})[_0xac7e('0x26')](respondWithFilteredResult(_0x1e4955,_0x548de5))[_0xac7e('0x44')](handleError(_0x1e4955,null));};exports[_0xac7e('0x45')]=function(_0x132b01,_0x5ed82a){var _0x4c3efa={'raw':!![],'where':{'id':_0x132b01['params']['id']}},_0x58d8d3={};_0x58d8d3['model']=_[_0xac7e('0x33')](db[_0xac7e('0x2d')][_0xac7e('0x46')]);_0x58d8d3[_0xac7e('0x32')]=_[_0xac7e('0x33')](_0x132b01[_0xac7e('0x32')]);_0x58d8d3[_0xac7e('0x34')]=_[_0xac7e('0x35')](_0x58d8d3[_0xac7e('0x30')],_0x58d8d3[_0xac7e('0x32')]);_0x4c3efa[_0xac7e('0x36')]=_[_0xac7e('0x35')](_0x58d8d3[_0xac7e('0x30')],qs['fields'](_0x132b01[_0xac7e('0x32')][_0xac7e('0x37')]));_0x4c3efa['attributes']=_0x4c3efa[_0xac7e('0x36')][_0xac7e('0x38')]?_0x4c3efa[_0xac7e('0x36')]:_0x58d8d3['model'];if(_0x132b01[_0xac7e('0x32')]['includeAll']){_0x4c3efa[_0xac7e('0x47')]=[{'all':!![]}];}_0x4c3efa=_[_0xac7e('0x3e')]({},_0x4c3efa,_0x132b01[_0xac7e('0x41')]);return db[_0xac7e('0x2d')][_0xac7e('0x48')](_0x4c3efa)[_0xac7e('0x26')](handleEntityNotFound(_0x5ed82a,null))[_0xac7e('0x26')](respondWithResult(_0x5ed82a,null))[_0xac7e('0x44')](handleError(_0x5ed82a,null));};exports[_0xac7e('0x49')]=function(_0x1af04e,_0x3d4c4d){return db[_0xac7e('0x2d')][_0xac7e('0x49')](_0x1af04e[_0xac7e('0x4a')],{})[_0xac7e('0x26')](respondWithResult(_0x3d4c4d,0xc9))[_0xac7e('0x44')](handleError(_0x3d4c4d,null));};exports[_0xac7e('0x24')]=function(_0x393229,_0x319b53){if(_0x393229['body']['id']){delete _0x393229['body']['id'];}return db[_0xac7e('0x2d')][_0xac7e('0x48')]({'where':{'id':_0x393229[_0xac7e('0x4b')]['id']}})[_0xac7e('0x26')](handleEntityNotFound(_0x319b53,null))[_0xac7e('0x26')](saveUpdates(_0x393229['body'],null))['then'](respondWithResult(_0x319b53,null))[_0xac7e('0x44')](handleError(_0x319b53,null));};exports['destroy']=function(_0x18626d,_0x46680b){return db[_0xac7e('0x2d')]['find']({'where':{'id':_0x18626d[_0xac7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x46680b,null))[_0xac7e('0x26')](removeEntity(_0x46680b,null))[_0xac7e('0x44')](handleError(_0x46680b,null));};exports[_0xac7e('0x4c')]=function(_0x585ffe,_0x3a6d33){return db[_0xac7e('0x2d')][_0xac7e('0x4c')]()[_0xac7e('0x26')](respondWithResult(_0x3a6d33,null))[_0xac7e('0x44')](handleError(_0x3a6d33,null));};
\ No newline at end of file
+var _0x18b9=['sendStatus','status','json','undefined','limit','count','offset','set','reject','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelTransferReport','rawAttributes','key','model','query','attributes','intersection','fields','length','nolimit','sort','where','filters','filter','type','VIRTUAL','options','includeAll','include','catch','show','params','keys','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x3a78a0,_0x44985f){var _0x48e917=function(_0x1e428c){while(--_0x1e428c){_0x3a78a0['push'](_0x3a78a0['shift']());}};_0x48e917(++_0x44985f);}(_0x18b9,0xb8));var _0x918b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x18b9[_0x167cc1];return _0x10bc4b;};'use strict';var emlformat=require(_0x918b('0x0'));var rimraf=require(_0x918b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x918b('0x2'));var rp=require(_0x918b('0x3'));var moment=require('moment');var BPromise=require(_0x918b('0x4'));var Mustache=require(_0x918b('0x5'));var util=require(_0x918b('0x6'));var path=require('path');var sox=require(_0x918b('0x7'));var csv=require(_0x918b('0x8'));var ejs=require(_0x918b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x918b('0xa'));var squel=require(_0x918b('0xb'));var crypto=require(_0x918b('0xc'));var jsforce=require(_0x918b('0xd'));var deskjs=require(_0x918b('0xe'));var toCsv=require(_0x918b('0x8'));var querystring=require('querystring');var Papa=require(_0x918b('0xf'));var Redis=require(_0x918b('0x10'));var authService=require(_0x918b('0x11'));var qs=require(_0x918b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x918b('0x13'))('api');var utils=require(_0x918b('0x14'));var config=require(_0x918b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x918b('0x16'))['db'];function respondWithStatusCode(_0x167fb3,_0x236206){_0x236206=_0x236206||0xcc;return function(_0x4dd104){if(_0x4dd104){return _0x167fb3[_0x918b('0x17')](_0x236206);}return _0x167fb3[_0x918b('0x18')](_0x236206)['end']();};}function respondWithResult(_0x31e5c7,_0x260d59){_0x260d59=_0x260d59||0xc8;return function(_0x53f36b){if(_0x53f36b){return _0x31e5c7['status'](_0x260d59)[_0x918b('0x19')](_0x53f36b);}};}function respondWithFilteredResult(_0x2aaeb3,_0x3265b8){return function(_0x1d5011){if(_0x1d5011){var _0x3d6947=typeof _0x3265b8['offset']===_0x918b('0x1a')&&typeof _0x3265b8[_0x918b('0x1b')]==='undefined';var _0x5e7c87=_0x1d5011[_0x918b('0x1c')];var _0x13f7d3=_0x3d6947?0x0:_0x3265b8[_0x918b('0x1d')];var _0x464c5f=_0x3d6947?_0x1d5011[_0x918b('0x1c')]:_0x3265b8['offset']+_0x3265b8[_0x918b('0x1b')];var _0x51a03;if(_0x464c5f>=_0x5e7c87){_0x464c5f=_0x5e7c87;_0x51a03=0xc8;}else{_0x51a03=0xce;}_0x2aaeb3['status'](_0x51a03);return _0x2aaeb3[_0x918b('0x1e')]('Content-Range',_0x13f7d3+'-'+_0x464c5f+'/'+_0x5e7c87)['json'](_0x1d5011);}return null;};}function patchUpdates(_0xae1ab3){return function(_0x2ad9f9){try{jsonpatch['apply'](_0x2ad9f9,_0xae1ab3,!![]);}catch(_0x44c761){return BPromise[_0x918b('0x1f')](_0x44c761);}return _0x2ad9f9[_0x918b('0x20')]();};}function saveUpdates(_0x285b80,_0x320524){return function(_0xd362b1){if(_0xd362b1){return _0xd362b1[_0x918b('0x21')](_0x285b80)[_0x918b('0x22')](function(_0x257f5c){return _0x257f5c;});}return null;};}function removeEntity(_0x32e0f3,_0x4cd9a1){return function(_0x159eca){if(_0x159eca){return _0x159eca[_0x918b('0x23')]()[_0x918b('0x22')](function(){_0x32e0f3[_0x918b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27aaf3,_0x476c2e){return function(_0x5c2558){if(!_0x5c2558){_0x27aaf3['sendStatus'](0x194);}return _0x5c2558;};}function handleError(_0x19d39a,_0x38d672){_0x38d672=_0x38d672||0x1f4;return function(_0x5ab3b0){logger[_0x918b('0x24')](_0x5ab3b0[_0x918b('0x25')]);if(_0x5ab3b0[_0x918b('0x26')]){delete _0x5ab3b0[_0x918b('0x26')];}_0x19d39a[_0x918b('0x18')](_0x38d672)[_0x918b('0x27')](_0x5ab3b0);};}exports[_0x918b('0x28')]=function(_0x64248,_0x79748d){var _0x1411b5={},_0x56069b={},_0x12737a={'count':0x0,'rows':[]};var _0x4c4c85=_[_0x918b('0x29')](db[_0x918b('0x2a')][_0x918b('0x2b')],function(_0x2c1d2f){return{'name':_0x2c1d2f['fieldName'],'type':_0x2c1d2f['type'][_0x918b('0x2c')]};});_0x56069b[_0x918b('0x2d')]=_[_0x918b('0x29')](_0x4c4c85,_0x918b('0x26'));_0x56069b[_0x918b('0x2e')]=_['keys'](_0x64248[_0x918b('0x2e')]);_0x56069b['filters']=_['intersection'](_0x56069b[_0x918b('0x2d')],_0x56069b[_0x918b('0x2e')]);_0x1411b5[_0x918b('0x2f')]=_[_0x918b('0x30')](_0x56069b[_0x918b('0x2d')],qs[_0x918b('0x31')](_0x64248[_0x918b('0x2e')][_0x918b('0x31')]));_0x1411b5['attributes']=_0x1411b5['attributes'][_0x918b('0x32')]?_0x1411b5['attributes']:_0x56069b[_0x918b('0x2d')];if(!_0x64248[_0x918b('0x2e')]['hasOwnProperty'](_0x918b('0x33'))){_0x1411b5[_0x918b('0x1b')]=qs[_0x918b('0x1b')](_0x64248['query']['limit']);_0x1411b5[_0x918b('0x1d')]=qs[_0x918b('0x1d')](_0x64248['query']['offset']);}_0x1411b5['order']=qs['sort'](_0x64248[_0x918b('0x2e')][_0x918b('0x34')]);_0x1411b5[_0x918b('0x35')]=qs[_0x918b('0x36')](_['pick'](_0x64248['query'],_0x56069b[_0x918b('0x36')]),_0x4c4c85);if(_0x64248[_0x918b('0x2e')][_0x918b('0x37')]){_0x1411b5[_0x918b('0x35')]=_['merge'](_0x1411b5['where'],{'$or':_[_0x918b('0x29')](_0x4c4c85,function(_0x381d34){if(_0x381d34[_0x918b('0x38')]!==_0x918b('0x39')){var _0x5164ff={};_0x5164ff[_0x381d34['name']]={'$like':'%'+_0x64248[_0x918b('0x2e')][_0x918b('0x37')]+'%'};return _0x5164ff;}})});}_0x1411b5=_['merge']({},_0x1411b5,_0x64248[_0x918b('0x3a')]);var _0x1c3b2a={'where':_0x1411b5[_0x918b('0x35')]};return db[_0x918b('0x2a')]['count'](_0x1c3b2a)[_0x918b('0x22')](function(_0x5cb8ef){_0x12737a[_0x918b('0x1c')]=_0x5cb8ef;if(_0x64248[_0x918b('0x2e')][_0x918b('0x3b')]){_0x1411b5[_0x918b('0x3c')]=[{'all':!![]}];}return db[_0x918b('0x2a')]['findAll'](_0x1411b5);})['then'](function(_0x54f4e9){_0x12737a['rows']=_0x54f4e9;return _0x12737a;})['then'](respondWithFilteredResult(_0x79748d,_0x1411b5))[_0x918b('0x3d')](handleError(_0x79748d,null));};exports[_0x918b('0x3e')]=function(_0x11a215,_0x1ab7a8){var _0x141456={'raw':!![],'where':{'id':_0x11a215[_0x918b('0x3f')]['id']}},_0x51f686={};_0x51f686[_0x918b('0x2d')]=_[_0x918b('0x40')](db[_0x918b('0x2a')][_0x918b('0x2b')]);_0x51f686[_0x918b('0x2e')]=_[_0x918b('0x40')](_0x11a215[_0x918b('0x2e')]);_0x51f686[_0x918b('0x36')]=_['intersection'](_0x51f686['model'],_0x51f686[_0x918b('0x2e')]);_0x141456['attributes']=_[_0x918b('0x30')](_0x51f686[_0x918b('0x2d')],qs['fields'](_0x11a215[_0x918b('0x2e')]['fields']));_0x141456[_0x918b('0x2f')]=_0x141456[_0x918b('0x2f')][_0x918b('0x32')]?_0x141456[_0x918b('0x2f')]:_0x51f686[_0x918b('0x2d')];if(_0x11a215[_0x918b('0x2e')]['includeAll']){_0x141456[_0x918b('0x3c')]=[{'all':!![]}];}_0x141456=_['merge']({},_0x141456,_0x11a215['options']);return db[_0x918b('0x2a')]['find'](_0x141456)['then'](handleEntityNotFound(_0x1ab7a8,null))['then'](respondWithResult(_0x1ab7a8,null))[_0x918b('0x3d')](handleError(_0x1ab7a8,null));};exports['create']=function(_0x4ee8da,_0x4034cb){return db[_0x918b('0x2a')][_0x918b('0x41')](_0x4ee8da[_0x918b('0x42')],{})[_0x918b('0x22')](respondWithResult(_0x4034cb,0xc9))[_0x918b('0x3d')](handleError(_0x4034cb,null));};exports[_0x918b('0x21')]=function(_0x52d06b,_0x3d0a99){if(_0x52d06b['body']['id']){delete _0x52d06b[_0x918b('0x42')]['id'];}return db[_0x918b('0x2a')][_0x918b('0x43')]({'where':{'id':_0x52d06b[_0x918b('0x3f')]['id']}})[_0x918b('0x22')](handleEntityNotFound(_0x3d0a99,null))[_0x918b('0x22')](saveUpdates(_0x52d06b[_0x918b('0x42')],null))[_0x918b('0x22')](respondWithResult(_0x3d0a99,null))[_0x918b('0x3d')](handleError(_0x3d0a99,null));};exports[_0x918b('0x23')]=function(_0x691222,_0x243cd4){return db[_0x918b('0x2a')][_0x918b('0x43')]({'where':{'id':_0x691222[_0x918b('0x3f')]['id']}})[_0x918b('0x22')](handleEntityNotFound(_0x243cd4,null))[_0x918b('0x22')](removeEntity(_0x243cd4,null))[_0x918b('0x3d')](handleError(_0x243cd4,null));};exports[_0x918b('0x44')]=function(_0x2a9b8d,_0x353ce5){return db[_0x918b('0x2a')][_0x918b('0x44')]()[_0x918b('0x22')](respondWithResult(_0x353ce5,null))['catch'](handleError(_0x353ce5,null));};
\ No newline at end of file
index cf67f22..13f2097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1b4=['define','OpenchannelTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xc1b4,0xd5));var _0x4c1b=function(_0x3add46,_0x582bcf){_0x3add46=_0x3add46-0x0;var _0x18a1c8=_0xc1b4[_0x3add46];return _0x18a1c8;};'use strict';var _=require(_0x4c1b('0x0'));var util=require('util');var logger=require(_0x4c1b('0x1'))(_0x4c1b('0x2'));var moment=require(_0x4c1b('0x3'));var BPromise=require(_0x4c1b('0x4'));var rp=require(_0x4c1b('0x5'));var fs=require('fs');var path=require(_0x4c1b('0x6'));var rimraf=require(_0x4c1b('0x7'));var config=require(_0x4c1b('0x8'));var attributes=require(_0x4c1b('0x9'));module[_0x4c1b('0xa')]=function(_0xe06d7,_0x16cd60){return _0xe06d7[_0x4c1b('0xb')](_0x4c1b('0xc'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x4c1b('0xd'),'fields':[_0x4c1b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9654=['../../config/logger','api','bluebird','request-promise','path','rimraf','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','report_openchannel_transfer','lodash'];(function(_0x581a4b,_0x3252f9){var _0x200f3=function(_0x2fcd79){while(--_0x2fcd79){_0x581a4b['push'](_0x581a4b['shift']());}};_0x200f3(++_0x3252f9);}(_0x9654,0x107));var _0x4965=function(_0x27031e,_0x1eb8cd){_0x27031e=_0x27031e-0x0;var _0xfd46b3=_0x9654[_0x27031e];return _0xfd46b3;};'use strict';var _=require(_0x4965('0x0'));var util=require('util');var logger=require(_0x4965('0x1'))(_0x4965('0x2'));var moment=require('moment');var BPromise=require(_0x4965('0x3'));var rp=require(_0x4965('0x4'));var fs=require('fs');var path=require(_0x4965('0x5'));var rimraf=require(_0x4965('0x6'));var config=require('../../config/environment');var attributes=require(_0x4965('0x7'));module[_0x4965('0x8')]=function(_0x58b31c,_0x28cd1a){return _0x58b31c['define'](_0x4965('0x9'),attributes,{'tableName':_0x4965('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 8389781..bba4a5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c2=['stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5cee2c,_0xce0660){var _0x4b27a9=function(_0x3e9df8){while(--_0x3e9df8){_0x5cee2c['push'](_0x5cee2c['shift']());}};_0x4b27a9(++_0xce0660);}(_0x60c2,0x8f));var _0x260c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x60c2[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0x260c('0x0'));var moment=require(_0x260c('0x1'));var BPromise=require(_0x260c('0x2'));var rs=require(_0x260c('0x3'));var fs=require('fs');var Redis=require(_0x260c('0x4'));var db=require(_0x260c('0x5'))['db'];var utils=require(_0x260c('0x6'));var logger=require(_0x260c('0x7'))(_0x260c('0x8'));var config=require(_0x260c('0x9'));var jayson=require(_0x260c('0xa'));var client=jayson[_0x260c('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14fab2,_0x2c2cd8,_0x3b432d){return new BPromise(function(_0xf22c37,_0x4b2992){return client[_0x260c('0xc')](_0x14fab2,_0x3b432d)[_0x260c('0xd')](function(_0x8378bb){logger[_0x260c('0xe')](_0x260c('0xf'),_0x2c2cd8,_0x260c('0x10'));logger[_0x260c('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x2c2cd8,_0x260c('0x10'),JSON[_0x260c('0x12')](_0x8378bb));if(_0x8378bb[_0x260c('0x13')]){if(_0x8378bb['error'][_0x260c('0x14')]===0x1f4){logger[_0x260c('0x13')](_0x260c('0xf'),_0x2c2cd8,_0x8378bb['error'][_0x260c('0x15')]);return _0x4b2992(_0x8378bb[_0x260c('0x13')][_0x260c('0x15')]);}logger[_0x260c('0x13')](_0x260c('0xf'),_0x2c2cd8,_0x8378bb['error'][_0x260c('0x15')]);return _0xf22c37(_0x8378bb['error'][_0x260c('0x15')]);}else{logger[_0x260c('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x2c2cd8,_0x260c('0x10'));_0xf22c37(_0x8378bb['result'][_0x260c('0x15')]);}})[_0x260c('0x16')](function(_0x411970){logger[_0x260c('0x13')](_0x260c('0xf'),_0x2c2cd8,_0x411970);_0x4b2992(_0x411970);});});}
\ No newline at end of file
+var _0x3bd7=['request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3bd7,0x199));var _0x73bd=function(_0x36d703,_0x55b354){_0x36d703=_0x36d703-0x0;var _0x12c909=_0x3bd7[_0x36d703];return _0x12c909;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x73bd('0x0'));var BPromise=require(_0x73bd('0x1'));var rs=require(_0x73bd('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x73bd('0x3'))['db'];var utils=require(_0x73bd('0x4'));var logger=require(_0x73bd('0x5'))('rpc');var config=require(_0x73bd('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x73bd('0x7')][_0x73bd('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4bca41,_0x38ffbb,_0x4c1254){return new BPromise(function(_0x569bef,_0x549abe){return client[_0x73bd('0x9')](_0x4bca41,_0x4c1254)['then'](function(_0x4f627c){logger[_0x73bd('0xa')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x38ffbb,_0x73bd('0xb'));logger[_0x73bd('0xc')](_0x73bd('0xd'),_0x38ffbb,_0x73bd('0xb'),JSON[_0x73bd('0xe')](_0x4f627c));if(_0x4f627c[_0x73bd('0xf')]){if(_0x4f627c['error'][_0x73bd('0x10')]===0x1f4){logger[_0x73bd('0xf')](_0x73bd('0x11'),_0x38ffbb,_0x4f627c[_0x73bd('0xf')][_0x73bd('0x12')]);return _0x549abe(_0x4f627c[_0x73bd('0xf')]['message']);}logger[_0x73bd('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x38ffbb,_0x4f627c[_0x73bd('0xf')][_0x73bd('0x12')]);return _0x569bef(_0x4f627c[_0x73bd('0xf')][_0x73bd('0x12')]);}else{logger[_0x73bd('0xa')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x38ffbb,_0x73bd('0xb'));_0x569bef(_0x4f627c[_0x73bd('0x13')][_0x73bd('0x12')]);}})[_0x73bd('0x14')](function(_0x411931){logger[_0x73bd('0xf')](_0x73bd('0x11'),_0x38ffbb,_0x411931);_0x549abe(_0x411931);});});}
\ No newline at end of file
index cc8ca3f..5914042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa004=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xa004,0x65));var _0x4a00=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa004[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4a00('0x0'));var util=require(_0x4a00('0x1'));var path=require(_0x4a00('0x2'));var timeout=require(_0x4a00('0x3'));var express=require(_0x4a00('0x4'));var router=express[_0x4a00('0x5')]();var fs_extra=require(_0x4a00('0x6'));var auth=require(_0x4a00('0x7'));var interaction=require(_0x4a00('0x8'));var config=require('../../config/environment');var controller=require('./pause.controller');router[_0x4a00('0x9')]('/',auth[_0x4a00('0xa')](),controller[_0x4a00('0xb')]);router[_0x4a00('0x9')](_0x4a00('0xc'),auth[_0x4a00('0xa')](),controller[_0x4a00('0xd')]);router[_0x4a00('0xe')]('/',auth[_0x4a00('0xa')](),controller[_0x4a00('0xf')]);router[_0x4a00('0x10')](_0x4a00('0xc'),auth[_0x4a00('0xa')](),controller[_0x4a00('0x11')]);router[_0x4a00('0x12')](_0x4a00('0xc'),auth[_0x4a00('0xa')](),controller[_0x4a00('0x13')]);module[_0x4a00('0x14')]=router;
\ No newline at end of file
+var _0x4439=['/:id','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','put'];(function(_0x23522d,_0xeb71dd){var _0xc85ee3=function(_0x29c5bd){while(--_0x29c5bd){_0x23522d['push'](_0x23522d['shift']());}};_0xc85ee3(++_0xeb71dd);}(_0x4439,0x1e2));var _0x9443=function(_0x40ebff,_0x1dd15e){_0x40ebff=_0x40ebff-0x0;var _0x40122a=_0x4439[_0x40ebff];return _0x40122a;};'use strict';var multer=require(_0x9443('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9443('0x1'));var express=require(_0x9443('0x2'));var router=express[_0x9443('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9443('0x4'));var interaction=require(_0x9443('0x5'));var config=require(_0x9443('0x6'));var controller=require('./pause.controller');router[_0x9443('0x7')]('/',auth[_0x9443('0x8')](),controller[_0x9443('0x9')]);router['get']('/:id',auth[_0x9443('0x8')](),controller[_0x9443('0xa')]);router[_0x9443('0xb')]('/',auth[_0x9443('0x8')](),controller['create']);router[_0x9443('0xc')]('/:id',auth[_0x9443('0x8')](),controller['update']);router['delete'](_0x9443('0xd'),auth[_0x9443('0x8')](),controller['destroy']);module[_0x9443('0xe')]=router;
\ No newline at end of file
index f06c6d0..e79d7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecea=['sequelize','STRING'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0xecea,0x1ba));var _0xaece=function(_0x1d166a,_0x3db61c){_0x1d166a=_0x1d166a-0x0;var _0x2ba779=_0xecea[_0x1d166a];return _0x2ba779;};'use strict';var Sequelize=require(_0xaece('0x0'));module['exports']={'name':{'type':Sequelize[_0xaece('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9330=['sequelize','exports','STRING'];(function(_0x561968,_0x1f9151){var _0x510072=function(_0x475895){while(--_0x475895){_0x561968['push'](_0x561968['shift']());}};_0x510072(++_0x1f9151);}(_0x9330,0x1ec));var _0x0933=function(_0x3998d3,_0x270413){_0x3998d3=_0x3998d3-0x0;var _0x5cadf1=_0x9330[_0x3998d3];return _0x5cadf1;};'use strict';var Sequelize=require(_0x0933('0x0'));module[_0x0933('0x1')]={'name':{'type':Sequelize[_0x0933('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x0933('0x2')]}};
\ No newline at end of file
index 58619e7..344b46d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d8=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','Pauses','destroy','sendStatus','error','stack','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body'];(function(_0x1240a7,_0x450fec){var _0xcc6922=function(_0x3035e7){while(--_0x3035e7){_0x1240a7['push'](_0x1240a7['shift']());}};_0xcc6922(++_0x450fec);}(_0xf9d8,0x158));var _0x8f9d=function(_0x2f3c1f,_0x1ff0af){_0x2f3c1f=_0x2f3c1f-0x0;var _0x279c65=_0xf9d8[_0x2f3c1f];return _0x279c65;};'use strict';var emlformat=require(_0x8f9d('0x0'));var rimraf=require(_0x8f9d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8f9d('0x2'));var rp=require(_0x8f9d('0x3'));var moment=require('moment');var BPromise=require(_0x8f9d('0x4'));var Mustache=require(_0x8f9d('0x5'));var util=require(_0x8f9d('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8f9d('0x7'));var fs=require('fs');var fs_extra=require(_0x8f9d('0x8'));var _=require(_0x8f9d('0x9'));var squel=require(_0x8f9d('0xa'));var crypto=require(_0x8f9d('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8f9d('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8f9d('0xd'));var qs=require(_0x8f9d('0xe'));var as=require(_0x8f9d('0xf'));var hardwareService=require(_0x8f9d('0x10'));var logger=require(_0x8f9d('0x11'))(_0x8f9d('0x12'));var utils=require(_0x8f9d('0x13'));var config=require(_0x8f9d('0x14'));var licenseUtil=require(_0x8f9d('0x15'));var db=require(_0x8f9d('0x16'))['db'];function respondWithStatusCode(_0x4c5c8d,_0x252536){_0x252536=_0x252536||0xcc;return function(_0x5a1e7b){if(_0x5a1e7b){return _0x4c5c8d['sendStatus'](_0x252536);}return _0x4c5c8d['status'](_0x252536)[_0x8f9d('0x17')]();};}function respondWithResult(_0x1c9b04,_0x5d1e71){_0x5d1e71=_0x5d1e71||0xc8;return function(_0xf30883){if(_0xf30883){return _0x1c9b04[_0x8f9d('0x18')](_0x5d1e71)[_0x8f9d('0x19')](_0xf30883);}};}function respondWithFilteredResult(_0x375073,_0x47fca1){return function(_0x1876ba){if(_0x1876ba){var _0x3ff6ef=typeof _0x47fca1[_0x8f9d('0x1a')]==='undefined'&&typeof _0x47fca1[_0x8f9d('0x1b')]===_0x8f9d('0x1c');var _0x4c3769=_0x1876ba[_0x8f9d('0x1d')];var _0x4a6a90=_0x3ff6ef?0x0:_0x47fca1['offset'];var _0x2456cc=_0x3ff6ef?_0x1876ba[_0x8f9d('0x1d')]:_0x47fca1[_0x8f9d('0x1a')]+_0x47fca1[_0x8f9d('0x1b')];var _0x3479f8;if(_0x2456cc>=_0x4c3769){_0x2456cc=_0x4c3769;_0x3479f8=0xc8;}else{_0x3479f8=0xce;}_0x375073[_0x8f9d('0x18')](_0x3479f8);return _0x375073[_0x8f9d('0x1e')](_0x8f9d('0x1f'),_0x4a6a90+'-'+_0x2456cc+'/'+_0x4c3769)[_0x8f9d('0x19')](_0x1876ba);}return null;};}function patchUpdates(_0x3af3c7){return function(_0x34d44f){try{jsonpatch[_0x8f9d('0x20')](_0x34d44f,_0x3af3c7,!![]);}catch(_0x478322){return BPromise[_0x8f9d('0x21')](_0x478322);}return _0x34d44f[_0x8f9d('0x22')]();};}function saveUpdates(_0x3c4013,_0x1b6549){return function(_0x8de177){if(_0x8de177){return _0x8de177[_0x8f9d('0x23')](_0x3c4013)[_0x8f9d('0x24')](function(_0x489bad){return _0x489bad;});}return null;};}function removeEntity(_0x1c10d1,_0x37e89c){return function(_0x36d142){if(_0x36d142){return _0x36d142['destroy']()[_0x8f9d('0x24')](function(){var _0x48c4f3=_0x36d142['get']({'plain':!![]});var _0x3e00fb=_0x8f9d('0x25');return db['UserProfileResource'][_0x8f9d('0x26')]({'where':{'type':_0x3e00fb,'resourceId':_0x48c4f3['id']}})[_0x8f9d('0x24')](function(){return _0x36d142;});})[_0x8f9d('0x24')](function(){_0x1c10d1[_0x8f9d('0x18')](0xcc)[_0x8f9d('0x17')]();});}};}function handleEntityNotFound(_0x201166,_0x3bfca5){return function(_0x21975c){if(!_0x21975c){_0x201166[_0x8f9d('0x27')](0x194);}return _0x21975c;};}function handleError(_0x44f42c,_0x235306){_0x235306=_0x235306||0x1f4;return function(_0x383a76){logger[_0x8f9d('0x28')](_0x383a76[_0x8f9d('0x29')]);if(_0x383a76[_0x8f9d('0x2a')]){delete _0x383a76[_0x8f9d('0x2a')];}_0x44f42c[_0x8f9d('0x18')](_0x235306)[_0x8f9d('0x2b')](_0x383a76);};}exports[_0x8f9d('0x2c')]=function(_0x2b4219,_0xd595d9){var _0x415f39={},_0x5ddf81={},_0x18c54c={'count':0x0,'rows':[]};var _0x8ac6b5=_[_0x8f9d('0x2d')](db[_0x8f9d('0x2e')][_0x8f9d('0x2f')],function(_0x3accd4){return{'name':_0x3accd4[_0x8f9d('0x30')],'type':_0x3accd4[_0x8f9d('0x31')][_0x8f9d('0x32')]};});_0x5ddf81[_0x8f9d('0x33')]=_[_0x8f9d('0x2d')](_0x8ac6b5,_0x8f9d('0x2a'));_0x5ddf81[_0x8f9d('0x34')]=_[_0x8f9d('0x35')](_0x2b4219[_0x8f9d('0x34')]);_0x5ddf81[_0x8f9d('0x36')]=_[_0x8f9d('0x37')](_0x5ddf81['model'],_0x5ddf81['query']);_0x415f39[_0x8f9d('0x38')]=_[_0x8f9d('0x37')](_0x5ddf81[_0x8f9d('0x33')],qs[_0x8f9d('0x39')](_0x2b4219['query'][_0x8f9d('0x39')]));_0x415f39['attributes']=_0x415f39[_0x8f9d('0x38')][_0x8f9d('0x3a')]?_0x415f39[_0x8f9d('0x38')]:_0x5ddf81[_0x8f9d('0x33')];if(!_0x2b4219[_0x8f9d('0x34')][_0x8f9d('0x3b')](_0x8f9d('0x3c'))){_0x415f39['limit']=qs[_0x8f9d('0x1b')](_0x2b4219[_0x8f9d('0x34')][_0x8f9d('0x1b')]);_0x415f39[_0x8f9d('0x1a')]=qs[_0x8f9d('0x1a')](_0x2b4219['query'][_0x8f9d('0x1a')]);}_0x415f39[_0x8f9d('0x3d')]=qs[_0x8f9d('0x3e')](_0x2b4219['query']['sort']);_0x415f39[_0x8f9d('0x3f')]=qs[_0x8f9d('0x36')](_['pick'](_0x2b4219['query'],_0x5ddf81['filters']),_0x8ac6b5);if(_0x2b4219[_0x8f9d('0x34')][_0x8f9d('0x40')]){_0x415f39['where']=_[_0x8f9d('0x41')](_0x415f39[_0x8f9d('0x3f')],{'$or':_[_0x8f9d('0x2d')](_0x8ac6b5,function(_0x55cada){if(_0x55cada[_0x8f9d('0x31')]!=='VIRTUAL'){var _0x2f9943={};_0x2f9943[_0x55cada[_0x8f9d('0x2a')]]={'$like':'%'+_0x2b4219[_0x8f9d('0x34')][_0x8f9d('0x40')]+'%'};return _0x2f9943;}})});}_0x415f39=_[_0x8f9d('0x41')]({},_0x415f39,_0x2b4219[_0x8f9d('0x42')]);var _0x591b2c={'where':_0x415f39[_0x8f9d('0x3f')]};return db[_0x8f9d('0x2e')][_0x8f9d('0x1d')](_0x591b2c)[_0x8f9d('0x24')](function(_0x1d5a31){_0x18c54c[_0x8f9d('0x1d')]=_0x1d5a31;if(_0x2b4219['query'][_0x8f9d('0x43')]){_0x415f39[_0x8f9d('0x44')]=[{'all':!![]}];}return db[_0x8f9d('0x2e')][_0x8f9d('0x45')](_0x415f39);})[_0x8f9d('0x24')](function(_0x3dd897){_0x18c54c[_0x8f9d('0x46')]=_0x3dd897;return _0x18c54c;})[_0x8f9d('0x24')](respondWithFilteredResult(_0xd595d9,_0x415f39))[_0x8f9d('0x47')](handleError(_0xd595d9,null));};exports['show']=function(_0x1979da,_0x325775){var _0x36d58b={'raw':!![],'where':{'id':_0x1979da[_0x8f9d('0x48')]['id']}},_0x19789f={};_0x19789f[_0x8f9d('0x33')]=_[_0x8f9d('0x35')](db[_0x8f9d('0x2e')][_0x8f9d('0x2f')]);_0x19789f['query']=_[_0x8f9d('0x35')](_0x1979da[_0x8f9d('0x34')]);_0x19789f[_0x8f9d('0x36')]=_['intersection'](_0x19789f['model'],_0x19789f[_0x8f9d('0x34')]);_0x36d58b[_0x8f9d('0x38')]=_['intersection'](_0x19789f[_0x8f9d('0x33')],qs[_0x8f9d('0x39')](_0x1979da[_0x8f9d('0x34')]['fields']));_0x36d58b[_0x8f9d('0x38')]=_0x36d58b[_0x8f9d('0x38')]['length']?_0x36d58b[_0x8f9d('0x38')]:_0x19789f['model'];if(_0x1979da[_0x8f9d('0x34')][_0x8f9d('0x43')]){_0x36d58b[_0x8f9d('0x44')]=[{'all':!![]}];}_0x36d58b=_[_0x8f9d('0x41')]({},_0x36d58b,_0x1979da[_0x8f9d('0x42')]);return db[_0x8f9d('0x2e')][_0x8f9d('0x49')](_0x36d58b)[_0x8f9d('0x24')](handleEntityNotFound(_0x325775,null))[_0x8f9d('0x24')](respondWithResult(_0x325775,null))['catch'](handleError(_0x325775,null));};exports[_0x8f9d('0x4a')]=function(_0x6a8b3a,_0x78664){return db[_0x8f9d('0x2e')][_0x8f9d('0x4a')](_0x6a8b3a[_0x8f9d('0x4b')],{})[_0x8f9d('0x24')](function(_0x4bcd05){var _0x396dcf=_0x6a8b3a['user'][_0x8f9d('0x4c')]({'plain':!![]});if(!_0x396dcf)throw new Error(_0x8f9d('0x4d'));if(_0x396dcf[_0x8f9d('0x4e')]===_0x8f9d('0x4f')){var _0x3d587d=_0x4bcd05[_0x8f9d('0x4c')]({'plain':!![]});var _0x1eb5ff=_0x8f9d('0x25');return db[_0x8f9d('0x50')][_0x8f9d('0x49')]({'where':{'name':_0x1eb5ff,'userProfileId':_0x396dcf[_0x8f9d('0x51')]},'raw':!![]})[_0x8f9d('0x24')](function(_0x58432f){if(_0x58432f&&_0x58432f['autoAssociation']===0x0){return db[_0x8f9d('0x52')][_0x8f9d('0x4a')]({'name':_0x3d587d[_0x8f9d('0x2a')],'resourceId':_0x3d587d['id'],'type':_0x58432f[_0x8f9d('0x2a')],'sectionId':_0x58432f['id']},{})[_0x8f9d('0x24')](function(){return _0x4bcd05;});}else{return _0x4bcd05;}})[_0x8f9d('0x47')](function(_0x3b0cf9){logger['error'](_0x8f9d('0x53'),_0x3b0cf9);throw _0x3b0cf9;});}return _0x4bcd05;})['then'](respondWithResult(_0x78664,0xc9))[_0x8f9d('0x47')](handleError(_0x78664,null));};exports[_0x8f9d('0x23')]=function(_0x5809d1,_0x510c4a){if(_0x5809d1['body']['id']){delete _0x5809d1['body']['id'];}return db[_0x8f9d('0x2e')][_0x8f9d('0x49')]({'where':{'id':_0x5809d1['params']['id']}})['then'](handleEntityNotFound(_0x510c4a,null))[_0x8f9d('0x24')](saveUpdates(_0x5809d1[_0x8f9d('0x4b')],null))[_0x8f9d('0x24')](respondWithResult(_0x510c4a,null))[_0x8f9d('0x47')](handleError(_0x510c4a,null));};exports[_0x8f9d('0x26')]=function(_0x49f029,_0x13c70f){return db[_0x8f9d('0x2e')]['find']({'where':{'id':_0x49f029[_0x8f9d('0x48')]['id']}})[_0x8f9d('0x24')](handleEntityNotFound(_0x13c70f,null))[_0x8f9d('0x24')](removeEntity(_0x13c70f,null))['catch'](handleError(_0x13c70f,null));};
\ No newline at end of file
+var _0x24b9=['params','intersection','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','Content-Range','reject','update','then','destroy','get','Pauses','UserProfileResource','end','error','name','map','Pause','rawAttributes','fieldName','type','key','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','query','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch'];(function(_0x20c21f,_0x999c2e){var _0x31f189=function(_0x178b55){while(--_0x178b55){_0x20c21f['push'](_0x20c21f['shift']());}};_0x31f189(++_0x999c2e);}(_0x24b9,0xa8));var _0x924b=function(_0x231ba1,_0x8ecc2d){_0x231ba1=_0x231ba1-0x0;var _0xdbe5ac=_0x24b9[_0x231ba1];return _0xdbe5ac;};'use strict';var emlformat=require(_0x924b('0x0'));var rimraf=require(_0x924b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x924b('0x2'));var rp=require(_0x924b('0x3'));var moment=require(_0x924b('0x4'));var BPromise=require(_0x924b('0x5'));var Mustache=require(_0x924b('0x6'));var util=require(_0x924b('0x7'));var path=require(_0x924b('0x8'));var sox=require(_0x924b('0x9'));var csv=require(_0x924b('0xa'));var ejs=require(_0x924b('0xb'));var fs=require('fs');var fs_extra=require(_0x924b('0xc'));var _=require(_0x924b('0xd'));var squel=require(_0x924b('0xe'));var crypto=require(_0x924b('0xf'));var jsforce=require(_0x924b('0x10'));var deskjs=require(_0x924b('0x11'));var toCsv=require(_0x924b('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x924b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x924b('0x13'));var as=require(_0x924b('0x14'));var hardwareService=require(_0x924b('0x15'));var logger=require(_0x924b('0x16'))(_0x924b('0x17'));var utils=require(_0x924b('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x924b('0x19'))['db'];function respondWithStatusCode(_0x107a42,_0x4a5d5c){_0x4a5d5c=_0x4a5d5c||0xcc;return function(_0x468944){if(_0x468944){return _0x107a42[_0x924b('0x1a')](_0x4a5d5c);}return _0x107a42['status'](_0x4a5d5c)['end']();};}function respondWithResult(_0x2538e0,_0x160aa3){_0x160aa3=_0x160aa3||0xc8;return function(_0x125a3d){if(_0x125a3d){return _0x2538e0['status'](_0x160aa3)[_0x924b('0x1b')](_0x125a3d);}};}function respondWithFilteredResult(_0x8c9f1e,_0x46feda){return function(_0x5218d2){if(_0x5218d2){var _0x7957b9=typeof _0x46feda[_0x924b('0x1c')]===_0x924b('0x1d')&&typeof _0x46feda[_0x924b('0x1e')]==='undefined';var _0x5e8bae=_0x5218d2[_0x924b('0x1f')];var _0x3c7c97=_0x7957b9?0x0:_0x46feda[_0x924b('0x1c')];var _0x20bfb1=_0x7957b9?_0x5218d2[_0x924b('0x1f')]:_0x46feda[_0x924b('0x1c')]+_0x46feda[_0x924b('0x1e')];var _0x38df3e;if(_0x20bfb1>=_0x5e8bae){_0x20bfb1=_0x5e8bae;_0x38df3e=0xc8;}else{_0x38df3e=0xce;}_0x8c9f1e[_0x924b('0x20')](_0x38df3e);return _0x8c9f1e['set'](_0x924b('0x21'),_0x3c7c97+'-'+_0x20bfb1+'/'+_0x5e8bae)[_0x924b('0x1b')](_0x5218d2);}return null;};}function patchUpdates(_0x53dfdc){return function(_0x3338ea){try{jsonpatch['apply'](_0x3338ea,_0x53dfdc,!![]);}catch(_0x5481bd){return BPromise[_0x924b('0x22')](_0x5481bd);}return _0x3338ea['save']();};}function saveUpdates(_0x5a86c4,_0x37d696){return function(_0x491e2f){if(_0x491e2f){return _0x491e2f[_0x924b('0x23')](_0x5a86c4)[_0x924b('0x24')](function(_0x4895e4){return _0x4895e4;});}return null;};}function removeEntity(_0x125721,_0x5b6e1e){return function(_0x2e5948){if(_0x2e5948){return _0x2e5948[_0x924b('0x25')]()[_0x924b('0x24')](function(){var _0x1d9eb9=_0x2e5948[_0x924b('0x26')]({'plain':!![]});var _0x446eb0=_0x924b('0x27');return db[_0x924b('0x28')][_0x924b('0x25')]({'where':{'type':_0x446eb0,'resourceId':_0x1d9eb9['id']}})[_0x924b('0x24')](function(){return _0x2e5948;});})[_0x924b('0x24')](function(){_0x125721[_0x924b('0x20')](0xcc)[_0x924b('0x29')]();});}};}function handleEntityNotFound(_0x483805,_0x12aa5c){return function(_0x5caf53){if(!_0x5caf53){_0x483805['sendStatus'](0x194);}return _0x5caf53;};}function handleError(_0x2bc2ca,_0xca41ab){_0xca41ab=_0xca41ab||0x1f4;return function(_0x39bfa9){logger[_0x924b('0x2a')](_0x39bfa9['stack']);if(_0x39bfa9[_0x924b('0x2b')]){delete _0x39bfa9[_0x924b('0x2b')];}_0x2bc2ca[_0x924b('0x20')](_0xca41ab)['send'](_0x39bfa9);};}exports['index']=function(_0x4a7c27,_0x559775){var _0x19340c={},_0x377fac={},_0x5d031d={'count':0x0,'rows':[]};var _0x556066=_[_0x924b('0x2c')](db[_0x924b('0x2d')][_0x924b('0x2e')],function(_0x11f0d0){return{'name':_0x11f0d0[_0x924b('0x2f')],'type':_0x11f0d0[_0x924b('0x30')][_0x924b('0x31')]};});_0x377fac['model']=_[_0x924b('0x2c')](_0x556066,_0x924b('0x2b'));_0x377fac['query']=_[_0x924b('0x32')](_0x4a7c27['query']);_0x377fac[_0x924b('0x33')]=_['intersection'](_0x377fac[_0x924b('0x34')],_0x377fac['query']);_0x19340c[_0x924b('0x35')]=_['intersection'](_0x377fac[_0x924b('0x34')],qs['fields'](_0x4a7c27['query'][_0x924b('0x36')]));_0x19340c[_0x924b('0x35')]=_0x19340c['attributes'][_0x924b('0x37')]?_0x19340c[_0x924b('0x35')]:_0x377fac['model'];if(!_0x4a7c27['query'][_0x924b('0x38')](_0x924b('0x39'))){_0x19340c[_0x924b('0x1e')]=qs[_0x924b('0x1e')](_0x4a7c27[_0x924b('0x3a')][_0x924b('0x1e')]);_0x19340c[_0x924b('0x1c')]=qs[_0x924b('0x1c')](_0x4a7c27[_0x924b('0x3a')][_0x924b('0x1c')]);}_0x19340c['order']=qs[_0x924b('0x3b')](_0x4a7c27[_0x924b('0x3a')][_0x924b('0x3b')]);_0x19340c[_0x924b('0x3c')]=qs[_0x924b('0x33')](_['pick'](_0x4a7c27[_0x924b('0x3a')],_0x377fac[_0x924b('0x33')]),_0x556066);if(_0x4a7c27[_0x924b('0x3a')]['filter']){_0x19340c[_0x924b('0x3c')]=_['merge'](_0x19340c[_0x924b('0x3c')],{'$or':_[_0x924b('0x2c')](_0x556066,function(_0xefa67e){if(_0xefa67e[_0x924b('0x30')]!==_0x924b('0x3d')){var _0x318b44={};_0x318b44[_0xefa67e['name']]={'$like':'%'+_0x4a7c27[_0x924b('0x3a')][_0x924b('0x3e')]+'%'};return _0x318b44;}})});}_0x19340c=_[_0x924b('0x3f')]({},_0x19340c,_0x4a7c27['options']);var _0x54fedf={'where':_0x19340c[_0x924b('0x3c')]};return db['Pause'][_0x924b('0x1f')](_0x54fedf)['then'](function(_0x1481d0){_0x5d031d['count']=_0x1481d0;if(_0x4a7c27[_0x924b('0x3a')][_0x924b('0x40')]){_0x19340c[_0x924b('0x41')]=[{'all':!![]}];}return db[_0x924b('0x2d')][_0x924b('0x42')](_0x19340c);})[_0x924b('0x24')](function(_0x30c5d2){_0x5d031d[_0x924b('0x43')]=_0x30c5d2;return _0x5d031d;})[_0x924b('0x24')](respondWithFilteredResult(_0x559775,_0x19340c))[_0x924b('0x44')](handleError(_0x559775,null));};exports['show']=function(_0x52b23e,_0x28d5d9){var _0x2efd0f={'raw':!![],'where':{'id':_0x52b23e[_0x924b('0x45')]['id']}},_0xce8b0b={};_0xce8b0b[_0x924b('0x34')]=_[_0x924b('0x32')](db[_0x924b('0x2d')][_0x924b('0x2e')]);_0xce8b0b[_0x924b('0x3a')]=_[_0x924b('0x32')](_0x52b23e[_0x924b('0x3a')]);_0xce8b0b[_0x924b('0x33')]=_[_0x924b('0x46')](_0xce8b0b['model'],_0xce8b0b[_0x924b('0x3a')]);_0x2efd0f[_0x924b('0x35')]=_[_0x924b('0x46')](_0xce8b0b['model'],qs[_0x924b('0x36')](_0x52b23e[_0x924b('0x3a')][_0x924b('0x36')]));_0x2efd0f[_0x924b('0x35')]=_0x2efd0f[_0x924b('0x35')]['length']?_0x2efd0f[_0x924b('0x35')]:_0xce8b0b[_0x924b('0x34')];if(_0x52b23e[_0x924b('0x3a')][_0x924b('0x40')]){_0x2efd0f[_0x924b('0x41')]=[{'all':!![]}];}_0x2efd0f=_[_0x924b('0x3f')]({},_0x2efd0f,_0x52b23e[_0x924b('0x47')]);return db['Pause'][_0x924b('0x48')](_0x2efd0f)[_0x924b('0x24')](handleEntityNotFound(_0x28d5d9,null))['then'](respondWithResult(_0x28d5d9,null))[_0x924b('0x44')](handleError(_0x28d5d9,null));};exports[_0x924b('0x49')]=function(_0x551d5a,_0x879ec1){return db['Pause'][_0x924b('0x49')](_0x551d5a[_0x924b('0x4a')],{})[_0x924b('0x24')](function(_0x133efb){var _0x4ce200=_0x551d5a[_0x924b('0x4b')][_0x924b('0x26')]({'plain':!![]});if(!_0x4ce200)throw new Error(_0x924b('0x4c'));if(_0x4ce200['role']==='user'){var _0x3b0a62=_0x133efb[_0x924b('0x26')]({'plain':!![]});var _0x1fcf5c=_0x924b('0x27');return db['UserProfileSection'][_0x924b('0x48')]({'where':{'name':_0x1fcf5c,'userProfileId':_0x4ce200[_0x924b('0x4d')]},'raw':!![]})['then'](function(_0x33d01b){if(_0x33d01b&&_0x33d01b[_0x924b('0x4e')]===0x0){return db[_0x924b('0x28')]['create']({'name':_0x3b0a62[_0x924b('0x2b')],'resourceId':_0x3b0a62['id'],'type':_0x33d01b[_0x924b('0x2b')],'sectionId':_0x33d01b['id']},{})[_0x924b('0x24')](function(){return _0x133efb;});}else{return _0x133efb;}})[_0x924b('0x44')](function(_0x1bb591){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bb591);throw _0x1bb591;});}return _0x133efb;})[_0x924b('0x24')](respondWithResult(_0x879ec1,0xc9))[_0x924b('0x44')](handleError(_0x879ec1,null));};exports[_0x924b('0x23')]=function(_0x52f01e,_0x17d8c5){if(_0x52f01e[_0x924b('0x4a')]['id']){delete _0x52f01e[_0x924b('0x4a')]['id'];}return db[_0x924b('0x2d')][_0x924b('0x48')]({'where':{'id':_0x52f01e[_0x924b('0x45')]['id']}})['then'](handleEntityNotFound(_0x17d8c5,null))[_0x924b('0x24')](saveUpdates(_0x52f01e[_0x924b('0x4a')],null))[_0x924b('0x24')](respondWithResult(_0x17d8c5,null))[_0x924b('0x44')](handleError(_0x17d8c5,null));};exports[_0x924b('0x25')]=function(_0x3837b7,_0x26b7aa){return db['Pause'][_0x924b('0x48')]({'where':{'id':_0x3837b7[_0x924b('0x45')]['id']}})[_0x924b('0x24')](handleEntityNotFound(_0x26b7aa,null))[_0x924b('0x24')](removeEntity(_0x26b7aa,null))[_0x924b('0x44')](handleError(_0x26b7aa,null));};
\ No newline at end of file
index 4e425ed..fa5783a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['Pause','tools_pauses','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6aa7,0x178));var _0x76aa=function(_0x7d97cb,_0x319449){_0x7d97cb=_0x7d97cb-0x0;var _0x41a626=_0x6aa7[_0x7d97cb];return _0x41a626;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var logger=require(_0x76aa('0x1'))(_0x76aa('0x2'));var moment=require(_0x76aa('0x3'));var BPromise=require(_0x76aa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x76aa('0x5'));var rimraf=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1aceaa,_0x4d53f6){return _0x1aceaa[_0x76aa('0x8')](_0x76aa('0x9'),attributes,{'tableName':_0x76aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0xea1dea,_0xa3008d){var _0x193236=function(_0x4f4ba9){while(--_0x4f4ba9){_0xea1dea['push'](_0xea1dea['shift']());}};_0x193236(++_0xa3008d);}(_0x814b,0x1a2));var _0xb814=function(_0x2ab76b,_0x176579){_0x2ab76b=_0x2ab76b-0x0;var _0x201126=_0x814b[_0x2ab76b];return _0x201126;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8cbcf97..1f6c7a0 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(_0x1fbb37,_0x5840b8){var _0x591a30=function(_0x2a6573){while(--_0x2a6573){_0x1fbb37['push'](_0x1fbb37['shift']());}};_0x591a30(++_0x5840b8);}(_0x7a54,0x106));var _0x47a5=function(_0xbd84b3,_0x491ec1){_0xbd84b3=_0xbd84b3-0x0;var _0x488868=_0x7a54[_0xbd84b3];return _0x488868;};'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(_0x41dc24,_0x3132a2){var _0x2c1553=function(_0xfe307c){while(--_0xfe307c){_0x41dc24['push'](_0x41dc24['shift']());}};_0x2c1553(++_0x3132a2);}(_0x7a54,0x106));var _0x47a5=function(_0x26b8e1,_0x77c85d){_0x26b8e1=_0x26b8e1-0x0;var _0x3f3d4d=_0x7a54[_0x26b8e1];return _0x3f3d4d;};'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 6da4a8d..9661f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','isAuthenticated','index','webhookGet','get','show','/:id/download','download','diskStorage','join','root','originalname','replace','format','%s-%s%s','extname','now','post','file','upload','/webhook','webhookPost','put','/:id','update','delete','exports','multer'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0xa41a,0x6b));var _0xaa41=function(_0x121dae,_0x48aac2){_0x121dae=_0x121dae-0x0;var _0x1afa4e=_0xa41a[_0x121dae];return _0x1afa4e;};'use strict';var multer=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var path=require('path');var timeout=require(_0xaa41('0x2'));var express=require(_0xaa41('0x3'));var router=express[_0xaa41('0x4')]();var fs_extra=require(_0xaa41('0x5'));var auth=require(_0xaa41('0x6'));var interaction=require(_0xaa41('0x7'));var config=require(_0xaa41('0x8'));var controller=require(_0xaa41('0x9'));router['get']('/',auth[_0xaa41('0xa')](),controller[_0xaa41('0xb')]);router['get']('/webhook',controller[_0xaa41('0xc')]);router[_0xaa41('0xd')]('/:id',auth[_0xaa41('0xa')](),controller[_0xaa41('0xe')]);router[_0xaa41('0xd')](_0xaa41('0xf'),auth[_0xaa41('0xa')](),controller[_0xaa41('0x10')]);var upload=multer({'storage':multer[_0xaa41('0x11')]({'destination':function(_0x423a19,_0x1c291e,_0x5c9fc7){_0x5c9fc7(null,path[_0xaa41('0x12')](config[_0xaa41('0x13')],'server/files/plugins'));},'filename':function(_0x54827c,_0x1d0a54,_0x518b5b){_0x1d0a54[_0xaa41('0x14')]=_0x1d0a54[_0xaa41('0x14')][_0xaa41('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x518b5b(null,util[_0xaa41('0x16')](_0xaa41('0x17'),path['basename'](_0x1d0a54[_0xaa41('0x14')],path[_0xaa41('0x18')](_0x1d0a54[_0xaa41('0x14')])),Date[_0xaa41('0x19')](),path[_0xaa41('0x18')](_0x1d0a54[_0xaa41('0x14')])));}})});router[_0xaa41('0x1a')]('/',upload['single'](_0xaa41('0x1b')),controller[_0xaa41('0x1c')]);router[_0xaa41('0x1a')](_0xaa41('0x1d'),controller[_0xaa41('0x1e')]);router[_0xaa41('0x1f')](_0xaa41('0x20'),auth[_0xaa41('0xa')](),controller[_0xaa41('0x21')]);router['delete']('/:id',auth[_0xaa41('0xa')](),controller[_0xaa41('0x22')]);module[_0xaa41('0x23')]=router;
\ No newline at end of file
+var _0x4c4e=['webhookGet','/:id','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','basename','now','extname','post','single','file','upload','webhookPost','put','update','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','isAuthenticated','index','get','/webhook'];(function(_0x2eaacb,_0x5c68c9){var _0x3a84dd=function(_0x4c8c7a){while(--_0x4c8c7a){_0x2eaacb['push'](_0x2eaacb['shift']());}};_0x3a84dd(++_0x5c68c9);}(_0x4c4e,0x152));var _0xe4c4=function(_0x482f87,_0x1eaacc){_0x482f87=_0x482f87-0x0;var _0x34ce77=_0x4c4e[_0x482f87];return _0x34ce77;};'use strict';var multer=require(_0xe4c4('0x0'));var util=require('util');var path=require(_0xe4c4('0x1'));var timeout=require(_0xe4c4('0x2'));var express=require(_0xe4c4('0x3'));var router=express['Router']();var fs_extra=require(_0xe4c4('0x4'));var auth=require(_0xe4c4('0x5'));var interaction=require(_0xe4c4('0x6'));var config=require('../../config/environment');var controller=require(_0xe4c4('0x7'));router['get']('/',auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x9')]);router[_0xe4c4('0xa')](_0xe4c4('0xb'),controller[_0xe4c4('0xc')]);router[_0xe4c4('0xa')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller['show']);router['get'](_0xe4c4('0xe'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0xf')]);var upload=multer({'storage':multer[_0xe4c4('0x10')]({'destination':function(_0x333c08,_0x2f4d5f,_0x50264f){_0x50264f(null,path[_0xe4c4('0x11')](config[_0xe4c4('0x12')],_0xe4c4('0x13')));},'filename':function(_0x2483d0,_0x50bfab,_0x262083){_0x50bfab[_0xe4c4('0x14')]=_0x50bfab['originalname'][_0xe4c4('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x262083(null,util[_0xe4c4('0x16')]('%s-%s%s',path[_0xe4c4('0x17')](_0x50bfab[_0xe4c4('0x14')],path['extname'](_0x50bfab[_0xe4c4('0x14')])),Date[_0xe4c4('0x18')](),path[_0xe4c4('0x19')](_0x50bfab[_0xe4c4('0x14')])));}})});router[_0xe4c4('0x1a')]('/',upload[_0xe4c4('0x1b')](_0xe4c4('0x1c')),controller[_0xe4c4('0x1d')]);router[_0xe4c4('0x1a')](_0xe4c4('0xb'),controller[_0xe4c4('0x1e')]);router[_0xe4c4('0x1f')](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x20')]);router['delete'](_0xe4c4('0xd'),auth[_0xe4c4('0x8')](),controller[_0xe4c4('0x21')]);module[_0xe4c4('0x22')]=router;
\ No newline at end of file
index fa0d7d9..b13feab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3116=['script','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM'];(function(_0x284c26,_0x4f0391){var _0x405c22=function(_0x2532d2){while(--_0x2532d2){_0x284c26['push'](_0x284c26['shift']());}};_0x405c22(++_0x4f0391);}(_0x3116,0x168));var _0x6311=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x3116[_0x47a7d0];return _0xb9bd08;};'use strict';var Sequelize=require('sequelize');module[_0x6311('0x0')]={'name':{'type':Sequelize[_0x6311('0x1')]},'type':{'type':Sequelize[_0x6311('0x2')]('html',_0x6311('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize['STRING'],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x6311('0x4')],'defaultValue':0x0,'comment':_0x6311('0x5')},'sidebar':{'type':Sequelize[_0x6311('0x2')](_0x6311('0x6'),_0x6311('0x7'),'always',_0x6311('0x8')),'defaultValue':_0x6311('0x9'),'comment':_0x6311('0xa')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x6311('0x1')]},'agentUrl':{'type':Sequelize[_0x6311('0x1')]},'scriptName':{'type':Sequelize[_0x6311('0x1')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8473=['exports','STRING','ENUM','html','script','TEXT','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'];(function(_0x549b6e,_0x215925){var _0x499ff1=function(_0x2acb3b){while(--_0x2acb3b){_0x549b6e['push'](_0x549b6e['shift']());}};_0x499ff1(++_0x215925);}(_0x8473,0xcc));var _0x3847=function(_0x3668c6,_0x148226){_0x3668c6=_0x3668c6-0x0;var _0x3c60ef=_0x8473[_0x3668c6];return _0x3c60ef;};'use strict';var Sequelize=require('sequelize');module[_0x3847('0x0')]={'name':{'type':Sequelize[_0x3847('0x1')]},'type':{'type':Sequelize[_0x3847('0x2')](_0x3847('0x3'),_0x3847('0x4'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0x3847('0x5')]},'path':{'type':Sequelize[_0x3847('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x3847('0x6')],'defaultValue':0x0,'comment':_0x3847('0x7')},'sidebar':{'type':Sequelize[_0x3847('0x2')](_0x3847('0x8'),'agentOnly',_0x3847('0x9'),_0x3847('0xa')),'defaultValue':_0x3847('0x9'),'comment':_0x3847('0xb')},'icon':{'type':Sequelize[_0x3847('0x1')]},'adminUrl':{'type':Sequelize[_0x3847('0x1')]},'agentUrl':{'type':Sequelize[_0x3847('0x1')]},'scriptName':{'type':Sequelize[_0x3847('0x1')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index eeb6125..dc08f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6224=['filters','pick','merge','where','VIRTUAL','options','Plugin','includeAll','include','findAll','rows','catch','show','length','download','find','params','path','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','join','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','plugins','Warning:\x20agent\x20view\x20not\x20specified','test','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','encoding','%s%s','headers','content-length','content-type','set','endsWith','statusCode','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','http://localhost:','method','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','attributes','intersection','fields','nolimit','sort'];(function(_0x5a852b,_0x1694c2){var _0xd74d84=function(_0x170a6d){while(--_0x170a6d){_0x5a852b['push'](_0x5a852b['shift']());}};_0xd74d84(++_0x1694c2);}(_0x6224,0x1cd));var _0x4622=function(_0x3fb9dd,_0x174fff){_0x3fb9dd=_0x3fb9dd-0x0;var _0x20136a=_0x6224[_0x3fb9dd];return _0x20136a;};'use strict';var emlformat=require(_0x4622('0x0'));var rimraf=require(_0x4622('0x1'));var zipdir=require(_0x4622('0x2'));var jsonpatch=require(_0x4622('0x3'));var rp=require(_0x4622('0x4'));var moment=require(_0x4622('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4622('0x6'));var path=require('path');var sox=require(_0x4622('0x7'));var csv=require(_0x4622('0x8'));var ejs=require(_0x4622('0x9'));var fs=require('fs');var fs_extra=require(_0x4622('0xa'));var _=require(_0x4622('0xb'));var squel=require('squel');var crypto=require(_0x4622('0xc'));var jsforce=require(_0x4622('0xd'));var deskjs=require(_0x4622('0xe'));var toCsv=require(_0x4622('0x8'));var querystring=require(_0x4622('0xf'));var Papa=require(_0x4622('0x10'));var extract=require(_0x4622('0x11'));var rimraf=require(_0x4622('0x1'));var archiver=require('archiver');var Redis=require(_0x4622('0x12'));var authService=require(_0x4622('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4622('0x14'));var hardwareService=require(_0x4622('0x15'));var logger=require(_0x4622('0x16'))(_0x4622('0x17'));var utils=require(_0x4622('0x18'));var config=require(_0x4622('0x19'));var licenseUtil=require(_0x4622('0x1a'));var db=require(_0x4622('0x1b'))['db'];config[_0x4622('0x1c')]=_[_0x4622('0x1d')](config[_0x4622('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x4622('0x1e'))(new Redis(config[_0x4622('0x1c')]));require(_0x4622('0x1f'))[_0x4622('0x20')](socket);function respondWithStatusCode(_0x1be889,_0x3e0492){_0x3e0492=_0x3e0492||0xcc;return function(_0x2c0f93){if(_0x2c0f93){return _0x1be889[_0x4622('0x21')](_0x3e0492);}return _0x1be889[_0x4622('0x22')](_0x3e0492)[_0x4622('0x23')]();};}function respondWithResult(_0x37f466,_0x245227){_0x245227=_0x245227||0xc8;return function(_0x4cdd2d){if(_0x4cdd2d){return _0x37f466['status'](_0x245227)[_0x4622('0x24')](_0x4cdd2d);}};}function respondWithFilteredResult(_0x149ce0,_0x279ad7){return function(_0x53c0f2){if(_0x53c0f2){var _0x48b784=typeof _0x279ad7[_0x4622('0x25')]===_0x4622('0x26')&&typeof _0x279ad7[_0x4622('0x27')]===_0x4622('0x26');var _0x5a0c83=_0x53c0f2[_0x4622('0x28')];var _0x26490c=_0x48b784?0x0:_0x279ad7[_0x4622('0x25')];var _0x5d93c4=_0x48b784?_0x53c0f2['count']:_0x279ad7['offset']+_0x279ad7[_0x4622('0x27')];var _0x27312b;if(_0x5d93c4>=_0x5a0c83){_0x5d93c4=_0x5a0c83;_0x27312b=0xc8;}else{_0x27312b=0xce;}_0x149ce0[_0x4622('0x22')](_0x27312b);return _0x149ce0['set'](_0x4622('0x29'),_0x26490c+'-'+_0x5d93c4+'/'+_0x5a0c83)['json'](_0x53c0f2);}return null;};}function patchUpdates(_0x1a4b99){return function(_0x381553){try{jsonpatch[_0x4622('0x2a')](_0x381553,_0x1a4b99,!![]);}catch(_0x517d21){return BPromise['reject'](_0x517d21);}return _0x381553[_0x4622('0x2b')]();};}function saveUpdates(_0x417856,_0x13a618){return function(_0x514d3a){if(_0x514d3a){return _0x514d3a[_0x4622('0x2c')](_0x417856)[_0x4622('0x2d')](function(_0x193cdf){return _0x193cdf;});}return null;};}function removeEntity(_0x3623d7,_0x3e51ff){return function(_0x1ea89d){if(_0x1ea89d){return _0x1ea89d[_0x4622('0x2e')]()[_0x4622('0x2d')](function(){var _0x4fef3d=_0x1ea89d[_0x4622('0x2f')]({'plain':!![]});var _0x552cb8=_0x4622('0x30');return db[_0x4622('0x31')][_0x4622('0x2e')]({'where':{'type':_0x552cb8,'resourceId':_0x4fef3d['id']}})['then'](function(){return _0x1ea89d;});})[_0x4622('0x2d')](function(){_0x3623d7['status'](0xcc)[_0x4622('0x23')]();});}};}function handleEntityNotFound(_0xb78d49,_0x13929b){return function(_0x5d22c8){if(!_0x5d22c8){_0xb78d49[_0x4622('0x21')](0x194);}return _0x5d22c8;};}function handleError(_0x59ce92,_0x469867){_0x469867=_0x469867||0x1f4;return function(_0x55f5c7){logger[_0x4622('0x32')](_0x55f5c7[_0x4622('0x33')]);if(_0x55f5c7['name']){delete _0x55f5c7[_0x4622('0x34')];}_0x59ce92[_0x4622('0x22')](_0x469867)[_0x4622('0x35')](_0x55f5c7);};}exports[_0x4622('0x36')]=function(_0x467a7c,_0x482eea){var _0x2811ce={},_0x10f87e={},_0x56382c={'count':0x0,'rows':[]};var _0x387a39=_[_0x4622('0x37')](db['Plugin']['rawAttributes'],function(_0x274bfb){return{'name':_0x274bfb[_0x4622('0x38')],'type':_0x274bfb[_0x4622('0x39')][_0x4622('0x3a')]};});_0x10f87e[_0x4622('0x3b')]=_[_0x4622('0x37')](_0x387a39,_0x4622('0x34'));_0x10f87e[_0x4622('0x3c')]=_[_0x4622('0x3d')](_0x467a7c[_0x4622('0x3c')]);_0x10f87e['filters']=_['intersection'](_0x10f87e[_0x4622('0x3b')],_0x10f87e[_0x4622('0x3c')]);_0x2811ce[_0x4622('0x3e')]=_[_0x4622('0x3f')](_0x10f87e[_0x4622('0x3b')],qs[_0x4622('0x40')](_0x467a7c[_0x4622('0x3c')]['fields']));_0x2811ce['attributes']=_0x2811ce[_0x4622('0x3e')]['length']?_0x2811ce[_0x4622('0x3e')]:_0x10f87e[_0x4622('0x3b')];if(!_0x467a7c[_0x4622('0x3c')]['hasOwnProperty'](_0x4622('0x41'))){_0x2811ce[_0x4622('0x27')]=qs[_0x4622('0x27')](_0x467a7c[_0x4622('0x3c')][_0x4622('0x27')]);_0x2811ce[_0x4622('0x25')]=qs[_0x4622('0x25')](_0x467a7c[_0x4622('0x3c')][_0x4622('0x25')]);}_0x2811ce['order']=qs[_0x4622('0x42')](_0x467a7c[_0x4622('0x3c')]['sort']);_0x2811ce['where']=qs[_0x4622('0x43')](_[_0x4622('0x44')](_0x467a7c[_0x4622('0x3c')],_0x10f87e[_0x4622('0x43')]),_0x387a39);if(_0x467a7c[_0x4622('0x3c')]['filter']){_0x2811ce['where']=_[_0x4622('0x45')](_0x2811ce[_0x4622('0x46')],{'$or':_[_0x4622('0x37')](_0x387a39,function(_0x16bf11){if(_0x16bf11['type']!==_0x4622('0x47')){var _0x58fd83={};_0x58fd83[_0x16bf11['name']]={'$like':'%'+_0x467a7c[_0x4622('0x3c')]['filter']+'%'};return _0x58fd83;}})});}_0x2811ce=_[_0x4622('0x45')]({},_0x2811ce,_0x467a7c[_0x4622('0x48')]);var _0x5002da={'where':_0x2811ce[_0x4622('0x46')]};return db[_0x4622('0x49')][_0x4622('0x28')](_0x5002da)[_0x4622('0x2d')](function(_0x4b9626){_0x56382c[_0x4622('0x28')]=_0x4b9626;if(_0x467a7c[_0x4622('0x3c')][_0x4622('0x4a')]){_0x2811ce[_0x4622('0x4b')]=[{'all':!![]}];}return db[_0x4622('0x49')][_0x4622('0x4c')](_0x2811ce);})[_0x4622('0x2d')](function(_0x4d238c){_0x56382c[_0x4622('0x4d')]=_0x4d238c;return _0x56382c;})[_0x4622('0x2d')](respondWithFilteredResult(_0x482eea,_0x2811ce))[_0x4622('0x4e')](handleError(_0x482eea,null));};exports[_0x4622('0x4f')]=function(_0x5858f8,_0x5139d7){var _0x68b0a3={'raw':!![],'where':{'id':_0x5858f8['params']['id']}},_0x40cae4={};_0x40cae4['model']=_[_0x4622('0x3d')](db[_0x4622('0x49')]['rawAttributes']);_0x40cae4[_0x4622('0x3c')]=_[_0x4622('0x3d')](_0x5858f8[_0x4622('0x3c')]);_0x40cae4['filters']=_[_0x4622('0x3f')](_0x40cae4['model'],_0x40cae4[_0x4622('0x3c')]);_0x68b0a3[_0x4622('0x3e')]=_[_0x4622('0x3f')](_0x40cae4[_0x4622('0x3b')],qs[_0x4622('0x40')](_0x5858f8[_0x4622('0x3c')][_0x4622('0x40')]));_0x68b0a3[_0x4622('0x3e')]=_0x68b0a3[_0x4622('0x3e')][_0x4622('0x50')]?_0x68b0a3[_0x4622('0x3e')]:_0x40cae4[_0x4622('0x3b')];if(_0x5858f8['query'][_0x4622('0x4a')]){_0x68b0a3[_0x4622('0x4b')]=[{'all':!![]}];}_0x68b0a3=_[_0x4622('0x45')]({},_0x68b0a3,_0x5858f8[_0x4622('0x48')]);return db[_0x4622('0x49')]['find'](_0x68b0a3)[_0x4622('0x2d')](handleEntityNotFound(_0x5139d7,null))['then'](respondWithResult(_0x5139d7,null))[_0x4622('0x4e')](handleError(_0x5139d7,null));};exports[_0x4622('0x51')]=function(_0x10cbd9,_0x55fed6,_0x1ae11d){return db['Plugin'][_0x4622('0x52')]({'where':{'id':_0x10cbd9[_0x4622('0x53')]['id']},'attributes':['name',_0x4622('0x54')],'raw':!![]})[_0x4622('0x2d')](handleEntityNotFound(_0x55fed6,null))[_0x4622('0x2d')](function(_0x129088){if(_0x129088){var _0x23f08b=path['join'](config[_0x4622('0x55')],_0x4622('0x56'),util[_0x4622('0x57')](_0x4622('0x58'),path[_0x4622('0x59')](_0x129088[_0x4622('0x54')])));var _0x39735e=fs[_0x4622('0x5a')](_0x23f08b);var _0x5dcd81=archiver(_0x4622('0x5b'),{'zlib':{'level':0x9}});_0x5dcd81['on']('warning',function(_0x1bffed){if(_0x1bffed[_0x4622('0x5c')]===_0x4622('0x5d')){logger[_0x4622('0x32')](_0x1bffed);}else{throw new db[(_0x4622('0x5e'))][(_0x4622('0x5f'))](_0x4622('0x60'));}});_0x5dcd81['on']('error',function(_0xf234ff){throw new db[(_0x4622('0x5e'))][(_0x4622('0x5f'))](_0x4622('0x60'));});_0x5dcd81[_0x4622('0x61')](_0x39735e);_0x5dcd81[_0x4622('0x62')](_0x4622('0x63'),{'cwd':path[_0x4622('0x64')](config[_0x4622('0x55')],_0x4622('0x56'),path[_0x4622('0x65')](_0x129088[_0x4622('0x54')])),'ignore':[path[_0x4622('0x64')](path[_0x4622('0x59')](_0x129088[_0x4622('0x54')]),_0x4622('0x66')),path[_0x4622('0x64')](path[_0x4622('0x59')](_0x129088['path']),_0x4622('0x67'))],'nodir':!![]})[_0x4622('0x68')]();_0x39735e['on'](_0x4622('0x69'),function(){if(!fs[_0x4622('0x6a')](_0x23f08b)){throw new db[(_0x4622('0x5e'))][(_0x4622('0x5f'))](_0x4622('0x6b'));}return _0x55fed6[_0x4622('0x51')](_0x23f08b,util[_0x4622('0x57')](_0x4622('0x58'),path['basename'](_0x129088['path'])),function(_0x121a64){if(_0x121a64){throw new db[(_0x4622('0x5e'))][(_0x4622('0x5f'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x4622('0x6c')](_0x23f08b);logger[_0x4622('0x6d')]('Download\x20completed');logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0x4622('0x4e')](handleError(_0x55fed6,null));};exports['upload']=function(_0x500e8f,_0x27830d,_0x24568a){var _0xaad19=path[_0x4622('0x59')](_0x500e8f[_0x4622('0x6e')][_0x4622('0x6f')],path[_0x4622('0x70')](_0x500e8f[_0x4622('0x6e')][_0x4622('0x6f')]));var _0x1d9db7=path[_0x4622('0x64')](config['root'],_0x4622('0x56'),_0x500e8f['file'][_0x4622('0x6f')]);var _0x1282ae=path[_0x4622('0x64')](config[_0x4622('0x55')],_0x4622('0x56'),_0xaad19);logger[_0x4622('0x6d')](_0x4622('0x71'),_0x1d9db7);logger[_0x4622('0x6d')](_0x4622('0x72'),_0x1282ae);try{fs[_0x4622('0x73')](_0x1d9db7,parseInt(_0x4622('0x74'),0x8));extract(_0x1d9db7,{'dir':_0x1282ae},function(_0x53b8d4){if(_0x53b8d4){logger[_0x4622('0x32')](_0x53b8d4);handleError(_0x53b8d4,!![]);};var _0x55b2dc=fs['readdirSync'](_0x1282ae);if(_0x55b2dc['length']>0x1){removeReferences(_0x1d9db7,_0x1282ae);logger[_0x4622('0x32')](_0x4622('0x75'));return _0x24568a(new Error(_0x4622('0x75')));}var _0x16bcbd=fs[_0x4622('0x76')](path[_0x4622('0x64')](_0x1282ae,_0x55b2dc[0x0]));if(_0x16bcbd['isFile']()){removeReferences(_0x1d9db7,_0x1282ae);logger[_0x4622('0x32')](_0x4622('0x75'));return _0x24568a(new Error(_0x4622('0x75')));}if(_0x16bcbd['isDirectory']()){var _0x171c42=fs['readdirSync'](path['join'](_0x1282ae,_0x55b2dc[0x0]));if(_0x171c42[_0x4622('0x50')]===0x0){removeReferences(_0x1d9db7,_0x1282ae);logger[_0x4622('0x32')]('Invalid\x20plugin\x20structure');return _0x24568a(new Error(_0x4622('0x75')));}var _0x5db3ea=_0x171c42['some'](function(_0x21e989){return _0x21e989===_0x4622('0x77');});if(!_0x5db3ea){return _0x24568a(new Error(_0x4622('0x78')));}var _0x1761d7=fs[_0x4622('0x79')](path[_0x4622('0x64')](_0x1282ae,_0x55b2dc[0x0],_0x4622('0x77')));var _0x407924=JSON[_0x4622('0x7a')](_0x1761d7);if(_0x4622('0x26')==typeof _0x407924[_0x4622('0x34')]){return _0x24568a(new Error(_0x4622('0x7b')));}if(_0x4622('0x26')==typeof _0x407924['type']){return _0x24568a(new Error(_0x4622('0x7c')));}if('undefined'==typeof _0x407924[_0x4622('0x7d')]){return _0x24568a(new Error(_0x4622('0x7e')));}if('undefined'==typeof _0x407924[_0x4622('0x7f')]){return _0x24568a(new Error(_0x4622('0x80')));}if(_0x407924[_0x4622('0x39')]===_0x4622('0x81')){if(_0x4622('0x26')==typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')]){return _0x24568a(new Error(_0x4622('0x83')));}if(_0x4622('0x26')==typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')][_0x4622('0x84')]&&_0x4622('0x26')==typeof _0x407924['parameters'][_0x4622('0x82')][_0x4622('0x85')]){return _0x24568a(new Error(_0x4622('0x86')));}}else if(_0x407924[_0x4622('0x39')]===_0x4622('0x87')){if('undefined'==typeof _0x407924[_0x4622('0x7f')][_0x4622('0x88')]){return _0x24568a(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x4622('0x26')==typeof _0x407924[_0x4622('0x7f')][_0x4622('0x89')]){return _0x24568a(new Error(_0x4622('0x8a')));}}else{return _0x24568a(new Error(_0x4622('0x8b')));}var _0x42c19c=_0x407924[_0x4622('0x34')];var _0x100f9f=_0x407924[_0x4622('0x8c')];var _0x41c878=_0x407924['type'];var _0x51a952=_0x407924[_0x4622('0x8d')]?_0x407924['sidebar']:_0x4622('0x8e');var _0x592789=_0x407924[_0x4622('0x8f')]?_0x407924[_0x4622('0x8f')]:'icon-apps';var _0x1f8ef7='';var _0x59d6cf='';var _0x46f4ba='';var _0x1f3615='';var _0x3b52c9=_0x407924[_0x4622('0x7d')];if(_0x41c878===_0x4622('0x81')){if('undefined'!=typeof _0x407924[_0x4622('0x7f')]['views'][_0x4622('0x84')]){var _0x1618fe=_0x407924['parameters'][_0x4622('0x82')][_0x4622('0x84')];if(!/^(f|ht)tps?:\/\//i['test'](_0x1618fe)){_0x1f8ef7=path[_0x4622('0x64')](_0x4622('0x90'),_0xaad19,_0x55b2dc[0x0],_0x1618fe);}else{_0x1f8ef7=_0x1618fe;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x4622('0x26')!=typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')][_0x4622('0x85')]){var _0x4315f1=_0x407924[_0x4622('0x7f')][_0x4622('0x82')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x4315f1)){_0x59d6cf=path[_0x4622('0x64')](_0x4622('0x90'),_0xaad19,_0x55b2dc[0x0],_0x4315f1);}else{_0x59d6cf=_0x4315f1;}}else{logger[_0x4622('0x6d')](_0x4622('0x91'));}}else if(_0x41c878===_0x4622('0x87')){_0x46f4ba=_0x407924[_0x4622('0x7f')][_0x4622('0x88')];_0x1f3615=_0x407924[_0x4622('0x7f')][_0x4622('0x89')];if(_0x4622('0x26')!=typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')]){if(_0x4622('0x26')!=typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')]['admin']){var _0x1618fe=_0x407924[_0x4622('0x7f')][_0x4622('0x82')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x4622('0x92')](_0x1618fe)){_0x1f8ef7=path[_0x4622('0x64')](_0x4622('0x90'),_0xaad19,_0x55b2dc[0x0],_0x1618fe);}else{_0x1f8ef7=_0x1618fe;}}if(_0x4622('0x26')!=typeof _0x407924[_0x4622('0x7f')][_0x4622('0x82')]['agent']){var _0x4315f1=_0x407924['parameters'][_0x4622('0x82')][_0x4622('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x4622('0x92')](_0x4315f1)){_0x59d6cf=path['join'](_0x4622('0x90'),_0xaad19,_0x55b2dc[0x0],_0x4315f1);}else{_0x59d6cf=_0x4315f1;}}}}var _0x503cdc={'name':_0x42c19c,'description':_0x100f9f,'path':path['join'](_0xaad19,_0x55b2dc[0x0]),'type':_0x41c878,'sidebar':_0x51a952,'icon':_0x592789,'adminUrl':_0x1f8ef7,'agentUrl':_0x59d6cf,'scriptName':_0x46f4ba,'scriptPath':_0x1f3615,'version':_0x3b52c9};removeReferences(_0x1d9db7,null);return db[_0x4622('0x49')]['create'](_0x503cdc)['then'](function(_0x2db3f0){var _0x1fd953={'role':_0x500e8f[_0x4622('0x93')]['role'],'userProfileId':_0x500e8f['body'][_0x4622('0x94')]};if(!_0x1fd953)throw new Error(_0x4622('0x95'));if(_0x1fd953[_0x4622('0x96')]===_0x4622('0x97')){var _0x5648ce=_0x2db3f0['get']({'plain':!![]});return db[_0x4622('0x98')][_0x4622('0x52')]({'where':{'name':_0x4622('0x30'),'userProfileId':_0x1fd953[_0x4622('0x94')]},'raw':!![]})['then'](function(_0x42fa13){if(_0x42fa13&&_0x42fa13[_0x4622('0x99')]===0x0){return db[_0x4622('0x31')][_0x4622('0x9a')]({'name':_0x5648ce[_0x4622('0x34')],'resourceId':_0x5648ce['id'],'type':_0x42fa13[_0x4622('0x34')],'sectionId':_0x42fa13['id']},{})[_0x4622('0x2d')](function(){return _0x2db3f0;});}else{return _0x2db3f0;}})[_0x4622('0x4e')](function(_0x3d71d7){logger[_0x4622('0x32')](_0x4622('0x9b'),_0x3d71d7);throw _0x3d71d7;});}return _0x2db3f0;})['then'](respondWithResult(_0x27830d,null))[_0x4622('0x4e')](handleError(_0x27830d,null));}});}catch(_0x215950){_0x27830d[_0x4622('0x22')](0x1f4)[_0x4622('0x35')](_0x215950);}};function removeReferences(_0x58c21c,_0x52cfb2){try{if(_0x58c21c){fs[_0x4622('0x6c')](_0x58c21c);logger[_0x4622('0x6d')](_0x4622('0x9c'));}if(_0x52cfb2){rimraf(_0x52cfb2,function(){});logger[_0x4622('0x6d')](_0x4622('0x9d'));}}catch(_0x801b59){logger[_0x4622('0x32')](_0x801b59);}}exports[_0x4622('0x2c')]=function(_0x65a2ee,_0xee0ad5,_0x18258d){return db['Plugin']['find']({'where':{'id':_0x65a2ee['params']['id']}})['then'](handleEntityNotFound(_0xee0ad5,null))[_0x4622('0x2d')](saveUpdates(_0x65a2ee['body'],null))[_0x4622('0x2d')](respondWithResult(_0xee0ad5,null))[_0x4622('0x4e')](handleError(_0xee0ad5,null));};exports[_0x4622('0x9e')]=function(_0x5b4916,_0x513a6a,_0x1b9a60){return db[_0x4622('0x49')][_0x4622('0x52')]({'where':{'id':_0x5b4916[_0x4622('0x53')]['id']}})[_0x4622('0x2d')](function(_0x1c6b83){if(_0x1c6b83){return _0x1c6b83[_0x4622('0x2e')]();}})[_0x4622('0x2d')](function(_0x42b2ed){rimraf(path[_0x4622('0x64')](config['root'],_0x4622('0x56'),path['dirname'](_0x42b2ed[_0x4622('0x54')])),function(){});return _0x42b2ed;})[_0x4622('0x2d')](handleEntityNotFound(_0x513a6a,null))[_0x4622('0x2d')](respondWithStatusCode(_0x513a6a,null))['catch'](handleError(_0x513a6a,null));};exports[_0x4622('0x9f')]=function(_0x4a80ef,_0x1f1efc,_0x1eecee){return BPromise[_0x4622('0xa0')]()[_0x4622('0x2d')](function(){if(!_0x4a80ef[_0x4622('0x3c')][_0x4622('0x54')]){throw new Error(_0x4622('0xa1'));}if(!_0x4a80ef[_0x4622('0x3c')][_0x4622('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x295073=_0x4a80ef[_0x4622('0x3c')][_0x4622('0xa3')]?_0x4a80ef['query'][_0x4622('0xa3')]+':'+_0x4a80ef[_0x4622('0x3c')][_0x4622('0xa2')]:'http://localhost:'+_0x4a80ef['query'][_0x4622('0xa2')];var _0xb68b5a=_0x4a80ef['query']['json']?_0x4a80ef[_0x4622('0x3c')]['json']:!![];var _0x143a81=_0x4a80ef[_0x4622('0x3c')][_0x4622('0xa4')]?_0x4a80ef[_0x4622('0x3c')][_0x4622('0xa4')]:null;var _0x16df6c={'method':_0x4a80ef['method'],'uri':util[_0x4622('0x57')](_0x4622('0xa5'),_0x295073,_0x4a80ef[_0x4622('0x3c')][_0x4622('0x54')]),'json':_0xb68b5a,'resolveWithFullResponse':!![],'encoding':_0x143a81,'qs':_0x4a80ef[_0x4622('0x3c')]};if(_0x4a80ef[_0x4622('0xa6')]){_0x16df6c[_0x4622('0xa6')]=_0x4a80ef[_0x4622('0xa6')];if(_0x16df6c[_0x4622('0xa6')]['content-length']){delete _0x16df6c[_0x4622('0xa6')][_0x4622('0xa7')];}}if(_0x16df6c[_0x4622('0xa6')][_0x4622('0xa8')]){delete _0x16df6c[_0x4622('0xa6')]['content-type'];}return rp(_0x16df6c);})[_0x4622('0x2d')](function(_0x2d3fab){if(_0x2d3fab){_0x1f1efc[_0x4622('0xa9')](_0x2d3fab[_0x4622('0xa6')]);logger[_0x4622('0x6d')](_0x2d3fab[_0x4622('0x93')]);if(_[_0x4622('0xaa')](_0x4a80ef[_0x4622('0x3c')][_0x4622('0x54')],_0x4622('0x51'))&&_0x2d3fab[_0x4622('0xab')]==0x1f4){return _0x1f1efc[_0x4622('0x21')](_0x2d3fab['statusCode']);}else{return _0x1f1efc[_0x4622('0x22')](_0x2d3fab[_0x4622('0xab')])['send'](_0x2d3fab[_0x4622('0x93')]);}}else{return _0x1f1efc[_0x4622('0x21')](0xc8);}})['catch'](handleError(_0x1f1efc,null));};exports[_0x4622('0xac')]=function(_0x10592e,_0x16da05,_0x9293a0){return BPromise['resolve']()[_0x4622('0x2d')](function(){if(!_0x10592e[_0x4622('0x3c')][_0x4622('0x54')]){throw new Error(_0x4622('0xa1'));}if(!_0x10592e['query'][_0x4622('0xa2')]){throw new Error(_0x4622('0xad'));}var _0x8da369=_0x10592e[_0x4622('0x3c')][_0x4622('0xa3')]?_0x10592e[_0x4622('0x3c')][_0x4622('0xa3')]+':'+_0x10592e[_0x4622('0x3c')][_0x4622('0xa2')]:_0x4622('0xae')+_0x10592e['query'][_0x4622('0xa2')];var _0x442263=_0x10592e['query'][_0x4622('0x24')]?_0x10592e['query'][_0x4622('0x24')]:!![];var _0x1050da=_0x10592e[_0x4622('0x3c')][_0x4622('0xa4')]?_0x10592e[_0x4622('0x3c')][_0x4622('0xa4')]:null;var _0x2992c6={'method':_0x10592e[_0x4622('0xaf')],'uri':util[_0x4622('0x57')](_0x4622('0xa5'),_0x8da369,_0x10592e[_0x4622('0x3c')][_0x4622('0x54')]),'json':_0x442263,'resolveWithFullResponse':!![],'encoding':_0x1050da,'body':_0x10592e[_0x4622('0x93')]};if(_0x10592e[_0x4622('0xa6')]){_0x2992c6[_0x4622('0xa6')]=_0x10592e['headers'];if(_0x2992c6[_0x4622('0xa6')][_0x4622('0xa7')]){delete _0x2992c6[_0x4622('0xa6')][_0x4622('0xa7')];}}if(_0x2992c6[_0x4622('0xa6')][_0x4622('0xa8')]){delete _0x2992c6[_0x4622('0xa6')]['content-type'];}return rp(_0x2992c6);})[_0x4622('0x2d')](function(_0x4fc016){if(_0x4fc016){_0x16da05[_0x4622('0xa9')](_0x4fc016['headers']);logger['info'](_0x4fc016[_0x4622('0x93')]);return _0x16da05[_0x4622('0x22')](_0x4fc016['statusCode'])[_0x4622('0x35')](_0x4fc016[_0x4622('0x93')]);}else{return _0x16da05[_0x4622('0x21')](0xc8);}})[_0x4622('0x4e')](handleError(_0x16da05,null));};
\ No newline at end of file
+var _0x7cd7=['../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','get','error','stack','name','map','Plugin','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','download','join','root','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','server/files/plugins','dirname','basename','attachments/**/*','Sequelize','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','upload','extname','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','script','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','icon-apps','plugins','agent','test','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','body','userProfileId','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','encoding','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','extract-zip','ioredis','../../components/auth/service','../../config/logger','api'];(function(_0x4ef15e,_0x4fab49){var _0x52e558=function(_0x27f061){while(--_0x27f061){_0x4ef15e['push'](_0x4ef15e['shift']());}};_0x52e558(++_0x4fab49);}(_0x7cd7,0x130));var _0x77cd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cd7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x77cd('0x0'));var rimraf=require(_0x77cd('0x1'));var zipdir=require(_0x77cd('0x2'));var jsonpatch=require(_0x77cd('0x3'));var rp=require(_0x77cd('0x4'));var moment=require(_0x77cd('0x5'));var BPromise=require(_0x77cd('0x6'));var Mustache=require(_0x77cd('0x7'));var util=require('util');var path=require(_0x77cd('0x8'));var sox=require(_0x77cd('0x9'));var csv=require(_0x77cd('0xa'));var ejs=require(_0x77cd('0xb'));var fs=require('fs');var fs_extra=require(_0x77cd('0xc'));var _=require(_0x77cd('0xd'));var squel=require(_0x77cd('0xe'));var crypto=require('crypto');var jsforce=require(_0x77cd('0xf'));var deskjs=require(_0x77cd('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var extract=require(_0x77cd('0x11'));var rimraf=require(_0x77cd('0x1'));var archiver=require('archiver');var Redis=require(_0x77cd('0x12'));var authService=require(_0x77cd('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x77cd('0x14'))(_0x77cd('0x15'));var utils=require(_0x77cd('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x77cd('0x17'));var db=require('../../mysqldb')['db'];config[_0x77cd('0x18')]=_[_0x77cd('0x19')](config[_0x77cd('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x77cd('0x1a'))(new Redis(config['redis']));require(_0x77cd('0x1b'))[_0x77cd('0x1c')](socket);function respondWithStatusCode(_0x2417f6,_0x4918e9){_0x4918e9=_0x4918e9||0xcc;return function(_0x59d819){if(_0x59d819){return _0x2417f6[_0x77cd('0x1d')](_0x4918e9);}return _0x2417f6[_0x77cd('0x1e')](_0x4918e9)[_0x77cd('0x1f')]();};}function respondWithResult(_0x49de86,_0x406df8){_0x406df8=_0x406df8||0xc8;return function(_0x3eaf33){if(_0x3eaf33){return _0x49de86['status'](_0x406df8)[_0x77cd('0x20')](_0x3eaf33);}};}function respondWithFilteredResult(_0x478dd0,_0x41607b){return function(_0x27bde9){if(_0x27bde9){var _0x5cbe4c=typeof _0x41607b[_0x77cd('0x21')]==='undefined'&&typeof _0x41607b[_0x77cd('0x22')]===_0x77cd('0x23');var _0x311569=_0x27bde9['count'];var _0x2cef0f=_0x5cbe4c?0x0:_0x41607b[_0x77cd('0x21')];var _0x385618=_0x5cbe4c?_0x27bde9[_0x77cd('0x24')]:_0x41607b[_0x77cd('0x21')]+_0x41607b['limit'];var _0x2ec4b4;if(_0x385618>=_0x311569){_0x385618=_0x311569;_0x2ec4b4=0xc8;}else{_0x2ec4b4=0xce;}_0x478dd0[_0x77cd('0x1e')](_0x2ec4b4);return _0x478dd0[_0x77cd('0x25')](_0x77cd('0x26'),_0x2cef0f+'-'+_0x385618+'/'+_0x311569)[_0x77cd('0x20')](_0x27bde9);}return null;};}function patchUpdates(_0x386e19){return function(_0x40a920){try{jsonpatch[_0x77cd('0x27')](_0x40a920,_0x386e19,!![]);}catch(_0x3c5dcb){return BPromise['reject'](_0x3c5dcb);}return _0x40a920[_0x77cd('0x28')]();};}function saveUpdates(_0x199d9a,_0x44c303){return function(_0x21040c){if(_0x21040c){return _0x21040c['update'](_0x199d9a)[_0x77cd('0x29')](function(_0xf4d0bf){return _0xf4d0bf;});}return null;};}function removeEntity(_0x1c28a9,_0xf45ade){return function(_0x3e011c){if(_0x3e011c){return _0x3e011c[_0x77cd('0x2a')]()[_0x77cd('0x29')](function(){var _0x11bf7f=_0x3e011c[_0x77cd('0x2b')]({'plain':!![]});var _0x1866fd='Plugins';return db['UserProfileResource'][_0x77cd('0x2a')]({'where':{'type':_0x1866fd,'resourceId':_0x11bf7f['id']}})['then'](function(){return _0x3e011c;});})[_0x77cd('0x29')](function(){_0x1c28a9[_0x77cd('0x1e')](0xcc)[_0x77cd('0x1f')]();});}};}function handleEntityNotFound(_0x3952dc,_0x197feb){return function(_0x28bd40){if(!_0x28bd40){_0x3952dc['sendStatus'](0x194);}return _0x28bd40;};}function handleError(_0x5d1173,_0x297b1c){_0x297b1c=_0x297b1c||0x1f4;return function(_0x1c56c7){logger[_0x77cd('0x2c')](_0x1c56c7[_0x77cd('0x2d')]);if(_0x1c56c7[_0x77cd('0x2e')]){delete _0x1c56c7[_0x77cd('0x2e')];}_0x5d1173[_0x77cd('0x1e')](_0x297b1c)['send'](_0x1c56c7);};}exports['index']=function(_0x4bdd91,_0x1bc672){var _0x39fa33={},_0x2b7583={},_0x17fe49={'count':0x0,'rows':[]};var _0x1c31f3=_[_0x77cd('0x2f')](db[_0x77cd('0x30')]['rawAttributes'],function(_0x43e210){return{'name':_0x43e210[_0x77cd('0x31')],'type':_0x43e210[_0x77cd('0x32')]['key']};});_0x2b7583[_0x77cd('0x33')]=_[_0x77cd('0x2f')](_0x1c31f3,_0x77cd('0x2e'));_0x2b7583[_0x77cd('0x34')]=_[_0x77cd('0x35')](_0x4bdd91[_0x77cd('0x34')]);_0x2b7583['filters']=_[_0x77cd('0x36')](_0x2b7583[_0x77cd('0x33')],_0x2b7583[_0x77cd('0x34')]);_0x39fa33[_0x77cd('0x37')]=_[_0x77cd('0x36')](_0x2b7583['model'],qs[_0x77cd('0x38')](_0x4bdd91[_0x77cd('0x34')][_0x77cd('0x38')]));_0x39fa33[_0x77cd('0x37')]=_0x39fa33[_0x77cd('0x37')][_0x77cd('0x39')]?_0x39fa33[_0x77cd('0x37')]:_0x2b7583[_0x77cd('0x33')];if(!_0x4bdd91[_0x77cd('0x34')][_0x77cd('0x3a')](_0x77cd('0x3b'))){_0x39fa33[_0x77cd('0x22')]=qs['limit'](_0x4bdd91[_0x77cd('0x34')]['limit']);_0x39fa33['offset']=qs[_0x77cd('0x21')](_0x4bdd91['query']['offset']);}_0x39fa33[_0x77cd('0x3c')]=qs[_0x77cd('0x3d')](_0x4bdd91[_0x77cd('0x34')]['sort']);_0x39fa33[_0x77cd('0x3e')]=qs[_0x77cd('0x3f')](_[_0x77cd('0x40')](_0x4bdd91[_0x77cd('0x34')],_0x2b7583[_0x77cd('0x3f')]),_0x1c31f3);if(_0x4bdd91[_0x77cd('0x34')][_0x77cd('0x41')]){_0x39fa33['where']=_[_0x77cd('0x42')](_0x39fa33[_0x77cd('0x3e')],{'$or':_[_0x77cd('0x2f')](_0x1c31f3,function(_0x15f931){if(_0x15f931['type']!==_0x77cd('0x43')){var _0x2aec96={};_0x2aec96[_0x15f931[_0x77cd('0x2e')]]={'$like':'%'+_0x4bdd91[_0x77cd('0x34')]['filter']+'%'};return _0x2aec96;}})});}_0x39fa33=_[_0x77cd('0x42')]({},_0x39fa33,_0x4bdd91[_0x77cd('0x44')]);var _0x5a0bc8={'where':_0x39fa33[_0x77cd('0x3e')]};return db[_0x77cd('0x30')][_0x77cd('0x24')](_0x5a0bc8)['then'](function(_0x4c68ba){_0x17fe49['count']=_0x4c68ba;if(_0x4bdd91[_0x77cd('0x34')][_0x77cd('0x45')]){_0x39fa33[_0x77cd('0x46')]=[{'all':!![]}];}return db['Plugin'][_0x77cd('0x47')](_0x39fa33);})[_0x77cd('0x29')](function(_0x11d076){_0x17fe49[_0x77cd('0x48')]=_0x11d076;return _0x17fe49;})[_0x77cd('0x29')](respondWithFilteredResult(_0x1bc672,_0x39fa33))[_0x77cd('0x49')](handleError(_0x1bc672,null));};exports['show']=function(_0x2c23d3,_0x176780){var _0x275e0a={'raw':!![],'where':{'id':_0x2c23d3[_0x77cd('0x4a')]['id']}},_0x5d16d7={};_0x5d16d7[_0x77cd('0x33')]=_[_0x77cd('0x35')](db['Plugin'][_0x77cd('0x4b')]);_0x5d16d7[_0x77cd('0x34')]=_['keys'](_0x2c23d3[_0x77cd('0x34')]);_0x5d16d7[_0x77cd('0x3f')]=_[_0x77cd('0x36')](_0x5d16d7[_0x77cd('0x33')],_0x5d16d7[_0x77cd('0x34')]);_0x275e0a[_0x77cd('0x37')]=_['intersection'](_0x5d16d7[_0x77cd('0x33')],qs['fields'](_0x2c23d3[_0x77cd('0x34')][_0x77cd('0x38')]));_0x275e0a['attributes']=_0x275e0a[_0x77cd('0x37')][_0x77cd('0x39')]?_0x275e0a[_0x77cd('0x37')]:_0x5d16d7['model'];if(_0x2c23d3['query'][_0x77cd('0x45')]){_0x275e0a[_0x77cd('0x46')]=[{'all':!![]}];}_0x275e0a=_['merge']({},_0x275e0a,_0x2c23d3[_0x77cd('0x44')]);return db[_0x77cd('0x30')][_0x77cd('0x4c')](_0x275e0a)[_0x77cd('0x29')](handleEntityNotFound(_0x176780,null))[_0x77cd('0x29')](respondWithResult(_0x176780,null))[_0x77cd('0x49')](handleError(_0x176780,null));};exports[_0x77cd('0x4d')]=function(_0x3a35f4,_0x4fa222,_0x42db4d){return db[_0x77cd('0x30')][_0x77cd('0x4c')]({'where':{'id':_0x3a35f4[_0x77cd('0x4a')]['id']},'attributes':[_0x77cd('0x2e'),_0x77cd('0x8')],'raw':!![]})[_0x77cd('0x29')](handleEntityNotFound(_0x4fa222,null))[_0x77cd('0x29')](function(_0x3a8238){if(_0x3a8238){var _0x5a8eea=path[_0x77cd('0x4e')](config[_0x77cd('0x4f')],'server/files/plugins',util[_0x77cd('0x50')](_0x77cd('0x51'),path['basename'](_0x3a8238[_0x77cd('0x8')])));var _0xeaa165=fs[_0x77cd('0x52')](_0x5a8eea);var _0x2627cc=archiver(_0x77cd('0x53'),{'zlib':{'level':0x9}});_0x2627cc['on'](_0x77cd('0x54'),function(_0x9f402e){if(_0x9f402e[_0x77cd('0x55')]===_0x77cd('0x56')){logger[_0x77cd('0x2c')](_0x9f402e);}else{throw new db['Sequelize'][(_0x77cd('0x57'))](_0x77cd('0x58'));}});_0x2627cc['on'](_0x77cd('0x2c'),function(_0x28a0b6){throw new db['Sequelize'][(_0x77cd('0x57'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x2627cc[_0x77cd('0x59')](_0xeaa165);_0x2627cc['glob'](_0x77cd('0x5a'),{'cwd':path['join'](config[_0x77cd('0x4f')],_0x77cd('0x5b'),path[_0x77cd('0x5c')](_0x3a8238[_0x77cd('0x8')])),'ignore':[path[_0x77cd('0x4e')](path[_0x77cd('0x5d')](_0x3a8238[_0x77cd('0x8')]),'node_modules/**/*'),path[_0x77cd('0x4e')](path[_0x77cd('0x5d')](_0x3a8238[_0x77cd('0x8')]),_0x77cd('0x5e'))],'nodir':!![]})['finalize']();_0xeaa165['on']('close',function(){if(!fs['existsSync'](_0x5a8eea)){throw new db[(_0x77cd('0x5f'))][(_0x77cd('0x57'))]('Plugin\x20not\x20found');}return _0x4fa222[_0x77cd('0x4d')](_0x5a8eea,util['format'](_0x77cd('0x51'),path[_0x77cd('0x5d')](_0x3a8238['path'])),function(_0x455811){if(_0x455811){throw new db[(_0x77cd('0x5f'))]['Error'](_0x77cd('0x60'));}fs[_0x77cd('0x61')](_0x5a8eea);logger[_0x77cd('0x62')]('Download\x20completed');logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0x77cd('0x49')](handleError(_0x4fa222,null));};exports[_0x77cd('0x63')]=function(_0x3cbbc4,_0x8bd8,_0x590769){var _0x4c2719=path[_0x77cd('0x5d')](_0x3cbbc4['file']['filename'],path[_0x77cd('0x64')](_0x3cbbc4[_0x77cd('0x65')]['filename']));var _0x3edcea=path[_0x77cd('0x4e')](config[_0x77cd('0x4f')],_0x77cd('0x5b'),_0x3cbbc4[_0x77cd('0x65')]['filename']);var _0x16b37a=path[_0x77cd('0x4e')](config[_0x77cd('0x4f')],_0x77cd('0x5b'),_0x4c2719);logger[_0x77cd('0x62')](_0x77cd('0x66'),_0x3edcea);logger[_0x77cd('0x62')](_0x77cd('0x67'),_0x16b37a);try{fs[_0x77cd('0x68')](_0x3edcea,parseInt(_0x77cd('0x69'),0x8));extract(_0x3edcea,{'dir':_0x16b37a},function(_0x293e33){if(_0x293e33){logger[_0x77cd('0x2c')](_0x293e33);handleError(_0x293e33,!![]);};var _0x158bca=fs[_0x77cd('0x6a')](_0x16b37a);if(_0x158bca['length']>0x1){removeReferences(_0x3edcea,_0x16b37a);logger[_0x77cd('0x2c')](_0x77cd('0x6b'));return _0x590769(new Error('Invalid\x20plugin\x20structure'));}var _0x37d493=fs['lstatSync'](path[_0x77cd('0x4e')](_0x16b37a,_0x158bca[0x0]));if(_0x37d493[_0x77cd('0x6c')]()){removeReferences(_0x3edcea,_0x16b37a);logger[_0x77cd('0x2c')]('Invalid\x20plugin\x20structure');return _0x590769(new Error(_0x77cd('0x6b')));}if(_0x37d493[_0x77cd('0x6d')]()){var _0x3e40af=fs[_0x77cd('0x6a')](path[_0x77cd('0x4e')](_0x16b37a,_0x158bca[0x0]));if(_0x3e40af[_0x77cd('0x39')]===0x0){removeReferences(_0x3edcea,_0x16b37a);logger['error'](_0x77cd('0x6b'));return _0x590769(new Error(_0x77cd('0x6b')));}var _0x3eb1d7=_0x3e40af[_0x77cd('0x6e')](function(_0x1a82e3){return _0x1a82e3===_0x77cd('0x6f');});if(!_0x3eb1d7){return _0x590769(new Error(_0x77cd('0x70')));}var _0x4b592a=fs[_0x77cd('0x71')](path['join'](_0x16b37a,_0x158bca[0x0],_0x77cd('0x6f')));var _0x1e19e6=JSON[_0x77cd('0x72')](_0x4b592a);if('undefined'==typeof _0x1e19e6[_0x77cd('0x2e')]){return _0x590769(new Error(_0x77cd('0x73')));}if('undefined'==typeof _0x1e19e6['type']){return _0x590769(new Error(_0x77cd('0x74')));}if(_0x77cd('0x23')==typeof _0x1e19e6['version']){return _0x590769(new Error(_0x77cd('0x75')));}if(_0x77cd('0x23')==typeof _0x1e19e6[_0x77cd('0x76')]){return _0x590769(new Error(_0x77cd('0x77')));}if(_0x1e19e6[_0x77cd('0x32')]===_0x77cd('0x78')){if(_0x77cd('0x23')==typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')]){return _0x590769(new Error(_0x77cd('0x7a')));}if('undefined'==typeof _0x1e19e6['parameters'][_0x77cd('0x79')][_0x77cd('0x7b')]&&'undefined'==typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')]['agent']){return _0x590769(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x1e19e6['type']===_0x77cd('0x7c')){if(_0x77cd('0x23')==typeof _0x1e19e6['parameters']['scriptName']){return _0x590769(new Error(_0x77cd('0x7d')));}if(_0x77cd('0x23')==typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x7e')]){return _0x590769(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x590769(new Error(_0x77cd('0x7f')));}var _0x40cd75=_0x1e19e6[_0x77cd('0x2e')];var _0x4cfaed=_0x1e19e6['description'];var _0x181e85=_0x1e19e6[_0x77cd('0x32')];var _0x489bf0=_0x1e19e6['sidebar']?_0x1e19e6[_0x77cd('0x80')]:_0x77cd('0x81');var _0x4046a6=_0x1e19e6['icon']?_0x1e19e6[_0x77cd('0x82')]:_0x77cd('0x83');var _0x26bfb5='';var _0x10cc1b='';var _0x6fdf73='';var _0x5e441e='';var _0x508a30=_0x1e19e6['version'];if(_0x181e85===_0x77cd('0x78')){if('undefined'!=typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')]['admin']){var _0x3b09fa=_0x1e19e6['parameters'][_0x77cd('0x79')][_0x77cd('0x7b')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3b09fa)){_0x26bfb5=path[_0x77cd('0x4e')](_0x77cd('0x84'),_0x4c2719,_0x158bca[0x0],_0x3b09fa);}else{_0x26bfb5=_0x3b09fa;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x1e19e6['parameters'][_0x77cd('0x79')][_0x77cd('0x85')]){var _0x1f578a=_0x1e19e6[_0x77cd('0x76')]['views'][_0x77cd('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x77cd('0x86')](_0x1f578a)){_0x10cc1b=path[_0x77cd('0x4e')]('plugins',_0x4c2719,_0x158bca[0x0],_0x1f578a);}else{_0x10cc1b=_0x1f578a;}}else{logger['info'](_0x77cd('0x87'));}}else if(_0x181e85===_0x77cd('0x7c')){_0x6fdf73=_0x1e19e6['parameters'][_0x77cd('0x88')];_0x5e441e=_0x1e19e6['parameters'][_0x77cd('0x7e')];if(_0x77cd('0x23')!=typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')]){if(_0x77cd('0x23')!=typeof _0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')][_0x77cd('0x7b')]){var _0x3b09fa=_0x1e19e6[_0x77cd('0x76')][_0x77cd('0x79')][_0x77cd('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x77cd('0x86')](_0x3b09fa)){_0x26bfb5=path['join'](_0x77cd('0x84'),_0x4c2719,_0x158bca[0x0],_0x3b09fa);}else{_0x26bfb5=_0x3b09fa;}}if(_0x77cd('0x23')!=typeof _0x1e19e6['parameters'][_0x77cd('0x79')][_0x77cd('0x85')]){var _0x1f578a=_0x1e19e6['parameters'][_0x77cd('0x79')][_0x77cd('0x85')];if(!/^(f|ht)tps?:\/\//i['test'](_0x1f578a)){_0x10cc1b=path[_0x77cd('0x4e')](_0x77cd('0x84'),_0x4c2719,_0x158bca[0x0],_0x1f578a);}else{_0x10cc1b=_0x1f578a;}}}}var _0x5a055d={'name':_0x40cd75,'description':_0x4cfaed,'path':path[_0x77cd('0x4e')](_0x4c2719,_0x158bca[0x0]),'type':_0x181e85,'sidebar':_0x489bf0,'icon':_0x4046a6,'adminUrl':_0x26bfb5,'agentUrl':_0x10cc1b,'scriptName':_0x6fdf73,'scriptPath':_0x5e441e,'version':_0x508a30};removeReferences(_0x3edcea,null);return db['Plugin'][_0x77cd('0x89')](_0x5a055d)[_0x77cd('0x29')](function(_0x1afd16){var _0x5cc284={'role':_0x3cbbc4['body']['role'],'userProfileId':_0x3cbbc4[_0x77cd('0x8a')][_0x77cd('0x8b')]};if(!_0x5cc284)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5cc284['role']===_0x77cd('0x8c')){var _0x4c4b4d=_0x1afd16[_0x77cd('0x2b')]({'plain':!![]});return db[_0x77cd('0x8d')][_0x77cd('0x4c')]({'where':{'name':'Plugins','userProfileId':_0x5cc284[_0x77cd('0x8b')]},'raw':!![]})[_0x77cd('0x29')](function(_0x513263){if(_0x513263&&_0x513263[_0x77cd('0x8e')]===0x0){return db['UserProfileResource'][_0x77cd('0x89')]({'name':_0x4c4b4d[_0x77cd('0x2e')],'resourceId':_0x4c4b4d['id'],'type':_0x513263[_0x77cd('0x2e')],'sectionId':_0x513263['id']},{})[_0x77cd('0x29')](function(){return _0x1afd16;});}else{return _0x1afd16;}})[_0x77cd('0x49')](function(_0x19b599){logger[_0x77cd('0x2c')](_0x77cd('0x8f'),_0x19b599);throw _0x19b599;});}return _0x1afd16;})[_0x77cd('0x29')](respondWithResult(_0x8bd8,null))['catch'](handleError(_0x8bd8,null));}});}catch(_0x5e0b44){_0x8bd8[_0x77cd('0x1e')](0x1f4)[_0x77cd('0x90')](_0x5e0b44);}};function removeReferences(_0x4fbb0a,_0x5383dc){try{if(_0x4fbb0a){fs[_0x77cd('0x61')](_0x4fbb0a);logger[_0x77cd('0x62')](_0x77cd('0x91'));}if(_0x5383dc){rimraf(_0x5383dc,function(){});logger[_0x77cd('0x62')](_0x77cd('0x92'));}}catch(_0x1983b4){logger['error'](_0x1983b4);}}exports['update']=function(_0x1a3df7,_0x44ad75,_0x4d24df){return db['Plugin'][_0x77cd('0x4c')]({'where':{'id':_0x1a3df7[_0x77cd('0x4a')]['id']}})[_0x77cd('0x29')](handleEntityNotFound(_0x44ad75,null))[_0x77cd('0x29')](saveUpdates(_0x1a3df7[_0x77cd('0x8a')],null))[_0x77cd('0x29')](respondWithResult(_0x44ad75,null))[_0x77cd('0x49')](handleError(_0x44ad75,null));};exports[_0x77cd('0x93')]=function(_0x5573d9,_0x2f46c9,_0x59878b){return db[_0x77cd('0x30')][_0x77cd('0x4c')]({'where':{'id':_0x5573d9[_0x77cd('0x4a')]['id']}})[_0x77cd('0x29')](function(_0x373792){if(_0x373792){return _0x373792[_0x77cd('0x2a')]();}})[_0x77cd('0x29')](function(_0x5b32d7){rimraf(path['join'](config['root'],_0x77cd('0x5b'),path['dirname'](_0x5b32d7[_0x77cd('0x8')])),function(){});return _0x5b32d7;})[_0x77cd('0x29')](handleEntityNotFound(_0x2f46c9,null))[_0x77cd('0x29')](respondWithStatusCode(_0x2f46c9,null))[_0x77cd('0x49')](handleError(_0x2f46c9,null));};exports[_0x77cd('0x94')]=function(_0xaf48a2,_0x560865,_0x28ec13){return BPromise[_0x77cd('0x95')]()[_0x77cd('0x29')](function(){if(!_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x8')]){throw new Error(_0x77cd('0x96'));}if(!_0xaf48a2[_0x77cd('0x34')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x91f5c9=_0xaf48a2[_0x77cd('0x34')]['hostname']?_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x97')]+':'+_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x98')]:_0x77cd('0x99')+_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x98')];var _0xbb9c23=_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x20')]?_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x20')]:!![];var _0x4bda09=_0xaf48a2[_0x77cd('0x34')]['encoding']?_0xaf48a2[_0x77cd('0x34')]['encoding']:null;var _0x3a7e4e={'method':_0xaf48a2[_0x77cd('0x9a')],'uri':util['format'](_0x77cd('0x9b'),_0x91f5c9,_0xaf48a2['query'][_0x77cd('0x8')]),'json':_0xbb9c23,'resolveWithFullResponse':!![],'encoding':_0x4bda09,'qs':_0xaf48a2[_0x77cd('0x34')]};if(_0xaf48a2['headers']){_0x3a7e4e[_0x77cd('0x9c')]=_0xaf48a2[_0x77cd('0x9c')];if(_0x3a7e4e['headers'][_0x77cd('0x9d')]){delete _0x3a7e4e[_0x77cd('0x9c')]['content-length'];}}if(_0x3a7e4e[_0x77cd('0x9c')][_0x77cd('0x9e')]){delete _0x3a7e4e[_0x77cd('0x9c')][_0x77cd('0x9e')];}return rp(_0x3a7e4e);})[_0x77cd('0x29')](function(_0xb2e20d){if(_0xb2e20d){_0x560865[_0x77cd('0x25')](_0xb2e20d[_0x77cd('0x9c')]);logger[_0x77cd('0x62')](_0xb2e20d[_0x77cd('0x8a')]);if(_[_0x77cd('0x9f')](_0xaf48a2[_0x77cd('0x34')][_0x77cd('0x8')],_0x77cd('0x4d'))&&_0xb2e20d[_0x77cd('0xa0')]==0x1f4){return _0x560865[_0x77cd('0x1d')](_0xb2e20d[_0x77cd('0xa0')]);}else{return _0x560865[_0x77cd('0x1e')](_0xb2e20d[_0x77cd('0xa0')])[_0x77cd('0x90')](_0xb2e20d[_0x77cd('0x8a')]);}}else{return _0x560865[_0x77cd('0x1d')](0xc8);}})[_0x77cd('0x49')](handleError(_0x560865,null));};exports[_0x77cd('0xa1')]=function(_0x23ae10,_0x3fb571,_0x1894f4){return BPromise[_0x77cd('0x95')]()[_0x77cd('0x29')](function(){if(!_0x23ae10['query'][_0x77cd('0x8')]){throw new Error(_0x77cd('0x96'));}if(!_0x23ae10[_0x77cd('0x34')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x5d7531=_0x23ae10[_0x77cd('0x34')][_0x77cd('0x97')]?_0x23ae10['query']['hostname']+':'+_0x23ae10[_0x77cd('0x34')][_0x77cd('0x98')]:'http://localhost:'+_0x23ae10[_0x77cd('0x34')][_0x77cd('0x98')];var _0xd0f101=_0x23ae10[_0x77cd('0x34')]['json']?_0x23ae10[_0x77cd('0x34')][_0x77cd('0x20')]:!![];var _0x4f7a17=_0x23ae10[_0x77cd('0x34')]['encoding']?_0x23ae10['query'][_0x77cd('0xa2')]:null;var _0x2eb15b={'method':_0x23ae10['method'],'uri':util[_0x77cd('0x50')]('%s%s',_0x5d7531,_0x23ae10[_0x77cd('0x34')][_0x77cd('0x8')]),'json':_0xd0f101,'resolveWithFullResponse':!![],'encoding':_0x4f7a17,'body':_0x23ae10[_0x77cd('0x8a')]};if(_0x23ae10['headers']){_0x2eb15b[_0x77cd('0x9c')]=_0x23ae10[_0x77cd('0x9c')];if(_0x2eb15b[_0x77cd('0x9c')][_0x77cd('0x9d')]){delete _0x2eb15b[_0x77cd('0x9c')]['content-length'];}}if(_0x2eb15b[_0x77cd('0x9c')][_0x77cd('0x9e')]){delete _0x2eb15b[_0x77cd('0x9c')][_0x77cd('0x9e')];}return rp(_0x2eb15b);})['then'](function(_0x17cb9d){if(_0x17cb9d){_0x3fb571['set'](_0x17cb9d['headers']);logger['info'](_0x17cb9d[_0x77cd('0x8a')]);return _0x3fb571[_0x77cd('0x1e')](_0x17cb9d[_0x77cd('0xa0')])[_0x77cd('0x90')](_0x17cb9d[_0x77cd('0x8a')]);}else{return _0x3fb571['sendStatus'](0xc8);}})[_0x77cd('0x49')](handleError(_0x3fb571,null));};
\ No newline at end of file
index 5e5bd01..498e27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1203=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Plugin'];(function(_0x22da46,_0xe08e6b){var _0x8d4f8c=function(_0x4e53d5){while(--_0x4e53d5){_0x22da46['push'](_0x22da46['shift']());}};_0x8d4f8c(++_0xe08e6b);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x3120('0x0'));var Plugin=require(_0x3120('0x1'))['db'][_0x3120('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x3120('0x3')](0x0);var events={'afterCreate':_0x3120('0x4'),'afterUpdate':_0x3120('0x5'),'afterDestroy':_0x3120('0x6')};function emitEvent(_0x1aff37){return function(_0xc8c32e,_0x809377,_0x1b7a3c){PluginEvents[_0x3120('0x7')](_0x1aff37+':'+_0xc8c32e['id'],_0xc8c32e);PluginEvents[_0x3120('0x7')](_0x1aff37,_0xc8c32e);_0x1b7a3c(null);};}for(var e in events){if(events[_0x3120('0x8')](e)){var event=events[e];Plugin[_0x3120('0x9')](e,emitEvent(event));}}module[_0x3120('0xa')]=PluginEvents;
\ No newline at end of file
+var _0x307e=['emit','hasOwnProperty','exports','events','../../mysqldb','Plugin','setMaxListeners','save','remove'];(function(_0x47708b,_0x13f7f7){var _0x4b8d36=function(_0x9b175e){while(--_0x9b175e){_0x47708b['push'](_0x47708b['shift']());}};_0x4b8d36(++_0x13f7f7);}(_0x307e,0xc9));var _0xe307=function(_0x728545,_0x3e3f4d){_0x728545=_0x728545-0x0;var _0x25023b=_0x307e[_0x728545];return _0x25023b;};'use strict';var EventEmitter=require(_0xe307('0x0'));var Plugin=require(_0xe307('0x1'))['db'][_0xe307('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xe307('0x3')](0x0);var events={'afterCreate':_0xe307('0x4'),'afterUpdate':'update','afterDestroy':_0xe307('0x5')};function emitEvent(_0xcb2f6e){return function(_0x516a1d,_0x1eee4d,_0x532403){PluginEvents[_0xe307('0x6')](_0xcb2f6e+':'+_0x516a1d['id'],_0x516a1d);PluginEvents[_0xe307('0x6')](_0xcb2f6e,_0x516a1d);_0x532403(null);};}for(var e in events){if(events[_0xe307('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0xe307('0x8')]=PluginEvents;
\ No newline at end of file
index 44bb21b..4baa576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7beb=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./plugin.attributes','exports','define','plugins','../../config/logger'];(function(_0x49d2ad,_0x33daa4){var _0x279c7b=function(_0x5934ad){while(--_0x5934ad){_0x49d2ad['push'](_0x49d2ad['shift']());}};_0x279c7b(++_0x33daa4);}(_0x7beb,0xc5));var _0xb7be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7beb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb7be('0x0'))(_0xb7be('0x1'));var moment=require(_0xb7be('0x2'));var BPromise=require(_0xb7be('0x3'));var rp=require(_0xb7be('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7be('0x5'));var config=require(_0xb7be('0x6'));var attributes=require(_0xb7be('0x7'));module[_0xb7be('0x8')]=function(_0x14bf65,_0x3983ad){return _0x14bf65[_0xb7be('0x9')]('Plugin',attributes,{'tableName':_0xb7be('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4be6=['plugins','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','define'];(function(_0x5a66be,_0x5c6d5d){var _0x40982d=function(_0x4adf7a){while(--_0x4adf7a){_0x5a66be['push'](_0x5a66be['shift']());}};_0x40982d(++_0x5c6d5d);}(_0x4be6,0xb5));var _0x64be=function(_0x2316b9,_0x87059b){_0x2316b9=_0x2316b9-0x0;var _0x4405a9=_0x4be6[_0x2316b9];return _0x4405a9;};'use strict';var _=require('lodash');var util=require(_0x64be('0x0'));var logger=require(_0x64be('0x1'))(_0x64be('0x2'));var moment=require(_0x64be('0x3'));var BPromise=require(_0x64be('0x4'));var rp=require(_0x64be('0x5'));var fs=require('fs');var path=require(_0x64be('0x6'));var rimraf=require(_0x64be('0x7'));var config=require(_0x64be('0x8'));var attributes=require(_0x64be('0x9'));module['exports']=function(_0x131822,_0x2430e2){return _0x131822[_0x64be('0xa')]('Plugin',attributes,{'tableName':_0x64be('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92a3688..8bca27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd4=['defaults','redis','socket.io-emitter','./plugin.socket','register','request','then','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Plugin,\x20%s,\x20%s','result','CreatePlugin','create','body','options','raw','info','debug','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x22aa61,_0x45e107){var _0x51500a=function(_0x16a73b){while(--_0x16a73b){_0x22aa61['push'](_0x22aa61['shift']());}};_0x51500a(++_0x45e107);}(_0x4dd4,0x77));var _0x44dd=function(_0xac73f7,_0x59279d){_0xac73f7=_0xac73f7-0x0;var _0x28bc9a=_0x4dd4[_0xac73f7];return _0x28bc9a;};'use strict';var _=require('lodash');var util=require(_0x44dd('0x0'));var moment=require(_0x44dd('0x1'));var BPromise=require(_0x44dd('0x2'));var rs=require(_0x44dd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x44dd('0x4'))['db'];var utils=require(_0x44dd('0x5'));var logger=require(_0x44dd('0x6'))(_0x44dd('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x44dd('0x8')]['http']({'port':0x232a});config['redis']=_[_0x44dd('0x9')](config[_0x44dd('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x44dd('0xb'))(new Redis(config[_0x44dd('0xa')]));require(_0x44dd('0xc'))[_0x44dd('0xd')](socket);function respondWithRpcPromise(_0x394172,_0x1fb5ab,_0x7f7990){return new BPromise(function(_0x1e6171,_0x1ad84f){return client[_0x44dd('0xe')](_0x394172,_0x7f7990)[_0x44dd('0xf')](function(_0x293904){logger['info']('Plugin,\x20%s,\x20%s',_0x1fb5ab,_0x44dd('0x10'));logger['debug'](_0x44dd('0x11'),_0x1fb5ab,_0x44dd('0x10'),JSON[_0x44dd('0x12')](_0x293904));if(_0x293904['error']){if(_0x293904[_0x44dd('0x13')][_0x44dd('0x14')]===0x1f4){logger[_0x44dd('0x13')]('Plugin,\x20%s,\x20%s',_0x1fb5ab,_0x293904[_0x44dd('0x13')][_0x44dd('0x15')]);return _0x1ad84f(_0x293904['error'][_0x44dd('0x15')]);}logger[_0x44dd('0x13')](_0x44dd('0x16'),_0x1fb5ab,_0x293904['error'][_0x44dd('0x15')]);return _0x1e6171(_0x293904[_0x44dd('0x13')][_0x44dd('0x15')]);}else{logger['info'](_0x44dd('0x16'),_0x1fb5ab,_0x44dd('0x10'));_0x1e6171(_0x293904[_0x44dd('0x17')]['message']);}})['catch'](function(_0x3ddd92){logger['error']('Plugin,\x20%s,\x20%s',_0x1fb5ab,_0x3ddd92);_0x1ad84f(_0x3ddd92);});});}exports[_0x44dd('0x18')]=function(_0x2ef683){var _0x2e3d60=this;return new Promise(function(_0x40890d,_0xc89b9b){return db['Plugin'][_0x44dd('0x19')](_0x2ef683[_0x44dd('0x1a')],{'raw':_0x2ef683[_0x44dd('0x1b')]?_0x2ef683['options'][_0x44dd('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x190147){logger[_0x44dd('0x1d')](_0x44dd('0x18'),_0x2ef683);logger[_0x44dd('0x1e')](_0x44dd('0x18'),_0x2ef683,JSON[_0x44dd('0x12')](_0x190147));_0x40890d(_0x190147);})[_0x44dd('0x1f')](function(_0x3623d2){logger[_0x44dd('0x13')](_0x44dd('0x18'),_0x3623d2['message'],_0x2ef683);_0xc89b9b(_0x2e3d60[_0x44dd('0x13')](0x1f4,_0x3623d2[_0x44dd('0x15')]));});});};
\ No newline at end of file
+var _0x9e63=['catch','CreatePlugin','create','options','then','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','request','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x547c8a,_0x53aca8){var _0x3d2e6f=function(_0x4253fb){while(--_0x4253fb){_0x547c8a['push'](_0x547c8a['shift']());}};_0x3d2e6f(++_0x53aca8);}(_0x9e63,0x65));var _0x39e6=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x9e63[_0x4b7b62];return _0x2280df;};'use strict';var _=require(_0x39e6('0x0'));var util=require(_0x39e6('0x1'));var moment=require(_0x39e6('0x2'));var BPromise=require('bluebird');var rs=require(_0x39e6('0x3'));var fs=require('fs');var Redis=require(_0x39e6('0x4'));var db=require(_0x39e6('0x5'))['db'];var utils=require(_0x39e6('0x6'));var logger=require(_0x39e6('0x7'))(_0x39e6('0x8'));var config=require(_0x39e6('0x9'));var jayson=require(_0x39e6('0xa'));var client=jayson['client'][_0x39e6('0xb')]({'port':0x232a});config[_0x39e6('0xc')]=_[_0x39e6('0xd')](config['redis'],{'host':_0x39e6('0xe'),'port':0x18eb});var socket=require(_0x39e6('0xf'))(new Redis(config['redis']));require(_0x39e6('0x10'))['register'](socket);function respondWithRpcPromise(_0x5ddfd6,_0x37731c,_0xfbdcd){return new BPromise(function(_0x3e5fec,_0x2d4acf){return client[_0x39e6('0x11')](_0x5ddfd6,_0xfbdcd)['then'](function(_0x4fcb02){logger[_0x39e6('0x12')](_0x39e6('0x13'),_0x37731c,_0x39e6('0x14'));logger[_0x39e6('0x15')](_0x39e6('0x16'),_0x37731c,'request\x20sent',JSON[_0x39e6('0x17')](_0x4fcb02));if(_0x4fcb02[_0x39e6('0x18')]){if(_0x4fcb02[_0x39e6('0x18')][_0x39e6('0x19')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x37731c,_0x4fcb02[_0x39e6('0x18')][_0x39e6('0x1a')]);return _0x2d4acf(_0x4fcb02[_0x39e6('0x18')][_0x39e6('0x1a')]);}logger[_0x39e6('0x18')]('Plugin,\x20%s,\x20%s',_0x37731c,_0x4fcb02[_0x39e6('0x18')][_0x39e6('0x1a')]);return _0x3e5fec(_0x4fcb02[_0x39e6('0x18')][_0x39e6('0x1a')]);}else{logger[_0x39e6('0x12')](_0x39e6('0x13'),_0x37731c,_0x39e6('0x14'));_0x3e5fec(_0x4fcb02['result'][_0x39e6('0x1a')]);}})[_0x39e6('0x1b')](function(_0x297060){logger['error']('Plugin,\x20%s,\x20%s',_0x37731c,_0x297060);_0x2d4acf(_0x297060);});});}exports[_0x39e6('0x1c')]=function(_0x445f12){var _0x1d81aa=this;return new Promise(function(_0x2d9a98,_0x18031b){return db['Plugin'][_0x39e6('0x1d')](_0x445f12['body'],{'raw':_0x445f12[_0x39e6('0x1e')]?_0x445f12[_0x39e6('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0x39e6('0x1f')](function(_0x1c626a){logger[_0x39e6('0x12')](_0x39e6('0x1c'),_0x445f12);logger[_0x39e6('0x15')](_0x39e6('0x1c'),_0x445f12,JSON[_0x39e6('0x17')](_0x1c626a));_0x2d9a98(_0x1c626a);})[_0x39e6('0x1b')](function(_0x302f77){logger[_0x39e6('0x18')](_0x39e6('0x1c'),_0x302f77[_0x39e6('0x1a')],_0x445f12);_0x18031b(_0x1d81aa[_0x39e6('0x18')](0x1f4,_0x302f77['message']));});});};
\ No newline at end of file
index 76388e2..1a44708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaefb=['register','length','plugin:','./plugin.events','save','remove','update','emit','removeListener'];(function(_0x30d4bc,_0x391e22){var _0x480004=function(_0x2104b8){while(--_0x2104b8){_0x30d4bc['push'](_0x30d4bc['shift']());}};_0x480004(++_0x391e22);}(_0xaefb,0x186));var _0xbaef=function(_0x2300c7,_0x255f74){_0x2300c7=_0x2300c7-0x0;var _0x23f720=_0xaefb[_0x2300c7];return _0x23f720;};'use strict';var PluginEvents=require(_0xbaef('0x0'));var events=[_0xbaef('0x1'),_0xbaef('0x2'),_0xbaef('0x3')];function createListener(_0x27f201,_0x37d3af){return function(_0x162f15){_0x37d3af[_0xbaef('0x4')](_0x27f201,_0x162f15);};}function removeListener(_0x4934dd,_0x5b90c2){return function(){PluginEvents[_0xbaef('0x5')](_0x4934dd,_0x5b90c2);};}exports[_0xbaef('0x6')]=function(_0x7120bc){for(var _0x1d012a=0x0,_0x11f895=events[_0xbaef('0x7')];_0x1d012a<_0x11f895;_0x1d012a++){var _0x3f9777=events[_0x1d012a];var _0x4eaad7=createListener(_0xbaef('0x8')+_0x3f9777,_0x7120bc);PluginEvents['on'](_0x3f9777,_0x4eaad7);}};
\ No newline at end of file
+var _0x6119=['emit','length','./plugin.events','remove','update'];(function(_0x2494f5,_0x1f1d3c){var _0x5c60a4=function(_0x437901){while(--_0x437901){_0x2494f5['push'](_0x2494f5['shift']());}};_0x5c60a4(++_0x1f1d3c);}(_0x6119,0x93));var _0x9611=function(_0x5967b1,_0x278124){_0x5967b1=_0x5967b1-0x0;var _0x75cbd3=_0x6119[_0x5967b1];return _0x75cbd3;};'use strict';var PluginEvents=require(_0x9611('0x0'));var events=['save',_0x9611('0x1'),_0x9611('0x2')];function createListener(_0x295540,_0x36f847){return function(_0x2c0b7d){_0x36f847[_0x9611('0x3')](_0x295540,_0x2c0b7d);};}function removeListener(_0x5b07af,_0x1eee10){return function(){PluginEvents['removeListener'](_0x5b07af,_0x1eee10);};}exports['register']=function(_0x493453){for(var _0x5c8871=0x0,_0xc9472b=events[_0x9611('0x4')];_0x5c8871<_0xc9472b;_0x5c8871++){var _0x41f9ad=events[_0x5c8871];var _0x35960a=createListener('plugin:'+_0x41f9ad,_0x493453);PluginEvents['on'](_0x41f9ad,_0x35960a);}};
\ No newline at end of file
index 85d023d..0e8888a 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(_0x21e679,_0x53b326){var _0x2e1f70=function(_0x3ace0e){while(--_0x3ace0e){_0x21e679['push'](_0x21e679['shift']());}};_0x2e1f70(++_0x53b326);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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(_0x923f9b,_0x911264){var _0xfdf48e=function(_0x49bd30){while(--_0x49bd30){_0x923f9b['push'](_0x923f9b['shift']());}};_0xfdf48e(++_0x911264);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 abdee66..2093dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['hasOwnProperty','params','Unknown\x20status','dump','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','error','stack','name','status','send','info','index','list','then','reject','express','length','catch','show','describe','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','Missing\x20name\x20and/or\x20path','update','restart','stop'];(function(_0x4159d1,_0x109515){var _0x2ef31a=function(_0x4be896){while(--_0x4be896){_0x4159d1['push'](_0x4159d1['shift']());}};_0x2ef31a(++_0x109515);}(_0x44a3,0x1a9));var _0x344a=function(_0x1419f6,_0x4180de){_0x1419f6=_0x1419f6-0x0;var _0x5b07c7=_0x44a3[_0x1419f6];return _0x5b07c7;};'use strict';var _=require(_0x344a('0x0'));var pm2=require(_0x344a('0x1'));var logger=require(_0x344a('0x2'))(_0x344a('0x3'));var path=require(_0x344a('0x4'));var exec=require(_0x344a('0x5'))[_0x344a('0x6')];var BPromise=require(_0x344a('0x7'));function handleEntityNotFound(_0x528a13,_0x23004c){return function(_0x1bc716){if(!_0x1bc716){_0x528a13[_0x344a('0x8')](0x194);;}return _0x1bc716;};}function respondWithResult(_0x28b51e,_0x39984a){_0x39984a=_0x39984a||0xc8;return function(_0x504bd1){if(_0x504bd1){return _0x28b51e['status'](_0x39984a)['json'](_0x504bd1);}return null;};}function handleError(_0x484661,_0x475dab){_0x475dab=_0x475dab||0x1f4;return function(_0x2f9486){logger[_0x344a('0x9')](_0x2f9486[_0x344a('0xa')]);if(_0x2f9486[_0x344a('0xb')]){delete _0x2f9486['name'];}_0x484661[_0x344a('0xc')](_0x475dab)[_0x344a('0xd')](_0x2f9486);};}function execChildProcess(){return new BPromise(function(_0x559406,_0x2734ec){exec('npm\x20install',function(_0x397476,_0x5e6c98,_0xd53a4f){logger[_0x344a('0xe')](_0x5e6c98);logger['info'](_0xd53a4f);if(_0x397476){logger['error'](_0x397476);return _0x2734ec(_0x397476);}return _0x559406(_0x5e6c98);});});}exports[_0x344a('0xf')]=function(_0x2ad7eb,_0x3a974e){return pm2[_0x344a('0x10')]()[_0x344a('0x11')](function(_0x133ad4){if(_0x133ad4){var _0x4ee562=_[_0x344a('0x12')](_0x133ad4,function(_0x2360e9){return _0x2360e9[_0x344a('0xb')]===_0x344a('0x13')||_0x2360e9['name']==='motion2';});return{'rows':_0x4ee562,'count':_0x4ee562[_0x344a('0x14')]};}return null;})[_0x344a('0x11')](respondWithResult(_0x3a974e,null))[_0x344a('0x15')](handleError(_0x3a974e,null));};exports[_0x344a('0x16')]=function(_0x48b3ab,_0x397de6){return pm2[_0x344a('0x17')](_0x48b3ab['params']['id'])[_0x344a('0x11')](respondWithResult(_0x397de6,null))[_0x344a('0x11')](handleEntityNotFound(_0x397de6,null))[_0x344a('0x15')](handleError(_0x397de6,null));};exports[_0x344a('0x18')]=function(_0x13b382,_0x43fa0f){if(_0x13b382[_0x344a('0x19')][_0x344a('0xb')]&&_0x13b382[_0x344a('0x19')][_0x344a('0x1a')]){var _0x4b3552=path[_0x344a('0x1b')](__dirname,_0x344a('0x1c'),_0x13b382[_0x344a('0x19')][_0x344a('0x1a')]);var _0x240be3=process[_0x344a('0x1d')]();process[_0x344a('0x1e')](path[_0x344a('0x1f')](_0x4b3552));return execChildProcess()[_0x344a('0x11')](function(_0x27f527){process[_0x344a('0x1e')](_0x240be3);return pm2[_0x344a('0x20')]({'name':_0x13b382[_0x344a('0x19')][_0x344a('0xb')],'script':_0x4b3552});})['then'](function(_0x6ccfba){pm2['dump']();return _0x6ccfba[0x0];})[_0x344a('0x11')](respondWithResult(_0x43fa0f,0xc9))['catch'](handleError(_0x43fa0f,null));}else{return _0x43fa0f[_0x344a('0xc')](0x1f4)[_0x344a('0xd')]({'message':_0x344a('0x21')});}};exports[_0x344a('0x22')]=function(_0x26f059,_0x28749b){if(_0x26f059[_0x344a('0x19')]['id']){delete _0x26f059[_0x344a('0x19')]['id'];}var _0x4f2499={'online':_0x344a('0x23'),'stopped':_0x344a('0x24')};if(_0x4f2499[_0x344a('0x25')](_0x26f059[_0x344a('0x19')][_0x344a('0xc')])){return pm2[_0x4f2499[_0x26f059[_0x344a('0x19')]['status']]](_0x26f059[_0x344a('0x26')]['id'])['then'](respondWithResult(_0x28749b,0xc8))['catch'](handleError(_0x28749b,null));}else{return _0x28749b[_0x344a('0xc')](0x1f4)[_0x344a('0xd')]({'message':_0x344a('0x27')});}};exports['destroy']=function(_0x5cd9c6,_0x5cafd2){if(_0x5cd9c6[_0x344a('0x19')]['id']){delete _0x5cd9c6[_0x344a('0x19')]['id'];}if(_0x5cd9c6[_0x344a('0x26')]['id']){return pm2['delete'](_0x5cd9c6[_0x344a('0x26')]['id'])[_0x344a('0x11')](function(_0x71f3ec){pm2[_0x344a('0x28')]();return _0x71f3ec[0x0];})[_0x344a('0x11')](respondWithResult(_0x5cafd2,null))[_0x344a('0x15')](handleError(_0x5cafd2,null));}else{return _0x5cafd2[_0x344a('0xc')](0x1f4)['send']({'message':_0x344a('0x29')});}};
\ No newline at end of file
+var _0x7af2=['sendStatus','json','error','stack','name','status','info','index','list','then','reject','express','motion2','length','catch','show','describe','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','params','send','destroy','Unknown\x20id','../../config/pm2','../../config/logger','api','path','exec','bluebird'];(function(_0x26658e,_0x1bb1a9){var _0x572802=function(_0x168565){while(--_0x168565){_0x26658e['push'](_0x26658e['shift']());}};_0x572802(++_0x1bb1a9);}(_0x7af2,0x119));var _0x27af=function(_0x3f1a89,_0x17ce94){_0x3f1a89=_0x3f1a89-0x0;var _0x3efe92=_0x7af2[_0x3f1a89];return _0x3efe92;};'use strict';var _=require('lodash');var pm2=require(_0x27af('0x0'));var logger=require(_0x27af('0x1'))(_0x27af('0x2'));var path=require(_0x27af('0x3'));var exec=require('child_process')[_0x27af('0x4')];var BPromise=require(_0x27af('0x5'));function handleEntityNotFound(_0x709cb6,_0x2a542f){return function(_0x22ae46){if(!_0x22ae46){_0x709cb6[_0x27af('0x6')](0x194);;}return _0x22ae46;};}function respondWithResult(_0x350532,_0x184630){_0x184630=_0x184630||0xc8;return function(_0x2193c6){if(_0x2193c6){return _0x350532['status'](_0x184630)[_0x27af('0x7')](_0x2193c6);}return null;};}function handleError(_0x366868,_0x389e97){_0x389e97=_0x389e97||0x1f4;return function(_0x583db8){logger[_0x27af('0x8')](_0x583db8[_0x27af('0x9')]);if(_0x583db8[_0x27af('0xa')]){delete _0x583db8['name'];}_0x366868[_0x27af('0xb')](_0x389e97)['send'](_0x583db8);};}function execChildProcess(){return new BPromise(function(_0x4d4729,_0x3e4b33){exec('npm\x20install',function(_0x50fe01,_0x184e25,_0x59c073){logger[_0x27af('0xc')](_0x184e25);logger['info'](_0x59c073);if(_0x50fe01){logger[_0x27af('0x8')](_0x50fe01);return _0x3e4b33(_0x50fe01);}return _0x4d4729(_0x184e25);});});}exports[_0x27af('0xd')]=function(_0x1fd964,_0x23f9ec){return pm2[_0x27af('0xe')]()[_0x27af('0xf')](function(_0x234825){if(_0x234825){var _0x3da435=_[_0x27af('0x10')](_0x234825,function(_0x4724e0){return _0x4724e0[_0x27af('0xa')]===_0x27af('0x11')||_0x4724e0[_0x27af('0xa')]===_0x27af('0x12');});return{'rows':_0x3da435,'count':_0x3da435[_0x27af('0x13')]};}return null;})[_0x27af('0xf')](respondWithResult(_0x23f9ec,null))[_0x27af('0x14')](handleError(_0x23f9ec,null));};exports[_0x27af('0x15')]=function(_0x58583a,_0x315661){return pm2[_0x27af('0x16')](_0x58583a['params']['id'])['then'](respondWithResult(_0x315661,null))[_0x27af('0xf')](handleEntityNotFound(_0x315661,null))[_0x27af('0x14')](handleError(_0x315661,null));};exports[_0x27af('0x17')]=function(_0x31573a,_0xec699a){if(_0x31573a['body'][_0x27af('0xa')]&&_0x31573a[_0x27af('0x18')][_0x27af('0x19')]){var _0x5e7c19=path[_0x27af('0x1a')](__dirname,_0x27af('0x1b'),_0x31573a[_0x27af('0x18')]['script']);var _0x2dce2b=process[_0x27af('0x1c')]();process[_0x27af('0x1d')](path[_0x27af('0x1e')](_0x5e7c19));return execChildProcess()[_0x27af('0xf')](function(_0x396156){process[_0x27af('0x1d')](_0x2dce2b);return pm2[_0x27af('0x1f')]({'name':_0x31573a[_0x27af('0x18')]['name'],'script':_0x5e7c19});})['then'](function(_0x4b8fe6){pm2[_0x27af('0x20')]();return _0x4b8fe6[0x0];})['then'](respondWithResult(_0xec699a,0xc9))[_0x27af('0x14')](handleError(_0xec699a,null));}else{return _0xec699a[_0x27af('0xb')](0x1f4)['send']({'message':_0x27af('0x21')});}};exports[_0x27af('0x22')]=function(_0x463e36,_0x424490){if(_0x463e36[_0x27af('0x18')]['id']){delete _0x463e36[_0x27af('0x18')]['id'];}var _0x775d4e={'online':'restart','stopped':_0x27af('0x23')};if(_0x775d4e[_0x27af('0x24')](_0x463e36[_0x27af('0x18')][_0x27af('0xb')])){return pm2[_0x775d4e[_0x463e36[_0x27af('0x18')][_0x27af('0xb')]]](_0x463e36[_0x27af('0x25')]['id'])[_0x27af('0xf')](respondWithResult(_0x424490,0xc8))[_0x27af('0x14')](handleError(_0x424490,null));}else{return _0x424490[_0x27af('0xb')](0x1f4)[_0x27af('0x26')]({'message':'Unknown\x20status'});}};exports[_0x27af('0x27')]=function(_0x14b2e7,_0x3800a1){if(_0x14b2e7[_0x27af('0x18')]['id']){delete _0x14b2e7[_0x27af('0x18')]['id'];}if(_0x14b2e7[_0x27af('0x25')]['id']){return pm2['delete'](_0x14b2e7['params']['id'])[_0x27af('0xf')](function(_0x37cb41){pm2['dump']();return _0x37cb41[0x0];})[_0x27af('0xf')](respondWithResult(_0x3800a1,null))[_0x27af('0x14')](handleError(_0x3800a1,null));}else{return _0x3800a1[_0x27af('0xb')](0x1f4)[_0x27af('0x26')]({'message':_0x27af('0x28')});}};
\ No newline at end of file
index 4e3a79e..a1ff72f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ac2=['getQueues','exports','Router','../../components/auth/service','./realtime.controller','/agents','getAgents','/queues','isAuthenticated'];(function(_0xdc0a9a,_0x5205c1){var _0x3a97e9=function(_0x1ffba9){while(--_0x1ffba9){_0xdc0a9a['push'](_0xdc0a9a['shift']());}};_0x3a97e9(++_0x5205c1);}(_0x2ac2,0x14f));var _0x22ac=function(_0x201b6b,_0x2e4990){_0x201b6b=_0x201b6b-0x0;var _0x40ee3e=_0x2ac2[_0x201b6b];return _0x40ee3e;};'use strict';var express=require('express');var router=express[_0x22ac('0x0')]();var auth=require(_0x22ac('0x1'));var controller=require(_0x22ac('0x2'));router['get'](_0x22ac('0x3'),auth['isAuthenticated'](),controller[_0x22ac('0x4')]);router['get'](_0x22ac('0x5'),auth[_0x22ac('0x6')](),controller[_0x22ac('0x7')]);module[_0x22ac('0x8')]=router;
\ No newline at end of file
+var _0x9739=['../../components/auth/service','./realtime.controller','get','/agents','isAuthenticated','getAgents','/queues','getQueues','exports','express','Router'];(function(_0x24cffe,_0x20d7eb){var _0x5cdfe5=function(_0x4e7873){while(--_0x4e7873){_0x24cffe['push'](_0x24cffe['shift']());}};_0x5cdfe5(++_0x20d7eb);}(_0x9739,0x13d));var _0x9973=function(_0x34d346,_0x4c6502){_0x34d346=_0x34d346-0x0;var _0x122d76=_0x9739[_0x34d346];return _0x122d76;};'use strict';var express=require(_0x9973('0x0'));var router=express[_0x9973('0x1')]();var auth=require(_0x9973('0x2'));var controller=require(_0x9973('0x3'));router[_0x9973('0x4')](_0x9973('0x5'),auth[_0x9973('0x6')](),controller[_0x9973('0x7')]);router[_0x9973('0x4')](_0x9973('0x8'),auth[_0x9973('0x6')](),controller[_0x9973('0x9')]);module[_0x9973('0xa')]=router;
\ No newline at end of file
index 3e8fa9f..d27baa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df8=['getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','User','rawAttributes','fieldName','type','key','role','online','raw','sequelize','literal','FIELD(id,','order','*pause','push','Pause','forEach','where','merge','user','Agents','agent','extraQueryConditions','assign','UserProfile','getResources','findAndCountAll','rows','map','filterAgentAttributes','globalStatus','getAgentStatus','Status','sortAgentsByStatus','split','pick','catch','getQueues','isValidChannel','toLowerCase','startCase','Queue','voice','outbound','dialActive','dialMethod','getOptions','userProfileId','filter','getRealtimeQueues','initializeQueues','lodash','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../mysqldb','../../errors/api','APIBadRequestError','offset','limit','undefined','count','status','set','Content-Range','getAgents','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','pause','resolve','then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','sort','includes','validateSortParameter','fields','join','getAgentIdsByQueues','getRealtimeAgents'];(function(_0x1e2e79,_0x486fcb){var _0x473066=function(_0x47679c){while(--_0x47679c){_0x1e2e79['push'](_0x1e2e79['shift']());}};_0x473066(++_0x486fcb);}(_0x3df8,0x134));var _0x83df=function(_0x5ae8f7,_0x330d91){_0x5ae8f7=_0x5ae8f7-0x0;var _0x54c636=_0x3df8[_0x5ae8f7];return _0x54c636;};'use strict';var _=require(_0x83df('0x0'));var util=require('util');var rta=require(_0x83df('0x1'));var rtq=require(_0x83df('0x2'));var qs=require(_0x83df('0x3'));var utils=require('../../config/utils');var db=require(_0x83df('0x4'))['db'];var APIBadRequestError=require(_0x83df('0x5'))[_0x83df('0x6')];var APIHandleError=require('../../errors/api')['handleError'];function respondWithFilteredResult(_0x1e49d5,_0x2c5f35){return function(_0x304259){if(_0x304259){var _0x57aabd=typeof _0x2c5f35[_0x83df('0x7')]==='undefined'&&typeof _0x2c5f35[_0x83df('0x8')]===_0x83df('0x9');var _0x46fb30=_0x304259[_0x83df('0xa')];var _0x592e38=_0x57aabd?0x0:_0x2c5f35['offset'];var _0x2f2e8b=_0x57aabd?_0x304259[_0x83df('0xa')]:_0x2c5f35['offset']+_0x2c5f35[_0x83df('0x8')];var _0x476a9a;if(_0x2f2e8b>=_0x46fb30){_0x2f2e8b=_0x46fb30;_0x476a9a=0xc8;}else{_0x476a9a=0xce;}_0x1e49d5[_0x83df('0xb')](_0x476a9a);return _0x1e49d5[_0x83df('0xc')](_0x83df('0xd'),_0x592e38+'-'+_0x2f2e8b+'/'+_0x46fb30)['json'](_0x304259);}return null;};}exports[_0x83df('0xe')]=function(_0x753e10,_0x5828e5){var _0x18c9c6={'count':0x0,'rows':[]};var _0x37e52e={};var _0x436825;var _0x2eb009=utils['getChannels']();var _0x3964ad;var _0xc309e1;var _0x3a4f1d=_0x753e10[_0x83df('0xf')][_0x83df('0x10')];var _0x3760b3=_0x753e10[_0x83df('0xf')][_0x83df('0x11')];var _0x202394=_0x753e10[_0x83df('0xf')][_0x83df('0x12')];var _0x5ebb75=_0x3760b3===_0x83df('0x13')||_0x3760b3==='*pause'?!![]:![];var _0x4972bc=[];var _0x3181a;var _0x5d830f;Promise[_0x83df('0x14')]()[_0x83df('0x15')](function(){if(_0x753e10['query'][_0x83df('0x16')]){if(!utils['isValidChannel'](_0x753e10[_0x83df('0xf')][_0x83df('0x16')])){throw new APIBadRequestError(util[_0x83df('0x17')](_0x83df('0x18'),_0x753e10[_0x83df('0xf')][_0x83df('0x16')]));}_0x436825=_0x753e10['query'][_0x83df('0x16')]['toLowerCase']();}if(!_0x753e10[_0x83df('0xf')][_0x83df('0x19')]||!_0x753e10['query']['sort'][_0x83df('0x1a')]('globalStatus')){_0x753e10[_0x83df('0xf')]['sort']=rta[_0x83df('0x1b')](_0x753e10[_0x83df('0xf')][_0x83df('0x19')]);return;}var _0x2f93c0=rta['getUpdatedSortOptions'](_0x753e10[_0x83df('0xf')][_0x83df('0x19')]);_0x753e10['query'][_0x83df('0x19')]=_0x2f93c0[_0x83df('0x1c')][_0x83df('0x1d')](',');_0x3181a=_0x2f93c0['order'];})[_0x83df('0x15')](function(){if(!_0x3a4f1d){return[];}return rta[_0x83df('0x1e')](_0x3a4f1d,_0x436825);})[_0x83df('0x15')](function(_0x523f11){_0x4972bc=_0x523f11;return rta[_0x83df('0x1f')]();})[_0x83df('0x15')](function(_0x5dd773){_0xc309e1=_0x5dd773['rows'];if((!_0x3760b3||_0x5ebb75)&&!_0x3181a){return _0x4972bc;}if(_0x3181a&&!_0x3760b3){return rta[_0x83df('0x20')](_0xc309e1,_0x4972bc,_0x3181a);}else{return rta[_0x83df('0x21')](_0xc309e1,_0x4972bc,_0x3760b3);}})[_0x83df('0x15')](function(_0x4dbf7a){_0x4972bc=_0x4dbf7a;var _0x55c937=![];if(_0x4972bc[_0x83df('0x22')]===0x0){if(_0x3a4f1d||_0x3760b3){_0x55c937=!![];}if(_0x5ebb75){_0x55c937=![];}}if(_0x55c937){return _0x18c9c6;}var _0x597a03=_['map'](db[_0x83df('0x23')][_0x83df('0x24')],function(_0x51c543){return{'name':_0x51c543[_0x83df('0x25')],'type':_0x51c543[_0x83df('0x26')][_0x83df('0x27')]};});_0x753e10['query'][_0x83df('0x28')]='agent';_0x753e10[_0x83df('0xf')][_0x83df('0x29')]=!![];_0x37e52e=qs['getOptions'](_0x597a03,_0x753e10);_0x37e52e[_0x83df('0x2a')]=!![];var _0xa89aad=[];if(_0x4972bc[_0x83df('0x22')]>0x0){_0xa89aad['push']({'id':{'$in':_0x4972bc}});if(_0x3181a&&!_0x3760b3){_0x5d830f=[db[_0x83df('0x2b')][_0x83df('0x2c')](_0x83df('0x2d')+_0x4972bc+')')];_0x37e52e[_0x83df('0x2e')]=_0x5d830f;}}if(_0x5ebb75){_0x2eb009['forEach'](function(_0x4bbe00){var _0x1fa550=!![];if(_0x3760b3===_0x83df('0x2f')&&_0x436825!==_0x4bbe00){_0x1fa550=![];}_0xa89aad[_0x83df('0x30')]({[_0x4bbe00+_0x83df('0x31')]:_0x1fa550});});if(_0x202394){_0xa89aad[_0x83df('0x30')]({'pauseType':_0x202394});}}else if(_0x3760b3){_0x2eb009[_0x83df('0x32')](function(_0xd0a728){_0xa89aad['push']({[_0xd0a728+'Pause']:![]});});}_0x37e52e[_0x83df('0x33')]=_[_0x83df('0x34')](_0x37e52e[_0x83df('0x33')],{'$and':_0xa89aad});if(_0x753e10['user'][_0x83df('0x28')]===_0x83df('0x35')){var _0x476216={'params':{'id':_0x753e10[_0x83df('0x35')]['userProfileId']},'query':{'section':_0x83df('0x36'),'role':_0x83df('0x37'),'online':!![],'raw':!![],'ids':_0x4972bc,'customSorting':_0x5d830f}};if(_0x5ebb75){_0x476216[_0x83df('0xf')][_0x83df('0x38')]=_0xa89aad;}_0x476216[_0x83df('0xf')]=Object[_0x83df('0x39')](_0x476216['query'],_0x753e10[_0x83df('0xf')]);delete _0x476216[_0x83df('0xf')]['id'];return db[_0x83df('0x3a')][_0x83df('0x3b')](_0x476216);}return db['User'][_0x83df('0x3c')](_0x37e52e);})['then'](function(_0x2e2180){_0x18c9c6[_0x83df('0xa')]=_0x2e2180[_0x83df('0xa')];_0x3964ad=_0x2e2180[_0x83df('0x3d')];return _0x3964ad[_0x83df('0x3e')](function(_0x2f7c5){var _0x484e9c=_['find'](_0xc309e1,['id',_0x2f7c5['id']]);if(_0x484e9c){var _0x1024c1=rta[_0x83df('0x3f')](_0x484e9c);_[_0x83df('0x34')](_0x2f7c5,_0x1024c1);}_0x2f7c5[_0x83df('0x40')]=rta[_0x83df('0x41')](_0x2f7c5);if(_0x2f7c5['globalStatus'][_0x83df('0x1a')](_0x83df('0x13'))){_0x2eb009[_0x83df('0x32')](function(_0x45a136){if(_0x2f7c5[_0x45a136+_0x83df('0x31')]){_0x2f7c5[_0x45a136+_0x83df('0x42')]=_0x83df('0x13');}});}return _0x2f7c5;});})['then'](function(_0x4bede6){if(!_0x3181a||_0x5d830f){return _0x4bede6;}return rta[_0x83df('0x43')](_0x4bede6,_0x3181a);})[_0x83df('0x15')](function(_0x17f9aa){var _0xaf7c44=null;if(_0x753e10[_0x83df('0xf')][_0x83df('0x1c')]){var _0x4549fe=_0x753e10['query'][_0x83df('0x1c')][_0x83df('0x44')](',');_0xaf7c44=_0x17f9aa['map'](function(_0x50dbe3){return _[_0x83df('0x45')](_0x50dbe3,_0x4549fe);});}_0x18c9c6[_0x83df('0x3d')]=_0xaf7c44||_0x17f9aa;return _0x18c9c6;})[_0x83df('0x15')](respondWithFilteredResult(_0x5828e5,_0x37e52e))[_0x83df('0x46')](APIHandleError(_0x5828e5));};exports[_0x83df('0x47')]=function(_0x593416,_0xf4ee78){var _0x501cc6={'count':0x0,'rows':[]};var _0xb817d7={};var _0x242e64;var _0x3b1ab9;var _0x4a6f5c;Promise[_0x83df('0x14')]()[_0x83df('0x15')](function(){if(_0x593416[_0x83df('0xf')]['channel']){if(!utils[_0x83df('0x48')](_0x593416[_0x83df('0xf')][_0x83df('0x16')])){throw new APIBadRequestError(util[_0x83df('0x17')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x593416['query'][_0x83df('0x16')]));}_0x242e64=_0x593416[_0x83df('0xf')][_0x83df('0x16')][_0x83df('0x49')]();}var _0x264ff3=_[_0x83df('0x4a')](_0x242e64)+_0x83df('0x4b');var _0x161be2=_[_0x83df('0x3e')](db[_0x264ff3][_0x83df('0x24')],function(_0xf0d513){return{'name':_0xf0d513['fieldName'],'type':_0xf0d513[_0x83df('0x26')][_0x83df('0x27')]};});if(!_0x593416[_0x83df('0xf')][_0x83df('0x1c')]){var _0x2e734a=['id','name'];if(_0x242e64===_0x83df('0x4c')){_0x2e734a[_0x83df('0x30')](_0x83df('0x26'));if(_0x593416[_0x83df('0xf')][_0x83df('0x26')]===_0x83df('0x4d')){_0x2e734a[_0x83df('0x30')]([_0x83df('0x4e'),_0x83df('0x4f')]);}}_0x593416[_0x83df('0xf')]['fields']=_0x2e734a[_0x83df('0x1d')](',');}_0xb817d7=qs[_0x83df('0x50')](_0x161be2,_0x593416);if(_0x593416[_0x83df('0x35')]['role']===_0x83df('0x35')){var _0x369e26={'params':{'id':_0x593416['user'][_0x83df('0x51')]},'query':{'section':_0x242e64===_0x83df('0x4c')&&_0x593416[_0x83df('0xf')]['type']==='outbound'?'QueueCampaigns':_[_0x83df('0x4a')](_0x242e64)+'Queues','type':_0x593416[_0x83df('0xf')][_0x83df('0x26')],'nolimit':!![],'sort':'name','filter':_0x593416[_0x83df('0xf')][_0x83df('0x52')]}};return db['UserProfile'][_0x83df('0x3b')](_0x369e26);}return db[_0x264ff3][_0x83df('0x3c')](_0xb817d7);})[_0x83df('0x15')](function(_0x2ba1a9){_0x501cc6[_0x83df('0xa')]=_0x2ba1a9[_0x83df('0xa')];_0x3b1ab9=_0x2ba1a9[_0x83df('0x3d')];return rtq[_0x83df('0x53')](_0x593416,_0x242e64);})[_0x83df('0x15')](function(_0x40d096){_0x4a6f5c=_0x40d096['rows'];return rtq[_0x83df('0x54')](_0x3b1ab9,_0x4a6f5c,_0x242e64,_0x593416[_0x83df('0xf')][_0x83df('0x26')]);})[_0x83df('0x15')](function(_0x3e850a){_0x501cc6[_0x83df('0x3d')]=_0x3e850a;return _0x501cc6;})['then'](respondWithFilteredResult(_0xf4ee78,_0xb817d7))[_0x83df('0x46')](APIHandleError(_0xf4ee78));};
\ No newline at end of file
+var _0xcca7=['pick','resolve','startCase','Queue','key','voice','outbound','dialActive','dialMethod','userProfileId','QueueCampaigns','Queues','name','assign','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../mysqldb','APIBadRequestError','../../errors/api','handleError','undefined','limit','count','offset','status','set','Content-Range','json','getChannels','query','globalQueueFilter','pauseTypeFilter','pause','*pause','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','order','getAgentIdsByQueues','getRealtimeAgents','rows','getAgentIdsByStatus','then','map','User','rawAttributes','fieldName','type','role','agent','getOptions','length','push','sequelize','FIELD(id,','forEach','Pause','where','merge','user','Agents','UserProfile','getResources','findAndCountAll','find','filterAgentAttributes','Status','sortAgentsByStatus','split'];(function(_0x4cfd4a,_0x340a41){var _0x42a03c=function(_0x3f3833){while(--_0x3f3833){_0x4cfd4a['push'](_0x4cfd4a['shift']());}};_0x42a03c(++_0x340a41);}(_0xcca7,0x1aa));var _0x7cca=function(_0x5e39ab,_0x137552){_0x5e39ab=_0x5e39ab-0x0;var _0x21cbce=_0xcca7[_0x5e39ab];return _0x21cbce;};'use strict';var _=require(_0x7cca('0x0'));var util=require(_0x7cca('0x1'));var rta=require(_0x7cca('0x2'));var rtq=require(_0x7cca('0x3'));var qs=require('../../components/parsers/qs');var utils=require('../../config/utils');var db=require(_0x7cca('0x4'))['db'];var APIBadRequestError=require('../../errors/api')[_0x7cca('0x5')];var APIHandleError=require(_0x7cca('0x6'))[_0x7cca('0x7')];function respondWithFilteredResult(_0x312e98,_0x1c6c95){return function(_0xe70805){if(_0xe70805){var _0x5aec51=typeof _0x1c6c95['offset']===_0x7cca('0x8')&&typeof _0x1c6c95[_0x7cca('0x9')]===_0x7cca('0x8');var _0x1e8cb9=_0xe70805[_0x7cca('0xa')];var _0xe800a5=_0x5aec51?0x0:_0x1c6c95[_0x7cca('0xb')];var _0x2b8b62=_0x5aec51?_0xe70805[_0x7cca('0xa')]:_0x1c6c95[_0x7cca('0xb')]+_0x1c6c95['limit'];var _0x302367;if(_0x2b8b62>=_0x1e8cb9){_0x2b8b62=_0x1e8cb9;_0x302367=0xc8;}else{_0x302367=0xce;}_0x312e98[_0x7cca('0xc')](_0x302367);return _0x312e98[_0x7cca('0xd')](_0x7cca('0xe'),_0xe800a5+'-'+_0x2b8b62+'/'+_0x1e8cb9)[_0x7cca('0xf')](_0xe70805);}return null;};}exports['getAgents']=function(_0x2a14cc,_0x41e0a2){var _0x2854c7={'count':0x0,'rows':[]};var _0x4d0d6d={};var _0x54e492;var _0x8ea157=utils[_0x7cca('0x10')]();var _0x27d671;var _0x847cce;var _0x444465=_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x12')];var _0x5a357d=_0x2a14cc[_0x7cca('0x11')]['globalStatusFilter'];var _0x5cd551=_0x2a14cc['query'][_0x7cca('0x13')];var _0xbaf563=_0x5a357d===_0x7cca('0x14')||_0x5a357d===_0x7cca('0x15')?!![]:![];var _0x44294b=[];var _0x5e7c42;var _0xb35e1d;Promise['resolve']()['then'](function(){if(_0x2a14cc['query'][_0x7cca('0x16')]){if(!utils[_0x7cca('0x17')](_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x16')])){throw new APIBadRequestError(util[_0x7cca('0x18')](_0x7cca('0x19'),_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x16')]));}_0x54e492=_0x2a14cc['query'][_0x7cca('0x16')][_0x7cca('0x1a')]();}if(!_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x1b')]||!_0x2a14cc['query'][_0x7cca('0x1b')][_0x7cca('0x1c')](_0x7cca('0x1d'))){_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x1b')]=rta[_0x7cca('0x1e')](_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x1b')]);return;}var _0x4b99b6=rta[_0x7cca('0x1f')](_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x1b')]);_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x1b')]=_0x4b99b6[_0x7cca('0x20')][_0x7cca('0x21')](',');_0x5e7c42=_0x4b99b6[_0x7cca('0x22')];})['then'](function(){if(!_0x444465){return[];}return rta[_0x7cca('0x23')](_0x444465,_0x54e492);})['then'](function(_0xc86c1b){_0x44294b=_0xc86c1b;return rta[_0x7cca('0x24')]();})['then'](function(_0x17b137){_0x847cce=_0x17b137[_0x7cca('0x25')];if((!_0x5a357d||_0xbaf563)&&!_0x5e7c42){return _0x44294b;}if(_0x5e7c42&&!_0x5a357d){return rta['getSortedAgentsIdsByStatus'](_0x847cce,_0x44294b,_0x5e7c42);}else{return rta[_0x7cca('0x26')](_0x847cce,_0x44294b,_0x5a357d);}})[_0x7cca('0x27')](function(_0x100061){_0x44294b=_0x100061;var _0x52fb40=![];if(_0x44294b['length']===0x0){if(_0x444465||_0x5a357d){_0x52fb40=!![];}if(_0xbaf563){_0x52fb40=![];}}if(_0x52fb40){return _0x2854c7;}var _0x41f5bc=_[_0x7cca('0x28')](db[_0x7cca('0x29')][_0x7cca('0x2a')],function(_0x34336c){return{'name':_0x34336c[_0x7cca('0x2b')],'type':_0x34336c[_0x7cca('0x2c')]['key']};});_0x2a14cc['query'][_0x7cca('0x2d')]=_0x7cca('0x2e');_0x2a14cc[_0x7cca('0x11')]['online']=!![];_0x4d0d6d=qs[_0x7cca('0x2f')](_0x41f5bc,_0x2a14cc);_0x4d0d6d['raw']=!![];var _0x2061fe=[];if(_0x44294b[_0x7cca('0x30')]>0x0){_0x2061fe[_0x7cca('0x31')]({'id':{'$in':_0x44294b}});if(_0x5e7c42&&!_0x5a357d){_0xb35e1d=[db[_0x7cca('0x32')]['literal'](_0x7cca('0x33')+_0x44294b+')')];_0x4d0d6d[_0x7cca('0x22')]=_0xb35e1d;}}if(_0xbaf563){_0x8ea157[_0x7cca('0x34')](function(_0x52eaf7){var _0x589542=!![];if(_0x5a357d==='*pause'&&_0x54e492!==_0x52eaf7){_0x589542=![];}_0x2061fe[_0x7cca('0x31')]({[_0x52eaf7+_0x7cca('0x35')]:_0x589542});});if(_0x5cd551){_0x2061fe['push']({'pauseType':_0x5cd551});}}else if(_0x5a357d){_0x8ea157[_0x7cca('0x34')](function(_0xc34146){_0x2061fe[_0x7cca('0x31')]({[_0xc34146+_0x7cca('0x35')]:![]});});}_0x4d0d6d[_0x7cca('0x36')]=_[_0x7cca('0x37')](_0x4d0d6d[_0x7cca('0x36')],{'$and':_0x2061fe});if(_0x2a14cc['user'][_0x7cca('0x2d')]===_0x7cca('0x38')){var _0x4128e5={'params':{'id':_0x2a14cc[_0x7cca('0x38')]['userProfileId']},'query':{'section':_0x7cca('0x39'),'role':_0x7cca('0x2e'),'online':!![],'raw':!![],'ids':_0x44294b,'customSorting':_0xb35e1d}};if(_0xbaf563){_0x4128e5[_0x7cca('0x11')]['extraQueryConditions']=_0x2061fe;}_0x4128e5[_0x7cca('0x11')]=Object['assign'](_0x4128e5[_0x7cca('0x11')],_0x2a14cc[_0x7cca('0x11')]);delete _0x4128e5[_0x7cca('0x11')]['id'];return db[_0x7cca('0x3a')][_0x7cca('0x3b')](_0x4128e5);}return db[_0x7cca('0x29')][_0x7cca('0x3c')](_0x4d0d6d);})[_0x7cca('0x27')](function(_0x3617b8){_0x2854c7['count']=_0x3617b8['count'];_0x27d671=_0x3617b8[_0x7cca('0x25')];return _0x27d671[_0x7cca('0x28')](function(_0x5cb715){var _0x48d87f=_[_0x7cca('0x3d')](_0x847cce,['id',_0x5cb715['id']]);if(_0x48d87f){var _0x2ca9bf=rta[_0x7cca('0x3e')](_0x48d87f);_[_0x7cca('0x37')](_0x5cb715,_0x2ca9bf);}_0x5cb715[_0x7cca('0x1d')]=rta['getAgentStatus'](_0x5cb715);if(_0x5cb715[_0x7cca('0x1d')]['includes']('pause')){_0x8ea157[_0x7cca('0x34')](function(_0x33d069){if(_0x5cb715[_0x33d069+'Pause']){_0x5cb715[_0x33d069+_0x7cca('0x3f')]='pause';}});}return _0x5cb715;});})[_0x7cca('0x27')](function(_0x3edb26){if(!_0x5e7c42||_0xb35e1d){return _0x3edb26;}return rta[_0x7cca('0x40')](_0x3edb26,_0x5e7c42);})['then'](function(_0xb966da){var _0x207250=null;if(_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x20')]){var _0x516774=_0x2a14cc[_0x7cca('0x11')][_0x7cca('0x20')][_0x7cca('0x41')](',');_0x207250=_0xb966da[_0x7cca('0x28')](function(_0x2aa126){return _[_0x7cca('0x42')](_0x2aa126,_0x516774);});}_0x2854c7['rows']=_0x207250||_0xb966da;return _0x2854c7;})['then'](respondWithFilteredResult(_0x41e0a2,_0x4d0d6d))['catch'](APIHandleError(_0x41e0a2));};exports['getQueues']=function(_0x643649,_0x4f2d5d){var _0x51e564={'count':0x0,'rows':[]};var _0x272828={};var _0x258d0b;var _0x2d9a28;var _0x2bf218;Promise[_0x7cca('0x43')]()['then'](function(){if(_0x643649[_0x7cca('0x11')][_0x7cca('0x16')]){if(!utils[_0x7cca('0x17')](_0x643649[_0x7cca('0x11')][_0x7cca('0x16')])){throw new APIBadRequestError(util[_0x7cca('0x18')](_0x7cca('0x19'),_0x643649[_0x7cca('0x11')][_0x7cca('0x16')]));}_0x258d0b=_0x643649[_0x7cca('0x11')][_0x7cca('0x16')]['toLowerCase']();}var _0x504fd7=_[_0x7cca('0x44')](_0x258d0b)+_0x7cca('0x45');var _0x40eb40=_[_0x7cca('0x28')](db[_0x504fd7][_0x7cca('0x2a')],function(_0x461c79){return{'name':_0x461c79[_0x7cca('0x2b')],'type':_0x461c79[_0x7cca('0x2c')][_0x7cca('0x46')]};});if(!_0x643649[_0x7cca('0x11')][_0x7cca('0x20')]){var _0x3eb069=['id','name'];if(_0x258d0b===_0x7cca('0x47')){_0x3eb069[_0x7cca('0x31')](_0x7cca('0x2c'));if(_0x643649[_0x7cca('0x11')][_0x7cca('0x2c')]===_0x7cca('0x48')){_0x3eb069[_0x7cca('0x31')]([_0x7cca('0x49'),_0x7cca('0x4a')]);}}_0x643649[_0x7cca('0x11')][_0x7cca('0x20')]=_0x3eb069[_0x7cca('0x21')](',');}_0x272828=qs[_0x7cca('0x2f')](_0x40eb40,_0x643649);if(_0x643649[_0x7cca('0x38')][_0x7cca('0x2d')]===_0x7cca('0x38')){var _0x45d6ff={'params':{'id':_0x643649[_0x7cca('0x38')][_0x7cca('0x4b')]},'query':{'section':_0x258d0b===_0x7cca('0x47')&&_0x643649[_0x7cca('0x11')][_0x7cca('0x2c')]===_0x7cca('0x48')?_0x7cca('0x4c'):_[_0x7cca('0x44')](_0x258d0b)+_0x7cca('0x4d'),'type':_0x643649['query'][_0x7cca('0x2c')],'nolimit':!![],'sort':_0x7cca('0x4e'),'filter':_0x643649['query']['filter']}};_0x45d6ff['query']=Object[_0x7cca('0x4f')](_0x45d6ff[_0x7cca('0x11')],_0x643649['query']);delete _0x45d6ff[_0x7cca('0x11')]['id'];return db[_0x7cca('0x3a')]['getResources'](_0x45d6ff);}return db[_0x504fd7][_0x7cca('0x3c')](_0x272828);})['then'](function(_0x1aa39b){_0x51e564[_0x7cca('0xa')]=_0x1aa39b[_0x7cca('0xa')];_0x2d9a28=_0x1aa39b[_0x7cca('0x25')];return rtq[_0x7cca('0x50')](_0x643649,_0x258d0b);})[_0x7cca('0x27')](function(_0x286c77){_0x2bf218=_0x286c77[_0x7cca('0x25')];return rtq[_0x7cca('0x51')](_0x2d9a28,_0x2bf218,_0x258d0b,_0x643649[_0x7cca('0x11')][_0x7cca('0x2c')]);})[_0x7cca('0x27')](function(_0xb359da){_0x51e564['rows']=_0xb359da;return _0x51e564;})[_0x7cca('0x27')](respondWithFilteredResult(_0x4f2d5d,_0x272828))['catch'](APIHandleError(_0x4f2d5d));};
\ No newline at end of file
index 28ac664..b051a28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4eea86,_0x12c4a4){var _0x269baa=function(_0x2292be){while(--_0x2292be){_0x4eea86['push'](_0x4eea86['shift']());}};_0x269baa(++_0x12c4a4);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3c9838,_0x435eb1){var _0x24c2ae=function(_0x189d25){while(--_0x189d25){_0x3c9838['push'](_0x3c9838['shift']());}};_0x24c2ae(++_0x435eb1);}(_0xe706,0xa3));var _0x6e70=function(_0x1e5c8d,_0x1bd355){_0x1e5c8d=_0x1e5c8d-0x0;var _0x17f720=_0xe706[_0x1e5c8d];return _0x17f720;};'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 e9d1e75..322b63a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31b=['DATE','sequelize','exports','INTEGER','STRING'];(function(_0x57f54c,_0x4bc190){var _0x143c21=function(_0x2763b8){while(--_0x2763b8){_0x57f54c['push'](_0x57f54c['shift']());}};_0x143c21(++_0x4bc190);}(_0xf31b,0x1a0));var _0xbf31=function(_0xe19595,_0xb2fc3a){_0xe19595=_0xe19595-0x0;var _0x8072c8=_0xf31b[_0xe19595];return _0x8072c8;};'use strict';var Sequelize=require(_0xbf31('0x0'));module[_0xbf31('0x1')]={'state':{'type':Sequelize[_0xbf31('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xbf31('0x3')]},'scheduledat':{'type':Sequelize[_0xbf31('0x4')]},'uniqueid':{'type':Sequelize[_0xbf31('0x3')]},'starttime':{'type':Sequelize[_0xbf31('0x4')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xbf31('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xbf31('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf360=['INTEGER','DATE','STRING','sequelize','exports'];(function(_0x1be3ff,_0x285342){var _0x10bd91=function(_0x27fe9f){while(--_0x27fe9f){_0x1be3ff['push'](_0x1be3ff['shift']());}};_0x10bd91(++_0x285342);}(_0xf360,0x9e));var _0x0f36=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf360[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0f36('0x0'));module[_0x0f36('0x1')]={'state':{'type':Sequelize[_0x0f36('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x0f36('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x0f36('0x3')]},'responsetime':{'type':Sequelize[_0x0f36('0x3')]},'ringtime':{'type':Sequelize[_0x0f36('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x0f36('0x4')]},'membername':{'type':Sequelize[_0x0f36('0x4')]}};
\ No newline at end of file
index 8440500..8f2990a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17fc=['bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','report_agent_preview','lodash','../../config/logger','api'];(function(_0x17727a,_0x2b5635){var _0x288155=function(_0x1d5d1e){while(--_0x1d5d1e){_0x17727a['push'](_0x17727a['shift']());}};_0x288155(++_0x2b5635);}(_0x17fc,0x6b));var _0xc17f=function(_0x2ddb56,_0x5f0480){_0x2ddb56=_0x2ddb56-0x0;var _0x22cd69=_0x17fc[_0x2ddb56];return _0x22cd69;};'use strict';var _=require(_0xc17f('0x0'));var util=require('util');var logger=require(_0xc17f('0x1'))(_0xc17f('0x2'));var moment=require('moment');var BPromise=require(_0xc17f('0x3'));var rp=require(_0xc17f('0x4'));var fs=require('fs');var path=require(_0xc17f('0x5'));var rimraf=require(_0xc17f('0x6'));var config=require(_0xc17f('0x7'));var attributes=require(_0xc17f('0x8'));module['exports']=function(_0x344cb0,_0x434d40){return _0x344cb0['define']('ReportAgentPreview',attributes,{'tableName':_0xc17f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e3b=['lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview'];(function(_0x386129,_0x414a79){var _0x9af1f4=function(_0x57cf06){while(--_0x57cf06){_0x386129['push'](_0x386129['shift']());}};_0x9af1f4(++_0x414a79);}(_0x2e3b,0x1ba));var _0xb2e3=function(_0xe0c176,_0x2ec47f){_0xe0c176=_0xe0c176-0x0;var _0xfd8ae3=_0x2e3b[_0xe0c176];return _0xfd8ae3;};'use strict';var _=require(_0xb2e3('0x0'));var util=require(_0xb2e3('0x1'));var logger=require('../../config/logger')(_0xb2e3('0x2'));var moment=require(_0xb2e3('0x3'));var BPromise=require(_0xb2e3('0x4'));var rp=require(_0xb2e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb2e3('0x6'));var config=require(_0xb2e3('0x7'));var attributes=require(_0xb2e3('0x8'));module[_0xb2e3('0x9')]=function(_0x20845f,_0x27bffa){return _0x20845f[_0xb2e3('0xa')](_0xb2e3('0xb'),attributes,{'tableName':_0xb2e3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1137583..726b489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fe3=['body','options','raw','then','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','info','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','CreateReportAgentPreview','ReportAgentPreview'];(function(_0x4b2892,_0x5546b2){var _0x34aaac=function(_0x30d6ab){while(--_0x30d6ab){_0x4b2892['push'](_0x4b2892['shift']());}};_0x34aaac(++_0x5546b2);}(_0x8fe3,0x163));var _0x38fe=function(_0x2344c7,_0x10b7ee){_0x2344c7=_0x2344c7-0x0;var _0x13f2b5=_0x8fe3[_0x2344c7];return _0x13f2b5;};'use strict';var _=require(_0x38fe('0x0'));var util=require(_0x38fe('0x1'));var moment=require('moment');var BPromise=require(_0x38fe('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38fe('0x3'));var db=require(_0x38fe('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x38fe('0x5'))(_0x38fe('0x6'));var config=require('../../config/environment');var jayson=require(_0x38fe('0x7'));var client=jayson[_0x38fe('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1dff64,_0x18a0eb,_0x106852){return new BPromise(function(_0x1c26e2,_0x4ee3cf){return client[_0x38fe('0x9')](_0x1dff64,_0x106852)['then'](function(_0xffba97){logger[_0x38fe('0xa')](_0x38fe('0xb'),_0x18a0eb,'request\x20sent');logger[_0x38fe('0xc')](_0x38fe('0xd'),_0x18a0eb,_0x38fe('0xe'),JSON[_0x38fe('0xf')](_0xffba97));if(_0xffba97['error']){if(_0xffba97['error'][_0x38fe('0x10')]===0x1f4){logger[_0x38fe('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x18a0eb,_0xffba97[_0x38fe('0x11')][_0x38fe('0x12')]);return _0x4ee3cf(_0xffba97[_0x38fe('0x11')]['message']);}logger['error'](_0x38fe('0xb'),_0x18a0eb,_0xffba97[_0x38fe('0x11')]['message']);return _0x1c26e2(_0xffba97[_0x38fe('0x11')][_0x38fe('0x12')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x18a0eb,_0x38fe('0xe'));_0x1c26e2(_0xffba97[_0x38fe('0x13')][_0x38fe('0x12')]);}})[_0x38fe('0x14')](function(_0xc0687f){logger[_0x38fe('0x11')](_0x38fe('0xb'),_0x18a0eb,_0xc0687f);_0x4ee3cf(_0xc0687f);});});}exports[_0x38fe('0x15')]=function(_0x347d3d){var _0x233e65=this;return new Promise(function(_0x467c97,_0x578f30){return db[_0x38fe('0x16')]['create'](_0x347d3d[_0x38fe('0x17')],{'raw':_0x347d3d[_0x38fe('0x18')]?_0x347d3d[_0x38fe('0x18')][_0x38fe('0x19')]===undefined?!![]:![]:!![]})[_0x38fe('0x1a')](function(_0x2bfd81){logger[_0x38fe('0xa')](_0x38fe('0x15'),_0x347d3d);logger[_0x38fe('0xc')](_0x38fe('0x15'),_0x347d3d,JSON[_0x38fe('0xf')](_0x2bfd81));_0x467c97(_0x2bfd81);})[_0x38fe('0x14')](function(_0x3208b0){logger[_0x38fe('0x11')]('CreateReportAgentPreview',_0x3208b0[_0x38fe('0x12')],_0x347d3d);_0x578f30(_0x233e65['error'](0x1f4,_0x3208b0[_0x38fe('0x12')]));});});};
\ No newline at end of file
+var _0x8e7c=['catch','CreateReportAgentPreview','ReportAgentPreview','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x641451,_0x9c5d0f){var _0x4e57a6=function(_0x174a2a){while(--_0x174a2a){_0x641451['push'](_0x641451['shift']());}};_0x4e57a6(++_0x9c5d0f);}(_0x8e7c,0x129));var _0xc8e7=function(_0x1bea92,_0x1a4394){_0x1bea92=_0x1bea92-0x0;var _0x2a021a=_0x8e7c[_0x1bea92];return _0x2a021a;};'use strict';var _=require(_0xc8e7('0x0'));var util=require(_0xc8e7('0x1'));var moment=require(_0xc8e7('0x2'));var BPromise=require(_0xc8e7('0x3'));var rs=require(_0xc8e7('0x4'));var fs=require('fs');var Redis=require(_0xc8e7('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc8e7('0x6'))(_0xc8e7('0x7'));var config=require(_0xc8e7('0x8'));var jayson=require(_0xc8e7('0x9'));var client=jayson[_0xc8e7('0xa')][_0xc8e7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xddeaa1,_0x27af9f,_0x11c3c3){return new BPromise(function(_0x4a793c,_0x5758ec){return client[_0xc8e7('0xc')](_0xddeaa1,_0x11c3c3)[_0xc8e7('0xd')](function(_0x26e704){logger[_0xc8e7('0xe')](_0xc8e7('0xf'),_0x27af9f,'request\x20sent');logger['debug']('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x27af9f,_0xc8e7('0x10'),JSON[_0xc8e7('0x11')](_0x26e704));if(_0x26e704[_0xc8e7('0x12')]){if(_0x26e704[_0xc8e7('0x12')][_0xc8e7('0x13')]===0x1f4){logger['error'](_0xc8e7('0xf'),_0x27af9f,_0x26e704[_0xc8e7('0x12')][_0xc8e7('0x14')]);return _0x5758ec(_0x26e704[_0xc8e7('0x12')][_0xc8e7('0x14')]);}logger[_0xc8e7('0x12')](_0xc8e7('0xf'),_0x27af9f,_0x26e704[_0xc8e7('0x12')][_0xc8e7('0x14')]);return _0x4a793c(_0x26e704[_0xc8e7('0x12')][_0xc8e7('0x14')]);}else{logger[_0xc8e7('0xe')](_0xc8e7('0xf'),_0x27af9f,_0xc8e7('0x10'));_0x4a793c(_0x26e704[_0xc8e7('0x15')][_0xc8e7('0x14')]);}})[_0xc8e7('0x16')](function(_0x5ba62e){logger['error'](_0xc8e7('0xf'),_0x27af9f,_0x5ba62e);_0x5758ec(_0x5ba62e);});});}exports[_0xc8e7('0x17')]=function(_0x2bdf2c){var _0x9c6c9a=this;return new Promise(function(_0x4493d7,_0x203b6f){return db[_0xc8e7('0x18')]['create'](_0x2bdf2c[_0xc8e7('0x19')],{'raw':_0x2bdf2c[_0xc8e7('0x1a')]?_0x2bdf2c['options'][_0xc8e7('0x1b')]===undefined?!![]:![]:!![]})[_0xc8e7('0xd')](function(_0x5c8bba){logger[_0xc8e7('0xe')](_0xc8e7('0x17'),_0x2bdf2c);logger[_0xc8e7('0x1c')](_0xc8e7('0x17'),_0x2bdf2c,JSON[_0xc8e7('0x11')](_0x5c8bba));_0x4493d7(_0x5c8bba);})['catch'](function(_0x5d5966){logger['error'](_0xc8e7('0x17'),_0x5d5966['message'],_0x2bdf2c);_0x203b6f(_0x9c6c9a['error'](0x1f4,_0x5d5966['message']));});});};
\ No newline at end of file
index 2e4eb50..b29281a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88ca=['/voice/channels','isAuthenticated','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','mailQueues','mailAccounts','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','put','outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','/campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','queueNotify','/mail/queues/:id','post','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','/sms/queues/:id/notify','sms','whatsapp','showWhatsappQueues','/agents/:id/notify','multer','path','express','Router','../../components/auth/service','get'];(function(_0x31600c,_0x16295b){var _0x295cc1=function(_0x1e84cf){while(--_0x1e84cf){_0x31600c['push'](_0x31600c['shift']());}};_0x295cc1(++_0x16295b);}(_0x88ca,0x1cf));var _0xa88c=function(_0x27beea,_0x3bc9f4){_0x27beea=_0x27beea-0x0;var _0x122645=_0x88ca[_0x27beea];return _0x122645;};'use strict';var multer=require(_0xa88c('0x0'));var util=require('util');var path=require(_0xa88c('0x1'));var express=require(_0xa88c('0x2'));var router=express[_0xa88c('0x3')]();var auth=require(_0xa88c('0x4'));var controller=require('./rpc.controller');router[_0xa88c('0x5')](_0xa88c('0x6'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0xa88c('0x5')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xa88c('0x7')](),controller['voiceChannelMixMonitor']);router[_0xa88c('0x5')](_0xa88c('0x8'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x9')]);router['get'](_0xa88c('0xa'),auth['isAuthenticated'](),controller[_0xa88c('0xb')]);router[_0xa88c('0x5')]('/chat/queues',auth['isAuthenticated'](),controller[_0xa88c('0xc')]);router[_0xa88c('0x5')](_0xa88c('0xd'),auth[_0xa88c('0x7')](),controller[_0xa88c('0xe')]);router[_0xa88c('0x5')]('/mail/accounts',auth[_0xa88c('0x7')](),controller[_0xa88c('0xf')]);router[_0xa88c('0x5')]('/openchannel/queues',auth['isAuthenticated'](),controller[_0xa88c('0x10')]);router['get']('/sms/queues',auth[_0xa88c('0x7')](),controller[_0xa88c('0x11')]);router[_0xa88c('0x5')](_0xa88c('0x12'),auth['isAuthenticated'](),controller[_0xa88c('0x13')]);router['get'](_0xa88c('0x14'),auth[_0xa88c('0x7')](),controller['faxQueues']);router[_0xa88c('0x5')](_0xa88c('0x15'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x16')]);router[_0xa88c('0x5')](_0xa88c('0x17'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x18')]);router[_0xa88c('0x5')](_0xa88c('0x19'),auth[_0xa88c('0x7')](),controller['voiceQueuesChannel']);router[_0xa88c('0x5')](_0xa88c('0x1a'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x1b')]);router[_0xa88c('0x5')](_0xa88c('0x1c'),auth[_0xa88c('0x7')](),controller['voiceQueuesChannelRedirect']);router[_0xa88c('0x5')]('/voice/queues/:id',auth['isAuthenticated'](),controller['showVoiceQueues']);router[_0xa88c('0x1d')]('/voice/queues/:id',auth[_0xa88c('0x7')](),controller['updateVoiceQueue']);router['get']('/outbound',auth[_0xa88c('0x7')](),controller[_0xa88c('0x1e')]);router[_0xa88c('0x5')](_0xa88c('0x1f'),auth[_0xa88c('0x7')](),controller['outboundChannels']);router['get'](_0xa88c('0x20'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x21')]);router[_0xa88c('0x1d')](_0xa88c('0x22'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x23')]);router['get'](_0xa88c('0x24'),auth['isAuthenticated'](),controller['telephones']);router['get'](_0xa88c('0x25'),auth[_0xa88c('0x7')](),controller['trunks']);router['get'](_0xa88c('0x26'),auth['isAuthenticated'](),controller['campaigns']);router['get'](_0xa88c('0x27'),auth['isAuthenticated'](),controller['faxAccounts']);router[_0xa88c('0x5')](_0xa88c('0x28'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x29')]);router['get']('/mail/queues/waitinginteractions',auth[_0xa88c('0x7')](),controller[_0xa88c('0x2a')]);router['get'](_0xa88c('0x2b'),auth[_0xa88c('0x7')](),controller['openchannelQueuesWaitingInteractions']);router[_0xa88c('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0xa88c('0x7')](),controller[_0xa88c('0x2c')]);router[_0xa88c('0x5')](_0xa88c('0x2d'),auth[_0xa88c('0x7')](),controller['smsQueuesWaitingInteractions']);router[_0xa88c('0x5')](_0xa88c('0x2e'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x2f')]);router['get'](_0xa88c('0x30'),auth[_0xa88c('0x7')](),controller['faxQueuesWaitingInteractions']);router['post']('/mail/queues/:id/notify',auth[_0xa88c('0x7')](),controller[_0xa88c('0x31')]('mail'));router[_0xa88c('0x5')](_0xa88c('0x32'),auth[_0xa88c('0x7')](),controller['showMailQueues']);router[_0xa88c('0x33')](_0xa88c('0x34'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x31')](_0xa88c('0x35')));router['get'](_0xa88c('0x36'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x37')]);router[_0xa88c('0x33')](_0xa88c('0x38'),auth[_0xa88c('0x7')](),controller['queueNotify']('fax'));router['get'](_0xa88c('0x39'),auth[_0xa88c('0x7')](),controller[_0xa88c('0x3a')]);router[_0xa88c('0x33')](_0xa88c('0x3b'),auth[_0xa88c('0x7')](),controller['queueNotify'](_0xa88c('0x3c')));router[_0xa88c('0x5')](_0xa88c('0x3d'),auth[_0xa88c('0x7')](),controller['showOpenchannelQueues']);router['post'](_0xa88c('0x3e'),auth['isAuthenticated'](),controller[_0xa88c('0x31')](_0xa88c('0x3f')));router['post']('/whatsapp/queues/:id/notify',auth[_0xa88c('0x7')](),controller[_0xa88c('0x31')](_0xa88c('0x40')));router[_0xa88c('0x5')]('/sms/queues/:id',auth[_0xa88c('0x7')](),controller['showSmsQueues']);router[_0xa88c('0x5')]('/whatsapp/queues/:id',auth[_0xa88c('0x7')](),controller[_0xa88c('0x41')]);router[_0xa88c('0x33')](_0xa88c('0x42'),auth[_0xa88c('0x7')](),controller['agentNotify']);module['exports']=router;
\ No newline at end of file
+var _0xf813=['../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','/mail/queues','mailAccounts','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','/agents/:id/capacity','agentCapacity','/telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','openchannel','showOpenchannelQueues','sms','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','path','express'];(function(_0x4ded65,_0xc8d7c1){var _0x5864fb=function(_0x40df9d){while(--_0x40df9d){_0x4ded65['push'](_0x4ded65['shift']());}};_0x5864fb(++_0xc8d7c1);}(_0xf813,0xde));var _0x3f81=function(_0x3c4087,_0x5c764b){_0x3c4087=_0x3c4087-0x0;var _0x23ad1f=_0xf813[_0x3c4087];return _0x23ad1f;};'use strict';var multer=require(_0x3f81('0x0'));var util=require('util');var path=require(_0x3f81('0x1'));var express=require(_0x3f81('0x2'));var router=express['Router']();var auth=require(_0x3f81('0x3'));var controller=require(_0x3f81('0x4'));router[_0x3f81('0x5')](_0x3f81('0x6'),auth[_0x3f81('0x7')](),controller['voiceChannels']);router[_0x3f81('0x5')](_0x3f81('0x8'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x9')]);router[_0x3f81('0x5')](_0x3f81('0xa'),auth['isAuthenticated'](),controller[_0x3f81('0xb')]);router[_0x3f81('0x5')]('/voice/queues',auth['isAuthenticated'](),controller[_0x3f81('0xc')]);router['get'](_0x3f81('0xd'),auth[_0x3f81('0x7')](),controller['chatQueues']);router['get'](_0x3f81('0xe'),auth['isAuthenticated'](),controller['mailQueues']);router[_0x3f81('0x5')]('/mail/accounts',auth[_0x3f81('0x7')](),controller[_0x3f81('0xf')]);router[_0x3f81('0x5')]('/openchannel/queues',auth['isAuthenticated'](),controller[_0x3f81('0x10')]);router[_0x3f81('0x5')](_0x3f81('0x11'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x12')]);router['get'](_0x3f81('0x13'),auth[_0x3f81('0x7')](),controller['whatsappQueues']);router[_0x3f81('0x5')]('/fax/queues',auth[_0x3f81('0x7')](),controller[_0x3f81('0x14')]);router[_0x3f81('0x5')](_0x3f81('0x15'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x16')]);router[_0x3f81('0x5')](_0x3f81('0x17'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x18')]);router[_0x3f81('0x5')](_0x3f81('0x19'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x1a')]);router['get'](_0x3f81('0x1b'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x1c')]);router[_0x3f81('0x5')](_0x3f81('0x1d'),auth[_0x3f81('0x7')](),controller['voiceQueuesChannelRedirect']);router[_0x3f81('0x5')](_0x3f81('0x1e'),auth['isAuthenticated'](),controller['showVoiceQueues']);router[_0x3f81('0x1f')](_0x3f81('0x1e'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x20')]);router[_0x3f81('0x5')](_0x3f81('0x21'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x22')]);router[_0x3f81('0x5')](_0x3f81('0x23'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x24')]);router[_0x3f81('0x5')](_0x3f81('0x25'),auth['isAuthenticated'](),controller['agents']);router[_0x3f81('0x1f')](_0x3f81('0x26'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x27')]);router[_0x3f81('0x5')](_0x3f81('0x28'),auth[_0x3f81('0x7')](),controller['telephones']);router[_0x3f81('0x5')]('/trunks',auth[_0x3f81('0x7')](),controller[_0x3f81('0x29')]);router[_0x3f81('0x5')](_0x3f81('0x2a'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x2b')]);router['get'](_0x3f81('0x2c'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x2d')]);router['get'](_0x3f81('0x2e'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x2f')]);router[_0x3f81('0x5')]('/mail/queues/waitinginteractions',auth[_0x3f81('0x7')](),controller[_0x3f81('0x30')]);router[_0x3f81('0x5')]('/openchannel/queues/waitinginteractions',auth[_0x3f81('0x7')](),controller[_0x3f81('0x31')]);router[_0x3f81('0x5')](_0x3f81('0x32'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x33')]);router['get']('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x3f81('0x34')]);router['get'](_0x3f81('0x35'),auth['isAuthenticated'](),controller[_0x3f81('0x36')]);router[_0x3f81('0x5')]('/fax/queues/waitinginteractions',auth['isAuthenticated'](),controller['faxQueuesWaitingInteractions']);router[_0x3f81('0x37')](_0x3f81('0x38'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x39')](_0x3f81('0x3a')));router[_0x3f81('0x5')](_0x3f81('0x3b'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x3c')]);router[_0x3f81('0x37')](_0x3f81('0x3d'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x39')]('chat'));router[_0x3f81('0x5')](_0x3f81('0x3e'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x3f')]);router[_0x3f81('0x37')](_0x3f81('0x40'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x39')](_0x3f81('0x41')));router[_0x3f81('0x5')]('/fax/queues/:id',auth[_0x3f81('0x7')](),controller['showFaxQueues']);router[_0x3f81('0x37')]('/openchannel/queues/:id/notify',auth['isAuthenticated'](),controller[_0x3f81('0x39')](_0x3f81('0x42')));router[_0x3f81('0x5')]('/openchannel/queues/:id',auth[_0x3f81('0x7')](),controller[_0x3f81('0x43')]);router[_0x3f81('0x37')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0x3f81('0x39')](_0x3f81('0x44')));router['post']('/whatsapp/queues/:id/notify',auth[_0x3f81('0x7')](),controller['queueNotify']('whatsapp'));router[_0x3f81('0x5')](_0x3f81('0x45'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x46')]);router[_0x3f81('0x5')](_0x3f81('0x47'),auth['isAuthenticated'](),controller[_0x3f81('0x48')]);router[_0x3f81('0x37')](_0x3f81('0x49'),auth[_0x3f81('0x7')](),controller[_0x3f81('0x4a')]);module['exports']=router;
\ No newline at end of file
index d8bc61c..43da5df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['http','client','then','error','code','message','result','sendStatus','stack','name','status','isNil','find','rows','voiceChannels','VoiceChannels','query','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','user','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','INTERACTION','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','mailAccounts','MailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','showFaxQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','MessageId','From','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','InteractionId','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','jayson/promise'];(function(_0x3bd360,_0xb34d0e){var _0x2693b5=function(_0xb845cd){while(--_0xb845cd){_0x3bd360['push'](_0x3bd360['shift']());}};_0x2693b5(++_0xb34d0e);}(_0x3e74,0x175));var _0x43e7=function(_0x5c15c8,_0x4925d1){_0x5c15c8=_0x5c15c8-0x0;var _0x876058=_0x3e74[_0x5c15c8];return _0x876058;};'use strict';var BPromise=require(_0x43e7('0x0'));var moment=require('moment');var _=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var db=require(_0x43e7('0x3'))['db'];var logger=require('../../config/logger')('api');var jayson=require(_0x43e7('0x4'));var amiClient=jayson['client'][_0x43e7('0x5')]({'port':0x232a});var mailClient=jayson[_0x43e7('0x6')][_0x43e7('0x5')]({'port':0x232b});var routingClient=jayson[_0x43e7('0x6')][_0x43e7('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){var _0x21f491=_0x3491d6?_0x3491d6:amiClient;return _0x21f491['request'](_0x503698,_0x45a0d1)[_0x43e7('0x7')](function(_0x554d44){if(_0x554d44['error']){if(_0x554d44[_0x43e7('0x8')][_0x43e7('0x9')]===0x1f4){return _0x8528fc(_0x554d44['error'][_0x43e7('0xa')]);}return _0x2ede2d(_0x554d44['error'][_0x43e7('0xa')]);}else{_0x2ede2d(_0x554d44[_0x43e7('0xb')]);}})['catch'](function(_0x3eb206){_0x8528fc(_0x3eb206);});});}function respondWithResult(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xc8;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['status'](_0x2718d3)['json'](_0x3bb83f);}return _0xc960ea[_0x43e7('0xc')](0x194);};}function handleError(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0x1f4;return function(_0x51b974){logger['error'](_0x51b974[_0x43e7('0xd')]);if(_0x51b974[_0x43e7('0xe')]){delete _0x51b974[_0x43e7('0xe')];}_0x21fdd3[_0x43e7('0xf')](_0x44b0bd)['send'](_0x51b974);};}function findById(_0x5c4eaa){return function(_0xdf16c){if(!_[_0x43e7('0x10')](_0x5c4eaa)&&!_[_0x43e7('0x10')](_0xdf16c)&&!_['isNil'](_0xdf16c['rows'])){return _[_0x43e7('0x11')](_0xdf16c[_0x43e7('0x12')],function(_0x9037d3){return _0x9037d3['id']==_0x5c4eaa;});}return null;};}exports[_0x43e7('0x13')]=function(_0x3776f5,_0x1f24fb){return respondWithRpcPromise(_0x43e7('0x14'),_0x3776f5[_0x43e7('0x15')])[_0x43e7('0x7')](respondWithResult(_0x1f24fb,null))[_0x43e7('0x16')](handleError(_0x1f24fb,null));};exports[_0x43e7('0x17')]=function(_0x177ee1,_0x4b5d64){return respondWithRpcPromise(_0x43e7('0x18'),_[_0x43e7('0x19')](_0x177ee1['query'],_0x177ee1[_0x43e7('0x1a')]))[_0x43e7('0x7')](respondWithResult(_0x4b5d64,null))[_0x43e7('0x16')](handleError(_0x4b5d64,null));};exports[_0x43e7('0x1b')]=function(_0x4077fb,_0x2f4cb4){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0x43e7('0x19')](_0x4077fb['query'],_0x4077fb['params']))[_0x43e7('0x7')](respondWithResult(_0x2f4cb4,null))[_0x43e7('0x16')](handleError(_0x2f4cb4,null));};exports['voiceQueues']=function(_0x1f0673,_0x4ca5cf){return respondWithRpcPromise(_0x43e7('0x1c'),_0x1f0673['query'])[_0x43e7('0x7')](respondWithResult(_0x4ca5cf,null))[_0x43e7('0x16')](handleError(_0x4ca5cf,null));};exports[_0x43e7('0x1d')]=function(_0x405f85,_0x51f4d7){return respondWithRpcPromise('VoiceQueues',_0x405f85[_0x43e7('0x15')])['then'](findById(_0x405f85[_0x43e7('0x1a')]['id']))[_0x43e7('0x7')](respondWithResult(_0x51f4d7,null))[_0x43e7('0x16')](handleError(_0x51f4d7,null));};exports[_0x43e7('0x1e')]=function(_0x5087d7,_0x33a1a5){return respondWithRpcPromise(_0x43e7('0x1f'),_[_0x43e7('0x19')](_0x5087d7[_0x43e7('0x20')],_0x5087d7[_0x43e7('0x1a')]))[_0x43e7('0x7')](respondWithResult(_0x33a1a5,null))[_0x43e7('0x16')](handleError(_0x33a1a5,null));};exports[_0x43e7('0x21')]=function(_0x3bf475,_0x35dbcd){return respondWithRpcPromise(_0x43e7('0x22'),_[_0x43e7('0x19')](_0x3bf475[_0x43e7('0x15')],_0x3bf475[_0x43e7('0x1a')]))['then'](respondWithResult(_0x35dbcd,null))[_0x43e7('0x16')](handleError(_0x35dbcd,null));};exports[_0x43e7('0x23')]=function(_0x3b8f78,_0x183c81){return respondWithRpcPromise(_0x43e7('0x24'),_0x3b8f78['query'])[_0x43e7('0x7')](respondWithResult(_0x183c81,null))[_0x43e7('0x16')](handleError(_0x183c81,null));};exports[_0x43e7('0x25')]=function(_0x3f280d,_0x4c61b9){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x3f280d[_0x43e7('0x15')],_0x3f280d[_0x43e7('0x1a')]))[_0x43e7('0x7')](respondWithResult(_0x4c61b9,null))[_0x43e7('0x16')](handleError(_0x4c61b9,null));};exports[_0x43e7('0x26')]=function(_0xde7ed,_0x485c6c){return respondWithRpcPromise('VoiceQueuesChannelHangup',_['merge'](_0xde7ed['query'],_0xde7ed['params']))['then'](respondWithResult(_0x485c6c,null))['catch'](handleError(_0x485c6c,null));};exports[_0x43e7('0x27')]=function(_0x49cda6,_0x2b4bfd){return respondWithRpcPromise(_0x43e7('0x28'),_[_0x43e7('0x19')](_0x49cda6[_0x43e7('0x15')],_0x49cda6[_0x43e7('0x1a')]))[_0x43e7('0x7')](respondWithResult(_0x2b4bfd,null))[_0x43e7('0x16')](handleError(_0x2b4bfd,null));};exports['outbound']=function(_0x5332d9,_0x5d84f4){return respondWithRpcPromise(_0x43e7('0x29'),_0x5332d9[_0x43e7('0x15')])[_0x43e7('0x7')](respondWithResult(_0x5d84f4,null))[_0x43e7('0x16')](handleError(_0x5d84f4,null));};exports[_0x43e7('0x2a')]=function(_0x1ed538,_0x1d4589){return respondWithRpcPromise(_0x43e7('0x2b'),_0x1ed538['query'])[_0x43e7('0x7')](respondWithResult(_0x1d4589,null))[_0x43e7('0x16')](handleError(_0x1d4589,null));};exports['agents']=function(_0x2d54c1,_0x4c0c7a){var _0x44d8e4;return respondWithRpcPromise(_0x43e7('0x2c'),_0x2d54c1[_0x43e7('0x15')])[_0x43e7('0x7')](function(_0x35ac85){_0x44d8e4=_0x35ac85;return respondWithRpcPromise(_0x43e7('0x2c'),_0x2d54c1['query'],routingClient);})['then'](function(_0x30dfa9){return _[_0x43e7('0x19')]({},_0x30dfa9,_0x44d8e4);})[_0x43e7('0x7')](respondWithResult(_0x4c0c7a,null))[_0x43e7('0x16')](handleError(_0x4c0c7a,null));};exports[_0x43e7('0x2d')]=function(_0x4a4a85,_0x32a451){if(_0x4a4a85[_0x43e7('0x20')]&&_0x4a4a85['body'][_0x43e7('0x2e')]&&_0x4a4a85['user']&&_0x4a4a85[_0x43e7('0x2f')]['name']){for(var _0x3d81ae in _0x4a4a85[_0x43e7('0x20')][_0x43e7('0x2e')]){if(_0x4a4a85[_0x43e7('0x20')]['interaction']['hasOwnProperty'](_0x3d81ae)){db[_0x43e7('0x30')][_0x43e7('0x31')]({'where':{'channel':_0x3d81ae,'membername':_0x4a4a85[_0x43e7('0x2f')][_0x43e7('0xe')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x4a4a85['body']['interaction'][_0x3d81ae]&&_0x4a4a85[_0x43e7('0x20')]['interaction'][_0x3d81ae][_0x43e7('0x32')]?{'$notIn':_0x4a4a85['body']['interaction'][_0x3d81ae]}:{'$ne':null}}})[_0x43e7('0x7')](function(_0x5ee1c5){var _0x2de14f=moment()[_0x43e7('0x33')](_0x43e7('0x34'));for(var _0x99b9e1=0x0,_0x4fc5e8=_0x5ee1c5[_0x43e7('0x32')];_0x99b9e1<_0x4fc5e8;_0x99b9e1+=0x1){_0x5ee1c5[_0x99b9e1][_0x43e7('0x35')]({'exitAt':_0x2de14f});}});for(var _0x23a611=0x0;_0x23a611<_0x4a4a85[_0x43e7('0x20')][_0x43e7('0x2e')][_0x3d81ae][_0x43e7('0x32')];_0x23a611+=0x1){db['MemberReport']['findOrCreate']({'where':{'channel':_0x3d81ae,'membername':_0x4a4a85[_0x43e7('0x2f')][_0x43e7('0xe')],'type':_0x43e7('0x36'),'uniqueid':_0x4a4a85['body']['interaction'][_0x3d81ae][_0x23a611],'exitAt':null},'defaults':{'channel':_0x3d81ae,'membername':_0x4a4a85['user'][_0x43e7('0xe')],'interface':_[_0x43e7('0x10')](_0x4a4a85['user'][_0x43e7('0x37')])?util[_0x43e7('0x33')](_0x43e7('0x38'),_0x4a4a85['user']['name']):_0x4a4a85['user']['interface'],'type':_0x43e7('0x36'),'enterAt':moment()[_0x43e7('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x43e7('0x39'),'internal':_0x4a4a85[_0x43e7('0x2f')][_0x43e7('0x3a')],'uniqueid':_0x4a4a85[_0x43e7('0x20')]['interaction'][_0x3d81ae][_0x23a611]}});}}}}return respondWithRpcPromise(_0x43e7('0x3b'),{'id':_0x4a4a85['params']['id'],'capacity':_0x4a4a85['body'][_0x43e7('0x3c')]},routingClient)[_0x43e7('0x7')](respondWithResult(_0x32a451,null))[_0x43e7('0x16')](handleError(_0x32a451,null));};exports[_0x43e7('0x3d')]=function(_0x13503c,_0x2351cf){return respondWithRpcPromise(_0x43e7('0x3e'),_0x13503c[_0x43e7('0x15')])[_0x43e7('0x7')](respondWithResult(_0x2351cf,null))[_0x43e7('0x16')](handleError(_0x2351cf,null));};exports['trunks']=function(_0x119d34,_0x46c910){return respondWithRpcPromise('Trunks',_0x119d34[_0x43e7('0x15')])['then'](respondWithResult(_0x46c910,null))[_0x43e7('0x16')](handleError(_0x46c910,null));};exports[_0x43e7('0x3f')]=function(_0x34e2ec,_0x1f561f){return respondWithRpcPromise(_0x43e7('0x40'),_0x34e2ec['query'])['then'](respondWithResult(_0x1f561f,null))[_0x43e7('0x16')](handleError(_0x1f561f,null));};exports[_0x43e7('0x41')]=function(_0x399942,_0x29c53d){return respondWithRpcPromise(_0x43e7('0x42'),_0x399942[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](respondWithResult(_0x29c53d,null))[_0x43e7('0x16')](handleError(_0x29c53d,null));};exports[_0x43e7('0x43')]=function(_0x24e758,_0x312306){return respondWithRpcPromise('ChatQueues',_0x24e758[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](findById(_0x24e758['params']['id']))[_0x43e7('0x7')](respondWithResult(_0x312306,null))[_0x43e7('0x16')](handleError(_0x312306,null));};exports[_0x43e7('0x44')]=function(_0x558d54,_0x5d63c6){return respondWithRpcPromise(_0x43e7('0x45'),_0x558d54[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0x5d63c6,null))[_0x43e7('0x16')](handleError(_0x5d63c6,null));};exports['showMailQueues']=function(_0x49a6ce,_0x1fa3f6){return respondWithRpcPromise(_0x43e7('0x45'),_0x49a6ce[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](findById(_0x49a6ce[_0x43e7('0x1a')]['id']))['then'](respondWithResult(_0x1fa3f6,null))[_0x43e7('0x16')](handleError(_0x1fa3f6,null));};exports[_0x43e7('0x46')]=function(_0x4d89bd,_0x20283b){return respondWithRpcPromise(_0x43e7('0x47'),_0x4d89bd[_0x43e7('0x15')],mailClient)['then'](respondWithResult(_0x20283b,null))['catch'](handleError(_0x20283b,null));};exports['openchannelQueues']=function(_0x2ada55,_0x4058ce){return respondWithRpcPromise(_0x43e7('0x48'),_0x2ada55[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0x4058ce,null))['catch'](handleError(_0x4058ce,null));};exports[_0x43e7('0x49')]=function(_0x8b50bb,_0x140438){return respondWithRpcPromise(_0x43e7('0x48'),_0x8b50bb['query'],routingClient)[_0x43e7('0x7')](findById(_0x8b50bb[_0x43e7('0x1a')]['id']))[_0x43e7('0x7')](respondWithResult(_0x140438,null))[_0x43e7('0x16')](handleError(_0x140438,null));};exports[_0x43e7('0x4a')]=function(_0xd41e79,_0x4665db){return respondWithRpcPromise(_0x43e7('0x4b'),_0xd41e79[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](respondWithResult(_0x4665db,null))[_0x43e7('0x16')](handleError(_0x4665db,null));};exports['showSmsQueues']=function(_0x5f3824,_0x2b0711){return respondWithRpcPromise('SmsQueues',_0x5f3824['query'],routingClient)['then'](findById(_0x5f3824[_0x43e7('0x1a')]['id']))[_0x43e7('0x7')](respondWithResult(_0x2b0711,null))['catch'](handleError(_0x2b0711,null));};exports[_0x43e7('0x4c')]=function(_0x135791,_0x1d8438){return respondWithRpcPromise('WhatsappQueues',_0x135791[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](respondWithResult(_0x1d8438,null))[_0x43e7('0x16')](handleError(_0x1d8438,null));};exports[_0x43e7('0x4d')]=function(_0x2f43d7,_0x472a19){return respondWithRpcPromise(_0x43e7('0x4e'),_0x2f43d7['query'],routingClient)[_0x43e7('0x7')](findById(_0x2f43d7[_0x43e7('0x1a')]['id']))[_0x43e7('0x7')](respondWithResult(_0x472a19,null))['catch'](handleError(_0x472a19,null));};exports['faxQueues']=function(_0x30377a,_0x5c3ad8){return respondWithRpcPromise('FaxQueues',_0x30377a[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](respondWithResult(_0x5c3ad8,null))['catch'](handleError(_0x5c3ad8,null));};exports[_0x43e7('0x4f')]=function(_0x28b21d,_0x1e2fed){return respondWithRpcPromise(_0x43e7('0x50'),_0x28b21d[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](findById(_0x28b21d[_0x43e7('0x1a')]['id']))['then'](respondWithResult(_0x1e2fed,null))[_0x43e7('0x16')](handleError(_0x1e2fed,null));};exports[_0x43e7('0x51')]=function(_0x4e5956,_0x418213){return respondWithRpcPromise('FaxAccounts',_0x4e5956[_0x43e7('0x15')])[_0x43e7('0x7')](respondWithResult(_0x418213,null))[_0x43e7('0x16')](handleError(_0x418213,null));};exports[_0x43e7('0x52')]=function(_0x506361,_0x2d25b5){return respondWithRpcPromise(_0x43e7('0x53'),_0x506361[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0x2d25b5,null))[_0x43e7('0x16')](handleError(_0x2d25b5,null));};exports[_0x43e7('0x54')]=function(_0x219dc6,_0x703a30){return respondWithRpcPromise(_0x43e7('0x55'),_0x219dc6['query'],routingClient)[_0x43e7('0x7')](respondWithResult(_0x703a30,null))[_0x43e7('0x16')](handleError(_0x703a30,null));};exports[_0x43e7('0x56')]=function(_0x2499ef,_0x433d3c){return respondWithRpcPromise(_0x43e7('0x57'),_0x2499ef[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0x433d3c,null))['catch'](handleError(_0x433d3c,null));};exports[_0x43e7('0x58')]=function(_0x536477,_0x550036){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x536477[_0x43e7('0x15')],routingClient)[_0x43e7('0x7')](function(_0x230fda){if(_0x536477[_0x43e7('0x15')][_0x43e7('0x59')]!==undefined){var _0x1ae0c8=_(_0x230fda['rows'])[_0x43e7('0x5a')]([_0x536477[_0x43e7('0x15')][_0x43e7('0x59')],_0x536477['params']['id']])[_0x43e7('0x5b')](_0x43e7('0x5c'))[_0x43e7('0x5d')]()[_0x43e7('0x5e')]();return _0x230fda[_0x43e7('0x12')][_0x43e7('0x5a')](function(_0x1d4a29){return _0x1ae0c8[_0x43e7('0x5f')](_0x1d4a29['queue_id'])>-0x1;});}else{return _0x230fda['rows']['filter'](function(_0x156074){return _0x156074[_0x43e7('0x5c')]===parseInt(_0x536477['params']['id']);});}})[_0x43e7('0x7')](respondWithResult(_0x550036,null))[_0x43e7('0x16')](handleError(_0x550036,null));};exports[_0x43e7('0x60')]=function(_0x8e60f1,_0x5a5565){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x8e60f1['query'],routingClient)[_0x43e7('0x7')](respondWithResult(_0x5a5565,null))[_0x43e7('0x16')](handleError(_0x5a5565,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x58cbb7,_0x21adf7){return respondWithRpcPromise(_0x43e7('0x61'),_0x58cbb7[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0x21adf7,null))[_0x43e7('0x16')](handleError(_0x21adf7,null));};exports[_0x43e7('0x62')]=function(_0x401654,_0xb04082){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x401654[_0x43e7('0x15')],routingClient)['then'](respondWithResult(_0xb04082,null))[_0x43e7('0x16')](handleError(_0xb04082,null));};exports[_0x43e7('0x63')]=function(_0x24a168){return function(_0x90667c,_0xa7cb2c){var _0x45adef,_0x126133;var _0x5e8d4e=_[_0x43e7('0x64')](_0x24a168);var _0x40257e=_0x24a168===_0x43e7('0x65')?_0x43e7('0x66'):'Account';return db[_0x5e8d4e+'Queue']['findOne']({'raw':!![],'where':{'id':_0x90667c[_0x43e7('0x1a')]['id']}})['then'](function(_0x240f0d){if(_[_0x43e7('0x10')](_0x240f0d)){throw new Error(_0x5e8d4e+_0x43e7('0x67'));}_0x45adef=_0x240f0d;return db[_0x5e8d4e+_0x43e7('0x68')][_0x43e7('0x69')]({'where':{'id':_0x90667c[_0x43e7('0x20')][_0x43e7('0x6a')]},'include':[{'model':db[_0x5e8d4e+_0x43e7('0x6b')],'as':_0x43e7('0x6b')},{'model':db[_0x5e8d4e+_0x40257e],'as':_0x43e7('0x6c')}]});})[_0x43e7('0x7')](function(_0x5b3565){if(_[_0x43e7('0x10')](_0x5b3565)){throw new Error(_0x5e8d4e+_0x43e7('0x6d'));}_0x126133=_0x5b3565;return _0x5b3565[_0x43e7('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0x43e7('0x7')](function(){var _0x206e54={'uniqueid':_0x24a168+'.'+_0x126133['id']+'.'+_0x126133['Interaction']['id'],'FromUserId':_0x90667c['user']['id'],'type':_0x43e7('0x6f')};_0x206e54[_0x5e8d4e+_0x43e7('0x70')]=_0x126133['id'];_0x206e54[_0x5e8d4e+'InteractionId']=_0x126133[_0x43e7('0x6b')]['id'];_0x206e54[_0x43e7('0x71')+_0x5e8d4e+_0x40257e+'Id']=_0x126133['Account']['id'];_0x206e54['To'+_0x5e8d4e+'QueueId']=_0x45adef['id'];return db[_0x5e8d4e+_0x43e7('0x72')][_0x43e7('0x73')](_0x206e54);})[_0x43e7('0x7')](function(){return respondWithRpcPromise(_0x43e7('0x74'),{'channel':_0x24a168,'interaction':_0x126133[_0x43e7('0x6b')],'message':_0x126133,'account':_0x126133['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x45adef[_0x43e7('0xe')]+','+(_0x126133[_0x43e7('0x6c')][_0x43e7('0x75')]||0x12c),'interval':_0x43e7('0x76')}]},routingClient);})['then'](respondWithResult(_0xa7cb2c,null))[_0x43e7('0x16')](handleError(_0xa7cb2c,null));};};exports[_0x43e7('0x77')]=function(_0x1ed590,_0x15ee83){var _0x5bc060,_0x3a4962;if(_[_0x43e7('0x10')](_0x1ed590[_0x43e7('0x20')][_0x43e7('0x78')])){throw new Error(_0x43e7('0x79'));}var _0x4ef289=_0x1ed590[_0x43e7('0x20')][_0x43e7('0x78')];var _0x509d8d=_[_0x43e7('0x64')](_0x4ef289);var _0x2ca6fb=_0x4ef289===_0x43e7('0x65')?_0x43e7('0x66'):'Account';return db[_0x43e7('0x7a')]['findOne']({'raw':!![],'where':{'id':_0x1ed590[_0x43e7('0x1a')]['id'],'role':_0x43e7('0x39')}})[_0x43e7('0x7')](function(_0x2614ff){if(_[_0x43e7('0x10')](_0x2614ff)){throw new Error(_0x43e7('0x7b'));}_0x5bc060=_0x2614ff;return db[_0x509d8d+_0x43e7('0x68')][_0x43e7('0x69')]({'where':{'id':_0x1ed590[_0x43e7('0x20')]['messageId']},'include':[{'model':db[_0x509d8d+_0x43e7('0x6b')],'as':_0x43e7('0x6b')},{'model':db[_0x509d8d+_0x2ca6fb],'as':_0x43e7('0x6c')}]});})[_0x43e7('0x7')](function(_0x56593f){if(_['isNil'](_0x56593f)){throw new Error(_0x509d8d+_0x43e7('0x6d'));}_0x3a4962=_0x56593f;return _0x56593f[_0x43e7('0x6e')]({'read':0x0,'readAt':null,'UserId':null});})[_0x43e7('0x7')](function(){var _0x4d30f7={'uniqueid':_0x4ef289+'.'+_0x3a4962['id']+'.'+_0x3a4962[_0x43e7('0x6b')]['id'],'FromUserId':_0x1ed590['user']['id'],'type':'queue','ToUserId':_0x5bc060['id']};_0x4d30f7[_0x509d8d+'MessageId']=_0x3a4962['id'];_0x4d30f7[_0x509d8d+_0x43e7('0x7c')]=_0x3a4962['Interaction']['id'];_0x4d30f7[_0x43e7('0x71')+_0x509d8d+_0x2ca6fb+'Id']=_0x3a4962[_0x43e7('0x6c')]['id'];return db[_0x509d8d+_0x43e7('0x72')][_0x43e7('0x73')](_0x4d30f7);})[_0x43e7('0x7')](function(){return respondWithRpcPromise('Start',{'channel':_0x4ef289,'interaction':_0x3a4962['Interaction'],'message':_0x3a4962,'account':_0x3a4962[_0x43e7('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':_0x43e7('0x39'),'appdata':_0x5bc060['name']+','+(_0x3a4962[_0x43e7('0x6c')][_0x43e7('0x7d')]||0x12c),'interval':_0x43e7('0x76')}]},routingClient);})[_0x43e7('0x7')](respondWithResult(_0x15ee83,null))[_0x43e7('0x16')](handleError(_0x15ee83,null));};
\ No newline at end of file
+var _0x904b=['showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','*,*,*,*','channel','User','Agent\x20not\x20found','From','create','Start','agentTransferTimeout','moment','util','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','error','code','message','result','catch','status','json','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','OutboundChannels','agents','Agents','body','user','interaction','hasOwnProperty','MemberReport','INTERACTION','updateAttributes','length','findOrCreate','interface','format','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','capacity','telephones','Telephones','trunks','Trunks','campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues'];(function(_0x1ebe90,_0x5d29fc){var _0x447c82=function(_0x1c2646){while(--_0x1c2646){_0x1ebe90['push'](_0x1ebe90['shift']());}};_0x447c82(++_0x5d29fc);}(_0x904b,0xb6));var _0xb904=function(_0x2f3e97,_0x24abcc){_0x2f3e97=_0x2f3e97-0x0;var _0x4b918c=_0x904b[_0x2f3e97];return _0x4b918c;};'use strict';var BPromise=require('bluebird');var moment=require(_0xb904('0x0'));var _=require('lodash');var util=require(_0xb904('0x1'));var db=require(_0xb904('0x2'))['db'];var logger=require(_0xb904('0x3'))('api');var jayson=require(_0xb904('0x4'));var amiClient=jayson[_0xb904('0x5')][_0xb904('0x6')]({'port':0x232a});var mailClient=jayson['client']['http']({'port':0x232b});var routingClient=jayson[_0xb904('0x5')][_0xb904('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x580125,_0xb407fd,_0x5012f3){return new BPromise(function(_0x3a329e,_0x408cbf){var _0x789fa1=_0x5012f3?_0x5012f3:amiClient;return _0x789fa1[_0xb904('0x7')](_0x580125,_0xb407fd)[_0xb904('0x8')](function(_0x523af6){if(_0x523af6[_0xb904('0x9')]){if(_0x523af6['error'][_0xb904('0xa')]===0x1f4){return _0x408cbf(_0x523af6[_0xb904('0x9')][_0xb904('0xb')]);}return _0x3a329e(_0x523af6['error'][_0xb904('0xb')]);}else{_0x3a329e(_0x523af6[_0xb904('0xc')]);}})[_0xb904('0xd')](function(_0xef5a89){_0x408cbf(_0xef5a89);});});}function respondWithResult(_0x44c7ab,_0x3c95cd){_0x3c95cd=_0x3c95cd||0xc8;return function(_0x37abc1){if(_0x37abc1){return _0x44c7ab[_0xb904('0xe')](_0x3c95cd)[_0xb904('0xf')](_0x37abc1);}return _0x44c7ab[_0xb904('0x10')](0x194);};}function handleError(_0x1cc90a,_0x4c6201){_0x4c6201=_0x4c6201||0x1f4;return function(_0x4c83a2){logger['error'](_0x4c83a2[_0xb904('0x11')]);if(_0x4c83a2[_0xb904('0x12')]){delete _0x4c83a2[_0xb904('0x12')];}_0x1cc90a[_0xb904('0xe')](_0x4c6201)[_0xb904('0x13')](_0x4c83a2);};}function findById(_0x43b571){return function(_0x2f872f){if(!_['isNil'](_0x43b571)&&!_['isNil'](_0x2f872f)&&!_[_0xb904('0x14')](_0x2f872f[_0xb904('0x15')])){return _[_0xb904('0x16')](_0x2f872f['rows'],function(_0x512736){return _0x512736['id']==_0x43b571;});}return null;};}exports[_0xb904('0x17')]=function(_0x270795,_0x34e7f4){return respondWithRpcPromise(_0xb904('0x18'),_0x270795[_0xb904('0x19')])[_0xb904('0x8')](respondWithResult(_0x34e7f4,null))['catch'](handleError(_0x34e7f4,null));};exports[_0xb904('0x1a')]=function(_0x7e36c,_0x4197c0){return respondWithRpcPromise(_0xb904('0x1b'),_[_0xb904('0x1c')](_0x7e36c[_0xb904('0x19')],_0x7e36c[_0xb904('0x1d')]))[_0xb904('0x8')](respondWithResult(_0x4197c0,null))[_0xb904('0xd')](handleError(_0x4197c0,null));};exports[_0xb904('0x1e')]=function(_0x4b1937,_0x51fdff){return respondWithRpcPromise(_0xb904('0x1f'),_[_0xb904('0x1c')](_0x4b1937['query'],_0x4b1937['params']))[_0xb904('0x8')](respondWithResult(_0x51fdff,null))[_0xb904('0xd')](handleError(_0x51fdff,null));};exports[_0xb904('0x20')]=function(_0x2aceb4,_0x466a65){return respondWithRpcPromise(_0xb904('0x21'),_0x2aceb4[_0xb904('0x19')])['then'](respondWithResult(_0x466a65,null))[_0xb904('0xd')](handleError(_0x466a65,null));};exports[_0xb904('0x22')]=function(_0x26a376,_0x3ddd0e){return respondWithRpcPromise(_0xb904('0x21'),_0x26a376['query'])[_0xb904('0x8')](findById(_0x26a376[_0xb904('0x1d')]['id']))[_0xb904('0x8')](respondWithResult(_0x3ddd0e,null))[_0xb904('0xd')](handleError(_0x3ddd0e,null));};exports[_0xb904('0x23')]=function(_0x5f5567,_0x566e50){return respondWithRpcPromise('UpdateVoiceQueue',_[_0xb904('0x1c')](_0x5f5567['body'],_0x5f5567[_0xb904('0x1d')]))[_0xb904('0x8')](respondWithResult(_0x566e50,null))[_0xb904('0xd')](handleError(_0x566e50,null));};exports[_0xb904('0x24')]=function(_0x5f17e3,_0x100084){return respondWithRpcPromise(_0xb904('0x25'),_[_0xb904('0x1c')](_0x5f17e3[_0xb904('0x19')],_0x5f17e3[_0xb904('0x1d')]))['then'](respondWithResult(_0x100084,null))[_0xb904('0xd')](handleError(_0x100084,null));};exports['voiceQueuesChannels']=function(_0x2f4ba2,_0x3dde24){return respondWithRpcPromise(_0xb904('0x26'),_0x2f4ba2[_0xb904('0x19')])['then'](respondWithResult(_0x3dde24,null))[_0xb904('0xd')](handleError(_0x3dde24,null));};exports[_0xb904('0x27')]=function(_0x371961,_0x15b819){return respondWithRpcPromise(_0xb904('0x28'),_[_0xb904('0x1c')](_0x371961['query'],_0x371961[_0xb904('0x1d')]))[_0xb904('0x8')](respondWithResult(_0x15b819,null))[_0xb904('0xd')](handleError(_0x15b819,null));};exports['voiceQueuesChannelHangup']=function(_0xfb3b75,_0x44c8a5){return respondWithRpcPromise(_0xb904('0x29'),_[_0xb904('0x1c')](_0xfb3b75['query'],_0xfb3b75['params']))[_0xb904('0x8')](respondWithResult(_0x44c8a5,null))[_0xb904('0xd')](handleError(_0x44c8a5,null));};exports[_0xb904('0x2a')]=function(_0x471531,_0x209a6b){return respondWithRpcPromise(_0xb904('0x2b'),_['merge'](_0x471531[_0xb904('0x19')],_0x471531[_0xb904('0x1d')]))[_0xb904('0x8')](respondWithResult(_0x209a6b,null))[_0xb904('0xd')](handleError(_0x209a6b,null));};exports[_0xb904('0x2c')]=function(_0x2f78e8,_0x4be0a0){return respondWithRpcPromise('Outbound',_0x2f78e8[_0xb904('0x19')])['then'](respondWithResult(_0x4be0a0,null))[_0xb904('0xd')](handleError(_0x4be0a0,null));};exports['outboundChannels']=function(_0x1cb7e0,_0x3613b6){return respondWithRpcPromise(_0xb904('0x2d'),_0x1cb7e0[_0xb904('0x19')])[_0xb904('0x8')](respondWithResult(_0x3613b6,null))[_0xb904('0xd')](handleError(_0x3613b6,null));};exports[_0xb904('0x2e')]=function(_0x6bb506,_0x4e9bea){var _0x5daca1;return respondWithRpcPromise(_0xb904('0x2f'),_0x6bb506[_0xb904('0x19')])[_0xb904('0x8')](function(_0x6003e1){_0x5daca1=_0x6003e1;return respondWithRpcPromise('Agents',_0x6bb506[_0xb904('0x19')],routingClient);})[_0xb904('0x8')](function(_0x52ae00){return _[_0xb904('0x1c')]({},_0x52ae00,_0x5daca1);})[_0xb904('0x8')](respondWithResult(_0x4e9bea,null))[_0xb904('0xd')](handleError(_0x4e9bea,null));};exports['agentCapacity']=function(_0xbbffd0,_0x3461e4){if(_0xbbffd0['body']&&_0xbbffd0[_0xb904('0x30')]['interaction']&&_0xbbffd0[_0xb904('0x31')]&&_0xbbffd0['user'][_0xb904('0x12')]){for(var _0x32fc9a in _0xbbffd0[_0xb904('0x30')]['interaction']){if(_0xbbffd0[_0xb904('0x30')][_0xb904('0x32')][_0xb904('0x33')](_0x32fc9a)){db[_0xb904('0x34')]['findAll']({'where':{'channel':_0x32fc9a,'membername':_0xbbffd0[_0xb904('0x31')][_0xb904('0x12')],'type':_0xb904('0x35'),'exitAt':null,'uniqueid':_0xbbffd0['body']['interaction'][_0x32fc9a]&&_0xbbffd0[_0xb904('0x30')][_0xb904('0x32')][_0x32fc9a]['length']?{'$notIn':_0xbbffd0['body'][_0xb904('0x32')][_0x32fc9a]}:{'$ne':null}}})[_0xb904('0x8')](function(_0x391d0c){var _0x5839ad=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x537b27=0x0,_0x1288e1=_0x391d0c['length'];_0x537b27<_0x1288e1;_0x537b27+=0x1){_0x391d0c[_0x537b27][_0xb904('0x36')]({'exitAt':_0x5839ad});}});for(var _0x3eacc6=0x0;_0x3eacc6<_0xbbffd0[_0xb904('0x30')][_0xb904('0x32')][_0x32fc9a][_0xb904('0x37')];_0x3eacc6+=0x1){db[_0xb904('0x34')][_0xb904('0x38')]({'where':{'channel':_0x32fc9a,'membername':_0xbbffd0[_0xb904('0x31')][_0xb904('0x12')],'type':_0xb904('0x35'),'uniqueid':_0xbbffd0[_0xb904('0x30')][_0xb904('0x32')][_0x32fc9a][_0x3eacc6],'exitAt':null},'defaults':{'channel':_0x32fc9a,'membername':_0xbbffd0['user'][_0xb904('0x12')],'interface':_[_0xb904('0x14')](_0xbbffd0[_0xb904('0x31')][_0xb904('0x39')])?util['format']('SIP/%s',_0xbbffd0[_0xb904('0x31')][_0xb904('0x12')]):_0xbbffd0['user'][_0xb904('0x39')],'type':'INTERACTION','enterAt':moment()[_0xb904('0x3a')](_0xb904('0x3b')),'role':_0xb904('0x3c'),'internal':_0xbbffd0[_0xb904('0x31')][_0xb904('0x3d')],'uniqueid':_0xbbffd0[_0xb904('0x30')]['interaction'][_0x32fc9a][_0x3eacc6]}});}}}}return respondWithRpcPromise(_0xb904('0x3e'),{'id':_0xbbffd0['params']['id'],'capacity':_0xbbffd0[_0xb904('0x30')][_0xb904('0x3f')]},routingClient)['then'](respondWithResult(_0x3461e4,null))['catch'](handleError(_0x3461e4,null));};exports[_0xb904('0x40')]=function(_0x2e0242,_0x48c307){return respondWithRpcPromise(_0xb904('0x41'),_0x2e0242['query'])['then'](respondWithResult(_0x48c307,null))[_0xb904('0xd')](handleError(_0x48c307,null));};exports[_0xb904('0x42')]=function(_0x187f82,_0x181d64){return respondWithRpcPromise(_0xb904('0x43'),_0x187f82['query'])[_0xb904('0x8')](respondWithResult(_0x181d64,null))[_0xb904('0xd')](handleError(_0x181d64,null));};exports[_0xb904('0x44')]=function(_0x51c754,_0x1da5dd){return respondWithRpcPromise('Campaigns',_0x51c754['query'])[_0xb904('0x8')](respondWithResult(_0x1da5dd,null))[_0xb904('0xd')](handleError(_0x1da5dd,null));};exports[_0xb904('0x45')]=function(_0x109fe0,_0x20343d){return respondWithRpcPromise(_0xb904('0x46'),_0x109fe0[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0x20343d,null))[_0xb904('0xd')](handleError(_0x20343d,null));};exports[_0xb904('0x47')]=function(_0x589a19,_0x3ddc76){return respondWithRpcPromise(_0xb904('0x46'),_0x589a19['query'],routingClient)['then'](findById(_0x589a19[_0xb904('0x1d')]['id']))[_0xb904('0x8')](respondWithResult(_0x3ddc76,null))[_0xb904('0xd')](handleError(_0x3ddc76,null));};exports['mailQueues']=function(_0x4a6e44,_0x2b3b08){return respondWithRpcPromise(_0xb904('0x48'),_0x4a6e44[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0x2b3b08,null))[_0xb904('0xd')](handleError(_0x2b3b08,null));};exports[_0xb904('0x49')]=function(_0x3068c4,_0x1fd462){return respondWithRpcPromise(_0xb904('0x48'),_0x3068c4['query'],routingClient)[_0xb904('0x8')](findById(_0x3068c4['params']['id']))[_0xb904('0x8')](respondWithResult(_0x1fd462,null))[_0xb904('0xd')](handleError(_0x1fd462,null));};exports[_0xb904('0x4a')]=function(_0x3f45ca,_0x6612ef){return respondWithRpcPromise(_0xb904('0x4b'),_0x3f45ca[_0xb904('0x19')],mailClient)[_0xb904('0x8')](respondWithResult(_0x6612ef,null))[_0xb904('0xd')](handleError(_0x6612ef,null));};exports[_0xb904('0x4c')]=function(_0xbce1f0,_0x1feaa2){return respondWithRpcPromise(_0xb904('0x4d'),_0xbce1f0[_0xb904('0x19')],routingClient)['then'](respondWithResult(_0x1feaa2,null))[_0xb904('0xd')](handleError(_0x1feaa2,null));};exports[_0xb904('0x4e')]=function(_0x36320a,_0xf769bd){return respondWithRpcPromise(_0xb904('0x4d'),_0x36320a[_0xb904('0x19')],routingClient)[_0xb904('0x8')](findById(_0x36320a['params']['id']))['then'](respondWithResult(_0xf769bd,null))['catch'](handleError(_0xf769bd,null));};exports[_0xb904('0x4f')]=function(_0x145f07,_0x231d5a){return respondWithRpcPromise(_0xb904('0x50'),_0x145f07[_0xb904('0x19')],routingClient)['then'](respondWithResult(_0x231d5a,null))[_0xb904('0xd')](handleError(_0x231d5a,null));};exports[_0xb904('0x51')]=function(_0x17cdd3,_0x5372f6){return respondWithRpcPromise(_0xb904('0x50'),_0x17cdd3[_0xb904('0x19')],routingClient)['then'](findById(_0x17cdd3[_0xb904('0x1d')]['id']))[_0xb904('0x8')](respondWithResult(_0x5372f6,null))[_0xb904('0xd')](handleError(_0x5372f6,null));};exports[_0xb904('0x52')]=function(_0x1dcd85,_0x2a419d){return respondWithRpcPromise(_0xb904('0x53'),_0x1dcd85[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0x2a419d,null))[_0xb904('0xd')](handleError(_0x2a419d,null));};exports['showWhatsappQueues']=function(_0x59b157,_0x30b717){return respondWithRpcPromise('WhatsappQueues',_0x59b157[_0xb904('0x19')],routingClient)[_0xb904('0x8')](findById(_0x59b157[_0xb904('0x1d')]['id']))[_0xb904('0x8')](respondWithResult(_0x30b717,null))[_0xb904('0xd')](handleError(_0x30b717,null));};exports[_0xb904('0x54')]=function(_0x5e4257,_0x58da1f){return respondWithRpcPromise(_0xb904('0x55'),_0x5e4257[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0x58da1f,null))[_0xb904('0xd')](handleError(_0x58da1f,null));};exports[_0xb904('0x56')]=function(_0x2c4640,_0x4ee96f){return respondWithRpcPromise(_0xb904('0x55'),_0x2c4640['query'],routingClient)[_0xb904('0x8')](findById(_0x2c4640['params']['id']))[_0xb904('0x8')](respondWithResult(_0x4ee96f,null))['catch'](handleError(_0x4ee96f,null));};exports[_0xb904('0x57')]=function(_0x5582ec,_0x2ef3ec){return respondWithRpcPromise('FaxAccounts',_0x5582ec['query'])[_0xb904('0x8')](respondWithResult(_0x2ef3ec,null))['catch'](handleError(_0x2ef3ec,null));};exports[_0xb904('0x58')]=function(_0x3760b6,_0x11fee8){return respondWithRpcPromise(_0xb904('0x59'),_0x3760b6[_0xb904('0x19')],routingClient)['then'](respondWithResult(_0x11fee8,null))[_0xb904('0xd')](handleError(_0x11fee8,null));};exports[_0xb904('0x5a')]=function(_0x24ea93,_0x5e81b8){return respondWithRpcPromise(_0xb904('0x5b'),_0x24ea93[_0xb904('0x19')],routingClient)['then'](respondWithResult(_0x5e81b8,null))['catch'](handleError(_0x5e81b8,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x358b5c,_0x59e0bf){return respondWithRpcPromise(_0xb904('0x5c'),_0x358b5c['query'],routingClient)[_0xb904('0x8')](respondWithResult(_0x59e0bf,null))[_0xb904('0xd')](handleError(_0x59e0bf,null));};exports[_0xb904('0x5d')]=function(_0x38597d,_0x117d48){return respondWithRpcPromise(_0xb904('0x5c'),_0x38597d['query'],routingClient)[_0xb904('0x8')](function(_0x1b652a){if(_0x38597d[_0xb904('0x19')]['type']!==undefined){var _0x2fa000=_(_0x1b652a[_0xb904('0x15')])[_0xb904('0x5e')]([_0x38597d[_0xb904('0x19')]['type'],_0x38597d[_0xb904('0x1d')]['id']])['map'](_0xb904('0x5f'))[_0xb904('0x60')]()[_0xb904('0x61')]();return _0x1b652a[_0xb904('0x15')][_0xb904('0x5e')](function(_0x377c36){return _0x2fa000[_0xb904('0x62')](_0x377c36[_0xb904('0x5f')])>-0x1;});}else{return _0x1b652a[_0xb904('0x15')][_0xb904('0x5e')](function(_0x14c666){return _0x14c666[_0xb904('0x5f')]===parseInt(_0x38597d[_0xb904('0x1d')]['id']);});}})[_0xb904('0x8')](respondWithResult(_0x117d48,null))['catch'](handleError(_0x117d48,null));};exports[_0xb904('0x63')]=function(_0x2444c8,_0xb6faf4){return respondWithRpcPromise(_0xb904('0x64'),_0x2444c8[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0xb6faf4,null))[_0xb904('0xd')](handleError(_0xb6faf4,null));};exports[_0xb904('0x65')]=function(_0xee2da7,_0x2934c0){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0xee2da7[_0xb904('0x19')],routingClient)['then'](respondWithResult(_0x2934c0,null))[_0xb904('0xd')](handleError(_0x2934c0,null));};exports[_0xb904('0x66')]=function(_0x2d83ee,_0x4aa423){return respondWithRpcPromise(_0xb904('0x67'),_0x2d83ee[_0xb904('0x19')],routingClient)[_0xb904('0x8')](respondWithResult(_0x4aa423,null))['catch'](handleError(_0x4aa423,null));};exports[_0xb904('0x68')]=function(_0x2a669b){return function(_0x3b5e38,_0x31ae93){var _0x341a13,_0x23a9a0;var _0x4f77e8=_[_0xb904('0x69')](_0x2a669b);var _0x230178=_0x2a669b===_0xb904('0x6a')?_0xb904('0x6b'):_0xb904('0x6c');return db[_0x4f77e8+_0xb904('0x6d')][_0xb904('0x6e')]({'raw':!![],'where':{'id':_0x3b5e38['params']['id']}})[_0xb904('0x8')](function(_0x5dac72){if(_[_0xb904('0x14')](_0x5dac72)){throw new Error(_0x4f77e8+_0xb904('0x6f'));}_0x341a13=_0x5dac72;return db[_0x4f77e8+_0xb904('0x70')][_0xb904('0x6e')]({'where':{'id':_0x3b5e38[_0xb904('0x30')][_0xb904('0x71')]},'include':[{'model':db[_0x4f77e8+'Interaction'],'as':_0xb904('0x72')},{'model':db[_0x4f77e8+_0x230178],'as':_0xb904('0x6c')}]});})['then'](function(_0x2400b2){if(_[_0xb904('0x14')](_0x2400b2)){throw new Error(_0x4f77e8+_0xb904('0x73'));}_0x23a9a0=_0x2400b2;return _0x2400b2[_0xb904('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xb904('0x8')](function(){var _0x5d9a09={'uniqueid':_0x2a669b+'.'+_0x23a9a0['id']+'.'+_0x23a9a0[_0xb904('0x72')]['id'],'FromUserId':_0x3b5e38[_0xb904('0x31')]['id'],'type':_0xb904('0x75')};_0x5d9a09[_0x4f77e8+_0xb904('0x76')]=_0x23a9a0['id'];_0x5d9a09[_0x4f77e8+_0xb904('0x77')]=_0x23a9a0[_0xb904('0x72')]['id'];_0x5d9a09['From'+_0x4f77e8+_0x230178+'Id']=_0x23a9a0[_0xb904('0x6c')]['id'];_0x5d9a09['To'+_0x4f77e8+_0xb904('0x78')]=_0x341a13['id'];return db[_0x4f77e8+_0xb904('0x79')]['create'](_0x5d9a09);})[_0xb904('0x8')](function(){return respondWithRpcPromise('Start',{'channel':_0x2a669b,'interaction':_0x23a9a0[_0xb904('0x72')],'message':_0x23a9a0,'account':_0x23a9a0[_0xb904('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x341a13[_0xb904('0x12')]+','+(_0x23a9a0[_0xb904('0x6c')]['queueTransferTimeout']||0x12c),'interval':_0xb904('0x7a')}]},routingClient);})[_0xb904('0x8')](respondWithResult(_0x31ae93,null))['catch'](handleError(_0x31ae93,null));};};exports['agentNotify']=function(_0x1654ff,_0x22098d){var _0x5ee6fe,_0xb96b4d;if(_[_0xb904('0x14')](_0x1654ff[_0xb904('0x30')][_0xb904('0x7b')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x43cf3a=_0x1654ff[_0xb904('0x30')][_0xb904('0x7b')];var _0x212014=_[_0xb904('0x69')](_0x43cf3a);var _0x1d1c17=_0x43cf3a===_0xb904('0x6a')?_0xb904('0x6b'):'Account';return db[_0xb904('0x7c')][_0xb904('0x6e')]({'raw':!![],'where':{'id':_0x1654ff[_0xb904('0x1d')]['id'],'role':_0xb904('0x3c')}})['then'](function(_0x527ffa){if(_[_0xb904('0x14')](_0x527ffa)){throw new Error(_0xb904('0x7d'));}_0x5ee6fe=_0x527ffa;return db[_0x212014+_0xb904('0x70')][_0xb904('0x6e')]({'where':{'id':_0x1654ff[_0xb904('0x30')][_0xb904('0x71')]},'include':[{'model':db[_0x212014+'Interaction'],'as':'Interaction'},{'model':db[_0x212014+_0x1d1c17],'as':_0xb904('0x6c')}]});})['then'](function(_0x13ed10){if(_['isNil'](_0x13ed10)){throw new Error(_0x212014+_0xb904('0x73'));}_0xb96b4d=_0x13ed10;return _0x13ed10['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xb904('0x8')](function(){var _0x123a45={'uniqueid':_0x43cf3a+'.'+_0xb96b4d['id']+'.'+_0xb96b4d[_0xb904('0x72')]['id'],'FromUserId':_0x1654ff['user']['id'],'type':_0xb904('0x3c'),'ToUserId':_0x5ee6fe['id']};_0x123a45[_0x212014+_0xb904('0x76')]=_0xb96b4d['id'];_0x123a45[_0x212014+_0xb904('0x77')]=_0xb96b4d['Interaction']['id'];_0x123a45[_0xb904('0x7e')+_0x212014+_0x1d1c17+'Id']=_0xb96b4d[_0xb904('0x6c')]['id'];return db[_0x212014+_0xb904('0x79')][_0xb904('0x7f')](_0x123a45);})[_0xb904('0x8')](function(){return respondWithRpcPromise(_0xb904('0x80'),{'channel':_0x43cf3a,'interaction':_0xb96b4d[_0xb904('0x72')],'message':_0xb96b4d,'account':_0xb96b4d[_0xb904('0x6c')],'applications':[{'id':0x0,'priority':0x1,'app':_0xb904('0x3c'),'appdata':_0x5ee6fe[_0xb904('0x12')]+','+(_0xb96b4d[_0xb904('0x6c')][_0xb904('0x81')]||0x12c),'interval':_0xb904('0x7a')}]},routingClient);})[_0xb904('0x8')](respondWithResult(_0x22098d,null))[_0xb904('0xd')](handleError(_0x22098d,null));};
\ No newline at end of file
index 99e4ec4..8f26441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f39=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','run','post','put','destroy','exports'];(function(_0x341174,_0x4cdf28){var _0x166c07=function(_0x2d7f7a){while(--_0x2d7f7a){_0x341174['push'](_0x341174['shift']());}};_0x166c07(++_0x4cdf28);}(_0x7f39,0xa8));var _0x97f3=function(_0x1ef2e3,_0x380ec2){_0x1ef2e3=_0x1ef2e3-0x0;var _0x173e11=_0x7f39[_0x1ef2e3];return _0x173e11;};'use strict';var multer=require(_0x97f3('0x0'));var util=require(_0x97f3('0x1'));var path=require(_0x97f3('0x2'));var timeout=require(_0x97f3('0x3'));var express=require('express');var router=express[_0x97f3('0x4')]();var fs_extra=require(_0x97f3('0x5'));var auth=require(_0x97f3('0x6'));var interaction=require(_0x97f3('0x7'));var config=require(_0x97f3('0x8'));var controller=require(_0x97f3('0x9'));router[_0x97f3('0xa')]('/',auth[_0x97f3('0xb')](),controller[_0x97f3('0xc')]);router[_0x97f3('0xa')](_0x97f3('0xd'),auth['isAuthenticated'](),controller[_0x97f3('0xe')]);router[_0x97f3('0xa')](_0x97f3('0xf'),auth[_0x97f3('0xb')](),controller[_0x97f3('0x10')]);router[_0x97f3('0x11')]('/',auth[_0x97f3('0xb')](),controller['create']);router[_0x97f3('0x12')](_0x97f3('0xd'),auth[_0x97f3('0xb')](),controller['update']);router['delete'](_0x97f3('0xd'),auth['isAuthenticated'](),controller[_0x97f3('0x13')]);module[_0x97f3('0x14')]=router;
\ No newline at end of file
+var _0x62ef=['isAuthenticated','index','get','/:id','show','post','create','put','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller'];(function(_0x64e3c1,_0x14da00){var _0x44adc8=function(_0x2529ce){while(--_0x2529ce){_0x64e3c1['push'](_0x64e3c1['shift']());}};_0x44adc8(++_0x14da00);}(_0x62ef,0xd3));var _0xf62e=function(_0x5a12ff,_0x2e18db){_0x5a12ff=_0x5a12ff-0x0;var _0x285f8d=_0x62ef[_0x5a12ff];return _0x285f8d;};'use strict';var multer=require('multer');var util=require(_0xf62e('0x0'));var path=require(_0xf62e('0x1'));var timeout=require('connect-timeout');var express=require(_0xf62e('0x2'));var router=express[_0xf62e('0x3')]();var fs_extra=require(_0xf62e('0x4'));var auth=require(_0xf62e('0x5'));var interaction=require(_0xf62e('0x6'));var config=require(_0xf62e('0x7'));var controller=require(_0xf62e('0x8'));router['get']('/',auth[_0xf62e('0x9')](),controller[_0xf62e('0xa')]);router[_0xf62e('0xb')](_0xf62e('0xc'),auth[_0xf62e('0x9')](),controller[_0xf62e('0xd')]);router[_0xf62e('0xb')]('/:id/run',auth[_0xf62e('0x9')](),controller['run']);router[_0xf62e('0xe')]('/',auth[_0xf62e('0x9')](),controller[_0xf62e('0xf')]);router[_0xf62e('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xf62e('0x11')]);router[_0xf62e('0x12')](_0xf62e('0xc'),auth[_0xf62e('0x9')](),controller['destroy']);module[_0xf62e('0x13')]=router;
\ No newline at end of file
index fa00ec7..b9adc8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc46c=['months','weeks','days','hours','minutes','ENUM','csv','custom','default','BOOLEAN','TEXT','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters'];(function(_0x31f227,_0x5bed48){var _0x30cad3=function(_0x27c129){while(--_0x27c129){_0x31f227['push'](_0x31f227['shift']());}};_0x30cad3(++_0x5bed48);}(_0xc46c,0xf9));var _0xcc46=function(_0x314a8c,_0x1c2e8d){_0x314a8c=_0x314a8c-0x0;var _0x1d4607=_0xc46c[_0x314a8c];return _0x1d4607;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xcc46('0x0')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcc46('0x1')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0xcc46('0x2')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xcc46('0x3')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xcc46('0x4'),_0xcc46('0x5'),_0xcc46('0x6'),_0xcc46('0x7'),_0xcc46('0x8'),_0xcc46('0x9'),_0xcc46('0xa')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xcc46('0xb')](_0xcc46('0xc'),'pdf','xlsx'),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0xcc46('0xb')](_0xcc46('0xd'),_0xcc46('0xe')),'allowNull':![],'defaultValue':_0xcc46('0xd')},'sendMail':{'type':Sequelize[_0xcc46('0xf')],'defaultValue':![]},'email':{'type':Sequelize[_0xcc46('0x0')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0xcc46('0x10')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x8e1f=['years','quarters','months','weeks','days','hours','minutes','csv','pdf','custom','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8e1f,0x90));var _0xf8e1=function(_0x9713d4,_0x191452){_0x9713d4=_0x9713d4-0x0;var _0x1bfaa4=_0x8e1f[_0x9713d4];return _0x1bfaa4;};'use strict';var Sequelize=require(_0xf8e1('0x0'));module[_0xf8e1('0x1')]={'name':{'type':Sequelize[_0xf8e1('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf8e1('0x2')]},'active':{'type':Sequelize[_0xf8e1('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xf8e1('0x2')],'allowNull':![],'defaultValue':_0xf8e1('0x4')},'startAt':{'type':Sequelize[_0xf8e1('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xf8e1('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xf8e1('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xf8e1('0x7')](_0xf8e1('0x8'),_0xf8e1('0x9'),_0xf8e1('0xa'),_0xf8e1('0xb'),_0xf8e1('0xc'),_0xf8e1('0xd'),_0xf8e1('0xe')),'allowNull':![],'defaultValue':_0xf8e1('0xc')},'output':{'type':Sequelize[_0xf8e1('0x7')](_0xf8e1('0xf'),_0xf8e1('0x10'),'xlsx'),'allowNull':![],'defaultValue':_0xf8e1('0xf')},'type':{'type':Sequelize[_0xf8e1('0x7')](_0xf8e1('0x11'),'default'),'allowNull':![],'defaultValue':_0xf8e1('0x11')},'sendMail':{'type':Sequelize[_0xf8e1('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xf8e1('0x2')]},'cc':{'type':Sequelize[_0xf8e1('0x12')]},'bcc':{'type':Sequelize[_0xf8e1('0x12')]},'sendIfEmpty':{'type':Sequelize[_0xf8e1('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 0fa6fb8..052376b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb15=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Scheduler','end','error','stack','index','map','Schedule','key','model','name','query','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','create','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined'];(function(_0x368d9c,_0x59bda1){var _0x406fc1=function(_0x4e4e86){while(--_0x4e4e86){_0x368d9c['push'](_0x368d9c['shift']());}};_0x406fc1(++_0x59bda1);}(_0xeb15,0x1d0));var _0x5eb1=function(_0x40d5c8,_0x411c6e){_0x40d5c8=_0x40d5c8-0x0;var _0x5f294f=_0xeb15[_0x40d5c8];return _0x5f294f;};'use strict';var emlformat=require(_0x5eb1('0x0'));var rimraf=require(_0x5eb1('0x1'));var zipdir=require(_0x5eb1('0x2'));var jsonpatch=require(_0x5eb1('0x3'));var rp=require(_0x5eb1('0x4'));var moment=require(_0x5eb1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5eb1('0x6'));var util=require(_0x5eb1('0x7'));var path=require(_0x5eb1('0x8'));var sox=require('sox');var csv=require(_0x5eb1('0x9'));var ejs=require(_0x5eb1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5eb1('0xb'));var crypto=require(_0x5eb1('0xc'));var jsforce=require(_0x5eb1('0xd'));var deskjs=require(_0x5eb1('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5eb1('0xf'));var Papa=require('papaparse');var Redis=require(_0x5eb1('0x10'));var authService=require(_0x5eb1('0x11'));var qs=require(_0x5eb1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5eb1('0x13'));var utils=require('../../config/utils');var config=require(_0x5eb1('0x14'));var licenseUtil=require(_0x5eb1('0x15'));var db=require(_0x5eb1('0x16'))['db'];function respondWithStatusCode(_0x271836,_0x4c4c36){_0x4c4c36=_0x4c4c36||0xcc;return function(_0x48d392){if(_0x48d392){return _0x271836[_0x5eb1('0x17')](_0x4c4c36);}return _0x271836[_0x5eb1('0x18')](_0x4c4c36)['end']();};}function respondWithResult(_0x346673,_0x1f2e77){_0x1f2e77=_0x1f2e77||0xc8;return function(_0x472e90){if(_0x472e90){return _0x346673[_0x5eb1('0x18')](_0x1f2e77)[_0x5eb1('0x19')](_0x472e90);}};}function respondWithFilteredResult(_0x2a928f,_0x37c1ab){return function(_0x362244){if(_0x362244){var _0x32ee19=typeof _0x37c1ab[_0x5eb1('0x1a')]===_0x5eb1('0x1b')&&typeof _0x37c1ab[_0x5eb1('0x1c')]===_0x5eb1('0x1b');var _0x4722e4=_0x362244[_0x5eb1('0x1d')];var _0x39121e=_0x32ee19?0x0:_0x37c1ab['offset'];var _0x71060f=_0x32ee19?_0x362244[_0x5eb1('0x1d')]:_0x37c1ab[_0x5eb1('0x1a')]+_0x37c1ab[_0x5eb1('0x1c')];var _0x10fc71;if(_0x71060f>=_0x4722e4){_0x71060f=_0x4722e4;_0x10fc71=0xc8;}else{_0x10fc71=0xce;}_0x2a928f['status'](_0x10fc71);return _0x2a928f[_0x5eb1('0x1e')](_0x5eb1('0x1f'),_0x39121e+'-'+_0x71060f+'/'+_0x4722e4)[_0x5eb1('0x19')](_0x362244);}return null;};}function patchUpdates(_0x1176bf){return function(_0x2958c4){try{jsonpatch[_0x5eb1('0x20')](_0x2958c4,_0x1176bf,!![]);}catch(_0x179408){return BPromise[_0x5eb1('0x21')](_0x179408);}return _0x2958c4[_0x5eb1('0x22')]();};}function saveUpdates(_0x5b8778,_0x57128e){return function(_0x10e629){if(_0x10e629){return _0x10e629[_0x5eb1('0x23')](_0x5b8778)[_0x5eb1('0x24')](function(_0x5e8562){return _0x5e8562;});}return null;};}function removeEntity(_0x22be91,_0x59be83){return function(_0x2a72bf){if(_0x2a72bf){return _0x2a72bf[_0x5eb1('0x25')]()[_0x5eb1('0x24')](function(){var _0x1cafe5=_0x2a72bf[_0x5eb1('0x26')]({'plain':!![]});var _0x3b6408=_0x5eb1('0x27');return db['UserProfileResource'][_0x5eb1('0x25')]({'where':{'type':_0x3b6408,'resourceId':_0x1cafe5['id']}})[_0x5eb1('0x24')](function(){return _0x2a72bf;});})[_0x5eb1('0x24')](function(){_0x22be91['status'](0xcc)[_0x5eb1('0x28')]();});}};}function handleEntityNotFound(_0x273c8c,_0x4b8876){return function(_0x904427){if(!_0x904427){_0x273c8c[_0x5eb1('0x17')](0x194);}return _0x904427;};}function handleError(_0x1937ee,_0x2e22ae){_0x2e22ae=_0x2e22ae||0x1f4;return function(_0x524498){logger[_0x5eb1('0x29')](_0x524498[_0x5eb1('0x2a')]);if(_0x524498['name']){delete _0x524498['name'];}_0x1937ee[_0x5eb1('0x18')](_0x2e22ae)['send'](_0x524498);};}exports[_0x5eb1('0x2b')]=function(_0x35f8c1,_0x443213){var _0x8d4e0d={},_0x2c81cc={},_0x577bc3={'count':0x0,'rows':[]};var _0x4520ed=_[_0x5eb1('0x2c')](db[_0x5eb1('0x2d')]['rawAttributes'],function(_0x5e112c){return{'name':_0x5e112c['fieldName'],'type':_0x5e112c['type'][_0x5eb1('0x2e')]};});_0x2c81cc[_0x5eb1('0x2f')]=_[_0x5eb1('0x2c')](_0x4520ed,_0x5eb1('0x30'));_0x2c81cc['query']=_['keys'](_0x35f8c1[_0x5eb1('0x31')]);_0x2c81cc[_0x5eb1('0x32')]=_[_0x5eb1('0x33')](_0x2c81cc[_0x5eb1('0x2f')],_0x2c81cc['query']);_0x8d4e0d['attributes']=_[_0x5eb1('0x33')](_0x2c81cc[_0x5eb1('0x2f')],qs['fields'](_0x35f8c1[_0x5eb1('0x31')][_0x5eb1('0x34')]));_0x8d4e0d['attributes']=_0x8d4e0d[_0x5eb1('0x35')][_0x5eb1('0x36')]?_0x8d4e0d[_0x5eb1('0x35')]:_0x2c81cc['model'];if(!_0x35f8c1[_0x5eb1('0x31')]['hasOwnProperty'](_0x5eb1('0x37'))){_0x8d4e0d['limit']=qs['limit'](_0x35f8c1[_0x5eb1('0x31')][_0x5eb1('0x1c')]);_0x8d4e0d[_0x5eb1('0x1a')]=qs[_0x5eb1('0x1a')](_0x35f8c1[_0x5eb1('0x31')]['offset']);}_0x8d4e0d['order']=qs[_0x5eb1('0x38')](_0x35f8c1[_0x5eb1('0x31')][_0x5eb1('0x38')]);_0x8d4e0d[_0x5eb1('0x39')]=qs[_0x5eb1('0x32')](_[_0x5eb1('0x3a')](_0x35f8c1['query'],_0x2c81cc[_0x5eb1('0x32')]),_0x4520ed);if(_0x35f8c1[_0x5eb1('0x31')][_0x5eb1('0x3b')]){_0x8d4e0d['where']=_['merge'](_0x8d4e0d['where'],{'$or':_[_0x5eb1('0x2c')](_0x4520ed,function(_0x420cc7){if(_0x420cc7[_0x5eb1('0x3c')]!==_0x5eb1('0x3d')){var _0x56ee2f={};_0x56ee2f[_0x420cc7[_0x5eb1('0x30')]]={'$like':'%'+_0x35f8c1[_0x5eb1('0x31')][_0x5eb1('0x3b')]+'%'};return _0x56ee2f;}})});}_0x8d4e0d=_[_0x5eb1('0x3e')]({},_0x8d4e0d,_0x35f8c1[_0x5eb1('0x3f')]);var _0x53419c={'where':_0x8d4e0d['where']};return db[_0x5eb1('0x2d')]['count'](_0x53419c)['then'](function(_0x148b02){_0x577bc3[_0x5eb1('0x1d')]=_0x148b02;if(_0x35f8c1['query'][_0x5eb1('0x40')]){_0x8d4e0d[_0x5eb1('0x41')]=[{'all':!![]}];}return db[_0x5eb1('0x2d')]['findAll'](_0x8d4e0d);})[_0x5eb1('0x24')](function(_0x3b3424){_0x577bc3['rows']=_0x3b3424;return _0x577bc3;})[_0x5eb1('0x24')](respondWithFilteredResult(_0x443213,_0x8d4e0d))[_0x5eb1('0x42')](handleError(_0x443213,null));};exports[_0x5eb1('0x43')]=function(_0x48c138,_0x596f1f){var _0x459469={'raw':![],'where':{'id':_0x48c138[_0x5eb1('0x44')]['id']}},_0x13295={};_0x13295[_0x5eb1('0x2f')]=_['keys'](db[_0x5eb1('0x2d')][_0x5eb1('0x45')]);_0x13295['query']=_['keys'](_0x48c138[_0x5eb1('0x31')]);_0x13295['filters']=_[_0x5eb1('0x33')](_0x13295[_0x5eb1('0x2f')],_0x13295[_0x5eb1('0x31')]);_0x459469[_0x5eb1('0x35')]=_[_0x5eb1('0x33')](_0x13295['model'],qs['fields'](_0x48c138[_0x5eb1('0x31')][_0x5eb1('0x34')]));_0x459469['attributes']=_0x459469['attributes']['length']?_0x459469[_0x5eb1('0x35')]:_0x13295[_0x5eb1('0x2f')];if(_0x48c138[_0x5eb1('0x31')][_0x5eb1('0x40')]){_0x459469[_0x5eb1('0x41')]=[{'all':!![]}];}_0x459469=_[_0x5eb1('0x3e')]({},_0x459469,_0x48c138[_0x5eb1('0x3f')]);return db[_0x5eb1('0x2d')]['find'](_0x459469)[_0x5eb1('0x24')](handleEntityNotFound(_0x596f1f,null))[_0x5eb1('0x24')](respondWithResult(_0x596f1f,null))[_0x5eb1('0x42')](handleError(_0x596f1f,null));};exports[_0x5eb1('0x46')]=function(_0x249aec,_0x423b99){return db[_0x5eb1('0x2d')][_0x5eb1('0x46')](_0x249aec[_0x5eb1('0x47')],{})['then'](function(_0x1e482c){var _0x354be8=_0x249aec[_0x5eb1('0x48')][_0x5eb1('0x26')]({'plain':!![]});if(!_0x354be8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x354be8[_0x5eb1('0x49')]===_0x5eb1('0x48')){var _0x5cd53e=_0x1e482c[_0x5eb1('0x26')]({'plain':!![]});var _0x27fb07=_0x5eb1('0x27');return db[_0x5eb1('0x4a')][_0x5eb1('0x4b')]({'where':{'name':_0x27fb07,'userProfileId':_0x354be8[_0x5eb1('0x4c')]},'raw':!![]})[_0x5eb1('0x24')](function(_0x545c42){if(_0x545c42&&_0x545c42[_0x5eb1('0x4d')]===0x0){return db[_0x5eb1('0x4e')][_0x5eb1('0x46')]({'name':_0x5cd53e[_0x5eb1('0x30')],'resourceId':_0x5cd53e['id'],'type':_0x545c42[_0x5eb1('0x30')],'sectionId':_0x545c42['id']},{})['then'](function(){return _0x1e482c;});}else{return _0x1e482c;}})[_0x5eb1('0x42')](function(_0x57ed38){logger[_0x5eb1('0x29')](_0x5eb1('0x4f'),_0x57ed38);throw _0x57ed38;});}return _0x1e482c;})[_0x5eb1('0x24')](respondWithResult(_0x423b99,0xc9))['catch'](handleError(_0x423b99,null));};exports[_0x5eb1('0x23')]=function(_0x485d03,_0x3b8522){if(_0x485d03[_0x5eb1('0x47')]['id']){delete _0x485d03[_0x5eb1('0x47')]['id'];}return db[_0x5eb1('0x2d')][_0x5eb1('0x4b')]({'where':{'id':_0x485d03['params']['id']}})['then'](handleEntityNotFound(_0x3b8522,null))['then'](saveUpdates(_0x485d03['body'],null))[_0x5eb1('0x24')](respondWithResult(_0x3b8522,null))[_0x5eb1('0x42')](handleError(_0x3b8522,null));};exports['destroy']=function(_0x261aa6,_0x38f38d){return db['Schedule'][_0x5eb1('0x4b')]({'where':{'id':_0x261aa6[_0x5eb1('0x44')]['id']}})[_0x5eb1('0x24')](handleEntityNotFound(_0x38f38d,null))[_0x5eb1('0x24')](removeEntity(_0x38f38d,null))[_0x5eb1('0x42')](handleError(_0x38f38d,null));};exports[_0x5eb1('0x50')]=function(_0x275b89,_0x1c21e0,_0x565a37){var _0x4504c2=require(_0x5eb1('0x51'));return db[_0x5eb1('0x2d')]['find']({'where':{'id':_0x275b89['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x1c21e0,null))[_0x5eb1('0x24')](function(){_0x4504c2[_0x5eb1('0x50')](_0x275b89[_0x5eb1('0x44')]['id']);})[_0x5eb1('0x24')](respondWithStatusCode(_0x1c21e0,null))[_0x5eb1('0x42')](handleError(_0x1c21e0,null));};
\ No newline at end of file
+var _0xf582=['to-csv','fs-extra','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','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','Schedule','rawAttributes','fieldName','type','map','query','filters','attributes','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','catch','create','body','user','role','Scheduler','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x5263da,_0x116f8d){var _0x5675b8=function(_0x104dd2){while(--_0x104dd2){_0x5263da['push'](_0x5263da['shift']());}};_0x5675b8(++_0x116f8d);}(_0xf582,0x15a));var _0x2f58=function(_0x46460e,_0x4a6c5e){_0x46460e=_0x46460e-0x0;var _0x4c36a3=_0xf582[_0x46460e];return _0x4c36a3;};'use strict';var emlformat=require(_0x2f58('0x0'));var rimraf=require(_0x2f58('0x1'));var zipdir=require(_0x2f58('0x2'));var jsonpatch=require(_0x2f58('0x3'));var rp=require(_0x2f58('0x4'));var moment=require(_0x2f58('0x5'));var BPromise=require(_0x2f58('0x6'));var Mustache=require(_0x2f58('0x7'));var util=require('util');var path=require(_0x2f58('0x8'));var sox=require(_0x2f58('0x9'));var csv=require(_0x2f58('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2f58('0xb'));var _=require(_0x2f58('0xc'));var squel=require(_0x2f58('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2f58('0xe'));var toCsv=require(_0x2f58('0xa'));var querystring=require(_0x2f58('0xf'));var Papa=require(_0x2f58('0x10'));var Redis=require(_0x2f58('0x11'));var authService=require(_0x2f58('0x12'));var qs=require(_0x2f58('0x13'));var as=require(_0x2f58('0x14'));var hardwareService=require(_0x2f58('0x15'));var logger=require(_0x2f58('0x16'))(_0x2f58('0x17'));var utils=require(_0x2f58('0x18'));var config=require(_0x2f58('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x2f58('0x1a'))['db'];function respondWithStatusCode(_0x275c03,_0x4474b2){_0x4474b2=_0x4474b2||0xcc;return function(_0x5f5d00){if(_0x5f5d00){return _0x275c03['sendStatus'](_0x4474b2);}return _0x275c03['status'](_0x4474b2)[_0x2f58('0x1b')]();};}function respondWithResult(_0x265ee7,_0x41c3f1){_0x41c3f1=_0x41c3f1||0xc8;return function(_0x26976c){if(_0x26976c){return _0x265ee7[_0x2f58('0x1c')](_0x41c3f1)[_0x2f58('0x1d')](_0x26976c);}};}function respondWithFilteredResult(_0x4336e9,_0x59bf38){return function(_0x19899f){if(_0x19899f){var _0x318945=typeof _0x59bf38[_0x2f58('0x1e')]==='undefined'&&typeof _0x59bf38[_0x2f58('0x1f')]==='undefined';var _0xcb089a=_0x19899f[_0x2f58('0x20')];var _0x3a36ba=_0x318945?0x0:_0x59bf38[_0x2f58('0x1e')];var _0x145439=_0x318945?_0x19899f['count']:_0x59bf38[_0x2f58('0x1e')]+_0x59bf38['limit'];var _0x5b09e3;if(_0x145439>=_0xcb089a){_0x145439=_0xcb089a;_0x5b09e3=0xc8;}else{_0x5b09e3=0xce;}_0x4336e9[_0x2f58('0x1c')](_0x5b09e3);return _0x4336e9[_0x2f58('0x21')](_0x2f58('0x22'),_0x3a36ba+'-'+_0x145439+'/'+_0xcb089a)[_0x2f58('0x1d')](_0x19899f);}return null;};}function patchUpdates(_0x20a3ac){return function(_0x54241e){try{jsonpatch[_0x2f58('0x23')](_0x54241e,_0x20a3ac,!![]);}catch(_0x4eca4f){return BPromise[_0x2f58('0x24')](_0x4eca4f);}return _0x54241e[_0x2f58('0x25')]();};}function saveUpdates(_0x347dae,_0x167ba0){return function(_0x57c725){if(_0x57c725){return _0x57c725['update'](_0x347dae)[_0x2f58('0x26')](function(_0x26b41a){return _0x26b41a;});}return null;};}function removeEntity(_0x287cd3,_0x4ad716){return function(_0x33ed6c){if(_0x33ed6c){return _0x33ed6c['destroy']()[_0x2f58('0x26')](function(){var _0x4d79fb=_0x33ed6c[_0x2f58('0x27')]({'plain':!![]});var _0x116043='Scheduler';return db[_0x2f58('0x28')][_0x2f58('0x29')]({'where':{'type':_0x116043,'resourceId':_0x4d79fb['id']}})[_0x2f58('0x26')](function(){return _0x33ed6c;});})[_0x2f58('0x26')](function(){_0x287cd3['status'](0xcc)[_0x2f58('0x1b')]();});}};}function handleEntityNotFound(_0x4e6d12,_0x57f6f3){return function(_0x12c23a){if(!_0x12c23a){_0x4e6d12[_0x2f58('0x2a')](0x194);}return _0x12c23a;};}function handleError(_0x41335e,_0x5323af){_0x5323af=_0x5323af||0x1f4;return function(_0x232065){logger[_0x2f58('0x2b')](_0x232065[_0x2f58('0x2c')]);if(_0x232065[_0x2f58('0x2d')]){delete _0x232065[_0x2f58('0x2d')];}_0x41335e[_0x2f58('0x1c')](_0x5323af)[_0x2f58('0x2e')](_0x232065);};}exports[_0x2f58('0x2f')]=function(_0x219c7d,_0x35dddb){var _0x47affa={},_0x1651db={},_0x350413={'count':0x0,'rows':[]};var _0x2078c8=_['map'](db[_0x2f58('0x30')][_0x2f58('0x31')],function(_0x33c9bd){return{'name':_0x33c9bd[_0x2f58('0x32')],'type':_0x33c9bd[_0x2f58('0x33')]['key']};});_0x1651db['model']=_[_0x2f58('0x34')](_0x2078c8,'name');_0x1651db[_0x2f58('0x35')]=_['keys'](_0x219c7d[_0x2f58('0x35')]);_0x1651db[_0x2f58('0x36')]=_['intersection'](_0x1651db['model'],_0x1651db[_0x2f58('0x35')]);_0x47affa[_0x2f58('0x37')]=_[_0x2f58('0x38')](_0x1651db['model'],qs['fields'](_0x219c7d[_0x2f58('0x35')][_0x2f58('0x39')]));_0x47affa[_0x2f58('0x37')]=_0x47affa[_0x2f58('0x37')][_0x2f58('0x3a')]?_0x47affa[_0x2f58('0x37')]:_0x1651db[_0x2f58('0x3b')];if(!_0x219c7d[_0x2f58('0x35')][_0x2f58('0x3c')](_0x2f58('0x3d'))){_0x47affa[_0x2f58('0x1f')]=qs[_0x2f58('0x1f')](_0x219c7d[_0x2f58('0x35')][_0x2f58('0x1f')]);_0x47affa[_0x2f58('0x1e')]=qs[_0x2f58('0x1e')](_0x219c7d[_0x2f58('0x35')]['offset']);}_0x47affa[_0x2f58('0x3e')]=qs['sort'](_0x219c7d[_0x2f58('0x35')][_0x2f58('0x3f')]);_0x47affa['where']=qs[_0x2f58('0x36')](_[_0x2f58('0x40')](_0x219c7d[_0x2f58('0x35')],_0x1651db['filters']),_0x2078c8);if(_0x219c7d[_0x2f58('0x35')][_0x2f58('0x41')]){_0x47affa[_0x2f58('0x42')]=_[_0x2f58('0x43')](_0x47affa[_0x2f58('0x42')],{'$or':_[_0x2f58('0x34')](_0x2078c8,function(_0x1d21dc){if(_0x1d21dc[_0x2f58('0x33')]!==_0x2f58('0x44')){var _0x25ac1={};_0x25ac1[_0x1d21dc['name']]={'$like':'%'+_0x219c7d[_0x2f58('0x35')][_0x2f58('0x41')]+'%'};return _0x25ac1;}})});}_0x47affa=_[_0x2f58('0x43')]({},_0x47affa,_0x219c7d[_0x2f58('0x45')]);var _0x4b8696={'where':_0x47affa['where']};return db[_0x2f58('0x30')][_0x2f58('0x20')](_0x4b8696)[_0x2f58('0x26')](function(_0xb2a173){_0x350413['count']=_0xb2a173;if(_0x219c7d['query'][_0x2f58('0x46')]){_0x47affa[_0x2f58('0x47')]=[{'all':!![]}];}return db['Schedule'][_0x2f58('0x48')](_0x47affa);})[_0x2f58('0x26')](function(_0x869df){_0x350413['rows']=_0x869df;return _0x350413;})[_0x2f58('0x26')](respondWithFilteredResult(_0x35dddb,_0x47affa))['catch'](handleError(_0x35dddb,null));};exports[_0x2f58('0x49')]=function(_0x374771,_0x496e5d){var _0x38eb90={'raw':![],'where':{'id':_0x374771[_0x2f58('0x4a')]['id']}},_0x58a3db={};_0x58a3db[_0x2f58('0x3b')]=_[_0x2f58('0x4b')](db[_0x2f58('0x30')][_0x2f58('0x31')]);_0x58a3db[_0x2f58('0x35')]=_[_0x2f58('0x4b')](_0x374771[_0x2f58('0x35')]);_0x58a3db[_0x2f58('0x36')]=_[_0x2f58('0x38')](_0x58a3db[_0x2f58('0x3b')],_0x58a3db['query']);_0x38eb90[_0x2f58('0x37')]=_[_0x2f58('0x38')](_0x58a3db[_0x2f58('0x3b')],qs['fields'](_0x374771[_0x2f58('0x35')][_0x2f58('0x39')]));_0x38eb90[_0x2f58('0x37')]=_0x38eb90[_0x2f58('0x37')][_0x2f58('0x3a')]?_0x38eb90[_0x2f58('0x37')]:_0x58a3db[_0x2f58('0x3b')];if(_0x374771[_0x2f58('0x35')][_0x2f58('0x46')]){_0x38eb90[_0x2f58('0x47')]=[{'all':!![]}];}_0x38eb90=_[_0x2f58('0x43')]({},_0x38eb90,_0x374771[_0x2f58('0x45')]);return db[_0x2f58('0x30')][_0x2f58('0x4c')](_0x38eb90)['then'](handleEntityNotFound(_0x496e5d,null))[_0x2f58('0x26')](respondWithResult(_0x496e5d,null))[_0x2f58('0x4d')](handleError(_0x496e5d,null));};exports[_0x2f58('0x4e')]=function(_0x463388,_0x174583){return db['Schedule'][_0x2f58('0x4e')](_0x463388[_0x2f58('0x4f')],{})[_0x2f58('0x26')](function(_0x3acaed){var _0x2c6160=_0x463388[_0x2f58('0x50')][_0x2f58('0x27')]({'plain':!![]});if(!_0x2c6160)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c6160[_0x2f58('0x51')]===_0x2f58('0x50')){var _0x3c1c14=_0x3acaed['get']({'plain':!![]});var _0x14a2fe=_0x2f58('0x52');return db[_0x2f58('0x53')][_0x2f58('0x4c')]({'where':{'name':_0x14a2fe,'userProfileId':_0x2c6160['userProfileId']},'raw':!![]})[_0x2f58('0x26')](function(_0x4761f0){if(_0x4761f0&&_0x4761f0[_0x2f58('0x54')]===0x0){return db[_0x2f58('0x28')][_0x2f58('0x4e')]({'name':_0x3c1c14[_0x2f58('0x2d')],'resourceId':_0x3c1c14['id'],'type':_0x4761f0[_0x2f58('0x2d')],'sectionId':_0x4761f0['id']},{})['then'](function(){return _0x3acaed;});}else{return _0x3acaed;}})[_0x2f58('0x4d')](function(_0x5b30dd){logger[_0x2f58('0x2b')](_0x2f58('0x55'),_0x5b30dd);throw _0x5b30dd;});}return _0x3acaed;})['then'](respondWithResult(_0x174583,0xc9))[_0x2f58('0x4d')](handleError(_0x174583,null));};exports[_0x2f58('0x56')]=function(_0x7ffbb1,_0x1e6b33){if(_0x7ffbb1[_0x2f58('0x4f')]['id']){delete _0x7ffbb1[_0x2f58('0x4f')]['id'];}return db[_0x2f58('0x30')][_0x2f58('0x4c')]({'where':{'id':_0x7ffbb1[_0x2f58('0x4a')]['id']}})[_0x2f58('0x26')](handleEntityNotFound(_0x1e6b33,null))[_0x2f58('0x26')](saveUpdates(_0x7ffbb1[_0x2f58('0x4f')],null))['then'](respondWithResult(_0x1e6b33,null))[_0x2f58('0x4d')](handleError(_0x1e6b33,null));};exports['destroy']=function(_0x3d2acd,_0x13f662){return db[_0x2f58('0x30')][_0x2f58('0x4c')]({'where':{'id':_0x3d2acd[_0x2f58('0x4a')]['id']}})[_0x2f58('0x26')](handleEntityNotFound(_0x13f662,null))[_0x2f58('0x26')](removeEntity(_0x13f662,null))[_0x2f58('0x4d')](handleError(_0x13f662,null));};exports[_0x2f58('0x57')]=function(_0x4b6188,_0x4db0ab,_0x22bc6c){var _0x5e301b=require(_0x2f58('0x58'));return db['Schedule'][_0x2f58('0x4c')]({'where':{'id':_0x4b6188[_0x2f58('0x4a')]['id']},'raw':!![]})[_0x2f58('0x26')](handleEntityNotFound(_0x4db0ab,null))[_0x2f58('0x26')](function(){_0x5e301b[_0x2f58('0x57')](_0x4b6188[_0x2f58('0x4a')]['id']);})[_0x2f58('0x26')](respondWithStatusCode(_0x4db0ab,null))['catch'](handleError(_0x4db0ab,null));};
\ No newline at end of file
index 1cc69c6..01b3c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fa8=['../../config/environment','define','tools_schedules','lodash','util','moment','bluebird','path','rimraf'];(function(_0x142b34,_0x2f3cc8){var _0x424a99=function(_0xf80315){while(--_0xf80315){_0x142b34['push'](_0x142b34['shift']());}};_0x424a99(++_0x2f3cc8);}(_0x6fa8,0x1f2));var _0x86fa=function(_0x12b683,_0x124186){_0x12b683=_0x12b683-0x0;var _0xfb150b=_0x6fa8[_0x12b683];return _0xfb150b;};'use strict';var _=require(_0x86fa('0x0'));var util=require(_0x86fa('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x86fa('0x2'));var BPromise=require(_0x86fa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x86fa('0x4'));var rimraf=require(_0x86fa('0x5'));var config=require(_0x86fa('0x6'));var attributes=require('./schedule.attributes');module['exports']=function(_0x9486f5,_0x5088b1){return _0x9486f5[_0x86fa('0x7')]('Schedule',attributes,{'tableName':_0x86fa('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1794=['tools_schedules','util','api','moment','bluebird','path','./schedule.attributes','exports','define'];(function(_0x3ccc8f,_0x1e7f1e){var _0x49959c=function(_0x4e4fbe){while(--_0x4e4fbe){_0x3ccc8f['push'](_0x3ccc8f['shift']());}};_0x49959c(++_0x1e7f1e);}(_0x1794,0x12a));var _0x4179=function(_0x463ca5,_0x576d59){_0x463ca5=_0x463ca5-0x0;var _0x29f40d=_0x1794[_0x463ca5];return _0x29f40d;};'use strict';var _=require('lodash');var util=require(_0x4179('0x0'));var logger=require('../../config/logger')(_0x4179('0x1'));var moment=require(_0x4179('0x2'));var BPromise=require(_0x4179('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4179('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4179('0x5'));module[_0x4179('0x6')]=function(_0x521377,_0xefb38){return _0x521377[_0x4179('0x7')]('Schedule',attributes,{'tableName':_0x4179('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ffe121..9487c95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad3c=['code','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5baf32,_0x103278){var _0x539cae=function(_0x43c0c2){while(--_0x43c0c2){_0x5baf32['push'](_0x5baf32['shift']());}};_0x539cae(++_0x103278);}(_0xad3c,0x1e7));var _0xcad3=function(_0x259943,_0x2d9e4e){_0x259943=_0x259943-0x0;var _0x475569=_0xad3c[_0x259943];return _0x475569;};'use strict';var _=require(_0xcad3('0x0'));var util=require(_0xcad3('0x1'));var moment=require(_0xcad3('0x2'));var BPromise=require('bluebird');var rs=require(_0xcad3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcad3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcad3('0x5'))(_0xcad3('0x6'));var config=require(_0xcad3('0x7'));var jayson=require(_0xcad3('0x8'));var client=jayson['client'][_0xcad3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3fa7f0,_0x3934c6,_0x601f66){return new BPromise(function(_0x2e5ff9,_0xa5f552){return client[_0xcad3('0xa')](_0x3fa7f0,_0x601f66)[_0xcad3('0xb')](function(_0x4cab4e){logger[_0xcad3('0xc')](_0xcad3('0xd'),_0x3934c6,_0xcad3('0xe'));logger[_0xcad3('0xf')](_0xcad3('0x10'),_0x3934c6,'request\x20sent',JSON[_0xcad3('0x11')](_0x4cab4e));if(_0x4cab4e[_0xcad3('0x12')]){if(_0x4cab4e['error'][_0xcad3('0x13')]===0x1f4){logger[_0xcad3('0x12')]('Schedule,\x20%s,\x20%s',_0x3934c6,_0x4cab4e[_0xcad3('0x12')][_0xcad3('0x14')]);return _0xa5f552(_0x4cab4e['error'][_0xcad3('0x14')]);}logger[_0xcad3('0x12')](_0xcad3('0xd'),_0x3934c6,_0x4cab4e[_0xcad3('0x12')][_0xcad3('0x14')]);return _0x2e5ff9(_0x4cab4e[_0xcad3('0x12')][_0xcad3('0x14')]);}else{logger[_0xcad3('0xc')](_0xcad3('0xd'),_0x3934c6,_0xcad3('0xe'));_0x2e5ff9(_0x4cab4e[_0xcad3('0x15')]['message']);}})['catch'](function(_0xd5e74d){logger[_0xcad3('0x12')](_0xcad3('0xd'),_0x3934c6,_0xd5e74d);_0xa5f552(_0xd5e74d);});});}
\ No newline at end of file
+var _0x5181=['../../config/logger','rpc','../../config/environment','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','util','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2300f2,_0x315c5f){var _0x6bd508=function(_0x2fa0f6){while(--_0x2fa0f6){_0x2300f2['push'](_0x2300f2['shift']());}};_0x6bd508(++_0x315c5f);}(_0x5181,0x175));var _0x1518=function(_0x16b51e,_0x30cb17){_0x16b51e=_0x16b51e-0x0;var _0x27b91a=_0x5181[_0x16b51e];return _0x27b91a;};'use strict';var _=require('lodash');var util=require(_0x1518('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1518('0x1'));var fs=require('fs');var Redis=require(_0x1518('0x2'));var db=require(_0x1518('0x3'))['db'];var utils=require(_0x1518('0x4'));var logger=require(_0x1518('0x5'))(_0x1518('0x6'));var config=require(_0x1518('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1518('0x8')][_0x1518('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ba52f,_0x35b83d,_0x1614a7){return new BPromise(function(_0x3bce17,_0x4d8a36){return client[_0x1518('0xa')](_0x3ba52f,_0x1614a7)[_0x1518('0xb')](function(_0xd9d7bc){logger[_0x1518('0xc')](_0x1518('0xd'),_0x35b83d,_0x1518('0xe'));logger[_0x1518('0xf')]('Schedule,\x20%s,\x20%s,\x20%s',_0x35b83d,_0x1518('0xe'),JSON[_0x1518('0x10')](_0xd9d7bc));if(_0xd9d7bc['error']){if(_0xd9d7bc[_0x1518('0x11')][_0x1518('0x12')]===0x1f4){logger['error'](_0x1518('0xd'),_0x35b83d,_0xd9d7bc[_0x1518('0x11')][_0x1518('0x13')]);return _0x4d8a36(_0xd9d7bc[_0x1518('0x11')][_0x1518('0x13')]);}logger[_0x1518('0x11')](_0x1518('0xd'),_0x35b83d,_0xd9d7bc[_0x1518('0x11')][_0x1518('0x13')]);return _0x3bce17(_0xd9d7bc['error'][_0x1518('0x13')]);}else{logger[_0x1518('0xc')](_0x1518('0xd'),_0x35b83d,_0x1518('0xe'));_0x3bce17(_0xd9d7bc[_0x1518('0x14')][_0x1518('0x13')]);}})['catch'](function(_0x3815e5){logger[_0x1518('0x11')](_0x1518('0xd'),_0x35b83d,_0x3815e5);_0x4d8a36(_0x3815e5);});});}
\ No newline at end of file
index 82bb52d..8d4a1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9fd=['describe','/:id','show','/:id/download','post','create','put','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','/describe'];(function(_0x1fd511,_0x19f6e7){var _0x157b48=function(_0x52ef5a){while(--_0x52ef5a){_0x1fd511['push'](_0x1fd511['shift']());}};_0x157b48(++_0x19f6e7);}(_0xb9fd,0x104));var _0xdb9f=function(_0x523adf,_0x3e1620){_0x523adf=_0x523adf-0x0;var _0x283870=_0xb9fd[_0x523adf];return _0x283870;};'use strict';var multer=require(_0xdb9f('0x0'));var util=require(_0xdb9f('0x1'));var path=require('path');var timeout=require(_0xdb9f('0x2'));var express=require(_0xdb9f('0x3'));var router=express[_0xdb9f('0x4')]();var fs_extra=require(_0xdb9f('0x5'));var auth=require(_0xdb9f('0x6'));var interaction=require(_0xdb9f('0x7'));var config=require(_0xdb9f('0x8'));var controller=require(_0xdb9f('0x9'));router[_0xdb9f('0xa')]('/',auth[_0xdb9f('0xb')](),controller['index']);router['get'](_0xdb9f('0xc'),auth[_0xdb9f('0xb')](),controller[_0xdb9f('0xd')]);router['get'](_0xdb9f('0xe'),auth[_0xdb9f('0xb')](),controller[_0xdb9f('0xf')]);router[_0xdb9f('0xa')](_0xdb9f('0x10'),auth['isAuthenticated'](),controller['download']);router[_0xdb9f('0x11')]('/',auth[_0xdb9f('0xb')](),controller[_0xdb9f('0x12')]);router[_0xdb9f('0x13')](_0xdb9f('0xe'),auth['isAuthenticated'](),controller[_0xdb9f('0x14')]);router['delete'](_0xdb9f('0xe'),auth[_0xdb9f('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x52b9=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','/:id','/:id/download','download','create','update','delete','exports','multer','util','path'];(function(_0x4fdac2,_0x5d5118){var _0x395e08=function(_0x5c7138){while(--_0x5c7138){_0x4fdac2['push'](_0x4fdac2['shift']());}};_0x395e08(++_0x5d5118);}(_0x52b9,0x18d));var _0x952b=function(_0x3c015d,_0x452a75){_0x3c015d=_0x3c015d-0x0;var _0x533fde=_0x52b9[_0x3c015d];return _0x533fde;};'use strict';var multer=require(_0x952b('0x0'));var util=require(_0x952b('0x1'));var path=require(_0x952b('0x2'));var timeout=require(_0x952b('0x3'));var express=require(_0x952b('0x4'));var router=express[_0x952b('0x5')]();var fs_extra=require(_0x952b('0x6'));var auth=require(_0x952b('0x7'));var interaction=require(_0x952b('0x8'));var config=require(_0x952b('0x9'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x952b('0xa')](),controller['index']);router[_0x952b('0xb')]('/describe',auth[_0x952b('0xa')](),controller[_0x952b('0xc')]);router[_0x952b('0xb')](_0x952b('0xd'),auth[_0x952b('0xa')](),controller['show']);router[_0x952b('0xb')](_0x952b('0xe'),auth[_0x952b('0xa')](),controller[_0x952b('0xf')]);router['post']('/',auth[_0x952b('0xa')](),controller[_0x952b('0x10')]);router['put'](_0x952b('0xd'),auth['isAuthenticated'](),controller[_0x952b('0x11')]);router[_0x952b('0x12')](_0x952b('0xd'),auth[_0x952b('0xa')](),controller['destroy']);module[_0x952b('0x13')]=router;
\ No newline at end of file
index d9d1c88..14a8bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1678=['updatedAt','sequelize','moment','path','../../config/environment','exports','value','extname','getDataValue','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','format','toString','MM-DD-YYYY\x20HH:mm'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x1678,0x17b));var _0x8167=function(_0x4cf780,_0xf8f4c5){_0x4cf780=_0x4cf780-0x0;var _0x5c6923=_0x1678[_0x4cf780];return _0x5c6923;};'use strict';var Sequelize=require(_0x8167('0x0'));var moment=require(_0x8167('0x1'));var path=require(_0x8167('0x2'));var config=require(_0x8167('0x3'));module[_0x8167('0x4')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0x8167('0x5'))?path[_0x8167('0x6')](this[_0x8167('0x7')](_0x8167('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x8167('0x8')]},'channel':{'type':Sequelize[_0x8167('0x8')]},'value':{'type':Sequelize[_0x8167('0x8')],'set':function(_0x4ce075){var _0x34768e=_0x4ce075[_0x8167('0x9')](/\\/g,'/');this[_0x8167('0xa')]('value',_0x34768e);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x8167('0xb')],'set':function(_0x381a87){this['setDataValue'](_0x8167('0xc'),moment()[_0x8167('0xd')](_0x381a87,'ms'));this[_0x8167('0xa')](_0x8167('0xe'),moment());this[_0x8167('0xa')](_0x8167('0xf'),_0x381a87);}},'startedAt':{'type':Sequelize[_0x8167('0x10')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0x8167('0x11')]('MM-DD-YYYY\x20HH:mm')[_0x8167('0x12')]();}},'closedAt':{'type':Sequelize[_0x8167('0x10')],'get':function(){return moment(this[_0x8167('0x7')](_0x8167('0xe')))[_0x8167('0x11')]('MM-DD-YYYY\x20HH:mm')[_0x8167('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue']('createdAt'))['format'](_0x8167('0x13'))[_0x8167('0x12')]();}},'updatedAt':{'type':Sequelize[_0x8167('0x10')],'get':function(){return moment(this[_0x8167('0x7')](_0x8167('0x14')))[_0x8167('0x11')](_0x8167('0x13'))[_0x8167('0x12')]();}}};
\ No newline at end of file
+var _0x7af9=['createdAt','updatedAt','sequelize','path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','INTEGER','setDataValue','subtract','closedAt','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7af9,0x95));var _0x97af=function(_0xb2c52a,_0x29e0ba){_0xb2c52a=_0xb2c52a-0x0;var _0x1b2498=_0x7af9[_0xb2c52a];return _0x1b2498;};'use strict';var Sequelize=require(_0x97af('0x0'));var moment=require('moment');var path=require(_0x97af('0x1'));var config=require(_0x97af('0x2'));module['exports']={'format':{'type':Sequelize[_0x97af('0x3')],'get':function(){return this[_0x97af('0x4')](_0x97af('0x5'))?path[_0x97af('0x6')](this[_0x97af('0x4')]('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x97af('0x7')],'set':function(_0x966c4e){var _0x265d22=_0x966c4e[_0x97af('0x8')](/\\/g,'/');this['setDataValue'](_0x97af('0x5'),_0x265d22);}},'rating':{'type':Sequelize[_0x97af('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x97af('0x9')],'set':function(_0x4b866a){this[_0x97af('0xa')]('startedAt',moment()[_0x97af('0xb')](_0x4b866a,'ms'));this[_0x97af('0xa')](_0x97af('0xc'),moment());this[_0x97af('0xa')](_0x97af('0xd'),_0x4b866a);}},'startedAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this[_0x97af('0x4')](_0x97af('0xf')))[_0x97af('0x10')](_0x97af('0x11'))[_0x97af('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x97af('0x4')]('closedAt'))['format'](_0x97af('0x11'))[_0x97af('0x12')]();}},'createdAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this[_0x97af('0x4')](_0x97af('0x13')))[_0x97af('0x10')](_0x97af('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this['getDataValue'](_0x97af('0x14')))['format'](_0x97af('0x11'))['toString']();}}};
\ No newline at end of file
index af4c183..cc10af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','ScreenRecording','fieldName','type','model','differenceBy','format','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','name','options','includeAll','rows','catch','params','rawAttributes','intersection','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','decryptFile','ValidationError','filename','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','existsSync','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x293495,_0x53a507){var _0x209388=function(_0x514aa5){while(--_0x514aa5){_0x293495['push'](_0x293495['shift']());}};_0x209388(++_0x53a507);}(_0x7217,0x19e));var _0x7721=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x7217[_0x311c35];return _0x5cc50c;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x34')](_[_0x7721('0x2f')](_0x5c54f0,'name'),[_0x7721('0x35')]);_0xd7d703[_0x7721('0x36')]=_[_0x7721('0x37')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x38')]=_['intersection'](_0xd7d703[_0x7721('0x33')],_0xd7d703[_0x7721('0x36')]);_0x37b9f0[_0x7721('0x39')]=_['intersection'](_0xd7d703[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x158d98['query'][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')][_0x7721('0x3b')]?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3c')](_0x7721('0x3d'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0['offset']=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x3f')](_0x158d98[_0x7721('0x36')][_0x7721('0x3f')]);_0x37b9f0[_0x7721('0x40')]=qs['filters'](_['pick'](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98[_0x7721('0x36')][_0x7721('0x41')]){_0x37b9f0[_0x7721('0x40')]=_[_0x7721('0x42')](_0x37b9f0['where'],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4cf659){if(_0x4cf659[_0x7721('0x32')]!==_0x7721('0x43')){var _0x5a278e={};_0x5a278e[_0x4cf659[_0x7721('0x44')]]={'$like':'%'+_0x158d98[_0x7721('0x36')]['filter']+'%'};return _0x5a278e;}})});}_0x37b9f0=_['merge']({},_0x37b9f0,_0x158d98[_0x7721('0x45')]);var _0xfc4dc4={'where':_0x37b9f0[_0x7721('0x40')]};return db[_0x7721('0x30')]['count'](_0xfc4dc4)[_0x7721('0x29')](function(_0x120de9){_0x1da2d8[_0x7721('0x22')]=_0x120de9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x46')]){_0x37b9f0['include']=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a5b59){_0x1da2d8[_0x7721('0x47')]=_0x4a5b59;return _0x1da2d8;})[_0x7721('0x29')](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x48')](handleError(_0x1ea4d,null));};exports['show']=function(_0x1453d4,_0x11d853){var _0x1ad315={'raw':![],'where':{'id':_0x1453d4[_0x7721('0x49')]['id']}},_0x481fa8={};_0x481fa8[_0x7721('0x33')]=_[_0x7721('0x37')](db[_0x7721('0x30')][_0x7721('0x4a')]);_0x481fa8[_0x7721('0x36')]=_[_0x7721('0x37')](_0x1453d4['query']);_0x481fa8['filters']=_[_0x7721('0x4b')](_0x481fa8[_0x7721('0x33')],_0x481fa8[_0x7721('0x36')]);_0x1ad315[_0x7721('0x39')]=_[_0x7721('0x4b')](_0x481fa8[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x1453d4[_0x7721('0x36')][_0x7721('0x3a')]));_0x1ad315[_0x7721('0x39')]=_0x1ad315['attributes']['length']?_0x1ad315[_0x7721('0x39')]:_0x481fa8[_0x7721('0x33')];if(_0x1453d4[_0x7721('0x36')][_0x7721('0x46')]){_0x1ad315['include']=[{'all':!![]}];}_0x1ad315=_[_0x7721('0x42')]({},_0x1ad315,_0x1453d4[_0x7721('0x45')]);return db['ScreenRecording'][_0x7721('0x4c')](_0x1ad315)['then'](handleEntityNotFound(_0x11d853,null))[_0x7721('0x29')](respondWithResult(_0x11d853,null))['catch'](handleError(_0x11d853,null));};exports[_0x7721('0x4d')]=function(_0x196be4,_0xf17c40){return db['ScreenRecording'][_0x7721('0x4d')](_0x196be4[_0x7721('0x4e')],{})['then'](respondWithResult(_0xf17c40,0xc9))[_0x7721('0x48')](handleError(_0xf17c40,null));};exports[_0x7721('0x28')]=function(_0xf88e8c,_0x5c4078){if(_0xf88e8c[_0x7721('0x4e')]['id']){delete _0xf88e8c['body']['id'];}delete _0xf88e8c[_0x7721('0x4e')][_0x7721('0x4f')];delete _0xf88e8c[_0x7721('0x4e')][_0x7721('0x50')];delete _0xf88e8c[_0x7721('0x4e')][_0x7721('0x51')];delete _0xf88e8c[_0x7721('0x4e')][_0x7721('0x52')];return db[_0x7721('0x30')][_0x7721('0x4c')]({'where':{'id':_0xf88e8c[_0x7721('0x49')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x5c4078,null))[_0x7721('0x29')](saveUpdates(_0xf88e8c[_0x7721('0x4e')],null))[_0x7721('0x29')](respondWithResult(_0x5c4078,null))['catch'](handleError(_0x5c4078,null));};exports[_0x7721('0x53')]=function(_0x2f6f30,_0x8e1214){return db[_0x7721('0x30')][_0x7721('0x53')]()[_0x7721('0x29')](respondWithResult(_0x8e1214,null))[_0x7721('0x48')](handleError(_0x8e1214,null));};exports['download']=function(_0x234bee,_0x17036e,_0x134908){var _0x3b7382=require(_0x7721('0x54'));var _0x9c0d4=![];var _0x7fbd6c={};if(_0x234bee[_0x7721('0x36')][_0x7721('0x32')]&&_0x234bee[_0x7721('0x36')][_0x7721('0x32')]==='uniqueid'){_0x7fbd6c[_0x7721('0x55')]=_0x234bee[_0x7721('0x49')]['id'];}else{_0x7fbd6c['id']=_0x234bee[_0x7721('0x49')]['id'];}return db[_0x7721('0x30')][_0x7721('0x4c')]({'where':_0x7fbd6c,'attributes':['id',_0x7721('0x52')],'raw':!![]})[_0x7721('0x29')](handleEntityNotFound(_0x17036e,null))[_0x7721('0x29')](function(_0x360882){if(_0x360882){var _0x287452=path[_0x7721('0x56')](config[_0x7721('0x57')],_0x7721('0x58'),_0x360882[_0x7721('0x52')]);var _0x300ea4=util['format']('%s.cypher',_0x287452);if(fs['existsSync'](_0x300ea4)){_0x9c0d4=!![];return _0x3b7382[_0x7721('0x59')](_0x300ea4,_0x287452,config['secrets']['recording'])['then'](function(){return _0x360882;});}return _0x360882;}})['then'](function(_0x47925a){if(_0x47925a){var _0x219181=path[_0x7721('0x56')](config['root'],_0x7721('0x58'),_0x47925a['value']);if(!fs['existsSync'](_0x219181)){throw new db['Sequelize'][(_0x7721('0x5a'))]('ScreenRecording\x20not\x20found');}if(_0x47925a['filename']){return _0x17036e['download'](_0x219181,_0x47925a[_0x7721('0x5b')]+path[_0x7721('0x5c')](_0x219181),function(){if(_0x9c0d4){fs[_0x7721('0x5d')](_0x219181);}});}else{return _0x17036e['download'](_0x219181,function(_0x2a025c){if(_0x9c0d4){fs[_0x7721('0x5d')](_0x219181);}});}}})[_0x7721('0x48')](function(_0x168343){if(_0x168343[_0x7721('0x5e')]===_0x7721('0x5f')){_0x17036e[_0x7721('0x1c')](0x194)[_0x7721('0x2d')](_0x7721('0x60'));}else{return handleError(_0x17036e,null);}});};exports[_0x7721('0x2a')]=function(_0x3b03cf,_0x10666e){return db[_0x7721('0x30')][_0x7721('0x4c')]({'where':{'id':_0x3b03cf[_0x7721('0x49')]['id']}})['then'](function(_0x233e5d){if(_[_0x7721('0x61')](_0x233e5d)){throw new ReferenceError(_0x7721('0x62'));}return _0x233e5d;})[_0x7721('0x29')](function(_0x542e30){var _0x103009=path[_0x7721('0x56')](config['root'],_0x7721('0x58'),_0x542e30['value']);logger[_0x7721('0x63')](_0x7721('0x64'),_0x103009);if(!_[_0x7721('0x61')](_0x542e30[_0x7721('0x52')])&&fs[_0x7721('0x65')](_0x103009)){logger[_0x7721('0x63')](_0x7721('0x66')+_0x103009+_0x7721('0x67'));fs[_0x7721('0x68')](_0x103009);}_0x103009=_0x103009+'.cypher';if(!_[_0x7721('0x61')](_0x542e30[_0x7721('0x52')])&&fs[_0x7721('0x65')](_0x103009)){logger[_0x7721('0x63')](_0x7721('0x66')+_0x103009+_0x7721('0x67'));fs[_0x7721('0x68')](_0x103009);}return _0x542e30;})['then'](function(_0xb6f2f2){if(!_0xb6f2f2)throw new InternalError();return _0xb6f2f2[_0x7721('0x2a')]();})['then'](function(){_0x10666e[_0x7721('0x1c')](0xcc)['end']();})[_0x7721('0x48')](handleError(_0x10666e,null));};
\ No newline at end of file
+var _0x6f47=['zip-dir','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','ScreenRecording','fieldName','type','key','model','format','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','fields','catch','create','body','duration','createdAt','closedAt','value','find','describe','uniqueid','join','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','unlink','Not\x20found','isNil','Entity\x20not\x20found','root','server/files/screen_recordings','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','info','rimraf'];(function(_0x117e30,_0x343bd7){var _0x266c91=function(_0x4f668f){while(--_0x4f668f){_0x117e30['push'](_0x117e30['shift']());}};_0x266c91(++_0x343bd7);}(_0x6f47,0xc7));var _0x76f4=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6f47[_0x31e29a];return _0x32d892;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x76f4('0x0'));var zipdir=require(_0x76f4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x76f4('0x2'));var moment=require('moment');var BPromise=require(_0x76f4('0x3'));var Mustache=require('mustache');var util=require(_0x76f4('0x4'));var path=require(_0x76f4('0x5'));var sox=require(_0x76f4('0x6'));var csv=require(_0x76f4('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x76f4('0x8'));var _=require(_0x76f4('0x9'));var squel=require(_0x76f4('0xa'));var crypto=require('crypto');var jsforce=require(_0x76f4('0xb'));var deskjs=require(_0x76f4('0xc'));var toCsv=require(_0x76f4('0x7'));var querystring=require(_0x76f4('0xd'));var Papa=require(_0x76f4('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x76f4('0xf'));var as=require(_0x76f4('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x76f4('0x11'));var utils=require(_0x76f4('0x12'));var config=require(_0x76f4('0x13'));var licenseUtil=require(_0x76f4('0x14'));var db=require(_0x76f4('0x15'))['db'];function respondWithStatusCode(_0xafd21e,_0xf7e347){_0xf7e347=_0xf7e347||0xcc;return function(_0x3ec740){if(_0x3ec740){return _0xafd21e[_0x76f4('0x16')](_0xf7e347);}return _0xafd21e['status'](_0xf7e347)[_0x76f4('0x17')]();};}function respondWithResult(_0x30dabf,_0x5da1ff){_0x5da1ff=_0x5da1ff||0xc8;return function(_0x4b6021){if(_0x4b6021){return _0x30dabf['status'](_0x5da1ff)[_0x76f4('0x18')](_0x4b6021);}};}function respondWithFilteredResult(_0x3dd240,_0x979946){return function(_0x40252d){if(_0x40252d){var _0x3d8f5a=typeof _0x979946[_0x76f4('0x19')]===_0x76f4('0x1a')&&typeof _0x979946[_0x76f4('0x1b')]===_0x76f4('0x1a');var _0xb159a9=_0x40252d[_0x76f4('0x1c')];var _0x2d4bd1=_0x3d8f5a?0x0:_0x979946[_0x76f4('0x19')];var _0x38450e=_0x3d8f5a?_0x40252d[_0x76f4('0x1c')]:_0x979946[_0x76f4('0x19')]+_0x979946[_0x76f4('0x1b')];var _0x3e809f;if(_0x38450e>=_0xb159a9){_0x38450e=_0xb159a9;_0x3e809f=0xc8;}else{_0x3e809f=0xce;}_0x3dd240[_0x76f4('0x1d')](_0x3e809f);return _0x3dd240[_0x76f4('0x1e')](_0x76f4('0x1f'),_0x2d4bd1+'-'+_0x38450e+'/'+_0xb159a9)[_0x76f4('0x18')](_0x40252d);}return null;};}function patchUpdates(_0x5bf3d5){return function(_0x262937){try{jsonpatch['apply'](_0x262937,_0x5bf3d5,!![]);}catch(_0x13f3b1){return BPromise[_0x76f4('0x20')](_0x13f3b1);}return _0x262937[_0x76f4('0x21')]();};}function saveUpdates(_0x517c00,_0x567f2a){return function(_0x52da65){if(_0x52da65){return _0x52da65[_0x76f4('0x22')](_0x517c00)[_0x76f4('0x23')](function(_0x14bfe5){return _0x14bfe5;});}return null;};}function removeEntity(_0x2b6d51,_0x42ef70){return function(_0x4786c9){if(_0x4786c9){return _0x4786c9[_0x76f4('0x24')]()['then'](function(){_0x2b6d51['status'](0xcc)[_0x76f4('0x17')]();});}};}function handleEntityNotFound(_0x497913,_0x288365){return function(_0x5355bd){if(!_0x5355bd){_0x497913['sendStatus'](0x194);}return _0x5355bd;};}function handleError(_0x4f6087,_0x470242){_0x470242=_0x470242||0x1f4;return function(_0x38300d){logger[_0x76f4('0x25')](_0x38300d[_0x76f4('0x26')]);if(_0x38300d[_0x76f4('0x27')]){delete _0x38300d[_0x76f4('0x27')];}_0x4f6087['status'](_0x470242)[_0x76f4('0x28')](_0x38300d);};}exports['index']=function(_0x5346be,_0x5b3f07){var _0x10ddb4={},_0x30f02e={},_0x41dea4={'count':0x0,'rows':[]};var _0x1dea0e=_['map'](db[_0x76f4('0x29')]['rawAttributes'],function(_0x259c26){return{'name':_0x259c26[_0x76f4('0x2a')],'type':_0x259c26[_0x76f4('0x2b')][_0x76f4('0x2c')]};});_0x30f02e[_0x76f4('0x2d')]=_['differenceBy'](_['map'](_0x1dea0e,_0x76f4('0x27')),[_0x76f4('0x2e')]);_0x30f02e[_0x76f4('0x2f')]=_[_0x76f4('0x30')](_0x5346be[_0x76f4('0x2f')]);_0x30f02e[_0x76f4('0x31')]=_[_0x76f4('0x32')](_0x30f02e[_0x76f4('0x2d')],_0x30f02e[_0x76f4('0x2f')]);_0x10ddb4[_0x76f4('0x33')]=_[_0x76f4('0x32')](_0x30f02e[_0x76f4('0x2d')],qs['fields'](_0x5346be['query']['fields']));_0x10ddb4['attributes']=_0x10ddb4[_0x76f4('0x33')][_0x76f4('0x34')]?_0x10ddb4[_0x76f4('0x33')]:_0x30f02e[_0x76f4('0x2d')];if(!_0x5346be[_0x76f4('0x2f')]['hasOwnProperty'](_0x76f4('0x35'))){_0x10ddb4[_0x76f4('0x1b')]=qs[_0x76f4('0x1b')](_0x5346be[_0x76f4('0x2f')][_0x76f4('0x1b')]);_0x10ddb4[_0x76f4('0x19')]=qs[_0x76f4('0x19')](_0x5346be[_0x76f4('0x2f')][_0x76f4('0x19')]);}_0x10ddb4[_0x76f4('0x36')]=qs[_0x76f4('0x37')](_0x5346be[_0x76f4('0x2f')][_0x76f4('0x37')]);_0x10ddb4[_0x76f4('0x38')]=qs[_0x76f4('0x31')](_[_0x76f4('0x39')](_0x5346be[_0x76f4('0x2f')],_0x30f02e[_0x76f4('0x31')]),_0x1dea0e);if(_0x5346be['query'][_0x76f4('0x3a')]){_0x10ddb4[_0x76f4('0x38')]=_[_0x76f4('0x3b')](_0x10ddb4['where'],{'$or':_['map'](_0x1dea0e,function(_0x237fba){if(_0x237fba['type']!==_0x76f4('0x3c')){var _0x5ac18f={};_0x5ac18f[_0x237fba[_0x76f4('0x27')]]={'$like':'%'+_0x5346be[_0x76f4('0x2f')][_0x76f4('0x3a')]+'%'};return _0x5ac18f;}})});}_0x10ddb4=_[_0x76f4('0x3b')]({},_0x10ddb4,_0x5346be[_0x76f4('0x3d')]);var _0x2d99e3={'where':_0x10ddb4[_0x76f4('0x38')]};return db[_0x76f4('0x29')][_0x76f4('0x1c')](_0x2d99e3)[_0x76f4('0x23')](function(_0x5340a9){_0x41dea4['count']=_0x5340a9;if(_0x5346be[_0x76f4('0x2f')][_0x76f4('0x3e')]){_0x10ddb4[_0x76f4('0x3f')]=[{'all':!![]}];}return db[_0x76f4('0x29')][_0x76f4('0x40')](_0x10ddb4);})[_0x76f4('0x23')](function(_0x42754d){_0x41dea4[_0x76f4('0x41')]=_0x42754d;return _0x41dea4;})[_0x76f4('0x23')](respondWithFilteredResult(_0x5b3f07,_0x10ddb4))['catch'](handleError(_0x5b3f07,null));};exports[_0x76f4('0x42')]=function(_0xe744af,_0x4f0d1a){var _0x5ad90a={'raw':![],'where':{'id':_0xe744af[_0x76f4('0x43')]['id']}},_0x26c411={};_0x26c411[_0x76f4('0x2d')]=_[_0x76f4('0x30')](db[_0x76f4('0x29')]['rawAttributes']);_0x26c411[_0x76f4('0x2f')]=_[_0x76f4('0x30')](_0xe744af[_0x76f4('0x2f')]);_0x26c411[_0x76f4('0x31')]=_[_0x76f4('0x32')](_0x26c411[_0x76f4('0x2d')],_0x26c411['query']);_0x5ad90a[_0x76f4('0x33')]=_[_0x76f4('0x32')](_0x26c411[_0x76f4('0x2d')],qs['fields'](_0xe744af['query'][_0x76f4('0x44')]));_0x5ad90a[_0x76f4('0x33')]=_0x5ad90a[_0x76f4('0x33')][_0x76f4('0x34')]?_0x5ad90a[_0x76f4('0x33')]:_0x26c411['model'];if(_0xe744af['query'][_0x76f4('0x3e')]){_0x5ad90a['include']=[{'all':!![]}];}_0x5ad90a=_[_0x76f4('0x3b')]({},_0x5ad90a,_0xe744af[_0x76f4('0x3d')]);return db['ScreenRecording']['find'](_0x5ad90a)[_0x76f4('0x23')](handleEntityNotFound(_0x4f0d1a,null))[_0x76f4('0x23')](respondWithResult(_0x4f0d1a,null))[_0x76f4('0x45')](handleError(_0x4f0d1a,null));};exports[_0x76f4('0x46')]=function(_0x55e4cc,_0x9baa0f){return db[_0x76f4('0x29')][_0x76f4('0x46')](_0x55e4cc['body'],{})[_0x76f4('0x23')](respondWithResult(_0x9baa0f,0xc9))[_0x76f4('0x45')](handleError(_0x9baa0f,null));};exports['update']=function(_0x56d905,_0x4ab620){if(_0x56d905[_0x76f4('0x47')]['id']){delete _0x56d905[_0x76f4('0x47')]['id'];}delete _0x56d905[_0x76f4('0x47')][_0x76f4('0x48')];delete _0x56d905['body'][_0x76f4('0x49')];delete _0x56d905['body'][_0x76f4('0x4a')];delete _0x56d905[_0x76f4('0x47')][_0x76f4('0x4b')];return db['ScreenRecording'][_0x76f4('0x4c')]({'where':{'id':_0x56d905[_0x76f4('0x43')]['id']}})['then'](handleEntityNotFound(_0x4ab620,null))[_0x76f4('0x23')](saveUpdates(_0x56d905[_0x76f4('0x47')],null))[_0x76f4('0x23')](respondWithResult(_0x4ab620,null))[_0x76f4('0x45')](handleError(_0x4ab620,null));};exports[_0x76f4('0x4d')]=function(_0x479c4b,_0x1041da){return db['ScreenRecording'][_0x76f4('0x4d')]()[_0x76f4('0x23')](respondWithResult(_0x1041da,null))[_0x76f4('0x45')](handleError(_0x1041da,null));};exports['download']=function(_0x141b1c,_0x46c944,_0x3fc794){var _0x3bec16=require('../../components/encryptor');var _0x2028e9=![];var _0xf11e07={};if(_0x141b1c[_0x76f4('0x2f')][_0x76f4('0x2b')]&&_0x141b1c['query'][_0x76f4('0x2b')]==='uniqueid'){_0xf11e07[_0x76f4('0x4e')]=_0x141b1c[_0x76f4('0x43')]['id'];}else{_0xf11e07['id']=_0x141b1c['params']['id'];}return db['ScreenRecording'][_0x76f4('0x4c')]({'where':_0xf11e07,'attributes':['id',_0x76f4('0x4b')],'raw':!![]})[_0x76f4('0x23')](handleEntityNotFound(_0x46c944,null))['then'](function(_0x27ba06){if(_0x27ba06){var _0x15ec0f=path[_0x76f4('0x4f')](config['root'],'server/files/screen_recordings',_0x27ba06[_0x76f4('0x4b')]);var _0x367238=util['format']('%s.cypher',_0x15ec0f);if(fs[_0x76f4('0x50')](_0x367238)){_0x2028e9=!![];return _0x3bec16[_0x76f4('0x51')](_0x367238,_0x15ec0f,config[_0x76f4('0x52')][_0x76f4('0x53')])[_0x76f4('0x23')](function(){return _0x27ba06;});}return _0x27ba06;}})[_0x76f4('0x23')](function(_0x97be11){if(_0x97be11){var _0x36a52a=path[_0x76f4('0x4f')](config['root'],'server/files/screen_recordings',_0x97be11['value']);if(!fs[_0x76f4('0x50')](_0x36a52a)){throw new db[(_0x76f4('0x54'))][(_0x76f4('0x55'))](_0x76f4('0x56'));}if(_0x97be11['filename']){return _0x46c944['download'](_0x36a52a,_0x97be11[_0x76f4('0x57')]+path['extname'](_0x36a52a),function(){if(_0x2028e9){fs[_0x76f4('0x58')](_0x36a52a);}});}else{return _0x46c944['download'](_0x36a52a,function(_0x4285dd){if(_0x2028e9){fs[_0x76f4('0x58')](_0x36a52a);}});}}})[_0x76f4('0x45')](function(_0x3317a4){if(_0x3317a4['message']===_0x76f4('0x56')){_0x46c944[_0x76f4('0x1d')](0x194)[_0x76f4('0x28')](_0x76f4('0x59'));}else{return handleError(_0x46c944,null);}});};exports[_0x76f4('0x24')]=function(_0x2a6f19,_0x46245f){return db['ScreenRecording'][_0x76f4('0x4c')]({'where':{'id':_0x2a6f19[_0x76f4('0x43')]['id']}})[_0x76f4('0x23')](function(_0x320a87){if(_[_0x76f4('0x5a')](_0x320a87)){throw new ReferenceError(_0x76f4('0x5b'));}return _0x320a87;})[_0x76f4('0x23')](function(_0x551d38){var _0x5724c3=path['join'](config[_0x76f4('0x5c')],_0x76f4('0x5d'),_0x551d38[_0x76f4('0x4b')]);logger['info'](_0x76f4('0x5e'),_0x5724c3);if(!_['isNil'](_0x551d38[_0x76f4('0x4b')])&&fs[_0x76f4('0x50')](_0x5724c3)){logger['info'](_0x76f4('0x5f')+_0x5724c3+_0x76f4('0x60'));fs[_0x76f4('0x61')](_0x5724c3);}_0x5724c3=_0x5724c3+_0x76f4('0x62');if(!_[_0x76f4('0x5a')](_0x551d38[_0x76f4('0x4b')])&&fs[_0x76f4('0x50')](_0x5724c3)){logger[_0x76f4('0x63')](_0x76f4('0x5f')+_0x5724c3+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x76f4('0x61')](_0x5724c3);}return _0x551d38;})['then'](function(_0x318fcb){if(!_0x318fcb)throw new InternalError();return _0x318fcb[_0x76f4('0x24')]();})[_0x76f4('0x23')](function(){_0x46245f[_0x76f4('0x1d')](0xcc)[_0x76f4('0x17')]();})[_0x76f4('0x45')](handleError(_0x46245f,null));};
\ No newline at end of file
index c142af6..af08c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f0=['exports','define','interactionid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x509aa3,_0x44e086){var _0x14da6f=function(_0x167cf8){while(--_0x167cf8){_0x509aa3['push'](_0x509aa3['shift']());}};_0x14da6f(++_0x44e086);}(_0x36f0,0xe0));var _0x036f=function(_0x5e2c70,_0x108e64){_0x5e2c70=_0x5e2c70-0x0;var _0x1e6cbc=_0x36f0[_0x5e2c70];return _0x1e6cbc;};'use strict';var _=require(_0x036f('0x0'));var util=require(_0x036f('0x1'));var logger=require(_0x036f('0x2'))(_0x036f('0x3'));var moment=require('moment');var BPromise=require(_0x036f('0x4'));var rp=require(_0x036f('0x5'));var fs=require('fs');var path=require(_0x036f('0x6'));var rimraf=require(_0x036f('0x7'));var config=require(_0x036f('0x8'));var attributes=require(_0x036f('0x9'));module[_0x036f('0xa')]=function(_0x4927da,_0x54236b){return _0x4927da[_0x036f('0xb')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0x036f('0xc'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x379d=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util'];(function(_0x4816a5,_0x41efac){var _0x166cd1=function(_0x8bc3f7){while(--_0x8bc3f7){_0x4816a5['push'](_0x4816a5['shift']());}};_0x166cd1(++_0x41efac);}(_0x379d,0x191));var _0xd379=function(_0x4aad01,_0x47660a){_0x4aad01=_0x4aad01-0x0;var _0x6923b=_0x379d[_0x4aad01];return _0x6923b;};'use strict';var _=require(_0xd379('0x0'));var util=require(_0xd379('0x1'));var logger=require(_0xd379('0x2'))(_0xd379('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd379('0x4'));var fs=require('fs');var path=require(_0xd379('0x5'));var rimraf=require(_0xd379('0x6'));var config=require(_0xd379('0x7'));var attributes=require('./screenRecording.attributes');module[_0xd379('0x8')]=function(_0x1885c8,_0x11d697){return _0x1885c8[_0xd379('0x9')](_0xd379('0xa'),attributes,{'tableName':_0xd379('0xb'),'paranoid':![],'indexes':[{'name':_0xd379('0xc'),'fields':[_0xd379('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 8284d26..0a5d461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x336a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird'];(function(_0x2850c0,_0x1363a7){var _0x21e830=function(_0x3ec70a){while(--_0x3ec70a){_0x2850c0['push'](_0x2850c0['shift']());}};_0x21e830(++_0x1363a7);}(_0x336a,0x1f0));var _0xa336=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x336a[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0xa336('0x0'));var util=require(_0xa336('0x1'));var moment=require(_0xa336('0x2'));var BPromise=require(_0xa336('0x3'));var rs=require(_0xa336('0x4'));var fs=require('fs');var Redis=require(_0xa336('0x5'));var db=require(_0xa336('0x6'))['db'];var utils=require(_0xa336('0x7'));var logger=require(_0xa336('0x8'))(_0xa336('0x9'));var config=require(_0xa336('0xa'));var jayson=require(_0xa336('0xb'));var client=jayson['client'][_0xa336('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x448d4f,_0x2e15af,_0x551985){return new BPromise(function(_0x432c5e,_0x5e3a45){return client[_0xa336('0xd')](_0x448d4f,_0x551985)[_0xa336('0xe')](function(_0x49ad79){logger['info'](_0xa336('0xf'),_0x2e15af,_0xa336('0x10'));logger[_0xa336('0x11')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2e15af,'request\x20sent',JSON[_0xa336('0x12')](_0x49ad79));if(_0x49ad79[_0xa336('0x13')]){if(_0x49ad79[_0xa336('0x13')][_0xa336('0x14')]===0x1f4){logger['error'](_0xa336('0xf'),_0x2e15af,_0x49ad79[_0xa336('0x13')][_0xa336('0x15')]);return _0x5e3a45(_0x49ad79[_0xa336('0x13')][_0xa336('0x15')]);}logger[_0xa336('0x13')]('ScreenRecording,\x20%s,\x20%s',_0x2e15af,_0x49ad79[_0xa336('0x13')][_0xa336('0x15')]);return _0x432c5e(_0x49ad79[_0xa336('0x13')][_0xa336('0x15')]);}else{logger[_0xa336('0x16')](_0xa336('0xf'),_0x2e15af,_0xa336('0x10'));_0x432c5e(_0x49ad79[_0xa336('0x17')]['message']);}})[_0xa336('0x18')](function(_0x57acb8){logger['error'](_0xa336('0xf'),_0x2e15af,_0x57acb8);_0x5e3a45(_0x57acb8);});});}
\ No newline at end of file
+var _0x2ab2=['code','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3c769d,_0x215272){var _0x1c19e2=function(_0x3ddc0d){while(--_0x3ddc0d){_0x3c769d['push'](_0x3c769d['shift']());}};_0x1c19e2(++_0x215272);}(_0x2ab2,0x139));var _0x22ab=function(_0x50bcc8,_0x4ede2a){_0x50bcc8=_0x50bcc8-0x0;var _0x1c7728=_0x2ab2[_0x50bcc8];return _0x1c7728;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x22ab('0x0'));var BPromise=require(_0x22ab('0x1'));var rs=require(_0x22ab('0x2'));var fs=require('fs');var Redis=require(_0x22ab('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x22ab('0x4'));var logger=require(_0x22ab('0x5'))('rpc');var config=require(_0x22ab('0x6'));var jayson=require(_0x22ab('0x7'));var client=jayson[_0x22ab('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x31ec84,_0x33c470,_0x332c07){return new BPromise(function(_0x25e586,_0x1b6cb3){return client[_0x22ab('0x9')](_0x31ec84,_0x332c07)[_0x22ab('0xa')](function(_0x477d36){logger['info'](_0x22ab('0xb'),_0x33c470,_0x22ab('0xc'));logger[_0x22ab('0xd')](_0x22ab('0xe'),_0x33c470,_0x22ab('0xc'),JSON[_0x22ab('0xf')](_0x477d36));if(_0x477d36[_0x22ab('0x10')]){if(_0x477d36[_0x22ab('0x10')][_0x22ab('0x11')]===0x1f4){logger['error'](_0x22ab('0xb'),_0x33c470,_0x477d36['error'][_0x22ab('0x12')]);return _0x1b6cb3(_0x477d36[_0x22ab('0x10')][_0x22ab('0x12')]);}logger[_0x22ab('0x10')](_0x22ab('0xb'),_0x33c470,_0x477d36['error'][_0x22ab('0x12')]);return _0x25e586(_0x477d36[_0x22ab('0x10')]['message']);}else{logger[_0x22ab('0x13')](_0x22ab('0xb'),_0x33c470,_0x22ab('0xc'));_0x25e586(_0x477d36[_0x22ab('0x14')]['message']);}})[_0x22ab('0x15')](function(_0x283127){logger['error'](_0x22ab('0xb'),_0x33c470,_0x283127);_0x1b6cb3(_0x283127);});});}
\ No newline at end of file
index 13b4090..187599a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdad3=['originalname','post','file','addLogo','diskStorage','server/files/images/logos/','logologin','extname','single','addLogoLogin','/:id/preferred','addPreferred','favicon','addFavicon','update','exports','multer','util','connect-timeout','Router','fs-extra','../../config/environment','./setting.controller','isAuthenticated','index','get','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','join','root','format','%s%s','logo'];(function(_0x4adcf2,_0x455cee){var _0x2e1279=function(_0x28c1a9){while(--_0x28c1a9){_0x4adcf2['push'](_0x4adcf2['shift']());}};_0x2e1279(++_0x455cee);}(_0xdad3,0xb4));var _0x3dad=function(_0xe8b1c8,_0x52efa4){_0xe8b1c8=_0xe8b1c8-0x0;var _0x439c44=_0xdad3[_0xe8b1c8];return _0x439c44;};'use strict';var multer=require(_0x3dad('0x0'));var util=require(_0x3dad('0x1'));var path=require('path');var timeout=require(_0x3dad('0x2'));var express=require('express');var router=express[_0x3dad('0x3')]();var fs_extra=require(_0x3dad('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3dad('0x5'));var controller=require(_0x3dad('0x6'));router['get']('/',auth[_0x3dad('0x7')](),controller[_0x3dad('0x8')]);router[_0x3dad('0x9')]('/now',controller['getDate']);router[_0x3dad('0x9')](_0x3dad('0xa'),controller['show']);router['get'](_0x3dad('0xb'),controller[_0x3dad('0xc')]);router[_0x3dad('0x9')](_0x3dad('0xd'),controller[_0x3dad('0xe')]);router[_0x3dad('0x9')](_0x3dad('0xf'),controller[_0x3dad('0x10')]);router[_0x3dad('0x9')]('/:id/preferred',controller[_0x3dad('0x11')]);router[_0x3dad('0x9')](_0x3dad('0x12'),controller[_0x3dad('0x13')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x286adf,_0x2b0a90,_0x54a572){_0x54a572(null,path[_0x3dad('0x14')](config[_0x3dad('0x15')],'server/files/images/logos/'));},'filename':function(_0x387def,_0x53fa61,_0xd17479){_0xd17479(null,util[_0x3dad('0x16')](_0x3dad('0x17'),_0x3dad('0x18'),path['extname'](_0x53fa61[_0x3dad('0x19')])));}})});router[_0x3dad('0x1a')](_0x3dad('0xb'),upload['single'](_0x3dad('0x1b')),controller[_0x3dad('0x1c')]);var upload=multer({'storage':multer[_0x3dad('0x1d')]({'destination':function(_0x4171a6,_0x8a2a9e,_0x46bf70){_0x46bf70(null,path['join'](config[_0x3dad('0x15')],_0x3dad('0x1e')));},'filename':function(_0xe32932,_0x31898a,_0xc968e8){_0xc968e8(null,util[_0x3dad('0x16')](_0x3dad('0x17'),_0x3dad('0x1f'),path[_0x3dad('0x20')](_0x31898a[_0x3dad('0x19')])));}})});router[_0x3dad('0x1a')](_0x3dad('0xd'),upload[_0x3dad('0x21')](_0x3dad('0x1b')),controller[_0x3dad('0x22')]);var upload=multer({'storage':multer[_0x3dad('0x1d')]({'destination':function(_0xa5bcf3,_0x59bf17,_0x387885){_0x387885(null,path[_0x3dad('0x14')](config[_0x3dad('0x15')],_0x3dad('0x1e')));},'filename':function(_0x41dd0a,_0x1ad0f3,_0x8765de){_0x8765de(null,util[_0x3dad('0x16')](_0x3dad('0x17'),'preferred',path['extname'](_0x1ad0f3[_0x3dad('0x19')])));}})});router['post'](_0x3dad('0x23'),upload['single'](_0x3dad('0x1b')),controller[_0x3dad('0x24')]);var upload=multer({'storage':multer[_0x3dad('0x1d')]({'destination':function(_0x4e0795,_0x1f5b08,_0x571d00){_0x571d00(null,path[_0x3dad('0x14')](config[_0x3dad('0x15')],_0x3dad('0x1e')));},'filename':function(_0x14cff2,_0x58f1b7,_0x31e575){_0x31e575(null,util['format'](_0x3dad('0x17'),_0x3dad('0x25'),path[_0x3dad('0x20')](_0x58f1b7['originalname'])));}})});router[_0x3dad('0x1a')]('/:id/favicon',upload[_0x3dad('0x21')](_0x3dad('0x1b')),controller[_0x3dad('0x26')]);router['put'](_0x3dad('0xa'),auth['isAuthenticated'](),controller[_0x3dad('0x27')]);module[_0x3dad('0x28')]=router;
\ No newline at end of file
+var _0x4be5=['../../config/environment','./setting.controller','get','isAuthenticated','index','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','single','addLogo','logologin','file','addLogoLogin','preferred','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4be5,0x1f0));var _0x54be=function(_0x11a55c,_0x4eced9){_0x11a55c=_0x11a55c-0x0;var _0x26c390=_0x4be5[_0x11a55c];return _0x26c390;};'use strict';var multer=require(_0x54be('0x0'));var util=require(_0x54be('0x1'));var path=require(_0x54be('0x2'));var timeout=require('connect-timeout');var express=require(_0x54be('0x3'));var router=express[_0x54be('0x4')]();var fs_extra=require(_0x54be('0x5'));var auth=require(_0x54be('0x6'));var interaction=require(_0x54be('0x7'));var config=require(_0x54be('0x8'));var controller=require(_0x54be('0x9'));router[_0x54be('0xa')]('/',auth[_0x54be('0xb')](),controller[_0x54be('0xc')]);router[_0x54be('0xa')]('/now',controller['getDate']);router[_0x54be('0xa')](_0x54be('0xd'),controller['show']);router[_0x54be('0xa')](_0x54be('0xe'),controller[_0x54be('0xf')]);router[_0x54be('0xa')](_0x54be('0x10'),controller[_0x54be('0x11')]);router[_0x54be('0xa')](_0x54be('0x12'),controller[_0x54be('0x13')]);router[_0x54be('0xa')]('/:id/preferred',controller[_0x54be('0x14')]);router[_0x54be('0xa')](_0x54be('0x15'),controller[_0x54be('0x16')]);var upload=multer({'storage':multer[_0x54be('0x17')]({'destination':function(_0x1ab838,_0x1e8644,_0x21a3e6){_0x21a3e6(null,path[_0x54be('0x18')](config[_0x54be('0x19')],_0x54be('0x1a')));},'filename':function(_0x302a7e,_0x6f00f8,_0xf1d344){_0xf1d344(null,util[_0x54be('0x1b')](_0x54be('0x1c'),_0x54be('0x1d'),path[_0x54be('0x1e')](_0x6f00f8[_0x54be('0x1f')])));}})});router[_0x54be('0x20')]('/:id/logo',upload[_0x54be('0x21')]('file'),controller[_0x54be('0x22')]);var upload=multer({'storage':multer[_0x54be('0x17')]({'destination':function(_0x3a00f4,_0x242a1a,_0x250811){_0x250811(null,path[_0x54be('0x18')](config['root'],_0x54be('0x1a')));},'filename':function(_0x4ca163,_0xeae9af,_0x4ff235){_0x4ff235(null,util[_0x54be('0x1b')]('%s%s',_0x54be('0x23'),path[_0x54be('0x1e')](_0xeae9af[_0x54be('0x1f')])));}})});router[_0x54be('0x20')](_0x54be('0x10'),upload['single'](_0x54be('0x24')),controller[_0x54be('0x25')]);var upload=multer({'storage':multer[_0x54be('0x17')]({'destination':function(_0x3a02e1,_0x31414b,_0x2862f2){_0x2862f2(null,path[_0x54be('0x18')](config[_0x54be('0x19')],'server/files/images/logos/'));},'filename':function(_0x58bbe7,_0x161536,_0x4ca320){_0x4ca320(null,util['format'](_0x54be('0x1c'),_0x54be('0x26'),path[_0x54be('0x1e')](_0x161536[_0x54be('0x1f')])));}})});router[_0x54be('0x20')]('/:id/preferred',upload[_0x54be('0x21')](_0x54be('0x24')),controller['addPreferred']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x157225,_0x304da8,_0x3cc59e){_0x3cc59e(null,path[_0x54be('0x18')](config[_0x54be('0x19')],_0x54be('0x1a')));},'filename':function(_0x4ed136,_0x42e1e0,_0x26d0e2){_0x26d0e2(null,util[_0x54be('0x1b')](_0x54be('0x1c'),'favicon',path[_0x54be('0x1e')](_0x42e1e0['originalname'])));}})});router['post']('/:id/favicon',upload['single'](_0x54be('0x24')),controller['addFavicon']);router[_0x54be('0x27')]('/:id',auth[_0x54be('0xb')](),controller[_0x54be('0x28')]);module[_0x54be('0x29')]=router;
\ No newline at end of file
index df04df3..93e927f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x3813b0,_0x133d4c){var _0x518c32=function(_0x5aeca4){while(--_0x5aeca4){_0x3813b0['push'](_0x3813b0['shift']());}};_0x518c32(++_0x133d4c);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x35fa94,_0x2f9f3d){var _0xfb31f3=function(_0x2fb4af){while(--_0x2fb4af){_0x35fa94['push'](_0x35fa94['shift']());}};_0xfb31f3(++_0x2f9f3d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
index 9cd908a..3b6c3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861c=['http','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','count','offset','set','apply','reject','update','stack','name','send','index','map','Setting','type','key','model','keys','filters','intersection','fields','attributes','length','query','hasOwnProperty','nolimit','limit','order','sort','merge','where','VIRTUAL','filter','includeAll','include','show','rawAttributes','options','find','body','params','addLogo','file','filename','logo','../../config/license/util','getLogo','server/files/images/logos','getLicense','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','Sequelize','gdpr','securePassword','getPreferred','defaultFavicon','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client'];(function(_0xe5b196,_0x269317){var _0x4877a9=function(_0x2e07ab){while(--_0x2e07ab){_0xe5b196['push'](_0xe5b196['shift']());}};_0x4877a9(++_0x269317);}(_0x861c,0xdb));var _0xc861=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x861c[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require(_0xc861('0x0'));var rimraf=require(_0xc861('0x1'));var zipdir=require(_0xc861('0x2'));var jsonpatch=require(_0xc861('0x3'));var rp=require(_0xc861('0x4'));var moment=require(_0xc861('0x5'));var BPromise=require(_0xc861('0x6'));var Mustache=require(_0xc861('0x7'));var util=require(_0xc861('0x8'));var path=require(_0xc861('0x9'));var sox=require(_0xc861('0xa'));var csv=require(_0xc861('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc861('0xc'));var _=require(_0xc861('0xd'));var squel=require(_0xc861('0xe'));var crypto=require(_0xc861('0xf'));var jsforce=require(_0xc861('0x10'));var deskjs=require(_0xc861('0x11'));var toCsv=require(_0xc861('0xb'));var querystring=require(_0xc861('0x12'));var Papa=require(_0xc861('0x13'));var Redis=require(_0xc861('0x14'));var authService=require(_0xc861('0x15'));var qs=require(_0xc861('0x16'));var as=require(_0xc861('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc861('0x18'))(_0xc861('0x19'));var utils=require(_0xc861('0x1a'));var config=require(_0xc861('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xc861('0x1c'))['db'];var jayson=require(_0xc861('0x1d'));var client=jayson[_0xc861('0x1e')][_0xc861('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x514ed9,_0x55e8da,_0x210ceb,_0x289a68){return new BPromise(function(_0x5f3c1a,_0x190fab){var _0x28b3cb=_0x289a68||client;return _0x28b3cb['request'](_0x514ed9,_0x210ceb)[_0xc861('0x20')](function(_0x3ca46d){logger[_0xc861('0x21')](_0xc861('0x22'),_0x55e8da,_0xc861('0x23'));logger[_0xc861('0x24')]('Setting,\x20%s,\x20%s,\x20%s',_0x55e8da,'request\x20sent',JSON[_0xc861('0x25')](_0x3ca46d));if(_0x3ca46d['error']){if(_0x3ca46d[_0xc861('0x26')][_0xc861('0x27')]===0x1f4){logger[_0xc861('0x26')]('Setting,\x20%s,\x20%s',_0x55e8da,_0x3ca46d[_0xc861('0x26')]['message']);return _0x190fab(_0x3ca46d[_0xc861('0x26')][_0xc861('0x28')]);}logger[_0xc861('0x26')](_0xc861('0x22'),_0x55e8da,_0x3ca46d[_0xc861('0x26')][_0xc861('0x28')]);return _0x5f3c1a(_0x3ca46d[_0xc861('0x26')][_0xc861('0x28')]);}else{logger[_0xc861('0x21')](_0xc861('0x22'),_0x55e8da,_0xc861('0x23'));_0x5f3c1a(_0x3ca46d[_0xc861('0x29')][_0xc861('0x28')]);}})[_0xc861('0x2a')](function(_0x9900dc){logger[_0xc861('0x26')]('Setting,\x20%s,\x20%s',_0x55e8da,_0x9900dc);_0x190fab(_0x9900dc);});});}function respondWithStatusCode(_0x2cab96,_0xd1b342){_0xd1b342=_0xd1b342||0xcc;return function(_0x172b90){if(_0x172b90){return _0x2cab96[_0xc861('0x2b')](_0xd1b342);}return _0x2cab96[_0xc861('0x2c')](_0xd1b342)[_0xc861('0x2d')]();};}function respondWithResult(_0x4e64f0,_0x11abae){_0x11abae=_0x11abae||0xc8;return function(_0x1bd814){if(_0x1bd814){return _0x4e64f0[_0xc861('0x2c')](_0x11abae)[_0xc861('0x2e')](_0x1bd814);}};}function respondWithFilteredResult(_0x38a737,_0x1cefa7){return function(_0x48cf94){if(_0x48cf94){var _0x1c0a9f=typeof _0x1cefa7['offset']==='undefined'&&typeof _0x1cefa7['limit']===_0xc861('0x2f');var _0x157b85=_0x48cf94[_0xc861('0x30')];var _0x30b9f4=_0x1c0a9f?0x0:_0x1cefa7[_0xc861('0x31')];var _0xff9c32=_0x1c0a9f?_0x48cf94[_0xc861('0x30')]:_0x1cefa7[_0xc861('0x31')]+_0x1cefa7['limit'];var _0x38978f;if(_0xff9c32>=_0x157b85){_0xff9c32=_0x157b85;_0x38978f=0xc8;}else{_0x38978f=0xce;}_0x38a737[_0xc861('0x2c')](_0x38978f);return _0x38a737[_0xc861('0x32')]('Content-Range',_0x30b9f4+'-'+_0xff9c32+'/'+_0x157b85)[_0xc861('0x2e')](_0x48cf94);}return null;};}function patchUpdates(_0x5811ce){return function(_0x26da6e){try{jsonpatch[_0xc861('0x33')](_0x26da6e,_0x5811ce,!![]);}catch(_0x29ecd7){return BPromise[_0xc861('0x34')](_0x29ecd7);}return _0x26da6e['save']();};}function saveUpdates(_0x253040,_0x15e5fe){return function(_0x106a10){if(_0x106a10){return _0x106a10[_0xc861('0x35')](_0x253040)[_0xc861('0x20')](function(_0x2b9ee9){return _0x2b9ee9;});}return null;};}function removeEntity(_0x284169,_0x1d5689){return function(_0x213602){if(_0x213602){return _0x213602['destroy']()[_0xc861('0x20')](function(){_0x284169['status'](0xcc)[_0xc861('0x2d')]();});}};}function handleEntityNotFound(_0x3da7a3,_0x229c8d){return function(_0x2061d5){if(!_0x2061d5){_0x3da7a3[_0xc861('0x2b')](0x194);}return _0x2061d5;};}function handleError(_0x2dbef7,_0x11f57c){_0x11f57c=_0x11f57c||0x1f4;return function(_0x3e0faf){logger[_0xc861('0x26')](_0x3e0faf[_0xc861('0x36')]);if(_0x3e0faf[_0xc861('0x37')]){delete _0x3e0faf[_0xc861('0x37')];}_0x2dbef7['status'](_0x11f57c)[_0xc861('0x38')](_0x3e0faf);};}exports[_0xc861('0x39')]=function(_0x25a220,_0x10b0ae){var _0x43e5e9={},_0x34c287={},_0x3a80dd={'count':0x0,'rows':[]};var _0x31a3e6=_[_0xc861('0x3a')](db[_0xc861('0x3b')]['rawAttributes'],function(_0x39555a){return{'name':_0x39555a['fieldName'],'type':_0x39555a[_0xc861('0x3c')][_0xc861('0x3d')]};});_0x34c287[_0xc861('0x3e')]=_[_0xc861('0x3a')](_0x31a3e6,'name');_0x34c287['query']=_[_0xc861('0x3f')](_0x25a220['query']);_0x34c287[_0xc861('0x40')]=_[_0xc861('0x41')](_0x34c287[_0xc861('0x3e')],_0x34c287['query']);_0x43e5e9['attributes']=_[_0xc861('0x41')](_0x34c287['model'],qs[_0xc861('0x42')](_0x25a220['query'][_0xc861('0x42')]));_0x43e5e9[_0xc861('0x43')]=_0x43e5e9[_0xc861('0x43')][_0xc861('0x44')]?_0x43e5e9[_0xc861('0x43')]:_0x34c287[_0xc861('0x3e')];if(!_0x25a220[_0xc861('0x45')][_0xc861('0x46')](_0xc861('0x47'))){_0x43e5e9[_0xc861('0x48')]=qs[_0xc861('0x48')](_0x25a220[_0xc861('0x45')]['limit']);_0x43e5e9[_0xc861('0x31')]=qs[_0xc861('0x31')](_0x25a220['query'][_0xc861('0x31')]);}_0x43e5e9[_0xc861('0x49')]=qs[_0xc861('0x4a')](_0x25a220[_0xc861('0x45')][_0xc861('0x4a')]);_0x43e5e9['where']=qs['filters'](_['pick'](_0x25a220[_0xc861('0x45')],_0x34c287[_0xc861('0x40')]),_0x31a3e6);if(_0x25a220[_0xc861('0x45')]['filter']){_0x43e5e9['where']=_[_0xc861('0x4b')](_0x43e5e9[_0xc861('0x4c')],{'$or':_[_0xc861('0x3a')](_0x31a3e6,function(_0x3dcaf8){if(_0x3dcaf8[_0xc861('0x3c')]!==_0xc861('0x4d')){var _0x3cdbab={};_0x3cdbab[_0x3dcaf8['name']]={'$like':'%'+_0x25a220[_0xc861('0x45')][_0xc861('0x4e')]+'%'};return _0x3cdbab;}})});}_0x43e5e9=_[_0xc861('0x4b')]({},_0x43e5e9,_0x25a220['options']);var _0x2b5448={'where':_0x43e5e9['where']};return db[_0xc861('0x3b')][_0xc861('0x30')](_0x2b5448)['then'](function(_0x42e6b2){_0x3a80dd[_0xc861('0x30')]=_0x42e6b2;if(_0x25a220[_0xc861('0x45')][_0xc861('0x4f')]){_0x43e5e9[_0xc861('0x50')]=[{'all':!![]}];}return db[_0xc861('0x3b')]['findAll'](_0x43e5e9);})[_0xc861('0x20')](function(_0x19767d){_0x3a80dd['rows']=_0x19767d;return _0x3a80dd;})[_0xc861('0x20')](respondWithFilteredResult(_0x10b0ae,_0x43e5e9))['catch'](handleError(_0x10b0ae,null));};exports[_0xc861('0x51')]=function(_0x27193a,_0x17ba59){var _0x3f846e={'raw':![],'where':{'id':_0x27193a['params']['id']}},_0x58ae26={};_0x58ae26[_0xc861('0x3e')]=_[_0xc861('0x3f')](db[_0xc861('0x3b')][_0xc861('0x52')]);_0x58ae26[_0xc861('0x45')]=_[_0xc861('0x3f')](_0x27193a[_0xc861('0x45')]);_0x58ae26[_0xc861('0x40')]=_[_0xc861('0x41')](_0x58ae26[_0xc861('0x3e')],_0x58ae26[_0xc861('0x45')]);_0x3f846e[_0xc861('0x43')]=_[_0xc861('0x41')](_0x58ae26[_0xc861('0x3e')],qs[_0xc861('0x42')](_0x27193a[_0xc861('0x45')]['fields']));_0x3f846e[_0xc861('0x43')]=_0x3f846e['attributes']['length']?_0x3f846e[_0xc861('0x43')]:_0x58ae26[_0xc861('0x3e')];if(_0x27193a[_0xc861('0x45')][_0xc861('0x4f')]){_0x3f846e[_0xc861('0x50')]=[{'all':!![]}];}_0x3f846e=_[_0xc861('0x4b')]({},_0x3f846e,_0x27193a[_0xc861('0x53')]);return db[_0xc861('0x3b')][_0xc861('0x54')](_0x3f846e)[_0xc861('0x20')](handleEntityNotFound(_0x17ba59,null))[_0xc861('0x20')](respondWithResult(_0x17ba59,null))['catch'](handleError(_0x17ba59,null));};exports[_0xc861('0x35')]=function(_0x33f49b,_0x309487){if(_0x33f49b[_0xc861('0x55')]['id']){delete _0x33f49b['body']['id'];}return db[_0xc861('0x3b')]['find']({'where':{'id':_0x33f49b[_0xc861('0x56')]['id']}})[_0xc861('0x20')](handleEntityNotFound(_0x309487,null))[_0xc861('0x20')](saveUpdates(_0x33f49b[_0xc861('0x55')],null))[_0xc861('0x20')](respondWithResult(_0x309487,null))[_0xc861('0x2a')](handleError(_0x309487,null));};exports[_0xc861('0x57')]=function(_0x515b1b,_0x353d09,_0x1e9404){if(_0x515b1b[_0xc861('0x58')]&&_0x515b1b[_0xc861('0x58')][_0xc861('0x59')]){_0x515b1b[_0xc861('0x55')][_0xc861('0x5a')]=_0x515b1b[_0xc861('0x58')][_0xc861('0x59')];}return db['Setting'][_0xc861('0x54')]({'where':{'id':_0x515b1b['params']['id']}})[_0xc861('0x20')](handleEntityNotFound(_0x353d09,null))['then'](saveUpdates(_0x515b1b[_0xc861('0x55')],null))['then'](respondWithResult(_0x353d09,null))[_0xc861('0x2a')](handleError(_0x353d09,null));};exports['addLogoLogin']=function(_0x467cd4,_0x6f779d,_0x1fa4ae){if(_0x467cd4[_0xc861('0x58')]&&_0x467cd4['file'][_0xc861('0x59')]){_0x467cd4[_0xc861('0x55')]['loginLogo']=_0x467cd4['file'][_0xc861('0x59')];}return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0x467cd4['params']['id']}})[_0xc861('0x20')](handleEntityNotFound(_0x6f779d,null))[_0xc861('0x20')](saveUpdates(_0x467cd4[_0xc861('0x55')],null))[_0xc861('0x20')](respondWithResult(_0x6f779d,null))['catch'](handleError(_0x6f779d,null));};var utilLicense=require(_0xc861('0x5b'));exports[_0xc861('0x5c')]=function(_0x54eb57,_0x58d299,_0x20d09c){var _0x564234=_0xc861('0x5d');var _0x3b19b0={'custom':![]};return utilLicense[_0xc861('0x5e')]()[_0xc861('0x20')](function(_0x54e727){if(_0x54e727){_0x3b19b0=_0x54e727;}return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0x54eb57[_0xc861('0x56')]['id']},'attributes':[_0xc861('0x5a'),_0xc861('0x5f'),_0xc861('0x60'),_0xc861('0x61'),_0xc861('0x62'),_0xc861('0x63'),_0xc861('0x64'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x58d299,null))[_0xc861('0x20')](function(_0x13a352){if(_0x13a352){var _0x4ce9d2=_0x13a352['logo']&&fs[_0xc861('0x65')](path[_0xc861('0x66')](config[_0xc861('0x67')],_0x564234,_[_0xc861('0x68')](_0x13a352['logo'])))?path[_0xc861('0x66')](config[_0xc861('0x67')],_0x564234,_[_0xc861('0x68')](_0x13a352[_0xc861('0x5a')])):path[_0xc861('0x66')](config[_0xc861('0x67')],_0x564234,_['toLower'](_0xc861('0x69')));var _0x1226be=_0xc861('0x6a')+_[_0xc861('0x6b')](_0xc861('0x5a'));if(_0x13a352[_0x1226be]||!_0x3b19b0[_0xc861('0x6c')]){_0x4ce9d2=path[_0xc861('0x66')](config['root'],_0x564234,_[_0xc861('0x68')](_0xc861('0x69')));}if(!fs[_0xc861('0x65')](_0x4ce9d2)){throw new db['Sequelize'][(_0xc861('0x6d'))](_[_0xc861('0x6b')](_0xc861('0x5a'))+_0xc861('0x6e'));}return _0x58d299[_0xc861('0x6f')](_0x4ce9d2);}})[_0xc861('0x2a')](handleError(_0x58d299,null));};var utilLicense=require('../../config/license/util');exports[_0xc861('0x70')]=function(_0xe36feb,_0xde2f63,_0x521300){var _0x2fc059=_0xc861('0x5d');var _0x54adb1={'custom':![]};return utilLicense[_0xc861('0x5e')]()[_0xc861('0x20')](function(_0x54cfbe){if(_0x54cfbe){_0x54adb1=_0x54cfbe;}return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0xe36feb[_0xc861('0x56')]['id']},'attributes':[_0xc861('0x5a'),_0xc861('0x5f'),'preferred',_0xc861('0x61'),_0xc861('0x62'),_0xc861('0x63'),'defaultPreferred','defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0xde2f63,null))[_0xc861('0x20')](function(_0x3a9663){if(_0x3a9663){var _0x513b1f=_0x3a9663[_0xc861('0x5f')]&&fs[_0xc861('0x65')](path[_0xc861('0x66')](config['root'],_0x2fc059,_[_0xc861('0x68')](_0x3a9663[_0xc861('0x5f')])))?path[_0xc861('0x66')](config[_0xc861('0x67')],_0x2fc059,_['toLower'](_0x3a9663[_0xc861('0x5f')])):path[_0xc861('0x66')](config['root'],_0x2fc059,_[_0xc861('0x68')](_0xc861('0x71')));var _0x2afb9a='default'+_['upperFirst']('loginLogo');if(_0x3a9663[_0x2afb9a]||!_0x54adb1[_0xc861('0x6c')]){_0x513b1f=path['join'](config['root'],_0x2fc059,_[_0xc861('0x68')](_0xc861('0x71')));}if(!fs[_0xc861('0x65')](_0x513b1f)){throw new db[(_0xc861('0x72'))]['ValidationError'](_[_0xc861('0x6b')]('loginLogo')+_0xc861('0x6e'));}return _0xde2f63[_0xc861('0x6f')](_0x513b1f);}})[_0xc861('0x2a')](handleError(_0xde2f63,null));};exports[_0xc861('0x73')]=function(_0x2f3232,_0x5d91ce){return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0x2f3232[_0xc861('0x56')]['id']},'attributes':[_0xc861('0x74')]})[_0xc861('0x20')](respondWithResult(_0x5d91ce,null))[_0xc861('0x2a')](handleError(_0x5d91ce,null));};exports['addPreferred']=function(_0x88832c,_0x12ab26,_0x1195f0){if(_0x88832c[_0xc861('0x58')]&&_0x88832c[_0xc861('0x58')][_0xc861('0x59')]){_0x88832c[_0xc861('0x55')]['preferred']=_0x88832c[_0xc861('0x58')][_0xc861('0x59')];}return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0x88832c[_0xc861('0x56')]['id']}})[_0xc861('0x20')](handleEntityNotFound(_0x12ab26,null))[_0xc861('0x20')](saveUpdates(_0x88832c[_0xc861('0x55')],null))['then'](respondWithResult(_0x12ab26,null))['catch'](handleError(_0x12ab26,null));};var utilLicense=require(_0xc861('0x5b'));exports[_0xc861('0x75')]=function(_0x4bf852,_0x16899a,_0x4a934f){var _0x4868b2=_0xc861('0x5d');var _0x479ebc={'custom':![]};return utilLicense[_0xc861('0x5e')]()['then'](function(_0x21dd81){if(_0x21dd81){_0x479ebc=_0x21dd81;}return db[_0xc861('0x3b')]['find']({'where':{'id':_0x4bf852[_0xc861('0x56')]['id']},'attributes':[_0xc861('0x5a'),_0xc861('0x5f'),_0xc861('0x60'),_0xc861('0x61'),'defaultLogo','defaultLoginLogo',_0xc861('0x64'),_0xc861('0x76')],'raw':!![]});})['then'](handleEntityNotFound(_0x16899a,null))[_0xc861('0x20')](function(_0x7f0d80){if(_0x7f0d80){var _0x4e2e7a=_0x7f0d80['preferred']&&fs[_0xc861('0x65')](path[_0xc861('0x66')](config['root'],_0x4868b2,_[_0xc861('0x68')](_0x7f0d80[_0xc861('0x60')])))?path[_0xc861('0x66')](config[_0xc861('0x67')],_0x4868b2,_[_0xc861('0x68')](_0x7f0d80['preferred'])):path[_0xc861('0x66')](config[_0xc861('0x67')],_0x4868b2,_['toLower'](_0xc861('0x77')));var _0x69ca04=_0xc861('0x6a')+_['upperFirst']('preferred');if(_0x7f0d80[_0x69ca04]||!_0x479ebc[_0xc861('0x6c')]||!_0x479ebc['preferred']){_0x4e2e7a=path[_0xc861('0x66')](config[_0xc861('0x67')],_0x4868b2,_['toLower'](_0xc861('0x77')));}if(!fs[_0xc861('0x65')](_0x4e2e7a)){throw new db[(_0xc861('0x72'))][(_0xc861('0x6d'))](_['upperFirst']('preferred')+_0xc861('0x6e'));}return _0x16899a[_0xc861('0x6f')](_0x4e2e7a);}})[_0xc861('0x2a')](handleError(_0x16899a,null));};exports[_0xc861('0x78')]=function(_0x4d62f9,_0x3d8af1,_0x57a202){if(_0x4d62f9[_0xc861('0x58')]&&_0x4d62f9[_0xc861('0x58')][_0xc861('0x59')]){_0x4d62f9[_0xc861('0x55')][_0xc861('0x61')]=_0x4d62f9[_0xc861('0x58')][_0xc861('0x59')];}return db['Setting'][_0xc861('0x54')]({'where':{'id':_0x4d62f9[_0xc861('0x56')]['id']}})[_0xc861('0x20')](handleEntityNotFound(_0x3d8af1,null))['then'](saveUpdates(_0x4d62f9[_0xc861('0x55')],null))['then'](respondWithResult(_0x3d8af1,null))[_0xc861('0x2a')](handleError(_0x3d8af1,null));};var utilLicense=require(_0xc861('0x5b'));exports[_0xc861('0x79')]=function(_0x34fb26,_0x5bb6a9,_0x533693){var _0x4298e4=_0xc861('0x5d');var _0x3011f5={'custom':![]};return utilLicense['getLicense']()[_0xc861('0x20')](function(_0x4de3b3){if(_0x4de3b3){_0x3011f5=_0x4de3b3;}return db[_0xc861('0x3b')][_0xc861('0x54')]({'where':{'id':_0x34fb26[_0xc861('0x56')]['id']},'attributes':[_0xc861('0x5a'),_0xc861('0x5f'),_0xc861('0x60'),'favicon',_0xc861('0x62'),_0xc861('0x63'),'defaultPreferred',_0xc861('0x76')],'raw':!![]});})[_0xc861('0x20')](handleEntityNotFound(_0x5bb6a9,null))[_0xc861('0x20')](function(_0x25167c){if(_0x25167c){var _0x1aee9f=_0x25167c['favicon']&&fs[_0xc861('0x65')](path[_0xc861('0x66')](config['root'],_0x4298e4,_['toLower'](_0x25167c[_0xc861('0x61')])))?path[_0xc861('0x66')](config[_0xc861('0x67')],_0x4298e4,_[_0xc861('0x68')](_0x25167c[_0xc861('0x61')])):path[_0xc861('0x66')](config['root'],_0x4298e4,_['toLower'](_0xc861('0x7a')));var _0x2e5b16=_0xc861('0x6a')+_['upperFirst'](_0xc861('0x61'));if(_0x25167c[_0x2e5b16]||!_0x3011f5[_0xc861('0x6c')]){_0x1aee9f=path[_0xc861('0x66')](config[_0xc861('0x67')],_0x4298e4,_[_0xc861('0x68')](_0xc861('0x7a')));}if(!fs[_0xc861('0x65')](_0x1aee9f)){throw new db[(_0xc861('0x72'))][(_0xc861('0x6d'))](_[_0xc861('0x6b')](_0xc861('0x61'))+'\x20not\x20found');}return _0x5bb6a9['download'](_0x1aee9f);}})[_0xc861('0x2a')](handleError(_0x5bb6a9,null));};exports[_0xc861('0x7b')]=function(_0x3da137,_0x5a5790){var _0x54bf9c={'offset':moment()['utcOffset']()};_0x54bf9c['now']=moment()['utcOffset'](_0x54bf9c[_0xc861('0x31')])[_0xc861('0x7c')]('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x5a5790[_0xc861('0x2c')](0xc8)[_0xc861('0x38')](_0x54bf9c);};
\ No newline at end of file
+var _0x11cd=['toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','download','getLogoLogin','getLicense','favicon','default_loginLogo.svg','\x20not\x20found','gdpr','securePassword','addPreferred','getPreferred','defaultLogo','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','status','json','offset','limit','undefined','count','Content-Range','apply','reject','then','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','options','Setting','includeAll','include','findAll','rows','params','body','addLogo','file','filename','find','loginLogo','getLogo','server/files/images/logos','logo','preferred','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x11cd,0x194));var _0xd11c=function(_0x12d736,_0x387aae){_0x12d736=_0x12d736-0x0;var _0x3ff082=_0x11cd[_0x12d736];return _0x3ff082;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd11c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd11c('0x1'));var rp=require(_0xd11c('0x2'));var moment=require(_0xd11c('0x3'));var BPromise=require(_0xd11c('0x4'));var Mustache=require(_0xd11c('0x5'));var util=require('util');var path=require(_0xd11c('0x6'));var sox=require(_0xd11c('0x7'));var csv=require(_0xd11c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd11c('0x9'));var _=require('lodash');var squel=require(_0xd11c('0xa'));var crypto=require(_0xd11c('0xb'));var jsforce=require(_0xd11c('0xc'));var deskjs=require(_0xd11c('0xd'));var toCsv=require(_0xd11c('0x8'));var querystring=require(_0xd11c('0xe'));var Papa=require('papaparse');var Redis=require(_0xd11c('0xf'));var authService=require(_0xd11c('0x10'));var qs=require(_0xd11c('0x11'));var as=require(_0xd11c('0x12'));var hardwareService=require(_0xd11c('0x13'));var logger=require('../../config/logger')(_0xd11c('0x14'));var utils=require(_0xd11c('0x15'));var config=require(_0xd11c('0x16'));var licenseUtil=require(_0xd11c('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0xd11c('0x18'));var client=jayson[_0xd11c('0x19')][_0xd11c('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x5327dd,_0x36394b,_0x2d4071,_0x5d3195){return new BPromise(function(_0x28ecd8,_0x1b8300){var _0x3c8a98=_0x5d3195||client;return _0x3c8a98[_0xd11c('0x1b')](_0x5327dd,_0x2d4071)['then'](function(_0x53a934){logger['info'](_0xd11c('0x1c'),_0x36394b,_0xd11c('0x1d'));logger[_0xd11c('0x1e')](_0xd11c('0x1f'),_0x36394b,_0xd11c('0x1d'),JSON[_0xd11c('0x20')](_0x53a934));if(_0x53a934['error']){if(_0x53a934[_0xd11c('0x21')][_0xd11c('0x22')]===0x1f4){logger['error'](_0xd11c('0x1c'),_0x36394b,_0x53a934[_0xd11c('0x21')]['message']);return _0x1b8300(_0x53a934[_0xd11c('0x21')][_0xd11c('0x23')]);}logger['error'](_0xd11c('0x1c'),_0x36394b,_0x53a934['error'][_0xd11c('0x23')]);return _0x28ecd8(_0x53a934[_0xd11c('0x21')][_0xd11c('0x23')]);}else{logger[_0xd11c('0x24')](_0xd11c('0x1c'),_0x36394b,'request\x20sent');_0x28ecd8(_0x53a934['result'][_0xd11c('0x23')]);}})[_0xd11c('0x25')](function(_0x3ecb08){logger['error']('Setting,\x20%s,\x20%s',_0x36394b,_0x3ecb08);_0x1b8300(_0x3ecb08);});});}function respondWithStatusCode(_0x55ce8b,_0x37e002){_0x37e002=_0x37e002||0xcc;return function(_0x14922a){if(_0x14922a){return _0x55ce8b['sendStatus'](_0x37e002);}return _0x55ce8b[_0xd11c('0x26')](_0x37e002)['end']();};}function respondWithResult(_0x538a44,_0x4297a7){_0x4297a7=_0x4297a7||0xc8;return function(_0x475b76){if(_0x475b76){return _0x538a44[_0xd11c('0x26')](_0x4297a7)[_0xd11c('0x27')](_0x475b76);}};}function respondWithFilteredResult(_0x54e947,_0x250d6a){return function(_0x27196d){if(_0x27196d){var _0x1fef59=typeof _0x250d6a[_0xd11c('0x28')]==='undefined'&&typeof _0x250d6a[_0xd11c('0x29')]===_0xd11c('0x2a');var _0x2e95e2=_0x27196d['count'];var _0x234ce8=_0x1fef59?0x0:_0x250d6a[_0xd11c('0x28')];var _0x6c9247=_0x1fef59?_0x27196d[_0xd11c('0x2b')]:_0x250d6a[_0xd11c('0x28')]+_0x250d6a[_0xd11c('0x29')];var _0x1ea842;if(_0x6c9247>=_0x2e95e2){_0x6c9247=_0x2e95e2;_0x1ea842=0xc8;}else{_0x1ea842=0xce;}_0x54e947[_0xd11c('0x26')](_0x1ea842);return _0x54e947['set'](_0xd11c('0x2c'),_0x234ce8+'-'+_0x6c9247+'/'+_0x2e95e2)[_0xd11c('0x27')](_0x27196d);}return null;};}function patchUpdates(_0x11071c){return function(_0x1aefa0){try{jsonpatch[_0xd11c('0x2d')](_0x1aefa0,_0x11071c,!![]);}catch(_0x157e9f){return BPromise[_0xd11c('0x2e')](_0x157e9f);}return _0x1aefa0['save']();};}function saveUpdates(_0x1fd9c8,_0x3acae0){return function(_0x1f6cd4){if(_0x1f6cd4){return _0x1f6cd4['update'](_0x1fd9c8)[_0xd11c('0x2f')](function(_0x1830d1){return _0x1830d1;});}return null;};}function removeEntity(_0x8ca4ae,_0x5ded86){return function(_0x57eac9){if(_0x57eac9){return _0x57eac9[_0xd11c('0x30')]()[_0xd11c('0x2f')](function(){_0x8ca4ae[_0xd11c('0x26')](0xcc)[_0xd11c('0x31')]();});}};}function handleEntityNotFound(_0x2fd8a3,_0x112d48){return function(_0x543a9b){if(!_0x543a9b){_0x2fd8a3[_0xd11c('0x32')](0x194);}return _0x543a9b;};}function handleError(_0x1eaa58,_0x32c4c8){_0x32c4c8=_0x32c4c8||0x1f4;return function(_0x1e28b0){logger[_0xd11c('0x21')](_0x1e28b0[_0xd11c('0x33')]);if(_0x1e28b0[_0xd11c('0x34')]){delete _0x1e28b0[_0xd11c('0x34')];}_0x1eaa58['status'](_0x32c4c8)[_0xd11c('0x35')](_0x1e28b0);};}exports[_0xd11c('0x36')]=function(_0x4060fe,_0x3ca10d){var _0x215f5d={},_0x44551b={},_0x161207={'count':0x0,'rows':[]};var _0x443761=_[_0xd11c('0x37')](db['Setting'][_0xd11c('0x38')],function(_0x34c4b6){return{'name':_0x34c4b6[_0xd11c('0x39')],'type':_0x34c4b6[_0xd11c('0x3a')][_0xd11c('0x3b')]};});_0x44551b[_0xd11c('0x3c')]=_['map'](_0x443761,_0xd11c('0x34'));_0x44551b['query']=_[_0xd11c('0x3d')](_0x4060fe[_0xd11c('0x3e')]);_0x44551b[_0xd11c('0x3f')]=_[_0xd11c('0x40')](_0x44551b[_0xd11c('0x3c')],_0x44551b[_0xd11c('0x3e')]);_0x215f5d['attributes']=_['intersection'](_0x44551b['model'],qs[_0xd11c('0x41')](_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x41')]));_0x215f5d[_0xd11c('0x42')]=_0x215f5d[_0xd11c('0x42')][_0xd11c('0x43')]?_0x215f5d[_0xd11c('0x42')]:_0x44551b[_0xd11c('0x3c')];if(!_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x44')](_0xd11c('0x45'))){_0x215f5d[_0xd11c('0x29')]=qs[_0xd11c('0x29')](_0x4060fe['query'][_0xd11c('0x29')]);_0x215f5d[_0xd11c('0x28')]=qs[_0xd11c('0x28')](_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x28')]);}_0x215f5d[_0xd11c('0x46')]=qs['sort'](_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x47')]);_0x215f5d['where']=qs[_0xd11c('0x3f')](_[_0xd11c('0x48')](_0x4060fe[_0xd11c('0x3e')],_0x44551b['filters']),_0x443761);if(_0x4060fe[_0xd11c('0x3e')]['filter']){_0x215f5d['where']=_[_0xd11c('0x49')](_0x215f5d[_0xd11c('0x4a')],{'$or':_[_0xd11c('0x37')](_0x443761,function(_0x2c343c){if(_0x2c343c[_0xd11c('0x3a')]!==_0xd11c('0x4b')){var _0x428844={};_0x428844[_0x2c343c[_0xd11c('0x34')]]={'$like':'%'+_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x4c')]+'%'};return _0x428844;}})});}_0x215f5d=_[_0xd11c('0x49')]({},_0x215f5d,_0x4060fe[_0xd11c('0x4d')]);var _0xa88421={'where':_0x215f5d[_0xd11c('0x4a')]};return db[_0xd11c('0x4e')][_0xd11c('0x2b')](_0xa88421)[_0xd11c('0x2f')](function(_0x3ce8a4){_0x161207[_0xd11c('0x2b')]=_0x3ce8a4;if(_0x4060fe[_0xd11c('0x3e')][_0xd11c('0x4f')]){_0x215f5d[_0xd11c('0x50')]=[{'all':!![]}];}return db[_0xd11c('0x4e')][_0xd11c('0x51')](_0x215f5d);})[_0xd11c('0x2f')](function(_0xa998f2){_0x161207[_0xd11c('0x52')]=_0xa998f2;return _0x161207;})['then'](respondWithFilteredResult(_0x3ca10d,_0x215f5d))[_0xd11c('0x25')](handleError(_0x3ca10d,null));};exports['show']=function(_0x5da4ba,_0x4eeb32){var _0x4a457e={'raw':![],'where':{'id':_0x5da4ba[_0xd11c('0x53')]['id']}},_0x2c44b8={};_0x2c44b8[_0xd11c('0x3c')]=_[_0xd11c('0x3d')](db[_0xd11c('0x4e')]['rawAttributes']);_0x2c44b8[_0xd11c('0x3e')]=_['keys'](_0x5da4ba[_0xd11c('0x3e')]);_0x2c44b8['filters']=_['intersection'](_0x2c44b8[_0xd11c('0x3c')],_0x2c44b8[_0xd11c('0x3e')]);_0x4a457e[_0xd11c('0x42')]=_[_0xd11c('0x40')](_0x2c44b8[_0xd11c('0x3c')],qs['fields'](_0x5da4ba[_0xd11c('0x3e')]['fields']));_0x4a457e['attributes']=_0x4a457e[_0xd11c('0x42')]['length']?_0x4a457e[_0xd11c('0x42')]:_0x2c44b8[_0xd11c('0x3c')];if(_0x5da4ba[_0xd11c('0x3e')]['includeAll']){_0x4a457e[_0xd11c('0x50')]=[{'all':!![]}];}_0x4a457e=_[_0xd11c('0x49')]({},_0x4a457e,_0x5da4ba[_0xd11c('0x4d')]);return db[_0xd11c('0x4e')]['find'](_0x4a457e)[_0xd11c('0x2f')](handleEntityNotFound(_0x4eeb32,null))[_0xd11c('0x2f')](respondWithResult(_0x4eeb32,null))[_0xd11c('0x25')](handleError(_0x4eeb32,null));};exports['update']=function(_0x6666ae,_0x16384e){if(_0x6666ae[_0xd11c('0x54')]['id']){delete _0x6666ae['body']['id'];}return db['Setting']['find']({'where':{'id':_0x6666ae['params']['id']}})[_0xd11c('0x2f')](handleEntityNotFound(_0x16384e,null))[_0xd11c('0x2f')](saveUpdates(_0x6666ae['body'],null))[_0xd11c('0x2f')](respondWithResult(_0x16384e,null))[_0xd11c('0x25')](handleError(_0x16384e,null));};exports[_0xd11c('0x55')]=function(_0x290767,_0x246bf0,_0x41ad11){if(_0x290767[_0xd11c('0x56')]&&_0x290767[_0xd11c('0x56')][_0xd11c('0x57')]){_0x290767['body']['logo']=_0x290767[_0xd11c('0x56')][_0xd11c('0x57')];}return db[_0xd11c('0x4e')][_0xd11c('0x58')]({'where':{'id':_0x290767[_0xd11c('0x53')]['id']}})[_0xd11c('0x2f')](handleEntityNotFound(_0x246bf0,null))[_0xd11c('0x2f')](saveUpdates(_0x290767[_0xd11c('0x54')],null))[_0xd11c('0x2f')](respondWithResult(_0x246bf0,null))[_0xd11c('0x25')](handleError(_0x246bf0,null));};exports['addLogoLogin']=function(_0x4f68cf,_0x265a6a,_0x50dd5c){if(_0x4f68cf[_0xd11c('0x56')]&&_0x4f68cf['file'][_0xd11c('0x57')]){_0x4f68cf[_0xd11c('0x54')][_0xd11c('0x59')]=_0x4f68cf[_0xd11c('0x56')][_0xd11c('0x57')];}return db[_0xd11c('0x4e')]['find']({'where':{'id':_0x4f68cf[_0xd11c('0x53')]['id']}})[_0xd11c('0x2f')](handleEntityNotFound(_0x265a6a,null))['then'](saveUpdates(_0x4f68cf['body'],null))[_0xd11c('0x2f')](respondWithResult(_0x265a6a,null))[_0xd11c('0x25')](handleError(_0x265a6a,null));};var utilLicense=require(_0xd11c('0x17'));exports[_0xd11c('0x5a')]=function(_0x19d8c1,_0x2416a7,_0x2d6190){var _0x2e8411=_0xd11c('0x5b');var _0x52c521={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x2c9cd7){if(_0x2c9cd7){_0x52c521=_0x2c9cd7;}return db[_0xd11c('0x4e')][_0xd11c('0x58')]({'where':{'id':_0x19d8c1[_0xd11c('0x53')]['id']},'attributes':[_0xd11c('0x5c'),_0xd11c('0x59'),_0xd11c('0x5d'),'favicon','defaultLogo',_0xd11c('0x5e'),_0xd11c('0x5f'),_0xd11c('0x60')],'raw':!![]});})['then'](handleEntityNotFound(_0x2416a7,null))[_0xd11c('0x2f')](function(_0x212bb2){if(_0x212bb2){var _0x1c64b4=_0x212bb2['logo']&&fs[_0xd11c('0x61')](path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x2e8411,_[_0xd11c('0x64')](_0x212bb2[_0xd11c('0x5c')])))?path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x2e8411,_['toLower'](_0x212bb2[_0xd11c('0x5c')])):path[_0xd11c('0x62')](config['root'],_0x2e8411,_[_0xd11c('0x64')](_0xd11c('0x65')));var _0x169507=_0xd11c('0x66')+_[_0xd11c('0x67')]('logo');if(_0x212bb2[_0x169507]||!_0x52c521[_0xd11c('0x68')]){_0x1c64b4=path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x2e8411,_[_0xd11c('0x64')]('default_logo.svg'));}if(!fs[_0xd11c('0x61')](_0x1c64b4)){throw new db[(_0xd11c('0x69'))][(_0xd11c('0x6a'))](_[_0xd11c('0x67')](_0xd11c('0x5c'))+'\x20not\x20found');}return _0x2416a7[_0xd11c('0x6b')](_0x1c64b4);}})[_0xd11c('0x25')](handleError(_0x2416a7,null));};var utilLicense=require('../../config/license/util');exports[_0xd11c('0x6c')]=function(_0x23faa5,_0x4928a4,_0x3a593f){var _0x4a6669=_0xd11c('0x5b');var _0x9f1748={'custom':![]};return utilLicense[_0xd11c('0x6d')]()[_0xd11c('0x2f')](function(_0x3cd59b){if(_0x3cd59b){_0x9f1748=_0x3cd59b;}return db[_0xd11c('0x4e')][_0xd11c('0x58')]({'where':{'id':_0x23faa5[_0xd11c('0x53')]['id']},'attributes':[_0xd11c('0x5c'),_0xd11c('0x59'),'preferred',_0xd11c('0x6e'),'defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon'],'raw':!![]});})[_0xd11c('0x2f')](handleEntityNotFound(_0x4928a4,null))[_0xd11c('0x2f')](function(_0x3a8eb4){if(_0x3a8eb4){var _0x3b6b5e=_0x3a8eb4[_0xd11c('0x59')]&&fs[_0xd11c('0x61')](path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x4a6669,_[_0xd11c('0x64')](_0x3a8eb4[_0xd11c('0x59')])))?path[_0xd11c('0x62')](config['root'],_0x4a6669,_['toLower'](_0x3a8eb4['loginLogo'])):path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x4a6669,_[_0xd11c('0x64')](_0xd11c('0x6f')));var _0x315d33='default'+_[_0xd11c('0x67')]('loginLogo');if(_0x3a8eb4[_0x315d33]||!_0x9f1748[_0xd11c('0x68')]){_0x3b6b5e=path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x4a6669,_[_0xd11c('0x64')]('default_loginLogo.svg'));}if(!fs[_0xd11c('0x61')](_0x3b6b5e)){throw new db[(_0xd11c('0x69'))][(_0xd11c('0x6a'))](_[_0xd11c('0x67')]('loginLogo')+_0xd11c('0x70'));}return _0x4928a4[_0xd11c('0x6b')](_0x3b6b5e);}})[_0xd11c('0x25')](handleError(_0x4928a4,null));};exports[_0xd11c('0x71')]=function(_0x20e6d1,_0x455534){return db['Setting'][_0xd11c('0x58')]({'where':{'id':_0x20e6d1[_0xd11c('0x53')]['id']},'attributes':[_0xd11c('0x72')]})[_0xd11c('0x2f')](respondWithResult(_0x455534,null))[_0xd11c('0x25')](handleError(_0x455534,null));};exports[_0xd11c('0x73')]=function(_0xd7113f,_0xafcfb0,_0xda7d42){if(_0xd7113f[_0xd11c('0x56')]&&_0xd7113f['file'][_0xd11c('0x57')]){_0xd7113f[_0xd11c('0x54')][_0xd11c('0x5d')]=_0xd7113f[_0xd11c('0x56')][_0xd11c('0x57')];}return db[_0xd11c('0x4e')]['find']({'where':{'id':_0xd7113f['params']['id']}})[_0xd11c('0x2f')](handleEntityNotFound(_0xafcfb0,null))[_0xd11c('0x2f')](saveUpdates(_0xd7113f['body'],null))[_0xd11c('0x2f')](respondWithResult(_0xafcfb0,null))[_0xd11c('0x25')](handleError(_0xafcfb0,null));};var utilLicense=require(_0xd11c('0x17'));exports[_0xd11c('0x74')]=function(_0x5afd29,_0x5bee92,_0x3a71cc){var _0x114884=_0xd11c('0x5b');var _0x51d8d4={'custom':![]};return utilLicense[_0xd11c('0x6d')]()[_0xd11c('0x2f')](function(_0x56c7b8){if(_0x56c7b8){_0x51d8d4=_0x56c7b8;}return db[_0xd11c('0x4e')]['find']({'where':{'id':_0x5afd29['params']['id']},'attributes':[_0xd11c('0x5c'),_0xd11c('0x59'),_0xd11c('0x5d'),'favicon',_0xd11c('0x75'),_0xd11c('0x5e'),_0xd11c('0x5f'),_0xd11c('0x60')],'raw':!![]});})[_0xd11c('0x2f')](handleEntityNotFound(_0x5bee92,null))[_0xd11c('0x2f')](function(_0x5c2451){if(_0x5c2451){var _0x87f36d=_0x5c2451[_0xd11c('0x5d')]&&fs[_0xd11c('0x61')](path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x114884,_['toLower'](_0x5c2451[_0xd11c('0x5d')])))?path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x114884,_['toLower'](_0x5c2451[_0xd11c('0x5d')])):path['join'](config[_0xd11c('0x63')],_0x114884,_['toLower'](_0xd11c('0x76')));var _0x4963e9=_0xd11c('0x66')+_['upperFirst'](_0xd11c('0x5d'));if(_0x5c2451[_0x4963e9]||!_0x51d8d4['custom']||!_0x51d8d4[_0xd11c('0x5d')]){_0x87f36d=path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x114884,_[_0xd11c('0x64')](_0xd11c('0x76')));}if(!fs['existsSync'](_0x87f36d)){throw new db[(_0xd11c('0x69'))]['ValidationError'](_[_0xd11c('0x67')](_0xd11c('0x5d'))+_0xd11c('0x70'));}return _0x5bee92[_0xd11c('0x6b')](_0x87f36d);}})[_0xd11c('0x25')](handleError(_0x5bee92,null));};exports[_0xd11c('0x77')]=function(_0x2feb5a,_0xf96fc9,_0xd96400){if(_0x2feb5a[_0xd11c('0x56')]&&_0x2feb5a[_0xd11c('0x56')][_0xd11c('0x57')]){_0x2feb5a['body'][_0xd11c('0x6e')]=_0x2feb5a[_0xd11c('0x56')][_0xd11c('0x57')];}return db[_0xd11c('0x4e')][_0xd11c('0x58')]({'where':{'id':_0x2feb5a[_0xd11c('0x53')]['id']}})['then'](handleEntityNotFound(_0xf96fc9,null))[_0xd11c('0x2f')](saveUpdates(_0x2feb5a[_0xd11c('0x54')],null))[_0xd11c('0x2f')](respondWithResult(_0xf96fc9,null))[_0xd11c('0x25')](handleError(_0xf96fc9,null));};var utilLicense=require(_0xd11c('0x17'));exports[_0xd11c('0x78')]=function(_0xe6b76e,_0x32638d,_0x465d8a){var _0x2f88c8='server/files/images/logos';var _0x2ec4c4={'custom':![]};return utilLicense[_0xd11c('0x6d')]()[_0xd11c('0x2f')](function(_0x1a5767){if(_0x1a5767){_0x2ec4c4=_0x1a5767;}return db[_0xd11c('0x4e')][_0xd11c('0x58')]({'where':{'id':_0xe6b76e[_0xd11c('0x53')]['id']},'attributes':[_0xd11c('0x5c'),'loginLogo','preferred',_0xd11c('0x6e'),_0xd11c('0x75'),_0xd11c('0x5e'),_0xd11c('0x5f'),_0xd11c('0x60')],'raw':!![]});})[_0xd11c('0x2f')](handleEntityNotFound(_0x32638d,null))['then'](function(_0x21b501){if(_0x21b501){var _0x4ad5d7=_0x21b501['favicon']&&fs[_0xd11c('0x61')](path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x2f88c8,_[_0xd11c('0x64')](_0x21b501['favicon'])))?path[_0xd11c('0x62')](config['root'],_0x2f88c8,_[_0xd11c('0x64')](_0x21b501[_0xd11c('0x6e')])):path[_0xd11c('0x62')](config[_0xd11c('0x63')],_0x2f88c8,_[_0xd11c('0x64')](_0xd11c('0x79')));var _0x1a3345=_0xd11c('0x66')+_[_0xd11c('0x67')](_0xd11c('0x6e'));if(_0x21b501[_0x1a3345]||!_0x2ec4c4[_0xd11c('0x68')]){_0x4ad5d7=path['join'](config['root'],_0x2f88c8,_[_0xd11c('0x64')]('default_favicon.ico'));}if(!fs[_0xd11c('0x61')](_0x4ad5d7)){throw new db[(_0xd11c('0x69'))][(_0xd11c('0x6a'))](_['upperFirst']('favicon')+_0xd11c('0x70'));}return _0x32638d[_0xd11c('0x6b')](_0x4ad5d7);}})['catch'](handleError(_0x32638d,null));};exports[_0xd11c('0x7a')]=function(_0x473d2d,_0x505e25){var _0x3deae8={'offset':moment()[_0xd11c('0x7b')]()};_0x3deae8['now']=moment()[_0xd11c('0x7b')](_0x3deae8[_0xd11c('0x28')])[_0xd11c('0x7c')](_0xd11c('0x7d'));return _0x505e25['status'](0xc8)['send'](_0x3deae8);};
\ No newline at end of file
index 2beef14..c952665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x133fe4,_0x1f473b){var _0x4c4017=function(_0x3c1fb1){while(--_0x3c1fb1){_0x133fe4['push'](_0x133fe4['shift']());}};_0x4c4017(++_0x1f473b);}(_0x7217,0x19e));var _0x7721=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x7217[_0x2a6809];return _0x11c371;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x7217,0x19e));var _0x7721=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x7217[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb120f5..53c9ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8e=['options','raw','where','attributes','map','include','model','debug','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','ShowSetting','Setting'];(function(_0x2515a3,_0x356de5){var _0xe8bbb=function(_0x18876b){while(--_0x18876b){_0x2515a3['push'](_0x2515a3['shift']());}};_0xe8bbb(++_0x356de5);}(_0x1a8e,0x1c8));var _0xe1a8=function(_0x208eae,_0xaf59fa){_0x208eae=_0x208eae-0x0;var _0x5de7ff=_0x1a8e[_0x208eae];return _0x5de7ff;};'use strict';var _=require(_0xe1a8('0x0'));var util=require(_0xe1a8('0x1'));var moment=require(_0xe1a8('0x2'));var BPromise=require(_0xe1a8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe1a8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1a8('0x5'));var logger=require(_0xe1a8('0x6'))(_0xe1a8('0x7'));var config=require('../../config/environment');var jayson=require(_0xe1a8('0x8'));var client=jayson[_0xe1a8('0x9')][_0xe1a8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56e332,_0x208faf,_0x188e56){return new BPromise(function(_0x37e54d,_0x106dfd){return client['request'](_0x56e332,_0x188e56)[_0xe1a8('0xb')](function(_0x22a28d){logger[_0xe1a8('0xc')](_0xe1a8('0xd'),_0x208faf,_0xe1a8('0xe'));logger['debug'](_0xe1a8('0xf'),_0x208faf,'request\x20sent',JSON[_0xe1a8('0x10')](_0x22a28d));if(_0x22a28d['error']){if(_0x22a28d['error'][_0xe1a8('0x11')]===0x1f4){logger[_0xe1a8('0x12')](_0xe1a8('0xd'),_0x208faf,_0x22a28d[_0xe1a8('0x12')][_0xe1a8('0x13')]);return _0x106dfd(_0x22a28d[_0xe1a8('0x12')][_0xe1a8('0x13')]);}logger[_0xe1a8('0x12')](_0xe1a8('0xd'),_0x208faf,_0x22a28d[_0xe1a8('0x12')][_0xe1a8('0x13')]);return _0x37e54d(_0x22a28d[_0xe1a8('0x12')][_0xe1a8('0x13')]);}else{logger[_0xe1a8('0xc')](_0xe1a8('0xd'),_0x208faf,_0xe1a8('0xe'));_0x37e54d(_0x22a28d[_0xe1a8('0x14')][_0xe1a8('0x13')]);}})[_0xe1a8('0x15')](function(_0x539b4d){logger[_0xe1a8('0x12')](_0xe1a8('0xd'),_0x208faf,_0x539b4d);_0x106dfd(_0x539b4d);});});}exports[_0xe1a8('0x16')]=function(_0x1d770c){var _0x12bb8d=this;return new Promise(function(_0x1bcee9,_0x459ecc){return db[_0xe1a8('0x17')]['find']({'raw':_0x1d770c[_0xe1a8('0x18')]?_0x1d770c[_0xe1a8('0x18')][_0xe1a8('0x19')]===undefined?!![]:![]:!![],'where':_0x1d770c[_0xe1a8('0x18')]?_0x1d770c[_0xe1a8('0x18')][_0xe1a8('0x1a')]||null:null,'attributes':_0x1d770c[_0xe1a8('0x18')]?_0x1d770c[_0xe1a8('0x18')][_0xe1a8('0x1b')]||null:null,'include':_0x1d770c[_0xe1a8('0x18')]?_0x1d770c[_0xe1a8('0x18')]['include']?_[_0xe1a8('0x1c')](_0x1d770c[_0xe1a8('0x18')][_0xe1a8('0x1d')],function(_0x5d91f7){return{'model':db[_0x5d91f7['model']],'as':_0x5d91f7['as'],'attributes':_0x5d91f7['attributes'],'include':_0x5d91f7['include']?_[_0xe1a8('0x1c')](_0x5d91f7[_0xe1a8('0x1d')],function(_0x6f205e){return{'model':db[_0x6f205e[_0xe1a8('0x1e')]],'as':_0x6f205e['as'],'attributes':_0x6f205e[_0xe1a8('0x1b')],'include':_0x6f205e[_0xe1a8('0x1d')]?_[_0xe1a8('0x1c')](_0x6f205e[_0xe1a8('0x1d')],function(_0x58ba1a){return{'model':db[_0x58ba1a[_0xe1a8('0x1e')]],'as':_0x58ba1a['as'],'attributes':_0x58ba1a[_0xe1a8('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1657c7){logger['info'](_0xe1a8('0x16'),_0x1d770c);logger[_0xe1a8('0x1f')](_0xe1a8('0x16'),_0x1d770c,JSON[_0xe1a8('0x10')](_0x1657c7));_0x1bcee9(_0x1657c7);})[_0xe1a8('0x15')](function(_0x372ba8){logger[_0xe1a8('0x12')](_0xe1a8('0x16'),_0x372ba8[_0xe1a8('0x13')],_0x1d770c);_0x459ecc(_0x12bb8d[_0xe1a8('0x12')](0x1f4,_0x372ba8[_0xe1a8('0x13')]));});});};
\ No newline at end of file
+var _0x1ca6=['Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','model','map','util','bluebird','../../mysqldb','../../config/logger','rpc','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent'];(function(_0x1cbcf1,_0x3f9fd9){var _0x3a06f0=function(_0x5425d4){while(--_0x5425d4){_0x1cbcf1['push'](_0x1cbcf1['shift']());}};_0x3a06f0(++_0x3f9fd9);}(_0x1ca6,0x151));var _0x61ca=function(_0x3ce8c9,_0x2ccfaa){_0x3ce8c9=_0x3ce8c9-0x0;var _0x184215=_0x1ca6[_0x3ce8c9];return _0x184215;};'use strict';var _=require('lodash');var util=require(_0x61ca('0x0'));var moment=require('moment');var BPromise=require(_0x61ca('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x61ca('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x61ca('0x3'))(_0x61ca('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x61ca('0x5')][_0x61ca('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x9a54cd,_0x2be744,_0xee0ea8){return new BPromise(function(_0x279a9f,_0x4a348c){return client[_0x61ca('0x7')](_0x9a54cd,_0xee0ea8)[_0x61ca('0x8')](function(_0x460a6e){logger['info'](_0x61ca('0x9'),_0x2be744,_0x61ca('0xa'));logger['debug'](_0x61ca('0xb'),_0x2be744,_0x61ca('0xa'),JSON[_0x61ca('0xc')](_0x460a6e));if(_0x460a6e[_0x61ca('0xd')]){if(_0x460a6e[_0x61ca('0xd')][_0x61ca('0xe')]===0x1f4){logger[_0x61ca('0xd')](_0x61ca('0x9'),_0x2be744,_0x460a6e[_0x61ca('0xd')][_0x61ca('0xf')]);return _0x4a348c(_0x460a6e[_0x61ca('0xd')][_0x61ca('0xf')]);}logger[_0x61ca('0xd')](_0x61ca('0x9'),_0x2be744,_0x460a6e[_0x61ca('0xd')][_0x61ca('0xf')]);return _0x279a9f(_0x460a6e[_0x61ca('0xd')]['message']);}else{logger[_0x61ca('0x10')](_0x61ca('0x9'),_0x2be744,'request\x20sent');_0x279a9f(_0x460a6e[_0x61ca('0x11')][_0x61ca('0xf')]);}})[_0x61ca('0x12')](function(_0x22555d){logger[_0x61ca('0xd')]('Setting,\x20%s,\x20%s',_0x2be744,_0x22555d);_0x4a348c(_0x22555d);});});}exports[_0x61ca('0x13')]=function(_0x5ca0c0){var _0x46694f=this;return new Promise(function(_0x26d4e3,_0x263b5d){return db[_0x61ca('0x14')][_0x61ca('0x15')]({'raw':_0x5ca0c0[_0x61ca('0x16')]?_0x5ca0c0[_0x61ca('0x16')][_0x61ca('0x17')]===undefined?!![]:![]:!![],'where':_0x5ca0c0['options']?_0x5ca0c0[_0x61ca('0x16')][_0x61ca('0x18')]||null:null,'attributes':_0x5ca0c0['options']?_0x5ca0c0['options'][_0x61ca('0x19')]||null:null,'include':_0x5ca0c0[_0x61ca('0x16')]?_0x5ca0c0[_0x61ca('0x16')][_0x61ca('0x1a')]?_['map'](_0x5ca0c0['options']['include'],function(_0x5b8241){return{'model':db[_0x5b8241[_0x61ca('0x1b')]],'as':_0x5b8241['as'],'attributes':_0x5b8241[_0x61ca('0x19')],'include':_0x5b8241['include']?_[_0x61ca('0x1c')](_0x5b8241['include'],function(_0x3ea338){return{'model':db[_0x3ea338[_0x61ca('0x1b')]],'as':_0x3ea338['as'],'attributes':_0x3ea338[_0x61ca('0x19')],'include':_0x3ea338[_0x61ca('0x1a')]?_['map'](_0x3ea338[_0x61ca('0x1a')],function(_0xf1fe82){return{'model':db[_0xf1fe82['model']],'as':_0xf1fe82['as'],'attributes':_0xf1fe82[_0x61ca('0x19')]};}):[]};}):[]};}):[]:[]})[_0x61ca('0x8')](function(_0x2765e6){logger[_0x61ca('0x10')](_0x61ca('0x13'),_0x5ca0c0);logger['debug'](_0x61ca('0x13'),_0x5ca0c0,JSON['stringify'](_0x2765e6));_0x26d4e3(_0x2765e6);})[_0x61ca('0x12')](function(_0x174aae){logger[_0x61ca('0xd')](_0x61ca('0x13'),_0x174aae['message'],_0x5ca0c0);_0x263b5d(_0x46694f[_0x61ca('0xd')](0x1f4,_0x174aae[_0x61ca('0xf')]));});});};
\ No newline at end of file
index fa125b9..cdfda1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','post','create','/:id/notify','notify','put','delete','removeAnswers','path','connect-timeout','express'];(function(_0x4fd76c,_0x4816ed){var _0xd87118=function(_0x1d212f){while(--_0x1d212f){_0x4fd76c['push'](_0x4fd76c['shift']());}};_0xd87118(++_0x4816ed);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x35644c,_0x3c80a0){_0x35644c=_0x35644c-0x0;var _0xc2e514=_0x7fbe[_0x35644c];return _0xc2e514;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x9')](_0xe7fb('0x13'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x9')](_0xe7fb('0x15'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x16')]);router['get'](_0xe7fb('0x17'),controller[_0xe7fb('0x18')]);router['get'](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['getAgents']);router[_0xe7fb('0x1a')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0x1b')]);router[_0xe7fb('0x1a')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['addDisposition']);router[_0xe7fb('0x1a')]('/:id/canned_answers',auth[_0xe7fb('0xa')](),controller['addAnswer']);router[_0xe7fb('0x1a')](_0xe7fb('0x1c'),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1a')]('/:id/applications',auth[_0xe7fb('0xa')](),controller['addApplications']);router[_0xe7fb('0x1a')]('/:id/send',auth[_0xe7fb('0xa')](),controller['send']);router[_0xe7fb('0x1a')](_0xe7fb('0x17'),controller['status']);router[_0xe7fb('0x1a')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['addAgents']);router[_0xe7fb('0x1e')](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0xe7fb('0x1f')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller['removeDispositions']);router[_0xe7fb('0x1f')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x20')]);router[_0xe7fb('0x1f')](_0xe7fb('0x19'),auth[_0xe7fb('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xabce=['/:id/users','getAgents','create','post','addAnswer','/:id/notify','notify','/:id/send','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x612a0e,_0x1a5012){var _0x4738a1=function(_0x59ad77){while(--_0x59ad77){_0x612a0e['push'](_0x612a0e['shift']());}};_0x4738a1(++_0x1a5012);}(_0xabce,0x103));var _0xeabc=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xabce[_0x1d9aa0];return _0x226868;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/describe',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0x9')](_0xeabc('0xc'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0x9')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0xf')]);router[_0xeabc('0x9')](_0xeabc('0x10'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x11')]);router[_0xeabc('0x9')](_0xeabc('0x12'),auth['isAuthenticated'](),controller[_0xeabc('0x13')]);router[_0xeabc('0x9')](_0xeabc('0x14'),controller['statusGet']);router['get'](_0xeabc('0x15'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x16')]);router['post']('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0x17')]);router['post']('/:id/dispositions',auth[_0xeabc('0x8')](),controller['addDisposition']);router[_0xeabc('0x18')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x19')]);router[_0xeabc('0x18')](_0xeabc('0x1a'),controller[_0xeabc('0x1b')]);router[_0xeabc('0x18')]('/:id/applications',auth[_0xeabc('0x8')](),controller['addApplications']);router[_0xeabc('0x18')](_0xeabc('0x1c'),auth['isAuthenticated'](),controller[_0xeabc('0x1d')]);router[_0xeabc('0x18')](_0xeabc('0x14'),controller[_0xeabc('0x1e')]);router[_0xeabc('0x18')]('/:id/users',auth[_0xeabc('0x8')](),controller[_0xeabc('0x1f')]);router[_0xeabc('0x20')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0x21')]);router[_0xeabc('0x22')](_0xeabc('0x23'),auth['isAuthenticated'](),controller[_0xeabc('0x24')]);router['delete'](_0xeabc('0xc'),auth['isAuthenticated'](),controller[_0xeabc('0x25')]);router[_0xeabc('0x22')](_0xeabc('0xe'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x26')]);router[_0xeabc('0x22')](_0xeabc('0x15'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xeabc('0x27')]=router;
\ No newline at end of file
index 4d48ce9..68113f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d74=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','skebby','connectel','clickatell','csc','infobip','intelepeer','ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x5a5273,_0x1845bd){var _0x8e2bd7=function(_0x4ee5c8){while(--_0x4ee5c8){_0x5a5273['push'](_0x5a5273['shift']());}};_0x8e2bd7(++_0x1845bd);}(_0x1d74,0xfe));var _0x41d7=function(_0x392e1d,_0x1a6b8e){_0x392e1d=_0x392e1d-0x0;var _0x2a8427=_0x1d74[_0x392e1d];return _0x2a8427;};'use strict';var Sequelize=require(_0x41d7('0x0'));var rs=require(_0x41d7('0x1'));module[_0x41d7('0x2')]={'name':{'type':Sequelize[_0x41d7('0x3')],'unique':_0x41d7('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x41d7('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x41d7('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x41d7('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x41d7('0x3')]},'type':{'type':Sequelize['ENUM']('twilio',_0x41d7('0x5'),_0x41d7('0x6'),'clicksend','plivo',_0x41d7('0x7'),'bandwidth',_0x41d7('0x8'),_0x41d7('0x9'),_0x41d7('0xa'))},'accountSid':{'type':Sequelize[_0x41d7('0x3')]},'authId':{'type':Sequelize[_0x41d7('0x3')]},'authToken':{'type':Sequelize[_0x41d7('0x3')]},'smsMethod':{'type':Sequelize[_0x41d7('0xb')]('SI','TI','GP')},'username':{'type':Sequelize[_0x41d7('0x3')]},'password':{'type':Sequelize[_0x41d7('0x3')]},'apiKey':{'type':Sequelize[_0x41d7('0x3')]},'applicationId':{'type':Sequelize[_0x41d7('0x3')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x41d7('0x3')]},'deliveryReport':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x41d7('0x3')]},'notificationTemplate':{'type':Sequelize[_0x41d7('0xd')],'defaultValue':function(){return _0x41d7('0xe');}},'notificationSound':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x41d7('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x41d7('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x41d7('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x41d7('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x41d7('0xf')],'comment':_0x41d7('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x41d7('0xc')],'defaultValue':![],'comment':_0x41d7('0x11'),'set':function(_0x46ca76){if(!_0x46ca76)this[_0x41d7('0x12')](_0x41d7('0x13'),null);this['setDataValue'](_0x41d7('0x14'),_0x46ca76);}}};
\ No newline at end of file
+var _0xcba9=['generate','ENUM','twilio','skebby','connectel','clicksend','clickatell','bandwidth','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring','name','STRING'];(function(_0x1ca66c,_0x3e3868){var _0x5a78ce=function(_0x5432ac){while(--_0x5432ac){_0x1ca66c['push'](_0x1ca66c['shift']());}};_0x5a78ce(++_0x3e3868);}(_0xcba9,0xc4));var _0x9cba=function(_0x581543,_0x5d08cf){_0x581543=_0x581543-0x0;var _0x2845f5=_0xcba9[_0x581543];return _0x2845f5;};'use strict';var Sequelize=require(_0x9cba('0x0'));var rs=require(_0x9cba('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x9cba('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x9cba('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x9cba('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x9cba('0x3')],'defaultValue':function(){return rs[_0x9cba('0x4')]();}},'phone':{'type':Sequelize[_0x9cba('0x3')]},'type':{'type':Sequelize[_0x9cba('0x5')](_0x9cba('0x6'),_0x9cba('0x7'),_0x9cba('0x8'),_0x9cba('0x9'),'plivo',_0x9cba('0xa'),_0x9cba('0xb'),'csc','infobip',_0x9cba('0xc'))},'accountSid':{'type':Sequelize[_0x9cba('0x3')]},'authId':{'type':Sequelize[_0x9cba('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x9cba('0x3')]},'password':{'type':Sequelize[_0x9cba('0x3')]},'apiKey':{'type':Sequelize[_0x9cba('0x3')]},'applicationId':{'type':Sequelize[_0x9cba('0x3')]},'accountId':{'type':Sequelize[_0x9cba('0x3')]},'senderString':{'type':Sequelize[_0x9cba('0x3')]},'deliveryReport':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x9cba('0x3')]},'notificationTemplate':{'type':Sequelize[_0x9cba('0xe')],'defaultValue':function(){return _0x9cba('0xf');}},'notificationSound':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9cba('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9cba('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9cba('0x10')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x9cba('0xd')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x218bea){if(!_0x218bea)this['setDataValue'](_0x9cba('0x11'),null);this[_0x9cba('0x12')](_0x9cba('0x13'),_0x218bea);}}};
\ No newline at end of file
index 7a5faaf..2956b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeae=['sendStatus','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','fieldName','type','model','query','keys','intersection','attributes','length','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','rawAttributes','fields','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','SmsAccountId','findOne','Disposition','hasOwnProperty','nolimit','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','notify','sms','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','mobile','twilio','From','Body','messageId','MessageSid','skebby','from','text','connectel','clicksend','message_id','MessageUUID','infobip','results','csc','originatingAddress','clickatell','bandwidth','intelepeer','refid','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','SmsApplication','bulkCreate','findAndCountAll','stack','finally','getApplications','getInteractions','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','ListId','out','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','statusGet','received\x20delivery\x20report\x20from','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','register','http','request','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','get','SmsAccounts','destroy'];(function(_0x14922d,_0x1c5526){var _0x49bc3f=function(_0x51b37d){while(--_0x51b37d){_0x14922d['push'](_0x14922d['shift']());}};_0x49bc3f(++_0x1c5526);}(_0xbeae,0xaa));var _0xebea=function(_0x3eff47,_0x2796a1){_0x3eff47=_0x3eff47-0x0;var _0x8c1be2=_0xbeae[_0x3eff47];return _0x8c1be2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xebea('0x0'));var zipdir=require(_0xebea('0x1'));var jsonpatch=require(_0xebea('0x2'));var rp=require(_0xebea('0x3'));var moment=require('moment');var BPromise=require(_0xebea('0x4'));var Mustache=require(_0xebea('0x5'));var util=require(_0xebea('0x6'));var path=require(_0xebea('0x7'));var sox=require('sox');var csv=require(_0xebea('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xebea('0x9'));var _=require(_0xebea('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xebea('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xebea('0x8'));var querystring=require(_0xebea('0xc'));var Papa=require(_0xebea('0xd'));var Redis=require(_0xebea('0xe'));var authService=require(_0xebea('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xebea('0x10'));var logger=require(_0xebea('0x11'))(_0xebea('0x12'));var utils=require(_0xebea('0x13'));var config=require(_0xebea('0x14'));var licenseUtil=require(_0xebea('0x15'));var db=require(_0xebea('0x16'))['db'];config[_0xebea('0x17')]=_[_0xebea('0x18')](config[_0xebea('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xebea('0x19'))(new Redis(config[_0xebea('0x17')]));require(_0xebea('0x1a'))[_0xebea('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xebea('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x202bc5,_0x2cfad7,_0x362bae,_0x3c2086){return new BPromise(function(_0x2277f3,_0x1c6cd2){var _0x3be7db=_0x3c2086||client;return _0x3be7db[_0xebea('0x1d')](_0x202bc5,_0x362bae)[_0xebea('0x1e')](function(_0x199c6c){logger[_0xebea('0x1f')](_0xebea('0x20'),_0x2cfad7,'request\x20sent');logger[_0xebea('0x21')](_0xebea('0x22'),_0x2cfad7,'request\x20sent',JSON['stringify'](_0x199c6c));if(_0x199c6c['error']){if(_0x199c6c[_0xebea('0x23')][_0xebea('0x24')]===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2cfad7,_0x199c6c[_0xebea('0x23')]['message']);return _0x1c6cd2(_0x199c6c[_0xebea('0x23')][_0xebea('0x25')]);}logger['error'](_0xebea('0x20'),_0x2cfad7,_0x199c6c[_0xebea('0x23')][_0xebea('0x25')]);return _0x2277f3(_0x199c6c['error'][_0xebea('0x25')]);}else{logger['info'](_0xebea('0x20'),_0x2cfad7,_0xebea('0x26'));_0x2277f3(_0x199c6c[_0xebea('0x27')]['message']);}})[_0xebea('0x28')](function(_0x3eecfd){logger[_0xebea('0x23')]('SmsAccount,\x20%s,\x20%s',_0x2cfad7,_0x3eecfd);_0x1c6cd2(_0x3eecfd);});});}function respondWithStatusCode(_0x502b90,_0x222648){_0x222648=_0x222648||0xcc;return function(_0x375d62){if(_0x375d62){return _0x502b90['sendStatus'](_0x222648);}return _0x502b90[_0xebea('0x29')](_0x222648)[_0xebea('0x2a')]();};}function respondWithResult(_0x107457,_0x2767e8){_0x2767e8=_0x2767e8||0xc8;return function(_0x523ee2){if(_0x523ee2){return _0x107457[_0xebea('0x29')](_0x2767e8)[_0xebea('0x2b')](_0x523ee2);}};}function respondWithFilteredResult(_0x3bf13f,_0x132570){return function(_0x5241e7){if(_0x5241e7){var _0x529e20=typeof _0x132570[_0xebea('0x2c')]===_0xebea('0x2d')&&typeof _0x132570['limit']===_0xebea('0x2d');var _0x16fdd4=_0x5241e7[_0xebea('0x2e')];var _0x3daec9=_0x529e20?0x0:_0x132570['offset'];var _0x1a2b9f=_0x529e20?_0x5241e7[_0xebea('0x2e')]:_0x132570[_0xebea('0x2c')]+_0x132570[_0xebea('0x2f')];var _0x37991f;if(_0x1a2b9f>=_0x16fdd4){_0x1a2b9f=_0x16fdd4;_0x37991f=0xc8;}else{_0x37991f=0xce;}_0x3bf13f[_0xebea('0x29')](_0x37991f);return _0x3bf13f[_0xebea('0x30')]('Content-Range',_0x3daec9+'-'+_0x1a2b9f+'/'+_0x16fdd4)[_0xebea('0x2b')](_0x5241e7);}return null;};}function patchUpdates(_0xb6a4b7){return function(_0x34513d){try{jsonpatch[_0xebea('0x31')](_0x34513d,_0xb6a4b7,!![]);}catch(_0x2eba51){return BPromise[_0xebea('0x32')](_0x2eba51);}return _0x34513d[_0xebea('0x33')]();};}function saveUpdates(_0x17b8c7,_0xf66761){return function(_0x244a02){if(_0x244a02){return _0x244a02[_0xebea('0x34')](_0x17b8c7)[_0xebea('0x1e')](function(_0xceb292){return _0xceb292;});}return null;};}function removeEntity(_0x135c4b,_0x4b62f2){return function(_0x48beb9){if(_0x48beb9){return _0x48beb9['destroy']()['then'](function(){var _0x41b6f3=_0x48beb9[_0xebea('0x35')]({'plain':!![]});var _0x31bcea=_0xebea('0x36');return db['UserProfileResource'][_0xebea('0x37')]({'where':{'type':_0x31bcea,'resourceId':_0x41b6f3['id']}})[_0xebea('0x1e')](function(){return _0x48beb9;});})[_0xebea('0x1e')](function(){_0x135c4b[_0xebea('0x29')](0xcc)[_0xebea('0x2a')]();});}};}function handleEntityNotFound(_0x2f92d6,_0x1741e1){return function(_0x7d4998){if(!_0x7d4998){_0x2f92d6[_0xebea('0x38')](0x194);}return _0x7d4998;};}function handleError(_0x342fac,_0x563c8d){_0x563c8d=_0x563c8d||0x1f4;return function(_0x46ff0c){logger[_0xebea('0x23')](_0x46ff0c['stack']);if(_0x46ff0c['name']){delete _0x46ff0c[_0xebea('0x39')];}_0x342fac[_0xebea('0x29')](_0x563c8d)[_0xebea('0x3a')](_0x46ff0c);};}exports[_0xebea('0x3b')]=function(_0x42ecca,_0x442af1){var _0x1c574e={'include':[{'model':db[_0xebea('0x3c')],'as':_0xebea('0x3d')}]},_0x2d4406={},_0x5505cd={'count':0x0,'rows':[]};var _0x5caad1=_[_0xebea('0x3e')](db[_0xebea('0x3f')]['rawAttributes'],function(_0xba27ba){return{'name':_0xba27ba[_0xebea('0x40')],'type':_0xba27ba[_0xebea('0x41')]['key']};});_0x2d4406[_0xebea('0x42')]=_[_0xebea('0x3e')](_0x5caad1,_0xebea('0x39'));_0x2d4406[_0xebea('0x43')]=_[_0xebea('0x44')](_0x42ecca[_0xebea('0x43')]);_0x2d4406['filters']=_[_0xebea('0x45')](_0x2d4406[_0xebea('0x42')],_0x2d4406[_0xebea('0x43')]);_0x1c574e[_0xebea('0x46')]=_[_0xebea('0x45')](_0x2d4406['model'],qs['fields'](_0x42ecca['query']['fields']));_0x1c574e[_0xebea('0x46')]=_0x1c574e[_0xebea('0x46')][_0xebea('0x47')]?_0x1c574e['attributes']:_0x2d4406[_0xebea('0x42')];if(!_0x42ecca['query']['hasOwnProperty']('nolimit')){_0x1c574e[_0xebea('0x2f')]=qs[_0xebea('0x2f')](_0x42ecca['query'][_0xebea('0x2f')]);_0x1c574e[_0xebea('0x2c')]=qs[_0xebea('0x2c')](_0x42ecca[_0xebea('0x43')][_0xebea('0x2c')]);}_0x1c574e[_0xebea('0x48')]=qs['sort'](_0x42ecca[_0xebea('0x43')][_0xebea('0x49')]);_0x1c574e[_0xebea('0x4a')]=qs[_0xebea('0x4b')](_[_0xebea('0x4c')](_0x42ecca[_0xebea('0x43')],_0x2d4406[_0xebea('0x4b')]),_0x5caad1);if(_0x42ecca['query']['filter']){_0x1c574e['where']=_[_0xebea('0x4d')](_0x1c574e['where'],{'$or':_[_0xebea('0x3e')](_0x5caad1,function(_0x1f6c01){if(_0x1f6c01[_0xebea('0x41')]!==_0xebea('0x4e')){var _0x42d668={};_0x42d668[_0x1f6c01[_0xebea('0x39')]]={'$like':'%'+_0x42ecca[_0xebea('0x43')][_0xebea('0x4f')]+'%'};return _0x42d668;}})});}_0x1c574e=_[_0xebea('0x4d')]({},_0x1c574e,_0x42ecca[_0xebea('0x50')]);var _0xd3ebff={'where':_0x1c574e[_0xebea('0x4a')]};return db[_0xebea('0x3f')][_0xebea('0x2e')](_0xd3ebff)[_0xebea('0x1e')](function(_0xc4ae25){_0x5505cd[_0xebea('0x2e')]=_0xc4ae25;if(_0x42ecca[_0xebea('0x43')][_0xebea('0x51')]){_0x1c574e[_0xebea('0x52')]=[{'all':!![]}];}return db[_0xebea('0x3f')][_0xebea('0x53')](_0x1c574e);})[_0xebea('0x1e')](function(_0xd1e025){_0x5505cd[_0xebea('0x54')]=_0xd1e025;return _0x5505cd;})[_0xebea('0x1e')](respondWithFilteredResult(_0x442af1,_0x1c574e))[_0xebea('0x28')](handleError(_0x442af1,null));};exports[_0xebea('0x55')]=function(_0x1e20b8,_0x12a7f6){var _0x13bade={'raw':![],'where':{'id':_0x1e20b8['params']['id']},'include':[{'model':db['Pause'],'as':_0xebea('0x3d')}]},_0x4d0f2d={};_0x4d0f2d['model']=_[_0xebea('0x44')](db[_0xebea('0x3f')][_0xebea('0x56')]);_0x4d0f2d['query']=_[_0xebea('0x44')](_0x1e20b8[_0xebea('0x43')]);_0x4d0f2d[_0xebea('0x4b')]=_[_0xebea('0x45')](_0x4d0f2d[_0xebea('0x42')],_0x4d0f2d[_0xebea('0x43')]);_0x13bade[_0xebea('0x46')]=_['intersection'](_0x4d0f2d['model'],qs[_0xebea('0x57')](_0x1e20b8[_0xebea('0x43')][_0xebea('0x57')]));_0x13bade[_0xebea('0x46')]=_0x13bade[_0xebea('0x46')]['length']?_0x13bade['attributes']:_0x4d0f2d[_0xebea('0x42')];if(_0x1e20b8[_0xebea('0x43')][_0xebea('0x51')]){_0x13bade[_0xebea('0x52')]=[{'all':!![]}];}_0x13bade=_[_0xebea('0x4d')]({},_0x13bade,_0x1e20b8[_0xebea('0x50')]);return db[_0xebea('0x3f')]['find'](_0x13bade)[_0xebea('0x1e')](handleEntityNotFound(_0x12a7f6,null))[_0xebea('0x1e')](respondWithResult(_0x12a7f6,null))[_0xebea('0x28')](handleError(_0x12a7f6,null));};exports[_0xebea('0x58')]=function(_0x2b0af9,_0xed48d0){return db[_0xebea('0x3f')][_0xebea('0x58')](_0x2b0af9[_0xebea('0x59')],{})['then'](function(_0x30b60a){var _0x5d65a1=_0x2b0af9[_0xebea('0x5a')]['get']({'plain':!![]});if(!_0x5d65a1)throw new Error(_0xebea('0x5b'));if(_0x5d65a1['role']===_0xebea('0x5a')){var _0x105909=_0x30b60a['get']({'plain':!![]});var _0x537d65=_0xebea('0x36');return db[_0xebea('0x5c')][_0xebea('0x5d')]({'where':{'name':_0x537d65,'userProfileId':_0x5d65a1[_0xebea('0x5e')]},'raw':!![]})[_0xebea('0x1e')](function(_0x20394f){if(_0x20394f&&_0x20394f['autoAssociation']===0x0){return db[_0xebea('0x5f')][_0xebea('0x58')]({'name':_0x105909[_0xebea('0x39')],'resourceId':_0x105909['id'],'type':_0x20394f['name'],'sectionId':_0x20394f['id']},{})[_0xebea('0x1e')](function(){return _0x30b60a;});}else{return _0x30b60a;}})['catch'](function(_0x369715){logger['error'](_0xebea('0x60'),_0x369715);throw _0x369715;});}return _0x30b60a;})[_0xebea('0x1e')](respondWithResult(_0xed48d0,0xc9))[_0xebea('0x28')](handleError(_0xed48d0,null));};exports[_0xebea('0x34')]=function(_0x459865,_0x4a44c9){if(_0x459865['body']['id']){delete _0x459865[_0xebea('0x59')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x459865[_0xebea('0x61')]['id']},'include':[{'model':db[_0xebea('0x3c')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x4a44c9,null))['then'](saveUpdates(_0x459865[_0xebea('0x59')],null))[_0xebea('0x1e')](respondWithResult(_0x4a44c9,null))[_0xebea('0x28')](handleError(_0x4a44c9,null));};exports[_0xebea('0x37')]=function(_0x27f94d,_0x304ebe){return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x27f94d['params']['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x304ebe,null))[_0xebea('0x1e')](removeEntity(_0x304ebe,null))[_0xebea('0x28')](handleError(_0x304ebe,null));};exports[_0xebea('0x62')]=function(_0x50fec0,_0x2e8080){return db['SmsAccount']['describe']()[_0xebea('0x1e')](respondWithResult(_0x2e8080,null))[_0xebea('0x28')](handleError(_0x2e8080,null));};exports[_0xebea('0x63')]=function(_0x205b4a,_0xee7e9d,_0x226aa8){if(_0x205b4a[_0xebea('0x59')]['id']){delete _0x205b4a[_0xebea('0x59')]['id'];}return db[_0xebea('0x3f')]['find']({'where':{'id':_0x205b4a['params']['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0xee7e9d,null))[_0xebea('0x1e')](function(_0x1cdb73){if(_0x1cdb73){_0x205b4a[_0xebea('0x59')][_0xebea('0x64')]=_0x1cdb73['id'];return db['Disposition'][_0xebea('0x58')](_0x205b4a[_0xebea('0x59')]);}})[_0xebea('0x1e')](respondWithResult(_0xee7e9d,null))[_0xebea('0x28')](handleError(_0xee7e9d,null));};exports['getDispositions']=function(_0x445445,_0x26db87,_0x16a498){var _0x1a9f2d={'raw':![],'where':{}};var _0x5189e3={};var _0x4671d1={'count':0x0,'rows':[]};return db['SmsAccount'][_0xebea('0x65')]({'where':{'id':_0x445445[_0xebea('0x61')]['id']}})['then'](handleEntityNotFound(_0x26db87,null))[_0xebea('0x1e')](function(_0x4389e2){if(_0x4389e2){_0x5189e3[_0xebea('0x42')]=_['keys'](db[_0xebea('0x66')][_0xebea('0x56')]);_0x5189e3[_0xebea('0x43')]=_[_0xebea('0x44')](_0x445445[_0xebea('0x43')]);_0x5189e3['filters']=_[_0xebea('0x45')](_0x5189e3[_0xebea('0x42')],_0x5189e3[_0xebea('0x43')]);_0x1a9f2d['attributes']=_[_0xebea('0x45')](_0x5189e3['model'],qs[_0xebea('0x57')](_0x445445[_0xebea('0x43')][_0xebea('0x57')]));_0x1a9f2d['attributes']=_0x1a9f2d[_0xebea('0x46')][_0xebea('0x47')]?_0x1a9f2d[_0xebea('0x46')]:_0x5189e3[_0xebea('0x42')];if(!_0x445445[_0xebea('0x43')][_0xebea('0x67')](_0xebea('0x68'))){_0x1a9f2d[_0xebea('0x2f')]=qs[_0xebea('0x2f')](_0x445445['query'][_0xebea('0x2f')]);_0x1a9f2d[_0xebea('0x2c')]=qs['offset'](_0x445445[_0xebea('0x43')][_0xebea('0x2c')]);}_0x1a9f2d['order']=qs[_0xebea('0x49')](_0x445445[_0xebea('0x43')][_0xebea('0x49')]);_0x1a9f2d[_0xebea('0x4a')]=qs[_0xebea('0x4b')](_[_0xebea('0x4c')](_0x445445[_0xebea('0x43')],_0x5189e3[_0xebea('0x4b')]));_0x1a9f2d['where']['SmsAccountId']=_0x4389e2['id'];if(_0x445445['query'][_0xebea('0x4f')]){_0x1a9f2d[_0xebea('0x4a')]=_['merge'](_0x1a9f2d[_0xebea('0x4a')],{'$or':_[_0xebea('0x3e')](_0x1a9f2d['attributes'],function(_0x13b047){var _0x38074={};_0x38074[_0x13b047]={'$like':'%'+_0x445445[_0xebea('0x43')]['filter']+'%'};return _0x38074;})});}_0x1a9f2d=_[_0xebea('0x4d')]({},_0x1a9f2d,_0x445445[_0xebea('0x50')]);return db[_0xebea('0x66')][_0xebea('0x2e')]({'where':_0x1a9f2d[_0xebea('0x4a')]})[_0xebea('0x1e')](function(_0x2c33da){_0x4671d1[_0xebea('0x2e')]=_0x2c33da;if(_0x445445[_0xebea('0x43')][_0xebea('0x51')]){_0x1a9f2d[_0xebea('0x52')]=[{'all':!![]}];}return db[_0xebea('0x66')][_0xebea('0x53')](_0x1a9f2d);})['then'](function(_0x156b6f){_0x4671d1[_0xebea('0x54')]=_0x156b6f;return _0x4671d1;});}})[_0xebea('0x1e')](respondWithFilteredResult(_0x26db87,_0x1a9f2d))['catch'](handleError(_0x26db87,null));};exports[_0xebea('0x69')]=function(_0x2af4a2,_0x49fef7,_0x47b805){return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x2af4a2['params']['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x49fef7,null))[_0xebea('0x1e')](function(_0x5ec727){if(_0x5ec727){return _0x5ec727[_0xebea('0x69')](_0x2af4a2['query']['ids']);}})['then'](respondWithStatusCode(_0x49fef7,null))[_0xebea('0x28')](handleError(_0x49fef7,null));};exports[_0xebea('0x6a')]=function(_0x34807d,_0x30a506,_0x5b117d){if(_0x34807d[_0xebea('0x59')]['id']){delete _0x34807d[_0xebea('0x59')]['id'];}return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x34807d[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x30a506,null))[_0xebea('0x1e')](function(_0x4ec333){if(_0x4ec333){_0x34807d[_0xebea('0x59')][_0xebea('0x64')]=_0x4ec333['id'];return db[_0xebea('0x6b')]['create'](_0x34807d[_0xebea('0x59')]);}})['then'](respondWithResult(_0x30a506,null))[_0xebea('0x28')](handleError(_0x30a506,null));};exports['getAnswers']=function(_0x578fe4,_0x48e133,_0x3ca81b){var _0x228923={'raw':![],'where':{}};var _0x42d193={};var _0x4ba222={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x578fe4[_0xebea('0x61')]['id']}})['then'](handleEntityNotFound(_0x48e133,null))[_0xebea('0x1e')](function(_0x590ce9){if(_0x590ce9){_0x42d193[_0xebea('0x42')]=_['keys'](db[_0xebea('0x6b')]['rawAttributes']);_0x42d193[_0xebea('0x43')]=_[_0xebea('0x44')](_0x578fe4[_0xebea('0x43')]);_0x42d193['filters']=_[_0xebea('0x45')](_0x42d193[_0xebea('0x42')],_0x42d193[_0xebea('0x43')]);_0x228923['attributes']=_[_0xebea('0x45')](_0x42d193['model'],qs[_0xebea('0x57')](_0x578fe4[_0xebea('0x43')]['fields']));_0x228923[_0xebea('0x46')]=_0x228923[_0xebea('0x46')][_0xebea('0x47')]?_0x228923[_0xebea('0x46')]:_0x42d193[_0xebea('0x42')];if(!_0x578fe4['query']['hasOwnProperty'](_0xebea('0x68'))){_0x228923['limit']=qs[_0xebea('0x2f')](_0x578fe4[_0xebea('0x43')][_0xebea('0x2f')]);_0x228923[_0xebea('0x2c')]=qs[_0xebea('0x2c')](_0x578fe4[_0xebea('0x43')][_0xebea('0x2c')]);}_0x228923[_0xebea('0x48')]=qs['sort'](_0x578fe4[_0xebea('0x43')][_0xebea('0x49')]);_0x228923[_0xebea('0x4a')]=qs[_0xebea('0x4b')](_[_0xebea('0x4c')](_0x578fe4[_0xebea('0x43')],_0x42d193[_0xebea('0x4b')]));_0x228923['where'][_0xebea('0x64')]=_0x590ce9['id'];if(_0x578fe4[_0xebea('0x43')][_0xebea('0x4f')]){_0x228923[_0xebea('0x4a')]=_['merge'](_0x228923[_0xebea('0x4a')],{'$or':_[_0xebea('0x3e')](_0x228923[_0xebea('0x46')],function(_0x56b5b6){var _0x9487d2={};_0x9487d2[_0x56b5b6]={'$like':'%'+_0x578fe4[_0xebea('0x43')][_0xebea('0x4f')]+'%'};return _0x9487d2;})});}_0x228923=_[_0xebea('0x4d')]({},_0x228923,_0x578fe4[_0xebea('0x50')]);return db[_0xebea('0x6b')]['count']({'where':_0x228923['where']})[_0xebea('0x1e')](function(_0x4d665d){_0x4ba222[_0xebea('0x2e')]=_0x4d665d;if(_0x578fe4[_0xebea('0x43')]['includeAll']){_0x228923[_0xebea('0x52')]=[{'all':!![]}];}return db[_0xebea('0x6b')]['findAll'](_0x228923);})[_0xebea('0x1e')](function(_0x22dd8c){_0x4ba222[_0xebea('0x54')]=_0x22dd8c;return _0x4ba222;});}})[_0xebea('0x1e')](respondWithFilteredResult(_0x48e133,_0x228923))[_0xebea('0x28')](handleError(_0x48e133,null));};exports[_0xebea('0x6c')]=function(_0x3fbfaf,_0x59cc2d,_0x2ecc3d){return db[_0xebea('0x3f')]['find']({'where':{'id':_0x3fbfaf[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x59cc2d,null))[_0xebea('0x1e')](function(_0xd6ade7){if(_0xd6ade7){return _0xd6ade7[_0xebea('0x6c')](_0x3fbfaf[_0xebea('0x43')][_0xebea('0x6d')]);}})['then'](respondWithStatusCode(_0x59cc2d,null))[_0xebea('0x28')](handleError(_0x59cc2d,null));};exports[_0xebea('0x6e')]=function(_0x3fc405,_0x32603d,_0x54cafc){var _0x372447={'channel':_0xebea('0x6f')};var _0x27e1fb=[];var _0x385b92=[];var _0x54da63={};return db[_0xebea('0x3f')]['find']({'where':{'id':_0x3fc405['params']['id']},'include':[{'model':db['SmsApplication'],'as':_0xebea('0x70')}]})['then'](handleEntityNotFound(_0x32603d,null))['then'](function(_0xd7c5ae){_0x372447[_0xebea('0x71')]=_0xd7c5ae;_0x372447[_0xebea('0x72')]=_[_0xebea('0x73')](_0xd7c5ae[_0xebea('0x70')],[_0xebea('0x74')],[_0xebea('0x75')]);if(_0x372447[_0xebea('0x71')][_0xebea('0x70')]){delete _0x372447[_0xebea('0x71')]['Applications'];}return db[_0xebea('0x76')][_0xebea('0x62')]();})[_0xebea('0x1e')](function(_0x4b7770){if(!_0x4b7770){throw new db[(_0xebea('0x77'))][(_0xebea('0x78'))](_0xebea('0x79'));}_0x27e1fb=_['difference'](_[_0xebea('0x44')](_0x4b7770),[_0xebea('0x7a'),_0xebea('0x7b')]);_0x385b92=_[_0xebea('0x7c')](_[_0xebea('0x44')](_0x4b7770),[_0xebea('0x7a'),_0xebea('0x7b'),_0xebea('0x7d'),'ListId']);_0x372447[_0xebea('0x59')]={'mapKey':_0xebea('0x7e')};if(_0x372447[_0xebea('0x71')][_0xebea('0x41')]){switch(_0x372447['account'][_0xebea('0x41')]){case _0xebea('0x7f'):_0x372447[_0xebea('0x59')]['from']=_0x3fc405['body'][_0xebea('0x80')];_0x372447['body'][_0xebea('0x59')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x81')];_0x372447[_0xebea('0x59')][_0xebea('0x82')]=_0x3fc405['body'][_0xebea('0x83')];break;case _0xebea('0x84'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]='+'+_0x3fc405['body']['sender'];_0x372447[_0xebea('0x59')]['body']=_0x3fc405[_0xebea('0x59')][_0xebea('0x86')];break;case _0xebea('0x87'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]=_0x3fc405[_0xebea('0x59')]['from'];_0x372447[_0xebea('0x59')][_0xebea('0x59')]=_0x3fc405[_0xebea('0x59')]['message'];break;case _0xebea('0x88'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]=_0x3fc405['body'][_0xebea('0x85')];_0x372447[_0xebea('0x59')][_0xebea('0x59')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x59')];_0x372447[_0xebea('0x59')]['messageId']=_0x3fc405['body'][_0xebea('0x89')];break;case'plivo':_0x372447[_0xebea('0x59')]['from']=_0x3fc405[_0xebea('0x59')][_0xebea('0x80')];_0x372447[_0xebea('0x59')][_0xebea('0x59')]=_0x3fc405[_0xebea('0x59')]['Text'];_0x372447[_0xebea('0x59')][_0xebea('0x82')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x8a')];break;case _0xebea('0x8b'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]='+'+_0x3fc405[_0xebea('0x59')]['results'][0x0][_0xebea('0x85')];_0x372447[_0xebea('0x59')]['body']=_0x3fc405[_0xebea('0x59')][_0xebea('0x8c')][0x0][_0xebea('0x86')];_0x372447[_0xebea('0x59')][_0xebea('0x82')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x8c')][0x0][_0xebea('0x82')];break;case _0xebea('0x8d'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x8e')];_0x372447[_0xebea('0x59')][_0xebea('0x59')]=_0x3fc405[_0xebea('0x59')]['segmentedMessage'][_0xebea('0x25')];break;case _0xebea('0x8f'):_0x372447[_0xebea('0x59')]['from']=_0x3fc405['body']['fromNumber'];_0x372447['body']['body']=_0x3fc405[_0xebea('0x59')]['text'];_0x372447['body'][_0xebea('0x82')]=_0x3fc405['body']['replyMessageId'];break;case _0xebea('0x90'):_0x372447[_0xebea('0x59')][_0xebea('0x82')]=_0x3fc405[_0xebea('0x59')][0x0][_0xebea('0x25')]['id'];_0x372447[_0xebea('0x59')][_0xebea('0x85')]=_0x3fc405[_0xebea('0x59')][0x0]['message'][_0xebea('0x85')];_0x372447[_0xebea('0x59')][_0xebea('0x59')]=_0x3fc405['body'][0x0][_0xebea('0x25')][_0xebea('0x86')];break;case _0xebea('0x91'):_0x372447[_0xebea('0x59')][_0xebea('0x85')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x85')];_0x372447['body']['body']=_0x3fc405[_0xebea('0x59')][_0xebea('0x25')];_0x372447[_0xebea('0x59')][_0xebea('0x82')]=_0x3fc405[_0xebea('0x59')][_0xebea('0x92')];break;}}if(_0x372447[_0xebea('0x59')]['id']){delete _0x372447[_0xebea('0x59')]['id'];}if(_['isNil'](_0x372447[_0xebea('0x59')][_0xebea('0x85')])){throw new db[(_0xebea('0x77'))][(_0xebea('0x78'))](_0xebea('0x93'));}if(_['isNil'](_0x372447[_0xebea('0x59')][_0xebea('0x59')])||_0x372447[_0xebea('0x59')][_0xebea('0x59')]===''){throw new db[(_0xebea('0x77'))][(_0xebea('0x78'))](_0xebea('0x94'));}if(_[_0xebea('0x95')](_0x372447[_0xebea('0x59')][_0xebea('0x96')])){throw new db['Sequelize'][(_0xebea('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x385b92);}if(!_['includes'](_0x385b92,_0x372447[_0xebea('0x59')][_0xebea('0x96')])){throw new db['Sequelize'][(_0xebea('0x78'))](_0xebea('0x97')+_0x385b92);}_0x54da63[_0x372447[_0xebea('0x59')][_0xebea('0x96')]]=_0x372447[_0xebea('0x59')]['from'];return db[_0xebea('0x98')][_0xebea('0x5d')]({'where':{'id':_0x372447[_0xebea('0x71')]['ListId']},'include':[{'model':db[_0xebea('0x76')],'as':_0xebea('0x99'),'where':_0x54da63,'limit':0x1,'order':[[_0xebea('0x7b'),_0xebea('0x9a')]]}]});})[_0xebea('0x1e')](handleEntityNotFound(_0x32603d,null))['then'](function(_0x1c655b){if(_0x1c655b){_0x372447[_0xebea('0x9b')]=_[_0xebea('0x9c')](_0x1c655b,[_0xebea('0x99')]);if(_0x1c655b['Contacts']['length']){return _0x1c655b[_0xebea('0x99')][0x0];}var _0x20d918=_[_0xebea('0x18')](_0x372447[_0xebea('0x59')],{'firstName':_0x372447[_0xebea('0x59')][_0xebea('0x85')],'ListId':_0x1c655b['id']});_0x20d918[_0x372447[_0xebea('0x59')][_0xebea('0x96')]]=_0x372447[_0xebea('0x59')]['from'];return db[_0xebea('0x76')][_0xebea('0x58')](_0x20d918,{'fields':_0x27e1fb,'raw':!![]});}})[_0xebea('0x1e')](handleEntityNotFound(_0x32603d,null))[_0xebea('0x1e')](function(_0x2a41c9){if(_0x2a41c9){_0x372447[_0xebea('0x9d')]=_0x2a41c9;var _0x43be05={'ContactId':_0x2a41c9['id'],'phone':_0x372447[_0xebea('0x59')][_0xebea('0x85')],'SmsAccountId':_0x3fc405[_0xebea('0x61')]['id']};var _0x3049c7={'ContactId':_0x2a41c9['id'],'SmsAccountId':_0x3fc405[_0xebea('0x61')]['id'],'closed':![]};return db[_0xebea('0x9e')][_0xebea('0x5d')]({'where':_0x3049c7})['then'](function(_0x32f312){if(_0x32f312){return[_0x32f312,![]];}return db[_0xebea('0x9e')][_0xebea('0x58')](_0x43be05)['then'](function(_0x4ad50c){return[_0x4ad50c,!![]];});});}})[_0xebea('0x9f')](function(_0x3e3d1c,_0x33a491){_0x372447[_0xebea('0xa0')]=_0x3e3d1c[_0xebea('0x35')]({'plain':!![]});_0x372447['interaction']['created']=![];if(_0x33a491){if(_0x372447[_0xebea('0x71')]['autoclose']){_0x372447[_0xebea('0x72')][_0xebea('0xa1')]({'id':0x0,'priority':_0x372447[_0xebea('0x72')][_0xebea('0x47')]+0x1,'app':_0xebea('0xa2'),'appdata':_0xebea('0xa3'),'interval':_0xebea('0xa4')});}_0x372447[_0xebea('0xa0')]['created']=!![];}return db[_0xebea('0xa5')][_0xebea('0x58')]({'phone':_0x372447[_0xebea('0x59')][_0xebea('0x85')],'messageId':_0x372447[_0xebea('0x59')][_0xebea('0x82')],'body':_0x372447['body'][_0xebea('0x59')],'SmsAccountId':_0x3fc405['params']['id'],'SmsInteractionId':_0x3e3d1c['id'],'direction':'in','ContactId':_0x3e3d1c[_0xebea('0xa6')],'AttachmentId':_0x372447['body'][_0xebea('0xa7')]});})[_0xebea('0x1e')](function(_0x458527){_0x372447[_0xebea('0x25')]=_0x458527;if(_0x372447[_0xebea('0xa0')][_0xebea('0xa8')]){return db[_0xebea('0xa9')][_0xebea('0x5d')]({'attributes':['id',_0xebea('0x39')],'where':{'id':_0x372447[_0xebea('0xa0')]['UserId']}})['then'](function(_0x23fe6a){if(_0x23fe6a){_0x372447[_0xebea('0x72')][_0xebea('0xaa')]({'id':0x0,'priority':0x0,'app':_0xebea('0xab'),'appdata':_0x23fe6a['name']+','+(_0x372447['account'][_0xebea('0xac')]||0xa),'interval':_0xebea('0xa4')});}return respondWithRpcPromise(_0xebea('0xad'),_0xebea('0xae'),_0x372447);});}return respondWithRpcPromise(_0xebea('0xad'),_0xebea('0xae'),_0x372447);})['then'](function(_0x38d391){if(_0x38d391){var _0x52ec68=0xc8;var _0x2d7011=_0xebea('0xaf');logger[_0xebea('0x1f')](_0xebea('0x22'),_0x2d7011,_0x52ec68,_0xebea('0xb0'));logger[_0xebea('0x21')](_0xebea('0xb1'),_0x2d7011,_0x52ec68,_0xebea('0xb0'),JSON['stringify'](_0x38d391));if(_0x372447[_0xebea('0x71')]['type']===_0xebea('0x7f')){return _0x32603d['status'](_0x52ec68)[_0xebea('0x30')](_0xebea('0xb2'),'text/xml')['send'](_0xebea('0xb3'));}else{return _0x32603d[_0xebea('0x29')](_0x52ec68)['json'](_0x38d391);}}})['catch'](handleError(_0x32603d,null));};exports[_0xebea('0xb4')]=function(_0xb74ca4,_0x2d4e5c){var _0x472021=_0xb74ca4['params']['id'];var _0x1373f8=_0xb74ca4[_0xebea('0x59')];var _0x1119e2=0xc8;var _0x3a04da=null;return db[_0xebea('0xb5')]['transaction']({'isolationLevel':db[_0xebea('0xb5')][_0xebea('0xb6')][_0xebea('0xb7')]['READ_COMMITTED']},function(_0x54d825){return db[_0xebea('0x3f')][_0xebea('0x65')]({'where':{'id':_0x472021},'transaction':_0x54d825})[_0xebea('0x1e')](function(_0x396051){if(_0x396051){return db[_0xebea('0xb8')][_0xebea('0x37')]({'where':{'SmsAccountId':_0x472021},'transaction':_0x54d825})[_0xebea('0x1e')](function(){var _0x2b29f0=_[_0xebea('0x3e')](_0x1373f8,function(_0x214929){_0x214929[_0xebea('0x64')]=_0x472021;return _0x214929;});return db[_0xebea('0xb8')][_0xebea('0xb9')](_0x2b29f0,{'transaction':_0x54d825});});}else{_0x1119e2=0x194;_0x3a04da=[];}});})[_0xebea('0x1e')](function(){if(_0x1119e2!==0x194){return db[_0xebea('0xb8')][_0xebea('0xba')]({'where':{'SmsAccountId':_0x472021},'order':_0xebea('0x74')})[_0xebea('0x1e')](function(_0x193770){_0x3a04da=_0x193770;});}})['catch'](function(_0x424008){_0x1119e2=0x1f4;logger['error'](_0x424008[_0xebea('0xbb')]);if(_0x424008[_0xebea('0x39')]){delete _0x424008['name'];}_0x3a04da=_0x424008;})[_0xebea('0xbc')](function(){if(_0x3a04da===null){_0x2d4e5c['sendStatus'](_0x1119e2);}else{if(_0x1119e2===0x1f4){_0x2d4e5c[_0xebea('0x29')](_0x1119e2)[_0xebea('0x3a')](_0x3a04da);}else{_0x2d4e5c['status'](_0x1119e2)['json'](_0x3a04da);}}});};exports[_0xebea('0xbd')]=function(_0x31d5b5,_0x4092ff,_0x2b1d78){var _0x3b4731={};var _0x15f0a9={};var _0x5a539f;var _0x10493e;return db[_0xebea('0x3f')][_0xebea('0x65')]({'where':{'id':_0x31d5b5[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x4092ff,null))[_0xebea('0x1e')](function(_0x2bd88b){if(_0x2bd88b){_0x5a539f=_0x2bd88b;_0x15f0a9[_0xebea('0x42')]=_[_0xebea('0x44')](db['SmsApplication'][_0xebea('0x56')]);_0x15f0a9['query']=_[_0xebea('0x44')](_0x31d5b5[_0xebea('0x43')]);_0x15f0a9[_0xebea('0x4b')]=_['intersection'](_0x15f0a9[_0xebea('0x42')],_0x15f0a9['query']);_0x3b4731[_0xebea('0x46')]=_[_0xebea('0x45')](_0x15f0a9[_0xebea('0x42')],qs[_0xebea('0x57')](_0x31d5b5['query']['fields']));_0x3b4731[_0xebea('0x46')]=_0x3b4731['attributes'][_0xebea('0x47')]?_0x3b4731[_0xebea('0x46')]:_0x15f0a9[_0xebea('0x42')];_0x3b4731[_0xebea('0x48')]=qs[_0xebea('0x49')](_0x31d5b5[_0xebea('0x43')][_0xebea('0x49')]);_0x3b4731[_0xebea('0x4a')]=qs[_0xebea('0x4b')](_[_0xebea('0x4c')](_0x31d5b5[_0xebea('0x43')],_0x15f0a9['filters']));if(_0x31d5b5[_0xebea('0x43')]['filter']){_0x3b4731[_0xebea('0x4a')]=_[_0xebea('0x4d')](_0x3b4731[_0xebea('0x4a')],{'$or':_[_0xebea('0x3e')](_0x3b4731['attributes'],function(_0x5bacbb){var _0x4d5e73={};_0x4d5e73[_0x5bacbb]={'$like':'%'+_0x31d5b5[_0xebea('0x43')]['filter']+'%'};return _0x4d5e73;})});}_0x3b4731=_['merge']({},_0x3b4731,_0x31d5b5[_0xebea('0x50')]);return _0x5a539f[_0xebea('0xbd')](_0x3b4731);}})['then'](function(_0x7f8f3e){if(_0x7f8f3e){_0x10493e=_0x7f8f3e[_0xebea('0x47')];if(!_0x31d5b5[_0xebea('0x43')][_0xebea('0x67')](_0xebea('0x68'))){_0x3b4731[_0xebea('0x2f')]=qs[_0xebea('0x2f')](_0x31d5b5['query'][_0xebea('0x2f')]);_0x3b4731[_0xebea('0x2c')]=qs[_0xebea('0x2c')](_0x31d5b5[_0xebea('0x43')][_0xebea('0x2c')]);}return _0x5a539f[_0xebea('0xbd')](_0x3b4731);}})[_0xebea('0x1e')](function(_0x36cd15){if(_0x36cd15){return _0x36cd15?{'count':_0x10493e,'rows':_0x36cd15}:null;}})['then'](respondWithResult(_0x4092ff,null))[_0xebea('0x28')](handleError(_0x4092ff,null));};exports[_0xebea('0xbe')]=function(_0x222660,_0x27bc98,_0x5f4a5f){var _0x1a0509={'raw':![],'where':{}};var _0x58e6e8={};var _0x7a82b4={'count':0x0,'rows':[]};return db['SmsAccount'][_0xebea('0x65')]({'where':{'id':_0x222660['params']['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x27bc98,null))[_0xebea('0x1e')](function(_0x4058da){if(_0x4058da){_0x58e6e8[_0xebea('0x42')]=_[_0xebea('0x44')](db[_0xebea('0x9e')][_0xebea('0x56')]);_0x58e6e8['query']=_[_0xebea('0x44')](_0x222660[_0xebea('0x43')]);_0x58e6e8[_0xebea('0x4b')]=_[_0xebea('0x45')](_0x58e6e8['model'],_0x58e6e8[_0xebea('0x43')]);_0x1a0509[_0xebea('0x46')]=_[_0xebea('0x45')](_0x58e6e8[_0xebea('0x42')],qs['fields'](_0x222660[_0xebea('0x43')]['fields']));_0x1a0509[_0xebea('0x46')]=_0x1a0509[_0xebea('0x46')][_0xebea('0x47')]?_0x1a0509[_0xebea('0x46')]:_0x58e6e8[_0xebea('0x42')];if(!_0x222660[_0xebea('0x43')]['hasOwnProperty']('nolimit')){_0x1a0509[_0xebea('0x2f')]=qs['limit'](_0x222660['query'][_0xebea('0x2f')]);_0x1a0509[_0xebea('0x2c')]=qs['offset'](_0x222660[_0xebea('0x43')][_0xebea('0x2c')]);}_0x1a0509['order']=qs[_0xebea('0x49')](_0x222660[_0xebea('0x43')]['sort']);_0x1a0509[_0xebea('0x4a')]=qs[_0xebea('0x4b')](_['pick'](_0x222660[_0xebea('0x43')],_0x58e6e8['filters']));_0x1a0509['where'][_0xebea('0x64')]=_0x4058da['id'];if(_0x222660[_0xebea('0x43')][_0xebea('0x4f')]){_0x1a0509[_0xebea('0x4a')]=_['merge'](_0x1a0509[_0xebea('0x4a')],{'$or':_[_0xebea('0x3e')](_0x1a0509[_0xebea('0x46')],function(_0x32d8f2){var _0x4ed5b6={};_0x4ed5b6[_0x32d8f2]={'$like':'%'+_0x222660[_0xebea('0x43')][_0xebea('0x4f')]+'%'};return _0x4ed5b6;})});}_0x1a0509=_['merge']({},_0x1a0509,_0x222660['options']);return db[_0xebea('0x9e')][_0xebea('0x2e')]({'where':_0x1a0509[_0xebea('0x4a')]})['then'](function(_0x1db92c){_0x7a82b4['count']=_0x1db92c;if(_0x222660[_0xebea('0x43')][_0xebea('0x51')]){_0x1a0509[_0xebea('0x52')]=[{'model':db[_0xebea('0x76')],'as':'Contact','required':![]},{'model':db[_0xebea('0xa9')],'as':'Owner','attributes':[_0xebea('0x39'),_0xebea('0xbf'),_0xebea('0xc0')],'required':![]},{'model':db[_0xebea('0xc1')],'as':_0xebea('0xc2'),'attributes':['id','name',_0xebea('0xc3')],'where':_0x222660['query'][_0xebea('0xc4')]?{'id':_0x222660['query'][_0xebea('0xc4')]}:undefined,'required':_0x222660[_0xebea('0x43')]['tag']?!![]:![]}];}return db['SmsInteraction'][_0xebea('0x53')](_0x1a0509);})[_0xebea('0x1e')](function(_0x162bae){_0x7a82b4[_0xebea('0x54')]=_0x162bae;return _0x7a82b4;});}})['then'](respondWithFilteredResult(_0x27bc98,_0x1a0509))[_0xebea('0x28')](handleError(_0x27bc98,null));};exports[_0xebea('0x3a')]=function(_0x5210a6,_0xcc847e,_0x3b1b3e){var _0xa642e5,_0x301e9a,_0x6c8917;if(_['isNil'](_0x5210a6[_0xebea('0x59')][_0xebea('0x59')])||_0x5210a6['body'][_0xebea('0x59')]===''){throw new db[(_0xebea('0x77'))][(_0xebea('0x78'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xebea('0x95')](_0x5210a6[_0xebea('0x59')]['to'])){throw new db['Sequelize'][(_0xebea('0x78'))](_0xebea('0xc5'));}_0xa642e5=_0x5210a6[_0xebea('0x59')]['to'];return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x5210a6[_0xebea('0x61')]['id']},'include':[{'model':db[_0xebea('0x98')],'as':_0xebea('0xc6'),'include':[{'model':db['CmContact'],'as':_0xebea('0x99'),'where':{'mobile':_0xa642e5},'limit':0x1,'order':[[_0xebea('0x7b'),_0xebea('0x9a')]]}]}]})[_0xebea('0x1e')](handleEntityNotFound(_0xcc847e,null))[_0xebea('0x1e')](function(_0x2fdf59){if(_0x2fdf59&&_0x2fdf59['List']){_0x301e9a=_0x2fdf59[_0xebea('0x35')]({'plain':!![]});if(_0x301e9a[_0xebea('0xc6')]&&_0x301e9a[_0xebea('0xc6')][_0xebea('0x99')][_0xebea('0x47')]){return _0x301e9a['List'][_0xebea('0x99')][0x0];}return db[_0xebea('0x76')][_0xebea('0x58')](_['defaults'](_0x5210a6[_0xebea('0x59')],{'firstName':_0xa642e5,'mobile':_0xa642e5,'phone':_0xa642e5,'ListId':_0x301e9a[_0xebea('0xc7')]}));}})[_0xebea('0x1e')](handleEntityNotFound(_0xcc847e,null))[_0xebea('0x1e')](function(_0x2248f4){if(_0x2248f4){_0x6c8917=_0x2248f4;return db['SmsInteraction'][_0xebea('0x5d')]({'where':{'ContactId':_0x6c8917['id'],'closed':![],'SmsAccountId':_0x301e9a['id']}})['then'](function(_0x3c228a){if(_0x3c228a){return[_0x3c228a,![]];}return db['SmsInteraction'][_0xebea('0x58')]({'UserId':_0x5210a6[_0xebea('0x5a')]['id'],'ContactId':_0x6c8917['id'],'SmsAccountId':_0x301e9a['id'],'phone':_0xa642e5,'firstMsgDirection':_0xebea('0xc8'),'Messages':[_[_0xebea('0x4d')](_0x5210a6['body'],{'read':![],'body':_0x5210a6[_0xebea('0x59')][_0xebea('0x59')],'phone':_0xa642e5,'SmsAccountId':_0x301e9a['id'],'UserId':_0x5210a6[_0xebea('0x5a')]['id'],'ContactId':_0x6c8917['id']})]},{'include':[{'model':db[_0xebea('0xa5')],'as':_0xebea('0xc9')}]})['then'](function(_0x2de361){return[_0x2de361,!![]];});});}})[_0xebea('0x9f')](function(_0x4f16c1,_0xc1f1a0){if(_0xc1f1a0){return _0x4f16c1;}return db['SmsMessage'][_0xebea('0x58')](_[_0xebea('0x4d')](_0x5210a6[_0xebea('0x59')],{'read':![],'body':_0x5210a6[_0xebea('0x59')][_0xebea('0x59')],'phone':_0xa642e5,'SmsAccountId':_0x301e9a['id'],'SmsInteractionId':_0x4f16c1['id'],'UserId':_0x5210a6['user']['id'],'ContactId':_0x6c8917['id']}))['then'](function(_0x59e1ca){_0x4f16c1['dataValues'][_0xebea('0xc9')]=[];_0x4f16c1[_0xebea('0xca')][_0xebea('0xc9')][_0xebea('0xa1')](_0x59e1ca[_0xebea('0xca')]);return _0x4f16c1;});})[_0xebea('0x1e')](respondWithResult(_0xcc847e,null))[_0xebea('0x28')](handleError(_0xcc847e,null));};exports['status']=function(_0x1e6f71,_0xd49e33,_0x62f406){if(_0x1e6f71[_0xebea('0x59')]['id']){delete _0x1e6f71[_0xebea('0x59')]['id'];}var _0x5868f1,_0x58c046,_0x19535f;return db[_0xebea('0x3f')]['find']({'where':{'id':_0x1e6f71[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0xd49e33,null))['then'](function(_0x498c5c){if(_0x498c5c){_0x19535f=_0x498c5c;logger[_0xebea('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xebea('0x29'),'received\x20delivery\x20report\x20from',_0x498c5c[_0xebea('0x41')],util[_0xebea('0xcb')](_0x1e6f71['body'],{'showHidden':![],'depth':null}));switch(_0x498c5c[_0xebea('0x41')]){case _0xebea('0x84'):if(_0x1e6f71[_0xebea('0x59')][_0xebea('0xcc')]&&_0x1e6f71[_0xebea('0x59')]['status']){_0x58c046=_0x1e6f71[_0xebea('0x59')]['status'];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x1e6f71[_0xebea('0x59')][_0xebea('0xcc')]}});}break;case _0xebea('0x87'):if(_0x1e6f71[_0xebea('0x59')][_0xebea('0xcd')]&&_0x1e6f71['body'][_0xebea('0xce')]){_0x58c046=_0x1e6f71[_0xebea('0x59')][_0xebea('0xce')];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x1e6f71[_0xebea('0x59')]['requestid']}});}break;case _0xebea('0x88'):if(_0x1e6f71[_0xebea('0x59')][_0xebea('0x89')]&&_0x1e6f71['body'][_0xebea('0xcf')]){_0x58c046=_0x1e6f71[_0xebea('0x59')][_0xebea('0xcf')];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x1e6f71[_0xebea('0x59')][_0xebea('0x89')]}});}break;case _0xebea('0x8b'):var _0x4dc10b=_0x1e6f71[_0xebea('0x59')][_0xebea('0x8c')][0x0];if(_0x4dc10b['messageId']&&_0x4dc10b['status'][_0xebea('0xd0')]===_0xebea('0xd1')){_0x58c046=_0x4dc10b[_0xebea('0x29')]['groupName'];return db[_0xebea('0xa5')]['find']({'where':{'messageId':_0x4dc10b['messageId']}});}break;case _0xebea('0x8f'):if(_0x1e6f71[_0xebea('0x59')][_0xebea('0x82')]&&_0x1e6f71['body']['status']){_0x58c046=_0x1e6f71[_0xebea('0x59')][_0xebea('0x29')];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x1e6f71['body']['messageId']}});}break;case'bandwidth':if(_0x1e6f71[_0xebea('0x59')][0x0][_0xebea('0x25')]['id']){_0x58c046=_0x1e6f71[_0xebea('0x59')][0x0][_0xebea('0x41')];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x1e6f71['body'][0x0][_0xebea('0x25')]['id']}});}break;case _0xebea('0x91'):if(_0x1e6f71[_0xebea('0x59')][_0xebea('0xd2')]&&_0x1e6f71['body'][_0xebea('0x29')]){_0x58c046=_0x1e6f71[_0xebea('0x59')][_0xebea('0x29')];return db[_0xebea('0xa5')]['find']({'where':{'messageId':_0x1e6f71[_0xebea('0x59')][_0xebea('0xd2')]}});}break;}}})[_0xebea('0x1e')](handleEntityNotFound(_0xd49e33,null))[_0xebea('0x1e')](function(_0x40315c){if(_0x40315c){_0x5868f1=_0x40315c;switch(_0x19535f[_0xebea('0x41')]){case _0xebea('0x84'):if(_0x58c046==='DELIVERED'){return _0x5868f1[_0xebea('0x34')]({'read':!![]});}else{logger[_0xebea('0x23')](_0xebea('0x22'),'status',_0xebea('0x84'),util['inspect'](_0x1e6f71['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x58c046==='1'){return _0x5868f1['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xebea('0x84'),util[_0xebea('0xcb')](_0x1e6f71['body'],{'showHidden':![],'depth':null}));}break;case _0xebea('0x88'):if(!_0x1e6f71['body'][_0xebea('0xd3')]&&_0x58c046>=0xc8&&_0x58c046<=0xce){return _0x5868f1[_0xebea('0x34')]({'read':!![]});}else{logger[_0xebea('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xebea('0x88'),util[_0xebea('0xcb')](_0x1e6f71[_0xebea('0x59')],{'showHidden':![],'depth':null}));}break;case _0xebea('0x8b'):var _0x9aa404=_0x1e6f71[_0xebea('0x59')][_0xebea('0x8c')][0x0];if(_0x9aa404[_0xebea('0x29')]['groupName']==='DELIVERED'){return _0x5868f1[_0xebea('0x34')]({'read':!![]});}else{logger[_0xebea('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xebea('0x29'),_0xebea('0x8b'),util[_0xebea('0xcb')](_0x1e6f71[_0xebea('0x59')],{'showHidden':![],'depth':null}));}break;case _0xebea('0x8f'):if(_0x58c046==_0xebea('0xd4')||_0x58c046==_0xebea('0xd5')){return _0x5868f1[_0xebea('0x34')]({'read':!![]});}else{logger[_0xebea('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xebea('0x29'),_0xebea('0x8f'),util[_0xebea('0xcb')](_0x1e6f71[_0xebea('0x59')],{'showHidden':![],'depth':null}));}break;case _0xebea('0x90'):if(_0x58c046=='message-delivered'){return _0x5868f1[_0xebea('0x34')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xebea('0x29'),_0xebea('0x90'),util[_0xebea('0xcb')](_0x1e6f71[_0xebea('0x59')],{'showHidden':![],'depth':null}));}break;case _0xebea('0x91'):if(_0x58c046===_0xebea('0xd6')||_0x58c046==='ACCEPTD'){return _0x5868f1['update']({'read':!![]});}else{logger[_0xebea('0x23')](_0xebea('0x22'),_0xebea('0x29'),_0xebea('0x91'),util[_0xebea('0xcb')](_0x1e6f71[_0xebea('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x5868f1;}})[_0xebea('0x1e')](respondWithResult(_0xd49e33,null))[_0xebea('0x28')](handleError(_0xd49e33,null));};exports[_0xebea('0xd7')]=function(_0x32c5a1,_0x1b82cb,_0x24db61){var _0x30186e,_0x336c81,_0x1d2f56;return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x32c5a1[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x1b82cb,null))[_0xebea('0x1e')](function(_0x13fbc9){if(_0x13fbc9){_0x1d2f56=_0x13fbc9;logger['debug'](_0xebea('0x22'),_0xebea('0x29'),_0xebea('0xd8'),_0x13fbc9[_0xebea('0x41')],util[_0xebea('0xcb')](_0x32c5a1['query'],{'showHidden':![],'depth':null}));switch(_0x13fbc9[_0xebea('0x41')]){case'csc':if(_0x32c5a1[_0xebea('0x43')][_0xebea('0xd9')]&&_0x32c5a1[_0xebea('0x43')][_0xebea('0xda')]){_0x336c81=_0x32c5a1[_0xebea('0x43')][_0xebea('0xda')];return db[_0xebea('0xa5')][_0xebea('0x5d')]({'where':{'messageId':_0x32c5a1[_0xebea('0x43')][_0xebea('0xd9')]}});}break;}}})[_0xebea('0x1e')](handleEntityNotFound(_0x1b82cb,null))[_0xebea('0x1e')](function(_0x484362){if(_0x484362){_0x30186e=_0x484362;switch(_0x1d2f56[_0xebea('0x41')]){case'csc':if(_0x336c81==='2'||_0x336c81==='6'){return _0x30186e[_0xebea('0x34')]({'read':!![]});}else{logger[_0xebea('0x23')](_0xebea('0x22'),'status',_0xebea('0x8d'),util['inspect'](_0x32c5a1[_0xebea('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x30186e;}})[_0xebea('0x1e')](respondWithResult(_0x1b82cb,null))[_0xebea('0x28')](handleError(_0x1b82cb,null));};exports[_0xebea('0xdb')]=function(_0xd0c323,_0x1906c9,_0x25bc51){return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0xd0c323[_0xebea('0x61')]['id']}})['then'](handleEntityNotFound(_0x1906c9,null))[_0xebea('0x1e')](function(_0x49a1e1){if(_0x49a1e1){return _0x49a1e1[_0xebea('0xdb')](_0xd0c323[_0xebea('0x59')][_0xebea('0x6d')],_[_0xebea('0x9c')](_0xd0c323[_0xebea('0x59')],[_0xebea('0x6d'),'id'])||{})[_0xebea('0x9f')](function(_0x1fd811){for(var _0x1f1dd8=0x0;_0x1f1dd8<_0xd0c323[_0xebea('0x59')]['ids']['length'];_0x1f1dd8+=0x1){socket[_0xebea('0xdc')](_0xebea('0xdd'),{'UserId':Number(_0xd0c323[_0xebea('0x59')][_0xebea('0x6d')][_0x1f1dd8]),'SmsAccountId':Number(_0xd0c323[_0xebea('0x61')]['id'])});}return _0x1fd811;});}})['then'](respondWithResult(_0x1906c9,null))[_0xebea('0x28')](handleError(_0x1906c9,null));};exports[_0xebea('0xde')]=function(_0x38e351,_0x4af42e,_0x10d1bf){return db[_0xebea('0x3f')][_0xebea('0x5d')]({'where':{'id':_0x38e351[_0xebea('0x61')]['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x4af42e,null))['then'](function(_0x166d7a){if(_0x166d7a){return _0x166d7a[_0xebea('0xde')](_0x38e351['query'][_0xebea('0x6d')])[_0xebea('0x1e')](function(){if(_[_0xebea('0xdf')](_0x38e351['query'][_0xebea('0x6d')])){for(var _0x44d073=0x0;_0x44d073<_0x38e351[_0xebea('0x43')][_0xebea('0x6d')][_0xebea('0x47')];_0x44d073+=0x1){socket['emit'](_0xebea('0xe0'),{'UserId':Number(_0x38e351[_0xebea('0x43')][_0xebea('0x6d')][_0x44d073]),'SmsAccountId':Number(_0x38e351[_0xebea('0x61')]['id'])});}}else{socket[_0xebea('0xdc')](_0xebea('0xe0'),{'UserId':Number(_0x38e351['query'][_0xebea('0x6d')]),'SmsAccountId':Number(_0x38e351[_0xebea('0x61')]['id'])});}});}})[_0xebea('0x1e')](respondWithStatusCode(_0x4af42e,null))[_0xebea('0x28')](handleError(_0x4af42e,null));};exports[_0xebea('0xe1')]=function(_0x11483c,_0x4c31e4,_0x2a0593){var _0x54657c={};var _0x43c158={};var _0x12d8b9;var _0x5ea268;return db[_0xebea('0x3f')][_0xebea('0x65')]({'where':{'id':_0x11483c['params']['id']}})[_0xebea('0x1e')](handleEntityNotFound(_0x4c31e4,null))[_0xebea('0x1e')](function(_0x1c4282){if(_0x1c4282){_0x12d8b9=_0x1c4282;_0x43c158[_0xebea('0x42')]=_['keys'](db[_0xebea('0xa9')][_0xebea('0x56')]);_0x43c158[_0xebea('0x43')]=_[_0xebea('0x44')](_0x11483c[_0xebea('0x43')]);_0x43c158['filters']=_[_0xebea('0x45')](_0x43c158[_0xebea('0x42')],_0x43c158[_0xebea('0x43')]);_0x54657c[_0xebea('0x46')]=_[_0xebea('0x45')](_0x43c158[_0xebea('0x42')],qs[_0xebea('0x57')](_0x11483c['query'][_0xebea('0x57')]));_0x54657c[_0xebea('0x46')]=_0x54657c[_0xebea('0x46')][_0xebea('0x47')]?_0x54657c[_0xebea('0x46')]:_0x43c158[_0xebea('0x42')];_0x54657c[_0xebea('0x48')]=qs[_0xebea('0x49')](_0x11483c[_0xebea('0x43')][_0xebea('0x49')]);_0x54657c['where']=qs[_0xebea('0x4b')](_[_0xebea('0x4c')](_0x11483c[_0xebea('0x43')],_0x43c158[_0xebea('0x4b')]));if(_0x11483c[_0xebea('0x43')][_0xebea('0x4f')]){_0x54657c['where']=_[_0xebea('0x4d')](_0x54657c['where'],{'$or':_[_0xebea('0x3e')](_0x54657c['attributes'],function(_0x303457){var _0x5c3178={};_0x5c3178[_0x303457]={'$like':'%'+_0x11483c[_0xebea('0x43')][_0xebea('0x4f')]+'%'};return _0x5c3178;})});}_0x54657c=_[_0xebea('0x4d')]({},_0x54657c,_0x11483c[_0xebea('0x50')]);return _0x12d8b9[_0xebea('0xe1')](_0x54657c);}})[_0xebea('0x1e')](function(_0x2b956e){if(_0x2b956e){_0x5ea268=_0x2b956e[_0xebea('0x47')];if(!_0x11483c[_0xebea('0x43')][_0xebea('0x67')](_0xebea('0x68'))){_0x54657c['limit']=qs[_0xebea('0x2f')](_0x11483c[_0xebea('0x43')][_0xebea('0x2f')]);_0x54657c[_0xebea('0x2c')]=qs[_0xebea('0x2c')](_0x11483c['query'][_0xebea('0x2c')]);}return _0x12d8b9[_0xebea('0xe1')](_0x54657c);}})[_0xebea('0x1e')](function(_0xa7a208){if(_0xa7a208){return _0xa7a208?{'count':_0x5ea268,'rows':_0xa7a208}:null;}})[_0xebea('0x1e')](respondWithResult(_0x4c31e4,null))[_0xebea('0x28')](handleError(_0x4c31e4,null));};
\ No newline at end of file
+var _0x2f9e=['Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','finally','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','SmsAccount,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','skebby','skebby_dispatch_id','statusInt','requestid','status_code','infobip','groupName','DELIVERED','redif','inspect','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','bandwidth','message-delivered','DELIVRD','ACCEPTD','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./smsAccount.socket','register','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','send','index','Pause','SmsAccount','rawAttributes','type','key','model','map','name','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','findAll','catch','show','params','mandatoryDispositionPause','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','rows','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','sender','text','connectel','clicksend','message_id','plivo','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','omit','Contacts','contact','SmsInteraction','spread','interaction','autoclose','push','close','unmanaged','created','SmsMessage','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s'];(function(_0x3fb77c,_0x1968ad){var _0x465848=function(_0x4a1ad0){while(--_0x4a1ad0){_0x3fb77c['push'](_0x3fb77c['shift']());}};_0x465848(++_0x1968ad);}(_0x2f9e,0x128));var _0xe2f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x2f9e[_0x4565bf];return _0x5610ba;};'use strict';var emlformat=require(_0xe2f9('0x0'));var rimraf=require(_0xe2f9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe2f9('0x2'));var rp=require(_0xe2f9('0x3'));var moment=require(_0xe2f9('0x4'));var BPromise=require(_0xe2f9('0x5'));var Mustache=require(_0xe2f9('0x6'));var util=require('util');var path=require(_0xe2f9('0x7'));var sox=require(_0xe2f9('0x8'));var csv=require('to-csv');var ejs=require(_0xe2f9('0x9'));var fs=require('fs');var fs_extra=require(_0xe2f9('0xa'));var _=require(_0xe2f9('0xb'));var squel=require(_0xe2f9('0xc'));var crypto=require(_0xe2f9('0xd'));var jsforce=require(_0xe2f9('0xe'));var deskjs=require(_0xe2f9('0xf'));var toCsv=require(_0xe2f9('0x10'));var querystring=require('querystring');var Papa=require(_0xe2f9('0x11'));var Redis=require(_0xe2f9('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe2f9('0x13'));var hardwareService=require(_0xe2f9('0x14'));var logger=require(_0xe2f9('0x15'))(_0xe2f9('0x16'));var utils=require(_0xe2f9('0x17'));var config=require(_0xe2f9('0x18'));var licenseUtil=require(_0xe2f9('0x19'));var db=require(_0xe2f9('0x1a'))['db'];config[_0xe2f9('0x1b')]=_[_0xe2f9('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe2f9('0x1d'))[_0xe2f9('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0xe2f9('0x1f')][_0xe2f9('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x2fa86f,_0x38911f,_0x7e2c28,_0xdd073){return new BPromise(function(_0x5dd5d3,_0xf174d5){var _0x17278e=_0xdd073||client;return _0x17278e[_0xe2f9('0x21')](_0x2fa86f,_0x7e2c28)[_0xe2f9('0x22')](function(_0x54aff5){logger[_0xe2f9('0x23')](_0xe2f9('0x24'),_0x38911f,_0xe2f9('0x25'));logger[_0xe2f9('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x38911f,_0xe2f9('0x25'),JSON[_0xe2f9('0x27')](_0x54aff5));if(_0x54aff5[_0xe2f9('0x28')]){if(_0x54aff5['error'][_0xe2f9('0x29')]===0x1f4){logger[_0xe2f9('0x28')](_0xe2f9('0x24'),_0x38911f,_0x54aff5[_0xe2f9('0x28')][_0xe2f9('0x2a')]);return _0xf174d5(_0x54aff5[_0xe2f9('0x28')][_0xe2f9('0x2a')]);}logger[_0xe2f9('0x28')](_0xe2f9('0x24'),_0x38911f,_0x54aff5['error'][_0xe2f9('0x2a')]);return _0x5dd5d3(_0x54aff5[_0xe2f9('0x28')][_0xe2f9('0x2a')]);}else{logger[_0xe2f9('0x23')]('SmsAccount,\x20%s,\x20%s',_0x38911f,'request\x20sent');_0x5dd5d3(_0x54aff5[_0xe2f9('0x2b')][_0xe2f9('0x2a')]);}})['catch'](function(_0x1faa2f){logger[_0xe2f9('0x28')](_0xe2f9('0x24'),_0x38911f,_0x1faa2f);_0xf174d5(_0x1faa2f);});});}function respondWithStatusCode(_0x55dcff,_0x5ab4fb){_0x5ab4fb=_0x5ab4fb||0xcc;return function(_0x4a600a){if(_0x4a600a){return _0x55dcff[_0xe2f9('0x2c')](_0x5ab4fb);}return _0x55dcff[_0xe2f9('0x2d')](_0x5ab4fb)[_0xe2f9('0x2e')]();};}function respondWithResult(_0x3bad4f,_0x173093){_0x173093=_0x173093||0xc8;return function(_0x3ebe6a){if(_0x3ebe6a){return _0x3bad4f[_0xe2f9('0x2d')](_0x173093)[_0xe2f9('0x2f')](_0x3ebe6a);}};}function respondWithFilteredResult(_0x53cb94,_0x270e58){return function(_0x5e1912){if(_0x5e1912){var _0x402d86=typeof _0x270e58['offset']===_0xe2f9('0x30')&&typeof _0x270e58[_0xe2f9('0x31')]===_0xe2f9('0x30');var _0x330728=_0x5e1912[_0xe2f9('0x32')];var _0x37d693=_0x402d86?0x0:_0x270e58['offset'];var _0x53e553=_0x402d86?_0x5e1912[_0xe2f9('0x32')]:_0x270e58[_0xe2f9('0x33')]+_0x270e58[_0xe2f9('0x31')];var _0x5b155a;if(_0x53e553>=_0x330728){_0x53e553=_0x330728;_0x5b155a=0xc8;}else{_0x5b155a=0xce;}_0x53cb94[_0xe2f9('0x2d')](_0x5b155a);return _0x53cb94[_0xe2f9('0x34')](_0xe2f9('0x35'),_0x37d693+'-'+_0x53e553+'/'+_0x330728)['json'](_0x5e1912);}return null;};}function patchUpdates(_0x5e6ae4){return function(_0x218e10){try{jsonpatch[_0xe2f9('0x36')](_0x218e10,_0x5e6ae4,!![]);}catch(_0x23490d){return BPromise[_0xe2f9('0x37')](_0x23490d);}return _0x218e10[_0xe2f9('0x38')]();};}function saveUpdates(_0x4badfc,_0x2aab33){return function(_0x19d9d2){if(_0x19d9d2){return _0x19d9d2[_0xe2f9('0x39')](_0x4badfc)[_0xe2f9('0x22')](function(_0x28464f){return _0x28464f;});}return null;};}function removeEntity(_0x27db28,_0x231aa2){return function(_0x49517a){if(_0x49517a){return _0x49517a[_0xe2f9('0x3a')]()[_0xe2f9('0x22')](function(){var _0x5a1e80=_0x49517a[_0xe2f9('0x3b')]({'plain':!![]});var _0xc68265='SmsAccounts';return db[_0xe2f9('0x3c')]['destroy']({'where':{'type':_0xc68265,'resourceId':_0x5a1e80['id']}})[_0xe2f9('0x22')](function(){return _0x49517a;});})[_0xe2f9('0x22')](function(){_0x27db28[_0xe2f9('0x2d')](0xcc)[_0xe2f9('0x2e')]();});}};}function handleEntityNotFound(_0x3b99d7,_0x5b431b){return function(_0x2f23f6){if(!_0x2f23f6){_0x3b99d7[_0xe2f9('0x2c')](0x194);}return _0x2f23f6;};}function handleError(_0x7588a0,_0x499a95){_0x499a95=_0x499a95||0x1f4;return function(_0x2d8c15){logger[_0xe2f9('0x28')](_0x2d8c15[_0xe2f9('0x3d')]);if(_0x2d8c15['name']){delete _0x2d8c15['name'];}_0x7588a0['status'](_0x499a95)[_0xe2f9('0x3e')](_0x2d8c15);};}exports[_0xe2f9('0x3f')]=function(_0x2096b4,_0x5dad9a){var _0x5d6544={'include':[{'model':db[_0xe2f9('0x40')],'as':'mandatoryDispositionPause'}]},_0x2c2331={},_0x3eee53={'count':0x0,'rows':[]};var _0x49415f=_['map'](db[_0xe2f9('0x41')][_0xe2f9('0x42')],function(_0x493ef1){return{'name':_0x493ef1['fieldName'],'type':_0x493ef1[_0xe2f9('0x43')][_0xe2f9('0x44')]};});_0x2c2331[_0xe2f9('0x45')]=_[_0xe2f9('0x46')](_0x49415f,_0xe2f9('0x47'));_0x2c2331[_0xe2f9('0x48')]=_[_0xe2f9('0x49')](_0x2096b4['query']);_0x2c2331[_0xe2f9('0x4a')]=_['intersection'](_0x2c2331[_0xe2f9('0x45')],_0x2c2331[_0xe2f9('0x48')]);_0x5d6544[_0xe2f9('0x4b')]=_[_0xe2f9('0x4c')](_0x2c2331[_0xe2f9('0x45')],qs[_0xe2f9('0x4d')](_0x2096b4[_0xe2f9('0x48')][_0xe2f9('0x4d')]));_0x5d6544[_0xe2f9('0x4b')]=_0x5d6544[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0x5d6544[_0xe2f9('0x4b')]:_0x2c2331['model'];if(!_0x2096b4[_0xe2f9('0x48')][_0xe2f9('0x4f')](_0xe2f9('0x50'))){_0x5d6544['limit']=qs['limit'](_0x2096b4[_0xe2f9('0x48')][_0xe2f9('0x31')]);_0x5d6544[_0xe2f9('0x33')]=qs[_0xe2f9('0x33')](_0x2096b4[_0xe2f9('0x48')][_0xe2f9('0x33')]);}_0x5d6544[_0xe2f9('0x51')]=qs['sort'](_0x2096b4['query'][_0xe2f9('0x52')]);_0x5d6544[_0xe2f9('0x53')]=qs[_0xe2f9('0x4a')](_[_0xe2f9('0x54')](_0x2096b4[_0xe2f9('0x48')],_0x2c2331[_0xe2f9('0x4a')]),_0x49415f);if(_0x2096b4['query']['filter']){_0x5d6544[_0xe2f9('0x53')]=_['merge'](_0x5d6544['where'],{'$or':_['map'](_0x49415f,function(_0x20b87f){if(_0x20b87f[_0xe2f9('0x43')]!==_0xe2f9('0x55')){var _0x2661b2={};_0x2661b2[_0x20b87f['name']]={'$like':'%'+_0x2096b4['query'][_0xe2f9('0x56')]+'%'};return _0x2661b2;}})});}_0x5d6544=_[_0xe2f9('0x57')]({},_0x5d6544,_0x2096b4['options']);var _0x5def11={'where':_0x5d6544[_0xe2f9('0x53')]};return db['SmsAccount'][_0xe2f9('0x32')](_0x5def11)[_0xe2f9('0x22')](function(_0x1a692d){_0x3eee53[_0xe2f9('0x32')]=_0x1a692d;if(_0x2096b4[_0xe2f9('0x48')][_0xe2f9('0x58')]){_0x5d6544[_0xe2f9('0x59')]=[{'all':!![]}];}return db[_0xe2f9('0x41')][_0xe2f9('0x5a')](_0x5d6544);})[_0xe2f9('0x22')](function(_0x1b1c96){_0x3eee53['rows']=_0x1b1c96;return _0x3eee53;})[_0xe2f9('0x22')](respondWithFilteredResult(_0x5dad9a,_0x5d6544))[_0xe2f9('0x5b')](handleError(_0x5dad9a,null));};exports[_0xe2f9('0x5c')]=function(_0x484058,_0x8f717a){var _0x5340ae={'raw':![],'where':{'id':_0x484058[_0xe2f9('0x5d')]['id']},'include':[{'model':db[_0xe2f9('0x40')],'as':_0xe2f9('0x5e')}]},_0x2fe88a={};_0x2fe88a['model']=_[_0xe2f9('0x49')](db['SmsAccount']['rawAttributes']);_0x2fe88a[_0xe2f9('0x48')]=_[_0xe2f9('0x49')](_0x484058[_0xe2f9('0x48')]);_0x2fe88a['filters']=_[_0xe2f9('0x4c')](_0x2fe88a[_0xe2f9('0x45')],_0x2fe88a['query']);_0x5340ae[_0xe2f9('0x4b')]=_['intersection'](_0x2fe88a[_0xe2f9('0x45')],qs[_0xe2f9('0x4d')](_0x484058['query']['fields']));_0x5340ae[_0xe2f9('0x4b')]=_0x5340ae[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0x5340ae[_0xe2f9('0x4b')]:_0x2fe88a[_0xe2f9('0x45')];if(_0x484058[_0xe2f9('0x48')][_0xe2f9('0x58')]){_0x5340ae['include']=[{'all':!![]}];}_0x5340ae=_['merge']({},_0x5340ae,_0x484058[_0xe2f9('0x5f')]);return db[_0xe2f9('0x41')][_0xe2f9('0x60')](_0x5340ae)['then'](handleEntityNotFound(_0x8f717a,null))[_0xe2f9('0x22')](respondWithResult(_0x8f717a,null))[_0xe2f9('0x5b')](handleError(_0x8f717a,null));};exports[_0xe2f9('0x61')]=function(_0x21b587,_0x35dab6){return db[_0xe2f9('0x41')][_0xe2f9('0x61')](_0x21b587[_0xe2f9('0x62')],{})['then'](function(_0x5244ae){var _0xadea77=_0x21b587[_0xe2f9('0x63')][_0xe2f9('0x3b')]({'plain':!![]});if(!_0xadea77)throw new Error(_0xe2f9('0x64'));if(_0xadea77['role']===_0xe2f9('0x63')){var _0x8ddacb=_0x5244ae[_0xe2f9('0x3b')]({'plain':!![]});var _0x2c047d=_0xe2f9('0x65');return db[_0xe2f9('0x66')]['find']({'where':{'name':_0x2c047d,'userProfileId':_0xadea77['userProfileId']},'raw':!![]})['then'](function(_0x292f80){if(_0x292f80&&_0x292f80[_0xe2f9('0x67')]===0x0){return db[_0xe2f9('0x3c')]['create']({'name':_0x8ddacb[_0xe2f9('0x47')],'resourceId':_0x8ddacb['id'],'type':_0x292f80[_0xe2f9('0x47')],'sectionId':_0x292f80['id']},{})[_0xe2f9('0x22')](function(){return _0x5244ae;});}else{return _0x5244ae;}})['catch'](function(_0x34e559){logger[_0xe2f9('0x28')](_0xe2f9('0x68'),_0x34e559);throw _0x34e559;});}return _0x5244ae;})[_0xe2f9('0x22')](respondWithResult(_0x35dab6,0xc9))[_0xe2f9('0x5b')](handleError(_0x35dab6,null));};exports[_0xe2f9('0x39')]=function(_0x17d3e6,_0x2a64d8){if(_0x17d3e6['body']['id']){delete _0x17d3e6[_0xe2f9('0x62')]['id'];}return db[_0xe2f9('0x41')]['find']({'where':{'id':_0x17d3e6[_0xe2f9('0x5d')]['id']},'include':[{'model':db[_0xe2f9('0x40')],'as':_0xe2f9('0x5e')}]})[_0xe2f9('0x22')](handleEntityNotFound(_0x2a64d8,null))[_0xe2f9('0x22')](saveUpdates(_0x17d3e6[_0xe2f9('0x62')],null))[_0xe2f9('0x22')](respondWithResult(_0x2a64d8,null))[_0xe2f9('0x5b')](handleError(_0x2a64d8,null));};exports[_0xe2f9('0x3a')]=function(_0x757466,_0x18f548){return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x757466[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x18f548,null))[_0xe2f9('0x22')](removeEntity(_0x18f548,null))[_0xe2f9('0x5b')](handleError(_0x18f548,null));};exports[_0xe2f9('0x69')]=function(_0x2fe630,_0x5e3645){return db[_0xe2f9('0x41')]['describe']()[_0xe2f9('0x22')](respondWithResult(_0x5e3645,null))[_0xe2f9('0x5b')](handleError(_0x5e3645,null));};exports[_0xe2f9('0x6a')]=function(_0x558752,_0x451fe5,_0x49f374){if(_0x558752['body']['id']){delete _0x558752[_0xe2f9('0x62')]['id'];}return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x558752['params']['id']}})['then'](handleEntityNotFound(_0x451fe5,null))[_0xe2f9('0x22')](function(_0xb0df52){if(_0xb0df52){_0x558752[_0xe2f9('0x62')][_0xe2f9('0x6b')]=_0xb0df52['id'];return db[_0xe2f9('0x6c')]['create'](_0x558752[_0xe2f9('0x62')]);}})[_0xe2f9('0x22')](respondWithResult(_0x451fe5,null))['catch'](handleError(_0x451fe5,null));};exports[_0xe2f9('0x6d')]=function(_0x2e1c53,_0x2a912a,_0x1caa1c){var _0x10b0a0={'raw':![],'where':{}};var _0x2f9947={};var _0x5706bf={'count':0x0,'rows':[]};return db[_0xe2f9('0x41')][_0xe2f9('0x6e')]({'where':{'id':_0x2e1c53[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x2a912a,null))[_0xe2f9('0x22')](function(_0x4eaa3d){if(_0x4eaa3d){_0x2f9947['model']=_[_0xe2f9('0x49')](db[_0xe2f9('0x6c')]['rawAttributes']);_0x2f9947[_0xe2f9('0x48')]=_['keys'](_0x2e1c53['query']);_0x2f9947['filters']=_['intersection'](_0x2f9947['model'],_0x2f9947[_0xe2f9('0x48')]);_0x10b0a0['attributes']=_[_0xe2f9('0x4c')](_0x2f9947['model'],qs[_0xe2f9('0x4d')](_0x2e1c53[_0xe2f9('0x48')]['fields']));_0x10b0a0[_0xe2f9('0x4b')]=_0x10b0a0[_0xe2f9('0x4b')]['length']?_0x10b0a0[_0xe2f9('0x4b')]:_0x2f9947[_0xe2f9('0x45')];if(!_0x2e1c53[_0xe2f9('0x48')]['hasOwnProperty'](_0xe2f9('0x50'))){_0x10b0a0[_0xe2f9('0x31')]=qs[_0xe2f9('0x31')](_0x2e1c53['query'][_0xe2f9('0x31')]);_0x10b0a0['offset']=qs[_0xe2f9('0x33')](_0x2e1c53[_0xe2f9('0x48')][_0xe2f9('0x33')]);}_0x10b0a0[_0xe2f9('0x51')]=qs['sort'](_0x2e1c53['query'][_0xe2f9('0x52')]);_0x10b0a0[_0xe2f9('0x53')]=qs[_0xe2f9('0x4a')](_[_0xe2f9('0x54')](_0x2e1c53[_0xe2f9('0x48')],_0x2f9947[_0xe2f9('0x4a')]));_0x10b0a0[_0xe2f9('0x53')][_0xe2f9('0x6b')]=_0x4eaa3d['id'];if(_0x2e1c53[_0xe2f9('0x48')][_0xe2f9('0x56')]){_0x10b0a0[_0xe2f9('0x53')]=_[_0xe2f9('0x57')](_0x10b0a0[_0xe2f9('0x53')],{'$or':_['map'](_0x10b0a0[_0xe2f9('0x4b')],function(_0x18bc8a){var _0x13bf58={};_0x13bf58[_0x18bc8a]={'$like':'%'+_0x2e1c53['query']['filter']+'%'};return _0x13bf58;})});}_0x10b0a0=_[_0xe2f9('0x57')]({},_0x10b0a0,_0x2e1c53[_0xe2f9('0x5f')]);return db[_0xe2f9('0x6c')]['count']({'where':_0x10b0a0[_0xe2f9('0x53')]})[_0xe2f9('0x22')](function(_0x981d9e){_0x5706bf['count']=_0x981d9e;if(_0x2e1c53['query'][_0xe2f9('0x58')]){_0x10b0a0[_0xe2f9('0x59')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x10b0a0);})[_0xe2f9('0x22')](function(_0x359a56){_0x5706bf[_0xe2f9('0x6f')]=_0x359a56;return _0x5706bf;});}})[_0xe2f9('0x22')](respondWithFilteredResult(_0x2a912a,_0x10b0a0))[_0xe2f9('0x5b')](handleError(_0x2a912a,null));};exports[_0xe2f9('0x70')]=function(_0x460037,_0x34c5c6,_0x2cf7b7){return db['SmsAccount'][_0xe2f9('0x60')]({'where':{'id':_0x460037[_0xe2f9('0x5d')]['id']}})['then'](handleEntityNotFound(_0x34c5c6,null))['then'](function(_0x2dafef){if(_0x2dafef){return _0x2dafef[_0xe2f9('0x70')](_0x460037[_0xe2f9('0x48')][_0xe2f9('0x71')]);}})[_0xe2f9('0x22')](respondWithStatusCode(_0x34c5c6,null))[_0xe2f9('0x5b')](handleError(_0x34c5c6,null));};exports['addAnswer']=function(_0x176f8c,_0x472892,_0x5e20dc){if(_0x176f8c[_0xe2f9('0x62')]['id']){delete _0x176f8c['body']['id'];}return db['SmsAccount'][_0xe2f9('0x60')]({'where':{'id':_0x176f8c['params']['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x472892,null))['then'](function(_0x33dc53){if(_0x33dc53){_0x176f8c['body']['SmsAccountId']=_0x33dc53['id'];return db[_0xe2f9('0x72')]['create'](_0x176f8c[_0xe2f9('0x62')]);}})[_0xe2f9('0x22')](respondWithResult(_0x472892,null))[_0xe2f9('0x5b')](handleError(_0x472892,null));};exports[_0xe2f9('0x73')]=function(_0x3150fb,_0x55a4f4,_0x266272){var _0x6f632b={'raw':![],'where':{}};var _0x5cdc28={};var _0x630e79={'count':0x0,'rows':[]};return db[_0xe2f9('0x41')][_0xe2f9('0x6e')]({'where':{'id':_0x3150fb['params']['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x55a4f4,null))[_0xe2f9('0x22')](function(_0x5380f8){if(_0x5380f8){_0x5cdc28[_0xe2f9('0x45')]=_[_0xe2f9('0x49')](db[_0xe2f9('0x72')][_0xe2f9('0x42')]);_0x5cdc28[_0xe2f9('0x48')]=_[_0xe2f9('0x49')](_0x3150fb['query']);_0x5cdc28[_0xe2f9('0x4a')]=_[_0xe2f9('0x4c')](_0x5cdc28[_0xe2f9('0x45')],_0x5cdc28[_0xe2f9('0x48')]);_0x6f632b[_0xe2f9('0x4b')]=_['intersection'](_0x5cdc28[_0xe2f9('0x45')],qs[_0xe2f9('0x4d')](_0x3150fb[_0xe2f9('0x48')][_0xe2f9('0x4d')]));_0x6f632b[_0xe2f9('0x4b')]=_0x6f632b[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0x6f632b[_0xe2f9('0x4b')]:_0x5cdc28[_0xe2f9('0x45')];if(!_0x3150fb[_0xe2f9('0x48')][_0xe2f9('0x4f')](_0xe2f9('0x50'))){_0x6f632b[_0xe2f9('0x31')]=qs[_0xe2f9('0x31')](_0x3150fb[_0xe2f9('0x48')][_0xe2f9('0x31')]);_0x6f632b[_0xe2f9('0x33')]=qs[_0xe2f9('0x33')](_0x3150fb['query'][_0xe2f9('0x33')]);}_0x6f632b[_0xe2f9('0x51')]=qs[_0xe2f9('0x52')](_0x3150fb['query']['sort']);_0x6f632b[_0xe2f9('0x53')]=qs[_0xe2f9('0x4a')](_[_0xe2f9('0x54')](_0x3150fb['query'],_0x5cdc28[_0xe2f9('0x4a')]));_0x6f632b[_0xe2f9('0x53')][_0xe2f9('0x6b')]=_0x5380f8['id'];if(_0x3150fb['query'][_0xe2f9('0x56')]){_0x6f632b[_0xe2f9('0x53')]=_[_0xe2f9('0x57')](_0x6f632b[_0xe2f9('0x53')],{'$or':_[_0xe2f9('0x46')](_0x6f632b[_0xe2f9('0x4b')],function(_0x3cdb98){var _0x333b17={};_0x333b17[_0x3cdb98]={'$like':'%'+_0x3150fb[_0xe2f9('0x48')][_0xe2f9('0x56')]+'%'};return _0x333b17;})});}_0x6f632b=_[_0xe2f9('0x57')]({},_0x6f632b,_0x3150fb[_0xe2f9('0x5f')]);return db[_0xe2f9('0x72')]['count']({'where':_0x6f632b['where']})[_0xe2f9('0x22')](function(_0x3d3b9d){_0x630e79[_0xe2f9('0x32')]=_0x3d3b9d;if(_0x3150fb[_0xe2f9('0x48')][_0xe2f9('0x58')]){_0x6f632b['include']=[{'all':!![]}];}return db[_0xe2f9('0x72')][_0xe2f9('0x5a')](_0x6f632b);})[_0xe2f9('0x22')](function(_0x1d3827){_0x630e79[_0xe2f9('0x6f')]=_0x1d3827;return _0x630e79;});}})[_0xe2f9('0x22')](respondWithFilteredResult(_0x55a4f4,_0x6f632b))[_0xe2f9('0x5b')](handleError(_0x55a4f4,null));};exports[_0xe2f9('0x74')]=function(_0x3aa98d,_0x2b3094,_0x38f479){return db[_0xe2f9('0x41')]['find']({'where':{'id':_0x3aa98d[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x2b3094,null))[_0xe2f9('0x22')](function(_0x3006e7){if(_0x3006e7){return _0x3006e7['removeAnswers'](_0x3aa98d[_0xe2f9('0x48')]['ids']);}})[_0xe2f9('0x22')](respondWithStatusCode(_0x2b3094,null))[_0xe2f9('0x5b')](handleError(_0x2b3094,null));};exports[_0xe2f9('0x75')]=function(_0x15430d,_0x495396,_0xd6a0b8){var _0x55c65a={'channel':_0xe2f9('0x76')};var _0x207ed3=[];var _0x15955b=[];var _0x2f95f0={};return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x15430d['params']['id']},'include':[{'model':db[_0xe2f9('0x77')],'as':_0xe2f9('0x78')}]})['then'](handleEntityNotFound(_0x495396,null))[_0xe2f9('0x22')](function(_0x4de656){_0x55c65a[_0xe2f9('0x79')]=_0x4de656;_0x55c65a[_0xe2f9('0x7a')]=_[_0xe2f9('0x7b')](_0x4de656[_0xe2f9('0x78')],[_0xe2f9('0x7c')],[_0xe2f9('0x7d')]);if(_0x55c65a[_0xe2f9('0x79')][_0xe2f9('0x78')]){delete _0x55c65a[_0xe2f9('0x79')][_0xe2f9('0x78')];}return db[_0xe2f9('0x7e')]['describe']();})[_0xe2f9('0x22')](function(_0x4b1424){if(!_0x4b1424){throw new db[(_0xe2f9('0x7f'))][(_0xe2f9('0x80'))](_0xe2f9('0x81'));}_0x207ed3=_[_0xe2f9('0x82')](_[_0xe2f9('0x49')](_0x4b1424),[_0xe2f9('0x83'),_0xe2f9('0x84')]);_0x15955b=_[_0xe2f9('0x82')](_[_0xe2f9('0x49')](_0x4b1424),[_0xe2f9('0x83'),_0xe2f9('0x84'),_0xe2f9('0x85'),_0xe2f9('0x86')]);_0x55c65a[_0xe2f9('0x62')]={'mapKey':_0xe2f9('0x87')};if(_0x55c65a[_0xe2f9('0x79')][_0xe2f9('0x43')]){switch(_0x55c65a[_0xe2f9('0x79')][_0xe2f9('0x43')]){case _0xe2f9('0x88'):_0x55c65a['body'][_0xe2f9('0x89')]=_0x15430d['body'][_0xe2f9('0x8a')];_0x55c65a[_0xe2f9('0x62')]['body']=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x8b')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x8c')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x8d')];break;case'skebby':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]='+'+_0x15430d['body'][_0xe2f9('0x8e')];_0x55c65a[_0xe2f9('0x62')]['body']=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x8f')];break;case _0xe2f9('0x90'):_0x55c65a['body'][_0xe2f9('0x89')]=_0x15430d[_0xe2f9('0x62')]['from'];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]=_0x15430d['body']['message'];break;case _0xe2f9('0x91'):_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d['body']['from'];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]=_0x15430d['body'][_0xe2f9('0x62')];_0x55c65a[_0xe2f9('0x62')]['messageId']=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x92')];break;case _0xe2f9('0x93'):_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d[_0xe2f9('0x62')]['From'];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x94')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x8c')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x95')];break;case'infobip':_0x55c65a['body']['from']='+'+_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x96')][0x0]['from'];_0x55c65a['body'][_0xe2f9('0x62')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x96')][0x0][_0xe2f9('0x8f')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x8c')]=_0x15430d['body'][_0xe2f9('0x96')][0x0][_0xe2f9('0x8c')];break;case _0xe2f9('0x97'):_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x98')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x99')][_0xe2f9('0x2a')];break;case _0xe2f9('0x9a'):_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x9b')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]=_0x15430d['body'][_0xe2f9('0x8f')];_0x55c65a[_0xe2f9('0x62')]['messageId']=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x9c')];break;case'bandwidth':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x8c')]=_0x15430d['body'][0x0]['message']['id'];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d['body'][0x0][_0xe2f9('0x2a')][_0xe2f9('0x89')];_0x55c65a['body']['body']=_0x15430d['body'][0x0]['message'][_0xe2f9('0x8f')];break;case _0xe2f9('0x9d'):_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')]=_0x15430d[_0xe2f9('0x62')]['from'];_0x55c65a[_0xe2f9('0x62')]['body']=_0x15430d['body'][_0xe2f9('0x2a')];_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x8c')]=_0x15430d[_0xe2f9('0x62')][_0xe2f9('0x9e')];break;}}if(_0x55c65a[_0xe2f9('0x62')]['id']){delete _0x55c65a[_0xe2f9('0x62')]['id'];}if(_[_0xe2f9('0x9f')](_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')])){throw new db['Sequelize']['ValidationError'](_0xe2f9('0xa0'));}if(_[_0xe2f9('0x9f')](_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')])||_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x62')]===''){throw new db[(_0xe2f9('0x7f'))][(_0xe2f9('0x80'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0xa1')])){throw new db['Sequelize']['ValidationError'](_0xe2f9('0xa2')+_0x15955b);}if(!_[_0xe2f9('0xa3')](_0x15955b,_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0xa1')])){throw new db['Sequelize'][(_0xe2f9('0x80'))](_0xe2f9('0xa4')+_0x15955b);}_0x2f95f0[_0x55c65a[_0xe2f9('0x62')]['mapKey']]=_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')];return db[_0xe2f9('0xa5')][_0xe2f9('0x60')]({'where':{'id':_0x55c65a['account'][_0xe2f9('0x86')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x2f95f0,'limit':0x1,'order':[['updatedAt',_0xe2f9('0xa6')]]}]});})['then'](handleEntityNotFound(_0x495396,null))[_0xe2f9('0x22')](function(_0x279cb5){if(_0x279cb5){_0x55c65a['list']=_[_0xe2f9('0xa7')](_0x279cb5,[_0xe2f9('0xa8')]);if(_0x279cb5['Contacts'][_0xe2f9('0x4e')]){return _0x279cb5['Contacts'][0x0];}var _0x140e70=_['defaults'](_0x55c65a[_0xe2f9('0x62')],{'firstName':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')],'ListId':_0x279cb5['id']});_0x140e70[_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0xa1')]]=_0x55c65a[_0xe2f9('0x62')]['from'];return db['CmContact']['create'](_0x140e70,{'fields':_0x207ed3,'raw':!![]});}})[_0xe2f9('0x22')](handleEntityNotFound(_0x495396,null))[_0xe2f9('0x22')](function(_0xf67fc3){if(_0xf67fc3){_0x55c65a[_0xe2f9('0xa9')]=_0xf67fc3;var _0x1dd442={'ContactId':_0xf67fc3['id'],'phone':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')],'SmsAccountId':_0x15430d[_0xe2f9('0x5d')]['id']};var _0x48585d={'ContactId':_0xf67fc3['id'],'SmsAccountId':_0x15430d[_0xe2f9('0x5d')]['id'],'closed':![]};return db[_0xe2f9('0xaa')][_0xe2f9('0x60')]({'where':_0x48585d})[_0xe2f9('0x22')](function(_0x42a62d){if(_0x42a62d){return[_0x42a62d,![]];}return db['SmsInteraction'][_0xe2f9('0x61')](_0x1dd442)[_0xe2f9('0x22')](function(_0x83103e){return[_0x83103e,!![]];});});}})[_0xe2f9('0xab')](function(_0x2c4e15,_0xff806d){_0x55c65a[_0xe2f9('0xac')]=_0x2c4e15[_0xe2f9('0x3b')]({'plain':!![]});_0x55c65a['interaction']['created']=![];if(_0xff806d){if(_0x55c65a['account'][_0xe2f9('0xad')]){_0x55c65a['applications'][_0xe2f9('0xae')]({'id':0x0,'priority':_0x55c65a['applications']['length']+0x1,'app':_0xe2f9('0xaf'),'appdata':_0xe2f9('0xb0'),'interval':'*,*,*,*'});}_0x55c65a[_0xe2f9('0xac')][_0xe2f9('0xb1')]=!![];}return db[_0xe2f9('0xb2')]['create']({'phone':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0x89')],'messageId':_0x55c65a['body'][_0xe2f9('0x8c')],'body':_0x55c65a[_0xe2f9('0x62')]['body'],'SmsAccountId':_0x15430d['params']['id'],'SmsInteractionId':_0x2c4e15['id'],'direction':'in','ContactId':_0x2c4e15['ContactId'],'AttachmentId':_0x55c65a[_0xe2f9('0x62')][_0xe2f9('0xb3')]});})['then'](function(_0x4dc4e9){_0x55c65a[_0xe2f9('0x2a')]=_0x4dc4e9;if(_0x55c65a[_0xe2f9('0xac')][_0xe2f9('0xb4')]){return db[_0xe2f9('0xb5')][_0xe2f9('0x60')]({'attributes':['id',_0xe2f9('0x47')],'where':{'id':_0x55c65a[_0xe2f9('0xac')][_0xe2f9('0xb4')]}})[_0xe2f9('0x22')](function(_0x37fe8b){if(_0x37fe8b){_0x55c65a[_0xe2f9('0x7a')]['unshift']({'id':0x0,'priority':0x0,'app':_0xe2f9('0xb6'),'appdata':_0x37fe8b['name']+','+(_0x55c65a[_0xe2f9('0x79')][_0xe2f9('0xb7')]||0xa),'interval':_0xe2f9('0xb8')});}return respondWithRpcPromise(_0xe2f9('0xb9'),'startRouting',_0x55c65a);});}return respondWithRpcPromise(_0xe2f9('0xb9'),_0xe2f9('0xba'),_0x55c65a);})[_0xe2f9('0x22')](function(_0x1bc072){if(_0x1bc072){var _0x240028=0xc8;var _0x183e34=_0xe2f9('0xbb');logger[_0xe2f9('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x183e34,_0x240028,_0xe2f9('0xbc'));logger[_0xe2f9('0x26')](_0xe2f9('0xbd'),_0x183e34,_0x240028,_0xe2f9('0xbc'),JSON[_0xe2f9('0x27')](_0x1bc072));if(_0x55c65a[_0xe2f9('0x79')][_0xe2f9('0x43')]===_0xe2f9('0x88')){return _0x495396[_0xe2f9('0x2d')](_0x240028)[_0xe2f9('0x34')](_0xe2f9('0xbe'),_0xe2f9('0xbf'))[_0xe2f9('0x3e')](_0xe2f9('0xc0'));}else{return _0x495396[_0xe2f9('0x2d')](_0x240028)['json'](_0x1bc072);}}})[_0xe2f9('0x5b')](handleError(_0x495396,null));};exports[_0xe2f9('0xc1')]=function(_0x39e804,_0x3c5f2e){var _0x5b5a19=_0x39e804[_0xe2f9('0x5d')]['id'];var _0x3b678c=_0x39e804[_0xe2f9('0x62')];var _0x1ddf1a=0xc8;var _0x2d6e33=null;return db[_0xe2f9('0xc2')][_0xe2f9('0xc3')]({'isolationLevel':db['sequelize']['Transaction'][_0xe2f9('0xc4')][_0xe2f9('0xc5')]},function(_0x42fd18){return db[_0xe2f9('0x41')]['findOne']({'where':{'id':_0x5b5a19},'transaction':_0x42fd18})[_0xe2f9('0x22')](function(_0x317549){if(_0x317549){return db[_0xe2f9('0x77')][_0xe2f9('0x3a')]({'where':{'SmsAccountId':_0x5b5a19},'transaction':_0x42fd18})[_0xe2f9('0x22')](function(){var _0xd72dfb=_[_0xe2f9('0x46')](_0x3b678c,function(_0x2f73ad){_0x2f73ad[_0xe2f9('0x6b')]=_0x5b5a19;return _0x2f73ad;});return db['SmsApplication'][_0xe2f9('0xc6')](_0xd72dfb,{'transaction':_0x42fd18});});}else{_0x1ddf1a=0x194;_0x2d6e33=[];}});})[_0xe2f9('0x22')](function(){if(_0x1ddf1a!==0x194){return db[_0xe2f9('0x77')]['findAndCountAll']({'where':{'SmsAccountId':_0x5b5a19},'order':_0xe2f9('0x7c')})[_0xe2f9('0x22')](function(_0xc152f4){_0x2d6e33=_0xc152f4;});}})[_0xe2f9('0x5b')](function(_0x333f4e){_0x1ddf1a=0x1f4;logger[_0xe2f9('0x28')](_0x333f4e[_0xe2f9('0x3d')]);if(_0x333f4e[_0xe2f9('0x47')]){delete _0x333f4e[_0xe2f9('0x47')];}_0x2d6e33=_0x333f4e;})[_0xe2f9('0xc7')](function(){if(_0x2d6e33===null){_0x3c5f2e[_0xe2f9('0x2c')](_0x1ddf1a);}else{if(_0x1ddf1a===0x1f4){_0x3c5f2e[_0xe2f9('0x2d')](_0x1ddf1a)['send'](_0x2d6e33);}else{_0x3c5f2e['status'](_0x1ddf1a)[_0xe2f9('0x2f')](_0x2d6e33);}}});};exports['getApplications']=function(_0xad6799,_0x4423f9,_0x4e1bab){var _0x3c65dc={};var _0x367858={};var _0x427673;var _0x3b217e;return db[_0xe2f9('0x41')][_0xe2f9('0x6e')]({'where':{'id':_0xad6799[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x4423f9,null))[_0xe2f9('0x22')](function(_0x3d88b6){if(_0x3d88b6){_0x427673=_0x3d88b6;_0x367858[_0xe2f9('0x45')]=_[_0xe2f9('0x49')](db[_0xe2f9('0x77')][_0xe2f9('0x42')]);_0x367858['query']=_['keys'](_0xad6799['query']);_0x367858[_0xe2f9('0x4a')]=_[_0xe2f9('0x4c')](_0x367858[_0xe2f9('0x45')],_0x367858[_0xe2f9('0x48')]);_0x3c65dc[_0xe2f9('0x4b')]=_[_0xe2f9('0x4c')](_0x367858[_0xe2f9('0x45')],qs['fields'](_0xad6799[_0xe2f9('0x48')]['fields']));_0x3c65dc['attributes']=_0x3c65dc[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0x3c65dc[_0xe2f9('0x4b')]:_0x367858[_0xe2f9('0x45')];_0x3c65dc[_0xe2f9('0x51')]=qs[_0xe2f9('0x52')](_0xad6799[_0xe2f9('0x48')][_0xe2f9('0x52')]);_0x3c65dc['where']=qs[_0xe2f9('0x4a')](_['pick'](_0xad6799[_0xe2f9('0x48')],_0x367858[_0xe2f9('0x4a')]));if(_0xad6799[_0xe2f9('0x48')][_0xe2f9('0x56')]){_0x3c65dc['where']=_[_0xe2f9('0x57')](_0x3c65dc[_0xe2f9('0x53')],{'$or':_['map'](_0x3c65dc[_0xe2f9('0x4b')],function(_0x2fbecd){var _0x395b12={};_0x395b12[_0x2fbecd]={'$like':'%'+_0xad6799[_0xe2f9('0x48')][_0xe2f9('0x56')]+'%'};return _0x395b12;})});}_0x3c65dc=_[_0xe2f9('0x57')]({},_0x3c65dc,_0xad6799['options']);return _0x427673[_0xe2f9('0xc8')](_0x3c65dc);}})[_0xe2f9('0x22')](function(_0x396169){if(_0x396169){_0x3b217e=_0x396169['length'];if(!_0xad6799[_0xe2f9('0x48')][_0xe2f9('0x4f')](_0xe2f9('0x50'))){_0x3c65dc['limit']=qs[_0xe2f9('0x31')](_0xad6799[_0xe2f9('0x48')][_0xe2f9('0x31')]);_0x3c65dc[_0xe2f9('0x33')]=qs[_0xe2f9('0x33')](_0xad6799['query'][_0xe2f9('0x33')]);}return _0x427673[_0xe2f9('0xc8')](_0x3c65dc);}})['then'](function(_0x4b67a9){if(_0x4b67a9){return _0x4b67a9?{'count':_0x3b217e,'rows':_0x4b67a9}:null;}})[_0xe2f9('0x22')](respondWithResult(_0x4423f9,null))[_0xe2f9('0x5b')](handleError(_0x4423f9,null));};exports[_0xe2f9('0xc9')]=function(_0x2939d1,_0x45779c,_0x5e8e2d){var _0x2b4381={'raw':![],'where':{}};var _0x21b80b={};var _0x531322={'count':0x0,'rows':[]};return db['SmsAccount'][_0xe2f9('0x6e')]({'where':{'id':_0x2939d1[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x45779c,null))[_0xe2f9('0x22')](function(_0x3e3d16){if(_0x3e3d16){_0x21b80b[_0xe2f9('0x45')]=_[_0xe2f9('0x49')](db[_0xe2f9('0xaa')]['rawAttributes']);_0x21b80b['query']=_[_0xe2f9('0x49')](_0x2939d1['query']);_0x21b80b[_0xe2f9('0x4a')]=_[_0xe2f9('0x4c')](_0x21b80b[_0xe2f9('0x45')],_0x21b80b[_0xe2f9('0x48')]);_0x2b4381['attributes']=_[_0xe2f9('0x4c')](_0x21b80b[_0xe2f9('0x45')],qs[_0xe2f9('0x4d')](_0x2939d1[_0xe2f9('0x48')][_0xe2f9('0x4d')]));_0x2b4381[_0xe2f9('0x4b')]=_0x2b4381[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0x2b4381[_0xe2f9('0x4b')]:_0x21b80b[_0xe2f9('0x45')];if(!_0x2939d1[_0xe2f9('0x48')][_0xe2f9('0x4f')]('nolimit')){_0x2b4381[_0xe2f9('0x31')]=qs[_0xe2f9('0x31')](_0x2939d1['query']['limit']);_0x2b4381[_0xe2f9('0x33')]=qs[_0xe2f9('0x33')](_0x2939d1[_0xe2f9('0x48')]['offset']);}_0x2b4381['order']=qs['sort'](_0x2939d1['query'][_0xe2f9('0x52')]);_0x2b4381[_0xe2f9('0x53')]=qs[_0xe2f9('0x4a')](_['pick'](_0x2939d1[_0xe2f9('0x48')],_0x21b80b[_0xe2f9('0x4a')]));_0x2b4381[_0xe2f9('0x53')][_0xe2f9('0x6b')]=_0x3e3d16['id'];if(_0x2939d1[_0xe2f9('0x48')]['filter']){_0x2b4381[_0xe2f9('0x53')]=_[_0xe2f9('0x57')](_0x2b4381[_0xe2f9('0x53')],{'$or':_[_0xe2f9('0x46')](_0x2b4381['attributes'],function(_0x4b4296){var _0x132fd7={};_0x132fd7[_0x4b4296]={'$like':'%'+_0x2939d1[_0xe2f9('0x48')][_0xe2f9('0x56')]+'%'};return _0x132fd7;})});}_0x2b4381=_[_0xe2f9('0x57')]({},_0x2b4381,_0x2939d1['options']);return db['SmsInteraction'][_0xe2f9('0x32')]({'where':_0x2b4381[_0xe2f9('0x53')]})[_0xe2f9('0x22')](function(_0x5e40f8){_0x531322[_0xe2f9('0x32')]=_0x5e40f8;if(_0x2939d1[_0xe2f9('0x48')]['includeAll']){_0x2b4381[_0xe2f9('0x59')]=[{'model':db[_0xe2f9('0x7e')],'as':_0xe2f9('0xca'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xe2f9('0x47'),_0xe2f9('0xcb'),_0xe2f9('0xcc')],'required':![]},{'model':db[_0xe2f9('0xcd')],'as':_0xe2f9('0xce'),'attributes':['id','name',_0xe2f9('0xcf')],'where':_0x2939d1[_0xe2f9('0x48')][_0xe2f9('0xd0')]?{'id':_0x2939d1[_0xe2f9('0x48')]['tag']}:undefined,'required':_0x2939d1[_0xe2f9('0x48')][_0xe2f9('0xd0')]?!![]:![]}];}return db['SmsInteraction'][_0xe2f9('0x5a')](_0x2b4381);})[_0xe2f9('0x22')](function(_0x30c45d){_0x531322['rows']=_0x30c45d;return _0x531322;});}})[_0xe2f9('0x22')](respondWithFilteredResult(_0x45779c,_0x2b4381))['catch'](handleError(_0x45779c,null));};exports[_0xe2f9('0x3e')]=function(_0x1249c9,_0x105282,_0x219511){var _0x4e7ce0,_0x255059,_0x2f2357;if(_['isNil'](_0x1249c9['body']['body'])||_0x1249c9[_0xe2f9('0x62')][_0xe2f9('0x62')]===''){throw new db['Sequelize']['ValidationError'](_0xe2f9('0xd1'));}if(_[_0xe2f9('0x9f')](_0x1249c9[_0xe2f9('0x62')]['to'])){throw new db[(_0xe2f9('0x7f'))][(_0xe2f9('0x80'))](_0xe2f9('0xd2'));}_0x4e7ce0=_0x1249c9[_0xe2f9('0x62')]['to'];return db[_0xe2f9('0x41')]['find']({'where':{'id':_0x1249c9[_0xe2f9('0x5d')]['id']},'include':[{'model':db[_0xe2f9('0xa5')],'as':'List','include':[{'model':db[_0xe2f9('0x7e')],'as':_0xe2f9('0xa8'),'where':{'mobile':_0x4e7ce0},'limit':0x1,'order':[[_0xe2f9('0x84'),_0xe2f9('0xa6')]]}]}]})['then'](handleEntityNotFound(_0x105282,null))[_0xe2f9('0x22')](function(_0xc46d81){if(_0xc46d81&&_0xc46d81['List']){_0x255059=_0xc46d81[_0xe2f9('0x3b')]({'plain':!![]});if(_0x255059[_0xe2f9('0xd3')]&&_0x255059['List']['Contacts'][_0xe2f9('0x4e')]){return _0x255059['List'][_0xe2f9('0xa8')][0x0];}return db['CmContact']['create'](_[_0xe2f9('0x1c')](_0x1249c9[_0xe2f9('0x62')],{'firstName':_0x4e7ce0,'mobile':_0x4e7ce0,'phone':_0x4e7ce0,'ListId':_0x255059[_0xe2f9('0x86')]}));}})[_0xe2f9('0x22')](handleEntityNotFound(_0x105282,null))[_0xe2f9('0x22')](function(_0x68ae05){if(_0x68ae05){_0x2f2357=_0x68ae05;return db[_0xe2f9('0xaa')][_0xe2f9('0x60')]({'where':{'ContactId':_0x2f2357['id'],'closed':![],'SmsAccountId':_0x255059['id']}})['then'](function(_0x376045){if(_0x376045){return[_0x376045,![]];}return db[_0xe2f9('0xaa')]['create']({'UserId':_0x1249c9[_0xe2f9('0x63')]['id'],'ContactId':_0x2f2357['id'],'SmsAccountId':_0x255059['id'],'phone':_0x4e7ce0,'firstMsgDirection':_0xe2f9('0xd4'),'Messages':[_[_0xe2f9('0x57')](_0x1249c9[_0xe2f9('0x62')],{'read':![],'body':_0x1249c9[_0xe2f9('0x62')][_0xe2f9('0x62')],'phone':_0x4e7ce0,'SmsAccountId':_0x255059['id'],'UserId':_0x1249c9[_0xe2f9('0x63')]['id'],'ContactId':_0x2f2357['id']})]},{'include':[{'model':db[_0xe2f9('0xb2')],'as':_0xe2f9('0xd5')}]})[_0xe2f9('0x22')](function(_0x3b3de2){return[_0x3b3de2,!![]];});});}})['spread'](function(_0x1f89f5,_0x5adbc9){if(_0x5adbc9){return _0x1f89f5;}return db[_0xe2f9('0xb2')][_0xe2f9('0x61')](_[_0xe2f9('0x57')](_0x1249c9['body'],{'read':![],'body':_0x1249c9[_0xe2f9('0x62')][_0xe2f9('0x62')],'phone':_0x4e7ce0,'SmsAccountId':_0x255059['id'],'SmsInteractionId':_0x1f89f5['id'],'UserId':_0x1249c9[_0xe2f9('0x63')]['id'],'ContactId':_0x2f2357['id']}))['then'](function(_0x3d8aa7){_0x1f89f5[_0xe2f9('0xd6')][_0xe2f9('0xd5')]=[];_0x1f89f5[_0xe2f9('0xd6')][_0xe2f9('0xd5')]['push'](_0x3d8aa7[_0xe2f9('0xd6')]);return _0x1f89f5;});})[_0xe2f9('0x22')](respondWithResult(_0x105282,null))[_0xe2f9('0x5b')](handleError(_0x105282,null));};exports[_0xe2f9('0x2d')]=function(_0x128ab5,_0x76748,_0x45bd2d){if(_0x128ab5['body']['id']){delete _0x128ab5[_0xe2f9('0x62')]['id'];}var _0x3ccc73,_0xc3a969,_0x124156;return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x128ab5[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x76748,null))['then'](function(_0x25583f){if(_0x25583f){_0x124156=_0x25583f;logger[_0xe2f9('0x26')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0xd8'),_0x25583f['type'],util['inspect'](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));switch(_0x25583f[_0xe2f9('0x43')]){case _0xe2f9('0xd9'):if(_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xda')]&&_0x128ab5['body']['status']){_0xc3a969=_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x2d')];return db[_0xe2f9('0xb2')][_0xe2f9('0x60')]({'where':{'messageId':_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xda')]}});}break;case _0xe2f9('0x90'):if(_0x128ab5[_0xe2f9('0x62')]['requestid']&&_0x128ab5['body'][_0xe2f9('0xdb')]){_0xc3a969=_0x128ab5['body'][_0xe2f9('0xdb')];return db['SmsMessage'][_0xe2f9('0x60')]({'where':{'messageId':_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xdc')]}});}break;case _0xe2f9('0x91'):if(_0x128ab5[_0xe2f9('0x62')]['message_id']&&_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xdd')]){_0xc3a969=_0x128ab5['body'][_0xe2f9('0xdd')];return db[_0xe2f9('0xb2')][_0xe2f9('0x60')]({'where':{'messageId':_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x92')]}});}break;case _0xe2f9('0xde'):var _0x148b95=_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x96')][0x0];if(_0x148b95[_0xe2f9('0x8c')]&&_0x148b95[_0xe2f9('0x2d')][_0xe2f9('0xdf')]===_0xe2f9('0xe0')){_0xc3a969=_0x148b95['status'][_0xe2f9('0xdf')];return db['SmsMessage']['find']({'where':{'messageId':_0x148b95[_0xe2f9('0x8c')]}});}break;case'clickatell':if(_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x8c')]&&_0x128ab5[_0xe2f9('0x62')]['status']){_0xc3a969=_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x2d')];return db[_0xe2f9('0xb2')][_0xe2f9('0x60')]({'where':{'messageId':_0x128ab5['body'][_0xe2f9('0x8c')]}});}break;case'bandwidth':if(_0x128ab5[_0xe2f9('0x62')][0x0][_0xe2f9('0x2a')]['id']){_0xc3a969=_0x128ab5[_0xe2f9('0x62')][0x0][_0xe2f9('0x43')];return db[_0xe2f9('0xb2')]['find']({'where':{'messageId':_0x128ab5[_0xe2f9('0x62')][0x0][_0xe2f9('0x2a')]['id']}});}break;case _0xe2f9('0x9d'):if(_0x128ab5['body'][_0xe2f9('0xe1')]&&_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x2d')]){_0xc3a969=_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0x2d')];return db[_0xe2f9('0xb2')]['find']({'where':{'messageId':_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xe1')]}});}break;}}})[_0xe2f9('0x22')](handleEntityNotFound(_0x76748,null))[_0xe2f9('0x22')](function(_0x2fb63d){if(_0x2fb63d){_0x3ccc73=_0x2fb63d;switch(_0x124156[_0xe2f9('0x43')]){case'skebby':if(_0xc3a969==='DELIVERED'){return _0x3ccc73[_0xe2f9('0x39')]({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0xd9'),util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case _0xe2f9('0x90'):if(_0xc3a969==='1'){return _0x3ccc73[_0xe2f9('0x39')]({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0xd9'),util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case _0xe2f9('0x91'):if(!_0x128ab5[_0xe2f9('0x62')][_0xe2f9('0xe3')]&&_0xc3a969>=0xc8&&_0xc3a969<=0xce){return _0x3ccc73['update']({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0x91'),util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case _0xe2f9('0xde'):var _0x8ce33e=_0x128ab5['body'][_0xe2f9('0x96')][0x0];if(_0x8ce33e[_0xe2f9('0x2d')][_0xe2f9('0xdf')]==='DELIVERED'){return _0x3ccc73['update']({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),'infobip',util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case _0xe2f9('0x9a'):if(_0xc3a969==_0xe2f9('0xe4')||_0xc3a969==_0xe2f9('0xe5')){return _0x3ccc73[_0xe2f9('0x39')]({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),'clickatell',util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case _0xe2f9('0xe6'):if(_0xc3a969==_0xe2f9('0xe7')){return _0x3ccc73[_0xe2f9('0x39')]({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),'bandwidth',util[_0xe2f9('0xe2')](_0x128ab5[_0xe2f9('0x62')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0xc3a969===_0xe2f9('0xe8')||_0xc3a969===_0xe2f9('0xe9')){return _0x3ccc73[_0xe2f9('0x39')]({'read':!![]});}else{logger[_0xe2f9('0x28')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0x9d'),util[_0xe2f9('0xe2')](_0x128ab5['body'],{'showHidden':![],'depth':null}));}break;}return _0x3ccc73;}})[_0xe2f9('0x22')](respondWithResult(_0x76748,null))[_0xe2f9('0x5b')](handleError(_0x76748,null));};exports['statusGet']=function(_0x2feefe,_0x1ad0ed,_0x5a6989){var _0x59294b,_0x50c80c,_0x10b966;return db['SmsAccount']['find']({'where':{'id':_0x2feefe[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x1ad0ed,null))[_0xe2f9('0x22')](function(_0x58844e){if(_0x58844e){_0x10b966=_0x58844e;logger[_0xe2f9('0x26')](_0xe2f9('0xd7'),_0xe2f9('0x2d'),_0xe2f9('0xd8'),_0x58844e[_0xe2f9('0x43')],util[_0xe2f9('0xe2')](_0x2feefe[_0xe2f9('0x48')],{'showHidden':![],'depth':null}));switch(_0x58844e['type']){case'csc':if(_0x2feefe[_0xe2f9('0x48')][_0xe2f9('0xea')]&&_0x2feefe[_0xe2f9('0x48')][_0xe2f9('0xeb')]){_0x50c80c=_0x2feefe[_0xe2f9('0x48')][_0xe2f9('0xeb')];return db[_0xe2f9('0xb2')][_0xe2f9('0x60')]({'where':{'messageId':_0x2feefe['query'][_0xe2f9('0xea')]}});}break;}}})[_0xe2f9('0x22')](handleEntityNotFound(_0x1ad0ed,null))[_0xe2f9('0x22')](function(_0x271dc3){if(_0x271dc3){_0x59294b=_0x271dc3;switch(_0x10b966[_0xe2f9('0x43')]){case _0xe2f9('0x97'):if(_0x50c80c==='2'||_0x50c80c==='6'){return _0x59294b[_0xe2f9('0x39')]({'read':!![]});}else{logger['error'](_0xe2f9('0xd7'),'status',_0xe2f9('0x97'),util[_0xe2f9('0xe2')](_0x2feefe['query'],{'showHidden':![],'depth':null}));};break;}return _0x59294b;}})[_0xe2f9('0x22')](respondWithResult(_0x1ad0ed,null))[_0xe2f9('0x5b')](handleError(_0x1ad0ed,null));};exports[_0xe2f9('0xec')]=function(_0x3f540,_0xfd93c2,_0x3ce7a7){return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x3f540[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0xfd93c2,null))[_0xe2f9('0x22')](function(_0x256d2c){if(_0x256d2c){return _0x256d2c[_0xe2f9('0xec')](_0x3f540[_0xe2f9('0x62')][_0xe2f9('0x71')],_['omit'](_0x3f540[_0xe2f9('0x62')],[_0xe2f9('0x71'),'id'])||{})[_0xe2f9('0xab')](function(_0x564381){for(var _0x45d20a=0x0;_0x45d20a<_0x3f540[_0xe2f9('0x62')][_0xe2f9('0x71')][_0xe2f9('0x4e')];_0x45d20a+=0x1){socket[_0xe2f9('0xed')](_0xe2f9('0xee'),{'UserId':Number(_0x3f540[_0xe2f9('0x62')][_0xe2f9('0x71')][_0x45d20a]),'SmsAccountId':Number(_0x3f540['params']['id'])});}return _0x564381;});}})[_0xe2f9('0x22')](respondWithResult(_0xfd93c2,null))[_0xe2f9('0x5b')](handleError(_0xfd93c2,null));};exports[_0xe2f9('0xef')]=function(_0x4adb5f,_0x377f2c,_0x3e279d){return db[_0xe2f9('0x41')][_0xe2f9('0x60')]({'where':{'id':_0x4adb5f['params']['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x377f2c,null))[_0xe2f9('0x22')](function(_0x4394e3){if(_0x4394e3){return _0x4394e3[_0xe2f9('0xef')](_0x4adb5f[_0xe2f9('0x48')]['ids'])[_0xe2f9('0x22')](function(){if(_[_0xe2f9('0xf0')](_0x4adb5f['query'][_0xe2f9('0x71')])){for(var _0x3e4cec=0x0;_0x3e4cec<_0x4adb5f[_0xe2f9('0x48')][_0xe2f9('0x71')][_0xe2f9('0x4e')];_0x3e4cec+=0x1){socket[_0xe2f9('0xed')](_0xe2f9('0xf1'),{'UserId':Number(_0x4adb5f['query'][_0xe2f9('0x71')][_0x3e4cec]),'SmsAccountId':Number(_0x4adb5f[_0xe2f9('0x5d')]['id'])});}}else{socket[_0xe2f9('0xed')](_0xe2f9('0xf1'),{'UserId':Number(_0x4adb5f['query']['ids']),'SmsAccountId':Number(_0x4adb5f[_0xe2f9('0x5d')]['id'])});}});}})['then'](respondWithStatusCode(_0x377f2c,null))[_0xe2f9('0x5b')](handleError(_0x377f2c,null));};exports[_0xe2f9('0xf2')]=function(_0xab7cd7,_0x3e3820,_0x3ac8aa){var _0xdce340={};var _0x28e040={};var _0x36a19e;var _0x41f20a;return db['SmsAccount'][_0xe2f9('0x6e')]({'where':{'id':_0xab7cd7[_0xe2f9('0x5d')]['id']}})[_0xe2f9('0x22')](handleEntityNotFound(_0x3e3820,null))[_0xe2f9('0x22')](function(_0x1cb287){if(_0x1cb287){_0x36a19e=_0x1cb287;_0x28e040[_0xe2f9('0x45')]=_['keys'](db[_0xe2f9('0xb5')][_0xe2f9('0x42')]);_0x28e040[_0xe2f9('0x48')]=_[_0xe2f9('0x49')](_0xab7cd7[_0xe2f9('0x48')]);_0x28e040[_0xe2f9('0x4a')]=_[_0xe2f9('0x4c')](_0x28e040[_0xe2f9('0x45')],_0x28e040[_0xe2f9('0x48')]);_0xdce340[_0xe2f9('0x4b')]=_[_0xe2f9('0x4c')](_0x28e040['model'],qs[_0xe2f9('0x4d')](_0xab7cd7['query'][_0xe2f9('0x4d')]));_0xdce340[_0xe2f9('0x4b')]=_0xdce340[_0xe2f9('0x4b')][_0xe2f9('0x4e')]?_0xdce340['attributes']:_0x28e040[_0xe2f9('0x45')];_0xdce340[_0xe2f9('0x51')]=qs[_0xe2f9('0x52')](_0xab7cd7['query']['sort']);_0xdce340[_0xe2f9('0x53')]=qs[_0xe2f9('0x4a')](_['pick'](_0xab7cd7[_0xe2f9('0x48')],_0x28e040[_0xe2f9('0x4a')]));if(_0xab7cd7[_0xe2f9('0x48')][_0xe2f9('0x56')]){_0xdce340[_0xe2f9('0x53')]=_['merge'](_0xdce340[_0xe2f9('0x53')],{'$or':_['map'](_0xdce340[_0xe2f9('0x4b')],function(_0x49b466){var _0x57ef84={};_0x57ef84[_0x49b466]={'$like':'%'+_0xab7cd7[_0xe2f9('0x48')][_0xe2f9('0x56')]+'%'};return _0x57ef84;})});}_0xdce340=_[_0xe2f9('0x57')]({},_0xdce340,_0xab7cd7['options']);return _0x36a19e[_0xe2f9('0xf2')](_0xdce340);}})[_0xe2f9('0x22')](function(_0x5bd43b){if(_0x5bd43b){_0x41f20a=_0x5bd43b['length'];if(!_0xab7cd7['query']['hasOwnProperty'](_0xe2f9('0x50'))){_0xdce340[_0xe2f9('0x31')]=qs[_0xe2f9('0x31')](_0xab7cd7[_0xe2f9('0x48')]['limit']);_0xdce340[_0xe2f9('0x33')]=qs[_0xe2f9('0x33')](_0xab7cd7['query'][_0xe2f9('0x33')]);}return _0x36a19e['getAgents'](_0xdce340);}})[_0xe2f9('0x22')](function(_0x2fd63e){if(_0x2fd63e){return _0x2fd63e?{'count':_0x41f20a,'rows':_0x2fd63e}:null;}})[_0xe2f9('0x22')](respondWithResult(_0x3e3820,null))['catch'](handleError(_0x3e3820,null));};
\ No newline at end of file
index 33a9003..11b5080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b67=['exports','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x383ce0,_0x2717be){var _0x445b01=function(_0x1d5dd2){while(--_0x1d5dd2){_0x383ce0['push'](_0x383ce0['shift']());}};_0x445b01(++_0x2717be);}(_0x6b67,0xf9));var _0x76b6=function(_0x4f13f8,_0x5e13c5){_0x4f13f8=_0x4f13f8-0x0;var _0x1e6b83=_0x6b67[_0x4f13f8];return _0x1e6b83;};'use strict';var EventEmitter=require('events');var SmsAccount=require('../../mysqldb')['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x76b6('0x0')](0x0);var events={'afterCreate':_0x76b6('0x1'),'afterUpdate':_0x76b6('0x2'),'afterDestroy':_0x76b6('0x3')};function emitEvent(_0x89aed0){return function(_0x74f590,_0x10025b,_0x4844c2){SmsAccountEvents[_0x76b6('0x4')](_0x89aed0+':'+_0x74f590['id'],_0x74f590);SmsAccountEvents[_0x76b6('0x4')](_0x89aed0,_0x74f590);_0x4844c2(null);};}for(var e in events){if(events[_0x76b6('0x5')](e)){var event=events[e];SmsAccount[_0x76b6('0x6')](e,emitEvent(event));}}module[_0x76b6('0x7')]=SmsAccountEvents;
\ No newline at end of file
+var _0x7a81=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x7a81,0x150));var _0x17a8=function(_0x16e8b0,_0x114394){_0x16e8b0=_0x16e8b0-0x0;var _0x53b3a7=_0x7a81[_0x16e8b0];return _0x53b3a7;};'use strict';var EventEmitter=require(_0x17a8('0x0'));var SmsAccount=require(_0x17a8('0x1'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x17a8('0x2')](0x0);var events={'afterCreate':_0x17a8('0x3'),'afterUpdate':_0x17a8('0x4'),'afterDestroy':_0x17a8('0x5')};function emitEvent(_0x36a017){return function(_0x37a92b,_0x497b99,_0x499683){SmsAccountEvents[_0x17a8('0x6')](_0x36a017+':'+_0x37a92b['id'],_0x37a92b);SmsAccountEvents[_0x17a8('0x6')](_0x36a017,_0x37a92b);_0x499683(null);};}for(var e in events){if(events[_0x17a8('0x7')](e)){var event=events[e];SmsAccount[_0x17a8('0x8')](e,emitEvent(event));}}module[_0x17a8('0x9')]=SmsAccountEvents;
\ No newline at end of file
index 5952b1c..3fa7962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc1f=['request-promise','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','util','../../config/logger','api','bluebird'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0xcc1f,0x1b8));var _0xfcc1=function(_0x4b5f49,_0x1fad1b){_0x4b5f49=_0x4b5f49-0x0;var _0x49cf98=_0xcc1f[_0x4b5f49];return _0x49cf98;};'use strict';var _=require('lodash');var util=require(_0xfcc1('0x0'));var logger=require(_0xfcc1('0x1'))(_0xfcc1('0x2'));var moment=require('moment');var BPromise=require(_0xfcc1('0x3'));var rp=require(_0xfcc1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfcc1('0x5'));var config=require(_0xfcc1('0x6'));var attributes=require(_0xfcc1('0x7'));module[_0xfcc1('0x8')]=function(_0x96406e,_0x3e79b1){return _0x96406e[_0xfcc1('0x9')](_0xfcc1('0xa'),attributes,{'tableName':_0xfcc1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e11=['sms_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsAccount'];(function(_0xd5af65,_0x4af5bc){var _0x376458=function(_0x356ca8){while(--_0x356ca8){_0xd5af65['push'](_0xd5af65['shift']());}};_0x376458(++_0x4af5bc);}(_0x9e11,0x9d));var _0x19e1=function(_0x20cffb,_0x5101cb){_0x20cffb=_0x20cffb-0x0;var _0xd26c32=_0x9e11[_0x20cffb];return _0xd26c32;};'use strict';var _=require(_0x19e1('0x0'));var util=require('util');var logger=require(_0x19e1('0x1'))(_0x19e1('0x2'));var moment=require(_0x19e1('0x3'));var BPromise=require(_0x19e1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x19e1('0x5'));var rimraf=require(_0x19e1('0x6'));var config=require(_0x19e1('0x7'));var attributes=require('./smsAccount.attributes');module[_0x19e1('0x8')]=function(_0x385033,_0xa7e5b0){return _0x385033[_0x19e1('0x9')](_0x19e1('0xa'),attributes,{'tableName':_0x19e1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5123719..f15357f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1799=['raw','where','include','map','model','attributes','then','ShowSmsAccount','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','defaults','socket.io-emitter','./smsAccount.socket','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','find','options'];(function(_0x8b6c91,_0x1c7ed5){var _0x24841f=function(_0x345e89){while(--_0x345e89){_0x8b6c91['push'](_0x8b6c91['shift']());}};_0x24841f(++_0x1c7ed5);}(_0x1799,0xf6));var _0x9179=function(_0x4d83c0,_0x18e589){_0x4d83c0=_0x4d83c0-0x0;var _0x50032d=_0x1799[_0x4d83c0];return _0x50032d;};'use strict';var _=require(_0x9179('0x0'));var util=require(_0x9179('0x1'));var moment=require(_0x9179('0x2'));var BPromise=require(_0x9179('0x3'));var rs=require(_0x9179('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9179('0x5'))['db'];var utils=require(_0x9179('0x6'));var logger=require(_0x9179('0x7'))(_0x9179('0x8'));var config=require(_0x9179('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9179('0xa')]['http']({'port':0x232a});config[_0x9179('0xb')]=_[_0x9179('0xc')](config[_0x9179('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9179('0xd'))(new Redis(config[_0x9179('0xb')]));require(_0x9179('0xe'))['register'](socket);function respondWithRpcPromise(_0x3b1e9b,_0x299151,_0x2c5ba3){return new BPromise(function(_0x2a876a,_0x168df8){return client['request'](_0x3b1e9b,_0x2c5ba3)['then'](function(_0x253c13){logger[_0x9179('0xf')](_0x9179('0x10'),_0x299151,_0x9179('0x11'));logger[_0x9179('0x12')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x299151,_0x9179('0x11'),JSON[_0x9179('0x13')](_0x253c13));if(_0x253c13['error']){if(_0x253c13['error']['code']===0x1f4){logger['error'](_0x9179('0x10'),_0x299151,_0x253c13[_0x9179('0x14')][_0x9179('0x15')]);return _0x168df8(_0x253c13[_0x9179('0x14')][_0x9179('0x15')]);}logger['error'](_0x9179('0x10'),_0x299151,_0x253c13[_0x9179('0x14')]['message']);return _0x2a876a(_0x253c13[_0x9179('0x14')][_0x9179('0x15')]);}else{logger[_0x9179('0xf')]('SmsAccount,\x20%s,\x20%s',_0x299151,_0x9179('0x11'));_0x2a876a(_0x253c13[_0x9179('0x16')][_0x9179('0x15')]);}})[_0x9179('0x17')](function(_0xb7aed0){logger['error'](_0x9179('0x10'),_0x299151,_0xb7aed0);_0x168df8(_0xb7aed0);});});}exports['ShowSmsAccount']=function(_0xcee32){var _0x5d083b=this;return new Promise(function(_0x5c9390,_0x6ca887){return db['SmsAccount'][_0x9179('0x18')]({'raw':_0xcee32[_0x9179('0x19')]?_0xcee32[_0x9179('0x19')][_0x9179('0x1a')]===undefined?!![]:![]:!![],'where':_0xcee32['options']?_0xcee32[_0x9179('0x19')][_0x9179('0x1b')]||null:null,'attributes':_0xcee32['options']?_0xcee32['options']['attributes']||null:null,'include':_0xcee32['options']?_0xcee32[_0x9179('0x19')][_0x9179('0x1c')]?_[_0x9179('0x1d')](_0xcee32[_0x9179('0x19')][_0x9179('0x1c')],function(_0xd741fd){return{'model':db[_0xd741fd[_0x9179('0x1e')]],'as':_0xd741fd['as'],'attributes':_0xd741fd[_0x9179('0x1f')],'include':_0xd741fd['include']?_[_0x9179('0x1d')](_0xd741fd[_0x9179('0x1c')],function(_0x486aaf){return{'model':db[_0x486aaf[_0x9179('0x1e')]],'as':_0x486aaf['as'],'attributes':_0x486aaf[_0x9179('0x1f')],'include':_0x486aaf[_0x9179('0x1c')]?_[_0x9179('0x1d')](_0x486aaf['include'],function(_0x355a9c){return{'model':db[_0x355a9c[_0x9179('0x1e')]],'as':_0x355a9c['as'],'attributes':_0x355a9c[_0x9179('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9179('0x20')](function(_0x5a43d3){logger[_0x9179('0xf')](_0x9179('0x21'),_0xcee32);logger[_0x9179('0x12')](_0x9179('0x21'),_0xcee32,JSON['stringify'](_0x5a43d3));_0x5c9390(_0x5a43d3);})[_0x9179('0x17')](function(_0x2c8cd4){logger[_0x9179('0x14')](_0x9179('0x21'),_0x2c8cd4[_0x9179('0x15')],_0xcee32);_0x6ca887(_0x5d083b['error'](0x1f4,_0x2c8cd4[_0x9179('0x15')]));});});};
\ No newline at end of file
+var _0x270d=['stringify','error','code','message','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','model','attributes','then','info','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x506eae,_0x137a43){var _0x5ee501=function(_0xb20930){while(--_0xb20930){_0x506eae['push'](_0x506eae['shift']());}};_0x5ee501(++_0x137a43);}(_0x270d,0x139));var _0xd270=function(_0x25bfa2,_0x5f2095){_0x25bfa2=_0x25bfa2-0x0;var _0x455105=_0x270d[_0x25bfa2];return _0x455105;};'use strict';var _=require(_0xd270('0x0'));var util=require(_0xd270('0x1'));var moment=require(_0xd270('0x2'));var BPromise=require(_0xd270('0x3'));var rs=require(_0xd270('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd270('0x5'))['db'];var utils=require(_0xd270('0x6'));var logger=require('../../config/logger')(_0xd270('0x7'));var config=require('../../config/environment');var jayson=require(_0xd270('0x8'));var client=jayson['client'][_0xd270('0x9')]({'port':0x232a});config[_0xd270('0xa')]=_[_0xd270('0xb')](config[_0xd270('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xd270('0xc'))(new Redis(config[_0xd270('0xa')]));require(_0xd270('0xd'))[_0xd270('0xe')](socket);function respondWithRpcPromise(_0x5d2702,_0x5b9101,_0x5bb2cc){return new BPromise(function(_0x1d1d03,_0x21b30c){return client[_0xd270('0xf')](_0x5d2702,_0x5bb2cc)['then'](function(_0x395a9f){logger['info'](_0xd270('0x10'),_0x5b9101,'request\x20sent');logger[_0xd270('0x11')](_0xd270('0x12'),_0x5b9101,_0xd270('0x13'),JSON[_0xd270('0x14')](_0x395a9f));if(_0x395a9f[_0xd270('0x15')]){if(_0x395a9f[_0xd270('0x15')][_0xd270('0x16')]===0x1f4){logger[_0xd270('0x15')](_0xd270('0x10'),_0x5b9101,_0x395a9f['error']['message']);return _0x21b30c(_0x395a9f[_0xd270('0x15')][_0xd270('0x17')]);}logger[_0xd270('0x15')](_0xd270('0x10'),_0x5b9101,_0x395a9f[_0xd270('0x15')]['message']);return _0x1d1d03(_0x395a9f[_0xd270('0x15')][_0xd270('0x17')]);}else{logger['info'](_0xd270('0x10'),_0x5b9101,_0xd270('0x13'));_0x1d1d03(_0x395a9f['result'][_0xd270('0x17')]);}})[_0xd270('0x18')](function(_0x3ca204){logger[_0xd270('0x15')](_0xd270('0x10'),_0x5b9101,_0x3ca204);_0x21b30c(_0x3ca204);});});}exports[_0xd270('0x19')]=function(_0x35c9e4){var _0x465665=this;return new Promise(function(_0x4a3c9a,_0x5cd56d){return db[_0xd270('0x1a')][_0xd270('0x1b')]({'raw':_0x35c9e4[_0xd270('0x1c')]?_0x35c9e4[_0xd270('0x1c')][_0xd270('0x1d')]===undefined?!![]:![]:!![],'where':_0x35c9e4[_0xd270('0x1c')]?_0x35c9e4[_0xd270('0x1c')][_0xd270('0x1e')]||null:null,'attributes':_0x35c9e4[_0xd270('0x1c')]?_0x35c9e4[_0xd270('0x1c')]['attributes']||null:null,'include':_0x35c9e4[_0xd270('0x1c')]?_0x35c9e4[_0xd270('0x1c')][_0xd270('0x1f')]?_[_0xd270('0x20')](_0x35c9e4[_0xd270('0x1c')]['include'],function(_0x4f733d){return{'model':db[_0x4f733d[_0xd270('0x21')]],'as':_0x4f733d['as'],'attributes':_0x4f733d['attributes'],'include':_0x4f733d['include']?_['map'](_0x4f733d[_0xd270('0x1f')],function(_0x2c3c89){return{'model':db[_0x2c3c89['model']],'as':_0x2c3c89['as'],'attributes':_0x2c3c89['attributes'],'include':_0x2c3c89[_0xd270('0x1f')]?_[_0xd270('0x20')](_0x2c3c89[_0xd270('0x1f')],function(_0x30bf9a){return{'model':db[_0x30bf9a[_0xd270('0x21')]],'as':_0x30bf9a['as'],'attributes':_0x30bf9a[_0xd270('0x22')]};}):[]};}):[]};}):[]:[]})[_0xd270('0x23')](function(_0x31137d){logger[_0xd270('0x24')]('ShowSmsAccount',_0x35c9e4);logger[_0xd270('0x11')](_0xd270('0x19'),_0x35c9e4,JSON['stringify'](_0x31137d));_0x4a3c9a(_0x31137d);})[_0xd270('0x18')](function(_0x134f7f){logger['error'](_0xd270('0x19'),_0x134f7f[_0xd270('0x17')],_0x35c9e4);_0x5cd56d(_0x465665['error'](0x1f4,_0x134f7f[_0xd270('0x17')]));});});};
\ No newline at end of file
index 43cef88..41bf8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_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(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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 b6e6f3f..ffa244d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x22d19d,_0x379051){var _0x103fc2=function(_0x10b414){while(--_0x10b414){_0x22d19d['push'](_0x22d19d['shift']());}};_0x103fc2(++_0x379051);}(_0x3e74,0x175));var _0x43e7=function(_0x4cba0c,_0x516606){_0x4cba0c=_0x4cba0c-0x0;var _0x53f0bd=_0x3e74[_0x4cba0c];return _0x53f0bd;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('0x10')]=router;
\ No newline at end of file
+var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x52aa1d,_0x2c150f){var _0x8024f8=function(_0x12adb8){while(--_0x12adb8){_0x52aa1d['push'](_0x52aa1d['shift']());}};_0x8024f8(++_0x2c150f);}(_0x3e74,0x175));var _0x43e7=function(_0x41161e,_0x4baa2f){_0x41161e=_0x41161e-0x0;var _0xcc9595=_0x3e74[_0x41161e];return _0xcc9595;};'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 1144c57..8dba0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x348b=['TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x6cf2c7,_0x27a3a0){var _0x4d0752=function(_0x5c6161){while(--_0x5c6161){_0x6cf2c7['push'](_0x6cf2c7['shift']());}};_0x4d0752(++_0x27a3a0);}(_0x348b,0x8e));var _0xb348=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x348b[_0x46aff0];return _0x9d78cf;};'use strict';var Sequelize=require(_0xb348('0x0'));module[_0xb348('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xb348('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xb348('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xb348('0x4')}};
\ No newline at end of file
+var _0x759c=['noop','TEXT','sequelize','STRING'];(function(_0x48cb9c,_0x3235de){var _0x58b934=function(_0x1f3653){while(--_0x1f3653){_0x48cb9c['push'](_0x48cb9c['shift']());}};_0x58b934(++_0x3235de);}(_0x759c,0x7a));var _0xc759=function(_0x541b66,_0x5b5933){_0x541b66=_0x541b66-0x0;var _0x11989d=_0x759c[_0x541b66];return _0x11989d;};'use strict';var Sequelize=require(_0xc759('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xc759('0x1')],'allowNull':![],'defaultValue':_0xc759('0x2')},'appdata':{'type':Sequelize[_0xc759('0x3')]()},'description':{'type':Sequelize[_0xc759('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index ef88bff..deb5ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aac=['order','sort','where','VIRTUAL','filter','merge','options','includeAll','include','rows','catch','show','params','length','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields'];(function(_0x42b970,_0x2300a1){var _0x1ae409=function(_0x1c0b87){while(--_0x1c0b87){_0x42b970['push'](_0x42b970['shift']());}};_0x1ae409(++_0x2300a1);}(_0x9aac,0x183));var _0xc9aa=function(_0x3f912e,_0x45b441){_0x3f912e=_0x3f912e-0x0;var _0x12b6a6=_0x9aac[_0x3f912e];return _0x12b6a6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc9aa('0x0'));var zipdir=require(_0xc9aa('0x1'));var jsonpatch=require(_0xc9aa('0x2'));var rp=require(_0xc9aa('0x3'));var moment=require(_0xc9aa('0x4'));var BPromise=require(_0xc9aa('0x5'));var Mustache=require(_0xc9aa('0x6'));var util=require(_0xc9aa('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc9aa('0x8'));var ejs=require(_0xc9aa('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc9aa('0xa'));var squel=require(_0xc9aa('0xb'));var crypto=require(_0xc9aa('0xc'));var jsforce=require(_0xc9aa('0xd'));var deskjs=require(_0xc9aa('0xe'));var toCsv=require(_0xc9aa('0x8'));var querystring=require(_0xc9aa('0xf'));var Papa=require(_0xc9aa('0x10'));var Redis=require(_0xc9aa('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc9aa('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc9aa('0x13'))('api');var utils=require(_0xc9aa('0x14'));var config=require(_0xc9aa('0x15'));var licenseUtil=require(_0xc9aa('0x16'));var db=require(_0xc9aa('0x17'))['db'];function respondWithStatusCode(_0x41edaf,_0x33c728){_0x33c728=_0x33c728||0xcc;return function(_0x9ea471){if(_0x9ea471){return _0x41edaf[_0xc9aa('0x18')](_0x33c728);}return _0x41edaf[_0xc9aa('0x19')](_0x33c728)[_0xc9aa('0x1a')]();};}function respondWithResult(_0x1c5196,_0x1f9980){_0x1f9980=_0x1f9980||0xc8;return function(_0x17b7ce){if(_0x17b7ce){return _0x1c5196[_0xc9aa('0x19')](_0x1f9980)[_0xc9aa('0x1b')](_0x17b7ce);}};}function respondWithFilteredResult(_0x921c8,_0x208dbe){return function(_0x50f9df){if(_0x50f9df){var _0x4b2654=typeof _0x208dbe[_0xc9aa('0x1c')]===_0xc9aa('0x1d')&&typeof _0x208dbe[_0xc9aa('0x1e')]===_0xc9aa('0x1d');var _0x5a2611=_0x50f9df['count'];var _0x1e5ac9=_0x4b2654?0x0:_0x208dbe['offset'];var _0x566652=_0x4b2654?_0x50f9df[_0xc9aa('0x1f')]:_0x208dbe['offset']+_0x208dbe['limit'];var _0x4cb58a;if(_0x566652>=_0x5a2611){_0x566652=_0x5a2611;_0x4cb58a=0xc8;}else{_0x4cb58a=0xce;}_0x921c8['status'](_0x4cb58a);return _0x921c8[_0xc9aa('0x20')](_0xc9aa('0x21'),_0x1e5ac9+'-'+_0x566652+'/'+_0x5a2611)[_0xc9aa('0x1b')](_0x50f9df);}return null;};}function patchUpdates(_0x5ca083){return function(_0x4f706f){try{jsonpatch[_0xc9aa('0x22')](_0x4f706f,_0x5ca083,!![]);}catch(_0x529e37){return BPromise[_0xc9aa('0x23')](_0x529e37);}return _0x4f706f[_0xc9aa('0x24')]();};}function saveUpdates(_0x5f534f,_0x10da8f){return function(_0x530d1){if(_0x530d1){return _0x530d1[_0xc9aa('0x25')](_0x5f534f)[_0xc9aa('0x26')](function(_0x2bdbce){return _0x2bdbce;});}return null;};}function removeEntity(_0x4be90f,_0x5c8f72){return function(_0x682079){if(_0x682079){return _0x682079[_0xc9aa('0x27')]()['then'](function(){_0x4be90f[_0xc9aa('0x19')](0xcc)[_0xc9aa('0x1a')]();});}};}function handleEntityNotFound(_0x3f0523,_0x58706b){return function(_0x164c65){if(!_0x164c65){_0x3f0523[_0xc9aa('0x18')](0x194);}return _0x164c65;};}function handleError(_0x5247fa,_0x1e2727){_0x1e2727=_0x1e2727||0x1f4;return function(_0x129e3c){logger[_0xc9aa('0x28')](_0x129e3c[_0xc9aa('0x29')]);if(_0x129e3c[_0xc9aa('0x2a')]){delete _0x129e3c[_0xc9aa('0x2a')];}_0x5247fa[_0xc9aa('0x19')](_0x1e2727)['send'](_0x129e3c);};}exports[_0xc9aa('0x2b')]=function(_0x31a7e3,_0x396794){var _0xb3dd41={},_0x5d1023={},_0x51b940={'count':0x0,'rows':[]};var _0x41bf4a=_[_0xc9aa('0x2c')](db[_0xc9aa('0x2d')][_0xc9aa('0x2e')],function(_0x321b9c){return{'name':_0x321b9c[_0xc9aa('0x2f')],'type':_0x321b9c[_0xc9aa('0x30')][_0xc9aa('0x31')]};});_0x5d1023[_0xc9aa('0x32')]=_['map'](_0x41bf4a,'name');_0x5d1023['query']=_[_0xc9aa('0x33')](_0x31a7e3['query']);_0x5d1023[_0xc9aa('0x34')]=_[_0xc9aa('0x35')](_0x5d1023['model'],_0x5d1023[_0xc9aa('0x36')]);_0xb3dd41[_0xc9aa('0x37')]=_[_0xc9aa('0x35')](_0x5d1023[_0xc9aa('0x32')],qs[_0xc9aa('0x38')](_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x38')]));_0xb3dd41['attributes']=_0xb3dd41[_0xc9aa('0x37')]['length']?_0xb3dd41[_0xc9aa('0x37')]:_0x5d1023[_0xc9aa('0x32')];if(!_0x31a7e3['query']['hasOwnProperty']('nolimit')){_0xb3dd41[_0xc9aa('0x1e')]=qs['limit'](_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x1e')]);_0xb3dd41['offset']=qs[_0xc9aa('0x1c')](_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x1c')]);}_0xb3dd41[_0xc9aa('0x39')]=qs['sort'](_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x3a')]);_0xb3dd41[_0xc9aa('0x3b')]=qs[_0xc9aa('0x34')](_['pick'](_0x31a7e3[_0xc9aa('0x36')],_0x5d1023[_0xc9aa('0x34')]),_0x41bf4a);if(_0x31a7e3['query']['filter']){_0xb3dd41[_0xc9aa('0x3b')]=_['merge'](_0xb3dd41[_0xc9aa('0x3b')],{'$or':_[_0xc9aa('0x2c')](_0x41bf4a,function(_0x178ff1){if(_0x178ff1[_0xc9aa('0x30')]!==_0xc9aa('0x3c')){var _0x9c600b={};_0x9c600b[_0x178ff1[_0xc9aa('0x2a')]]={'$like':'%'+_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x3d')]+'%'};return _0x9c600b;}})});}_0xb3dd41=_[_0xc9aa('0x3e')]({},_0xb3dd41,_0x31a7e3[_0xc9aa('0x3f')]);var _0x5749de={'where':_0xb3dd41[_0xc9aa('0x3b')]};return db[_0xc9aa('0x2d')][_0xc9aa('0x1f')](_0x5749de)[_0xc9aa('0x26')](function(_0x183c64){_0x51b940['count']=_0x183c64;if(_0x31a7e3[_0xc9aa('0x36')][_0xc9aa('0x40')]){_0xb3dd41[_0xc9aa('0x41')]=[{'all':!![]}];}return db[_0xc9aa('0x2d')]['findAll'](_0xb3dd41);})[_0xc9aa('0x26')](function(_0x4ea18d){_0x51b940[_0xc9aa('0x42')]=_0x4ea18d;return _0x51b940;})[_0xc9aa('0x26')](respondWithFilteredResult(_0x396794,_0xb3dd41))[_0xc9aa('0x43')](handleError(_0x396794,null));};exports[_0xc9aa('0x44')]=function(_0x59738a,_0x2ad7e8){var _0x242924={'raw':!![],'where':{'id':_0x59738a[_0xc9aa('0x45')]['id']}},_0x42558a={};_0x42558a[_0xc9aa('0x32')]=_['keys'](db[_0xc9aa('0x2d')][_0xc9aa('0x2e')]);_0x42558a[_0xc9aa('0x36')]=_[_0xc9aa('0x33')](_0x59738a[_0xc9aa('0x36')]);_0x42558a[_0xc9aa('0x34')]=_[_0xc9aa('0x35')](_0x42558a[_0xc9aa('0x32')],_0x42558a[_0xc9aa('0x36')]);_0x242924['attributes']=_[_0xc9aa('0x35')](_0x42558a[_0xc9aa('0x32')],qs[_0xc9aa('0x38')](_0x59738a[_0xc9aa('0x36')]['fields']));_0x242924['attributes']=_0x242924[_0xc9aa('0x37')][_0xc9aa('0x46')]?_0x242924[_0xc9aa('0x37')]:_0x42558a[_0xc9aa('0x32')];if(_0x59738a[_0xc9aa('0x36')][_0xc9aa('0x40')]){_0x242924[_0xc9aa('0x41')]=[{'all':!![]}];}_0x242924=_['merge']({},_0x242924,_0x59738a[_0xc9aa('0x3f')]);return db[_0xc9aa('0x2d')]['find'](_0x242924)['then'](handleEntityNotFound(_0x2ad7e8,null))[_0xc9aa('0x26')](respondWithResult(_0x2ad7e8,null))[_0xc9aa('0x43')](handleError(_0x2ad7e8,null));};exports[_0xc9aa('0x47')]=function(_0x52b3ee,_0x5cf213){return db[_0xc9aa('0x2d')][_0xc9aa('0x47')](_0x52b3ee[_0xc9aa('0x48')],{})[_0xc9aa('0x26')](respondWithResult(_0x5cf213,0xc9))['catch'](handleError(_0x5cf213,null));};exports['update']=function(_0x2b8deb,_0xc3038f){if(_0x2b8deb[_0xc9aa('0x48')]['id']){delete _0x2b8deb['body']['id'];}return db[_0xc9aa('0x2d')][_0xc9aa('0x49')]({'where':{'id':_0x2b8deb[_0xc9aa('0x45')]['id']}})[_0xc9aa('0x26')](handleEntityNotFound(_0xc3038f,null))['then'](saveUpdates(_0x2b8deb['body'],null))[_0xc9aa('0x26')](respondWithResult(_0xc3038f,null))[_0xc9aa('0x43')](handleError(_0xc3038f,null));};exports[_0xc9aa('0x27')]=function(_0x4c5ba6,_0xba7c24){return db[_0xc9aa('0x2d')][_0xc9aa('0x49')]({'where':{'id':_0x4c5ba6[_0xc9aa('0x45')]['id']}})[_0xc9aa('0x26')](handleEntityNotFound(_0xba7c24,null))['then'](removeEntity(_0xba7c24,null))['catch'](handleError(_0xba7c24,null));};
\ No newline at end of file
+var _0xe0c4=['moment','bluebird','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','then','error','stack','name','send','index','map','SmsApplication','rawAttributes','type','key','model','keys','filters','intersection','attributes','fields','query','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','show','params','length','options','catch','create','body','update','find','eml-format','zip-dir','fast-json-patch','request-promise'];(function(_0x459b74,_0x5773bd){var _0x46cb16=function(_0x97867f){while(--_0x97867f){_0x459b74['push'](_0x459b74['shift']());}};_0x46cb16(++_0x5773bd);}(_0xe0c4,0x15a));var _0x4e0c=function(_0x2bb787,_0x41bf02){_0x2bb787=_0x2bb787-0x0;var _0x425b33=_0xe0c4[_0x2bb787];return _0x425b33;};'use strict';var emlformat=require(_0x4e0c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4e0c('0x1'));var jsonpatch=require(_0x4e0c('0x2'));var rp=require(_0x4e0c('0x3'));var moment=require(_0x4e0c('0x4'));var BPromise=require(_0x4e0c('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x4e0c('0x6'));var csv=require(_0x4e0c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4e0c('0x8'));var _=require(_0x4e0c('0x9'));var squel=require(_0x4e0c('0xa'));var crypto=require(_0x4e0c('0xb'));var jsforce=require(_0x4e0c('0xc'));var deskjs=require(_0x4e0c('0xd'));var toCsv=require(_0x4e0c('0x7'));var querystring=require(_0x4e0c('0xe'));var Papa=require('papaparse');var Redis=require(_0x4e0c('0xf'));var authService=require(_0x4e0c('0x10'));var qs=require(_0x4e0c('0x11'));var as=require(_0x4e0c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4e0c('0x13'))(_0x4e0c('0x14'));var utils=require(_0x4e0c('0x15'));var config=require(_0x4e0c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x141f0d,_0x34a82e){_0x34a82e=_0x34a82e||0xcc;return function(_0x5a652a){if(_0x5a652a){return _0x141f0d[_0x4e0c('0x17')](_0x34a82e);}return _0x141f0d[_0x4e0c('0x18')](_0x34a82e)[_0x4e0c('0x19')]();};}function respondWithResult(_0xd101cc,_0x52b941){_0x52b941=_0x52b941||0xc8;return function(_0x2024e1){if(_0x2024e1){return _0xd101cc[_0x4e0c('0x18')](_0x52b941)[_0x4e0c('0x1a')](_0x2024e1);}};}function respondWithFilteredResult(_0x233f6f,_0x42dc23){return function(_0x16fd1f){if(_0x16fd1f){var _0x576a0b=typeof _0x42dc23[_0x4e0c('0x1b')]===_0x4e0c('0x1c')&&typeof _0x42dc23[_0x4e0c('0x1d')]===_0x4e0c('0x1c');var _0x5cb422=_0x16fd1f[_0x4e0c('0x1e')];var _0x49ec20=_0x576a0b?0x0:_0x42dc23[_0x4e0c('0x1b')];var _0x595749=_0x576a0b?_0x16fd1f['count']:_0x42dc23[_0x4e0c('0x1b')]+_0x42dc23[_0x4e0c('0x1d')];var _0x41f388;if(_0x595749>=_0x5cb422){_0x595749=_0x5cb422;_0x41f388=0xc8;}else{_0x41f388=0xce;}_0x233f6f['status'](_0x41f388);return _0x233f6f[_0x4e0c('0x1f')]('Content-Range',_0x49ec20+'-'+_0x595749+'/'+_0x5cb422)[_0x4e0c('0x1a')](_0x16fd1f);}return null;};}function patchUpdates(_0x8f2350){return function(_0x12cf78){try{jsonpatch['apply'](_0x12cf78,_0x8f2350,!![]);}catch(_0x20e30a){return BPromise[_0x4e0c('0x20')](_0x20e30a);}return _0x12cf78['save']();};}function saveUpdates(_0x1e3509,_0xa14398){return function(_0x4eec6d){if(_0x4eec6d){return _0x4eec6d['update'](_0x1e3509)['then'](function(_0x171faf){return _0x171faf;});}return null;};}function removeEntity(_0x17eb92,_0x1ed0de){return function(_0x270ef4){if(_0x270ef4){return _0x270ef4['destroy']()[_0x4e0c('0x21')](function(){_0x17eb92[_0x4e0c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe82510,_0x29e4ec){return function(_0x28ddb8){if(!_0x28ddb8){_0xe82510[_0x4e0c('0x17')](0x194);}return _0x28ddb8;};}function handleError(_0x419402,_0x152552){_0x152552=_0x152552||0x1f4;return function(_0x3a17ea){logger[_0x4e0c('0x22')](_0x3a17ea[_0x4e0c('0x23')]);if(_0x3a17ea[_0x4e0c('0x24')]){delete _0x3a17ea[_0x4e0c('0x24')];}_0x419402[_0x4e0c('0x18')](_0x152552)[_0x4e0c('0x25')](_0x3a17ea);};}exports[_0x4e0c('0x26')]=function(_0x2b2d57,_0x95aade){var _0x16c498={},_0x33c524={},_0x2fd40f={'count':0x0,'rows':[]};var _0x49a886=_[_0x4e0c('0x27')](db[_0x4e0c('0x28')][_0x4e0c('0x29')],function(_0x25c7c7){return{'name':_0x25c7c7['fieldName'],'type':_0x25c7c7[_0x4e0c('0x2a')][_0x4e0c('0x2b')]};});_0x33c524[_0x4e0c('0x2c')]=_[_0x4e0c('0x27')](_0x49a886,'name');_0x33c524['query']=_[_0x4e0c('0x2d')](_0x2b2d57['query']);_0x33c524[_0x4e0c('0x2e')]=_[_0x4e0c('0x2f')](_0x33c524[_0x4e0c('0x2c')],_0x33c524['query']);_0x16c498[_0x4e0c('0x30')]=_[_0x4e0c('0x2f')](_0x33c524[_0x4e0c('0x2c')],qs[_0x4e0c('0x31')](_0x2b2d57[_0x4e0c('0x32')][_0x4e0c('0x31')]));_0x16c498[_0x4e0c('0x30')]=_0x16c498[_0x4e0c('0x30')]['length']?_0x16c498[_0x4e0c('0x30')]:_0x33c524[_0x4e0c('0x2c')];if(!_0x2b2d57[_0x4e0c('0x32')]['hasOwnProperty'](_0x4e0c('0x33'))){_0x16c498['limit']=qs[_0x4e0c('0x1d')](_0x2b2d57[_0x4e0c('0x32')][_0x4e0c('0x1d')]);_0x16c498['offset']=qs[_0x4e0c('0x1b')](_0x2b2d57[_0x4e0c('0x32')][_0x4e0c('0x1b')]);}_0x16c498[_0x4e0c('0x34')]=qs['sort'](_0x2b2d57['query'][_0x4e0c('0x35')]);_0x16c498['where']=qs[_0x4e0c('0x2e')](_[_0x4e0c('0x36')](_0x2b2d57['query'],_0x33c524['filters']),_0x49a886);if(_0x2b2d57[_0x4e0c('0x32')][_0x4e0c('0x37')]){_0x16c498[_0x4e0c('0x38')]=_[_0x4e0c('0x39')](_0x16c498[_0x4e0c('0x38')],{'$or':_['map'](_0x49a886,function(_0x464266){if(_0x464266[_0x4e0c('0x2a')]!==_0x4e0c('0x3a')){var _0x51d921={};_0x51d921[_0x464266[_0x4e0c('0x24')]]={'$like':'%'+_0x2b2d57['query'][_0x4e0c('0x37')]+'%'};return _0x51d921;}})});}_0x16c498=_[_0x4e0c('0x39')]({},_0x16c498,_0x2b2d57['options']);var _0x37987f={'where':_0x16c498[_0x4e0c('0x38')]};return db[_0x4e0c('0x28')][_0x4e0c('0x1e')](_0x37987f)[_0x4e0c('0x21')](function(_0x144a3c){_0x2fd40f['count']=_0x144a3c;if(_0x2b2d57['query']['includeAll']){_0x16c498[_0x4e0c('0x3b')]=[{'all':!![]}];}return db[_0x4e0c('0x28')][_0x4e0c('0x3c')](_0x16c498);})[_0x4e0c('0x21')](function(_0x37b930){_0x2fd40f['rows']=_0x37b930;return _0x2fd40f;})[_0x4e0c('0x21')](respondWithFilteredResult(_0x95aade,_0x16c498))['catch'](handleError(_0x95aade,null));};exports[_0x4e0c('0x3d')]=function(_0x5d7fd0,_0x3d54bd){var _0x203b38={'raw':!![],'where':{'id':_0x5d7fd0[_0x4e0c('0x3e')]['id']}},_0x2cf6a5={};_0x2cf6a5[_0x4e0c('0x2c')]=_['keys'](db[_0x4e0c('0x28')]['rawAttributes']);_0x2cf6a5[_0x4e0c('0x32')]=_[_0x4e0c('0x2d')](_0x5d7fd0[_0x4e0c('0x32')]);_0x2cf6a5[_0x4e0c('0x2e')]=_[_0x4e0c('0x2f')](_0x2cf6a5['model'],_0x2cf6a5[_0x4e0c('0x32')]);_0x203b38['attributes']=_['intersection'](_0x2cf6a5[_0x4e0c('0x2c')],qs['fields'](_0x5d7fd0[_0x4e0c('0x32')][_0x4e0c('0x31')]));_0x203b38['attributes']=_0x203b38['attributes'][_0x4e0c('0x3f')]?_0x203b38[_0x4e0c('0x30')]:_0x2cf6a5[_0x4e0c('0x2c')];if(_0x5d7fd0[_0x4e0c('0x32')]['includeAll']){_0x203b38['include']=[{'all':!![]}];}_0x203b38=_['merge']({},_0x203b38,_0x5d7fd0[_0x4e0c('0x40')]);return db[_0x4e0c('0x28')]['find'](_0x203b38)['then'](handleEntityNotFound(_0x3d54bd,null))[_0x4e0c('0x21')](respondWithResult(_0x3d54bd,null))[_0x4e0c('0x41')](handleError(_0x3d54bd,null));};exports[_0x4e0c('0x42')]=function(_0x5b449a,_0x160371){return db['SmsApplication'][_0x4e0c('0x42')](_0x5b449a[_0x4e0c('0x43')],{})['then'](respondWithResult(_0x160371,0xc9))[_0x4e0c('0x41')](handleError(_0x160371,null));};exports[_0x4e0c('0x44')]=function(_0xebbcf9,_0x53a24a){if(_0xebbcf9['body']['id']){delete _0xebbcf9[_0x4e0c('0x43')]['id'];}return db[_0x4e0c('0x28')][_0x4e0c('0x45')]({'where':{'id':_0xebbcf9[_0x4e0c('0x3e')]['id']}})[_0x4e0c('0x21')](handleEntityNotFound(_0x53a24a,null))[_0x4e0c('0x21')](saveUpdates(_0xebbcf9[_0x4e0c('0x43')],null))[_0x4e0c('0x21')](respondWithResult(_0x53a24a,null))[_0x4e0c('0x41')](handleError(_0x53a24a,null));};exports['destroy']=function(_0x253bd0,_0x30a49d){return db[_0x4e0c('0x28')][_0x4e0c('0x45')]({'where':{'id':_0x253bd0[_0x4e0c('0x3e')]['id']}})[_0x4e0c('0x21')](handleEntityNotFound(_0x30a49d,null))['then'](removeEntity(_0x30a49d,null))[_0x4e0c('0x41')](handleError(_0x30a49d,null));};
\ No newline at end of file
index 1bcfce6..3e65cc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2ce=['bluebird','request-promise','path','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xc2ce,0x82));var _0xec2c=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xc2ce[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0xec2c('0x0'));var util=require(_0xec2c('0x1'));var logger=require(_0xec2c('0x2'))(_0xec2c('0x3'));var moment=require(_0xec2c('0x4'));var BPromise=require(_0xec2c('0x5'));var rp=require(_0xec2c('0x6'));var fs=require('fs');var path=require(_0xec2c('0x7'));var rimraf=require('rimraf');var config=require(_0xec2c('0x8'));var attributes=require(_0xec2c('0x9'));module[_0xec2c('0xa')]=function(_0x358e63,_0x4afebf){return _0x358e63[_0xec2c('0xb')](_0xec2c('0xc'),attributes,{'tableName':_0xec2c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xec2c('0xe')});};
\ No newline at end of file
+var _0x27ff=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0x27ff,0x78));var _0xf27f=function(_0x5d1044,_0x18f656){_0x5d1044=_0x5d1044-0x0;var _0x3cd90e=_0x27ff[_0x5d1044];return _0x3cd90e;};'use strict';var _=require(_0xf27f('0x0'));var util=require('util');var logger=require(_0xf27f('0x1'))(_0xf27f('0x2'));var moment=require(_0xf27f('0x3'));var BPromise=require(_0xf27f('0x4'));var rp=require(_0xf27f('0x5'));var fs=require('fs');var path=require(_0xf27f('0x6'));var rimraf=require(_0xf27f('0x7'));var config=require(_0xf27f('0x8'));var attributes=require(_0xf27f('0x9'));module[_0xf27f('0xa')]=function(_0x10f950,_0x262024){return _0x10f950[_0xf27f('0xb')](_0xf27f('0xc'),attributes,{'tableName':_0xf27f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf27f('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 6e7531c..7e6f62b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb515=['debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','SmsApplication,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x28bf04,_0x879ad1){var _0x483c8c=function(_0x417e09){while(--_0x417e09){_0x28bf04['push'](_0x28bf04['shift']());}};_0x483c8c(++_0x879ad1);}(_0xb515,0x1b8));var _0x5b51=function(_0x4cf8d4,_0x5aee73){_0x4cf8d4=_0x4cf8d4-0x0;var _0x2c1beb=_0xb515[_0x4cf8d4];return _0x2c1beb;};'use strict';var _=require(_0x5b51('0x0'));var util=require('util');var moment=require(_0x5b51('0x1'));var BPromise=require(_0x5b51('0x2'));var rs=require(_0x5b51('0x3'));var fs=require('fs');var Redis=require(_0x5b51('0x4'));var db=require(_0x5b51('0x5'))['db'];var utils=require(_0x5b51('0x6'));var logger=require(_0x5b51('0x7'))(_0x5b51('0x8'));var config=require('../../config/environment');var jayson=require(_0x5b51('0x9'));var client=jayson[_0x5b51('0xa')][_0x5b51('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x293d82,_0x396b3f,_0x2c6d86){return new BPromise(function(_0x1d5082,_0x226e9c){return client[_0x5b51('0xc')](_0x293d82,_0x2c6d86)[_0x5b51('0xd')](function(_0x1085e6){logger[_0x5b51('0xe')]('SmsApplication,\x20%s,\x20%s',_0x396b3f,_0x5b51('0xf'));logger[_0x5b51('0x10')](_0x5b51('0x11'),_0x396b3f,_0x5b51('0xf'),JSON[_0x5b51('0x12')](_0x1085e6));if(_0x1085e6[_0x5b51('0x13')]){if(_0x1085e6['error']['code']===0x1f4){logger['error'](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x226e9c(_0x1085e6[_0x5b51('0x13')]['message']);}logger[_0x5b51('0x13')](_0x5b51('0x14'),_0x396b3f,_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);return _0x1d5082(_0x1085e6[_0x5b51('0x13')][_0x5b51('0x15')]);}else{logger[_0x5b51('0xe')](_0x5b51('0x14'),_0x396b3f,_0x5b51('0xf'));_0x1d5082(_0x1085e6[_0x5b51('0x16')][_0x5b51('0x15')]);}})[_0x5b51('0x17')](function(_0x520686){logger[_0x5b51('0x13')]('SmsApplication,\x20%s,\x20%s',_0x396b3f,_0x520686);_0x226e9c(_0x520686);});});}
\ No newline at end of file
+var _0xbca0=['stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','debug','SmsApplication,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x11ce46,_0x7a1715){var _0x272001=function(_0x38c599){while(--_0x38c599){_0x11ce46['push'](_0x11ce46['shift']());}};_0x272001(++_0x7a1715);}(_0xbca0,0x8b));var _0x0bca=function(_0x2b23e5,_0x2265ad){_0x2b23e5=_0x2b23e5-0x0;var _0x7f0e5a=_0xbca0[_0x2b23e5];return _0x7f0e5a;};'use strict';var _=require(_0x0bca('0x0'));var util=require(_0x0bca('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0bca('0x2'));var db=require(_0x0bca('0x3'))['db'];var utils=require(_0x0bca('0x4'));var logger=require(_0x0bca('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0bca('0x6'));var client=jayson[_0x0bca('0x7')][_0x0bca('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x454627,_0x4dcba6,_0x48260c){return new BPromise(function(_0x55fbf0,_0x241ca5){return client[_0x0bca('0x9')](_0x454627,_0x48260c)[_0x0bca('0xa')](function(_0x206194){logger[_0x0bca('0xb')]('SmsApplication,\x20%s,\x20%s',_0x4dcba6,'request\x20sent');logger[_0x0bca('0xc')](_0x0bca('0xd'),_0x4dcba6,_0x0bca('0xe'),JSON[_0x0bca('0xf')](_0x206194));if(_0x206194[_0x0bca('0x10')]){if(_0x206194[_0x0bca('0x10')][_0x0bca('0x11')]===0x1f4){logger[_0x0bca('0x10')](_0x0bca('0x12'),_0x4dcba6,_0x206194[_0x0bca('0x10')][_0x0bca('0x13')]);return _0x241ca5(_0x206194[_0x0bca('0x10')][_0x0bca('0x13')]);}logger[_0x0bca('0x10')](_0x0bca('0x12'),_0x4dcba6,_0x206194[_0x0bca('0x10')][_0x0bca('0x13')]);return _0x55fbf0(_0x206194[_0x0bca('0x10')][_0x0bca('0x13')]);}else{logger['info'](_0x0bca('0x12'),_0x4dcba6,_0x0bca('0xe'));_0x55fbf0(_0x206194[_0x0bca('0x14')][_0x0bca('0x13')]);}})[_0x0bca('0x15')](function(_0x2ed970){logger[_0x0bca('0x10')]('SmsApplication,\x20%s,\x20%s',_0x4dcba6,_0x2ed970);_0x241ca5(_0x2ed970);});});}
\ No newline at end of file
index cf17976..92c46bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms','addTags','put','smsinteraction:update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout'];(function(_0x1e7a63,_0x5b20e9){var _0x88b434=function(_0x702fc5){while(--_0x702fc5){_0x1e7a63['push'](_0x1e7a63['shift']());}};_0x88b434(++_0x5b20e9);}(_0x8f4c,0x113));var _0xc8f4=function(_0x4178d9,_0x457645){_0x4178d9=_0x4178d9-0x0;var _0x4c0932=_0x8f4c[_0x4178d9];return _0x4c0932;};'use strict';var multer=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var path=require(_0xc8f4('0x2'));var timeout=require(_0xc8f4('0x3'));var express=require(_0xc8f4('0x4'));var router=express[_0xc8f4('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc8f4('0x6'));var interaction=require(_0xc8f4('0x7'));var config=require(_0xc8f4('0x8'));var controller=require('./smsInteraction.controller');router[_0xc8f4('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc8f4('0xa'),auth['isAuthenticated'](),controller[_0xc8f4('0xb')]);router[_0xc8f4('0x9')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0xe')]);router['get'](_0xc8f4('0xf'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x10')]);router[_0xc8f4('0x9')]('/:id/download',auth[_0xc8f4('0xd')](),controller['download']);router[_0xc8f4('0x11')]('/',auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x12')]);router[_0xc8f4('0x11')](_0xc8f4('0xf'),auth['isAuthenticated'](),controller[_0xc8f4('0x13')]);router[_0xc8f4('0x11')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),'smsinteraction:addtags'),controller[_0xc8f4('0x17')]);router[_0xc8f4('0x18')](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')]('sms',_0xc8f4('0x19')),controller['update']);router['delete'](_0xc8f4('0xc'),auth[_0xc8f4('0xd')](),interaction[_0xc8f4('0x15')](_0xc8f4('0x16'),_0xc8f4('0x1a')),controller[_0xc8f4('0x1b')]);router[_0xc8f4('0x1c')](_0xc8f4('0x14'),auth[_0xc8f4('0xd')](),controller[_0xc8f4('0x1d')]);module[_0xc8f4('0x1e')]=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(_0x362480,_0x73fcd1){var _0x1dd0ba=function(_0x4f674e){while(--_0x4f674e){_0x362480['push'](_0x362480['shift']());}};_0x1dd0ba(++_0x73fcd1);}(_0xb62e,0x1de));var _0xeb62=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb62e[_0x501510];return _0x1e6ee5;};'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 ec17322..3a91bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a22=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment','exports'];(function(_0x5172dd,_0x3450dd){var _0x5c9c33=function(_0x1d82d2){while(--_0x1d82d2){_0x5172dd['push'](_0x5172dd['shift']());}};_0x5c9c33(++_0x3450dd);}(_0x9a22,0x75));var _0x29a2=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x9a22[_0x42f009];return _0x22a1e0;};'use strict';var Sequelize=require(_0x29a2('0x0'));var moment=require(_0x29a2('0x1'));module[_0x29a2('0x2')]={'closed':{'type':Sequelize[_0x29a2('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x29a2('0x4')]},'disposition':{'type':Sequelize[_0x29a2('0x5')]},'secondDisposition':{'type':Sequelize[_0x29a2('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x29a2('0x5')]},'read1stAt':{'type':Sequelize[_0x29a2('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x29a2('0x6')]('in',_0x29a2('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x29a2('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x29a2('0x6')]('in',_0x29a2('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x29a2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x737d=['moment','STRING','DATE','ENUM','out','BOOLEAN','sequelize'];(function(_0x48d4ba,_0x227896){var _0x3f2a86=function(_0x3be05e){while(--_0x3be05e){_0x48d4ba['push'](_0x48d4ba['shift']());}};_0x3f2a86(++_0x227896);}(_0x737d,0xbc));var _0xd737=function(_0x22d468,_0x302fd6){_0x22d468=_0x22d468-0x0;var _0x49cb97=_0x737d[_0x22d468];return _0x49cb97;};'use strict';var Sequelize=require(_0xd737('0x0'));var moment=require(_0xd737('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd737('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd737('0x2')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xd737('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xd737('0x4')]('in',_0xd737('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd737('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xd737('0x4')]('in',_0xd737('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd737('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 84f74ef..0a9d1ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f59=['attributes','nolimit','limit','order','sort','where','filters','SmsInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','join','root','server','push','User','fullname','CmContact','Contact','lastName','Messages','createdAt','secret','read','SmsAccount','Owner','get','mkdirSync','Account','N.A.','closedAt','disposition','map','System','firstName','direction','out','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','unlinkSync','zip-dir','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','redis','localhost','./smsInteraction.socket','register','sendStatus','end','status','offset','undefined','count','set','Content-Range','json','update','then','destroy','error','stack','name','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms','query','user','show','params','model','keys','intersection','fields','length','includeAll','merge','options','find','catch','create','body','describe','addMessage','SmsMessage','ids','omit','getMessages'];(function(_0x31a576,_0x424419){var _0x30b1d3=function(_0x4710e8){while(--_0x4710e8){_0x31a576['push'](_0x31a576['shift']());}};_0x30b1d3(++_0x424419);}(_0x3f59,0x12a));var _0x93f5=function(_0x4fa0f9,_0x5027c8){_0x4fa0f9=_0x4fa0f9-0x0;var _0x496eb0=_0x3f59[_0x4fa0f9];return _0x496eb0;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x93f5('0x0'));var moment=require(_0x93f5('0x1'));var BPromise=require(_0x93f5('0x2'));var util=require(_0x93f5('0x3'));var path=require(_0x93f5('0x4'));var ejs=require(_0x93f5('0x5'));var fs=require('fs');var _=require(_0x93f5('0x6'));var Redis=require(_0x93f5('0x7'));var interaction=require(_0x93f5('0x8'));var qs=require(_0x93f5('0x9'));var pdf=require(_0x93f5('0xa'));var logger=require(_0x93f5('0xb'))('api');var config=require(_0x93f5('0xc'));var db=require('../../mysqldb')['db'];config[_0x93f5('0xd')]=_['defaults'](config[_0x93f5('0xd')],{'host':_0x93f5('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x93f5('0xd')]));require(_0x93f5('0xf'))[_0x93f5('0x10')](socket);function respondWithStatusCode(_0x35abaf,_0x4e0b5d){_0x4e0b5d=_0x4e0b5d||0xcc;return function(_0xde944a){if(_0xde944a){return _0x35abaf[_0x93f5('0x11')](_0x4e0b5d);}return _0x35abaf['status'](_0x4e0b5d)[_0x93f5('0x12')]();};}function respondWithResult(_0x2823e2,_0x33b54c){_0x33b54c=_0x33b54c||0xc8;return function(_0x3963ba){if(_0x3963ba){return _0x2823e2[_0x93f5('0x13')](_0x33b54c)['json'](_0x3963ba);}};}function respondWithFilteredResult(_0x153f2c,_0x1a8aff){return function(_0xc511fc){if(_0xc511fc){var _0x17bc09=typeof _0x1a8aff[_0x93f5('0x14')]===_0x93f5('0x15')&&typeof _0x1a8aff['limit']===_0x93f5('0x15');var _0x2960d9=_0xc511fc['count'];var _0x356609=_0x17bc09?0x0:_0x1a8aff[_0x93f5('0x14')];var _0x2b04dc=_0x17bc09?_0xc511fc[_0x93f5('0x16')]:_0x1a8aff[_0x93f5('0x14')]+_0x1a8aff['limit'];var _0x2ba62d;if(_0x2b04dc>=_0x2960d9){_0x2b04dc=_0x2960d9;_0x2ba62d=0xc8;}else{_0x2ba62d=0xce;}_0x153f2c[_0x93f5('0x13')](_0x2ba62d);return _0x153f2c[_0x93f5('0x17')](_0x93f5('0x18'),_0x356609+'-'+_0x2b04dc+'/'+_0x2960d9)[_0x93f5('0x19')](_0xc511fc);}return null;};}function saveUpdates(_0xce8f15){return function(_0x2db45c){if(_0x2db45c){return _0x2db45c[_0x93f5('0x1a')](_0xce8f15)[_0x93f5('0x1b')](function(_0x3f3c79){return _0x3f3c79;});}return null;};}function removeEntity(_0x2615d1){return function(_0x1501fd){if(_0x1501fd){return _0x1501fd[_0x93f5('0x1c')]()[_0x93f5('0x1b')](function(){_0x2615d1[_0x93f5('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x442ed8){return function(_0x1ebb5c){if(!_0x1ebb5c){_0x442ed8[_0x93f5('0x11')](0x194);}return _0x1ebb5c;};}function handleError(_0x57548e,_0x30c5a8){_0x30c5a8=_0x30c5a8||0x1f4;return function(_0x480530){logger[_0x93f5('0x1d')](_0x480530[_0x93f5('0x1e')]);if(_0x480530['name']){delete _0x480530[_0x93f5('0x1f')];}_0x57548e[_0x93f5('0x13')](_0x30c5a8)['send'](_0x480530);};}exports['index']=function(_0x3bb941,_0x3b2ee0){var _0x57fe35={};var _0x35c1fc=_['map'](db[_0x93f5('0x20')][_0x93f5('0x21')],function(_0x5d4fa7){return{'name':_0x5d4fa7[_0x93f5('0x22')],'type':_0x5d4fa7[_0x93f5('0x23')][_0x93f5('0x24')]};});_0x57fe35=qs[_0x93f5('0x25')](_0x35c1fc,_0x3bb941);return interaction[_0x93f5('0x26')](_0x93f5('0x27'),_0x3bb941[_0x93f5('0x28')],_0x3bb941[_0x93f5('0x29')],_0x57fe35,_0x35c1fc)[_0x93f5('0x1b')](respondWithFilteredResult(_0x3b2ee0,_0x57fe35))['catch'](handleError(_0x3b2ee0,null));};exports[_0x93f5('0x2a')]=function(_0x49c3c6,_0x2da7d6){var _0x40f593={'raw':![],'where':{'id':_0x49c3c6[_0x93f5('0x2b')]['id']}},_0x52b509={};_0x52b509[_0x93f5('0x2c')]=_[_0x93f5('0x2d')](db[_0x93f5('0x20')]['rawAttributes']);_0x52b509[_0x93f5('0x28')]=_[_0x93f5('0x2d')](_0x49c3c6[_0x93f5('0x28')]);_0x52b509['filters']=_[_0x93f5('0x2e')](_0x52b509['model'],_0x52b509['query']);_0x40f593['attributes']=_['intersection'](_0x52b509[_0x93f5('0x2c')],qs[_0x93f5('0x2f')](_0x49c3c6['query']['fields']));_0x40f593['attributes']=_0x40f593['attributes'][_0x93f5('0x30')]?_0x40f593['attributes']:_0x52b509[_0x93f5('0x2c')];if(_0x49c3c6[_0x93f5('0x28')][_0x93f5('0x31')]){_0x40f593['include']=[{'all':!![]}];}_0x40f593=_[_0x93f5('0x32')]({},_0x40f593,_0x49c3c6[_0x93f5('0x33')]);return db[_0x93f5('0x20')][_0x93f5('0x34')](_0x40f593)[_0x93f5('0x1b')](handleEntityNotFound(_0x2da7d6,null))['then'](respondWithResult(_0x2da7d6,null))[_0x93f5('0x35')](handleError(_0x2da7d6,null));};exports[_0x93f5('0x36')]=function(_0x15721c,_0x2052fd){return db[_0x93f5('0x20')][_0x93f5('0x36')](_0x15721c[_0x93f5('0x37')],{})[_0x93f5('0x1b')](respondWithResult(_0x2052fd,0xc9))[_0x93f5('0x35')](handleError(_0x2052fd,null));};exports[_0x93f5('0x1a')]=function(_0x5674d4,_0xbbec6f){if(_0x5674d4[_0x93f5('0x37')]['id']){delete _0x5674d4['body']['id'];}return db[_0x93f5('0x20')]['find']({'where':{'id':_0x5674d4[_0x93f5('0x2b')]['id']}})['then'](handleEntityNotFound(_0xbbec6f,null))[_0x93f5('0x1b')](saveUpdates(_0x5674d4['body'],null))[_0x93f5('0x1b')](respondWithResult(_0xbbec6f,null))['catch'](handleError(_0xbbec6f,null));};exports[_0x93f5('0x1c')]=function(_0x4a27d7,_0x32c3e1){return db['SmsInteraction'][_0x93f5('0x34')]({'where':{'id':_0x4a27d7['params']['id']}})[_0x93f5('0x1b')](handleEntityNotFound(_0x32c3e1,null))[_0x93f5('0x1b')](removeEntity(_0x32c3e1,null))['catch'](handleError(_0x32c3e1,null));};exports[_0x93f5('0x38')]=function(_0xf22415,_0x4dad47){return db[_0x93f5('0x20')][_0x93f5('0x38')]()[_0x93f5('0x1b')](respondWithResult(_0x4dad47,null))[_0x93f5('0x35')](handleError(_0x4dad47,null));};exports[_0x93f5('0x39')]=function(_0x2f5c40,_0x5a44dc){return db[_0x93f5('0x3a')][_0x93f5('0x34')]({'where':{'id':_0x2f5c40[_0x93f5('0x2b')]['id']}})[_0x93f5('0x1b')](handleEntityNotFound(_0x5a44dc,null))[_0x93f5('0x1b')](function(_0x334801){if(_0x334801){return _0x334801[_0x93f5('0x39')](_0x2f5c40[_0x93f5('0x37')][_0x93f5('0x3b')],_[_0x93f5('0x3c')](_0x2f5c40[_0x93f5('0x37')],[_0x93f5('0x3b'),'id'])||{});}})[_0x93f5('0x1b')](respondWithResult(_0x5a44dc,null))[_0x93f5('0x35')](handleError(_0x5a44dc,null));};exports[_0x93f5('0x3d')]=function(_0x2f3ccd,_0x5bb33f){var _0x62c23a={'raw':![],'where':{}};var _0x32f94e={};var _0x31faec={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x2f3ccd[_0x93f5('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5bb33f,null))[_0x93f5('0x1b')](function(_0xa85094){if(_0xa85094){_0x32f94e[_0x93f5('0x2c')]=_['keys'](db[_0x93f5('0x3a')]['rawAttributes']);_0x32f94e['query']=_[_0x93f5('0x2d')](_0x2f3ccd[_0x93f5('0x28')]);_0x32f94e['filters']=_[_0x93f5('0x2e')](_0x32f94e[_0x93f5('0x2c')],_0x32f94e[_0x93f5('0x28')]);_0x62c23a['attributes']=_['intersection'](_0x32f94e[_0x93f5('0x2c')],qs[_0x93f5('0x2f')](_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x2f')]));_0x62c23a[_0x93f5('0x3e')]=_0x62c23a['attributes']['length']?_0x62c23a['attributes']:_0x32f94e[_0x93f5('0x2c')];if(!_0x2f3ccd['query']['hasOwnProperty'](_0x93f5('0x3f'))){_0x62c23a[_0x93f5('0x40')]=qs[_0x93f5('0x40')](_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x40')]);_0x62c23a[_0x93f5('0x14')]=qs[_0x93f5('0x14')](_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x14')]);}_0x62c23a[_0x93f5('0x41')]=qs[_0x93f5('0x42')](_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x42')]);_0x62c23a[_0x93f5('0x43')]=qs['filters'](_['pick'](_0x2f3ccd[_0x93f5('0x28')],_0x32f94e[_0x93f5('0x44')]));_0x62c23a[_0x93f5('0x43')][_0x93f5('0x45')]=_0xa85094['id'];if(_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x46')]){_0x62c23a[_0x93f5('0x43')]=_[_0x93f5('0x32')](_0x62c23a[_0x93f5('0x43')],{'$or':_['map'](_0x62c23a[_0x93f5('0x3e')],function(_0x2da666){var _0x45bcc1={};_0x45bcc1[_0x2da666]={'$like':'%'+_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x46')]+'%'};return _0x45bcc1;})});}if(_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x47')]){var _0x28f117=_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x47')]['split'](',');var _0x2df57e={};_0x2df57e[_0x28f117[0x0]]={'$gte':moment(_0x28f117[0x1])[_0x93f5('0x48')](_0x93f5('0x49'))};_0x62c23a[_0x93f5('0x43')]=_['merge'](_0x62c23a[_0x93f5('0x43')],_0x2df57e);}_0x62c23a=_['merge']({},_0x62c23a,_0x2f3ccd['options']);return db[_0x93f5('0x3a')][_0x93f5('0x16')]({'where':_0x62c23a[_0x93f5('0x43')]})[_0x93f5('0x1b')](function(_0x215005){_0x31faec['count']=_0x215005;if(_0x2f3ccd[_0x93f5('0x28')][_0x93f5('0x31')]){_0x62c23a['include']=[{'all':!![]}];}return db[_0x93f5('0x3a')][_0x93f5('0x26')](_0x62c23a);})[_0x93f5('0x1b')](function(_0x1f1415){_0x31faec[_0x93f5('0x4a')]=_0x1f1415;return _0x31faec;});}})[_0x93f5('0x1b')](respondWithFilteredResult(_0x5bb33f,_0x62c23a))[_0x93f5('0x35')](handleError(_0x5bb33f,null));};exports[_0x93f5('0x4b')]=function(_0x7c0bf3,_0x28600a){return db[_0x93f5('0x20')][_0x93f5('0x34')]({'where':{'id':_0x7c0bf3['params']['id']}})['then'](handleEntityNotFound(_0x28600a,null))['then'](function(_0x1235d7){if(_0x1235d7){return _0x1235d7[_0x93f5('0x4c')](_0x7c0bf3[_0x93f5('0x37')]['ids'],_[_0x93f5('0x3c')](_0x7c0bf3[_0x93f5('0x37')],[_0x93f5('0x3b'),'id'])||{})[_0x93f5('0x4d')](function(){return db[_0x93f5('0x4e')][_0x93f5('0x26')]({'attributes':['id','name',_0x93f5('0x4f')],'where':{'id':_0x7c0bf3[_0x93f5('0x37')][_0x93f5('0x3b')]}});})[_0x93f5('0x1b')](function(_0x54b5ba){socket[_0x93f5('0x50')](_0x93f5('0x51'),{'id':Number(_0x7c0bf3[_0x93f5('0x2b')]['id']),'tags':_0x54b5ba||[]});return{'id':Number(_0x7c0bf3[_0x93f5('0x2b')]['id']),'tags':_0x54b5ba||[]};});}})[_0x93f5('0x1b')](respondWithResult(_0x28600a,null))['catch'](handleError(_0x28600a,null));};exports['removeTags']=function(_0x378d11,_0x45aa47){return db[_0x93f5('0x20')][_0x93f5('0x34')]({'where':{'id':_0x378d11[_0x93f5('0x2b')]['id']}})[_0x93f5('0x1b')](handleEntityNotFound(_0x45aa47,null))[_0x93f5('0x1b')](function(_0x3d5c6c){if(_0x3d5c6c){return _0x3d5c6c[_0x93f5('0x52')](_0x378d11[_0x93f5('0x28')][_0x93f5('0x3b')]);}})['then'](respondWithStatusCode(_0x45aa47,null))[_0x93f5('0x35')](handleError(_0x45aa47,null));};exports[_0x93f5('0x53')]=function(_0x408194,_0x10178a){var _0x5b0a7c=moment()[_0x93f5('0x54')]()[_0x93f5('0x55')]();var _0x88a7e7=path[_0x93f5('0x56')](config[_0x93f5('0x57')],_0x93f5('0x58'),'files','tmp');var _0x2fa35a=path[_0x93f5('0x56')](_0x88a7e7,_0x5b0a7c);var _0x51dd8e=util[_0x93f5('0x48')]('transcript-%d-%s.zip',_0x408194[_0x93f5('0x2b')]['id'],_0x5b0a7c);var _0x58cd3d=path['join'](_0x88a7e7,_0x51dd8e);var _0x25a8c8=[];_0x25a8c8[_0x93f5('0x59')]({'model':db[_0x93f5('0x5a')],'as':_0x93f5('0x5a'),'attributes':['id',_0x93f5('0x5b')],'raw':!![]});_0x25a8c8['push']({'model':db[_0x93f5('0x5c')],'as':_0x93f5('0x5d'),'attributes':['id','firstName',_0x93f5('0x5e')],'raw':!![]});var _0x37707e=[{'model':db[_0x93f5('0x3a')],'as':_0x93f5('0x5f'),'attributes':['id','body',_0x93f5('0x60'),'direction',_0x93f5('0x61'),_0x93f5('0x62')],'include':_0x25a8c8}];_0x37707e[_0x93f5('0x59')]({'model':db[_0x93f5('0x63')],'as':'Account','attributes':['id',_0x93f5('0x1f')]});_0x37707e['push']({'model':db['User'],'as':_0x93f5('0x64'),'attributes':['id','fullname']});return db['SmsInteraction'][_0x93f5('0x34')]({'where':{'id':_0x408194[_0x93f5('0x2b')]['id']},'include':_0x37707e})[_0x93f5('0x1b')](handleEntityNotFound(_0x10178a,null))[_0x93f5('0x1b')](function(_0x23ccc8){if(_0x23ccc8){var _0x1e9bd0=_0x23ccc8[_0x93f5('0x65')]({'plain':!![]});fs[_0x93f5('0x66')](_0x2fa35a);var _0x20d823={'channel':'Sms','account':_0x1e9bd0[_0x93f5('0x67')]['name'],'agent':_0x1e9bd0['Owner']?_0x1e9bd0[_0x93f5('0x64')][_0x93f5('0x5b')]:_0x93f5('0x68'),'createdAt':moment(_0x1e9bd0[_0x93f5('0x60')])[_0x93f5('0x48')](_0x93f5('0x49'))[_0x93f5('0x55')](),'closedAt':_0x1e9bd0['closed']?moment(_0x1e9bd0[_0x93f5('0x69')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x93f5('0x55')]():'','disposition':_0x1e9bd0[_0x93f5('0x6a')],'messages':_(_0x1e9bd0[_0x93f5('0x5f')])[_0x93f5('0x46')]({'secret':![]})[_0x93f5('0x6b')](function(_0x142595){return{'date':moment(_0x142595[_0x93f5('0x60')])[_0x93f5('0x48')](_0x93f5('0x49'))[_0x93f5('0x55')](),'sender':_0x142595['direction']==='out'?_0x142595['User']?_0x142595[_0x93f5('0x5a')]['fullname']:_0x93f5('0x6c'):_0x142595[_0x93f5('0x5d')][_0x93f5('0x6d')]+(_0x142595[_0x93f5('0x5d')][_0x93f5('0x5e')]?'\x20'+_0x142595[_0x93f5('0x5d')][_0x93f5('0x5e')]:''),'body':_0x142595[_0x93f5('0x37')],'direction':_0x142595[_0x93f5('0x6e')]===_0x93f5('0x6f')?'A':'C','secret':_0x142595[_0x93f5('0x61')],'read':_0x142595[_0x93f5('0x62')]};})[_0x93f5('0x70')]()};return ejs[_0x93f5('0x71')](path[_0x93f5('0x56')](config[_0x93f5('0x57')],'server',_0x93f5('0x72'),_0x93f5('0x73')),{'interaction':_0x20d823})[_0x93f5('0x1b')](function(_0x8e88a8){var _0x1f17a6=path[_0x93f5('0x56')](_0x2fa35a,_0x93f5('0x74')+_0x1e9bd0['id']+'-'+_0x5b0a7c+_0x93f5('0x75'));var _0x3cfc1c={'path':_0x1f17a6,'channel':'Sms','interactionId':_0x1e9bd0['id']};return pdf['createPdfFromHTML'](_0x8e88a8,_0x3cfc1c);})['then'](function(){return new BPromise(function(_0x5be9f3,_0x2ea0f1){zipdir(_0x2fa35a,{'saveTo':_0x58cd3d},function(_0x2c4ab1,_0x404b0e){if(_0x2c4ab1)return _0x2ea0f1(_0x2c4ab1);return _0x5be9f3(_0x404b0e);});})['then'](function(){return new BPromise(function(_0x23635d,_0x34e1e9){rimraf(_0x2fa35a,function(_0x35f4f0){if(_0x35f4f0)_0x34e1e9(_0x35f4f0);return _0x23635d();});});})[_0x93f5('0x1b')](function(){return _0x10178a[_0x93f5('0x53')](_0x58cd3d,_0x51dd8e,function(_0x3e9d0d){if(_0x3e9d0d){console[_0x93f5('0x76')]('err',_0x3e9d0d);}else{fs[_0x93f5('0x77')](_0x58cd3d);}});});});}else{return _0x10178a['sendStatus'](0xc8);}})[_0x93f5('0x35')](handleError(_0x10178a,null));};
\ No newline at end of file
+var _0xe811=['SmsMessage','ids','omit','getMessages','findOne','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','color','emit','removeTags','download','unix','toString','root','server','files','tmp','join','push','User','fullname','CmContact','firstName','Messages','direction','secret','read','Account','get','mkdirSync','Sms','createdAt','closed','closedAt','disposition','filter','System','Contact','lastName','out','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','ejs','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','limit','count','update','then','destroy','stack','name','send','index','map','SmsInteraction','rawAttributes','fieldName','getOptions','findAll','sms','query','user','catch','show','keys','intersection','attributes','model','includeAll','include','merge','options','find','create','body','params','describe','addMessage'];(function(_0x2d417d,_0x40e0ff){var _0x103155=function(_0x137fab){while(--_0x137fab){_0x2d417d['push'](_0x2d417d['shift']());}};_0x103155(++_0x40e0ff);}(_0xe811,0x1a8));var _0x1e81=function(_0xa68cd9,_0x35b670){_0xa68cd9=_0xa68cd9-0x0;var _0x567abc=_0xe811[_0xa68cd9];return _0x567abc;};'use strict';var rimraf=require(_0x1e81('0x0'));var zipdir=require(_0x1e81('0x1'));var moment=require('moment');var BPromise=require(_0x1e81('0x2'));var util=require(_0x1e81('0x3'));var path=require('path');var ejs=require(_0x1e81('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x1e81('0x5'));var interaction=require(_0x1e81('0x6'));var qs=require(_0x1e81('0x7'));var pdf=require(_0x1e81('0x8'));var logger=require(_0x1e81('0x9'))(_0x1e81('0xa'));var config=require(_0x1e81('0xb'));var db=require(_0x1e81('0xc'))['db'];config[_0x1e81('0xd')]=_[_0x1e81('0xe')](config[_0x1e81('0xd')],{'host':_0x1e81('0xf'),'port':0x18eb});var socket=require(_0x1e81('0x10'))(new Redis(config[_0x1e81('0xd')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x3ba9ec,_0x5c689e){_0x5c689e=_0x5c689e||0xcc;return function(_0x15d432){if(_0x15d432){return _0x3ba9ec[_0x1e81('0x11')](_0x5c689e);}return _0x3ba9ec[_0x1e81('0x12')](_0x5c689e)[_0x1e81('0x13')]();};}function respondWithResult(_0xf698f3,_0x32b0f5){_0x32b0f5=_0x32b0f5||0xc8;return function(_0x586858){if(_0x586858){return _0xf698f3['status'](_0x32b0f5)[_0x1e81('0x14')](_0x586858);}};}function respondWithFilteredResult(_0x5883f7,_0x166d40){return function(_0x111924){if(_0x111924){var _0x42bb6a=typeof _0x166d40[_0x1e81('0x15')]==='undefined'&&typeof _0x166d40[_0x1e81('0x16')]==='undefined';var _0x1375c4=_0x111924[_0x1e81('0x17')];var _0x2c7b6b=_0x42bb6a?0x0:_0x166d40[_0x1e81('0x15')];var _0x11d4e1=_0x42bb6a?_0x111924['count']:_0x166d40['offset']+_0x166d40[_0x1e81('0x16')];var _0x1bf69c;if(_0x11d4e1>=_0x1375c4){_0x11d4e1=_0x1375c4;_0x1bf69c=0xc8;}else{_0x1bf69c=0xce;}_0x5883f7[_0x1e81('0x12')](_0x1bf69c);return _0x5883f7['set']('Content-Range',_0x2c7b6b+'-'+_0x11d4e1+'/'+_0x1375c4)[_0x1e81('0x14')](_0x111924);}return null;};}function saveUpdates(_0x356c55){return function(_0x58876f){if(_0x58876f){return _0x58876f[_0x1e81('0x18')](_0x356c55)[_0x1e81('0x19')](function(_0x240581){return _0x240581;});}return null;};}function removeEntity(_0xfa5146){return function(_0xd4586d){if(_0xd4586d){return _0xd4586d[_0x1e81('0x1a')]()[_0x1e81('0x19')](function(){_0xfa5146[_0x1e81('0x12')](0xcc)[_0x1e81('0x13')]();});}};}function handleEntityNotFound(_0x4300d6){return function(_0x29d9d9){if(!_0x29d9d9){_0x4300d6[_0x1e81('0x11')](0x194);}return _0x29d9d9;};}function handleError(_0x258fe4,_0x4f4ab6){_0x4f4ab6=_0x4f4ab6||0x1f4;return function(_0xf81469){logger['error'](_0xf81469[_0x1e81('0x1b')]);if(_0xf81469[_0x1e81('0x1c')]){delete _0xf81469['name'];}_0x258fe4[_0x1e81('0x12')](_0x4f4ab6)[_0x1e81('0x1d')](_0xf81469);};}exports[_0x1e81('0x1e')]=function(_0x15fad9,_0x3654b1){var _0x7eb085={};var _0x43df7b=_[_0x1e81('0x1f')](db[_0x1e81('0x20')][_0x1e81('0x21')],function(_0x25bad4){return{'name':_0x25bad4[_0x1e81('0x22')],'type':_0x25bad4['type']['key']};});_0x7eb085=qs[_0x1e81('0x23')](_0x43df7b,_0x15fad9);return interaction[_0x1e81('0x24')](_0x1e81('0x25'),_0x15fad9[_0x1e81('0x26')],_0x15fad9[_0x1e81('0x27')],_0x7eb085,_0x43df7b)[_0x1e81('0x19')](respondWithFilteredResult(_0x3654b1,_0x7eb085))[_0x1e81('0x28')](handleError(_0x3654b1,null));};exports[_0x1e81('0x29')]=function(_0x214f34,_0x322a38){var _0x1cf43f={'raw':![],'where':{'id':_0x214f34['params']['id']}},_0x1be496={};_0x1be496['model']=_[_0x1e81('0x2a')](db[_0x1e81('0x20')][_0x1e81('0x21')]);_0x1be496[_0x1e81('0x26')]=_[_0x1e81('0x2a')](_0x214f34[_0x1e81('0x26')]);_0x1be496['filters']=_['intersection'](_0x1be496['model'],_0x1be496[_0x1e81('0x26')]);_0x1cf43f['attributes']=_[_0x1e81('0x2b')](_0x1be496['model'],qs['fields'](_0x214f34[_0x1e81('0x26')]['fields']));_0x1cf43f['attributes']=_0x1cf43f['attributes']['length']?_0x1cf43f[_0x1e81('0x2c')]:_0x1be496[_0x1e81('0x2d')];if(_0x214f34['query'][_0x1e81('0x2e')]){_0x1cf43f[_0x1e81('0x2f')]=[{'all':!![]}];}_0x1cf43f=_[_0x1e81('0x30')]({},_0x1cf43f,_0x214f34[_0x1e81('0x31')]);return db[_0x1e81('0x20')][_0x1e81('0x32')](_0x1cf43f)[_0x1e81('0x19')](handleEntityNotFound(_0x322a38,null))[_0x1e81('0x19')](respondWithResult(_0x322a38,null))[_0x1e81('0x28')](handleError(_0x322a38,null));};exports[_0x1e81('0x33')]=function(_0x365157,_0x27ab12){return db['SmsInteraction'][_0x1e81('0x33')](_0x365157[_0x1e81('0x34')],{})[_0x1e81('0x19')](respondWithResult(_0x27ab12,0xc9))['catch'](handleError(_0x27ab12,null));};exports[_0x1e81('0x18')]=function(_0x130020,_0x543a6d){if(_0x130020[_0x1e81('0x34')]['id']){delete _0x130020[_0x1e81('0x34')]['id'];}return db[_0x1e81('0x20')][_0x1e81('0x32')]({'where':{'id':_0x130020[_0x1e81('0x35')]['id']}})[_0x1e81('0x19')](handleEntityNotFound(_0x543a6d,null))[_0x1e81('0x19')](saveUpdates(_0x130020[_0x1e81('0x34')],null))['then'](respondWithResult(_0x543a6d,null))[_0x1e81('0x28')](handleError(_0x543a6d,null));};exports[_0x1e81('0x1a')]=function(_0x1661c1,_0x3eb832){return db['SmsInteraction'][_0x1e81('0x32')]({'where':{'id':_0x1661c1['params']['id']}})['then'](handleEntityNotFound(_0x3eb832,null))['then'](removeEntity(_0x3eb832,null))[_0x1e81('0x28')](handleError(_0x3eb832,null));};exports[_0x1e81('0x36')]=function(_0xbf9418,_0x55b506){return db[_0x1e81('0x20')][_0x1e81('0x36')]()[_0x1e81('0x19')](respondWithResult(_0x55b506,null))[_0x1e81('0x28')](handleError(_0x55b506,null));};exports[_0x1e81('0x37')]=function(_0x42c761,_0x3a9d20){return db[_0x1e81('0x38')][_0x1e81('0x32')]({'where':{'id':_0x42c761['params']['id']}})[_0x1e81('0x19')](handleEntityNotFound(_0x3a9d20,null))['then'](function(_0x3d4d4f){if(_0x3d4d4f){return _0x3d4d4f['addMessage'](_0x42c761[_0x1e81('0x34')][_0x1e81('0x39')],_[_0x1e81('0x3a')](_0x42c761[_0x1e81('0x34')],[_0x1e81('0x39'),'id'])||{});}})[_0x1e81('0x19')](respondWithResult(_0x3a9d20,null))[_0x1e81('0x28')](handleError(_0x3a9d20,null));};exports[_0x1e81('0x3b')]=function(_0xb7cdc8,_0x3015de){var _0x5acd9e={'raw':![],'where':{}};var _0x1ecfe7={};var _0x3793ca={'count':0x0,'rows':[]};return db[_0x1e81('0x20')][_0x1e81('0x3c')]({'where':{'id':_0xb7cdc8['params']['id']}})[_0x1e81('0x19')](handleEntityNotFound(_0x3015de,null))[_0x1e81('0x19')](function(_0x92732e){if(_0x92732e){_0x1ecfe7[_0x1e81('0x2d')]=_[_0x1e81('0x2a')](db['SmsMessage'][_0x1e81('0x21')]);_0x1ecfe7['query']=_[_0x1e81('0x2a')](_0xb7cdc8['query']);_0x1ecfe7['filters']=_[_0x1e81('0x2b')](_0x1ecfe7['model'],_0x1ecfe7['query']);_0x5acd9e[_0x1e81('0x2c')]=_['intersection'](_0x1ecfe7[_0x1e81('0x2d')],qs[_0x1e81('0x3d')](_0xb7cdc8['query'][_0x1e81('0x3d')]));_0x5acd9e[_0x1e81('0x2c')]=_0x5acd9e[_0x1e81('0x2c')][_0x1e81('0x3e')]?_0x5acd9e['attributes']:_0x1ecfe7['model'];if(!_0xb7cdc8[_0x1e81('0x26')][_0x1e81('0x3f')](_0x1e81('0x40'))){_0x5acd9e[_0x1e81('0x16')]=qs['limit'](_0xb7cdc8[_0x1e81('0x26')]['limit']);_0x5acd9e['offset']=qs[_0x1e81('0x15')](_0xb7cdc8[_0x1e81('0x26')]['offset']);}_0x5acd9e[_0x1e81('0x41')]=qs['sort'](_0xb7cdc8[_0x1e81('0x26')]['sort']);_0x5acd9e[_0x1e81('0x42')]=qs[_0x1e81('0x43')](_[_0x1e81('0x44')](_0xb7cdc8[_0x1e81('0x26')],_0x1ecfe7['filters']));_0x5acd9e[_0x1e81('0x42')]['SmsInteractionId']=_0x92732e['id'];if(_0xb7cdc8[_0x1e81('0x26')]['filter']){_0x5acd9e[_0x1e81('0x42')]=_[_0x1e81('0x30')](_0x5acd9e[_0x1e81('0x42')],{'$or':_[_0x1e81('0x1f')](_0x5acd9e[_0x1e81('0x2c')],function(_0x44a79f){var _0x4a7a49={};_0x4a7a49[_0x44a79f]={'$like':'%'+_0xb7cdc8[_0x1e81('0x26')]['filter']+'%'};return _0x4a7a49;})});}if(_0xb7cdc8[_0x1e81('0x26')][_0x1e81('0x45')]){var _0x4564e0=_0xb7cdc8[_0x1e81('0x26')][_0x1e81('0x45')][_0x1e81('0x46')](',');var _0x27d600={};_0x27d600[_0x4564e0[0x0]]={'$gte':moment(_0x4564e0[0x1])[_0x1e81('0x47')](_0x1e81('0x48'))};_0x5acd9e[_0x1e81('0x42')]=_[_0x1e81('0x30')](_0x5acd9e[_0x1e81('0x42')],_0x27d600);}_0x5acd9e=_['merge']({},_0x5acd9e,_0xb7cdc8[_0x1e81('0x31')]);return db[_0x1e81('0x38')][_0x1e81('0x17')]({'where':_0x5acd9e['where']})['then'](function(_0x370607){_0x3793ca[_0x1e81('0x17')]=_0x370607;if(_0xb7cdc8[_0x1e81('0x26')][_0x1e81('0x2e')]){_0x5acd9e[_0x1e81('0x2f')]=[{'all':!![]}];}return db[_0x1e81('0x38')]['findAll'](_0x5acd9e);})[_0x1e81('0x19')](function(_0x3ebdfb){_0x3793ca['rows']=_0x3ebdfb;return _0x3793ca;});}})[_0x1e81('0x19')](respondWithFilteredResult(_0x3015de,_0x5acd9e))[_0x1e81('0x28')](handleError(_0x3015de,null));};exports[_0x1e81('0x49')]=function(_0x44c3c2,_0x4617bb){return db[_0x1e81('0x20')][_0x1e81('0x32')]({'where':{'id':_0x44c3c2[_0x1e81('0x35')]['id']}})[_0x1e81('0x19')](handleEntityNotFound(_0x4617bb,null))[_0x1e81('0x19')](function(_0x362c24){if(_0x362c24){return _0x362c24[_0x1e81('0x4a')](_0x44c3c2[_0x1e81('0x34')][_0x1e81('0x39')],_[_0x1e81('0x3a')](_0x44c3c2[_0x1e81('0x34')],['ids','id'])||{})[_0x1e81('0x4b')](function(){return db[_0x1e81('0x4c')][_0x1e81('0x24')]({'attributes':['id',_0x1e81('0x1c'),_0x1e81('0x4d')],'where':{'id':_0x44c3c2['body'][_0x1e81('0x39')]}});})[_0x1e81('0x19')](function(_0x3152ed){socket[_0x1e81('0x4e')]('smsInteractionTags:save',{'id':Number(_0x44c3c2[_0x1e81('0x35')]['id']),'tags':_0x3152ed||[]});return{'id':Number(_0x44c3c2['params']['id']),'tags':_0x3152ed||[]};});}})[_0x1e81('0x19')](respondWithResult(_0x4617bb,null))['catch'](handleError(_0x4617bb,null));};exports[_0x1e81('0x4f')]=function(_0x4abf05,_0x32cae4){return db[_0x1e81('0x20')][_0x1e81('0x32')]({'where':{'id':_0x4abf05['params']['id']}})[_0x1e81('0x19')](handleEntityNotFound(_0x32cae4,null))[_0x1e81('0x19')](function(_0x1bfcc2){if(_0x1bfcc2){return _0x1bfcc2[_0x1e81('0x4f')](_0x4abf05[_0x1e81('0x26')][_0x1e81('0x39')]);}})[_0x1e81('0x19')](respondWithStatusCode(_0x32cae4,null))[_0x1e81('0x28')](handleError(_0x32cae4,null));};exports[_0x1e81('0x50')]=function(_0x27db0b,_0x53a9a8){var _0x4974a5=moment()[_0x1e81('0x51')]()[_0x1e81('0x52')]();var _0x21c508=path['join'](config[_0x1e81('0x53')],_0x1e81('0x54'),_0x1e81('0x55'),_0x1e81('0x56'));var _0x2eae38=path[_0x1e81('0x57')](_0x21c508,_0x4974a5);var _0x584d36=util['format']('transcript-%d-%s.zip',_0x27db0b[_0x1e81('0x35')]['id'],_0x4974a5);var _0x2e6bf1=path[_0x1e81('0x57')](_0x21c508,_0x584d36);var _0x209a0a=[];_0x209a0a[_0x1e81('0x58')]({'model':db[_0x1e81('0x59')],'as':'User','attributes':['id',_0x1e81('0x5a')],'raw':!![]});_0x209a0a['push']({'model':db[_0x1e81('0x5b')],'as':'Contact','attributes':['id',_0x1e81('0x5c'),'lastName'],'raw':!![]});var _0x13fda5=[{'model':db[_0x1e81('0x38')],'as':_0x1e81('0x5d'),'attributes':['id',_0x1e81('0x34'),'createdAt',_0x1e81('0x5e'),_0x1e81('0x5f'),_0x1e81('0x60')],'include':_0x209a0a}];_0x13fda5['push']({'model':db['SmsAccount'],'as':_0x1e81('0x61'),'attributes':['id',_0x1e81('0x1c')]});_0x13fda5[_0x1e81('0x58')]({'model':db[_0x1e81('0x59')],'as':'Owner','attributes':['id',_0x1e81('0x5a')]});return db['SmsInteraction'][_0x1e81('0x32')]({'where':{'id':_0x27db0b[_0x1e81('0x35')]['id']},'include':_0x13fda5})[_0x1e81('0x19')](handleEntityNotFound(_0x53a9a8,null))[_0x1e81('0x19')](function(_0x2a49d3){if(_0x2a49d3){var _0x1654d4=_0x2a49d3[_0x1e81('0x62')]({'plain':!![]});fs[_0x1e81('0x63')](_0x2eae38);var _0x429704={'channel':_0x1e81('0x64'),'account':_0x1654d4[_0x1e81('0x61')]['name'],'agent':_0x1654d4['Owner']?_0x1654d4['Owner'][_0x1e81('0x5a')]:'N.A.','createdAt':moment(_0x1654d4[_0x1e81('0x65')])[_0x1e81('0x47')](_0x1e81('0x48'))['toString'](),'closedAt':_0x1654d4[_0x1e81('0x66')]?moment(_0x1654d4[_0x1e81('0x67')])['format'](_0x1e81('0x48'))[_0x1e81('0x52')]():'','disposition':_0x1654d4[_0x1e81('0x68')],'messages':_(_0x1654d4[_0x1e81('0x5d')])[_0x1e81('0x69')]({'secret':![]})['map'](function(_0x186303){return{'date':moment(_0x186303[_0x1e81('0x65')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x1e81('0x52')](),'sender':_0x186303[_0x1e81('0x5e')]==='out'?_0x186303[_0x1e81('0x59')]?_0x186303[_0x1e81('0x59')][_0x1e81('0x5a')]:_0x1e81('0x6a'):_0x186303[_0x1e81('0x6b')][_0x1e81('0x5c')]+(_0x186303[_0x1e81('0x6b')][_0x1e81('0x6c')]?'\x20'+_0x186303['Contact']['lastName']:''),'body':_0x186303[_0x1e81('0x34')],'direction':_0x186303[_0x1e81('0x5e')]===_0x1e81('0x6d')?'A':'C','secret':_0x186303[_0x1e81('0x5f')],'read':_0x186303[_0x1e81('0x60')]};})[_0x1e81('0x6e')]()};return ejs[_0x1e81('0x6f')](path[_0x1e81('0x57')](config[_0x1e81('0x53')],_0x1e81('0x54'),_0x1e81('0x70'),_0x1e81('0x71')),{'interaction':_0x429704})['then'](function(_0x1b8804){var _0x54ea9d=path['join'](_0x2eae38,_0x1e81('0x72')+_0x1654d4['id']+'-'+_0x4974a5+_0x1e81('0x73'));var _0x34f0dc={'path':_0x54ea9d,'channel':_0x1e81('0x64'),'interactionId':_0x1654d4['id']};return pdf[_0x1e81('0x74')](_0x1b8804,_0x34f0dc);})[_0x1e81('0x19')](function(){return new BPromise(function(_0x13ade9,_0x5e863a){zipdir(_0x2eae38,{'saveTo':_0x2e6bf1},function(_0x17efc5,_0x186634){if(_0x17efc5)return _0x5e863a(_0x17efc5);return _0x13ade9(_0x186634);});})[_0x1e81('0x19')](function(){return new BPromise(function(_0x1bd9db,_0x281050){rimraf(_0x2eae38,function(_0x1c6f3b){if(_0x1c6f3b)_0x281050(_0x1c6f3b);return _0x1bd9db();});});})[_0x1e81('0x19')](function(){return _0x53a9a8['download'](_0x2e6bf1,_0x584d36,function(_0x1fb3b2){if(_0x1fb3b2){console[_0x1e81('0x75')](_0x1e81('0x76'),_0x1fb3b2);}else{fs[_0x1e81('0x77')](_0x2e6bf1);}});});});}else{return _0x53a9a8[_0x1e81('0x11')](0xc8);}})['catch'](handleError(_0x53a9a8,null));};
\ No newline at end of file
index 90f5622..6fccb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['SmsInteraction','SmsMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x2683a6,_0x4c238a){var _0x2f809a=function(_0x30f73e){while(--_0x30f73e){_0x2683a6['push'](_0x2683a6['shift']());}};_0x2f809a(++_0x4c238a);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x2966c4,_0x2a71de){_0x2966c4=_0x2966c4-0x0;var _0x4ee439=_0xd7d1[_0x2966c4];return _0x4ee439;};'use strict';var EventEmitter=require(_0x1d7d('0x0'));var SmsInteraction=require(_0x1d7d('0x1'))['db'][_0x1d7d('0x2')];var SmsMessage=require(_0x1d7d('0x1'))['db'][_0x1d7d('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x1d7d('0x4')](0x0);var events={'afterCreate':_0x1d7d('0x5'),'afterUpdate':_0x1d7d('0x6'),'afterDestroy':_0x1d7d('0x7')};function emitEvent(_0x1adb6b){return function(_0x3c0839,_0x1a2564,_0x14b2b9){_0x3c0839['getUsers']({'attributes':['id'],'raw':!![]})[_0x1d7d('0x8')](function(_0x1aa456){_0x3c0839[_0x1d7d('0x9')](_0x1d7d('0xa'),_0x1aa456[_0x1d7d('0xb')](function(_0x268732){return{'id':_0x268732['id']};}));return SmsMessage[_0x1d7d('0xc')]({'where':{'SmsInteractionId':_0x3c0839['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1d7d('0x8')](function(_0x1ad06f){_0x3c0839[_0x1d7d('0x9')](_0x1d7d('0xd'),_0x1ad06f['length']);SmsInteractionEvents[_0x1d7d('0xe')](_0x1adb6b+':'+_0x3c0839['id'],_0x3c0839);SmsInteractionEvents['emit'](_0x1adb6b,_0x3c0839);_0x14b2b9(null);})[_0x1d7d('0xf')](_0x14b2b9(null));};}for(var e in events){if(events[_0x1d7d('0x10')](e)){var event=events[e];SmsInteraction[_0x1d7d('0x11')](e,emitEvent(event));}}module[_0x1d7d('0x12')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x9582=['../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','update','remove','getUsers','then','setDataValue','length','emit','catch','hasOwnProperty','exports','events'];(function(_0x438547,_0x370630){var _0xd0fb36=function(_0x182f39){while(--_0x182f39){_0x438547['push'](_0x438547['shift']());}};_0xd0fb36(++_0x370630);}(_0x9582,0x95));var _0x2958=function(_0x31cf08,_0x145976){_0x31cf08=_0x31cf08-0x0;var _0x1b6933=_0x9582[_0x31cf08];return _0x1b6933;};'use strict';var EventEmitter=require(_0x2958('0x0'));var SmsInteraction=require(_0x2958('0x1'))['db'][_0x2958('0x2')];var SmsMessage=require(_0x2958('0x1'))['db'][_0x2958('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x2958('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2958('0x5'),'afterDestroy':_0x2958('0x6')};function emitEvent(_0x136c77){return function(_0x195138,_0x2f15c9,_0xbde128){_0x195138[_0x2958('0x7')]({'attributes':['id'],'raw':!![]})[_0x2958('0x8')](function(_0xa385ec){_0x195138[_0x2958('0x9')]('Users',_0xa385ec['map'](function(_0x313702){return{'id':_0x313702['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x195138['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2958('0x8')](function(_0x51e460){_0x195138[_0x2958('0x9')]('unreadMessages',_0x51e460[_0x2958('0xa')]);SmsInteractionEvents[_0x2958('0xb')](_0x136c77+':'+_0x195138['id'],_0x195138);SmsInteractionEvents[_0x2958('0xb')](_0x136c77,_0x195138);_0xbde128(null);})[_0x2958('0xc')](_0xbde128(null));};}for(var e in events){if(events[_0x2958('0xd')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x2958('0xe')]=SmsInteractionEvents;
\ No newline at end of file
index d6361ef..22059bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c2=['request-promise','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4dba4a,_0x2f82aa){var _0x26b407=function(_0x28d476){while(--_0x28d476){_0x4dba4a['push'](_0x4dba4a['shift']());}};_0x26b407(++_0x2f82aa);}(_0x39c2,0x170));var _0x239c=function(_0x372f9a,_0x157159){_0x372f9a=_0x372f9a-0x0;var _0x3b93d3=_0x39c2[_0x372f9a];return _0x3b93d3;};'use strict';var _=require(_0x239c('0x0'));var util=require(_0x239c('0x1'));var logger=require(_0x239c('0x2'))(_0x239c('0x3'));var moment=require(_0x239c('0x4'));var BPromise=require(_0x239c('0x5'));var rp=require(_0x239c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x239c('0x7'));var attributes=require(_0x239c('0x8'));module[_0x239c('0x9')]=function(_0x391328,_0x26cab1){return _0x391328[_0x239c('0xa')](_0x239c('0xb'),attributes,{'tableName':_0x239c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1b60b0,_0x2a84e0,_0x23a620){if(_0x1b60b0[_0x239c('0xd')](_0x239c('0xe'))){_0x1b60b0[_0x239c('0xf')]=moment()['format'](_0x239c('0x10'));}_0x23a620(null,_0x1b60b0);}}});};
\ No newline at end of file
+var _0xede5=['closed','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./smsInteraction.attributes','define'];(function(_0x3cfb0d,_0x4df584){var _0x3486b4=function(_0x1b0939){while(--_0x1b0939){_0x3cfb0d['push'](_0x3cfb0d['shift']());}};_0x3486b4(++_0x4df584);}(_0xede5,0x120));var _0x5ede=function(_0x282764,_0x9b5de0){_0x282764=_0x282764-0x0;var _0x19feac=_0xede5[_0x282764];return _0x19feac;};'use strict';var _=require(_0x5ede('0x0'));var util=require(_0x5ede('0x1'));var logger=require('../../config/logger')(_0x5ede('0x2'));var moment=require(_0x5ede('0x3'));var BPromise=require(_0x5ede('0x4'));var rp=require(_0x5ede('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5ede('0x6'));var attributes=require(_0x5ede('0x7'));module['exports']=function(_0x29b3a6,_0x4d185c){return _0x29b3a6[_0x5ede('0x8')]('SmsInteraction',attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3d1a8a,_0x25921e,_0x2a0004){if(_0x3d1a8a['changed'](_0x5ede('0x9'))){_0x3d1a8a['closedAt']=moment()['format'](_0x5ede('0xa'));}_0x2a0004(null,_0x3d1a8a);}}});};
\ No newline at end of file
index 4a9e796..c1088db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bfb=['SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateSmsInteraction','update','body','options','raw','where','attributes','limit','then','AddTagsToSmsInteraction','SmsInteraction','find','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','info'];(function(_0x2e676b,_0x3a0790){var _0x1cc8ed=function(_0xdc3e1c){while(--_0xdc3e1c){_0x2e676b['push'](_0x2e676b['shift']());}};_0x1cc8ed(++_0x3a0790);}(_0x2bfb,0x12a));var _0xb2bf=function(_0x5e4481,_0x2b619e){_0x5e4481=_0x5e4481-0x0;var _0x5d3a5d=_0x2bfb[_0x5e4481];return _0x5d3a5d;};'use strict';var _=require(_0xb2bf('0x0'));var util=require(_0xb2bf('0x1'));var moment=require(_0xb2bf('0x2'));var BPromise=require('bluebird');var rs=require(_0xb2bf('0x3'));var fs=require('fs');var Redis=require(_0xb2bf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb2bf('0x5'));var logger=require('../../config/logger')(_0xb2bf('0x6'));var config=require(_0xb2bf('0x7'));var jayson=require(_0xb2bf('0x8'));var client=jayson[_0xb2bf('0x9')][_0xb2bf('0xa')]({'port':0x232a});config['redis']=_[_0xb2bf('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb2bf('0xc')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0xc7c0c3,_0x27e5a5,_0x1c8c7f){return new BPromise(function(_0x4047e7,_0x49bb32){return client['request'](_0xc7c0c3,_0x1c8c7f)['then'](function(_0x176f45){logger[_0xb2bf('0xd')](_0xb2bf('0xe'),_0x27e5a5,'request\x20sent');logger[_0xb2bf('0xf')](_0xb2bf('0x10'),_0x27e5a5,_0xb2bf('0x11'),JSON[_0xb2bf('0x12')](_0x176f45));if(_0x176f45['error']){if(_0x176f45[_0xb2bf('0x13')]['code']===0x1f4){logger[_0xb2bf('0x13')](_0xb2bf('0xe'),_0x27e5a5,_0x176f45[_0xb2bf('0x13')][_0xb2bf('0x14')]);return _0x49bb32(_0x176f45['error']['message']);}logger['error'](_0xb2bf('0xe'),_0x27e5a5,_0x176f45[_0xb2bf('0x13')]['message']);return _0x4047e7(_0x176f45[_0xb2bf('0x13')][_0xb2bf('0x14')]);}else{logger[_0xb2bf('0xd')](_0xb2bf('0xe'),_0x27e5a5,_0xb2bf('0x11'));_0x4047e7(_0x176f45[_0xb2bf('0x15')][_0xb2bf('0x14')]);}})[_0xb2bf('0x16')](function(_0x4d9883){logger['error'](_0xb2bf('0xe'),_0x27e5a5,_0x4d9883);_0x49bb32(_0x4d9883);});});}exports[_0xb2bf('0x17')]=function(_0x21482c){var _0xde80ed=this;return new Promise(function(_0x3ad25a,_0x43a2dd){return db['SmsInteraction'][_0xb2bf('0x18')](_0x21482c[_0xb2bf('0x19')],{'raw':_0x21482c[_0xb2bf('0x1a')]?_0x21482c[_0xb2bf('0x1a')][_0xb2bf('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21482c[_0xb2bf('0x1a')]?_0x21482c['options'][_0xb2bf('0x1c')]||null:null,'attributes':_0x21482c[_0xb2bf('0x1a')]?_0x21482c[_0xb2bf('0x1a')][_0xb2bf('0x1d')]||null:null,'limit':_0x21482c[_0xb2bf('0x1a')]?_0x21482c['options'][_0xb2bf('0x1e')]||null:null})[_0xb2bf('0x1f')](function(_0x40797c){logger['info'](_0xb2bf('0x17'),_0x21482c);logger[_0xb2bf('0xf')](_0xb2bf('0x17'),_0x21482c,JSON[_0xb2bf('0x12')](_0x40797c));_0x3ad25a(_0x40797c);})[_0xb2bf('0x16')](function(_0x52243b){logger[_0xb2bf('0x13')](_0xb2bf('0x17'),_0x52243b[_0xb2bf('0x14')],_0x21482c);_0x43a2dd(_0xde80ed[_0xb2bf('0x13')](0x1f4,_0x52243b[_0xb2bf('0x14')]));});});};exports[_0xb2bf('0x20')]=function(_0x2ed99d){return new Promise(function(_0x548171,_0x419fdf){return db[_0xb2bf('0x21')][_0xb2bf('0x22')]({'where':_0x2ed99d[_0xb2bf('0x1a')]?_0x2ed99d[_0xb2bf('0x1a')][_0xb2bf('0x1c')]||null:null})['then'](function(_0xc51f77){if(_0xc51f77){return _0xc51f77['addTags'](_0x2ed99d['body'][_0xb2bf('0x23')],_[_0xb2bf('0x24')](_0x2ed99d['body'],['ids','id'])||{});}})[_0xb2bf('0x25')](function(_0x590b77){logger[_0xb2bf('0xd')]('AddTags',_0x2ed99d);logger[_0xb2bf('0xf')](_0xb2bf('0x26'),_0x2ed99d,JSON['stringify'](_0x590b77));_0x548171(_0x590b77);})[_0xb2bf('0x16')](function(_0x1abaa2){logger[_0xb2bf('0x13')]('AddTags',_0x1abaa2['message'],_0x2ed99d);_0x419fdf(_this[_0xb2bf('0x13')](0x1f4,_0x1abaa2[_0xb2bf('0x14')]));});});};
\ No newline at end of file
+var _0xdc48=['UpdateSmsInteraction','SmsInteraction','body','options','raw','attributes','limit','where','addTags','ids','omit','spread','AddTags','debug','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','SmsInteraction,\x20%s,\x20%s','message','result','catch'];(function(_0x423c08,_0x2dfffa){var _0x114f4d=function(_0x55b844){while(--_0x55b844){_0x423c08['push'](_0x423c08['shift']());}};_0x114f4d(++_0x2dfffa);}(_0xdc48,0x83));var _0x8dc4=function(_0x32d90a,_0x4ef47f){_0x32d90a=_0x32d90a-0x0;var _0x37e587=_0xdc48[_0x32d90a];return _0x37e587;};'use strict';var _=require(_0x8dc4('0x0'));var util=require('util');var moment=require(_0x8dc4('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8dc4('0x2'));var db=require(_0x8dc4('0x3'))['db'];var utils=require(_0x8dc4('0x4'));var logger=require(_0x8dc4('0x5'))(_0x8dc4('0x6'));var config=require(_0x8dc4('0x7'));var jayson=require(_0x8dc4('0x8'));var client=jayson[_0x8dc4('0x9')][_0x8dc4('0xa')]({'port':0x232a});config[_0x8dc4('0xb')]=_['defaults'](config['redis'],{'host':_0x8dc4('0xc'),'port':0x18eb});var socket=require(_0x8dc4('0xd'))(new Redis(config[_0x8dc4('0xb')]));require('./smsInteraction.socket')[_0x8dc4('0xe')](socket);function respondWithRpcPromise(_0xe7713f,_0x4b9ea6,_0x484af0){return new BPromise(function(_0x43de7a,_0x5e66d9){return client['request'](_0xe7713f,_0x484af0)[_0x8dc4('0xf')](function(_0x23990a){logger[_0x8dc4('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x4b9ea6,'request\x20sent');logger['debug'](_0x8dc4('0x11'),_0x4b9ea6,_0x8dc4('0x12'),JSON[_0x8dc4('0x13')](_0x23990a));if(_0x23990a[_0x8dc4('0x14')]){if(_0x23990a[_0x8dc4('0x14')]['code']===0x1f4){logger['error'](_0x8dc4('0x15'),_0x4b9ea6,_0x23990a[_0x8dc4('0x14')][_0x8dc4('0x16')]);return _0x5e66d9(_0x23990a[_0x8dc4('0x14')][_0x8dc4('0x16')]);}logger[_0x8dc4('0x14')](_0x8dc4('0x15'),_0x4b9ea6,_0x23990a['error'][_0x8dc4('0x16')]);return _0x43de7a(_0x23990a[_0x8dc4('0x14')][_0x8dc4('0x16')]);}else{logger[_0x8dc4('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x4b9ea6,_0x8dc4('0x12'));_0x43de7a(_0x23990a[_0x8dc4('0x17')][_0x8dc4('0x16')]);}})[_0x8dc4('0x18')](function(_0x331de9){logger[_0x8dc4('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x4b9ea6,_0x331de9);_0x5e66d9(_0x331de9);});});}exports[_0x8dc4('0x19')]=function(_0x222339){var _0x59dc1d=this;return new Promise(function(_0x7bd01f,_0xe30eae){return db[_0x8dc4('0x1a')]['update'](_0x222339[_0x8dc4('0x1b')],{'raw':_0x222339[_0x8dc4('0x1c')]?_0x222339[_0x8dc4('0x1c')][_0x8dc4('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x222339['options']?_0x222339[_0x8dc4('0x1c')]['where']||null:null,'attributes':_0x222339[_0x8dc4('0x1c')]?_0x222339[_0x8dc4('0x1c')][_0x8dc4('0x1e')]||null:null,'limit':_0x222339[_0x8dc4('0x1c')]?_0x222339[_0x8dc4('0x1c')][_0x8dc4('0x1f')]||null:null})[_0x8dc4('0xf')](function(_0x21a571){logger[_0x8dc4('0x10')](_0x8dc4('0x19'),_0x222339);logger['debug'](_0x8dc4('0x19'),_0x222339,JSON['stringify'](_0x21a571));_0x7bd01f(_0x21a571);})[_0x8dc4('0x18')](function(_0x70bc57){logger[_0x8dc4('0x14')]('UpdateSmsInteraction',_0x70bc57[_0x8dc4('0x16')],_0x222339);_0xe30eae(_0x59dc1d[_0x8dc4('0x14')](0x1f4,_0x70bc57[_0x8dc4('0x16')]));});});};exports['AddTagsToSmsInteraction']=function(_0x58ec58){return new Promise(function(_0x15bdc2,_0x3e8940){return db[_0x8dc4('0x1a')]['find']({'where':_0x58ec58[_0x8dc4('0x1c')]?_0x58ec58[_0x8dc4('0x1c')][_0x8dc4('0x20')]||null:null})[_0x8dc4('0xf')](function(_0x56e45c){if(_0x56e45c){return _0x56e45c[_0x8dc4('0x21')](_0x58ec58[_0x8dc4('0x1b')][_0x8dc4('0x22')],_[_0x8dc4('0x23')](_0x58ec58[_0x8dc4('0x1b')],[_0x8dc4('0x22'),'id'])||{});}})[_0x8dc4('0x24')](function(_0x201e3b){logger[_0x8dc4('0x10')](_0x8dc4('0x25'),_0x58ec58);logger[_0x8dc4('0x26')](_0x8dc4('0x25'),_0x58ec58,JSON[_0x8dc4('0x13')](_0x201e3b));_0x15bdc2(_0x201e3b);})['catch'](function(_0x421fdd){logger[_0x8dc4('0x14')]('AddTags',_0x421fdd[_0x8dc4('0x16')],_0x58ec58);_0x3e8940(_this[_0x8dc4('0x14')](0x1f4,_0x421fdd[_0x8dc4('0x16')]));});});};
\ No newline at end of file
index f4482d4..6a6eb0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb91=['remove','update','emit','removeListener','register','length','./smsInteraction.events','save'];(function(_0x325645,_0x3776f0){var _0x108863=function(_0x2fc21c){while(--_0x2fc21c){_0x325645['push'](_0x325645['shift']());}};_0x108863(++_0x3776f0);}(_0xfb91,0x19e));var _0x1fb9=function(_0x385b74,_0x5ed6b0){_0x385b74=_0x385b74-0x0;var _0x58a475=_0xfb91[_0x385b74];return _0x58a475;};'use strict';var SmsInteractionEvents=require(_0x1fb9('0x0'));var events=[_0x1fb9('0x1'),_0x1fb9('0x2'),_0x1fb9('0x3')];function createListener(_0x39bfb0,_0x5e5554){return function(_0x3ca6b2){_0x5e5554[_0x1fb9('0x4')](_0x39bfb0,_0x3ca6b2);};}function removeListener(_0x22f7d7,_0x84436){return function(){SmsInteractionEvents[_0x1fb9('0x5')](_0x22f7d7,_0x84436);};}exports[_0x1fb9('0x6')]=function(_0x46aa5e){for(var _0x4c8c35=0x0,_0x4f82e7=events[_0x1fb9('0x7')];_0x4c8c35<_0x4f82e7;_0x4c8c35++){var _0x5a1a13=events[_0x4c8c35];var _0x2e6044=createListener('smsInteraction:'+_0x5a1a13,_0x46aa5e);SmsInteractionEvents['on'](_0x5a1a13,_0x2e6044);}};
\ No newline at end of file
+var _0x4736=['length','smsInteraction:','./smsInteraction.events','save','emit','removeListener','register'];(function(_0x5f5949,_0x513010){var _0x4cbcf0=function(_0x3f573f){while(--_0x3f573f){_0x5f5949['push'](_0x5f5949['shift']());}};_0x4cbcf0(++_0x513010);}(_0x4736,0xc6));var _0x6473=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4736[_0x3dd15e];return _0x231fd0;};'use strict';var SmsInteractionEvents=require(_0x6473('0x0'));var events=[_0x6473('0x1'),'remove','update'];function createListener(_0x2f5b4a,_0x21a0f6){return function(_0x2b553a){_0x21a0f6[_0x6473('0x2')](_0x2f5b4a,_0x2b553a);};}function removeListener(_0x13d08d,_0x40ec58){return function(){SmsInteractionEvents[_0x6473('0x3')](_0x13d08d,_0x40ec58);};}exports[_0x6473('0x4')]=function(_0xdc3600){for(var _0x2c0ead=0x0,_0x5d9d1f=events[_0x6473('0x5')];_0x2c0ead<_0x5d9d1f;_0x2c0ead++){var _0x58fe5b=events[_0x2c0ead];var _0x34e7b2=createListener(_0x6473('0x6')+_0x58fe5b,_0xdc3600);SmsInteractionEvents['on'](_0x58fe5b,_0x34e7b2);}};
\ No newline at end of file
index 294ff96..efcd5cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50d1=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','sms','smsmessage:create','create','post','/:id/status','status','update','put','/:id/accept','/:id/reject','delete','exports'];(function(_0x3e9304,_0x35f0e2){var _0x5a645f=function(_0x221d38){while(--_0x221d38){_0x3e9304['push'](_0x3e9304['shift']());}};_0x5a645f(++_0x35f0e2);}(_0x50d1,0xf3));var _0x150d=function(_0x306616,_0x326ff8){_0x306616=_0x306616-0x0;var _0x5a0714=_0x50d1[_0x306616];return _0x5a0714;};'use strict';var multer=require('multer');var util=require(_0x150d('0x0'));var path=require(_0x150d('0x1'));var timeout=require(_0x150d('0x2'));var express=require('express');var router=express[_0x150d('0x3')]();var fs_extra=require(_0x150d('0x4'));var auth=require(_0x150d('0x5'));var interaction=require(_0x150d('0x6'));var config=require(_0x150d('0x7'));var controller=require('./smsMessage.controller');router['get']('/',auth[_0x150d('0x8')](),controller[_0x150d('0x9')]);router[_0x150d('0xa')](_0x150d('0xb'),auth[_0x150d('0x8')](),controller[_0x150d('0xc')]);router[_0x150d('0xa')](_0x150d('0xd'),auth[_0x150d('0x8')](),controller[_0x150d('0xe')]);router['post']('/',auth[_0x150d('0x8')](),interaction['tracked'](_0x150d('0xf'),_0x150d('0x10')),controller[_0x150d('0x11')]);router[_0x150d('0x12')](_0x150d('0x13'),controller[_0x150d('0x14')]);router['put'](_0x150d('0xd'),auth[_0x150d('0x8')](),controller[_0x150d('0x15')]);router[_0x150d('0x16')](_0x150d('0x17'),auth[_0x150d('0x8')](),controller['accept']);router[_0x150d('0x16')](_0x150d('0x18'),auth[_0x150d('0x8')](),controller['reject']);router[_0x150d('0x19')](_0x150d('0xd'),auth[_0x150d('0x8')](),controller['destroy']);module[_0x150d('0x1a')]=router;
\ No newline at end of file
+var _0x3f9b=['Router','../../config/environment','./smsMessage.controller','get','index','/describe','isAuthenticated','describe','show','smsmessage:create','create','post','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','path','express'];(function(_0x4b45d8,_0x40c917){var _0x1b3ddf=function(_0xe50a8e){while(--_0xe50a8e){_0x4b45d8['push'](_0x4b45d8['shift']());}};_0x1b3ddf(++_0x40c917);}(_0x3f9b,0x11e));var _0xb3f9=function(_0x2247c1,_0x17bf66){_0x2247c1=_0x2247c1-0x0;var _0x5617d7=_0x3f9b[_0x2247c1];return _0x5617d7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb3f9('0x0'));var timeout=require('connect-timeout');var express=require(_0xb3f9('0x1'));var router=express[_0xb3f9('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb3f9('0x3'));var controller=require(_0xb3f9('0x4'));router[_0xb3f9('0x5')]('/',auth['isAuthenticated'](),controller[_0xb3f9('0x6')]);router[_0xb3f9('0x5')](_0xb3f9('0x7'),auth[_0xb3f9('0x8')](),controller[_0xb3f9('0x9')]);router['get']('/:id',auth[_0xb3f9('0x8')](),controller[_0xb3f9('0xa')]);router['post']('/',auth[_0xb3f9('0x8')](),interaction['tracked']('sms',_0xb3f9('0xb')),controller[_0xb3f9('0xc')]);router[_0xb3f9('0xd')](_0xb3f9('0xe'),controller[_0xb3f9('0xf')]);router[_0xb3f9('0x10')]('/:id',auth[_0xb3f9('0x8')](),controller[_0xb3f9('0x11')]);router[_0xb3f9('0x10')](_0xb3f9('0x12'),auth[_0xb3f9('0x8')](),controller[_0xb3f9('0x13')]);router[_0xb3f9('0x10')](_0xb3f9('0x14'),auth['isAuthenticated'](),controller[_0xb3f9('0x15')]);router['delete']('/:id',auth[_0xb3f9('0x8')](),controller[_0xb3f9('0x16')]);module[_0xb3f9('0x17')]=router;
\ No newline at end of file
index 6c039a2..c2babe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec96=['STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xec96,0x119));var _0x6ec9=function(_0x118210,_0xe90c88){_0x118210=_0x118210-0x0;var _0xd2ab46=_0xec96[_0x118210];return _0xd2ab46;};'use strict';var Sequelize=require(_0x6ec9('0x0'));module[_0x6ec9('0x1')]={'body':{'type':Sequelize[_0x6ec9('0x2')](_0x6ec9('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x6ec9('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6ec9('0x5')]('in',_0x6ec9('0x6')),'defaultValue':_0x6ec9('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x6ec9('0x7')]},'readAt':{'type':Sequelize[_0x6ec9('0x8')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x6ec9('0x7')]},'providerResponse':{'type':Sequelize[_0x6ec9('0x2')]}};
\ No newline at end of file
+var _0x0453=['ENUM','out','STRING','DATE','BOOLEAN','exports','TEXT','medium'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x0453,0x155));var _0x3045=function(_0x119656,_0x1d85ba){_0x119656=_0x119656-0x0;var _0xe51bfd=_0x0453[_0x119656];return _0xe51bfd;};'use strict';var Sequelize=require('sequelize');module[_0x3045('0x0')]={'body':{'type':Sequelize[_0x3045('0x1')](_0x3045('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x3045('0x3')]('in',_0x3045('0x4')),'defaultValue':_0x3045('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3045('0x5')](0xbe)},'phone':{'type':Sequelize[_0x3045('0x5')]},'readAt':{'type':Sequelize[_0x3045('0x6')]},'secret':{'type':Sequelize[_0x3045('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x3045('0x1')]}};
\ No newline at end of file
index 5ea420c..9e1344f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6e=['format','UserId','user','agent','get','SmsInteraction','SmsInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','ContactId','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','rejectmessage','SmsAccount','received\x20delivery\x20report\x20from','inspect','messageId','twilio','MessageUUID','indexOf','sent','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','results','groupName','DELIVERED','infobip','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','ejs','fs-extra','squel','crypto','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','defaults','socket.io-emitter','redis','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','end','undefined','limit','offset','count','status','set','Content-Range','json','reject','save','destroy','sendStatus','stack','name','send','map','SmsMessage','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','includeAll','include','params','length','create','body','update','find','describe','sms-interactions','accept','sms','read','readAt'];(function(_0x441cb1,_0x1897aa){var _0x105b7e=function(_0x34505f){while(--_0x34505f){_0x441cb1['push'](_0x441cb1['shift']());}};_0x105b7e(++_0x1897aa);}(_0xae6e,0x1e5));var _0xeae6=function(_0x1958f0,_0x15ab19){_0x1958f0=_0x1958f0-0x0;var _0x252936=_0xae6e[_0x1958f0];return _0x252936;};'use strict';var emlformat=require(_0xeae6('0x0'));var rimraf=require(_0xeae6('0x1'));var zipdir=require(_0xeae6('0x2'));var jsonpatch=require(_0xeae6('0x3'));var rp=require(_0xeae6('0x4'));var moment=require('moment');var BPromise=require(_0xeae6('0x5'));var Mustache=require('mustache');var util=require(_0xeae6('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeae6('0x7'));var fs=require('fs');var fs_extra=require(_0xeae6('0x8'));var _=require('lodash');var squel=require(_0xeae6('0x9'));var crypto=require(_0xeae6('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xeae6('0xb'));var querystring=require(_0xeae6('0xc'));var Papa=require(_0xeae6('0xd'));var Redis=require(_0xeae6('0xe'));var authService=require(_0xeae6('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xeae6('0x10'));var hardwareService=require(_0xeae6('0x11'));var logger=require(_0xeae6('0x12'))(_0xeae6('0x13'));var utils=require(_0xeae6('0x14'));var config=require(_0xeae6('0x15'));var licenseUtil=require(_0xeae6('0x16'));var db=require(_0xeae6('0x17'))['db'];config['redis']=_[_0xeae6('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xeae6('0x19'))(new Redis(config[_0xeae6('0x1a')]));require(_0xeae6('0x1b'))[_0xeae6('0x1c')](socket);var jayson=require(_0xeae6('0x1d'));var client=jayson[_0xeae6('0x1e')][_0xeae6('0x1f')]({'port':0x232c});var client9002=jayson[_0xeae6('0x1e')][_0xeae6('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x5e5f55,_0x553429,_0x163f8d,_0xaf10c5){return new BPromise(function(_0x35f217,_0x10c809){var _0x5deb01=_0xaf10c5||client;return _0x5deb01[_0xeae6('0x20')](_0x5e5f55,_0x163f8d)[_0xeae6('0x21')](function(_0x29682c){logger[_0xeae6('0x22')](_0xeae6('0x23'),_0x553429,_0xeae6('0x24'));logger[_0xeae6('0x25')](_0xeae6('0x26'),_0x553429,'request\x20sent',JSON['stringify'](_0x29682c));if(_0x29682c[_0xeae6('0x27')]){if(_0x29682c['error'][_0xeae6('0x28')]===0x1f4){logger[_0xeae6('0x27')](_0xeae6('0x23'),_0x553429,_0x29682c['error'][_0xeae6('0x29')]);return _0x10c809(_0x29682c[_0xeae6('0x27')][_0xeae6('0x29')]);}logger[_0xeae6('0x27')](_0xeae6('0x23'),_0x553429,_0x29682c[_0xeae6('0x27')][_0xeae6('0x29')]);return _0x35f217(_0x29682c[_0xeae6('0x27')]['message']);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x553429,_0xeae6('0x24'));_0x35f217(_0x29682c[_0xeae6('0x2a')][_0xeae6('0x29')]);}})[_0xeae6('0x2b')](function(_0x25b540){logger[_0xeae6('0x27')](_0xeae6('0x23'),_0x553429,_0x25b540);_0x10c809(_0x25b540);});});}function respondWithStatusCode(_0x4e9d77,_0x34dfb4){_0x34dfb4=_0x34dfb4||0xcc;return function(_0x551720){if(_0x551720){return _0x4e9d77['sendStatus'](_0x34dfb4);}return _0x4e9d77['status'](_0x34dfb4)[_0xeae6('0x2c')]();};}function respondWithResult(_0x27c04d,_0x56f857){_0x56f857=_0x56f857||0xc8;return function(_0x3fbb1a){if(_0x3fbb1a){return _0x27c04d['status'](_0x56f857)['json'](_0x3fbb1a);}};}function respondWithFilteredResult(_0x538dfb,_0x22fa08){return function(_0x21a54e){if(_0x21a54e){var _0x1f702a=typeof _0x22fa08['offset']===_0xeae6('0x2d')&&typeof _0x22fa08[_0xeae6('0x2e')]===_0xeae6('0x2d');var _0x4d90ba=_0x21a54e['count'];var _0x2c3a4e=_0x1f702a?0x0:_0x22fa08[_0xeae6('0x2f')];var _0x10b576=_0x1f702a?_0x21a54e[_0xeae6('0x30')]:_0x22fa08[_0xeae6('0x2f')]+_0x22fa08[_0xeae6('0x2e')];var _0x605dad;if(_0x10b576>=_0x4d90ba){_0x10b576=_0x4d90ba;_0x605dad=0xc8;}else{_0x605dad=0xce;}_0x538dfb[_0xeae6('0x31')](_0x605dad);return _0x538dfb[_0xeae6('0x32')](_0xeae6('0x33'),_0x2c3a4e+'-'+_0x10b576+'/'+_0x4d90ba)[_0xeae6('0x34')](_0x21a54e);}return null;};}function patchUpdates(_0x45fb24){return function(_0x2b463d){try{jsonpatch['apply'](_0x2b463d,_0x45fb24,!![]);}catch(_0x1d21df){return BPromise[_0xeae6('0x35')](_0x1d21df);}return _0x2b463d[_0xeae6('0x36')]();};}function saveUpdates(_0x6da4e7,_0x242051){return function(_0x208654){if(_0x208654){return _0x208654['update'](_0x6da4e7)[_0xeae6('0x21')](function(_0x309a39){return _0x309a39;});}return null;};}function removeEntity(_0x3a9bdf,_0x2f0670){return function(_0x3ec51a){if(_0x3ec51a){return _0x3ec51a[_0xeae6('0x37')]()[_0xeae6('0x21')](function(){_0x3a9bdf[_0xeae6('0x31')](0xcc)[_0xeae6('0x2c')]();});}};}function handleEntityNotFound(_0x5e1963,_0x3d62b8){return function(_0x3198ff){if(!_0x3198ff){_0x5e1963[_0xeae6('0x38')](0x194);}return _0x3198ff;};}function handleError(_0x4743c0,_0x558340){_0x558340=_0x558340||0x1f4;return function(_0x23c5cd){logger[_0xeae6('0x27')](_0x23c5cd[_0xeae6('0x39')]);if(_0x23c5cd['name']){delete _0x23c5cd[_0xeae6('0x3a')];}_0x4743c0['status'](_0x558340)[_0xeae6('0x3b')](_0x23c5cd);};}exports['index']=function(_0x3734ea,_0x1b0e6f){var _0x4d39dc={},_0xf5bd03={},_0x559fa4={'count':0x0,'rows':[]};var _0x589c49=_[_0xeae6('0x3c')](db[_0xeae6('0x3d')]['rawAttributes'],function(_0x1da578){return{'name':_0x1da578[_0xeae6('0x3e')],'type':_0x1da578[_0xeae6('0x3f')][_0xeae6('0x40')]};});_0xf5bd03[_0xeae6('0x41')]=_['map'](_0x589c49,_0xeae6('0x3a'));_0xf5bd03[_0xeae6('0x42')]=_[_0xeae6('0x43')](_0x3734ea['query']);_0xf5bd03['filters']=_[_0xeae6('0x44')](_0xf5bd03['model'],_0xf5bd03[_0xeae6('0x42')]);_0x4d39dc['attributes']=_[_0xeae6('0x44')](_0xf5bd03[_0xeae6('0x41')],qs[_0xeae6('0x45')](_0x3734ea['query']['fields']));_0x4d39dc['attributes']=_0x4d39dc[_0xeae6('0x46')]['length']?_0x4d39dc[_0xeae6('0x46')]:_0xf5bd03[_0xeae6('0x41')];if(!_0x3734ea['query'][_0xeae6('0x47')](_0xeae6('0x48'))){_0x4d39dc['limit']=qs['limit'](_0x3734ea[_0xeae6('0x42')]['limit']);_0x4d39dc['offset']=qs[_0xeae6('0x2f')](_0x3734ea[_0xeae6('0x42')]['offset']);}_0x4d39dc[_0xeae6('0x49')]=qs[_0xeae6('0x4a')](_0x3734ea[_0xeae6('0x42')][_0xeae6('0x4a')]);_0x4d39dc[_0xeae6('0x4b')]=qs[_0xeae6('0x4c')](_[_0xeae6('0x4d')](_0x3734ea[_0xeae6('0x42')],_0xf5bd03[_0xeae6('0x4c')]),_0x589c49);if(_0x3734ea[_0xeae6('0x42')]['filter']){_0x4d39dc[_0xeae6('0x4b')]=_[_0xeae6('0x4e')](_0x4d39dc['where'],{'$or':_[_0xeae6('0x3c')](_0x589c49,function(_0x34e733){if(_0x34e733['type']!==_0xeae6('0x4f')){var _0x3e1685={};_0x3e1685[_0x34e733['name']]={'$like':'%'+_0x3734ea[_0xeae6('0x42')]['filter']+'%'};return _0x3e1685;}})});}_0x4d39dc=_['merge']({},_0x4d39dc,_0x3734ea[_0xeae6('0x50')]);var _0x525bc7={'where':_0x4d39dc[_0xeae6('0x4b')]};return db[_0xeae6('0x3d')][_0xeae6('0x30')](_0x525bc7)[_0xeae6('0x21')](function(_0x16588b){_0x559fa4[_0xeae6('0x30')]=_0x16588b;if(_0x3734ea['query'][_0xeae6('0x51')]){_0x4d39dc[_0xeae6('0x52')]=[{'all':!![]}];}return db[_0xeae6('0x3d')]['findAll'](_0x4d39dc);})['then'](function(_0x3f0908){_0x559fa4['rows']=_0x3f0908;return _0x559fa4;})[_0xeae6('0x21')](respondWithFilteredResult(_0x1b0e6f,_0x4d39dc))[_0xeae6('0x2b')](handleError(_0x1b0e6f,null));};exports['show']=function(_0x5cd63f,_0x492f1b){var _0x1813f6={'raw':!![],'where':{'id':_0x5cd63f[_0xeae6('0x53')]['id']}},_0x5ae708={};_0x5ae708[_0xeae6('0x41')]=_['keys'](db[_0xeae6('0x3d')]['rawAttributes']);_0x5ae708[_0xeae6('0x42')]=_[_0xeae6('0x43')](_0x5cd63f[_0xeae6('0x42')]);_0x5ae708[_0xeae6('0x4c')]=_[_0xeae6('0x44')](_0x5ae708['model'],_0x5ae708[_0xeae6('0x42')]);_0x1813f6[_0xeae6('0x46')]=_[_0xeae6('0x44')](_0x5ae708[_0xeae6('0x41')],qs[_0xeae6('0x45')](_0x5cd63f[_0xeae6('0x42')]['fields']));_0x1813f6[_0xeae6('0x46')]=_0x1813f6[_0xeae6('0x46')][_0xeae6('0x54')]?_0x1813f6[_0xeae6('0x46')]:_0x5ae708[_0xeae6('0x41')];if(_0x5cd63f[_0xeae6('0x42')][_0xeae6('0x51')]){_0x1813f6[_0xeae6('0x52')]=[{'all':!![]}];}_0x1813f6=_[_0xeae6('0x4e')]({},_0x1813f6,_0x5cd63f[_0xeae6('0x50')]);return db[_0xeae6('0x3d')]['find'](_0x1813f6)[_0xeae6('0x21')](handleEntityNotFound(_0x492f1b,null))[_0xeae6('0x21')](respondWithResult(_0x492f1b,null))[_0xeae6('0x2b')](handleError(_0x492f1b,null));};exports[_0xeae6('0x55')]=function(_0x5663fb,_0x22ea1e){return db[_0xeae6('0x3d')][_0xeae6('0x55')](_0x5663fb[_0xeae6('0x56')],{})[_0xeae6('0x21')](respondWithResult(_0x22ea1e,0xc9))['catch'](handleError(_0x22ea1e,null));};exports[_0xeae6('0x57')]=function(_0x297419,_0x3b1c9f){if(_0x297419[_0xeae6('0x56')]['id']){delete _0x297419[_0xeae6('0x56')]['id'];}return db[_0xeae6('0x3d')][_0xeae6('0x58')]({'where':{'id':_0x297419[_0xeae6('0x53')]['id']}})[_0xeae6('0x21')](handleEntityNotFound(_0x3b1c9f,null))['then'](saveUpdates(_0x297419[_0xeae6('0x56')],null))[_0xeae6('0x21')](respondWithResult(_0x3b1c9f,null))[_0xeae6('0x2b')](handleError(_0x3b1c9f,null));};exports[_0xeae6('0x37')]=function(_0x930879,_0x1dcdad){return db[_0xeae6('0x3d')][_0xeae6('0x58')]({'where':{'id':_0x930879[_0xeae6('0x53')]['id']}})['then'](handleEntityNotFound(_0x1dcdad,null))[_0xeae6('0x21')](removeEntity(_0x1dcdad,null))['catch'](handleError(_0x1dcdad,null));};exports[_0xeae6('0x59')]=function(_0x53df66,_0x5df8ae){return db['SmsMessage'][_0xeae6('0x59')]()[_0xeae6('0x21')](respondWithResult(_0x5df8ae,null))[_0xeae6('0x2b')](handleError(_0x5df8ae,null));};var interaction_log=require(_0xeae6('0x12'))(_0xeae6('0x5a'));exports[_0xeae6('0x5b')]=function(_0x7bbcae,_0x59f8c3,_0x323162){var _0x3b6709={'agent':{},'channel':_0xeae6('0x5c')};if(_0x7bbcae[_0xeae6('0x56')]['id']){delete _0x7bbcae[_0xeae6('0x56')]['id'];}_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x5d')]=!![];_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x5e')]=moment()[_0xeae6('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x60')]=_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x60')]||_0x7bbcae[_0xeae6('0x61')]['id'];_0x3b6709[_0xeae6('0x62')]['id']=_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x60')];return db[_0xeae6('0x3d')]['find']({'where':{'id':_0x7bbcae['params']['id'],'UserId':null}})[_0xeae6('0x21')](handleEntityNotFound(_0x59f8c3,null))[_0xeae6('0x21')](saveUpdates(_0x7bbcae[_0xeae6('0x56')],null))['then'](function(_0x108392){if(_0x108392){_0x3b6709[_0xeae6('0x29')]=_0x108392[_0xeae6('0x63')]({'plain':!![]});return db[_0xeae6('0x64')]['find']({'where':{'id':_0x108392[_0xeae6('0x65')]}});}return null;})[_0xeae6('0x21')](handleEntityNotFound(_0x59f8c3,null))[_0xeae6('0x21')](function(_0x5a2023){if(_0x5a2023){return _0x5a2023[_0xeae6('0x57')]({'UserId':_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x60')],'read1stAt':_['isNil'](_0x5a2023[_0xeae6('0x66')])?moment()[_0xeae6('0x5f')](_0xeae6('0x67')):undefined});}return null;})['then'](function(_0x4b64cc){if(_0x4b64cc){_0x3b6709[_0xeae6('0x68')]=_0x4b64cc[_0xeae6('0x63')]({'plain':!![]});interaction_log[_0xeae6('0x22')](_0xeae6('0x69'),_0x7bbcae[_0xeae6('0x61')]['id'],_0x7bbcae['user']['name'],_0x7bbcae['user']['role'],_0x3b6709[_0xeae6('0x68')]['id'],_0x7bbcae[_0xeae6('0x56')]?JSON['stringify'](_0x7bbcae[_0xeae6('0x56')]):_0xeae6('0x6a'));return respondWithRpcPromise(_0xeae6('0x6b'),_0xeae6('0x6c'),_0x3b6709);}return null;})[_0xeae6('0x21')](function(_0x5b95e0){var _0x13cb17='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b95e0[_0xeae6('0x29')][_0xeae6('0x6d')];return db['sequelize'][_0xeae6('0x42')](_0x13cb17,{'type':db['Sequelize'][_0xeae6('0x6e')]['SELECT'],'raw':!![]})[_0xeae6('0x21')](function(_0x2ecca5){return _0x2ecca5;});})['then'](function(_0x391100){if(_0x391100){_0x3b6709[_0xeae6('0x29')][_0xeae6('0x6f')]=_0x391100[0x0];if(!_0x7bbcae['body'][_0xeae6('0x60')])return;return db[_0xeae6('0x70')]['find']({'where':{'id':_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x60')],'role':_0xeae6('0x62')},'attributes':['id',_0xeae6('0x3a'),_0xeae6('0x71'),_0xeae6('0x72'),_0xeae6('0x73')],'raw':!![]});}return null;})['then'](function(_0x348c5a){if(!_0x348c5a)return null;_0x3b6709['message']['agent']=_0x348c5a;return _0x3b6709;})['then'](function(_0x38f2cd){if(_0x38f2cd){if(_0x7bbcae[_0xeae6('0x56')][_0xeae6('0x74')]){_0x3b6709[_0xeae6('0x29')][_0xeae6('0x75')]=util['format'](_0xeae6('0x76'),_0x7bbcae['user'][_0xeae6('0x3a')]);_0x3b6709['message']['channel']=_0x3b6709[_0xeae6('0x77')];_0x3b6709[_0xeae6('0x29')][_0xeae6('0x78')]=_0x3b6709[_0xeae6('0x77')];_0x3b6709['message']['event']='accept';return respondWithRpcPromise('EventManager',_0xeae6('0x79'),{'event':'acceptmessage','message':_0x3b6709[_0xeae6('0x29')]},client9002)['then'](function(){return _0x3b6709;});}return _0x3b6709;}return null;})[_0xeae6('0x21')](respondWithResult(_0x59f8c3,null))[_0xeae6('0x2b')](handleError(_0x59f8c3,null));};var interaction_log=require(_0xeae6('0x12'))(_0xeae6('0x5a'));exports[_0xeae6('0x35')]=function(_0x3177b9,_0x12edc3,_0x35a953){var _0x1e6542={'agent':{},'channel':_0xeae6('0x5c')};if(_0x3177b9['body']['id']){delete _0x3177b9['body']['id'];}_0x3177b9[_0xeae6('0x56')][_0xeae6('0x60')]=_0x3177b9[_0xeae6('0x56')][_0xeae6('0x60')]||_0x3177b9[_0xeae6('0x61')]['id'];_0x1e6542['agent']['id']=_0x3177b9[_0xeae6('0x56')][_0xeae6('0x60')];return db[_0xeae6('0x3d')][_0xeae6('0x58')]({'where':{'id':_0x3177b9['params']['id'],'UserId':null}})[_0xeae6('0x21')](handleEntityNotFound(_0x12edc3,null))[_0xeae6('0x21')](function(_0x2c1c7e){if(_0x2c1c7e){_0x1e6542[_0xeae6('0x29')]=_0x2c1c7e['get']({'plain':!![]});return db[_0xeae6('0x64')]['find']({'where':{'id':_0x2c1c7e[_0xeae6('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x12edc3,null))[_0xeae6('0x21')](function(_0x2e3270){if(_0x2e3270){_0x1e6542['interaction']=_0x2e3270[_0xeae6('0x63')]({'plain':!![]});interaction_log[_0xeae6('0x22')](_0xeae6('0x7a'),_0x3177b9[_0xeae6('0x61')]['id'],_0x3177b9[_0xeae6('0x61')][_0xeae6('0x3a')],_0x3177b9[_0xeae6('0x61')]['role'],_0x1e6542[_0xeae6('0x68')]['id'],_0x3177b9[_0xeae6('0x56')]?JSON['stringify'](_0x3177b9[_0xeae6('0x56')]):'null');return respondWithRpcPromise('RejectMessage',_0xeae6('0x7b'),_0x1e6542);}return null;})[_0xeae6('0x21')](function(_0x36c29c){var _0x1f0021=_0xeae6('0x7c')+_0x36c29c[_0xeae6('0x29')][_0xeae6('0x6d')];return db[_0xeae6('0x7d')]['query'](_0x1f0021,{'type':db[_0xeae6('0x7e')][_0xeae6('0x6e')][_0xeae6('0x7f')],'raw':!![]})[_0xeae6('0x21')](function(_0x547a47){return _0x547a47;});})[_0xeae6('0x21')](function(_0x3438c0){if(_0x3438c0){_0x1e6542[_0xeae6('0x29')]['contact']=_0x3438c0[0x0];if(!_0x3177b9[_0xeae6('0x56')][_0xeae6('0x60')])return;return db[_0xeae6('0x70')][_0xeae6('0x58')]({'where':{'id':_0x3177b9[_0xeae6('0x56')][_0xeae6('0x60')],'role':_0xeae6('0x62')},'attributes':['id',_0xeae6('0x3a'),'fullname',_0xeae6('0x72'),'internal'],'raw':!![]});}return null;})[_0xeae6('0x21')](function(_0x328df2){if(!_0x328df2)return null;_0x1e6542[_0xeae6('0x29')]['agent']=_0x328df2;return _0x1e6542;})[_0xeae6('0x21')](function(_0x2d4002){if(_0x2d4002){_0x2d4002[_0xeae6('0x29')]['interface']=util[_0xeae6('0x5f')](_0xeae6('0x76'),_0x3177b9[_0xeae6('0x61')][_0xeae6('0x3a')]);_0x2d4002[_0xeae6('0x29')][_0xeae6('0x77')]=_0x1e6542[_0xeae6('0x77')];_0x2d4002[_0xeae6('0x29')][_0xeae6('0x78')]=_0x1e6542[_0xeae6('0x77')];_0x2d4002[_0xeae6('0x29')]['event']=_0xeae6('0x35');respondWithRpcPromise(_0xeae6('0x79'),'EventManager',{'event':_0xeae6('0x80'),'message':_0x2d4002['message']},client9002);return _0x1e6542;}return null;})['then'](respondWithResult(_0x12edc3,null))[_0xeae6('0x2b')](handleError(_0x12edc3,null));};exports[_0xeae6('0x31')]=function(_0x33a864,_0x4b4265,_0x1269dd){if(_0x33a864[_0xeae6('0x56')]['id']){delete _0x33a864[_0xeae6('0x56')]['id'];}var _0xb39d40;return db['SmsMessage'][_0xeae6('0x58')]({'where':{'id':_0x33a864[_0xeae6('0x53')]['id']}})[_0xeae6('0x21')](handleEntityNotFound(_0x4b4265,null))['then'](function(_0x208760){if(_0x208760){_0xb39d40=_0x208760;return db[_0xeae6('0x81')][_0xeae6('0x58')]({'where':{'id':_0x208760['SmsAccountId']}});}})[_0xeae6('0x21')](handleEntityNotFound(_0x4b4265,null))['then'](function(_0x40123c){if(_0x40123c){logger[_0xeae6('0x25')](_0xeae6('0x26'),_0xeae6('0x31'),_0xeae6('0x82'),_0x40123c['type'],util[_0xeae6('0x83')](_0x33a864['body'],{'showHidden':![],'depth':null}));switch(_0x40123c['type']){case'twilio':if(_0x33a864[_0xeae6('0x56')]['MessageSid']&&_0x33a864[_0xeae6('0x56')]['MessageSid']===_0xb39d40[_0xeae6('0x84')]){return _0xb39d40[_0xeae6('0x57')]({'read':!![]});}else{logger[_0xeae6('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xeae6('0x31'),_0xeae6('0x85'),util['inspect'](_0x33a864[_0xeae6('0x56')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x33a864['body'][_0xeae6('0x86')]&&_0x33a864[_0xeae6('0x56')][_0xeae6('0x86')]===_0xb39d40[_0xeae6('0x84')]&&_[_0xeae6('0x87')]([_0xeae6('0x88'),_0xeae6('0x89')],_0x33a864[_0xeae6('0x56')][_0xeae6('0x8a')])>=0x0){return _0xb39d40['update']({'read':!![]});}else{logger[_0xeae6('0x27')](_0xeae6('0x8b'),'status',_0xeae6('0x8c'),util[_0xeae6('0x83')](_0x33a864[_0xeae6('0x56')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x559452=_0x33a864[_0xeae6('0x56')][_0xeae6('0x8d')][0x0];if(_0x559452[_0xeae6('0x31')][_0xeae6('0x8e')]===_0xeae6('0x8f')){return _0xb39d40[_0xeae6('0x57')]({'read':!![]});}else{logger['error'](_0xeae6('0x8b'),'status',_0xeae6('0x90'),util['inspect'](_0x33a864[_0xeae6('0x56')],{'showHidden':![],'depth':null}));}break;}return _0xb39d40;}})[_0xeae6('0x21')](respondWithResult(_0x4b4265,null))[_0xeae6('0x2b')](handleError(_0x4b4265,null));};
\ No newline at end of file
+var _0xeb7e=['read1stAt','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','accept','EventManager','acceptmessage','interaction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','Sequelize','rejectmessage','SmsAccount','SmsAccountId','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','delivered','Status','plivio','inspect','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','http','client','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','destroy','stack','name','send','index','map','fieldName','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','SmsMessage','includeAll','include','catch','show','params','length','create','body','find','describe','sms-interactions','sms','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','SmsInteractionId','isNil'];(function(_0x6cc257,_0x54fddb){var _0x2bce97=function(_0x378874){while(--_0x378874){_0x6cc257['push'](_0x6cc257['shift']());}};_0x2bce97(++_0x54fddb);}(_0xeb7e,0x1f2));var _0xeeb7=function(_0x290283,_0x16e56a){_0x290283=_0x290283-0x0;var _0x426aa6=_0xeb7e[_0x290283];return _0x426aa6;};'use strict';var emlformat=require(_0xeeb7('0x0'));var rimraf=require(_0xeeb7('0x1'));var zipdir=require(_0xeeb7('0x2'));var jsonpatch=require(_0xeeb7('0x3'));var rp=require(_0xeeb7('0x4'));var moment=require(_0xeeb7('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xeeb7('0x6'));var util=require(_0xeeb7('0x7'));var path=require(_0xeeb7('0x8'));var sox=require(_0xeeb7('0x9'));var csv=require(_0xeeb7('0xa'));var ejs=require(_0xeeb7('0xb'));var fs=require('fs');var fs_extra=require(_0xeeb7('0xc'));var _=require(_0xeeb7('0xd'));var squel=require('squel');var crypto=require(_0xeeb7('0xe'));var jsforce=require(_0xeeb7('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xeeb7('0xa'));var querystring=require('querystring');var Papa=require(_0xeeb7('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xeeb7('0x11'));var hardwareService=require(_0xeeb7('0x12'));var logger=require(_0xeeb7('0x13'))(_0xeeb7('0x14'));var utils=require(_0xeeb7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xeeb7('0x16'));var db=require(_0xeeb7('0x17'))['db'];config['redis']=_['defaults'](config[_0xeeb7('0x18')],{'host':_0xeeb7('0x19'),'port':0x18eb});var socket=require(_0xeeb7('0x1a'))(new Redis(config[_0xeeb7('0x18')]));require(_0xeeb7('0x1b'))[_0xeeb7('0x1c')](socket);var jayson=require(_0xeeb7('0x1d'));var client=jayson['client'][_0xeeb7('0x1e')]({'port':0x232c});var client9002=jayson[_0xeeb7('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x300988,_0x38b145,_0x409d59,_0xa6633b){return new BPromise(function(_0x2c1e23,_0x24a9a5){var _0x353218=_0xa6633b||client;return _0x353218[_0xeeb7('0x20')](_0x300988,_0x409d59)[_0xeeb7('0x21')](function(_0x3b1ce2){logger[_0xeeb7('0x22')](_0xeeb7('0x23'),_0x38b145,_0xeeb7('0x24'));logger[_0xeeb7('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x38b145,_0xeeb7('0x24'),JSON[_0xeeb7('0x26')](_0x3b1ce2));if(_0x3b1ce2[_0xeeb7('0x27')]){if(_0x3b1ce2[_0xeeb7('0x27')][_0xeeb7('0x28')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x38b145,_0x3b1ce2[_0xeeb7('0x27')]['message']);return _0x24a9a5(_0x3b1ce2[_0xeeb7('0x27')][_0xeeb7('0x29')]);}logger[_0xeeb7('0x27')](_0xeeb7('0x23'),_0x38b145,_0x3b1ce2[_0xeeb7('0x27')][_0xeeb7('0x29')]);return _0x2c1e23(_0x3b1ce2[_0xeeb7('0x27')][_0xeeb7('0x29')]);}else{logger[_0xeeb7('0x22')]('SmsMessage,\x20%s,\x20%s',_0x38b145,_0xeeb7('0x24'));_0x2c1e23(_0x3b1ce2[_0xeeb7('0x2a')][_0xeeb7('0x29')]);}})['catch'](function(_0x3c189d){logger[_0xeeb7('0x27')](_0xeeb7('0x23'),_0x38b145,_0x3c189d);_0x24a9a5(_0x3c189d);});});}function respondWithStatusCode(_0x3d5e54,_0x5581f0){_0x5581f0=_0x5581f0||0xcc;return function(_0x1956f8){if(_0x1956f8){return _0x3d5e54[_0xeeb7('0x2b')](_0x5581f0);}return _0x3d5e54[_0xeeb7('0x2c')](_0x5581f0)[_0xeeb7('0x2d')]();};}function respondWithResult(_0x468ea8,_0x2fe923){_0x2fe923=_0x2fe923||0xc8;return function(_0x364237){if(_0x364237){return _0x468ea8['status'](_0x2fe923)['json'](_0x364237);}};}function respondWithFilteredResult(_0x4debcf,_0x5ef864){return function(_0x4f5707){if(_0x4f5707){var _0x439dac=typeof _0x5ef864['offset']===_0xeeb7('0x2e')&&typeof _0x5ef864[_0xeeb7('0x2f')]===_0xeeb7('0x2e');var _0x581e0b=_0x4f5707[_0xeeb7('0x30')];var _0x271afa=_0x439dac?0x0:_0x5ef864[_0xeeb7('0x31')];var _0x3da78d=_0x439dac?_0x4f5707[_0xeeb7('0x30')]:_0x5ef864[_0xeeb7('0x31')]+_0x5ef864[_0xeeb7('0x2f')];var _0x317777;if(_0x3da78d>=_0x581e0b){_0x3da78d=_0x581e0b;_0x317777=0xc8;}else{_0x317777=0xce;}_0x4debcf[_0xeeb7('0x2c')](_0x317777);return _0x4debcf[_0xeeb7('0x32')](_0xeeb7('0x33'),_0x271afa+'-'+_0x3da78d+'/'+_0x581e0b)[_0xeeb7('0x34')](_0x4f5707);}return null;};}function patchUpdates(_0x1bc1c3){return function(_0x162197){try{jsonpatch[_0xeeb7('0x35')](_0x162197,_0x1bc1c3,!![]);}catch(_0x1f1d75){return BPromise[_0xeeb7('0x36')](_0x1f1d75);}return _0x162197['save']();};}function saveUpdates(_0x3af784,_0x1a78d3){return function(_0x5a8f04){if(_0x5a8f04){return _0x5a8f04[_0xeeb7('0x37')](_0x3af784)[_0xeeb7('0x21')](function(_0x115466){return _0x115466;});}return null;};}function removeEntity(_0x245e04,_0x5a4d01){return function(_0x2d0f3c){if(_0x2d0f3c){return _0x2d0f3c[_0xeeb7('0x38')]()[_0xeeb7('0x21')](function(){_0x245e04[_0xeeb7('0x2c')](0xcc)[_0xeeb7('0x2d')]();});}};}function handleEntityNotFound(_0x5c33b5,_0x20f2d1){return function(_0x2c8743){if(!_0x2c8743){_0x5c33b5[_0xeeb7('0x2b')](0x194);}return _0x2c8743;};}function handleError(_0x7ba0e5,_0x5e5c9f){_0x5e5c9f=_0x5e5c9f||0x1f4;return function(_0x4c2e8b){logger['error'](_0x4c2e8b[_0xeeb7('0x39')]);if(_0x4c2e8b[_0xeeb7('0x3a')]){delete _0x4c2e8b[_0xeeb7('0x3a')];}_0x7ba0e5[_0xeeb7('0x2c')](_0x5e5c9f)[_0xeeb7('0x3b')](_0x4c2e8b);};}exports[_0xeeb7('0x3c')]=function(_0x3a479e,_0x5d114a){var _0x1a062c={},_0x12ce5f={},_0x2fa188={'count':0x0,'rows':[]};var _0x185d8b=_[_0xeeb7('0x3d')](db['SmsMessage']['rawAttributes'],function(_0x979c03){return{'name':_0x979c03[_0xeeb7('0x3e')],'type':_0x979c03['type'][_0xeeb7('0x3f')]};});_0x12ce5f[_0xeeb7('0x40')]=_[_0xeeb7('0x3d')](_0x185d8b,_0xeeb7('0x3a'));_0x12ce5f['query']=_[_0xeeb7('0x41')](_0x3a479e[_0xeeb7('0x42')]);_0x12ce5f[_0xeeb7('0x43')]=_['intersection'](_0x12ce5f[_0xeeb7('0x40')],_0x12ce5f[_0xeeb7('0x42')]);_0x1a062c[_0xeeb7('0x44')]=_[_0xeeb7('0x45')](_0x12ce5f[_0xeeb7('0x40')],qs[_0xeeb7('0x46')](_0x3a479e['query'][_0xeeb7('0x46')]));_0x1a062c['attributes']=_0x1a062c['attributes']['length']?_0x1a062c[_0xeeb7('0x44')]:_0x12ce5f[_0xeeb7('0x40')];if(!_0x3a479e['query'][_0xeeb7('0x47')](_0xeeb7('0x48'))){_0x1a062c[_0xeeb7('0x2f')]=qs[_0xeeb7('0x2f')](_0x3a479e['query'][_0xeeb7('0x2f')]);_0x1a062c[_0xeeb7('0x31')]=qs['offset'](_0x3a479e[_0xeeb7('0x42')]['offset']);}_0x1a062c['order']=qs['sort'](_0x3a479e[_0xeeb7('0x42')][_0xeeb7('0x49')]);_0x1a062c[_0xeeb7('0x4a')]=qs[_0xeeb7('0x43')](_[_0xeeb7('0x4b')](_0x3a479e[_0xeeb7('0x42')],_0x12ce5f[_0xeeb7('0x43')]),_0x185d8b);if(_0x3a479e[_0xeeb7('0x42')]['filter']){_0x1a062c['where']=_[_0xeeb7('0x4c')](_0x1a062c[_0xeeb7('0x4a')],{'$or':_[_0xeeb7('0x3d')](_0x185d8b,function(_0x93ee0e){if(_0x93ee0e[_0xeeb7('0x4d')]!==_0xeeb7('0x4e')){var _0x3842af={};_0x3842af[_0x93ee0e['name']]={'$like':'%'+_0x3a479e[_0xeeb7('0x42')][_0xeeb7('0x4f')]+'%'};return _0x3842af;}})});}_0x1a062c=_['merge']({},_0x1a062c,_0x3a479e[_0xeeb7('0x50')]);var _0x30785a={'where':_0x1a062c[_0xeeb7('0x4a')]};return db[_0xeeb7('0x51')][_0xeeb7('0x30')](_0x30785a)[_0xeeb7('0x21')](function(_0x44cbd0){_0x2fa188['count']=_0x44cbd0;if(_0x3a479e[_0xeeb7('0x42')][_0xeeb7('0x52')]){_0x1a062c[_0xeeb7('0x53')]=[{'all':!![]}];}return db[_0xeeb7('0x51')]['findAll'](_0x1a062c);})[_0xeeb7('0x21')](function(_0x8ba840){_0x2fa188['rows']=_0x8ba840;return _0x2fa188;})[_0xeeb7('0x21')](respondWithFilteredResult(_0x5d114a,_0x1a062c))[_0xeeb7('0x54')](handleError(_0x5d114a,null));};exports[_0xeeb7('0x55')]=function(_0x1e6c7e,_0x3d781c){var _0x2810d1={'raw':!![],'where':{'id':_0x1e6c7e[_0xeeb7('0x56')]['id']}},_0x1021cd={};_0x1021cd[_0xeeb7('0x40')]=_[_0xeeb7('0x41')](db[_0xeeb7('0x51')]['rawAttributes']);_0x1021cd['query']=_[_0xeeb7('0x41')](_0x1e6c7e[_0xeeb7('0x42')]);_0x1021cd['filters']=_['intersection'](_0x1021cd['model'],_0x1021cd[_0xeeb7('0x42')]);_0x2810d1[_0xeeb7('0x44')]=_[_0xeeb7('0x45')](_0x1021cd[_0xeeb7('0x40')],qs[_0xeeb7('0x46')](_0x1e6c7e[_0xeeb7('0x42')][_0xeeb7('0x46')]));_0x2810d1[_0xeeb7('0x44')]=_0x2810d1[_0xeeb7('0x44')][_0xeeb7('0x57')]?_0x2810d1[_0xeeb7('0x44')]:_0x1021cd[_0xeeb7('0x40')];if(_0x1e6c7e[_0xeeb7('0x42')]['includeAll']){_0x2810d1['include']=[{'all':!![]}];}_0x2810d1=_[_0xeeb7('0x4c')]({},_0x2810d1,_0x1e6c7e[_0xeeb7('0x50')]);return db['SmsMessage']['find'](_0x2810d1)['then'](handleEntityNotFound(_0x3d781c,null))['then'](respondWithResult(_0x3d781c,null))[_0xeeb7('0x54')](handleError(_0x3d781c,null));};exports[_0xeeb7('0x58')]=function(_0x72707f,_0x4d554e){return db[_0xeeb7('0x51')]['create'](_0x72707f[_0xeeb7('0x59')],{})[_0xeeb7('0x21')](respondWithResult(_0x4d554e,0xc9))[_0xeeb7('0x54')](handleError(_0x4d554e,null));};exports['update']=function(_0x16b00a,_0x46a216){if(_0x16b00a[_0xeeb7('0x59')]['id']){delete _0x16b00a[_0xeeb7('0x59')]['id'];}return db[_0xeeb7('0x51')]['find']({'where':{'id':_0x16b00a['params']['id']}})[_0xeeb7('0x21')](handleEntityNotFound(_0x46a216,null))[_0xeeb7('0x21')](saveUpdates(_0x16b00a[_0xeeb7('0x59')],null))[_0xeeb7('0x21')](respondWithResult(_0x46a216,null))[_0xeeb7('0x54')](handleError(_0x46a216,null));};exports[_0xeeb7('0x38')]=function(_0x2f2065,_0x22b0a1){return db['SmsMessage'][_0xeeb7('0x5a')]({'where':{'id':_0x2f2065[_0xeeb7('0x56')]['id']}})[_0xeeb7('0x21')](handleEntityNotFound(_0x22b0a1,null))['then'](removeEntity(_0x22b0a1,null))[_0xeeb7('0x54')](handleError(_0x22b0a1,null));};exports[_0xeeb7('0x5b')]=function(_0x20f41b,_0x3c5dd5){return db['SmsMessage'][_0xeeb7('0x5b')]()['then'](respondWithResult(_0x3c5dd5,null))[_0xeeb7('0x54')](handleError(_0x3c5dd5,null));};var interaction_log=require(_0xeeb7('0x13'))(_0xeeb7('0x5c'));exports['accept']=function(_0x44b4a7,_0x21837c,_0x54b240){var _0x5f5c68={'agent':{},'channel':_0xeeb7('0x5d')};if(_0x44b4a7[_0xeeb7('0x59')]['id']){delete _0x44b4a7[_0xeeb7('0x59')]['id'];}_0x44b4a7['body']['read']=!![];_0x44b4a7[_0xeeb7('0x59')]['readAt']=moment()[_0xeeb7('0x5e')](_0xeeb7('0x5f'));_0x44b4a7[_0xeeb7('0x59')][_0xeeb7('0x60')]=_0x44b4a7[_0xeeb7('0x59')][_0xeeb7('0x60')]||_0x44b4a7['user']['id'];_0x5f5c68[_0xeeb7('0x61')]['id']=_0x44b4a7['body'][_0xeeb7('0x60')];return db[_0xeeb7('0x51')][_0xeeb7('0x5a')]({'where':{'id':_0x44b4a7['params']['id'],'UserId':null}})[_0xeeb7('0x21')](handleEntityNotFound(_0x21837c,null))['then'](saveUpdates(_0x44b4a7[_0xeeb7('0x59')],null))[_0xeeb7('0x21')](function(_0x3c6b29){if(_0x3c6b29){_0x5f5c68[_0xeeb7('0x29')]=_0x3c6b29[_0xeeb7('0x62')]({'plain':!![]});return db[_0xeeb7('0x63')][_0xeeb7('0x5a')]({'where':{'id':_0x3c6b29[_0xeeb7('0x64')]}});}return null;})[_0xeeb7('0x21')](handleEntityNotFound(_0x21837c,null))[_0xeeb7('0x21')](function(_0x5cadb6){if(_0x5cadb6){return _0x5cadb6[_0xeeb7('0x37')]({'UserId':_0x44b4a7[_0xeeb7('0x59')][_0xeeb7('0x60')],'read1stAt':_[_0xeeb7('0x65')](_0x5cadb6[_0xeeb7('0x66')])?moment()[_0xeeb7('0x5e')](_0xeeb7('0x5f')):undefined});}return null;})[_0xeeb7('0x21')](function(_0x12c5be){if(_0x12c5be){_0x5f5c68['interaction']=_0x12c5be[_0xeeb7('0x62')]({'plain':!![]});interaction_log[_0xeeb7('0x22')](_0xeeb7('0x67'),_0x44b4a7[_0xeeb7('0x68')]['id'],_0x44b4a7['user'][_0xeeb7('0x3a')],_0x44b4a7[_0xeeb7('0x68')][_0xeeb7('0x69')],_0x5f5c68['interaction']['id'],_0x44b4a7[_0xeeb7('0x59')]?JSON['stringify'](_0x44b4a7[_0xeeb7('0x59')]):'null');return respondWithRpcPromise('AcceptMessage',_0xeeb7('0x6a'),_0x5f5c68);}return null;})[_0xeeb7('0x21')](function(_0x53e237){var _0x4bd9d7=_0xeeb7('0x6b')+_0x53e237[_0xeeb7('0x29')][_0xeeb7('0x6c')];return db[_0xeeb7('0x6d')][_0xeeb7('0x42')](_0x4bd9d7,{'type':db['Sequelize'][_0xeeb7('0x6e')][_0xeeb7('0x6f')],'raw':!![]})[_0xeeb7('0x21')](function(_0x54bcaf){return _0x54bcaf;});})[_0xeeb7('0x21')](function(_0x197832){if(_0x197832){_0x5f5c68['message'][_0xeeb7('0x70')]=_0x197832[0x0];if(!_0x44b4a7[_0xeeb7('0x59')][_0xeeb7('0x60')])return;return db[_0xeeb7('0x71')]['find']({'where':{'id':_0x44b4a7[_0xeeb7('0x59')][_0xeeb7('0x60')],'role':_0xeeb7('0x61')},'attributes':['id','name',_0xeeb7('0x72'),_0xeeb7('0x73'),_0xeeb7('0x74')],'raw':!![]});}return null;})[_0xeeb7('0x21')](function(_0x198da5){if(!_0x198da5)return null;_0x5f5c68[_0xeeb7('0x29')][_0xeeb7('0x61')]=_0x198da5;return _0x5f5c68;})[_0xeeb7('0x21')](function(_0x3a21cb){if(_0x3a21cb){if(_0x44b4a7[_0xeeb7('0x59')]['manual']){_0x5f5c68['message'][_0xeeb7('0x75')]=util[_0xeeb7('0x5e')](_0xeeb7('0x76'),_0x44b4a7['user']['name']);_0x5f5c68[_0xeeb7('0x29')]['channel']=_0x5f5c68[_0xeeb7('0x77')];_0x5f5c68[_0xeeb7('0x29')][_0xeeb7('0x78')]=_0x5f5c68[_0xeeb7('0x77')];_0x5f5c68['message']['event']=_0xeeb7('0x79');return respondWithRpcPromise(_0xeeb7('0x7a'),'EventManager',{'event':_0xeeb7('0x7b'),'message':_0x5f5c68['message']},client9002)['then'](function(){return _0x5f5c68;});}return _0x5f5c68;}return null;})[_0xeeb7('0x21')](respondWithResult(_0x21837c,null))[_0xeeb7('0x54')](handleError(_0x21837c,null));};var interaction_log=require('../../config/logger')(_0xeeb7('0x5c'));exports[_0xeeb7('0x36')]=function(_0x377653,_0x46c2a4,_0xfd0486){var _0x24a405={'agent':{},'channel':_0xeeb7('0x5d')};if(_0x377653[_0xeeb7('0x59')]['id']){delete _0x377653['body']['id'];}_0x377653[_0xeeb7('0x59')][_0xeeb7('0x60')]=_0x377653['body'][_0xeeb7('0x60')]||_0x377653[_0xeeb7('0x68')]['id'];_0x24a405[_0xeeb7('0x61')]['id']=_0x377653[_0xeeb7('0x59')]['UserId'];return db[_0xeeb7('0x51')][_0xeeb7('0x5a')]({'where':{'id':_0x377653[_0xeeb7('0x56')]['id'],'UserId':null}})[_0xeeb7('0x21')](handleEntityNotFound(_0x46c2a4,null))[_0xeeb7('0x21')](function(_0x1f0ca4){if(_0x1f0ca4){_0x24a405[_0xeeb7('0x29')]=_0x1f0ca4[_0xeeb7('0x62')]({'plain':!![]});return db[_0xeeb7('0x63')][_0xeeb7('0x5a')]({'where':{'id':_0x1f0ca4[_0xeeb7('0x64')]}});}return null;})[_0xeeb7('0x21')](handleEntityNotFound(_0x46c2a4,null))[_0xeeb7('0x21')](function(_0x2c2700){if(_0x2c2700){_0x24a405[_0xeeb7('0x7c')]=_0x2c2700[_0xeeb7('0x62')]({'plain':!![]});interaction_log[_0xeeb7('0x22')](_0xeeb7('0x7d'),_0x377653['user']['id'],_0x377653[_0xeeb7('0x68')]['name'],_0x377653[_0xeeb7('0x68')][_0xeeb7('0x69')],_0x24a405['interaction']['id'],_0x377653[_0xeeb7('0x59')]?JSON['stringify'](_0x377653[_0xeeb7('0x59')]):_0xeeb7('0x7e'));return respondWithRpcPromise(_0xeeb7('0x7f'),_0xeeb7('0x80'),_0x24a405);}return null;})[_0xeeb7('0x21')](function(_0x2d3fa3){var _0x54f142='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2d3fa3[_0xeeb7('0x29')][_0xeeb7('0x6c')];return db[_0xeeb7('0x6d')][_0xeeb7('0x42')](_0x54f142,{'type':db[_0xeeb7('0x81')][_0xeeb7('0x6e')][_0xeeb7('0x6f')],'raw':!![]})[_0xeeb7('0x21')](function(_0x57ddec){return _0x57ddec;});})[_0xeeb7('0x21')](function(_0x4e9dc1){if(_0x4e9dc1){_0x24a405[_0xeeb7('0x29')][_0xeeb7('0x70')]=_0x4e9dc1[0x0];if(!_0x377653[_0xeeb7('0x59')][_0xeeb7('0x60')])return;return db[_0xeeb7('0x71')][_0xeeb7('0x5a')]({'where':{'id':_0x377653[_0xeeb7('0x59')][_0xeeb7('0x60')],'role':'agent'},'attributes':['id',_0xeeb7('0x3a'),'fullname','email',_0xeeb7('0x74')],'raw':!![]});}return null;})[_0xeeb7('0x21')](function(_0x951f62){if(!_0x951f62)return null;_0x24a405['message'][_0xeeb7('0x61')]=_0x951f62;return _0x24a405;})[_0xeeb7('0x21')](function(_0x3cc143){if(_0x3cc143){_0x3cc143[_0xeeb7('0x29')][_0xeeb7('0x75')]=util['format'](_0xeeb7('0x76'),_0x377653['user'][_0xeeb7('0x3a')]);_0x3cc143[_0xeeb7('0x29')][_0xeeb7('0x77')]=_0x24a405[_0xeeb7('0x77')];_0x3cc143['message'][_0xeeb7('0x78')]=_0x24a405[_0xeeb7('0x77')];_0x3cc143['message']['event']='reject';respondWithRpcPromise(_0xeeb7('0x7a'),'EventManager',{'event':_0xeeb7('0x82'),'message':_0x3cc143[_0xeeb7('0x29')]},client9002);return _0x24a405;}return null;})['then'](respondWithResult(_0x46c2a4,null))[_0xeeb7('0x54')](handleError(_0x46c2a4,null));};exports[_0xeeb7('0x2c')]=function(_0x1e7c22,_0x459c60,_0x322c8b){if(_0x1e7c22[_0xeeb7('0x59')]['id']){delete _0x1e7c22[_0xeeb7('0x59')]['id'];}var _0xd78377;return db[_0xeeb7('0x51')][_0xeeb7('0x5a')]({'where':{'id':_0x1e7c22[_0xeeb7('0x56')]['id']}})[_0xeeb7('0x21')](handleEntityNotFound(_0x459c60,null))[_0xeeb7('0x21')](function(_0x2ce572){if(_0x2ce572){_0xd78377=_0x2ce572;return db[_0xeeb7('0x83')]['find']({'where':{'id':_0x2ce572[_0xeeb7('0x84')]}});}})[_0xeeb7('0x21')](handleEntityNotFound(_0x459c60,null))[_0xeeb7('0x21')](function(_0x2b7d00){if(_0x2b7d00){logger['debug'](_0xeeb7('0x85'),'status',_0xeeb7('0x86'),_0x2b7d00[_0xeeb7('0x4d')],util['inspect'](_0x1e7c22[_0xeeb7('0x59')],{'showHidden':![],'depth':null}));switch(_0x2b7d00[_0xeeb7('0x4d')]){case _0xeeb7('0x87'):if(_0x1e7c22['body'][_0xeeb7('0x88')]&&_0x1e7c22['body'][_0xeeb7('0x88')]===_0xd78377[_0xeeb7('0x89')]){return _0xd78377['update']({'read':!![]});}else{logger['error'](_0xeeb7('0x8a'),_0xeeb7('0x2c'),'twilio',util['inspect'](_0x1e7c22['body'],{'showHidden':![],'depth':null}));}break;case _0xeeb7('0x8b'):if(_0x1e7c22[_0xeeb7('0x59')][_0xeeb7('0x8c')]&&_0x1e7c22['body'][_0xeeb7('0x8c')]===_0xd78377[_0xeeb7('0x89')]&&_['indexOf']([_0xeeb7('0x8d'),_0xeeb7('0x8e')],_0x1e7c22[_0xeeb7('0x59')][_0xeeb7('0x8f')])>=0x0){return _0xd78377[_0xeeb7('0x37')]({'read':!![]});}else{logger[_0xeeb7('0x27')](_0xeeb7('0x8a'),_0xeeb7('0x2c'),_0xeeb7('0x90'),util[_0xeeb7('0x91')](_0x1e7c22[_0xeeb7('0x59')],{'showHidden':![],'depth':null}));}break;case _0xeeb7('0x92'):var _0x2a1db6=_0x1e7c22['body'][_0xeeb7('0x93')][0x0];if(_0x2a1db6['status'][_0xeeb7('0x94')]===_0xeeb7('0x95')){return _0xd78377['update']({'read':!![]});}else{logger[_0xeeb7('0x27')](_0xeeb7('0x8a'),_0xeeb7('0x2c'),'infobip',util[_0xeeb7('0x91')](_0x1e7c22[_0xeeb7('0x59')],{'showHidden':![],'depth':null}));}break;}return _0xd78377;}})[_0xeeb7('0x21')](respondWithResult(_0x459c60,null))[_0xeeb7('0x54')](handleError(_0x459c60,null));};
\ No newline at end of file
index 8c1c59d..42b6c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd4=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x2dd390,_0x1bc894){var _0x3afe47=function(_0x42d8d3){while(--_0x42d8d3){_0x2dd390['push'](_0x2dd390['shift']());}};_0x3afe47(++_0x1bc894);}(_0x9fd4,0x1e1));var _0x49fd=function(_0xa68cd9,_0x35b670){_0xa68cd9=_0xa68cd9-0x0;var _0x567abc=_0x9fd4[_0xa68cd9];return _0x567abc;};'use strict';var EventEmitter=require(_0x49fd('0x0'));var SmsMessage=require(_0x49fd('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x49fd('0x2')](0x0);var events={'afterCreate':_0x49fd('0x3'),'afterUpdate':_0x49fd('0x4'),'afterDestroy':_0x49fd('0x5')};function emitEvent(_0x28330d){return function(_0x31775e,_0x47479f,_0x31581d){SmsMessageEvents[_0x49fd('0x6')](_0x28330d+':'+_0x31775e['id'],_0x31775e);SmsMessageEvents[_0x49fd('0x6')](_0x28330d,_0x31775e);_0x31581d(null);};}for(var e in events){if(events[_0x49fd('0x7')](e)){var event=events[e];SmsMessage[_0x49fd('0x8')](e,emitEvent(event));}}module[_0x49fd('0x9')]=SmsMessageEvents;
\ No newline at end of file
+var _0x94a9=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update','remove'];(function(_0x413ff0,_0x1e782d){var _0x3826d4=function(_0x46c7ae){while(--_0x46c7ae){_0x413ff0['push'](_0x413ff0['shift']());}};_0x3826d4(++_0x1e782d);}(_0x94a9,0x1a6));var _0x994a=function(_0x5425e4,_0x5e979e){_0x5425e4=_0x5425e4-0x0;var _0x2dea2d=_0x94a9[_0x5425e4];return _0x2dea2d;};'use strict';var EventEmitter=require(_0x994a('0x0'));var SmsMessage=require(_0x994a('0x1'))['db'][_0x994a('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x994a('0x3')](0x0);var events={'afterCreate':_0x994a('0x4'),'afterUpdate':_0x994a('0x5'),'afterDestroy':_0x994a('0x6')};function emitEvent(_0x29ad5a){return function(_0x5b55f8,_0x1d51e7,_0x1e9c14){SmsMessageEvents[_0x994a('0x7')](_0x29ad5a+':'+_0x5b55f8['id'],_0x5b55f8);SmsMessageEvents[_0x994a('0x7')](_0x29ad5a,_0x5b55f8);_0x1e9c14(null);};}for(var e in events){if(events[_0x994a('0x8')](e)){var event=events[e];SmsMessage[_0x994a('0x9')](e,emitEvent(event));}}module[_0x994a('0xa')]=SmsMessageEvents;
\ No newline at end of file
index d7ee681..113cea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39ff=['then','update','createdAt','catch','error','out','secret','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','head','clickSend','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','plivo','Missing\x20parameters:\x20authId,\x20authToken','infobip','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','length','digest','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','status','refid','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','toLowerCase','direction','isNil','UserId','SmsInteractionId','SmsInteraction','findOne'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0x39ff,0x154));var _0xf39f=function(_0x236807,_0x304733){_0x236807=_0x236807-0x0;var _0x1d5507=_0x39ff[_0x236807];return _0x1d5507;};'use strict';var _=require(_0xf39f('0x0'));var util=require(_0xf39f('0x1'));var logger=require(_0xf39f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xf39f('0x3'));var rp=require(_0xf39f('0x4'));var fs=require('fs');var path=require(_0xf39f('0x5'));var rimraf=require(_0xf39f('0x6'));var config=require(_0xf39f('0x7'));var attributes=require(_0xf39f('0x8'));module['exports']=function(_0x45087a,_0x129c2d){return _0x45087a['define'](_0xf39f('0x9'),attributes,{'tableName':_0xf39f('0xa'),'paranoid':![],'indexes':[{'name':_0xf39f('0xb'),'fields':[_0xf39f('0xb')]},{'name':_0xf39f('0xc'),'fields':[_0xf39f('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xd1ccdb,_0x34c0bd,_0xc40fe){var _0x5c3af6=_0x45087a[_0xf39f('0xe')];var _0x5f44a7=_0xd1ccdb[_0xf39f('0xf')]({'plain':!![]});if(_0x5f44a7['direction'][_0xf39f('0x10')]()==='in'||_0x5f44a7[_0xf39f('0x11')][_0xf39f('0x10')]()==='out'&&!_0x5f44a7['secret']&&!_[_0xf39f('0x12')](_0x5f44a7[_0xf39f('0x13')])&&!_[_0xf39f('0x12')](_0x5f44a7[_0xf39f('0x14')])){_0x5c3af6[_0xf39f('0x15')][_0xf39f('0x16')]({'where':{'id':_0x5f44a7['SmsInteractionId']}})[_0xf39f('0x17')](function(_0x137b7c){if(_0x137b7c){_0x137b7c[_0xf39f('0x18')]({'lastMsgAt':_0x5f44a7[_0xf39f('0x19')],'lastMsgDirection':_0x5f44a7[_0xf39f('0x11')][_0xf39f('0x10')]()});}})[_0xf39f('0x1a')](function(_0x8bcf3d){console[_0xf39f('0x1b')](_0x8bcf3d);});}if(_0x5f44a7[_0xf39f('0x11')]===_0xf39f('0x1c')&&!_0x5f44a7[_0xf39f('0x1d')]){var _0x6a03f0;_0x5c3af6['SmsAccount'][_0xf39f('0x1e')]({'where':{'id':_0x5f44a7[_0xf39f('0x1f')]},'raw':!![]})[_0xf39f('0x17')](function(_0x3d7ede){_0x6a03f0=_0x3d7ede;if(_0x6a03f0&&_0x6a03f0[_0xf39f('0x20')]){switch(_0x6a03f0[_0xf39f('0x20')]){case _0xf39f('0x21'):var _0x54a8d4=require('twilio');if(_0x6a03f0[_0xf39f('0x22')]&&_0x6a03f0[_0xf39f('0x23')]&&_0x6a03f0[_0xf39f('0x24')]){var _0x175c8a=new _0x54a8d4(_0x6a03f0[_0xf39f('0x22')],_0x6a03f0['authToken']);_0x175c8a[_0xf39f('0x25')][_0xf39f('0x26')]({'body':_0x5f44a7[_0xf39f('0xd')],'to':_0x5f44a7[_0xf39f('0x24')],'from':_0x6a03f0[_0xf39f('0x24')],'statusCallback':_0x6a03f0[_0xf39f('0x27')]+_0xf39f('0x28')+_0x5f44a7['id']+'/status?token='+_0x6a03f0[_0xf39f('0x29')]})[_0xf39f('0x17')](function(_0xed7b72){if(_0xed7b72['sid']){return _0xd1ccdb['update']({'messageId':_0xed7b72[_0xf39f('0x2a')]});}})[_0xf39f('0x1a')](function(_0x5515cc){logger['error'](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x21'),util[_0xf39f('0x2d')](_0x5515cc,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf39f('0x2b'),'afterCreate',_0xf39f('0x21'),_0xf39f('0x2e'));}break;case _0xf39f('0x2f'):var _0x515ec0=_0xf39f('0x30');if(_0x6a03f0[_0xf39f('0x31')]&&_0x6a03f0[_0xf39f('0x32')]){var _0x408437={'recipient':[_0x5f44a7['phone']],'message':_0x5f44a7['body'],'message_type':_0x6a03f0[_0xf39f('0x33')]};if(_0x6a03f0[_0xf39f('0x33')]&&_0x6a03f0['smsMethod']!=='SI'){_0x408437[_0xf39f('0x34')]=_0x6a03f0[_0xf39f('0x24')];}var _0x1f8cfb={'url':_0x515ec0+_0xf39f('0x35')+_0x6a03f0[_0xf39f('0x31')]+'&password='+_0x6a03f0[_0xf39f('0x32')],'method':_0xf39f('0x36')};rp(_0x1f8cfb)[_0xf39f('0x17')](function(_0x352654){var _0x38377d=_0x352654[_0xf39f('0x37')](';');var _0xadd871={'user_key':_0x38377d[0x0],'session_key':_0x38377d[0x1]};_0x1f8cfb={'url':_0x515ec0+_0xf39f('0x38'),'method':_0xf39f('0x39'),'headers':{'user_key':_0xadd871[_0xf39f('0x3a')],'Session_key':_0xadd871[_0xf39f('0x3b')]},'json':!![],'body':_0x408437};return rp(_0x1f8cfb);})[_0xf39f('0x17')](function(_0x103d4a){if(_0x103d4a[_0xf39f('0x3c')]>=0x1){var _0x44c998={'messageId':_0x103d4a[_0xf39f('0x3d')]};if(_0x6a03f0[_0xf39f('0x33')]!=='GP'||!_0x6a03f0[_0xf39f('0x3e')]){_0x44c998[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x44c998);}else{return logger['error'](_0xf39f('0x2b'),'afterCreate',_0xf39f('0x2f'),util['inspect'](_0x103d4a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x186acc){return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x2f'),util[_0xf39f('0x2d')](_0x186acc,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),_0xf39f('0x2f'),_0xf39f('0x40'));}break;case _0xf39f('0x41'):if(_0x6a03f0['authToken']){var _0x1607fe={'recipient':_0x5f44a7[_0xf39f('0x24')],'message':_0x5f44a7[_0xf39f('0xd')],'sender':_0x6a03f0[_0xf39f('0x42')]||_0x6a03f0[_0xf39f('0x24')],'authorization':_0x6a03f0[_0xf39f('0x23')]};var _0x34c0bd={'method':_0xf39f('0x39'),'uri':_0xf39f('0x43'),'body':_0x1607fe,'json':!![]};rp(_0x34c0bd)[_0xf39f('0x17')](function(_0x1dfaf2){var _0x30c924={'messageId':_0x1dfaf2['requestid']};if(!_0x6a03f0[_0xf39f('0x3e')]){_0x30c924[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x30c924);})[_0xf39f('0x1a')](function(_0x5101d6){logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x41'),util['inspect'](_0x5101d6,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x41'),'Missing\x20parameters:\x20authToken');}break;case _0xf39f('0x44'):if(_0x6a03f0[_0xf39f('0x31')]&&_0x6a03f0[_0xf39f('0x32')]){var _0x1607fe={'messages':[{'source':_0xf39f('0x45'),'to':_0x5f44a7['phone'],'body':_0x5f44a7[_0xf39f('0xd')],'from':_0x6a03f0['senderString']||_0x6a03f0['phone']}]};var _0x85c496=util[_0xf39f('0x46')](_0xf39f('0x47'),_0x6a03f0[_0xf39f('0x31')],_0x6a03f0[_0xf39f('0x32')]);var _0x34c0bd={'method':_0xf39f('0x39'),'uri':_0xf39f('0x48'),'body':_0x1607fe,'headers':{'Authorization':util['format'](_0xf39f('0x49'),new Buffer(_0x85c496)[_0xf39f('0x4a')](_0xf39f('0x4b')))},'json':!![]};rp(_0x34c0bd)[_0xf39f('0x17')](function(_0x431b46){if(_0x431b46[_0xf39f('0x4c')]>=0xc8&&_0x431b46[_0xf39f('0x4c')]<=0xce){if(_0x431b46[_0xf39f('0x4d')]&&_0x431b46['data']['queued_count']>0x0){var _0x1050e7=_[_0xf39f('0x4e')](_0x431b46[_0xf39f('0x4d')]['messages']);var _0x32c783={'messageId':_0x1050e7['message_id']};if(!_0x6a03f0[_0xf39f('0x3e')]){_0x32c783[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x32c783);}else{logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),_0xf39f('0x4f'),util[_0xf39f('0x2d')](_0x431b46,{'showHidden':![],'depth':null}));}}else{logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),'clickSend',util[_0xf39f('0x2d')](_0x431b46,{'showHidden':![],'depth':null}));}})[_0xf39f('0x1a')](function(_0x3bf415){logger['error'](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x4f'),util[_0xf39f('0x2d')](_0x3bf415,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),'afterCreate',_0xf39f('0x4f'),_0xf39f('0x40'));}break;case'plivo':if(_0x6a03f0[_0xf39f('0x50')]&&_0x6a03f0[_0xf39f('0x23')]){var _0x1607fe={'dst':_0x5f44a7[_0xf39f('0x24')],'text':_0x5f44a7[_0xf39f('0xd')],'src':_0x6a03f0[_0xf39f('0x42')]||_0x6a03f0['phone'],'url':_0x6a03f0[_0xf39f('0x27')]+_0xf39f('0x28')+_0x5f44a7['id']+_0xf39f('0x51')+_0x6a03f0[_0xf39f('0x29')]};var _0x85c496=util[_0xf39f('0x46')](_0xf39f('0x47'),_0x6a03f0[_0xf39f('0x50')],_0x6a03f0['authToken']);var _0x34c0bd={'method':_0xf39f('0x39'),'uri':util[_0xf39f('0x46')](_0xf39f('0x52'),_0x6a03f0[_0xf39f('0x50')]),'body':_0x1607fe,'headers':{'Authorization':util['format'](_0xf39f('0x49'),new Buffer(_0x85c496)[_0xf39f('0x4a')](_0xf39f('0x4b')))},'json':!![]};rp(_0x34c0bd)[_0xf39f('0x17')](function(_0x5e4217){var _0x537a48={'messageId':_0x5e4217['message_uuid'][0x0]};return _0xd1ccdb[_0xf39f('0x18')](_0x537a48);})[_0xf39f('0x1a')](function(_0x77be8a){logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x53'),util['inspect'](_0x77be8a,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x53'),_0xf39f('0x54'));}break;case _0xf39f('0x55'):if(_0x6a03f0['username']&&_0x6a03f0[_0xf39f('0x32')]){if(_0x6a03f0['baseUrl']){var _0x4fcb86={'method':'POST','uri':_0x6a03f0['baseUrl']+_0xf39f('0x56'),'body':{'username':_0x6a03f0[_0xf39f('0x31')],'password':_0x6a03f0[_0xf39f('0x32')]},'json':!![]};return rp(_0x4fcb86)[_0xf39f('0x17')](function(_0x3b54f5){var _0x426700={'method':_0xf39f('0x39'),'uri':_0x6a03f0['baseUrl']+_0xf39f('0x57'),'body':{'messages':[{'from':_0x6a03f0[_0xf39f('0x24')],'destinations':[{'to':_0x5f44a7[_0xf39f('0x24')]}],'text':_0x5f44a7[_0xf39f('0xd')],'notifyUrl':_0x6a03f0[_0xf39f('0x27')]+'/api/sms/messages/'+_0x5f44a7['id']+_0xf39f('0x51')+_0x6a03f0[_0xf39f('0x29')],'notifyContentType':_0xf39f('0x58'),'callbackData':_0x6a03f0[_0xf39f('0x24')]+';'+_0x5f44a7['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x3b54f5[_0xf39f('0x29')]},'json':!![]};return rp(_0x426700)[_0xf39f('0x17')](function(_0x2e3f1f){if(_0x2e3f1f['messages']){var _0x1ec845={'messageId':_0x2e3f1f[_0xf39f('0x25')][0x0][_0xf39f('0xb')]};if(!_0x6a03f0[_0xf39f('0x3e')]){_0x1ec845[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x1ec845);}else{return logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),'infobip',util[_0xf39f('0x2d')](_0x2e3f1f,{'showHidden':![],'depth':null}));}});})[_0xf39f('0x1a')](function(_0x58f187){return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x55'),util['inspect'](_0x58f187,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),'infobip',_0xf39f('0x59'));}}else{logger['error'](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x55'),_0xf39f('0x40'));}break;case _0xf39f('0x5a'):var _0x6caa32=require(_0xf39f('0x5b'));if(_0x6a03f0[_0xf39f('0x5c')]){var _0x2295f3={};_0x2295f3[_0xf39f('0x5d')]=_0x6a03f0['username'];_0x2295f3[_0xf39f('0x24')]=_0x5f44a7[_0xf39f('0x24')];_0x2295f3[_0xf39f('0x34')]=_0x6a03f0['phone'];_0x2295f3[_0xf39f('0x5e')]=_0x5f44a7[_0xf39f('0xd')];_0x2295f3[_0xf39f('0x5f')]=+new Date();var _0x46df0d='';var _0x397be5='';var _0x4e6380=Object[_0xf39f('0x60')](_0x2295f3);_0x4e6380['sort']();for(var _0x43cbff=0x0;_0x43cbff<_0x4e6380[_0xf39f('0x61')];_0x43cbff++){if(_0x46df0d!=''){_0x46df0d+='&';}_0x46df0d+=_0x4e6380[_0x43cbff]+'='+encodeURIComponent(_0x2295f3[_0x4e6380[_0x43cbff]]);_0x397be5+=_0x2295f3[_0x4e6380[_0x43cbff]];}_0x397be5+=_0x6a03f0[_0xf39f('0x5c')];_0x397be5=_0x6caa32['createHash']('md5')[_0xf39f('0x18')](_0x397be5)[_0xf39f('0x62')]('hex');if(_0x46df0d!==''){_0x46df0d+='&';}_0x46df0d+=_0xf39f('0x63')+_0x397be5;var _0x1f8cfb={'method':_0xf39f('0x36'),'uri':_0x6a03f0['baseUrl']+_0xf39f('0x64')+_0x46df0d,'json':!![]};return rp(_0x1f8cfb)[_0xf39f('0x17')](function(_0x14ef76){var _0x3d9206=Object[_0xf39f('0x60')](_0x14ef76);if(_0x14ef76[_0x3d9206[0x0]][_0xf39f('0x1b')]&&parseInt(_0x14ef76[_0x3d9206[0x0]][_0xf39f('0x1b')])===0x0){var _0x54fe0b={'messageId':_0x14ef76[_0x3d9206[0x0]][_0xf39f('0x65')]};if(!_0x6a03f0[_0xf39f('0x3e')]){_0x54fe0b[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x54fe0b);}else{return logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),_0xf39f('0x5a'),util[_0xf39f('0x2d')](_0x14ef76[_0xf39f('0x1b')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x1ae549){return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),'csc',util[_0xf39f('0x2d')](_0x1ae549,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x5a'),_0xf39f('0x66'));}break;case _0xf39f('0x67'):if(_0x6a03f0[_0xf39f('0x5c')]){var _0xea9059={'method':'POST','uri':_0xf39f('0x68'),'headers':{'Authorization':_0x6a03f0[_0xf39f('0x5c')]},'body':{'content':_0x5f44a7[_0xf39f('0xd')],'to':[_0x5f44a7[_0xf39f('0x24')]],'from':_0x6a03f0[_0xf39f('0x24')],'binary':![],'clientMessageId':_0xf39f('0x69'),'charset':_0xf39f('0x6a')},'json':!![]};rp(_0xea9059)[_0xf39f('0x17')](function(_0x43076f){if(!_0x43076f[_0xf39f('0x1b')]){var _0x1578d7={'messageId':_0x43076f[_0xf39f('0x25')][0x0][_0xf39f('0x6b')]};if(!_0x6a03f0[_0xf39f('0x3e')]){_0x1578d7[_0xf39f('0x3f')]=!![];}return _0xd1ccdb[_0xf39f('0x18')](_0x1578d7);}else{return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x67'),util['inspect'](_0x43076f[_0xf39f('0x1b')],{'showHidden':![],'depth':null}));}})[_0xf39f('0x1a')](function(_0x16e662){return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x67'),util[_0xf39f('0x2d')](_0x16e662,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),'afterCreate',_0xf39f('0x67'),_0xf39f('0x66'));}break;case _0xf39f('0x6c'):if(_0x6a03f0[_0xf39f('0x31')]&&_0x6a03f0[_0xf39f('0x32')]){var _0x85c496=util[_0xf39f('0x46')](_0xf39f('0x47'),_0x6a03f0[_0xf39f('0x31')],_0x6a03f0['password']);var _0x34c0bd={'method':_0xf39f('0x39'),'uri':_0xf39f('0x6d')+_0x6a03f0[_0xf39f('0x6e')]+'/messages','body':{'to':[_0x5f44a7['phone']],'text':_0x5f44a7['body'],'from':_0x6a03f0[_0xf39f('0x24')],'applicationId':_0x6a03f0['applicationId']},'headers':{'Authorization':util[_0xf39f('0x46')](_0xf39f('0x49'),new Buffer(_0x85c496)[_0xf39f('0x4a')](_0xf39f('0x4b')))},'json':!![]};rp(_0x34c0bd)[_0xf39f('0x17')](function(_0x3ec9c3){if(_0x3ec9c3['id']){var _0xa558a9={'messageId':_0x3ec9c3['id']};return _0xd1ccdb[_0xf39f('0x18')](_0xa558a9);}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x6c'),util[_0xf39f('0x2d')](_0x3ec9c3,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5671d4){logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf39f('0x6c'),util[_0xf39f('0x2d')](_0x5671d4,{'showHidden':![],'depth':null}));});}else{logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x6c'),_0xf39f('0x40'));}break;case _0xf39f('0x6f'):if(_0x6a03f0['apiKey']){var _0x27403f={};var _0x1f8cfb={'method':_0xf39f('0x39'),'uri':_0xf39f('0x70'),'headers':{'Authorization':_0xf39f('0x71')+_0x6a03f0['apiKey'],'Content-Type':_0xf39f('0x58')},'body':{'from':_0x6a03f0['phone'],'to':_0x5f44a7[_0xf39f('0x24')],'text':_0x5f44a7['body']},'json':!![]};return rp(_0x1f8cfb)[_0xf39f('0x17')](function(_0x26ce4a){if(_0x26ce4a['code']==0xca){_0x27403f[_0xf39f('0x72')]=_0x26ce4a;var _0x3c2104={'method':_0xf39f('0x39'),'uri':_0xf39f('0x73'),'headers':{'Authorization':_0xf39f('0x71')+_0x6a03f0[_0xf39f('0x5c')],'Content-Type':_0xf39f('0x58')},'body':{'refid':_0x27403f[_0xf39f('0x72')]['refid']},'json':!![]};return rp(_0x3c2104)['then'](function(_0x4310b5){_0x27403f[_0xf39f('0x74')]=_0x4310b5;var _0x87e0ff={'messageId':_0x27403f[_0xf39f('0x72')][_0xf39f('0x75')],'read':!![]};return _0xd1ccdb['update'](_0x87e0ff);});}else{return logger[_0xf39f('0x1b')](_0xf39f('0x2b'),_0xf39f('0x2c'),_0xf39f('0x6f'),util['inspect'](_0x26ce4a,{'showHidden':![],'depth':null}));}})[_0xf39f('0x1a')](function(_0x22f886){return logger[_0xf39f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf39f('0x6f'),util[_0xf39f('0x2d')](_0x22f886,{'showHidden':![],'depth':null}));});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf39f('0x2c'),_0xf39f('0x6f'),_0xf39f('0x76'));}break;}}})['finally'](function(){_0xc40fe();});}else{_0xc40fe();}}},'charset':_0xf39f('0x77'),'collate':_0xf39f('0x78')});};
\ No newline at end of file
+var _0x1169=['sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','skebby','password','smsMethod','sender','login?username=','username','&password=','GET','split','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','clicksend','format','%s:%s','POST','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','head','data','message_id','clickSend','plivo','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','apiKey','login','text','timestamp','keys','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','rimraf','./smsMessage.attributes','exports','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','UserId','isNil','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/api/sms/messages/','token'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1169,0x1b9));var _0x9116=function(_0x17dea9,_0x4c1134){_0x17dea9=_0x17dea9-0x0;var _0x1962ca=_0x1169[_0x17dea9];return _0x1962ca;};'use strict';var _=require(_0x9116('0x0'));var util=require(_0x9116('0x1'));var logger=require(_0x9116('0x2'))(_0x9116('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(_0x9116('0x4'));var config=require('../../config/environment');var attributes=require(_0x9116('0x5'));module[_0x9116('0x6')]=function(_0x249860,_0x4de516){return _0x249860[_0x9116('0x7')]('SmsMessage',attributes,{'tableName':_0x9116('0x8'),'paranoid':![],'indexes':[{'name':_0x9116('0x9'),'fields':[_0x9116('0x9')]},{'name':_0x9116('0xa'),'fields':[_0x9116('0xb')],'type':_0x9116('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1aa278,_0x240499,_0x456db1){var _0x34e2a7=_0x249860['models'];var _0x3fd607=_0x1aa278[_0x9116('0xd')]({'plain':!![]});if(_0x3fd607[_0x9116('0xe')][_0x9116('0xf')]()==='in'||_0x3fd607[_0x9116('0xe')][_0x9116('0xf')]()===_0x9116('0x10')&&!_0x3fd607[_0x9116('0x11')]&&!_['isNil'](_0x3fd607[_0x9116('0x12')])&&!_[_0x9116('0x13')](_0x3fd607[_0x9116('0x14')])){_0x34e2a7[_0x9116('0x15')][_0x9116('0x16')]({'where':{'id':_0x3fd607['SmsInteractionId']}})[_0x9116('0x17')](function(_0x2d663e){if(_0x2d663e){_0x2d663e[_0x9116('0x18')]({'lastMsgAt':_0x3fd607[_0x9116('0x19')],'lastMsgDirection':_0x3fd607[_0x9116('0xe')]['toLowerCase']()});}})['catch'](function(_0x1b3310){console[_0x9116('0x1a')](_0x1b3310);});}if(_0x3fd607['direction']==='out'&&!_0x3fd607[_0x9116('0x11')]){var _0x1b1166;_0x34e2a7[_0x9116('0x1b')][_0x9116('0x1c')]({'where':{'id':_0x3fd607[_0x9116('0x1d')]},'raw':!![]})[_0x9116('0x17')](function(_0x5b6e90){_0x1b1166=_0x5b6e90;if(_0x1b1166&&_0x1b1166[_0x9116('0x1e')]){switch(_0x1b1166[_0x9116('0x1e')]){case _0x9116('0x1f'):var _0x3062fa=require('twilio');if(_0x1b1166[_0x9116('0x20')]&&_0x1b1166[_0x9116('0x21')]&&_0x1b1166[_0x9116('0x22')]){var _0x462d09=new _0x3062fa(_0x1b1166[_0x9116('0x20')],_0x1b1166[_0x9116('0x21')]);_0x462d09[_0x9116('0x23')]['create']({'body':_0x3fd607['body'],'to':_0x3fd607[_0x9116('0x22')],'from':_0x1b1166[_0x9116('0x22')],'statusCallback':_0x1b1166[_0x9116('0x24')]+_0x9116('0x25')+_0x3fd607['id']+'/status?token='+_0x1b1166[_0x9116('0x26')]})[_0x9116('0x17')](function(_0x52570d){if(_0x52570d[_0x9116('0x27')]){return _0x1aa278[_0x9116('0x18')]({'messageId':_0x52570d['sid']});}})[_0x9116('0x28')](function(_0x41ada2){logger[_0x9116('0x1a')](_0x9116('0x29'),'afterCreate','twilio',util[_0x9116('0x2a')](_0x41ada2,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x9116('0x2c'):var _0x31ba1e='https://api.skebby.it/API/v1.0/REST/';if(_0x1b1166['username']&&_0x1b1166[_0x9116('0x2d')]){var _0x4bab5e={'recipient':[_0x3fd607[_0x9116('0x22')]],'message':_0x3fd607[_0x9116('0xb')],'message_type':_0x1b1166[_0x9116('0x2e')]};if(_0x1b1166['smsMethod']&&_0x1b1166[_0x9116('0x2e')]!=='SI'){_0x4bab5e[_0x9116('0x2f')]=_0x1b1166['phone'];}var _0x424b78={'url':_0x31ba1e+_0x9116('0x30')+_0x1b1166[_0x9116('0x31')]+_0x9116('0x32')+_0x1b1166[_0x9116('0x2d')],'method':_0x9116('0x33')};rp(_0x424b78)[_0x9116('0x17')](function(_0x109233){var _0x16186d=_0x109233[_0x9116('0x34')](';');var _0x286037={'user_key':_0x16186d[0x0],'session_key':_0x16186d[0x1]};_0x424b78={'url':_0x31ba1e+'sms','method':'POST','headers':{'user_key':_0x286037['user_key'],'Session_key':_0x286037['session_key']},'json':!![],'body':_0x4bab5e};return rp(_0x424b78);})[_0x9116('0x17')](function(_0x3198eb){if(_0x3198eb['total_sent']>=0x1){var _0x5f2a23={'messageId':_0x3198eb[_0x9116('0x35')]};if(_0x1b1166[_0x9116('0x2e')]!=='GP'||!_0x1b1166[_0x9116('0x36')]){_0x5f2a23[_0x9116('0x37')]=!![];}return _0x1aa278[_0x9116('0x18')](_0x5f2a23);}else{return logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),'skebby',util['inspect'](_0x3198eb,{'showHidden':![],'depth':null}));}})[_0x9116('0x28')](function(_0x395d97){return logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x2c'),util[_0x9116('0x2a')](_0x395d97,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x2c'),_0x9116('0x38'));}break;case'connectel':if(_0x1b1166['authToken']){var _0x4d976a={'recipient':_0x3fd607['phone'],'message':_0x3fd607['body'],'sender':_0x1b1166[_0x9116('0x39')]||_0x1b1166[_0x9116('0x22')],'authorization':_0x1b1166[_0x9116('0x21')]};var _0x240499={'method':'POST','uri':_0x9116('0x3a'),'body':_0x4d976a,'json':!![]};rp(_0x240499)['then'](function(_0x29a34d){var _0xcff540={'messageId':_0x29a34d[_0x9116('0x3b')]};if(!_0x1b1166[_0x9116('0x36')]){_0xcff540[_0x9116('0x37')]=!![];}return _0x1aa278['update'](_0xcff540);})[_0x9116('0x28')](function(_0x1b6735){logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x3c'),util[_0x9116('0x2a')](_0x1b6735,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x3c'),'Missing\x20parameters:\x20authToken');}break;case _0x9116('0x3d'):if(_0x1b1166['username']&&_0x1b1166['password']){var _0x4d976a={'messages':[{'source':'xCALLY\x20Motion','to':_0x3fd607[_0x9116('0x22')],'body':_0x3fd607[_0x9116('0xb')],'from':_0x1b1166[_0x9116('0x39')]||_0x1b1166[_0x9116('0x22')]}]};var _0x3d31c8=util[_0x9116('0x3e')](_0x9116('0x3f'),_0x1b1166[_0x9116('0x31')],_0x1b1166['password']);var _0x240499={'method':_0x9116('0x40'),'uri':_0x9116('0x41'),'body':_0x4d976a,'headers':{'Authorization':util[_0x9116('0x3e')](_0x9116('0x42'),new Buffer(_0x3d31c8)[_0x9116('0x43')](_0x9116('0x44')))},'json':!![]};rp(_0x240499)[_0x9116('0x17')](function(_0x3d1be3){if(_0x3d1be3[_0x9116('0x45')]>=0xc8&&_0x3d1be3['http_code']<=0xce){if(_0x3d1be3['data']&&_0x3d1be3['data']['queued_count']>0x0){var _0xadd9f3=_[_0x9116('0x46')](_0x3d1be3[_0x9116('0x47')][_0x9116('0x23')]);var _0x2f9cd2={'messageId':_0xadd9f3[_0x9116('0x48')]};if(!_0x1b1166['deliveryReport']){_0x2f9cd2[_0x9116('0x37')]=!![];}return _0x1aa278['update'](_0x2f9cd2);}else{logger['error'](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x49'),util[_0x9116('0x2a')](_0x3d1be3,{'showHidden':![],'depth':null}));}}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x49'),util[_0x9116('0x2a')](_0x3d1be3,{'showHidden':![],'depth':null}));}})[_0x9116('0x28')](function(_0x356a0c){logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x49'),util[_0x9116('0x2a')](_0x356a0c,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x49'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x9116('0x4a'):if(_0x1b1166[_0x9116('0x4b')]&&_0x1b1166[_0x9116('0x21')]){var _0x4d976a={'dst':_0x3fd607['phone'],'text':_0x3fd607['body'],'src':_0x1b1166[_0x9116('0x39')]||_0x1b1166[_0x9116('0x22')],'url':_0x1b1166['remote']+_0x9116('0x25')+_0x3fd607['id']+_0x9116('0x4c')+_0x1b1166[_0x9116('0x26')]};var _0x3d31c8=util[_0x9116('0x3e')]('%s:%s',_0x1b1166[_0x9116('0x4b')],_0x1b1166[_0x9116('0x21')]);var _0x240499={'method':_0x9116('0x40'),'uri':util[_0x9116('0x3e')](_0x9116('0x4d'),_0x1b1166[_0x9116('0x4b')]),'body':_0x4d976a,'headers':{'Authorization':util[_0x9116('0x3e')](_0x9116('0x42'),new Buffer(_0x3d31c8)[_0x9116('0x43')]('base64'))},'json':!![]};rp(_0x240499)['then'](function(_0x517b5d){var _0x2b9980={'messageId':_0x517b5d[_0x9116('0x4e')][0x0]};return _0x1aa278[_0x9116('0x18')](_0x2b9980);})[_0x9116('0x28')](function(_0x1290df){logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x4a'),util[_0x9116('0x2a')](_0x1290df,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x4a'),_0x9116('0x4f'));}break;case _0x9116('0x50'):if(_0x1b1166[_0x9116('0x31')]&&_0x1b1166['password']){if(_0x1b1166[_0x9116('0x51')]){var _0x182fac={'method':_0x9116('0x40'),'uri':_0x1b1166[_0x9116('0x51')]+_0x9116('0x52'),'body':{'username':_0x1b1166[_0x9116('0x31')],'password':_0x1b1166['password']},'json':!![]};return rp(_0x182fac)[_0x9116('0x17')](function(_0x3bc00d){var _0x299c57={'method':_0x9116('0x40'),'uri':_0x1b1166['baseUrl']+_0x9116('0x53'),'body':{'messages':[{'from':_0x1b1166['phone'],'destinations':[{'to':_0x3fd607[_0x9116('0x22')]}],'text':_0x3fd607[_0x9116('0xb')],'notifyUrl':_0x1b1166['remote']+_0x9116('0x25')+_0x3fd607['id']+_0x9116('0x4c')+_0x1b1166[_0x9116('0x26')],'notifyContentType':_0x9116('0x54'),'callbackData':_0x1b1166[_0x9116('0x22')]+';'+_0x3fd607[_0x9116('0xb')]}]},'headers':{'Authorization':_0x9116('0x55')+_0x3bc00d['token']},'json':!![]};return rp(_0x299c57)['then'](function(_0x574fc6){if(_0x574fc6[_0x9116('0x23')]){var _0x186d0f={'messageId':_0x574fc6[_0x9116('0x23')][0x0]['messageId']};if(!_0x1b1166['deliveryReport']){_0x186d0f[_0x9116('0x37')]=!![];}return _0x1aa278[_0x9116('0x18')](_0x186d0f);}else{return logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),'infobip',util[_0x9116('0x2a')](_0x574fc6,{'showHidden':![],'depth':null}));}});})[_0x9116('0x28')](function(_0x2f11b0){return logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x50'),util[_0x9116('0x2a')](_0x2f11b0,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x50'),_0x9116('0x56'));}}else{logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x50'),_0x9116('0x38'));}break;case'csc':var _0x4de31f=require('crypto');if(_0x1b1166[_0x9116('0x57')]){var _0x241d57={};_0x241d57[_0x9116('0x58')]=_0x1b1166['username'];_0x241d57[_0x9116('0x22')]=_0x3fd607['phone'];_0x241d57['sender']=_0x1b1166[_0x9116('0x22')];_0x241d57[_0x9116('0x59')]=_0x3fd607[_0x9116('0xb')];_0x241d57[_0x9116('0x5a')]=+new Date();var _0x3f4fb5='';var _0xaf27c1='';var _0x546ffb=Object[_0x9116('0x5b')](_0x241d57);_0x546ffb['sort']();for(var _0xbc4c90=0x0;_0xbc4c90<_0x546ffb[_0x9116('0x5c')];_0xbc4c90++){if(_0x3f4fb5!=''){_0x3f4fb5+='&';}_0x3f4fb5+=_0x546ffb[_0xbc4c90]+'='+encodeURIComponent(_0x241d57[_0x546ffb[_0xbc4c90]]);_0xaf27c1+=_0x241d57[_0x546ffb[_0xbc4c90]];}_0xaf27c1+=_0x1b1166['apiKey'];_0xaf27c1=_0x4de31f[_0x9116('0x5d')](_0x9116('0x5e'))[_0x9116('0x18')](_0xaf27c1)[_0x9116('0x5f')](_0x9116('0x60'));if(_0x3f4fb5!==''){_0x3f4fb5+='&';}_0x3f4fb5+=_0x9116('0x61')+_0xaf27c1;var _0x424b78={'method':_0x9116('0x33'),'uri':_0x1b1166[_0x9116('0x51')]+_0x9116('0x62')+_0x3f4fb5,'json':!![]};return rp(_0x424b78)[_0x9116('0x17')](function(_0x1d0fcd){var _0x3009e3=Object[_0x9116('0x5b')](_0x1d0fcd);if(_0x1d0fcd[_0x3009e3[0x0]][_0x9116('0x1a')]&&parseInt(_0x1d0fcd[_0x3009e3[0x0]][_0x9116('0x1a')])===0x0){var _0x55eae1={'messageId':_0x1d0fcd[_0x3009e3[0x0]][_0x9116('0x63')]};if(!_0x1b1166[_0x9116('0x36')]){_0x55eae1[_0x9116('0x37')]=!![];}return _0x1aa278['update'](_0x55eae1);}else{return logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x64'),util[_0x9116('0x2a')](_0x1d0fcd[_0x9116('0x1a')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x3bd292){return logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x64'),util['inspect'](_0x3bd292,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x64'),_0x9116('0x65'));}break;case _0x9116('0x66'):if(_0x1b1166[_0x9116('0x57')]){var _0x7b60d0={'method':_0x9116('0x40'),'uri':_0x9116('0x67'),'headers':{'Authorization':_0x1b1166[_0x9116('0x57')]},'body':{'content':_0x3fd607[_0x9116('0xb')],'to':[_0x3fd607['phone']],'from':_0x1b1166[_0x9116('0x22')],'binary':![],'clientMessageId':_0x9116('0x68'),'charset':_0x9116('0x69')},'json':!![]};rp(_0x7b60d0)[_0x9116('0x17')](function(_0x391fe5){if(!_0x391fe5['error']){var _0x2c3e87={'messageId':_0x391fe5[_0x9116('0x23')][0x0]['apiMessageId']};if(!_0x1b1166[_0x9116('0x36')]){_0x2c3e87[_0x9116('0x37')]=!![];}return _0x1aa278[_0x9116('0x18')](_0x2c3e87);}else{return logger['error'](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x66'),util[_0x9116('0x2a')](_0x391fe5[_0x9116('0x1a')],{'showHidden':![],'depth':null}));}})[_0x9116('0x28')](function(_0x113ea4){return logger['error'](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x66'),util[_0x9116('0x2a')](_0x113ea4,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x66'),_0x9116('0x65'));}break;case _0x9116('0x6a'):if(_0x1b1166['username']&&_0x1b1166[_0x9116('0x2d')]){var _0x3d31c8=util[_0x9116('0x3e')](_0x9116('0x3f'),_0x1b1166[_0x9116('0x31')],_0x1b1166['password']);var _0x240499={'method':_0x9116('0x40'),'uri':_0x9116('0x6b')+_0x1b1166[_0x9116('0x6c')]+'/messages','body':{'to':[_0x3fd607[_0x9116('0x22')]],'text':_0x3fd607['body'],'from':_0x1b1166['phone'],'applicationId':_0x1b1166[_0x9116('0x6d')]},'headers':{'Authorization':util[_0x9116('0x3e')](_0x9116('0x42'),new Buffer(_0x3d31c8)['toString'](_0x9116('0x44')))},'json':!![]};rp(_0x240499)[_0x9116('0x17')](function(_0x246dca){if(_0x246dca['id']){var _0x4ebf3d={'messageId':_0x246dca['id']};return _0x1aa278['update'](_0x4ebf3d);}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x6a'),util[_0x9116('0x2a')](_0x246dca,{'showHidden':![],'depth':null}));}})[_0x9116('0x28')](function(_0x1d4371){logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),'bandwidth',util[_0x9116('0x2a')](_0x1d4371,{'showHidden':![],'depth':null}));});}else{logger[_0x9116('0x1a')](_0x9116('0x29'),_0x9116('0x2b'),_0x9116('0x6a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x9116('0x6e'):if(_0x1b1166[_0x9116('0x57')]){var _0x5311c9={};var _0x424b78={'method':'POST','uri':_0x9116('0x6f'),'headers':{'Authorization':_0x9116('0x70')+_0x1b1166[_0x9116('0x57')],'Content-Type':'application/json'},'body':{'from':_0x1b1166[_0x9116('0x22')],'to':_0x3fd607[_0x9116('0x22')],'text':_0x3fd607[_0x9116('0xb')]},'json':!![]};return rp(_0x424b78)[_0x9116('0x17')](function(_0x5d4c92){if(_0x5d4c92[_0x9116('0x71')]==0xca){_0x5311c9[_0x9116('0x72')]=_0x5d4c92;var _0x5622de={'method':'POST','uri':_0x9116('0x73'),'headers':{'Authorization':'Bearer\x20'+_0x1b1166[_0x9116('0x57')],'Content-Type':_0x9116('0x54')},'body':{'refid':_0x5311c9['message']['refid']},'json':!![]};return rp(_0x5622de)['then'](function(_0x31f5c1){_0x5311c9['status']=_0x31f5c1;var _0x2fc608={'messageId':_0x5311c9['message'][_0x9116('0x74')],'read':!![]};return _0x1aa278[_0x9116('0x18')](_0x2fc608);});}else{return logger['error'](_0x9116('0x29'),'afterCreate','intelepeer',util['inspect'](_0x5d4c92,{'showHidden':![],'depth':null}));}})['catch'](function(_0x1eb874){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),'intelepeer',util['inspect'](_0x1eb874,{'showHidden':![],'depth':null}));});}else{return logger[_0x9116('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x9116('0x2b'),_0x9116('0x6e'),_0x9116('0x75'));}break;}}})[_0x9116('0x76')](function(){_0x456db1();});}else{_0x456db1();}}},'charset':'utf8mb4','collate':_0x9116('0x77')});};
\ No newline at end of file
index 63a1dbc..39ff356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16ab=['./smsMessage.socket','register','request','then','info','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','raw','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','redis','defaults'];(function(_0x18d231,_0x23a90b){var _0x5dcdea=function(_0xb995a8){while(--_0xb995a8){_0x18d231['push'](_0x18d231['shift']());}};_0x5dcdea(++_0x23a90b);}(_0x16ab,0x75));var _0xb16a=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x16ab[_0x4fbfd9];return _0x31dc94;};'use strict';var _=require(_0xb16a('0x0'));var util=require(_0xb16a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb16a('0x2'));var fs=require('fs');var Redis=require(_0xb16a('0x3'));var db=require(_0xb16a('0x4'))['db'];var utils=require(_0xb16a('0x5'));var logger=require('../../config/logger')(_0xb16a('0x6'));var config=require(_0xb16a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb16a('0x8')]['http']({'port':0x232a});config[_0xb16a('0x9')]=_[_0xb16a('0xa')](config[_0xb16a('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb16a('0x9')]));require(_0xb16a('0xb'))[_0xb16a('0xc')](socket);function respondWithRpcPromise(_0x474b5b,_0x3399dc,_0x4d1e83){return new BPromise(function(_0x441c1c,_0x52c75c){return client[_0xb16a('0xd')](_0x474b5b,_0x4d1e83)[_0xb16a('0xe')](function(_0x3bfab0){logger[_0xb16a('0xf')]('SmsMessage,\x20%s,\x20%s',_0x3399dc,'request\x20sent');logger[_0xb16a('0x10')](_0xb16a('0x11'),_0x3399dc,_0xb16a('0x12'),JSON[_0xb16a('0x13')](_0x3bfab0));if(_0x3bfab0[_0xb16a('0x14')]){if(_0x3bfab0[_0xb16a('0x14')][_0xb16a('0x15')]===0x1f4){logger['error'](_0xb16a('0x16'),_0x3399dc,_0x3bfab0[_0xb16a('0x14')][_0xb16a('0x17')]);return _0x52c75c(_0x3bfab0[_0xb16a('0x14')]['message']);}logger[_0xb16a('0x14')](_0xb16a('0x16'),_0x3399dc,_0x3bfab0[_0xb16a('0x14')][_0xb16a('0x17')]);return _0x441c1c(_0x3bfab0[_0xb16a('0x14')][_0xb16a('0x17')]);}else{logger[_0xb16a('0xf')](_0xb16a('0x16'),_0x3399dc,_0xb16a('0x12'));_0x441c1c(_0x3bfab0[_0xb16a('0x18')][_0xb16a('0x17')]);}})[_0xb16a('0x19')](function(_0x9c278c){logger['error']('SmsMessage,\x20%s,\x20%s',_0x3399dc,_0x9c278c);_0x52c75c(_0x9c278c);});});}exports[_0xb16a('0x1a')]=function(_0x401570){var _0x52bc19=this;return new Promise(function(_0x229df2,_0x8c5115){return db[_0xb16a('0x1b')][_0xb16a('0x1c')](_0x401570[_0xb16a('0x1d')],{'raw':_0x401570[_0xb16a('0x1e')]?_0x401570[_0xb16a('0x1e')][_0xb16a('0x1f')]===undefined?!![]:![]:!![]})[_0xb16a('0xe')](function(_0x5eed9c){logger[_0xb16a('0xf')](_0xb16a('0x1a'),_0x401570);logger[_0xb16a('0x10')]('CreateSmsMessage',_0x401570,JSON['stringify'](_0x5eed9c));_0x229df2(_0x5eed9c);})['catch'](function(_0x3c5dba){logger['error'](_0xb16a('0x1a'),_0x3c5dba[_0xb16a('0x17')],_0x401570);_0x8c5115(_0x52bc19[_0xb16a('0x14')](0x1f4,_0x3c5dba['message']));});});};
\ No newline at end of file
+var _0xf0f9=['stringify','code','error','SmsMessage,\x20%s,\x20%s','message','catch','CreateSmsMessage','SmsMessage','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','./smsMessage.socket','register','then','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s'];(function(_0x3c3a37,_0x137fc5){var _0x30e6cc=function(_0x419e36){while(--_0x419e36){_0x3c3a37['push'](_0x3c3a37['shift']());}};_0x30e6cc(++_0x137fc5);}(_0xf0f9,0x14a));var _0x9f0f=function(_0x1711f1,_0x5dd611){_0x1711f1=_0x1711f1-0x0;var _0x2e170d=_0xf0f9[_0x1711f1];return _0x2e170d;};'use strict';var _=require(_0x9f0f('0x0'));var util=require(_0x9f0f('0x1'));var moment=require(_0x9f0f('0x2'));var BPromise=require(_0x9f0f('0x3'));var rs=require(_0x9f0f('0x4'));var fs=require('fs');var Redis=require(_0x9f0f('0x5'));var db=require(_0x9f0f('0x6'))['db'];var utils=require(_0x9f0f('0x7'));var logger=require(_0x9f0f('0x8'))(_0x9f0f('0x9'));var config=require('../../config/environment');var jayson=require(_0x9f0f('0xa'));var client=jayson['client'][_0x9f0f('0xb')]({'port':0x232a});config[_0x9f0f('0xc')]=_['defaults'](config[_0x9f0f('0xc')],{'host':_0x9f0f('0xd'),'port':0x18eb});var socket=require(_0x9f0f('0xe'))(new Redis(config[_0x9f0f('0xc')]));require(_0x9f0f('0xf'))[_0x9f0f('0x10')](socket);function respondWithRpcPromise(_0x18bf6a,_0x5d51c3,_0x2f663e){return new BPromise(function(_0x379517,_0x59b3db){return client['request'](_0x18bf6a,_0x2f663e)[_0x9f0f('0x11')](function(_0x22e52b){logger[_0x9f0f('0x12')]('SmsMessage,\x20%s,\x20%s',_0x5d51c3,_0x9f0f('0x13'));logger[_0x9f0f('0x14')](_0x9f0f('0x15'),_0x5d51c3,'request\x20sent',JSON[_0x9f0f('0x16')](_0x22e52b));if(_0x22e52b['error']){if(_0x22e52b['error'][_0x9f0f('0x17')]===0x1f4){logger[_0x9f0f('0x18')](_0x9f0f('0x19'),_0x5d51c3,_0x22e52b[_0x9f0f('0x18')][_0x9f0f('0x1a')]);return _0x59b3db(_0x22e52b[_0x9f0f('0x18')][_0x9f0f('0x1a')]);}logger['error'](_0x9f0f('0x19'),_0x5d51c3,_0x22e52b[_0x9f0f('0x18')][_0x9f0f('0x1a')]);return _0x379517(_0x22e52b[_0x9f0f('0x18')][_0x9f0f('0x1a')]);}else{logger[_0x9f0f('0x12')](_0x9f0f('0x19'),_0x5d51c3,'request\x20sent');_0x379517(_0x22e52b['result']['message']);}})[_0x9f0f('0x1b')](function(_0x28f733){logger[_0x9f0f('0x18')](_0x9f0f('0x19'),_0x5d51c3,_0x28f733);_0x59b3db(_0x28f733);});});}exports[_0x9f0f('0x1c')]=function(_0x373710){var _0x42457b=this;return new Promise(function(_0x15b307,_0x5c85dd){return db[_0x9f0f('0x1d')]['create'](_0x373710['body'],{'raw':_0x373710[_0x9f0f('0x1e')]?_0x373710[_0x9f0f('0x1e')][_0x9f0f('0x1f')]===undefined?!![]:![]:!![]})[_0x9f0f('0x11')](function(_0x4e9966){logger[_0x9f0f('0x12')](_0x9f0f('0x1c'),_0x373710);logger[_0x9f0f('0x14')](_0x9f0f('0x1c'),_0x373710,JSON[_0x9f0f('0x16')](_0x4e9966));_0x15b307(_0x4e9966);})[_0x9f0f('0x1b')](function(_0x5b13a8){logger['error'](_0x9f0f('0x1c'),_0x5b13a8[_0x9f0f('0x1a')],_0x373710);_0x5c85dd(_0x42457b[_0x9f0f('0x18')](0x1f4,_0x5b13a8['message']));});});};
\ No newline at end of file
index 7ad3a66..ac372df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaa5=['update','emit','removeListener','length','smsMessage:','./smsMessage.events','save','remove'];(function(_0x836465,_0x5442ae){var _0x2150ea=function(_0x4f4bc2){while(--_0x4f4bc2){_0x836465['push'](_0x836465['shift']());}};_0x2150ea(++_0x5442ae);}(_0xfaa5,0x115));var _0x5faa=function(_0x4578e7,_0x1c72a2){_0x4578e7=_0x4578e7-0x0;var _0x3db768=_0xfaa5[_0x4578e7];return _0x3db768;};'use strict';var SmsMessageEvents=require(_0x5faa('0x0'));var events=[_0x5faa('0x1'),_0x5faa('0x2'),_0x5faa('0x3')];function createListener(_0x26d777,_0x508346){return function(_0x149a01){_0x508346[_0x5faa('0x4')](_0x26d777,_0x149a01);};}function removeListener(_0x9bd71b,_0x4385db){return function(){SmsMessageEvents[_0x5faa('0x5')](_0x9bd71b,_0x4385db);};}exports['register']=function(_0x59bcbf){for(var _0x3d3c01=0x0,_0x42f037=events[_0x5faa('0x6')];_0x3d3c01<_0x42f037;_0x3d3c01++){var _0x4be9d8=events[_0x3d3c01];var _0x19a897=createListener(_0x5faa('0x7')+_0x4be9d8,_0x59bcbf);SmsMessageEvents['on'](_0x4be9d8,_0x19a897);}};
\ No newline at end of file
+var _0xe977=['emit','removeListener','register','length','smsMessage:','./smsMessage.events','save','remove','update'];(function(_0xbca15c,_0x5ac4cc){var _0x2f2a88=function(_0x1ab4b6){while(--_0x1ab4b6){_0xbca15c['push'](_0xbca15c['shift']());}};_0x2f2a88(++_0x5ac4cc);}(_0xe977,0xdd));var _0x7e97=function(_0x11dae,_0x30b871){_0x11dae=_0x11dae-0x0;var _0x1c25f1=_0xe977[_0x11dae];return _0x1c25f1;};'use strict';var SmsMessageEvents=require(_0x7e97('0x0'));var events=[_0x7e97('0x1'),_0x7e97('0x2'),_0x7e97('0x3')];function createListener(_0x1967e5,_0x1a5ddc){return function(_0x14bb04){_0x1a5ddc[_0x7e97('0x4')](_0x1967e5,_0x14bb04);};}function removeListener(_0x5ad800,_0x46a4a9){return function(){SmsMessageEvents[_0x7e97('0x5')](_0x5ad800,_0x46a4a9);};}exports[_0x7e97('0x6')]=function(_0x3ed82a){for(var _0x584dbd=0x0,_0xd4cd1a=events[_0x7e97('0x7')];_0x584dbd<_0xd4cd1a;_0x584dbd++){var _0x30b16e=events[_0x584dbd];var _0x599ebb=createListener(_0x7e97('0x8')+_0x30b16e,_0x3ed82a);SmsMessageEvents['on'](_0x30b16e,_0x599ebb);}};
\ No newline at end of file
index 2642b47..c2384c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d45=['exports','multer','util','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','update','delete','destroy','removeTeams','removeAgents'];(function(_0x30182f,_0x30ce41){var _0x5207db=function(_0x50a417){while(--_0x50a417){_0x30182f['push'](_0x30182f['shift']());}};_0x5207db(++_0x30ce41);}(_0x1d45,0x1e7));var _0x51d4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x1d45[_0x4f9b18];return _0x29f20c;};'use strict';var multer=require(_0x51d4('0x0'));var util=require(_0x51d4('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x51d4('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x51d4('0x3'));var interaction=require(_0x51d4('0x4'));var config=require(_0x51d4('0x5'));var controller=require('./smsQueue.controller');router[_0x51d4('0x6')]('/',auth['isAuthenticated'](),controller[_0x51d4('0x7')]);router[_0x51d4('0x6')](_0x51d4('0x8'),auth[_0x51d4('0x9')](),controller[_0x51d4('0xa')]);router[_0x51d4('0x6')](_0x51d4('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x51d4('0x6')](_0x51d4('0xc'),auth[_0x51d4('0x9')](),controller['getMembers']);router['get'](_0x51d4('0xd'),auth[_0x51d4('0x9')](),controller[_0x51d4('0xe')]);router[_0x51d4('0x6')](_0x51d4('0xf'),auth[_0x51d4('0x9')](),controller[_0x51d4('0x10')]);router[_0x51d4('0x11')]('/',auth['isAuthenticated'](),controller[_0x51d4('0x12')]);router[_0x51d4('0x11')](_0x51d4('0xd'),auth['isAuthenticated'](),controller[_0x51d4('0x13')]);router['post']('/:id/users',auth[_0x51d4('0x9')](),controller[_0x51d4('0x14')]);router['put'](_0x51d4('0xb'),auth[_0x51d4('0x9')](),controller[_0x51d4('0x15')]);router[_0x51d4('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x51d4('0x17')]);router[_0x51d4('0x16')](_0x51d4('0xd'),auth[_0x51d4('0x9')](),controller[_0x51d4('0x18')]);router[_0x51d4('0x16')](_0x51d4('0xf'),auth[_0x51d4('0x9')](),controller[_0x51d4('0x19')]);module[_0x51d4('0x1a')]=router;
\ No newline at end of file
+var _0xac5d=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','index','/describe','/:id','isAuthenticated','show','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','removeTeams'];(function(_0x431b24,_0x40d94e){var _0xb787ea=function(_0x4da066){while(--_0x4da066){_0x431b24['push'](_0x431b24['shift']());}};_0xb787ea(++_0x40d94e);}(_0xac5d,0x135));var _0xdac5=function(_0x185952,_0x914ad8){_0x185952=_0x185952-0x0;var _0x3b2d90=_0xac5d[_0x185952];return _0x3b2d90;};'use strict';var multer=require(_0xdac5('0x0'));var util=require(_0xdac5('0x1'));var path=require(_0xdac5('0x2'));var timeout=require(_0xdac5('0x3'));var express=require('express');var router=express[_0xdac5('0x4')]();var fs_extra=require(_0xdac5('0x5'));var auth=require(_0xdac5('0x6'));var interaction=require(_0xdac5('0x7'));var config=require(_0xdac5('0x8'));var controller=require(_0xdac5('0x9'));router[_0xdac5('0xa')]('/',auth['isAuthenticated'](),controller[_0xdac5('0xb')]);router[_0xdac5('0xa')](_0xdac5('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xdac5('0xa')](_0xdac5('0xd'),auth[_0xdac5('0xe')](),controller[_0xdac5('0xf')]);router['get']('/:id/members',auth[_0xdac5('0xe')](),controller['getMembers']);router[_0xdac5('0xa')](_0xdac5('0x10'),auth[_0xdac5('0xe')](),controller[_0xdac5('0x11')]);router['get'](_0xdac5('0x12'),auth[_0xdac5('0xe')](),controller['getAgents']);router[_0xdac5('0x13')]('/',auth[_0xdac5('0xe')](),controller[_0xdac5('0x14')]);router['post']('/:id/teams',auth[_0xdac5('0xe')](),controller[_0xdac5('0x15')]);router[_0xdac5('0x13')](_0xdac5('0x12'),auth[_0xdac5('0xe')](),controller[_0xdac5('0x16')]);router[_0xdac5('0x17')](_0xdac5('0xd'),auth['isAuthenticated'](),controller[_0xdac5('0x18')]);router[_0xdac5('0x19')](_0xdac5('0xd'),auth[_0xdac5('0xe')](),controller['destroy']);router[_0xdac5('0x19')]('/:id/teams',auth['isAuthenticated'](),controller[_0xdac5('0x1a')]);router[_0xdac5('0x19')]('/:id/users',auth[_0xdac5('0xe')](),controller['removeAgents']);module[_0xdac5('0x1b')]=router;
\ No newline at end of file
index 7ecd51e..df22692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaa4=['STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x29ff2b,_0x4dbb3f){var _0x11e9ea=function(_0x8d33f){while(--_0x8d33f){_0x29ff2b['push'](_0x29ff2b['shift']());}};_0x11e9ea(++_0x4dbb3f);}(_0xaaa4,0x1ed));var _0x4aaa=function(_0x34deaa,_0x51e2cf){_0x34deaa=_0x34deaa-0x0;var _0x97b446=_0xaaa4[_0x34deaa];return _0x97b446;};'use strict';var Sequelize=require(_0x4aaa('0x0'));module[_0x4aaa('0x1')]={'name':{'type':Sequelize[_0x4aaa('0x2')],'unique':_0x4aaa('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4aaa('0x2')]},'timeout':{'type':Sequelize[_0x4aaa('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4aaa('0x5')](_0x4aaa('0x6'),_0x4aaa('0x7'),_0x4aaa('0x8'))}};
\ No newline at end of file
+var _0x2325=['STRING','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','name'];(function(_0x410c19,_0x2aad59){var _0x29de6e=function(_0x5b7af9){while(--_0x5b7af9){_0x410c19['push'](_0x410c19['shift']());}};_0x29de6e(++_0x2aad59);}(_0x2325,0xed));var _0x5232=function(_0x467075,_0x524d49){_0x467075=_0x467075-0x0;var _0x61a8c6=_0x2325[_0x467075];return _0x61a8c6;};'use strict';var Sequelize=require(_0x5232('0x0'));module[_0x5232('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5232('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5232('0x3')]},'timeout':{'type':Sequelize[_0x5232('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5232('0x5')](_0x5232('0x6'),'beepall',_0x5232('0x7'))}};
\ No newline at end of file
index 4a73144..264b766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['findOne','UserSmsQueue','rawAttributes','nolimit','order','findAll','User','findAndCountAll','agent','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','Team','addTeams','Agents','online','voicePause','interface','findOrCreate','emit','userSmsQueue:save','removeTeams','ids','select','field','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','TeamId','union','transaction','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','eml-format','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','get','SmsQueues','UserProfileResource','destroy','error','stack','name','send','map','SmsQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','getMembers'];(function(_0x2739f0,_0x3ce5df){var _0x209be9=function(_0x404573){while(--_0x404573){_0x2739f0['push'](_0x2739f0['shift']());}};_0x209be9(++_0x3ce5df);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x42f10a,_0x168b4e){_0x42f10a=_0x42f10a-0x0;var _0x24b008=_0xdd4f[_0x42f10a];return _0x24b008;};'use strict';var emlformat=require(_0xfdd4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd4('0x1'));var moment=require(_0xfdd4('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xfdd4('0x3'));var util=require(_0xfdd4('0x4'));var path=require(_0xfdd4('0x5'));var sox=require('sox');var csv=require(_0xfdd4('0x6'));var ejs=require(_0xfdd4('0x7'));var fs=require('fs');var fs_extra=require(_0xfdd4('0x8'));var _=require(_0xfdd4('0x9'));var squel=require(_0xfdd4('0xa'));var crypto=require('crypto');var jsforce=require(_0xfdd4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xfdd4('0x6'));var querystring=require(_0xfdd4('0xc'));var Papa=require(_0xfdd4('0xd'));var Redis=require('ioredis');var authService=require(_0xfdd4('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xfdd4('0xf'));var hardwareService=require(_0xfdd4('0x10'));var logger=require(_0xfdd4('0x11'))(_0xfdd4('0x12'));var utils=require(_0xfdd4('0x13'));var config=require(_0xfdd4('0x14'));var licenseUtil=require(_0xfdd4('0x15'));var db=require(_0xfdd4('0x16'))['db'];config[_0xfdd4('0x17')]=_[_0xfdd4('0x18')](config[_0xfdd4('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xfdd4('0x19'))(new Redis(config[_0xfdd4('0x17')]));require(_0xfdd4('0x1a'))['register'](socket);function respondWithStatusCode(_0x1b7da1,_0x4aaeee){_0x4aaeee=_0x4aaeee||0xcc;return function(_0x467824){if(_0x467824){return _0x1b7da1[_0xfdd4('0x1b')](_0x4aaeee);}return _0x1b7da1[_0xfdd4('0x1c')](_0x4aaeee)[_0xfdd4('0x1d')]();};}function respondWithResult(_0x37b05f,_0x52cf2c){_0x52cf2c=_0x52cf2c||0xc8;return function(_0x47ed1d){if(_0x47ed1d){return _0x37b05f['status'](_0x52cf2c)[_0xfdd4('0x1e')](_0x47ed1d);}};}function respondWithFilteredResult(_0x216c7e,_0x2eb174){return function(_0x2ccc88){if(_0x2ccc88){var _0x32b5f7=typeof _0x2eb174[_0xfdd4('0x1f')]===_0xfdd4('0x20')&&typeof _0x2eb174[_0xfdd4('0x21')]===_0xfdd4('0x20');var _0x52ce34=_0x2ccc88[_0xfdd4('0x22')];var _0x3e8eac=_0x32b5f7?0x0:_0x2eb174[_0xfdd4('0x1f')];var _0x36e611=_0x32b5f7?_0x2ccc88[_0xfdd4('0x22')]:_0x2eb174[_0xfdd4('0x1f')]+_0x2eb174[_0xfdd4('0x21')];var _0x34dfa8;if(_0x36e611>=_0x52ce34){_0x36e611=_0x52ce34;_0x34dfa8=0xc8;}else{_0x34dfa8=0xce;}_0x216c7e['status'](_0x34dfa8);return _0x216c7e[_0xfdd4('0x23')](_0xfdd4('0x24'),_0x3e8eac+'-'+_0x36e611+'/'+_0x52ce34)[_0xfdd4('0x1e')](_0x2ccc88);}return null;};}function patchUpdates(_0x16e81b){return function(_0xb7856d){try{jsonpatch[_0xfdd4('0x25')](_0xb7856d,_0x16e81b,!![]);}catch(_0x451767){return BPromise[_0xfdd4('0x26')](_0x451767);}return _0xb7856d['save']();};}function saveUpdates(_0x1e14da,_0x1112e8){return function(_0x4397a3){if(_0x4397a3){return _0x4397a3['update'](_0x1e14da)[_0xfdd4('0x27')](function(_0x39b712){return _0x39b712;});}return null;};}function removeEntity(_0xf9c346,_0x2f8268){return function(_0x1ade42){if(_0x1ade42){return _0x1ade42['destroy']()[_0xfdd4('0x27')](function(){var _0x2c88ad=_0x1ade42[_0xfdd4('0x28')]({'plain':!![]});var _0x31e053=_0xfdd4('0x29');return db[_0xfdd4('0x2a')][_0xfdd4('0x2b')]({'where':{'type':_0x31e053,'resourceId':_0x2c88ad['id']}})[_0xfdd4('0x27')](function(){return _0x1ade42;});})['then'](function(){_0xf9c346[_0xfdd4('0x1c')](0xcc)[_0xfdd4('0x1d')]();});}};}function handleEntityNotFound(_0x385a68,_0xef012e){return function(_0x2207ae){if(!_0x2207ae){_0x385a68['sendStatus'](0x194);}return _0x2207ae;};}function handleError(_0xd127b1,_0x3372d2){_0x3372d2=_0x3372d2||0x1f4;return function(_0xbf38b4){logger[_0xfdd4('0x2c')](_0xbf38b4[_0xfdd4('0x2d')]);if(_0xbf38b4['name']){delete _0xbf38b4[_0xfdd4('0x2e')];}_0xd127b1[_0xfdd4('0x1c')](_0x3372d2)[_0xfdd4('0x2f')](_0xbf38b4);};}exports['index']=function(_0x3fd07a,_0x502776){var _0x2a65c8={},_0x2b22f9={},_0x4aa4f2={'count':0x0,'rows':[]};var _0x50b748=_[_0xfdd4('0x30')](db[_0xfdd4('0x31')]['rawAttributes'],function(_0x557d7b){return{'name':_0x557d7b[_0xfdd4('0x32')],'type':_0x557d7b[_0xfdd4('0x33')][_0xfdd4('0x34')]};});_0x2b22f9[_0xfdd4('0x35')]=_[_0xfdd4('0x30')](_0x50b748,_0xfdd4('0x2e'));_0x2b22f9[_0xfdd4('0x36')]=_[_0xfdd4('0x37')](_0x3fd07a[_0xfdd4('0x36')]);_0x2b22f9[_0xfdd4('0x38')]=_[_0xfdd4('0x39')](_0x2b22f9[_0xfdd4('0x35')],_0x2b22f9[_0xfdd4('0x36')]);_0x2a65c8[_0xfdd4('0x3a')]=_[_0xfdd4('0x39')](_0x2b22f9[_0xfdd4('0x35')],qs[_0xfdd4('0x3b')](_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x3b')]));_0x2a65c8[_0xfdd4('0x3a')]=_0x2a65c8[_0xfdd4('0x3a')][_0xfdd4('0x3c')]?_0x2a65c8[_0xfdd4('0x3a')]:_0x2b22f9[_0xfdd4('0x35')];if(!_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x3d')]('nolimit')){_0x2a65c8[_0xfdd4('0x21')]=qs[_0xfdd4('0x21')](_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x21')]);_0x2a65c8[_0xfdd4('0x1f')]=qs[_0xfdd4('0x1f')](_0x3fd07a['query'][_0xfdd4('0x1f')]);}_0x2a65c8['order']=qs[_0xfdd4('0x3e')](_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x3e')]);_0x2a65c8[_0xfdd4('0x3f')]=qs['filters'](_[_0xfdd4('0x40')](_0x3fd07a[_0xfdd4('0x36')],_0x2b22f9[_0xfdd4('0x38')]),_0x50b748);if(_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x41')]){_0x2a65c8[_0xfdd4('0x3f')]=_[_0xfdd4('0x42')](_0x2a65c8[_0xfdd4('0x3f')],{'$or':_[_0xfdd4('0x30')](_0x50b748,function(_0x83673d){if(_0x83673d['type']!==_0xfdd4('0x43')){var _0x2196f={};_0x2196f[_0x83673d[_0xfdd4('0x2e')]]={'$like':'%'+_0x3fd07a[_0xfdd4('0x36')]['filter']+'%'};return _0x2196f;}})});}_0x2a65c8=_[_0xfdd4('0x42')]({},_0x2a65c8,_0x3fd07a[_0xfdd4('0x44')]);var _0x30524f={'where':_0x2a65c8[_0xfdd4('0x3f')]};return db[_0xfdd4('0x31')]['count'](_0x30524f)[_0xfdd4('0x27')](function(_0x23af2a){_0x4aa4f2[_0xfdd4('0x22')]=_0x23af2a;if(_0x3fd07a[_0xfdd4('0x36')][_0xfdd4('0x45')]){_0x2a65c8[_0xfdd4('0x46')]=[{'all':!![]}];}return db[_0xfdd4('0x31')]['findAll'](_0x2a65c8);})[_0xfdd4('0x27')](function(_0x586713){_0x4aa4f2[_0xfdd4('0x47')]=_0x586713;return _0x4aa4f2;})[_0xfdd4('0x27')](respondWithFilteredResult(_0x502776,_0x2a65c8))[_0xfdd4('0x48')](handleError(_0x502776,null));};exports[_0xfdd4('0x49')]=function(_0x5367aa,_0x419578){var _0x11e90a={'raw':!![],'where':{'id':_0x5367aa[_0xfdd4('0x4a')]['id']}},_0x4d1dfe={};_0x4d1dfe[_0xfdd4('0x35')]=_['keys'](db[_0xfdd4('0x31')]['rawAttributes']);_0x4d1dfe['query']=_['keys'](_0x5367aa[_0xfdd4('0x36')]);_0x4d1dfe[_0xfdd4('0x38')]=_[_0xfdd4('0x39')](_0x4d1dfe['model'],_0x4d1dfe[_0xfdd4('0x36')]);_0x11e90a[_0xfdd4('0x3a')]=_['intersection'](_0x4d1dfe[_0xfdd4('0x35')],qs[_0xfdd4('0x3b')](_0x5367aa[_0xfdd4('0x36')][_0xfdd4('0x3b')]));_0x11e90a[_0xfdd4('0x3a')]=_0x11e90a[_0xfdd4('0x3a')][_0xfdd4('0x3c')]?_0x11e90a[_0xfdd4('0x3a')]:_0x4d1dfe[_0xfdd4('0x35')];if(_0x5367aa[_0xfdd4('0x36')][_0xfdd4('0x45')]){_0x11e90a[_0xfdd4('0x46')]=[{'all':!![]}];}_0x11e90a=_[_0xfdd4('0x42')]({},_0x11e90a,_0x5367aa[_0xfdd4('0x44')]);return db['SmsQueue']['find'](_0x11e90a)[_0xfdd4('0x27')](handleEntityNotFound(_0x419578,null))[_0xfdd4('0x27')](respondWithResult(_0x419578,null))[_0xfdd4('0x48')](handleError(_0x419578,null));};exports[_0xfdd4('0x4b')]=function(_0x507bf5,_0x3c6828){return db[_0xfdd4('0x31')]['create'](_0x507bf5['body'],{})['then'](function(_0x51dd34){var _0x557cb3=_0x507bf5[_0xfdd4('0x4c')][_0xfdd4('0x28')]({'plain':!![]});if(!_0x557cb3)throw new Error(_0xfdd4('0x4d'));if(_0x557cb3[_0xfdd4('0x4e')]===_0xfdd4('0x4c')){var _0x49bc61=_0x51dd34['get']({'plain':!![]});var _0x17bbab=_0xfdd4('0x29');return db[_0xfdd4('0x4f')][_0xfdd4('0x50')]({'where':{'name':_0x17bbab,'userProfileId':_0x557cb3['userProfileId']},'raw':!![]})[_0xfdd4('0x27')](function(_0x8aa0ea){if(_0x8aa0ea&&_0x8aa0ea['autoAssociation']===0x0){return db[_0xfdd4('0x2a')][_0xfdd4('0x4b')]({'name':_0x49bc61['name'],'resourceId':_0x49bc61['id'],'type':_0x8aa0ea['name'],'sectionId':_0x8aa0ea['id']},{})[_0xfdd4('0x27')](function(){return _0x51dd34;});}else{return _0x51dd34;}})[_0xfdd4('0x48')](function(_0x18f071){logger[_0xfdd4('0x2c')](_0xfdd4('0x51'),_0x18f071);throw _0x18f071;});}return _0x51dd34;})[_0xfdd4('0x27')](respondWithResult(_0x3c6828,0xc9))[_0xfdd4('0x48')](handleError(_0x3c6828,null));};exports[_0xfdd4('0x52')]=function(_0x5848e1,_0x1cf4ff){if(_0x5848e1['body']['id']){delete _0x5848e1['body']['id'];}return db[_0xfdd4('0x31')][_0xfdd4('0x50')]({'where':{'id':_0x5848e1['params']['id']}})['then'](handleEntityNotFound(_0x1cf4ff,null))['then'](saveUpdates(_0x5848e1[_0xfdd4('0x53')],null))[_0xfdd4('0x27')](respondWithResult(_0x1cf4ff,null))['catch'](handleError(_0x1cf4ff,null));};exports[_0xfdd4('0x2b')]=function(_0x1cee9f,_0x466b75){return db[_0xfdd4('0x31')][_0xfdd4('0x50')]({'where':{'id':_0x1cee9f['params']['id']}})['then'](handleEntityNotFound(_0x466b75,null))['then'](removeEntity(_0x466b75,null))['catch'](handleError(_0x466b75,null));};exports[_0xfdd4('0x54')]=function(_0x14d07e,_0x5ddc25){return db[_0xfdd4('0x31')][_0xfdd4('0x54')]()['then'](respondWithResult(_0x5ddc25,null))[_0xfdd4('0x48')](handleError(_0x5ddc25,null));};exports[_0xfdd4('0x55')]=function(_0x4e9364,_0x1497ff,_0x2b7081){var _0xd4e5e4={'raw':!![],'where':{}},_0x4a5fe6={},_0x2cc8ca;return db[_0xfdd4('0x31')][_0xfdd4('0x56')]({'where':{'id':_0x4e9364[_0xfdd4('0x4a')]['id']}})[_0xfdd4('0x27')](handleEntityNotFound(_0x1497ff,null))['then'](function(_0x2cc3e2){if(_0x2cc3e2){_0x2cc8ca=_0x2cc3e2[_0xfdd4('0x28')]({'plain':!![]});_0x4a5fe6[_0xfdd4('0x35')]=_[_0xfdd4('0x37')](db[_0xfdd4('0x57')][_0xfdd4('0x58')]);_0x4a5fe6[_0xfdd4('0x36')]=_[_0xfdd4('0x37')](_0x4e9364[_0xfdd4('0x36')]);_0x4a5fe6['filters']=_[_0xfdd4('0x39')](_0x4a5fe6[_0xfdd4('0x35')],_0x4a5fe6[_0xfdd4('0x36')]);_0xd4e5e4[_0xfdd4('0x3a')]=_[_0xfdd4('0x39')](_0x4a5fe6['model'],qs[_0xfdd4('0x3b')](_0x4e9364[_0xfdd4('0x36')][_0xfdd4('0x3b')]));_0xd4e5e4[_0xfdd4('0x3a')]=_0xd4e5e4[_0xfdd4('0x3a')][_0xfdd4('0x3c')]?_0xd4e5e4[_0xfdd4('0x3a')]:_0x4a5fe6[_0xfdd4('0x35')];if(!_0x4e9364[_0xfdd4('0x36')][_0xfdd4('0x3d')](_0xfdd4('0x59'))){_0xd4e5e4[_0xfdd4('0x21')]=qs[_0xfdd4('0x21')](_0x4e9364['query'][_0xfdd4('0x21')]);_0xd4e5e4['offset']=qs[_0xfdd4('0x1f')](_0x4e9364[_0xfdd4('0x36')][_0xfdd4('0x1f')]);}_0xd4e5e4[_0xfdd4('0x5a')]=qs[_0xfdd4('0x3e')](_0x4e9364[_0xfdd4('0x36')][_0xfdd4('0x3e')]);_0xd4e5e4[_0xfdd4('0x3f')]=qs[_0xfdd4('0x38')](_[_0xfdd4('0x40')](_0x4e9364[_0xfdd4('0x36')],_0x4a5fe6[_0xfdd4('0x38')]));_0xd4e5e4['where']['SmsQueueId']=_0x2cc3e2['id'];if(_0x4e9364['query'][_0xfdd4('0x41')]){_0xd4e5e4[_0xfdd4('0x3f')]=_['merge'](_0xd4e5e4[_0xfdd4('0x3f')],{'$or':_[_0xfdd4('0x30')](_0xd4e5e4[_0xfdd4('0x3a')],function(_0x3023f8){var _0x2a3554={};_0x2a3554[_0x3023f8]={'$like':'%'+_0x4e9364['query'][_0xfdd4('0x41')]+'%'};return _0x2a3554;})});}_0xd4e5e4=_[_0xfdd4('0x42')]({},_0xd4e5e4,_0x4e9364[_0xfdd4('0x44')]);return db['UserSmsQueue'][_0xfdd4('0x5b')](_0xd4e5e4);}})['then'](function(_0x2ecd1b){if(_0x2ecd1b){return db[_0xfdd4('0x5c')][_0xfdd4('0x5d')]({'where':{'id':_[_0xfdd4('0x30')](_0x2ecd1b,'UserId'),'role':_0xfdd4('0x5e')},'attributes':['id',_0xfdd4('0x2e'),'smsPause',_0xfdd4('0x5f'),_0xfdd4('0x60')]});}})[_0xfdd4('0x27')](function(_0x53c8ac){if(_0x53c8ac){return{'count':_0x53c8ac[_0xfdd4('0x22')],'rows':_[_0xfdd4('0x30')](_0x53c8ac[_0xfdd4('0x47')],function(_0x535b07){return{'membername':_0x535b07[_0xfdd4('0x2e')],'UserId':_0x535b07['id'],'queue_name':_0x2cc8ca[_0xfdd4('0x2e')],'SmsQueueId':_0x2cc8ca['id'],'interface':util[_0xfdd4('0x61')](_0xfdd4('0x62'),_0xfdd4('0x63'),_0x535b07[_0xfdd4('0x2e')]),'penalty':0x0,'paused':_0x535b07[_0xfdd4('0x64')],'createdAt':_0x535b07['createdAt'],'updatedAt':_0x535b07[_0xfdd4('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xfdd4('0x27')](respondWithFilteredResult(_0x1497ff,_0xd4e5e4))[_0xfdd4('0x48')](handleError(_0x1497ff,null));};exports[_0xfdd4('0x65')]=function(_0xcdc104,_0x2cbd27,_0x39af1e){var _0x4987d6={};var _0x58dee0={};var _0x430412;var _0x5800b8;return db['SmsQueue'][_0xfdd4('0x56')]({'where':{'id':_0xcdc104['params']['id']}})[_0xfdd4('0x27')](handleEntityNotFound(_0x2cbd27,null))['then'](function(_0x4576ce){if(_0x4576ce){_0x430412=_0x4576ce;_0x58dee0[_0xfdd4('0x35')]=_[_0xfdd4('0x37')](db[_0xfdd4('0x66')][_0xfdd4('0x58')]);_0x58dee0[_0xfdd4('0x36')]=_[_0xfdd4('0x37')](_0xcdc104['query']);_0x58dee0['filters']=_[_0xfdd4('0x39')](_0x58dee0['model'],_0x58dee0[_0xfdd4('0x36')]);_0x4987d6[_0xfdd4('0x3a')]=_[_0xfdd4('0x39')](_0x58dee0[_0xfdd4('0x35')],qs[_0xfdd4('0x3b')](_0xcdc104[_0xfdd4('0x36')][_0xfdd4('0x3b')]));_0x4987d6['attributes']=_0x4987d6['attributes'][_0xfdd4('0x3c')]?_0x4987d6[_0xfdd4('0x3a')]:_0x58dee0[_0xfdd4('0x35')];_0x4987d6[_0xfdd4('0x5a')]=qs[_0xfdd4('0x3e')](_0xcdc104[_0xfdd4('0x36')][_0xfdd4('0x3e')]);_0x4987d6[_0xfdd4('0x3f')]=qs[_0xfdd4('0x38')](_[_0xfdd4('0x40')](_0xcdc104[_0xfdd4('0x36')],_0x58dee0[_0xfdd4('0x38')]));if(_0xcdc104[_0xfdd4('0x36')]['filter']){_0x4987d6['where']=_[_0xfdd4('0x42')](_0x4987d6[_0xfdd4('0x3f')],{'$or':_['map'](_0x4987d6['attributes'],function(_0x22cefd){var _0x31a126={};_0x31a126[_0x22cefd]={'$like':'%'+_0xcdc104['query'][_0xfdd4('0x41')]+'%'};return _0x31a126;})});}_0x4987d6=_[_0xfdd4('0x42')]({},_0x4987d6,_0xcdc104[_0xfdd4('0x44')]);return _0x430412[_0xfdd4('0x65')](_0x4987d6);}})[_0xfdd4('0x27')](function(_0x25c078){if(_0x25c078){_0x5800b8=_0x25c078['length'];if(!_0xcdc104[_0xfdd4('0x36')][_0xfdd4('0x3d')](_0xfdd4('0x59'))){_0x4987d6[_0xfdd4('0x21')]=qs[_0xfdd4('0x21')](_0xcdc104[_0xfdd4('0x36')][_0xfdd4('0x21')]);_0x4987d6[_0xfdd4('0x1f')]=qs['offset'](_0xcdc104['query'][_0xfdd4('0x1f')]);}return _0x430412['getTeams'](_0x4987d6);}})[_0xfdd4('0x27')](function(_0x1b4f61){if(_0x1b4f61){return _0x1b4f61?{'count':_0x5800b8,'rows':_0x1b4f61}:null;}})[_0xfdd4('0x27')](respondWithResult(_0x2cbd27,null))[_0xfdd4('0x48')](handleError(_0x2cbd27,null));};exports[_0xfdd4('0x67')]=function(_0x47bbfa,_0x5375be,_0x14ce5d){var _0x5d0956=_0x47bbfa[_0xfdd4('0x53')]['ids'];return db[_0xfdd4('0x66')][_0xfdd4('0x5b')]({'where':{'id':_0x5d0956},'attributes':['id'],'include':[{'model':db[_0xfdd4('0x5c')],'as':_0xfdd4('0x68'),'attributes':['id',_0xfdd4('0x2e'),_0xfdd4('0x69'),_0xfdd4('0x6a'),_0xfdd4('0x6b')],'raw':!![]}]})[_0xfdd4('0x27')](function(_0x1ce2d7){if(_0x1ce2d7){var _0xf577e4=_['flatMap'](_0x1ce2d7,function(_0xf15402){var _0x1f9e08=_0xf15402[_0xfdd4('0x28')]({'plain':!![]});return _0x1f9e08[_0xfdd4('0x68')];});return db[_0xfdd4('0x31')][_0xfdd4('0x50')]({'where':{'id':_0x47bbfa[_0xfdd4('0x4a')]['id']}})[_0xfdd4('0x27')](function(_0x2fe961){return db['sequelize']['transaction'](function(_0x2990aa){return _0x2fe961[_0xfdd4('0x67')](_0x5d0956,{'transaction':_0x2990aa})[_0xfdd4('0x27')](function(){return BPromise['each'](_0xf577e4,function(_0x22e0c9){return db[_0xfdd4('0x57')][_0xfdd4('0x6c')]({'where':{'UserId':_0x22e0c9['id'],'SmsQueueId':_0x47bbfa[_0xfdd4('0x4a')]['id']},'transaction':_0x2990aa});});})['then'](function(){_0xf577e4['forEach'](function(_0x21ccc0){socket[_0xfdd4('0x6d')](_0xfdd4('0x6e'),{'UserId':_0x21ccc0['id'],'SmsQueueId':_0x2fe961['id']});});});});});}})['then'](respondWithStatusCode(_0x5375be,null))[_0xfdd4('0x48')](handleError(_0x5375be,null));};exports[_0xfdd4('0x6f')]=function(_0x30cdef,_0x1c5c38,_0x11e70e){return db[_0xfdd4('0x66')]['findAll']({'where':{'id':_0x30cdef['query'][_0xfdd4('0x70')]},'attributes':['id'],'include':[{'model':db[_0xfdd4('0x5c')],'as':_0xfdd4('0x68'),'attributes':['id'],'raw':!![]}]})[_0xfdd4('0x27')](handleEntityNotFound(_0x1c5c38,null))[_0xfdd4('0x27')](function(_0x37ae51){var _0x46edc9=_[_0xfdd4('0x30')](_0x37ae51,'id');var _0x5d1a3f=[];var _0x218d83=[];var _0x547c4c=squel[_0xfdd4('0x71')]();_0x547c4c[_0xfdd4('0x72')]('tq.TeamId')[_0xfdd4('0x73')](_0xfdd4('0x74'),'tq')[_0xfdd4('0x75')](_0xfdd4('0x76'),'ut',_0xfdd4('0x77'))[_0xfdd4('0x3f')](_0xfdd4('0x78'),_0x30cdef[_0xfdd4('0x4a')]['id']);for(var _0xcc0684=0x0;_0xcc0684<_0x37ae51['length'];_0xcc0684+=0x1){let _0x391a25=_0x37ae51[_0xcc0684];for(var _0x573bc9=0x0;_0x573bc9<_0x391a25[_0xfdd4('0x68')]['length'];_0x573bc9+=0x1){let _0x57041b=_0x391a25[_0xfdd4('0x68')][_0x573bc9];var _0x194843=_0x547c4c[_0xfdd4('0x79')]();_0x194843[_0xfdd4('0x3f')](_0xfdd4('0x7a'),_0x57041b['id']);_0x218d83['push'](db[_0xfdd4('0x7b')][_0xfdd4('0x36')](_0x194843[_0xfdd4('0x7c')](),{'type':db[_0xfdd4('0x7b')][_0xfdd4('0x7d')][_0xfdd4('0x7e')]})['then'](function(_0x7a81f1){if(_0x7a81f1[_0xfdd4('0x3c')]===0x1){return _0x57041b['id'];}else{var _0x4d123f=_['every'](_[_0xfdd4('0x30')](_0x7a81f1,_0xfdd4('0x7f')),function(_0x10a995){return _['includes'](_0x46edc9,_0x10a995);});if(_0x4d123f){return _0x57041b['id'];}}}));}}return BPromise['all'](_0x218d83)[_0xfdd4('0x27')](function(_0x36d03e){_0x5d1a3f=_(_0x5d1a3f)[_0xfdd4('0x80')](_0x36d03e)['compact']()['value']();return db[_0xfdd4('0x31')][_0xfdd4('0x50')]({'where':{'id':_0x30cdef[_0xfdd4('0x4a')]['id']}})['then'](function(_0x323cf9){return db['sequelize'][_0xfdd4('0x81')](function(_0x41593a){return _0x323cf9[_0xfdd4('0x6f')](_0x30cdef['query'][_0xfdd4('0x70')],{'transaction':_0x41593a})[_0xfdd4('0x27')](function(){if(!_[_0xfdd4('0x82')](_0x5d1a3f)){return _0x323cf9[_0xfdd4('0x83')](_0x5d1a3f,{'transaction':_0x41593a});}})[_0xfdd4('0x27')](function(){_0x5d1a3f['forEach'](function(_0x19de84){socket[_0xfdd4('0x6d')](_0xfdd4('0x84'),{'UserId':_0x19de84,'SmsQueueId':_0x323cf9['id']});});});});});});})['then'](respondWithStatusCode(_0x1c5c38,null))[_0xfdd4('0x48')](handleError(_0x1c5c38,null));};exports[_0xfdd4('0x85')]=function(_0xb9cb69,_0x28d246,_0x56e5d3){return db[_0xfdd4('0x31')]['find']({'where':{'id':_0xb9cb69['params']['id']}})['then'](handleEntityNotFound(_0x28d246,null))[_0xfdd4('0x27')](function(_0x545475){if(_0x545475){return _0x545475['addAgents'](_0xb9cb69['body'][_0xfdd4('0x70')],_[_0xfdd4('0x86')](_0xb9cb69[_0xfdd4('0x53')],[_0xfdd4('0x70'),'id'])||{})[_0xfdd4('0x87')](function(_0x3e911f){for(var _0xb5f6a3=0x0;_0xb5f6a3<_0xb9cb69[_0xfdd4('0x53')][_0xfdd4('0x70')][_0xfdd4('0x3c')];_0xb5f6a3+=0x1){socket[_0xfdd4('0x6d')](_0xfdd4('0x6e'),{'UserId':Number(_0xb9cb69[_0xfdd4('0x53')][_0xfdd4('0x70')][_0xb5f6a3]),'SmsQueueId':Number(_0xb9cb69[_0xfdd4('0x4a')]['id'])});}return _0x3e911f;});}})[_0xfdd4('0x27')](respondWithResult(_0x28d246,null))[_0xfdd4('0x48')](handleError(_0x28d246,null));};exports[_0xfdd4('0x83')]=function(_0x3e67de,_0x3f2e60,_0x1e28f8){return db[_0xfdd4('0x31')][_0xfdd4('0x50')]({'where':{'id':_0x3e67de[_0xfdd4('0x4a')]['id']}})[_0xfdd4('0x27')](handleEntityNotFound(_0x3f2e60,null))[_0xfdd4('0x27')](function(_0x4a2f3f){if(_0x4a2f3f){return _0x4a2f3f[_0xfdd4('0x83')](_0x3e67de[_0xfdd4('0x36')][_0xfdd4('0x70')])[_0xfdd4('0x27')](function(){if(_[_0xfdd4('0x88')](_0x3e67de['query'][_0xfdd4('0x70')])){for(var _0x988de2=0x0;_0x988de2<_0x3e67de[_0xfdd4('0x36')][_0xfdd4('0x70')][_0xfdd4('0x3c')];_0x988de2+=0x1){socket[_0xfdd4('0x6d')]('userSmsQueue:remove',{'UserId':Number(_0x3e67de[_0xfdd4('0x36')][_0xfdd4('0x70')][_0x988de2]),'SmsQueueId':Number(_0x3e67de[_0xfdd4('0x4a')]['id'])});}}else{socket[_0xfdd4('0x6d')](_0xfdd4('0x84'),{'UserId':Number(_0x3e67de[_0xfdd4('0x36')]['ids']),'SmsQueueId':Number(_0x3e67de[_0xfdd4('0x4a')]['id'])});}});}})[_0xfdd4('0x27')](respondWithStatusCode(_0x3f2e60,null))[_0xfdd4('0x48')](handleError(_0x3f2e60,null));};exports['getAgents']=function(_0x27ad11,_0x9af0aa,_0x4de363){var _0x5159a5={};var _0xfc3569={};var _0x4166ac;var _0x16635c;return db[_0xfdd4('0x31')]['findOne']({'where':{'id':_0x27ad11[_0xfdd4('0x4a')]['id']}})['then'](handleEntityNotFound(_0x9af0aa,null))[_0xfdd4('0x27')](function(_0x42204a){if(_0x42204a){_0x4166ac=_0x42204a;_0xfc3569[_0xfdd4('0x35')]=_[_0xfdd4('0x37')](db[_0xfdd4('0x5c')][_0xfdd4('0x58')]);_0xfc3569[_0xfdd4('0x36')]=_[_0xfdd4('0x37')](_0x27ad11[_0xfdd4('0x36')]);_0xfc3569[_0xfdd4('0x38')]=_[_0xfdd4('0x39')](_0xfc3569['model'],_0xfc3569[_0xfdd4('0x36')]);_0x5159a5[_0xfdd4('0x3a')]=_[_0xfdd4('0x39')](_0xfc3569[_0xfdd4('0x35')],qs[_0xfdd4('0x3b')](_0x27ad11[_0xfdd4('0x36')]['fields']));_0x5159a5[_0xfdd4('0x3a')]=_0x5159a5[_0xfdd4('0x3a')][_0xfdd4('0x3c')]?_0x5159a5[_0xfdd4('0x3a')]:_0xfc3569['model'];_0x5159a5[_0xfdd4('0x5a')]=qs[_0xfdd4('0x3e')](_0x27ad11['query'][_0xfdd4('0x3e')]);_0x5159a5[_0xfdd4('0x3f')]=qs[_0xfdd4('0x38')](_[_0xfdd4('0x40')](_0x27ad11[_0xfdd4('0x36')],_0xfc3569[_0xfdd4('0x38')]));if(_0x27ad11[_0xfdd4('0x36')][_0xfdd4('0x41')]){_0x5159a5[_0xfdd4('0x3f')]=_[_0xfdd4('0x42')](_0x5159a5[_0xfdd4('0x3f')],{'$or':_[_0xfdd4('0x30')](_0x5159a5[_0xfdd4('0x3a')],function(_0x303008){var _0x5cf984={};_0x5cf984[_0x303008]={'$like':'%'+_0x27ad11[_0xfdd4('0x36')][_0xfdd4('0x41')]+'%'};return _0x5cf984;})});}_0x5159a5=_[_0xfdd4('0x42')]({},_0x5159a5,_0x27ad11[_0xfdd4('0x44')]);return _0x4166ac['getAgents'](_0x5159a5);}})[_0xfdd4('0x27')](function(_0x564320){if(_0x564320){_0x16635c=_0x564320['length'];if(!_0x27ad11[_0xfdd4('0x36')][_0xfdd4('0x3d')](_0xfdd4('0x59'))){_0x5159a5[_0xfdd4('0x21')]=qs['limit'](_0x27ad11[_0xfdd4('0x36')]['limit']);_0x5159a5[_0xfdd4('0x1f')]=qs[_0xfdd4('0x1f')](_0x27ad11['query'][_0xfdd4('0x1f')]);}return _0x4166ac['getAgents'](_0x5159a5);}})['then'](function(_0x10a396){if(_0x10a396){return _0x10a396?{'count':_0x16635c,'rows':_0x10a396}:null;}})[_0xfdd4('0x27')](respondWithResult(_0x9af0aa,null))[_0xfdd4('0x48')](handleError(_0x9af0aa,null));};
\ No newline at end of file
+var _0x52f3=['UserSmsQueue','hasOwnProperty','SmsQueueId','findAll','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','getTeams','findOne','Team','addTeams','ids','Agents','voicePause','interface','flatMap','transaction','each','forEach','emit','removeTeams','field','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','sequelize','toString','TeamId','includes','all','union','compact','value','removeAgents','userSmsQueue:remove','addAgents','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','localhost','socket.io-emitter','redis','./smsQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','index','rawAttributes','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','SmsQueue','includeAll','include','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe'];(function(_0x3030f5,_0x26458b){var _0x26991b=function(_0x43007d){while(--_0x43007d){_0x3030f5['push'](_0x3030f5['shift']());}};_0x26991b(++_0x26458b);}(_0x52f3,0xba));var _0x352f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x52f3[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x352f('0x0'));var zipdir=require(_0x352f('0x1'));var jsonpatch=require(_0x352f('0x2'));var rp=require(_0x352f('0x3'));var moment=require(_0x352f('0x4'));var BPromise=require(_0x352f('0x5'));var Mustache=require(_0x352f('0x6'));var util=require(_0x352f('0x7'));var path=require(_0x352f('0x8'));var sox=require(_0x352f('0x9'));var csv=require('to-csv');var ejs=require(_0x352f('0xa'));var fs=require('fs');var fs_extra=require(_0x352f('0xb'));var _=require(_0x352f('0xc'));var squel=require(_0x352f('0xd'));var crypto=require(_0x352f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x352f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x352f('0x10'));var Papa=require(_0x352f('0x11'));var Redis=require(_0x352f('0x12'));var authService=require(_0x352f('0x13'));var qs=require(_0x352f('0x14'));var as=require(_0x352f('0x15'));var hardwareService=require(_0x352f('0x16'));var logger=require('../../config/logger')(_0x352f('0x17'));var utils=require(_0x352f('0x18'));var config=require(_0x352f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x352f('0x1a'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x352f('0x1b'),'port':0x18eb});var socket=require(_0x352f('0x1c'))(new Redis(config[_0x352f('0x1d')]));require(_0x352f('0x1e'))[_0x352f('0x1f')](socket);function respondWithStatusCode(_0x3134ba,_0xb7dcd3){_0xb7dcd3=_0xb7dcd3||0xcc;return function(_0x182602){if(_0x182602){return _0x3134ba['sendStatus'](_0xb7dcd3);}return _0x3134ba[_0x352f('0x20')](_0xb7dcd3)['end']();};}function respondWithResult(_0x2b7345,_0x58a762){_0x58a762=_0x58a762||0xc8;return function(_0x44f12f){if(_0x44f12f){return _0x2b7345['status'](_0x58a762)[_0x352f('0x21')](_0x44f12f);}};}function respondWithFilteredResult(_0x187f5e,_0x1c8767){return function(_0x38944f){if(_0x38944f){var _0x2ee10d=typeof _0x1c8767[_0x352f('0x22')]===_0x352f('0x23')&&typeof _0x1c8767[_0x352f('0x24')]===_0x352f('0x23');var _0x168473=_0x38944f['count'];var _0xa8d71a=_0x2ee10d?0x0:_0x1c8767['offset'];var _0x4861e9=_0x2ee10d?_0x38944f[_0x352f('0x25')]:_0x1c8767[_0x352f('0x22')]+_0x1c8767[_0x352f('0x24')];var _0x5b1167;if(_0x4861e9>=_0x168473){_0x4861e9=_0x168473;_0x5b1167=0xc8;}else{_0x5b1167=0xce;}_0x187f5e['status'](_0x5b1167);return _0x187f5e[_0x352f('0x26')](_0x352f('0x27'),_0xa8d71a+'-'+_0x4861e9+'/'+_0x168473)[_0x352f('0x21')](_0x38944f);}return null;};}function patchUpdates(_0x17050c){return function(_0x49986e){try{jsonpatch[_0x352f('0x28')](_0x49986e,_0x17050c,!![]);}catch(_0x5b8bb5){return BPromise[_0x352f('0x29')](_0x5b8bb5);}return _0x49986e[_0x352f('0x2a')]();};}function saveUpdates(_0x3ccccb,_0x36f4e0){return function(_0x28262e){if(_0x28262e){return _0x28262e['update'](_0x3ccccb)[_0x352f('0x2b')](function(_0x6a6a57){return _0x6a6a57;});}return null;};}function removeEntity(_0x1478c7,_0x3bebdf){return function(_0x57e198){if(_0x57e198){return _0x57e198[_0x352f('0x2c')]()[_0x352f('0x2b')](function(){var _0x2e340b=_0x57e198[_0x352f('0x2d')]({'plain':!![]});var _0x37e41b='SmsQueues';return db[_0x352f('0x2e')]['destroy']({'where':{'type':_0x37e41b,'resourceId':_0x2e340b['id']}})['then'](function(){return _0x57e198;});})[_0x352f('0x2b')](function(){_0x1478c7[_0x352f('0x20')](0xcc)[_0x352f('0x2f')]();});}};}function handleEntityNotFound(_0x741f4e,_0x2109c2){return function(_0x30c4e9){if(!_0x30c4e9){_0x741f4e[_0x352f('0x30')](0x194);}return _0x30c4e9;};}function handleError(_0x345a29,_0x2ddcc0){_0x2ddcc0=_0x2ddcc0||0x1f4;return function(_0xa6b5a){logger[_0x352f('0x31')](_0xa6b5a[_0x352f('0x32')]);if(_0xa6b5a[_0x352f('0x33')]){delete _0xa6b5a['name'];}_0x345a29[_0x352f('0x20')](_0x2ddcc0)['send'](_0xa6b5a);};}exports[_0x352f('0x34')]=function(_0x12e1b1,_0x11eb90){var _0x3ea96d={},_0x194b7f={},_0x234687={'count':0x0,'rows':[]};var _0x128fa3=_['map'](db['SmsQueue'][_0x352f('0x35')],function(_0x475d41){return{'name':_0x475d41['fieldName'],'type':_0x475d41['type']['key']};});_0x194b7f[_0x352f('0x36')]=_[_0x352f('0x37')](_0x128fa3,_0x352f('0x33'));_0x194b7f[_0x352f('0x38')]=_[_0x352f('0x39')](_0x12e1b1[_0x352f('0x38')]);_0x194b7f[_0x352f('0x3a')]=_[_0x352f('0x3b')](_0x194b7f[_0x352f('0x36')],_0x194b7f['query']);_0x3ea96d[_0x352f('0x3c')]=_[_0x352f('0x3b')](_0x194b7f[_0x352f('0x36')],qs[_0x352f('0x3d')](_0x12e1b1['query'][_0x352f('0x3d')]));_0x3ea96d[_0x352f('0x3c')]=_0x3ea96d['attributes'][_0x352f('0x3e')]?_0x3ea96d[_0x352f('0x3c')]:_0x194b7f[_0x352f('0x36')];if(!_0x12e1b1[_0x352f('0x38')]['hasOwnProperty'](_0x352f('0x3f'))){_0x3ea96d['limit']=qs[_0x352f('0x24')](_0x12e1b1[_0x352f('0x38')][_0x352f('0x24')]);_0x3ea96d[_0x352f('0x22')]=qs[_0x352f('0x22')](_0x12e1b1[_0x352f('0x38')][_0x352f('0x22')]);}_0x3ea96d[_0x352f('0x40')]=qs[_0x352f('0x41')](_0x12e1b1[_0x352f('0x38')][_0x352f('0x41')]);_0x3ea96d['where']=qs[_0x352f('0x3a')](_[_0x352f('0x42')](_0x12e1b1[_0x352f('0x38')],_0x194b7f['filters']),_0x128fa3);if(_0x12e1b1[_0x352f('0x38')]['filter']){_0x3ea96d[_0x352f('0x43')]=_[_0x352f('0x44')](_0x3ea96d['where'],{'$or':_[_0x352f('0x37')](_0x128fa3,function(_0x451721){if(_0x451721[_0x352f('0x45')]!==_0x352f('0x46')){var _0x321e38={};_0x321e38[_0x451721[_0x352f('0x33')]]={'$like':'%'+_0x12e1b1[_0x352f('0x38')][_0x352f('0x47')]+'%'};return _0x321e38;}})});}_0x3ea96d=_[_0x352f('0x44')]({},_0x3ea96d,_0x12e1b1['options']);var _0x4a851b={'where':_0x3ea96d[_0x352f('0x43')]};return db[_0x352f('0x48')]['count'](_0x4a851b)[_0x352f('0x2b')](function(_0x31b0ae){_0x234687[_0x352f('0x25')]=_0x31b0ae;if(_0x12e1b1[_0x352f('0x38')][_0x352f('0x49')]){_0x3ea96d[_0x352f('0x4a')]=[{'all':!![]}];}return db[_0x352f('0x48')]['findAll'](_0x3ea96d);})['then'](function(_0x50df8a){_0x234687[_0x352f('0x4b')]=_0x50df8a;return _0x234687;})[_0x352f('0x2b')](respondWithFilteredResult(_0x11eb90,_0x3ea96d))[_0x352f('0x4c')](handleError(_0x11eb90,null));};exports[_0x352f('0x4d')]=function(_0x15bf60,_0x32fd0c){var _0x364b6a={'raw':!![],'where':{'id':_0x15bf60[_0x352f('0x4e')]['id']}},_0x44c5fd={};_0x44c5fd[_0x352f('0x36')]=_[_0x352f('0x39')](db['SmsQueue'][_0x352f('0x35')]);_0x44c5fd['query']=_[_0x352f('0x39')](_0x15bf60[_0x352f('0x38')]);_0x44c5fd[_0x352f('0x3a')]=_['intersection'](_0x44c5fd[_0x352f('0x36')],_0x44c5fd[_0x352f('0x38')]);_0x364b6a[_0x352f('0x3c')]=_[_0x352f('0x3b')](_0x44c5fd['model'],qs[_0x352f('0x3d')](_0x15bf60[_0x352f('0x38')][_0x352f('0x3d')]));_0x364b6a[_0x352f('0x3c')]=_0x364b6a[_0x352f('0x3c')][_0x352f('0x3e')]?_0x364b6a['attributes']:_0x44c5fd[_0x352f('0x36')];if(_0x15bf60['query'][_0x352f('0x49')]){_0x364b6a[_0x352f('0x4a')]=[{'all':!![]}];}_0x364b6a=_[_0x352f('0x44')]({},_0x364b6a,_0x15bf60[_0x352f('0x4f')]);return db[_0x352f('0x48')][_0x352f('0x50')](_0x364b6a)[_0x352f('0x2b')](handleEntityNotFound(_0x32fd0c,null))[_0x352f('0x2b')](respondWithResult(_0x32fd0c,null))[_0x352f('0x4c')](handleError(_0x32fd0c,null));};exports['create']=function(_0x22e082,_0x1d8045){return db[_0x352f('0x48')][_0x352f('0x51')](_0x22e082[_0x352f('0x52')],{})[_0x352f('0x2b')](function(_0x26b794){var _0x376dbb=_0x22e082['user']['get']({'plain':!![]});if(!_0x376dbb)throw new Error(_0x352f('0x53'));if(_0x376dbb[_0x352f('0x54')]==='user'){var _0x27ef8d=_0x26b794[_0x352f('0x2d')]({'plain':!![]});var _0x12dca2=_0x352f('0x55');return db[_0x352f('0x56')][_0x352f('0x50')]({'where':{'name':_0x12dca2,'userProfileId':_0x376dbb[_0x352f('0x57')]},'raw':!![]})['then'](function(_0x1327dd){if(_0x1327dd&&_0x1327dd[_0x352f('0x58')]===0x0){return db[_0x352f('0x2e')][_0x352f('0x51')]({'name':_0x27ef8d['name'],'resourceId':_0x27ef8d['id'],'type':_0x1327dd[_0x352f('0x33')],'sectionId':_0x1327dd['id']},{})['then'](function(){return _0x26b794;});}else{return _0x26b794;}})[_0x352f('0x4c')](function(_0x58dca2){logger[_0x352f('0x31')](_0x352f('0x59'),_0x58dca2);throw _0x58dca2;});}return _0x26b794;})['then'](respondWithResult(_0x1d8045,0xc9))['catch'](handleError(_0x1d8045,null));};exports[_0x352f('0x5a')]=function(_0xee1c47,_0x369fd3){if(_0xee1c47[_0x352f('0x52')]['id']){delete _0xee1c47[_0x352f('0x52')]['id'];}return db['SmsQueue'][_0x352f('0x50')]({'where':{'id':_0xee1c47[_0x352f('0x4e')]['id']}})['then'](handleEntityNotFound(_0x369fd3,null))[_0x352f('0x2b')](saveUpdates(_0xee1c47[_0x352f('0x52')],null))[_0x352f('0x2b')](respondWithResult(_0x369fd3,null))[_0x352f('0x4c')](handleError(_0x369fd3,null));};exports[_0x352f('0x2c')]=function(_0x6ff17a,_0x3d7939){return db[_0x352f('0x48')][_0x352f('0x50')]({'where':{'id':_0x6ff17a[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x3d7939,null))['then'](removeEntity(_0x3d7939,null))[_0x352f('0x4c')](handleError(_0x3d7939,null));};exports[_0x352f('0x5b')]=function(_0x1b3720,_0x2ebf2d){return db[_0x352f('0x48')][_0x352f('0x5b')]()[_0x352f('0x2b')](respondWithResult(_0x2ebf2d,null))[_0x352f('0x4c')](handleError(_0x2ebf2d,null));};exports['getMembers']=function(_0x560852,_0x4482f7,_0x14e1da){var _0x499904={'raw':!![],'where':{}},_0x416ba9={},_0x59dd26;return db[_0x352f('0x48')]['findOne']({'where':{'id':_0x560852[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x4482f7,null))[_0x352f('0x2b')](function(_0x31f8f1){if(_0x31f8f1){_0x59dd26=_0x31f8f1[_0x352f('0x2d')]({'plain':!![]});_0x416ba9['model']=_[_0x352f('0x39')](db[_0x352f('0x5c')][_0x352f('0x35')]);_0x416ba9[_0x352f('0x38')]=_[_0x352f('0x39')](_0x560852['query']);_0x416ba9['filters']=_[_0x352f('0x3b')](_0x416ba9['model'],_0x416ba9['query']);_0x499904[_0x352f('0x3c')]=_[_0x352f('0x3b')](_0x416ba9['model'],qs[_0x352f('0x3d')](_0x560852[_0x352f('0x38')][_0x352f('0x3d')]));_0x499904[_0x352f('0x3c')]=_0x499904['attributes'][_0x352f('0x3e')]?_0x499904['attributes']:_0x416ba9[_0x352f('0x36')];if(!_0x560852[_0x352f('0x38')][_0x352f('0x5d')](_0x352f('0x3f'))){_0x499904[_0x352f('0x24')]=qs[_0x352f('0x24')](_0x560852['query'][_0x352f('0x24')]);_0x499904['offset']=qs[_0x352f('0x22')](_0x560852[_0x352f('0x38')][_0x352f('0x22')]);}_0x499904['order']=qs[_0x352f('0x41')](_0x560852['query']['sort']);_0x499904[_0x352f('0x43')]=qs[_0x352f('0x3a')](_[_0x352f('0x42')](_0x560852[_0x352f('0x38')],_0x416ba9[_0x352f('0x3a')]));_0x499904[_0x352f('0x43')][_0x352f('0x5e')]=_0x31f8f1['id'];if(_0x560852[_0x352f('0x38')][_0x352f('0x47')]){_0x499904[_0x352f('0x43')]=_[_0x352f('0x44')](_0x499904[_0x352f('0x43')],{'$or':_['map'](_0x499904['attributes'],function(_0xa563bf){var _0x36b9b5={};_0x36b9b5[_0xa563bf]={'$like':'%'+_0x560852[_0x352f('0x38')][_0x352f('0x47')]+'%'};return _0x36b9b5;})});}_0x499904=_['merge']({},_0x499904,_0x560852[_0x352f('0x4f')]);return db[_0x352f('0x5c')][_0x352f('0x5f')](_0x499904);}})[_0x352f('0x2b')](function(_0x19c9a1){if(_0x19c9a1){return db[_0x352f('0x60')][_0x352f('0x61')]({'where':{'id':_['map'](_0x19c9a1,_0x352f('0x62')),'role':_0x352f('0x63')},'attributes':['id','name',_0x352f('0x64'),_0x352f('0x65'),_0x352f('0x66')]});}})['then'](function(_0x2f5c65){if(_0x2f5c65){return{'count':_0x2f5c65[_0x352f('0x25')],'rows':_[_0x352f('0x37')](_0x2f5c65[_0x352f('0x4b')],function(_0x1f1d2e){return{'membername':_0x1f1d2e[_0x352f('0x33')],'UserId':_0x1f1d2e['id'],'queue_name':_0x59dd26[_0x352f('0x33')],'SmsQueueId':_0x59dd26['id'],'interface':util[_0x352f('0x67')](_0x352f('0x68'),'SIP',_0x1f1d2e[_0x352f('0x33')]),'penalty':0x0,'paused':_0x1f1d2e[_0x352f('0x64')],'createdAt':_0x1f1d2e[_0x352f('0x66')],'updatedAt':_0x1f1d2e[_0x352f('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x352f('0x2b')](respondWithFilteredResult(_0x4482f7,_0x499904))[_0x352f('0x4c')](handleError(_0x4482f7,null));};exports[_0x352f('0x69')]=function(_0x272479,_0x40ec65,_0x5c3068){var _0x1c9742={};var _0x50178f={};var _0x487519;var _0x54413f;return db[_0x352f('0x48')][_0x352f('0x6a')]({'where':{'id':_0x272479[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x40ec65,null))[_0x352f('0x2b')](function(_0x2d4fd8){if(_0x2d4fd8){_0x487519=_0x2d4fd8;_0x50178f['model']=_[_0x352f('0x39')](db[_0x352f('0x6b')][_0x352f('0x35')]);_0x50178f['query']=_['keys'](_0x272479[_0x352f('0x38')]);_0x50178f['filters']=_[_0x352f('0x3b')](_0x50178f[_0x352f('0x36')],_0x50178f[_0x352f('0x38')]);_0x1c9742[_0x352f('0x3c')]=_[_0x352f('0x3b')](_0x50178f[_0x352f('0x36')],qs[_0x352f('0x3d')](_0x272479[_0x352f('0x38')][_0x352f('0x3d')]));_0x1c9742[_0x352f('0x3c')]=_0x1c9742[_0x352f('0x3c')]['length']?_0x1c9742[_0x352f('0x3c')]:_0x50178f[_0x352f('0x36')];_0x1c9742[_0x352f('0x40')]=qs[_0x352f('0x41')](_0x272479[_0x352f('0x38')][_0x352f('0x41')]);_0x1c9742[_0x352f('0x43')]=qs[_0x352f('0x3a')](_[_0x352f('0x42')](_0x272479[_0x352f('0x38')],_0x50178f[_0x352f('0x3a')]));if(_0x272479[_0x352f('0x38')][_0x352f('0x47')]){_0x1c9742[_0x352f('0x43')]=_[_0x352f('0x44')](_0x1c9742['where'],{'$or':_['map'](_0x1c9742[_0x352f('0x3c')],function(_0x36fd90){var _0x28ea6b={};_0x28ea6b[_0x36fd90]={'$like':'%'+_0x272479[_0x352f('0x38')][_0x352f('0x47')]+'%'};return _0x28ea6b;})});}_0x1c9742=_[_0x352f('0x44')]({},_0x1c9742,_0x272479[_0x352f('0x4f')]);return _0x487519[_0x352f('0x69')](_0x1c9742);}})[_0x352f('0x2b')](function(_0x507e25){if(_0x507e25){_0x54413f=_0x507e25['length'];if(!_0x272479[_0x352f('0x38')][_0x352f('0x5d')]('nolimit')){_0x1c9742[_0x352f('0x24')]=qs[_0x352f('0x24')](_0x272479[_0x352f('0x38')][_0x352f('0x24')]);_0x1c9742[_0x352f('0x22')]=qs[_0x352f('0x22')](_0x272479[_0x352f('0x38')]['offset']);}return _0x487519[_0x352f('0x69')](_0x1c9742);}})['then'](function(_0xe874dd){if(_0xe874dd){return _0xe874dd?{'count':_0x54413f,'rows':_0xe874dd}:null;}})['then'](respondWithResult(_0x40ec65,null))[_0x352f('0x4c')](handleError(_0x40ec65,null));};exports[_0x352f('0x6c')]=function(_0x71adb8,_0x394e82,_0x48973c){var _0x127925=_0x71adb8[_0x352f('0x52')][_0x352f('0x6d')];return db[_0x352f('0x6b')][_0x352f('0x5f')]({'where':{'id':_0x127925},'attributes':['id'],'include':[{'model':db[_0x352f('0x60')],'as':_0x352f('0x6e'),'attributes':['id',_0x352f('0x33'),'online',_0x352f('0x6f'),_0x352f('0x70')],'raw':!![]}]})['then'](function(_0x521f2b){if(_0x521f2b){var _0x36eae8=_[_0x352f('0x71')](_0x521f2b,function(_0x92ee3e){var _0x29454d=_0x92ee3e['get']({'plain':!![]});return _0x29454d['Agents'];});return db[_0x352f('0x48')][_0x352f('0x50')]({'where':{'id':_0x71adb8[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](function(_0x265d32){return db['sequelize'][_0x352f('0x72')](function(_0x47a073){return _0x265d32[_0x352f('0x6c')](_0x127925,{'transaction':_0x47a073})[_0x352f('0x2b')](function(){return BPromise[_0x352f('0x73')](_0x36eae8,function(_0xafe265){return db['UserSmsQueue']['findOrCreate']({'where':{'UserId':_0xafe265['id'],'SmsQueueId':_0x71adb8[_0x352f('0x4e')]['id']},'transaction':_0x47a073});});})[_0x352f('0x2b')](function(){_0x36eae8[_0x352f('0x74')](function(_0x5ce4bc){socket[_0x352f('0x75')]('userSmsQueue:save',{'UserId':_0x5ce4bc['id'],'SmsQueueId':_0x265d32['id']});});});});});}})[_0x352f('0x2b')](respondWithStatusCode(_0x394e82,null))[_0x352f('0x4c')](handleError(_0x394e82,null));};exports[_0x352f('0x76')]=function(_0x3a847c,_0x46d000,_0x2099aa){return db['Team']['findAll']({'where':{'id':_0x3a847c[_0x352f('0x38')][_0x352f('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x352f('0x60')],'as':_0x352f('0x6e'),'attributes':['id'],'raw':!![]}]})[_0x352f('0x2b')](handleEntityNotFound(_0x46d000,null))[_0x352f('0x2b')](function(_0xfc7ca4){var _0x29fc5f=_[_0x352f('0x37')](_0xfc7ca4,'id');var _0x1ed57f=[];var _0xe25db=[];var _0x40538d=squel['select']();_0x40538d[_0x352f('0x77')]('tq.TeamId')[_0x352f('0x78')]('team_has_sms_queues','tq')[_0x352f('0x79')](_0x352f('0x7a'),'ut',_0x352f('0x7b'))[_0x352f('0x43')](_0x352f('0x7c'),_0x3a847c[_0x352f('0x4e')]['id']);for(var _0x14c86b=0x0;_0x14c86b<_0xfc7ca4['length'];_0x14c86b+=0x1){let _0x32b77d=_0xfc7ca4[_0x14c86b];for(var _0x230f21=0x0;_0x230f21<_0x32b77d[_0x352f('0x6e')]['length'];_0x230f21+=0x1){let _0x5f4622=_0x32b77d[_0x352f('0x6e')][_0x230f21];var _0x55a6ca=_0x40538d[_0x352f('0x7d')]();_0x55a6ca[_0x352f('0x43')]('ut.UserId\x20=\x20?',_0x5f4622['id']);_0xe25db['push'](db[_0x352f('0x7e')]['query'](_0x55a6ca[_0x352f('0x7f')](),{'type':db[_0x352f('0x7e')]['QueryTypes']['SELECT']})[_0x352f('0x2b')](function(_0x5c2109){if(_0x5c2109[_0x352f('0x3e')]===0x1){return _0x5f4622['id'];}else{var _0xbaa7bb=_['every'](_[_0x352f('0x37')](_0x5c2109,_0x352f('0x80')),function(_0x50b2c6){return _[_0x352f('0x81')](_0x29fc5f,_0x50b2c6);});if(_0xbaa7bb){return _0x5f4622['id'];}}}));}}return BPromise[_0x352f('0x82')](_0xe25db)[_0x352f('0x2b')](function(_0x151808){_0x1ed57f=_(_0x1ed57f)[_0x352f('0x83')](_0x151808)[_0x352f('0x84')]()[_0x352f('0x85')]();return db['SmsQueue'][_0x352f('0x50')]({'where':{'id':_0x3a847c[_0x352f('0x4e')]['id']}})['then'](function(_0x4d3028){return db['sequelize']['transaction'](function(_0x34154e){return _0x4d3028[_0x352f('0x76')](_0x3a847c['query'][_0x352f('0x6d')],{'transaction':_0x34154e})[_0x352f('0x2b')](function(){if(!_['isEmpty'](_0x1ed57f)){return _0x4d3028[_0x352f('0x86')](_0x1ed57f,{'transaction':_0x34154e});}})[_0x352f('0x2b')](function(){_0x1ed57f[_0x352f('0x74')](function(_0xdbcd07){socket[_0x352f('0x75')](_0x352f('0x87'),{'UserId':_0xdbcd07,'SmsQueueId':_0x4d3028['id']});});});});});});})[_0x352f('0x2b')](respondWithStatusCode(_0x46d000,null))['catch'](handleError(_0x46d000,null));};exports[_0x352f('0x88')]=function(_0x5df68e,_0x45c0b6,_0x84e2dd){return db[_0x352f('0x48')][_0x352f('0x50')]({'where':{'id':_0x5df68e[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x45c0b6,null))[_0x352f('0x2b')](function(_0x10b8e9){if(_0x10b8e9){return _0x10b8e9[_0x352f('0x88')](_0x5df68e['body'][_0x352f('0x6d')],_['omit'](_0x5df68e[_0x352f('0x52')],['ids','id'])||{})[_0x352f('0x89')](function(_0x56b192){for(var _0x568d14=0x0;_0x568d14<_0x5df68e[_0x352f('0x52')][_0x352f('0x6d')]['length'];_0x568d14+=0x1){socket[_0x352f('0x75')]('userSmsQueue:save',{'UserId':Number(_0x5df68e[_0x352f('0x52')]['ids'][_0x568d14]),'SmsQueueId':Number(_0x5df68e[_0x352f('0x4e')]['id'])});}return _0x56b192;});}})[_0x352f('0x2b')](respondWithResult(_0x45c0b6,null))['catch'](handleError(_0x45c0b6,null));};exports[_0x352f('0x86')]=function(_0x58953d,_0x5c045e,_0x2f9ec2){return db['SmsQueue'][_0x352f('0x50')]({'where':{'id':_0x58953d[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x5c045e,null))[_0x352f('0x2b')](function(_0x232bc7){if(_0x232bc7){return _0x232bc7[_0x352f('0x86')](_0x58953d['query']['ids'])[_0x352f('0x2b')](function(){if(_['isArray'](_0x58953d[_0x352f('0x38')][_0x352f('0x6d')])){for(var _0x480d2f=0x0;_0x480d2f<_0x58953d[_0x352f('0x38')][_0x352f('0x6d')][_0x352f('0x3e')];_0x480d2f+=0x1){socket[_0x352f('0x75')](_0x352f('0x87'),{'UserId':Number(_0x58953d['query'][_0x352f('0x6d')][_0x480d2f]),'SmsQueueId':Number(_0x58953d[_0x352f('0x4e')]['id'])});}}else{socket[_0x352f('0x75')](_0x352f('0x87'),{'UserId':Number(_0x58953d[_0x352f('0x38')][_0x352f('0x6d')]),'SmsQueueId':Number(_0x58953d[_0x352f('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x5c045e,null))[_0x352f('0x4c')](handleError(_0x5c045e,null));};exports['getAgents']=function(_0x837d80,_0x597619,_0xe1f1b9){var _0x34f69c={};var _0x385485={};var _0x255091;var _0x295480;return db['SmsQueue'][_0x352f('0x6a')]({'where':{'id':_0x837d80[_0x352f('0x4e')]['id']}})[_0x352f('0x2b')](handleEntityNotFound(_0x597619,null))['then'](function(_0xd77d37){if(_0xd77d37){_0x255091=_0xd77d37;_0x385485[_0x352f('0x36')]=_['keys'](db[_0x352f('0x60')]['rawAttributes']);_0x385485[_0x352f('0x38')]=_[_0x352f('0x39')](_0x837d80[_0x352f('0x38')]);_0x385485[_0x352f('0x3a')]=_[_0x352f('0x3b')](_0x385485['model'],_0x385485[_0x352f('0x38')]);_0x34f69c[_0x352f('0x3c')]=_[_0x352f('0x3b')](_0x385485[_0x352f('0x36')],qs['fields'](_0x837d80[_0x352f('0x38')]['fields']));_0x34f69c['attributes']=_0x34f69c[_0x352f('0x3c')]['length']?_0x34f69c[_0x352f('0x3c')]:_0x385485['model'];_0x34f69c[_0x352f('0x40')]=qs[_0x352f('0x41')](_0x837d80[_0x352f('0x38')][_0x352f('0x41')]);_0x34f69c[_0x352f('0x43')]=qs[_0x352f('0x3a')](_[_0x352f('0x42')](_0x837d80[_0x352f('0x38')],_0x385485['filters']));if(_0x837d80[_0x352f('0x38')]['filter']){_0x34f69c[_0x352f('0x43')]=_[_0x352f('0x44')](_0x34f69c[_0x352f('0x43')],{'$or':_[_0x352f('0x37')](_0x34f69c[_0x352f('0x3c')],function(_0x4638ef){var _0x323578={};_0x323578[_0x4638ef]={'$like':'%'+_0x837d80[_0x352f('0x38')][_0x352f('0x47')]+'%'};return _0x323578;})});}_0x34f69c=_[_0x352f('0x44')]({},_0x34f69c,_0x837d80[_0x352f('0x4f')]);return _0x255091[_0x352f('0x8a')](_0x34f69c);}})[_0x352f('0x2b')](function(_0x526e91){if(_0x526e91){_0x295480=_0x526e91[_0x352f('0x3e')];if(!_0x837d80[_0x352f('0x38')][_0x352f('0x5d')](_0x352f('0x3f'))){_0x34f69c[_0x352f('0x24')]=qs[_0x352f('0x24')](_0x837d80[_0x352f('0x38')]['limit']);_0x34f69c[_0x352f('0x22')]=qs[_0x352f('0x22')](_0x837d80[_0x352f('0x38')][_0x352f('0x22')]);}return _0x255091[_0x352f('0x8a')](_0x34f69c);}})[_0x352f('0x2b')](function(_0x5bd9d2){if(_0x5bd9d2){return _0x5bd9d2?{'count':_0x295480,'rows':_0x5bd9d2}:null;}})[_0x352f('0x2b')](respondWithResult(_0x597619,null))[_0x352f('0x4c')](handleError(_0x597619,null));};
\ No newline at end of file
index d5cb299..2971e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b8=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update'];(function(_0x5cad21,_0x151b07){var _0x424b4d=function(_0x23fe70){while(--_0x23fe70){_0x5cad21['push'](_0x5cad21['shift']());}};_0x424b4d(++_0x151b07);}(_0xe4b8,0x1e4));var _0x8e4b=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xe4b8[_0x12fc8d];return _0x3f9d04;};'use strict';var EventEmitter=require(_0x8e4b('0x0'));var SmsQueue=require(_0x8e4b('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x8e4b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8e4b('0x3'),'afterDestroy':_0x8e4b('0x4')};function emitEvent(_0x129ed3){return function(_0x92a908,_0x345813,_0xa9e2c7){SmsQueueEvents[_0x8e4b('0x5')](_0x129ed3+':'+_0x92a908['id'],_0x92a908);SmsQueueEvents[_0x8e4b('0x5')](_0x129ed3,_0x92a908);_0xa9e2c7(null);};}for(var e in events){if(events[_0x8e4b('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x8e4b('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0x6f1b=['setMaxListeners','save','update','remove','emit','hook','exports','../../mysqldb'];(function(_0x4c05da,_0x414720){var _0x1614db=function(_0xa19cf6){while(--_0xa19cf6){_0x4c05da['push'](_0x4c05da['shift']());}};_0x1614db(++_0x414720);}(_0x6f1b,0xe7));var _0xb6f1=function(_0x3d2d19,_0x446b61){_0x3d2d19=_0x3d2d19-0x0;var _0x2b469c=_0x6f1b[_0x3d2d19];return _0x2b469c;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xb6f1('0x0'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xb6f1('0x1')](0x0);var events={'afterCreate':_0xb6f1('0x2'),'afterUpdate':_0xb6f1('0x3'),'afterDestroy':_0xb6f1('0x4')};function emitEvent(_0x44c141){return function(_0x2c535f,_0x57f037,_0x33caec){SmsQueueEvents[_0xb6f1('0x5')](_0x44c141+':'+_0x2c535f['id'],_0x2c535f);SmsQueueEvents[_0xb6f1('0x5')](_0x44c141,_0x2c535f);_0x33caec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0xb6f1('0x6')](e,emitEvent(event));}}module[_0xb6f1('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 608d28f..4fb099c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x874d=['request-promise','path','rimraf','./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','util','moment','bluebird'];(function(_0x1c8db6,_0xdfd4dd){var _0x6a9e82=function(_0x1d30cc){while(--_0x1d30cc){_0x1c8db6['push'](_0x1c8db6['shift']());}};_0x6a9e82(++_0xdfd4dd);}(_0x874d,0x1dc));var _0xd874=function(_0x1e3c02,_0x5c07a2){_0x1e3c02=_0x1e3c02-0x0;var _0x4d26d7=_0x874d[_0x1e3c02];return _0x4d26d7;};'use strict';var _=require(_0xd874('0x0'));var util=require(_0xd874('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd874('0x2'));var BPromise=require(_0xd874('0x3'));var rp=require(_0xd874('0x4'));var fs=require('fs');var path=require(_0xd874('0x5'));var rimraf=require(_0xd874('0x6'));var config=require('../../config/environment');var attributes=require(_0xd874('0x7'));module[_0xd874('0x8')]=function(_0xcacefd,_0x1849c0){return _0xcacefd[_0xd874('0x9')](_0xd874('0xa'),attributes,{'tableName':_0xd874('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7793=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsQueue','util','../../config/logger','api','moment'];(function(_0x88eed3,_0x1741d7){var _0xf8b3a6=function(_0xb53a90){while(--_0xb53a90){_0x88eed3['push'](_0x88eed3['shift']());}};_0xf8b3a6(++_0x1741d7);}(_0x7793,0x11c));var _0x3779=function(_0x16a5fe,_0x4d32e4){_0x16a5fe=_0x16a5fe-0x0;var _0x4a6cc4=_0x7793[_0x16a5fe];return _0x4a6cc4;};'use strict';var _=require('lodash');var util=require(_0x3779('0x0'));var logger=require(_0x3779('0x1'))(_0x3779('0x2'));var moment=require(_0x3779('0x3'));var BPromise=require(_0x3779('0x4'));var rp=require(_0x3779('0x5'));var fs=require('fs');var path=require(_0x3779('0x6'));var rimraf=require(_0x3779('0x7'));var config=require(_0x3779('0x8'));var attributes=require('./smsQueue.attributes');module[_0x3779('0x9')]=function(_0x140d17,_0x4f91f0){return _0x140d17[_0x3779('0xa')](_0x3779('0xb'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57c176e..5e37ae7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b8=['info','SmsQueue,\x20%s,\x20%s','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','GetSmsQueue','SmsQueue','findAll','options','where','attributes','limit','map','include','model','debug','ShowSmsQueue','find','raw','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','./smsQueue.socket','request','then'];(function(_0x189e06,_0xc44a60){var _0x525c3c=function(_0x100a3b){while(--_0x100a3b){_0x189e06['push'](_0x189e06['shift']());}};_0x525c3c(++_0xc44a60);}(_0xa6b8,0x128));var _0x8a6b=function(_0x513a56,_0x2b2a73){_0x513a56=_0x513a56-0x0;var _0x220be6=_0xa6b8[_0x513a56];return _0x220be6;};'use strict';var _=require('lodash');var util=require(_0x8a6b('0x0'));var moment=require(_0x8a6b('0x1'));var BPromise=require(_0x8a6b('0x2'));var rs=require(_0x8a6b('0x3'));var fs=require('fs');var Redis=require(_0x8a6b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8a6b('0x5'));var logger=require(_0x8a6b('0x6'))(_0x8a6b('0x7'));var config=require('../../config/environment');var jayson=require(_0x8a6b('0x8'));var client=jayson[_0x8a6b('0x9')][_0x8a6b('0xa')]({'port':0x232a});config[_0x8a6b('0xb')]=_['defaults'](config[_0x8a6b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x8a6b('0xc'))(new Redis(config[_0x8a6b('0xb')]));require(_0x8a6b('0xd'))['register'](socket);function respondWithRpcPromise(_0x4e98f8,_0x4e8c58,_0x151a59){return new BPromise(function(_0xd0152f,_0x53880d){return client[_0x8a6b('0xe')](_0x4e98f8,_0x151a59)[_0x8a6b('0xf')](function(_0x25bf93){logger[_0x8a6b('0x10')](_0x8a6b('0x11'),_0x4e8c58,'request\x20sent');logger['debug'](_0x8a6b('0x12'),_0x4e8c58,_0x8a6b('0x13'),JSON[_0x8a6b('0x14')](_0x25bf93));if(_0x25bf93['error']){if(_0x25bf93['error'][_0x8a6b('0x15')]===0x1f4){logger[_0x8a6b('0x16')](_0x8a6b('0x11'),_0x4e8c58,_0x25bf93[_0x8a6b('0x16')][_0x8a6b('0x17')]);return _0x53880d(_0x25bf93[_0x8a6b('0x16')][_0x8a6b('0x17')]);}logger[_0x8a6b('0x16')]('SmsQueue,\x20%s,\x20%s',_0x4e8c58,_0x25bf93[_0x8a6b('0x16')][_0x8a6b('0x17')]);return _0xd0152f(_0x25bf93[_0x8a6b('0x16')][_0x8a6b('0x17')]);}else{logger[_0x8a6b('0x10')](_0x8a6b('0x11'),_0x4e8c58,_0x8a6b('0x13'));_0xd0152f(_0x25bf93['result']['message']);}})[_0x8a6b('0x18')](function(_0x496e8f){logger[_0x8a6b('0x16')](_0x8a6b('0x11'),_0x4e8c58,_0x496e8f);_0x53880d(_0x496e8f);});});}exports[_0x8a6b('0x19')]=function(_0x3bb701){var _0x5cc14d=this;return new Promise(function(_0x781337,_0x18fb2c){return db[_0x8a6b('0x1a')][_0x8a6b('0x1b')]({'raw':_0x3bb701[_0x8a6b('0x1c')]?_0x3bb701[_0x8a6b('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x3bb701[_0x8a6b('0x1c')]?_0x3bb701[_0x8a6b('0x1c')][_0x8a6b('0x1d')]||null:null,'attributes':_0x3bb701['options']?_0x3bb701['options'][_0x8a6b('0x1e')]||null:null,'limit':_0x3bb701['options']?_0x3bb701[_0x8a6b('0x1c')][_0x8a6b('0x1f')]||null:null,'include':_0x3bb701[_0x8a6b('0x1c')]?_0x3bb701[_0x8a6b('0x1c')]['include']?_[_0x8a6b('0x20')](_0x3bb701[_0x8a6b('0x1c')][_0x8a6b('0x21')],function(_0x29fbcc){return{'model':db[_0x29fbcc[_0x8a6b('0x22')]],'as':_0x29fbcc['as'],'attributes':_0x29fbcc['attributes'],'include':_0x29fbcc[_0x8a6b('0x21')]?_[_0x8a6b('0x20')](_0x29fbcc[_0x8a6b('0x21')],function(_0x29e2ac){return{'model':db[_0x29e2ac[_0x8a6b('0x22')]],'as':_0x29e2ac['as'],'attributes':_0x29e2ac[_0x8a6b('0x1e')],'include':_0x29e2ac[_0x8a6b('0x21')]?_[_0x8a6b('0x20')](_0x29e2ac[_0x8a6b('0x21')],function(_0x13baae){return{'model':db[_0x13baae[_0x8a6b('0x22')]],'as':_0x13baae['as'],'attributes':_0x13baae[_0x8a6b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8a6b('0xf')](function(_0x2b9701){logger[_0x8a6b('0x10')]('GetSmsQueue',_0x3bb701);logger[_0x8a6b('0x23')](_0x8a6b('0x19'),_0x3bb701,JSON['stringify'](_0x2b9701));_0x781337(_0x2b9701);})[_0x8a6b('0x18')](function(_0x1eb3db){logger[_0x8a6b('0x16')]('GetSmsQueue',_0x1eb3db[_0x8a6b('0x17')],_0x3bb701);_0x18fb2c(_0x5cc14d['error'](0x1f4,_0x1eb3db['message']));});});};exports[_0x8a6b('0x24')]=function(_0x3e5117){var _0x52642d=this;return new Promise(function(_0xdf871f,_0x4aad10){return db[_0x8a6b('0x1a')][_0x8a6b('0x25')]({'raw':_0x3e5117[_0x8a6b('0x1c')]?_0x3e5117[_0x8a6b('0x1c')][_0x8a6b('0x26')]===undefined?!![]:![]:!![],'where':_0x3e5117[_0x8a6b('0x1c')]?_0x3e5117[_0x8a6b('0x1c')][_0x8a6b('0x1d')]||null:null,'attributes':_0x3e5117[_0x8a6b('0x1c')]?_0x3e5117[_0x8a6b('0x1c')][_0x8a6b('0x1e')]||null:null,'include':_0x3e5117[_0x8a6b('0x1c')]?_0x3e5117['options'][_0x8a6b('0x21')]?_[_0x8a6b('0x20')](_0x3e5117[_0x8a6b('0x1c')][_0x8a6b('0x21')],function(_0x519497){return{'model':db[_0x519497[_0x8a6b('0x22')]],'as':_0x519497['as'],'attributes':_0x519497[_0x8a6b('0x1e')],'include':_0x519497[_0x8a6b('0x21')]?_[_0x8a6b('0x20')](_0x519497['include'],function(_0x1834c5){return{'model':db[_0x1834c5[_0x8a6b('0x22')]],'as':_0x1834c5['as'],'attributes':_0x1834c5['attributes'],'include':_0x1834c5['include']?_['map'](_0x1834c5[_0x8a6b('0x21')],function(_0x465fd6){return{'model':db[_0x465fd6['model']],'as':_0x465fd6['as'],'attributes':_0x465fd6[_0x8a6b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8a6b('0xf')](function(_0x23cf9d){logger[_0x8a6b('0x10')](_0x8a6b('0x24'),_0x3e5117);logger['debug'](_0x8a6b('0x24'),_0x3e5117,JSON['stringify'](_0x23cf9d));_0xdf871f(_0x23cf9d);})[_0x8a6b('0x18')](function(_0x5bbbdf){logger[_0x8a6b('0x16')](_0x8a6b('0x24'),_0x5bbbdf[_0x8a6b('0x17')],_0x3e5117);_0x4aad10(_0x52642d[_0x8a6b('0x16')](0x1f4,_0x5bbbdf[_0x8a6b('0x17')]));});});};
\ No newline at end of file
+var _0xe364=['moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./smsQueue.socket','register','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetSmsQueue','SmsQueue','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowSmsQueue','lodash'];(function(_0x4869f3,_0x4a62ca){var _0x2443a4=function(_0x2bbb57){while(--_0x2bbb57){_0x4869f3['push'](_0x4869f3['shift']());}};_0x2443a4(++_0x4a62ca);}(_0xe364,0x1ed));var _0x4e36=function(_0x27604f,_0x5ae336){_0x27604f=_0x27604f-0x0;var _0x40d189=_0xe364[_0x27604f];return _0x40d189;};'use strict';var _=require(_0x4e36('0x0'));var util=require('util');var moment=require(_0x4e36('0x1'));var BPromise=require(_0x4e36('0x2'));var rs=require(_0x4e36('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e36('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4e36('0x5'));var config=require(_0x4e36('0x6'));var jayson=require(_0x4e36('0x7'));var client=jayson[_0x4e36('0x8')][_0x4e36('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4e36('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x4e36('0xb'))(new Redis(config['redis']));require(_0x4e36('0xc'))[_0x4e36('0xd')](socket);function respondWithRpcPromise(_0x2e76c3,_0x3c3a72,_0xe1ab90){return new BPromise(function(_0x13105d,_0x51f15f){return client[_0x4e36('0xe')](_0x2e76c3,_0xe1ab90)['then'](function(_0x3ec1b1){logger[_0x4e36('0xf')](_0x4e36('0x10'),_0x3c3a72,_0x4e36('0x11'));logger[_0x4e36('0x12')](_0x4e36('0x13'),_0x3c3a72,_0x4e36('0x11'),JSON[_0x4e36('0x14')](_0x3ec1b1));if(_0x3ec1b1[_0x4e36('0x15')]){if(_0x3ec1b1[_0x4e36('0x15')][_0x4e36('0x16')]===0x1f4){logger[_0x4e36('0x15')](_0x4e36('0x10'),_0x3c3a72,_0x3ec1b1[_0x4e36('0x15')]['message']);return _0x51f15f(_0x3ec1b1[_0x4e36('0x15')][_0x4e36('0x17')]);}logger[_0x4e36('0x15')](_0x4e36('0x10'),_0x3c3a72,_0x3ec1b1[_0x4e36('0x15')]['message']);return _0x13105d(_0x3ec1b1[_0x4e36('0x15')][_0x4e36('0x17')]);}else{logger[_0x4e36('0xf')](_0x4e36('0x10'),_0x3c3a72,_0x4e36('0x11'));_0x13105d(_0x3ec1b1['result'][_0x4e36('0x17')]);}})[_0x4e36('0x18')](function(_0x26a9a8){logger[_0x4e36('0x15')](_0x4e36('0x10'),_0x3c3a72,_0x26a9a8);_0x51f15f(_0x26a9a8);});});}exports[_0x4e36('0x19')]=function(_0x44b9a9){var _0x2e9df9=this;return new Promise(function(_0x94634f,_0x1ae19d){return db[_0x4e36('0x1a')][_0x4e36('0x1b')]({'raw':_0x44b9a9['options']?_0x44b9a9[_0x4e36('0x1c')][_0x4e36('0x1d')]===undefined?!![]:![]:!![],'where':_0x44b9a9['options']?_0x44b9a9[_0x4e36('0x1c')][_0x4e36('0x1e')]||null:null,'attributes':_0x44b9a9['options']?_0x44b9a9['options'][_0x4e36('0x1f')]||null:null,'limit':_0x44b9a9[_0x4e36('0x1c')]?_0x44b9a9[_0x4e36('0x1c')][_0x4e36('0x20')]||null:null,'include':_0x44b9a9['options']?_0x44b9a9['options'][_0x4e36('0x21')]?_[_0x4e36('0x22')](_0x44b9a9[_0x4e36('0x1c')][_0x4e36('0x21')],function(_0x234ef2){return{'model':db[_0x234ef2[_0x4e36('0x23')]],'as':_0x234ef2['as'],'attributes':_0x234ef2['attributes'],'include':_0x234ef2[_0x4e36('0x21')]?_['map'](_0x234ef2[_0x4e36('0x21')],function(_0x3b0baa){return{'model':db[_0x3b0baa[_0x4e36('0x23')]],'as':_0x3b0baa['as'],'attributes':_0x3b0baa[_0x4e36('0x1f')],'include':_0x3b0baa['include']?_[_0x4e36('0x22')](_0x3b0baa['include'],function(_0x256cd9){return{'model':db[_0x256cd9[_0x4e36('0x23')]],'as':_0x256cd9['as'],'attributes':_0x256cd9[_0x4e36('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e36('0x24')](function(_0x3356e7){logger[_0x4e36('0xf')](_0x4e36('0x19'),_0x44b9a9);logger[_0x4e36('0x12')](_0x4e36('0x19'),_0x44b9a9,JSON['stringify'](_0x3356e7));_0x94634f(_0x3356e7);})[_0x4e36('0x18')](function(_0x5b464f){logger[_0x4e36('0x15')](_0x4e36('0x19'),_0x5b464f['message'],_0x44b9a9);_0x1ae19d(_0x2e9df9[_0x4e36('0x15')](0x1f4,_0x5b464f[_0x4e36('0x17')]));});});};exports[_0x4e36('0x25')]=function(_0x1e63d8){var _0xfb5b32=this;return new Promise(function(_0x1813e9,_0x58fb42){return db['SmsQueue']['find']({'raw':_0x1e63d8[_0x4e36('0x1c')]?_0x1e63d8['options'][_0x4e36('0x1d')]===undefined?!![]:![]:!![],'where':_0x1e63d8[_0x4e36('0x1c')]?_0x1e63d8[_0x4e36('0x1c')]['where']||null:null,'attributes':_0x1e63d8[_0x4e36('0x1c')]?_0x1e63d8[_0x4e36('0x1c')][_0x4e36('0x1f')]||null:null,'include':_0x1e63d8['options']?_0x1e63d8[_0x4e36('0x1c')][_0x4e36('0x21')]?_[_0x4e36('0x22')](_0x1e63d8[_0x4e36('0x1c')]['include'],function(_0x12cd5b){return{'model':db[_0x12cd5b[_0x4e36('0x23')]],'as':_0x12cd5b['as'],'attributes':_0x12cd5b[_0x4e36('0x1f')],'include':_0x12cd5b[_0x4e36('0x21')]?_[_0x4e36('0x22')](_0x12cd5b[_0x4e36('0x21')],function(_0x259f49){return{'model':db[_0x259f49[_0x4e36('0x23')]],'as':_0x259f49['as'],'attributes':_0x259f49['attributes'],'include':_0x259f49[_0x4e36('0x21')]?_[_0x4e36('0x22')](_0x259f49[_0x4e36('0x21')],function(_0x489b81){return{'model':db[_0x489b81['model']],'as':_0x489b81['as'],'attributes':_0x489b81[_0x4e36('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e36('0x24')](function(_0x1dd799){logger[_0x4e36('0xf')](_0x4e36('0x25'),_0x1e63d8);logger['debug'](_0x4e36('0x25'),_0x1e63d8,JSON['stringify'](_0x1dd799));_0x1813e9(_0x1dd799);})[_0x4e36('0x18')](function(_0x3cb69d){logger[_0x4e36('0x15')](_0x4e36('0x25'),_0x3cb69d['message'],_0x1e63d8);_0x58fb42(_0xfb5b32[_0x4e36('0x15')](0x1f4,_0x3cb69d[_0x4e36('0x17')]));});});};
\ No newline at end of file
index d793081..8d45118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf3=['removeListener','register','length','smsQueue:','save','remove','update','emit'];(function(_0x40c1ca,_0x30e38d){var _0x358c1a=function(_0x90fb33){while(--_0x90fb33){_0x40c1ca['push'](_0x40c1ca['shift']());}};_0x358c1a(++_0x30e38d);}(_0xbbf3,0x1e4));var _0x3bbf=function(_0x468c5a,_0xe33904){_0x468c5a=_0x468c5a-0x0;var _0x27feef=_0xbbf3[_0x468c5a];return _0x27feef;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x3bbf('0x0'),_0x3bbf('0x1'),_0x3bbf('0x2')];function createListener(_0x1fb83f,_0x1df0c0){return function(_0x3fc4a1){_0x1df0c0[_0x3bbf('0x3')](_0x1fb83f,_0x3fc4a1);};}function removeListener(_0x4a8f0a,_0x6359d0){return function(){SmsQueueEvents[_0x3bbf('0x4')](_0x4a8f0a,_0x6359d0);};}exports[_0x3bbf('0x5')]=function(_0xae6d69){for(var _0x4c7104=0x0,_0x2d41b3=events[_0x3bbf('0x6')];_0x4c7104<_0x2d41b3;_0x4c7104++){var _0x1fc00e=events[_0x4c7104];var _0x1ec32a=createListener(_0x3bbf('0x7')+_0x1fc00e,_0xae6d69);SmsQueueEvents['on'](_0x1fc00e,_0x1ec32a);}};
\ No newline at end of file
+var _0x18c1=['update','emit','removeListener','length','smsQueue:','./smsQueue.events','save','remove'];(function(_0x96c763,_0x55a7d0){var _0x587f2c=function(_0x36de63){while(--_0x36de63){_0x96c763['push'](_0x96c763['shift']());}};_0x587f2c(++_0x55a7d0);}(_0x18c1,0x10d));var _0x118c=function(_0x3615e0,_0x2ebb85){_0x3615e0=_0x3615e0-0x0;var _0x48657d=_0x18c1[_0x3615e0];return _0x48657d;};'use strict';var SmsQueueEvents=require(_0x118c('0x0'));var events=[_0x118c('0x1'),_0x118c('0x2'),_0x118c('0x3')];function createListener(_0x562009,_0x23e1b5){return function(_0x3edf1c){_0x23e1b5[_0x118c('0x4')](_0x562009,_0x3edf1c);};}function removeListener(_0x3ac72d,_0x5c0a0a){return function(){SmsQueueEvents[_0x118c('0x5')](_0x3ac72d,_0x5c0a0a);};}exports['register']=function(_0xc7c2d0){for(var _0x403b50=0x0,_0x51a16d=events[_0x118c('0x6')];_0x403b50<_0x51a16d;_0x403b50++){var _0x1a02fb=events[_0x403b50];var _0x196576=createListener(_0x118c('0x7')+_0x1a02fb,_0xc7c2d0);SmsQueueEvents['on'](_0x1a02fb,_0x196576);}};
\ No newline at end of file
index 24bb362..ef38d1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19d1=['/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','post','put'];(function(_0x401d08,_0x3afbb4){var _0x3a7297=function(_0x2f83a9){while(--_0x2f83a9){_0x401d08['push'](_0x401d08['shift']());}};_0x3a7297(++_0x3afbb4);}(_0x19d1,0x16c));var _0x119d=function(_0x2ef5d8,_0x732060){_0x2ef5d8=_0x2ef5d8-0x0;var _0x2bada8=_0x19d1[_0x2ef5d8];return _0x2bada8;};'use strict';var multer=require(_0x119d('0x0'));var util=require(_0x119d('0x1'));var path=require('path');var timeout=require(_0x119d('0x2'));var express=require(_0x119d('0x3'));var router=express[_0x119d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x119d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x119d('0x6'));var controller=require(_0x119d('0x7'));router[_0x119d('0x8')]('/',auth[_0x119d('0x9')](),controller[_0x119d('0xa')]);router[_0x119d('0x8')](_0x119d('0xb'),auth['isAuthenticated'](),controller[_0x119d('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x119d('0xd')]);router[_0x119d('0xe')]('/',auth[_0x119d('0x9')](),controller['create']);router[_0x119d('0xf')](_0x119d('0x10'),auth[_0x119d('0x9')](),controller[_0x119d('0x11')]);router[_0x119d('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x119d('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x9208=['put','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create'];(function(_0x2292b1,_0x792536){var _0x303a39=function(_0x469235){while(--_0x469235){_0x2292b1['push'](_0x2292b1['shift']());}};_0x303a39(++_0x792536);}(_0x9208,0x108));var _0x8920=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9208[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x8920('0x0'));var util=require(_0x8920('0x1'));var path=require('path');var timeout=require(_0x8920('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x8920('0x3'));var auth=require(_0x8920('0x4'));var interaction=require(_0x8920('0x5'));var config=require(_0x8920('0x6'));var controller=require('./smsQueueReport.controller');router[_0x8920('0x7')]('/',auth[_0x8920('0x8')](),controller[_0x8920('0x9')]);router['get'](_0x8920('0xa'),auth[_0x8920('0x8')](),controller[_0x8920('0xb')]);router[_0x8920('0x7')](_0x8920('0xc'),auth[_0x8920('0x8')](),controller[_0x8920('0xd')]);router[_0x8920('0xe')]('/',auth['isAuthenticated'](),controller[_0x8920('0xf')]);router[_0x8920('0x10')](_0x8920('0xc'),auth[_0x8920('0x8')](),controller['update']);router[_0x8920('0x11')](_0x8920('0xc'),auth['isAuthenticated'](),controller[_0x8920('0x12')]);module[_0x8920('0x13')]=router;
\ No newline at end of file
index 9284195..61f846c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f29=['moment','sequelize','exports','STRING','DATE'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9f29,0x64));var _0x99f2=function(_0x4001d4,_0x1fc5c9){_0x4001d4=_0x4001d4-0x0;var _0x1413d7=_0x9f29[_0x4001d4];return _0x1413d7;};'use strict';var moment=require(_0x99f2('0x0'));var Sequelize=require(_0x99f2('0x1'));module[_0x99f2('0x2')]={'uniqueid':{'type':Sequelize[_0x99f2('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x99f2('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x99f2('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7889=['exports','STRING','DATE','sequelize'];(function(_0x4f55f1,_0x20bd10){var _0x4270e1=function(_0x524759){while(--_0x524759){_0x4f55f1['push'](_0x4f55f1['shift']());}};_0x4270e1(++_0x20bd10);}(_0x7889,0xf7));var _0x9788=function(_0xd06028,_0x5c8d0f){_0xd06028=_0xd06028-0x0;var _0x5ab081=_0x7889[_0xd06028];return _0x5ab081;};'use strict';var moment=require('moment');var Sequelize=require(_0x9788('0x0'));module[_0x9788('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x9788('0x2')]},'joinAt':{'type':Sequelize[_0x9788('0x3')]},'leaveAt':{'type':Sequelize[_0x9788('0x3')]},'acceptAt':{'type':Sequelize[_0x9788('0x3')]},'exitAt':{'type':Sequelize[_0x9788('0x3')]},'reason':{'type':Sequelize[_0x9788('0x2')]}};
\ No newline at end of file
index 31af714..ade402b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c8=['params','rawAttributes','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','index','map','SmsQueueReport','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','rows','catch','show'];(function(_0x2cc569,_0x4e9568){var _0x1bfc2e=function(_0x5b8fcb){while(--_0x5b8fcb){_0x2cc569['push'](_0x2cc569['shift']());}};_0x1bfc2e(++_0x4e9568);}(_0x23c8,0xe6));var _0x823c=function(_0x366e10,_0x17c122){_0x366e10=_0x366e10-0x0;var _0x43cfe8=_0x23c8[_0x366e10];return _0x43cfe8;};'use strict';var emlformat=require(_0x823c('0x0'));var rimraf=require(_0x823c('0x1'));var zipdir=require(_0x823c('0x2'));var jsonpatch=require(_0x823c('0x3'));var rp=require('request-promise');var moment=require(_0x823c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x823c('0x5'));var util=require(_0x823c('0x6'));var path=require(_0x823c('0x7'));var sox=require(_0x823c('0x8'));var csv=require(_0x823c('0x9'));var ejs=require(_0x823c('0xa'));var fs=require('fs');var fs_extra=require(_0x823c('0xb'));var _=require(_0x823c('0xc'));var squel=require(_0x823c('0xd'));var crypto=require('crypto');var jsforce=require(_0x823c('0xe'));var deskjs=require(_0x823c('0xf'));var toCsv=require(_0x823c('0x9'));var querystring=require(_0x823c('0x10'));var Papa=require(_0x823c('0x11'));var Redis=require(_0x823c('0x12'));var authService=require(_0x823c('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x823c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x823c('0x15'))(_0x823c('0x16'));var utils=require('../../config/utils');var config=require(_0x823c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x823c('0x18'))['db'];function respondWithStatusCode(_0x453bfd,_0x403dd5){_0x403dd5=_0x403dd5||0xcc;return function(_0x7d5549){if(_0x7d5549){return _0x453bfd[_0x823c('0x19')](_0x403dd5);}return _0x453bfd[_0x823c('0x1a')](_0x403dd5)['end']();};}function respondWithResult(_0x4db832,_0x5e9b59){_0x5e9b59=_0x5e9b59||0xc8;return function(_0x52ea76){if(_0x52ea76){return _0x4db832[_0x823c('0x1a')](_0x5e9b59)[_0x823c('0x1b')](_0x52ea76);}};}function respondWithFilteredResult(_0x1c9857,_0x2e5bbe){return function(_0x6e12fa){if(_0x6e12fa){var _0xcc4058=typeof _0x2e5bbe['offset']==='undefined'&&typeof _0x2e5bbe[_0x823c('0x1c')]===_0x823c('0x1d');var _0x425556=_0x6e12fa[_0x823c('0x1e')];var _0x1e9026=_0xcc4058?0x0:_0x2e5bbe[_0x823c('0x1f')];var _0x3054df=_0xcc4058?_0x6e12fa[_0x823c('0x1e')]:_0x2e5bbe[_0x823c('0x1f')]+_0x2e5bbe[_0x823c('0x1c')];var _0x4decf5;if(_0x3054df>=_0x425556){_0x3054df=_0x425556;_0x4decf5=0xc8;}else{_0x4decf5=0xce;}_0x1c9857['status'](_0x4decf5);return _0x1c9857[_0x823c('0x20')](_0x823c('0x21'),_0x1e9026+'-'+_0x3054df+'/'+_0x425556)['json'](_0x6e12fa);}return null;};}function patchUpdates(_0x2e79ed){return function(_0x525f61){try{jsonpatch[_0x823c('0x22')](_0x525f61,_0x2e79ed,!![]);}catch(_0x1a2dae){return BPromise[_0x823c('0x23')](_0x1a2dae);}return _0x525f61[_0x823c('0x24')]();};}function saveUpdates(_0x45ec01,_0x504e6e){return function(_0x7a3514){if(_0x7a3514){return _0x7a3514['update'](_0x45ec01)[_0x823c('0x25')](function(_0x21bf16){return _0x21bf16;});}return null;};}function removeEntity(_0x124b55,_0x134942){return function(_0x2de30d){if(_0x2de30d){return _0x2de30d[_0x823c('0x26')]()[_0x823c('0x25')](function(){_0x124b55[_0x823c('0x1a')](0xcc)[_0x823c('0x27')]();});}};}function handleEntityNotFound(_0x548eb4,_0x30ba05){return function(_0x401493){if(!_0x401493){_0x548eb4[_0x823c('0x19')](0x194);}return _0x401493;};}function handleError(_0x3d5768,_0x3d80e6){_0x3d80e6=_0x3d80e6||0x1f4;return function(_0x13ce25){logger[_0x823c('0x28')](_0x13ce25[_0x823c('0x29')]);if(_0x13ce25[_0x823c('0x2a')]){delete _0x13ce25[_0x823c('0x2a')];}_0x3d5768['status'](_0x3d80e6)['send'](_0x13ce25);};}exports[_0x823c('0x2b')]=function(_0xc635c,_0x8a6160){var _0x3dfda1={},_0x554b85={},_0x30d71b={'count':0x0,'rows':[]};var _0x1629b5=_[_0x823c('0x2c')](db[_0x823c('0x2d')]['rawAttributes'],function(_0xdec8d5){return{'name':_0xdec8d5[_0x823c('0x2e')],'type':_0xdec8d5['type']['key']};});_0x554b85[_0x823c('0x2f')]=_[_0x823c('0x2c')](_0x1629b5,_0x823c('0x2a'));_0x554b85['query']=_[_0x823c('0x30')](_0xc635c[_0x823c('0x31')]);_0x554b85[_0x823c('0x32')]=_[_0x823c('0x33')](_0x554b85['model'],_0x554b85[_0x823c('0x31')]);_0x3dfda1[_0x823c('0x34')]=_[_0x823c('0x33')](_0x554b85[_0x823c('0x2f')],qs[_0x823c('0x35')](_0xc635c['query'][_0x823c('0x35')]));_0x3dfda1[_0x823c('0x34')]=_0x3dfda1['attributes'][_0x823c('0x36')]?_0x3dfda1[_0x823c('0x34')]:_0x554b85['model'];if(!_0xc635c[_0x823c('0x31')][_0x823c('0x37')](_0x823c('0x38'))){_0x3dfda1[_0x823c('0x1c')]=qs['limit'](_0xc635c[_0x823c('0x31')]['limit']);_0x3dfda1[_0x823c('0x1f')]=qs[_0x823c('0x1f')](_0xc635c[_0x823c('0x31')][_0x823c('0x1f')]);}_0x3dfda1['order']=qs[_0x823c('0x39')](_0xc635c[_0x823c('0x31')][_0x823c('0x39')]);_0x3dfda1[_0x823c('0x3a')]=qs[_0x823c('0x32')](_['pick'](_0xc635c['query'],_0x554b85[_0x823c('0x32')]),_0x1629b5);if(_0xc635c['query'][_0x823c('0x3b')]){_0x3dfda1[_0x823c('0x3a')]=_[_0x823c('0x3c')](_0x3dfda1[_0x823c('0x3a')],{'$or':_[_0x823c('0x2c')](_0x1629b5,function(_0x5011a5){if(_0x5011a5['type']!=='VIRTUAL'){var _0x2e1587={};_0x2e1587[_0x5011a5[_0x823c('0x2a')]]={'$like':'%'+_0xc635c[_0x823c('0x31')][_0x823c('0x3b')]+'%'};return _0x2e1587;}})});}_0x3dfda1=_[_0x823c('0x3c')]({},_0x3dfda1,_0xc635c[_0x823c('0x3d')]);var _0x1c7400={'where':_0x3dfda1['where']};return db['SmsQueueReport'][_0x823c('0x1e')](_0x1c7400)[_0x823c('0x25')](function(_0x12d473){_0x30d71b[_0x823c('0x1e')]=_0x12d473;if(_0xc635c[_0x823c('0x31')][_0x823c('0x3e')]){_0x3dfda1['include']=[{'all':!![]}];}return db['SmsQueueReport']['findAll'](_0x3dfda1);})[_0x823c('0x25')](function(_0x100e68){_0x30d71b[_0x823c('0x3f')]=_0x100e68;return _0x30d71b;})[_0x823c('0x25')](respondWithFilteredResult(_0x8a6160,_0x3dfda1))[_0x823c('0x40')](handleError(_0x8a6160,null));};exports[_0x823c('0x41')]=function(_0x25536d,_0x4ce65f){var _0x4ab55b={'raw':!![],'where':{'id':_0x25536d[_0x823c('0x42')]['id']}},_0x54b154={};_0x54b154[_0x823c('0x2f')]=_[_0x823c('0x30')](db['SmsQueueReport'][_0x823c('0x43')]);_0x54b154[_0x823c('0x31')]=_[_0x823c('0x30')](_0x25536d['query']);_0x54b154[_0x823c('0x32')]=_[_0x823c('0x33')](_0x54b154[_0x823c('0x2f')],_0x54b154[_0x823c('0x31')]);_0x4ab55b[_0x823c('0x34')]=_[_0x823c('0x33')](_0x54b154[_0x823c('0x2f')],qs[_0x823c('0x35')](_0x25536d[_0x823c('0x31')][_0x823c('0x35')]));_0x4ab55b[_0x823c('0x34')]=_0x4ab55b[_0x823c('0x34')][_0x823c('0x36')]?_0x4ab55b[_0x823c('0x34')]:_0x54b154['model'];if(_0x25536d[_0x823c('0x31')][_0x823c('0x3e')]){_0x4ab55b[_0x823c('0x44')]=[{'all':!![]}];}_0x4ab55b=_['merge']({},_0x4ab55b,_0x25536d['options']);return db[_0x823c('0x2d')][_0x823c('0x45')](_0x4ab55b)[_0x823c('0x25')](handleEntityNotFound(_0x4ce65f,null))[_0x823c('0x25')](respondWithResult(_0x4ce65f,null))['catch'](handleError(_0x4ce65f,null));};exports[_0x823c('0x46')]=function(_0xac42ae,_0x1b2aea){return db['SmsQueueReport']['create'](_0xac42ae[_0x823c('0x47')],{})['then'](respondWithResult(_0x1b2aea,0xc9))['catch'](handleError(_0x1b2aea,null));};exports[_0x823c('0x48')]=function(_0x48fecf,_0x446aa1){if(_0x48fecf[_0x823c('0x47')]['id']){delete _0x48fecf['body']['id'];}return db[_0x823c('0x2d')]['find']({'where':{'id':_0x48fecf[_0x823c('0x42')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x446aa1,null))['then'](saveUpdates(_0x48fecf['body'],null))[_0x823c('0x25')](respondWithResult(_0x446aa1,null))[_0x823c('0x40')](handleError(_0x446aa1,null));};exports[_0x823c('0x26')]=function(_0x16b55a,_0x559a8d){return db[_0x823c('0x2d')]['find']({'where':{'id':_0x16b55a[_0x823c('0x42')]['id']}})['then'](handleEntityNotFound(_0x559a8d,null))['then'](removeEntity(_0x559a8d,null))['catch'](handleError(_0x559a8d,null));};exports[_0x823c('0x49')]=function(_0x144569,_0x20cc42){return db[_0x823c('0x2d')][_0x823c('0x49')]()[_0x823c('0x25')](respondWithResult(_0x20cc42,null))['catch'](handleError(_0x20cc42,null));};
\ No newline at end of file
+var _0xde1b=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','SmsQueueReport','rawAttributes','type','key','model','map','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','length','options','create','body','destroy','find'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0xde1b,0xeb));var _0xbde1=function(_0x21cdd1,_0x195645){_0x21cdd1=_0x21cdd1-0x0;var _0x4f37ae=_0xde1b[_0x21cdd1];return _0x4f37ae;};'use strict';var emlformat=require(_0xbde1('0x0'));var rimraf=require(_0xbde1('0x1'));var zipdir=require(_0xbde1('0x2'));var jsonpatch=require(_0xbde1('0x3'));var rp=require(_0xbde1('0x4'));var moment=require(_0xbde1('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xbde1('0x6'));var util=require(_0xbde1('0x7'));var path=require(_0xbde1('0x8'));var sox=require(_0xbde1('0x9'));var csv=require(_0xbde1('0xa'));var ejs=require(_0xbde1('0xb'));var fs=require('fs');var fs_extra=require(_0xbde1('0xc'));var _=require('lodash');var squel=require(_0xbde1('0xd'));var crypto=require(_0xbde1('0xe'));var jsforce=require(_0xbde1('0xf'));var deskjs=require(_0xbde1('0x10'));var toCsv=require('to-csv');var querystring=require(_0xbde1('0x11'));var Papa=require(_0xbde1('0x12'));var Redis=require(_0xbde1('0x13'));var authService=require(_0xbde1('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbde1('0x15'));var logger=require('../../config/logger')(_0xbde1('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xbde1('0x17'));var db=require(_0xbde1('0x18'))['db'];function respondWithStatusCode(_0x1f6a50,_0x4da58d){_0x4da58d=_0x4da58d||0xcc;return function(_0x2dde7e){if(_0x2dde7e){return _0x1f6a50[_0xbde1('0x19')](_0x4da58d);}return _0x1f6a50[_0xbde1('0x1a')](_0x4da58d)[_0xbde1('0x1b')]();};}function respondWithResult(_0x436975,_0xe9af37){_0xe9af37=_0xe9af37||0xc8;return function(_0x2695fd){if(_0x2695fd){return _0x436975['status'](_0xe9af37)[_0xbde1('0x1c')](_0x2695fd);}};}function respondWithFilteredResult(_0x45ffba,_0x3b1034){return function(_0x768ab){if(_0x768ab){var _0x2d54eb=typeof _0x3b1034[_0xbde1('0x1d')]===_0xbde1('0x1e')&&typeof _0x3b1034[_0xbde1('0x1f')]===_0xbde1('0x1e');var _0xdaae53=_0x768ab[_0xbde1('0x20')];var _0x1adf5f=_0x2d54eb?0x0:_0x3b1034[_0xbde1('0x1d')];var _0xfbd965=_0x2d54eb?_0x768ab[_0xbde1('0x20')]:_0x3b1034['offset']+_0x3b1034[_0xbde1('0x1f')];var _0xea0f12;if(_0xfbd965>=_0xdaae53){_0xfbd965=_0xdaae53;_0xea0f12=0xc8;}else{_0xea0f12=0xce;}_0x45ffba[_0xbde1('0x1a')](_0xea0f12);return _0x45ffba[_0xbde1('0x21')](_0xbde1('0x22'),_0x1adf5f+'-'+_0xfbd965+'/'+_0xdaae53)['json'](_0x768ab);}return null;};}function patchUpdates(_0x576da9){return function(_0x1a788a){try{jsonpatch[_0xbde1('0x23')](_0x1a788a,_0x576da9,!![]);}catch(_0x2f41d6){return BPromise[_0xbde1('0x24')](_0x2f41d6);}return _0x1a788a[_0xbde1('0x25')]();};}function saveUpdates(_0x20d101,_0x1c44f3){return function(_0xe1b3c4){if(_0xe1b3c4){return _0xe1b3c4[_0xbde1('0x26')](_0x20d101)[_0xbde1('0x27')](function(_0x3b42e0){return _0x3b42e0;});}return null;};}function removeEntity(_0x4d14ae,_0x4fc460){return function(_0xaa910a){if(_0xaa910a){return _0xaa910a['destroy']()[_0xbde1('0x27')](function(){_0x4d14ae[_0xbde1('0x1a')](0xcc)[_0xbde1('0x1b')]();});}};}function handleEntityNotFound(_0x21556d,_0x3134ef){return function(_0x36dcd1){if(!_0x36dcd1){_0x21556d[_0xbde1('0x19')](0x194);}return _0x36dcd1;};}function handleError(_0x3daadf,_0x2411f2){_0x2411f2=_0x2411f2||0x1f4;return function(_0x15b034){logger[_0xbde1('0x28')](_0x15b034[_0xbde1('0x29')]);if(_0x15b034[_0xbde1('0x2a')]){delete _0x15b034[_0xbde1('0x2a')];}_0x3daadf[_0xbde1('0x1a')](_0x2411f2)[_0xbde1('0x2b')](_0x15b034);};}exports[_0xbde1('0x2c')]=function(_0x2b613e,_0x5617bb){var _0x5befab={},_0x2100c9={},_0x16fc59={'count':0x0,'rows':[]};var _0x29312c=_['map'](db[_0xbde1('0x2d')][_0xbde1('0x2e')],function(_0x4a76f0){return{'name':_0x4a76f0['fieldName'],'type':_0x4a76f0[_0xbde1('0x2f')][_0xbde1('0x30')]};});_0x2100c9[_0xbde1('0x31')]=_[_0xbde1('0x32')](_0x29312c,_0xbde1('0x2a'));_0x2100c9['query']=_[_0xbde1('0x33')](_0x2b613e[_0xbde1('0x34')]);_0x2100c9[_0xbde1('0x35')]=_[_0xbde1('0x36')](_0x2100c9['model'],_0x2100c9[_0xbde1('0x34')]);_0x5befab['attributes']=_['intersection'](_0x2100c9[_0xbde1('0x31')],qs[_0xbde1('0x37')](_0x2b613e[_0xbde1('0x34')][_0xbde1('0x37')]));_0x5befab[_0xbde1('0x38')]=_0x5befab['attributes']['length']?_0x5befab[_0xbde1('0x38')]:_0x2100c9[_0xbde1('0x31')];if(!_0x2b613e[_0xbde1('0x34')][_0xbde1('0x39')]('nolimit')){_0x5befab[_0xbde1('0x1f')]=qs[_0xbde1('0x1f')](_0x2b613e[_0xbde1('0x34')][_0xbde1('0x1f')]);_0x5befab['offset']=qs['offset'](_0x2b613e[_0xbde1('0x34')][_0xbde1('0x1d')]);}_0x5befab[_0xbde1('0x3a')]=qs[_0xbde1('0x3b')](_0x2b613e['query'][_0xbde1('0x3b')]);_0x5befab[_0xbde1('0x3c')]=qs[_0xbde1('0x35')](_[_0xbde1('0x3d')](_0x2b613e[_0xbde1('0x34')],_0x2100c9[_0xbde1('0x35')]),_0x29312c);if(_0x2b613e[_0xbde1('0x34')][_0xbde1('0x3e')]){_0x5befab[_0xbde1('0x3c')]=_[_0xbde1('0x3f')](_0x5befab['where'],{'$or':_[_0xbde1('0x32')](_0x29312c,function(_0x35d9ff){if(_0x35d9ff[_0xbde1('0x2f')]!==_0xbde1('0x40')){var _0x5779dc={};_0x5779dc[_0x35d9ff[_0xbde1('0x2a')]]={'$like':'%'+_0x2b613e['query'][_0xbde1('0x3e')]+'%'};return _0x5779dc;}})});}_0x5befab=_[_0xbde1('0x3f')]({},_0x5befab,_0x2b613e['options']);var _0x478ba8={'where':_0x5befab[_0xbde1('0x3c')]};return db[_0xbde1('0x2d')][_0xbde1('0x20')](_0x478ba8)[_0xbde1('0x27')](function(_0x45042e){_0x16fc59['count']=_0x45042e;if(_0x2b613e[_0xbde1('0x34')][_0xbde1('0x41')]){_0x5befab[_0xbde1('0x42')]=[{'all':!![]}];}return db[_0xbde1('0x2d')]['findAll'](_0x5befab);})['then'](function(_0x33f77b){_0x16fc59[_0xbde1('0x43')]=_0x33f77b;return _0x16fc59;})['then'](respondWithFilteredResult(_0x5617bb,_0x5befab))[_0xbde1('0x44')](handleError(_0x5617bb,null));};exports[_0xbde1('0x45')]=function(_0x5bf202,_0x44c72e){var _0x477ae1={'raw':!![],'where':{'id':_0x5bf202[_0xbde1('0x46')]['id']}},_0x544d39={};_0x544d39[_0xbde1('0x31')]=_[_0xbde1('0x33')](db[_0xbde1('0x2d')][_0xbde1('0x2e')]);_0x544d39[_0xbde1('0x34')]=_[_0xbde1('0x33')](_0x5bf202[_0xbde1('0x34')]);_0x544d39['filters']=_['intersection'](_0x544d39[_0xbde1('0x31')],_0x544d39[_0xbde1('0x34')]);_0x477ae1[_0xbde1('0x38')]=_[_0xbde1('0x36')](_0x544d39[_0xbde1('0x31')],qs[_0xbde1('0x37')](_0x5bf202['query'][_0xbde1('0x37')]));_0x477ae1[_0xbde1('0x38')]=_0x477ae1['attributes'][_0xbde1('0x47')]?_0x477ae1['attributes']:_0x544d39[_0xbde1('0x31')];if(_0x5bf202[_0xbde1('0x34')]['includeAll']){_0x477ae1[_0xbde1('0x42')]=[{'all':!![]}];}_0x477ae1=_['merge']({},_0x477ae1,_0x5bf202[_0xbde1('0x48')]);return db[_0xbde1('0x2d')]['find'](_0x477ae1)['then'](handleEntityNotFound(_0x44c72e,null))[_0xbde1('0x27')](respondWithResult(_0x44c72e,null))['catch'](handleError(_0x44c72e,null));};exports[_0xbde1('0x49')]=function(_0x13f4e1,_0xe2165b){return db['SmsQueueReport']['create'](_0x13f4e1[_0xbde1('0x4a')],{})[_0xbde1('0x27')](respondWithResult(_0xe2165b,0xc9))[_0xbde1('0x44')](handleError(_0xe2165b,null));};exports[_0xbde1('0x26')]=function(_0x1dfeea,_0x4cbf89){if(_0x1dfeea[_0xbde1('0x4a')]['id']){delete _0x1dfeea[_0xbde1('0x4a')]['id'];}return db[_0xbde1('0x2d')]['find']({'where':{'id':_0x1dfeea[_0xbde1('0x46')]['id']}})[_0xbde1('0x27')](handleEntityNotFound(_0x4cbf89,null))[_0xbde1('0x27')](saveUpdates(_0x1dfeea[_0xbde1('0x4a')],null))[_0xbde1('0x27')](respondWithResult(_0x4cbf89,null))[_0xbde1('0x44')](handleError(_0x4cbf89,null));};exports[_0xbde1('0x4b')]=function(_0xd8977a,_0x14c529){return db[_0xbde1('0x2d')][_0xbde1('0x4c')]({'where':{'id':_0xd8977a['params']['id']}})[_0xbde1('0x27')](handleEntityNotFound(_0x14c529,null))['then'](removeEntity(_0x14c529,null))[_0xbde1('0x44')](handleError(_0x14c529,null));};exports['describe']=function(_0x15dabf,_0x1f0d85){return db[_0xbde1('0x2d')][_0xbde1('0x4d')]()['then'](respondWithResult(_0x1f0d85,null))['catch'](handleError(_0x1f0d85,null));};
\ No newline at end of file
index c44682a..5200c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x5e2ac7,_0x45265d){var _0x4fb946=function(_0x388b38){while(--_0x388b38){_0x5e2ac7['push'](_0x5e2ac7['shift']());}};_0x4fb946(++_0x45265d);}(_0xe706,0xa3));var _0x6e70=function(_0xecab6a,_0x3c768a){_0xecab6a=_0xecab6a-0x0;var _0x40b98b=_0xe706[_0xecab6a];return _0x40b98b;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));module[_0x6e70('0xa')]=function(_0x1b0389,_0x4381d1){return _0x1b0389[_0x6e70('0xb')](_0x6e70('0xc'),attributes,{'tableName':_0x6e70('0xd'),'paranoid':![],'indexes':[{'name':_0x6e70('0xe'),'fields':[_0x6e70('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue','uniqueid','lodash','util'];(function(_0x1839fa,_0x2d18ba){var _0x599af0=function(_0x4b1afe){while(--_0x4b1afe){_0x1839fa['push'](_0x1839fa['shift']());}};_0x599af0(++_0x2d18ba);}(_0xe706,0xa3));var _0x6e70=function(_0x5bd60b,_0x13465a){_0x5bd60b=_0x5bd60b-0x0;var _0x2dcff0=_0xe706[_0x5bd60b];return _0x2dcff0;};'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 3183afa..8f31582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b4a=['limit','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','raw','UpdateSmsQueueReport','update','options','where','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b4a,0xc7));var _0xa5b4=function(_0x14a321,_0x4889d9){_0x14a321=_0x14a321-0x0;var _0x16dd89=_0x5b4a[_0x14a321];return _0x16dd89;};'use strict';var _=require('lodash');var util=require(_0xa5b4('0x0'));var moment=require(_0xa5b4('0x1'));var BPromise=require(_0xa5b4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa5b4('0x3'));var logger=require(_0xa5b4('0x4'))(_0xa5b4('0x5'));var config=require(_0xa5b4('0x6'));var jayson=require(_0xa5b4('0x7'));var client=jayson['client'][_0xa5b4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c2e27,_0x3473f0,_0x3793cc){return new BPromise(function(_0x37bfde,_0x537ebe){return client[_0xa5b4('0x9')](_0x3c2e27,_0x3793cc)[_0xa5b4('0xa')](function(_0x480ff5){logger[_0xa5b4('0xb')](_0xa5b4('0xc'),_0x3473f0,_0xa5b4('0xd'));logger[_0xa5b4('0xe')](_0xa5b4('0xf'),_0x3473f0,'request\x20sent',JSON[_0xa5b4('0x10')](_0x480ff5));if(_0x480ff5[_0xa5b4('0x11')]){if(_0x480ff5[_0xa5b4('0x11')][_0xa5b4('0x12')]===0x1f4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3473f0,_0x480ff5[_0xa5b4('0x11')][_0xa5b4('0x13')]);return _0x537ebe(_0x480ff5[_0xa5b4('0x11')]['message']);}logger[_0xa5b4('0x11')](_0xa5b4('0xc'),_0x3473f0,_0x480ff5[_0xa5b4('0x11')][_0xa5b4('0x13')]);return _0x37bfde(_0x480ff5[_0xa5b4('0x11')][_0xa5b4('0x13')]);}else{logger[_0xa5b4('0xb')](_0xa5b4('0xc'),_0x3473f0,_0xa5b4('0xd'));_0x37bfde(_0x480ff5[_0xa5b4('0x14')][_0xa5b4('0x13')]);}})[_0xa5b4('0x15')](function(_0x371efb){logger[_0xa5b4('0x11')](_0xa5b4('0xc'),_0x3473f0,_0x371efb);_0x537ebe(_0x371efb);});});}exports[_0xa5b4('0x16')]=function(_0x6e0b1a){var _0x31eafd=this;return new Promise(function(_0x2a639e,_0x3cf4b7){return db[_0xa5b4('0x17')][_0xa5b4('0x18')](_0x6e0b1a[_0xa5b4('0x19')],{'raw':_0x6e0b1a['options']?_0x6e0b1a['options'][_0xa5b4('0x1a')]===undefined?!![]:![]:!![]})[_0xa5b4('0xa')](function(_0x5639cc){logger[_0xa5b4('0xb')](_0xa5b4('0x16'),_0x6e0b1a);logger[_0xa5b4('0xe')]('CreateSmsQueueReport',_0x6e0b1a,JSON[_0xa5b4('0x10')](_0x5639cc));_0x2a639e(_0x5639cc);})[_0xa5b4('0x15')](function(_0x13c8d5){logger[_0xa5b4('0x11')](_0xa5b4('0x16'),_0x13c8d5['message'],_0x6e0b1a);_0x3cf4b7(_0x31eafd[_0xa5b4('0x11')](0x1f4,_0x13c8d5[_0xa5b4('0x13')]));});});};exports[_0xa5b4('0x1b')]=function(_0x414b9f){var _0x19793b=this;return new Promise(function(_0x5b1d6e,_0x49644b){return db[_0xa5b4('0x17')][_0xa5b4('0x1c')](_0x414b9f[_0xa5b4('0x19')],{'raw':_0x414b9f['options']?_0x414b9f['options'][_0xa5b4('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x414b9f['options']?_0x414b9f[_0xa5b4('0x1d')][_0xa5b4('0x1e')]||null:null,'attributes':_0x414b9f[_0xa5b4('0x1d')]?_0x414b9f[_0xa5b4('0x1d')][_0xa5b4('0x1f')]||null:null,'limit':_0x414b9f[_0xa5b4('0x1d')]?_0x414b9f[_0xa5b4('0x1d')][_0xa5b4('0x20')]||null:null})[_0xa5b4('0xa')](function(_0x411388){logger['info'](_0xa5b4('0x1b'),_0x414b9f);logger[_0xa5b4('0xe')](_0xa5b4('0x1b'),_0x414b9f,JSON[_0xa5b4('0x10')](_0x411388));_0x5b1d6e(_0x411388);})['catch'](function(_0x4ccb08){logger[_0xa5b4('0x11')](_0xa5b4('0x1b'),_0x4ccb08[_0xa5b4('0x13')],_0x414b9f);_0x49644b(_0x19793b[_0xa5b4('0x11')](0x1f4,_0x4ccb08[_0xa5b4('0x13')]));});});};
\ No newline at end of file
+var _0x8ec3=['SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','catch','CreateSmsQueueReport','body','options','UpdateSmsQueueReport','update','raw','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','debug'];(function(_0x8ba988,_0x25d3bf){var _0x441ac7=function(_0x277a08){while(--_0x277a08){_0x8ba988['push'](_0x8ba988['shift']());}};_0x441ac7(++_0x25d3bf);}(_0x8ec3,0x111));var _0x38ec=function(_0x119800,_0x224fc9){_0x119800=_0x119800-0x0;var _0x12720=_0x8ec3[_0x119800];return _0x12720;};'use strict';var _=require('lodash');var util=require(_0x38ec('0x0'));var moment=require(_0x38ec('0x1'));var BPromise=require(_0x38ec('0x2'));var rs=require(_0x38ec('0x3'));var fs=require('fs');var Redis=require(_0x38ec('0x4'));var db=require(_0x38ec('0x5'))['db'];var utils=require(_0x38ec('0x6'));var logger=require('../../config/logger')(_0x38ec('0x7'));var config=require(_0x38ec('0x8'));var jayson=require(_0x38ec('0x9'));var client=jayson[_0x38ec('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b8882,_0xe46b05,_0x5bc07a){return new BPromise(function(_0x39edb5,_0x4c1a9d){return client[_0x38ec('0xb')](_0x1b8882,_0x5bc07a)[_0x38ec('0xc')](function(_0x48554c){logger[_0x38ec('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0xe46b05,'request\x20sent');logger[_0x38ec('0xe')](_0x38ec('0xf'),_0xe46b05,_0x38ec('0x10'),JSON[_0x38ec('0x11')](_0x48554c));if(_0x48554c[_0x38ec('0x12')]){if(_0x48554c['error'][_0x38ec('0x13')]===0x1f4){logger[_0x38ec('0x12')](_0x38ec('0x14'),_0xe46b05,_0x48554c[_0x38ec('0x12')][_0x38ec('0x15')]);return _0x4c1a9d(_0x48554c[_0x38ec('0x12')][_0x38ec('0x15')]);}logger[_0x38ec('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0xe46b05,_0x48554c[_0x38ec('0x12')][_0x38ec('0x15')]);return _0x39edb5(_0x48554c[_0x38ec('0x12')][_0x38ec('0x15')]);}else{logger[_0x38ec('0xd')](_0x38ec('0x14'),_0xe46b05,_0x38ec('0x10'));_0x39edb5(_0x48554c['result'][_0x38ec('0x15')]);}})[_0x38ec('0x16')](function(_0x345fad){logger[_0x38ec('0x12')](_0x38ec('0x14'),_0xe46b05,_0x345fad);_0x4c1a9d(_0x345fad);});});}exports[_0x38ec('0x17')]=function(_0x5d7007){var _0x356799=this;return new Promise(function(_0x1a384e,_0x3b6af5){return db['SmsQueueReport']['create'](_0x5d7007[_0x38ec('0x18')],{'raw':_0x5d7007[_0x38ec('0x19')]?_0x5d7007[_0x38ec('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1a9f6e){logger[_0x38ec('0xd')]('CreateSmsQueueReport',_0x5d7007);logger[_0x38ec('0xe')](_0x38ec('0x17'),_0x5d7007,JSON[_0x38ec('0x11')](_0x1a9f6e));_0x1a384e(_0x1a9f6e);})['catch'](function(_0x154a89){logger[_0x38ec('0x12')]('CreateSmsQueueReport',_0x154a89['message'],_0x5d7007);_0x3b6af5(_0x356799[_0x38ec('0x12')](0x1f4,_0x154a89[_0x38ec('0x15')]));});});};exports[_0x38ec('0x1a')]=function(_0x255e36){var _0x549b26=this;return new Promise(function(_0x473772,_0x4ee249){return db['SmsQueueReport'][_0x38ec('0x1b')](_0x255e36['body'],{'raw':_0x255e36['options']?_0x255e36[_0x38ec('0x19')][_0x38ec('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x255e36[_0x38ec('0x19')]?_0x255e36[_0x38ec('0x19')][_0x38ec('0x1d')]||null:null,'attributes':_0x255e36[_0x38ec('0x19')]?_0x255e36[_0x38ec('0x19')][_0x38ec('0x1e')]||null:null,'limit':_0x255e36['options']?_0x255e36['options'][_0x38ec('0x1f')]||null:null})[_0x38ec('0xc')](function(_0x591156){logger[_0x38ec('0xd')](_0x38ec('0x1a'),_0x255e36);logger[_0x38ec('0xe')]('UpdateSmsQueueReport',_0x255e36,JSON['stringify'](_0x591156));_0x473772(_0x591156);})[_0x38ec('0x16')](function(_0x104801){logger[_0x38ec('0x12')](_0x38ec('0x1a'),_0x104801[_0x38ec('0x15')],_0x255e36);_0x4ee249(_0x549b26['error'](0x1f4,_0x104801[_0x38ec('0x15')]));});});};
\ No newline at end of file
index 4b09094..8f15027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe015=['../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','describe','get','/:id','show','put','update','multer','util','path','Router','../../components/auth/service'];(function(_0x38dccf,_0x122740){var _0x4cd866=function(_0x519f86){while(--_0x519f86){_0x38dccf['push'](_0x38dccf['shift']());}};_0x4cd866(++_0x122740);}(_0xe015,0x13b));var _0x5e01=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xe015[_0x2be8c2];return _0x97f531;};'use strict';var multer=require(_0x5e01('0x0'));var util=require(_0x5e01('0x1'));var path=require(_0x5e01('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5e01('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5e01('0x4'));var interaction=require(_0x5e01('0x5'));var config=require(_0x5e01('0x6'));var controller=require(_0x5e01('0x7'));router['get']('/',auth[_0x5e01('0x8')](),controller[_0x5e01('0x9')]);router['get']('/describe',auth[_0x5e01('0x8')](),controller[_0x5e01('0xa')]);router[_0x5e01('0xb')](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller[_0x5e01('0xd')]);router['post']('/',auth[_0x5e01('0x8')](),controller['create']);router[_0x5e01('0xe')]('/:id',auth[_0x5e01('0x8')](),controller[_0x5e01('0xf')]);router['delete'](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7bae=['isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get'];(function(_0xf659b9,_0x4e686f){var _0x554601=function(_0x178f05){while(--_0x178f05){_0xf659b9['push'](_0xf659b9['shift']());}};_0x554601(++_0x4e686f);}(_0x7bae,0x13b));var _0xe7ba=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x7bae[_0x33032e];return _0x13316b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7ba('0x0'));var timeout=require(_0xe7ba('0x1'));var express=require('express');var router=express[_0xe7ba('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe7ba('0x3'));var interaction=require(_0xe7ba('0x4'));var config=require(_0xe7ba('0x5'));var controller=require(_0xe7ba('0x6'));router[_0xe7ba('0x7')]('/',auth[_0xe7ba('0x8')](),controller[_0xe7ba('0x9')]);router[_0xe7ba('0x7')](_0xe7ba('0xa'),auth[_0xe7ba('0x8')](),controller[_0xe7ba('0xb')]);router[_0xe7ba('0x7')](_0xe7ba('0xc'),auth[_0xe7ba('0x8')](),controller['show']);router[_0xe7ba('0xd')]('/',auth[_0xe7ba('0x8')](),controller[_0xe7ba('0xe')]);router[_0xe7ba('0xf')](_0xe7ba('0xc'),auth[_0xe7ba('0x8')](),controller[_0xe7ba('0x10')]);router[_0xe7ba('0x11')](_0xe7ba('0xc'),auth['isAuthenticated'](),controller[_0xe7ba('0x12')]);module['exports']=router;
\ No newline at end of file
index 99ee70e..69dfc46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x2e2e8e,_0x2d3e17){var _0xf21658=function(_0x20139f){while(--_0x20139f){_0x2e2e8e['push'](_0x2e2e8e['shift']());}};_0xf21658(++_0x2d3e17);}(_0xaa88,0x137));var _0x8aa8=function(_0x5ac0f0,_0xee4d98){_0x5ac0f0=_0x5ac0f0-0x0;var _0x4aceec=_0xaa88[_0x5ac0f0];return _0x4aceec;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x2da103,_0x2f2460){var _0x62804a=function(_0x46c55e){while(--_0x46c55e){_0x2da103['push'](_0x2da103['shift']());}};_0x62804a(++_0x2f2460);}(_0x00bb,0x1d8));var _0xb00b=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x00bb[_0x24237f];return _0x48298e;};'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 1cb42f1..4cced1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52a1=['moment','bluebird','util','sox','to-csv','ejs','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','status','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x650e11,_0x284f86){var _0x1a9b47=function(_0x6e15e3){while(--_0x6e15e3){_0x650e11['push'](_0x650e11['shift']());}};_0x1a9b47(++_0x284f86);}(_0x52a1,0x1b7));var _0x152a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x52a1[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x152a('0x0'));var rimraf=require(_0x152a('0x1'));var zipdir=require(_0x152a('0x2'));var jsonpatch=require(_0x152a('0x3'));var rp=require(_0x152a('0x4'));var moment=require(_0x152a('0x5'));var BPromise=require(_0x152a('0x6'));var Mustache=require('mustache');var util=require(_0x152a('0x7'));var path=require('path');var sox=require(_0x152a('0x8'));var csv=require(_0x152a('0x9'));var ejs=require(_0x152a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x152a('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x152a('0xc'));var Papa=require(_0x152a('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x152a('0xe'));var as=require(_0x152a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x152a('0x10'))(_0x152a('0x11'));var utils=require(_0x152a('0x12'));var config=require(_0x152a('0x13'));var licenseUtil=require(_0x152a('0x14'));var db=require(_0x152a('0x15'))['db'];function respondWithStatusCode(_0x51494a,_0x1554b9){_0x1554b9=_0x1554b9||0xcc;return function(_0x9d5d1a){if(_0x9d5d1a){return _0x51494a[_0x152a('0x16')](_0x1554b9);}return _0x51494a['status'](_0x1554b9)[_0x152a('0x17')]();};}function respondWithResult(_0x2f8817,_0x56bae6){_0x56bae6=_0x56bae6||0xc8;return function(_0x40a8d0){if(_0x40a8d0){return _0x2f8817['status'](_0x56bae6)[_0x152a('0x18')](_0x40a8d0);}};}function respondWithFilteredResult(_0x404bb8,_0x1c4b71){return function(_0x40e403){if(_0x40e403){var _0x1e411c=typeof _0x1c4b71[_0x152a('0x19')]===_0x152a('0x1a')&&typeof _0x1c4b71['limit']===_0x152a('0x1a');var _0x3f3dd4=_0x40e403['count'];var _0x32ad45=_0x1e411c?0x0:_0x1c4b71[_0x152a('0x19')];var _0x2f2539=_0x1e411c?_0x40e403[_0x152a('0x1b')]:_0x1c4b71[_0x152a('0x19')]+_0x1c4b71[_0x152a('0x1c')];var _0x30bf08;if(_0x2f2539>=_0x3f3dd4){_0x2f2539=_0x3f3dd4;_0x30bf08=0xc8;}else{_0x30bf08=0xce;}_0x404bb8['status'](_0x30bf08);return _0x404bb8['set'](_0x152a('0x1d'),_0x32ad45+'-'+_0x2f2539+'/'+_0x3f3dd4)['json'](_0x40e403);}return null;};}function patchUpdates(_0x1d1d58){return function(_0x2b94d4){try{jsonpatch[_0x152a('0x1e')](_0x2b94d4,_0x1d1d58,!![]);}catch(_0x5225b7){return BPromise[_0x152a('0x1f')](_0x5225b7);}return _0x2b94d4[_0x152a('0x20')]();};}function saveUpdates(_0x5bdbf5,_0x3897f9){return function(_0x53e96e){if(_0x53e96e){return _0x53e96e[_0x152a('0x21')](_0x5bdbf5)[_0x152a('0x22')](function(_0x53b648){return _0x53b648;});}return null;};}function removeEntity(_0x2b99c2,_0x5e7df4){return function(_0x3c57e3){if(_0x3c57e3){return _0x3c57e3[_0x152a('0x23')]()[_0x152a('0x22')](function(){_0x2b99c2[_0x152a('0x24')](0xcc)[_0x152a('0x17')]();});}};}function handleEntityNotFound(_0x1d3330,_0x1d0cf8){return function(_0x3849b4){if(!_0x3849b4){_0x1d3330[_0x152a('0x16')](0x194);}return _0x3849b4;};}function handleError(_0x109e78,_0x3ae873){_0x3ae873=_0x3ae873||0x1f4;return function(_0xa9acfc){logger[_0x152a('0x25')](_0xa9acfc[_0x152a('0x26')]);if(_0xa9acfc[_0x152a('0x27')]){delete _0xa9acfc[_0x152a('0x27')];}_0x109e78[_0x152a('0x24')](_0x3ae873)[_0x152a('0x28')](_0xa9acfc);};}exports[_0x152a('0x29')]=function(_0x3d561f,_0x3dff8d){var _0x47a162={},_0x4c8449={},_0x72727a={'count':0x0,'rows':[]};var _0x20a05b=_[_0x152a('0x2a')](db[_0x152a('0x2b')][_0x152a('0x2c')],function(_0x33636e){return{'name':_0x33636e[_0x152a('0x2d')],'type':_0x33636e[_0x152a('0x2e')]['key']};});_0x4c8449[_0x152a('0x2f')]=_[_0x152a('0x2a')](_0x20a05b,_0x152a('0x27'));_0x4c8449['query']=_['keys'](_0x3d561f[_0x152a('0x30')]);_0x4c8449[_0x152a('0x31')]=_[_0x152a('0x32')](_0x4c8449[_0x152a('0x2f')],_0x4c8449['query']);_0x47a162[_0x152a('0x33')]=_[_0x152a('0x32')](_0x4c8449[_0x152a('0x2f')],qs[_0x152a('0x34')](_0x3d561f[_0x152a('0x30')][_0x152a('0x34')]));_0x47a162['attributes']=_0x47a162[_0x152a('0x33')][_0x152a('0x35')]?_0x47a162[_0x152a('0x33')]:_0x4c8449['model'];if(!_0x3d561f[_0x152a('0x30')][_0x152a('0x36')](_0x152a('0x37'))){_0x47a162[_0x152a('0x1c')]=qs['limit'](_0x3d561f['query'][_0x152a('0x1c')]);_0x47a162[_0x152a('0x19')]=qs[_0x152a('0x19')](_0x3d561f[_0x152a('0x30')]['offset']);}_0x47a162['order']=qs[_0x152a('0x38')](_0x3d561f[_0x152a('0x30')][_0x152a('0x38')]);_0x47a162[_0x152a('0x39')]=qs[_0x152a('0x31')](_[_0x152a('0x3a')](_0x3d561f[_0x152a('0x30')],_0x4c8449[_0x152a('0x31')]),_0x20a05b);if(_0x3d561f[_0x152a('0x30')][_0x152a('0x3b')]){_0x47a162[_0x152a('0x39')]=_['merge'](_0x47a162[_0x152a('0x39')],{'$or':_[_0x152a('0x2a')](_0x20a05b,function(_0x130f6a){if(_0x130f6a[_0x152a('0x2e')]!==_0x152a('0x3c')){var _0x398efb={};_0x398efb[_0x130f6a[_0x152a('0x27')]]={'$like':'%'+_0x3d561f['query'][_0x152a('0x3b')]+'%'};return _0x398efb;}})});}_0x47a162=_[_0x152a('0x3d')]({},_0x47a162,_0x3d561f[_0x152a('0x3e')]);var _0x5950fd={'where':_0x47a162[_0x152a('0x39')]};return db[_0x152a('0x2b')]['count'](_0x5950fd)['then'](function(_0x402b46){_0x72727a[_0x152a('0x1b')]=_0x402b46;if(_0x3d561f[_0x152a('0x30')][_0x152a('0x3f')]){_0x47a162['include']=[{'all':!![]}];}return db[_0x152a('0x2b')][_0x152a('0x40')](_0x47a162);})['then'](function(_0x36d05e){_0x72727a[_0x152a('0x41')]=_0x36d05e;return _0x72727a;})['then'](respondWithFilteredResult(_0x3dff8d,_0x47a162))[_0x152a('0x42')](handleError(_0x3dff8d,null));};exports['show']=function(_0x548bde,_0x85e188){var _0x28eb98={'raw':!![],'where':{'id':_0x548bde[_0x152a('0x43')]['id']}},_0x146fc1={};_0x146fc1[_0x152a('0x2f')]=_['keys'](db[_0x152a('0x2b')][_0x152a('0x2c')]);_0x146fc1[_0x152a('0x30')]=_[_0x152a('0x44')](_0x548bde[_0x152a('0x30')]);_0x146fc1[_0x152a('0x31')]=_[_0x152a('0x32')](_0x146fc1['model'],_0x146fc1[_0x152a('0x30')]);_0x28eb98[_0x152a('0x33')]=_[_0x152a('0x32')](_0x146fc1[_0x152a('0x2f')],qs[_0x152a('0x34')](_0x548bde[_0x152a('0x30')][_0x152a('0x34')]));_0x28eb98['attributes']=_0x28eb98[_0x152a('0x33')][_0x152a('0x35')]?_0x28eb98[_0x152a('0x33')]:_0x146fc1[_0x152a('0x2f')];if(_0x548bde[_0x152a('0x30')][_0x152a('0x3f')]){_0x28eb98[_0x152a('0x45')]=[{'all':!![]}];}_0x28eb98=_[_0x152a('0x3d')]({},_0x28eb98,_0x548bde[_0x152a('0x3e')]);return db['SmsTransferReport'][_0x152a('0x46')](_0x28eb98)[_0x152a('0x22')](handleEntityNotFound(_0x85e188,null))[_0x152a('0x22')](respondWithResult(_0x85e188,null))['catch'](handleError(_0x85e188,null));};exports[_0x152a('0x47')]=function(_0x12dc2c,_0x47582a){return db['SmsTransferReport'][_0x152a('0x47')](_0x12dc2c[_0x152a('0x48')],{})[_0x152a('0x22')](respondWithResult(_0x47582a,0xc9))['catch'](handleError(_0x47582a,null));};exports[_0x152a('0x21')]=function(_0x468823,_0x4e598b){if(_0x468823['body']['id']){delete _0x468823[_0x152a('0x48')]['id'];}return db[_0x152a('0x2b')][_0x152a('0x46')]({'where':{'id':_0x468823[_0x152a('0x43')]['id']}})[_0x152a('0x22')](handleEntityNotFound(_0x4e598b,null))[_0x152a('0x22')](saveUpdates(_0x468823[_0x152a('0x48')],null))[_0x152a('0x22')](respondWithResult(_0x4e598b,null))['catch'](handleError(_0x4e598b,null));};exports[_0x152a('0x23')]=function(_0x9927d9,_0x3cbe3c){return db[_0x152a('0x2b')][_0x152a('0x46')]({'where':{'id':_0x9927d9['params']['id']}})[_0x152a('0x22')](handleEntityNotFound(_0x3cbe3c,null))[_0x152a('0x22')](removeEntity(_0x3cbe3c,null))[_0x152a('0x42')](handleError(_0x3cbe3c,null));};exports[_0x152a('0x49')]=function(_0x12fee5,_0x326a38){return db[_0x152a('0x2b')]['describe']()[_0x152a('0x22')](respondWithResult(_0x326a38,null))[_0x152a('0x42')](handleError(_0x326a38,null));};
\ No newline at end of file
+var _0xa9b9=['options','includeAll','include','findAll','catch','show','params','rawAttributes','create','body','find','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','map','SmsTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x52585b,_0x33f30){var _0x2b2adb=function(_0x2b0a37){while(--_0x2b0a37){_0x52585b['push'](_0x52585b['shift']());}};_0x2b2adb(++_0x33f30);}(_0xa9b9,0xf6));var _0x9a9b=function(_0x223a00,_0x1f1e9f){_0x223a00=_0x223a00-0x0;var _0x152f91=_0xa9b9[_0x223a00];return _0x152f91;};'use strict';var emlformat=require(_0x9a9b('0x0'));var rimraf=require(_0x9a9b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9a9b('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9a9b('0x3'));var Mustache=require(_0x9a9b('0x4'));var util=require(_0x9a9b('0x5'));var path=require(_0x9a9b('0x6'));var sox=require(_0x9a9b('0x7'));var csv=require(_0x9a9b('0x8'));var ejs=require(_0x9a9b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9a9b('0xa'));var squel=require(_0x9a9b('0xb'));var crypto=require(_0x9a9b('0xc'));var jsforce=require(_0x9a9b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9a9b('0x8'));var querystring=require(_0x9a9b('0xe'));var Papa=require('papaparse');var Redis=require(_0x9a9b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9a9b('0x10'));var as=require(_0x9a9b('0x11'));var hardwareService=require(_0x9a9b('0x12'));var logger=require(_0x9a9b('0x13'))(_0x9a9b('0x14'));var utils=require(_0x9a9b('0x15'));var config=require(_0x9a9b('0x16'));var licenseUtil=require(_0x9a9b('0x17'));var db=require(_0x9a9b('0x18'))['db'];function respondWithStatusCode(_0x435216,_0x27cb89){_0x27cb89=_0x27cb89||0xcc;return function(_0x3e14c2){if(_0x3e14c2){return _0x435216['sendStatus'](_0x27cb89);}return _0x435216[_0x9a9b('0x19')](_0x27cb89)['end']();};}function respondWithResult(_0x390858,_0x148150){_0x148150=_0x148150||0xc8;return function(_0x5e13fd){if(_0x5e13fd){return _0x390858[_0x9a9b('0x19')](_0x148150)[_0x9a9b('0x1a')](_0x5e13fd);}};}function respondWithFilteredResult(_0x465974,_0x18450a){return function(_0x276219){if(_0x276219){var _0x56206f=typeof _0x18450a[_0x9a9b('0x1b')]==='undefined'&&typeof _0x18450a[_0x9a9b('0x1c')]===_0x9a9b('0x1d');var _0x5c9c25=_0x276219[_0x9a9b('0x1e')];var _0x1ed32a=_0x56206f?0x0:_0x18450a[_0x9a9b('0x1b')];var _0x3055cd=_0x56206f?_0x276219['count']:_0x18450a[_0x9a9b('0x1b')]+_0x18450a[_0x9a9b('0x1c')];var _0x1b7b49;if(_0x3055cd>=_0x5c9c25){_0x3055cd=_0x5c9c25;_0x1b7b49=0xc8;}else{_0x1b7b49=0xce;}_0x465974['status'](_0x1b7b49);return _0x465974[_0x9a9b('0x1f')](_0x9a9b('0x20'),_0x1ed32a+'-'+_0x3055cd+'/'+_0x5c9c25)[_0x9a9b('0x1a')](_0x276219);}return null;};}function patchUpdates(_0x31eba1){return function(_0x4aee95){try{jsonpatch[_0x9a9b('0x21')](_0x4aee95,_0x31eba1,!![]);}catch(_0x534a62){return BPromise[_0x9a9b('0x22')](_0x534a62);}return _0x4aee95[_0x9a9b('0x23')]();};}function saveUpdates(_0x38289c,_0x133edb){return function(_0x1387eb){if(_0x1387eb){return _0x1387eb[_0x9a9b('0x24')](_0x38289c)[_0x9a9b('0x25')](function(_0xa17745){return _0xa17745;});}return null;};}function removeEntity(_0x16dc3e,_0x36fb8d){return function(_0xc0498c){if(_0xc0498c){return _0xc0498c[_0x9a9b('0x26')]()[_0x9a9b('0x25')](function(){_0x16dc3e[_0x9a9b('0x19')](0xcc)[_0x9a9b('0x27')]();});}};}function handleEntityNotFound(_0x19b6c3,_0x2cac9c){return function(_0x4fdb88){if(!_0x4fdb88){_0x19b6c3[_0x9a9b('0x28')](0x194);}return _0x4fdb88;};}function handleError(_0x5c6da7,_0x13e208){_0x13e208=_0x13e208||0x1f4;return function(_0x2ab330){logger['error'](_0x2ab330[_0x9a9b('0x29')]);if(_0x2ab330[_0x9a9b('0x2a')]){delete _0x2ab330['name'];}_0x5c6da7[_0x9a9b('0x19')](_0x13e208)[_0x9a9b('0x2b')](_0x2ab330);};}exports[_0x9a9b('0x2c')]=function(_0x872e0a,_0x12226a){var _0x4403a4={},_0x3ead73={},_0x20454e={'count':0x0,'rows':[]};var _0x583a55=_[_0x9a9b('0x2d')](db[_0x9a9b('0x2e')]['rawAttributes'],function(_0x109305){return{'name':_0x109305[_0x9a9b('0x2f')],'type':_0x109305[_0x9a9b('0x30')][_0x9a9b('0x31')]};});_0x3ead73[_0x9a9b('0x32')]=_[_0x9a9b('0x2d')](_0x583a55,_0x9a9b('0x2a'));_0x3ead73[_0x9a9b('0x33')]=_[_0x9a9b('0x34')](_0x872e0a[_0x9a9b('0x33')]);_0x3ead73[_0x9a9b('0x35')]=_[_0x9a9b('0x36')](_0x3ead73[_0x9a9b('0x32')],_0x3ead73[_0x9a9b('0x33')]);_0x4403a4[_0x9a9b('0x37')]=_[_0x9a9b('0x36')](_0x3ead73['model'],qs[_0x9a9b('0x38')](_0x872e0a['query'][_0x9a9b('0x38')]));_0x4403a4[_0x9a9b('0x37')]=_0x4403a4[_0x9a9b('0x37')][_0x9a9b('0x39')]?_0x4403a4['attributes']:_0x3ead73['model'];if(!_0x872e0a[_0x9a9b('0x33')]['hasOwnProperty'](_0x9a9b('0x3a'))){_0x4403a4['limit']=qs[_0x9a9b('0x1c')](_0x872e0a[_0x9a9b('0x33')][_0x9a9b('0x1c')]);_0x4403a4[_0x9a9b('0x1b')]=qs[_0x9a9b('0x1b')](_0x872e0a[_0x9a9b('0x33')][_0x9a9b('0x1b')]);}_0x4403a4[_0x9a9b('0x3b')]=qs[_0x9a9b('0x3c')](_0x872e0a['query'][_0x9a9b('0x3c')]);_0x4403a4[_0x9a9b('0x3d')]=qs[_0x9a9b('0x35')](_[_0x9a9b('0x3e')](_0x872e0a[_0x9a9b('0x33')],_0x3ead73['filters']),_0x583a55);if(_0x872e0a['query'][_0x9a9b('0x3f')]){_0x4403a4[_0x9a9b('0x3d')]=_[_0x9a9b('0x40')](_0x4403a4[_0x9a9b('0x3d')],{'$or':_[_0x9a9b('0x2d')](_0x583a55,function(_0x36634b){if(_0x36634b[_0x9a9b('0x30')]!==_0x9a9b('0x41')){var _0x523c2c={};_0x523c2c[_0x36634b[_0x9a9b('0x2a')]]={'$like':'%'+_0x872e0a[_0x9a9b('0x33')][_0x9a9b('0x3f')]+'%'};return _0x523c2c;}})});}_0x4403a4=_['merge']({},_0x4403a4,_0x872e0a[_0x9a9b('0x42')]);var _0x503fb6={'where':_0x4403a4[_0x9a9b('0x3d')]};return db[_0x9a9b('0x2e')][_0x9a9b('0x1e')](_0x503fb6)[_0x9a9b('0x25')](function(_0x3aa900){_0x20454e[_0x9a9b('0x1e')]=_0x3aa900;if(_0x872e0a[_0x9a9b('0x33')][_0x9a9b('0x43')]){_0x4403a4[_0x9a9b('0x44')]=[{'all':!![]}];}return db[_0x9a9b('0x2e')][_0x9a9b('0x45')](_0x4403a4);})['then'](function(_0x4d9531){_0x20454e['rows']=_0x4d9531;return _0x20454e;})[_0x9a9b('0x25')](respondWithFilteredResult(_0x12226a,_0x4403a4))[_0x9a9b('0x46')](handleError(_0x12226a,null));};exports[_0x9a9b('0x47')]=function(_0x2e96d9,_0x4d8fee){var _0x3e6722={'raw':!![],'where':{'id':_0x2e96d9[_0x9a9b('0x48')]['id']}},_0x34373a={};_0x34373a[_0x9a9b('0x32')]=_['keys'](db[_0x9a9b('0x2e')][_0x9a9b('0x49')]);_0x34373a[_0x9a9b('0x33')]=_['keys'](_0x2e96d9[_0x9a9b('0x33')]);_0x34373a[_0x9a9b('0x35')]=_['intersection'](_0x34373a['model'],_0x34373a[_0x9a9b('0x33')]);_0x3e6722[_0x9a9b('0x37')]=_[_0x9a9b('0x36')](_0x34373a[_0x9a9b('0x32')],qs[_0x9a9b('0x38')](_0x2e96d9[_0x9a9b('0x33')][_0x9a9b('0x38')]));_0x3e6722[_0x9a9b('0x37')]=_0x3e6722['attributes']['length']?_0x3e6722[_0x9a9b('0x37')]:_0x34373a['model'];if(_0x2e96d9[_0x9a9b('0x33')][_0x9a9b('0x43')]){_0x3e6722[_0x9a9b('0x44')]=[{'all':!![]}];}_0x3e6722=_[_0x9a9b('0x40')]({},_0x3e6722,_0x2e96d9[_0x9a9b('0x42')]);return db[_0x9a9b('0x2e')]['find'](_0x3e6722)[_0x9a9b('0x25')](handleEntityNotFound(_0x4d8fee,null))[_0x9a9b('0x25')](respondWithResult(_0x4d8fee,null))[_0x9a9b('0x46')](handleError(_0x4d8fee,null));};exports[_0x9a9b('0x4a')]=function(_0x43c316,_0x221457){return db['SmsTransferReport']['create'](_0x43c316[_0x9a9b('0x4b')],{})[_0x9a9b('0x25')](respondWithResult(_0x221457,0xc9))[_0x9a9b('0x46')](handleError(_0x221457,null));};exports[_0x9a9b('0x24')]=function(_0x2f88f8,_0x2be28a){if(_0x2f88f8[_0x9a9b('0x4b')]['id']){delete _0x2f88f8[_0x9a9b('0x4b')]['id'];}return db[_0x9a9b('0x2e')][_0x9a9b('0x4c')]({'where':{'id':_0x2f88f8[_0x9a9b('0x48')]['id']}})[_0x9a9b('0x25')](handleEntityNotFound(_0x2be28a,null))['then'](saveUpdates(_0x2f88f8[_0x9a9b('0x4b')],null))[_0x9a9b('0x25')](respondWithResult(_0x2be28a,null))[_0x9a9b('0x46')](handleError(_0x2be28a,null));};exports[_0x9a9b('0x26')]=function(_0x24ec95,_0x463061){return db[_0x9a9b('0x2e')]['find']({'where':{'id':_0x24ec95['params']['id']}})[_0x9a9b('0x25')](handleEntityNotFound(_0x463061,null))[_0x9a9b('0x25')](removeEntity(_0x463061,null))[_0x9a9b('0x46')](handleError(_0x463061,null));};exports[_0x9a9b('0x4d')]=function(_0x3cc25d,_0x30fd4c){return db[_0x9a9b('0x2e')][_0x9a9b('0x4d')]()[_0x9a9b('0x25')](respondWithResult(_0x30fd4c,null))[_0x9a9b('0x46')](handleError(_0x30fd4c,null));};
\ No newline at end of file
index 1a2c3d4..27d85fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f5=['path','rimraf','./smsTransferReport.attributes','exports','report_sms_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x3beb1e,_0x20c29b){var _0x68764f=function(_0x27d345){while(--_0x27d345){_0x3beb1e['push'](_0x3beb1e['shift']());}};_0x68764f(++_0x20c29b);}(_0x68f5,0x11a));var _0x568f=function(_0x11a172,_0x1165ca){_0x11a172=_0x11a172-0x0;var _0x3d8d96=_0x68f5[_0x11a172];return _0x3d8d96;};'use strict';var _=require(_0x568f('0x0'));var util=require(_0x568f('0x1'));var logger=require(_0x568f('0x2'))('api');var moment=require(_0x568f('0x3'));var BPromise=require(_0x568f('0x4'));var rp=require(_0x568f('0x5'));var fs=require('fs');var path=require(_0x568f('0x6'));var rimraf=require(_0x568f('0x7'));var config=require('../../config/environment');var attributes=require(_0x568f('0x8'));module[_0x568f('0x9')]=function(_0x31444b,_0x3181fd){return _0x31444b['define']('SmsTransferReport',attributes,{'tableName':_0x568f('0xa'),'paranoid':![],'indexes':[{'name':_0x568f('0xb'),'fields':[_0x568f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc737=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SmsTransferReport','lodash'];(function(_0x264119,_0x257b3d){var _0x35fb4c=function(_0x2588b3){while(--_0x2588b3){_0x264119['push'](_0x264119['shift']());}};_0x35fb4c(++_0x257b3d);}(_0xc737,0x8e));var _0x7c73=function(_0x3f51cd,_0x190943){_0x3f51cd=_0x3f51cd-0x0;var _0x5152f6=_0xc737[_0x3f51cd];return _0x5152f6;};'use strict';var _=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var logger=require('../../config/logger')(_0x7c73('0x2'));var moment=require(_0x7c73('0x3'));var BPromise=require(_0x7c73('0x4'));var rp=require(_0x7c73('0x5'));var fs=require('fs');var path=require(_0x7c73('0x6'));var rimraf=require(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var attributes=require('./smsTransferReport.attributes');module['exports']=function(_0x1eb29f,_0x2f09f7){return _0x1eb29f[_0x7c73('0x9')](_0x7c73('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1f19b5f..bf4b30a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x158f=['request','then','info','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','code','SmsTransferReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http'];(function(_0x33f750,_0x3a0638){var _0xd2186a=function(_0x20b011){while(--_0x20b011){_0x33f750['push'](_0x33f750['shift']());}};_0xd2186a(++_0x3a0638);}(_0x158f,0x137));var _0xf158=function(_0x386f48,_0x5a23e9){_0x386f48=_0x386f48-0x0;var _0x2a5fad=_0x158f[_0x386f48];return _0x2a5fad;};'use strict';var _=require('lodash');var util=require(_0xf158('0x0'));var moment=require(_0xf158('0x1'));var BPromise=require(_0xf158('0x2'));var rs=require(_0xf158('0x3'));var fs=require('fs');var Redis=require(_0xf158('0x4'));var db=require(_0xf158('0x5'))['db'];var utils=require(_0xf158('0x6'));var logger=require('../../config/logger')(_0xf158('0x7'));var config=require('../../config/environment');var jayson=require(_0xf158('0x8'));var client=jayson[_0xf158('0x9')][_0xf158('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23ff44,_0x5acfb7,_0x2a24a7){return new BPromise(function(_0x395f69,_0x2873ce){return client[_0xf158('0xb')](_0x23ff44,_0x2a24a7)[_0xf158('0xc')](function(_0x2a17df){logger[_0xf158('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x5acfb7,_0xf158('0xe'));logger[_0xf158('0xf')](_0xf158('0x10'),_0x5acfb7,_0xf158('0xe'),JSON['stringify'](_0x2a17df));if(_0x2a17df[_0xf158('0x11')]){if(_0x2a17df[_0xf158('0x11')][_0xf158('0x12')]===0x1f4){logger[_0xf158('0x11')](_0xf158('0x13'),_0x5acfb7,_0x2a17df[_0xf158('0x11')][_0xf158('0x14')]);return _0x2873ce(_0x2a17df['error'][_0xf158('0x14')]);}logger['error'](_0xf158('0x13'),_0x5acfb7,_0x2a17df[_0xf158('0x11')][_0xf158('0x14')]);return _0x395f69(_0x2a17df[_0xf158('0x11')][_0xf158('0x14')]);}else{logger['info'](_0xf158('0x13'),_0x5acfb7,_0xf158('0xe'));_0x395f69(_0x2a17df[_0xf158('0x15')]['message']);}})[_0xf158('0x16')](function(_0x3bfdf1){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x5acfb7,_0x3bfdf1);_0x2873ce(_0x3bfdf1);});});}
\ No newline at end of file
+var _0x89fe=['stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0x89fe,0x83));var _0xe89f=function(_0x469df1,_0x17f245){_0x469df1=_0x469df1-0x0;var _0x574b74=_0x89fe[_0x469df1];return _0x574b74;};'use strict';var _=require(_0xe89f('0x0'));var util=require(_0xe89f('0x1'));var moment=require(_0xe89f('0x2'));var BPromise=require(_0xe89f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe89f('0x4'));var db=require(_0xe89f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe89f('0x6'))(_0xe89f('0x7'));var config=require(_0xe89f('0x8'));var jayson=require(_0xe89f('0x9'));var client=jayson[_0xe89f('0xa')][_0xe89f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24358f,_0x5427d2,_0x4639f0){return new BPromise(function(_0x3e9998,_0x7043f3){return client[_0xe89f('0xc')](_0x24358f,_0x4639f0)[_0xe89f('0xd')](function(_0x4fa2fa){logger[_0xe89f('0xe')](_0xe89f('0xf'),_0x5427d2,_0xe89f('0x10'));logger[_0xe89f('0x11')](_0xe89f('0x12'),_0x5427d2,_0xe89f('0x10'),JSON[_0xe89f('0x13')](_0x4fa2fa));if(_0x4fa2fa[_0xe89f('0x14')]){if(_0x4fa2fa[_0xe89f('0x14')][_0xe89f('0x15')]===0x1f4){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x5427d2,_0x4fa2fa['error']['message']);return _0x7043f3(_0x4fa2fa['error'][_0xe89f('0x16')]);}logger[_0xe89f('0x14')]('SmsTransferReport,\x20%s,\x20%s',_0x5427d2,_0x4fa2fa['error'][_0xe89f('0x16')]);return _0x3e9998(_0x4fa2fa[_0xe89f('0x14')][_0xe89f('0x16')]);}else{logger[_0xe89f('0xe')](_0xe89f('0xf'),_0x5427d2,_0xe89f('0x10'));_0x3e9998(_0x4fa2fa[_0xe89f('0x17')][_0xe89f('0x16')]);}})[_0xe89f('0x18')](function(_0x16bfe0){logger['error'](_0xe89f('0xf'),_0x5427d2,_0x16bfe0);_0x7043f3(_0x16bfe0);});});}
\ No newline at end of file
index 22714d2..f0db666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf77=['originalname','replace','extname','now','create','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./sound.controller','get','isAuthenticated','/:id','show','download','diskStorage','root'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xbf77,0x1d4));var _0x7bf7=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xbf77[_0x1694f5];return _0x5b4321;};'use strict';var multer=require(_0x7bf7('0x0'));var util=require(_0x7bf7('0x1'));var path=require(_0x7bf7('0x2'));var timeout=require('connect-timeout');var express=require(_0x7bf7('0x3'));var router=express[_0x7bf7('0x4')]();var fs_extra=require(_0x7bf7('0x5'));var auth=require(_0x7bf7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7bf7('0x7'));router[_0x7bf7('0x8')]('/',auth[_0x7bf7('0x9')](),controller['index']);router[_0x7bf7('0x8')](_0x7bf7('0xa'),auth[_0x7bf7('0x9')](),controller[_0x7bf7('0xb')]);router[_0x7bf7('0x8')]('/:id/download',auth[_0x7bf7('0x9')](),controller[_0x7bf7('0xc')]);var upload=multer({'storage':multer[_0x7bf7('0xd')]({'destination':function(_0x13bd3b,_0x1bd6d5,_0x3c4063){_0x3c4063(null,path['join'](config[_0x7bf7('0xe')],'server/files/sounds/original/'));},'filename':function(_0x3dae31,_0x20d1b4,_0x5643e3){_0x20d1b4[_0x7bf7('0xf')]=_0x20d1b4[_0x7bf7('0xf')][_0x7bf7('0x10')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5643e3(null,util['format']('%s-%s%s',path['basename'](_0x20d1b4[_0x7bf7('0xf')],path[_0x7bf7('0x11')](_0x20d1b4[_0x7bf7('0xf')])),Date[_0x7bf7('0x12')](),path[_0x7bf7('0x11')](_0x20d1b4[_0x7bf7('0xf')])));}})});router['post']('/',upload['single']('file'),controller[_0x7bf7('0x13')]);router[_0x7bf7('0x14')](_0x7bf7('0xa'),auth[_0x7bf7('0x9')](),controller['update']);router[_0x7bf7('0x15')](_0x7bf7('0xa'),auth[_0x7bf7('0x9')](),controller['delete']);module[_0x7bf7('0x16')]=router;
\ No newline at end of file
+var _0x9a6b=['util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','basename','now','extname','single','file','put','update','delete','exports','multer'];(function(_0xcbf2ba,_0x42829d){var _0x4e3371=function(_0x180e44){while(--_0x180e44){_0xcbf2ba['push'](_0xcbf2ba['shift']());}};_0x4e3371(++_0x42829d);}(_0x9a6b,0x14f));var _0xb9a6=function(_0xaa1cd2,_0x4d3de3){_0xaa1cd2=_0xaa1cd2-0x0;var _0x4bdd82=_0x9a6b[_0xaa1cd2];return _0x4bdd82;};'use strict';var multer=require(_0xb9a6('0x0'));var util=require(_0xb9a6('0x1'));var path=require(_0xb9a6('0x2'));var timeout=require(_0xb9a6('0x3'));var express=require(_0xb9a6('0x4'));var router=express['Router']();var fs_extra=require(_0xb9a6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb9a6('0x6'));var config=require(_0xb9a6('0x7'));var controller=require('./sound.controller');router[_0xb9a6('0x8')]('/',auth[_0xb9a6('0x9')](),controller['index']);router[_0xb9a6('0x8')](_0xb9a6('0xa'),auth[_0xb9a6('0x9')](),controller['show']);router[_0xb9a6('0x8')](_0xb9a6('0xb'),auth[_0xb9a6('0x9')](),controller[_0xb9a6('0xc')]);var upload=multer({'storage':multer[_0xb9a6('0xd')]({'destination':function(_0xe4bfdf,_0x38cf9b,_0x28a33e){_0x28a33e(null,path[_0xb9a6('0xe')](config[_0xb9a6('0xf')],_0xb9a6('0x10')));},'filename':function(_0x54e014,_0x3907df,_0x4d011e){_0x3907df[_0xb9a6('0x11')]=_0x3907df[_0xb9a6('0x11')][_0xb9a6('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4d011e(null,util['format']('%s-%s%s',path[_0xb9a6('0x13')](_0x3907df['originalname'],path['extname'](_0x3907df[_0xb9a6('0x11')])),Date[_0xb9a6('0x14')](),path[_0xb9a6('0x15')](_0x3907df[_0xb9a6('0x11')])));}})});router['post']('/',upload[_0xb9a6('0x16')](_0xb9a6('0x17')),controller['create']);router[_0xb9a6('0x18')](_0xb9a6('0xa'),auth[_0xb9a6('0x9')](),controller[_0xb9a6('0x19')]);router[_0xb9a6('0x1a')](_0xb9a6('0xa'),auth[_0xb9a6('0x9')](),controller['delete']);module[_0xb9a6('0x1b')]=router;
\ No newline at end of file
index 08d030e..32bc8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a8=['BIGINT','INTEGER','sequelize','exports','STRING','FLOAT'];(function(_0x5a856a,_0x17fe44){var _0x5e12e9=function(_0x2cb4f7){while(--_0x2cb4f7){_0x5a856a['push'](_0x5a856a['shift']());}};_0x5e12e9(++_0x17fe44);}(_0xd5a8,0x116));var _0x8d5a=function(_0x5dea9c,_0x2b594f){_0x5dea9c=_0x5dea9c-0x0;var _0x2f0129=_0xd5a8[_0x5dea9c];return _0x2f0129;};'use strict';var Sequelize=require(_0x8d5a('0x0'));module[_0x8d5a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x8d5a('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x8d5a('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0x8d5a('0x3')]},'original_sampleCount':{'type':Sequelize[_0x8d5a('0x4')]},'original_channelCount':{'type':Sequelize[_0x8d5a('0x5')]},'original_bitRate':{'type':Sequelize[_0x8d5a('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x8d5a('0x2')]},'converted_duration':{'type':Sequelize[_0x8d5a('0x3')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x8d5a('0x5')]},'converted_bitRate':{'type':Sequelize[_0x8d5a('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x8d5a('0x5')]}};
\ No newline at end of file
+var _0x0807=['exports','STRING','FLOAT','INTEGER','BIGINT'];(function(_0x3f6043,_0x406f5e){var _0x199858=function(_0x3b46d5){while(--_0x3b46d5){_0x3f6043['push'](_0x3f6043['shift']());}};_0x199858(++_0x406f5e);}(_0x0807,0x13b));var _0x7080=function(_0x2549ca,_0xef2675){_0x2549ca=_0x2549ca-0x0;var _0x50dc32=_0x0807[_0x2549ca];return _0x50dc32;};'use strict';var Sequelize=require('sequelize');module[_0x7080('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0x7080('0x1')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x7080('0x1')]},'original_duration':{'type':Sequelize[_0x7080('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x7080('0x3')]},'original_bitRate':{'type':Sequelize[_0x7080('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x7080('0x1')]},'converted_duration':{'type':Sequelize[_0x7080('0x2')]},'converted_sampleCount':{'type':Sequelize[_0x7080('0x4')]},'converted_channelCount':{'type':Sequelize[_0x7080('0x3')]},'converted_bitRate':{'type':Sequelize[_0x7080('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x7080('0x3')]}};
\ No newline at end of file
index ace4178..db3bf50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7586=['original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','chmodSync','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Sounds','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','delete','server/files/sounds/original','original_format','eml-format','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','name','send','index','map','Sound','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','filters','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','converted_format','join','root','server/files/sounds/converted','save_name','Sequelize','%s.%s','format','basename','file','originalname','extname','filename','substring','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','wav','error','unlinkSync','duration','original_sampleCount','sampleCount'];(function(_0xf2f877,_0x26ada1){var _0x421b29=function(_0x2420d0){while(--_0x2420d0){_0xf2f877['push'](_0xf2f877['shift']());}};_0x421b29(++_0x26ada1);}(_0x7586,0x111));var _0x6758=function(_0x39eff9,_0x3a57a4){_0x39eff9=_0x39eff9-0x0;var _0x356d78=_0x7586[_0x39eff9];return _0x356d78;};'use strict';var emlformat=require(_0x6758('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6758('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6758('0x2'));var moment=require(_0x6758('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6758('0x4'));var path=require(_0x6758('0x5'));var sox=require(_0x6758('0x6'));var csv=require(_0x6758('0x7'));var ejs=require(_0x6758('0x8'));var fs=require('fs');var fs_extra=require(_0x6758('0x9'));var _=require(_0x6758('0xa'));var squel=require(_0x6758('0xb'));var crypto=require(_0x6758('0xc'));var jsforce=require(_0x6758('0xd'));var deskjs=require(_0x6758('0xe'));var toCsv=require(_0x6758('0x7'));var querystring=require(_0x6758('0xf'));var Papa=require('papaparse');var Redis=require(_0x6758('0x10'));var authService=require(_0x6758('0x11'));var qs=require(_0x6758('0x12'));var as=require(_0x6758('0x13'));var hardwareService=require(_0x6758('0x14'));var logger=require(_0x6758('0x15'))(_0x6758('0x16'));var utils=require(_0x6758('0x17'));var config=require(_0x6758('0x18'));var licenseUtil=require(_0x6758('0x19'));var db=require(_0x6758('0x1a'))['db'];function respondWithStatusCode(_0x38c741,_0x53af11){_0x53af11=_0x53af11||0xcc;return function(_0xc51cc2){if(_0xc51cc2){return _0x38c741[_0x6758('0x1b')](_0x53af11);}return _0x38c741['status'](_0x53af11)[_0x6758('0x1c')]();};}function respondWithResult(_0x27c012,_0x4725ae){_0x4725ae=_0x4725ae||0xc8;return function(_0x34e9a5){if(_0x34e9a5){return _0x27c012[_0x6758('0x1d')](_0x4725ae)[_0x6758('0x1e')](_0x34e9a5);}};}function respondWithFilteredResult(_0x453c3f,_0x5e3bd0){return function(_0x31c815){if(_0x31c815){var _0x5a5f84=typeof _0x5e3bd0['offset']==='undefined'&&typeof _0x5e3bd0[_0x6758('0x1f')]===_0x6758('0x20');var _0x47eb2f=_0x31c815[_0x6758('0x21')];var _0x18d444=_0x5a5f84?0x0:_0x5e3bd0[_0x6758('0x22')];var _0x4de479=_0x5a5f84?_0x31c815[_0x6758('0x21')]:_0x5e3bd0[_0x6758('0x22')]+_0x5e3bd0[_0x6758('0x1f')];var _0x449042;if(_0x4de479>=_0x47eb2f){_0x4de479=_0x47eb2f;_0x449042=0xc8;}else{_0x449042=0xce;}_0x453c3f[_0x6758('0x1d')](_0x449042);return _0x453c3f[_0x6758('0x23')](_0x6758('0x24'),_0x18d444+'-'+_0x4de479+'/'+_0x47eb2f)['json'](_0x31c815);}return null;};}function patchUpdates(_0x3a8975){return function(_0x500816){try{jsonpatch[_0x6758('0x25')](_0x500816,_0x3a8975,!![]);}catch(_0x4e1a6c){return BPromise[_0x6758('0x26')](_0x4e1a6c);}return _0x500816[_0x6758('0x27')]();};}function saveUpdates(_0x10381b,_0x1b64ad){return function(_0x2071ed){if(_0x2071ed){return _0x2071ed[_0x6758('0x28')](_0x10381b)['then'](function(_0x816df8){return _0x816df8;});}return null;};}function removeEntity(_0x131897,_0x830486){return function(_0x581903){if(_0x581903){return _0x581903['destroy']()[_0x6758('0x29')](function(){var _0x5b5eb7=_0x581903[_0x6758('0x2a')]({'plain':!![]});var _0x2559a0='Sounds';return db[_0x6758('0x2b')][_0x6758('0x2c')]({'where':{'type':_0x2559a0,'resourceId':_0x5b5eb7['id']}})['then'](function(){return _0x581903;});})[_0x6758('0x29')](function(){_0x131897[_0x6758('0x1d')](0xcc)[_0x6758('0x1c')]();});}};}function handleEntityNotFound(_0x41ec74,_0x4d7e13){return function(_0x310258){if(!_0x310258){_0x41ec74[_0x6758('0x1b')](0x194);}return _0x310258;};}function handleError(_0x51d5fa,_0x1843b2){_0x1843b2=_0x1843b2||0x1f4;return function(_0x3e5676){logger['error'](_0x3e5676['stack']);if(_0x3e5676[_0x6758('0x2d')]){delete _0x3e5676[_0x6758('0x2d')];}_0x51d5fa[_0x6758('0x1d')](_0x1843b2)[_0x6758('0x2e')](_0x3e5676);};}exports[_0x6758('0x2f')]=function(_0x25d73c,_0x101c2c){var _0x112eef={},_0x463b5d={},_0x19e168={'count':0x0,'rows':[]};var _0x5cb595=_[_0x6758('0x30')](db[_0x6758('0x31')][_0x6758('0x32')],function(_0x253c65){return{'name':_0x253c65['fieldName'],'type':_0x253c65[_0x6758('0x33')][_0x6758('0x34')]};});_0x463b5d[_0x6758('0x35')]=_[_0x6758('0x30')](_0x5cb595,_0x6758('0x2d'));_0x463b5d[_0x6758('0x36')]=_['keys'](_0x25d73c[_0x6758('0x36')]);_0x463b5d['filters']=_[_0x6758('0x37')](_0x463b5d['model'],_0x463b5d[_0x6758('0x36')]);_0x112eef[_0x6758('0x38')]=_['intersection'](_0x463b5d[_0x6758('0x35')],qs[_0x6758('0x39')](_0x25d73c[_0x6758('0x36')][_0x6758('0x39')]));_0x112eef[_0x6758('0x38')]=_0x112eef[_0x6758('0x38')][_0x6758('0x3a')]?_0x112eef[_0x6758('0x38')]:_0x463b5d[_0x6758('0x35')];if(!_0x25d73c['query']['hasOwnProperty'](_0x6758('0x3b'))){_0x112eef['limit']=qs[_0x6758('0x1f')](_0x25d73c['query'][_0x6758('0x1f')]);_0x112eef[_0x6758('0x22')]=qs[_0x6758('0x22')](_0x25d73c[_0x6758('0x36')][_0x6758('0x22')]);}_0x112eef[_0x6758('0x3c')]=qs['sort'](_0x25d73c[_0x6758('0x36')][_0x6758('0x3d')]);_0x112eef['where']=qs[_0x6758('0x3e')](_['pick'](_0x25d73c['query'],_0x463b5d['filters']),_0x5cb595);if(_0x25d73c['query'][_0x6758('0x3f')]){_0x112eef[_0x6758('0x40')]=_[_0x6758('0x41')](_0x112eef['where'],{'$or':_[_0x6758('0x30')](_0x5cb595,function(_0x312ab0){if(_0x312ab0[_0x6758('0x33')]!=='VIRTUAL'){var _0x22e55a={};_0x22e55a[_0x312ab0[_0x6758('0x2d')]]={'$like':'%'+_0x25d73c['query'][_0x6758('0x3f')]+'%'};return _0x22e55a;}})});}_0x112eef=_[_0x6758('0x41')]({},_0x112eef,_0x25d73c[_0x6758('0x42')]);var _0x525c62={'where':_0x112eef[_0x6758('0x40')]};return db[_0x6758('0x31')][_0x6758('0x21')](_0x525c62)[_0x6758('0x29')](function(_0x273676){_0x19e168[_0x6758('0x21')]=_0x273676;if(_0x25d73c[_0x6758('0x36')][_0x6758('0x43')]){_0x112eef[_0x6758('0x44')]=[{'all':!![]}];}return db[_0x6758('0x31')][_0x6758('0x45')](_0x112eef);})[_0x6758('0x29')](function(_0x3a9c43){_0x19e168[_0x6758('0x46')]=_0x3a9c43;return _0x19e168;})[_0x6758('0x29')](respondWithFilteredResult(_0x101c2c,_0x112eef))[_0x6758('0x47')](handleError(_0x101c2c,null));};exports[_0x6758('0x48')]=function(_0x2e7d9e,_0x429346){var _0xec3aa4={'raw':!![],'where':{'id':_0x2e7d9e[_0x6758('0x49')]['id']}},_0x162b46={};_0x162b46[_0x6758('0x35')]=_[_0x6758('0x4a')](db[_0x6758('0x31')]['rawAttributes']);_0x162b46[_0x6758('0x36')]=_[_0x6758('0x4a')](_0x2e7d9e[_0x6758('0x36')]);_0x162b46[_0x6758('0x3e')]=_['intersection'](_0x162b46[_0x6758('0x35')],_0x162b46[_0x6758('0x36')]);_0xec3aa4['attributes']=_[_0x6758('0x37')](_0x162b46[_0x6758('0x35')],qs[_0x6758('0x39')](_0x2e7d9e[_0x6758('0x36')][_0x6758('0x39')]));_0xec3aa4[_0x6758('0x38')]=_0xec3aa4[_0x6758('0x38')][_0x6758('0x3a')]?_0xec3aa4[_0x6758('0x38')]:_0x162b46['model'];if(_0x2e7d9e[_0x6758('0x36')][_0x6758('0x43')]){_0xec3aa4[_0x6758('0x44')]=[{'all':!![]}];}_0xec3aa4=_['merge']({},_0xec3aa4,_0x2e7d9e[_0x6758('0x42')]);return db['Sound']['find'](_0xec3aa4)[_0x6758('0x29')](handleEntityNotFound(_0x429346,null))['then'](respondWithResult(_0x429346,null))[_0x6758('0x47')](handleError(_0x429346,null));};exports['download']=function(_0x58a1a5,_0x199116,_0x5ea05e){return db['Sound'][_0x6758('0x4b')]({'where':{'id':_0x58a1a5['params']['id']},'attributes':['name','save_name',_0x6758('0x4c')],'raw':!![]})[_0x6758('0x29')](handleEntityNotFound(_0x199116,null))[_0x6758('0x29')](function(_0xc6860){if(_0xc6860){if(!fs['existsSync'](path[_0x6758('0x4d')](config[_0x6758('0x4e')],_0x6758('0x4f'),_0xc6860[_0x6758('0x50')]+'.'+_0xc6860[_0x6758('0x4c')]))){throw new db[(_0x6758('0x51'))]['ValidationError']('Sound\x20not\x20found');}return _0x199116['download'](path[_0x6758('0x4d')](config['root'],_0x6758('0x4f'),util['format'](_0x6758('0x52'),_0xc6860[_0x6758('0x50')],_0xc6860[_0x6758('0x4c')])),util[_0x6758('0x53')](_0x6758('0x52'),_0xc6860[_0x6758('0x2d')],_0xc6860['converted_format']));}return null;})[_0x6758('0x47')](handleError(_0x199116,null));};exports['create']=function(_0x1f53fe,_0x193178,_0x532f59){var _0x426e31={'name':path[_0x6758('0x54')](_0x1f53fe[_0x6758('0x55')][_0x6758('0x56')],path[_0x6758('0x57')](_0x1f53fe[_0x6758('0x55')][_0x6758('0x56')])),'save_name':path[_0x6758('0x54')](_0x1f53fe[_0x6758('0x55')][_0x6758('0x58')],path['extname'](_0x1f53fe[_0x6758('0x55')][_0x6758('0x58')])),'original_format':path[_0x6758('0x57')](_0x1f53fe['file'][_0x6758('0x56')])[_0x6758('0x59')](0x1),'converted_format':'wav'};var _0x2c9d05=path[_0x6758('0x4d')](config['root'],'server/files/sounds/original',_0x1f53fe['file'][_0x6758('0x58')]);var _0x3138da=path[_0x6758('0x4d')](config[_0x6758('0x4e')],_0x6758('0x4f'),util['format']('%s.%s',path[_0x6758('0x54')](_0x1f53fe[_0x6758('0x55')][_0x6758('0x58')],path[_0x6758('0x57')](_0x1f53fe['file'][_0x6758('0x58')])),_0x426e31[_0x6758('0x4c')]));logger[_0x6758('0x5a')](_0x6758('0x5b'),_0x2c9d05);logger['info'](_0x6758('0x5c'),_0x3138da);try{fs['chmodSync'](_0x2c9d05,parseInt('0777',0x8));var _0x4958b9=sox['transcode'](_0x2c9d05,_0x3138da,{'sampleRate':0x1f40,'format':_0x6758('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4958b9['on'](_0x6758('0x5e'),function(_0x1c7b52){fs[_0x6758('0x5f')](_0x2c9d05);_0x193178[_0x6758('0x1d')](0x1f4)[_0x6758('0x2e')](_0x1c7b52);});_0x4958b9['on']('src',function(_0x1a0b14){_0x426e31['original_duration']=isNaN(_0x1a0b14[_0x6758('0x60')])?null:_0x1a0b14[_0x6758('0x60')]*0x3e8;_0x426e31[_0x6758('0x61')]=isNaN(_0x1a0b14[_0x6758('0x62')])?null:_0x1a0b14['sampleCount'];_0x426e31[_0x6758('0x63')]=isNaN(_0x1a0b14[_0x6758('0x64')])?null:_0x1a0b14[_0x6758('0x64')];_0x426e31['original_bitRate']=isNaN(_0x1a0b14[_0x6758('0x65')])?null:_0x1a0b14[_0x6758('0x65')];_0x426e31[_0x6758('0x66')]=isNaN(_0x1a0b14[_0x6758('0x67')])?null:_0x1a0b14[_0x6758('0x67')];});_0x4958b9['on'](_0x6758('0x68'),function(_0x3a6db7){_0x426e31[_0x6758('0x69')]=isNaN(_0x3a6db7[_0x6758('0x60')])?null:_0x3a6db7[_0x6758('0x60')]*0x3e8;_0x426e31[_0x6758('0x6a')]=isNaN(_0x3a6db7['sampleCount'])?null:_0x3a6db7[_0x6758('0x62')];_0x426e31[_0x6758('0x6b')]=isNaN(_0x3a6db7['channelCount'])?null:_0x3a6db7[_0x6758('0x64')];_0x426e31[_0x6758('0x6c')]=isNaN(_0x3a6db7[_0x6758('0x65')])?null:_0x3a6db7[_0x6758('0x65')];_0x426e31[_0x6758('0x6d')]=isNaN(_0x3a6db7[_0x6758('0x67')])?null:_0x3a6db7[_0x6758('0x67')];});_0x4958b9['on'](_0x6758('0x1c'),function(){fs[_0x6758('0x6e')](_0x3138da,parseInt('0777',0x8));return db[_0x6758('0x31')]['create'](_0x426e31)[_0x6758('0x29')](function(_0x5384eb){var _0x239562={'role':_0x1f53fe[_0x6758('0x6f')][_0x6758('0x70')],'userProfileId':_0x1f53fe[_0x6758('0x6f')]['userProfileId']};if(!_0x239562)throw new Error(_0x6758('0x71'));if(_0x239562[_0x6758('0x70')]===_0x6758('0x72')){var _0x453714=_0x5384eb[_0x6758('0x2a')]({'plain':!![]});return db['UserProfileSection'][_0x6758('0x4b')]({'where':{'name':_0x6758('0x73'),'userProfileId':_0x239562[_0x6758('0x74')]},'raw':!![]})[_0x6758('0x29')](function(_0x29341c){if(_0x29341c&&_0x29341c[_0x6758('0x75')]===0x0){return db[_0x6758('0x2b')][_0x6758('0x76')]({'name':_0x453714[_0x6758('0x2d')],'resourceId':_0x453714['id'],'type':_0x29341c[_0x6758('0x2d')],'sectionId':_0x29341c['id']},{})['then'](function(){return _0x5384eb;});}else{return _0x5384eb;}})['catch'](function(_0x128888){logger[_0x6758('0x5e')](_0x6758('0x77'),_0x128888);throw _0x128888;});}return _0x5384eb;})[_0x6758('0x29')](respondWithResult(_0x193178,null))[_0x6758('0x47')](handleError(_0x193178,null));});_0x4958b9['start']();}catch(_0x10aa25){_0x193178[_0x6758('0x1d')](0x1f4)[_0x6758('0x2e')](_0x10aa25);}};exports[_0x6758('0x28')]=function(_0x2fc24f,_0x2aa910,_0x1809ed){return db[_0x6758('0x31')]['find']({'where':{'id':_0x2fc24f[_0x6758('0x49')]['id']}})[_0x6758('0x29')](handleEntityNotFound(_0x2aa910,null))[_0x6758('0x29')](saveUpdates(_['pick'](_0x2fc24f[_0x6758('0x6f')],['name',_0x6758('0x78')]),null))['then'](respondWithResult(_0x2aa910,null))[_0x6758('0x47')](handleError(_0x2aa910,null));};exports[_0x6758('0x79')]=function(_0xb4c5d,_0x32e432,_0x67278c){return db[_0x6758('0x31')][_0x6758('0x4b')]({'where':{'id':_0xb4c5d[_0x6758('0x49')]['id']}})[_0x6758('0x29')](function(_0x5d863a){if(_0x5d863a){return _0x5d863a[_0x6758('0x2c')]();}})['then'](function(_0x2d591d){var _0x1c0aba=path[_0x6758('0x4d')](config[_0x6758('0x4e')],_0x6758('0x7a'),util[_0x6758('0x53')]('%s.%s',_0x2d591d[_0x6758('0x50')],_0x2d591d[_0x6758('0x7b')]));var _0x4f9847=path[_0x6758('0x4d')](config[_0x6758('0x4e')],_0x6758('0x4f'),util[_0x6758('0x53')](_0x6758('0x52'),_0x2d591d[_0x6758('0x50')],_0x2d591d[_0x6758('0x4c')]));fs[_0x6758('0x5f')](_0x1c0aba);fs['unlinkSync'](_0x4f9847);return _0x2d591d;})['then'](function(_0x3bd9f1){if(_0x3bd9f1){return _0x32e432['status'](0xcc)[_0x6758('0x1c')]();}})[_0x6758('0x29')](handleEntityNotFound(_0x32e432,null))[_0x6758('0x47')](handleError(_0x32e432,null));};
\ No newline at end of file
+var _0xb8d9=['api','../../config/utils','../../config/environment','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','destroy','then','get','Sounds','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','Sound','include','findAll','rows','catch','show','params','includeAll','find','download','save_name','converted_format','existsSync','Sequelize','ValidationError','Sound\x20not\x20found','join','root','format','create','file','originalname','extname','basename','filename','substring','wav','%s.%s','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','userProfileId','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','server/files/sounds/original','original_format','server/files/sounds/converted','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x314079,_0x2b98a0){var _0x423351=function(_0x501dcc){while(--_0x501dcc){_0x314079['push'](_0x314079['shift']());}};_0x423351(++_0x2b98a0);}(_0xb8d9,0xed));var _0x9b8d=function(_0x523b19,_0x3a23f8){_0x523b19=_0x523b19-0x0;var _0x29e1af=_0xb8d9[_0x523b19];return _0x29e1af;};'use strict';var emlformat=require(_0x9b8d('0x0'));var rimraf=require(_0x9b8d('0x1'));var zipdir=require(_0x9b8d('0x2'));var jsonpatch=require(_0x9b8d('0x3'));var rp=require(_0x9b8d('0x4'));var moment=require(_0x9b8d('0x5'));var BPromise=require(_0x9b8d('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9b8d('0x7'));var sox=require(_0x9b8d('0x8'));var csv=require(_0x9b8d('0x9'));var ejs=require(_0x9b8d('0xa'));var fs=require('fs');var fs_extra=require(_0x9b8d('0xb'));var _=require(_0x9b8d('0xc'));var squel=require(_0x9b8d('0xd'));var crypto=require('crypto');var jsforce=require(_0x9b8d('0xe'));var deskjs=require(_0x9b8d('0xf'));var toCsv=require(_0x9b8d('0x9'));var querystring=require('querystring');var Papa=require(_0x9b8d('0x10'));var Redis=require(_0x9b8d('0x11'));var authService=require(_0x9b8d('0x12'));var qs=require(_0x9b8d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b8d('0x14'))(_0x9b8d('0x15'));var utils=require(_0x9b8d('0x16'));var config=require(_0x9b8d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb29b8a,_0x280ed6){_0x280ed6=_0x280ed6||0xcc;return function(_0x80e82f){if(_0x80e82f){return _0xb29b8a['sendStatus'](_0x280ed6);}return _0xb29b8a[_0x9b8d('0x18')](_0x280ed6)[_0x9b8d('0x19')]();};}function respondWithResult(_0x191cf5,_0x2dc0c4){_0x2dc0c4=_0x2dc0c4||0xc8;return function(_0x2865c2){if(_0x2865c2){return _0x191cf5[_0x9b8d('0x18')](_0x2dc0c4)[_0x9b8d('0x1a')](_0x2865c2);}};}function respondWithFilteredResult(_0x1f34a2,_0x492e16){return function(_0x1d2138){if(_0x1d2138){var _0x5de223=typeof _0x492e16[_0x9b8d('0x1b')]==='undefined'&&typeof _0x492e16[_0x9b8d('0x1c')]===_0x9b8d('0x1d');var _0x4c2aa8=_0x1d2138[_0x9b8d('0x1e')];var _0x144a34=_0x5de223?0x0:_0x492e16[_0x9b8d('0x1b')];var _0x1fcdac=_0x5de223?_0x1d2138[_0x9b8d('0x1e')]:_0x492e16['offset']+_0x492e16[_0x9b8d('0x1c')];var _0x389aad;if(_0x1fcdac>=_0x4c2aa8){_0x1fcdac=_0x4c2aa8;_0x389aad=0xc8;}else{_0x389aad=0xce;}_0x1f34a2[_0x9b8d('0x18')](_0x389aad);return _0x1f34a2[_0x9b8d('0x1f')](_0x9b8d('0x20'),_0x144a34+'-'+_0x1fcdac+'/'+_0x4c2aa8)[_0x9b8d('0x1a')](_0x1d2138);}return null;};}function patchUpdates(_0x3e9925){return function(_0x481eb6){try{jsonpatch['apply'](_0x481eb6,_0x3e9925,!![]);}catch(_0x392c67){return BPromise[_0x9b8d('0x21')](_0x392c67);}return _0x481eb6['save']();};}function saveUpdates(_0x270e95,_0x325619){return function(_0x5539b6){if(_0x5539b6){return _0x5539b6[_0x9b8d('0x22')](_0x270e95)['then'](function(_0x4cab4e){return _0x4cab4e;});}return null;};}function removeEntity(_0x49faa3,_0xa60d34){return function(_0x16938e){if(_0x16938e){return _0x16938e[_0x9b8d('0x23')]()[_0x9b8d('0x24')](function(){var _0x2586e1=_0x16938e[_0x9b8d('0x25')]({'plain':!![]});var _0x297ef9=_0x9b8d('0x26');return db[_0x9b8d('0x27')]['destroy']({'where':{'type':_0x297ef9,'resourceId':_0x2586e1['id']}})['then'](function(){return _0x16938e;});})[_0x9b8d('0x24')](function(){_0x49faa3[_0x9b8d('0x18')](0xcc)[_0x9b8d('0x19')]();});}};}function handleEntityNotFound(_0x12ec8f,_0x2b6aa2){return function(_0x8f6913){if(!_0x8f6913){_0x12ec8f[_0x9b8d('0x28')](0x194);}return _0x8f6913;};}function handleError(_0x46ca57,_0x51aad7){_0x51aad7=_0x51aad7||0x1f4;return function(_0x4a31d5){logger[_0x9b8d('0x29')](_0x4a31d5[_0x9b8d('0x2a')]);if(_0x4a31d5[_0x9b8d('0x2b')]){delete _0x4a31d5[_0x9b8d('0x2b')];}_0x46ca57[_0x9b8d('0x18')](_0x51aad7)[_0x9b8d('0x2c')](_0x4a31d5);};}exports[_0x9b8d('0x2d')]=function(_0x319547,_0x2a56c3){var _0x9b45ad={},_0x3089bd={},_0x557f8f={'count':0x0,'rows':[]};var _0x1d0a21=_[_0x9b8d('0x2e')](db['Sound'][_0x9b8d('0x2f')],function(_0x18a4bc){return{'name':_0x18a4bc[_0x9b8d('0x30')],'type':_0x18a4bc[_0x9b8d('0x31')]['key']};});_0x3089bd[_0x9b8d('0x32')]=_['map'](_0x1d0a21,_0x9b8d('0x2b'));_0x3089bd[_0x9b8d('0x33')]=_[_0x9b8d('0x34')](_0x319547['query']);_0x3089bd[_0x9b8d('0x35')]=_[_0x9b8d('0x36')](_0x3089bd[_0x9b8d('0x32')],_0x3089bd[_0x9b8d('0x33')]);_0x9b45ad[_0x9b8d('0x37')]=_['intersection'](_0x3089bd[_0x9b8d('0x32')],qs[_0x9b8d('0x38')](_0x319547[_0x9b8d('0x33')][_0x9b8d('0x38')]));_0x9b45ad[_0x9b8d('0x37')]=_0x9b45ad[_0x9b8d('0x37')][_0x9b8d('0x39')]?_0x9b45ad[_0x9b8d('0x37')]:_0x3089bd[_0x9b8d('0x32')];if(!_0x319547[_0x9b8d('0x33')][_0x9b8d('0x3a')]('nolimit')){_0x9b45ad[_0x9b8d('0x1c')]=qs[_0x9b8d('0x1c')](_0x319547[_0x9b8d('0x33')][_0x9b8d('0x1c')]);_0x9b45ad['offset']=qs[_0x9b8d('0x1b')](_0x319547[_0x9b8d('0x33')][_0x9b8d('0x1b')]);}_0x9b45ad['order']=qs[_0x9b8d('0x3b')](_0x319547['query'][_0x9b8d('0x3b')]);_0x9b45ad[_0x9b8d('0x3c')]=qs[_0x9b8d('0x35')](_['pick'](_0x319547[_0x9b8d('0x33')],_0x3089bd['filters']),_0x1d0a21);if(_0x319547[_0x9b8d('0x33')][_0x9b8d('0x3d')]){_0x9b45ad[_0x9b8d('0x3c')]=_[_0x9b8d('0x3e')](_0x9b45ad['where'],{'$or':_[_0x9b8d('0x2e')](_0x1d0a21,function(_0x1e3784){if(_0x1e3784['type']!==_0x9b8d('0x3f')){var _0x48f4fd={};_0x48f4fd[_0x1e3784[_0x9b8d('0x2b')]]={'$like':'%'+_0x319547[_0x9b8d('0x33')][_0x9b8d('0x3d')]+'%'};return _0x48f4fd;}})});}_0x9b45ad=_[_0x9b8d('0x3e')]({},_0x9b45ad,_0x319547[_0x9b8d('0x40')]);var _0x17756e={'where':_0x9b45ad[_0x9b8d('0x3c')]};return db[_0x9b8d('0x41')]['count'](_0x17756e)[_0x9b8d('0x24')](function(_0x215f11){_0x557f8f['count']=_0x215f11;if(_0x319547[_0x9b8d('0x33')]['includeAll']){_0x9b45ad[_0x9b8d('0x42')]=[{'all':!![]}];}return db['Sound'][_0x9b8d('0x43')](_0x9b45ad);})[_0x9b8d('0x24')](function(_0xf3f7ce){_0x557f8f[_0x9b8d('0x44')]=_0xf3f7ce;return _0x557f8f;})[_0x9b8d('0x24')](respondWithFilteredResult(_0x2a56c3,_0x9b45ad))[_0x9b8d('0x45')](handleError(_0x2a56c3,null));};exports[_0x9b8d('0x46')]=function(_0xb5b553,_0x354128){var _0x37abf6={'raw':!![],'where':{'id':_0xb5b553[_0x9b8d('0x47')]['id']}},_0x3ef6f3={};_0x3ef6f3['model']=_[_0x9b8d('0x34')](db['Sound'][_0x9b8d('0x2f')]);_0x3ef6f3[_0x9b8d('0x33')]=_[_0x9b8d('0x34')](_0xb5b553[_0x9b8d('0x33')]);_0x3ef6f3[_0x9b8d('0x35')]=_[_0x9b8d('0x36')](_0x3ef6f3[_0x9b8d('0x32')],_0x3ef6f3['query']);_0x37abf6[_0x9b8d('0x37')]=_[_0x9b8d('0x36')](_0x3ef6f3[_0x9b8d('0x32')],qs[_0x9b8d('0x38')](_0xb5b553[_0x9b8d('0x33')][_0x9b8d('0x38')]));_0x37abf6['attributes']=_0x37abf6['attributes']['length']?_0x37abf6[_0x9b8d('0x37')]:_0x3ef6f3[_0x9b8d('0x32')];if(_0xb5b553['query'][_0x9b8d('0x48')]){_0x37abf6[_0x9b8d('0x42')]=[{'all':!![]}];}_0x37abf6=_['merge']({},_0x37abf6,_0xb5b553['options']);return db[_0x9b8d('0x41')][_0x9b8d('0x49')](_0x37abf6)[_0x9b8d('0x24')](handleEntityNotFound(_0x354128,null))[_0x9b8d('0x24')](respondWithResult(_0x354128,null))[_0x9b8d('0x45')](handleError(_0x354128,null));};exports[_0x9b8d('0x4a')]=function(_0x1f2953,_0x3a58c4,_0x4f33fb){return db[_0x9b8d('0x41')][_0x9b8d('0x49')]({'where':{'id':_0x1f2953[_0x9b8d('0x47')]['id']},'attributes':['name',_0x9b8d('0x4b'),_0x9b8d('0x4c')],'raw':!![]})['then'](handleEntityNotFound(_0x3a58c4,null))[_0x9b8d('0x24')](function(_0x475ca3){if(_0x475ca3){if(!fs[_0x9b8d('0x4d')](path['join'](config['root'],'server/files/sounds/converted',_0x475ca3['save_name']+'.'+_0x475ca3[_0x9b8d('0x4c')]))){throw new db[(_0x9b8d('0x4e'))][(_0x9b8d('0x4f'))](_0x9b8d('0x50'));}return _0x3a58c4['download'](path[_0x9b8d('0x51')](config[_0x9b8d('0x52')],'server/files/sounds/converted',util[_0x9b8d('0x53')]('%s.%s',_0x475ca3['save_name'],_0x475ca3[_0x9b8d('0x4c')])),util[_0x9b8d('0x53')]('%s.%s',_0x475ca3[_0x9b8d('0x2b')],_0x475ca3[_0x9b8d('0x4c')]));}return null;})[_0x9b8d('0x45')](handleError(_0x3a58c4,null));};exports[_0x9b8d('0x54')]=function(_0x543355,_0x522a05,_0x32233c){var _0x34e296={'name':path['basename'](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x56')],path[_0x9b8d('0x57')](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x56')])),'save_name':path[_0x9b8d('0x58')](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x59')],path['extname'](_0x543355['file'][_0x9b8d('0x59')])),'original_format':path[_0x9b8d('0x57')](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x56')])[_0x9b8d('0x5a')](0x1),'converted_format':_0x9b8d('0x5b')};var _0x35e9a2=path[_0x9b8d('0x51')](config[_0x9b8d('0x52')],'server/files/sounds/original',_0x543355[_0x9b8d('0x55')][_0x9b8d('0x59')]);var _0x47871c=path[_0x9b8d('0x51')](config[_0x9b8d('0x52')],'server/files/sounds/converted',util[_0x9b8d('0x53')](_0x9b8d('0x5c'),path['basename'](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x59')],path[_0x9b8d('0x57')](_0x543355[_0x9b8d('0x55')][_0x9b8d('0x59')])),_0x34e296[_0x9b8d('0x4c')]));logger[_0x9b8d('0x5d')](_0x9b8d('0x5e'),_0x35e9a2);logger[_0x9b8d('0x5d')](_0x9b8d('0x5f'),_0x47871c);try{fs[_0x9b8d('0x60')](_0x35e9a2,parseInt(_0x9b8d('0x61'),0x8));var _0x479e64=sox[_0x9b8d('0x62')](_0x35e9a2,_0x47871c,{'sampleRate':0x1f40,'format':_0x9b8d('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x479e64['on']('error',function(_0x568d0c){fs[_0x9b8d('0x63')](_0x35e9a2);_0x522a05[_0x9b8d('0x18')](0x1f4)[_0x9b8d('0x2c')](_0x568d0c);});_0x479e64['on'](_0x9b8d('0x64'),function(_0x536ca1){_0x34e296[_0x9b8d('0x65')]=isNaN(_0x536ca1[_0x9b8d('0x66')])?null:_0x536ca1[_0x9b8d('0x66')]*0x3e8;_0x34e296[_0x9b8d('0x67')]=isNaN(_0x536ca1[_0x9b8d('0x68')])?null:_0x536ca1[_0x9b8d('0x68')];_0x34e296[_0x9b8d('0x69')]=isNaN(_0x536ca1[_0x9b8d('0x6a')])?null:_0x536ca1['channelCount'];_0x34e296[_0x9b8d('0x6b')]=isNaN(_0x536ca1[_0x9b8d('0x6c')])?null:_0x536ca1[_0x9b8d('0x6c')];_0x34e296[_0x9b8d('0x6d')]=isNaN(_0x536ca1[_0x9b8d('0x6e')])?null:_0x536ca1[_0x9b8d('0x6e')];});_0x479e64['on'](_0x9b8d('0x6f'),function(_0x5c1878){_0x34e296[_0x9b8d('0x70')]=isNaN(_0x5c1878[_0x9b8d('0x66')])?null:_0x5c1878[_0x9b8d('0x66')]*0x3e8;_0x34e296[_0x9b8d('0x71')]=isNaN(_0x5c1878[_0x9b8d('0x68')])?null:_0x5c1878[_0x9b8d('0x68')];_0x34e296[_0x9b8d('0x72')]=isNaN(_0x5c1878[_0x9b8d('0x6a')])?null:_0x5c1878[_0x9b8d('0x6a')];_0x34e296[_0x9b8d('0x73')]=isNaN(_0x5c1878['bitRate'])?null:_0x5c1878[_0x9b8d('0x6c')];_0x34e296[_0x9b8d('0x74')]=isNaN(_0x5c1878[_0x9b8d('0x6e')])?null:_0x5c1878[_0x9b8d('0x6e')];});_0x479e64['on'](_0x9b8d('0x19'),function(){fs[_0x9b8d('0x60')](_0x47871c,parseInt(_0x9b8d('0x61'),0x8));return db['Sound'][_0x9b8d('0x54')](_0x34e296)[_0x9b8d('0x24')](function(_0xca58c7){var _0x5f1cb0={'role':_0x543355[_0x9b8d('0x75')][_0x9b8d('0x76')],'userProfileId':_0x543355[_0x9b8d('0x75')][_0x9b8d('0x77')]};if(!_0x5f1cb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f1cb0[_0x9b8d('0x76')]===_0x9b8d('0x78')){var _0x5e1ac7=_0xca58c7[_0x9b8d('0x25')]({'plain':!![]});return db['UserProfileSection'][_0x9b8d('0x49')]({'where':{'name':_0x9b8d('0x26'),'userProfileId':_0x5f1cb0[_0x9b8d('0x77')]},'raw':!![]})['then'](function(_0xf005db){if(_0xf005db&&_0xf005db[_0x9b8d('0x79')]===0x0){return db[_0x9b8d('0x27')]['create']({'name':_0x5e1ac7[_0x9b8d('0x2b')],'resourceId':_0x5e1ac7['id'],'type':_0xf005db[_0x9b8d('0x2b')],'sectionId':_0xf005db['id']},{})[_0x9b8d('0x24')](function(){return _0xca58c7;});}else{return _0xca58c7;}})[_0x9b8d('0x45')](function(_0x507f70){logger['error'](_0x9b8d('0x7a'),_0x507f70);throw _0x507f70;});}return _0xca58c7;})[_0x9b8d('0x24')](respondWithResult(_0x522a05,null))[_0x9b8d('0x45')](handleError(_0x522a05,null));});_0x479e64[_0x9b8d('0x7b')]();}catch(_0x10382d){_0x522a05[_0x9b8d('0x18')](0x1f4)[_0x9b8d('0x2c')](_0x10382d);}};exports[_0x9b8d('0x22')]=function(_0x3e3f14,_0x2c3992,_0x385298){return db[_0x9b8d('0x41')][_0x9b8d('0x49')]({'where':{'id':_0x3e3f14[_0x9b8d('0x47')]['id']}})[_0x9b8d('0x24')](handleEntityNotFound(_0x2c3992,null))['then'](saveUpdates(_[_0x9b8d('0x7c')](_0x3e3f14[_0x9b8d('0x75')],[_0x9b8d('0x2b'),_0x9b8d('0x7d')]),null))[_0x9b8d('0x24')](respondWithResult(_0x2c3992,null))[_0x9b8d('0x45')](handleError(_0x2c3992,null));};exports['delete']=function(_0x4c062f,_0x1d8450,_0x2be4f3){return db['Sound']['find']({'where':{'id':_0x4c062f[_0x9b8d('0x47')]['id']}})[_0x9b8d('0x24')](function(_0x585d2b){if(_0x585d2b){return _0x585d2b[_0x9b8d('0x23')]();}})[_0x9b8d('0x24')](function(_0x393197){var _0x3f276d=path[_0x9b8d('0x51')](config[_0x9b8d('0x52')],_0x9b8d('0x7e'),util[_0x9b8d('0x53')](_0x9b8d('0x5c'),_0x393197['save_name'],_0x393197[_0x9b8d('0x7f')]));var _0x564bb0=path[_0x9b8d('0x51')](config['root'],_0x9b8d('0x80'),util[_0x9b8d('0x53')](_0x9b8d('0x5c'),_0x393197[_0x9b8d('0x4b')],_0x393197[_0x9b8d('0x4c')]));fs['unlinkSync'](_0x3f276d);fs['unlinkSync'](_0x564bb0);return _0x393197;})[_0x9b8d('0x24')](function(_0x147f06){if(_0x147f06){return _0x1d8450['status'](0xcc)[_0x9b8d('0x19')]();}})['then'](handleEntityNotFound(_0x1d8450,null))[_0x9b8d('0x45')](handleError(_0x1d8450,null));};
\ No newline at end of file
index 6d95396..04f965c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd6=['exports','define','Sound','tools_sounds','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./sound.attributes'];(function(_0x513047,_0x2199c5){var _0x15b779=function(_0x412fd5){while(--_0x412fd5){_0x513047['push'](_0x513047['shift']());}};_0x15b779(++_0x2199c5);}(_0x1fd6,0xc4));var _0x61fd=function(_0x30f043,_0xbe1f80){_0x30f043=_0x30f043-0x0;var _0x2aa4b7=_0x1fd6[_0x30f043];return _0x2aa4b7;};'use strict';var _=require(_0x61fd('0x0'));var util=require('util');var logger=require(_0x61fd('0x1'))(_0x61fd('0x2'));var moment=require('moment');var BPromise=require(_0x61fd('0x3'));var rp=require(_0x61fd('0x4'));var fs=require('fs');var path=require(_0x61fd('0x5'));var rimraf=require(_0x61fd('0x6'));var config=require('../../config/environment');var attributes=require(_0x61fd('0x7'));module[_0x61fd('0x8')]=function(_0x4d0771,_0x4c1e2f){return _0x4d0771[_0x61fd('0x9')](_0x61fd('0xa'),attributes,{'tableName':_0x61fd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5b0=['rimraf','./sound.attributes','exports','define','Sound','tools_sounds','util','api','moment','request-promise'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xc5b0,0x1d2));var _0x0c5b=function(_0x2f7d91,_0x3f24a8){_0x2f7d91=_0x2f7d91-0x0;var _0x33dad7=_0xc5b0[_0x2f7d91];return _0x33dad7;};'use strict';var _=require('lodash');var util=require(_0x0c5b('0x0'));var logger=require('../../config/logger')(_0x0c5b('0x1'));var moment=require(_0x0c5b('0x2'));var BPromise=require('bluebird');var rp=require(_0x0c5b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c5b('0x4'));var config=require('../../config/environment');var attributes=require(_0x0c5b('0x5'));module[_0x0c5b('0x6')]=function(_0x4fc675,_0x2debad){return _0x4fc675[_0x0c5b('0x7')](_0x0c5b('0x8'),attributes,{'tableName':_0x0c5b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 81b930d..3224a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59e=['where','attributes','include','map','model','ShowSound','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','Sound','options','raw'];(function(_0x3c0164,_0x119752){var _0x56db46=function(_0x46f22e){while(--_0x46f22e){_0x3c0164['push'](_0x3c0164['shift']());}};_0x56db46(++_0x119752);}(_0xb59e,0xff));var _0xeb59=function(_0x598989,_0x1b2358){_0x598989=_0x598989-0x0;var _0x3691dd=_0xb59e[_0x598989];return _0x3691dd;};'use strict';var _=require(_0xeb59('0x0'));var util=require('util');var moment=require(_0xeb59('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb59('0x2'));var db=require(_0xeb59('0x3'))['db'];var utils=require(_0xeb59('0x4'));var logger=require(_0xeb59('0x5'))('rpc');var config=require(_0xeb59('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xeb59('0x7')][_0xeb59('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5daffd,_0x215d47,_0x1bac04){return new BPromise(function(_0x48bd3d,_0x36a05f){return client[_0xeb59('0x9')](_0x5daffd,_0x1bac04)[_0xeb59('0xa')](function(_0xb54bfb){logger[_0xeb59('0xb')](_0xeb59('0xc'),_0x215d47,_0xeb59('0xd'));logger[_0xeb59('0xe')](_0xeb59('0xf'),_0x215d47,_0xeb59('0xd'),JSON[_0xeb59('0x10')](_0xb54bfb));if(_0xb54bfb['error']){if(_0xb54bfb['error'][_0xeb59('0x11')]===0x1f4){logger[_0xeb59('0x12')]('Sound,\x20%s,\x20%s',_0x215d47,_0xb54bfb[_0xeb59('0x12')][_0xeb59('0x13')]);return _0x36a05f(_0xb54bfb['error']['message']);}logger[_0xeb59('0x12')](_0xeb59('0xc'),_0x215d47,_0xb54bfb[_0xeb59('0x12')][_0xeb59('0x13')]);return _0x48bd3d(_0xb54bfb[_0xeb59('0x12')][_0xeb59('0x13')]);}else{logger['info'](_0xeb59('0xc'),_0x215d47,'request\x20sent');_0x48bd3d(_0xb54bfb[_0xeb59('0x14')][_0xeb59('0x13')]);}})['catch'](function(_0x46acfd){logger[_0xeb59('0x12')]('Sound,\x20%s,\x20%s',_0x215d47,_0x46acfd);_0x36a05f(_0x46acfd);});});}exports['ShowSound']=function(_0x45983e){var _0xb0e2f1=this;return new Promise(function(_0x19c895,_0x1b0ba0){return db[_0xeb59('0x15')]['find']({'raw':_0x45983e[_0xeb59('0x16')]?_0x45983e[_0xeb59('0x16')][_0xeb59('0x17')]===undefined?!![]:![]:!![],'where':_0x45983e[_0xeb59('0x16')]?_0x45983e[_0xeb59('0x16')][_0xeb59('0x18')]||null:null,'attributes':_0x45983e[_0xeb59('0x16')]?_0x45983e['options'][_0xeb59('0x19')]||null:null,'include':_0x45983e[_0xeb59('0x16')]?_0x45983e[_0xeb59('0x16')][_0xeb59('0x1a')]?_[_0xeb59('0x1b')](_0x45983e[_0xeb59('0x16')][_0xeb59('0x1a')],function(_0xb6c31c){return{'model':db[_0xb6c31c['model']],'as':_0xb6c31c['as'],'attributes':_0xb6c31c[_0xeb59('0x19')],'include':_0xb6c31c[_0xeb59('0x1a')]?_[_0xeb59('0x1b')](_0xb6c31c[_0xeb59('0x1a')],function(_0x3de012){return{'model':db[_0x3de012[_0xeb59('0x1c')]],'as':_0x3de012['as'],'attributes':_0x3de012[_0xeb59('0x19')],'include':_0x3de012['include']?_[_0xeb59('0x1b')](_0x3de012[_0xeb59('0x1a')],function(_0x18b633){return{'model':db[_0x18b633[_0xeb59('0x1c')]],'as':_0x18b633['as'],'attributes':_0x18b633['attributes']};}):[]};}):[]};}):[]:[]})[_0xeb59('0xa')](function(_0x15f4ed){logger['info'](_0xeb59('0x1d'),_0x45983e);logger['debug'](_0xeb59('0x1d'),_0x45983e,JSON[_0xeb59('0x10')](_0x15f4ed));_0x19c895(_0x15f4ed);})[_0xeb59('0x1e')](function(_0x161ad6){logger['error']('ShowSound',_0x161ad6[_0xeb59('0x13')],_0x45983e);_0x1b0ba0(_0xb0e2f1['error'](0x1f4,_0x161ad6[_0xeb59('0x13')]));});});};
\ No newline at end of file
+var _0x5990=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','ShowSound','Sound','options','raw','where','model','attributes','include','map','then','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5785f5,_0x4a9c2e){var _0xc36cc0=function(_0x538e4b){while(--_0x538e4b){_0x5785f5['push'](_0x5785f5['shift']());}};_0xc36cc0(++_0x4a9c2e);}(_0x5990,0x101));var _0x0599=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5990[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0599('0x0'));var util=require(_0x0599('0x1'));var moment=require(_0x0599('0x2'));var BPromise=require(_0x0599('0x3'));var rs=require(_0x0599('0x4'));var fs=require('fs');var Redis=require(_0x0599('0x5'));var db=require(_0x0599('0x6'))['db'];var utils=require(_0x0599('0x7'));var logger=require(_0x0599('0x8'))(_0x0599('0x9'));var config=require(_0x0599('0xa'));var jayson=require(_0x0599('0xb'));var client=jayson[_0x0599('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc3cdee,_0x39fa1c,_0x49e70e){return new BPromise(function(_0x5aa568,_0x111818){return client[_0x0599('0xd')](_0xc3cdee,_0x49e70e)['then'](function(_0x443f16){logger[_0x0599('0xe')](_0x0599('0xf'),_0x39fa1c,_0x0599('0x10'));logger['debug'](_0x0599('0x11'),_0x39fa1c,_0x0599('0x10'),JSON[_0x0599('0x12')](_0x443f16));if(_0x443f16['error']){if(_0x443f16[_0x0599('0x13')]['code']===0x1f4){logger[_0x0599('0x13')](_0x0599('0xf'),_0x39fa1c,_0x443f16['error'][_0x0599('0x14')]);return _0x111818(_0x443f16[_0x0599('0x13')][_0x0599('0x14')]);}logger[_0x0599('0x13')](_0x0599('0xf'),_0x39fa1c,_0x443f16[_0x0599('0x13')][_0x0599('0x14')]);return _0x5aa568(_0x443f16[_0x0599('0x13')][_0x0599('0x14')]);}else{logger[_0x0599('0xe')]('Sound,\x20%s,\x20%s',_0x39fa1c,_0x0599('0x10'));_0x5aa568(_0x443f16['result'][_0x0599('0x14')]);}})[_0x0599('0x15')](function(_0x277f43){logger['error']('Sound,\x20%s,\x20%s',_0x39fa1c,_0x277f43);_0x111818(_0x277f43);});});}exports[_0x0599('0x16')]=function(_0x1c1483){var _0x246f05=this;return new Promise(function(_0x5055d6,_0x506e32){return db[_0x0599('0x17')]['find']({'raw':_0x1c1483['options']?_0x1c1483[_0x0599('0x18')][_0x0599('0x19')]===undefined?!![]:![]:!![],'where':_0x1c1483[_0x0599('0x18')]?_0x1c1483['options'][_0x0599('0x1a')]||null:null,'attributes':_0x1c1483[_0x0599('0x18')]?_0x1c1483['options']['attributes']||null:null,'include':_0x1c1483[_0x0599('0x18')]?_0x1c1483[_0x0599('0x18')]['include']?_['map'](_0x1c1483[_0x0599('0x18')]['include'],function(_0x1a0334){return{'model':db[_0x1a0334[_0x0599('0x1b')]],'as':_0x1a0334['as'],'attributes':_0x1a0334[_0x0599('0x1c')],'include':_0x1a0334[_0x0599('0x1d')]?_[_0x0599('0x1e')](_0x1a0334[_0x0599('0x1d')],function(_0x101956){return{'model':db[_0x101956[_0x0599('0x1b')]],'as':_0x101956['as'],'attributes':_0x101956[_0x0599('0x1c')],'include':_0x101956[_0x0599('0x1d')]?_[_0x0599('0x1e')](_0x101956['include'],function(_0x9808dc){return{'model':db[_0x9808dc[_0x0599('0x1b')]],'as':_0x9808dc['as'],'attributes':_0x9808dc[_0x0599('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x0599('0x1f')](function(_0x5119b4){logger['info'](_0x0599('0x16'),_0x1c1483);logger[_0x0599('0x20')](_0x0599('0x16'),_0x1c1483,JSON[_0x0599('0x12')](_0x5119b4));_0x5055d6(_0x5119b4);})['catch'](function(_0x22ad9d){logger[_0x0599('0x13')]('ShowSound',_0x22ad9d[_0x0599('0x14')],_0x1c1483);_0x506e32(_0x246f05[_0x0599('0x13')](0x1f4,_0x22ad9d[_0x0599('0x14')]));});});};
\ No newline at end of file
index 09eedc0..40013ed 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','/:id','show','post','create','update','delete','destroy'];(function(_0x5b2b80,_0x324e9d){var _0x401ac7=function(_0xe6d06d){while(--_0xe6d06d){_0x5b2b80['push'](_0x5b2b80['shift']());}};_0x401ac7(++_0x324e9d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x5f66[_0x2f5ac5];return _0x37c9a8;};'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
+var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x4f7da1,_0x21ae99){var _0x5473f4=function(_0x2c5adc){while(--_0x2c5adc){_0x4f7da1['push'](_0x4f7da1['shift']());}};_0x5473f4(++_0x21ae99);}(_0x2032,0xd9));var _0x2203=function(_0x21edaf,_0x16e72d){_0x21edaf=_0x21edaf-0x0;var _0x34ac92=_0x2032[_0x21edaf];return _0x34ac92;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
index 7c98dfb..791d57e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2abf=['out','sequelize','exports','STRING','TEXT','medium','ENUM'];(function(_0x2ac68e,_0x4cfb77){var _0x2ca5d5=function(_0x3977d1){while(--_0x3977d1){_0x2ac68e['push'](_0x2ac68e['shift']());}};_0x2ca5d5(++_0x4cfb77);}(_0x2abf,0x10b));var _0xf2ab=function(_0x4c99b4,_0x541d3a){_0x4c99b4=_0x4c99b4-0x0;var _0x93ed35=_0x2abf[_0x4c99b4];return _0x93ed35;};'use strict';var Sequelize=require(_0xf2ab('0x0'));module[_0xf2ab('0x1')]={'uniqueid':{'type':Sequelize[_0xf2ab('0x2')]},'body':{'type':Sequelize[_0xf2ab('0x3')](_0xf2ab('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0xf2ab('0x5')]('in',_0xf2ab('0x6')),'defaultValue':_0xf2ab('0x6'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x8428=['exports','STRING','TEXT','ENUM','out'];(function(_0x558ba0,_0x235b91){var _0x27b5a5=function(_0xd2957c){while(--_0xd2957c){_0x558ba0['push'](_0x558ba0['shift']());}};_0x27b5a5(++_0x235b91);}(_0x8428,0x91));var _0x8842=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8428[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x8842('0x0')]={'uniqueid':{'type':Sequelize[_0x8842('0x1')]},'body':{'type':Sequelize[_0x8842('0x2')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x8842('0x3')]('in',_0x8842('0x4')),'defaultValue':_0x8842('0x4'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x8842('0x2')]}};
\ No newline at end of file
index fe2afd6..73af279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3256=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','show','params','includeAll','catch','create','body','find','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','SquareMessage','fieldName','type','key','query','keys','intersection','model','fields'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x3256,0xee));var _0x6325=function(_0x135921,_0x186ef7){_0x135921=_0x135921-0x0;var _0xbdc52b=_0x3256[_0x135921];return _0xbdc52b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6325('0x0'));var jsonpatch=require(_0x6325('0x1'));var rp=require('request-promise');var moment=require(_0x6325('0x2'));var BPromise=require(_0x6325('0x3'));var Mustache=require(_0x6325('0x4'));var util=require(_0x6325('0x5'));var path=require('path');var sox=require(_0x6325('0x6'));var csv=require(_0x6325('0x7'));var ejs=require(_0x6325('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6325('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6325('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x6325('0x7'));var querystring=require(_0x6325('0xb'));var Papa=require(_0x6325('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6325('0xd'));var as=require(_0x6325('0xe'));var hardwareService=require(_0x6325('0xf'));var logger=require(_0x6325('0x10'))(_0x6325('0x11'));var utils=require(_0x6325('0x12'));var config=require(_0x6325('0x13'));var licenseUtil=require(_0x6325('0x14'));var db=require(_0x6325('0x15'))['db'];function respondWithStatusCode(_0x408963,_0x46b049){_0x46b049=_0x46b049||0xcc;return function(_0x3c9bc8){if(_0x3c9bc8){return _0x408963['sendStatus'](_0x46b049);}return _0x408963['status'](_0x46b049)['end']();};}function respondWithResult(_0x578253,_0x38e977){_0x38e977=_0x38e977||0xc8;return function(_0xfd0dd2){if(_0xfd0dd2){return _0x578253[_0x6325('0x16')](_0x38e977)[_0x6325('0x17')](_0xfd0dd2);}};}function respondWithFilteredResult(_0x28facd,_0x1605e3){return function(_0xfaee3d){if(_0xfaee3d){var _0x509361=typeof _0x1605e3[_0x6325('0x18')]===_0x6325('0x19')&&typeof _0x1605e3[_0x6325('0x1a')]===_0x6325('0x19');var _0x410c3a=_0xfaee3d['count'];var _0x1c3465=_0x509361?0x0:_0x1605e3['offset'];var _0x242145=_0x509361?_0xfaee3d[_0x6325('0x1b')]:_0x1605e3[_0x6325('0x18')]+_0x1605e3['limit'];var _0x5d4be2;if(_0x242145>=_0x410c3a){_0x242145=_0x410c3a;_0x5d4be2=0xc8;}else{_0x5d4be2=0xce;}_0x28facd[_0x6325('0x16')](_0x5d4be2);return _0x28facd[_0x6325('0x1c')](_0x6325('0x1d'),_0x1c3465+'-'+_0x242145+'/'+_0x410c3a)[_0x6325('0x17')](_0xfaee3d);}return null;};}function patchUpdates(_0x3953ab){return function(_0x51132d){try{jsonpatch['apply'](_0x51132d,_0x3953ab,!![]);}catch(_0x770c8f){return BPromise[_0x6325('0x1e')](_0x770c8f);}return _0x51132d[_0x6325('0x1f')]();};}function saveUpdates(_0x5bff81,_0x2fff51){return function(_0x8df9c3){if(_0x8df9c3){return _0x8df9c3[_0x6325('0x20')](_0x5bff81)[_0x6325('0x21')](function(_0x23a11f){return _0x23a11f;});}return null;};}function removeEntity(_0x1ce497,_0x21bb1f){return function(_0x461065){if(_0x461065){return _0x461065[_0x6325('0x22')]()['then'](function(){_0x1ce497['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x30ea7e,_0x55deed){return function(_0x388c03){if(!_0x388c03){_0x30ea7e[_0x6325('0x23')](0x194);}return _0x388c03;};}function handleError(_0x25b5e2,_0x1c58d3){_0x1c58d3=_0x1c58d3||0x1f4;return function(_0x1c5ebe){logger['error'](_0x1c5ebe[_0x6325('0x24')]);if(_0x1c5ebe[_0x6325('0x25')]){delete _0x1c5ebe[_0x6325('0x25')];}_0x25b5e2[_0x6325('0x16')](_0x1c58d3)[_0x6325('0x26')](_0x1c5ebe);};}exports[_0x6325('0x27')]=function(_0x306488,_0x4d6fc8){var _0xacfe27={},_0xd3593f={},_0x3ab48d={'count':0x0,'rows':[]};var _0x1ff52d=_[_0x6325('0x28')](db[_0x6325('0x29')]['rawAttributes'],function(_0xe29e73){return{'name':_0xe29e73[_0x6325('0x2a')],'type':_0xe29e73[_0x6325('0x2b')][_0x6325('0x2c')]};});_0xd3593f['model']=_['map'](_0x1ff52d,_0x6325('0x25'));_0xd3593f[_0x6325('0x2d')]=_[_0x6325('0x2e')](_0x306488[_0x6325('0x2d')]);_0xd3593f['filters']=_[_0x6325('0x2f')](_0xd3593f['model'],_0xd3593f[_0x6325('0x2d')]);_0xacfe27['attributes']=_[_0x6325('0x2f')](_0xd3593f[_0x6325('0x30')],qs['fields'](_0x306488['query'][_0x6325('0x31')]));_0xacfe27[_0x6325('0x32')]=_0xacfe27[_0x6325('0x32')][_0x6325('0x33')]?_0xacfe27[_0x6325('0x32')]:_0xd3593f[_0x6325('0x30')];if(!_0x306488[_0x6325('0x2d')][_0x6325('0x34')](_0x6325('0x35'))){_0xacfe27['limit']=qs[_0x6325('0x1a')](_0x306488[_0x6325('0x2d')]['limit']);_0xacfe27[_0x6325('0x18')]=qs[_0x6325('0x18')](_0x306488[_0x6325('0x2d')]['offset']);}_0xacfe27[_0x6325('0x36')]=qs[_0x6325('0x37')](_0x306488[_0x6325('0x2d')]['sort']);_0xacfe27[_0x6325('0x38')]=qs['filters'](_[_0x6325('0x39')](_0x306488[_0x6325('0x2d')],_0xd3593f[_0x6325('0x3a')]),_0x1ff52d);if(_0x306488['query'][_0x6325('0x3b')]){_0xacfe27['where']=_[_0x6325('0x3c')](_0xacfe27['where'],{'$or':_['map'](_0x1ff52d,function(_0x611d29){if(_0x611d29['type']!==_0x6325('0x3d')){var _0x4d052b={};_0x4d052b[_0x611d29[_0x6325('0x25')]]={'$like':'%'+_0x306488['query'][_0x6325('0x3b')]+'%'};return _0x4d052b;}})});}_0xacfe27=_['merge']({},_0xacfe27,_0x306488[_0x6325('0x3e')]);var _0x194719={'where':_0xacfe27[_0x6325('0x38')]};return db[_0x6325('0x29')]['count'](_0x194719)[_0x6325('0x21')](function(_0x5785d2){_0x3ab48d[_0x6325('0x1b')]=_0x5785d2;if(_0x306488['query']['includeAll']){_0xacfe27[_0x6325('0x3f')]=[{'all':!![]}];}return db[_0x6325('0x29')][_0x6325('0x40')](_0xacfe27);})[_0x6325('0x21')](function(_0x21ea37){_0x3ab48d['rows']=_0x21ea37;return _0x3ab48d;})['then'](respondWithFilteredResult(_0x4d6fc8,_0xacfe27))['catch'](handleError(_0x4d6fc8,null));};exports[_0x6325('0x41')]=function(_0x592729,_0x2c22c7){var _0x30b150={'raw':!![],'where':{'id':_0x592729[_0x6325('0x42')]['id']}},_0x2b6c7e={};_0x2b6c7e[_0x6325('0x30')]=_[_0x6325('0x2e')](db[_0x6325('0x29')]['rawAttributes']);_0x2b6c7e[_0x6325('0x2d')]=_[_0x6325('0x2e')](_0x592729[_0x6325('0x2d')]);_0x2b6c7e[_0x6325('0x3a')]=_[_0x6325('0x2f')](_0x2b6c7e[_0x6325('0x30')],_0x2b6c7e[_0x6325('0x2d')]);_0x30b150[_0x6325('0x32')]=_[_0x6325('0x2f')](_0x2b6c7e[_0x6325('0x30')],qs[_0x6325('0x31')](_0x592729[_0x6325('0x2d')][_0x6325('0x31')]));_0x30b150[_0x6325('0x32')]=_0x30b150[_0x6325('0x32')][_0x6325('0x33')]?_0x30b150[_0x6325('0x32')]:_0x2b6c7e[_0x6325('0x30')];if(_0x592729['query'][_0x6325('0x43')]){_0x30b150[_0x6325('0x3f')]=[{'all':!![]}];}_0x30b150=_[_0x6325('0x3c')]({},_0x30b150,_0x592729[_0x6325('0x3e')]);return db[_0x6325('0x29')]['find'](_0x30b150)['then'](handleEntityNotFound(_0x2c22c7,null))[_0x6325('0x21')](respondWithResult(_0x2c22c7,null))[_0x6325('0x44')](handleError(_0x2c22c7,null));};exports['create']=function(_0x18da01,_0x1d22ae){return db[_0x6325('0x29')][_0x6325('0x45')](_0x18da01[_0x6325('0x46')],{})[_0x6325('0x21')](respondWithResult(_0x1d22ae,0xc9))[_0x6325('0x44')](handleError(_0x1d22ae,null));};exports[_0x6325('0x20')]=function(_0x59fcf6,_0x287a6b){if(_0x59fcf6[_0x6325('0x46')]['id']){delete _0x59fcf6['body']['id'];}return db['SquareMessage'][_0x6325('0x47')]({'where':{'id':_0x59fcf6[_0x6325('0x42')]['id']}})[_0x6325('0x21')](handleEntityNotFound(_0x287a6b,null))[_0x6325('0x21')](saveUpdates(_0x59fcf6['body'],null))[_0x6325('0x21')](respondWithResult(_0x287a6b,null))[_0x6325('0x44')](handleError(_0x287a6b,null));};exports['destroy']=function(_0x4b57ed,_0xf89b33){return db['SquareMessage']['find']({'where':{'id':_0x4b57ed[_0x6325('0x42')]['id']}})[_0x6325('0x21')](handleEntityNotFound(_0xf89b33,null))[_0x6325('0x21')](removeEntity(_0xf89b33,null))[_0x6325('0x44')](handleError(_0xf89b33,null));};
\ No newline at end of file
+var _0xf7a8=['fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','filters','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','rawAttributes','find','catch','create','body','update','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','status','json','limit','undefined','count','set','Content-Range','apply','save','then','destroy','end','error','name','send','SquareMessage'];(function(_0x552200,_0xa152){var _0x332a63=function(_0x8d0708){while(--_0x8d0708){_0x552200['push'](_0x552200['shift']());}};_0x332a63(++_0xa152);}(_0xf7a8,0xfa));var _0x8f7a=function(_0x32c2ce,_0x405a52){_0x32c2ce=_0x32c2ce-0x0;var _0x10311d=_0xf7a8[_0x32c2ce];return _0x10311d;};'use strict';var emlformat=require(_0x8f7a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8f7a('0x1'));var jsonpatch=require(_0x8f7a('0x2'));var rp=require('request-promise');var moment=require(_0x8f7a('0x3'));var BPromise=require(_0x8f7a('0x4'));var Mustache=require(_0x8f7a('0x5'));var util=require(_0x8f7a('0x6'));var path=require(_0x8f7a('0x7'));var sox=require(_0x8f7a('0x8'));var csv=require(_0x8f7a('0x9'));var ejs=require(_0x8f7a('0xa'));var fs=require('fs');var fs_extra=require(_0x8f7a('0xb'));var _=require(_0x8f7a('0xc'));var squel=require(_0x8f7a('0xd'));var crypto=require(_0x8f7a('0xe'));var jsforce=require(_0x8f7a('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8f7a('0x10'));var Papa=require(_0x8f7a('0x11'));var Redis=require(_0x8f7a('0x12'));var authService=require(_0x8f7a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x8f7a('0x14'));var hardwareService=require(_0x8f7a('0x15'));var logger=require(_0x8f7a('0x16'))(_0x8f7a('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8f7a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e9970,_0xaeffea){_0xaeffea=_0xaeffea||0xcc;return function(_0x25c91d){if(_0x25c91d){return _0x5e9970[_0x8f7a('0x19')](_0xaeffea);}return _0x5e9970['status'](_0xaeffea)['end']();};}function respondWithResult(_0x280f7e,_0x1448c1){_0x1448c1=_0x1448c1||0xc8;return function(_0x50fc94){if(_0x50fc94){return _0x280f7e[_0x8f7a('0x1a')](_0x1448c1)[_0x8f7a('0x1b')](_0x50fc94);}};}function respondWithFilteredResult(_0x3f9005,_0x39907f){return function(_0x4a7da7){if(_0x4a7da7){var _0x19da9b=typeof _0x39907f['offset']==='undefined'&&typeof _0x39907f[_0x8f7a('0x1c')]===_0x8f7a('0x1d');var _0x591144=_0x4a7da7[_0x8f7a('0x1e')];var _0x49cf6e=_0x19da9b?0x0:_0x39907f['offset'];var _0x9702f8=_0x19da9b?_0x4a7da7['count']:_0x39907f['offset']+_0x39907f['limit'];var _0xc236de;if(_0x9702f8>=_0x591144){_0x9702f8=_0x591144;_0xc236de=0xc8;}else{_0xc236de=0xce;}_0x3f9005['status'](_0xc236de);return _0x3f9005[_0x8f7a('0x1f')](_0x8f7a('0x20'),_0x49cf6e+'-'+_0x9702f8+'/'+_0x591144)[_0x8f7a('0x1b')](_0x4a7da7);}return null;};}function patchUpdates(_0x3048eb){return function(_0x1b851e){try{jsonpatch[_0x8f7a('0x21')](_0x1b851e,_0x3048eb,!![]);}catch(_0x2fcbb7){return BPromise['reject'](_0x2fcbb7);}return _0x1b851e[_0x8f7a('0x22')]();};}function saveUpdates(_0x386c33,_0x4e4fa4){return function(_0x219592){if(_0x219592){return _0x219592['update'](_0x386c33)[_0x8f7a('0x23')](function(_0x5b797){return _0x5b797;});}return null;};}function removeEntity(_0x45c1c7,_0x52c6b1){return function(_0xde5147){if(_0xde5147){return _0xde5147[_0x8f7a('0x24')]()[_0x8f7a('0x23')](function(){_0x45c1c7[_0x8f7a('0x1a')](0xcc)[_0x8f7a('0x25')]();});}};}function handleEntityNotFound(_0x53b837,_0x3bc543){return function(_0x668189){if(!_0x668189){_0x53b837[_0x8f7a('0x19')](0x194);}return _0x668189;};}function handleError(_0x24c049,_0x3a26c4){_0x3a26c4=_0x3a26c4||0x1f4;return function(_0x5e6ccb){logger[_0x8f7a('0x26')](_0x5e6ccb['stack']);if(_0x5e6ccb[_0x8f7a('0x27')]){delete _0x5e6ccb[_0x8f7a('0x27')];}_0x24c049[_0x8f7a('0x1a')](_0x3a26c4)[_0x8f7a('0x28')](_0x5e6ccb);};}exports['index']=function(_0x15ca12,_0x4c8739){var _0x5650e9={},_0x37389c={},_0x2cd36c={'count':0x0,'rows':[]};var _0x17c557=_['map'](db[_0x8f7a('0x29')]['rawAttributes'],function(_0x1ce9da){return{'name':_0x1ce9da[_0x8f7a('0x2a')],'type':_0x1ce9da[_0x8f7a('0x2b')][_0x8f7a('0x2c')]};});_0x37389c[_0x8f7a('0x2d')]=_['map'](_0x17c557,_0x8f7a('0x27'));_0x37389c[_0x8f7a('0x2e')]=_[_0x8f7a('0x2f')](_0x15ca12['query']);_0x37389c['filters']=_[_0x8f7a('0x30')](_0x37389c[_0x8f7a('0x2d')],_0x37389c[_0x8f7a('0x2e')]);_0x5650e9[_0x8f7a('0x31')]=_[_0x8f7a('0x30')](_0x37389c['model'],qs[_0x8f7a('0x32')](_0x15ca12['query'][_0x8f7a('0x32')]));_0x5650e9[_0x8f7a('0x31')]=_0x5650e9[_0x8f7a('0x31')][_0x8f7a('0x33')]?_0x5650e9['attributes']:_0x37389c[_0x8f7a('0x2d')];if(!_0x15ca12[_0x8f7a('0x2e')][_0x8f7a('0x34')](_0x8f7a('0x35'))){_0x5650e9[_0x8f7a('0x1c')]=qs[_0x8f7a('0x1c')](_0x15ca12[_0x8f7a('0x2e')][_0x8f7a('0x1c')]);_0x5650e9[_0x8f7a('0x36')]=qs['offset'](_0x15ca12[_0x8f7a('0x2e')][_0x8f7a('0x36')]);}_0x5650e9[_0x8f7a('0x37')]=qs['sort'](_0x15ca12[_0x8f7a('0x2e')]['sort']);_0x5650e9['where']=qs[_0x8f7a('0x38')](_['pick'](_0x15ca12[_0x8f7a('0x2e')],_0x37389c[_0x8f7a('0x38')]),_0x17c557);if(_0x15ca12['query']['filter']){_0x5650e9['where']=_[_0x8f7a('0x39')](_0x5650e9['where'],{'$or':_[_0x8f7a('0x3a')](_0x17c557,function(_0x456465){if(_0x456465[_0x8f7a('0x2b')]!==_0x8f7a('0x3b')){var _0x1e920c={};_0x1e920c[_0x456465[_0x8f7a('0x27')]]={'$like':'%'+_0x15ca12[_0x8f7a('0x2e')][_0x8f7a('0x3c')]+'%'};return _0x1e920c;}})});}_0x5650e9=_[_0x8f7a('0x39')]({},_0x5650e9,_0x15ca12[_0x8f7a('0x3d')]);var _0x218e3d={'where':_0x5650e9['where']};return db[_0x8f7a('0x29')][_0x8f7a('0x1e')](_0x218e3d)[_0x8f7a('0x23')](function(_0x2e9c4c){_0x2cd36c[_0x8f7a('0x1e')]=_0x2e9c4c;if(_0x15ca12[_0x8f7a('0x2e')][_0x8f7a('0x3e')]){_0x5650e9[_0x8f7a('0x3f')]=[{'all':!![]}];}return db[_0x8f7a('0x29')][_0x8f7a('0x40')](_0x5650e9);})[_0x8f7a('0x23')](function(_0xd03542){_0x2cd36c[_0x8f7a('0x41')]=_0xd03542;return _0x2cd36c;})[_0x8f7a('0x23')](respondWithFilteredResult(_0x4c8739,_0x5650e9))['catch'](handleError(_0x4c8739,null));};exports['show']=function(_0x2b47f0,_0x3a80b1){var _0x110ac0={'raw':!![],'where':{'id':_0x2b47f0[_0x8f7a('0x42')]['id']}},_0x3aa322={};_0x3aa322[_0x8f7a('0x2d')]=_['keys'](db[_0x8f7a('0x29')][_0x8f7a('0x43')]);_0x3aa322['query']=_[_0x8f7a('0x2f')](_0x2b47f0['query']);_0x3aa322[_0x8f7a('0x38')]=_[_0x8f7a('0x30')](_0x3aa322[_0x8f7a('0x2d')],_0x3aa322[_0x8f7a('0x2e')]);_0x110ac0[_0x8f7a('0x31')]=_[_0x8f7a('0x30')](_0x3aa322[_0x8f7a('0x2d')],qs[_0x8f7a('0x32')](_0x2b47f0['query'][_0x8f7a('0x32')]));_0x110ac0[_0x8f7a('0x31')]=_0x110ac0[_0x8f7a('0x31')][_0x8f7a('0x33')]?_0x110ac0[_0x8f7a('0x31')]:_0x3aa322[_0x8f7a('0x2d')];if(_0x2b47f0['query']['includeAll']){_0x110ac0[_0x8f7a('0x3f')]=[{'all':!![]}];}_0x110ac0=_[_0x8f7a('0x39')]({},_0x110ac0,_0x2b47f0[_0x8f7a('0x3d')]);return db[_0x8f7a('0x29')][_0x8f7a('0x44')](_0x110ac0)[_0x8f7a('0x23')](handleEntityNotFound(_0x3a80b1,null))[_0x8f7a('0x23')](respondWithResult(_0x3a80b1,null))[_0x8f7a('0x45')](handleError(_0x3a80b1,null));};exports[_0x8f7a('0x46')]=function(_0x272eab,_0x287d29){return db[_0x8f7a('0x29')]['create'](_0x272eab[_0x8f7a('0x47')],{})[_0x8f7a('0x23')](respondWithResult(_0x287d29,0xc9))['catch'](handleError(_0x287d29,null));};exports[_0x8f7a('0x48')]=function(_0x5ad5c5,_0x32473f){if(_0x5ad5c5[_0x8f7a('0x47')]['id']){delete _0x5ad5c5[_0x8f7a('0x47')]['id'];}return db[_0x8f7a('0x29')][_0x8f7a('0x44')]({'where':{'id':_0x5ad5c5[_0x8f7a('0x42')]['id']}})[_0x8f7a('0x23')](handleEntityNotFound(_0x32473f,null))[_0x8f7a('0x23')](saveUpdates(_0x5ad5c5[_0x8f7a('0x47')],null))['then'](respondWithResult(_0x32473f,null))['catch'](handleError(_0x32473f,null));};exports[_0x8f7a('0x24')]=function(_0x26bc51,_0x5db888){return db[_0x8f7a('0x29')][_0x8f7a('0x44')]({'where':{'id':_0x26bc51['params']['id']}})['then'](handleEntityNotFound(_0x5db888,null))[_0x8f7a('0x23')](removeEntity(_0x5db888,null))[_0x8f7a('0x45')](handleError(_0x5db888,null));};
\ No newline at end of file
index c17d5df..11237bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b17=['../../config/environment','./squareMessage.attributes','define','lodash','util','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x5ad07c,_0x324dcd){var _0x204bae=function(_0x1245bc){while(--_0x1245bc){_0x5ad07c['push'](_0x5ad07c['shift']());}};_0x204bae(++_0x324dcd);}(_0x3b17,0x17f));var _0x73b1=function(_0x3a0827,_0x3a9ab5){_0x3a0827=_0x3a0827-0x0;var _0x1ba9f3=_0x3b17[_0x3a0827];return _0x1ba9f3;};'use strict';var _=require(_0x73b1('0x0'));var util=require(_0x73b1('0x1'));var logger=require(_0x73b1('0x2'))('api');var moment=require(_0x73b1('0x3'));var BPromise=require(_0x73b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x73b1('0x5'));var rimraf=require(_0x73b1('0x6'));var config=require(_0x73b1('0x7'));var attributes=require(_0x73b1('0x8'));module['exports']=function(_0x37c65e,_0x559644){return _0x37c65e[_0x73b1('0x9')]('SquareMessage',attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ccc=['square_messages','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','SquareMessage'];(function(_0x1218c2,_0x3fe72d){var _0xba222c=function(_0x2873c7){while(--_0x2873c7){_0x1218c2['push'](_0x1218c2['shift']());}};_0xba222c(++_0x3fe72d);}(_0x8ccc,0x1b9));var _0xc8cc=function(_0x28b389,_0x302fc3){_0x28b389=_0x28b389-0x0;var _0x4ca159=_0x8ccc[_0x28b389];return _0x4ca159;};'use strict';var _=require('lodash');var util=require(_0xc8cc('0x0'));var logger=require(_0xc8cc('0x1'))(_0xc8cc('0x2'));var moment=require(_0xc8cc('0x3'));var BPromise=require('bluebird');var rp=require(_0xc8cc('0x4'));var fs=require('fs');var path=require(_0xc8cc('0x5'));var rimraf=require(_0xc8cc('0x6'));var config=require(_0xc8cc('0x7'));var attributes=require('./squareMessage.attributes');module['exports']=function(_0x536212,_0x4e83c4){return _0x536212[_0xc8cc('0x8')](_0xc8cc('0x9'),attributes,{'tableName':_0xc8cc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0261ac3..a704a40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b32=['CreateSquareMessage','SquareMessage','create','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x37296f,_0x4f3aa9){var _0x3f94e8=function(_0x2226e2){while(--_0x2226e2){_0x37296f['push'](_0x37296f['shift']());}};_0x3f94e8(++_0x4f3aa9);}(_0x2b32,0xf8));var _0x22b3=function(_0x5e2152,_0x172f3d){_0x5e2152=_0x5e2152-0x0;var _0x5ddcf6=_0x2b32[_0x5e2152];return _0x5ddcf6;};'use strict';var _=require(_0x22b3('0x0'));var util=require(_0x22b3('0x1'));var moment=require('moment');var BPromise=require(_0x22b3('0x2'));var rs=require(_0x22b3('0x3'));var fs=require('fs');var Redis=require(_0x22b3('0x4'));var db=require(_0x22b3('0x5'))['db'];var utils=require(_0x22b3('0x6'));var logger=require(_0x22b3('0x7'))(_0x22b3('0x8'));var config=require(_0x22b3('0x9'));var jayson=require(_0x22b3('0xa'));var client=jayson[_0x22b3('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4446d1,_0x1e371d,_0x4d8b7b){return new BPromise(function(_0x43155e,_0x3da54a){return client['request'](_0x4446d1,_0x4d8b7b)[_0x22b3('0xc')](function(_0x48ea1f){logger[_0x22b3('0xd')](_0x22b3('0xe'),_0x1e371d,_0x22b3('0xf'));logger[_0x22b3('0x10')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x1e371d,_0x22b3('0xf'),JSON[_0x22b3('0x11')](_0x48ea1f));if(_0x48ea1f[_0x22b3('0x12')]){if(_0x48ea1f[_0x22b3('0x12')][_0x22b3('0x13')]===0x1f4){logger[_0x22b3('0x12')](_0x22b3('0xe'),_0x1e371d,_0x48ea1f[_0x22b3('0x12')][_0x22b3('0x14')]);return _0x3da54a(_0x48ea1f['error'][_0x22b3('0x14')]);}logger[_0x22b3('0x12')](_0x22b3('0xe'),_0x1e371d,_0x48ea1f[_0x22b3('0x12')]['message']);return _0x43155e(_0x48ea1f[_0x22b3('0x12')][_0x22b3('0x14')]);}else{logger[_0x22b3('0xd')](_0x22b3('0xe'),_0x1e371d,_0x22b3('0xf'));_0x43155e(_0x48ea1f['result'][_0x22b3('0x14')]);}})[_0x22b3('0x15')](function(_0x192d5d){logger[_0x22b3('0x12')]('SquareMessage,\x20%s,\x20%s',_0x1e371d,_0x192d5d);_0x3da54a(_0x192d5d);});});}exports[_0x22b3('0x16')]=function(_0x5198e2){var _0x3c0dac=this;return new Promise(function(_0x46d6cc,_0x84f3b6){return db[_0x22b3('0x17')][_0x22b3('0x18')](_0x5198e2['body'],{'raw':_0x5198e2['options']?_0x5198e2[_0x22b3('0x19')][_0x22b3('0x1a')]===undefined?!![]:![]:!![]})[_0x22b3('0xc')](function(_0x396256){logger[_0x22b3('0xd')](_0x22b3('0x16'),_0x5198e2);logger[_0x22b3('0x10')](_0x22b3('0x16'),_0x5198e2,JSON[_0x22b3('0x11')](_0x396256));_0x46d6cc(_0x396256);})[_0x22b3('0x15')](function(_0x44b064){logger[_0x22b3('0x12')](_0x22b3('0x16'),_0x44b064[_0x22b3('0x14')],_0x5198e2);_0x84f3b6(_0x3c0dac[_0x22b3('0x12')](0x1f4,_0x44b064[_0x22b3('0x14')]));});});};
\ No newline at end of file
+var _0xfdfd=['../../config/environment','client','request','then','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','error','SquareMessage,\x20%s,\x20%s','message','info','catch','CreateSquareMessage','SquareMessage','create','raw','debug','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x184759,_0x1cc38a){var _0xf26d5f=function(_0x1010c8){while(--_0x1010c8){_0x184759['push'](_0x184759['shift']());}};_0xf26d5f(++_0x1cc38a);}(_0xfdfd,0xc7));var _0xdfdf=function(_0x3f8abf,_0x22e23a){_0x3f8abf=_0x3f8abf-0x0;var _0x1e2169=_0xfdfd[_0x3f8abf];return _0x1e2169;};'use strict';var _=require(_0xdfdf('0x0'));var util=require(_0xdfdf('0x1'));var moment=require('moment');var BPromise=require(_0xdfdf('0x2'));var rs=require(_0xdfdf('0x3'));var fs=require('fs');var Redis=require(_0xdfdf('0x4'));var db=require(_0xdfdf('0x5'))['db'];var utils=require(_0xdfdf('0x6'));var logger=require(_0xdfdf('0x7'))(_0xdfdf('0x8'));var config=require(_0xdfdf('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xdfdf('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a0591,_0x37b06e,_0x5dffae){return new BPromise(function(_0x367209,_0x82831c){return client[_0xdfdf('0xb')](_0x4a0591,_0x5dffae)[_0xdfdf('0xc')](function(_0x19d4b0){logger['info']('SquareMessage,\x20%s,\x20%s',_0x37b06e,_0xdfdf('0xd'));logger['debug'](_0xdfdf('0xe'),_0x37b06e,'request\x20sent',JSON['stringify'](_0x19d4b0));if(_0x19d4b0[_0xdfdf('0xf')]){if(_0x19d4b0['error']['code']===0x1f4){logger[_0xdfdf('0xf')](_0xdfdf('0x10'),_0x37b06e,_0x19d4b0[_0xdfdf('0xf')][_0xdfdf('0x11')]);return _0x82831c(_0x19d4b0[_0xdfdf('0xf')]['message']);}logger[_0xdfdf('0xf')](_0xdfdf('0x10'),_0x37b06e,_0x19d4b0[_0xdfdf('0xf')][_0xdfdf('0x11')]);return _0x367209(_0x19d4b0['error']['message']);}else{logger[_0xdfdf('0x12')]('SquareMessage,\x20%s,\x20%s',_0x37b06e,_0xdfdf('0xd'));_0x367209(_0x19d4b0['result'][_0xdfdf('0x11')]);}})[_0xdfdf('0x13')](function(_0x255b17){logger[_0xdfdf('0xf')](_0xdfdf('0x10'),_0x37b06e,_0x255b17);_0x82831c(_0x255b17);});});}exports[_0xdfdf('0x14')]=function(_0x970859){var _0x2ca8e8=this;return new Promise(function(_0x25a2d3,_0x39b107){return db[_0xdfdf('0x15')][_0xdfdf('0x16')](_0x970859['body'],{'raw':_0x970859['options']?_0x970859['options'][_0xdfdf('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x115dc5){logger[_0xdfdf('0x12')](_0xdfdf('0x14'),_0x970859);logger[_0xdfdf('0x18')](_0xdfdf('0x14'),_0x970859,JSON[_0xdfdf('0x19')](_0x115dc5));_0x25a2d3(_0x115dc5);})[_0xdfdf('0x13')](function(_0x50c96a){logger['error'](_0xdfdf('0x14'),_0x50c96a[_0xdfdf('0x11')],_0x970859);_0x39b107(_0x2ca8e8[_0xdfdf('0xf')](0x1f4,_0x50c96a[_0xdfdf('0x11')]));});});};
\ No newline at end of file
index 61434e6..37ae4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab8d=['put','update','destroy','exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id','show','/:id/test','15s','test','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xab8d,0x121));var _0xdab8=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0xab8d[_0x5608a3];return _0x1ed50a;};'use strict';var multer=require('multer');var util=require(_0xdab8('0x0'));var path=require(_0xdab8('0x1'));var timeout=require('connect-timeout');var express=require(_0xdab8('0x2'));var router=express['Router']();var fs_extra=require(_0xdab8('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdab8('0x4'));var config=require(_0xdab8('0x5'));var controller=require(_0xdab8('0x6'));router[_0xdab8('0x7')]('/',auth[_0xdab8('0x8')](),controller['index']);router[_0xdab8('0x7')](_0xdab8('0x9'),auth[_0xdab8('0x8')](),controller[_0xdab8('0xa')]);router['get'](_0xdab8('0xb'),auth[_0xdab8('0x8')](),timeout(_0xdab8('0xc')),controller[_0xdab8('0xd')]);router['post']('/',auth[_0xdab8('0x8')](),controller[_0xdab8('0xe')]);router[_0xdab8('0xf')]('/:id',auth[_0xdab8('0x8')](),controller[_0xdab8('0x10')]);router['delete'](_0xdab8('0x9'),auth['isAuthenticated'](),controller[_0xdab8('0x11')]);module[_0xdab8('0x12')]=router;
\ No newline at end of file
+var _0xfd23=['../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','isAuthenticated','show','/:id/test','15s','test','post','create','put','/:id','update','delete','exports','multer','util','express','Router','fs-extra'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xfd23,0x9c));var _0x3fd2=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0xfd23[_0x20a558];return _0x53d3f7;};'use strict';var multer=require(_0x3fd2('0x0'));var util=require(_0x3fd2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3fd2('0x2'));var router=express[_0x3fd2('0x3')]();var fs_extra=require(_0x3fd2('0x4'));var auth=require(_0x3fd2('0x5'));var interaction=require(_0x3fd2('0x6'));var config=require(_0x3fd2('0x7'));var controller=require(_0x3fd2('0x8'));router[_0x3fd2('0x9')]('/',auth['isAuthenticated'](),controller[_0x3fd2('0xa')]);router[_0x3fd2('0x9')]('/:id',auth[_0x3fd2('0xb')](),controller[_0x3fd2('0xc')]);router[_0x3fd2('0x9')](_0x3fd2('0xd'),auth[_0x3fd2('0xb')](),timeout(_0x3fd2('0xe')),controller[_0x3fd2('0xf')]);router[_0x3fd2('0x10')]('/',auth[_0x3fd2('0xb')](),controller[_0x3fd2('0x11')]);router[_0x3fd2('0x12')](_0x3fd2('0x13'),auth['isAuthenticated'](),controller[_0x3fd2('0x14')]);router[_0x3fd2('0x15')](_0x3fd2('0x13'),auth[_0x3fd2('0xb')](),controller['destroy']);module[_0x3fd2('0x16')]=router;
\ No newline at end of file
index fa95e11..f58b59b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x625b=['name','sequelize','exports','STRING'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x625b,0x121));var _0xb625=function(_0x343214,_0x2a9614){_0x343214=_0x343214-0x0;var _0x36ed5a=_0x625b[_0x343214];return _0x36ed5a;};'use strict';var Sequelize=require(_0xb625('0x0'));module[_0xb625('0x1')]={'name':{'type':Sequelize[_0xb625('0x2')],'unique':_0xb625('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xb625('0x2')]},'description':{'type':Sequelize[_0xb625('0x2')]}};
\ No newline at end of file
+var _0x4504=['name','sequelize','STRING'];(function(_0x559fad,_0x4f905a){var _0x2dd50b=function(_0x4b604a){while(--_0x4b604a){_0x559fad['push'](_0x559fad['shift']());}};_0x2dd50b(++_0x4f905a);}(_0x4504,0x1a2));var _0x4450=function(_0x28d7c3,_0x5e47d4){_0x28d7c3=_0x28d7c3-0x0;var _0x59e143=_0x4504[_0x28d7c3];return _0x59e143;};'use strict';var Sequelize=require(_0x4450('0x0'));module['exports']={'name':{'type':Sequelize[_0x4450('0x1')],'unique':_0x4450('0x2'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dab5e04..794a2a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce15=['nolimit','where','pick','merge','type','VIRTUAL','SquareOdbc','include','catch','params','keys','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','test','dsn','odbc','openSync','closeSync','eml-format','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','ODBC','error','stack','name','map','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xce15,0x1aa));var _0x5ce1=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xce15[_0x4792c8];return _0x35edb1;};'use strict';var emlformat=require(_0x5ce1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5ce1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5ce1('0x2'));var moment=require(_0x5ce1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5ce1('0x4'));var util=require('util');var path=require(_0x5ce1('0x5'));var sox=require(_0x5ce1('0x6'));var csv=require(_0x5ce1('0x7'));var ejs=require(_0x5ce1('0x8'));var fs=require('fs');var fs_extra=require(_0x5ce1('0x9'));var _=require(_0x5ce1('0xa'));var squel=require('squel');var crypto=require(_0x5ce1('0xb'));var jsforce=require(_0x5ce1('0xc'));var deskjs=require(_0x5ce1('0xd'));var toCsv=require(_0x5ce1('0x7'));var querystring=require('querystring');var Papa=require(_0x5ce1('0xe'));var Redis=require(_0x5ce1('0xf'));var authService=require(_0x5ce1('0x10'));var qs=require(_0x5ce1('0x11'));var as=require(_0x5ce1('0x12'));var hardwareService=require(_0x5ce1('0x13'));var logger=require(_0x5ce1('0x14'))(_0x5ce1('0x15'));var utils=require('../../config/utils');var config=require(_0x5ce1('0x16'));var licenseUtil=require(_0x5ce1('0x17'));var db=require(_0x5ce1('0x18'))['db'];function respondWithStatusCode(_0x2d5672,_0x1b4cab){_0x1b4cab=_0x1b4cab||0xcc;return function(_0x4a3444){if(_0x4a3444){return _0x2d5672[_0x5ce1('0x19')](_0x1b4cab);}return _0x2d5672[_0x5ce1('0x1a')](_0x1b4cab)[_0x5ce1('0x1b')]();};}function respondWithResult(_0xc95459,_0x255afb){_0x255afb=_0x255afb||0xc8;return function(_0x123e1d){if(_0x123e1d){return _0xc95459[_0x5ce1('0x1a')](_0x255afb)['json'](_0x123e1d);}};}function respondWithFilteredResult(_0x5abf94,_0x3c9c27){return function(_0x1b86ff){if(_0x1b86ff){var _0x50686f=typeof _0x3c9c27[_0x5ce1('0x1c')]==='undefined'&&typeof _0x3c9c27['limit']==='undefined';var _0x5471ab=_0x1b86ff[_0x5ce1('0x1d')];var _0x37709a=_0x50686f?0x0:_0x3c9c27['offset'];var _0x127b80=_0x50686f?_0x1b86ff[_0x5ce1('0x1d')]:_0x3c9c27['offset']+_0x3c9c27[_0x5ce1('0x1e')];var _0x533092;if(_0x127b80>=_0x5471ab){_0x127b80=_0x5471ab;_0x533092=0xc8;}else{_0x533092=0xce;}_0x5abf94['status'](_0x533092);return _0x5abf94[_0x5ce1('0x1f')](_0x5ce1('0x20'),_0x37709a+'-'+_0x127b80+'/'+_0x5471ab)[_0x5ce1('0x21')](_0x1b86ff);}return null;};}function patchUpdates(_0x3afbc5){return function(_0x3c4595){try{jsonpatch[_0x5ce1('0x22')](_0x3c4595,_0x3afbc5,!![]);}catch(_0x3181ba){return BPromise[_0x5ce1('0x23')](_0x3181ba);}return _0x3c4595[_0x5ce1('0x24')]();};}function saveUpdates(_0xd6c191,_0x45b3c3){return function(_0x421346){if(_0x421346){return _0x421346['update'](_0xd6c191)[_0x5ce1('0x25')](function(_0x2367e2){return _0x2367e2;});}return null;};}function removeEntity(_0x7518fe,_0x25b4bd){return function(_0x5c0ab4){if(_0x5c0ab4){return _0x5c0ab4[_0x5ce1('0x26')]()['then'](function(){var _0x42c363=_0x5c0ab4['get']({'plain':!![]});var _0x3392f4=_0x5ce1('0x27');return db['UserProfileResource'][_0x5ce1('0x26')]({'where':{'type':_0x3392f4,'resourceId':_0x42c363['id']}})[_0x5ce1('0x25')](function(){return _0x5c0ab4;});})[_0x5ce1('0x25')](function(){_0x7518fe[_0x5ce1('0x1a')](0xcc)[_0x5ce1('0x1b')]();});}};}function handleEntityNotFound(_0x1d58b6,_0x1dff3a){return function(_0x5e0d3c){if(!_0x5e0d3c){_0x1d58b6['sendStatus'](0x194);}return _0x5e0d3c;};}function handleError(_0x343e5c,_0x2fec9d){_0x2fec9d=_0x2fec9d||0x1f4;return function(_0x299b55){logger[_0x5ce1('0x28')](_0x299b55[_0x5ce1('0x29')]);if(_0x299b55[_0x5ce1('0x2a')]){delete _0x299b55[_0x5ce1('0x2a')];}_0x343e5c['status'](_0x2fec9d)['send'](_0x299b55);};}exports['index']=function(_0x3491e5,_0x40197f){var _0x495c4c={},_0x2d156c={},_0x57a3c4={'count':0x0,'rows':[]};var _0x226a82=_[_0x5ce1('0x2b')](db['SquareOdbc'][_0x5ce1('0x2c')],function(_0x220f32){return{'name':_0x220f32[_0x5ce1('0x2d')],'type':_0x220f32['type']['key']};});_0x2d156c[_0x5ce1('0x2e')]=_[_0x5ce1('0x2b')](_0x226a82,_0x5ce1('0x2a'));_0x2d156c[_0x5ce1('0x2f')]=_['keys'](_0x3491e5[_0x5ce1('0x2f')]);_0x2d156c[_0x5ce1('0x30')]=_[_0x5ce1('0x31')](_0x2d156c['model'],_0x2d156c[_0x5ce1('0x2f')]);_0x495c4c[_0x5ce1('0x32')]=_[_0x5ce1('0x31')](_0x2d156c[_0x5ce1('0x2e')],qs['fields'](_0x3491e5['query'][_0x5ce1('0x33')]));_0x495c4c[_0x5ce1('0x32')]=_0x495c4c[_0x5ce1('0x32')][_0x5ce1('0x34')]?_0x495c4c[_0x5ce1('0x32')]:_0x2d156c['model'];if(!_0x3491e5['query'][_0x5ce1('0x35')](_0x5ce1('0x36'))){_0x495c4c[_0x5ce1('0x1e')]=qs[_0x5ce1('0x1e')](_0x3491e5[_0x5ce1('0x2f')]['limit']);_0x495c4c['offset']=qs[_0x5ce1('0x1c')](_0x3491e5[_0x5ce1('0x2f')][_0x5ce1('0x1c')]);}_0x495c4c['order']=qs['sort'](_0x3491e5[_0x5ce1('0x2f')]['sort']);_0x495c4c[_0x5ce1('0x37')]=qs['filters'](_[_0x5ce1('0x38')](_0x3491e5['query'],_0x2d156c['filters']),_0x226a82);if(_0x3491e5['query']['filter']){_0x495c4c[_0x5ce1('0x37')]=_[_0x5ce1('0x39')](_0x495c4c['where'],{'$or':_[_0x5ce1('0x2b')](_0x226a82,function(_0x3d3ec8){if(_0x3d3ec8[_0x5ce1('0x3a')]!==_0x5ce1('0x3b')){var _0x3e265f={};_0x3e265f[_0x3d3ec8[_0x5ce1('0x2a')]]={'$like':'%'+_0x3491e5['query']['filter']+'%'};return _0x3e265f;}})});}_0x495c4c=_[_0x5ce1('0x39')]({},_0x495c4c,_0x3491e5['options']);var _0x4c7951={'where':_0x495c4c[_0x5ce1('0x37')]};return db[_0x5ce1('0x3c')][_0x5ce1('0x1d')](_0x4c7951)[_0x5ce1('0x25')](function(_0x4b5aa8){_0x57a3c4[_0x5ce1('0x1d')]=_0x4b5aa8;if(_0x3491e5[_0x5ce1('0x2f')]['includeAll']){_0x495c4c[_0x5ce1('0x3d')]=[{'all':!![]}];}return db[_0x5ce1('0x3c')]['findAll'](_0x495c4c);})['then'](function(_0x3a92a8){_0x57a3c4['rows']=_0x3a92a8;return _0x57a3c4;})[_0x5ce1('0x25')](respondWithFilteredResult(_0x40197f,_0x495c4c))[_0x5ce1('0x3e')](handleError(_0x40197f,null));};exports['show']=function(_0xe4a12e,_0x2b424a){var _0x5e3f99={'raw':!![],'where':{'id':_0xe4a12e[_0x5ce1('0x3f')]['id']}},_0x134705={};_0x134705['model']=_[_0x5ce1('0x40')](db[_0x5ce1('0x3c')][_0x5ce1('0x2c')]);_0x134705[_0x5ce1('0x2f')]=_[_0x5ce1('0x40')](_0xe4a12e['query']);_0x134705['filters']=_[_0x5ce1('0x31')](_0x134705[_0x5ce1('0x2e')],_0x134705[_0x5ce1('0x2f')]);_0x5e3f99[_0x5ce1('0x32')]=_[_0x5ce1('0x31')](_0x134705[_0x5ce1('0x2e')],qs['fields'](_0xe4a12e[_0x5ce1('0x2f')][_0x5ce1('0x33')]));_0x5e3f99['attributes']=_0x5e3f99['attributes'][_0x5ce1('0x34')]?_0x5e3f99[_0x5ce1('0x32')]:_0x134705['model'];if(_0xe4a12e[_0x5ce1('0x2f')][_0x5ce1('0x41')]){_0x5e3f99['include']=[{'all':!![]}];}_0x5e3f99=_[_0x5ce1('0x39')]({},_0x5e3f99,_0xe4a12e['options']);return db['SquareOdbc'][_0x5ce1('0x42')](_0x5e3f99)[_0x5ce1('0x25')](handleEntityNotFound(_0x2b424a,null))[_0x5ce1('0x25')](respondWithResult(_0x2b424a,null))[_0x5ce1('0x3e')](handleError(_0x2b424a,null));};exports[_0x5ce1('0x43')]=function(_0x3e5962,_0x4d5719){return db['SquareOdbc'][_0x5ce1('0x43')](_0x3e5962[_0x5ce1('0x44')],{})[_0x5ce1('0x25')](function(_0x5d924b){var _0x5d66a2=_0x3e5962[_0x5ce1('0x45')][_0x5ce1('0x46')]({'plain':!![]});if(!_0x5d66a2)throw new Error(_0x5ce1('0x47'));if(_0x5d66a2['role']==='user'){var _0x500e9e=_0x5d924b['get']({'plain':!![]});var _0x5c0b67='ODBC';return db['UserProfileSection'][_0x5ce1('0x42')]({'where':{'name':_0x5c0b67,'userProfileId':_0x5d66a2[_0x5ce1('0x48')]},'raw':!![]})[_0x5ce1('0x25')](function(_0x53e981){if(_0x53e981&&_0x53e981[_0x5ce1('0x49')]===0x0){return db[_0x5ce1('0x4a')][_0x5ce1('0x43')]({'name':_0x500e9e[_0x5ce1('0x2a')],'resourceId':_0x500e9e['id'],'type':_0x53e981[_0x5ce1('0x2a')],'sectionId':_0x53e981['id']},{})['then'](function(){return _0x5d924b;});}else{return _0x5d924b;}})[_0x5ce1('0x3e')](function(_0x1e3261){logger[_0x5ce1('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e3261);throw _0x1e3261;});}return _0x5d924b;})[_0x5ce1('0x25')](respondWithResult(_0x4d5719,0xc9))['catch'](handleError(_0x4d5719,null));};exports['update']=function(_0x45ed5b,_0x16b18b){if(_0x45ed5b[_0x5ce1('0x44')]['id']){delete _0x45ed5b[_0x5ce1('0x44')]['id'];}return db['SquareOdbc'][_0x5ce1('0x42')]({'where':{'id':_0x45ed5b[_0x5ce1('0x3f')]['id']}})[_0x5ce1('0x25')](handleEntityNotFound(_0x16b18b,null))['then'](saveUpdates(_0x45ed5b[_0x5ce1('0x44')],null))[_0x5ce1('0x25')](respondWithResult(_0x16b18b,null))[_0x5ce1('0x3e')](handleError(_0x16b18b,null));};exports['destroy']=function(_0x405b7c,_0x551952){return db[_0x5ce1('0x3c')]['find']({'where':{'id':_0x405b7c['params']['id']}})[_0x5ce1('0x25')](handleEntityNotFound(_0x551952,null))[_0x5ce1('0x25')](removeEntity(_0x551952,null))['catch'](handleError(_0x551952,null));};exports[_0x5ce1('0x4b')]=function(_0x8987d9,_0x264517,_0x5b8e9f){var _0x4476ac;return db[_0x5ce1('0x3c')][_0x5ce1('0x42')]({'where':{'id':_0x8987d9[_0x5ce1('0x3f')]['id']},'attributes':['id',_0x5ce1('0x4c')]})[_0x5ce1('0x25')](handleEntityNotFound(_0x264517,null))[_0x5ce1('0x25')](function(_0x305711){if(_0x305711){var _0x43fd4f=require(_0x5ce1('0x4d'))();_0x43fd4f[_0x5ce1('0x4e')](_0x305711[_0x5ce1('0x4c')]);_0x43fd4f[_0x5ce1('0x4f')]();return _0x305711;}})['then'](respondWithResult(_0x264517,null))[_0x5ce1('0x3e')](handleError(_0x264517,null));};
\ No newline at end of file
+var _0x95a8=['crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','openSync','dsn','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash'];(function(_0x56bcff,_0x158e5f){var _0x340351=function(_0x3b7729){while(--_0x3b7729){_0x56bcff['push'](_0x56bcff['shift']());}};_0x340351(++_0x158e5f);}(_0x95a8,0xff));var _0x895a=function(_0x264341,_0x30f134){_0x264341=_0x264341-0x0;var _0x5c6408=_0x95a8[_0x264341];return _0x5c6408;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x895a('0x0'));var zipdir=require(_0x895a('0x1'));var jsonpatch=require(_0x895a('0x2'));var rp=require(_0x895a('0x3'));var moment=require(_0x895a('0x4'));var BPromise=require(_0x895a('0x5'));var Mustache=require(_0x895a('0x6'));var util=require(_0x895a('0x7'));var path=require(_0x895a('0x8'));var sox=require(_0x895a('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x895a('0xa'));var _=require(_0x895a('0xb'));var squel=require('squel');var crypto=require(_0x895a('0xc'));var jsforce=require(_0x895a('0xd'));var deskjs=require(_0x895a('0xe'));var toCsv=require(_0x895a('0xf'));var querystring=require(_0x895a('0x10'));var Papa=require(_0x895a('0x11'));var Redis=require(_0x895a('0x12'));var authService=require(_0x895a('0x13'));var qs=require(_0x895a('0x14'));var as=require(_0x895a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x895a('0x16'));var utils=require('../../config/utils');var config=require(_0x895a('0x17'));var licenseUtil=require(_0x895a('0x18'));var db=require(_0x895a('0x19'))['db'];function respondWithStatusCode(_0x357d65,_0x540260){_0x540260=_0x540260||0xcc;return function(_0x44b399){if(_0x44b399){return _0x357d65[_0x895a('0x1a')](_0x540260);}return _0x357d65[_0x895a('0x1b')](_0x540260)[_0x895a('0x1c')]();};}function respondWithResult(_0x69b04f,_0x5e5310){_0x5e5310=_0x5e5310||0xc8;return function(_0x36bddf){if(_0x36bddf){return _0x69b04f[_0x895a('0x1b')](_0x5e5310)[_0x895a('0x1d')](_0x36bddf);}};}function respondWithFilteredResult(_0x18ac37,_0x31669e){return function(_0x33d4ee){if(_0x33d4ee){var _0x1b1081=typeof _0x31669e[_0x895a('0x1e')]===_0x895a('0x1f')&&typeof _0x31669e[_0x895a('0x20')]===_0x895a('0x1f');var _0x2fcbb8=_0x33d4ee['count'];var _0xe3831=_0x1b1081?0x0:_0x31669e['offset'];var _0x454533=_0x1b1081?_0x33d4ee['count']:_0x31669e[_0x895a('0x1e')]+_0x31669e[_0x895a('0x20')];var _0xbe570c;if(_0x454533>=_0x2fcbb8){_0x454533=_0x2fcbb8;_0xbe570c=0xc8;}else{_0xbe570c=0xce;}_0x18ac37[_0x895a('0x1b')](_0xbe570c);return _0x18ac37[_0x895a('0x21')](_0x895a('0x22'),_0xe3831+'-'+_0x454533+'/'+_0x2fcbb8)[_0x895a('0x1d')](_0x33d4ee);}return null;};}function patchUpdates(_0x4618cb){return function(_0x58a9b4){try{jsonpatch[_0x895a('0x23')](_0x58a9b4,_0x4618cb,!![]);}catch(_0x17d068){return BPromise[_0x895a('0x24')](_0x17d068);}return _0x58a9b4['save']();};}function saveUpdates(_0x145e5a,_0x245696){return function(_0x53f519){if(_0x53f519){return _0x53f519[_0x895a('0x25')](_0x145e5a)[_0x895a('0x26')](function(_0xbdc464){return _0xbdc464;});}return null;};}function removeEntity(_0x4e4c77,_0x58b339){return function(_0x59b880){if(_0x59b880){return _0x59b880[_0x895a('0x27')]()[_0x895a('0x26')](function(){var _0x1f7bca=_0x59b880[_0x895a('0x28')]({'plain':!![]});var _0x128e02='ODBC';return db[_0x895a('0x29')][_0x895a('0x27')]({'where':{'type':_0x128e02,'resourceId':_0x1f7bca['id']}})['then'](function(){return _0x59b880;});})['then'](function(){_0x4e4c77['status'](0xcc)[_0x895a('0x1c')]();});}};}function handleEntityNotFound(_0x5be467,_0x71e069){return function(_0x195d21){if(!_0x195d21){_0x5be467[_0x895a('0x1a')](0x194);}return _0x195d21;};}function handleError(_0x212d4d,_0x4f6ec7){_0x4f6ec7=_0x4f6ec7||0x1f4;return function(_0x3e2efb){logger['error'](_0x3e2efb[_0x895a('0x2a')]);if(_0x3e2efb[_0x895a('0x2b')]){delete _0x3e2efb['name'];}_0x212d4d[_0x895a('0x1b')](_0x4f6ec7)[_0x895a('0x2c')](_0x3e2efb);};}exports[_0x895a('0x2d')]=function(_0x483897,_0x3e5bdf){var _0x18a52c={},_0x4b4a3f={},_0x45a75f={'count':0x0,'rows':[]};var _0x4a1ac1=_[_0x895a('0x2e')](db[_0x895a('0x2f')][_0x895a('0x30')],function(_0x301d98){return{'name':_0x301d98[_0x895a('0x31')],'type':_0x301d98[_0x895a('0x32')][_0x895a('0x33')]};});_0x4b4a3f['model']=_['map'](_0x4a1ac1,_0x895a('0x2b'));_0x4b4a3f[_0x895a('0x34')]=_[_0x895a('0x35')](_0x483897[_0x895a('0x34')]);_0x4b4a3f[_0x895a('0x36')]=_[_0x895a('0x37')](_0x4b4a3f[_0x895a('0x38')],_0x4b4a3f[_0x895a('0x34')]);_0x18a52c[_0x895a('0x39')]=_[_0x895a('0x37')](_0x4b4a3f[_0x895a('0x38')],qs[_0x895a('0x3a')](_0x483897[_0x895a('0x34')][_0x895a('0x3a')]));_0x18a52c[_0x895a('0x39')]=_0x18a52c[_0x895a('0x39')][_0x895a('0x3b')]?_0x18a52c[_0x895a('0x39')]:_0x4b4a3f[_0x895a('0x38')];if(!_0x483897[_0x895a('0x34')][_0x895a('0x3c')](_0x895a('0x3d'))){_0x18a52c[_0x895a('0x20')]=qs['limit'](_0x483897[_0x895a('0x34')]['limit']);_0x18a52c[_0x895a('0x1e')]=qs[_0x895a('0x1e')](_0x483897['query'][_0x895a('0x1e')]);}_0x18a52c[_0x895a('0x3e')]=qs[_0x895a('0x3f')](_0x483897[_0x895a('0x34')][_0x895a('0x3f')]);_0x18a52c[_0x895a('0x40')]=qs[_0x895a('0x36')](_[_0x895a('0x41')](_0x483897['query'],_0x4b4a3f['filters']),_0x4a1ac1);if(_0x483897['query'][_0x895a('0x42')]){_0x18a52c[_0x895a('0x40')]=_[_0x895a('0x43')](_0x18a52c[_0x895a('0x40')],{'$or':_[_0x895a('0x2e')](_0x4a1ac1,function(_0x64688b){if(_0x64688b[_0x895a('0x32')]!==_0x895a('0x44')){var _0x3fe51d={};_0x3fe51d[_0x64688b[_0x895a('0x2b')]]={'$like':'%'+_0x483897['query'][_0x895a('0x42')]+'%'};return _0x3fe51d;}})});}_0x18a52c=_[_0x895a('0x43')]({},_0x18a52c,_0x483897[_0x895a('0x45')]);var _0x59e37d={'where':_0x18a52c['where']};return db[_0x895a('0x2f')]['count'](_0x59e37d)['then'](function(_0x2096a8){_0x45a75f[_0x895a('0x46')]=_0x2096a8;if(_0x483897['query'][_0x895a('0x47')]){_0x18a52c[_0x895a('0x48')]=[{'all':!![]}];}return db['SquareOdbc'][_0x895a('0x49')](_0x18a52c);})[_0x895a('0x26')](function(_0x430665){_0x45a75f['rows']=_0x430665;return _0x45a75f;})['then'](respondWithFilteredResult(_0x3e5bdf,_0x18a52c))[_0x895a('0x4a')](handleError(_0x3e5bdf,null));};exports['show']=function(_0x5c76d1,_0x355539){var _0x18293f={'raw':!![],'where':{'id':_0x5c76d1[_0x895a('0x4b')]['id']}},_0x1f0e25={};_0x1f0e25[_0x895a('0x38')]=_[_0x895a('0x35')](db['SquareOdbc']['rawAttributes']);_0x1f0e25['query']=_[_0x895a('0x35')](_0x5c76d1[_0x895a('0x34')]);_0x1f0e25['filters']=_['intersection'](_0x1f0e25[_0x895a('0x38')],_0x1f0e25['query']);_0x18293f['attributes']=_[_0x895a('0x37')](_0x1f0e25[_0x895a('0x38')],qs[_0x895a('0x3a')](_0x5c76d1[_0x895a('0x34')][_0x895a('0x3a')]));_0x18293f[_0x895a('0x39')]=_0x18293f[_0x895a('0x39')]['length']?_0x18293f[_0x895a('0x39')]:_0x1f0e25[_0x895a('0x38')];if(_0x5c76d1['query']['includeAll']){_0x18293f['include']=[{'all':!![]}];}_0x18293f=_[_0x895a('0x43')]({},_0x18293f,_0x5c76d1[_0x895a('0x45')]);return db[_0x895a('0x2f')][_0x895a('0x4c')](_0x18293f)[_0x895a('0x26')](handleEntityNotFound(_0x355539,null))[_0x895a('0x26')](respondWithResult(_0x355539,null))[_0x895a('0x4a')](handleError(_0x355539,null));};exports[_0x895a('0x4d')]=function(_0x1fe317,_0x3ac5cb){return db[_0x895a('0x2f')][_0x895a('0x4d')](_0x1fe317[_0x895a('0x4e')],{})[_0x895a('0x26')](function(_0x1639e2){var _0x5d08ce=_0x1fe317[_0x895a('0x4f')][_0x895a('0x28')]({'plain':!![]});if(!_0x5d08ce)throw new Error(_0x895a('0x50'));if(_0x5d08ce[_0x895a('0x51')]==='user'){var _0xafc6c8=_0x1639e2['get']({'plain':!![]});var _0x9c0bb9=_0x895a('0x52');return db[_0x895a('0x53')]['find']({'where':{'name':_0x9c0bb9,'userProfileId':_0x5d08ce[_0x895a('0x54')]},'raw':!![]})[_0x895a('0x26')](function(_0x5b4a55){if(_0x5b4a55&&_0x5b4a55['autoAssociation']===0x0){return db['UserProfileResource'][_0x895a('0x4d')]({'name':_0xafc6c8[_0x895a('0x2b')],'resourceId':_0xafc6c8['id'],'type':_0x5b4a55[_0x895a('0x2b')],'sectionId':_0x5b4a55['id']},{})[_0x895a('0x26')](function(){return _0x1639e2;});}else{return _0x1639e2;}})[_0x895a('0x4a')](function(_0x66b743){logger['error'](_0x895a('0x55'),_0x66b743);throw _0x66b743;});}return _0x1639e2;})[_0x895a('0x26')](respondWithResult(_0x3ac5cb,0xc9))[_0x895a('0x4a')](handleError(_0x3ac5cb,null));};exports['update']=function(_0x29b72c,_0x4b6afd){if(_0x29b72c[_0x895a('0x4e')]['id']){delete _0x29b72c[_0x895a('0x4e')]['id'];}return db['SquareOdbc'][_0x895a('0x4c')]({'where':{'id':_0x29b72c[_0x895a('0x4b')]['id']}})[_0x895a('0x26')](handleEntityNotFound(_0x4b6afd,null))[_0x895a('0x26')](saveUpdates(_0x29b72c[_0x895a('0x4e')],null))['then'](respondWithResult(_0x4b6afd,null))[_0x895a('0x4a')](handleError(_0x4b6afd,null));};exports[_0x895a('0x27')]=function(_0x2ad129,_0x588f06){return db[_0x895a('0x2f')][_0x895a('0x4c')]({'where':{'id':_0x2ad129['params']['id']}})[_0x895a('0x26')](handleEntityNotFound(_0x588f06,null))[_0x895a('0x26')](removeEntity(_0x588f06,null))['catch'](handleError(_0x588f06,null));};exports[_0x895a('0x56')]=function(_0x1e6b42,_0x4d4c3d,_0x5d0292){var _0x3edbb9;return db[_0x895a('0x2f')]['find']({'where':{'id':_0x1e6b42[_0x895a('0x4b')]['id']},'attributes':['id','dsn']})['then'](handleEntityNotFound(_0x4d4c3d,null))[_0x895a('0x26')](function(_0x564458){if(_0x564458){var _0x5eae2c=require('odbc')();_0x5eae2c[_0x895a('0x57')](_0x564458[_0x895a('0x58')]);_0x5eae2c['closeSync']();return _0x564458;}})['then'](respondWithResult(_0x4d4c3d,null))[_0x895a('0x4a')](handleError(_0x4d4c3d,null));};
\ No newline at end of file
index 48a3307..b48b078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee04=['path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x22825d,_0x2b9531){var _0x281949=function(_0xbf2074){while(--_0xbf2074){_0x22825d['push'](_0x22825d['shift']());}};_0x281949(++_0x2b9531);}(_0xee04,0xad));var _0x4ee0=function(_0x56cc5f,_0x4005b0){_0x56cc5f=_0x56cc5f-0x0;var _0x3e980d=_0xee04[_0x56cc5f];return _0x3e980d;};'use strict';var _=require(_0x4ee0('0x0'));var util=require(_0x4ee0('0x1'));var logger=require(_0x4ee0('0x2'))(_0x4ee0('0x3'));var moment=require(_0x4ee0('0x4'));var BPromise=require(_0x4ee0('0x5'));var rp=require(_0x4ee0('0x6'));var fs=require('fs');var path=require(_0x4ee0('0x7'));var rimraf=require(_0x4ee0('0x8'));var config=require(_0x4ee0('0x9'));var attributes=require(_0x4ee0('0xa'));module[_0x4ee0('0xb')]=function(_0x2f0b26,_0x1cf2c8){return _0x2f0b26[_0x4ee0('0xc')](_0x4ee0('0xd'),attributes,{'tableName':_0x4ee0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1fe1=['exports','SquareOdbc','square_odbc','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./squareOdbc.attributes'];(function(_0x94d44b,_0x40b0a2){var _0x578ac2=function(_0x41f61c){while(--_0x41f61c){_0x94d44b['push'](_0x94d44b['shift']());}};_0x578ac2(++_0x40b0a2);}(_0x1fe1,0xdf));var _0x11fe=function(_0x1fb188,_0x9f079b){_0x1fb188=_0x1fb188-0x0;var _0x32cb64=_0x1fe1[_0x1fb188];return _0x32cb64;};'use strict';var _=require(_0x11fe('0x0'));var util=require(_0x11fe('0x1'));var logger=require(_0x11fe('0x2'))(_0x11fe('0x3'));var moment=require(_0x11fe('0x4'));var BPromise=require(_0x11fe('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x11fe('0x6'));var config=require('../../config/environment');var attributes=require(_0x11fe('0x7'));module[_0x11fe('0x8')]=function(_0x1f21e6,_0xc75479){return _0x1f21e6['define'](_0x11fe('0x9'),attributes,{'tableName':_0x11fe('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1747afa..1cf033b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7163=['../../config/environment','jayson/promise','client','request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','SquareOdbc','find','options','where','attributes','map','include','model','ShowSquareOdbc','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x7163,0x10e));var _0x3716=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x7163[_0x946518];return _0x909b69;};'use strict';var _=require(_0x3716('0x0'));var util=require(_0x3716('0x1'));var moment=require(_0x3716('0x2'));var BPromise=require(_0x3716('0x3'));var rs=require(_0x3716('0x4'));var fs=require('fs');var Redis=require(_0x3716('0x5'));var db=require(_0x3716('0x6'))['db'];var utils=require(_0x3716('0x7'));var logger=require(_0x3716('0x8'))(_0x3716('0x9'));var config=require(_0x3716('0xa'));var jayson=require(_0x3716('0xb'));var client=jayson[_0x3716('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x121ef6,_0xf4e5df,_0x4de5c1){return new BPromise(function(_0xec944,_0x74b58){return client[_0x3716('0xd')](_0x121ef6,_0x4de5c1)[_0x3716('0xe')](function(_0x4128ae){logger[_0x3716('0xf')](_0x3716('0x10'),_0xf4e5df,'request\x20sent');logger[_0x3716('0x11')](_0x3716('0x12'),_0xf4e5df,_0x3716('0x13'),JSON['stringify'](_0x4128ae));if(_0x4128ae[_0x3716('0x14')]){if(_0x4128ae[_0x3716('0x14')][_0x3716('0x15')]===0x1f4){logger[_0x3716('0x14')]('SquareOdbc,\x20%s,\x20%s',_0xf4e5df,_0x4128ae[_0x3716('0x14')][_0x3716('0x16')]);return _0x74b58(_0x4128ae[_0x3716('0x14')]['message']);}logger['error'](_0x3716('0x10'),_0xf4e5df,_0x4128ae[_0x3716('0x14')][_0x3716('0x16')]);return _0xec944(_0x4128ae['error'][_0x3716('0x16')]);}else{logger['info'](_0x3716('0x10'),_0xf4e5df,_0x3716('0x13'));_0xec944(_0x4128ae[_0x3716('0x17')][_0x3716('0x16')]);}})['catch'](function(_0x54a183){logger['error'](_0x3716('0x10'),_0xf4e5df,_0x54a183);_0x74b58(_0x54a183);});});}exports['ShowSquareOdbc']=function(_0x47b0c1){var _0x5226cc=this;return new Promise(function(_0x1febbe,_0x5f0cf5){return db[_0x3716('0x18')][_0x3716('0x19')]({'raw':_0x47b0c1[_0x3716('0x1a')]?_0x47b0c1['options']['raw']===undefined?!![]:![]:!![],'where':_0x47b0c1[_0x3716('0x1a')]?_0x47b0c1['options'][_0x3716('0x1b')]||null:null,'attributes':_0x47b0c1[_0x3716('0x1a')]?_0x47b0c1[_0x3716('0x1a')][_0x3716('0x1c')]||null:null,'include':_0x47b0c1[_0x3716('0x1a')]?_0x47b0c1['options']['include']?_[_0x3716('0x1d')](_0x47b0c1['options'][_0x3716('0x1e')],function(_0x47636f){return{'model':db[_0x47636f[_0x3716('0x1f')]],'as':_0x47636f['as'],'attributes':_0x47636f[_0x3716('0x1c')],'include':_0x47636f['include']?_[_0x3716('0x1d')](_0x47636f[_0x3716('0x1e')],function(_0x535a56){return{'model':db[_0x535a56[_0x3716('0x1f')]],'as':_0x535a56['as'],'attributes':_0x535a56[_0x3716('0x1c')],'include':_0x535a56['include']?_[_0x3716('0x1d')](_0x535a56[_0x3716('0x1e')],function(_0x2763b9){return{'model':db[_0x2763b9[_0x3716('0x1f')]],'as':_0x2763b9['as'],'attributes':_0x2763b9[_0x3716('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3716('0xe')](function(_0x287d49){logger[_0x3716('0xf')](_0x3716('0x20'),_0x47b0c1);logger[_0x3716('0x11')]('ShowSquareOdbc',_0x47b0c1,JSON[_0x3716('0x21')](_0x287d49));_0x1febbe(_0x287d49);})[_0x3716('0x22')](function(_0x1d2328){logger[_0x3716('0x14')]('ShowSquareOdbc',_0x1d2328[_0x3716('0x16')],_0x47b0c1);_0x5f0cf5(_0x5226cc[_0x3716('0x14')](0x1f4,_0x1d2328[_0x3716('0x16')]));});});};
\ No newline at end of file
+var _0x26ca=['where','attributes','map','include','model','stringify','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','ShowSquareOdbc','find','options'];(function(_0x44dfce,_0x21bba4){var _0x20c4f5=function(_0x4ad148){while(--_0x4ad148){_0x44dfce['push'](_0x44dfce['shift']());}};_0x20c4f5(++_0x21bba4);}(_0x26ca,0x1d8));var _0xa26c=function(_0xfbdff6,_0x2af690){_0xfbdff6=_0xfbdff6-0x0;var _0x4cb9be=_0x26ca[_0xfbdff6];return _0x4cb9be;};'use strict';var _=require(_0xa26c('0x0'));var util=require(_0xa26c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa26c('0x2'));var fs=require('fs');var Redis=require(_0xa26c('0x3'));var db=require(_0xa26c('0x4'))['db'];var utils=require(_0xa26c('0x5'));var logger=require(_0xa26c('0x6'))(_0xa26c('0x7'));var config=require(_0xa26c('0x8'));var jayson=require(_0xa26c('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a55d1,_0x57854f,_0x4356f1){return new BPromise(function(_0x1f2707,_0x1265fa){return client[_0xa26c('0xa')](_0x3a55d1,_0x4356f1)[_0xa26c('0xb')](function(_0x53b2f1){logger[_0xa26c('0xc')](_0xa26c('0xd'),_0x57854f,'request\x20sent');logger[_0xa26c('0xe')](_0xa26c('0xf'),_0x57854f,_0xa26c('0x10'),JSON['stringify'](_0x53b2f1));if(_0x53b2f1[_0xa26c('0x11')]){if(_0x53b2f1[_0xa26c('0x11')][_0xa26c('0x12')]===0x1f4){logger['error'](_0xa26c('0xd'),_0x57854f,_0x53b2f1[_0xa26c('0x11')]['message']);return _0x1265fa(_0x53b2f1[_0xa26c('0x11')][_0xa26c('0x13')]);}logger[_0xa26c('0x11')](_0xa26c('0xd'),_0x57854f,_0x53b2f1[_0xa26c('0x11')][_0xa26c('0x13')]);return _0x1f2707(_0x53b2f1['error'][_0xa26c('0x13')]);}else{logger['info'](_0xa26c('0xd'),_0x57854f,_0xa26c('0x10'));_0x1f2707(_0x53b2f1[_0xa26c('0x14')]['message']);}})['catch'](function(_0x2ae255){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x57854f,_0x2ae255);_0x1265fa(_0x2ae255);});});}exports[_0xa26c('0x15')]=function(_0x4a4f55){var _0x102bf2=this;return new Promise(function(_0x35f457,_0x5d6b62){return db['SquareOdbc'][_0xa26c('0x16')]({'raw':_0x4a4f55['options']?_0x4a4f55[_0xa26c('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x4a4f55['options']?_0x4a4f55[_0xa26c('0x17')][_0xa26c('0x18')]||null:null,'attributes':_0x4a4f55[_0xa26c('0x17')]?_0x4a4f55[_0xa26c('0x17')][_0xa26c('0x19')]||null:null,'include':_0x4a4f55['options']?_0x4a4f55[_0xa26c('0x17')]['include']?_[_0xa26c('0x1a')](_0x4a4f55['options'][_0xa26c('0x1b')],function(_0x5adefa){return{'model':db[_0x5adefa[_0xa26c('0x1c')]],'as':_0x5adefa['as'],'attributes':_0x5adefa[_0xa26c('0x19')],'include':_0x5adefa[_0xa26c('0x1b')]?_[_0xa26c('0x1a')](_0x5adefa[_0xa26c('0x1b')],function(_0x10a3a5){return{'model':db[_0x10a3a5[_0xa26c('0x1c')]],'as':_0x10a3a5['as'],'attributes':_0x10a3a5[_0xa26c('0x19')],'include':_0x10a3a5[_0xa26c('0x1b')]?_[_0xa26c('0x1a')](_0x10a3a5[_0xa26c('0x1b')],function(_0x56e7c8){return{'model':db[_0x56e7c8[_0xa26c('0x1c')]],'as':_0x56e7c8['as'],'attributes':_0x56e7c8[_0xa26c('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1d5c08){logger[_0xa26c('0xc')](_0xa26c('0x15'),_0x4a4f55);logger[_0xa26c('0xe')](_0xa26c('0x15'),_0x4a4f55,JSON[_0xa26c('0x1d')](_0x1d5c08));_0x35f457(_0x1d5c08);})[_0xa26c('0x1e')](function(_0x444e58){logger[_0xa26c('0x11')](_0xa26c('0x15'),_0x444e58[_0xa26c('0x13')],_0x4a4f55);_0x5d6b62(_0x102bf2[_0xa26c('0x11')](0x1f4,_0x444e58[_0xa26c('0x13')]));});});};
\ No newline at end of file
index e122889..0544ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x457a=['isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','/:id'];(function(_0x529708,_0x46c068){var _0x10cf58=function(_0x4e1950){while(--_0x4e1950){_0x529708['push'](_0x529708['shift']());}};_0x10cf58(++_0x46c068);}(_0x457a,0xdb));var _0xa457=function(_0x40ab83,_0x35501e){_0x40ab83=_0x40ab83-0x0;var _0x157061=_0x457a[_0x40ab83];return _0x157061;};'use strict';var multer=require(_0xa457('0x0'));var util=require('util');var path=require(_0xa457('0x1'));var timeout=require(_0xa457('0x2'));var express=require(_0xa457('0x3'));var router=express[_0xa457('0x4')]();var fs_extra=require(_0xa457('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa457('0x6'));var config=require(_0xa457('0x7'));var controller=require(_0xa457('0x8'));router[_0xa457('0x9')]('/',auth['isAuthenticated'](),controller[_0xa457('0xa')]);router[_0xa457('0x9')](_0xa457('0xb'),auth[_0xa457('0xc')](),controller[_0xa457('0xd')]);router[_0xa457('0xe')]('/',auth[_0xa457('0xc')](),controller[_0xa457('0xf')]);router[_0xa457('0x10')](_0xa457('0xb'),auth[_0xa457('0xc')](),controller[_0xa457('0x11')]);router[_0xa457('0x12')](_0xa457('0xb'),auth[_0xa457('0xc')](),controller[_0xa457('0x13')]);module[_0xa457('0x14')]=router;
\ No newline at end of file
+var _0xfd00=['update','delete','destroy','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service','./squareProject.controller','get','isAuthenticated','index','/:id','post','create','put'];(function(_0x1b5e95,_0xb28feb){var _0x2ee2b=function(_0x1a9b12){while(--_0x1a9b12){_0x1b5e95['push'](_0x1b5e95['shift']());}};_0x2ee2b(++_0xb28feb);}(_0xfd00,0x136));var _0x0fd0=function(_0x573705,_0x46b51c){_0x573705=_0x573705-0x0;var _0x566b07=_0xfd00[_0x573705];return _0x566b07;};'use strict';var multer=require(_0x0fd0('0x0'));var util=require('util');var path=require(_0x0fd0('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0fd0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0fd0('0x3'));var interaction=require(_0x0fd0('0x4'));var config=require('../../config/environment');var controller=require(_0x0fd0('0x5'));router[_0x0fd0('0x6')]('/',auth[_0x0fd0('0x7')](),controller[_0x0fd0('0x8')]);router[_0x0fd0('0x6')](_0x0fd0('0x9'),auth[_0x0fd0('0x7')](),controller['show']);router[_0x0fd0('0xa')]('/',auth[_0x0fd0('0x7')](),controller[_0x0fd0('0xb')]);router[_0x0fd0('0xc')](_0x0fd0('0x9'),auth['isAuthenticated'](),controller[_0x0fd0('0xd')]);router[_0x0fd0('0xe')](_0x0fd0('0x9'),auth[_0x0fd0('0x7')](),controller[_0x0fd0('0xf')]);module[_0x0fd0('0x10')]=router;
\ No newline at end of file
index ee00f31..aacb493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9bf=['production','toString','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','preproduction','utf8','getDataValue'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0xd9bf,0x162));var _0xfd9b=function(_0x4d9b7d,_0x8f3caf){_0x4d9b7d=_0x4d9b7d-0x0;var _0x21cd2a=_0xd9bf[_0x4d9b7d];return _0x21cd2a;};'use strict';var Sequelize=require(_0xfd9b('0x0'));module[_0xfd9b('0x1')]={'name':{'type':Sequelize[_0xfd9b('0x2')],'unique':_0xfd9b('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0xfd9b('0x4')]},'preproduction':{'type':Sequelize[_0xfd9b('0x5')](_0xfd9b('0x6')),'get':function(){if(this['getDataValue'](_0xfd9b('0x7'))){return this['getDataValue'](_0xfd9b('0x7'))['toString'](_0xfd9b('0x8'));}}},'production':{'type':Sequelize[_0xfd9b('0x5')](_0xfd9b('0x6')),'get':function(){if(this['getDataValue']('production')){return this[_0xfd9b('0x9')](_0xfd9b('0xa'))[_0xfd9b('0xb')]('utf8');}}},'savedAt':{'type':Sequelize[_0xfd9b('0xc')]},'publishedAt':{'type':Sequelize[_0xfd9b('0xc')]}};
\ No newline at end of file
+var _0x2fb7=['DATE','exports','STRING','name','BLOB','long','getDataValue','preproduction','toString','utf8','production'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x2fb7,0x90));var _0x72fb=function(_0x4dd100,_0x2aa8a7){_0x4dd100=_0x4dd100-0x0;var _0x2de53a=_0x2fb7[_0x4dd100];return _0x2de53a;};'use strict';var Sequelize=require('sequelize');module[_0x72fb('0x0')]={'name':{'type':Sequelize[_0x72fb('0x1')],'unique':_0x72fb('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x72fb('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x72fb('0x3')](_0x72fb('0x4')),'get':function(){if(this[_0x72fb('0x5')]('preproduction')){return this[_0x72fb('0x5')](_0x72fb('0x6'))[_0x72fb('0x7')](_0x72fb('0x8'));}}},'production':{'type':Sequelize['BLOB'](_0x72fb('0x4')),'get':function(){if(this[_0x72fb('0x5')](_0x72fb('0x9'))){return this['getDataValue'](_0x72fb('0x9'))[_0x72fb('0x7')](_0x72fb('0x8'));}}},'savedAt':{'type':Sequelize[_0x72fb('0xa')]},'publishedAt':{'type':Sequelize[_0x72fb('0xa')]}};
\ No newline at end of file
index 7dc920c..c68d865 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cb=['include','catch','show','includeAll','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','error','params','publish','agi','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','status','offset','undefined','limit','set','Content-Range','json','update','then','destroy','get','SquareProjects','UserProfileResource','end','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','count'];(function(_0x3db80d,_0x3272d6){var _0x59ea91=function(_0x32320f){while(--_0x32320f){_0x3db80d['push'](_0x3db80d['shift']());}};_0x59ea91(++_0x3272d6);}(_0x47cb,0x1b7));var _0xb47c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x47cb[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb47c('0x0'));var Redis=require(_0xb47c('0x1'));var qs=require(_0xb47c('0x2'));var logger=require(_0xb47c('0x3'))(_0xb47c('0x4'));var config=require(_0xb47c('0x5'));var db=require(_0xb47c('0x6'))['db'];config[_0xb47c('0x7')]=_[_0xb47c('0x8')](config[_0xb47c('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0xb47c('0x9'))(new Redis(config[_0xb47c('0x7')]));require('./squareProject.socket')[_0xb47c('0xa')](socket);function respondWithResult(_0x59833a,_0x4e866d){_0x4e866d=_0x4e866d||0xc8;return function(_0x3abf89){if(_0x3abf89){return _0x59833a[_0xb47c('0xb')](_0x4e866d)['json'](_0x3abf89);}};}function respondWithFilteredResult(_0x2dc12f,_0x303507){return function(_0x181190){if(_0x181190){var _0x8c36bb=typeof _0x303507[_0xb47c('0xc')]===_0xb47c('0xd')&&typeof _0x303507[_0xb47c('0xe')]===_0xb47c('0xd');var _0xc6146a=_0x181190['count'];var _0x534ee8=_0x8c36bb?0x0:_0x303507[_0xb47c('0xc')];var _0x2134d7=_0x8c36bb?_0x181190['count']:_0x303507[_0xb47c('0xc')]+_0x303507[_0xb47c('0xe')];var _0x21e7a0;if(_0x2134d7>=_0xc6146a){_0x2134d7=_0xc6146a;_0x21e7a0=0xc8;}else{_0x21e7a0=0xce;}_0x2dc12f['status'](_0x21e7a0);return _0x2dc12f[_0xb47c('0xf')](_0xb47c('0x10'),_0x534ee8+'-'+_0x2134d7+'/'+_0xc6146a)[_0xb47c('0x11')](_0x181190);}return null;};}function saveUpdates(_0x49e61d){return function(_0x16f1cc){if(_0x16f1cc){return _0x16f1cc[_0xb47c('0x12')](_0x49e61d)[_0xb47c('0x13')](function(_0x5b6822){return _0x5b6822;});}return null;};}function removeEntity(_0x4b9fa9){return function(_0x12b159){if(_0x12b159){return _0x12b159[_0xb47c('0x14')]()[_0xb47c('0x13')](function(){var _0x2229f0=_0x12b159[_0xb47c('0x15')]({'plain':!![]});var _0x1e73e2=_0xb47c('0x16');return db[_0xb47c('0x17')][_0xb47c('0x14')]({'where':{'type':_0x1e73e2,'resourceId':_0x2229f0['id']}})[_0xb47c('0x13')](function(){return _0x12b159;});})[_0xb47c('0x13')](function(){var _0x34c642=new Redis(config[_0xb47c('0x7')]);_0x34c642['publish']('agi',JSON['stringify']({'id':_0x12b159['id'],'deleted':!![]}));})[_0xb47c('0x13')](function(){_0x4b9fa9[_0xb47c('0xb')](0xcc)[_0xb47c('0x18')]();});}};}function handleEntityNotFound(_0x4be93f){return function(_0x5de4ed){if(!_0x5de4ed){_0x4be93f['sendStatus'](0x194);}return _0x5de4ed;};}function handleError(_0x222120,_0x5bd9c4){_0x5bd9c4=_0x5bd9c4||0x1f4;return function(_0x363989){logger['error'](_0x363989['stack']);if(_0x363989['name']){delete _0x363989[_0xb47c('0x19')];}_0x222120[_0xb47c('0xb')](_0x5bd9c4)[_0xb47c('0x1a')](_0x363989);};}exports[_0xb47c('0x1b')]=function(_0x22d5a0,_0x2abe73){var _0x499344={},_0x40af74={},_0x5db5ce={'count':0x0,'rows':[]};var _0x4adc55=_[_0xb47c('0x1c')](db[_0xb47c('0x1d')][_0xb47c('0x1e')],function(_0x374d54){return{'name':_0x374d54[_0xb47c('0x1f')],'type':_0x374d54[_0xb47c('0x20')][_0xb47c('0x21')]};});_0x40af74[_0xb47c('0x22')]=_[_0xb47c('0x1c')](_0x4adc55,'name');_0x40af74[_0xb47c('0x23')]=_[_0xb47c('0x24')](_0x22d5a0[_0xb47c('0x23')]);_0x40af74[_0xb47c('0x25')]=_[_0xb47c('0x26')](_0x40af74[_0xb47c('0x22')],_0x40af74['query']);_0x499344[_0xb47c('0x27')]=_['intersection'](_0x40af74[_0xb47c('0x22')],qs[_0xb47c('0x28')](_0x22d5a0[_0xb47c('0x23')]['fields']));_0x499344['attributes']=_0x499344[_0xb47c('0x27')][_0xb47c('0x29')]?_0x499344[_0xb47c('0x27')]:_0x40af74[_0xb47c('0x22')];if(!_0x22d5a0[_0xb47c('0x23')]['hasOwnProperty'](_0xb47c('0x2a'))){_0x499344[_0xb47c('0xe')]=qs['limit'](_0x22d5a0[_0xb47c('0x23')][_0xb47c('0xe')]);_0x499344[_0xb47c('0xc')]=qs[_0xb47c('0xc')](_0x22d5a0[_0xb47c('0x23')][_0xb47c('0xc')]);}_0x499344[_0xb47c('0x2b')]=qs[_0xb47c('0x2c')](_0x22d5a0[_0xb47c('0x23')][_0xb47c('0x2c')]);_0x499344['where']=qs[_0xb47c('0x25')](_[_0xb47c('0x2d')](_0x22d5a0[_0xb47c('0x23')],_0x40af74[_0xb47c('0x25')]),_0x4adc55);if(_0x22d5a0[_0xb47c('0x23')][_0xb47c('0x2e')]){_0x499344['where']=_[_0xb47c('0x2f')](_0x499344[_0xb47c('0x30')],{'$or':_[_0xb47c('0x1c')](_0x4adc55,function(_0x5a7485){if(_0x5a7485[_0xb47c('0x20')]!==_0xb47c('0x31')){var _0x5cde17={};_0x5cde17[_0x5a7485['name']]={'$like':'%'+_0x22d5a0[_0xb47c('0x23')][_0xb47c('0x2e')]+'%'};return _0x5cde17;}})});}_0x499344=_[_0xb47c('0x2f')]({},_0x499344,_0x22d5a0['options']);var _0x47a6f={'where':_0x499344[_0xb47c('0x30')]};return db['SquareProject'][_0xb47c('0x32')](_0x47a6f)['then'](function(_0x4304d6){_0x5db5ce[_0xb47c('0x32')]=_0x4304d6;if(_0x22d5a0[_0xb47c('0x23')]['includeAll']){_0x499344[_0xb47c('0x33')]=[{'all':!![]}];}return db[_0xb47c('0x1d')]['findAll'](_0x499344);})['then'](function(_0x57d55f){_0x5db5ce['rows']=_0x57d55f;return _0x5db5ce;})[_0xb47c('0x13')](respondWithFilteredResult(_0x2abe73,_0x499344))[_0xb47c('0x34')](handleError(_0x2abe73,null));};exports[_0xb47c('0x35')]=function(_0x1c89c9,_0x55d6d0){var _0x16e9d2={'raw':![],'where':{'id':_0x1c89c9['params']['id']}},_0x5371d3={};_0x5371d3[_0xb47c('0x22')]=_[_0xb47c('0x24')](db[_0xb47c('0x1d')][_0xb47c('0x1e')]);_0x5371d3[_0xb47c('0x23')]=_['keys'](_0x1c89c9['query']);_0x5371d3['filters']=_[_0xb47c('0x26')](_0x5371d3[_0xb47c('0x22')],_0x5371d3['query']);_0x16e9d2['attributes']=_[_0xb47c('0x26')](_0x5371d3[_0xb47c('0x22')],qs[_0xb47c('0x28')](_0x1c89c9[_0xb47c('0x23')][_0xb47c('0x28')]));_0x16e9d2[_0xb47c('0x27')]=_0x16e9d2[_0xb47c('0x27')][_0xb47c('0x29')]?_0x16e9d2[_0xb47c('0x27')]:_0x5371d3[_0xb47c('0x22')];if(_0x1c89c9[_0xb47c('0x23')][_0xb47c('0x36')]){_0x16e9d2[_0xb47c('0x33')]=[{'all':!![]}];}_0x16e9d2=_[_0xb47c('0x2f')]({},_0x16e9d2,_0x1c89c9[_0xb47c('0x37')]);return db['SquareProject']['find'](_0x16e9d2)[_0xb47c('0x13')](handleEntityNotFound(_0x55d6d0,null))[_0xb47c('0x13')](respondWithResult(_0x55d6d0,null))['catch'](handleError(_0x55d6d0,null));};exports[_0xb47c('0x38')]=function(_0x299e0d,_0x2644a4){return db[_0xb47c('0x1d')][_0xb47c('0x38')](_0x299e0d[_0xb47c('0x39')],{})[_0xb47c('0x13')](function(_0x33706f){var _0x427f58=_0x299e0d['user'][_0xb47c('0x15')]({'plain':!![]});if(!_0x427f58)throw new Error(_0xb47c('0x3a'));if(_0x427f58[_0xb47c('0x3b')]===_0xb47c('0x3c')){var _0x21a4cd=_0x33706f['get']({'plain':!![]});var _0x43dc27=_0xb47c('0x16');return db[_0xb47c('0x3d')][_0xb47c('0x3e')]({'where':{'name':_0x43dc27,'userProfileId':_0x427f58[_0xb47c('0x3f')]},'raw':!![]})[_0xb47c('0x13')](function(_0x3af965){if(_0x3af965&&_0x3af965[_0xb47c('0x40')]===0x0){return db[_0xb47c('0x17')][_0xb47c('0x38')]({'name':_0x21a4cd[_0xb47c('0x19')],'resourceId':_0x21a4cd['id'],'type':_0x3af965[_0xb47c('0x19')],'sectionId':_0x3af965['id']},{})[_0xb47c('0x13')](function(){return _0x33706f;});}else{return _0x33706f;}})[_0xb47c('0x34')](function(_0x28b7fe){logger[_0xb47c('0x41')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x28b7fe);throw _0x28b7fe;});}return _0x33706f;})[_0xb47c('0x13')](respondWithResult(_0x2644a4,0xc9))['catch'](handleError(_0x2644a4,null));};exports['update']=function(_0x495202,_0x3fca79){if(_0x495202['body']['id']){delete _0x495202[_0xb47c('0x39')]['id'];}return db[_0xb47c('0x1d')][_0xb47c('0x3e')]({'where':{'id':_0x495202[_0xb47c('0x42')]['id']}})[_0xb47c('0x13')](handleEntityNotFound(_0x3fca79,null))[_0xb47c('0x13')](saveUpdates(_0x495202[_0xb47c('0x39')],null))['then'](function(_0x4cebc1){if(!_0x4cebc1)return;var _0x230841=_0x4cebc1[_0xb47c('0x15')]({'plain':!![]});return _0x230841;})[_0xb47c('0x13')](function(_0x38b3a7){var _0x2c7464=new Redis(config[_0xb47c('0x7')]);_0x2c7464[_0xb47c('0x43')](_0xb47c('0x44'),JSON['stringify'](_[_0xb47c('0x2d')](_0x38b3a7,['id',_0xb47c('0x19'),_0xb47c('0x45')])));return _0x38b3a7;})[_0xb47c('0x13')](respondWithResult(_0x3fca79,null))['catch'](handleError(_0x3fca79,null));};exports[_0xb47c('0x14')]=function(_0x4e045a,_0x40a8ed){return db[_0xb47c('0x1d')][_0xb47c('0x3e')]({'where':{'id':_0x4e045a[_0xb47c('0x42')]['id']}})[_0xb47c('0x13')](handleEntityNotFound(_0x40a8ed,null))[_0xb47c('0x13')](removeEntity(_0x40a8ed,null))[_0xb47c('0x34')](handleError(_0x40a8ed,null));};
\ No newline at end of file
+var _0xd7f6=['rows','catch','rawAttributes','includeAll','options','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','publish','production','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./squareProject.socket','json','undefined','limit','count','offset','status','Content-Range','update','then','destroy','get','SquareProjects','UserProfileResource','agi','stringify','end','sendStatus','error','name','send','index','map','SquareProject','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','findAll'];(function(_0x1b196,_0x1dd81c){var _0x264ed0=function(_0x1e6706){while(--_0x1e6706){_0x1b196['push'](_0x1b196['shift']());}};_0x264ed0(++_0x1dd81c);}(_0xd7f6,0x1e5));var _0x6d7f=function(_0x54fc28,_0x2f4708){_0x54fc28=_0x54fc28-0x0;var _0x3227c8=_0xd7f6[_0x54fc28];return _0x3227c8;};'use strict';var _=require(_0x6d7f('0x0'));var Redis=require(_0x6d7f('0x1'));var qs=require(_0x6d7f('0x2'));var logger=require(_0x6d7f('0x3'))(_0x6d7f('0x4'));var config=require(_0x6d7f('0x5'));var db=require(_0x6d7f('0x6'))['db'];config[_0x6d7f('0x7')]=_[_0x6d7f('0x8')](config['redis'],{'host':_0x6d7f('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d7f('0x7')]));require(_0x6d7f('0xa'))['register'](socket);function respondWithResult(_0x31014a,_0x1d507c){_0x1d507c=_0x1d507c||0xc8;return function(_0x482370){if(_0x482370){return _0x31014a['status'](_0x1d507c)[_0x6d7f('0xb')](_0x482370);}};}function respondWithFilteredResult(_0x33c101,_0x124181){return function(_0x1a42e0){if(_0x1a42e0){var _0x16acbb=typeof _0x124181['offset']===_0x6d7f('0xc')&&typeof _0x124181[_0x6d7f('0xd')]==='undefined';var _0x4d66c2=_0x1a42e0[_0x6d7f('0xe')];var _0x4f4857=_0x16acbb?0x0:_0x124181[_0x6d7f('0xf')];var _0x4083fe=_0x16acbb?_0x1a42e0[_0x6d7f('0xe')]:_0x124181[_0x6d7f('0xf')]+_0x124181['limit'];var _0x2e7b67;if(_0x4083fe>=_0x4d66c2){_0x4083fe=_0x4d66c2;_0x2e7b67=0xc8;}else{_0x2e7b67=0xce;}_0x33c101[_0x6d7f('0x10')](_0x2e7b67);return _0x33c101['set'](_0x6d7f('0x11'),_0x4f4857+'-'+_0x4083fe+'/'+_0x4d66c2)[_0x6d7f('0xb')](_0x1a42e0);}return null;};}function saveUpdates(_0x31400f){return function(_0x420196){if(_0x420196){return _0x420196[_0x6d7f('0x12')](_0x31400f)[_0x6d7f('0x13')](function(_0x348eee){return _0x348eee;});}return null;};}function removeEntity(_0x3e2c5b){return function(_0x544805){if(_0x544805){return _0x544805[_0x6d7f('0x14')]()[_0x6d7f('0x13')](function(){var _0x36f687=_0x544805[_0x6d7f('0x15')]({'plain':!![]});var _0x3a7cc6=_0x6d7f('0x16');return db[_0x6d7f('0x17')][_0x6d7f('0x14')]({'where':{'type':_0x3a7cc6,'resourceId':_0x36f687['id']}})['then'](function(){return _0x544805;});})[_0x6d7f('0x13')](function(){var _0x11f9a6=new Redis(config[_0x6d7f('0x7')]);_0x11f9a6['publish'](_0x6d7f('0x18'),JSON[_0x6d7f('0x19')]({'id':_0x544805['id'],'deleted':!![]}));})[_0x6d7f('0x13')](function(){_0x3e2c5b[_0x6d7f('0x10')](0xcc)[_0x6d7f('0x1a')]();});}};}function handleEntityNotFound(_0x3c9433){return function(_0x15001b){if(!_0x15001b){_0x3c9433[_0x6d7f('0x1b')](0x194);}return _0x15001b;};}function handleError(_0x2dbfec,_0x136dce){_0x136dce=_0x136dce||0x1f4;return function(_0x4f9d8e){logger[_0x6d7f('0x1c')](_0x4f9d8e['stack']);if(_0x4f9d8e[_0x6d7f('0x1d')]){delete _0x4f9d8e['name'];}_0x2dbfec[_0x6d7f('0x10')](_0x136dce)[_0x6d7f('0x1e')](_0x4f9d8e);};}exports[_0x6d7f('0x1f')]=function(_0x554537,_0x267e16){var _0x5f4b41={},_0x43143f={},_0x5e4537={'count':0x0,'rows':[]};var _0x5a45f7=_[_0x6d7f('0x20')](db[_0x6d7f('0x21')]['rawAttributes'],function(_0xd6da44){return{'name':_0xd6da44[_0x6d7f('0x22')],'type':_0xd6da44['type'][_0x6d7f('0x23')]};});_0x43143f[_0x6d7f('0x24')]=_[_0x6d7f('0x20')](_0x5a45f7,'name');_0x43143f[_0x6d7f('0x25')]=_[_0x6d7f('0x26')](_0x554537[_0x6d7f('0x25')]);_0x43143f[_0x6d7f('0x27')]=_[_0x6d7f('0x28')](_0x43143f[_0x6d7f('0x24')],_0x43143f['query']);_0x5f4b41[_0x6d7f('0x29')]=_[_0x6d7f('0x28')](_0x43143f[_0x6d7f('0x24')],qs['fields'](_0x554537['query']['fields']));_0x5f4b41[_0x6d7f('0x29')]=_0x5f4b41[_0x6d7f('0x29')][_0x6d7f('0x2a')]?_0x5f4b41[_0x6d7f('0x29')]:_0x43143f[_0x6d7f('0x24')];if(!_0x554537[_0x6d7f('0x25')][_0x6d7f('0x2b')](_0x6d7f('0x2c'))){_0x5f4b41[_0x6d7f('0xd')]=qs['limit'](_0x554537[_0x6d7f('0x25')]['limit']);_0x5f4b41['offset']=qs[_0x6d7f('0xf')](_0x554537['query'][_0x6d7f('0xf')]);}_0x5f4b41['order']=qs[_0x6d7f('0x2d')](_0x554537[_0x6d7f('0x25')][_0x6d7f('0x2d')]);_0x5f4b41[_0x6d7f('0x2e')]=qs[_0x6d7f('0x27')](_[_0x6d7f('0x2f')](_0x554537[_0x6d7f('0x25')],_0x43143f[_0x6d7f('0x27')]),_0x5a45f7);if(_0x554537['query']['filter']){_0x5f4b41[_0x6d7f('0x2e')]=_[_0x6d7f('0x30')](_0x5f4b41['where'],{'$or':_[_0x6d7f('0x20')](_0x5a45f7,function(_0x481899){if(_0x481899[_0x6d7f('0x31')]!=='VIRTUAL'){var _0x2426b4={};_0x2426b4[_0x481899[_0x6d7f('0x1d')]]={'$like':'%'+_0x554537[_0x6d7f('0x25')]['filter']+'%'};return _0x2426b4;}})});}_0x5f4b41=_['merge']({},_0x5f4b41,_0x554537['options']);var _0x3f2756={'where':_0x5f4b41[_0x6d7f('0x2e')]};return db['SquareProject']['count'](_0x3f2756)[_0x6d7f('0x13')](function(_0x4f007e){_0x5e4537[_0x6d7f('0xe')]=_0x4f007e;if(_0x554537[_0x6d7f('0x25')]['includeAll']){_0x5f4b41['include']=[{'all':!![]}];}return db[_0x6d7f('0x21')][_0x6d7f('0x32')](_0x5f4b41);})[_0x6d7f('0x13')](function(_0x76369){_0x5e4537[_0x6d7f('0x33')]=_0x76369;return _0x5e4537;})[_0x6d7f('0x13')](respondWithFilteredResult(_0x267e16,_0x5f4b41))[_0x6d7f('0x34')](handleError(_0x267e16,null));};exports['show']=function(_0x2cf5be,_0x3b9ce1){var _0x138ae7={'raw':![],'where':{'id':_0x2cf5be['params']['id']}},_0x173ac6={};_0x173ac6['model']=_[_0x6d7f('0x26')](db[_0x6d7f('0x21')][_0x6d7f('0x35')]);_0x173ac6[_0x6d7f('0x25')]=_[_0x6d7f('0x26')](_0x2cf5be[_0x6d7f('0x25')]);_0x173ac6[_0x6d7f('0x27')]=_[_0x6d7f('0x28')](_0x173ac6['model'],_0x173ac6['query']);_0x138ae7[_0x6d7f('0x29')]=_['intersection'](_0x173ac6[_0x6d7f('0x24')],qs['fields'](_0x2cf5be[_0x6d7f('0x25')]['fields']));_0x138ae7[_0x6d7f('0x29')]=_0x138ae7[_0x6d7f('0x29')][_0x6d7f('0x2a')]?_0x138ae7['attributes']:_0x173ac6[_0x6d7f('0x24')];if(_0x2cf5be['query'][_0x6d7f('0x36')]){_0x138ae7['include']=[{'all':!![]}];}_0x138ae7=_['merge']({},_0x138ae7,_0x2cf5be[_0x6d7f('0x37')]);return db[_0x6d7f('0x21')]['find'](_0x138ae7)[_0x6d7f('0x13')](handleEntityNotFound(_0x3b9ce1,null))[_0x6d7f('0x13')](respondWithResult(_0x3b9ce1,null))[_0x6d7f('0x34')](handleError(_0x3b9ce1,null));};exports[_0x6d7f('0x38')]=function(_0x4bdfaa,_0xe47af1){return db[_0x6d7f('0x21')]['create'](_0x4bdfaa[_0x6d7f('0x39')],{})[_0x6d7f('0x13')](function(_0x308924){var _0x28366e=_0x4bdfaa[_0x6d7f('0x3a')][_0x6d7f('0x15')]({'plain':!![]});if(!_0x28366e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x28366e[_0x6d7f('0x3b')]===_0x6d7f('0x3a')){var _0x3a286a=_0x308924[_0x6d7f('0x15')]({'plain':!![]});var _0x51069d=_0x6d7f('0x16');return db[_0x6d7f('0x3c')]['find']({'where':{'name':_0x51069d,'userProfileId':_0x28366e[_0x6d7f('0x3d')]},'raw':!![]})[_0x6d7f('0x13')](function(_0x5a4f18){if(_0x5a4f18&&_0x5a4f18['autoAssociation']===0x0){return db[_0x6d7f('0x17')][_0x6d7f('0x38')]({'name':_0x3a286a['name'],'resourceId':_0x3a286a['id'],'type':_0x5a4f18[_0x6d7f('0x1d')],'sectionId':_0x5a4f18['id']},{})[_0x6d7f('0x13')](function(){return _0x308924;});}else{return _0x308924;}})['catch'](function(_0x1004b2){logger[_0x6d7f('0x1c')](_0x6d7f('0x3e'),_0x1004b2);throw _0x1004b2;});}return _0x308924;})[_0x6d7f('0x13')](respondWithResult(_0xe47af1,0xc9))['catch'](handleError(_0xe47af1,null));};exports[_0x6d7f('0x12')]=function(_0xebe670,_0x535f2d){if(_0xebe670['body']['id']){delete _0xebe670[_0x6d7f('0x39')]['id'];}return db[_0x6d7f('0x21')][_0x6d7f('0x3f')]({'where':{'id':_0xebe670[_0x6d7f('0x40')]['id']}})[_0x6d7f('0x13')](handleEntityNotFound(_0x535f2d,null))[_0x6d7f('0x13')](saveUpdates(_0xebe670['body'],null))[_0x6d7f('0x13')](function(_0x22387e){if(!_0x22387e)return;var _0x34b916=_0x22387e['get']({'plain':!![]});return _0x34b916;})[_0x6d7f('0x13')](function(_0xf95665){var _0x2aff54=new Redis(config[_0x6d7f('0x7')]);_0x2aff54[_0x6d7f('0x41')](_0x6d7f('0x18'),JSON[_0x6d7f('0x19')](_[_0x6d7f('0x2f')](_0xf95665,['id','name',_0x6d7f('0x42')])));return _0xf95665;})[_0x6d7f('0x13')](respondWithResult(_0x535f2d,null))['catch'](handleError(_0x535f2d,null));};exports[_0x6d7f('0x14')]=function(_0x678c51,_0x8205a3){return db[_0x6d7f('0x21')][_0x6d7f('0x3f')]({'where':{'id':_0x678c51[_0x6d7f('0x40')]['id']}})[_0x6d7f('0x13')](handleEntityNotFound(_0x8205a3,null))['then'](removeEntity(_0x8205a3,null))[_0x6d7f('0x34')](handleError(_0x8205a3,null));};
\ No newline at end of file
index d3bfba0..f17094c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa26=['events','SquareProject','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xaa26,0x144));var _0x6aa2=function(_0x4c8833,_0x14e755){_0x4c8833=_0x4c8833-0x0;var _0x30df54=_0xaa26[_0x4c8833];return _0x30df54;};'use strict';var EventEmitter=require(_0x6aa2('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x6aa2('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x6aa2('0x2')](0x0);var events={'afterCreate':_0x6aa2('0x3'),'afterUpdate':'update','afterDestroy':_0x6aa2('0x4')};function emitEvent(_0x2f2c60){return function(_0x4b0499,_0x2a7100,_0x31bf12){SquareProjectEvents[_0x6aa2('0x5')](_0x2f2c60+':'+_0x4b0499['id'],_0x4b0499);SquareProjectEvents[_0x6aa2('0x5')](_0x2f2c60,_0x4b0499);_0x31bf12(null);};}for(var e in events){if(events[_0x6aa2('0x6')](e)){var event=events[e];SquareProject[_0x6aa2('0x7')](e,emitEvent(event));}}module[_0x6aa2('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xe3c8=['exports','events','../../mysqldb','SquareProject','update','remove','emit','hasOwnProperty','hook'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe3c8,0x160));var _0x8e3c=function(_0x4b4491,_0x103807){_0x4b4491=_0x4b4491-0x0;var _0x14d955=_0xe3c8[_0x4b4491];return _0x14d955;};'use strict';var EventEmitter=require(_0x8e3c('0x0'));var SquareProject=require(_0x8e3c('0x1'))['db'][_0x8e3c('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x8e3c('0x3'),'afterDestroy':_0x8e3c('0x4')};function emitEvent(_0x37aee4){return function(_0x466ad9,_0x351bfb,_0x434f63){SquareProjectEvents[_0x8e3c('0x5')](_0x37aee4+':'+_0x466ad9['id'],_0x466ad9);SquareProjectEvents[_0x8e3c('0x5')](_0x37aee4,_0x466ad9);_0x434f63(null);};}for(var e in events){if(events[_0x8e3c('0x6')](e)){var event=events[e];SquareProject[_0x8e3c('0x7')](e,emitEvent(event));}}module[_0x8e3c('0x8')]=SquareProjectEvents;
\ No newline at end of file
index 84fe890..e63dc27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69f6=['path','rimraf','../../config/environment','./squareProject.attributes','exports','define','square_projects','preproduction','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x100373,_0xff7dd8){var _0x112c9b=function(_0x30f199){while(--_0x30f199){_0x100373['push'](_0x100373['shift']());}};_0x112c9b(++_0xff7dd8);}(_0x69f6,0x16f));var _0x669f=function(_0x5a9716,_0x1c6a6b){_0x5a9716=_0x5a9716-0x0;var _0x3f5e33=_0x69f6[_0x5a9716];return _0x3f5e33;};'use strict';var _=require(_0x669f('0x0'));var util=require(_0x669f('0x1'));var logger=require(_0x669f('0x2'))(_0x669f('0x3'));var moment=require(_0x669f('0x4'));var BPromise=require(_0x669f('0x5'));var rp=require(_0x669f('0x6'));var fs=require('fs');var path=require(_0x669f('0x7'));var rimraf=require(_0x669f('0x8'));var config=require(_0x669f('0x9'));var attributes=require(_0x669f('0xa'));module[_0x669f('0xb')]=function(_0x26722f,_0x758a7a){return _0x26722f[_0x669f('0xc')]('SquareProject',attributes,{'tableName':_0x669f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1501f1,_0x698e4f,_0x2e6a9b){if(_0x1501f1['changed'](_0x669f('0xe'))){_0x1501f1['savedAt']=moment()[_0x669f('0xf')](_0x669f('0x10'));}if(_0x1501f1['changed']('production')){_0x1501f1['publishedAt']=moment()[_0x669f('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2e6a9b(null,_0x1501f1);}}});};
\ No newline at end of file
+var _0x5a20=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','preproduction','savedAt','changed','production','publishedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a20,0x19c));var _0x05a2=function(_0x961b28,_0x1fdbaa){_0x961b28=_0x961b28-0x0;var _0x477083=_0x5a20[_0x961b28];return _0x477083;};'use strict';var _=require(_0x05a2('0x0'));var util=require(_0x05a2('0x1'));var logger=require(_0x05a2('0x2'))(_0x05a2('0x3'));var moment=require(_0x05a2('0x4'));var BPromise=require('bluebird');var rp=require(_0x05a2('0x5'));var fs=require('fs');var path=require(_0x05a2('0x6'));var rimraf=require(_0x05a2('0x7'));var config=require(_0x05a2('0x8'));var attributes=require(_0x05a2('0x9'));module[_0x05a2('0xa')]=function(_0x1d2ccc,_0x4c83f6){return _0x1d2ccc[_0x05a2('0xb')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1aced9,_0x4f22f0,_0x1babc5){if(_0x1aced9['changed'](_0x05a2('0xc'))){_0x1aced9[_0x05a2('0xd')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x1aced9[_0x05a2('0xe')](_0x05a2('0xf'))){_0x1aced9[_0x05a2('0x10')]=moment()['format'](_0x05a2('0x11'));}_0x1babc5(null,_0x1aced9);}}});};
\ No newline at end of file
index 6d2aa68..5d1551b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2317=['SquareProject','options','raw','where','attributes','limit','include','map','model','info','debug','stringify','catch','message','error','find','then','ShowSquareProject','lodash','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','./squareProject.socket','register','GetSquareProjects'];(function(_0x279ab1,_0x527374){var _0x8ba87c=function(_0x2c0898){while(--_0x2c0898){_0x279ab1['push'](_0x279ab1['shift']());}};_0x8ba87c(++_0x527374);}(_0x2317,0x1e2));var _0x7231=function(_0x2cecec,_0x29ca23){_0x2cecec=_0x2cecec-0x0;var _0x11f2f0=_0x2317[_0x2cecec];return _0x11f2f0;};'use strict';var _=require(_0x7231('0x0'));var Redis=require(_0x7231('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x7231('0x2'))(_0x7231('0x3'));var config=require(_0x7231('0x4'));config[_0x7231('0x5')]=_[_0x7231('0x6')](config[_0x7231('0x5')],{'host':_0x7231('0x7'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7231('0x8'))[_0x7231('0x9')](socket);exports[_0x7231('0xa')]=function(_0x3f9642){var _0x4e3276=this;return new Promise(function(_0x542453,_0x5ef34a){return db[_0x7231('0xb')]['findAll']({'raw':_0x3f9642[_0x7231('0xc')]?_0x3f9642['options'][_0x7231('0xd')]===undefined?!![]:![]:!![],'where':_0x3f9642[_0x7231('0xc')]?_0x3f9642[_0x7231('0xc')][_0x7231('0xe')]||null:null,'attributes':_0x3f9642[_0x7231('0xc')]?_0x3f9642['options'][_0x7231('0xf')]||null:null,'limit':_0x3f9642[_0x7231('0xc')]?_0x3f9642[_0x7231('0xc')][_0x7231('0x10')]||null:null,'include':_0x3f9642[_0x7231('0xc')]?_0x3f9642[_0x7231('0xc')][_0x7231('0x11')]?_[_0x7231('0x12')](_0x3f9642[_0x7231('0xc')][_0x7231('0x11')],function(_0x22355b){return{'model':db[_0x22355b[_0x7231('0x13')]],'as':_0x22355b['as'],'attributes':_0x22355b['attributes'],'include':_0x22355b['include']?_['map'](_0x22355b[_0x7231('0x11')],function(_0x4d5af7){return{'model':db[_0x4d5af7['model']],'as':_0x4d5af7['as'],'attributes':_0x4d5af7['attributes'],'include':_0x4d5af7[_0x7231('0x11')]?_['map'](_0x4d5af7['include'],function(_0x3ec3c4){return{'model':db[_0x3ec3c4['model']],'as':_0x3ec3c4['as'],'attributes':_0x3ec3c4['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x262a30){logger[_0x7231('0x14')](_0x7231('0xa'),_0x3f9642);logger[_0x7231('0x15')](_0x7231('0xa'),_0x3f9642,JSON[_0x7231('0x16')](_0x262a30));_0x542453(_0x262a30);})[_0x7231('0x17')](function(_0x9ffab7){logger['error'](_0x7231('0xa'),_0x9ffab7[_0x7231('0x18')],_0x3f9642);_0x5ef34a(_0x4e3276[_0x7231('0x19')](0x1f4,_0x9ffab7[_0x7231('0x18')]));});});};exports['ShowSquareProject']=function(_0xedf741){var _0x5b8034=this;return new Promise(function(_0x46232a,_0x164c67){return db['SquareProject'][_0x7231('0x1a')]({'raw':_0xedf741[_0x7231('0xc')]?_0xedf741[_0x7231('0xc')]['raw']===undefined?!![]:![]:!![],'where':_0xedf741[_0x7231('0xc')]?_0xedf741[_0x7231('0xc')][_0x7231('0xe')]||null:null,'attributes':_0xedf741[_0x7231('0xc')]?_0xedf741[_0x7231('0xc')]['attributes']||null:null,'include':_0xedf741[_0x7231('0xc')]?_0xedf741[_0x7231('0xc')][_0x7231('0x11')]?_[_0x7231('0x12')](_0xedf741[_0x7231('0xc')][_0x7231('0x11')],function(_0x71b56b){return{'model':db[_0x71b56b[_0x7231('0x13')]],'as':_0x71b56b['as'],'attributes':_0x71b56b[_0x7231('0xf')],'include':_0x71b56b[_0x7231('0x11')]?_[_0x7231('0x12')](_0x71b56b[_0x7231('0x11')],function(_0x1e3d08){return{'model':db[_0x1e3d08['model']],'as':_0x1e3d08['as'],'attributes':_0x1e3d08[_0x7231('0xf')],'include':_0x1e3d08['include']?_[_0x7231('0x12')](_0x1e3d08[_0x7231('0x11')],function(_0x25e119){return{'model':db[_0x25e119['model']],'as':_0x25e119['as'],'attributes':_0x25e119[_0x7231('0xf')]};}):[]};}):[]};}):[]:[]})[_0x7231('0x1b')](function(_0x2d797c){logger[_0x7231('0x14')](_0x7231('0x1c'),_0xedf741);logger[_0x7231('0x15')]('ShowSquareProject',_0xedf741,JSON[_0x7231('0x16')](_0x2d797c));_0x46232a(_0x2d797c);})[_0x7231('0x17')](function(_0x379937){logger[_0x7231('0x19')](_0x7231('0x1c'),_0x379937[_0x7231('0x18')],_0xedf741);_0x164c67(_0x5b8034[_0x7231('0x19')](0x1f4,_0x379937['message']));});});};
\ No newline at end of file
+var _0x77cc=['../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','findAll','options','raw','where','attributes','limit','include','map','model','then','info','debug','stringify','catch','message','error','ShowSquareProject','SquareProject','find','lodash','ioredis','../../mysqldb'];(function(_0x11d08e,_0x2a8620){var _0x4d4f45=function(_0x4340b1){while(--_0x4340b1){_0x11d08e['push'](_0x11d08e['shift']());}};_0x4d4f45(++_0x2a8620);}(_0x77cc,0x7d));var _0xc77c=function(_0x1690b3,_0xe1a9e4){_0x1690b3=_0x1690b3-0x0;var _0x38dfb0=_0x77cc[_0x1690b3];return _0x38dfb0;};'use strict';var _=require(_0xc77c('0x0'));var Redis=require(_0xc77c('0x1'));var db=require(_0xc77c('0x2'))['db'];var logger=require(_0xc77c('0x3'))(_0xc77c('0x4'));var config=require(_0xc77c('0x5'));config[_0xc77c('0x6')]=_[_0xc77c('0x7')](config[_0xc77c('0x6')],{'host':_0xc77c('0x8'),'port':0x18eb});var socket=require(_0xc77c('0x9'))(new Redis(config['redis']));require(_0xc77c('0xa'))[_0xc77c('0xb')](socket);exports[_0xc77c('0xc')]=function(_0x3c6ee){var _0x3effd2=this;return new Promise(function(_0x445bb2,_0x52ce4d){return db['SquareProject'][_0xc77c('0xd')]({'raw':_0x3c6ee[_0xc77c('0xe')]?_0x3c6ee['options'][_0xc77c('0xf')]===undefined?!![]:![]:!![],'where':_0x3c6ee['options']?_0x3c6ee[_0xc77c('0xe')][_0xc77c('0x10')]||null:null,'attributes':_0x3c6ee[_0xc77c('0xe')]?_0x3c6ee[_0xc77c('0xe')][_0xc77c('0x11')]||null:null,'limit':_0x3c6ee[_0xc77c('0xe')]?_0x3c6ee['options'][_0xc77c('0x12')]||null:null,'include':_0x3c6ee[_0xc77c('0xe')]?_0x3c6ee[_0xc77c('0xe')][_0xc77c('0x13')]?_[_0xc77c('0x14')](_0x3c6ee[_0xc77c('0xe')]['include'],function(_0x1d70e3){return{'model':db[_0x1d70e3[_0xc77c('0x15')]],'as':_0x1d70e3['as'],'attributes':_0x1d70e3[_0xc77c('0x11')],'include':_0x1d70e3['include']?_[_0xc77c('0x14')](_0x1d70e3[_0xc77c('0x13')],function(_0x136d12){return{'model':db[_0x136d12[_0xc77c('0x15')]],'as':_0x136d12['as'],'attributes':_0x136d12['attributes'],'include':_0x136d12[_0xc77c('0x13')]?_[_0xc77c('0x14')](_0x136d12[_0xc77c('0x13')],function(_0xeebcc3){return{'model':db[_0xeebcc3[_0xc77c('0x15')]],'as':_0xeebcc3['as'],'attributes':_0xeebcc3['attributes']};}):[]};}):[]};}):[]:[]})[_0xc77c('0x16')](function(_0x2b1012){logger[_0xc77c('0x17')]('GetSquareProjects',_0x3c6ee);logger[_0xc77c('0x18')]('GetSquareProjects',_0x3c6ee,JSON[_0xc77c('0x19')](_0x2b1012));_0x445bb2(_0x2b1012);})[_0xc77c('0x1a')](function(_0x5cd09d){logger['error'](_0xc77c('0xc'),_0x5cd09d[_0xc77c('0x1b')],_0x3c6ee);_0x52ce4d(_0x3effd2[_0xc77c('0x1c')](0x1f4,_0x5cd09d[_0xc77c('0x1b')]));});});};exports[_0xc77c('0x1d')]=function(_0x58fbd1){var _0x3da86c=this;return new Promise(function(_0x176ba4,_0x428977){return db[_0xc77c('0x1e')][_0xc77c('0x1f')]({'raw':_0x58fbd1[_0xc77c('0xe')]?_0x58fbd1[_0xc77c('0xe')][_0xc77c('0xf')]===undefined?!![]:![]:!![],'where':_0x58fbd1[_0xc77c('0xe')]?_0x58fbd1['options'][_0xc77c('0x10')]||null:null,'attributes':_0x58fbd1[_0xc77c('0xe')]?_0x58fbd1['options'][_0xc77c('0x11')]||null:null,'include':_0x58fbd1[_0xc77c('0xe')]?_0x58fbd1[_0xc77c('0xe')][_0xc77c('0x13')]?_[_0xc77c('0x14')](_0x58fbd1[_0xc77c('0xe')][_0xc77c('0x13')],function(_0x47dad0){return{'model':db[_0x47dad0[_0xc77c('0x15')]],'as':_0x47dad0['as'],'attributes':_0x47dad0[_0xc77c('0x11')],'include':_0x47dad0[_0xc77c('0x13')]?_[_0xc77c('0x14')](_0x47dad0[_0xc77c('0x13')],function(_0x1b8694){return{'model':db[_0x1b8694[_0xc77c('0x15')]],'as':_0x1b8694['as'],'attributes':_0x1b8694[_0xc77c('0x11')],'include':_0x1b8694[_0xc77c('0x13')]?_['map'](_0x1b8694['include'],function(_0x3cb516){return{'model':db[_0x3cb516['model']],'as':_0x3cb516['as'],'attributes':_0x3cb516['attributes']};}):[]};}):[]};}):[]:[]})[_0xc77c('0x16')](function(_0x1bc21c){logger[_0xc77c('0x17')](_0xc77c('0x1d'),_0x58fbd1);logger[_0xc77c('0x18')](_0xc77c('0x1d'),_0x58fbd1,JSON[_0xc77c('0x19')](_0x1bc21c));_0x176ba4(_0x1bc21c);})['catch'](function(_0x4f7fac){logger[_0xc77c('0x1c')]('ShowSquareProject',_0x4f7fac[_0xc77c('0x1b')],_0x58fbd1);_0x428977(_0x3da86c[_0xc77c('0x1c')](0x1f4,_0x4f7fac[_0xc77c('0x1b')]));});});};
\ No newline at end of file
index 4196a80..460a788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfee=['removeListener','squareProject:','./squareProject.events','save','remove','update','emit'];(function(_0x5569e9,_0x369c8a){var _0x4cdee1=function(_0x19d830){while(--_0x19d830){_0x5569e9['push'](_0x5569e9['shift']());}};_0x4cdee1(++_0x369c8a);}(_0xcfee,0x152));var _0xecfe=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xcfee[_0x263a74];return _0x2aa86c;};'use strict';var SquareProjectEvents=require(_0xecfe('0x0'));var events=[_0xecfe('0x1'),_0xecfe('0x2'),_0xecfe('0x3')];function createListener(_0x166176,_0x554661){return function(_0x1a09a3){_0x554661[_0xecfe('0x4')](_0x166176,_0x1a09a3);};}function removeListener(_0x490e09,_0x3e4a3e){return function(){SquareProjectEvents[_0xecfe('0x5')](_0x490e09,_0x3e4a3e);};}exports['register']=function(_0x24e35e){for(var _0xa52b6b=0x0,_0x549a65=events['length'];_0xa52b6b<_0x549a65;_0xa52b6b++){var _0x2757c6=events[_0xa52b6b];var _0x11dffa=createListener(_0xecfe('0x6')+_0x2757c6,_0x24e35e);SquareProjectEvents['on'](_0x2757c6,_0x11dffa);}};
\ No newline at end of file
+var _0x18f1=['squareProject:','save','remove','emit','register','length'];(function(_0x34b638,_0x39cb7c){var _0x574638=function(_0xcf46b6){while(--_0xcf46b6){_0x34b638['push'](_0x34b638['shift']());}};_0x574638(++_0x39cb7c);}(_0x18f1,0x7f));var _0x118f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x18f1[_0x57b54c];return _0x59cc19;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x118f('0x0'),_0x118f('0x1'),'update'];function createListener(_0x20778e,_0x588028){return function(_0x603c0e){_0x588028[_0x118f('0x2')](_0x20778e,_0x603c0e);};}function removeListener(_0x524e71,_0x1fecf0){return function(){SquareProjectEvents['removeListener'](_0x524e71,_0x1fecf0);};}exports[_0x118f('0x3')]=function(_0x35d3c8){for(var _0x47ca22=0x0,_0x575054=events[_0x118f('0x4')];_0x47ca22<_0x575054;_0x47ca22++){var _0x399177=events[_0x47ca22];var _0x437f4e=createListener(_0x118f('0x5')+_0x399177,_0x35d3c8);SquareProjectEvents['on'](_0x399177,_0x437f4e);}};
\ No newline at end of file
index 2027c98..f00687c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./squareRecording.controller','isAuthenticated','get','/:id','show','/:id/download','download','post','create','put'];(function(_0xfcaf5e,_0x14f5b8){var _0x10a576=function(_0x3f208e){while(--_0x3f208e){_0xfcaf5e['push'](_0xfcaf5e['shift']());}};_0x10a576(++_0x14f5b8);}(_0x53ec,0x192));var _0xc53e=function(_0x5a2d6e,_0x3d3a47){_0x5a2d6e=_0x5a2d6e-0x0;var _0x30ff59=_0x53ec[_0x5a2d6e];return _0x30ff59;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get']('/',auth[_0xc53e('0x9')](),controller['index']);router[_0xc53e('0xa')](_0xc53e('0xb'),auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xa')](_0xc53e('0xd'),auth[_0xc53e('0x9')](),controller[_0xc53e('0xe')]);router[_0xc53e('0xf')]('/',auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router[_0xc53e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc53e('0x12')]);router['delete']('/:id',auth[_0xc53e('0x9')](),controller[_0xc53e('0x13')]);module[_0xc53e('0x14')]=router;
\ No newline at end of file
+var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x2e74b2,_0x2b6259){var _0x49aa19=function(_0x5e060e){while(--_0x5e060e){_0x2e74b2['push'](_0x2e74b2['shift']());}};_0x49aa19(++_0x2b6259);}(_0xe14b,0x93));var _0xbe14=function(_0x488c9a,_0x39a741){_0x488c9a=_0x488c9a-0x0;var _0x3b3807=_0xe14b[_0x488c9a];return _0x3b3807;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
index 6fb7418..c303646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x8958,0x93));var _0x8895=function(_0x196aef,_0x42a546){_0x196aef=_0x196aef-0x0;var _0x110e25=_0x8958[_0x196aef];return _0x110e25;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x8895('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8895('0x1')]},'dnid':{'type':Sequelize[_0x8895('0x1')]},'projectName':{'type':Sequelize[_0x8895('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8895('0x1')]},'savePath':{'type':Sequelize[_0x8895('0x1')]},'format':{'type':Sequelize[_0x8895('0x2')],'get':function(){var _0x40cec6='';var _0x33013a=this['getDataValue'](_0x8895('0x3'));if(_0x33013a){_0x40cec6=_0x33013a[_0x8895('0x4')](_0x33013a[_0x8895('0x5')]('.'));}return _0x40cec6;}}};
\ No newline at end of file
+var _0xdc97=['savePath','substring','lastIndexOf','sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x2085f3,_0x50105b){var _0x384e3c=function(_0x235fa0){while(--_0x235fa0){_0x2085f3['push'](_0x2085f3['shift']());}};_0x384e3c(++_0x50105b);}(_0xdc97,0x13b));var _0x7dc9=function(_0x645c10,_0x3530a2){_0x645c10=_0x645c10-0x0;var _0x45cf45=_0xdc97[_0x645c10];return _0x45cf45;};'use strict';var Sequelize=require(_0x7dc9('0x0'));module[_0x7dc9('0x1')]={'uniqueid':{'type':Sequelize[_0x7dc9('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x7dc9('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7dc9('0x2')]},'priority':{'type':Sequelize[_0x7dc9('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x7dc9('0x2')]},'projectName':{'type':Sequelize[_0x7dc9('0x2')]},'saveName':{'type':Sequelize[_0x7dc9('0x2')]},'filename':{'type':Sequelize[_0x7dc9('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x7dc9('0x3')],'get':function(){var _0x4f91c7='';var _0x4b3229=this[_0x7dc9('0x4')](_0x7dc9('0x5'));if(_0x4b3229){_0x4f91c7=_0x4b3229[_0x7dc9('0x6')](_0x4b3229[_0x7dc9('0x7')]('.'));}return _0x4f91c7;}}};
\ No newline at end of file
index fbc475d..77d11f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c20=['body','params','download','../../components/encryptor','uniqueid','savePath','decryptFile','existsSync','Sequelize','ValidationError','filename','extname','unlink','message','SquareRecording\x20not\x20found','send','Not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','Content-Range','apply','save','update','then','destroy','end','error','name','map','SquareRecording','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create'];(function(_0x43d5d6,_0x1cc5b8){var _0x2ae019=function(_0x812b19){while(--_0x812b19){_0x43d5d6['push'](_0x43d5d6['shift']());}};_0x2ae019(++_0x1cc5b8);}(_0x7c20,0x74));var _0x07c2=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7c20[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x07c2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x07c2('0x1'));var jsonpatch=require(_0x07c2('0x2'));var rp=require(_0x07c2('0x3'));var moment=require(_0x07c2('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x07c2('0x5'));var sox=require(_0x07c2('0x6'));var csv=require(_0x07c2('0x7'));var ejs=require(_0x07c2('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x07c2('0x9'));var squel=require(_0x07c2('0xa'));var crypto=require(_0x07c2('0xb'));var jsforce=require(_0x07c2('0xc'));var deskjs=require(_0x07c2('0xd'));var toCsv=require(_0x07c2('0x7'));var querystring=require('querystring');var Papa=require(_0x07c2('0xe'));var Redis=require('ioredis');var authService=require(_0x07c2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x07c2('0x10'));var hardwareService=require(_0x07c2('0x11'));var logger=require(_0x07c2('0x12'))(_0x07c2('0x13'));var utils=require('../../config/utils');var config=require(_0x07c2('0x14'));var licenseUtil=require(_0x07c2('0x15'));var db=require(_0x07c2('0x16'))['db'];function respondWithStatusCode(_0x329f4a,_0x59141e){_0x59141e=_0x59141e||0xcc;return function(_0x191b25){if(_0x191b25){return _0x329f4a[_0x07c2('0x17')](_0x59141e);}return _0x329f4a[_0x07c2('0x18')](_0x59141e)['end']();};}function respondWithResult(_0x528c48,_0x55d1aa){_0x55d1aa=_0x55d1aa||0xc8;return function(_0x465ff8){if(_0x465ff8){return _0x528c48['status'](_0x55d1aa)[_0x07c2('0x19')](_0x465ff8);}};}function respondWithFilteredResult(_0x5e38f3,_0x19d99e){return function(_0x370079){if(_0x370079){var _0x439d27=typeof _0x19d99e[_0x07c2('0x1a')]===_0x07c2('0x1b')&&typeof _0x19d99e['limit']===_0x07c2('0x1b');var _0x1b9663=_0x370079[_0x07c2('0x1c')];var _0x3cf8fa=_0x439d27?0x0:_0x19d99e[_0x07c2('0x1a')];var _0x339861=_0x439d27?_0x370079['count']:_0x19d99e[_0x07c2('0x1a')]+_0x19d99e['limit'];var _0x991b69;if(_0x339861>=_0x1b9663){_0x339861=_0x1b9663;_0x991b69=0xc8;}else{_0x991b69=0xce;}_0x5e38f3[_0x07c2('0x18')](_0x991b69);return _0x5e38f3['set'](_0x07c2('0x1d'),_0x3cf8fa+'-'+_0x339861+'/'+_0x1b9663)[_0x07c2('0x19')](_0x370079);}return null;};}function patchUpdates(_0x52d9f8){return function(_0x4cdcf5){try{jsonpatch[_0x07c2('0x1e')](_0x4cdcf5,_0x52d9f8,!![]);}catch(_0x5d3782){return BPromise['reject'](_0x5d3782);}return _0x4cdcf5[_0x07c2('0x1f')]();};}function saveUpdates(_0x56c952,_0x9c1090){return function(_0x2b9130){if(_0x2b9130){return _0x2b9130[_0x07c2('0x20')](_0x56c952)[_0x07c2('0x21')](function(_0x2fdf4b){return _0x2fdf4b;});}return null;};}function removeEntity(_0x3aa0ee,_0x1d69a1){return function(_0xa63004){if(_0xa63004){return _0xa63004[_0x07c2('0x22')]()[_0x07c2('0x21')](function(){_0x3aa0ee[_0x07c2('0x18')](0xcc)[_0x07c2('0x23')]();});}};}function handleEntityNotFound(_0x531650,_0x5ba870){return function(_0x29cc5c){if(!_0x29cc5c){_0x531650['sendStatus'](0x194);}return _0x29cc5c;};}function handleError(_0x1537d8,_0x48af62){_0x48af62=_0x48af62||0x1f4;return function(_0x270957){logger[_0x07c2('0x24')](_0x270957['stack']);if(_0x270957['name']){delete _0x270957[_0x07c2('0x25')];}_0x1537d8[_0x07c2('0x18')](_0x48af62)['send'](_0x270957);};}exports['index']=function(_0x4597d9,_0x2a35eb){var _0x10a4ac={},_0x5d324d={},_0x4415f9={'count':0x0,'rows':[]};var _0x150667=_[_0x07c2('0x26')](db[_0x07c2('0x27')][_0x07c2('0x28')],function(_0x36a3be){return{'name':_0x36a3be['fieldName'],'type':_0x36a3be[_0x07c2('0x29')][_0x07c2('0x2a')]};});_0x5d324d[_0x07c2('0x2b')]=_[_0x07c2('0x26')](_0x150667,_0x07c2('0x25'));_0x5d324d[_0x07c2('0x2c')]=_[_0x07c2('0x2d')](_0x4597d9[_0x07c2('0x2c')]);_0x5d324d['filters']=_[_0x07c2('0x2e')](_0x5d324d[_0x07c2('0x2b')],_0x5d324d['query']);_0x10a4ac[_0x07c2('0x2f')]=_[_0x07c2('0x2e')](_0x5d324d[_0x07c2('0x2b')],qs['fields'](_0x4597d9[_0x07c2('0x2c')][_0x07c2('0x30')]));_0x10a4ac['attributes']=_0x10a4ac['attributes'][_0x07c2('0x31')]?_0x10a4ac[_0x07c2('0x2f')]:_0x5d324d[_0x07c2('0x2b')];if(!_0x4597d9['query'][_0x07c2('0x32')](_0x07c2('0x33'))){_0x10a4ac[_0x07c2('0x34')]=qs[_0x07c2('0x34')](_0x4597d9[_0x07c2('0x2c')][_0x07c2('0x34')]);_0x10a4ac[_0x07c2('0x1a')]=qs[_0x07c2('0x1a')](_0x4597d9[_0x07c2('0x2c')][_0x07c2('0x1a')]);}_0x10a4ac['order']=qs[_0x07c2('0x35')](_0x4597d9[_0x07c2('0x2c')][_0x07c2('0x35')]);_0x10a4ac[_0x07c2('0x36')]=qs[_0x07c2('0x37')](_[_0x07c2('0x38')](_0x4597d9[_0x07c2('0x2c')],_0x5d324d[_0x07c2('0x37')]),_0x150667);if(_0x4597d9['query'][_0x07c2('0x39')]){_0x10a4ac[_0x07c2('0x36')]=_[_0x07c2('0x3a')](_0x10a4ac[_0x07c2('0x36')],{'$or':_[_0x07c2('0x26')](_0x150667,function(_0x334e33){if(_0x334e33[_0x07c2('0x29')]!=='VIRTUAL'){var _0x1cab09={};_0x1cab09[_0x334e33['name']]={'$like':'%'+_0x4597d9['query'][_0x07c2('0x39')]+'%'};return _0x1cab09;}})});}_0x10a4ac=_[_0x07c2('0x3a')]({},_0x10a4ac,_0x4597d9[_0x07c2('0x3b')]);var _0x1c4eba={'where':_0x10a4ac[_0x07c2('0x36')]};return db['SquareRecording']['count'](_0x1c4eba)[_0x07c2('0x21')](function(_0x56e4d5){_0x4415f9[_0x07c2('0x1c')]=_0x56e4d5;if(_0x4597d9['query'][_0x07c2('0x3c')]){_0x10a4ac[_0x07c2('0x3d')]=[{'all':!![]}];}return db[_0x07c2('0x27')][_0x07c2('0x3e')](_0x10a4ac);})[_0x07c2('0x21')](function(_0x2d8a3e){_0x4415f9[_0x07c2('0x3f')]=_0x2d8a3e;return _0x4415f9;})[_0x07c2('0x21')](respondWithFilteredResult(_0x2a35eb,_0x10a4ac))[_0x07c2('0x40')](handleError(_0x2a35eb,null));};exports[_0x07c2('0x41')]=function(_0x3db644,_0x152331){var _0x4c6c45={'raw':!![],'where':{'id':_0x3db644['params']['id']}},_0x9379f1={};_0x9379f1[_0x07c2('0x2b')]=_[_0x07c2('0x2d')](db[_0x07c2('0x27')][_0x07c2('0x28')]);_0x9379f1[_0x07c2('0x2c')]=_[_0x07c2('0x2d')](_0x3db644[_0x07c2('0x2c')]);_0x9379f1[_0x07c2('0x37')]=_[_0x07c2('0x2e')](_0x9379f1[_0x07c2('0x2b')],_0x9379f1[_0x07c2('0x2c')]);_0x4c6c45[_0x07c2('0x2f')]=_[_0x07c2('0x2e')](_0x9379f1['model'],qs[_0x07c2('0x30')](_0x3db644[_0x07c2('0x2c')][_0x07c2('0x30')]));_0x4c6c45[_0x07c2('0x2f')]=_0x4c6c45[_0x07c2('0x2f')]['length']?_0x4c6c45[_0x07c2('0x2f')]:_0x9379f1[_0x07c2('0x2b')];if(_0x3db644['query'][_0x07c2('0x3c')]){_0x4c6c45['include']=[{'all':!![]}];}_0x4c6c45=_['merge']({},_0x4c6c45,_0x3db644[_0x07c2('0x3b')]);return db[_0x07c2('0x27')][_0x07c2('0x42')](_0x4c6c45)[_0x07c2('0x21')](handleEntityNotFound(_0x152331,null))['then'](respondWithResult(_0x152331,null))[_0x07c2('0x40')](handleError(_0x152331,null));};exports['create']=function(_0x784134,_0x332aab){return db['SquareRecording'][_0x07c2('0x43')](_0x784134['body'],{})[_0x07c2('0x21')](respondWithResult(_0x332aab,0xc9))['catch'](handleError(_0x332aab,null));};exports[_0x07c2('0x20')]=function(_0x134cd,_0x1bd33b){if(_0x134cd[_0x07c2('0x44')]['id']){delete _0x134cd[_0x07c2('0x44')]['id'];}return db[_0x07c2('0x27')]['find']({'where':{'id':_0x134cd[_0x07c2('0x45')]['id']}})[_0x07c2('0x21')](handleEntityNotFound(_0x1bd33b,null))[_0x07c2('0x21')](saveUpdates(_0x134cd[_0x07c2('0x44')],null))[_0x07c2('0x21')](respondWithResult(_0x1bd33b,null))['catch'](handleError(_0x1bd33b,null));};exports[_0x07c2('0x46')]=function(_0x27e4ce,_0x2b5f06,_0x461789){var _0x54c83b=require(_0x07c2('0x47'));var _0x3e9ff3=![];var _0x19e310={};if(_0x27e4ce[_0x07c2('0x2c')][_0x07c2('0x29')]&&_0x27e4ce[_0x07c2('0x2c')][_0x07c2('0x29')]===_0x07c2('0x48')){_0x19e310[_0x07c2('0x48')]=_0x27e4ce[_0x07c2('0x45')]['id'];}else{_0x19e310['id']=_0x27e4ce[_0x07c2('0x45')]['id'];}return db[_0x07c2('0x27')][_0x07c2('0x42')]({'where':_0x19e310,'attributes':['id',_0x07c2('0x49'),'filename'],'raw':!![]})[_0x07c2('0x21')](handleEntityNotFound(_0x2b5f06,null))['then'](function(_0x26fcf5){if(_0x26fcf5){var _0x4c362a=_0x26fcf5[_0x07c2('0x49')];var _0x335ebf=util['format']('%s.cypher',_0x4c362a);if(fs['existsSync'](_0x335ebf)){_0x3e9ff3=!![];return _0x54c83b[_0x07c2('0x4a')](_0x335ebf,_0x4c362a,config['secrets']['recording'])[_0x07c2('0x21')](function(){return _0x26fcf5;});}return _0x26fcf5;}})['then'](function(_0x24cb07){if(_0x24cb07){var _0x3c673d=_0x24cb07[_0x07c2('0x49')];if(!fs[_0x07c2('0x4b')](_0x3c673d)){throw new db[(_0x07c2('0x4c'))][(_0x07c2('0x4d'))]('SquareRecording\x20not\x20found');}if(_0x24cb07['filename']){return _0x2b5f06[_0x07c2('0x46')](_0x3c673d,_0x24cb07[_0x07c2('0x4e')]+path[_0x07c2('0x4f')](_0x3c673d),function(){if(_0x3e9ff3){fs[_0x07c2('0x50')](_0x3c673d);}});}else{return _0x2b5f06['download'](_0x3c673d,function(_0x12fe63){if(_0x3e9ff3){fs['unlink'](_0x3c673d);}});}}})['catch'](function(_0x192b6a){if(_0x192b6a[_0x07c2('0x51')]===_0x07c2('0x52')){_0x2b5f06['status'](0x194)[_0x07c2('0x53')](_0x07c2('0x54'));}else{return handleError(_0x2b5f06,null);}});};exports[_0x07c2('0x22')]=function(_0x4bb7b4,_0x892c03){return db[_0x07c2('0x27')][_0x07c2('0x42')]({'where':{'id':_0x4bb7b4[_0x07c2('0x45')]['id']}})['then'](function(_0x266a23){if(_[_0x07c2('0x55')](_0x266a23)){throw new ReferenceError(_0x07c2('0x56'));}return _0x266a23;})['then'](function(_0x2c3c36){var _0x358258=_0x2c3c36[_0x07c2('0x49')];logger['info'](_0x07c2('0x57'),_0x358258);if(!_[_0x07c2('0x55')](_0x2c3c36[_0x07c2('0x49')])&&fs[_0x07c2('0x4b')](_0x358258)){logger['info'](_0x07c2('0x58')+_0x358258+_0x07c2('0x59'));fs[_0x07c2('0x5a')](_0x358258);}_0x358258=_0x358258+_0x07c2('0x5b');if(!_[_0x07c2('0x55')](_0x2c3c36[_0x07c2('0x49')])&&fs[_0x07c2('0x4b')](_0x358258)){logger['info'](_0x07c2('0x58')+_0x358258+_0x07c2('0x59'));fs[_0x07c2('0x5a')](_0x358258);}return _0x2c3c36;})[_0x07c2('0x21')](function(_0x3f9e23){if(!_0x3f9e23)throw new InternalError();return _0x3f9e23[_0x07c2('0x22')]();})['then'](function(){_0x892c03[_0x07c2('0x18')](0xcc)['end']();})[_0x07c2('0x40')](handleError(_0x892c03,null));};
\ No newline at end of file
+var _0xcce5=['filename','format','decryptFile','secrets','recording','existsSync','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','cancellazione\x20fisica\x20documento\x20%s','info','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','index','SquareRecording','rawAttributes','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','intersection','fields','find','catch','create','body','download','uniqueid','savePath'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xcce5,0x73));var _0x5cce=function(_0x548684,_0x1eec08){_0x548684=_0x548684-0x0;var _0x57bfc9=_0xcce5[_0x548684];return _0x57bfc9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5cce('0x0'));var zipdir=require(_0x5cce('0x1'));var jsonpatch=require(_0x5cce('0x2'));var rp=require(_0x5cce('0x3'));var moment=require('moment');var BPromise=require(_0x5cce('0x4'));var Mustache=require(_0x5cce('0x5'));var util=require(_0x5cce('0x6'));var path=require(_0x5cce('0x7'));var sox=require(_0x5cce('0x8'));var csv=require(_0x5cce('0x9'));var ejs=require(_0x5cce('0xa'));var fs=require('fs');var fs_extra=require(_0x5cce('0xb'));var _=require(_0x5cce('0xc'));var squel=require(_0x5cce('0xd'));var crypto=require(_0x5cce('0xe'));var jsforce=require(_0x5cce('0xf'));var deskjs=require(_0x5cce('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5cce('0x11'));var Redis=require(_0x5cce('0x12'));var authService=require(_0x5cce('0x13'));var qs=require(_0x5cce('0x14'));var as=require(_0x5cce('0x15'));var hardwareService=require(_0x5cce('0x16'));var logger=require(_0x5cce('0x17'))(_0x5cce('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5cce('0x19'));var db=require(_0x5cce('0x1a'))['db'];function respondWithStatusCode(_0x137b01,_0x6cd34b){_0x6cd34b=_0x6cd34b||0xcc;return function(_0x3144c6){if(_0x3144c6){return _0x137b01[_0x5cce('0x1b')](_0x6cd34b);}return _0x137b01[_0x5cce('0x1c')](_0x6cd34b)['end']();};}function respondWithResult(_0x5404e3,_0x5b566d){_0x5b566d=_0x5b566d||0xc8;return function(_0x451c06){if(_0x451c06){return _0x5404e3[_0x5cce('0x1c')](_0x5b566d)[_0x5cce('0x1d')](_0x451c06);}};}function respondWithFilteredResult(_0x39395d,_0x54bdc9){return function(_0x2e2292){if(_0x2e2292){var _0x32b5f9=typeof _0x54bdc9[_0x5cce('0x1e')]===_0x5cce('0x1f')&&typeof _0x54bdc9[_0x5cce('0x20')]===_0x5cce('0x1f');var _0xf54efa=_0x2e2292[_0x5cce('0x21')];var _0x226461=_0x32b5f9?0x0:_0x54bdc9[_0x5cce('0x1e')];var _0x4398e4=_0x32b5f9?_0x2e2292[_0x5cce('0x21')]:_0x54bdc9['offset']+_0x54bdc9['limit'];var _0x25dfab;if(_0x4398e4>=_0xf54efa){_0x4398e4=_0xf54efa;_0x25dfab=0xc8;}else{_0x25dfab=0xce;}_0x39395d[_0x5cce('0x1c')](_0x25dfab);return _0x39395d['set'](_0x5cce('0x22'),_0x226461+'-'+_0x4398e4+'/'+_0xf54efa)[_0x5cce('0x1d')](_0x2e2292);}return null;};}function patchUpdates(_0x3f706d){return function(_0x2b216d){try{jsonpatch['apply'](_0x2b216d,_0x3f706d,!![]);}catch(_0x55a597){return BPromise[_0x5cce('0x23')](_0x55a597);}return _0x2b216d[_0x5cce('0x24')]();};}function saveUpdates(_0x474142,_0x5ec6c1){return function(_0xf31ef6){if(_0xf31ef6){return _0xf31ef6[_0x5cce('0x25')](_0x474142)[_0x5cce('0x26')](function(_0x3db7b0){return _0x3db7b0;});}return null;};}function removeEntity(_0x13ce77,_0x31f02c){return function(_0x1383b7){if(_0x1383b7){return _0x1383b7[_0x5cce('0x27')]()[_0x5cce('0x26')](function(){_0x13ce77[_0x5cce('0x1c')](0xcc)[_0x5cce('0x28')]();});}};}function handleEntityNotFound(_0x15518b,_0xc660d4){return function(_0x35e55a){if(!_0x35e55a){_0x15518b[_0x5cce('0x1b')](0x194);}return _0x35e55a;};}function handleError(_0x36a76c,_0x400de5){_0x400de5=_0x400de5||0x1f4;return function(_0x596f43){logger[_0x5cce('0x29')](_0x596f43[_0x5cce('0x2a')]);if(_0x596f43[_0x5cce('0x2b')]){delete _0x596f43[_0x5cce('0x2b')];}_0x36a76c[_0x5cce('0x1c')](_0x400de5)[_0x5cce('0x2c')](_0x596f43);};}exports[_0x5cce('0x2d')]=function(_0x5c4fe8,_0x102f21){var _0x2018da={},_0x343799={},_0xf6856={'count':0x0,'rows':[]};var _0x188bfe=_['map'](db[_0x5cce('0x2e')][_0x5cce('0x2f')],function(_0x451625){return{'name':_0x451625['fieldName'],'type':_0x451625[_0x5cce('0x30')][_0x5cce('0x31')]};});_0x343799[_0x5cce('0x32')]=_['map'](_0x188bfe,_0x5cce('0x2b'));_0x343799[_0x5cce('0x33')]=_[_0x5cce('0x34')](_0x5c4fe8[_0x5cce('0x33')]);_0x343799[_0x5cce('0x35')]=_['intersection'](_0x343799[_0x5cce('0x32')],_0x343799[_0x5cce('0x33')]);_0x2018da[_0x5cce('0x36')]=_['intersection'](_0x343799[_0x5cce('0x32')],qs['fields'](_0x5c4fe8[_0x5cce('0x33')]['fields']));_0x2018da['attributes']=_0x2018da[_0x5cce('0x36')][_0x5cce('0x37')]?_0x2018da[_0x5cce('0x36')]:_0x343799[_0x5cce('0x32')];if(!_0x5c4fe8['query'][_0x5cce('0x38')](_0x5cce('0x39'))){_0x2018da[_0x5cce('0x20')]=qs[_0x5cce('0x20')](_0x5c4fe8[_0x5cce('0x33')][_0x5cce('0x20')]);_0x2018da['offset']=qs['offset'](_0x5c4fe8[_0x5cce('0x33')][_0x5cce('0x1e')]);}_0x2018da[_0x5cce('0x3a')]=qs[_0x5cce('0x3b')](_0x5c4fe8[_0x5cce('0x33')][_0x5cce('0x3b')]);_0x2018da[_0x5cce('0x3c')]=qs['filters'](_[_0x5cce('0x3d')](_0x5c4fe8[_0x5cce('0x33')],_0x343799[_0x5cce('0x35')]),_0x188bfe);if(_0x5c4fe8['query'][_0x5cce('0x3e')]){_0x2018da[_0x5cce('0x3c')]=_[_0x5cce('0x3f')](_0x2018da[_0x5cce('0x3c')],{'$or':_['map'](_0x188bfe,function(_0x490aab){if(_0x490aab['type']!=='VIRTUAL'){var _0x59d346={};_0x59d346[_0x490aab['name']]={'$like':'%'+_0x5c4fe8[_0x5cce('0x33')][_0x5cce('0x3e')]+'%'};return _0x59d346;}})});}_0x2018da=_[_0x5cce('0x3f')]({},_0x2018da,_0x5c4fe8[_0x5cce('0x40')]);var _0x311fb9={'where':_0x2018da['where']};return db['SquareRecording']['count'](_0x311fb9)[_0x5cce('0x26')](function(_0x15f2ad){_0xf6856[_0x5cce('0x21')]=_0x15f2ad;if(_0x5c4fe8[_0x5cce('0x33')][_0x5cce('0x41')]){_0x2018da[_0x5cce('0x42')]=[{'all':!![]}];}return db[_0x5cce('0x2e')]['findAll'](_0x2018da);})[_0x5cce('0x26')](function(_0x19a498){_0xf6856[_0x5cce('0x43')]=_0x19a498;return _0xf6856;})['then'](respondWithFilteredResult(_0x102f21,_0x2018da))['catch'](handleError(_0x102f21,null));};exports[_0x5cce('0x44')]=function(_0x4b92f1,_0x3aea94){var _0x54823a={'raw':!![],'where':{'id':_0x4b92f1[_0x5cce('0x45')]['id']}},_0x12f45a={};_0x12f45a['model']=_[_0x5cce('0x34')](db[_0x5cce('0x2e')][_0x5cce('0x2f')]);_0x12f45a['query']=_[_0x5cce('0x34')](_0x4b92f1[_0x5cce('0x33')]);_0x12f45a[_0x5cce('0x35')]=_['intersection'](_0x12f45a['model'],_0x12f45a[_0x5cce('0x33')]);_0x54823a[_0x5cce('0x36')]=_[_0x5cce('0x46')](_0x12f45a[_0x5cce('0x32')],qs[_0x5cce('0x47')](_0x4b92f1['query'][_0x5cce('0x47')]));_0x54823a['attributes']=_0x54823a['attributes']['length']?_0x54823a[_0x5cce('0x36')]:_0x12f45a[_0x5cce('0x32')];if(_0x4b92f1[_0x5cce('0x33')][_0x5cce('0x41')]){_0x54823a[_0x5cce('0x42')]=[{'all':!![]}];}_0x54823a=_[_0x5cce('0x3f')]({},_0x54823a,_0x4b92f1['options']);return db[_0x5cce('0x2e')][_0x5cce('0x48')](_0x54823a)['then'](handleEntityNotFound(_0x3aea94,null))[_0x5cce('0x26')](respondWithResult(_0x3aea94,null))[_0x5cce('0x49')](handleError(_0x3aea94,null));};exports['create']=function(_0x47e109,_0x49f58c){return db[_0x5cce('0x2e')][_0x5cce('0x4a')](_0x47e109[_0x5cce('0x4b')],{})['then'](respondWithResult(_0x49f58c,0xc9))[_0x5cce('0x49')](handleError(_0x49f58c,null));};exports[_0x5cce('0x25')]=function(_0x509eb3,_0x5964fa){if(_0x509eb3['body']['id']){delete _0x509eb3[_0x5cce('0x4b')]['id'];}return db[_0x5cce('0x2e')][_0x5cce('0x48')]({'where':{'id':_0x509eb3[_0x5cce('0x45')]['id']}})['then'](handleEntityNotFound(_0x5964fa,null))[_0x5cce('0x26')](saveUpdates(_0x509eb3[_0x5cce('0x4b')],null))[_0x5cce('0x26')](respondWithResult(_0x5964fa,null))[_0x5cce('0x49')](handleError(_0x5964fa,null));};exports[_0x5cce('0x4c')]=function(_0x6656b1,_0x36f2ac,_0x4a312d){var _0x32ca15=require('../../components/encryptor');var _0x29ed69=![];var _0x418843={};if(_0x6656b1['query'][_0x5cce('0x30')]&&_0x6656b1[_0x5cce('0x33')]['type']===_0x5cce('0x4d')){_0x418843[_0x5cce('0x4d')]=_0x6656b1[_0x5cce('0x45')]['id'];}else{_0x418843['id']=_0x6656b1['params']['id'];}return db[_0x5cce('0x2e')]['find']({'where':_0x418843,'attributes':['id',_0x5cce('0x4e'),_0x5cce('0x4f')],'raw':!![]})['then'](handleEntityNotFound(_0x36f2ac,null))[_0x5cce('0x26')](function(_0x3db75d){if(_0x3db75d){var _0x345670=_0x3db75d['savePath'];var _0x8bd6a3=util[_0x5cce('0x50')]('%s.cypher',_0x345670);if(fs['existsSync'](_0x8bd6a3)){_0x29ed69=!![];return _0x32ca15[_0x5cce('0x51')](_0x8bd6a3,_0x345670,config[_0x5cce('0x52')][_0x5cce('0x53')])['then'](function(){return _0x3db75d;});}return _0x3db75d;}})[_0x5cce('0x26')](function(_0x3f3966){if(_0x3f3966){var _0x40cc6d=_0x3f3966[_0x5cce('0x4e')];if(!fs[_0x5cce('0x54')](_0x40cc6d)){throw new db['Sequelize'][(_0x5cce('0x55'))](_0x5cce('0x56'));}if(_0x3f3966[_0x5cce('0x4f')]){return _0x36f2ac['download'](_0x40cc6d,_0x3f3966['filename']+path[_0x5cce('0x57')](_0x40cc6d),function(){if(_0x29ed69){fs[_0x5cce('0x58')](_0x40cc6d);}});}else{return _0x36f2ac[_0x5cce('0x4c')](_0x40cc6d,function(_0x341a63){if(_0x29ed69){fs[_0x5cce('0x58')](_0x40cc6d);}});}}})[_0x5cce('0x49')](function(_0x4d59f1){if(_0x4d59f1[_0x5cce('0x59')]==='SquareRecording\x20not\x20found'){_0x36f2ac['status'](0x194)[_0x5cce('0x2c')](_0x5cce('0x5a'));}else{return handleError(_0x36f2ac,null);}});};exports[_0x5cce('0x27')]=function(_0x6ad149,_0x241dce){return db[_0x5cce('0x2e')]['find']({'where':{'id':_0x6ad149['params']['id']}})[_0x5cce('0x26')](function(_0x1e0921){if(_[_0x5cce('0x5b')](_0x1e0921)){throw new ReferenceError('Entity\x20not\x20found');}return _0x1e0921;})[_0x5cce('0x26')](function(_0x130fc3){var _0x56f338=_0x130fc3[_0x5cce('0x4e')];logger['info'](_0x5cce('0x5c'),_0x56f338);if(!_[_0x5cce('0x5b')](_0x130fc3[_0x5cce('0x4e')])&&fs[_0x5cce('0x54')](_0x56f338)){logger[_0x5cce('0x5d')]('File:\x20\x22'+_0x56f338+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x5cce('0x5e')](_0x56f338);}_0x56f338=_0x56f338+_0x5cce('0x5f');if(!_[_0x5cce('0x5b')](_0x130fc3[_0x5cce('0x4e')])&&fs[_0x5cce('0x54')](_0x56f338)){logger[_0x5cce('0x5d')]('File:\x20\x22'+_0x56f338+_0x5cce('0x60'));fs[_0x5cce('0x5e')](_0x56f338);}return _0x130fc3;})[_0x5cce('0x26')](function(_0x1657de){if(!_0x1657de)throw new InternalError();return _0x1657de[_0x5cce('0x27')]();})['then'](function(){_0x241dce[_0x5cce('0x1c')](0xcc)[_0x5cce('0x28')]();})[_0x5cce('0x49')](handleError(_0x241dce,null));};
\ No newline at end of file
index c26c4ed..c838958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0024=['util','api','bluebird','rimraf','../../config/environment','define','SquareRecording'];(function(_0x7c0074,_0x1ffdcf){var _0x13e95b=function(_0x521212){while(--_0x521212){_0x7c0074['push'](_0x7c0074['shift']());}};_0x13e95b(++_0x1ffdcf);}(_0x0024,0xa8));var _0x4002=function(_0x3bc4c9,_0x4d7cfe){_0x3bc4c9=_0x3bc4c9-0x0;var _0x29cdea=_0x0024[_0x3bc4c9];return _0x29cdea;};'use strict';var _=require('lodash');var util=require(_0x4002('0x0'));var logger=require('../../config/logger')(_0x4002('0x1'));var moment=require('moment');var BPromise=require(_0x4002('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4002('0x3'));var config=require(_0x4002('0x4'));var attributes=require('./squareRecording.attributes');module['exports']=function(_0x36c011,_0x144717){return _0x36c011[_0x4002('0x5')](_0x4002('0x6'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8277=['moment','bluebird','path','rimraf','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','util','../../config/logger'];(function(_0x3ef98e,_0x569661){var _0xa75d4=function(_0x3286bd){while(--_0x3286bd){_0x3ef98e['push'](_0x3ef98e['shift']());}};_0xa75d4(++_0x569661);}(_0x8277,0xcf));var _0x7827=function(_0x5c78d9,_0x2736c7){_0x5c78d9=_0x5c78d9-0x0;var _0x69ae1f=_0x8277[_0x5c78d9];return _0x69ae1f;};'use strict';var _=require('lodash');var util=require(_0x7827('0x0'));var logger=require(_0x7827('0x1'))('api');var moment=require(_0x7827('0x2'));var BPromise=require(_0x7827('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7827('0x4'));var rimraf=require(_0x7827('0x5'));var config=require('../../config/environment');var attributes=require(_0x7827('0x6'));module[_0x7827('0x7')]=function(_0x3ebcdf,_0x47e18c){return _0x3ebcdf[_0x7827('0x8')](_0x7827('0x9'),attributes,{'tableName':_0x7827('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a8d4055..20495fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4246=['error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','options','raw','info','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','SquareRecording,\x20%s,\x20%s','debug','stringify'];(function(_0x24530e,_0x3a234d){var _0x30a792=function(_0x2d6d17){while(--_0x2d6d17){_0x24530e['push'](_0x24530e['shift']());}};_0x30a792(++_0x3a234d);}(_0x4246,0x1af));var _0x6424=function(_0xe0342,_0x7114a9){_0xe0342=_0xe0342-0x0;var _0xed9810=_0x4246[_0xe0342];return _0xed9810;};'use strict';var _=require(_0x6424('0x0'));var util=require(_0x6424('0x1'));var moment=require(_0x6424('0x2'));var BPromise=require(_0x6424('0x3'));var rs=require(_0x6424('0x4'));var fs=require('fs');var Redis=require(_0x6424('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6424('0x6'));var logger=require(_0x6424('0x7'))(_0x6424('0x8'));var config=require(_0x6424('0x9'));var jayson=require(_0x6424('0xa'));var client=jayson['client'][_0x6424('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e906d,_0x2d3a5c,_0x3405ee){return new BPromise(function(_0x3bbe39,_0x2a9f50){return client[_0x6424('0xc')](_0x1e906d,_0x3405ee)[_0x6424('0xd')](function(_0x5288ad){logger['info'](_0x6424('0xe'),_0x2d3a5c,'request\x20sent');logger[_0x6424('0xf')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x2d3a5c,'request\x20sent',JSON[_0x6424('0x10')](_0x5288ad));if(_0x5288ad[_0x6424('0x11')]){if(_0x5288ad['error'][_0x6424('0x12')]===0x1f4){logger[_0x6424('0x11')](_0x6424('0xe'),_0x2d3a5c,_0x5288ad[_0x6424('0x11')]['message']);return _0x2a9f50(_0x5288ad[_0x6424('0x11')][_0x6424('0x13')]);}logger[_0x6424('0x11')](_0x6424('0xe'),_0x2d3a5c,_0x5288ad[_0x6424('0x11')][_0x6424('0x13')]);return _0x3bbe39(_0x5288ad[_0x6424('0x11')][_0x6424('0x13')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x2d3a5c,'request\x20sent');_0x3bbe39(_0x5288ad[_0x6424('0x14')][_0x6424('0x13')]);}})[_0x6424('0x15')](function(_0x11b03f){logger[_0x6424('0x11')](_0x6424('0xe'),_0x2d3a5c,_0x11b03f);_0x2a9f50(_0x11b03f);});});}exports[_0x6424('0x16')]=function(_0x2ca63d){var _0x29efcf=this;return new Promise(function(_0x45b999,_0x3e5726){return db[_0x6424('0x17')][_0x6424('0x18')](_0x2ca63d['body'],{'raw':_0x2ca63d[_0x6424('0x19')]?_0x2ca63d['options'][_0x6424('0x1a')]===undefined?!![]:![]:!![]})[_0x6424('0xd')](function(_0x2d8bf6){logger[_0x6424('0x1b')](_0x6424('0x16'),_0x2ca63d);logger[_0x6424('0xf')](_0x6424('0x16'),_0x2ca63d,JSON[_0x6424('0x10')](_0x2d8bf6));_0x45b999(_0x2d8bf6);})[_0x6424('0x15')](function(_0x69475f){logger[_0x6424('0x11')](_0x6424('0x16'),_0x69475f[_0x6424('0x13')],_0x2ca63d);_0x3e5726(_0x29efcf[_0x6424('0x11')](0x1f4,_0x69475f['message']));});});};
\ No newline at end of file
+var _0x8bc9=['create','body','CreateSquareRecording','catch','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','SquareRecording'];(function(_0x13182e,_0x45e0f4){var _0x464946=function(_0x1a2816){while(--_0x1a2816){_0x13182e['push'](_0x13182e['shift']());}};_0x464946(++_0x45e0f4);}(_0x8bc9,0xb4));var _0x98bc=function(_0x47613a,_0x346e1c){_0x47613a=_0x47613a-0x0;var _0x334126=_0x8bc9[_0x47613a];return _0x334126;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x98bc('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98bc('0x1'))['db'];var utils=require(_0x98bc('0x2'));var logger=require(_0x98bc('0x3'))(_0x98bc('0x4'));var config=require(_0x98bc('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x98bc('0x6')][_0x98bc('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5aa349,_0x2200ef,_0x1dd39a){return new BPromise(function(_0x1f249b,_0x3e35c4){return client['request'](_0x5aa349,_0x1dd39a)['then'](function(_0x19b9b0){logger[_0x98bc('0x8')](_0x98bc('0x9'),_0x2200ef,_0x98bc('0xa'));logger[_0x98bc('0xb')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x2200ef,_0x98bc('0xa'),JSON[_0x98bc('0xc')](_0x19b9b0));if(_0x19b9b0[_0x98bc('0xd')]){if(_0x19b9b0[_0x98bc('0xd')][_0x98bc('0xe')]===0x1f4){logger['error'](_0x98bc('0x9'),_0x2200ef,_0x19b9b0[_0x98bc('0xd')][_0x98bc('0xf')]);return _0x3e35c4(_0x19b9b0[_0x98bc('0xd')][_0x98bc('0xf')]);}logger[_0x98bc('0xd')](_0x98bc('0x9'),_0x2200ef,_0x19b9b0[_0x98bc('0xd')][_0x98bc('0xf')]);return _0x1f249b(_0x19b9b0[_0x98bc('0xd')][_0x98bc('0xf')]);}else{logger[_0x98bc('0x8')](_0x98bc('0x9'),_0x2200ef,_0x98bc('0xa'));_0x1f249b(_0x19b9b0[_0x98bc('0x10')][_0x98bc('0xf')]);}})['catch'](function(_0xcf936b){logger[_0x98bc('0xd')]('SquareRecording,\x20%s,\x20%s',_0x2200ef,_0xcf936b);_0x3e35c4(_0xcf936b);});});}exports['CreateSquareRecording']=function(_0x511052){var _0x278880=this;return new Promise(function(_0x4f830a,_0x125bab){return db[_0x98bc('0x11')][_0x98bc('0x12')](_0x511052[_0x98bc('0x13')],{'raw':_0x511052['options']?_0x511052['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x5e29b2){logger[_0x98bc('0x8')](_0x98bc('0x14'),_0x511052);logger['debug'](_0x98bc('0x14'),_0x511052,JSON[_0x98bc('0xc')](_0x5e29b2));_0x4f830a(_0x5e29b2);})[_0x98bc('0x15')](function(_0x2e35eb){logger[_0x98bc('0xd')](_0x98bc('0x14'),_0x2e35eb[_0x98bc('0xf')],_0x511052);_0x125bab(_0x278880[_0x98bc('0xd')](0x1f4,_0x2e35eb[_0x98bc('0xf')]));});});};
\ No newline at end of file
index a6b6934..2884e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x2cabd7,_0x30d135){var _0x407f82=function(_0x393a3f){while(--_0x393a3f){_0x2cabd7['push'](_0x2cabd7['shift']());}};_0x407f82(++_0x30d135);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _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(_0x11e5c3,_0x5ec825){var _0x3ec292=function(_0x476eb0){while(--_0x476eb0){_0x11e5c3['push'](_0x11e5c3['shift']());}};_0x3ec292(++_0x5ec825);}(_0xe706,0xa3));var _0x6e70=function(_0x492221,_0x9e2521){_0x492221=_0x492221-0x0;var _0x398bf9=_0xe706[_0x492221];return _0x398bf9;};'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 a05ade6..39e168d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0c=['DATE','BOOLEAN','sequelize','STRING'];(function(_0x4cc228,_0x321892){var _0x43f089=function(_0x142e5e){while(--_0x142e5e){_0x4cc228['push'](_0x4cc228['shift']());}};_0x43f089(++_0x321892);}(_0xbd0c,0x8a));var _0xcbd0=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbd0c[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require(_0xcbd0('0x0'));module['exports']={'network':{'type':Sequelize[_0xcbd0('0x1')]},'network_script':{'type':Sequelize[_0xcbd0('0x1')]},'request':{'type':Sequelize[_0xcbd0('0x1')]},'channel':{'type':Sequelize[_0xcbd0('0x1')]},'language':{'type':Sequelize[_0xcbd0('0x1')]},'type':{'type':Sequelize[_0xcbd0('0x1')]},'uniqueid':{'type':Sequelize[_0xcbd0('0x1')]},'version':{'type':Sequelize[_0xcbd0('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xcbd0('0x1')]},'callingpres':{'type':Sequelize[_0xcbd0('0x1')]},'callingani2':{'type':Sequelize[_0xcbd0('0x1')]},'callington':{'type':Sequelize[_0xcbd0('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xcbd0('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xcbd0('0x1')]},'priority':{'type':Sequelize[_0xcbd0('0x1')]},'enhanced':{'type':Sequelize[_0xcbd0('0x1')]},'accountcode':{'type':Sequelize[_0xcbd0('0x1')]},'threadid':{'type':Sequelize[_0xcbd0('0x1')]},'project_name':{'type':Sequelize[_0xcbd0('0x1')]},'joinAt':{'type':Sequelize[_0xcbd0('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize[_0xcbd0('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x997a=['DATE','BOOLEAN','exports','STRING'];(function(_0x12e3e3,_0x501eaf){var _0x26602e=function(_0x427882){while(--_0x427882){_0x12e3e3['push'](_0x12e3e3['shift']());}};_0x26602e(++_0x501eaf);}(_0x997a,0xce));var _0xa997=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x997a[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0xa997('0x0')]={'network':{'type':Sequelize[_0xa997('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0xa997('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xa997('0x1')]},'type':{'type':Sequelize[_0xa997('0x1')]},'uniqueid':{'type':Sequelize[_0xa997('0x1')]},'version':{'type':Sequelize[_0xa997('0x1')]},'callerid':{'type':Sequelize[_0xa997('0x1')]},'calleridname':{'type':Sequelize[_0xa997('0x1')]},'callingpres':{'type':Sequelize[_0xa997('0x1')]},'callingani2':{'type':Sequelize[_0xa997('0x1')]},'callington':{'type':Sequelize[_0xa997('0x1')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xa997('0x1')]},'priority':{'type':Sequelize[_0xa997('0x1')]},'enhanced':{'type':Sequelize[_0xa997('0x1')]},'accountcode':{'type':Sequelize[_0xa997('0x1')]},'threadid':{'type':Sequelize[_0xa997('0x1')]},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xa997('0x2')]},'leaveAt':{'type':Sequelize[_0xa997('0x2')]},'bot':{'type':Sequelize[_0xa997('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 02cd93e..6fafd29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe31=['length','include','find','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','name','send','index','map','SquareReport','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','show'];(function(_0x485201,_0x3c533a){var _0x9ca98a=function(_0x418ef0){while(--_0x418ef0){_0x485201['push'](_0x485201['shift']());}};_0x9ca98a(++_0x3c533a);}(_0xfe31,0x1b7));var _0x1fe3=function(_0x1b123b,_0x4bed8c){_0x1b123b=_0x1b123b-0x0;var _0x32cec6=_0xfe31[_0x1b123b];return _0x32cec6;};'use strict';var emlformat=require(_0x1fe3('0x0'));var rimraf=require(_0x1fe3('0x1'));var zipdir=require(_0x1fe3('0x2'));var jsonpatch=require(_0x1fe3('0x3'));var rp=require(_0x1fe3('0x4'));var moment=require('moment');var BPromise=require(_0x1fe3('0x5'));var Mustache=require(_0x1fe3('0x6'));var util=require('util');var path=require(_0x1fe3('0x7'));var sox=require(_0x1fe3('0x8'));var csv=require(_0x1fe3('0x9'));var ejs=require(_0x1fe3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1fe3('0xb'));var squel=require(_0x1fe3('0xc'));var crypto=require(_0x1fe3('0xd'));var jsforce=require(_0x1fe3('0xe'));var deskjs=require(_0x1fe3('0xf'));var toCsv=require(_0x1fe3('0x9'));var querystring=require('querystring');var Papa=require(_0x1fe3('0x10'));var Redis=require('ioredis');var authService=require(_0x1fe3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x1fe3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fe3('0x13'))('api');var utils=require(_0x1fe3('0x14'));var config=require(_0x1fe3('0x15'));var licenseUtil=require(_0x1fe3('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d7250,_0xd85579){_0xd85579=_0xd85579||0xcc;return function(_0xc8c2bf){if(_0xc8c2bf){return _0x1d7250[_0x1fe3('0x17')](_0xd85579);}return _0x1d7250[_0x1fe3('0x18')](_0xd85579)[_0x1fe3('0x19')]();};}function respondWithResult(_0x122a76,_0x4c6c70){_0x4c6c70=_0x4c6c70||0xc8;return function(_0x2c02c4){if(_0x2c02c4){return _0x122a76[_0x1fe3('0x18')](_0x4c6c70)[_0x1fe3('0x1a')](_0x2c02c4);}};}function respondWithFilteredResult(_0x7eb5a6,_0x27da5e){return function(_0x47a245){if(_0x47a245){var _0x3cfb5d=typeof _0x27da5e[_0x1fe3('0x1b')]===_0x1fe3('0x1c')&&typeof _0x27da5e[_0x1fe3('0x1d')]==='undefined';var _0x4baf0e=_0x47a245[_0x1fe3('0x1e')];var _0xc38c19=_0x3cfb5d?0x0:_0x27da5e[_0x1fe3('0x1b')];var _0x3f78bb=_0x3cfb5d?_0x47a245[_0x1fe3('0x1e')]:_0x27da5e['offset']+_0x27da5e['limit'];var _0x2777e0;if(_0x3f78bb>=_0x4baf0e){_0x3f78bb=_0x4baf0e;_0x2777e0=0xc8;}else{_0x2777e0=0xce;}_0x7eb5a6[_0x1fe3('0x18')](_0x2777e0);return _0x7eb5a6[_0x1fe3('0x1f')](_0x1fe3('0x20'),_0xc38c19+'-'+_0x3f78bb+'/'+_0x4baf0e)['json'](_0x47a245);}return null;};}function patchUpdates(_0x1ef638){return function(_0x205655){try{jsonpatch[_0x1fe3('0x21')](_0x205655,_0x1ef638,!![]);}catch(_0x25be7f){return BPromise[_0x1fe3('0x22')](_0x25be7f);}return _0x205655['save']();};}function saveUpdates(_0x51d4fb,_0x23b2c1){return function(_0x77b0c8){if(_0x77b0c8){return _0x77b0c8[_0x1fe3('0x23')](_0x51d4fb)[_0x1fe3('0x24')](function(_0x2dae5b){return _0x2dae5b;});}return null;};}function removeEntity(_0x25b88f,_0x108475){return function(_0x1e0260){if(_0x1e0260){return _0x1e0260['destroy']()[_0x1fe3('0x24')](function(){_0x25b88f[_0x1fe3('0x18')](0xcc)[_0x1fe3('0x19')]();});}};}function handleEntityNotFound(_0x1705ea,_0xfdea3c){return function(_0x5bf399){if(!_0x5bf399){_0x1705ea[_0x1fe3('0x17')](0x194);}return _0x5bf399;};}function handleError(_0x3ba89a,_0x5cabcf){_0x5cabcf=_0x5cabcf||0x1f4;return function(_0xcd376e){logger['error'](_0xcd376e['stack']);if(_0xcd376e['name']){delete _0xcd376e[_0x1fe3('0x25')];}_0x3ba89a['status'](_0x5cabcf)[_0x1fe3('0x26')](_0xcd376e);};}exports[_0x1fe3('0x27')]=function(_0x14704d,_0x483a75){var _0x5540b1={},_0xadf747={},_0x34877f={'count':0x0,'rows':[]};var _0x1e209c=_[_0x1fe3('0x28')](db[_0x1fe3('0x29')][_0x1fe3('0x2a')],function(_0x1d67fc){return{'name':_0x1d67fc[_0x1fe3('0x2b')],'type':_0x1d67fc['type'][_0x1fe3('0x2c')]};});_0xadf747[_0x1fe3('0x2d')]=_[_0x1fe3('0x28')](_0x1e209c,'name');_0xadf747['query']=_[_0x1fe3('0x2e')](_0x14704d[_0x1fe3('0x2f')]);_0xadf747[_0x1fe3('0x30')]=_[_0x1fe3('0x31')](_0xadf747[_0x1fe3('0x2d')],_0xadf747['query']);_0x5540b1[_0x1fe3('0x32')]=_[_0x1fe3('0x31')](_0xadf747['model'],qs[_0x1fe3('0x33')](_0x14704d['query'][_0x1fe3('0x33')]));_0x5540b1[_0x1fe3('0x32')]=_0x5540b1[_0x1fe3('0x32')]['length']?_0x5540b1[_0x1fe3('0x32')]:_0xadf747['model'];if(!_0x14704d[_0x1fe3('0x2f')][_0x1fe3('0x34')]('nolimit')){_0x5540b1['limit']=qs[_0x1fe3('0x1d')](_0x14704d[_0x1fe3('0x2f')][_0x1fe3('0x1d')]);_0x5540b1[_0x1fe3('0x1b')]=qs[_0x1fe3('0x1b')](_0x14704d[_0x1fe3('0x2f')][_0x1fe3('0x1b')]);}_0x5540b1[_0x1fe3('0x35')]=qs[_0x1fe3('0x36')](_0x14704d[_0x1fe3('0x2f')][_0x1fe3('0x36')]);_0x5540b1[_0x1fe3('0x37')]=qs[_0x1fe3('0x30')](_['pick'](_0x14704d[_0x1fe3('0x2f')],_0xadf747[_0x1fe3('0x30')]),_0x1e209c);if(_0x14704d[_0x1fe3('0x2f')][_0x1fe3('0x38')]){_0x5540b1[_0x1fe3('0x37')]=_[_0x1fe3('0x39')](_0x5540b1[_0x1fe3('0x37')],{'$or':_[_0x1fe3('0x28')](_0x1e209c,function(_0x5353cf){if(_0x5353cf[_0x1fe3('0x3a')]!==_0x1fe3('0x3b')){var _0x40d182={};_0x40d182[_0x5353cf[_0x1fe3('0x25')]]={'$like':'%'+_0x14704d['query'][_0x1fe3('0x38')]+'%'};return _0x40d182;}})});}_0x5540b1=_[_0x1fe3('0x39')]({},_0x5540b1,_0x14704d[_0x1fe3('0x3c')]);var _0x2feb4a={'where':_0x5540b1['where']};return db[_0x1fe3('0x29')]['count'](_0x2feb4a)[_0x1fe3('0x24')](function(_0x205f5a){_0x34877f[_0x1fe3('0x1e')]=_0x205f5a;if(_0x14704d['query'][_0x1fe3('0x3d')]){_0x5540b1['include']=[{'all':!![]}];}return db[_0x1fe3('0x29')][_0x1fe3('0x3e')](_0x5540b1);})[_0x1fe3('0x24')](function(_0x68be9b){_0x34877f[_0x1fe3('0x3f')]=_0x68be9b;return _0x34877f;})[_0x1fe3('0x24')](respondWithFilteredResult(_0x483a75,_0x5540b1))['catch'](handleError(_0x483a75,null));};exports[_0x1fe3('0x40')]=function(_0xf7442,_0x2349ff){var _0x5b80e6={'raw':!![],'where':{'id':_0xf7442['params']['id']}},_0x3f9d56={};_0x3f9d56[_0x1fe3('0x2d')]=_[_0x1fe3('0x2e')](db['SquareReport'][_0x1fe3('0x2a')]);_0x3f9d56[_0x1fe3('0x2f')]=_[_0x1fe3('0x2e')](_0xf7442[_0x1fe3('0x2f')]);_0x3f9d56[_0x1fe3('0x30')]=_[_0x1fe3('0x31')](_0x3f9d56[_0x1fe3('0x2d')],_0x3f9d56[_0x1fe3('0x2f')]);_0x5b80e6[_0x1fe3('0x32')]=_['intersection'](_0x3f9d56[_0x1fe3('0x2d')],qs[_0x1fe3('0x33')](_0xf7442[_0x1fe3('0x2f')][_0x1fe3('0x33')]));_0x5b80e6[_0x1fe3('0x32')]=_0x5b80e6['attributes'][_0x1fe3('0x41')]?_0x5b80e6[_0x1fe3('0x32')]:_0x3f9d56[_0x1fe3('0x2d')];if(_0xf7442[_0x1fe3('0x2f')]['includeAll']){_0x5b80e6[_0x1fe3('0x42')]=[{'all':!![]}];}_0x5b80e6=_[_0x1fe3('0x39')]({},_0x5b80e6,_0xf7442[_0x1fe3('0x3c')]);return db['SquareReport'][_0x1fe3('0x43')](_0x5b80e6)[_0x1fe3('0x24')](handleEntityNotFound(_0x2349ff,null))[_0x1fe3('0x24')](respondWithResult(_0x2349ff,null))[_0x1fe3('0x44')](handleError(_0x2349ff,null));};exports['create']=function(_0x7847b0,_0x3551bf){return db['SquareReport']['create'](_0x7847b0[_0x1fe3('0x45')],{})[_0x1fe3('0x24')](respondWithResult(_0x3551bf,0xc9))[_0x1fe3('0x44')](handleError(_0x3551bf,null));};exports[_0x1fe3('0x23')]=function(_0x5576b5,_0x1344eb){if(_0x5576b5[_0x1fe3('0x45')]['id']){delete _0x5576b5[_0x1fe3('0x45')]['id'];}return db['SquareReport'][_0x1fe3('0x43')]({'where':{'id':_0x5576b5['params']['id']}})[_0x1fe3('0x24')](handleEntityNotFound(_0x1344eb,null))[_0x1fe3('0x24')](saveUpdates(_0x5576b5['body'],null))[_0x1fe3('0x24')](respondWithResult(_0x1344eb,null))['catch'](handleError(_0x1344eb,null));};exports['destroy']=function(_0x41a6ea,_0x2dbfa1){return db[_0x1fe3('0x29')][_0x1fe3('0x43')]({'where':{'id':_0x41a6ea[_0x1fe3('0x46')]['id']}})['then'](handleEntityNotFound(_0x2dbfa1,null))['then'](removeEntity(_0x2dbfa1,null))[_0x1fe3('0x44')](handleError(_0x2dbfa1,null));};exports[_0x1fe3('0x47')]=function(_0x28fdc1,_0x3ff16f){return db['SquareReport'][_0x1fe3('0x47')]()['then'](respondWithResult(_0x3ff16f,null))['catch'](handleError(_0x3ff16f,null));};
\ No newline at end of file
+var _0xd3d4=['destroy','sendStatus','error','stack','name','index','SquareReport','rawAttributes','fieldName','type','model','map','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','create','update','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','then'];(function(_0x3c8e57,_0x1ee1a1){var _0x583b29=function(_0x13e29e){while(--_0x13e29e){_0x3c8e57['push'](_0x3c8e57['shift']());}};_0x583b29(++_0x1ee1a1);}(_0xd3d4,0x1e3));var _0x4d3d=function(_0x14f54a,_0x42536b){_0x14f54a=_0x14f54a-0x0;var _0x122b3a=_0xd3d4[_0x14f54a];return _0x122b3a;};'use strict';var emlformat=require(_0x4d3d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4d3d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4d3d('0x2'));var moment=require(_0x4d3d('0x3'));var BPromise=require(_0x4d3d('0x4'));var Mustache=require(_0x4d3d('0x5'));var util=require(_0x4d3d('0x6'));var path=require('path');var sox=require(_0x4d3d('0x7'));var csv=require(_0x4d3d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d3d('0x9'));var squel=require(_0x4d3d('0xa'));var crypto=require(_0x4d3d('0xb'));var jsforce=require(_0x4d3d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4d3d('0x8'));var querystring=require(_0x4d3d('0xd'));var Papa=require(_0x4d3d('0xe'));var Redis=require(_0x4d3d('0xf'));var authService=require(_0x4d3d('0x10'));var qs=require(_0x4d3d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d3d('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x4d3d('0x13'));var config=require(_0x4d3d('0x14'));var licenseUtil=require(_0x4d3d('0x15'));var db=require(_0x4d3d('0x16'))['db'];function respondWithStatusCode(_0x1ae956,_0x3b49c6){_0x3b49c6=_0x3b49c6||0xcc;return function(_0x47d928){if(_0x47d928){return _0x1ae956['sendStatus'](_0x3b49c6);}return _0x1ae956['status'](_0x3b49c6)[_0x4d3d('0x17')]();};}function respondWithResult(_0x5a245e,_0x1fdeec){_0x1fdeec=_0x1fdeec||0xc8;return function(_0x455ca7){if(_0x455ca7){return _0x5a245e[_0x4d3d('0x18')](_0x1fdeec)[_0x4d3d('0x19')](_0x455ca7);}};}function respondWithFilteredResult(_0x83d9ed,_0x764d47){return function(_0x4c3354){if(_0x4c3354){var _0x1ddeb9=typeof _0x764d47['offset']===_0x4d3d('0x1a')&&typeof _0x764d47[_0x4d3d('0x1b')]===_0x4d3d('0x1a');var _0x42c714=_0x4c3354[_0x4d3d('0x1c')];var _0x32175d=_0x1ddeb9?0x0:_0x764d47[_0x4d3d('0x1d')];var _0x16f77f=_0x1ddeb9?_0x4c3354[_0x4d3d('0x1c')]:_0x764d47[_0x4d3d('0x1d')]+_0x764d47[_0x4d3d('0x1b')];var _0x5b7fe6;if(_0x16f77f>=_0x42c714){_0x16f77f=_0x42c714;_0x5b7fe6=0xc8;}else{_0x5b7fe6=0xce;}_0x83d9ed[_0x4d3d('0x18')](_0x5b7fe6);return _0x83d9ed[_0x4d3d('0x1e')](_0x4d3d('0x1f'),_0x32175d+'-'+_0x16f77f+'/'+_0x42c714)['json'](_0x4c3354);}return null;};}function patchUpdates(_0x1e5ba4){return function(_0x6f29e3){try{jsonpatch['apply'](_0x6f29e3,_0x1e5ba4,!![]);}catch(_0x3e1962){return BPromise[_0x4d3d('0x20')](_0x3e1962);}return _0x6f29e3[_0x4d3d('0x21')]();};}function saveUpdates(_0x16382c,_0x2d1415){return function(_0x506617){if(_0x506617){return _0x506617['update'](_0x16382c)[_0x4d3d('0x22')](function(_0x1ca7b1){return _0x1ca7b1;});}return null;};}function removeEntity(_0x2e8807,_0x8052a8){return function(_0x3f4be0){if(_0x3f4be0){return _0x3f4be0[_0x4d3d('0x23')]()['then'](function(){_0x2e8807[_0x4d3d('0x18')](0xcc)[_0x4d3d('0x17')]();});}};}function handleEntityNotFound(_0x21f016,_0x8490d3){return function(_0x2cad8c){if(!_0x2cad8c){_0x21f016[_0x4d3d('0x24')](0x194);}return _0x2cad8c;};}function handleError(_0x3b1ca8,_0x4f4b06){_0x4f4b06=_0x4f4b06||0x1f4;return function(_0xaf51b2){logger[_0x4d3d('0x25')](_0xaf51b2[_0x4d3d('0x26')]);if(_0xaf51b2[_0x4d3d('0x27')]){delete _0xaf51b2['name'];}_0x3b1ca8['status'](_0x4f4b06)['send'](_0xaf51b2);};}exports[_0x4d3d('0x28')]=function(_0x2d9062,_0x204f84){var _0x228795={},_0x552bb4={},_0x2df56c={'count':0x0,'rows':[]};var _0x53aca8=_['map'](db[_0x4d3d('0x29')][_0x4d3d('0x2a')],function(_0x38b40a){return{'name':_0x38b40a[_0x4d3d('0x2b')],'type':_0x38b40a[_0x4d3d('0x2c')]['key']};});_0x552bb4[_0x4d3d('0x2d')]=_[_0x4d3d('0x2e')](_0x53aca8,'name');_0x552bb4[_0x4d3d('0x2f')]=_['keys'](_0x2d9062[_0x4d3d('0x2f')]);_0x552bb4['filters']=_[_0x4d3d('0x30')](_0x552bb4[_0x4d3d('0x2d')],_0x552bb4[_0x4d3d('0x2f')]);_0x228795['attributes']=_['intersection'](_0x552bb4[_0x4d3d('0x2d')],qs[_0x4d3d('0x31')](_0x2d9062['query'][_0x4d3d('0x31')]));_0x228795[_0x4d3d('0x32')]=_0x228795['attributes'][_0x4d3d('0x33')]?_0x228795['attributes']:_0x552bb4[_0x4d3d('0x2d')];if(!_0x2d9062[_0x4d3d('0x2f')][_0x4d3d('0x34')](_0x4d3d('0x35'))){_0x228795[_0x4d3d('0x1b')]=qs[_0x4d3d('0x1b')](_0x2d9062[_0x4d3d('0x2f')]['limit']);_0x228795[_0x4d3d('0x1d')]=qs['offset'](_0x2d9062[_0x4d3d('0x2f')][_0x4d3d('0x1d')]);}_0x228795[_0x4d3d('0x36')]=qs[_0x4d3d('0x37')](_0x2d9062[_0x4d3d('0x2f')][_0x4d3d('0x37')]);_0x228795[_0x4d3d('0x38')]=qs[_0x4d3d('0x39')](_[_0x4d3d('0x3a')](_0x2d9062[_0x4d3d('0x2f')],_0x552bb4['filters']),_0x53aca8);if(_0x2d9062['query'][_0x4d3d('0x3b')]){_0x228795[_0x4d3d('0x38')]=_[_0x4d3d('0x3c')](_0x228795[_0x4d3d('0x38')],{'$or':_[_0x4d3d('0x2e')](_0x53aca8,function(_0x1a1059){if(_0x1a1059[_0x4d3d('0x2c')]!=='VIRTUAL'){var _0x419bb9={};_0x419bb9[_0x1a1059[_0x4d3d('0x27')]]={'$like':'%'+_0x2d9062['query']['filter']+'%'};return _0x419bb9;}})});}_0x228795=_[_0x4d3d('0x3c')]({},_0x228795,_0x2d9062[_0x4d3d('0x3d')]);var _0x1e7c76={'where':_0x228795[_0x4d3d('0x38')]};return db[_0x4d3d('0x29')][_0x4d3d('0x1c')](_0x1e7c76)[_0x4d3d('0x22')](function(_0x3c22dc){_0x2df56c[_0x4d3d('0x1c')]=_0x3c22dc;if(_0x2d9062['query'][_0x4d3d('0x3e')]){_0x228795[_0x4d3d('0x3f')]=[{'all':!![]}];}return db[_0x4d3d('0x29')][_0x4d3d('0x40')](_0x228795);})[_0x4d3d('0x22')](function(_0xe5bbd5){_0x2df56c['rows']=_0xe5bbd5;return _0x2df56c;})[_0x4d3d('0x22')](respondWithFilteredResult(_0x204f84,_0x228795))[_0x4d3d('0x41')](handleError(_0x204f84,null));};exports[_0x4d3d('0x42')]=function(_0x38ef5f,_0x54e27f){var _0x385e0a={'raw':!![],'where':{'id':_0x38ef5f[_0x4d3d('0x43')]['id']}},_0x47cf82={};_0x47cf82['model']=_[_0x4d3d('0x44')](db[_0x4d3d('0x29')][_0x4d3d('0x2a')]);_0x47cf82[_0x4d3d('0x2f')]=_[_0x4d3d('0x44')](_0x38ef5f[_0x4d3d('0x2f')]);_0x47cf82[_0x4d3d('0x39')]=_[_0x4d3d('0x30')](_0x47cf82['model'],_0x47cf82[_0x4d3d('0x2f')]);_0x385e0a[_0x4d3d('0x32')]=_[_0x4d3d('0x30')](_0x47cf82[_0x4d3d('0x2d')],qs['fields'](_0x38ef5f['query'][_0x4d3d('0x31')]));_0x385e0a[_0x4d3d('0x32')]=_0x385e0a['attributes'][_0x4d3d('0x33')]?_0x385e0a['attributes']:_0x47cf82[_0x4d3d('0x2d')];if(_0x38ef5f[_0x4d3d('0x2f')]['includeAll']){_0x385e0a[_0x4d3d('0x3f')]=[{'all':!![]}];}_0x385e0a=_[_0x4d3d('0x3c')]({},_0x385e0a,_0x38ef5f['options']);return db[_0x4d3d('0x29')]['find'](_0x385e0a)[_0x4d3d('0x22')](handleEntityNotFound(_0x54e27f,null))[_0x4d3d('0x22')](respondWithResult(_0x54e27f,null))[_0x4d3d('0x41')](handleError(_0x54e27f,null));};exports[_0x4d3d('0x45')]=function(_0x58293f,_0x1b1398){return db['SquareReport'][_0x4d3d('0x45')](_0x58293f['body'],{})['then'](respondWithResult(_0x1b1398,0xc9))[_0x4d3d('0x41')](handleError(_0x1b1398,null));};exports[_0x4d3d('0x46')]=function(_0x2c49bf,_0x52c9bb){if(_0x2c49bf['body']['id']){delete _0x2c49bf[_0x4d3d('0x47')]['id'];}return db['SquareReport'][_0x4d3d('0x48')]({'where':{'id':_0x2c49bf[_0x4d3d('0x43')]['id']}})[_0x4d3d('0x22')](handleEntityNotFound(_0x52c9bb,null))[_0x4d3d('0x22')](saveUpdates(_0x2c49bf[_0x4d3d('0x47')],null))[_0x4d3d('0x22')](respondWithResult(_0x52c9bb,null))['catch'](handleError(_0x52c9bb,null));};exports[_0x4d3d('0x23')]=function(_0x13a4f8,_0xf48c96){return db[_0x4d3d('0x29')][_0x4d3d('0x48')]({'where':{'id':_0x13a4f8[_0x4d3d('0x43')]['id']}})[_0x4d3d('0x22')](handleEntityNotFound(_0xf48c96,null))['then'](removeEntity(_0xf48c96,null))[_0x4d3d('0x41')](handleError(_0xf48c96,null));};exports[_0x4d3d('0x49')]=function(_0x24253d,_0x4a22dc){return db[_0x4d3d('0x29')][_0x4d3d('0x49')]()[_0x4d3d('0x22')](respondWithResult(_0x4a22dc,null))[_0x4d3d('0x41')](handleError(_0x4a22dc,null));};
\ No newline at end of file
index 96572ad..f482240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ed=['bluebird','request-promise','path','rimraf','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x98ed,0x1a5));var _0xd98e=function(_0x517a2d,_0x21e839){_0x517a2d=_0x517a2d-0x0;var _0x42498c=_0x98ed[_0x517a2d];return _0x42498c;};'use strict';var _=require(_0xd98e('0x0'));var util=require(_0xd98e('0x1'));var logger=require('../../config/logger')(_0xd98e('0x2'));var moment=require(_0xd98e('0x3'));var BPromise=require(_0xd98e('0x4'));var rp=require(_0xd98e('0x5'));var fs=require('fs');var path=require(_0xd98e('0x6'));var rimraf=require(_0xd98e('0x7'));var config=require('../../config/environment');var attributes=require(_0xd98e('0x8'));module[_0xd98e('0x9')]=function(_0x3e1b84,_0x1c0215){return _0x3e1b84[_0xd98e('0xa')](_0xd98e('0xb'),attributes,{'tableName':_0xd98e('0xc'),'paranoid':![],'indexes':[{'name':_0xd98e('0xd'),'fields':[_0xd98e('0xe'),_0xd98e('0xf')]},{'name':_0xd98e('0x10'),'fields':[_0xd98e('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe06=['SquareReport','report_square','uid_pname','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe06,0xc8));var _0x6be0=function(_0x11ba83,_0xd5611a){_0x11ba83=_0x11ba83-0x0;var _0x3f3925=_0xbe06[_0x11ba83];return _0x3f3925;};'use strict';var _=require(_0x6be0('0x0'));var util=require(_0x6be0('0x1'));var logger=require(_0x6be0('0x2'))(_0x6be0('0x3'));var moment=require(_0x6be0('0x4'));var BPromise=require(_0x6be0('0x5'));var rp=require(_0x6be0('0x6'));var fs=require('fs');var path=require(_0x6be0('0x7'));var rimraf=require('rimraf');var config=require(_0x6be0('0x8'));var attributes=require('./squareReport.attributes');module[_0x6be0('0x9')]=function(_0xc7c7df,_0x30c3d6){return _0xc7c7df['define'](_0x6be0('0xa'),attributes,{'tableName':_0x6be0('0xb'),'paranoid':![],'indexes':[{'name':_0x6be0('0xc'),'fields':['uniqueid',_0x6be0('0xd')]},{'name':_0x6be0('0xe'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
index 8fdb799..4c5195b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe670=['code','message','result','catch','CreateSquareReport','body','options','raw','UpdateSquareReport','SquareReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5e5ecb,_0x2b519b){var _0x322b22=function(_0x47bbf2){while(--_0x47bbf2){_0x5e5ecb['push'](_0x5e5ecb['shift']());}};_0x322b22(++_0x2b519b);}(_0xe670,0x11e));var _0x0e67=function(_0x5c4f6b,_0x2cdfce){_0x5c4f6b=_0x5c4f6b-0x0;var _0x104c4e=_0xe670[_0x5c4f6b];return _0x104c4e;};'use strict';var _=require(_0x0e67('0x0'));var util=require(_0x0e67('0x1'));var moment=require(_0x0e67('0x2'));var BPromise=require(_0x0e67('0x3'));var rs=require(_0x0e67('0x4'));var fs=require('fs');var Redis=require(_0x0e67('0x5'));var db=require(_0x0e67('0x6'))['db'];var utils=require(_0x0e67('0x7'));var logger=require(_0x0e67('0x8'))(_0x0e67('0x9'));var config=require('../../config/environment');var jayson=require(_0x0e67('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3ab803,_0x1d5ebb,_0x56834c){return new BPromise(function(_0x49a69f,_0x3d4045){return client[_0x0e67('0xb')](_0x3ab803,_0x56834c)[_0x0e67('0xc')](function(_0x39a89f){logger[_0x0e67('0xd')](_0x0e67('0xe'),_0x1d5ebb,_0x0e67('0xf'));logger[_0x0e67('0x10')](_0x0e67('0x11'),_0x1d5ebb,_0x0e67('0xf'),JSON[_0x0e67('0x12')](_0x39a89f));if(_0x39a89f[_0x0e67('0x13')]){if(_0x39a89f[_0x0e67('0x13')][_0x0e67('0x14')]===0x1f4){logger[_0x0e67('0x13')](_0x0e67('0xe'),_0x1d5ebb,_0x39a89f[_0x0e67('0x13')][_0x0e67('0x15')]);return _0x3d4045(_0x39a89f[_0x0e67('0x13')][_0x0e67('0x15')]);}logger[_0x0e67('0x13')](_0x0e67('0xe'),_0x1d5ebb,_0x39a89f[_0x0e67('0x13')][_0x0e67('0x15')]);return _0x49a69f(_0x39a89f[_0x0e67('0x13')][_0x0e67('0x15')]);}else{logger[_0x0e67('0xd')](_0x0e67('0xe'),_0x1d5ebb,'request\x20sent');_0x49a69f(_0x39a89f[_0x0e67('0x16')][_0x0e67('0x15')]);}})[_0x0e67('0x17')](function(_0x1376fa){logger[_0x0e67('0x13')](_0x0e67('0xe'),_0x1d5ebb,_0x1376fa);_0x3d4045(_0x1376fa);});});}exports[_0x0e67('0x18')]=function(_0xd42bcd){var _0x4ece64=this;return new Promise(function(_0x276b14,_0x490ee1){return db['SquareReport']['create'](_0xd42bcd[_0x0e67('0x19')],{'raw':_0xd42bcd[_0x0e67('0x1a')]?_0xd42bcd['options'][_0x0e67('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x27c3d9){logger[_0x0e67('0xd')]('CreateSquareReport',_0xd42bcd);logger[_0x0e67('0x10')](_0x0e67('0x18'),_0xd42bcd,JSON[_0x0e67('0x12')](_0x27c3d9));_0x276b14(_0x27c3d9);})[_0x0e67('0x17')](function(_0x344476){logger[_0x0e67('0x13')](_0x0e67('0x18'),_0x344476[_0x0e67('0x15')],_0xd42bcd);_0x490ee1(_0x4ece64['error'](0x1f4,_0x344476['message']));});});};exports[_0x0e67('0x1c')]=function(_0x5b19b4){var _0x28d274=this;return new Promise(function(_0x4a26ad,_0x2c4daa){return db[_0x0e67('0x1d')][_0x0e67('0x1e')](_0x5b19b4[_0x0e67('0x19')],{'raw':_0x5b19b4[_0x0e67('0x1a')]?_0x5b19b4[_0x0e67('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b19b4[_0x0e67('0x1a')]?_0x5b19b4['options'][_0x0e67('0x1f')]||null:null,'attributes':_0x5b19b4[_0x0e67('0x1a')]?_0x5b19b4['options'][_0x0e67('0x20')]||null:null,'limit':_0x5b19b4[_0x0e67('0x1a')]?_0x5b19b4[_0x0e67('0x1a')][_0x0e67('0x21')]||null:null})['then'](function(_0x41c5e2){logger[_0x0e67('0xd')](_0x0e67('0x1c'),_0x5b19b4);logger['debug'](_0x0e67('0x1c'),_0x5b19b4,JSON[_0x0e67('0x12')](_0x41c5e2));_0x4a26ad(_0x41c5e2);})[_0x0e67('0x17')](function(_0x589787){logger['error']('UpdateSquareReport',_0x589787[_0x0e67('0x15')],_0x5b19b4);_0x2c4daa(_0x28d274[_0x0e67('0x13')](0x1f4,_0x589787[_0x0e67('0x15')]));});});};
\ No newline at end of file
+var _0xb523=['raw','CreateSquareReport','UpdateSquareReport','update','attributes','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','SquareReport','create','body','options'];(function(_0x36501b,_0x442101){var _0x1dc204=function(_0xe7b088){while(--_0xe7b088){_0x36501b['push'](_0x36501b['shift']());}};_0x1dc204(++_0x442101);}(_0xb523,0x179));var _0x3b52=function(_0x1dafb5,_0x47281b){_0x1dafb5=_0x1dafb5-0x0;var _0x55a156=_0xb523[_0x1dafb5];return _0x55a156;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3b52('0x0'));var BPromise=require(_0x3b52('0x1'));var rs=require(_0x3b52('0x2'));var fs=require('fs');var Redis=require(_0x3b52('0x3'));var db=require(_0x3b52('0x4'))['db'];var utils=require(_0x3b52('0x5'));var logger=require(_0x3b52('0x6'))(_0x3b52('0x7'));var config=require(_0x3b52('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x3b52('0x9')][_0x3b52('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5bc480,_0x439fa1,_0x11a624){return new BPromise(function(_0x219423,_0x4945f8){return client[_0x3b52('0xb')](_0x5bc480,_0x11a624)[_0x3b52('0xc')](function(_0x58457f){logger[_0x3b52('0xd')](_0x3b52('0xe'),_0x439fa1,_0x3b52('0xf'));logger[_0x3b52('0x10')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x439fa1,_0x3b52('0xf'),JSON[_0x3b52('0x11')](_0x58457f));if(_0x58457f['error']){if(_0x58457f[_0x3b52('0x12')][_0x3b52('0x13')]===0x1f4){logger[_0x3b52('0x12')](_0x3b52('0xe'),_0x439fa1,_0x58457f[_0x3b52('0x12')][_0x3b52('0x14')]);return _0x4945f8(_0x58457f['error'][_0x3b52('0x14')]);}logger[_0x3b52('0x12')](_0x3b52('0xe'),_0x439fa1,_0x58457f[_0x3b52('0x12')]['message']);return _0x219423(_0x58457f[_0x3b52('0x12')][_0x3b52('0x14')]);}else{logger[_0x3b52('0xd')]('SquareReport,\x20%s,\x20%s',_0x439fa1,_0x3b52('0xf'));_0x219423(_0x58457f['result'][_0x3b52('0x14')]);}})[_0x3b52('0x15')](function(_0xc266f1){logger[_0x3b52('0x12')]('SquareReport,\x20%s,\x20%s',_0x439fa1,_0xc266f1);_0x4945f8(_0xc266f1);});});}exports['CreateSquareReport']=function(_0x5227bc){var _0x53d4ff=this;return new Promise(function(_0x230a86,_0x163ad5){return db[_0x3b52('0x16')][_0x3b52('0x17')](_0x5227bc[_0x3b52('0x18')],{'raw':_0x5227bc[_0x3b52('0x19')]?_0x5227bc[_0x3b52('0x19')][_0x3b52('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x51faa1){logger[_0x3b52('0xd')](_0x3b52('0x1b'),_0x5227bc);logger[_0x3b52('0x10')](_0x3b52('0x1b'),_0x5227bc,JSON[_0x3b52('0x11')](_0x51faa1));_0x230a86(_0x51faa1);})[_0x3b52('0x15')](function(_0x428ac7){logger[_0x3b52('0x12')](_0x3b52('0x1b'),_0x428ac7[_0x3b52('0x14')],_0x5227bc);_0x163ad5(_0x53d4ff[_0x3b52('0x12')](0x1f4,_0x428ac7[_0x3b52('0x14')]));});});};exports[_0x3b52('0x1c')]=function(_0x488ecb){var _0x52db64=this;return new Promise(function(_0x4628e5,_0x3431ac){return db['SquareReport'][_0x3b52('0x1d')](_0x488ecb['body'],{'raw':_0x488ecb[_0x3b52('0x19')]?_0x488ecb[_0x3b52('0x19')][_0x3b52('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x488ecb['options']?_0x488ecb[_0x3b52('0x19')]['where']||null:null,'attributes':_0x488ecb[_0x3b52('0x19')]?_0x488ecb[_0x3b52('0x19')][_0x3b52('0x1e')]||null:null,'limit':_0x488ecb[_0x3b52('0x19')]?_0x488ecb['options']['limit']||null:null})[_0x3b52('0xc')](function(_0x457531){logger[_0x3b52('0xd')](_0x3b52('0x1c'),_0x488ecb);logger[_0x3b52('0x10')]('UpdateSquareReport',_0x488ecb,JSON[_0x3b52('0x11')](_0x457531));_0x4628e5(_0x457531);})[_0x3b52('0x15')](function(_0x2e29a9){logger['error']('UpdateSquareReport',_0x2e29a9['message'],_0x488ecb);_0x3431ac(_0x52db64[_0x3b52('0x12')](0x1f4,_0x2e29a9[_0x3b52('0x14')]));});});};
\ No newline at end of file
index dcb71a0..eab3274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf798=['./squareReportDetail.controller','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x42a1f2,_0x3dd904){var _0x35629e=function(_0x17a482){while(--_0x17a482){_0x42a1f2['push'](_0x42a1f2['shift']());}};_0x35629e(++_0x3dd904);}(_0xf798,0x148));var _0x8f79=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xf798[_0x32f7d7];return _0x133d09;};'use strict';var multer=require(_0x8f79('0x0'));var util=require(_0x8f79('0x1'));var path=require(_0x8f79('0x2'));var timeout=require('connect-timeout');var express=require(_0x8f79('0x3'));var router=express[_0x8f79('0x4')]();var fs_extra=require(_0x8f79('0x5'));var auth=require(_0x8f79('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8f79('0x7'));var controller=require(_0x8f79('0x8'));router[_0x8f79('0x9')]('/',auth[_0x8f79('0xa')](),controller[_0x8f79('0xb')]);router[_0x8f79('0x9')](_0x8f79('0xc'),auth[_0x8f79('0xa')](),controller['describe']);router['get'](_0x8f79('0xd'),auth['isAuthenticated'](),controller[_0x8f79('0xe')]);router['post']('/',auth[_0x8f79('0xa')](),controller[_0x8f79('0xf')]);router[_0x8f79('0x10')](_0x8f79('0xd'),auth['isAuthenticated'](),controller[_0x8f79('0x11')]);router[_0x8f79('0x12')](_0x8f79('0xd'),auth[_0x8f79('0xa')](),controller[_0x8f79('0x13')]);module[_0x8f79('0x14')]=router;
\ No newline at end of file
+var _0x84dc=['describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe'];(function(_0x16b654,_0x3fe8cb){var _0x39fcc4=function(_0x1a401c){while(--_0x1a401c){_0x16b654['push'](_0x16b654['shift']());}};_0x39fcc4(++_0x3fe8cb);}(_0x84dc,0x17f));var _0xc84d=function(_0x4deacd,_0x4d7e3a){_0x4deacd=_0x4deacd-0x0;var _0x462519=_0x84dc[_0x4deacd];return _0x462519;};'use strict';var multer=require(_0xc84d('0x0'));var util=require(_0xc84d('0x1'));var path=require(_0xc84d('0x2'));var timeout=require(_0xc84d('0x3'));var express=require('express');var router=express[_0xc84d('0x4')]();var fs_extra=require(_0xc84d('0x5'));var auth=require(_0xc84d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc84d('0x7'));var controller=require(_0xc84d('0x8'));router[_0xc84d('0x9')]('/',auth[_0xc84d('0xa')](),controller[_0xc84d('0xb')]);router[_0xc84d('0x9')](_0xc84d('0xc'),auth['isAuthenticated'](),controller[_0xc84d('0xd')]);router[_0xc84d('0x9')](_0xc84d('0xe'),auth['isAuthenticated'](),controller[_0xc84d('0xf')]);router[_0xc84d('0x10')]('/',auth[_0xc84d('0xa')](),controller[_0xc84d('0x11')]);router['put']('/:id',auth[_0xc84d('0xa')](),controller[_0xc84d('0x12')]);router[_0xc84d('0x13')](_0xc84d('0xe'),auth[_0xc84d('0xa')](),controller[_0xc84d('0x14')]);module[_0xc84d('0x15')]=router;
\ No newline at end of file
index c18e717..85e61c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8499=['sequelize','exports','STRING','TEXT'];(function(_0x13c434,_0x443f7a){var _0x2c3eaa=function(_0x278c8c){while(--_0x278c8c){_0x13c434['push'](_0x13c434['shift']());}};_0x2c3eaa(++_0x443f7a);}(_0x8499,0x19c));var _0x9849=function(_0x30cffb,_0x1a1fae){_0x30cffb=_0x30cffb-0x0;var _0x5734cb=_0x8499[_0x30cffb];return _0x5734cb;};'use strict';var Sequelize=require(_0x9849('0x0'));module[_0x9849('0x1')]={'uniqueid':{'type':Sequelize[_0x9849('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x9849('0x3')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x9849('0x2')]}};
\ No newline at end of file
+var _0x5cc3=['STRING','TEXT','sequelize','exports'];(function(_0x152136,_0x4f14f1){var _0x20df44=function(_0x362877){while(--_0x362877){_0x152136['push'](_0x152136['shift']());}};_0x20df44(++_0x4f14f1);}(_0x5cc3,0xce));var _0x35cc=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5cc3[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x35cc('0x0'));module[_0x35cc('0x1')]={'uniqueid':{'type':Sequelize[_0x35cc('0x2')]},'node':{'type':Sequelize[_0x35cc('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x35cc('0x3')]},'project_name':{'type':Sequelize[_0x35cc('0x2')]},'callerid':{'type':Sequelize[_0x35cc('0x2')]}};
\ No newline at end of file
index 37820e3..eff9c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x156a=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','SquareDetailsReport','rawAttributes','type','key','keys','filters','intersection','model','query','fields','length','attributes','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis'];(function(_0x57da0a,_0x284aed){var _0x3145d5=function(_0xfe7c3b){while(--_0xfe7c3b){_0x57da0a['push'](_0x57da0a['shift']());}};_0x3145d5(++_0x284aed);}(_0x156a,0x82));var _0xa156=function(_0x310867,_0x2fa677){_0x310867=_0x310867-0x0;var _0x2b6587=_0x156a[_0x310867];return _0x2b6587;};'use strict';var emlformat=require(_0xa156('0x0'));var rimraf=require(_0xa156('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa156('0x2'));var rp=require('request-promise');var moment=require(_0xa156('0x3'));var BPromise=require(_0xa156('0x4'));var Mustache=require(_0xa156('0x5'));var util=require(_0xa156('0x6'));var path=require(_0xa156('0x7'));var sox=require(_0xa156('0x8'));var csv=require(_0xa156('0x9'));var ejs=require(_0xa156('0xa'));var fs=require('fs');var fs_extra=require(_0xa156('0xb'));var _=require(_0xa156('0xc'));var squel=require('squel');var crypto=require(_0xa156('0xd'));var jsforce=require(_0xa156('0xe'));var deskjs=require(_0xa156('0xf'));var toCsv=require(_0xa156('0x9'));var querystring=require('querystring');var Papa=require(_0xa156('0x10'));var Redis=require(_0xa156('0x11'));var authService=require(_0xa156('0x12'));var qs=require(_0xa156('0x13'));var as=require(_0xa156('0x14'));var hardwareService=require(_0xa156('0x15'));var logger=require(_0xa156('0x16'))('api');var utils=require(_0xa156('0x17'));var config=require(_0xa156('0x18'));var licenseUtil=require(_0xa156('0x19'));var db=require(_0xa156('0x1a'))['db'];function respondWithStatusCode(_0xe53a18,_0x2e5cf9){_0x2e5cf9=_0x2e5cf9||0xcc;return function(_0x18a549){if(_0x18a549){return _0xe53a18[_0xa156('0x1b')](_0x2e5cf9);}return _0xe53a18[_0xa156('0x1c')](_0x2e5cf9)[_0xa156('0x1d')]();};}function respondWithResult(_0x4dd868,_0x55c2e8){_0x55c2e8=_0x55c2e8||0xc8;return function(_0x51f3be){if(_0x51f3be){return _0x4dd868[_0xa156('0x1c')](_0x55c2e8)[_0xa156('0x1e')](_0x51f3be);}};}function respondWithFilteredResult(_0xbc42e,_0x2e1c88){return function(_0xf16868){if(_0xf16868){var _0x563574=typeof _0x2e1c88['offset']===_0xa156('0x1f')&&typeof _0x2e1c88[_0xa156('0x20')]==='undefined';var _0x132ed2=_0xf16868[_0xa156('0x21')];var _0x57f40a=_0x563574?0x0:_0x2e1c88[_0xa156('0x22')];var _0x295e31=_0x563574?_0xf16868[_0xa156('0x21')]:_0x2e1c88[_0xa156('0x22')]+_0x2e1c88[_0xa156('0x20')];var _0xdecd27;if(_0x295e31>=_0x132ed2){_0x295e31=_0x132ed2;_0xdecd27=0xc8;}else{_0xdecd27=0xce;}_0xbc42e[_0xa156('0x1c')](_0xdecd27);return _0xbc42e['set'](_0xa156('0x23'),_0x57f40a+'-'+_0x295e31+'/'+_0x132ed2)[_0xa156('0x1e')](_0xf16868);}return null;};}function patchUpdates(_0x508d10){return function(_0x422ef9){try{jsonpatch[_0xa156('0x24')](_0x422ef9,_0x508d10,!![]);}catch(_0x85cf95){return BPromise[_0xa156('0x25')](_0x85cf95);}return _0x422ef9[_0xa156('0x26')]();};}function saveUpdates(_0x249d6e,_0x16db7e){return function(_0x542c5c){if(_0x542c5c){return _0x542c5c[_0xa156('0x27')](_0x249d6e)['then'](function(_0x5d43f9){return _0x5d43f9;});}return null;};}function removeEntity(_0x507650,_0x5fef4b){return function(_0x5976de){if(_0x5976de){return _0x5976de[_0xa156('0x28')]()[_0xa156('0x29')](function(){_0x507650[_0xa156('0x1c')](0xcc)[_0xa156('0x1d')]();});}};}function handleEntityNotFound(_0x4e77e2,_0x5e0fbe){return function(_0x2acbe7){if(!_0x2acbe7){_0x4e77e2[_0xa156('0x1b')](0x194);}return _0x2acbe7;};}function handleError(_0x4e6e3f,_0xd919f1){_0xd919f1=_0xd919f1||0x1f4;return function(_0x825c9a){logger['error'](_0x825c9a['stack']);if(_0x825c9a[_0xa156('0x2a')]){delete _0x825c9a[_0xa156('0x2a')];}_0x4e6e3f[_0xa156('0x1c')](_0xd919f1)[_0xa156('0x2b')](_0x825c9a);};}exports[_0xa156('0x2c')]=function(_0x16c4e7,_0x5a5bac){var _0xe924fb={},_0x14439b={},_0x33d0b5={'count':0x0,'rows':[]};var _0x57999b=_[_0xa156('0x2d')](db[_0xa156('0x2e')][_0xa156('0x2f')],function(_0x1a4b29){return{'name':_0x1a4b29['fieldName'],'type':_0x1a4b29[_0xa156('0x30')][_0xa156('0x31')]};});_0x14439b['model']=_[_0xa156('0x2d')](_0x57999b,_0xa156('0x2a'));_0x14439b['query']=_[_0xa156('0x32')](_0x16c4e7['query']);_0x14439b[_0xa156('0x33')]=_[_0xa156('0x34')](_0x14439b[_0xa156('0x35')],_0x14439b[_0xa156('0x36')]);_0xe924fb['attributes']=_[_0xa156('0x34')](_0x14439b['model'],qs[_0xa156('0x37')](_0x16c4e7[_0xa156('0x36')][_0xa156('0x37')]));_0xe924fb['attributes']=_0xe924fb['attributes'][_0xa156('0x38')]?_0xe924fb[_0xa156('0x39')]:_0x14439b[_0xa156('0x35')];if(!_0x16c4e7[_0xa156('0x36')]['hasOwnProperty'](_0xa156('0x3a'))){_0xe924fb[_0xa156('0x20')]=qs[_0xa156('0x20')](_0x16c4e7[_0xa156('0x36')][_0xa156('0x20')]);_0xe924fb['offset']=qs['offset'](_0x16c4e7[_0xa156('0x36')][_0xa156('0x22')]);}_0xe924fb['order']=qs[_0xa156('0x3b')](_0x16c4e7[_0xa156('0x36')]['sort']);_0xe924fb[_0xa156('0x3c')]=qs['filters'](_['pick'](_0x16c4e7[_0xa156('0x36')],_0x14439b[_0xa156('0x33')]),_0x57999b);if(_0x16c4e7[_0xa156('0x36')][_0xa156('0x3d')]){_0xe924fb['where']=_[_0xa156('0x3e')](_0xe924fb[_0xa156('0x3c')],{'$or':_['map'](_0x57999b,function(_0x1ca9c4){if(_0x1ca9c4['type']!==_0xa156('0x3f')){var _0x4a1b26={};_0x4a1b26[_0x1ca9c4[_0xa156('0x2a')]]={'$like':'%'+_0x16c4e7[_0xa156('0x36')][_0xa156('0x3d')]+'%'};return _0x4a1b26;}})});}_0xe924fb=_[_0xa156('0x3e')]({},_0xe924fb,_0x16c4e7['options']);var _0x2bd311={'where':_0xe924fb[_0xa156('0x3c')]};return db['SquareDetailsReport'][_0xa156('0x21')](_0x2bd311)[_0xa156('0x29')](function(_0x127a94){_0x33d0b5[_0xa156('0x21')]=_0x127a94;if(_0x16c4e7[_0xa156('0x36')][_0xa156('0x40')]){_0xe924fb[_0xa156('0x41')]=[{'all':!![]}];}return db[_0xa156('0x2e')][_0xa156('0x42')](_0xe924fb);})[_0xa156('0x29')](function(_0xa8bb05){_0x33d0b5[_0xa156('0x43')]=_0xa8bb05;return _0x33d0b5;})[_0xa156('0x29')](respondWithFilteredResult(_0x5a5bac,_0xe924fb))[_0xa156('0x44')](handleError(_0x5a5bac,null));};exports[_0xa156('0x45')]=function(_0x389918,_0x2ab2a7){var _0x1ebc64={'raw':!![],'where':{'id':_0x389918[_0xa156('0x46')]['id']}},_0x522a1e={};_0x522a1e[_0xa156('0x35')]=_['keys'](db[_0xa156('0x2e')][_0xa156('0x2f')]);_0x522a1e[_0xa156('0x36')]=_[_0xa156('0x32')](_0x389918[_0xa156('0x36')]);_0x522a1e['filters']=_[_0xa156('0x34')](_0x522a1e[_0xa156('0x35')],_0x522a1e[_0xa156('0x36')]);_0x1ebc64[_0xa156('0x39')]=_[_0xa156('0x34')](_0x522a1e[_0xa156('0x35')],qs[_0xa156('0x37')](_0x389918[_0xa156('0x36')][_0xa156('0x37')]));_0x1ebc64['attributes']=_0x1ebc64[_0xa156('0x39')]['length']?_0x1ebc64[_0xa156('0x39')]:_0x522a1e[_0xa156('0x35')];if(_0x389918['query'][_0xa156('0x40')]){_0x1ebc64[_0xa156('0x41')]=[{'all':!![]}];}_0x1ebc64=_[_0xa156('0x3e')]({},_0x1ebc64,_0x389918['options']);return db[_0xa156('0x2e')][_0xa156('0x47')](_0x1ebc64)['then'](handleEntityNotFound(_0x2ab2a7,null))['then'](respondWithResult(_0x2ab2a7,null))['catch'](handleError(_0x2ab2a7,null));};exports[_0xa156('0x48')]=function(_0x1c5f8c,_0x2c8002){return db['SquareDetailsReport']['create'](_0x1c5f8c[_0xa156('0x49')],{})['then'](respondWithResult(_0x2c8002,0xc9))['catch'](handleError(_0x2c8002,null));};exports[_0xa156('0x27')]=function(_0x330d08,_0x45c403){if(_0x330d08['body']['id']){delete _0x330d08[_0xa156('0x49')]['id'];}return db[_0xa156('0x2e')][_0xa156('0x47')]({'where':{'id':_0x330d08[_0xa156('0x46')]['id']}})[_0xa156('0x29')](handleEntityNotFound(_0x45c403,null))[_0xa156('0x29')](saveUpdates(_0x330d08['body'],null))[_0xa156('0x29')](respondWithResult(_0x45c403,null))[_0xa156('0x44')](handleError(_0x45c403,null));};exports[_0xa156('0x28')]=function(_0x300632,_0x547e71){return db[_0xa156('0x2e')][_0xa156('0x47')]({'where':{'id':_0x300632[_0xa156('0x46')]['id']}})[_0xa156('0x29')](handleEntityNotFound(_0x547e71,null))['then'](removeEntity(_0x547e71,null))[_0xa156('0x44')](handleError(_0x547e71,null));};exports['describe']=function(_0x64582b,_0x1a382f){return db[_0xa156('0x2e')]['describe']()[_0xa156('0x29')](respondWithResult(_0x1a382f,null))[_0xa156('0x44')](handleError(_0x1a382f,null));};
\ No newline at end of file
+var _0x8dcc=['VIRTUAL','includeAll','include','findAll','rows','catch','params','merge','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','Content-Range','json','reject','save','update','destroy','then','error','stack','name','send','SquareDetailsReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','map'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x8dcc,0xf1));var _0xc8dc=function(_0x275fab,_0x1e7bd7){_0x275fab=_0x275fab-0x0;var _0x1a0f2c=_0x8dcc[_0x275fab];return _0x1a0f2c;};'use strict';var emlformat=require(_0xc8dc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc8dc('0x1'));var jsonpatch=require(_0xc8dc('0x2'));var rp=require('request-promise');var moment=require(_0xc8dc('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc8dc('0x4'));var util=require(_0xc8dc('0x5'));var path=require('path');var sox=require(_0xc8dc('0x6'));var csv=require(_0xc8dc('0x7'));var ejs=require(_0xc8dc('0x8'));var fs=require('fs');var fs_extra=require(_0xc8dc('0x9'));var _=require(_0xc8dc('0xa'));var squel=require(_0xc8dc('0xb'));var crypto=require(_0xc8dc('0xc'));var jsforce=require(_0xc8dc('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc8dc('0x7'));var querystring=require(_0xc8dc('0xe'));var Papa=require('papaparse');var Redis=require(_0xc8dc('0xf'));var authService=require(_0xc8dc('0x10'));var qs=require(_0xc8dc('0x11'));var as=require(_0xc8dc('0x12'));var hardwareService=require(_0xc8dc('0x13'));var logger=require(_0xc8dc('0x14'))(_0xc8dc('0x15'));var utils=require(_0xc8dc('0x16'));var config=require(_0xc8dc('0x17'));var licenseUtil=require(_0xc8dc('0x18'));var db=require(_0xc8dc('0x19'))['db'];function respondWithStatusCode(_0x499dde,_0x504470){_0x504470=_0x504470||0xcc;return function(_0x208ce1){if(_0x208ce1){return _0x499dde[_0xc8dc('0x1a')](_0x504470);}return _0x499dde[_0xc8dc('0x1b')](_0x504470)[_0xc8dc('0x1c')]();};}function respondWithResult(_0x2c9281,_0x49ab99){_0x49ab99=_0x49ab99||0xc8;return function(_0x489f80){if(_0x489f80){return _0x2c9281[_0xc8dc('0x1b')](_0x49ab99)['json'](_0x489f80);}};}function respondWithFilteredResult(_0x2e85aa,_0x32be9c){return function(_0x292845){if(_0x292845){var _0x5c2061=typeof _0x32be9c['offset']==='undefined'&&typeof _0x32be9c['limit']===_0xc8dc('0x1d');var _0x35bd8f=_0x292845[_0xc8dc('0x1e')];var _0x1dd564=_0x5c2061?0x0:_0x32be9c[_0xc8dc('0x1f')];var _0xf9de1e=_0x5c2061?_0x292845[_0xc8dc('0x1e')]:_0x32be9c[_0xc8dc('0x1f')]+_0x32be9c['limit'];var _0x290894;if(_0xf9de1e>=_0x35bd8f){_0xf9de1e=_0x35bd8f;_0x290894=0xc8;}else{_0x290894=0xce;}_0x2e85aa[_0xc8dc('0x1b')](_0x290894);return _0x2e85aa['set'](_0xc8dc('0x20'),_0x1dd564+'-'+_0xf9de1e+'/'+_0x35bd8f)[_0xc8dc('0x21')](_0x292845);}return null;};}function patchUpdates(_0xb36b81){return function(_0x488a84){try{jsonpatch['apply'](_0x488a84,_0xb36b81,!![]);}catch(_0x57ec7d){return BPromise[_0xc8dc('0x22')](_0x57ec7d);}return _0x488a84[_0xc8dc('0x23')]();};}function saveUpdates(_0x283ad3,_0xf65d7f){return function(_0x22fdf7){if(_0x22fdf7){return _0x22fdf7[_0xc8dc('0x24')](_0x283ad3)['then'](function(_0x36201c){return _0x36201c;});}return null;};}function removeEntity(_0xf26187,_0x502b0c){return function(_0x305c0b){if(_0x305c0b){return _0x305c0b[_0xc8dc('0x25')]()[_0xc8dc('0x26')](function(){_0xf26187[_0xc8dc('0x1b')](0xcc)[_0xc8dc('0x1c')]();});}};}function handleEntityNotFound(_0x2edc4c,_0x4e2ae5){return function(_0x4e93ea){if(!_0x4e93ea){_0x2edc4c[_0xc8dc('0x1a')](0x194);}return _0x4e93ea;};}function handleError(_0x5a747f,_0x3e1f42){_0x3e1f42=_0x3e1f42||0x1f4;return function(_0x3482d2){logger[_0xc8dc('0x27')](_0x3482d2[_0xc8dc('0x28')]);if(_0x3482d2['name']){delete _0x3482d2[_0xc8dc('0x29')];}_0x5a747f[_0xc8dc('0x1b')](_0x3e1f42)[_0xc8dc('0x2a')](_0x3482d2);};}exports['index']=function(_0x1bd777,_0x4c6239){var _0x320f97={},_0x28e34b={},_0x48a366={'count':0x0,'rows':[]};var _0x143631=_['map'](db[_0xc8dc('0x2b')][_0xc8dc('0x2c')],function(_0x46728f){return{'name':_0x46728f[_0xc8dc('0x2d')],'type':_0x46728f[_0xc8dc('0x2e')]['key']};});_0x28e34b['model']=_['map'](_0x143631,_0xc8dc('0x29'));_0x28e34b[_0xc8dc('0x2f')]=_[_0xc8dc('0x30')](_0x1bd777[_0xc8dc('0x2f')]);_0x28e34b[_0xc8dc('0x31')]=_['intersection'](_0x28e34b['model'],_0x28e34b[_0xc8dc('0x2f')]);_0x320f97['attributes']=_[_0xc8dc('0x32')](_0x28e34b[_0xc8dc('0x33')],qs[_0xc8dc('0x34')](_0x1bd777['query'][_0xc8dc('0x34')]));_0x320f97[_0xc8dc('0x35')]=_0x320f97['attributes'][_0xc8dc('0x36')]?_0x320f97['attributes']:_0x28e34b[_0xc8dc('0x33')];if(!_0x1bd777[_0xc8dc('0x2f')]['hasOwnProperty'](_0xc8dc('0x37'))){_0x320f97[_0xc8dc('0x38')]=qs[_0xc8dc('0x38')](_0x1bd777[_0xc8dc('0x2f')][_0xc8dc('0x38')]);_0x320f97['offset']=qs[_0xc8dc('0x1f')](_0x1bd777['query'][_0xc8dc('0x1f')]);}_0x320f97[_0xc8dc('0x39')]=qs[_0xc8dc('0x3a')](_0x1bd777[_0xc8dc('0x2f')]['sort']);_0x320f97[_0xc8dc('0x3b')]=qs[_0xc8dc('0x31')](_[_0xc8dc('0x3c')](_0x1bd777[_0xc8dc('0x2f')],_0x28e34b[_0xc8dc('0x31')]),_0x143631);if(_0x1bd777['query'][_0xc8dc('0x3d')]){_0x320f97[_0xc8dc('0x3b')]=_['merge'](_0x320f97[_0xc8dc('0x3b')],{'$or':_[_0xc8dc('0x3e')](_0x143631,function(_0x406d27){if(_0x406d27[_0xc8dc('0x2e')]!==_0xc8dc('0x3f')){var _0xbd2c9={};_0xbd2c9[_0x406d27[_0xc8dc('0x29')]]={'$like':'%'+_0x1bd777[_0xc8dc('0x2f')][_0xc8dc('0x3d')]+'%'};return _0xbd2c9;}})});}_0x320f97=_['merge']({},_0x320f97,_0x1bd777['options']);var _0x154f49={'where':_0x320f97['where']};return db[_0xc8dc('0x2b')][_0xc8dc('0x1e')](_0x154f49)[_0xc8dc('0x26')](function(_0x527f23){_0x48a366[_0xc8dc('0x1e')]=_0x527f23;if(_0x1bd777[_0xc8dc('0x2f')][_0xc8dc('0x40')]){_0x320f97[_0xc8dc('0x41')]=[{'all':!![]}];}return db[_0xc8dc('0x2b')][_0xc8dc('0x42')](_0x320f97);})['then'](function(_0x1ffef9){_0x48a366[_0xc8dc('0x43')]=_0x1ffef9;return _0x48a366;})[_0xc8dc('0x26')](respondWithFilteredResult(_0x4c6239,_0x320f97))[_0xc8dc('0x44')](handleError(_0x4c6239,null));};exports['show']=function(_0xa59e62,_0x2751b7){var _0x5090cc={'raw':!![],'where':{'id':_0xa59e62[_0xc8dc('0x45')]['id']}},_0x470f48={};_0x470f48[_0xc8dc('0x33')]=_[_0xc8dc('0x30')](db[_0xc8dc('0x2b')][_0xc8dc('0x2c')]);_0x470f48[_0xc8dc('0x2f')]=_[_0xc8dc('0x30')](_0xa59e62[_0xc8dc('0x2f')]);_0x470f48[_0xc8dc('0x31')]=_[_0xc8dc('0x32')](_0x470f48[_0xc8dc('0x33')],_0x470f48[_0xc8dc('0x2f')]);_0x5090cc[_0xc8dc('0x35')]=_['intersection'](_0x470f48[_0xc8dc('0x33')],qs[_0xc8dc('0x34')](_0xa59e62[_0xc8dc('0x2f')][_0xc8dc('0x34')]));_0x5090cc[_0xc8dc('0x35')]=_0x5090cc[_0xc8dc('0x35')][_0xc8dc('0x36')]?_0x5090cc['attributes']:_0x470f48[_0xc8dc('0x33')];if(_0xa59e62[_0xc8dc('0x2f')]['includeAll']){_0x5090cc['include']=[{'all':!![]}];}_0x5090cc=_[_0xc8dc('0x46')]({},_0x5090cc,_0xa59e62[_0xc8dc('0x47')]);return db[_0xc8dc('0x2b')][_0xc8dc('0x48')](_0x5090cc)['then'](handleEntityNotFound(_0x2751b7,null))[_0xc8dc('0x26')](respondWithResult(_0x2751b7,null))['catch'](handleError(_0x2751b7,null));};exports[_0xc8dc('0x49')]=function(_0x4d4d98,_0x356e16){return db[_0xc8dc('0x2b')]['create'](_0x4d4d98[_0xc8dc('0x4a')],{})[_0xc8dc('0x26')](respondWithResult(_0x356e16,0xc9))[_0xc8dc('0x44')](handleError(_0x356e16,null));};exports[_0xc8dc('0x24')]=function(_0x59ec0d,_0x2b9213){if(_0x59ec0d[_0xc8dc('0x4a')]['id']){delete _0x59ec0d[_0xc8dc('0x4a')]['id'];}return db[_0xc8dc('0x2b')][_0xc8dc('0x48')]({'where':{'id':_0x59ec0d[_0xc8dc('0x45')]['id']}})[_0xc8dc('0x26')](handleEntityNotFound(_0x2b9213,null))[_0xc8dc('0x26')](saveUpdates(_0x59ec0d['body'],null))[_0xc8dc('0x26')](respondWithResult(_0x2b9213,null))[_0xc8dc('0x44')](handleError(_0x2b9213,null));};exports['destroy']=function(_0x10f91f,_0x40be28){return db['SquareDetailsReport'][_0xc8dc('0x48')]({'where':{'id':_0x10f91f[_0xc8dc('0x45')]['id']}})['then'](handleEntityNotFound(_0x40be28,null))[_0xc8dc('0x26')](removeEntity(_0x40be28,null))['catch'](handleError(_0x40be28,null));};exports['describe']=function(_0x3f7627,_0x266931){return db[_0xc8dc('0x2b')][_0xc8dc('0x4b')]()[_0xc8dc('0x26')](respondWithResult(_0x266931,null))[_0xc8dc('0x44')](handleError(_0x266931,null));};
\ No newline at end of file
index d118c10..55b670c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dfc=['request-promise','rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xb7dd5d,_0x3214b6){var _0x5f2f54=function(_0x2a2b5e){while(--_0x2a2b5e){_0xb7dd5d['push'](_0xb7dd5d['shift']());}};_0x5f2f54(++_0x3214b6);}(_0x2dfc,0x1de));var _0xc2df=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x2dfc[_0x432682];return _0x463d05;};'use strict';var _=require(_0xc2df('0x0'));var util=require(_0xc2df('0x1'));var logger=require(_0xc2df('0x2'))(_0xc2df('0x3'));var moment=require(_0xc2df('0x4'));var BPromise=require(_0xc2df('0x5'));var rp=require(_0xc2df('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc2df('0x7'));var config=require(_0xc2df('0x8'));var attributes=require('./squareReportDetail.attributes');module[_0xc2df('0x9')]=function(_0x324908,_0x5979b4){return _0x324908[_0xc2df('0xa')]('SquareDetailsReport',attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdc11=['exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x38013a,_0x52b537){var _0x503db5=function(_0xc1b809){while(--_0xc1b809){_0x38013a['push'](_0x38013a['shift']());}};_0x503db5(++_0x52b537);}(_0xdc11,0x1a4));var _0x1dc1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdc11[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1dc1('0x0'));var util=require(_0x1dc1('0x1'));var logger=require(_0x1dc1('0x2'))(_0x1dc1('0x3'));var moment=require('moment');var BPromise=require(_0x1dc1('0x4'));var rp=require(_0x1dc1('0x5'));var fs=require('fs');var path=require(_0x1dc1('0x6'));var rimraf=require(_0x1dc1('0x7'));var config=require(_0x1dc1('0x8'));var attributes=require('./squareReportDetail.attributes');module[_0x1dc1('0x9')]=function(_0x1bea19,_0x543694){return _0x1bea19[_0x1dc1('0xa')](_0x1dc1('0xb'),attributes,{'tableName':_0x1dc1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ea7d65..e3cfa21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f8=['SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','then','stringify','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','info'];(function(_0x5b2375,_0x225893){var _0x4403b8=function(_0x4b6f68){while(--_0x4b6f68){_0x5b2375['push'](_0x5b2375['shift']());}};_0x4403b8(++_0x225893);}(_0x49f8,0xff));var _0x849f=function(_0x27a45d,_0x14499a){_0x27a45d=_0x27a45d-0x0;var _0x5aee32=_0x49f8[_0x27a45d];return _0x5aee32;};'use strict';var _=require(_0x849f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x849f('0x1'));var rs=require(_0x849f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x849f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x849f('0x4'))('rpc');var config=require(_0x849f('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x849f('0x6')][_0x849f('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x21f577,_0xb4c798,_0x33b630){return new BPromise(function(_0xc6443e,_0x565438){return client['request'](_0x21f577,_0x33b630)['then'](function(_0x306c11){logger[_0x849f('0x8')](_0x849f('0x9'),_0xb4c798,_0x849f('0xa'));logger[_0x849f('0xb')](_0x849f('0xc'),_0xb4c798,_0x849f('0xa'),JSON['stringify'](_0x306c11));if(_0x306c11[_0x849f('0xd')]){if(_0x306c11['error'][_0x849f('0xe')]===0x1f4){logger[_0x849f('0xd')](_0x849f('0x9'),_0xb4c798,_0x306c11[_0x849f('0xd')]['message']);return _0x565438(_0x306c11[_0x849f('0xd')][_0x849f('0xf')]);}logger[_0x849f('0xd')](_0x849f('0x9'),_0xb4c798,_0x306c11[_0x849f('0xd')]['message']);return _0xc6443e(_0x306c11['error'][_0x849f('0xf')]);}else{logger['info'](_0x849f('0x9'),_0xb4c798,_0x849f('0xa'));_0xc6443e(_0x306c11[_0x849f('0x10')][_0x849f('0xf')]);}})[_0x849f('0x11')](function(_0x19ba28){logger[_0x849f('0xd')]('SquareDetailsReport,\x20%s,\x20%s',_0xb4c798,_0x19ba28);_0x565438(_0x19ba28);});});}exports[_0x849f('0x12')]=function(_0x20bea7){var _0x189529=this;return new Promise(function(_0x541cd6,_0x1e4017){return db[_0x849f('0x13')]['create'](_0x20bea7[_0x849f('0x14')],{'raw':_0x20bea7[_0x849f('0x15')]?_0x20bea7['options']['raw']===undefined?!![]:![]:!![]})[_0x849f('0x16')](function(_0x11d183){logger[_0x849f('0x8')](_0x849f('0x12'),_0x20bea7);logger[_0x849f('0xb')](_0x849f('0x12'),_0x20bea7,JSON[_0x849f('0x17')](_0x11d183));_0x541cd6(_0x11d183);})[_0x849f('0x11')](function(_0x4b29f1){logger[_0x849f('0xd')](_0x849f('0x12'),_0x4b29f1[_0x849f('0xf')],_0x20bea7);_0x1e4017(_0x189529[_0x849f('0xd')](0x1f4,_0x4b29f1[_0x849f('0xf')]));});});};
\ No newline at end of file
+var _0xda2d=['bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','util','moment'];(function(_0x4e41a6,_0xb252d){var _0x401bc5=function(_0x4a2881){while(--_0x4a2881){_0x4e41a6['push'](_0x4e41a6['shift']());}};_0x401bc5(++_0xb252d);}(_0xda2d,0x102));var _0xdda2=function(_0x4bcc73,_0x1e19e8){_0x4bcc73=_0x4bcc73-0x0;var _0x79ace4=_0xda2d[_0x4bcc73];return _0x79ace4;};'use strict';var _=require('lodash');var util=require(_0xdda2('0x0'));var moment=require(_0xdda2('0x1'));var BPromise=require(_0xdda2('0x2'));var rs=require(_0xdda2('0x3'));var fs=require('fs');var Redis=require(_0xdda2('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdda2('0x5'));var config=require(_0xdda2('0x6'));var jayson=require(_0xdda2('0x7'));var client=jayson[_0xdda2('0x8')][_0xdda2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf38e58,_0x2f55dc,_0x436676){return new BPromise(function(_0x2e2523,_0x341c7b){return client['request'](_0xf38e58,_0x436676)[_0xdda2('0xa')](function(_0x22c6e5){logger['info'](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));logger[_0xdda2('0xd')](_0xdda2('0xe'),_0x2f55dc,_0xdda2('0xc'),JSON[_0xdda2('0xf')](_0x22c6e5));if(_0x22c6e5[_0xdda2('0x10')]){if(_0x22c6e5[_0xdda2('0x10')]['code']===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x2f55dc,_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);return _0x341c7b(_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);}logger[_0xdda2('0x10')](_0xdda2('0xb'),_0x2f55dc,_0x22c6e5[_0xdda2('0x10')]['message']);return _0x2e2523(_0x22c6e5[_0xdda2('0x10')]['message']);}else{logger[_0xdda2('0x12')](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));_0x2e2523(_0x22c6e5[_0xdda2('0x13')][_0xdda2('0x11')]);}})['catch'](function(_0x55d674){logger[_0xdda2('0x10')]('SquareDetailsReport,\x20%s,\x20%s',_0x2f55dc,_0x55d674);_0x341c7b(_0x55d674);});});}exports[_0xdda2('0x14')]=function(_0x1a3b35){var _0x335fb5=this;return new Promise(function(_0x2b6ee8,_0x8d44b7){return db[_0xdda2('0x15')][_0xdda2('0x16')](_0x1a3b35[_0xdda2('0x17')],{'raw':_0x1a3b35[_0xdda2('0x18')]?_0x1a3b35[_0xdda2('0x18')][_0xdda2('0x19')]===undefined?!![]:![]:!![]})[_0xdda2('0xa')](function(_0x4eed30){logger[_0xdda2('0x12')]('CreateSquareDetailsReport',_0x1a3b35);logger[_0xdda2('0xd')](_0xdda2('0x14'),_0x1a3b35,JSON[_0xdda2('0xf')](_0x4eed30));_0x2b6ee8(_0x4eed30);})['catch'](function(_0x347ee6){logger['error'](_0xdda2('0x14'),_0x347ee6[_0xdda2('0x11')],_0x1a3b35);_0x8d44b7(_0x335fb5['error'](0x1f4,_0x347ee6[_0xdda2('0x11')]));});});};
\ No newline at end of file
index d2a69ca..34d1997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf176=['Router','../../components/auth/service','isAuthenticated','index','/process/:pid/kill','express'];(function(_0x1165c3,_0x2e5475){var _0x4a3040=function(_0x57fa3c){while(--_0x57fa3c){_0x1165c3['push'](_0x1165c3['shift']());}};_0x4a3040(++_0x2e5475);}(_0xf176,0x65));var _0x6f17=function(_0x429c5d,_0x233c85){_0x429c5d=_0x429c5d-0x0;var _0x2ba98f=_0xf176[_0x429c5d];return _0x2ba98f;};'use strict';var express=require(_0x6f17('0x0'));var router=express[_0x6f17('0x1')]();var auth=require(_0x6f17('0x2'));var controller=require('./system.controller');router['get']('/',auth[_0x6f17('0x3')](),controller[_0x6f17('0x4')]);router['get'](_0x6f17('0x5'),auth[_0x6f17('0x3')](),controller['killProcess']);module['exports']=router;
\ No newline at end of file
+var _0xc1cc=['/process/:pid/kill','exports','Router','../../components/auth/service','./system.controller','get','isAuthenticated','index'];(function(_0x218391,_0x5f3c5a){var _0x320f1=function(_0x314b23){while(--_0x314b23){_0x218391['push'](_0x218391['shift']());}};_0x320f1(++_0x5f3c5a);}(_0xc1cc,0x16a));var _0xcc1c=function(_0x3c56cf,_0x5892f4){_0x3c56cf=_0x3c56cf-0x0;var _0x26bdba=_0xc1cc[_0x3c56cf];return _0x26bdba;};'use strict';var express=require('express');var router=express[_0xcc1c('0x0')]();var auth=require(_0xcc1c('0x1'));var controller=require(_0xcc1c('0x2'));router[_0xcc1c('0x3')]('/',auth[_0xcc1c('0x4')](),controller[_0xcc1c('0x5')]);router['get'](_0xcc1c('0x6'),auth[_0xcc1c('0x4')](),controller['killProcess']);module[_0xcc1c('0x7')]=router;
\ No newline at end of file
index d8ee0cc..6b2aa91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x134e=['api','util','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','split','length','indexOf','params','kill','SIGINT','status','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec'];(function(_0x57f920,_0x40f791){var _0x6c784c=function(_0x12a409){while(--_0x12a409){_0x57f920['push'](_0x57f920['shift']());}};_0x6c784c(++_0x40f791);}(_0x134e,0x169));var _0xe134=function(_0x538058,_0x403104){_0x538058=_0x538058-0x0;var _0x311eb9=_0x134e[_0x538058];return _0x311eb9;};'use strict';var info=require(_0xe134('0x0'));var exec=require(_0xe134('0x1'))[_0xe134('0x2')];var logger=require('../../config/logger')(_0xe134('0x3'));var util=require(_0xe134('0x4'));var BPromise=require(_0xe134('0x5'));var _=require('lodash');function handleError(_0x3dbeef,_0x1fe8c4,_0x13356a){_0x1fe8c4=_0x1fe8c4||0x1f4;return function(_0x4509a6){logger[_0xe134('0x6')](_0xe134('0x7'),_0x13356a,_0x1fe8c4,util[_0xe134('0x8')](_0x4509a6,{'showHidden':![],'depth':null}));delete _0x4509a6[_0xe134('0x9')];_0x3dbeef['status'](_0x1fe8c4)[_0xe134('0xa')](_0x4509a6);};}exports[_0xe134('0xb')]=function(_0x27357e,_0x53e62e){return info[_0xe134('0xc')]()[_0xe134('0xd')](function(_0x395dab){return _0x53e62e['status'](0xc8)[_0xe134('0xe')](_0x395dab);})[_0xe134('0xf')](function(_0x4fd810){return _0x53e62e['status'](0x1f4)['json'](_0x4fd810);});};exports[_0xe134('0x10')]=function(_0x4bfe2a,_0x2c10b2){var _0x22d323=[_0xe134('0x11')];return new BPromise(function(_0x59ceee,_0x3ce13d){return exec(util[_0xe134('0x12')](_0xe134('0x13'),_0x4bfe2a['params']['pid']),function(_0x113264,_0x437c9b,_0x153404){if(_0x113264){return _0x3ce13d(_0x113264);}return _0x59ceee(_0x437c9b);});})[_0xe134('0xd')](function(_0x50c506){var _0xf85654=![];var _0x4e55e1=_0x50c506[_0xe134('0x14')](/\n/);for(var _0x4fe70c=0x0,_0x1984cd=_0x22d323[_0xe134('0x15')];_0x4fe70c<_0x1984cd,_0xf85654===![];_0x4fe70c+=0x1){if(_0x50c506[_0xe134('0x16')](_0x22d323[_0x4fe70c])>=0x0){_0xf85654=!![];}}if(!_0xf85654){throw new Error(util[_0xe134('0x12')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x4bfe2a[_0xe134('0x17')]['pid']));}process[_0xe134('0x18')](_0x4bfe2a[_0xe134('0x17')]['pid'],_0xe134('0x19'));return _0x2c10b2[_0xe134('0x1a')](0xc8)[_0xe134('0xe')]({'message':util[_0xe134('0x12')](_0xe134('0x1b'),_0x4bfe2a[_0xe134('0x17')]['pid'])});})[_0xe134('0xf')](handleError(_0x2c10b2,null,_0xe134('0x10')));};
\ No newline at end of file
+var _0x455a=['bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','systeminformation','exec','../../config/logger','api','util'];(function(_0x43b06b,_0x1929c7){var _0x2c555b=function(_0x30fa8c){while(--_0x30fa8c){_0x43b06b['push'](_0x43b06b['shift']());}};_0x2c555b(++_0x1929c7);}(_0x455a,0x124));var _0xa455=function(_0x26a0d4,_0x4e402e){_0x26a0d4=_0x26a0d4-0x0;var _0x2302e6=_0x455a[_0x26a0d4];return _0x2302e6;};'use strict';var info=require(_0xa455('0x0'));var exec=require('child_process')[_0xa455('0x1')];var logger=require(_0xa455('0x2'))(_0xa455('0x3'));var util=require(_0xa455('0x4'));var BPromise=require(_0xa455('0x5'));var _=require(_0xa455('0x6'));function handleError(_0x11a03c,_0x2e9891,_0xe6dbbe){_0x2e9891=_0x2e9891||0x1f4;return function(_0x28c87f){logger[_0xa455('0x7')](_0xa455('0x8'),_0xe6dbbe,_0x2e9891,util[_0xa455('0x9')](_0x28c87f,{'showHidden':![],'depth':null}));delete _0x28c87f[_0xa455('0xa')];_0x11a03c[_0xa455('0xb')](_0x2e9891)[_0xa455('0xc')](_0x28c87f);};}exports['index']=function(_0x15c4b1,_0x1c7b6c){return info['getAllData']()[_0xa455('0xd')](function(_0x26324c){return _0x1c7b6c[_0xa455('0xb')](0xc8)[_0xa455('0xe')](_0x26324c);})[_0xa455('0xf')](function(_0x1a7f1d){return _0x1c7b6c[_0xa455('0xb')](0x1f4)[_0xa455('0xe')](_0x1a7f1d);});};exports[_0xa455('0x10')]=function(_0x2321bc,_0x4a9632){var _0x551f08=[_0xa455('0x11')];return new BPromise(function(_0x119553,_0x27bdc4){return exec(util[_0xa455('0x12')](_0xa455('0x13'),_0x2321bc[_0xa455('0x14')][_0xa455('0x15')]),function(_0xd5f003,_0x11b86f,_0x210e30){if(_0xd5f003){return _0x27bdc4(_0xd5f003);}return _0x119553(_0x11b86f);});})['then'](function(_0x192a7b){var _0x26967c=![];var _0x1dafea=_0x192a7b[_0xa455('0x16')](/\n/);for(var _0x4a14dd=0x0,_0x3d6ca3=_0x551f08[_0xa455('0x17')];_0x4a14dd<_0x3d6ca3,_0x26967c===![];_0x4a14dd+=0x1){if(_0x192a7b[_0xa455('0x18')](_0x551f08[_0x4a14dd])>=0x0){_0x26967c=!![];}}if(!_0x26967c){throw new Error(util['format'](_0xa455('0x19'),_0x2321bc[_0xa455('0x14')]['pid']));}process[_0xa455('0x1a')](_0x2321bc[_0xa455('0x14')][_0xa455('0x15')],'SIGINT');return _0x4a9632[_0xa455('0xb')](0xc8)[_0xa455('0xe')]({'message':util['format']('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x2321bc[_0xa455('0x14')][_0xa455('0x15')])});})['catch'](handleError(_0x4a9632,null,'killProcess'));};
\ No newline at end of file
index 636b7e6..f054284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36be=['isAuthenticated','destroy','exports','multer','util','express','Router','../../components/auth/service','../../config/environment','./tag.controller','get','/:id','show','post','create','put'];(function(_0x28fbe3,_0x5899c7){var _0xdcb1b8=function(_0x5a7985){while(--_0x5a7985){_0x28fbe3['push'](_0x28fbe3['shift']());}};_0xdcb1b8(++_0x5899c7);}(_0x36be,0xd3));var _0xe36b=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x36be[_0x4b055c];return _0x4b62bb;};'use strict';var multer=require(_0xe36b('0x0'));var util=require(_0xe36b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe36b('0x2'));var router=express[_0xe36b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe36b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe36b('0x5'));var controller=require(_0xe36b('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe36b('0x7')](_0xe36b('0x8'),auth['isAuthenticated'](),controller[_0xe36b('0x9')]);router[_0xe36b('0xa')]('/',auth['isAuthenticated'](),controller[_0xe36b('0xb')]);router[_0xe36b('0xc')](_0xe36b('0x8'),auth[_0xe36b('0xd')](),controller['update']);router['delete'](_0xe36b('0x8'),auth[_0xe36b('0xd')](),controller[_0xe36b('0xe')]);module[_0xe36b('0xf')]=router;
\ No newline at end of file
+var _0x7b37=['/:id','post','put','update','delete','destroy','multer','util','path','express','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','index'];(function(_0x4627c8,_0x259f2f){var _0x42eed8=function(_0xadf14b){while(--_0xadf14b){_0x4627c8['push'](_0x4627c8['shift']());}};_0x42eed8(++_0x259f2f);}(_0x7b37,0xf6));var _0x77b3=function(_0x4d82ea,_0x4d459f){_0x4d82ea=_0x4d82ea-0x0;var _0x257f4a=_0x7b37[_0x4d82ea];return _0x257f4a;};'use strict';var multer=require(_0x77b3('0x0'));var util=require(_0x77b3('0x1'));var path=require(_0x77b3('0x2'));var timeout=require('connect-timeout');var express=require(_0x77b3('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x77b3('0x4'));var config=require(_0x77b3('0x5'));var controller=require(_0x77b3('0x6'));router[_0x77b3('0x7')]('/',auth[_0x77b3('0x8')](),controller[_0x77b3('0x9')]);router['get'](_0x77b3('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x77b3('0xb')]('/',auth[_0x77b3('0x8')](),controller['create']);router[_0x77b3('0xc')](_0x77b3('0xa'),auth[_0x77b3('0x8')](),controller[_0x77b3('0xd')]);router[_0x77b3('0xe')](_0x77b3('0xa'),auth[_0x77b3('0x8')](),controller[_0x77b3('0xf')]);module['exports']=router;
\ No newline at end of file
index 30fbe77..f683223 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98f=['STRING','name','sequelize','exports'];(function(_0x5c02c4,_0x1edc38){var _0x1a7b01=function(_0x149540){while(--_0x149540){_0x5c02c4['push'](_0x5c02c4['shift']());}};_0x1a7b01(++_0x1edc38);}(_0xb98f,0xce));var _0xfb98=function(_0x11f58c,_0x25fcc1){_0x11f58c=_0x11f58c-0x0;var _0x3dd98a=_0xb98f[_0x11f58c];return _0x3dd98a;};'use strict';var Sequelize=require(_0xfb98('0x0'));module[_0xfb98('0x1')]={'name':{'type':Sequelize[_0xfb98('0x2')],'unique':_0xfb98('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xfb98('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4fc2=['STRING','name','#0091EA','sequelize','exports'];(function(_0x3d3b05,_0x334c57){var _0x2c6ca3=function(_0x3fd1cc){while(--_0x3fd1cc){_0x3d3b05['push'](_0x3d3b05['shift']());}};_0x2c6ca3(++_0x334c57);}(_0x4fc2,0x111));var _0x24fc=function(_0x12553b,_0x5a9b35){_0x12553b=_0x12553b-0x0;var _0x86a99a=_0x4fc2[_0x12553b];return _0x86a99a;};'use strict';var Sequelize=require(_0x24fc('0x0'));module[_0x24fc('0x1')]={'name':{'type':Sequelize[_0x24fc('0x2')],'unique':_0x24fc('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x24fc('0x4')},'description':{'type':Sequelize[_0x24fc('0x2')]}};
\ No newline at end of file
index 3d78f68..278f18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0624=['count','offset','set','json','apply','reject','save','then','get','Tags','UserProfileResource','destroy','end','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','findAll','rows','show','params','include','Tag','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','update','body','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','limit'];(function(_0x454712,_0x4e9994){var _0x1f4ed7=function(_0x4673a2){while(--_0x4673a2){_0x454712['push'](_0x454712['shift']());}};_0x1f4ed7(++_0x4e9994);}(_0x0624,0x132));var _0x4062=function(_0x4d02fc,_0x41b557){_0x4d02fc=_0x4d02fc-0x0;var _0x30370b=_0x0624[_0x4d02fc];return _0x30370b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4062('0x0'));var moment=require(_0x4062('0x1'));var BPromise=require(_0x4062('0x2'));var Mustache=require(_0x4062('0x3'));var util=require(_0x4062('0x4'));var path=require(_0x4062('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4062('0x6'));var fs=require('fs');var fs_extra=require(_0x4062('0x7'));var _=require(_0x4062('0x8'));var squel=require(_0x4062('0x9'));var crypto=require(_0x4062('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4062('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4062('0xc'));var Papa=require(_0x4062('0xd'));var Redis=require(_0x4062('0xe'));var authService=require(_0x4062('0xf'));var qs=require(_0x4062('0x10'));var as=require(_0x4062('0x11'));var hardwareService=require(_0x4062('0x12'));var logger=require('../../config/logger')(_0x4062('0x13'));var utils=require('../../config/utils');var config=require(_0x4062('0x14'));var licenseUtil=require(_0x4062('0x15'));var db=require(_0x4062('0x16'))['db'];function respondWithStatusCode(_0x3146e2,_0x160b6d){_0x160b6d=_0x160b6d||0xcc;return function(_0x57e04b){if(_0x57e04b){return _0x3146e2[_0x4062('0x17')](_0x160b6d);}return _0x3146e2[_0x4062('0x18')](_0x160b6d)['end']();};}function respondWithResult(_0x32ced6,_0x42859d){_0x42859d=_0x42859d||0xc8;return function(_0x95bb42){if(_0x95bb42){return _0x32ced6['status'](_0x42859d)['json'](_0x95bb42);}};}function respondWithFilteredResult(_0x25a717,_0x467ac7){return function(_0x48ea2b){if(_0x48ea2b){var _0x4d7166=typeof _0x467ac7['offset']==='undefined'&&typeof _0x467ac7[_0x4062('0x19')]==='undefined';var _0x2efc3c=_0x48ea2b[_0x4062('0x1a')];var _0x3d14bb=_0x4d7166?0x0:_0x467ac7[_0x4062('0x1b')];var _0x2a04c7=_0x4d7166?_0x48ea2b[_0x4062('0x1a')]:_0x467ac7[_0x4062('0x1b')]+_0x467ac7['limit'];var _0x324bb3;if(_0x2a04c7>=_0x2efc3c){_0x2a04c7=_0x2efc3c;_0x324bb3=0xc8;}else{_0x324bb3=0xce;}_0x25a717['status'](_0x324bb3);return _0x25a717[_0x4062('0x1c')]('Content-Range',_0x3d14bb+'-'+_0x2a04c7+'/'+_0x2efc3c)[_0x4062('0x1d')](_0x48ea2b);}return null;};}function patchUpdates(_0x31777f){return function(_0x12c6a3){try{jsonpatch[_0x4062('0x1e')](_0x12c6a3,_0x31777f,!![]);}catch(_0x3cb45d){return BPromise[_0x4062('0x1f')](_0x3cb45d);}return _0x12c6a3[_0x4062('0x20')]();};}function saveUpdates(_0x341310,_0xc6c0ba){return function(_0x53648a){if(_0x53648a){return _0x53648a['update'](_0x341310)[_0x4062('0x21')](function(_0xc5e4a0){return _0xc5e4a0;});}return null;};}function removeEntity(_0x23f81c,_0x1fa194){return function(_0x59d19f){if(_0x59d19f){return _0x59d19f['destroy']()['then'](function(){var _0x11e837=_0x59d19f[_0x4062('0x22')]({'plain':!![]});var _0x11b962=_0x4062('0x23');return db[_0x4062('0x24')][_0x4062('0x25')]({'where':{'type':_0x11b962,'resourceId':_0x11e837['id']}})['then'](function(){return _0x59d19f;});})[_0x4062('0x21')](function(){_0x23f81c[_0x4062('0x18')](0xcc)[_0x4062('0x26')]();});}};}function handleEntityNotFound(_0x28e9e4,_0xb7f7c7){return function(_0x5934d2){if(!_0x5934d2){_0x28e9e4[_0x4062('0x17')](0x194);}return _0x5934d2;};}function handleError(_0x4a0312,_0x4de5c0){_0x4de5c0=_0x4de5c0||0x1f4;return function(_0x391065){logger['error'](_0x391065[_0x4062('0x27')]);if(_0x391065[_0x4062('0x28')]){delete _0x391065[_0x4062('0x28')];}_0x4a0312[_0x4062('0x18')](_0x4de5c0)[_0x4062('0x29')](_0x391065);};}exports[_0x4062('0x2a')]=function(_0xd818bc,_0x253bcf){var _0x5f569c={},_0x592fca={},_0x51de11={'count':0x0,'rows':[]};var _0x70dfdc=_[_0x4062('0x2b')](db['Tag'][_0x4062('0x2c')],function(_0x5ad1a3){return{'name':_0x5ad1a3['fieldName'],'type':_0x5ad1a3['type'][_0x4062('0x2d')]};});_0x592fca[_0x4062('0x2e')]=_[_0x4062('0x2b')](_0x70dfdc,_0x4062('0x28'));_0x592fca[_0x4062('0x2f')]=_[_0x4062('0x30')](_0xd818bc[_0x4062('0x2f')]);_0x592fca[_0x4062('0x31')]=_[_0x4062('0x32')](_0x592fca[_0x4062('0x2e')],_0x592fca[_0x4062('0x2f')]);_0x5f569c[_0x4062('0x33')]=_['intersection'](_0x592fca[_0x4062('0x2e')],qs['fields'](_0xd818bc[_0x4062('0x2f')][_0x4062('0x34')]));_0x5f569c[_0x4062('0x33')]=_0x5f569c['attributes'][_0x4062('0x35')]?_0x5f569c[_0x4062('0x33')]:_0x592fca[_0x4062('0x2e')];if(!_0xd818bc[_0x4062('0x2f')][_0x4062('0x36')](_0x4062('0x37'))){_0x5f569c[_0x4062('0x19')]=qs[_0x4062('0x19')](_0xd818bc[_0x4062('0x2f')]['limit']);_0x5f569c[_0x4062('0x1b')]=qs[_0x4062('0x1b')](_0xd818bc[_0x4062('0x2f')][_0x4062('0x1b')]);}_0x5f569c[_0x4062('0x38')]=qs[_0x4062('0x39')](_0xd818bc['query'][_0x4062('0x39')]);_0x5f569c[_0x4062('0x3a')]=qs[_0x4062('0x31')](_[_0x4062('0x3b')](_0xd818bc[_0x4062('0x2f')],_0x592fca['filters']),_0x70dfdc);if(_0xd818bc['query'][_0x4062('0x3c')]){_0x5f569c[_0x4062('0x3a')]=_['merge'](_0x5f569c[_0x4062('0x3a')],{'$or':_[_0x4062('0x2b')](_0x70dfdc,function(_0x3d4fab){if(_0x3d4fab[_0x4062('0x3d')]!==_0x4062('0x3e')){var _0x218864={};_0x218864[_0x3d4fab[_0x4062('0x28')]]={'$like':'%'+_0xd818bc[_0x4062('0x2f')][_0x4062('0x3c')]+'%'};return _0x218864;}})});}_0x5f569c=_[_0x4062('0x3f')]({},_0x5f569c,_0xd818bc['options']);var _0x32debb={'where':_0x5f569c[_0x4062('0x3a')]};return db['Tag']['count'](_0x32debb)['then'](function(_0x3e903b){_0x51de11[_0x4062('0x1a')]=_0x3e903b;if(_0xd818bc[_0x4062('0x2f')][_0x4062('0x40')]){_0x5f569c['include']=[{'all':!![]}];}return db['Tag'][_0x4062('0x41')](_0x5f569c);})[_0x4062('0x21')](function(_0x39c9ef){_0x51de11[_0x4062('0x42')]=_0x39c9ef;return _0x51de11;})['then'](respondWithFilteredResult(_0x253bcf,_0x5f569c))['catch'](handleError(_0x253bcf,null));};exports[_0x4062('0x43')]=function(_0x2ac3b5,_0x1c4259){var _0x1b3897={'raw':!![],'where':{'id':_0x2ac3b5[_0x4062('0x44')]['id']}},_0x9ab8ac={};_0x9ab8ac[_0x4062('0x2e')]=_[_0x4062('0x30')](db['Tag'][_0x4062('0x2c')]);_0x9ab8ac[_0x4062('0x2f')]=_[_0x4062('0x30')](_0x2ac3b5['query']);_0x9ab8ac[_0x4062('0x31')]=_['intersection'](_0x9ab8ac['model'],_0x9ab8ac[_0x4062('0x2f')]);_0x1b3897[_0x4062('0x33')]=_['intersection'](_0x9ab8ac[_0x4062('0x2e')],qs[_0x4062('0x34')](_0x2ac3b5[_0x4062('0x2f')][_0x4062('0x34')]));_0x1b3897[_0x4062('0x33')]=_0x1b3897['attributes']['length']?_0x1b3897[_0x4062('0x33')]:_0x9ab8ac[_0x4062('0x2e')];if(_0x2ac3b5[_0x4062('0x2f')]['includeAll']){_0x1b3897[_0x4062('0x45')]=[{'all':!![]}];}_0x1b3897=_[_0x4062('0x3f')]({},_0x1b3897,_0x2ac3b5['options']);return db[_0x4062('0x46')][_0x4062('0x47')](_0x1b3897)['then'](handleEntityNotFound(_0x1c4259,null))['then'](respondWithResult(_0x1c4259,null))['catch'](handleError(_0x1c4259,null));};exports[_0x4062('0x48')]=function(_0x560b20,_0x58921a){return db[_0x4062('0x46')]['create'](_0x560b20['body'],{})[_0x4062('0x21')](function(_0x15819a){var _0x1f6df9=_0x560b20['user'][_0x4062('0x22')]({'plain':!![]});if(!_0x1f6df9)throw new Error(_0x4062('0x49'));if(_0x1f6df9[_0x4062('0x4a')]==='user'){var _0x5c75b6=_0x15819a[_0x4062('0x22')]({'plain':!![]});var _0x1e9b7a='Tags';return db[_0x4062('0x4b')][_0x4062('0x47')]({'where':{'name':_0x1e9b7a,'userProfileId':_0x1f6df9[_0x4062('0x4c')]},'raw':!![]})['then'](function(_0x53729d){if(_0x53729d&&_0x53729d[_0x4062('0x4d')]===0x0){return db[_0x4062('0x24')][_0x4062('0x48')]({'name':_0x5c75b6[_0x4062('0x28')],'resourceId':_0x5c75b6['id'],'type':_0x53729d[_0x4062('0x28')],'sectionId':_0x53729d['id']},{})['then'](function(){return _0x15819a;});}else{return _0x15819a;}})['catch'](function(_0x6797c6){logger[_0x4062('0x4e')](_0x4062('0x4f'),_0x6797c6);throw _0x6797c6;});}return _0x15819a;})[_0x4062('0x21')](respondWithResult(_0x58921a,0xc9))[_0x4062('0x50')](handleError(_0x58921a,null));};exports[_0x4062('0x51')]=function(_0x2180ae,_0x2afcc7){if(_0x2180ae[_0x4062('0x52')]['id']){delete _0x2180ae[_0x4062('0x52')]['id'];}return db[_0x4062('0x46')][_0x4062('0x47')]({'where':{'id':_0x2180ae['params']['id']}})[_0x4062('0x21')](handleEntityNotFound(_0x2afcc7,null))[_0x4062('0x21')](saveUpdates(_0x2180ae['body'],null))[_0x4062('0x21')](respondWithResult(_0x2afcc7,null))[_0x4062('0x50')](handleError(_0x2afcc7,null));};exports['destroy']=function(_0x24e98c,_0x5c76e7){return db['Tag'][_0x4062('0x47')]({'where':{'id':_0x24e98c[_0x4062('0x44')]['id']}})[_0x4062('0x21')](handleEntityNotFound(_0x5c76e7,null))[_0x4062('0x21')](removeEntity(_0x5c76e7,null))[_0x4062('0x50')](handleError(_0x5c76e7,null));};
\ No newline at end of file
+var _0x74f0=['rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','index','map','Tag','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','includeAll','include','findAll','show','params','merge','catch','create','body','user','get','role','Tags','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find'];(function(_0x3f25b2,_0x412bd4){var _0xd8caeb=function(_0x52d252){while(--_0x52d252){_0x3f25b2['push'](_0x3f25b2['shift']());}};_0xd8caeb(++_0x412bd4);}(_0x74f0,0xf3));var _0x074f=function(_0x140202,_0x4245c7){_0x140202=_0x140202-0x0;var _0x3037c2=_0x74f0[_0x140202];return _0x3037c2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x074f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x074f('0x1'));var moment=require(_0x074f('0x2'));var BPromise=require(_0x074f('0x3'));var Mustache=require(_0x074f('0x4'));var util=require('util');var path=require('path');var sox=require(_0x074f('0x5'));var csv=require(_0x074f('0x6'));var ejs=require(_0x074f('0x7'));var fs=require('fs');var fs_extra=require(_0x074f('0x8'));var _=require(_0x074f('0x9'));var squel=require(_0x074f('0xa'));var crypto=require(_0x074f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x074f('0xc'));var toCsv=require(_0x074f('0x6'));var querystring=require('querystring');var Papa=require(_0x074f('0xd'));var Redis=require(_0x074f('0xe'));var authService=require(_0x074f('0xf'));var qs=require(_0x074f('0x10'));var as=require(_0x074f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x074f('0x12'));var utils=require(_0x074f('0x13'));var config=require(_0x074f('0x14'));var licenseUtil=require(_0x074f('0x15'));var db=require(_0x074f('0x16'))['db'];function respondWithStatusCode(_0x2416e0,_0x1d3304){_0x1d3304=_0x1d3304||0xcc;return function(_0x46cea0){if(_0x46cea0){return _0x2416e0[_0x074f('0x17')](_0x1d3304);}return _0x2416e0['status'](_0x1d3304)[_0x074f('0x18')]();};}function respondWithResult(_0x59f78a,_0x12ed92){_0x12ed92=_0x12ed92||0xc8;return function(_0x3bf07f){if(_0x3bf07f){return _0x59f78a[_0x074f('0x19')](_0x12ed92)[_0x074f('0x1a')](_0x3bf07f);}};}function respondWithFilteredResult(_0x2d7c55,_0x237960){return function(_0x7e19fe){if(_0x7e19fe){var _0x1edf9c=typeof _0x237960[_0x074f('0x1b')]===_0x074f('0x1c')&&typeof _0x237960[_0x074f('0x1d')]==='undefined';var _0x111e1f=_0x7e19fe[_0x074f('0x1e')];var _0x200e43=_0x1edf9c?0x0:_0x237960[_0x074f('0x1b')];var _0x315e7d=_0x1edf9c?_0x7e19fe[_0x074f('0x1e')]:_0x237960['offset']+_0x237960['limit'];var _0x1d241d;if(_0x315e7d>=_0x111e1f){_0x315e7d=_0x111e1f;_0x1d241d=0xc8;}else{_0x1d241d=0xce;}_0x2d7c55['status'](_0x1d241d);return _0x2d7c55['set'](_0x074f('0x1f'),_0x200e43+'-'+_0x315e7d+'/'+_0x111e1f)[_0x074f('0x1a')](_0x7e19fe);}return null;};}function patchUpdates(_0x1563f3){return function(_0x5feafd){try{jsonpatch[_0x074f('0x20')](_0x5feafd,_0x1563f3,!![]);}catch(_0x210221){return BPromise[_0x074f('0x21')](_0x210221);}return _0x5feafd[_0x074f('0x22')]();};}function saveUpdates(_0x1acf0a,_0x2c3b23){return function(_0x335170){if(_0x335170){return _0x335170[_0x074f('0x23')](_0x1acf0a)[_0x074f('0x24')](function(_0x2fc5b0){return _0x2fc5b0;});}return null;};}function removeEntity(_0x39e502,_0x1bd2c7){return function(_0xdfa2d8){if(_0xdfa2d8){return _0xdfa2d8[_0x074f('0x25')]()[_0x074f('0x24')](function(){var _0x8b8e98=_0xdfa2d8['get']({'plain':!![]});var _0x4ee6ac='Tags';return db[_0x074f('0x26')][_0x074f('0x25')]({'where':{'type':_0x4ee6ac,'resourceId':_0x8b8e98['id']}})[_0x074f('0x24')](function(){return _0xdfa2d8;});})[_0x074f('0x24')](function(){_0x39e502['status'](0xcc)[_0x074f('0x18')]();});}};}function handleEntityNotFound(_0x339370,_0x3fb202){return function(_0x312119){if(!_0x312119){_0x339370[_0x074f('0x17')](0x194);}return _0x312119;};}function handleError(_0xb9722a,_0x508db2){_0x508db2=_0x508db2||0x1f4;return function(_0x1bf574){logger[_0x074f('0x27')](_0x1bf574[_0x074f('0x28')]);if(_0x1bf574['name']){delete _0x1bf574[_0x074f('0x29')];}_0xb9722a['status'](_0x508db2)['send'](_0x1bf574);};}exports[_0x074f('0x2a')]=function(_0x4b540c,_0x4aa96f){var _0x214611={},_0x3d6bc1={},_0x177d53={'count':0x0,'rows':[]};var _0x5526b7=_[_0x074f('0x2b')](db[_0x074f('0x2c')][_0x074f('0x2d')],function(_0x50314d){return{'name':_0x50314d[_0x074f('0x2e')],'type':_0x50314d[_0x074f('0x2f')][_0x074f('0x30')]};});_0x3d6bc1[_0x074f('0x31')]=_[_0x074f('0x2b')](_0x5526b7,'name');_0x3d6bc1[_0x074f('0x32')]=_[_0x074f('0x33')](_0x4b540c['query']);_0x3d6bc1[_0x074f('0x34')]=_[_0x074f('0x35')](_0x3d6bc1[_0x074f('0x31')],_0x3d6bc1['query']);_0x214611[_0x074f('0x36')]=_[_0x074f('0x35')](_0x3d6bc1['model'],qs[_0x074f('0x37')](_0x4b540c[_0x074f('0x32')][_0x074f('0x37')]));_0x214611[_0x074f('0x36')]=_0x214611[_0x074f('0x36')][_0x074f('0x38')]?_0x214611[_0x074f('0x36')]:_0x3d6bc1[_0x074f('0x31')];if(!_0x4b540c[_0x074f('0x32')][_0x074f('0x39')]('nolimit')){_0x214611[_0x074f('0x1d')]=qs[_0x074f('0x1d')](_0x4b540c['query'][_0x074f('0x1d')]);_0x214611[_0x074f('0x1b')]=qs[_0x074f('0x1b')](_0x4b540c[_0x074f('0x32')][_0x074f('0x1b')]);}_0x214611[_0x074f('0x3a')]=qs[_0x074f('0x3b')](_0x4b540c['query'][_0x074f('0x3b')]);_0x214611[_0x074f('0x3c')]=qs[_0x074f('0x34')](_[_0x074f('0x3d')](_0x4b540c[_0x074f('0x32')],_0x3d6bc1[_0x074f('0x34')]),_0x5526b7);if(_0x4b540c['query'][_0x074f('0x3e')]){_0x214611[_0x074f('0x3c')]=_['merge'](_0x214611[_0x074f('0x3c')],{'$or':_[_0x074f('0x2b')](_0x5526b7,function(_0x61f8c9){if(_0x61f8c9['type']!=='VIRTUAL'){var _0x5f39e5={};_0x5f39e5[_0x61f8c9[_0x074f('0x29')]]={'$like':'%'+_0x4b540c[_0x074f('0x32')][_0x074f('0x3e')]+'%'};return _0x5f39e5;}})});}_0x214611=_['merge']({},_0x214611,_0x4b540c[_0x074f('0x3f')]);var _0x2a0340={'where':_0x214611['where']};return db[_0x074f('0x2c')][_0x074f('0x1e')](_0x2a0340)[_0x074f('0x24')](function(_0x46ca91){_0x177d53[_0x074f('0x1e')]=_0x46ca91;if(_0x4b540c[_0x074f('0x32')][_0x074f('0x40')]){_0x214611[_0x074f('0x41')]=[{'all':!![]}];}return db[_0x074f('0x2c')][_0x074f('0x42')](_0x214611);})['then'](function(_0x1bee97){_0x177d53['rows']=_0x1bee97;return _0x177d53;})[_0x074f('0x24')](respondWithFilteredResult(_0x4aa96f,_0x214611))['catch'](handleError(_0x4aa96f,null));};exports[_0x074f('0x43')]=function(_0x4c59ec,_0x1f70c5){var _0x4b9244={'raw':!![],'where':{'id':_0x4c59ec[_0x074f('0x44')]['id']}},_0x654e6e={};_0x654e6e[_0x074f('0x31')]=_[_0x074f('0x33')](db[_0x074f('0x2c')][_0x074f('0x2d')]);_0x654e6e[_0x074f('0x32')]=_['keys'](_0x4c59ec[_0x074f('0x32')]);_0x654e6e[_0x074f('0x34')]=_[_0x074f('0x35')](_0x654e6e[_0x074f('0x31')],_0x654e6e['query']);_0x4b9244[_0x074f('0x36')]=_['intersection'](_0x654e6e[_0x074f('0x31')],qs[_0x074f('0x37')](_0x4c59ec[_0x074f('0x32')]['fields']));_0x4b9244[_0x074f('0x36')]=_0x4b9244['attributes'][_0x074f('0x38')]?_0x4b9244[_0x074f('0x36')]:_0x654e6e['model'];if(_0x4c59ec[_0x074f('0x32')]['includeAll']){_0x4b9244[_0x074f('0x41')]=[{'all':!![]}];}_0x4b9244=_[_0x074f('0x45')]({},_0x4b9244,_0x4c59ec['options']);return db['Tag']['find'](_0x4b9244)['then'](handleEntityNotFound(_0x1f70c5,null))[_0x074f('0x24')](respondWithResult(_0x1f70c5,null))[_0x074f('0x46')](handleError(_0x1f70c5,null));};exports[_0x074f('0x47')]=function(_0xdd3709,_0x53b1e5){return db[_0x074f('0x2c')][_0x074f('0x47')](_0xdd3709[_0x074f('0x48')],{})[_0x074f('0x24')](function(_0xb66ad7){var _0x42ab64=_0xdd3709[_0x074f('0x49')][_0x074f('0x4a')]({'plain':!![]});if(!_0x42ab64)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42ab64[_0x074f('0x4b')]===_0x074f('0x49')){var _0x2ff3ab=_0xb66ad7[_0x074f('0x4a')]({'plain':!![]});var _0x522777=_0x074f('0x4c');return db[_0x074f('0x4d')]['find']({'where':{'name':_0x522777,'userProfileId':_0x42ab64['userProfileId']},'raw':!![]})[_0x074f('0x24')](function(_0x423393){if(_0x423393&&_0x423393[_0x074f('0x4e')]===0x0){return db[_0x074f('0x26')]['create']({'name':_0x2ff3ab['name'],'resourceId':_0x2ff3ab['id'],'type':_0x423393[_0x074f('0x29')],'sectionId':_0x423393['id']},{})[_0x074f('0x24')](function(){return _0xb66ad7;});}else{return _0xb66ad7;}})[_0x074f('0x46')](function(_0x32684a){logger[_0x074f('0x27')](_0x074f('0x4f'),_0x32684a);throw _0x32684a;});}return _0xb66ad7;})[_0x074f('0x24')](respondWithResult(_0x53b1e5,0xc9))[_0x074f('0x46')](handleError(_0x53b1e5,null));};exports[_0x074f('0x23')]=function(_0x5bda95,_0x24d267){if(_0x5bda95[_0x074f('0x48')]['id']){delete _0x5bda95[_0x074f('0x48')]['id'];}return db[_0x074f('0x2c')][_0x074f('0x50')]({'where':{'id':_0x5bda95[_0x074f('0x44')]['id']}})['then'](handleEntityNotFound(_0x24d267,null))[_0x074f('0x24')](saveUpdates(_0x5bda95[_0x074f('0x48')],null))['then'](respondWithResult(_0x24d267,null))[_0x074f('0x46')](handleError(_0x24d267,null));};exports[_0x074f('0x25')]=function(_0x1096b3,_0x417fa1){return db[_0x074f('0x2c')][_0x074f('0x50')]({'where':{'id':_0x1096b3[_0x074f('0x44')]['id']}})[_0x074f('0x24')](handleEntityNotFound(_0x417fa1,null))[_0x074f('0x24')](removeEntity(_0x417fa1,null))[_0x074f('0x46')](handleError(_0x417fa1,null));};
\ No newline at end of file
index 04f3a98..e6ae2b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfcc=['moment','bluebird','request-promise','rimraf','Tag','tools_tags','lodash','util','../../config/logger'];(function(_0x1e4915,_0x2e71e9){var _0x28260e=function(_0x35ec4e){while(--_0x35ec4e){_0x1e4915['push'](_0x1e4915['shift']());}};_0x28260e(++_0x2e71e9);}(_0xdfcc,0x8d));var _0xcdfc=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xdfcc[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0xcdfc('0x0'));var util=require(_0xcdfc('0x1'));var logger=require(_0xcdfc('0x2'))('api');var moment=require(_0xcdfc('0x3'));var BPromise=require(_0xcdfc('0x4'));var rp=require(_0xcdfc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcdfc('0x6'));var config=require('../../config/environment');var attributes=require('./tag.attributes');module['exports']=function(_0xa928f6,_0x155d4c){return _0xa928f6['define'](_0xcdfc('0x7'),attributes,{'tableName':_0xcdfc('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb863=['util','../../config/logger','api','moment','request-promise','path','./tag.attributes','exports','define','tools_tags','lodash'];(function(_0x3e6c4f,_0x7cf4ee){var _0x2ccb13=function(_0x335818){while(--_0x335818){_0x3e6c4f['push'](_0x3e6c4f['shift']());}};_0x2ccb13(++_0x7cf4ee);}(_0xb863,0x11d));var _0x3b86=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xb863[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x3b86('0x0'));var util=require(_0x3b86('0x1'));var logger=require(_0x3b86('0x2'))(_0x3b86('0x3'));var moment=require(_0x3b86('0x4'));var BPromise=require('bluebird');var rp=require(_0x3b86('0x5'));var fs=require('fs');var path=require(_0x3b86('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3b86('0x7'));module[_0x3b86('0x8')]=function(_0x580daf,_0x48aa07){return _0x580daf[_0x3b86('0x9')]('Tag',attributes,{'tableName':_0x3b86('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 97d54fe..a0ba627 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['Tag,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','Tag,\x20%s,\x20%s','debug'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xb458,0x103));var _0x8b45=function(_0x2e5636,_0x2b9540){_0x2e5636=_0x2e5636-0x0;var _0x4d7371=_0xb458[_0x2e5636];return _0x4d7371;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require(_0x8b45('0x4'))['db'];var utils=require(_0x8b45('0x5'));var logger=require(_0x8b45('0x6'))('rpc');var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8b45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){return client[_0x8b45('0x9')](_0x12bd05,_0x3a8ccb)[_0x8b45('0xa')](function(_0x33f30e){logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,'request\x20sent');logger[_0x8b45('0xd')](_0x8b45('0xe'),_0x2daa9a,'request\x20sent',JSON['stringify'](_0x33f30e));if(_0x33f30e['error']){if(_0x33f30e['error'][_0x8b45('0xf')]===0x1f4){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e['error'][_0x8b45('0x11')]);return _0x4d1718(_0x33f30e[_0x8b45('0x10')][_0x8b45('0x11')]);}logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e[_0x8b45('0x10')]['message']);return _0x32342f(_0x33f30e['error'][_0x8b45('0x11')]);}else{logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,_0x8b45('0x12'));_0x32342f(_0x33f30e[_0x8b45('0x13')][_0x8b45('0x11')]);}})[_0x8b45('0x14')](function(_0x147d6b){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x147d6b);_0x4d1718(_0x147d6b);});});}
\ No newline at end of file
+var _0xfd28=['error','code','message','info','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','Tag,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x25171a,_0x17dbba){var _0x149349=function(_0x1eca89){while(--_0x1eca89){_0x25171a['push'](_0x25171a['shift']());}};_0x149349(++_0x17dbba);}(_0xfd28,0x148));var _0x8fd2=function(_0x4d337e,_0x2f7eed){_0x4d337e=_0x4d337e-0x0;var _0x247963=_0xfd28[_0x4d337e];return _0x247963;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var moment=require(_0x8fd2('0x1'));var BPromise=require('bluebird');var rs=require(_0x8fd2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8fd2('0x3'))['db'];var utils=require(_0x8fd2('0x4'));var logger=require(_0x8fd2('0x5'))('rpc');var config=require(_0x8fd2('0x6'));var jayson=require(_0x8fd2('0x7'));var client=jayson[_0x8fd2('0x8')][_0x8fd2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f0afc,_0x4bdc1a,_0x53d938){return new BPromise(function(_0x10fccf,_0x466c3d){return client[_0x8fd2('0xa')](_0x2f0afc,_0x53d938)['then'](function(_0x13cc69){logger['info'](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');logger[_0x8fd2('0xc')]('Tag,\x20%s,\x20%s,\x20%s',_0x4bdc1a,_0x8fd2('0xd'),JSON['stringify'](_0x13cc69));if(_0x13cc69[_0x8fd2('0xe')]){if(_0x13cc69['error'][_0x8fd2('0xf')]===0x1f4){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x466c3d(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x10fccf(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}else{logger[_0x8fd2('0x11')](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');_0x10fccf(_0x13cc69[_0x8fd2('0x12')]['message']);}})['catch'](function(_0x56f75d){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x56f75d);_0x466c3d(_0x56f75d);});});}
\ No newline at end of file
index 7af2776..4bbc4a8 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 84c9181..9c6051a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['name','exports','STRING'];(function(_0xa96814,_0xfb2410){var _0x389a28=function(_0x1286cc){while(--_0x1286cc){_0xa96814['push'](_0xa96814['shift']());}};_0x389a28(++_0xfb2410);}(_0x2032,0xd9));var _0x2203=function(_0x4a1c9d,_0x4119bf){_0x4a1c9d=_0x4a1c9d-0x0;var _0x53ff77=_0x2032[_0x4a1c9d];return _0x53ff77;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x2098e7,_0x262646){var _0x474be9=function(_0x5b785f){while(--_0x5b785f){_0x2098e7['push'](_0x2098e7['shift']());}};_0x474be9(++_0x262646);}(_0xb10b,0x12a));var _0xbb10=function(_0x3a28e2,_0x58325a){_0x3a28e2=_0x3a28e2-0x0;var _0xfd325a=_0xb10b[_0x3a28e2];return _0xfd325a;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2')},'description':{'type':Sequelize[_0xbb10('0x1')]}};
\ No newline at end of file
index 0b47181..11236b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd44b=['OpenchannelQueueId','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','UserProfileResource','Teams','findOne','channel','isValidChannel','capitalize','Queue','add','toLowerCase','Queues','ids','removeQueues','ValidationError','Unknown\x20channel','remove','addAgents','Mail','Sms','Fax','Openchannel','Whatsapp','Voice','through','penalty','QueueId','TeamVoiceQueue','findOrCreate','User','online','voicePause','upsert','format','SIP/%s','interface','all','spread','Chat','removeAgents','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','redis','defaults','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','stack','name','send','map','Team','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','sequelize','transaction','Sequelize','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','MailQueueId','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0xd44b,0x1e8));var _0xbd44=function(_0x2b0368,_0x595037){_0x2b0368=_0x2b0368-0x0;var _0x1e50c0=_0xd44b[_0x2b0368];return _0x1e50c0;};'use strict';var emlformat=require(_0xbd44('0x0'));var rimraf=require(_0xbd44('0x1'));var zipdir=require(_0xbd44('0x2'));var jsonpatch=require(_0xbd44('0x3'));var rp=require(_0xbd44('0x4'));var moment=require(_0xbd44('0x5'));var BPromise=require(_0xbd44('0x6'));var Mustache=require(_0xbd44('0x7'));var util=require(_0xbd44('0x8'));var path=require(_0xbd44('0x9'));var sox=require('sox');var csv=require(_0xbd44('0xa'));var ejs=require(_0xbd44('0xb'));var fs=require('fs');var fs_extra=require(_0xbd44('0xc'));var _=require('lodash');var squel=require(_0xbd44('0xd'));var crypto=require('crypto');var jsforce=require(_0xbd44('0xe'));var deskjs=require(_0xbd44('0xf'));var toCsv=require('to-csv');var querystring=require(_0xbd44('0x10'));var Papa=require(_0xbd44('0x11'));var Redis=require(_0xbd44('0x12'));var authService=require(_0xbd44('0x13'));var qs=require(_0xbd44('0x14'));var as=require(_0xbd44('0x15'));var hardwareService=require(_0xbd44('0x16'));var logger=require(_0xbd44('0x17'))(_0xbd44('0x18'));var utils=require(_0xbd44('0x19'));var config=require(_0xbd44('0x1a'));var licenseUtil=require(_0xbd44('0x1b'));var db=require(_0xbd44('0x1c'))['db'];config[_0xbd44('0x1d')]=_[_0xbd44('0x1e')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xbd44('0x1f'))(new Redis(config[_0xbd44('0x1d')]));require('./team.socket')[_0xbd44('0x20')](socket);function respondWithStatusCode(_0x4dded2,_0xa523d5){_0xa523d5=_0xa523d5||0xcc;return function(_0x43f438){if(_0x43f438){return _0x4dded2[_0xbd44('0x21')](_0xa523d5);}return _0x4dded2['status'](_0xa523d5)[_0xbd44('0x22')]();};}function respondWithResult(_0x4258a6,_0xc04ea2){_0xc04ea2=_0xc04ea2||0xc8;return function(_0x12c135){if(_0x12c135){return _0x4258a6[_0xbd44('0x23')](_0xc04ea2)[_0xbd44('0x24')](_0x12c135);}};}function respondWithFilteredResult(_0x2bef4c,_0x7a5387){return function(_0x3e1118){if(_0x3e1118){var _0x1b3d6c=typeof _0x7a5387[_0xbd44('0x25')]===_0xbd44('0x26')&&typeof _0x7a5387[_0xbd44('0x27')]==='undefined';var _0x1a48f6=_0x3e1118[_0xbd44('0x28')];var _0x5b6ac1=_0x1b3d6c?0x0:_0x7a5387['offset'];var _0x4cdacc=_0x1b3d6c?_0x3e1118[_0xbd44('0x28')]:_0x7a5387[_0xbd44('0x25')]+_0x7a5387[_0xbd44('0x27')];var _0x301775;if(_0x4cdacc>=_0x1a48f6){_0x4cdacc=_0x1a48f6;_0x301775=0xc8;}else{_0x301775=0xce;}_0x2bef4c[_0xbd44('0x23')](_0x301775);return _0x2bef4c[_0xbd44('0x29')](_0xbd44('0x2a'),_0x5b6ac1+'-'+_0x4cdacc+'/'+_0x1a48f6)[_0xbd44('0x24')](_0x3e1118);}return null;};}function patchUpdates(_0x2a2560){return function(_0x40edab){try{jsonpatch[_0xbd44('0x2b')](_0x40edab,_0x2a2560,!![]);}catch(_0x4b0f02){return BPromise['reject'](_0x4b0f02);}return _0x40edab['save']();};}function saveUpdates(_0x229867,_0x368aa2){return function(_0x2f1385){if(_0x2f1385){return _0x2f1385['update'](_0x229867)[_0xbd44('0x2c')](function(_0x2a605e){return _0x2a605e;});}return null;};}function handleEntityNotFound(_0x4cd5c8,_0x2b803f){return function(_0x54d542){if(!_0x54d542){_0x4cd5c8['sendStatus'](0x194);}return _0x54d542;};}function handleError(_0x2215fb,_0x2076d5){_0x2076d5=_0x2076d5||0x1f4;return function(_0x4c89e5){logger['error'](_0x4c89e5[_0xbd44('0x2d')]);if(_0x4c89e5[_0xbd44('0x2e')]){delete _0x4c89e5[_0xbd44('0x2e')];}_0x2215fb[_0xbd44('0x23')](_0x2076d5)[_0xbd44('0x2f')](_0x4c89e5);};}exports['index']=function(_0x520ffc,_0x557f16){var _0x341034={},_0x117edf={},_0x30c5a3={'count':0x0,'rows':[]};var _0x1284ed=_[_0xbd44('0x30')](db[_0xbd44('0x31')][_0xbd44('0x32')],function(_0x37f931){return{'name':_0x37f931[_0xbd44('0x33')],'type':_0x37f931['type'][_0xbd44('0x34')]};});_0x117edf[_0xbd44('0x35')]=_[_0xbd44('0x30')](_0x1284ed,_0xbd44('0x2e'));_0x117edf[_0xbd44('0x36')]=_[_0xbd44('0x37')](_0x520ffc[_0xbd44('0x36')]);_0x117edf[_0xbd44('0x38')]=_[_0xbd44('0x39')](_0x117edf['model'],_0x117edf[_0xbd44('0x36')]);_0x341034[_0xbd44('0x3a')]=_[_0xbd44('0x39')](_0x117edf[_0xbd44('0x35')],qs['fields'](_0x520ffc[_0xbd44('0x36')][_0xbd44('0x3b')]));_0x341034[_0xbd44('0x3a')]=_0x341034[_0xbd44('0x3a')]['length']?_0x341034['attributes']:_0x117edf[_0xbd44('0x35')];if(!_0x520ffc[_0xbd44('0x36')][_0xbd44('0x3c')](_0xbd44('0x3d'))){_0x341034['limit']=qs[_0xbd44('0x27')](_0x520ffc['query'][_0xbd44('0x27')]);_0x341034['offset']=qs['offset'](_0x520ffc[_0xbd44('0x36')][_0xbd44('0x25')]);}_0x341034[_0xbd44('0x3e')]=qs[_0xbd44('0x3f')](_0x520ffc['query'][_0xbd44('0x3f')]);_0x341034['where']=qs[_0xbd44('0x38')](_[_0xbd44('0x40')](_0x520ffc[_0xbd44('0x36')],_0x117edf[_0xbd44('0x38')]),_0x1284ed);if(_0x520ffc[_0xbd44('0x36')][_0xbd44('0x41')]){_0x341034[_0xbd44('0x42')]=_[_0xbd44('0x43')](_0x341034['where'],{'$or':_[_0xbd44('0x30')](_0x1284ed,function(_0x21b147){if(_0x21b147[_0xbd44('0x44')]!==_0xbd44('0x45')){var _0x4eda03={};_0x4eda03[_0x21b147[_0xbd44('0x2e')]]={'$like':'%'+_0x520ffc[_0xbd44('0x36')][_0xbd44('0x41')]+'%'};return _0x4eda03;}})});}_0x341034=_[_0xbd44('0x43')]({},_0x341034,_0x520ffc[_0xbd44('0x46')]);var _0x298f0e={'where':_0x341034[_0xbd44('0x42')]};return db[_0xbd44('0x31')][_0xbd44('0x28')](_0x298f0e)[_0xbd44('0x2c')](function(_0x1359ca){_0x30c5a3[_0xbd44('0x28')]=_0x1359ca;if(_0x520ffc['query'][_0xbd44('0x47')]){_0x341034[_0xbd44('0x48')]=[{'all':!![]}];}return db[_0xbd44('0x31')][_0xbd44('0x49')](_0x341034);})[_0xbd44('0x2c')](function(_0x52a46c){_0x30c5a3[_0xbd44('0x4a')]=_0x52a46c;return _0x30c5a3;})[_0xbd44('0x2c')](respondWithFilteredResult(_0x557f16,_0x341034))[_0xbd44('0x4b')](handleError(_0x557f16,null));};exports['show']=function(_0x461695,_0x41296d){var _0x4b558a={'raw':![],'where':{'id':_0x461695[_0xbd44('0x4c')]['id']}},_0x1369e9={};_0x1369e9[_0xbd44('0x35')]=_[_0xbd44('0x37')](db[_0xbd44('0x31')][_0xbd44('0x32')]);_0x1369e9[_0xbd44('0x36')]=_[_0xbd44('0x37')](_0x461695[_0xbd44('0x36')]);_0x1369e9[_0xbd44('0x38')]=_[_0xbd44('0x39')](_0x1369e9['model'],_0x1369e9[_0xbd44('0x36')]);_0x4b558a[_0xbd44('0x3a')]=_[_0xbd44('0x39')](_0x1369e9[_0xbd44('0x35')],qs[_0xbd44('0x3b')](_0x461695[_0xbd44('0x36')][_0xbd44('0x3b')]));_0x4b558a[_0xbd44('0x3a')]=_0x4b558a[_0xbd44('0x3a')][_0xbd44('0x4d')]?_0x4b558a[_0xbd44('0x3a')]:_0x1369e9[_0xbd44('0x35')];if(_0x461695[_0xbd44('0x36')][_0xbd44('0x47')]){_0x4b558a[_0xbd44('0x48')]=[{'all':!![]}];}_0x4b558a=_[_0xbd44('0x43')]({},_0x4b558a,_0x461695['options']);return db[_0xbd44('0x31')][_0xbd44('0x4e')](_0x4b558a)[_0xbd44('0x2c')](handleEntityNotFound(_0x41296d,null))[_0xbd44('0x2c')](respondWithResult(_0x41296d,null))[_0xbd44('0x4b')](handleError(_0x41296d,null));};exports[_0xbd44('0x4f')]=function(_0x4a3046,_0x2d0dba){return db['Team'][_0xbd44('0x4f')](_0x4a3046[_0xbd44('0x50')],{})['then'](function(_0xfaa4d6){var _0xf81dad=_0x4a3046[_0xbd44('0x51')][_0xbd44('0x52')]({'plain':!![]});if(!_0xf81dad)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xf81dad[_0xbd44('0x53')]===_0xbd44('0x51')){var _0x485e1b=_0xfaa4d6[_0xbd44('0x52')]({'plain':!![]});var _0x16174e='Teams';return db[_0xbd44('0x54')][_0xbd44('0x4e')]({'where':{'name':_0x16174e,'userProfileId':_0xf81dad[_0xbd44('0x55')]},'raw':!![]})[_0xbd44('0x2c')](function(_0x5e88be){if(_0x5e88be&&_0x5e88be[_0xbd44('0x56')]===0x0){return db['UserProfileResource'][_0xbd44('0x4f')]({'name':_0x485e1b[_0xbd44('0x2e')],'resourceId':_0x485e1b['id'],'type':_0x5e88be[_0xbd44('0x2e')],'sectionId':_0x5e88be['id']},{})[_0xbd44('0x2c')](function(){return _0xfaa4d6;});}else{return _0xfaa4d6;}})[_0xbd44('0x4b')](function(_0x3c2bd8){logger['error'](_0xbd44('0x57'),_0x3c2bd8);throw _0x3c2bd8;});}return _0xfaa4d6;})['then'](respondWithResult(_0x2d0dba,0xc9))['catch'](handleError(_0x2d0dba,null));};exports[_0xbd44('0x58')]=function(_0x5eb343,_0x45c91c){if(_0x5eb343[_0xbd44('0x50')]['id']){delete _0x5eb343[_0xbd44('0x50')]['id'];}return db[_0xbd44('0x31')][_0xbd44('0x4e')]({'where':{'id':_0x5eb343['params']['id']}})[_0xbd44('0x2c')](handleEntityNotFound(_0x45c91c,null))[_0xbd44('0x2c')](saveUpdates(_0x5eb343[_0xbd44('0x50')],null))[_0xbd44('0x2c')](respondWithResult(_0x45c91c,null))[_0xbd44('0x4b')](handleError(_0x45c91c,null));};exports[_0xbd44('0x59')]=function(_0x49ac7a,_0xa482c2){var _0x203b9a=_0x49ac7a[_0xbd44('0x4c')]['id'];var _0x1e7a65=[];return db[_0xbd44('0x5a')][_0xbd44('0x5b')](function(_0x48b2c5){var _0x4e6c3b='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x203b9a;return db[_0xbd44('0x5a')][_0xbd44('0x36')](_0x4e6c3b,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')]['SELECT'],'raw':!![],'transaction':_0x48b2c5})[_0xbd44('0x2c')](function(_0x2230bb){_0x1e7a65=_['map'](_0x2230bb,function(_0x4184e4){return Number(_0x4184e4[_0xbd44('0x5e')]);});})[_0xbd44('0x2c')](function(){var _0x2ff8af=_0xbd44('0x5f')+_0x203b9a;return db[_0xbd44('0x5a')][_0xbd44('0x36')](_0x2ff8af,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0x404bff){var _0x155739=_[_0xbd44('0x30')](_0x404bff,function(_0x280143){return Number(_0x280143[_0xbd44('0x61')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x1e7a65},'VoiceQueueId':{'$in':_0x155739}},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){var _0x4a6870='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x203b9a;return db[_0xbd44('0x5a')][_0xbd44('0x36')](_0x4a6870,{'type':db['Sequelize'][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0x24ad53){var _0x185e7c=_['map'](_0x24ad53,function(_0x5ec6fe){return Number(_0x5ec6fe[_0xbd44('0x62')]);});return db['UserMailQueue'][_0xbd44('0x59')]({'where':{'UserId':{'$in':_0x1e7a65},'MailQueueId':{'$in':_0x185e7c}},'transaction':_0x48b2c5});})['then'](function(){var _0x4f5070='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x203b9a;return db['sequelize'][_0xbd44('0x36')](_0x4f5070,{'type':db[_0xbd44('0x5c')]['QueryTypes'][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0xd44d58){var _0x2f5f5e=_['map'](_0xd44d58,function(_0x10fb5f){return Number(_0x10fb5f[_0xbd44('0x63')]);});return db['UserSmsQueue'][_0xbd44('0x59')]({'where':{'UserId':{'$in':_0x1e7a65},'SmsQueueId':{'$in':_0x2f5f5e}},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){var _0x18c318=_0xbd44('0x64')+_0x203b9a;return db['sequelize']['query'](_0x18c318,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})['then'](function(_0x136c80){var _0x2319db=_[_0xbd44('0x30')](_0x136c80,function(_0x4424b7){return Number(_0x4424b7[_0xbd44('0x65')]);});return db['UserChatQueue']['destroy']({'where':{'UserId':{'$in':_0x1e7a65},'ChatQueueId':{'$in':_0x2319db}},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){var _0x5988f0=_0xbd44('0x66')+_0x203b9a;return db[_0xbd44('0x5a')][_0xbd44('0x36')](_0x5988f0,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0x3bd802){var _0x4c7541=_[_0xbd44('0x30')](_0x3bd802,function(_0x35bfe0){return Number(_0x35bfe0['FaxQueueId']);});return db['UserFaxQueue']['destroy']({'where':{'UserId':{'$in':_0x1e7a65},'FaxQueueId':{'$in':_0x4c7541}},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){var _0x1294dc=_0xbd44('0x67')+_0x203b9a;return db[_0xbd44('0x5a')][_0xbd44('0x36')](_0x1294dc,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0x251ef0){var _0x3a84d4=_[_0xbd44('0x30')](_0x251ef0,function(_0x40f19f){return Number(_0x40f19f[_0xbd44('0x68')]);});return db['UserOpenchannelQueue'][_0xbd44('0x59')]({'where':{'UserId':{'$in':_0x1e7a65},'OpenchannelQueueId':{'$in':_0x3a84d4}},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){var _0x56311d='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x203b9a;return db['sequelize'][_0xbd44('0x36')](_0x56311d,{'type':db[_0xbd44('0x5c')][_0xbd44('0x5d')][_0xbd44('0x60')],'raw':!![],'transaction':_0x48b2c5});})['then'](function(_0x346fd3){var _0x47b3c7=_[_0xbd44('0x30')](_0x346fd3,function(_0x4f6d91){return Number(_0x4f6d91['WhatsappQueueId']);});return db['UserWhatsappQueue'][_0xbd44('0x59')]({'where':{'UserId':{'$in':_0x1e7a65},'WhatsappQueueId':{'$in':_0x47b3c7}},'transaction':_0x48b2c5});})['then'](function(){return db[_0xbd44('0x69')][_0xbd44('0x4e')]({'where':{'TeamId':_0x203b9a}});})['then'](function(_0x104754){if(_0x104754===null){return;}return db[_0xbd44('0x6a')][_0xbd44('0x59')]({'where':{'UserId':{'$in':_0x1e7a65},'VoicePrefixId':_0x104754[_0xbd44('0x6b')]},'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(){return db[_0xbd44('0x31')][_0xbd44('0x59')]({'where':{'id':_0x203b9a},'cascade':!![],'transaction':_0x48b2c5});})[_0xbd44('0x2c')](function(_0x4d0e64){if(_0x4d0e64===0x0){_0xa482c2[_0xbd44('0x21')](0x194);}else{return db[_0xbd44('0x6c')][_0xbd44('0x59')]({'where':{'type':_0xbd44('0x6d'),'resourceId':_0x203b9a},'cascade':!![],'transaction':_0x48b2c5})['then'](function(){_0xa482c2[_0xbd44('0x23')](0xcc)[_0xbd44('0x22')]();});}})[_0xbd44('0x4b')](function(_0x6a4a5f){_0xa482c2[_0xbd44('0x23')](0x1f4)[_0xbd44('0x2f')](_0x6a4a5f);});});};exports['getQueues']=function(_0x3583cf,_0x20a372,_0x112d17){return db[_0xbd44('0x31')][_0xbd44('0x6e')]({'where':{'id':_0x3583cf[_0xbd44('0x4c')]['id']}})[_0xbd44('0x2c')](handleEntityNotFound(_0x20a372,null))[_0xbd44('0x2c')](function(_0x2f2acc){if(!_0x3583cf[_0xbd44('0x36')][_0xbd44('0x6f')]||!utils[_0xbd44('0x70')](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x6f')])){throw new db[(_0xbd44('0x5c'))]['ValidationError']('Unknown\x20channel');}var _0x453dcb={};var _0x95dfc0={};_0x95dfc0[_0xbd44('0x35')]=_[_0xbd44('0x37')](db[_[_0xbd44('0x71')](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x6f')]['toLowerCase']())+_0xbd44('0x72')][_0xbd44('0x32')]);_0x95dfc0[_0xbd44('0x36')]=_[_0xbd44('0x37')](_0x3583cf['query']);_0x95dfc0[_0xbd44('0x38')]=_[_0xbd44('0x39')](_0x95dfc0['model'],_0x95dfc0['query']);_0x453dcb[_0xbd44('0x3a')]=_['intersection'](_0x95dfc0[_0xbd44('0x35')],qs['fields'](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x3b')]));_0x453dcb[_0xbd44('0x3a')]=_0x453dcb[_0xbd44('0x3a')][_0xbd44('0x4d')]?_0x453dcb[_0xbd44('0x3a')]:_0x95dfc0[_0xbd44('0x35')];_0x453dcb[_0xbd44('0x27')]=qs['limit'](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x27')]);_0x453dcb[_0xbd44('0x25')]=qs[_0xbd44('0x25')](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x25')]);_0x453dcb[_0xbd44('0x3e')]=qs[_0xbd44('0x3f')](_0x3583cf[_0xbd44('0x36')][_0xbd44('0x3f')]);_0x453dcb['where']=qs['filters'](_[_0xbd44('0x40')](_0x3583cf[_0xbd44('0x36')],_0x95dfc0[_0xbd44('0x38')]));_0x453dcb=_[_0xbd44('0x43')]({},_0x453dcb,_0x3583cf[_0xbd44('0x46')]);return _0x2f2acc[_0xbd44('0x52')+_[_0xbd44('0x71')](_0x3583cf['query'][_0xbd44('0x6f')]['toLowerCase']())+'Queues'](_0x453dcb);})[_0xbd44('0x2c')](respondWithResult(_0x20a372,null))[_0xbd44('0x4b')](handleError(_0x20a372,null));};exports['addQueues']=function(_0x2f1860,_0x1d5435,_0x26b9e6){return db['Team'][_0xbd44('0x6e')]({'where':{'id':_0x2f1860[_0xbd44('0x4c')]['id']}})[_0xbd44('0x2c')](function(_0x10285a){if(_0x10285a){if(!_0x2f1860[_0xbd44('0x50')]['channel']||!utils[_0xbd44('0x70')](_0x2f1860[_0xbd44('0x50')]['channel'])){throw new db[(_0xbd44('0x5c'))]['ValidationError']('Unknown\x20channel');}return _0x10285a[_0xbd44('0x73')+_[_0xbd44('0x71')](_0x2f1860[_0xbd44('0x50')][_0xbd44('0x6f')][_0xbd44('0x74')]())+_0xbd44('0x75')](_0x2f1860[_0xbd44('0x50')][_0xbd44('0x76')]);}return null;})[_0xbd44('0x2c')](handleEntityNotFound(_0x1d5435,null))[_0xbd44('0x2c')](respondWithStatusCode(_0x1d5435,null))[_0xbd44('0x4b')](handleError(_0x1d5435,null));};exports[_0xbd44('0x77')]=function(_0xc766bc,_0x3c95f6,_0x258d95){return db[_0xbd44('0x31')][_0xbd44('0x6e')]({'where':{'id':_0xc766bc[_0xbd44('0x4c')]['id']}})['then'](function(_0x5603d0){if(_0x5603d0){if(!_0xc766bc[_0xbd44('0x36')][_0xbd44('0x6f')]||!utils['isValidChannel'](_0xc766bc['query'][_0xbd44('0x6f')])){throw new db[(_0xbd44('0x5c'))][(_0xbd44('0x78'))](_0xbd44('0x79'));}return _0x5603d0[_0xbd44('0x7a')+_[_0xbd44('0x71')](_0xc766bc[_0xbd44('0x36')]['channel']['toLowerCase']())+_0xbd44('0x75')](_0xc766bc[_0xbd44('0x36')][_0xbd44('0x76')]);}return null;})[_0xbd44('0x2c')](handleEntityNotFound(_0x3c95f6,null))['then'](respondWithStatusCode(_0x3c95f6,null))['catch'](handleError(_0x3c95f6,null));};exports[_0xbd44('0x7b')]=function(_0x206249,_0x117150){var _0x319a39=_['isArray'](_0x206249['body'][_0xbd44('0x76')])?_0x206249[_0xbd44('0x50')][_0xbd44('0x76')]:[_0x206249[_0xbd44('0x50')][_0xbd44('0x76')]];var _0x457f57=_0x206249[_0xbd44('0x4c')]['id'];return db[_0xbd44('0x31')][_0xbd44('0x4e')]({'where':{'id':_0x457f57}})[_0xbd44('0x2c')](handleEntityNotFound(_0x117150,null))[_0xbd44('0x2c')](function(_0x59c1cc){if(_0x59c1cc){var _0x119a4c=['Voice','Chat',_0xbd44('0x7c'),_0xbd44('0x7d'),_0xbd44('0x7e'),_0xbd44('0x7f'),_0xbd44('0x80')];return db[_0xbd44('0x5a')]['transaction'](function(_0x1660ca){var _0x35b7b9=_[_0xbd44('0x30')](_0x119a4c,function(_0x52f9e2){var _0x6100f={'attributes':['id',_0xbd44('0x2e')]};if(_0x52f9e2===_0xbd44('0x81')){_0x6100f[_0xbd44('0x82')]={'attributes':[_0xbd44('0x83')]};}return _0x59c1cc['get'+_0x52f9e2+_0xbd44('0x75')](_0x6100f)['then'](function(_0xd733cd){var _0x51f98f=_[_0xbd44('0x30')](_0xd733cd,function(_0x424909){var _0x4a0330=_[_0xbd44('0x30')](_0x319a39,function(_0x45dc34){var _0x5e38aa={'where':{'UserId':_0x45dc34,[_0x52f9e2+_0xbd44('0x84')]:_0x424909['id']},'transaction':_0x1660ca};if(_0x52f9e2===_0xbd44('0x81')){_0x5e38aa[_0xbd44('0x1e')]={'penalty':_0x424909[_0xbd44('0x85')][_0xbd44('0x83')]};}return db['User'+_0x52f9e2+'Queue'][_0xbd44('0x86')](_0x5e38aa)[_0xbd44('0x2c')](function(){socket['emit'](_0xbd44('0x51')+_0x52f9e2+'Queue:save',{'UserId':_0x45dc34,[_0x52f9e2+'QueueId']:_0x424909['id']});if(_0x52f9e2!==_0xbd44('0x81')){return;}return db[_0xbd44('0x87')]['findAll']({'where':{'id':_0x319a39,'online':0x1},'attributes':['id',_0xbd44('0x2e'),_0xbd44('0x88'),_0xbd44('0x89'),'interface'],'raw':!![]})[_0xbd44('0x2c')](function(_0x4e6a8f){var _0x27073e=_[_0xbd44('0x30')](_0x4e6a8f,function(_0x543b40){return db['UserVoiceQueueRt'][_0xbd44('0x8a')]({'membername':_0x543b40['name'],'UserId':_0x543b40['id'],'queue_name':_0x424909['name'],'VoiceQueueId':_0x424909['id'],'interface':_['isNil'](_0x543b40['interface'])?util[_0xbd44('0x8b')](_0xbd44('0x8c'),_0x543b40['name']):_0x543b40[_0xbd44('0x8d')],'paused':_0x543b40[_0xbd44('0x89')]||![],'penalty':_0x424909['TeamVoiceQueue'][_0xbd44('0x83')]},{'transaction':_0x1660ca});});return Promise[_0xbd44('0x8e')](_0x27073e);});});});return Promise['all'](_0x4a0330);});return Promise[_0xbd44('0x8e')](_0x51f98f);})[_0xbd44('0x2c')](function(){return db[_0xbd44('0x69')]['findOne']({'where':{'teamId':_0x457f57}})[_0xbd44('0x2c')](function(_0x376497){if(_0x376497){var _0x2edea3=_['map'](_0x319a39,function(_0x180e17){db[_0xbd44('0x6a')][_0xbd44('0x8a')]({'UserId':_0x180e17,'VoicePrefixId':_0x376497['VoicePrefixId']});});return Promise['all'](_0x2edea3);}});});});return Promise[_0xbd44('0x8e')](_0x35b7b9)[_0xbd44('0x2c')](function(){return _0x59c1cc[_0xbd44('0x7b')](_0x319a39,{'transaction':_0x1660ca})[_0xbd44('0x8f')](function(_0x3bcbb8){return _0x3bcbb8;});});});}})[_0xbd44('0x2c')](respondWithResult(_0x117150,null))[_0xbd44('0x4b')](handleError(_0x117150,null));};exports['removeAgents']=function(_0x44aadd,_0x5a5d71){var _0x59f5a3=_['isArray'](_0x44aadd['query'][_0xbd44('0x76')])?_0x44aadd[_0xbd44('0x36')][_0xbd44('0x76')]:[_0x44aadd[_0xbd44('0x36')][_0xbd44('0x76')]];var _0x1aa1eb=_0x44aadd[_0xbd44('0x4c')]['id'];return db[_0xbd44('0x31')]['find']({'where':{'id':_0x1aa1eb}})[_0xbd44('0x2c')](handleEntityNotFound(_0x5a5d71,null))[_0xbd44('0x2c')](function(_0x48de36){if(_0x48de36){var _0x376ebf=[_0xbd44('0x81'),_0xbd44('0x90'),_0xbd44('0x7c'),_0xbd44('0x7d'),_0xbd44('0x7e'),_0xbd44('0x7f'),_0xbd44('0x80')];return db[_0xbd44('0x5a')][_0xbd44('0x5b')](function(_0x134769){var _0x4c8d65=_[_0xbd44('0x30')](_0x376ebf,function(_0x20dd86){var _0xfbd296={'attributes':['id',_0xbd44('0x2e')]};return _0x48de36[_0xbd44('0x52')+_0x20dd86+_0xbd44('0x75')](_0xfbd296)[_0xbd44('0x2c')](function(_0x79710e){var _0xf97890=_[_0xbd44('0x30')](_0x79710e,function(_0x27b9ba){return _0x27b9ba[_0xbd44('0x91')](_0x59f5a3,{'transaction':_0x134769})[_0xbd44('0x2c')](function(){var _0x433169=_[_0xbd44('0x30')](_0x59f5a3,function(_0x15092b){socket[_0xbd44('0x92')](_0xbd44('0x51')+_0x20dd86+'Queue:remove',{'UserId':Number(_0x15092b),[_0x20dd86+'QueueId']:_0x27b9ba['id']});if(_0x20dd86!=='Voice'){return;}return db['UserVoiceQueueRt'][_0xbd44('0x59')]({'where':{'VoiceQueueId':_0x27b9ba['id'],'UserId':_0x15092b},'transaction':_0x134769});});return Promise[_0xbd44('0x8e')](_0x433169);});});return Promise[_0xbd44('0x8e')](_0xf97890);});});return Promise[_0xbd44('0x8e')](_0x4c8d65)[_0xbd44('0x2c')](function(){return _0x48de36['removeAgents'](_0x59f5a3,{'transaction':_0x134769});})['then'](function(){return db['TeamVoicePrefix'][_0xbd44('0x6e')]({'where':{'teamId':_0x1aa1eb}})[_0xbd44('0x2c')](function(_0x370538){if(_0x370538){var _0x27ddc9=_[_0xbd44('0x30')](_0x59f5a3,function(_0x28de47){db[_0xbd44('0x6a')][_0xbd44('0x59')]({'where':{'UserId':_0x28de47,'VoicePrefixId':_0x370538[_0xbd44('0x6b')]}});});return Promise[_0xbd44('0x8e')](_0x27ddc9);}});});});}})[_0xbd44('0x2c')](respondWithStatusCode(_0x5a5d71,null))[_0xbd44('0x4b')](handleError(_0x5a5d71,null));};exports[_0xbd44('0x93')]=function(_0x4ef132,_0x296796,_0x58f430){var _0x171309={};var _0x10b123={};var _0xb48feb;var _0x187d9d;return db[_0xbd44('0x31')][_0xbd44('0x6e')]({'where':{'id':_0x4ef132['params']['id']}})[_0xbd44('0x2c')](handleEntityNotFound(_0x296796,null))[_0xbd44('0x2c')](function(_0x1fb872){if(_0x1fb872){_0xb48feb=_0x1fb872;_0x10b123[_0xbd44('0x35')]=_['keys'](db['User'][_0xbd44('0x32')]);_0x10b123[_0xbd44('0x36')]=_[_0xbd44('0x37')](_0x4ef132[_0xbd44('0x36')]);_0x10b123[_0xbd44('0x38')]=_[_0xbd44('0x39')](_0x10b123[_0xbd44('0x35')],_0x10b123['query']);_0x171309[_0xbd44('0x3a')]=_['intersection'](_0x10b123[_0xbd44('0x35')],qs[_0xbd44('0x3b')](_0x4ef132[_0xbd44('0x36')][_0xbd44('0x3b')]));_0x171309[_0xbd44('0x3a')]=_0x171309[_0xbd44('0x3a')][_0xbd44('0x4d')]?_0x171309[_0xbd44('0x3a')]:_0x10b123[_0xbd44('0x35')];_0x171309[_0xbd44('0x3e')]=qs[_0xbd44('0x3f')](_0x4ef132[_0xbd44('0x36')][_0xbd44('0x3f')]);_0x171309['where']=qs[_0xbd44('0x38')](_[_0xbd44('0x40')](_0x4ef132[_0xbd44('0x36')],_0x10b123[_0xbd44('0x38')]));if(_0x4ef132[_0xbd44('0x36')][_0xbd44('0x41')]){_0x171309[_0xbd44('0x42')]=_[_0xbd44('0x43')](_0x171309['where'],{'$or':_['map'](_0x171309['attributes'],function(_0x54aae9){var _0x183ca9={};_0x183ca9[_0x54aae9]={'$like':'%'+_0x4ef132[_0xbd44('0x36')][_0xbd44('0x41')]+'%'};return _0x183ca9;})});}_0x171309=_[_0xbd44('0x43')]({},_0x171309,_0x4ef132['options']);return _0xb48feb[_0xbd44('0x93')](_0x171309);}})[_0xbd44('0x2c')](function(_0x16dc76){if(_0x16dc76){_0x187d9d=_0x16dc76[_0xbd44('0x4d')];if(!_0x4ef132['query'][_0xbd44('0x3c')](_0xbd44('0x3d'))){_0x171309['limit']=qs[_0xbd44('0x27')](_0x4ef132[_0xbd44('0x36')][_0xbd44('0x27')]);_0x171309[_0xbd44('0x25')]=qs[_0xbd44('0x25')](_0x4ef132[_0xbd44('0x36')][_0xbd44('0x25')]);}return _0xb48feb['getAgents'](_0x171309);}})[_0xbd44('0x2c')](function(_0x41afc5){if(_0x41afc5){return _0x41afc5?{'count':_0x187d9d,'rows':_0x41afc5}:null;}})[_0xbd44('0x2c')](respondWithResult(_0x296796,null))['catch'](handleError(_0x296796,null));};
\ No newline at end of file
+var _0x291a=['api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','error','stack','name','send','Team','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','length','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','VoiceQueueId','UserVoiceQueue','destroy','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','Teams','end','getQueues','findOne','channel','isValidChannel','ValidationError','capitalize','toLowerCase','addQueues','Unknown\x20channel','add','Queues','ids','removeQueues','remove','isArray','Voice','Chat','Mail','Sms','Fax','Whatsapp','penalty','QueueId','TeamVoiceQueue','User','Queue','findOrCreate','emit','Queue:save','online','voicePause','interface','isNil','format','all','upsert','addAgents','spread','removeAgents','Openchannel','Queue:remove','UserVoiceQueueRt','getAgents','hasOwnProperty','nolimit','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x1a6967,_0x24dd5a){var _0xe571f9=function(_0x17cab3){while(--_0x17cab3){_0x1a6967['push'](_0x1a6967['shift']());}};_0xe571f9(++_0x24dd5a);}(_0x291a,0x123));var _0xa291=function(_0x3e26cf,_0x39943d){_0x3e26cf=_0x3e26cf-0x0;var _0x258d3c=_0x291a[_0x3e26cf];return _0x258d3c;};'use strict';var emlformat=require(_0xa291('0x0'));var rimraf=require(_0xa291('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa291('0x2'));var moment=require(_0xa291('0x3'));var BPromise=require(_0xa291('0x4'));var Mustache=require(_0xa291('0x5'));var util=require(_0xa291('0x6'));var path=require('path');var sox=require(_0xa291('0x7'));var csv=require(_0xa291('0x8'));var ejs=require(_0xa291('0x9'));var fs=require('fs');var fs_extra=require(_0xa291('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa291('0x8'));var querystring=require(_0xa291('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa291('0xc'));var qs=require(_0xa291('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa291('0xe'))(_0xa291('0xf'));var utils=require(_0xa291('0x10'));var config=require(_0xa291('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xa291('0x12'))['db'];config[_0xa291('0x13')]=_[_0xa291('0x14')](config[_0xa291('0x13')],{'host':_0xa291('0x15'),'port':0x18eb});var socket=require(_0xa291('0x16'))(new Redis(config[_0xa291('0x13')]));require(_0xa291('0x17'))[_0xa291('0x18')](socket);function respondWithStatusCode(_0x2b4441,_0x352f9e){_0x352f9e=_0x352f9e||0xcc;return function(_0x53ebdd){if(_0x53ebdd){return _0x2b4441[_0xa291('0x19')](_0x352f9e);}return _0x2b4441[_0xa291('0x1a')](_0x352f9e)['end']();};}function respondWithResult(_0x333261,_0x5e9103){_0x5e9103=_0x5e9103||0xc8;return function(_0x533b50){if(_0x533b50){return _0x333261['status'](_0x5e9103)['json'](_0x533b50);}};}function respondWithFilteredResult(_0x471d09,_0x2ef48c){return function(_0x50fc16){if(_0x50fc16){var _0x50edc5=typeof _0x2ef48c[_0xa291('0x1b')]===_0xa291('0x1c')&&typeof _0x2ef48c[_0xa291('0x1d')]===_0xa291('0x1c');var _0x293a6e=_0x50fc16[_0xa291('0x1e')];var _0x397c2e=_0x50edc5?0x0:_0x2ef48c[_0xa291('0x1b')];var _0x5f3b7c=_0x50edc5?_0x50fc16[_0xa291('0x1e')]:_0x2ef48c[_0xa291('0x1b')]+_0x2ef48c['limit'];var _0x532cbb;if(_0x5f3b7c>=_0x293a6e){_0x5f3b7c=_0x293a6e;_0x532cbb=0xc8;}else{_0x532cbb=0xce;}_0x471d09[_0xa291('0x1a')](_0x532cbb);return _0x471d09[_0xa291('0x1f')](_0xa291('0x20'),_0x397c2e+'-'+_0x5f3b7c+'/'+_0x293a6e)[_0xa291('0x21')](_0x50fc16);}return null;};}function patchUpdates(_0x3fb45f){return function(_0x52c412){try{jsonpatch[_0xa291('0x22')](_0x52c412,_0x3fb45f,!![]);}catch(_0x5cb3ae){return BPromise[_0xa291('0x23')](_0x5cb3ae);}return _0x52c412['save']();};}function saveUpdates(_0x5f2db3,_0x2ed65f){return function(_0x2f56f5){if(_0x2f56f5){return _0x2f56f5[_0xa291('0x24')](_0x5f2db3)[_0xa291('0x25')](function(_0x1a24db){return _0x1a24db;});}return null;};}function handleEntityNotFound(_0x339875,_0x4885c6){return function(_0x52455a){if(!_0x52455a){_0x339875[_0xa291('0x19')](0x194);}return _0x52455a;};}function handleError(_0x18cc99,_0x28016e){_0x28016e=_0x28016e||0x1f4;return function(_0x3c4256){logger[_0xa291('0x26')](_0x3c4256[_0xa291('0x27')]);if(_0x3c4256[_0xa291('0x28')]){delete _0x3c4256[_0xa291('0x28')];}_0x18cc99['status'](_0x28016e)[_0xa291('0x29')](_0x3c4256);};}exports['index']=function(_0x2f13dc,_0x588789){var _0x3462da={},_0x5ef4cb={},_0x262585={'count':0x0,'rows':[]};var _0x402463=_['map'](db[_0xa291('0x2a')][_0xa291('0x2b')],function(_0x1304d5){return{'name':_0x1304d5[_0xa291('0x2c')],'type':_0x1304d5[_0xa291('0x2d')][_0xa291('0x2e')]};});_0x5ef4cb[_0xa291('0x2f')]=_[_0xa291('0x30')](_0x402463,_0xa291('0x28'));_0x5ef4cb[_0xa291('0x31')]=_[_0xa291('0x32')](_0x2f13dc['query']);_0x5ef4cb['filters']=_[_0xa291('0x33')](_0x5ef4cb[_0xa291('0x2f')],_0x5ef4cb[_0xa291('0x31')]);_0x3462da[_0xa291('0x34')]=_[_0xa291('0x33')](_0x5ef4cb[_0xa291('0x2f')],qs[_0xa291('0x35')](_0x2f13dc[_0xa291('0x31')][_0xa291('0x35')]));_0x3462da['attributes']=_0x3462da[_0xa291('0x34')]['length']?_0x3462da[_0xa291('0x34')]:_0x5ef4cb[_0xa291('0x2f')];if(!_0x2f13dc[_0xa291('0x31')]['hasOwnProperty']('nolimit')){_0x3462da[_0xa291('0x1d')]=qs[_0xa291('0x1d')](_0x2f13dc[_0xa291('0x31')][_0xa291('0x1d')]);_0x3462da[_0xa291('0x1b')]=qs[_0xa291('0x1b')](_0x2f13dc[_0xa291('0x31')]['offset']);}_0x3462da[_0xa291('0x36')]=qs['sort'](_0x2f13dc[_0xa291('0x31')][_0xa291('0x37')]);_0x3462da[_0xa291('0x38')]=qs[_0xa291('0x39')](_[_0xa291('0x3a')](_0x2f13dc[_0xa291('0x31')],_0x5ef4cb['filters']),_0x402463);if(_0x2f13dc[_0xa291('0x31')][_0xa291('0x3b')]){_0x3462da[_0xa291('0x38')]=_[_0xa291('0x3c')](_0x3462da[_0xa291('0x38')],{'$or':_[_0xa291('0x30')](_0x402463,function(_0x5c23c8){if(_0x5c23c8[_0xa291('0x2d')]!=='VIRTUAL'){var _0x4dd6dd={};_0x4dd6dd[_0x5c23c8[_0xa291('0x28')]]={'$like':'%'+_0x2f13dc[_0xa291('0x31')][_0xa291('0x3b')]+'%'};return _0x4dd6dd;}})});}_0x3462da=_[_0xa291('0x3c')]({},_0x3462da,_0x2f13dc[_0xa291('0x3d')]);var _0x24ba9b={'where':_0x3462da[_0xa291('0x38')]};return db['Team'][_0xa291('0x1e')](_0x24ba9b)[_0xa291('0x25')](function(_0xf5c420){_0x262585[_0xa291('0x1e')]=_0xf5c420;if(_0x2f13dc[_0xa291('0x31')][_0xa291('0x3e')]){_0x3462da[_0xa291('0x3f')]=[{'all':!![]}];}return db[_0xa291('0x2a')][_0xa291('0x40')](_0x3462da);})[_0xa291('0x25')](function(_0x25c382){_0x262585['rows']=_0x25c382;return _0x262585;})[_0xa291('0x25')](respondWithFilteredResult(_0x588789,_0x3462da))[_0xa291('0x41')](handleError(_0x588789,null));};exports[_0xa291('0x42')]=function(_0x11029b,_0x3f4b37){var _0x3a128a={'raw':![],'where':{'id':_0x11029b[_0xa291('0x43')]['id']}},_0xe5f5fa={};_0xe5f5fa[_0xa291('0x2f')]=_[_0xa291('0x32')](db[_0xa291('0x2a')][_0xa291('0x2b')]);_0xe5f5fa[_0xa291('0x31')]=_[_0xa291('0x32')](_0x11029b[_0xa291('0x31')]);_0xe5f5fa[_0xa291('0x39')]=_[_0xa291('0x33')](_0xe5f5fa[_0xa291('0x2f')],_0xe5f5fa[_0xa291('0x31')]);_0x3a128a[_0xa291('0x34')]=_[_0xa291('0x33')](_0xe5f5fa[_0xa291('0x2f')],qs[_0xa291('0x35')](_0x11029b[_0xa291('0x31')][_0xa291('0x35')]));_0x3a128a[_0xa291('0x34')]=_0x3a128a[_0xa291('0x34')][_0xa291('0x44')]?_0x3a128a[_0xa291('0x34')]:_0xe5f5fa[_0xa291('0x2f')];if(_0x11029b[_0xa291('0x31')][_0xa291('0x3e')]){_0x3a128a['include']=[{'all':!![]}];}_0x3a128a=_[_0xa291('0x3c')]({},_0x3a128a,_0x11029b[_0xa291('0x3d')]);return db[_0xa291('0x2a')]['find'](_0x3a128a)[_0xa291('0x25')](handleEntityNotFound(_0x3f4b37,null))[_0xa291('0x25')](respondWithResult(_0x3f4b37,null))['catch'](handleError(_0x3f4b37,null));};exports[_0xa291('0x45')]=function(_0xe1931e,_0x31ffcf){return db['Team'][_0xa291('0x45')](_0xe1931e['body'],{})[_0xa291('0x25')](function(_0x5a6904){var _0x5ef71e=_0xe1931e[_0xa291('0x46')][_0xa291('0x47')]({'plain':!![]});if(!_0x5ef71e)throw new Error(_0xa291('0x48'));if(_0x5ef71e[_0xa291('0x49')]===_0xa291('0x46')){var _0x5c9700=_0x5a6904[_0xa291('0x47')]({'plain':!![]});var _0x52a88e='Teams';return db[_0xa291('0x4a')][_0xa291('0x4b')]({'where':{'name':_0x52a88e,'userProfileId':_0x5ef71e['userProfileId']},'raw':!![]})[_0xa291('0x25')](function(_0x157421){if(_0x157421&&_0x157421[_0xa291('0x4c')]===0x0){return db['UserProfileResource'][_0xa291('0x45')]({'name':_0x5c9700[_0xa291('0x28')],'resourceId':_0x5c9700['id'],'type':_0x157421[_0xa291('0x28')],'sectionId':_0x157421['id']},{})[_0xa291('0x25')](function(){return _0x5a6904;});}else{return _0x5a6904;}})[_0xa291('0x41')](function(_0x13635a){logger['error'](_0xa291('0x4d'),_0x13635a);throw _0x13635a;});}return _0x5a6904;})[_0xa291('0x25')](respondWithResult(_0x31ffcf,0xc9))[_0xa291('0x41')](handleError(_0x31ffcf,null));};exports[_0xa291('0x24')]=function(_0x14a0af,_0x4a1011){if(_0x14a0af[_0xa291('0x4e')]['id']){delete _0x14a0af[_0xa291('0x4e')]['id'];}return db[_0xa291('0x2a')][_0xa291('0x4b')]({'where':{'id':_0x14a0af[_0xa291('0x43')]['id']}})['then'](handleEntityNotFound(_0x4a1011,null))['then'](saveUpdates(_0x14a0af[_0xa291('0x4e')],null))[_0xa291('0x25')](respondWithResult(_0x4a1011,null))[_0xa291('0x41')](handleError(_0x4a1011,null));};exports['destroy']=function(_0x26f013,_0x12fb0e){var _0x56fae3=_0x26f013[_0xa291('0x43')]['id'];var _0x51d3dd=[];return db[_0xa291('0x4f')][_0xa291('0x50')](function(_0x58094d){var _0x516881=_0xa291('0x51')+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x516881,{'type':db[_0xa291('0x52')][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d})[_0xa291('0x25')](function(_0x32546f){_0x51d3dd=_[_0xa291('0x30')](_0x32546f,function(_0x5b7770){return Number(_0x5b7770[_0xa291('0x55')]);});})['then'](function(){var _0x11769c='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x56fae3;return db['sequelize'][_0xa291('0x31')](_0x11769c,{'type':db[_0xa291('0x52')][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x49f6e9){var _0x4d2aa8=_[_0xa291('0x30')](_0x49f6e9,function(_0x54f22b){return Number(_0x54f22b[_0xa291('0x56')]);});return db[_0xa291('0x57')][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'VoiceQueueId':{'$in':_0x4d2aa8}},'transaction':_0x58094d});})[_0xa291('0x25')](function(){var _0x43cd0f=_0xa291('0x59')+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x43cd0f,{'type':db['Sequelize'][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x65ba17){var _0x545824=_[_0xa291('0x30')](_0x65ba17,function(_0x46822f){return Number(_0x46822f[_0xa291('0x5a')]);});return db[_0xa291('0x5b')][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'MailQueueId':{'$in':_0x545824}},'transaction':_0x58094d});})[_0xa291('0x25')](function(){var _0x167138='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x56fae3;return db['sequelize'][_0xa291('0x31')](_0x167138,{'type':db[_0xa291('0x52')][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})['then'](function(_0x27f44c){var _0x196e5c=_[_0xa291('0x30')](_0x27f44c,function(_0x3ef4df){return Number(_0x3ef4df[_0xa291('0x5c')]);});return db['UserSmsQueue'][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'SmsQueueId':{'$in':_0x196e5c}},'transaction':_0x58094d});})[_0xa291('0x25')](function(){var _0x3c3b03=_0xa291('0x5d')+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x3c3b03,{'type':db[_0xa291('0x52')][_0xa291('0x53')]['SELECT'],'raw':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x46b524){var _0x5885e8=_[_0xa291('0x30')](_0x46b524,function(_0x5e8c55){return Number(_0x5e8c55[_0xa291('0x5e')]);});return db[_0xa291('0x5f')][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'ChatQueueId':{'$in':_0x5885e8}},'transaction':_0x58094d});})['then'](function(){var _0x4b6e82='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x4b6e82,{'type':db[_0xa291('0x52')][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x502314){var _0x468756=_['map'](_0x502314,function(_0x164b40){return Number(_0x164b40[_0xa291('0x60')]);});return db[_0xa291('0x61')][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'FaxQueueId':{'$in':_0x468756}},'transaction':_0x58094d});})[_0xa291('0x25')](function(){var _0x41e752=_0xa291('0x62')+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x41e752,{'type':db['Sequelize']['QueryTypes'][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})['then'](function(_0x5cd15a){var _0x106b61=_[_0xa291('0x30')](_0x5cd15a,function(_0x1e29ba){return Number(_0x1e29ba['OpenchannelQueueId']);});return db[_0xa291('0x63')][_0xa291('0x58')]({'where':{'UserId':{'$in':_0x51d3dd},'OpenchannelQueueId':{'$in':_0x106b61}},'transaction':_0x58094d});})[_0xa291('0x25')](function(){var _0x471be6=_0xa291('0x64')+_0x56fae3;return db[_0xa291('0x4f')][_0xa291('0x31')](_0x471be6,{'type':db['Sequelize'][_0xa291('0x53')][_0xa291('0x54')],'raw':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x2b4f67){var _0x3ff447=_['map'](_0x2b4f67,function(_0x3f2529){return Number(_0x3f2529[_0xa291('0x65')]);});return db[_0xa291('0x66')]['destroy']({'where':{'UserId':{'$in':_0x51d3dd},'WhatsappQueueId':{'$in':_0x3ff447}},'transaction':_0x58094d});})['then'](function(){return db[_0xa291('0x67')]['find']({'where':{'TeamId':_0x56fae3}});})[_0xa291('0x25')](function(_0x33cc71){if(_0x33cc71===null){return;}return db[_0xa291('0x68')]['destroy']({'where':{'UserId':{'$in':_0x51d3dd},'VoicePrefixId':_0x33cc71[_0xa291('0x69')]},'transaction':_0x58094d});})[_0xa291('0x25')](function(){return db[_0xa291('0x2a')][_0xa291('0x58')]({'where':{'id':_0x56fae3},'cascade':!![],'transaction':_0x58094d});})[_0xa291('0x25')](function(_0x51a446){if(_0x51a446===0x0){_0x12fb0e[_0xa291('0x19')](0x194);}else{return db['UserProfileResource'][_0xa291('0x58')]({'where':{'type':_0xa291('0x6a'),'resourceId':_0x56fae3},'cascade':!![],'transaction':_0x58094d})['then'](function(){_0x12fb0e[_0xa291('0x1a')](0xcc)[_0xa291('0x6b')]();});}})[_0xa291('0x41')](function(_0x349e4f){_0x12fb0e[_0xa291('0x1a')](0x1f4)[_0xa291('0x29')](_0x349e4f);});});};exports[_0xa291('0x6c')]=function(_0x158636,_0x580244,_0x118db7){return db[_0xa291('0x2a')][_0xa291('0x6d')]({'where':{'id':_0x158636[_0xa291('0x43')]['id']}})[_0xa291('0x25')](handleEntityNotFound(_0x580244,null))['then'](function(_0x448ea7){if(!_0x158636[_0xa291('0x31')][_0xa291('0x6e')]||!utils[_0xa291('0x6f')](_0x158636[_0xa291('0x31')][_0xa291('0x6e')])){throw new db[(_0xa291('0x52'))][(_0xa291('0x70'))]('Unknown\x20channel');}var _0xd86d4a={};var _0x1cfa2a={};_0x1cfa2a[_0xa291('0x2f')]=_[_0xa291('0x32')](db[_[_0xa291('0x71')](_0x158636[_0xa291('0x31')][_0xa291('0x6e')]['toLowerCase']())+'Queue'][_0xa291('0x2b')]);_0x1cfa2a[_0xa291('0x31')]=_[_0xa291('0x32')](_0x158636[_0xa291('0x31')]);_0x1cfa2a[_0xa291('0x39')]=_[_0xa291('0x33')](_0x1cfa2a[_0xa291('0x2f')],_0x1cfa2a['query']);_0xd86d4a[_0xa291('0x34')]=_['intersection'](_0x1cfa2a[_0xa291('0x2f')],qs[_0xa291('0x35')](_0x158636[_0xa291('0x31')][_0xa291('0x35')]));_0xd86d4a[_0xa291('0x34')]=_0xd86d4a[_0xa291('0x34')]['length']?_0xd86d4a[_0xa291('0x34')]:_0x1cfa2a[_0xa291('0x2f')];_0xd86d4a[_0xa291('0x1d')]=qs[_0xa291('0x1d')](_0x158636[_0xa291('0x31')][_0xa291('0x1d')]);_0xd86d4a[_0xa291('0x1b')]=qs[_0xa291('0x1b')](_0x158636[_0xa291('0x31')][_0xa291('0x1b')]);_0xd86d4a[_0xa291('0x36')]=qs['sort'](_0x158636[_0xa291('0x31')][_0xa291('0x37')]);_0xd86d4a[_0xa291('0x38')]=qs['filters'](_[_0xa291('0x3a')](_0x158636[_0xa291('0x31')],_0x1cfa2a[_0xa291('0x39')]));_0xd86d4a=_[_0xa291('0x3c')]({},_0xd86d4a,_0x158636[_0xa291('0x3d')]);return _0x448ea7['get'+_[_0xa291('0x71')](_0x158636['query'][_0xa291('0x6e')][_0xa291('0x72')]())+'Queues'](_0xd86d4a);})[_0xa291('0x25')](respondWithResult(_0x580244,null))['catch'](handleError(_0x580244,null));};exports[_0xa291('0x73')]=function(_0x3bcd54,_0xfd4d6a,_0x198cd8){return db['Team'][_0xa291('0x6d')]({'where':{'id':_0x3bcd54[_0xa291('0x43')]['id']}})['then'](function(_0x47464c){if(_0x47464c){if(!_0x3bcd54[_0xa291('0x4e')]['channel']||!utils[_0xa291('0x6f')](_0x3bcd54['body'][_0xa291('0x6e')])){throw new db['Sequelize'][(_0xa291('0x70'))](_0xa291('0x74'));}return _0x47464c[_0xa291('0x75')+_['capitalize'](_0x3bcd54[_0xa291('0x4e')][_0xa291('0x6e')][_0xa291('0x72')]())+_0xa291('0x76')](_0x3bcd54[_0xa291('0x4e')][_0xa291('0x77')]);}return null;})[_0xa291('0x25')](handleEntityNotFound(_0xfd4d6a,null))['then'](respondWithStatusCode(_0xfd4d6a,null))[_0xa291('0x41')](handleError(_0xfd4d6a,null));};exports[_0xa291('0x78')]=function(_0xf01d97,_0x341674,_0x346f04){return db['Team']['findOne']({'where':{'id':_0xf01d97[_0xa291('0x43')]['id']}})['then'](function(_0x783382){if(_0x783382){if(!_0xf01d97[_0xa291('0x31')][_0xa291('0x6e')]||!utils[_0xa291('0x6f')](_0xf01d97['query'][_0xa291('0x6e')])){throw new db[(_0xa291('0x52'))][(_0xa291('0x70'))](_0xa291('0x74'));}return _0x783382[_0xa291('0x79')+_[_0xa291('0x71')](_0xf01d97[_0xa291('0x31')][_0xa291('0x6e')][_0xa291('0x72')]())+_0xa291('0x76')](_0xf01d97[_0xa291('0x31')][_0xa291('0x77')]);}return null;})[_0xa291('0x25')](handleEntityNotFound(_0x341674,null))['then'](respondWithStatusCode(_0x341674,null))['catch'](handleError(_0x341674,null));};exports['addAgents']=function(_0x2b6152,_0x3fa37e){var _0x1e3b6c=_[_0xa291('0x7a')](_0x2b6152[_0xa291('0x4e')]['ids'])?_0x2b6152[_0xa291('0x4e')][_0xa291('0x77')]:[_0x2b6152[_0xa291('0x4e')]['ids']];var _0x4ef341=_0x2b6152[_0xa291('0x43')]['id'];return db[_0xa291('0x2a')][_0xa291('0x4b')]({'where':{'id':_0x4ef341}})[_0xa291('0x25')](handleEntityNotFound(_0x3fa37e,null))['then'](function(_0x24ccb7){if(_0x24ccb7){var _0x4a14bf=[_0xa291('0x7b'),_0xa291('0x7c'),_0xa291('0x7d'),_0xa291('0x7e'),_0xa291('0x7f'),'Openchannel',_0xa291('0x80')];return db[_0xa291('0x4f')][_0xa291('0x50')](function(_0x3b09e0){var _0x2de68c=_[_0xa291('0x30')](_0x4a14bf,function(_0x48c8fe){var _0xc30eeb={'attributes':['id','name']};if(_0x48c8fe===_0xa291('0x7b')){_0xc30eeb['through']={'attributes':[_0xa291('0x81')]};}return _0x24ccb7[_0xa291('0x47')+_0x48c8fe+'Queues'](_0xc30eeb)[_0xa291('0x25')](function(_0x1cc35a){var _0x25fbe8=_['map'](_0x1cc35a,function(_0x3942d5){var _0x321eef=_[_0xa291('0x30')](_0x1e3b6c,function(_0x429df8){var _0x12809d={'where':{'UserId':_0x429df8,[_0x48c8fe+_0xa291('0x82')]:_0x3942d5['id']},'transaction':_0x3b09e0};if(_0x48c8fe===_0xa291('0x7b')){_0x12809d[_0xa291('0x14')]={'penalty':_0x3942d5[_0xa291('0x83')][_0xa291('0x81')]};}return db[_0xa291('0x84')+_0x48c8fe+_0xa291('0x85')][_0xa291('0x86')](_0x12809d)['then'](function(){socket[_0xa291('0x87')](_0xa291('0x46')+_0x48c8fe+_0xa291('0x88'),{'UserId':_0x429df8,[_0x48c8fe+_0xa291('0x82')]:_0x3942d5['id']});if(_0x48c8fe!==_0xa291('0x7b')){return;}return db['User']['findAll']({'where':{'id':_0x1e3b6c,'online':0x1},'attributes':['id',_0xa291('0x28'),_0xa291('0x89'),_0xa291('0x8a'),_0xa291('0x8b')],'raw':!![]})['then'](function(_0x36db65){var _0x5bf74c=_[_0xa291('0x30')](_0x36db65,function(_0x105b58){return db['UserVoiceQueueRt']['upsert']({'membername':_0x105b58[_0xa291('0x28')],'UserId':_0x105b58['id'],'queue_name':_0x3942d5[_0xa291('0x28')],'VoiceQueueId':_0x3942d5['id'],'interface':_[_0xa291('0x8c')](_0x105b58[_0xa291('0x8b')])?util[_0xa291('0x8d')]('SIP/%s',_0x105b58['name']):_0x105b58[_0xa291('0x8b')],'paused':_0x105b58[_0xa291('0x8a')]||![],'penalty':_0x3942d5[_0xa291('0x83')][_0xa291('0x81')]},{'transaction':_0x3b09e0});});return Promise[_0xa291('0x8e')](_0x5bf74c);});});});return Promise[_0xa291('0x8e')](_0x321eef);});return Promise[_0xa291('0x8e')](_0x25fbe8);})['then'](function(){return db[_0xa291('0x67')][_0xa291('0x6d')]({'where':{'teamId':_0x4ef341}})[_0xa291('0x25')](function(_0x4defef){if(_0x4defef){var _0x44f5f2=_[_0xa291('0x30')](_0x1e3b6c,function(_0xb2b34b){db[_0xa291('0x68')][_0xa291('0x8f')]({'UserId':_0xb2b34b,'VoicePrefixId':_0x4defef['VoicePrefixId']});});return Promise[_0xa291('0x8e')](_0x44f5f2);}});});});return Promise[_0xa291('0x8e')](_0x2de68c)[_0xa291('0x25')](function(){return _0x24ccb7[_0xa291('0x90')](_0x1e3b6c,{'transaction':_0x3b09e0})[_0xa291('0x91')](function(_0x436127){return _0x436127;});});});}})[_0xa291('0x25')](respondWithResult(_0x3fa37e,null))[_0xa291('0x41')](handleError(_0x3fa37e,null));};exports[_0xa291('0x92')]=function(_0xba346a,_0x5bdf5d){var _0x29dc9d=_[_0xa291('0x7a')](_0xba346a[_0xa291('0x31')][_0xa291('0x77')])?_0xba346a[_0xa291('0x31')]['ids']:[_0xba346a[_0xa291('0x31')][_0xa291('0x77')]];var _0x42bfb4=_0xba346a[_0xa291('0x43')]['id'];return db[_0xa291('0x2a')]['find']({'where':{'id':_0x42bfb4}})['then'](handleEntityNotFound(_0x5bdf5d,null))['then'](function(_0x184700){if(_0x184700){var _0x4ff5d0=[_0xa291('0x7b'),_0xa291('0x7c'),'Mail',_0xa291('0x7e'),_0xa291('0x7f'),_0xa291('0x93'),_0xa291('0x80')];return db['sequelize'][_0xa291('0x50')](function(_0x486fc7){var _0x59cb48=_[_0xa291('0x30')](_0x4ff5d0,function(_0x3253c1){var _0x168cd2={'attributes':['id',_0xa291('0x28')]};return _0x184700[_0xa291('0x47')+_0x3253c1+_0xa291('0x76')](_0x168cd2)[_0xa291('0x25')](function(_0x146747){var _0x356b2e=_[_0xa291('0x30')](_0x146747,function(_0xae2c08){return _0xae2c08[_0xa291('0x92')](_0x29dc9d,{'transaction':_0x486fc7})[_0xa291('0x25')](function(){var _0x591e5d=_[_0xa291('0x30')](_0x29dc9d,function(_0x1d5396){socket['emit'](_0xa291('0x46')+_0x3253c1+_0xa291('0x94'),{'UserId':Number(_0x1d5396),[_0x3253c1+_0xa291('0x82')]:_0xae2c08['id']});if(_0x3253c1!==_0xa291('0x7b')){return;}return db[_0xa291('0x95')][_0xa291('0x58')]({'where':{'VoiceQueueId':_0xae2c08['id'],'UserId':_0x1d5396},'transaction':_0x486fc7});});return Promise[_0xa291('0x8e')](_0x591e5d);});});return Promise[_0xa291('0x8e')](_0x356b2e);});});return Promise[_0xa291('0x8e')](_0x59cb48)[_0xa291('0x25')](function(){return _0x184700[_0xa291('0x92')](_0x29dc9d,{'transaction':_0x486fc7});})['then'](function(){return db[_0xa291('0x67')][_0xa291('0x6d')]({'where':{'teamId':_0x42bfb4}})[_0xa291('0x25')](function(_0x460edf){if(_0x460edf){var _0x566055=_['map'](_0x29dc9d,function(_0x6afd02){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x6afd02,'VoicePrefixId':_0x460edf['VoicePrefixId']}});});return Promise['all'](_0x566055);}});});});}})[_0xa291('0x25')](respondWithStatusCode(_0x5bdf5d,null))[_0xa291('0x41')](handleError(_0x5bdf5d,null));};exports['getAgents']=function(_0x5d332f,_0x6dd6c8,_0x18ffc6){var _0x1786c1={};var _0x3171d4={};var _0x4fcf2b;var _0x3cfb46;return db[_0xa291('0x2a')]['findOne']({'where':{'id':_0x5d332f[_0xa291('0x43')]['id']}})[_0xa291('0x25')](handleEntityNotFound(_0x6dd6c8,null))[_0xa291('0x25')](function(_0xb82c80){if(_0xb82c80){_0x4fcf2b=_0xb82c80;_0x3171d4['model']=_['keys'](db[_0xa291('0x84')][_0xa291('0x2b')]);_0x3171d4[_0xa291('0x31')]=_['keys'](_0x5d332f[_0xa291('0x31')]);_0x3171d4['filters']=_[_0xa291('0x33')](_0x3171d4[_0xa291('0x2f')],_0x3171d4[_0xa291('0x31')]);_0x1786c1[_0xa291('0x34')]=_[_0xa291('0x33')](_0x3171d4[_0xa291('0x2f')],qs[_0xa291('0x35')](_0x5d332f[_0xa291('0x31')]['fields']));_0x1786c1[_0xa291('0x34')]=_0x1786c1[_0xa291('0x34')][_0xa291('0x44')]?_0x1786c1[_0xa291('0x34')]:_0x3171d4[_0xa291('0x2f')];_0x1786c1['order']=qs['sort'](_0x5d332f[_0xa291('0x31')]['sort']);_0x1786c1[_0xa291('0x38')]=qs[_0xa291('0x39')](_[_0xa291('0x3a')](_0x5d332f['query'],_0x3171d4[_0xa291('0x39')]));if(_0x5d332f[_0xa291('0x31')]['filter']){_0x1786c1['where']=_['merge'](_0x1786c1[_0xa291('0x38')],{'$or':_[_0xa291('0x30')](_0x1786c1[_0xa291('0x34')],function(_0x29fb7a){var _0x5d0996={};_0x5d0996[_0x29fb7a]={'$like':'%'+_0x5d332f[_0xa291('0x31')][_0xa291('0x3b')]+'%'};return _0x5d0996;})});}_0x1786c1=_['merge']({},_0x1786c1,_0x5d332f[_0xa291('0x3d')]);return _0x4fcf2b[_0xa291('0x96')](_0x1786c1);}})[_0xa291('0x25')](function(_0x1fbf9e){if(_0x1fbf9e){_0x3cfb46=_0x1fbf9e[_0xa291('0x44')];if(!_0x5d332f['query'][_0xa291('0x97')](_0xa291('0x98'))){_0x1786c1[_0xa291('0x1d')]=qs[_0xa291('0x1d')](_0x5d332f[_0xa291('0x31')]['limit']);_0x1786c1['offset']=qs[_0xa291('0x1b')](_0x5d332f['query'][_0xa291('0x1b')]);}return _0x4fcf2b[_0xa291('0x96')](_0x1786c1);}})[_0xa291('0x25')](function(_0x38f091){if(_0x38f091){return _0x38f091?{'count':_0x3cfb46,'rows':_0x38f091}:null;}})[_0xa291('0x25')](respondWithResult(_0x6dd6c8,null))[_0xa291('0x41')](handleError(_0x6dd6c8,null));};
\ No newline at end of file
index 690ac56..7cebaf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aab=['events','../../mysqldb','Team','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x54f658,_0x4f6421){var _0x39707f=function(_0x3ea58f){while(--_0x3ea58f){_0x54f658['push'](_0x54f658['shift']());}};_0x39707f(++_0x4f6421);}(_0x5aab,0x1d9));var _0xb5aa=function(_0x1b6abb,_0x1429a6){_0x1b6abb=_0x1b6abb-0x0;var _0x21cad3=_0x5aab[_0x1b6abb];return _0x21cad3;};'use strict';var EventEmitter=require(_0xb5aa('0x0'));var Team=require(_0xb5aa('0x1'))['db'][_0xb5aa('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xb5aa('0x3')](0x0);var events={'afterCreate':_0xb5aa('0x4'),'afterUpdate':_0xb5aa('0x5'),'afterDestroy':_0xb5aa('0x6')};function emitEvent(_0x5f1ef8){return function(_0x5213c4,_0x3cd5c4,_0x1a84b7){TeamEvents[_0xb5aa('0x7')](_0x5f1ef8+':'+_0x5213c4['id'],_0x5213c4);TeamEvents['emit'](_0x5f1ef8,_0x5213c4);_0x1a84b7(null);};}for(var e in events){if(events[_0xb5aa('0x8')](e)){var event=events[e];Team[_0xb5aa('0x9')](e,emitEvent(event));}}module[_0xb5aa('0xa')]=TeamEvents;
\ No newline at end of file
+var _0xd0aa=['hasOwnProperty','hook','exports','../../mysqldb','Team','setMaxListeners','save','update','remove','emit'];(function(_0x3daab5,_0x4c82c0){var _0x5c9961=function(_0xd26f32){while(--_0xd26f32){_0x3daab5['push'](_0x3daab5['shift']());}};_0x5c9961(++_0x4c82c0);}(_0xd0aa,0xd5));var _0xad0a=function(_0x413837,_0x4c72d){_0x413837=_0x413837-0x0;var _0x2c0361=_0xd0aa[_0x413837];return _0x2c0361;};'use strict';var EventEmitter=require('events');var Team=require(_0xad0a('0x0'))['db'][_0xad0a('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xad0a('0x2')](0x0);var events={'afterCreate':_0xad0a('0x3'),'afterUpdate':_0xad0a('0x4'),'afterDestroy':_0xad0a('0x5')};function emitEvent(_0xe9d20e){return function(_0x42ab08,_0xe15023,_0x37f3c7){TeamEvents['emit'](_0xe9d20e+':'+_0x42ab08['id'],_0x42ab08);TeamEvents[_0xad0a('0x6')](_0xe9d20e,_0x42ab08);_0x37f3c7(null);};}for(var e in events){if(events[_0xad0a('0x7')](e)){var event=events[e];Team[_0xad0a('0x8')](e,emitEvent(event));}}module[_0xad0a('0x9')]=TeamEvents;
\ No newline at end of file
index 180cebe..12f03c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6061=['Sms','Voice','lodash','./team.attributes','get','map','channel','catch','exports','define','Team','teams','Chat','Fax','Openchannel'];(function(_0x48da60,_0x1a8d71){var _0x544a30=function(_0x1a863a){while(--_0x1a863a){_0x48da60['push'](_0x48da60['shift']());}};_0x544a30(++_0x1a8d71);}(_0x6061,0x6b));var _0x1606=function(_0xe3aae4,_0x1b615b){_0xe3aae4=_0xe3aae4-0x0;var _0x516bc3=_0x6061[_0xe3aae4];return _0x516bc3;};'use strict';var _=require(_0x1606('0x0'));var attributes=require(_0x1606('0x1'));function getQueuesByChannel(_0x2d919c,_0x1a2cf3){var _0x1edaf1=_0x1606('0x2')+_0x1a2cf3+'Queues';return _0x2d919c[_0x1edaf1]()['then'](function(_0x1eaa27){return _[_0x1606('0x3')](_0x1eaa27,function(_0x48de48){_0x48de48['setDataValue'](_0x1606('0x4'),_0x1a2cf3);return _0x48de48;});})[_0x1606('0x5')](function(_0x5397b1){throw _0x5397b1;});}module[_0x1606('0x6')]=function(_0x42c75e){return _0x42c75e[_0x1606('0x7')](_0x1606('0x8'),attributes,{'tableName':_0x1606('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0xb486d9=this;var _0x307faf=[_0x1606('0xa'),_0x1606('0xb'),'Mail',_0x1606('0xc'),_0x1606('0xd'),_0x1606('0xe'),'Whatsapp'];return Promise['resolve']()['then'](function(){var _0x15f29e=_[_0x1606('0x3')](_0x307faf,function(_0x3e6ab6){return getQueuesByChannel(_0xb486d9,_0x3e6ab6);});return Promise['all'](_0x15f29e);})['catch'](function(_0x44b385){throw _0x44b385;});}}});};
\ No newline at end of file
+var _0xab74=['teams','Chat','Mail','Openchannel','Sms','Voice','Whatsapp','resolve','map','all','Queues','then','setDataValue','catch','exports','define'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xab74,0x17a));var _0x4ab7=function(_0x44ec35,_0x35c3f6){_0x44ec35=_0x44ec35-0x0;var _0x282db4=_0xab74[_0x44ec35];return _0x282db4;};'use strict';var _=require('lodash');var attributes=require('./team.attributes');function getQueuesByChannel(_0x494533,_0x46bd94){var _0x7a27a9='get'+_0x46bd94+_0x4ab7('0x0');return _0x494533[_0x7a27a9]()[_0x4ab7('0x1')](function(_0x82c134){return _['map'](_0x82c134,function(_0x5a1207){_0x5a1207[_0x4ab7('0x2')]('channel',_0x46bd94);return _0x5a1207;});})[_0x4ab7('0x3')](function(_0x1feb66){throw _0x1feb66;});}module[_0x4ab7('0x4')]=function(_0x4571d7){return _0x4571d7[_0x4ab7('0x5')]('Team',attributes,{'tableName':_0x4ab7('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x49fb99=this;var _0x1f2d3d=[_0x4ab7('0x7'),'Fax',_0x4ab7('0x8'),_0x4ab7('0x9'),_0x4ab7('0xa'),_0x4ab7('0xb'),_0x4ab7('0xc')];return Promise[_0x4ab7('0xd')]()[_0x4ab7('0x1')](function(){var _0x15cc07=_[_0x4ab7('0xe')](_0x1f2d3d,function(_0x31cf72){return getQueuesByChannel(_0x49fb99,_0x31cf72);});return Promise[_0x4ab7('0xf')](_0x15cc07);})[_0x4ab7('0x3')](function(_0x5943b6){throw _0x5943b6;});}}});};
\ No newline at end of file
index 3b52830..74f1d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5370=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','Team,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x14b20b,_0x3ad4e8){var _0x1dd884=function(_0x2b2157){while(--_0x2b2157){_0x14b20b['push'](_0x14b20b['shift']());}};_0x1dd884(++_0x3ad4e8);}(_0x5370,0x18f));var _0x0537=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x5370[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x0537('0x0'));var util=require('util');var moment=require(_0x0537('0x1'));var BPromise=require(_0x0537('0x2'));var rs=require(_0x0537('0x3'));var fs=require('fs');var Redis=require(_0x0537('0x4'));var db=require(_0x0537('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0537('0x6'))(_0x0537('0x7'));var config=require('../../config/environment');var jayson=require(_0x0537('0x8'));var client=jayson[_0x0537('0x9')][_0x0537('0xa')]({'port':0x232a});config[_0x0537('0xb')]=_[_0x0537('0xc')](config['redis'],{'host':_0x0537('0xd'),'port':0x18eb});var socket=require(_0x0537('0xe'))(new Redis(config[_0x0537('0xb')]));require(_0x0537('0xf'))['register'](socket);function respondWithRpcPromise(_0x454542,_0x12de4c,_0x375e70){return new BPromise(function(_0x532b31,_0x31bc52){return client['request'](_0x454542,_0x375e70)['then'](function(_0x5b3e7f){logger['info'](_0x0537('0x10'),_0x12de4c,_0x0537('0x11'));logger[_0x0537('0x12')]('Team,\x20%s,\x20%s,\x20%s',_0x12de4c,'request\x20sent',JSON[_0x0537('0x13')](_0x5b3e7f));if(_0x5b3e7f[_0x0537('0x14')]){if(_0x5b3e7f[_0x0537('0x14')][_0x0537('0x15')]===0x1f4){logger['error'](_0x0537('0x10'),_0x12de4c,_0x5b3e7f[_0x0537('0x14')][_0x0537('0x16')]);return _0x31bc52(_0x5b3e7f[_0x0537('0x14')][_0x0537('0x16')]);}logger['error'](_0x0537('0x10'),_0x12de4c,_0x5b3e7f[_0x0537('0x14')]['message']);return _0x532b31(_0x5b3e7f[_0x0537('0x14')][_0x0537('0x16')]);}else{logger['info'](_0x0537('0x10'),_0x12de4c,_0x0537('0x11'));_0x532b31(_0x5b3e7f[_0x0537('0x17')][_0x0537('0x16')]);}})[_0x0537('0x18')](function(_0x5d21c3){logger['error'](_0x0537('0x10'),_0x12de4c,_0x5d21c3);_0x31bc52(_0x5d21c3);});});}
\ No newline at end of file
+var _0xa500=['ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','localhost','socket.io-emitter','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa500,0x1ef));var _0x0a50=function(_0x25c1d3,_0x4f41c6){_0x25c1d3=_0x25c1d3-0x0;var _0x11afe1=_0xa500[_0x25c1d3];return _0x11afe1;};'use strict';var _=require(_0x0a50('0x0'));var util=require(_0x0a50('0x1'));var moment=require(_0x0a50('0x2'));var BPromise=require(_0x0a50('0x3'));var rs=require(_0x0a50('0x4'));var fs=require('fs');var Redis=require(_0x0a50('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a50('0x6'));var logger=require(_0x0a50('0x7'))(_0x0a50('0x8'));var config=require('../../config/environment');var jayson=require(_0x0a50('0x9'));var client=jayson[_0x0a50('0xa')]['http']({'port':0x232a});config[_0x0a50('0xb')]=_['defaults'](config[_0x0a50('0xb')],{'host':_0x0a50('0xc'),'port':0x18eb});var socket=require(_0x0a50('0xd'))(new Redis(config['redis']));require('./team.socket')[_0x0a50('0xe')](socket);function respondWithRpcPromise(_0x5e4406,_0x5a7b1b,_0x4954f8){return new BPromise(function(_0x166fa0,_0xac6328){return client[_0x0a50('0xf')](_0x5e4406,_0x4954f8)[_0x0a50('0x10')](function(_0x50504c){logger[_0x0a50('0x11')](_0x0a50('0x12'),_0x5a7b1b,_0x0a50('0x13'));logger[_0x0a50('0x14')]('Team,\x20%s,\x20%s,\x20%s',_0x5a7b1b,'request\x20sent',JSON['stringify'](_0x50504c));if(_0x50504c[_0x0a50('0x15')]){if(_0x50504c[_0x0a50('0x15')]['code']===0x1f4){logger[_0x0a50('0x15')](_0x0a50('0x12'),_0x5a7b1b,_0x50504c['error'][_0x0a50('0x16')]);return _0xac6328(_0x50504c[_0x0a50('0x15')][_0x0a50('0x16')]);}logger[_0x0a50('0x15')](_0x0a50('0x12'),_0x5a7b1b,_0x50504c[_0x0a50('0x15')][_0x0a50('0x16')]);return _0x166fa0(_0x50504c[_0x0a50('0x15')][_0x0a50('0x16')]);}else{logger['info'](_0x0a50('0x12'),_0x5a7b1b,_0x0a50('0x13'));_0x166fa0(_0x50504c[_0x0a50('0x17')][_0x0a50('0x16')]);}})[_0x0a50('0x18')](function(_0x5e0f47){logger['error'](_0x0a50('0x12'),_0x5a7b1b,_0x5e0f47);_0xac6328(_0x5e0f47);});});}
\ No newline at end of file
index f73ffa8..e076cc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0457=['remove','emit','register','length','team:','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0457,0x11f));var _0x7045=function(_0x2ac798,_0x25a0de){_0x2ac798=_0x2ac798-0x0;var _0x49d72b=_0x0457[_0x2ac798];return _0x49d72b;};'use strict';var TeamEvents=require('./team.events');var events=[_0x7045('0x0'),_0x7045('0x1'),'update'];function createListener(_0x3eeb90,_0x41e57b){return function(_0x1e6b10){_0x41e57b[_0x7045('0x2')](_0x3eeb90,_0x1e6b10);};}function removeListener(_0x1167ea,_0x36df90){return function(){TeamEvents['removeListener'](_0x1167ea,_0x36df90);};}exports[_0x7045('0x3')]=function(_0x51e53b){for(var _0x91fb4c=0x0,_0x269c32=events[_0x7045('0x4')];_0x91fb4c<_0x269c32;_0x91fb4c++){var _0xa04551=events[_0x91fb4c];var _0x2f5df8=createListener(_0x7045('0x5')+_0xa04551,_0x51e53b);TeamEvents['on'](_0xa04551,_0x2f5df8);}};
\ No newline at end of file
+var _0xc357=['remove','update','emit','removeListener','length','team:','save'];(function(_0x555800,_0x489d4c){var _0x27a4ef=function(_0x22b64e){while(--_0x22b64e){_0x555800['push'](_0x555800['shift']());}};_0x27a4ef(++_0x489d4c);}(_0xc357,0x8b));var _0x7c35=function(_0x5da28d,_0x3b019a){_0x5da28d=_0x5da28d-0x0;var _0x56fd02=_0xc357[_0x5da28d];return _0x56fd02;};'use strict';var TeamEvents=require('./team.events');var events=[_0x7c35('0x0'),_0x7c35('0x1'),_0x7c35('0x2')];function createListener(_0x5ca00c,_0x3935db){return function(_0x341efd){_0x3935db[_0x7c35('0x3')](_0x5ca00c,_0x341efd);};}function removeListener(_0x202049,_0x2a3cca){return function(){TeamEvents[_0x7c35('0x4')](_0x202049,_0x2a3cca);};}exports['register']=function(_0x2b1f35){for(var _0x146120=0x0,_0x4697dc=events[_0x7c35('0x5')];_0x146120<_0x4697dc;_0x146120++){var _0x2829ad=events[_0x146120];var _0x2acfc9=createListener(_0x7c35('0x6')+_0x2829ad,_0x2b1f35);TeamEvents['on'](_0x2829ad,_0x2acfc9);}};
\ No newline at end of file
index f2fbe4b..6297dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d7=['exports','INTEGER'];(function(_0xf4585e,_0x4ad83b){var _0x2645e2=function(_0x2895db){while(--_0x2895db){_0xf4585e['push'](_0xf4585e['shift']());}};_0x2645e2(++_0x4ad83b);}(_0xe0d7,0x1e0));var _0x7e0d=function(_0x8a92be,_0x97c46c){_0x8a92be=_0x8a92be-0x0;var _0x389e72=_0xe0d7[_0x8a92be];return _0x389e72;};'use strict';var Sequelize=require('sequelize');module[_0x7e0d('0x0')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x7e0d('0x1')]}};
\ No newline at end of file
+var _0x8f7d=['exports','INTEGER','sequelize'];(function(_0x2fe882,_0x1f4e97){var _0x53bf6f=function(_0x25147b){while(--_0x25147b){_0x2fe882['push'](_0x2fe882['shift']());}};_0x53bf6f(++_0x1f4e97);}(_0x8f7d,0xf5));var _0xd8f7=function(_0x4ede22,_0x7770ed){_0x4ede22=_0x4ede22-0x0;var _0xf13a3c=_0x8f7d[_0x4ede22];return _0xf13a3c;};'use strict';var Sequelize=require(_0xd8f7('0x0'));module[_0xd8f7('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0xd8f7('0x2')]}};
\ No newline at end of file
index 23b0203..154fa99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6000=['bluebird','path','rimraf','./teamVoicePrefix.attributes','define','team_has_voice_prefixes','lodash','util','../../config/logger','api','moment'];(function(_0x4cae16,_0x5f0d3d){var _0x4afe95=function(_0x44106b){while(--_0x44106b){_0x4cae16['push'](_0x4cae16['shift']());}};_0x4afe95(++_0x5f0d3d);}(_0x6000,0x17c));var _0x0600=function(_0x257bd0,_0x37b28b){_0x257bd0=_0x257bd0-0x0;var _0x118b8c=_0x6000[_0x257bd0];return _0x118b8c;};'use strict';var _=require(_0x0600('0x0'));var util=require(_0x0600('0x1'));var logger=require(_0x0600('0x2'))(_0x0600('0x3'));var moment=require(_0x0600('0x4'));var BPromise=require(_0x0600('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0600('0x6'));var rimraf=require(_0x0600('0x7'));var config=require('../../config/environment');var attributes=require(_0x0600('0x8'));module['exports']=function(_0x38f630,_0xc18208){return _0x38f630[_0x0600('0x9')]('TeamVoicePrefix',attributes,{'tableName':_0x0600('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0427=['api','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','../../config/logger'];(function(_0x95b616,_0x296372){var _0x596532=function(_0x384b06){while(--_0x384b06){_0x95b616['push'](_0x95b616['shift']());}};_0x596532(++_0x296372);}(_0x0427,0x137));var _0x7042=function(_0x50ea27,_0x435099){_0x50ea27=_0x50ea27-0x0;var _0x26972d=_0x0427[_0x50ea27];return _0x26972d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7042('0x0'))(_0x7042('0x1'));var moment=require('moment');var BPromise=require(_0x7042('0x2'));var rp=require(_0x7042('0x3'));var fs=require('fs');var path=require(_0x7042('0x4'));var rimraf=require(_0x7042('0x5'));var config=require(_0x7042('0x6'));var attributes=require(_0x7042('0x7'));module[_0x7042('0x8')]=function(_0x53ab81,_0x37a35b){return _0x53ab81[_0x7042('0x9')](_0x7042('0xa'),attributes,{'tableName':_0x7042('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5783ee..d5300db 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(_0x3fd8e5,_0x3b1b2f){var _0x13c5b8=function(_0x6ef246){while(--_0x6ef246){_0x3fd8e5['push'](_0x3fd8e5['shift']());}};_0x13c5b8(++_0x3b1b2f);}(_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
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x5a9197,_0x2a1c8f){var _0x4f9431=function(_0x184f2b){while(--_0x184f2b){_0x5a9197['push'](_0x5a9197['shift']());}};_0x4f9431(++_0x2a1c8f);}(_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
index 120af2e..7aa4c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d07=['sequelize','exports'];(function(_0x593bd7,_0xffd1b2){var _0x2ec113=function(_0xfe4d96){while(--_0xfe4d96){_0x593bd7['push'](_0x593bd7['shift']());}};_0x2ec113(++_0xffd1b2);}(_0x5d07,0x190));var _0x75d0=function(_0x75d85e,_0x53dd87){_0x75d85e=_0x75d85e-0x0;var _0x511e1b=_0x5d07[_0x75d85e];return _0x511e1b;};'use strict';var Sequelize=require(_0x75d0('0x0'));module[_0x75d0('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd043=['exports','INTEGER','sequelize'];(function(_0x12d4a4,_0x2bf452){var _0x36f176=function(_0x5bb4c4){while(--_0x5bb4c4){_0x12d4a4['push'](_0x12d4a4['shift']());}};_0x36f176(++_0x2bf452);}(_0xd043,0x143));var _0x3d04=function(_0xa82688,_0x3d82f0){_0xa82688=_0xa82688-0x0;var _0x5c1582=_0xd043[_0xa82688];return _0x5c1582;};'use strict';var Sequelize=require(_0x3d04('0x0'));module[_0x3d04('0x1')]={'penalty':{'type':Sequelize[_0x3d04('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 5c61090..6f62415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77f=['request-promise','path','../../config/environment','./teamVoiceQueue.attributes','exports','team_has_voice_queues','lodash','util','api','moment'];(function(_0x93bfe2,_0x84734e){var _0x11d620=function(_0x16a832){while(--_0x16a832){_0x93bfe2['push'](_0x93bfe2['shift']());}};_0x11d620(++_0x84734e);}(_0xe77f,0xba));var _0xfe77=function(_0xde6079,_0x4c85e4){_0xde6079=_0xde6079-0x0;var _0x433130=_0xe77f[_0xde6079];return _0x433130;};'use strict';var _=require(_0xfe77('0x0'));var util=require(_0xfe77('0x1'));var logger=require('../../config/logger')(_0xfe77('0x2'));var moment=require(_0xfe77('0x3'));var BPromise=require('bluebird');var rp=require(_0xfe77('0x4'));var fs=require('fs');var path=require(_0xfe77('0x5'));var rimraf=require('rimraf');var config=require(_0xfe77('0x6'));var attributes=require(_0xfe77('0x7'));module[_0xfe77('0x8')]=function(_0x1ce970,_0x130b85){return _0x1ce970['define']('TeamVoiceQueue',attributes,{'tableName':_0xfe77('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x636f=['request-promise','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x1719ed,_0x10d1f3){var _0x5d46be=function(_0x4ece5b){while(--_0x4ece5b){_0x1719ed['push'](_0x1719ed['shift']());}};_0x5d46be(++_0x10d1f3);}(_0x636f,0x188));var _0xf636=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x636f[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf636('0x0'))(_0xf636('0x1'));var moment=require(_0xf636('0x2'));var BPromise=require(_0xf636('0x3'));var rp=require(_0xf636('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf636('0x5'));var config=require(_0xf636('0x6'));var attributes=require(_0xf636('0x7'));module[_0xf636('0x8')]=function(_0x39c5f1,_0x526990){return _0x39c5f1[_0xf636('0x9')](_0xf636('0xa'),attributes,{'tableName':_0xf636('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10dfa7f..490ed62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40fd=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','TeamVoiceQueue,\x20%s,\x20%s','result','catch'];(function(_0x2be177,_0x4e706d){var _0x1ef418=function(_0x2413e8){while(--_0x2413e8){_0x2be177['push'](_0x2be177['shift']());}};_0x1ef418(++_0x4e706d);}(_0x40fd,0x187));var _0xd40f=function(_0x3fad5a,_0x2d3b02){_0x3fad5a=_0x3fad5a-0x0;var _0x4ca713=_0x40fd[_0x3fad5a];return _0x4ca713;};'use strict';var _=require(_0xd40f('0x0'));var util=require('util');var moment=require(_0xd40f('0x1'));var BPromise=require('bluebird');var rs=require(_0xd40f('0x2'));var fs=require('fs');var Redis=require(_0xd40f('0x3'));var db=require(_0xd40f('0x4'))['db'];var utils=require(_0xd40f('0x5'));var logger=require(_0xd40f('0x6'))(_0xd40f('0x7'));var config=require('../../config/environment');var jayson=require(_0xd40f('0x8'));var client=jayson[_0xd40f('0x9')][_0xd40f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a0afc,_0x522053,_0x34e4b6){return new BPromise(function(_0x55ef58,_0x2a64d2){return client[_0xd40f('0xb')](_0x4a0afc,_0x34e4b6)[_0xd40f('0xc')](function(_0x4b4f54){logger[_0xd40f('0xd')]('TeamVoiceQueue,\x20%s,\x20%s',_0x522053,_0xd40f('0xe'));logger[_0xd40f('0xf')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x522053,'request\x20sent',JSON[_0xd40f('0x10')](_0x4b4f54));if(_0x4b4f54[_0xd40f('0x11')]){if(_0x4b4f54[_0xd40f('0x11')][_0xd40f('0x12')]===0x1f4){logger[_0xd40f('0x11')]('TeamVoiceQueue,\x20%s,\x20%s',_0x522053,_0x4b4f54[_0xd40f('0x11')][_0xd40f('0x13')]);return _0x2a64d2(_0x4b4f54['error'][_0xd40f('0x13')]);}logger[_0xd40f('0x11')](_0xd40f('0x14'),_0x522053,_0x4b4f54[_0xd40f('0x11')][_0xd40f('0x13')]);return _0x55ef58(_0x4b4f54[_0xd40f('0x11')][_0xd40f('0x13')]);}else{logger['info'](_0xd40f('0x14'),_0x522053,_0xd40f('0xe'));_0x55ef58(_0x4b4f54[_0xd40f('0x15')][_0xd40f('0x13')]);}})[_0xd40f('0x16')](function(_0x5b9be7){logger[_0xd40f('0x11')](_0xd40f('0x14'),_0x522053,_0x5b9be7);_0x2a64d2(_0x5b9be7);});});}
\ No newline at end of file
+var _0x8ccb=['ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','info','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','TeamVoiceQueue,\x20%s,\x20%s','message','request\x20sent','result','lodash','util','bluebird','randomstring'];(function(_0x1fd315,_0x34d10f){var _0x59b43f=function(_0x46751e){while(--_0x46751e){_0x1fd315['push'](_0x1fd315['shift']());}};_0x59b43f(++_0x34d10f);}(_0x8ccb,0x1c4));var _0xb8cc=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x8ccb[_0x946518];return _0x909b69;};'use strict';var _=require(_0xb8cc('0x0'));var util=require(_0xb8cc('0x1'));var moment=require('moment');var BPromise=require(_0xb8cc('0x2'));var rs=require(_0xb8cc('0x3'));var fs=require('fs');var Redis=require(_0xb8cc('0x4'));var db=require(_0xb8cc('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb8cc('0x6'));var config=require(_0xb8cc('0x7'));var jayson=require(_0xb8cc('0x8'));var client=jayson['client'][_0xb8cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x349552,_0x139945,_0x56951f){return new BPromise(function(_0x35c86d,_0x2c338f){return client[_0xb8cc('0xa')](_0x349552,_0x56951f)['then'](function(_0x175473){logger[_0xb8cc('0xb')]('TeamVoiceQueue,\x20%s,\x20%s',_0x139945,'request\x20sent');logger[_0xb8cc('0xc')](_0xb8cc('0xd'),_0x139945,'request\x20sent',JSON['stringify'](_0x175473));if(_0x175473[_0xb8cc('0xe')]){if(_0x175473[_0xb8cc('0xe')]['code']===0x1f4){logger[_0xb8cc('0xe')](_0xb8cc('0xf'),_0x139945,_0x175473[_0xb8cc('0xe')][_0xb8cc('0x10')]);return _0x2c338f(_0x175473[_0xb8cc('0xe')][_0xb8cc('0x10')]);}logger[_0xb8cc('0xe')]('TeamVoiceQueue,\x20%s,\x20%s',_0x139945,_0x175473[_0xb8cc('0xe')]['message']);return _0x35c86d(_0x175473[_0xb8cc('0xe')][_0xb8cc('0x10')]);}else{logger[_0xb8cc('0xb')]('TeamVoiceQueue,\x20%s,\x20%s',_0x139945,_0xb8cc('0x11'));_0x35c86d(_0x175473[_0xb8cc('0x12')][_0xb8cc('0x10')]);}})['catch'](function(_0x2ba498){logger['error'](_0xb8cc('0xf'),_0x139945,_0x2ba498);_0x2c338f(_0x2ba498);});});}
\ No newline at end of file
index 4817b43..1e52b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc113=['get','index','/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc113,0x1ab));var _0x3c11=function(_0x48024f,_0x197896){_0x48024f=_0x48024f-0x0;var _0x4b3e71=_0xc113[_0x48024f];return _0x4b3e71;};'use strict';var multer=require(_0x3c11('0x0'));var util=require(_0x3c11('0x1'));var path=require(_0x3c11('0x2'));var timeout=require(_0x3c11('0x3'));var express=require(_0x3c11('0x4'));var router=express[_0x3c11('0x5')]();var fs_extra=require(_0x3c11('0x6'));var auth=require(_0x3c11('0x7'));var interaction=require(_0x3c11('0x8'));var config=require('../../config/environment');var controller=require(_0x3c11('0x9'));router[_0x3c11('0xa')]('/',auth['isAuthenticated'](),controller[_0x3c11('0xb')]);router[_0x3c11('0xa')](_0x3c11('0xc'),auth['isAuthenticated'](),controller[_0x3c11('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x3c11('0xe')](_0x3c11('0xc'),auth['isAuthenticated'](),controller[_0x3c11('0xf')]);router[_0x3c11('0x10')](_0x3c11('0xc'),auth['isAuthenticated'](),controller[_0x3c11('0x11')]);module[_0x3c11('0x12')]=router;
\ No newline at end of file
+var _0xa5d7=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa5d7,0x1c3));var _0x7a5d=function(_0x11d686,_0x497362){_0x11d686=_0x11d686-0x0;var _0x3e3566=_0xa5d7[_0x11d686];return _0x3e3566;};'use strict';var multer=require(_0x7a5d('0x0'));var util=require(_0x7a5d('0x1'));var path=require(_0x7a5d('0x2'));var timeout=require(_0x7a5d('0x3'));var express=require('express');var router=express[_0x7a5d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7a5d('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7a5d('0x6'));var controller=require('./template.controller');router[_0x7a5d('0x7')]('/',auth[_0x7a5d('0x8')](),controller[_0x7a5d('0x9')]);router['get'](_0x7a5d('0xa'),auth[_0x7a5d('0x8')](),controller['show']);router[_0x7a5d('0xb')]('/',auth['isAuthenticated'](),controller[_0x7a5d('0xc')]);router[_0x7a5d('0xd')](_0x7a5d('0xa'),auth['isAuthenticated'](),controller[_0x7a5d('0xe')]);router[_0x7a5d('0xf')](_0x7a5d('0xa'),auth[_0x7a5d('0x8')](),controller[_0x7a5d('0x10')]);module[_0x7a5d('0x11')]=router;
\ No newline at end of file
index 962b0d0..890d27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57c9=['exports','STRING','TEXT','sequelize'];(function(_0x2db73c,_0x18ced3){var _0x37d7a1=function(_0x55d866){while(--_0x55d866){_0x2db73c['push'](_0x2db73c['shift']());}};_0x37d7a1(++_0x18ced3);}(_0x57c9,0x1a7));var _0x957c=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x57c9[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x957c('0x0'));module[_0x957c('0x1')]={'name':{'type':Sequelize[_0x957c('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x957c('0x3')]}};
\ No newline at end of file
+var _0x75ae=['sequelize','exports','STRING','TEXT'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x75ae,0x174));var _0xe75a=function(_0x2243f5,_0x18029c){_0x2243f5=_0x2243f5-0x0;var _0x2a1c50=_0x75ae[_0x2243f5];return _0x2a1c50;};'use strict';var Sequelize=require(_0xe75a('0x0'));module[_0xe75a('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe75a('0x2')]},'html':{'type':Sequelize[_0xe75a('0x3')]}};
\ No newline at end of file
index d732ef9..129d86f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7893=['sort','where','pick','filter','merge','options','include','findAll','show','length','includeAll','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Templates','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','get','UserProfileResource','stack','name','send','index','Template','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order'];(function(_0x7f537a,_0x20b5cc){var _0x3b4d37=function(_0x58022c){while(--_0x58022c){_0x7f537a['push'](_0x7f537a['shift']());}};_0x3b4d37(++_0x20b5cc);}(_0x7893,0x15e));var _0x3789=function(_0x27a5ee,_0x590055){_0x27a5ee=_0x27a5ee-0x0;var _0x2c8ceb=_0x7893[_0x27a5ee];return _0x2c8ceb;};'use strict';var emlformat=require(_0x3789('0x0'));var rimraf=require(_0x3789('0x1'));var zipdir=require(_0x3789('0x2'));var jsonpatch=require(_0x3789('0x3'));var rp=require(_0x3789('0x4'));var moment=require(_0x3789('0x5'));var BPromise=require(_0x3789('0x6'));var Mustache=require(_0x3789('0x7'));var util=require(_0x3789('0x8'));var path=require(_0x3789('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3789('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3789('0xb'));var squel=require(_0x3789('0xc'));var crypto=require(_0x3789('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3789('0xe'));var toCsv=require(_0x3789('0xf'));var querystring=require('querystring');var Papa=require(_0x3789('0x10'));var Redis=require(_0x3789('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3789('0x12'));var as=require(_0x3789('0x13'));var hardwareService=require(_0x3789('0x14'));var logger=require(_0x3789('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3789('0x16'));var licenseUtil=require(_0x3789('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57230e,_0x381af5){_0x381af5=_0x381af5||0xcc;return function(_0x292220){if(_0x292220){return _0x57230e[_0x3789('0x18')](_0x381af5);}return _0x57230e[_0x3789('0x19')](_0x381af5)['end']();};}function respondWithResult(_0x328bf0,_0x25e094){_0x25e094=_0x25e094||0xc8;return function(_0x4f67bd){if(_0x4f67bd){return _0x328bf0['status'](_0x25e094)[_0x3789('0x1a')](_0x4f67bd);}};}function respondWithFilteredResult(_0x14b10f,_0x5c9478){return function(_0x4edf9b){if(_0x4edf9b){var _0x1772aa=typeof _0x5c9478['offset']===_0x3789('0x1b')&&typeof _0x5c9478['limit']===_0x3789('0x1b');var _0x3d3f87=_0x4edf9b[_0x3789('0x1c')];var _0x51144c=_0x1772aa?0x0:_0x5c9478['offset'];var _0x5798e4=_0x1772aa?_0x4edf9b['count']:_0x5c9478['offset']+_0x5c9478[_0x3789('0x1d')];var _0x4998c1;if(_0x5798e4>=_0x3d3f87){_0x5798e4=_0x3d3f87;_0x4998c1=0xc8;}else{_0x4998c1=0xce;}_0x14b10f[_0x3789('0x19')](_0x4998c1);return _0x14b10f[_0x3789('0x1e')](_0x3789('0x1f'),_0x51144c+'-'+_0x5798e4+'/'+_0x3d3f87)[_0x3789('0x1a')](_0x4edf9b);}return null;};}function patchUpdates(_0x37f305){return function(_0x1a7504){try{jsonpatch[_0x3789('0x20')](_0x1a7504,_0x37f305,!![]);}catch(_0x5a8d04){return BPromise[_0x3789('0x21')](_0x5a8d04);}return _0x1a7504[_0x3789('0x22')]();};}function saveUpdates(_0x203c42,_0x510fd9){return function(_0x5526b7){if(_0x5526b7){return _0x5526b7[_0x3789('0x23')](_0x203c42)['then'](function(_0xe71ba){return _0xe71ba;});}return null;};}function removeEntity(_0x1bdb42,_0x2e721e){return function(_0x19841e){if(_0x19841e){return _0x19841e[_0x3789('0x24')]()[_0x3789('0x25')](function(){var _0x372f9f=_0x19841e[_0x3789('0x26')]({'plain':!![]});var _0xf564f7='Templates';return db[_0x3789('0x27')][_0x3789('0x24')]({'where':{'type':_0xf564f7,'resourceId':_0x372f9f['id']}})[_0x3789('0x25')](function(){return _0x19841e;});})['then'](function(){_0x1bdb42[_0x3789('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb88407,_0xf5bd94){return function(_0x872910){if(!_0x872910){_0xb88407[_0x3789('0x18')](0x194);}return _0x872910;};}function handleError(_0xaa8408,_0x14cbd5){_0x14cbd5=_0x14cbd5||0x1f4;return function(_0x1e0ef1){logger['error'](_0x1e0ef1[_0x3789('0x28')]);if(_0x1e0ef1[_0x3789('0x29')]){delete _0x1e0ef1['name'];}_0xaa8408[_0x3789('0x19')](_0x14cbd5)[_0x3789('0x2a')](_0x1e0ef1);};}exports[_0x3789('0x2b')]=function(_0x2bcfd8,_0x39ed6d){var _0x2f6af9={},_0x42b441={},_0x474aac={'count':0x0,'rows':[]};var _0x342bb3=_['map'](db[_0x3789('0x2c')][_0x3789('0x2d')],function(_0x466eed){return{'name':_0x466eed[_0x3789('0x2e')],'type':_0x466eed[_0x3789('0x2f')]['key']};});_0x42b441['model']=_[_0x3789('0x30')](_0x342bb3,_0x3789('0x29'));_0x42b441['query']=_[_0x3789('0x31')](_0x2bcfd8[_0x3789('0x32')]);_0x42b441[_0x3789('0x33')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],_0x42b441[_0x3789('0x32')]);_0x2f6af9[_0x3789('0x36')]=_[_0x3789('0x34')](_0x42b441[_0x3789('0x35')],qs['fields'](_0x2bcfd8[_0x3789('0x32')][_0x3789('0x37')]));_0x2f6af9[_0x3789('0x36')]=_0x2f6af9[_0x3789('0x36')]['length']?_0x2f6af9[_0x3789('0x36')]:_0x42b441[_0x3789('0x35')];if(!_0x2bcfd8[_0x3789('0x32')][_0x3789('0x38')](_0x3789('0x39'))){_0x2f6af9['limit']=qs[_0x3789('0x1d')](_0x2bcfd8[_0x3789('0x32')]['limit']);_0x2f6af9[_0x3789('0x3a')]=qs[_0x3789('0x3a')](_0x2bcfd8['query'][_0x3789('0x3a')]);}_0x2f6af9[_0x3789('0x3b')]=qs[_0x3789('0x3c')](_0x2bcfd8[_0x3789('0x32')]['sort']);_0x2f6af9[_0x3789('0x3d')]=qs[_0x3789('0x33')](_[_0x3789('0x3e')](_0x2bcfd8[_0x3789('0x32')],_0x42b441['filters']),_0x342bb3);if(_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]){_0x2f6af9[_0x3789('0x3d')]=_[_0x3789('0x40')](_0x2f6af9[_0x3789('0x3d')],{'$or':_[_0x3789('0x30')](_0x342bb3,function(_0xf77cb5){if(_0xf77cb5[_0x3789('0x2f')]!=='VIRTUAL'){var _0x2f3df6={};_0x2f3df6[_0xf77cb5[_0x3789('0x29')]]={'$like':'%'+_0x2bcfd8[_0x3789('0x32')][_0x3789('0x3f')]+'%'};return _0x2f3df6;}})});}_0x2f6af9=_[_0x3789('0x40')]({},_0x2f6af9,_0x2bcfd8[_0x3789('0x41')]);var _0x2acacb={'where':_0x2f6af9[_0x3789('0x3d')]};return db['Template'][_0x3789('0x1c')](_0x2acacb)[_0x3789('0x25')](function(_0x2497db){_0x474aac[_0x3789('0x1c')]=_0x2497db;if(_0x2bcfd8[_0x3789('0x32')]['includeAll']){_0x2f6af9[_0x3789('0x42')]=[{'all':!![]}];}return db[_0x3789('0x2c')][_0x3789('0x43')](_0x2f6af9);})['then'](function(_0x2db625){_0x474aac['rows']=_0x2db625;return _0x474aac;})[_0x3789('0x25')](respondWithFilteredResult(_0x39ed6d,_0x2f6af9))['catch'](handleError(_0x39ed6d,null));};exports[_0x3789('0x44')]=function(_0xdb0184,_0x5b0fb4){var _0x25f200={'raw':!![],'where':{'id':_0xdb0184['params']['id']}},_0x42e7f6={};_0x42e7f6[_0x3789('0x35')]=_[_0x3789('0x31')](db[_0x3789('0x2c')][_0x3789('0x2d')]);_0x42e7f6[_0x3789('0x32')]=_[_0x3789('0x31')](_0xdb0184['query']);_0x42e7f6[_0x3789('0x33')]=_[_0x3789('0x34')](_0x42e7f6[_0x3789('0x35')],_0x42e7f6[_0x3789('0x32')]);_0x25f200[_0x3789('0x36')]=_[_0x3789('0x34')](_0x42e7f6[_0x3789('0x35')],qs['fields'](_0xdb0184[_0x3789('0x32')][_0x3789('0x37')]));_0x25f200['attributes']=_0x25f200[_0x3789('0x36')][_0x3789('0x45')]?_0x25f200['attributes']:_0x42e7f6[_0x3789('0x35')];if(_0xdb0184[_0x3789('0x32')][_0x3789('0x46')]){_0x25f200['include']=[{'all':!![]}];}_0x25f200=_[_0x3789('0x40')]({},_0x25f200,_0xdb0184['options']);return db['Template']['find'](_0x25f200)[_0x3789('0x25')](handleEntityNotFound(_0x5b0fb4,null))[_0x3789('0x25')](respondWithResult(_0x5b0fb4,null))[_0x3789('0x47')](handleError(_0x5b0fb4,null));};exports[_0x3789('0x48')]=function(_0x5a6cd9,_0x1f212e){return db[_0x3789('0x2c')][_0x3789('0x48')](_0x5a6cd9[_0x3789('0x49')],{})[_0x3789('0x25')](function(_0x415e70){var _0xa82d55=_0x5a6cd9['user'][_0x3789('0x26')]({'plain':!![]});if(!_0xa82d55)throw new Error(_0x3789('0x4a'));if(_0xa82d55[_0x3789('0x4b')]===_0x3789('0x4c')){var _0x2dbb75=_0x415e70['get']({'plain':!![]});var _0x20b904=_0x3789('0x4d');return db['UserProfileSection'][_0x3789('0x4e')]({'where':{'name':_0x20b904,'userProfileId':_0xa82d55['userProfileId']},'raw':!![]})['then'](function(_0x209971){if(_0x209971&&_0x209971[_0x3789('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x2dbb75[_0x3789('0x29')],'resourceId':_0x2dbb75['id'],'type':_0x209971['name'],'sectionId':_0x209971['id']},{})[_0x3789('0x25')](function(){return _0x415e70;});}else{return _0x415e70;}})[_0x3789('0x47')](function(_0x1e3d5d){logger['error'](_0x3789('0x50'),_0x1e3d5d);throw _0x1e3d5d;});}return _0x415e70;})[_0x3789('0x25')](respondWithResult(_0x1f212e,0xc9))[_0x3789('0x47')](handleError(_0x1f212e,null));};exports[_0x3789('0x23')]=function(_0x3a968f,_0x20c724){if(_0x3a968f[_0x3789('0x49')]['id']){delete _0x3a968f[_0x3789('0x49')]['id'];}return db[_0x3789('0x2c')]['find']({'where':{'id':_0x3a968f[_0x3789('0x51')]['id']}})[_0x3789('0x25')](handleEntityNotFound(_0x20c724,null))[_0x3789('0x25')](saveUpdates(_0x3a968f[_0x3789('0x49')],null))[_0x3789('0x25')](respondWithResult(_0x20c724,null))['catch'](handleError(_0x20c724,null));};exports[_0x3789('0x24')]=function(_0x1bc9b5,_0x2ce3ab){return db['Template'][_0x3789('0x4e')]({'where':{'id':_0x1bc9b5[_0x3789('0x51')]['id']}})[_0x3789('0x25')](handleEntityNotFound(_0x2ce3ab,null))[_0x3789('0x25')](removeEntity(_0x2ce3ab,null))[_0x3789('0x47')](handleError(_0x2ce3ab,null));};
\ No newline at end of file
+var _0xc2ee=['map','Template','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','rows','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Templates','UserProfileResource','error','stack','name','send','index'];(function(_0x522453,_0x3f05a3){var _0x1f9be5=function(_0x4ccfb0){while(--_0x4ccfb0){_0x522453['push'](_0x522453['shift']());}};_0x1f9be5(++_0x3f05a3);}(_0xc2ee,0x7a));var _0xec2e=function(_0x257c0e,_0x4631da){_0x257c0e=_0x257c0e-0x0;var _0x393c16=_0xc2ee[_0x257c0e];return _0x393c16;};'use strict';var emlformat=require(_0xec2e('0x0'));var rimraf=require(_0xec2e('0x1'));var zipdir=require(_0xec2e('0x2'));var jsonpatch=require(_0xec2e('0x3'));var rp=require('request-promise');var moment=require(_0xec2e('0x4'));var BPromise=require(_0xec2e('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xec2e('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xec2e('0x7'));var _=require(_0xec2e('0x8'));var squel=require(_0xec2e('0x9'));var crypto=require(_0xec2e('0xa'));var jsforce=require(_0xec2e('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xec2e('0xc'));var Papa=require(_0xec2e('0xd'));var Redis=require('ioredis');var authService=require(_0xec2e('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xec2e('0xf'));var hardwareService=require(_0xec2e('0x10'));var logger=require(_0xec2e('0x11'))('api');var utils=require(_0xec2e('0x12'));var config=require(_0xec2e('0x13'));var licenseUtil=require(_0xec2e('0x14'));var db=require(_0xec2e('0x15'))['db'];function respondWithStatusCode(_0x52cc72,_0x2620b9){_0x2620b9=_0x2620b9||0xcc;return function(_0x2c607b){if(_0x2c607b){return _0x52cc72[_0xec2e('0x16')](_0x2620b9);}return _0x52cc72[_0xec2e('0x17')](_0x2620b9)[_0xec2e('0x18')]();};}function respondWithResult(_0x110d4c,_0x1a9442){_0x1a9442=_0x1a9442||0xc8;return function(_0x5c305d){if(_0x5c305d){return _0x110d4c[_0xec2e('0x17')](_0x1a9442)[_0xec2e('0x19')](_0x5c305d);}};}function respondWithFilteredResult(_0x2f90c2,_0x3d413d){return function(_0x381de2){if(_0x381de2){var _0xe6fe31=typeof _0x3d413d['offset']===_0xec2e('0x1a')&&typeof _0x3d413d[_0xec2e('0x1b')]==='undefined';var _0x5ac631=_0x381de2[_0xec2e('0x1c')];var _0x402da8=_0xe6fe31?0x0:_0x3d413d['offset'];var _0x56c576=_0xe6fe31?_0x381de2[_0xec2e('0x1c')]:_0x3d413d[_0xec2e('0x1d')]+_0x3d413d[_0xec2e('0x1b')];var _0x297c14;if(_0x56c576>=_0x5ac631){_0x56c576=_0x5ac631;_0x297c14=0xc8;}else{_0x297c14=0xce;}_0x2f90c2[_0xec2e('0x17')](_0x297c14);return _0x2f90c2[_0xec2e('0x1e')](_0xec2e('0x1f'),_0x402da8+'-'+_0x56c576+'/'+_0x5ac631)[_0xec2e('0x19')](_0x381de2);}return null;};}function patchUpdates(_0x5833f8){return function(_0x16ba52){try{jsonpatch[_0xec2e('0x20')](_0x16ba52,_0x5833f8,!![]);}catch(_0x3f5639){return BPromise[_0xec2e('0x21')](_0x3f5639);}return _0x16ba52[_0xec2e('0x22')]();};}function saveUpdates(_0x275359,_0x239fd2){return function(_0x310b5a){if(_0x310b5a){return _0x310b5a[_0xec2e('0x23')](_0x275359)[_0xec2e('0x24')](function(_0x3b9edc){return _0x3b9edc;});}return null;};}function removeEntity(_0x28e083,_0x15c710){return function(_0x40f3c5){if(_0x40f3c5){return _0x40f3c5[_0xec2e('0x25')]()[_0xec2e('0x24')](function(){var _0x96eddb=_0x40f3c5[_0xec2e('0x26')]({'plain':!![]});var _0x26d64d=_0xec2e('0x27');return db[_0xec2e('0x28')][_0xec2e('0x25')]({'where':{'type':_0x26d64d,'resourceId':_0x96eddb['id']}})[_0xec2e('0x24')](function(){return _0x40f3c5;});})[_0xec2e('0x24')](function(){_0x28e083['status'](0xcc)[_0xec2e('0x18')]();});}};}function handleEntityNotFound(_0xc41d71,_0x45f952){return function(_0x181c2e){if(!_0x181c2e){_0xc41d71[_0xec2e('0x16')](0x194);}return _0x181c2e;};}function handleError(_0x57c127,_0x2e4478){_0x2e4478=_0x2e4478||0x1f4;return function(_0x24b9db){logger[_0xec2e('0x29')](_0x24b9db[_0xec2e('0x2a')]);if(_0x24b9db[_0xec2e('0x2b')]){delete _0x24b9db[_0xec2e('0x2b')];}_0x57c127[_0xec2e('0x17')](_0x2e4478)[_0xec2e('0x2c')](_0x24b9db);};}exports[_0xec2e('0x2d')]=function(_0x4d61d3,_0x1f322a){var _0x2abbeb={},_0x4c56c0={},_0x12707c={'count':0x0,'rows':[]};var _0x58192c=_[_0xec2e('0x2e')](db[_0xec2e('0x2f')][_0xec2e('0x30')],function(_0x4904e4){return{'name':_0x4904e4[_0xec2e('0x31')],'type':_0x4904e4[_0xec2e('0x32')][_0xec2e('0x33')]};});_0x4c56c0[_0xec2e('0x34')]=_[_0xec2e('0x2e')](_0x58192c,'name');_0x4c56c0['query']=_[_0xec2e('0x35')](_0x4d61d3[_0xec2e('0x36')]);_0x4c56c0['filters']=_[_0xec2e('0x37')](_0x4c56c0[_0xec2e('0x34')],_0x4c56c0[_0xec2e('0x36')]);_0x2abbeb[_0xec2e('0x38')]=_[_0xec2e('0x37')](_0x4c56c0[_0xec2e('0x34')],qs[_0xec2e('0x39')](_0x4d61d3[_0xec2e('0x36')][_0xec2e('0x39')]));_0x2abbeb[_0xec2e('0x38')]=_0x2abbeb[_0xec2e('0x38')][_0xec2e('0x3a')]?_0x2abbeb[_0xec2e('0x38')]:_0x4c56c0[_0xec2e('0x34')];if(!_0x4d61d3[_0xec2e('0x36')][_0xec2e('0x3b')](_0xec2e('0x3c'))){_0x2abbeb[_0xec2e('0x1b')]=qs[_0xec2e('0x1b')](_0x4d61d3[_0xec2e('0x36')]['limit']);_0x2abbeb[_0xec2e('0x1d')]=qs[_0xec2e('0x1d')](_0x4d61d3[_0xec2e('0x36')][_0xec2e('0x1d')]);}_0x2abbeb[_0xec2e('0x3d')]=qs[_0xec2e('0x3e')](_0x4d61d3[_0xec2e('0x36')][_0xec2e('0x3e')]);_0x2abbeb[_0xec2e('0x3f')]=qs[_0xec2e('0x40')](_[_0xec2e('0x41')](_0x4d61d3[_0xec2e('0x36')],_0x4c56c0[_0xec2e('0x40')]),_0x58192c);if(_0x4d61d3['query']['filter']){_0x2abbeb[_0xec2e('0x3f')]=_['merge'](_0x2abbeb[_0xec2e('0x3f')],{'$or':_[_0xec2e('0x2e')](_0x58192c,function(_0x5576ca){if(_0x5576ca[_0xec2e('0x32')]!==_0xec2e('0x42')){var _0x529fd7={};_0x529fd7[_0x5576ca[_0xec2e('0x2b')]]={'$like':'%'+_0x4d61d3[_0xec2e('0x36')][_0xec2e('0x43')]+'%'};return _0x529fd7;}})});}_0x2abbeb=_[_0xec2e('0x44')]({},_0x2abbeb,_0x4d61d3[_0xec2e('0x45')]);var _0x5656d1={'where':_0x2abbeb[_0xec2e('0x3f')]};return db['Template']['count'](_0x5656d1)[_0xec2e('0x24')](function(_0x2d1aec){_0x12707c[_0xec2e('0x1c')]=_0x2d1aec;if(_0x4d61d3['query'][_0xec2e('0x46')]){_0x2abbeb[_0xec2e('0x47')]=[{'all':!![]}];}return db[_0xec2e('0x2f')]['findAll'](_0x2abbeb);})[_0xec2e('0x24')](function(_0x2e283e){_0x12707c[_0xec2e('0x48')]=_0x2e283e;return _0x12707c;})[_0xec2e('0x24')](respondWithFilteredResult(_0x1f322a,_0x2abbeb))['catch'](handleError(_0x1f322a,null));};exports['show']=function(_0xe4041a,_0x3d0aae){var _0xa2defd={'raw':!![],'where':{'id':_0xe4041a['params']['id']}},_0xff4659={};_0xff4659['model']=_['keys'](db[_0xec2e('0x2f')][_0xec2e('0x30')]);_0xff4659[_0xec2e('0x36')]=_[_0xec2e('0x35')](_0xe4041a['query']);_0xff4659[_0xec2e('0x40')]=_[_0xec2e('0x37')](_0xff4659[_0xec2e('0x34')],_0xff4659[_0xec2e('0x36')]);_0xa2defd[_0xec2e('0x38')]=_[_0xec2e('0x37')](_0xff4659['model'],qs[_0xec2e('0x39')](_0xe4041a['query'][_0xec2e('0x39')]));_0xa2defd[_0xec2e('0x38')]=_0xa2defd[_0xec2e('0x38')][_0xec2e('0x3a')]?_0xa2defd[_0xec2e('0x38')]:_0xff4659['model'];if(_0xe4041a['query'][_0xec2e('0x46')]){_0xa2defd[_0xec2e('0x47')]=[{'all':!![]}];}_0xa2defd=_['merge']({},_0xa2defd,_0xe4041a['options']);return db[_0xec2e('0x2f')]['find'](_0xa2defd)[_0xec2e('0x24')](handleEntityNotFound(_0x3d0aae,null))[_0xec2e('0x24')](respondWithResult(_0x3d0aae,null))[_0xec2e('0x49')](handleError(_0x3d0aae,null));};exports[_0xec2e('0x4a')]=function(_0x54cf78,_0x5128e1){return db[_0xec2e('0x2f')][_0xec2e('0x4a')](_0x54cf78['body'],{})['then'](function(_0x2d3471){var _0x6846df=_0x54cf78[_0xec2e('0x4b')][_0xec2e('0x26')]({'plain':!![]});if(!_0x6846df)throw new Error(_0xec2e('0x4c'));if(_0x6846df[_0xec2e('0x4d')]===_0xec2e('0x4b')){var _0x2408d4=_0x2d3471['get']({'plain':!![]});var _0x540a5d=_0xec2e('0x27');return db[_0xec2e('0x4e')][_0xec2e('0x4f')]({'where':{'name':_0x540a5d,'userProfileId':_0x6846df[_0xec2e('0x50')]},'raw':!![]})['then'](function(_0x2d98be){if(_0x2d98be&&_0x2d98be['autoAssociation']===0x0){return db[_0xec2e('0x28')][_0xec2e('0x4a')]({'name':_0x2408d4['name'],'resourceId':_0x2408d4['id'],'type':_0x2d98be['name'],'sectionId':_0x2d98be['id']},{})[_0xec2e('0x24')](function(){return _0x2d3471;});}else{return _0x2d3471;}})[_0xec2e('0x49')](function(_0x4f14df){logger[_0xec2e('0x29')](_0xec2e('0x51'),_0x4f14df);throw _0x4f14df;});}return _0x2d3471;})[_0xec2e('0x24')](respondWithResult(_0x5128e1,0xc9))['catch'](handleError(_0x5128e1,null));};exports[_0xec2e('0x23')]=function(_0xc5b632,_0x43197c){if(_0xc5b632[_0xec2e('0x52')]['id']){delete _0xc5b632[_0xec2e('0x52')]['id'];}return db[_0xec2e('0x2f')][_0xec2e('0x4f')]({'where':{'id':_0xc5b632[_0xec2e('0x53')]['id']}})['then'](handleEntityNotFound(_0x43197c,null))[_0xec2e('0x24')](saveUpdates(_0xc5b632[_0xec2e('0x52')],null))['then'](respondWithResult(_0x43197c,null))[_0xec2e('0x49')](handleError(_0x43197c,null));};exports[_0xec2e('0x25')]=function(_0x352112,_0x2bb040){return db[_0xec2e('0x2f')][_0xec2e('0x4f')]({'where':{'id':_0x352112[_0xec2e('0x53')]['id']}})['then'](handleEntityNotFound(_0x2bb040,null))[_0xec2e('0x24')](removeEntity(_0x2bb040,null))[_0xec2e('0x49')](handleError(_0x2bb040,null));};
\ No newline at end of file
index 1c03a70..03d64e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda60=['bluebird','rimraf','../../config/environment','./template.attributes','exports','define','Template','util','api','moment'];(function(_0x17dabf,_0x1a7a1f){var _0x311c2b=function(_0x1d51bf){while(--_0x1d51bf){_0x17dabf['push'](_0x17dabf['shift']());}};_0x311c2b(++_0x1a7a1f);}(_0xda60,0x89));var _0x0da6=function(_0x2b2b33,_0x56606f){_0x2b2b33=_0x2b2b33-0x0;var _0x229157=_0xda60[_0x2b2b33];return _0x229157;};'use strict';var _=require('lodash');var util=require(_0x0da6('0x0'));var logger=require('../../config/logger')(_0x0da6('0x1'));var moment=require(_0x0da6('0x2'));var BPromise=require(_0x0da6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0da6('0x4'));var config=require(_0x0da6('0x5'));var attributes=require(_0x0da6('0x6'));module[_0x0da6('0x7')]=function(_0x5bf3c5,_0x444d6e){return _0x5bf3c5[_0x0da6('0x8')](_0x0da6('0x9'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21a0=['moment','bluebird','path','rimraf','../../config/environment','./template.attributes','define','Template','tools_templates','lodash','util','../../config/logger'];(function(_0x39fba9,_0x245311){var _0x3078c5=function(_0x4540ff){while(--_0x4540ff){_0x39fba9['push'](_0x39fba9['shift']());}};_0x3078c5(++_0x245311);}(_0x21a0,0x165));var _0x021a=function(_0x4c8742,_0x3f315a){_0x4c8742=_0x4c8742-0x0;var _0x5d56f9=_0x21a0[_0x4c8742];return _0x5d56f9;};'use strict';var _=require(_0x021a('0x0'));var util=require(_0x021a('0x1'));var logger=require(_0x021a('0x2'))('api');var moment=require(_0x021a('0x3'));var BPromise=require(_0x021a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x021a('0x5'));var rimraf=require(_0x021a('0x6'));var config=require(_0x021a('0x7'));var attributes=require(_0x021a('0x8'));module['exports']=function(_0x4868fd,_0x1e2664){return _0x4868fd[_0x021a('0x9')](_0x021a('0xa'),attributes,{'tableName':_0x021a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ad5595..a186c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabfc=['catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','Template,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x32c8f4,_0x5b84ca){var _0x3da3ec=function(_0x3509d2){while(--_0x3509d2){_0x32c8f4['push'](_0x32c8f4['shift']());}};_0x3da3ec(++_0x5b84ca);}(_0xabfc,0x137));var _0xcabf=function(_0x2bfe52,_0x43946e){_0x2bfe52=_0x2bfe52-0x0;var _0x1cf649=_0xabfc[_0x2bfe52];return _0x1cf649;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xcabf('0x0'));var BPromise=require('bluebird');var rs=require(_0xcabf('0x1'));var fs=require('fs');var Redis=require(_0xcabf('0x2'));var db=require(_0xcabf('0x3'))['db'];var utils=require(_0xcabf('0x4'));var logger=require(_0xcabf('0x5'))(_0xcabf('0x6'));var config=require(_0xcabf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcabf('0x8')][_0xcabf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5db325,_0x2aeb9e,_0x58d3ca){return new BPromise(function(_0x5557ac,_0x38fd8){return client['request'](_0x5db325,_0x58d3ca)[_0xcabf('0xa')](function(_0x20470b){logger[_0xcabf('0xb')](_0xcabf('0xc'),_0x2aeb9e,'request\x20sent');logger[_0xcabf('0xd')]('Template,\x20%s,\x20%s,\x20%s',_0x2aeb9e,_0xcabf('0xe'),JSON[_0xcabf('0xf')](_0x20470b));if(_0x20470b[_0xcabf('0x10')]){if(_0x20470b['error']['code']===0x1f4){logger[_0xcabf('0x10')](_0xcabf('0xc'),_0x2aeb9e,_0x20470b['error'][_0xcabf('0x11')]);return _0x38fd8(_0x20470b[_0xcabf('0x10')][_0xcabf('0x11')]);}logger[_0xcabf('0x10')](_0xcabf('0xc'),_0x2aeb9e,_0x20470b[_0xcabf('0x10')][_0xcabf('0x11')]);return _0x5557ac(_0x20470b[_0xcabf('0x10')][_0xcabf('0x11')]);}else{logger[_0xcabf('0xb')](_0xcabf('0xc'),_0x2aeb9e,_0xcabf('0xe'));_0x5557ac(_0x20470b[_0xcabf('0x12')]['message']);}})['catch'](function(_0x17a66d){logger[_0xcabf('0x10')]('Template,\x20%s,\x20%s',_0x2aeb9e,_0x17a66d);_0x38fd8(_0x17a66d);});});}exports[_0xcabf('0x13')]=function(_0x299413){var _0x40d530=this;return new Promise(function(_0x3bd3a4,_0x53a5e0){return db[_0xcabf('0x14')][_0xcabf('0x15')]({'raw':_0x299413['options']?_0x299413[_0xcabf('0x16')][_0xcabf('0x17')]===undefined?!![]:![]:!![],'where':_0x299413[_0xcabf('0x16')]?_0x299413[_0xcabf('0x16')][_0xcabf('0x18')]||null:null,'attributes':_0x299413['options']?_0x299413[_0xcabf('0x16')][_0xcabf('0x19')]||null:null,'limit':_0x299413[_0xcabf('0x16')]?_0x299413[_0xcabf('0x16')][_0xcabf('0x1a')]||null:null,'include':_0x299413[_0xcabf('0x16')]?_0x299413[_0xcabf('0x16')][_0xcabf('0x1b')]?_[_0xcabf('0x1c')](_0x299413['options'][_0xcabf('0x1b')],function(_0x4ba4d4){return{'model':db[_0x4ba4d4[_0xcabf('0x1d')]],'as':_0x4ba4d4['as'],'attributes':_0x4ba4d4['attributes'],'include':_0x4ba4d4[_0xcabf('0x1b')]?_['map'](_0x4ba4d4[_0xcabf('0x1b')],function(_0x5cd137){return{'model':db[_0x5cd137[_0xcabf('0x1d')]],'as':_0x5cd137['as'],'attributes':_0x5cd137[_0xcabf('0x19')],'include':_0x5cd137[_0xcabf('0x1b')]?_[_0xcabf('0x1c')](_0x5cd137[_0xcabf('0x1b')],function(_0x2f3688){return{'model':db[_0x2f3688[_0xcabf('0x1d')]],'as':_0x2f3688['as'],'attributes':_0x2f3688[_0xcabf('0x19')]};}):[]};}):[]};}):[]:[]})[_0xcabf('0xa')](function(_0x48b210){logger[_0xcabf('0xb')](_0xcabf('0x13'),_0x299413);logger[_0xcabf('0xd')]('GetTemplate',_0x299413,JSON['stringify'](_0x48b210));_0x3bd3a4(_0x48b210);})[_0xcabf('0x1e')](function(_0x5b23a2){logger[_0xcabf('0x10')](_0xcabf('0x13'),_0x5b23a2[_0xcabf('0x11')],_0x299413);_0x53a5e0(_0x40d530['error'](0x1f4,_0x5b23a2['message']));});});};
\ No newline at end of file
+var _0xd509=['code','message','result','GetTemplate','findAll','options','raw','where','limit','include','map','model','attributes','then','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','error'];(function(_0x2df13f,_0x3a3921){var _0x5c8a3f=function(_0x38aba4){while(--_0x38aba4){_0x2df13f['push'](_0x2df13f['shift']());}};_0x5c8a3f(++_0x3a3921);}(_0xd509,0x19c));var _0x9d50=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd509[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9d50('0x0'));var util=require('util');var moment=require(_0x9d50('0x1'));var BPromise=require(_0x9d50('0x2'));var rs=require(_0x9d50('0x3'));var fs=require('fs');var Redis=require(_0x9d50('0x4'));var db=require(_0x9d50('0x5'))['db'];var utils=require(_0x9d50('0x6'));var logger=require(_0x9d50('0x7'))(_0x9d50('0x8'));var config=require(_0x9d50('0x9'));var jayson=require(_0x9d50('0xa'));var client=jayson[_0x9d50('0xb')][_0x9d50('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2dc95c,_0x3b2776,_0x56c5d5){return new BPromise(function(_0x22c3c5,_0x349002){return client[_0x9d50('0xd')](_0x2dc95c,_0x56c5d5)['then'](function(_0x42a2b7){logger[_0x9d50('0xe')](_0x9d50('0xf'),_0x3b2776,_0x9d50('0x10'));logger[_0x9d50('0x11')](_0x9d50('0x12'),_0x3b2776,_0x9d50('0x10'),JSON['stringify'](_0x42a2b7));if(_0x42a2b7['error']){if(_0x42a2b7[_0x9d50('0x13')][_0x9d50('0x14')]===0x1f4){logger[_0x9d50('0x13')](_0x9d50('0xf'),_0x3b2776,_0x42a2b7[_0x9d50('0x13')][_0x9d50('0x15')]);return _0x349002(_0x42a2b7[_0x9d50('0x13')][_0x9d50('0x15')]);}logger[_0x9d50('0x13')]('Template,\x20%s,\x20%s',_0x3b2776,_0x42a2b7[_0x9d50('0x13')][_0x9d50('0x15')]);return _0x22c3c5(_0x42a2b7[_0x9d50('0x13')][_0x9d50('0x15')]);}else{logger['info'](_0x9d50('0xf'),_0x3b2776,'request\x20sent');_0x22c3c5(_0x42a2b7[_0x9d50('0x16')][_0x9d50('0x15')]);}})['catch'](function(_0x6405ef){logger[_0x9d50('0x13')](_0x9d50('0xf'),_0x3b2776,_0x6405ef);_0x349002(_0x6405ef);});});}exports[_0x9d50('0x17')]=function(_0x20e6d8){var _0x2aae16=this;return new Promise(function(_0x3753ba,_0x138a07){return db['Template'][_0x9d50('0x18')]({'raw':_0x20e6d8[_0x9d50('0x19')]?_0x20e6d8['options'][_0x9d50('0x1a')]===undefined?!![]:![]:!![],'where':_0x20e6d8['options']?_0x20e6d8['options'][_0x9d50('0x1b')]||null:null,'attributes':_0x20e6d8['options']?_0x20e6d8[_0x9d50('0x19')]['attributes']||null:null,'limit':_0x20e6d8['options']?_0x20e6d8[_0x9d50('0x19')][_0x9d50('0x1c')]||null:null,'include':_0x20e6d8[_0x9d50('0x19')]?_0x20e6d8[_0x9d50('0x19')][_0x9d50('0x1d')]?_[_0x9d50('0x1e')](_0x20e6d8[_0x9d50('0x19')]['include'],function(_0x3a530d){return{'model':db[_0x3a530d[_0x9d50('0x1f')]],'as':_0x3a530d['as'],'attributes':_0x3a530d['attributes'],'include':_0x3a530d[_0x9d50('0x1d')]?_[_0x9d50('0x1e')](_0x3a530d['include'],function(_0x2cc469){return{'model':db[_0x2cc469[_0x9d50('0x1f')]],'as':_0x2cc469['as'],'attributes':_0x2cc469[_0x9d50('0x20')],'include':_0x2cc469['include']?_[_0x9d50('0x1e')](_0x2cc469[_0x9d50('0x1d')],function(_0x71bf76){return{'model':db[_0x71bf76[_0x9d50('0x1f')]],'as':_0x71bf76['as'],'attributes':_0x71bf76[_0x9d50('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9d50('0x21')](function(_0x2c5d40){logger['info'](_0x9d50('0x17'),_0x20e6d8);logger[_0x9d50('0x11')](_0x9d50('0x17'),_0x20e6d8,JSON[_0x9d50('0x22')](_0x2c5d40));_0x3753ba(_0x2c5d40);})[_0x9d50('0x23')](function(_0x1abf1e){logger[_0x9d50('0x13')]('GetTemplate',_0x1abf1e[_0x9d50('0x15')],_0x20e6d8);_0x138a07(_0x2aae16['error'](0x1f4,_0x1abf1e[_0x9d50('0x15')]));});});};
\ No newline at end of file
index a9174b8..22c3663 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d5=['addAnyCondition','addAction','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','getActions','post','create'];(function(_0x2118ad,_0xe8e3fd){var _0x4b5715=function(_0x399f72){while(--_0x399f72){_0x2118ad['push'](_0x2118ad['shift']());}};_0x4b5715(++_0xe8e3fd);}(_0x45d5,0x1d1));var _0x545d=function(_0x8e57c4,_0x47c9cb){_0x8e57c4=_0x8e57c4-0x0;var _0x59465f=_0x45d5[_0x8e57c4];return _0x59465f;};'use strict';var multer=require('multer');var util=require(_0x545d('0x0'));var path=require(_0x545d('0x1'));var timeout=require(_0x545d('0x2'));var express=require(_0x545d('0x3'));var router=express[_0x545d('0x4')]();var fs_extra=require(_0x545d('0x5'));var auth=require(_0x545d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x545d('0x7'));var controller=require(_0x545d('0x8'));router[_0x545d('0x9')]('/',auth[_0x545d('0xa')](),controller[_0x545d('0xb')]);router[_0x545d('0x9')](_0x545d('0xc'),auth[_0x545d('0xa')](),controller[_0x545d('0xd')]);router[_0x545d('0x9')](_0x545d('0xe'),auth[_0x545d('0xa')](),controller[_0x545d('0xf')]);router[_0x545d('0x9')](_0x545d('0x10'),auth[_0x545d('0xa')](),controller['getAnyConditions']);router[_0x545d('0x9')](_0x545d('0x11'),auth[_0x545d('0xa')](),controller[_0x545d('0x12')]);router[_0x545d('0x13')]('/',auth[_0x545d('0xa')](),controller[_0x545d('0x14')]);router[_0x545d('0x13')](_0x545d('0xe'),auth[_0x545d('0xa')](),controller['addAllCondition']);router[_0x545d('0x13')](_0x545d('0x10'),auth[_0x545d('0xa')](),controller[_0x545d('0x15')]);router['post'](_0x545d('0x11'),auth[_0x545d('0xa')](),controller[_0x545d('0x16')]);router[_0x545d('0x17')](_0x545d('0xc'),auth['isAuthenticated'](),controller[_0x545d('0x18')]);router[_0x545d('0x19')](_0x545d('0xc'),auth[_0x545d('0xa')](),controller[_0x545d('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x896e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','create','post','addAllCondition','addAnyCondition','addAction','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5a037a,_0x44a3fc){var _0x28ff57=function(_0x13d49f){while(--_0x13d49f){_0x5a037a['push'](_0x5a037a['shift']());}};_0x28ff57(++_0x44a3fc);}(_0x896e,0x1e9));var _0xe896=function(_0x258545,_0x229853){_0x258545=_0x258545-0x0;var _0x35b821=_0x896e[_0x258545];return _0x35b821;};'use strict';var multer=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var path=require(_0xe896('0x2'));var timeout=require(_0xe896('0x3'));var express=require(_0xe896('0x4'));var router=express[_0xe896('0x5')]();var fs_extra=require(_0xe896('0x6'));var auth=require(_0xe896('0x7'));var interaction=require(_0xe896('0x8'));var config=require(_0xe896('0x9'));var controller=require(_0xe896('0xa'));router[_0xe896('0xb')]('/',auth['isAuthenticated'](),controller[_0xe896('0xc')]);router[_0xe896('0xb')](_0xe896('0xd'),auth[_0xe896('0xe')](),controller[_0xe896('0xf')]);router['get'](_0xe896('0x10'),auth[_0xe896('0xe')](),controller[_0xe896('0x11')]);router['get'](_0xe896('0x12'),auth['isAuthenticated'](),controller[_0xe896('0x13')]);router['get'](_0xe896('0x14'),auth[_0xe896('0xe')](),controller[_0xe896('0x15')]);router['post']('/',auth[_0xe896('0xe')](),controller[_0xe896('0x16')]);router[_0xe896('0x17')]('/:id/all_conditions',auth[_0xe896('0xe')](),controller[_0xe896('0x18')]);router[_0xe896('0x17')]('/:id/any_conditions',auth[_0xe896('0xe')](),controller[_0xe896('0x19')]);router[_0xe896('0x17')]('/:id/actions',auth['isAuthenticated'](),controller[_0xe896('0x1a')]);router[_0xe896('0x1b')]('/:id',auth['isAuthenticated'](),controller[_0xe896('0x1c')]);router[_0xe896('0x1d')]('/:id',auth[_0xe896('0xe')](),controller['destroy']);module[_0xe896('0x1e')]=router;
\ No newline at end of file
index 67abd0c..8c7a36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6c=['STRING','BOOLEAN','sequelize','exports'];(function(_0xd82eee,_0x3ec9db){var _0x35c82c=function(_0x26f61a){while(--_0x26f61a){_0xd82eee['push'](_0xd82eee['shift']());}};_0x35c82c(++_0x3ec9db);}(_0x8d6c,0xda));var _0xc8d6=function(_0x1a6eed,_0x3a2abe){_0x1a6eed=_0x1a6eed-0x0;var _0x3c0246=_0x8d6c[_0x1a6eed];return _0x3c0246;};'use strict';var Sequelize=require(_0xc8d6('0x0'));module[_0xc8d6('0x1')]={'name':{'type':Sequelize[_0xc8d6('0x2')]},'channel':{'type':Sequelize[_0xc8d6('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xc8d6('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x61bb=['STRING','sequelize','exports'];(function(_0x3f3524,_0x384738){var _0x45e277=function(_0x68f882){while(--_0x68f882){_0x3f3524['push'](_0x3f3524['shift']());}};_0x45e277(++_0x384738);}(_0x61bb,0x1b1));var _0xb61b=function(_0x4a9499,_0xcc334f){_0x4a9499=_0x4a9499-0x0;var _0x1e960d=_0x61bb[_0x4a9499];return _0x1e960d;};'use strict';var Sequelize=require(_0xb61b('0x0'));module[_0xb61b('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xb61b('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 63550b2..2661a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a4=['findOne','nolimit','getAnyConditions','addAction','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','json','offset','undefined','limit','count','status','set','apply','reject','save','then','destroy','get','UserProfileResource','end','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','Trigger','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Condition','addAnyCondition','TriggerAnyId','getAllConditions'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x28a4,0xbf));var _0x428a=function(_0x42fb0e,_0x55fc22){_0x42fb0e=_0x42fb0e-0x0;var _0x595566=_0x28a4[_0x42fb0e];return _0x595566;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x428a('0x0'));var zipdir=require(_0x428a('0x1'));var jsonpatch=require(_0x428a('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x428a('0x3'));var Mustache=require(_0x428a('0x4'));var util=require(_0x428a('0x5'));var path=require('path');var sox=require(_0x428a('0x6'));var csv=require(_0x428a('0x7'));var ejs=require(_0x428a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x428a('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x428a('0xa'));var deskjs=require(_0x428a('0xb'));var toCsv=require(_0x428a('0x7'));var querystring=require(_0x428a('0xc'));var Papa=require('papaparse');var Redis=require(_0x428a('0xd'));var authService=require(_0x428a('0xe'));var qs=require(_0x428a('0xf'));var as=require(_0x428a('0x10'));var hardwareService=require(_0x428a('0x11'));var logger=require(_0x428a('0x12'))(_0x428a('0x13'));var utils=require('../../config/utils');var config=require(_0x428a('0x14'));var licenseUtil=require(_0x428a('0x15'));var db=require(_0x428a('0x16'))['db'];function respondWithStatusCode(_0xe58db8,_0x4ab31c){_0x4ab31c=_0x4ab31c||0xcc;return function(_0x34702c){if(_0x34702c){return _0xe58db8['sendStatus'](_0x4ab31c);}return _0xe58db8['status'](_0x4ab31c)['end']();};}function respondWithResult(_0x28093d,_0x2cf002){_0x2cf002=_0x2cf002||0xc8;return function(_0x4c3f5d){if(_0x4c3f5d){return _0x28093d['status'](_0x2cf002)[_0x428a('0x17')](_0x4c3f5d);}};}function respondWithFilteredResult(_0x4fc85d,_0x1de090){return function(_0x2ad92a){if(_0x2ad92a){var _0x5afea9=typeof _0x1de090[_0x428a('0x18')]===_0x428a('0x19')&&typeof _0x1de090[_0x428a('0x1a')]===_0x428a('0x19');var _0x585a9f=_0x2ad92a[_0x428a('0x1b')];var _0x4a7b80=_0x5afea9?0x0:_0x1de090[_0x428a('0x18')];var _0x46f6e9=_0x5afea9?_0x2ad92a[_0x428a('0x1b')]:_0x1de090['offset']+_0x1de090[_0x428a('0x1a')];var _0x548d5d;if(_0x46f6e9>=_0x585a9f){_0x46f6e9=_0x585a9f;_0x548d5d=0xc8;}else{_0x548d5d=0xce;}_0x4fc85d[_0x428a('0x1c')](_0x548d5d);return _0x4fc85d[_0x428a('0x1d')]('Content-Range',_0x4a7b80+'-'+_0x46f6e9+'/'+_0x585a9f)['json'](_0x2ad92a);}return null;};}function patchUpdates(_0x398fcd){return function(_0x4b9fef){try{jsonpatch[_0x428a('0x1e')](_0x4b9fef,_0x398fcd,!![]);}catch(_0x1e795f){return BPromise[_0x428a('0x1f')](_0x1e795f);}return _0x4b9fef[_0x428a('0x20')]();};}function saveUpdates(_0x5547d7,_0x20e907){return function(_0x168a3a){if(_0x168a3a){return _0x168a3a['update'](_0x5547d7)[_0x428a('0x21')](function(_0x43648b){return _0x43648b;});}return null;};}function removeEntity(_0xbf3a7f,_0x5a22b5){return function(_0x32305f){if(_0x32305f){return _0x32305f[_0x428a('0x22')]()['then'](function(){var _0x140360=_0x32305f[_0x428a('0x23')]({'plain':!![]});var _0x1442b3='Triggers';return db[_0x428a('0x24')][_0x428a('0x22')]({'where':{'type':_0x1442b3,'resourceId':_0x140360['id']}})['then'](function(){return _0x32305f;});})[_0x428a('0x21')](function(){_0xbf3a7f[_0x428a('0x1c')](0xcc)[_0x428a('0x25')]();});}};}function handleEntityNotFound(_0x5c8ed6,_0x391d5d){return function(_0x4aec05){if(!_0x4aec05){_0x5c8ed6['sendStatus'](0x194);}return _0x4aec05;};}function handleError(_0x4e96cb,_0x17f7c0){_0x17f7c0=_0x17f7c0||0x1f4;return function(_0x3c25e3){logger['error'](_0x3c25e3[_0x428a('0x26')]);if(_0x3c25e3[_0x428a('0x27')]){delete _0x3c25e3['name'];}_0x4e96cb[_0x428a('0x1c')](_0x17f7c0)[_0x428a('0x28')](_0x3c25e3);};}exports[_0x428a('0x29')]=function(_0x5a1dd6,_0x36ccd7){var _0x4f1cb0={},_0x105e87={},_0x560e4d={'count':0x0,'rows':[]};var _0x4ffcb1=_['map'](db['Trigger'][_0x428a('0x2a')],function(_0x4de7cc){return{'name':_0x4de7cc[_0x428a('0x2b')],'type':_0x4de7cc[_0x428a('0x2c')][_0x428a('0x2d')]};});_0x105e87[_0x428a('0x2e')]=_[_0x428a('0x2f')](_0x4ffcb1,_0x428a('0x27'));_0x105e87[_0x428a('0x30')]=_[_0x428a('0x31')](_0x5a1dd6[_0x428a('0x30')]);_0x105e87['filters']=_['intersection'](_0x105e87['model'],_0x105e87[_0x428a('0x30')]);_0x4f1cb0['attributes']=_['intersection'](_0x105e87[_0x428a('0x2e')],qs['fields'](_0x5a1dd6['query'][_0x428a('0x32')]));_0x4f1cb0[_0x428a('0x33')]=_0x4f1cb0['attributes'][_0x428a('0x34')]?_0x4f1cb0[_0x428a('0x33')]:_0x105e87[_0x428a('0x2e')];if(!_0x5a1dd6[_0x428a('0x30')][_0x428a('0x35')]('nolimit')){_0x4f1cb0[_0x428a('0x1a')]=qs[_0x428a('0x1a')](_0x5a1dd6[_0x428a('0x30')]['limit']);_0x4f1cb0[_0x428a('0x18')]=qs['offset'](_0x5a1dd6['query'][_0x428a('0x18')]);}_0x4f1cb0[_0x428a('0x36')]=qs[_0x428a('0x37')](_0x5a1dd6[_0x428a('0x30')][_0x428a('0x37')]);_0x4f1cb0[_0x428a('0x38')]=qs[_0x428a('0x39')](_[_0x428a('0x3a')](_0x5a1dd6[_0x428a('0x30')],_0x105e87[_0x428a('0x39')]),_0x4ffcb1);if(_0x5a1dd6['query'][_0x428a('0x3b')]){_0x4f1cb0['where']=_[_0x428a('0x3c')](_0x4f1cb0[_0x428a('0x38')],{'$or':_['map'](_0x4ffcb1,function(_0x2f74da){if(_0x2f74da[_0x428a('0x2c')]!=='VIRTUAL'){var _0x45bb1b={};_0x45bb1b[_0x2f74da[_0x428a('0x27')]]={'$like':'%'+_0x5a1dd6[_0x428a('0x30')][_0x428a('0x3b')]+'%'};return _0x45bb1b;}})});}_0x4f1cb0=_['merge']({},_0x4f1cb0,_0x5a1dd6[_0x428a('0x3d')]);var _0x447b7={'where':_0x4f1cb0['where']};return db[_0x428a('0x3e')][_0x428a('0x1b')](_0x447b7)[_0x428a('0x21')](function(_0x76222b){_0x560e4d[_0x428a('0x1b')]=_0x76222b;if(_0x5a1dd6[_0x428a('0x30')][_0x428a('0x3f')]){_0x4f1cb0[_0x428a('0x40')]=[{'all':!![]}];}return db[_0x428a('0x3e')][_0x428a('0x41')](_0x4f1cb0);})[_0x428a('0x21')](function(_0x2108d0){_0x560e4d[_0x428a('0x42')]=_0x2108d0;return _0x560e4d;})[_0x428a('0x21')](respondWithFilteredResult(_0x36ccd7,_0x4f1cb0))[_0x428a('0x43')](handleError(_0x36ccd7,null));};exports[_0x428a('0x44')]=function(_0xd2cdb3,_0x1d3cb9){var _0x457e24={'raw':![],'where':{'id':_0xd2cdb3[_0x428a('0x45')]['id']}},_0x40f088={};_0x40f088[_0x428a('0x2e')]=_[_0x428a('0x31')](db[_0x428a('0x3e')]['rawAttributes']);_0x40f088[_0x428a('0x30')]=_[_0x428a('0x31')](_0xd2cdb3[_0x428a('0x30')]);_0x40f088[_0x428a('0x39')]=_[_0x428a('0x46')](_0x40f088['model'],_0x40f088['query']);_0x457e24[_0x428a('0x33')]=_['intersection'](_0x40f088[_0x428a('0x2e')],qs['fields'](_0xd2cdb3[_0x428a('0x30')][_0x428a('0x32')]));_0x457e24['attributes']=_0x457e24[_0x428a('0x33')][_0x428a('0x34')]?_0x457e24[_0x428a('0x33')]:_0x40f088['model'];if(_0xd2cdb3[_0x428a('0x30')][_0x428a('0x3f')]){_0x457e24[_0x428a('0x40')]=[{'all':!![]}];}_0x457e24=_[_0x428a('0x3c')]({},_0x457e24,_0xd2cdb3[_0x428a('0x3d')]);return db[_0x428a('0x3e')][_0x428a('0x47')](_0x457e24)[_0x428a('0x21')](handleEntityNotFound(_0x1d3cb9,null))[_0x428a('0x21')](respondWithResult(_0x1d3cb9,null))[_0x428a('0x43')](handleError(_0x1d3cb9,null));};exports[_0x428a('0x48')]=function(_0x25fe62,_0x18ef71){return db[_0x428a('0x3e')][_0x428a('0x48')](_0x25fe62[_0x428a('0x49')],{})[_0x428a('0x21')](function(_0x4e2ea0){var _0x304a86=_0x25fe62[_0x428a('0x4a')]['get']({'plain':!![]});if(!_0x304a86)throw new Error(_0x428a('0x4b'));if(_0x304a86[_0x428a('0x4c')]===_0x428a('0x4a')){var _0x1236b7=_0x4e2ea0[_0x428a('0x23')]({'plain':!![]});var _0x438311=_0x428a('0x4d');return db[_0x428a('0x4e')]['find']({'where':{'name':_0x438311,'userProfileId':_0x304a86[_0x428a('0x4f')]},'raw':!![]})[_0x428a('0x21')](function(_0x5dbe2a){if(_0x5dbe2a&&_0x5dbe2a['autoAssociation']===0x0){return db['UserProfileResource'][_0x428a('0x48')]({'name':_0x1236b7[_0x428a('0x27')],'resourceId':_0x1236b7['id'],'type':_0x5dbe2a[_0x428a('0x27')],'sectionId':_0x5dbe2a['id']},{})[_0x428a('0x21')](function(){return _0x4e2ea0;});}else{return _0x4e2ea0;}})[_0x428a('0x43')](function(_0x2610aa){logger['error'](_0x428a('0x50'),_0x2610aa);throw _0x2610aa;});}return _0x4e2ea0;})[_0x428a('0x21')](respondWithResult(_0x18ef71,0xc9))['catch'](handleError(_0x18ef71,null));};exports['update']=function(_0x2dd7d4,_0x1b0a20){if(_0x2dd7d4['body']['id']){delete _0x2dd7d4[_0x428a('0x49')]['id'];}return db[_0x428a('0x3e')]['find']({'where':{'id':_0x2dd7d4['params']['id']}})['then'](handleEntityNotFound(_0x1b0a20,null))[_0x428a('0x21')](saveUpdates(_0x2dd7d4['body'],null))['then'](respondWithResult(_0x1b0a20,null))[_0x428a('0x43')](handleError(_0x1b0a20,null));};exports['destroy']=function(_0x487192,_0x53f45d){return db[_0x428a('0x3e')][_0x428a('0x47')]({'where':{'id':_0x487192[_0x428a('0x45')]['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x53f45d,null))[_0x428a('0x21')](removeEntity(_0x53f45d,null))[_0x428a('0x43')](handleError(_0x53f45d,null));};exports['addAllCondition']=function(_0x27f4c8,_0x4a7e4d,_0x140d10){if(_0x27f4c8['body']['id']){delete _0x27f4c8['body']['id'];}return db['Trigger'][_0x428a('0x47')]({'where':{'id':_0x27f4c8[_0x428a('0x45')]['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x4a7e4d,null))[_0x428a('0x21')](function(_0x57502c){if(_0x57502c){_0x27f4c8[_0x428a('0x49')]['TriggerAllId']=_0x57502c['id'];return db[_0x428a('0x51')][_0x428a('0x48')](_0x27f4c8['body']);}})['then'](respondWithResult(_0x4a7e4d,null))[_0x428a('0x43')](handleError(_0x4a7e4d,null));};exports[_0x428a('0x52')]=function(_0x505195,_0x456414,_0x39135c){if(_0x505195[_0x428a('0x49')]['id']){delete _0x505195['body']['id'];}return db['Trigger']['find']({'where':{'id':_0x505195[_0x428a('0x45')]['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x456414,null))[_0x428a('0x21')](function(_0x342800){if(_0x342800){_0x505195['body'][_0x428a('0x53')]=_0x342800['id'];return db[_0x428a('0x51')][_0x428a('0x48')](_0x505195['body']);}})[_0x428a('0x21')](respondWithResult(_0x456414,null))['catch'](handleError(_0x456414,null));};exports[_0x428a('0x54')]=function(_0x357fab,_0x2dd23e,_0x464aac){var _0x2c13f3={};var _0x367c7d={};var _0x4673fc;var _0x4b34e4;return db[_0x428a('0x3e')][_0x428a('0x55')]({'where':{'id':_0x357fab['params']['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x2dd23e,null))[_0x428a('0x21')](function(_0xad02ee){if(_0xad02ee){_0x4673fc=_0xad02ee;_0x367c7d['model']=_[_0x428a('0x31')](db[_0x428a('0x51')][_0x428a('0x2a')]);_0x367c7d[_0x428a('0x30')]=_[_0x428a('0x31')](_0x357fab['query']);_0x367c7d['filters']=_[_0x428a('0x46')](_0x367c7d[_0x428a('0x2e')],_0x367c7d[_0x428a('0x30')]);_0x2c13f3[_0x428a('0x33')]=_[_0x428a('0x46')](_0x367c7d[_0x428a('0x2e')],qs[_0x428a('0x32')](_0x357fab['query']['fields']));_0x2c13f3[_0x428a('0x33')]=_0x2c13f3[_0x428a('0x33')][_0x428a('0x34')]?_0x2c13f3[_0x428a('0x33')]:_0x367c7d[_0x428a('0x2e')];_0x2c13f3[_0x428a('0x36')]=qs[_0x428a('0x37')](_0x357fab[_0x428a('0x30')][_0x428a('0x37')]);_0x2c13f3[_0x428a('0x38')]=qs[_0x428a('0x39')](_['pick'](_0x357fab[_0x428a('0x30')],_0x367c7d['filters']));if(_0x357fab[_0x428a('0x30')]['filter']){_0x2c13f3[_0x428a('0x38')]=_['merge'](_0x2c13f3['where'],{'$or':_[_0x428a('0x2f')](_0x2c13f3['attributes'],function(_0x5a88bb){var _0x1caf0d={};_0x1caf0d[_0x5a88bb]={'$like':'%'+_0x357fab[_0x428a('0x30')][_0x428a('0x3b')]+'%'};return _0x1caf0d;})});}_0x2c13f3=_[_0x428a('0x3c')]({},_0x2c13f3,_0x357fab[_0x428a('0x3d')]);return _0x4673fc[_0x428a('0x54')](_0x2c13f3);}})['then'](function(_0x3b6e46){if(_0x3b6e46){_0x4b34e4=_0x3b6e46[_0x428a('0x34')];if(!_0x357fab[_0x428a('0x30')][_0x428a('0x35')](_0x428a('0x56'))){_0x2c13f3[_0x428a('0x1a')]=qs[_0x428a('0x1a')](_0x357fab['query'][_0x428a('0x1a')]);_0x2c13f3[_0x428a('0x18')]=qs[_0x428a('0x18')](_0x357fab[_0x428a('0x30')][_0x428a('0x18')]);}return _0x4673fc['getAllConditions'](_0x2c13f3);}})[_0x428a('0x21')](function(_0x4201cd){if(_0x4201cd){return _0x4201cd?{'count':_0x4b34e4,'rows':_0x4201cd}:null;}})[_0x428a('0x21')](respondWithResult(_0x2dd23e,null))[_0x428a('0x43')](handleError(_0x2dd23e,null));};exports[_0x428a('0x57')]=function(_0x4ea892,_0x371381,_0xb1bdca){var _0x4de207={};var _0x18b018={};var _0x1e8a03;var _0x5a0427;return db[_0x428a('0x3e')][_0x428a('0x55')]({'where':{'id':_0x4ea892[_0x428a('0x45')]['id']}})['then'](handleEntityNotFound(_0x371381,null))[_0x428a('0x21')](function(_0x225ed4){if(_0x225ed4){_0x1e8a03=_0x225ed4;_0x18b018[_0x428a('0x2e')]=_['keys'](db['Condition'][_0x428a('0x2a')]);_0x18b018[_0x428a('0x30')]=_[_0x428a('0x31')](_0x4ea892[_0x428a('0x30')]);_0x18b018[_0x428a('0x39')]=_[_0x428a('0x46')](_0x18b018[_0x428a('0x2e')],_0x18b018[_0x428a('0x30')]);_0x4de207[_0x428a('0x33')]=_[_0x428a('0x46')](_0x18b018[_0x428a('0x2e')],qs[_0x428a('0x32')](_0x4ea892[_0x428a('0x30')]['fields']));_0x4de207[_0x428a('0x33')]=_0x4de207[_0x428a('0x33')]['length']?_0x4de207['attributes']:_0x18b018[_0x428a('0x2e')];_0x4de207[_0x428a('0x36')]=qs[_0x428a('0x37')](_0x4ea892[_0x428a('0x30')][_0x428a('0x37')]);_0x4de207[_0x428a('0x38')]=qs[_0x428a('0x39')](_[_0x428a('0x3a')](_0x4ea892[_0x428a('0x30')],_0x18b018[_0x428a('0x39')]));if(_0x4ea892[_0x428a('0x30')][_0x428a('0x3b')]){_0x4de207[_0x428a('0x38')]=_[_0x428a('0x3c')](_0x4de207['where'],{'$or':_[_0x428a('0x2f')](_0x4de207['attributes'],function(_0x228d42){var _0x3d0560={};_0x3d0560[_0x228d42]={'$like':'%'+_0x4ea892[_0x428a('0x30')][_0x428a('0x3b')]+'%'};return _0x3d0560;})});}_0x4de207=_['merge']({},_0x4de207,_0x4ea892[_0x428a('0x3d')]);return _0x1e8a03[_0x428a('0x57')](_0x4de207);}})[_0x428a('0x21')](function(_0x5b2dd2){if(_0x5b2dd2){_0x5a0427=_0x5b2dd2[_0x428a('0x34')];if(!_0x4ea892[_0x428a('0x30')][_0x428a('0x35')](_0x428a('0x56'))){_0x4de207[_0x428a('0x1a')]=qs['limit'](_0x4ea892[_0x428a('0x30')][_0x428a('0x1a')]);_0x4de207[_0x428a('0x18')]=qs[_0x428a('0x18')](_0x4ea892[_0x428a('0x30')][_0x428a('0x18')]);}return _0x1e8a03[_0x428a('0x57')](_0x4de207);}})['then'](function(_0x445310){if(_0x445310){return _0x445310?{'count':_0x5a0427,'rows':_0x445310}:null;}})[_0x428a('0x21')](respondWithResult(_0x371381,null))[_0x428a('0x43')](handleError(_0x371381,null));};exports[_0x428a('0x58')]=function(_0x1c5280,_0x4300b9,_0x1a9ae0){if(_0x1c5280[_0x428a('0x49')]['id']){delete _0x1c5280['body']['id'];}return db[_0x428a('0x3e')][_0x428a('0x47')]({'where':{'id':_0x1c5280[_0x428a('0x45')]['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x4300b9,null))[_0x428a('0x21')](function(_0x5aa452){if(_0x5aa452){_0x1c5280['body'][_0x428a('0x59')]=_0x5aa452['id'];return db[_0x428a('0x5a')]['create'](_0x1c5280['body']);}})['then'](respondWithResult(_0x4300b9,null))[_0x428a('0x43')](handleError(_0x4300b9,null));};exports['getActions']=function(_0x5be0d9,_0x5e1c4e,_0x4873ff){var _0x71f66e={};var _0x17cce4={};var _0x4bdcc9;var _0x299556;return db['Trigger'][_0x428a('0x55')]({'where':{'id':_0x5be0d9[_0x428a('0x45')]['id']}})[_0x428a('0x21')](handleEntityNotFound(_0x5e1c4e,null))[_0x428a('0x21')](function(_0xca90b0){if(_0xca90b0){_0x4bdcc9=_0xca90b0;_0x17cce4['model']=_[_0x428a('0x31')](db[_0x428a('0x5a')][_0x428a('0x2a')]);_0x17cce4[_0x428a('0x30')]=_[_0x428a('0x31')](_0x5be0d9[_0x428a('0x30')]);_0x17cce4['filters']=_[_0x428a('0x46')](_0x17cce4['model'],_0x17cce4[_0x428a('0x30')]);_0x71f66e[_0x428a('0x33')]=_[_0x428a('0x46')](_0x17cce4[_0x428a('0x2e')],qs[_0x428a('0x32')](_0x5be0d9['query'][_0x428a('0x32')]));_0x71f66e['attributes']=_0x71f66e[_0x428a('0x33')][_0x428a('0x34')]?_0x71f66e[_0x428a('0x33')]:_0x17cce4['model'];_0x71f66e[_0x428a('0x36')]=qs[_0x428a('0x37')](_0x5be0d9['query'][_0x428a('0x37')]);_0x71f66e['where']=qs[_0x428a('0x39')](_[_0x428a('0x3a')](_0x5be0d9[_0x428a('0x30')],_0x17cce4['filters']));if(_0x5be0d9[_0x428a('0x30')][_0x428a('0x3b')]){_0x71f66e[_0x428a('0x38')]=_[_0x428a('0x3c')](_0x71f66e[_0x428a('0x38')],{'$or':_[_0x428a('0x2f')](_0x71f66e[_0x428a('0x33')],function(_0x2c9f59){var _0x958c8={};_0x958c8[_0x2c9f59]={'$like':'%'+_0x5be0d9[_0x428a('0x30')][_0x428a('0x3b')]+'%'};return _0x958c8;})});}_0x71f66e=_['merge']({},_0x71f66e,_0x5be0d9[_0x428a('0x3d')]);return _0x4bdcc9[_0x428a('0x5b')](_0x71f66e);}})['then'](function(_0x4e86ff){if(_0x4e86ff){_0x299556=_0x4e86ff[_0x428a('0x34')];if(!_0x5be0d9['query']['hasOwnProperty'](_0x428a('0x56'))){_0x71f66e[_0x428a('0x1a')]=qs[_0x428a('0x1a')](_0x5be0d9[_0x428a('0x30')][_0x428a('0x1a')]);_0x71f66e['offset']=qs[_0x428a('0x18')](_0x5be0d9[_0x428a('0x30')][_0x428a('0x18')]);}return _0x4bdcc9[_0x428a('0x5b')](_0x71f66e);}})[_0x428a('0x21')](function(_0x338645){if(_0x338645){return _0x338645?{'count':_0x299556,'rows':_0x338645}:null;}})[_0x428a('0x21')](respondWithResult(_0x5e1c4e,null))[_0x428a('0x43')](handleError(_0x5e1c4e,null));};
\ No newline at end of file
+var _0x91af=['findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','map','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','length','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','addAllCondition','TriggerAllId','Condition','create','getAllConditions','nolimit','getAnyConditions','addAction','TriggerId','Action','getActions'];(function(_0x2fadb8,_0x4e7e6e){var _0x2c90bd=function(_0x453f05){while(--_0x453f05){_0x2fadb8['push'](_0x2fadb8['shift']());}};_0x2c90bd(++_0x4e7e6e);}(_0x91af,0x189));var _0xf91a=function(_0x36760a,_0x580db6){_0x36760a=_0x36760a-0x0;var _0x4f034c=_0x91af[_0x36760a];return _0x4f034c;};'use strict';var emlformat=require(_0xf91a('0x0'));var rimraf=require(_0xf91a('0x1'));var zipdir=require(_0xf91a('0x2'));var jsonpatch=require(_0xf91a('0x3'));var rp=require(_0xf91a('0x4'));var moment=require(_0xf91a('0x5'));var BPromise=require(_0xf91a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf91a('0x7'));var sox=require(_0xf91a('0x8'));var csv=require(_0xf91a('0x9'));var ejs=require(_0xf91a('0xa'));var fs=require('fs');var fs_extra=require(_0xf91a('0xb'));var _=require(_0xf91a('0xc'));var squel=require(_0xf91a('0xd'));var crypto=require('crypto');var jsforce=require(_0xf91a('0xe'));var deskjs=require(_0xf91a('0xf'));var toCsv=require(_0xf91a('0x9'));var querystring=require('querystring');var Papa=require(_0xf91a('0x10'));var Redis=require(_0xf91a('0x11'));var authService=require(_0xf91a('0x12'));var qs=require(_0xf91a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf91a('0x14'));var logger=require(_0xf91a('0x15'))(_0xf91a('0x16'));var utils=require('../../config/utils');var config=require(_0xf91a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf91a('0x18'))['db'];function respondWithStatusCode(_0x166051,_0x393f81){_0x393f81=_0x393f81||0xcc;return function(_0xacdf94){if(_0xacdf94){return _0x166051[_0xf91a('0x19')](_0x393f81);}return _0x166051[_0xf91a('0x1a')](_0x393f81)[_0xf91a('0x1b')]();};}function respondWithResult(_0x278817,_0x1a8bcc){_0x1a8bcc=_0x1a8bcc||0xc8;return function(_0x4168a4){if(_0x4168a4){return _0x278817[_0xf91a('0x1a')](_0x1a8bcc)[_0xf91a('0x1c')](_0x4168a4);}};}function respondWithFilteredResult(_0x1f0156,_0x5728a6){return function(_0x38be65){if(_0x38be65){var _0x1f2cde=typeof _0x5728a6[_0xf91a('0x1d')]===_0xf91a('0x1e')&&typeof _0x5728a6[_0xf91a('0x1f')]===_0xf91a('0x1e');var _0x46087c=_0x38be65['count'];var _0x41e659=_0x1f2cde?0x0:_0x5728a6[_0xf91a('0x1d')];var _0x5c1622=_0x1f2cde?_0x38be65['count']:_0x5728a6[_0xf91a('0x1d')]+_0x5728a6[_0xf91a('0x1f')];var _0x4a83ed;if(_0x5c1622>=_0x46087c){_0x5c1622=_0x46087c;_0x4a83ed=0xc8;}else{_0x4a83ed=0xce;}_0x1f0156[_0xf91a('0x1a')](_0x4a83ed);return _0x1f0156[_0xf91a('0x20')](_0xf91a('0x21'),_0x41e659+'-'+_0x5c1622+'/'+_0x46087c)[_0xf91a('0x1c')](_0x38be65);}return null;};}function patchUpdates(_0x56e531){return function(_0x1ac9e7){try{jsonpatch[_0xf91a('0x22')](_0x1ac9e7,_0x56e531,!![]);}catch(_0x2fcb33){return BPromise[_0xf91a('0x23')](_0x2fcb33);}return _0x1ac9e7[_0xf91a('0x24')]();};}function saveUpdates(_0x2926b3,_0x58f836){return function(_0x4a38fa){if(_0x4a38fa){return _0x4a38fa['update'](_0x2926b3)[_0xf91a('0x25')](function(_0x346d33){return _0x346d33;});}return null;};}function removeEntity(_0x133e45,_0x50aa88){return function(_0x2389f1){if(_0x2389f1){return _0x2389f1[_0xf91a('0x26')]()[_0xf91a('0x25')](function(){var _0x2d0e20=_0x2389f1[_0xf91a('0x27')]({'plain':!![]});var _0x18a0bc='Triggers';return db[_0xf91a('0x28')][_0xf91a('0x26')]({'where':{'type':_0x18a0bc,'resourceId':_0x2d0e20['id']}})['then'](function(){return _0x2389f1;});})[_0xf91a('0x25')](function(){_0x133e45[_0xf91a('0x1a')](0xcc)[_0xf91a('0x1b')]();});}};}function handleEntityNotFound(_0x4ca540,_0x5cd9e7){return function(_0x2219ea){if(!_0x2219ea){_0x4ca540[_0xf91a('0x19')](0x194);}return _0x2219ea;};}function handleError(_0x3ef3ea,_0x25f9b7){_0x25f9b7=_0x25f9b7||0x1f4;return function(_0x51786f){logger[_0xf91a('0x29')](_0x51786f[_0xf91a('0x2a')]);if(_0x51786f[_0xf91a('0x2b')]){delete _0x51786f['name'];}_0x3ef3ea[_0xf91a('0x1a')](_0x25f9b7)[_0xf91a('0x2c')](_0x51786f);};}exports['index']=function(_0x198e47,_0x2d2709){var _0x567fcd={},_0x9ca69={},_0x211a94={'count':0x0,'rows':[]};var _0x496bce=_[_0xf91a('0x2d')](db[_0xf91a('0x2e')][_0xf91a('0x2f')],function(_0x13608d){return{'name':_0x13608d[_0xf91a('0x30')],'type':_0x13608d[_0xf91a('0x31')][_0xf91a('0x32')]};});_0x9ca69[_0xf91a('0x33')]=_[_0xf91a('0x2d')](_0x496bce,_0xf91a('0x2b'));_0x9ca69[_0xf91a('0x34')]=_[_0xf91a('0x35')](_0x198e47[_0xf91a('0x34')]);_0x9ca69[_0xf91a('0x36')]=_[_0xf91a('0x37')](_0x9ca69['model'],_0x9ca69[_0xf91a('0x34')]);_0x567fcd[_0xf91a('0x38')]=_[_0xf91a('0x37')](_0x9ca69['model'],qs['fields'](_0x198e47['query'][_0xf91a('0x39')]));_0x567fcd['attributes']=_0x567fcd[_0xf91a('0x38')]['length']?_0x567fcd[_0xf91a('0x38')]:_0x9ca69['model'];if(!_0x198e47['query'][_0xf91a('0x3a')]('nolimit')){_0x567fcd['limit']=qs[_0xf91a('0x1f')](_0x198e47[_0xf91a('0x34')][_0xf91a('0x1f')]);_0x567fcd[_0xf91a('0x1d')]=qs['offset'](_0x198e47[_0xf91a('0x34')]['offset']);}_0x567fcd[_0xf91a('0x3b')]=qs['sort'](_0x198e47[_0xf91a('0x34')][_0xf91a('0x3c')]);_0x567fcd[_0xf91a('0x3d')]=qs[_0xf91a('0x36')](_[_0xf91a('0x3e')](_0x198e47[_0xf91a('0x34')],_0x9ca69[_0xf91a('0x36')]),_0x496bce);if(_0x198e47[_0xf91a('0x34')][_0xf91a('0x3f')]){_0x567fcd['where']=_[_0xf91a('0x40')](_0x567fcd[_0xf91a('0x3d')],{'$or':_[_0xf91a('0x2d')](_0x496bce,function(_0x32fa07){if(_0x32fa07[_0xf91a('0x31')]!==_0xf91a('0x41')){var _0x582e8a={};_0x582e8a[_0x32fa07[_0xf91a('0x2b')]]={'$like':'%'+_0x198e47[_0xf91a('0x34')][_0xf91a('0x3f')]+'%'};return _0x582e8a;}})});}_0x567fcd=_[_0xf91a('0x40')]({},_0x567fcd,_0x198e47[_0xf91a('0x42')]);var _0x55188a={'where':_0x567fcd[_0xf91a('0x3d')]};return db[_0xf91a('0x2e')][_0xf91a('0x43')](_0x55188a)[_0xf91a('0x25')](function(_0x387927){_0x211a94[_0xf91a('0x43')]=_0x387927;if(_0x198e47['query'][_0xf91a('0x44')]){_0x567fcd[_0xf91a('0x45')]=[{'all':!![]}];}return db['Trigger'][_0xf91a('0x46')](_0x567fcd);})['then'](function(_0x4870b7){_0x211a94[_0xf91a('0x47')]=_0x4870b7;return _0x211a94;})[_0xf91a('0x25')](respondWithFilteredResult(_0x2d2709,_0x567fcd))[_0xf91a('0x48')](handleError(_0x2d2709,null));};exports[_0xf91a('0x49')]=function(_0x4d1e44,_0x2cf0d3){var _0x5b6dba={'raw':![],'where':{'id':_0x4d1e44[_0xf91a('0x4a')]['id']}},_0x26ee24={};_0x26ee24[_0xf91a('0x33')]=_[_0xf91a('0x35')](db[_0xf91a('0x2e')][_0xf91a('0x2f')]);_0x26ee24[_0xf91a('0x34')]=_[_0xf91a('0x35')](_0x4d1e44['query']);_0x26ee24[_0xf91a('0x36')]=_[_0xf91a('0x37')](_0x26ee24[_0xf91a('0x33')],_0x26ee24[_0xf91a('0x34')]);_0x5b6dba['attributes']=_[_0xf91a('0x37')](_0x26ee24[_0xf91a('0x33')],qs[_0xf91a('0x39')](_0x4d1e44['query']['fields']));_0x5b6dba[_0xf91a('0x38')]=_0x5b6dba['attributes'][_0xf91a('0x4b')]?_0x5b6dba[_0xf91a('0x38')]:_0x26ee24[_0xf91a('0x33')];if(_0x4d1e44[_0xf91a('0x34')][_0xf91a('0x44')]){_0x5b6dba[_0xf91a('0x45')]=[{'all':!![]}];}_0x5b6dba=_[_0xf91a('0x40')]({},_0x5b6dba,_0x4d1e44[_0xf91a('0x42')]);return db[_0xf91a('0x2e')][_0xf91a('0x4c')](_0x5b6dba)['then'](handleEntityNotFound(_0x2cf0d3,null))[_0xf91a('0x25')](respondWithResult(_0x2cf0d3,null))[_0xf91a('0x48')](handleError(_0x2cf0d3,null));};exports['create']=function(_0x4cc5de,_0x505580){return db[_0xf91a('0x2e')]['create'](_0x4cc5de['body'],{})[_0xf91a('0x25')](function(_0x59815){var _0x454cb2=_0x4cc5de[_0xf91a('0x4d')][_0xf91a('0x27')]({'plain':!![]});if(!_0x454cb2)throw new Error(_0xf91a('0x4e'));if(_0x454cb2[_0xf91a('0x4f')]===_0xf91a('0x4d')){var _0x55ad21=_0x59815[_0xf91a('0x27')]({'plain':!![]});var _0x435d40='Triggers';return db[_0xf91a('0x50')][_0xf91a('0x4c')]({'where':{'name':_0x435d40,'userProfileId':_0x454cb2[_0xf91a('0x51')]},'raw':!![]})[_0xf91a('0x25')](function(_0x5115d2){if(_0x5115d2&&_0x5115d2[_0xf91a('0x52')]===0x0){return db[_0xf91a('0x28')]['create']({'name':_0x55ad21[_0xf91a('0x2b')],'resourceId':_0x55ad21['id'],'type':_0x5115d2[_0xf91a('0x2b')],'sectionId':_0x5115d2['id']},{})[_0xf91a('0x25')](function(){return _0x59815;});}else{return _0x59815;}})[_0xf91a('0x48')](function(_0x42e04b){logger['error'](_0xf91a('0x53'),_0x42e04b);throw _0x42e04b;});}return _0x59815;})[_0xf91a('0x25')](respondWithResult(_0x505580,0xc9))[_0xf91a('0x48')](handleError(_0x505580,null));};exports[_0xf91a('0x54')]=function(_0x14de4e,_0x52121c){if(_0x14de4e[_0xf91a('0x55')]['id']){delete _0x14de4e['body']['id'];}return db[_0xf91a('0x2e')][_0xf91a('0x4c')]({'where':{'id':_0x14de4e['params']['id']}})['then'](handleEntityNotFound(_0x52121c,null))[_0xf91a('0x25')](saveUpdates(_0x14de4e['body'],null))[_0xf91a('0x25')](respondWithResult(_0x52121c,null))[_0xf91a('0x48')](handleError(_0x52121c,null));};exports[_0xf91a('0x26')]=function(_0x5098bf,_0x5d6423){return db[_0xf91a('0x2e')][_0xf91a('0x4c')]({'where':{'id':_0x5098bf[_0xf91a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5d6423,null))[_0xf91a('0x25')](removeEntity(_0x5d6423,null))[_0xf91a('0x48')](handleError(_0x5d6423,null));};exports[_0xf91a('0x56')]=function(_0x29a431,_0x44fb7d,_0xa58d21){if(_0x29a431[_0xf91a('0x55')]['id']){delete _0x29a431[_0xf91a('0x55')]['id'];}return db['Trigger'][_0xf91a('0x4c')]({'where':{'id':_0x29a431[_0xf91a('0x4a')]['id']}})[_0xf91a('0x25')](handleEntityNotFound(_0x44fb7d,null))[_0xf91a('0x25')](function(_0x52eba1){if(_0x52eba1){_0x29a431[_0xf91a('0x55')][_0xf91a('0x57')]=_0x52eba1['id'];return db[_0xf91a('0x58')]['create'](_0x29a431[_0xf91a('0x55')]);}})[_0xf91a('0x25')](respondWithResult(_0x44fb7d,null))[_0xf91a('0x48')](handleError(_0x44fb7d,null));};exports['addAnyCondition']=function(_0x1d376e,_0x543d77,_0x3818b6){if(_0x1d376e[_0xf91a('0x55')]['id']){delete _0x1d376e[_0xf91a('0x55')]['id'];}return db[_0xf91a('0x2e')][_0xf91a('0x4c')]({'where':{'id':_0x1d376e[_0xf91a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x543d77,null))[_0xf91a('0x25')](function(_0xc5a5c8){if(_0xc5a5c8){_0x1d376e[_0xf91a('0x55')]['TriggerAnyId']=_0xc5a5c8['id'];return db[_0xf91a('0x58')][_0xf91a('0x59')](_0x1d376e[_0xf91a('0x55')]);}})[_0xf91a('0x25')](respondWithResult(_0x543d77,null))[_0xf91a('0x48')](handleError(_0x543d77,null));};exports[_0xf91a('0x5a')]=function(_0x49c01d,_0x4e2c90,_0xa1e800){var _0x2913f1={};var _0x5499b6={};var _0x498f08;var _0x13a15a;return db[_0xf91a('0x2e')]['findOne']({'where':{'id':_0x49c01d[_0xf91a('0x4a')]['id']}})[_0xf91a('0x25')](handleEntityNotFound(_0x4e2c90,null))[_0xf91a('0x25')](function(_0x3101ab){if(_0x3101ab){_0x498f08=_0x3101ab;_0x5499b6[_0xf91a('0x33')]=_['keys'](db[_0xf91a('0x58')][_0xf91a('0x2f')]);_0x5499b6[_0xf91a('0x34')]=_[_0xf91a('0x35')](_0x49c01d[_0xf91a('0x34')]);_0x5499b6[_0xf91a('0x36')]=_[_0xf91a('0x37')](_0x5499b6[_0xf91a('0x33')],_0x5499b6[_0xf91a('0x34')]);_0x2913f1[_0xf91a('0x38')]=_['intersection'](_0x5499b6['model'],qs['fields'](_0x49c01d['query'][_0xf91a('0x39')]));_0x2913f1[_0xf91a('0x38')]=_0x2913f1[_0xf91a('0x38')][_0xf91a('0x4b')]?_0x2913f1[_0xf91a('0x38')]:_0x5499b6[_0xf91a('0x33')];_0x2913f1['order']=qs[_0xf91a('0x3c')](_0x49c01d[_0xf91a('0x34')][_0xf91a('0x3c')]);_0x2913f1[_0xf91a('0x3d')]=qs[_0xf91a('0x36')](_[_0xf91a('0x3e')](_0x49c01d['query'],_0x5499b6[_0xf91a('0x36')]));if(_0x49c01d['query'][_0xf91a('0x3f')]){_0x2913f1[_0xf91a('0x3d')]=_['merge'](_0x2913f1[_0xf91a('0x3d')],{'$or':_['map'](_0x2913f1[_0xf91a('0x38')],function(_0x77d6a0){var _0x4de3fb={};_0x4de3fb[_0x77d6a0]={'$like':'%'+_0x49c01d['query'][_0xf91a('0x3f')]+'%'};return _0x4de3fb;})});}_0x2913f1=_[_0xf91a('0x40')]({},_0x2913f1,_0x49c01d[_0xf91a('0x42')]);return _0x498f08[_0xf91a('0x5a')](_0x2913f1);}})[_0xf91a('0x25')](function(_0x3362f7){if(_0x3362f7){_0x13a15a=_0x3362f7[_0xf91a('0x4b')];if(!_0x49c01d['query'][_0xf91a('0x3a')](_0xf91a('0x5b'))){_0x2913f1['limit']=qs[_0xf91a('0x1f')](_0x49c01d[_0xf91a('0x34')]['limit']);_0x2913f1[_0xf91a('0x1d')]=qs[_0xf91a('0x1d')](_0x49c01d[_0xf91a('0x34')]['offset']);}return _0x498f08[_0xf91a('0x5a')](_0x2913f1);}})[_0xf91a('0x25')](function(_0x2e2658){if(_0x2e2658){return _0x2e2658?{'count':_0x13a15a,'rows':_0x2e2658}:null;}})[_0xf91a('0x25')](respondWithResult(_0x4e2c90,null))[_0xf91a('0x48')](handleError(_0x4e2c90,null));};exports[_0xf91a('0x5c')]=function(_0x3ae2b0,_0x20707f,_0x1d6d79){var _0x398fc6={};var _0x1906eb={};var _0x489b15;var _0x30311b;return db[_0xf91a('0x2e')]['findOne']({'where':{'id':_0x3ae2b0['params']['id']}})[_0xf91a('0x25')](handleEntityNotFound(_0x20707f,null))[_0xf91a('0x25')](function(_0x515f28){if(_0x515f28){_0x489b15=_0x515f28;_0x1906eb[_0xf91a('0x33')]=_[_0xf91a('0x35')](db[_0xf91a('0x58')]['rawAttributes']);_0x1906eb['query']=_[_0xf91a('0x35')](_0x3ae2b0['query']);_0x1906eb[_0xf91a('0x36')]=_['intersection'](_0x1906eb[_0xf91a('0x33')],_0x1906eb[_0xf91a('0x34')]);_0x398fc6[_0xf91a('0x38')]=_[_0xf91a('0x37')](_0x1906eb[_0xf91a('0x33')],qs[_0xf91a('0x39')](_0x3ae2b0[_0xf91a('0x34')]['fields']));_0x398fc6[_0xf91a('0x38')]=_0x398fc6[_0xf91a('0x38')]['length']?_0x398fc6[_0xf91a('0x38')]:_0x1906eb['model'];_0x398fc6[_0xf91a('0x3b')]=qs['sort'](_0x3ae2b0['query'][_0xf91a('0x3c')]);_0x398fc6[_0xf91a('0x3d')]=qs[_0xf91a('0x36')](_['pick'](_0x3ae2b0['query'],_0x1906eb[_0xf91a('0x36')]));if(_0x3ae2b0[_0xf91a('0x34')][_0xf91a('0x3f')]){_0x398fc6['where']=_[_0xf91a('0x40')](_0x398fc6['where'],{'$or':_[_0xf91a('0x2d')](_0x398fc6[_0xf91a('0x38')],function(_0x56ba96){var _0x10fad8={};_0x10fad8[_0x56ba96]={'$like':'%'+_0x3ae2b0['query'][_0xf91a('0x3f')]+'%'};return _0x10fad8;})});}_0x398fc6=_[_0xf91a('0x40')]({},_0x398fc6,_0x3ae2b0[_0xf91a('0x42')]);return _0x489b15[_0xf91a('0x5c')](_0x398fc6);}})['then'](function(_0x5142ef){if(_0x5142ef){_0x30311b=_0x5142ef[_0xf91a('0x4b')];if(!_0x3ae2b0[_0xf91a('0x34')][_0xf91a('0x3a')]('nolimit')){_0x398fc6[_0xf91a('0x1f')]=qs[_0xf91a('0x1f')](_0x3ae2b0[_0xf91a('0x34')][_0xf91a('0x1f')]);_0x398fc6[_0xf91a('0x1d')]=qs['offset'](_0x3ae2b0[_0xf91a('0x34')][_0xf91a('0x1d')]);}return _0x489b15['getAnyConditions'](_0x398fc6);}})[_0xf91a('0x25')](function(_0x4e856a){if(_0x4e856a){return _0x4e856a?{'count':_0x30311b,'rows':_0x4e856a}:null;}})['then'](respondWithResult(_0x20707f,null))['catch'](handleError(_0x20707f,null));};exports[_0xf91a('0x5d')]=function(_0x6b6691,_0x5231a5,_0x161187){if(_0x6b6691[_0xf91a('0x55')]['id']){delete _0x6b6691['body']['id'];}return db[_0xf91a('0x2e')]['find']({'where':{'id':_0x6b6691['params']['id']}})[_0xf91a('0x25')](handleEntityNotFound(_0x5231a5,null))[_0xf91a('0x25')](function(_0x26cc3f){if(_0x26cc3f){_0x6b6691[_0xf91a('0x55')][_0xf91a('0x5e')]=_0x26cc3f['id'];return db[_0xf91a('0x5f')][_0xf91a('0x59')](_0x6b6691[_0xf91a('0x55')]);}})[_0xf91a('0x25')](respondWithResult(_0x5231a5,null))[_0xf91a('0x48')](handleError(_0x5231a5,null));};exports[_0xf91a('0x60')]=function(_0x5d4de4,_0x4d3801,_0x7eb677){var _0x5d549b={};var _0x3da1c4={};var _0x5e8973;var _0xc15603;return db['Trigger'][_0xf91a('0x61')]({'where':{'id':_0x5d4de4[_0xf91a('0x4a')]['id']}})[_0xf91a('0x25')](handleEntityNotFound(_0x4d3801,null))[_0xf91a('0x25')](function(_0x5a0780){if(_0x5a0780){_0x5e8973=_0x5a0780;_0x3da1c4['model']=_['keys'](db[_0xf91a('0x5f')][_0xf91a('0x2f')]);_0x3da1c4[_0xf91a('0x34')]=_[_0xf91a('0x35')](_0x5d4de4[_0xf91a('0x34')]);_0x3da1c4[_0xf91a('0x36')]=_[_0xf91a('0x37')](_0x3da1c4[_0xf91a('0x33')],_0x3da1c4['query']);_0x5d549b[_0xf91a('0x38')]=_[_0xf91a('0x37')](_0x3da1c4[_0xf91a('0x33')],qs['fields'](_0x5d4de4[_0xf91a('0x34')][_0xf91a('0x39')]));_0x5d549b[_0xf91a('0x38')]=_0x5d549b['attributes'][_0xf91a('0x4b')]?_0x5d549b[_0xf91a('0x38')]:_0x3da1c4[_0xf91a('0x33')];_0x5d549b[_0xf91a('0x3b')]=qs[_0xf91a('0x3c')](_0x5d4de4[_0xf91a('0x34')][_0xf91a('0x3c')]);_0x5d549b[_0xf91a('0x3d')]=qs[_0xf91a('0x36')](_[_0xf91a('0x3e')](_0x5d4de4[_0xf91a('0x34')],_0x3da1c4[_0xf91a('0x36')]));if(_0x5d4de4[_0xf91a('0x34')]['filter']){_0x5d549b[_0xf91a('0x3d')]=_[_0xf91a('0x40')](_0x5d549b[_0xf91a('0x3d')],{'$or':_[_0xf91a('0x2d')](_0x5d549b[_0xf91a('0x38')],function(_0xf2bdf0){var _0x495120={};_0x495120[_0xf2bdf0]={'$like':'%'+_0x5d4de4[_0xf91a('0x34')][_0xf91a('0x3f')]+'%'};return _0x495120;})});}_0x5d549b=_[_0xf91a('0x40')]({},_0x5d549b,_0x5d4de4[_0xf91a('0x42')]);return _0x5e8973[_0xf91a('0x60')](_0x5d549b);}})[_0xf91a('0x25')](function(_0x14c765){if(_0x14c765){_0xc15603=_0x14c765[_0xf91a('0x4b')];if(!_0x5d4de4[_0xf91a('0x34')]['hasOwnProperty'](_0xf91a('0x5b'))){_0x5d549b[_0xf91a('0x1f')]=qs[_0xf91a('0x1f')](_0x5d4de4[_0xf91a('0x34')]['limit']);_0x5d549b['offset']=qs[_0xf91a('0x1d')](_0x5d4de4['query'][_0xf91a('0x1d')]);}return _0x5e8973['getActions'](_0x5d549b);}})[_0xf91a('0x25')](function(_0x1b9f69){if(_0x1b9f69){return _0x1b9f69?{'count':_0xc15603,'rows':_0x1b9f69}:null;}})[_0xf91a('0x25')](respondWithResult(_0x4d3801,null))[_0xf91a('0x48')](handleError(_0x4d3801,null));};
\ No newline at end of file
index a8a01a3..a8f4ef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2494=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','./trigger.attributes','define','tools_triggers'];(function(_0x3b1ac0,_0x3f626c){var _0x3a8c5b=function(_0x110468){while(--_0x110468){_0x3b1ac0['push'](_0x3b1ac0['shift']());}};_0x3a8c5b(++_0x3f626c);}(_0x2494,0x82));var _0x4249=function(_0x37b54d,_0x235164){_0x37b54d=_0x37b54d-0x0;var _0xb09603=_0x2494[_0x37b54d];return _0xb09603;};'use strict';var _=require(_0x4249('0x0'));var util=require('util');var logger=require(_0x4249('0x1'))(_0x4249('0x2'));var moment=require(_0x4249('0x3'));var BPromise=require(_0x4249('0x4'));var rp=require(_0x4249('0x5'));var fs=require('fs');var path=require(_0x4249('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4249('0x7'));module['exports']=function(_0x3c2d8d,_0x1d4ca8){return _0x3c2d8d[_0x4249('0x8')]('Trigger',attributes,{'tableName':_0x4249('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c6d=['rimraf','../../config/environment','./trigger.attributes','define','Trigger','tools_triggers','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x246bd1,_0x184711){var _0x348a6c=function(_0x47d3e4){while(--_0x47d3e4){_0x246bd1['push'](_0x246bd1['shift']());}};_0x348a6c(++_0x184711);}(_0x3c6d,0x199));var _0xd3c6=function(_0x5079d7,_0x95668d){_0x5079d7=_0x5079d7-0x0;var _0x459c5a=_0x3c6d[_0x5079d7];return _0x459c5a;};'use strict';var _=require(_0xd3c6('0x0'));var util=require(_0xd3c6('0x1'));var logger=require(_0xd3c6('0x2'))(_0xd3c6('0x3'));var moment=require('moment');var BPromise=require(_0xd3c6('0x4'));var rp=require(_0xd3c6('0x5'));var fs=require('fs');var path=require(_0xd3c6('0x6'));var rimraf=require(_0xd3c6('0x7'));var config=require(_0xd3c6('0x8'));var attributes=require(_0xd3c6('0x9'));module['exports']=function(_0x11fb61,_0xe7c405){return _0x11fb61[_0xd3c6('0xa')](_0xd3c6('0xb'),attributes,{'tableName':_0xd3c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fae91eb..2b01a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec4a=['bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetTrigger','findAll','options','where','limit','include','map','model','attributes','then','debug','Trigger','find','raw','lodash','moment'];(function(_0x2ce6d5,_0x333e0c){var _0x32d272=function(_0x399f0b){while(--_0x399f0b){_0x2ce6d5['push'](_0x2ce6d5['shift']());}};_0x32d272(++_0x333e0c);}(_0xec4a,0x1ab));var _0xaec4=function(_0xed4dd1,_0x4279d0){_0xed4dd1=_0xed4dd1-0x0;var _0x32dbbd=_0xec4a[_0xed4dd1];return _0x32dbbd;};'use strict';var _=require(_0xaec4('0x0'));var util=require('util');var moment=require(_0xaec4('0x1'));var BPromise=require(_0xaec4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaec4('0x3'))['db'];var utils=require(_0xaec4('0x4'));var logger=require('../../config/logger')(_0xaec4('0x5'));var config=require(_0xaec4('0x6'));var jayson=require(_0xaec4('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4a8e31,_0x121819,_0x186af7){return new BPromise(function(_0x4b0465,_0x3c54dd){return client[_0xaec4('0x8')](_0x4a8e31,_0x186af7)['then'](function(_0x280fd2){logger['info'](_0xaec4('0x9'),_0x121819,_0xaec4('0xa'));logger['debug'](_0xaec4('0xb'),_0x121819,_0xaec4('0xa'),JSON[_0xaec4('0xc')](_0x280fd2));if(_0x280fd2[_0xaec4('0xd')]){if(_0x280fd2[_0xaec4('0xd')][_0xaec4('0xe')]===0x1f4){logger[_0xaec4('0xd')](_0xaec4('0x9'),_0x121819,_0x280fd2['error'][_0xaec4('0xf')]);return _0x3c54dd(_0x280fd2[_0xaec4('0xd')][_0xaec4('0xf')]);}logger[_0xaec4('0xd')](_0xaec4('0x9'),_0x121819,_0x280fd2[_0xaec4('0xd')]['message']);return _0x4b0465(_0x280fd2['error'][_0xaec4('0xf')]);}else{logger[_0xaec4('0x10')](_0xaec4('0x9'),_0x121819,_0xaec4('0xa'));_0x4b0465(_0x280fd2[_0xaec4('0x11')]['message']);}})[_0xaec4('0x12')](function(_0x27b24c){logger[_0xaec4('0xd')](_0xaec4('0x9'),_0x121819,_0x27b24c);_0x3c54dd(_0x27b24c);});});}exports[_0xaec4('0x13')]=function(_0x12e65f){var _0x41272d=this;return new Promise(function(_0x57400b,_0x2c73b4){return db['Trigger'][_0xaec4('0x14')]({'raw':_0x12e65f[_0xaec4('0x15')]?_0x12e65f[_0xaec4('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x12e65f[_0xaec4('0x15')]?_0x12e65f['options'][_0xaec4('0x16')]||null:null,'attributes':_0x12e65f[_0xaec4('0x15')]?_0x12e65f[_0xaec4('0x15')]['attributes']||null:null,'limit':_0x12e65f['options']?_0x12e65f[_0xaec4('0x15')][_0xaec4('0x17')]||null:null,'include':_0x12e65f[_0xaec4('0x15')]?_0x12e65f['options'][_0xaec4('0x18')]?_[_0xaec4('0x19')](_0x12e65f[_0xaec4('0x15')][_0xaec4('0x18')],function(_0x3a3a82){return{'model':db[_0x3a3a82[_0xaec4('0x1a')]],'as':_0x3a3a82['as'],'attributes':_0x3a3a82[_0xaec4('0x1b')],'include':_0x3a3a82[_0xaec4('0x18')]?_[_0xaec4('0x19')](_0x3a3a82[_0xaec4('0x18')],function(_0x19e240){return{'model':db[_0x19e240[_0xaec4('0x1a')]],'as':_0x19e240['as'],'attributes':_0x19e240['attributes'],'include':_0x19e240[_0xaec4('0x18')]?_['map'](_0x19e240['include'],function(_0x2226c7){return{'model':db[_0x2226c7[_0xaec4('0x1a')]],'as':_0x2226c7['as'],'attributes':_0x2226c7[_0xaec4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xaec4('0x1c')](function(_0x323c9e){logger['info']('GetTrigger',_0x12e65f);logger[_0xaec4('0x1d')](_0xaec4('0x13'),_0x12e65f,JSON[_0xaec4('0xc')](_0x323c9e));_0x57400b(_0x323c9e);})[_0xaec4('0x12')](function(_0x4d468f){logger['error'](_0xaec4('0x13'),_0x4d468f[_0xaec4('0xf')],_0x12e65f);_0x2c73b4(_0x41272d['error'](0x1f4,_0x4d468f[_0xaec4('0xf')]));});});};exports['ShowTrigger']=function(_0xb56699){var _0x53c2fa=this;return new Promise(function(_0x380031,_0x58ec8a){return db[_0xaec4('0x1e')][_0xaec4('0x1f')]({'raw':_0xb56699['options']?_0xb56699[_0xaec4('0x15')][_0xaec4('0x20')]===undefined?!![]:![]:!![],'where':_0xb56699[_0xaec4('0x15')]?_0xb56699['options'][_0xaec4('0x16')]||null:null,'attributes':_0xb56699[_0xaec4('0x15')]?_0xb56699[_0xaec4('0x15')]['attributes']||null:null,'include':_0xb56699[_0xaec4('0x15')]?_0xb56699[_0xaec4('0x15')]['include']?_['map'](_0xb56699[_0xaec4('0x15')][_0xaec4('0x18')],function(_0x4c56f0){return{'model':db[_0x4c56f0['model']],'as':_0x4c56f0['as'],'attributes':_0x4c56f0[_0xaec4('0x1b')],'include':_0x4c56f0['include']?_[_0xaec4('0x19')](_0x4c56f0[_0xaec4('0x18')],function(_0x4d0f7a){return{'model':db[_0x4d0f7a[_0xaec4('0x1a')]],'as':_0x4d0f7a['as'],'attributes':_0x4d0f7a[_0xaec4('0x1b')],'include':_0x4d0f7a['include']?_[_0xaec4('0x19')](_0x4d0f7a[_0xaec4('0x18')],function(_0x8f3cf6){return{'model':db[_0x8f3cf6[_0xaec4('0x1a')]],'as':_0x8f3cf6['as'],'attributes':_0x8f3cf6[_0xaec4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xaec4('0x1c')](function(_0xf9475d){logger[_0xaec4('0x10')]('ShowTrigger',_0xb56699);logger['debug']('ShowTrigger',_0xb56699,JSON[_0xaec4('0xc')](_0xf9475d));_0x380031(_0xf9475d);})['catch'](function(_0x2987ac){logger[_0xaec4('0xd')]('ShowTrigger',_0x2987ac[_0xaec4('0xf')],_0xb56699);_0x58ec8a(_0x53c2fa[_0xaec4('0xd')](0x1f4,_0x2987ac[_0xaec4('0xf')]));});});};
\ No newline at end of file
+var _0x4abd=['Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetTrigger','findAll','options','raw','attributes','limit','map','include','model','debug','ShowTrigger','Trigger','find','where','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info'];(function(_0x141fcd,_0x810edc){var _0x3a968d=function(_0x2cebda){while(--_0x2cebda){_0x141fcd['push'](_0x141fcd['shift']());}};_0x3a968d(++_0x810edc);}(_0x4abd,0x9a));var _0xd4ab=function(_0x59ee41,_0xaf7db8){_0x59ee41=_0x59ee41-0x0;var _0x3ecd3e=_0x4abd[_0x59ee41];return _0x3ecd3e;};'use strict';var _=require('lodash');var util=require(_0xd4ab('0x0'));var moment=require(_0xd4ab('0x1'));var BPromise=require(_0xd4ab('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd4ab('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd4ab('0x4'));var logger=require(_0xd4ab('0x5'))('rpc');var config=require(_0xd4ab('0x6'));var jayson=require(_0xd4ab('0x7'));var client=jayson['client'][_0xd4ab('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d2778,_0x3d1155,_0x516547){return new BPromise(function(_0x5df6e4,_0x542499){return client['request'](_0x3d2778,_0x516547)[_0xd4ab('0x9')](function(_0x5913ad){logger[_0xd4ab('0xa')](_0xd4ab('0xb'),_0x3d1155,_0xd4ab('0xc'));logger['debug'](_0xd4ab('0xd'),_0x3d1155,_0xd4ab('0xc'),JSON[_0xd4ab('0xe')](_0x5913ad));if(_0x5913ad[_0xd4ab('0xf')]){if(_0x5913ad[_0xd4ab('0xf')]['code']===0x1f4){logger[_0xd4ab('0xf')]('Trigger,\x20%s,\x20%s',_0x3d1155,_0x5913ad[_0xd4ab('0xf')][_0xd4ab('0x10')]);return _0x542499(_0x5913ad['error']['message']);}logger['error'](_0xd4ab('0xb'),_0x3d1155,_0x5913ad[_0xd4ab('0xf')][_0xd4ab('0x10')]);return _0x5df6e4(_0x5913ad['error']['message']);}else{logger[_0xd4ab('0xa')](_0xd4ab('0xb'),_0x3d1155,_0xd4ab('0xc'));_0x5df6e4(_0x5913ad[_0xd4ab('0x11')][_0xd4ab('0x10')]);}})[_0xd4ab('0x12')](function(_0x12795f){logger[_0xd4ab('0xf')](_0xd4ab('0xb'),_0x3d1155,_0x12795f);_0x542499(_0x12795f);});});}exports[_0xd4ab('0x13')]=function(_0x46ea62){var _0x19b8de=this;return new Promise(function(_0x4c6ac3,_0x451e18){return db['Trigger'][_0xd4ab('0x14')]({'raw':_0x46ea62[_0xd4ab('0x15')]?_0x46ea62[_0xd4ab('0x15')][_0xd4ab('0x16')]===undefined?!![]:![]:!![],'where':_0x46ea62[_0xd4ab('0x15')]?_0x46ea62[_0xd4ab('0x15')]['where']||null:null,'attributes':_0x46ea62['options']?_0x46ea62[_0xd4ab('0x15')][_0xd4ab('0x17')]||null:null,'limit':_0x46ea62[_0xd4ab('0x15')]?_0x46ea62[_0xd4ab('0x15')][_0xd4ab('0x18')]||null:null,'include':_0x46ea62['options']?_0x46ea62[_0xd4ab('0x15')]['include']?_[_0xd4ab('0x19')](_0x46ea62['options'][_0xd4ab('0x1a')],function(_0x340485){return{'model':db[_0x340485[_0xd4ab('0x1b')]],'as':_0x340485['as'],'attributes':_0x340485[_0xd4ab('0x17')],'include':_0x340485[_0xd4ab('0x1a')]?_[_0xd4ab('0x19')](_0x340485[_0xd4ab('0x1a')],function(_0x74dd2e){return{'model':db[_0x74dd2e[_0xd4ab('0x1b')]],'as':_0x74dd2e['as'],'attributes':_0x74dd2e[_0xd4ab('0x17')],'include':_0x74dd2e[_0xd4ab('0x1a')]?_[_0xd4ab('0x19')](_0x74dd2e[_0xd4ab('0x1a')],function(_0x563e8c){return{'model':db[_0x563e8c[_0xd4ab('0x1b')]],'as':_0x563e8c['as'],'attributes':_0x563e8c[_0xd4ab('0x17')]};}):[]};}):[]};}):[]:[]})[_0xd4ab('0x9')](function(_0x21904d){logger['info'](_0xd4ab('0x13'),_0x46ea62);logger[_0xd4ab('0x1c')](_0xd4ab('0x13'),_0x46ea62,JSON[_0xd4ab('0xe')](_0x21904d));_0x4c6ac3(_0x21904d);})['catch'](function(_0x33de67){logger[_0xd4ab('0xf')](_0xd4ab('0x13'),_0x33de67[_0xd4ab('0x10')],_0x46ea62);_0x451e18(_0x19b8de[_0xd4ab('0xf')](0x1f4,_0x33de67[_0xd4ab('0x10')]));});});};exports[_0xd4ab('0x1d')]=function(_0x32c35c){var _0x176a4c=this;return new Promise(function(_0x3aff62,_0x431674){return db[_0xd4ab('0x1e')][_0xd4ab('0x1f')]({'raw':_0x32c35c['options']?_0x32c35c[_0xd4ab('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x32c35c[_0xd4ab('0x15')]?_0x32c35c[_0xd4ab('0x15')][_0xd4ab('0x20')]||null:null,'attributes':_0x32c35c[_0xd4ab('0x15')]?_0x32c35c['options'][_0xd4ab('0x17')]||null:null,'include':_0x32c35c['options']?_0x32c35c['options'][_0xd4ab('0x1a')]?_[_0xd4ab('0x19')](_0x32c35c[_0xd4ab('0x15')][_0xd4ab('0x1a')],function(_0xf9ee79){return{'model':db[_0xf9ee79[_0xd4ab('0x1b')]],'as':_0xf9ee79['as'],'attributes':_0xf9ee79[_0xd4ab('0x17')],'include':_0xf9ee79[_0xd4ab('0x1a')]?_[_0xd4ab('0x19')](_0xf9ee79[_0xd4ab('0x1a')],function(_0xf05828){return{'model':db[_0xf05828[_0xd4ab('0x1b')]],'as':_0xf05828['as'],'attributes':_0xf05828[_0xd4ab('0x17')],'include':_0xf05828[_0xd4ab('0x1a')]?_[_0xd4ab('0x19')](_0xf05828['include'],function(_0x2eb353){return{'model':db[_0x2eb353[_0xd4ab('0x1b')]],'as':_0x2eb353['as'],'attributes':_0x2eb353['attributes']};}):[]};}):[]};}):[]:[]})[_0xd4ab('0x9')](function(_0x5a83e4){logger[_0xd4ab('0xa')]('ShowTrigger',_0x32c35c);logger[_0xd4ab('0x1c')]('ShowTrigger',_0x32c35c,JSON[_0xd4ab('0xe')](_0x5a83e4));_0x3aff62(_0x5a83e4);})['catch'](function(_0x5ca38e){logger['error'](_0xd4ab('0x1d'),_0x5ca38e['message'],_0x32c35c);_0x431674(_0x176a4c[_0xd4ab('0xf')](0x1f4,_0x5ca38e[_0xd4ab('0x10')]));});});};
\ No newline at end of file
index 9207248..974ce00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88f=['../../config/environment','./trunk.controller','index','show','post','/:id/clone','isAuthenticated','clone','create','put','/:id','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0xe88f,0x1b1));var _0xfe88=function(_0x3f6565,_0x12a8bb){_0x3f6565=_0x3f6565-0x0;var _0x4abd23=_0xe88f[_0x3f6565];return _0x4abd23;};'use strict';var multer=require(_0xfe88('0x0'));var util=require(_0xfe88('0x1'));var path=require(_0xfe88('0x2'));var timeout=require(_0xfe88('0x3'));var express=require(_0xfe88('0x4'));var router=express[_0xfe88('0x5')]();var fs_extra=require(_0xfe88('0x6'));var auth=require(_0xfe88('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xfe88('0x8'));var controller=require(_0xfe88('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xfe88('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xfe88('0xb')]);router[_0xfe88('0xc')](_0xfe88('0xd'),auth[_0xfe88('0xe')](),controller[_0xfe88('0xf')]);router['post']('/',auth[_0xfe88('0xe')](),controller[_0xfe88('0x10')]);router[_0xfe88('0x11')](_0xfe88('0x12'),auth[_0xfe88('0xe')](),controller['update']);router[_0xfe88('0x13')](_0xfe88('0x12'),auth['isAuthenticated'](),controller[_0xfe88('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x8d70=['isAuthenticated','index','show','post','/:id/clone','clone','create','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','get'];(function(_0x1ae975,_0x70b40e){var _0x2576ca=function(_0x1b4e97){while(--_0x1b4e97){_0x1ae975['push'](_0x1ae975['shift']());}};_0x2576ca(++_0x70b40e);}(_0x8d70,0x182));var _0x08d7=function(_0x524ed1,_0x8882d9){_0x524ed1=_0x524ed1-0x0;var _0x272401=_0x8d70[_0x524ed1];return _0x272401;};'use strict';var multer=require(_0x08d7('0x0'));var util=require(_0x08d7('0x1'));var path=require('path');var timeout=require(_0x08d7('0x2'));var express=require(_0x08d7('0x3'));var router=express[_0x08d7('0x4')]();var fs_extra=require(_0x08d7('0x5'));var auth=require(_0x08d7('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x08d7('0x7'));var controller=require(_0x08d7('0x8'));router[_0x08d7('0x9')]('/',auth[_0x08d7('0xa')](),controller[_0x08d7('0xb')]);router[_0x08d7('0x9')]('/:id',auth[_0x08d7('0xa')](),controller[_0x08d7('0xc')]);router[_0x08d7('0xd')](_0x08d7('0xe'),auth[_0x08d7('0xa')](),controller[_0x08d7('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x08d7('0x10')]);router['put'](_0x08d7('0x11'),auth[_0x08d7('0xa')](),controller[_0x08d7('0x12')]);router[_0x08d7('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x08d7('0x14')]);module[_0x08d7('0x15')]=router;
\ No newline at end of file
index c293b95..dc71db7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90b=['PROHIB','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','yes','nonat','update','outgoing','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','allow','ulaw;alaw;gsm','port,invite','insecure','never','always','accept','refuse','originate','INTEGER','uac','uas','pai','fingerprint','dynamic','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN'];(function(_0x29dedc,_0x377dc9){var _0x1da434=function(_0x16e025){while(--_0x16e025){_0x29dedc['push'](_0x29dedc['shift']());}};_0x1da434(++_0x377dc9);}(_0xc90b,0x7f));var _0xbc90=function(_0x50b499,_0x68ae5a){_0x50b499=_0x50b499-0x0;var _0x472bf2=_0xc90b[_0x50b499];return _0x472bf2;};'use strict';var Sequelize=require(_0xbc90('0x0'));module[_0xbc90('0x1')]={'name':{'type':Sequelize[_0xbc90('0x2')],'allowNull':![],'unique':_0xbc90('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x5'),_0xbc90('0x6'),_0xbc90('0x7')),'allowNull':![],'defaultValue':_0xbc90('0x5')},'context':{'type':Sequelize[_0xbc90('0x2')],'allowNull':![],'defaultValue':_0xbc90('0x8')},'callingpres':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x9'),'ALLOWED_PASSED_SCREEN',_0xbc90('0xa'),_0xbc90('0xb'),'PROHIB_NOT_SCREENED',_0xbc90('0xc'),_0xbc90('0xd'),_0xbc90('0xe'))},'deny':{'type':Sequelize[_0xbc90('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xbc90('0x2')]},'md5secret':{'type':Sequelize[_0xbc90('0x2')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':'udp','set':function(_0x368db4){this[_0xbc90('0xf')](_0xbc90('0x10'),_0x368db4?_0x368db4[_0xbc90('0x11')](','):null);},'get':function(){return this['getDataValue'](_0xbc90('0x10'))?this[_0xbc90('0x12')]('transport')[_0xbc90('0x13')](','):null;},'comment':_0xbc90('0x14')},'dtmfmode':{'type':Sequelize['ENUM'](_0xbc90('0x15'),_0xbc90('0x16'),_0xbc90('0x17'),_0xbc90('0x18'),'auto'),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no',_0xbc90('0x1a'),_0xbc90('0x1b'),_0xbc90('0x1c')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xbc90('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0xbc90('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':'force_rport,comedia','set':function(_0x5e8245){this['setDataValue']('nat',_0x5e8245?_0x5e8245[_0xbc90('0x11')](','):null);},'get':function(){return this[_0xbc90('0x12')]('nat')?this[_0xbc90('0x12')](_0xbc90('0x1d'))[_0xbc90('0x13')](','):null;},'comment':_0xbc90('0x1e')},'callgroup':{'type':Sequelize[_0xbc90('0x2')]},'namedcallgroup':{'type':Sequelize[_0xbc90('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xbc90('0x2')]},'language':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xbc90('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xbc90('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4084d6){this[_0xbc90('0xf')](_0xbc90('0x1f'),_0x4084d6?_0x4084d6[_0xbc90('0x11')](';'):_0xbc90('0x20'));},'get':function(){return this[_0xbc90('0x12')](_0xbc90('0x1f'))?this[_0xbc90('0x12')]('allow')[_0xbc90('0x13')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'insecure':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':_0xbc90('0x21'),'set':function(_0x3da26d){this[_0xbc90('0xf')](_0xbc90('0x22'),_0x3da26d?_0x3da26d[_0xbc90('0x11')](','):null);},'get':function(){return this['getDataValue']('insecure')?this[_0xbc90('0x12')]('insecure')[_0xbc90('0x13')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xbc90('0x4')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xbc90('0x4')]('yes','no',_0xbc90('0x23'))},'promiscredir':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'useclientcode':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xbc90('0x2')]},'callerid':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xbc90('0x2')]},'callcounter':{'type':Sequelize[_0xbc90('0x4')]('yes','no'),'defaultValue':_0xbc90('0x19')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xbc90('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0xbc90('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xbc90('0x19'),'no',_0xbc90('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'mailbox':{'type':Sequelize[_0xbc90('0x2')]},'session_timers':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x25'),_0xbc90('0x26'),_0xbc90('0x27'))},'session_expires':{'type':Sequelize[_0xbc90('0x28')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x29'),'uas'),'defaultValue':_0xbc90('0x2a')},'t38pt_usertpsource':{'type':Sequelize[_0xbc90('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0xbc90('0x2')]},'fromuser':{'type':Sequelize[_0xbc90('0x2')]},'port':{'type':Sequelize[_0xbc90('0x28')](0x5)},'qualify':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no'),'defaultValue':_0xbc90('0x19')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xbc90('0x2')]},'defaultuser':{'type':Sequelize[_0xbc90('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xbc90('0x28')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize['ENUM']('yes','no',_0xbc90('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xbc90('0x2')]},'callbackextension':{'type':Sequelize[_0xbc90('0x2')]},'timert1':{'type':Sequelize[_0xbc90('0x28')](0xb)},'timerb':{'type':Sequelize[_0xbc90('0x28')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xbc90('0x2')]},'contactdeny':{'type':Sequelize[_0xbc90('0x2')]},'contactacl':{'type':Sequelize[_0xbc90('0x2')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xbc90('0x2')]},'maxforwards':{'type':Sequelize[_0xbc90('0x28')](0xb)},'encryption':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xbc90('0x4')]('yes','no')},'force_avp':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'icesupport':{'type':Sequelize[_0xbc90('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'dtlsverify':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no',_0xbc90('0x2c'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xbc90('0x28')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize[_0xbc90('0x2')]},'dtlscafile':{'type':Sequelize[_0xbc90('0x2')]},'dtlscapath':{'type':Sequelize[_0xbc90('0x2')]},'dtlssetup':{'type':Sequelize['ENUM']('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize['ENUM'](_0xbc90('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xbc90('0x2')]},'call_limit':{'type':Sequelize[_0xbc90('0x28')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xbc90('0x4')]('yes','no')},'subscribemwi':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no')},'vmexten':{'type':Sequelize[_0xbc90('0x2')]},'mohinterpret':{'type':Sequelize[_0xbc90('0x2')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xbc90('0x2')]},'description':{'type':Sequelize[_0xbc90('0x2')]},'host':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':_0xbc90('0x2d')},'canreinvite':{'type':Sequelize[_0xbc90('0x4')](_0xbc90('0x19'),'no',_0xbc90('0x1a'),_0xbc90('0x1b'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xbc90('0x2')]},'active':{'type':Sequelize[_0xbc90('0x2e')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xbc90('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x6f7e=['split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','INTEGER','\x22\x22\x20<>','accept','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','BOOLEAN','sequelize','STRING','name','ENUM','friend','user','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','inband','auto','rfc2833','yes','nonat','update','force_rport,comedia','nat'];(function(_0x27ad4d,_0x395f87){var _0x368abc=function(_0x236765){while(--_0x236765){_0x27ad4d['push'](_0x27ad4d['shift']());}};_0x368abc(++_0x395f87);}(_0x6f7e,0x12a));var _0xe6f7=function(_0x5ceb69,_0x59e104){_0x5ceb69=_0x5ceb69-0x0;var _0x3f6a4d=_0x6f7e[_0x5ceb69];return _0x3f6a4d;};'use strict';var Sequelize=require(_0xe6f7('0x0'));module['exports']={'name':{'type':Sequelize[_0xe6f7('0x1')],'allowNull':![],'unique':_0xe6f7('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x4'),_0xe6f7('0x5'),'peer'),'allowNull':![],'defaultValue':_0xe6f7('0x4')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe6f7('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0xe6f7('0x7'),_0xe6f7('0x8'),_0xe6f7('0x9'),'PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN',_0xe6f7('0xa'),'PROHIB')},'deny':{'type':Sequelize[_0xe6f7('0x1')]},'permit':{'type':Sequelize[_0xe6f7('0x1')]},'secret':{'type':Sequelize[_0xe6f7('0x1')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0xe6f7('0x1')]},'transport':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':_0xe6f7('0xb'),'set':function(_0x2843e0){this[_0xe6f7('0xc')](_0xe6f7('0xd'),_0x2843e0?_0x2843e0[_0xe6f7('0xe')](','):null);},'get':function(){return this[_0xe6f7('0xf')](_0xe6f7('0xd'))?this['getDataValue']('transport')['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xe6f7('0x3')]('rfc2833','info','shortinfo',_0xe6f7('0x10'),_0xe6f7('0x11')),'defaultValue':_0xe6f7('0x12')},'directmedia':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no',_0xe6f7('0x14'),_0xe6f7('0x15'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe6f7('0x1')]},'directmediadeny':{'type':Sequelize[_0xe6f7('0x1')]},'nat':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':_0xe6f7('0x16'),'set':function(_0x4f612d){this[_0xe6f7('0xc')](_0xe6f7('0x17'),_0x4f612d?_0x4f612d['join'](','):null);},'get':function(){return this[_0xe6f7('0xf')]('nat')?this['getDataValue'](_0xe6f7('0x17'))[_0xe6f7('0x18')](','):null;},'comment':_0xe6f7('0x19')},'callgroup':{'type':Sequelize[_0xe6f7('0x1')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xe6f7('0x1')]},'language':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xe6f7('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0xe6f7('0x1')],'allowNull':![],'defaultValue':_0xe6f7('0x1a'),'set':function(_0x22a397){this['setDataValue'](_0xe6f7('0x1b'),_0x22a397?_0x22a397[_0xe6f7('0xe')](';'):_0xe6f7('0x1a'));},'get':function(){return this[_0xe6f7('0xf')](_0xe6f7('0x1b'))?this[_0xe6f7('0xf')](_0xe6f7('0x1b'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'insecure':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':'port,invite','set':function(_0x19ac50){this[_0xe6f7('0xc')](_0xe6f7('0x1c'),_0x19ac50?_0x19ac50[_0xe6f7('0xe')](','):null);},'get':function(){return this[_0xe6f7('0xf')]('insecure')?this[_0xe6f7('0xf')](_0xe6f7('0x1c'))[_0xe6f7('0x18')](','):null;},'comment':_0xe6f7('0x1d')},'trustrpid':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no','never')},'promiscredir':{'type':Sequelize[_0xe6f7('0x3')]('yes','no')},'useclientcode':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'accountcode':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':_0xe6f7('0x1f')},'amaflags':{'type':Sequelize[_0xe6f7('0x1')]},'callcounter':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':_0xe6f7('0x13')},'busylevel':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'allowoverlap':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'allowsubscribe':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'subscribecontext':{'type':Sequelize[_0xe6f7('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xe6f7('0x3')]('yes','no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'mailbox':{'type':Sequelize[_0xe6f7('0x1')]},'session_timers':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x20'),_0xe6f7('0x21'),_0xe6f7('0x22'))},'session_expires':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'session_minse':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xe6f7('0x23'),_0xe6f7('0x24')),'defaultValue':_0xe6f7('0x24')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0xe6f7('0x1')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xe6f7('0x1')]},'port':{'type':Sequelize[_0xe6f7('0x1e')](0x5)},'qualify':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':_0xe6f7('0x13')},'keepalive':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0xe6f7('0x1')]},'rtptimeout':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'sendrpid':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no',_0xe6f7('0x25')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xe6f7('0x1')]},'callbackextension':{'type':Sequelize[_0xe6f7('0x1')]},'timert1':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'timerb':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'qualifyfreq':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xe6f7('0x1')]},'contactacl':{'type':Sequelize[_0xe6f7('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xe6f7('0x1')]},'maxforwards':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'encryption':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'force_avp':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'dtlsenable':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'dtlsverify':{'type':Sequelize[_0xe6f7('0x3')]('yes','no',_0xe6f7('0x26'),_0xe6f7('0x27'))},'dtlsrekey':{'type':Sequelize[_0xe6f7('0x1e')](0xb)},'dtlscertfile':{'type':Sequelize[_0xe6f7('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0xe6f7('0x1')]},'dtlscipher':{'type':Sequelize[_0xe6f7('0x1')]},'dtlscafile':{'type':Sequelize[_0xe6f7('0x1')]},'dtlscapath':{'type':Sequelize[_0xe6f7('0x1')]},'dtlssetup':{'type':Sequelize['ENUM'](_0xe6f7('0x28'),_0xe6f7('0x29'),_0xe6f7('0x2a')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe6f7('0x1')]},'usereqphone':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe6f7('0x1')]},'recordofffeature':{'type':Sequelize[_0xe6f7('0x1')]},'call_limit':{'type':Sequelize[_0xe6f7('0x1e')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0xe6f7('0x13'),'no')},'subscribemwi':{'type':Sequelize[_0xe6f7('0x3')](_0xe6f7('0x13'),'no')},'vmexten':{'type':Sequelize[_0xe6f7('0x1')]},'mohinterpret':{'type':Sequelize[_0xe6f7('0x1')]},'mohsuggest':{'type':Sequelize[_0xe6f7('0x1')]},'parkinglot':{'type':Sequelize[_0xe6f7('0x1')]},'description':{'type':Sequelize[_0xe6f7('0x1')]},'host':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':_0xe6f7('0x2b')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0xe6f7('0x14'),_0xe6f7('0x15'),_0xe6f7('0x2c')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xe6f7('0x1')]},'otherFields':{'type':Sequelize[_0xe6f7('0x1')]},'active':{'type':Sequelize[_0xe6f7('0x2d')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xe6f7('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index 39f7c49..851b1b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['update','destroy','get','Trunks','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','Trunk','findAll','show','params','includeAll','include','options','clone','find','omit','createdAt','updatedAt','body','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','root','utf8','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','Reload','chan_sip.so','server/files/templates/trunk.ejs','join','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','apply','reject','save'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x008c,0x188));var _0xc008=function(_0x50faaa,_0x59d114){_0x50faaa=_0x50faaa-0x0;var _0x48300e=_0x008c[_0x50faaa];return _0x48300e;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];var jayson=require(_0xc008('0x18'));var client=jayson[_0xc008('0x19')][_0xc008('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x593f7a,_0x560e28,_0x33f44c,_0x50c1ab){return new BPromise(function(_0x25e13f,_0x4584e1){var _0x2073ef=_0x50c1ab||client;return _0x2073ef[_0xc008('0x1b')](_0x593f7a,_0x33f44c)[_0xc008('0x1c')](function(_0x5ee00b){logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));logger[_0xc008('0x1e')](_0xc008('0x1f'),_0x560e28,_0xc008('0x1d'),JSON['stringify'](_0x5ee00b));if(_0x5ee00b['error']){if(_0x5ee00b['error']['code']===0x1f4){logger[_0xc008('0x20')](_0xc008('0x21'),_0x560e28,_0x5ee00b['error'][_0xc008('0x22')]);return _0x4584e1(_0x5ee00b['error']['message']);}logger['error']('Trunk,\x20%s,\x20%s',_0x560e28,_0x5ee00b[_0xc008('0x20')]['message']);return _0x25e13f(_0x5ee00b['error']['message']);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x560e28,_0xc008('0x1d'));_0x25e13f(_0x5ee00b[_0xc008('0x23')][_0xc008('0x22')]);}})[_0xc008('0x24')](function(_0x11cc75){logger[_0xc008('0x20')]('Trunk,\x20%s,\x20%s',_0x560e28,_0x11cc75);_0x4584e1(_0x11cc75);});});}function respondWithStatusCode(_0x459fd9,_0x5c85f2){_0x5c85f2=_0x5c85f2||0xcc;return function(_0x58a6ea){if(_0x58a6ea){return _0x459fd9[_0xc008('0x25')](_0x5c85f2);}return _0x459fd9[_0xc008('0x26')](_0x5c85f2)[_0xc008('0x27')]();};}function respondWithResult(_0x3cb28c,_0x5410f5){_0x5410f5=_0x5410f5||0xc8;return function(_0x48582b){if(_0x48582b){return _0x3cb28c['status'](_0x5410f5)[_0xc008('0x28')](_0x48582b);}};}function respondWithFilteredResult(_0x15dade,_0x92c582){return function(_0x2e31c2){if(_0x2e31c2){var _0x5bebd9=typeof _0x92c582['offset']==='undefined'&&typeof _0x92c582['limit']==='undefined';var _0x3865c0=_0x2e31c2[_0xc008('0x29')];var _0x25eae4=_0x5bebd9?0x0:_0x92c582['offset'];var _0x24c14c=_0x5bebd9?_0x2e31c2[_0xc008('0x29')]:_0x92c582[_0xc008('0x2a')]+_0x92c582[_0xc008('0x2b')];var _0x4c5dec;if(_0x24c14c>=_0x3865c0){_0x24c14c=_0x3865c0;_0x4c5dec=0xc8;}else{_0x4c5dec=0xce;}_0x15dade[_0xc008('0x26')](_0x4c5dec);return _0x15dade[_0xc008('0x2c')]('Content-Range',_0x25eae4+'-'+_0x24c14c+'/'+_0x3865c0)['json'](_0x2e31c2);}return null;};}function patchUpdates(_0x539766){return function(_0x1032b2){try{jsonpatch[_0xc008('0x2d')](_0x1032b2,_0x539766,!![]);}catch(_0xf831f2){return BPromise[_0xc008('0x2e')](_0xf831f2);}return _0x1032b2[_0xc008('0x2f')]();};}function saveUpdates(_0xceebc3,_0x294f97){return function(_0x22d8e8){if(_0x22d8e8){return _0x22d8e8[_0xc008('0x30')](_0xceebc3)[_0xc008('0x1c')](function(_0x2f4b6b){return _0x2f4b6b;});}return null;};}function removeEntity(_0x1ac7c8,_0x596ee8){return function(_0x334a09){if(_0x334a09){return _0x334a09[_0xc008('0x31')]()['then'](function(){var _0xaf4b84=_0x334a09[_0xc008('0x32')]({'plain':!![]});var _0x383be7=_0xc008('0x33');return db[_0xc008('0x34')][_0xc008('0x31')]({'where':{'type':_0x383be7,'resourceId':_0xaf4b84['id']}})[_0xc008('0x1c')](function(){return _0x334a09;});})[_0xc008('0x1c')](function(){_0x1ac7c8[_0xc008('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x415b87,_0x389a40){return function(_0x459df4){if(!_0x459df4){_0x415b87[_0xc008('0x25')](0x194);}return _0x459df4;};}function handleError(_0x40002f,_0x315562){_0x315562=_0x315562||0x1f4;return function(_0x1667a0){logger['error'](_0x1667a0[_0xc008('0x35')]);if(_0x1667a0[_0xc008('0x36')]){delete _0x1667a0['name'];}_0x40002f[_0xc008('0x26')](_0x315562)[_0xc008('0x37')](_0x1667a0);};}exports['index']=function(_0x263473,_0x2e4ae1){var _0x280e9b={},_0x55ff48={},_0x53b353={'count':0x0,'rows':[]};var _0x478810=_[_0xc008('0x38')](db['Trunk'][_0xc008('0x39')],function(_0x3884dd){return{'name':_0x3884dd[_0xc008('0x3a')],'type':_0x3884dd[_0xc008('0x3b')][_0xc008('0x3c')]};});_0x55ff48[_0xc008('0x3d')]=_[_0xc008('0x38')](_0x478810,_0xc008('0x36'));_0x55ff48[_0xc008('0x3e')]=_[_0xc008('0x3f')](_0x263473[_0xc008('0x3e')]);_0x55ff48[_0xc008('0x40')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],_0x55ff48['query']);_0x280e9b[_0xc008('0x42')]=_[_0xc008('0x41')](_0x55ff48[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x263473['query'][_0xc008('0x43')]));_0x280e9b[_0xc008('0x42')]=_0x280e9b[_0xc008('0x42')][_0xc008('0x44')]?_0x280e9b[_0xc008('0x42')]:_0x55ff48['model'];if(!_0x263473[_0xc008('0x3e')][_0xc008('0x45')](_0xc008('0x46'))){_0x280e9b[_0xc008('0x2b')]=qs[_0xc008('0x2b')](_0x263473['query'][_0xc008('0x2b')]);_0x280e9b[_0xc008('0x2a')]=qs[_0xc008('0x2a')](_0x263473[_0xc008('0x3e')]['offset']);}_0x280e9b[_0xc008('0x47')]=qs[_0xc008('0x48')](_0x263473[_0xc008('0x3e')]['sort']);_0x280e9b[_0xc008('0x49')]=qs['filters'](_[_0xc008('0x4a')](_0x263473['query'],_0x55ff48[_0xc008('0x40')]),_0x478810);if(_0x263473[_0xc008('0x3e')]['filter']){_0x280e9b[_0xc008('0x49')]=_[_0xc008('0x4b')](_0x280e9b[_0xc008('0x49')],{'$or':_['map'](_0x478810,function(_0x1cec64){if(_0x1cec64[_0xc008('0x3b')]!==_0xc008('0x4c')){var _0x44fc5d={};_0x44fc5d[_0x1cec64[_0xc008('0x36')]]={'$like':'%'+_0x263473[_0xc008('0x3e')]['filter']+'%'};return _0x44fc5d;}})});}_0x280e9b=_['merge']({},_0x280e9b,_0x263473['options']);var _0x4552ed={'where':_0x280e9b[_0xc008('0x49')]};return db[_0xc008('0x4d')][_0xc008('0x29')](_0x4552ed)[_0xc008('0x1c')](function(_0x24f6a4){_0x53b353[_0xc008('0x29')]=_0x24f6a4;if(_0x263473[_0xc008('0x3e')]['includeAll']){_0x280e9b['include']=[{'all':!![]}];}return db['Trunk'][_0xc008('0x4e')](_0x280e9b);})[_0xc008('0x1c')](function(_0x158eae){_0x53b353['rows']=_0x158eae;return _0x53b353;})[_0xc008('0x1c')](respondWithFilteredResult(_0x2e4ae1,_0x280e9b))[_0xc008('0x24')](handleError(_0x2e4ae1,null));};exports[_0xc008('0x4f')]=function(_0x1c2c50,_0x4981b4){var _0x56e4ac={'raw':![],'where':{'id':_0x1c2c50[_0xc008('0x50')]['id']}},_0x17ec90={};_0x17ec90[_0xc008('0x3d')]=_[_0xc008('0x3f')](db['Trunk']['rawAttributes']);_0x17ec90[_0xc008('0x3e')]=_['keys'](_0x1c2c50[_0xc008('0x3e')]);_0x17ec90[_0xc008('0x40')]=_[_0xc008('0x41')](_0x17ec90['model'],_0x17ec90[_0xc008('0x3e')]);_0x56e4ac[_0xc008('0x42')]=_[_0xc008('0x41')](_0x17ec90[_0xc008('0x3d')],qs[_0xc008('0x43')](_0x1c2c50['query'][_0xc008('0x43')]));_0x56e4ac[_0xc008('0x42')]=_0x56e4ac['attributes'][_0xc008('0x44')]?_0x56e4ac[_0xc008('0x42')]:_0x17ec90['model'];if(_0x1c2c50['query'][_0xc008('0x51')]){_0x56e4ac[_0xc008('0x52')]=[{'all':!![]}];}_0x56e4ac=_[_0xc008('0x4b')]({},_0x56e4ac,_0x1c2c50[_0xc008('0x53')]);return db[_0xc008('0x4d')]['find'](_0x56e4ac)['then'](handleEntityNotFound(_0x4981b4,null))[_0xc008('0x1c')](respondWithResult(_0x4981b4,null))['catch'](handleError(_0x4981b4,null));};exports[_0xc008('0x54')]=function(_0x25d351,_0xf94fcb){var _0x2f1105={'where':{'id':_0x25d351[_0xc008('0x50')]['id']}},_0x44f42d={};_0x44f42d['model']=_[_0xc008('0x3f')](db[_0xc008('0x4d')][_0xc008('0x39')]);_0x2f1105[_0xc008('0x42')]=_[_0xc008('0x41')](_0x44f42d['model'],qs[_0xc008('0x43')](_0x25d351['query']['fields']));_0x2f1105['attributes']=_0x2f1105[_0xc008('0x42')][_0xc008('0x44')]?_0x2f1105[_0xc008('0x42')]:_0x44f42d['model'];if(_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]){_0x2f1105[_0xc008('0x52')]=[{'all':!![]}];}_0x2f1105=_['merge']({},_0x2f1105,_0x25d351[_0xc008('0x53')]);return db[_0xc008('0x4d')][_0xc008('0x55')](_0x2f1105)[_0xc008('0x1c')](handleEntityNotFound(_0xf94fcb,null))['then'](function(_0x4022dd){if(_0x4022dd){var _0x4eaa6d=_0x4022dd[_0xc008('0x32')]({'plain':!![]});_0x4eaa6d=qs[_0xc008('0x56')](_0x4eaa6d,['id',_0xc008('0x57'),_0xc008('0x58')]);_0x25d351[_0xc008('0x59')]=_[_0xc008('0x56')](_0x25d351['body'],['id',_0xc008('0x57'),'updatedAt']);return db['Trunk'][_0xc008('0x5a')](_[_0xc008('0x4b')](_0x4eaa6d,_0x25d351['body']),{'include':_0x25d351[_0xc008('0x3e')][_0xc008('0x51')]?[{'all':!![]}]:undefined})[_0xc008('0x1c')](function(_0x4517c0){var _0x21ee6d=_0x25d351[_0xc008('0x5b')][_0xc008('0x32')]({'plain':!![]});if(!_0x21ee6d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x21ee6d[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x3bfb15=_0x4517c0[_0xc008('0x32')]({'plain':!![]});var _0xb3ca0f=_0xc008('0x33');return db[_0xc008('0x5d')][_0xc008('0x55')]({'where':{'name':_0xb3ca0f,'userProfileId':_0x21ee6d[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x1bef66){if(_0x1bef66&&_0x1bef66[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x3bfb15['name'],'resourceId':_0x3bfb15['id'],'type':_0x1bef66[_0xc008('0x36')],'sectionId':_0x1bef66['id']},{})[_0xc008('0x1c')](function(){return _0x4517c0;});}else{return _0x4517c0;}})[_0xc008('0x24')](function(_0x566dea){logger[_0xc008('0x20')](_0xc008('0x60'),_0x566dea);throw _0x566dea;});}return _0x4517c0;});}})['then'](respondWithResult(_0xf94fcb,0xc9))['catch'](handleError(_0xf94fcb,null));};exports[_0xc008('0x5a')]=function(_0x2a4c2b,_0x7bad14,_0x39083c){var _0x1a2ce7;return db[_0xc008('0x4d')][_0xc008('0x5a')](_0x2a4c2b[_0xc008('0x59')],{'raw':!![]})[_0xc008('0x1c')](function(_0x1b059b){_0x1a2ce7=_0x1b059b;return db[_0xc008('0x4d')]['findAll']({'raw':!![]});})[_0xc008('0x1c')](function(_0x25a52b){var _0xfdb5e3=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],'server/files/templates/trunk.ejs'),_0xc008('0x63'));var _0x46fa7b=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x64')),_0xc008('0x63'));var _0x553f5c=ejs[_0xc008('0x65')](_0xfdb5e3,{'trunks':_0x25a52b||[]});fs['writeFileSync'](_0xc008('0x66'),_0x553f5c);if(_0x1a2ce7[_0xc008('0x67')]){var _0x23012c=ejs[_0xc008('0x65')](_0x46fa7b,{'trunks':_0x25a52b||[]});fs[_0xc008('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x23012c);}})[_0xc008('0x1c')](function(){return respondWithRpcPromise(_0xc008('0x69'),'create',{'module':_0xc008('0x6a')});})['then'](function(){var _0x278cbe=_0x2a4c2b['user'][_0xc008('0x32')]({'plain':!![]});if(!_0x278cbe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x278cbe[_0xc008('0x5c')]===_0xc008('0x5b')){var _0x33d8e4=_0x1a2ce7[_0xc008('0x32')]({'plain':!![]});return db['UserProfileSection'][_0xc008('0x55')]({'where':{'name':_0xc008('0x33'),'userProfileId':_0x278cbe[_0xc008('0x5e')]},'raw':!![]})[_0xc008('0x1c')](function(_0x321500){if(_0x321500&&_0x321500[_0xc008('0x5f')]===0x0){return db[_0xc008('0x34')][_0xc008('0x5a')]({'name':_0x33d8e4['name'],'resourceId':_0x33d8e4['id'],'type':_0x321500[_0xc008('0x36')],'sectionId':_0x321500['id']},{})['then'](function(){return _0x1a2ce7;});}else{return _0x1a2ce7;}})['catch'](function(_0x4c84da){logger[_0xc008('0x20')](_0xc008('0x60'),_0x4c84da);throw _0x4c84da;});}return _0x1a2ce7;})[_0xc008('0x1c')](respondWithResult(_0x7bad14,0xc9))[_0xc008('0x24')](handleError(_0x7bad14,null));};exports[_0xc008('0x30')]=function(_0x2e9646,_0x23ef42,_0x519328){var _0x127bdf;return db['Trunk'][_0xc008('0x55')]({'where':{'id':_0x2e9646[_0xc008('0x50')]['id']}})[_0xc008('0x1c')](handleEntityNotFound(_0x23ef42,null))[_0xc008('0x1c')](saveUpdates(_0x2e9646[_0xc008('0x59')],null))[_0xc008('0x1c')](function(_0x23d4ff){if(_0x23d4ff){_0x127bdf=_0x23d4ff;return db[_0xc008('0x4d')][_0xc008('0x4e')]({'raw':!![]});}})[_0xc008('0x1c')](function(_0x334ed8){if(_0x334ed8){var _0x1dd9fe=fs['readFileSync'](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x572d93=fs[_0xc008('0x61')](path[_0xc008('0x6c')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x3fc44f=ejs[_0xc008('0x65')](_0x1dd9fe,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x66'),_0x3fc44f);var _0x1101b8=ejs[_0xc008('0x65')](_0x572d93,{'trunks':_0x334ed8||[]});fs[_0xc008('0x68')](_0xc008('0x6d'),_0x1101b8);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x30'),{'module':'chan_sip.so'});}return null;})['then'](function(_0xc644fe){if(_0xc644fe){return _0x127bdf;}})[_0xc008('0x1c')](respondWithResult(_0x23ef42,null))[_0xc008('0x24')](handleError(_0x23ef42,null));};exports[_0xc008('0x31')]=function(_0x2b94b2,_0x37fc2c,_0x4b434f){var _0x5794fe;return db[_0xc008('0x4d')][_0xc008('0x55')]({'where':{'id':_0x2b94b2[_0xc008('0x50')]['id']}})['then'](handleEntityNotFound(_0x37fc2c,null))['then'](removeEntity(_0x37fc2c,null))['then'](function(){return db['Trunk']['findAll']({'raw':!![]});})['then'](function(_0x276de2){var _0x52bf60=fs[_0xc008('0x61')](path['join'](config[_0xc008('0x62')],_0xc008('0x6b')),_0xc008('0x63'));var _0x5bc8b0=fs['readFileSync'](path[_0xc008('0x6c')](config['root'],_0xc008('0x64')),_0xc008('0x63'));var _0x544519=ejs[_0xc008('0x65')](_0x52bf60,{'trunks':_0x276de2});var _0x4db90b=ejs['render'](_0x5bc8b0,{'trunks':_0x276de2});fs[_0xc008('0x68')](_0xc008('0x66'),_0x544519);fs['writeFileSync'](_0xc008('0x6d'),_0x4db90b);return respondWithRpcPromise(_0xc008('0x69'),_0xc008('0x31'),{'module':'chan_sip.so'});})[_0xc008('0x24')](handleError(_0x37fc2c,null));};
\ No newline at end of file
+var _0x3e74=['map','Trunk','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','params','clone','find','get','omit','createdAt','body','updatedAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','writeFileSync','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','Trunks','UserProfileResource','stack','name','send','index'];(function(_0x19e691,_0x57d0c3){var _0x1b624b=function(_0x19108f){while(--_0x19108f){_0x19e691['push'](_0x19e691['shift']());}};_0x1b624b(++_0x57d0c3);}(_0x3e74,0x175));var _0x43e7=function(_0x3250bd,_0x5c2f65){_0x3250bd=_0x3250bd-0x0;var _0x4823f1=_0x3e74[_0x3250bd];return _0x4823f1;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];var jayson=require(_0x43e7('0x15'));var client=jayson[_0x43e7('0x16')][_0x43e7('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x4e008c,_0x583d85,_0x2fcb36,_0x21fdd3){return new BPromise(function(_0x44b0bd,_0x51b974){var _0x5e641c=_0x21fdd3||client;return _0x5e641c[_0x43e7('0x18')](_0x4e008c,_0x2fcb36)[_0x43e7('0x19')](function(_0x203378){logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,'request\x20sent');logger[_0x43e7('0x1b')](_0x43e7('0x1c'),_0x583d85,_0x43e7('0x1d'),JSON['stringify'](_0x203378));if(_0x203378['error']){if(_0x203378[_0x43e7('0x1e')][_0x43e7('0x1f')]===0x1f4){logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x51b974(_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);}logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x44b0bd(_0x203378['error'][_0x43e7('0x21')]);}else{logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x43e7('0x1d'));_0x44b0bd(_0x203378[_0x43e7('0x22')][_0x43e7('0x21')]);}})[_0x43e7('0x23')](function(_0x4077fb){logger[_0x43e7('0x1e')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x4077fb);_0x51b974(_0x4077fb);});});}function respondWithStatusCode(_0x454359,_0x4eea52){_0x4eea52=_0x4eea52||0xcc;return function(_0x4c9df3){if(_0x4c9df3){return _0x454359[_0x43e7('0x24')](_0x4eea52);}return _0x454359[_0x43e7('0x25')](_0x4eea52)['end']();};}function respondWithResult(_0x1f0673,_0x4ca5cf){_0x4ca5cf=_0x4ca5cf||0xc8;return function(_0x326dab){if(_0x326dab){return _0x1f0673['status'](_0x4ca5cf)[_0x43e7('0x26')](_0x326dab);}};}function respondWithFilteredResult(_0x1b5f50,_0x20888b){return function(_0x405f85){if(_0x405f85){var _0x51f4d7=typeof _0x20888b['offset']===_0x43e7('0x27')&&typeof _0x20888b['limit']===_0x43e7('0x27');var _0x40dc8f=_0x405f85[_0x43e7('0x28')];var _0xb1fc63=_0x51f4d7?0x0:_0x20888b['offset'];var _0x33a1a5=_0x51f4d7?_0x405f85[_0x43e7('0x28')]:_0x20888b[_0x43e7('0x29')]+_0x20888b[_0x43e7('0x2a')];var _0x442c3b;if(_0x33a1a5>=_0x40dc8f){_0x33a1a5=_0x40dc8f;_0x442c3b=0xc8;}else{_0x442c3b=0xce;}_0x1b5f50[_0x43e7('0x25')](_0x442c3b);return _0x1b5f50[_0x43e7('0x2b')](_0x43e7('0x2c'),_0xb1fc63+'-'+_0x33a1a5+'/'+_0x40dc8f)[_0x43e7('0x26')](_0x405f85);}return null;};}function patchUpdates(_0x35dbcd){return function(_0x17df44){try{jsonpatch[_0x43e7('0x2d')](_0x17df44,_0x35dbcd,!![]);}catch(_0x2bde44){return BPromise[_0x43e7('0x2e')](_0x2bde44);}return _0x17df44['save']();};}function saveUpdates(_0x238321,_0x44f6b0){return function(_0x3b8f78){if(_0x3b8f78){return _0x3b8f78[_0x43e7('0x2f')](_0x238321)[_0x43e7('0x19')](function(_0x4c8650){return _0x4c8650;});}return null;};}function removeEntity(_0x1eba65,_0x49b83d){return function(_0x30d47e){if(_0x30d47e){return _0x30d47e[_0x43e7('0x30')]()['then'](function(){var _0x5a7342=_0x30d47e['get']({'plain':!![]});var _0xf8320=_0x43e7('0x31');return db[_0x43e7('0x32')][_0x43e7('0x30')]({'where':{'type':_0xf8320,'resourceId':_0x5a7342['id']}})[_0x43e7('0x19')](function(){return _0x30d47e;});})[_0x43e7('0x19')](function(){_0x1eba65['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac23d,_0x59e5b2){return function(_0x4e8e86){if(!_0x4e8e86){_0x4ac23d['sendStatus'](0x194);}return _0x4e8e86;};}function handleError(_0x5cb753,_0x14d888){_0x14d888=_0x14d888||0x1f4;return function(_0x49cda6){logger[_0x43e7('0x1e')](_0x49cda6[_0x43e7('0x33')]);if(_0x49cda6[_0x43e7('0x34')]){delete _0x49cda6[_0x43e7('0x34')];}_0x5cb753[_0x43e7('0x25')](_0x14d888)[_0x43e7('0x35')](_0x49cda6);};}exports[_0x43e7('0x36')]=function(_0x4f1a5f,_0x5332d9){var _0x5d84f4={},_0xfa0474={},_0xfe70e9={'count':0x0,'rows':[]};var _0x199ff6=_[_0x43e7('0x37')](db[_0x43e7('0x38')][_0x43e7('0x39')],function(_0x1d4589){return{'name':_0x1d4589[_0x43e7('0x3a')],'type':_0x1d4589['type'][_0x43e7('0x3b')]};});_0xfa0474[_0x43e7('0x3c')]=_['map'](_0x199ff6,_0x43e7('0x34'));_0xfa0474['query']=_[_0x43e7('0x3d')](_0x4f1a5f[_0x43e7('0x3e')]);_0xfa0474[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0xfa0474[_0x43e7('0x3c')],_0xfa0474[_0x43e7('0x3e')]);_0x5d84f4['attributes']=_['intersection'](_0xfa0474[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x41')]));_0x5d84f4[_0x43e7('0x42')]=_0x5d84f4['attributes'][_0x43e7('0x43')]?_0x5d84f4[_0x43e7('0x42')]:_0xfa0474['model'];if(!_0x4f1a5f[_0x43e7('0x3e')]['hasOwnProperty'](_0x43e7('0x44'))){_0x5d84f4['limit']=qs[_0x43e7('0x2a')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x2a')]);_0x5d84f4[_0x43e7('0x29')]=qs['offset'](_0x4f1a5f['query'][_0x43e7('0x29')]);}_0x5d84f4[_0x43e7('0x45')]=qs[_0x43e7('0x46')](_0x4f1a5f[_0x43e7('0x3e')]['sort']);_0x5d84f4['where']=qs['filters'](_[_0x43e7('0x47')](_0x4f1a5f['query'],_0xfa0474[_0x43e7('0x3f')]),_0x199ff6);if(_0x4f1a5f['query']['filter']){_0x5d84f4[_0x43e7('0x48')]=_['merge'](_0x5d84f4[_0x43e7('0x48')],{'$or':_[_0x43e7('0x37')](_0x199ff6,function(_0x257bd8){if(_0x257bd8[_0x43e7('0x49')]!=='VIRTUAL'){var _0x91f1e4={};_0x91f1e4[_0x257bd8[_0x43e7('0x34')]]={'$like':'%'+_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x4a')]+'%'};return _0x91f1e4;}})});}_0x5d84f4=_[_0x43e7('0x4b')]({},_0x5d84f4,_0x4f1a5f[_0x43e7('0x4c')]);var _0x51eef4={'where':_0x5d84f4['where']};return db[_0x43e7('0x38')][_0x43e7('0x28')](_0x51eef4)[_0x43e7('0x19')](function(_0x4c00a8){_0xfe70e9['count']=_0x4c00a8;if(_0x4f1a5f['query'][_0x43e7('0x4d')]){_0x5d84f4[_0x43e7('0x4e')]=[{'all':!![]}];}return db['Trunk'][_0x43e7('0x4f')](_0x5d84f4);})[_0x43e7('0x19')](function(_0x3c96fe){_0xfe70e9['rows']=_0x3c96fe;return _0xfe70e9;})['then'](respondWithFilteredResult(_0x5332d9,_0x5d84f4))['catch'](handleError(_0x5332d9,null));};exports['show']=function(_0x214e7e,_0xe955fc){var _0x52fea5={'raw':![],'where':{'id':_0x214e7e[_0x43e7('0x50')]['id']}},_0x23e7cb={};_0x23e7cb[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0x23e7cb['query']=_['keys'](_0x214e7e[_0x43e7('0x3e')]);_0x23e7cb[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],_0x23e7cb[_0x43e7('0x3e')]);_0x52fea5[_0x43e7('0x42')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x214e7e[_0x43e7('0x3e')]['fields']));_0x52fea5[_0x43e7('0x42')]=_0x52fea5[_0x43e7('0x42')]['length']?_0x52fea5[_0x43e7('0x42')]:_0x23e7cb['model'];if(_0x214e7e[_0x43e7('0x3e')][_0x43e7('0x4d')]){_0x52fea5[_0x43e7('0x4e')]=[{'all':!![]}];}_0x52fea5=_[_0x43e7('0x4b')]({},_0x52fea5,_0x214e7e[_0x43e7('0x4c')]);return db['Trunk']['find'](_0x52fea5)[_0x43e7('0x19')](handleEntityNotFound(_0xe955fc,null))[_0x43e7('0x19')](respondWithResult(_0xe955fc,null))[_0x43e7('0x23')](handleError(_0xe955fc,null));};exports[_0x43e7('0x51')]=function(_0x23d835,_0x25bb44){var _0xa47464={'where':{'id':_0x23d835[_0x43e7('0x50')]['id']}},_0x44f8a0={};_0x44f8a0[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0xa47464[_0x43e7('0x42')]=_['intersection'](_0x44f8a0[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x23d835[_0x43e7('0x3e')]['fields']));_0xa47464['attributes']=_0xa47464[_0x43e7('0x42')][_0x43e7('0x43')]?_0xa47464['attributes']:_0x44f8a0[_0x43e7('0x3c')];if(_0x23d835['query']['includeAll']){_0xa47464[_0x43e7('0x4e')]=[{'all':!![]}];}_0xa47464=_[_0x43e7('0x4b')]({},_0xa47464,_0x23d835[_0x43e7('0x4c')]);return db[_0x43e7('0x38')][_0x43e7('0x52')](_0xa47464)['then'](handleEntityNotFound(_0x25bb44,null))[_0x43e7('0x19')](function(_0xdb9fbe){if(_0xdb9fbe){var _0x4d89bd=_0xdb9fbe[_0x43e7('0x53')]({'plain':!![]});_0x4d89bd=qs[_0x43e7('0x54')](_0x4d89bd,['id',_0x43e7('0x55'),'updatedAt']);_0x23d835['body']=_['omit'](_0x23d835[_0x43e7('0x56')],['id',_0x43e7('0x55'),_0x43e7('0x57')]);return db[_0x43e7('0x38')]['create'](_['merge'](_0x4d89bd,_0x23d835[_0x43e7('0x56')]),{'include':_0x23d835[_0x43e7('0x3e')][_0x43e7('0x4d')]?[{'all':!![]}]:undefined})[_0x43e7('0x19')](function(_0x5ea0db){var _0x4438c0=_0x23d835[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x4438c0)throw new Error(_0x43e7('0x59'));if(_0x4438c0[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x4665db=_0x5ea0db[_0x43e7('0x53')]({'plain':!![]});var _0x406155=_0x43e7('0x31');return db[_0x43e7('0x5b')]['find']({'where':{'name':_0x406155,'userProfileId':_0x4438c0['userProfileId']},'raw':!![]})[_0x43e7('0x19')](function(_0x58a3a8){if(_0x58a3a8&&_0x58a3a8['autoAssociation']===0x0){return db['UserProfileResource'][_0x43e7('0x5c')]({'name':_0x4665db[_0x43e7('0x34')],'resourceId':_0x4665db['id'],'type':_0x58a3a8['name'],'sectionId':_0x58a3a8['id']},{})[_0x43e7('0x19')](function(){return _0x5ea0db;});}else{return _0x5ea0db;}})[_0x43e7('0x23')](function(_0x1d8438){logger['error'](_0x43e7('0x5d'),_0x1d8438);throw _0x1d8438;});}return _0x5ea0db;});}})[_0x43e7('0x19')](respondWithResult(_0x25bb44,0xc9))[_0x43e7('0x23')](handleError(_0x25bb44,null));};exports[_0x43e7('0x5c')]=function(_0x2f43d7,_0x472a19,_0x1e02fa){var _0x515f01;return db[_0x43e7('0x38')][_0x43e7('0x5c')](_0x2f43d7[_0x43e7('0x56')],{'raw':!![]})['then'](function(_0x56b06d){_0x515f01=_0x56b06d;return db[_0x43e7('0x38')]['findAll']({'raw':!![]});})['then'](function(_0x1b793d){var _0x154e47=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x16499c=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x4e5956=ejs[_0x43e7('0x64')](_0x154e47,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x65'),_0x4e5956);if(_0x515f01[_0x43e7('0x66')]){var _0x37301b=ejs[_0x43e7('0x64')](_0x16499c,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x37301b);}})[_0x43e7('0x19')](function(){return respondWithRpcPromise(_0x43e7('0x68'),'create',{'module':_0x43e7('0x69')});})[_0x43e7('0x19')](function(){var _0x219dc6=_0x2f43d7[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x219dc6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x219dc6[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x35d133=_0x515f01[_0x43e7('0x53')]({'plain':!![]});return db[_0x43e7('0x5b')][_0x43e7('0x52')]({'where':{'name':_0x43e7('0x31'),'userProfileId':_0x219dc6['userProfileId']},'raw':!![]})['then'](function(_0x405faa){if(_0x405faa&&_0x405faa['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x35d133[_0x43e7('0x34')],'resourceId':_0x35d133['id'],'type':_0x405faa[_0x43e7('0x34')],'sectionId':_0x405faa['id']},{})[_0x43e7('0x19')](function(){return _0x515f01;});}else{return _0x515f01;}})[_0x43e7('0x23')](function(_0x18713b){logger[_0x43e7('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x18713b);throw _0x18713b;});}return _0x515f01;})[_0x43e7('0x19')](respondWithResult(_0x472a19,0xc9))[_0x43e7('0x23')](handleError(_0x472a19,null));};exports[_0x43e7('0x2f')]=function(_0x5b4c76,_0x2abca0,_0xea84ec){var _0x184ae3;return db[_0x43e7('0x38')][_0x43e7('0x52')]({'where':{'id':_0x5b4c76[_0x43e7('0x50')]['id']}})[_0x43e7('0x19')](handleEntityNotFound(_0x2abca0,null))[_0x43e7('0x19')](saveUpdates(_0x5b4c76['body'],null))['then'](function(_0x55990c){if(_0x55990c){_0x184ae3=_0x55990c;return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});}})['then'](function(_0x3fe23f){if(_0x3fe23f){var _0x39a787=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x177a7a=fs[_0x43e7('0x62')](path['join'](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x3b7e5b=ejs['render'](_0x39a787,{'trunks':_0x3fe23f||[]});fs[_0x43e7('0x6a')](_0x43e7('0x65'),_0x3b7e5b);var _0x401654=ejs[_0x43e7('0x64')](_0x177a7a,{'trunks':_0x3fe23f||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x401654);return respondWithRpcPromise('Reload',_0x43e7('0x2f'),{'module':_0x43e7('0x69')});}return null;})[_0x43e7('0x19')](function(_0x90667c){if(_0x90667c){return _0x184ae3;}})[_0x43e7('0x19')](respondWithResult(_0x2abca0,null))[_0x43e7('0x23')](handleError(_0x2abca0,null));};exports[_0x43e7('0x30')]=function(_0x5e8d4e,_0x109c86,_0x40257e){var _0x1aea4e;return db[_0x43e7('0x38')]['find']({'where':{'id':_0x5e8d4e['params']['id']}})['then'](handleEntityNotFound(_0x109c86,null))[_0x43e7('0x19')](removeEntity(_0x109c86,null))['then'](function(){return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});})[_0x43e7('0x19')](function(_0x7387f6){var _0xa75254=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x3de22e=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x63')),_0x43e7('0x61'));var _0x206e54=ejs['render'](_0xa75254,{'trunks':_0x7387f6});var _0x5e04ec=ejs[_0x43e7('0x64')](_0x3de22e,{'trunks':_0x7387f6});fs[_0x43e7('0x6a')]('/etc/asterisk/sip_xcally_trunks.conf',_0x206e54);fs[_0x43e7('0x6a')](_0x43e7('0x67'),_0x5e04ec);return respondWithRpcPromise('Reload','destroy',{'module':_0x43e7('0x69')});})[_0x43e7('0x23')](handleError(_0x109c86,null));};
\ No newline at end of file
index f96151d..443ec54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bef=['bluebird','rimraf','../../config/environment','exports','define','Trunk','tools_trunks','lodash','../../config/logger','moment'];(function(_0x17b84b,_0x5aeb2d){var _0x2db11a=function(_0x2edf61){while(--_0x2edf61){_0x17b84b['push'](_0x17b84b['shift']());}};_0x2db11a(++_0x5aeb2d);}(_0x4bef,0x147));var _0xf4be=function(_0x3207aa,_0xe86a72){_0x3207aa=_0x3207aa-0x0;var _0x51758f=_0x4bef[_0x3207aa];return _0x51758f;};'use strict';var _=require(_0xf4be('0x0'));var util=require('util');var logger=require(_0xf4be('0x1'))('api');var moment=require(_0xf4be('0x2'));var BPromise=require(_0xf4be('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf4be('0x4'));var config=require(_0xf4be('0x5'));var attributes=require('./trunk.attributes');module[_0xf4be('0x6')]=function(_0x503711,_0x302a9c){return _0x503711[_0xf4be('0x7')](_0xf4be('0x8'),attributes,{'tableName':_0xf4be('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x35ae=['rimraf','exports','define','Trunk','tools_trunks','lodash','bluebird','request-promise','path'];(function(_0x204e52,_0x1d553a){var _0xe5dd25=function(_0x39302b){while(--_0x39302b){_0x204e52['push'](_0x204e52['shift']());}};_0xe5dd25(++_0x1d553a);}(_0x35ae,0xf8));var _0xe35a=function(_0x3856f5,_0x227675){_0x3856f5=_0x3856f5-0x0;var _0x2e8d1b=_0x35ae[_0x3856f5];return _0x2e8d1b;};'use strict';var _=require(_0xe35a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xe35a('0x1'));var rp=require(_0xe35a('0x2'));var fs=require('fs');var path=require(_0xe35a('0x3'));var rimraf=require(_0xe35a('0x4'));var config=require('../../config/environment');var attributes=require('./trunk.attributes');module[_0xe35a('0x5')]=function(_0x4baed2,_0x1968ef){return _0x4baed2[_0xe35a('0x6')](_0xe35a('0x7'),attributes,{'tableName':_0xe35a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ba3f06..7e94557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91d4=['info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','GetTrunk','Trunk','findAll','options','where','attributes','limit','map','include','model','catch','ShowTrunk','find','lodash','util','moment','bluebird','../../config/utils','../../config/logger','jayson/promise','client','request','then'];(function(_0x160e67,_0x46b3a1){var _0x42a5bf=function(_0x2da058){while(--_0x2da058){_0x160e67['push'](_0x160e67['shift']());}};_0x42a5bf(++_0x46b3a1);}(_0x91d4,0x9b));var _0x491d=function(_0x4f6262,_0x57c45e){_0x4f6262=_0x4f6262-0x0;var _0x539458=_0x91d4[_0x4f6262];return _0x539458;};'use strict';var _=require(_0x491d('0x0'));var util=require(_0x491d('0x1'));var moment=require(_0x491d('0x2'));var BPromise=require(_0x491d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x491d('0x4'));var logger=require(_0x491d('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x491d('0x6'));var client=jayson[_0x491d('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cf486,_0x11595f,_0x196e27){return new BPromise(function(_0x12321e,_0x411e8a){return client[_0x491d('0x8')](_0x2cf486,_0x196e27)[_0x491d('0x9')](function(_0x288b56){logger[_0x491d('0xa')]('Trunk,\x20%s,\x20%s',_0x11595f,_0x491d('0xb'));logger[_0x491d('0xc')](_0x491d('0xd'),_0x11595f,_0x491d('0xb'),JSON[_0x491d('0xe')](_0x288b56));if(_0x288b56[_0x491d('0xf')]){if(_0x288b56[_0x491d('0xf')][_0x491d('0x10')]===0x1f4){logger['error'](_0x491d('0x11'),_0x11595f,_0x288b56[_0x491d('0xf')][_0x491d('0x12')]);return _0x411e8a(_0x288b56['error'][_0x491d('0x12')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x11595f,_0x288b56[_0x491d('0xf')]['message']);return _0x12321e(_0x288b56[_0x491d('0xf')][_0x491d('0x12')]);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x11595f,_0x491d('0xb'));_0x12321e(_0x288b56[_0x491d('0x13')][_0x491d('0x12')]);}})['catch'](function(_0x23a450){logger[_0x491d('0xf')](_0x491d('0x11'),_0x11595f,_0x23a450);_0x411e8a(_0x23a450);});});}exports[_0x491d('0x14')]=function(_0xe2dec2){var _0x404627=this;return new Promise(function(_0x4fd42b,_0x374e9e){return db[_0x491d('0x15')][_0x491d('0x16')]({'raw':_0xe2dec2[_0x491d('0x17')]?_0xe2dec2[_0x491d('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xe2dec2[_0x491d('0x17')]?_0xe2dec2[_0x491d('0x17')][_0x491d('0x18')]||null:null,'attributes':_0xe2dec2[_0x491d('0x17')]?_0xe2dec2[_0x491d('0x17')][_0x491d('0x19')]||null:null,'limit':_0xe2dec2[_0x491d('0x17')]?_0xe2dec2[_0x491d('0x17')][_0x491d('0x1a')]||null:null,'include':_0xe2dec2[_0x491d('0x17')]?_0xe2dec2['options']['include']?_[_0x491d('0x1b')](_0xe2dec2[_0x491d('0x17')][_0x491d('0x1c')],function(_0x2258e9){return{'model':db[_0x2258e9[_0x491d('0x1d')]],'as':_0x2258e9['as'],'attributes':_0x2258e9[_0x491d('0x19')],'include':_0x2258e9[_0x491d('0x1c')]?_['map'](_0x2258e9[_0x491d('0x1c')],function(_0x276546){return{'model':db[_0x276546[_0x491d('0x1d')]],'as':_0x276546['as'],'attributes':_0x276546[_0x491d('0x19')],'include':_0x276546[_0x491d('0x1c')]?_['map'](_0x276546[_0x491d('0x1c')],function(_0x111de0){return{'model':db[_0x111de0[_0x491d('0x1d')]],'as':_0x111de0['as'],'attributes':_0x111de0[_0x491d('0x19')]};}):[]};}):[]};}):[]:[]})[_0x491d('0x9')](function(_0x45a0bd){logger[_0x491d('0xa')](_0x491d('0x14'),_0xe2dec2);logger[_0x491d('0xc')](_0x491d('0x14'),_0xe2dec2,JSON[_0x491d('0xe')](_0x45a0bd));_0x4fd42b(_0x45a0bd);})[_0x491d('0x1e')](function(_0x151cfe){logger[_0x491d('0xf')]('GetTrunk',_0x151cfe[_0x491d('0x12')],_0xe2dec2);_0x374e9e(_0x404627['error'](0x1f4,_0x151cfe[_0x491d('0x12')]));});});};exports[_0x491d('0x1f')]=function(_0x212e2c){var _0x4375ef=this;return new Promise(function(_0x1157fe,_0x43b509){return db[_0x491d('0x15')][_0x491d('0x20')]({'raw':_0x212e2c[_0x491d('0x17')]?_0x212e2c[_0x491d('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x212e2c['options']?_0x212e2c[_0x491d('0x17')][_0x491d('0x18')]||null:null,'attributes':_0x212e2c[_0x491d('0x17')]?_0x212e2c[_0x491d('0x17')][_0x491d('0x19')]||null:null,'include':_0x212e2c[_0x491d('0x17')]?_0x212e2c[_0x491d('0x17')][_0x491d('0x1c')]?_['map'](_0x212e2c[_0x491d('0x17')][_0x491d('0x1c')],function(_0x4a034e){return{'model':db[_0x4a034e[_0x491d('0x1d')]],'as':_0x4a034e['as'],'attributes':_0x4a034e[_0x491d('0x19')],'include':_0x4a034e[_0x491d('0x1c')]?_[_0x491d('0x1b')](_0x4a034e[_0x491d('0x1c')],function(_0x1e75c2){return{'model':db[_0x1e75c2[_0x491d('0x1d')]],'as':_0x1e75c2['as'],'attributes':_0x1e75c2[_0x491d('0x19')],'include':_0x1e75c2['include']?_[_0x491d('0x1b')](_0x1e75c2['include'],function(_0x246deb){return{'model':db[_0x246deb[_0x491d('0x1d')]],'as':_0x246deb['as'],'attributes':_0x246deb['attributes']};}):[]};}):[]};}):[]:[]})[_0x491d('0x9')](function(_0x1335a4){logger['info']('ShowTrunk',_0x212e2c);logger[_0x491d('0xc')]('ShowTrunk',_0x212e2c,JSON[_0x491d('0xe')](_0x1335a4));_0x1157fe(_0x1335a4);})[_0x491d('0x1e')](function(_0x160afa){logger['error'](_0x491d('0x1f'),_0x160afa[_0x491d('0x12')],_0x212e2c);_0x43b509(_0x4375ef[_0x491d('0xf')](0x1f4,_0x160afa[_0x491d('0x12')]));});});};
\ No newline at end of file
+var _0x8190=['findAll','options','raw','where','attributes','limit','include','map','model','ShowTrunk','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTrunk','Trunk'];(function(_0x1a0ef3,_0x535bbf){var _0x2b86da=function(_0x5d30f9){while(--_0x5d30f9){_0x1a0ef3['push'](_0x1a0ef3['shift']());}};_0x2b86da(++_0x535bbf);}(_0x8190,0x11b));var _0x0819=function(_0x1129c2,_0x279c66){_0x1129c2=_0x1129c2-0x0;var _0x57b617=_0x8190[_0x1129c2];return _0x57b617;};'use strict';var _=require(_0x0819('0x0'));var util=require(_0x0819('0x1'));var moment=require(_0x0819('0x2'));var BPromise=require(_0x0819('0x3'));var rs=require(_0x0819('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0819('0x5'))['db'];var utils=require(_0x0819('0x6'));var logger=require('../../config/logger')(_0x0819('0x7'));var config=require(_0x0819('0x8'));var jayson=require(_0x0819('0x9'));var client=jayson[_0x0819('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x488ee1,_0x14466f,_0x47aef2){return new BPromise(function(_0x8d306d,_0x161aa0){return client['request'](_0x488ee1,_0x47aef2)['then'](function(_0x126a93){logger[_0x0819('0xb')](_0x0819('0xc'),_0x14466f,_0x0819('0xd'));logger['debug'](_0x0819('0xe'),_0x14466f,'request\x20sent',JSON[_0x0819('0xf')](_0x126a93));if(_0x126a93[_0x0819('0x10')]){if(_0x126a93[_0x0819('0x10')][_0x0819('0x11')]===0x1f4){logger[_0x0819('0x10')](_0x0819('0xc'),_0x14466f,_0x126a93[_0x0819('0x10')][_0x0819('0x12')]);return _0x161aa0(_0x126a93[_0x0819('0x10')][_0x0819('0x12')]);}logger[_0x0819('0x10')](_0x0819('0xc'),_0x14466f,_0x126a93[_0x0819('0x10')][_0x0819('0x12')]);return _0x8d306d(_0x126a93[_0x0819('0x10')][_0x0819('0x12')]);}else{logger[_0x0819('0xb')](_0x0819('0xc'),_0x14466f,'request\x20sent');_0x8d306d(_0x126a93[_0x0819('0x13')][_0x0819('0x12')]);}})[_0x0819('0x14')](function(_0x25e68d){logger[_0x0819('0x10')](_0x0819('0xc'),_0x14466f,_0x25e68d);_0x161aa0(_0x25e68d);});});}exports[_0x0819('0x15')]=function(_0x434c50){var _0xc98dd8=this;return new Promise(function(_0xbdc51e,_0x503a3a){return db[_0x0819('0x16')][_0x0819('0x17')]({'raw':_0x434c50[_0x0819('0x18')]?_0x434c50[_0x0819('0x18')][_0x0819('0x19')]===undefined?!![]:![]:!![],'where':_0x434c50[_0x0819('0x18')]?_0x434c50[_0x0819('0x18')][_0x0819('0x1a')]||null:null,'attributes':_0x434c50[_0x0819('0x18')]?_0x434c50[_0x0819('0x18')][_0x0819('0x1b')]||null:null,'limit':_0x434c50[_0x0819('0x18')]?_0x434c50['options'][_0x0819('0x1c')]||null:null,'include':_0x434c50[_0x0819('0x18')]?_0x434c50[_0x0819('0x18')][_0x0819('0x1d')]?_[_0x0819('0x1e')](_0x434c50[_0x0819('0x18')][_0x0819('0x1d')],function(_0x40d576){return{'model':db[_0x40d576['model']],'as':_0x40d576['as'],'attributes':_0x40d576[_0x0819('0x1b')],'include':_0x40d576[_0x0819('0x1d')]?_[_0x0819('0x1e')](_0x40d576[_0x0819('0x1d')],function(_0x3e5b35){return{'model':db[_0x3e5b35[_0x0819('0x1f')]],'as':_0x3e5b35['as'],'attributes':_0x3e5b35[_0x0819('0x1b')],'include':_0x3e5b35['include']?_[_0x0819('0x1e')](_0x3e5b35['include'],function(_0x56f1f8){return{'model':db[_0x56f1f8[_0x0819('0x1f')]],'as':_0x56f1f8['as'],'attributes':_0x56f1f8[_0x0819('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x506c9f){logger[_0x0819('0xb')](_0x0819('0x15'),_0x434c50);logger['debug'](_0x0819('0x15'),_0x434c50,JSON[_0x0819('0xf')](_0x506c9f));_0xbdc51e(_0x506c9f);})[_0x0819('0x14')](function(_0x2f29f2){logger[_0x0819('0x10')](_0x0819('0x15'),_0x2f29f2[_0x0819('0x12')],_0x434c50);_0x503a3a(_0xc98dd8[_0x0819('0x10')](0x1f4,_0x2f29f2['message']));});});};exports['ShowTrunk']=function(_0x5a88b8){var _0x4c5ef2=this;return new Promise(function(_0x4e0f4b,_0x54ea47){return db[_0x0819('0x16')]['find']({'raw':_0x5a88b8[_0x0819('0x18')]?_0x5a88b8['options'][_0x0819('0x19')]===undefined?!![]:![]:!![],'where':_0x5a88b8[_0x0819('0x18')]?_0x5a88b8[_0x0819('0x18')]['where']||null:null,'attributes':_0x5a88b8[_0x0819('0x18')]?_0x5a88b8[_0x0819('0x18')]['attributes']||null:null,'include':_0x5a88b8[_0x0819('0x18')]?_0x5a88b8[_0x0819('0x18')][_0x0819('0x1d')]?_['map'](_0x5a88b8[_0x0819('0x18')]['include'],function(_0x4850d6){return{'model':db[_0x4850d6['model']],'as':_0x4850d6['as'],'attributes':_0x4850d6[_0x0819('0x1b')],'include':_0x4850d6[_0x0819('0x1d')]?_['map'](_0x4850d6[_0x0819('0x1d')],function(_0x1405a8){return{'model':db[_0x1405a8[_0x0819('0x1f')]],'as':_0x1405a8['as'],'attributes':_0x1405a8['attributes'],'include':_0x1405a8[_0x0819('0x1d')]?_[_0x0819('0x1e')](_0x1405a8['include'],function(_0x5e0479){return{'model':db[_0x5e0479[_0x0819('0x1f')]],'as':_0x5e0479['as'],'attributes':_0x5e0479['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x58fa18){logger[_0x0819('0xb')](_0x0819('0x20'),_0x5a88b8);logger[_0x0819('0x21')](_0x0819('0x20'),_0x5a88b8,JSON['stringify'](_0x58fa18));_0x4e0f4b(_0x58fa18);})[_0x0819('0x14')](function(_0x5f57b5){logger[_0x0819('0x10')](_0x0819('0x20'),_0x5f57b5['message'],_0x5a88b8);_0x54ea47(_0x4c5ef2[_0x0819('0x10')](0x1f4,_0x5f57b5[_0x0819('0x12')]));});});};
\ No newline at end of file
index 7023f44..09bd574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe31=['update','express','../../components/auth/service','./user-setting.controller','put','/:id','isAuthenticated'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xbe31,0x10b));var _0x1be3=function(_0x492837,_0x514e8e){_0x492837=_0x492837-0x0;var _0x44f215=_0xbe31[_0x492837];return _0x44f215;};'use strict';var express=require(_0x1be3('0x0'));var router=express['Router']();var auth=require(_0x1be3('0x1'));var controller=require(_0x1be3('0x2'));router[_0x1be3('0x3')](_0x1be3('0x4'),auth[_0x1be3('0x5')](),controller[_0x1be3('0x6')]);module['exports']=router;
\ No newline at end of file
+var _0x8d26=['express','Router','../../components/auth/service','put','/:id','isAuthenticated','update','exports'];(function(_0x149083,_0x4047b6){var _0x4dc74e=function(_0x1211f9){while(--_0x1211f9){_0x149083['push'](_0x149083['shift']());}};_0x4dc74e(++_0x4047b6);}(_0x8d26,0x150));var _0x68d2=function(_0x3a19d4,_0x3f19a4){_0x3a19d4=_0x3a19d4-0x0;var _0x5b858b=_0x8d26[_0x3a19d4];return _0x5b858b;};'use strict';var express=require(_0x68d2('0x0'));var router=express[_0x68d2('0x1')]();var auth=require(_0x68d2('0x2'));var controller=require('./user-setting.controller');router[_0x68d2('0x3')](_0x68d2('0x4'),auth[_0x68d2('0x5')](),controller[_0x68d2('0x6')]);module[_0x68d2('0x7')]=router;
\ No newline at end of file
index 100bd54..64527c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a9=['BOOLEAN','TEXT','DATE','UserId','error','info','debug','ENUM'];(function(_0x10eb38,_0x2086bd){var _0x5af9b5=function(_0x2075c7){while(--_0x2075c7){_0x10eb38['push'](_0x10eb38['shift']());}};_0x5af9b5(++_0x2086bd);}(_0xf5a9,0x19c));var _0x9f5a=function(_0x3ac215,_0x7ca8ae){_0x3ac215=_0x3ac215-0x0;var _0x423237=_0xf5a9[_0x3ac215];return _0x423237;};'use strict';var Sequelize=require('sequelize');const CLIENT_SIDE_LOG_LEVELS=[_0x9f5a('0x0'),'warning',_0x9f5a('0x1'),_0x9f5a('0x2')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize[_0x9f5a('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x9f5a('0x0'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x9f5a('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x9f5a('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x9f5a('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0x9f5a('0x7')}};
\ No newline at end of file
+var _0xf208=['error','BOOLEAN','TEXT','DATE','INTEGER','sequelize','info','debug','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xf208,0x10a));var _0x8f20=function(_0x7371f0,_0xb81970){_0x7371f0=_0x7371f0-0x0;var _0x401c4a=_0xf208[_0x7371f0];return _0x401c4a;};'use strict';var Sequelize=require(_0x8f20('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error','warning',_0x8f20('0x1'),_0x8f20('0x2')];module[_0x8f20('0x3')]={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x8f20('0x4'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x8f20('0x5')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x8f20('0x6')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x8f20('0x7')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x8f20('0x8')],'unique':'UserId'}};
\ No newline at end of file
index 1c837d0..2d79762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['UserSetting','find','then','catch','lodash','ioredis','../../config/environment','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','status','json','update','sendStatus','stack','name','send','user','params','Invalid\x20user\x20setting\x20id'];(function(_0x44a9fb,_0x5231f3){var _0x3b296e=function(_0x25dc5a){while(--_0x25dc5a){_0x44a9fb['push'](_0x44a9fb['shift']());}};_0x3b296e(++_0x5231f3);}(_0xda55,0x6d));var _0x5da5=function(_0x4d7f3f,_0x4d2803){_0x4d7f3f=_0x4d7f3f-0x0;var _0x5d67cc=_0xda55[_0x4d7f3f];return _0x5d67cc;};'use strict';var _=require(_0x5da5('0x0'));var Redis=require(_0x5da5('0x1'));var logger=require('../../config/logger')('api');var config=require(_0x5da5('0x2'));var db=require(_0x5da5('0x3'))['db'];var socket=require(_0x5da5('0x4'))(new Redis(config[_0x5da5('0x5')]));require(_0x5da5('0x6'))['register'](socket);config[_0x5da5('0x5')]=_['defaults'](config[_0x5da5('0x5')],{'host':'localhost','port':0x18eb});function respondWithResult(_0x2fd877,_0x267469){_0x267469=_0x267469||0xc8;return function(_0x71b187){if(_0x71b187){return _0x2fd877[_0x5da5('0x7')](_0x267469)[_0x5da5('0x8')](_0x71b187);}};}function saveUpdates(_0x25c873){return function(_0x3d1adf){if(_0x3d1adf){return _0x3d1adf[_0x5da5('0x9')](_0x25c873)['then'](function(_0x3ed24c){return _0x3ed24c;});}return null;};}function handleEntityNotFound(_0x1f98a7){return function(_0x2731a3){if(!_0x2731a3){_0x1f98a7[_0x5da5('0xa')](0x194);}return _0x2731a3;};}function handleError(_0x1a047e,_0x2a361c){_0x2a361c=_0x2a361c||0x1f4;return function(_0x33313e){logger['error'](_0x33313e[_0x5da5('0xb')]);if(_0x33313e[_0x5da5('0xc')]){delete _0x33313e['name'];}_0x1a047e[_0x5da5('0x7')](_0x2a361c)[_0x5da5('0xd')](_0x33313e);};}exports[_0x5da5('0x9')]=function(_0x43d526,_0x1877d4){if(_0x43d526[_0x5da5('0xe')]['role']!=='admin')throw new Error('Unauthorized');if(isNaN(Number(_0x43d526[_0x5da5('0xf')]['id'])))throw new Error(_0x5da5('0x10'));return db[_0x5da5('0x11')][_0x5da5('0x12')]({'where':{'id':_0x43d526[_0x5da5('0xf')]['id']}})[_0x5da5('0x13')](handleEntityNotFound(_0x1877d4,null))[_0x5da5('0x13')](saveUpdates(_0x43d526['body'],null))[_0x5da5('0x13')](respondWithResult(_0x1877d4,null))[_0x5da5('0x14')](handleError(_0x1877d4,null));};
\ No newline at end of file
+var _0xac55=['lodash','ioredis','../../config/logger','api','../../mysqldb','socket.io-emitter','redis','./user-setting.socket','register','defaults','status','json','sendStatus','error','name','send','update','role','admin','params','UserSetting','find','then','body'];(function(_0x44a94,_0x39f323){var _0x31ef56=function(_0x54e098){while(--_0x54e098){_0x44a94['push'](_0x44a94['shift']());}};_0x31ef56(++_0x39f323);}(_0xac55,0x1c8));var _0x5ac5=function(_0x376e9c,_0x43fd){_0x376e9c=_0x376e9c-0x0;var _0x14b090=_0xac55[_0x376e9c];return _0x14b090;};'use strict';var _=require(_0x5ac5('0x0'));var Redis=require(_0x5ac5('0x1'));var logger=require(_0x5ac5('0x2'))(_0x5ac5('0x3'));var config=require('../../config/environment');var db=require(_0x5ac5('0x4'))['db'];var socket=require(_0x5ac5('0x5'))(new Redis(config[_0x5ac5('0x6')]));require(_0x5ac5('0x7'))[_0x5ac5('0x8')](socket);config[_0x5ac5('0x6')]=_[_0x5ac5('0x9')](config['redis'],{'host':'localhost','port':0x18eb});function respondWithResult(_0x34093b,_0x247752){_0x247752=_0x247752||0xc8;return function(_0x2bee03){if(_0x2bee03){return _0x34093b[_0x5ac5('0xa')](_0x247752)[_0x5ac5('0xb')](_0x2bee03);}};}function saveUpdates(_0x47a7b4){return function(_0x18f785){if(_0x18f785){return _0x18f785['update'](_0x47a7b4)['then'](function(_0x2414f9){return _0x2414f9;});}return null;};}function handleEntityNotFound(_0x13ef10){return function(_0x4ec845){if(!_0x4ec845){_0x13ef10[_0x5ac5('0xc')](0x194);}return _0x4ec845;};}function handleError(_0x294425,_0x5a2aaa){_0x5a2aaa=_0x5a2aaa||0x1f4;return function(_0x2b70ed){logger[_0x5ac5('0xd')](_0x2b70ed['stack']);if(_0x2b70ed[_0x5ac5('0xe')]){delete _0x2b70ed[_0x5ac5('0xe')];}_0x294425[_0x5ac5('0xa')](_0x5a2aaa)[_0x5ac5('0xf')](_0x2b70ed);};}exports[_0x5ac5('0x10')]=function(_0x4808ea,_0xe37d9a){if(_0x4808ea['user'][_0x5ac5('0x11')]!==_0x5ac5('0x12'))throw new Error('Unauthorized');if(isNaN(Number(_0x4808ea[_0x5ac5('0x13')]['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x5ac5('0x14')][_0x5ac5('0x15')]({'where':{'id':_0x4808ea[_0x5ac5('0x13')]['id']}})[_0x5ac5('0x16')](handleEntityNotFound(_0xe37d9a,null))[_0x5ac5('0x16')](saveUpdates(_0x4808ea[_0x5ac5('0x17')],null))[_0x5ac5('0x16')](respondWithResult(_0xe37d9a,null))['catch'](handleError(_0xe37d9a,null));};
\ No newline at end of file
index 4d03262..4690d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a42=['hasOwnProperty','hook','exports','events','../../mysqldb','UserSetting','setMaxListeners','save','remove','emit'];(function(_0x505241,_0x54a73d){var _0x1a1fcb=function(_0x264d96){while(--_0x264d96){_0x505241['push'](_0x505241['shift']());}};_0x1a1fcb(++_0x54a73d);}(_0x2a42,0xdf));var _0x22a4=function(_0x49bac2,_0x18164c){_0x49bac2=_0x49bac2-0x0;var _0x51932c=_0x2a42[_0x49bac2];return _0x51932c;};'use strict';var EventEmitter=require(_0x22a4('0x0'));var UserSetting=require(_0x22a4('0x1'))['db'][_0x22a4('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x22a4('0x3')](0x0);var events={'afterCreate':_0x22a4('0x4'),'afterUpdate':'update','afterDestroy':_0x22a4('0x5')};function emitEvent(_0x259829){return function(_0x164e7b,_0x222c84,_0xa2bfb7){UserSettingEvents[_0x22a4('0x6')](_0x259829+':'+_0x164e7b['id'],_0x164e7b);UserSettingEvents['emit'](_0x259829,_0x164e7b);_0xa2bfb7(null);};}for(var e in events){if(events[_0x22a4('0x7')](e)){var event=events[e];UserSetting[_0x22a4('0x8')](e,emitEvent(event));}}module[_0x22a4('0x9')]=UserSettingEvents;
\ No newline at end of file
+var _0xe6d4=['update','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x4e36a6,_0x387605){var _0xe78dd8=function(_0x1744a0){while(--_0x1744a0){_0x4e36a6['push'](_0x4e36a6['shift']());}};_0xe78dd8(++_0x387605);}(_0xe6d4,0x191));var _0x4e6d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xe6d4[_0xa464c9];return _0x3d73c4;};'use strict';var EventEmitter=require(_0x4e6d('0x0'));var UserSetting=require(_0x4e6d('0x1'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x4e6d('0x2')](0x0);var events={'afterCreate':_0x4e6d('0x3'),'afterUpdate':_0x4e6d('0x4'),'afterDestroy':_0x4e6d('0x5')};function emitEvent(_0x566b83){return function(_0x1807e3,_0x282373,_0x147359){UserSettingEvents[_0x4e6d('0x6')](_0x566b83+':'+_0x1807e3['id'],_0x1807e3);UserSettingEvents[_0x4e6d('0x6')](_0x566b83,_0x1807e3);_0x147359(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0x4e6d('0x7')](e,emitEvent(event));}}module[_0x4e6d('0x8')]=UserSettingEvents;
\ No newline at end of file
index 37dba6b..f022cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb1=['define','UserSetting','user_settings','clientSideLoggingEnabledSince','exports'];(function(_0x404795,_0x515cc3){var _0x59b015=function(_0x32d738){while(--_0x32d738){_0x404795['push'](_0x404795['shift']());}};_0x59b015(++_0x515cc3);}(_0x5eb1,0x7c));var _0x15eb=function(_0x119280,_0x439c3e){_0x119280=_0x119280-0x0;var _0x481797=_0x5eb1[_0x119280];return _0x481797;};'use strict';var attributes=require('./user-setting.attributes');module[_0x15eb('0x0')]=function(_0x18927a){return _0x18927a[_0x15eb('0x1')](_0x15eb('0x2'),attributes,{'tableName':_0x15eb('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1c2f32){if(!_0x1c2f32['clientSideLoggingEnabled'])_0x1c2f32[_0x15eb('0x4')]=null;else if(_0x1c2f32[_0x15eb('0x4')]===null)_0x1c2f32[_0x15eb('0x4')]=new Date();}}});};
\ No newline at end of file
+var _0x1beb=['./user-setting.attributes','exports','define','UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince'];(function(_0x34f7d8,_0x1acc0f){var _0x5ed89a=function(_0x2fd026){while(--_0x2fd026){_0x34f7d8['push'](_0x34f7d8['shift']());}};_0x5ed89a(++_0x1acc0f);}(_0x1beb,0x165));var _0xb1be=function(_0x243a12,_0x21d93c){_0x243a12=_0x243a12-0x0;var _0x86c510=_0x1beb[_0x243a12];return _0x86c510;};'use strict';var attributes=require(_0xb1be('0x0'));module[_0xb1be('0x1')]=function(_0x56672f){return _0x56672f[_0xb1be('0x2')](_0xb1be('0x3'),attributes,{'tableName':_0xb1be('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x55259c){if(!_0x55259c[_0xb1be('0x5')])_0x55259c[_0xb1be('0x6')]=null;else if(_0x55259c['clientSideLoggingEnabledSince']===null)_0x55259c[_0xb1be('0x6')]=new Date();}}});};
\ No newline at end of file
index 978a6f9..c867c5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x729f=['remove','update','user-setting:update','user-setting:update:user-','user-setting:'];(function(_0x10d175,_0x5607e9){var _0x17e404=function(_0x1e828a){while(--_0x1e828a){_0x10d175['push'](_0x10d175['shift']());}};_0x17e404(++_0x5607e9);}(_0x729f,0x78));var _0xf729=function(_0x135ca3,_0x28a5b0){_0x135ca3=_0x135ca3-0x0;var _0x531780=_0x729f[_0x135ca3];return _0x531780;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=['save',_0xf729('0x0'),_0xf729('0x1')];function createListener(_0x19bb1f,_0x44cb95){return function(_0x460e26){_0x44cb95['emit'](_0x19bb1f,_0x460e26);if(_0x19bb1f===_0xf729('0x2')){_0x44cb95['emit'](_0xf729('0x3')+_0x460e26['UserId'],_0x460e26);}};}exports['register']=function(_0x4de97b){for(var _0x7354d3=0x0,_0xf18d41=events['length'];_0x7354d3<_0xf18d41;_0x7354d3++){var _0x5d2477=events[_0x7354d3];var _0x5054a1=createListener(_0xf729('0x4')+_0x5d2477,_0x4de97b);UserSettingEvents['on'](_0x5d2477,_0x5054a1);}};
\ No newline at end of file
+var _0xbed3=['register','length','./user-setting.events','save','remove','user-setting:update','emit','user-setting:update:user-','UserId'];(function(_0x10244a,_0x3e96f4){var _0x4daacd=function(_0x3ef358){while(--_0x3ef358){_0x10244a['push'](_0x10244a['shift']());}};_0x4daacd(++_0x3e96f4);}(_0xbed3,0x158));var _0x3bed=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xbed3[_0x3b380d];return _0x54502b;};'use strict';var UserSettingEvents=require(_0x3bed('0x0'));var events=[_0x3bed('0x1'),_0x3bed('0x2'),'update'];function createListener(_0x7c81e8,_0x10b285){return function(_0x138ee6){_0x10b285['emit'](_0x7c81e8,_0x138ee6);if(_0x7c81e8===_0x3bed('0x3')){_0x10b285[_0x3bed('0x4')](_0x3bed('0x5')+_0x138ee6[_0x3bed('0x6')],_0x138ee6);}};}exports[_0x3bed('0x7')]=function(_0x1b629c){for(var _0x547a89=0x0,_0x4a1f69=events[_0x3bed('0x8')];_0x547a89<_0x4a1f69;_0x547a89++){var _0xc89611=events[_0x547a89];var _0x1bd96f=createListener('user-setting:'+_0xc89611,_0x1b629c);UserSettingEvents['on'](_0xc89611,_0x1bd96f);}};
\ No newline at end of file
index bc8a58c..c3812d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['bulkCreate','diskStorage','join','root','format','%s-%s','now','single','file','/:id/logout','/:id/pause','pause','unpause','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','/:id/mail_accounts','addSmsAccounts','addChatWebsites','createApiKey','/:id','update','put','/:id/password','delete','removeTeams','destroy','removeChatInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','whoami','getPresence','show','/:id/avatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','/create_many'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x373d,0x1e2));var _0xd373=function(_0x31b6ac,_0x5d59eb){_0x31b6ac=_0x31b6ac-0x0;var _0x31c0dd=_0x373d[_0x31b6ac];return _0x31c0dd;};'use strict';var multer=require(_0xd373('0x0'));var util=require('util');var path=require(_0xd373('0x1'));var timeout=require(_0xd373('0x2'));var express=require(_0xd373('0x3'));var router=express[_0xd373('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd373('0x5'));var interaction=require(_0xd373('0x6'));var config=require(_0xd373('0x7'));var controller=require('./user.controller');router['get']('/',auth[_0xd373('0x8')](),controller[_0xd373('0x9')]);router[_0xd373('0xa')](_0xd373('0xb'),auth['isAuthenticated'](),controller[_0xd373('0xc')]);router['get']('/whoami',auth['isAuthenticated'](),controller[_0xd373('0xd')]);router[_0xd373('0xa')]('/presence',auth[_0xd373('0x8')](),controller[_0xd373('0xe')]);router['get']('/:id',auth[_0xd373('0x8')](),controller[_0xd373('0xf')]);router[_0xd373('0xa')](_0xd373('0x10'),controller['getAvatar']);router['get']('/:id/open_tabs',auth[_0xd373('0x8')](),controller[_0xd373('0x11')]);router['get'](_0xd373('0x12'),auth[_0xd373('0x8')](),controller[_0xd373('0x13')]);router[_0xd373('0xa')](_0xd373('0x14'),auth[_0xd373('0x8')](),controller[_0xd373('0x15')]);router[_0xd373('0xa')](_0xd373('0x16'),auth[_0xd373('0x8')](),controller[_0xd373('0x17')]);router[_0xd373('0xa')](_0xd373('0x18'),auth['isAuthenticated'](),controller[_0xd373('0x19')]);router['get'](_0xd373('0x1a'),auth[_0xd373('0x8')](),controller['getRecordings']);router[_0xd373('0xa')]('/:id/screen_recordings',auth['isAuthenticated'](),controller[_0xd373('0x1b')]);router[_0xd373('0xa')](_0xd373('0x1c'),auth[_0xd373('0x8')](),controller[_0xd373('0x1d')]);router[_0xd373('0xa')]('/:id/openchannel/interactions',auth[_0xd373('0x8')](),controller[_0xd373('0x1e')]);router[_0xd373('0xa')](_0xd373('0x1f'),auth[_0xd373('0x8')](),controller[_0xd373('0x20')]);router['get'](_0xd373('0x21'),auth[_0xd373('0x8')](),controller[_0xd373('0x22')]);router[_0xd373('0xa')](_0xd373('0x23'),auth[_0xd373('0x8')](),controller[_0xd373('0x24')]);router[_0xd373('0xa')](_0xd373('0x25'),auth[_0xd373('0x8')](),controller[_0xd373('0x26')]);router[_0xd373('0xa')](_0xd373('0x27'),auth[_0xd373('0x8')](),controller[_0xd373('0x28')]);router[_0xd373('0xa')](_0xd373('0x29'),auth[_0xd373('0x8')](),controller[_0xd373('0x2a')]);router[_0xd373('0xa')](_0xd373('0x2b'),auth[_0xd373('0x8')](),controller[_0xd373('0x2c')]);router[_0xd373('0xa')](_0xd373('0x2d'),auth[_0xd373('0x8')](),controller[_0xd373('0x2e')]);router[_0xd373('0xa')](_0xd373('0x2f'),auth[_0xd373('0x8')](),controller['getFaxAccounts']);router[_0xd373('0xa')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xd373('0x30')]);router[_0xd373('0xa')](_0xd373('0x31'),auth[_0xd373('0x8')](),controller[_0xd373('0x32')]);router['get'](_0xd373('0x33'),auth[_0xd373('0x8')](),controller['getSmsAccounts']);router[_0xd373('0xa')](_0xd373('0x34'),auth[_0xd373('0x8')](),controller[_0xd373('0x35')]);router[_0xd373('0xa')](_0xd373('0x36'),auth[_0xd373('0x8')](),controller[_0xd373('0x37')]);router[_0xd373('0xa')]('/:id/scheduled_calls',auth[_0xd373('0x8')](),controller[_0xd373('0x38')]);router[_0xd373('0xa')](_0xd373('0x39'),auth[_0xd373('0x8')](),controller[_0xd373('0x3a')]);router[_0xd373('0x3b')](_0xd373('0x12'),auth[_0xd373('0x8')](),controller[_0xd373('0x3c')]);router[_0xd373('0x3b')]('/',auth[_0xd373('0x8')](),controller[_0xd373('0x3d')]);router[_0xd373('0x3b')](_0xd373('0x3e'),auth['isAuthenticated'](),controller[_0xd373('0x3f')]);router[_0xd373('0x3b')](_0xd373('0x14'),auth[_0xd373('0x8')](),controller['addQueues']);var upload=multer({'storage':multer[_0xd373('0x40')]({'destination':function(_0x470d91,_0x109fb2,_0x3af9f7){_0x3af9f7(null,path[_0xd373('0x41')](config[_0xd373('0x42')],'server/files/images/'));},'filename':function(_0x4a2fc5,_0x10368d,_0x52e61b){_0x52e61b(null,util[_0xd373('0x43')](_0xd373('0x44'),Date[_0xd373('0x45')](),_0x10368d['originalname']));}})});router[_0xd373('0x3b')](_0xd373('0x10'),upload[_0xd373('0x46')](_0xd373('0x47')),controller['addAvatar']);router['post']('/:id/login',auth[_0xd373('0x8')](),controller['login']);router[_0xd373('0x3b')](_0xd373('0x48'),auth['isAuthenticated'](),controller['logout']);router['post'](_0xd373('0x49'),auth[_0xd373('0x8')](),controller[_0xd373('0x4a')]);router['post']('/:id/unpause',auth[_0xd373('0x8')](),controller[_0xd373('0x4b')]);router['post'](_0xd373('0x27'),auth[_0xd373('0x8')](),controller[_0xd373('0x4c')]);router[_0xd373('0x3b')](_0xd373('0x4d'),auth['isAuthenticated'](),controller['addChatInteractions']);router[_0xd373('0x3b')](_0xd373('0x4e'),auth[_0xd373('0x8')](),controller[_0xd373('0x4f')]);router['post'](_0xd373('0x50'),auth['isAuthenticated'](),controller[_0xd373('0x51')]);router[_0xd373('0x3b')](_0xd373('0x52'),auth[_0xd373('0x8')](),controller[_0xd373('0x53')]);router['post'](_0xd373('0x54'),auth[_0xd373('0x8')](),controller['addOpenchannelInteractions']);router[_0xd373('0x3b')](_0xd373('0x55'),auth[_0xd373('0x8')](),controller[_0xd373('0x56')]);router[_0xd373('0x3b')](_0xd373('0x2f'),auth[_0xd373('0x8')](),controller[_0xd373('0x57')]);router[_0xd373('0x3b')](_0xd373('0x58'),auth['isAuthenticated'](),controller['addMailAccounts']);router[_0xd373('0x3b')]('/:id/openchannel_accounts',auth[_0xd373('0x8')](),controller['addOpenchannelAccounts']);router['post']('/:id/sms_accounts',auth[_0xd373('0x8')](),controller[_0xd373('0x59')]);router[_0xd373('0x3b')](_0xd373('0x34'),auth[_0xd373('0x8')](),controller[_0xd373('0x5a')]);router[_0xd373('0x3b')]('/:id/whatsapp_accounts',auth[_0xd373('0x8')](),controller['addWhatsappAccounts']);router[_0xd373('0x3b')](_0xd373('0x39'),auth['isAuthenticated'](),controller[_0xd373('0x5b')]);router['put'](_0xd373('0x5c'),auth[_0xd373('0x8')](),controller[_0xd373('0x5d')]);router[_0xd373('0x5e')](_0xd373('0x5f'),auth['isAuthenticated'](),controller['changePassword']);router['delete'](_0xd373('0x14'),auth[_0xd373('0x8')](),controller['removeQueues']);router[_0xd373('0x60')](_0xd373('0x27'),auth['isAuthenticated'](),controller[_0xd373('0x61')]);router[_0xd373('0x60')](_0xd373('0x5c'),auth[_0xd373('0x8')](),controller[_0xd373('0x62')]);router[_0xd373('0x60')](_0xd373('0x4d'),auth[_0xd373('0x8')](),controller[_0xd373('0x63')]);router[_0xd373('0x60')](_0xd373('0x4e'),auth['isAuthenticated'](),controller['removeMailInteractions']);router['delete']('/:id/fax_interactions',auth['isAuthenticated'](),controller['removeFaxInteractions']);router[_0xd373('0x60')](_0xd373('0x52'),auth['isAuthenticated'](),controller['removeSmsInteractions']);router['delete'](_0xd373('0x54'),auth[_0xd373('0x8')](),controller['removeOpenchannelInteractions']);router['delete'](_0xd373('0x55'),auth[_0xd373('0x8')](),controller[_0xd373('0x64')]);router[_0xd373('0x60')](_0xd373('0x2f'),auth['isAuthenticated'](),controller[_0xd373('0x65')]);router[_0xd373('0x60')](_0xd373('0x58'),auth[_0xd373('0x8')](),controller[_0xd373('0x66')]);router[_0xd373('0x60')](_0xd373('0x31'),auth[_0xd373('0x8')](),controller[_0xd373('0x67')]);router[_0xd373('0x60')](_0xd373('0x33'),auth[_0xd373('0x8')](),controller[_0xd373('0x68')]);router[_0xd373('0x60')](_0xd373('0x34'),auth['isAuthenticated'](),controller[_0xd373('0x69')]);router[_0xd373('0x60')](_0xd373('0x36'),auth['isAuthenticated'](),controller[_0xd373('0x6a')]);router['delete'](_0xd373('0x39'),auth['isAuthenticated'](),controller[_0xd373('0x6b')]);module[_0xd373('0x6c')]=router;
\ No newline at end of file
+var _0x85b5=['unpause','addTeams','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','addOpenchannelInteractions','/:id/fax_accounts','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','put','delete','removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','multer','util','connect-timeout','Router','../../components/interaction/service','./user.controller','get','isAuthenticated','describe','/whoami','whoami','/presence','getPresence','/:id','show','/:id/avatar','/:id/open_tabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','/:id/prefixes','getVoicePrefixes','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','addContacts','post','/create_many','bulkCreate','diskStorage','join','root','server/files/images/','format','%s-%s','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','pause'];(function(_0x351e36,_0x34c9a0){var _0x4d0809=function(_0x5683d8){while(--_0x5683d8){_0x351e36['push'](_0x351e36['shift']());}};_0x4d0809(++_0x34c9a0);}(_0x85b5,0x7f));var _0x585b=function(_0x4876ae,_0x3f18ed){_0x4876ae=_0x4876ae-0x0;var _0x1c65cd=_0x85b5[_0x4876ae];return _0x1c65cd;};'use strict';var multer=require(_0x585b('0x0'));var util=require(_0x585b('0x1'));var path=require('path');var timeout=require(_0x585b('0x2'));var express=require('express');var router=express[_0x585b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x585b('0x4'));var config=require('../../config/environment');var controller=require(_0x585b('0x5'));router[_0x585b('0x6')]('/',auth[_0x585b('0x7')](),controller['index']);router[_0x585b('0x6')]('/describe',auth[_0x585b('0x7')](),controller[_0x585b('0x8')]);router[_0x585b('0x6')](_0x585b('0x9'),auth['isAuthenticated'](),controller[_0x585b('0xa')]);router[_0x585b('0x6')](_0x585b('0xb'),auth[_0x585b('0x7')](),controller[_0x585b('0xc')]);router[_0x585b('0x6')](_0x585b('0xd'),auth['isAuthenticated'](),controller[_0x585b('0xe')]);router['get'](_0x585b('0xf'),controller['getAvatar']);router[_0x585b('0x6')](_0x585b('0x10'),auth[_0x585b('0x7')](),controller['getOpenTabs']);router[_0x585b('0x6')](_0x585b('0x11'),auth[_0x585b('0x7')](),controller[_0x585b('0x12')]);router[_0x585b('0x6')](_0x585b('0x13'),auth[_0x585b('0x7')](),controller['getQueues']);router[_0x585b('0x6')](_0x585b('0x14'),auth['isAuthenticated'](),controller['getVoiceQueuesRt']);router[_0x585b('0x6')]('/:id/groups',auth['isAuthenticated'](),controller[_0x585b('0x15')]);router[_0x585b('0x6')](_0x585b('0x16'),auth['isAuthenticated'](),controller[_0x585b('0x17')]);router[_0x585b('0x6')](_0x585b('0x18'),auth[_0x585b('0x7')](),controller['getScreenRecordings']);router[_0x585b('0x6')](_0x585b('0x19'),auth[_0x585b('0x7')](),controller['getChatInteractions']);router['get'](_0x585b('0x1a'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router[_0x585b('0x6')](_0x585b('0x1b'),auth['isAuthenticated'](),controller[_0x585b('0x1c')]);router[_0x585b('0x6')]('/:id/sms/interactions',auth[_0x585b('0x7')](),controller[_0x585b('0x1d')]);router[_0x585b('0x6')]('/:id/fax/interactions',auth[_0x585b('0x7')](),controller['getFaxInteractions']);router[_0x585b('0x6')](_0x585b('0x1e'),auth[_0x585b('0x7')](),controller[_0x585b('0x1f')]);router[_0x585b('0x6')](_0x585b('0x20'),auth[_0x585b('0x7')](),controller[_0x585b('0x21')]);router[_0x585b('0x6')](_0x585b('0x22'),auth[_0x585b('0x7')](),controller[_0x585b('0x23')]);router[_0x585b('0x6')](_0x585b('0x24'),auth[_0x585b('0x7')](),controller['getAgents']);router[_0x585b('0x6')](_0x585b('0x25'),auth[_0x585b('0x7')](),controller[_0x585b('0x26')]);router['get']('/:id/fax_accounts',auth[_0x585b('0x7')](),controller[_0x585b('0x27')]);router['get'](_0x585b('0x28'),auth[_0x585b('0x7')](),controller['getMailAccounts']);router[_0x585b('0x6')](_0x585b('0x29'),auth[_0x585b('0x7')](),controller[_0x585b('0x2a')]);router[_0x585b('0x6')](_0x585b('0x2b'),auth[_0x585b('0x7')](),controller[_0x585b('0x2c')]);router[_0x585b('0x6')](_0x585b('0x2d'),auth['isAuthenticated'](),controller[_0x585b('0x2e')]);router[_0x585b('0x6')](_0x585b('0x2f'),auth['isAuthenticated'](),controller[_0x585b('0x30')]);router[_0x585b('0x6')](_0x585b('0x31'),auth['isAuthenticated'](),controller[_0x585b('0x32')]);router[_0x585b('0x6')](_0x585b('0x33'),auth[_0x585b('0x7')](),controller['getApiKey']);router['post'](_0x585b('0x11'),auth[_0x585b('0x7')](),controller[_0x585b('0x34')]);router[_0x585b('0x35')]('/',auth[_0x585b('0x7')](),controller['create']);router[_0x585b('0x35')](_0x585b('0x36'),auth[_0x585b('0x7')](),controller[_0x585b('0x37')]);router[_0x585b('0x35')]('/:id/queues',auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0x585b('0x38')]({'destination':function(_0x199e54,_0x2c4b9f,_0x8ecc5f){_0x8ecc5f(null,path[_0x585b('0x39')](config[_0x585b('0x3a')],_0x585b('0x3b')));},'filename':function(_0x128a0a,_0x6cec28,_0x56c2ac){_0x56c2ac(null,util[_0x585b('0x3c')](_0x585b('0x3d'),Date['now'](),_0x6cec28[_0x585b('0x3e')]));}})});router[_0x585b('0x35')](_0x585b('0xf'),upload[_0x585b('0x3f')](_0x585b('0x40')),controller[_0x585b('0x41')]);router['post'](_0x585b('0x42'),auth[_0x585b('0x7')](),controller[_0x585b('0x43')]);router[_0x585b('0x35')](_0x585b('0x44'),auth[_0x585b('0x7')](),controller[_0x585b('0x45')]);router[_0x585b('0x35')]('/:id/pause',auth[_0x585b('0x7')](),controller[_0x585b('0x46')]);router[_0x585b('0x35')]('/:id/unpause',auth[_0x585b('0x7')](),controller[_0x585b('0x47')]);router[_0x585b('0x35')]('/:id/teams',auth[_0x585b('0x7')](),controller[_0x585b('0x48')]);router['post']('/:id/chat_interactions',auth[_0x585b('0x7')](),controller['addChatInteractions']);router[_0x585b('0x35')]('/:id/mail_interactions',auth[_0x585b('0x7')](),controller[_0x585b('0x49')]);router['post'](_0x585b('0x4a'),auth['isAuthenticated'](),controller['addFaxInteractions']);router['post'](_0x585b('0x4b'),auth['isAuthenticated'](),controller[_0x585b('0x4c')]);router[_0x585b('0x35')]('/:id/openchannel_interactions',auth[_0x585b('0x7')](),controller[_0x585b('0x4d')]);router[_0x585b('0x35')]('/:id/whatsapp_interactions',auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0x585b('0x35')](_0x585b('0x4e'),auth[_0x585b('0x7')](),controller[_0x585b('0x4f')]);router['post'](_0x585b('0x28'),auth[_0x585b('0x7')](),controller[_0x585b('0x50')]);router[_0x585b('0x35')]('/:id/openchannel_accounts',auth[_0x585b('0x7')](),controller[_0x585b('0x51')]);router[_0x585b('0x35')](_0x585b('0x2b'),auth[_0x585b('0x7')](),controller['addSmsAccounts']);router['post']('/:id/chat_websites',auth[_0x585b('0x7')](),controller['addChatWebsites']);router[_0x585b('0x35')]('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller['addWhatsappAccounts']);router[_0x585b('0x35')](_0x585b('0x33'),auth['isAuthenticated'](),controller['createApiKey']);router[_0x585b('0x52')](_0x585b('0xd'),auth[_0x585b('0x7')](),controller['update']);router[_0x585b('0x52')]('/:id/password',auth[_0x585b('0x7')](),controller['changePassword']);router[_0x585b('0x53')]('/:id/queues',auth[_0x585b('0x7')](),controller['removeQueues']);router[_0x585b('0x53')](_0x585b('0x20'),auth[_0x585b('0x7')](),controller[_0x585b('0x54')]);router[_0x585b('0x53')]('/:id',auth[_0x585b('0x7')](),controller[_0x585b('0x55')]);router[_0x585b('0x53')](_0x585b('0x56'),auth[_0x585b('0x7')](),controller[_0x585b('0x57')]);router['delete'](_0x585b('0x58'),auth[_0x585b('0x7')](),controller[_0x585b('0x59')]);router[_0x585b('0x53')]('/:id/fax_interactions',auth[_0x585b('0x7')](),controller[_0x585b('0x5a')]);router[_0x585b('0x53')]('/:id/sms_interactions',auth['isAuthenticated'](),controller['removeSmsInteractions']);router['delete']('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0x585b('0x5b')]);router[_0x585b('0x53')](_0x585b('0x5c'),auth['isAuthenticated'](),controller[_0x585b('0x5d')]);router[_0x585b('0x53')](_0x585b('0x4e'),auth[_0x585b('0x7')](),controller['removeFaxAccounts']);router[_0x585b('0x53')](_0x585b('0x28'),auth[_0x585b('0x7')](),controller[_0x585b('0x5e')]);router[_0x585b('0x53')](_0x585b('0x29'),auth[_0x585b('0x7')](),controller['removeOpenchannelAccounts']);router[_0x585b('0x53')](_0x585b('0x2b'),auth[_0x585b('0x7')](),controller[_0x585b('0x5f')]);router[_0x585b('0x53')](_0x585b('0x2d'),auth[_0x585b('0x7')](),controller[_0x585b('0x60')]);router[_0x585b('0x53')](_0x585b('0x2f'),auth[_0x585b('0x7')](),controller[_0x585b('0x61')]);router[_0x585b('0x53')](_0x585b('0x33'),auth['isAuthenticated'](),controller[_0x585b('0x62')]);module['exports']=router;
\ No newline at end of file
index a9cf68d..cad7fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x9c44,0x178));var _0x49c4=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9c44[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcb91=['toLowerCase','ENUM','admin','user','local','INTEGER','accountcode','\x22%s\x22\x20<%s>','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','never','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','update','showWebBar','get','isArray','encryption','avpf','icesupport','dtlsverify','dtlssetup','rtcp_mux','wss','force_avp','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','loginAttempts','UNSIGNED','util','lodash','exports','STRING','setDataValue','defaultuser','fullname','format','internal','email'];(function(_0x2201e0,_0x5de0df){var _0x37e9f5=function(_0x65a91d){while(--_0x65a91d){_0x2201e0['push'](_0x2201e0['shift']());}};_0x37e9f5(++_0x5de0df);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3861f7,_0x995b22){_0x3861f7=_0x3861f7-0x0;var _0x50879f=_0xcb91[_0x3861f7];return _0x50879f;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x1cb9('0x0'));var _=require(_0x1cb9('0x1'));module[_0x1cb9('0x2')]={'name':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x8c392f){this[_0x1cb9('0x4')]('name',_0x8c392f);this[_0x1cb9('0x4')](_0x1cb9('0x5'),_0x8c392f);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'set':function(_0x3f7deb){this['setDataValue'](_0x1cb9('0x6'),_0x3f7deb);this[_0x1cb9('0x4')]('callerid',util[_0x1cb9('0x7')]('\x22%s\x22\x20<%s>',_0x3f7deb,this['getDataValue'](_0x1cb9('0x8'))));}},'alias':{'type':Sequelize[_0x1cb9('0x3')]},'email':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':_0x1cb9('0x9'),'validate':{'isEmail':!![]},'set':function(_0x2fc627){if(_0x2fc627){this['setDataValue'](_0x1cb9('0x9'),_0x2fc627[_0x1cb9('0xa')]());}}},'role':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0xc'),_0x1cb9('0xd'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0xe')},'internal':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':![],'unique':_0x1cb9('0x8'),'set':function(_0x56884d){this[_0x1cb9('0x4')](_0x1cb9('0x8'),_0x56884d);this[_0x1cb9('0x4')](_0x1cb9('0x10'),_0x56884d);this[_0x1cb9('0x4')]('callerid',util['format'](_0x1cb9('0x11'),this[_0x1cb9('0x12')](_0x1cb9('0x6')),_0x56884d));}},'salt':{'type':Sequelize[_0x1cb9('0x3')]},'phone':{'type':Sequelize[_0x1cb9('0x3')]},'mobile':{'type':Sequelize[_0x1cb9('0x3')]},'address':{'type':Sequelize[_0x1cb9('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x1cb9('0x3')]},'country':{'type':Sequelize[_0x1cb9('0x3')]},'online':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb9('0x14')]},'voicePause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0x15')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb9('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x16')},'ipaddr':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x17'),_0x1cb9('0xd'),_0x1cb9('0x18')),'allowNull':!![],'defaultValue':_0x1cb9('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x19')},'callingpres':{'type':Sequelize['ENUM'](_0x1cb9('0x1a'),'ALLOWED_PASSED_SCREEN',_0x1cb9('0x1b'),_0x1cb9('0x1c'),_0x1cb9('0x1d'),_0x1cb9('0x1e'),'PROHIB_FAILED_SCREEN',_0x1cb9('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3a3543){this['setDataValue'](_0x1cb9('0x20'),_0x3a3543?_0x3a3543[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x20'))?this['getDataValue'](_0x1cb9('0x20'))[_0x1cb9('0x22')](','):null;},'comment':_0x1cb9('0x23')},'dtmfmode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x24'),_0x1cb9('0x25'),_0x1cb9('0x26'),_0x1cb9('0x27'),_0x1cb9('0x28')),'allowNull':!![],'defaultValue':_0x1cb9('0x24')},'directmedia':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':_0x1cb9('0x2b'),'set':function(_0x35f5e8){this[_0x1cb9('0x4')]('nat',_0x35f5e8?_0x35f5e8[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2c'))?this['getDataValue'](_0x1cb9('0x2c'))['split'](','):null;},'comment':_0x1cb9('0x2d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1cb9('0x3')]},'pickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'language':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1cb9('0x3')]},'disallow':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'defaultValue':_0x1cb9('0x2e')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4111b8){this[_0x1cb9('0x4')](_0x1cb9('0x2f'),_0x4111b8?_0x4111b8[_0x1cb9('0x21')](';'):_0x1cb9('0x30'));},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2f'))?this['getDataValue'](_0x1cb9('0x2f'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'set':function(_0x1bf51c){this[_0x1cb9('0x4')](_0x1cb9('0x31'),_0x1bf51c?_0x1bf51c['join'](','):null);},'get':function(){return this[_0x1cb9('0x12')]('insecure')?this[_0x1cb9('0x12')](_0x1cb9('0x31'))[_0x1cb9('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x32')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'busylevel':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no',_0x1cb9('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x1cb9('0x34'),'refuse',_0x1cb9('0x35')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x36'),_0x1cb9('0x37')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'keepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x38'),_0x1cb9('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x3a'),_0x1cb9('0x3b'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),_0x1cb9('0x3c'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x1cb9('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x1cb9('0x14')]},'passwordResetAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x319358){this[_0x1cb9('0x4')](_0x1cb9('0x3d'),_0x319358);var _0x173db5=this[_0x1cb9('0x3e')]({'plain':!![]});switch(_0x319358){case 0x0:case 0x1:var _0x75c734=_0x173db5[_0x1cb9('0x20')]?_[_0x1cb9('0x3f')](_0x173db5['transport'])?_0x173db5['transport'][_0x1cb9('0x21')]():_0x173db5['transport']:'udp';if(_0x75c734==='wss'){_0x75c734='udp';}this['setDataValue'](_0x1cb9('0x20'),_0x75c734);this[_0x1cb9('0x4')](_0x1cb9('0x40'),'no');this[_0x1cb9('0x4')](_0x1cb9('0x41'),null);this[_0x1cb9('0x4')]('force_avp',null);this[_0x1cb9('0x4')](_0x1cb9('0x42'),null);this['setDataValue']('dtlsenable',null);this[_0x1cb9('0x4')](_0x1cb9('0x43'),null);this[_0x1cb9('0x4')](_0x1cb9('0x44'),null);this[_0x1cb9('0x4')]('dtlscertfile',null);this['setDataValue']('dtlsprivatekey',null);this[_0x1cb9('0x4')](_0x1cb9('0x45'),'no');break;case 0x2:this[_0x1cb9('0x4')](_0x1cb9('0x20'),_0x1cb9('0x46'));this['setDataValue'](_0x1cb9('0x40'),_0x1cb9('0x29'));this['setDataValue']('avpf',_0x1cb9('0x29'));this['setDataValue'](_0x1cb9('0x47'),_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x42'),_0x1cb9('0x29'));this[_0x1cb9('0x4')]('dtlsenable',_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x43'),'no');this[_0x1cb9('0x4')]('dtlssetup','actpass');this[_0x1cb9('0x4')](_0x1cb9('0x48'),_0x173db5[_0x1cb9('0x48')]||_0x1cb9('0x49'));this[_0x1cb9('0x4')](_0x1cb9('0x4a'),_0x173db5['dtlsprivatekey']||_0x1cb9('0x4b'));this['setDataValue'](_0x1cb9('0x45'),_0x1cb9('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0xf5b006){this[_0x1cb9('0x4')](_0x1cb9('0x4c'),_0xf5b006?_0xf5b006['join'](','):[]);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x4c'))?_[_0x1cb9('0x4d')](this[_0x1cb9('0x12')](_0x1cb9('0x4c'))[_0x1cb9('0x22')](','),function(_0x5a3f1d){return parseInt(_0x5a3f1d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb9('0x4e')],'get':function(){return this['getDataValue'](_0x1cb9('0x4f'))?this['getDataValue'](_0x1cb9('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![],'set':function(_0x4f8d74){if(typeof _0x4f8d74===_0x1cb9('0x50')){var _0x4cb014=_0x4f8d74==='1'?!![]:_0x4f8d74==='0'?![]:_0x4f8d74===_0x1cb9('0x51')?!![]:_0x4f8d74===_0x1cb9('0x52')?![]:![];this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4cb014);}else{this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4f8d74);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3db146){this[_0x1cb9('0x4')]('blocked',_0x3db146);if(_0x3db146===!![]){this[_0x1cb9('0x4')](_0x1cb9('0x54'),moment());this[_0x1cb9('0x4')](_0x1cb9('0x55'),0x0);}else{this[_0x1cb9('0x4')](_0x1cb9('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb9('0xf')](0x5)[_0x1cb9('0x56')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 1286602..3c95e0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['$gt','$gte','$lte','$ne','$eq','$between','$notBetween','$in','$notLike','$notILike','$overlap','$contains','$contained','$any','CmHopper','firstName','lastName','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','generateApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','flatten','col','toString','desc','asc','uniqBy','offline','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','SELECT','select','field','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','moment','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','APINotFoundError','handleError','../../mysqldb','redis','./user.socket','register','localhost','client','http','request','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','agent','emit','userNotification:recalc:','destroy','get','role','admin','Users','user','Agents','Telephones','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','stack','send','index','User','rawAttributes','fieldName','key','salt','query','includeAll','userSetting','true','include','UserSetting','attributes','findAll','rows','push','dataValues','sms','fax','openchannel','whatsapp','all','params','keys','password','intersection','model','fields','merge','options','chat','body','describe','addContacts','ids','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','length','from','voicemail','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','105','106','107','108','109','100','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','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','isEmpty','changePassword','oldPassword','newPassword','Sequelize','ValidationError','authenticate','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','online','loginInPause','voicePause','interface','isValidChannel','add','capitalize','toLowerCase','Queues','penalty','QueueId','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','channel','Unknown\x20channel','remove','addAvatar','userpic','file','filename','getAvatar','join','root','existsSync','server/files/images/','download','getOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','getOptions','hasOwnProperty','CmList','List','Tag','tag','Queue','filters','order','sort','where','pick','nolimit','getVoiceQueuesRt','getGroups','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getOpenchannelInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','intrf','user:%s','headers','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','update','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','resolve','pause','DEFAULT\x20PAUSE','type','unpause','mailPause','faxPause','openchannelPause','smsPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','flattenDeep','addAgent','getDataValue','TeamVoicePrefix','Queue:save','isArray','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','Voice','UserVoicePrefix','VoicePrefixId','Queue:remove','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','$and','$or'];(function(_0x55fcc5,_0x1b23fc){var _0x5d3693=function(_0x547f81){while(--_0x547f81){_0x55fcc5['push'](_0x55fcc5['shift']());}};_0x5d3693(++_0x1b23fc);}(_0x9bde,0x1be));var _0xe9bd=function(_0x70de01,_0x522e9f){_0x70de01=_0x70de01-0x0;var _0x2113a9=_0x9bde[_0x70de01];return _0x2113a9;};'use strict';var moment=require(_0xe9bd('0x0'));var util=require(_0xe9bd('0x1'));var path=require(_0xe9bd('0x2'));var fs=require('fs');var _=require(_0xe9bd('0x3'));var squel=require(_0xe9bd('0x4'));var jayson=require(_0xe9bd('0x5'));var Redis=require(_0xe9bd('0x6'));var authService=require(_0xe9bd('0x7'));var contacts=require('../../components/contacts');var qs=require(_0xe9bd('0x8'));var logger=require(_0xe9bd('0x9'))(_0xe9bd('0xa'));var utils=require(_0xe9bd('0xb'));var config=require(_0xe9bd('0xc'));var licenseUtil=require(_0xe9bd('0xd'));var APIBadRequestError=require(_0xe9bd('0xe'))[_0xe9bd('0xf')];var APINotFoundError=require(_0xe9bd('0xe'))[_0xe9bd('0x10')];var APIHandleError=require(_0xe9bd('0xe'))[_0xe9bd('0x11')];var db=require(_0xe9bd('0x12'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xe9bd('0x13')]));require(_0xe9bd('0x14'))[_0xe9bd('0x15')](socket);config[_0xe9bd('0x13')]=_['defaults'](config[_0xe9bd('0x13')],{'host':_0xe9bd('0x16'),'port':0x18eb});var amiClient=jayson[_0xe9bd('0x17')][_0xe9bd('0x18')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4fbcfe,_0x56b799,_0x327e92,_0x2f3970){return new Promise(function(_0x57e8cc,_0x243d25){var _0xcb5ddf=_0x2f3970||amiClient;return _0xcb5ddf[_0xe9bd('0x19')](_0x4fbcfe,_0x327e92)[_0xe9bd('0x1a')](function(_0xec5ede){logger[_0xe9bd('0x1b')](_0xe9bd('0x1c'),_0x56b799,_0xe9bd('0x1d'));logger[_0xe9bd('0x1e')](_0xe9bd('0x1f'),_0x56b799,_0xe9bd('0x1d'),JSON[_0xe9bd('0x20')](_0xec5ede));if(_0xec5ede[_0xe9bd('0x21')]){if(_0xec5ede[_0xe9bd('0x21')][_0xe9bd('0x22')]===0x1f4){logger[_0xe9bd('0x21')](_0xe9bd('0x1c'),_0x56b799,_0xec5ede[_0xe9bd('0x21')]['message']);return _0x243d25(_0xec5ede[_0xe9bd('0x21')]['message']);}logger[_0xe9bd('0x21')]('User,\x20%s,\x20%s',_0x56b799,_0xec5ede['error'][_0xe9bd('0x23')]);return _0x57e8cc(_0xec5ede[_0xe9bd('0x21')][_0xe9bd('0x23')]);}else{logger['info'](_0xe9bd('0x1c'),_0x56b799,_0xe9bd('0x1d'));_0x57e8cc(_0xec5ede[_0xe9bd('0x24')]['message']);}})[_0xe9bd('0x25')](function(_0x4dae35){logger[_0xe9bd('0x21')]('User,\x20%s,\x20%s',_0x56b799,_0x4dae35);_0x243d25(_0x4dae35);});});}function respondWithStatusCode(_0x11f4eb,_0x22156e){_0x22156e=_0x22156e||0xcc;return function(_0x48de32){if(_0x48de32){return _0x11f4eb[_0xe9bd('0x26')](_0x22156e);}return _0x11f4eb['status'](_0x22156e)[_0xe9bd('0x27')]();};}function respondWithResult(_0x285f00,_0x4a33b1){_0x4a33b1=_0x4a33b1||0xc8;return function(_0x5ddf91){if(_0x5ddf91){return _0x285f00[_0xe9bd('0x28')](_0x4a33b1)[_0xe9bd('0x29')](_0x5ddf91);}};}function respondWithFilteredResult(_0x2575c8,_0x253b22){return function(_0x33a048){if(_0x33a048){var _0x5bb691=typeof _0x253b22[_0xe9bd('0x2a')]===_0xe9bd('0x2b')&&typeof _0x253b22[_0xe9bd('0x2c')]===_0xe9bd('0x2b');var _0x4fb50b=_0x33a048[_0xe9bd('0x2d')];var _0x3fee24=_0x5bb691?0x0:_0x253b22[_0xe9bd('0x2a')];var _0xf1d1d3=_0x5bb691?_0x33a048[_0xe9bd('0x2d')]:_0x253b22['offset']+_0x253b22['limit'];var _0x56c84b;if(_0xf1d1d3>=_0x4fb50b){_0xf1d1d3=_0x4fb50b;_0x56c84b=0xc8;}else{_0x56c84b=0xce;}_0x2575c8[_0xe9bd('0x28')](_0x56c84b);return _0x2575c8[_0xe9bd('0x2e')]('Content-Range',_0x3fee24+'-'+_0xf1d1d3+'/'+_0x4fb50b)[_0xe9bd('0x29')](_0x33a048);}return null;};}function saveUpdates(_0x5eda21){return function(_0x1a768b){if(_0x1a768b){return _0x1a768b['update'](_0x5eda21)['then'](function(_0x14b1dc){if(_0x14b1dc['role']===_0xe9bd('0x2f')){socket[_0xe9bd('0x30')](_0xe9bd('0x31')+_0x14b1dc['id'],_0x14b1dc);}return _0x14b1dc;});}return null;};}function removeEntity(_0x17eb73){return function(_0x2dd0c2){if(_0x2dd0c2){return _0x2dd0c2[_0xe9bd('0x32')]()[_0xe9bd('0x1a')](function(){var _0x2b4a1d=_0x2dd0c2[_0xe9bd('0x33')]({'plain':!![]});if(_0x2b4a1d[_0xe9bd('0x34')]===_0xe9bd('0x35'))return;var _0x4cd562=[{'name':_0xe9bd('0x36'),'value':_0xe9bd('0x37'),'ignore':!![]},{'name':_0xe9bd('0x38'),'value':_0xe9bd('0x2f'),'ignore':![]},{'name':_0xe9bd('0x39'),'value':_0xe9bd('0x3a'),'ignore':![]}];var _0x2a949f=_(_0x4cd562)[_0xe9bd('0x3b')](_0xe9bd('0x3c'))[_0xe9bd('0x3d')]('value')[_0xe9bd('0x3e')]();if(_[_0xe9bd('0x3f')](_0x2a949f,_0x2b4a1d[_0xe9bd('0x34')])){return;}var _0x1c0e5c=_[_0xe9bd('0x40')](_0x4cd562,['value',_0x2b4a1d[_0xe9bd('0x34')]])[_0xe9bd('0x41')];return db[_0xe9bd('0x42')]['destroy']({'where':{'type':_0x1c0e5c,'resourceId':_0x2b4a1d['id']}})[_0xe9bd('0x1a')](function(){return _0x2dd0c2;});})['then'](function(){_0x17eb73['status'](0xcc)[_0xe9bd('0x27')]();});}};}function handleEntityNotFound(_0x3c5d3c){return function(_0x46c903){if(!_0x46c903){_0x3c5d3c[_0xe9bd('0x26')](0x194);}return _0x46c903;};}function handleError(_0x59285f,_0x39d9af){_0x39d9af=_0x39d9af||0x1f4;return function(_0x5398b2){logger['error'](_0x5398b2[_0xe9bd('0x43')]);if(_0x5398b2[_0xe9bd('0x41')]){delete _0x5398b2['name'];}_0x59285f[_0xe9bd('0x28')](_0x39d9af)[_0xe9bd('0x44')](_0x5398b2);};}exports[_0xe9bd('0x45')]=function(_0x5ade5a,_0x55fe5e){var _0x1ffc04={},_0x1fd62b={'count':0x0,'rows':[]};var _0x431837=_(db[_0xe9bd('0x46')][_0xe9bd('0x47')])[_0xe9bd('0x3d')](function(_0x4e1fb3){return{'name':_0x4e1fb3[_0xe9bd('0x48')],'type':_0x4e1fb3['type'][_0xe9bd('0x49')]};})[_0xe9bd('0x3b')](function(_0x4769b2){return!_[_0xe9bd('0x3f')](['password',_0xe9bd('0x4a')],_0x4769b2[_0xe9bd('0x41')]);})['value']();_0x1ffc04=qs['getOptions'](_0x431837,_0x5ade5a);var _0x1c14e3={'where':_0x1ffc04['where']};return db['User']['count'](_0x1c14e3)['then'](function(_0x5ec4e9){_0x1fd62b['count']=_0x5ec4e9;if(_0x5ade5a[_0xe9bd('0x4b')][_0xe9bd('0x4c')]){_0x1ffc04['include']=[{'all':!![]}];}if(_0x5ade5a[_0xe9bd('0x4b')][_0xe9bd('0x4d')]===_0xe9bd('0x4e')){_0x1ffc04[_0xe9bd('0x4f')]=[{'model':db[_0xe9bd('0x50')],'as':_0xe9bd('0x4d')}];}if(!_[_0xe9bd('0x3f')](_0x1ffc04[_0xe9bd('0x51')],'id')){_0x1ffc04[_0xe9bd('0x51')]['push']('id');}return db[_0xe9bd('0x46')][_0xe9bd('0x52')](_0x1ffc04);})['then'](function(_0x45919f){_0x1fd62b['rows']=_0x45919f;if(_0x5ade5a['query']['openTabs']===_0xe9bd('0x4e')){var _0x22bbf2=[];for(var _0x509b72=0x0;_0x509b72<_0x1fd62b[_0xe9bd('0x53')]['length'];_0x509b72++){_0x22bbf2[_0xe9bd('0x54')](get_open_tabs('chat',_0x1fd62b['rows'][_0x509b72][_0xe9bd('0x55')]));_0x22bbf2[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x56'),_0x1fd62b[_0xe9bd('0x53')][_0x509b72][_0xe9bd('0x55')]));_0x22bbf2['push'](get_open_tabs(_0xe9bd('0x57'),_0x1fd62b[_0xe9bd('0x53')][_0x509b72][_0xe9bd('0x55')]));_0x22bbf2['push'](get_open_tabs('mail',_0x1fd62b['rows'][_0x509b72][_0xe9bd('0x55')]));_0x22bbf2[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x58'),_0x1fd62b[_0xe9bd('0x53')][_0x509b72][_0xe9bd('0x55')]));_0x22bbf2['push'](get_open_tabs(_0xe9bd('0x59'),_0x1fd62b[_0xe9bd('0x53')][_0x509b72][_0xe9bd('0x55')]));}return Promise[_0xe9bd('0x5a')](_0x22bbf2)[_0xe9bd('0x1a')](function(){return _0x1fd62b;});}else{return _0x1fd62b;}})[_0xe9bd('0x1a')](respondWithFilteredResult(_0x55fe5e,_0x1ffc04))[_0xe9bd('0x25')](handleError(_0x55fe5e,null));};exports['show']=function(_0xbf5571,_0x4e7ccb){var _0x5d43fc={'raw':![],'where':{'id':_0xbf5571[_0xe9bd('0x5b')]['id']}},_0x56d43e={};_0x56d43e['model']=_['differenceBy'](_[_0xe9bd('0x5c')](db[_0xe9bd('0x46')][_0xe9bd('0x47')]),[_0xe9bd('0x5d'),_0xe9bd('0x4a')]);_0x56d43e[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0xbf5571[_0xe9bd('0x4b')]);_0x56d43e['filters']=_[_0xe9bd('0x5e')](_0x56d43e[_0xe9bd('0x5f')],_0x56d43e[_0xe9bd('0x4b')]);_0x5d43fc[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x56d43e[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0xbf5571['query']['fields']));_0x5d43fc[_0xe9bd('0x51')]=_0x5d43fc[_0xe9bd('0x51')]['length']?_0x5d43fc[_0xe9bd('0x51')]:_0x56d43e['model'];if(_0xbf5571['query'][_0xe9bd('0x4c')]){_0x5d43fc[_0xe9bd('0x4f')]=[{'all':!![]}];}if(_0xbf5571[_0xe9bd('0x4b')][_0xe9bd('0x4d')]===_0xe9bd('0x4e')){_0x5d43fc[_0xe9bd('0x4f')]=[{'model':db[_0xe9bd('0x50')],'as':'userSetting'}];}_0x5d43fc=_[_0xe9bd('0x61')]({},_0x5d43fc,_0xbf5571[_0xe9bd('0x62')]);if(!_[_0xe9bd('0x3f')](_0x5d43fc[_0xe9bd('0x51')],'id')){_0x5d43fc[_0xe9bd('0x51')][_0xe9bd('0x54')]('id');}return db[_0xe9bd('0x46')][_0xe9bd('0x40')](_0x5d43fc)[_0xe9bd('0x1a')](handleEntityNotFound(_0x4e7ccb,null))['then'](function(_0x548706){var _0x5e11d7=[];values=_0x548706;if(_0xbf5571['query']['openTabs']==='true'){_0x5e11d7['push'](get_open_tabs(_0xe9bd('0x63'),_0x548706[_0xe9bd('0x55')]));_0x5e11d7['push'](get_open_tabs(_0xe9bd('0x56'),_0x548706[_0xe9bd('0x55')]));_0x5e11d7[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x58'),_0x548706[_0xe9bd('0x55')]));_0x5e11d7['push'](get_open_tabs(_0xe9bd('0x59'),_0x548706[_0xe9bd('0x55')]));_0x5e11d7[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x57'),_0x548706[_0xe9bd('0x55')]));_0x5e11d7[_0xe9bd('0x54')](get_open_tabs('mail',_0x548706[_0xe9bd('0x55')]));return Promise[_0xe9bd('0x5a')](_0x5e11d7);}else{return values;}})['then'](function(){return values;})[_0xe9bd('0x1a')](respondWithResult(_0x4e7ccb,null))[_0xe9bd('0x25')](handleError(_0x4e7ccb,null));};exports['update']=function(_0x4c4481,_0x114641){if(_0x4c4481['body']['id']){delete _0x4c4481[_0xe9bd('0x64')]['id'];}delete _0x4c4481['body'][_0xe9bd('0x34')];return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x4c4481[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x114641,null))['then'](saveUpdates(_0x4c4481['body'],null))['then'](respondWithResult(_0x114641,null))[_0xe9bd('0x25')](handleError(_0x114641,null));};exports['describe']=function(_0x6a5409,_0x4c538d){return db[_0xe9bd('0x46')][_0xe9bd('0x65')]()[_0xe9bd('0x1a')](respondWithResult(_0x4c538d,null))[_0xe9bd('0x25')](handleError(_0x4c538d,null));};exports['addContacts']=function(_0xb05597,_0x4a564c){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0xb05597[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x4a564c,null))[_0xe9bd('0x1a')](function(_0x5da0b8){if(_0x5da0b8){return _0x5da0b8[_0xe9bd('0x66')](_0xb05597[_0xe9bd('0x64')][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0xb05597[_0xe9bd('0x64')],['ids','id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0x4a564c,null))[_0xe9bd('0x25')](handleError(_0x4a564c,null));};function validateUser(_0x4d2c0a){return new Promise(function(_0x56fb1a,_0x267e78){if(_0x4d2c0a[_0xe9bd('0x69')])return _0x56fb1a(_0x4d2c0a);return db[_0xe9bd('0x6a')][_0xe9bd('0x6b')](0x1)['then'](function(_0x12d1ae){if(_0x12d1ae[_0xe9bd('0x6c')])authService[_0xe9bd('0x6d')](_0x4d2c0a[_0xe9bd('0x5d')]);db['User']['max'](_0xe9bd('0x69'))[_0xe9bd('0x1a')](function(_0x2a697e){if(_[_0xe9bd('0x6e')](_0x2a697e)){_0x4d2c0a[_0xe9bd('0x69')]=_0x12d1ae['min_internal']||0x1;return;}if(_[_0xe9bd('0x6e')](_0x12d1ae[_0xe9bd('0x6f')])||_0x12d1ae[_0xe9bd('0x6f')]===_0x2a697e){_0x4d2c0a[_0xe9bd('0x69')]=_0x2a697e+0x1;return;}if(_0x12d1ae[_0xe9bd('0x6f')]>_0x2a697e){_0x4d2c0a[_0xe9bd('0x69')]=_0x12d1ae[_0xe9bd('0x6f')];return;}return db[_0xe9bd('0x70')][_0xe9bd('0x4b')](_0xe9bd('0x71'),{'type':db['sequelize'][_0xe9bd('0x72')]['SELECT']})[_0xe9bd('0x1a')](function(_0x10f92c){if(_0x10f92c&&_0x10f92c['length']){for(var _0x1ff07b=0x0,_0x2e1e35=_0x10f92c[_0xe9bd('0x73')];_0x1ff07b<_0x2e1e35&&_[_0xe9bd('0x6e')](_0x4d2c0a['internal']);_0x1ff07b++){if(_0x12d1ae[_0xe9bd('0x6f')]<=_0x10f92c[_0x1ff07b][_0xe9bd('0x74')]){_0x4d2c0a[_0xe9bd('0x69')]=_0x10f92c[_0x1ff07b][_0xe9bd('0x74')];}else if(_0x12d1ae[_0xe9bd('0x6f')]>_0x10f92c[_0x1ff07b][_0xe9bd('0x74')]&&_0x12d1ae['min_internal']<=_0x10f92c[_0x1ff07b]['to']){_0x4d2c0a['internal']=_0x12d1ae['min_internal'];}}}if(_['isNil'](_0x4d2c0a[_0xe9bd('0x69')])){_0x4d2c0a['internal']=_0x2a697e+0x1;}return _0x56fb1a(_0x4d2c0a);});});})[_0xe9bd('0x25')](function(_0xa6648f){_0x267e78(_0xa6648f);});});}function updateUser(_0x2d94e6){return new Promise(function(_0xf32c6c,_0x2e91c8){try{if(_0x2d94e6[_0xe9bd('0x75')]){_0x2d94e6['mailbox']=_0x2d94e6['internal'];_0x2d94e6[_0xe9bd('0x76')]={'mailbox':_0x2d94e6[_0xe9bd('0x69')],'password':_0x2d94e6[_0xe9bd('0x5d')],'fullname':_0x2d94e6[_0xe9bd('0x77')],'email':_0x2d94e6[_0xe9bd('0x78')]};}if(_0x2d94e6[_0xe9bd('0x34')]===_0xe9bd('0x2f')){if(!_0x2d94e6['permissions'])_0x2d94e6[_0xe9bd('0x79')]=[_0xe9bd('0x7a'),_0xe9bd('0x7b'),_0xe9bd('0x7c'),_0xe9bd('0x7d'),_0xe9bd('0x7e'),_0xe9bd('0x7f'),_0xe9bd('0x80'),_0xe9bd('0x81'),_0xe9bd('0x82'),_0xe9bd('0x83'),_0xe9bd('0x84'),_0xe9bd('0x85'),'111',_0xe9bd('0x86'),_0xe9bd('0x87')];}_0xf32c6c(_0x2d94e6);}catch(_0x338bfd){_0x2e91c8(_0x338bfd);}});}exports[_0xe9bd('0x88')]=function(_0xadde45,_0x56c477){if(_0xadde45['user'][_0xe9bd('0x34')]==='agent')throw new Error(_0xe9bd('0x89'));if(_0xadde45[_0xe9bd('0x64')][_0xe9bd('0x34')]===_0xe9bd('0x37')&&_0xadde45['user']['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0xadde45['body'][_0xe9bd('0x34')]===_0xe9bd('0x35')&&_0xadde45['user']['role']!==_0xe9bd('0x35')){throw new Error(_0xe9bd('0x8a'));}return licenseUtil[_0xe9bd('0x8b')]([_0xadde45[_0xe9bd('0x64')]])[_0xe9bd('0x1a')](function(){return validateUser(_0xadde45[_0xe9bd('0x64')]);})['then'](function(_0x2c9c09){return updateUser(_0x2c9c09)[_0xe9bd('0x1a')](function(_0x3b98ce){if(_0x3b98ce[_0xe9bd('0x34')]===_0xe9bd('0x35')){_0x3b98ce[_0xe9bd('0x8c')]=_0xadde45[_0xe9bd('0x37')][_0xe9bd('0x8c')];delete _0x3b98ce[_0xe9bd('0x8d')];}return _0x3b98ce;});})[_0xe9bd('0x1a')](function(_0x2eef74){return db[_0xe9bd('0x46')][_0xe9bd('0x88')](_0x2eef74,{'include':[{'model':db[_0xe9bd('0x76')],'as':_0xe9bd('0x76')}]});})[_0xe9bd('0x1a')](function(_0x1002b7){if(_0xadde45[_0xe9bd('0x64')][_0xe9bd('0x34')]===_0xe9bd('0x37'))return _0x1002b7;if(_0xadde45[_0xe9bd('0x37')][_0xe9bd('0x34')]!==_0xe9bd('0x37'))return _0x1002b7;return db[_0xe9bd('0x8e')][_0xe9bd('0x40')]({'where':{'name':_0x1002b7[_0xe9bd('0x34')]===_0xe9bd('0x2f')?_0xe9bd('0x38'):_0xe9bd('0x39'),'userProfileId':_0xadde45['user']['userProfileId']},'raw':!![]})[_0xe9bd('0x1a')](function(_0x3aa821){if(!_0x3aa821||_0x3aa821[_0xe9bd('0x8f')]!=0x0)return _0x1002b7;return db['UserProfileResource'][_0xe9bd('0x88')]({'name':_0x1002b7['name'],'resourceId':_0x1002b7['id'],'type':_0x3aa821[_0xe9bd('0x41')],'sectionId':_0x3aa821['id']},{})[_0xe9bd('0x1a')](function(){return _0x1002b7;});})[_0xe9bd('0x25')](function(_0x4c0560){logger[_0xe9bd('0x21')](_0xe9bd('0x90'),_0x4c0560);throw _0x4c0560;});})['then'](respondWithResult(_0x56c477,0xc9))['catch'](handleError(_0x56c477,null));};exports[_0xe9bd('0x91')]=function(_0xb83709,_0x4b95c5){var _0x347842=_0xb83709['body'];var _0x2af0a0=[];if(_0xb83709[_0xe9bd('0x37')][_0xe9bd('0x34')]===_0xe9bd('0x2f'))throw new Error('Unauthorized');if(_['some'](_0x347842,['role','user'])&&_0xb83709[_0xe9bd('0x37')]['role']!==_0xe9bd('0x35')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0xe9bd('0x92')](_0x347842,[_0xe9bd('0x34'),_0xe9bd('0x35')])&&_0xb83709['user']['role']!==_0xe9bd('0x35')){throw new Error(_0xe9bd('0x93'));}return licenseUtil['checkUserLimits'](_0x347842)[_0xe9bd('0x1a')](function(){return validateUser(_0x347842[0x0]);})['then'](function(){for(var _0x5c5533=0x1;_0x5c5533<_0x347842['length'];_0x5c5533++){var _0x4ba77c=_0x347842[_0x5c5533-0x1][_0xe9bd('0x69')];if(!_0x347842[_0x5c5533][_0xe9bd('0x69')])_0x347842[_0x5c5533][_0xe9bd('0x69')]=_0x4ba77c+0x1;_0x2af0a0['push'](validateUser(_0x347842[_0x5c5533]));}return Promise[_0xe9bd('0x5a')](_0x2af0a0);})[_0xe9bd('0x1a')](function(){_0x2af0a0=[];for(var _0x20fc96=0x0;_0x20fc96<_0x347842[_0xe9bd('0x73')];_0x20fc96++){_0x2af0a0[_0xe9bd('0x54')](updateUser(_0x347842[_0x20fc96]));}return Promise[_0xe9bd('0x5a')](_0x2af0a0);})['then'](function(){_0x2af0a0=_0x347842[_0xe9bd('0x3d')](function(_0x3df093){return db[_0xe9bd('0x46')][_0xe9bd('0x88')](_0x3df093,{'include':[{'model':db[_0xe9bd('0x76')],'as':_0xe9bd('0x76')}]})[_0xe9bd('0x1a')](function(_0x4b60d3){_0x3df093['id']=_0x4b60d3['id'];return _0x3df093;});});return Promise[_0xe9bd('0x5a')](_0x2af0a0);})[_0xe9bd('0x1a')](function(_0x11db4f){if(_0xb83709[_0xe9bd('0x64')][_0xe9bd('0x34')]===_0xe9bd('0x37'))return _0x11db4f;if(_0xb83709[_0xe9bd('0x37')][_0xe9bd('0x34')]!=='user')return _0x11db4f;var _0x13bf09=_[_0xe9bd('0x92')](_0x11db4f,function(_0xa5c6ee){return _0xa5c6ee['role']===_0xe9bd('0x2f')||_0xa5c6ee['role']==='telephone';});if(!_0x13bf09)return _0x11db4f;return db[_0xe9bd('0x8e')][_0xe9bd('0x52')]({'where':{'name':{'$or':[_0xe9bd('0x38'),_0xe9bd('0x39')]},'userProfileId':_0xb83709[_0xe9bd('0x37')]['userProfileId']},'raw':!![]})[_0xe9bd('0x1a')](function(_0x2d1ea0){if(_[_0xe9bd('0x94')](_0x2d1ea0)||!_[_0xe9bd('0x92')](_0x2d1ea0,[_0xe9bd('0x8f'),0x0]))return _0x11db4f;_0x2af0a0=[];var _0x48daec=_(_0x2d1ea0)[_0xe9bd('0x3d')](function(_0x4a26d3){if(_0x4a26d3[_0xe9bd('0x8f')]===0x1)return;return _0x4a26d3[_0xe9bd('0x41')]===_0xe9bd('0x38')?_0xe9bd('0x2f'):'telephone';})['compact']()[_0xe9bd('0x3e')]();for(var _0x4c92b9=0x0;_0x4c92b9<_0x11db4f[_0xe9bd('0x73')];_0x4c92b9++){if(!_[_0xe9bd('0x3f')](_0x48daec,_0x11db4f[_0x4c92b9][_0xe9bd('0x34')]))return;var _0x4b3ed2=_0x11db4f[_0x4c92b9][_0xe9bd('0x34')]===_0xe9bd('0x2f')?'Agents':_0xe9bd('0x39');_0x2af0a0[_0xe9bd('0x54')](db[_0xe9bd('0x42')][_0xe9bd('0x88')]({'name':_0x11db4f[_0x4c92b9]['name'],'resourceId':_0x11db4f[_0x4c92b9]['id'],'type':_0x4b3ed2,'sectionId':_['find'](_0x2d1ea0,[_0xe9bd('0x41'),_0x4b3ed2])['id']},{}));}return Promise['all'](_0x2af0a0);});})['then'](respondWithResult(_0x4b95c5,0xc9))[_0xe9bd('0x25')](handleError(_0x4b95c5,null));};exports[_0xe9bd('0x95')]=function(_0x4dfbed,_0x4f19b9){if(_0x4dfbed[_0xe9bd('0x64')]['id']){delete _0x4dfbed[_0xe9bd('0x64')]['id'];}return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x4dfbed['params']['id']}})[_0xe9bd('0x1a')](function(_0x2470ad){if(!_0x2470ad)return null;if(_0x2470ad['id']===_0x4dfbed[_0xe9bd('0x37')]['id']){if(!_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x96')]||!_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x97')]){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x2470ad[_0xe9bd('0x9a')](_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x96')])){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))]('Wrong\x20credentials');}if(_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x96')]===_0x4dfbed['body'][_0xe9bd('0x97')]){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0x9b'));}}else if(_0x4dfbed['user'][_0xe9bd('0x34')]==='admin'){if(!_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x97')]){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0x9c'));}}else if(_0x4dfbed[_0xe9bd('0x37')]['role']==='user'){if(!_0x4dfbed[_0xe9bd('0x64')]['newPassword']){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0x9c'));}if(_0x2470ad[_0xe9bd('0x34')]!=='agent'){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0x89'));}}else{throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0x89'));}return _0x2470ad;})[_0xe9bd('0x1a')](handleEntityNotFound(_0x4f19b9,null))[_0xe9bd('0x1a')](function(_0x3d078f){return db['Setting'][_0xe9bd('0x9d')]({'attributes':['id',_0xe9bd('0x6c'),_0xe9bd('0x9e'),_0xe9bd('0x9f')]})[_0xe9bd('0x1a')](function(_0x536893){if(_0x536893[_0xe9bd('0x6c')])authService[_0xe9bd('0x6d')](_0x4dfbed[_0xe9bd('0x64')]['newPassword']);if(!_0x536893[_0xe9bd('0x9e')]||!_0x3d078f[_0xe9bd('0xa0')])return _0x3d078f;authService[_0xe9bd('0xa1')](_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x97')],_0x3d078f['previousPasswords'],_0x536893['passwordHistoryLimit']);return _0x3d078f;})['then'](saveUpdates({'password':_0x4dfbed[_0xe9bd('0x64')][_0xe9bd('0x97')],'passwordResetAt':_0x4dfbed['user']['id']==_0x4dfbed[_0xe9bd('0x5b')]['id']?moment():null,'previousPasswords':authService[_0xe9bd('0xa2')](_0x4dfbed[_0xe9bd('0x64')]['newPassword'],_0x3d078f['previousPasswords'])},null));})[_0xe9bd('0x1a')](respondWithResult(_0x4f19b9,null))[_0xe9bd('0x25')](handleError(_0x4f19b9,null));};exports['addQueues']=function(_0x12b7c9,_0xb8e9c6){var _0x1165da=_0x12b7c9[_0xe9bd('0x64')]['channel'];return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x12b7c9['params']['id']},'attributes':['id',_0xe9bd('0x41'),_0xe9bd('0x34'),_0xe9bd('0xa3'),_0xe9bd('0xa4'),_0xe9bd('0xa5'),_0xe9bd('0xa6')]})[_0xe9bd('0x1a')](handleEntityNotFound(_0xb8e9c6,null))[_0xe9bd('0x1a')](function(_0x30540e){if(_0x30540e){if(!utils[_0xe9bd('0xa7')](_0x1165da)){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))]('Unknown\x20channel');}return _0x30540e[_0xe9bd('0xa8')+_[_0xe9bd('0xa9')](_0x1165da[_0xe9bd('0xaa')]())+_0xe9bd('0xab')](_0x12b7c9[_0xe9bd('0x64')]['ids'],{'penalty':_0x12b7c9[_0xe9bd('0x64')][_0xe9bd('0xac')]||0x0})['spread'](function(_0x1971c6){for(var _0xf17159=0x0;_0xf17159<_0x12b7c9[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0xf17159+=0x1){var _0x17200a={'UserId':Number(_0x12b7c9[_0xe9bd('0x5b')]['id'])};_0x17200a[_['capitalize'](_0x1165da[_0xe9bd('0xaa')]())+_0xe9bd('0xad')]=Number(_0x12b7c9[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xf17159]);socket[_0xe9bd('0x30')](_0xe9bd('0x37')+_['capitalize'](_0x1165da[_0xe9bd('0xaa')]())+'Queue:save',_0x17200a);}return _0x1971c6;})[_0xe9bd('0x1a')](function(){if(_0x1165da===_0xe9bd('0xae')){return db[_0xe9bd('0xaf')][_0xe9bd('0x52')]({'where':{'id':_0x12b7c9[_0xe9bd('0x64')][_0xe9bd('0x67')]||[]},'raw':!![],'attributes':['id',_0xe9bd('0x41')]});}})['then'](function(_0x20cd35){var _0x55c87e=_0x30540e[_0xe9bd('0x33')]({'plain':!![]});var _0xf501d5=[];if(_0x1165da==='voice'&&_0x55c87e[_0xe9bd('0x34')]===_0xe9bd('0x2f')&&_0x55c87e[_0xe9bd('0xa3')]){for(let _0x2d9b88=0x0;_0x2d9b88<_0x20cd35[_0xe9bd('0x73')];_0x2d9b88+=0x1){_0xf501d5[_0xe9bd('0x54')]({'membername':_0x55c87e[_0xe9bd('0x41')],'UserId':_0x55c87e['id'],'queue_name':_0x20cd35[_0x2d9b88]['name'],'VoiceQueueId':_0x20cd35[_0x2d9b88]['id'],'interface':_[_0xe9bd('0x6e')](_0x55c87e[_0xe9bd('0xa6')])?util[_0xe9bd('0xb0')](_0xe9bd('0xb1'),_0x55c87e[_0xe9bd('0x41')]):_0x55c87e[_0xe9bd('0xa6')],'paused':_0x55c87e[_0xe9bd('0xa5')]||![],'penalty':_0x12b7c9[_0xe9bd('0x64')][_0xe9bd('0xac')]||0x0});}return Promise[_0xe9bd('0x5a')](_0xf501d5[_0xe9bd('0x3d')](function(_0x36ca0e){return db[_0xe9bd('0xb2')]['upsert'](_0x36ca0e);}));}return _0x30540e;});}})[_0xe9bd('0x1a')](respondWithStatusCode(_0xb8e9c6,null))['catch'](handleError(_0xb8e9c6,null));};exports['removeQueues']=function(_0x142446,_0xe1b050){var _0x5c3df6,_0x33d840;return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x142446['params']['id']},'attributes':['id','name',_0xe9bd('0x34')]})['then'](handleEntityNotFound(_0xe1b050,null))[_0xe9bd('0x1a')](function(_0x1fa766){if(_0x1fa766){_0x5c3df6=_0x1fa766;if(!_0x142446['query'][_0xe9bd('0xb3')]||!utils[_0xe9bd('0xa7')](_0x142446[_0xe9bd('0x4b')]['channel'])){throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0xb4'));}return _0x1fa766[_0xe9bd('0xb5')+_[_0xe9bd('0xa9')](_0x142446[_0xe9bd('0x4b')]['channel'][_0xe9bd('0xaa')]())+_0xe9bd('0xab')](_0x142446[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](function(_0x1fcb3f){if(_['isArray'](_0x142446['query']['ids'])){for(var _0x21a7e5=0x0;_0x21a7e5<_0x142446[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x21a7e5+=0x1){_0x33d840={'UserId':Number(_0x142446[_0xe9bd('0x5b')]['id'])};_0x33d840[_[_0xe9bd('0xa9')](_0x142446['query'][_0xe9bd('0xb3')][_0xe9bd('0xaa')]())+_0xe9bd('0xad')]=Number(_0x142446[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0x21a7e5]);socket[_0xe9bd('0x30')](_0xe9bd('0x37')+_[_0xe9bd('0xa9')](_0x142446[_0xe9bd('0x4b')][_0xe9bd('0xb3')][_0xe9bd('0xaa')]())+'Queue:remove',_0x33d840);}}else{_0x33d840={'UserId':Number(_0x142446[_0xe9bd('0x5b')]['id'])};_0x33d840[_[_0xe9bd('0xa9')](_0x142446[_0xe9bd('0x4b')]['channel'][_0xe9bd('0xaa')]())+'QueueId']=Number(_0x142446[_0xe9bd('0x4b')]['ids']);socket[_0xe9bd('0x30')](_0xe9bd('0x37')+_['capitalize'](_0x142446['query'][_0xe9bd('0xb3')][_0xe9bd('0xaa')]())+'Queue:remove',_0x33d840);}return _0x1fcb3f;})[_0xe9bd('0x1a')](function(){if(_0x142446[_0xe9bd('0x4b')]['channel']===_0xe9bd('0xae')){return db[_0xe9bd('0xb2')][_0xe9bd('0x32')]({'where':{'UserId':_0x142446[_0xe9bd('0x5b')]['id'],'VoiceQueueId':_0x142446[_0xe9bd('0x4b')][_0xe9bd('0x67')]},'individualHooks':!![]})[_0xe9bd('0x1a')](function(){return _0x5c3df6;});}return _0x5c3df6;})[_0xe9bd('0x1a')](respondWithStatusCode(_0xe1b050,null))[_0xe9bd('0x25')](handleError(_0xe1b050,null));};exports[_0xe9bd('0xb6')]=function(_0x1089dc,_0x2e780d){_0x1089dc[_0xe9bd('0x64')][_0xe9bd('0xb7')]=_0x1089dc[_0xe9bd('0xb8')][_0xe9bd('0xb9')];return db[_0xe9bd('0x46')]['find']({'where':{'id':_0x1089dc[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x2e780d,null))['then'](saveUpdates(_0x1089dc[_0xe9bd('0x64')],null))[_0xe9bd('0x1a')](respondWithResult(_0x2e780d,null))['catch'](handleError(_0x2e780d,null));};exports[_0xe9bd('0xba')]=function(_0x39b083,_0x8d8507){var _0x240c54=path[_0xe9bd('0xbb')](config[_0xe9bd('0xbc')],'server/files/images/logos/default_profile.png');return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x39b083[_0xe9bd('0x5b')]['id']},'attributes':['id',_0xe9bd('0xb7')],'raw':!![]})['then'](handleEntityNotFound(_0x8d8507,null))[_0xe9bd('0x1a')](function(_0x3851f5){if(_0x3851f5){if(_[_0xe9bd('0x6e')](_0x3851f5[_0xe9bd('0xb7')])){return _0x8d8507['download'](_0x240c54);}else{if(!fs[_0xe9bd('0xbd')](path[_0xe9bd('0xbb')](config[_0xe9bd('0xbc')],_0xe9bd('0xbe'),_0x3851f5[_0xe9bd('0xb7')]))){return _0x8d8507[_0xe9bd('0xbf')](_0x240c54);}return _0x8d8507['download'](path[_0xe9bd('0xbb')](config[_0xe9bd('0xbc')],_0xe9bd('0xbe'),_0x3851f5[_0xe9bd('0xb7')]));}}})[_0xe9bd('0x25')](handleError(_0x8d8507,null));};exports[_0xe9bd('0xc0')]=function(_0xee4c41,_0x9e303){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0xee4c41['params']['id']},'attributes':['id']})[_0xe9bd('0x1a')](handleEntityNotFound(_0x9e303,null))[_0xe9bd('0x1a')](function(_0xe2492d){var _0xe29475=[];values=_0xe2492d[_0xe9bd('0x55')];_0xe29475[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x63'),_0xe2492d[_0xe9bd('0x55')]));_0xe29475[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x56'),_0xe2492d[_0xe9bd('0x55')]));_0xe29475[_0xe9bd('0x54')](get_open_tabs(_0xe9bd('0x58'),_0xe2492d[_0xe9bd('0x55')]));_0xe29475[_0xe9bd('0x54')](get_open_tabs('whatsapp',_0xe2492d['dataValues']));_0xe29475['push'](get_open_tabs(_0xe9bd('0x57'),_0xe2492d['dataValues']));_0xe29475[_0xe9bd('0x54')](get_open_tabs('mail',_0xe2492d[_0xe9bd('0x55')]));return Promise[_0xe9bd('0x5a')](_0xe29475);})[_0xe9bd('0x1a')](function(_0x3db1c1){if(_0x3db1c1){var _0x175c69=_['map'](values['ChatOpenTabs'],function(_0x2f11a4){return{'channel':_0xe9bd('0xc1'),'id':_0x2f11a4['id'],'createdAt':_0x2f11a4[_0xe9bd('0xc2')]};});var _0x2237fd=_['map'](values[_0xe9bd('0xc3')],function(_0x4ac58d){return{'channel':_0xe9bd('0xc4'),'id':_0x4ac58d['id'],'createdAt':_0x4ac58d[_0xe9bd('0xc2')]};});var _0x2c55c7=_[_0xe9bd('0x3d')](values[_0xe9bd('0xc5')],function(_0x595448){return{'channel':_0xe9bd('0xc6'),'id':_0x595448['id'],'createdAt':_0x595448[_0xe9bd('0xc2')]};});var _0x213511=_[_0xe9bd('0x3d')](values[_0xe9bd('0xc7')],function(_0x1b67d2){return{'channel':'MAIL','id':_0x1b67d2['id'],'createdAt':_0x1b67d2[_0xe9bd('0xc2')]};});var _0xb7186c=_[_0xe9bd('0x3d')](values['SmsOpenTabs'],function(_0x1d8698){return{'channel':_0xe9bd('0xc8'),'id':_0x1d8698['id'],'createdAt':_0x1d8698['createdAt']};});var _0x4326c8=_[_0xe9bd('0x3d')](values[_0xe9bd('0xc9')],function(_0x100a5b){return{'channel':_0xe9bd('0xca'),'id':_0x100a5b['id'],'createdAt':_0x100a5b[_0xe9bd('0xc2')]};});var _0x24afb1=_[_0xe9bd('0xcb')](_0x175c69,_0x2237fd,_0x2c55c7,_0x213511,_0xb7186c,_0x4326c8);var _0x315c1a={'count':_0x24afb1[_0xe9bd('0x73')],'rows':_0x24afb1};return _0x315c1a;}else return null;})[_0xe9bd('0x1a')](respondWithResult(_0x9e303,null))['catch'](handleError(_0x9e303,null));};exports[_0xe9bd('0xcc')]=function(_0x7aac41,_0x386aad){var _0x49654a={};return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x7aac41['params']['id']}})[_0xe9bd('0x1a')](function(_0x31bbd6){if(!_0x31bbd6){throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0x7aac41[_0xe9bd('0x5b')]['id']));}return contacts[_0xe9bd('0x65')]();})[_0xe9bd('0x1a')](function(_0x27078a){_0x7aac41[_0xe9bd('0x4b')][_0xe9bd('0x46')]=_0x7aac41[_0xe9bd('0x5b')]['id'];_0x49654a=qs[_0xe9bd('0xcd')](_0x27078a,_0x7aac41);if(_0x7aac41[_0xe9bd('0x4b')][_0xe9bd('0xce')]('includeAll')){_0x49654a[_0xe9bd('0x4f')]=[{'model':db[_0xe9bd('0xcf')],'as':_0xe9bd('0xd0'),'required':![]},{'model':db[_0xe9bd('0xd1')],'as':'Tags','attributes':['id',_0xe9bd('0x41'),'color'],'where':_0x7aac41['query'][_0xe9bd('0xd2')]?{'id':_0x7aac41['query']['tag']}:undefined,'required':_0x7aac41[_0xe9bd('0x4b')][_0xe9bd('0xd2')]?!![]:![]}];}return contacts['findAll'](_0x7aac41[_0xe9bd('0x4b')],_0x7aac41[_0xe9bd('0x37')],_0x49654a,_0x27078a);})[_0xe9bd('0x1a')](respondWithFilteredResult(_0x386aad,_0x49654a))['catch'](APIHandleError(_0x386aad));};exports['getQueues']=function(_0x6f6df8,_0x2f1c6d){var _0xd3f2ce;var _0x20a3a7={};var _0x5985cd;return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x6f6df8[_0xe9bd('0x5b')]['id']},'attributes':['id',_0xe9bd('0x41'),_0xe9bd('0x34')]})[_0xe9bd('0x1a')](handleEntityNotFound(_0x2f1c6d,null))['then'](function(_0x2f399a){if(!utils[_0xe9bd('0xa7')](_0x6f6df8[_0xe9bd('0x4b')]['channel'])){throw new db['Sequelize'][(_0xe9bd('0x99'))]('Unknown\x20channel');}_0xd3f2ce=_0x2f399a;var _0x5b8004={};_0x5b8004[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_[_0xe9bd('0xa9')](_0x6f6df8[_0xe9bd('0x4b')]['channel'])+_0xe9bd('0xd3')][_0xe9bd('0x47')]);_0x5b8004[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x6f6df8[_0xe9bd('0x4b')]);_0x5b8004[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x5b8004[_0xe9bd('0x5f')],_0x5b8004['query']);_0x20a3a7[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x5b8004[_0xe9bd('0x5f')],qs['fields'](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x20a3a7['attributes']=_0x20a3a7['attributes'][_0xe9bd('0x73')]?_0x20a3a7['attributes']:_0x5b8004[_0xe9bd('0x5f')];_0x20a3a7[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x20a3a7[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x6f6df8[_0xe9bd('0x4b')],_0x5b8004[_0xe9bd('0xd4')]));if(_0x6f6df8['query'][_0xe9bd('0x3b')]){_0x20a3a7['where']=_[_0xe9bd('0x61')](_0x20a3a7[_0xe9bd('0xd7')],{'$or':_['map'](_0x20a3a7[_0xe9bd('0x51')],function(_0x17c4b9){var _0x86f87e={};_0x86f87e[_0x17c4b9]={'$like':'%'+_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x86f87e;})});}_0x20a3a7=_[_0xe9bd('0x61')]({},_0x20a3a7,_0x6f6df8[_0xe9bd('0x62')]);switch(_0xd3f2ce[_0xe9bd('0x34')]){case _0xe9bd('0x35'):return db[_['capitalize'](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0xb3')])+_0xe9bd('0xd3')]['findAll'](_0x20a3a7);case _0xe9bd('0x37'):case _0xe9bd('0x2f'):return _0xd3f2ce[_0xe9bd('0x33')+_[_0xe9bd('0xa9')](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0xb3')])+'Queues'](_0x20a3a7);default:throw new db['Sequelize'][(_0xe9bd('0x99'))]('Unknown\x20role');}})[_0xe9bd('0x1a')](function(_0x467002){_0x5985cd=_0x467002[_0xe9bd('0x73')];if(!_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x20a3a7[_0xe9bd('0x2c')]=qs['limit'](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x20a3a7[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x6f6df8[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}switch(_0xd3f2ce[_0xe9bd('0x34')]){case _0xe9bd('0x35'):return db[_[_0xe9bd('0xa9')](_0x6f6df8[_0xe9bd('0x4b')]['channel'])+_0xe9bd('0xd3')][_0xe9bd('0x52')](_0x20a3a7);case _0xe9bd('0x37'):case _0xe9bd('0x2f'):return _0xd3f2ce[_0xe9bd('0x33')+_['capitalize'](_0x6f6df8[_0xe9bd('0x4b')]['channel'])+_0xe9bd('0xab')](_0x20a3a7);}})['then'](function(_0x24d1b2){return{'count':_0x5985cd,'rows':_0x24d1b2};})[_0xe9bd('0x1a')](respondWithResult(_0x2f1c6d,null))[_0xe9bd('0x25')](handleError(_0x2f1c6d,null));};exports[_0xe9bd('0xda')]=function(_0x3b5863,_0x1bda1a){var _0x4bff1e={};var _0x1d3a63={};var _0x34eaaa;var _0x5ccc76;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x3b5863[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1bda1a,null))[_0xe9bd('0x1a')](function(_0x119cc1){if(_0x119cc1){_0x34eaaa=_0x119cc1;_0x1d3a63[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db['UserVoiceQueueRt'][_0xe9bd('0x47')]);_0x1d3a63[_0xe9bd('0x4b')]=_['keys'](_0x3b5863[_0xe9bd('0x4b')]);_0x1d3a63[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x1d3a63[_0xe9bd('0x5f')],_0x1d3a63[_0xe9bd('0x4b')]);_0x4bff1e[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x1d3a63[_0xe9bd('0x5f')],qs['fields'](_0x3b5863['query'][_0xe9bd('0x60')]));_0x4bff1e['attributes']=_0x4bff1e[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x4bff1e[_0xe9bd('0x51')]:_0x1d3a63[_0xe9bd('0x5f')];_0x4bff1e[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x3b5863[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x4bff1e[_0xe9bd('0xd7')]=qs['filters'](_[_0xe9bd('0xd8')](_0x3b5863[_0xe9bd('0x4b')],_0x1d3a63[_0xe9bd('0xd4')]));if(_0x3b5863[_0xe9bd('0x4b')]['filter']){_0x4bff1e['where']=_[_0xe9bd('0x61')](_0x4bff1e['where'],{'$or':_['map'](_0x4bff1e[_0xe9bd('0x51')],function(_0xfd39b3){var _0x5f0617={};_0x5f0617[_0xfd39b3]={'$like':'%'+_0x3b5863[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x5f0617;})});}_0x4bff1e=_[_0xe9bd('0x61')]({},_0x4bff1e,_0x3b5863[_0xe9bd('0x62')]);return _0x34eaaa['getVoiceQueuesRt'](_0x4bff1e);}})[_0xe9bd('0x1a')](function(_0x1b35ce){if(_0x1b35ce){_0x5ccc76=_0x1b35ce['length'];if(!_0x3b5863[_0xe9bd('0x4b')]['hasOwnProperty']('nolimit')){_0x4bff1e['limit']=qs[_0xe9bd('0x2c')](_0x3b5863[_0xe9bd('0x4b')]['limit']);_0x4bff1e[_0xe9bd('0x2a')]=qs['offset'](_0x3b5863[_0xe9bd('0x4b')]['offset']);}return _0x34eaaa[_0xe9bd('0xda')](_0x4bff1e);}})['then'](function(_0x247cc3){if(_0x247cc3){return _0x247cc3?{'count':_0x5ccc76,'rows':_0x247cc3}:null;}})['then'](respondWithResult(_0x1bda1a,null))[_0xe9bd('0x25')](handleError(_0x1bda1a,null));};exports[_0xe9bd('0xdb')]=function(_0x25c387,_0x22d244){var _0x4cc21e={};var _0x16f42d={};var _0x123b96;var _0x4c3a15;return db[_0xe9bd('0x46')]['findOne']({'where':{'id':_0x25c387[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x22d244,null))[_0xe9bd('0x1a')](function(_0x160479){if(_0x160479){_0x123b96=_0x160479;_0x16f42d['model']=_[_0xe9bd('0x5c')](db['ChatGroup'][_0xe9bd('0x47')]);_0x16f42d['query']=_[_0xe9bd('0x5c')](_0x25c387[_0xe9bd('0x4b')]);_0x16f42d[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x16f42d[_0xe9bd('0x5f')],_0x16f42d['query']);_0x4cc21e[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x16f42d[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x25c387[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x4cc21e['attributes']=_0x4cc21e[_0xe9bd('0x51')]['length']?_0x4cc21e[_0xe9bd('0x51')]:_0x16f42d[_0xe9bd('0x5f')];_0x4cc21e['order']=qs[_0xe9bd('0xd6')](_0x25c387[_0xe9bd('0x4b')]['sort']);_0x4cc21e['where']=qs['filters'](_[_0xe9bd('0xd8')](_0x25c387[_0xe9bd('0x4b')],_0x16f42d[_0xe9bd('0xd4')]));if(_0x25c387[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x4cc21e[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x4cc21e[_0xe9bd('0xd7')],{'$or':_['map'](_0x4cc21e['attributes'],function(_0x50e752){var _0x5086d4={};_0x5086d4[_0x50e752]={'$like':'%'+_0x25c387[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x5086d4;})});}_0x4cc21e=_[_0xe9bd('0x61')]({},_0x4cc21e,_0x25c387[_0xe9bd('0x62')]);return _0x123b96[_0xe9bd('0xdb')](_0x4cc21e);}})['then'](function(_0x2b4a27){if(_0x2b4a27){_0x4c3a15=_0x2b4a27[_0xe9bd('0x73')];if(!_0x25c387[_0xe9bd('0x4b')][_0xe9bd('0xce')]('nolimit')){_0x4cc21e[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x25c387[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x4cc21e['offset']=qs[_0xe9bd('0x2a')](_0x25c387[_0xe9bd('0x4b')]['offset']);}return _0x123b96['getGroups'](_0x4cc21e);}})[_0xe9bd('0x1a')](function(_0x96310a){if(_0x96310a){return _0x96310a?{'count':_0x4c3a15,'rows':_0x96310a}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x22d244,null))[_0xe9bd('0x25')](handleError(_0x22d244,null));};exports[_0xe9bd('0xdc')]=function(_0x3fa95d,_0x284d1c){var _0x2496eb={'raw':!![],'where':{}};var _0x514de5={};var _0x54ac2f={'count':0x0,'rows':[]};return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x3fa95d[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x284d1c,null))['then'](function(_0x1bcd8e){if(_0x1bcd8e){_0x514de5[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db['VoiceRecording'][_0xe9bd('0x47')]);_0x514de5[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x3fa95d[_0xe9bd('0x4b')]);_0x514de5[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x514de5['model'],_0x514de5['query']);_0x2496eb[_0xe9bd('0x51')]=_['intersection'](_0x514de5[_0xe9bd('0x5f')],qs['fields'](_0x3fa95d[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x2496eb[_0xe9bd('0x51')]=_0x2496eb[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x2496eb['attributes']:_0x514de5[_0xe9bd('0x5f')];if(!_0x3fa95d['query'][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x2496eb[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x3fa95d['query']['limit']);_0x2496eb[_0xe9bd('0x2a')]=qs['offset'](_0x3fa95d[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}_0x2496eb['order']=qs[_0xe9bd('0xd6')](_0x3fa95d['query'][_0xe9bd('0xd6')]);_0x2496eb['where']=qs['filters'](_[_0xe9bd('0xd8')](_0x3fa95d[_0xe9bd('0x4b')],_0x514de5[_0xe9bd('0xd4')]));_0x2496eb['where'][_0xe9bd('0xdd')]=_0x1bcd8e['id'];if(_0x3fa95d['query'][_0xe9bd('0x3b')]){_0x2496eb['where']=_['merge'](_0x2496eb['where'],{'$or':_[_0xe9bd('0x3d')](_0x2496eb[_0xe9bd('0x51')],function(_0x160ab4){var _0x48359b={};_0x48359b[_0x160ab4]={'$like':'%'+_0x3fa95d[_0xe9bd('0x4b')]['filter']+'%'};return _0x48359b;})});}_0x2496eb=_[_0xe9bd('0x61')]({},_0x2496eb,_0x3fa95d['options']);return db['VoiceRecording']['count']({'where':_0x2496eb['where']})[_0xe9bd('0x1a')](function(_0x319f83){_0x54ac2f[_0xe9bd('0x2d')]=_0x319f83;if(_0x3fa95d[_0xe9bd('0x4b')][_0xe9bd('0x4c')]){_0x2496eb[_0xe9bd('0x4f')]=[{'all':!![]}];}return db[_0xe9bd('0xde')][_0xe9bd('0x52')](_0x2496eb);})[_0xe9bd('0x1a')](function(_0x34b9fc){_0x54ac2f[_0xe9bd('0x53')]=_0x34b9fc;return _0x54ac2f;});}})['then'](respondWithFilteredResult(_0x284d1c,_0x2496eb))[_0xe9bd('0x25')](handleError(_0x284d1c,null));};exports[_0xe9bd('0xdf')]=function(_0xe30741,_0x360fdd){var _0x16dc1b={'raw':!![],'where':{}};var _0xcd1dd5={};var _0x133cfe={'count':0x0,'rows':[]};return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0xe30741[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x360fdd,null))[_0xe9bd('0x1a')](function(_0xe1f9f5){if(_0xe1f9f5){_0xcd1dd5[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0xe0')][_0xe9bd('0x47')]);_0xcd1dd5[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0xe30741[_0xe9bd('0x4b')]);_0xcd1dd5['filters']=_[_0xe9bd('0x5e')](_0xcd1dd5[_0xe9bd('0x5f')],_0xcd1dd5['query']);_0x16dc1b[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0xcd1dd5[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x16dc1b[_0xe9bd('0x51')]=_0x16dc1b['attributes']['length']?_0x16dc1b['attributes']:_0xcd1dd5[_0xe9bd('0x5f')];if(!_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0xce')]('nolimit')){_0x16dc1b['limit']=qs['limit'](_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x16dc1b['offset']=qs['offset'](_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}_0x16dc1b[_0xe9bd('0xd5')]=qs['sort'](_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x16dc1b['where']=qs['filters'](_[_0xe9bd('0xd8')](_0xe30741['query'],_0xcd1dd5['filters']));_0x16dc1b[_0xe9bd('0xd7')][_0xe9bd('0xdd')]=_0xe1f9f5['id'];if(_0xe30741[_0xe9bd('0x4b')]['filter']){_0x16dc1b['where']=_['merge'](_0x16dc1b[_0xe9bd('0xd7')],{'$or':_['map'](_0x16dc1b[_0xe9bd('0x51')],function(_0x3264c3){var _0x5d882f={};_0x5d882f[_0x3264c3]={'$like':'%'+_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x5d882f;})});}_0x16dc1b=_['merge']({},_0x16dc1b,_0xe30741[_0xe9bd('0x62')]);return db[_0xe9bd('0xe0')][_0xe9bd('0x2d')]({'where':_0x16dc1b[_0xe9bd('0xd7')]})[_0xe9bd('0x1a')](function(_0x334b49){_0x133cfe[_0xe9bd('0x2d')]=_0x334b49;if(_0xe30741[_0xe9bd('0x4b')][_0xe9bd('0x4c')]){_0x16dc1b['include']=[{'all':!![]}];}return db[_0xe9bd('0xe0')][_0xe9bd('0x52')](_0x16dc1b);})[_0xe9bd('0x1a')](function(_0x482701){_0x133cfe[_0xe9bd('0x53')]=_0x482701;return _0x133cfe;});}})[_0xe9bd('0x1a')](respondWithFilteredResult(_0x360fdd,_0x16dc1b))['catch'](handleError(_0x360fdd,null));};exports['getChatInteractions']=function(_0x56f467,_0x385a14){var _0x23b44a={};var _0x2002bb={};var _0x38086e;var _0x511bc4;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x56f467[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x385a14,null))[_0xe9bd('0x1a')](function(_0x275a55){if(_0x275a55){_0x38086e=_0x275a55;_0x2002bb[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db['ChatInteraction'][_0xe9bd('0x47')]);_0x2002bb[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x56f467[_0xe9bd('0x4b')]);_0x2002bb[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x2002bb[_0xe9bd('0x5f')],_0x2002bb[_0xe9bd('0x4b')]);_0x23b44a['attributes']=_[_0xe9bd('0x5e')](_0x2002bb['model'],qs['fields'](_0x56f467[_0xe9bd('0x4b')]['fields']));_0x23b44a[_0xe9bd('0x51')]=_0x23b44a[_0xe9bd('0x51')]['length']?_0x23b44a[_0xe9bd('0x51')]:_0x2002bb[_0xe9bd('0x5f')];_0x23b44a[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x56f467[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x23b44a[_0xe9bd('0xd7')]=qs['filters'](_[_0xe9bd('0xd8')](_0x56f467[_0xe9bd('0x4b')],_0x2002bb[_0xe9bd('0xd4')]));if(_0x56f467[_0xe9bd('0x4b')]['filter']){_0x23b44a[_0xe9bd('0xd7')]=_['merge'](_0x23b44a[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x23b44a['attributes'],function(_0x1cffd6){var _0x135537={};_0x135537[_0x1cffd6]={'$like':'%'+_0x56f467['query']['filter']+'%'};return _0x135537;})});}_0x23b44a=_[_0xe9bd('0x61')]({},_0x23b44a,_0x56f467[_0xe9bd('0x62')]);return _0x38086e['getChatInteractions'](_0x23b44a);}})[_0xe9bd('0x1a')](function(_0x3d9182){if(_0x3d9182){_0x511bc4=_0x3d9182[_0xe9bd('0x73')];if(!_0x56f467[_0xe9bd('0x4b')][_0xe9bd('0xce')]('nolimit')){_0x23b44a['limit']=qs[_0xe9bd('0x2c')](_0x56f467[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x23b44a[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x56f467['query'][_0xe9bd('0x2a')]);}return _0x38086e['getChatInteractions'](_0x23b44a);}})[_0xe9bd('0x1a')](function(_0x11fac6){if(_0x11fac6){return _0x11fac6?{'count':_0x511bc4,'rows':_0x11fac6}:null;}})['then'](respondWithResult(_0x385a14,null))[_0xe9bd('0x25')](handleError(_0x385a14,null));};exports[_0xe9bd('0xe1')]=function(_0x3eb62e,_0x534de0){var _0x4494cb={};var _0x2f7596={};var _0xbeb5ff;var _0x1a4b03;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x3eb62e[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x534de0,null))[_0xe9bd('0x1a')](function(_0x5c6179){if(_0x5c6179){_0xbeb5ff=_0x5c6179;_0x2f7596['model']=_['keys'](db['OpenchannelInteraction'][_0xe9bd('0x47')]);_0x2f7596[_0xe9bd('0x4b')]=_['keys'](_0x3eb62e[_0xe9bd('0x4b')]);_0x2f7596[_0xe9bd('0xd4')]=_['intersection'](_0x2f7596[_0xe9bd('0x5f')],_0x2f7596[_0xe9bd('0x4b')]);_0x4494cb[_0xe9bd('0x51')]=_['intersection'](_0x2f7596[_0xe9bd('0x5f')],qs['fields'](_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x4494cb[_0xe9bd('0x51')]=_0x4494cb[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x4494cb['attributes']:_0x2f7596[_0xe9bd('0x5f')];_0x4494cb[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x4494cb[_0xe9bd('0xd7')]=qs['filters'](_[_0xe9bd('0xd8')](_0x3eb62e[_0xe9bd('0x4b')],_0x2f7596[_0xe9bd('0xd4')]));if(_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x4494cb['where']=_[_0xe9bd('0x61')](_0x4494cb[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x4494cb[_0xe9bd('0x51')],function(_0x570017){var _0x535134={};_0x535134[_0x570017]={'$like':'%'+_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x535134;})});}_0x4494cb=_['merge']({},_0x4494cb,_0x3eb62e['options']);return _0xbeb5ff[_0xe9bd('0xe1')](_0x4494cb);}})['then'](function(_0xcb6ebe){if(_0xcb6ebe){_0x1a4b03=_0xcb6ebe[_0xe9bd('0x73')];if(!_0x3eb62e[_0xe9bd('0x4b')]['hasOwnProperty'](_0xe9bd('0xd9'))){_0x4494cb[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x4494cb[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x3eb62e[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0xbeb5ff[_0xe9bd('0xe1')](_0x4494cb);}})[_0xe9bd('0x1a')](function(_0xd5d11c){if(_0xd5d11c){return _0xd5d11c?{'count':_0x1a4b03,'rows':_0xd5d11c}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x534de0,null))[_0xe9bd('0x25')](handleError(_0x534de0,null));};exports['getMailInteractions']=function(_0x500bde,_0x4ab942){var _0x3c6db4={'raw':!![],'where':{}};var _0x43d640={};var _0xf35171={'count':0x0,'rows':[]};return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x500bde[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x4ab942,null))[_0xe9bd('0x1a')](function(_0x57012b){if(_0x57012b){_0x43d640[_0xe9bd('0x5f')]=_['keys'](db['MailInteraction']['rawAttributes']);_0x43d640[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x500bde[_0xe9bd('0x4b')]);_0x43d640[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x43d640[_0xe9bd('0x5f')],_0x43d640['query']);_0x3c6db4['attributes']=_[_0xe9bd('0x5e')](_0x43d640[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x500bde[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x3c6db4[_0xe9bd('0x51')]=_0x3c6db4[_0xe9bd('0x51')]['length']?_0x3c6db4['attributes']:_0x43d640[_0xe9bd('0x5f')];if(!_0x500bde[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x3c6db4[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x500bde[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x3c6db4[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x500bde[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}_0x3c6db4['order']=qs[_0xe9bd('0xd6')](_0x500bde[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x3c6db4['where']=qs[_0xe9bd('0xd4')](_['pick'](_0x500bde[_0xe9bd('0x4b')],_0x43d640[_0xe9bd('0xd4')]));_0x3c6db4[_0xe9bd('0xd7')][_0xe9bd('0xdd')]=_0x57012b['id'];if(_0x500bde['query'][_0xe9bd('0x3b')]){_0x3c6db4[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x3c6db4[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x3c6db4[_0xe9bd('0x51')],function(_0x2b5763){var _0x3bb271={};_0x3bb271[_0x2b5763]={'$like':'%'+_0x500bde['query'][_0xe9bd('0x3b')]+'%'};return _0x3bb271;})});}_0x3c6db4=_[_0xe9bd('0x61')]({},_0x3c6db4,_0x500bde[_0xe9bd('0x62')]);return db[_0xe9bd('0xe2')][_0xe9bd('0x2d')]({'where':_0x3c6db4[_0xe9bd('0xd7')]})[_0xe9bd('0x1a')](function(_0x5324f9){_0xf35171[_0xe9bd('0x2d')]=_0x5324f9;if(_0x500bde['query'][_0xe9bd('0x4c')]){_0x3c6db4[_0xe9bd('0x4f')]=[{'all':!![]}];}return db[_0xe9bd('0xe2')][_0xe9bd('0x52')](_0x3c6db4);})[_0xe9bd('0x1a')](function(_0x4476cc){_0xf35171[_0xe9bd('0x53')]=_0x4476cc;return _0xf35171;});}})[_0xe9bd('0x1a')](respondWithFilteredResult(_0x4ab942,_0x3c6db4))[_0xe9bd('0x25')](handleError(_0x4ab942,null));};exports[_0xe9bd('0xe3')]=function(_0x1da7bb,_0x1b4a97){var _0x1e6284={};var _0x106d72={};var _0xfd349f;var _0x14ed0e;return db[_0xe9bd('0x46')]['findOne']({'where':{'id':_0x1da7bb[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1b4a97,null))[_0xe9bd('0x1a')](function(_0x5d397c){if(_0x5d397c){_0xfd349f=_0x5d397c;_0x106d72[_0xe9bd('0x5f')]=_['keys'](db['SmsInteraction']['rawAttributes']);_0x106d72[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x1da7bb[_0xe9bd('0x4b')]);_0x106d72[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x106d72['model'],_0x106d72[_0xe9bd('0x4b')]);_0x1e6284[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x106d72['model'],qs[_0xe9bd('0x60')](_0x1da7bb[_0xe9bd('0x4b')]['fields']));_0x1e6284[_0xe9bd('0x51')]=_0x1e6284['attributes'][_0xe9bd('0x73')]?_0x1e6284[_0xe9bd('0x51')]:_0x106d72[_0xe9bd('0x5f')];_0x1e6284[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x1da7bb[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x1e6284[_0xe9bd('0xd7')]=qs['filters'](_['pick'](_0x1da7bb[_0xe9bd('0x4b')],_0x106d72[_0xe9bd('0xd4')]));if(_0x1da7bb[_0xe9bd('0x4b')]['filter']){_0x1e6284[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x1e6284[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x1e6284[_0xe9bd('0x51')],function(_0x44b131){var _0x671835={};_0x671835[_0x44b131]={'$like':'%'+_0x1da7bb['query'][_0xe9bd('0x3b')]+'%'};return _0x671835;})});}_0x1e6284=_[_0xe9bd('0x61')]({},_0x1e6284,_0x1da7bb[_0xe9bd('0x62')]);return _0xfd349f[_0xe9bd('0xe3')](_0x1e6284);}})[_0xe9bd('0x1a')](function(_0xd8c4b1){if(_0xd8c4b1){_0x14ed0e=_0xd8c4b1[_0xe9bd('0x73')];if(!_0x1da7bb[_0xe9bd('0x4b')]['hasOwnProperty'](_0xe9bd('0xd9'))){_0x1e6284[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x1da7bb[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x1e6284[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x1da7bb[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0xfd349f[_0xe9bd('0xe3')](_0x1e6284);}})[_0xe9bd('0x1a')](function(_0x510c99){if(_0x510c99){return _0x510c99?{'count':_0x14ed0e,'rows':_0x510c99}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x1b4a97,null))[_0xe9bd('0x25')](handleError(_0x1b4a97,null));};exports[_0xe9bd('0xe4')]=function(_0x465bc4,_0x41dbd5){var _0x35ea47={};var _0x584b7c={};var _0x4e305d;var _0x2c20ce;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x465bc4[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x41dbd5,null))[_0xe9bd('0x1a')](function(_0x448069){if(_0x448069){_0x4e305d=_0x448069;_0x584b7c[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0xe5')][_0xe9bd('0x47')]);_0x584b7c[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x465bc4[_0xe9bd('0x4b')]);_0x584b7c['filters']=_[_0xe9bd('0x5e')](_0x584b7c[_0xe9bd('0x5f')],_0x584b7c['query']);_0x35ea47[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x584b7c['model'],qs[_0xe9bd('0x60')](_0x465bc4['query'][_0xe9bd('0x60')]));_0x35ea47[_0xe9bd('0x51')]=_0x35ea47[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x35ea47[_0xe9bd('0x51')]:_0x584b7c[_0xe9bd('0x5f')];_0x35ea47[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x465bc4[_0xe9bd('0x4b')]['sort']);_0x35ea47[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x465bc4[_0xe9bd('0x4b')],_0x584b7c['filters']));if(_0x465bc4['query'][_0xe9bd('0x3b')]){_0x35ea47[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x35ea47['where'],{'$or':_[_0xe9bd('0x3d')](_0x35ea47[_0xe9bd('0x51')],function(_0x29b25c){var _0x378035={};_0x378035[_0x29b25c]={'$like':'%'+_0x465bc4[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x378035;})});}_0x35ea47=_[_0xe9bd('0x61')]({},_0x35ea47,_0x465bc4[_0xe9bd('0x62')]);return _0x4e305d[_0xe9bd('0xe4')](_0x35ea47);}})[_0xe9bd('0x1a')](function(_0x9a095e){if(_0x9a095e){_0x2c20ce=_0x9a095e[_0xe9bd('0x73')];if(!_0x465bc4['query'][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x35ea47[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x465bc4['query'][_0xe9bd('0x2c')]);_0x35ea47[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x465bc4['query'][_0xe9bd('0x2a')]);}return _0x4e305d['getFaxInteractions'](_0x35ea47);}})[_0xe9bd('0x1a')](function(_0x2d97e7){if(_0x2d97e7){return _0x2d97e7?{'count':_0x2c20ce,'rows':_0x2d97e7}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x41dbd5,null))['catch'](handleError(_0x41dbd5,null));};exports[_0xe9bd('0xe6')]=function(_0x3641f4,_0x4a7992){var _0x1d23f0={};var _0xe0661f={};var _0x275cf6;var _0x1952fe;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x3641f4[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4a7992,null))['then'](function(_0x61a532){if(_0x61a532){_0x275cf6=_0x61a532;_0xe0661f[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0xe7')][_0xe9bd('0x47')]);_0xe0661f[_0xe9bd('0x4b')]=_['keys'](_0x3641f4[_0xe9bd('0x4b')]);_0xe0661f[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0xe0661f[_0xe9bd('0x5f')],_0xe0661f['query']);_0x1d23f0[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0xe0661f[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x3641f4[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x1d23f0['attributes']=_0x1d23f0[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x1d23f0['attributes']:_0xe0661f[_0xe9bd('0x5f')];_0x1d23f0[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x3641f4[_0xe9bd('0x4b')]['sort']);_0x1d23f0[_0xe9bd('0xd7')]=qs['filters'](_[_0xe9bd('0xd8')](_0x3641f4['query'],_0xe0661f[_0xe9bd('0xd4')]));if(_0x3641f4['query']['filter']){_0x1d23f0['where']=_[_0xe9bd('0x61')](_0x1d23f0['where'],{'$or':_[_0xe9bd('0x3d')](_0x1d23f0[_0xe9bd('0x51')],function(_0x3baf29){var _0x3efc65={};_0x3efc65[_0x3baf29]={'$like':'%'+_0x3641f4[_0xe9bd('0x4b')]['filter']+'%'};return _0x3efc65;})});}_0x1d23f0=_['merge']({},_0x1d23f0,_0x3641f4[_0xe9bd('0x62')]);return _0x275cf6[_0xe9bd('0xe6')](_0x1d23f0);}})[_0xe9bd('0x1a')](function(_0x139112){if(_0x139112){_0x1952fe=_0x139112[_0xe9bd('0x73')];if(!_0x3641f4['query']['hasOwnProperty'](_0xe9bd('0xd9'))){_0x1d23f0[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x3641f4[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x1d23f0['offset']=qs['offset'](_0x3641f4[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x275cf6[_0xe9bd('0xe6')](_0x1d23f0);}})['then'](function(_0x5a66fe){if(_0x5a66fe){return _0x5a66fe?{'count':_0x1952fe,'rows':_0x5a66fe}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x4a7992,null))[_0xe9bd('0x25')](handleError(_0x4a7992,null));};exports['login']=function(_0x5b4371,_0x3bd674,_0x4c7f7c){var _0x433360;var _0xa73a6;var _0x19485f;var _0x4a0f43=!_[_0xe9bd('0x6e')](_0x5b4371['params']['id'])?_0x5b4371[_0xe9bd('0x5b')]['id']:!_[_0xe9bd('0x6e')](_0x5b4371[_0xe9bd('0x37')]['id'])?_0x5b4371[_0xe9bd('0x37')]['id']:null;return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x4a0f43,'role':{'$or':[_0xe9bd('0x35'),_0xe9bd('0x37'),_0xe9bd('0x2f')]}},'attributes':['id',_0xe9bd('0x41'),_0xe9bd('0xe8'),_0xe9bd('0xe9'),_0xe9bd('0x34'),_0xe9bd('0x69'),'loginInPause']})[_0xe9bd('0x1a')](function(_0x1b8c64){if(_0x1b8c64){if(_0x1b8c64[_0xe9bd('0x34')]===_0xe9bd('0x2f')){_0x433360=_0x1b8c64;if(_0x5b4371[_0xe9bd('0x64')][_0xe9bd('0xa6')]){_0x19485f=util[_0xe9bd('0xb0')]('LOCAL/%s@from-sip/n',_0x433360[_0x5b4371[_0xe9bd('0x64')][_0xe9bd('0xa6')]]);}else if(_0x5b4371[_0xe9bd('0x64')]['intrf']){_0x19485f=util[_0xe9bd('0xb0')](_0xe9bd('0xb1'),_0x5b4371[_0xe9bd('0x64')][_0xe9bd('0xea')]);}else{_0x19485f=util['format'](_0xe9bd('0xb1'),_0x433360[_0xe9bd('0x41')]);}socket['to'](util['format'](_0xe9bd('0xeb'),_0x433360[_0xe9bd('0x41')]))[_0xe9bd('0x30')]('user:forcelogout',{'user':{'id':_0x433360['id'],'name':_0x433360[_0xe9bd('0x41')]},'ip':_0x5b4371[_0xe9bd('0xec')]['x-forwarded-for']||_0x5b4371[_0xe9bd('0xed')][_0xe9bd('0xee')]||_0x5b4371[_0xe9bd('0xef')][_0xe9bd('0xee')]||_0x5b4371[_0xe9bd('0xed')]['socket']['remoteAddress']});return db['UserVoiceQueueRt'][_0xe9bd('0x32')]({'where':{'membername':_0x433360[_0xe9bd('0x41')]},'individualHooks':!![]});}}else{throw new db[(_0xe9bd('0x98'))][(_0xe9bd('0x99'))](_0xe9bd('0xf0'));}})[_0xe9bd('0x1a')](function(){if(_0x433360){return _0x433360[_0xe9bd('0xf1')]({'raw':!![]});}})[_0xe9bd('0x1a')](function(_0xa36ac6){if(_0x433360){if(_0xa36ac6){_0xa73a6=_0xa36ac6;if(_0xa73a6[_0xe9bd('0x73')]){var _0x1856b7=_0xa73a6[_0xe9bd('0x3d')](function(_0x211794){var _0x3d0bf4={'membername':_0x433360[_0xe9bd('0x41')],'UserId':_0x433360['id'],'queue_name':_0x211794[_0xe9bd('0x41')],'VoiceQueueId':_0x211794['id'],'interface':_0x19485f,'paused':_0x433360[_0xe9bd('0xa4')]||![],'penalty':_0x211794[_0xe9bd('0xf2')]||0x0};return db[_0xe9bd('0xb2')][_0xe9bd('0xf3')](_0x3d0bf4);});return Promise[_0xe9bd('0x5a')](_0x1856b7);}}}})[_0xe9bd('0x1a')](function(){if(_0x433360){return db[_0xe9bd('0xf4')][_0xe9bd('0x52')]({'where':{'membername':_0x433360[_0xe9bd('0x41')],'exitAt':null}});}})[_0xe9bd('0x1a')](function(_0x584b5f){if(_0x433360){var _0x14766d=[];_0x584b5f[_0xe9bd('0xf5')](function(_0x25a09e){_0x14766d[_0xe9bd('0x54')](_0x25a09e[_0xe9bd('0xf6')]({'exitAt':moment()[_0xe9bd('0xb0')](_0xe9bd('0xf7'))}));});return Promise[_0xe9bd('0x5a')](_0x14766d);}})[_0xe9bd('0x1a')](function(){if(_0x433360){var _0x4b570b=[];var _0x37ca89=[];var _0xe0cef6=utils[_0xe9bd('0xf8')]();var _0x4c9389={'membername':_0x433360['name'],'interface':_0x19485f,'enterAt':moment()[_0xe9bd('0xb0')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x433360[_0xe9bd('0x34')],'internal':_0x433360['internal']};_0xe0cef6[_0xe9bd('0xf5')](function(_0x3a2529){_0x4b570b[_0xe9bd('0x54')](_[_0xe9bd('0x61')]({'channel':_0x3a2529,'type':_0xe9bd('0xf9'),'data1':_0x5b4371[_0xe9bd('0x64')][_0xe9bd('0xfa')],'data2':_0x19485f},_0x4c9389));if(_0x433360['loginInPause']){_0x37ca89[_0xe9bd('0x54')](_['merge']({'channel':_0x3a2529,'type':_0xe9bd('0xfb'),'data1':_0xe9bd('0xfc')},_0x4c9389));}});return db[_0xe9bd('0xf4')][_0xe9bd('0x91')](_0x4b570b[_0xe9bd('0xcb')](_0x37ca89),{'individualHooks':!![]});}})[_0xe9bd('0x1a')](function(){if(_0x433360){return _0x433360[_0xe9bd('0xf6')]({'online':!![],'lastLoginAt':moment()[_0xe9bd('0xb0')](_0xe9bd('0xf7')),'voicePause':_0x433360[_0xe9bd('0xa4')]||![],'mailPause':_0x433360[_0xe9bd('0xa4')]||![],'chatPause':_0x433360[_0xe9bd('0xa4')]||![],'faxPause':_0x433360[_0xe9bd('0xa4')]||![],'smsPause':_0x433360[_0xe9bd('0xa4')]||![],'openchannelPause':_0x433360[_0xe9bd('0xa4')]||![],'whatsappPause':_0x433360['loginInPause']||![],'pauseType':_0x433360[_0xe9bd('0xa4')]?'LOGININPAUSE':null,'interface':_0x19485f,'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xe9bd('0x1a')](function(_0x508a55){if(_0x5b4371['isMiddleware']){return _0x4c7f7c();}else{return Promise[_0xe9bd('0xfd')](_0x508a55)[_0xe9bd('0x1a')](respondWithResult(_0x3bd674,null));}})['catch'](handleError(_0x3bd674,null));};exports['logout']=function(_0x18a8da,_0x554eb1){var _0x415336;return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x18a8da[_0xe9bd('0x5b')]['id'],'role':'agent'},'attributes':['id',_0xe9bd('0x41'),_0xe9bd('0x34')]})['then'](handleEntityNotFound(_0x554eb1,null))['then'](function(_0x3413ce){if(_0x3413ce){_0x415336=_0x3413ce;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x415336[_0xe9bd('0x41')]},'individualHooks':!![]});}})['then'](function(){return db[_0xe9bd('0xf4')][_0xe9bd('0x52')]({'where':{'membername':_0x415336[_0xe9bd('0x41')],'exitAt':null}});})[_0xe9bd('0x1a')](function(_0x4eb3b3){var _0x4d59aa=[];_0x4eb3b3['forEach'](function(_0x1645cb){_0x4d59aa['push'](_0x1645cb['update']({'exitAt':moment()[_0xe9bd('0xb0')](_0xe9bd('0xf7'))}));});return Promise[_0xe9bd('0x5a')](_0x4d59aa);})[_0xe9bd('0x1a')](function(){return _0x415336['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xe9bd('0x1a')](respondWithResult(_0x554eb1,null))[_0xe9bd('0x25')](handleError(_0x554eb1,null));};exports[_0xe9bd('0xfe')]=function(_0x39f69f,_0x5e5109){var _0x5f1554;return db[_0xe9bd('0xb2')]['update']({'paused':0x1},{'where':{'UserId':_0x39f69f[_0xe9bd('0x5b')]['id']},'individualHooks':!![]})[_0xe9bd('0x1a')](function(){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x39f69f['params']['id'],'role':_0xe9bd('0x2f')},'attributes':['id','name','role',_0xe9bd('0x69'),'interface',_0xe9bd('0xa3')]});})[_0xe9bd('0x1a')](handleEntityNotFound(_0x5e5109,null))[_0xe9bd('0x1a')](function(_0x195170){if(_0x195170){_0x5f1554=_0x195170;return respondWithRpcPromise('QueuePause',_0xe9bd('0xfe'),{'id':_0x5f1554['id'],'name':_0x5f1554[_0xe9bd('0x41')],'pause':!![]});}})[_0xe9bd('0x1a')](function(){if(_0x5f1554){return db['MemberReport'][_0xe9bd('0x52')]({'where':{'membername':_0x5f1554[_0xe9bd('0x41')],'type':_0xe9bd('0xfb'),'exitAt':null}});}})[_0xe9bd('0x1a')](function(_0x82e10f){if(_0x82e10f['length']){var _0x40c16e=moment()[_0xe9bd('0xb0')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x172b7c=0x0,_0x59b572=_0x82e10f[_0xe9bd('0x73')];_0x172b7c<_0x59b572;_0x172b7c++){_0x82e10f[_0x172b7c]['updateAttributes']({'exitAt':_0x40c16e});}}})[_0xe9bd('0x1a')](function(){var _0x10ecdb=[];var _0x4668f9=utils[_0xe9bd('0xf8')]();_0x4668f9['forEach'](function(_0x24917b){_0x10ecdb[_0xe9bd('0x54')]({'channel':_0x24917b,'membername':_0x5f1554[_0xe9bd('0x41')],'interface':_[_0xe9bd('0x6e')](_0x5f1554[_0xe9bd('0xa6')])?util[_0xe9bd('0xb0')](_0xe9bd('0xb1'),_0x5f1554['name']):_0x5f1554[_0xe9bd('0xa6')],'type':_0xe9bd('0xfb'),'enterAt':moment()[_0xe9bd('0xb0')](_0xe9bd('0xf7')),'data1':_0x39f69f[_0xe9bd('0x64')]['type']||_0xe9bd('0xff'),'role':_0x5f1554['role'],'internal':_0x5f1554[_0xe9bd('0x69')]});});return db[_0xe9bd('0xf4')][_0xe9bd('0x91')](_0x10ecdb,{'individualHooks':!![]});})[_0xe9bd('0x1a')](function(){return _0x5f1554[_0xe9bd('0xf6')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x39f69f['body'][_0xe9bd('0x100')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xe9bd('0xb0')](_0xe9bd('0xf7'))});})[_0xe9bd('0x1a')](respondWithResult(_0x5e5109,null))['catch'](handleError(_0x5e5109,null));};exports[_0xe9bd('0x101')]=function(_0x198fc6,_0x4d7ff3){if(_0x198fc6[_0xe9bd('0x64')][_0xe9bd('0xb3')]&&!utils['isValidChannel'](_0x198fc6[_0xe9bd('0x64')][_0xe9bd('0xb3')])){throw new APIBadRequestError(util[_0xe9bd('0xb0')]('Channel\x20parameter\x20%s\x20is\x20invalid',_0x198fc6[_0xe9bd('0x64')][_0xe9bd('0xb3')]));}return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x198fc6[_0xe9bd('0x5b')]['id']},'attributes':['id',_0xe9bd('0x41'),'role',_0xe9bd('0x69'),_0xe9bd('0xa6'),_0xe9bd('0xa3'),_0xe9bd('0xa5'),_0xe9bd('0x102'),'chatPause',_0xe9bd('0x103'),_0xe9bd('0x104'),_0xe9bd('0x105'),'whatsappPause',_0xe9bd('0x106'),'lastPauseAt']})[_0xe9bd('0x1a')](function(_0x395df6){if(!_0x395df6){throw new APINotFoundError(util['format'](_0xe9bd('0x107'),_0x198fc6['params']['id']));}return _0x395df6['unpause'](_0x198fc6[_0xe9bd('0x64')]['channel']);})[_0xe9bd('0x1a')](respondWithResult(_0x4d7ff3,null))[_0xe9bd('0x25')](APIHandleError(_0x4d7ff3));};exports[_0xe9bd('0x108')]=function(_0x3e8a41,_0x15e4ac){var _0x15ac04={};var _0x129162={};var _0x105aac;var _0x30a93c;return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x3e8a41['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x15e4ac,null))[_0xe9bd('0x1a')](function(_0x34bd49){if(_0x34bd49){_0x105aac=_0x34bd49;_0x129162[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0x109')]['rawAttributes']);_0x129162['query']=_[_0xe9bd('0x5c')](_0x3e8a41[_0xe9bd('0x4b')]);_0x129162[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x129162[_0xe9bd('0x5f')],_0x129162[_0xe9bd('0x4b')]);_0x15ac04['attributes']=_[_0xe9bd('0x5e')](_0x129162[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x3e8a41[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x15ac04[_0xe9bd('0x51')]=_0x15ac04[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x15ac04['attributes']:_0x129162[_0xe9bd('0x5f')];_0x15ac04['order']=qs[_0xe9bd('0xd6')](_0x3e8a41[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x15ac04[_0xe9bd('0xd7')]=qs['filters'](_[_0xe9bd('0xd8')](_0x3e8a41[_0xe9bd('0x4b')],_0x129162[_0xe9bd('0xd4')]));if(_0x3e8a41[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x15ac04[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x15ac04[_0xe9bd('0xd7')],{'$or':_['map'](_0x15ac04[_0xe9bd('0x51')],function(_0x5f7912){var _0x335458={};_0x335458[_0x5f7912]={'$like':'%'+_0x3e8a41['query'][_0xe9bd('0x3b')]+'%'};return _0x335458;})});}_0x15ac04=_['merge']({},_0x15ac04,_0x3e8a41[_0xe9bd('0x62')]);return _0x105aac[_0xe9bd('0x108')](_0x15ac04);}})['then'](function(_0x4c18af){if(_0x4c18af){_0x30a93c=_0x4c18af['length'];if(!_0x3e8a41[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x15ac04[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x3e8a41['query'][_0xe9bd('0x2c')]);_0x15ac04[_0xe9bd('0x2a')]=qs['offset'](_0x3e8a41['query'][_0xe9bd('0x2a')]);}return _0x105aac[_0xe9bd('0x108')](_0x15ac04);}})[_0xe9bd('0x1a')](function(_0x3a6e9e){if(_0x3a6e9e){return _0x3a6e9e?{'count':_0x30a93c,'rows':_0x3a6e9e}:null;}})['then'](respondWithResult(_0x15e4ac,null))[_0xe9bd('0x25')](handleError(_0x15e4ac,null));};exports[_0xe9bd('0x10a')]=function(_0x1dd304,_0xccff02){var _0x3c45a7=_0x1dd304[_0xe9bd('0x5b')]['id'];var _0x506bb8=_0x1dd304[_0xe9bd('0x64')]?_0x1dd304[_0xe9bd('0x64')][_0xe9bd('0x67')]:null;var _0x4b1831=[];return Promise[_0xe9bd('0xfd')]()[_0xe9bd('0x1a')](function(){if(!_0x506bb8)throw new APIBadRequestError(_0xe9bd('0x10b'));})[_0xe9bd('0x1a')](function(){return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x3c45a7}});})['then'](function(_0x5eba11){if(!_0x5eba11)throw new APINotFoundError(util[_0xe9bd('0xb0')](_0xe9bd('0x107'),_0x1dd304[_0xe9bd('0x5b')]['id']));return db['sequelize'][_0xe9bd('0x10c')](function(_0x1bf099){return _0x5eba11[_0xe9bd('0x10a')](_0x506bb8,{'transaction':_0x1bf099})[_0xe9bd('0x1a')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x506bb8}}});})[_0xe9bd('0x1a')](function(_0x56a07d){var _0x471d71=_[_0xe9bd('0x3d')](_0x56a07d,function(_0xf1ffb3){return _0xf1ffb3['getAssociatedQueues']();});return Promise[_0xe9bd('0x5a')](_0x471d71);})['then'](function(_0x4978cb){_0x4b1831=_[_0xe9bd('0x10d')](_0x4978cb);var _0x3a9034=_[_0xe9bd('0x3d')](_0x4b1831,function(_0x5969dc){return _0x5969dc[_0xe9bd('0x10e')](_0x5eba11['id'],{'transaction':_0x1bf099});});return Promise['all'](_0x3a9034);})['then'](function(){if(!_0x5eba11[_0xe9bd('0xa3')])return;var _0x483f7c=_[_0xe9bd('0x3b')](_0x4b1831,function(_0x4231db){return _0x4231db[_0xe9bd('0x10f')](_0xe9bd('0xb3'))==='Voice';});var _0x44c6b1=_[_0xe9bd('0x3d')](_0x483f7c,function(_0x236ddb){return db[_0xe9bd('0xb2')][_0xe9bd('0xf3')]({'membername':_0x5eba11[_0xe9bd('0x41')],'UserId':_0x5eba11['id'],'queue_name':_0x236ddb[_0xe9bd('0x41')],'VoiceQueueId':_0x236ddb['id'],'interface':_['isNil'](_0x5eba11[_0xe9bd('0xa6')])?util[_0xe9bd('0xb0')](_0xe9bd('0xb1'),_0x5eba11['name']):_0x5eba11[_0xe9bd('0xa6')],'paused':_0x5eba11[_0xe9bd('0xa5')]||![],'penalty':_0x5eba11[_0xe9bd('0xac')]},{'transaction':_0x1bf099});});return Promise[_0xe9bd('0x5a')](_0x44c6b1);})['then'](function(){return db[_0xe9bd('0x110')]['findAll']({'where':{'teamId':{'$in':_0x506bb8}}});})[_0xe9bd('0x1a')](function(_0xffcf88){var _0x3c510c=_[_0xe9bd('0x3d')](_0xffcf88,function(_0x10102d){return db['UserVoicePrefix'][_0xe9bd('0x88')]({'UserId':_0x5eba11['id'],'VoicePrefixId':_0x10102d['VoicePrefixId']},{'transaction':_0x1bf099});});return Promise[_0xe9bd('0x5a')](_0x3c510c);});});})[_0xe9bd('0x1a')](function(){for(var _0x371d03=0x0;_0x371d03<_0x4b1831[_0xe9bd('0x73')];_0x371d03++){var _0x5d310c=_0x4b1831[_0x371d03][_0xe9bd('0x10f')](_0xe9bd('0xb3'));var _0x541af7=_0x5d310c+_0xe9bd('0xad');socket[_0xe9bd('0x30')](_0xe9bd('0x37')+_0x5d310c+_0xe9bd('0x111'),{'UserId':_0x3c45a7,['queueField']:_0x4b1831[_0x371d03]['id']});}})[_0xe9bd('0x1a')](respondWithStatusCode(_0xccff02,null))[_0xe9bd('0x25')](APIHandleError(_0xccff02));};exports['removeTeams']=function(_0x2ff45d,_0x313285){var _0x5a6b31=_0x2ff45d[_0xe9bd('0x5b')]['id'];var _0x410e79=null;if(_0x2ff45d['query'][_0xe9bd('0x67')]){_0x410e79=_[_0xe9bd('0x112')](_0x2ff45d['query'][_0xe9bd('0x67')])?_0x2ff45d['query'][_0xe9bd('0x67')]:[_0x2ff45d[_0xe9bd('0x4b')][_0xe9bd('0x67')]];}var _0x41bf5d=[];return Promise[_0xe9bd('0xfd')]()['then'](function(){if(!_0x410e79)throw new APIBadRequestError(_0xe9bd('0x113'));})[_0xe9bd('0x1a')](function(){return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x5a6b31}});})[_0xe9bd('0x1a')](function(_0x3d4e0a){if(!_0x3d4e0a)throw new APINotFoundError(util['format'](_0xe9bd('0x107'),_0x2ff45d['params']['id']));return db[_0xe9bd('0x70')][_0xe9bd('0x10c')](function(_0x17b084){return _0x3d4e0a[_0xe9bd('0x114')](_0x410e79,{'transaction':_0x17b084})[_0xe9bd('0x1a')](function(){return db[_0xe9bd('0x109')]['findAll']({'where':{'id':{'$in':_0x410e79}}});})['then'](function(_0x17ba57){var _0x5cf0c8=_['map'](_0x17ba57,function(_0xe25a90){return _0xe25a90['getAssociatedQueues']();});return Promise[_0xe9bd('0x5a')](_0x5cf0c8);})[_0xe9bd('0x1a')](function(_0x46e536){_0x41bf5d=_[_0xe9bd('0x10d')](_0x46e536);var _0xbf6259=_[_0xe9bd('0x3d')](_0x41bf5d,function(_0x42a1d1){return _0x42a1d1['removeAgent'](_0x3d4e0a['id'],{'transaction':_0x17b084});});return Promise[_0xe9bd('0x5a')](_0xbf6259);})[_0xe9bd('0x1a')](function(){if(!_0x3d4e0a[_0xe9bd('0xa3')])return;var _0x25a7bf=_[_0xe9bd('0x3b')](_0x41bf5d,function(_0x3fc168){return _0x3fc168['getDataValue']('channel')===_0xe9bd('0x115');});var _0x3c2be2=_[_0xe9bd('0x3d')](_0x25a7bf,function(_0x429e99){return db[_0xe9bd('0xb2')][_0xe9bd('0x32')]({'where':{'VoiceQueueId':_0x429e99['id'],'UserId':_0x3d4e0a['id']},'transaction':_0x17b084});});return Promise[_0xe9bd('0x5a')](_0x3c2be2);})['then'](function(){return db[_0xe9bd('0x110')][_0xe9bd('0x52')]({'where':{'teamId':{'$in':_0x410e79}}});})['then'](function(_0x1b2cd2){var _0x586ab7=_[_0xe9bd('0x3d')](_0x1b2cd2,function(_0x570c51){return db[_0xe9bd('0x116')][_0xe9bd('0x32')]({'where':{'UserId':_0x3d4e0a['id'],'VoicePrefixId':_0x570c51[_0xe9bd('0x117')]}},{'transaction':_0x17b084});});return Promise['all'](_0x586ab7);});});})[_0xe9bd('0x1a')](function(){for(var _0x31596b=0x0;_0x31596b<_0x41bf5d[_0xe9bd('0x73')];_0x31596b++){var _0x2b8d8a=_0x41bf5d[_0x31596b]['getDataValue'](_0xe9bd('0xb3'));var _0x5a5330=_0x2b8d8a+_0xe9bd('0xad');socket[_0xe9bd('0x30')]('user'+_0x2b8d8a+_0xe9bd('0x118'),{'UserId':_0x5a6b31,['queueField']:_0x41bf5d[_0x31596b]['id']});}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x313285,null))[_0xe9bd('0x25')](APIHandleError(_0x313285));};exports[_0xe9bd('0x119')]=function(_0x356eb6,_0x386781){var _0x203cb8={};var _0x121643={};var _0x50c5a1;var _0xc531a6;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x356eb6[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x386781,null))[_0xe9bd('0x1a')](function(_0x46f6db){if(_0x46f6db){_0x50c5a1=_0x46f6db;_0x121643[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db['CmList'][_0xe9bd('0x47')]);_0x121643[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x356eb6[_0xe9bd('0x4b')]);_0x121643[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x121643[_0xe9bd('0x5f')],_0x121643[_0xe9bd('0x4b')]);_0x203cb8[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x121643['model'],qs[_0xe9bd('0x60')](_0x356eb6[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x203cb8[_0xe9bd('0x51')]=_0x203cb8[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x203cb8[_0xe9bd('0x51')]:_0x121643[_0xe9bd('0x5f')];_0x203cb8[_0xe9bd('0xd5')]=qs['sort'](_0x356eb6['query'][_0xe9bd('0xd6')]);_0x203cb8[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x356eb6['query'],_0x121643[_0xe9bd('0xd4')]));if(_0x356eb6[_0xe9bd('0x4b')]['filter']){_0x203cb8[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x203cb8['where'],{'$or':_[_0xe9bd('0x3d')](_0x203cb8[_0xe9bd('0x51')],function(_0x2d0623){var _0x4f1dff={};_0x4f1dff[_0x2d0623]={'$like':'%'+_0x356eb6[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x4f1dff;})});}_0x203cb8=_[_0xe9bd('0x61')]({},_0x203cb8,_0x356eb6[_0xe9bd('0x62')]);return _0x50c5a1['getLists'](_0x203cb8);}})[_0xe9bd('0x1a')](function(_0x557237){if(_0x557237){_0xc531a6=_0x557237['length'];if(!_0x356eb6[_0xe9bd('0x4b')]['hasOwnProperty'](_0xe9bd('0xd9'))){_0x203cb8['limit']=qs[_0xe9bd('0x2c')](_0x356eb6[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x203cb8[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x356eb6[_0xe9bd('0x4b')]['offset']);}return _0x50c5a1[_0xe9bd('0x119')](_0x203cb8);}})[_0xe9bd('0x1a')](function(_0x3be3f6){if(_0x3be3f6){return _0x3be3f6?{'count':_0xc531a6,'rows':_0x3be3f6}:null;}})['then'](respondWithResult(_0x386781,null))['catch'](handleError(_0x386781,null));};exports[_0xe9bd('0x11a')]=function(_0x810b6c,_0x119af8){var _0x2544f8={};var _0x1b83c9={};var _0x1609ab;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x810b6c['params']['id']}})['then'](handleEntityNotFound(_0x119af8,null))['then'](function(_0x2c4ab0){if(_0x2c4ab0){_0x1609ab=_0x2c4ab0;_0x1b83c9[_0xe9bd('0x5f')]=_['keys'](db[_0xe9bd('0x46')][_0xe9bd('0x47')]);_0x1b83c9[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x810b6c[_0xe9bd('0x4b')]);_0x1b83c9['filters']=_[_0xe9bd('0x5e')](_0x1b83c9[_0xe9bd('0x5f')],_0x1b83c9[_0xe9bd('0x4b')]);_0x2544f8['attributes']=_[_0xe9bd('0x5e')](_0x1b83c9[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x810b6c[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x2544f8[_0xe9bd('0x51')]=_0x2544f8[_0xe9bd('0x51')]['length']?_0x2544f8['attributes']:_0x1b83c9[_0xe9bd('0x5f')];_0x2544f8['order']=qs[_0xe9bd('0xd6')](_0x810b6c['query'][_0xe9bd('0xd6')]);_0x2544f8[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x810b6c[_0xe9bd('0x4b')],_0x1b83c9['filters']));if(_0x810b6c['query']['filter']){_0x2544f8[_0xe9bd('0xd7')]=_['merge'](_0x2544f8['where'],{'$or':_[_0xe9bd('0x3d')](_0x2544f8[_0xe9bd('0x51')],function(_0x58305c){var _0x350b94={};_0x350b94[_0x58305c]={'$like':'%'+_0x810b6c['query'][_0xe9bd('0x3b')]+'%'};return _0x350b94;})});}_0x2544f8[_0xe9bd('0x5f')]=db[_0xe9bd('0x46')];_0x2544f8['as']=_0xe9bd('0x38');_0x2544f8=_['merge']({},_0x2544f8,_0x810b6c[_0xe9bd('0x62')]);return _0x1609ab[_0xe9bd('0xf1')]({'include':[_0x2544f8]});}})['then'](function(_0x3910d5){if(_0x3910d5){var _0x14d983={},_0xa7d308=[];for(var _0x83a957=0x0;_0x83a957<_0x3910d5[_0xe9bd('0x73')];_0x83a957+=0x1){for(var _0x15c509=0x0,_0x38604f;_0x15c509<_0x3910d5[_0x83a957]['Agents'][_0xe9bd('0x73')];_0x15c509+=0x1){_0x38604f=_0x3910d5[_0x83a957]['Agents'][_0x15c509]['get']({'plain':!![]});_0x14d983[_0x38604f['id']]=_0x38604f;}}_0x14d983=_[_0xe9bd('0x11b')](_0x14d983);for(var _0x25fc41=qs[_0xe9bd('0x2a')](_0x810b6c[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);_0x25fc41<_0x14d983[_0xe9bd('0x73')]&&_0xa7d308['length']<qs['limit'](_0x810b6c['query'][_0xe9bd('0x2c')]);_0x25fc41+=0x1){if(_0x14d983[_0x25fc41]){_0xa7d308[_0xe9bd('0x54')](_0x14d983[_0x25fc41]);}}return{'count':_0x14d983[_0xe9bd('0x73')],'rows':_0xa7d308};}})[_0xe9bd('0x1a')](respondWithResult(_0x119af8,null))[_0xe9bd('0x25')](handleError(_0x119af8,null));};exports['destroy']=function(_0x4330c2,_0x5653f9){if(_0x4330c2[_0xe9bd('0x37')]['id']==_0x4330c2[_0xe9bd('0x5b')]['id']){return _0x5653f9['status'](0x1f4)[_0xe9bd('0x44')]({'message':_0xe9bd('0x11c')});}return db[_0xe9bd('0x46')]['find']({'where':{'id':_0x4330c2[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5653f9,null))['then'](removeEntity(_0x5653f9,null))[_0xe9bd('0x25')](handleError(_0x5653f9,null));};exports[_0xe9bd('0x11d')]=function(_0x537b5f,_0x1deb7a){return db['User']['find']({'where':{'id':_0x537b5f['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1deb7a,null))[_0xe9bd('0x1a')](function(_0x3368a6){if(_0x3368a6){return _0x3368a6[_0xe9bd('0x11d')](_0x537b5f['body']['ids'],_['omit'](_0x537b5f[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{})[_0xe9bd('0x11e')](function(){for(var _0x400d3f=0x0;_0x400d3f<_0x537b5f[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x400d3f+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x11f'),{'ChatInteractionId':Number(_0x537b5f['body'][_0xe9bd('0x67')][_0x400d3f]),'UserId':Number(_0x537b5f[_0xe9bd('0x5b')]['id'])});}return _0x537b5f[_0xe9bd('0x64')][_0xe9bd('0x67')];});}})[_0xe9bd('0x1a')](respondWithResult(_0x1deb7a,null))[_0xe9bd('0x25')](handleError(_0x1deb7a,null));};exports[_0xe9bd('0x120')]=function(_0x275e51,_0x1ad6f8){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x275e51[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1ad6f8,null))[_0xe9bd('0x1a')](function(_0x2121d2){if(_0x2121d2){return _0x2121d2[_0xe9bd('0x120')](_0x275e51[_0xe9bd('0x4b')][_0xe9bd('0x67')])[_0xe9bd('0x1a')](function(){if(_[_0xe9bd('0x112')](_0x275e51[_0xe9bd('0x4b')]['ids'])){for(var _0x390c14=0x0;_0x390c14<_0x275e51[_0xe9bd('0x4b')][_0xe9bd('0x67')]['length'];_0x390c14+=0x1){socket['emit'](_0xe9bd('0x121'),{'ChatInteractionId':Number(_0x275e51[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0x390c14]),'UserId':Number(_0x275e51[_0xe9bd('0x5b')]['id'])});}}else{socket[_0xe9bd('0x30')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x275e51['query'][_0xe9bd('0x67')]),'UserId':Number(_0x275e51[_0xe9bd('0x5b')]['id'])});}});}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x1ad6f8,null))[_0xe9bd('0x25')](handleError(_0x1ad6f8,null));};exports[_0xe9bd('0x122')]=function(_0xd1c20e,_0x1a53cd){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0xd1c20e[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1a53cd,null))['then'](function(_0x3e1249){if(_0x3e1249){return _0x3e1249[_0xe9bd('0x122')](_0xd1c20e[_0xe9bd('0x64')]['ids'],_['omit'](_0xd1c20e['body'],[_0xe9bd('0x67'),'id'])||{})[_0xe9bd('0x11e')](function(){for(var _0x1eae3e=0x0;_0x1eae3e<_0xd1c20e[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x1eae3e+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x123'),{'MailInteractionId':Number(_0xd1c20e[_0xe9bd('0x64')][_0xe9bd('0x67')][_0x1eae3e]),'UserId':Number(_0xd1c20e[_0xe9bd('0x5b')]['id'])});}return _0xd1c20e[_0xe9bd('0x64')]['ids'];});}})[_0xe9bd('0x1a')](respondWithResult(_0x1a53cd,null))['catch'](handleError(_0x1a53cd,null));};exports[_0xe9bd('0x124')]=function(_0x1cf146,_0x37749c){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x1cf146[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x37749c,null))[_0xe9bd('0x1a')](function(_0x2b37f4){if(_0x2b37f4){return _0x2b37f4[_0xe9bd('0x124')](_0x1cf146[_0xe9bd('0x4b')]['ids'])[_0xe9bd('0x1a')](function(){if(_[_0xe9bd('0x112')](_0x1cf146[_0xe9bd('0x4b')]['ids'])){for(var _0x241cf2=0x0;_0x241cf2<_0x1cf146[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x241cf2+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x125'),{'MailInteractionId':Number(_0x1cf146[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0x241cf2]),'UserId':Number(_0x1cf146[_0xe9bd('0x5b')]['id'])});}}else{socket['emit'](_0xe9bd('0x125'),{'MailInteractionId':Number(_0x1cf146['query'][_0xe9bd('0x67')]),'UserId':Number(_0x1cf146['params']['id'])});}});}})['then'](respondWithStatusCode(_0x37749c,null))['catch'](handleError(_0x37749c,null));};exports['addFaxInteractions']=function(_0xd8d978,_0x43c961){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0xd8d978[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x43c961,null))[_0xe9bd('0x1a')](function(_0x37e3ae){if(_0x37e3ae){return _0x37e3ae[_0xe9bd('0x126')](_0xd8d978['body']['ids'],_['omit'](_0xd8d978[_0xe9bd('0x64')],['ids','id'])||{})[_0xe9bd('0x11e')](function(){for(var _0x343980=0x0;_0x343980<_0xd8d978[_0xe9bd('0x64')][_0xe9bd('0x67')]['length'];_0x343980+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x127'),{'FaxInteractionId':Number(_0xd8d978[_0xe9bd('0x64')][_0xe9bd('0x67')][_0x343980]),'UserId':Number(_0xd8d978[_0xe9bd('0x5b')]['id'])});}return _0xd8d978['body'][_0xe9bd('0x67')];});}})[_0xe9bd('0x1a')](respondWithResult(_0x43c961,null))[_0xe9bd('0x25')](handleError(_0x43c961,null));};exports[_0xe9bd('0x128')]=function(_0x1b7861,_0x30c4b2){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x1b7861['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x30c4b2,null))[_0xe9bd('0x1a')](function(_0x52076d){if(_0x52076d){return _0x52076d['removeFaxInteractions'](_0x1b7861[_0xe9bd('0x4b')][_0xe9bd('0x67')])[_0xe9bd('0x1a')](function(){if(_[_0xe9bd('0x112')](_0x1b7861[_0xe9bd('0x4b')][_0xe9bd('0x67')])){for(var _0xf0a1e8=0x0;_0xf0a1e8<_0x1b7861[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0xf0a1e8+=0x1){socket['emit'](_0xe9bd('0x129'),{'FaxInteractionId':Number(_0x1b7861[_0xe9bd('0x4b')][_0xe9bd('0x67')][_0xf0a1e8]),'UserId':Number(_0x1b7861[_0xe9bd('0x5b')]['id'])});}}else{socket[_0xe9bd('0x30')](_0xe9bd('0x129'),{'FaxInteractionId':Number(_0x1b7861[_0xe9bd('0x4b')][_0xe9bd('0x67')]),'UserId':Number(_0x1b7861['params']['id'])});}});}})['then'](respondWithStatusCode(_0x30c4b2,null))[_0xe9bd('0x25')](handleError(_0x30c4b2,null));};exports['addSmsInteractions']=function(_0x17e7a9,_0x146815){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x17e7a9[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x146815,null))[_0xe9bd('0x1a')](function(_0x246d4d){if(_0x246d4d){return _0x246d4d[_0xe9bd('0x12a')](_0x17e7a9[_0xe9bd('0x64')][_0xe9bd('0x67')],_['omit'](_0x17e7a9[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{})['spread'](function(){for(var _0x13ae28=0x0;_0x13ae28<_0x17e7a9[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x13ae28+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x12b'),{'SmsInteractionId':Number(_0x17e7a9[_0xe9bd('0x64')][_0xe9bd('0x67')][_0x13ae28]),'UserId':Number(_0x17e7a9[_0xe9bd('0x5b')]['id'])});}return _0x17e7a9[_0xe9bd('0x64')][_0xe9bd('0x67')];});}})[_0xe9bd('0x1a')](respondWithResult(_0x146815,null))[_0xe9bd('0x25')](handleError(_0x146815,null));};exports[_0xe9bd('0x12c')]=function(_0x17a534,_0x2a2f4c){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x17a534['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x2a2f4c,null))[_0xe9bd('0x1a')](function(_0x52a206){if(_0x52a206){return _0x52a206[_0xe9bd('0x12c')](_0x17a534[_0xe9bd('0x4b')][_0xe9bd('0x67')])['then'](function(){if(_[_0xe9bd('0x112')](_0x17a534['query']['ids'])){for(var _0x1f5e42=0x0;_0x1f5e42<_0x17a534[_0xe9bd('0x4b')]['ids']['length'];_0x1f5e42+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x12d'),{'SmsInteractionId':Number(_0x17a534[_0xe9bd('0x4b')]['ids'][_0x1f5e42]),'UserId':Number(_0x17a534[_0xe9bd('0x5b')]['id'])});}}else{socket[_0xe9bd('0x30')](_0xe9bd('0x12d'),{'SmsInteractionId':Number(_0x17a534[_0xe9bd('0x4b')]['ids']),'UserId':Number(_0x17a534[_0xe9bd('0x5b')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a2f4c,null))[_0xe9bd('0x25')](handleError(_0x2a2f4c,null));};exports['addOpenchannelInteractions']=function(_0xa02f3e,_0x4f2a0a){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0xa02f3e['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x4f2a0a,null))[_0xe9bd('0x1a')](function(_0x36beab){if(_0x36beab){return _0x36beab[_0xe9bd('0x12e')](_0xa02f3e[_0xe9bd('0x64')][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0xa02f3e[_0xe9bd('0x64')],['ids','id'])||{})['spread'](function(){for(var _0x503719=0x0;_0x503719<_0xa02f3e['body'][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x503719+=0x1){socket['emit'](_0xe9bd('0x12f'),{'OpenchannelInteractionId':Number(_0xa02f3e[_0xe9bd('0x64')][_0xe9bd('0x67')][_0x503719]),'UserId':Number(_0xa02f3e[_0xe9bd('0x5b')]['id'])});}return _0xa02f3e[_0xe9bd('0x64')][_0xe9bd('0x67')];});}})[_0xe9bd('0x1a')](respondWithResult(_0x4f2a0a,null))[_0xe9bd('0x25')](handleError(_0x4f2a0a,null));};exports[_0xe9bd('0x130')]=function(_0x51b774,_0x36b300){return db[_0xe9bd('0x46')]['find']({'where':{'id':_0x51b774[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x36b300,null))['then'](function(_0x3a9f7f){if(_0x3a9f7f){return _0x3a9f7f[_0xe9bd('0x130')](_0x51b774[_0xe9bd('0x4b')]['ids'])[_0xe9bd('0x1a')](function(){if(_[_0xe9bd('0x112')](_0x51b774[_0xe9bd('0x4b')][_0xe9bd('0x67')])){for(var _0x40b977=0x0;_0x40b977<_0x51b774['query'][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x40b977+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x131'),{'OpenchannelInteractionId':Number(_0x51b774[_0xe9bd('0x4b')]['ids'][_0x40b977]),'UserId':Number(_0x51b774[_0xe9bd('0x5b')]['id'])});}}else{socket[_0xe9bd('0x30')](_0xe9bd('0x131'),{'OpenchannelInteractionId':Number(_0x51b774[_0xe9bd('0x4b')][_0xe9bd('0x67')]),'UserId':Number(_0x51b774[_0xe9bd('0x5b')]['id'])});}});}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x36b300,null))[_0xe9bd('0x25')](handleError(_0x36b300,null));};exports[_0xe9bd('0x132')]=function(_0x149197,_0x167389){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x149197[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x167389,null))[_0xe9bd('0x1a')](function(_0x24ef83){if(_0x24ef83){return _0x24ef83[_0xe9bd('0x132')](_0x149197[_0xe9bd('0x64')]['ids'],_[_0xe9bd('0x68')](_0x149197[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{})['spread'](function(){for(var _0x5a6025=0x0;_0x5a6025<_0x149197[_0xe9bd('0x64')][_0xe9bd('0x67')][_0xe9bd('0x73')];_0x5a6025+=0x1){socket[_0xe9bd('0x30')](_0xe9bd('0x133'),{'WhatsappInteractionId':Number(_0x149197[_0xe9bd('0x64')][_0xe9bd('0x67')][_0x5a6025]),'UserId':Number(_0x149197[_0xe9bd('0x5b')]['id'])});}return _0x149197[_0xe9bd('0x64')][_0xe9bd('0x67')];});}})[_0xe9bd('0x1a')](respondWithResult(_0x167389,null))[_0xe9bd('0x25')](handleError(_0x167389,null));};exports['removeWhatsappInteractions']=function(_0x641f8d,_0x259518){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x641f8d[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x259518,null))[_0xe9bd('0x1a')](function(_0x10a5cf){if(_0x10a5cf){return _0x10a5cf[_0xe9bd('0x134')](_0x641f8d['query'][_0xe9bd('0x67')]);}})['then'](respondWithStatusCode(_0x259518,null))[_0xe9bd('0x25')](handleError(_0x259518,null));};exports[_0xe9bd('0x135')]=function(_0x23d6f4,_0x36fad9){var _0x54f6ef={};var _0xa259c2={};var _0x2d8b8b;var _0x3d0625;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x23d6f4[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x36fad9,null))['then'](function(_0x33c9e9){if(_0x33c9e9){_0x2d8b8b=_0x33c9e9;_0xa259c2[_0xe9bd('0x5f')]=_['keys'](db[_0xe9bd('0x136')][_0xe9bd('0x47')]);_0xa259c2[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x23d6f4[_0xe9bd('0x4b')]);_0xa259c2[_0xe9bd('0xd4')]=_['intersection'](_0xa259c2[_0xe9bd('0x5f')],_0xa259c2[_0xe9bd('0x4b')]);_0x54f6ef[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0xa259c2[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x23d6f4[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x54f6ef[_0xe9bd('0x51')]=_0x54f6ef[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x54f6ef['attributes']:_0xa259c2[_0xe9bd('0x5f')];_0x54f6ef['order']=qs[_0xe9bd('0xd6')](_0x23d6f4[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x54f6ef['where']=qs['filters'](_[_0xe9bd('0xd8')](_0x23d6f4['query'],_0xa259c2[_0xe9bd('0xd4')]));if(_0x23d6f4['query'][_0xe9bd('0x3b')]){_0x54f6ef['where']=_[_0xe9bd('0x61')](_0x54f6ef[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x54f6ef[_0xe9bd('0x51')],function(_0x542c57){var _0x4cd152={};_0x4cd152[_0x542c57]={'$like':'%'+_0x23d6f4['query'][_0xe9bd('0x3b')]+'%'};return _0x4cd152;})});}_0x54f6ef=_[_0xe9bd('0x61')]({},_0x54f6ef,_0x23d6f4[_0xe9bd('0x62')]);return _0x2d8b8b[_0xe9bd('0x135')](_0x54f6ef);}})[_0xe9bd('0x1a')](function(_0x301fe4){if(_0x301fe4){_0x3d0625=_0x301fe4['length'];if(!_0x23d6f4[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x54f6ef[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x23d6f4['query']['limit']);_0x54f6ef[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x23d6f4['query'][_0xe9bd('0x2a')]);}return _0x2d8b8b[_0xe9bd('0x135')](_0x54f6ef);}})[_0xe9bd('0x1a')](function(_0x5ac2b4){if(_0x5ac2b4){return _0x5ac2b4?{'count':_0x3d0625,'rows':_0x5ac2b4}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x36fad9,null))['catch'](handleError(_0x36fad9,null));};exports['getFaxAccounts']=function(_0x1053a1,_0x1ccd1e){var _0x38a66f={};var _0x20f7f5={};var _0x598ead;var _0x529b0f;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x1053a1['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1ccd1e,null))[_0xe9bd('0x1a')](function(_0x5d3288){if(_0x5d3288){_0x598ead=_0x5d3288;_0x20f7f5[_0xe9bd('0x5f')]=_['keys'](db[_0xe9bd('0x137')][_0xe9bd('0x47')]);_0x20f7f5[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x1053a1['query']);_0x20f7f5[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x20f7f5[_0xe9bd('0x5f')],_0x20f7f5[_0xe9bd('0x4b')]);_0x38a66f[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x20f7f5['model'],qs[_0xe9bd('0x60')](_0x1053a1[_0xe9bd('0x4b')]['fields']));_0x38a66f[_0xe9bd('0x51')]=_0x38a66f[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x38a66f[_0xe9bd('0x51')]:_0x20f7f5['model'];_0x38a66f[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x1053a1[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x38a66f[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_['pick'](_0x1053a1['query'],_0x20f7f5[_0xe9bd('0xd4')]));if(_0x1053a1[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x38a66f[_0xe9bd('0xd7')]=_['merge'](_0x38a66f[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x38a66f[_0xe9bd('0x51')],function(_0x3cebc6){var _0x3b8235={};_0x3b8235[_0x3cebc6]={'$like':'%'+_0x1053a1['query']['filter']+'%'};return _0x3b8235;})});}_0x38a66f=_['merge']({},_0x38a66f,_0x1053a1['options']);return _0x598ead[_0xe9bd('0x138')](_0x38a66f);}})['then'](function(_0x3dd54f){if(_0x3dd54f){_0x529b0f=_0x3dd54f[_0xe9bd('0x73')];if(!_0x1053a1[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x38a66f[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x1053a1[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x38a66f[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x1053a1[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x598ead['getFaxAccounts'](_0x38a66f);}})[_0xe9bd('0x1a')](function(_0x1e9353){if(_0x1e9353){return _0x1e9353?{'count':_0x529b0f,'rows':_0x1e9353}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x1ccd1e,null))[_0xe9bd('0x25')](handleError(_0x1ccd1e,null));};exports[_0xe9bd('0x139')]=function(_0x102393,_0x16376c){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x102393[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x16376c,null))[_0xe9bd('0x1a')](function(_0x292c9a){if(_0x292c9a){return _0x292c9a[_0xe9bd('0x139')](_0x102393[_0xe9bd('0x64')][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0x102393[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0x16376c,null))[_0xe9bd('0x25')](handleError(_0x16376c,null));};exports['removeFaxAccounts']=function(_0x56ec6f,_0x4511d9){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x56ec6f[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x4511d9,null))[_0xe9bd('0x1a')](function(_0x4e8d0a){if(_0x4e8d0a){return _0x4e8d0a[_0xe9bd('0x13a')](_0x56ec6f[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x4511d9,null))[_0xe9bd('0x25')](handleError(_0x4511d9,null));};exports[_0xe9bd('0x13b')]=function(_0x56765f,_0xb923cd){var _0x20c917={};var _0x2479c9={};var _0x1556af;var _0x4f7ca9;return db['User']['findOne']({'where':{'id':_0x56765f['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0xb923cd,null))[_0xe9bd('0x1a')](function(_0x461c98){if(_0x461c98){_0x1556af=_0x461c98;_0x2479c9['model']=_[_0xe9bd('0x5c')](db[_0xe9bd('0x13c')]['rawAttributes']);_0x2479c9['query']=_[_0xe9bd('0x5c')](_0x56765f['query']);_0x2479c9[_0xe9bd('0xd4')]=_['intersection'](_0x2479c9[_0xe9bd('0x5f')],_0x2479c9[_0xe9bd('0x4b')]);_0x20c917[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x2479c9['model'],qs['fields'](_0x56765f[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x20c917[_0xe9bd('0x51')]=_0x20c917[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x20c917[_0xe9bd('0x51')]:_0x2479c9[_0xe9bd('0x5f')];_0x20c917[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x56765f[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x20c917[_0xe9bd('0xd7')]=qs['filters'](_['pick'](_0x56765f[_0xe9bd('0x4b')],_0x2479c9['filters']));if(_0x56765f['query'][_0xe9bd('0x3b')]){_0x20c917[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x20c917[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x20c917[_0xe9bd('0x51')],function(_0x264ea2){var _0x851735={};_0x851735[_0x264ea2]={'$like':'%'+_0x56765f[_0xe9bd('0x4b')]['filter']+'%'};return _0x851735;})});}_0x20c917=_[_0xe9bd('0x61')]({},_0x20c917,_0x56765f['options']);return _0x1556af[_0xe9bd('0x13b')](_0x20c917);}})[_0xe9bd('0x1a')](function(_0x1651cf){if(_0x1651cf){_0x4f7ca9=_0x1651cf[_0xe9bd('0x73')];if(!_0x56765f['query'][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x20c917[_0xe9bd('0x2c')]=qs['limit'](_0x56765f[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x20c917['offset']=qs[_0xe9bd('0x2a')](_0x56765f[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x1556af[_0xe9bd('0x13b')](_0x20c917);}})[_0xe9bd('0x1a')](function(_0x48484a){if(_0x48484a){return _0x48484a?{'count':_0x4f7ca9,'rows':_0x48484a}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0xb923cd,null))[_0xe9bd('0x25')](handleError(_0xb923cd,null));};exports['addMailAccounts']=function(_0x4cf018,_0x1ec040){return db[_0xe9bd('0x46')]['find']({'where':{'id':_0x4cf018[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1ec040,null))[_0xe9bd('0x1a')](function(_0x54df2a){if(_0x54df2a){return _0x54df2a['addMailAccounts'](_0x4cf018[_0xe9bd('0x64')][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0x4cf018[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0x1ec040,null))['catch'](handleError(_0x1ec040,null));};exports[_0xe9bd('0x13d')]=function(_0x3fd6f9,_0x1dfd00){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x3fd6f9[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1dfd00,null))[_0xe9bd('0x1a')](function(_0x227186){if(_0x227186){return _0x227186['removeMailAccounts'](_0x3fd6f9[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x1dfd00,null))['catch'](handleError(_0x1dfd00,null));};exports[_0xe9bd('0x13e')]=function(_0x51efdf,_0x38d3fa){var _0x598dbb={};var _0x369ce9={};var _0x32c2c2;var _0xf11a33;return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x51efdf[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x38d3fa,null))[_0xe9bd('0x1a')](function(_0x1e4c28){if(_0x1e4c28){_0x32c2c2=_0x1e4c28;_0x369ce9[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0x13f')]['rawAttributes']);_0x369ce9[_0xe9bd('0x4b')]=_['keys'](_0x51efdf[_0xe9bd('0x4b')]);_0x369ce9[_0xe9bd('0xd4')]=_['intersection'](_0x369ce9[_0xe9bd('0x5f')],_0x369ce9['query']);_0x598dbb[_0xe9bd('0x51')]=_['intersection'](_0x369ce9[_0xe9bd('0x5f')],qs['fields'](_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x598dbb[_0xe9bd('0x51')]=_0x598dbb[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x598dbb[_0xe9bd('0x51')]:_0x369ce9[_0xe9bd('0x5f')];_0x598dbb[_0xe9bd('0xd5')]=qs['sort'](_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x598dbb[_0xe9bd('0xd7')]=qs['filters'](_['pick'](_0x51efdf[_0xe9bd('0x4b')],_0x369ce9[_0xe9bd('0xd4')]));if(_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x598dbb[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x598dbb[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x598dbb['attributes'],function(_0x3a2587){var _0x37c6a6={};_0x37c6a6[_0x3a2587]={'$like':'%'+_0x51efdf[_0xe9bd('0x4b')]['filter']+'%'};return _0x37c6a6;})});}_0x598dbb=_[_0xe9bd('0x61')]({},_0x598dbb,_0x51efdf['options']);return _0x32c2c2[_0xe9bd('0x13e')](_0x598dbb);}})[_0xe9bd('0x1a')](function(_0x42920e){if(_0x42920e){_0xf11a33=_0x42920e[_0xe9bd('0x73')];if(!_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0xce')]('nolimit')){_0x598dbb[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x598dbb[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x51efdf[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x32c2c2[_0xe9bd('0x13e')](_0x598dbb);}})[_0xe9bd('0x1a')](function(_0x43ada5){if(_0x43ada5){return _0x43ada5?{'count':_0xf11a33,'rows':_0x43ada5}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x38d3fa,null))[_0xe9bd('0x25')](handleError(_0x38d3fa,null));};exports[_0xe9bd('0x140')]=function(_0x277c81,_0x162cef){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x277c81[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x162cef,null))[_0xe9bd('0x1a')](function(_0x530c3){if(_0x530c3){return _0x530c3[_0xe9bd('0x140')](_0x277c81['body'][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0x277c81[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{});}})['then'](respondWithResult(_0x162cef,null))[_0xe9bd('0x25')](handleError(_0x162cef,null));};exports['removeOpenchannelAccounts']=function(_0x161f46,_0x41f295){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x161f46['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x41f295,null))[_0xe9bd('0x1a')](function(_0x3c553a){if(_0x3c553a){return _0x3c553a[_0xe9bd('0x141')](_0x161f46[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x41f295,null))[_0xe9bd('0x25')](handleError(_0x41f295,null));};exports[_0xe9bd('0x142')]=function(_0x28595c,_0x33e34f){var _0x518cf4={};var _0x250d08={};var _0xe28046;var _0x311e5f;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x28595c[_0xe9bd('0x5b')]['id']}})['then'](handleEntityNotFound(_0x33e34f,null))[_0xe9bd('0x1a')](function(_0x14de82){if(_0x14de82){_0xe28046=_0x14de82;_0x250d08[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0x143')][_0xe9bd('0x47')]);_0x250d08[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x28595c[_0xe9bd('0x4b')]);_0x250d08[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x250d08[_0xe9bd('0x5f')],_0x250d08[_0xe9bd('0x4b')]);_0x518cf4['attributes']=_['intersection'](_0x250d08['model'],qs['fields'](_0x28595c[_0xe9bd('0x4b')][_0xe9bd('0x60')]));_0x518cf4[_0xe9bd('0x51')]=_0x518cf4[_0xe9bd('0x51')]['length']?_0x518cf4[_0xe9bd('0x51')]:_0x250d08[_0xe9bd('0x5f')];_0x518cf4[_0xe9bd('0xd5')]=qs['sort'](_0x28595c[_0xe9bd('0x4b')]['sort']);_0x518cf4[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_['pick'](_0x28595c[_0xe9bd('0x4b')],_0x250d08[_0xe9bd('0xd4')]));if(_0x28595c[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x518cf4[_0xe9bd('0xd7')]=_['merge'](_0x518cf4['where'],{'$or':_[_0xe9bd('0x3d')](_0x518cf4[_0xe9bd('0x51')],function(_0x42d7b4){var _0x52b46b={};_0x52b46b[_0x42d7b4]={'$like':'%'+_0x28595c[_0xe9bd('0x4b')]['filter']+'%'};return _0x52b46b;})});}_0x518cf4=_['merge']({},_0x518cf4,_0x28595c['options']);return _0xe28046['getSmsAccounts'](_0x518cf4);}})[_0xe9bd('0x1a')](function(_0x538973){if(_0x538973){_0x311e5f=_0x538973[_0xe9bd('0x73')];if(!_0x28595c['query']['hasOwnProperty'](_0xe9bd('0xd9'))){_0x518cf4[_0xe9bd('0x2c')]=qs['limit'](_0x28595c[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x518cf4[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x28595c[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0xe28046[_0xe9bd('0x142')](_0x518cf4);}})[_0xe9bd('0x1a')](function(_0x4cf331){if(_0x4cf331){return _0x4cf331?{'count':_0x311e5f,'rows':_0x4cf331}:null;}})['then'](respondWithResult(_0x33e34f,null))[_0xe9bd('0x25')](handleError(_0x33e34f,null));};exports[_0xe9bd('0x144')]=function(_0x3b45af,_0x57d3ce){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x3b45af[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x57d3ce,null))[_0xe9bd('0x1a')](function(_0x359cc3){if(_0x359cc3){return _0x359cc3[_0xe9bd('0x144')](_0x3b45af[_0xe9bd('0x64')][_0xe9bd('0x67')],_[_0xe9bd('0x68')](_0x3b45af[_0xe9bd('0x64')],[_0xe9bd('0x67'),'id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0x57d3ce,null))[_0xe9bd('0x25')](handleError(_0x57d3ce,null));};exports['removeSmsAccounts']=function(_0x1f9503,_0x58c574){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x1f9503[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x58c574,null))[_0xe9bd('0x1a')](function(_0x3ee35c){if(_0x3ee35c){return _0x3ee35c['removeSmsAccounts'](_0x1f9503[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x58c574,null))['catch'](handleError(_0x58c574,null));};exports[_0xe9bd('0x145')]=function(_0x47cfcf,_0x1d30fe){var _0x5088ce={};var _0x5b593e={};var _0x53f412;var _0x11a640;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x47cfcf[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x1d30fe,null))[_0xe9bd('0x1a')](function(_0x4f9b6c){if(_0x4f9b6c){_0x53f412=_0x4f9b6c;_0x5b593e[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db[_0xe9bd('0x146')][_0xe9bd('0x47')]);_0x5b593e[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x47cfcf['query']);_0x5b593e['filters']=_['intersection'](_0x5b593e['model'],_0x5b593e[_0xe9bd('0x4b')]);_0x5088ce[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x5b593e[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x47cfcf['query'][_0xe9bd('0x60')]));_0x5088ce[_0xe9bd('0x51')]=_0x5088ce[_0xe9bd('0x51')]['length']?_0x5088ce[_0xe9bd('0x51')]:_0x5b593e[_0xe9bd('0x5f')];_0x5088ce['order']=qs['sort'](_0x47cfcf[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x5088ce['where']=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x47cfcf[_0xe9bd('0x4b')],_0x5b593e['filters']));if(_0x47cfcf['query'][_0xe9bd('0x3b')]){_0x5088ce[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x5088ce[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x5088ce[_0xe9bd('0x51')],function(_0x2d001d){var _0x3f179a={};_0x3f179a[_0x2d001d]={'$like':'%'+_0x47cfcf[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x3f179a;})});}_0x5088ce=_[_0xe9bd('0x61')]({},_0x5088ce,_0x47cfcf['options']);return _0x53f412['getChatWebsites'](_0x5088ce);}})['then'](function(_0x5a8aa5){if(_0x5a8aa5){_0x11a640=_0x5a8aa5['length'];if(!_0x47cfcf[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x5088ce[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x47cfcf['query']['limit']);_0x5088ce[_0xe9bd('0x2a')]=qs['offset'](_0x47cfcf[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x53f412[_0xe9bd('0x145')](_0x5088ce);}})[_0xe9bd('0x1a')](function(_0x595b18){if(_0x595b18){return _0x595b18?{'count':_0x11a640,'rows':_0x595b18}:null;}})[_0xe9bd('0x1a')](respondWithResult(_0x1d30fe,null))['catch'](handleError(_0x1d30fe,null));};exports['addChatWebsites']=function(_0x539657,_0xb5b207){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x539657[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0xb5b207,null))[_0xe9bd('0x1a')](function(_0x16ed81){if(_0x16ed81){return _0x16ed81[_0xe9bd('0x147')](_0x539657[_0xe9bd('0x64')]['ids'],_[_0xe9bd('0x68')](_0x539657['body'],[_0xe9bd('0x67'),'id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0xb5b207,null))[_0xe9bd('0x25')](handleError(_0xb5b207,null));};exports[_0xe9bd('0x148')]=function(_0x5aa171,_0x11990b){return db[_0xe9bd('0x46')]['find']({'where':{'id':_0x5aa171['params']['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x11990b,null))['then'](function(_0x43045d){if(_0x43045d){return _0x43045d['removeChatWebsites'](_0x5aa171[_0xe9bd('0x4b')][_0xe9bd('0x67')]);}})[_0xe9bd('0x1a')](respondWithStatusCode(_0x11990b,null))[_0xe9bd('0x25')](handleError(_0x11990b,null));};exports['getWhatsappAccounts']=function(_0x5ad2fa,_0x32705b){var _0x3aca6a={};var _0x4c26be={};var _0x5cc7e3;var _0x50d303;return db[_0xe9bd('0x46')][_0xe9bd('0x9d')]({'where':{'id':_0x5ad2fa[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x32705b,null))[_0xe9bd('0x1a')](function(_0x215ba1){if(_0x215ba1){_0x5cc7e3=_0x215ba1;_0x4c26be[_0xe9bd('0x5f')]=_[_0xe9bd('0x5c')](db['WhatsappAccount'][_0xe9bd('0x47')]);_0x4c26be['query']=_[_0xe9bd('0x5c')](_0x5ad2fa[_0xe9bd('0x4b')]);_0x4c26be[_0xe9bd('0xd4')]=_[_0xe9bd('0x5e')](_0x4c26be[_0xe9bd('0x5f')],_0x4c26be[_0xe9bd('0x4b')]);_0x3aca6a[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x4c26be[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x5ad2fa['query'][_0xe9bd('0x60')]));_0x3aca6a[_0xe9bd('0x51')]=_0x3aca6a[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x3aca6a['attributes']:_0x4c26be[_0xe9bd('0x5f')];_0x3aca6a[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x5ad2fa['query'][_0xe9bd('0xd6')]);_0x3aca6a[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x5ad2fa[_0xe9bd('0x4b')],_0x4c26be['filters']));if(_0x5ad2fa[_0xe9bd('0x4b')][_0xe9bd('0x3b')]){_0x3aca6a[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x3aca6a[_0xe9bd('0xd7')],{'$or':_['map'](_0x3aca6a[_0xe9bd('0x51')],function(_0x5d8472){var _0xd4082d={};_0xd4082d[_0x5d8472]={'$like':'%'+_0x5ad2fa[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0xd4082d;})});}_0x3aca6a=_[_0xe9bd('0x61')]({},_0x3aca6a,_0x5ad2fa[_0xe9bd('0x62')]);return _0x5cc7e3[_0xe9bd('0x149')](_0x3aca6a);}})[_0xe9bd('0x1a')](function(_0x43bfe3){if(_0x43bfe3){_0x50d303=_0x43bfe3[_0xe9bd('0x73')];if(!_0x5ad2fa[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x3aca6a[_0xe9bd('0x2c')]=qs['limit'](_0x5ad2fa[_0xe9bd('0x4b')]['limit']);_0x3aca6a['offset']=qs['offset'](_0x5ad2fa[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}return _0x5cc7e3[_0xe9bd('0x149')](_0x3aca6a);}})[_0xe9bd('0x1a')](function(_0x320aae){if(_0x320aae){return _0x320aae?{'count':_0x50d303,'rows':_0x320aae}:null;}})['then'](respondWithResult(_0x32705b,null))[_0xe9bd('0x25')](handleError(_0x32705b,null));};exports[_0xe9bd('0x14a')]=function(_0x2e5259,_0x225be){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x2e5259[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x225be,null))[_0xe9bd('0x1a')](function(_0x56ebe2){if(_0x56ebe2){return _0x56ebe2[_0xe9bd('0x14a')](_0x2e5259[_0xe9bd('0x64')]['ids'],_['omit'](_0x2e5259['body'],[_0xe9bd('0x67'),'id'])||{});}})[_0xe9bd('0x1a')](respondWithResult(_0x225be,null))[_0xe9bd('0x25')](handleError(_0x225be,null));};exports[_0xe9bd('0x14b')]=function(_0x1f41c4,_0x2eabd8){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x1f41c4[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x2eabd8,null))[_0xe9bd('0x1a')](function(_0x35583d){if(_0x35583d){return _0x35583d['removeWhatsappAccounts'](_0x1f41c4[_0xe9bd('0x4b')]['ids']);}})['then'](respondWithStatusCode(_0x2eabd8,null))[_0xe9bd('0x25')](handleError(_0x2eabd8,null));};exports['getScheduledCalls']=function(_0x115203,_0x13b5f5){var _0x506fa8={},_0x1676de={},_0x633024={'count':0x0,'rows':[]};var _0x270140=db['CmHopper'][_0xe9bd('0x47')];_0x1676de[_0xe9bd('0x5f')]=_['keys'](_0x270140);_0x1676de[_0xe9bd('0x4b')]=_[_0xe9bd('0x5c')](_0x115203[_0xe9bd('0x4b')]);_0x1676de['filters']=_[_0xe9bd('0x5e')](_0x1676de[_0xe9bd('0x5f')],_0x1676de[_0xe9bd('0x4b')]);_0x1676de[_0xe9bd('0xd4')]=_['concat'](_0x1676de[_0xe9bd('0xd4')],[_0xe9bd('0x14c'),_0xe9bd('0x14d'),_0xe9bd('0x14e'),_0xe9bd('0x14f'),'$lt',_0xe9bd('0x150'),_0xe9bd('0x151'),_0xe9bd('0x152'),'$not',_0xe9bd('0x153'),_0xe9bd('0x154'),_0xe9bd('0x155'),'$notIn','$like',_0xe9bd('0x156'),'$iLike',_0xe9bd('0x157'),'$like',_0xe9bd('0x158'),_0xe9bd('0x159'),_0xe9bd('0x15a'),_0xe9bd('0x15b')]);_0x506fa8[_0xe9bd('0x51')]=_[_0xe9bd('0x5e')](_0x1676de[_0xe9bd('0x5f')],qs[_0xe9bd('0x60')](_0x115203['query'][_0xe9bd('0x60')]));_0x506fa8['attributes']=_0x506fa8[_0xe9bd('0x51')][_0xe9bd('0x73')]?_0x506fa8[_0xe9bd('0x51')]:_0x1676de[_0xe9bd('0x5f')];if(!_0x115203[_0xe9bd('0x4b')][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x506fa8[_0xe9bd('0x2c')]=qs['limit'](_0x115203[_0xe9bd('0x4b')][_0xe9bd('0x2c')]);_0x506fa8[_0xe9bd('0x2a')]=qs[_0xe9bd('0x2a')](_0x115203['query'][_0xe9bd('0x2a')]);}_0x506fa8[_0xe9bd('0xd5')]=qs[_0xe9bd('0xd6')](_0x115203[_0xe9bd('0x4b')][_0xe9bd('0xd6')]);_0x506fa8[_0xe9bd('0xd7')]=qs[_0xe9bd('0xd4')](_[_0xe9bd('0xd8')](_0x115203[_0xe9bd('0x4b')],_0x1676de[_0xe9bd('0xd4')]));if(_0x115203['query'][_0xe9bd('0x3b')]){_0x506fa8[_0xe9bd('0xd7')]=_[_0xe9bd('0x61')](_0x506fa8[_0xe9bd('0xd7')],{'$or':_[_0xe9bd('0x3d')](_0x506fa8[_0xe9bd('0x51')],function(_0x292e21){var _0x43116e={};_0x43116e[_0x292e21]={'$like':'%'+_0x115203[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'};return _0x43116e;})});}_0x506fa8[_0xe9bd('0xd7')]={'$and':[_0x506fa8['where'],{'$or':[{'UserId':_0x115203[_0xe9bd('0x5b')]['id']},{'OwnerId':_0x115203[_0xe9bd('0x5b')]['id']}]}]};_0x506fa8=_['merge']({},_0x506fa8,_0x115203[_0xe9bd('0x62')]);var _0xf38df9={'where':_0x506fa8['where']};return db[_0xe9bd('0x15c')]['count'](_0xf38df9)[_0xe9bd('0x1a')](function(_0x1d37fc){_0x633024[_0xe9bd('0x2d')]=_0x1d37fc;if(_0x115203[_0xe9bd('0x4b')]['includeAll']){_0x506fa8[_0xe9bd('0x4f')]=[{'attributes':['id',_0xe9bd('0x15d'),_0xe9bd('0x15e'),_0xe9bd('0xe8')],'model':db['CmContact'],'as':'Contact'},{'attributes':['id',_0xe9bd('0x41'),_0xe9bd('0x15f')],'model':db[_0xe9bd('0xaf')],'as':_0xe9bd('0xd3')}];}return db[_0xe9bd('0x15c')][_0xe9bd('0x52')](_0x506fa8);})[_0xe9bd('0x1a')](function(_0x30358e){_0x633024[_0xe9bd('0x53')]=_0x30358e;return _0x633024;})['then'](respondWithFilteredResult(_0x13b5f5,_0x506fa8))[_0xe9bd('0x25')](handleError(_0x13b5f5,null));};exports[_0xe9bd('0x160')]=function(_0x3d27b0,_0x4016cb){if(!_[_0xe9bd('0x6e')](_0x3d27b0['user']['id'])&&(_0x3d27b0['user'][_0xe9bd('0x34')]==_0xe9bd('0x35')||_0x3d27b0[_0xe9bd('0x37')][_0xe9bd('0x34')]==_0xe9bd('0x37'))){return db['User'][_0xe9bd('0x9d')]({'where':{'id':_0x3d27b0[_0xe9bd('0x5b')]['id']},'raw':!![]})[_0xe9bd('0x1a')](function(_0x4f08b9){return authService[_0xe9bd('0x161')](_0x4f08b9);})[_0xe9bd('0x1a')](function(_0x417626){if(_0x417626){return _0x4016cb[_0xe9bd('0x28')](0xc8)[_0xe9bd('0x29')]({'api_key':_0x417626[_0xe9bd('0x162')]});}else{return _0x4016cb[_0xe9bd('0x28')](0xcc)['json']({'message':_0xe9bd('0x163')});}})['catch'](handleError(_0x4016cb,0x193));}else{return _0x4016cb[_0xe9bd('0x28')](0x191)[_0xe9bd('0x29')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xe9bd('0x164')]=function(_0x400b1d,_0x48c0a5){if(!_[_0xe9bd('0x6e')](_0x400b1d[_0xe9bd('0x37')]['id'])&&(_0x400b1d[_0xe9bd('0x37')][_0xe9bd('0x34')]==_0xe9bd('0x35')||_0x400b1d[_0xe9bd('0x37')][_0xe9bd('0x34')]==_0xe9bd('0x37'))){return db[_0xe9bd('0x46')][_0xe9bd('0x40')]({'where':{'id':_0x400b1d[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](function(_0x2dcb68){return authService[_0xe9bd('0x165')](_0x2dcb68);})[_0xe9bd('0x1a')](function(_0x189261){return db[_0xe9bd('0x46')][_0xe9bd('0xf6')]({'apiKeyIat':_0x189261[_0xe9bd('0x166')],'apiKeyNonce':_0x189261[_0xe9bd('0x167')]},{'where':{'id':_0x400b1d[_0xe9bd('0x5b')]['id']}})['then'](function(){return _0x48c0a5[_0xe9bd('0x28')](0xc8)[_0xe9bd('0x29')]({'api_key':_0x189261[_0xe9bd('0x162')]});});})['catch'](handleError(_0x48c0a5,0x193));}else{return _0x48c0a5[_0xe9bd('0x28')](0x191)['json']({'message':_0xe9bd('0x168')});}};exports[_0xe9bd('0x169')]=function(_0x6f8c,_0x12d1e6){if(!_[_0xe9bd('0x6e')](_0x6f8c['user']['id'])&&(_0x6f8c[_0xe9bd('0x37')][_0xe9bd('0x34')]==_0xe9bd('0x35')||_0x6f8c[_0xe9bd('0x37')][_0xe9bd('0x34')]==_0xe9bd('0x37'))){return db['User'][_0xe9bd('0x40')]({'where':{'id':_0x6f8c[_0xe9bd('0x5b')]['id']}})[_0xe9bd('0x1a')](handleEntityNotFound(_0x12d1e6,null))[_0xe9bd('0x1a')](function(_0x518aa8){if(_0x518aa8&&_0x518aa8['apiKeyNonce']&&_0x518aa8['apiKeyIat'])return _0x518aa8;else throw{'message':_0xe9bd('0x16a')};})[_0xe9bd('0x1a')](function(){return db[_0xe9bd('0x46')][_0xe9bd('0xf6')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x6f8c[_0xe9bd('0x5b')]['id']}});})[_0xe9bd('0x1a')](respondWithStatusCode(_0x12d1e6,0xc8))[_0xe9bd('0x25')](handleError(_0x12d1e6,0x193));}else{return _0x12d1e6[_0xe9bd('0x28')](0x191)[_0xe9bd('0x29')]({'message':_0xe9bd('0x168')});}};exports['whoami']=function(_0x477585,_0x1bb8b7){var _0xd7d60f=_0x477585[_0xe9bd('0x37')][_0xe9bd('0x33')]({'plain':!![]});if(!_0xd7d60f){return _0x1bb8b7['status'](0x191)['send'](_0xe9bd('0x16b'));}else{Promise[_0xe9bd('0xfd')]()['then'](function(){if(_0x477585[_0xe9bd('0x4b')][_0xe9bd('0x4d')]!==_0xe9bd('0x4e'))return;return _0x477585[_0xe9bd('0x37')][_0xe9bd('0x16c')]();})[_0xe9bd('0x1a')](function(_0x591b9b){if(!_0x591b9b)return;return _0x591b9b[_0xe9bd('0x33')]({'plain':!![]});})[_0xe9bd('0x1a')](function(_0x474b69){_0xd7d60f['userSetting']=_0x474b69;return _0x1bb8b7[_0xe9bd('0x28')](0xc8)[_0xe9bd('0x29')](_0xd7d60f);});}};exports[_0xe9bd('0x16d')]=function(_0x3ac957,_0x4336e7){var _0x304408={'offset':0x0},_0x35780b={'count':0x0,'rows':[]};Promise['resolve']()[_0xe9bd('0x1a')](function(){if(!_0x3ac957['query']['filter']&&!_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x16e')]&&!_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x16f')])return[];return Promise['resolve']()[_0xe9bd('0x1a')](function(){var _0x16c77e=[];if(!_[_0xe9bd('0x94')](_0x3ac957['query']['teams'])){_0x16c77e['push'](db[_0xe9bd('0x109')][_0xe9bd('0x52')]({'attributes':['id',_0xe9bd('0x41')],'where':{'id':_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x16e')]}}));}if(!_[_0xe9bd('0x94')](_0x3ac957['query'][_0xe9bd('0x16f')])){_0x16c77e[_0xe9bd('0x54')](db[_0xe9bd('0xaf')]['findAll']({'attributes':['id','name'],'type':'inbound','where':{'id':_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x16f')]}}));}return Promise['all'](_0x16c77e);})[_0xe9bd('0x1a')](function(_0x341d40){var _0x479ce4=_['flatten'](_0x341d40)['map'](function(_0x4c1d96){return _0x4c1d96[_0xe9bd('0x11a')]({'attributes':['id',_0xe9bd('0x41'),'internal',_0xe9bd('0xa3')],'raw':!![]});});return Promise[_0xe9bd('0x5a')](_0x479ce4);})[_0xe9bd('0x1a')](function(_0x39fedb){var _0x11dbff=_[_0xe9bd('0x170')](_0x39fedb);if(!_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x3b')])return _0x11dbff;if(_[_0xe9bd('0x94')](_0x11dbff)){return db[_0xe9bd('0x46')]['findAll']({'attributes':['id','name','internal','online'],'where':{'role':_0xe9bd('0x2f'),'$or':[db[_0xe9bd('0x70')]['where'](db['sequelize']['fn']('lower',db[_0xe9bd('0x70')][_0xe9bd('0x171')](_0xe9bd('0x41'))),{'$like':'%'+_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x3b')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x3b')]+'%'}}]},'raw':!![]});}else{return _(_0x11dbff)[_0xe9bd('0x170')]()[_0xe9bd('0x3b')](function(_0x1b52f3){return _0x1b52f3[_0xe9bd('0x41')]['toLowerCase']()[_0xe9bd('0x3f')](_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x3b')][_0xe9bd('0xaa')]())||_0x1b52f3['internal'][_0xe9bd('0x172')]()[_0xe9bd('0x3f')](_0x3ac957['query'][_0xe9bd('0x3b')]);})['value']();}})[_0xe9bd('0x1a')](function(_0x40791a){var _0xeb7bfa='name';var _0xc76d13='asc';if(_0x3ac957[_0xe9bd('0x4b')]['sort']){_0xc76d13=_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0xd6')][0x0]==='-'?_0xe9bd('0x173'):_0xe9bd('0x174');_0xeb7bfa=_0xc76d13===_0xe9bd('0x174')?_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0xd6')]:_0x3ac957[_0xe9bd('0x4b')]['sort']['substring'](0x1);}return _(_0x40791a)[_0xe9bd('0x175')]('id')['orderBy']([function(_0x125127){return _0xeb7bfa===_0xe9bd('0x41')?_0x125127[_0xeb7bfa][_0xe9bd('0xaa')]():_0x125127[_0xeb7bfa];}],[_0xc76d13])[_0xe9bd('0x3d')](function(_0x508459){return _[_0xe9bd('0xd8')](_0x508459,['id',_0xe9bd('0x41'),_0xe9bd('0x69'),'online']);})['value']();})['then'](function(_0x397162){return amiClient[_0xe9bd('0x19')](_0xe9bd('0x38'),_0x3ac957)[_0xe9bd('0x1a')](function(_0x5c74d5){if(_0x5c74d5[_0xe9bd('0x21')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x3d64e6=_0x5c74d5[_0xe9bd('0x24')];var _0x5282f0=jayson['client'][_0xe9bd('0x18')]({'port':0x232c});return _0x5282f0[_0xe9bd('0x19')](_0xe9bd('0x38'),_0x3ac957)[_0xe9bd('0x1a')](function(_0x7c4d58){if(_0x7c4d58['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x2d445e=_0x7c4d58[_0xe9bd('0x24')];return _[_0xe9bd('0x61')]({},_0x2d445e,_0x3d64e6);});})[_0xe9bd('0x1a')](function(_0x3c8927){return _[_0xe9bd('0x3d')](_0x397162,function(_0x5f371c){var _0x426c52=_['find'](_0x3c8927[_0xe9bd('0x53')],['id',_0x5f371c['id']]);if(!_0x426c52||!_0x5f371c[_0xe9bd('0xa3')]){_0x5f371c[_0xe9bd('0x28')]=_0xe9bd('0x176');}else if(_0x426c52[_0xe9bd('0xa5')]){_0x5f371c[_0xe9bd('0x28')]=_0xe9bd('0xfe');}else{_0x5f371c['status']=_['includes'](['idle',_0xe9bd('0x177'),_0xe9bd('0x178'),_0xe9bd('0x179'),null,undefined],_0x426c52[_0xe9bd('0x17a')])?_0xe9bd('0xa3'):_0xe9bd('0x17b');}return _0x5f371c;});});});})[_0xe9bd('0x1a')](function(_0x177d47){if(!_0x3ac957['query'][_0xe9bd('0xce')](_0xe9bd('0xd9'))){_0x304408[_0xe9bd('0x2c')]=qs[_0xe9bd('0x2c')](_0x3ac957['query'][_0xe9bd('0x2c')]||0xa);_0x304408['offset']=qs[_0xe9bd('0x2a')](_0x3ac957[_0xe9bd('0x4b')][_0xe9bd('0x2a')]);}_0x35780b['count']=_0x177d47['length'];_0x35780b[_0xe9bd('0x53')]=_0x304408[_0xe9bd('0x2c')]?_0x177d47[_0xe9bd('0x17c')](_0x304408['offset'],_0x304408[_0xe9bd('0x2a')]+_0x304408['limit']):_0x177d47;return _0x35780b;})['then'](respondWithFilteredResult(_0x4336e7,_0x304408))[_0xe9bd('0x25')](handleError(_0x4336e7,null));};function get_open_tabs(_0x4b660a,_0x4bfd89){var _0x56ecfb=_0x4b660a[_0xe9bd('0x17d')](0x0)['toUpperCase']()+_0x4b660a[_0xe9bd('0x17c')](0x1);var _0x2d8930={'type':db[_0xe9bd('0x98')][_0xe9bd('0x72')][_0xe9bd('0x17e')],'raw':!![]};return new Promise(function(_0x4fa8fa,_0x3d9cec){var _0x741ea2=squel[_0xe9bd('0x17f')]()[_0xe9bd('0x180')]('ui.'+_0x56ecfb+_0xe9bd('0x181'),'id')[_0xe9bd('0x180')](_0xe9bd('0x182'))[_0xe9bd('0x74')](_0xe9bd('0x183')+_0x4b660a+_0xe9bd('0x184'),'ui')[_0xe9bd('0xd7')](_0xe9bd('0x185'),_0x4bfd89['id']);return db['sequelize'][_0xe9bd('0x4b')](_0x741ea2['toString'](),_0x2d8930)[_0xe9bd('0x1a')](function(_0x55e4e5){_0x4bfd89[_0x56ecfb+'OpenTabs']=_0x55e4e5;_0x4fa8fa(_0x55e4e5);})['catch'](function(_0x3814d1){_0x3d9cec(_0x3814d1);});});}
\ No newline at end of file
+var _0xf2a7=['idle','unavailable','voiceStatus','slice','charAt','toUpperCase','select','field','ui.createdAt','user_has_','ui.UserId\x20=\x20?','OpenTabs','moment','util','path','lodash','squel','jayson/promise','../../components/auth/service','../../config/logger','../../config/utils','../../config/license/util','APIBadRequestError','../../errors/api','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','defaults','localhost','client','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','role','emit','userNotification:recalc:','destroy','Users','user','agent','Telephones','filter','includes','find','value','name','UserProfileResource','stack','index','User','rawAttributes','fieldName','key','where','includeAll','include','query','userSetting','true','UserSetting','attributes','push','findAll','rows','length','dataValues','sms','fax','openchannel','whatsapp','all','show','params','keys','password','salt','filters','intersection','model','fields','merge','options','chat','mail','update','body','describe','addContacts','ids','internal','Setting','findById','securePassword','max','isNil','sequelize','QueryTypes','min_internal','from','voicemail','VoiceMail','fullname','email','permissions','101','102','103','113','104','105','106','107','108','109','100','111','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','telephone','Agents','map','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','previousPasswords','validatePasswordHistory','passwordHistoryLimit','updatePasswordsHistory','addQueues','online','voicePause','isValidChannel','Unknown\x20channel','add','Queues','penalty','spread','capitalize','toLowerCase','QueueId','Queue:save','voice','get','format','SIP/%s','UserVoiceQueueRt','removeQueues','channel','remove','isArray','Queue:remove','addAvatar','userpic','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','User\x20with\x20id\x20%s\x20not\x20found','getOptions','hasOwnProperty','CmList','Tag','Tags','color','tag','Queue','order','sort','pick','Unknown\x20role','getVoiceQueuesRt','nolimit','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','mobile','loginInPause','interface','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','LOGININPAUSE','concat','resolve','pause','QueuePause','updateAttributes','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','whatsappPause','pauseType','lastPauseAt','getTeams','addTeams','transaction','Team','getAssociatedQueues','getDataValue','Voice','upsert','TeamVoicePrefix','UserVoicePrefix','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','flattenDeep','removeAgent','VoicePrefixId','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$lt','$ne','$eq','$not','$between','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','lastName','phone','CmContact','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','whoami','getUserSetting','getPresence','queues','isEmpty','teams','VoiceQueue','inbound','flatten','lower','col','toString','asc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)'];(function(_0x15604f,_0x53fb88){var _0x423e2f=function(_0x4edfa9){while(--_0x4edfa9){_0x15604f['push'](_0x15604f['shift']());}};_0x423e2f(++_0x53fb88);}(_0xf2a7,0x197));var _0x7f2a=function(_0x444848,_0x3ad816){_0x444848=_0x444848-0x0;var _0x50ac0d=_0xf2a7[_0x444848];return _0x50ac0d;};'use strict';var moment=require(_0x7f2a('0x0'));var util=require(_0x7f2a('0x1'));var path=require(_0x7f2a('0x2'));var fs=require('fs');var _=require(_0x7f2a('0x3'));var squel=require(_0x7f2a('0x4'));var jayson=require(_0x7f2a('0x5'));var Redis=require('ioredis');var authService=require(_0x7f2a('0x6'));var contacts=require('../../components/contacts');var qs=require('../../components/parsers/qs');var logger=require(_0x7f2a('0x7'))('api');var utils=require(_0x7f2a('0x8'));var config=require('../../config/environment');var licenseUtil=require(_0x7f2a('0x9'));var APIBadRequestError=require('../../errors/api')[_0x7f2a('0xa')];var APINotFoundError=require(_0x7f2a('0xb'))['APINotFoundError'];var APIHandleError=require(_0x7f2a('0xb'))[_0x7f2a('0xc')];var db=require(_0x7f2a('0xd'))['db'];var socket=require(_0x7f2a('0xe'))(new Redis(config[_0x7f2a('0xf')]));require(_0x7f2a('0x10'))['register'](socket);config[_0x7f2a('0xf')]=_[_0x7f2a('0x11')](config[_0x7f2a('0xf')],{'host':_0x7f2a('0x12'),'port':0x18eb});var amiClient=jayson[_0x7f2a('0x13')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x407170,_0x5229c6,_0x218c52,_0x2d76ef){return new Promise(function(_0x1f178a,_0x462e40){var _0x30d14b=_0x2d76ef||amiClient;return _0x30d14b[_0x7f2a('0x14')](_0x407170,_0x218c52)[_0x7f2a('0x15')](function(_0x561dbb){logger['info'](_0x7f2a('0x16'),_0x5229c6,_0x7f2a('0x17'));logger[_0x7f2a('0x18')](_0x7f2a('0x19'),_0x5229c6,_0x7f2a('0x17'),JSON['stringify'](_0x561dbb));if(_0x561dbb[_0x7f2a('0x1a')]){if(_0x561dbb[_0x7f2a('0x1a')]['code']===0x1f4){logger[_0x7f2a('0x1a')](_0x7f2a('0x16'),_0x5229c6,_0x561dbb[_0x7f2a('0x1a')]['message']);return _0x462e40(_0x561dbb[_0x7f2a('0x1a')]['message']);}logger[_0x7f2a('0x1a')](_0x7f2a('0x16'),_0x5229c6,_0x561dbb['error'][_0x7f2a('0x1b')]);return _0x1f178a(_0x561dbb[_0x7f2a('0x1a')]['message']);}else{logger[_0x7f2a('0x1c')](_0x7f2a('0x16'),_0x5229c6,_0x7f2a('0x17'));_0x1f178a(_0x561dbb[_0x7f2a('0x1d')][_0x7f2a('0x1b')]);}})[_0x7f2a('0x1e')](function(_0x47ae7f){logger[_0x7f2a('0x1a')]('User,\x20%s,\x20%s',_0x5229c6,_0x47ae7f);_0x462e40(_0x47ae7f);});});}function respondWithStatusCode(_0x118c41,_0x5af2c0){_0x5af2c0=_0x5af2c0||0xcc;return function(_0x955ed9){if(_0x955ed9){return _0x118c41[_0x7f2a('0x1f')](_0x5af2c0);}return _0x118c41[_0x7f2a('0x20')](_0x5af2c0)['end']();};}function respondWithResult(_0x5ecb82,_0x263c35){_0x263c35=_0x263c35||0xc8;return function(_0x246c46){if(_0x246c46){return _0x5ecb82['status'](_0x263c35)[_0x7f2a('0x21')](_0x246c46);}};}function respondWithFilteredResult(_0x11a9e1,_0x347219){return function(_0x3c27ed){if(_0x3c27ed){var _0x48bd17=typeof _0x347219[_0x7f2a('0x22')]===_0x7f2a('0x23')&&typeof _0x347219[_0x7f2a('0x24')]===_0x7f2a('0x23');var _0x18c7cf=_0x3c27ed['count'];var _0x543b9d=_0x48bd17?0x0:_0x347219[_0x7f2a('0x22')];var _0x5578a3=_0x48bd17?_0x3c27ed[_0x7f2a('0x25')]:_0x347219['offset']+_0x347219['limit'];var _0x5061ee;if(_0x5578a3>=_0x18c7cf){_0x5578a3=_0x18c7cf;_0x5061ee=0xc8;}else{_0x5061ee=0xce;}_0x11a9e1[_0x7f2a('0x20')](_0x5061ee);return _0x11a9e1['set'](_0x7f2a('0x26'),_0x543b9d+'-'+_0x5578a3+'/'+_0x18c7cf)[_0x7f2a('0x21')](_0x3c27ed);}return null;};}function saveUpdates(_0x33f8dd){return function(_0x18be22){if(_0x18be22){return _0x18be22['update'](_0x33f8dd)[_0x7f2a('0x15')](function(_0x1c647c){if(_0x1c647c[_0x7f2a('0x27')]==='agent'){socket[_0x7f2a('0x28')](_0x7f2a('0x29')+_0x1c647c['id'],_0x1c647c);}return _0x1c647c;});}return null;};}function removeEntity(_0x44ebdd){return function(_0x13ed1e){if(_0x13ed1e){return _0x13ed1e[_0x7f2a('0x2a')]()[_0x7f2a('0x15')](function(){var _0x1a305d=_0x13ed1e['get']({'plain':!![]});if(_0x1a305d[_0x7f2a('0x27')]==='admin')return;var _0xfaa963=[{'name':_0x7f2a('0x2b'),'value':_0x7f2a('0x2c'),'ignore':!![]},{'name':'Agents','value':_0x7f2a('0x2d'),'ignore':![]},{'name':_0x7f2a('0x2e'),'value':'telephone','ignore':![]}];var _0x190799=_(_0xfaa963)[_0x7f2a('0x2f')]('ignore')['map']('value')['value']();if(_[_0x7f2a('0x30')](_0x190799,_0x1a305d['role'])){return;}var _0x475be5=_[_0x7f2a('0x31')](_0xfaa963,[_0x7f2a('0x32'),_0x1a305d[_0x7f2a('0x27')]])[_0x7f2a('0x33')];return db[_0x7f2a('0x34')][_0x7f2a('0x2a')]({'where':{'type':_0x475be5,'resourceId':_0x1a305d['id']}})[_0x7f2a('0x15')](function(){return _0x13ed1e;});})[_0x7f2a('0x15')](function(){_0x44ebdd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ae23e){return function(_0x3f2589){if(!_0x3f2589){_0x4ae23e[_0x7f2a('0x1f')](0x194);}return _0x3f2589;};}function handleError(_0x31deb2,_0x2ac819){_0x2ac819=_0x2ac819||0x1f4;return function(_0x13bea0){logger['error'](_0x13bea0[_0x7f2a('0x35')]);if(_0x13bea0[_0x7f2a('0x33')]){delete _0x13bea0[_0x7f2a('0x33')];}_0x31deb2[_0x7f2a('0x20')](_0x2ac819)['send'](_0x13bea0);};}exports[_0x7f2a('0x36')]=function(_0x4c2732,_0x469b25){var _0x4c4f63={},_0x1a54c4={'count':0x0,'rows':[]};var _0x274e7d=_(db[_0x7f2a('0x37')][_0x7f2a('0x38')])['map'](function(_0x25c165){return{'name':_0x25c165[_0x7f2a('0x39')],'type':_0x25c165['type'][_0x7f2a('0x3a')]};})[_0x7f2a('0x2f')](function(_0x36de3a){return!_[_0x7f2a('0x30')](['password','salt'],_0x36de3a[_0x7f2a('0x33')]);})[_0x7f2a('0x32')]();_0x4c4f63=qs['getOptions'](_0x274e7d,_0x4c2732);var _0x1e88e7={'where':_0x4c4f63[_0x7f2a('0x3b')]};return db[_0x7f2a('0x37')][_0x7f2a('0x25')](_0x1e88e7)[_0x7f2a('0x15')](function(_0x270938){_0x1a54c4[_0x7f2a('0x25')]=_0x270938;if(_0x4c2732['query'][_0x7f2a('0x3c')]){_0x4c4f63[_0x7f2a('0x3d')]=[{'all':!![]}];}if(_0x4c2732[_0x7f2a('0x3e')][_0x7f2a('0x3f')]===_0x7f2a('0x40')){_0x4c4f63['include']=[{'model':db[_0x7f2a('0x41')],'as':'userSetting'}];}if(!_[_0x7f2a('0x30')](_0x4c4f63['attributes'],'id')){_0x4c4f63[_0x7f2a('0x42')][_0x7f2a('0x43')]('id');}return db['User'][_0x7f2a('0x44')](_0x4c4f63);})[_0x7f2a('0x15')](function(_0x156e81){_0x1a54c4[_0x7f2a('0x45')]=_0x156e81;if(_0x4c2732[_0x7f2a('0x3e')]['openTabs']==='true'){var _0xe047c8=[];for(var _0x5ca936=0x0;_0x5ca936<_0x1a54c4[_0x7f2a('0x45')][_0x7f2a('0x46')];_0x5ca936++){_0xe047c8[_0x7f2a('0x43')](get_open_tabs('chat',_0x1a54c4[_0x7f2a('0x45')][_0x5ca936][_0x7f2a('0x47')]));_0xe047c8[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x48'),_0x1a54c4[_0x7f2a('0x45')][_0x5ca936]['dataValues']));_0xe047c8[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x49'),_0x1a54c4['rows'][_0x5ca936][_0x7f2a('0x47')]));_0xe047c8[_0x7f2a('0x43')](get_open_tabs('mail',_0x1a54c4[_0x7f2a('0x45')][_0x5ca936][_0x7f2a('0x47')]));_0xe047c8[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x4a'),_0x1a54c4[_0x7f2a('0x45')][_0x5ca936][_0x7f2a('0x47')]));_0xe047c8[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x4b'),_0x1a54c4[_0x7f2a('0x45')][_0x5ca936][_0x7f2a('0x47')]));}return Promise[_0x7f2a('0x4c')](_0xe047c8)['then'](function(){return _0x1a54c4;});}else{return _0x1a54c4;}})['then'](respondWithFilteredResult(_0x469b25,_0x4c4f63))['catch'](handleError(_0x469b25,null));};exports[_0x7f2a('0x4d')]=function(_0x292a20,_0x1b8fbf){var _0x5cab97={'raw':![],'where':{'id':_0x292a20[_0x7f2a('0x4e')]['id']}},_0xa1581e={};_0xa1581e['model']=_['differenceBy'](_[_0x7f2a('0x4f')](db[_0x7f2a('0x37')][_0x7f2a('0x38')]),[_0x7f2a('0x50'),_0x7f2a('0x51')]);_0xa1581e['query']=_['keys'](_0x292a20[_0x7f2a('0x3e')]);_0xa1581e[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0xa1581e[_0x7f2a('0x54')],_0xa1581e[_0x7f2a('0x3e')]);_0x5cab97[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0xa1581e[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x292a20['query'][_0x7f2a('0x55')]));_0x5cab97[_0x7f2a('0x42')]=_0x5cab97[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x5cab97[_0x7f2a('0x42')]:_0xa1581e[_0x7f2a('0x54')];if(_0x292a20['query']['includeAll']){_0x5cab97[_0x7f2a('0x3d')]=[{'all':!![]}];}if(_0x292a20['query']['userSetting']===_0x7f2a('0x40')){_0x5cab97[_0x7f2a('0x3d')]=[{'model':db[_0x7f2a('0x41')],'as':'userSetting'}];}_0x5cab97=_[_0x7f2a('0x56')]({},_0x5cab97,_0x292a20[_0x7f2a('0x57')]);if(!_['includes'](_0x5cab97[_0x7f2a('0x42')],'id')){_0x5cab97[_0x7f2a('0x42')][_0x7f2a('0x43')]('id');}return db['User'][_0x7f2a('0x31')](_0x5cab97)[_0x7f2a('0x15')](handleEntityNotFound(_0x1b8fbf,null))[_0x7f2a('0x15')](function(_0x5ec2f5){var _0x6767b9=[];values=_0x5ec2f5;if(_0x292a20[_0x7f2a('0x3e')]['openTabs']===_0x7f2a('0x40')){_0x6767b9[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x58'),_0x5ec2f5[_0x7f2a('0x47')]));_0x6767b9[_0x7f2a('0x43')](get_open_tabs('sms',_0x5ec2f5['dataValues']));_0x6767b9['push'](get_open_tabs(_0x7f2a('0x4a'),_0x5ec2f5['dataValues']));_0x6767b9['push'](get_open_tabs('whatsapp',_0x5ec2f5['dataValues']));_0x6767b9[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x49'),_0x5ec2f5['dataValues']));_0x6767b9[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x59'),_0x5ec2f5[_0x7f2a('0x47')]));return Promise[_0x7f2a('0x4c')](_0x6767b9);}else{return values;}})[_0x7f2a('0x15')](function(){return values;})[_0x7f2a('0x15')](respondWithResult(_0x1b8fbf,null))[_0x7f2a('0x1e')](handleError(_0x1b8fbf,null));};exports[_0x7f2a('0x5a')]=function(_0x5d62fc,_0x255e60){if(_0x5d62fc[_0x7f2a('0x5b')]['id']){delete _0x5d62fc[_0x7f2a('0x5b')]['id'];}delete _0x5d62fc[_0x7f2a('0x5b')][_0x7f2a('0x27')];return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x5d62fc[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x255e60,null))['then'](saveUpdates(_0x5d62fc[_0x7f2a('0x5b')],null))[_0x7f2a('0x15')](respondWithResult(_0x255e60,null))[_0x7f2a('0x1e')](handleError(_0x255e60,null));};exports[_0x7f2a('0x5c')]=function(_0x1cd319,_0x47f8e2){return db[_0x7f2a('0x37')][_0x7f2a('0x5c')]()['then'](respondWithResult(_0x47f8e2,null))[_0x7f2a('0x1e')](handleError(_0x47f8e2,null));};exports[_0x7f2a('0x5d')]=function(_0x488176,_0x1476b2){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x488176[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x1476b2,null))[_0x7f2a('0x15')](function(_0x2dfabd){if(_0x2dfabd){return _0x2dfabd[_0x7f2a('0x5d')](_0x488176[_0x7f2a('0x5b')]['ids'],_['omit'](_0x488176['body'],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x1476b2,null))[_0x7f2a('0x1e')](handleError(_0x1476b2,null));};function validateUser(_0x3321e9){return new Promise(function(_0x2c69ed,_0x5f3745){if(_0x3321e9[_0x7f2a('0x5f')])return _0x2c69ed(_0x3321e9);return db[_0x7f2a('0x60')][_0x7f2a('0x61')](0x1)[_0x7f2a('0x15')](function(_0x5002f1){if(_0x5002f1[_0x7f2a('0x62')])authService['validatePasswordPattern'](_0x3321e9[_0x7f2a('0x50')]);db['User'][_0x7f2a('0x63')](_0x7f2a('0x5f'))[_0x7f2a('0x15')](function(_0x373b3e){if(_['isNil'](_0x373b3e)){_0x3321e9[_0x7f2a('0x5f')]=_0x5002f1['min_internal']||0x1;return;}if(_[_0x7f2a('0x64')](_0x5002f1['min_internal'])||_0x5002f1['min_internal']===_0x373b3e){_0x3321e9[_0x7f2a('0x5f')]=_0x373b3e+0x1;return;}if(_0x5002f1['min_internal']>_0x373b3e){_0x3321e9[_0x7f2a('0x5f')]=_0x5002f1['min_internal'];return;}return db['sequelize']['query']('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[_0x7f2a('0x65')][_0x7f2a('0x66')]['SELECT']})[_0x7f2a('0x15')](function(_0xf831df){if(_0xf831df&&_0xf831df[_0x7f2a('0x46')]){for(var _0x11e258=0x0,_0x42e842=_0xf831df['length'];_0x11e258<_0x42e842&&_[_0x7f2a('0x64')](_0x3321e9['internal']);_0x11e258++){if(_0x5002f1[_0x7f2a('0x67')]<=_0xf831df[_0x11e258][_0x7f2a('0x68')]){_0x3321e9[_0x7f2a('0x5f')]=_0xf831df[_0x11e258]['from'];}else if(_0x5002f1[_0x7f2a('0x67')]>_0xf831df[_0x11e258][_0x7f2a('0x68')]&&_0x5002f1[_0x7f2a('0x67')]<=_0xf831df[_0x11e258]['to']){_0x3321e9[_0x7f2a('0x5f')]=_0x5002f1[_0x7f2a('0x67')];}}}if(_[_0x7f2a('0x64')](_0x3321e9[_0x7f2a('0x5f')])){_0x3321e9[_0x7f2a('0x5f')]=_0x373b3e+0x1;}return _0x2c69ed(_0x3321e9);});});})['catch'](function(_0x5020e3){_0x5f3745(_0x5020e3);});});}function updateUser(_0x4dfa7){return new Promise(function(_0x18f546,_0x1eb277){try{if(_0x4dfa7[_0x7f2a('0x69')]){_0x4dfa7['mailbox']=_0x4dfa7['internal'];_0x4dfa7[_0x7f2a('0x6a')]={'mailbox':_0x4dfa7[_0x7f2a('0x5f')],'password':_0x4dfa7[_0x7f2a('0x50')],'fullname':_0x4dfa7[_0x7f2a('0x6b')],'email':_0x4dfa7[_0x7f2a('0x6c')]};}if(_0x4dfa7[_0x7f2a('0x27')]===_0x7f2a('0x2d')){if(!_0x4dfa7[_0x7f2a('0x6d')])_0x4dfa7[_0x7f2a('0x6d')]=[_0x7f2a('0x6e'),_0x7f2a('0x6f'),_0x7f2a('0x70'),_0x7f2a('0x71'),'110',_0x7f2a('0x72'),_0x7f2a('0x73'),_0x7f2a('0x74'),_0x7f2a('0x75'),_0x7f2a('0x76'),_0x7f2a('0x77'),_0x7f2a('0x78'),_0x7f2a('0x79'),'114',_0x7f2a('0x7a')];}_0x18f546(_0x4dfa7);}catch(_0x34e89e){_0x1eb277(_0x34e89e);}});}exports[_0x7f2a('0x7b')]=function(_0x3b2fdb,_0x74dbc8){if(_0x3b2fdb[_0x7f2a('0x2c')][_0x7f2a('0x27')]===_0x7f2a('0x2d'))throw new Error(_0x7f2a('0x7c'));if(_0x3b2fdb[_0x7f2a('0x5b')][_0x7f2a('0x27')]==='user'&&_0x3b2fdb['user'][_0x7f2a('0x27')]!==_0x7f2a('0x7d')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x3b2fdb[_0x7f2a('0x5b')][_0x7f2a('0x27')]===_0x7f2a('0x7d')&&_0x3b2fdb[_0x7f2a('0x2c')][_0x7f2a('0x27')]!==_0x7f2a('0x7d')){throw new Error(_0x7f2a('0x7e'));}return licenseUtil[_0x7f2a('0x7f')]([_0x3b2fdb[_0x7f2a('0x5b')]])[_0x7f2a('0x15')](function(){return validateUser(_0x3b2fdb[_0x7f2a('0x5b')]);})[_0x7f2a('0x15')](function(_0x552141){return updateUser(_0x552141)[_0x7f2a('0x15')](function(_0x5ba325){if(_0x5ba325['role']==='admin'){_0x5ba325[_0x7f2a('0x80')]=_0x3b2fdb['user'][_0x7f2a('0x80')];delete _0x5ba325[_0x7f2a('0x81')];}return _0x5ba325;});})[_0x7f2a('0x15')](function(_0x103eca){return db['User'][_0x7f2a('0x7b')](_0x103eca,{'include':[{'model':db[_0x7f2a('0x6a')],'as':_0x7f2a('0x6a')}]});})[_0x7f2a('0x15')](function(_0x4ce5f3){if(_0x3b2fdb[_0x7f2a('0x5b')][_0x7f2a('0x27')]===_0x7f2a('0x2c'))return _0x4ce5f3;if(_0x3b2fdb[_0x7f2a('0x2c')][_0x7f2a('0x27')]!==_0x7f2a('0x2c'))return _0x4ce5f3;return db[_0x7f2a('0x82')][_0x7f2a('0x31')]({'where':{'name':_0x4ce5f3[_0x7f2a('0x27')]===_0x7f2a('0x2d')?'Agents':'Telephones','userProfileId':_0x3b2fdb[_0x7f2a('0x2c')][_0x7f2a('0x81')]},'raw':!![]})[_0x7f2a('0x15')](function(_0x39d891){if(!_0x39d891||_0x39d891[_0x7f2a('0x83')]!=0x0)return _0x4ce5f3;return db['UserProfileResource'][_0x7f2a('0x7b')]({'name':_0x4ce5f3['name'],'resourceId':_0x4ce5f3['id'],'type':_0x39d891['name'],'sectionId':_0x39d891['id']},{})[_0x7f2a('0x15')](function(){return _0x4ce5f3;});})[_0x7f2a('0x1e')](function(_0x594ddb){logger[_0x7f2a('0x1a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x594ddb);throw _0x594ddb;});})[_0x7f2a('0x15')](respondWithResult(_0x74dbc8,0xc9))['catch'](handleError(_0x74dbc8,null));};exports[_0x7f2a('0x84')]=function(_0x441912,_0x14bacb){var _0x4f3ba2=_0x441912['body'];var _0x51a59c=[];if(_0x441912[_0x7f2a('0x2c')]['role']==='agent')throw new Error(_0x7f2a('0x7c'));if(_[_0x7f2a('0x85')](_0x4f3ba2,[_0x7f2a('0x27'),_0x7f2a('0x2c')])&&_0x441912[_0x7f2a('0x2c')][_0x7f2a('0x27')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x7f2a('0x85')](_0x4f3ba2,[_0x7f2a('0x27'),_0x7f2a('0x7d')])&&_0x441912[_0x7f2a('0x2c')][_0x7f2a('0x27')]!==_0x7f2a('0x7d')){throw new Error(_0x7f2a('0x86'));}return licenseUtil['checkUserLimits'](_0x4f3ba2)[_0x7f2a('0x15')](function(){return validateUser(_0x4f3ba2[0x0]);})[_0x7f2a('0x15')](function(){for(var _0x189522=0x1;_0x189522<_0x4f3ba2[_0x7f2a('0x46')];_0x189522++){var _0x4441ef=_0x4f3ba2[_0x189522-0x1][_0x7f2a('0x5f')];if(!_0x4f3ba2[_0x189522][_0x7f2a('0x5f')])_0x4f3ba2[_0x189522]['internal']=_0x4441ef+0x1;_0x51a59c[_0x7f2a('0x43')](validateUser(_0x4f3ba2[_0x189522]));}return Promise[_0x7f2a('0x4c')](_0x51a59c);})[_0x7f2a('0x15')](function(){_0x51a59c=[];for(var _0x540674=0x0;_0x540674<_0x4f3ba2[_0x7f2a('0x46')];_0x540674++){_0x51a59c['push'](updateUser(_0x4f3ba2[_0x540674]));}return Promise[_0x7f2a('0x4c')](_0x51a59c);})['then'](function(){_0x51a59c=_0x4f3ba2['map'](function(_0x2da589){return db[_0x7f2a('0x37')][_0x7f2a('0x7b')](_0x2da589,{'include':[{'model':db[_0x7f2a('0x6a')],'as':_0x7f2a('0x6a')}]})[_0x7f2a('0x15')](function(_0xf68984){_0x2da589['id']=_0xf68984['id'];return _0x2da589;});});return Promise[_0x7f2a('0x4c')](_0x51a59c);})['then'](function(_0x225b07){if(_0x441912[_0x7f2a('0x5b')][_0x7f2a('0x27')]===_0x7f2a('0x2c'))return _0x225b07;if(_0x441912[_0x7f2a('0x2c')][_0x7f2a('0x27')]!==_0x7f2a('0x2c'))return _0x225b07;var _0x32226f=_[_0x7f2a('0x85')](_0x225b07,function(_0x57c090){return _0x57c090['role']==='agent'||_0x57c090[_0x7f2a('0x27')]===_0x7f2a('0x87');});if(!_0x32226f)return _0x225b07;return db['UserProfileSection'][_0x7f2a('0x44')]({'where':{'name':{'$or':[_0x7f2a('0x88'),_0x7f2a('0x2e')]},'userProfileId':_0x441912[_0x7f2a('0x2c')][_0x7f2a('0x81')]},'raw':!![]})[_0x7f2a('0x15')](function(_0x4a6fa3){if(_['isEmpty'](_0x4a6fa3)||!_[_0x7f2a('0x85')](_0x4a6fa3,[_0x7f2a('0x83'),0x0]))return _0x225b07;_0x51a59c=[];var _0x3053cb=_(_0x4a6fa3)[_0x7f2a('0x89')](function(_0x3fe276){if(_0x3fe276[_0x7f2a('0x83')]===0x1)return;return _0x3fe276[_0x7f2a('0x33')]===_0x7f2a('0x88')?_0x7f2a('0x2d'):_0x7f2a('0x87');})[_0x7f2a('0x8a')]()[_0x7f2a('0x32')]();for(var _0x1d1384=0x0;_0x1d1384<_0x225b07[_0x7f2a('0x46')];_0x1d1384++){if(!_['includes'](_0x3053cb,_0x225b07[_0x1d1384][_0x7f2a('0x27')]))return;var _0x2ee66f=_0x225b07[_0x1d1384][_0x7f2a('0x27')]===_0x7f2a('0x2d')?_0x7f2a('0x88'):_0x7f2a('0x2e');_0x51a59c[_0x7f2a('0x43')](db['UserProfileResource']['create']({'name':_0x225b07[_0x1d1384][_0x7f2a('0x33')],'resourceId':_0x225b07[_0x1d1384]['id'],'type':_0x2ee66f,'sectionId':_[_0x7f2a('0x31')](_0x4a6fa3,['name',_0x2ee66f])['id']},{}));}return Promise['all'](_0x51a59c);});})[_0x7f2a('0x15')](respondWithResult(_0x14bacb,0xc9))[_0x7f2a('0x1e')](handleError(_0x14bacb,null));};exports[_0x7f2a('0x8b')]=function(_0x5e1000,_0x53d871){if(_0x5e1000[_0x7f2a('0x5b')]['id']){delete _0x5e1000[_0x7f2a('0x5b')]['id'];}return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x5e1000['params']['id']}})['then'](function(_0xb81d08){if(!_0xb81d08)return null;if(_0xb81d08['id']===_0x5e1000['user']['id']){if(!_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8c')]||!_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8d')]){throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0x90'));}if(!_0xb81d08[_0x7f2a('0x91')](_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8c')])){throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0x92'));}if(_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8c')]===_0x5e1000['body']['newPassword']){throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0x93'));}}else if(_0x5e1000[_0x7f2a('0x2c')][_0x7f2a('0x27')]==='admin'){if(!_0x5e1000['body'][_0x7f2a('0x8d')]){throw new db[(_0x7f2a('0x8e'))]['ValidationError'](_0x7f2a('0x94'));}}else if(_0x5e1000[_0x7f2a('0x2c')][_0x7f2a('0x27')]===_0x7f2a('0x2c')){if(!_0x5e1000[_0x7f2a('0x5b')]['newPassword']){throw new db[(_0x7f2a('0x8e'))]['ValidationError'](_0x7f2a('0x94'));}if(_0xb81d08[_0x7f2a('0x27')]!=='agent'){throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0x7c'));}}else{throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0x7c'));}return _0xb81d08;})[_0x7f2a('0x15')](handleEntityNotFound(_0x53d871,null))['then'](function(_0x407b35){return db[_0x7f2a('0x60')][_0x7f2a('0x95')]({'attributes':['id',_0x7f2a('0x62'),_0x7f2a('0x96'),'passwordHistoryLimit']})[_0x7f2a('0x15')](function(_0x24810e){if(_0x24810e['securePassword'])authService['validatePasswordPattern'](_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8d')]);if(!_0x24810e[_0x7f2a('0x96')]||!_0x407b35[_0x7f2a('0x97')])return _0x407b35;authService[_0x7f2a('0x98')](_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8d')],_0x407b35[_0x7f2a('0x97')],_0x24810e[_0x7f2a('0x99')]);return _0x407b35;})[_0x7f2a('0x15')](saveUpdates({'password':_0x5e1000[_0x7f2a('0x5b')]['newPassword'],'passwordResetAt':_0x5e1000['user']['id']==_0x5e1000['params']['id']?moment():null,'previousPasswords':authService[_0x7f2a('0x9a')](_0x5e1000[_0x7f2a('0x5b')][_0x7f2a('0x8d')],_0x407b35[_0x7f2a('0x97')])},null));})[_0x7f2a('0x15')](respondWithResult(_0x53d871,null))[_0x7f2a('0x1e')](handleError(_0x53d871,null));};exports[_0x7f2a('0x9b')]=function(_0x287aee,_0x2ec269){var _0x2b0db7=_0x287aee[_0x7f2a('0x5b')]['channel'];return db[_0x7f2a('0x37')]['find']({'where':{'id':_0x287aee[_0x7f2a('0x4e')]['id']},'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0x27'),_0x7f2a('0x9c'),'loginInPause',_0x7f2a('0x9d'),'interface']})[_0x7f2a('0x15')](handleEntityNotFound(_0x2ec269,null))[_0x7f2a('0x15')](function(_0x2f1e63){if(_0x2f1e63){if(!utils[_0x7f2a('0x9e')](_0x2b0db7)){throw new db['Sequelize']['ValidationError'](_0x7f2a('0x9f'));}return _0x2f1e63[_0x7f2a('0xa0')+_['capitalize'](_0x2b0db7['toLowerCase']())+_0x7f2a('0xa1')](_0x287aee[_0x7f2a('0x5b')]['ids'],{'penalty':_0x287aee[_0x7f2a('0x5b')][_0x7f2a('0xa2')]||0x0})[_0x7f2a('0xa3')](function(_0x40476b){for(var _0x5a9ef4=0x0;_0x5a9ef4<_0x287aee[_0x7f2a('0x5b')][_0x7f2a('0x5e')]['length'];_0x5a9ef4+=0x1){var _0x23d6c3={'UserId':Number(_0x287aee['params']['id'])};_0x23d6c3[_[_0x7f2a('0xa4')](_0x2b0db7[_0x7f2a('0xa5')]())+_0x7f2a('0xa6')]=Number(_0x287aee[_0x7f2a('0x5b')]['ids'][_0x5a9ef4]);socket[_0x7f2a('0x28')]('user'+_['capitalize'](_0x2b0db7[_0x7f2a('0xa5')]())+_0x7f2a('0xa7'),_0x23d6c3);}return _0x40476b;})[_0x7f2a('0x15')](function(){if(_0x2b0db7===_0x7f2a('0xa8')){return db['VoiceQueue'][_0x7f2a('0x44')]({'where':{'id':_0x287aee['body'][_0x7f2a('0x5e')]||[]},'raw':!![],'attributes':['id','name']});}})['then'](function(_0x110a56){var _0x3bd20a=_0x2f1e63[_0x7f2a('0xa9')]({'plain':!![]});var _0x1ceffe=[];if(_0x2b0db7==='voice'&&_0x3bd20a['role']==='agent'&&_0x3bd20a[_0x7f2a('0x9c')]){for(let _0x15867c=0x0;_0x15867c<_0x110a56[_0x7f2a('0x46')];_0x15867c+=0x1){_0x1ceffe[_0x7f2a('0x43')]({'membername':_0x3bd20a[_0x7f2a('0x33')],'UserId':_0x3bd20a['id'],'queue_name':_0x110a56[_0x15867c][_0x7f2a('0x33')],'VoiceQueueId':_0x110a56[_0x15867c]['id'],'interface':_['isNil'](_0x3bd20a['interface'])?util[_0x7f2a('0xaa')](_0x7f2a('0xab'),_0x3bd20a[_0x7f2a('0x33')]):_0x3bd20a['interface'],'paused':_0x3bd20a[_0x7f2a('0x9d')]||![],'penalty':_0x287aee[_0x7f2a('0x5b')][_0x7f2a('0xa2')]||0x0});}return Promise[_0x7f2a('0x4c')](_0x1ceffe['map'](function(_0x4deaf4){return db[_0x7f2a('0xac')]['upsert'](_0x4deaf4);}));}return _0x2f1e63;});}})['then'](respondWithStatusCode(_0x2ec269,null))[_0x7f2a('0x1e')](handleError(_0x2ec269,null));};exports[_0x7f2a('0xad')]=function(_0x4e99c1,_0x1cf95b){var _0x4b9f65,_0x3b9984;return db['User']['find']({'where':{'id':_0x4e99c1[_0x7f2a('0x4e')]['id']},'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0x27')]})[_0x7f2a('0x15')](handleEntityNotFound(_0x1cf95b,null))[_0x7f2a('0x15')](function(_0x3ca53c){if(_0x3ca53c){_0x4b9f65=_0x3ca53c;if(!_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')]||!utils[_0x7f2a('0x9e')](_0x4e99c1['query']['channel'])){throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))]('Unknown\x20channel');}return _0x3ca53c[_0x7f2a('0xaf')+_[_0x7f2a('0xa4')](_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')][_0x7f2a('0xa5')]())+_0x7f2a('0xa1')](_0x4e99c1[_0x7f2a('0x3e')]['ids']);}})[_0x7f2a('0x15')](function(_0x524529){if(_[_0x7f2a('0xb0')](_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0x5e')])){for(var _0x311b13=0x0;_0x311b13<_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0x5e')]['length'];_0x311b13+=0x1){_0x3b9984={'UserId':Number(_0x4e99c1[_0x7f2a('0x4e')]['id'])};_0x3b9984[_[_0x7f2a('0xa4')](_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')][_0x7f2a('0xa5')]())+_0x7f2a('0xa6')]=Number(_0x4e99c1['query'][_0x7f2a('0x5e')][_0x311b13]);socket['emit'](_0x7f2a('0x2c')+_[_0x7f2a('0xa4')](_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')][_0x7f2a('0xa5')]())+'Queue:remove',_0x3b9984);}}else{_0x3b9984={'UserId':Number(_0x4e99c1[_0x7f2a('0x4e')]['id'])};_0x3b9984[_[_0x7f2a('0xa4')](_0x4e99c1['query'][_0x7f2a('0xae')][_0x7f2a('0xa5')]())+'QueueId']=Number(_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0x5e')]);socket[_0x7f2a('0x28')]('user'+_['capitalize'](_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')][_0x7f2a('0xa5')]())+_0x7f2a('0xb1'),_0x3b9984);}return _0x524529;})[_0x7f2a('0x15')](function(){if(_0x4e99c1[_0x7f2a('0x3e')][_0x7f2a('0xae')]===_0x7f2a('0xa8')){return db['UserVoiceQueueRt']['destroy']({'where':{'UserId':_0x4e99c1[_0x7f2a('0x4e')]['id'],'VoiceQueueId':_0x4e99c1[_0x7f2a('0x3e')]['ids']},'individualHooks':!![]})[_0x7f2a('0x15')](function(){return _0x4b9f65;});}return _0x4b9f65;})[_0x7f2a('0x15')](respondWithStatusCode(_0x1cf95b,null))['catch'](handleError(_0x1cf95b,null));};exports[_0x7f2a('0xb2')]=function(_0xdbe8db,_0x4622bd){_0xdbe8db[_0x7f2a('0x5b')][_0x7f2a('0xb3')]=_0xdbe8db['file'][_0x7f2a('0xb4')];return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0xdbe8db[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x4622bd,null))['then'](saveUpdates(_0xdbe8db[_0x7f2a('0x5b')],null))[_0x7f2a('0x15')](respondWithResult(_0x4622bd,null))['catch'](handleError(_0x4622bd,null));};exports[_0x7f2a('0xb5')]=function(_0x45bb9f,_0x42d033){var _0xf6d28e=path[_0x7f2a('0xb6')](config[_0x7f2a('0xb7')],_0x7f2a('0xb8'));return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x45bb9f[_0x7f2a('0x4e')]['id']},'attributes':['id',_0x7f2a('0xb3')],'raw':!![]})[_0x7f2a('0x15')](handleEntityNotFound(_0x42d033,null))['then'](function(_0x3aea0f){if(_0x3aea0f){if(_[_0x7f2a('0x64')](_0x3aea0f[_0x7f2a('0xb3')])){return _0x42d033[_0x7f2a('0xb9')](_0xf6d28e);}else{if(!fs['existsSync'](path[_0x7f2a('0xb6')](config[_0x7f2a('0xb7')],_0x7f2a('0xba'),_0x3aea0f[_0x7f2a('0xb3')]))){return _0x42d033['download'](_0xf6d28e);}return _0x42d033[_0x7f2a('0xb9')](path[_0x7f2a('0xb6')](config[_0x7f2a('0xb7')],_0x7f2a('0xba'),_0x3aea0f['userpic']));}}})[_0x7f2a('0x1e')](handleError(_0x42d033,null));};exports[_0x7f2a('0xbb')]=function(_0x140363,_0x1f3d38){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x140363[_0x7f2a('0x4e')]['id']},'attributes':['id']})[_0x7f2a('0x15')](handleEntityNotFound(_0x1f3d38,null))[_0x7f2a('0x15')](function(_0x418838){var _0x375838=[];values=_0x418838[_0x7f2a('0x47')];_0x375838[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x58'),_0x418838[_0x7f2a('0x47')]));_0x375838[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x48'),_0x418838[_0x7f2a('0x47')]));_0x375838[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x4a'),_0x418838[_0x7f2a('0x47')]));_0x375838[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x4b'),_0x418838[_0x7f2a('0x47')]));_0x375838['push'](get_open_tabs(_0x7f2a('0x49'),_0x418838[_0x7f2a('0x47')]));_0x375838[_0x7f2a('0x43')](get_open_tabs(_0x7f2a('0x59'),_0x418838['dataValues']));return Promise['all'](_0x375838);})[_0x7f2a('0x15')](function(_0x47c57d){if(_0x47c57d){var _0x186db9=_[_0x7f2a('0x89')](values[_0x7f2a('0xbc')],function(_0x49b62c){return{'channel':_0x7f2a('0xbd'),'id':_0x49b62c['id'],'createdAt':_0x49b62c[_0x7f2a('0xbe')]};});var _0x58823f=_[_0x7f2a('0x89')](values['FaxOpenTabs'],function(_0x158d8d){return{'channel':_0x7f2a('0xbf'),'id':_0x158d8d['id'],'createdAt':_0x158d8d[_0x7f2a('0xbe')]};});var _0x597a3c=_[_0x7f2a('0x89')](values[_0x7f2a('0xc0')],function(_0x20641b){return{'channel':_0x7f2a('0xc1'),'id':_0x20641b['id'],'createdAt':_0x20641b[_0x7f2a('0xbe')]};});var _0x274b3a=_[_0x7f2a('0x89')](values[_0x7f2a('0xc2')],function(_0x36d111){return{'channel':_0x7f2a('0xc3'),'id':_0x36d111['id'],'createdAt':_0x36d111[_0x7f2a('0xbe')]};});var _0x5d366e=_[_0x7f2a('0x89')](values[_0x7f2a('0xc4')],function(_0x3058d3){return{'channel':_0x7f2a('0xc5'),'id':_0x3058d3['id'],'createdAt':_0x3058d3['createdAt']};});var _0x1217be=_['map'](values[_0x7f2a('0xc6')],function(_0x332a4a){return{'channel':_0x7f2a('0xc7'),'id':_0x332a4a['id'],'createdAt':_0x332a4a['createdAt']};});var _0x3539b1=_['concat'](_0x186db9,_0x58823f,_0x597a3c,_0x274b3a,_0x5d366e,_0x1217be);var _0x4628ab={'count':_0x3539b1['length'],'rows':_0x3539b1};return _0x4628ab;}else return null;})[_0x7f2a('0x15')](respondWithResult(_0x1f3d38,null))['catch'](handleError(_0x1f3d38,null));};exports[_0x7f2a('0xc8')]=function(_0x5c8719,_0x248e69){var _0xf80641={};return db[_0x7f2a('0x37')]['findOne']({'where':{'id':_0x5c8719[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](function(_0x5e3b9d){if(!_0x5e3b9d){throw new APINotFoundError(util[_0x7f2a('0xaa')](_0x7f2a('0xc9'),_0x5c8719['params']['id']));}return contacts[_0x7f2a('0x5c')]();})['then'](function(_0x5cee8e){_0x5c8719[_0x7f2a('0x3e')][_0x7f2a('0x37')]=_0x5c8719[_0x7f2a('0x4e')]['id'];_0xf80641=qs[_0x7f2a('0xca')](_0x5cee8e,_0x5c8719);if(_0x5c8719[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0x3c'))){_0xf80641[_0x7f2a('0x3d')]=[{'model':db[_0x7f2a('0xcc')],'as':'List','required':![]},{'model':db[_0x7f2a('0xcd')],'as':_0x7f2a('0xce'),'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0xcf')],'where':_0x5c8719[_0x7f2a('0x3e')][_0x7f2a('0xd0')]?{'id':_0x5c8719[_0x7f2a('0x3e')][_0x7f2a('0xd0')]}:undefined,'required':_0x5c8719[_0x7f2a('0x3e')][_0x7f2a('0xd0')]?!![]:![]}];}return contacts['findAll'](_0x5c8719[_0x7f2a('0x3e')],_0x5c8719[_0x7f2a('0x2c')],_0xf80641,_0x5cee8e);})[_0x7f2a('0x15')](respondWithFilteredResult(_0x248e69,_0xf80641))[_0x7f2a('0x1e')](APIHandleError(_0x248e69));};exports['getQueues']=function(_0x480079,_0x1eb372){var _0x132a8f;var _0x13f2f2={};var _0x439cb4;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x480079[_0x7f2a('0x4e')]['id']},'attributes':['id','name',_0x7f2a('0x27')]})['then'](handleEntityNotFound(_0x1eb372,null))['then'](function(_0x3a3010){if(!utils['isValidChannel'](_0x480079[_0x7f2a('0x3e')][_0x7f2a('0xae')])){throw new db['Sequelize'][(_0x7f2a('0x8f'))]('Unknown\x20channel');}_0x132a8f=_0x3a3010;var _0x2c1427={};_0x2c1427[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_[_0x7f2a('0xa4')](_0x480079[_0x7f2a('0x3e')]['channel'])+_0x7f2a('0xd1')][_0x7f2a('0x38')]);_0x2c1427['query']=_[_0x7f2a('0x4f')](_0x480079[_0x7f2a('0x3e')]);_0x2c1427[_0x7f2a('0x52')]=_['intersection'](_0x2c1427[_0x7f2a('0x54')],_0x2c1427[_0x7f2a('0x3e')]);_0x13f2f2[_0x7f2a('0x42')]=_['intersection'](_0x2c1427[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x480079['query'][_0x7f2a('0x55')]));_0x13f2f2[_0x7f2a('0x42')]=_0x13f2f2['attributes'][_0x7f2a('0x46')]?_0x13f2f2[_0x7f2a('0x42')]:_0x2c1427[_0x7f2a('0x54')];_0x13f2f2[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x480079[_0x7f2a('0x3e')]['sort']);_0x13f2f2['where']=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x480079[_0x7f2a('0x3e')],_0x2c1427['filters']));if(_0x480079[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x13f2f2[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x13f2f2[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x13f2f2[_0x7f2a('0x42')],function(_0x4c042e){var _0x447bf8={};_0x447bf8[_0x4c042e]={'$like':'%'+_0x480079[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x447bf8;})});}_0x13f2f2=_[_0x7f2a('0x56')]({},_0x13f2f2,_0x480079[_0x7f2a('0x57')]);switch(_0x132a8f[_0x7f2a('0x27')]){case _0x7f2a('0x7d'):return db[_[_0x7f2a('0xa4')](_0x480079[_0x7f2a('0x3e')][_0x7f2a('0xae')])+'Queue'][_0x7f2a('0x44')](_0x13f2f2);case _0x7f2a('0x2c'):case _0x7f2a('0x2d'):return _0x132a8f[_0x7f2a('0xa9')+_[_0x7f2a('0xa4')](_0x480079[_0x7f2a('0x3e')]['channel'])+'Queues'](_0x13f2f2);default:throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0xd5'));}})[_0x7f2a('0x15')](function(_0x2ce4e4){_0x439cb4=_0x2ce4e4[_0x7f2a('0x46')];if(!_0x480079[_0x7f2a('0x3e')]['hasOwnProperty']('nolimit')){_0x13f2f2[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x480079[_0x7f2a('0x3e')]['limit']);_0x13f2f2['offset']=qs[_0x7f2a('0x22')](_0x480079['query'][_0x7f2a('0x22')]);}switch(_0x132a8f[_0x7f2a('0x27')]){case _0x7f2a('0x7d'):return db[_['capitalize'](_0x480079['query'][_0x7f2a('0xae')])+'Queue'][_0x7f2a('0x44')](_0x13f2f2);case _0x7f2a('0x2c'):case _0x7f2a('0x2d'):return _0x132a8f[_0x7f2a('0xa9')+_[_0x7f2a('0xa4')](_0x480079['query'][_0x7f2a('0xae')])+_0x7f2a('0xa1')](_0x13f2f2);}})[_0x7f2a('0x15')](function(_0x30ce42){return{'count':_0x439cb4,'rows':_0x30ce42};})[_0x7f2a('0x15')](respondWithResult(_0x1eb372,null))[_0x7f2a('0x1e')](handleError(_0x1eb372,null));};exports[_0x7f2a('0xd6')]=function(_0x58f232,_0x50b8b9){var _0x18b0dd={};var _0x286d1c={};var _0x457039;var _0x41d2c0;return db['User'][_0x7f2a('0x95')]({'where':{'id':_0x58f232[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x50b8b9,null))['then'](function(_0xe24c7f){if(_0xe24c7f){_0x457039=_0xe24c7f;_0x286d1c[_0x7f2a('0x54')]=_['keys'](db['UserVoiceQueueRt'][_0x7f2a('0x38')]);_0x286d1c['query']=_['keys'](_0x58f232[_0x7f2a('0x3e')]);_0x286d1c['filters']=_[_0x7f2a('0x53')](_0x286d1c[_0x7f2a('0x54')],_0x286d1c[_0x7f2a('0x3e')]);_0x18b0dd['attributes']=_[_0x7f2a('0x53')](_0x286d1c[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x18b0dd[_0x7f2a('0x42')]=_0x18b0dd[_0x7f2a('0x42')]['length']?_0x18b0dd[_0x7f2a('0x42')]:_0x286d1c[_0x7f2a('0x54')];_0x18b0dd['order']=qs['sort'](_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x18b0dd[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x58f232[_0x7f2a('0x3e')],_0x286d1c[_0x7f2a('0x52')]));if(_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x18b0dd['where']=_['merge'](_0x18b0dd['where'],{'$or':_['map'](_0x18b0dd['attributes'],function(_0x41372e){var _0x168808={};_0x168808[_0x41372e]={'$like':'%'+_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x168808;})});}_0x18b0dd=_['merge']({},_0x18b0dd,_0x58f232[_0x7f2a('0x57')]);return _0x457039['getVoiceQueuesRt'](_0x18b0dd);}})['then'](function(_0x1fb2db){if(_0x1fb2db){_0x41d2c0=_0x1fb2db[_0x7f2a('0x46')];if(!_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x18b0dd[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x58f232[_0x7f2a('0x3e')]['limit']);_0x18b0dd[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x58f232[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x457039[_0x7f2a('0xd6')](_0x18b0dd);}})[_0x7f2a('0x15')](function(_0x2c3ae9){if(_0x2c3ae9){return _0x2c3ae9?{'count':_0x41d2c0,'rows':_0x2c3ae9}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x50b8b9,null))[_0x7f2a('0x1e')](handleError(_0x50b8b9,null));};exports[_0x7f2a('0xd8')]=function(_0x50c7ee,_0x1d7d5b){var _0x4d3f10={};var _0x3fa58c={};var _0x5dae2d;var _0xa03868;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x50c7ee[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1d7d5b,null))['then'](function(_0x516743){if(_0x516743){_0x5dae2d=_0x516743;_0x3fa58c['model']=_[_0x7f2a('0x4f')](db[_0x7f2a('0xd9')][_0x7f2a('0x38')]);_0x3fa58c['query']=_[_0x7f2a('0x4f')](_0x50c7ee['query']);_0x3fa58c[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x3fa58c[_0x7f2a('0x54')],_0x3fa58c[_0x7f2a('0x3e')]);_0x4d3f10[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x3fa58c[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x50c7ee['query'][_0x7f2a('0x55')]));_0x4d3f10[_0x7f2a('0x42')]=_0x4d3f10[_0x7f2a('0x42')]['length']?_0x4d3f10[_0x7f2a('0x42')]:_0x3fa58c[_0x7f2a('0x54')];_0x4d3f10[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x50c7ee[_0x7f2a('0x3e')]['sort']);_0x4d3f10[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x50c7ee[_0x7f2a('0x3e')],_0x3fa58c['filters']));if(_0x50c7ee['query'][_0x7f2a('0x2f')]){_0x4d3f10['where']=_[_0x7f2a('0x56')](_0x4d3f10['where'],{'$or':_[_0x7f2a('0x89')](_0x4d3f10['attributes'],function(_0x39a4c7){var _0x1c7815={};_0x1c7815[_0x39a4c7]={'$like':'%'+_0x50c7ee[_0x7f2a('0x3e')]['filter']+'%'};return _0x1c7815;})});}_0x4d3f10=_[_0x7f2a('0x56')]({},_0x4d3f10,_0x50c7ee['options']);return _0x5dae2d[_0x7f2a('0xd8')](_0x4d3f10);}})[_0x7f2a('0x15')](function(_0x2a81fd){if(_0x2a81fd){_0xa03868=_0x2a81fd[_0x7f2a('0x46')];if(!_0x50c7ee[_0x7f2a('0x3e')][_0x7f2a('0xcb')]('nolimit')){_0x4d3f10['limit']=qs['limit'](_0x50c7ee[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x4d3f10[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x50c7ee[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x5dae2d['getGroups'](_0x4d3f10);}})[_0x7f2a('0x15')](function(_0x3b06f8){if(_0x3b06f8){return _0x3b06f8?{'count':_0xa03868,'rows':_0x3b06f8}:null;}})['then'](respondWithResult(_0x1d7d5b,null))['catch'](handleError(_0x1d7d5b,null));};exports[_0x7f2a('0xda')]=function(_0x4324e5,_0x3cdcf2){var _0x4df6c2={'raw':!![],'where':{}};var _0x276923={};var _0x412aa7={'count':0x0,'rows':[]};return db[_0x7f2a('0x37')]['findOne']({'where':{'id':_0x4324e5[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x3cdcf2,null))[_0x7f2a('0x15')](function(_0xa5f3bd){if(_0xa5f3bd){_0x276923[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xdb')][_0x7f2a('0x38')]);_0x276923[_0x7f2a('0x3e')]=_['keys'](_0x4324e5['query']);_0x276923[_0x7f2a('0x52')]=_['intersection'](_0x276923['model'],_0x276923[_0x7f2a('0x3e')]);_0x4df6c2[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x276923['model'],qs[_0x7f2a('0x55')](_0x4324e5[_0x7f2a('0x3e')]['fields']));_0x4df6c2[_0x7f2a('0x42')]=_0x4df6c2[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x4df6c2[_0x7f2a('0x42')]:_0x276923[_0x7f2a('0x54')];if(!_0x4324e5['query'][_0x7f2a('0xcb')]('nolimit')){_0x4df6c2['limit']=qs[_0x7f2a('0x24')](_0x4324e5['query']['limit']);_0x4df6c2[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x4324e5[_0x7f2a('0x3e')]['offset']);}_0x4df6c2['order']=qs[_0x7f2a('0xd3')](_0x4324e5['query'][_0x7f2a('0xd3')]);_0x4df6c2[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x4324e5[_0x7f2a('0x3e')],_0x276923['filters']));_0x4df6c2[_0x7f2a('0x3b')][_0x7f2a('0xdc')]=_0xa5f3bd['id'];if(_0x4324e5[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x4df6c2['where']=_[_0x7f2a('0x56')](_0x4df6c2[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x4df6c2['attributes'],function(_0x3f6e1a){var _0x148111={};_0x148111[_0x3f6e1a]={'$like':'%'+_0x4324e5['query'][_0x7f2a('0x2f')]+'%'};return _0x148111;})});}_0x4df6c2=_[_0x7f2a('0x56')]({},_0x4df6c2,_0x4324e5[_0x7f2a('0x57')]);return db[_0x7f2a('0xdb')][_0x7f2a('0x25')]({'where':_0x4df6c2[_0x7f2a('0x3b')]})[_0x7f2a('0x15')](function(_0x3c20c1){_0x412aa7[_0x7f2a('0x25')]=_0x3c20c1;if(_0x4324e5[_0x7f2a('0x3e')][_0x7f2a('0x3c')]){_0x4df6c2[_0x7f2a('0x3d')]=[{'all':!![]}];}return db[_0x7f2a('0xdb')]['findAll'](_0x4df6c2);})[_0x7f2a('0x15')](function(_0x7db45d){_0x412aa7[_0x7f2a('0x45')]=_0x7db45d;return _0x412aa7;});}})['then'](respondWithFilteredResult(_0x3cdcf2,_0x4df6c2))[_0x7f2a('0x1e')](handleError(_0x3cdcf2,null));};exports[_0x7f2a('0xdd')]=function(_0x34565d,_0x3c163d){var _0x41c6fd={'raw':!![],'where':{}};var _0x48edd7={};var _0x381843={'count':0x0,'rows':[]};return db['User'][_0x7f2a('0x95')]({'where':{'id':_0x34565d['params']['id']}})['then'](handleEntityNotFound(_0x3c163d,null))['then'](function(_0x21b9a3){if(_0x21b9a3){_0x48edd7[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xde')][_0x7f2a('0x38')]);_0x48edd7[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x34565d['query']);_0x48edd7['filters']=_[_0x7f2a('0x53')](_0x48edd7[_0x7f2a('0x54')],_0x48edd7['query']);_0x41c6fd['attributes']=_[_0x7f2a('0x53')](_0x48edd7[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x41c6fd[_0x7f2a('0x42')]=_0x41c6fd[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x41c6fd[_0x7f2a('0x42')]:_0x48edd7['model'];if(!_0x34565d['query'][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x41c6fd['limit']=qs[_0x7f2a('0x24')](_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x41c6fd[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}_0x41c6fd[_0x7f2a('0xd2')]=qs['sort'](_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x41c6fd[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x34565d['query'],_0x48edd7['filters']));_0x41c6fd[_0x7f2a('0x3b')][_0x7f2a('0xdc')]=_0x21b9a3['id'];if(_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x41c6fd[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x41c6fd['where'],{'$or':_[_0x7f2a('0x89')](_0x41c6fd['attributes'],function(_0x440876){var _0x4f6845={};_0x4f6845[_0x440876]={'$like':'%'+_0x34565d[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x4f6845;})});}_0x41c6fd=_[_0x7f2a('0x56')]({},_0x41c6fd,_0x34565d['options']);return db['ScreenRecording']['count']({'where':_0x41c6fd[_0x7f2a('0x3b')]})[_0x7f2a('0x15')](function(_0x197505){_0x381843[_0x7f2a('0x25')]=_0x197505;if(_0x34565d['query'][_0x7f2a('0x3c')]){_0x41c6fd['include']=[{'all':!![]}];}return db['ScreenRecording'][_0x7f2a('0x44')](_0x41c6fd);})['then'](function(_0x5dc69d){_0x381843[_0x7f2a('0x45')]=_0x5dc69d;return _0x381843;});}})[_0x7f2a('0x15')](respondWithFilteredResult(_0x3c163d,_0x41c6fd))[_0x7f2a('0x1e')](handleError(_0x3c163d,null));};exports[_0x7f2a('0xdf')]=function(_0x288aba,_0x29ad14){var _0x57d367={};var _0x282ce3={};var _0x22476b;var _0x4233ae;return db['User'][_0x7f2a('0x95')]({'where':{'id':_0x288aba[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x29ad14,null))['then'](function(_0xb4bb54){if(_0xb4bb54){_0x22476b=_0xb4bb54;_0x282ce3['model']=_[_0x7f2a('0x4f')](db[_0x7f2a('0xe0')]['rawAttributes']);_0x282ce3[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x288aba[_0x7f2a('0x3e')]);_0x282ce3[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x282ce3[_0x7f2a('0x54')],_0x282ce3['query']);_0x57d367[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x282ce3['model'],qs[_0x7f2a('0x55')](_0x288aba[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x57d367[_0x7f2a('0x42')]=_0x57d367['attributes'][_0x7f2a('0x46')]?_0x57d367['attributes']:_0x282ce3['model'];_0x57d367[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x288aba[_0x7f2a('0x3e')]['sort']);_0x57d367[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x288aba[_0x7f2a('0x3e')],_0x282ce3['filters']));if(_0x288aba[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x57d367['where']=_[_0x7f2a('0x56')](_0x57d367[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x57d367[_0x7f2a('0x42')],function(_0x3eca88){var _0x1b5254={};_0x1b5254[_0x3eca88]={'$like':'%'+_0x288aba[_0x7f2a('0x3e')]['filter']+'%'};return _0x1b5254;})});}_0x57d367=_[_0x7f2a('0x56')]({},_0x57d367,_0x288aba[_0x7f2a('0x57')]);return _0x22476b[_0x7f2a('0xdf')](_0x57d367);}})['then'](function(_0x2fae87){if(_0x2fae87){_0x4233ae=_0x2fae87['length'];if(!_0x288aba[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x57d367[_0x7f2a('0x24')]=qs['limit'](_0x288aba[_0x7f2a('0x3e')]['limit']);_0x57d367[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x288aba[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x22476b['getChatInteractions'](_0x57d367);}})[_0x7f2a('0x15')](function(_0x3b17b9){if(_0x3b17b9){return _0x3b17b9?{'count':_0x4233ae,'rows':_0x3b17b9}:null;}})['then'](respondWithResult(_0x29ad14,null))['catch'](handleError(_0x29ad14,null));};exports[_0x7f2a('0xe1')]=function(_0x483043,_0x283a11){var _0x529142={};var _0x42ef35={};var _0x2489e9;var _0x39a5b6;return db[_0x7f2a('0x37')]['findOne']({'where':{'id':_0x483043[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x283a11,null))[_0x7f2a('0x15')](function(_0x59d4c3){if(_0x59d4c3){_0x2489e9=_0x59d4c3;_0x42ef35[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xe2')][_0x7f2a('0x38')]);_0x42ef35[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x483043[_0x7f2a('0x3e')]);_0x42ef35[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x42ef35[_0x7f2a('0x54')],_0x42ef35[_0x7f2a('0x3e')]);_0x529142[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x42ef35[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x483043['query']['fields']));_0x529142['attributes']=_0x529142[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x529142[_0x7f2a('0x42')]:_0x42ef35[_0x7f2a('0x54')];_0x529142[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x483043[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x529142['where']=qs[_0x7f2a('0x52')](_['pick'](_0x483043[_0x7f2a('0x3e')],_0x42ef35['filters']));if(_0x483043['query'][_0x7f2a('0x2f')]){_0x529142[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x529142[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x529142['attributes'],function(_0xd87ff4){var _0xa1cb90={};_0xa1cb90[_0xd87ff4]={'$like':'%'+_0x483043['query'][_0x7f2a('0x2f')]+'%'};return _0xa1cb90;})});}_0x529142=_[_0x7f2a('0x56')]({},_0x529142,_0x483043[_0x7f2a('0x57')]);return _0x2489e9[_0x7f2a('0xe1')](_0x529142);}})[_0x7f2a('0x15')](function(_0x101ed1){if(_0x101ed1){_0x39a5b6=_0x101ed1['length'];if(!_0x483043[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x529142[_0x7f2a('0x24')]=qs['limit'](_0x483043[_0x7f2a('0x3e')]['limit']);_0x529142[_0x7f2a('0x22')]=qs['offset'](_0x483043[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x2489e9[_0x7f2a('0xe1')](_0x529142);}})[_0x7f2a('0x15')](function(_0x237c8e){if(_0x237c8e){return _0x237c8e?{'count':_0x39a5b6,'rows':_0x237c8e}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x283a11,null))[_0x7f2a('0x1e')](handleError(_0x283a11,null));};exports[_0x7f2a('0xe3')]=function(_0x341bbc,_0x2812c1){var _0x4991c1={'raw':!![],'where':{}};var _0x43d636={};var _0x40d831={'count':0x0,'rows':[]};return db[_0x7f2a('0x37')]['findOne']({'where':{'id':_0x341bbc[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2812c1,null))[_0x7f2a('0x15')](function(_0x1e8197){if(_0x1e8197){_0x43d636['model']=_[_0x7f2a('0x4f')](db[_0x7f2a('0xe4')][_0x7f2a('0x38')]);_0x43d636[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x341bbc['query']);_0x43d636[_0x7f2a('0x52')]=_['intersection'](_0x43d636[_0x7f2a('0x54')],_0x43d636['query']);_0x4991c1[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x43d636[_0x7f2a('0x54')],qs['fields'](_0x341bbc['query'][_0x7f2a('0x55')]));_0x4991c1['attributes']=_0x4991c1[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x4991c1[_0x7f2a('0x42')]:_0x43d636[_0x7f2a('0x54')];if(!_0x341bbc[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x4991c1[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x341bbc['query'][_0x7f2a('0x24')]);_0x4991c1[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x341bbc[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}_0x4991c1['order']=qs[_0x7f2a('0xd3')](_0x341bbc[_0x7f2a('0x3e')]['sort']);_0x4991c1[_0x7f2a('0x3b')]=qs['filters'](_[_0x7f2a('0xd4')](_0x341bbc[_0x7f2a('0x3e')],_0x43d636[_0x7f2a('0x52')]));_0x4991c1[_0x7f2a('0x3b')][_0x7f2a('0xdc')]=_0x1e8197['id'];if(_0x341bbc[_0x7f2a('0x3e')]['filter']){_0x4991c1[_0x7f2a('0x3b')]=_['merge'](_0x4991c1[_0x7f2a('0x3b')],{'$or':_['map'](_0x4991c1[_0x7f2a('0x42')],function(_0x338025){var _0x40b96f={};_0x40b96f[_0x338025]={'$like':'%'+_0x341bbc[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x40b96f;})});}_0x4991c1=_[_0x7f2a('0x56')]({},_0x4991c1,_0x341bbc[_0x7f2a('0x57')]);return db[_0x7f2a('0xe4')]['count']({'where':_0x4991c1[_0x7f2a('0x3b')]})[_0x7f2a('0x15')](function(_0x2ef207){_0x40d831['count']=_0x2ef207;if(_0x341bbc[_0x7f2a('0x3e')][_0x7f2a('0x3c')]){_0x4991c1['include']=[{'all':!![]}];}return db[_0x7f2a('0xe4')]['findAll'](_0x4991c1);})[_0x7f2a('0x15')](function(_0x45600d){_0x40d831[_0x7f2a('0x45')]=_0x45600d;return _0x40d831;});}})[_0x7f2a('0x15')](respondWithFilteredResult(_0x2812c1,_0x4991c1))[_0x7f2a('0x1e')](handleError(_0x2812c1,null));};exports[_0x7f2a('0xe5')]=function(_0x13c274,_0x193d04){var _0x5d4134={};var _0x1d1f1d={};var _0x6d4a2c;var _0x792bd7;return db['User'][_0x7f2a('0x95')]({'where':{'id':_0x13c274[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x193d04,null))[_0x7f2a('0x15')](function(_0x3a904c){if(_0x3a904c){_0x6d4a2c=_0x3a904c;_0x1d1f1d[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db['SmsInteraction'][_0x7f2a('0x38')]);_0x1d1f1d[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x13c274[_0x7f2a('0x3e')]);_0x1d1f1d[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x1d1f1d[_0x7f2a('0x54')],_0x1d1f1d['query']);_0x5d4134['attributes']=_[_0x7f2a('0x53')](_0x1d1f1d['model'],qs[_0x7f2a('0x55')](_0x13c274['query']['fields']));_0x5d4134['attributes']=_0x5d4134['attributes'][_0x7f2a('0x46')]?_0x5d4134[_0x7f2a('0x42')]:_0x1d1f1d[_0x7f2a('0x54')];_0x5d4134['order']=qs[_0x7f2a('0xd3')](_0x13c274[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x5d4134[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x13c274['query'],_0x1d1f1d['filters']));if(_0x13c274[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x5d4134[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x5d4134[_0x7f2a('0x3b')],{'$or':_['map'](_0x5d4134[_0x7f2a('0x42')],function(_0x2f1c7d){var _0x470185={};_0x470185[_0x2f1c7d]={'$like':'%'+_0x13c274[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x470185;})});}_0x5d4134=_[_0x7f2a('0x56')]({},_0x5d4134,_0x13c274['options']);return _0x6d4a2c[_0x7f2a('0xe5')](_0x5d4134);}})['then'](function(_0x397437){if(_0x397437){_0x792bd7=_0x397437[_0x7f2a('0x46')];if(!_0x13c274[_0x7f2a('0x3e')][_0x7f2a('0xcb')]('nolimit')){_0x5d4134['limit']=qs[_0x7f2a('0x24')](_0x13c274['query']['limit']);_0x5d4134[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x13c274[_0x7f2a('0x3e')]['offset']);}return _0x6d4a2c[_0x7f2a('0xe5')](_0x5d4134);}})[_0x7f2a('0x15')](function(_0x2798d7){if(_0x2798d7){return _0x2798d7?{'count':_0x792bd7,'rows':_0x2798d7}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x193d04,null))['catch'](handleError(_0x193d04,null));};exports[_0x7f2a('0xe6')]=function(_0x321cac,_0x4104da){var _0x5222d3={};var _0x24f038={};var _0x743efa;var _0x401155;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x321cac[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4104da,null))['then'](function(_0x1cc3a9){if(_0x1cc3a9){_0x743efa=_0x1cc3a9;_0x24f038[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xe7')][_0x7f2a('0x38')]);_0x24f038[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x321cac['query']);_0x24f038[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x24f038[_0x7f2a('0x54')],_0x24f038[_0x7f2a('0x3e')]);_0x5222d3[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x24f038[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x321cac[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x5222d3[_0x7f2a('0x42')]=_0x5222d3[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x5222d3[_0x7f2a('0x42')]:_0x24f038[_0x7f2a('0x54')];_0x5222d3['order']=qs[_0x7f2a('0xd3')](_0x321cac[_0x7f2a('0x3e')]['sort']);_0x5222d3['where']=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x321cac[_0x7f2a('0x3e')],_0x24f038[_0x7f2a('0x52')]));if(_0x321cac[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x5222d3[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x5222d3[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x5222d3[_0x7f2a('0x42')],function(_0x1a1a11){var _0x3b2004={};_0x3b2004[_0x1a1a11]={'$like':'%'+_0x321cac[_0x7f2a('0x3e')]['filter']+'%'};return _0x3b2004;})});}_0x5222d3=_['merge']({},_0x5222d3,_0x321cac['options']);return _0x743efa[_0x7f2a('0xe6')](_0x5222d3);}})[_0x7f2a('0x15')](function(_0x330bf3){if(_0x330bf3){_0x401155=_0x330bf3[_0x7f2a('0x46')];if(!_0x321cac['query'][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x5222d3[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x321cac[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x5222d3[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x321cac[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x743efa[_0x7f2a('0xe6')](_0x5222d3);}})[_0x7f2a('0x15')](function(_0x2ba4dd){if(_0x2ba4dd){return _0x2ba4dd?{'count':_0x401155,'rows':_0x2ba4dd}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x4104da,null))[_0x7f2a('0x1e')](handleError(_0x4104da,null));};exports[_0x7f2a('0xe8')]=function(_0x4bc0df,_0x31d606){var _0x1f1ce8={};var _0x26a6e1={};var _0x3b6d48;var _0x2f7b41;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x4bc0df['params']['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x31d606,null))[_0x7f2a('0x15')](function(_0x31e576){if(_0x31e576){_0x3b6d48=_0x31e576;_0x26a6e1[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xe9')]['rawAttributes']);_0x26a6e1[_0x7f2a('0x3e')]=_['keys'](_0x4bc0df[_0x7f2a('0x3e')]);_0x26a6e1[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x26a6e1['model'],_0x26a6e1[_0x7f2a('0x3e')]);_0x1f1ce8[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x26a6e1['model'],qs[_0x7f2a('0x55')](_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x1f1ce8['attributes']=_0x1f1ce8['attributes'][_0x7f2a('0x46')]?_0x1f1ce8[_0x7f2a('0x42')]:_0x26a6e1[_0x7f2a('0x54')];_0x1f1ce8[_0x7f2a('0xd2')]=qs['sort'](_0x4bc0df[_0x7f2a('0x3e')]['sort']);_0x1f1ce8['where']=qs[_0x7f2a('0x52')](_['pick'](_0x4bc0df[_0x7f2a('0x3e')],_0x26a6e1[_0x7f2a('0x52')]));if(_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x1f1ce8[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x1f1ce8[_0x7f2a('0x3b')],{'$or':_['map'](_0x1f1ce8[_0x7f2a('0x42')],function(_0x1f1164){var _0x438394={};_0x438394[_0x1f1164]={'$like':'%'+_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x438394;})});}_0x1f1ce8=_[_0x7f2a('0x56')]({},_0x1f1ce8,_0x4bc0df[_0x7f2a('0x57')]);return _0x3b6d48[_0x7f2a('0xe8')](_0x1f1ce8);}})[_0x7f2a('0x15')](function(_0x19ded9){if(_0x19ded9){_0x2f7b41=_0x19ded9[_0x7f2a('0x46')];if(!_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0xcb')]('nolimit')){_0x1f1ce8[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x1f1ce8[_0x7f2a('0x22')]=qs['offset'](_0x4bc0df[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x3b6d48[_0x7f2a('0xe8')](_0x1f1ce8);}})[_0x7f2a('0x15')](function(_0x35d5d5){if(_0x35d5d5){return _0x35d5d5?{'count':_0x2f7b41,'rows':_0x35d5d5}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x31d606,null))[_0x7f2a('0x1e')](handleError(_0x31d606,null));};exports[_0x7f2a('0xea')]=function(_0x7ce20f,_0x2bd88a,_0x4eefeb){var _0x70d355;var _0x3ec6f4;var _0xfaa64c;var _0x2e15de=!_['isNil'](_0x7ce20f['params']['id'])?_0x7ce20f[_0x7f2a('0x4e')]['id']:!_[_0x7f2a('0x64')](_0x7ce20f[_0x7f2a('0x2c')]['id'])?_0x7ce20f[_0x7f2a('0x2c')]['id']:null;return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x2e15de,'role':{'$or':[_0x7f2a('0x7d'),_0x7f2a('0x2c'),'agent']}},'attributes':['id',_0x7f2a('0x33'),'phone',_0x7f2a('0xeb'),_0x7f2a('0x27'),_0x7f2a('0x5f'),_0x7f2a('0xec')]})[_0x7f2a('0x15')](function(_0x252af0){if(_0x252af0){if(_0x252af0[_0x7f2a('0x27')]==='agent'){_0x70d355=_0x252af0;if(_0x7ce20f['body'][_0x7f2a('0xed')]){_0xfaa64c=util[_0x7f2a('0xaa')](_0x7f2a('0xee'),_0x70d355[_0x7ce20f[_0x7f2a('0x5b')][_0x7f2a('0xed')]]);}else if(_0x7ce20f[_0x7f2a('0x5b')]['intrf']){_0xfaa64c=util[_0x7f2a('0xaa')](_0x7f2a('0xab'),_0x7ce20f['body'][_0x7f2a('0xef')]);}else{_0xfaa64c=util['format'](_0x7f2a('0xab'),_0x70d355[_0x7f2a('0x33')]);}socket['to'](util[_0x7f2a('0xaa')](_0x7f2a('0xf0'),_0x70d355[_0x7f2a('0x33')]))['emit'](_0x7f2a('0xf1'),{'user':{'id':_0x70d355['id'],'name':_0x70d355[_0x7f2a('0x33')]},'ip':_0x7ce20f[_0x7f2a('0xf2')][_0x7f2a('0xf3')]||_0x7ce20f[_0x7f2a('0xf4')]['remoteAddress']||_0x7ce20f['socket']['remoteAddress']||_0x7ce20f[_0x7f2a('0xf4')][_0x7f2a('0xf5')]['remoteAddress']});return db[_0x7f2a('0xac')][_0x7f2a('0x2a')]({'where':{'membername':_0x70d355['name']},'individualHooks':!![]});}}else{throw new db[(_0x7f2a('0x8e'))][(_0x7f2a('0x8f'))](_0x7f2a('0xf6'));}})[_0x7f2a('0x15')](function(){if(_0x70d355){return _0x70d355[_0x7f2a('0xf7')]({'raw':!![]});}})['then'](function(_0x4e55a5){if(_0x70d355){if(_0x4e55a5){_0x3ec6f4=_0x4e55a5;if(_0x3ec6f4[_0x7f2a('0x46')]){var _0x4b9a86=_0x3ec6f4[_0x7f2a('0x89')](function(_0x4c20d5){var _0x31786e={'membername':_0x70d355[_0x7f2a('0x33')],'UserId':_0x70d355['id'],'queue_name':_0x4c20d5[_0x7f2a('0x33')],'VoiceQueueId':_0x4c20d5['id'],'interface':_0xfaa64c,'paused':_0x70d355[_0x7f2a('0xec')]||![],'penalty':_0x4c20d5[_0x7f2a('0xf8')]||0x0};return db[_0x7f2a('0xac')]['upsert'](_0x31786e);});return Promise[_0x7f2a('0x4c')](_0x4b9a86);}}}})[_0x7f2a('0x15')](function(){if(_0x70d355){return db[_0x7f2a('0xf9')][_0x7f2a('0x44')]({'where':{'membername':_0x70d355[_0x7f2a('0x33')],'exitAt':null}});}})[_0x7f2a('0x15')](function(_0x3393f7){if(_0x70d355){var _0x26fb31=[];_0x3393f7[_0x7f2a('0xfa')](function(_0x2bd207){_0x26fb31[_0x7f2a('0x43')](_0x2bd207[_0x7f2a('0x5a')]({'exitAt':moment()[_0x7f2a('0xaa')](_0x7f2a('0xfb'))}));});return Promise[_0x7f2a('0x4c')](_0x26fb31);}})['then'](function(){if(_0x70d355){var _0x264469=[];var _0x3f6e44=[];var _0x1ae596=utils[_0x7f2a('0xfc')]();var _0x1c2b5e={'membername':_0x70d355['name'],'interface':_0xfaa64c,'enterAt':moment()[_0x7f2a('0xaa')](_0x7f2a('0xfb')),'role':_0x70d355[_0x7f2a('0x27')],'internal':_0x70d355[_0x7f2a('0x5f')]};_0x1ae596[_0x7f2a('0xfa')](function(_0x5c5c18){_0x264469['push'](_['merge']({'channel':_0x5c5c18,'type':_0x7f2a('0xfd'),'data1':_0x7ce20f[_0x7f2a('0x5b')]['device'],'data2':_0xfaa64c},_0x1c2b5e));if(_0x70d355[_0x7f2a('0xec')]){_0x3f6e44[_0x7f2a('0x43')](_[_0x7f2a('0x56')]({'channel':_0x5c5c18,'type':_0x7f2a('0xfe'),'data1':_0x7f2a('0xff')},_0x1c2b5e));}});return db[_0x7f2a('0xf9')][_0x7f2a('0x84')](_0x264469[_0x7f2a('0x100')](_0x3f6e44),{'individualHooks':!![]});}})[_0x7f2a('0x15')](function(){if(_0x70d355){return _0x70d355[_0x7f2a('0x5a')]({'online':!![],'lastLoginAt':moment()[_0x7f2a('0xaa')](_0x7f2a('0xfb')),'voicePause':_0x70d355['loginInPause']||![],'mailPause':_0x70d355['loginInPause']||![],'chatPause':_0x70d355[_0x7f2a('0xec')]||![],'faxPause':_0x70d355['loginInPause']||![],'smsPause':_0x70d355[_0x7f2a('0xec')]||![],'openchannelPause':_0x70d355['loginInPause']||![],'whatsappPause':_0x70d355['loginInPause']||![],'pauseType':_0x70d355['loginInPause']?'LOGININPAUSE':null,'interface':_0xfaa64c,'lastPauseAt':moment()['format'](_0x7f2a('0xfb'))});}})['then'](function(_0x5083c4){if(_0x7ce20f['isMiddleware']){return _0x4eefeb();}else{return Promise[_0x7f2a('0x101')](_0x5083c4)[_0x7f2a('0x15')](respondWithResult(_0x2bd88a,null));}})['catch'](handleError(_0x2bd88a,null));};exports['logout']=function(_0x62464d,_0x5eb091){var _0x484a06;return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x62464d[_0x7f2a('0x4e')]['id'],'role':'agent'},'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0x27')]})[_0x7f2a('0x15')](handleEntityNotFound(_0x5eb091,null))['then'](function(_0x13f619){if(_0x13f619){_0x484a06=_0x13f619;return db[_0x7f2a('0xac')][_0x7f2a('0x2a')]({'where':{'membername':_0x484a06[_0x7f2a('0x33')]},'individualHooks':!![]});}})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0xf9')][_0x7f2a('0x44')]({'where':{'membername':_0x484a06[_0x7f2a('0x33')],'exitAt':null}});})['then'](function(_0x566e3e){var _0x143648=[];_0x566e3e[_0x7f2a('0xfa')](function(_0x415d25){_0x143648[_0x7f2a('0x43')](_0x415d25[_0x7f2a('0x5a')]({'exitAt':moment()[_0x7f2a('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x7f2a('0x4c')](_0x143648);})[_0x7f2a('0x15')](function(){return _0x484a06[_0x7f2a('0x5a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x7f2a('0x15')](respondWithResult(_0x5eb091,null))[_0x7f2a('0x1e')](handleError(_0x5eb091,null));};exports[_0x7f2a('0x102')]=function(_0x575e1f,_0x16cd07){var _0x47e943;return db[_0x7f2a('0xac')]['update']({'paused':0x1},{'where':{'UserId':_0x575e1f[_0x7f2a('0x4e')]['id']},'individualHooks':!![]})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x575e1f['params']['id'],'role':'agent'},'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0x27'),_0x7f2a('0x5f'),_0x7f2a('0xed'),_0x7f2a('0x9c')]});})[_0x7f2a('0x15')](handleEntityNotFound(_0x16cd07,null))['then'](function(_0x3c0ad9){if(_0x3c0ad9){_0x47e943=_0x3c0ad9;return respondWithRpcPromise(_0x7f2a('0x103'),_0x7f2a('0x102'),{'id':_0x47e943['id'],'name':_0x47e943[_0x7f2a('0x33')],'pause':!![]});}})['then'](function(){if(_0x47e943){return db['MemberReport'][_0x7f2a('0x44')]({'where':{'membername':_0x47e943['name'],'type':_0x7f2a('0xfe'),'exitAt':null}});}})[_0x7f2a('0x15')](function(_0x574a80){if(_0x574a80[_0x7f2a('0x46')]){var _0xe3dce6=moment()[_0x7f2a('0xaa')](_0x7f2a('0xfb'));for(var _0x5a3e18=0x0,_0x49dc46=_0x574a80[_0x7f2a('0x46')];_0x5a3e18<_0x49dc46;_0x5a3e18++){_0x574a80[_0x5a3e18][_0x7f2a('0x104')]({'exitAt':_0xe3dce6});}}})[_0x7f2a('0x15')](function(){var _0x20039f=[];var _0x18198d=utils[_0x7f2a('0xfc')]();_0x18198d[_0x7f2a('0xfa')](function(_0x4c0b1a){_0x20039f['push']({'channel':_0x4c0b1a,'membername':_0x47e943['name'],'interface':_[_0x7f2a('0x64')](_0x47e943[_0x7f2a('0xed')])?util[_0x7f2a('0xaa')](_0x7f2a('0xab'),_0x47e943['name']):_0x47e943[_0x7f2a('0xed')],'type':_0x7f2a('0xfe'),'enterAt':moment()['format'](_0x7f2a('0xfb')),'data1':_0x575e1f['body'][_0x7f2a('0x105')]||_0x7f2a('0x106'),'role':_0x47e943[_0x7f2a('0x27')],'internal':_0x47e943[_0x7f2a('0x5f')]});});return db[_0x7f2a('0xf9')][_0x7f2a('0x84')](_0x20039f,{'individualHooks':!![]});})[_0x7f2a('0x15')](function(){return _0x47e943[_0x7f2a('0x5a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x575e1f['body'][_0x7f2a('0x105')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x7f2a('0xfb'))});})[_0x7f2a('0x15')](respondWithResult(_0x16cd07,null))['catch'](handleError(_0x16cd07,null));};exports[_0x7f2a('0x107')]=function(_0x391715,_0x310329){if(_0x391715[_0x7f2a('0x5b')][_0x7f2a('0xae')]&&!utils[_0x7f2a('0x9e')](_0x391715[_0x7f2a('0x5b')]['channel'])){throw new APIBadRequestError(util[_0x7f2a('0xaa')](_0x7f2a('0x108'),_0x391715[_0x7f2a('0x5b')][_0x7f2a('0xae')]));}return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x391715['params']['id']},'attributes':['id',_0x7f2a('0x33'),'role','internal','interface',_0x7f2a('0x9c'),_0x7f2a('0x9d'),_0x7f2a('0x109'),_0x7f2a('0x10a'),_0x7f2a('0x10b'),'openchannelPause','smsPause',_0x7f2a('0x10c'),_0x7f2a('0x10d'),_0x7f2a('0x10e')]})['then'](function(_0x176ad9){if(!_0x176ad9){throw new APINotFoundError(util[_0x7f2a('0xaa')](_0x7f2a('0xc9'),_0x391715['params']['id']));}return _0x176ad9[_0x7f2a('0x107')](_0x391715[_0x7f2a('0x5b')]['channel']);})[_0x7f2a('0x15')](respondWithResult(_0x310329,null))[_0x7f2a('0x1e')](APIHandleError(_0x310329));};exports[_0x7f2a('0x10f')]=function(_0x54a573,_0x3ff5ab){var _0x24e006={};var _0x21641c={};var _0x349113;var _0x127d86;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x54a573[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3ff5ab,null))[_0x7f2a('0x15')](function(_0x2b92e6){if(_0x2b92e6){_0x349113=_0x2b92e6;_0x21641c['model']=_[_0x7f2a('0x4f')](db['Team']['rawAttributes']);_0x21641c['query']=_[_0x7f2a('0x4f')](_0x54a573[_0x7f2a('0x3e')]);_0x21641c[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x21641c['model'],_0x21641c[_0x7f2a('0x3e')]);_0x24e006[_0x7f2a('0x42')]=_['intersection'](_0x21641c[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x54a573[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x24e006['attributes']=_0x24e006[_0x7f2a('0x42')]['length']?_0x24e006[_0x7f2a('0x42')]:_0x21641c[_0x7f2a('0x54')];_0x24e006[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x54a573[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x24e006[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x54a573[_0x7f2a('0x3e')],_0x21641c['filters']));if(_0x54a573[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x24e006[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x24e006[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x24e006[_0x7f2a('0x42')],function(_0x2cc68e){var _0x2d9ac0={};_0x2d9ac0[_0x2cc68e]={'$like':'%'+_0x54a573[_0x7f2a('0x3e')]['filter']+'%'};return _0x2d9ac0;})});}_0x24e006=_['merge']({},_0x24e006,_0x54a573[_0x7f2a('0x57')]);return _0x349113[_0x7f2a('0x10f')](_0x24e006);}})['then'](function(_0x25cbb2){if(_0x25cbb2){_0x127d86=_0x25cbb2[_0x7f2a('0x46')];if(!_0x54a573[_0x7f2a('0x3e')]['hasOwnProperty'](_0x7f2a('0xd7'))){_0x24e006[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x54a573[_0x7f2a('0x3e')]['limit']);_0x24e006[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x54a573[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x349113[_0x7f2a('0x10f')](_0x24e006);}})['then'](function(_0x5b02e3){if(_0x5b02e3){return _0x5b02e3?{'count':_0x127d86,'rows':_0x5b02e3}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x3ff5ab,null))[_0x7f2a('0x1e')](handleError(_0x3ff5ab,null));};exports[_0x7f2a('0x110')]=function(_0x71850b,_0x23e7e0){var _0x11a570=_0x71850b[_0x7f2a('0x4e')]['id'];var _0x16d07c=_0x71850b['body']?_0x71850b[_0x7f2a('0x5b')]['ids']:null;var _0x2125bd=[];return Promise['resolve']()[_0x7f2a('0x15')](function(){if(!_0x16d07c)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x11a570}});})[_0x7f2a('0x15')](function(_0x2573f0){if(!_0x2573f0)throw new APINotFoundError(util[_0x7f2a('0xaa')](_0x7f2a('0xc9'),_0x71850b[_0x7f2a('0x4e')]['id']));return db[_0x7f2a('0x65')][_0x7f2a('0x111')](function(_0x2afc02){return _0x2573f0[_0x7f2a('0x110')](_0x16d07c,{'transaction':_0x2afc02})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x112')]['findAll']({'where':{'id':{'$in':_0x16d07c}}});})[_0x7f2a('0x15')](function(_0x3a25ce){var _0x4711d9=_[_0x7f2a('0x89')](_0x3a25ce,function(_0x4d8999){return _0x4d8999[_0x7f2a('0x113')]();});return Promise[_0x7f2a('0x4c')](_0x4711d9);})[_0x7f2a('0x15')](function(_0x47b1a1){_0x2125bd=_['flattenDeep'](_0x47b1a1);var _0x30a00f=_[_0x7f2a('0x89')](_0x2125bd,function(_0x441afb){return _0x441afb['addAgent'](_0x2573f0['id'],{'transaction':_0x2afc02});});return Promise['all'](_0x30a00f);})[_0x7f2a('0x15')](function(){if(!_0x2573f0[_0x7f2a('0x9c')])return;var _0x1c67e9=_[_0x7f2a('0x2f')](_0x2125bd,function(_0x3efe72){return _0x3efe72[_0x7f2a('0x114')](_0x7f2a('0xae'))===_0x7f2a('0x115');});var _0x7ab930=_[_0x7f2a('0x89')](_0x1c67e9,function(_0xdf7541){return db[_0x7f2a('0xac')][_0x7f2a('0x116')]({'membername':_0x2573f0['name'],'UserId':_0x2573f0['id'],'queue_name':_0xdf7541[_0x7f2a('0x33')],'VoiceQueueId':_0xdf7541['id'],'interface':_[_0x7f2a('0x64')](_0x2573f0[_0x7f2a('0xed')])?util[_0x7f2a('0xaa')](_0x7f2a('0xab'),_0x2573f0['name']):_0x2573f0[_0x7f2a('0xed')],'paused':_0x2573f0[_0x7f2a('0x9d')]||![],'penalty':_0x2573f0[_0x7f2a('0xa2')]},{'transaction':_0x2afc02});});return Promise[_0x7f2a('0x4c')](_0x7ab930);})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x117')][_0x7f2a('0x44')]({'where':{'teamId':{'$in':_0x16d07c}}});})[_0x7f2a('0x15')](function(_0x593a4f){var _0x57af8d=_['map'](_0x593a4f,function(_0x2290ae){return db[_0x7f2a('0x118')][_0x7f2a('0x7b')]({'UserId':_0x2573f0['id'],'VoicePrefixId':_0x2290ae['VoicePrefixId']},{'transaction':_0x2afc02});});return Promise[_0x7f2a('0x4c')](_0x57af8d);});});})['then'](function(){for(var _0x9184f=0x0;_0x9184f<_0x2125bd['length'];_0x9184f++){var _0xc8e2e8=_0x2125bd[_0x9184f]['getDataValue'](_0x7f2a('0xae'));var _0x16c07f=_0xc8e2e8+_0x7f2a('0xa6');socket[_0x7f2a('0x28')](_0x7f2a('0x2c')+_0xc8e2e8+_0x7f2a('0xa7'),{'UserId':_0x11a570,['queueField']:_0x2125bd[_0x9184f]['id']});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x23e7e0,null))[_0x7f2a('0x1e')](APIHandleError(_0x23e7e0));};exports[_0x7f2a('0x119')]=function(_0x464a7b,_0x595e41){var _0x430dac=_0x464a7b[_0x7f2a('0x4e')]['id'];var _0x5314e4=null;if(_0x464a7b[_0x7f2a('0x3e')][_0x7f2a('0x5e')]){_0x5314e4=_['isArray'](_0x464a7b[_0x7f2a('0x3e')][_0x7f2a('0x5e')])?_0x464a7b['query']['ids']:[_0x464a7b['query']['ids']];}var _0x32917f=[];return Promise['resolve']()[_0x7f2a('0x15')](function(){if(!_0x5314e4)throw new APIBadRequestError(_0x7f2a('0x11a'));})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x430dac}});})[_0x7f2a('0x15')](function(_0xa380b6){if(!_0xa380b6)throw new APINotFoundError(util[_0x7f2a('0xaa')](_0x7f2a('0xc9'),_0x464a7b[_0x7f2a('0x4e')]['id']));return db['sequelize']['transaction'](function(_0x4e4608){return _0xa380b6['removeTeams'](_0x5314e4,{'transaction':_0x4e4608})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x112')][_0x7f2a('0x44')]({'where':{'id':{'$in':_0x5314e4}}});})[_0x7f2a('0x15')](function(_0x41b852){var _0x359c83=_[_0x7f2a('0x89')](_0x41b852,function(_0x2824b7){return _0x2824b7[_0x7f2a('0x113')]();});return Promise['all'](_0x359c83);})['then'](function(_0x7f2d8e){_0x32917f=_[_0x7f2a('0x11b')](_0x7f2d8e);var _0x4b16c5=_[_0x7f2a('0x89')](_0x32917f,function(_0x32427f){return _0x32427f[_0x7f2a('0x11c')](_0xa380b6['id'],{'transaction':_0x4e4608});});return Promise[_0x7f2a('0x4c')](_0x4b16c5);})[_0x7f2a('0x15')](function(){if(!_0xa380b6[_0x7f2a('0x9c')])return;var _0x26a423=_[_0x7f2a('0x2f')](_0x32917f,function(_0x23cb2e){return _0x23cb2e[_0x7f2a('0x114')](_0x7f2a('0xae'))===_0x7f2a('0x115');});var _0x12603e=_[_0x7f2a('0x89')](_0x26a423,function(_0x369b67){return db[_0x7f2a('0xac')]['destroy']({'where':{'VoiceQueueId':_0x369b67['id'],'UserId':_0xa380b6['id']},'transaction':_0x4e4608});});return Promise['all'](_0x12603e);})[_0x7f2a('0x15')](function(){return db[_0x7f2a('0x117')][_0x7f2a('0x44')]({'where':{'teamId':{'$in':_0x5314e4}}});})['then'](function(_0x912a15){var _0x4b1fe0=_[_0x7f2a('0x89')](_0x912a15,function(_0x2285bc){return db[_0x7f2a('0x118')][_0x7f2a('0x2a')]({'where':{'UserId':_0xa380b6['id'],'VoicePrefixId':_0x2285bc[_0x7f2a('0x11d')]}},{'transaction':_0x4e4608});});return Promise[_0x7f2a('0x4c')](_0x4b1fe0);});});})[_0x7f2a('0x15')](function(){for(var _0x26fd23=0x0;_0x26fd23<_0x32917f['length'];_0x26fd23++){var _0x1fe4c6=_0x32917f[_0x26fd23][_0x7f2a('0x114')]('channel');var _0x17f584=_0x1fe4c6+'QueueId';socket[_0x7f2a('0x28')](_0x7f2a('0x2c')+_0x1fe4c6+_0x7f2a('0xb1'),{'UserId':_0x430dac,['queueField']:_0x32917f[_0x26fd23]['id']});}})['then'](respondWithStatusCode(_0x595e41,null))[_0x7f2a('0x1e')](APIHandleError(_0x595e41));};exports[_0x7f2a('0x11e')]=function(_0x4ee461,_0x2b422d){var _0x16b1b6={};var _0x2e7cac={};var _0x4aa9cd;var _0x4ec5e6;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x4ee461[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2b422d,null))[_0x7f2a('0x15')](function(_0x52ca95){if(_0x52ca95){_0x4aa9cd=_0x52ca95;_0x2e7cac[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0xcc')][_0x7f2a('0x38')]);_0x2e7cac['query']=_[_0x7f2a('0x4f')](_0x4ee461[_0x7f2a('0x3e')]);_0x2e7cac['filters']=_[_0x7f2a('0x53')](_0x2e7cac[_0x7f2a('0x54')],_0x2e7cac[_0x7f2a('0x3e')]);_0x16b1b6[_0x7f2a('0x42')]=_['intersection'](_0x2e7cac['model'],qs['fields'](_0x4ee461[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x16b1b6[_0x7f2a('0x42')]=_0x16b1b6[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x16b1b6[_0x7f2a('0x42')]:_0x2e7cac[_0x7f2a('0x54')];_0x16b1b6[_0x7f2a('0xd2')]=qs['sort'](_0x4ee461[_0x7f2a('0x3e')]['sort']);_0x16b1b6[_0x7f2a('0x3b')]=qs['filters'](_['pick'](_0x4ee461[_0x7f2a('0x3e')],_0x2e7cac['filters']));if(_0x4ee461['query'][_0x7f2a('0x2f')]){_0x16b1b6[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x16b1b6[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x16b1b6[_0x7f2a('0x42')],function(_0x569dee){var _0x523563={};_0x523563[_0x569dee]={'$like':'%'+_0x4ee461[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x523563;})});}_0x16b1b6=_[_0x7f2a('0x56')]({},_0x16b1b6,_0x4ee461['options']);return _0x4aa9cd['getLists'](_0x16b1b6);}})['then'](function(_0x462834){if(_0x462834){_0x4ec5e6=_0x462834['length'];if(!_0x4ee461['query']['hasOwnProperty']('nolimit')){_0x16b1b6[_0x7f2a('0x24')]=qs['limit'](_0x4ee461['query'][_0x7f2a('0x24')]);_0x16b1b6[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x4ee461[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x4aa9cd[_0x7f2a('0x11e')](_0x16b1b6);}})[_0x7f2a('0x15')](function(_0x30a981){if(_0x30a981){return _0x30a981?{'count':_0x4ec5e6,'rows':_0x30a981}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x2b422d,null))['catch'](handleError(_0x2b422d,null));};exports[_0x7f2a('0x11f')]=function(_0xe36f9e,_0x24b096){var _0x21bc07={};var _0x1132f8={};var _0x29030e;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0xe36f9e[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x24b096,null))[_0x7f2a('0x15')](function(_0x461f88){if(_0x461f88){_0x29030e=_0x461f88;_0x1132f8['model']=_[_0x7f2a('0x4f')](db[_0x7f2a('0x37')][_0x7f2a('0x38')]);_0x1132f8['query']=_[_0x7f2a('0x4f')](_0xe36f9e['query']);_0x1132f8[_0x7f2a('0x52')]=_['intersection'](_0x1132f8[_0x7f2a('0x54')],_0x1132f8[_0x7f2a('0x3e')]);_0x21bc07['attributes']=_['intersection'](_0x1132f8[_0x7f2a('0x54')],qs['fields'](_0xe36f9e['query'][_0x7f2a('0x55')]));_0x21bc07[_0x7f2a('0x42')]=_0x21bc07[_0x7f2a('0x42')]['length']?_0x21bc07['attributes']:_0x1132f8[_0x7f2a('0x54')];_0x21bc07[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0xe36f9e[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x21bc07[_0x7f2a('0x3b')]=qs['filters'](_[_0x7f2a('0xd4')](_0xe36f9e[_0x7f2a('0x3e')],_0x1132f8[_0x7f2a('0x52')]));if(_0xe36f9e['query'][_0x7f2a('0x2f')]){_0x21bc07[_0x7f2a('0x3b')]=_['merge'](_0x21bc07[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x21bc07[_0x7f2a('0x42')],function(_0xdb948f){var _0x4f3448={};_0x4f3448[_0xdb948f]={'$like':'%'+_0xe36f9e[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x4f3448;})});}_0x21bc07[_0x7f2a('0x54')]=db['User'];_0x21bc07['as']=_0x7f2a('0x88');_0x21bc07=_[_0x7f2a('0x56')]({},_0x21bc07,_0xe36f9e[_0x7f2a('0x57')]);return _0x29030e['getVoiceQueues']({'include':[_0x21bc07]});}})[_0x7f2a('0x15')](function(_0x5af1c7){if(_0x5af1c7){var _0x14e221={},_0x24cca4=[];for(var _0x2e6315=0x0;_0x2e6315<_0x5af1c7['length'];_0x2e6315+=0x1){for(var _0x147a96=0x0,_0x467d93;_0x147a96<_0x5af1c7[_0x2e6315]['Agents'][_0x7f2a('0x46')];_0x147a96+=0x1){_0x467d93=_0x5af1c7[_0x2e6315]['Agents'][_0x147a96]['get']({'plain':!![]});_0x14e221[_0x467d93['id']]=_0x467d93;}}_0x14e221=_[_0x7f2a('0x120')](_0x14e221);for(var _0x4a3cae=qs[_0x7f2a('0x22')](_0xe36f9e['query'][_0x7f2a('0x22')]);_0x4a3cae<_0x14e221[_0x7f2a('0x46')]&&_0x24cca4[_0x7f2a('0x46')]<qs[_0x7f2a('0x24')](_0xe36f9e[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x4a3cae+=0x1){if(_0x14e221[_0x4a3cae]){_0x24cca4[_0x7f2a('0x43')](_0x14e221[_0x4a3cae]);}}return{'count':_0x14e221[_0x7f2a('0x46')],'rows':_0x24cca4};}})[_0x7f2a('0x15')](respondWithResult(_0x24b096,null))[_0x7f2a('0x1e')](handleError(_0x24b096,null));};exports[_0x7f2a('0x2a')]=function(_0xa6ddba,_0x179a04){if(_0xa6ddba[_0x7f2a('0x2c')]['id']==_0xa6ddba['params']['id']){return _0x179a04['status'](0x1f4)['send']({'message':_0x7f2a('0x121')});}return db['User']['find']({'where':{'id':_0xa6ddba['params']['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x179a04,null))[_0x7f2a('0x15')](removeEntity(_0x179a04,null))['catch'](handleError(_0x179a04,null));};exports[_0x7f2a('0x122')]=function(_0x459f5e,_0x3eff99){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x459f5e[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x3eff99,null))[_0x7f2a('0x15')](function(_0xc14e9c){if(_0xc14e9c){return _0xc14e9c[_0x7f2a('0x122')](_0x459f5e[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x459f5e[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{})[_0x7f2a('0xa3')](function(){for(var _0x39ee77=0x0;_0x39ee77<_0x459f5e['body'][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x39ee77+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x124'),{'ChatInteractionId':Number(_0x459f5e[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x39ee77]),'UserId':Number(_0x459f5e[_0x7f2a('0x4e')]['id'])});}return _0x459f5e['body'][_0x7f2a('0x5e')];});}})['then'](respondWithResult(_0x3eff99,null))['catch'](handleError(_0x3eff99,null));};exports[_0x7f2a('0x125')]=function(_0x4061d1,_0x3a0627){return db['User']['find']({'where':{'id':_0x4061d1[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3a0627,null))['then'](function(_0x4326fe){if(_0x4326fe){return _0x4326fe['removeChatInteractions'](_0x4061d1[_0x7f2a('0x3e')][_0x7f2a('0x5e')])[_0x7f2a('0x15')](function(){if(_['isArray'](_0x4061d1[_0x7f2a('0x3e')][_0x7f2a('0x5e')])){for(var _0x5f3b77=0x0;_0x5f3b77<_0x4061d1[_0x7f2a('0x3e')]['ids'][_0x7f2a('0x46')];_0x5f3b77+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x126'),{'ChatInteractionId':Number(_0x4061d1['query'][_0x7f2a('0x5e')][_0x5f3b77]),'UserId':Number(_0x4061d1[_0x7f2a('0x4e')]['id'])});}}else{socket[_0x7f2a('0x28')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4061d1['query'][_0x7f2a('0x5e')]),'UserId':Number(_0x4061d1[_0x7f2a('0x4e')]['id'])});}});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x3a0627,null))['catch'](handleError(_0x3a0627,null));};exports[_0x7f2a('0x127')]=function(_0x3e083d,_0x3f04d0){return db[_0x7f2a('0x37')]['find']({'where':{'id':_0x3e083d[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3f04d0,null))[_0x7f2a('0x15')](function(_0x16ed75){if(_0x16ed75){return _0x16ed75[_0x7f2a('0x127')](_0x3e083d[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x3e083d['body'],['ids','id'])||{})[_0x7f2a('0xa3')](function(){for(var _0x2cabf2=0x0;_0x2cabf2<_0x3e083d[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x2cabf2+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x128'),{'MailInteractionId':Number(_0x3e083d[_0x7f2a('0x5b')]['ids'][_0x2cabf2]),'UserId':Number(_0x3e083d[_0x7f2a('0x4e')]['id'])});}return _0x3e083d[_0x7f2a('0x5b')][_0x7f2a('0x5e')];});}})[_0x7f2a('0x15')](respondWithResult(_0x3f04d0,null))[_0x7f2a('0x1e')](handleError(_0x3f04d0,null));};exports['removeMailInteractions']=function(_0x47c7b8,_0x4b4230){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x47c7b8[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x4b4230,null))[_0x7f2a('0x15')](function(_0x15e4e5){if(_0x15e4e5){return _0x15e4e5['removeMailInteractions'](_0x47c7b8[_0x7f2a('0x3e')][_0x7f2a('0x5e')])[_0x7f2a('0x15')](function(){if(_[_0x7f2a('0xb0')](_0x47c7b8[_0x7f2a('0x3e')]['ids'])){for(var _0x540ea7=0x0;_0x540ea7<_0x47c7b8[_0x7f2a('0x3e')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x540ea7+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x129'),{'MailInteractionId':Number(_0x47c7b8[_0x7f2a('0x3e')][_0x7f2a('0x5e')][_0x540ea7]),'UserId':Number(_0x47c7b8[_0x7f2a('0x4e')]['id'])});}}else{socket[_0x7f2a('0x28')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x47c7b8[_0x7f2a('0x3e')][_0x7f2a('0x5e')]),'UserId':Number(_0x47c7b8['params']['id'])});}});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x4b4230,null))[_0x7f2a('0x1e')](handleError(_0x4b4230,null));};exports[_0x7f2a('0x12a')]=function(_0x458d57,_0x3a05d2){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x458d57[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x3a05d2,null))['then'](function(_0x2fef0f){if(_0x2fef0f){return _0x2fef0f[_0x7f2a('0x12a')](_0x458d57['body'][_0x7f2a('0x5e')],_['omit'](_0x458d57[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{})[_0x7f2a('0xa3')](function(){for(var _0x2051d0=0x0;_0x2051d0<_0x458d57[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x2051d0+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x12b'),{'FaxInteractionId':Number(_0x458d57[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x2051d0]),'UserId':Number(_0x458d57[_0x7f2a('0x4e')]['id'])});}return _0x458d57[_0x7f2a('0x5b')][_0x7f2a('0x5e')];});}})['then'](respondWithResult(_0x3a05d2,null))['catch'](handleError(_0x3a05d2,null));};exports[_0x7f2a('0x12c')]=function(_0x1ce224,_0x4c0a6e){return db[_0x7f2a('0x37')]['find']({'where':{'id':_0x1ce224[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4c0a6e,null))[_0x7f2a('0x15')](function(_0x41a437){if(_0x41a437){return _0x41a437['removeFaxInteractions'](_0x1ce224[_0x7f2a('0x3e')][_0x7f2a('0x5e')])[_0x7f2a('0x15')](function(){if(_['isArray'](_0x1ce224[_0x7f2a('0x3e')][_0x7f2a('0x5e')])){for(var _0x59f13d=0x0;_0x59f13d<_0x1ce224['query'][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x59f13d+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x12d'),{'FaxInteractionId':Number(_0x1ce224['query'][_0x7f2a('0x5e')][_0x59f13d]),'UserId':Number(_0x1ce224[_0x7f2a('0x4e')]['id'])});}}else{socket['emit'](_0x7f2a('0x12d'),{'FaxInteractionId':Number(_0x1ce224['query']['ids']),'UserId':Number(_0x1ce224[_0x7f2a('0x4e')]['id'])});}});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x4c0a6e,null))['catch'](handleError(_0x4c0a6e,null));};exports[_0x7f2a('0x12e')]=function(_0x571bf2,_0x518702){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x571bf2['params']['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x518702,null))[_0x7f2a('0x15')](function(_0x255aea){if(_0x255aea){return _0x255aea[_0x7f2a('0x12e')](_0x571bf2[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_['omit'](_0x571bf2[_0x7f2a('0x5b')],['ids','id'])||{})[_0x7f2a('0xa3')](function(){for(var _0x51dd1a=0x0;_0x51dd1a<_0x571bf2[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x51dd1a+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x12f'),{'SmsInteractionId':Number(_0x571bf2[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x51dd1a]),'UserId':Number(_0x571bf2[_0x7f2a('0x4e')]['id'])});}return _0x571bf2[_0x7f2a('0x5b')][_0x7f2a('0x5e')];});}})['then'](respondWithResult(_0x518702,null))[_0x7f2a('0x1e')](handleError(_0x518702,null));};exports[_0x7f2a('0x130')]=function(_0x450e58,_0x2d9b83){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x450e58[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2d9b83,null))[_0x7f2a('0x15')](function(_0x3c8994){if(_0x3c8994){return _0x3c8994[_0x7f2a('0x130')](_0x450e58['query'][_0x7f2a('0x5e')])[_0x7f2a('0x15')](function(){if(_[_0x7f2a('0xb0')](_0x450e58[_0x7f2a('0x3e')][_0x7f2a('0x5e')])){for(var _0x15b2a9=0x0;_0x15b2a9<_0x450e58[_0x7f2a('0x3e')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x15b2a9+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x131'),{'SmsInteractionId':Number(_0x450e58['query']['ids'][_0x15b2a9]),'UserId':Number(_0x450e58[_0x7f2a('0x4e')]['id'])});}}else{socket[_0x7f2a('0x28')](_0x7f2a('0x131'),{'SmsInteractionId':Number(_0x450e58[_0x7f2a('0x3e')]['ids']),'UserId':Number(_0x450e58[_0x7f2a('0x4e')]['id'])});}});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x2d9b83,null))[_0x7f2a('0x1e')](handleError(_0x2d9b83,null));};exports['addOpenchannelInteractions']=function(_0x54dd7b,_0x6d9214){return db['User']['find']({'where':{'id':_0x54dd7b['params']['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x6d9214,null))[_0x7f2a('0x15')](function(_0x1987cb){if(_0x1987cb){return _0x1987cb[_0x7f2a('0x132')](_0x54dd7b['body'][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x54dd7b['body'],[_0x7f2a('0x5e'),'id'])||{})[_0x7f2a('0xa3')](function(){for(var _0xabe5e0=0x0;_0xabe5e0<_0x54dd7b[_0x7f2a('0x5b')]['ids'][_0x7f2a('0x46')];_0xabe5e0+=0x1){socket[_0x7f2a('0x28')](_0x7f2a('0x133'),{'OpenchannelInteractionId':Number(_0x54dd7b[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0xabe5e0]),'UserId':Number(_0x54dd7b['params']['id'])});}return _0x54dd7b['body'][_0x7f2a('0x5e')];});}})['then'](respondWithResult(_0x6d9214,null))[_0x7f2a('0x1e')](handleError(_0x6d9214,null));};exports['removeOpenchannelInteractions']=function(_0x2c1933,_0x2b71cc){return db[_0x7f2a('0x37')]['find']({'where':{'id':_0x2c1933[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2b71cc,null))['then'](function(_0x37d32e){if(_0x37d32e){return _0x37d32e['removeOpenchannelInteractions'](_0x2c1933['query']['ids'])['then'](function(){if(_[_0x7f2a('0xb0')](_0x2c1933[_0x7f2a('0x3e')][_0x7f2a('0x5e')])){for(var _0x4cc410=0x0;_0x4cc410<_0x2c1933[_0x7f2a('0x3e')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x4cc410+=0x1){socket['emit'](_0x7f2a('0x134'),{'OpenchannelInteractionId':Number(_0x2c1933[_0x7f2a('0x3e')][_0x7f2a('0x5e')][_0x4cc410]),'UserId':Number(_0x2c1933[_0x7f2a('0x4e')]['id'])});}}else{socket[_0x7f2a('0x28')](_0x7f2a('0x134'),{'OpenchannelInteractionId':Number(_0x2c1933[_0x7f2a('0x3e')][_0x7f2a('0x5e')]),'UserId':Number(_0x2c1933[_0x7f2a('0x4e')]['id'])});}});}})[_0x7f2a('0x15')](respondWithStatusCode(_0x2b71cc,null))[_0x7f2a('0x1e')](handleError(_0x2b71cc,null));};exports[_0x7f2a('0x135')]=function(_0x47fbab,_0x1ba620){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x47fbab[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x1ba620,null))[_0x7f2a('0x15')](function(_0x3db926){if(_0x3db926){return _0x3db926[_0x7f2a('0x135')](_0x47fbab[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_['omit'](_0x47fbab[_0x7f2a('0x5b')],['ids','id'])||{})[_0x7f2a('0xa3')](function(){for(var _0x15880d=0x0;_0x15880d<_0x47fbab[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x7f2a('0x46')];_0x15880d+=0x1){socket['emit'](_0x7f2a('0x136'),{'WhatsappInteractionId':Number(_0x47fbab[_0x7f2a('0x5b')][_0x7f2a('0x5e')][_0x15880d]),'UserId':Number(_0x47fbab['params']['id'])});}return _0x47fbab[_0x7f2a('0x5b')]['ids'];});}})[_0x7f2a('0x15')](respondWithResult(_0x1ba620,null))[_0x7f2a('0x1e')](handleError(_0x1ba620,null));};exports[_0x7f2a('0x137')]=function(_0x3ee0d4,_0x2d4c1d){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x3ee0d4[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2d4c1d,null))['then'](function(_0x3d293c){if(_0x3d293c){return _0x3d293c[_0x7f2a('0x137')](_0x3ee0d4['query']['ids']);}})[_0x7f2a('0x15')](respondWithStatusCode(_0x2d4c1d,null))[_0x7f2a('0x1e')](handleError(_0x2d4c1d,null));};exports['getVoicePrefixes']=function(_0x2d3fc8,_0x51c488){var _0x33be2c={};var _0x316b22={};var _0x45246e;var _0x2472ed;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x2d3fc8[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x51c488,null))[_0x7f2a('0x15')](function(_0x4e0869){if(_0x4e0869){_0x45246e=_0x4e0869;_0x316b22[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0x138')]['rawAttributes']);_0x316b22['query']=_[_0x7f2a('0x4f')](_0x2d3fc8[_0x7f2a('0x3e')]);_0x316b22[_0x7f2a('0x52')]=_['intersection'](_0x316b22[_0x7f2a('0x54')],_0x316b22[_0x7f2a('0x3e')]);_0x33be2c[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x316b22[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x2d3fc8['query'][_0x7f2a('0x55')]));_0x33be2c[_0x7f2a('0x42')]=_0x33be2c[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x33be2c[_0x7f2a('0x42')]:_0x316b22[_0x7f2a('0x54')];_0x33be2c[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x2d3fc8['query'][_0x7f2a('0xd3')]);_0x33be2c[_0x7f2a('0x3b')]=qs['filters'](_[_0x7f2a('0xd4')](_0x2d3fc8['query'],_0x316b22[_0x7f2a('0x52')]));if(_0x2d3fc8['query'][_0x7f2a('0x2f')]){_0x33be2c[_0x7f2a('0x3b')]=_['merge'](_0x33be2c[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x33be2c[_0x7f2a('0x42')],function(_0x1734aa){var _0xa2d7e9={};_0xa2d7e9[_0x1734aa]={'$like':'%'+_0x2d3fc8[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0xa2d7e9;})});}_0x33be2c=_[_0x7f2a('0x56')]({},_0x33be2c,_0x2d3fc8[_0x7f2a('0x57')]);return _0x45246e[_0x7f2a('0x139')](_0x33be2c);}})[_0x7f2a('0x15')](function(_0x1f78ce){if(_0x1f78ce){_0x2472ed=_0x1f78ce[_0x7f2a('0x46')];if(!_0x2d3fc8[_0x7f2a('0x3e')][_0x7f2a('0xcb')](_0x7f2a('0xd7'))){_0x33be2c['limit']=qs[_0x7f2a('0x24')](_0x2d3fc8[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x33be2c[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x2d3fc8[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x45246e[_0x7f2a('0x139')](_0x33be2c);}})['then'](function(_0x44aaa3){if(_0x44aaa3){return _0x44aaa3?{'count':_0x2472ed,'rows':_0x44aaa3}:null;}})['then'](respondWithResult(_0x51c488,null))[_0x7f2a('0x1e')](handleError(_0x51c488,null));};exports[_0x7f2a('0x13a')]=function(_0x3779c3,_0x111222){var _0x5c3f3e={};var _0x461824={};var _0x1ff215;var _0x3bb2dd;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x3779c3[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x111222,null))[_0x7f2a('0x15')](function(_0x161935){if(_0x161935){_0x1ff215=_0x161935;_0x461824['model']=_[_0x7f2a('0x4f')](db[_0x7f2a('0x13b')][_0x7f2a('0x38')]);_0x461824['query']=_['keys'](_0x3779c3[_0x7f2a('0x3e')]);_0x461824[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x461824[_0x7f2a('0x54')],_0x461824['query']);_0x5c3f3e[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x461824[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x3779c3[_0x7f2a('0x3e')]['fields']));_0x5c3f3e[_0x7f2a('0x42')]=_0x5c3f3e[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x5c3f3e[_0x7f2a('0x42')]:_0x461824['model'];_0x5c3f3e[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x3779c3[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x5c3f3e['where']=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x3779c3['query'],_0x461824['filters']));if(_0x3779c3['query'][_0x7f2a('0x2f')]){_0x5c3f3e[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x5c3f3e[_0x7f2a('0x3b')],{'$or':_['map'](_0x5c3f3e[_0x7f2a('0x42')],function(_0x29cd4e){var _0x469e36={};_0x469e36[_0x29cd4e]={'$like':'%'+_0x3779c3[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x469e36;})});}_0x5c3f3e=_[_0x7f2a('0x56')]({},_0x5c3f3e,_0x3779c3['options']);return _0x1ff215['getFaxAccounts'](_0x5c3f3e);}})[_0x7f2a('0x15')](function(_0x30a43d){if(_0x30a43d){_0x3bb2dd=_0x30a43d[_0x7f2a('0x46')];if(!_0x3779c3[_0x7f2a('0x3e')]['hasOwnProperty'](_0x7f2a('0xd7'))){_0x5c3f3e[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x3779c3[_0x7f2a('0x3e')]['limit']);_0x5c3f3e[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x3779c3[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x1ff215['getFaxAccounts'](_0x5c3f3e);}})[_0x7f2a('0x15')](function(_0x5a3bb4){if(_0x5a3bb4){return _0x5a3bb4?{'count':_0x3bb2dd,'rows':_0x5a3bb4}:null;}})['then'](respondWithResult(_0x111222,null))['catch'](handleError(_0x111222,null));};exports[_0x7f2a('0x13c')]=function(_0x33c4d9,_0x32a67a){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x33c4d9[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x32a67a,null))[_0x7f2a('0x15')](function(_0x513756){if(_0x513756){return _0x513756[_0x7f2a('0x13c')](_0x33c4d9[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x33c4d9[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x32a67a,null))[_0x7f2a('0x1e')](handleError(_0x32a67a,null));};exports[_0x7f2a('0x13d')]=function(_0x14e2e8,_0x413a54){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x14e2e8[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x413a54,null))[_0x7f2a('0x15')](function(_0x1c5cf1){if(_0x1c5cf1){return _0x1c5cf1['removeFaxAccounts'](_0x14e2e8[_0x7f2a('0x3e')][_0x7f2a('0x5e')]);}})[_0x7f2a('0x15')](respondWithStatusCode(_0x413a54,null))[_0x7f2a('0x1e')](handleError(_0x413a54,null));};exports[_0x7f2a('0x13e')]=function(_0xc4ad5,_0xd3fb97){var _0x4b0245={};var _0x4e1af9={};var _0x528c1c;var _0x5cfc68;return db['User'][_0x7f2a('0x95')]({'where':{'id':_0xc4ad5[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0xd3fb97,null))[_0x7f2a('0x15')](function(_0x16c216){if(_0x16c216){_0x528c1c=_0x16c216;_0x4e1af9[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db['MailAccount'][_0x7f2a('0x38')]);_0x4e1af9[_0x7f2a('0x3e')]=_['keys'](_0xc4ad5['query']);_0x4e1af9[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x4e1af9[_0x7f2a('0x54')],_0x4e1af9[_0x7f2a('0x3e')]);_0x4b0245[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x4e1af9['model'],qs[_0x7f2a('0x55')](_0xc4ad5[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x4b0245[_0x7f2a('0x42')]=_0x4b0245[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x4b0245[_0x7f2a('0x42')]:_0x4e1af9[_0x7f2a('0x54')];_0x4b0245[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0xc4ad5[_0x7f2a('0x3e')]['sort']);_0x4b0245['where']=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0xc4ad5['query'],_0x4e1af9[_0x7f2a('0x52')]));if(_0xc4ad5[_0x7f2a('0x3e')]['filter']){_0x4b0245[_0x7f2a('0x3b')]=_['merge'](_0x4b0245['where'],{'$or':_[_0x7f2a('0x89')](_0x4b0245[_0x7f2a('0x42')],function(_0x41aa8f){var _0x2d2ba6={};_0x2d2ba6[_0x41aa8f]={'$like':'%'+_0xc4ad5[_0x7f2a('0x3e')]['filter']+'%'};return _0x2d2ba6;})});}_0x4b0245=_[_0x7f2a('0x56')]({},_0x4b0245,_0xc4ad5[_0x7f2a('0x57')]);return _0x528c1c[_0x7f2a('0x13e')](_0x4b0245);}})[_0x7f2a('0x15')](function(_0x24cd1c){if(_0x24cd1c){_0x5cfc68=_0x24cd1c['length'];if(!_0xc4ad5['query']['hasOwnProperty'](_0x7f2a('0xd7'))){_0x4b0245[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0xc4ad5[_0x7f2a('0x3e')]['limit']);_0x4b0245['offset']=qs[_0x7f2a('0x22')](_0xc4ad5[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x528c1c[_0x7f2a('0x13e')](_0x4b0245);}})[_0x7f2a('0x15')](function(_0x46d943){if(_0x46d943){return _0x46d943?{'count':_0x5cfc68,'rows':_0x46d943}:null;}})[_0x7f2a('0x15')](respondWithResult(_0xd3fb97,null))['catch'](handleError(_0xd3fb97,null));};exports[_0x7f2a('0x13f')]=function(_0x23f03a,_0x58796a){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x23f03a[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x58796a,null))[_0x7f2a('0x15')](function(_0x40ec03){if(_0x40ec03){return _0x40ec03['addMailAccounts'](_0x23f03a[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_['omit'](_0x23f03a[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x58796a,null))['catch'](handleError(_0x58796a,null));};exports[_0x7f2a('0x140')]=function(_0x2997cf,_0x48a8d5){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x2997cf[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x48a8d5,null))[_0x7f2a('0x15')](function(_0x503a3d){if(_0x503a3d){return _0x503a3d['removeMailAccounts'](_0x2997cf[_0x7f2a('0x3e')]['ids']);}})[_0x7f2a('0x15')](respondWithStatusCode(_0x48a8d5,null))[_0x7f2a('0x1e')](handleError(_0x48a8d5,null));};exports[_0x7f2a('0x141')]=function(_0x3a4676,_0x380920){var _0x449d0c={};var _0x40c7f1={};var _0x39c010;var _0x229175;return db['User']['findOne']({'where':{'id':_0x3a4676['params']['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x380920,null))[_0x7f2a('0x15')](function(_0x29dfc6){if(_0x29dfc6){_0x39c010=_0x29dfc6;_0x40c7f1[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0x142')][_0x7f2a('0x38')]);_0x40c7f1[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x3a4676[_0x7f2a('0x3e')]);_0x40c7f1['filters']=_['intersection'](_0x40c7f1[_0x7f2a('0x54')],_0x40c7f1[_0x7f2a('0x3e')]);_0x449d0c['attributes']=_[_0x7f2a('0x53')](_0x40c7f1[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x3a4676[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x449d0c[_0x7f2a('0x42')]=_0x449d0c[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x449d0c[_0x7f2a('0x42')]:_0x40c7f1[_0x7f2a('0x54')];_0x449d0c['order']=qs[_0x7f2a('0xd3')](_0x3a4676['query'][_0x7f2a('0xd3')]);_0x449d0c[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x3a4676['query'],_0x40c7f1['filters']));if(_0x3a4676[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x449d0c[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x449d0c[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x449d0c[_0x7f2a('0x42')],function(_0x4be7f8){var _0x590e4f={};_0x590e4f[_0x4be7f8]={'$like':'%'+_0x3a4676['query'][_0x7f2a('0x2f')]+'%'};return _0x590e4f;})});}_0x449d0c=_[_0x7f2a('0x56')]({},_0x449d0c,_0x3a4676[_0x7f2a('0x57')]);return _0x39c010[_0x7f2a('0x141')](_0x449d0c);}})[_0x7f2a('0x15')](function(_0x1195f5){if(_0x1195f5){_0x229175=_0x1195f5['length'];if(!_0x3a4676[_0x7f2a('0x3e')]['hasOwnProperty'](_0x7f2a('0xd7'))){_0x449d0c[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x3a4676['query'][_0x7f2a('0x24')]);_0x449d0c['offset']=qs[_0x7f2a('0x22')](_0x3a4676[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x39c010['getOpenchannelAccounts'](_0x449d0c);}})['then'](function(_0x4bbfe3){if(_0x4bbfe3){return _0x4bbfe3?{'count':_0x229175,'rows':_0x4bbfe3}:null;}})['then'](respondWithResult(_0x380920,null))[_0x7f2a('0x1e')](handleError(_0x380920,null));};exports[_0x7f2a('0x143')]=function(_0x3ba628,_0x3f169a){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x3ba628[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x3f169a,null))['then'](function(_0xfdf016){if(_0xfdf016){return _0xfdf016[_0x7f2a('0x143')](_0x3ba628['body'][_0x7f2a('0x5e')],_['omit'](_0x3ba628['body'],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x3f169a,null))[_0x7f2a('0x1e')](handleError(_0x3f169a,null));};exports[_0x7f2a('0x144')]=function(_0xb7d465,_0x2244c0){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0xb7d465[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x2244c0,null))[_0x7f2a('0x15')](function(_0x14a900){if(_0x14a900){return _0x14a900[_0x7f2a('0x144')](_0xb7d465[_0x7f2a('0x3e')]['ids']);}})['then'](respondWithStatusCode(_0x2244c0,null))[_0x7f2a('0x1e')](handleError(_0x2244c0,null));};exports[_0x7f2a('0x145')]=function(_0x2b52f1,_0x8388e0){var _0x53adb5={};var _0x1abdb9={};var _0x49f85a;var _0x4b8c9a;return db[_0x7f2a('0x37')]['findOne']({'where':{'id':_0x2b52f1[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x8388e0,null))['then'](function(_0x250df8){if(_0x250df8){_0x49f85a=_0x250df8;_0x1abdb9[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0x146')]['rawAttributes']);_0x1abdb9['query']=_['keys'](_0x2b52f1[_0x7f2a('0x3e')]);_0x1abdb9[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x1abdb9[_0x7f2a('0x54')],_0x1abdb9[_0x7f2a('0x3e')]);_0x53adb5[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x1abdb9[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x2b52f1[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x53adb5['attributes']=_0x53adb5[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x53adb5[_0x7f2a('0x42')]:_0x1abdb9[_0x7f2a('0x54')];_0x53adb5[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x2b52f1['query'][_0x7f2a('0xd3')]);_0x53adb5[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_['pick'](_0x2b52f1[_0x7f2a('0x3e')],_0x1abdb9[_0x7f2a('0x52')]));if(_0x2b52f1[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0x53adb5['where']=_[_0x7f2a('0x56')](_0x53adb5['where'],{'$or':_[_0x7f2a('0x89')](_0x53adb5['attributes'],function(_0x510491){var _0xa8b1c1={};_0xa8b1c1[_0x510491]={'$like':'%'+_0x2b52f1[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0xa8b1c1;})});}_0x53adb5=_[_0x7f2a('0x56')]({},_0x53adb5,_0x2b52f1['options']);return _0x49f85a['getSmsAccounts'](_0x53adb5);}})[_0x7f2a('0x15')](function(_0x40c39f){if(_0x40c39f){_0x4b8c9a=_0x40c39f[_0x7f2a('0x46')];if(!_0x2b52f1['query'][_0x7f2a('0xcb')]('nolimit')){_0x53adb5[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x2b52f1[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x53adb5['offset']=qs[_0x7f2a('0x22')](_0x2b52f1[_0x7f2a('0x3e')]['offset']);}return _0x49f85a[_0x7f2a('0x145')](_0x53adb5);}})[_0x7f2a('0x15')](function(_0x940a69){if(_0x940a69){return _0x940a69?{'count':_0x4b8c9a,'rows':_0x940a69}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x8388e0,null))[_0x7f2a('0x1e')](handleError(_0x8388e0,null));};exports['addSmsAccounts']=function(_0x5ebb1e,_0x3143e4){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x5ebb1e[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x3143e4,null))[_0x7f2a('0x15')](function(_0x514f0f){if(_0x514f0f){return _0x514f0f['addSmsAccounts'](_0x5ebb1e[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x5ebb1e[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x3143e4,null))[_0x7f2a('0x1e')](handleError(_0x3143e4,null));};exports[_0x7f2a('0x147')]=function(_0x401860,_0xa2fb42){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x401860[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa2fb42,null))['then'](function(_0x136dbf){if(_0x136dbf){return _0x136dbf[_0x7f2a('0x147')](_0x401860[_0x7f2a('0x3e')][_0x7f2a('0x5e')]);}})[_0x7f2a('0x15')](respondWithStatusCode(_0xa2fb42,null))['catch'](handleError(_0xa2fb42,null));};exports[_0x7f2a('0x148')]=function(_0x5a8917,_0x72ecc5){var _0x1e08b7={};var _0x44730f={};var _0x1e6d2a;var _0x2aa3a4;return db['User'][_0x7f2a('0x95')]({'where':{'id':_0x5a8917[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x72ecc5,null))[_0x7f2a('0x15')](function(_0x323814){if(_0x323814){_0x1e6d2a=_0x323814;_0x44730f['model']=_[_0x7f2a('0x4f')](db['ChatWebsite'][_0x7f2a('0x38')]);_0x44730f[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x5a8917[_0x7f2a('0x3e')]);_0x44730f[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x44730f['model'],_0x44730f[_0x7f2a('0x3e')]);_0x1e08b7[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x44730f[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x5a8917[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0x1e08b7[_0x7f2a('0x42')]=_0x1e08b7[_0x7f2a('0x42')]['length']?_0x1e08b7['attributes']:_0x44730f['model'];_0x1e08b7['order']=qs[_0x7f2a('0xd3')](_0x5a8917[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x1e08b7[_0x7f2a('0x3b')]=qs['filters'](_['pick'](_0x5a8917[_0x7f2a('0x3e')],_0x44730f[_0x7f2a('0x52')]));if(_0x5a8917[_0x7f2a('0x3e')]['filter']){_0x1e08b7[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0x1e08b7[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x1e08b7['attributes'],function(_0x328c5d){var _0x4993a8={};_0x4993a8[_0x328c5d]={'$like':'%'+_0x5a8917[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x4993a8;})});}_0x1e08b7=_[_0x7f2a('0x56')]({},_0x1e08b7,_0x5a8917[_0x7f2a('0x57')]);return _0x1e6d2a['getChatWebsites'](_0x1e08b7);}})[_0x7f2a('0x15')](function(_0x3fe386){if(_0x3fe386){_0x2aa3a4=_0x3fe386[_0x7f2a('0x46')];if(!_0x5a8917['query'][_0x7f2a('0xcb')]('nolimit')){_0x1e08b7['limit']=qs[_0x7f2a('0x24')](_0x5a8917[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x1e08b7[_0x7f2a('0x22')]=qs['offset'](_0x5a8917[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x1e6d2a[_0x7f2a('0x148')](_0x1e08b7);}})[_0x7f2a('0x15')](function(_0x464d4c){if(_0x464d4c){return _0x464d4c?{'count':_0x2aa3a4,'rows':_0x464d4c}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x72ecc5,null))['catch'](handleError(_0x72ecc5,null));};exports[_0x7f2a('0x149')]=function(_0x2b5590,_0x34180b){return db['User']['find']({'where':{'id':_0x2b5590[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x34180b,null))[_0x7f2a('0x15')](function(_0x214991){if(_0x214991){return _0x214991[_0x7f2a('0x149')](_0x2b5590[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x2b5590[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x34180b,null))[_0x7f2a('0x1e')](handleError(_0x34180b,null));};exports[_0x7f2a('0x14a')]=function(_0x5cf9be,_0x558018){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x5cf9be[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x558018,null))[_0x7f2a('0x15')](function(_0x51ad11){if(_0x51ad11){return _0x51ad11[_0x7f2a('0x14a')](_0x5cf9be[_0x7f2a('0x3e')][_0x7f2a('0x5e')]);}})[_0x7f2a('0x15')](respondWithStatusCode(_0x558018,null))[_0x7f2a('0x1e')](handleError(_0x558018,null));};exports[_0x7f2a('0x14b')]=function(_0x4b5edf,_0x56b132){var _0x5f48f1={};var _0x236c49={};var _0x445900;var _0x47234e;return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x4b5edf[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x56b132,null))[_0x7f2a('0x15')](function(_0x35e455){if(_0x35e455){_0x445900=_0x35e455;_0x236c49[_0x7f2a('0x54')]=_[_0x7f2a('0x4f')](db[_0x7f2a('0x14c')][_0x7f2a('0x38')]);_0x236c49[_0x7f2a('0x3e')]=_[_0x7f2a('0x4f')](_0x4b5edf[_0x7f2a('0x3e')]);_0x236c49[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x236c49[_0x7f2a('0x54')],_0x236c49[_0x7f2a('0x3e')]);_0x5f48f1[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x236c49[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x4b5edf['query'][_0x7f2a('0x55')]));_0x5f48f1[_0x7f2a('0x42')]=_0x5f48f1[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0x5f48f1[_0x7f2a('0x42')]:_0x236c49['model'];_0x5f48f1[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x4b5edf[_0x7f2a('0x3e')][_0x7f2a('0xd3')]);_0x5f48f1[_0x7f2a('0x3b')]=qs['filters'](_[_0x7f2a('0xd4')](_0x4b5edf[_0x7f2a('0x3e')],_0x236c49['filters']));if(_0x4b5edf[_0x7f2a('0x3e')]['filter']){_0x5f48f1['where']=_['merge'](_0x5f48f1[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0x5f48f1[_0x7f2a('0x42')],function(_0x543614){var _0xdb554d={};_0xdb554d[_0x543614]={'$like':'%'+_0x4b5edf[_0x7f2a('0x3e')]['filter']+'%'};return _0xdb554d;})});}_0x5f48f1=_['merge']({},_0x5f48f1,_0x4b5edf[_0x7f2a('0x57')]);return _0x445900['getWhatsappAccounts'](_0x5f48f1);}})['then'](function(_0x29e764){if(_0x29e764){_0x47234e=_0x29e764['length'];if(!_0x4b5edf[_0x7f2a('0x3e')]['hasOwnProperty'](_0x7f2a('0xd7'))){_0x5f48f1[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x4b5edf[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0x5f48f1[_0x7f2a('0x22')]=qs['offset'](_0x4b5edf[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}return _0x445900['getWhatsappAccounts'](_0x5f48f1);}})[_0x7f2a('0x15')](function(_0xb01e99){if(_0xb01e99){return _0xb01e99?{'count':_0x47234e,'rows':_0xb01e99}:null;}})[_0x7f2a('0x15')](respondWithResult(_0x56b132,null))[_0x7f2a('0x1e')](handleError(_0x56b132,null));};exports[_0x7f2a('0x14d')]=function(_0x1bb1fd,_0x4e06d0){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x1bb1fd[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x4e06d0,null))[_0x7f2a('0x15')](function(_0x1e8ebb){if(_0x1e8ebb){return _0x1e8ebb['addWhatsappAccounts'](_0x1bb1fd[_0x7f2a('0x5b')][_0x7f2a('0x5e')],_[_0x7f2a('0x123')](_0x1bb1fd[_0x7f2a('0x5b')],[_0x7f2a('0x5e'),'id'])||{});}})[_0x7f2a('0x15')](respondWithResult(_0x4e06d0,null))['catch'](handleError(_0x4e06d0,null));};exports[_0x7f2a('0x14e')]=function(_0x6a6977,_0x313a8d){return db['User'][_0x7f2a('0x31')]({'where':{'id':_0x6a6977[_0x7f2a('0x4e')]['id']}})['then'](handleEntityNotFound(_0x313a8d,null))['then'](function(_0x472f0a){if(_0x472f0a){return _0x472f0a['removeWhatsappAccounts'](_0x6a6977[_0x7f2a('0x3e')][_0x7f2a('0x5e')]);}})[_0x7f2a('0x15')](respondWithStatusCode(_0x313a8d,null))[_0x7f2a('0x1e')](handleError(_0x313a8d,null));};exports[_0x7f2a('0x14f')]=function(_0x181f1d,_0x3bc652){var _0xd17384={},_0x393a64={},_0x3e704a={'count':0x0,'rows':[]};var _0x49c266=db[_0x7f2a('0x150')]['rawAttributes'];_0x393a64[_0x7f2a('0x54')]=_['keys'](_0x49c266);_0x393a64['query']=_[_0x7f2a('0x4f')](_0x181f1d[_0x7f2a('0x3e')]);_0x393a64[_0x7f2a('0x52')]=_[_0x7f2a('0x53')](_0x393a64[_0x7f2a('0x54')],_0x393a64[_0x7f2a('0x3e')]);_0x393a64['filters']=_[_0x7f2a('0x100')](_0x393a64[_0x7f2a('0x52')],[_0x7f2a('0x151'),_0x7f2a('0x152'),'$gt','$gte',_0x7f2a('0x153'),'$lte',_0x7f2a('0x154'),_0x7f2a('0x155'),_0x7f2a('0x156'),_0x7f2a('0x157'),'$notBetween','$in','$notIn',_0x7f2a('0x158'),_0x7f2a('0x159'),_0x7f2a('0x15a'),_0x7f2a('0x15b'),_0x7f2a('0x158'),_0x7f2a('0x15c'),_0x7f2a('0x15d'),_0x7f2a('0x15e'),_0x7f2a('0x15f')]);_0xd17384[_0x7f2a('0x42')]=_[_0x7f2a('0x53')](_0x393a64[_0x7f2a('0x54')],qs[_0x7f2a('0x55')](_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x55')]));_0xd17384[_0x7f2a('0x42')]=_0xd17384[_0x7f2a('0x42')][_0x7f2a('0x46')]?_0xd17384[_0x7f2a('0x42')]:_0x393a64[_0x7f2a('0x54')];if(!_0x181f1d[_0x7f2a('0x3e')]['hasOwnProperty'](_0x7f2a('0xd7'))){_0xd17384[_0x7f2a('0x24')]=qs[_0x7f2a('0x24')](_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x24')]);_0xd17384[_0x7f2a('0x22')]=qs[_0x7f2a('0x22')](_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}_0xd17384[_0x7f2a('0xd2')]=qs[_0x7f2a('0xd3')](_0x181f1d['query']['sort']);_0xd17384[_0x7f2a('0x3b')]=qs[_0x7f2a('0x52')](_[_0x7f2a('0xd4')](_0x181f1d[_0x7f2a('0x3e')],_0x393a64['filters']));if(_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x2f')]){_0xd17384[_0x7f2a('0x3b')]=_[_0x7f2a('0x56')](_0xd17384[_0x7f2a('0x3b')],{'$or':_[_0x7f2a('0x89')](_0xd17384[_0x7f2a('0x42')],function(_0x407154){var _0x2775ea={};_0x2775ea[_0x407154]={'$like':'%'+_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'};return _0x2775ea;})});}_0xd17384[_0x7f2a('0x3b')]={'$and':[_0xd17384[_0x7f2a('0x3b')],{'$or':[{'UserId':_0x181f1d['params']['id']},{'OwnerId':_0x181f1d[_0x7f2a('0x4e')]['id']}]}]};_0xd17384=_[_0x7f2a('0x56')]({},_0xd17384,_0x181f1d[_0x7f2a('0x57')]);var _0x6eb16a={'where':_0xd17384['where']};return db[_0x7f2a('0x150')][_0x7f2a('0x25')](_0x6eb16a)[_0x7f2a('0x15')](function(_0x4f20ee){_0x3e704a[_0x7f2a('0x25')]=_0x4f20ee;if(_0x181f1d[_0x7f2a('0x3e')][_0x7f2a('0x3c')]){_0xd17384[_0x7f2a('0x3d')]=[{'attributes':['id','firstName',_0x7f2a('0x160'),_0x7f2a('0x161')],'model':db[_0x7f2a('0x162')],'as':'Contact'},{'attributes':['id',_0x7f2a('0x33'),_0x7f2a('0x163')],'model':db['VoiceQueue'],'as':_0x7f2a('0xd1')}];}return db[_0x7f2a('0x150')]['findAll'](_0xd17384);})[_0x7f2a('0x15')](function(_0x1362de){_0x3e704a[_0x7f2a('0x45')]=_0x1362de;return _0x3e704a;})[_0x7f2a('0x15')](respondWithFilteredResult(_0x3bc652,_0xd17384))[_0x7f2a('0x1e')](handleError(_0x3bc652,null));};exports[_0x7f2a('0x164')]=function(_0x460459,_0x1abe4b){if(!_[_0x7f2a('0x64')](_0x460459[_0x7f2a('0x2c')]['id'])&&(_0x460459['user'][_0x7f2a('0x27')]=='admin'||_0x460459[_0x7f2a('0x2c')][_0x7f2a('0x27')]==_0x7f2a('0x2c'))){return db[_0x7f2a('0x37')][_0x7f2a('0x95')]({'where':{'id':_0x460459[_0x7f2a('0x4e')]['id']},'raw':!![]})[_0x7f2a('0x15')](function(_0x309899){return authService[_0x7f2a('0x165')](_0x309899);})[_0x7f2a('0x15')](function(_0x2f0e45){if(_0x2f0e45){return _0x1abe4b[_0x7f2a('0x20')](0xc8)[_0x7f2a('0x21')]({'api_key':_0x2f0e45[_0x7f2a('0x166')]});}else{return _0x1abe4b['status'](0xcc)[_0x7f2a('0x21')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x7f2a('0x1e')](handleError(_0x1abe4b,0x193));}else{return _0x1abe4b[_0x7f2a('0x20')](0x191)[_0x7f2a('0x21')]({'message':_0x7f2a('0x167')});}};exports[_0x7f2a('0x168')]=function(_0x1c92dc,_0x4b60f8){if(!_[_0x7f2a('0x64')](_0x1c92dc['user']['id'])&&(_0x1c92dc['user'][_0x7f2a('0x27')]==_0x7f2a('0x7d')||_0x1c92dc[_0x7f2a('0x2c')][_0x7f2a('0x27')]==_0x7f2a('0x2c'))){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0x1c92dc['params']['id']}})[_0x7f2a('0x15')](function(_0xee6a5c){return authService['generateApiKey'](_0xee6a5c);})['then'](function(_0x519e3e){return db[_0x7f2a('0x37')][_0x7f2a('0x5a')]({'apiKeyIat':_0x519e3e[_0x7f2a('0x169')],'apiKeyNonce':_0x519e3e[_0x7f2a('0x16a')]},{'where':{'id':_0x1c92dc[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](function(){return _0x4b60f8[_0x7f2a('0x20')](0xc8)[_0x7f2a('0x21')]({'api_key':_0x519e3e[_0x7f2a('0x166')]});});})[_0x7f2a('0x1e')](handleError(_0x4b60f8,0x193));}else{return _0x4b60f8[_0x7f2a('0x20')](0x191)[_0x7f2a('0x21')]({'message':_0x7f2a('0x167')});}};exports[_0x7f2a('0x16b')]=function(_0xfa69e9,_0x174bc){if(!_[_0x7f2a('0x64')](_0xfa69e9[_0x7f2a('0x2c')]['id'])&&(_0xfa69e9[_0x7f2a('0x2c')][_0x7f2a('0x27')]=='admin'||_0xfa69e9[_0x7f2a('0x2c')]['role']==_0x7f2a('0x2c'))){return db[_0x7f2a('0x37')][_0x7f2a('0x31')]({'where':{'id':_0xfa69e9[_0x7f2a('0x4e')]['id']}})[_0x7f2a('0x15')](handleEntityNotFound(_0x174bc,null))['then'](function(_0x148de2){if(_0x148de2&&_0x148de2[_0x7f2a('0x16c')]&&_0x148de2[_0x7f2a('0x16d')])return _0x148de2;else throw{'message':'API\x20key\x20not\x20available'};})['then'](function(){return db[_0x7f2a('0x37')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0xfa69e9[_0x7f2a('0x4e')]['id']}});})[_0x7f2a('0x15')](respondWithStatusCode(_0x174bc,0xc8))[_0x7f2a('0x1e')](handleError(_0x174bc,0x193));}else{return _0x174bc[_0x7f2a('0x20')](0x191)[_0x7f2a('0x21')]({'message':_0x7f2a('0x167')});}};exports[_0x7f2a('0x16e')]=function(_0x14a4c8,_0x5e4ce8){var _0x486b70=_0x14a4c8['user'][_0x7f2a('0xa9')]({'plain':!![]});if(!_0x486b70){return _0x5e4ce8[_0x7f2a('0x20')](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{Promise[_0x7f2a('0x101')]()[_0x7f2a('0x15')](function(){if(_0x14a4c8[_0x7f2a('0x3e')]['userSetting']!==_0x7f2a('0x40'))return;return _0x14a4c8['user'][_0x7f2a('0x16f')]();})[_0x7f2a('0x15')](function(_0x1965e6){if(!_0x1965e6)return;return _0x1965e6[_0x7f2a('0xa9')]({'plain':!![]});})[_0x7f2a('0x15')](function(_0xbe331c){_0x486b70[_0x7f2a('0x3f')]=_0xbe331c;return _0x5e4ce8['status'](0xc8)[_0x7f2a('0x21')](_0x486b70);});}};exports[_0x7f2a('0x170')]=function(_0x58b5b5,_0x46f805){var _0x29f71c={'offset':0x0},_0x415f15={'count':0x0,'rows':[]};Promise[_0x7f2a('0x101')]()['then'](function(){if(!_0x58b5b5['query']['filter']&&!_0x58b5b5['query']['teams']&&!_0x58b5b5['query'][_0x7f2a('0x171')])return[];return Promise['resolve']()[_0x7f2a('0x15')](function(){var _0x20d74c=[];if(!_[_0x7f2a('0x172')](_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x173')])){_0x20d74c[_0x7f2a('0x43')](db[_0x7f2a('0x112')][_0x7f2a('0x44')]({'attributes':['id','name'],'where':{'id':_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x173')]}}));}if(!_[_0x7f2a('0x172')](_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x171')])){_0x20d74c[_0x7f2a('0x43')](db[_0x7f2a('0x174')][_0x7f2a('0x44')]({'attributes':['id',_0x7f2a('0x33')],'type':_0x7f2a('0x175'),'where':{'id':_0x58b5b5['query'][_0x7f2a('0x171')]}}));}return Promise['all'](_0x20d74c);})[_0x7f2a('0x15')](function(_0x2bbd31){var _0x2f9e88=_['flatten'](_0x2bbd31)['map'](function(_0x420891){return _0x420891[_0x7f2a('0x11f')]({'attributes':['id','name',_0x7f2a('0x5f'),_0x7f2a('0x9c')],'raw':!![]});});return Promise[_0x7f2a('0x4c')](_0x2f9e88);})[_0x7f2a('0x15')](function(_0x3aa992){var _0x13b134=_[_0x7f2a('0x176')](_0x3aa992);if(!_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x2f')])return _0x13b134;if(_['isEmpty'](_0x13b134)){return db[_0x7f2a('0x37')][_0x7f2a('0x44')]({'attributes':['id',_0x7f2a('0x33'),'internal',_0x7f2a('0x9c')],'where':{'role':_0x7f2a('0x2d'),'$or':[db['sequelize'][_0x7f2a('0x3b')](db[_0x7f2a('0x65')]['fn'](_0x7f2a('0x177'),db[_0x7f2a('0x65')][_0x7f2a('0x178')](_0x7f2a('0x33'))),{'$like':'%'+_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x2f')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x2f')]+'%'}}]},'raw':!![]});}else{return _(_0x13b134)[_0x7f2a('0x176')]()[_0x7f2a('0x2f')](function(_0x2dd518){return _0x2dd518['name'][_0x7f2a('0xa5')]()[_0x7f2a('0x30')](_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x2f')]['toLowerCase']())||_0x2dd518[_0x7f2a('0x5f')][_0x7f2a('0x179')]()[_0x7f2a('0x30')](_0x58b5b5[_0x7f2a('0x3e')]['filter']);})[_0x7f2a('0x32')]();}})['then'](function(_0x1a2818){var _0x30098b=_0x7f2a('0x33');var _0xa534ac='asc';if(_0x58b5b5['query'][_0x7f2a('0xd3')]){_0xa534ac=_0x58b5b5[_0x7f2a('0x3e')]['sort'][0x0]==='-'?'desc':_0x7f2a('0x17a');_0x30098b=_0xa534ac===_0x7f2a('0x17a')?_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0xd3')]:_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0xd3')]['substring'](0x1);}return _(_0x1a2818)[_0x7f2a('0x17b')]('id')[_0x7f2a('0x17c')]([function(_0x451ddf){return _0x30098b===_0x7f2a('0x33')?_0x451ddf[_0x30098b][_0x7f2a('0xa5')]():_0x451ddf[_0x30098b];}],[_0xa534ac])[_0x7f2a('0x89')](function(_0x273798){return _[_0x7f2a('0xd4')](_0x273798,['id',_0x7f2a('0x33'),_0x7f2a('0x5f'),_0x7f2a('0x9c')]);})['value']();})[_0x7f2a('0x15')](function(_0x3b2a91){return amiClient[_0x7f2a('0x14')](_0x7f2a('0x88'),_0x58b5b5)[_0x7f2a('0x15')](function(_0x43c44e){if(_0x43c44e[_0x7f2a('0x1a')])throw new Error(_0x7f2a('0x17d'));var _0x30a84a=_0x43c44e['result'];var _0x3652af=jayson[_0x7f2a('0x13')]['http']({'port':0x232c});return _0x3652af[_0x7f2a('0x14')]('Agents',_0x58b5b5)[_0x7f2a('0x15')](function(_0x12beb1){if(_0x12beb1['error'])throw new Error(_0x7f2a('0x17e'));var _0x184cb3=_0x12beb1[_0x7f2a('0x1d')];return _[_0x7f2a('0x56')]({},_0x184cb3,_0x30a84a);});})[_0x7f2a('0x15')](function(_0x281ab4){return _[_0x7f2a('0x89')](_0x3b2a91,function(_0x5ebb18){var _0x4c96b5=_[_0x7f2a('0x31')](_0x281ab4[_0x7f2a('0x45')],['id',_0x5ebb18['id']]);if(!_0x4c96b5||!_0x5ebb18[_0x7f2a('0x9c')]){_0x5ebb18['status']='offline';}else if(_0x4c96b5[_0x7f2a('0x9d')]){_0x5ebb18[_0x7f2a('0x20')]=_0x7f2a('0x102');}else{_0x5ebb18['status']=_[_0x7f2a('0x30')]([_0x7f2a('0x17f'),'unknown',_0x7f2a('0x180'),'ringing',null,undefined],_0x4c96b5[_0x7f2a('0x181')])?_0x7f2a('0x9c'):'busy';}return _0x5ebb18;});});});})[_0x7f2a('0x15')](function(_0x3b33f9){if(!_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0xcb')]('nolimit')){_0x29f71c[_0x7f2a('0x24')]=qs['limit'](_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x24')]||0xa);_0x29f71c[_0x7f2a('0x22')]=qs['offset'](_0x58b5b5[_0x7f2a('0x3e')][_0x7f2a('0x22')]);}_0x415f15[_0x7f2a('0x25')]=_0x3b33f9[_0x7f2a('0x46')];_0x415f15[_0x7f2a('0x45')]=_0x29f71c['limit']?_0x3b33f9[_0x7f2a('0x182')](_0x29f71c[_0x7f2a('0x22')],_0x29f71c[_0x7f2a('0x22')]+_0x29f71c[_0x7f2a('0x24')]):_0x3b33f9;return _0x415f15;})[_0x7f2a('0x15')](respondWithFilteredResult(_0x46f805,_0x29f71c))[_0x7f2a('0x1e')](handleError(_0x46f805,null));};function get_open_tabs(_0x16bc5b,_0x239735){var _0x2b0d26=_0x16bc5b[_0x7f2a('0x183')](0x0)[_0x7f2a('0x184')]()+_0x16bc5b[_0x7f2a('0x182')](0x1);var _0x2ee281={'type':db['Sequelize'][_0x7f2a('0x66')]['SELECT'],'raw':!![]};return new Promise(function(_0x2d8f20,_0x3edf11){var _0x35b421=squel[_0x7f2a('0x185')]()[_0x7f2a('0x186')]('ui.'+_0x2b0d26+'InteractionId','id')[_0x7f2a('0x186')](_0x7f2a('0x187'))['from'](_0x7f2a('0x188')+_0x16bc5b+'_interactions','ui')['where'](_0x7f2a('0x189'),_0x239735['id']);return db[_0x7f2a('0x65')][_0x7f2a('0x3e')](_0x35b421[_0x7f2a('0x179')](),_0x2ee281)['then'](function(_0x5edfdf){_0x239735[_0x2b0d26+_0x7f2a('0x18a')]=_0x5edfdf;_0x2d8f20(_0x5edfdf);})['catch'](function(_0x16a4df){_0x3edf11(_0x16a4df);});});}
\ No newline at end of file
index 860a17a..55f7680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f2e=['hasOwnProperty','hook','exports','events','User','setMaxListeners','save','remove','emit'];(function(_0x43f129,_0x2f0cca){var _0x50e969=function(_0x44776a){while(--_0x44776a){_0x43f129['push'](_0x43f129['shift']());}};_0x50e969(++_0x2f0cca);}(_0x9f2e,0x12c));var _0xe9f2=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9f2e[_0x13b02f];return _0x12e9a6;};'use strict';var EventEmitter=require(_0xe9f2('0x0'));var User=require('../../mysqldb')['db'][_0xe9f2('0x1')];var UserEvents=new EventEmitter();UserEvents[_0xe9f2('0x2')](0x0);var events={'afterCreate':_0xe9f2('0x3'),'afterUpdate':'update','afterDestroy':_0xe9f2('0x4')};function emitEvent(_0x29639a){return function(_0x1fc0e5,_0x19c3af,_0x19cd1a){UserEvents[_0xe9f2('0x5')](_0x29639a+':'+_0x1fc0e5['id'],_0x1fc0e5);UserEvents[_0xe9f2('0x5')](_0x29639a,_0x1fc0e5);_0x19cd1a(null);};}for(var e in events){if(events[_0xe9f2('0x6')](e)){var event=events[e];User[_0xe9f2('0x7')](e,emitEvent(event));}}module[_0xe9f2('0x8')]=UserEvents;
\ No newline at end of file
+var _0xab98=['save','update','emit','hasOwnProperty','events','../../mysqldb','User','setMaxListeners'];(function(_0x39563f,_0x32c4f2){var _0x533069=function(_0x548cdb){while(--_0x548cdb){_0x39563f['push'](_0x39563f['shift']());}};_0x533069(++_0x32c4f2);}(_0xab98,0x17c));var _0x8ab9=function(_0xd82818,_0x202ffd){_0xd82818=_0xd82818-0x0;var _0x2a39d9=_0xab98[_0xd82818];return _0x2a39d9;};'use strict';var EventEmitter=require(_0x8ab9('0x0'));var User=require(_0x8ab9('0x1'))['db'][_0x8ab9('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x8ab9('0x3')](0x0);var events={'afterCreate':_0x8ab9('0x4'),'afterUpdate':_0x8ab9('0x5'),'afterDestroy':'remove'};function emitEvent(_0x50cb0f){return function(_0x48e15b,_0x4909f7,_0x13d600){UserEvents[_0x8ab9('0x6')](_0x50cb0f+':'+_0x48e15b['id'],_0x48e15b);UserEvents['emit'](_0x50cb0f,_0x48e15b);_0x13d600(null);};}for(var e in events){if(events[_0x8ab9('0x7')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 7f62556..97163d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c7=['Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','manual','voice','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','PAUSE','channel','MemberReport','isArray','map','update','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','faxPause','whatsappPause','openchannelPause','Pause','getRealtimeData','getChannels','forEach','setDataValue','crypto','util','md5','moment','lodash','jayson/promise','google','length','context','system','format','%s%s','push','Set','CDR(type)=%s','chanspy','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','name','options','join','StopMixMonitor','WAV','gsm','from-sip','CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','define','User','users','utf8','undefined','resolve','UserProfile','updatePassword','userProfileId','find','privacyEnabled','changed','updateMd5Password','userSetting','error','VoiceExtension','bulkCreate','destroy','function','Missing\x20Callback','randomBytes','toString','pbkdf2Sync','sha1','pbkdf2','base64','indexOf','provider','makeSalt','salt','encryptPassword','md5secret',':asterisk:','client','http','request'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc5c7,0x1cf));var _0x7c5c=function(_0x1bfcd0,_0x4e51dc){_0x1bfcd0=_0x1bfcd0-0x0;var _0x410cbd=_0xc5c7[_0x1bfcd0];return _0x410cbd;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x7c5c('0x0'));var util=require(_0x7c5c('0x1'));var md5=require(_0x7c5c('0x2'));var moment=require(_0x7c5c('0x3'));var _=require(_0x7c5c('0x4'));var jayson=require(_0x7c5c('0x5'));var attributes=require('./user.attributes');var authTypes=[_0x7c5c('0x6')];var validatePresenceOf=function(_0x2b4355){return _0x2b4355&&_0x2b4355[_0x7c5c('0x7')];};var getChanSpyApplications=function(_0x16a81c,_0x1dc034,_0x4dd500){var _0x5ec99e={'context':_0x16a81c[_0x7c5c('0x8')]||'from-sip','type':_0x7c5c('0x9'),'isApp':![],'UserId':_0x16a81c['id']};var _0x5bc01c=[];for(var _0x2b27d0=0x0,_0x15f4c1=0x1;_0x2b27d0<_0x4dd500['length'];_0x2b27d0++,_0x15f4c1=0x1){var _0x4f0093={'exten':util[_0x7c5c('0xa')](_0x7c5c('0xb'),_0x4dd500[_0x2b27d0]['prefix'],_0x1dc034),'ChanSpyId':_0x4dd500[_0x2b27d0]['id']};_0x5bc01c[_0x7c5c('0xc')](_['merge']({'app':_0x7c5c('0xd'),'appdata':util['format'](_0x7c5c('0xe'),_0x7c5c('0xf')),'priority':_0x15f4c1++},_0x5ec99e,_0x4f0093));if(_0x4dd500[_0x2b27d0]['record']){_0x5bc01c[_0x7c5c('0xc')](_[_0x7c5c('0x10')]({'app':_0x7c5c('0x11'),'appdata':util[_0x7c5c('0xa')](_0x7c5c('0x12'),_0x4dd500[_0x2b27d0][_0x7c5c('0x13')]),'priority':_0x15f4c1++},_0x5ec99e,_0x4f0093));}if(_0x4dd500[_0x2b27d0][_0x7c5c('0x14')]){_0x5bc01c[_0x7c5c('0xc')](_[_0x7c5c('0x10')]({'app':_0x7c5c('0x15'),'appdata':_0x4dd500[_0x2b27d0][_0x7c5c('0x16')],'priority':_0x15f4c1++},_0x5ec99e,_0x4f0093));}_0x5bc01c[_0x7c5c('0xc')](_[_0x7c5c('0x10')]({'app':_0x7c5c('0x17'),'appdata':util['format']('SIP/%s,%s',_0x16a81c[_0x7c5c('0x18')],_0x4dd500[_0x2b27d0][_0x7c5c('0x19')]?_0x4dd500[_0x2b27d0][_0x7c5c('0x19')][_0x7c5c('0x1a')](''):''),'priority':_0x15f4c1++},_0x5ec99e,_0x4f0093));if(_0x4dd500[_0x2b27d0]['record']){_0x5bc01c[_0x7c5c('0xc')](_[_0x7c5c('0x10')]({'app':_0x7c5c('0x1b'),'priority':_0x15f4c1++},_0x5ec99e,_0x4f0093));}}return _0x5bc01c;};var getUserApplications=function(_0x2792f4,_0x1215a3){var _0x4c5c93=['wav',_0x7c5c('0x1c'),_0x7c5c('0x1d')];var _0x2a5877={'context':_0x2792f4['context']||_0x7c5c('0x1e'),'exten':_0x1215a3,'type':_0x7c5c('0x9'),'isApp':![],'UserId':_0x2792f4['id']};var _0x267e35=[{'app':_0x7c5c('0xd'),'appdata':_0x7c5c('0x1f')}];if(_0x2792f4['extensionMonitor']&&_[_0x7c5c('0x20')](_0x4c5c93,_0x2792f4[_0x7c5c('0x21')])){_0x267e35[_0x7c5c('0xc')]({'app':'Set','appdata':_0x7c5c('0x22')});_0x267e35[_0x7c5c('0xc')]({'app':'Set','appdata':util[_0x7c5c('0xa')](_0x7c5c('0x23'),_0x2792f4[_0x7c5c('0x21')])});_0x267e35[_0x7c5c('0xc')]({'app':_0x7c5c('0x24'),'appdata':util[_0x7c5c('0xa')](_0x7c5c('0x25'),_0x2792f4[_0x7c5c('0x18')])});}else{_0x267e35[_0x7c5c('0xc')]({'app':_0x7c5c('0x24'),'appdata':util[_0x7c5c('0xa')]('SIP/%s,,tTxX',_0x2792f4[_0x7c5c('0x18')])});}_0x267e35['push']({'app':'Hangup'});for(var _0xa91aa=0x0;_0xa91aa<_0x267e35['length'];_0xa91aa++){_0x267e35[_0xa91aa][_0x7c5c('0x26')]=_0xa91aa+0x1;_0x267e35[_0xa91aa]=_[_0x7c5c('0x27')](_0x267e35[_0xa91aa],_0x2a5877);}return _0x267e35;};var getChanSpyPromise=function(_0xe66f02,_0x1b8d20){return new BPromise(function(_0x54094c,_0x5de2c1){return _0xe66f02[_0x7c5c('0x28')][_0x7c5c('0x29')]()[_0x7c5c('0x2a')](function(_0x3e4732){if(_0x3e4732){var _0x49b915=getChanSpyApplications(_0x1b8d20,_0x1b8d20[_0x7c5c('0x2b')],_0x3e4732);if(_0x1b8d20[_0x7c5c('0x2b')]!=_0x1b8d20[_0x7c5c('0x18')]){_0x49b915=_0x49b915[_0x7c5c('0x2c')](getChanSpyApplications(_0x1b8d20,_0x1b8d20[_0x7c5c('0x18')],_0x3e4732));}return _0x54094c(_0x49b915);}return _0x54094c([]);})[_0x7c5c('0x2d')](function(_0xe014c8){_0x5de2c1(_0xe014c8);});});};module['exports']=function(_0x3ba9fd){var _0x20854b=_0x3ba9fd['models'];return _0x3ba9fd[_0x7c5c('0x2e')](_0x7c5c('0x2f'),attributes,{'tableName':_0x7c5c('0x30'),'charset':_0x7c5c('0x31'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x3a636d,_0x541d88,_0x8add4a){var _0x4729e6=typeof _0x3a636d['userProfileId']===_0x7c5c('0x32')?BPromise[_0x7c5c('0x33')](null):_0x20854b[_0x7c5c('0x34')]['find']({'where':{'id':_0x3a636d['userProfileId']}});_0x4729e6[_0x7c5c('0x2a')](function(_0x112fb9){if(_0x112fb9){_0x3a636d['privacyEnabled']=_0x112fb9['privacyEnabled'];}})[_0x7c5c('0x2a')](function(){_0x3a636d['updateMd5Password']();_0x3a636d[_0x7c5c('0x35')](_0x8add4a);})[_0x7c5c('0x2d')](function(_0x438c19){_0x8add4a(_0x438c19);});},'beforeUpdate':function(_0x3079c5,_0x46eb5f,_0x12c320){Promise['resolve']()[_0x7c5c('0x2a')](function(){if(_0x3079c5['changed'](_0x7c5c('0x36'))===![])return;return _0x20854b[_0x7c5c('0x34')][_0x7c5c('0x37')]({'where':{'id':_0x3079c5['userProfileId']}})[_0x7c5c('0x2a')](function(_0x268bdf){if(_0x268bdf)_0x3079c5[_0x7c5c('0x38')]=_0x268bdf[_0x7c5c('0x38')];return;});})[_0x7c5c('0x2a')](function(){if(_0x3079c5[_0x7c5c('0x39')](_0x7c5c('0x16'))){_0x3079c5[_0x7c5c('0x3a')]();return _0x3079c5['updatePassword'](_0x12c320);}_0x12c320();})[_0x7c5c('0x2d')](function(_0x964f5d){_0x12c320(_0x964f5d);});},'afterCreate':function(_0x2d23dd,_0x224070,_0x1fc382){var _0xeafb2d=getUserApplications(_0x2d23dd,_0x2d23dd[_0x7c5c('0x2b')]);if(_0x2d23dd[_0x7c5c('0x2b')]!=_0x2d23dd['name']){_0xeafb2d=_0xeafb2d[_0x7c5c('0x2c')](getUserApplications(_0x2d23dd,_0x2d23dd[_0x7c5c('0x18')]));}return Promise['resolve']()['then'](function(){if(!_0x2d23dd[_0x7c5c('0x3b')]){return _0x2d23dd['createUserSetting']({'clientSideLoggingLevel':_0x7c5c('0x3c'),'clientSideLoggingEnabled':![]});}})[_0x7c5c('0x2a')](function(){return _0x20854b[_0x7c5c('0x3d')]['bulkCreate'](_0xeafb2d);})['then'](function(){if(_0x2d23dd[_0x7c5c('0xf')]){return getChanSpyPromise(_0x20854b,_0x2d23dd);}})[_0x7c5c('0x2a')](function(_0x23940f){if(_0x23940f&&_0x23940f['length']){return _0x20854b[_0x7c5c('0x3d')][_0x7c5c('0x3e')](_0x23940f);}})[_0x7c5c('0x2a')](function(){_0x1fc382();})[_0x7c5c('0x2d')](function(_0x5db56a){_0x1fc382(_0x5db56a);});},'afterUpdate':function(_0x45a636,_0xc91f86,_0x573659){return BPromise[_0x7c5c('0x33')]()[_0x7c5c('0x2a')](function(){if(_0x45a636['changed'](_0x7c5c('0xf'))||_0x45a636[_0x7c5c('0x39')](_0x7c5c('0x8'))){return _0x20854b[_0x7c5c('0x3d')]['destroy']({'where':{'UserId':_0x45a636['id'],'type':_0x7c5c('0x9'),'ChanSpyId':{'$ne':null}}})[_0x7c5c('0x2a')](function(){if(_0x45a636['chanspy']){return getChanSpyPromise(_0x20854b,_0x45a636)[_0x7c5c('0x2a')](function(_0x1260e9){if(_0x1260e9&&_0x1260e9[_0x7c5c('0x7')]){return _0x20854b[_0x7c5c('0x3d')][_0x7c5c('0x3e')](_0x1260e9);}});}});}})[_0x7c5c('0x2a')](function(){if(_0x45a636[_0x7c5c('0x39')](_0x7c5c('0x21'))||_0x45a636[_0x7c5c('0x39')]('context')){return _0x20854b[_0x7c5c('0x3d')][_0x7c5c('0x3f')]({'where':{'UserId':_0x45a636['id'],'type':_0x7c5c('0x9'),'ChanSpyId':null}})[_0x7c5c('0x2a')](function(){var _0x11c5c2=getUserApplications(_0x45a636,_0x45a636[_0x7c5c('0x2b')]);if(_0x45a636[_0x7c5c('0x2b')]!=_0x45a636[_0x7c5c('0x18')]){_0x11c5c2=_0x11c5c2[_0x7c5c('0x2c')](getUserApplications(_0x45a636,_0x45a636[_0x7c5c('0x18')]));}return _0x20854b[_0x7c5c('0x3d')][_0x7c5c('0x3e')](_0x11c5c2);});}})[_0x7c5c('0x2a')](function(){_0x573659();})[_0x7c5c('0x2d')](function(_0x1f89a5){_0x573659(_0x1f89a5);});},'afterDestroy':function(_0x3ef034){return _0x20854b[_0x7c5c('0x3d')]['destroy']({'where':{'UserId':_0x3ef034['id'],'type':_0x7c5c('0x9')}});}},'instanceMethods':{'authenticate':function(_0x254266,_0x437ce4){if(!_0x437ce4){return this[_0x7c5c('0x16')]===this['encryptPassword'](_0x254266);}var _0x3fc7e7=this;this['encryptPassword'](_0x254266,function(_0x2f7032,_0x3b09dd){if(_0x2f7032){_0x437ce4(_0x2f7032);}if(_0x3fc7e7[_0x7c5c('0x16')]===_0x3b09dd){_0x437ce4(null,!![]);}else{_0x437ce4(null,![]);}});},'makeSalt':function(_0x33b5a9,_0x2033fc){var _0x152b34=0x10;if(typeof arguments[0x0]===_0x7c5c('0x40')){_0x2033fc=arguments[0x0];_0x33b5a9=_0x152b34;}else if(typeof arguments[0x1]===_0x7c5c('0x40')){_0x2033fc=arguments[0x1];}else{throw new Error(_0x7c5c('0x41'));}if(!_0x33b5a9){_0x33b5a9=_0x152b34;}return crypto[_0x7c5c('0x42')](_0x33b5a9,function(_0x4b4e6e,_0x8b011){if(_0x4b4e6e){_0x2033fc(_0x4b4e6e);}return _0x2033fc(null,_0x8b011[_0x7c5c('0x43')]('base64'));});},'encryptPassword':function(_0x57a625,_0x45597f){if(!_0x57a625||!this['salt']){return _0x45597f?_0x45597f(null):null;}var _0x37059f=0x2710;var _0x224233=0x40;var _0xb6f9c7=Buffer['from'](this['salt'],'base64');if(!_0x45597f){return crypto[_0x7c5c('0x44')](_0x57a625,_0xb6f9c7,_0x37059f,_0x224233,_0x7c5c('0x45'))[_0x7c5c('0x43')]('base64');}return crypto[_0x7c5c('0x46')](_0x57a625,_0xb6f9c7,_0x37059f,_0x224233,_0x7c5c('0x45'),function(_0x1070d8,_0x157f1f){if(_0x1070d8){_0x45597f(_0x1070d8);}return _0x45597f(null,_0x157f1f[_0x7c5c('0x43')](_0x7c5c('0x47')));});},'updatePassword':function(_0x9c75df){if(!this[_0x7c5c('0x16')]){return _0x9c75df(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0x7c5c('0x48')](this[_0x7c5c('0x49')])===-0x1){_0x9c75df(new Error('Invalid\x20password'));}var _0x3431e0=this;this[_0x7c5c('0x4a')](function(_0x20d4b7,_0x10aeaa){if(_0x20d4b7){return _0x9c75df(_0x20d4b7);}_0x3431e0[_0x7c5c('0x4b')]=_0x10aeaa;_0x3431e0[_0x7c5c('0x4c')](_0x3431e0['password'],function(_0x1c84e0,_0x620b07){if(_0x1c84e0){_0x9c75df(_0x1c84e0);}_0x3431e0[_0x7c5c('0x16')]=_0x620b07;_0x9c75df(null);});});},'updateMd5Password':function(){this[_0x7c5c('0x4d')]=md5(this[_0x7c5c('0x18')]+_0x7c5c('0x4e')+this[_0x7c5c('0x16')]);return this[_0x7c5c('0x4d')];},'getRealtimeData':function(){var _0x1d2a63={'id':this['id']};var _0x3fa01b=jayson[_0x7c5c('0x4f')]['http']({'port':0x232a});var _0x4562aa=jayson[_0x7c5c('0x4f')][_0x7c5c('0x50')]({'port':0x232c});var _0x2bb479={};var _0x472aa7={};return _0x3fa01b[_0x7c5c('0x51')](_0x7c5c('0x52'),_0x1d2a63)['then'](function(_0x1d5c7f){if(_0x1d5c7f[_0x7c5c('0x3c')]){throw new Error(_0x7c5c('0x53'));}_0x2bb479=_0x1d5c7f[_0x7c5c('0x54')];return _0x4562aa['request'](_0x7c5c('0x52'),_0x1d2a63);})['then'](function(_0x337a29){if(_0x337a29[_0x7c5c('0x3c')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x472aa7=_0x337a29[_0x7c5c('0x54')];var _0x184130=_[_0x7c5c('0x10')]({},_0x2bb479,_0x472aa7);return _0x184130;})[_0x7c5c('0x2d')](function(_0x23eff3){throw _0x23eff3;});},'unpause':function(_0x11f69f,_0x24b394=_0x7c5c('0x55')){var _0x3f270d=this;var _0x2e26df={};return Promise[_0x7c5c('0x33')]()[_0x7c5c('0x2a')](function(){if(!_0x11f69f||_0x11f69f===_0x7c5c('0x56')&&_0x24b394==='manual'){var _0x1e97aa=jayson[_0x7c5c('0x4f')][_0x7c5c('0x50')]({'port':0x232a});return _0x1e97aa[_0x7c5c('0x51')](_0x7c5c('0x57'),{'id':_0x3f270d['id'],'name':_0x3f270d[_0x7c5c('0x18')],'pause':![]})[_0x7c5c('0x2a')](function(_0x5e6d6f){if(_0x5e6d6f['error']){throw new Error(util['format'](_0x7c5c('0x58'),_0x3f270d['id'],_0x3f270d[_0x7c5c('0x18')]));}return _0x5e6d6f[_0x7c5c('0x54')][_0x7c5c('0x59')];});}})[_0x7c5c('0x2a')](function(){if(!_0x11f69f||_0x11f69f===_0x7c5c('0x56')){return _0x20854b['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x3f270d['id']},'individualHooks':!![]});}})[_0x7c5c('0x2a')](function(){var _0x232286=!_0x11f69f?_0x7c5c('0x29'):'findOne';var _0x403f26={'membername':_0x3f270d[_0x7c5c('0x18')],'type':_0x7c5c('0x5a'),'exitAt':null};if(_0x11f69f){_0x403f26[_0x7c5c('0x5b')]=_0x11f69f;}return _0x20854b[_0x7c5c('0x5c')][_0x232286]({'where':_0x403f26});})[_0x7c5c('0x2a')](function(_0x48a002){if(_0x48a002){var _0x5fa90e=Array[_0x7c5c('0x5d')](_0x48a002)?_0x48a002:[_0x48a002];var _0x267862=_0x5fa90e[_0x7c5c('0x5e')](function(_0x50c45c){return _0x50c45c[_0x7c5c('0x5f')]({'exitAt':moment()['format'](_0x7c5c('0x60')),'data2':_0x24b394});});return Promise[_0x7c5c('0x61')](_0x267862);}})[_0x7c5c('0x2a')](function(){if(!_0x11f69f){_0x2e26df[_0x7c5c('0x62')]=![];_0x2e26df[_0x7c5c('0x63')]=![];_0x2e26df[_0x7c5c('0x64')]=![];_0x2e26df[_0x7c5c('0x65')]=![];_0x2e26df['smsPause']=![];_0x2e26df[_0x7c5c('0x66')]=![];_0x2e26df[_0x7c5c('0x67')]=![];}else{_0x2e26df[_0x11f69f+_0x7c5c('0x68')]=![];}return _0x3f270d[_0x7c5c('0x69')]();})[_0x7c5c('0x2a')](function(_0x4c8572){var _0x512b84=require('../../config/utils');var _0x5ca0bb=_0x512b84[_0x7c5c('0x6a')]();_0x5ca0bb[_0x7c5c('0x6b')](function(_0x38d793){var _0x4dae4f=_0x38d793+'Status';_0x3f270d[_0x7c5c('0x6c')]([_0x4dae4f],_0x4c8572[_0x4dae4f]);});return _0x3f270d[_0x7c5c('0x5f')](_0x2e26df);})['catch'](function(_0x547841){throw _0x547841;});}}});};
\ No newline at end of file
+var _0xc30d=['moment','lodash','jayson/promise','google','length','context','system','format','%s%s','prefix','CDR(type)=%s','chanspy','record','push','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','wav','WAV','gsm','from-sip','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','defaults','VoiceChanSpy','then','internal','concat','catch','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','privacyEnabled','updateMd5Password','updatePassword','changed','find','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','salt','from','pbkdf2Sync','pbkdf2','sha1','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findAll','findOne','channel','MemberReport','isArray','map','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','mailPause','chatPause','smsPause','whatsappPause','openchannelPause','getRealtimeData','../../config/utils','forEach','Status','setDataValue','bluebird','util','md5'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xc30d,0x6e));var _0xdc30=function(_0x2ae489,_0x9f8183){_0x2ae489=_0x2ae489-0x0;var _0x144cd2=_0xc30d[_0x2ae489];return _0x144cd2;};'use strict';var BPromise=require(_0xdc30('0x0'));var crypto=require('crypto');var util=require(_0xdc30('0x1'));var md5=require(_0xdc30('0x2'));var moment=require(_0xdc30('0x3'));var _=require(_0xdc30('0x4'));var jayson=require(_0xdc30('0x5'));var attributes=require('./user.attributes');var authTypes=[_0xdc30('0x6')];var validatePresenceOf=function(_0x53cb76){return _0x53cb76&&_0x53cb76[_0xdc30('0x7')];};var getChanSpyApplications=function(_0xc747b6,_0x1d2db4,_0x3e480e){var _0x4011da={'context':_0xc747b6[_0xdc30('0x8')]||'from-sip','type':_0xdc30('0x9'),'isApp':![],'UserId':_0xc747b6['id']};var _0x39c377=[];for(var _0x14b363=0x0,_0xad8d18=0x1;_0x14b363<_0x3e480e[_0xdc30('0x7')];_0x14b363++,_0xad8d18=0x1){var _0x65f596={'exten':util[_0xdc30('0xa')](_0xdc30('0xb'),_0x3e480e[_0x14b363][_0xdc30('0xc')],_0x1d2db4),'ChanSpyId':_0x3e480e[_0x14b363]['id']};_0x39c377['push'](_['merge']({'app':'Set','appdata':util[_0xdc30('0xa')](_0xdc30('0xd'),_0xdc30('0xe')),'priority':_0xad8d18++},_0x4011da,_0x65f596));if(_0x3e480e[_0x14b363][_0xdc30('0xf')]){_0x39c377[_0xdc30('0x10')](_[_0xdc30('0x11')]({'app':_0xdc30('0x12'),'appdata':util['format'](_0xdc30('0x13'),_0x3e480e[_0x14b363][_0xdc30('0x14')]),'priority':_0xad8d18++},_0x4011da,_0x65f596));}if(_0x3e480e[_0x14b363][_0xdc30('0x15')]){_0x39c377[_0xdc30('0x10')](_['merge']({'app':_0xdc30('0x16'),'appdata':_0x3e480e[_0x14b363][_0xdc30('0x17')],'priority':_0xad8d18++},_0x4011da,_0x65f596));}_0x39c377[_0xdc30('0x10')](_['merge']({'app':_0xdc30('0x18'),'appdata':util[_0xdc30('0xa')](_0xdc30('0x19'),_0xc747b6[_0xdc30('0x1a')],_0x3e480e[_0x14b363][_0xdc30('0x1b')]?_0x3e480e[_0x14b363][_0xdc30('0x1b')][_0xdc30('0x1c')](''):''),'priority':_0xad8d18++},_0x4011da,_0x65f596));if(_0x3e480e[_0x14b363]['record']){_0x39c377[_0xdc30('0x10')](_[_0xdc30('0x11')]({'app':'StopMixMonitor','priority':_0xad8d18++},_0x4011da,_0x65f596));}}return _0x39c377;};var getUserApplications=function(_0x5678a9,_0x3d984e){var _0x1620be=[_0xdc30('0x1d'),_0xdc30('0x1e'),_0xdc30('0x1f')];var _0x2934a1={'context':_0x5678a9[_0xdc30('0x8')]||_0xdc30('0x20'),'exten':_0x3d984e,'type':_0xdc30('0x9'),'isApp':![],'UserId':_0x5678a9['id']};var _0x1696c2=[{'app':_0xdc30('0x21'),'appdata':_0xdc30('0x22')}];if(_0x5678a9[_0xdc30('0x23')]&&_[_0xdc30('0x24')](_0x1620be,_0x5678a9[_0xdc30('0x23')])){_0x1696c2[_0xdc30('0x10')]({'app':'Set','appdata':_0xdc30('0x25')});_0x1696c2['push']({'app':'Set','appdata':util[_0xdc30('0xa')](_0xdc30('0x26'),_0x5678a9[_0xdc30('0x23')])});_0x1696c2['push']({'app':_0xdc30('0x27'),'appdata':util[_0xdc30('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5678a9[_0xdc30('0x1a')])});}else{_0x1696c2['push']({'app':_0xdc30('0x27'),'appdata':util['format'](_0xdc30('0x28'),_0x5678a9[_0xdc30('0x1a')])});}_0x1696c2[_0xdc30('0x10')]({'app':'Hangup'});for(var _0x590f58=0x0;_0x590f58<_0x1696c2[_0xdc30('0x7')];_0x590f58++){_0x1696c2[_0x590f58]['priority']=_0x590f58+0x1;_0x1696c2[_0x590f58]=_[_0xdc30('0x29')](_0x1696c2[_0x590f58],_0x2934a1);}return _0x1696c2;};var getChanSpyPromise=function(_0x3044d8,_0x457574){return new BPromise(function(_0x373ad7,_0x1f4553){return _0x3044d8[_0xdc30('0x2a')]['findAll']()[_0xdc30('0x2b')](function(_0x1fa07c){if(_0x1fa07c){var _0x199dc8=getChanSpyApplications(_0x457574,_0x457574[_0xdc30('0x2c')],_0x1fa07c);if(_0x457574[_0xdc30('0x2c')]!=_0x457574['name']){_0x199dc8=_0x199dc8[_0xdc30('0x2d')](getChanSpyApplications(_0x457574,_0x457574[_0xdc30('0x1a')],_0x1fa07c));}return _0x373ad7(_0x199dc8);}return _0x373ad7([]);})[_0xdc30('0x2e')](function(_0x32e4d6){_0x1f4553(_0x32e4d6);});});};module['exports']=function(_0x3e9e62){var _0x3fc0a4=_0x3e9e62[_0xdc30('0x2f')];return _0x3e9e62[_0xdc30('0x30')](_0xdc30('0x31'),attributes,{'tableName':_0xdc30('0x32'),'charset':_0xdc30('0x33'),'collate':_0xdc30('0x34'),'hooks':{'beforeCreate':function(_0x211786,_0x368a32,_0x51d13e){var _0x327a7f=typeof _0x211786[_0xdc30('0x35')]===_0xdc30('0x36')?BPromise[_0xdc30('0x37')](null):_0x3fc0a4[_0xdc30('0x38')]['find']({'where':{'id':_0x211786[_0xdc30('0x35')]}});_0x327a7f[_0xdc30('0x2b')](function(_0x84435b){if(_0x84435b){_0x211786[_0xdc30('0x39')]=_0x84435b[_0xdc30('0x39')];}})[_0xdc30('0x2b')](function(){_0x211786[_0xdc30('0x3a')]();_0x211786[_0xdc30('0x3b')](_0x51d13e);})[_0xdc30('0x2e')](function(_0x546425){_0x51d13e(_0x546425);});},'beforeUpdate':function(_0x3b24a2,_0x10afa1,_0x2d6f9c){Promise[_0xdc30('0x37')]()[_0xdc30('0x2b')](function(){if(_0x3b24a2[_0xdc30('0x3c')](_0xdc30('0x35'))===![])return;return _0x3fc0a4[_0xdc30('0x38')][_0xdc30('0x3d')]({'where':{'id':_0x3b24a2[_0xdc30('0x35')]}})[_0xdc30('0x2b')](function(_0x7a8cb3){if(_0x7a8cb3)_0x3b24a2[_0xdc30('0x39')]=_0x7a8cb3[_0xdc30('0x39')];return;});})[_0xdc30('0x2b')](function(){if(_0x3b24a2[_0xdc30('0x3c')](_0xdc30('0x17'))){_0x3b24a2[_0xdc30('0x3a')]();return _0x3b24a2[_0xdc30('0x3b')](_0x2d6f9c);}_0x2d6f9c();})[_0xdc30('0x2e')](function(_0x5b729d){_0x2d6f9c(_0x5b729d);});},'afterCreate':function(_0x20ae82,_0x3f1955,_0x3ec3ac){var _0x33a222=getUserApplications(_0x20ae82,_0x20ae82[_0xdc30('0x2c')]);if(_0x20ae82[_0xdc30('0x2c')]!=_0x20ae82['name']){_0x33a222=_0x33a222[_0xdc30('0x2d')](getUserApplications(_0x20ae82,_0x20ae82['name']));}return Promise[_0xdc30('0x37')]()[_0xdc30('0x2b')](function(){if(!_0x20ae82['userSetting']){return _0x20ae82[_0xdc30('0x3e')]({'clientSideLoggingLevel':_0xdc30('0x3f'),'clientSideLoggingEnabled':![]});}})[_0xdc30('0x2b')](function(){return _0x3fc0a4[_0xdc30('0x40')][_0xdc30('0x41')](_0x33a222);})[_0xdc30('0x2b')](function(){if(_0x20ae82[_0xdc30('0xe')]){return getChanSpyPromise(_0x3fc0a4,_0x20ae82);}})[_0xdc30('0x2b')](function(_0x251b2c){if(_0x251b2c&&_0x251b2c[_0xdc30('0x7')]){return _0x3fc0a4[_0xdc30('0x40')]['bulkCreate'](_0x251b2c);}})[_0xdc30('0x2b')](function(){_0x3ec3ac();})['catch'](function(_0x3bcf03){_0x3ec3ac(_0x3bcf03);});},'afterUpdate':function(_0x4ed7e3,_0x286b46,_0x34cabf){return BPromise[_0xdc30('0x37')]()['then'](function(){if(_0x4ed7e3[_0xdc30('0x3c')](_0xdc30('0xe'))||_0x4ed7e3['changed'](_0xdc30('0x8'))){return _0x3fc0a4[_0xdc30('0x40')][_0xdc30('0x42')]({'where':{'UserId':_0x4ed7e3['id'],'type':_0xdc30('0x9'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x4ed7e3[_0xdc30('0xe')]){return getChanSpyPromise(_0x3fc0a4,_0x4ed7e3)[_0xdc30('0x2b')](function(_0x240ff3){if(_0x240ff3&&_0x240ff3[_0xdc30('0x7')]){return _0x3fc0a4[_0xdc30('0x40')][_0xdc30('0x41')](_0x240ff3);}});}});}})[_0xdc30('0x2b')](function(){if(_0x4ed7e3[_0xdc30('0x3c')](_0xdc30('0x23'))||_0x4ed7e3[_0xdc30('0x3c')](_0xdc30('0x8'))){return _0x3fc0a4[_0xdc30('0x40')][_0xdc30('0x42')]({'where':{'UserId':_0x4ed7e3['id'],'type':_0xdc30('0x9'),'ChanSpyId':null}})['then'](function(){var _0x5ad0f0=getUserApplications(_0x4ed7e3,_0x4ed7e3[_0xdc30('0x2c')]);if(_0x4ed7e3[_0xdc30('0x2c')]!=_0x4ed7e3[_0xdc30('0x1a')]){_0x5ad0f0=_0x5ad0f0[_0xdc30('0x2d')](getUserApplications(_0x4ed7e3,_0x4ed7e3[_0xdc30('0x1a')]));}return _0x3fc0a4[_0xdc30('0x40')][_0xdc30('0x41')](_0x5ad0f0);});}})[_0xdc30('0x2b')](function(){_0x34cabf();})[_0xdc30('0x2e')](function(_0x58e638){_0x34cabf(_0x58e638);});},'afterDestroy':function(_0x42105b){return _0x3fc0a4['VoiceExtension'][_0xdc30('0x42')]({'where':{'UserId':_0x42105b['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4afdcf,_0x4c5a3f){if(!_0x4c5a3f){return this[_0xdc30('0x17')]===this[_0xdc30('0x43')](_0x4afdcf);}var _0x17743f=this;this[_0xdc30('0x43')](_0x4afdcf,function(_0x253313,_0x28fc3a){if(_0x253313){_0x4c5a3f(_0x253313);}if(_0x17743f[_0xdc30('0x17')]===_0x28fc3a){_0x4c5a3f(null,!![]);}else{_0x4c5a3f(null,![]);}});},'makeSalt':function(_0x2c59d8,_0xa297f3){var _0xceb763=0x10;if(typeof arguments[0x0]===_0xdc30('0x44')){_0xa297f3=arguments[0x0];_0x2c59d8=_0xceb763;}else if(typeof arguments[0x1]===_0xdc30('0x44')){_0xa297f3=arguments[0x1];}else{throw new Error(_0xdc30('0x45'));}if(!_0x2c59d8){_0x2c59d8=_0xceb763;}return crypto['randomBytes'](_0x2c59d8,function(_0x59458a,_0x126359){if(_0x59458a){_0xa297f3(_0x59458a);}return _0xa297f3(null,_0x126359[_0xdc30('0x46')](_0xdc30('0x47')));});},'encryptPassword':function(_0x34189e,_0x254182){if(!_0x34189e||!this[_0xdc30('0x48')]){return _0x254182?_0x254182(null):null;}var _0x240236=0x2710;var _0x1e0ef9=0x40;var _0x13c7c8=Buffer[_0xdc30('0x49')](this['salt'],_0xdc30('0x47'));if(!_0x254182){return crypto[_0xdc30('0x4a')](_0x34189e,_0x13c7c8,_0x240236,_0x1e0ef9,'sha1')[_0xdc30('0x46')](_0xdc30('0x47'));}return crypto[_0xdc30('0x4b')](_0x34189e,_0x13c7c8,_0x240236,_0x1e0ef9,_0xdc30('0x4c'),function(_0x4bf004,_0x360a54){if(_0x4bf004){_0x254182(_0x4bf004);}return _0x254182(null,_0x360a54[_0xdc30('0x46')]('base64'));});},'updatePassword':function(_0x4a1599){if(!this[_0xdc30('0x17')]){return _0x4a1599(null);}if(!validatePresenceOf(this[_0xdc30('0x17')])&&authTypes['indexOf'](this[_0xdc30('0x4d')])===-0x1){_0x4a1599(new Error(_0xdc30('0x4e')));}var _0x204647=this;this[_0xdc30('0x4f')](function(_0x3975c8,_0x238aa7){if(_0x3975c8){return _0x4a1599(_0x3975c8);}_0x204647[_0xdc30('0x48')]=_0x238aa7;_0x204647['encryptPassword'](_0x204647[_0xdc30('0x17')],function(_0x3a2447,_0x30197e){if(_0x3a2447){_0x4a1599(_0x3a2447);}_0x204647[_0xdc30('0x17')]=_0x30197e;_0x4a1599(null);});});},'updateMd5Password':function(){this[_0xdc30('0x50')]=md5(this[_0xdc30('0x1a')]+_0xdc30('0x51')+this[_0xdc30('0x17')]);return this['md5secret'];},'getRealtimeData':function(){var _0x28cbc3={'id':this['id']};var _0x1236f8=jayson[_0xdc30('0x52')][_0xdc30('0x53')]({'port':0x232a});var _0x2bde6a=jayson['client'][_0xdc30('0x53')]({'port':0x232c});var _0x129c75={};var _0x3d7e15={};return _0x1236f8[_0xdc30('0x54')](_0xdc30('0x55'),_0x28cbc3)['then'](function(_0x46b6cb){if(_0x46b6cb[_0xdc30('0x3f')]){throw new Error(_0xdc30('0x56'));}_0x129c75=_0x46b6cb[_0xdc30('0x57')];return _0x2bde6a['request'](_0xdc30('0x55'),_0x28cbc3);})['then'](function(_0x47568a){if(_0x47568a['error']){throw new Error(_0xdc30('0x58'));}_0x3d7e15=_0x47568a['result'];var _0x5654d2=_[_0xdc30('0x11')]({},_0x129c75,_0x3d7e15);return _0x5654d2;})[_0xdc30('0x2e')](function(_0x48fa4d){throw _0x48fa4d;});},'unpause':function(_0x1d4ace,_0x5db99b='manual'){var _0x4ac8c9=this;var _0x336b23={};return Promise[_0xdc30('0x37')]()[_0xdc30('0x2b')](function(){if(!_0x1d4ace||_0x1d4ace==='voice'&&_0x5db99b==='manual'){var _0x4b37a1=jayson['client'][_0xdc30('0x53')]({'port':0x232a});return _0x4b37a1[_0xdc30('0x54')](_0xdc30('0x59'),{'id':_0x4ac8c9['id'],'name':_0x4ac8c9[_0xdc30('0x1a')],'pause':![]})[_0xdc30('0x2b')](function(_0x9f034){if(_0x9f034[_0xdc30('0x3f')]){throw new Error(util['format'](_0xdc30('0x5a'),_0x4ac8c9['id'],_0x4ac8c9[_0xdc30('0x1a')]));}return _0x9f034[_0xdc30('0x57')][_0xdc30('0x5b')];});}})[_0xdc30('0x2b')](function(){if(!_0x1d4ace||_0x1d4ace==='voice'){return _0x3fc0a4[_0xdc30('0x5c')][_0xdc30('0x5d')]({'paused':0x0},{'where':{'UserId':_0x4ac8c9['id']},'individualHooks':!![]});}})[_0xdc30('0x2b')](function(){var _0x169850=!_0x1d4ace?_0xdc30('0x5e'):_0xdc30('0x5f');var _0x511e60={'membername':_0x4ac8c9[_0xdc30('0x1a')],'type':'PAUSE','exitAt':null};if(_0x1d4ace){_0x511e60[_0xdc30('0x60')]=_0x1d4ace;}return _0x3fc0a4[_0xdc30('0x61')][_0x169850]({'where':_0x511e60});})[_0xdc30('0x2b')](function(_0x6a9aba){if(_0x6a9aba){var _0x4ff8c5=Array[_0xdc30('0x62')](_0x6a9aba)?_0x6a9aba:[_0x6a9aba];var _0x5e2262=_0x4ff8c5[_0xdc30('0x63')](function(_0x21bba7){return _0x21bba7[_0xdc30('0x5d')]({'exitAt':moment()[_0xdc30('0xa')](_0xdc30('0x64')),'data2':_0x5db99b});});return Promise[_0xdc30('0x65')](_0x5e2262);}})[_0xdc30('0x2b')](function(){if(!_0x1d4ace){_0x336b23[_0xdc30('0x66')]=![];_0x336b23[_0xdc30('0x67')]=![];_0x336b23[_0xdc30('0x68')]=![];_0x336b23['faxPause']=![];_0x336b23[_0xdc30('0x69')]=![];_0x336b23[_0xdc30('0x6a')]=![];_0x336b23[_0xdc30('0x6b')]=![];}else{_0x336b23[_0x1d4ace+'Pause']=![];}return _0x4ac8c9[_0xdc30('0x6c')]();})[_0xdc30('0x2b')](function(_0x2793b2){var _0x37c939=require(_0xdc30('0x6d'));var _0xd0ef18=_0x37c939['getChannels']();_0xd0ef18[_0xdc30('0x6e')](function(_0x2959c7){var _0x1fd116=_0x2959c7+_0xdc30('0x6f');_0x4ac8c9[_0xdc30('0x70')]([_0x1fd116],_0x2793b2[_0x1fd116]);});return _0x4ac8c9[_0xdc30('0x5d')](_0x336b23);})['catch'](function(_0xed4684){throw _0xed4684;});}}});};
\ No newline at end of file
index 2d84d63..02b0bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd064=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','GetUser','User','options','raw','where','attributes','limit','include','map','model','then','debug','stringify','catch','message','error','ShowUser','find','PauseUser','name','role','internal','interface','User\x20with\x20id\x20%s\x20not\x20found','params','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','forEach','push','isNil','type','DEFAULT\x20PAUSE','body','uniqueid','MemberReport','bulkCreate','update','UnpauseUser','resolve','channel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','unpause','LogoutUser','findOne','UserVoiceQueueRt','destroy','findAll','all','LoginUser','phone','loginInPause','SIP/%s','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','merge','LOGIN','LOGININPAUSE','concat','lodash','moment','bluebird'];(function(_0x840f5b,_0x3f7bdd){var _0x48a6fb=function(_0x5e019b){while(--_0x5e019b){_0x840f5b['push'](_0x840f5b['shift']());}};_0x48a6fb(++_0x3f7bdd);}(_0xd064,0xb3));var _0x4d06=function(_0x515232,_0x3de920){_0x515232=_0x515232-0x0;var _0x45685c=_0xd064[_0x515232];return _0x45685c;};'use strict';var _=require(_0x4d06('0x0'));var util=require('util');var moment=require(_0x4d06('0x1'));var BPromise=require(_0x4d06('0x2'));var Redis=require(_0x4d06('0x3'));var db=require(_0x4d06('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d06('0x5'))(_0x4d06('0x6'));var config=require(_0x4d06('0x7'));config[_0x4d06('0x8')]=_[_0x4d06('0x9')](config[_0x4d06('0x8')],{'host':_0x4d06('0xa'),'port':0x18eb});var socket=require(_0x4d06('0xb'))(new Redis(config[_0x4d06('0x8')]));require(_0x4d06('0xc'))[_0x4d06('0xd')](socket);exports[_0x4d06('0xe')]=function(_0x578cf4){var _0x5587b5=this;return new Promise(function(_0x1702a8,_0x1e4b3d){return db[_0x4d06('0xf')]['findAll']({'raw':_0x578cf4[_0x4d06('0x10')]?_0x578cf4[_0x4d06('0x10')][_0x4d06('0x11')]===undefined?!![]:![]:!![],'where':_0x578cf4[_0x4d06('0x10')]?_0x578cf4['options'][_0x4d06('0x12')]||null:null,'attributes':_0x578cf4[_0x4d06('0x10')]?_0x578cf4[_0x4d06('0x10')][_0x4d06('0x13')]||null:null,'limit':_0x578cf4['options']?_0x578cf4['options'][_0x4d06('0x14')]||null:null,'include':_0x578cf4[_0x4d06('0x10')]?_0x578cf4[_0x4d06('0x10')][_0x4d06('0x15')]?_[_0x4d06('0x16')](_0x578cf4[_0x4d06('0x10')][_0x4d06('0x15')],function(_0xe5223a){return{'model':db[_0xe5223a['model']],'as':_0xe5223a['as'],'attributes':_0xe5223a[_0x4d06('0x13')],'include':_0xe5223a['include']?_[_0x4d06('0x16')](_0xe5223a[_0x4d06('0x15')],function(_0x4b74b4){return{'model':db[_0x4b74b4[_0x4d06('0x17')]],'as':_0x4b74b4['as'],'attributes':_0x4b74b4[_0x4d06('0x13')],'include':_0x4b74b4[_0x4d06('0x15')]?_['map'](_0x4b74b4[_0x4d06('0x15')],function(_0x4403b4){return{'model':db[_0x4403b4[_0x4d06('0x17')]],'as':_0x4403b4['as'],'attributes':_0x4403b4['attributes']};}):[]};}):[]};}):[]:[]})[_0x4d06('0x18')](function(_0x3639a5){logger['info'](_0x4d06('0xe'),_0x578cf4);logger[_0x4d06('0x19')](_0x4d06('0xe'),_0x578cf4,JSON[_0x4d06('0x1a')](_0x3639a5));_0x1702a8(_0x3639a5);})[_0x4d06('0x1b')](function(_0x114aa2){logger['error']('GetUser',_0x114aa2[_0x4d06('0x1c')],_0x578cf4);_0x1e4b3d(_0x5587b5[_0x4d06('0x1d')](0x1f4,_0x114aa2[_0x4d06('0x1c')]));});});};exports[_0x4d06('0x1e')]=function(_0x355c8e){var _0x2219b9=this;return new Promise(function(_0x572dbe,_0x381b3b){return db[_0x4d06('0xf')][_0x4d06('0x1f')]({'raw':_0x355c8e['options']?_0x355c8e['options']['raw']===undefined?!![]:![]:!![],'where':_0x355c8e['options']?_0x355c8e[_0x4d06('0x10')][_0x4d06('0x12')]||null:null,'attributes':_0x355c8e['options']?_0x355c8e[_0x4d06('0x10')][_0x4d06('0x13')]||null:null,'include':_0x355c8e[_0x4d06('0x10')]?_0x355c8e[_0x4d06('0x10')][_0x4d06('0x15')]?_[_0x4d06('0x16')](_0x355c8e[_0x4d06('0x10')][_0x4d06('0x15')],function(_0x5ca16a){return{'model':db[_0x5ca16a[_0x4d06('0x17')]],'as':_0x5ca16a['as'],'attributes':_0x5ca16a[_0x4d06('0x13')],'include':_0x5ca16a['include']?_[_0x4d06('0x16')](_0x5ca16a[_0x4d06('0x15')],function(_0x1de543){return{'model':db[_0x1de543[_0x4d06('0x17')]],'as':_0x1de543['as'],'attributes':_0x1de543['attributes'],'include':_0x1de543[_0x4d06('0x15')]?_[_0x4d06('0x16')](_0x1de543[_0x4d06('0x15')],function(_0x1bc036){return{'model':db[_0x1bc036[_0x4d06('0x17')]],'as':_0x1bc036['as'],'attributes':_0x1bc036[_0x4d06('0x13')]};}):[]};}):[]};}):[]:[]})[_0x4d06('0x18')](function(_0x2e2fd4){logger['info'](_0x4d06('0x1e'),_0x355c8e);logger[_0x4d06('0x19')](_0x4d06('0x1e'),_0x355c8e,JSON[_0x4d06('0x1a')](_0x2e2fd4));_0x572dbe(_0x2e2fd4);})[_0x4d06('0x1b')](function(_0x29b82a){logger['error'](_0x4d06('0x1e'),_0x29b82a[_0x4d06('0x1c')],_0x355c8e);_0x381b3b(_0x2219b9['error'](0x1f4,_0x29b82a[_0x4d06('0x1c')]));});});};exports[_0x4d06('0x20')]=function(_0x1f08d7){var _0x2c9326;return db[_0x4d06('0xf')]['find']({'where':_0x1f08d7['options'][_0x4d06('0x12')]||{},'attributes':['id',_0x4d06('0x21'),_0x4d06('0x22'),_0x4d06('0x23'),_0x4d06('0x24')]})[_0x4d06('0x18')](function(_0x405476){if(!_0x405476){throw new Error(util['format'](_0x4d06('0x25'),_0x1f08d7[_0x4d06('0x26')]['id']));}_0x2c9326=_0x405476;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x2c9326['id']},'individualHooks':!![]});})[_0x4d06('0x18')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x2c9326[_0x4d06('0x21')],'type':_0x4d06('0x27'),'exitAt':null}});})[_0x4d06('0x18')](function(_0x584bd2){if(_0x584bd2&&_0x584bd2['length']){var _0xe82f9c=moment()[_0x4d06('0x28')](_0x4d06('0x29'));for(var _0x2820cf=0x0,_0x47f86c=_0x584bd2[_0x4d06('0x2a')];_0x2820cf<_0x47f86c;_0x2820cf++){_0x584bd2[_0x2820cf][_0x4d06('0x2b')]({'exitAt':_0xe82f9c});}}})[_0x4d06('0x18')](function(){var _0x1a2348=[];var _0x2c5a7=utils[_0x4d06('0x2c')]();_0x2c5a7[_0x4d06('0x2d')](function(_0x2a3646){_0x1a2348[_0x4d06('0x2e')]({'channel':_0x2a3646,'membername':_0x2c9326[_0x4d06('0x21')],'interface':_[_0x4d06('0x2f')](_0x2c9326['interface'])?util[_0x4d06('0x28')]('SIP/%s',_0x2c9326[_0x4d06('0x21')]):_0x2c9326[_0x4d06('0x24')],'type':_0x4d06('0x27'),'enterAt':moment()[_0x4d06('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x1f08d7['body'][_0x4d06('0x30')]||_0x4d06('0x31'),'role':_0x2c9326[_0x4d06('0x22')],'internal':_0x2c9326['internal'],'uniqueid':_0x1f08d7[_0x4d06('0x32')][_0x4d06('0x33')]||null});});return db[_0x4d06('0x34')][_0x4d06('0x35')](_0x1a2348,{'individualHooks':!![]});})['then'](function(){return _0x2c9326[_0x4d06('0x36')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1f08d7['body'][_0x4d06('0x30')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x4d06('0x28')](_0x4d06('0x29'))});})[_0x4d06('0x1b')](function(_0x188782){throw _0x188782;});};exports[_0x4d06('0x37')]=function(_0x54ccda){return Promise[_0x4d06('0x38')]()[_0x4d06('0x18')](function(){if(_0x54ccda[_0x4d06('0x32')]['channel']&&!utils['isValidChannel'](_0x54ccda[_0x4d06('0x32')][_0x4d06('0x39')])){throw new Error(util['format'](_0x4d06('0x3a'),_0x54ccda[_0x4d06('0x32')][_0x4d06('0x39')]));}return db['User']['findOne']({'where':_0x54ccda[_0x4d06('0x10')][_0x4d06('0x12')]||{},'attributes':['id',_0x4d06('0x21'),'role',_0x4d06('0x23'),_0x4d06('0x24'),_0x4d06('0x3b'),_0x4d06('0x3c'),_0x4d06('0x3d'),_0x4d06('0x3e'),_0x4d06('0x3f'),_0x4d06('0x40'),_0x4d06('0x41'),_0x4d06('0x42'),_0x4d06('0x43'),_0x4d06('0x44')]});})[_0x4d06('0x18')](function(_0x3f1b84){if(!_0x3f1b84){throw new Error(util[_0x4d06('0x28')](_0x4d06('0x25'),_0x54ccda[_0x4d06('0x26')]['id']));}return _0x3f1b84[_0x4d06('0x45')](_0x54ccda[_0x4d06('0x32')][_0x4d06('0x39')],'system');})[_0x4d06('0x1b')](function(_0x552acc){throw _0x552acc;});};exports[_0x4d06('0x46')]=function(_0x453149){var _0x1a9eb4=this;return new Promise(function(_0x4824a8,_0x3e4f2b){var _0x2a27c2;return db[_0x4d06('0xf')][_0x4d06('0x47')]({'where':_0x453149[_0x4d06('0x10')][_0x4d06('0x12')]||{},'attributes':['id',_0x4d06('0x21')]})[_0x4d06('0x18')](function(_0x3cd04c){if(_0x3cd04c){_0x2a27c2=_0x3cd04c;return db[_0x4d06('0x48')][_0x4d06('0x49')]({'where':{'membername':_0x2a27c2[_0x4d06('0x21')]},'individualHooks':!![]});}})[_0x4d06('0x18')](function(){if(_0x2a27c2){return db[_0x4d06('0x34')][_0x4d06('0x4a')]({'where':{'membername':_0x2a27c2[_0x4d06('0x21')],'exitAt':null}});}})[_0x4d06('0x18')](function(_0x4d1847){if(_0x2a27c2){if(_0x4d1847&&_0x4d1847['length']){var _0x32b9b4=[];_0x4d1847[_0x4d06('0x2d')](function(_0x3318a4){_0x32b9b4[_0x4d06('0x2e')](_0x3318a4['update']({'exitAt':moment()[_0x4d06('0x28')](_0x4d06('0x29'))}));});return BPromise[_0x4d06('0x4b')](_0x32b9b4);}}})[_0x4d06('0x18')](function(){if(_0x2a27c2){return _0x2a27c2[_0x4d06('0x36')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x49fe58){_0x4824a8(_0x49fe58);})[_0x4d06('0x1b')](function(_0x51c1c9){_0x3e4f2b(_0x1a9eb4[_0x4d06('0x1d')](0x1f4,_0x51c1c9[_0x4d06('0x1c')]));});});};exports[_0x4d06('0x4c')]=function(_0x158ee4){var _0x2fdfe0=this;return new Promise(function(_0xc29ef4,_0x10f76e){var _0xdd4f57;var _0x494b25;var _0x214682;var _0x23265f;return db[_0x4d06('0xf')][_0x4d06('0x47')]({'where':_0x158ee4[_0x4d06('0x10')][_0x4d06('0x12')]||{},'attributes':['id',_0x4d06('0x21'),_0x4d06('0x22'),'mobile',_0x4d06('0x4d'),'internal',_0x4d06('0x4e'),_0x4d06('0x24')]})[_0x4d06('0x18')](function(_0x2fb267){if(_0x2fb267){_0xdd4f57=_0x2fb267;_0x23265f=_0x158ee4['body']['interface']?_0x158ee4[_0x4d06('0x32')]['interface']:util[_0x4d06('0x28')](_0x4d06('0x4f'),_0xdd4f57[_0x4d06('0x21')]);return db[_0x4d06('0xf')][_0x4d06('0x50')]({'where':{'role':_0x4d06('0x51'),'online':!![],'id':{'$ne':_0xdd4f57['id']}}});}})[_0x4d06('0x18')](function(_0x21c95f){if(_0x21c95f){_0x214682=_0x21c95f;return require('../../config/license/util')[_0x4d06('0x52')]();}})['then'](function(_0x137f37){if(_0x137f37&&_0x137f37[_0x4d06('0x53')]&&_0x214682>=_0x137f37['agents']){throw new Error(_0x4d06('0x54'));}})['then'](function(){if(_0xdd4f57){return db['UserVoiceQueueRt'][_0x4d06('0x49')]({'where':{'membername':_0xdd4f57[_0x4d06('0x21')]},'individualHooks':!![]});}})[_0x4d06('0x18')](function(){if(_0xdd4f57){return _0xdd4f57[_0x4d06('0x55')]({'raw':!![]});}})[_0x4d06('0x18')](function(_0x1e05da){if(_0xdd4f57){if(_0x1e05da){var _0x3c9568=[];_0x494b25=_0x1e05da;if(_0x494b25[_0x4d06('0x2a')]){for(var _0x48d746=0x0;_0x48d746<_0x494b25[_0x4d06('0x2a')];_0x48d746++){_0x3c9568[_0x4d06('0x2e')](db['UserVoiceQueueRt'][_0x4d06('0x56')]({'membername':_0xdd4f57['name'],'UserId':_0xdd4f57['id'],'queue_name':_0x494b25[_0x48d746][_0x4d06('0x21')],'VoiceQueueId':_0x494b25[_0x48d746]['id'],'interface':_0x23265f,'paused':_0xdd4f57[_0x4d06('0x4e')]||![],'penalty':_0x494b25[_0x48d746]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x3c9568);}}}})[_0x4d06('0x18')](function(){if(_0xdd4f57){return db['MemberReport'][_0x4d06('0x4a')]({'where':{'membername':_0xdd4f57[_0x4d06('0x21')],'exitAt':null}});}})[_0x4d06('0x18')](function(_0x4e64fb){if(_0xdd4f57){if(_0x4e64fb&&_0x4e64fb[_0x4d06('0x2a')]){var _0x3e1ba2=[];_0x4e64fb[_0x4d06('0x2d')](function(_0x8463e0){_0x3e1ba2[_0x4d06('0x2e')](_0x8463e0['update']({'exitAt':moment()[_0x4d06('0x28')](_0x4d06('0x29'))}));});return BPromise[_0x4d06('0x4b')](_0x3e1ba2);}}})['then'](function(){if(_0xdd4f57){var _0x569285=[];var _0x36d5e6=[];var _0x553ad1=utils[_0x4d06('0x2c')]();var _0x1b8ba9={'membername':_0xdd4f57[_0x4d06('0x21')],'interface':_0x23265f,'enterAt':moment()[_0x4d06('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0xdd4f57[_0x4d06('0x22')],'internal':_0xdd4f57[_0x4d06('0x23')]};_0x553ad1['forEach'](function(_0x4f15b3){_0x569285['push'](_[_0x4d06('0x57')]({'channel':_0x4f15b3,'type':_0x4d06('0x58'),'data1':'callysquare','data2':_0x23265f},_0x1b8ba9));if(_0xdd4f57[_0x4d06('0x4e')]){_0x36d5e6[_0x4d06('0x2e')](_['merge']({'channel':_0x4f15b3,'type':_0x4d06('0x27'),'data1':_0x4d06('0x59')},_0x1b8ba9));}});return db[_0x4d06('0x34')][_0x4d06('0x35')](_0x569285[_0x4d06('0x5a')](_0x36d5e6),{'individualHooks':!![]});}})[_0x4d06('0x18')](function(){if(_0xdd4f57){return _0xdd4f57[_0x4d06('0x36')]({'online':!![],'lastLoginAt':moment()['format'](_0x4d06('0x29')),'voicePause':_0xdd4f57['loginInPause']||![],'mailPause':_0xdd4f57[_0x4d06('0x4e')]||![],'chatPause':_0xdd4f57[_0x4d06('0x4e')]||![],'faxPause':_0xdd4f57[_0x4d06('0x4e')]||![],'smsPause':_0xdd4f57['loginInPause']||![],'openchannelPause':_0xdd4f57[_0x4d06('0x4e')]||![],'pauseType':_0xdd4f57[_0x4d06('0x4e')]?_0x4d06('0x59'):null,'lastPauseAt':moment()[_0x4d06('0x28')](_0x4d06('0x29')),'interface':_0x23265f});}})[_0x4d06('0x18')](function(_0x4b5258){_0xc29ef4(_0x4b5258);})[_0x4d06('0x1b')](function(_0x470001){_0x10f76e(_0x2fdfe0[_0x4d06('0x1d')](0x1f4,_0x470001[_0x4d06('0x1c')]));});});};
\ No newline at end of file
+var _0xb72e=['socket.io-emitter','./user.socket','register','GetUser','User','options','raw','where','attributes','limit','map','include','model','then','info','debug','stringify','catch','error','message','find','ShowUser','name','role','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','YYYY-MM-DD\x20HH:mm:ss','length','forEach','push','isNil','SIP/%s','body','internal','uniqueid','type','DEFAULT\x20PAUSE','UnpauseUser','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','mailPause','chatPause','openchannelPause','smsPause','whatsappPause','unpause','LogoutUser','destroy','all','mobile','phone','loginInPause','count','../../config/license/util','getLicense','agents','getVoiceQueues','upsert','getChannels','callysquare','merge','LOGININPAUSE','concat','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','redis','defaults','localhost'];(function(_0x4fdcc0,_0x560a01){var _0xc0ce94=function(_0x36ea12){while(--_0x36ea12){_0x4fdcc0['push'](_0x4fdcc0['shift']());}};_0xc0ce94(++_0x560a01);}(_0xb72e,0x195));var _0xeb72=function(_0x5e317a,_0x36f54a){_0x5e317a=_0x5e317a-0x0;var _0x121935=_0xb72e[_0x5e317a];return _0x121935;};'use strict';var _=require('lodash');var util=require(_0xeb72('0x0'));var moment=require(_0xeb72('0x1'));var BPromise=require(_0xeb72('0x2'));var Redis=require(_0xeb72('0x3'));var db=require(_0xeb72('0x4'))['db'];var utils=require(_0xeb72('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xeb72('0x6'));config[_0xeb72('0x7')]=_[_0xeb72('0x8')](config[_0xeb72('0x7')],{'host':_0xeb72('0x9'),'port':0x18eb});var socket=require(_0xeb72('0xa'))(new Redis(config[_0xeb72('0x7')]));require(_0xeb72('0xb'))[_0xeb72('0xc')](socket);exports[_0xeb72('0xd')]=function(_0x84ec4c){var _0x225e21=this;return new Promise(function(_0x53b264,_0x2e2aed){return db[_0xeb72('0xe')]['findAll']({'raw':_0x84ec4c[_0xeb72('0xf')]?_0x84ec4c[_0xeb72('0xf')][_0xeb72('0x10')]===undefined?!![]:![]:!![],'where':_0x84ec4c[_0xeb72('0xf')]?_0x84ec4c['options'][_0xeb72('0x11')]||null:null,'attributes':_0x84ec4c['options']?_0x84ec4c[_0xeb72('0xf')][_0xeb72('0x12')]||null:null,'limit':_0x84ec4c['options']?_0x84ec4c[_0xeb72('0xf')][_0xeb72('0x13')]||null:null,'include':_0x84ec4c[_0xeb72('0xf')]?_0x84ec4c['options']['include']?_[_0xeb72('0x14')](_0x84ec4c[_0xeb72('0xf')][_0xeb72('0x15')],function(_0xcfec8d){return{'model':db[_0xcfec8d['model']],'as':_0xcfec8d['as'],'attributes':_0xcfec8d[_0xeb72('0x12')],'include':_0xcfec8d[_0xeb72('0x15')]?_[_0xeb72('0x14')](_0xcfec8d['include'],function(_0x4b869d){return{'model':db[_0x4b869d['model']],'as':_0x4b869d['as'],'attributes':_0x4b869d[_0xeb72('0x12')],'include':_0x4b869d[_0xeb72('0x15')]?_[_0xeb72('0x14')](_0x4b869d[_0xeb72('0x15')],function(_0x50cecc){return{'model':db[_0x50cecc[_0xeb72('0x16')]],'as':_0x50cecc['as'],'attributes':_0x50cecc[_0xeb72('0x12')]};}):[]};}):[]};}):[]:[]})[_0xeb72('0x17')](function(_0x6ae651){logger[_0xeb72('0x18')](_0xeb72('0xd'),_0x84ec4c);logger[_0xeb72('0x19')](_0xeb72('0xd'),_0x84ec4c,JSON[_0xeb72('0x1a')](_0x6ae651));_0x53b264(_0x6ae651);})[_0xeb72('0x1b')](function(_0x4c7b76){logger[_0xeb72('0x1c')](_0xeb72('0xd'),_0x4c7b76[_0xeb72('0x1d')],_0x84ec4c);_0x2e2aed(_0x225e21[_0xeb72('0x1c')](0x1f4,_0x4c7b76[_0xeb72('0x1d')]));});});};exports['ShowUser']=function(_0x4809fa){var _0x227302=this;return new Promise(function(_0x16980b,_0xd62d35){return db[_0xeb72('0xe')][_0xeb72('0x1e')]({'raw':_0x4809fa[_0xeb72('0xf')]?_0x4809fa[_0xeb72('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x4809fa[_0xeb72('0xf')]?_0x4809fa[_0xeb72('0xf')][_0xeb72('0x11')]||null:null,'attributes':_0x4809fa['options']?_0x4809fa[_0xeb72('0xf')][_0xeb72('0x12')]||null:null,'include':_0x4809fa[_0xeb72('0xf')]?_0x4809fa[_0xeb72('0xf')][_0xeb72('0x15')]?_[_0xeb72('0x14')](_0x4809fa[_0xeb72('0xf')][_0xeb72('0x15')],function(_0x39e188){return{'model':db[_0x39e188[_0xeb72('0x16')]],'as':_0x39e188['as'],'attributes':_0x39e188[_0xeb72('0x12')],'include':_0x39e188['include']?_[_0xeb72('0x14')](_0x39e188[_0xeb72('0x15')],function(_0x4645fb){return{'model':db[_0x4645fb[_0xeb72('0x16')]],'as':_0x4645fb['as'],'attributes':_0x4645fb[_0xeb72('0x12')],'include':_0x4645fb['include']?_['map'](_0x4645fb['include'],function(_0x1d7fb0){return{'model':db[_0x1d7fb0['model']],'as':_0x1d7fb0['as'],'attributes':_0x1d7fb0[_0xeb72('0x12')]};}):[]};}):[]};}):[]:[]})[_0xeb72('0x17')](function(_0x2609da){logger[_0xeb72('0x18')]('ShowUser',_0x4809fa);logger[_0xeb72('0x19')](_0xeb72('0x1f'),_0x4809fa,JSON[_0xeb72('0x1a')](_0x2609da));_0x16980b(_0x2609da);})[_0xeb72('0x1b')](function(_0x3ff5e4){logger[_0xeb72('0x1c')](_0xeb72('0x1f'),_0x3ff5e4[_0xeb72('0x1d')],_0x4809fa);_0xd62d35(_0x227302[_0xeb72('0x1c')](0x1f4,_0x3ff5e4[_0xeb72('0x1d')]));});});};exports['PauseUser']=function(_0x498f22){var _0x227d64;return db['User'][_0xeb72('0x1e')]({'where':_0x498f22[_0xeb72('0xf')]['where']||{},'attributes':['id',_0xeb72('0x20'),_0xeb72('0x21'),'internal',_0xeb72('0x22')]})[_0xeb72('0x17')](function(_0x145ac3){if(!_0x145ac3){throw new Error(util[_0xeb72('0x23')](_0xeb72('0x24'),_0x498f22[_0xeb72('0x25')]['id']));}_0x227d64=_0x145ac3;return db[_0xeb72('0x26')][_0xeb72('0x27')]({'paused':0x1},{'where':{'UserId':_0x227d64['id']},'individualHooks':!![]});})[_0xeb72('0x17')](function(){return db[_0xeb72('0x28')][_0xeb72('0x29')]({'where':{'membername':_0x227d64[_0xeb72('0x20')],'type':_0xeb72('0x2a'),'exitAt':null}});})[_0xeb72('0x17')](function(_0x5505fa){if(_0x5505fa&&_0x5505fa['length']){var _0x9b0a96=moment()[_0xeb72('0x23')](_0xeb72('0x2b'));for(var _0x514a95=0x0,_0x5c2be0=_0x5505fa[_0xeb72('0x2c')];_0x514a95<_0x5c2be0;_0x514a95++){_0x5505fa[_0x514a95]['updateAttributes']({'exitAt':_0x9b0a96});}}})[_0xeb72('0x17')](function(){var _0x2a8093=[];var _0x32a43b=utils['getChannels']();_0x32a43b[_0xeb72('0x2d')](function(_0x237182){_0x2a8093[_0xeb72('0x2e')]({'channel':_0x237182,'membername':_0x227d64['name'],'interface':_[_0xeb72('0x2f')](_0x227d64[_0xeb72('0x22')])?util[_0xeb72('0x23')](_0xeb72('0x30'),_0x227d64[_0xeb72('0x20')]):_0x227d64['interface'],'type':_0xeb72('0x2a'),'enterAt':moment()[_0xeb72('0x23')](_0xeb72('0x2b')),'data1':_0x498f22[_0xeb72('0x31')]['type']||'DEFAULT\x20PAUSE','role':_0x227d64[_0xeb72('0x21')],'internal':_0x227d64[_0xeb72('0x32')],'uniqueid':_0x498f22[_0xeb72('0x31')][_0xeb72('0x33')]||null});});return db['MemberReport']['bulkCreate'](_0x2a8093,{'individualHooks':!![]});})[_0xeb72('0x17')](function(){return _0x227d64['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x498f22['body'][_0xeb72('0x34')]||_0xeb72('0x35'),'lastPauseAt':moment()[_0xeb72('0x23')](_0xeb72('0x2b'))});})[_0xeb72('0x1b')](function(_0x4d9c06){throw _0x4d9c06;});};exports[_0xeb72('0x36')]=function(_0x39271f){return Promise[_0xeb72('0x37')]()[_0xeb72('0x17')](function(){if(_0x39271f[_0xeb72('0x31')][_0xeb72('0x38')]&&!utils[_0xeb72('0x39')](_0x39271f[_0xeb72('0x31')][_0xeb72('0x38')])){throw new Error(util[_0xeb72('0x23')](_0xeb72('0x3a'),_0x39271f[_0xeb72('0x31')][_0xeb72('0x38')]));}return db['User'][_0xeb72('0x3b')]({'where':_0x39271f[_0xeb72('0xf')]['where']||{},'attributes':['id','name',_0xeb72('0x21'),_0xeb72('0x32'),_0xeb72('0x22'),'online','voicePause',_0xeb72('0x3c'),_0xeb72('0x3d'),'faxPause',_0xeb72('0x3e'),_0xeb72('0x3f'),_0xeb72('0x40'),'pauseType','lastPauseAt']});})[_0xeb72('0x17')](function(_0x57ae02){if(!_0x57ae02){throw new Error(util[_0xeb72('0x23')](_0xeb72('0x24'),_0x39271f[_0xeb72('0x25')]['id']));}return _0x57ae02[_0xeb72('0x41')](_0x39271f['body'][_0xeb72('0x38')],'system');})[_0xeb72('0x1b')](function(_0x133de9){throw _0x133de9;});};exports[_0xeb72('0x42')]=function(_0x1e0b79){var _0xfe5c41=this;return new Promise(function(_0x57c428,_0x14eeb3){var _0x483e04;return db[_0xeb72('0xe')][_0xeb72('0x3b')]({'where':_0x1e0b79[_0xeb72('0xf')][_0xeb72('0x11')]||{},'attributes':['id','name']})['then'](function(_0x4dad2b){if(_0x4dad2b){_0x483e04=_0x4dad2b;return db[_0xeb72('0x26')][_0xeb72('0x43')]({'where':{'membername':_0x483e04['name']},'individualHooks':!![]});}})[_0xeb72('0x17')](function(){if(_0x483e04){return db[_0xeb72('0x28')][_0xeb72('0x29')]({'where':{'membername':_0x483e04[_0xeb72('0x20')],'exitAt':null}});}})[_0xeb72('0x17')](function(_0x46578d){if(_0x483e04){if(_0x46578d&&_0x46578d['length']){var _0x4ac9da=[];_0x46578d['forEach'](function(_0x45e7f0){_0x4ac9da[_0xeb72('0x2e')](_0x45e7f0['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xeb72('0x44')](_0x4ac9da);}}})[_0xeb72('0x17')](function(){if(_0x483e04){return _0x483e04[_0xeb72('0x27')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xeb72('0x17')](function(_0x5a067d){_0x57c428(_0x5a067d);})[_0xeb72('0x1b')](function(_0x4b284e){_0x14eeb3(_0xfe5c41['error'](0x1f4,_0x4b284e[_0xeb72('0x1d')]));});});};exports['LoginUser']=function(_0x226444){var _0x21f586=this;return new Promise(function(_0x3e42cc,_0x3f6d29){var _0x4d1434;var _0x277e4f;var _0x5e21ca;var _0x265fd8;return db[_0xeb72('0xe')]['findOne']({'where':_0x226444[_0xeb72('0xf')][_0xeb72('0x11')]||{},'attributes':['id','name',_0xeb72('0x21'),_0xeb72('0x45'),_0xeb72('0x46'),_0xeb72('0x32'),_0xeb72('0x47'),_0xeb72('0x22')]})['then'](function(_0x12a4c1){if(_0x12a4c1){_0x4d1434=_0x12a4c1;_0x265fd8=_0x226444[_0xeb72('0x31')][_0xeb72('0x22')]?_0x226444['body']['interface']:util[_0xeb72('0x23')](_0xeb72('0x30'),_0x4d1434[_0xeb72('0x20')]);return db[_0xeb72('0xe')][_0xeb72('0x48')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4d1434['id']}}});}})[_0xeb72('0x17')](function(_0x62ea82){if(_0x62ea82){_0x5e21ca=_0x62ea82;return require(_0xeb72('0x49'))[_0xeb72('0x4a')]();}})['then'](function(_0x237e07){if(_0x237e07&&_0x237e07[_0xeb72('0x4b')]&&_0x5e21ca>=_0x237e07[_0xeb72('0x4b')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0xeb72('0x17')](function(){if(_0x4d1434){return db[_0xeb72('0x26')][_0xeb72('0x43')]({'where':{'membername':_0x4d1434['name']},'individualHooks':!![]});}})[_0xeb72('0x17')](function(){if(_0x4d1434){return _0x4d1434[_0xeb72('0x4c')]({'raw':!![]});}})['then'](function(_0x57522b){if(_0x4d1434){if(_0x57522b){var _0x58392b=[];_0x277e4f=_0x57522b;if(_0x277e4f[_0xeb72('0x2c')]){for(var _0xc6e72f=0x0;_0xc6e72f<_0x277e4f['length'];_0xc6e72f++){_0x58392b['push'](db[_0xeb72('0x26')][_0xeb72('0x4d')]({'membername':_0x4d1434[_0xeb72('0x20')],'UserId':_0x4d1434['id'],'queue_name':_0x277e4f[_0xc6e72f][_0xeb72('0x20')],'VoiceQueueId':_0x277e4f[_0xc6e72f]['id'],'interface':_0x265fd8,'paused':_0x4d1434[_0xeb72('0x47')]||![],'penalty':_0x277e4f[_0xc6e72f]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0xeb72('0x44')](_0x58392b);}}}})[_0xeb72('0x17')](function(){if(_0x4d1434){return db['MemberReport'][_0xeb72('0x29')]({'where':{'membername':_0x4d1434[_0xeb72('0x20')],'exitAt':null}});}})[_0xeb72('0x17')](function(_0x3dc6e3){if(_0x4d1434){if(_0x3dc6e3&&_0x3dc6e3['length']){var _0x4dc59c=[];_0x3dc6e3['forEach'](function(_0x5d940e){_0x4dc59c[_0xeb72('0x2e')](_0x5d940e[_0xeb72('0x27')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xeb72('0x44')](_0x4dc59c);}}})[_0xeb72('0x17')](function(){if(_0x4d1434){var _0x82384e=[];var _0x62eb29=[];var _0x1b5221=utils[_0xeb72('0x4e')]();var _0x12d9fe={'membername':_0x4d1434[_0xeb72('0x20')],'interface':_0x265fd8,'enterAt':moment()[_0xeb72('0x23')](_0xeb72('0x2b')),'role':_0x4d1434[_0xeb72('0x21')],'internal':_0x4d1434['internal']};_0x1b5221[_0xeb72('0x2d')](function(_0x173c77){_0x82384e['push'](_['merge']({'channel':_0x173c77,'type':'LOGIN','data1':_0xeb72('0x4f'),'data2':_0x265fd8},_0x12d9fe));if(_0x4d1434[_0xeb72('0x47')]){_0x62eb29['push'](_[_0xeb72('0x50')]({'channel':_0x173c77,'type':'PAUSE','data1':_0xeb72('0x51')},_0x12d9fe));}});return db[_0xeb72('0x28')]['bulkCreate'](_0x82384e[_0xeb72('0x52')](_0x62eb29),{'individualHooks':!![]});}})[_0xeb72('0x17')](function(){if(_0x4d1434){return _0x4d1434[_0xeb72('0x27')]({'online':!![],'lastLoginAt':moment()[_0xeb72('0x23')](_0xeb72('0x2b')),'voicePause':_0x4d1434[_0xeb72('0x47')]||![],'mailPause':_0x4d1434['loginInPause']||![],'chatPause':_0x4d1434['loginInPause']||![],'faxPause':_0x4d1434[_0xeb72('0x47')]||![],'smsPause':_0x4d1434[_0xeb72('0x47')]||![],'openchannelPause':_0x4d1434[_0xeb72('0x47')]||![],'pauseType':_0x4d1434[_0xeb72('0x47')]?_0xeb72('0x51'):null,'lastPauseAt':moment()['format'](_0xeb72('0x2b')),'interface':_0x265fd8});}})['then'](function(_0x3a9d03){_0x3e42cc(_0x3a9d03);})[_0xeb72('0x1b')](function(_0x347451){_0x3f6d29(_0x21f586[_0xeb72('0x1c')](0x1f4,_0x347451[_0xeb72('0x1d')]));});});};
\ No newline at end of file
index 5ae635b..31b7c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8413=['remove','update','emit','removeListener','register','user:','save'];(function(_0x352e79,_0x187cc9){var _0x5b72a9=function(_0x30c7a9){while(--_0x30c7a9){_0x352e79['push'](_0x352e79['shift']());}};_0x5b72a9(++_0x187cc9);}(_0x8413,0x1db));var _0x3841=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x8413[_0x5447fd];return _0x15b28a;};'use strict';var UserEvents=require('./user.events');var events=[_0x3841('0x0'),_0x3841('0x1'),_0x3841('0x2')];function createListener(_0xa83847,_0x491f06){return function(_0x1da3df){_0x491f06[_0x3841('0x3')](_0xa83847,_0x1da3df);};}function removeListener(_0x34c90a,_0x218594){return function(){UserEvents[_0x3841('0x4')](_0x34c90a,_0x218594);};}exports[_0x3841('0x5')]=function(_0x2b4ca1){for(var _0x2a3e6e=0x0,_0x2f4422=events['length'];_0x2a3e6e<_0x2f4422;_0x2a3e6e++){var _0x23215a=events[_0x2a3e6e];var _0x50ea3a=createListener(_0x3841('0x6')+_0x23215a,_0x2b4ca1);UserEvents['on'](_0x23215a,_0x50ea3a);}};
\ No newline at end of file
+var _0xd54e=['./user.events','save','remove','update','emit','register','length','user:'];(function(_0x5401ad,_0x50d388){var _0x390fe4=function(_0x5a5de2){while(--_0x5a5de2){_0x5401ad['push'](_0x5401ad['shift']());}};_0x390fe4(++_0x50d388);}(_0xd54e,0x188));var _0xed54=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xd54e[_0x14add3];return _0x4a174f;};'use strict';var UserEvents=require(_0xed54('0x0'));var events=[_0xed54('0x1'),_0xed54('0x2'),_0xed54('0x3')];function createListener(_0x39bfce,_0x1440d){return function(_0x5df219){_0x1440d[_0xed54('0x4')](_0x39bfce,_0x5df219);};}function removeListener(_0x1a44c7,_0x44c6f3){return function(){UserEvents['removeListener'](_0x1a44c7,_0x44c6f3);};}exports[_0xed54('0x5')]=function(_0x2ca761){for(var _0x99f4bd=0x0,_0x3b4e69=events[_0xed54('0x6')];_0x99f4bd<_0x3b4e69;_0x99f4bd++){var _0x4c5039=events[_0x99f4bd];var _0x2f524b=createListener(_0xed54('0x7')+_0x4c5039,_0x2ca761);UserEvents['on'](_0x4c5039,_0x2f524b);}};
\ No newline at end of file
index c293ccf..cbda2b8 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(_0xe1b39d,_0x4f1545){var _0x2148e7=function(_0xe8bd2e){while(--_0xe8bd2e){_0xe1b39d['push'](_0xe1b39d['shift']());}};_0x2148e7(++_0x4f1545);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1cb128,_0x2770eb){var _0x4843e2=function(_0xc5c6b3){while(--_0xc5c6b3){_0x1cb128['push'](_0x1cb128['shift']());}};_0x4843e2(++_0x2770eb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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 e6a3436..d371a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7442=['exports','INTEGER'];(function(_0x56e4ef,_0x1bdf0c){var _0x4337cd=function(_0x2d5b44){while(--_0x2d5b44){_0x56e4ef['push'](_0x56e4ef['shift']());}};_0x4337cd(++_0x1bdf0c);}(_0x7442,0x1a4));var _0x2744=function(_0x48de9e,_0x144e00){_0x48de9e=_0x48de9e-0x0;var _0x20e60f=_0x7442[_0x48de9e];return _0x20e60f;};'use strict';var Sequelize=require('sequelize');module[_0x2744('0x0')]={'penalty':{'type':Sequelize[_0x2744('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2f66=['INTEGER','sequelize','exports'];(function(_0x5528c3,_0x35a416){var _0x47ec1b=function(_0x54a18e){while(--_0x54a18e){_0x5528c3['push'](_0x5528c3['shift']());}};_0x47ec1b(++_0x35a416);}(_0x2f66,0x1ea));var _0x62f6=function(_0x30a956,_0x11222e){_0x30a956=_0x30a956-0x0;var _0x2ac17d=_0x2f66[_0x30a956];return _0x2ac17d;};'use strict';var Sequelize=require(_0x62f6('0x0'));module[_0x62f6('0x1')]={'penalty':{'type':Sequelize[_0x62f6('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 00c879f..5231ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17e0=['./userChatQueue.attributes','exports','define','user_has_chat_queues','util','bluebird','request-promise','path','../../config/environment'];(function(_0xc5ea5a,_0x12f389){var _0x3721c8=function(_0x4e9b86){while(--_0x4e9b86){_0xc5ea5a['push'](_0xc5ea5a['shift']());}};_0x3721c8(++_0x12f389);}(_0x17e0,0xc1));var _0x017e=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x17e0[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require('lodash');var util=require(_0x017e('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x017e('0x1'));var rp=require(_0x017e('0x2'));var fs=require('fs');var path=require(_0x017e('0x3'));var rimraf=require('rimraf');var config=require(_0x017e('0x4'));var attributes=require(_0x017e('0x5'));module[_0x017e('0x6')]=function(_0x18f59e,_0x5334ec){return _0x18f59e[_0x017e('0x7')]('UserChatQueue',attributes,{'tableName':_0x017e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x327f=['path','rimraf','../../config/environment','./userChatQueue.attributes','define','user_has_chat_queues','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x327f,0x1da));var _0xf327=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x327f[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var util=require(_0xf327('0x0'));var logger=require(_0xf327('0x1'))(_0xf327('0x2'));var moment=require(_0xf327('0x3'));var BPromise=require(_0xf327('0x4'));var rp=require(_0xf327('0x5'));var fs=require('fs');var path=require(_0xf327('0x6'));var rimraf=require(_0xf327('0x7'));var config=require(_0xf327('0x8'));var attributes=require(_0xf327('0x9'));module['exports']=function(_0x2d5dad,_0xdd8107){return _0x2d5dad[_0xf327('0xa')]('UserChatQueue',attributes,{'tableName':_0xf327('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c1ef5a..6dfa8db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a5=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0x98a5,0x1f4));var _0x598a=function(_0x516ffb,_0x5b5b42){_0x516ffb=_0x516ffb-0x0;var _0x319667=_0x98a5[_0x516ffb];return _0x319667;};'use strict';var _=require(_0x598a('0x0'));var util=require(_0x598a('0x1'));var moment=require(_0x598a('0x2'));var BPromise=require(_0x598a('0x3'));var rs=require(_0x598a('0x4'));var fs=require('fs');var Redis=require(_0x598a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x598a('0x6'));var logger=require(_0x598a('0x7'))(_0x598a('0x8'));var config=require(_0x598a('0x9'));var jayson=require(_0x598a('0xa'));var client=jayson[_0x598a('0xb')][_0x598a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x37e3b7,_0x448915,_0x238381){return new BPromise(function(_0x24ed63,_0x5d9390){return client[_0x598a('0xd')](_0x37e3b7,_0x238381)[_0x598a('0xe')](function(_0x41f460){logger['info'](_0x598a('0xf'),_0x448915,_0x598a('0x10'));logger[_0x598a('0x11')](_0x598a('0x12'),_0x448915,'request\x20sent',JSON[_0x598a('0x13')](_0x41f460));if(_0x41f460['error']){if(_0x41f460[_0x598a('0x14')]['code']===0x1f4){logger['error'](_0x598a('0xf'),_0x448915,_0x41f460['error']['message']);return _0x5d9390(_0x41f460[_0x598a('0x14')][_0x598a('0x15')]);}logger[_0x598a('0x14')](_0x598a('0xf'),_0x448915,_0x41f460[_0x598a('0x14')][_0x598a('0x15')]);return _0x24ed63(_0x41f460['error']['message']);}else{logger[_0x598a('0x16')](_0x598a('0xf'),_0x448915,'request\x20sent');_0x24ed63(_0x41f460[_0x598a('0x17')][_0x598a('0x15')]);}})[_0x598a('0x18')](function(_0x389cd0){logger[_0x598a('0x14')]('UserChatQueue,\x20%s,\x20%s',_0x448915,_0x389cd0);_0x5d9390(_0x389cd0);});});}
\ No newline at end of file
+var _0xccbd=['result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x49760b,_0x589d10){var _0x2c6c1b=function(_0x15f57d){while(--_0x15f57d){_0x49760b['push'](_0x49760b['shift']());}};_0x2c6c1b(++_0x589d10);}(_0xccbd,0x122));var _0xdccb=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xccbd[_0x543084];return _0x306a57;};'use strict';var _=require('lodash');var util=require(_0xdccb('0x0'));var moment=require(_0xdccb('0x1'));var BPromise=require(_0xdccb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdccb('0x3'));var db=require(_0xdccb('0x4'))['db'];var utils=require(_0xdccb('0x5'));var logger=require(_0xdccb('0x6'))(_0xdccb('0x7'));var config=require(_0xdccb('0x8'));var jayson=require(_0xdccb('0x9'));var client=jayson[_0xdccb('0xa')][_0xdccb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e9dc0,_0x356b33,_0x2ea642){return new BPromise(function(_0x2efabc,_0x1dbaf8){return client['request'](_0x1e9dc0,_0x2ea642)[_0xdccb('0xc')](function(_0x310ae0){logger[_0xdccb('0xd')](_0xdccb('0xe'),_0x356b33,_0xdccb('0xf'));logger[_0xdccb('0x10')](_0xdccb('0x11'),_0x356b33,'request\x20sent',JSON[_0xdccb('0x12')](_0x310ae0));if(_0x310ae0[_0xdccb('0x13')]){if(_0x310ae0[_0xdccb('0x13')][_0xdccb('0x14')]===0x1f4){logger['error'](_0xdccb('0xe'),_0x356b33,_0x310ae0[_0xdccb('0x13')][_0xdccb('0x15')]);return _0x1dbaf8(_0x310ae0['error']['message']);}logger['error'](_0xdccb('0xe'),_0x356b33,_0x310ae0[_0xdccb('0x13')]['message']);return _0x2efabc(_0x310ae0[_0xdccb('0x13')]['message']);}else{logger[_0xdccb('0xd')](_0xdccb('0xe'),_0x356b33,_0xdccb('0xf'));_0x2efabc(_0x310ae0[_0xdccb('0x16')][_0xdccb('0x15')]);}})[_0xdccb('0x17')](function(_0x3c1941){logger[_0xdccb('0x13')]('UserChatQueue,\x20%s,\x20%s',_0x356b33,_0x3c1941);_0x1dbaf8(_0x3c1941);});});}
\ No newline at end of file
index ec594bb..14bebfd 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(_0x48d933,_0x4eaabe){var _0x4caf07=function(_0x403c1f){while(--_0x403c1f){_0x48d933['push'](_0x48d933['shift']());}};_0x4caf07(++_0x4eaabe);}(_0x9c44,0x178));var _0x49c4=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x9c44[_0x1035c1];return _0x308d67;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0xd95aa2,_0x44cd89){var _0x1b23ca=function(_0xd5aed6){while(--_0xd5aed6){_0xd95aa2['push'](_0xd95aa2['shift']());}};_0x1b23ca(++_0x44cd89);}(_0x70e0,0x17b));var _0x070e=function(_0x57ba2a,_0x1c911c){_0x57ba2a=_0x57ba2a-0x0;var _0x1b1fcf=_0x70e0[_0x57ba2a];return _0x1b1fcf;};'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 6bbc17e..74a01cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a28=['exports','INTEGER','sequelize'];(function(_0x3cde2e,_0x1d3514){var _0x39cae4=function(_0x405ff2){while(--_0x405ff2){_0x3cde2e['push'](_0x3cde2e['shift']());}};_0x39cae4(++_0x1d3514);}(_0x3a28,0x1e5));var _0x83a2=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x3a28[_0x618414];return _0x21c19a;};'use strict';var Sequelize=require(_0x83a2('0x0'));module[_0x83a2('0x1')]={'penalty':{'type':Sequelize[_0x83a2('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x83a2('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x541c=['exports','INTEGER','sequelize'];(function(_0x2e9b4b,_0x4f4d6a){var _0x398a99=function(_0x54339f){while(--_0x54339f){_0x2e9b4b['push'](_0x2e9b4b['shift']());}};_0x398a99(++_0x4f4d6a);}(_0x541c,0x18b));var _0xc541=function(_0x13c70c,_0x546b34){_0x13c70c=_0x13c70c-0x0;var _0x50f0f2=_0x541c[_0x13c70c];return _0x50f0f2;};'use strict';var Sequelize=require(_0xc541('0x0'));module[_0xc541('0x1')]={'penalty':{'type':Sequelize[_0xc541('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc541('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b8dd580..713fc2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca6c=['user_has_fax_queues','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0xca6c,0x109));var _0xcca6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xca6c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0xcca6('0x0'));var logger=require('../../config/logger')(_0xcca6('0x1'));var moment=require('moment');var BPromise=require(_0xcca6('0x2'));var rp=require(_0xcca6('0x3'));var fs=require('fs');var path=require(_0xcca6('0x4'));var rimraf=require(_0xcca6('0x5'));var config=require(_0xcca6('0x6'));var attributes=require(_0xcca6('0x7'));module[_0xcca6('0x8')]=function(_0x27c307,_0x26fe58){return _0x27c307[_0xcca6('0x9')](_0xcca6('0xa'),attributes,{'tableName':_0xcca6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x46f2=['lodash','util','api','moment','bluebird','request-promise','rimraf','./userFaxQueue.attributes','exports','define','UserFaxQueue'];(function(_0x345df8,_0x295e93){var _0x7a1545=function(_0x28fc9b){while(--_0x28fc9b){_0x345df8['push'](_0x345df8['shift']());}};_0x7a1545(++_0x295e93);}(_0x46f2,0x176));var _0x246f=function(_0x21ffea,_0x5618e2){_0x21ffea=_0x21ffea-0x0;var _0x371908=_0x46f2[_0x21ffea];return _0x371908;};'use strict';var _=require(_0x246f('0x0'));var util=require(_0x246f('0x1'));var logger=require('../../config/logger')(_0x246f('0x2'));var moment=require(_0x246f('0x3'));var BPromise=require(_0x246f('0x4'));var rp=require(_0x246f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x246f('0x6'));var config=require('../../config/environment');var attributes=require(_0x246f('0x7'));module[_0x246f('0x8')]=function(_0x3b5daf,_0x5cd480){return _0x3b5daf[_0x246f('0x9')](_0x246f('0xa'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9c0988..0c48d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfedb=['http','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client'];(function(_0x427352,_0x1bce61){var _0x23e0e6=function(_0x2a42a9){while(--_0x2a42a9){_0x427352['push'](_0x427352['shift']());}};_0x23e0e6(++_0x1bce61);}(_0xfedb,0x1c0));var _0xbfed=function(_0x5a5432,_0xe61c98){_0x5a5432=_0x5a5432-0x0;var _0x3b8fac=_0xfedb[_0x5a5432];return _0x3b8fac;};'use strict';var _=require(_0xbfed('0x0'));var util=require(_0xbfed('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbfed('0x2'));var fs=require('fs');var Redis=require(_0xbfed('0x3'));var db=require(_0xbfed('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbfed('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbfed('0x6'));var client=jayson[_0xbfed('0x7')][_0xbfed('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1ed241,_0x1f6898,_0x437af3){return new BPromise(function(_0x4caf25,_0x1b2cba){return client['request'](_0x1ed241,_0x437af3)[_0xbfed('0x9')](function(_0x3427c9){logger[_0xbfed('0xa')](_0xbfed('0xb'),_0x1f6898,_0xbfed('0xc'));logger['debug'](_0xbfed('0xd'),_0x1f6898,_0xbfed('0xc'),JSON[_0xbfed('0xe')](_0x3427c9));if(_0x3427c9[_0xbfed('0xf')]){if(_0x3427c9[_0xbfed('0xf')]['code']===0x1f4){logger[_0xbfed('0xf')](_0xbfed('0xb'),_0x1f6898,_0x3427c9[_0xbfed('0xf')]['message']);return _0x1b2cba(_0x3427c9[_0xbfed('0xf')][_0xbfed('0x10')]);}logger[_0xbfed('0xf')]('UserFaxQueue,\x20%s,\x20%s',_0x1f6898,_0x3427c9[_0xbfed('0xf')][_0xbfed('0x10')]);return _0x4caf25(_0x3427c9[_0xbfed('0xf')][_0xbfed('0x10')]);}else{logger[_0xbfed('0xa')](_0xbfed('0xb'),_0x1f6898,_0xbfed('0xc'));_0x4caf25(_0x3427c9[_0xbfed('0x11')][_0xbfed('0x10')]);}})[_0xbfed('0x12')](function(_0x3e9d8b){logger['error'](_0xbfed('0xb'),_0x1f6898,_0x3e9d8b);_0x1b2cba(_0x3e9d8b);});});}
\ No newline at end of file
+var _0xc48f=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash'];(function(_0xcbbe45,_0xdb31db){var _0x4e7bc6=function(_0x55b34c){while(--_0x55b34c){_0xcbbe45['push'](_0xcbbe45['shift']());}};_0x4e7bc6(++_0xdb31db);}(_0xc48f,0x13a));var _0xfc48=function(_0x46e485,_0x43d1e7){_0x46e485=_0x46e485-0x0;var _0x536576=_0xc48f[_0x46e485];return _0x536576;};'use strict';var _=require(_0xfc48('0x0'));var util=require('util');var moment=require(_0xfc48('0x1'));var BPromise=require(_0xfc48('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfc48('0x3'));var db=require(_0xfc48('0x4'))['db'];var utils=require(_0xfc48('0x5'));var logger=require('../../config/logger')(_0xfc48('0x6'));var config=require(_0xfc48('0x7'));var jayson=require(_0xfc48('0x8'));var client=jayson[_0xfc48('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13d747,_0x1297a5,_0x5418ed){return new BPromise(function(_0x235a69,_0x522b59){return client['request'](_0x13d747,_0x5418ed)[_0xfc48('0xa')](function(_0x322f32){logger[_0xfc48('0xb')](_0xfc48('0xc'),_0x1297a5,'request\x20sent');logger[_0xfc48('0xd')](_0xfc48('0xe'),_0x1297a5,_0xfc48('0xf'),JSON[_0xfc48('0x10')](_0x322f32));if(_0x322f32['error']){if(_0x322f32[_0xfc48('0x11')]['code']===0x1f4){logger[_0xfc48('0x11')](_0xfc48('0xc'),_0x1297a5,_0x322f32[_0xfc48('0x11')][_0xfc48('0x12')]);return _0x522b59(_0x322f32[_0xfc48('0x11')][_0xfc48('0x12')]);}logger[_0xfc48('0x11')](_0xfc48('0xc'),_0x1297a5,_0x322f32[_0xfc48('0x11')][_0xfc48('0x12')]);return _0x235a69(_0x322f32[_0xfc48('0x11')][_0xfc48('0x12')]);}else{logger[_0xfc48('0xb')](_0xfc48('0xc'),_0x1297a5,_0xfc48('0xf'));_0x235a69(_0x322f32[_0xfc48('0x13')]['message']);}})[_0xfc48('0x14')](function(_0x410aa3){logger[_0xfc48('0x11')](_0xfc48('0xc'),_0x1297a5,_0x410aa3);_0x522b59(_0x410aa3);});});}
\ No newline at end of file
index ae5cfb7..f4e38f6 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(_0x23cd72,_0x36299b){var _0x51b49d=function(_0x440de8){while(--_0x440de8){_0x23cd72['push'](_0x23cd72['shift']());}};_0x51b49d(++_0x36299b);}(_0x70e0,0x17b));var _0x070e=function(_0x537235,_0x237856){_0x537235=_0x537235-0x0;var _0x3281b2=_0x70e0[_0x537235];return _0x3281b2;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x25c665,_0x492f44){var _0x2b6cda=function(_0x3c169e){while(--_0x3c169e){_0x25c665['push'](_0x25c665['shift']());}};_0x2b6cda(++_0x492f44);}(_0xe706,0xa3));var _0x6e70=function(_0x31a16a,_0x1d60e3){_0x31a16a=_0x31a16a-0x0;var _0x21c892=_0xe706[_0x31a16a];return _0x21c892;};'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 98bd4aa..e764b3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d22=['INTEGER','sequelize','exports'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x6d22,0x112));var _0x26d2=function(_0xe09819,_0x1089b5){_0xe09819=_0xe09819-0x0;var _0xbf5565=_0x6d22[_0xe09819];return _0xbf5565;};'use strict';var Sequelize=require(_0x26d2('0x0'));module[_0x26d2('0x1')]={'penalty':{'type':Sequelize[_0x26d2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfda0=['INTEGER','sequelize','exports'];(function(_0xd8aad0,_0x4da2cd){var _0x570860=function(_0x1acc03){while(--_0x1acc03){_0xd8aad0['push'](_0xd8aad0['shift']());}};_0x570860(++_0x4da2cd);}(_0xfda0,0x17b));var _0x0fda=function(_0x575bef,_0x3c9bdd){_0x575bef=_0x575bef-0x0;var _0x330072=_0xfda0[_0x575bef];return _0x330072;};'use strict';var Sequelize=require(_0x0fda('0x0'));module[_0x0fda('0x1')]={'penalty':{'type':Sequelize[_0x0fda('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 6638c97..10d71b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd2=['./userMailQueue.attributes','exports','define','user_has_mail_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x593182,_0xdcba8e){var _0x23de6a=function(_0x275272){while(--_0x275272){_0x593182['push'](_0x593182['shift']());}};_0x23de6a(++_0xdcba8e);}(_0xddd2,0xf2));var _0x2ddd=function(_0x1abe13,_0x140231){_0x1abe13=_0x1abe13-0x0;var _0x4884b2=_0xddd2[_0x1abe13];return _0x4884b2;};'use strict';var _=require(_0x2ddd('0x0'));var util=require(_0x2ddd('0x1'));var logger=require(_0x2ddd('0x2'))(_0x2ddd('0x3'));var moment=require(_0x2ddd('0x4'));var BPromise=require(_0x2ddd('0x5'));var rp=require(_0x2ddd('0x6'));var fs=require('fs');var path=require(_0x2ddd('0x7'));var rimraf=require(_0x2ddd('0x8'));var config=require(_0x2ddd('0x9'));var attributes=require(_0x2ddd('0xa'));module[_0x2ddd('0xb')]=function(_0x33ed52,_0x3328e1){return _0x33ed52[_0x2ddd('0xc')]('UserMailQueue',attributes,{'tableName':_0x2ddd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5abf=['path','rimraf','../../config/environment','./userMailQueue.attributes','exports','api','bluebird','request-promise'];(function(_0x3e7243,_0x54780e){var _0x4b6c3c=function(_0x205049){while(--_0x205049){_0x3e7243['push'](_0x3e7243['shift']());}};_0x4b6c3c(++_0x54780e);}(_0x5abf,0x195));var _0xf5ab=function(_0x64b31d,_0x393b36){_0x64b31d=_0x64b31d-0x0;var _0x42c45b=_0x5abf[_0x64b31d];return _0x42c45b;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xf5ab('0x0'));var moment=require('moment');var BPromise=require(_0xf5ab('0x1'));var rp=require(_0xf5ab('0x2'));var fs=require('fs');var path=require(_0xf5ab('0x3'));var rimraf=require(_0xf5ab('0x4'));var config=require(_0xf5ab('0x5'));var attributes=require(_0xf5ab('0x6'));module[_0xf5ab('0x7')]=function(_0x1518d2,_0x12fcba){return _0x1518d2['define']('UserMailQueue',attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b283966..a6b2c95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['rpc','../../config/environment','jayson/promise','client','http','request','then','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger'];(function(_0x40013c,_0x352442){var _0x56d59d=function(_0x5f1210){while(--_0x5f1210){_0x40013c['push'](_0x40013c['shift']());}};_0x56d59d(++_0x352442);}(_0x55ca,0x126));var _0xa55c=function(_0x1c16a4,_0xbba97c){_0x1c16a4=_0x1c16a4-0x0;var _0xa47eb7=_0x55ca[_0x1c16a4];return _0xa47eb7;};'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')]('UserMailQueue,\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')]('UserMailQueue,\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);});});}
\ No newline at end of file
+var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x008c,0x188));var _0xc008=function(_0x4665b8,_0x234a28){_0x4665b8=_0x4665b8-0x0;var _0x54ba4c=_0x008c[_0x4665b8];return _0x54ba4c;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
index 32c574a..d5b1eb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4560=['./userNotification.controller','isAuthenticated','sendUserNotification','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x38fac5,_0x3afaea){var _0x581b80=function(_0x40e2b5){while(--_0x40e2b5){_0x38fac5['push'](_0x38fac5['shift']());}};_0x581b80(++_0x3afaea);}(_0x4560,0x90));var _0x0456=function(_0x45f014,_0x3556b4){_0x45f014=_0x45f014-0x0;var _0x353049=_0x4560[_0x45f014];return _0x353049;};'use strict';var multer=require('multer');var util=require(_0x0456('0x0'));var path=require('path');var timeout=require(_0x0456('0x1'));var express=require('express');var router=express[_0x0456('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0456('0x3'));var interaction=require(_0x0456('0x4'));var config=require(_0x0456('0x5'));var controller=require(_0x0456('0x6'));router['post']('/',auth[_0x0456('0x7')](),controller[_0x0456('0x8')]);module[_0x0456('0x9')]=router;
\ No newline at end of file
+var _0x15d5=['./userNotification.controller','sendUserNotification','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x329e79,_0xac77d2){var _0x22a675=function(_0x556127){while(--_0x556127){_0x329e79['push'](_0x329e79['shift']());}};_0x22a675(++_0xac77d2);}(_0x15d5,0x153));var _0x515d=function(_0x21cc88,_0x150e10){_0x21cc88=_0x21cc88-0x0;var _0x34bdde=_0x15d5[_0x21cc88];return _0x34bdde;};'use strict';var multer=require(_0x515d('0x0'));var util=require(_0x515d('0x1'));var path=require(_0x515d('0x2'));var timeout=require(_0x515d('0x3'));var express=require(_0x515d('0x4'));var router=express[_0x515d('0x5')]();var fs_extra=require(_0x515d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x515d('0x7'));var config=require(_0x515d('0x8'));var controller=require(_0x515d('0x9'));router['post']('/',auth['isAuthenticated'](),controller[_0x515d('0xa')]);module[_0x515d('0xb')]=router;
\ No newline at end of file
index da852e7..32bf811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3484=['STRING','TEXT','BOOLEAN','sequelize','exports'];(function(_0x3807f1,_0x200584){var _0x595fce=function(_0x2908f9){while(--_0x2908f9){_0x3807f1['push'](_0x3807f1['shift']());}};_0x595fce(++_0x200584);}(_0x3484,0x125));var _0x4348=function(_0x21d59b,_0x4c6fa7){_0x21d59b=_0x21d59b-0x0;var _0x5a14f6=_0x3484[_0x21d59b];return _0x5a14f6;};'use strict';var Sequelize=require(_0x4348('0x0'));module[_0x4348('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x4348('0x2')]},'recipientsId':{'type':Sequelize[_0x4348('0x3')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x4348('0x4')]}};
\ No newline at end of file
+var _0x4f17=['BOOLEAN','sequelize','exports','TEXT'];(function(_0x47ef18,_0x381ab1){var _0x3046f0=function(_0x5eefc0){while(--_0x5eefc0){_0x47ef18['push'](_0x47ef18['shift']());}};_0x3046f0(++_0x381ab1);}(_0x4f17,0xa1));var _0x74f1=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x4f17[_0x5e3b04];return _0x1fc44d;};'use strict';var Sequelize=require(_0x74f1('0x0'));module[_0x74f1('0x1')]={'body':{'type':Sequelize[_0x74f1('0x2')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x74f1('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x74f1('0x3')]}};
\ No newline at end of file
index acfd94e..3b10f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb7c=['Missing\x20\x27recipients\x27\x20parameter','ValidationError','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','smsqueue','voicequeue','team','user','some','model','senderName','recipientsDescription','isEmpty','beep','recipientsId','sortBy','sequelize','transaction','create','recipient','userNotification:send','catch','text','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','union','includes','queue','ids','forEach','push','all','flatten','findOne','map','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients'];(function(_0x5c0a18,_0x3da6ce){var _0x202b18=function(_0x4f56a9){while(--_0x4f56a9){_0x5c0a18['push'](_0x5c0a18['shift']());}};_0x202b18(++_0x3da6ce);}(_0xdb7c,0x1a9));var _0xcdb7=function(_0x403f5f,_0x283f67){_0x403f5f=_0x403f5f-0x0;var _0x15b1cd=_0xdb7c[_0x403f5f];return _0x15b1cd;};'use strict';var emlformat=require(_0xcdb7('0x0'));var rimraf=require(_0xcdb7('0x1'));var zipdir=require(_0xcdb7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcdb7('0x3'));var moment=require(_0xcdb7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xcdb7('0x5'));var util=require(_0xcdb7('0x6'));var path=require(_0xcdb7('0x7'));var sox=require(_0xcdb7('0x8'));var csv=require('to-csv');var ejs=require(_0xcdb7('0x9'));var fs=require('fs');var fs_extra=require(_0xcdb7('0xa'));var _=require('lodash');var squel=require(_0xcdb7('0xb'));var crypto=require(_0xcdb7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcdb7('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcdb7('0xe'));var Redis=require(_0xcdb7('0xf'));var authService=require(_0xcdb7('0x10'));var qs=require(_0xcdb7('0x11'));var as=require(_0xcdb7('0x12'));var hardwareService=require(_0xcdb7('0x13'));var logger=require(_0xcdb7('0x14'))(_0xcdb7('0x15'));var utils=require('../../config/utils');var config=require(_0xcdb7('0x16'));var licenseUtil=require(_0xcdb7('0x17'));var db=require(_0xcdb7('0x18'))['db'];config['redis']=_[_0xcdb7('0x19')](config[_0xcdb7('0x1a')],{'host':_0xcdb7('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcdb7('0x1a')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x161a38,_0x222e30){_0x222e30=_0x222e30||0xcc;return function(_0x1f5820){if(_0x1f5820){return _0x161a38[_0xcdb7('0x1c')](_0x222e30);}return _0x161a38[_0xcdb7('0x1d')](_0x222e30)[_0xcdb7('0x1e')]();};}function respondWithResult(_0x337f55,_0x14c89c){_0x14c89c=_0x14c89c||0xc8;return function(_0x18155a){if(_0x18155a){return _0x337f55['status'](_0x14c89c)[_0xcdb7('0x1f')](_0x18155a);}};}function respondWithFilteredResult(_0xac04c0,_0x57942d){return function(_0x3991ea){if(_0x3991ea){var _0x2fb476=typeof _0x57942d['offset']===_0xcdb7('0x20')&&typeof _0x57942d[_0xcdb7('0x21')]===_0xcdb7('0x20');var _0x5e86b0=_0x3991ea[_0xcdb7('0x22')];var _0x5b8b44=_0x2fb476?0x0:_0x57942d['offset'];var _0x284e57=_0x2fb476?_0x3991ea[_0xcdb7('0x22')]:_0x57942d[_0xcdb7('0x23')]+_0x57942d[_0xcdb7('0x21')];var _0xfacc2d;if(_0x284e57>=_0x5e86b0){_0x284e57=_0x5e86b0;_0xfacc2d=0xc8;}else{_0xfacc2d=0xce;}_0xac04c0['status'](_0xfacc2d);return _0xac04c0[_0xcdb7('0x24')](_0xcdb7('0x25'),_0x5b8b44+'-'+_0x284e57+'/'+_0x5e86b0)[_0xcdb7('0x1f')](_0x3991ea);}return null;};}function patchUpdates(_0x258ccc){return function(_0x3adfe8){try{jsonpatch[_0xcdb7('0x26')](_0x3adfe8,_0x258ccc,!![]);}catch(_0x12fc40){return BPromise[_0xcdb7('0x27')](_0x12fc40);}return _0x3adfe8['save']();};}function saveUpdates(_0x590c6f,_0xdb4097){return function(_0x31ee92){if(_0x31ee92){return _0x31ee92[_0xcdb7('0x28')](_0x590c6f)[_0xcdb7('0x29')](function(_0x4424b4){return _0x4424b4;});}return null;};}function removeEntity(_0x585355,_0x6c9882){return function(_0x26dc84){if(_0x26dc84){return _0x26dc84[_0xcdb7('0x2a')]()[_0xcdb7('0x29')](function(){_0x585355[_0xcdb7('0x1d')](0xcc)[_0xcdb7('0x1e')]();});}};}function handleEntityNotFound(_0x44890b,_0x3766b0){return function(_0x1050a5){if(!_0x1050a5){_0x44890b[_0xcdb7('0x1c')](0x194);}return _0x1050a5;};}function handleError(_0x3ea48d,_0x5933fc){_0x5933fc=_0x5933fc||0x1f4;return function(_0x37a99a){logger[_0xcdb7('0x2b')](_0x37a99a[_0xcdb7('0x2c')]);if(_0x37a99a[_0xcdb7('0x2d')]){delete _0x37a99a['name'];}_0x3ea48d[_0xcdb7('0x1d')](_0x5933fc)['send'](_0x37a99a);};}exports[_0xcdb7('0x2e')]=function(_0x30878b,_0x40c860,_0xa2d6a2){if(!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')]('text')&&!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x31'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x33'));}else{if(_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x31'))&&!_0x30878b[_0xcdb7('0x2f')]['hasOwnProperty'](_0xcdb7('0x34'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x35'));}if(!_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x30')](_0xcdb7('0x36'))){throw new db[(_0xcdb7('0x32'))]['ValidationError'](_0xcdb7('0x37'));}else{try{var _0x5172f7=JSON['parse'](_0x30878b[_0xcdb7('0x2f')]['recipients']);}catch(_0x2ebb46){logger['error'](_0x2ebb46);throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))](_0xcdb7('0x39'));}var _0x2375be=['chatqueue',_0xcdb7('0x3a'),_0xcdb7('0x3b'),'openchannelqueue',_0xcdb7('0x3c'),_0xcdb7('0x3d'),'whatsappqueue',_0xcdb7('0x3e'),_0xcdb7('0x3f')];if(_[_0xcdb7('0x40')](_0x5172f7,function(_0x56ba30){return!_['includes'](_0x2375be,_0x56ba30[_0xcdb7('0x41')]['toLowerCase']());})){throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x54b853={};_0x54b853[_0xcdb7('0x42')]=_0x30878b[_0xcdb7('0x2f')]['hasOwnProperty'](_0xcdb7('0x42'))?_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x42')]:_0x30878b['user']['fullname'];_0x54b853[_0xcdb7('0x43')]=_[_0xcdb7('0x44')](_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x43')])?null:_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x43')];_0x54b853['beep']=_0x30878b[_0xcdb7('0x2f')][_0xcdb7('0x45')]||![];_0x54b853['SenderId']=_0x30878b[_0xcdb7('0x3f')]['id'];return getContent(_0x30878b[_0xcdb7('0x2f')])[_0xcdb7('0x29')](function(_0x1819d2){_0x54b853['body']=_0x1819d2;return getRecipients(_0x5172f7);})[_0xcdb7('0x29')](function(_0x59e67b){_0x54b853[_0xcdb7('0x46')]=_[_0xcdb7('0x47')](_0x59e67b)['join'](',');return db[_0xcdb7('0x48')][_0xcdb7('0x49')](function(_0x524616){return db['UserNotification'][_0xcdb7('0x4a')](_0x54b853,{'raw':!![],'transaction':_0x524616})['then'](function(_0x36aa61){var _0x3f957a={'sender':_0x54b853[_0xcdb7('0x42')],'description':_0x54b853['recipientsDescription'],'content':_0x54b853['body'],'beep':_0x54b853['beep']};_0x59e67b['forEach'](function(_0x1c90dd){_0x3f957a[_0xcdb7('0x4b')]=_0x1c90dd;socket['emit'](_0xcdb7('0x4c'),_0x3f957a);});return _0x36aa61;});});})[_0xcdb7('0x29')](respondWithResult(_0x40c860,0xc9))[_0xcdb7('0x4d')](handleError(_0x40c860,null));};function getContent(_0x1deffe){return new BPromise(function(_0x14eb17,_0x404d97){if(_0x1deffe[_0xcdb7('0x4e')]){_0x14eb17(_0x1deffe[_0xcdb7('0x4e')]);return;}return db[_0xcdb7('0x4f')]['findOne']({'attributes':[_0xcdb7('0x50')],'where':{'id':_0x1deffe[_0xcdb7('0x31')]},'raw':!![]})['then'](function(_0x4a22cb){if(!_0x4a22cb)throw new db[(_0xcdb7('0x32'))][(_0xcdb7('0x38'))](_0xcdb7('0x51'));var _0x1a156e=Mustache[_0xcdb7('0x52')](_0x4a22cb[_0xcdb7('0x50')],_0x1deffe[_0xcdb7('0x34')]);_0x14eb17(_0x1a156e);})[_0xcdb7('0x4d')](function(_0x88ae5d){_0x404d97(_0x88ae5d);});});}function getRecipients(_0x2a0a19){return new BPromise(function(_0x4c1360,_0x384b8c){var _0x595526=[];var _0x2c96f9=[];_0x2a0a19['forEach'](function(_0x4f697c){var _0x280953=_[_0xcdb7('0x53')](_0x4f697c[_0xcdb7('0x41')][_0xcdb7('0x54')]());if(_0x280953===_0xcdb7('0x55')){_0x595526=_[_0xcdb7('0x56')](_0x595526,_0x4f697c['ids']);}else{if(_[_0xcdb7('0x57')](_0x280953,'queue'))_0x280953=_0x280953['replace'](_0xcdb7('0x58'),'Queue');_0x4f697c[_0xcdb7('0x59')][_0xcdb7('0x5a')](function(_0x49e7dd){_0x2c96f9[_0xcdb7('0x5b')](getAgents(_0x280953,_0x49e7dd));});}});return BPromise[_0xcdb7('0x5c')](_0x2c96f9)[_0xcdb7('0x29')](function(_0x5094b2){_0x595526=_['union'](_0x595526,_[_0xcdb7('0x5d')](_0x5094b2));_0x4c1360(_0x595526);})['catch'](function(_0xed1c42){_0x384b8c(_0xed1c42);});});}function getAgents(_0x3e1d41,_0x194906){return new BPromise(function(_0x4e1c96,_0x21350a){return db[_0x3e1d41][_0xcdb7('0x5e')]({'where':{'id':_0x194906}})[_0xcdb7('0x29')](function(_0x417c63){return _0x417c63['getAgents']({'attributes':['id'],'raw':!![]})[_0xcdb7('0x29')](function(_0x53c76c){var _0x3742f6=_[_0xcdb7('0x5f')](_0x53c76c,'id');_0x4e1c96(_0x3742f6);});})[_0xcdb7('0x4d')](function(_0x13c418){_0x21350a(_0x13c418);});});}
\ No newline at end of file
+var _0x9f51=['union','ids','includes','queue','Queue','push','all','findOne','map','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','undefined','limit','count','apply','reject','then','destroy','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','smsqueue','voicequeue','user','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','recipientsId','join','sequelize','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','Template','html','startCase','model','User'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x9f51,0x126));var _0x19f5=function(_0x48e86c,_0x9f034d){_0x48e86c=_0x48e86c-0x0;var _0x54fa11=_0x9f51[_0x48e86c];return _0x54fa11;};'use strict';var emlformat=require(_0x19f5('0x0'));var rimraf=require(_0x19f5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x19f5('0x2'));var rp=require(_0x19f5('0x3'));var moment=require(_0x19f5('0x4'));var BPromise=require(_0x19f5('0x5'));var Mustache=require(_0x19f5('0x6'));var util=require(_0x19f5('0x7'));var path=require(_0x19f5('0x8'));var sox=require('sox');var csv=require(_0x19f5('0x9'));var ejs=require(_0x19f5('0xa'));var fs=require('fs');var fs_extra=require(_0x19f5('0xb'));var _=require(_0x19f5('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x19f5('0xd'));var toCsv=require(_0x19f5('0x9'));var querystring=require(_0x19f5('0xe'));var Papa=require(_0x19f5('0xf'));var Redis=require(_0x19f5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x19f5('0x11'));var as=require(_0x19f5('0x12'));var hardwareService=require(_0x19f5('0x13'));var logger=require(_0x19f5('0x14'))(_0x19f5('0x15'));var utils=require('../../config/utils');var config=require(_0x19f5('0x16'));var licenseUtil=require(_0x19f5('0x17'));var db=require(_0x19f5('0x18'))['db'];config[_0x19f5('0x19')]=_[_0x19f5('0x1a')](config['redis'],{'host':_0x19f5('0x1b'),'port':0x18eb});var socket=require(_0x19f5('0x1c'))(new Redis(config[_0x19f5('0x19')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0xdaf322,_0x1f95e1){_0x1f95e1=_0x1f95e1||0xcc;return function(_0x22e4ad){if(_0x22e4ad){return _0xdaf322[_0x19f5('0x1d')](_0x1f95e1);}return _0xdaf322[_0x19f5('0x1e')](_0x1f95e1)[_0x19f5('0x1f')]();};}function respondWithResult(_0x349e23,_0x59d788){_0x59d788=_0x59d788||0xc8;return function(_0x1e82bd){if(_0x1e82bd){return _0x349e23[_0x19f5('0x1e')](_0x59d788)[_0x19f5('0x20')](_0x1e82bd);}};}function respondWithFilteredResult(_0x194634,_0x43091a){return function(_0x4bee1c){if(_0x4bee1c){var _0x2c57e4=typeof _0x43091a['offset']===_0x19f5('0x21')&&typeof _0x43091a[_0x19f5('0x22')]===_0x19f5('0x21');var _0x39d562=_0x4bee1c[_0x19f5('0x23')];var _0x23d58f=_0x2c57e4?0x0:_0x43091a['offset'];var _0x8da8da=_0x2c57e4?_0x4bee1c[_0x19f5('0x23')]:_0x43091a['offset']+_0x43091a[_0x19f5('0x22')];var _0xe0a84d;if(_0x8da8da>=_0x39d562){_0x8da8da=_0x39d562;_0xe0a84d=0xc8;}else{_0xe0a84d=0xce;}_0x194634[_0x19f5('0x1e')](_0xe0a84d);return _0x194634['set']('Content-Range',_0x23d58f+'-'+_0x8da8da+'/'+_0x39d562)['json'](_0x4bee1c);}return null;};}function patchUpdates(_0x58d647){return function(_0x113b39){try{jsonpatch[_0x19f5('0x24')](_0x113b39,_0x58d647,!![]);}catch(_0x5c6211){return BPromise[_0x19f5('0x25')](_0x5c6211);}return _0x113b39['save']();};}function saveUpdates(_0x218c61,_0x1aa4f9){return function(_0x19a66c){if(_0x19a66c){return _0x19a66c['update'](_0x218c61)[_0x19f5('0x26')](function(_0x58cb09){return _0x58cb09;});}return null;};}function removeEntity(_0x593656,_0x5345e3){return function(_0x13002b){if(_0x13002b){return _0x13002b[_0x19f5('0x27')]()[_0x19f5('0x26')](function(){_0x593656[_0x19f5('0x1e')](0xcc)[_0x19f5('0x1f')]();});}};}function handleEntityNotFound(_0x5032bc,_0x31efcc){return function(_0x12c511){if(!_0x12c511){_0x5032bc[_0x19f5('0x1d')](0x194);}return _0x12c511;};}function handleError(_0x2290f5,_0x2d074e){_0x2d074e=_0x2d074e||0x1f4;return function(_0x4cbc3f){logger['error'](_0x4cbc3f[_0x19f5('0x28')]);if(_0x4cbc3f['name']){delete _0x4cbc3f[_0x19f5('0x29')];}_0x2290f5[_0x19f5('0x1e')](_0x2d074e)[_0x19f5('0x2a')](_0x4cbc3f);};}exports[_0x19f5('0x2b')]=function(_0x10ff7d,_0x3ee530,_0x463414){if(!_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x2d')](_0x19f5('0x2e'))&&!_0x10ff7d['body']['hasOwnProperty'](_0x19f5('0x2f'))){throw new db[(_0x19f5('0x30'))][(_0x19f5('0x31'))](_0x19f5('0x32'));}else{if(_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x2d')](_0x19f5('0x2f'))&&!_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x2d')](_0x19f5('0x33'))){throw new db['Sequelize'][(_0x19f5('0x31'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0x10ff7d[_0x19f5('0x2c')]['hasOwnProperty'](_0x19f5('0x34'))){throw new db[(_0x19f5('0x30'))][(_0x19f5('0x31'))](_0x19f5('0x35'));}else{try{var _0x17c773=JSON[_0x19f5('0x36')](_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x34')]);}catch(_0x5755e3){logger[_0x19f5('0x37')](_0x5755e3);throw new db[(_0x19f5('0x30'))][(_0x19f5('0x31'))](_0x19f5('0x38'));}var _0x373be6=[_0x19f5('0x39'),_0x19f5('0x3a'),_0x19f5('0x3b'),'openchannelqueue',_0x19f5('0x3c'),_0x19f5('0x3d'),'whatsappqueue','team',_0x19f5('0x3e')];if(_['some'](_0x17c773,function(_0x20f510){return!_['includes'](_0x373be6,_0x20f510['model'][_0x19f5('0x3f')]());})){throw new db[(_0x19f5('0x30'))][(_0x19f5('0x31'))](_0x19f5('0x40'));}}}var _0x46a452={};_0x46a452[_0x19f5('0x41')]=_0x10ff7d[_0x19f5('0x2c')]['hasOwnProperty'](_0x19f5('0x41'))?_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x41')]:_0x10ff7d['user'][_0x19f5('0x42')];_0x46a452['recipientsDescription']=_[_0x19f5('0x43')](_0x10ff7d['body'][_0x19f5('0x44')])?null:_0x10ff7d[_0x19f5('0x2c')][_0x19f5('0x44')];_0x46a452[_0x19f5('0x45')]=_0x10ff7d[_0x19f5('0x2c')]['beep']||![];_0x46a452[_0x19f5('0x46')]=_0x10ff7d[_0x19f5('0x3e')]['id'];return getContent(_0x10ff7d[_0x19f5('0x2c')])[_0x19f5('0x26')](function(_0x21bfb5){_0x46a452[_0x19f5('0x2c')]=_0x21bfb5;return getRecipients(_0x17c773);})[_0x19f5('0x26')](function(_0x1ffb27){_0x46a452[_0x19f5('0x47')]=_['sortBy'](_0x1ffb27)[_0x19f5('0x48')](',');return db[_0x19f5('0x49')]['transaction'](function(_0x178fc0){return db[_0x19f5('0x4a')][_0x19f5('0x4b')](_0x46a452,{'raw':!![],'transaction':_0x178fc0})[_0x19f5('0x26')](function(_0x46bd76){var _0xf0d575={'sender':_0x46a452[_0x19f5('0x41')],'description':_0x46a452['recipientsDescription'],'content':_0x46a452[_0x19f5('0x2c')],'beep':_0x46a452['beep']};_0x1ffb27[_0x19f5('0x4c')](function(_0x284869){_0xf0d575[_0x19f5('0x4d')]=_0x284869;socket[_0x19f5('0x4e')](_0x19f5('0x4f'),_0xf0d575);});return _0x46bd76;});});})['then'](respondWithResult(_0x3ee530,0xc9))[_0x19f5('0x50')](handleError(_0x3ee530,null));};function getContent(_0x2e94ed){return new BPromise(function(_0x4801d9,_0x459e7e){if(_0x2e94ed[_0x19f5('0x2e')]){_0x4801d9(_0x2e94ed[_0x19f5('0x2e')]);return;}return db[_0x19f5('0x51')]['findOne']({'attributes':[_0x19f5('0x52')],'where':{'id':_0x2e94ed[_0x19f5('0x2f')]},'raw':!![]})[_0x19f5('0x26')](function(_0x5abd83){if(!_0x5abd83)throw new db['Sequelize'][(_0x19f5('0x31'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0xf5c74f=Mustache['render'](_0x5abd83[_0x19f5('0x52')],_0x2e94ed['view']);_0x4801d9(_0xf5c74f);})[_0x19f5('0x50')](function(_0x1807ae){_0x459e7e(_0x1807ae);});});}function getRecipients(_0x21dbc2){return new BPromise(function(_0x2278da,_0x3a7928){var _0x353400=[];var _0x44a21d=[];_0x21dbc2[_0x19f5('0x4c')](function(_0x1e9611){var _0x53ae4d=_[_0x19f5('0x53')](_0x1e9611[_0x19f5('0x54')][_0x19f5('0x3f')]());if(_0x53ae4d===_0x19f5('0x55')){_0x353400=_[_0x19f5('0x56')](_0x353400,_0x1e9611[_0x19f5('0x57')]);}else{if(_[_0x19f5('0x58')](_0x53ae4d,_0x19f5('0x59')))_0x53ae4d=_0x53ae4d['replace'](_0x19f5('0x59'),_0x19f5('0x5a'));_0x1e9611[_0x19f5('0x57')][_0x19f5('0x4c')](function(_0x2141e7){_0x44a21d[_0x19f5('0x5b')](getAgents(_0x53ae4d,_0x2141e7));});}});return BPromise[_0x19f5('0x5c')](_0x44a21d)[_0x19f5('0x26')](function(_0x51c53a){_0x353400=_[_0x19f5('0x56')](_0x353400,_['flatten'](_0x51c53a));_0x2278da(_0x353400);})['catch'](function(_0x5bf844){_0x3a7928(_0x5bf844);});});}function getAgents(_0x36878c,_0x2703db){return new BPromise(function(_0x5df370,_0x2544a1){return db[_0x36878c][_0x19f5('0x5d')]({'where':{'id':_0x2703db}})['then'](function(_0x483f7c){return _0x483f7c['getAgents']({'attributes':['id'],'raw':!![]})[_0x19f5('0x26')](function(_0x1fa140){var _0x250eb1=_[_0x19f5('0x5e')](_0x1fa140,'id');_0x5df370(_0x250eb1);});})['catch'](function(_0x55f26a){_0x2544a1(_0x55f26a);});});}
\ No newline at end of file
index 9aace4a..8394060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f4=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','setMaxListeners'];(function(_0x2373a9,_0x18d906){var _0x39547a=function(_0x5a1976){while(--_0x5a1976){_0x2373a9['push'](_0x2373a9['shift']());}};_0x39547a(++_0x18d906);}(_0xb5f4,0x13c));var _0x4b5f=function(_0x1bccc4,_0x3c718d){_0x1bccc4=_0x1bccc4-0x0;var _0x40fea2=_0xb5f4[_0x1bccc4];return _0x40fea2;};'use strict';var EventEmitter=require(_0x4b5f('0x0'));var UserNotification=require(_0x4b5f('0x1'))['db'][_0x4b5f('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x4b5f('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b5f('0x4'),'afterDestroy':_0x4b5f('0x5')};function emitEvent(_0x235c50){return function(_0x26e460,_0xde692c,_0x230a0e){UserNotificationEvents[_0x4b5f('0x6')](_0x235c50+':'+_0x26e460['id'],_0x26e460);UserNotificationEvents[_0x4b5f('0x6')](_0x235c50,_0x26e460);_0x230a0e(null);};}for(var e in events){if(events[_0x4b5f('0x7')](e)){var event=events[e];UserNotification[_0x4b5f('0x8')](e,emitEvent(event));}}module[_0x4b5f('0x9')]=UserNotificationEvents;
\ No newline at end of file
+var _0x2939=['emit','hook','exports','../../mysqldb','UserNotification','setMaxListeners','update','remove'];(function(_0x214437,_0x33bcaf){var _0x263a24=function(_0x4bd94b){while(--_0x4bd94b){_0x214437['push'](_0x214437['shift']());}};_0x263a24(++_0x33bcaf);}(_0x2939,0x7b));var _0x9293=function(_0x1a6e4e,_0x42d8f1){_0x1a6e4e=_0x1a6e4e-0x0;var _0x45bca1=_0x2939[_0x1a6e4e];return _0x45bca1;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0x9293('0x0'))['db'][_0x9293('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x9293('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9293('0x3'),'afterDestroy':_0x9293('0x4')};function emitEvent(_0x1c13eb){return function(_0x67c3f7,_0x1ec664,_0x271776){UserNotificationEvents[_0x9293('0x5')](_0x1c13eb+':'+_0x67c3f7['id'],_0x67c3f7);UserNotificationEvents[_0x9293('0x5')](_0x1c13eb,_0x67c3f7);_0x271776(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0x9293('0x6')](e,emitEvent(event));}}module[_0x9293('0x7')]=UserNotificationEvents;
\ No newline at end of file
index d1cfa79..7af8e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7255=['userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','./userNotification.attributes','exports','define','UserNotification'];(function(_0x38144e,_0xfd746b){var _0x4843dd=function(_0x133bc1){while(--_0x133bc1){_0x38144e['push'](_0x38144e['shift']());}};_0x4843dd(++_0xfd746b);}(_0x7255,0x1bd));var _0x5725=function(_0x3f6db3,_0x3021fb){_0x3f6db3=_0x3f6db3-0x0;var _0x406ad9=_0x7255[_0x3f6db3];return _0x406ad9;};'use strict';var _=require(_0x5725('0x0'));var util=require(_0x5725('0x1'));var logger=require(_0x5725('0x2'))(_0x5725('0x3'));var moment=require(_0x5725('0x4'));var BPromise=require('bluebird');var rp=require(_0x5725('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5725('0x6'));module[_0x5725('0x7')]=function(_0x3ea8e8,_0x586966){return _0x3ea8e8[_0x5725('0x8')](_0x5725('0x9'),attributes,{'tableName':_0x5725('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5725('0xb'),'collate':_0x5725('0xc')});};
\ No newline at end of file
+var _0x7403=['path','../../config/environment','./userNotification.attributes','define','utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x397cb6,_0x50a0f1){var _0x52f7d1=function(_0x45bb0b){while(--_0x45bb0b){_0x397cb6['push'](_0x397cb6['shift']());}};_0x52f7d1(++_0x50a0f1);}(_0x7403,0xc0));var _0x3740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7403[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3740('0x0'));var util=require(_0x3740('0x1'));var logger=require(_0x3740('0x2'))('api');var moment=require(_0x3740('0x3'));var BPromise=require(_0x3740('0x4'));var rp=require(_0x3740('0x5'));var fs=require('fs');var path=require(_0x3740('0x6'));var rimraf=require('rimraf');var config=require(_0x3740('0x7'));var attributes=require(_0x3740('0x8'));module['exports']=function(_0x1748e9,_0x4855be){return _0x1748e9[_0x3740('0x9')]('UserNotification',attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3740('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ecfabeb..9a307dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35b=['defaults','localhost','socket.io-emitter','redis','./userNotification.socket','request','then','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http'];(function(_0xba6c79,_0x15da18){var _0x2fa92c=function(_0x54449b){while(--_0x54449b){_0xba6c79['push'](_0xba6c79['shift']());}};_0x2fa92c(++_0x15da18);}(_0xe35b,0x69));var _0xbe35=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe35b[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xbe35('0x0'));var util=require(_0xbe35('0x1'));var moment=require(_0xbe35('0x2'));var BPromise=require(_0xbe35('0x3'));var rs=require(_0xbe35('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbe35('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbe35('0x6'));var config=require(_0xbe35('0x7'));var jayson=require(_0xbe35('0x8'));var client=jayson[_0xbe35('0x9')][_0xbe35('0xa')]({'port':0x232a});config['redis']=_[_0xbe35('0xb')](config['redis'],{'host':_0xbe35('0xc'),'port':0x18eb});var socket=require(_0xbe35('0xd'))(new Redis(config[_0xbe35('0xe')]));require(_0xbe35('0xf'))['register'](socket);function respondWithRpcPromise(_0x823baf,_0x5e449b,_0x10ad02){return new BPromise(function(_0x426ac7,_0x43ab3f){return client[_0xbe35('0x10')](_0x823baf,_0x10ad02)[_0xbe35('0x11')](function(_0x30679d){logger['info'](_0xbe35('0x12'),_0x5e449b,_0xbe35('0x13'));logger[_0xbe35('0x14')](_0xbe35('0x15'),_0x5e449b,_0xbe35('0x13'),JSON[_0xbe35('0x16')](_0x30679d));if(_0x30679d['error']){if(_0x30679d[_0xbe35('0x17')][_0xbe35('0x18')]===0x1f4){logger[_0xbe35('0x17')](_0xbe35('0x12'),_0x5e449b,_0x30679d[_0xbe35('0x17')][_0xbe35('0x19')]);return _0x43ab3f(_0x30679d[_0xbe35('0x17')]['message']);}logger[_0xbe35('0x17')]('UserNotification,\x20%s,\x20%s',_0x5e449b,_0x30679d['error'][_0xbe35('0x19')]);return _0x426ac7(_0x30679d[_0xbe35('0x17')][_0xbe35('0x19')]);}else{logger[_0xbe35('0x1a')](_0xbe35('0x12'),_0x5e449b,_0xbe35('0x13'));_0x426ac7(_0x30679d[_0xbe35('0x1b')][_0xbe35('0x19')]);}})[_0xbe35('0x1c')](function(_0x10c986){logger[_0xbe35('0x17')](_0xbe35('0x12'),_0x5e449b,_0x10c986);_0x43ab3f(_0x10c986);});});}
\ No newline at end of file
+var _0x51bd=['error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x51bd,0x184));var _0xd51b=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x51bd[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xd51b('0x0'));var util=require('util');var moment=require(_0xd51b('0x1'));var BPromise=require(_0xd51b('0x2'));var rs=require(_0xd51b('0x3'));var fs=require('fs');var Redis=require(_0xd51b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd51b('0x5'));var logger=require(_0xd51b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xd51b('0x7')]({'port':0x232a});config[_0xd51b('0x8')]=_[_0xd51b('0x9')](config[_0xd51b('0x8')],{'host':_0xd51b('0xa'),'port':0x18eb});var socket=require(_0xd51b('0xb'))(new Redis(config[_0xd51b('0x8')]));require(_0xd51b('0xc'))[_0xd51b('0xd')](socket);function respondWithRpcPromise(_0xbbd3dd,_0x257d57,_0x1d4f78){return new BPromise(function(_0x36036e,_0xe60f6f){return client['request'](_0xbbd3dd,_0x1d4f78)['then'](function(_0x3d41b1){logger[_0xd51b('0xe')](_0xd51b('0xf'),_0x257d57,_0xd51b('0x10'));logger[_0xd51b('0x11')](_0xd51b('0x12'),_0x257d57,_0xd51b('0x10'),JSON[_0xd51b('0x13')](_0x3d41b1));if(_0x3d41b1['error']){if(_0x3d41b1[_0xd51b('0x14')][_0xd51b('0x15')]===0x1f4){logger[_0xd51b('0x14')](_0xd51b('0xf'),_0x257d57,_0x3d41b1['error'][_0xd51b('0x16')]);return _0xe60f6f(_0x3d41b1[_0xd51b('0x14')][_0xd51b('0x16')]);}logger[_0xd51b('0x14')](_0xd51b('0xf'),_0x257d57,_0x3d41b1[_0xd51b('0x14')]['message']);return _0x36036e(_0x3d41b1[_0xd51b('0x14')]['message']);}else{logger[_0xd51b('0xe')](_0xd51b('0xf'),_0x257d57,_0xd51b('0x10'));_0x36036e(_0x3d41b1['result'][_0xd51b('0x16')]);}})[_0xd51b('0x17')](function(_0x19cce5){logger[_0xd51b('0x14')](_0xd51b('0xf'),_0x257d57,_0x19cce5);_0xe60f6f(_0x19cce5);});});}
\ No newline at end of file
index a0e2231..9d54ece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x943c=['update','emit','register','length','userNotification:','./userNotification.events','save'];(function(_0x4cf39f,_0x3085ff){var _0x3416a0=function(_0x4f044c){while(--_0x4f044c){_0x4cf39f['push'](_0x4cf39f['shift']());}};_0x3416a0(++_0x3085ff);}(_0x943c,0xec));var _0xc943=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x943c[_0x3dd15e];return _0x231fd0;};'use strict';var UserNotificationEvents=require(_0xc943('0x0'));var events=[_0xc943('0x1'),'remove',_0xc943('0x2')];function createListener(_0x25ca46,_0x508758){return function(_0x4e3379){_0x508758[_0xc943('0x3')](_0x25ca46,_0x4e3379);};}function removeListener(_0x560aaa,_0x5a5312){return function(){UserNotificationEvents['removeListener'](_0x560aaa,_0x5a5312);};}exports[_0xc943('0x4')]=function(_0x36552a){for(var _0x2628ee=0x0,_0xc8d9f1=events[_0xc943('0x5')];_0x2628ee<_0xc8d9f1;_0x2628ee++){var _0x42438d=events[_0x2628ee];var _0x365606=createListener(_0xc943('0x6')+_0x42438d,_0x36552a);UserNotificationEvents['on'](_0x42438d,_0x365606);}};
\ No newline at end of file
+var _0xf5a5=['update','emit','removeListener','register','length','./userNotification.events','save','remove'];(function(_0x4bfb2c,_0x45ea63){var _0x2abda4=function(_0x4f8ba6){while(--_0x4f8ba6){_0x4bfb2c['push'](_0x4bfb2c['shift']());}};_0x2abda4(++_0x45ea63);}(_0xf5a5,0xbd));var _0x5f5a=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xf5a5[_0x3b380d];return _0x54502b;};'use strict';var UserNotificationEvents=require(_0x5f5a('0x0'));var events=[_0x5f5a('0x1'),_0x5f5a('0x2'),_0x5f5a('0x3')];function createListener(_0xd18208,_0x376f34){return function(_0x4ca6e4){_0x376f34[_0x5f5a('0x4')](_0xd18208,_0x4ca6e4);};}function removeListener(_0x429e26,_0x4646c2){return function(){UserNotificationEvents[_0x5f5a('0x5')](_0x429e26,_0x4646c2);};}exports[_0x5f5a('0x6')]=function(_0x5589d8){for(var _0x10693d=0x0,_0x51dd7d=events[_0x5f5a('0x7')];_0x10693d<_0x51dd7d;_0x10693d++){var _0x1b4dfb=events[_0x10693d];var _0x4e7a6d=createListener('userNotification:'+_0x1b4dfb,_0x5589d8);UserNotificationEvents['on'](_0x1b4dfb,_0x4e7a6d);}};
\ No newline at end of file
index 541f20f..ae9c49e 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(_0x3403bd,_0x2231f2){var _0x5941f8=function(_0x4140c0){while(--_0x4140c0){_0x3403bd['push'](_0x3403bd['shift']());}};_0x5941f8(++_0x2231f2);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x25f7d9,_0x5723fc){var _0x3763c2=function(_0x224f29){while(--_0x224f29){_0x25f7d9['push'](_0x25f7d9['shift']());}};_0x3763c2(++_0x5723fc);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcb91[_0x3dd15e];return _0x231fd0;};'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 6dadd1a..bfdb066 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x785d=['sequelize','exports','INTEGER'];(function(_0x228dea,_0x397b4a){var _0x3f448f=function(_0x2dd56d){while(--_0x2dd56d){_0x228dea['push'](_0x228dea['shift']());}};_0x3f448f(++_0x397b4a);}(_0x785d,0x90));var _0xd785=function(_0xe3efc2,_0x70d40e){_0xe3efc2=_0xe3efc2-0x0;var _0x34fcbe=_0x785d[_0xe3efc2];return _0x34fcbe;};'use strict';var Sequelize=require(_0xd785('0x0'));module[_0xd785('0x1')]={'penalty':{'type':Sequelize[_0xd785('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2aaa=['INTEGER','exports'];(function(_0x3bb787,_0x484097){var _0x1c1428=function(_0xad3f70){while(--_0xad3f70){_0x3bb787['push'](_0x3bb787['shift']());}};_0x1c1428(++_0x484097);}(_0x2aaa,0x185));var _0xa2aa=function(_0x29deb7,_0x3218be){_0x29deb7=_0x29deb7-0x0;var _0x55def0=_0x2aaa[_0x29deb7];return _0x55def0;};'use strict';var Sequelize=require('sequelize');module[_0xa2aa('0x0')]={'penalty':{'type':Sequelize[_0xa2aa('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 0d4d66b..350f8c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218e=['path','rimraf','../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4b573a,_0x13828a){var _0x1ae343=function(_0x325298){while(--_0x325298){_0x4b573a['push'](_0x4b573a['shift']());}};_0x1ae343(++_0x13828a);}(_0x218e,0x180));var _0xe218=function(_0x479cee,_0x194f80){_0x479cee=_0x479cee-0x0;var _0x12259b=_0x218e[_0x479cee];return _0x12259b;};'use strict';var _=require(_0xe218('0x0'));var util=require(_0xe218('0x1'));var logger=require(_0xe218('0x2'))(_0xe218('0x3'));var moment=require(_0xe218('0x4'));var BPromise=require(_0xe218('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe218('0x6'));var rimraf=require(_0xe218('0x7'));var config=require(_0xe218('0x8'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xe218('0x9')]=function(_0x276c9d,_0x784f40){return _0x276c9d[_0xe218('0xa')](_0xe218('0xb'),attributes,{'tableName':_0xe218('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x78ec=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','util','../../config/logger'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x78ec,0x1c1));var _0xc78e=function(_0x5ac2c7,_0x24898f){_0x5ac2c7=_0x5ac2c7-0x0;var _0x3ab066=_0x78ec[_0x5ac2c7];return _0x3ab066;};'use strict';var _=require('lodash');var util=require(_0xc78e('0x0'));var logger=require(_0xc78e('0x1'))(_0xc78e('0x2'));var moment=require(_0xc78e('0x3'));var BPromise=require(_0xc78e('0x4'));var rp=require(_0xc78e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc78e('0x6'));var config=require(_0xc78e('0x7'));var attributes=require(_0xc78e('0x8'));module['exports']=function(_0x47a937,_0x1aecde){return _0x47a937[_0xc78e('0x9')](_0xc78e('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01655d5..dc317c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d55=['result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message'];(function(_0x37dec0,_0x4327ea){var _0x2307c4=function(_0x1a2167){while(--_0x1a2167){_0x37dec0['push'](_0x37dec0['shift']());}};_0x2307c4(++_0x4327ea);}(_0x9d55,0x1e5));var _0x59d5=function(_0x55fad8,_0x128008){_0x55fad8=_0x55fad8-0x0;var _0x492599=_0x9d55[_0x55fad8];return _0x492599;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x59d5('0x0'));var BPromise=require(_0x59d5('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x59d5('0x2'));var db=require(_0x59d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x59d5('0x4'))(_0x59d5('0x5'));var config=require(_0x59d5('0x6'));var jayson=require(_0x59d5('0x7'));var client=jayson[_0x59d5('0x8')][_0x59d5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x56436d,_0x15efba,_0x49f9e7){return new BPromise(function(_0x43300b,_0x1a5287){return client[_0x59d5('0xa')](_0x56436d,_0x49f9e7)[_0x59d5('0xb')](function(_0x128071){logger[_0x59d5('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x15efba,_0x59d5('0xd'));logger[_0x59d5('0xe')](_0x59d5('0xf'),_0x15efba,_0x59d5('0xd'),JSON[_0x59d5('0x10')](_0x128071));if(_0x128071[_0x59d5('0x11')]){if(_0x128071['error'][_0x59d5('0x12')]===0x1f4){logger[_0x59d5('0x11')](_0x59d5('0x13'),_0x15efba,_0x128071['error'][_0x59d5('0x14')]);return _0x1a5287(_0x128071[_0x59d5('0x11')][_0x59d5('0x14')]);}logger[_0x59d5('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x15efba,_0x128071[_0x59d5('0x11')][_0x59d5('0x14')]);return _0x43300b(_0x128071[_0x59d5('0x11')][_0x59d5('0x14')]);}else{logger[_0x59d5('0xc')](_0x59d5('0x13'),_0x15efba,_0x59d5('0xd'));_0x43300b(_0x128071[_0x59d5('0x15')][_0x59d5('0x14')]);}})[_0x59d5('0x16')](function(_0x4656cb){logger['error'](_0x59d5('0x13'),_0x15efba,_0x4656cb);_0x1a5287(_0x4656cb);});});}
\ No newline at end of file
+var _0x0694=['randomstring','../../mysqldb','../../config/logger','../../config/environment','http','then','request\x20sent','debug','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','moment'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0x0694,0x11e));var _0x4069=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x0694[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0x4069('0x0'));var util=require('util');var moment=require(_0x4069('0x1'));var BPromise=require('bluebird');var rs=require(_0x4069('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4069('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x4069('0x4'))('rpc');var config=require(_0x4069('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4069('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2a177d,_0x30153e,_0x3545f2){return new BPromise(function(_0x59d31b,_0x310f24){return client['request'](_0x2a177d,_0x3545f2)[_0x4069('0x7')](function(_0x14bf47){logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x30153e,_0x4069('0x8'));logger[_0x4069('0x9')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x30153e,_0x4069('0x8'),JSON['stringify'](_0x14bf47));if(_0x14bf47[_0x4069('0xa')]){if(_0x14bf47[_0x4069('0xa')][_0x4069('0xb')]===0x1f4){logger[_0x4069('0xa')](_0x4069('0xc'),_0x30153e,_0x14bf47[_0x4069('0xa')][_0x4069('0xd')]);return _0x310f24(_0x14bf47[_0x4069('0xa')]['message']);}logger['error'](_0x4069('0xc'),_0x30153e,_0x14bf47['error'][_0x4069('0xd')]);return _0x59d31b(_0x14bf47[_0x4069('0xa')][_0x4069('0xd')]);}else{logger['info'](_0x4069('0xc'),_0x30153e,_0x4069('0x8'));_0x59d31b(_0x14bf47[_0x4069('0xe')][_0x4069('0xd')]);}})[_0x4069('0xf')](function(_0x552c5b){logger[_0x4069('0xa')](_0x4069('0xc'),_0x30153e,_0x552c5b);_0x310f24(_0x552c5b);});});}
\ No newline at end of file
index 7e8898d..6cd908b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7477=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','show','getSections','/:id/resources','post','/:id/clone','clone','/:id/sections','addResources','put','/:id','delete','destroy','removeResources','exports','multer','util','path','connect-timeout'];(function(_0xa1526d,_0x4da99a){var _0x5da681=function(_0x26f117){while(--_0x26f117){_0xa1526d['push'](_0xa1526d['shift']());}};_0x5da681(++_0x4da99a);}(_0x7477,0x140));var _0x7747=function(_0x21b36c,_0x543483){_0x21b36c=_0x21b36c-0x0;var _0x236627=_0x7477[_0x21b36c];return _0x236627;};'use strict';var multer=require(_0x7747('0x0'));var util=require(_0x7747('0x1'));var path=require(_0x7747('0x2'));var timeout=require(_0x7747('0x3'));var express=require(_0x7747('0x4'));var router=express['Router']();var fs_extra=require(_0x7747('0x5'));var auth=require(_0x7747('0x6'));var interaction=require(_0x7747('0x7'));var config=require(_0x7747('0x8'));var controller=require('./userProfile.controller');router[_0x7747('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7747('0x9')](_0x7747('0xa'),auth[_0x7747('0xb')](),controller[_0x7747('0xc')]);router[_0x7747('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x7747('0xd')]);router[_0x7747('0x9')]('/:id/sections',auth[_0x7747('0xb')](),controller[_0x7747('0xe')]);router[_0x7747('0x9')](_0x7747('0xf'),auth['isAuthenticated'](),controller['getResources']);router[_0x7747('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7747('0x10')](_0x7747('0x11'),auth[_0x7747('0xb')](),controller[_0x7747('0x12')]);router[_0x7747('0x10')](_0x7747('0x13'),auth[_0x7747('0xb')](),controller['addSections']);router[_0x7747('0x10')](_0x7747('0xf'),auth['isAuthenticated'](),controller[_0x7747('0x14')]);router[_0x7747('0x15')](_0x7747('0x16'),auth[_0x7747('0xb')](),controller['update']);router[_0x7747('0x17')](_0x7747('0x16'),auth[_0x7747('0xb')](),controller[_0x7747('0x18')]);router[_0x7747('0x17')](_0x7747('0x13'),auth[_0x7747('0xb')](),controller['removeSections']);router[_0x7747('0x17')]('/:id/resources',auth['isAuthenticated'](),controller[_0x7747('0x19')]);module[_0x7747('0x1a')]=router;
\ No newline at end of file
+var _0x1ecb=['index','get','/describe','describe','show','/:id/sections','getSections','/:id/resources','getResources','post','create','/:id/clone','clone','addSections','put','/:id','delete','destroy','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./userProfile.controller','isAuthenticated'];(function(_0x139a79,_0x3ff73c){var _0x52809e=function(_0x42fb8a){while(--_0x42fb8a){_0x139a79['push'](_0x139a79['shift']());}};_0x52809e(++_0x3ff73c);}(_0x1ecb,0xb5));var _0xb1ec=function(_0x3454f0,_0xb225f4){_0x3454f0=_0x3454f0-0x0;var _0x5f2bc5=_0x1ecb[_0x3454f0];return _0x5f2bc5;};'use strict';var multer=require(_0xb1ec('0x0'));var util=require(_0xb1ec('0x1'));var path=require(_0xb1ec('0x2'));var timeout=require(_0xb1ec('0x3'));var express=require(_0xb1ec('0x4'));var router=express[_0xb1ec('0x5')]();var fs_extra=require(_0xb1ec('0x6'));var auth=require(_0xb1ec('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xb1ec('0x8'));var controller=require(_0xb1ec('0x9'));router['get']('/',auth[_0xb1ec('0xa')](),controller[_0xb1ec('0xb')]);router[_0xb1ec('0xc')](_0xb1ec('0xd'),auth[_0xb1ec('0xa')](),controller[_0xb1ec('0xe')]);router[_0xb1ec('0xc')]('/:id',auth[_0xb1ec('0xa')](),controller[_0xb1ec('0xf')]);router[_0xb1ec('0xc')](_0xb1ec('0x10'),auth[_0xb1ec('0xa')](),controller[_0xb1ec('0x11')]);router[_0xb1ec('0xc')](_0xb1ec('0x12'),auth['isAuthenticated'](),controller[_0xb1ec('0x13')]);router[_0xb1ec('0x14')]('/',auth[_0xb1ec('0xa')](),controller[_0xb1ec('0x15')]);router[_0xb1ec('0x14')](_0xb1ec('0x16'),auth[_0xb1ec('0xa')](),controller[_0xb1ec('0x17')]);router['post'](_0xb1ec('0x10'),auth['isAuthenticated'](),controller[_0xb1ec('0x18')]);router[_0xb1ec('0x14')](_0xb1ec('0x12'),auth['isAuthenticated'](),controller['addResources']);router[_0xb1ec('0x19')](_0xb1ec('0x1a'),auth[_0xb1ec('0xa')](),controller['update']);router[_0xb1ec('0x1b')](_0xb1ec('0x1a'),auth['isAuthenticated'](),controller[_0xb1ec('0x1c')]);router[_0xb1ec('0x1b')](_0xb1ec('0x10'),auth['isAuthenticated'](),controller[_0xb1ec('0x1d')]);router[_0xb1ec('0x1b')]('/:id/resources',auth[_0xb1ec('0xa')](),controller[_0xb1ec('0x1e')]);module[_0xb1ec('0x1f')]=router;
\ No newline at end of file
index e737779..9c5f1c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d74=['split','BOOLEAN','exports','name','STRING','crudPermissions','join','getDataValue'];(function(_0x3439cd,_0x53a8aa){var _0x2bdc31=function(_0x47a1b8){while(--_0x47a1b8){_0x3439cd['push'](_0x3439cd['shift']());}};_0x2bdc31(++_0x53a8aa);}(_0x8d74,0xf2));var _0x48d7=function(_0x132916,_0x28f702){_0x132916=_0x132916-0x0;var _0x245d6e=_0x8d74[_0x132916];return _0x245d6e;};'use strict';var Sequelize=require('sequelize');module[_0x48d7('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x48d7('0x1')},'crudPermissions':{'type':Sequelize[_0x48d7('0x2')],'set':function(_0x2ae093){this['setDataValue'](_0x48d7('0x3'),_0x2ae093?_0x2ae093[_0x48d7('0x4')](''):[]);},'get':function(){return this[_0x48d7('0x5')](_0x48d7('0x3'))?this[_0x48d7('0x5')](_0x48d7('0x3'))[_0x48d7('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x48d7('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9348=['crudPermissions','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','setDataValue'];(function(_0x3a6ed0,_0x4e216e){var _0x144bc4=function(_0x2ce965){while(--_0x2ce965){_0x3a6ed0['push'](_0x3a6ed0['shift']());}};_0x144bc4(++_0x4e216e);}(_0x9348,0x152));var _0x8934=function(_0x25ad29,_0x2e8ea8){_0x25ad29=_0x25ad29-0x0;var _0x5ad50b=_0x9348[_0x25ad29];return _0x5ad50b;};'use strict';var Sequelize=require(_0x8934('0x0'));module[_0x8934('0x1')]={'name':{'type':Sequelize[_0x8934('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x8934('0x2')],'set':function(_0x140cf5){this[_0x8934('0x3')](_0x8934('0x4'),_0x140cf5?_0x140cf5[_0x8934('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x8934('0x4'))?this[_0x8934('0x6')]('crudPermissions')[_0x8934('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x8934('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x8934('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x8934('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x8934('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x8934('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x8934('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8934('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 6d0116c..5486551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e98=['order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','show','params','includeAll','catch','create','clone','options','find','get','omit','createdAt','updatedAt','crudPermissions','body','transaction','UserProfileSection','each','UserProfileResource','sectionId','describe','addSections','sequelize','destroy','userProfileId','push','removeSections','ids','getSections','enabled','includes','subsections','concat','autoAssociation','findOne','Dashboard','forEach','Plugin','removeResources','getResources','nolimit','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','./userProfile.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','UserProfile','rawAttributes','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty'];(function(_0x316105,_0xf006d5){var _0x12bb06=function(_0x2459f0){while(--_0x2459f0){_0x316105['push'](_0x316105['shift']());}};_0x12bb06(++_0xf006d5);}(_0x5e98,0x1d9));var _0x85e9=function(_0x3e4015,_0xa5b4fe){_0x3e4015=_0x3e4015-0x0;var _0x4cee5c=_0x5e98[_0x3e4015];return _0x4cee5c;};'use strict';var emlformat=require(_0x85e9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x85e9('0x1'));var jsonpatch=require(_0x85e9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x85e9('0x3'));var Mustache=require(_0x85e9('0x4'));var util=require('util');var path=require(_0x85e9('0x5'));var sox=require(_0x85e9('0x6'));var csv=require(_0x85e9('0x7'));var ejs=require(_0x85e9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x85e9('0x9'));var crypto=require(_0x85e9('0xa'));var jsforce=require(_0x85e9('0xb'));var deskjs=require(_0x85e9('0xc'));var toCsv=require(_0x85e9('0x7'));var querystring=require(_0x85e9('0xd'));var Papa=require(_0x85e9('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x85e9('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x85e9('0x10'));var logger=require(_0x85e9('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x85e9('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x85e9('0x13'))['db'];config[_0x85e9('0x14')]=_[_0x85e9('0x15')](config[_0x85e9('0x14')],{'host':_0x85e9('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x85e9('0x14')]));require(_0x85e9('0x17'))[_0x85e9('0x18')](socket);function respondWithStatusCode(_0xab5152,_0x135d3b){_0x135d3b=_0x135d3b||0xcc;return function(_0x17b1d8){if(_0x17b1d8){return _0xab5152['sendStatus'](_0x135d3b);}return _0xab5152['status'](_0x135d3b)[_0x85e9('0x19')]();};}function respondWithResult(_0x2328e7,_0x50bb93){_0x50bb93=_0x50bb93||0xc8;return function(_0x3a3bf1){if(_0x3a3bf1){return _0x2328e7[_0x85e9('0x1a')](_0x50bb93)[_0x85e9('0x1b')](_0x3a3bf1);}};}function respondWithFilteredResult(_0x514d7b,_0x2b14fd){return function(_0x1840e1){if(_0x1840e1){var _0x185830=typeof _0x2b14fd[_0x85e9('0x1c')]===_0x85e9('0x1d')&&typeof _0x2b14fd[_0x85e9('0x1e')]===_0x85e9('0x1d');var _0x3a591c=_0x1840e1[_0x85e9('0x1f')];var _0x169282=_0x185830?0x0:_0x2b14fd[_0x85e9('0x1c')];var _0x5ec88c=_0x185830?_0x1840e1['count']:_0x2b14fd['offset']+_0x2b14fd[_0x85e9('0x1e')];var _0xd31349;if(_0x5ec88c>=_0x3a591c){_0x5ec88c=_0x3a591c;_0xd31349=0xc8;}else{_0xd31349=0xce;}_0x514d7b[_0x85e9('0x1a')](_0xd31349);return _0x514d7b[_0x85e9('0x20')](_0x85e9('0x21'),_0x169282+'-'+_0x5ec88c+'/'+_0x3a591c)['json'](_0x1840e1);}return null;};}function patchUpdates(_0x13fde2){return function(_0x246e69){try{jsonpatch[_0x85e9('0x22')](_0x246e69,_0x13fde2,!![]);}catch(_0x193de0){return BPromise[_0x85e9('0x23')](_0x193de0);}return _0x246e69[_0x85e9('0x24')]();};}function saveUpdates(_0xe47c4a,_0x283617){return function(_0x153442){if(_0x153442){return _0x153442[_0x85e9('0x25')](_0xe47c4a)[_0x85e9('0x26')](function(_0x1d860a){return _0x1d860a;});}return null;};}function removeEntity(_0x31a2ab,_0x470588){return function(_0x1d0e6b){if(_0x1d0e6b){return _0x1d0e6b['destroy']()[_0x85e9('0x26')](function(){_0x31a2ab['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e7fda,_0x67e161){return function(_0x26c31f){if(!_0x26c31f){_0x3e7fda[_0x85e9('0x27')](0x194);}return _0x26c31f;};}function handleError(_0x55fcfc,_0xe168e2){_0xe168e2=_0xe168e2||0x1f4;return function(_0xfa1185){logger[_0x85e9('0x28')](_0xfa1185['stack']);if(_0xfa1185['name']){delete _0xfa1185[_0x85e9('0x29')];}_0x55fcfc[_0x85e9('0x1a')](_0xe168e2)[_0x85e9('0x2a')](_0xfa1185);};}exports[_0x85e9('0x2b')]=function(_0x25fb88,_0x348d39){var _0x29ee1d={},_0x6b9bfa={},_0x568cce={'count':0x0,'rows':[]};var _0x566886=_['map'](db[_0x85e9('0x2c')][_0x85e9('0x2d')],function(_0x42831f){return{'name':_0x42831f['fieldName'],'type':_0x42831f['type'][_0x85e9('0x2e')]};});_0x6b9bfa['model']=_[_0x85e9('0x2f')](_0x566886,_0x85e9('0x29'));_0x6b9bfa[_0x85e9('0x30')]=_[_0x85e9('0x31')](_0x25fb88[_0x85e9('0x30')]);_0x6b9bfa[_0x85e9('0x32')]=_[_0x85e9('0x33')](_0x6b9bfa[_0x85e9('0x34')],_0x6b9bfa[_0x85e9('0x30')]);_0x29ee1d[_0x85e9('0x35')]=_[_0x85e9('0x33')](_0x6b9bfa[_0x85e9('0x34')],qs['fields'](_0x25fb88[_0x85e9('0x30')][_0x85e9('0x36')]));_0x29ee1d[_0x85e9('0x35')]=_0x29ee1d[_0x85e9('0x35')][_0x85e9('0x37')]?_0x29ee1d[_0x85e9('0x35')]:_0x6b9bfa[_0x85e9('0x34')];if(!_0x25fb88[_0x85e9('0x30')][_0x85e9('0x38')]('nolimit')){_0x29ee1d[_0x85e9('0x1e')]=qs['limit'](_0x25fb88[_0x85e9('0x30')][_0x85e9('0x1e')]);_0x29ee1d[_0x85e9('0x1c')]=qs[_0x85e9('0x1c')](_0x25fb88['query'][_0x85e9('0x1c')]);}_0x29ee1d[_0x85e9('0x39')]=qs[_0x85e9('0x3a')](_0x25fb88[_0x85e9('0x30')][_0x85e9('0x3a')]);_0x29ee1d['where']=qs[_0x85e9('0x32')](_[_0x85e9('0x3b')](_0x25fb88[_0x85e9('0x30')],_0x6b9bfa[_0x85e9('0x32')]),_0x566886);if(_0x25fb88[_0x85e9('0x30')][_0x85e9('0x3c')]){_0x29ee1d[_0x85e9('0x3d')]=_[_0x85e9('0x3e')](_0x29ee1d[_0x85e9('0x3d')],{'$or':_['map'](_0x566886,function(_0x25e9dc){if(_0x25e9dc['type']!==_0x85e9('0x3f')){var _0x21ff7e={};_0x21ff7e[_0x25e9dc['name']]={'$like':'%'+_0x25fb88[_0x85e9('0x30')][_0x85e9('0x3c')]+'%'};return _0x21ff7e;}})});}_0x29ee1d=_['merge']({},_0x29ee1d,_0x25fb88['options']);var _0xe9ec66={'where':_0x29ee1d[_0x85e9('0x3d')]};return db[_0x85e9('0x2c')][_0x85e9('0x1f')](_0xe9ec66)['then'](function(_0x141a0d){_0x568cce[_0x85e9('0x1f')]=_0x141a0d;if(_0x25fb88[_0x85e9('0x30')]['includeAll']){_0x29ee1d[_0x85e9('0x40')]=[{'all':!![]}];}return db[_0x85e9('0x2c')][_0x85e9('0x41')](_0x29ee1d);})[_0x85e9('0x26')](function(_0xf00b41){_0x568cce['rows']=_0xf00b41;return _0x568cce;})[_0x85e9('0x26')](respondWithFilteredResult(_0x348d39,_0x29ee1d))['catch'](handleError(_0x348d39,null));};exports[_0x85e9('0x42')]=function(_0x30966b,_0x46ed9e){var _0x483891={'raw':![],'where':{'id':_0x30966b[_0x85e9('0x43')]['id']}},_0x3d1693={};_0x3d1693['model']=_[_0x85e9('0x31')](db[_0x85e9('0x2c')]['rawAttributes']);_0x3d1693['query']=_[_0x85e9('0x31')](_0x30966b[_0x85e9('0x30')]);_0x3d1693[_0x85e9('0x32')]=_['intersection'](_0x3d1693['model'],_0x3d1693[_0x85e9('0x30')]);_0x483891[_0x85e9('0x35')]=_[_0x85e9('0x33')](_0x3d1693[_0x85e9('0x34')],qs[_0x85e9('0x36')](_0x30966b[_0x85e9('0x30')][_0x85e9('0x36')]));_0x483891['attributes']=_0x483891[_0x85e9('0x35')][_0x85e9('0x37')]?_0x483891[_0x85e9('0x35')]:_0x3d1693[_0x85e9('0x34')];if(_0x30966b[_0x85e9('0x30')][_0x85e9('0x44')]){_0x483891[_0x85e9('0x40')]=[{'all':!![]}];}_0x483891=_['merge']({},_0x483891,_0x30966b['options']);return db[_0x85e9('0x2c')]['find'](_0x483891)[_0x85e9('0x26')](handleEntityNotFound(_0x46ed9e,null))[_0x85e9('0x26')](respondWithResult(_0x46ed9e,null))[_0x85e9('0x45')](handleError(_0x46ed9e,null));};exports[_0x85e9('0x46')]=function(_0x3b847c,_0x55a097){return db[_0x85e9('0x2c')]['create'](_0x3b847c['body'],{})[_0x85e9('0x26')](respondWithResult(_0x55a097,0xc9))['catch'](handleError(_0x55a097,null));};exports[_0x85e9('0x47')]=function(_0x378a06,_0x2a59f6){var _0x533892={'where':{'id':_0x378a06[_0x85e9('0x43')]['id']}},_0x82991e={};_0x82991e[_0x85e9('0x34')]=_[_0x85e9('0x31')](db[_0x85e9('0x2c')][_0x85e9('0x2d')]);_0x533892[_0x85e9('0x35')]=_[_0x85e9('0x33')](_0x82991e['model'],qs[_0x85e9('0x36')](_0x378a06['query'][_0x85e9('0x36')]));_0x533892['attributes']=_0x533892[_0x85e9('0x35')][_0x85e9('0x37')]?_0x533892[_0x85e9('0x35')]:_0x82991e[_0x85e9('0x34')];if(_0x378a06[_0x85e9('0x30')]['includeAll']){_0x533892[_0x85e9('0x40')]=[{'all':!![]}];}_0x533892=_['merge']({},_0x533892,_0x378a06[_0x85e9('0x48')]);return db[_0x85e9('0x2c')][_0x85e9('0x49')](_0x533892)[_0x85e9('0x26')](handleEntityNotFound(_0x2a59f6,null))[_0x85e9('0x26')](function(_0x568475){if(_0x568475){var _0x41a0a7=_0x568475[_0x85e9('0x4a')]({'plain':!![]});_0x41a0a7=qs[_0x85e9('0x4b')](_0x41a0a7,['id',_0x85e9('0x4c'),_0x85e9('0x4d'),_0x85e9('0x4e')]);_0x378a06[_0x85e9('0x4f')]=_[_0x85e9('0x4b')](_0x378a06[_0x85e9('0x4f')],['id',_0x85e9('0x4c'),_0x85e9('0x4d')]);return db['sequelize'][_0x85e9('0x50')](function(_0x2cad83){return db[_0x85e9('0x2c')]['create'](_[_0x85e9('0x3e')](_0x41a0a7,_0x378a06[_0x85e9('0x4f')]),{'include':_0x378a06['query'][_0x85e9('0x44')]?[{'all':!![]}]:undefined,'transaction':_0x2cad83})[_0x85e9('0x26')](function(_0x5f26f7){var _0x49eed6=_0x5f26f7[_0x85e9('0x4a')]({'plain':!![]});return db[_0x85e9('0x51')]['findAll']({'where':{'userProfileId':_0x378a06['params']['id']},'raw':!![]})[_0x85e9('0x26')](function(_0x24dc98){if(_0x24dc98){return BPromise[_0x85e9('0x52')](_0x24dc98,function(_0x5ed719){return new BPromise(function(_0x377e0e,_0x2b9f62){if(_0x5ed719['autoAssociation']===null||_0x5ed719['autoAssociation']===0x1)_0x377e0e(null);return db[_0x85e9('0x53')][_0x85e9('0x41')]({'where':{'sectionId':_0x5ed719['id']},'raw':!![]})[_0x85e9('0x26')](function(_0x5561d8){var _0x410a09=_[_0x85e9('0x2f')](_0x5561d8,function(_0x42556e){return qs['omit'](_0x42556e,['id',_0x85e9('0x4c'),_0x85e9('0x4d'),_0x85e9('0x54')]);});_0x377e0e(_0x410a09);})[_0x85e9('0x45')](function(_0x11cbe7){_0x2b9f62(_0x11cbe7);});})[_0x85e9('0x26')](function(_0x1ca6b8){var _0x4836cc=qs[_0x85e9('0x4b')](_0x5ed719,['id',_0x85e9('0x4c'),_0x85e9('0x4d')]);_0x4836cc['userProfileId']=_0x49eed6['id'];if(_0x1ca6b8)_0x4836cc['Resources']=_0x1ca6b8;return _0x4836cc;})['then'](function(_0x12e400){return db[_0x85e9('0x51')][_0x85e9('0x46')](_0x12e400,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x2cad83});});})[_0x85e9('0x26')](function(){return _0x49eed6;});}});});});}})[_0x85e9('0x26')](respondWithResult(_0x2a59f6,0xc9))[_0x85e9('0x45')](handleError(_0x2a59f6,null));};exports['update']=function(_0x2f6d52,_0x4267be){if(_0x2f6d52[_0x85e9('0x4f')]['id']){delete _0x2f6d52[_0x85e9('0x4f')]['id'];}return db[_0x85e9('0x2c')][_0x85e9('0x49')]({'where':{'id':_0x2f6d52[_0x85e9('0x43')]['id']}})[_0x85e9('0x26')](handleEntityNotFound(_0x4267be,null))[_0x85e9('0x26')](saveUpdates(_0x2f6d52[_0x85e9('0x4f')],null))[_0x85e9('0x26')](respondWithResult(_0x4267be,null))[_0x85e9('0x45')](handleError(_0x4267be,null));};exports['destroy']=function(_0x37369c,_0x5d0329){return db[_0x85e9('0x2c')]['find']({'where':{'id':_0x37369c[_0x85e9('0x43')]['id']}})[_0x85e9('0x26')](handleEntityNotFound(_0x5d0329,null))[_0x85e9('0x26')](removeEntity(_0x5d0329,null))['catch'](handleError(_0x5d0329,null));};exports[_0x85e9('0x55')]=function(_0x2d6795,_0x123a63){return db[_0x85e9('0x2c')]['describe']()['then'](respondWithResult(_0x123a63,null))[_0x85e9('0x45')](handleError(_0x123a63,null));};exports[_0x85e9('0x56')]=function(_0x1531b6,_0x2de9e9){var _0x48c1a5=_0x1531b6[_0x85e9('0x4f')];return db[_0x85e9('0x2c')]['find']({'where':{'id':_0x1531b6[_0x85e9('0x43')]['id']}})[_0x85e9('0x26')](handleEntityNotFound(_0x2de9e9,null))['then'](function(_0x56251a){if(_0x56251a){return db[_0x85e9('0x57')][_0x85e9('0x50')](function(_0x2c097d){return db[_0x85e9('0x51')][_0x85e9('0x58')]({'where':{'userProfileId':_0x1531b6['params']['id'],'sectionId':_[_0x85e9('0x2f')](_0x48c1a5,function(_0x56d52a){return _0x56d52a[_0x85e9('0x54')];})},'transaction':_0x2c097d})[_0x85e9('0x26')](function(){var _0x298b9b=_[_0x85e9('0x2f')](_0x48c1a5,function(_0x575c30){_0x575c30[_0x85e9('0x59')]=_0x1531b6[_0x85e9('0x43')]['id'];return _0x575c30;});var _0x445393=[];return BPromise[_0x85e9('0x52')](_0x298b9b,function(_0x2de684){return db[_0x85e9('0x51')]['create'](_0x2de684,{'include':[{'model':db[_0x85e9('0x53')],'as':'Resources'}],'raw':!![],'transaction':_0x2c097d})[_0x85e9('0x26')](function(_0x9db4c6){_0x445393[_0x85e9('0x5a')](_0x9db4c6[_0x85e9('0x4a')]({'plain':!![]}));});})[_0x85e9('0x26')](function(){return _0x445393;});});});}})[_0x85e9('0x26')](function(_0x4629ab){return _0x4629ab;})[_0x85e9('0x26')](respondWithResult(_0x2de9e9,null))[_0x85e9('0x45')](handleError(_0x2de9e9,null));};exports[_0x85e9('0x5b')]=function(_0x2eca99,_0xc870a4){var _0x46a1f1;return db[_0x85e9('0x2c')]['find']({'where':{'id':_0x2eca99['params']['id']},'attributes':['id','name']})[_0x85e9('0x26')](handleEntityNotFound(_0xc870a4,null))[_0x85e9('0x26')](function(_0x2ac89b){if(_0x2ac89b){_0x46a1f1=_0x2ac89b;return db['UserProfileSection'][_0x85e9('0x58')]({'where':{'userProfileId':_0x2eca99[_0x85e9('0x43')]['id'],'sectionId':_0x2eca99[_0x85e9('0x30')][_0x85e9('0x5c')]}});}})[_0x85e9('0x26')](function(){return _0x46a1f1;})[_0x85e9('0x26')](respondWithStatusCode(_0xc870a4,null))[_0x85e9('0x45')](handleError(_0xc870a4,null));};exports[_0x85e9('0x5d')]=function(_0x1cc7d6,_0x2f49fc){var _0x299800=[];var _0x3be17d=[];return db['UserProfileSection'][_0x85e9('0x41')]({'where':{'userProfileId':_0x1cc7d6['params']['id']},'raw':!![]})[_0x85e9('0x26')](function(_0x5297c1){_0x299800=_[_0x85e9('0x3c')](_0x5297c1,function(_0x12f697){return _0x12f697[_0x85e9('0x5e')]===0x1||_[_0x85e9('0x5f')]([0x3eb,0x709],_0x12f697[_0x85e9('0x54')]);});if(!_['isEmpty'](_0x299800)){return _[_0x85e9('0x2f')](_0x299800,function(_0x4a8ea1){return _0x4a8ea1[_0x85e9('0x54')];});}else{return;}})[_0x85e9('0x26')](function(_0x44255a){if(_0x44255a)_0x3be17d=_0x44255a;if(_[_0x85e9('0x5f')](_0x3be17d,0x64)){var _0x57b6b9=_[_0x85e9('0x49')](_0x299800,{'sectionId':0x64});return hasDefaultDashboard(_0x57b6b9)[_0x85e9('0x26')](function(_0x4da8a2){return _[_0x85e9('0x2f')](_0x299800,function(_0x11bb8b){if(_0x11bb8b[_0x85e9('0x54')]===0x64){_0x11bb8b[_0x85e9('0x60')]=_0x4da8a2;}return _0x11bb8b;});});}else{return;}})['then'](function(_0x9932cd){if(_0x9932cd)_0x299800=_0x9932cd;if(_[_0x85e9('0x5f')](_0x3be17d,0x3eb)){var _0x59ac44=_[_0x85e9('0x49')](_0x299800,{'sectionId':0x3eb});return getCustomDashboards(_0x59ac44)['then'](function(_0x3dfe56){return _['map'](_0x299800,function(_0xbff674){if(_0x59ac44[_0x85e9('0x5e')]){if(_0xbff674[_0x85e9('0x54')]===0x3eb){_0xbff674[_0x85e9('0x60')]=_0x3dfe56;}}else{if(_0xbff674[_0x85e9('0x54')]===0x64){if(!_0xbff674[_0x85e9('0x60')]){_0xbff674[_0x85e9('0x60')]=[];}_0xbff674[_0x85e9('0x60')]=_0xbff674[_0x85e9('0x60')][_0x85e9('0x61')](_0x3dfe56);}}return _0xbff674;});});}else{return;}})[_0x85e9('0x26')](function(_0x44aa43){if(_0x44aa43)_0x299800=_0x44aa43;if(_[_0x85e9('0x5f')](_0x3be17d,0x709)){var _0x19e18a=_[_0x85e9('0x49')](_0x299800,{'sectionId':0x709});return getPlugins(_0x19e18a)['then'](function(_0x2b229a){if(_0x19e18a[_0x85e9('0x5e')]){return _[_0x85e9('0x2f')](_0x299800,function(_0x2b9e32){if(_0x2b9e32[_0x85e9('0x54')]===0x709){_0x2b9e32[_0x85e9('0x60')]=_0x2b229a;}return _0x2b9e32;});}else{var _0x57ffbc={'sectionId':0x76c,'enabled':0x1,'subsections':_0x2b229a};var _0x358067=_[_0x85e9('0x2f')](_0x299800);_0x358067[_0x85e9('0x5a')](_0x57ffbc);return _0x358067;}});}else{return;}})[_0x85e9('0x26')](function(_0x42f9d4){if(_0x42f9d4)_0x299800=_0x42f9d4;return _[_0x85e9('0x3c')](_0x299800,['enabled',0x1]);})[_0x85e9('0x26')](respondWithResult(_0x2f49fc,null))[_0x85e9('0x45')](handleError(_0x2f49fc,null));};function hasDefaultDashboard(_0x169221){var _0x4badab=[0x65];return new BPromise(function(_0x5e6956,_0x279023){try{if(_0x169221[_0x85e9('0x62')]){_0x5e6956(_0x4badab);}else{return db['UserProfileResource'][_0x85e9('0x63')]({'where':{'sectionId':_0x169221['id']},'raw':!![]})['then'](function(_0x58c23e){_0x58c23e?_0x5e6956(_0x4badab):_0x5e6956();});}}catch(_0x4c91b2){_0x279023(_0x4c91b2);}});}function getCustomDashboards(_0x174009){var _0x279b47=[];return new BPromise(function(_0x42305f,_0x34d941){try{if(_0x174009[_0x85e9('0x62')]){return db[_0x85e9('0x64')]['findAll']({'raw':!![]})['then'](function(_0xf8b642){_0xf8b642[_0x85e9('0x65')](function(_0x38609d){_0x279b47['push'](_0x38609d['id']+0x1869f);});_0x42305f(_0x279b47);});}else{return db[_0x85e9('0x53')]['findAll']({'where':{'sectionId':_0x174009['id']},'raw':!![]})[_0x85e9('0x26')](function(_0x4bdc67){_0x4bdc67[_0x85e9('0x65')](function(_0x5f2c24){_0x279b47[_0x85e9('0x5a')](_0x5f2c24['resourceId']+0x1869f);});_0x42305f(_0x279b47);});}}catch(_0x62531){_0x34d941(_0x62531);}});}function getPlugins(_0x1b796d){var _0x541116=[];return new BPromise(function(_0x4bc5b3,_0x50fc69){try{if(_0x1b796d[_0x85e9('0x62')]){return db[_0x85e9('0x66')]['findAll']({'raw':!![]})[_0x85e9('0x26')](function(_0x159937){_0x159937[_0x85e9('0x65')](function(_0x2b9467){_0x541116['push'](_0x2b9467['id']+0x15b38);});_0x4bc5b3(_0x541116);});}else{return db[_0x85e9('0x53')][_0x85e9('0x41')]({'where':{'sectionId':_0x1b796d['id']},'raw':!![]})[_0x85e9('0x26')](function(_0x162f9e){_0x162f9e[_0x85e9('0x65')](function(_0x5315fa){_0x541116[_0x85e9('0x5a')](_0x5315fa['resourceId']+0x15b38);});_0x4bc5b3(_0x541116);});}}catch(_0x422190){_0x50fc69(_0x422190);}});}exports['addResources']=function(_0xe24dd0,_0x6d8b32){return db['UserProfile'][_0x85e9('0x49')]({'where':{'id':_0xe24dd0['params']['id']}})['then'](handleEntityNotFound(_0x6d8b32,null))['then'](function(_0x527b26){if(_0x527b26){return db[_0x85e9('0x57')][_0x85e9('0x50')](function(_0x2c1c4f){return db[_0x85e9('0x51')][_0x85e9('0x41')]({'where':{'userProfileId':_0xe24dd0[_0x85e9('0x43')]['id']},'attributes':['id'],'raw':!![]})[_0x85e9('0x26')](function(_0x2dce7a){if(_0x2dce7a){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0xe24dd0[_0x85e9('0x43')]['id'],'id':_['map'](_0x2dce7a,function(_0x356d56){return _0x356d56['id'];})},'transaction':_0x2c1c4f});}})[_0x85e9('0x26')](function(_0x4a37f7){var _0xc66365=_[_0x85e9('0x2f')](_0xe24dd0[_0x85e9('0x4f')],function(_0x271c3f){_0x271c3f['userProfileId']=_0xe24dd0[_0x85e9('0x43')]['id'];return _0x271c3f;});return db[_0x85e9('0x51')]['bulkCreate'](_0xc66365,{'raw':!![],'transaction':_0x2c1c4f});})['then'](function(_0x4e934a){var _0x458dc7=_[_0x85e9('0x3c')](_[_0x85e9('0x2f')](_0x4e934a,function(_0x571d83){return _0x571d83['get']({'plain':!![]});}),{'includeAll':![]});if(_0x458dc7){return db[_0x85e9('0x51')]['findAll']({'where':{'userProfileId':_0xe24dd0[_0x85e9('0x43')]['id'],'sectionId':_[_0x85e9('0x2f')](_0x458dc7,function(_0x53f1f9){return _0x53f1f9[_0x85e9('0x54')];})},'attributes':['id',_0x85e9('0x54')],'raw':!![]})[_0x85e9('0x26')](function(_0x2754df){var _0x190b37=_['map'](_0xe24dd0['body'],function(_0x197c62){_0x197c62[_0x85e9('0x59')]=_0xe24dd0[_0x85e9('0x43')]['id'];return _0x197c62;});return db[_0x85e9('0x53')]['bulkCreate'](_0x190b37,{'raw':!![],'transaction':_0x2c1c4f});});}})[_0x85e9('0x45')](handleError(_0x6d8b32,null));});}})[_0x85e9('0x26')](function(_0x448cc3){var _0xdc7867=_[_0x85e9('0x2f')](_0x448cc3,function(_0x44c8e7){return _0x44c8e7[_0x85e9('0x4a')]({'plain':!![]});});})[_0x85e9('0x26')](respondWithResult(_0x6d8b32,null))[_0x85e9('0x45')](handleError(_0x6d8b32,null));};exports[_0x85e9('0x67')]=function(_0x508b32,_0x3085f7,_0x4d9dcb){return db[_0x85e9('0x2c')][_0x85e9('0x49')]({'where':{'id':_0x508b32[_0x85e9('0x43')]['id']}})[_0x85e9('0x26')](handleEntityNotFound(_0x3085f7,null))['then'](function(_0x34cb87){if(_0x34cb87){return _0x34cb87[_0x85e9('0x67')](_0x508b32['query'][_0x85e9('0x5c')]);}})[_0x85e9('0x26')](respondWithStatusCode(_0x3085f7,null))[_0x85e9('0x45')](handleError(_0x3085f7,null));};exports[_0x85e9('0x68')]=function(_0x4c459f,_0x382d9a){var _0x510a2b={};if(!_0x4c459f[_0x85e9('0x30')]['section'])throw new Error('Missing\x20section\x20parameter');if(!_0x4c459f['query'][_0x85e9('0x38')](_0x85e9('0x69'))){_0x510a2b[_0x85e9('0x1e')]=qs['limit'](_0x4c459f[_0x85e9('0x30')][_0x85e9('0x1e')]);_0x510a2b['offset']=qs['offset'](_0x4c459f[_0x85e9('0x30')][_0x85e9('0x1c')]);}return db[_0x85e9('0x2c')]['find']({'where':{'id':_0x4c459f[_0x85e9('0x43')]['id']}})['then'](function(_0x40f89b){if(!_0x40f89b)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x4c459f[_0x85e9('0x43')]['id']);return db[_0x85e9('0x2c')]['getResources'](_0x4c459f);})[_0x85e9('0x26')](respondWithFilteredResult(_0x382d9a,_0x510a2b))['catch'](handleError(_0x382d9a,null));};
\ No newline at end of file
+var _0xe49f=['updatedAt','crudPermissions','omit','sequelize','transaction','merge','UserProfileSection','findAll','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','each','removeSections','getSections','enabled','includes','isEmpty','subsections','concat','findOne','forEach','push','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','localhost','./userProfile.socket','register','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','index','UserProfile','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','includeAll','include','rows','catch','show','params','keys','options','find','create','body','get','createdAt'];(function(_0x49bfa6,_0x2eef6d){var _0x4cb572=function(_0x273db2){while(--_0x273db2){_0x49bfa6['push'](_0x49bfa6['shift']());}};_0x4cb572(++_0x2eef6d);}(_0xe49f,0x17b));var _0xfe49=function(_0x1a4455,_0x511d62){_0x1a4455=_0x1a4455-0x0;var _0x9b2c51=_0xe49f[_0x1a4455];return _0x9b2c51;};'use strict';var emlformat=require(_0xfe49('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfe49('0x1'));var jsonpatch=require(_0xfe49('0x2'));var rp=require(_0xfe49('0x3'));var moment=require(_0xfe49('0x4'));var BPromise=require(_0xfe49('0x5'));var Mustache=require(_0xfe49('0x6'));var util=require(_0xfe49('0x7'));var path=require(_0xfe49('0x8'));var sox=require(_0xfe49('0x9'));var csv=require('to-csv');var ejs=require(_0xfe49('0xa'));var fs=require('fs');var fs_extra=require(_0xfe49('0xb'));var _=require(_0xfe49('0xc'));var squel=require('squel');var crypto=require(_0xfe49('0xd'));var jsforce=require(_0xfe49('0xe'));var deskjs=require(_0xfe49('0xf'));var toCsv=require(_0xfe49('0x10'));var querystring=require('querystring');var Papa=require(_0xfe49('0x11'));var Redis=require(_0xfe49('0x12'));var authService=require(_0xfe49('0x13'));var qs=require(_0xfe49('0x14'));var as=require(_0xfe49('0x15'));var hardwareService=require(_0xfe49('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xfe49('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xfe49('0x18'));var db=require('../../mysqldb')['db'];config[_0xfe49('0x19')]=_['defaults'](config[_0xfe49('0x19')],{'host':_0xfe49('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfe49('0x1b'))[_0xfe49('0x1c')](socket);function respondWithStatusCode(_0x2f1044,_0x1e7b20){_0x1e7b20=_0x1e7b20||0xcc;return function(_0x1d5eff){if(_0x1d5eff){return _0x2f1044[_0xfe49('0x1d')](_0x1e7b20);}return _0x2f1044[_0xfe49('0x1e')](_0x1e7b20)['end']();};}function respondWithResult(_0x404606,_0x2f6d4c){_0x2f6d4c=_0x2f6d4c||0xc8;return function(_0x92d4f0){if(_0x92d4f0){return _0x404606[_0xfe49('0x1e')](_0x2f6d4c)[_0xfe49('0x1f')](_0x92d4f0);}};}function respondWithFilteredResult(_0xa5dece,_0x260e8d){return function(_0x2056f5){if(_0x2056f5){var _0x5e68d0=typeof _0x260e8d['offset']===_0xfe49('0x20')&&typeof _0x260e8d[_0xfe49('0x21')]===_0xfe49('0x20');var _0xa6b42=_0x2056f5[_0xfe49('0x22')];var _0x1a5381=_0x5e68d0?0x0:_0x260e8d[_0xfe49('0x23')];var _0x4f0aed=_0x5e68d0?_0x2056f5[_0xfe49('0x22')]:_0x260e8d['offset']+_0x260e8d[_0xfe49('0x21')];var _0x3edb36;if(_0x4f0aed>=_0xa6b42){_0x4f0aed=_0xa6b42;_0x3edb36=0xc8;}else{_0x3edb36=0xce;}_0xa5dece[_0xfe49('0x1e')](_0x3edb36);return _0xa5dece[_0xfe49('0x24')](_0xfe49('0x25'),_0x1a5381+'-'+_0x4f0aed+'/'+_0xa6b42)['json'](_0x2056f5);}return null;};}function patchUpdates(_0x2139da){return function(_0x29cff5){try{jsonpatch[_0xfe49('0x26')](_0x29cff5,_0x2139da,!![]);}catch(_0xbb0a66){return BPromise[_0xfe49('0x27')](_0xbb0a66);}return _0x29cff5[_0xfe49('0x28')]();};}function saveUpdates(_0x1a9c47,_0x5d0e27){return function(_0x1c46a2){if(_0x1c46a2){return _0x1c46a2[_0xfe49('0x29')](_0x1a9c47)[_0xfe49('0x2a')](function(_0x870e23){return _0x870e23;});}return null;};}function removeEntity(_0x1a6621,_0x310aec){return function(_0x1a07b1){if(_0x1a07b1){return _0x1a07b1[_0xfe49('0x2b')]()[_0xfe49('0x2a')](function(){_0x1a6621[_0xfe49('0x1e')](0xcc)[_0xfe49('0x2c')]();});}};}function handleEntityNotFound(_0x1d5089,_0x5d828a){return function(_0x105537){if(!_0x105537){_0x1d5089[_0xfe49('0x1d')](0x194);}return _0x105537;};}function handleError(_0x4454e0,_0x5d218d){_0x5d218d=_0x5d218d||0x1f4;return function(_0xc083cf){logger['error'](_0xc083cf[_0xfe49('0x2d')]);if(_0xc083cf[_0xfe49('0x2e')]){delete _0xc083cf[_0xfe49('0x2e')];}_0x4454e0[_0xfe49('0x1e')](_0x5d218d)['send'](_0xc083cf);};}exports[_0xfe49('0x2f')]=function(_0x5dcb39,_0x6dda0e){var _0x598876={},_0x8abd24={},_0x2579ae={'count':0x0,'rows':[]};var _0x3b7ff2=_['map'](db[_0xfe49('0x30')][_0xfe49('0x31')],function(_0x1be917){return{'name':_0x1be917[_0xfe49('0x32')],'type':_0x1be917[_0xfe49('0x33')][_0xfe49('0x34')]};});_0x8abd24[_0xfe49('0x35')]=_[_0xfe49('0x36')](_0x3b7ff2,_0xfe49('0x2e'));_0x8abd24[_0xfe49('0x37')]=_['keys'](_0x5dcb39[_0xfe49('0x37')]);_0x8abd24['filters']=_['intersection'](_0x8abd24[_0xfe49('0x35')],_0x8abd24[_0xfe49('0x37')]);_0x598876[_0xfe49('0x38')]=_[_0xfe49('0x39')](_0x8abd24[_0xfe49('0x35')],qs[_0xfe49('0x3a')](_0x5dcb39['query'][_0xfe49('0x3a')]));_0x598876[_0xfe49('0x38')]=_0x598876[_0xfe49('0x38')][_0xfe49('0x3b')]?_0x598876[_0xfe49('0x38')]:_0x8abd24[_0xfe49('0x35')];if(!_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x3c')](_0xfe49('0x3d'))){_0x598876[_0xfe49('0x21')]=qs[_0xfe49('0x21')](_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x21')]);_0x598876[_0xfe49('0x23')]=qs[_0xfe49('0x23')](_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x23')]);}_0x598876[_0xfe49('0x3e')]=qs[_0xfe49('0x3f')](_0x5dcb39[_0xfe49('0x37')]['sort']);_0x598876[_0xfe49('0x40')]=qs[_0xfe49('0x41')](_['pick'](_0x5dcb39['query'],_0x8abd24[_0xfe49('0x41')]),_0x3b7ff2);if(_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x42')]){_0x598876[_0xfe49('0x40')]=_['merge'](_0x598876[_0xfe49('0x40')],{'$or':_['map'](_0x3b7ff2,function(_0x28ac3d){if(_0x28ac3d[_0xfe49('0x33')]!==_0xfe49('0x43')){var _0x5e6584={};_0x5e6584[_0x28ac3d[_0xfe49('0x2e')]]={'$like':'%'+_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x42')]+'%'};return _0x5e6584;}})});}_0x598876=_['merge']({},_0x598876,_0x5dcb39['options']);var _0x208c93={'where':_0x598876[_0xfe49('0x40')]};return db[_0xfe49('0x30')][_0xfe49('0x22')](_0x208c93)[_0xfe49('0x2a')](function(_0x562751){_0x2579ae[_0xfe49('0x22')]=_0x562751;if(_0x5dcb39[_0xfe49('0x37')][_0xfe49('0x44')]){_0x598876[_0xfe49('0x45')]=[{'all':!![]}];}return db[_0xfe49('0x30')]['findAll'](_0x598876);})[_0xfe49('0x2a')](function(_0x207705){_0x2579ae[_0xfe49('0x46')]=_0x207705;return _0x2579ae;})['then'](respondWithFilteredResult(_0x6dda0e,_0x598876))[_0xfe49('0x47')](handleError(_0x6dda0e,null));};exports[_0xfe49('0x48')]=function(_0x581243,_0x1219a0){var _0x2fff6a={'raw':![],'where':{'id':_0x581243[_0xfe49('0x49')]['id']}},_0x1e45f7={};_0x1e45f7[_0xfe49('0x35')]=_[_0xfe49('0x4a')](db[_0xfe49('0x30')][_0xfe49('0x31')]);_0x1e45f7[_0xfe49('0x37')]=_[_0xfe49('0x4a')](_0x581243['query']);_0x1e45f7[_0xfe49('0x41')]=_[_0xfe49('0x39')](_0x1e45f7[_0xfe49('0x35')],_0x1e45f7[_0xfe49('0x37')]);_0x2fff6a['attributes']=_['intersection'](_0x1e45f7[_0xfe49('0x35')],qs['fields'](_0x581243[_0xfe49('0x37')][_0xfe49('0x3a')]));_0x2fff6a[_0xfe49('0x38')]=_0x2fff6a[_0xfe49('0x38')]['length']?_0x2fff6a[_0xfe49('0x38')]:_0x1e45f7['model'];if(_0x581243[_0xfe49('0x37')]['includeAll']){_0x2fff6a[_0xfe49('0x45')]=[{'all':!![]}];}_0x2fff6a=_['merge']({},_0x2fff6a,_0x581243[_0xfe49('0x4b')]);return db[_0xfe49('0x30')][_0xfe49('0x4c')](_0x2fff6a)[_0xfe49('0x2a')](handleEntityNotFound(_0x1219a0,null))[_0xfe49('0x2a')](respondWithResult(_0x1219a0,null))[_0xfe49('0x47')](handleError(_0x1219a0,null));};exports[_0xfe49('0x4d')]=function(_0x372f72,_0x1bc54c){return db[_0xfe49('0x30')][_0xfe49('0x4d')](_0x372f72[_0xfe49('0x4e')],{})[_0xfe49('0x2a')](respondWithResult(_0x1bc54c,0xc9))['catch'](handleError(_0x1bc54c,null));};exports['clone']=function(_0x12ca76,_0x5574c9){var _0xdb4779={'where':{'id':_0x12ca76[_0xfe49('0x49')]['id']}},_0x2f6448={};_0x2f6448[_0xfe49('0x35')]=_[_0xfe49('0x4a')](db[_0xfe49('0x30')]['rawAttributes']);_0xdb4779['attributes']=_[_0xfe49('0x39')](_0x2f6448[_0xfe49('0x35')],qs['fields'](_0x12ca76[_0xfe49('0x37')]['fields']));_0xdb4779[_0xfe49('0x38')]=_0xdb4779[_0xfe49('0x38')][_0xfe49('0x3b')]?_0xdb4779['attributes']:_0x2f6448[_0xfe49('0x35')];if(_0x12ca76[_0xfe49('0x37')][_0xfe49('0x44')]){_0xdb4779[_0xfe49('0x45')]=[{'all':!![]}];}_0xdb4779=_['merge']({},_0xdb4779,_0x12ca76[_0xfe49('0x4b')]);return db['UserProfile'][_0xfe49('0x4c')](_0xdb4779)['then'](handleEntityNotFound(_0x5574c9,null))['then'](function(_0x1d6a70){if(_0x1d6a70){var _0x3b6dd3=_0x1d6a70[_0xfe49('0x4f')]({'plain':!![]});_0x3b6dd3=qs['omit'](_0x3b6dd3,['id',_0xfe49('0x50'),_0xfe49('0x51'),_0xfe49('0x52')]);_0x12ca76[_0xfe49('0x4e')]=_[_0xfe49('0x53')](_0x12ca76[_0xfe49('0x4e')],['id',_0xfe49('0x50'),'updatedAt']);return db[_0xfe49('0x54')][_0xfe49('0x55')](function(_0x659c7c){return db[_0xfe49('0x30')][_0xfe49('0x4d')](_[_0xfe49('0x56')](_0x3b6dd3,_0x12ca76[_0xfe49('0x4e')]),{'include':_0x12ca76[_0xfe49('0x37')][_0xfe49('0x44')]?[{'all':!![]}]:undefined,'transaction':_0x659c7c})[_0xfe49('0x2a')](function(_0x5e0b8c){var _0x263314=_0x5e0b8c[_0xfe49('0x4f')]({'plain':!![]});return db[_0xfe49('0x57')][_0xfe49('0x58')]({'where':{'userProfileId':_0x12ca76['params']['id']},'raw':!![]})[_0xfe49('0x2a')](function(_0x41031f){if(_0x41031f){return BPromise['each'](_0x41031f,function(_0x31b6fa){return new BPromise(function(_0x56ab12,_0x105536){if(_0x31b6fa[_0xfe49('0x59')]===null||_0x31b6fa['autoAssociation']===0x1)_0x56ab12(null);return db[_0xfe49('0x5a')][_0xfe49('0x58')]({'where':{'sectionId':_0x31b6fa['id']},'raw':!![]})[_0xfe49('0x2a')](function(_0x227b6b){var _0x6d50c0=_[_0xfe49('0x36')](_0x227b6b,function(_0x27968d){return qs[_0xfe49('0x53')](_0x27968d,['id',_0xfe49('0x50'),_0xfe49('0x51'),_0xfe49('0x5b')]);});_0x56ab12(_0x6d50c0);})[_0xfe49('0x47')](function(_0x29024c){_0x105536(_0x29024c);});})[_0xfe49('0x2a')](function(_0x4f63a3){var _0x3905da=qs['omit'](_0x31b6fa,['id',_0xfe49('0x50'),_0xfe49('0x51')]);_0x3905da[_0xfe49('0x5c')]=_0x263314['id'];if(_0x4f63a3)_0x3905da['Resources']=_0x4f63a3;return _0x3905da;})[_0xfe49('0x2a')](function(_0x3bcf6d){return db['UserProfileSection'][_0xfe49('0x4d')](_0x3bcf6d,{'include':[{'model':db[_0xfe49('0x5a')],'as':_0xfe49('0x5d')}],'raw':!![],'transaction':_0x659c7c});});})[_0xfe49('0x2a')](function(){return _0x263314;});}});});});}})[_0xfe49('0x2a')](respondWithResult(_0x5574c9,0xc9))[_0xfe49('0x47')](handleError(_0x5574c9,null));};exports[_0xfe49('0x29')]=function(_0x5b0d8d,_0x2db596){if(_0x5b0d8d[_0xfe49('0x4e')]['id']){delete _0x5b0d8d[_0xfe49('0x4e')]['id'];}return db['UserProfile']['find']({'where':{'id':_0x5b0d8d['params']['id']}})[_0xfe49('0x2a')](handleEntityNotFound(_0x2db596,null))[_0xfe49('0x2a')](saveUpdates(_0x5b0d8d[_0xfe49('0x4e')],null))[_0xfe49('0x2a')](respondWithResult(_0x2db596,null))[_0xfe49('0x47')](handleError(_0x2db596,null));};exports[_0xfe49('0x2b')]=function(_0x210de8,_0x1752db){return db['UserProfile'][_0xfe49('0x4c')]({'where':{'id':_0x210de8[_0xfe49('0x49')]['id']}})[_0xfe49('0x2a')](handleEntityNotFound(_0x1752db,null))[_0xfe49('0x2a')](removeEntity(_0x1752db,null))[_0xfe49('0x47')](handleError(_0x1752db,null));};exports[_0xfe49('0x5e')]=function(_0x34dff0,_0x1050f8){return db[_0xfe49('0x30')][_0xfe49('0x5e')]()[_0xfe49('0x2a')](respondWithResult(_0x1050f8,null))[_0xfe49('0x47')](handleError(_0x1050f8,null));};exports[_0xfe49('0x5f')]=function(_0x25ba7a,_0x53f0d9){var _0x39e92e=_0x25ba7a[_0xfe49('0x4e')];return db['UserProfile'][_0xfe49('0x4c')]({'where':{'id':_0x25ba7a[_0xfe49('0x49')]['id']}})[_0xfe49('0x2a')](handleEntityNotFound(_0x53f0d9,null))[_0xfe49('0x2a')](function(_0x113d60){if(_0x113d60){return db[_0xfe49('0x54')][_0xfe49('0x55')](function(_0x3acced){return db[_0xfe49('0x57')][_0xfe49('0x2b')]({'where':{'userProfileId':_0x25ba7a[_0xfe49('0x49')]['id'],'sectionId':_[_0xfe49('0x36')](_0x39e92e,function(_0x5d9a46){return _0x5d9a46[_0xfe49('0x5b')];})},'transaction':_0x3acced})['then'](function(){var _0x3e6f0b=_['map'](_0x39e92e,function(_0x4111e7){_0x4111e7[_0xfe49('0x5c')]=_0x25ba7a['params']['id'];return _0x4111e7;});var _0x3153bd=[];return BPromise[_0xfe49('0x60')](_0x3e6f0b,function(_0x5a5b29){return db[_0xfe49('0x57')][_0xfe49('0x4d')](_0x5a5b29,{'include':[{'model':db[_0xfe49('0x5a')],'as':_0xfe49('0x5d')}],'raw':!![],'transaction':_0x3acced})[_0xfe49('0x2a')](function(_0x5cf617){_0x3153bd['push'](_0x5cf617[_0xfe49('0x4f')]({'plain':!![]}));});})[_0xfe49('0x2a')](function(){return _0x3153bd;});});});}})['then'](function(_0x32070b){return _0x32070b;})['then'](respondWithResult(_0x53f0d9,null))['catch'](handleError(_0x53f0d9,null));};exports[_0xfe49('0x61')]=function(_0x1508de,_0x47b05d){var _0x585c23;return db[_0xfe49('0x30')][_0xfe49('0x4c')]({'where':{'id':_0x1508de['params']['id']},'attributes':['id',_0xfe49('0x2e')]})['then'](handleEntityNotFound(_0x47b05d,null))[_0xfe49('0x2a')](function(_0xc9c096){if(_0xc9c096){_0x585c23=_0xc9c096;return db[_0xfe49('0x57')]['destroy']({'where':{'userProfileId':_0x1508de['params']['id'],'sectionId':_0x1508de[_0xfe49('0x37')]['ids']}});}})[_0xfe49('0x2a')](function(){return _0x585c23;})[_0xfe49('0x2a')](respondWithStatusCode(_0x47b05d,null))[_0xfe49('0x47')](handleError(_0x47b05d,null));};exports[_0xfe49('0x62')]=function(_0x31aa74,_0x3ee630){var _0x25d946=[];var _0x441f98=[];return db[_0xfe49('0x57')][_0xfe49('0x58')]({'where':{'userProfileId':_0x31aa74['params']['id']},'raw':!![]})[_0xfe49('0x2a')](function(_0x1c4beb){_0x25d946=_[_0xfe49('0x42')](_0x1c4beb,function(_0x3f6d18){return _0x3f6d18[_0xfe49('0x63')]===0x1||_[_0xfe49('0x64')]([0x3eb,0x709],_0x3f6d18[_0xfe49('0x5b')]);});if(!_[_0xfe49('0x65')](_0x25d946)){return _[_0xfe49('0x36')](_0x25d946,function(_0x295ca4){return _0x295ca4[_0xfe49('0x5b')];});}else{return;}})[_0xfe49('0x2a')](function(_0x523994){if(_0x523994)_0x441f98=_0x523994;if(_['includes'](_0x441f98,0x64)){var _0x851ced=_[_0xfe49('0x4c')](_0x25d946,{'sectionId':0x64});return hasDefaultDashboard(_0x851ced)[_0xfe49('0x2a')](function(_0x50b61f){return _[_0xfe49('0x36')](_0x25d946,function(_0xdab8bb){if(_0xdab8bb[_0xfe49('0x5b')]===0x64){_0xdab8bb['subsections']=_0x50b61f;}return _0xdab8bb;});});}else{return;}})[_0xfe49('0x2a')](function(_0x44393d){if(_0x44393d)_0x25d946=_0x44393d;if(_[_0xfe49('0x64')](_0x441f98,0x3eb)){var _0x2f24b8=_[_0xfe49('0x4c')](_0x25d946,{'sectionId':0x3eb});return getCustomDashboards(_0x2f24b8)['then'](function(_0xf91de5){return _[_0xfe49('0x36')](_0x25d946,function(_0x3a4d1c){if(_0x2f24b8[_0xfe49('0x63')]){if(_0x3a4d1c[_0xfe49('0x5b')]===0x3eb){_0x3a4d1c[_0xfe49('0x66')]=_0xf91de5;}}else{if(_0x3a4d1c[_0xfe49('0x5b')]===0x64){if(!_0x3a4d1c[_0xfe49('0x66')]){_0x3a4d1c[_0xfe49('0x66')]=[];}_0x3a4d1c['subsections']=_0x3a4d1c['subsections'][_0xfe49('0x67')](_0xf91de5);}}return _0x3a4d1c;});});}else{return;}})[_0xfe49('0x2a')](function(_0x453eca){if(_0x453eca)_0x25d946=_0x453eca;if(_[_0xfe49('0x64')](_0x441f98,0x709)){var _0x3224d0=_[_0xfe49('0x4c')](_0x25d946,{'sectionId':0x709});return getPlugins(_0x3224d0)[_0xfe49('0x2a')](function(_0x4774c4){if(_0x3224d0[_0xfe49('0x63')]){return _['map'](_0x25d946,function(_0x52654d){if(_0x52654d[_0xfe49('0x5b')]===0x709){_0x52654d['subsections']=_0x4774c4;}return _0x52654d;});}else{var _0xd94568={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4774c4};var _0x49f24f=_[_0xfe49('0x36')](_0x25d946);_0x49f24f['push'](_0xd94568);return _0x49f24f;}});}else{return;}})[_0xfe49('0x2a')](function(_0x2ba7a2){if(_0x2ba7a2)_0x25d946=_0x2ba7a2;return _[_0xfe49('0x42')](_0x25d946,[_0xfe49('0x63'),0x1]);})[_0xfe49('0x2a')](respondWithResult(_0x3ee630,null))['catch'](handleError(_0x3ee630,null));};function hasDefaultDashboard(_0x3039a6){var _0x325a0f=[0x65];return new BPromise(function(_0x2aba32,_0x5a59f0){try{if(_0x3039a6[_0xfe49('0x59')]){_0x2aba32(_0x325a0f);}else{return db[_0xfe49('0x5a')][_0xfe49('0x68')]({'where':{'sectionId':_0x3039a6['id']},'raw':!![]})['then'](function(_0x2a7a71){_0x2a7a71?_0x2aba32(_0x325a0f):_0x2aba32();});}}catch(_0xf0d99f){_0x5a59f0(_0xf0d99f);}});}function getCustomDashboards(_0x184ab0){var _0x4640a2=[];return new BPromise(function(_0x2fb1cf,_0x304f2d){try{if(_0x184ab0[_0xfe49('0x59')]){return db['Dashboard'][_0xfe49('0x58')]({'raw':!![]})[_0xfe49('0x2a')](function(_0x191cbd){_0x191cbd[_0xfe49('0x69')](function(_0x2fec33){_0x4640a2['push'](_0x2fec33['id']+0x1869f);});_0x2fb1cf(_0x4640a2);});}else{return db[_0xfe49('0x5a')][_0xfe49('0x58')]({'where':{'sectionId':_0x184ab0['id']},'raw':!![]})[_0xfe49('0x2a')](function(_0x4141c8){_0x4141c8['forEach'](function(_0x2892a4){_0x4640a2[_0xfe49('0x6a')](_0x2892a4[_0xfe49('0x6b')]+0x1869f);});_0x2fb1cf(_0x4640a2);});}}catch(_0x4789a8){_0x304f2d(_0x4789a8);}});}function getPlugins(_0x1756c9){var _0x3cde02=[];return new BPromise(function(_0x5c20ac,_0x5587d5){try{if(_0x1756c9[_0xfe49('0x59')]){return db[_0xfe49('0x6c')][_0xfe49('0x58')]({'raw':!![]})['then'](function(_0x2eb95b){_0x2eb95b[_0xfe49('0x69')](function(_0x26e731){_0x3cde02[_0xfe49('0x6a')](_0x26e731['id']+0x15b38);});_0x5c20ac(_0x3cde02);});}else{return db['UserProfileResource'][_0xfe49('0x58')]({'where':{'sectionId':_0x1756c9['id']},'raw':!![]})[_0xfe49('0x2a')](function(_0x448a34){_0x448a34[_0xfe49('0x69')](function(_0x39d776){_0x3cde02[_0xfe49('0x6a')](_0x39d776['resourceId']+0x15b38);});_0x5c20ac(_0x3cde02);});}}catch(_0x209057){_0x5587d5(_0x209057);}});}exports[_0xfe49('0x6d')]=function(_0x56f409,_0x2fbcc7){return db[_0xfe49('0x30')][_0xfe49('0x4c')]({'where':{'id':_0x56f409[_0xfe49('0x49')]['id']}})[_0xfe49('0x2a')](handleEntityNotFound(_0x2fbcc7,null))[_0xfe49('0x2a')](function(_0x59e35a){if(_0x59e35a){return db[_0xfe49('0x54')][_0xfe49('0x55')](function(_0x42af32){return db[_0xfe49('0x57')][_0xfe49('0x58')]({'where':{'userProfileId':_0x56f409[_0xfe49('0x49')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x31d570){if(_0x31d570){return db[_0xfe49('0x57')][_0xfe49('0x2b')]({'where':{'userProfileId':_0x56f409['params']['id'],'id':_[_0xfe49('0x36')](_0x31d570,function(_0x29e696){return _0x29e696['id'];})},'transaction':_0x42af32});}})[_0xfe49('0x2a')](function(_0xbbf2bc){var _0x560774=_['map'](_0x56f409[_0xfe49('0x4e')],function(_0x342af6){_0x342af6[_0xfe49('0x5c')]=_0x56f409['params']['id'];return _0x342af6;});return db[_0xfe49('0x57')][_0xfe49('0x6e')](_0x560774,{'raw':!![],'transaction':_0x42af32});})[_0xfe49('0x2a')](function(_0x4f7661){var _0x2659bd=_['filter'](_[_0xfe49('0x36')](_0x4f7661,function(_0x1fc7fd){return _0x1fc7fd['get']({'plain':!![]});}),{'includeAll':![]});if(_0x2659bd){return db[_0xfe49('0x57')][_0xfe49('0x58')]({'where':{'userProfileId':_0x56f409[_0xfe49('0x49')]['id'],'sectionId':_[_0xfe49('0x36')](_0x2659bd,function(_0x209451){return _0x209451[_0xfe49('0x5b')];})},'attributes':['id',_0xfe49('0x5b')],'raw':!![]})[_0xfe49('0x2a')](function(_0x415e48){var _0x1bb967=_[_0xfe49('0x36')](_0x56f409[_0xfe49('0x4e')],function(_0x4e2aac){_0x4e2aac[_0xfe49('0x5c')]=_0x56f409[_0xfe49('0x49')]['id'];return _0x4e2aac;});return db[_0xfe49('0x5a')][_0xfe49('0x6e')](_0x1bb967,{'raw':!![],'transaction':_0x42af32});});}})[_0xfe49('0x47')](handleError(_0x2fbcc7,null));});}})['then'](function(_0xe0edb){var _0x51c8f1=_[_0xfe49('0x36')](_0xe0edb,function(_0x83d28){return _0x83d28[_0xfe49('0x4f')]({'plain':!![]});});})[_0xfe49('0x2a')](respondWithResult(_0x2fbcc7,null))[_0xfe49('0x47')](handleError(_0x2fbcc7,null));};exports[_0xfe49('0x6f')]=function(_0x562cdb,_0x3e44f4,_0x314d50){return db[_0xfe49('0x30')][_0xfe49('0x4c')]({'where':{'id':_0x562cdb['params']['id']}})[_0xfe49('0x2a')](handleEntityNotFound(_0x3e44f4,null))[_0xfe49('0x2a')](function(_0xb84328){if(_0xb84328){return _0xb84328[_0xfe49('0x6f')](_0x562cdb[_0xfe49('0x37')]['ids']);}})['then'](respondWithStatusCode(_0x3e44f4,null))[_0xfe49('0x47')](handleError(_0x3e44f4,null));};exports[_0xfe49('0x70')]=function(_0x5077fd,_0x33f683){var _0x564a68={};if(!_0x5077fd[_0xfe49('0x37')][_0xfe49('0x71')])throw new Error(_0xfe49('0x72'));if(!_0x5077fd[_0xfe49('0x37')][_0xfe49('0x3c')](_0xfe49('0x3d'))){_0x564a68[_0xfe49('0x21')]=qs['limit'](_0x5077fd[_0xfe49('0x37')][_0xfe49('0x21')]);_0x564a68[_0xfe49('0x23')]=qs[_0xfe49('0x23')](_0x5077fd['query'][_0xfe49('0x23')]);}return db[_0xfe49('0x30')][_0xfe49('0x4c')]({'where':{'id':_0x5077fd[_0xfe49('0x49')]['id']}})[_0xfe49('0x2a')](function(_0x486ca4){if(!_0x486ca4)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x5077fd[_0xfe49('0x49')]['id']);return db[_0xfe49('0x30')]['getResources'](_0x5077fd);})['then'](respondWithFilteredResult(_0x33f683,_0x564a68))[_0xfe49('0x47')](handleError(_0x33f683,null));};
\ No newline at end of file
index 14336a5..01ba414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../mysqldb','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x374251,_0x491c7f){var _0x5427d9=function(_0x518967){while(--_0x518967){_0x374251['push'](_0x374251['shift']());}};_0x5427d9(++_0x491c7f);}(_0x5fab,0x177));var _0xb5fa=function(_0x151732,_0x82b764){_0x151732=_0x151732-0x0;var _0x1cda86=_0x5fab[_0x151732];return _0x1cda86;};'use strict';var EventEmitter=require(_0xb5fa('0x0'));var UserProfile=require(_0xb5fa('0x1'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xb5fa('0x2')](0x0);var events={'afterCreate':_0xb5fa('0x3'),'afterUpdate':_0xb5fa('0x4'),'afterDestroy':_0xb5fa('0x5')};function emitEvent(_0x67e8e8){return function(_0x595d8b,_0x29390a,_0x4341d3){UserProfileEvents[_0xb5fa('0x6')](_0x67e8e8+':'+_0x595d8b['id'],_0x595d8b);UserProfileEvents[_0xb5fa('0x6')](_0x67e8e8,_0x595d8b);_0x4341d3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xb5fa('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0xd991=['UserProfile','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x223d45,_0x3e2623){var _0x474bbf=function(_0x34aabd){while(--_0x34aabd){_0x223d45['push'](_0x223d45['shift']());}};_0x474bbf(++_0x3e2623);}(_0xd991,0x115));var _0x1d99=function(_0x598b88,_0x279358){_0x598b88=_0x598b88-0x0;var _0x17c299=_0xd991[_0x598b88];return _0x17c299;};'use strict';var EventEmitter=require(_0x1d99('0x0'));var UserProfile=require(_0x1d99('0x1'))['db'][_0x1d99('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x1d99('0x3')](0x0);var events={'afterCreate':_0x1d99('0x4'),'afterUpdate':'update','afterDestroy':_0x1d99('0x5')};function emitEvent(_0xe9aefb){return function(_0xf03459,_0x1f6da3,_0x300c32){UserProfileEvents[_0x1d99('0x6')](_0xe9aefb+':'+_0xf03459['id'],_0xf03459);UserProfileEvents['emit'](_0xe9aefb,_0xf03459);_0x300c32(null);};}for(var e in events){if(events[_0x1d99('0x7')](e)){var event=events[e];UserProfile[_0x1d99('0x8')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 6fe8c99..9a64ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d65=['intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','filters','merge','key','foreignKey','options','include','forEach','reportType','default','reportId','CustomReports','rows','ids','order','customSorting','extraQueryConditions','count','includeAll','Tags','tag','ThroughTags','color','openTabs','chat','dataValues','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','exports','models','filter','value','findAll','then','associatedResources','field','map','name','catch','UserProfileResource','AnalyticExtractedReport','type','resourceId','toLowerCase','squareprojects','childModel','SquareProject','odbc','squarerecordings','SquareRecording','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','parentSections','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','inboundroutes','internalroutes','outboundroutes','contexts','VoiceMail','VoiceRecording','Agents','membername','User','role','agent','Telephones','telephone','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','openchannelaccounts','smsaccounts','whatsappqueues','whatsappaccounts','teams','Team','voicequeues','VoiceQueues','agents','telephones','Users','user','zendeskaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','zohoaccounts','ZohoAccount','vtigeraccounts','customdashboards','Dashboard','intervals','pauses','Pause','scheduler','Schedule','Tag','templates','Template','triggers','Trigger','Trunk','variables','Variable','extractedreports','Reports','metrics','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','where','query','toString','OpenTabs','define','raw','section','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','model','rawAttributes','keys'];(function(_0x9537a7,_0x329b5d){var _0x323ade=function(_0x16c662){while(--_0x16c662){_0x9537a7['push'](_0x9537a7['shift']());}};_0x323ade(++_0x329b5d);}(_0x0d65,0xd9));var _0x50d6=function(_0x1fea2c,_0x5048ce){_0x1fea2c=_0x1fea2c-0x0;var _0x3556b6=_0x0d65[_0x1fea2c];return _0x3556b6;};'use strict';var _=require(_0x50d6('0x0'));var attributes=require(_0x50d6('0x1'));var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0x50d6('0x2')]=function(_0x162da2){var _0x5338b4=_0x162da2[_0x50d6('0x3')];function _0x28a951(_0x151ef6,_0x229cc9){return new Promise(function(_0x37b8d8,_0x3424ed){if(!_0x229cc9)return _0x37b8d8(null);var _0x2a2baa=_0x229cc9[_0x50d6('0x4')]?{[_0x229cc9['filter']['field']]:_0x229cc9['filter'][_0x50d6('0x5')]}:undefined;return _0x5338b4[_0x151ef6][_0x50d6('0x6')]({'where':_0x2a2baa,'raw':!![]})[_0x50d6('0x7')](function(_0x8139bc){_0x229cc9[_0x50d6('0x8')]=_['map'](_0x8139bc,'id');_0x37b8d8(_0x229cc9);})['catch'](function(_0x9cdc82){_0x3424ed(_0x9cdc82);});});}function _0x23b146(_0xf77c9c,_0x50a05d){return new Promise(function(_0x1743aa,_0x1e8546){var _0x16fb27=_0xf77c9c['filter']?{[_0xf77c9c[_0x50d6('0x4')][_0x50d6('0x9')]]:_0xf77c9c[_0x50d6('0x4')][_0x50d6('0x5')]}:undefined;return _0x5338b4[_0xf77c9c['model']][_0x50d6('0x6')]({'where':_0x16fb27,'raw':!![]})[_0x50d6('0x7')](function(_0x539028){_0x50a05d[_0x50d6('0x8')]=_[_0x50d6('0xa')](_0x539028,function(_0x58c541){return _0x58c541[_0x50d6('0xb')];});_0x1743aa(_0x50a05d);})[_0x50d6('0xc')](function(_0x34f627){_0x1e8546(_0x34f627);});});}function _0x5cc099(_0x285c5b,_0x5e91dd,_0x3ac9bb){if(!_0x5e91dd)return Promise['resolve'](null);return new Promise(function(_0x18ec14,_0x43b747){return _0x5338b4[_0x50d6('0xd')]['findAll']({'where':{'sectionId':_0x5e91dd['id']},'raw':!![]})[_0x50d6('0x7')](function(_0xf6afd7){if(_0x285c5b[_0x50d6('0x9')]&&_0x285c5b[_0x50d6('0x9')]!=='id'){_0x5e91dd[_0x50d6('0x8')]=_[_0x50d6('0xa')](_0xf6afd7,function(_0x2f2bbd){return _0x2f2bbd[_0x285c5b['field']];});}else{if(_0x3ac9bb===_0x50d6('0xe')){_0x5e91dd['associatedResources']=_[_0x50d6('0xa')](_0xf6afd7,function(_0x5e90e8){return{'id':_0x5e90e8['resourceId'],'type':_0x5e90e8[_0x50d6('0xf')]};});}else{_0x5e91dd[_0x50d6('0x8')]=_[_0x50d6('0xa')](_0xf6afd7,function(_0x3ced7f){return _0x3ced7f[_0x50d6('0x10')];});}}_0x18ec14(_0x5e91dd);})[_0x50d6('0xc')](function(_0x3b0c23){_0x43b747(_0x3b0c23);});});}function _0x4bd7be(_0x1d2db8,_0x34ee6e){var _0x4d87d4={'parentSections':[]};switch(_0x1d2db8[_0x50d6('0x11')]()){case _0x50d6('0x12'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x14');break;case _0x50d6('0x15'):_0x4d87d4[_0x50d6('0x13')]='SquareOdbc';break;case _0x50d6('0x16'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x17');_0x4d87d4['parentSections']=[{'name':_0x50d6('0x18'),'field':_0x50d6('0xb'),'foreignKey':_0x50d6('0x19')}];break;case _0x50d6('0x1a'):_0x4d87d4['childModel']=_0x50d6('0x1b');break;case _0x50d6('0x1c'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x1d');_0x4d87d4[_0x50d6('0x1e')]=[{'name':'Lists','field':'id','foreignKey':_0x50d6('0x1f')}];break;case _0x50d6('0x20'):_0x4d87d4['childModel']=_0x50d6('0x21');break;case _0x50d6('0x22'):_0x4d87d4[_0x50d6('0x13')]='CmCompany';break;case _0x50d6('0x23'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x24');break;case _0x50d6('0x25'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x26');break;case _0x50d6('0x27'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x28');break;case _0x50d6('0x29'):_0x4d87d4[_0x50d6('0x13')]='FaxQueue';break;case _0x50d6('0x2a'):_0x4d87d4[_0x50d6('0x13')]='FaxAccount';break;case _0x50d6('0x2b'):case _0x50d6('0x2c'):case _0x50d6('0x2d'):_0x4d87d4[_0x50d6('0x13')]='VoiceExtension';break;case _0x50d6('0x2e'):_0x4d87d4['childModel']='VoiceContext';break;case'voicemails':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x2f');break;case'voicerecordings':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x30');_0x4d87d4['parentSections']=[{'name':_0x50d6('0x31'),'field':_0x50d6('0xb'),'foreignKey':_0x50d6('0x32'),'model':_0x50d6('0x33'),'filter':{'field':_0x50d6('0x34'),'value':[_0x50d6('0x35')]}},{'name':_0x50d6('0x36'),'field':_0x50d6('0xb'),'foreignKey':_0x50d6('0x32'),'model':_0x50d6('0x33'),'filter':{'field':_0x50d6('0x34'),'value':[_0x50d6('0x37')]}},{'name':'VoiceQueues','field':'name','foreignKey':'queue','model':_0x50d6('0x38'),'filter':{'field':_0x50d6('0xf'),'value':[_0x50d6('0x39')]}},{'name':_0x50d6('0x3a'),'field':'name','foreignKey':'queue','model':_0x50d6('0x38'),'filter':{'field':_0x50d6('0xf'),'value':[_0x50d6('0x3b')]}}];break;case'musiconholds':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x3c');break;case _0x50d6('0x3d'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x3e');break;case'voiceprefixes':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x3f');break;case'ivrcampaigns':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x40');break;case _0x50d6('0x41'):_0x4d87d4[_0x50d6('0x13')]='MailQueue';break;case _0x50d6('0x42'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x43');break;case _0x50d6('0x44'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x45');break;case _0x50d6('0x46'):_0x4d87d4['childModel']='OpenchannelQueue';break;case _0x50d6('0x47'):_0x4d87d4[_0x50d6('0x13')]='OpenchannelAccount';break;case'smsqueues':_0x4d87d4['childModel']='SmsQueue';break;case _0x50d6('0x48'):_0x4d87d4[_0x50d6('0x13')]='SmsAccount';break;case _0x50d6('0x49'):_0x4d87d4['childModel']='WhatsappQueue';break;case _0x50d6('0x4a'):_0x4d87d4['childModel']='WhatsappAccount';break;case _0x50d6('0x4b'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x4c');break;case _0x50d6('0x4d'):case'queuecampaigns':_0x4d87d4['childModel']=_0x50d6('0x38');if(_0x34ee6e){_0x4d87d4['parentSections']=[{'name':_0x50d6('0x4e')},{'name':_0x50d6('0x3a')}];}break;case'users':case _0x50d6('0x4f'):case _0x50d6('0x50'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x33');if(_0x34ee6e){_0x4d87d4[_0x50d6('0x1e')]=[{'name':_0x50d6('0x51'),'filter':{'field':_0x50d6('0x34'),'value':['admin',_0x50d6('0x52')]},'ignore':!![]},{'name':_0x50d6('0x31')},{'name':_0x50d6('0x36')}];}break;case _0x50d6('0x53'):_0x4d87d4['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x54');break;case _0x50d6('0x55'):_0x4d87d4['childModel']=_0x50d6('0x56');break;case _0x50d6('0x57'):_0x4d87d4[_0x50d6('0x13')]='SugarcrmAccount';break;case _0x50d6('0x58'):_0x4d87d4[_0x50d6('0x13')]='DeskAccount';break;case _0x50d6('0x59'):_0x4d87d4['childModel']=_0x50d6('0x5a');break;case _0x50d6('0x5b'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x33');break;case'cannedanswers':_0x4d87d4['childModel']='CannedAnswer';break;case'dispositions':_0x4d87d4[_0x50d6('0x13')]='Disposition';break;case _0x50d6('0x5c'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x5d');break;case _0x50d6('0x5e'):_0x4d87d4[_0x50d6('0x13')]='Interval';break;case _0x50d6('0x5f'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x60');break;case _0x50d6('0x61'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x62');break;case'sounds':_0x4d87d4[_0x50d6('0x13')]='Sound';break;case'tags':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x63');break;case _0x50d6('0x64'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x65');break;case _0x50d6('0x66'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x67');break;case'trunks':_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x68');break;case _0x50d6('0x69'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0x6a');break;case'plugins':_0x4d87d4[_0x50d6('0x13')]='Plugin';break;case _0x50d6('0x6b'):_0x4d87d4[_0x50d6('0x13')]=_0x50d6('0xe');_0x4d87d4[_0x50d6('0x1e')]=[{'name':_0x50d6('0x6c'),'field':'id','foreignKey':'reportId'}];break;case _0x50d6('0x6d'):_0x4d87d4[_0x50d6('0x13')]='AnalyticMetric';break;}return _0x4d87d4;}function _0x51fb28(_0x4bd8d6,_0x430fb1){var _0x46a6c3=_0x4bd8d6[_0x50d6('0x6e')](0x0)[_0x50d6('0x6f')]()+_0x4bd8d6[_0x50d6('0x70')](0x1);var _0x2132a9={'type':_0x5338b4[_0x50d6('0x71')][_0x50d6('0x72')][_0x50d6('0x73')],'raw':!![]};return new Promise(function(_0x55d702,_0x53fba4){var _0x1bfb15=squel[_0x50d6('0x74')]()[_0x50d6('0x9')](_0x50d6('0x75')+_0x46a6c3+_0x50d6('0x76'),'id')['field'](_0x50d6('0x77'))[_0x50d6('0x78')]('user_has_'+_0x4bd8d6+'_interactions','ui')[_0x50d6('0x79')]('ui.UserId\x20=\x20?',_0x430fb1['id']);return _0x5338b4['sequelize'][_0x50d6('0x7a')](_0x1bfb15[_0x50d6('0x7b')](),_0x2132a9)[_0x50d6('0x7')](function(_0xd9f586){_0x430fb1[_0x46a6c3+_0x50d6('0x7c')]=_0xd9f586;_0x55d702(_0xd9f586);})[_0x50d6('0xc')](function(_0x6579ef){_0x53fba4(_0x6579ef);});});}return _0x162da2[_0x50d6('0x7d')]('UserProfile',attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x39c5fd){var _0x35a0ab={'raw':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x7e')],'where':{}};var _0x5bba6a={};var _0x2405d6={'count':0x0,'rows':[]};var _0x5d46da=_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x7f')];var _0x453b3b=_0x39c5fd[_0x50d6('0x7a')]['mergeResources']||![];var _0x4dfbc7=_0x4bd7be(_0x5d46da,_0x453b3b);if(!_0x4dfbc7[_0x50d6('0x13')])throw new Error('Invalid\x20section\x20\x27'+_0x5d46da+'\x27');var _0x4c2c98=[{'name':_0x5d46da}];if(!_[_0x50d6('0x80')](_0x4dfbc7['parentSections']))_0x4c2c98=_0x4dfbc7[_0x50d6('0x1e')];var _0x33a91a=[];for(var _0x4caea6=0x0;_0x4caea6<_0x4c2c98[_0x50d6('0x81')];_0x4caea6++){_0x33a91a[_0x50d6('0x82')](_0x5338b4[_0x50d6('0x83')][_0x50d6('0x84')]({'where':{'userProfileId':_0x39c5fd[_0x50d6('0x85')]['id'],'name':_0x4c2c98[_0x4caea6][_0x50d6('0xb')]},'raw':!![]}));}return Promise[_0x50d6('0x86')](_0x33a91a)['then'](function(_0x3634b8){var _0x4b3ddf=_[_0x50d6('0x4')](_0x3634b8,function(_0x7d658f){return _0x7d658f?_0x7d658f:undefined;});var _0xb0cac2=_[_0x50d6('0x4')](_0x4c2c98,[_0x50d6('0x87'),!![]]);var _0x13b422=_[_0x50d6('0x80')](_0x4b3ddf)&&_[_0x50d6('0x80')](_0xb0cac2)?null:_[_0x50d6('0x88')](_0xb0cac2,_0x4b3ddf);if(!_0x13b422)return null;var _0x428c89=[];for(var _0x3047c8=0x0;_0x3047c8<_0x13b422['length'];_0x3047c8++){var _0x2ba484=_['find'](_0x4c2c98,function(_0x357577){return _0x13b422[_0x3047c8]?_0x357577[_0x50d6('0xb')]===_0x13b422[_0x3047c8][_0x50d6('0xb')]:null;});if(_0x2ba484){if(_0x13b422[_0x3047c8]['ignore']){_0x428c89[_0x50d6('0x82')](_0x28a951(_0x4dfbc7[_0x50d6('0x13')],_0x13b422[_0x3047c8]));}else{if(!_0x13b422[_0x3047c8][_0x50d6('0x89')]){_0x428c89[_0x50d6('0x82')](_0x5cc099(_0x2ba484,_0x13b422[_0x3047c8],_0x4dfbc7[_0x50d6('0x13')]));}else{if(_0x2ba484[_0x50d6('0x8a')]){_0x428c89[_0x50d6('0x82')](_0x23b146(_0x2ba484,_0x13b422[_0x3047c8]));}}}}}return Promise[_0x50d6('0x86')](_0x428c89);})[_0x50d6('0x7')](function(_0x1428e8){var _0x108faf=_0x1428e8;var _0xeac84c=null;if(_0x108faf){_0xeac84c=_0x108faf[_0x50d6('0x81')]===0x1?_0x108faf[0x0]:null;}if(!_0xeac84c&&!_0x108faf)return _0x2405d6;var _0x5481b0=_0x5338b4[_0x4dfbc7['childModel']][_0x50d6('0x8b')];_0x5bba6a[_0x50d6('0x8a')]=_[_0x50d6('0x8c')](_0x5481b0);_0x5bba6a['query']=_[_0x50d6('0x8c')](_0x39c5fd[_0x50d6('0x7a')]);_0x5bba6a['filters']=_[_0x50d6('0x8d')](_0x5bba6a['model'],_0x5bba6a['query']);_0x35a0ab[_0x50d6('0x8e')]=_['intersection'](_0x5bba6a['model'],qs[_0x50d6('0x8f')](_0x39c5fd[_0x50d6('0x7a')]['fields']));_0x35a0ab['attributes']=_0x35a0ab['attributes']['length']?_0x35a0ab[_0x50d6('0x8e')]:_0x5bba6a[_0x50d6('0x8a')];if(!_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x90')](_0x50d6('0x91'))){_0x35a0ab['limit']=qs[_0x50d6('0x92')](_0x39c5fd['query'][_0x50d6('0x92')]);_0x35a0ab[_0x50d6('0x93')]=qs[_0x50d6('0x93')](_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x93')]);}_0x35a0ab['order']=qs[_0x50d6('0x94')](_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x94')]);_0x35a0ab[_0x50d6('0x79')]=qs['filters'](_[_0x50d6('0x95')](_0x39c5fd[_0x50d6('0x7a')],_0x5bba6a[_0x50d6('0x96')]));if(_0x39c5fd['query'][_0x50d6('0x4')]){_0x35a0ab[_0x50d6('0x79')]=_[_0x50d6('0x97')](_0x35a0ab['where'],{'$or':_[_0x50d6('0xa')](_0x5481b0,function(_0x53cdc9){if(_0x53cdc9[_0x50d6('0xf')][_0x50d6('0x98')]!=='VIRTUAL'){var _0x198cce={};_0x198cce[_0x53cdc9[_0x50d6('0x9')]]={'$like':'%'+_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0x4')]+'%'};return _0x198cce;}})});}var _0x2843af=[];var _0x2c3c7a=null;var _0x1a4ef0={};if(_0xeac84c){_0x2c3c7a=_[_0x50d6('0x84')](_0x4c2c98,[_0x50d6('0xb'),_0xeac84c[_0x50d6('0xb')]]);if(_0x2c3c7a[_0x50d6('0x9')]){_0x1a4ef0={};if(_0x4dfbc7[_0x50d6('0x13')]===_0x50d6('0xe')){_0x1a4ef0[_0x2c3c7a[_0x50d6('0x99')]]=_[_0x50d6('0xa')](_0xeac84c[_0x50d6('0x8')],'id');}else{_0x1a4ef0[_0x2c3c7a['foreignKey']]=_0xeac84c[_0x50d6('0x8')];}_0x2843af[_0x50d6('0x82')](_0x1a4ef0);}else{_0x35a0ab['where']['id']=_0xeac84c[_0x50d6('0x8')];}}else{for(var _0xdb1ab1=0x0;_0xdb1ab1<_0x108faf[_0x50d6('0x81')];_0xdb1ab1++){_0x2c3c7a=_['find'](_0x4c2c98,['name',_0x108faf[_0xdb1ab1]['name']]);if(_0x2c3c7a[_0x50d6('0x9')]){_0x1a4ef0={};_0x1a4ef0[_0x2c3c7a[_0x50d6('0x99')]]=_0x108faf[_0xdb1ab1]['associatedResources'];_0x2843af[_0x50d6('0x82')](_0x1a4ef0);}else{if(!_0x35a0ab[_0x50d6('0x79')]['id'])_0x35a0ab[_0x50d6('0x79')]['id']=[];_0x108faf[_0xdb1ab1][_0x50d6('0x8')]['forEach'](function(_0x9405e9){_0x35a0ab['where']['id']['push'](_0x9405e9);});}}}if(!_[_0x50d6('0x80')](_0x2843af)){_0x35a0ab[_0x50d6('0x79')]=_[_0x50d6('0x97')](_0x35a0ab['where'],{'$and':{'$or':_0x2843af}});}_0x35a0ab=_[_0x50d6('0x97')]({},_0x35a0ab,_0x39c5fd[_0x50d6('0x9a')]);if(_0xeac84c&&!_0xeac84c[_0x50d6('0x89')]&&_0x4dfbc7[_0x50d6('0x13')]===_0x50d6('0xe')){if(_0x39c5fd[_0x50d6('0x7a')]['includeAll']){_0x35a0ab[_0x50d6('0x9b')]=[{'all':!![]}];}return _0x5338b4[_0x4dfbc7['childModel']][_0x50d6('0x6')](_0x35a0ab)[_0x50d6('0x7')](function(_0x5acef1){var _0x3ca1c0=[];_0x5acef1[_0x50d6('0x9c')](function(_0x59f826){var _0x4ed704;switch(_0x59f826[_0x50d6('0x9d')]){case _0x50d6('0x9e'):_0x4ed704=_[_0x50d6('0x84')](_0xeac84c[_0x50d6('0x8')],function(_0x519bda){return _0x519bda['id']===_0x59f826[_0x50d6('0x9f')]&&_0x519bda['type']==='DefaultReports';});break;case'custom':_0x4ed704=_['find'](_0xeac84c[_0x50d6('0x8')],function(_0xf136c){return _0xf136c['id']===_0x59f826[_0x50d6('0x9f')]&&_0xf136c[_0x50d6('0xf')]===_0x50d6('0xa0');});break;}if(_0x4ed704)_0x3ca1c0['push'](_0x59f826);});_0x2405d6['count']=_0x3ca1c0['length'];_0x2405d6[_0x50d6('0xa1')]=_0x3ca1c0;return _0x2405d6;});}else{if(!_['isEmpty'](_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa2')])){_0x35a0ab[_0x50d6('0x79')]['id']=_0x35a0ab[_0x50d6('0x79')]['id']?_[_0x50d6('0x8d')](_0x35a0ab[_0x50d6('0x79')]['id'],_0x39c5fd[_0x50d6('0x7a')]['ids']):_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa2')];if(_0x39c5fd[_0x50d6('0x7a')]['customSorting']){_0x35a0ab[_0x50d6('0xa3')]=_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa4')];}}if(_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa5')]){_0x35a0ab['where']=_[_0x50d6('0x97')](_0x35a0ab[_0x50d6('0x79')],{'$and':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa5')]});}return _0x5338b4[_0x4dfbc7['childModel']][_0x50d6('0xa6')]({'where':_0x35a0ab[_0x50d6('0x79')]})[_0x50d6('0x7')](function(_0x502040){_0x2405d6[_0x50d6('0xa6')]=_0x502040;if(_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa7')]){if(_0x4dfbc7[_0x50d6('0x13')]===_0x50d6('0x1d')){_0x35a0ab['include']=[{'model':_0x5338b4[_0x50d6('0x63')],'as':_0x50d6('0xa8'),'attributes':['id',_0x50d6('0xb'),'color'],'required':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa9')]?!![]:![]},{'model':_0x5338b4[_0x50d6('0x63')],'as':_0x50d6('0xaa'),'attributes':['id',_0x50d6('0xb'),_0x50d6('0xab')],'through':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa9')]?{'attributes':[],'where':{'TagId':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa9')]||undefined}}:{},'required':_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xa9')]?!![]:![]}];}else{_0x35a0ab[_0x50d6('0x9b')]=[{'all':!![]}];}}return _0x5338b4[_0x4dfbc7[_0x50d6('0x13')]][_0x50d6('0x6')](_0x35a0ab);})[_0x50d6('0x7')](function(_0x383513){_0x2405d6['rows']=_0x383513;if(_0x5d46da===_0x50d6('0x31')&&_0x39c5fd[_0x50d6('0x7a')][_0x50d6('0xac')]==='true'){var _0x5173ce=[];for(var _0xf88229=0x0;_0xf88229<_0x2405d6[_0x50d6('0xa1')][_0x50d6('0x81')];_0xf88229++){_0x5173ce[_0x50d6('0x82')](_0x51fb28(_0x50d6('0xad'),_0x2405d6[_0x50d6('0xa1')][_0xf88229][_0x50d6('0xae')]));_0x5173ce[_0x50d6('0x82')](_0x51fb28('sms',_0x2405d6['rows'][_0xf88229][_0x50d6('0xae')]));_0x5173ce[_0x50d6('0x82')](_0x51fb28(_0x50d6('0xaf'),_0x2405d6[_0x50d6('0xa1')][_0xf88229][_0x50d6('0xae')]));_0x5173ce[_0x50d6('0x82')](_0x51fb28(_0x50d6('0xb0'),_0x2405d6['rows'][_0xf88229][_0x50d6('0xae')]));_0x5173ce['push'](_0x51fb28(_0x50d6('0xb1'),_0x2405d6[_0x50d6('0xa1')][_0xf88229][_0x50d6('0xae')]));_0x5173ce[_0x50d6('0x82')](_0x51fb28(_0x50d6('0xb2'),_0x2405d6[_0x50d6('0xa1')][_0xf88229][_0x50d6('0xae')]));}return Promise['all'](_0x5173ce)[_0x50d6('0x7')](function(){return _0x2405d6;});}return _0x2405d6;});}});}}});};
\ No newline at end of file
+var _0x996b=['./userProfile.attributes','../../components/parsers/qs','exports','models','filter','field','value','then','map','catch','model','findAll','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','odbc','childModel','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projects','JscriptyProject','contacts','CmContact','Lists','lists','companies','CmCompany','globalcustomfields','CmCustomField','chatwebsites','FaxQueue','faxaccounts','inboundroutes','internalroutes','contexts','VoiceContext','VoiceMail','VoiceRecording','Agents','membername','User','Telephones','role','telephone','VoiceQueues','VoiceQueue','type','inbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','queuecampaigns','users','telephones','Users','admin','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','scheduler','Schedule','sounds','Sound','tags','Tag','Template','Trigger','trunks','variables','plugins','Plugin','Reports','toUpperCase','slice','Sequelize','QueryTypes','select','ui.createdAt','from','where','sequelize','query','toString','UserProfile','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','UserProfileSection','all','union','find','ignore','push','keys','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','filters','pick','merge','key','VIRTUAL','foreignKey','options','autoAssociation','includeAll','include','forEach','reportType','default','reportId','CustomReports','count','rows','ids','extraQueryConditions','Tags','color','tag','ThroughTags','openTabs','true','dataValues','fax','mail','openchannel','whatsapp'];(function(_0x2d305b,_0x459d7c){var _0x52be39=function(_0x22496b){while(--_0x22496b){_0x2d305b['push'](_0x2d305b['shift']());}};_0x52be39(++_0x459d7c);}(_0x996b,0xb6));var _0xb996=function(_0x529e38,_0x39b919){_0x529e38=_0x529e38-0x0;var _0x15e70f=_0x996b[_0x529e38];return _0x15e70f;};'use strict';var _=require('lodash');var attributes=require(_0xb996('0x0'));var qs=require(_0xb996('0x1'));var squel=require('squel');module[_0xb996('0x2')]=function(_0x559216){var _0xb07dc8=_0x559216[_0xb996('0x3')];function _0x23a7d9(_0x1f6653,_0xffb58e){return new Promise(function(_0x2c34a4,_0x34549b){if(!_0xffb58e)return _0x2c34a4(null);var _0x3fb13f=_0xffb58e['filter']?{[_0xffb58e[_0xb996('0x4')][_0xb996('0x5')]]:_0xffb58e[_0xb996('0x4')][_0xb996('0x6')]}:undefined;return _0xb07dc8[_0x1f6653]['findAll']({'where':_0x3fb13f,'raw':!![]})[_0xb996('0x7')](function(_0x5493b2){_0xffb58e['associatedResources']=_[_0xb996('0x8')](_0x5493b2,'id');_0x2c34a4(_0xffb58e);})[_0xb996('0x9')](function(_0x20e645){_0x34549b(_0x20e645);});});}function _0xc4cf66(_0x39feb3,_0x1e9e59){return new Promise(function(_0x225fd8,_0x566cd9){var _0x8ba359=_0x39feb3['filter']?{[_0x39feb3[_0xb996('0x4')][_0xb996('0x5')]]:_0x39feb3[_0xb996('0x4')][_0xb996('0x6')]}:undefined;return _0xb07dc8[_0x39feb3[_0xb996('0xa')]][_0xb996('0xb')]({'where':_0x8ba359,'raw':!![]})['then'](function(_0x225512){_0x1e9e59[_0xb996('0xc')]=_[_0xb996('0x8')](_0x225512,function(_0x4856b1){return _0x4856b1[_0xb996('0xd')];});_0x225fd8(_0x1e9e59);})[_0xb996('0x9')](function(_0x589d77){_0x566cd9(_0x589d77);});});}function _0x3ff7fb(_0x373c0d,_0x2dfa8a,_0x5218fe){if(!_0x2dfa8a)return Promise[_0xb996('0xe')](null);return new Promise(function(_0x986b9c,_0x12e234){return _0xb07dc8[_0xb996('0xf')]['findAll']({'where':{'sectionId':_0x2dfa8a['id']},'raw':!![]})[_0xb996('0x7')](function(_0x3a7767){if(_0x373c0d[_0xb996('0x5')]&&_0x373c0d[_0xb996('0x5')]!=='id'){_0x2dfa8a[_0xb996('0xc')]=_[_0xb996('0x8')](_0x3a7767,function(_0xf6272f){return _0xf6272f[_0x373c0d['field']];});}else{if(_0x5218fe===_0xb996('0x10')){_0x2dfa8a['associatedResources']=_[_0xb996('0x8')](_0x3a7767,function(_0x2aa312){return{'id':_0x2aa312[_0xb996('0x11')],'type':_0x2aa312['type']};});}else{_0x2dfa8a[_0xb996('0xc')]=_[_0xb996('0x8')](_0x3a7767,function(_0x305802){return _0x305802['resourceId'];});}}_0x986b9c(_0x2dfa8a);})[_0xb996('0x9')](function(_0x21c65c){_0x12e234(_0x21c65c);});});}function _0x26e80d(_0x276a06,_0x32df09){var _0x335960={'parentSections':[]};switch(_0x276a06[_0xb996('0x12')]()){case _0xb996('0x13'):_0x335960['childModel']='SquareProject';break;case _0xb996('0x14'):_0x335960[_0xb996('0x15')]=_0xb996('0x16');break;case _0xb996('0x17'):_0x335960[_0xb996('0x15')]=_0xb996('0x18');_0x335960[_0xb996('0x19')]=[{'name':_0xb996('0x1a'),'field':_0xb996('0xd'),'foreignKey':'projectName'}];break;case _0xb996('0x1b'):_0x335960[_0xb996('0x15')]=_0xb996('0x1c');break;case _0xb996('0x1d'):_0x335960['childModel']=_0xb996('0x1e');_0x335960[_0xb996('0x19')]=[{'name':_0xb996('0x1f'),'field':'id','foreignKey':'ListId'}];break;case _0xb996('0x20'):_0x335960['childModel']='CmList';break;case _0xb996('0x21'):_0x335960['childModel']=_0xb996('0x22');break;case _0xb996('0x23'):_0x335960[_0xb996('0x15')]=_0xb996('0x24');break;case'chatqueues':_0x335960['childModel']='ChatQueue';break;case _0xb996('0x25'):_0x335960[_0xb996('0x15')]='ChatWebsite';break;case'faxqueues':_0x335960[_0xb996('0x15')]=_0xb996('0x26');break;case _0xb996('0x27'):_0x335960[_0xb996('0x15')]='FaxAccount';break;case _0xb996('0x28'):case _0xb996('0x29'):case'outboundroutes':_0x335960['childModel']='VoiceExtension';break;case _0xb996('0x2a'):_0x335960['childModel']=_0xb996('0x2b');break;case'voicemails':_0x335960[_0xb996('0x15')]=_0xb996('0x2c');break;case'voicerecordings':_0x335960['childModel']=_0xb996('0x2d');_0x335960[_0xb996('0x19')]=[{'name':_0xb996('0x2e'),'field':_0xb996('0xd'),'foreignKey':_0xb996('0x2f'),'model':_0xb996('0x30'),'filter':{'field':'role','value':['agent']}},{'name':_0xb996('0x31'),'field':_0xb996('0xd'),'foreignKey':_0xb996('0x2f'),'model':_0xb996('0x30'),'filter':{'field':_0xb996('0x32'),'value':[_0xb996('0x33')]}},{'name':_0xb996('0x34'),'field':_0xb996('0xd'),'foreignKey':'queue','model':_0xb996('0x35'),'filter':{'field':_0xb996('0x36'),'value':[_0xb996('0x37')]}},{'name':'QueueCampaigns','field':_0xb996('0xd'),'foreignKey':'queue','model':_0xb996('0x35'),'filter':{'field':'type','value':['outbound']}}];break;case _0xb996('0x38'):_0x335960[_0xb996('0x15')]=_0xb996('0x39');break;case _0xb996('0x3a'):_0x335960[_0xb996('0x15')]=_0xb996('0x3b');break;case _0xb996('0x3c'):_0x335960[_0xb996('0x15')]='VoicePrefix';break;case _0xb996('0x3d'):_0x335960[_0xb996('0x15')]='Campaign';break;case _0xb996('0x3e'):_0x335960['childModel']=_0xb996('0x3f');break;case _0xb996('0x40'):_0x335960[_0xb996('0x15')]=_0xb996('0x41');break;case _0xb996('0x42'):_0x335960['childModel']=_0xb996('0x43');break;case _0xb996('0x44'):_0x335960['childModel']=_0xb996('0x45');break;case _0xb996('0x46'):_0x335960[_0xb996('0x15')]='OpenchannelAccount';break;case _0xb996('0x47'):_0x335960[_0xb996('0x15')]=_0xb996('0x48');break;case _0xb996('0x49'):_0x335960['childModel']=_0xb996('0x4a');break;case _0xb996('0x4b'):_0x335960[_0xb996('0x15')]=_0xb996('0x4c');break;case _0xb996('0x4d'):_0x335960[_0xb996('0x15')]=_0xb996('0x4e');break;case _0xb996('0x4f'):_0x335960[_0xb996('0x15')]=_0xb996('0x50');break;case'voicequeues':case _0xb996('0x51'):_0x335960['childModel']=_0xb996('0x35');if(_0x32df09){_0x335960[_0xb996('0x19')]=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0xb996('0x52'):case'agents':case _0xb996('0x53'):_0x335960['childModel']=_0xb996('0x30');if(_0x32df09){_0x335960['parentSections']=[{'name':_0xb996('0x54'),'filter':{'field':_0xb996('0x32'),'value':[_0xb996('0x55'),'user']},'ignore':!![]},{'name':'Agents'},{'name':_0xb996('0x31')}];}break;case _0xb996('0x56'):_0x335960[_0xb996('0x15')]=_0xb996('0x57');break;case _0xb996('0x58'):_0x335960[_0xb996('0x15')]=_0xb996('0x59');break;case _0xb996('0x5a'):_0x335960[_0xb996('0x15')]=_0xb996('0x5b');break;case _0xb996('0x5c'):_0x335960['childModel']='SugarcrmAccount';break;case _0xb996('0x5d'):_0x335960[_0xb996('0x15')]=_0xb996('0x5e');break;case _0xb996('0x5f'):_0x335960['childModel']=_0xb996('0x60');break;case _0xb996('0x61'):_0x335960[_0xb996('0x15')]=_0xb996('0x30');break;case _0xb996('0x62'):_0x335960[_0xb996('0x15')]=_0xb996('0x63');break;case _0xb996('0x64'):_0x335960[_0xb996('0x15')]=_0xb996('0x65');break;case'customdashboards':_0x335960['childModel']=_0xb996('0x66');break;case _0xb996('0x67'):_0x335960[_0xb996('0x15')]=_0xb996('0x68');break;case _0xb996('0x69'):_0x335960['childModel']='Pause';break;case _0xb996('0x6a'):_0x335960[_0xb996('0x15')]=_0xb996('0x6b');break;case _0xb996('0x6c'):_0x335960['childModel']=_0xb996('0x6d');break;case _0xb996('0x6e'):_0x335960[_0xb996('0x15')]=_0xb996('0x6f');break;case'templates':_0x335960[_0xb996('0x15')]=_0xb996('0x70');break;case'triggers':_0x335960[_0xb996('0x15')]=_0xb996('0x71');break;case _0xb996('0x72'):_0x335960['childModel']='Trunk';break;case _0xb996('0x73'):_0x335960[_0xb996('0x15')]='Variable';break;case _0xb996('0x74'):_0x335960[_0xb996('0x15')]=_0xb996('0x75');break;case'extractedreports':_0x335960[_0xb996('0x15')]=_0xb996('0x10');_0x335960['parentSections']=[{'name':_0xb996('0x76'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x335960['childModel']='AnalyticMetric';break;}return _0x335960;}function _0x43cc9f(_0x419ebe,_0x529087){var _0x4a9136=_0x419ebe['charAt'](0x0)[_0xb996('0x77')]()+_0x419ebe[_0xb996('0x78')](0x1);var _0x9509ae={'type':_0xb07dc8[_0xb996('0x79')][_0xb996('0x7a')]['SELECT'],'raw':!![]};return new Promise(function(_0x4f2294,_0x4ca913){var _0xe88beb=squel[_0xb996('0x7b')]()['field']('ui.'+_0x4a9136+'InteractionId','id')['field'](_0xb996('0x7c'))[_0xb996('0x7d')]('user_has_'+_0x419ebe+'_interactions','ui')[_0xb996('0x7e')]('ui.UserId\x20=\x20?',_0x529087['id']);return _0xb07dc8[_0xb996('0x7f')][_0xb996('0x80')](_0xe88beb[_0xb996('0x81')](),_0x9509ae)[_0xb996('0x7')](function(_0x1cea4c){_0x529087[_0x4a9136+'OpenTabs']=_0x1cea4c;_0x4f2294(_0x1cea4c);})[_0xb996('0x9')](function(_0x36295b){_0x4ca913(_0x36295b);});});}return _0x559216['define'](_0xb996('0x82'),attributes,{'tableName':_0xb996('0x83'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x17339c){var _0x506a8f={'raw':_0x17339c['query']['raw'],'where':{}};var _0x551dd2={};var _0x17d1a5={'count':0x0,'rows':[]};var _0x50c754=_0x17339c[_0xb996('0x80')][_0xb996('0x84')];var _0x4dafc9=_0x17339c['query'][_0xb996('0x85')]||![];var _0xaca021=_0x26e80d(_0x50c754,_0x4dafc9);if(!_0xaca021['childModel'])throw new Error(_0xb996('0x86')+_0x50c754+'\x27');var _0xe87808=[{'name':_0x50c754}];if(!_[_0xb996('0x87')](_0xaca021[_0xb996('0x19')]))_0xe87808=_0xaca021[_0xb996('0x19')];var _0x5b5845=[];for(var _0x16f30f=0x0;_0x16f30f<_0xe87808[_0xb996('0x88')];_0x16f30f++){_0x5b5845['push'](_0xb07dc8[_0xb996('0x89')]['find']({'where':{'userProfileId':_0x17339c['params']['id'],'name':_0xe87808[_0x16f30f][_0xb996('0xd')]},'raw':!![]}));}return Promise[_0xb996('0x8a')](_0x5b5845)['then'](function(_0x4d3568){var _0x5b9d90=_[_0xb996('0x4')](_0x4d3568,function(_0x3fc466){return _0x3fc466?_0x3fc466:undefined;});var _0x30b9a8=_[_0xb996('0x4')](_0xe87808,['ignore',!![]]);var _0x11e383=_[_0xb996('0x87')](_0x5b9d90)&&_[_0xb996('0x87')](_0x30b9a8)?null:_[_0xb996('0x8b')](_0x30b9a8,_0x5b9d90);if(!_0x11e383)return null;var _0x6e7f3d=[];for(var _0xfbd600=0x0;_0xfbd600<_0x11e383[_0xb996('0x88')];_0xfbd600++){var _0x59dd74=_[_0xb996('0x8c')](_0xe87808,function(_0x5af5aa){return _0x11e383[_0xfbd600]?_0x5af5aa[_0xb996('0xd')]===_0x11e383[_0xfbd600]['name']:null;});if(_0x59dd74){if(_0x11e383[_0xfbd600][_0xb996('0x8d')]){_0x6e7f3d[_0xb996('0x8e')](_0x23a7d9(_0xaca021[_0xb996('0x15')],_0x11e383[_0xfbd600]));}else{if(!_0x11e383[_0xfbd600]['autoAssociation']){_0x6e7f3d['push'](_0x3ff7fb(_0x59dd74,_0x11e383[_0xfbd600],_0xaca021['childModel']));}else{if(_0x59dd74['model']){_0x6e7f3d[_0xb996('0x8e')](_0xc4cf66(_0x59dd74,_0x11e383[_0xfbd600]));}}}}}return Promise[_0xb996('0x8a')](_0x6e7f3d);})[_0xb996('0x7')](function(_0x585891){var _0x3daa2f=_0x585891;var _0x197f5d=null;if(_0x3daa2f){_0x197f5d=_0x3daa2f['length']===0x1?_0x3daa2f[0x0]:null;}if(!_0x197f5d&&!_0x3daa2f)return _0x17d1a5;var _0xd26e3f=_0xb07dc8[_0xaca021[_0xb996('0x15')]]['rawAttributes'];_0x551dd2[_0xb996('0xa')]=_[_0xb996('0x8f')](_0xd26e3f);_0x551dd2[_0xb996('0x80')]=_[_0xb996('0x8f')](_0x17339c['query']);_0x551dd2['filters']=_[_0xb996('0x90')](_0x551dd2[_0xb996('0xa')],_0x551dd2[_0xb996('0x80')]);_0x506a8f[_0xb996('0x91')]=_[_0xb996('0x90')](_0x551dd2[_0xb996('0xa')],qs['fields'](_0x17339c['query'][_0xb996('0x92')]));_0x506a8f[_0xb996('0x91')]=_0x506a8f[_0xb996('0x91')][_0xb996('0x88')]?_0x506a8f[_0xb996('0x91')]:_0x551dd2['model'];if(!_0x17339c['query'][_0xb996('0x93')]('nolimit')){_0x506a8f[_0xb996('0x94')]=qs[_0xb996('0x94')](_0x17339c['query'][_0xb996('0x94')]);_0x506a8f[_0xb996('0x95')]=qs['offset'](_0x17339c[_0xb996('0x80')][_0xb996('0x95')]);}_0x506a8f[_0xb996('0x96')]=qs[_0xb996('0x97')](_0x17339c[_0xb996('0x80')][_0xb996('0x97')]);_0x506a8f[_0xb996('0x7e')]=qs[_0xb996('0x98')](_[_0xb996('0x99')](_0x17339c['query'],_0x551dd2[_0xb996('0x98')]));if(_0x17339c[_0xb996('0x80')][_0xb996('0x4')]){_0x506a8f[_0xb996('0x7e')]=_[_0xb996('0x9a')](_0x506a8f[_0xb996('0x7e')],{'$or':_[_0xb996('0x8')](_0xd26e3f,function(_0x424a73){if(_0x424a73[_0xb996('0x36')][_0xb996('0x9b')]!==_0xb996('0x9c')){var _0x2e1f25={};_0x2e1f25[_0x424a73[_0xb996('0x5')]]={'$like':'%'+_0x17339c[_0xb996('0x80')][_0xb996('0x4')]+'%'};return _0x2e1f25;}})});}var _0x359575=[];var _0x1cc63c=null;var _0x397efa={};if(_0x197f5d){_0x1cc63c=_['find'](_0xe87808,['name',_0x197f5d['name']]);if(_0x1cc63c[_0xb996('0x5')]){_0x397efa={};if(_0xaca021['childModel']===_0xb996('0x10')){_0x397efa[_0x1cc63c['foreignKey']]=_[_0xb996('0x8')](_0x197f5d['associatedResources'],'id');}else{_0x397efa[_0x1cc63c[_0xb996('0x9d')]]=_0x197f5d['associatedResources'];}_0x359575[_0xb996('0x8e')](_0x397efa);}else{_0x506a8f[_0xb996('0x7e')]['id']=_0x197f5d['associatedResources'];}}else{for(var _0x197cc2=0x0;_0x197cc2<_0x3daa2f['length'];_0x197cc2++){_0x1cc63c=_[_0xb996('0x8c')](_0xe87808,['name',_0x3daa2f[_0x197cc2][_0xb996('0xd')]]);if(_0x1cc63c[_0xb996('0x5')]){_0x397efa={};_0x397efa[_0x1cc63c[_0xb996('0x9d')]]=_0x3daa2f[_0x197cc2][_0xb996('0xc')];_0x359575[_0xb996('0x8e')](_0x397efa);}else{if(!_0x506a8f[_0xb996('0x7e')]['id'])_0x506a8f[_0xb996('0x7e')]['id']=[];_0x3daa2f[_0x197cc2][_0xb996('0xc')]['forEach'](function(_0x4ee160){_0x506a8f[_0xb996('0x7e')]['id'][_0xb996('0x8e')](_0x4ee160);});}}}if(!_[_0xb996('0x87')](_0x359575)){_0x506a8f['where']=_[_0xb996('0x9a')](_0x506a8f[_0xb996('0x7e')],{'$and':{'$or':_0x359575}});}_0x506a8f=_[_0xb996('0x9a')]({},_0x506a8f,_0x17339c[_0xb996('0x9e')]);if(_0x197f5d&&!_0x197f5d[_0xb996('0x9f')]&&_0xaca021['childModel']===_0xb996('0x10')){if(_0x17339c[_0xb996('0x80')][_0xb996('0xa0')]){_0x506a8f[_0xb996('0xa1')]=[{'all':!![]}];}return _0xb07dc8[_0xaca021[_0xb996('0x15')]][_0xb996('0xb')](_0x506a8f)['then'](function(_0x2a80ac){var _0x23dd68=[];_0x2a80ac[_0xb996('0xa2')](function(_0x163f95){var _0x5d6127;switch(_0x163f95[_0xb996('0xa3')]){case _0xb996('0xa4'):_0x5d6127=_[_0xb996('0x8c')](_0x197f5d['associatedResources'],function(_0x3e4f1f){return _0x3e4f1f['id']===_0x163f95[_0xb996('0xa5')]&&_0x3e4f1f[_0xb996('0x36')]==='DefaultReports';});break;case'custom':_0x5d6127=_[_0xb996('0x8c')](_0x197f5d[_0xb996('0xc')],function(_0x1c1f41){return _0x1c1f41['id']===_0x163f95[_0xb996('0xa5')]&&_0x1c1f41[_0xb996('0x36')]===_0xb996('0xa6');});break;}if(_0x5d6127)_0x23dd68['push'](_0x163f95);});_0x17d1a5[_0xb996('0xa7')]=_0x23dd68[_0xb996('0x88')];_0x17d1a5[_0xb996('0xa8')]=_0x23dd68;return _0x17d1a5;});}else{if(!_[_0xb996('0x87')](_0x17339c[_0xb996('0x80')][_0xb996('0xa9')])){_0x506a8f[_0xb996('0x7e')]['id']=_0x506a8f[_0xb996('0x7e')]['id']?_[_0xb996('0x90')](_0x506a8f[_0xb996('0x7e')]['id'],_0x17339c[_0xb996('0x80')][_0xb996('0xa9')]):_0x17339c[_0xb996('0x80')]['ids'];if(_0x17339c[_0xb996('0x80')]['customSorting']){_0x506a8f[_0xb996('0x96')]=_0x17339c[_0xb996('0x80')]['customSorting'];}}if(_0x17339c['query']['extraQueryConditions']){_0x506a8f['where']=_[_0xb996('0x9a')](_0x506a8f[_0xb996('0x7e')],{'$and':_0x17339c[_0xb996('0x80')][_0xb996('0xaa')]});}return _0xb07dc8[_0xaca021[_0xb996('0x15')]][_0xb996('0xa7')]({'where':_0x506a8f[_0xb996('0x7e')]})[_0xb996('0x7')](function(_0x13a412){_0x17d1a5[_0xb996('0xa7')]=_0x13a412;if(_0x17339c[_0xb996('0x80')]['includeAll']){if(_0xaca021[_0xb996('0x15')]===_0xb996('0x1e')){_0x506a8f[_0xb996('0xa1')]=[{'model':_0xb07dc8[_0xb996('0x6f')],'as':_0xb996('0xab'),'attributes':['id',_0xb996('0xd'),_0xb996('0xac')],'required':_0x17339c[_0xb996('0x80')][_0xb996('0xad')]?!![]:![]},{'model':_0xb07dc8[_0xb996('0x6f')],'as':_0xb996('0xae'),'attributes':['id',_0xb996('0xd'),_0xb996('0xac')],'through':_0x17339c[_0xb996('0x80')][_0xb996('0xad')]?{'attributes':[],'where':{'TagId':_0x17339c['query']['tag']||undefined}}:{},'required':_0x17339c[_0xb996('0x80')][_0xb996('0xad')]?!![]:![]}];}else{_0x506a8f[_0xb996('0xa1')]=[{'all':!![]}];}}return _0xb07dc8[_0xaca021[_0xb996('0x15')]][_0xb996('0xb')](_0x506a8f);})[_0xb996('0x7')](function(_0x58eb43){_0x17d1a5[_0xb996('0xa8')]=_0x58eb43;if(_0x50c754===_0xb996('0x2e')&&_0x17339c[_0xb996('0x80')][_0xb996('0xaf')]===_0xb996('0xb0')){var _0x39f43e=[];for(var _0x46b8f8=0x0;_0x46b8f8<_0x17d1a5['rows'][_0xb996('0x88')];_0x46b8f8++){_0x39f43e['push'](_0x43cc9f('chat',_0x17d1a5[_0xb996('0xa8')][_0x46b8f8][_0xb996('0xb1')]));_0x39f43e['push'](_0x43cc9f('sms',_0x17d1a5[_0xb996('0xa8')][_0x46b8f8][_0xb996('0xb1')]));_0x39f43e['push'](_0x43cc9f(_0xb996('0xb2'),_0x17d1a5[_0xb996('0xa8')][_0x46b8f8]['dataValues']));_0x39f43e['push'](_0x43cc9f(_0xb996('0xb3'),_0x17d1a5[_0xb996('0xa8')][_0x46b8f8]['dataValues']));_0x39f43e['push'](_0x43cc9f(_0xb996('0xb4'),_0x17d1a5[_0xb996('0xa8')][_0x46b8f8][_0xb996('0xb1')]));_0x39f43e[_0xb996('0x8e')](_0x43cc9f(_0xb996('0xb5'),_0x17d1a5[_0xb996('0xa8')][_0x46b8f8][_0xb996('0xb1')]));}return Promise[_0xb996('0x8a')](_0x39f43e)['then'](function(){return _0x17d1a5;});}return _0x17d1a5;});}});}}});};
\ No newline at end of file
index 33e181c..0be0f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf963=['defaults','socket.io-emitter','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis'];(function(_0x1e9fbd,_0x422095){var _0x3ba8f6=function(_0x9b2668){while(--_0x9b2668){_0x1e9fbd['push'](_0x1e9fbd['shift']());}};_0x3ba8f6(++_0x422095);}(_0xf963,0x11d));var _0x3f96=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xf963[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x3f96('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3f96('0x1'));var rs=require(_0x3f96('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3f96('0x3'));var logger=require(_0x3f96('0x4'))(_0x3f96('0x5'));var config=require(_0x3f96('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3f96('0x7')]['http']({'port':0x232a});config[_0x3f96('0x8')]=_[_0x3f96('0x9')](config[_0x3f96('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x3f96('0xa'))(new Redis(config[_0x3f96('0x8')]));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x588a00,_0x4b889d,_0xc70e27){return new BPromise(function(_0x3342b8,_0x1b7d40){return client[_0x3f96('0xb')](_0x588a00,_0xc70e27)[_0x3f96('0xc')](function(_0x4a7573){logger[_0x3f96('0xd')](_0x3f96('0xe'),_0x4b889d,_0x3f96('0xf'));logger[_0x3f96('0x10')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x4b889d,_0x3f96('0xf'),JSON['stringify'](_0x4a7573));if(_0x4a7573[_0x3f96('0x11')]){if(_0x4a7573[_0x3f96('0x11')][_0x3f96('0x12')]===0x1f4){logger['error'](_0x3f96('0xe'),_0x4b889d,_0x4a7573['error'][_0x3f96('0x13')]);return _0x1b7d40(_0x4a7573['error']['message']);}logger['error'](_0x3f96('0xe'),_0x4b889d,_0x4a7573[_0x3f96('0x11')][_0x3f96('0x13')]);return _0x3342b8(_0x4a7573[_0x3f96('0x11')]['message']);}else{logger[_0x3f96('0xd')](_0x3f96('0xe'),_0x4b889d,_0x3f96('0xf'));_0x3342b8(_0x4a7573['result'][_0x3f96('0x13')]);}})[_0x3f96('0x14')](function(_0x184724){logger['error'](_0x3f96('0xe'),_0x4b889d,_0x184724);_0x1b7d40(_0x184724);});});}
\ No newline at end of file
+var _0x8561=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','redis','localhost','then','info','request\x20sent','debug','stringify','error','code','UserProfile,\x20%s,\x20%s','message','result','util','moment','randomstring'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8561,0x1b2));var _0x1856=function(_0x74115b,_0x31f752){_0x74115b=_0x74115b-0x0;var _0x57ebbd=_0x8561[_0x74115b];return _0x57ebbd;};'use strict';var _=require('lodash');var util=require(_0x1856('0x0'));var moment=require(_0x1856('0x1'));var BPromise=require('bluebird');var rs=require(_0x1856('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1856('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1856('0x4'))('rpc');var config=require(_0x1856('0x5'));var jayson=require(_0x1856('0x6'));var client=jayson['client']['http']({'port':0x232a});config[_0x1856('0x7')]=_['defaults'](config['redis'],{'host':_0x1856('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./userProfile.socket')['register'](socket);function respondWithRpcPromise(_0x1bfad8,_0x3e47b3,_0x510505){return new BPromise(function(_0x55fe85,_0x97f276){return client['request'](_0x1bfad8,_0x510505)[_0x1856('0x9')](function(_0x584a8e){logger[_0x1856('0xa')]('UserProfile,\x20%s,\x20%s',_0x3e47b3,_0x1856('0xb'));logger[_0x1856('0xc')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x3e47b3,_0x1856('0xb'),JSON[_0x1856('0xd')](_0x584a8e));if(_0x584a8e[_0x1856('0xe')]){if(_0x584a8e['error'][_0x1856('0xf')]===0x1f4){logger[_0x1856('0xe')](_0x1856('0x10'),_0x3e47b3,_0x584a8e['error'][_0x1856('0x11')]);return _0x97f276(_0x584a8e[_0x1856('0xe')][_0x1856('0x11')]);}logger[_0x1856('0xe')](_0x1856('0x10'),_0x3e47b3,_0x584a8e[_0x1856('0xe')][_0x1856('0x11')]);return _0x55fe85(_0x584a8e['error']['message']);}else{logger[_0x1856('0xa')]('UserProfile,\x20%s,\x20%s',_0x3e47b3,'request\x20sent');_0x55fe85(_0x584a8e[_0x1856('0x12')][_0x1856('0x11')]);}})['catch'](function(_0x4f5381){logger[_0x1856('0xe')](_0x1856('0x10'),_0x3e47b3,_0x4f5381);_0x97f276(_0x4f5381);});});}
\ No newline at end of file
index 0365ac9..e1a2ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14d5=['remove','update','removeListener','length','./userProfile.events','save'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0x14d5,0x136));var _0x514d=function(_0x552fce,_0x3f24bc){_0x552fce=_0x552fce-0x0;var _0x3e27a2=_0x14d5[_0x552fce];return _0x3e27a2;};'use strict';var UserProfileEvents=require(_0x514d('0x0'));var events=[_0x514d('0x1'),_0x514d('0x2'),_0x514d('0x3')];function createListener(_0x350b26,_0x3cfcb1){return function(_0x53ecf2){_0x3cfcb1['emit'](_0x350b26,_0x53ecf2);};}function removeListener(_0x4f8f21,_0x185208){return function(){UserProfileEvents[_0x514d('0x4')](_0x4f8f21,_0x185208);};}exports['register']=function(_0x4d1942){for(var _0x601af0=0x0,_0x18d260=events[_0x514d('0x5')];_0x601af0<_0x18d260;_0x601af0++){var _0x5481c3=events[_0x601af0];var _0x1d3836=createListener('userProfile:'+_0x5481c3,_0x4d1942);UserProfileEvents['on'](_0x5481c3,_0x1d3836);}};
\ No newline at end of file
+var _0x769f=['register','length','update'];(function(_0x366bc2,_0x5eba53){var _0x92310b=function(_0x2b4618){while(--_0x2b4618){_0x366bc2['push'](_0x366bc2['shift']());}};_0x92310b(++_0x5eba53);}(_0x769f,0x14f));var _0xf769=function(_0x2dc46b,_0x110ad5){_0x2dc46b=_0x2dc46b-0x0;var _0x2fae67=_0x769f[_0x2dc46b];return _0x2fae67;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=['save','remove',_0xf769('0x0')];function createListener(_0x5963f6,_0x344c55){return function(_0x21c180){_0x344c55['emit'](_0x5963f6,_0x21c180);};}function removeListener(_0x4e779e,_0x120baa){return function(){UserProfileEvents['removeListener'](_0x4e779e,_0x120baa);};}exports[_0xf769('0x1')]=function(_0x26a243){for(var _0x295b69=0x0,_0x3c65a7=events[_0xf769('0x2')];_0x295b69<_0x3c65a7;_0x295b69++){var _0x2d56e0=events[_0x295b69];var _0x306f56=createListener('userProfile:'+_0x2d56e0,_0x26a243);UserProfileEvents['on'](_0x2d56e0,_0x306f56);}};
\ No newline at end of file
index 2fa34ac..69eff60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b07=['/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','describe'];(function(_0x3b19ea,_0x518b6b){var _0x40ece9=function(_0x3a3386){while(--_0x3a3386){_0x3b19ea['push'](_0x3b19ea['shift']());}};_0x40ece9(++_0x518b6b);}(_0x4b07,0x1d6));var _0x74b0=function(_0x2e1d25,_0x5a15b6){_0x2e1d25=_0x2e1d25-0x0;var _0x53e696=_0x4b07[_0x2e1d25];return _0x53e696;};'use strict';var multer=require('multer');var util=require(_0x74b0('0x0'));var path=require(_0x74b0('0x1'));var timeout=require('connect-timeout');var express=require(_0x74b0('0x2'));var router=express[_0x74b0('0x3')]();var fs_extra=require(_0x74b0('0x4'));var auth=require(_0x74b0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x74b0('0x6'));var controller=require('./userProfileResource.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x74b0('0x7')]);router[_0x74b0('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x74b0('0x9')]);router['get'](_0x74b0('0xa'),auth[_0x74b0('0xb')](),controller[_0x74b0('0xc')]);router[_0x74b0('0xd')]('/',auth[_0x74b0('0xb')](),controller[_0x74b0('0xe')]);router[_0x74b0('0xf')](_0x74b0('0xa'),auth[_0x74b0('0xb')](),controller[_0x74b0('0x10')]);router[_0x74b0('0x11')](_0x74b0('0xa'),auth[_0x74b0('0xb')](),controller[_0x74b0('0x12')]);module[_0x74b0('0x13')]=router;
\ No newline at end of file
+var _0x465d=['isAuthenticated','index','/describe','/:id','post','create','update','delete','destroy','multer','util','path','express','fs-extra','../../config/environment','./userProfileResource.controller','get'];(function(_0x96d980,_0x25a9d0){var _0xe021ab=function(_0x55115a){while(--_0x55115a){_0x96d980['push'](_0x96d980['shift']());}};_0xe021ab(++_0x25a9d0);}(_0x465d,0x17f));var _0xd465=function(_0x245772,_0x2c0818){_0x245772=_0x245772-0x0;var _0x1a1c3b=_0x465d[_0x245772];return _0x1a1c3b;};'use strict';var multer=require(_0xd465('0x0'));var util=require(_0xd465('0x1'));var path=require(_0xd465('0x2'));var timeout=require('connect-timeout');var express=require(_0xd465('0x3'));var router=express['Router']();var fs_extra=require(_0xd465('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd465('0x5'));var controller=require(_0xd465('0x6'));router[_0xd465('0x7')]('/',auth[_0xd465('0x8')](),controller[_0xd465('0x9')]);router[_0xd465('0x7')](_0xd465('0xa'),auth[_0xd465('0x8')](),controller['describe']);router['get'](_0xd465('0xb'),auth[_0xd465('0x8')](),controller['show']);router[_0xd465('0xc')]('/',auth[_0xd465('0x8')](),controller[_0xd465('0xd')]);router['put'](_0xd465('0xb'),auth[_0xd465('0x8')](),controller[_0xd465('0xe')]);router[_0xd465('0xf')]('/:id',auth[_0xd465('0x8')](),controller[_0xd465('0x10')]);module['exports']=router;
\ No newline at end of file
index 833d3f5..d26ad70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7f3=['STRING','sequelize'];(function(_0x21343f,_0x360b84){var _0x191d29=function(_0x299852){while(--_0x299852){_0x21343f['push'](_0x21343f['shift']());}};_0x191d29(++_0x360b84);}(_0xe7f3,0xab));var _0x3e7f=function(_0xc12a83,_0x1e7d83){_0xc12a83=_0xc12a83-0x0;var _0x40e21e=_0xe7f3[_0xc12a83];return _0x40e21e;};'use strict';var Sequelize=require(_0x3e7f('0x0'));module['exports']={'name':{'type':Sequelize[_0x3e7f('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x3e7f('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x48fd=['STRING','sequelize','exports'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0x48fd,0x79));var _0xd48f=function(_0x300975,_0x4a1b1d){_0x300975=_0x300975-0x0;var _0x4a3dc4=_0x48fd[_0x300975];return _0x4a3dc4;};'use strict';var Sequelize=require(_0xd48f('0x0'));module[_0xd48f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0xd48f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 4dec9bf..54ea76b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','create','update','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','UserProfileResource','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order'];(function(_0x3d9dbc,_0x414267){var _0x25fb2b=function(_0x2f1e03){while(--_0x2f1e03){_0x3d9dbc['push'](_0x3d9dbc['shift']());}};_0x25fb2b(++_0x414267);}(_0xf61e,0x191));var _0xef61=function(_0x393a24,_0x267197){_0x393a24=_0x393a24-0x0;var _0x211200=_0xf61e[_0x393a24];return _0x211200;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['UserProfileResource']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')](_0x5e614b['body'],{})[_0xef61('0x28')](respondWithResult(_0x47b09d,0xc9))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x2904e0,_0x13bb20){if(_0x2904e0[_0xef61('0x4a')]['id']){delete _0x2904e0[_0xef61('0x4a')]['id'];}return db['UserProfileResource'][_0xef61('0x47')]({'where':{'id':_0x2904e0['params']['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x13bb20,null))[_0xef61('0x28')](saveUpdates(_0x2904e0[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x13bb20,null))[_0xef61('0x45')](handleError(_0x13bb20,null));};exports[_0xef61('0x27')]=function(_0x3e23eb,_0x1565c7){return db[_0xef61('0x30')]['find']({'where':{'id':_0x3e23eb[_0xef61('0x4b')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x1565c7,null))['then'](removeEntity(_0x1565c7,null))['catch'](handleError(_0x1565c7,null));};exports[_0xef61('0x4c')]=function(_0x1ce127,_0x504389){return db[_0xef61('0x30')]['describe']()[_0xef61('0x28')](respondWithResult(_0x504389,null))[_0xef61('0x45')](handleError(_0x504389,null));};
\ No newline at end of file
+var _0x5f2f=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','findAll','rows','catch','keys','find','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x5b740b,_0x381833){var _0x6f8f4e=function(_0x86d068){while(--_0x86d068){_0x5b740b['push'](_0x5b740b['shift']());}};_0x6f8f4e(++_0x381833);}(_0x5f2f,0x73));var _0xf5f2=function(_0xdfdb30,_0x35dba3){_0xdfdb30=_0xdfdb30-0x0;var _0x1cd22d=_0x5f2f[_0xdfdb30];return _0x1cd22d;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'all':!![]}];}return db[_0xf5f2('0x29')][_0xf5f2('0x3e')](_0x22c826);})[_0xf5f2('0x24')](function(_0x574f24){_0x11c771[_0xf5f2('0x3f')]=_0x574f24;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x40')](handleError(_0x53cb96,null));};exports['show']=function(_0x509dbc,_0x59eb00){var _0x76d21b={'raw':![],'where':{'id':_0x509dbc['params']['id']}},_0x2ad13c={};_0x2ad13c[_0xf5f2('0x31')]=_[_0xf5f2('0x41')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x2ad13c[_0xf5f2('0x2e')]=_[_0xf5f2('0x41')](_0x509dbc[_0xf5f2('0x2e')]);_0x2ad13c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],_0x2ad13c[_0xf5f2('0x2e')]);_0x76d21b[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x2ad13c[_0xf5f2('0x31')],qs['fields'](_0x509dbc[_0xf5f2('0x2e')]['fields']));_0x76d21b[_0xf5f2('0x32')]=_0x76d21b[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x76d21b[_0xf5f2('0x32')]:_0x2ad13c[_0xf5f2('0x31')];if(_0x509dbc[_0xf5f2('0x2e')]['includeAll']){_0x76d21b[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x76d21b=_[_0xf5f2('0x39')]({},_0x76d21b,_0x509dbc[_0xf5f2('0x3b')]);return db[_0xf5f2('0x29')][_0xf5f2('0x42')](_0x76d21b)[_0xf5f2('0x24')](handleEntityNotFound(_0x59eb00,null))[_0xf5f2('0x24')](respondWithResult(_0x59eb00,null))[_0xf5f2('0x40')](handleError(_0x59eb00,null));};exports['create']=function(_0x35dece,_0x33ec29){return db[_0xf5f2('0x29')]['create'](_0x35dece[_0xf5f2('0x43')],{})[_0xf5f2('0x24')](respondWithResult(_0x33ec29,0xc9))[_0xf5f2('0x40')](handleError(_0x33ec29,null));};exports['update']=function(_0x57a7cb,_0x7bb942){if(_0x57a7cb[_0xf5f2('0x43')]['id']){delete _0x57a7cb['body']['id'];}return db[_0xf5f2('0x29')]['find']({'where':{'id':_0x57a7cb[_0xf5f2('0x44')]['id']}})['then'](handleEntityNotFound(_0x7bb942,null))[_0xf5f2('0x24')](saveUpdates(_0x57a7cb['body'],null))[_0xf5f2('0x24')](respondWithResult(_0x7bb942,null))[_0xf5f2('0x40')](handleError(_0x7bb942,null));};exports[_0xf5f2('0x45')]=function(_0x11a083,_0x4fa738){return db[_0xf5f2('0x29')][_0xf5f2('0x42')]({'where':{'id':_0x11a083['params']['id']}})['then'](handleEntityNotFound(_0x4fa738,null))[_0xf5f2('0x24')](removeEntity(_0x4fa738,null))[_0xf5f2('0x40')](handleError(_0x4fa738,null));};exports['describe']=function(_0x22b645,_0xe0ce7f){return db[_0xf5f2('0x29')][_0xf5f2('0x46')]()['then'](respondWithResult(_0xe0ce7f,null))['catch'](handleError(_0xe0ce7f,null));};
\ No newline at end of file
index 460ae5c..0135d17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','util','api'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x4fdb,0x16d));var _0xb4fd=function(_0x2befc1,_0x5d06b9){_0x2befc1=_0x2befc1-0x0;var _0x48e81e=_0x4fdb[_0x2befc1];return _0x48e81e;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require('../../config/logger')(_0xb4fd('0x2'));var moment=require(_0xb4fd('0x3'));var BPromise=require(_0xb4fd('0x4'));var rp=require(_0xb4fd('0x5'));var fs=require('fs');var path=require(_0xb4fd('0x6'));var rimraf=require(_0xb4fd('0x7'));var config=require(_0xb4fd('0x8'));var attributes=require(_0xb4fd('0x9'));module[_0xb4fd('0xa')]=function(_0x50fa55,_0x21defa){return _0x50fa55['define'](_0xb4fd('0xb'),attributes,{'tableName':_0xb4fd('0xc'),'paranoid':![],'indexes':[{'name':_0xb4fd('0xd'),'fields':[_0xb4fd('0xe'),_0xb4fd('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x083b=['UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','util','moment','path','rimraf','../../config/environment','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x083b,0x144));var _0xb083=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x083b[_0x28d18d];return _0x470640;};'use strict';var _=require('lodash');var util=require(_0xb083('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb083('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb083('0x2'));var rimraf=require(_0xb083('0x3'));var config=require(_0xb083('0x4'));var attributes=require('./userProfileResource.attributes');module[_0xb083('0x5')]=function(_0x10da1,_0x1461ad){return _0x10da1['define'](_0xb083('0x6'),attributes,{'tableName':_0xb083('0x7'),'paranoid':![],'indexes':[{'name':_0xb083('0x8'),'fields':['resourceId',_0xb083('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 242438b..c26c547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2134=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x275a70,_0x4ba86a){var _0x222826=function(_0x4bd322){while(--_0x4bd322){_0x275a70['push'](_0x275a70['shift']());}};_0x222826(++_0x4ba86a);}(_0x2134,0x157));var _0x4213=function(_0x1d5847,_0x4f2d24){_0x1d5847=_0x1d5847-0x0;var _0x40b58f=_0x2134[_0x1d5847];return _0x40b58f;};'use strict';var _=require(_0x4213('0x0'));var util=require(_0x4213('0x1'));var moment=require(_0x4213('0x2'));var BPromise=require(_0x4213('0x3'));var rs=require(_0x4213('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4213('0x5'))['db'];var utils=require(_0x4213('0x6'));var logger=require(_0x4213('0x7'))(_0x4213('0x8'));var config=require(_0x4213('0x9'));var jayson=require(_0x4213('0xa'));var client=jayson[_0x4213('0xb')][_0x4213('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1595d3,_0x17c9b6,_0x9c1232){return new BPromise(function(_0x4cdef9,_0x30d850){return client[_0x4213('0xd')](_0x1595d3,_0x9c1232)[_0x4213('0xe')](function(_0x7e8398){logger[_0x4213('0xf')](_0x4213('0x10'),_0x17c9b6,_0x4213('0x11'));logger[_0x4213('0x12')](_0x4213('0x13'),_0x17c9b6,_0x4213('0x11'),JSON[_0x4213('0x14')](_0x7e8398));if(_0x7e8398[_0x4213('0x15')]){if(_0x7e8398['error'][_0x4213('0x16')]===0x1f4){logger[_0x4213('0x15')]('UserProfileResource,\x20%s,\x20%s',_0x17c9b6,_0x7e8398['error'][_0x4213('0x17')]);return _0x30d850(_0x7e8398['error'][_0x4213('0x17')]);}logger['error'](_0x4213('0x10'),_0x17c9b6,_0x7e8398[_0x4213('0x15')][_0x4213('0x17')]);return _0x4cdef9(_0x7e8398['error'][_0x4213('0x17')]);}else{logger[_0x4213('0xf')]('UserProfileResource,\x20%s,\x20%s',_0x17c9b6,_0x4213('0x11'));_0x4cdef9(_0x7e8398[_0x4213('0x18')][_0x4213('0x17')]);}})[_0x4213('0x19')](function(_0x3e0ad5){logger[_0x4213('0x15')](_0x4213('0x10'),_0x17c9b6,_0x3e0ad5);_0x30d850(_0x3e0ad5);});});}
\ No newline at end of file
+var _0x0042=['message','info','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x55a496,_0x12a0a3){var _0x57fb12=function(_0x865aff){while(--_0x865aff){_0x55a496['push'](_0x55a496['shift']());}};_0x57fb12(++_0x12a0a3);}(_0x0042,0x18b));var _0x2004=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x0042[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x2004('0x0'));var util=require(_0x2004('0x1'));var moment=require('moment');var BPromise=require(_0x2004('0x2'));var rs=require(_0x2004('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2004('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2004('0x5'))('rpc');var config=require(_0x2004('0x6'));var jayson=require(_0x2004('0x7'));var client=jayson[_0x2004('0x8')][_0x2004('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x256c8c,_0x1cd9af,_0x580c13){return new BPromise(function(_0x44c3c3,_0x19e601){return client[_0x2004('0xa')](_0x256c8c,_0x580c13)[_0x2004('0xb')](function(_0x428f40){logger['info'](_0x2004('0xc'),_0x1cd9af,_0x2004('0xd'));logger[_0x2004('0xe')](_0x2004('0xf'),_0x1cd9af,'request\x20sent',JSON[_0x2004('0x10')](_0x428f40));if(_0x428f40[_0x2004('0x11')]){if(_0x428f40[_0x2004('0x11')][_0x2004('0x12')]===0x1f4){logger['error'](_0x2004('0xc'),_0x1cd9af,_0x428f40[_0x2004('0x11')][_0x2004('0x13')]);return _0x19e601(_0x428f40[_0x2004('0x11')][_0x2004('0x13')]);}logger[_0x2004('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x1cd9af,_0x428f40['error']['message']);return _0x44c3c3(_0x428f40['error']['message']);}else{logger[_0x2004('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x1cd9af,'request\x20sent');_0x44c3c3(_0x428f40[_0x2004('0x15')][_0x2004('0x13')]);}})[_0x2004('0x16')](function(_0x1b0580){logger[_0x2004('0x11')](_0x2004('0xc'),_0x1cd9af,_0x1b0580);_0x19e601(_0x1b0580);});});}
\ No newline at end of file
index d6435bf..dfce396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1852=['get','index','/describe','isAuthenticated','describe','/:id','post','create','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x1645d7,_0x2c9162){var _0x1d2825=function(_0x41dd2d){while(--_0x41dd2d){_0x1645d7['push'](_0x1645d7['shift']());}};_0x1d2825(++_0x2c9162);}(_0x1852,0x180));var _0x2185=function(_0x449184,_0x215ecf){_0x449184=_0x449184-0x0;var _0x5e2773=_0x1852[_0x449184];return _0x5e2773;};'use strict';var multer=require('multer');var util=require(_0x2185('0x0'));var path=require(_0x2185('0x1'));var timeout=require(_0x2185('0x2'));var express=require(_0x2185('0x3'));var router=express['Router']();var fs_extra=require(_0x2185('0x4'));var auth=require(_0x2185('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2185('0x6'));var controller=require('./userProfileSection.controller');router[_0x2185('0x7')]('/',auth['isAuthenticated'](),controller[_0x2185('0x8')]);router[_0x2185('0x7')](_0x2185('0x9'),auth[_0x2185('0xa')](),controller[_0x2185('0xb')]);router['get'](_0x2185('0xc'),auth[_0x2185('0xa')](),controller['show']);router[_0x2185('0xd')]('/',auth['isAuthenticated'](),controller[_0x2185('0xe')]);router['put'](_0x2185('0xc'),auth[_0x2185('0xa')](),controller['update']);router['delete']('/:id',auth[_0x2185('0xa')](),controller[_0x2185('0xf')]);module[_0x2185('0x10')]=router;
\ No newline at end of file
+var _0x431b=['show','create','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x431b,0x136));var _0xb431=function(_0x36a017,_0x2b889c){_0x36a017=_0x36a017-0x0;var _0x226857=_0x431b[_0x36a017];return _0x226857;};'use strict';var multer=require(_0xb431('0x0'));var util=require('util');var path=require(_0xb431('0x1'));var timeout=require(_0xb431('0x2'));var express=require(_0xb431('0x3'));var router=express['Router']();var fs_extra=require(_0xb431('0x4'));var auth=require(_0xb431('0x5'));var interaction=require(_0xb431('0x6'));var config=require('../../config/environment');var controller=require(_0xb431('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb431('0x8')](_0xb431('0x9'),auth[_0xb431('0xa')](),controller[_0xb431('0xb')]);router[_0xb431('0x8')](_0xb431('0xc'),auth[_0xb431('0xa')](),controller[_0xb431('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb431('0xe')]);router['put'](_0xb431('0xc'),auth[_0xb431('0xa')](),controller[_0xb431('0xf')]);router[_0xb431('0x10')](_0xb431('0xc'),auth['isAuthenticated'](),controller[_0xb431('0x11')]);module[_0xb431('0x12')]=router;
\ No newline at end of file
index 67a7092..f71f820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue','sequelize'];(function(_0x34b525,_0x3e70c3){var _0x783fff=function(_0x32ed1c){while(--_0x32ed1c){_0x34b525['push'](_0x34b525['shift']());}};_0x783fff(++_0x3e70c3);}(_0x0b0e,0x187));var _0xe0b0=function(_0x542e14,_0x5dfd4b){_0x542e14=_0x542e14-0x0;var _0xe3bbb=_0x0b0e[_0x542e14];return _0xe3bbb;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0b0('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0xe0b0('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0xe0b0('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xe0b0('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xe0b0('0x1')],'set':function(_0x28040c){this[_0xe0b0('0x4')](_0xe0b0('0x5'),_0x28040c?_0x28040c[_0xe0b0('0x6')](''):[]);},'get':function(){return this[_0xe0b0('0x7')](_0xe0b0('0x5'))?this[_0xe0b0('0x7')]('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0x84a0=['STRING','BOOLEAN','setDataValue','crudPermissions','getDataValue','split','sequelize','exports'];(function(_0xcfeff4,_0x3f2e19){var _0xb2fadc=function(_0x4cd013){while(--_0x4cd013){_0xcfeff4['push'](_0xcfeff4['shift']());}};_0xb2fadc(++_0x3f2e19);}(_0x84a0,0x66));var _0x084a=function(_0x3e5b0d,_0x21e299){_0x3e5b0d=_0x3e5b0d-0x0;var _0x199c43=_0x84a0[_0x3e5b0d];return _0x199c43;};'use strict';var Sequelize=require(_0x084a('0x0'));module[_0x084a('0x1')]={'name':{'type':Sequelize[_0x084a('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x084a('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x084a('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x084a('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x58a814){this[_0x084a('0x4')](_0x084a('0x5'),_0x58a814?_0x58a814['join'](''):[]);},'get':function(){return this[_0x084a('0x6')](_0x084a('0x5'))?this[_0x084a('0x6')](_0x084a('0x5'))[_0x084a('0x7')](''):[];}}};
\ No newline at end of file
index b2e0180..41404ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5854=['intersection','fields','attributes','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','sendStatus','stack','name','index','map','UserProfileSection','model','keys','query','filters'];(function(_0x58f969,_0x1c62f4){var _0x4d23a7=function(_0x38f684){while(--_0x38f684){_0x58f969['push'](_0x58f969['shift']());}};_0x4d23a7(++_0x1c62f4);}(_0x5854,0xa8));var _0x4585=function(_0x3408b2,_0x41cee5){_0x3408b2=_0x3408b2-0x0;var _0x244f81=_0x5854[_0x3408b2];return _0x244f81;};'use strict';var emlformat=require(_0x4585('0x0'));var rimraf=require(_0x4585('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4585('0x2'));var moment=require(_0x4585('0x3'));var BPromise=require(_0x4585('0x4'));var Mustache=require(_0x4585('0x5'));var util=require(_0x4585('0x6'));var path=require('path');var sox=require(_0x4585('0x7'));var csv=require(_0x4585('0x8'));var ejs=require(_0x4585('0x9'));var fs=require('fs');var fs_extra=require(_0x4585('0xa'));var _=require(_0x4585('0xb'));var squel=require(_0x4585('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4585('0xd'));var toCsv=require(_0x4585('0x8'));var querystring=require('querystring');var Papa=require(_0x4585('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4585('0xf'));var as=require(_0x4585('0x10'));var hardwareService=require(_0x4585('0x11'));var logger=require(_0x4585('0x12'))('api');var utils=require(_0x4585('0x13'));var config=require(_0x4585('0x14'));var licenseUtil=require(_0x4585('0x15'));var db=require(_0x4585('0x16'))['db'];function respondWithStatusCode(_0x5c9d07,_0x42b2cc){_0x42b2cc=_0x42b2cc||0xcc;return function(_0x5063a5){if(_0x5063a5){return _0x5c9d07['sendStatus'](_0x42b2cc);}return _0x5c9d07[_0x4585('0x17')](_0x42b2cc)['end']();};}function respondWithResult(_0x129832,_0x3ebc30){_0x3ebc30=_0x3ebc30||0xc8;return function(_0x427e5d){if(_0x427e5d){return _0x129832['status'](_0x3ebc30)[_0x4585('0x18')](_0x427e5d);}};}function respondWithFilteredResult(_0x386676,_0x376000){return function(_0x493d8c){if(_0x493d8c){var _0x5eb6dc=typeof _0x376000[_0x4585('0x19')]===_0x4585('0x1a')&&typeof _0x376000[_0x4585('0x1b')]===_0x4585('0x1a');var _0x346483=_0x493d8c['count'];var _0x4c8983=_0x5eb6dc?0x0:_0x376000[_0x4585('0x19')];var _0x59779d=_0x5eb6dc?_0x493d8c[_0x4585('0x1c')]:_0x376000['offset']+_0x376000[_0x4585('0x1b')];var _0x2989a3;if(_0x59779d>=_0x346483){_0x59779d=_0x346483;_0x2989a3=0xc8;}else{_0x2989a3=0xce;}_0x386676['status'](_0x2989a3);return _0x386676[_0x4585('0x1d')](_0x4585('0x1e'),_0x4c8983+'-'+_0x59779d+'/'+_0x346483)[_0x4585('0x18')](_0x493d8c);}return null;};}function patchUpdates(_0x508ee4){return function(_0x36b666){try{jsonpatch[_0x4585('0x1f')](_0x36b666,_0x508ee4,!![]);}catch(_0x5e9db0){return BPromise[_0x4585('0x20')](_0x5e9db0);}return _0x36b666[_0x4585('0x21')]();};}function saveUpdates(_0x658253,_0x539c09){return function(_0x4bb9dc){if(_0x4bb9dc){return _0x4bb9dc[_0x4585('0x22')](_0x658253)['then'](function(_0x236813){return _0x236813;});}return null;};}function removeEntity(_0x58378e,_0x4e3d5f){return function(_0x2ed383){if(_0x2ed383){return _0x2ed383[_0x4585('0x23')]()[_0x4585('0x24')](function(){_0x58378e[_0x4585('0x17')](0xcc)[_0x4585('0x25')]();});}};}function handleEntityNotFound(_0x3e7880,_0x1b551f){return function(_0x2df3fa){if(!_0x2df3fa){_0x3e7880[_0x4585('0x26')](0x194);}return _0x2df3fa;};}function handleError(_0x3981f0,_0x3a3e8b){_0x3a3e8b=_0x3a3e8b||0x1f4;return function(_0x470d82){logger['error'](_0x470d82[_0x4585('0x27')]);if(_0x470d82[_0x4585('0x28')]){delete _0x470d82['name'];}_0x3981f0[_0x4585('0x17')](_0x3a3e8b)['send'](_0x470d82);};}exports[_0x4585('0x29')]=function(_0x3724ba,_0x51e8bc){var _0x36661d={},_0x8e9324={},_0x4bde4f={'count':0x0,'rows':[]};var _0x2cadd6=_[_0x4585('0x2a')](db[_0x4585('0x2b')]['rawAttributes'],function(_0x1f7b7f){return{'name':_0x1f7b7f['fieldName'],'type':_0x1f7b7f['type']['key']};});_0x8e9324[_0x4585('0x2c')]=_[_0x4585('0x2a')](_0x2cadd6,_0x4585('0x28'));_0x8e9324['query']=_[_0x4585('0x2d')](_0x3724ba[_0x4585('0x2e')]);_0x8e9324[_0x4585('0x2f')]=_[_0x4585('0x30')](_0x8e9324[_0x4585('0x2c')],_0x8e9324[_0x4585('0x2e')]);_0x36661d['attributes']=_['intersection'](_0x8e9324['model'],qs[_0x4585('0x31')](_0x3724ba['query'][_0x4585('0x31')]));_0x36661d[_0x4585('0x32')]=_0x36661d[_0x4585('0x32')][_0x4585('0x33')]?_0x36661d['attributes']:_0x8e9324[_0x4585('0x2c')];if(!_0x3724ba[_0x4585('0x2e')]['hasOwnProperty'](_0x4585('0x34'))){_0x36661d[_0x4585('0x1b')]=qs[_0x4585('0x1b')](_0x3724ba[_0x4585('0x2e')][_0x4585('0x1b')]);_0x36661d[_0x4585('0x19')]=qs[_0x4585('0x19')](_0x3724ba[_0x4585('0x2e')][_0x4585('0x19')]);}_0x36661d[_0x4585('0x35')]=qs[_0x4585('0x36')](_0x3724ba[_0x4585('0x2e')]['sort']);_0x36661d[_0x4585('0x37')]=qs[_0x4585('0x2f')](_['pick'](_0x3724ba[_0x4585('0x2e')],_0x8e9324['filters']),_0x2cadd6);if(_0x3724ba[_0x4585('0x2e')][_0x4585('0x38')]){_0x36661d[_0x4585('0x37')]=_[_0x4585('0x39')](_0x36661d[_0x4585('0x37')],{'$or':_[_0x4585('0x2a')](_0x2cadd6,function(_0x3e23e4){if(_0x3e23e4['type']!==_0x4585('0x3a')){var _0xba8da6={};_0xba8da6[_0x3e23e4[_0x4585('0x28')]]={'$like':'%'+_0x3724ba[_0x4585('0x2e')][_0x4585('0x38')]+'%'};return _0xba8da6;}})});}_0x36661d=_[_0x4585('0x39')]({},_0x36661d,_0x3724ba[_0x4585('0x3b')]);var _0x4347bc={'where':_0x36661d[_0x4585('0x37')]};return db['UserProfileSection']['count'](_0x4347bc)[_0x4585('0x24')](function(_0x2736db){_0x4bde4f['count']=_0x2736db;if(_0x3724ba[_0x4585('0x2e')]['includeAll']){_0x36661d[_0x4585('0x3c')]=[{'all':!![]}];}return db[_0x4585('0x2b')][_0x4585('0x3d')](_0x36661d);})[_0x4585('0x24')](function(_0x41844a){_0x4bde4f[_0x4585('0x3e')]=_0x41844a;return _0x4bde4f;})[_0x4585('0x24')](respondWithFilteredResult(_0x51e8bc,_0x36661d))[_0x4585('0x3f')](handleError(_0x51e8bc,null));};exports[_0x4585('0x40')]=function(_0x81123c,_0x4074a1){var _0x1db651={'raw':![],'where':{'id':_0x81123c[_0x4585('0x41')]['id']}},_0x33caa7={};_0x33caa7[_0x4585('0x2c')]=_['keys'](db[_0x4585('0x2b')][_0x4585('0x42')]);_0x33caa7[_0x4585('0x2e')]=_['keys'](_0x81123c[_0x4585('0x2e')]);_0x33caa7[_0x4585('0x2f')]=_[_0x4585('0x30')](_0x33caa7[_0x4585('0x2c')],_0x33caa7[_0x4585('0x2e')]);_0x1db651[_0x4585('0x32')]=_[_0x4585('0x30')](_0x33caa7[_0x4585('0x2c')],qs[_0x4585('0x31')](_0x81123c[_0x4585('0x2e')]['fields']));_0x1db651[_0x4585('0x32')]=_0x1db651[_0x4585('0x32')][_0x4585('0x33')]?_0x1db651[_0x4585('0x32')]:_0x33caa7[_0x4585('0x2c')];if(_0x81123c[_0x4585('0x2e')][_0x4585('0x43')]){_0x1db651[_0x4585('0x3c')]=[{'all':!![]}];}_0x1db651=_[_0x4585('0x39')]({},_0x1db651,_0x81123c[_0x4585('0x3b')]);return db[_0x4585('0x2b')][_0x4585('0x44')](_0x1db651)['then'](handleEntityNotFound(_0x4074a1,null))[_0x4585('0x24')](respondWithResult(_0x4074a1,null))[_0x4585('0x3f')](handleError(_0x4074a1,null));};exports[_0x4585('0x45')]=function(_0x16ed0d,_0xb6122c){return db[_0x4585('0x2b')][_0x4585('0x45')](_0x16ed0d['body'],{})['then'](respondWithResult(_0xb6122c,0xc9))[_0x4585('0x3f')](handleError(_0xb6122c,null));};exports['update']=function(_0x1af056,_0x29cfd9){if(_0x1af056['body']['id']){delete _0x1af056[_0x4585('0x46')]['id'];}return db[_0x4585('0x2b')][_0x4585('0x44')]({'where':{'id':_0x1af056[_0x4585('0x41')]['id']}})[_0x4585('0x24')](handleEntityNotFound(_0x29cfd9,null))[_0x4585('0x24')](saveUpdates(_0x1af056[_0x4585('0x46')],null))[_0x4585('0x24')](respondWithResult(_0x29cfd9,null))[_0x4585('0x3f')](handleError(_0x29cfd9,null));};exports[_0x4585('0x23')]=function(_0x36b654,_0x53f96b){return db[_0x4585('0x2b')][_0x4585('0x44')]({'where':{'id':_0x36b654[_0x4585('0x41')]['id']}})[_0x4585('0x24')](handleEntityNotFound(_0x53f96b,null))[_0x4585('0x24')](removeEntity(_0x53f96b,null))['catch'](handleError(_0x53f96b,null));};exports['describe']=function(_0x9781cc,_0x47ebe5){return db[_0x4585('0x2b')][_0x4585('0x47')]()[_0x4585('0x24')](respondWithResult(_0x47ebe5,null))[_0x4585('0x3f')](handleError(_0x47ebe5,null));};
\ No newline at end of file
+var _0xff7c=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','index','map','UserProfileSection','rawAttributes','fieldName','type','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs'];(function(_0x344545,_0x5c3da2){var _0x3c37ae=function(_0x16e1c4){while(--_0x16e1c4){_0x344545['push'](_0x344545['shift']());}};_0x3c37ae(++_0x5c3da2);}(_0xff7c,0x19f));var _0xcff7=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0xff7c[_0x20589d];return _0x422de9;};'use strict';var emlformat=require(_0xcff7('0x0'));var rimraf=require(_0xcff7('0x1'));var zipdir=require(_0xcff7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcff7('0x3'));var moment=require(_0xcff7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xcff7('0x5'));var util=require('util');var path=require(_0xcff7('0x6'));var sox=require(_0xcff7('0x7'));var csv=require(_0xcff7('0x8'));var ejs=require(_0xcff7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcff7('0xa'));var squel=require(_0xcff7('0xb'));var crypto=require(_0xcff7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcff7('0xd'));var toCsv=require(_0xcff7('0x8'));var querystring=require(_0xcff7('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcff7('0xf'));var qs=require(_0xcff7('0x10'));var as=require(_0xcff7('0x11'));var hardwareService=require(_0xcff7('0x12'));var logger=require(_0xcff7('0x13'))(_0xcff7('0x14'));var utils=require('../../config/utils');var config=require(_0xcff7('0x15'));var licenseUtil=require(_0xcff7('0x16'));var db=require(_0xcff7('0x17'))['db'];function respondWithStatusCode(_0x45854d,_0x238216){_0x238216=_0x238216||0xcc;return function(_0x5199dc){if(_0x5199dc){return _0x45854d['sendStatus'](_0x238216);}return _0x45854d[_0xcff7('0x18')](_0x238216)['end']();};}function respondWithResult(_0x59715e,_0x576056){_0x576056=_0x576056||0xc8;return function(_0x16dc49){if(_0x16dc49){return _0x59715e[_0xcff7('0x18')](_0x576056)[_0xcff7('0x19')](_0x16dc49);}};}function respondWithFilteredResult(_0x3bcd5d,_0x3c4569){return function(_0x865ccc){if(_0x865ccc){var _0x32b981=typeof _0x3c4569[_0xcff7('0x1a')]===_0xcff7('0x1b')&&typeof _0x3c4569[_0xcff7('0x1c')]===_0xcff7('0x1b');var _0x144094=_0x865ccc[_0xcff7('0x1d')];var _0x15a350=_0x32b981?0x0:_0x3c4569['offset'];var _0x5a101b=_0x32b981?_0x865ccc['count']:_0x3c4569[_0xcff7('0x1a')]+_0x3c4569[_0xcff7('0x1c')];var _0x457b13;if(_0x5a101b>=_0x144094){_0x5a101b=_0x144094;_0x457b13=0xc8;}else{_0x457b13=0xce;}_0x3bcd5d[_0xcff7('0x18')](_0x457b13);return _0x3bcd5d['set'](_0xcff7('0x1e'),_0x15a350+'-'+_0x5a101b+'/'+_0x144094)[_0xcff7('0x19')](_0x865ccc);}return null;};}function patchUpdates(_0xb048dc){return function(_0x4d63bc){try{jsonpatch[_0xcff7('0x1f')](_0x4d63bc,_0xb048dc,!![]);}catch(_0x1d75f9){return BPromise['reject'](_0x1d75f9);}return _0x4d63bc[_0xcff7('0x20')]();};}function saveUpdates(_0x175a42,_0x549088){return function(_0x2fdc39){if(_0x2fdc39){return _0x2fdc39[_0xcff7('0x21')](_0x175a42)[_0xcff7('0x22')](function(_0x45a894){return _0x45a894;});}return null;};}function removeEntity(_0x17955f,_0x5ac041){return function(_0x45df00){if(_0x45df00){return _0x45df00[_0xcff7('0x23')]()[_0xcff7('0x22')](function(){_0x17955f[_0xcff7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x34c36a,_0xd3e25c){return function(_0x5c9e32){if(!_0x5c9e32){_0x34c36a[_0xcff7('0x24')](0x194);}return _0x5c9e32;};}function handleError(_0x1e847f,_0x50f1a4){_0x50f1a4=_0x50f1a4||0x1f4;return function(_0x254d4c){logger[_0xcff7('0x25')](_0x254d4c[_0xcff7('0x26')]);if(_0x254d4c[_0xcff7('0x27')]){delete _0x254d4c[_0xcff7('0x27')];}_0x1e847f[_0xcff7('0x18')](_0x50f1a4)['send'](_0x254d4c);};}exports[_0xcff7('0x28')]=function(_0x3b7287,_0x488233){var _0x1a2cda={},_0x91c893={},_0x4d5bbb={'count':0x0,'rows':[]};var _0x1b7a64=_[_0xcff7('0x29')](db[_0xcff7('0x2a')][_0xcff7('0x2b')],function(_0x133fd1){return{'name':_0x133fd1[_0xcff7('0x2c')],'type':_0x133fd1[_0xcff7('0x2d')]['key']};});_0x91c893['model']=_['map'](_0x1b7a64,'name');_0x91c893[_0xcff7('0x2e')]=_[_0xcff7('0x2f')](_0x3b7287[_0xcff7('0x2e')]);_0x91c893[_0xcff7('0x30')]=_['intersection'](_0x91c893[_0xcff7('0x31')],_0x91c893[_0xcff7('0x2e')]);_0x1a2cda['attributes']=_[_0xcff7('0x32')](_0x91c893['model'],qs[_0xcff7('0x33')](_0x3b7287[_0xcff7('0x2e')][_0xcff7('0x33')]));_0x1a2cda['attributes']=_0x1a2cda[_0xcff7('0x34')][_0xcff7('0x35')]?_0x1a2cda['attributes']:_0x91c893[_0xcff7('0x31')];if(!_0x3b7287[_0xcff7('0x2e')][_0xcff7('0x36')](_0xcff7('0x37'))){_0x1a2cda['limit']=qs['limit'](_0x3b7287[_0xcff7('0x2e')][_0xcff7('0x1c')]);_0x1a2cda['offset']=qs[_0xcff7('0x1a')](_0x3b7287['query'][_0xcff7('0x1a')]);}_0x1a2cda[_0xcff7('0x38')]=qs[_0xcff7('0x39')](_0x3b7287['query']['sort']);_0x1a2cda[_0xcff7('0x3a')]=qs['filters'](_[_0xcff7('0x3b')](_0x3b7287[_0xcff7('0x2e')],_0x91c893['filters']),_0x1b7a64);if(_0x3b7287[_0xcff7('0x2e')]['filter']){_0x1a2cda['where']=_[_0xcff7('0x3c')](_0x1a2cda[_0xcff7('0x3a')],{'$or':_[_0xcff7('0x29')](_0x1b7a64,function(_0x5597ff){if(_0x5597ff[_0xcff7('0x2d')]!=='VIRTUAL'){var _0x5ebd51={};_0x5ebd51[_0x5597ff['name']]={'$like':'%'+_0x3b7287[_0xcff7('0x2e')]['filter']+'%'};return _0x5ebd51;}})});}_0x1a2cda=_[_0xcff7('0x3c')]({},_0x1a2cda,_0x3b7287[_0xcff7('0x3d')]);var _0x409f9f={'where':_0x1a2cda['where']};return db['UserProfileSection'][_0xcff7('0x1d')](_0x409f9f)[_0xcff7('0x22')](function(_0x5e6928){_0x4d5bbb[_0xcff7('0x1d')]=_0x5e6928;if(_0x3b7287[_0xcff7('0x2e')][_0xcff7('0x3e')]){_0x1a2cda[_0xcff7('0x3f')]=[{'all':!![]}];}return db[_0xcff7('0x2a')][_0xcff7('0x40')](_0x1a2cda);})[_0xcff7('0x22')](function(_0x90dcad){_0x4d5bbb['rows']=_0x90dcad;return _0x4d5bbb;})[_0xcff7('0x22')](respondWithFilteredResult(_0x488233,_0x1a2cda))[_0xcff7('0x41')](handleError(_0x488233,null));};exports[_0xcff7('0x42')]=function(_0x2596d2,_0x5a9fed){var _0xa735f3={'raw':![],'where':{'id':_0x2596d2[_0xcff7('0x43')]['id']}},_0x409e66={};_0x409e66[_0xcff7('0x31')]=_[_0xcff7('0x2f')](db['UserProfileSection'][_0xcff7('0x2b')]);_0x409e66[_0xcff7('0x2e')]=_['keys'](_0x2596d2[_0xcff7('0x2e')]);_0x409e66[_0xcff7('0x30')]=_[_0xcff7('0x32')](_0x409e66[_0xcff7('0x31')],_0x409e66[_0xcff7('0x2e')]);_0xa735f3[_0xcff7('0x34')]=_[_0xcff7('0x32')](_0x409e66[_0xcff7('0x31')],qs['fields'](_0x2596d2[_0xcff7('0x2e')][_0xcff7('0x33')]));_0xa735f3['attributes']=_0xa735f3[_0xcff7('0x34')][_0xcff7('0x35')]?_0xa735f3[_0xcff7('0x34')]:_0x409e66[_0xcff7('0x31')];if(_0x2596d2[_0xcff7('0x2e')][_0xcff7('0x3e')]){_0xa735f3['include']=[{'all':!![]}];}_0xa735f3=_[_0xcff7('0x3c')]({},_0xa735f3,_0x2596d2[_0xcff7('0x3d')]);return db[_0xcff7('0x2a')]['find'](_0xa735f3)[_0xcff7('0x22')](handleEntityNotFound(_0x5a9fed,null))[_0xcff7('0x22')](respondWithResult(_0x5a9fed,null))[_0xcff7('0x41')](handleError(_0x5a9fed,null));};exports[_0xcff7('0x44')]=function(_0x433e6c,_0x5c8de2){return db[_0xcff7('0x2a')][_0xcff7('0x44')](_0x433e6c['body'],{})['then'](respondWithResult(_0x5c8de2,0xc9))[_0xcff7('0x41')](handleError(_0x5c8de2,null));};exports[_0xcff7('0x21')]=function(_0x38eb49,_0x2c39e5){if(_0x38eb49[_0xcff7('0x45')]['id']){delete _0x38eb49[_0xcff7('0x45')]['id'];}return db[_0xcff7('0x2a')][_0xcff7('0x46')]({'where':{'id':_0x38eb49[_0xcff7('0x43')]['id']}})[_0xcff7('0x22')](handleEntityNotFound(_0x2c39e5,null))[_0xcff7('0x22')](saveUpdates(_0x38eb49[_0xcff7('0x45')],null))[_0xcff7('0x22')](respondWithResult(_0x2c39e5,null))[_0xcff7('0x41')](handleError(_0x2c39e5,null));};exports[_0xcff7('0x23')]=function(_0x24c6b4,_0x3e66b0){return db[_0xcff7('0x2a')]['find']({'where':{'id':_0x24c6b4['params']['id']}})[_0xcff7('0x22')](handleEntityNotFound(_0x3e66b0,null))[_0xcff7('0x22')](removeEntity(_0x3e66b0,null))[_0xcff7('0x41')](handleError(_0x3e66b0,null));};exports[_0xcff7('0x47')]=function(_0x4420bb,_0x2bb40a){return db[_0xcff7('0x2a')][_0xcff7('0x47')]()['then'](respondWithResult(_0x2bb40a,null))[_0xcff7('0x41')](handleError(_0x2bb40a,null));};
\ No newline at end of file
index 27d6fa3..9d69305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9962=['compositeIndex','sectionId','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','define','UserProfileSection','user_profile_has_sections'];(function(_0x46a275,_0x2745dc){var _0x48a650=function(_0x4de166){while(--_0x4de166){_0x46a275['push'](_0x46a275['shift']());}};_0x48a650(++_0x2745dc);}(_0x9962,0xb8));var _0x2996=function(_0x594d07,_0x3365ad){_0x594d07=_0x594d07-0x0;var _0x33fb5d=_0x9962[_0x594d07];return _0x33fb5d;};'use strict';var _=require(_0x2996('0x0'));var util=require('util');var logger=require(_0x2996('0x1'))(_0x2996('0x2'));var moment=require(_0x2996('0x3'));var BPromise=require('bluebird');var rp=require(_0x2996('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2996('0x5'));var config=require(_0x2996('0x6'));var attributes=require('./userProfileSection.attributes');module[_0x2996('0x7')]=function(_0x196d1e,_0x5609bc){return _0x196d1e[_0x2996('0x8')](_0x2996('0x9'),attributes,{'tableName':_0x2996('0xa'),'paranoid':![],'indexes':[{'name':_0x2996('0xb'),'fields':[_0x2996('0xc'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x292c=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId'];(function(_0xed4f9e,_0x328fce){var _0x3f542b=function(_0x1054f0){while(--_0x1054f0){_0xed4f9e['push'](_0xed4f9e['shift']());}};_0x3f542b(++_0x328fce);}(_0x292c,0xbb));var _0xc292=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x292c[_0x33032e];return _0x13316b;};'use strict';var _=require(_0xc292('0x0'));var util=require(_0xc292('0x1'));var logger=require(_0xc292('0x2'))(_0xc292('0x3'));var moment=require(_0xc292('0x4'));var BPromise=require(_0xc292('0x5'));var rp=require(_0xc292('0x6'));var fs=require('fs');var path=require(_0xc292('0x7'));var rimraf=require(_0xc292('0x8'));var config=require('../../config/environment');var attributes=require(_0xc292('0x9'));module[_0xc292('0xa')]=function(_0x37014f,_0x477b2e){return _0x37014f[_0xc292('0xb')](_0xc292('0xc'),attributes,{'tableName':_0xc292('0xd'),'paranoid':![],'indexes':[{'name':_0xc292('0xe'),'fields':[_0xc292('0xf'),_0xc292('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index d736cdb..3051a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d8e=['catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x444fb1,_0x4bf258){var _0x2af20a=function(_0x44a489){while(--_0x44a489){_0x444fb1['push'](_0x444fb1['shift']());}};_0x2af20a(++_0x4bf258);}(_0x8d8e,0x15a));var _0xe8d8=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x8d8e[_0x5783f4];return _0x28e380;};'use strict';var _=require(_0xe8d8('0x0'));var util=require('util');var moment=require(_0xe8d8('0x1'));var BPromise=require(_0xe8d8('0x2'));var rs=require(_0xe8d8('0x3'));var fs=require('fs');var Redis=require(_0xe8d8('0x4'));var db=require(_0xe8d8('0x5'))['db'];var utils=require(_0xe8d8('0x6'));var logger=require(_0xe8d8('0x7'))(_0xe8d8('0x8'));var config=require(_0xe8d8('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe8d8('0xa')][_0xe8d8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44a672,_0x999882,_0x4535af){return new BPromise(function(_0x56bf4d,_0x3cff10){return client['request'](_0x44a672,_0x4535af)[_0xe8d8('0xc')](function(_0x2615e9){logger[_0xe8d8('0xd')](_0xe8d8('0xe'),_0x999882,_0xe8d8('0xf'));logger[_0xe8d8('0x10')](_0xe8d8('0x11'),_0x999882,_0xe8d8('0xf'),JSON['stringify'](_0x2615e9));if(_0x2615e9[_0xe8d8('0x12')]){if(_0x2615e9[_0xe8d8('0x12')][_0xe8d8('0x13')]===0x1f4){logger[_0xe8d8('0x12')](_0xe8d8('0xe'),_0x999882,_0x2615e9['error'][_0xe8d8('0x14')]);return _0x3cff10(_0x2615e9[_0xe8d8('0x12')]['message']);}logger[_0xe8d8('0x12')](_0xe8d8('0xe'),_0x999882,_0x2615e9['error']['message']);return _0x56bf4d(_0x2615e9['error']['message']);}else{logger[_0xe8d8('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x999882,'request\x20sent');_0x56bf4d(_0x2615e9[_0xe8d8('0x15')][_0xe8d8('0x14')]);}})[_0xe8d8('0x16')](function(_0x41eda2){logger['error'](_0xe8d8('0xe'),_0x999882,_0x41eda2);_0x3cff10(_0x41eda2);});});}
\ No newline at end of file
+var _0xc5bf=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','error','code','message','catch','util','bluebird','randomstring'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xc5bf,0x1ad));var _0xfc5b=function(_0x963eda,_0x534f26){_0x963eda=_0x963eda-0x0;var _0x387dda=_0xc5bf[_0x963eda];return _0x387dda;};'use strict';var _=require('lodash');var util=require(_0xfc5b('0x0'));var moment=require('moment');var BPromise=require(_0xfc5b('0x1'));var rs=require(_0xfc5b('0x2'));var fs=require('fs');var Redis=require(_0xfc5b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfc5b('0x4'));var logger=require(_0xfc5b('0x5'))(_0xfc5b('0x6'));var config=require(_0xfc5b('0x7'));var jayson=require(_0xfc5b('0x8'));var client=jayson['client'][_0xfc5b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c546d,_0x46a419,_0x1fde61){return new BPromise(function(_0x64d9f5,_0x1ab0d9){return client['request'](_0x4c546d,_0x1fde61)[_0xfc5b('0xa')](function(_0x28315f){logger[_0xfc5b('0xb')](_0xfc5b('0xc'),_0x46a419,_0xfc5b('0xd'));logger['debug']('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x46a419,_0xfc5b('0xd'),JSON['stringify'](_0x28315f));if(_0x28315f[_0xfc5b('0xe')]){if(_0x28315f[_0xfc5b('0xe')][_0xfc5b('0xf')]===0x1f4){logger[_0xfc5b('0xe')](_0xfc5b('0xc'),_0x46a419,_0x28315f[_0xfc5b('0xe')][_0xfc5b('0x10')]);return _0x1ab0d9(_0x28315f[_0xfc5b('0xe')]['message']);}logger['error'](_0xfc5b('0xc'),_0x46a419,_0x28315f[_0xfc5b('0xe')]['message']);return _0x64d9f5(_0x28315f[_0xfc5b('0xe')][_0xfc5b('0x10')]);}else{logger['info'](_0xfc5b('0xc'),_0x46a419,_0xfc5b('0xd'));_0x64d9f5(_0x28315f['result'][_0xfc5b('0x10')]);}})[_0xfc5b('0x11')](function(_0x14cb0c){logger[_0xfc5b('0xe')](_0xfc5b('0xc'),_0x46a419,_0x14cb0c);_0x1ab0d9(_0x14cb0c);});});}
\ No newline at end of file
index 0bb2b26..125379e 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(_0x35a4d1,_0x52f4da){var _0x168a58=function(_0xf33ecd){while(--_0xf33ecd){_0x35a4d1['push'](_0x35a4d1['shift']());}};_0x168a58(++_0x52f4da);}(_0xe706,0xa3));var _0x6e70=function(_0x101176,_0x1ad975){_0x101176=_0x101176-0x0;var _0x4ec27c=_0xe706[_0x101176];return _0x4ec27c;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x382e8e,_0x24caa0){var _0x3b56d7=function(_0x4913d6){while(--_0x4913d6){_0x382e8e['push'](_0x382e8e['shift']());}};_0x3b56d7(++_0x24caa0);}(_0xedd9,0xfc));var _0x9edd=function(_0x26b525,_0x3594da){_0x26b525=_0x26b525-0x0;var _0x38a0c6=_0xedd9[_0x26b525];return _0x38a0c6;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index dde616f..de8d70b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafb4=['sequelize','exports'];(function(_0x143a85,_0x499f93){var _0x39daf4=function(_0x29d70f){while(--_0x29d70f){_0x143a85['push'](_0x143a85['shift']());}};_0x39daf4(++_0x499f93);}(_0xafb4,0x78));var _0x4afb=function(_0x32f114,_0x3fbe98){_0x32f114=_0x32f114-0x0;var _0x4dcfae=_0xafb4[_0x32f114];return _0x4dcfae;};'use strict';var Sequelize=require(_0x4afb('0x0'));module[_0x4afb('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9752=['exports','INTEGER'];(function(_0x544878,_0x391790){var _0x525c2c=function(_0x4cbcf5){while(--_0x4cbcf5){_0x544878['push'](_0x544878['shift']());}};_0x525c2c(++_0x391790);}(_0x9752,0x90));var _0x2975=function(_0x3d8573,_0x39e685){_0x3d8573=_0x3d8573-0x0;var _0x10a3fc=_0x9752[_0x3d8573];return _0x10a3fc;};'use strict';var Sequelize=require('sequelize');module[_0x2975('0x0')]={'penalty':{'type':Sequelize[_0x2975('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index f7b9a54..ac3a1b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ec=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues'];(function(_0x460fd7,_0x2012db){var _0x44d1c2=function(_0x545e11){while(--_0x545e11){_0x460fd7['push'](_0x460fd7['shift']());}};_0x44d1c2(++_0x2012db);}(_0x90ec,0x1d4));var _0xc90e=function(_0x5f5813,_0x5cbef0){_0x5f5813=_0x5f5813-0x0;var _0x3e3b9e=_0x90ec[_0x5f5813];return _0x3e3b9e;};'use strict';var _=require(_0xc90e('0x0'));var util=require(_0xc90e('0x1'));var logger=require('../../config/logger')(_0xc90e('0x2'));var moment=require(_0xc90e('0x3'));var BPromise=require(_0xc90e('0x4'));var rp=require(_0xc90e('0x5'));var fs=require('fs');var path=require(_0xc90e('0x6'));var rimraf=require('rimraf');var config=require(_0xc90e('0x7'));var attributes=require(_0xc90e('0x8'));module[_0xc90e('0x9')]=function(_0x54a0a8,_0x259c62){return _0x54a0a8['define'](_0xc90e('0xa'),attributes,{'tableName':_0xc90e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4b6=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment'];(function(_0x27ab05,_0x57e5ce){var _0x458dc4=function(_0x27963f){while(--_0x27963f){_0x27ab05['push'](_0x27ab05['shift']());}};_0x458dc4(++_0x57e5ce);}(_0xb4b6,0x7e));var _0x6b4b=function(_0xb32218,_0x31efb8){_0xb32218=_0xb32218-0x0;var _0xc47604=_0xb4b6[_0xb32218];return _0xc47604;};'use strict';var _=require('lodash');var util=require(_0x6b4b('0x0'));var logger=require(_0x6b4b('0x1'))(_0x6b4b('0x2'));var moment=require(_0x6b4b('0x3'));var BPromise=require(_0x6b4b('0x4'));var rp=require(_0x6b4b('0x5'));var fs=require('fs');var path=require(_0x6b4b('0x6'));var rimraf=require(_0x6b4b('0x7'));var config=require(_0x6b4b('0x8'));var attributes=require('./userSmsQueue.attributes');module[_0x6b4b('0x9')]=function(_0x49e81c,_0x3915de){return _0x49e81c[_0x6b4b('0xa')](_0x6b4b('0xb'),attributes,{'tableName':_0x6b4b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f5d8fc..095b5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c4=['jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x12a250,_0x422186){var _0x7bc345=function(_0x494a20){while(--_0x494a20){_0x12a250['push'](_0x12a250['shift']());}};_0x7bc345(++_0x422186);}(_0x07c4,0x19b));var _0x407c=function(_0x37bb89,_0x4da40d){_0x37bb89=_0x37bb89-0x0;var _0x2162d6=_0x07c4[_0x37bb89];return _0x2162d6;};'use strict';var _=require('lodash');var util=require(_0x407c('0x0'));var moment=require('moment');var BPromise=require(_0x407c('0x1'));var rs=require(_0x407c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x407c('0x3'));var logger=require(_0x407c('0x4'))(_0x407c('0x5'));var config=require(_0x407c('0x6'));var jayson=require(_0x407c('0x7'));var client=jayson[_0x407c('0x8')][_0x407c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd77dd,_0x3d5973,_0x1b4b37){return new BPromise(function(_0xf0083b,_0x190417){return client[_0x407c('0xa')](_0xd77dd,_0x1b4b37)[_0x407c('0xb')](function(_0x470f48){logger[_0x407c('0xc')](_0x407c('0xd'),_0x3d5973,_0x407c('0xe'));logger[_0x407c('0xf')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x3d5973,_0x407c('0xe'),JSON[_0x407c('0x10')](_0x470f48));if(_0x470f48[_0x407c('0x11')]){if(_0x470f48[_0x407c('0x11')][_0x407c('0x12')]===0x1f4){logger['error'](_0x407c('0xd'),_0x3d5973,_0x470f48[_0x407c('0x11')]['message']);return _0x190417(_0x470f48[_0x407c('0x11')][_0x407c('0x13')]);}logger['error'](_0x407c('0xd'),_0x3d5973,_0x470f48[_0x407c('0x11')][_0x407c('0x13')]);return _0xf0083b(_0x470f48['error'][_0x407c('0x13')]);}else{logger[_0x407c('0xc')](_0x407c('0xd'),_0x3d5973,_0x407c('0xe'));_0xf0083b(_0x470f48[_0x407c('0x14')][_0x407c('0x13')]);}})[_0x407c('0x15')](function(_0x1e29dd){logger[_0x407c('0x11')](_0x407c('0xd'),_0x3d5973,_0x1e29dd);_0x190417(_0x1e29dd);});});}
\ No newline at end of file
+var _0x9453=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','error','UserSmsQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','ioredis'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9453,0xd8));var _0x3945=function(_0x1137da,_0x599da5){_0x1137da=_0x1137da-0x0;var _0x5088ee=_0x9453[_0x1137da];return _0x5088ee;};'use strict';var _=require('lodash');var util=require(_0x3945('0x0'));var moment=require(_0x3945('0x1'));var BPromise=require(_0x3945('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3945('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3945('0x4'));var logger=require(_0x3945('0x5'))(_0x3945('0x6'));var config=require(_0x3945('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3945('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c8fa6,_0x5d4e23,_0x22e1d3){return new BPromise(function(_0x4f6dde,_0x5c4054){return client[_0x3945('0x9')](_0x1c8fa6,_0x22e1d3)[_0x3945('0xa')](function(_0x2cc6b8){logger[_0x3945('0xb')]('UserSmsQueue,\x20%s,\x20%s',_0x5d4e23,_0x3945('0xc'));logger[_0x3945('0xd')](_0x3945('0xe'),_0x5d4e23,_0x3945('0xc'),JSON['stringify'](_0x2cc6b8));if(_0x2cc6b8[_0x3945('0xf')]){if(_0x2cc6b8[_0x3945('0xf')]['code']===0x1f4){logger['error'](_0x3945('0x10'),_0x5d4e23,_0x2cc6b8[_0x3945('0xf')]['message']);return _0x5c4054(_0x2cc6b8['error'][_0x3945('0x11')]);}logger[_0x3945('0xf')](_0x3945('0x10'),_0x5d4e23,_0x2cc6b8[_0x3945('0xf')]['message']);return _0x4f6dde(_0x2cc6b8[_0x3945('0xf')][_0x3945('0x11')]);}else{logger[_0x3945('0xb')](_0x3945('0x10'),_0x5d4e23,_0x3945('0xc'));_0x4f6dde(_0x2cc6b8[_0x3945('0x12')][_0x3945('0x11')]);}})[_0x3945('0x13')](function(_0x14e80d){logger[_0x3945('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x5d4e23,_0x14e80d);_0x5c4054(_0x14e80d);});});}
\ No newline at end of file
index ceca1a7..295dd90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4a=['INTEGER','sequelize'];(function(_0x1489ef,_0x275d93){var _0x20e0e6=function(_0x26c449){while(--_0x26c449){_0x1489ef['push'](_0x1489ef['shift']());}};_0x20e0e6(++_0x275d93);}(_0x8f4a,0x10f));var _0xa8f4=function(_0x4d22cf,_0xbd0ea6){_0x4d22cf=_0x4d22cf-0x0;var _0x17209c=_0x8f4a[_0x4d22cf];return _0x17209c;};'use strict';var Sequelize=require(_0xa8f4('0x0'));module['exports']={'UserId':{'type':Sequelize[_0xa8f4('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xa8f4('0x1')]}};
\ No newline at end of file
+var _0x5b68=['INTEGER','sequelize'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x5b68,0xcd));var _0x85b6=function(_0x3955f0,_0x1b7306){_0x3955f0=_0x3955f0-0x0;var _0x36d5f4=_0x5b68[_0x3955f0];return _0x36d5f4;};'use strict';var Sequelize=require(_0x85b6('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x85b6('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 89180f7..5ca0a75 100644 (file)
@@ -15,4 +15,4 @@
 // * 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(_0x3f0280,_0x1213ec){var _0x577a4c=function(_0x59a4ad){while(--_0x59a4ad){_0x3f0280['push'](_0x3f0280['shift']());}};_0x577a4c(++_0x1213ec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x2fd390,_0x2a67b7){var _0x404642=function(_0x2d7f1e){while(--_0x2d7f1e){_0x2fd390['push'](_0x2fd390['shift']());}};_0x404642(++_0x2a67b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f0ad47b..d702fad 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(_0x583829,_0x188b0e){var _0x34d994=function(_0x568753){while(--_0x568753){_0x583829['push'](_0x583829['shift']());}};_0x34d994(++_0x188b0e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5e2a7b,_0x470500){var _0x42b751=function(_0x50790b){while(--_0x50790b){_0x5e2a7b['push'](_0x5e2a7b['shift']());}};_0x42b751(++_0x470500);}(_0x70e0,0x17b));var _0x070e=function(_0x5879dc,_0x2625d1){_0x5879dc=_0x5879dc-0x0;var _0xf53e9c=_0x70e0[_0x5879dc];return _0xf53e9c;};'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 efebbdb..d8a1365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6391=['exports','INTEGER','sequelize'];(function(_0xb04baf,_0x13c5a6){var _0x162057=function(_0x3cb467){while(--_0x3cb467){_0xb04baf['push'](_0xb04baf['shift']());}};_0x162057(++_0x13c5a6);}(_0x6391,0x1df));var _0x1639=function(_0x263a2f,_0x1e81e3){_0x263a2f=_0x263a2f-0x0;var _0x8020e8=_0x6391[_0x263a2f];return _0x8020e8;};'use strict';var Sequelize=require(_0x1639('0x0'));module[_0x1639('0x1')]={'penalty':{'type':Sequelize[_0x1639('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf3a7=['INTEGER','exports'];(function(_0x261d9e,_0x4f0942){var _0x3f8a2c=function(_0x28aaf8){while(--_0x28aaf8){_0x261d9e['push'](_0x261d9e['shift']());}};_0x3f8a2c(++_0x4f0942);}(_0xf3a7,0x99));var _0x7f3a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf3a7[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');module[_0x7f3a('0x0')]={'penalty':{'type':Sequelize[_0x7f3a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 4fe6415..2f2a122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d8=['define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x555b2f,_0x43b622){var _0x81c0a6=function(_0x4629e6){while(--_0x4629e6){_0x555b2f['push'](_0x555b2f['shift']());}};_0x81c0a6(++_0x43b622);}(_0xd5d8,0x1a3));var _0x8d5d=function(_0x47df37,_0x5408df){_0x47df37=_0x47df37-0x0;var _0x5423c3=_0xd5d8[_0x47df37];return _0x5423c3;};'use strict';var _=require(_0x8d5d('0x0'));var util=require(_0x8d5d('0x1'));var logger=require(_0x8d5d('0x2'))(_0x8d5d('0x3'));var moment=require(_0x8d5d('0x4'));var BPromise=require(_0x8d5d('0x5'));var rp=require(_0x8d5d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d5d('0x7'));var config=require(_0x8d5d('0x8'));var attributes=require('./userVoiceQueue.attributes');module[_0x8d5d('0x9')]=function(_0x4b7a00,_0x51c8d5){return _0x4b7a00[_0x8d5d('0xa')]('UserVoiceQueue',attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa53d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues'];(function(_0x3fd66d,_0x410d26){var _0x5a6464=function(_0x144918){while(--_0x144918){_0x3fd66d['push'](_0x3fd66d['shift']());}};_0x5a6464(++_0x410d26);}(_0xa53d,0x90));var _0xda53=function(_0x1818b4,_0x413b3a){_0x1818b4=_0x1818b4-0x0;var _0x214d1d=_0xa53d[_0x1818b4];return _0x214d1d;};'use strict';var _=require(_0xda53('0x0'));var util=require(_0xda53('0x1'));var logger=require(_0xda53('0x2'))(_0xda53('0x3'));var moment=require(_0xda53('0x4'));var BPromise=require(_0xda53('0x5'));var rp=require(_0xda53('0x6'));var fs=require('fs');var path=require(_0xda53('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xda53('0x8'));module['exports']=function(_0x229fe5,_0x443bbe){return _0x229fe5[_0xda53('0x9')](_0xda53('0xa'),attributes,{'tableName':_0xda53('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aada4a5..1f03aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d7=['UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x35e7b5,_0x4aaaca){var _0x3e0e8c=function(_0x303344){while(--_0x303344){_0x35e7b5['push'](_0x35e7b5['shift']());}};_0x3e0e8c(++_0x4aaaca);}(_0x78d7,0x75));var _0x778d=function(_0x5dd74a,_0x54a54d){_0x5dd74a=_0x5dd74a-0x0;var _0x4478ac=_0x78d7[_0x5dd74a];return _0x4478ac;};'use strict';var _=require(_0x778d('0x0'));var util=require('util');var moment=require(_0x778d('0x1'));var BPromise=require(_0x778d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x778d('0x3'))['db'];var utils=require(_0x778d('0x4'));var logger=require(_0x778d('0x5'))(_0x778d('0x6'));var config=require('../../config/environment');var jayson=require(_0x778d('0x7'));var client=jayson[_0x778d('0x8')][_0x778d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x239410,_0x5d4179,_0x56e51f){return new BPromise(function(_0x53d585,_0x3052e2){return client[_0x778d('0xa')](_0x239410,_0x56e51f)[_0x778d('0xb')](function(_0x13dd60){logger['info'](_0x778d('0xc'),_0x5d4179,_0x778d('0xd'));logger[_0x778d('0xe')](_0x778d('0xf'),_0x5d4179,_0x778d('0xd'),JSON[_0x778d('0x10')](_0x13dd60));if(_0x13dd60[_0x778d('0x11')]){if(_0x13dd60[_0x778d('0x11')]['code']===0x1f4){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5d4179,_0x13dd60[_0x778d('0x11')][_0x778d('0x12')]);return _0x3052e2(_0x13dd60[_0x778d('0x11')][_0x778d('0x12')]);}logger[_0x778d('0x11')](_0x778d('0xc'),_0x5d4179,_0x13dd60[_0x778d('0x11')]['message']);return _0x53d585(_0x13dd60[_0x778d('0x11')][_0x778d('0x12')]);}else{logger[_0x778d('0x13')](_0x778d('0xc'),_0x5d4179,_0x778d('0xd'));_0x53d585(_0x13dd60[_0x778d('0x14')][_0x778d('0x12')]);}})[_0x778d('0x15')](function(_0x40fec8){logger[_0x778d('0x11')](_0x778d('0xc'),_0x5d4179,_0x40fec8);_0x3052e2(_0x40fec8);});});}
\ No newline at end of file
+var _0xa673=['../../config/environment','client','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x56503e,_0x6983e4){var _0x1e007d=function(_0x511549){while(--_0x511549){_0x56503e['push'](_0x56503e['shift']());}};_0x1e007d(++_0x6983e4);}(_0xa673,0x114));var _0x3a67=function(_0xf1622,_0x91c2fb){_0xf1622=_0xf1622-0x0;var _0x8480ed=_0xa673[_0xf1622];return _0x8480ed;};'use strict';var _=require(_0x3a67('0x0'));var util=require(_0x3a67('0x1'));var moment=require(_0x3a67('0x2'));var BPromise=require(_0x3a67('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a67('0x4'));var db=require(_0x3a67('0x5'))['db'];var utils=require(_0x3a67('0x6'));var logger=require(_0x3a67('0x7'))(_0x3a67('0x8'));var config=require(_0x3a67('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3a67('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51b85f,_0x140e51,_0x1a27cf){return new BPromise(function(_0x3303ec,_0x4ad27c){return client[_0x3a67('0xb')](_0x51b85f,_0x1a27cf)['then'](function(_0x4756b5){logger[_0x3a67('0xc')](_0x3a67('0xd'),_0x140e51,_0x3a67('0xe'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x140e51,_0x3a67('0xe'),JSON['stringify'](_0x4756b5));if(_0x4756b5[_0x3a67('0xf')]){if(_0x4756b5[_0x3a67('0xf')][_0x3a67('0x10')]===0x1f4){logger[_0x3a67('0xf')](_0x3a67('0xd'),_0x140e51,_0x4756b5['error'][_0x3a67('0x11')]);return _0x4ad27c(_0x4756b5[_0x3a67('0xf')][_0x3a67('0x11')]);}logger['error'](_0x3a67('0xd'),_0x140e51,_0x4756b5[_0x3a67('0xf')][_0x3a67('0x11')]);return _0x3303ec(_0x4756b5['error'][_0x3a67('0x11')]);}else{logger[_0x3a67('0xc')](_0x3a67('0xd'),_0x140e51,_0x3a67('0xe'));_0x3303ec(_0x4756b5['result'][_0x3a67('0x11')]);}})[_0x3a67('0x12')](function(_0x1eef77){logger['error'](_0x3a67('0xd'),_0x140e51,_0x1eef77);_0x4ad27c(_0x1eef77);});});}
\ No newline at end of file
index a09eba2..f21eaf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x481088,_0x2ac617){var _0x38f107=function(_0x29b0fa){while(--_0x29b0fa){_0x481088['push'](_0x481088['shift']());}};_0x38f107(++_0x2ac617);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x55d9c7,_0x52e26e){var _0x582e5d=function(_0x5ab0a1){while(--_0x5ab0a1){_0x55d9c7['push'](_0x55d9c7['shift']());}};_0x582e5d(++_0x52e26e);}(_0x70e0,0x17b));var _0x070e=function(_0x54a0c0,_0x21c10f){_0x54a0c0=_0x54a0c0-0x0;var _0x4634fd=_0x70e0[_0x54a0c0];return _0x4634fd;};'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 c064e83..2994f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7301=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x2d058a,_0x49e827){var _0x556623=function(_0x5346ad){while(--_0x5346ad){_0x2d058a['push'](_0x2d058a['shift']());}};_0x556623(++_0x49e827);}(_0x7301,0x104));var _0x1730=function(_0x16bfa1,_0x18b746){_0x16bfa1=_0x16bfa1-0x0;var _0x5bea05=_0x7301[_0x16bfa1];return _0x5bea05;};'use strict';var Sequelize=require('sequelize');module[_0x1730('0x0')]={'uniqueid':{'type':Sequelize[_0x1730('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x1730('0x2')},'membername':{'type':Sequelize[_0x1730('0x3')],'allowNull':![],'comment':_0x1730('0x2')},'UserId':{'type':Sequelize[_0x1730('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1730('0x4'),'comment':_0x1730('0x2')},'VoiceQueueId':{'type':Sequelize[_0x1730('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x1730('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x1730('0x2')},'penalty':{'type':Sequelize[_0x1730('0x1')](0xb),'defaultValue':0x0,'comment':_0x1730('0x2')},'paused':{'type':Sequelize[_0x1730('0x1')](0xb),'defaultValue':0x0,'comment':_0x1730('0x2')}};
\ No newline at end of file
+var _0x09b9=['Required\x20by\x20Asterisk','STRING','queue_interface','sequelize','exports','INTEGER'];(function(_0x40ec64,_0x2930cc){var _0x2f41b6=function(_0x2ae5ff){while(--_0x2ae5ff){_0x40ec64['push'](_0x40ec64['shift']());}};_0x2f41b6(++_0x2930cc);}(_0x09b9,0x17d));var _0x909b=function(_0x4656fc,_0x4aa793){_0x4656fc=_0x4656fc-0x0;var _0x388012=_0x09b9[_0x4656fc];return _0x388012;};'use strict';var Sequelize=require(_0x909b('0x0'));module[_0x909b('0x1')]={'uniqueid':{'type':Sequelize[_0x909b('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x909b('0x3')},'membername':{'type':Sequelize[_0x909b('0x4')],'allowNull':![],'comment':_0x909b('0x3')},'UserId':{'type':Sequelize[_0x909b('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x909b('0x4')],'allowNull':![],'unique':_0x909b('0x5'),'comment':_0x909b('0x3')},'VoiceQueueId':{'type':Sequelize[_0x909b('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x909b('0x4')],'allowNull':![],'unique':_0x909b('0x5'),'comment':_0x909b('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x909b('0x3')},'paused':{'type':Sequelize[_0x909b('0x2')](0xb),'defaultValue':0x0,'comment':_0x909b('0x3')}};
\ No newline at end of file
index e1fdc39..a0aa397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2b5=['exports','events','UserVoiceQueueRt','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5ca5e2,_0x57d339){var _0x5914e8=function(_0x23dce3){while(--_0x23dce3){_0x5ca5e2['push'](_0x5ca5e2['shift']());}};_0x5914e8(++_0x57d339);}(_0xa2b5,0x1d5));var _0x5a2b=function(_0x587dd4,_0x3e1c60){_0x587dd4=_0x587dd4-0x0;var _0x498fc0=_0xa2b5[_0x587dd4];return _0x498fc0;};'use strict';var EventEmitter=require(_0x5a2b('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x5a2b('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a2b('0x2'),'afterUpdate':_0x5a2b('0x3'),'afterDestroy':_0x5a2b('0x4')};function emitEvent(_0x14688d){return function(_0x4e536b,_0x465cc7,_0x62d3a9){UserVoiceQueueRtEvents['emit'](_0x14688d+':'+_0x4e536b['id'],_0x4e536b);UserVoiceQueueRtEvents[_0x5a2b('0x5')](_0x14688d,_0x4e536b);_0x62d3a9(null);};}for(var e in events){if(events[_0x5a2b('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0x5a2b('0x7')](e,emitEvent(event));}}module[_0x5a2b('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x0a84=['update','remove','emit','hasOwnProperty','exports','events','UserVoiceQueueRt','save'];(function(_0x29dda1,_0x508e13){var _0x21b0ef=function(_0x118906){while(--_0x118906){_0x29dda1['push'](_0x29dda1['shift']());}};_0x21b0ef(++_0x508e13);}(_0x0a84,0x185));var _0x40a8=function(_0x28ec6d,_0x295eb7){_0x28ec6d=_0x28ec6d-0x0;var _0x1f1762=_0x0a84[_0x28ec6d];return _0x1f1762;};'use strict';var EventEmitter=require(_0x40a8('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x40a8('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x40a8('0x2'),'afterUpdate':_0x40a8('0x3'),'afterDestroy':_0x40a8('0x4')};function emitEvent(_0x51c3fe){return function(_0x4620b9,_0x353db1,_0xd230d4){UserVoiceQueueRtEvents['emit'](_0x51c3fe+':'+_0x4620b9['id'],_0x4620b9);UserVoiceQueueRtEvents[_0x40a8('0x5')](_0x51c3fe,_0x4620b9);_0xd230d4(null);};}for(var e in events){if(events[_0x40a8('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x40a8('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 16c1c6b..1ca909e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f18=['user_has_voice_queues_rt','moment','bluebird','request-promise','path','rimraf','./userVoiceQueueRt.attributes','define','UserVoiceQueueRt'];(function(_0x319df2,_0x4085fb){var _0x41f9df=function(_0x8b9a53){while(--_0x8b9a53){_0x319df2['push'](_0x319df2['shift']());}};_0x41f9df(++_0x4085fb);}(_0x1f18,0x1c3));var _0x81f1=function(_0x328d70,_0x161e48){_0x328d70=_0x328d70-0x0;var _0x3b1279=_0x1f18[_0x328d70];return _0x3b1279;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x81f1('0x0'));var BPromise=require(_0x81f1('0x1'));var rp=require(_0x81f1('0x2'));var fs=require('fs');var path=require(_0x81f1('0x3'));var rimraf=require(_0x81f1('0x4'));var config=require('../../config/environment');var attributes=require(_0x81f1('0x5'));module['exports']=function(_0x4e19b6,_0x20a787){return _0x4e19b6[_0x81f1('0x6')](_0x81f1('0x7'),attributes,{'tableName':_0x81f1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f6b=['rimraf','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x2306dc,_0x2d2ff2){var _0x3d2b36=function(_0x393307){while(--_0x393307){_0x2306dc['push'](_0x2306dc['shift']());}};_0x3d2b36(++_0x2d2ff2);}(_0x2f6b,0x6e));var _0xb2f6=function(_0x49fb1c,_0x113891){_0x49fb1c=_0x49fb1c-0x0;var _0x36cc02=_0x2f6b[_0x49fb1c];return _0x36cc02;};'use strict';var _=require(_0xb2f6('0x0'));var util=require(_0xb2f6('0x1'));var logger=require(_0xb2f6('0x2'))(_0xb2f6('0x3'));var moment=require(_0xb2f6('0x4'));var BPromise=require(_0xb2f6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb2f6('0x6'));var rimraf=require(_0xb2f6('0x7'));var config=require('../../config/environment');var attributes=require(_0xb2f6('0x8'));module[_0xb2f6('0x9')]=function(_0x10e7f1,_0x141578){return _0x10e7f1[_0xb2f6('0xa')](_0xb2f6('0xb'),attributes,{'tableName':_0xb2f6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85cee1b..814f8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2895=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','where','sequelize','COUNT','literal','outboundQueuePauses','util','moment'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x2895,0x195));var _0x5289=function(_0x36e3ec,_0x381442){_0x36e3ec=_0x36e3ec-0x0;var _0xb4841c=_0x2895[_0x36e3ec];return _0xb4841c;};'use strict';var _=require('lodash');var util=require(_0x5289('0x0'));var moment=require(_0x5289('0x1'));var BPromise=require('bluebird');var rs=require(_0x5289('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5289('0x3'))['db'];var utils=require(_0x5289('0x4'));var logger=require('../../config/logger')(_0x5289('0x5'));var config=require(_0x5289('0x6'));var jayson=require(_0x5289('0x7'));var client=jayson[_0x5289('0x8')][_0x5289('0x9')]({'port':0x232a});config[_0x5289('0xa')]=_[_0x5289('0xb')](config[_0x5289('0xa')],{'host':_0x5289('0xc'),'port':0x18eb});var socket=require(_0x5289('0xd'))(new Redis(config['redis']));require(_0x5289('0xe'))[_0x5289('0xf')](socket);function respondWithRpcPromise(_0x1ffd56,_0x5ba9c9,_0x43de98){return new BPromise(function(_0x160df4,_0x2ac1c2){return client['request'](_0x1ffd56,_0x43de98)[_0x5289('0x10')](function(_0x404921){logger[_0x5289('0x11')](_0x5289('0x12'),_0x5ba9c9,_0x5289('0x13'));logger[_0x5289('0x14')](_0x5289('0x15'),_0x5ba9c9,_0x5289('0x13'),JSON[_0x5289('0x16')](_0x404921));if(_0x404921[_0x5289('0x17')]){if(_0x404921[_0x5289('0x17')][_0x5289('0x18')]===0x1f4){logger[_0x5289('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x5ba9c9,_0x404921[_0x5289('0x17')][_0x5289('0x19')]);return _0x2ac1c2(_0x404921['error'][_0x5289('0x19')]);}logger[_0x5289('0x17')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x5ba9c9,_0x404921[_0x5289('0x17')][_0x5289('0x19')]);return _0x160df4(_0x404921[_0x5289('0x17')][_0x5289('0x19')]);}else{logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x5ba9c9,'request\x20sent');_0x160df4(_0x404921[_0x5289('0x1a')][_0x5289('0x19')]);}})[_0x5289('0x1b')](function(_0x17353f){logger['error'](_0x5289('0x12'),_0x5ba9c9,_0x17353f);_0x2ac1c2(_0x17353f);});});}exports[_0x5289('0x1c')]=function(_0x4b9e55){var _0x3c739f=this;return new Promise(function(_0x32e66d,_0x4333a5){return db[_0x5289('0x1d')][_0x5289('0x1e')]({'raw':_0x4b9e55[_0x5289('0x1f')]?_0x4b9e55[_0x5289('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x4b9e55[_0x5289('0x1f')]?_0x4b9e55[_0x5289('0x1f')][_0x5289('0x20')]||null:null,'attributes':[[db[_0x5289('0x21')]['fn'](_0x5289('0x22'),db['sequelize']['fn']('IF',db[_0x5289('0x21')][_0x5289('0x23')]('`paused`\x20=\x201,\x201,\x20null'))),_0x5289('0x24')]]})[_0x5289('0x10')](function(_0x962898){logger['info'](_0x5289('0x1c'),_0x4b9e55);logger[_0x5289('0x14')]('GetVoiceQueueRtPauses',_0x4b9e55,JSON[_0x5289('0x16')](_0x962898));_0x32e66d(_0x962898);})[_0x5289('0x1b')](function(_0x38f440){logger[_0x5289('0x17')](_0x5289('0x1c'),_0x38f440['message'],_0x4b9e55);_0x4333a5(_0x3c739f[_0x5289('0x17')](0x1f4,_0x38f440[_0x5289('0x19')]));});});};
\ No newline at end of file
+var _0x6ff2=['`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','info','util','bluebird','ioredis','../../mysqldb','jayson/promise','http','redis','defaults','socket.io-emitter','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetVoiceQueueRtPauses','findAll','options','where','sequelize','literal'];(function(_0x3e5ac1,_0x213ec1){var _0x5c9069=function(_0x2b8d6f){while(--_0x2b8d6f){_0x3e5ac1['push'](_0x3e5ac1['shift']());}};_0x5c9069(++_0x213ec1);}(_0x6ff2,0x1d3));var _0x26ff=function(_0x55c2fc,_0x300013){_0x55c2fc=_0x55c2fc-0x0;var _0x408247=_0x6ff2[_0x55c2fc];return _0x408247;};'use strict';var _=require('lodash');var util=require(_0x26ff('0x0'));var moment=require('moment');var BPromise=require(_0x26ff('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x26ff('0x2'));var db=require(_0x26ff('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x26ff('0x4'));var client=jayson['client'][_0x26ff('0x5')]({'port':0x232a});config[_0x26ff('0x6')]=_[_0x26ff('0x7')](config[_0x26ff('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x26ff('0x8'))(new Redis(config[_0x26ff('0x6')]));require('./userVoiceQueueRt.socket')[_0x26ff('0x9')](socket);function respondWithRpcPromise(_0x370135,_0x34c51b,_0xbcab8d){return new BPromise(function(_0x6aea2a,_0x428436){return client[_0x26ff('0xa')](_0x370135,_0xbcab8d)[_0x26ff('0xb')](function(_0x4eb9d4){logger['info'](_0x26ff('0xc'),_0x34c51b,'request\x20sent');logger[_0x26ff('0xd')](_0x26ff('0xe'),_0x34c51b,_0x26ff('0xf'),JSON['stringify'](_0x4eb9d4));if(_0x4eb9d4['error']){if(_0x4eb9d4['error']['code']===0x1f4){logger[_0x26ff('0x10')](_0x26ff('0xc'),_0x34c51b,_0x4eb9d4[_0x26ff('0x10')]['message']);return _0x428436(_0x4eb9d4[_0x26ff('0x10')][_0x26ff('0x11')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x34c51b,_0x4eb9d4[_0x26ff('0x10')][_0x26ff('0x11')]);return _0x6aea2a(_0x4eb9d4[_0x26ff('0x10')]['message']);}else{logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x34c51b,'request\x20sent');_0x6aea2a(_0x4eb9d4[_0x26ff('0x12')]['message']);}})[_0x26ff('0x13')](function(_0x3a11fc){logger[_0x26ff('0x10')](_0x26ff('0xc'),_0x34c51b,_0x3a11fc);_0x428436(_0x3a11fc);});});}exports[_0x26ff('0x14')]=function(_0x330e42){var _0x2d971a=this;return new Promise(function(_0x2c34cb,_0x25f061){return db['UserVoiceQueueRt'][_0x26ff('0x15')]({'raw':_0x330e42[_0x26ff('0x16')]?_0x330e42['options']['raw']===undefined?!![]:![]:!![],'where':_0x330e42['options']?_0x330e42[_0x26ff('0x16')][_0x26ff('0x17')]||null:null,'attributes':[[db[_0x26ff('0x18')]['fn']('COUNT',db[_0x26ff('0x18')]['fn']('IF',db['sequelize'][_0x26ff('0x19')](_0x26ff('0x1a')))),_0x26ff('0x1b')]]})[_0x26ff('0xb')](function(_0x438245){logger[_0x26ff('0x1c')](_0x26ff('0x14'),_0x330e42);logger[_0x26ff('0xd')](_0x26ff('0x14'),_0x330e42,JSON['stringify'](_0x438245));_0x2c34cb(_0x438245);})[_0x26ff('0x13')](function(_0x4a7e2d){logger[_0x26ff('0x10')](_0x26ff('0x14'),_0x4a7e2d[_0x26ff('0x11')],_0x330e42);_0x25f061(_0x2d971a['error'](0x1f4,_0x4a7e2d['message']));});});};
\ No newline at end of file
index 1844869..e005cdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3fe=['emit','removeListener','register','length','userVoiceQueueRt:','save','remove','update'];(function(_0x30b845,_0x3f9133){var _0xa791f2=function(_0x111450){while(--_0x111450){_0x30b845['push'](_0x30b845['shift']());}};_0xa791f2(++_0x3f9133);}(_0xf3fe,0x1cd));var _0xef3f=function(_0x59b70b,_0x3cad09){_0x59b70b=_0x59b70b-0x0;var _0x516655=_0xf3fe[_0x59b70b];return _0x516655;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xef3f('0x0'),_0xef3f('0x1'),_0xef3f('0x2')];function createListener(_0x1a5a78,_0x222ab1){return function(_0x5a2364){_0x222ab1[_0xef3f('0x3')](_0x1a5a78,_0x5a2364);};}function removeListener(_0x18a97c,_0x171ff9){return function(){UserVoiceQueueRtEvents[_0xef3f('0x4')](_0x18a97c,_0x171ff9);};}exports[_0xef3f('0x5')]=function(_0x5f1036){for(var _0x504ab9=0x0,_0x9e20c7=events[_0xef3f('0x6')];_0x504ab9<_0x9e20c7;_0x504ab9++){var _0x211a6c=events[_0x504ab9];var _0x262ea3=createListener(_0xef3f('0x7')+_0x211a6c,_0x5f1036);UserVoiceQueueRtEvents['on'](_0x211a6c,_0x262ea3);}};
\ No newline at end of file
+var _0xe928=['register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','emit'];(function(_0x15858d,_0x1eec86){var _0x2fc45e=function(_0x5a8365){while(--_0x5a8365){_0x15858d['push'](_0x15858d['shift']());}};_0x2fc45e(++_0x1eec86);}(_0xe928,0x145));var _0x8e92=function(_0x89ea52,_0x43c3ae){_0x89ea52=_0x89ea52-0x0;var _0x10ce95=_0xe928[_0x89ea52];return _0x10ce95;};'use strict';var UserVoiceQueueRtEvents=require(_0x8e92('0x0'));var events=[_0x8e92('0x1'),_0x8e92('0x2'),'update'];function createListener(_0x226ab9,_0x577acb){return function(_0x939580){_0x577acb[_0x8e92('0x3')](_0x226ab9,_0x939580);};}function removeListener(_0x1b9cbe,_0x1f6ce2){return function(){UserVoiceQueueRtEvents['removeListener'](_0x1b9cbe,_0x1f6ce2);};}exports[_0x8e92('0x4')]=function(_0x50cf8a){for(var _0x2d938d=0x0,_0xe4eff3=events[_0x8e92('0x5')];_0x2d938d<_0xe4eff3;_0x2d938d++){var _0x76e11=events[_0x2d938d];var _0x59e109=createListener(_0x8e92('0x6')+_0x76e11,_0x50cf8a);UserVoiceQueueRtEvents['on'](_0x76e11,_0x59e109);}};
\ No newline at end of file
index d84d303..1655889 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(_0x5e4671,_0x5ecb9f){var _0x3145c2=function(_0x18e4c0){while(--_0x18e4c0){_0x5e4671['push'](_0x5e4671['shift']());}};_0x3145c2(++_0x5ecb9f);}(_0x70e0,0x17b));var _0x070e=function(_0x250faf,_0x29d530){_0x250faf=_0x250faf-0x0;var _0x56f672=_0x70e0[_0x250faf];return _0x56f672;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x26369e,_0x32a254){var _0x309235=function(_0x4ff28b){while(--_0x4ff28b){_0x26369e['push'](_0x26369e['shift']());}};_0x309235(++_0x32a254);}(_0xe706,0xa3));var _0x6e70=function(_0x44b362,_0x1b5fd9){_0x44b362=_0x44b362-0x0;var _0x38b45c=_0xe706[_0x44b362];return _0x38b45c;};'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 76765b0..e6d057a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9407=['sequelize','exports'];(function(_0x173452,_0x3aa870){var _0xee3fd0=function(_0x10eb01){while(--_0x10eb01){_0x173452['push'](_0x173452['shift']());}};_0xee3fd0(++_0x3aa870);}(_0x9407,0x1ec));var _0x7940=function(_0x10e1c3,_0x849334){_0x10e1c3=_0x10e1c3-0x0;var _0x172009=_0x9407[_0x10e1c3];return _0x172009;};'use strict';var Sequelize=require(_0x7940('0x0'));module[_0x7940('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa73c=['sequelize','INTEGER'];(function(_0x54128a,_0x128d4d){var _0x6b9354=function(_0x21e0b8){while(--_0x21e0b8){_0x54128a['push'](_0x54128a['shift']());}};_0x6b9354(++_0x128d4d);}(_0xa73c,0x15e));var _0xca73=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa73c[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xca73('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xca73('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index d2c1040..2549a9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ee0=['./userWhatsappQueue.attributes','define','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x1b5da8,_0xd08d74){var _0x4a623e=function(_0x2abbf6){while(--_0x2abbf6){_0x1b5da8['push'](_0x1b5da8['shift']());}};_0x4a623e(++_0xd08d74);}(_0x9ee0,0x1ce));var _0x09ee=function(_0x2de020,_0x252df0){_0x2de020=_0x2de020-0x0;var _0x182b7c=_0x9ee0[_0x2de020];return _0x182b7c;};'use strict';var _=require(_0x09ee('0x0'));var util=require(_0x09ee('0x1'));var logger=require('../../config/logger')(_0x09ee('0x2'));var moment=require(_0x09ee('0x3'));var BPromise=require(_0x09ee('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09ee('0x5'));var rimraf=require(_0x09ee('0x6'));var config=require(_0x09ee('0x7'));var attributes=require(_0x09ee('0x8'));module['exports']=function(_0x108ec9,_0x5e7924){return _0x108ec9[_0x09ee('0x9')]('UserWhatsappQueue',attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd7d=['rimraf','../../config/environment','./userWhatsappQueue.attributes','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x597bd7,_0x101b45){var _0xdb13b7=function(_0x4e1e76){while(--_0x4e1e76){_0x597bd7['push'](_0x597bd7['shift']());}};_0xdb13b7(++_0x101b45);}(_0xdd7d,0x162));var _0xddd7=function(_0x3d3b83,_0xcdf602){_0x3d3b83=_0x3d3b83-0x0;var _0x3d23f5=_0xdd7d[_0x3d3b83];return _0x3d23f5;};'use strict';var _=require(_0xddd7('0x0'));var util=require(_0xddd7('0x1'));var logger=require(_0xddd7('0x2'))('api');var moment=require(_0xddd7('0x3'));var BPromise=require('bluebird');var rp=require(_0xddd7('0x4'));var fs=require('fs');var path=require(_0xddd7('0x5'));var rimraf=require(_0xddd7('0x6'));var config=require(_0xddd7('0x7'));var attributes=require(_0xddd7('0x8'));module['exports']=function(_0x29fd3f,_0x18c6d8){return _0x29fd3f[_0xddd7('0x9')](_0xddd7('0xa'),attributes,{'tableName':_0xddd7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c38ca18..5cde2d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d5=['lodash','util','randomstring','../../config/utils','jayson/promise','client','http','request','then','info','request\x20sent','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','result','catch'];(function(_0x268fec,_0x2c16cb){var _0x4861cc=function(_0x547eaa){while(--_0x547eaa){_0x268fec['push'](_0x268fec['shift']());}};_0x4861cc(++_0x2c16cb);}(_0x27d5,0x1b5));var _0x527d=function(_0xe45118,_0x5dffbc){_0xe45118=_0xe45118-0x0;var _0x15e15d=_0x27d5[_0xe45118];return _0x15e15d;};'use strict';var _=require(_0x527d('0x0'));var util=require(_0x527d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x527d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x527d('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x527d('0x4'));var client=jayson[_0x527d('0x5')][_0x527d('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x29c159,_0x4d39ec,_0x30e901){return new BPromise(function(_0x5ba82f,_0x32b0db){return client[_0x527d('0x7')](_0x29c159,_0x30e901)[_0x527d('0x8')](function(_0x157394){logger[_0x527d('0x9')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4d39ec,_0x527d('0xa'));logger['debug'](_0x527d('0xb'),_0x4d39ec,_0x527d('0xa'),JSON[_0x527d('0xc')](_0x157394));if(_0x157394[_0x527d('0xd')]){if(_0x157394['error'][_0x527d('0xe')]===0x1f4){logger[_0x527d('0xd')](_0x527d('0xf'),_0x4d39ec,_0x157394['error']['message']);return _0x32b0db(_0x157394[_0x527d('0xd')][_0x527d('0x10')]);}logger['error'](_0x527d('0xf'),_0x4d39ec,_0x157394['error'][_0x527d('0x10')]);return _0x5ba82f(_0x157394[_0x527d('0xd')][_0x527d('0x10')]);}else{logger[_0x527d('0x9')](_0x527d('0xf'),_0x4d39ec,_0x527d('0xa'));_0x5ba82f(_0x157394[_0x527d('0x11')][_0x527d('0x10')]);}})[_0x527d('0x12')](function(_0x3e0bb0){logger[_0x527d('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4d39ec,_0x3e0bb0);_0x32b0db(_0x3e0bb0);});});}
\ No newline at end of file
+var _0x4c73=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result'];(function(_0x5b0294,_0x1a8555){var _0x1f20af=function(_0x519c69){while(--_0x519c69){_0x5b0294['push'](_0x5b0294['shift']());}};_0x1f20af(++_0x1a8555);}(_0x4c73,0x14b));var _0x34c7=function(_0x2e8800,_0x2e6b83){_0x2e8800=_0x2e8800-0x0;var _0x338ad3=_0x4c73[_0x2e8800];return _0x338ad3;};'use strict';var _=require('lodash');var util=require(_0x34c7('0x0'));var moment=require('moment');var BPromise=require(_0x34c7('0x1'));var rs=require(_0x34c7('0x2'));var fs=require('fs');var Redis=require(_0x34c7('0x3'));var db=require(_0x34c7('0x4'))['db'];var utils=require(_0x34c7('0x5'));var logger=require(_0x34c7('0x6'))(_0x34c7('0x7'));var config=require('../../config/environment');var jayson=require(_0x34c7('0x8'));var client=jayson[_0x34c7('0x9')][_0x34c7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37483d,_0x10df80,_0xee2726){return new BPromise(function(_0x5c1355,_0x13735c){return client['request'](_0x37483d,_0xee2726)[_0x34c7('0xb')](function(_0x53c905){logger[_0x34c7('0xc')](_0x34c7('0xd'),_0x10df80,_0x34c7('0xe'));logger['debug'](_0x34c7('0xf'),_0x10df80,'request\x20sent',JSON[_0x34c7('0x10')](_0x53c905));if(_0x53c905['error']){if(_0x53c905['error'][_0x34c7('0x11')]===0x1f4){logger['error'](_0x34c7('0xd'),_0x10df80,_0x53c905[_0x34c7('0x12')][_0x34c7('0x13')]);return _0x13735c(_0x53c905[_0x34c7('0x12')][_0x34c7('0x13')]);}logger[_0x34c7('0x12')](_0x34c7('0xd'),_0x10df80,_0x53c905[_0x34c7('0x12')][_0x34c7('0x13')]);return _0x5c1355(_0x53c905[_0x34c7('0x12')][_0x34c7('0x13')]);}else{logger[_0x34c7('0xc')](_0x34c7('0xd'),_0x10df80,_0x34c7('0xe'));_0x5c1355(_0x53c905[_0x34c7('0x14')][_0x34c7('0x13')]);}})[_0x34c7('0x15')](function(_0x318dd8){logger[_0x34c7('0x12')](_0x34c7('0xd'),_0x10df80,_0x318dd8);_0x13735c(_0x318dd8);});});}
\ No newline at end of file
index 2817e42..c4c3154 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0cc=['fs-extra','../../components/auth/service','./variable.controller','get','isAuthenticated','/:id','put','update','delete','destroy','exports','multer','connect-timeout'];(function(_0x1470f0,_0x3af762){var _0x4f2a4d=function(_0x3dcf1e){while(--_0x3dcf1e){_0x1470f0['push'](_0x1470f0['shift']());}};_0x4f2a4d(++_0x3af762);}(_0xf0cc,0xa7));var _0xcf0c=function(_0x5716a7,_0x39035d){_0x5716a7=_0x5716a7-0x0;var _0x335ae1=_0xf0cc[_0x5716a7];return _0x335ae1;};'use strict';var multer=require(_0xcf0c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcf0c('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xcf0c('0x2'));var auth=require(_0xcf0c('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xcf0c('0x4'));router[_0xcf0c('0x5')]('/',auth[_0xcf0c('0x6')](),controller['index']);router[_0xcf0c('0x5')](_0xcf0c('0x7'),auth[_0xcf0c('0x6')](),controller['show']);router['post']('/',auth[_0xcf0c('0x6')](),controller['create']);router[_0xcf0c('0x8')]('/:id',auth[_0xcf0c('0x6')](),controller[_0xcf0c('0x9')]);router[_0xcf0c('0xa')](_0xcf0c('0x7'),auth[_0xcf0c('0x6')](),controller[_0xcf0c('0xb')]);module[_0xcf0c('0xc')]=router;
\ No newline at end of file
+var _0x177a=['multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','/:id','show','put','update','delete','exports'];(function(_0x4a7db3,_0x57eb6c){var _0x1124d0=function(_0x460ecc){while(--_0x460ecc){_0x4a7db3['push'](_0x4a7db3['shift']());}};_0x1124d0(++_0x57eb6c);}(_0x177a,0xdd));var _0xa177=function(_0x3697ae,_0x3609f9){_0x3697ae=_0x3697ae-0x0;var _0x528378=_0x177a[_0x3697ae];return _0x528378;};'use strict';var multer=require(_0xa177('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa177('0x1'));var express=require(_0xa177('0x2'));var router=express[_0xa177('0x3')]();var fs_extra=require(_0xa177('0x4'));var auth=require(_0xa177('0x5'));var interaction=require(_0xa177('0x6'));var config=require('../../config/environment');var controller=require(_0xa177('0x7'));router[_0xa177('0x8')]('/',auth[_0xa177('0x9')](),controller[_0xa177('0xa')]);router[_0xa177('0x8')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller[_0xa177('0xc')]);router['post']('/',auth[_0xa177('0x9')](),controller['create']);router[_0xa177('0xd')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller[_0xa177('0xe')]);router[_0xa177('0xf')](_0xa177('0xb'),auth[_0xa177('0x9')](),controller['destroy']);module[_0xa177('0x10')]=router;
\ No newline at end of file
index ec199ae..e3e00b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7bc=['name','STRING','sequelize','exports'];(function(_0x4e231f,_0x315a9e){var _0x43a501=function(_0x58bdbb){while(--_0x58bdbb){_0x4e231f['push'](_0x4e231f['shift']());}};_0x43a501(++_0x315a9e);}(_0xe7bc,0x18a));var _0xce7b=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0xe7bc[_0x565ed7];return _0x183ad7;};'use strict';var Sequelize=require(_0xce7b('0x0'));module[_0xce7b('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xce7b('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xce7b('0x3')]}};
\ No newline at end of file
+var _0xb9f7=['STRING','name','sequelize'];(function(_0x52e21c,_0x318a16){var _0x48879d=function(_0x14f720){while(--_0x14f720){_0x52e21c['push'](_0x52e21c['shift']());}};_0x48879d(++_0x318a16);}(_0xb9f7,0x1df));var _0x7b9f=function(_0x469a3c,_0x5ebc10){_0x469a3c=_0x469a3c-0x0;var _0x968f4=_0xb9f7[_0x469a3c];return _0x968f4;};'use strict';var Sequelize=require(_0x7b9f('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b9f('0x1')],'unique':_0x7b9f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1f12ca8..da13235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0163=['path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','Variables','error','stack','name','send','index','Variable','rawAttributes','fieldName','type','model','map','keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filters','merge','filter','options','includeAll','include','findAll','params','find','create','body','user','get','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x5af12b,_0x1a38b0){var _0x101ef8=function(_0x5de6a6){while(--_0x5de6a6){_0x5af12b['push'](_0x5af12b['shift']());}};_0x101ef8(++_0x1a38b0);}(_0x0163,0x98));var _0x3016=function(_0x329243,_0x2ff8a6){_0x329243=_0x329243-0x0;var _0x48b323=_0x0163[_0x329243];return _0x48b323;};'use strict';var emlformat=require(_0x3016('0x0'));var rimraf=require(_0x3016('0x1'));var zipdir=require(_0x3016('0x2'));var jsonpatch=require(_0x3016('0x3'));var rp=require('request-promise');var moment=require(_0x3016('0x4'));var BPromise=require(_0x3016('0x5'));var Mustache=require(_0x3016('0x6'));var util=require(_0x3016('0x7'));var path=require(_0x3016('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3016('0x9'));var fs=require('fs');var fs_extra=require(_0x3016('0xa'));var _=require(_0x3016('0xb'));var squel=require(_0x3016('0xc'));var crypto=require(_0x3016('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3016('0xe'));var toCsv=require(_0x3016('0xf'));var querystring=require('querystring');var Papa=require(_0x3016('0x10'));var Redis=require(_0x3016('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3016('0x12'));var as=require(_0x3016('0x13'));var hardwareService=require(_0x3016('0x14'));var logger=require(_0x3016('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3016('0x16'));var licenseUtil=require(_0x3016('0x17'));var db=require(_0x3016('0x18'))['db'];function respondWithStatusCode(_0x333ec3,_0x11768c){_0x11768c=_0x11768c||0xcc;return function(_0x1c1bdf){if(_0x1c1bdf){return _0x333ec3[_0x3016('0x19')](_0x11768c);}return _0x333ec3['status'](_0x11768c)[_0x3016('0x1a')]();};}function respondWithResult(_0x2e4f11,_0x532b31){_0x532b31=_0x532b31||0xc8;return function(_0x116eae){if(_0x116eae){return _0x2e4f11[_0x3016('0x1b')](_0x532b31)[_0x3016('0x1c')](_0x116eae);}};}function respondWithFilteredResult(_0x47580c,_0x13d413){return function(_0x307934){if(_0x307934){var _0x4a2293=typeof _0x13d413[_0x3016('0x1d')]===_0x3016('0x1e')&&typeof _0x13d413[_0x3016('0x1f')]===_0x3016('0x1e');var _0x49afab=_0x307934[_0x3016('0x20')];var _0x250a67=_0x4a2293?0x0:_0x13d413[_0x3016('0x1d')];var _0x42ba4b=_0x4a2293?_0x307934['count']:_0x13d413[_0x3016('0x1d')]+_0x13d413['limit'];var _0x1bf38e;if(_0x42ba4b>=_0x49afab){_0x42ba4b=_0x49afab;_0x1bf38e=0xc8;}else{_0x1bf38e=0xce;}_0x47580c[_0x3016('0x1b')](_0x1bf38e);return _0x47580c[_0x3016('0x21')](_0x3016('0x22'),_0x250a67+'-'+_0x42ba4b+'/'+_0x49afab)['json'](_0x307934);}return null;};}function patchUpdates(_0x4aedcc){return function(_0x164043){try{jsonpatch[_0x3016('0x23')](_0x164043,_0x4aedcc,!![]);}catch(_0x8401e0){return BPromise['reject'](_0x8401e0);}return _0x164043['save']();};}function saveUpdates(_0x24c769,_0x23ebca){return function(_0x40bd6c){if(_0x40bd6c){return _0x40bd6c[_0x3016('0x24')](_0x24c769)[_0x3016('0x25')](function(_0x64be40){return _0x64be40;});}return null;};}function removeEntity(_0xca7a11,_0x244bd1){return function(_0xcdf1ea){if(_0xcdf1ea){return _0xcdf1ea[_0x3016('0x26')]()[_0x3016('0x25')](function(){var _0x181bd2=_0xcdf1ea['get']({'plain':!![]});var _0x44aa27=_0x3016('0x27');return db['UserProfileResource']['destroy']({'where':{'type':_0x44aa27,'resourceId':_0x181bd2['id']}})['then'](function(){return _0xcdf1ea;});})['then'](function(){_0xca7a11[_0x3016('0x1b')](0xcc)[_0x3016('0x1a')]();});}};}function handleEntityNotFound(_0x4812dc,_0x53cdfc){return function(_0x83d0c9){if(!_0x83d0c9){_0x4812dc[_0x3016('0x19')](0x194);}return _0x83d0c9;};}function handleError(_0x39c8ac,_0x408b03){_0x408b03=_0x408b03||0x1f4;return function(_0x2e70af){logger[_0x3016('0x28')](_0x2e70af[_0x3016('0x29')]);if(_0x2e70af[_0x3016('0x2a')]){delete _0x2e70af['name'];}_0x39c8ac[_0x3016('0x1b')](_0x408b03)[_0x3016('0x2b')](_0x2e70af);};}exports[_0x3016('0x2c')]=function(_0x2b4f94,_0x967aa9){var _0x41db56={},_0xfbeef4={},_0x4a9a1f={'count':0x0,'rows':[]};var _0x5bcf96=_['map'](db[_0x3016('0x2d')][_0x3016('0x2e')],function(_0x5471c4){return{'name':_0x5471c4[_0x3016('0x2f')],'type':_0x5471c4[_0x3016('0x30')]['key']};});_0xfbeef4[_0x3016('0x31')]=_[_0x3016('0x32')](_0x5bcf96,'name');_0xfbeef4['query']=_[_0x3016('0x33')](_0x2b4f94[_0x3016('0x34')]);_0xfbeef4['filters']=_[_0x3016('0x35')](_0xfbeef4[_0x3016('0x31')],_0xfbeef4['query']);_0x41db56['attributes']=_['intersection'](_0xfbeef4[_0x3016('0x31')],qs[_0x3016('0x36')](_0x2b4f94[_0x3016('0x34')][_0x3016('0x36')]));_0x41db56[_0x3016('0x37')]=_0x41db56[_0x3016('0x37')][_0x3016('0x38')]?_0x41db56[_0x3016('0x37')]:_0xfbeef4['model'];if(!_0x2b4f94[_0x3016('0x34')]['hasOwnProperty'](_0x3016('0x39'))){_0x41db56[_0x3016('0x1f')]=qs[_0x3016('0x1f')](_0x2b4f94[_0x3016('0x34')][_0x3016('0x1f')]);_0x41db56[_0x3016('0x1d')]=qs[_0x3016('0x1d')](_0x2b4f94[_0x3016('0x34')][_0x3016('0x1d')]);}_0x41db56[_0x3016('0x3a')]=qs[_0x3016('0x3b')](_0x2b4f94['query']['sort']);_0x41db56[_0x3016('0x3c')]=qs['filters'](_[_0x3016('0x3d')](_0x2b4f94[_0x3016('0x34')],_0xfbeef4[_0x3016('0x3e')]),_0x5bcf96);if(_0x2b4f94[_0x3016('0x34')]['filter']){_0x41db56['where']=_[_0x3016('0x3f')](_0x41db56[_0x3016('0x3c')],{'$or':_[_0x3016('0x32')](_0x5bcf96,function(_0x96cf76){if(_0x96cf76[_0x3016('0x30')]!=='VIRTUAL'){var _0xa75cb0={};_0xa75cb0[_0x96cf76[_0x3016('0x2a')]]={'$like':'%'+_0x2b4f94['query'][_0x3016('0x40')]+'%'};return _0xa75cb0;}})});}_0x41db56=_[_0x3016('0x3f')]({},_0x41db56,_0x2b4f94[_0x3016('0x41')]);var _0x4f3e86={'where':_0x41db56['where']};return db[_0x3016('0x2d')][_0x3016('0x20')](_0x4f3e86)[_0x3016('0x25')](function(_0x54772e){_0x4a9a1f['count']=_0x54772e;if(_0x2b4f94[_0x3016('0x34')][_0x3016('0x42')]){_0x41db56[_0x3016('0x43')]=[{'all':!![]}];}return db[_0x3016('0x2d')][_0x3016('0x44')](_0x41db56);})[_0x3016('0x25')](function(_0x3a02de){_0x4a9a1f['rows']=_0x3a02de;return _0x4a9a1f;})[_0x3016('0x25')](respondWithFilteredResult(_0x967aa9,_0x41db56))['catch'](handleError(_0x967aa9,null));};exports['show']=function(_0x58a79c,_0x3d08e7){var _0xd001b1={'raw':!![],'where':{'id':_0x58a79c[_0x3016('0x45')]['id']}},_0x23ccb4={};_0x23ccb4[_0x3016('0x31')]=_[_0x3016('0x33')](db['Variable'][_0x3016('0x2e')]);_0x23ccb4[_0x3016('0x34')]=_[_0x3016('0x33')](_0x58a79c[_0x3016('0x34')]);_0x23ccb4[_0x3016('0x3e')]=_[_0x3016('0x35')](_0x23ccb4[_0x3016('0x31')],_0x23ccb4[_0x3016('0x34')]);_0xd001b1['attributes']=_[_0x3016('0x35')](_0x23ccb4[_0x3016('0x31')],qs[_0x3016('0x36')](_0x58a79c[_0x3016('0x34')][_0x3016('0x36')]));_0xd001b1['attributes']=_0xd001b1['attributes'][_0x3016('0x38')]?_0xd001b1['attributes']:_0x23ccb4[_0x3016('0x31')];if(_0x58a79c[_0x3016('0x34')]['includeAll']){_0xd001b1[_0x3016('0x43')]=[{'all':!![]}];}_0xd001b1=_[_0x3016('0x3f')]({},_0xd001b1,_0x58a79c[_0x3016('0x41')]);return db[_0x3016('0x2d')][_0x3016('0x46')](_0xd001b1)['then'](handleEntityNotFound(_0x3d08e7,null))[_0x3016('0x25')](respondWithResult(_0x3d08e7,null))['catch'](handleError(_0x3d08e7,null));};exports[_0x3016('0x47')]=function(_0x3a331b,_0x7192d){return db[_0x3016('0x2d')][_0x3016('0x47')](_0x3a331b[_0x3016('0x48')],{})[_0x3016('0x25')](function(_0x460d4c){var _0x125f86=_0x3a331b[_0x3016('0x49')][_0x3016('0x4a')]({'plain':!![]});if(!_0x125f86)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x125f86['role']===_0x3016('0x49')){var _0x15e27b=_0x460d4c['get']({'plain':!![]});var _0x47e0b1=_0x3016('0x27');return db[_0x3016('0x4b')][_0x3016('0x46')]({'where':{'name':_0x47e0b1,'userProfileId':_0x125f86[_0x3016('0x4c')]},'raw':!![]})[_0x3016('0x25')](function(_0x19ef86){if(_0x19ef86&&_0x19ef86[_0x3016('0x4d')]===0x0){return db['UserProfileResource'][_0x3016('0x47')]({'name':_0x15e27b[_0x3016('0x2a')],'resourceId':_0x15e27b['id'],'type':_0x19ef86[_0x3016('0x2a')],'sectionId':_0x19ef86['id']},{})[_0x3016('0x25')](function(){return _0x460d4c;});}else{return _0x460d4c;}})[_0x3016('0x4e')](function(_0x4dc50b){logger['error'](_0x3016('0x4f'),_0x4dc50b);throw _0x4dc50b;});}return _0x460d4c;})[_0x3016('0x25')](respondWithResult(_0x7192d,0xc9))[_0x3016('0x4e')](handleError(_0x7192d,null));};exports['update']=function(_0x5a9315,_0x24e171){if(_0x5a9315[_0x3016('0x48')]['id']){delete _0x5a9315[_0x3016('0x48')]['id'];}return db[_0x3016('0x2d')][_0x3016('0x46')]({'where':{'id':_0x5a9315['params']['id']}})[_0x3016('0x25')](handleEntityNotFound(_0x24e171,null))[_0x3016('0x25')](saveUpdates(_0x5a9315[_0x3016('0x48')],null))[_0x3016('0x25')](respondWithResult(_0x24e171,null))[_0x3016('0x4e')](handleError(_0x24e171,null));};exports[_0x3016('0x26')]=function(_0x5f08a3,_0x42442f){return db[_0x3016('0x2d')]['find']({'where':{'id':_0x5f08a3[_0x3016('0x45')]['id']}})[_0x3016('0x25')](handleEntityNotFound(_0x42442f,null))[_0x3016('0x25')](removeEntity(_0x42442f,null))[_0x3016('0x4e')](handleError(_0x42442f,null));};
\ No newline at end of file
+var _0x918c=['json','reject','then','destroy','get','Variables','UserProfileResource','name','send','index','map','Variable','fieldName','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','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','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','Content-Range'];(function(_0x2b236b,_0x285b7f){var _0x2c24cb=function(_0x4b25a1){while(--_0x4b25a1){_0x2b236b['push'](_0x2b236b['shift']());}};_0x2c24cb(++_0x285b7f);}(_0x918c,0x1d2));var _0xc918=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0x918c[_0x307d86];return _0x361745;};'use strict';var emlformat=require(_0xc918('0x0'));var rimraf=require(_0xc918('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc918('0x2'));var BPromise=require(_0xc918('0x3'));var Mustache=require(_0xc918('0x4'));var util=require(_0xc918('0x5'));var path=require(_0xc918('0x6'));var sox=require(_0xc918('0x7'));var csv=require(_0xc918('0x8'));var ejs=require(_0xc918('0x9'));var fs=require('fs');var fs_extra=require(_0xc918('0xa'));var _=require(_0xc918('0xb'));var squel=require(_0xc918('0xc'));var crypto=require('crypto');var jsforce=require(_0xc918('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc918('0x8'));var querystring=require(_0xc918('0xe'));var Papa=require(_0xc918('0xf'));var Redis=require(_0xc918('0x10'));var authService=require(_0xc918('0x11'));var qs=require(_0xc918('0x12'));var as=require(_0xc918('0x13'));var hardwareService=require(_0xc918('0x14'));var logger=require('../../config/logger')(_0xc918('0x15'));var utils=require(_0xc918('0x16'));var config=require(_0xc918('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc918('0x18'))['db'];function respondWithStatusCode(_0x2ac443,_0x292b6d){_0x292b6d=_0x292b6d||0xcc;return function(_0x56350c){if(_0x56350c){return _0x2ac443[_0xc918('0x19')](_0x292b6d);}return _0x2ac443['status'](_0x292b6d)[_0xc918('0x1a')]();};}function respondWithResult(_0x214e42,_0x4bb4bd){_0x4bb4bd=_0x4bb4bd||0xc8;return function(_0x502df3){if(_0x502df3){return _0x214e42[_0xc918('0x1b')](_0x4bb4bd)['json'](_0x502df3);}};}function respondWithFilteredResult(_0x414c70,_0x1b3cec){return function(_0x3101cd){if(_0x3101cd){var _0x50e86f=typeof _0x1b3cec[_0xc918('0x1c')]===_0xc918('0x1d')&&typeof _0x1b3cec['limit']===_0xc918('0x1d');var _0x547bff=_0x3101cd[_0xc918('0x1e')];var _0x12c81d=_0x50e86f?0x0:_0x1b3cec[_0xc918('0x1c')];var _0x355055=_0x50e86f?_0x3101cd[_0xc918('0x1e')]:_0x1b3cec['offset']+_0x1b3cec['limit'];var _0x274de9;if(_0x355055>=_0x547bff){_0x355055=_0x547bff;_0x274de9=0xc8;}else{_0x274de9=0xce;}_0x414c70[_0xc918('0x1b')](_0x274de9);return _0x414c70['set'](_0xc918('0x1f'),_0x12c81d+'-'+_0x355055+'/'+_0x547bff)[_0xc918('0x20')](_0x3101cd);}return null;};}function patchUpdates(_0x446ff2){return function(_0x22e47f){try{jsonpatch['apply'](_0x22e47f,_0x446ff2,!![]);}catch(_0x1edf11){return BPromise[_0xc918('0x21')](_0x1edf11);}return _0x22e47f['save']();};}function saveUpdates(_0x470ed0,_0xc76810){return function(_0x53fb73){if(_0x53fb73){return _0x53fb73['update'](_0x470ed0)[_0xc918('0x22')](function(_0x5e0285){return _0x5e0285;});}return null;};}function removeEntity(_0x180969,_0x524de4){return function(_0x3060ab){if(_0x3060ab){return _0x3060ab[_0xc918('0x23')]()['then'](function(){var _0x126a02=_0x3060ab[_0xc918('0x24')]({'plain':!![]});var _0x4752f7=_0xc918('0x25');return db[_0xc918('0x26')][_0xc918('0x23')]({'where':{'type':_0x4752f7,'resourceId':_0x126a02['id']}})[_0xc918('0x22')](function(){return _0x3060ab;});})[_0xc918('0x22')](function(){_0x180969[_0xc918('0x1b')](0xcc)[_0xc918('0x1a')]();});}};}function handleEntityNotFound(_0xf2712a,_0x6e3077){return function(_0x48e053){if(!_0x48e053){_0xf2712a[_0xc918('0x19')](0x194);}return _0x48e053;};}function handleError(_0x186ada,_0x314a1e){_0x314a1e=_0x314a1e||0x1f4;return function(_0x409ec3){logger['error'](_0x409ec3['stack']);if(_0x409ec3[_0xc918('0x27')]){delete _0x409ec3[_0xc918('0x27')];}_0x186ada[_0xc918('0x1b')](_0x314a1e)[_0xc918('0x28')](_0x409ec3);};}exports[_0xc918('0x29')]=function(_0x6245d4,_0x1a7e57){var _0x17817b={},_0x406419={},_0x377207={'count':0x0,'rows':[]};var _0x379050=_[_0xc918('0x2a')](db[_0xc918('0x2b')]['rawAttributes'],function(_0x19a8f9){return{'name':_0x19a8f9[_0xc918('0x2c')],'type':_0x19a8f9['type']['key']};});_0x406419[_0xc918('0x2d')]=_[_0xc918('0x2a')](_0x379050,_0xc918('0x27'));_0x406419[_0xc918('0x2e')]=_[_0xc918('0x2f')](_0x6245d4[_0xc918('0x2e')]);_0x406419[_0xc918('0x30')]=_['intersection'](_0x406419['model'],_0x406419[_0xc918('0x2e')]);_0x17817b['attributes']=_[_0xc918('0x31')](_0x406419[_0xc918('0x2d')],qs[_0xc918('0x32')](_0x6245d4[_0xc918('0x2e')][_0xc918('0x32')]));_0x17817b[_0xc918('0x33')]=_0x17817b['attributes']['length']?_0x17817b[_0xc918('0x33')]:_0x406419[_0xc918('0x2d')];if(!_0x6245d4['query'][_0xc918('0x34')](_0xc918('0x35'))){_0x17817b[_0xc918('0x36')]=qs[_0xc918('0x36')](_0x6245d4[_0xc918('0x2e')][_0xc918('0x36')]);_0x17817b['offset']=qs['offset'](_0x6245d4[_0xc918('0x2e')][_0xc918('0x1c')]);}_0x17817b[_0xc918('0x37')]=qs[_0xc918('0x38')](_0x6245d4[_0xc918('0x2e')][_0xc918('0x38')]);_0x17817b[_0xc918('0x39')]=qs[_0xc918('0x30')](_[_0xc918('0x3a')](_0x6245d4[_0xc918('0x2e')],_0x406419['filters']),_0x379050);if(_0x6245d4[_0xc918('0x2e')]['filter']){_0x17817b['where']=_[_0xc918('0x3b')](_0x17817b[_0xc918('0x39')],{'$or':_[_0xc918('0x2a')](_0x379050,function(_0x10aa5b){if(_0x10aa5b[_0xc918('0x3c')]!==_0xc918('0x3d')){var _0x6db494={};_0x6db494[_0x10aa5b[_0xc918('0x27')]]={'$like':'%'+_0x6245d4[_0xc918('0x2e')][_0xc918('0x3e')]+'%'};return _0x6db494;}})});}_0x17817b=_[_0xc918('0x3b')]({},_0x17817b,_0x6245d4[_0xc918('0x3f')]);var _0x5605d5={'where':_0x17817b[_0xc918('0x39')]};return db[_0xc918('0x2b')][_0xc918('0x1e')](_0x5605d5)['then'](function(_0x190547){_0x377207[_0xc918('0x1e')]=_0x190547;if(_0x6245d4[_0xc918('0x2e')][_0xc918('0x40')]){_0x17817b[_0xc918('0x41')]=[{'all':!![]}];}return db[_0xc918('0x2b')][_0xc918('0x42')](_0x17817b);})[_0xc918('0x22')](function(_0x1c19f4){_0x377207[_0xc918('0x43')]=_0x1c19f4;return _0x377207;})[_0xc918('0x22')](respondWithFilteredResult(_0x1a7e57,_0x17817b))[_0xc918('0x44')](handleError(_0x1a7e57,null));};exports[_0xc918('0x45')]=function(_0x16a11d,_0x3cf12a){var _0x4c607c={'raw':!![],'where':{'id':_0x16a11d[_0xc918('0x46')]['id']}},_0x3951b9={};_0x3951b9[_0xc918('0x2d')]=_[_0xc918('0x2f')](db['Variable'][_0xc918('0x47')]);_0x3951b9[_0xc918('0x2e')]=_[_0xc918('0x2f')](_0x16a11d[_0xc918('0x2e')]);_0x3951b9[_0xc918('0x30')]=_[_0xc918('0x31')](_0x3951b9[_0xc918('0x2d')],_0x3951b9[_0xc918('0x2e')]);_0x4c607c[_0xc918('0x33')]=_[_0xc918('0x31')](_0x3951b9[_0xc918('0x2d')],qs[_0xc918('0x32')](_0x16a11d['query'][_0xc918('0x32')]));_0x4c607c[_0xc918('0x33')]=_0x4c607c['attributes'][_0xc918('0x48')]?_0x4c607c[_0xc918('0x33')]:_0x3951b9['model'];if(_0x16a11d[_0xc918('0x2e')][_0xc918('0x40')]){_0x4c607c['include']=[{'all':!![]}];}_0x4c607c=_[_0xc918('0x3b')]({},_0x4c607c,_0x16a11d[_0xc918('0x3f')]);return db[_0xc918('0x2b')][_0xc918('0x49')](_0x4c607c)[_0xc918('0x22')](handleEntityNotFound(_0x3cf12a,null))[_0xc918('0x22')](respondWithResult(_0x3cf12a,null))['catch'](handleError(_0x3cf12a,null));};exports[_0xc918('0x4a')]=function(_0x3ea9e5,_0x4b71b5){return db['Variable'][_0xc918('0x4a')](_0x3ea9e5[_0xc918('0x4b')],{})['then'](function(_0x469299){var _0xb32f85=_0x3ea9e5[_0xc918('0x4c')][_0xc918('0x24')]({'plain':!![]});if(!_0xb32f85)throw new Error(_0xc918('0x4d'));if(_0xb32f85['role']==='user'){var _0x588af4=_0x469299[_0xc918('0x24')]({'plain':!![]});var _0x482625=_0xc918('0x25');return db[_0xc918('0x4e')][_0xc918('0x49')]({'where':{'name':_0x482625,'userProfileId':_0xb32f85[_0xc918('0x4f')]},'raw':!![]})[_0xc918('0x22')](function(_0x193532){if(_0x193532&&_0x193532['autoAssociation']===0x0){return db[_0xc918('0x26')]['create']({'name':_0x588af4[_0xc918('0x27')],'resourceId':_0x588af4['id'],'type':_0x193532[_0xc918('0x27')],'sectionId':_0x193532['id']},{})['then'](function(){return _0x469299;});}else{return _0x469299;}})['catch'](function(_0x4ea4fc){logger[_0xc918('0x50')](_0xc918('0x51'),_0x4ea4fc);throw _0x4ea4fc;});}return _0x469299;})[_0xc918('0x22')](respondWithResult(_0x4b71b5,0xc9))[_0xc918('0x44')](handleError(_0x4b71b5,null));};exports[_0xc918('0x52')]=function(_0x1cc2af,_0xa52744){if(_0x1cc2af['body']['id']){delete _0x1cc2af[_0xc918('0x4b')]['id'];}return db[_0xc918('0x2b')][_0xc918('0x49')]({'where':{'id':_0x1cc2af['params']['id']}})[_0xc918('0x22')](handleEntityNotFound(_0xa52744,null))[_0xc918('0x22')](saveUpdates(_0x1cc2af[_0xc918('0x4b')],null))[_0xc918('0x22')](respondWithResult(_0xa52744,null))[_0xc918('0x44')](handleError(_0xa52744,null));};exports[_0xc918('0x23')]=function(_0x92f8f,_0x298e50){return db[_0xc918('0x2b')]['find']({'where':{'id':_0x92f8f['params']['id']}})['then'](handleEntityNotFound(_0x298e50,null))['then'](removeEntity(_0x298e50,null))['catch'](handleError(_0x298e50,null));};
\ No newline at end of file
index 3b1d7a2..9366079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac14=['request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','../../config/logger','moment','bluebird'];(function(_0x2618f5,_0x2ea0a2){var _0x374514=function(_0x5c6f62){while(--_0x5c6f62){_0x2618f5['push'](_0x2618f5['shift']());}};_0x374514(++_0x2ea0a2);}(_0xac14,0x1a9));var _0x4ac1=function(_0x29a861,_0x33dfef){_0x29a861=_0x29a861-0x0;var _0x46aaf1=_0xac14[_0x29a861];return _0x46aaf1;};'use strict';var _=require(_0x4ac1('0x0'));var util=require('util');var logger=require(_0x4ac1('0x1'))('api');var moment=require(_0x4ac1('0x2'));var BPromise=require(_0x4ac1('0x3'));var rp=require(_0x4ac1('0x4'));var fs=require('fs');var path=require(_0x4ac1('0x5'));var rimraf=require(_0x4ac1('0x6'));var config=require(_0x4ac1('0x7'));var attributes=require(_0x4ac1('0x8'));module[_0x4ac1('0x9')]=function(_0x468ae8,_0x201ba9){return _0x468ae8[_0x4ac1('0xa')](_0x4ac1('0xb'),attributes,{'tableName':_0x4ac1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xffcb=['define','Variable','tools_variables','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports'];(function(_0x12c5c7,_0x1f6254){var _0x4a0294=function(_0x222cc1){while(--_0x222cc1){_0x12c5c7['push'](_0x12c5c7['shift']());}};_0x4a0294(++_0x1f6254);}(_0xffcb,0xff));var _0xbffc=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xffcb[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xbffc('0x0'));var util=require('util');var logger=require(_0xbffc('0x1'))(_0xbffc('0x2'));var moment=require(_0xbffc('0x3'));var BPromise=require(_0xbffc('0x4'));var rp=require(_0xbffc('0x5'));var fs=require('fs');var path=require(_0xbffc('0x6'));var rimraf=require(_0xbffc('0x7'));var config=require(_0xbffc('0x8'));var attributes=require(_0xbffc('0x9'));module[_0xbffc('0xa')]=function(_0x28f62a,_0x4ba001){return _0x28f62a[_0xbffc('0xb')](_0xbffc('0xc'),attributes,{'tableName':_0xbffc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e0519ba..50b960c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['catch','Variable','find','options','raw','where','attributes','include','map','model','then','ShowVariable','stringify','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','Variable,\x20%s,\x20%s','message','info'];(function(_0x2dd12a,_0x441a94){var _0x52069c=function(_0x34591e){while(--_0x34591e){_0x2dd12a['push'](_0x2dd12a['shift']());}};_0x52069c(++_0x441a94);}(_0x3e74,0x175));var _0x43e7=function(_0x442f42,_0x46e666){_0x442f42=_0x442f42-0x0;var _0x1923b9=_0x3e74[_0x442f42];return _0x1923b9;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('Variable,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('Variable,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('Variable,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}exports['ShowVariable']=function(_0x446986){var _0x1ca758=this;return new Promise(function(_0x9037d3,_0x140657){return db[_0x43e7('0x12')][_0x43e7('0x13')]({'raw':_0x446986[_0x43e7('0x14')]?_0x446986[_0x43e7('0x14')][_0x43e7('0x15')]===undefined?!![]:![]:!![],'where':_0x446986[_0x43e7('0x14')]?_0x446986[_0x43e7('0x14')][_0x43e7('0x16')]||null:null,'attributes':_0x446986['options']?_0x446986[_0x43e7('0x14')][_0x43e7('0x17')]||null:null,'include':_0x446986['options']?_0x446986[_0x43e7('0x14')][_0x43e7('0x18')]?_[_0x43e7('0x19')](_0x446986[_0x43e7('0x14')][_0x43e7('0x18')],function(_0x2f4cb4){return{'model':db[_0x2f4cb4['model']],'as':_0x2f4cb4['as'],'attributes':_0x2f4cb4[_0x43e7('0x17')],'include':_0x2f4cb4['include']?_['map'](_0x2f4cb4[_0x43e7('0x18')],function(_0x43f4ff){return{'model':db[_0x43f4ff['model']],'as':_0x43f4ff['as'],'attributes':_0x43f4ff[_0x43e7('0x17')],'include':_0x43f4ff['include']?_[_0x43e7('0x19')](_0x43f4ff['include'],function(_0x1af208){return{'model':db[_0x1af208[_0x43e7('0x1a')]],'as':_0x1af208['as'],'attributes':_0x1af208[_0x43e7('0x17')]};}):[]};}):[]};}):[]:[]})[_0x43e7('0x1b')](function(_0x51f4d7){logger['info'](_0x43e7('0x1c'),_0x446986);logger['debug'](_0x43e7('0x1c'),_0x446986,JSON[_0x43e7('0x1d')](_0x51f4d7));_0x9037d3(_0x51f4d7);})[_0x43e7('0x11')](function(_0xb1fc63){logger['error'](_0x43e7('0x1c'),_0xb1fc63[_0x43e7('0xf')],_0x446986);_0x140657(_0x1ca758[_0x43e7('0xd')](0x1f4,_0xb1fc63[_0x43e7('0xf')]));});});};
\ No newline at end of file
+var _0x3e74=['catch','Variable','find','options','raw','where','attributes','include','map','model','then','ShowVariable','stringify','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','error','Variable,\x20%s,\x20%s','message','info'];(function(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0x3e74,0x175));var _0x43e7=function(_0x147ee7,_0x179745){_0x147ee7=_0x147ee7-0x0;var _0x6b281d=_0x3e74[_0x147ee7];return _0x6b281d;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x503698,_0x45a0d1,_0x3491d6){return new BPromise(function(_0x2ede2d,_0x8528fc){return client[_0x43e7('0xa')](_0x503698,_0x3491d6)['then'](function(_0x212c6c){logger['info']('Variable,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'));logger[_0x43e7('0xc')]('Variable,\x20%s,\x20%s,\x20%s',_0x45a0d1,_0x43e7('0xb'),JSON['stringify'](_0x212c6c));if(_0x212c6c[_0x43e7('0xd')]){if(_0x212c6c[_0x43e7('0xd')]['code']===0x1f4){logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')][_0x43e7('0xf')]);return _0x8528fc(_0x212c6c['error']['message']);}logger[_0x43e7('0xd')](_0x43e7('0xe'),_0x45a0d1,_0x212c6c[_0x43e7('0xd')]['message']);return _0x2ede2d(_0x212c6c['error'][_0x43e7('0xf')]);}else{logger[_0x43e7('0x10')](_0x43e7('0xe'),_0x45a0d1,_0x43e7('0xb'));_0x2ede2d(_0x212c6c['result']['message']);}})[_0x43e7('0x11')](function(_0x264575){logger[_0x43e7('0xd')]('Variable,\x20%s,\x20%s',_0x45a0d1,_0x264575);_0x8528fc(_0x264575);});});}exports['ShowVariable']=function(_0x446986){var _0x1ca758=this;return new Promise(function(_0x9037d3,_0x140657){return db[_0x43e7('0x12')][_0x43e7('0x13')]({'raw':_0x446986[_0x43e7('0x14')]?_0x446986[_0x43e7('0x14')][_0x43e7('0x15')]===undefined?!![]:![]:!![],'where':_0x446986[_0x43e7('0x14')]?_0x446986[_0x43e7('0x14')][_0x43e7('0x16')]||null:null,'attributes':_0x446986['options']?_0x446986[_0x43e7('0x14')][_0x43e7('0x17')]||null:null,'include':_0x446986['options']?_0x446986[_0x43e7('0x14')][_0x43e7('0x18')]?_[_0x43e7('0x19')](_0x446986[_0x43e7('0x14')][_0x43e7('0x18')],function(_0x2f4cb4){return{'model':db[_0x2f4cb4['model']],'as':_0x2f4cb4['as'],'attributes':_0x2f4cb4[_0x43e7('0x17')],'include':_0x2f4cb4['include']?_['map'](_0x2f4cb4[_0x43e7('0x18')],function(_0x43f4ff){return{'model':db[_0x43f4ff['model']],'as':_0x43f4ff['as'],'attributes':_0x43f4ff[_0x43e7('0x17')],'include':_0x43f4ff['include']?_[_0x43e7('0x19')](_0x43f4ff['include'],function(_0x1af208){return{'model':db[_0x1af208[_0x43e7('0x1a')]],'as':_0x1af208['as'],'attributes':_0x1af208[_0x43e7('0x17')]};}):[]};}):[]};}):[]:[]})[_0x43e7('0x1b')](function(_0x51f4d7){logger['info'](_0x43e7('0x1c'),_0x446986);logger['debug'](_0x43e7('0x1c'),_0x446986,JSON[_0x43e7('0x1d')](_0x51f4d7));_0x9037d3(_0x51f4d7);})[_0x43e7('0x11')](function(_0xb1fc63){logger['error'](_0x43e7('0x1c'),_0xb1fc63[_0x43e7('0xf')],_0x446986);_0x140657(_0x1ca758[_0x43e7('0xd')](0x1f4,_0xb1fc63[_0x43e7('0xf')]));});});};
\ No newline at end of file
index 8633625..9ff4d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe39=['fetch','canUpdate','/pull','isAuthenticated','pull','/restart','/migrations','migrations','exports','express','../../components/auth/service','./version.controller','get','index','/fetch'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xbe39,0x153));var _0x9be3=function(_0x1ba725,_0x48a372){_0x1ba725=_0x1ba725-0x0;var _0x25d693=_0xbe39[_0x1ba725];return _0x25d693;};'use strict';var express=require(_0x9be3('0x0'));var router=express['Router']();var auth=require(_0x9be3('0x1'));var controller=require(_0x9be3('0x2'));router[_0x9be3('0x3')]('/',controller[_0x9be3('0x4')]);router[_0x9be3('0x3')](_0x9be3('0x5'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x9be3('0x6')]);router[_0x9be3('0x3')]('/reset',auth['isAuthenticated'](),auth[_0x9be3('0x7')](),controller['reset']);router[_0x9be3('0x3')](_0x9be3('0x8'),auth[_0x9be3('0x9')](),auth[_0x9be3('0x7')](),controller[_0x9be3('0xa')]);router[_0x9be3('0x3')](_0x9be3('0xb'),auth[_0x9be3('0x9')](),controller['restart']);router[_0x9be3('0x3')](_0x9be3('0xc'),controller[_0x9be3('0xd')]);module[_0x9be3('0xe')]=router;
\ No newline at end of file
+var _0x1f2d=['get','index','/fetch','isAuthenticated','canUpdate','fetch','/reset','/pull','pull','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller'];(function(_0x297d05,_0x43f75e){var _0x15b65c=function(_0x42effb){while(--_0x42effb){_0x297d05['push'](_0x297d05['shift']());}};_0x15b65c(++_0x43f75e);}(_0x1f2d,0x7a));var _0xd1f2=function(_0x486ab6,_0x257c0a){_0x486ab6=_0x486ab6-0x0;var _0x1ce5ea=_0x1f2d[_0x486ab6];return _0x1ce5ea;};'use strict';var express=require(_0xd1f2('0x0'));var router=express[_0xd1f2('0x1')]();var auth=require(_0xd1f2('0x2'));var controller=require(_0xd1f2('0x3'));router[_0xd1f2('0x4')]('/',controller[_0xd1f2('0x5')]);router[_0xd1f2('0x4')](_0xd1f2('0x6'),auth[_0xd1f2('0x7')](),auth[_0xd1f2('0x8')](),controller[_0xd1f2('0x9')]);router[_0xd1f2('0x4')](_0xd1f2('0xa'),auth[_0xd1f2('0x7')](),auth['canUpdate'](),controller['reset']);router['get'](_0xd1f2('0xb'),auth[_0xd1f2('0x7')](),auth[_0xd1f2('0x8')](),controller[_0xd1f2('0xc')]);router['get'](_0xd1f2('0xd'),auth['isAuthenticated'](),controller[_0xd1f2('0xe')]);router[_0xd1f2('0x4')](_0xd1f2('0xf'),controller[_0xd1f2('0x10')]);module[_0xd1f2('0x11')]=router;
\ No newline at end of file
index c930c6c..500b9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b94=['origin','error','info','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','pull','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','readdirSync','join','replace','push','length','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','migrations','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','../../config/environment','../../config/pm2','update','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json'];(function(_0x47fd4a,_0x2cf25c){var _0x86ecd6=function(_0x463dcf){while(--_0x463dcf){_0x47fd4a['push'](_0x47fd4a['shift']());}};_0x86ecd6(++_0x2cf25c);}(_0x1b94,0x8c));var _0x41b9=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x1b94[_0x46e363];return _0x3fb059;};'use strict';var Umzug=require(_0x41b9('0x0'));var path=require(_0x41b9('0x1'));var fs=require('fs');var _=require(_0x41b9('0x2'));var pkginfo=require(_0x41b9('0x3'))(module,_0x41b9('0x4'));var compareVersions=require('compare-versions');var exec=require('child_process')['exec'];var db=require('../../mysqldb')['db'];var config=require(_0x41b9('0x5'));var pm2=require(_0x41b9('0x6'));var logger=require('../../config/logger')(_0x41b9('0x7'));var git=require(_0x41b9('0x8'))(config[_0x41b9('0x9')]);exports[_0x41b9('0xa')]=function(_0x25dbac,_0x137978){var _0x4e0611={'current':module[_0x41b9('0xb')][_0x41b9('0x4')],'phonebar':0x2};if(_0x25dbac[_0x41b9('0xc')]&&_0x25dbac[_0x41b9('0xc')][_0x41b9('0xd')]){return git[_0x41b9('0xe')]()[_0x41b9('0xf')](function(_0x64b83a,_0x2eda68){_0x4e0611[_0x41b9('0xd')]=(_0x64b83a?module['exports']['version']:_0x2eda68['latest'])||_0x41b9('0x10');return _0x137978[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')](_0x4e0611);});}else{return _0x137978[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')](_0x4e0611);}};exports[_0x41b9('0xe')]=function(_0x2151b6,_0x5015c1){return git[_0x41b9('0xe')]([_0x41b9('0x13'),'master'],function(_0x524055){if(_0x524055){logger[_0x41b9('0x14')](_0x524055);return _0x5015c1[_0x41b9('0x11')](0x1f4)[_0x41b9('0x12')](_0x524055);}logger[_0x41b9('0x15')](_0x41b9('0x16'));return _0x5015c1[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x41b9('0x17')]=function(_0x3249ec,_0x34dc8a){return git[_0x41b9('0x17')]([_0x41b9('0x18'),_0x41b9('0x19')],function(_0x5ab57a){if(_0x5ab57a){logger[_0x41b9('0x14')](_0x5ab57a);return _0x34dc8a[_0x41b9('0x11')](0x1f4)[_0x41b9('0x12')](_0x5ab57a);}logger[_0x41b9('0x15')](_0x41b9('0x1a'));return _0x34dc8a[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')]({'output':'git\x20reset\x20--hard'});});};exports[_0x41b9('0x1b')]=function(_0x4a5aa1,_0xf37da6){exec('npm\x20install\x20--production',function(_0x15ac20,_0x2b4d9e,_0x1dafe3){logger[_0x41b9('0x15')](_0x2b4d9e);logger['info'](_0x1dafe3);if(_0x15ac20){logger[_0x41b9('0x14')](_0x15ac20);return _0xf37da6[_0x41b9('0x11')](0x1f4)[_0x41b9('0x12')](_0x15ac20);}return _0xf37da6['status'](0xc8)[_0x41b9('0x12')]({'output':_0x2b4d9e});});};exports[_0x41b9('0x1c')]=function(_0x24e6e5,_0x271505){return pm2[_0x41b9('0x1c')](_0x41b9('0x1d'))[_0x41b9('0x1e')](function(_0x4315e9){logger['info'](_0x41b9('0x1f'),_0x4315e9);return _0x271505['status'](0xc8)[_0x41b9('0x12')]({'output':_0x41b9('0x20')});})['catch'](function(_0x210729){logger[_0x41b9('0x14')](_0x210729);return _0x271505['status'](0x1f4)[_0x41b9('0x12')](_0x210729);});};exports['migrations']=function(_0x435a62,_0x227744){var _0x86066f=fs[_0x41b9('0x21')](path[_0x41b9('0x22')](config[_0x41b9('0x9')],'server','migrations'));var _0x4be718=[];for(var _0x36799b=0x0;_0x36799b<_0x86066f['length'];_0x36799b++){var _0x22dd31=_0x86066f[_0x36799b][_0x41b9('0x23')]('.js','');if(compareVersions(module[_0x41b9('0xb')][_0x41b9('0x4')],_0x22dd31)===-0x1){_0x4be718[_0x41b9('0x24')](_0x22dd31);}}if(_0x4be718[_0x41b9('0x25')]){var _0x297fac=_0x4be718[_0x41b9('0x26')](compareVersions);var _0x3314cd=new Umzug({'storage':_0x41b9('0x27'),'storageOptions':{'model':db[_0x41b9('0x28')],'modelName':_0x41b9('0x28'),'columnName':_0x41b9('0x4')},'migrations':{'params':[db[_0x41b9('0x27')][_0x41b9('0x29')](),db[_0x41b9('0x27')][_0x41b9('0x2a')],function(){throw new Error(_0x41b9('0x2b'));}],'path':path['join'](config['root'],_0x41b9('0x2c'),_0x41b9('0x2d')),'pattern':/\.js$/}});_0x3314cd['up']({'migrations':_[_0x41b9('0x2e')](_0x297fac,function(_0x195789){return _0x195789+'.js';})})['then'](function(){return _0x227744[_0x41b9('0x11')](0xc8)['json']({'output':_0x41b9('0x2f')+module[_0x41b9('0xb')][_0x41b9('0x4')]+_0x41b9('0x30')+_[_0x41b9('0x31')](_0x297fac),'migrations':_[_0x41b9('0x22')](_0x297fac)});})[_0x41b9('0x32')](function(_0x815b9b){if(_0x815b9b instanceof db[_0x41b9('0x27')][_0x41b9('0x33')]){return _0x227744[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x227744[_0x41b9('0x11')](0x1f4)[_0x41b9('0x12')](_0x815b9b);}});}else{return _0x227744[_0x41b9('0x11')](0xc8)[_0x41b9('0x12')]({'output':_0x41b9('0x34')});}};
\ No newline at end of file
+var _0xf34e=['origin','master','error','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','server','length','replace','.js','push','Migration','sequelize','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','compare-versions','../../config/pm2','../../config/logger','update','simple-git','root','exports','version','query','fetch','tags','latest','2.0.0','status','json'];(function(_0x178f9c,_0x9dc87a){var _0x413f4a=function(_0xfe1042){while(--_0xfe1042){_0x178f9c['push'](_0x178f9c['shift']());}};_0x413f4a(++_0x9dc87a);}(_0xf34e,0x1cb));var _0xef34=function(_0x170e1d,_0x2c0730){_0x170e1d=_0x170e1d-0x0;var _0xf6087e=_0xf34e[_0x170e1d];return _0xf6087e;};'use strict';var Umzug=require(_0xef34('0x0'));var path=require(_0xef34('0x1'));var fs=require('fs');var _=require(_0xef34('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0xef34('0x3'));var exec=require('child_process')['exec'];var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var pm2=require(_0xef34('0x4'));var logger=require(_0xef34('0x5'))(_0xef34('0x6'));var git=require(_0xef34('0x7'))(config[_0xef34('0x8')]);exports['index']=function(_0x271a1a,_0x309e65){var _0x4be387={'current':module[_0xef34('0x9')][_0xef34('0xa')],'phonebar':0x2};if(_0x271a1a[_0xef34('0xb')]&&_0x271a1a[_0xef34('0xb')]['latest']){return git[_0xef34('0xc')]()[_0xef34('0xd')](function(_0x201fb2,_0x225eca){_0x4be387[_0xef34('0xe')]=(_0x201fb2?module['exports'][_0xef34('0xa')]:_0x225eca[_0xef34('0xe')])||_0xef34('0xf');return _0x309e65[_0xef34('0x10')](0xc8)['json'](_0x4be387);});}else{return _0x309e65[_0xef34('0x10')](0xc8)[_0xef34('0x11')](_0x4be387);}};exports[_0xef34('0xc')]=function(_0x591488,_0x6cd2f8){return git[_0xef34('0xc')]([_0xef34('0x12'),_0xef34('0x13')],function(_0xe8df84){if(_0xe8df84){logger[_0xef34('0x14')](_0xe8df84);return _0x6cd2f8[_0xef34('0x10')](0x1f4)['json'](_0xe8df84);}logger['info']('git\x20fetch');return _0x6cd2f8[_0xef34('0x10')](0xc8)[_0xef34('0x11')]({'output':_0xef34('0x15')});});};exports[_0xef34('0x16')]=function(_0x414c73,_0x4acfd1){return git[_0xef34('0x16')]([_0xef34('0x17'),_0xef34('0x18')],function(_0x10c044){if(_0x10c044){logger[_0xef34('0x14')](_0x10c044);return _0x4acfd1[_0xef34('0x10')](0x1f4)[_0xef34('0x11')](_0x10c044);}logger[_0xef34('0x19')](_0xef34('0x1a'));return _0x4acfd1['status'](0xc8)[_0xef34('0x11')]({'output':_0xef34('0x1b')});});};exports['pull']=function(_0x221c22,_0x464e88){exec(_0xef34('0x1c'),function(_0x555323,_0x27c52d,_0x5daa25){logger[_0xef34('0x19')](_0x27c52d);logger[_0xef34('0x19')](_0x5daa25);if(_0x555323){logger[_0xef34('0x14')](_0x555323);return _0x464e88['status'](0x1f4)[_0xef34('0x11')](_0x555323);}return _0x464e88['status'](0xc8)[_0xef34('0x11')]({'output':_0x27c52d});});};exports['restart']=function(_0x5402a7,_0x380e88){return pm2[_0xef34('0x1d')](_0xef34('0x1e'))[_0xef34('0x1f')](function(_0x19f95d){logger['info'](_0xef34('0x20'),_0x19f95d);return _0x380e88['status'](0xc8)['json']({'output':_0xef34('0x21')});})[_0xef34('0x22')](function(_0x18a4ae){logger[_0xef34('0x14')](_0x18a4ae);return _0x380e88[_0xef34('0x10')](0x1f4)[_0xef34('0x11')](_0x18a4ae);});};exports[_0xef34('0x23')]=function(_0x5c089f,_0x40dcfc){var _0x3789c6=fs[_0xef34('0x24')](path['join'](config['root'],_0xef34('0x25'),_0xef34('0x23')));var _0x40d096=[];for(var _0x436cbe=0x0;_0x436cbe<_0x3789c6[_0xef34('0x26')];_0x436cbe++){var _0x32f71c=_0x3789c6[_0x436cbe][_0xef34('0x27')](_0xef34('0x28'),'');if(compareVersions(module[_0xef34('0x9')][_0xef34('0xa')],_0x32f71c)===-0x1){_0x40d096[_0xef34('0x29')](_0x32f71c);}}if(_0x40d096[_0xef34('0x26')]){var _0xb5acb2=_0x40d096['sort'](compareVersions);var _0x1c4516=new Umzug({'storage':'sequelize','storageOptions':{'model':db['Migration'],'modelName':_0xef34('0x2a'),'columnName':'version'},'migrations':{'params':[db[_0xef34('0x2b')]['getQueryInterface'](),db['sequelize'][_0xef34('0x2c')],function(){throw new Error(_0xef34('0x2d'));}],'path':path[_0xef34('0x2e')](config['root'],_0xef34('0x25'),_0xef34('0x23')),'pattern':/\.js$/}});_0x1c4516['up']({'migrations':_[_0xef34('0x2f')](_0xb5acb2,function(_0x39cac6){return _0x39cac6+_0xef34('0x28');})})['then'](function(){return _0x40dcfc[_0xef34('0x10')](0xc8)[_0xef34('0x11')]({'output':_0xef34('0x30')+module[_0xef34('0x9')][_0xef34('0xa')]+_0xef34('0x31')+_[_0xef34('0x32')](_0xb5acb2),'migrations':_[_0xef34('0x2e')](_0xb5acb2)});})[_0xef34('0x22')](function(_0x1beecd){if(_0x1beecd instanceof db[_0xef34('0x2b')][_0xef34('0x33')]){return _0x40dcfc[_0xef34('0x10')](0xc8)[_0xef34('0x11')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x40dcfc[_0xef34('0x10')](0x1f4)[_0xef34('0x11')](_0x1beecd);}});}else{return _0x40dcfc[_0xef34('0x10')](0xc8)['json']({'output':_0xef34('0x34')});}};
\ No newline at end of file
index 852d77f..536ffab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fe2=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer'];(function(_0x1c2ae5,_0x56e6a5){var _0x117d75=function(_0x501765){while(--_0x501765){_0x1c2ae5['push'](_0x1c2ae5['shift']());}};_0x117d75(++_0x56e6a5);}(_0x3fe2,0x1cd));var _0x23fe=function(_0x4b05d8,_0x28cca5){_0x4b05d8=_0x4b05d8-0x0;var _0x5e1b33=_0x3fe2[_0x4b05d8];return _0x5e1b33;};'use strict';var multer=require(_0x23fe('0x0'));var util=require(_0x23fe('0x1'));var path=require('path');var timeout=require(_0x23fe('0x2'));var express=require(_0x23fe('0x3'));var router=express[_0x23fe('0x4')]();var fs_extra=require(_0x23fe('0x5'));var auth=require(_0x23fe('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x23fe('0x7'));var controller=require('./voiceAgentReport.controller');router['get']('/',auth[_0x23fe('0x8')](),controller[_0x23fe('0x9')]);router[_0x23fe('0xa')](_0x23fe('0xb'),auth[_0x23fe('0x8')](),controller[_0x23fe('0xc')]);router[_0x23fe('0xa')](_0x23fe('0xd'),auth[_0x23fe('0x8')](),controller[_0x23fe('0xe')]);router[_0x23fe('0xf')]('/',auth['isAuthenticated'](),controller[_0x23fe('0x10')]);router[_0x23fe('0x11')](_0x23fe('0xd'),auth['isAuthenticated'](),controller[_0x23fe('0x12')]);router[_0x23fe('0x13')](_0x23fe('0xd'),auth[_0x23fe('0x8')](),controller[_0x23fe('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x49f8=['create','put','/:id','update','delete','destroy','util','path','express','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','show','post'];(function(_0xcce6cc,_0x30126f){var _0x4a0ca1=function(_0x1d635d){while(--_0x1d635d){_0xcce6cc['push'](_0xcce6cc['shift']());}};_0x4a0ca1(++_0x30126f);}(_0x49f8,0x114));var _0x849f=function(_0x4f4bb8,_0x32e15d){_0x4f4bb8=_0x4f4bb8-0x0;var _0xf6e91f=_0x49f8[_0x4f4bb8];return _0xf6e91f;};'use strict';var multer=require('multer');var util=require(_0x849f('0x0'));var path=require(_0x849f('0x1'));var timeout=require('connect-timeout');var express=require(_0x849f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x849f('0x3'));var controller=require(_0x849f('0x4'));router[_0x849f('0x5')]('/',auth[_0x849f('0x6')](),controller[_0x849f('0x7')]);router[_0x849f('0x5')](_0x849f('0x8'),auth[_0x849f('0x6')](),controller[_0x849f('0x9')]);router[_0x849f('0x5')]('/:id',auth[_0x849f('0x6')](),controller[_0x849f('0xa')]);router[_0x849f('0xb')]('/',auth[_0x849f('0x6')](),controller[_0x849f('0xc')]);router[_0x849f('0xd')](_0x849f('0xe'),auth[_0x849f('0x6')](),controller[_0x849f('0xf')]);router[_0x849f('0x10')](_0x849f('0xe'),auth['isAuthenticated'](),controller[_0x849f('0x11')]);module['exports']=router;
\ No newline at end of file
index 77a071b..e7d70cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x1daaa3,_0x18048f){var _0x386391=function(_0x4c1ef1){while(--_0x4c1ef1){_0x1daaa3['push'](_0x1daaa3['shift']());}};_0x386391(++_0x18048f);}(_0x77e6,0x1a6));var _0x677e=function(_0x564d5f,_0x5aded1){_0x564d5f=_0x564d5f-0x0;var _0x493559=_0x77e6[_0x564d5f];return _0x493559;};'use strict';var Sequelize=require(_0x677e('0x0'));module[_0x677e('0x1')]={'type':{'type':Sequelize[_0x677e('0x2')]},'uniqueid':{'type':Sequelize[_0x677e('0x2')]},'calleridnum':{'type':Sequelize[_0x677e('0x2')]},'calleridname':{'type':Sequelize[_0x677e('0x2')]},'queue':{'type':Sequelize[_0x677e('0x2')]},'interface':{'type':Sequelize[_0x677e('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x677e('0x3')]},'agentconnectAt':{'type':Sequelize[_0x677e('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x677e('0x3')]},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x677e('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x677e('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x677e('0x4')]},'agentacw':{'type':Sequelize[_0x677e('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x677e('0x4')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x677e('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x677e('0x4')]},'channelstatedesc':{'type':Sequelize[_0x677e('0x2')]},'connectedlinenum':{'type':Sequelize[_0x677e('0x2')]},'connectedlinename':{'type':Sequelize[_0x677e('0x2')]},'language':{'type':Sequelize[_0x677e('0x2')]},'accountcode':{'type':Sequelize[_0x677e('0x2')]},'context':{'type':Sequelize[_0x677e('0x2')]},'exten':{'type':Sequelize[_0x677e('0x2')]},'priority':{'type':Sequelize[_0x677e('0x2')]},'destchannel':{'type':Sequelize[_0x677e('0x2')]},'destchannelstate':{'type':Sequelize[_0x677e('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x677e('0x2')]},'destcalleridnum':{'type':Sequelize[_0x677e('0x2')]},'destcalleridname':{'type':Sequelize[_0x677e('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x677e('0x2')]},'destcontext':{'type':Sequelize[_0x677e('0x2')]},'destexten':{'type':Sequelize[_0x677e('0x2')]},'destpriority':{'type':Sequelize[_0x677e('0x2')]},'destuniqueid':{'type':Sequelize[_0x677e('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x677e('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x677e('0x2')]},'transfer':{'type':Sequelize[_0x677e('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x677e('0x2')],'comment':_0x677e('0x6')},'transferexten':{'type':Sequelize[_0x677e('0x2')]},'transferuniqueid':{'type':Sequelize[_0x677e('0x2')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x659c=['sequelize','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x6d6a66,_0x2924af){var _0x11eb6e=function(_0x52e55a){while(--_0x52e55a){_0x6d6a66['push'](_0x6d6a66['shift']());}};_0x11eb6e(++_0x2924af);}(_0x659c,0x1aa));var _0xc659=function(_0x5cf99f,_0x450e05){_0x5cf99f=_0x5cf99f-0x0;var _0xeedf3a=_0x659c[_0x5cf99f];return _0xeedf3a;};'use strict';var Sequelize=require(_0xc659('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xc659('0x1')]},'calleridnum':{'type':Sequelize[_0xc659('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xc659('0x1')]},'interface':{'type':Sequelize[_0xc659('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xc659('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xc659('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0xc659('0x2')]},'agentdumpAt':{'type':Sequelize[_0xc659('0x2')]},'holdtime':{'type':Sequelize[_0xc659('0x3')]},'agentcomplete':{'type':Sequelize[_0xc659('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xc659('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0xc659('0x1')]},'channel':{'type':Sequelize[_0xc659('0x1')]},'channelstate':{'type':Sequelize[_0xc659('0x3')]},'channelstatedesc':{'type':Sequelize[_0xc659('0x1')]},'connectedlinenum':{'type':Sequelize[_0xc659('0x1')]},'connectedlinename':{'type':Sequelize[_0xc659('0x1')]},'language':{'type':Sequelize[_0xc659('0x1')]},'accountcode':{'type':Sequelize[_0xc659('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xc659('0x1')]},'priority':{'type':Sequelize[_0xc659('0x1')]},'destchannel':{'type':Sequelize[_0xc659('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xc659('0x1')]},'destcalleridname':{'type':Sequelize[_0xc659('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xc659('0x1')]},'destlanguage':{'type':Sequelize[_0xc659('0x1')]},'destaccountcode':{'type':Sequelize[_0xc659('0x1')]},'destcontext':{'type':Sequelize[_0xc659('0x1')]},'destexten':{'type':Sequelize[_0xc659('0x1')]},'destpriority':{'type':Sequelize[_0xc659('0x1')]},'destuniqueid':{'type':Sequelize[_0xc659('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xc659('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0xc659('0x1')]},'transfer':{'type':Sequelize[_0xc659('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xc659('0x5')},'transferexten':{'type':Sequelize[_0xc659('0x1')]},'transferuniqueid':{'type':Sequelize[_0xc659('0x1')]},'agententerreason':{'type':Sequelize[_0xc659('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index a1ee9dd..03149de 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(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 da1c155..b7aae0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3148=['util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','report_agent','destuniqueid','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3148,0x1d3));var _0x8314=function(_0x3e6141,_0x4e159d){_0x3e6141=_0x3e6141-0x0;var _0x3d207=_0x3148[_0x3e6141];return _0x3d207;};'use strict';var _=require(_0x8314('0x0'));var util=require(_0x8314('0x1'));var logger=require('../../config/logger')(_0x8314('0x2'));var moment=require(_0x8314('0x3'));var BPromise=require(_0x8314('0x4'));var rp=require(_0x8314('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8314('0x6'));var config=require(_0x8314('0x7'));var attributes=require(_0x8314('0x8'));module[_0x8314('0x9')]=function(_0x18a30b,_0x9cb271){return _0x18a30b[_0x8314('0xa')]('VoiceAgentReport',attributes,{'tableName':_0x8314('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x8314('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c88=['define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports'];(function(_0x3ab46c,_0x4d26cc){var _0x2c7e90=function(_0x29e83d){while(--_0x29e83d){_0x3ab46c['push'](_0x3ab46c['shift']());}};_0x2c7e90(++_0x4d26cc);}(_0x1c88,0x1a9));var _0x81c8=function(_0x3b5ad9,_0x223867){_0x3b5ad9=_0x3b5ad9-0x0;var _0x611ae9=_0x1c88[_0x3b5ad9];return _0x611ae9;};'use strict';var _=require(_0x81c8('0x0'));var util=require('util');var logger=require(_0x81c8('0x1'))(_0x81c8('0x2'));var moment=require(_0x81c8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x81c8('0x4'));var rimraf=require(_0x81c8('0x5'));var config=require(_0x81c8('0x6'));var attributes=require(_0x81c8('0x7'));module[_0x81c8('0x8')]=function(_0x3e5721,_0x3f4e27){return _0x3e5721[_0x81c8('0x9')](_0x81c8('0xa'),attributes,{'tableName':_0x81c8('0xb'),'paranoid':![],'indexes':[{'fields':[_0x81c8('0xc'),_0x81c8('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 25b68a5..444fa31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10e6=['rpc','jayson/promise','client','http','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','CreateVoiceAgentReport','create','options','raw','UpdateVoiceAgentReport','update','body','where','attributes','limit','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x1977c2,_0x19446a){var _0x1f591c=function(_0x33d69d){while(--_0x33d69d){_0x1977c2['push'](_0x1977c2['shift']());}};_0x1f591c(++_0x19446a);}(_0x10e6,0x1cb));var _0x610e=function(_0x2053ea,_0x1ab2d4){_0x2053ea=_0x2053ea-0x0;var _0x2232c4=_0x10e6[_0x2053ea];return _0x2232c4;};'use strict';var _=require(_0x610e('0x0'));var util=require(_0x610e('0x1'));var moment=require(_0x610e('0x2'));var BPromise=require(_0x610e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x610e('0x4'));var db=require(_0x610e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x610e('0x6'));var config=require('../../config/environment');var jayson=require(_0x610e('0x7'));var client=jayson[_0x610e('0x8')][_0x610e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48b103,_0x258b32,_0x42db71){return new BPromise(function(_0x9dc7aa,_0x431959){return client[_0x610e('0xa')](_0x48b103,_0x42db71)[_0x610e('0xb')](function(_0x199261){logger[_0x610e('0xc')](_0x610e('0xd'),_0x258b32,_0x610e('0xe'));logger[_0x610e('0xf')](_0x610e('0x10'),_0x258b32,_0x610e('0xe'),JSON[_0x610e('0x11')](_0x199261));if(_0x199261['error']){if(_0x199261['error']['code']===0x1f4){logger[_0x610e('0x12')](_0x610e('0xd'),_0x258b32,_0x199261[_0x610e('0x12')][_0x610e('0x13')]);return _0x431959(_0x199261[_0x610e('0x12')]['message']);}logger[_0x610e('0x12')](_0x610e('0xd'),_0x258b32,_0x199261[_0x610e('0x12')][_0x610e('0x13')]);return _0x9dc7aa(_0x199261['error'][_0x610e('0x13')]);}else{logger[_0x610e('0xc')](_0x610e('0xd'),_0x258b32,'request\x20sent');_0x9dc7aa(_0x199261['result'][_0x610e('0x13')]);}})['catch'](function(_0x29efac){logger[_0x610e('0x12')](_0x610e('0xd'),_0x258b32,_0x29efac);_0x431959(_0x29efac);});});}exports[_0x610e('0x14')]=function(_0x3bcaf4){var _0x4c0bdd=this;return new Promise(function(_0x518565,_0x2269a0){return db['VoiceAgentReport'][_0x610e('0x15')](_0x3bcaf4['body'],{'raw':_0x3bcaf4[_0x610e('0x16')]?_0x3bcaf4[_0x610e('0x16')][_0x610e('0x17')]===undefined?!![]:![]:!![]})[_0x610e('0xb')](function(_0x44fe6a){logger[_0x610e('0xc')](_0x610e('0x14'),_0x3bcaf4);logger[_0x610e('0xf')]('CreateVoiceAgentReport',_0x3bcaf4,JSON[_0x610e('0x11')](_0x44fe6a));_0x518565(_0x44fe6a);})['catch'](function(_0x299f99){logger[_0x610e('0x12')]('CreateVoiceAgentReport',_0x299f99[_0x610e('0x13')],_0x3bcaf4);_0x2269a0(_0x4c0bdd[_0x610e('0x12')](0x1f4,_0x299f99['message']));});});};exports[_0x610e('0x18')]=function(_0x280993){var _0x1b3275=this;return new Promise(function(_0x26fbce,_0xb2de14){return db['VoiceAgentReport'][_0x610e('0x19')](_0x280993[_0x610e('0x1a')],{'raw':_0x280993['options']?_0x280993[_0x610e('0x16')][_0x610e('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x280993[_0x610e('0x16')]?_0x280993[_0x610e('0x16')][_0x610e('0x1b')]||null:null,'attributes':_0x280993['options']?_0x280993['options'][_0x610e('0x1c')]||null:null,'limit':_0x280993[_0x610e('0x16')]?_0x280993[_0x610e('0x16')][_0x610e('0x1d')]||null:null})['then'](function(_0xc7dc59){logger[_0x610e('0xc')](_0x610e('0x18'),_0x280993);logger['debug'](_0x610e('0x18'),_0x280993,JSON[_0x610e('0x11')](_0xc7dc59));_0x26fbce(_0xc7dc59);})[_0x610e('0x1e')](function(_0x374d4a){logger['error'](_0x610e('0x18'),_0x374d4a['message'],_0x280993);_0xb2de14(_0x1b3275['error'](0x1f4,_0x374d4a[_0x610e('0x13')]));});});};
\ No newline at end of file
+var _0x6f4e=['VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateVoiceAgentReport','options','raw','stringify','catch','UpdateVoiceAgentReport','VoiceAgentReport','update','body','where','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','VoiceAgentReport,\x20%s,\x20%s','debug'];(function(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0x6f4e,0x84));var _0xe6f4=function(_0x1fe360,_0x402c12){_0x1fe360=_0x1fe360-0x0;var _0x41ac45=_0x6f4e[_0x1fe360];return _0x41ac45;};'use strict';var _=require(_0xe6f4('0x0'));var util=require('util');var moment=require(_0xe6f4('0x1'));var BPromise=require(_0xe6f4('0x2'));var rs=require(_0xe6f4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe6f4('0x4'));var logger=require(_0xe6f4('0x5'))(_0xe6f4('0x6'));var config=require(_0xe6f4('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4228db,_0x51f149,_0x1a4dd1){return new BPromise(function(_0x589d75,_0x5c9709){return client[_0xe6f4('0x8')](_0x4228db,_0x1a4dd1)[_0xe6f4('0x9')](function(_0x541deb){logger[_0xe6f4('0xa')](_0xe6f4('0xb'),_0x51f149,'request\x20sent');logger[_0xe6f4('0xc')](_0xe6f4('0xd'),_0x51f149,_0xe6f4('0xe'),JSON['stringify'](_0x541deb));if(_0x541deb[_0xe6f4('0xf')]){if(_0x541deb[_0xe6f4('0xf')][_0xe6f4('0x10')]===0x1f4){logger['error'](_0xe6f4('0xb'),_0x51f149,_0x541deb[_0xe6f4('0xf')]['message']);return _0x5c9709(_0x541deb[_0xe6f4('0xf')][_0xe6f4('0x11')]);}logger[_0xe6f4('0xf')](_0xe6f4('0xb'),_0x51f149,_0x541deb['error'][_0xe6f4('0x11')]);return _0x589d75(_0x541deb[_0xe6f4('0xf')][_0xe6f4('0x11')]);}else{logger[_0xe6f4('0xa')](_0xe6f4('0xb'),_0x51f149,_0xe6f4('0xe'));_0x589d75(_0x541deb[_0xe6f4('0x12')]['message']);}})['catch'](function(_0x4e3fc6){logger[_0xe6f4('0xf')](_0xe6f4('0xb'),_0x51f149,_0x4e3fc6);_0x5c9709(_0x4e3fc6);});});}exports[_0xe6f4('0x13')]=function(_0x5f008b){var _0x4c8b36=this;return new Promise(function(_0x426369,_0x509841){return db['VoiceAgentReport']['create'](_0x5f008b['body'],{'raw':_0x5f008b[_0xe6f4('0x14')]?_0x5f008b[_0xe6f4('0x14')][_0xe6f4('0x15')]===undefined?!![]:![]:!![]})['then'](function(_0x30a913){logger[_0xe6f4('0xa')](_0xe6f4('0x13'),_0x5f008b);logger['debug']('CreateVoiceAgentReport',_0x5f008b,JSON[_0xe6f4('0x16')](_0x30a913));_0x426369(_0x30a913);})[_0xe6f4('0x17')](function(_0x433079){logger[_0xe6f4('0xf')](_0xe6f4('0x13'),_0x433079[_0xe6f4('0x11')],_0x5f008b);_0x509841(_0x4c8b36[_0xe6f4('0xf')](0x1f4,_0x433079[_0xe6f4('0x11')]));});});};exports[_0xe6f4('0x18')]=function(_0x11234a){var _0x54e1c0=this;return new Promise(function(_0x1957b1,_0x339978){return db[_0xe6f4('0x19')][_0xe6f4('0x1a')](_0x11234a[_0xe6f4('0x1b')],{'raw':_0x11234a[_0xe6f4('0x14')]?_0x11234a[_0xe6f4('0x14')][_0xe6f4('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11234a[_0xe6f4('0x14')]?_0x11234a['options'][_0xe6f4('0x1c')]||null:null,'attributes':_0x11234a[_0xe6f4('0x14')]?_0x11234a[_0xe6f4('0x14')]['attributes']||null:null,'limit':_0x11234a[_0xe6f4('0x14')]?_0x11234a[_0xe6f4('0x14')]['limit']||null:null})['then'](function(_0x5d996b){logger[_0xe6f4('0xa')](_0xe6f4('0x18'),_0x11234a);logger['debug']('UpdateVoiceAgentReport',_0x11234a,JSON[_0xe6f4('0x16')](_0x5d996b));_0x1957b1(_0x5d996b);})[_0xe6f4('0x17')](function(_0x4b2746){logger[_0xe6f4('0xf')](_0xe6f4('0x18'),_0x4b2746[_0xe6f4('0x11')],_0x11234a);_0x339978(_0x54e1c0['error'](0x1f4,_0x4b2746[_0xe6f4('0x11')]));});});};
\ No newline at end of file
index 52acf1c..2aa9591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72b1=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path'];(function(_0x32907e,_0x1668e7){var _0x378d6a=function(_0x3e7174){while(--_0x3e7174){_0x32907e['push'](_0x32907e['shift']());}};_0x378d6a(++_0x1668e7);}(_0x72b1,0x16e));var _0x172b=function(_0x402a50,_0x4fdc76){_0x402a50=_0x402a50-0x0;var _0x1c23ec=_0x72b1[_0x402a50];return _0x1c23ec;};'use strict';var multer=require(_0x172b('0x0'));var util=require('util');var path=require(_0x172b('0x1'));var timeout=require(_0x172b('0x2'));var express=require(_0x172b('0x3'));var router=express[_0x172b('0x4')]();var fs_extra=require(_0x172b('0x5'));var auth=require(_0x172b('0x6'));var interaction=require(_0x172b('0x7'));var config=require('../../config/environment');var controller=require(_0x172b('0x8'));router[_0x172b('0x9')]('/',auth[_0x172b('0xa')](),controller[_0x172b('0xb')]);router['get'](_0x172b('0xc'),auth['isAuthenticated'](),controller[_0x172b('0xd')]);router['get'](_0x172b('0xe'),auth[_0x172b('0xa')](),controller[_0x172b('0xf')]);router[_0x172b('0x10')]('/',auth['isAuthenticated'](),controller[_0x172b('0x11')]);router[_0x172b('0x12')](_0x172b('0xe'),auth[_0x172b('0xa')](),controller[_0x172b('0x13')]);router[_0x172b('0x14')](_0x172b('0xe'),auth['isAuthenticated'](),controller[_0x172b('0x15')]);module[_0x172b('0x16')]=router;
\ No newline at end of file
+var _0x84e7=['destroy','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','describe','/:id','show','post','put','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x84e7,0x122));var _0x784e=function(_0x56a2f6,_0x3f6d06){_0x56a2f6=_0x56a2f6-0x0;var _0x4f2b3c=_0x84e7[_0x56a2f6];return _0x4f2b3c;};'use strict';var multer=require('multer');var util=require(_0x784e('0x0'));var path=require(_0x784e('0x1'));var timeout=require('connect-timeout');var express=require(_0x784e('0x2'));var router=express[_0x784e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x784e('0x4'));var interaction=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var controller=require(_0x784e('0x7'));router[_0x784e('0x8')]('/',auth[_0x784e('0x9')](),controller['index']);router[_0x784e('0x8')]('/describe',auth[_0x784e('0x9')](),controller[_0x784e('0xa')]);router['get'](_0x784e('0xb'),auth[_0x784e('0x9')](),controller[_0x784e('0xc')]);router[_0x784e('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x784e('0xe')](_0x784e('0xb'),auth[_0x784e('0x9')](),controller[_0x784e('0xf')]);router['delete'](_0x784e('0xb'),auth[_0x784e('0x9')](),controller[_0x784e('0x10')]);module[_0x784e('0x11')]=router;
\ No newline at end of file
index 39f413f..19fa3cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f63=['TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal','outbound','inbound-fax','dialer'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x5f63,0x117));var _0x35f6=function(_0x658d53,_0x12ec8c){_0x658d53=_0x658d53-0x0;var _0x1e16de=_0x5f63[_0x658d53];return _0x1e16de;};'use strict';var Sequelize=require(_0x35f6('0x0'));module[_0x35f6('0x1')]={'uniqueid':{'type':Sequelize[_0x35f6('0x2')]},'type':{'type':Sequelize[_0x35f6('0x3')](_0x35f6('0x4'),_0x35f6('0x5'),_0x35f6('0x6'),_0x35f6('0x7'),'outbound-fax',_0x35f6('0x8'))},'tag':{'type':Sequelize[_0x35f6('0x2')]},'accountcode':{'type':Sequelize[_0x35f6('0x2')]},'source':{'type':Sequelize[_0x35f6('0x2')]},'destination':{'type':Sequelize[_0x35f6('0x2')]},'destinationcontext':{'type':Sequelize[_0x35f6('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x35f6('0x2')]},'destinationchannel':{'type':Sequelize[_0x35f6('0x2')]},'lastapplication':{'type':Sequelize[_0x35f6('0x2')]},'lastdata':{'type':Sequelize[_0x35f6('0x9')]},'starttime':{'type':Sequelize[_0x35f6('0xa')]},'systemanswertime':{'type':Sequelize[_0x35f6('0xa')]},'answertime':{'type':Sequelize[_0x35f6('0xa')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x35f6('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x35f6('0x2')]},'amaflags':{'type':Sequelize[_0x35f6('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x35f6('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x35f6('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x35f6('0x2')]},'note':{'type':Sequelize[_0x35f6('0x2')]},'prefix':{'type':Sequelize[_0x35f6('0x2')]},'routeid':{'type':Sequelize[_0x35f6('0xb')]},'sipcallid':{'type':Sequelize[_0x35f6('0x2')]}};
\ No newline at end of file
+var _0x71af=['internal','outbound','inbound-fax','outbound-fax','STRING','TEXT','DATE','INTEGER','sequelize','exports','ENUM','inbound'];(function(_0x15d2b9,_0x2a02c6){var _0x39e569=function(_0x92f609){while(--_0x92f609){_0x15d2b9['push'](_0x15d2b9['shift']());}};_0x39e569(++_0x2a02c6);}(_0x71af,0x194));var _0xf71a=function(_0x2f50d7,_0x437f5b){_0x2f50d7=_0x2f50d7-0x0;var _0x24faf6=_0x71af[_0x2f50d7];return _0x24faf6;};'use strict';var Sequelize=require(_0xf71a('0x0'));module[_0xf71a('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xf71a('0x2')](_0xf71a('0x3'),_0xf71a('0x4'),_0xf71a('0x5'),_0xf71a('0x6'),_0xf71a('0x7'),'dialer')},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xf71a('0x8')]},'source':{'type':Sequelize[_0xf71a('0x8')]},'destination':{'type':Sequelize[_0xf71a('0x8')]},'destinationcontext':{'type':Sequelize[_0xf71a('0x8')]},'callerid':{'type':Sequelize[_0xf71a('0x8')]},'channel':{'type':Sequelize[_0xf71a('0x8')]},'destinationchannel':{'type':Sequelize[_0xf71a('0x8')]},'lastapplication':{'type':Sequelize[_0xf71a('0x8')]},'lastdata':{'type':Sequelize[_0xf71a('0x9')]},'starttime':{'type':Sequelize[_0xf71a('0xa')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xf71a('0xa')]},'endtime':{'type':Sequelize[_0xf71a('0xa')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xf71a('0xb')]},'mohtime':{'type':Sequelize[_0xf71a('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xf71a('0x8')]},'amaflags':{'type':Sequelize[_0xf71a('0x8')]},'userfield':{'type':Sequelize[_0xf71a('0x8')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0xf71a('0x8')]},'userThirdDisposition':{'type':Sequelize[_0xf71a('0x8')]},'note':{'type':Sequelize[_0xf71a('0x8')]},'prefix':{'type':Sequelize[_0xf71a('0x8')]},'routeid':{'type':Sequelize[_0xf71a('0xb')]},'sipcallid':{'type':Sequelize[_0xf71a('0x8')]}};
\ No newline at end of file
index 7f33f0b..40af4e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x1f8cc2,_0x212880){var _0x2025e5=function(_0xa0f790){while(--_0xa0f790){_0x1f8cc2['push'](_0x1f8cc2['shift']());}};_0x2025e5(++_0x212880);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5c84a6,_0x321f95){_0x5c84a6=_0x5c84a6-0x0;var _0xb8c5f0=_0x0b0e[_0x5c84a6];return _0xb8c5f0;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
+var _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(_0x574019,_0x3c8054){_0x574019=_0x574019-0x0;var _0x2eceed=_0x2032[_0x574019];return _0x2eceed;};'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
index 8ed04d4..7e66e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be7=['../../config/environment','./voiceCallReport.attributes','VoiceCallReport','report_call','lodash','api','moment','bluebird','path'];(function(_0x167f65,_0x5966d4){var _0x4d64d1=function(_0x410443){while(--_0x410443){_0x167f65['push'](_0x167f65['shift']());}};_0x4d64d1(++_0x5966d4);}(_0x8be7,0x82));var _0x78be=function(_0x1dc634,_0x7f73e3){_0x1dc634=_0x1dc634-0x0;var _0x40b4dc=_0x8be7[_0x1dc634];return _0x40b4dc;};'use strict';var _=require(_0x78be('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x78be('0x1'));var moment=require(_0x78be('0x2'));var BPromise=require(_0x78be('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x78be('0x4'));var rimraf=require('rimraf');var config=require(_0x78be('0x5'));var attributes=require(_0x78be('0x6'));module['exports']=function(_0x69a7f2,_0x2ca988){return _0x69a7f2['define'](_0x78be('0x7'),attributes,{'tableName':_0x78be('0x8'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8653=['api','moment','request-promise','../../config/environment','exports','define','uniqueid'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8653,0x17a));var _0x3865=function(_0x33a29d,_0x331bbf){_0x33a29d=_0x33a29d-0x0;var _0xdbf71b=_0x8653[_0x33a29d];return _0xdbf71b;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x3865('0x0'));var moment=require(_0x3865('0x1'));var BPromise=require('bluebird');var rp=require(_0x3865('0x2'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3865('0x3'));var attributes=require('./voiceCallReport.attributes');module[_0x3865('0x4')]=function(_0x4bf384,_0x141e71){return _0x4bf384[_0x3865('0x5')]('VoiceCallReport',attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x3865('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
index 4a4dada..ab1876a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa4=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VoiceCallReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','where','attributes','limit','include','map','model','then','create','body','raw','debug','CreateVoiceCallReport','UpdateVoiceCallReport','update','lodash','util','randomstring','../../mysqldb','../../config/utils'];(function(_0x297bb0,_0x48c510){var _0x10023c=function(_0x5dc7bb){while(--_0x5dc7bb){_0x297bb0['push'](_0x297bb0['shift']());}};_0x10023c(++_0x48c510);}(_0x5aa4,0x133));var _0x45aa=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x5aa4[_0x1ccdf7];return _0x52a0ae;};'use strict';var _=require(_0x45aa('0x0'));var util=require(_0x45aa('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x45aa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45aa('0x3'))['db'];var utils=require(_0x45aa('0x4'));var logger=require(_0x45aa('0x5'))(_0x45aa('0x6'));var config=require(_0x45aa('0x7'));var jayson=require(_0x45aa('0x8'));var client=jayson[_0x45aa('0x9')][_0x45aa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ce855,_0x48b863,_0x3f3471){return new BPromise(function(_0x3d6aba,_0x1be568){return client[_0x45aa('0xb')](_0x4ce855,_0x3f3471)['then'](function(_0x1c64de){logger['info'](_0x45aa('0xc'),_0x48b863,_0x45aa('0xd'));logger['debug']('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x48b863,_0x45aa('0xd'),JSON[_0x45aa('0xe')](_0x1c64de));if(_0x1c64de[_0x45aa('0xf')]){if(_0x1c64de[_0x45aa('0xf')][_0x45aa('0x10')]===0x1f4){logger['error'](_0x45aa('0xc'),_0x48b863,_0x1c64de['error'][_0x45aa('0x11')]);return _0x1be568(_0x1c64de[_0x45aa('0xf')]['message']);}logger[_0x45aa('0xf')](_0x45aa('0xc'),_0x48b863,_0x1c64de['error'][_0x45aa('0x11')]);return _0x3d6aba(_0x1c64de[_0x45aa('0xf')][_0x45aa('0x11')]);}else{logger[_0x45aa('0x12')](_0x45aa('0xc'),_0x48b863,_0x45aa('0xd'));_0x3d6aba(_0x1c64de[_0x45aa('0x13')][_0x45aa('0x11')]);}})[_0x45aa('0x14')](function(_0x497ea0){logger[_0x45aa('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x48b863,_0x497ea0);_0x1be568(_0x497ea0);});});}exports[_0x45aa('0x15')]=function(_0x6c2afd){var _0x530c5a=this;return new Promise(function(_0x2e1ff6,_0x3ab0bd){return db[_0x45aa('0x16')][_0x45aa('0x17')]({'raw':_0x6c2afd[_0x45aa('0x18')]?_0x6c2afd['options']['raw']===undefined?!![]:![]:!![],'where':_0x6c2afd[_0x45aa('0x18')]?_0x6c2afd[_0x45aa('0x18')][_0x45aa('0x19')]||null:null,'attributes':_0x6c2afd[_0x45aa('0x18')]?_0x6c2afd['options'][_0x45aa('0x1a')]||null:null,'limit':_0x6c2afd[_0x45aa('0x18')]?_0x6c2afd[_0x45aa('0x18')][_0x45aa('0x1b')]||null:null,'include':_0x6c2afd['options']?_0x6c2afd[_0x45aa('0x18')][_0x45aa('0x1c')]?_[_0x45aa('0x1d')](_0x6c2afd['options'][_0x45aa('0x1c')],function(_0x2c7986){return{'model':db[_0x2c7986[_0x45aa('0x1e')]],'as':_0x2c7986['as'],'attributes':_0x2c7986[_0x45aa('0x1a')],'include':_0x2c7986[_0x45aa('0x1c')]?_[_0x45aa('0x1d')](_0x2c7986[_0x45aa('0x1c')],function(_0x179dd2){return{'model':db[_0x179dd2['model']],'as':_0x179dd2['as'],'attributes':_0x179dd2[_0x45aa('0x1a')],'include':_0x179dd2[_0x45aa('0x1c')]?_[_0x45aa('0x1d')](_0x179dd2[_0x45aa('0x1c')],function(_0x1d9d16){return{'model':db[_0x1d9d16[_0x45aa('0x1e')]],'as':_0x1d9d16['as'],'attributes':_0x1d9d16['attributes']};}):[]};}):[]};}):[]:[]})[_0x45aa('0x1f')](function(_0x13a0ab){logger[_0x45aa('0x12')](_0x45aa('0x15'),_0x6c2afd);logger['debug'](_0x45aa('0x15'),_0x6c2afd,JSON[_0x45aa('0xe')](_0x13a0ab));_0x2e1ff6(_0x13a0ab);})[_0x45aa('0x14')](function(_0x4929c4){logger[_0x45aa('0xf')]('GetVoiceCallReport',_0x4929c4[_0x45aa('0x11')],_0x6c2afd);_0x3ab0bd(_0x530c5a[_0x45aa('0xf')](0x1f4,_0x4929c4[_0x45aa('0x11')]));});});};exports['CreateVoiceCallReport']=function(_0x4084d4){var _0x38ef6f=this;return new Promise(function(_0x1a7228,_0x43cb27){return db['VoiceCallReport'][_0x45aa('0x20')](_0x4084d4[_0x45aa('0x21')],{'raw':_0x4084d4[_0x45aa('0x18')]?_0x4084d4[_0x45aa('0x18')][_0x45aa('0x22')]===undefined?!![]:![]:!![]})[_0x45aa('0x1f')](function(_0x30f28e){logger[_0x45aa('0x12')]('CreateVoiceCallReport',_0x4084d4);logger[_0x45aa('0x23')](_0x45aa('0x24'),_0x4084d4,JSON[_0x45aa('0xe')](_0x30f28e));_0x1a7228(_0x30f28e);})[_0x45aa('0x14')](function(_0x3df7de){logger[_0x45aa('0xf')](_0x45aa('0x24'),_0x3df7de[_0x45aa('0x11')],_0x4084d4);_0x43cb27(_0x38ef6f['error'](0x1f4,_0x3df7de[_0x45aa('0x11')]));});});};exports[_0x45aa('0x25')]=function(_0x292001){var _0x1fcbcd=this;return new Promise(function(_0x8d6464,_0x2072c9){return db['VoiceCallReport'][_0x45aa('0x26')](_0x292001[_0x45aa('0x21')],{'raw':_0x292001[_0x45aa('0x18')]?_0x292001['options'][_0x45aa('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x292001[_0x45aa('0x18')]?_0x292001[_0x45aa('0x18')][_0x45aa('0x19')]||null:null,'attributes':_0x292001['options']?_0x292001[_0x45aa('0x18')][_0x45aa('0x1a')]||null:null,'limit':_0x292001[_0x45aa('0x18')]?_0x292001[_0x45aa('0x18')][_0x45aa('0x1b')]||null:null})[_0x45aa('0x1f')](function(_0x5d6980){logger[_0x45aa('0x12')](_0x45aa('0x25'),_0x292001);logger[_0x45aa('0x23')]('UpdateVoiceCallReport',_0x292001,JSON[_0x45aa('0xe')](_0x5d6980));_0x8d6464(_0x5d6980);})[_0x45aa('0x14')](function(_0x18e29f){logger[_0x45aa('0xf')]('UpdateVoiceCallReport',_0x18e29f[_0x45aa('0x11')],_0x292001);_0x2072c9(_0x1fcbcd[_0x45aa('0xf')](0x1f4,_0x18e29f[_0x45aa('0x11')]));});});};
\ No newline at end of file
+var _0xc690=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','limit','include','map','model','CreateVoiceCallReport','create','body','then','UpdateVoiceCallReport','update','where','attributes','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request'];(function(_0x2c7c48,_0x12f0da){var _0x1711f6=function(_0x2201f8){while(--_0x2201f8){_0x2c7c48['push'](_0x2c7c48['shift']());}};_0x1711f6(++_0x12f0da);}(_0xc690,0x8a));var _0x0c69=function(_0x55b0a1,_0x1ee85c){_0x55b0a1=_0x55b0a1-0x0;var _0x2904e1=_0xc690[_0x55b0a1];return _0x2904e1;};'use strict';var _=require('lodash');var util=require(_0x0c69('0x0'));var moment=require(_0x0c69('0x1'));var BPromise=require(_0x0c69('0x2'));var rs=require(_0x0c69('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c69('0x4'))['db'];var utils=require(_0x0c69('0x5'));var logger=require(_0x0c69('0x6'))(_0x0c69('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x0c69('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4a63df,_0x7e9817,_0x2b7044){return new BPromise(function(_0x21f51b,_0x27bf27){return client[_0x0c69('0x9')](_0x4a63df,_0x2b7044)['then'](function(_0x454aea){logger[_0x0c69('0xa')](_0x0c69('0xb'),_0x7e9817,_0x0c69('0xc'));logger[_0x0c69('0xd')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x7e9817,_0x0c69('0xc'),JSON[_0x0c69('0xe')](_0x454aea));if(_0x454aea[_0x0c69('0xf')]){if(_0x454aea[_0x0c69('0xf')][_0x0c69('0x10')]===0x1f4){logger[_0x0c69('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x7e9817,_0x454aea[_0x0c69('0xf')][_0x0c69('0x11')]);return _0x27bf27(_0x454aea[_0x0c69('0xf')][_0x0c69('0x11')]);}logger[_0x0c69('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x7e9817,_0x454aea[_0x0c69('0xf')][_0x0c69('0x11')]);return _0x21f51b(_0x454aea[_0x0c69('0xf')][_0x0c69('0x11')]);}else{logger['info'](_0x0c69('0xb'),_0x7e9817,_0x0c69('0xc'));_0x21f51b(_0x454aea[_0x0c69('0x12')]['message']);}})[_0x0c69('0x13')](function(_0x224eea){logger[_0x0c69('0xf')](_0x0c69('0xb'),_0x7e9817,_0x224eea);_0x27bf27(_0x224eea);});});}exports[_0x0c69('0x14')]=function(_0x4b7677){var _0x4ff248=this;return new Promise(function(_0x2efe2a,_0x270138){return db[_0x0c69('0x15')][_0x0c69('0x16')]({'raw':_0x4b7677['options']?_0x4b7677[_0x0c69('0x17')][_0x0c69('0x18')]===undefined?!![]:![]:!![],'where':_0x4b7677[_0x0c69('0x17')]?_0x4b7677[_0x0c69('0x17')]['where']||null:null,'attributes':_0x4b7677['options']?_0x4b7677['options']['attributes']||null:null,'limit':_0x4b7677[_0x0c69('0x17')]?_0x4b7677[_0x0c69('0x17')][_0x0c69('0x19')]||null:null,'include':_0x4b7677[_0x0c69('0x17')]?_0x4b7677[_0x0c69('0x17')][_0x0c69('0x1a')]?_[_0x0c69('0x1b')](_0x4b7677[_0x0c69('0x17')][_0x0c69('0x1a')],function(_0x2fd6ed){return{'model':db[_0x2fd6ed['model']],'as':_0x2fd6ed['as'],'attributes':_0x2fd6ed['attributes'],'include':_0x2fd6ed['include']?_[_0x0c69('0x1b')](_0x2fd6ed[_0x0c69('0x1a')],function(_0x272d55){return{'model':db[_0x272d55[_0x0c69('0x1c')]],'as':_0x272d55['as'],'attributes':_0x272d55['attributes'],'include':_0x272d55[_0x0c69('0x1a')]?_[_0x0c69('0x1b')](_0x272d55[_0x0c69('0x1a')],function(_0x2b8d0c){return{'model':db[_0x2b8d0c['model']],'as':_0x2b8d0c['as'],'attributes':_0x2b8d0c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x24c14f){logger[_0x0c69('0xa')]('GetVoiceCallReport',_0x4b7677);logger['debug'](_0x0c69('0x14'),_0x4b7677,JSON[_0x0c69('0xe')](_0x24c14f));_0x2efe2a(_0x24c14f);})[_0x0c69('0x13')](function(_0x101cb2){logger[_0x0c69('0xf')]('GetVoiceCallReport',_0x101cb2['message'],_0x4b7677);_0x270138(_0x4ff248['error'](0x1f4,_0x101cb2[_0x0c69('0x11')]));});});};exports[_0x0c69('0x1d')]=function(_0x2c19ec){var _0x28aef3=this;return new Promise(function(_0x2878c3,_0x40df24){return db[_0x0c69('0x15')][_0x0c69('0x1e')](_0x2c19ec[_0x0c69('0x1f')],{'raw':_0x2c19ec['options']?_0x2c19ec[_0x0c69('0x17')][_0x0c69('0x18')]===undefined?!![]:![]:!![]})[_0x0c69('0x20')](function(_0x9e633){logger['info'](_0x0c69('0x1d'),_0x2c19ec);logger[_0x0c69('0xd')](_0x0c69('0x1d'),_0x2c19ec,JSON['stringify'](_0x9e633));_0x2878c3(_0x9e633);})[_0x0c69('0x13')](function(_0x452e5b){logger[_0x0c69('0xf')](_0x0c69('0x1d'),_0x452e5b[_0x0c69('0x11')],_0x2c19ec);_0x40df24(_0x28aef3['error'](0x1f4,_0x452e5b[_0x0c69('0x11')]));});});};exports[_0x0c69('0x21')]=function(_0x4d7ea1){var _0x5917e2=this;return new Promise(function(_0x443c8d,_0x32c1aa){return db[_0x0c69('0x15')][_0x0c69('0x22')](_0x4d7ea1[_0x0c69('0x1f')],{'raw':_0x4d7ea1[_0x0c69('0x17')]?_0x4d7ea1[_0x0c69('0x17')][_0x0c69('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d7ea1[_0x0c69('0x17')]?_0x4d7ea1[_0x0c69('0x17')][_0x0c69('0x23')]||null:null,'attributes':_0x4d7ea1[_0x0c69('0x17')]?_0x4d7ea1[_0x0c69('0x17')][_0x0c69('0x24')]||null:null,'limit':_0x4d7ea1[_0x0c69('0x17')]?_0x4d7ea1[_0x0c69('0x17')][_0x0c69('0x19')]||null:null})[_0x0c69('0x20')](function(_0x48d443){logger[_0x0c69('0xa')](_0x0c69('0x21'),_0x4d7ea1);logger[_0x0c69('0xd')]('UpdateVoiceCallReport',_0x4d7ea1,JSON[_0x0c69('0xe')](_0x48d443));_0x443c8d(_0x48d443);})[_0x0c69('0x13')](function(_0x4695aa){logger['error'](_0x0c69('0x21'),_0x4695aa[_0x0c69('0x11')],_0x4d7ea1);_0x32c1aa(_0x5917e2[_0x0c69('0xf')](0x1f4,_0x4695aa['message']));});});};
\ No newline at end of file
index e7bd040..575a4df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0b=['exports','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','delete'];(function(_0x531b86,_0x525efc){var _0x1b9c69=function(_0x21648c){while(--_0x21648c){_0x531b86['push'](_0x531b86['shift']());}};_0x1b9c69(++_0x525efc);}(_0xfd0b,0x196));var _0xbfd0=function(_0x47d2ea,_0x207270){_0x47d2ea=_0x47d2ea-0x0;var _0x46a8ed=_0xfd0b[_0x47d2ea];return _0x46a8ed;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xbfd0('0x0'));var express=require(_0xbfd0('0x1'));var router=express[_0xbfd0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xbfd0('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xbfd0('0x4'));var controller=require('./voiceChanSpy.controller');router[_0xbfd0('0x5')]('/',auth[_0xbfd0('0x6')](),controller[_0xbfd0('0x7')]);router[_0xbfd0('0x5')]('/:id',auth[_0xbfd0('0x6')](),controller[_0xbfd0('0x8')]);router[_0xbfd0('0x9')]('/',auth['isAuthenticated'](),controller[_0xbfd0('0xa')]);router[_0xbfd0('0xb')](_0xbfd0('0xc'),auth[_0xbfd0('0x6')](),controller['update']);router[_0xbfd0('0xd')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xbfd0('0xe')]=router;
\ No newline at end of file
+var _0x12ce=['../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x523fff,_0x24649c){var _0x3c7a34=function(_0x3c5621){while(--_0x3c5621){_0x523fff['push'](_0x523fff['shift']());}};_0x3c7a34(++_0x24649c);}(_0x12ce,0x12b));var _0xe12c=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x12ce[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require(_0xe12c('0x0'));var util=require(_0xe12c('0x1'));var path=require(_0xe12c('0x2'));var timeout=require('connect-timeout');var express=require(_0xe12c('0x3'));var router=express[_0xe12c('0x4')]();var fs_extra=require(_0xe12c('0x5'));var auth=require(_0xe12c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe12c('0x7'));var controller=require('./voiceChanSpy.controller');router[_0xe12c('0x8')]('/',auth[_0xe12c('0x9')](),controller['index']);router[_0xe12c('0x8')](_0xe12c('0xa'),auth['isAuthenticated'](),controller[_0xe12c('0xb')]);router[_0xe12c('0xc')]('/',auth['isAuthenticated'](),controller[_0xe12c('0xd')]);router[_0xe12c('0xe')](_0xe12c('0xa'),auth['isAuthenticated'](),controller[_0xe12c('0xf')]);router[_0xe12c('0x10')](_0xe12c('0xa'),auth[_0xe12c('0x9')](),controller[_0xe12c('0x11')]);module['exports']=router;
\ No newline at end of file
index 211850d..7068d17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c6e=['getDataValue','options','BOOLEAN','exports','STRING','name','setDataValue'];(function(_0x37993c,_0x3eb705){var _0xbf84c9=function(_0x38104d){while(--_0x38104d){_0x37993c['push'](_0x37993c['shift']());}};_0xbf84c9(++_0x3eb705);}(_0x0c6e,0xf1));var _0xe0c6=function(_0x525e48,_0xcdc60){_0x525e48=_0x525e48-0x0;var _0xd9badf=_0x0c6e[_0x525e48];return _0xd9badf;};'use strict';var Sequelize=require('sequelize');module[_0xe0c6('0x0')]={'name':{'type':Sequelize[_0xe0c6('0x1')]},'prefix':{'type':Sequelize['STRING'],'unique':_0xe0c6('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0xe0c6('0x1')],'set':function(_0x21394f){this[_0xe0c6('0x3')]('options',_0x21394f?_0x21394f['join'](''):[]);},'get':function(){return this[_0xe0c6('0x4')]('options')?this['getDataValue'](_0xe0c6('0x5'))['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0xe0c6('0x1')]},'record':{'type':Sequelize[_0xe0c6('0x6')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xe0c6('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd25b=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xd25b,0x8f));var _0xbd25=function(_0x21eefd,_0x3f409f){_0x21eefd=_0x21eefd-0x0;var _0xe6e978=_0xd25b[_0x21eefd];return _0xe6e978;};'use strict';var Sequelize=require(_0xbd25('0x0'));module[_0xbd25('0x1')]={'name':{'type':Sequelize[_0xbd25('0x2')]},'prefix':{'type':Sequelize[_0xbd25('0x2')],'unique':_0xbd25('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x2648b0){this[_0xbd25('0x4')](_0xbd25('0x5'),_0x2648b0?_0x2648b0[_0xbd25('0x6')](''):[]);},'get':function(){return this[_0xbd25('0x7')](_0xbd25('0x5'))?this[_0xbd25('0x7')](_0xbd25('0x5'))[_0xbd25('0x8')](''):[];}},'auth':{'type':Sequelize[_0xbd25('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0xbd25('0x2')]},'record':{'type':Sequelize[_0xbd25('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xbd25('0x2')]},'description':{'type':Sequelize[_0xbd25('0x2')]}};
\ No newline at end of file
index a954b22..0e68ba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x477a=['role','ChanSpies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','include','rows','catch','show','options','find','create','body','user'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x477a,0x1e2));var _0xa477=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x477a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xa477('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa477('0x1'));var jsonpatch=require(_0xa477('0x2'));var rp=require('request-promise');var moment=require(_0xa477('0x3'));var BPromise=require(_0xa477('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa477('0x5'));var sox=require(_0xa477('0x6'));var csv=require('to-csv');var ejs=require(_0xa477('0x7'));var fs=require('fs');var fs_extra=require(_0xa477('0x8'));var _=require(_0xa477('0x9'));var squel=require(_0xa477('0xa'));var crypto=require(_0xa477('0xb'));var jsforce=require(_0xa477('0xc'));var deskjs=require(_0xa477('0xd'));var toCsv=require(_0xa477('0xe'));var querystring=require(_0xa477('0xf'));var Papa=require('papaparse');var Redis=require(_0xa477('0x10'));var authService=require(_0xa477('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa477('0x12'));var config=require(_0xa477('0x13'));var licenseUtil=require(_0xa477('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x280b97,_0x3d2a17){_0x3d2a17=_0x3d2a17||0xcc;return function(_0x70e1c1){if(_0x70e1c1){return _0x280b97['sendStatus'](_0x3d2a17);}return _0x280b97[_0xa477('0x15')](_0x3d2a17)[_0xa477('0x16')]();};}function respondWithResult(_0xbb21a7,_0x185c76){_0x185c76=_0x185c76||0xc8;return function(_0xe878a){if(_0xe878a){return _0xbb21a7['status'](_0x185c76)[_0xa477('0x17')](_0xe878a);}};}function respondWithFilteredResult(_0x2336fe,_0xa607d0){return function(_0x45ecc1){if(_0x45ecc1){var _0x22a156=typeof _0xa607d0[_0xa477('0x18')]===_0xa477('0x19')&&typeof _0xa607d0[_0xa477('0x1a')]===_0xa477('0x19');var _0x22a71c=_0x45ecc1[_0xa477('0x1b')];var _0x33db41=_0x22a156?0x0:_0xa607d0[_0xa477('0x18')];var _0x4a413c=_0x22a156?_0x45ecc1[_0xa477('0x1b')]:_0xa607d0[_0xa477('0x18')]+_0xa607d0[_0xa477('0x1a')];var _0x21cd60;if(_0x4a413c>=_0x22a71c){_0x4a413c=_0x22a71c;_0x21cd60=0xc8;}else{_0x21cd60=0xce;}_0x2336fe[_0xa477('0x15')](_0x21cd60);return _0x2336fe[_0xa477('0x1c')](_0xa477('0x1d'),_0x33db41+'-'+_0x4a413c+'/'+_0x22a71c)[_0xa477('0x17')](_0x45ecc1);}return null;};}function patchUpdates(_0x5af670){return function(_0x434ef1){try{jsonpatch[_0xa477('0x1e')](_0x434ef1,_0x5af670,!![]);}catch(_0x4a8c94){return BPromise['reject'](_0x4a8c94);}return _0x434ef1['save']();};}function saveUpdates(_0x4b7f69,_0x14d01e){return function(_0x2debae){if(_0x2debae){return _0x2debae['update'](_0x4b7f69)[_0xa477('0x1f')](function(_0x4faebd){return _0x4faebd;});}return null;};}function removeEntity(_0x5b6e98,_0x7aa4ac){return function(_0x166694){if(_0x166694){return _0x166694[_0xa477('0x20')]()[_0xa477('0x1f')](function(){var _0x472ed1=_0x166694[_0xa477('0x21')]({'plain':!![]});var _0x2b5c7f='ChanSpies';return db[_0xa477('0x22')][_0xa477('0x20')]({'where':{'type':_0x2b5c7f,'resourceId':_0x472ed1['id']}})[_0xa477('0x1f')](function(){return _0x166694;});})[_0xa477('0x1f')](function(){_0x5b6e98[_0xa477('0x15')](0xcc)[_0xa477('0x16')]();});}};}function handleEntityNotFound(_0x75f779,_0x47a86c){return function(_0x46c831){if(!_0x46c831){_0x75f779[_0xa477('0x23')](0x194);}return _0x46c831;};}function handleError(_0x287c83,_0x25acee){_0x25acee=_0x25acee||0x1f4;return function(_0x18d6a1){logger[_0xa477('0x24')](_0x18d6a1[_0xa477('0x25')]);if(_0x18d6a1['name']){delete _0x18d6a1[_0xa477('0x26')];}_0x287c83['status'](_0x25acee)['send'](_0x18d6a1);};}exports[_0xa477('0x27')]=function(_0x1fa6a5,_0x4c27e7){var _0x15e476={},_0x15c0ea={},_0x3dd666={'count':0x0,'rows':[]};var _0x3ec631=_[_0xa477('0x28')](db[_0xa477('0x29')][_0xa477('0x2a')],function(_0x91f9bf){return{'name':_0x91f9bf[_0xa477('0x2b')],'type':_0x91f9bf[_0xa477('0x2c')][_0xa477('0x2d')]};});_0x15c0ea[_0xa477('0x2e')]=_[_0xa477('0x28')](_0x3ec631,'name');_0x15c0ea[_0xa477('0x2f')]=_[_0xa477('0x30')](_0x1fa6a5[_0xa477('0x2f')]);_0x15c0ea[_0xa477('0x31')]=_[_0xa477('0x32')](_0x15c0ea[_0xa477('0x2e')],_0x15c0ea[_0xa477('0x2f')]);_0x15e476[_0xa477('0x33')]=_['intersection'](_0x15c0ea[_0xa477('0x2e')],qs[_0xa477('0x34')](_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x34')]));_0x15e476[_0xa477('0x33')]=_0x15e476[_0xa477('0x33')][_0xa477('0x35')]?_0x15e476[_0xa477('0x33')]:_0x15c0ea[_0xa477('0x2e')];if(!_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x36')](_0xa477('0x37'))){_0x15e476[_0xa477('0x1a')]=qs[_0xa477('0x1a')](_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x1a')]);_0x15e476[_0xa477('0x18')]=qs[_0xa477('0x18')](_0x1fa6a5[_0xa477('0x2f')]['offset']);}_0x15e476[_0xa477('0x38')]=qs[_0xa477('0x39')](_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x39')]);_0x15e476[_0xa477('0x3a')]=qs[_0xa477('0x31')](_['pick'](_0x1fa6a5['query'],_0x15c0ea[_0xa477('0x31')]),_0x3ec631);if(_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x3b')]){_0x15e476[_0xa477('0x3a')]=_['merge'](_0x15e476['where'],{'$or':_[_0xa477('0x28')](_0x3ec631,function(_0x318086){if(_0x318086[_0xa477('0x2c')]!==_0xa477('0x3c')){var _0x326962={};_0x326962[_0x318086[_0xa477('0x26')]]={'$like':'%'+_0x1fa6a5[_0xa477('0x2f')][_0xa477('0x3b')]+'%'};return _0x326962;}})});}_0x15e476=_[_0xa477('0x3d')]({},_0x15e476,_0x1fa6a5['options']);var _0x2406ff={'where':_0x15e476[_0xa477('0x3a')]};return db[_0xa477('0x29')]['count'](_0x2406ff)[_0xa477('0x1f')](function(_0x4be8cb){_0x3dd666[_0xa477('0x1b')]=_0x4be8cb;if(_0x1fa6a5[_0xa477('0x2f')]['includeAll']){_0x15e476[_0xa477('0x3e')]=[{'all':!![]}];}return db[_0xa477('0x29')]['findAll'](_0x15e476);})[_0xa477('0x1f')](function(_0x37f18c){_0x3dd666[_0xa477('0x3f')]=_0x37f18c;return _0x3dd666;})[_0xa477('0x1f')](respondWithFilteredResult(_0x4c27e7,_0x15e476))[_0xa477('0x40')](handleError(_0x4c27e7,null));};exports[_0xa477('0x41')]=function(_0x2ecc11,_0xb1480a){var _0x983c11={'raw':![],'where':{'id':_0x2ecc11['params']['id']}},_0x476746={};_0x476746[_0xa477('0x2e')]=_[_0xa477('0x30')](db[_0xa477('0x29')][_0xa477('0x2a')]);_0x476746[_0xa477('0x2f')]=_['keys'](_0x2ecc11[_0xa477('0x2f')]);_0x476746['filters']=_[_0xa477('0x32')](_0x476746[_0xa477('0x2e')],_0x476746[_0xa477('0x2f')]);_0x983c11['attributes']=_[_0xa477('0x32')](_0x476746[_0xa477('0x2e')],qs[_0xa477('0x34')](_0x2ecc11[_0xa477('0x2f')][_0xa477('0x34')]));_0x983c11[_0xa477('0x33')]=_0x983c11[_0xa477('0x33')][_0xa477('0x35')]?_0x983c11[_0xa477('0x33')]:_0x476746[_0xa477('0x2e')];if(_0x2ecc11[_0xa477('0x2f')]['includeAll']){_0x983c11[_0xa477('0x3e')]=[{'all':!![]}];}_0x983c11=_[_0xa477('0x3d')]({},_0x983c11,_0x2ecc11[_0xa477('0x42')]);return db['VoiceChanSpy'][_0xa477('0x43')](_0x983c11)[_0xa477('0x1f')](handleEntityNotFound(_0xb1480a,null))['then'](respondWithResult(_0xb1480a,null))[_0xa477('0x40')](handleError(_0xb1480a,null));};exports[_0xa477('0x44')]=function(_0x404b00,_0x543a19){return db[_0xa477('0x29')]['create'](_0x404b00[_0xa477('0x45')],{})['then'](function(_0xd74d50){var _0x271831=_0x404b00[_0xa477('0x46')][_0xa477('0x21')]({'plain':!![]});if(!_0x271831)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x271831[_0xa477('0x47')]===_0xa477('0x46')){var _0xa30b74=_0xd74d50['get']({'plain':!![]});var _0x4fb38b=_0xa477('0x48');return db[_0xa477('0x49')][_0xa477('0x43')]({'where':{'name':_0x4fb38b,'userProfileId':_0x271831[_0xa477('0x4a')]},'raw':!![]})[_0xa477('0x1f')](function(_0x1dfcbd){if(_0x1dfcbd&&_0x1dfcbd[_0xa477('0x4b')]===0x0){return db[_0xa477('0x22')]['create']({'name':_0xa30b74['name'],'resourceId':_0xa30b74['id'],'type':_0x1dfcbd[_0xa477('0x26')],'sectionId':_0x1dfcbd['id']},{})[_0xa477('0x1f')](function(){return _0xd74d50;});}else{return _0xd74d50;}})[_0xa477('0x40')](function(_0xadf7b9){logger[_0xa477('0x24')](_0xa477('0x4c'),_0xadf7b9);throw _0xadf7b9;});}return _0xd74d50;})['then'](respondWithResult(_0x543a19,0xc9))[_0xa477('0x40')](handleError(_0x543a19,null));};exports[_0xa477('0x4d')]=function(_0x219417,_0x2d4b29){if(_0x219417[_0xa477('0x45')]['id']){delete _0x219417[_0xa477('0x45')]['id'];}return db[_0xa477('0x29')]['find']({'where':{'id':_0x219417['params']['id']}})[_0xa477('0x1f')](handleEntityNotFound(_0x2d4b29,null))[_0xa477('0x1f')](saveUpdates(_0x219417[_0xa477('0x45')],null))['then'](respondWithResult(_0x2d4b29,null))[_0xa477('0x40')](handleError(_0x2d4b29,null));};exports[_0xa477('0x20')]=function(_0x12b028,_0x504722){return db[_0xa477('0x29')][_0xa477('0x43')]({'where':{'id':_0x12b028[_0xa477('0x4e')]['id']}})[_0xa477('0x1f')](handleEntityNotFound(_0x504722,null))[_0xa477('0x1f')](removeEntity(_0x504722,null))[_0xa477('0x40')](handleError(_0x504722,null));};
\ No newline at end of file
+var _0x834d=['crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','save','then','get','ChanSpies','destroy','error','stack','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','includeAll','findAll','rows','show','include','options','create','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x52d0d3,_0x552ba6){var _0x1b4978=function(_0x15a2b1){while(--_0x15a2b1){_0x52d0d3['push'](_0x52d0d3['shift']());}};_0x1b4978(++_0x552ba6);}(_0x834d,0x140));var _0xd834=function(_0x801e52,_0x54cb6a){_0x801e52=_0x801e52-0x0;var _0x355633=_0x834d[_0x801e52];return _0x355633;};'use strict';var emlformat=require(_0xd834('0x0'));var rimraf=require(_0xd834('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd834('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd834('0x3'));var Mustache=require(_0xd834('0x4'));var util=require(_0xd834('0x5'));var path=require(_0xd834('0x6'));var sox=require('sox');var csv=require(_0xd834('0x7'));var ejs=require(_0xd834('0x8'));var fs=require('fs');var fs_extra=require(_0xd834('0x9'));var _=require(_0xd834('0xa'));var squel=require(_0xd834('0xb'));var crypto=require(_0xd834('0xc'));var jsforce=require(_0xd834('0xd'));var deskjs=require(_0xd834('0xe'));var toCsv=require(_0xd834('0x7'));var querystring=require(_0xd834('0xf'));var Papa=require('papaparse');var Redis=require(_0xd834('0x10'));var authService=require(_0xd834('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd834('0x12'));var hardwareService=require(_0xd834('0x13'));var logger=require('../../config/logger')(_0xd834('0x14'));var utils=require(_0xd834('0x15'));var config=require(_0xd834('0x16'));var licenseUtil=require(_0xd834('0x17'));var db=require(_0xd834('0x18'))['db'];function respondWithStatusCode(_0xbcb6cc,_0x472126){_0x472126=_0x472126||0xcc;return function(_0x10f306){if(_0x10f306){return _0xbcb6cc[_0xd834('0x19')](_0x472126);}return _0xbcb6cc[_0xd834('0x1a')](_0x472126)[_0xd834('0x1b')]();};}function respondWithResult(_0x5d6c9a,_0x12d1d4){_0x12d1d4=_0x12d1d4||0xc8;return function(_0x138def){if(_0x138def){return _0x5d6c9a[_0xd834('0x1a')](_0x12d1d4)['json'](_0x138def);}};}function respondWithFilteredResult(_0xfbe0dd,_0x30315a){return function(_0x1aa77a){if(_0x1aa77a){var _0x3ddd9f=typeof _0x30315a['offset']===_0xd834('0x1c')&&typeof _0x30315a[_0xd834('0x1d')]===_0xd834('0x1c');var _0x4728f6=_0x1aa77a['count'];var _0x21ce1a=_0x3ddd9f?0x0:_0x30315a[_0xd834('0x1e')];var _0x530951=_0x3ddd9f?_0x1aa77a[_0xd834('0x1f')]:_0x30315a[_0xd834('0x1e')]+_0x30315a[_0xd834('0x1d')];var _0x536722;if(_0x530951>=_0x4728f6){_0x530951=_0x4728f6;_0x536722=0xc8;}else{_0x536722=0xce;}_0xfbe0dd[_0xd834('0x1a')](_0x536722);return _0xfbe0dd['set'](_0xd834('0x20'),_0x21ce1a+'-'+_0x530951+'/'+_0x4728f6)[_0xd834('0x21')](_0x1aa77a);}return null;};}function patchUpdates(_0x4b451e){return function(_0x40852a){try{jsonpatch[_0xd834('0x22')](_0x40852a,_0x4b451e,!![]);}catch(_0x32b86b){return BPromise[_0xd834('0x23')](_0x32b86b);}return _0x40852a[_0xd834('0x24')]();};}function saveUpdates(_0x45d83f,_0x59b604){return function(_0x6cec0d){if(_0x6cec0d){return _0x6cec0d['update'](_0x45d83f)[_0xd834('0x25')](function(_0x4c8a02){return _0x4c8a02;});}return null;};}function removeEntity(_0xb7e09f,_0x40874f){return function(_0xd1a893){if(_0xd1a893){return _0xd1a893['destroy']()['then'](function(){var _0x4b89b5=_0xd1a893[_0xd834('0x26')]({'plain':!![]});var _0x52e531=_0xd834('0x27');return db['UserProfileResource'][_0xd834('0x28')]({'where':{'type':_0x52e531,'resourceId':_0x4b89b5['id']}})['then'](function(){return _0xd1a893;});})[_0xd834('0x25')](function(){_0xb7e09f[_0xd834('0x1a')](0xcc)[_0xd834('0x1b')]();});}};}function handleEntityNotFound(_0x42cebf,_0x244e3f){return function(_0x570c95){if(!_0x570c95){_0x42cebf[_0xd834('0x19')](0x194);}return _0x570c95;};}function handleError(_0x557f7e,_0x3bbb02){_0x3bbb02=_0x3bbb02||0x1f4;return function(_0x42242a){logger[_0xd834('0x29')](_0x42242a[_0xd834('0x2a')]);if(_0x42242a['name']){delete _0x42242a['name'];}_0x557f7e[_0xd834('0x1a')](_0x3bbb02)['send'](_0x42242a);};}exports['index']=function(_0x58fb78,_0xc5b1a3){var _0x2737ac={},_0x3847c8={},_0x4f4602={'count':0x0,'rows':[]};var _0x562dee=_[_0xd834('0x2b')](db[_0xd834('0x2c')][_0xd834('0x2d')],function(_0x1f4e65){return{'name':_0x1f4e65[_0xd834('0x2e')],'type':_0x1f4e65[_0xd834('0x2f')][_0xd834('0x30')]};});_0x3847c8[_0xd834('0x31')]=_['map'](_0x562dee,_0xd834('0x32'));_0x3847c8['query']=_[_0xd834('0x33')](_0x58fb78[_0xd834('0x34')]);_0x3847c8['filters']=_[_0xd834('0x35')](_0x3847c8[_0xd834('0x31')],_0x3847c8['query']);_0x2737ac[_0xd834('0x36')]=_['intersection'](_0x3847c8[_0xd834('0x31')],qs[_0xd834('0x37')](_0x58fb78[_0xd834('0x34')]['fields']));_0x2737ac[_0xd834('0x36')]=_0x2737ac['attributes'][_0xd834('0x38')]?_0x2737ac[_0xd834('0x36')]:_0x3847c8['model'];if(!_0x58fb78[_0xd834('0x34')][_0xd834('0x39')]('nolimit')){_0x2737ac[_0xd834('0x1d')]=qs[_0xd834('0x1d')](_0x58fb78[_0xd834('0x34')]['limit']);_0x2737ac[_0xd834('0x1e')]=qs['offset'](_0x58fb78[_0xd834('0x34')]['offset']);}_0x2737ac[_0xd834('0x3a')]=qs[_0xd834('0x3b')](_0x58fb78[_0xd834('0x34')]['sort']);_0x2737ac[_0xd834('0x3c')]=qs[_0xd834('0x3d')](_[_0xd834('0x3e')](_0x58fb78[_0xd834('0x34')],_0x3847c8[_0xd834('0x3d')]),_0x562dee);if(_0x58fb78[_0xd834('0x34')][_0xd834('0x3f')]){_0x2737ac['where']=_[_0xd834('0x40')](_0x2737ac[_0xd834('0x3c')],{'$or':_[_0xd834('0x2b')](_0x562dee,function(_0x26c3e5){if(_0x26c3e5[_0xd834('0x2f')]!=='VIRTUAL'){var _0x1dcad6={};_0x1dcad6[_0x26c3e5[_0xd834('0x32')]]={'$like':'%'+_0x58fb78[_0xd834('0x34')]['filter']+'%'};return _0x1dcad6;}})});}_0x2737ac=_['merge']({},_0x2737ac,_0x58fb78['options']);var _0x347e56={'where':_0x2737ac[_0xd834('0x3c')]};return db[_0xd834('0x2c')]['count'](_0x347e56)[_0xd834('0x25')](function(_0x473260){_0x4f4602[_0xd834('0x1f')]=_0x473260;if(_0x58fb78[_0xd834('0x34')][_0xd834('0x41')]){_0x2737ac['include']=[{'all':!![]}];}return db[_0xd834('0x2c')][_0xd834('0x42')](_0x2737ac);})[_0xd834('0x25')](function(_0x28c4af){_0x4f4602[_0xd834('0x43')]=_0x28c4af;return _0x4f4602;})['then'](respondWithFilteredResult(_0xc5b1a3,_0x2737ac))['catch'](handleError(_0xc5b1a3,null));};exports[_0xd834('0x44')]=function(_0x19fbf5,_0x47cca6){var _0xd6fe69={'raw':![],'where':{'id':_0x19fbf5['params']['id']}},_0x5eb9c0={};_0x5eb9c0['model']=_[_0xd834('0x33')](db['VoiceChanSpy'][_0xd834('0x2d')]);_0x5eb9c0['query']=_['keys'](_0x19fbf5[_0xd834('0x34')]);_0x5eb9c0[_0xd834('0x3d')]=_['intersection'](_0x5eb9c0['model'],_0x5eb9c0[_0xd834('0x34')]);_0xd6fe69['attributes']=_[_0xd834('0x35')](_0x5eb9c0['model'],qs[_0xd834('0x37')](_0x19fbf5['query']['fields']));_0xd6fe69[_0xd834('0x36')]=_0xd6fe69[_0xd834('0x36')][_0xd834('0x38')]?_0xd6fe69[_0xd834('0x36')]:_0x5eb9c0['model'];if(_0x19fbf5[_0xd834('0x34')][_0xd834('0x41')]){_0xd6fe69[_0xd834('0x45')]=[{'all':!![]}];}_0xd6fe69=_[_0xd834('0x40')]({},_0xd6fe69,_0x19fbf5[_0xd834('0x46')]);return db[_0xd834('0x2c')]['find'](_0xd6fe69)[_0xd834('0x25')](handleEntityNotFound(_0x47cca6,null))[_0xd834('0x25')](respondWithResult(_0x47cca6,null))['catch'](handleError(_0x47cca6,null));};exports[_0xd834('0x47')]=function(_0x4bb603,_0x2cbb69){return db['VoiceChanSpy'][_0xd834('0x47')](_0x4bb603['body'],{})[_0xd834('0x25')](function(_0x3d5073){var _0x5c1c02=_0x4bb603[_0xd834('0x48')][_0xd834('0x26')]({'plain':!![]});if(!_0x5c1c02)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5c1c02['role']===_0xd834('0x48')){var _0x3dc97d=_0x3d5073[_0xd834('0x26')]({'plain':!![]});var _0x59013d=_0xd834('0x27');return db[_0xd834('0x49')][_0xd834('0x4a')]({'where':{'name':_0x59013d,'userProfileId':_0x5c1c02[_0xd834('0x4b')]},'raw':!![]})[_0xd834('0x25')](function(_0x3c6eb4){if(_0x3c6eb4&&_0x3c6eb4[_0xd834('0x4c')]===0x0){return db[_0xd834('0x4d')][_0xd834('0x47')]({'name':_0x3dc97d[_0xd834('0x32')],'resourceId':_0x3dc97d['id'],'type':_0x3c6eb4['name'],'sectionId':_0x3c6eb4['id']},{})[_0xd834('0x25')](function(){return _0x3d5073;});}else{return _0x3d5073;}})[_0xd834('0x4e')](function(_0x5bcd52){logger[_0xd834('0x29')](_0xd834('0x4f'),_0x5bcd52);throw _0x5bcd52;});}return _0x3d5073;})[_0xd834('0x25')](respondWithResult(_0x2cbb69,0xc9))[_0xd834('0x4e')](handleError(_0x2cbb69,null));};exports[_0xd834('0x50')]=function(_0x5e393e,_0x755c3d){if(_0x5e393e[_0xd834('0x51')]['id']){delete _0x5e393e[_0xd834('0x51')]['id'];}return db[_0xd834('0x2c')]['find']({'where':{'id':_0x5e393e['params']['id']}})[_0xd834('0x25')](handleEntityNotFound(_0x755c3d,null))[_0xd834('0x25')](saveUpdates(_0x5e393e[_0xd834('0x51')],null))[_0xd834('0x25')](respondWithResult(_0x755c3d,null))[_0xd834('0x4e')](handleError(_0x755c3d,null));};exports[_0xd834('0x28')]=function(_0x301f8c,_0x54677a){return db[_0xd834('0x2c')][_0xd834('0x4a')]({'where':{'id':_0x301f8c[_0xd834('0x52')]['id']}})[_0xd834('0x25')](handleEntityNotFound(_0x54677a,null))[_0xd834('0x25')](removeEntity(_0x54677a,null))[_0xd834('0x4e')](handleError(_0x54677a,null));};
\ No newline at end of file
index 5416da9..5779221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75fb=['bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','merge','CDR(type)=%s','chanspy','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','name','options','join','record','StopMixMonitor','length','concat','internal','User','findAll','agent','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension'];(function(_0x143cfd,_0x2912b3){var _0x4355a6=function(_0x493fc2){while(--_0x493fc2){_0x143cfd['push'](_0x143cfd['shift']());}};_0x4355a6(++_0x2912b3);}(_0x75fb,0xca));var _0xb75f=function(_0x5cd046,_0x3ec3be){_0x5cd046=_0x5cd046-0x0;var _0x578fd3=_0x75fb[_0x5cd046];return _0x578fd3;};'use strict';var _=require(_0xb75f('0x0'));var util=require(_0xb75f('0x1'));var BPromise=require(_0xb75f('0x2'));var attributes=require(_0xb75f('0x3'));var getUserApplications=function(_0x3b7bea,_0x22c745,_0x256510){var _0xce3767=0x1;var _0x29a00e=[];var _0x754a6a={'context':_0x22c745[_0xb75f('0x4')]||_0xb75f('0x5'),'exten':util[_0xb75f('0x6')](_0xb75f('0x7'),_0x3b7bea[_0xb75f('0x8')],_0x256510),'type':_0xb75f('0x9'),'isApp':![],'ChanSpyId':_0x3b7bea['id'],'UserId':_0x22c745['id']};_0x29a00e['push'](_[_0xb75f('0xa')]({'app':'Set','appdata':util[_0xb75f('0x6')](_0xb75f('0xb'),_0xb75f('0xc')),'priority':_0xce3767++},_0x754a6a));if(_0x3b7bea['record']){_0x29a00e[_0xb75f('0xd')](_[_0xb75f('0xa')]({'app':_0xb75f('0xe'),'appdata':util[_0xb75f('0x6')](_0xb75f('0xf'),_0x3b7bea[_0xb75f('0x10')]),'priority':_0xce3767++},_0x754a6a));}if(_0x3b7bea[_0xb75f('0x11')]){_0x29a00e[_0xb75f('0xd')](_['merge']({'app':_0xb75f('0x12'),'appdata':_0x3b7bea['password'],'priority':_0xce3767++},_0x754a6a));}_0x29a00e[_0xb75f('0xd')](_[_0xb75f('0xa')]({'app':'ChanSpy','appdata':util[_0xb75f('0x6')]('SIP/%s,%s',_0x22c745[_0xb75f('0x13')],_0x3b7bea[_0xb75f('0x14')]?_0x3b7bea['options'][_0xb75f('0x15')](''):''),'priority':_0xce3767++},_0x754a6a));if(_0x3b7bea[_0xb75f('0x16')]){_0x29a00e[_0xb75f('0xd')](_[_0xb75f('0xa')]({'app':_0xb75f('0x17'),'priority':_0xce3767++},_0x754a6a));}return _0x29a00e;};var getChanSpyApplications=function(_0x17b46b,_0x59a065){var _0x4ffbb3=[];for(var _0x2c8693=0x0,_0x511460=0x1;_0x2c8693<_0x59a065[_0xb75f('0x18')];_0x2c8693++,_0x511460=0x1){_0x4ffbb3=_0x4ffbb3[_0xb75f('0x19')](getUserApplications(_0x17b46b,_0x59a065[_0x2c8693],_0x59a065[_0x2c8693][_0xb75f('0x1a')]));if(_0x59a065[_0x2c8693][_0xb75f('0x1a')]!=_0x59a065[_0x2c8693][_0xb75f('0x13')]){_0x4ffbb3=_0x4ffbb3['concat'](getUserApplications(_0x17b46b,_0x59a065[_0x2c8693],_0x59a065[_0x2c8693]['name']));}}return _0x4ffbb3;};var getChanSpyPromise=function(_0x653461,_0x4b5f92){return new BPromise(function(_0x1add11,_0x566308){return _0x653461[_0xb75f('0x1b')][_0xb75f('0x1c')]({'attributes':['id','name',_0xb75f('0x1a')],'where':{'role':_0xb75f('0x1d'),'chanspy':!![]},'raw':!![]})['then'](function(_0xfce8c0){if(_0xfce8c0){return _0x1add11(getChanSpyApplications(_0x4b5f92,_0xfce8c0));}return _0x1add11([]);})[_0xb75f('0x1e')](function(_0x4d6fef){_0x566308(_0x4d6fef);});});};module[_0xb75f('0x1f')]=function(_0x4cd4be,_0x3a7ef7){var _0x3bdfeb=_0x4cd4be[_0xb75f('0x20')];return _0x4cd4be[_0xb75f('0x21')](_0xb75f('0x22'),attributes,{'tableName':_0xb75f('0x23'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5dfe3b,_0x1e8cbc,_0x263933){return getChanSpyPromise(_0x3bdfeb,_0x5dfe3b)[_0xb75f('0x24')](function(_0x287ba9){if(_0x287ba9&&_0x287ba9[_0xb75f('0x18')]){return _0x3bdfeb[_0xb75f('0x25')][_0xb75f('0x26')](_0x287ba9);}})[_0xb75f('0x24')](function(){_0x263933();})[_0xb75f('0x1e')](function(_0x46d633){_0x263933(_0x46d633);});},'afterUpdate':function(_0x3e8aad,_0x36dd5c,_0x521f78){return _0x3bdfeb[_0xb75f('0x25')][_0xb75f('0x27')]({'where':{'ChanSpyId':_0x3e8aad['id']}})[_0xb75f('0x24')](function(){return getChanSpyPromise(_0x3bdfeb,_0x3e8aad);})[_0xb75f('0x24')](function(_0x366b05){if(_0x366b05&&_0x366b05[_0xb75f('0x18')]){return _0x3bdfeb[_0xb75f('0x25')][_0xb75f('0x26')](_0x366b05);}})['then'](function(){_0x521f78();})['catch'](function(_0x177c01){_0x521f78(_0x177c01);});},'afterDestroy':function(_0x4a61cb,_0x4ada81,_0x481afe){return _0x3bdfeb[_0xb75f('0x25')][_0xb75f('0x27')]({'where':{'ChanSpyId':_0x4a61cb['id']}})['then'](function(){_0x481afe();})['catch'](function(_0x240fe8){_0x481afe(_0x240fe8);});}}});};
\ No newline at end of file
+var _0x4283=['SIP/%s,%s','options','join','StopMixMonitor','concat','internal','name','findAll','catch','models','voice_chanspy','then','length','VoiceExtension','bulkCreate','destroy','lodash','./voiceChanSpy.attributes','%s%s','system','push','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy'];(function(_0x255160,_0x28139a){var _0x1488f9=function(_0xa08e22){while(--_0xa08e22){_0x255160['push'](_0x255160['shift']());}};_0x1488f9(++_0x28139a);}(_0x4283,0xd6));var _0x3428=function(_0x6eddc1,_0x42a195){_0x6eddc1=_0x6eddc1-0x0;var _0x30c9aa=_0x4283[_0x6eddc1];return _0x30c9aa;};'use strict';var _=require(_0x3428('0x0'));var util=require('util');var BPromise=require('bluebird');var attributes=require(_0x3428('0x1'));var getUserApplications=function(_0x50a844,_0x1b86fa,_0x1b7e87){var _0x525e6b=0x1;var _0x52b8e7=[];var _0x43438f={'context':_0x1b86fa['context']||'from-sip','exten':util['format'](_0x3428('0x2'),_0x50a844['prefix'],_0x1b7e87),'type':_0x3428('0x3'),'isApp':![],'ChanSpyId':_0x50a844['id'],'UserId':_0x1b86fa['id']};_0x52b8e7[_0x3428('0x4')](_['merge']({'app':_0x3428('0x5'),'appdata':util[_0x3428('0x6')](_0x3428('0x7'),_0x3428('0x8')),'priority':_0x525e6b++},_0x43438f));if(_0x50a844[_0x3428('0x9')]){_0x52b8e7[_0x3428('0x4')](_['merge']({'app':_0x3428('0xa'),'appdata':util['format'](_0x3428('0xb'),_0x50a844[_0x3428('0xc')]),'priority':_0x525e6b++},_0x43438f));}if(_0x50a844[_0x3428('0xd')]){_0x52b8e7[_0x3428('0x4')](_['merge']({'app':_0x3428('0xe'),'appdata':_0x50a844[_0x3428('0xf')],'priority':_0x525e6b++},_0x43438f));}_0x52b8e7['push'](_['merge']({'app':_0x3428('0x10'),'appdata':util[_0x3428('0x6')](_0x3428('0x11'),_0x1b86fa['name'],_0x50a844[_0x3428('0x12')]?_0x50a844[_0x3428('0x12')][_0x3428('0x13')](''):''),'priority':_0x525e6b++},_0x43438f));if(_0x50a844[_0x3428('0x9')]){_0x52b8e7[_0x3428('0x4')](_['merge']({'app':_0x3428('0x14'),'priority':_0x525e6b++},_0x43438f));}return _0x52b8e7;};var getChanSpyApplications=function(_0x65cb3a,_0x3d9e91){var _0x276b5e=[];for(var _0x300934=0x0,_0x2ff028=0x1;_0x300934<_0x3d9e91['length'];_0x300934++,_0x2ff028=0x1){_0x276b5e=_0x276b5e[_0x3428('0x15')](getUserApplications(_0x65cb3a,_0x3d9e91[_0x300934],_0x3d9e91[_0x300934][_0x3428('0x16')]));if(_0x3d9e91[_0x300934][_0x3428('0x16')]!=_0x3d9e91[_0x300934][_0x3428('0x17')]){_0x276b5e=_0x276b5e['concat'](getUserApplications(_0x65cb3a,_0x3d9e91[_0x300934],_0x3d9e91[_0x300934][_0x3428('0x17')]));}}return _0x276b5e;};var getChanSpyPromise=function(_0x3c4067,_0xf64189){return new BPromise(function(_0x4bef7a,_0xebc618){return _0x3c4067['User'][_0x3428('0x18')]({'attributes':['id',_0x3428('0x17'),_0x3428('0x16')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x51fd89){if(_0x51fd89){return _0x4bef7a(getChanSpyApplications(_0xf64189,_0x51fd89));}return _0x4bef7a([]);})[_0x3428('0x19')](function(_0x2e9b5c){_0xebc618(_0x2e9b5c);});});};module['exports']=function(_0x35d58c,_0x1cfe39){var _0x11d99d=_0x35d58c[_0x3428('0x1a')];return _0x35d58c['define']('VoiceChanSpy',attributes,{'tableName':_0x3428('0x1b'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1f6c4a,_0x545327,_0x487145){return getChanSpyPromise(_0x11d99d,_0x1f6c4a)[_0x3428('0x1c')](function(_0x461181){if(_0x461181&&_0x461181[_0x3428('0x1d')]){return _0x11d99d[_0x3428('0x1e')][_0x3428('0x1f')](_0x461181);}})['then'](function(){_0x487145();})[_0x3428('0x19')](function(_0x3061d3){_0x487145(_0x3061d3);});},'afterUpdate':function(_0x18d7cc,_0x27a035,_0x33ce1e){return _0x11d99d[_0x3428('0x1e')][_0x3428('0x20')]({'where':{'ChanSpyId':_0x18d7cc['id']}})['then'](function(){return getChanSpyPromise(_0x11d99d,_0x18d7cc);})['then'](function(_0x339c00){if(_0x339c00&&_0x339c00[_0x3428('0x1d')]){return _0x11d99d['VoiceExtension'][_0x3428('0x1f')](_0x339c00);}})[_0x3428('0x1c')](function(){_0x33ce1e();})[_0x3428('0x19')](function(_0x3b4509){_0x33ce1e(_0x3b4509);});},'afterDestroy':function(_0x2a09f1,_0x1a583e,_0x4473c3){return _0x11d99d[_0x3428('0x1e')][_0x3428('0x20')]({'where':{'ChanSpyId':_0x2a09f1['id']}})[_0x3428('0x1c')](function(){_0x4473c3();})[_0x3428('0x19')](function(_0x5cb661){_0x4473c3(_0x5cb661);});}}});};
\ No newline at end of file
index 4fd5974..4d51960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b24=['client','request','then','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../config/logger','../../config/environment'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x6b24,0x1ce));var _0x46b2=function(_0x36e0e9,_0x138073){_0x36e0e9=_0x36e0e9-0x0;var _0x4591f5=_0x6b24[_0x36e0e9];return _0x4591f5;};'use strict';var _=require('lodash');var util=require(_0x46b2('0x0'));var moment=require(_0x46b2('0x1'));var BPromise=require(_0x46b2('0x2'));var rs=require(_0x46b2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x46b2('0x4'))('rpc');var config=require(_0x46b2('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x46b2('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x512905,_0x326eb7,_0x233ccf){return new BPromise(function(_0x1f81b8,_0x1531c){return client[_0x46b2('0x7')](_0x512905,_0x233ccf)[_0x46b2('0x8')](function(_0x3144df){logger[_0x46b2('0x9')](_0x46b2('0xa'),_0x326eb7,'request\x20sent');logger['debug'](_0x46b2('0xb'),_0x326eb7,_0x46b2('0xc'),JSON[_0x46b2('0xd')](_0x3144df));if(_0x3144df['error']){if(_0x3144df[_0x46b2('0xe')][_0x46b2('0xf')]===0x1f4){logger[_0x46b2('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x326eb7,_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);return _0x1531c(_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);}logger[_0x46b2('0xe')](_0x46b2('0xa'),_0x326eb7,_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);return _0x1f81b8(_0x3144df[_0x46b2('0xe')][_0x46b2('0x10')]);}else{logger['info'](_0x46b2('0xa'),_0x326eb7,_0x46b2('0xc'));_0x1f81b8(_0x3144df['result'][_0x46b2('0x10')]);}})[_0x46b2('0x11')](function(_0xe3d3d9){logger[_0x46b2('0xe')](_0x46b2('0xa'),_0x326eb7,_0xe3d3d9);_0x1531c(_0xe3d3d9);});});}
\ No newline at end of file
+var _0xa902=['message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xa902,0x8d));var _0x2a90=function(_0x31f364,_0x564cd6){_0x31f364=_0x31f364-0x0;var _0x2bacdc=_0xa902[_0x31f364];return _0x2bacdc;};'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')]('VoiceChanSpy,\x20%s,\x20%s',_0x58369a,_0xe500bc[_0x2a90('0x13')]['message']);return _0x5ec2b9(_0xe500bc[_0x2a90('0x13')][_0x2a90('0x14')]);}logger[_0x2a90('0x13')]('VoiceChanSpy,\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);});});}
\ No newline at end of file
index 2124515..2bdaf3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd07a=['../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','/:id','show','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xd07a,0x175));var _0xad07=function(_0x4bcf38,_0x3c12be){_0x4bcf38=_0x4bcf38-0x0;var _0x4a89be=_0xd07a[_0x4bcf38];return _0x4a89be;};'use strict';var multer=require(_0xad07('0x0'));var util=require(_0xad07('0x1'));var path=require(_0xad07('0x2'));var timeout=require(_0xad07('0x3'));var express=require(_0xad07('0x4'));var router=express[_0xad07('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xad07('0x6'));var interaction=require(_0xad07('0x7'));var config=require(_0xad07('0x8'));var controller=require(_0xad07('0x9'));router[_0xad07('0xa')]('/',auth[_0xad07('0xb')](),controller['index']);router[_0xad07('0xa')](_0xad07('0xc'),auth[_0xad07('0xb')](),controller[_0xad07('0xd')]);router[_0xad07('0xe')]('/',auth[_0xad07('0xb')](),controller['create']);router[_0xad07('0xf')]('/:id',auth[_0xad07('0xb')](),controller['update']);router[_0xad07('0x10')](_0xad07('0xc'),auth['isAuthenticated'](),controller[_0xad07('0x11')]);module[_0xad07('0x12')]=router;
\ No newline at end of file
+var _0xe871=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','put','update','delete','destroy','exports','multer','util'];(function(_0x48dcca,_0x17dd90){var _0x111d82=function(_0x79dd0d){while(--_0x79dd0d){_0x48dcca['push'](_0x48dcca['shift']());}};_0x111d82(++_0x17dd90);}(_0xe871,0x154));var _0x1e87=function(_0x59e5bd,_0x19dedf){_0x59e5bd=_0x59e5bd-0x0;var _0x406e4a=_0xe871[_0x59e5bd];return _0x406e4a;};'use strict';var multer=require(_0x1e87('0x0'));var util=require(_0x1e87('0x1'));var path=require('path');var timeout=require(_0x1e87('0x2'));var express=require(_0x1e87('0x3'));var router=express[_0x1e87('0x4')]();var fs_extra=require(_0x1e87('0x5'));var auth=require(_0x1e87('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1e87('0x7'));var controller=require('./voiceContext.controller');router[_0x1e87('0x8')]('/',auth[_0x1e87('0x9')](),controller['index']);router[_0x1e87('0x8')](_0x1e87('0xa'),auth['isAuthenticated'](),controller[_0x1e87('0xb')]);router[_0x1e87('0xc')]('/',auth[_0x1e87('0x9')](),controller['create']);router[_0x1e87('0xd')]('/:id',auth[_0x1e87('0x9')](),controller[_0x1e87('0xe')]);router[_0x1e87('0xf')]('/:id',auth[_0x1e87('0x9')](),controller[_0x1e87('0x10')]);module[_0x1e87('0x11')]=router;
\ No newline at end of file
index ecb82c0..e132203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6409=['STRING','sequelize'];(function(_0x49ce61,_0x136272){var _0x242df5=function(_0x87c9da){while(--_0x87c9da){_0x49ce61['push'](_0x49ce61['shift']());}};_0x242df5(++_0x136272);}(_0x6409,0xaf));var _0x9640=function(_0x40748c,_0x468f26){_0x40748c=_0x40748c-0x0;var _0x422593=_0x6409[_0x40748c];return _0x422593;};'use strict';var Sequelize=require(_0x9640('0x0'));module['exports']={'name':{'type':Sequelize[_0x9640('0x1')],'unique':'name'},'description':{'type':Sequelize[_0x9640('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9635=['sequelize','STRING','name','BOOLEAN'];(function(_0x509614,_0x2d42b4){var _0x42b2f6=function(_0x8c7e05){while(--_0x8c7e05){_0x509614['push'](_0x509614['shift']());}};_0x42b2f6(++_0x2d42b4);}(_0x9635,0x1a0));var _0x5963=function(_0x27d52b,_0x12e957){_0x27d52b=_0x27d52b-0x0;var _0x136ec6=_0x9635[_0x27d52b];return _0x136ec6;};'use strict';var Sequelize=require(_0x5963('0x0'));module['exports']={'name':{'type':Sequelize[_0x5963('0x1')],'unique':_0x5963('0x2')},'description':{'type':Sequelize[_0x5963('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x5963('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 4d16e38..5f1ad40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa117=['../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','get','Contexts','UserProfileResource','stack','name','index','map','VoiceContext','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','rows','catch','params','find','create','body','findAll','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','/etc/asterisk/extensions_xcally_contexts.conf','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment'];(function(_0x302bc2,_0x4f2edb){var _0xa67528=function(_0x300d0a){while(--_0x300d0a){_0x302bc2['push'](_0x302bc2['shift']());}};_0xa67528(++_0x4f2edb);}(_0xa117,0xaf));var _0x7a11=function(_0xdf03c8,_0x4feeb6){_0xdf03c8=_0xdf03c8-0x0;var _0x1ff7de=_0xa117[_0xdf03c8];return _0x1ff7de;};'use strict';var emlformat=require(_0x7a11('0x0'));var rimraf=require(_0x7a11('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7a11('0x2'));var rp=require(_0x7a11('0x3'));var moment=require(_0x7a11('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7a11('0x5'));var util=require('util');var path=require(_0x7a11('0x6'));var sox=require(_0x7a11('0x7'));var csv=require('to-csv');var ejs=require(_0x7a11('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7a11('0x9'));var crypto=require('crypto');var jsforce=require(_0x7a11('0xa'));var deskjs=require(_0x7a11('0xb'));var toCsv=require(_0x7a11('0xc'));var querystring=require(_0x7a11('0xd'));var Papa=require('papaparse');var Redis=require(_0x7a11('0xe'));var authService=require(_0x7a11('0xf'));var qs=require(_0x7a11('0x10'));var as=require(_0x7a11('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7a11('0x12'))(_0x7a11('0x13'));var utils=require('../../config/utils');var config=require(_0x7a11('0x14'));var licenseUtil=require(_0x7a11('0x15'));var db=require(_0x7a11('0x16'))['db'];var jayson=require(_0x7a11('0x17'));var client=jayson[_0x7a11('0x18')][_0x7a11('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1ba65e,_0xc35b98,_0x4cf6ef,_0x5012ed){return new BPromise(function(_0x2911cb,_0x52cada){var _0x3f9043=_0x5012ed||client;return _0x3f9043['request'](_0x1ba65e,_0x4cf6ef)[_0x7a11('0x1a')](function(_0x2d48e3){logger[_0x7a11('0x1b')]('VoiceContext,\x20%s,\x20%s',_0xc35b98,_0x7a11('0x1c'));logger['debug'](_0x7a11('0x1d'),_0xc35b98,'request\x20sent',JSON[_0x7a11('0x1e')](_0x2d48e3));if(_0x2d48e3[_0x7a11('0x1f')]){if(_0x2d48e3[_0x7a11('0x1f')][_0x7a11('0x20')]===0x1f4){logger['error'](_0x7a11('0x21'),_0xc35b98,_0x2d48e3[_0x7a11('0x1f')][_0x7a11('0x22')]);return _0x52cada(_0x2d48e3[_0x7a11('0x1f')][_0x7a11('0x22')]);}logger['error'](_0x7a11('0x21'),_0xc35b98,_0x2d48e3[_0x7a11('0x1f')][_0x7a11('0x22')]);return _0x2911cb(_0x2d48e3[_0x7a11('0x1f')][_0x7a11('0x22')]);}else{logger[_0x7a11('0x1b')](_0x7a11('0x21'),_0xc35b98,_0x7a11('0x1c'));_0x2911cb(_0x2d48e3[_0x7a11('0x23')][_0x7a11('0x22')]);}})['catch'](function(_0x18322e){logger['error'](_0x7a11('0x21'),_0xc35b98,_0x18322e);_0x52cada(_0x18322e);});});}function respondWithStatusCode(_0x12e222,_0x29347c){_0x29347c=_0x29347c||0xcc;return function(_0x4d2dac){if(_0x4d2dac){return _0x12e222[_0x7a11('0x24')](_0x29347c);}return _0x12e222['status'](_0x29347c)[_0x7a11('0x25')]();};}function respondWithResult(_0x180b31,_0x185ff8){_0x185ff8=_0x185ff8||0xc8;return function(_0x3c6249){if(_0x3c6249){return _0x180b31[_0x7a11('0x26')](_0x185ff8)[_0x7a11('0x27')](_0x3c6249);}};}function respondWithFilteredResult(_0x557cf,_0xd586b9){return function(_0x445d19){if(_0x445d19){var _0x3731a3=typeof _0xd586b9[_0x7a11('0x28')]===_0x7a11('0x29')&&typeof _0xd586b9['limit']===_0x7a11('0x29');var _0x3a34d4=_0x445d19[_0x7a11('0x2a')];var _0x2d064e=_0x3731a3?0x0:_0xd586b9['offset'];var _0x323bc9=_0x3731a3?_0x445d19[_0x7a11('0x2a')]:_0xd586b9[_0x7a11('0x28')]+_0xd586b9[_0x7a11('0x2b')];var _0x256f40;if(_0x323bc9>=_0x3a34d4){_0x323bc9=_0x3a34d4;_0x256f40=0xc8;}else{_0x256f40=0xce;}_0x557cf[_0x7a11('0x26')](_0x256f40);return _0x557cf['set'](_0x7a11('0x2c'),_0x2d064e+'-'+_0x323bc9+'/'+_0x3a34d4)[_0x7a11('0x27')](_0x445d19);}return null;};}function patchUpdates(_0x1b8ac9){return function(_0x22d61f){try{jsonpatch[_0x7a11('0x2d')](_0x22d61f,_0x1b8ac9,!![]);}catch(_0x56045d){return BPromise['reject'](_0x56045d);}return _0x22d61f[_0x7a11('0x2e')]();};}function saveUpdates(_0x1ee7e5,_0x193176){return function(_0x18cbb2){if(_0x18cbb2){return _0x18cbb2[_0x7a11('0x2f')](_0x1ee7e5)[_0x7a11('0x1a')](function(_0x37464){return _0x37464;});}return null;};}function removeEntity(_0x4296ae,_0x40515e){return function(_0x3ee83d){if(_0x3ee83d){return _0x3ee83d[_0x7a11('0x30')]()['then'](function(){var _0x535d0c=_0x3ee83d[_0x7a11('0x31')]({'plain':!![]});var _0x5f5417=_0x7a11('0x32');return db[_0x7a11('0x33')][_0x7a11('0x30')]({'where':{'type':_0x5f5417,'resourceId':_0x535d0c['id']}})[_0x7a11('0x1a')](function(){return _0x3ee83d;});})[_0x7a11('0x1a')](function(){_0x4296ae[_0x7a11('0x26')](0xcc)[_0x7a11('0x25')]();});}};}function handleEntityNotFound(_0x52f0a6,_0xfecfa7){return function(_0x3c2663){if(!_0x3c2663){_0x52f0a6[_0x7a11('0x24')](0x194);}return _0x3c2663;};}function handleError(_0x3fbc9d,_0x4ae138){_0x4ae138=_0x4ae138||0x1f4;return function(_0x58c663){logger[_0x7a11('0x1f')](_0x58c663[_0x7a11('0x34')]);if(_0x58c663['name']){delete _0x58c663[_0x7a11('0x35')];}_0x3fbc9d[_0x7a11('0x26')](_0x4ae138)['send'](_0x58c663);};}exports[_0x7a11('0x36')]=function(_0x32c0ff,_0x2e2942){var _0x183b36={},_0x385a21={},_0x54ecaa={'count':0x0,'rows':[]};var _0x3264f8=_[_0x7a11('0x37')](db[_0x7a11('0x38')][_0x7a11('0x39')],function(_0x53d878){return{'name':_0x53d878['fieldName'],'type':_0x53d878[_0x7a11('0x3a')][_0x7a11('0x3b')]};});_0x385a21[_0x7a11('0x3c')]=_[_0x7a11('0x37')](_0x3264f8,_0x7a11('0x35'));_0x385a21[_0x7a11('0x3d')]=_[_0x7a11('0x3e')](_0x32c0ff[_0x7a11('0x3d')]);_0x385a21[_0x7a11('0x3f')]=_[_0x7a11('0x40')](_0x385a21[_0x7a11('0x3c')],_0x385a21[_0x7a11('0x3d')]);_0x183b36[_0x7a11('0x41')]=_[_0x7a11('0x40')](_0x385a21[_0x7a11('0x3c')],qs[_0x7a11('0x42')](_0x32c0ff[_0x7a11('0x3d')]['fields']));_0x183b36[_0x7a11('0x41')]=_0x183b36['attributes']['length']?_0x183b36[_0x7a11('0x41')]:_0x385a21[_0x7a11('0x3c')];if(!_0x32c0ff['query'][_0x7a11('0x43')](_0x7a11('0x44'))){_0x183b36[_0x7a11('0x2b')]=qs[_0x7a11('0x2b')](_0x32c0ff[_0x7a11('0x3d')][_0x7a11('0x2b')]);_0x183b36[_0x7a11('0x28')]=qs[_0x7a11('0x28')](_0x32c0ff['query'][_0x7a11('0x28')]);}_0x183b36[_0x7a11('0x45')]=qs[_0x7a11('0x46')](_0x32c0ff['query'][_0x7a11('0x46')]);_0x183b36[_0x7a11('0x47')]=qs[_0x7a11('0x3f')](_[_0x7a11('0x48')](_0x32c0ff[_0x7a11('0x3d')],_0x385a21[_0x7a11('0x3f')]),_0x3264f8);if(_0x32c0ff[_0x7a11('0x3d')]['filter']){_0x183b36[_0x7a11('0x47')]=_[_0x7a11('0x49')](_0x183b36[_0x7a11('0x47')],{'$or':_[_0x7a11('0x37')](_0x3264f8,function(_0x2b8a46){if(_0x2b8a46[_0x7a11('0x3a')]!==_0x7a11('0x4a')){var _0x11ae9e={};_0x11ae9e[_0x2b8a46[_0x7a11('0x35')]]={'$like':'%'+_0x32c0ff['query']['filter']+'%'};return _0x11ae9e;}})});}_0x183b36=_[_0x7a11('0x49')]({},_0x183b36,_0x32c0ff['options']);var _0x516f3c={'where':_0x183b36['where']};return db[_0x7a11('0x38')][_0x7a11('0x2a')](_0x516f3c)[_0x7a11('0x1a')](function(_0x505789){_0x54ecaa[_0x7a11('0x2a')]=_0x505789;if(_0x32c0ff[_0x7a11('0x3d')][_0x7a11('0x4b')]){_0x183b36['include']=[{'all':!![]}];}return db['VoiceContext']['findAll'](_0x183b36);})[_0x7a11('0x1a')](function(_0x5468d2){_0x54ecaa[_0x7a11('0x4c')]=_0x5468d2;return _0x54ecaa;})['then'](respondWithFilteredResult(_0x2e2942,_0x183b36))[_0x7a11('0x4d')](handleError(_0x2e2942,null));};exports['show']=function(_0x392945,_0x3e33b3){var _0x55c3cc={'raw':![],'where':{'id':_0x392945[_0x7a11('0x4e')]['id']}},_0x314f3f={};_0x314f3f[_0x7a11('0x3c')]=_[_0x7a11('0x3e')](db[_0x7a11('0x38')]['rawAttributes']);_0x314f3f['query']=_[_0x7a11('0x3e')](_0x392945[_0x7a11('0x3d')]);_0x314f3f['filters']=_[_0x7a11('0x40')](_0x314f3f[_0x7a11('0x3c')],_0x314f3f[_0x7a11('0x3d')]);_0x55c3cc[_0x7a11('0x41')]=_[_0x7a11('0x40')](_0x314f3f[_0x7a11('0x3c')],qs['fields'](_0x392945[_0x7a11('0x3d')]['fields']));_0x55c3cc['attributes']=_0x55c3cc['attributes']['length']?_0x55c3cc[_0x7a11('0x41')]:_0x314f3f[_0x7a11('0x3c')];if(_0x392945[_0x7a11('0x3d')][_0x7a11('0x4b')]){_0x55c3cc['include']=[{'all':!![]}];}_0x55c3cc=_[_0x7a11('0x49')]({},_0x55c3cc,_0x392945['options']);return db['VoiceContext'][_0x7a11('0x4f')](_0x55c3cc)[_0x7a11('0x1a')](handleEntityNotFound(_0x3e33b3,null))[_0x7a11('0x1a')](respondWithResult(_0x3e33b3,null))[_0x7a11('0x4d')](handleError(_0x3e33b3,null));};exports[_0x7a11('0x50')]=function(_0x2a81dd,_0x113c9a,_0x10da39){var _0x3157d4;return db[_0x7a11('0x38')][_0x7a11('0x50')](_0x2a81dd[_0x7a11('0x51')],{'raw':!![]})['then'](function(_0x2cc483){_0x3157d4=_0x2cc483;return db['VoiceContext'][_0x7a11('0x52')]({'raw':!![]});})[_0x7a11('0x1a')](function(_0xc5a99e){var _0x17bc75=fs['readFileSync'](path[_0x7a11('0x53')](config[_0x7a11('0x54')],_0x7a11('0x55')),_0x7a11('0x56'));var _0x49f237=ejs[_0x7a11('0x57')](_0x17bc75,{'contexts':_0xc5a99e||[]});fs[_0x7a11('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x49f237);})[_0x7a11('0x1a')](function(){return respondWithRpcPromise(_0x7a11('0x59'),_0x7a11('0x50'),{'module':'chan_sip.so'});})[_0x7a11('0x1a')](function(){var _0x1daf34=_0x2a81dd['user']['get']({'plain':!![]});if(!_0x1daf34)throw new Error(_0x7a11('0x5a'));if(_0x1daf34[_0x7a11('0x5b')]==='user'){var _0x52aef3=_0x3157d4[_0x7a11('0x31')]({'plain':!![]});return db['UserProfileSection'][_0x7a11('0x4f')]({'where':{'name':'Contexts','userProfileId':_0x1daf34[_0x7a11('0x5c')]},'raw':!![]})[_0x7a11('0x1a')](function(_0x15837e){if(_0x15837e&&_0x15837e[_0x7a11('0x5d')]===0x0){return db['UserProfileResource']['create']({'name':_0x52aef3[_0x7a11('0x35')],'resourceId':_0x52aef3['id'],'type':_0x15837e[_0x7a11('0x35')],'sectionId':_0x15837e['id']},{})[_0x7a11('0x1a')](function(){return _0x3157d4;});}else{return _0x3157d4;}})[_0x7a11('0x4d')](function(_0xb3608c){logger[_0x7a11('0x1f')](_0x7a11('0x5e'),_0xb3608c);throw _0xb3608c;});}return _0x3157d4;})[_0x7a11('0x1a')](respondWithResult(_0x113c9a,0xc9))[_0x7a11('0x4d')](handleError(_0x113c9a,null));};exports[_0x7a11('0x2f')]=function(_0x589ba2,_0x1f4f84,_0x1c70b8){var _0x3047ca;return db[_0x7a11('0x38')]['find']({'where':{'id':_0x589ba2[_0x7a11('0x4e')]['id']}})[_0x7a11('0x1a')](handleEntityNotFound(_0x1f4f84,null))[_0x7a11('0x1a')](saveUpdates(_0x589ba2[_0x7a11('0x51')],null))[_0x7a11('0x1a')](function(_0x12886c){if(_0x12886c){_0x3047ca=_0x12886c;return db[_0x7a11('0x38')]['findAll']({'raw':!![]});}})[_0x7a11('0x1a')](function(_0x582193){var _0x4f24bf=fs[_0x7a11('0x5f')](path[_0x7a11('0x53')](config[_0x7a11('0x54')],_0x7a11('0x55')),_0x7a11('0x56'));var _0x515036=ejs[_0x7a11('0x57')](_0x4f24bf,{'contexts':_0x582193||[]});fs[_0x7a11('0x58')](_0x7a11('0x60'),_0x515036);})[_0x7a11('0x1a')](function(){return respondWithRpcPromise('Reload',_0x7a11('0x2f'),{'module':_0x7a11('0x61')});})[_0x7a11('0x1a')](function(){return _0x3047ca;})[_0x7a11('0x1a')](respondWithResult(_0x1f4f84,null))['catch'](handleError(_0x1f4f84,null));};exports[_0x7a11('0x30')]=function(_0x8152cc,_0x52c11e,_0x8be378){var _0x5e5a46;return db[_0x7a11('0x38')]['find']({'where':{'id':_0x8152cc[_0x7a11('0x4e')]['id']}})[_0x7a11('0x1a')](handleEntityNotFound(_0x52c11e,null))[_0x7a11('0x1a')](removeEntity(_0x52c11e,null))['then'](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0x7a11('0x1a')](function(_0x29ad16){var _0x1c9d3e=fs['readFileSync'](path[_0x7a11('0x53')](config['root'],_0x7a11('0x55')),_0x7a11('0x56'));var _0x9e3769=ejs['render'](_0x1c9d3e,{'contexts':_0x29ad16});fs[_0x7a11('0x58')](_0x7a11('0x60'),_0x9e3769);return respondWithRpcPromise(_0x7a11('0x59'),_0x7a11('0x30'),{'module':_0x7a11('0x61')});})['catch'](handleError(_0x52c11e,null));};
\ No newline at end of file
+var _0xe448=['error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','Contexts','UserProfileResource','name','send','index','map','VoiceContext','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x41288c,_0x4663f6){var _0x1f217b=function(_0x414f1f){while(--_0x414f1f){_0x41288c['push'](_0x41288c['shift']());}};_0x1f217b(++_0x4663f6);}(_0xe448,0x175));var _0x8e44=function(_0x4ccf1e,_0x124269){_0x4ccf1e=_0x4ccf1e-0x0;var _0xc0df7d=_0xe448[_0x4ccf1e];return _0xc0df7d;};'use strict';var emlformat=require(_0x8e44('0x0'));var rimraf=require(_0x8e44('0x1'));var zipdir=require(_0x8e44('0x2'));var jsonpatch=require(_0x8e44('0x3'));var rp=require(_0x8e44('0x4'));var moment=require(_0x8e44('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8e44('0x6'));var util=require(_0x8e44('0x7'));var path=require(_0x8e44('0x8'));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(_0x8e44('0x9'));var squel=require(_0x8e44('0xa'));var crypto=require('crypto');var jsforce=require(_0x8e44('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8e44('0xc'));var querystring=require(_0x8e44('0xd'));var Papa=require('papaparse');var Redis=require(_0x8e44('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8e44('0xf'));var as=require(_0x8e44('0x10'));var hardwareService=require(_0x8e44('0x11'));var logger=require(_0x8e44('0x12'))('api');var utils=require(_0x8e44('0x13'));var config=require(_0x8e44('0x14'));var licenseUtil=require(_0x8e44('0x15'));var db=require(_0x8e44('0x16'))['db'];var jayson=require(_0x8e44('0x17'));var client=jayson[_0x8e44('0x18')][_0x8e44('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x98e475,_0x4e7d19,_0x29ce03,_0x20ca9f){return new BPromise(function(_0x24cf09,_0x1b058a){var _0x28cf5f=_0x20ca9f||client;return _0x28cf5f['request'](_0x98e475,_0x29ce03)['then'](function(_0x59006c){logger['info'](_0x8e44('0x1a'),_0x4e7d19,'request\x20sent');logger[_0x8e44('0x1b')](_0x8e44('0x1c'),_0x4e7d19,_0x8e44('0x1d'),JSON[_0x8e44('0x1e')](_0x59006c));if(_0x59006c[_0x8e44('0x1f')]){if(_0x59006c['error'][_0x8e44('0x20')]===0x1f4){logger['error'](_0x8e44('0x1a'),_0x4e7d19,_0x59006c['error'][_0x8e44('0x21')]);return _0x1b058a(_0x59006c['error'][_0x8e44('0x21')]);}logger[_0x8e44('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x4e7d19,_0x59006c['error'][_0x8e44('0x21')]);return _0x24cf09(_0x59006c['error'][_0x8e44('0x21')]);}else{logger['info'](_0x8e44('0x1a'),_0x4e7d19,_0x8e44('0x1d'));_0x24cf09(_0x59006c['result'][_0x8e44('0x21')]);}})[_0x8e44('0x22')](function(_0x6bb9b6){logger['error'](_0x8e44('0x1a'),_0x4e7d19,_0x6bb9b6);_0x1b058a(_0x6bb9b6);});});}function respondWithStatusCode(_0x4d3499,_0x50af5a){_0x50af5a=_0x50af5a||0xcc;return function(_0x5dc10b){if(_0x5dc10b){return _0x4d3499[_0x8e44('0x23')](_0x50af5a);}return _0x4d3499[_0x8e44('0x24')](_0x50af5a)[_0x8e44('0x25')]();};}function respondWithResult(_0x283128,_0x572c46){_0x572c46=_0x572c46||0xc8;return function(_0x98dfbe){if(_0x98dfbe){return _0x283128['status'](_0x572c46)[_0x8e44('0x26')](_0x98dfbe);}};}function respondWithFilteredResult(_0x54fd73,_0x271f76){return function(_0x958310){if(_0x958310){var _0x59ce4b=typeof _0x271f76[_0x8e44('0x27')]===_0x8e44('0x28')&&typeof _0x271f76[_0x8e44('0x29')]===_0x8e44('0x28');var _0x363645=_0x958310[_0x8e44('0x2a')];var _0x517dfa=_0x59ce4b?0x0:_0x271f76[_0x8e44('0x27')];var _0x4cb1af=_0x59ce4b?_0x958310[_0x8e44('0x2a')]:_0x271f76[_0x8e44('0x27')]+_0x271f76[_0x8e44('0x29')];var _0x4bbd44;if(_0x4cb1af>=_0x363645){_0x4cb1af=_0x363645;_0x4bbd44=0xc8;}else{_0x4bbd44=0xce;}_0x54fd73[_0x8e44('0x24')](_0x4bbd44);return _0x54fd73[_0x8e44('0x2b')](_0x8e44('0x2c'),_0x517dfa+'-'+_0x4cb1af+'/'+_0x363645)[_0x8e44('0x26')](_0x958310);}return null;};}function patchUpdates(_0x653a8){return function(_0x23aced){try{jsonpatch[_0x8e44('0x2d')](_0x23aced,_0x653a8,!![]);}catch(_0x3c076e){return BPromise[_0x8e44('0x2e')](_0x3c076e);}return _0x23aced[_0x8e44('0x2f')]();};}function saveUpdates(_0x9b2ea2,_0x1e621d){return function(_0x2b2ec4){if(_0x2b2ec4){return _0x2b2ec4[_0x8e44('0x30')](_0x9b2ea2)['then'](function(_0x284164){return _0x284164;});}return null;};}function removeEntity(_0x36e1c9,_0x58d07a){return function(_0x2c7b76){if(_0x2c7b76){return _0x2c7b76[_0x8e44('0x31')]()[_0x8e44('0x32')](function(){var _0xfaad0e=_0x2c7b76[_0x8e44('0x33')]({'plain':!![]});var _0x4df719=_0x8e44('0x34');return db[_0x8e44('0x35')]['destroy']({'where':{'type':_0x4df719,'resourceId':_0xfaad0e['id']}})[_0x8e44('0x32')](function(){return _0x2c7b76;});})['then'](function(){_0x36e1c9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24b5d7,_0x5d27b3){return function(_0x13179b){if(!_0x13179b){_0x24b5d7['sendStatus'](0x194);}return _0x13179b;};}function handleError(_0x3a54ea,_0x3e9f64){_0x3e9f64=_0x3e9f64||0x1f4;return function(_0x1dea0c){logger[_0x8e44('0x1f')](_0x1dea0c['stack']);if(_0x1dea0c[_0x8e44('0x36')]){delete _0x1dea0c[_0x8e44('0x36')];}_0x3a54ea[_0x8e44('0x24')](_0x3e9f64)[_0x8e44('0x37')](_0x1dea0c);};}exports[_0x8e44('0x38')]=function(_0x2f421d,_0x311435){var _0x8b9cd3={},_0x655fcd={},_0x204c8b={'count':0x0,'rows':[]};var _0x14891b=_[_0x8e44('0x39')](db[_0x8e44('0x3a')]['rawAttributes'],function(_0x587497){return{'name':_0x587497[_0x8e44('0x3b')],'type':_0x587497['type'][_0x8e44('0x3c')]};});_0x655fcd[_0x8e44('0x3d')]=_[_0x8e44('0x39')](_0x14891b,_0x8e44('0x36'));_0x655fcd[_0x8e44('0x3e')]=_['keys'](_0x2f421d[_0x8e44('0x3e')]);_0x655fcd[_0x8e44('0x3f')]=_[_0x8e44('0x40')](_0x655fcd[_0x8e44('0x3d')],_0x655fcd[_0x8e44('0x3e')]);_0x8b9cd3['attributes']=_['intersection'](_0x655fcd['model'],qs[_0x8e44('0x41')](_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x41')]));_0x8b9cd3['attributes']=_0x8b9cd3[_0x8e44('0x42')][_0x8e44('0x43')]?_0x8b9cd3[_0x8e44('0x42')]:_0x655fcd[_0x8e44('0x3d')];if(!_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x44')]('nolimit')){_0x8b9cd3[_0x8e44('0x29')]=qs[_0x8e44('0x29')](_0x2f421d['query'][_0x8e44('0x29')]);_0x8b9cd3[_0x8e44('0x27')]=qs[_0x8e44('0x27')](_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x27')]);}_0x8b9cd3['order']=qs[_0x8e44('0x45')](_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x45')]);_0x8b9cd3[_0x8e44('0x46')]=qs[_0x8e44('0x3f')](_['pick'](_0x2f421d[_0x8e44('0x3e')],_0x655fcd[_0x8e44('0x3f')]),_0x14891b);if(_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x47')]){_0x8b9cd3['where']=_['merge'](_0x8b9cd3['where'],{'$or':_[_0x8e44('0x39')](_0x14891b,function(_0x2b485d){if(_0x2b485d[_0x8e44('0x48')]!==_0x8e44('0x49')){var _0x1dea53={};_0x1dea53[_0x2b485d[_0x8e44('0x36')]]={'$like':'%'+_0x2f421d[_0x8e44('0x3e')][_0x8e44('0x47')]+'%'};return _0x1dea53;}})});}_0x8b9cd3=_[_0x8e44('0x4a')]({},_0x8b9cd3,_0x2f421d[_0x8e44('0x4b')]);var _0x124512={'where':_0x8b9cd3['where']};return db['VoiceContext']['count'](_0x124512)[_0x8e44('0x32')](function(_0x5356f0){_0x204c8b['count']=_0x5356f0;if(_0x2f421d['query'][_0x8e44('0x4c')]){_0x8b9cd3[_0x8e44('0x4d')]=[{'all':!![]}];}return db['VoiceContext'][_0x8e44('0x4e')](_0x8b9cd3);})['then'](function(_0x25c906){_0x204c8b[_0x8e44('0x4f')]=_0x25c906;return _0x204c8b;})[_0x8e44('0x32')](respondWithFilteredResult(_0x311435,_0x8b9cd3))['catch'](handleError(_0x311435,null));};exports[_0x8e44('0x50')]=function(_0x399946,_0x2414e9){var _0x2d0d0e={'raw':![],'where':{'id':_0x399946[_0x8e44('0x51')]['id']}},_0x287436={};_0x287436[_0x8e44('0x3d')]=_[_0x8e44('0x52')](db['VoiceContext'][_0x8e44('0x53')]);_0x287436['query']=_[_0x8e44('0x52')](_0x399946[_0x8e44('0x3e')]);_0x287436[_0x8e44('0x3f')]=_[_0x8e44('0x40')](_0x287436[_0x8e44('0x3d')],_0x287436[_0x8e44('0x3e')]);_0x2d0d0e[_0x8e44('0x42')]=_['intersection'](_0x287436[_0x8e44('0x3d')],qs[_0x8e44('0x41')](_0x399946[_0x8e44('0x3e')][_0x8e44('0x41')]));_0x2d0d0e[_0x8e44('0x42')]=_0x2d0d0e['attributes'][_0x8e44('0x43')]?_0x2d0d0e[_0x8e44('0x42')]:_0x287436[_0x8e44('0x3d')];if(_0x399946['query'][_0x8e44('0x4c')]){_0x2d0d0e['include']=[{'all':!![]}];}_0x2d0d0e=_[_0x8e44('0x4a')]({},_0x2d0d0e,_0x399946[_0x8e44('0x4b')]);return db[_0x8e44('0x3a')]['find'](_0x2d0d0e)['then'](handleEntityNotFound(_0x2414e9,null))[_0x8e44('0x32')](respondWithResult(_0x2414e9,null))[_0x8e44('0x22')](handleError(_0x2414e9,null));};exports[_0x8e44('0x54')]=function(_0xdee772,_0x1a6b13,_0x369cb1){var _0x3373cb;return db[_0x8e44('0x3a')][_0x8e44('0x54')](_0xdee772[_0x8e44('0x55')],{'raw':!![]})[_0x8e44('0x32')](function(_0x3842e1){_0x3373cb=_0x3842e1;return db[_0x8e44('0x3a')][_0x8e44('0x4e')]({'raw':!![]});})['then'](function(_0x4083e5){var _0xaa8a59=fs[_0x8e44('0x56')](path[_0x8e44('0x57')](config[_0x8e44('0x58')],_0x8e44('0x59')),_0x8e44('0x5a'));var _0x212591=ejs[_0x8e44('0x5b')](_0xaa8a59,{'contexts':_0x4083e5||[]});fs[_0x8e44('0x5c')](_0x8e44('0x5d'),_0x212591);})[_0x8e44('0x32')](function(){return respondWithRpcPromise(_0x8e44('0x5e'),'create',{'module':_0x8e44('0x5f')});})['then'](function(){var _0x1bfdba=_0xdee772[_0x8e44('0x60')][_0x8e44('0x33')]({'plain':!![]});if(!_0x1bfdba)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1bfdba['role']===_0x8e44('0x60')){var _0x2a96e5=_0x3373cb['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Contexts','userProfileId':_0x1bfdba[_0x8e44('0x61')]},'raw':!![]})[_0x8e44('0x32')](function(_0x55bc0c){if(_0x55bc0c&&_0x55bc0c[_0x8e44('0x62')]===0x0){return db[_0x8e44('0x35')][_0x8e44('0x54')]({'name':_0x2a96e5['name'],'resourceId':_0x2a96e5['id'],'type':_0x55bc0c[_0x8e44('0x36')],'sectionId':_0x55bc0c['id']},{})[_0x8e44('0x32')](function(){return _0x3373cb;});}else{return _0x3373cb;}})['catch'](function(_0x5095ab){logger[_0x8e44('0x1f')](_0x8e44('0x63'),_0x5095ab);throw _0x5095ab;});}return _0x3373cb;})['then'](respondWithResult(_0x1a6b13,0xc9))['catch'](handleError(_0x1a6b13,null));};exports['update']=function(_0x377a90,_0x2ebc6e,_0x6ea851){var _0x473f9b;return db[_0x8e44('0x3a')][_0x8e44('0x64')]({'where':{'id':_0x377a90[_0x8e44('0x51')]['id']}})['then'](handleEntityNotFound(_0x2ebc6e,null))[_0x8e44('0x32')](saveUpdates(_0x377a90[_0x8e44('0x55')],null))[_0x8e44('0x32')](function(_0x1a31a0){if(_0x1a31a0){_0x473f9b=_0x1a31a0;return db[_0x8e44('0x3a')]['findAll']({'raw':!![]});}})[_0x8e44('0x32')](function(_0x1ff08e){var _0x34edf9=fs[_0x8e44('0x56')](path['join'](config[_0x8e44('0x58')],'server/files/templates/context.ejs'),'utf8');var _0x5b382a=ejs['render'](_0x34edf9,{'contexts':_0x1ff08e||[]});fs['writeFileSync'](_0x8e44('0x5d'),_0x5b382a);})['then'](function(){return respondWithRpcPromise(_0x8e44('0x5e'),'update',{'module':_0x8e44('0x5f')});})['then'](function(){return _0x473f9b;})['then'](respondWithResult(_0x2ebc6e,null))[_0x8e44('0x22')](handleError(_0x2ebc6e,null));};exports['destroy']=function(_0x685210,_0x571d78,_0x42ba46){var _0x29694f;return db[_0x8e44('0x3a')]['find']({'where':{'id':_0x685210['params']['id']}})['then'](handleEntityNotFound(_0x571d78,null))[_0x8e44('0x32')](removeEntity(_0x571d78,null))[_0x8e44('0x32')](function(){return db[_0x8e44('0x3a')]['findAll']({'raw':!![]});})['then'](function(_0x2f35aa){var _0x13d32e=fs[_0x8e44('0x56')](path[_0x8e44('0x57')](config[_0x8e44('0x58')],_0x8e44('0x59')),_0x8e44('0x5a'));var _0x351cf3=ejs[_0x8e44('0x5b')](_0x13d32e,{'contexts':_0x2f35aa});fs['writeFileSync'](_0x8e44('0x5d'),_0x351cf3);return respondWithRpcPromise('Reload',_0x8e44('0x31'),{'module':_0x8e44('0x5f')});})[_0x8e44('0x22')](handleError(_0x571d78,null));};
\ No newline at end of file
index b115763..ab6f818 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa372=['exports','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes'];(function(_0x9c3c9d,_0x3293b3){var _0x271fce=function(_0x1ea85b){while(--_0x1ea85b){_0x9c3c9d['push'](_0x9c3c9d['shift']());}};_0x271fce(++_0x3293b3);}(_0xa372,0xe4));var _0x2a37=function(_0x50c818,_0x8e53bb){_0x50c818=_0x50c818-0x0;var _0x32c247=_0xa372[_0x50c818];return _0x32c247;};'use strict';var _=require(_0x2a37('0x0'));var util=require(_0x2a37('0x1'));var logger=require(_0x2a37('0x2'))(_0x2a37('0x3'));var moment=require('moment');var BPromise=require(_0x2a37('0x4'));var rp=require(_0x2a37('0x5'));var fs=require('fs');var path=require(_0x2a37('0x6'));var rimraf=require(_0x2a37('0x7'));var config=require(_0x2a37('0x8'));var attributes=require(_0x2a37('0x9'));module[_0x2a37('0xa')]=function(_0x5030ca,_0x1524a6){return _0x5030ca[_0x2a37('0xb')](_0x2a37('0xc'),attributes,{'tableName':_0x2a37('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x664d=['path','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','../../config/logger','api','bluebird'];(function(_0x2b9078,_0x4aba49){var _0x4b5ec9=function(_0xb31b20){while(--_0xb31b20){_0x2b9078['push'](_0x2b9078['shift']());}};_0x4b5ec9(++_0x4aba49);}(_0x664d,0x8b));var _0xd664=function(_0x2b85d5,_0x3115b7){_0x2b85d5=_0x2b85d5-0x0;var _0xe8c96f=_0x664d[_0x2b85d5];return _0xe8c96f;};'use strict';var _=require(_0xd664('0x0'));var util=require('util');var logger=require(_0xd664('0x1'))(_0xd664('0x2'));var moment=require('moment');var BPromise=require(_0xd664('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd664('0x4'));var rimraf=require('rimraf');var config=require(_0xd664('0x5'));var attributes=require(_0xd664('0x6'));module[_0xd664('0x7')]=function(_0xdd214f,_0x286088){return _0xdd214f[_0xd664('0x8')](_0xd664('0x9'),attributes,{'tableName':_0xd664('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55e6db5..1082d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa56=['then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0xd38a8a,_0x303834){var _0xdb71fc=function(_0x1c3c06){while(--_0x1c3c06){_0xd38a8a['push'](_0xd38a8a['shift']());}};_0xdb71fc(++_0x303834);}(_0xaa56,0x1ac));var _0x6aa5=function(_0xd4dd18,_0xc0f745){_0xd4dd18=_0xd4dd18-0x0;var _0x4507f8=_0xaa56[_0xd4dd18];return _0x4507f8;};'use strict';var _=require('lodash');var util=require(_0x6aa5('0x0'));var moment=require(_0x6aa5('0x1'));var BPromise=require('bluebird');var rs=require(_0x6aa5('0x2'));var fs=require('fs');var Redis=require(_0x6aa5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x6aa5('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x6aa5('0x5'));var jayson=require(_0x6aa5('0x6'));var client=jayson[_0x6aa5('0x7')][_0x6aa5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x52b40a,_0x4fe8f0,_0x4b8f9c){return new BPromise(function(_0xc9b90d,_0xc8f2b0){return client['request'](_0x52b40a,_0x4b8f9c)[_0x6aa5('0x9')](function(_0x3f7863){logger[_0x6aa5('0xa')](_0x6aa5('0xb'),_0x4fe8f0,_0x6aa5('0xc'));logger[_0x6aa5('0xd')](_0x6aa5('0xe'),_0x4fe8f0,_0x6aa5('0xc'),JSON[_0x6aa5('0xf')](_0x3f7863));if(_0x3f7863[_0x6aa5('0x10')]){if(_0x3f7863[_0x6aa5('0x10')]['code']===0x1f4){logger[_0x6aa5('0x10')](_0x6aa5('0xb'),_0x4fe8f0,_0x3f7863[_0x6aa5('0x10')]['message']);return _0xc8f2b0(_0x3f7863[_0x6aa5('0x10')][_0x6aa5('0x11')]);}logger[_0x6aa5('0x10')](_0x6aa5('0xb'),_0x4fe8f0,_0x3f7863[_0x6aa5('0x10')][_0x6aa5('0x11')]);return _0xc9b90d(_0x3f7863[_0x6aa5('0x10')][_0x6aa5('0x11')]);}else{logger[_0x6aa5('0xa')]('VoiceContext,\x20%s,\x20%s',_0x4fe8f0,_0x6aa5('0xc'));_0xc9b90d(_0x3f7863['result'][_0x6aa5('0x11')]);}})[_0x6aa5('0x12')](function(_0x4a8257){logger[_0x6aa5('0x10')](_0x6aa5('0xb'),_0x4fe8f0,_0x4a8257);_0xc8f2b0(_0x4a8257);});});}
\ No newline at end of file
+var _0x8383=['stringify','error','message','info','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x6b2c5c,_0x3f6949){var _0x18e3ce=function(_0x1a143f){while(--_0x1a143f){_0x6b2c5c['push'](_0x6b2c5c['shift']());}};_0x18e3ce(++_0x3f6949);}(_0x8383,0x98));var _0x3838=function(_0x2373de,_0x57200f){_0x2373de=_0x2373de-0x0;var _0x435e4f=_0x8383[_0x2373de];return _0x435e4f;};'use strict';var _=require(_0x3838('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3838('0x1'));var rs=require(_0x3838('0x2'));var fs=require('fs');var Redis=require(_0x3838('0x3'));var db=require(_0x3838('0x4'))['db'];var utils=require(_0x3838('0x5'));var logger=require(_0x3838('0x6'))(_0x3838('0x7'));var config=require(_0x3838('0x8'));var jayson=require(_0x3838('0x9'));var client=jayson[_0x3838('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x239750,_0x235001,_0x4cf52b){return new BPromise(function(_0x2abbda,_0x5e2e42){return client[_0x3838('0xb')](_0x239750,_0x4cf52b)[_0x3838('0xc')](function(_0x340c39){logger['info'](_0x3838('0xd'),_0x235001,_0x3838('0xe'));logger[_0x3838('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x235001,_0x3838('0xe'),JSON[_0x3838('0x10')](_0x340c39));if(_0x340c39[_0x3838('0x11')]){if(_0x340c39[_0x3838('0x11')]['code']===0x1f4){logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x340c39[_0x3838('0x11')]['message']);return _0x5e2e42(_0x340c39[_0x3838('0x11')]['message']);}logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x340c39[_0x3838('0x11')][_0x3838('0x12')]);return _0x2abbda(_0x340c39[_0x3838('0x11')]['message']);}else{logger[_0x3838('0x13')](_0x3838('0xd'),_0x235001,_0x3838('0xe'));_0x2abbda(_0x340c39[_0x3838('0x14')][_0x3838('0x12')]);}})['catch'](function(_0x464fd9){logger[_0x3838('0x11')](_0x3838('0xd'),_0x235001,_0x464fd9);_0x5e2e42(_0x464fd9);});});}
\ No newline at end of file
index 0a541fa..a284f01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7109=['delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','/describe','/:id','show','post','create'];(function(_0x481e7f,_0x13af2b){var _0x198ba4=function(_0x1a57be){while(--_0x1a57be){_0x481e7f['push'](_0x481e7f['shift']());}};_0x198ba4(++_0x13af2b);}(_0x7109,0xd4));var _0x9710=function(_0x26df48,_0x22aa50){_0x26df48=_0x26df48-0x0;var _0x209047=_0x7109[_0x26df48];return _0x209047;};'use strict';var multer=require(_0x9710('0x0'));var util=require(_0x9710('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9710('0x2'));var router=express[_0x9710('0x3')]();var fs_extra=require(_0x9710('0x4'));var auth=require(_0x9710('0x5'));var interaction=require(_0x9710('0x6'));var config=require(_0x9710('0x7'));var controller=require(_0x9710('0x8'));router['get']('/',auth[_0x9710('0x9')](),controller[_0x9710('0xa')]);router['get'](_0x9710('0xb'),auth[_0x9710('0x9')](),controller['describe']);router['get'](_0x9710('0xc'),auth[_0x9710('0x9')](),controller[_0x9710('0xd')]);router[_0x9710('0xe')]('/',auth[_0x9710('0x9')](),controller[_0x9710('0xf')]);router['put'](_0x9710('0xc'),auth[_0x9710('0x9')](),controller['update']);router[_0x9710('0x10')](_0x9710('0xc'),auth[_0x9710('0x9')](),controller[_0x9710('0x11')]);module[_0x9710('0x12')]=router;
\ No newline at end of file
+var _0x6e65=['../../config/environment','./voiceDialReport.controller','get','index','isAuthenticated','describe','post','create','put','update','delete','multer','path','connect-timeout','express','Router','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6e65,0x1c5));var _0x56e6=function(_0x28c4db,_0x2ccd05){_0x28c4db=_0x28c4db-0x0;var _0x5907ed=_0x6e65[_0x28c4db];return _0x5907ed;};'use strict';var multer=require(_0x56e6('0x0'));var util=require('util');var path=require(_0x56e6('0x1'));var timeout=require(_0x56e6('0x2'));var express=require(_0x56e6('0x3'));var router=express[_0x56e6('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x56e6('0x5'));var config=require(_0x56e6('0x6'));var controller=require(_0x56e6('0x7'));router[_0x56e6('0x8')]('/',auth['isAuthenticated'](),controller[_0x56e6('0x9')]);router[_0x56e6('0x8')]('/describe',auth[_0x56e6('0xa')](),controller[_0x56e6('0xb')]);router['get']('/:id',auth[_0x56e6('0xa')](),controller['show']);router[_0x56e6('0xc')]('/',auth[_0x56e6('0xa')](),controller[_0x56e6('0xd')]);router[_0x56e6('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x56e6('0xf')]);router[_0x56e6('0x10')]('/:id',auth[_0x56e6('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 09326e0..e6c5af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x3bd4a1,_0x128fe8){var _0x46d229=function(_0xa7c2d3){while(--_0xa7c2d3){_0x3bd4a1['push'](_0x3bd4a1['shift']());}};_0x46d229(++_0x128fe8);}(_0xedd9,0xfc));var _0x9edd=function(_0x3c4bfc,_0x1508b5){_0x3c4bfc=_0x3c4bfc-0x0;var _0x37366f=_0xedd9[_0x3c4bfc];return _0x37366f;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'privilege':{'type':Sequelize[_0x9edd('0x1')]},'channel':{'type':Sequelize[_0x9edd('0x1')]},'channelstate':{'type':Sequelize[_0x9edd('0x2')]},'channelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'calleridnum':{'type':Sequelize[_0x9edd('0x1')]},'calleridname':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9edd('0x1')]},'accountcode':{'type':Sequelize[_0x9edd('0x1')]},'context':{'type':Sequelize[_0x9edd('0x1')]},'exten':{'type':Sequelize[_0x9edd('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x9edd('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9edd('0x1')]},'destchannelstate':{'type':Sequelize[_0x9edd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x9edd('0x1')]},'destaccountcode':{'type':Sequelize[_0x9edd('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9edd('0x1')]},'destpriority':{'type':Sequelize[_0x9edd('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x9edd('0x1')]},'dialstring':{'type':Sequelize[_0x9edd('0x1')]},'dialstatus':{'type':Sequelize[_0x9edd('0x1')]},'starttime':{'type':Sequelize[_0x9edd('0x3')]},'answertime':{'type':Sequelize[_0x9edd('0x3')]},'endtime':{'type':Sequelize[_0x9edd('0x3')]},'lastevent':{'type':Sequelize[_0x9edd('0x1')],'comment':_0x9edd('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0x9edd('0x2')]},'holdtime':{'type':Sequelize[_0x9edd('0x2')]},'billableseconds':{'type':Sequelize[_0x9edd('0x2')]}};
\ No newline at end of file
+var _0xe5b3=['STRING','INTEGER','DATE','exports'];(function(_0x5a5936,_0x1fef78){var _0x2d9112=function(_0x479e74){while(--_0x479e74){_0x5a5936['push'](_0x5a5936['shift']());}};_0x2d9112(++_0x1fef78);}(_0xe5b3,0x133));var _0x3e5b=function(_0x2348b5,_0x454465){_0x2348b5=_0x2348b5-0x0;var _0x13dad3=_0xe5b3[_0x2348b5];return _0x13dad3;};'use strict';var Sequelize=require('sequelize');module[_0x3e5b('0x0')]={'privilege':{'type':Sequelize[_0x3e5b('0x1')]},'channel':{'type':Sequelize[_0x3e5b('0x1')]},'channelstate':{'type':Sequelize[_0x3e5b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'calleridnum':{'type':Sequelize[_0x3e5b('0x1')]},'calleridname':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'connectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'language':{'type':Sequelize[_0x3e5b('0x1')]},'accountcode':{'type':Sequelize[_0x3e5b('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x3e5b('0x1')]},'priority':{'type':Sequelize[_0x3e5b('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x3e5b('0x1')]},'destchannel':{'type':Sequelize[_0x3e5b('0x1')]},'destchannelstate':{'type':Sequelize[_0x3e5b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x3e5b('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x3e5b('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x3e5b('0x1')]},'destlanguage':{'type':Sequelize[_0x3e5b('0x1')]},'destaccountcode':{'type':Sequelize[_0x3e5b('0x1')]},'destcontext':{'type':Sequelize[_0x3e5b('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x3e5b('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x3e5b('0x1')]},'dialstring':{'type':Sequelize[_0x3e5b('0x1')]},'dialstatus':{'type':Sequelize[_0x3e5b('0x1')]},'starttime':{'type':Sequelize[_0x3e5b('0x3')]},'answertime':{'type':Sequelize[_0x3e5b('0x3')]},'endtime':{'type':Sequelize[_0x3e5b('0x3')]},'lastevent':{'type':Sequelize[_0x3e5b('0x1')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x3e5b('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 6e45602..61c0216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f60=['update','then','destroy','sendStatus','stack','name','send','VoiceDialReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','count','include','findAll','rows','catch','show','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','set','apply','reject'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4f60,0xc8));var _0x04f6=function(_0xd74157,_0x4f4b99){_0xd74157=_0xd74157-0x0;var _0x508020=_0x4f60[_0xd74157];return _0x508020;};'use strict';var emlformat=require(_0x04f6('0x0'));var rimraf=require(_0x04f6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x04f6('0x2'));var moment=require(_0x04f6('0x3'));var BPromise=require(_0x04f6('0x4'));var Mustache=require(_0x04f6('0x5'));var util=require('util');var path=require(_0x04f6('0x6'));var sox=require(_0x04f6('0x7'));var csv=require(_0x04f6('0x8'));var ejs=require(_0x04f6('0x9'));var fs=require('fs');var fs_extra=require(_0x04f6('0xa'));var _=require(_0x04f6('0xb'));var squel=require(_0x04f6('0xc'));var crypto=require(_0x04f6('0xd'));var jsforce=require(_0x04f6('0xe'));var deskjs=require(_0x04f6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x04f6('0x10'));var Papa=require(_0x04f6('0x11'));var Redis=require('ioredis');var authService=require(_0x04f6('0x12'));var qs=require(_0x04f6('0x13'));var as=require(_0x04f6('0x14'));var hardwareService=require(_0x04f6('0x15'));var logger=require(_0x04f6('0x16'))(_0x04f6('0x17'));var utils=require(_0x04f6('0x18'));var config=require(_0x04f6('0x19'));var licenseUtil=require(_0x04f6('0x1a'));var db=require(_0x04f6('0x1b'))['db'];function respondWithStatusCode(_0x2527ff,_0x41cdba){_0x41cdba=_0x41cdba||0xcc;return function(_0x4e6485){if(_0x4e6485){return _0x2527ff['sendStatus'](_0x41cdba);}return _0x2527ff[_0x04f6('0x1c')](_0x41cdba)[_0x04f6('0x1d')]();};}function respondWithResult(_0x55be62,_0x52b5c7){_0x52b5c7=_0x52b5c7||0xc8;return function(_0x56f81b){if(_0x56f81b){return _0x55be62['status'](_0x52b5c7)[_0x04f6('0x1e')](_0x56f81b);}};}function respondWithFilteredResult(_0x458055,_0x303440){return function(_0x2b6630){if(_0x2b6630){var _0x552446=typeof _0x303440[_0x04f6('0x1f')]==='undefined'&&typeof _0x303440[_0x04f6('0x20')]===_0x04f6('0x21');var _0x476440=_0x2b6630['count'];var _0x2e4797=_0x552446?0x0:_0x303440['offset'];var _0x1abd6e=_0x552446?_0x2b6630['count']:_0x303440[_0x04f6('0x1f')]+_0x303440[_0x04f6('0x20')];var _0x10c9ec;if(_0x1abd6e>=_0x476440){_0x1abd6e=_0x476440;_0x10c9ec=0xc8;}else{_0x10c9ec=0xce;}_0x458055[_0x04f6('0x1c')](_0x10c9ec);return _0x458055[_0x04f6('0x22')]('Content-Range',_0x2e4797+'-'+_0x1abd6e+'/'+_0x476440)[_0x04f6('0x1e')](_0x2b6630);}return null;};}function patchUpdates(_0x3a8fe0){return function(_0xed9986){try{jsonpatch[_0x04f6('0x23')](_0xed9986,_0x3a8fe0,!![]);}catch(_0x382df6){return BPromise[_0x04f6('0x24')](_0x382df6);}return _0xed9986['save']();};}function saveUpdates(_0x288c0c,_0x416909){return function(_0x5027f5){if(_0x5027f5){return _0x5027f5[_0x04f6('0x25')](_0x288c0c)[_0x04f6('0x26')](function(_0x4e226a){return _0x4e226a;});}return null;};}function removeEntity(_0x5e8972,_0xa5c974){return function(_0x5b39de){if(_0x5b39de){return _0x5b39de[_0x04f6('0x27')]()['then'](function(){_0x5e8972['status'](0xcc)[_0x04f6('0x1d')]();});}};}function handleEntityNotFound(_0x5e7093,_0x54e4ad){return function(_0x3f87b0){if(!_0x3f87b0){_0x5e7093[_0x04f6('0x28')](0x194);}return _0x3f87b0;};}function handleError(_0x3978f1,_0x3de7b7){_0x3de7b7=_0x3de7b7||0x1f4;return function(_0x559978){logger['error'](_0x559978[_0x04f6('0x29')]);if(_0x559978[_0x04f6('0x2a')]){delete _0x559978[_0x04f6('0x2a')];}_0x3978f1[_0x04f6('0x1c')](_0x3de7b7)[_0x04f6('0x2b')](_0x559978);};}exports['index']=function(_0x3a89a1,_0x4281a2){var _0x34236c={},_0x82b528={},_0x12ae64={'count':0x0,'rows':[]};var _0x281b5e=_['map'](db[_0x04f6('0x2c')][_0x04f6('0x2d')],function(_0x2f258c){return{'name':_0x2f258c[_0x04f6('0x2e')],'type':_0x2f258c[_0x04f6('0x2f')][_0x04f6('0x30')]};});_0x82b528[_0x04f6('0x31')]=_[_0x04f6('0x32')](_0x281b5e,_0x04f6('0x2a'));_0x82b528[_0x04f6('0x33')]=_[_0x04f6('0x34')](_0x3a89a1[_0x04f6('0x33')]);_0x82b528[_0x04f6('0x35')]=_['intersection'](_0x82b528[_0x04f6('0x31')],_0x82b528[_0x04f6('0x33')]);_0x34236c[_0x04f6('0x36')]=_[_0x04f6('0x37')](_0x82b528[_0x04f6('0x31')],qs[_0x04f6('0x38')](_0x3a89a1[_0x04f6('0x33')][_0x04f6('0x38')]));_0x34236c['attributes']=_0x34236c[_0x04f6('0x36')][_0x04f6('0x39')]?_0x34236c[_0x04f6('0x36')]:_0x82b528['model'];if(!_0x3a89a1['query'][_0x04f6('0x3a')](_0x04f6('0x3b'))){_0x34236c[_0x04f6('0x20')]=qs[_0x04f6('0x20')](_0x3a89a1[_0x04f6('0x33')]['limit']);_0x34236c[_0x04f6('0x1f')]=qs[_0x04f6('0x1f')](_0x3a89a1[_0x04f6('0x33')][_0x04f6('0x1f')]);}_0x34236c[_0x04f6('0x3c')]=qs['sort'](_0x3a89a1[_0x04f6('0x33')][_0x04f6('0x3d')]);_0x34236c['where']=qs[_0x04f6('0x35')](_[_0x04f6('0x3e')](_0x3a89a1[_0x04f6('0x33')],_0x82b528[_0x04f6('0x35')]),_0x281b5e);if(_0x3a89a1[_0x04f6('0x33')][_0x04f6('0x3f')]){_0x34236c['where']=_[_0x04f6('0x40')](_0x34236c[_0x04f6('0x41')],{'$or':_[_0x04f6('0x32')](_0x281b5e,function(_0xe96ab5){if(_0xe96ab5[_0x04f6('0x2f')]!==_0x04f6('0x42')){var _0x4f28bf={};_0x4f28bf[_0xe96ab5[_0x04f6('0x2a')]]={'$like':'%'+_0x3a89a1[_0x04f6('0x33')][_0x04f6('0x3f')]+'%'};return _0x4f28bf;}})});}_0x34236c=_[_0x04f6('0x40')]({},_0x34236c,_0x3a89a1[_0x04f6('0x43')]);var _0x36badd={'where':_0x34236c[_0x04f6('0x41')]};return db[_0x04f6('0x2c')][_0x04f6('0x44')](_0x36badd)[_0x04f6('0x26')](function(_0x8aed5a){_0x12ae64[_0x04f6('0x44')]=_0x8aed5a;if(_0x3a89a1['query']['includeAll']){_0x34236c[_0x04f6('0x45')]=[{'all':!![]}];}return db[_0x04f6('0x2c')][_0x04f6('0x46')](_0x34236c);})[_0x04f6('0x26')](function(_0x5e5d56){_0x12ae64[_0x04f6('0x47')]=_0x5e5d56;return _0x12ae64;})[_0x04f6('0x26')](respondWithFilteredResult(_0x4281a2,_0x34236c))[_0x04f6('0x48')](handleError(_0x4281a2,null));};exports[_0x04f6('0x49')]=function(_0x978bf3,_0x55056b){var _0x5cbf9f={'raw':!![],'where':{'id':_0x978bf3['params']['id']}},_0x2bc658={};_0x2bc658[_0x04f6('0x31')]=_[_0x04f6('0x34')](db[_0x04f6('0x2c')][_0x04f6('0x2d')]);_0x2bc658[_0x04f6('0x33')]=_['keys'](_0x978bf3['query']);_0x2bc658[_0x04f6('0x35')]=_[_0x04f6('0x37')](_0x2bc658[_0x04f6('0x31')],_0x2bc658[_0x04f6('0x33')]);_0x5cbf9f['attributes']=_[_0x04f6('0x37')](_0x2bc658[_0x04f6('0x31')],qs[_0x04f6('0x38')](_0x978bf3[_0x04f6('0x33')]['fields']));_0x5cbf9f['attributes']=_0x5cbf9f['attributes'][_0x04f6('0x39')]?_0x5cbf9f['attributes']:_0x2bc658['model'];if(_0x978bf3[_0x04f6('0x33')]['includeAll']){_0x5cbf9f['include']=[{'all':!![]}];}_0x5cbf9f=_['merge']({},_0x5cbf9f,_0x978bf3[_0x04f6('0x43')]);return db[_0x04f6('0x2c')][_0x04f6('0x4a')](_0x5cbf9f)[_0x04f6('0x26')](handleEntityNotFound(_0x55056b,null))[_0x04f6('0x26')](respondWithResult(_0x55056b,null))[_0x04f6('0x48')](handleError(_0x55056b,null));};exports[_0x04f6('0x4b')]=function(_0x52646b,_0x79e78f){return db[_0x04f6('0x2c')][_0x04f6('0x4b')](_0x52646b['body'],{})[_0x04f6('0x26')](respondWithResult(_0x79e78f,0xc9))['catch'](handleError(_0x79e78f,null));};exports[_0x04f6('0x25')]=function(_0x6cefb0,_0x42de93){if(_0x6cefb0['body']['id']){delete _0x6cefb0[_0x04f6('0x4c')]['id'];}return db[_0x04f6('0x2c')][_0x04f6('0x4a')]({'where':{'id':_0x6cefb0[_0x04f6('0x4d')]['id']}})['then'](handleEntityNotFound(_0x42de93,null))[_0x04f6('0x26')](saveUpdates(_0x6cefb0[_0x04f6('0x4c')],null))[_0x04f6('0x26')](respondWithResult(_0x42de93,null))[_0x04f6('0x48')](handleError(_0x42de93,null));};exports[_0x04f6('0x27')]=function(_0x48440a,_0x4826b7){return db[_0x04f6('0x2c')]['find']({'where':{'id':_0x48440a['params']['id']}})[_0x04f6('0x26')](handleEntityNotFound(_0x4826b7,null))[_0x04f6('0x26')](removeEntity(_0x4826b7,null))['catch'](handleError(_0x4826b7,null));};exports[_0x04f6('0x4e')]=function(_0x298f16,_0x59c710){return db[_0x04f6('0x2c')][_0x04f6('0x4e')]()[_0x04f6('0x26')](respondWithResult(_0x59c710,null))[_0x04f6('0x48')](handleError(_0x59c710,null));};
\ No newline at end of file
+var _0x075d=['../../mysqldb','status','end','json','undefined','count','offset','limit','set','apply','reject','save','then','error','name','index','map','VoiceDialReport','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','params','rawAttributes','filters','include','find','catch','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/license/util'];(function(_0x205bea,_0x4695f2){var _0x59e5a3=function(_0x5d80f5){while(--_0x5d80f5){_0x205bea['push'](_0x205bea['shift']());}};_0x59e5a3(++_0x4695f2);}(_0x075d,0xfa));var _0xd075=function(_0x58273d,_0x2fefaf){_0x58273d=_0x58273d-0x0;var _0x8708b=_0x075d[_0x58273d];return _0x8708b;};'use strict';var emlformat=require(_0xd075('0x0'));var rimraf=require(_0xd075('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd075('0x2'));var rp=require(_0xd075('0x3'));var moment=require('moment');var BPromise=require(_0xd075('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd075('0x5'));var sox=require('sox');var csv=require(_0xd075('0x6'));var ejs=require(_0xd075('0x7'));var fs=require('fs');var fs_extra=require(_0xd075('0x8'));var _=require(_0xd075('0x9'));var squel=require(_0xd075('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd075('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd075('0xc'));var Papa=require(_0xd075('0xd'));var Redis=require('ioredis');var authService=require(_0xd075('0xe'));var qs=require(_0xd075('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd075('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd075('0x11'));var db=require(_0xd075('0x12'))['db'];function respondWithStatusCode(_0x1bdb1d,_0x3971da){_0x3971da=_0x3971da||0xcc;return function(_0x41178a){if(_0x41178a){return _0x1bdb1d['sendStatus'](_0x3971da);}return _0x1bdb1d[_0xd075('0x13')](_0x3971da)[_0xd075('0x14')]();};}function respondWithResult(_0x2a2f18,_0x353ad9){_0x353ad9=_0x353ad9||0xc8;return function(_0xa97668){if(_0xa97668){return _0x2a2f18[_0xd075('0x13')](_0x353ad9)[_0xd075('0x15')](_0xa97668);}};}function respondWithFilteredResult(_0x2a10a1,_0x5c1b39){return function(_0x2ade63){if(_0x2ade63){var _0x3a9fdf=typeof _0x5c1b39['offset']===_0xd075('0x16')&&typeof _0x5c1b39['limit']===_0xd075('0x16');var _0x11fae6=_0x2ade63[_0xd075('0x17')];var _0x163d74=_0x3a9fdf?0x0:_0x5c1b39[_0xd075('0x18')];var _0x446d8f=_0x3a9fdf?_0x2ade63[_0xd075('0x17')]:_0x5c1b39[_0xd075('0x18')]+_0x5c1b39[_0xd075('0x19')];var _0x49a12b;if(_0x446d8f>=_0x11fae6){_0x446d8f=_0x11fae6;_0x49a12b=0xc8;}else{_0x49a12b=0xce;}_0x2a10a1[_0xd075('0x13')](_0x49a12b);return _0x2a10a1[_0xd075('0x1a')]('Content-Range',_0x163d74+'-'+_0x446d8f+'/'+_0x11fae6)[_0xd075('0x15')](_0x2ade63);}return null;};}function patchUpdates(_0x2cf5f9){return function(_0xe1927b){try{jsonpatch[_0xd075('0x1b')](_0xe1927b,_0x2cf5f9,!![]);}catch(_0x2a363d){return BPromise[_0xd075('0x1c')](_0x2a363d);}return _0xe1927b[_0xd075('0x1d')]();};}function saveUpdates(_0x302ca3,_0x35c12d){return function(_0x34913b){if(_0x34913b){return _0x34913b['update'](_0x302ca3)[_0xd075('0x1e')](function(_0x2101e6){return _0x2101e6;});}return null;};}function removeEntity(_0x133f06,_0x31a2f6){return function(_0x35d600){if(_0x35d600){return _0x35d600['destroy']()[_0xd075('0x1e')](function(){_0x133f06[_0xd075('0x13')](0xcc)[_0xd075('0x14')]();});}};}function handleEntityNotFound(_0x436d8f,_0xeb23cb){return function(_0x55e4c2){if(!_0x55e4c2){_0x436d8f['sendStatus'](0x194);}return _0x55e4c2;};}function handleError(_0x3d77f3,_0x354b0b){_0x354b0b=_0x354b0b||0x1f4;return function(_0x156a7d){logger[_0xd075('0x1f')](_0x156a7d['stack']);if(_0x156a7d['name']){delete _0x156a7d[_0xd075('0x20')];}_0x3d77f3['status'](_0x354b0b)['send'](_0x156a7d);};}exports[_0xd075('0x21')]=function(_0x3241df,_0x23f0a5){var _0xb15711={},_0x32c527={},_0x5544d1={'count':0x0,'rows':[]};var _0x25a5eb=_[_0xd075('0x22')](db[_0xd075('0x23')]['rawAttributes'],function(_0x52d70a){return{'name':_0x52d70a[_0xd075('0x24')],'type':_0x52d70a['type'][_0xd075('0x25')]};});_0x32c527[_0xd075('0x26')]=_[_0xd075('0x22')](_0x25a5eb,_0xd075('0x20'));_0x32c527[_0xd075('0x27')]=_[_0xd075('0x28')](_0x3241df[_0xd075('0x27')]);_0x32c527['filters']=_[_0xd075('0x29')](_0x32c527[_0xd075('0x26')],_0x32c527[_0xd075('0x27')]);_0xb15711[_0xd075('0x2a')]=_[_0xd075('0x29')](_0x32c527[_0xd075('0x26')],qs[_0xd075('0x2b')](_0x3241df[_0xd075('0x27')]['fields']));_0xb15711[_0xd075('0x2a')]=_0xb15711[_0xd075('0x2a')][_0xd075('0x2c')]?_0xb15711[_0xd075('0x2a')]:_0x32c527['model'];if(!_0x3241df['query'][_0xd075('0x2d')](_0xd075('0x2e'))){_0xb15711[_0xd075('0x19')]=qs[_0xd075('0x19')](_0x3241df[_0xd075('0x27')][_0xd075('0x19')]);_0xb15711[_0xd075('0x18')]=qs['offset'](_0x3241df[_0xd075('0x27')][_0xd075('0x18')]);}_0xb15711['order']=qs[_0xd075('0x2f')](_0x3241df[_0xd075('0x27')][_0xd075('0x2f')]);_0xb15711[_0xd075('0x30')]=qs['filters'](_[_0xd075('0x31')](_0x3241df['query'],_0x32c527['filters']),_0x25a5eb);if(_0x3241df[_0xd075('0x27')][_0xd075('0x32')]){_0xb15711['where']=_[_0xd075('0x33')](_0xb15711[_0xd075('0x30')],{'$or':_['map'](_0x25a5eb,function(_0x130ebd){if(_0x130ebd[_0xd075('0x34')]!==_0xd075('0x35')){var _0x19743d={};_0x19743d[_0x130ebd['name']]={'$like':'%'+_0x3241df[_0xd075('0x27')][_0xd075('0x32')]+'%'};return _0x19743d;}})});}_0xb15711=_[_0xd075('0x33')]({},_0xb15711,_0x3241df[_0xd075('0x36')]);var _0x208190={'where':_0xb15711[_0xd075('0x30')]};return db[_0xd075('0x23')]['count'](_0x208190)['then'](function(_0x2b86d3){_0x5544d1[_0xd075('0x17')]=_0x2b86d3;if(_0x3241df['query'][_0xd075('0x37')]){_0xb15711['include']=[{'all':!![]}];}return db[_0xd075('0x23')]['findAll'](_0xb15711);})[_0xd075('0x1e')](function(_0x2233c8){_0x5544d1[_0xd075('0x38')]=_0x2233c8;return _0x5544d1;})[_0xd075('0x1e')](respondWithFilteredResult(_0x23f0a5,_0xb15711))['catch'](handleError(_0x23f0a5,null));};exports['show']=function(_0x3c693b,_0x30dc2f){var _0x256bd3={'raw':!![],'where':{'id':_0x3c693b[_0xd075('0x39')]['id']}},_0x4cbdeb={};_0x4cbdeb[_0xd075('0x26')]=_[_0xd075('0x28')](db[_0xd075('0x23')][_0xd075('0x3a')]);_0x4cbdeb[_0xd075('0x27')]=_[_0xd075('0x28')](_0x3c693b[_0xd075('0x27')]);_0x4cbdeb[_0xd075('0x3b')]=_[_0xd075('0x29')](_0x4cbdeb[_0xd075('0x26')],_0x4cbdeb[_0xd075('0x27')]);_0x256bd3[_0xd075('0x2a')]=_[_0xd075('0x29')](_0x4cbdeb['model'],qs[_0xd075('0x2b')](_0x3c693b[_0xd075('0x27')]['fields']));_0x256bd3[_0xd075('0x2a')]=_0x256bd3[_0xd075('0x2a')]['length']?_0x256bd3[_0xd075('0x2a')]:_0x4cbdeb[_0xd075('0x26')];if(_0x3c693b[_0xd075('0x27')][_0xd075('0x37')]){_0x256bd3[_0xd075('0x3c')]=[{'all':!![]}];}_0x256bd3=_[_0xd075('0x33')]({},_0x256bd3,_0x3c693b[_0xd075('0x36')]);return db['VoiceDialReport'][_0xd075('0x3d')](_0x256bd3)[_0xd075('0x1e')](handleEntityNotFound(_0x30dc2f,null))[_0xd075('0x1e')](respondWithResult(_0x30dc2f,null))[_0xd075('0x3e')](handleError(_0x30dc2f,null));};exports[_0xd075('0x3f')]=function(_0x2bc796,_0x307ec5){return db['VoiceDialReport'][_0xd075('0x3f')](_0x2bc796[_0xd075('0x40')],{})[_0xd075('0x1e')](respondWithResult(_0x307ec5,0xc9))[_0xd075('0x3e')](handleError(_0x307ec5,null));};exports['update']=function(_0x10e603,_0xbaffac){if(_0x10e603[_0xd075('0x40')]['id']){delete _0x10e603[_0xd075('0x40')]['id'];}return db['VoiceDialReport'][_0xd075('0x3d')]({'where':{'id':_0x10e603['params']['id']}})[_0xd075('0x1e')](handleEntityNotFound(_0xbaffac,null))[_0xd075('0x1e')](saveUpdates(_0x10e603['body'],null))[_0xd075('0x1e')](respondWithResult(_0xbaffac,null))[_0xd075('0x3e')](handleError(_0xbaffac,null));};exports[_0xd075('0x41')]=function(_0x19435d,_0x51bcf2){return db['VoiceDialReport'][_0xd075('0x3d')]({'where':{'id':_0x19435d[_0xd075('0x39')]['id']}})[_0xd075('0x1e')](handleEntityNotFound(_0x51bcf2,null))[_0xd075('0x1e')](removeEntity(_0x51bcf2,null))['catch'](handleError(_0x51bcf2,null));};exports['describe']=function(_0x419750,_0x2e9f51){return db[_0xd075('0x23')][_0xd075('0x42')]()[_0xd075('0x1e')](respondWithResult(_0x2e9f51,null))[_0xd075('0x3e')](handleError(_0x2e9f51,null));};
\ No newline at end of file
index 3f55ab4..fc8f151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f2=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial'];(function(_0x1f3124,_0x3d0a92){var _0x498357=function(_0x55dbb2){while(--_0x55dbb2){_0x1f3124['push'](_0x1f3124['shift']());}};_0x498357(++_0x3d0a92);}(_0x88f2,0x1c1));var _0x288f=function(_0x4a8487,_0x25b579){_0x4a8487=_0x4a8487-0x0;var _0x40fad8=_0x88f2[_0x4a8487];return _0x40fad8;};'use strict';var _=require(_0x288f('0x0'));var util=require(_0x288f('0x1'));var logger=require(_0x288f('0x2'))(_0x288f('0x3'));var moment=require(_0x288f('0x4'));var BPromise=require(_0x288f('0x5'));var rp=require(_0x288f('0x6'));var fs=require('fs');var path=require(_0x288f('0x7'));var rimraf=require(_0x288f('0x8'));var config=require(_0x288f('0x9'));var attributes=require(_0x288f('0xa'));module[_0x288f('0xb')]=function(_0x9351fd,_0x1d471c){return _0x9351fd[_0x288f('0xc')](_0x288f('0xd'),attributes,{'tableName':_0x288f('0xe'),'paranoid':![],'indexes':[{'fields':[_0x288f('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7715=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','VoiceDialReport','report_dial','uniqueid','lodash','util'];(function(_0x88e9e,_0x3c052f){var _0x304fb4=function(_0x3513ef){while(--_0x3513ef){_0x88e9e['push'](_0x88e9e['shift']());}};_0x304fb4(++_0x3c052f);}(_0x7715,0x19e));var _0x5771=function(_0x5d86b2,_0x1a2a00){_0x5d86b2=_0x5d86b2-0x0;var _0x15563d=_0x7715[_0x5d86b2];return _0x15563d;};'use strict';var _=require(_0x5771('0x0'));var util=require(_0x5771('0x1'));var logger=require('../../config/logger')(_0x5771('0x2'));var moment=require(_0x5771('0x3'));var BPromise=require(_0x5771('0x4'));var rp=require(_0x5771('0x5'));var fs=require('fs');var path=require(_0x5771('0x6'));var rimraf=require(_0x5771('0x7'));var config=require(_0x5771('0x8'));var attributes=require('./voiceDialReport.attributes');module['exports']=function(_0x3920fa,_0x3471e6){return _0x3920fa[_0x5771('0x9')](_0x5771('0xa'),attributes,{'tableName':_0x5771('0xb'),'paranoid':![],'indexes':[{'fields':[_0x5771('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 247b289..1ecfa15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f8=['raw','then','options','where','limit','UpdateVoiceDialReport','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceDialReport,\x20%s,\x20%s','CreateVoiceDialReport','VoiceDialReport','create'];(function(_0x105a8a,_0x15a3a2){var _0x105a0e=function(_0x3beeb1){while(--_0x3beeb1){_0x105a8a['push'](_0x105a8a['shift']());}};_0x105a0e(++_0x15a3a2);}(_0x45f8,0x146));var _0x845f=function(_0x1d94d1,_0x347bb8){_0x1d94d1=_0x1d94d1-0x0;var _0x23c397=_0x45f8[_0x1d94d1];return _0x23c397;};'use strict';var _=require('lodash');var util=require(_0x845f('0x0'));var moment=require(_0x845f('0x1'));var BPromise=require(_0x845f('0x2'));var rs=require(_0x845f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x845f('0x4'))['db'];var utils=require(_0x845f('0x5'));var logger=require(_0x845f('0x6'))('rpc');var config=require(_0x845f('0x7'));var jayson=require(_0x845f('0x8'));var client=jayson[_0x845f('0x9')][_0x845f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x70d353,_0x266277,_0x4da6d7){return new BPromise(function(_0x32b436,_0x1d01f8){return client[_0x845f('0xb')](_0x70d353,_0x4da6d7)['then'](function(_0xf2d244){logger[_0x845f('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x266277,_0x845f('0xd'));logger[_0x845f('0xe')](_0x845f('0xf'),_0x266277,_0x845f('0xd'),JSON[_0x845f('0x10')](_0xf2d244));if(_0xf2d244[_0x845f('0x11')]){if(_0xf2d244[_0x845f('0x11')][_0x845f('0x12')]===0x1f4){logger[_0x845f('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x266277,_0xf2d244[_0x845f('0x11')][_0x845f('0x13')]);return _0x1d01f8(_0xf2d244['error']['message']);}logger[_0x845f('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x266277,_0xf2d244[_0x845f('0x11')]['message']);return _0x32b436(_0xf2d244['error'][_0x845f('0x13')]);}else{logger[_0x845f('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x266277,'request\x20sent');_0x32b436(_0xf2d244[_0x845f('0x14')]['message']);}})[_0x845f('0x15')](function(_0x2c89b0){logger[_0x845f('0x11')](_0x845f('0x16'),_0x266277,_0x2c89b0);_0x1d01f8(_0x2c89b0);});});}exports[_0x845f('0x17')]=function(_0x2b91e5){var _0x3fdf34=this;return new Promise(function(_0x5791c0,_0x260f6b){return db[_0x845f('0x18')][_0x845f('0x19')](_0x2b91e5['body'],{'raw':_0x2b91e5['options']?_0x2b91e5['options'][_0x845f('0x1a')]===undefined?!![]:![]:!![]})[_0x845f('0x1b')](function(_0x177e1f){logger[_0x845f('0xc')](_0x845f('0x17'),_0x2b91e5);logger[_0x845f('0xe')](_0x845f('0x17'),_0x2b91e5,JSON['stringify'](_0x177e1f));_0x5791c0(_0x177e1f);})[_0x845f('0x15')](function(_0x275573){logger[_0x845f('0x11')](_0x845f('0x17'),_0x275573['message'],_0x2b91e5);_0x260f6b(_0x3fdf34['error'](0x1f4,_0x275573[_0x845f('0x13')]));});});};exports['UpdateVoiceDialReport']=function(_0x48e45f){var _0x4f2ba2=this;return new Promise(function(_0x1703f0,_0x225711){return db['VoiceDialReport']['update'](_0x48e45f['body'],{'raw':_0x48e45f[_0x845f('0x1c')]?_0x48e45f[_0x845f('0x1c')][_0x845f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x48e45f[_0x845f('0x1c')]?_0x48e45f[_0x845f('0x1c')][_0x845f('0x1d')]||null:null,'attributes':_0x48e45f[_0x845f('0x1c')]?_0x48e45f[_0x845f('0x1c')]['attributes']||null:null,'limit':_0x48e45f[_0x845f('0x1c')]?_0x48e45f['options'][_0x845f('0x1e')]||null:null})[_0x845f('0x1b')](function(_0x35e722){logger[_0x845f('0xc')](_0x845f('0x1f'),_0x48e45f);logger['debug']('UpdateVoiceDialReport',_0x48e45f,JSON[_0x845f('0x10')](_0x35e722));_0x1703f0(_0x35e722);})[_0x845f('0x15')](function(_0xc32dcd){logger[_0x845f('0x11')]('UpdateVoiceDialReport',_0xc32dcd[_0x845f('0x13')],_0x48e45f);_0x225711(_0x4f2ba2[_0x845f('0x11')](0x1f4,_0xc32dcd[_0x845f('0x13')]));});});};
\ No newline at end of file
+var _0x9f96=['options','where','attributes','limit','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','VoiceDialReport','create','raw','CreateVoiceDialReport','catch','UpdateVoiceDialReport','body'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x9f96,0x13a));var _0x69f9=function(_0x498f66,_0x3055b0){_0x498f66=_0x498f66-0x0;var _0xc45c7c=_0x9f96[_0x498f66];return _0xc45c7c;};'use strict';var _=require('lodash');var util=require(_0x69f9('0x0'));var moment=require(_0x69f9('0x1'));var BPromise=require('bluebird');var rs=require(_0x69f9('0x2'));var fs=require('fs');var Redis=require(_0x69f9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x69f9('0x4'));var logger=require(_0x69f9('0x5'))('rpc');var config=require(_0x69f9('0x6'));var jayson=require(_0x69f9('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x210f02,_0x2562fb,_0x7e8877){return new BPromise(function(_0x1c1fef,_0x3d7da3){return client[_0x69f9('0x8')](_0x210f02,_0x7e8877)[_0x69f9('0x9')](function(_0x110938){logger[_0x69f9('0xa')]('VoiceDialReport,\x20%s,\x20%s',_0x2562fb,_0x69f9('0xb'));logger[_0x69f9('0xc')](_0x69f9('0xd'),_0x2562fb,'request\x20sent',JSON[_0x69f9('0xe')](_0x110938));if(_0x110938[_0x69f9('0xf')]){if(_0x110938[_0x69f9('0xf')][_0x69f9('0x10')]===0x1f4){logger[_0x69f9('0xf')](_0x69f9('0x11'),_0x2562fb,_0x110938[_0x69f9('0xf')]['message']);return _0x3d7da3(_0x110938[_0x69f9('0xf')][_0x69f9('0x12')]);}logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x2562fb,_0x110938[_0x69f9('0xf')]['message']);return _0x1c1fef(_0x110938['error']['message']);}else{logger[_0x69f9('0xa')](_0x69f9('0x11'),_0x2562fb,_0x69f9('0xb'));_0x1c1fef(_0x110938[_0x69f9('0x13')]['message']);}})['catch'](function(_0x2fe27d){logger['error'](_0x69f9('0x11'),_0x2562fb,_0x2fe27d);_0x3d7da3(_0x2fe27d);});});}exports['CreateVoiceDialReport']=function(_0x317ccd){var _0x5918c0=this;return new Promise(function(_0x473dde,_0x358cdf){return db[_0x69f9('0x14')][_0x69f9('0x15')](_0x317ccd['body'],{'raw':_0x317ccd['options']?_0x317ccd['options'][_0x69f9('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x3ab15e){logger[_0x69f9('0xa')](_0x69f9('0x17'),_0x317ccd);logger[_0x69f9('0xc')](_0x69f9('0x17'),_0x317ccd,JSON[_0x69f9('0xe')](_0x3ab15e));_0x473dde(_0x3ab15e);})[_0x69f9('0x18')](function(_0x5e665e){logger[_0x69f9('0xf')]('CreateVoiceDialReport',_0x5e665e[_0x69f9('0x12')],_0x317ccd);_0x358cdf(_0x5918c0[_0x69f9('0xf')](0x1f4,_0x5e665e[_0x69f9('0x12')]));});});};exports[_0x69f9('0x19')]=function(_0xedbcf2){var _0x4cec7b=this;return new Promise(function(_0x32e786,_0x3ed5be){return db['VoiceDialReport']['update'](_0xedbcf2[_0x69f9('0x1a')],{'raw':_0xedbcf2[_0x69f9('0x1b')]?_0xedbcf2[_0x69f9('0x1b')][_0x69f9('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xedbcf2[_0x69f9('0x1b')]?_0xedbcf2[_0x69f9('0x1b')][_0x69f9('0x1c')]||null:null,'attributes':_0xedbcf2['options']?_0xedbcf2[_0x69f9('0x1b')][_0x69f9('0x1d')]||null:null,'limit':_0xedbcf2[_0x69f9('0x1b')]?_0xedbcf2[_0x69f9('0x1b')][_0x69f9('0x1e')]||null:null})['then'](function(_0x2255c1){logger[_0x69f9('0xa')](_0x69f9('0x19'),_0xedbcf2);logger['debug'](_0x69f9('0x19'),_0xedbcf2,JSON[_0x69f9('0xe')](_0x2255c1));_0x32e786(_0x2255c1);})[_0x69f9('0x18')](function(_0x5df473){logger[_0x69f9('0xf')](_0x69f9('0x19'),_0x5df473[_0x69f9('0x12')],_0xedbcf2);_0x3ed5be(_0x4cec7b[_0x69f9('0xf')](0x1f4,_0x5df473[_0x69f9('0x12')]));});});};
\ No newline at end of file
index 7144d3d..fc5ab3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb2e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','/:id','show','post','create','/:id/applications','addApplications','update','destroy','exports','multer','util','path','express','Router'];(function(_0x67723e,_0x170345){var _0x3ee438=function(_0x4cbd5f){while(--_0x4cbd5f){_0x67723e['push'](_0x67723e['shift']());}};_0x3ee438(++_0x170345);}(_0xdb2e,0x1de));var _0xedb2=function(_0x29d11e,_0x1353d9){_0x29d11e=_0x29d11e-0x0;var _0x4946fb=_0xdb2e[_0x29d11e];return _0x4946fb;};'use strict';var multer=require(_0xedb2('0x0'));var util=require(_0xedb2('0x1'));var path=require(_0xedb2('0x2'));var timeout=require('connect-timeout');var express=require(_0xedb2('0x3'));var router=express[_0xedb2('0x4')]();var fs_extra=require(_0xedb2('0x5'));var auth=require(_0xedb2('0x6'));var interaction=require(_0xedb2('0x7'));var config=require(_0xedb2('0x8'));var controller=require(_0xedb2('0x9'));router[_0xedb2('0xa')]('/',auth[_0xedb2('0xb')](),controller['index']);router['get'](_0xedb2('0xc'),auth[_0xedb2('0xb')](),controller[_0xedb2('0xd')]);router[_0xedb2('0xe')]('/',auth[_0xedb2('0xb')](),controller[_0xedb2('0xf')]);router[_0xedb2('0xe')](_0xedb2('0x10'),auth[_0xedb2('0xb')](),controller[_0xedb2('0x11')]);router['put'](_0xedb2('0xc'),auth[_0xedb2('0xb')](),controller[_0xedb2('0x12')]);router['delete'](_0xedb2('0xc'),auth[_0xedb2('0xb')](),controller[_0xedb2('0x13')]);module[_0xedb2('0x14')]=router;
\ No newline at end of file
+var _0xf0ba=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/applications','addApplications','put','update','delete','destroy'];(function(_0x33cb91,_0x28d39a){var _0x305239=function(_0x4a1c63){while(--_0x4a1c63){_0x33cb91['push'](_0x33cb91['shift']());}};_0x305239(++_0x28d39a);}(_0xf0ba,0x143));var _0xaf0b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf0ba[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xaf0b('0x0'));var util=require(_0xaf0b('0x1'));var path=require(_0xaf0b('0x2'));var timeout=require(_0xaf0b('0x3'));var express=require(_0xaf0b('0x4'));var router=express[_0xaf0b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaf0b('0x6'));var interaction=require(_0xaf0b('0x7'));var config=require('../../config/environment');var controller=require(_0xaf0b('0x8'));router[_0xaf0b('0x9')]('/',auth[_0xaf0b('0xa')](),controller[_0xaf0b('0xb')]);router['get'](_0xaf0b('0xc'),auth[_0xaf0b('0xa')](),controller[_0xaf0b('0xd')]);router[_0xaf0b('0xe')]('/',auth[_0xaf0b('0xa')](),controller[_0xaf0b('0xf')]);router[_0xaf0b('0xe')](_0xaf0b('0x10'),auth['isAuthenticated'](),controller[_0xaf0b('0x11')]);router[_0xaf0b('0x12')](_0xaf0b('0xc'),auth['isAuthenticated'](),controller[_0xaf0b('0x13')]);router[_0xaf0b('0x14')](_0xaf0b('0xc'),auth[_0xaf0b('0xa')](),controller[_0xaf0b('0x15')]);module[_0xaf0b('0x16')]=router;
\ No newline at end of file
index 6d9e58b..23df413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb788=['internal','outbound-fax','system','*,*,*,*','BOOLEAN','INTEGER','wav','VIRTUAL','getDataValue','exten','sequelize','compositeIndex','STRING','ENUM','outbound'];(function(_0x43997b,_0x17bd44){var _0x4ac8c1=function(_0x552342){while(--_0x552342){_0x43997b['push'](_0x43997b['shift']());}};_0x4ac8c1(++_0x17bd44);}(_0xb788,0x1cc));var _0x8b78=function(_0x5f0f7a,_0x244c53){_0x5f0f7a=_0x5f0f7a-0x0;var _0x8742e7=_0xb788[_0x5f0f7a];return _0x8742e7;};'use strict';var Sequelize=require(_0x8b78('0x0'));module['exports']={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8b78('0x1'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x8b78('0x2')],'allowNull':![],'unique':_0x8b78('0x1')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x8b78('0x1')},'tag':{'type':Sequelize[_0x8b78('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x8b78('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x8b78('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x8b78('0x3')]('inbound',_0x8b78('0x4'),_0x8b78('0x5'),'inbound-fax',_0x8b78('0x6'),_0x8b78('0x7'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x8b78('0x2')]},'interval':{'type':Sequelize[_0x8b78('0x2')],'allowNull':![],'defaultValue':_0x8b78('0x8')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x8b78('0x9')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0x8b78('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x8b78('0xa')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x8b78('0xb')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x8b78('0xc')],'get':function(_0x15aa40){return this[_0x8b78('0xd')](_0x8b78('0xe'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x7cb0=['system','*,*,*,*','INTEGER','BOOLEAN','wav','getDataValue','sequelize','exports','STRING','compositeIndex','inbound','outbound','internal','inbound-fax'];(function(_0x1c9b48,_0x43ef3e){var _0x5636f1=function(_0x42ce50){while(--_0x42ce50){_0x1c9b48['push'](_0x1c9b48['shift']());}};_0x5636f1(++_0x43ef3e);}(_0x7cb0,0x1c6));var _0x07cb=function(_0x5f52e4,_0x5a69b3){_0x5f52e4=_0x5f52e4-0x0;var _0x25148b=_0x7cb0[_0x5f52e4];return _0x25148b;};'use strict';var Sequelize=require(_0x07cb('0x0'));module[_0x07cb('0x1')]={'context':{'type':Sequelize[_0x07cb('0x2')],'allowNull':![],'unique':_0x07cb('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x07cb('0x2')],'allowNull':![],'unique':_0x07cb('0x3')},'priority':{'type':Sequelize[_0x07cb('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x07cb('0x3')},'tag':{'type':Sequelize[_0x07cb('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x07cb('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x07cb('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM'](_0x07cb('0x4'),_0x07cb('0x5'),_0x07cb('0x6'),_0x07cb('0x7'),'outbound-fax',_0x07cb('0x8'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0x07cb('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x07cb('0x9')},'IntervalId':{'type':Sequelize[_0x07cb('0xa')]},'isApp':{'type':Sequelize[_0x07cb('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x07cb('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x07cb('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x07cb('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x07cb('0xa')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0x07cb('0xc')},'answer':{'type':Sequelize[_0x07cb('0xb')],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x43693d){return this[_0x07cb('0xd')]('exten');}},'alias':{'type':Sequelize[_0x07cb('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 877f52f..161667e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2319=['OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','type','find','name','UserProfileResource','then','end','error','stack','send','index','VoiceExtension','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','count','includeAll','rows','catch','show','rawAttributes','include','body','startsWith','exten','concat','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','update','params','context','description','recordingFormat','alias','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','./voiceExtension.socket','register','sendStatus','status','json','offset','undefined','limit','set','Content-Range','destroy','InboundRoutes','inbound'];(function(_0x550d2c,_0xc1cfb9){var _0x158fdb=function(_0x75e791){while(--_0x75e791){_0x550d2c['push'](_0x550d2c['shift']());}};_0x158fdb(++_0xc1cfb9);}(_0x2319,0x150));var _0x9231=function(_0x1cbe3a,_0x3e13d0){_0x1cbe3a=_0x1cbe3a-0x0;var _0x3a9153=_0x2319[_0x1cbe3a];return _0x3a9153;};'use strict';var _=require(_0x9231('0x0'));var Redis=require(_0x9231('0x1'));var qs=require(_0x9231('0x2'));var logger=require(_0x9231('0x3'))('api');var config=require(_0x9231('0x4'));var db=require(_0x9231('0x5'))['db'];config['redis']=_['defaults'](config[_0x9231('0x6')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9231('0x6')]));require(_0x9231('0x7'))[_0x9231('0x8')](socket);function respondWithStatusCode(_0x3e62f4,_0x464539){_0x464539=_0x464539||0xcc;return function(_0x6788ec){if(_0x6788ec){return _0x3e62f4[_0x9231('0x9')](_0x464539);}return _0x3e62f4['status'](_0x464539)['end']();};}function respondWithResult(_0x256427,_0x1b117b){_0x1b117b=_0x1b117b||0xc8;return function(_0x2dadbf){if(_0x2dadbf){return _0x256427[_0x9231('0xa')](_0x1b117b)[_0x9231('0xb')](_0x2dadbf);}};}function respondWithFilteredResult(_0x43ef90,_0x12357b){return function(_0x5aa0cf){if(_0x5aa0cf){var _0x427321=typeof _0x12357b[_0x9231('0xc')]===_0x9231('0xd')&&typeof _0x12357b[_0x9231('0xe')]===_0x9231('0xd');var _0x213fdf=_0x5aa0cf['count'];var _0x4e3637=_0x427321?0x0:_0x12357b[_0x9231('0xc')];var _0x235566=_0x427321?_0x5aa0cf['count']:_0x12357b[_0x9231('0xc')]+_0x12357b[_0x9231('0xe')];var _0x2a513e;if(_0x235566>=_0x213fdf){_0x235566=_0x213fdf;_0x2a513e=0xc8;}else{_0x2a513e=0xce;}_0x43ef90[_0x9231('0xa')](_0x2a513e);return _0x43ef90[_0x9231('0xf')](_0x9231('0x10'),_0x4e3637+'-'+_0x235566+'/'+_0x213fdf)[_0x9231('0xb')](_0x5aa0cf);}return null;};}function removeEntity(_0x379626){return function(_0x4086ef){if(_0x4086ef){return _0x4086ef[_0x9231('0x11')]()['then'](function(){var _0x1c4ac4=_0x4086ef['get']({'plain':!![]});var _0x1237af=[{'name':_0x9231('0x12'),'value':_0x9231('0x13'),'ignore':![]},{'name':_0x9231('0x14'),'value':_0x9231('0x15'),'ignore':![]},{'name':_0x9231('0x16'),'value':_0x9231('0x17'),'ignore':![]}];var _0xb8b18a=_(_0x1237af)[_0x9231('0x18')](_0x9231('0x19'))[_0x9231('0x1a')](_0x9231('0x1b'))['value']();if(_['includes'](_0xb8b18a,_0x1c4ac4[_0x9231('0x1c')])){return;}var _0x2e7a8a=_[_0x9231('0x1d')](_0x1237af,[_0x9231('0x1b'),_0x1c4ac4['type']])[_0x9231('0x1e')];return db[_0x9231('0x1f')][_0x9231('0x11')]({'where':{'type':_0x2e7a8a,'resourceId':_0x1c4ac4['id']}})[_0x9231('0x20')](function(){return _0x4086ef;});})[_0x9231('0x20')](function(){_0x379626[_0x9231('0xa')](0xcc)[_0x9231('0x21')]();});}};}function handleEntityNotFound(_0x28318a){return function(_0xb3e6f0){if(!_0xb3e6f0){_0x28318a[_0x9231('0x9')](0x194);}return _0xb3e6f0;};}function handleError(_0x4bdb83,_0x5e961b){_0x5e961b=_0x5e961b||0x1f4;return function(_0x201751){logger[_0x9231('0x22')](_0x201751[_0x9231('0x23')]);if(_0x201751[_0x9231('0x1e')]){delete _0x201751['name'];}_0x4bdb83['status'](_0x5e961b)[_0x9231('0x24')](_0x201751);};}exports[_0x9231('0x25')]=function(_0x75ceba,_0x1c49bc){var _0x874d9d={},_0x24e26c={},_0xe55321={'count':0x0,'rows':[]};var _0x1bdb85=_[_0x9231('0x1a')](db[_0x9231('0x26')]['rawAttributes'],function(_0x468292){return{'name':_0x468292[_0x9231('0x27')],'type':_0x468292[_0x9231('0x1c')][_0x9231('0x28')]};});_0x24e26c['model']=_[_0x9231('0x1a')](_0x1bdb85,_0x9231('0x1e'));_0x24e26c['query']=_[_0x9231('0x29')](_0x75ceba[_0x9231('0x2a')]);_0x24e26c[_0x9231('0x2b')]=_[_0x9231('0x2c')](_0x24e26c[_0x9231('0x2d')],_0x24e26c[_0x9231('0x2a')]);_0x874d9d['attributes']=_[_0x9231('0x2c')](_0x24e26c[_0x9231('0x2d')],qs[_0x9231('0x2e')](_0x75ceba[_0x9231('0x2a')]['fields']));_0x874d9d[_0x9231('0x2f')]=_0x874d9d[_0x9231('0x2f')][_0x9231('0x30')]?_0x874d9d[_0x9231('0x2f')]:_0x24e26c[_0x9231('0x2d')];if(!_0x75ceba['query'][_0x9231('0x31')]('nolimit')){_0x874d9d['limit']=qs['limit'](_0x75ceba[_0x9231('0x2a')][_0x9231('0xe')]);_0x874d9d[_0x9231('0xc')]=qs[_0x9231('0xc')](_0x75ceba[_0x9231('0x2a')][_0x9231('0xc')]);}_0x874d9d['order']=qs[_0x9231('0x32')](_0x75ceba[_0x9231('0x2a')][_0x9231('0x32')]);_0x874d9d[_0x9231('0x33')]=qs['filters'](_[_0x9231('0x34')](_0x75ceba['query'],_0x24e26c[_0x9231('0x2b')]),_0x1bdb85);if(_0x75ceba[_0x9231('0x2a')]['filter']){_0x874d9d[_0x9231('0x33')]=_[_0x9231('0x35')](_0x874d9d[_0x9231('0x33')],{'$or':_[_0x9231('0x1a')](_0x1bdb85,function(_0x6a6795){if(_0x6a6795['type']!==_0x9231('0x36')){var _0x4c4d08={};_0x4c4d08[_0x6a6795[_0x9231('0x1e')]]={'$like':'%'+_0x75ceba[_0x9231('0x2a')][_0x9231('0x18')]+'%'};return _0x4c4d08;}})});}_0x874d9d=_[_0x9231('0x35')]({},_0x874d9d,_0x75ceba[_0x9231('0x37')]);var _0x507b98={'where':_0x874d9d[_0x9231('0x33')]};return db['VoiceExtension'][_0x9231('0x38')](_0x507b98)['then'](function(_0x182815){_0xe55321['count']=_0x182815;if(_0x75ceba[_0x9231('0x2a')][_0x9231('0x39')]){_0x874d9d['include']=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x874d9d);})['then'](function(_0x354376){_0xe55321[_0x9231('0x3a')]=_0x354376;return _0xe55321;})['then'](respondWithFilteredResult(_0x1c49bc,_0x874d9d))[_0x9231('0x3b')](handleError(_0x1c49bc,null));};exports[_0x9231('0x3c')]=function(_0x1391d3,_0x23f08a){var _0x4deda9={'raw':![],'where':{'id':_0x1391d3['params']['id']}},_0x52b343={};_0x52b343['model']=_[_0x9231('0x29')](db[_0x9231('0x26')][_0x9231('0x3d')]);_0x52b343[_0x9231('0x2a')]=_['keys'](_0x1391d3[_0x9231('0x2a')]);_0x52b343[_0x9231('0x2b')]=_[_0x9231('0x2c')](_0x52b343[_0x9231('0x2d')],_0x52b343['query']);_0x4deda9[_0x9231('0x2f')]=_['intersection'](_0x52b343[_0x9231('0x2d')],qs['fields'](_0x1391d3[_0x9231('0x2a')][_0x9231('0x2e')]));_0x4deda9['attributes']=_0x4deda9[_0x9231('0x2f')][_0x9231('0x30')]?_0x4deda9['attributes']:_0x52b343['model'];if(_0x1391d3[_0x9231('0x2a')]['includeAll']){_0x4deda9[_0x9231('0x3e')]=[{'all':!![]}];}_0x4deda9=_[_0x9231('0x35')]({},_0x4deda9,_0x1391d3[_0x9231('0x37')]);return db[_0x9231('0x26')][_0x9231('0x1d')](_0x4deda9)[_0x9231('0x20')](handleEntityNotFound(_0x23f08a,null))[_0x9231('0x20')](respondWithResult(_0x23f08a,null))['catch'](handleError(_0x23f08a,null));};exports[_0x9231('0x11')]=function(_0x1ef58b,_0x3a65a7){return db['VoiceExtension'][_0x9231('0x1d')]({'where':{'id':_0x1ef58b['params']['id']}})[_0x9231('0x20')](handleEntityNotFound(_0x3a65a7,null))[_0x9231('0x20')](removeEntity(_0x3a65a7,null))[_0x9231('0x3b')](handleError(_0x3a65a7,null));};exports['create']=function(_0x984bc7,_0x40feb1){if(_0x984bc7[_0x9231('0x3f')][_0x9231('0x1c')]==='outbound'&&!_[_0x9231('0x40')](_0x984bc7['body'][_0x9231('0x41')],'_')){_0x984bc7['body'][_0x9231('0x41')]='_'[_0x9231('0x42')](_0x984bc7['body']['exten']);}return db['VoiceExtension'][_0x9231('0x43')](_0x984bc7[_0x9231('0x3f')],{'raw':![]})['then'](function(_0x2ded5e){var _0x490f58=_0x984bc7[_0x9231('0x44')][_0x9231('0x45')]({'plain':!![]});if(!_0x490f58)throw new Error(_0x9231('0x46'));if(_0x490f58['role']===_0x9231('0x44')){var _0x5eb29e=_0x2ded5e['get']({'plain':!![]});var _0x10e96e=[{'name':_0x9231('0x12'),'value':_0x9231('0x13')},{'name':_0x9231('0x14'),'value':_0x9231('0x15')},{'name':_0x9231('0x16'),'value':'internal'}];var _0x378d5b=_['find'](_0x10e96e,['value',_0x5eb29e[_0x9231('0x1c')]])['name'];return db[_0x9231('0x47')][_0x9231('0x1d')]({'where':{'name':_0x378d5b,'userProfileId':_0x490f58[_0x9231('0x48')]},'raw':!![]})[_0x9231('0x20')](function(_0x12a64d){if(_0x12a64d&&_0x12a64d['autoAssociation']===0x0){return db[_0x9231('0x1f')][_0x9231('0x43')]({'name':_0x5eb29e[_0x9231('0x1e')],'resourceId':_0x5eb29e['id'],'type':_0x12a64d[_0x9231('0x1e')],'sectionId':_0x12a64d['id']},{})['then'](function(){return _0x2ded5e;});}else{return _0x2ded5e;}})[_0x9231('0x3b')](function(_0x59fff3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x59fff3);throw _0x59fff3;});}return _0x2ded5e;})[_0x9231('0x20')](respondWithResult(_0x40feb1,0xc9))[_0x9231('0x3b')](handleError(_0x40feb1,null));};exports[_0x9231('0x49')]=function(_0xad7c62,_0x54e6d0){if(_0xad7c62[_0x9231('0x3f')]['id']){delete _0xad7c62[_0x9231('0x3f')]['id'];}return db['VoiceExtension'][_0x9231('0x1d')]({'where':{'id':_0xad7c62[_0x9231('0x4a')]['id']}})['then'](handleEntityNotFound(_0x54e6d0,null))['then'](function(_0x4038ad){if(_0x4038ad){return db[_0x9231('0x26')][_0x9231('0x49')](_[_0x9231('0x34')](_0xad7c62['body'],[_0x9231('0x41'),_0x9231('0x4b'),_0x9231('0x4c'),_0x9231('0x4d'),'cutdigits','mandatoryDisposition',_0x9231('0x4e')]),{'where':{'context':_0x4038ad[_0x9231('0x4b')],'exten':_0x4038ad['exten']},'individualHooks':!![]})[_0x9231('0x20')](function(_0x5d4cdc){return _0x5d4cdc;});}return null;})[_0x9231('0x20')](respondWithStatusCode(_0x54e6d0,null))[_0x9231('0x3b')](handleError(_0x54e6d0,null));};exports['addApplications']=function(_0x21f28e,_0x102715){var _0x23e972=_0x21f28e[_0x9231('0x4a')]['id'];var _0x118895=_0x21f28e[_0x9231('0x3f')];var _0x2cf44a=0xc8;var _0x5ac2c8=null;return db[_0x9231('0x4f')]['transaction']({'isolationLevel':db[_0x9231('0x4f')][_0x9231('0x50')][_0x9231('0x51')][_0x9231('0x52')]},function(_0x2e9494){return db[_0x9231('0x26')][_0x9231('0x53')]({'where':{'id':_0x23e972},'transaction':_0x2e9494})[_0x9231('0x20')](function(_0x5c07c6){if(_0x5c07c6){return db[_0x9231('0x26')][_0x9231('0x11')]({'where':{'VoiceExtensionId':_0x23e972},'transaction':_0x2e9494})[_0x9231('0x20')](function(){var _0x4f5ad5=_[_0x9231('0x1a')](_0x118895,function(_0x478f0f){_0x478f0f[_0x9231('0x54')]=_0x23e972;_0x478f0f['isApp']=!![];return _0x478f0f;});return _0x5c07c6[_0x9231('0x55')](_0x4f5ad5);})[_0x9231('0x20')](function(_0x50f9c6){return db[_0x9231('0x26')]['bulkCreate'](_0x50f9c6,{'transaction':_0x2e9494});});}else{_0x2cf44a=0x194;_0x5ac2c8=[];}});})[_0x9231('0x20')](function(){if(_0x2cf44a!==0x194){return db['VoiceExtension'][_0x9231('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x23e972},'order':_0x9231('0x57')})[_0x9231('0x20')](function(_0x543726){_0x5ac2c8=_0x543726;});}})['catch'](function(_0x5f1db4){_0x2cf44a=0x1f4;logger['error'](_0x5f1db4[_0x9231('0x23')]);if(_0x5f1db4['name']){delete _0x5f1db4[_0x9231('0x1e')];}_0x5ac2c8=_0x5f1db4;})[_0x9231('0x58')](function(){if(_0x5ac2c8===null){_0x102715[_0x9231('0x9')](_0x2cf44a);}else{if(_0x2cf44a===0x1f4){_0x102715[_0x9231('0xa')](_0x2cf44a)[_0x9231('0x24')](_0x5ac2c8);}else{_0x102715[_0x9231('0xa')](_0x2cf44a)['json'](_0x5ac2c8);}}});};
\ No newline at end of file
+var _0x978c=['../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','register','sendStatus','status','end','json','offset','undefined','count','limit','set','then','get','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','UserProfileResource','destroy','stack','name','send','index','VoiceExtension','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','VIRTUAL','merge','options','includeAll','include','rows','show','params','catch','create','body','startsWith','exten','concat','InboundRoutes','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','alias','context','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally'];(function(_0x21c098,_0x3720ed){var _0x1089cc=function(_0x1946c0){while(--_0x1946c0){_0x21c098['push'](_0x21c098['shift']());}};_0x1089cc(++_0x3720ed);}(_0x978c,0xb2));var _0xc978=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x978c[_0x9cd4c3];return _0x4c9025;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0xc978('0x0'));var logger=require(_0xc978('0x1'))(_0xc978('0x2'));var config=require(_0xc978('0x3'));var db=require(_0xc978('0x4'))['db'];config['redis']=_['defaults'](config[_0xc978('0x5')],{'host':_0xc978('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc978('0x5')]));require('./voiceExtension.socket')[_0xc978('0x7')](socket);function respondWithStatusCode(_0x4e2424,_0x2f2d68){_0x2f2d68=_0x2f2d68||0xcc;return function(_0x4eec0d){if(_0x4eec0d){return _0x4e2424[_0xc978('0x8')](_0x2f2d68);}return _0x4e2424[_0xc978('0x9')](_0x2f2d68)[_0xc978('0xa')]();};}function respondWithResult(_0x2b5edd,_0x344f5c){_0x344f5c=_0x344f5c||0xc8;return function(_0x1b6ff6){if(_0x1b6ff6){return _0x2b5edd[_0xc978('0x9')](_0x344f5c)[_0xc978('0xb')](_0x1b6ff6);}};}function respondWithFilteredResult(_0x5078ac,_0x52d696){return function(_0x18a00d){if(_0x18a00d){var _0x1359ec=typeof _0x52d696[_0xc978('0xc')]===_0xc978('0xd')&&typeof _0x52d696['limit']===_0xc978('0xd');var _0x7a5912=_0x18a00d['count'];var _0x4eea7c=_0x1359ec?0x0:_0x52d696['offset'];var _0x24e4a7=_0x1359ec?_0x18a00d[_0xc978('0xe')]:_0x52d696['offset']+_0x52d696[_0xc978('0xf')];var _0x37d0f0;if(_0x24e4a7>=_0x7a5912){_0x24e4a7=_0x7a5912;_0x37d0f0=0xc8;}else{_0x37d0f0=0xce;}_0x5078ac[_0xc978('0x9')](_0x37d0f0);return _0x5078ac[_0xc978('0x10')]('Content-Range',_0x4eea7c+'-'+_0x24e4a7+'/'+_0x7a5912)[_0xc978('0xb')](_0x18a00d);}return null;};}function removeEntity(_0x4fd0e4){return function(_0x25cacd){if(_0x25cacd){return _0x25cacd['destroy']()[_0xc978('0x11')](function(){var _0x15933f=_0x25cacd[_0xc978('0x12')]({'plain':!![]});var _0xeb7dd1=[{'name':'InboundRoutes','value':_0xc978('0x13'),'ignore':![]},{'name':_0xc978('0x14'),'value':_0xc978('0x15'),'ignore':![]},{'name':_0xc978('0x16'),'value':'internal','ignore':![]}];var _0x35a811=_(_0xeb7dd1)[_0xc978('0x17')](_0xc978('0x18'))[_0xc978('0x19')]('value')[_0xc978('0x1a')]();if(_[_0xc978('0x1b')](_0x35a811,_0x15933f[_0xc978('0x1c')])){return;}var _0x4d4325=_[_0xc978('0x1d')](_0xeb7dd1,[_0xc978('0x1a'),_0x15933f[_0xc978('0x1c')]])['name'];return db[_0xc978('0x1e')][_0xc978('0x1f')]({'where':{'type':_0x4d4325,'resourceId':_0x15933f['id']}})['then'](function(){return _0x25cacd;});})[_0xc978('0x11')](function(){_0x4fd0e4[_0xc978('0x9')](0xcc)[_0xc978('0xa')]();});}};}function handleEntityNotFound(_0x42d763){return function(_0x498767){if(!_0x498767){_0x42d763[_0xc978('0x8')](0x194);}return _0x498767;};}function handleError(_0x21b718,_0x1b1f29){_0x1b1f29=_0x1b1f29||0x1f4;return function(_0x16931a){logger['error'](_0x16931a[_0xc978('0x20')]);if(_0x16931a[_0xc978('0x21')]){delete _0x16931a['name'];}_0x21b718[_0xc978('0x9')](_0x1b1f29)[_0xc978('0x22')](_0x16931a);};}exports[_0xc978('0x23')]=function(_0x30e505,_0x3c7868){var _0x4c03f6={},_0x47dcb1={},_0x40a21a={'count':0x0,'rows':[]};var _0x21166f=_[_0xc978('0x19')](db[_0xc978('0x24')][_0xc978('0x25')],function(_0x788a7){return{'name':_0x788a7[_0xc978('0x26')],'type':_0x788a7[_0xc978('0x1c')][_0xc978('0x27')]};});_0x47dcb1['model']=_[_0xc978('0x19')](_0x21166f,_0xc978('0x21'));_0x47dcb1['query']=_[_0xc978('0x28')](_0x30e505[_0xc978('0x29')]);_0x47dcb1[_0xc978('0x2a')]=_[_0xc978('0x2b')](_0x47dcb1[_0xc978('0x2c')],_0x47dcb1[_0xc978('0x29')]);_0x4c03f6[_0xc978('0x2d')]=_[_0xc978('0x2b')](_0x47dcb1['model'],qs[_0xc978('0x2e')](_0x30e505['query'][_0xc978('0x2e')]));_0x4c03f6[_0xc978('0x2d')]=_0x4c03f6[_0xc978('0x2d')]['length']?_0x4c03f6[_0xc978('0x2d')]:_0x47dcb1[_0xc978('0x2c')];if(!_0x30e505[_0xc978('0x29')][_0xc978('0x2f')](_0xc978('0x30'))){_0x4c03f6[_0xc978('0xf')]=qs[_0xc978('0xf')](_0x30e505['query']['limit']);_0x4c03f6[_0xc978('0xc')]=qs[_0xc978('0xc')](_0x30e505[_0xc978('0x29')]['offset']);}_0x4c03f6['order']=qs[_0xc978('0x31')](_0x30e505[_0xc978('0x29')][_0xc978('0x31')]);_0x4c03f6['where']=qs[_0xc978('0x2a')](_[_0xc978('0x32')](_0x30e505[_0xc978('0x29')],_0x47dcb1[_0xc978('0x2a')]),_0x21166f);if(_0x30e505[_0xc978('0x29')][_0xc978('0x17')]){_0x4c03f6[_0xc978('0x33')]=_['merge'](_0x4c03f6[_0xc978('0x33')],{'$or':_[_0xc978('0x19')](_0x21166f,function(_0x26f3b9){if(_0x26f3b9[_0xc978('0x1c')]!==_0xc978('0x34')){var _0x4c8ed9={};_0x4c8ed9[_0x26f3b9[_0xc978('0x21')]]={'$like':'%'+_0x30e505[_0xc978('0x29')][_0xc978('0x17')]+'%'};return _0x4c8ed9;}})});}_0x4c03f6=_[_0xc978('0x35')]({},_0x4c03f6,_0x30e505[_0xc978('0x36')]);var _0x10ff5a={'where':_0x4c03f6[_0xc978('0x33')]};return db[_0xc978('0x24')][_0xc978('0xe')](_0x10ff5a)[_0xc978('0x11')](function(_0x4c1376){_0x40a21a[_0xc978('0xe')]=_0x4c1376;if(_0x30e505['query'][_0xc978('0x37')]){_0x4c03f6[_0xc978('0x38')]=[{'all':!![]}];}return db[_0xc978('0x24')]['findAll'](_0x4c03f6);})[_0xc978('0x11')](function(_0x2f4e7f){_0x40a21a[_0xc978('0x39')]=_0x2f4e7f;return _0x40a21a;})['then'](respondWithFilteredResult(_0x3c7868,_0x4c03f6))['catch'](handleError(_0x3c7868,null));};exports[_0xc978('0x3a')]=function(_0x32a040,_0x43908e){var _0x2c277f={'raw':![],'where':{'id':_0x32a040[_0xc978('0x3b')]['id']}},_0x136a92={};_0x136a92[_0xc978('0x2c')]=_[_0xc978('0x28')](db[_0xc978('0x24')]['rawAttributes']);_0x136a92[_0xc978('0x29')]=_['keys'](_0x32a040[_0xc978('0x29')]);_0x136a92[_0xc978('0x2a')]=_[_0xc978('0x2b')](_0x136a92[_0xc978('0x2c')],_0x136a92[_0xc978('0x29')]);_0x2c277f['attributes']=_[_0xc978('0x2b')](_0x136a92['model'],qs[_0xc978('0x2e')](_0x32a040[_0xc978('0x29')][_0xc978('0x2e')]));_0x2c277f[_0xc978('0x2d')]=_0x2c277f['attributes']['length']?_0x2c277f['attributes']:_0x136a92[_0xc978('0x2c')];if(_0x32a040['query'][_0xc978('0x37')]){_0x2c277f['include']=[{'all':!![]}];}_0x2c277f=_[_0xc978('0x35')]({},_0x2c277f,_0x32a040[_0xc978('0x36')]);return db['VoiceExtension'][_0xc978('0x1d')](_0x2c277f)[_0xc978('0x11')](handleEntityNotFound(_0x43908e,null))[_0xc978('0x11')](respondWithResult(_0x43908e,null))[_0xc978('0x3c')](handleError(_0x43908e,null));};exports[_0xc978('0x1f')]=function(_0x5ef9df,_0x24c2bd){return db[_0xc978('0x24')][_0xc978('0x1d')]({'where':{'id':_0x5ef9df['params']['id']}})[_0xc978('0x11')](handleEntityNotFound(_0x24c2bd,null))['then'](removeEntity(_0x24c2bd,null))['catch'](handleError(_0x24c2bd,null));};exports[_0xc978('0x3d')]=function(_0x30573e,_0x3f735f){if(_0x30573e[_0xc978('0x3e')][_0xc978('0x1c')]===_0xc978('0x15')&&!_[_0xc978('0x3f')](_0x30573e['body'][_0xc978('0x40')],'_')){_0x30573e[_0xc978('0x3e')][_0xc978('0x40')]='_'[_0xc978('0x41')](_0x30573e[_0xc978('0x3e')][_0xc978('0x40')]);}return db[_0xc978('0x24')][_0xc978('0x3d')](_0x30573e[_0xc978('0x3e')],{'raw':![]})[_0xc978('0x11')](function(_0x93a256){var _0x288b09=_0x30573e['user'][_0xc978('0x12')]({'plain':!![]});if(!_0x288b09)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x288b09['role']==='user'){var _0x145171=_0x93a256['get']({'plain':!![]});var _0x18f7a7=[{'name':_0xc978('0x42'),'value':_0xc978('0x13')},{'name':_0xc978('0x14'),'value':'outbound'},{'name':'InternalRoutes','value':'internal'}];var _0x515c30=_[_0xc978('0x1d')](_0x18f7a7,[_0xc978('0x1a'),_0x145171['type']])[_0xc978('0x21')];return db['UserProfileSection'][_0xc978('0x1d')]({'where':{'name':_0x515c30,'userProfileId':_0x288b09[_0xc978('0x43')]},'raw':!![]})[_0xc978('0x11')](function(_0x5614f3){if(_0x5614f3&&_0x5614f3['autoAssociation']===0x0){return db[_0xc978('0x1e')][_0xc978('0x3d')]({'name':_0x145171[_0xc978('0x21')],'resourceId':_0x145171['id'],'type':_0x5614f3[_0xc978('0x21')],'sectionId':_0x5614f3['id']},{})[_0xc978('0x11')](function(){return _0x93a256;});}else{return _0x93a256;}})[_0xc978('0x3c')](function(_0x5be34a){logger[_0xc978('0x44')](_0xc978('0x45'),_0x5be34a);throw _0x5be34a;});}return _0x93a256;})[_0xc978('0x11')](respondWithResult(_0x3f735f,0xc9))[_0xc978('0x3c')](handleError(_0x3f735f,null));};exports[_0xc978('0x46')]=function(_0x25b574,_0x21c8ab){if(_0x25b574['body']['id']){delete _0x25b574[_0xc978('0x3e')]['id'];}return db[_0xc978('0x24')][_0xc978('0x1d')]({'where':{'id':_0x25b574[_0xc978('0x3b')]['id']}})[_0xc978('0x11')](handleEntityNotFound(_0x21c8ab,null))[_0xc978('0x11')](function(_0x665cec){if(_0x665cec){return db[_0xc978('0x24')][_0xc978('0x46')](_[_0xc978('0x32')](_0x25b574[_0xc978('0x3e')],[_0xc978('0x40'),'context',_0xc978('0x47'),_0xc978('0x48'),_0xc978('0x49'),'mandatoryDisposition',_0xc978('0x4a')]),{'where':{'context':_0x665cec[_0xc978('0x4b')],'exten':_0x665cec[_0xc978('0x40')]},'individualHooks':!![]})[_0xc978('0x11')](function(_0x35d33c){return _0x35d33c;});}return null;})[_0xc978('0x11')](respondWithStatusCode(_0x21c8ab,null))[_0xc978('0x3c')](handleError(_0x21c8ab,null));};exports[_0xc978('0x4c')]=function(_0x2178f3,_0x19d1cd){var _0x5d1c2e=_0x2178f3[_0xc978('0x3b')]['id'];var _0x1ea2ad=_0x2178f3[_0xc978('0x3e')];var _0x432d4a=0xc8;var _0x519503=null;return db[_0xc978('0x4d')][_0xc978('0x4e')]({'isolationLevel':db[_0xc978('0x4d')][_0xc978('0x4f')][_0xc978('0x50')][_0xc978('0x51')]},function(_0xc8d1da){return db[_0xc978('0x24')][_0xc978('0x52')]({'where':{'id':_0x5d1c2e},'transaction':_0xc8d1da})[_0xc978('0x11')](function(_0x394697){if(_0x394697){return db[_0xc978('0x24')][_0xc978('0x1f')]({'where':{'VoiceExtensionId':_0x5d1c2e},'transaction':_0xc8d1da})[_0xc978('0x11')](function(){var _0x464aed=_[_0xc978('0x19')](_0x1ea2ad,function(_0x355523){_0x355523[_0xc978('0x53')]=_0x5d1c2e;_0x355523['isApp']=!![];return _0x355523;});return _0x394697[_0xc978('0x54')](_0x464aed);})[_0xc978('0x11')](function(_0x2530de){return db[_0xc978('0x24')][_0xc978('0x55')](_0x2530de,{'transaction':_0xc8d1da});});}else{_0x432d4a=0x194;_0x519503=[];}});})[_0xc978('0x11')](function(){if(_0x432d4a!==0x194){return db[_0xc978('0x24')][_0xc978('0x56')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5d1c2e},'order':_0xc978('0x57')})[_0xc978('0x11')](function(_0x517fb8){_0x519503=_0x517fb8;});}})[_0xc978('0x3c')](function(_0x1b71fb){_0x432d4a=0x1f4;logger['error'](_0x1b71fb[_0xc978('0x20')]);if(_0x1b71fb[_0xc978('0x21')]){delete _0x1b71fb[_0xc978('0x21')];}_0x519503=_0x1b71fb;})[_0xc978('0x58')](function(){if(_0x519503===null){_0x19d1cd[_0xc978('0x8')](_0x432d4a);}else{if(_0x432d4a===0x1f4){_0x19d1cd[_0xc978('0x9')](_0x432d4a)[_0xc978('0x22')](_0x519503);}else{_0x19d1cd[_0xc978('0x9')](_0x432d4a)[_0xc978('0xb')](_0x519503);}}});};
\ No newline at end of file
index 41820e7..c02a528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec48=['hook','exports','../../mysqldb','VoiceExtension','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x13f994,_0x341a07){var _0x44b17c=function(_0x5810cd){while(--_0x5810cd){_0x13f994['push'](_0x13f994['shift']());}};_0x44b17c(++_0x341a07);}(_0xec48,0x185));var _0x8ec4=function(_0x2aba0e,_0x1872be){_0x2aba0e=_0x2aba0e-0x0;var _0x3f277e=_0xec48[_0x2aba0e];return _0x3f277e;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x8ec4('0x0'))['db'][_0x8ec4('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x8ec4('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8ec4('0x3'),'afterDestroy':_0x8ec4('0x4')};function emitEvent(_0x1b690d){return function(_0xd1cd11,_0x1b7f61,_0x206122){VoiceExtensionEvents[_0x8ec4('0x5')](_0x1b690d+':'+_0xd1cd11['id'],_0xd1cd11);VoiceExtensionEvents[_0x8ec4('0x5')](_0x1b690d,_0xd1cd11);_0x206122(null);};}for(var e in events){if(events[_0x8ec4('0x6')](e)){var event=events[e];VoiceExtension[_0x8ec4('0x7')](e,emitEvent(event));}}module[_0x8ec4('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x32ea=['../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','events'];(function(_0x343e44,_0x519af9){var _0xa5130e=function(_0xae1fa0){while(--_0xae1fa0){_0x343e44['push'](_0x343e44['shift']());}};_0xa5130e(++_0x519af9);}(_0x32ea,0x18f));var _0xa32e=function(_0x3227c1,_0x4318c5){_0x3227c1=_0x3227c1-0x0;var _0x31fd48=_0x32ea[_0x3227c1];return _0x31fd48;};'use strict';var EventEmitter=require(_0xa32e('0x0'));var VoiceExtension=require(_0xa32e('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa32e('0x2')](0x0);var events={'afterCreate':_0xa32e('0x3'),'afterUpdate':_0xa32e('0x4'),'afterDestroy':_0xa32e('0x5')};function emitEvent(_0x1cb379){return function(_0x5d5dbf,_0xa01f54,_0x52c975){VoiceExtensionEvents[_0xa32e('0x6')](_0x1cb379+':'+_0x5d5dbf['id'],_0x5d5dbf);VoiceExtensionEvents['emit'](_0x1cb379,_0x5d5dbf);_0x52c975(null);};}for(var e in events){if(events[_0xa32e('0x7')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index 93e00b7..25b7cd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c32=['_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','timeout','options','split','length','name','trunk','param','phone','prefix','SIP','join','none','indexOf','replace','U(xcally-mixmonitor-context)','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','answer','queue','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','define','VoiceExtension','voice_extensions','get','Hangup','lodash','./voiceExtension.attributes','exports','models','type','Set','context','exten','alias','CDR(routeAlias)=','push','inbound','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound','NoOp','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x314e22,_0x891517){var _0x4ac0f5=function(_0x43aa65){while(--_0x43aa65){_0x314e22['push'](_0x314e22['shift']());}};_0x4ac0f5(++_0x891517);}(_0x8c32,0x130));var _0x28c3=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x8c32[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0x28c3('0x0'));var attributes=require(_0x28c3('0x1'));module[_0x28c3('0x2')]=function(_0x5c0a8a){var _0x27dd09=_0x5c0a8a[_0x28c3('0x3')];function _0x36d4ad(_0x14a446){var _0x2f94e0=0x2;var _0x40df22=[{'type':_0x14a446[_0x28c3('0x4')],'app':_0x28c3('0x5'),'appdata':'CDR(type)='+_0x14a446[_0x28c3('0x4')],'context':_0x14a446[_0x28c3('0x6')],'exten':_0x14a446[_0x28c3('0x7')],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']},{'type':_0x14a446[_0x28c3('0x4')],'app':_0x14a446[_0x28c3('0x8')]?_0x28c3('0x5'):'NoOp','appdata':_0x14a446[_0x28c3('0x8')]?_0x28c3('0x9')+_0x14a446['alias']:'No\x20alias\x20set','context':_0x14a446['context'],'exten':_0x14a446[_0x28c3('0x7')],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']}];if(_0x14a446[_0x28c3('0x4')]==='inbound'){_0x40df22[_0x28c3('0xa')]({'type':_0x28c3('0xb'),'app':_0x28c3('0x5'),'appdata':'CDR(routeid)='+_0x14a446['id'],'context':_0x14a446[_0x28c3('0x6')],'exten':_0x14a446[_0x28c3('0x7')],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']});}_0x40df22[_0x28c3('0xa')]({'type':_0x14a446[_0x28c3('0x4')],'app':_0x28c3('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x14a446[_0x28c3('0x6')],'exten':_0x14a446['exten'],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']},{'type':_0x14a446[_0x28c3('0x4')],'app':'Set','appdata':_0x28c3('0xc'),'context':_0x14a446['context'],'exten':_0x14a446[_0x28c3('0x7')],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']},{'type':_0x14a446[_0x28c3('0x4')],'app':'Set','appdata':_0x28c3('0xd'),'context':_0x14a446['context'],'exten':_0x14a446['exten'],'priority':_0x2f94e0++,'VoiceExtensionId':_0x14a446['id']});return _0x40df22;}function _0x58e2b9(_0x1ccd33){var _0xbbff75=0x2;var _0x44e3e2=[{'type':'outbound','app':_0x28c3('0x5'),'appdata':_0x28c3('0xe'),'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x1ccd33[_0x28c3('0x8')]?_0x28c3('0x5'):_0x28c3('0x10'),'appdata':_0x1ccd33[_0x28c3('0x8')]?_0x28c3('0x9')+_0x1ccd33[_0x28c3('0x8')]:_0x28c3('0x11'),'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x28c3('0x5'),'appdata':_0x28c3('0x12')+(_0x1ccd33[_0x28c3('0x13')]?_0x28c3('0x14')+_0x1ccd33[_0x28c3('0x13')]+'}':_0x28c3('0x15')),'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':'Set','appdata':_0x28c3('0x16')+_0x1ccd33['id'],'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x28c3('0x17'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0xbbff75+0x2)+_0x28c3('0x18')+(_0xbbff75+0x1)+')','context':_0x1ccd33['context'],'exten':_0x1ccd33['exten'],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':'Set','appdata':_0x1ccd33[_0x28c3('0x13')]?_0x28c3('0x19')+_0x1ccd33[_0x28c3('0x13')]+'}':'CDR(prefix)=noprefix','context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x28c3('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':'Set','appdata':_0x28c3('0xc'),'context':_0x1ccd33['context'],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x28c3('0x5'),'appdata':_0x28c3('0xd'),'context':_0x1ccd33['context'],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':'Set','appdata':_0x28c3('0x1a')+_0x1ccd33['id'],'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']}];if(_0x1ccd33['hasOwnProperty']('recordingFormat')&&_0x1ccd33['recordingFormat']!=='none'){_0x44e3e2[_0x28c3('0xa')]({'type':_0x28c3('0xf'),'app':_0x28c3('0x5'),'appdata':_0x28c3('0x1b'),'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33['exten'],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']},{'type':_0x28c3('0xf'),'app':_0x28c3('0x5'),'appdata':_0x28c3('0x1c')+_0x1ccd33[_0x28c3('0x1d')]||_0x28c3('0x1e'),'context':_0x1ccd33[_0x28c3('0x6')],'exten':_0x1ccd33[_0x28c3('0x7')],'priority':_0xbbff75++,'VoiceExtensionId':_0x1ccd33['id']});}return _0x44e3e2;}function _0x1fe342(_0x4921b4,_0x3bcfce){var _0xb4c7da=[{'name':'trunk','param':0x0},{'name':_0x28c3('0x1f'),'param':0x1},{'name':_0x28c3('0x20'),'param':0x2},{'name':'url','param':0x3}];var _0x3a2d2c={};var _0x18f638=_0x3bcfce[_0x28c3('0x21')](',');var _0x16757e=[];for(var _0x1a8480=0x0;_0x1a8480<_0xb4c7da[_0x28c3('0x22')];_0x1a8480++){switch(_0xb4c7da[_0x1a8480][_0x28c3('0x23')]){case _0x28c3('0x24'):_0x3a2d2c['trunk']=_0x18f638[_0xb4c7da[_0x1a8480][_0x28c3('0x25')]]['split']('/')[0x1];_0x3a2d2c[_0x28c3('0x26')]=_0x18f638[_0xb4c7da[_0x1a8480][_0x28c3('0x25')]]['split']('/')[0x2];_0x3a2d2c['prefix']=_0x3a2d2c['phone']?_0x3a2d2c['phone'][_0x28c3('0x21')]('$')[0x0]:undefined;_0x3a2d2c[_0x28c3('0x26')]=_0x4921b4[_0x28c3('0x13')]?(_0x3a2d2c[_0x28c3('0x27')]||'')+_0x28c3('0x14')+_0x4921b4[_0x28c3('0x13')]+'}':(_0x3a2d2c[_0x28c3('0x27')]||'')+'${EXTEN}';_0x16757e[_0xb4c7da[_0x1a8480][_0x28c3('0x25')]]=[_0x28c3('0x28'),_0x3a2d2c['trunk'],_0x3a2d2c[_0x28c3('0x26')]][_0x28c3('0x29')]('/');break;case'options':_0x3a2d2c[_0x28c3('0x20')]=_0x18f638[_0xb4c7da[_0x1a8480]['param']];if(_0x4921b4['recordingFormat']!==_0x28c3('0x2a')){if(_0x3a2d2c[_0x28c3('0x20')][_0x28c3('0x2b')]('U(xcally-mixmonitor-context)')<0x0){_0x3a2d2c[_0x28c3('0x20')]+='U(xcally-mixmonitor-context)';}}else{_0x3a2d2c[_0x28c3('0x20')]=_0x3a2d2c['options'][_0x28c3('0x2c')](_0x28c3('0x2d'),'');}_0x16757e[_0xb4c7da[_0x1a8480][_0x28c3('0x25')]]=_0x3a2d2c['options'];break;default:_0x16757e[_0xb4c7da[_0x1a8480]['param']]=_0x18f638[_0xb4c7da[_0x1a8480][_0x28c3('0x25')]];}}return _0x16757e['join'](',');}function _0x36d447(_0x29a21c,_0x11e47e,_0x35be1e){return new Promise(function(_0x255a65,_0x2b18af){var _0x327035=[];if(_['isEmpty'](_0x11e47e))return _0x255a65(_0x327035);_0x27dd09[_0x28c3('0x2e')][_0x28c3('0x2f')]({'attributes':['id',_0x28c3('0x30'),_0x28c3('0x31')],'raw':!![]})[_0x28c3('0x32')](function(_0x4f99ab){for(var _0x30a0d8=0x0,_0x4fe432=0x0;_0x30a0d8<_0x11e47e[_0x28c3('0x22')];_0x30a0d8++,_0x4fe432=0x0){var _0x24a2a0=_0x11e47e[_0x30a0d8];var _0x2a5844=[];var _0xd1e2ec=[];delete _0x24a2a0['id'];if(_0x24a2a0[_0x28c3('0x30')]!==_0x28c3('0x33')){_0x24a2a0['intervals']=[_0x24a2a0[_0x28c3('0x30')]];}else{_0x24a2a0[_0x28c3('0x34')]=_0x24a2a0['IntervalId']?_[_0x28c3('0x35')](_['filter'](_0x4f99ab,{'IntervalId':_0x24a2a0['IntervalId']}),_0x28c3('0x30')):[];}_0x24a2a0[_0x28c3('0x6')]=_0x29a21c[_0x28c3('0x6')];_0x24a2a0[_0x28c3('0x7')]=_0x29a21c['exten'];if(_0x24a2a0[_0x28c3('0x4')])_0x24a2a0['type']=_0x24a2a0[_0x28c3('0x4')][_0x28c3('0x36')]();if(_0x29a21c['type']===_0x28c3('0xf')){if(_0x24a2a0['hasOwnProperty'](_0x28c3('0x37'))&&_0x24a2a0[_0x28c3('0x37')]&&_0x24a2a0[_0x28c3('0x37')]!=='--'){_0x2a5844[_0x28c3('0xa')]({'type':_0x24a2a0[_0x28c3('0x4')][_0x28c3('0x36')](),'app':_0x28c3('0x5'),'appdata':_0x28c3('0x38')+_0x24a2a0[_0x28c3('0x37')],'context':_0x29a21c[_0x28c3('0x6')],'exten':_0x29a21c[_0x28c3('0x7')],'priority':_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});}_0x2a5844['push']({'type':_0x24a2a0[_0x28c3('0x4')]['toLowerCase'](),'app':_0x28c3('0x17'),'appdata':_0x28c3('0x39')+(_0x24a2a0[_0x28c3('0x3a')]?'Set(CALLERID(all)='+_0x24a2a0['callerID']+')':_0x28c3('0x3b')),'context':_0x29a21c[_0x28c3('0x6')],'exten':_0x29a21c[_0x28c3('0x7')],'priority':_0x24a2a0['intervals'][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});}else{if(_0x24a2a0['hasOwnProperty'](_0x28c3('0x3c'))){if([_0x28c3('0x3d'),'playback'][_0x28c3('0x3e')](_0x24a2a0[_0x28c3('0x3f')]['toLowerCase']())&&_0x24a2a0[_0x28c3('0x40')]!==_0x28c3('0x41')){if(_0x24a2a0[_0x28c3('0x3c')]){_0x2a5844['push']({'type':_0x24a2a0[_0x28c3('0x4')]['toLowerCase'](),'app':_0x28c3('0x17'),'appdata':_0x28c3('0x42'),'context':_0x29a21c['context'],'exten':_0x29a21c[_0x28c3('0x7')],'priority':_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});_0x2a5844[_0x28c3('0xa')]({'type':_0x24a2a0['type']['toLowerCase'](),'app':_0x28c3('0x5'),'appdata':_0x28c3('0x43'),'context':_0x29a21c[_0x28c3('0x6')],'exten':_0x29a21c['exten'],'priority':_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});}else{_0x2a5844[_0x28c3('0xa')]({'type':_0x24a2a0[_0x28c3('0x4')][_0x28c3('0x36')](),'app':_0x28c3('0x17'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x29a21c[_0x28c3('0x6')],'exten':_0x29a21c['exten'],'priority':_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});_0x2a5844['push']({'type':_0x24a2a0[_0x28c3('0x4')][_0x28c3('0x36')](),'app':'Set','appdata':_0x28c3('0x44'),'context':_0x29a21c['context'],'exten':_0x29a21c[_0x28c3('0x7')],'priority':_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]+_0x35be1e+_0x4fe432++,'VoiceExtensionId':_0x29a21c['id']});}}}}for(var _0x20a207=0x0;_0x20a207<_0x24a2a0['intervals'][_0x28c3('0x22')];_0x20a207++){var _0x3fe7e8=_0x35be1e+_0x24a2a0[_0x28c3('0x34')]['length'];var _0x24dbe5=_0x20a207===_0x24a2a0[_0x28c3('0x34')][_0x28c3('0x22')]-0x1?_0x35be1e+_0x2a5844['length']+_0xd1e2ec[_0x28c3('0x22')]+0x2:_0x35be1e+_0x20a207+0x1;_0x2a5844[_0x28c3('0x45')](_0x20a207,0x0,{'type':_0x29a21c[_0x28c3('0x4')],'app':_0x28c3('0x46'),'appdata':_0x24a2a0[_0x28c3('0x34')][_0x20a207]+'?'+_0x29a21c[_0x28c3('0x6')]+_0x28c3('0x47')+_0x3fe7e8+':'+_0x29a21c[_0x28c3('0x6')]+_0x28c3('0x47')+_0x24dbe5,'exten':_0x29a21c[_0x28c3('0x7')],'context':_0x29a21c[_0x28c3('0x6')],'priority':_0x35be1e+_0x20a207,'VoiceExtensionId':_0x29a21c['id']});}if(_0x24a2a0[_0x28c3('0x40')]===_0x28c3('0x48'))_0x24a2a0[_0x28c3('0x49')]=_0x1fe342(_0x29a21c,_0x24a2a0[_0x28c3('0x49')]);_0x24a2a0['priority']=_0x2a5844[_0x28c3('0x22')]?_[_0x28c3('0x4a')](_0x2a5844)[_0x28c3('0x4b')]+0x1:_0x35be1e;_0x327035=_[_0x28c3('0x4c')](_0x327035,_0x2a5844,[_0x24a2a0],_0xd1e2ec);_0x35be1e=_['last'](_0x327035)[_0x28c3('0x4b')]+0x1;}return _0x255a65(_0x327035);})[_0x28c3('0x4d')](function(_0x5dc8fe){_0x2b18af(_0x5dc8fe);});});}return _0x5c0a8a[_0x28c3('0x4e')](_0x28c3('0x4f'),attributes,{'tableName':_0x28c3('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x371c12){var _0x51027c=this[_0x28c3('0x51')]({'plain':!![]});var _0x400d9f=_0x51027c[_0x28c3('0x4')]==='outbound'?_0x58e2b9(_0x51027c):_0x36d4ad(_0x51027c);return _0x36d447(_0x51027c,_0x371c12,_[_0x28c3('0x4a')](_0x400d9f)[_0x28c3('0x4b')]+0x1)[_0x28c3('0x32')](function(_0x23f5bd){var _0x19fdaf=_['concat'](_0x400d9f,_0x23f5bd);_0x19fdaf[_0x28c3('0xa')]({'type':_0x51027c[_0x28c3('0x4')],'app':_0x28c3('0x52'),'exten':_0x51027c[_0x28c3('0x7')],'context':_0x51027c['context'],'priority':_['last'](_0x19fdaf)[_0x28c3('0x4b')]+0x1,'VoiceExtensionId':_0x51027c['id']});return _0x19fdaf;});}}});};
\ No newline at end of file
+var _0xf0db=['CDR(routeid)=','exten','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','cutdigits','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-ANSWER=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','url','split','length','prefix','phone','param','SIP','join','options','indexOf','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','callerID','queue','playback','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','outboundDial','appdata','priority','last','catch','define','VoiceExtension','voice_extensions','get','lodash','./voiceExtension.attributes','models','Set','CDR(type)=','type','context','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','inbound','push'];(function(_0x7a0cd3,_0x3b83f8){var _0x1eaa82=function(_0x2e924a){while(--_0x2e924a){_0x7a0cd3['push'](_0x7a0cd3['shift']());}};_0x1eaa82(++_0x3b83f8);}(_0xf0db,0x12b));var _0xbf0d=function(_0x4a2c5d,_0x1cfe0e){_0x4a2c5d=_0x4a2c5d-0x0;var _0x40bde1=_0xf0db[_0x4a2c5d];return _0x40bde1;};'use strict';var _=require(_0xbf0d('0x0'));var attributes=require(_0xbf0d('0x1'));module['exports']=function(_0x138814){var _0x1a6fea=_0x138814[_0xbf0d('0x2')];function _0x5db968(_0x47436c){var _0x2ccd6c=0x2;var _0x56f648=[{'type':_0x47436c['type'],'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x4')+_0x47436c[_0xbf0d('0x5')],'context':_0x47436c[_0xbf0d('0x6')],'exten':_0x47436c['exten'],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']},{'type':_0x47436c[_0xbf0d('0x5')],'app':_0x47436c[_0xbf0d('0x7')]?_0xbf0d('0x3'):_0xbf0d('0x8'),'appdata':_0x47436c[_0xbf0d('0x7')]?_0xbf0d('0x9')+_0x47436c[_0xbf0d('0x7')]:_0xbf0d('0xa'),'context':_0x47436c['context'],'exten':_0x47436c['exten'],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']}];if(_0x47436c[_0xbf0d('0x5')]===_0xbf0d('0xb')){_0x56f648[_0xbf0d('0xc')]({'type':_0xbf0d('0xb'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0xd')+_0x47436c['id'],'context':_0x47436c[_0xbf0d('0x6')],'exten':_0x47436c[_0xbf0d('0xe')],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']});}_0x56f648['push']({'type':_0x47436c[_0xbf0d('0x5')],'app':_0xbf0d('0x3'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x47436c[_0xbf0d('0x6')],'exten':_0x47436c[_0xbf0d('0xe')],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']},{'type':_0x47436c[_0xbf0d('0x5')],'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0xf'),'context':_0x47436c[_0xbf0d('0x6')],'exten':_0x47436c[_0xbf0d('0xe')],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']},{'type':_0x47436c[_0xbf0d('0x5')],'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x10'),'context':_0x47436c[_0xbf0d('0x6')],'exten':_0x47436c[_0xbf0d('0xe')],'priority':_0x2ccd6c++,'VoiceExtensionId':_0x47436c['id']});return _0x56f648;}function _0x474ac2(_0x1d1eb4){var _0x523802=0x2;var _0x11a5f1=[{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x12'),'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0x1d1eb4['alias']?_0xbf0d('0x3'):'NoOp','appdata':_0x1d1eb4[_0xbf0d('0x7')]?_0xbf0d('0x9')+_0x1d1eb4[_0xbf0d('0x7')]:_0xbf0d('0xa'),'context':_0x1d1eb4['context'],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':'CDR(destination)='+(_0x1d1eb4['cutdigits']?_0xbf0d('0x13')+_0x1d1eb4['cutdigits']+'}':_0xbf0d('0x14')),'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0xd')+_0x1d1eb4['id'],'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x15'),'appdata':_0xbf0d('0x16')+(_0x523802+0x2)+_0xbf0d('0x17')+(_0x523802+0x1)+')','context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0x1d1eb4[_0xbf0d('0x18')]?_0xbf0d('0x19')+_0x1d1eb4[_0xbf0d('0x18')]+'}':'CDR(prefix)=noprefix','context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4['exten'],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x1a'),'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0xf'),'context':_0x1d1eb4['context'],'exten':_0x1d1eb4['exten'],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':'MONITOR_OPTIONS=ab','context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4['exten'],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':'outbound','app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x1b')+_0x1d1eb4['id'],'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4['exten'],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']}];if(_0x1d1eb4[_0xbf0d('0x1c')](_0xbf0d('0x1d'))&&_0x1d1eb4[_0xbf0d('0x1d')]!==_0xbf0d('0x1e')){_0x11a5f1[_0xbf0d('0xc')]({'type':_0xbf0d('0x11'),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x1f'),'context':_0x1d1eb4['context'],'exten':_0x1d1eb4['exten'],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']},{'type':_0xbf0d('0x11'),'app':'Set','appdata':_0xbf0d('0x20')+_0x1d1eb4[_0xbf0d('0x1d')]||_0xbf0d('0x21'),'context':_0x1d1eb4[_0xbf0d('0x6')],'exten':_0x1d1eb4[_0xbf0d('0xe')],'priority':_0x523802++,'VoiceExtensionId':_0x1d1eb4['id']});}return _0x11a5f1;}function _0x330b37(_0x549692,_0x24586e){var _0x2e5dcf=[{'name':_0xbf0d('0x22'),'param':0x0},{'name':_0xbf0d('0x23'),'param':0x1},{'name':'options','param':0x2},{'name':_0xbf0d('0x24'),'param':0x3}];var _0x4b0ee9={};var _0x3faf27=_0x24586e[_0xbf0d('0x25')](',');var _0x1ed208=[];for(var _0x20cd8c=0x0;_0x20cd8c<_0x2e5dcf[_0xbf0d('0x26')];_0x20cd8c++){switch(_0x2e5dcf[_0x20cd8c]['name']){case _0xbf0d('0x22'):_0x4b0ee9[_0xbf0d('0x22')]=_0x3faf27[_0x2e5dcf[_0x20cd8c]['param']][_0xbf0d('0x25')]('/')[0x1];_0x4b0ee9['phone']=_0x3faf27[_0x2e5dcf[_0x20cd8c]['param']][_0xbf0d('0x25')]('/')[0x2];_0x4b0ee9[_0xbf0d('0x27')]=_0x4b0ee9['phone']?_0x4b0ee9[_0xbf0d('0x28')]['split']('$')[0x0]:undefined;_0x4b0ee9[_0xbf0d('0x28')]=_0x549692['cutdigits']?(_0x4b0ee9[_0xbf0d('0x27')]||'')+_0xbf0d('0x13')+_0x549692[_0xbf0d('0x18')]+'}':(_0x4b0ee9[_0xbf0d('0x27')]||'')+'${EXTEN}';_0x1ed208[_0x2e5dcf[_0x20cd8c][_0xbf0d('0x29')]]=[_0xbf0d('0x2a'),_0x4b0ee9['trunk'],_0x4b0ee9[_0xbf0d('0x28')]][_0xbf0d('0x2b')]('/');break;case _0xbf0d('0x2c'):_0x4b0ee9[_0xbf0d('0x2c')]=_0x3faf27[_0x2e5dcf[_0x20cd8c]['param']];if(_0x549692[_0xbf0d('0x1d')]!==_0xbf0d('0x1e')){if(_0x4b0ee9[_0xbf0d('0x2c')][_0xbf0d('0x2d')](_0xbf0d('0x2e'))<0x0){_0x4b0ee9[_0xbf0d('0x2c')]+=_0xbf0d('0x2e');}}else{_0x4b0ee9[_0xbf0d('0x2c')]=_0x4b0ee9['options'][_0xbf0d('0x2f')](_0xbf0d('0x2e'),'');}_0x1ed208[_0x2e5dcf[_0x20cd8c][_0xbf0d('0x29')]]=_0x4b0ee9[_0xbf0d('0x2c')];break;default:_0x1ed208[_0x2e5dcf[_0x20cd8c]['param']]=_0x3faf27[_0x2e5dcf[_0x20cd8c][_0xbf0d('0x29')]];}}return _0x1ed208['join'](',');}function _0x271bcf(_0x1aade1,_0x30d96e,_0x2d5193){return new Promise(function(_0x13a39e,_0x55a8d7){var _0x10261a=[];if(_['isEmpty'](_0x30d96e))return _0x13a39e(_0x10261a);_0x1a6fea[_0xbf0d('0x30')][_0xbf0d('0x31')]({'attributes':['id',_0xbf0d('0x32'),_0xbf0d('0x33')],'raw':!![]})[_0xbf0d('0x34')](function(_0x4997b7){for(var _0x31b8d0=0x0,_0x19c446=0x0;_0x31b8d0<_0x30d96e['length'];_0x31b8d0++,_0x19c446=0x0){var _0x3aefd8=_0x30d96e[_0x31b8d0];var _0x530b2d=[];var _0x2bcbc9=[];delete _0x3aefd8['id'];if(_0x3aefd8['interval']!==_0xbf0d('0x35')){_0x3aefd8[_0xbf0d('0x36')]=[_0x3aefd8['interval']];}else{_0x3aefd8[_0xbf0d('0x36')]=_0x3aefd8[_0xbf0d('0x33')]?_[_0xbf0d('0x37')](_[_0xbf0d('0x38')](_0x4997b7,{'IntervalId':_0x3aefd8[_0xbf0d('0x33')]}),'interval'):[];}_0x3aefd8[_0xbf0d('0x6')]=_0x1aade1['context'];_0x3aefd8['exten']=_0x1aade1['exten'];if(_0x3aefd8[_0xbf0d('0x5')])_0x3aefd8['type']=_0x3aefd8[_0xbf0d('0x5')][_0xbf0d('0x39')]();if(_0x1aade1[_0xbf0d('0x5')]===_0xbf0d('0x11')){if(_0x3aefd8[_0xbf0d('0x1c')](_0xbf0d('0x3a'))&&_0x3aefd8[_0xbf0d('0x3a')]&&_0x3aefd8[_0xbf0d('0x3a')]!=='--'){_0x530b2d[_0xbf0d('0xc')]({'type':_0x3aefd8[_0xbf0d('0x5')][_0xbf0d('0x39')](),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x3b')+_0x3aefd8[_0xbf0d('0x3a')],'context':_0x1aade1['context'],'exten':_0x1aade1[_0xbf0d('0xe')],'priority':_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')]+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});}_0x530b2d[_0xbf0d('0xc')]({'type':_0x3aefd8['type'][_0xbf0d('0x39')](),'app':_0xbf0d('0x15'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x3aefd8[_0xbf0d('0x3c')]?'Set(CALLERID(all)='+_0x3aefd8[_0xbf0d('0x3c')]+')':'NoOp(No\x20number\x20available)'),'context':_0x1aade1['context'],'exten':_0x1aade1[_0xbf0d('0xe')],'priority':_0x3aefd8[_0xbf0d('0x36')]['length']+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});}else{if(_0x3aefd8[_0xbf0d('0x1c')]('answer')){if([_0xbf0d('0x3d'),_0xbf0d('0x3e')]['includes'](_0x3aefd8[_0xbf0d('0x3f')][_0xbf0d('0x39')]())&&_0x3aefd8[_0xbf0d('0x40')]!=='custom'){if(_0x3aefd8['answer']){_0x530b2d[_0xbf0d('0xc')]({'type':_0x3aefd8[_0xbf0d('0x5')][_0xbf0d('0x39')](),'app':'ExecIf','appdata':_0xbf0d('0x41'),'context':_0x1aade1[_0xbf0d('0x6')],'exten':_0x1aade1['exten'],'priority':_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')]+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});_0x530b2d[_0xbf0d('0xc')]({'type':_0x3aefd8[_0xbf0d('0x5')]['toLowerCase'](),'app':'Set','appdata':_0xbf0d('0x42'),'context':_0x1aade1[_0xbf0d('0x6')],'exten':_0x1aade1[_0xbf0d('0xe')],'priority':_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')]+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});}else{_0x530b2d['push']({'type':_0x3aefd8[_0xbf0d('0x5')][_0xbf0d('0x39')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x1aade1['context'],'exten':_0x1aade1[_0xbf0d('0xe')],'priority':_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')]+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});_0x530b2d[_0xbf0d('0xc')]({'type':_0x3aefd8['type'][_0xbf0d('0x39')](),'app':_0xbf0d('0x3'),'appdata':_0xbf0d('0x43'),'context':_0x1aade1[_0xbf0d('0x6')],'exten':_0x1aade1[_0xbf0d('0xe')],'priority':_0x3aefd8[_0xbf0d('0x36')]['length']+_0x2d5193+_0x19c446++,'VoiceExtensionId':_0x1aade1['id']});}}}}for(var _0x52f5ca=0x0;_0x52f5ca<_0x3aefd8['intervals'][_0xbf0d('0x26')];_0x52f5ca++){var _0x345cde=_0x2d5193+_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')];var _0x4f1002=_0x52f5ca===_0x3aefd8[_0xbf0d('0x36')][_0xbf0d('0x26')]-0x1?_0x2d5193+_0x530b2d[_0xbf0d('0x26')]+_0x2bcbc9[_0xbf0d('0x26')]+0x2:_0x2d5193+_0x52f5ca+0x1;_0x530b2d['splice'](_0x52f5ca,0x0,{'type':_0x1aade1[_0xbf0d('0x5')],'app':'GotoIfTime','appdata':_0x3aefd8[_0xbf0d('0x36')][_0x52f5ca]+'?'+_0x1aade1['context']+_0xbf0d('0x44')+_0x345cde+':'+_0x1aade1[_0xbf0d('0x6')]+_0xbf0d('0x44')+_0x4f1002,'exten':_0x1aade1['exten'],'context':_0x1aade1[_0xbf0d('0x6')],'priority':_0x2d5193+_0x52f5ca,'VoiceExtensionId':_0x1aade1['id']});}if(_0x3aefd8[_0xbf0d('0x40')]===_0xbf0d('0x45'))_0x3aefd8[_0xbf0d('0x46')]=_0x330b37(_0x1aade1,_0x3aefd8['appdata']);_0x3aefd8[_0xbf0d('0x47')]=_0x530b2d[_0xbf0d('0x26')]?_[_0xbf0d('0x48')](_0x530b2d)[_0xbf0d('0x47')]+0x1:_0x2d5193;_0x10261a=_['concat'](_0x10261a,_0x530b2d,[_0x3aefd8],_0x2bcbc9);_0x2d5193=_[_0xbf0d('0x48')](_0x10261a)[_0xbf0d('0x47')]+0x1;}return _0x13a39e(_0x10261a);})[_0xbf0d('0x49')](function(_0x1128b9){_0x55a8d7(_0x1128b9);});});}return _0x138814[_0xbf0d('0x4a')](_0xbf0d('0x4b'),attributes,{'tableName':_0xbf0d('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0xbd0fd8){var _0x204570=this[_0xbf0d('0x4d')]({'plain':!![]});var _0x4e8da9=_0x204570[_0xbf0d('0x5')]===_0xbf0d('0x11')?_0x474ac2(_0x204570):_0x5db968(_0x204570);return _0x271bcf(_0x204570,_0xbd0fd8,_['last'](_0x4e8da9)[_0xbf0d('0x47')]+0x1)[_0xbf0d('0x34')](function(_0x277046){var _0x35f2af=_['concat'](_0x4e8da9,_0x277046);_0x35f2af[_0xbf0d('0xc')]({'type':_0x204570[_0xbf0d('0x5')],'app':'Hangup','exten':_0x204570[_0xbf0d('0xe')],'context':_0x204570[_0xbf0d('0x6')],'priority':_['last'](_0x35f2af)['priority']+0x1,'VoiceExtensionId':_0x204570['id']});return _0x35f2af;});}}});};
\ No newline at end of file
index 4f798d2..f842b6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x972c=['result','catch','GetVoiceExtension','findAll','options','raw','where','include','model','attributes','map','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','register','request','then','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info'];(function(_0x1159e5,_0x116ab7){var _0x44dbe9=function(_0x5256fa){while(--_0x5256fa){_0x1159e5['push'](_0x1159e5['shift']());}};_0x44dbe9(++_0x116ab7);}(_0x972c,0xf2));var _0xc972=function(_0x315a31,_0x36077f){_0x315a31=_0x315a31-0x0;var _0x39b3d0=_0x972c[_0x315a31];return _0x39b3d0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc972('0x0'));var BPromise=require(_0xc972('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc972('0x2'));var db=require(_0xc972('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc972('0x4'));var config=require(_0xc972('0x5'));var jayson=require(_0xc972('0x6'));var client=jayson['client'][_0xc972('0x7')]({'port':0x232a});config['redis']=_[_0xc972('0x8')](config[_0xc972('0x9')],{'host':_0xc972('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceExtension.socket')[_0xc972('0xb')](socket);function respondWithRpcPromise(_0x4c4903,_0x3053d6,_0x16993d){return new BPromise(function(_0x32cb5b,_0x423926){return client[_0xc972('0xc')](_0x4c4903,_0x16993d)[_0xc972('0xd')](function(_0x233d36){logger['info'](_0xc972('0xe'),_0x3053d6,_0xc972('0xf'));logger[_0xc972('0x10')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x3053d6,_0xc972('0xf'),JSON[_0xc972('0x11')](_0x233d36));if(_0x233d36[_0xc972('0x12')]){if(_0x233d36['error'][_0xc972('0x13')]===0x1f4){logger[_0xc972('0x12')](_0xc972('0xe'),_0x3053d6,_0x233d36[_0xc972('0x12')]['message']);return _0x423926(_0x233d36[_0xc972('0x12')][_0xc972('0x14')]);}logger[_0xc972('0x12')](_0xc972('0xe'),_0x3053d6,_0x233d36[_0xc972('0x12')][_0xc972('0x14')]);return _0x32cb5b(_0x233d36[_0xc972('0x12')][_0xc972('0x14')]);}else{logger[_0xc972('0x15')](_0xc972('0xe'),_0x3053d6,_0xc972('0xf'));_0x32cb5b(_0x233d36[_0xc972('0x16')][_0xc972('0x14')]);}})[_0xc972('0x17')](function(_0x3dffe5){logger[_0xc972('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x3053d6,_0x3dffe5);_0x423926(_0x3dffe5);});});}exports[_0xc972('0x18')]=function(_0x20cb18){var _0x3c8bda=this;return new Promise(function(_0x267d6c,_0x486340){return db['VoiceExtension'][_0xc972('0x19')]({'raw':_0x20cb18[_0xc972('0x1a')]?_0x20cb18['options'][_0xc972('0x1b')]===undefined?!![]:![]:!![],'where':_0x20cb18[_0xc972('0x1a')]?_0x20cb18[_0xc972('0x1a')][_0xc972('0x1c')]||null:null,'attributes':_0x20cb18[_0xc972('0x1a')]?_0x20cb18[_0xc972('0x1a')]['attributes']||null:null,'limit':_0x20cb18[_0xc972('0x1a')]?_0x20cb18['options']['limit']||null:null,'include':_0x20cb18[_0xc972('0x1a')]?_0x20cb18[_0xc972('0x1a')][_0xc972('0x1d')]?_['map'](_0x20cb18[_0xc972('0x1a')][_0xc972('0x1d')],function(_0xf115da){return{'model':db[_0xf115da[_0xc972('0x1e')]],'as':_0xf115da['as'],'attributes':_0xf115da[_0xc972('0x1f')],'include':_0xf115da[_0xc972('0x1d')]?_[_0xc972('0x20')](_0xf115da[_0xc972('0x1d')],function(_0x3610d7){return{'model':db[_0x3610d7[_0xc972('0x1e')]],'as':_0x3610d7['as'],'attributes':_0x3610d7[_0xc972('0x1f')],'include':_0x3610d7[_0xc972('0x1d')]?_[_0xc972('0x20')](_0x3610d7[_0xc972('0x1d')],function(_0x5ad71d){return{'model':db[_0x5ad71d[_0xc972('0x1e')]],'as':_0x5ad71d['as'],'attributes':_0x5ad71d['attributes']};}):[]};}):[]};}):[]:[]})[_0xc972('0xd')](function(_0x4efef1){logger[_0xc972('0x15')](_0xc972('0x18'),_0x20cb18);logger[_0xc972('0x10')](_0xc972('0x18'),_0x20cb18,JSON[_0xc972('0x11')](_0x4efef1));_0x267d6c(_0x4efef1);})['catch'](function(_0xdbc068){logger[_0xc972('0x12')](_0xc972('0x18'),_0xdbc068[_0xc972('0x14')],_0x20cb18);_0x486340(_0x3c8bda['error'](0x1f4,_0xdbc068[_0xc972('0x14')]));});});};
\ No newline at end of file
+var _0xc677=['attributes','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','defaults','localhost','redis','./voiceExtension.socket','register','request','then','info','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','code','error','VoiceExtension,\x20%s,\x20%s','message','result','catch','GetVoiceExtension','VoiceExtension','options','raw','where'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0xc677,0x16c));var _0x7c67=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc677[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x7c67('0x0'));var moment=require(_0x7c67('0x1'));var BPromise=require(_0x7c67('0x2'));var rs=require(_0x7c67('0x3'));var fs=require('fs');var Redis=require(_0x7c67('0x4'));var db=require(_0x7c67('0x5'))['db'];var utils=require(_0x7c67('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7c67('0x7')][_0x7c67('0x8')]({'port':0x232a});config['redis']=_[_0x7c67('0x9')](config['redis'],{'host':_0x7c67('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7c67('0xb')]));require(_0x7c67('0xc'))[_0x7c67('0xd')](socket);function respondWithRpcPromise(_0x390de9,_0xc2fc51,_0x12322a){return new BPromise(function(_0x31650d,_0x3e6821){return client[_0x7c67('0xe')](_0x390de9,_0x12322a)[_0x7c67('0xf')](function(_0x36f1d2){logger[_0x7c67('0x10')]('VoiceExtension,\x20%s,\x20%s',_0xc2fc51,_0x7c67('0x11'));logger[_0x7c67('0x12')](_0x7c67('0x13'),_0xc2fc51,'request\x20sent',JSON[_0x7c67('0x14')](_0x36f1d2));if(_0x36f1d2['error']){if(_0x36f1d2['error'][_0x7c67('0x15')]===0x1f4){logger[_0x7c67('0x16')](_0x7c67('0x17'),_0xc2fc51,_0x36f1d2[_0x7c67('0x16')][_0x7c67('0x18')]);return _0x3e6821(_0x36f1d2[_0x7c67('0x16')][_0x7c67('0x18')]);}logger[_0x7c67('0x16')](_0x7c67('0x17'),_0xc2fc51,_0x36f1d2[_0x7c67('0x16')]['message']);return _0x31650d(_0x36f1d2[_0x7c67('0x16')][_0x7c67('0x18')]);}else{logger[_0x7c67('0x10')](_0x7c67('0x17'),_0xc2fc51,_0x7c67('0x11'));_0x31650d(_0x36f1d2[_0x7c67('0x19')][_0x7c67('0x18')]);}})[_0x7c67('0x1a')](function(_0x2ca71e){logger[_0x7c67('0x16')](_0x7c67('0x17'),_0xc2fc51,_0x2ca71e);_0x3e6821(_0x2ca71e);});});}exports[_0x7c67('0x1b')]=function(_0x274a5e){var _0x33dd88=this;return new Promise(function(_0x13cf70,_0x271f4e){return db[_0x7c67('0x1c')]['findAll']({'raw':_0x274a5e[_0x7c67('0x1d')]?_0x274a5e['options'][_0x7c67('0x1e')]===undefined?!![]:![]:!![],'where':_0x274a5e[_0x7c67('0x1d')]?_0x274a5e[_0x7c67('0x1d')][_0x7c67('0x1f')]||null:null,'attributes':_0x274a5e['options']?_0x274a5e['options'][_0x7c67('0x20')]||null:null,'limit':_0x274a5e[_0x7c67('0x1d')]?_0x274a5e[_0x7c67('0x1d')]['limit']||null:null,'include':_0x274a5e['options']?_0x274a5e[_0x7c67('0x1d')][_0x7c67('0x21')]?_[_0x7c67('0x22')](_0x274a5e[_0x7c67('0x1d')][_0x7c67('0x21')],function(_0xf09e83){return{'model':db[_0xf09e83['model']],'as':_0xf09e83['as'],'attributes':_0xf09e83[_0x7c67('0x20')],'include':_0xf09e83[_0x7c67('0x21')]?_['map'](_0xf09e83['include'],function(_0x4c4b51){return{'model':db[_0x4c4b51['model']],'as':_0x4c4b51['as'],'attributes':_0x4c4b51[_0x7c67('0x20')],'include':_0x4c4b51['include']?_[_0x7c67('0x22')](_0x4c4b51[_0x7c67('0x21')],function(_0x2d67d5){return{'model':db[_0x2d67d5[_0x7c67('0x23')]],'as':_0x2d67d5['as'],'attributes':_0x2d67d5[_0x7c67('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20e77c){logger[_0x7c67('0x10')](_0x7c67('0x1b'),_0x274a5e);logger['debug'](_0x7c67('0x1b'),_0x274a5e,JSON[_0x7c67('0x14')](_0x20e77c));_0x13cf70(_0x20e77c);})['catch'](function(_0x322d21){logger[_0x7c67('0x16')]('GetVoiceExtension',_0x322d21['message'],_0x274a5e);_0x271f4e(_0x33dd88[_0x7c67('0x16')](0x1f4,_0x322d21[_0x7c67('0x18')]));});});};
\ No newline at end of file
index a19af03..6473068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x131a41,_0x5d2950){var _0x160ad8=function(_0x27a3b4){while(--_0x27a3b4){_0x131a41['push'](_0x131a41['shift']());}};_0x160ad8(++_0x5d2950);}(_0xe14b,0x93));var _0xbe14=function(_0x5a9f94,_0x5bb010){_0x5a9f94=_0x5a9f94-0x0;var _0x59f78f=_0xe14b[_0x5a9f94];return _0x59f78f;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
+var _0x2ef3=['update','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove'];(function(_0x49dd26,_0x9e5a5d){var _0x45f549=function(_0x8a8d93){while(--_0x8a8d93){_0x49dd26['push'](_0x49dd26['shift']());}};_0x45f549(++_0x9e5a5d);}(_0x2ef3,0xba));var _0x32ef=function(_0x8fd507,_0x50af00){_0x8fd507=_0x8fd507-0x0;var _0x34a76b=_0x2ef3[_0x8fd507];return _0x34a76b;};'use strict';var VoiceExtensionEvents=require(_0x32ef('0x0'));var events=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3')];function createListener(_0x3944df,_0x38047b){return function(_0x48106c){_0x38047b[_0x32ef('0x4')](_0x3944df,_0x48106c);};}function removeListener(_0x38b7f3,_0x524ab6){return function(){VoiceExtensionEvents[_0x32ef('0x5')](_0x38b7f3,_0x524ab6);};}exports[_0x32ef('0x6')]=function(_0x4c8104){for(var _0x5dfa09=0x0,_0x2c0089=events[_0x32ef('0x7')];_0x5dfa09<_0x2c0089;_0x5dfa09++){var _0x367c39=events[_0x5dfa09];var _0x2fb8eb=createListener(_0x32ef('0x8')+_0x367c39,_0x4c8104);VoiceExtensionEvents['on'](_0x367c39,_0x2fb8eb);}};
\ No newline at end of file
index 541e97e..294eb15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['getMessages','post','update','delete','/:id','destroy','exports','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/messages'];(function(_0x1455f3,_0x2eba86){var _0x2a2534=function(_0x1aa017){while(--_0x1aa017){_0x1455f3['push'](_0x1455f3['shift']());}};_0x2a2534(++_0x2eba86);}(_0x5d58,0x187));var _0x85d5=function(_0x11ac8c,_0x3d7e78){_0x11ac8c=_0x11ac8c-0x0;var _0x33632b=_0x5d58[_0x11ac8c];return _0x33632b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./voiceMail.controller');router[_0x85d5('0x4')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0x6')]);router[_0x85d5('0x4')]('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0x7')]);router['get'](_0x85d5('0x8'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')]('/',auth[_0x85d5('0x5')](),controller['create']);router['put']('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0xb')]);router[_0x85d5('0xc')](_0x85d5('0xd'),auth[_0x85d5('0x5')](),controller[_0x85d5('0xe')]);module[_0x85d5('0xf')]=router;
\ No newline at end of file
+var _0x1623=['/:id','show','get','/:id/messages','getMessages','post','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceMail.controller','isAuthenticated','index'];(function(_0x1912a4,_0x252423){var _0x136479=function(_0x1cc807){while(--_0x1cc807){_0x1912a4['push'](_0x1912a4['shift']());}};_0x136479(++_0x252423);}(_0x1623,0xab));var _0x3162=function(_0xd95b38,_0x4f2624){_0xd95b38=_0xd95b38-0x0;var _0x3208bf=_0x1623[_0xd95b38];return _0x3208bf;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3162('0xf')](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0x10')]);router[_0x3162('0x11')](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0x12')]);module[_0x3162('0x13')]=router;
\ No newline at end of file
index ec53ca1..e267b84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd505=['TIMESTAMP','INTEGER','getDataValue','fullname','sequelize','exports','STRING','contest_mailbox','setDataValue','email','trim','central','ENUM','yes'];(function(_0x550256,_0x43bdf8){var _0x4c39b6=function(_0x307270){while(--_0x307270){_0x550256['push'](_0x550256['shift']());}};_0x4c39b6(++_0x43bdf8);}(_0xd505,0x1c4));var _0x5d50=function(_0x8b592d,_0x585c43){_0x8b592d=_0x8b592d-0x0;var _0x24daad=_0xd505[_0x8b592d];return _0x24daad;};'use strict';var Sequelize=require(_0x5d50('0x0'));module[_0x5d50('0x1')]={'customer_id':{'type':Sequelize[_0x5d50('0x2')]},'context':{'type':Sequelize[_0x5d50('0x2')],'defaultValue':'from-voicemail','unique':_0x5d50('0x3')},'mailbox':{'type':Sequelize[_0x5d50('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x5d50('0x2')]},'fullname':{'type':Sequelize[_0x5d50('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x9d6392){this[_0x5d50('0x4')](_0x5d50('0x5'),typeof _0x9d6392==='string'&&_0x9d6392[_0x5d50('0x6')]()?_0x9d6392['trim']():null);}},'pager':{'type':Sequelize[_0x5d50('0x2')]},'tz':{'type':Sequelize[_0x5d50('0x2')],'defaultValue':_0x5d50('0x7')},'attach':{'type':Sequelize[_0x5d50('0x8')](_0x5d50('0x9'),'no'),'defaultValue':_0x5d50('0x9'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x5d50('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x5d50('0x2')]},'callback':{'type':Sequelize[_0x5d50('0x2')]},'review':{'type':Sequelize[_0x5d50('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x5d50('0x8')](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x5d50('0x8')](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x5d50('0x8')](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x5d50('0x8')](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x5d50('0x9'),'no'),'defaultValue':_0x5d50('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x5d50('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x5d50('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5d50('0x8')]('yes','no'),'defaultValue':_0x5d50('0x9'),'allowNull':![]},'stamp':{'type':_0x5d50('0xa')},'emailsubject':{'type':Sequelize[_0x5d50('0x2')]},'emailbody':{'type':Sequelize[_0x5d50('0x2')]},'maxsecs':{'type':Sequelize[_0x5d50('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x5d50('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x5d50('0xc')](_0x5d50('0xd'))+'\x20-\x20'+this['getDataValue']('mailbox');}}};
\ No newline at end of file
+var _0xe1de=['ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','getDataValue','mailbox','STRING','contest_mailbox','email','trim','central'];(function(_0xde681d,_0x320776){var _0x58db6e=function(_0x3b33b2){while(--_0x3b33b2){_0xde681d['push'](_0xde681d['shift']());}};_0x58db6e(++_0x320776);}(_0xe1de,0xcb));var _0xee1d=function(_0x1d7300,_0x17f109){_0x1d7300=_0x1d7300-0x0;var _0x46ee98=_0xe1de[_0x1d7300];return _0x46ee98;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0xee1d('0x0')]},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0xee1d('0x1')},'mailbox':{'type':Sequelize[_0xee1d('0x0')],'defaultValue':'','allowNull':![],'unique':_0xee1d('0x1')},'password':{'type':Sequelize[_0xee1d('0x0')]},'fullname':{'type':Sequelize[_0xee1d('0x0')]},'email':{'type':Sequelize[_0xee1d('0x0')],'validate':{'isEmail':!![]},'set':function(_0xa53f82){this['setDataValue'](_0xee1d('0x2'),typeof _0xa53f82==='string'&&_0xa53f82[_0xee1d('0x3')]()?_0xa53f82[_0xee1d('0x3')]():null);}},'pager':{'type':Sequelize[_0xee1d('0x0')]},'tz':{'type':Sequelize[_0xee1d('0x0')],'defaultValue':_0xee1d('0x4')},'attach':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':_0xee1d('0x6'),'allowNull':![]},'saycid':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':_0xee1d('0x6'),'allowNull':![]},'dialout':{'type':Sequelize[_0xee1d('0x0')]},'callback':{'type':Sequelize[_0xee1d('0x0')]},'review':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xee1d('0x5')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xee1d('0x5')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xee1d('0x6'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xee1d('0x5')](_0xee1d('0x6'),'no'),'defaultValue':_0xee1d('0x6'),'allowNull':![]},'stamp':{'type':_0xee1d('0x7')},'emailsubject':{'type':Sequelize[_0xee1d('0x0')]},'emailbody':{'type':Sequelize[_0xee1d('0x0')]},'maxsecs':{'type':Sequelize[_0xee1d('0x8')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xee1d('0x8')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xee1d('0x9')],'get':function(){return this['getDataValue']('fullname')+_0xee1d('0xa')+this[_0xee1d('0xb')](_0xee1d('0xc'));}}};
\ No newline at end of file
index e63dd4d..2d4e016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f68=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','Voicemails','error','stack','name','send','index','VoiceMail','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','body','destroy','getMessages','findOne','VoiceMailMessage','findAndCountAll','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','squel'];(function(_0x5f91e8,_0x4f9e0c){var _0x75f1bf=function(_0x5873c3){while(--_0x5873c3){_0x5f91e8['push'](_0x5f91e8['shift']());}};_0x75f1bf(++_0x4f9e0c);}(_0x2f68,0x9a));var _0x82f6=function(_0x32cd32,_0x646169){_0x32cd32=_0x32cd32-0x0;var _0x50b8e3=_0x2f68[_0x32cd32];return _0x50b8e3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82f6('0x0'));var zipdir=require(_0x82f6('0x1'));var jsonpatch=require(_0x82f6('0x2'));var rp=require(_0x82f6('0x3'));var moment=require('moment');var BPromise=require(_0x82f6('0x4'));var Mustache=require('mustache');var util=require(_0x82f6('0x5'));var path=require(_0x82f6('0x6'));var sox=require('sox');var csv=require(_0x82f6('0x7'));var ejs=require(_0x82f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x82f6('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x82f6('0xa'));var toCsv=require(_0x82f6('0x7'));var querystring=require(_0x82f6('0xb'));var Papa=require('papaparse');var Redis=require(_0x82f6('0xc'));var authService=require(_0x82f6('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x82f6('0xe'));var hardwareService=require(_0x82f6('0xf'));var logger=require(_0x82f6('0x10'))(_0x82f6('0x11'));var utils=require(_0x82f6('0x12'));var config=require(_0x82f6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x82f6('0x14'))['db'];function respondWithStatusCode(_0x442262,_0x4cc967){_0x4cc967=_0x4cc967||0xcc;return function(_0x194da7){if(_0x194da7){return _0x442262[_0x82f6('0x15')](_0x4cc967);}return _0x442262[_0x82f6('0x16')](_0x4cc967)[_0x82f6('0x17')]();};}function respondWithResult(_0x371481,_0xa00275){_0xa00275=_0xa00275||0xc8;return function(_0x115c7b){if(_0x115c7b){return _0x371481[_0x82f6('0x16')](_0xa00275)[_0x82f6('0x18')](_0x115c7b);}};}function respondWithFilteredResult(_0x55b58e,_0x389949){return function(_0x5d0827){if(_0x5d0827){var _0x249222=typeof _0x389949[_0x82f6('0x19')]===_0x82f6('0x1a')&&typeof _0x389949[_0x82f6('0x1b')]===_0x82f6('0x1a');var _0x2326ae=_0x5d0827[_0x82f6('0x1c')];var _0xcbc95f=_0x249222?0x0:_0x389949[_0x82f6('0x19')];var _0x2bfd57=_0x249222?_0x5d0827[_0x82f6('0x1c')]:_0x389949[_0x82f6('0x19')]+_0x389949[_0x82f6('0x1b')];var _0x4fe226;if(_0x2bfd57>=_0x2326ae){_0x2bfd57=_0x2326ae;_0x4fe226=0xc8;}else{_0x4fe226=0xce;}_0x55b58e[_0x82f6('0x16')](_0x4fe226);return _0x55b58e['set'](_0x82f6('0x1d'),_0xcbc95f+'-'+_0x2bfd57+'/'+_0x2326ae)[_0x82f6('0x18')](_0x5d0827);}return null;};}function patchUpdates(_0x55cbce){return function(_0x2b03ad){try{jsonpatch[_0x82f6('0x1e')](_0x2b03ad,_0x55cbce,!![]);}catch(_0x46713a){return BPromise[_0x82f6('0x1f')](_0x46713a);}return _0x2b03ad['save']();};}function saveUpdates(_0xdc4dea,_0x4beccf){return function(_0x8668bb){if(_0x8668bb){return _0x8668bb[_0x82f6('0x20')](_0xdc4dea)['then'](function(_0x516deb){return _0x516deb;});}return null;};}function removeEntity(_0x3af5f7,_0x1d96d5){return function(_0x4c57c5){if(_0x4c57c5){return _0x4c57c5['destroy']()[_0x82f6('0x21')](function(){var _0x31face=_0x4c57c5['get']({'plain':!![]});var _0xfd8b68=_0x82f6('0x22');return db['UserProfileResource']['destroy']({'where':{'type':_0xfd8b68,'resourceId':_0x31face['id']}})[_0x82f6('0x21')](function(){return _0x4c57c5;});})['then'](function(){_0x3af5f7[_0x82f6('0x16')](0xcc)[_0x82f6('0x17')]();});}};}function handleEntityNotFound(_0x54ce11,_0x3795ef){return function(_0x15c9b7){if(!_0x15c9b7){_0x54ce11[_0x82f6('0x15')](0x194);}return _0x15c9b7;};}function handleError(_0x1125a0,_0x4f9fa4){_0x4f9fa4=_0x4f9fa4||0x1f4;return function(_0x40a071){logger[_0x82f6('0x23')](_0x40a071[_0x82f6('0x24')]);if(_0x40a071[_0x82f6('0x25')]){delete _0x40a071[_0x82f6('0x25')];}_0x1125a0[_0x82f6('0x16')](_0x4f9fa4)[_0x82f6('0x26')](_0x40a071);};}exports[_0x82f6('0x27')]=function(_0x1e1aa4,_0x402449){var _0x3c9419={},_0x20d1c5={},_0x6ce179={'count':0x0,'rows':[]};var _0x91117b=_['map'](db[_0x82f6('0x28')][_0x82f6('0x29')],function(_0x418f34){return{'name':_0x418f34['fieldName'],'type':_0x418f34[_0x82f6('0x2a')][_0x82f6('0x2b')]};});_0x20d1c5[_0x82f6('0x2c')]=_[_0x82f6('0x2d')](_0x91117b,_0x82f6('0x25'));_0x20d1c5[_0x82f6('0x2e')]=_[_0x82f6('0x2f')](_0x1e1aa4[_0x82f6('0x2e')]);_0x20d1c5[_0x82f6('0x30')]=_[_0x82f6('0x31')](_0x20d1c5[_0x82f6('0x2c')],_0x20d1c5[_0x82f6('0x2e')]);_0x3c9419[_0x82f6('0x32')]=_[_0x82f6('0x31')](_0x20d1c5['model'],qs[_0x82f6('0x33')](_0x1e1aa4[_0x82f6('0x2e')][_0x82f6('0x33')]));_0x3c9419[_0x82f6('0x32')]=_0x3c9419[_0x82f6('0x32')][_0x82f6('0x34')]?_0x3c9419[_0x82f6('0x32')]:_0x20d1c5[_0x82f6('0x2c')];if(!_0x1e1aa4[_0x82f6('0x2e')][_0x82f6('0x35')](_0x82f6('0x36'))){_0x3c9419[_0x82f6('0x1b')]=qs[_0x82f6('0x1b')](_0x1e1aa4[_0x82f6('0x2e')]['limit']);_0x3c9419[_0x82f6('0x19')]=qs['offset'](_0x1e1aa4['query'][_0x82f6('0x19')]);}_0x3c9419[_0x82f6('0x37')]=qs['sort'](_0x1e1aa4[_0x82f6('0x2e')][_0x82f6('0x38')]);_0x3c9419[_0x82f6('0x39')]=qs['filters'](_[_0x82f6('0x3a')](_0x1e1aa4['query'],_0x20d1c5[_0x82f6('0x30')]),_0x91117b);if(_0x1e1aa4['query'][_0x82f6('0x3b')]){_0x3c9419['where']=_[_0x82f6('0x3c')](_0x3c9419[_0x82f6('0x39')],{'$or':_['map'](_0x91117b,function(_0xfce1dd){if(_0xfce1dd[_0x82f6('0x2a')]!==_0x82f6('0x3d')){var _0x43dcd1={};_0x43dcd1[_0xfce1dd['name']]={'$like':'%'+_0x1e1aa4[_0x82f6('0x2e')][_0x82f6('0x3b')]+'%'};return _0x43dcd1;}})});}_0x3c9419=_[_0x82f6('0x3c')]({},_0x3c9419,_0x1e1aa4[_0x82f6('0x3e')]);var _0x55ecd4={'where':_0x3c9419[_0x82f6('0x39')]};return db[_0x82f6('0x28')]['count'](_0x55ecd4)[_0x82f6('0x21')](function(_0x699803){_0x6ce179[_0x82f6('0x1c')]=_0x699803;if(_0x1e1aa4[_0x82f6('0x2e')][_0x82f6('0x3f')]){_0x3c9419['include']=[{'all':!![]}];}return db[_0x82f6('0x28')]['findAll'](_0x3c9419);})[_0x82f6('0x21')](function(_0x38e82d){_0x6ce179[_0x82f6('0x40')]=_0x38e82d;return _0x6ce179;})[_0x82f6('0x21')](respondWithFilteredResult(_0x402449,_0x3c9419))[_0x82f6('0x41')](handleError(_0x402449,null));};exports[_0x82f6('0x42')]=function(_0x43fefc,_0x47a0d1){var _0x165493={'raw':!![],'where':{'id':_0x43fefc[_0x82f6('0x43')]['id']}},_0x297cda={};_0x297cda[_0x82f6('0x2c')]=_['keys'](db[_0x82f6('0x28')]['rawAttributes']);_0x297cda[_0x82f6('0x2e')]=_[_0x82f6('0x2f')](_0x43fefc[_0x82f6('0x2e')]);_0x297cda[_0x82f6('0x30')]=_[_0x82f6('0x31')](_0x297cda[_0x82f6('0x2c')],_0x297cda['query']);_0x165493[_0x82f6('0x32')]=_[_0x82f6('0x31')](_0x297cda[_0x82f6('0x2c')],qs[_0x82f6('0x33')](_0x43fefc[_0x82f6('0x2e')][_0x82f6('0x33')]));_0x165493[_0x82f6('0x32')]=_0x165493[_0x82f6('0x32')]['length']?_0x165493[_0x82f6('0x32')]:_0x297cda[_0x82f6('0x2c')];if(_0x43fefc['query'][_0x82f6('0x3f')]){_0x165493['include']=[{'all':!![]}];}_0x165493=_[_0x82f6('0x3c')]({},_0x165493,_0x43fefc['options']);return db[_0x82f6('0x28')][_0x82f6('0x44')](_0x165493)[_0x82f6('0x21')](handleEntityNotFound(_0x47a0d1,null))[_0x82f6('0x21')](respondWithResult(_0x47a0d1,null))[_0x82f6('0x41')](handleError(_0x47a0d1,null));};exports[_0x82f6('0x45')]=function(_0x53f7d4,_0x3cb1f0){return db[_0x82f6('0x28')]['create'](_0x53f7d4['body'],{})[_0x82f6('0x21')](function(_0x2a6366){var _0x2c2b64=_0x53f7d4['user'][_0x82f6('0x46')]({'plain':!![]});if(!_0x2c2b64)throw new Error(_0x82f6('0x47'));if(_0x2c2b64[_0x82f6('0x48')]===_0x82f6('0x49')){var _0x4e9e13=_0x2a6366['get']({'plain':!![]});var _0x1695ea=_0x82f6('0x22');return db[_0x82f6('0x4a')]['find']({'where':{'name':_0x1695ea,'userProfileId':_0x2c2b64[_0x82f6('0x4b')]},'raw':!![]})[_0x82f6('0x21')](function(_0x4bc646){if(_0x4bc646&&_0x4bc646['autoAssociation']===0x0){return db['UserProfileResource'][_0x82f6('0x45')]({'name':_0x4e9e13['name'],'resourceId':_0x4e9e13['id'],'type':_0x4bc646[_0x82f6('0x25')],'sectionId':_0x4bc646['id']},{})['then'](function(){return _0x2a6366;});}else{return _0x2a6366;}})[_0x82f6('0x41')](function(_0x4f69de){logger[_0x82f6('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f69de);throw _0x4f69de;});}return _0x2a6366;})[_0x82f6('0x21')](respondWithResult(_0x3cb1f0,0xc9))[_0x82f6('0x41')](handleError(_0x3cb1f0,null));};exports[_0x82f6('0x20')]=function(_0x1633cf,_0xb8d7d8){if(_0x1633cf[_0x82f6('0x4c')]['id']){delete _0x1633cf['body']['id'];}return db[_0x82f6('0x28')][_0x82f6('0x44')]({'where':{'id':_0x1633cf[_0x82f6('0x43')]['id']}})['then'](handleEntityNotFound(_0xb8d7d8,null))['then'](saveUpdates(_0x1633cf[_0x82f6('0x4c')],null))[_0x82f6('0x21')](respondWithResult(_0xb8d7d8,null))[_0x82f6('0x41')](handleError(_0xb8d7d8,null));};exports[_0x82f6('0x4d')]=function(_0x49a204,_0x2c1c0e){return db[_0x82f6('0x28')][_0x82f6('0x44')]({'where':{'id':_0x49a204['params']['id']}})['then'](handleEntityNotFound(_0x2c1c0e,null))['then'](removeEntity(_0x2c1c0e,null))[_0x82f6('0x41')](handleError(_0x2c1c0e,null));};exports[_0x82f6('0x4e')]=function(_0x221cfc,_0x59176d,_0x4013f0){return db[_0x82f6('0x28')][_0x82f6('0x4f')]({'where':{'id':_0x221cfc[_0x82f6('0x43')]['id']}})['then'](handleEntityNotFound(_0x59176d,null))[_0x82f6('0x21')](function(_0x94aed4){var _0x12a5b9;var _0x33591b={},_0x4a8bdb={};_0x4a8bdb['model']=_[_0x82f6('0x2f')](db[_0x82f6('0x50')]['rawAttributes']);_0x4a8bdb[_0x82f6('0x2e')]=_[_0x82f6('0x2f')](_0x221cfc[_0x82f6('0x2e')]);_0x4a8bdb['filters']=_[_0x82f6('0x31')](_0x4a8bdb[_0x82f6('0x2c')],_0x4a8bdb[_0x82f6('0x2e')]);_0x33591b[_0x82f6('0x32')]=_[_0x82f6('0x31')](_0x4a8bdb[_0x82f6('0x2c')],qs['fields'](_0x221cfc[_0x82f6('0x2e')][_0x82f6('0x33')]));_0x33591b[_0x82f6('0x32')]=_0x33591b[_0x82f6('0x32')][_0x82f6('0x34')]?_0x33591b['attributes']:_0x4a8bdb[_0x82f6('0x2c')];if(!_0x221cfc[_0x82f6('0x2e')][_0x82f6('0x35')](_0x82f6('0x36'))){_0x33591b[_0x82f6('0x1b')]=qs[_0x82f6('0x1b')](_0x221cfc[_0x82f6('0x2e')][_0x82f6('0x1b')]);_0x33591b['offset']=qs[_0x82f6('0x19')](_0x221cfc['query'][_0x82f6('0x19')]);}_0x33591b[_0x82f6('0x37')]=qs['sort'](_0x221cfc[_0x82f6('0x2e')][_0x82f6('0x38')]);_0x33591b[_0x82f6('0x39')]=qs['filters'](_['pick'](_0x221cfc[_0x82f6('0x2e')],_0x4a8bdb[_0x82f6('0x30')]));if(_0x221cfc['query']['filter']){_0x33591b[_0x82f6('0x39')]=_[_0x82f6('0x3c')](_0x33591b[_0x82f6('0x39')],{'$or':_[_0x82f6('0x2d')](_0x33591b[_0x82f6('0x32')],function(_0x11581c){var _0xc1d784={};_0xc1d784[_0x11581c]={'$like':'%'+_0x221cfc[_0x82f6('0x2e')][_0x82f6('0x3b')]+'%'};return _0xc1d784;})});}_0x33591b[_0x82f6('0x39')]=_[_0x82f6('0x3c')](_0x33591b[_0x82f6('0x39')],{'mailboxuser':_0x94aed4['mailbox']});_0x33591b=_[_0x82f6('0x3c')]({},_0x33591b,_0x221cfc[_0x82f6('0x3e')]);return db[_0x82f6('0x50')][_0x82f6('0x51')](_0x33591b)[_0x82f6('0x21')](respondWithFilteredResult(_0x59176d,_0x33591b));})['catch'](handleError(_0x59176d,null));};
\ No newline at end of file
+var _0x04b8=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','Voicemails','error','stack','name','send','index','map','VoiceMail','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getMessages','findOne','VoiceMailMessage','nolimit','mailbox','findAndCountAll','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x114883,_0x46144c){var _0x2dca8c=function(_0x530acf){while(--_0x530acf){_0x114883['push'](_0x114883['shift']());}};_0x2dca8c(++_0x46144c);}(_0x04b8,0x159));var _0x804b=function(_0xaa8eb3,_0x43e80b){_0xaa8eb3=_0xaa8eb3-0x0;var _0x1e961e=_0x04b8[_0xaa8eb3];return _0x1e961e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x804b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x804b('0x1'));var rp=require(_0x804b('0x2'));var moment=require('moment');var BPromise=require(_0x804b('0x3'));var Mustache=require(_0x804b('0x4'));var util=require('util');var path=require(_0x804b('0x5'));var sox=require(_0x804b('0x6'));var csv=require(_0x804b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x804b('0x8'));var _=require(_0x804b('0x9'));var squel=require(_0x804b('0xa'));var crypto=require('crypto');var jsforce=require(_0x804b('0xb'));var deskjs=require(_0x804b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x804b('0xd'));var Papa=require(_0x804b('0xe'));var Redis=require(_0x804b('0xf'));var authService=require(_0x804b('0x10'));var qs=require(_0x804b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x804b('0x12'));var logger=require(_0x804b('0x13'))(_0x804b('0x14'));var utils=require(_0x804b('0x15'));var config=require(_0x804b('0x16'));var licenseUtil=require(_0x804b('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15a4eb,_0x5303cc){_0x5303cc=_0x5303cc||0xcc;return function(_0x23ee57){if(_0x23ee57){return _0x15a4eb[_0x804b('0x18')](_0x5303cc);}return _0x15a4eb[_0x804b('0x19')](_0x5303cc)[_0x804b('0x1a')]();};}function respondWithResult(_0x581fbf,_0x215825){_0x215825=_0x215825||0xc8;return function(_0x1b01a7){if(_0x1b01a7){return _0x581fbf[_0x804b('0x19')](_0x215825)[_0x804b('0x1b')](_0x1b01a7);}};}function respondWithFilteredResult(_0x4ff1be,_0x2fd593){return function(_0x8ccbe0){if(_0x8ccbe0){var _0x5e1cfe=typeof _0x2fd593[_0x804b('0x1c')]==='undefined'&&typeof _0x2fd593[_0x804b('0x1d')]===_0x804b('0x1e');var _0x13662e=_0x8ccbe0[_0x804b('0x1f')];var _0x3a05c0=_0x5e1cfe?0x0:_0x2fd593['offset'];var _0x871d6c=_0x5e1cfe?_0x8ccbe0['count']:_0x2fd593[_0x804b('0x1c')]+_0x2fd593[_0x804b('0x1d')];var _0x42cceb;if(_0x871d6c>=_0x13662e){_0x871d6c=_0x13662e;_0x42cceb=0xc8;}else{_0x42cceb=0xce;}_0x4ff1be[_0x804b('0x19')](_0x42cceb);return _0x4ff1be['set'](_0x804b('0x20'),_0x3a05c0+'-'+_0x871d6c+'/'+_0x13662e)[_0x804b('0x1b')](_0x8ccbe0);}return null;};}function patchUpdates(_0x427166){return function(_0x11eaf6){try{jsonpatch[_0x804b('0x21')](_0x11eaf6,_0x427166,!![]);}catch(_0x267878){return BPromise[_0x804b('0x22')](_0x267878);}return _0x11eaf6[_0x804b('0x23')]();};}function saveUpdates(_0xaa9521,_0x2b7271){return function(_0x1acc48){if(_0x1acc48){return _0x1acc48['update'](_0xaa9521)[_0x804b('0x24')](function(_0x5a77e0){return _0x5a77e0;});}return null;};}function removeEntity(_0x5585f8,_0x44a921){return function(_0x367024){if(_0x367024){return _0x367024[_0x804b('0x25')]()[_0x804b('0x24')](function(){var _0x9080c2=_0x367024['get']({'plain':!![]});var _0x2de812=_0x804b('0x26');return db['UserProfileResource'][_0x804b('0x25')]({'where':{'type':_0x2de812,'resourceId':_0x9080c2['id']}})[_0x804b('0x24')](function(){return _0x367024;});})[_0x804b('0x24')](function(){_0x5585f8[_0x804b('0x19')](0xcc)[_0x804b('0x1a')]();});}};}function handleEntityNotFound(_0x5cc1dd,_0x456580){return function(_0x22f822){if(!_0x22f822){_0x5cc1dd[_0x804b('0x18')](0x194);}return _0x22f822;};}function handleError(_0xe145e,_0x3d1ecc){_0x3d1ecc=_0x3d1ecc||0x1f4;return function(_0x4a6079){logger[_0x804b('0x27')](_0x4a6079[_0x804b('0x28')]);if(_0x4a6079[_0x804b('0x29')]){delete _0x4a6079['name'];}_0xe145e[_0x804b('0x19')](_0x3d1ecc)[_0x804b('0x2a')](_0x4a6079);};}exports[_0x804b('0x2b')]=function(_0x57b8da,_0x408857){var _0x471c04={},_0x5e8f85={},_0x391376={'count':0x0,'rows':[]};var _0x37dd3e=_[_0x804b('0x2c')](db[_0x804b('0x2d')][_0x804b('0x2e')],function(_0x241c96){return{'name':_0x241c96['fieldName'],'type':_0x241c96[_0x804b('0x2f')][_0x804b('0x30')]};});_0x5e8f85[_0x804b('0x31')]=_[_0x804b('0x2c')](_0x37dd3e,_0x804b('0x29'));_0x5e8f85[_0x804b('0x32')]=_[_0x804b('0x33')](_0x57b8da[_0x804b('0x32')]);_0x5e8f85[_0x804b('0x34')]=_[_0x804b('0x35')](_0x5e8f85[_0x804b('0x31')],_0x5e8f85[_0x804b('0x32')]);_0x471c04[_0x804b('0x36')]=_[_0x804b('0x35')](_0x5e8f85[_0x804b('0x31')],qs[_0x804b('0x37')](_0x57b8da[_0x804b('0x32')][_0x804b('0x37')]));_0x471c04[_0x804b('0x36')]=_0x471c04[_0x804b('0x36')][_0x804b('0x38')]?_0x471c04[_0x804b('0x36')]:_0x5e8f85[_0x804b('0x31')];if(!_0x57b8da[_0x804b('0x32')][_0x804b('0x39')]('nolimit')){_0x471c04['limit']=qs['limit'](_0x57b8da[_0x804b('0x32')][_0x804b('0x1d')]);_0x471c04[_0x804b('0x1c')]=qs['offset'](_0x57b8da['query']['offset']);}_0x471c04[_0x804b('0x3a')]=qs[_0x804b('0x3b')](_0x57b8da[_0x804b('0x32')][_0x804b('0x3b')]);_0x471c04[_0x804b('0x3c')]=qs[_0x804b('0x34')](_[_0x804b('0x3d')](_0x57b8da[_0x804b('0x32')],_0x5e8f85[_0x804b('0x34')]),_0x37dd3e);if(_0x57b8da[_0x804b('0x32')][_0x804b('0x3e')]){_0x471c04[_0x804b('0x3c')]=_[_0x804b('0x3f')](_0x471c04['where'],{'$or':_[_0x804b('0x2c')](_0x37dd3e,function(_0x4654f4){if(_0x4654f4[_0x804b('0x2f')]!==_0x804b('0x40')){var _0x62cfee={};_0x62cfee[_0x4654f4['name']]={'$like':'%'+_0x57b8da['query'][_0x804b('0x3e')]+'%'};return _0x62cfee;}})});}_0x471c04=_[_0x804b('0x3f')]({},_0x471c04,_0x57b8da[_0x804b('0x41')]);var _0x5206f9={'where':_0x471c04[_0x804b('0x3c')]};return db['VoiceMail'][_0x804b('0x1f')](_0x5206f9)[_0x804b('0x24')](function(_0x20ccc7){_0x391376[_0x804b('0x1f')]=_0x20ccc7;if(_0x57b8da[_0x804b('0x32')][_0x804b('0x42')]){_0x471c04[_0x804b('0x43')]=[{'all':!![]}];}return db['VoiceMail'][_0x804b('0x44')](_0x471c04);})[_0x804b('0x24')](function(_0x1dcec8){_0x391376[_0x804b('0x45')]=_0x1dcec8;return _0x391376;})['then'](respondWithFilteredResult(_0x408857,_0x471c04))[_0x804b('0x46')](handleError(_0x408857,null));};exports[_0x804b('0x47')]=function(_0x1df519,_0x1c3d93){var _0x320aeb={'raw':!![],'where':{'id':_0x1df519[_0x804b('0x48')]['id']}},_0xbca498={};_0xbca498[_0x804b('0x31')]=_['keys'](db[_0x804b('0x2d')]['rawAttributes']);_0xbca498['query']=_['keys'](_0x1df519[_0x804b('0x32')]);_0xbca498['filters']=_[_0x804b('0x35')](_0xbca498[_0x804b('0x31')],_0xbca498[_0x804b('0x32')]);_0x320aeb[_0x804b('0x36')]=_['intersection'](_0xbca498[_0x804b('0x31')],qs[_0x804b('0x37')](_0x1df519[_0x804b('0x32')]['fields']));_0x320aeb[_0x804b('0x36')]=_0x320aeb[_0x804b('0x36')][_0x804b('0x38')]?_0x320aeb['attributes']:_0xbca498[_0x804b('0x31')];if(_0x1df519[_0x804b('0x32')][_0x804b('0x42')]){_0x320aeb[_0x804b('0x43')]=[{'all':!![]}];}_0x320aeb=_[_0x804b('0x3f')]({},_0x320aeb,_0x1df519[_0x804b('0x41')]);return db[_0x804b('0x2d')][_0x804b('0x49')](_0x320aeb)[_0x804b('0x24')](handleEntityNotFound(_0x1c3d93,null))[_0x804b('0x24')](respondWithResult(_0x1c3d93,null))[_0x804b('0x46')](handleError(_0x1c3d93,null));};exports[_0x804b('0x4a')]=function(_0x20862f,_0x2c1796){return db['VoiceMail']['create'](_0x20862f[_0x804b('0x4b')],{})[_0x804b('0x24')](function(_0x82fc71){var _0x53124f=_0x20862f[_0x804b('0x4c')]['get']({'plain':!![]});if(!_0x53124f)throw new Error(_0x804b('0x4d'));if(_0x53124f[_0x804b('0x4e')]===_0x804b('0x4c')){var _0x3ca9ff=_0x82fc71[_0x804b('0x4f')]({'plain':!![]});var _0x111e3f='Voicemails';return db['UserProfileSection'][_0x804b('0x49')]({'where':{'name':_0x111e3f,'userProfileId':_0x53124f[_0x804b('0x50')]},'raw':!![]})['then'](function(_0x5103b7){if(_0x5103b7&&_0x5103b7[_0x804b('0x51')]===0x0){return db[_0x804b('0x52')][_0x804b('0x4a')]({'name':_0x3ca9ff['name'],'resourceId':_0x3ca9ff['id'],'type':_0x5103b7[_0x804b('0x29')],'sectionId':_0x5103b7['id']},{})[_0x804b('0x24')](function(){return _0x82fc71;});}else{return _0x82fc71;}})['catch'](function(_0x2756de){logger['error'](_0x804b('0x53'),_0x2756de);throw _0x2756de;});}return _0x82fc71;})['then'](respondWithResult(_0x2c1796,0xc9))[_0x804b('0x46')](handleError(_0x2c1796,null));};exports[_0x804b('0x54')]=function(_0x47c835,_0x2f9360){if(_0x47c835['body']['id']){delete _0x47c835[_0x804b('0x4b')]['id'];}return db[_0x804b('0x2d')][_0x804b('0x49')]({'where':{'id':_0x47c835[_0x804b('0x48')]['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x2f9360,null))[_0x804b('0x24')](saveUpdates(_0x47c835[_0x804b('0x4b')],null))[_0x804b('0x24')](respondWithResult(_0x2f9360,null))[_0x804b('0x46')](handleError(_0x2f9360,null));};exports[_0x804b('0x25')]=function(_0x5d53f9,_0x53b91d){return db[_0x804b('0x2d')]['find']({'where':{'id':_0x5d53f9['params']['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x53b91d,null))[_0x804b('0x24')](removeEntity(_0x53b91d,null))[_0x804b('0x46')](handleError(_0x53b91d,null));};exports[_0x804b('0x55')]=function(_0x5a549f,_0x4f7cc4,_0x13fa81){return db[_0x804b('0x2d')][_0x804b('0x56')]({'where':{'id':_0x5a549f[_0x804b('0x48')]['id']}})[_0x804b('0x24')](handleEntityNotFound(_0x4f7cc4,null))[_0x804b('0x24')](function(_0x24c9b0){var _0x3100aa;var _0x2c0ed4={},_0x3f0ca3={};_0x3f0ca3[_0x804b('0x31')]=_[_0x804b('0x33')](db[_0x804b('0x57')][_0x804b('0x2e')]);_0x3f0ca3[_0x804b('0x32')]=_[_0x804b('0x33')](_0x5a549f['query']);_0x3f0ca3[_0x804b('0x34')]=_[_0x804b('0x35')](_0x3f0ca3['model'],_0x3f0ca3[_0x804b('0x32')]);_0x2c0ed4[_0x804b('0x36')]=_[_0x804b('0x35')](_0x3f0ca3[_0x804b('0x31')],qs['fields'](_0x5a549f[_0x804b('0x32')][_0x804b('0x37')]));_0x2c0ed4['attributes']=_0x2c0ed4[_0x804b('0x36')][_0x804b('0x38')]?_0x2c0ed4[_0x804b('0x36')]:_0x3f0ca3['model'];if(!_0x5a549f[_0x804b('0x32')][_0x804b('0x39')](_0x804b('0x58'))){_0x2c0ed4[_0x804b('0x1d')]=qs[_0x804b('0x1d')](_0x5a549f['query'][_0x804b('0x1d')]);_0x2c0ed4[_0x804b('0x1c')]=qs[_0x804b('0x1c')](_0x5a549f[_0x804b('0x32')]['offset']);}_0x2c0ed4['order']=qs[_0x804b('0x3b')](_0x5a549f['query'][_0x804b('0x3b')]);_0x2c0ed4[_0x804b('0x3c')]=qs[_0x804b('0x34')](_[_0x804b('0x3d')](_0x5a549f[_0x804b('0x32')],_0x3f0ca3['filters']));if(_0x5a549f[_0x804b('0x32')][_0x804b('0x3e')]){_0x2c0ed4[_0x804b('0x3c')]=_['merge'](_0x2c0ed4[_0x804b('0x3c')],{'$or':_[_0x804b('0x2c')](_0x2c0ed4['attributes'],function(_0xb9deae){var _0x481bcd={};_0x481bcd[_0xb9deae]={'$like':'%'+_0x5a549f[_0x804b('0x32')][_0x804b('0x3e')]+'%'};return _0x481bcd;})});}_0x2c0ed4['where']=_[_0x804b('0x3f')](_0x2c0ed4[_0x804b('0x3c')],{'mailboxuser':_0x24c9b0[_0x804b('0x59')]});_0x2c0ed4=_['merge']({},_0x2c0ed4,_0x5a549f[_0x804b('0x41')]);return db['VoiceMailMessage'][_0x804b('0x5a')](_0x2c0ed4)[_0x804b('0x24')](respondWithFilteredResult(_0x4f7cc4,_0x2c0ed4));})[_0x804b('0x46')](handleError(_0x4f7cc4,null));};
\ No newline at end of file
index 4cecbd0..e5b82aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91db=['mailbox','context','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail'];(function(_0x2dfa13,_0x49c6d3){var _0x4ca649=function(_0x3db50c){while(--_0x3db50c){_0x2dfa13['push'](_0x2dfa13['shift']());}};_0x4ca649(++_0x49c6d3);}(_0x91db,0xe3));var _0xb91d=function(_0x11b69e,_0x559bd6){_0x11b69e=_0x11b69e-0x0;var _0x1078f0=_0x91db[_0x11b69e];return _0x1078f0;};'use strict';var _=require(_0xb91d('0x0'));var util=require(_0xb91d('0x1'));var logger=require(_0xb91d('0x2'))('api');var moment=require(_0xb91d('0x3'));var BPromise=require(_0xb91d('0x4'));var rp=require(_0xb91d('0x5'));var fs=require('fs');var path=require(_0xb91d('0x6'));var rimraf=require(_0xb91d('0x7'));var config=require(_0xb91d('0x8'));var attributes=require(_0xb91d('0x9'));module[_0xb91d('0xa')]=function(_0x166327,_0x1c1ea5){return _0x166327[_0xb91d('0xb')](_0xb91d('0xc'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xb91d('0xd'),_0xb91d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4754=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','mailbox_context','context'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4754,0x1a4));var _0x4475=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4754[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4475('0x0'));var util=require(_0x4475('0x1'));var logger=require(_0x4475('0x2'))(_0x4475('0x3'));var moment=require(_0x4475('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4475('0x5'));var rimraf=require(_0x4475('0x6'));var config=require(_0x4475('0x7'));var attributes=require(_0x4475('0x8'));module[_0x4475('0x9')]=function(_0x806104,_0x4439ae){return _0x806104[_0x4475('0xa')](_0x4475('0xb'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x4475('0xc'),'fields':['mailbox',_0x4475('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index f021cd7..5453b7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0463=['code','VoiceMail,\x20%s,\x20%s','message','catch','lodash','util','bluebird','randomstring','ioredis','rpc','client','http','request','then','info','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x13c5a9,_0x95fb6a){var _0x393ee6=function(_0x136d23){while(--_0x136d23){_0x13c5a9['push'](_0x13c5a9['shift']());}};_0x393ee6(++_0x95fb6a);}(_0x0463,0x1b9));var _0x3046=function(_0x551348,_0x1cb8a4){_0x551348=_0x551348-0x0;var _0x362e3c=_0x0463[_0x551348];return _0x362e3c;};'use strict';var _=require(_0x3046('0x0'));var util=require(_0x3046('0x1'));var moment=require('moment');var BPromise=require(_0x3046('0x2'));var rs=require(_0x3046('0x3'));var fs=require('fs');var Redis=require(_0x3046('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3046('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3046('0x6')][_0x3046('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5f29f6,_0x547b17,_0x11feeb){return new BPromise(function(_0x12f54c,_0x1cc713){return client[_0x3046('0x8')](_0x5f29f6,_0x11feeb)[_0x3046('0x9')](function(_0x4e024b){logger[_0x3046('0xa')]('VoiceMail,\x20%s,\x20%s',_0x547b17,_0x3046('0xb'));logger['debug'](_0x3046('0xc'),_0x547b17,_0x3046('0xb'),JSON[_0x3046('0xd')](_0x4e024b));if(_0x4e024b['error']){if(_0x4e024b[_0x3046('0xe')][_0x3046('0xf')]===0x1f4){logger[_0x3046('0xe')](_0x3046('0x10'),_0x547b17,_0x4e024b[_0x3046('0xe')]['message']);return _0x1cc713(_0x4e024b[_0x3046('0xe')][_0x3046('0x11')]);}logger[_0x3046('0xe')](_0x3046('0x10'),_0x547b17,_0x4e024b['error']['message']);return _0x12f54c(_0x4e024b[_0x3046('0xe')]['message']);}else{logger['info']('VoiceMail,\x20%s,\x20%s',_0x547b17,_0x3046('0xb'));_0x12f54c(_0x4e024b['result']['message']);}})[_0x3046('0x12')](function(_0x159eb8){logger[_0x3046('0xe')](_0x3046('0x10'),_0x547b17,_0x159eb8);_0x1cc713(_0x159eb8);});});}
\ No newline at end of file
+var _0xc898=['stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc898,0xeb));var _0x8c89=function(_0x527a9,_0x21f270){_0x527a9=_0x527a9-0x0;var _0x291317=_0xc898[_0x527a9];return _0x291317;};'use strict';var _=require(_0x8c89('0x0'));var util=require(_0x8c89('0x1'));var moment=require(_0x8c89('0x2'));var BPromise=require(_0x8c89('0x3'));var rs=require(_0x8c89('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8c89('0x5'));var logger=require(_0x8c89('0x6'))(_0x8c89('0x7'));var config=require(_0x8c89('0x8'));var jayson=require(_0x8c89('0x9'));var client=jayson[_0x8c89('0xa')][_0x8c89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x430a60,_0x55f07d,_0x2cbf93){return new BPromise(function(_0x4410b7,_0x46122a){return client[_0x8c89('0xc')](_0x430a60,_0x2cbf93)[_0x8c89('0xd')](function(_0x126d59){logger[_0x8c89('0xe')](_0x8c89('0xf'),_0x55f07d,_0x8c89('0x10'));logger[_0x8c89('0x11')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x55f07d,_0x8c89('0x10'),JSON[_0x8c89('0x12')](_0x126d59));if(_0x126d59[_0x8c89('0x13')]){if(_0x126d59['error']['code']===0x1f4){logger[_0x8c89('0x13')](_0x8c89('0xf'),_0x55f07d,_0x126d59[_0x8c89('0x13')][_0x8c89('0x14')]);return _0x46122a(_0x126d59['error'][_0x8c89('0x14')]);}logger[_0x8c89('0x13')]('VoiceMail,\x20%s,\x20%s',_0x55f07d,_0x126d59[_0x8c89('0x13')][_0x8c89('0x14')]);return _0x4410b7(_0x126d59[_0x8c89('0x13')][_0x8c89('0x14')]);}else{logger['info'](_0x8c89('0xf'),_0x55f07d,_0x8c89('0x10'));_0x4410b7(_0x126d59[_0x8c89('0x15')][_0x8c89('0x14')]);}})[_0x8c89('0x16')](function(_0x498ef7){logger[_0x8c89('0x13')](_0x8c89('0xf'),_0x55f07d,_0x498ef7);_0x46122a(_0x498ef7);});});}
\ No newline at end of file
index 1c067fd..7efc278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0354=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/download','post','update','delete'];(function(_0x41a6e4,_0x56e18c){var _0x4a82f1=function(_0x2d44c6){while(--_0x2d44c6){_0x41a6e4['push'](_0x41a6e4['shift']());}};_0x4a82f1(++_0x56e18c);}(_0x0354,0x1f0));var _0x4035=function(_0x5c845f,_0x3f5190){_0x5c845f=_0x5c845f-0x0;var _0x5bcdb5=_0x0354[_0x5c845f];return _0x5bcdb5;};'use strict';var multer=require(_0x4035('0x0'));var util=require(_0x4035('0x1'));var path=require(_0x4035('0x2'));var timeout=require('connect-timeout');var express=require(_0x4035('0x3'));var router=express[_0x4035('0x4')]();var fs_extra=require(_0x4035('0x5'));var auth=require(_0x4035('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4035('0x7'));var controller=require('./voiceMailMessage.controller');router['get']('/',auth[_0x4035('0x8')](),controller[_0x4035('0x9')]);router[_0x4035('0xa')](_0x4035('0xb'),auth['isAuthenticated'](),controller[_0x4035('0xc')]);router[_0x4035('0xa')](_0x4035('0xd'),auth[_0x4035('0x8')](),controller['download']);router[_0x4035('0xe')]('/',auth[_0x4035('0x8')](),controller['create']);router['put']('/:id',auth[_0x4035('0x8')](),controller[_0x4035('0xf')]);router[_0x4035('0x10')](_0x4035('0xb'),auth[_0x4035('0x8')](),controller[_0x4035('0x11')]);module[_0x4035('0x12')]=router;
\ No newline at end of file
+var _0xa947=['/:id','isAuthenticated','show','/:id/download','post','create','update','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','index'];(function(_0x3f301f,_0x45b30d){var _0xffb0cb=function(_0x18acbe){while(--_0x18acbe){_0x3f301f['push'](_0x3f301f['shift']());}};_0xffb0cb(++_0x45b30d);}(_0xa947,0xb4));var _0x7a94=function(_0x4fd413,_0x41eb7f){_0x4fd413=_0x4fd413-0x0;var _0x967f64=_0xa947[_0x4fd413];return _0x967f64;};'use strict';var multer=require('multer');var util=require(_0x7a94('0x0'));var path=require(_0x7a94('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a94('0x2'));var router=express[_0x7a94('0x3')]();var fs_extra=require(_0x7a94('0x4'));var auth=require(_0x7a94('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x7a94('0x6'));var controller=require(_0x7a94('0x7'));router[_0x7a94('0x8')]('/',auth['isAuthenticated'](),controller[_0x7a94('0x9')]);router['get'](_0x7a94('0xa'),auth[_0x7a94('0xb')](),controller[_0x7a94('0xc')]);router['get'](_0x7a94('0xd'),auth[_0x7a94('0xb')](),controller['download']);router[_0x7a94('0xe')]('/',auth[_0x7a94('0xb')](),controller[_0x7a94('0xf')]);router['put'](_0x7a94('0xa'),auth[_0x7a94('0xb')](),controller[_0x7a94('0x10')]);router['delete']('/:id',auth[_0x7a94('0xb')](),controller[_0x7a94('0x11')]);module[_0x7a94('0x12')]=router;
\ No newline at end of file
index 5baf998..960a9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ee=['long','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','INTEGER','STRING'];(function(_0x3caeb5,_0x219363){var _0x5eca7e=function(_0x4cae6b){while(--_0x4cae6b){_0x3caeb5['push'](_0x3caeb5['shift']());}};_0x5eca7e(++_0x219363);}(_0xf5ee,0x83));var _0xef5e=function(_0x387c66,_0x223bb0){_0x387c66=_0x387c66-0x0;var _0xc3cbaf=_0xf5ee[_0x387c66];return _0xc3cbaf;};'use strict';var Sequelize=require(_0xef5e('0x0'));module[_0xef5e('0x1')]={'name':{'type':Sequelize[_0xef5e('0x2')],'get':function(_0x155173){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xef5e('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xef5e('0x5')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xef5e('0x4')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0xef5e('0x6')](_0xef5e('0x7'))}};
\ No newline at end of file
+var _0xff69=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','getDataValue','STRING','BLOB','long','TIMESTAMP'];(function(_0x4669d9,_0x41938b){var _0x2a5406=function(_0x5e3b26){while(--_0x5e3b26){_0x4669d9['push'](_0x4669d9['shift']());}};_0x2a5406(++_0x41938b);}(_0xff69,0x107));var _0x9ff6=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xff69[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require(_0x9ff6('0x0'));module[_0x9ff6('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2e54fa){return this[_0x9ff6('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'context':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x9ff6('0x4')](_0x9ff6('0x5')),'defaultValue':null},'flag':{'type':Sequelize[_0x9ff6('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x9ff6('0x6'),'defaultValue':Sequelize[_0x9ff6('0x7')](_0x9ff6('0x8'))}};
\ No newline at end of file
index 6bb98ad..309ba98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9767=['model','differenceBy','query','keys','filters','intersection','attributes','fields','length','order','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','set','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','key'];(function(_0x39caaa,_0x1f37bc){var _0x9b9c7d=function(_0x2da02c){while(--_0x2da02c){_0x39caaa['push'](_0x39caaa['shift']());}};_0x9b9c7d(++_0x1f37bc);}(_0x9767,0x115));var _0x7976=function(_0x2929a6,_0x1c6c50){_0x2929a6=_0x2929a6-0x0;var _0x173b09=_0x9767[_0x2929a6];return _0x173b09;};'use strict';var emlformat=require(_0x7976('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7976('0x1'));var rp=require(_0x7976('0x2'));var moment=require(_0x7976('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7976('0x4'));var util=require(_0x7976('0x5'));var path=require(_0x7976('0x6'));var sox=require(_0x7976('0x7'));var csv=require(_0x7976('0x8'));var ejs=require(_0x7976('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7976('0xa'));var crypto=require(_0x7976('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7976('0xc'));var toCsv=require(_0x7976('0x8'));var querystring=require(_0x7976('0xd'));var Papa=require(_0x7976('0xe'));var Redis=require(_0x7976('0xf'));var authService=require(_0x7976('0x10'));var qs=require(_0x7976('0x11'));var as=require(_0x7976('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7976('0x13'))(_0x7976('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7976('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x306105,_0x56935e){_0x56935e=_0x56935e||0xcc;return function(_0x5641a5){if(_0x5641a5){return _0x306105[_0x7976('0x16')](_0x56935e);}return _0x306105['status'](_0x56935e)[_0x7976('0x17')]();};}function respondWithResult(_0x35837b,_0x343d7e){_0x343d7e=_0x343d7e||0xc8;return function(_0x3d66ed){if(_0x3d66ed){return _0x35837b[_0x7976('0x18')](_0x343d7e)[_0x7976('0x19')](_0x3d66ed);}};}function respondWithFilteredResult(_0x18c088,_0x3d710b){return function(_0x3d9dad){if(_0x3d9dad){var _0x41cc8b=typeof _0x3d710b['offset']===_0x7976('0x1a')&&typeof _0x3d710b['limit']==='undefined';var _0xb6b13a=_0x3d9dad[_0x7976('0x1b')];var _0x5d3636=_0x41cc8b?0x0:_0x3d710b[_0x7976('0x1c')];var _0x1088b3=_0x41cc8b?_0x3d9dad['count']:_0x3d710b[_0x7976('0x1c')]+_0x3d710b[_0x7976('0x1d')];var _0x4e4bdb;if(_0x1088b3>=_0xb6b13a){_0x1088b3=_0xb6b13a;_0x4e4bdb=0xc8;}else{_0x4e4bdb=0xce;}_0x18c088[_0x7976('0x18')](_0x4e4bdb);return _0x18c088['set'](_0x7976('0x1e'),_0x5d3636+'-'+_0x1088b3+'/'+_0xb6b13a)[_0x7976('0x19')](_0x3d9dad);}return null;};}function patchUpdates(_0x4fe618){return function(_0x3496af){try{jsonpatch[_0x7976('0x1f')](_0x3496af,_0x4fe618,!![]);}catch(_0x250fd4){return BPromise[_0x7976('0x20')](_0x250fd4);}return _0x3496af[_0x7976('0x21')]();};}function saveUpdates(_0xebdc3c,_0x225ff7){return function(_0x1ea632){if(_0x1ea632){return _0x1ea632[_0x7976('0x22')](_0xebdc3c)['then'](function(_0x2af54f){return _0x2af54f;});}return null;};}function removeEntity(_0xb8579c,_0x150996){return function(_0x28420a){if(_0x28420a){return _0x28420a[_0x7976('0x23')]()[_0x7976('0x24')](function(){_0xb8579c['status'](0xcc)[_0x7976('0x17')]();});}};}function handleEntityNotFound(_0x1f496f,_0x4b35ae){return function(_0x5e0608){if(!_0x5e0608){_0x1f496f['sendStatus'](0x194);}return _0x5e0608;};}function handleError(_0xd4aaef,_0x1dbc57){_0x1dbc57=_0x1dbc57||0x1f4;return function(_0x136449){logger[_0x7976('0x25')](_0x136449[_0x7976('0x26')]);if(_0x136449['name']){delete _0x136449[_0x7976('0x27')];}_0xd4aaef[_0x7976('0x18')](_0x1dbc57)[_0x7976('0x28')](_0x136449);};}exports[_0x7976('0x29')]=function(_0x312dbd,_0x3bba9b){var _0x3aaf90={},_0x559ee7={},_0x1b966d={'count':0x0,'rows':[]};var _0x5a5175=_[_0x7976('0x2a')](db[_0x7976('0x2b')][_0x7976('0x2c')],function(_0x5ceecd){return{'name':_0x5ceecd[_0x7976('0x2d')],'type':_0x5ceecd['type'][_0x7976('0x2e')]};});_0x559ee7[_0x7976('0x2f')]=_[_0x7976('0x30')](_[_0x7976('0x2a')](_0x5a5175,_0x7976('0x27')),['name']);_0x559ee7[_0x7976('0x31')]=_[_0x7976('0x32')](_0x312dbd[_0x7976('0x31')]);_0x559ee7[_0x7976('0x33')]=_[_0x7976('0x34')](_0x559ee7[_0x7976('0x2f')],_0x559ee7[_0x7976('0x31')]);_0x3aaf90[_0x7976('0x35')]=_[_0x7976('0x34')](_0x559ee7[_0x7976('0x2f')],qs[_0x7976('0x36')](_0x312dbd[_0x7976('0x31')][_0x7976('0x36')]));_0x3aaf90['attributes']=_0x3aaf90[_0x7976('0x35')][_0x7976('0x37')]?_0x3aaf90[_0x7976('0x35')]:_0x559ee7['model'];if(!_0x312dbd[_0x7976('0x31')]['hasOwnProperty']('nolimit')){_0x3aaf90[_0x7976('0x1d')]=qs[_0x7976('0x1d')](_0x312dbd[_0x7976('0x31')]['limit']);_0x3aaf90['offset']=qs[_0x7976('0x1c')](_0x312dbd[_0x7976('0x31')]['offset']);}_0x3aaf90[_0x7976('0x38')]=qs['sort'](_0x312dbd[_0x7976('0x31')]['sort']);_0x3aaf90[_0x7976('0x39')]=qs[_0x7976('0x33')](_[_0x7976('0x3a')](_0x312dbd['query'],_0x559ee7[_0x7976('0x33')]),_0x5a5175);if(_0x312dbd[_0x7976('0x31')][_0x7976('0x3b')]){_0x3aaf90[_0x7976('0x39')]=_[_0x7976('0x3c')](_0x3aaf90[_0x7976('0x39')],{'$or':_[_0x7976('0x2a')](_0x5a5175,function(_0x14779a){if(_0x14779a[_0x7976('0x3d')]!=='VIRTUAL'){var _0x297007={};_0x297007[_0x14779a[_0x7976('0x27')]]={'$like':'%'+_0x312dbd[_0x7976('0x31')][_0x7976('0x3b')]+'%'};return _0x297007;}})});}_0x3aaf90=_[_0x7976('0x3c')]({},_0x3aaf90,_0x312dbd[_0x7976('0x3e')]);var _0x2295a0={'where':_0x3aaf90[_0x7976('0x39')]};return db['VoiceMailMessage'][_0x7976('0x1b')](_0x2295a0)[_0x7976('0x24')](function(_0x32f819){_0x1b966d[_0x7976('0x1b')]=_0x32f819;if(_0x312dbd[_0x7976('0x31')][_0x7976('0x3f')]){_0x3aaf90[_0x7976('0x40')]=[{'all':!![]}];}return db[_0x7976('0x2b')][_0x7976('0x41')](_0x3aaf90);})[_0x7976('0x24')](function(_0x142c05){_0x1b966d[_0x7976('0x42')]=_0x142c05;return _0x1b966d;})[_0x7976('0x24')](respondWithFilteredResult(_0x3bba9b,_0x3aaf90))[_0x7976('0x43')](handleError(_0x3bba9b,null));};exports[_0x7976('0x44')]=function(_0x50e831,_0x5b87b4){var _0x38af13={'raw':!![],'where':{'id':_0x50e831['params']['id']}},_0x1c2a16={};_0x1c2a16[_0x7976('0x2f')]=_[_0x7976('0x32')](db[_0x7976('0x2b')][_0x7976('0x2c')]);_0x1c2a16['query']=_[_0x7976('0x32')](_0x50e831['query']);_0x1c2a16[_0x7976('0x33')]=_[_0x7976('0x34')](_0x1c2a16[_0x7976('0x2f')],_0x1c2a16[_0x7976('0x31')]);_0x38af13[_0x7976('0x35')]=_[_0x7976('0x34')](_0x1c2a16[_0x7976('0x2f')],qs['fields'](_0x50e831['query'][_0x7976('0x36')]));_0x38af13[_0x7976('0x35')]=_0x38af13[_0x7976('0x35')]['length']?_0x38af13[_0x7976('0x35')]:_0x1c2a16[_0x7976('0x2f')];if(_0x50e831['query'][_0x7976('0x3f')]){_0x38af13[_0x7976('0x40')]=[{'all':!![]}];}_0x38af13=_[_0x7976('0x3c')]({},_0x38af13,_0x50e831[_0x7976('0x3e')]);return db['VoiceMailMessage']['find'](_0x38af13)[_0x7976('0x24')](handleEntityNotFound(_0x5b87b4,null))[_0x7976('0x24')](respondWithResult(_0x5b87b4,null))['catch'](handleError(_0x5b87b4,null));};exports[_0x7976('0x45')]=function(_0x1f7cf0,_0x2c7c49){return db[_0x7976('0x2b')][_0x7976('0x45')](_0x1f7cf0[_0x7976('0x46')],{})['then'](respondWithResult(_0x2c7c49,0xc9))[_0x7976('0x43')](handleError(_0x2c7c49,null));};exports[_0x7976('0x22')]=function(_0x12522b,_0x1e4eb2){if(_0x12522b[_0x7976('0x46')]['id']){delete _0x12522b[_0x7976('0x46')]['id'];}return db['VoiceMailMessage'][_0x7976('0x47')]({'where':{'id':_0x12522b['params']['id']}})[_0x7976('0x24')](handleEntityNotFound(_0x1e4eb2,null))[_0x7976('0x24')](saveUpdates(_0x12522b['body'],null))[_0x7976('0x24')](respondWithResult(_0x1e4eb2,null))[_0x7976('0x43')](handleError(_0x1e4eb2,null));};exports['destroy']=function(_0x38c6c3,_0x41e0b0){return db[_0x7976('0x2b')][_0x7976('0x47')]({'where':{'id':_0x38c6c3['params']['id']}})[_0x7976('0x24')](handleEntityNotFound(_0x41e0b0,null))[_0x7976('0x24')](removeEntity(_0x41e0b0,null))[_0x7976('0x43')](handleError(_0x41e0b0,null));};exports['download']=function(_0x144d02,_0x119b33,_0x14c2ba){return db[_0x7976('0x2b')][_0x7976('0x47')]({'where':{'id':_0x144d02[_0x7976('0x48')]['id']},'attributes':['id',_0x7976('0x49'),_0x7976('0x4a')]})[_0x7976('0x24')](handleEntityNotFound(_0x119b33,null))['then'](function(_0x484b69){if(_0x484b69){if(!_0x484b69[_0x7976('0x49')]){throw new db[(_0x7976('0x4b'))]['ValidationError'](_0x7976('0x4c'));}var _0x2c98f2={'Content-Type':_0x7976('0x4d'),'Content-Disposition':_0x7976('0x4e')};if(_0x484b69[_0x7976('0x4a')]){_0x2c98f2[_0x7976('0x4f')]='attachment;\x20filename=\x22'+_0x484b69['msg_id']+'.wav\x22';}_0x119b33[_0x7976('0x50')](_0x2c98f2);return _0x119b33[_0x7976('0x28')](new Buffer(_0x484b69[_0x7976('0x49')]));}})['catch'](handleError(_0x119b33,null));};
\ No newline at end of file
+var _0xded4=['../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','then','destroy','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','model','name','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','length','catch','create','body','find','download','recording','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x41c842,_0x3865f6){var _0x15ee6b=function(_0x2505f5){while(--_0x2505f5){_0x41c842['push'](_0x41c842['shift']());}};_0x15ee6b(++_0x3865f6);}(_0xded4,0x1c8));var _0x4ded=function(_0x56cf93,_0x3c55d5){_0x56cf93=_0x56cf93-0x0;var _0x22aa5b=_0xded4[_0x56cf93];return _0x22aa5b;};'use strict';var emlformat=require(_0x4ded('0x0'));var rimraf=require(_0x4ded('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4ded('0x2'));var moment=require(_0x4ded('0x3'));var BPromise=require(_0x4ded('0x4'));var Mustache=require(_0x4ded('0x5'));var util=require(_0x4ded('0x6'));var path=require('path');var sox=require(_0x4ded('0x7'));var csv=require(_0x4ded('0x8'));var ejs=require(_0x4ded('0x9'));var fs=require('fs');var fs_extra=require(_0x4ded('0xa'));var _=require(_0x4ded('0xb'));var squel=require(_0x4ded('0xc'));var crypto=require(_0x4ded('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4ded('0xe'));var toCsv=require(_0x4ded('0x8'));var querystring=require('querystring');var Papa=require(_0x4ded('0xf'));var Redis=require('ioredis');var authService=require(_0x4ded('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4ded('0x11'));var hardwareService=require(_0x4ded('0x12'));var logger=require(_0x4ded('0x13'))(_0x4ded('0x14'));var utils=require(_0x4ded('0x15'));var config=require(_0x4ded('0x16'));var licenseUtil=require(_0x4ded('0x17'));var db=require(_0x4ded('0x18'))['db'];function respondWithStatusCode(_0x4b09d9,_0x2b6266){_0x2b6266=_0x2b6266||0xcc;return function(_0x3980a4){if(_0x3980a4){return _0x4b09d9[_0x4ded('0x19')](_0x2b6266);}return _0x4b09d9[_0x4ded('0x1a')](_0x2b6266)[_0x4ded('0x1b')]();};}function respondWithResult(_0xa94873,_0x34b347){_0x34b347=_0x34b347||0xc8;return function(_0x14bc07){if(_0x14bc07){return _0xa94873[_0x4ded('0x1a')](_0x34b347)[_0x4ded('0x1c')](_0x14bc07);}};}function respondWithFilteredResult(_0x3b6fef,_0x468c27){return function(_0x5c2ce8){if(_0x5c2ce8){var _0x2e2392=typeof _0x468c27['offset']===_0x4ded('0x1d')&&typeof _0x468c27[_0x4ded('0x1e')]==='undefined';var _0x1c2224=_0x5c2ce8[_0x4ded('0x1f')];var _0x1be0f9=_0x2e2392?0x0:_0x468c27[_0x4ded('0x20')];var _0xd1ecd9=_0x2e2392?_0x5c2ce8[_0x4ded('0x1f')]:_0x468c27['offset']+_0x468c27[_0x4ded('0x1e')];var _0x332435;if(_0xd1ecd9>=_0x1c2224){_0xd1ecd9=_0x1c2224;_0x332435=0xc8;}else{_0x332435=0xce;}_0x3b6fef[_0x4ded('0x1a')](_0x332435);return _0x3b6fef[_0x4ded('0x21')](_0x4ded('0x22'),_0x1be0f9+'-'+_0xd1ecd9+'/'+_0x1c2224)[_0x4ded('0x1c')](_0x5c2ce8);}return null;};}function patchUpdates(_0xa2216d){return function(_0x58a8ee){try{jsonpatch['apply'](_0x58a8ee,_0xa2216d,!![]);}catch(_0x49b247){return BPromise['reject'](_0x49b247);}return _0x58a8ee['save']();};}function saveUpdates(_0x507988,_0x574efb){return function(_0x580435){if(_0x580435){return _0x580435['update'](_0x507988)[_0x4ded('0x23')](function(_0x18dab4){return _0x18dab4;});}return null;};}function removeEntity(_0x12be9b,_0x3afe6e){return function(_0x3900cb){if(_0x3900cb){return _0x3900cb[_0x4ded('0x24')]()['then'](function(){_0x12be9b['status'](0xcc)[_0x4ded('0x1b')]();});}};}function handleEntityNotFound(_0x2fa087,_0x4044e6){return function(_0x4026fc){if(!_0x4026fc){_0x2fa087[_0x4ded('0x19')](0x194);}return _0x4026fc;};}function handleError(_0x32fd76,_0x4d9c56){_0x4d9c56=_0x4d9c56||0x1f4;return function(_0x3d40dd){logger['error'](_0x3d40dd['stack']);if(_0x3d40dd['name']){delete _0x3d40dd['name'];}_0x32fd76[_0x4ded('0x1a')](_0x4d9c56)[_0x4ded('0x25')](_0x3d40dd);};}exports[_0x4ded('0x26')]=function(_0x58a827,_0x418048){var _0x392642={},_0x1514bf={},_0x25a742={'count':0x0,'rows':[]};var _0x3595d2=_[_0x4ded('0x27')](db[_0x4ded('0x28')][_0x4ded('0x29')],function(_0x295797){return{'name':_0x295797[_0x4ded('0x2a')],'type':_0x295797[_0x4ded('0x2b')]['key']};});_0x1514bf[_0x4ded('0x2c')]=_['differenceBy'](_[_0x4ded('0x27')](_0x3595d2,_0x4ded('0x2d')),[_0x4ded('0x2d')]);_0x1514bf['query']=_[_0x4ded('0x2e')](_0x58a827[_0x4ded('0x2f')]);_0x1514bf[_0x4ded('0x30')]=_[_0x4ded('0x31')](_0x1514bf[_0x4ded('0x2c')],_0x1514bf[_0x4ded('0x2f')]);_0x392642[_0x4ded('0x32')]=_[_0x4ded('0x31')](_0x1514bf[_0x4ded('0x2c')],qs[_0x4ded('0x33')](_0x58a827[_0x4ded('0x2f')][_0x4ded('0x33')]));_0x392642[_0x4ded('0x32')]=_0x392642[_0x4ded('0x32')]['length']?_0x392642[_0x4ded('0x32')]:_0x1514bf[_0x4ded('0x2c')];if(!_0x58a827[_0x4ded('0x2f')][_0x4ded('0x34')](_0x4ded('0x35'))){_0x392642[_0x4ded('0x1e')]=qs[_0x4ded('0x1e')](_0x58a827[_0x4ded('0x2f')][_0x4ded('0x1e')]);_0x392642[_0x4ded('0x20')]=qs[_0x4ded('0x20')](_0x58a827[_0x4ded('0x2f')][_0x4ded('0x20')]);}_0x392642[_0x4ded('0x36')]=qs[_0x4ded('0x37')](_0x58a827[_0x4ded('0x2f')][_0x4ded('0x37')]);_0x392642['where']=qs[_0x4ded('0x30')](_['pick'](_0x58a827[_0x4ded('0x2f')],_0x1514bf[_0x4ded('0x30')]),_0x3595d2);if(_0x58a827['query'][_0x4ded('0x38')]){_0x392642[_0x4ded('0x39')]=_[_0x4ded('0x3a')](_0x392642[_0x4ded('0x39')],{'$or':_[_0x4ded('0x27')](_0x3595d2,function(_0x185c07){if(_0x185c07[_0x4ded('0x2b')]!==_0x4ded('0x3b')){var _0x51826c={};_0x51826c[_0x185c07[_0x4ded('0x2d')]]={'$like':'%'+_0x58a827[_0x4ded('0x2f')][_0x4ded('0x38')]+'%'};return _0x51826c;}})});}_0x392642=_[_0x4ded('0x3a')]({},_0x392642,_0x58a827[_0x4ded('0x3c')]);var _0x1cef8b={'where':_0x392642[_0x4ded('0x39')]};return db[_0x4ded('0x28')][_0x4ded('0x1f')](_0x1cef8b)[_0x4ded('0x23')](function(_0x310423){_0x25a742['count']=_0x310423;if(_0x58a827[_0x4ded('0x2f')][_0x4ded('0x3d')]){_0x392642[_0x4ded('0x3e')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x4ded('0x3f')](_0x392642);})[_0x4ded('0x23')](function(_0x4ead33){_0x25a742[_0x4ded('0x40')]=_0x4ead33;return _0x25a742;})[_0x4ded('0x23')](respondWithFilteredResult(_0x418048,_0x392642))['catch'](handleError(_0x418048,null));};exports['show']=function(_0x58257c,_0x29eabb){var _0x33bf6c={'raw':!![],'where':{'id':_0x58257c[_0x4ded('0x41')]['id']}},_0x535118={};_0x535118['model']=_[_0x4ded('0x2e')](db[_0x4ded('0x28')][_0x4ded('0x29')]);_0x535118[_0x4ded('0x2f')]=_[_0x4ded('0x2e')](_0x58257c[_0x4ded('0x2f')]);_0x535118[_0x4ded('0x30')]=_[_0x4ded('0x31')](_0x535118[_0x4ded('0x2c')],_0x535118['query']);_0x33bf6c[_0x4ded('0x32')]=_[_0x4ded('0x31')](_0x535118['model'],qs[_0x4ded('0x33')](_0x58257c['query'][_0x4ded('0x33')]));_0x33bf6c[_0x4ded('0x32')]=_0x33bf6c[_0x4ded('0x32')][_0x4ded('0x42')]?_0x33bf6c[_0x4ded('0x32')]:_0x535118[_0x4ded('0x2c')];if(_0x58257c[_0x4ded('0x2f')][_0x4ded('0x3d')]){_0x33bf6c[_0x4ded('0x3e')]=[{'all':!![]}];}_0x33bf6c=_[_0x4ded('0x3a')]({},_0x33bf6c,_0x58257c[_0x4ded('0x3c')]);return db[_0x4ded('0x28')]['find'](_0x33bf6c)['then'](handleEntityNotFound(_0x29eabb,null))['then'](respondWithResult(_0x29eabb,null))[_0x4ded('0x43')](handleError(_0x29eabb,null));};exports[_0x4ded('0x44')]=function(_0x444237,_0x42fcc9){return db[_0x4ded('0x28')][_0x4ded('0x44')](_0x444237[_0x4ded('0x45')],{})[_0x4ded('0x23')](respondWithResult(_0x42fcc9,0xc9))[_0x4ded('0x43')](handleError(_0x42fcc9,null));};exports['update']=function(_0x2fc767,_0x2a9c84){if(_0x2fc767['body']['id']){delete _0x2fc767['body']['id'];}return db[_0x4ded('0x28')]['find']({'where':{'id':_0x2fc767['params']['id']}})[_0x4ded('0x23')](handleEntityNotFound(_0x2a9c84,null))[_0x4ded('0x23')](saveUpdates(_0x2fc767['body'],null))['then'](respondWithResult(_0x2a9c84,null))[_0x4ded('0x43')](handleError(_0x2a9c84,null));};exports[_0x4ded('0x24')]=function(_0x2280e2,_0x3bd790){return db[_0x4ded('0x28')][_0x4ded('0x46')]({'where':{'id':_0x2280e2[_0x4ded('0x41')]['id']}})['then'](handleEntityNotFound(_0x3bd790,null))[_0x4ded('0x23')](removeEntity(_0x3bd790,null))[_0x4ded('0x43')](handleError(_0x3bd790,null));};exports[_0x4ded('0x47')]=function(_0x136ee7,_0x50e938,_0x282d7c){return db[_0x4ded('0x28')][_0x4ded('0x46')]({'where':{'id':_0x136ee7[_0x4ded('0x41')]['id']},'attributes':['id',_0x4ded('0x48'),'msg_id']})[_0x4ded('0x23')](handleEntityNotFound(_0x50e938,null))['then'](function(_0x225088){if(_0x225088){if(!_0x225088[_0x4ded('0x48')]){throw new db[(_0x4ded('0x49'))]['ValidationError'](_0x4ded('0x4a'));}var _0x177ca8={'Content-Type':_0x4ded('0x4b'),'Content-Disposition':'attachment'};if(_0x225088[_0x4ded('0x4c')]){_0x177ca8[_0x4ded('0x4d')]=_0x4ded('0x4e')+_0x225088[_0x4ded('0x4c')]+_0x4ded('0x4f');}_0x50e938[_0x4ded('0x21')](_0x177ca8);return _0x50e938['send'](new Buffer(_0x225088[_0x4ded('0x48')]));}})[_0x4ded('0x43')](handleError(_0x50e938,null));};
\ No newline at end of file
index 2a7c921..df94342 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe8c=['api','moment','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','lodash','../../config/logger'];(function(_0x39651a,_0x3a92a3){var _0x3cea19=function(_0x1d9df2){while(--_0x1d9df2){_0x39651a['push'](_0x39651a['shift']());}};_0x3cea19(++_0x3a92a3);}(_0xfe8c,0x11c));var _0xcfe8=function(_0x19dd7a,_0x51de21){_0x19dd7a=_0x19dd7a-0x0;var _0x3feb6a=_0xfe8c[_0x19dd7a];return _0x3feb6a;};'use strict';var _=require(_0xcfe8('0x0'));var util=require('util');var logger=require(_0xcfe8('0x1'))(_0xcfe8('0x2'));var moment=require(_0xcfe8('0x3'));var BPromise=require('bluebird');var rp=require(_0xcfe8('0x4'));var fs=require('fs');var path=require(_0xcfe8('0x5'));var rimraf=require(_0xcfe8('0x6'));var config=require(_0xcfe8('0x7'));var attributes=require(_0xcfe8('0x8'));module[_0xcfe8('0x9')]=function(_0x2a62ba,_0x2420da){return _0x2a62ba[_0xcfe8('0xa')](_0xcfe8('0xb'),attributes,{'tableName':_0xcfe8('0xc'),'paranoid':![],'indexes':[{'name':'dir','fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
+var _0x4c42=['exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes'];(function(_0x27cbbd,_0x308544){var _0x529b59=function(_0x54200f){while(--_0x54200f){_0x27cbbd['push'](_0x27cbbd['shift']());}};_0x529b59(++_0x308544);}(_0x4c42,0x10f));var _0x24c4=function(_0x21462d,_0x2ef078){_0x21462d=_0x21462d-0x0;var _0x552f7d=_0x4c42[_0x21462d];return _0x552f7d;};'use strict';var _=require(_0x24c4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x24c4('0x1'));var moment=require(_0x24c4('0x2'));var BPromise=require(_0x24c4('0x3'));var rp=require(_0x24c4('0x4'));var fs=require('fs');var path=require(_0x24c4('0x5'));var rimraf=require(_0x24c4('0x6'));var config=require(_0x24c4('0x7'));var attributes=require(_0x24c4('0x8'));module[_0x24c4('0x9')]=function(_0x435fe0,_0x15e472){return _0x435fe0[_0x24c4('0xa')](_0x24c4('0xb'),attributes,{'tableName':_0x24c4('0xc'),'paranoid':![],'indexes':[{'name':_0x24c4('0xd'),'fields':[_0x24c4('0xd')]}],'timestamps':![]});};
\ No newline at end of file
index 694022a..d9c8f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c73=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../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','result','catch','util','moment'];(function(_0x3068ad,_0x203905){var _0x49ccd1=function(_0x5b8d48){while(--_0x5b8d48){_0x3068ad['push'](_0x3068ad['shift']());}};_0x49ccd1(++_0x203905);}(_0x3c73,0x1a7));var _0x33c7=function(_0x12ccf1,_0x26cb2a){_0x12ccf1=_0x12ccf1-0x0;var _0x59f8b3=_0x3c73[_0x12ccf1];return _0x59f8b3;};'use strict';var _=require('lodash');var util=require(_0x33c7('0x0'));var moment=require(_0x33c7('0x1'));var BPromise=require(_0x33c7('0x2'));var rs=require(_0x33c7('0x3'));var fs=require('fs');var Redis=require(_0x33c7('0x4'));var db=require(_0x33c7('0x5'))['db'];var utils=require(_0x33c7('0x6'));var logger=require(_0x33c7('0x7'))(_0x33c7('0x8'));var config=require(_0x33c7('0x9'));var jayson=require(_0x33c7('0xa'));var client=jayson[_0x33c7('0xb')][_0x33c7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4e3dba,_0x11c430,_0xe8e931){return new BPromise(function(_0x447aba,_0x394e4c){return client[_0x33c7('0xd')](_0x4e3dba,_0xe8e931)[_0x33c7('0xe')](function(_0x50229d){logger['info'](_0x33c7('0xf'),_0x11c430,_0x33c7('0x10'));logger[_0x33c7('0x11')](_0x33c7('0x12'),_0x11c430,'request\x20sent',JSON[_0x33c7('0x13')](_0x50229d));if(_0x50229d[_0x33c7('0x14')]){if(_0x50229d[_0x33c7('0x14')][_0x33c7('0x15')]===0x1f4){logger['error'](_0x33c7('0xf'),_0x11c430,_0x50229d['error'][_0x33c7('0x16')]);return _0x394e4c(_0x50229d[_0x33c7('0x14')][_0x33c7('0x16')]);}logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x11c430,_0x50229d[_0x33c7('0x14')]['message']);return _0x447aba(_0x50229d[_0x33c7('0x14')][_0x33c7('0x16')]);}else{logger['info'](_0x33c7('0xf'),_0x11c430,_0x33c7('0x10'));_0x447aba(_0x50229d[_0x33c7('0x17')]['message']);}})[_0x33c7('0x18')](function(_0x535d6f){logger['error'](_0x33c7('0xf'),_0x11c430,_0x535d6f);_0x394e4c(_0x535d6f);});});}
\ No newline at end of file
+var _0xe3b6=['client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x526df5,_0x2d707c){var _0x3eb67b=function(_0x43b1c7){while(--_0x43b1c7){_0x526df5['push'](_0x526df5['shift']());}};_0x3eb67b(++_0x2d707c);}(_0xe3b6,0x14f));var _0x6e3b=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xe3b6[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x6e3b('0x0'));var util=require(_0x6e3b('0x1'));var moment=require(_0x6e3b('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e3b('0x3'));var fs=require('fs');var Redis=require(_0x6e3b('0x4'));var db=require(_0x6e3b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e3b('0x6'))(_0x6e3b('0x7'));var config=require(_0x6e3b('0x8'));var jayson=require(_0x6e3b('0x9'));var client=jayson[_0x6e3b('0xa')][_0x6e3b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bb955,_0x54ac32,_0x1f68f9){return new BPromise(function(_0x52605d,_0x215d93){return client[_0x6e3b('0xc')](_0x2bb955,_0x1f68f9)[_0x6e3b('0xd')](function(_0xc83988){logger[_0x6e3b('0xe')](_0x6e3b('0xf'),_0x54ac32,_0x6e3b('0x10'));logger['debug'](_0x6e3b('0x11'),_0x54ac32,_0x6e3b('0x10'),JSON[_0x6e3b('0x12')](_0xc83988));if(_0xc83988[_0x6e3b('0x13')]){if(_0xc83988['error'][_0x6e3b('0x14')]===0x1f4){logger[_0x6e3b('0x13')](_0x6e3b('0xf'),_0x54ac32,_0xc83988[_0x6e3b('0x13')][_0x6e3b('0x15')]);return _0x215d93(_0xc83988[_0x6e3b('0x13')][_0x6e3b('0x15')]);}logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x54ac32,_0xc83988[_0x6e3b('0x13')]['message']);return _0x52605d(_0xc83988[_0x6e3b('0x13')][_0x6e3b('0x15')]);}else{logger[_0x6e3b('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x54ac32,_0x6e3b('0x10'));_0x52605d(_0xc83988['result'][_0x6e3b('0x15')]);}})[_0x6e3b('0x16')](function(_0x58ec16){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x54ac32,_0x58ec16);_0x215d93(_0x58ec16);});});}
\ No newline at end of file
index 29b7ad5..9786bdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x366f=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','update','/:id/sounds/:id2','removeSound','exports','util','path','connect-timeout'];(function(_0x2411ee,_0x5f01e3){var _0x6dd69f=function(_0x57473a){while(--_0x57473a){_0x2411ee['push'](_0x2411ee['shift']());}};_0x6dd69f(++_0x5f01e3);}(_0x366f,0xe3));var _0xf366=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x366f[_0x432682];return _0x463d05;};'use strict';var multer=require('multer');var util=require(_0xf366('0x0'));var path=require(_0xf366('0x1'));var timeout=require(_0xf366('0x2'));var express=require(_0xf366('0x3'));var router=express[_0xf366('0x4')]();var fs_extra=require(_0xf366('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf366('0x6'));var config=require(_0xf366('0x7'));var controller=require('./voiceMusicOnHold.controller');router[_0xf366('0x8')]('/',auth[_0xf366('0x9')](),controller[_0xf366('0xa')]);router['get'](_0xf366('0xb'),auth[_0xf366('0x9')](),controller[_0xf366('0xc')]);router[_0xf366('0x8')](_0xf366('0xd'),auth[_0xf366('0x9')](),controller[_0xf366('0xe')]);router[_0xf366('0xf')]('/',auth[_0xf366('0x9')](),controller[_0xf366('0x10')]);router[_0xf366('0xf')](_0xf366('0xd'),auth[_0xf366('0x9')](),controller[_0xf366('0x11')]);router[_0xf366('0x12')](_0xf366('0xb'),auth['isAuthenticated'](),controller[_0xf366('0x13')]);router['delete'](_0xf366('0xb'),auth[_0xf366('0x9')](),controller['destroy']);router['delete'](_0xf366('0x14'),auth[_0xf366('0x9')](),controller[_0xf366('0x15')]);module[_0xf366('0x16')]=router;
\ No newline at end of file
+var _0x4b12=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','index','/:id','isAuthenticated','/:id/sounds','getSounds','create','post','put','delete','destroy','removeSound','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4b12,0x1e3));var _0x24b1=function(_0x393c0a,_0x419fb8){_0x393c0a=_0x393c0a-0x0;var _0x3dffed=_0x4b12[_0x393c0a];return _0x3dffed;};'use strict';var multer=require('multer');var util=require(_0x24b1('0x0'));var path=require(_0x24b1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x24b1('0x2')]();var fs_extra=require(_0x24b1('0x3'));var auth=require(_0x24b1('0x4'));var interaction=require(_0x24b1('0x5'));var config=require(_0x24b1('0x6'));var controller=require(_0x24b1('0x7'));router[_0x24b1('0x8')]('/',auth['isAuthenticated'](),controller[_0x24b1('0x9')]);router['get'](_0x24b1('0xa'),auth[_0x24b1('0xb')](),controller['show']);router[_0x24b1('0x8')](_0x24b1('0xc'),auth[_0x24b1('0xb')](),controller[_0x24b1('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x24b1('0xe')]);router[_0x24b1('0xf')](_0x24b1('0xc'),auth[_0x24b1('0xb')](),controller['addSound']);router[_0x24b1('0x10')](_0x24b1('0xa'),auth[_0x24b1('0xb')](),controller['update']);router[_0x24b1('0x11')]('/:id',auth[_0x24b1('0xb')](),controller[_0x24b1('0x12')]);router[_0x24b1('0x11')]('/:id/sounds/:id2',auth[_0x24b1('0xb')](),controller[_0x24b1('0x13')]);module[_0x24b1('0x14')]=router;
\ No newline at end of file
index 7bccc38..0e12b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66a6=['STRING','ENUM','custom','quietmp3','mp3','files','alpha','sequelize','exports'];(function(_0x48a24c,_0x2bcf41){var _0x357c3b=function(_0x386369){while(--_0x386369){_0x48a24c['push'](_0x48a24c['shift']());}};_0x357c3b(++_0x2bcf41);}(_0x66a6,0xf1));var _0x666a=function(_0x4bf4a1,_0x293df6){_0x4bf4a1=_0x4bf4a1-0x0;var _0x1ed03f=_0x66a6[_0x4bf4a1];return _0x1ed03f;};'use strict';var Sequelize=require(_0x666a('0x0'));module[_0x666a('0x1')]={'name':{'type':Sequelize[_0x666a('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x666a('0x3')](_0x666a('0x4'),'files','mp3nb','quietmp3nb',_0x666a('0x5'),_0x666a('0x6')),'allowNull':!![],'defaultValue':_0x666a('0x7')},'directory':{'type':Sequelize[_0x666a('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x666a('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x666a('0x8')},'format':{'type':Sequelize[_0x666a('0x2')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9a62=['TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','custom','files','quietmp3nb','quietmp3','mp3'];(function(_0x275dd9,_0x3465b7){var _0xb2c74b=function(_0x20cb00){while(--_0x20cb00){_0x275dd9['push'](_0x275dd9['shift']());}};_0xb2c74b(++_0x3465b7);}(_0x9a62,0x1be));var _0x29a6=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9a62[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x29a6('0x0'));module[_0x29a6('0x1')]={'name':{'type':Sequelize[_0x29a6('0x2')],'allowNull':![],'unique':_0x29a6('0x3')},'mode':{'type':Sequelize[_0x29a6('0x4')](_0x29a6('0x5'),_0x29a6('0x6'),'mp3nb',_0x29a6('0x7'),_0x29a6('0x8'),_0x29a6('0x9')),'allowNull':!![],'defaultValue':_0x29a6('0x6')},'directory':{'type':Sequelize[_0x29a6('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x29a6('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x29a6('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x29a6('0x2')],'allowNull':!![]},'stamp':{'type':_0x29a6('0xa')},'defaultEntry':{'type':Sequelize[_0x29a6('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index a288652..0841186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1d8=['autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','join','rmdirSync','Sequelize','ValidationError','message','Sound','findOne','save_name','converted_format','createdAt','root','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','unlinkSync','filter','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','json','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','get','MusicOnHolds','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','options','find','body','params','sequelize','transaction','mode','files','server/files/moh','mkdirSync','directory','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb1d8,0xfc));var _0x8b1d=function(_0x553b4a,_0x4c609c){_0x553b4a=_0x553b4a-0x0;var _0x43564f=_0xb1d8[_0x553b4a];return _0x43564f;};'use strict';var emlformat=require(_0x8b1d('0x0'));var rimraf=require(_0x8b1d('0x1'));var zipdir=require(_0x8b1d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8b1d('0x3'));var moment=require(_0x8b1d('0x4'));var BPromise=require(_0x8b1d('0x5'));var Mustache=require('mustache');var util=require(_0x8b1d('0x6'));var path=require(_0x8b1d('0x7'));var sox=require(_0x8b1d('0x8'));var csv=require(_0x8b1d('0x9'));var ejs=require(_0x8b1d('0xa'));var fs=require('fs');var fs_extra=require(_0x8b1d('0xb'));var _=require(_0x8b1d('0xc'));var squel=require(_0x8b1d('0xd'));var crypto=require(_0x8b1d('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8b1d('0x9'));var querystring=require('querystring');var Papa=require(_0x8b1d('0xf'));var Redis=require('ioredis');var authService=require(_0x8b1d('0x10'));var qs=require(_0x8b1d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8b1d('0x12'))('api');var utils=require(_0x8b1d('0x13'));var config=require(_0x8b1d('0x14'));var licenseUtil=require(_0x8b1d('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b5774,_0x39eb54){_0x39eb54=_0x39eb54||0xcc;return function(_0x2584e4){if(_0x2584e4){return _0x3b5774['sendStatus'](_0x39eb54);}return _0x3b5774[_0x8b1d('0x16')](_0x39eb54)['end']();};}function respondWithResult(_0x594a9e,_0x19911f){_0x19911f=_0x19911f||0xc8;return function(_0x5912df){if(_0x5912df){return _0x594a9e[_0x8b1d('0x16')](_0x19911f)[_0x8b1d('0x17')](_0x5912df);}};}function respondWithFilteredResult(_0x33387a,_0x53e7f9){return function(_0x5bc91f){if(_0x5bc91f){var _0x239f5c=typeof _0x53e7f9['offset']===_0x8b1d('0x18')&&typeof _0x53e7f9[_0x8b1d('0x19')]===_0x8b1d('0x18');var _0x6e4e81=_0x5bc91f[_0x8b1d('0x1a')];var _0x4d42c6=_0x239f5c?0x0:_0x53e7f9[_0x8b1d('0x1b')];var _0x29ff55=_0x239f5c?_0x5bc91f[_0x8b1d('0x1a')]:_0x53e7f9['offset']+_0x53e7f9['limit'];var _0x862bc4;if(_0x29ff55>=_0x6e4e81){_0x29ff55=_0x6e4e81;_0x862bc4=0xc8;}else{_0x862bc4=0xce;}_0x33387a[_0x8b1d('0x16')](_0x862bc4);return _0x33387a['set'](_0x8b1d('0x1c'),_0x4d42c6+'-'+_0x29ff55+'/'+_0x6e4e81)[_0x8b1d('0x17')](_0x5bc91f);}return null;};}function patchUpdates(_0x4c0ad5){return function(_0x4129cd){try{jsonpatch[_0x8b1d('0x1d')](_0x4129cd,_0x4c0ad5,!![]);}catch(_0x4c3c3a){return BPromise['reject'](_0x4c3c3a);}return _0x4129cd[_0x8b1d('0x1e')]();};}function saveUpdates(_0x15a840,_0x3cf7af){return function(_0x326314){if(_0x326314){return _0x326314['update'](_0x15a840)[_0x8b1d('0x1f')](function(_0x59c928){return _0x59c928;});}return null;};}function removeEntity(_0x500284,_0x1c3f82){return function(_0x40da28){if(_0x40da28){return _0x40da28[_0x8b1d('0x20')]()[_0x8b1d('0x1f')](function(){var _0x2aa2dc=_0x40da28[_0x8b1d('0x21')]({'plain':!![]});var _0x3ffe99=_0x8b1d('0x22');return db[_0x8b1d('0x23')][_0x8b1d('0x20')]({'where':{'type':_0x3ffe99,'resourceId':_0x2aa2dc['id']}})[_0x8b1d('0x1f')](function(){return _0x40da28;});})[_0x8b1d('0x1f')](function(){_0x500284[_0x8b1d('0x16')](0xcc)[_0x8b1d('0x24')]();});}};}function handleEntityNotFound(_0x27c934,_0x5afcac){return function(_0x24a61c){if(!_0x24a61c){_0x27c934[_0x8b1d('0x25')](0x194);}return _0x24a61c;};}function handleError(_0x4dc239,_0xcfd21b){_0xcfd21b=_0xcfd21b||0x1f4;return function(_0x475879){logger[_0x8b1d('0x26')](_0x475879[_0x8b1d('0x27')]);if(_0x475879[_0x8b1d('0x28')]){delete _0x475879['name'];}_0x4dc239[_0x8b1d('0x16')](_0xcfd21b)[_0x8b1d('0x29')](_0x475879);};}exports[_0x8b1d('0x2a')]=function(_0x33b2d1,_0x55ef9e){var _0x50842d={},_0x4951ce={},_0x458767={'count':0x0,'rows':[]};var _0x3e6176=_[_0x8b1d('0x2b')](db[_0x8b1d('0x2c')][_0x8b1d('0x2d')],function(_0x34356d){return{'name':_0x34356d[_0x8b1d('0x2e')],'type':_0x34356d[_0x8b1d('0x2f')][_0x8b1d('0x30')]};});_0x4951ce[_0x8b1d('0x31')]=_[_0x8b1d('0x2b')](_0x3e6176,'name');_0x4951ce[_0x8b1d('0x32')]=_[_0x8b1d('0x33')](_0x33b2d1[_0x8b1d('0x32')]);_0x4951ce[_0x8b1d('0x34')]=_[_0x8b1d('0x35')](_0x4951ce[_0x8b1d('0x31')],_0x4951ce[_0x8b1d('0x32')]);_0x50842d['attributes']=_[_0x8b1d('0x35')](_0x4951ce[_0x8b1d('0x31')],qs[_0x8b1d('0x36')](_0x33b2d1[_0x8b1d('0x32')]['fields']));_0x50842d[_0x8b1d('0x37')]=_0x50842d[_0x8b1d('0x37')][_0x8b1d('0x38')]?_0x50842d['attributes']:_0x4951ce[_0x8b1d('0x31')];if(!_0x33b2d1[_0x8b1d('0x32')][_0x8b1d('0x39')](_0x8b1d('0x3a'))){_0x50842d['limit']=qs['limit'](_0x33b2d1[_0x8b1d('0x32')]['limit']);_0x50842d['offset']=qs[_0x8b1d('0x1b')](_0x33b2d1[_0x8b1d('0x32')][_0x8b1d('0x1b')]);}_0x50842d[_0x8b1d('0x3b')]=qs[_0x8b1d('0x3c')](_0x33b2d1[_0x8b1d('0x32')]['sort']);delete _0x33b2d1['query'][_0x8b1d('0x3c')];_0x50842d[_0x8b1d('0x3d')]=qs['filters'](_[_0x8b1d('0x3e')](_0x33b2d1[_0x8b1d('0x32')],_0x4951ce['filters']),_0x3e6176);if(_0x33b2d1[_0x8b1d('0x32')]['filter']){_0x50842d[_0x8b1d('0x3d')]=_['merge'](_0x50842d[_0x8b1d('0x3d')],{'$or':_[_0x8b1d('0x2b')](_0x3e6176,function(_0x12427a){if(_0x12427a['type']!==_0x8b1d('0x3f')){var _0x178e02={};_0x178e02[_0x12427a[_0x8b1d('0x28')]]={'$like':'%'+_0x33b2d1[_0x8b1d('0x32')]['filter']+'%'};return _0x178e02;}})});}_0x50842d=_[_0x8b1d('0x40')]({},_0x50842d,_0x33b2d1['options']);var _0x16602e={'where':_0x50842d[_0x8b1d('0x3d')]};return db['VoiceMusicOnHold']['count'](_0x16602e)[_0x8b1d('0x1f')](function(_0x360eaa){_0x458767['count']=_0x360eaa;if(_0x33b2d1['query'][_0x8b1d('0x41')]){_0x50842d[_0x8b1d('0x42')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x8b1d('0x43')](_0x50842d);})['then'](function(_0x2f60a5){_0x458767[_0x8b1d('0x44')]=_0x2f60a5;return _0x458767;})['then'](respondWithFilteredResult(_0x55ef9e,_0x50842d))[_0x8b1d('0x45')](handleError(_0x55ef9e,null));};exports[_0x8b1d('0x46')]=function(_0x560942,_0x495887){var _0x479134={'raw':![],'where':{'id':_0x560942['params']['id']}},_0x1a86ff={};_0x1a86ff[_0x8b1d('0x31')]=_['keys'](db[_0x8b1d('0x2c')][_0x8b1d('0x2d')]);_0x1a86ff[_0x8b1d('0x32')]=_[_0x8b1d('0x33')](_0x560942['query']);_0x1a86ff['filters']=_[_0x8b1d('0x35')](_0x1a86ff['model'],_0x1a86ff['query']);_0x479134[_0x8b1d('0x37')]=_[_0x8b1d('0x35')](_0x1a86ff[_0x8b1d('0x31')],qs[_0x8b1d('0x36')](_0x560942['query']['fields']));_0x479134['attributes']=_0x479134['attributes'][_0x8b1d('0x38')]?_0x479134[_0x8b1d('0x37')]:_0x1a86ff[_0x8b1d('0x31')];if(_0x560942['query']['includeAll']){_0x479134[_0x8b1d('0x42')]=[{'all':!![]}];}_0x479134=_[_0x8b1d('0x40')]({},_0x479134,_0x560942[_0x8b1d('0x47')]);return db[_0x8b1d('0x2c')][_0x8b1d('0x48')](_0x479134)['then'](handleEntityNotFound(_0x495887,null))[_0x8b1d('0x1f')](respondWithResult(_0x495887,null))[_0x8b1d('0x45')](handleError(_0x495887,null));};exports['update']=function(_0xc94cf6,_0x27df4d){if(_0xc94cf6['body']['id']){delete _0xc94cf6[_0x8b1d('0x49')]['id'];}return db[_0x8b1d('0x2c')]['find']({'where':{'id':_0xc94cf6[_0x8b1d('0x4a')]['id']}})[_0x8b1d('0x1f')](handleEntityNotFound(_0x27df4d,null))[_0x8b1d('0x1f')](saveUpdates(_0xc94cf6[_0x8b1d('0x49')],null))['then'](respondWithResult(_0x27df4d,null))[_0x8b1d('0x45')](handleError(_0x27df4d,null));};exports['create']=function(_0x2e3a51,_0x3fe637,_0x121f83){return db[_0x8b1d('0x4b')][_0x8b1d('0x4c')](function(_0x2bcba1){if(_0x2e3a51[_0x8b1d('0x49')][_0x8b1d('0x4d')]===_0x8b1d('0x4e')){_0x2e3a51[_0x8b1d('0x49')]['directory']=path['join'](config['root'],_0x8b1d('0x4f'),_0x2e3a51[_0x8b1d('0x49')][_0x8b1d('0x28')]);}return db[_0x8b1d('0x2c')]['create'](_0x2e3a51[_0x8b1d('0x49')],{'transaction':_0x2bcba1})[_0x8b1d('0x1f')](function(_0x41b5f0){if(_0x2e3a51[_0x8b1d('0x49')][_0x8b1d('0x4d')]===_0x8b1d('0x4e')){fs[_0x8b1d('0x50')](_0x41b5f0[_0x8b1d('0x51')],parseInt(_0x8b1d('0x52'),0x8));}var _0x273250=_0x2e3a51['user']['get']({'plain':!![]});if(!_0x273250)throw new Error(_0x8b1d('0x53'));if(_0x273250[_0x8b1d('0x54')]===_0x8b1d('0x55')){var _0x15b50b=_0x41b5f0['get']({'plain':!![]});return db[_0x8b1d('0x56')][_0x8b1d('0x48')]({'where':{'name':_0x8b1d('0x22'),'userProfileId':_0x273250['userProfileId']},'raw':!![]})[_0x8b1d('0x1f')](function(_0x21d34b){if(_0x21d34b&&_0x21d34b[_0x8b1d('0x57')]===0x0){return db['UserProfileResource'][_0x8b1d('0x58')]({'name':_0x15b50b[_0x8b1d('0x28')],'resourceId':_0x15b50b['id'],'type':_0x21d34b[_0x8b1d('0x28')],'sectionId':_0x21d34b['id']},{})[_0x8b1d('0x1f')](function(){return _0x41b5f0;});}else{return _0x41b5f0;}})[_0x8b1d('0x45')](function(_0x2d65c9){logger[_0x8b1d('0x26')](_0x8b1d('0x59'),_0x2d65c9);});}return _0x41b5f0;});})[_0x8b1d('0x1f')](respondWithResult(_0x3fe637,0xc9))[_0x8b1d('0x45')](handleError(_0x3fe637,null));};exports[_0x8b1d('0x20')]=function(_0x266995,_0x77053,_0x57b8a4){var _0x3ff0ea;return db[_0x8b1d('0x2c')][_0x8b1d('0x48')]({'where':{'id':_0x266995[_0x8b1d('0x4a')]['id']}})[_0x8b1d('0x1f')](function(_0x225090){if(_0x225090){return db[_0x8b1d('0x4b')][_0x8b1d('0x4c')](function(_0x1fa95e){return _0x225090[_0x8b1d('0x20')]({'transaction':_0x1fa95e,'raw':!![]})['then'](function(_0x16ce11){if(_0x16ce11[_0x8b1d('0x51')]){fs[_0x8b1d('0x5a')](_0x16ce11[_0x8b1d('0x51')])[_0x8b1d('0x5b')](function(_0x292078){fs['unlinkSync'](path[_0x8b1d('0x5c')](_0x16ce11['directory'],_0x292078));});fs[_0x8b1d('0x5d')](_0x16ce11[_0x8b1d('0x51')]);}return _0x16ce11;});})[_0x8b1d('0x45')](function(_0x2c3e85){throw new db[(_0x8b1d('0x5e'))][(_0x8b1d('0x5f'))](_0x2c3e85[_0x8b1d('0x60')]);});}})[_0x8b1d('0x1f')](handleEntityNotFound(_0x77053,null))['then'](removeEntity(_0x77053,null))['catch'](handleError(_0x77053,null));};exports['addSound']=function(_0x56f6f0,_0x24bfca,_0x351351){return db['sequelize'][_0x8b1d('0x4c')](function(_0x127744){var _0x2965fb;return db[_0x8b1d('0x2c')][_0x8b1d('0x48')]({'where':{'id':_0x56f6f0['params']['id']}})['then'](function(_0x27b4fe){if(_0x27b4fe){_0x2965fb=_0x27b4fe;return _0x27b4fe['addSound'](_0x56f6f0[_0x8b1d('0x49')]['id'],{'transaction':_0x127744});}})[_0x8b1d('0x1f')](function(_0x333ded){if(_0x333ded){return db[_0x8b1d('0x61')][_0x8b1d('0x62')]({'where':{'id':_0x56f6f0[_0x8b1d('0x49')]['id']},'attributes':['id',_0x8b1d('0x28'),_0x8b1d('0x63'),_0x8b1d('0x64'),_0x8b1d('0x65')],'raw':!![]});}})[_0x8b1d('0x1f')](function(_0x2d4371){if(_0x2d4371){var _0x43171a=path['join'](config[_0x8b1d('0x66')],_0x8b1d('0x67'),util[_0x8b1d('0x68')](_0x8b1d('0x69'),path[_0x8b1d('0x6a')](_0x2d4371[_0x8b1d('0x63')],path[_0x8b1d('0x6b')](_0x2d4371[_0x8b1d('0x63')])),_0x2d4371[_0x8b1d('0x64')]));var _0x144d78=path[_0x8b1d('0x5c')](config[_0x8b1d('0x66')],_0x8b1d('0x4f'),_0x2965fb[_0x8b1d('0x28')],util[_0x8b1d('0x68')](_0x8b1d('0x69'),_0x2d4371[_0x8b1d('0x28')],_0x2d4371[_0x8b1d('0x64')]));fs[_0x8b1d('0x6c')](_0x43171a,_0x144d78);return _0x2d4371;}})[_0x8b1d('0x45')](function(_0x124697){throw new db[(_0x8b1d('0x5e'))][(_0x8b1d('0x5f'))](_0x124697['message']);});})[_0x8b1d('0x1f')](handleEntityNotFound(_0x24bfca,null))[_0x8b1d('0x1f')](respondWithResult(_0x24bfca,0xc9))[_0x8b1d('0x45')](handleError(_0x24bfca,null));};exports['removeSound']=function(_0x23924a,_0x555c48,_0x125808){return db[_0x8b1d('0x4b')]['transaction'](function(_0x227c63){var _0x7e20f;return db['VoiceMusicOnHold'][_0x8b1d('0x62')]({'where':{'id':_0x23924a[_0x8b1d('0x4a')]['id']}})[_0x8b1d('0x1f')](handleEntityNotFound(_0x555c48,null))[_0x8b1d('0x1f')](function(_0x478e41){if(_0x478e41){_0x7e20f=_0x478e41;return _0x478e41[_0x8b1d('0x6d')](_0x23924a[_0x8b1d('0x4a')][_0x8b1d('0x6e')]);}})[_0x8b1d('0x1f')](function(_0xe23141){if(_0xe23141){return db['Sound'][_0x8b1d('0x62')]({'where':{'id':_0x23924a[_0x8b1d('0x4a')]['id2']},'attributes':['id',_0x8b1d('0x28'),_0x8b1d('0x63'),'converted_format','createdAt'],'raw':!![]});}})['then'](function(_0xbc30ea){if(_0xbc30ea){fs[_0x8b1d('0x6f')](path[_0x8b1d('0x5c')](_0x7e20f[_0x8b1d('0x51')],util[_0x8b1d('0x68')](_0x8b1d('0x69'),_0xbc30ea[_0x8b1d('0x28')],_0xbc30ea['converted_format'])));return _0xbc30ea;}})[_0x8b1d('0x45')](function(_0x477e24){throw new db[(_0x8b1d('0x5e'))][(_0x8b1d('0x5f'))](_0x477e24[_0x8b1d('0x60')]);});})[_0x8b1d('0x1f')](handleEntityNotFound(_0x555c48,null))[_0x8b1d('0x1f')](respondWithStatusCode(_0x555c48,0xcc))['catch'](handleError(_0x555c48,null));};exports['getSounds']=function(_0x347b6d,_0x15582d,_0x382d28){var _0x2ff91c={};var _0x3e4ce2={};var _0x77db7d;var _0x46f389;return db['VoiceMusicOnHold'][_0x8b1d('0x62')]({'where':{'id':_0x347b6d['params']['id']}})[_0x8b1d('0x1f')](handleEntityNotFound(_0x15582d,null))[_0x8b1d('0x1f')](function(_0x56ac38){if(_0x56ac38){_0x77db7d=_0x56ac38;_0x3e4ce2['model']=_[_0x8b1d('0x33')](db[_0x8b1d('0x61')][_0x8b1d('0x2d')]);_0x3e4ce2['query']=_[_0x8b1d('0x33')](_0x347b6d[_0x8b1d('0x32')]);_0x3e4ce2[_0x8b1d('0x34')]=_[_0x8b1d('0x35')](_0x3e4ce2[_0x8b1d('0x31')],_0x3e4ce2['query']);_0x2ff91c[_0x8b1d('0x37')]=_[_0x8b1d('0x35')](_0x3e4ce2[_0x8b1d('0x31')],qs[_0x8b1d('0x36')](_0x347b6d[_0x8b1d('0x32')][_0x8b1d('0x36')]));_0x2ff91c[_0x8b1d('0x37')]=_0x2ff91c[_0x8b1d('0x37')][_0x8b1d('0x38')]?_0x2ff91c[_0x8b1d('0x37')]:_0x3e4ce2['model'];_0x2ff91c[_0x8b1d('0x3b')]=qs['sort'](_0x347b6d[_0x8b1d('0x32')]['sort']);_0x2ff91c[_0x8b1d('0x3d')]=qs[_0x8b1d('0x34')](_['pick'](_0x347b6d[_0x8b1d('0x32')],_0x3e4ce2['filters']));if(_0x347b6d[_0x8b1d('0x32')][_0x8b1d('0x70')]){_0x2ff91c[_0x8b1d('0x3d')]=_[_0x8b1d('0x40')](_0x2ff91c['where'],{'$or':_[_0x8b1d('0x2b')](_0x2ff91c[_0x8b1d('0x37')],function(_0x37c92a){var _0xa10683={};_0xa10683[_0x37c92a]={'$like':'%'+_0x347b6d['query']['filter']+'%'};return _0xa10683;})});}_0x2ff91c=_['merge']({},_0x2ff91c,_0x347b6d['options']);return _0x77db7d['getSounds'](_0x2ff91c);}})[_0x8b1d('0x1f')](function(_0x2936a8){if(_0x2936a8){_0x46f389=_0x2936a8[_0x8b1d('0x38')];if(!_0x347b6d[_0x8b1d('0x32')][_0x8b1d('0x39')](_0x8b1d('0x3a'))){_0x2ff91c['limit']=qs[_0x8b1d('0x19')](_0x347b6d[_0x8b1d('0x32')]['limit']);_0x2ff91c[_0x8b1d('0x1b')]=qs[_0x8b1d('0x1b')](_0x347b6d[_0x8b1d('0x32')][_0x8b1d('0x1b')]);}return _0x77db7d['getSounds'](_0x2ff91c);}})[_0x8b1d('0x1f')](function(_0x24f508){if(_0x24f508){return _0x24f508?{'count':_0x46f389,'rows':_0x24f508}:null;}})[_0x8b1d('0x1f')](respondWithResult(_0x15582d,null))[_0x8b1d('0x45')](handleError(_0x15582d,null));};
\ No newline at end of file
+var _0x2b7f=['createdAt','server/files/sounds/converted','format','%s.%s','basename','save_name','extname','symlinkSync','removeSound','id2','unlinkSync','getSounds','intersection','nolimit','eml-format','rimraf','zip-dir','moment','bluebird','util','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','MusicOnHolds','UserProfileResource','status','stack','name','map','VoiceMusicOnHold','rawAttributes','type','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','params','keys','find','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','converted_format'];(function(_0x4994f8,_0x25ee28){var _0x22d2b2=function(_0x216878){while(--_0x216878){_0x4994f8['push'](_0x4994f8['shift']());}};_0x22d2b2(++_0x25ee28);}(_0x2b7f,0x1be));var _0xf2b7=function(_0x400506,_0x135f82){_0x400506=_0x400506-0x0;var _0x1cb903=_0x2b7f[_0x400506];return _0x1cb903;};'use strict';var emlformat=require(_0xf2b7('0x0'));var rimraf=require(_0xf2b7('0x1'));var zipdir=require(_0xf2b7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf2b7('0x3'));var BPromise=require(_0xf2b7('0x4'));var Mustache=require('mustache');var util=require(_0xf2b7('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xf2b7('0x6'));var ejs=require(_0xf2b7('0x7'));var fs=require('fs');var fs_extra=require(_0xf2b7('0x8'));var _=require('lodash');var squel=require(_0xf2b7('0x9'));var crypto=require(_0xf2b7('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xf2b7('0xb'));var toCsv=require(_0xf2b7('0x6'));var querystring=require(_0xf2b7('0xc'));var Papa=require('papaparse');var Redis=require(_0xf2b7('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xf2b7('0xe'));var as=require(_0xf2b7('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf2b7('0x10'));var utils=require(_0xf2b7('0x11'));var config=require(_0xf2b7('0x12'));var licenseUtil=require(_0xf2b7('0x13'));var db=require(_0xf2b7('0x14'))['db'];function respondWithStatusCode(_0x594071,_0x4a5d35){_0x4a5d35=_0x4a5d35||0xcc;return function(_0x5c9a6a){if(_0x5c9a6a){return _0x594071[_0xf2b7('0x15')](_0x4a5d35);}return _0x594071['status'](_0x4a5d35)[_0xf2b7('0x16')]();};}function respondWithResult(_0x3c47cc,_0x3862b3){_0x3862b3=_0x3862b3||0xc8;return function(_0x5b26c5){if(_0x5b26c5){return _0x3c47cc['status'](_0x3862b3)[_0xf2b7('0x17')](_0x5b26c5);}};}function respondWithFilteredResult(_0x4ace09,_0xeb006a){return function(_0x2a4faf){if(_0x2a4faf){var _0x1aa579=typeof _0xeb006a[_0xf2b7('0x18')]===_0xf2b7('0x19')&&typeof _0xeb006a[_0xf2b7('0x1a')]===_0xf2b7('0x19');var _0xaa8970=_0x2a4faf[_0xf2b7('0x1b')];var _0x48553d=_0x1aa579?0x0:_0xeb006a['offset'];var _0x1326ee=_0x1aa579?_0x2a4faf[_0xf2b7('0x1b')]:_0xeb006a['offset']+_0xeb006a[_0xf2b7('0x1a')];var _0x1dd30c;if(_0x1326ee>=_0xaa8970){_0x1326ee=_0xaa8970;_0x1dd30c=0xc8;}else{_0x1dd30c=0xce;}_0x4ace09['status'](_0x1dd30c);return _0x4ace09[_0xf2b7('0x1c')](_0xf2b7('0x1d'),_0x48553d+'-'+_0x1326ee+'/'+_0xaa8970)[_0xf2b7('0x17')](_0x2a4faf);}return null;};}function patchUpdates(_0x2e9368){return function(_0x3b233b){try{jsonpatch[_0xf2b7('0x1e')](_0x3b233b,_0x2e9368,!![]);}catch(_0x2fdd57){return BPromise[_0xf2b7('0x1f')](_0x2fdd57);}return _0x3b233b[_0xf2b7('0x20')]();};}function saveUpdates(_0x4424e7,_0x4096db){return function(_0x2b8ac6){if(_0x2b8ac6){return _0x2b8ac6[_0xf2b7('0x21')](_0x4424e7)['then'](function(_0x447a0c){return _0x447a0c;});}return null;};}function removeEntity(_0x458822,_0x18df47){return function(_0x403ae8){if(_0x403ae8){return _0x403ae8[_0xf2b7('0x22')]()[_0xf2b7('0x23')](function(){var _0x33387c=_0x403ae8[_0xf2b7('0x24')]({'plain':!![]});var _0x443a8c=_0xf2b7('0x25');return db[_0xf2b7('0x26')][_0xf2b7('0x22')]({'where':{'type':_0x443a8c,'resourceId':_0x33387c['id']}})['then'](function(){return _0x403ae8;});})[_0xf2b7('0x23')](function(){_0x458822[_0xf2b7('0x27')](0xcc)[_0xf2b7('0x16')]();});}};}function handleEntityNotFound(_0x6b15eb,_0x3ffd63){return function(_0x37cffa){if(!_0x37cffa){_0x6b15eb[_0xf2b7('0x15')](0x194);}return _0x37cffa;};}function handleError(_0x3fcd4c,_0x523a18){_0x523a18=_0x523a18||0x1f4;return function(_0x17f3b8){logger['error'](_0x17f3b8[_0xf2b7('0x28')]);if(_0x17f3b8[_0xf2b7('0x29')]){delete _0x17f3b8[_0xf2b7('0x29')];}_0x3fcd4c[_0xf2b7('0x27')](_0x523a18)['send'](_0x17f3b8);};}exports['index']=function(_0x37de6d,_0xfc6bcd){var _0x1b679e={},_0x22fc2a={},_0x453a06={'count':0x0,'rows':[]};var _0xd963b8=_[_0xf2b7('0x2a')](db[_0xf2b7('0x2b')][_0xf2b7('0x2c')],function(_0x2a16e0){return{'name':_0x2a16e0['fieldName'],'type':_0x2a16e0[_0xf2b7('0x2d')]['key']};});_0x22fc2a[_0xf2b7('0x2e')]=_['map'](_0xd963b8,_0xf2b7('0x29'));_0x22fc2a[_0xf2b7('0x2f')]=_['keys'](_0x37de6d[_0xf2b7('0x2f')]);_0x22fc2a[_0xf2b7('0x30')]=_['intersection'](_0x22fc2a[_0xf2b7('0x2e')],_0x22fc2a[_0xf2b7('0x2f')]);_0x1b679e[_0xf2b7('0x31')]=_['intersection'](_0x22fc2a[_0xf2b7('0x2e')],qs[_0xf2b7('0x32')](_0x37de6d[_0xf2b7('0x2f')]['fields']));_0x1b679e[_0xf2b7('0x31')]=_0x1b679e[_0xf2b7('0x31')][_0xf2b7('0x33')]?_0x1b679e['attributes']:_0x22fc2a['model'];if(!_0x37de6d[_0xf2b7('0x2f')][_0xf2b7('0x34')]('nolimit')){_0x1b679e['limit']=qs[_0xf2b7('0x1a')](_0x37de6d[_0xf2b7('0x2f')]['limit']);_0x1b679e['offset']=qs[_0xf2b7('0x18')](_0x37de6d[_0xf2b7('0x2f')]['offset']);}_0x1b679e[_0xf2b7('0x35')]=qs[_0xf2b7('0x36')](_0x37de6d[_0xf2b7('0x2f')][_0xf2b7('0x36')]);delete _0x37de6d['query'][_0xf2b7('0x36')];_0x1b679e[_0xf2b7('0x37')]=qs[_0xf2b7('0x30')](_[_0xf2b7('0x38')](_0x37de6d['query'],_0x22fc2a[_0xf2b7('0x30')]),_0xd963b8);if(_0x37de6d[_0xf2b7('0x2f')][_0xf2b7('0x39')]){_0x1b679e['where']=_[_0xf2b7('0x3a')](_0x1b679e['where'],{'$or':_[_0xf2b7('0x2a')](_0xd963b8,function(_0x27a76e){if(_0x27a76e[_0xf2b7('0x2d')]!=='VIRTUAL'){var _0x38e11f={};_0x38e11f[_0x27a76e[_0xf2b7('0x29')]]={'$like':'%'+_0x37de6d['query'][_0xf2b7('0x39')]+'%'};return _0x38e11f;}})});}_0x1b679e=_[_0xf2b7('0x3a')]({},_0x1b679e,_0x37de6d[_0xf2b7('0x3b')]);var _0x23a153={'where':_0x1b679e[_0xf2b7('0x37')]};return db[_0xf2b7('0x2b')][_0xf2b7('0x1b')](_0x23a153)[_0xf2b7('0x23')](function(_0x381d74){_0x453a06[_0xf2b7('0x1b')]=_0x381d74;if(_0x37de6d['query'][_0xf2b7('0x3c')]){_0x1b679e[_0xf2b7('0x3d')]=[{'all':!![]}];}return db[_0xf2b7('0x2b')][_0xf2b7('0x3e')](_0x1b679e);})[_0xf2b7('0x23')](function(_0x178b36){_0x453a06['rows']=_0x178b36;return _0x453a06;})[_0xf2b7('0x23')](respondWithFilteredResult(_0xfc6bcd,_0x1b679e))[_0xf2b7('0x3f')](handleError(_0xfc6bcd,null));};exports['show']=function(_0x336be7,_0x2403d3){var _0x2641a1={'raw':![],'where':{'id':_0x336be7[_0xf2b7('0x40')]['id']}},_0x5cecee={};_0x5cecee[_0xf2b7('0x2e')]=_[_0xf2b7('0x41')](db[_0xf2b7('0x2b')][_0xf2b7('0x2c')]);_0x5cecee[_0xf2b7('0x2f')]=_[_0xf2b7('0x41')](_0x336be7['query']);_0x5cecee[_0xf2b7('0x30')]=_['intersection'](_0x5cecee['model'],_0x5cecee[_0xf2b7('0x2f')]);_0x2641a1[_0xf2b7('0x31')]=_['intersection'](_0x5cecee[_0xf2b7('0x2e')],qs[_0xf2b7('0x32')](_0x336be7[_0xf2b7('0x2f')]['fields']));_0x2641a1[_0xf2b7('0x31')]=_0x2641a1['attributes']['length']?_0x2641a1[_0xf2b7('0x31')]:_0x5cecee[_0xf2b7('0x2e')];if(_0x336be7[_0xf2b7('0x2f')][_0xf2b7('0x3c')]){_0x2641a1[_0xf2b7('0x3d')]=[{'all':!![]}];}_0x2641a1=_[_0xf2b7('0x3a')]({},_0x2641a1,_0x336be7[_0xf2b7('0x3b')]);return db[_0xf2b7('0x2b')][_0xf2b7('0x42')](_0x2641a1)[_0xf2b7('0x23')](handleEntityNotFound(_0x2403d3,null))['then'](respondWithResult(_0x2403d3,null))['catch'](handleError(_0x2403d3,null));};exports[_0xf2b7('0x21')]=function(_0x3259e2,_0x3defe4){if(_0x3259e2[_0xf2b7('0x43')]['id']){delete _0x3259e2[_0xf2b7('0x43')]['id'];}return db[_0xf2b7('0x2b')]['find']({'where':{'id':_0x3259e2[_0xf2b7('0x40')]['id']}})['then'](handleEntityNotFound(_0x3defe4,null))[_0xf2b7('0x23')](saveUpdates(_0x3259e2['body'],null))[_0xf2b7('0x23')](respondWithResult(_0x3defe4,null))[_0xf2b7('0x3f')](handleError(_0x3defe4,null));};exports[_0xf2b7('0x44')]=function(_0x321705,_0x1fe8a6,_0x2311db){return db[_0xf2b7('0x45')][_0xf2b7('0x46')](function(_0x4bd0fc){if(_0x321705[_0xf2b7('0x43')][_0xf2b7('0x47')]===_0xf2b7('0x48')){_0x321705[_0xf2b7('0x43')][_0xf2b7('0x49')]=path[_0xf2b7('0x4a')](config[_0xf2b7('0x4b')],_0xf2b7('0x4c'),_0x321705[_0xf2b7('0x43')]['name']);}return db[_0xf2b7('0x2b')][_0xf2b7('0x44')](_0x321705[_0xf2b7('0x43')],{'transaction':_0x4bd0fc})[_0xf2b7('0x23')](function(_0x3144f7){if(_0x321705[_0xf2b7('0x43')][_0xf2b7('0x47')]===_0xf2b7('0x48')){fs[_0xf2b7('0x4d')](_0x3144f7[_0xf2b7('0x49')],parseInt('0777',0x8));}var _0x30208e=_0x321705[_0xf2b7('0x4e')][_0xf2b7('0x24')]({'plain':!![]});if(!_0x30208e)throw new Error(_0xf2b7('0x4f'));if(_0x30208e[_0xf2b7('0x50')]==='user'){var _0x22c8b0=_0x3144f7[_0xf2b7('0x24')]({'plain':!![]});return db[_0xf2b7('0x51')][_0xf2b7('0x42')]({'where':{'name':'MusicOnHolds','userProfileId':_0x30208e['userProfileId']},'raw':!![]})[_0xf2b7('0x23')](function(_0x40ea83){if(_0x40ea83&&_0x40ea83[_0xf2b7('0x52')]===0x0){return db['UserProfileResource'][_0xf2b7('0x44')]({'name':_0x22c8b0['name'],'resourceId':_0x22c8b0['id'],'type':_0x40ea83[_0xf2b7('0x29')],'sectionId':_0x40ea83['id']},{})[_0xf2b7('0x23')](function(){return _0x3144f7;});}else{return _0x3144f7;}})[_0xf2b7('0x3f')](function(_0x2ddd60){logger[_0xf2b7('0x53')](_0xf2b7('0x54'),_0x2ddd60);});}return _0x3144f7;});})[_0xf2b7('0x23')](respondWithResult(_0x1fe8a6,0xc9))[_0xf2b7('0x3f')](handleError(_0x1fe8a6,null));};exports['destroy']=function(_0x47f81d,_0x3b6b21,_0xeef486){var _0x3ab56e;return db[_0xf2b7('0x2b')][_0xf2b7('0x42')]({'where':{'id':_0x47f81d['params']['id']}})[_0xf2b7('0x23')](function(_0x177f02){if(_0x177f02){return db[_0xf2b7('0x45')][_0xf2b7('0x46')](function(_0x4104fe){return _0x177f02[_0xf2b7('0x22')]({'transaction':_0x4104fe,'raw':!![]})[_0xf2b7('0x23')](function(_0x3a86eb){if(_0x3a86eb[_0xf2b7('0x49')]){fs['readdirSync'](_0x3a86eb[_0xf2b7('0x49')])[_0xf2b7('0x55')](function(_0x18b69c){fs['unlinkSync'](path[_0xf2b7('0x4a')](_0x3a86eb[_0xf2b7('0x49')],_0x18b69c));});fs[_0xf2b7('0x56')](_0x3a86eb[_0xf2b7('0x49')]);}return _0x3a86eb;});})[_0xf2b7('0x3f')](function(_0x2c68b8){throw new db[(_0xf2b7('0x57'))][(_0xf2b7('0x58'))](_0x2c68b8[_0xf2b7('0x59')]);});}})[_0xf2b7('0x23')](handleEntityNotFound(_0x3b6b21,null))[_0xf2b7('0x23')](removeEntity(_0x3b6b21,null))[_0xf2b7('0x3f')](handleError(_0x3b6b21,null));};exports[_0xf2b7('0x5a')]=function(_0x56f70f,_0x3bbd67,_0x108956){return db[_0xf2b7('0x45')]['transaction'](function(_0x5c2934){var _0x272a3a;return db[_0xf2b7('0x2b')][_0xf2b7('0x42')]({'where':{'id':_0x56f70f[_0xf2b7('0x40')]['id']}})[_0xf2b7('0x23')](function(_0x43fd87){if(_0x43fd87){_0x272a3a=_0x43fd87;return _0x43fd87[_0xf2b7('0x5a')](_0x56f70f[_0xf2b7('0x43')]['id'],{'transaction':_0x5c2934});}})['then'](function(_0x541a8d){if(_0x541a8d){return db[_0xf2b7('0x5b')][_0xf2b7('0x5c')]({'where':{'id':_0x56f70f[_0xf2b7('0x43')]['id']},'attributes':['id','name','save_name',_0xf2b7('0x5d'),_0xf2b7('0x5e')],'raw':!![]});}})[_0xf2b7('0x23')](function(_0x27abd6){if(_0x27abd6){var _0xd7239a=path[_0xf2b7('0x4a')](config[_0xf2b7('0x4b')],_0xf2b7('0x5f'),util[_0xf2b7('0x60')](_0xf2b7('0x61'),path[_0xf2b7('0x62')](_0x27abd6[_0xf2b7('0x63')],path[_0xf2b7('0x64')](_0x27abd6['save_name'])),_0x27abd6[_0xf2b7('0x5d')]));var _0x59c852=path['join'](config[_0xf2b7('0x4b')],'server/files/moh',_0x272a3a['name'],util[_0xf2b7('0x60')](_0xf2b7('0x61'),_0x27abd6[_0xf2b7('0x29')],_0x27abd6['converted_format']));fs[_0xf2b7('0x65')](_0xd7239a,_0x59c852);return _0x27abd6;}})[_0xf2b7('0x3f')](function(_0x30cb9b){throw new db['Sequelize'][(_0xf2b7('0x58'))](_0x30cb9b[_0xf2b7('0x59')]);});})[_0xf2b7('0x23')](handleEntityNotFound(_0x3bbd67,null))['then'](respondWithResult(_0x3bbd67,0xc9))[_0xf2b7('0x3f')](handleError(_0x3bbd67,null));};exports[_0xf2b7('0x66')]=function(_0xe62070,_0x358e41,_0x5895b8){return db[_0xf2b7('0x45')]['transaction'](function(_0x3dfb3b){var _0x446fb2;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0xe62070[_0xf2b7('0x40')]['id']}})[_0xf2b7('0x23')](handleEntityNotFound(_0x358e41,null))[_0xf2b7('0x23')](function(_0x5ec1c0){if(_0x5ec1c0){_0x446fb2=_0x5ec1c0;return _0x5ec1c0[_0xf2b7('0x66')](_0xe62070[_0xf2b7('0x40')][_0xf2b7('0x67')]);}})[_0xf2b7('0x23')](function(_0x3e6213){if(_0x3e6213){return db[_0xf2b7('0x5b')][_0xf2b7('0x5c')]({'where':{'id':_0xe62070[_0xf2b7('0x40')][_0xf2b7('0x67')]},'attributes':['id',_0xf2b7('0x29'),'save_name',_0xf2b7('0x5d'),_0xf2b7('0x5e')],'raw':!![]});}})['then'](function(_0x2fe4f2){if(_0x2fe4f2){fs[_0xf2b7('0x68')](path[_0xf2b7('0x4a')](_0x446fb2[_0xf2b7('0x49')],util[_0xf2b7('0x60')](_0xf2b7('0x61'),_0x2fe4f2[_0xf2b7('0x29')],_0x2fe4f2[_0xf2b7('0x5d')])));return _0x2fe4f2;}})['catch'](function(_0x134309){throw new db[(_0xf2b7('0x57'))][(_0xf2b7('0x58'))](_0x134309[_0xf2b7('0x59')]);});})['then'](handleEntityNotFound(_0x358e41,null))['then'](respondWithStatusCode(_0x358e41,0xcc))['catch'](handleError(_0x358e41,null));};exports[_0xf2b7('0x69')]=function(_0x23079a,_0x9975f0,_0x4af145){var _0x53cc84={};var _0x1af79d={};var _0x516e37;var _0x163b6f;return db[_0xf2b7('0x2b')]['findOne']({'where':{'id':_0x23079a[_0xf2b7('0x40')]['id']}})[_0xf2b7('0x23')](handleEntityNotFound(_0x9975f0,null))[_0xf2b7('0x23')](function(_0x1168f4){if(_0x1168f4){_0x516e37=_0x1168f4;_0x1af79d['model']=_[_0xf2b7('0x41')](db[_0xf2b7('0x5b')][_0xf2b7('0x2c')]);_0x1af79d[_0xf2b7('0x2f')]=_[_0xf2b7('0x41')](_0x23079a[_0xf2b7('0x2f')]);_0x1af79d[_0xf2b7('0x30')]=_[_0xf2b7('0x6a')](_0x1af79d[_0xf2b7('0x2e')],_0x1af79d['query']);_0x53cc84['attributes']=_[_0xf2b7('0x6a')](_0x1af79d[_0xf2b7('0x2e')],qs[_0xf2b7('0x32')](_0x23079a['query'][_0xf2b7('0x32')]));_0x53cc84['attributes']=_0x53cc84[_0xf2b7('0x31')][_0xf2b7('0x33')]?_0x53cc84[_0xf2b7('0x31')]:_0x1af79d[_0xf2b7('0x2e')];_0x53cc84[_0xf2b7('0x35')]=qs['sort'](_0x23079a[_0xf2b7('0x2f')][_0xf2b7('0x36')]);_0x53cc84[_0xf2b7('0x37')]=qs['filters'](_[_0xf2b7('0x38')](_0x23079a[_0xf2b7('0x2f')],_0x1af79d[_0xf2b7('0x30')]));if(_0x23079a[_0xf2b7('0x2f')][_0xf2b7('0x39')]){_0x53cc84[_0xf2b7('0x37')]=_[_0xf2b7('0x3a')](_0x53cc84['where'],{'$or':_['map'](_0x53cc84[_0xf2b7('0x31')],function(_0x5879d7){var _0x54ded1={};_0x54ded1[_0x5879d7]={'$like':'%'+_0x23079a[_0xf2b7('0x2f')][_0xf2b7('0x39')]+'%'};return _0x54ded1;})});}_0x53cc84=_[_0xf2b7('0x3a')]({},_0x53cc84,_0x23079a['options']);return _0x516e37['getSounds'](_0x53cc84);}})[_0xf2b7('0x23')](function(_0x4b6a98){if(_0x4b6a98){_0x163b6f=_0x4b6a98['length'];if(!_0x23079a[_0xf2b7('0x2f')][_0xf2b7('0x34')](_0xf2b7('0x6b'))){_0x53cc84[_0xf2b7('0x1a')]=qs[_0xf2b7('0x1a')](_0x23079a[_0xf2b7('0x2f')][_0xf2b7('0x1a')]);_0x53cc84[_0xf2b7('0x18')]=qs[_0xf2b7('0x18')](_0x23079a['query']['offset']);}return _0x516e37[_0xf2b7('0x69')](_0x53cc84);}})['then'](function(_0x5d7c18){if(_0x5d7c18){return _0x5d7c18?{'count':_0x163b6f,'rows':_0x5d7c18}:null;}})[_0xf2b7('0x23')](respondWithResult(_0x9975f0,null))[_0xf2b7('0x3f')](handleError(_0x9975f0,null));};
\ No newline at end of file
index d65eab4..e299570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31b=['path','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','util','api','request-promise'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xf31b,0x93));var _0xbf31=function(_0x4b63ed,_0x1b3e0c){_0x4b63ed=_0x4b63ed-0x0;var _0x1c3372=_0xf31b[_0x4b63ed];return _0x1c3372;};'use strict';var _=require('lodash');var util=require(_0xbf31('0x0'));var logger=require('../../config/logger')(_0xbf31('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbf31('0x2'));var fs=require('fs');var path=require(_0xbf31('0x3'));var rimraf=require('rimraf');var config=require(_0xbf31('0x4'));var attributes=require(_0xbf31('0x5'));module[_0xbf31('0x6')]=function(_0x268de4,_0x4b22d8){return _0x268de4[_0xbf31('0x7')](_0xbf31('0x8'),attributes,{'tableName':_0xbf31('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f21=['path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','VoiceMusicOnHold','lodash','util','../../config/logger','request-promise'];(function(_0x21e8bb,_0xeb600b){var _0x421ff2=function(_0x2ff739){while(--_0x2ff739){_0x21e8bb['push'](_0x21e8bb['shift']());}};_0x421ff2(++_0xeb600b);}(_0x8f21,0x1f4));var _0x18f2=function(_0x53e14d,_0x12ffaa){_0x53e14d=_0x53e14d-0x0;var _0x5d9088=_0x8f21[_0x53e14d];return _0x5d9088;};'use strict';var _=require(_0x18f2('0x0'));var util=require(_0x18f2('0x1'));var logger=require(_0x18f2('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x18f2('0x3'));var fs=require('fs');var path=require(_0x18f2('0x4'));var rimraf=require(_0x18f2('0x5'));var config=require(_0x18f2('0x6'));var attributes=require(_0x18f2('0x7'));module['exports']=function(_0x49b898,_0x595ce){return _0x49b898['define'](_0x18f2('0x8'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22c2867..80ad0f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s'];(function(_0x2906ed,_0x1df34a){var _0x43bbb9=function(_0x11e9be){while(--_0x11e9be){_0x2906ed['push'](_0x2906ed['shift']());}};_0x43bbb9(++_0x1df34a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4b6778,_0x505a76){_0x4b6778=_0x4b6778-0x0;var _0x22dbb9=_0xcb91[_0x4b6778];return _0x22dbb9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x505d96,_0x49b92b){var _0x1116d7=function(_0x56ce8b){while(--_0x56ce8b){_0x505d96['push'](_0x505d96['shift']());}};_0x1116d7(++_0x49b92b);}(_0xedd9,0xfc));var _0x9edd=function(_0x5be074,_0x4c34ef){_0x5be074=_0x5be074-0x0;var _0x5ba451=_0xedd9[_0x5be074];return _0x5ba451;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
index 7ee171c..2a99231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba7=['exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents','/:id/teams','post','addAgents','addTeams','put','update','delete','destroy','removeAgents'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x0ba7,0x16d));var _0x70ba=function(_0x1ad0f8,_0xfd5f16){_0x1ad0f8=_0x1ad0f8-0x0;var _0x2461b2=_0x0ba7[_0x1ad0f8];return _0x2461b2;};'use strict';var multer=require(_0x70ba('0x0'));var util=require('util');var path=require(_0x70ba('0x1'));var timeout=require(_0x70ba('0x2'));var express=require(_0x70ba('0x3'));var router=express[_0x70ba('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x70ba('0x5'));var interaction=require(_0x70ba('0x6'));var config=require(_0x70ba('0x7'));var controller=require(_0x70ba('0x8'));router[_0x70ba('0x9')]('/',auth[_0x70ba('0xa')](),controller[_0x70ba('0xb')]);router[_0x70ba('0x9')](_0x70ba('0xc'),auth[_0x70ba('0xa')](),controller[_0x70ba('0xd')]);router[_0x70ba('0x9')](_0x70ba('0xe'),auth[_0x70ba('0xa')](),controller[_0x70ba('0xf')]);router['get'](_0x70ba('0x10'),auth['isAuthenticated'](),controller[_0x70ba('0x11')]);router[_0x70ba('0x9')](_0x70ba('0x12'),auth[_0x70ba('0xa')](),controller['getTeams']);router['post']('/',auth[_0x70ba('0xa')](),controller['create']);router[_0x70ba('0x13')]('/:id/users',auth[_0x70ba('0xa')](),controller[_0x70ba('0x14')]);router['post'](_0x70ba('0x12'),auth['isAuthenticated'](),controller[_0x70ba('0x15')]);router[_0x70ba('0x16')](_0x70ba('0xe'),auth[_0x70ba('0xa')](),controller[_0x70ba('0x17')]);router[_0x70ba('0x18')](_0x70ba('0xe'),auth[_0x70ba('0xa')](),controller[_0x70ba('0x19')]);router[_0x70ba('0x18')](_0x70ba('0x10'),auth[_0x70ba('0xa')](),controller[_0x70ba('0x1a')]);router[_0x70ba('0x18')]('/:id/teams',auth['isAuthenticated'](),controller['removeTeams']);module[_0x70ba('0x1b')]=router;
\ No newline at end of file
+var _0x6921=['fs-extra','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','getAgents','/:id/teams','getTeams','create','post','/:id/users','addAgents','addTeams','put','update','delete','removeAgents','removeTeams','exports','util','connect-timeout','Router'];(function(_0x105a68,_0x186862){var _0x2ea65b=function(_0x2a4693){while(--_0x2a4693){_0x105a68['push'](_0x105a68['shift']());}};_0x2ea65b(++_0x186862);}(_0x6921,0x1d1));var _0x1692=function(_0xe75234,_0x4cb111){_0xe75234=_0xe75234-0x0;var _0x399551=_0x6921[_0xe75234];return _0x399551;};'use strict';var multer=require('multer');var util=require(_0x1692('0x0'));var path=require('path');var timeout=require(_0x1692('0x1'));var express=require('express');var router=express[_0x1692('0x2')]();var fs_extra=require(_0x1692('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x1692('0x4'));var config=require('../../config/environment');var controller=require(_0x1692('0x5'));router[_0x1692('0x6')]('/',auth[_0x1692('0x7')](),controller[_0x1692('0x8')]);router[_0x1692('0x6')](_0x1692('0x9'),auth[_0x1692('0x7')](),controller[_0x1692('0xa')]);router[_0x1692('0x6')](_0x1692('0xb'),auth[_0x1692('0x7')](),controller['show']);router[_0x1692('0x6')]('/:id/users',auth[_0x1692('0x7')](),controller[_0x1692('0xc')]);router[_0x1692('0x6')](_0x1692('0xd'),auth[_0x1692('0x7')](),controller[_0x1692('0xe')]);router['post']('/',auth[_0x1692('0x7')](),controller[_0x1692('0xf')]);router[_0x1692('0x10')](_0x1692('0x11'),auth[_0x1692('0x7')](),controller[_0x1692('0x12')]);router['post'](_0x1692('0xd'),auth[_0x1692('0x7')](),controller[_0x1692('0x13')]);router[_0x1692('0x14')](_0x1692('0xb'),auth[_0x1692('0x7')](),controller[_0x1692('0x15')]);router[_0x1692('0x16')]('/:id',auth[_0x1692('0x7')](),controller['destroy']);router[_0x1692('0x16')]('/:id/users',auth[_0x1692('0x7')](),controller[_0x1692('0x17')]);router[_0x1692('0x16')]('/:id/teams',auth['isAuthenticated'](),controller[_0x1692('0x18')]);module[_0x1692('0x19')]=router;
\ No newline at end of file
index e2a0eae..ff02e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6caf=['system-','getDataValue','INTEGER','sequelize','exports','STRING','name'];(function(_0xa7dd32,_0x35561f){var _0x20f2f8=function(_0xe228c1){while(--_0xe228c1){_0xa7dd32['push'](_0xa7dd32['shift']());}};_0x20f2f8(++_0x35561f);}(_0x6caf,0xea));var _0xf6ca=function(_0x4aac5a,_0x15b04c){_0x4aac5a=_0x4aac5a-0x0;var _0x42e7bc=_0x6caf[_0x4aac5a];return _0x42e7bc;};'use strict';var Sequelize=require(_0xf6ca('0x0'));module[_0xf6ca('0x1')]={'name':{'type':Sequelize[_0xf6ca('0x2')],'allowNull':![],'unique':_0xf6ca('0x3')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x270daf){return _0xf6ca('0x4')+this[_0xf6ca('0x5')]('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0xf6ca('0x6')]}};
\ No newline at end of file
+var _0xa75f=['getDataValue','sequelize','exports','STRING','name','VIRTUAL','system-'];(function(_0x2bb762,_0x4c68c4){var _0x1d60e9=function(_0x48de40){while(--_0x48de40){_0x2bb762['push'](_0x2bb762['shift']());}};_0x1d60e9(++_0x4c68c4);}(_0xa75f,0x94));var _0xfa75=function(_0x22dcd8,_0x3024d7){_0x22dcd8=_0x22dcd8-0x0;var _0x5b8104=_0xa75f[_0x22dcd8];return _0x5b8104;};'use strict';var Sequelize=require(_0xfa75('0x0'));module[_0xfa75('0x1')]={'name':{'type':Sequelize[_0xfa75('0x2')],'allowNull':![],'unique':_0xfa75('0x3')},'prefix':{'type':Sequelize[_0xfa75('0x4')],'get':function(_0x224e3c){return _0xfa75('0x5')+this[_0xfa75('0x6')](_0xfa75('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xfa75('0x2')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 7f4d2cf..134b0f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['sequelize','body','VoiceExtension','user','VoicePrefixes','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','bulkCreate','Extensions\x20creation\x20failed','push','CDR(prefix)=','callerIdAll','Set','PREFIX-CALLERIDALL=','goto','charAt','system-','transaction','findById','ids','omit','emit','removeAgents','isArray','userVoicePrefix:remove','getAgents','sort','nolimit','Team','getTeams','addTeams','Agents','online','voicePause','flatMap','each','TeamVoicePrefix','upsert','findOrCreate','forEach','userVoicePrefix:save','removeTeams','User','select','field','tq.TeamId','from','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','QueryTypes','SELECT','TeamId','includes','all','union','compact','isEmpty','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','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','sendStatus','status','end','offset','limit','count','set','json','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','VoicePrefix','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','where','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','find','describe','create'];(function(_0x4552dc,_0x194da9){var _0x5efc67=function(_0x148ab0){while(--_0x148ab0){_0x4552dc['push'](_0x4552dc['shift']());}};_0x5efc67(++_0x194da9);}(_0x2032,0xd9));var _0x2203=function(_0x854c31,_0x30df5b){_0x854c31=_0x854c31-0x0;var _0x308751=_0x2032[_0x854c31];return _0x308751;};'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'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2203('0x18')]));require('./voicePrefix.socket')['register'](socket);function respondWithStatusCode(_0x21a3af,_0x472265){_0x472265=_0x472265||0xcc;return function(_0x1c1ead){if(_0x1c1ead){return _0x21a3af[_0x2203('0x19')](_0x472265);}return _0x21a3af[_0x2203('0x1a')](_0x472265)[_0x2203('0x1b')]();};}function respondWithResult(_0x2c36e6,_0x2c085c){_0x2c085c=_0x2c085c||0xc8;return function(_0xdf9d0b){if(_0xdf9d0b){return _0x2c36e6[_0x2203('0x1a')](_0x2c085c)['json'](_0xdf9d0b);}};}function respondWithFilteredResult(_0x280eda,_0x2ee127){return function(_0x4893ff){if(_0x4893ff){var _0x3f9ef6=typeof _0x2ee127[_0x2203('0x1c')]==='undefined'&&typeof _0x2ee127[_0x2203('0x1d')]==='undefined';var _0x2904ba=_0x4893ff[_0x2203('0x1e')];var _0x3c8c34=_0x3f9ef6?0x0:_0x2ee127[_0x2203('0x1c')];var _0x15cb1a=_0x3f9ef6?_0x4893ff[_0x2203('0x1e')]:_0x2ee127['offset']+_0x2ee127[_0x2203('0x1d')];var _0x50822b;if(_0x15cb1a>=_0x2904ba){_0x15cb1a=_0x2904ba;_0x50822b=0xc8;}else{_0x50822b=0xce;}_0x280eda['status'](_0x50822b);return _0x280eda[_0x2203('0x1f')]('Content-Range',_0x3c8c34+'-'+_0x15cb1a+'/'+_0x2904ba)[_0x2203('0x20')](_0x4893ff);}return null;};}function patchUpdates(_0x5bfe61){return function(_0x5d4c4e){try{jsonpatch[_0x2203('0x21')](_0x5d4c4e,_0x5bfe61,!![]);}catch(_0x5e29cd){return BPromise['reject'](_0x5e29cd);}return _0x5d4c4e[_0x2203('0x22')]();};}function saveUpdates(_0x2718f5,_0x21f930){return function(_0xfd0970){if(_0xfd0970){return _0xfd0970[_0x2203('0x23')](_0x2718f5)[_0x2203('0x24')](function(_0x49c12){return _0x49c12;});}return null;};}function removeEntity(_0x250349,_0x576378){return function(_0x143f41){if(_0x143f41){return _0x143f41[_0x2203('0x25')]()[_0x2203('0x24')](function(){var _0x5f11bf=_0x143f41[_0x2203('0x26')]({'plain':!![]});var _0x1cec17='VoicePrefixes';return db[_0x2203('0x27')][_0x2203('0x25')]({'where':{'type':_0x1cec17,'resourceId':_0x5f11bf['id']}})[_0x2203('0x24')](function(){return _0x143f41;});})[_0x2203('0x24')](function(){_0x250349[_0x2203('0x1a')](0xcc)[_0x2203('0x1b')]();});}};}function handleEntityNotFound(_0x9c53f,_0x5a95c1){return function(_0x34b8ba){if(!_0x34b8ba){_0x9c53f[_0x2203('0x19')](0x194);}return _0x34b8ba;};}function handleError(_0x406ce9,_0x74f035){_0x74f035=_0x74f035||0x1f4;return function(_0x52a426){logger[_0x2203('0x28')](_0x52a426[_0x2203('0x29')]);if(_0x52a426[_0x2203('0x2a')]){delete _0x52a426[_0x2203('0x2a')];}_0x406ce9['status'](_0x74f035)[_0x2203('0x2b')](_0x52a426);};}exports[_0x2203('0x2c')]=function(_0x5e6560,_0x5c0157){var _0x1d5f74={},_0x52fafc={},_0x58b44d={'count':0x0,'rows':[]};var _0x125dfc=_[_0x2203('0x2d')](db[_0x2203('0x2e')][_0x2203('0x2f')],function(_0xf2801d){return{'name':_0xf2801d['fieldName'],'type':_0xf2801d[_0x2203('0x30')][_0x2203('0x31')]};});_0x52fafc['model']=_[_0x2203('0x2d')](_0x125dfc,_0x2203('0x2a'));_0x52fafc[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5e6560[_0x2203('0x32')]);_0x52fafc[_0x2203('0x34')]=_[_0x2203('0x35')](_0x52fafc[_0x2203('0x36')],_0x52fafc[_0x2203('0x32')]);_0x1d5f74['attributes']=_[_0x2203('0x35')](_0x52fafc[_0x2203('0x36')],qs['fields'](_0x5e6560['query'][_0x2203('0x37')]));_0x1d5f74['attributes']=_0x1d5f74[_0x2203('0x38')][_0x2203('0x39')]?_0x1d5f74[_0x2203('0x38')]:_0x52fafc['model'];if(!_0x5e6560['query'][_0x2203('0x3a')]('nolimit')){_0x1d5f74[_0x2203('0x1d')]=qs['limit'](_0x5e6560[_0x2203('0x32')]['limit']);_0x1d5f74[_0x2203('0x1c')]=qs[_0x2203('0x1c')](_0x5e6560[_0x2203('0x32')][_0x2203('0x1c')]);}_0x1d5f74[_0x2203('0x3b')]=qs['sort'](_0x5e6560['query']['sort']);_0x1d5f74[_0x2203('0x3c')]=qs[_0x2203('0x34')](_[_0x2203('0x3d')](_0x5e6560[_0x2203('0x32')],_0x52fafc[_0x2203('0x34')]),_0x125dfc);if(_0x5e6560[_0x2203('0x32')][_0x2203('0x3e')]){_0x1d5f74['where']=_[_0x2203('0x3f')](_0x1d5f74[_0x2203('0x3c')],{'$or':_[_0x2203('0x2d')](_0x125dfc,function(_0x26be74){if(_0x26be74['type']!=='VIRTUAL'){var _0x3ddfe0={};_0x3ddfe0[_0x26be74['name']]={'$like':'%'+_0x5e6560[_0x2203('0x32')][_0x2203('0x3e')]+'%'};return _0x3ddfe0;}})});}_0x1d5f74=_[_0x2203('0x3f')]({},_0x1d5f74,_0x5e6560['options']);var _0x5bba52={'where':_0x1d5f74[_0x2203('0x3c')]};return db[_0x2203('0x2e')][_0x2203('0x1e')](_0x5bba52)[_0x2203('0x24')](function(_0x372709){_0x58b44d[_0x2203('0x1e')]=_0x372709;if(_0x5e6560['query'][_0x2203('0x40')]){_0x1d5f74[_0x2203('0x41')]=[{'all':!![]}];}return db[_0x2203('0x2e')][_0x2203('0x42')](_0x1d5f74);})[_0x2203('0x24')](function(_0x36b99f){_0x58b44d[_0x2203('0x43')]=_0x36b99f;return _0x58b44d;})[_0x2203('0x24')](respondWithFilteredResult(_0x5c0157,_0x1d5f74))[_0x2203('0x44')](handleError(_0x5c0157,null));};exports[_0x2203('0x45')]=function(_0x595281,_0x2e2ca5){var _0x24e773={'raw':![],'where':{'id':_0x595281[_0x2203('0x46')]['id']}},_0x4aab80={};_0x4aab80['model']=_['keys'](db[_0x2203('0x2e')]['rawAttributes']);_0x4aab80[_0x2203('0x32')]=_[_0x2203('0x33')](_0x595281[_0x2203('0x32')]);_0x4aab80[_0x2203('0x34')]=_['intersection'](_0x4aab80[_0x2203('0x36')],_0x4aab80[_0x2203('0x32')]);_0x24e773['attributes']=_[_0x2203('0x35')](_0x4aab80[_0x2203('0x36')],qs[_0x2203('0x37')](_0x595281[_0x2203('0x32')]['fields']));_0x24e773['attributes']=_0x24e773[_0x2203('0x38')]['length']?_0x24e773['attributes']:_0x4aab80[_0x2203('0x36')];if(_0x595281[_0x2203('0x32')][_0x2203('0x40')]){_0x24e773['include']=[{'all':!![]}];}_0x24e773=_['merge']({},_0x24e773,_0x595281[_0x2203('0x47')]);return db[_0x2203('0x2e')][_0x2203('0x48')](_0x24e773)[_0x2203('0x24')](handleEntityNotFound(_0x2e2ca5,null))[_0x2203('0x24')](respondWithResult(_0x2e2ca5,null))[_0x2203('0x44')](handleError(_0x2e2ca5,null));};exports['destroy']=function(_0x747dce,_0x557659){return db[_0x2203('0x2e')][_0x2203('0x48')]({'where':{'id':_0x747dce[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x557659,null))['then'](removeEntity(_0x557659,null))['catch'](handleError(_0x557659,null));};exports[_0x2203('0x49')]=function(_0x1f772d,_0x126aad){return db[_0x2203('0x2e')]['describe']()['then'](respondWithResult(_0x126aad,null))['catch'](handleError(_0x126aad,null));};exports[_0x2203('0x4a')]=function(_0x1c2734,_0x57b891){var _0x7f61df;return db[_0x2203('0x4b')]['transaction'](function(_0x32b1db){return db[_0x2203('0x2e')][_0x2203('0x4a')](_0x1c2734[_0x2203('0x4c')],{'transaction':_0x32b1db})['then'](function(_0x120db1){_0x7f61df=_0x120db1['get']({'plain':!![]});return db[_0x2203('0x4d')][_0x2203('0x48')]({'where':{'id':_0x7f61df['VoiceExtensionId']},'raw':!![]})[_0x2203('0x24')](function(_0x8d089e){return createVoicePrefixExtensions(_0x7f61df,_0x8d089e,_0x32b1db);});});})[_0x2203('0x24')](function(){var _0x378132=_0x1c2734[_0x2203('0x4e')][_0x2203('0x26')]({'plain':!![]});if(!_0x378132)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x378132['role']===_0x2203('0x4e')){var _0x524356=_0x7f61df;return db['UserProfileSection'][_0x2203('0x48')]({'where':{'name':_0x2203('0x4f'),'userProfileId':_0x378132[_0x2203('0x50')]},'raw':!![]})['then'](function(_0x213c24){if(_0x213c24&&_0x213c24['autoAssociation']===0x0){return db['UserProfileResource'][_0x2203('0x4a')]({'name':_0x524356['name'],'resourceId':_0x524356['id'],'type':_0x213c24['name'],'sectionId':_0x213c24['id']},{})['then'](function(){return _0x7f61df;});}else{return _0x7f61df;}})[_0x2203('0x44')](function(_0x31256b){logger[_0x2203('0x28')](_0x2203('0x51'),_0x31256b);throw _0x31256b;});}return _0x7f61df;})[_0x2203('0x24')](respondWithResult(_0x57b891,null))[_0x2203('0x44')](handleError(_0x57b891,null));};function Extension(_0x2baea2,_0x91f70c,_0x36b5fb,_0x216641){this[_0x2203('0x52')]=_0x2203('0x53');this['exten']=_0x2baea2;this['app']=_0x36b5fb;this[_0x2203('0x30')]=_0x2203('0x54');this[_0x2203('0x55')]=_0x2203('0x56');this[_0x2203('0x57')]=_0x91f70c;this[_0x2203('0x58')]=_0x216641;}function createVoicePrefixExtensions(_0x4f8b8e,_0x5486f9,_0xb49120){return new BPromise(function(_0x34358e,_0x21ee59){var _0x1e6d21=new Extension(formatPrefixName(_0x4f8b8e[_0x2203('0x59')]),0x1,_0x2203('0x5a'),_0x2203('0x5b'));_0x1e6d21[_0x2203('0x5c')]=_0x4f8b8e['id'];return db[_0x2203('0x4d')][_0x2203('0x4a')](_0x1e6d21,{'transaction':_0xb49120})[_0x2203('0x24')](function(_0x48bed1){var _0x1ea97a=_0x48bed1[_0x2203('0x26')]({'plain':!![]});var _0x3ce9f5=_[_0x2203('0x2d')](addVoicePrefixExtensions(_0x4f8b8e,_0x5486f9),function(_0x41a938){_0x41a938[_0x2203('0x5d')]=_0x1ea97a['id'];_0x41a938[_0x2203('0x5c')]=_0x4f8b8e['id'];return _0x41a938;});return db[_0x2203('0x4d')][_0x2203('0x5e')](_0x3ce9f5,{'transaction':_0xb49120})[_0x2203('0x24')](function(_0x49e795){if(!_0x49e795){return _0x21ee59(_0x2203('0x5f'));}else{return _0x34358e(_0x49e795);}})[_0x2203('0x44')](function(_0x24179a){return _0x21ee59(_0x24179a);});});;});};function addVoicePrefixExtensions(_0xc193b7,_0x34e820){var _0x1e44c=[];var _0x1068bc=formatPrefixName(_0xc193b7[_0x2203('0x59')]);_0x1e44c[_0x2203('0x60')](new Extension(_0x1068bc,0x2,'Set',_0x2203('0x61')+_0xc193b7[_0x2203('0x2a')]));if(_0xc193b7[_0x2203('0x62')]){_0x1e44c['push'](new Extension(_0x1068bc,0x3,_0x2203('0x63'),_0x2203('0x64')+_0xc193b7[_0x2203('0x62')]));}else{_0x1e44c[_0x2203('0x60')](new Extension(_0x1068bc,0x3,_0x2203('0x5a'),'No\x20callerid\x20available'));}_0x1e44c[_0x2203('0x60')](new Extension(_0x1068bc,0x4,_0x2203('0x65'),_0x34e820[_0x2203('0x52')]+','+'${EXTEN:'+(0x8+_0xc193b7['name']['length'])+'}'+','+0x1));return _0x1e44c;}function formatPrefixName(_0x485e5b){var _0x595814='_';for(var _0x418d48=0x0;_0x418d48<_0x485e5b[_0x2203('0x39')];_0x418d48++){if(_0x485e5b[_0x2203('0x66')](_0x418d48)=='-'){_0x595814+=_0x485e5b[_0x2203('0x66')](_0x418d48);}else{_0x595814+='['+_0x485e5b[_0x2203('0x66')](_0x418d48)+']';}}_0x595814+='.';return _0x595814;}exports[_0x2203('0x23')]=function(_0x3f7926,_0x44bea0,_0x56dcbe){var _0x500860=_0x3f7926[_0x2203('0x4c')];_0x500860[_0x2203('0x59')]=_0x2203('0x67')+_0x500860[_0x2203('0x2a')]+'-';return db[_0x2203('0x4b')][_0x2203('0x68')](function(_0x45cc3a){return db[_0x2203('0x2e')][_0x2203('0x23')](_0x500860,{'where':{'id':_0x500860['id']},'transaction':_0x45cc3a})[_0x2203('0x24')](function(){return db[_0x2203('0x4d')][_0x2203('0x25')]({'where':{'VoicePrefixId':_0x500860['id']},'transaction':_0x45cc3a})[_0x2203('0x24')](function(){return db[_0x2203('0x4d')][_0x2203('0x48')]({'where':{'id':_0x500860[_0x2203('0x5d')]},'raw':!![]})[_0x2203('0x24')](function(_0x173ac1){return createVoicePrefixExtensions(_0x500860,_0x173ac1,_0x45cc3a);});});});})[_0x2203('0x24')](function(){return db['VoicePrefix'][_0x2203('0x69')](_0x500860['id']);})['then'](respondWithResult(_0x44bea0,null))[_0x2203('0x44')](handleError(_0x44bea0,null));};exports['addAgents']=function(_0x5ba500,_0xf71e7e,_0x269649){return db[_0x2203('0x2e')][_0x2203('0x48')]({'where':{'id':_0x5ba500[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0xf71e7e,null))[_0x2203('0x24')](function(_0x4e9a01){if(_0x4e9a01){return _0x4e9a01['addAgents'](_0x5ba500[_0x2203('0x4c')][_0x2203('0x6a')],_[_0x2203('0x6b')](_0x5ba500['body'],['ids','id'])||{})['spread'](function(_0xdff006){for(var _0x2d26ba=0x0;_0x2d26ba<_0x5ba500[_0x2203('0x4c')][_0x2203('0x6a')]['length'];_0x2d26ba+=0x1){socket[_0x2203('0x6c')]('userVoicePrefix:save',{'UserId':Number(_0x5ba500[_0x2203('0x4c')][_0x2203('0x6a')][_0x2d26ba]),'VoicePrefixId':Number(_0x5ba500[_0x2203('0x46')]['id'])});}return _0xdff006;});}})[_0x2203('0x24')](respondWithResult(_0xf71e7e,null))[_0x2203('0x44')](handleError(_0xf71e7e,null));};exports['removeAgents']=function(_0x4592fa,_0x247f26,_0x18663f){return db['VoicePrefix'][_0x2203('0x48')]({'where':{'id':_0x4592fa[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x247f26,null))[_0x2203('0x24')](function(_0x1c65f9){if(_0x1c65f9){return _0x1c65f9[_0x2203('0x6d')](_0x4592fa[_0x2203('0x32')][_0x2203('0x6a')])[_0x2203('0x24')](function(){if(_[_0x2203('0x6e')](_0x4592fa[_0x2203('0x32')]['ids'])){for(var _0x1adfa6=0x0;_0x1adfa6<_0x4592fa[_0x2203('0x32')][_0x2203('0x6a')][_0x2203('0x39')];_0x1adfa6+=0x1){socket[_0x2203('0x6c')](_0x2203('0x6f'),{'UserId':Number(_0x4592fa[_0x2203('0x32')][_0x2203('0x6a')][_0x1adfa6]),'VoicePrefixId':Number(_0x4592fa[_0x2203('0x46')]['id'])});}}else{socket[_0x2203('0x6c')](_0x2203('0x6f'),{'UserId':Number(_0x4592fa[_0x2203('0x32')]['ids']),'VoicePrefixId':Number(_0x4592fa['params']['id'])});}});}})[_0x2203('0x24')](respondWithStatusCode(_0x247f26,null))[_0x2203('0x44')](handleError(_0x247f26,null));};exports[_0x2203('0x70')]=function(_0xb6863b,_0x42dce6,_0x4fd029){var _0x16e518={};var _0x3cb792={};var _0x4e539b;var _0x511689;return db['VoicePrefix']['findOne']({'where':{'id':_0xb6863b['params']['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x42dce6,null))[_0x2203('0x24')](function(_0x437095){if(_0x437095){_0x4e539b=_0x437095;_0x3cb792['model']=_['keys'](db['User'][_0x2203('0x2f')]);_0x3cb792[_0x2203('0x32')]=_[_0x2203('0x33')](_0xb6863b[_0x2203('0x32')]);_0x3cb792[_0x2203('0x34')]=_[_0x2203('0x35')](_0x3cb792[_0x2203('0x36')],_0x3cb792['query']);_0x16e518[_0x2203('0x38')]=_[_0x2203('0x35')](_0x3cb792[_0x2203('0x36')],qs[_0x2203('0x37')](_0xb6863b[_0x2203('0x32')][_0x2203('0x37')]));_0x16e518[_0x2203('0x38')]=_0x16e518['attributes'][_0x2203('0x39')]?_0x16e518['attributes']:_0x3cb792['model'];_0x16e518[_0x2203('0x3b')]=qs['sort'](_0xb6863b[_0x2203('0x32')][_0x2203('0x71')]);_0x16e518['where']=qs[_0x2203('0x34')](_[_0x2203('0x3d')](_0xb6863b[_0x2203('0x32')],_0x3cb792[_0x2203('0x34')]));if(_0xb6863b[_0x2203('0x32')][_0x2203('0x3e')]){_0x16e518['where']=_[_0x2203('0x3f')](_0x16e518[_0x2203('0x3c')],{'$or':_['map'](_0x16e518['attributes'],function(_0x377176){var _0x3fe71b={};_0x3fe71b[_0x377176]={'$like':'%'+_0xb6863b[_0x2203('0x32')][_0x2203('0x3e')]+'%'};return _0x3fe71b;})});}_0x16e518=_[_0x2203('0x3f')]({},_0x16e518,_0xb6863b[_0x2203('0x47')]);return _0x4e539b[_0x2203('0x70')](_0x16e518);}})[_0x2203('0x24')](function(_0x4749df){if(_0x4749df){_0x511689=_0x4749df[_0x2203('0x39')];if(!_0xb6863b[_0x2203('0x32')][_0x2203('0x3a')](_0x2203('0x72'))){_0x16e518[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0xb6863b[_0x2203('0x32')]['limit']);_0x16e518['offset']=qs[_0x2203('0x1c')](_0xb6863b[_0x2203('0x32')]['offset']);}return _0x4e539b[_0x2203('0x70')](_0x16e518);}})[_0x2203('0x24')](function(_0x5b5e95){if(_0x5b5e95){return _0x5b5e95?{'count':_0x511689,'rows':_0x5b5e95}:null;}})[_0x2203('0x24')](respondWithResult(_0x42dce6,null))[_0x2203('0x44')](handleError(_0x42dce6,null));};exports['getTeams']=function(_0x21f357,_0x10c65a,_0x541639){var _0x318f3f={};var _0x1c4b57={};var _0x3cfe3f;var _0x1596f7;return db['VoicePrefix']['findOne']({'where':{'id':_0x21f357[_0x2203('0x46')]['id']}})[_0x2203('0x24')](handleEntityNotFound(_0x10c65a,null))[_0x2203('0x24')](function(_0x4ff77f){if(_0x4ff77f){_0x3cfe3f=_0x4ff77f;_0x1c4b57['model']=_[_0x2203('0x33')](db[_0x2203('0x73')][_0x2203('0x2f')]);_0x1c4b57['query']=_['keys'](_0x21f357[_0x2203('0x32')]);_0x1c4b57[_0x2203('0x34')]=_['intersection'](_0x1c4b57[_0x2203('0x36')],_0x1c4b57[_0x2203('0x32')]);_0x318f3f['attributes']=_[_0x2203('0x35')](_0x1c4b57['model'],qs[_0x2203('0x37')](_0x21f357['query']['fields']));_0x318f3f['attributes']=_0x318f3f[_0x2203('0x38')][_0x2203('0x39')]?_0x318f3f['attributes']:_0x1c4b57[_0x2203('0x36')];_0x318f3f[_0x2203('0x3b')]=qs[_0x2203('0x71')](_0x21f357['query'][_0x2203('0x71')]);_0x318f3f['where']=qs[_0x2203('0x34')](_[_0x2203('0x3d')](_0x21f357['query'],_0x1c4b57[_0x2203('0x34')]));if(_0x21f357[_0x2203('0x32')]['filter']){_0x318f3f[_0x2203('0x3c')]=_[_0x2203('0x3f')](_0x318f3f[_0x2203('0x3c')],{'$or':_[_0x2203('0x2d')](_0x318f3f[_0x2203('0x38')],function(_0x5d73a7){var _0x2ba7d3={};_0x2ba7d3[_0x5d73a7]={'$like':'%'+_0x21f357[_0x2203('0x32')][_0x2203('0x3e')]+'%'};return _0x2ba7d3;})});}_0x318f3f=_[_0x2203('0x3f')]({},_0x318f3f,_0x21f357[_0x2203('0x47')]);return _0x3cfe3f[_0x2203('0x74')](_0x318f3f);}})['then'](function(_0x29b41b){if(_0x29b41b){_0x1596f7=_0x29b41b[_0x2203('0x39')];if(!_0x21f357['query'][_0x2203('0x3a')]('nolimit')){_0x318f3f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x21f357[_0x2203('0x32')]['limit']);_0x318f3f[_0x2203('0x1c')]=qs[_0x2203('0x1c')](_0x21f357[_0x2203('0x32')][_0x2203('0x1c')]);}return _0x3cfe3f[_0x2203('0x74')](_0x318f3f);}})[_0x2203('0x24')](function(_0x1ccf09){if(_0x1ccf09){return _0x1ccf09?{'count':_0x1596f7,'rows':_0x1ccf09}:null;}})['then'](respondWithResult(_0x10c65a,null))['catch'](handleError(_0x10c65a,null));};exports[_0x2203('0x75')]=function(_0x41eb4c,_0x25996c,_0x4e1f55){var _0x2188d4=_0x41eb4c[_0x2203('0x4c')][_0x2203('0x6a')];var _0x500604;return db[_0x2203('0x73')][_0x2203('0x42')]({'where':{'id':_0x2188d4},'attributes':['id'],'include':[{'model':db['User'],'as':_0x2203('0x76'),'attributes':['id','name',_0x2203('0x77'),_0x2203('0x78'),'interface'],'raw':!![]}]})[_0x2203('0x24')](function(_0x9586e1){if(_0x9586e1){_0x500604=_0x9586e1;var _0x266d7e=_[_0x2203('0x79')](_0x9586e1,function(_0x34a160){var _0x36ab7f=_0x34a160[_0x2203('0x26')]({'plain':!![]});return _0x36ab7f[_0x2203('0x76')];});return db[_0x2203('0x2e')][_0x2203('0x48')]({'where':{'id':_0x41eb4c[_0x2203('0x46')]['id']}})[_0x2203('0x24')](function(_0x4e7ba1){return db[_0x2203('0x4b')]['transaction'](function(_0x114e07){return _0x4e7ba1[_0x2203('0x75')](_0x2188d4,{'transaction':_0x114e07})[_0x2203('0x24')](function(){return BPromise[_0x2203('0x7a')](_0x500604,function(_0x145a72){return db[_0x2203('0x7b')][_0x2203('0x7c')]({'TeamId':_0x145a72['id'],'VoicePrefixId':_0x41eb4c[_0x2203('0x46')]['id']},{'transaction':_0x114e07});});})[_0x2203('0x24')](function(){return BPromise[_0x2203('0x7a')](_0x266d7e,function(_0x62843c){return db['UserVoicePrefix'][_0x2203('0x7d')]({'where':{'UserId':_0x62843c['id'],'VoicePrefixId':_0x41eb4c['params']['id']},'transaction':_0x114e07});});})[_0x2203('0x24')](function(){_0x266d7e[_0x2203('0x7e')](function(_0x6b8ea4){socket['emit'](_0x2203('0x7f'),{'UserId':_0x6b8ea4['id'],'VoicePrefixId':_0x4e7ba1['id']});});});});});}})[_0x2203('0x24')](respondWithStatusCode(_0x25996c,null))[_0x2203('0x44')](handleError(_0x25996c,null));};exports[_0x2203('0x80')]=function(_0x4316ae,_0x5c1138,_0x389f7f){return db['Team'][_0x2203('0x42')]({'where':{'id':_0x4316ae[_0x2203('0x32')]['ids']},'attributes':['id'],'include':[{'model':db[_0x2203('0x81')],'as':_0x2203('0x76'),'attributes':['id'],'raw':!![]}]})[_0x2203('0x24')](handleEntityNotFound(_0x5c1138,null))[_0x2203('0x24')](function(_0x56c2cb){var _0x12179d=_['map'](_0x56c2cb,'id');var _0x55e083=[];var _0x4055eb=[];var _0x95b45a=squel[_0x2203('0x82')]();_0x95b45a[_0x2203('0x83')](_0x2203('0x84'))[_0x2203('0x85')](_0x2203('0x86'),'tq')['join'](_0x2203('0x87'),'ut',_0x2203('0x88'))[_0x2203('0x3c')]('VoicePrefixId\x20=\x20?',_0x4316ae['params']['id']);for(var _0x4d6ece=0x0;_0x4d6ece<_0x56c2cb[_0x2203('0x39')];_0x4d6ece+=0x1){let _0x46b5e6=_0x56c2cb[_0x4d6ece];for(var _0x3dba31=0x0;_0x3dba31<_0x46b5e6[_0x2203('0x76')]['length'];_0x3dba31+=0x1){let _0x238e6f=_0x46b5e6[_0x2203('0x76')][_0x3dba31];var _0x46146e=_0x95b45a[_0x2203('0x89')]();_0x46146e['where']('ut.UserId\x20=\x20?',_0x238e6f['id']);_0x4055eb[_0x2203('0x60')](db[_0x2203('0x4b')][_0x2203('0x32')](_0x46146e['toString'](),{'type':db[_0x2203('0x4b')][_0x2203('0x8a')][_0x2203('0x8b')]})[_0x2203('0x24')](function(_0x263130){if(_0x263130[_0x2203('0x39')]===0x1){return _0x238e6f['id'];}else{var _0xbee79c=_['every'](_[_0x2203('0x2d')](_0x263130,_0x2203('0x8c')),function(_0x131332){return _[_0x2203('0x8d')](_0x12179d,_0x131332);});if(_0xbee79c){return _0x238e6f['id'];}}}));}}return BPromise[_0x2203('0x8e')](_0x4055eb)[_0x2203('0x24')](function(_0x2d9004){_0x55e083=_(_0x55e083)[_0x2203('0x8f')](_0x2d9004)[_0x2203('0x90')]()['value']();return db[_0x2203('0x2e')][_0x2203('0x48')]({'where':{'id':_0x4316ae[_0x2203('0x46')]['id']}})[_0x2203('0x24')](function(_0x547eb9){return db[_0x2203('0x4b')][_0x2203('0x68')](function(_0x1022ef){return _0x547eb9[_0x2203('0x80')](_0x4316ae[_0x2203('0x32')][_0x2203('0x6a')],{'transaction':_0x1022ef})[_0x2203('0x24')](function(){if(!_[_0x2203('0x91')](_0x55e083)){return _0x547eb9[_0x2203('0x6d')](_0x55e083,{'transaction':_0x1022ef});}})['then'](function(){_0x55e083['forEach'](function(_0x225ea1){socket[_0x2203('0x6c')](_0x2203('0x6f'),{'UserId':_0x225ea1,'VoicePrefixId':_0x547eb9['id']});});});});});});})[_0x2203('0x24')](respondWithStatusCode(_0x5c1138,null))['catch'](handleError(_0x5c1138,null));};
\ No newline at end of file
+var _0x7880=['userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','order','pick','nolimit','getTeams','Team','online','voicePause','flatMap','Agents','addTeams','each','upsert','UserVoicePrefix','findOrCreate','forEach','field','tq.TeamId','from','team_has_voice_prefixes','user_has_teams','clone','ut.UserId\x20=\x20?','QueryTypes','all','union','value','removeTeams','isEmpty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','limit','set','apply','destroy','then','get','VoicePrefixes','UserProfileResource','error','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','count','findAll','rows','catch','show','params','keys','fields','includeAll','include','find','describe','create','sequelize','transaction','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','PREFIX-CALLERIDALL=','callerIdAll','${EXTEN:','charAt','update','body','system-','findById','addAgents','ids','omit','spread','emit'];(function(_0x1f16a6,_0x924e55){var _0x379023=function(_0xc2df77){while(--_0xc2df77){_0x1f16a6['push'](_0x1f16a6['shift']());}};_0x379023(++_0x924e55);}(_0x7880,0x1f4));var _0x0788=function(_0x2474ac,_0x335d3a){_0x2474ac=_0x2474ac-0x0;var _0x384a8f=_0x7880[_0x2474ac];return _0x384a8f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var hardwareService=require(_0x0788('0x14'));var logger=require(_0x0788('0x15'))('api');var utils=require(_0x0788('0x16'));var config=require(_0x0788('0x17'));var licenseUtil=require(_0x0788('0x18'));var db=require(_0x0788('0x19'))['db'];config[_0x0788('0x1a')]=_[_0x0788('0x1b')](config[_0x0788('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x0788('0x1c'))(new Redis(config[_0x0788('0x1a')]));require(_0x0788('0x1d'))[_0x0788('0x1e')](socket);function respondWithStatusCode(_0x51e5d3,_0x43ca01){_0x43ca01=_0x43ca01||0xcc;return function(_0x4ed024){if(_0x4ed024){return _0x51e5d3[_0x0788('0x1f')](_0x43ca01);}return _0x51e5d3[_0x0788('0x20')](_0x43ca01)[_0x0788('0x21')]();};}function respondWithResult(_0xb406fb,_0x2ddd1a){_0x2ddd1a=_0x2ddd1a||0xc8;return function(_0x430e34){if(_0x430e34){return _0xb406fb['status'](_0x2ddd1a)['json'](_0x430e34);}};}function respondWithFilteredResult(_0x17d805,_0x461d9d){return function(_0x5b2bdc){if(_0x5b2bdc){var _0x654e4b=typeof _0x461d9d[_0x0788('0x22')]===_0x0788('0x23')&&typeof _0x461d9d['limit']===_0x0788('0x23');var _0x3fb723=_0x5b2bdc['count'];var _0x11ea01=_0x654e4b?0x0:_0x461d9d['offset'];var _0x7d0869=_0x654e4b?_0x5b2bdc['count']:_0x461d9d[_0x0788('0x22')]+_0x461d9d[_0x0788('0x24')];var _0x18ff22;if(_0x7d0869>=_0x3fb723){_0x7d0869=_0x3fb723;_0x18ff22=0xc8;}else{_0x18ff22=0xce;}_0x17d805[_0x0788('0x20')](_0x18ff22);return _0x17d805[_0x0788('0x25')]('Content-Range',_0x11ea01+'-'+_0x7d0869+'/'+_0x3fb723)['json'](_0x5b2bdc);}return null;};}function patchUpdates(_0x2270d4){return function(_0x2a1460){try{jsonpatch[_0x0788('0x26')](_0x2a1460,_0x2270d4,!![]);}catch(_0x7a99a1){return BPromise['reject'](_0x7a99a1);}return _0x2a1460['save']();};}function saveUpdates(_0x79204e,_0x18cc33){return function(_0x40309d){if(_0x40309d){return _0x40309d['update'](_0x79204e)['then'](function(_0x240459){return _0x240459;});}return null;};}function removeEntity(_0xa1f7dc,_0x5f2dda){return function(_0x48816a){if(_0x48816a){return _0x48816a[_0x0788('0x27')]()[_0x0788('0x28')](function(){var _0x57fda1=_0x48816a[_0x0788('0x29')]({'plain':!![]});var _0x40e7a6=_0x0788('0x2a');return db[_0x0788('0x2b')][_0x0788('0x27')]({'where':{'type':_0x40e7a6,'resourceId':_0x57fda1['id']}})[_0x0788('0x28')](function(){return _0x48816a;});})[_0x0788('0x28')](function(){_0xa1f7dc[_0x0788('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a5178,_0x3c5246){return function(_0x40d345){if(!_0x40d345){_0x5a5178['sendStatus'](0x194);}return _0x40d345;};}function handleError(_0x4aa48b,_0x2e2ca8){_0x2e2ca8=_0x2e2ca8||0x1f4;return function(_0x68658a){logger[_0x0788('0x2c')](_0x68658a[_0x0788('0x2d')]);if(_0x68658a[_0x0788('0x2e')]){delete _0x68658a[_0x0788('0x2e')];}_0x4aa48b[_0x0788('0x20')](_0x2e2ca8)[_0x0788('0x2f')](_0x68658a);};}exports[_0x0788('0x30')]=function(_0x85e579,_0x5ec0ed){var _0x2a08b7={},_0x1aab6a={},_0x2db509={'count':0x0,'rows':[]};var _0x2a64e4=_[_0x0788('0x31')](db[_0x0788('0x32')][_0x0788('0x33')],function(_0x15d67a){return{'name':_0x15d67a[_0x0788('0x34')],'type':_0x15d67a[_0x0788('0x35')]['key']};});_0x1aab6a['model']=_['map'](_0x2a64e4,'name');_0x1aab6a['query']=_['keys'](_0x85e579[_0x0788('0x36')]);_0x1aab6a[_0x0788('0x37')]=_[_0x0788('0x38')](_0x1aab6a['model'],_0x1aab6a[_0x0788('0x36')]);_0x2a08b7[_0x0788('0x39')]=_[_0x0788('0x38')](_0x1aab6a[_0x0788('0x3a')],qs['fields'](_0x85e579[_0x0788('0x36')]['fields']));_0x2a08b7[_0x0788('0x39')]=_0x2a08b7['attributes'][_0x0788('0x3b')]?_0x2a08b7[_0x0788('0x39')]:_0x1aab6a['model'];if(!_0x85e579[_0x0788('0x36')][_0x0788('0x3c')]('nolimit')){_0x2a08b7[_0x0788('0x24')]=qs['limit'](_0x85e579[_0x0788('0x36')]['limit']);_0x2a08b7[_0x0788('0x22')]=qs['offset'](_0x85e579[_0x0788('0x36')]['offset']);}_0x2a08b7['order']=qs[_0x0788('0x3d')](_0x85e579[_0x0788('0x36')][_0x0788('0x3d')]);_0x2a08b7[_0x0788('0x3e')]=qs[_0x0788('0x37')](_['pick'](_0x85e579['query'],_0x1aab6a['filters']),_0x2a64e4);if(_0x85e579['query'][_0x0788('0x3f')]){_0x2a08b7[_0x0788('0x3e')]=_[_0x0788('0x40')](_0x2a08b7[_0x0788('0x3e')],{'$or':_[_0x0788('0x31')](_0x2a64e4,function(_0x5993ad){if(_0x5993ad['type']!==_0x0788('0x41')){var _0x6770a8={};_0x6770a8[_0x5993ad[_0x0788('0x2e')]]={'$like':'%'+_0x85e579[_0x0788('0x36')][_0x0788('0x3f')]+'%'};return _0x6770a8;}})});}_0x2a08b7=_[_0x0788('0x40')]({},_0x2a08b7,_0x85e579[_0x0788('0x42')]);var _0x38ca94={'where':_0x2a08b7[_0x0788('0x3e')]};return db['VoicePrefix']['count'](_0x38ca94)[_0x0788('0x28')](function(_0x1d579d){_0x2db509[_0x0788('0x43')]=_0x1d579d;if(_0x85e579['query']['includeAll']){_0x2a08b7['include']=[{'all':!![]}];}return db[_0x0788('0x32')][_0x0788('0x44')](_0x2a08b7);})[_0x0788('0x28')](function(_0x189d33){_0x2db509[_0x0788('0x45')]=_0x189d33;return _0x2db509;})[_0x0788('0x28')](respondWithFilteredResult(_0x5ec0ed,_0x2a08b7))[_0x0788('0x46')](handleError(_0x5ec0ed,null));};exports[_0x0788('0x47')]=function(_0x4bd0d9,_0x15c618){var _0x19d111={'raw':![],'where':{'id':_0x4bd0d9[_0x0788('0x48')]['id']}},_0x4281ef={};_0x4281ef['model']=_[_0x0788('0x49')](db[_0x0788('0x32')]['rawAttributes']);_0x4281ef['query']=_['keys'](_0x4bd0d9[_0x0788('0x36')]);_0x4281ef['filters']=_[_0x0788('0x38')](_0x4281ef[_0x0788('0x3a')],_0x4281ef[_0x0788('0x36')]);_0x19d111[_0x0788('0x39')]=_[_0x0788('0x38')](_0x4281ef[_0x0788('0x3a')],qs[_0x0788('0x4a')](_0x4bd0d9[_0x0788('0x36')]['fields']));_0x19d111['attributes']=_0x19d111[_0x0788('0x39')][_0x0788('0x3b')]?_0x19d111[_0x0788('0x39')]:_0x4281ef['model'];if(_0x4bd0d9[_0x0788('0x36')][_0x0788('0x4b')]){_0x19d111[_0x0788('0x4c')]=[{'all':!![]}];}_0x19d111=_[_0x0788('0x40')]({},_0x19d111,_0x4bd0d9[_0x0788('0x42')]);return db['VoicePrefix']['find'](_0x19d111)[_0x0788('0x28')](handleEntityNotFound(_0x15c618,null))[_0x0788('0x28')](respondWithResult(_0x15c618,null))['catch'](handleError(_0x15c618,null));};exports[_0x0788('0x27')]=function(_0x4a6cde,_0x2103aa){return db[_0x0788('0x32')][_0x0788('0x4d')]({'where':{'id':_0x4a6cde[_0x0788('0x48')]['id']}})[_0x0788('0x28')](handleEntityNotFound(_0x2103aa,null))[_0x0788('0x28')](removeEntity(_0x2103aa,null))[_0x0788('0x46')](handleError(_0x2103aa,null));};exports[_0x0788('0x4e')]=function(_0x5f3bda,_0x179c6e){return db[_0x0788('0x32')][_0x0788('0x4e')]()['then'](respondWithResult(_0x179c6e,null))[_0x0788('0x46')](handleError(_0x179c6e,null));};exports[_0x0788('0x4f')]=function(_0x59f00e,_0x18e55e){var _0x41110d;return db[_0x0788('0x50')][_0x0788('0x51')](function(_0x137e24){return db[_0x0788('0x32')]['create'](_0x59f00e['body'],{'transaction':_0x137e24})[_0x0788('0x28')](function(_0x36304b){_0x41110d=_0x36304b['get']({'plain':!![]});return db[_0x0788('0x52')][_0x0788('0x4d')]({'where':{'id':_0x41110d[_0x0788('0x53')]},'raw':!![]})[_0x0788('0x28')](function(_0xf543a8){return createVoicePrefixExtensions(_0x41110d,_0xf543a8,_0x137e24);});});})[_0x0788('0x28')](function(){var _0x112870=_0x59f00e[_0x0788('0x54')][_0x0788('0x29')]({'plain':!![]});if(!_0x112870)throw new Error(_0x0788('0x55'));if(_0x112870[_0x0788('0x56')]===_0x0788('0x54')){var _0x55481c=_0x41110d;return db[_0x0788('0x57')][_0x0788('0x4d')]({'where':{'name':_0x0788('0x2a'),'userProfileId':_0x112870['userProfileId']},'raw':!![]})[_0x0788('0x28')](function(_0x329d44){if(_0x329d44&&_0x329d44['autoAssociation']===0x0){return db['UserProfileResource'][_0x0788('0x4f')]({'name':_0x55481c[_0x0788('0x2e')],'resourceId':_0x55481c['id'],'type':_0x329d44[_0x0788('0x2e')],'sectionId':_0x329d44['id']},{})[_0x0788('0x28')](function(){return _0x41110d;});}else{return _0x41110d;}})[_0x0788('0x46')](function(_0x4c08f9){logger['error'](_0x0788('0x58'),_0x4c08f9);throw _0x4c08f9;});}return _0x41110d;})[_0x0788('0x28')](respondWithResult(_0x18e55e,null))[_0x0788('0x46')](handleError(_0x18e55e,null));};function Extension(_0x47be71,_0x533f71,_0x3a25d3,_0x5419d9){this[_0x0788('0x59')]=_0x0788('0x5a');this[_0x0788('0x5b')]=_0x47be71;this[_0x0788('0x5c')]=_0x3a25d3;this[_0x0788('0x35')]=_0x0788('0x5d');this[_0x0788('0x5e')]=_0x0788('0x5f');this[_0x0788('0x60')]=_0x533f71;this[_0x0788('0x61')]=_0x5419d9;}function createVoicePrefixExtensions(_0x59fcbc,_0xe1a934,_0x446170){return new BPromise(function(_0x602e3b,_0x2822aa){var _0x582fed=new Extension(formatPrefixName(_0x59fcbc[_0x0788('0x62')]),0x1,_0x0788('0x63'),_0x0788('0x64'));_0x582fed[_0x0788('0x65')]=_0x59fcbc['id'];return db[_0x0788('0x52')]['create'](_0x582fed,{'transaction':_0x446170})[_0x0788('0x28')](function(_0x4aa3af){var _0x439224=_0x4aa3af[_0x0788('0x29')]({'plain':!![]});var _0x184b66=_[_0x0788('0x31')](addVoicePrefixExtensions(_0x59fcbc,_0xe1a934),function(_0x3baf23){_0x3baf23[_0x0788('0x53')]=_0x439224['id'];_0x3baf23[_0x0788('0x65')]=_0x59fcbc['id'];return _0x3baf23;});return db[_0x0788('0x52')][_0x0788('0x66')](_0x184b66,{'transaction':_0x446170})['then'](function(_0x25201f){if(!_0x25201f){return _0x2822aa(_0x0788('0x67'));}else{return _0x602e3b(_0x25201f);}})[_0x0788('0x46')](function(_0x59a436){return _0x2822aa(_0x59a436);});});;});};function addVoicePrefixExtensions(_0x50eeae,_0x6d255b){var _0x1bb234=[];var _0x31ed44=formatPrefixName(_0x50eeae['prefix']);_0x1bb234[_0x0788('0x68')](new Extension(_0x31ed44,0x2,_0x0788('0x69'),_0x0788('0x6a')+_0x50eeae[_0x0788('0x2e')]));if(_0x50eeae['callerIdAll']){_0x1bb234['push'](new Extension(_0x31ed44,0x3,'Set',_0x0788('0x6b')+_0x50eeae[_0x0788('0x6c')]));}else{_0x1bb234[_0x0788('0x68')](new Extension(_0x31ed44,0x3,'NoOp','No\x20callerid\x20available'));}_0x1bb234[_0x0788('0x68')](new Extension(_0x31ed44,0x4,'goto',_0x6d255b[_0x0788('0x59')]+','+_0x0788('0x6d')+(0x8+_0x50eeae[_0x0788('0x2e')][_0x0788('0x3b')])+'}'+','+0x1));return _0x1bb234;}function formatPrefixName(_0x1834fb){var _0x345755='_';for(var _0x20b01a=0x0;_0x20b01a<_0x1834fb[_0x0788('0x3b')];_0x20b01a++){if(_0x1834fb[_0x0788('0x6e')](_0x20b01a)=='-'){_0x345755+=_0x1834fb[_0x0788('0x6e')](_0x20b01a);}else{_0x345755+='['+_0x1834fb['charAt'](_0x20b01a)+']';}}_0x345755+='.';return _0x345755;}exports[_0x0788('0x6f')]=function(_0x30248c,_0x52926f,_0x5ab357){var _0x3b053e=_0x30248c[_0x0788('0x70')];_0x3b053e[_0x0788('0x62')]=_0x0788('0x71')+_0x3b053e[_0x0788('0x2e')]+'-';return db[_0x0788('0x50')]['transaction'](function(_0x384401){return db[_0x0788('0x32')][_0x0788('0x6f')](_0x3b053e,{'where':{'id':_0x3b053e['id']},'transaction':_0x384401})[_0x0788('0x28')](function(){return db['VoiceExtension'][_0x0788('0x27')]({'where':{'VoicePrefixId':_0x3b053e['id']},'transaction':_0x384401})[_0x0788('0x28')](function(){return db[_0x0788('0x52')][_0x0788('0x4d')]({'where':{'id':_0x3b053e['VoiceExtensionId']},'raw':!![]})['then'](function(_0x7e11f){return createVoicePrefixExtensions(_0x3b053e,_0x7e11f,_0x384401);});});});})[_0x0788('0x28')](function(){return db[_0x0788('0x32')][_0x0788('0x72')](_0x3b053e['id']);})[_0x0788('0x28')](respondWithResult(_0x52926f,null))[_0x0788('0x46')](handleError(_0x52926f,null));};exports[_0x0788('0x73')]=function(_0x31b806,_0x1bd4ec,_0x4e6c4f){return db[_0x0788('0x32')][_0x0788('0x4d')]({'where':{'id':_0x31b806[_0x0788('0x48')]['id']}})['then'](handleEntityNotFound(_0x1bd4ec,null))['then'](function(_0x14fc12){if(_0x14fc12){return _0x14fc12['addAgents'](_0x31b806[_0x0788('0x70')][_0x0788('0x74')],_[_0x0788('0x75')](_0x31b806[_0x0788('0x70')],[_0x0788('0x74'),'id'])||{})[_0x0788('0x76')](function(_0xb944){for(var _0x216ea9=0x0;_0x216ea9<_0x31b806[_0x0788('0x70')]['ids'][_0x0788('0x3b')];_0x216ea9+=0x1){socket[_0x0788('0x77')](_0x0788('0x78'),{'UserId':Number(_0x31b806['body'][_0x0788('0x74')][_0x216ea9]),'VoicePrefixId':Number(_0x31b806[_0x0788('0x48')]['id'])});}return _0xb944;});}})[_0x0788('0x28')](respondWithResult(_0x1bd4ec,null))['catch'](handleError(_0x1bd4ec,null));};exports[_0x0788('0x79')]=function(_0x4486ee,_0x9b98bf,_0x33a2fb){return db[_0x0788('0x32')][_0x0788('0x4d')]({'where':{'id':_0x4486ee[_0x0788('0x48')]['id']}})[_0x0788('0x28')](handleEntityNotFound(_0x9b98bf,null))[_0x0788('0x28')](function(_0x5d8ddb){if(_0x5d8ddb){return _0x5d8ddb[_0x0788('0x79')](_0x4486ee[_0x0788('0x36')][_0x0788('0x74')])[_0x0788('0x28')](function(){if(_[_0x0788('0x7a')](_0x4486ee['query'][_0x0788('0x74')])){for(var _0x358048=0x0;_0x358048<_0x4486ee[_0x0788('0x36')]['ids'][_0x0788('0x3b')];_0x358048+=0x1){socket[_0x0788('0x77')](_0x0788('0x7b'),{'UserId':Number(_0x4486ee[_0x0788('0x36')][_0x0788('0x74')][_0x358048]),'VoicePrefixId':Number(_0x4486ee['params']['id'])});}}else{socket[_0x0788('0x77')](_0x0788('0x7b'),{'UserId':Number(_0x4486ee['query'][_0x0788('0x74')]),'VoicePrefixId':Number(_0x4486ee[_0x0788('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x9b98bf,null))[_0x0788('0x46')](handleError(_0x9b98bf,null));};exports[_0x0788('0x7c')]=function(_0x9a0ef,_0x5c2d95,_0x28ad96){var _0x42c537={};var _0xbb5b1d={};var _0x53730a;var _0xddfb97;return db[_0x0788('0x32')][_0x0788('0x7d')]({'where':{'id':_0x9a0ef[_0x0788('0x48')]['id']}})[_0x0788('0x28')](handleEntityNotFound(_0x5c2d95,null))[_0x0788('0x28')](function(_0x2545a7){if(_0x2545a7){_0x53730a=_0x2545a7;_0xbb5b1d[_0x0788('0x3a')]=_['keys'](db[_0x0788('0x7e')][_0x0788('0x33')]);_0xbb5b1d[_0x0788('0x36')]=_[_0x0788('0x49')](_0x9a0ef['query']);_0xbb5b1d['filters']=_[_0x0788('0x38')](_0xbb5b1d[_0x0788('0x3a')],_0xbb5b1d['query']);_0x42c537[_0x0788('0x39')]=_[_0x0788('0x38')](_0xbb5b1d[_0x0788('0x3a')],qs['fields'](_0x9a0ef['query'][_0x0788('0x4a')]));_0x42c537[_0x0788('0x39')]=_0x42c537['attributes']['length']?_0x42c537['attributes']:_0xbb5b1d[_0x0788('0x3a')];_0x42c537[_0x0788('0x7f')]=qs['sort'](_0x9a0ef[_0x0788('0x36')][_0x0788('0x3d')]);_0x42c537[_0x0788('0x3e')]=qs[_0x0788('0x37')](_[_0x0788('0x80')](_0x9a0ef['query'],_0xbb5b1d[_0x0788('0x37')]));if(_0x9a0ef['query'][_0x0788('0x3f')]){_0x42c537['where']=_[_0x0788('0x40')](_0x42c537[_0x0788('0x3e')],{'$or':_[_0x0788('0x31')](_0x42c537[_0x0788('0x39')],function(_0x13f796){var _0x2238f6={};_0x2238f6[_0x13f796]={'$like':'%'+_0x9a0ef[_0x0788('0x36')][_0x0788('0x3f')]+'%'};return _0x2238f6;})});}_0x42c537=_[_0x0788('0x40')]({},_0x42c537,_0x9a0ef[_0x0788('0x42')]);return _0x53730a[_0x0788('0x7c')](_0x42c537);}})[_0x0788('0x28')](function(_0x1d0cb5){if(_0x1d0cb5){_0xddfb97=_0x1d0cb5['length'];if(!_0x9a0ef['query']['hasOwnProperty'](_0x0788('0x81'))){_0x42c537[_0x0788('0x24')]=qs[_0x0788('0x24')](_0x9a0ef[_0x0788('0x36')][_0x0788('0x24')]);_0x42c537[_0x0788('0x22')]=qs[_0x0788('0x22')](_0x9a0ef[_0x0788('0x36')][_0x0788('0x22')]);}return _0x53730a[_0x0788('0x7c')](_0x42c537);}})[_0x0788('0x28')](function(_0x4a4ad4){if(_0x4a4ad4){return _0x4a4ad4?{'count':_0xddfb97,'rows':_0x4a4ad4}:null;}})['then'](respondWithResult(_0x5c2d95,null))[_0x0788('0x46')](handleError(_0x5c2d95,null));};exports[_0x0788('0x82')]=function(_0x104a70,_0x1a3f4d,_0x45e33c){var _0x14ac26={};var _0x37d04b={};var _0x3c77f9;var _0x4e80d1;return db['VoicePrefix'][_0x0788('0x7d')]({'where':{'id':_0x104a70[_0x0788('0x48')]['id']}})[_0x0788('0x28')](handleEntityNotFound(_0x1a3f4d,null))[_0x0788('0x28')](function(_0x437086){if(_0x437086){_0x3c77f9=_0x437086;_0x37d04b[_0x0788('0x3a')]=_['keys'](db[_0x0788('0x83')][_0x0788('0x33')]);_0x37d04b[_0x0788('0x36')]=_[_0x0788('0x49')](_0x104a70[_0x0788('0x36')]);_0x37d04b[_0x0788('0x37')]=_[_0x0788('0x38')](_0x37d04b[_0x0788('0x3a')],_0x37d04b[_0x0788('0x36')]);_0x14ac26['attributes']=_[_0x0788('0x38')](_0x37d04b[_0x0788('0x3a')],qs[_0x0788('0x4a')](_0x104a70[_0x0788('0x36')][_0x0788('0x4a')]));_0x14ac26[_0x0788('0x39')]=_0x14ac26['attributes'][_0x0788('0x3b')]?_0x14ac26[_0x0788('0x39')]:_0x37d04b[_0x0788('0x3a')];_0x14ac26[_0x0788('0x7f')]=qs[_0x0788('0x3d')](_0x104a70[_0x0788('0x36')][_0x0788('0x3d')]);_0x14ac26[_0x0788('0x3e')]=qs[_0x0788('0x37')](_[_0x0788('0x80')](_0x104a70['query'],_0x37d04b[_0x0788('0x37')]));if(_0x104a70['query'][_0x0788('0x3f')]){_0x14ac26['where']=_[_0x0788('0x40')](_0x14ac26['where'],{'$or':_[_0x0788('0x31')](_0x14ac26[_0x0788('0x39')],function(_0x1f1f92){var _0xdfcfaf={};_0xdfcfaf[_0x1f1f92]={'$like':'%'+_0x104a70['query'][_0x0788('0x3f')]+'%'};return _0xdfcfaf;})});}_0x14ac26=_[_0x0788('0x40')]({},_0x14ac26,_0x104a70[_0x0788('0x42')]);return _0x3c77f9['getTeams'](_0x14ac26);}})[_0x0788('0x28')](function(_0x372c4f){if(_0x372c4f){_0x4e80d1=_0x372c4f['length'];if(!_0x104a70[_0x0788('0x36')][_0x0788('0x3c')](_0x0788('0x81'))){_0x14ac26[_0x0788('0x24')]=qs[_0x0788('0x24')](_0x104a70[_0x0788('0x36')][_0x0788('0x24')]);_0x14ac26['offset']=qs[_0x0788('0x22')](_0x104a70[_0x0788('0x36')][_0x0788('0x22')]);}return _0x3c77f9[_0x0788('0x82')](_0x14ac26);}})[_0x0788('0x28')](function(_0x374a10){if(_0x374a10){return _0x374a10?{'count':_0x4e80d1,'rows':_0x374a10}:null;}})[_0x0788('0x28')](respondWithResult(_0x1a3f4d,null))[_0x0788('0x46')](handleError(_0x1a3f4d,null));};exports['addTeams']=function(_0x5130c4,_0x26233b,_0x42f6df){var _0x198501=_0x5130c4[_0x0788('0x70')][_0x0788('0x74')];var _0xbedb18;return db[_0x0788('0x83')]['findAll']({'where':{'id':_0x198501},'attributes':['id'],'include':[{'model':db[_0x0788('0x7e')],'as':'Agents','attributes':['id','name',_0x0788('0x84'),_0x0788('0x85'),'interface'],'raw':!![]}]})[_0x0788('0x28')](function(_0x66474b){if(_0x66474b){_0xbedb18=_0x66474b;var _0x28d0f8=_[_0x0788('0x86')](_0x66474b,function(_0x3b7f9c){var _0x328606=_0x3b7f9c['get']({'plain':!![]});return _0x328606[_0x0788('0x87')];});return db[_0x0788('0x32')]['find']({'where':{'id':_0x5130c4[_0x0788('0x48')]['id']}})[_0x0788('0x28')](function(_0x4c59c4){return db[_0x0788('0x50')][_0x0788('0x51')](function(_0x28417e){return _0x4c59c4[_0x0788('0x88')](_0x198501,{'transaction':_0x28417e})[_0x0788('0x28')](function(){return BPromise[_0x0788('0x89')](_0xbedb18,function(_0x129506){return db['TeamVoicePrefix'][_0x0788('0x8a')]({'TeamId':_0x129506['id'],'VoicePrefixId':_0x5130c4[_0x0788('0x48')]['id']},{'transaction':_0x28417e});});})[_0x0788('0x28')](function(){return BPromise[_0x0788('0x89')](_0x28d0f8,function(_0x4c0f3d){return db[_0x0788('0x8b')][_0x0788('0x8c')]({'where':{'UserId':_0x4c0f3d['id'],'VoicePrefixId':_0x5130c4['params']['id']},'transaction':_0x28417e});});})['then'](function(){_0x28d0f8[_0x0788('0x8d')](function(_0x15a70b){socket[_0x0788('0x77')](_0x0788('0x78'),{'UserId':_0x15a70b['id'],'VoicePrefixId':_0x4c59c4['id']});});});});});}})[_0x0788('0x28')](respondWithStatusCode(_0x26233b,null))[_0x0788('0x46')](handleError(_0x26233b,null));};exports['removeTeams']=function(_0x3309e1,_0x38e809,_0x1d25bf){return db[_0x0788('0x83')][_0x0788('0x44')]({'where':{'id':_0x3309e1[_0x0788('0x36')][_0x0788('0x74')]},'attributes':['id'],'include':[{'model':db[_0x0788('0x7e')],'as':_0x0788('0x87'),'attributes':['id'],'raw':!![]}]})[_0x0788('0x28')](handleEntityNotFound(_0x38e809,null))[_0x0788('0x28')](function(_0x2297ab){var _0x235106=_[_0x0788('0x31')](_0x2297ab,'id');var _0x17da6a=[];var _0x150a05=[];var _0x1e0fb7=squel['select']();_0x1e0fb7[_0x0788('0x8e')](_0x0788('0x8f'))[_0x0788('0x90')](_0x0788('0x91'),'tq')['join'](_0x0788('0x92'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x0788('0x3e')]('VoicePrefixId\x20=\x20?',_0x3309e1['params']['id']);for(var _0x34a12a=0x0;_0x34a12a<_0x2297ab[_0x0788('0x3b')];_0x34a12a+=0x1){let _0x552a5c=_0x2297ab[_0x34a12a];for(var _0x605f17=0x0;_0x605f17<_0x552a5c['Agents'][_0x0788('0x3b')];_0x605f17+=0x1){let _0x4c86ef=_0x552a5c[_0x0788('0x87')][_0x605f17];var _0x197568=_0x1e0fb7[_0x0788('0x93')]();_0x197568[_0x0788('0x3e')](_0x0788('0x94'),_0x4c86ef['id']);_0x150a05[_0x0788('0x68')](db['sequelize'][_0x0788('0x36')](_0x197568['toString'](),{'type':db[_0x0788('0x50')][_0x0788('0x95')]['SELECT']})['then'](function(_0x4c1ca6){if(_0x4c1ca6[_0x0788('0x3b')]===0x1){return _0x4c86ef['id'];}else{var _0x4b2ca7=_['every'](_['map'](_0x4c1ca6,'TeamId'),function(_0x4ce12d){return _['includes'](_0x235106,_0x4ce12d);});if(_0x4b2ca7){return _0x4c86ef['id'];}}}));}}return BPromise[_0x0788('0x96')](_0x150a05)[_0x0788('0x28')](function(_0x55e987){_0x17da6a=_(_0x17da6a)[_0x0788('0x97')](_0x55e987)['compact']()[_0x0788('0x98')]();return db['VoicePrefix'][_0x0788('0x4d')]({'where':{'id':_0x3309e1[_0x0788('0x48')]['id']}})[_0x0788('0x28')](function(_0x12448a){return db[_0x0788('0x50')][_0x0788('0x51')](function(_0x2e0714){return _0x12448a[_0x0788('0x99')](_0x3309e1[_0x0788('0x36')][_0x0788('0x74')],{'transaction':_0x2e0714})['then'](function(){if(!_[_0x0788('0x9a')](_0x17da6a)){return _0x12448a['removeAgents'](_0x17da6a,{'transaction':_0x2e0714});}})[_0x0788('0x28')](function(){_0x17da6a['forEach'](function(_0x58769c){socket[_0x0788('0x77')](_0x0788('0x7b'),{'UserId':_0x58769c,'VoicePrefixId':_0x12448a['id']});});});});});});})[_0x0788('0x28')](respondWithStatusCode(_0x38e809,null))['catch'](handleError(_0x38e809,null));};
\ No newline at end of file
index 1e89bd3..5c6b3aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x716b=['VoicePrefix','setMaxListeners','update','emit','hasOwnProperty','../../mysqldb'];(function(_0x58adfa,_0x354ebb){var _0x3b917=function(_0x4ef2dd){while(--_0x4ef2dd){_0x58adfa['push'](_0x58adfa['shift']());}};_0x3b917(++_0x354ebb);}(_0x716b,0x101));var _0xb716=function(_0x4b33c0,_0x17fb55){_0x4b33c0=_0x4b33c0-0x0;var _0x43c889=_0x716b[_0x4b33c0];return _0x43c889;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xb716('0x0'))['db'][_0xb716('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xb716('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb716('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1c93a1){return function(_0x4f4f5e,_0x280436,_0x1e42fd){VoicePrefixEvents[_0xb716('0x4')](_0x1c93a1+':'+_0x4f4f5e['id'],_0x4f4f5e);VoicePrefixEvents[_0xb716('0x4')](_0x1c93a1,_0x4f4f5e);_0x1e42fd(null);};}for(var e in events){if(events[_0xb716('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0x7169=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoicePrefix'];(function(_0x49abaf,_0x33b29a){var _0x3dd3b7=function(_0x3c3c42){while(--_0x3c3c42){_0x49abaf['push'](_0x49abaf['shift']());}};_0x3dd3b7(++_0x33b29a);}(_0x7169,0x75));var _0x9716=function(_0x49d41c,_0x2bdc35){_0x49d41c=_0x49d41c-0x0;var _0xb64c5f=_0x7169[_0x49d41c];return _0xb64c5f;};'use strict';var EventEmitter=require(_0x9716('0x0'));var VoicePrefix=require(_0x9716('0x1'))['db'][_0x9716('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x9716('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9716('0x4'),'afterDestroy':_0x9716('0x5')};function emitEvent(_0x3dbb38){return function(_0x47adcc,_0x451827,_0xe3d700){VoicePrefixEvents[_0x9716('0x6')](_0x3dbb38+':'+_0x47adcc['id'],_0x47adcc);VoicePrefixEvents[_0x9716('0x6')](_0x3dbb38,_0x47adcc);_0xe3d700(null);};}for(var e in events){if(events[_0x9716('0x7')](e)){var event=events[e];VoicePrefix[_0x9716('0x8')](e,emitEvent(event));}}module[_0x9716('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index 3db58ac..5fb6429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8710=['exports','define','VoicePrefix','voice_prefixes','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x147875,_0x23ff11){var _0x2f1efd=function(_0x506a51){while(--_0x506a51){_0x147875['push'](_0x147875['shift']());}};_0x2f1efd(++_0x23ff11);}(_0x8710,0xa6));var _0x0871=function(_0x3e3082,_0x49d81b){_0x3e3082=_0x3e3082-0x0;var _0x557602=_0x8710[_0x3e3082];return _0x557602;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0871('0x0'));var moment=require('moment');var BPromise=require(_0x0871('0x1'));var rp=require(_0x0871('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0871('0x3'));var config=require(_0x0871('0x4'));var attributes=require('./voicePrefix.attributes');module[_0x0871('0x5')]=function(_0x3ed8a7,_0x81b513){return _0x3ed8a7[_0x0871('0x6')](_0x0871('0x7'),attributes,{'tableName':_0x0871('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd97a=['rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3aa05d,_0x505c45){var _0x1fa9f1=function(_0x4e1417){while(--_0x4e1417){_0x3aa05d['push'](_0x3aa05d['shift']());}};_0x1fa9f1(++_0x505c45);}(_0xd97a,0x1b6));var _0xad97=function(_0x132641,_0x153b24){_0x132641=_0x132641-0x0;var _0xc68b80=_0xd97a[_0x132641];return _0xc68b80;};'use strict';var _=require(_0xad97('0x0'));var util=require(_0xad97('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xad97('0x2'));var BPromise=require(_0xad97('0x3'));var rp=require(_0xad97('0x4'));var fs=require('fs');var path=require(_0xad97('0x5'));var rimraf=require(_0xad97('0x6'));var config=require('../../config/environment');var attributes=require(_0xad97('0x7'));module[_0xad97('0x8')]=function(_0x5e73f5,_0x5ea33c){return _0x5e73f5[_0xad97('0x9')](_0xad97('0xa'),attributes,{'tableName':_0xad97('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dbadbc7..494b639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaafc=['localhost','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','redis','defaults'];(function(_0x19ac5d,_0x446af6){var _0x81d122=function(_0xffd29b){while(--_0xffd29b){_0x19ac5d['push'](_0x19ac5d['shift']());}};_0x81d122(++_0x446af6);}(_0xaafc,0x176));var _0xcaaf=function(_0x31ec7d,_0x27d6f0){_0x31ec7d=_0x31ec7d-0x0;var _0x363f3b=_0xaafc[_0x31ec7d];return _0x363f3b;};'use strict';var _=require('lodash');var util=require(_0xcaaf('0x0'));var moment=require(_0xcaaf('0x1'));var BPromise=require(_0xcaaf('0x2'));var rs=require(_0xcaaf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcaaf('0x4'))['db'];var utils=require(_0xcaaf('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xcaaf('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xcaaf('0x7')]['http']({'port':0x232a});config[_0xcaaf('0x8')]=_[_0xcaaf('0x9')](config[_0xcaaf('0x8')],{'host':_0xcaaf('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcaaf('0x8')]));require('./voicePrefix.socket')[_0xcaaf('0xb')](socket);function respondWithRpcPromise(_0x54dc9d,_0x94f4d6,_0x5f11b0){return new BPromise(function(_0x163ced,_0x12f13d){return client[_0xcaaf('0xc')](_0x54dc9d,_0x5f11b0)[_0xcaaf('0xd')](function(_0x3c6e77){logger[_0xcaaf('0xe')](_0xcaaf('0xf'),_0x94f4d6,_0xcaaf('0x10'));logger[_0xcaaf('0x11')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x94f4d6,_0xcaaf('0x10'),JSON[_0xcaaf('0x12')](_0x3c6e77));if(_0x3c6e77[_0xcaaf('0x13')]){if(_0x3c6e77[_0xcaaf('0x13')][_0xcaaf('0x14')]===0x1f4){logger[_0xcaaf('0x13')](_0xcaaf('0xf'),_0x94f4d6,_0x3c6e77[_0xcaaf('0x13')][_0xcaaf('0x15')]);return _0x12f13d(_0x3c6e77[_0xcaaf('0x13')][_0xcaaf('0x15')]);}logger['error'](_0xcaaf('0xf'),_0x94f4d6,_0x3c6e77[_0xcaaf('0x13')][_0xcaaf('0x15')]);return _0x163ced(_0x3c6e77[_0xcaaf('0x13')][_0xcaaf('0x15')]);}else{logger[_0xcaaf('0xe')]('VoicePrefix,\x20%s,\x20%s',_0x94f4d6,_0xcaaf('0x10'));_0x163ced(_0x3c6e77[_0xcaaf('0x16')]['message']);}})[_0xcaaf('0x17')](function(_0x2c988c){logger[_0xcaaf('0x13')](_0xcaaf('0xf'),_0x94f4d6,_0x2c988c);_0x12f13d(_0x2c988c);});});}
\ No newline at end of file
+var _0xbf13=['jayson/promise','client','http','redis','localhost','./voicePrefix.socket','register','request','then','info','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','VoicePrefix,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x253427,_0x4c7539){var _0x2a633c=function(_0x25c7b8){while(--_0x25c7b8){_0x253427['push'](_0x253427['shift']());}};_0x2a633c(++_0x4c7539);}(_0xbf13,0xe2));var _0x3bf1=function(_0x5229f9,_0x1da244){_0x5229f9=_0x5229f9-0x0;var _0x538ec7=_0xbf13[_0x5229f9];return _0x538ec7;};'use strict';var _=require(_0x3bf1('0x0'));var util=require(_0x3bf1('0x1'));var moment=require(_0x3bf1('0x2'));var BPromise=require(_0x3bf1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3bf1('0x4'))['db'];var utils=require(_0x3bf1('0x5'));var logger=require('../../config/logger')(_0x3bf1('0x6'));var config=require(_0x3bf1('0x7'));var jayson=require(_0x3bf1('0x8'));var client=jayson[_0x3bf1('0x9')][_0x3bf1('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3bf1('0xb')],{'host':_0x3bf1('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3bf1('0xb')]));require(_0x3bf1('0xd'))[_0x3bf1('0xe')](socket);function respondWithRpcPromise(_0x3bcda3,_0xdc68d1,_0xa1374a){return new BPromise(function(_0x48444a,_0x50bf27){return client[_0x3bf1('0xf')](_0x3bcda3,_0xa1374a)[_0x3bf1('0x10')](function(_0x4d8dbd){logger[_0x3bf1('0x11')]('VoicePrefix,\x20%s,\x20%s',_0xdc68d1,_0x3bf1('0x12'));logger[_0x3bf1('0x13')](_0x3bf1('0x14'),_0xdc68d1,_0x3bf1('0x12'),JSON[_0x3bf1('0x15')](_0x4d8dbd));if(_0x4d8dbd[_0x3bf1('0x16')]){if(_0x4d8dbd['error']['code']===0x1f4){logger[_0x3bf1('0x16')](_0x3bf1('0x17'),_0xdc68d1,_0x4d8dbd[_0x3bf1('0x16')][_0x3bf1('0x18')]);return _0x50bf27(_0x4d8dbd[_0x3bf1('0x16')][_0x3bf1('0x18')]);}logger[_0x3bf1('0x16')](_0x3bf1('0x17'),_0xdc68d1,_0x4d8dbd[_0x3bf1('0x16')][_0x3bf1('0x18')]);return _0x48444a(_0x4d8dbd[_0x3bf1('0x16')][_0x3bf1('0x18')]);}else{logger[_0x3bf1('0x11')](_0x3bf1('0x17'),_0xdc68d1,'request\x20sent');_0x48444a(_0x4d8dbd['result'][_0x3bf1('0x18')]);}})[_0x3bf1('0x19')](function(_0x140e51){logger['error']('VoicePrefix,\x20%s,\x20%s',_0xdc68d1,_0x140e51);_0x50bf27(_0x140e51);});});}
\ No newline at end of file
index 3e750a3..9b1714b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3013=['length','voicePrefix:','./voicePrefix.events','save','remove','update','emit','removeListener'];(function(_0x20e00c,_0x3c4821){var _0x3baa51=function(_0x5e8bb3){while(--_0x5e8bb3){_0x20e00c['push'](_0x20e00c['shift']());}};_0x3baa51(++_0x3c4821);}(_0x3013,0xea));var _0x3301=function(_0x5d8696,_0x463a4f){_0x5d8696=_0x5d8696-0x0;var _0x5b6900=_0x3013[_0x5d8696];return _0x5b6900;};'use strict';var VoicePrefixEvents=require(_0x3301('0x0'));var events=[_0x3301('0x1'),_0x3301('0x2'),_0x3301('0x3')];function createListener(_0x5e4344,_0x4e38dd){return function(_0x49d628){_0x4e38dd[_0x3301('0x4')](_0x5e4344,_0x49d628);};}function removeListener(_0x153554,_0xb395bd){return function(){VoicePrefixEvents[_0x3301('0x5')](_0x153554,_0xb395bd);};}exports['register']=function(_0x30b608){for(var _0x52515d=0x0,_0x41dd5b=events[_0x3301('0x6')];_0x52515d<_0x41dd5b;_0x52515d++){var _0x4299f9=events[_0x52515d];var _0x1b1d66=createListener(_0x3301('0x7')+_0x4299f9,_0x30b608);VoicePrefixEvents['on'](_0x4299f9,_0x1b1d66);}};
\ No newline at end of file
+var _0x175e=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x20c8e7,_0x5e0dd6){var _0x32eba9=function(_0x486c2c){while(--_0x486c2c){_0x20c8e7['push'](_0x20c8e7['shift']());}};_0x32eba9(++_0x5e0dd6);}(_0x175e,0xe6));var _0xe175=function(_0xd6314a,_0x683bf1){_0xd6314a=_0xd6314a-0x0;var _0xc76b30=_0x175e[_0xd6314a];return _0xc76b30;};'use strict';var VoicePrefixEvents=require(_0xe175('0x0'));var events=[_0xe175('0x1'),_0xe175('0x2'),_0xe175('0x3')];function createListener(_0x449d97,_0x5bec43){return function(_0x4d2bfc){_0x5bec43[_0xe175('0x4')](_0x449d97,_0x4d2bfc);};}function removeListener(_0x3c493c,_0x3fd951){return function(){VoicePrefixEvents[_0xe175('0x5')](_0x3c493c,_0x3fd951);};}exports[_0xe175('0x6')]=function(_0x278a8d){for(var _0x7eba=0x0,_0xbe8cd=events[_0xe175('0x7')];_0x7eba<_0xbe8cd;_0x7eba++){var _0x2e1356=events[_0x7eba];var _0x345531=createListener(_0xe175('0x8')+_0x2e1356,_0x278a8d);VoicePrefixEvents['on'](_0x2e1356,_0x345531);}};
\ No newline at end of file
index e76ff35..9ea3778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x480322,_0x55b82b){var _0x41f0e2=function(_0x3b94f9){while(--_0x3b94f9){_0x480322['push'](_0x480322['shift']());}};_0x41f0e2(++_0x55b82b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
+var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x109dbd,_0x290d2b){var _0x395644=function(_0x5a8c2d){while(--_0x5a8c2d){_0x109dbd['push'](_0x109dbd['shift']());}};_0x395644(++_0x290d2b);}(_0xb10b,0x12a));var _0xbb10=function(_0x3b30be,_0x47bcd9){_0x3b30be=_0x3b30be-0x0;var _0x546361=_0xb10b[_0x3b30be];return _0x546361;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
index 36ac0c3..5ba354e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b56=['linear','wrandom','rrordered','setDataValue','getDataValue','strategy','booked','roundrobin','includes','INTEGER','ENUM','all','yes','once','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','progressive','power','predictive','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','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)','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)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','inbound','outbound','default','ringall','leastrecent','fewestcalls','rrmemory'];(function(_0x3f5af4,_0x1a2d76){var _0xeecbd9=function(_0x3ce0c7){while(--_0x3ce0c7){_0x3f5af4['push'](_0x3f5af4['shift']());}};_0xeecbd9(++_0x1a2d76);}(_0x9b56,0x1dc));var _0x69b5=function(_0x48d6a3,_0x37c848){_0x48d6a3=_0x48d6a3-0x0;var _0x38bfa0=_0x9b56[_0x48d6a3];return _0x38bfa0;};'use strict';var Sequelize=require(_0x69b5('0x0'));module[_0x69b5('0x1')]={'name':{'type':Sequelize[_0x69b5('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x69b5('0x3'),_0x69b5('0x4')),'allowNull':![],'defaultValue':_0x69b5('0x3')},'musiconhold':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':_0x69b5('0x5')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x69b5('0x6'),_0x69b5('0x7'),_0x69b5('0x8'),'random',_0x69b5('0x9'),_0x69b5('0xa'),_0x69b5('0xb'),_0x69b5('0xc')),'allowNull':![],'defaultValue':_0x69b5('0x6'),'set':function(_0x50be80){this[_0x69b5('0xd')]('strategy',_0x50be80?_0x50be80:_0x69b5('0x9'));},'get':function(){var _0x573170=this['getDataValue']('type');var _0x48756c=this[_0x69b5('0xe')]('dialMethod');var _0x4b83d3=this[_0x69b5('0xe')](_0x69b5('0xf'));if(_0x573170===_0x69b5('0x4')){if(_0x48756c==='preview'){return null;}if(_0x48756c===_0x69b5('0x10')&&!['rrmemory',_0x69b5('0x11')][_0x69b5('0x12')](_0x4b83d3)){this[_0x69b5('0xd')](_0x69b5('0xf'),_0x69b5('0x9'));}}return _0x4b83d3;}},'servicelevel':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x69b5('0x13')](0xb)},'timeout':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x69b5('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x69b5('0x14')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x69b5('0x14')]('yes','no',_0x69b5('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x69b5('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x69b5('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x69b5('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x69b5('0x14')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x69b5('0x14')]('yes','no'),'defaultValue':_0x69b5('0x16')},'announce_holdtime':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no',_0x69b5('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x69b5('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x69b5('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x69b5('0x14')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x69b5('0x2')]},'queue_youarenext':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x69b5('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x69b5('0x2')]},'queue_quantity1':{'type':Sequelize[_0x69b5('0x2')]},'queue_quantity2':{'type':Sequelize[_0x69b5('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x69b5('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x69b5('0x18')],'set':function(_0x5119be){this[_0x69b5('0xd')](_0x69b5('0x19'),_0x5119be?_0x5119be['join'](','):[]);},'get':function(){return this[_0x69b5('0xe')]('periodic_announce')?this['getDataValue'](_0x69b5('0x19'))[_0x69b5('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':_0x69b5('0x16'),'set':function(_0x2ee27f){this[_0x69b5('0xd')](_0x69b5('0x1b'),_0x2ee27f?_0x2ee27f[_0x69b5('0x1c')](','):undefined);},'get':function(){return this[_0x69b5('0xe')](_0x69b5('0x1b'))?this[_0x69b5('0xe')](_0x69b5('0x1b'))[_0x69b5('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':'no','set':function(_0x43a76b){this[_0x69b5('0xd')](_0x69b5('0x1d'),_0x43a76b?_0x43a76b[_0x69b5('0x1c')](','):undefined);},'get':function(){return this[_0x69b5('0xe')](_0x69b5('0x1d'))?this[_0x69b5('0xe')]('leavewhenempty')[_0x69b5('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x69b5('0x14')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0x69b5('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x69b5('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x50c026){this['setDataValue'](_0x69b5('0x1e'),_0x50c026);if(_0x50c026){if(this['getDataValue'](_0x69b5('0x1f'))<0x2){this[_0x69b5('0xd')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x69b5('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':0x0,'comment':_0x69b5('0x21')},'dialMethod':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x22'),_0x69b5('0x23'),_0x69b5('0x24'),_0x69b5('0x25'),_0x69b5('0x10')),'defaultValue':_0x69b5('0x23'),'comment':_0x69b5('0x26')},'dialLimitChannel':{'type':Sequelize[_0x69b5('0x13')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x69b5('0x27')},'dialLimitQueue':{'type':Sequelize[_0x69b5('0x13')](0x4)[_0x69b5('0x28')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x69b5('0x29')},'dialPowerLevel':{'type':Sequelize[_0x69b5('0x2a')](0x2)[_0x69b5('0x28')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x69b5('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x2c'),_0x69b5('0x2d')),'defaultValue':'dropRate','comment':_0x69b5('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x69b5('0x2a')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x69b5('0x2f')},'dialPredictiveInterval':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x69b5('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0x69b5('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x69b5('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x31')},'dialQueueOptions':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':_0x69b5('0x32'),'comment':_0x69b5('0x33')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x34')},'dialQueueProject':{'type':Sequelize[_0x69b5('0x2')],'comment':_0x69b5('0x35')},'dialCongestionMaxRetry':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x36')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x69b5('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69b5('0x37')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69b5('0x38')},'dialGlobalMaxRetry':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x69b5('0x39')},'dialPrefix':{'type':Sequelize[_0x69b5('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x69b5('0x14')](_0x69b5('0x3a'),_0x69b5('0x3b'),_0x69b5('0x3c')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x69b5('0x13')](0x9)[_0x69b5('0x28')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x69b5('0x13')](0x9)[_0x69b5('0x28')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x69b5('0x3d')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x69b5('0x28')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x69b5('0x3e')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x69b5('0x13')](0x9)[_0x69b5('0x28')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x69b5('0x3f')},'dialAMDMinWordLength':{'type':Sequelize[_0x69b5('0x13')](0x9)[_0x69b5('0x28')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x69b5('0x40')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x69b5('0x13')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x69b5('0x41')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x69b5('0x13')](0x9)[_0x69b5('0x28')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x69b5('0x42')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x69b5('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x69b5('0x13')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x69b5('0x43')},'dialRecallMeTimeout':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x69b5('0x44')},'dialRecallInQueue':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':0x0,'comment':_0x69b5('0x45')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x69b5('0x46'),'ASC'),'defaultValue':_0x69b5('0x46')},'dialQueueProject2':{'type':Sequelize[_0x69b5('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x69b5('0x47')},'dialCutDigit':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x69b5('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69b5('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69b5('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69b5('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x69b5('0x13')](0x5)[_0x69b5('0x28')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69b5('0x4d')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x69b5('0x13')],'allowNull':!![],'comment':_0x69b5('0x4e')},'mandatoryDisposition':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':![],'comment':_0x69b5('0x4f'),'set':function(_0x40dedf){if(!_0x40dedf)this[_0x69b5('0xd')](_0x69b5('0x50'),null);this[_0x69b5('0xd')]('mandatoryDisposition',_0x40dedf);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x69b5('0x13')](0x3)[_0x69b5('0x28')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x69b5('0x20')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0x69b5('0x28')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x1515=['AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\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)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','setDataValue','getDataValue','strategy','preview','roundrobin','includes','INTEGER','ENUM','yes','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','progressive','booked','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'];(function(_0x28b666,_0x54bfaa){var _0x32e7c6=function(_0x4eced5){while(--_0x4eced5){_0x28b666['push'](_0x28b666['shift']());}};_0x32e7c6(++_0x54bfaa);}(_0x1515,0xbd));var _0x5151=function(_0x5d4269,_0x354dd0){_0x5d4269=_0x5d4269-0x0;var _0x4a4107=_0x1515[_0x5d4269];return _0x4a4107;};'use strict';var Sequelize=require(_0x5151('0x0'));module[_0x5151('0x1')]={'name':{'type':Sequelize[_0x5151('0x2')],'allowNull':![],'unique':_0x5151('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x5151('0x4'),_0x5151('0x5')),'allowNull':![],'defaultValue':_0x5151('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x5151('0x6')},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x5151('0x7'),_0x5151('0x8'),_0x5151('0x9'),_0x5151('0xa'),_0x5151('0xb'),_0x5151('0xc'),_0x5151('0xd'),'rrordered'),'allowNull':![],'defaultValue':_0x5151('0x7'),'set':function(_0x2f256e){this[_0x5151('0xe')]('strategy',_0x2f256e?_0x2f256e:'rrmemory');},'get':function(){var _0x54fa42=this[_0x5151('0xf')]('type');var _0x3df085=this[_0x5151('0xf')]('dialMethod');var _0x3fa2b5=this[_0x5151('0xf')](_0x5151('0x10'));if(_0x54fa42===_0x5151('0x5')){if(_0x3df085===_0x5151('0x11')){return null;}if(_0x3df085==='booked'&&![_0x5151('0xb'),_0x5151('0x12')][_0x5151('0x13')](_0x3fa2b5)){this['setDataValue'](_0x5151('0x10'),_0x5151('0xb'));}}return _0x3fa2b5;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x5151('0x14')](0xb)},'timeout':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x5151('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':_0x5151('0x16')},'autopause':{'type':Sequelize[_0x5151('0x15')]('yes','no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x5151('0x14')](0xb)},'autopausebusy':{'type':Sequelize[_0x5151('0x15')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x5151('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x5151('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x5151('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':_0x5151('0x16')},'announce_holdtime':{'type':Sequelize[_0x5151('0x15')]('yes','no',_0x5151('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x5151('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x5151('0x15')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x5151('0x2')]},'queue_youarenext':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x5151('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x5151('0x2')]},'queue_quantity1':{'type':Sequelize[_0x5151('0x2')]},'queue_quantity2':{'type':Sequelize[_0x5151('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x5151('0x2')]},'queue_less_than':{'type':Sequelize[_0x5151('0x2')]},'periodic_announce':{'type':Sequelize[_0x5151('0x18')],'set':function(_0x51f0bd){this[_0x5151('0xe')](_0x5151('0x19'),_0x51f0bd?_0x51f0bd[_0x5151('0x1a')](','):[]);},'get':function(){return this[_0x5151('0xf')](_0x5151('0x19'))?this[_0x5151('0xf')]('periodic_announce')[_0x5151('0x1b')](','):[];}},'joinempty':{'type':Sequelize[_0x5151('0x2')],'defaultValue':_0x5151('0x16'),'set':function(_0x1b1e2b){this[_0x5151('0xe')](_0x5151('0x1c'),_0x1b1e2b?_0x1b1e2b[_0x5151('0x1a')](','):undefined);},'get':function(){return this[_0x5151('0xf')](_0x5151('0x1c'))?this['getDataValue'](_0x5151('0x1c'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x5151('0x2')],'defaultValue':'no','set':function(_0xad7edd){this[_0x5151('0xe')](_0x5151('0x1d'),_0xad7edd?_0xad7edd[_0x5151('0x1a')](','):undefined);},'get':function(){return this[_0x5151('0xf')](_0x5151('0x1d'))?this[_0x5151('0xf')](_0x5151('0x1d'))[_0x5151('0x1b')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x5151('0x2')]},'description':{'type':Sequelize[_0x5151('0x2')]},'acw':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':0x0,'set':function(_0x3ce5be){this[_0x5151('0xe')](_0x5151('0x1f'),_0x3ce5be);if(_0x3ce5be){if(this[_0x5151('0xf')](_0x5151('0x20'))<0x2){this[_0x5151('0xe')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0x5151('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':0x0,'comment':_0x5151('0x21')},'dialMethod':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x11'),_0x5151('0x22'),'power','predictive',_0x5151('0x23')),'defaultValue':_0x5151('0x22'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0x5151('0x14')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5151('0x24')},'dialLimitQueue':{'type':Sequelize[_0x5151('0x14')](0x4)[_0x5151('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5151('0x26')},'dialPowerLevel':{'type':Sequelize[_0x5151('0x27')](0x2)[_0x5151('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x5151('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x5151('0x15')]('agentBusyFactor',_0x5151('0x29')),'defaultValue':'dropRate','comment':_0x5151('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x5151('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x5151('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5151('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5151('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5151('0x14')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x2d')},'dialQueueOptions':{'type':Sequelize[_0x5151('0x2')],'defaultValue':_0x5151('0x2e'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x2f')},'dialQueueProject':{'type':Sequelize[_0x5151('0x2')],'comment':_0x5151('0x30')},'dialCongestionMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5151('0x31')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x5151('0x32')},'dialPrefix':{'type':Sequelize[_0x5151('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x33'),_0x5151('0x34'),_0x5151('0x35')),'defaultValue':_0x5151('0x33')},'dialAMDActive':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':0x0,'comment':_0x5151('0x36')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5151('0x37')},'dialAMDGreeting':{'type':Sequelize[_0x5151('0x14')](0x9)[_0x5151('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5151('0x38')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5151('0x14')](0x9)[_0x5151('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5151('0x39')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5151('0x14')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5151('0x3a')},'dialAMDMinWordLength':{'type':Sequelize[_0x5151('0x14')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5151('0x3b')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5151('0x14')](0x9)[_0x5151('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5151('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5151('0x14')](0x9)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5151('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5151('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x5151('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5151('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x5151('0x40')},'dialRecallInQueue':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':0x0,'comment':_0x5151('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5151('0x15')](_0x5151('0x42'),'ASC'),'defaultValue':_0x5151('0x42')},'dialQueueProject2':{'type':Sequelize[_0x5151('0x2')],'comment':_0x5151('0x30')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5151('0x43')},'dialCutDigit':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5151('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5151('0x45')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x46')},'dialDropRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5151('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5151('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5151('0x14')](0x5)[_0x5151('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5151('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x5151('0x4c'),'set':function(_0x21844c){if(!_0x21844c)this[_0x5151('0xe')](_0x5151('0x4d'),null);this[_0x5151('0xe')](_0x5151('0x4e'),_0x21844c);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x5151('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x5151('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x5151('0x14')](0x3)[_0x5151('0x25')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 1141d3b..97f9fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d5c=['ignore','map','value','includes','type','find','name','UserProfileResource','end','error','stack','send','index','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','VIRTUAL','options','VoiceQueue','includeAll','include','findAll','rows','catch','show','params','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','inbound','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','body','merge','UserProfileSection','autoAssociation','findOne','CmHopper','nolimit','pick','getHopperHistories','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','voicePause','penalty','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','interface','emit','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','sequelize','toString','SELECT','every','TeamId','union','compact','isEmpty','removeAgents','forEach','userVoiceQueue:remove','addAgents','spread','online','push','all','isArray','getAgents','getMembers','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','fromQuery','ContactId','phone','scheduledAt','ListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','OrderBy','h.id','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','CmList','NOW()','removeBlackLists','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','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','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','./voiceQueue.socket','sendStatus','status','offset','undefined','count','set','Content-Range','json','reject','save','update','then','destroy','get','VoiceQueues','QueueCampaigns','outbound','filter'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x9d5c,0x98));var _0xc9d5=function(_0x2d88da,_0x434ff6){_0x2d88da=_0x2d88da-0x0;var _0x47a85d=_0x9d5c[_0x2d88da];return _0x47a85d;};'use strict';var emlformat=require(_0xc9d5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc9d5('0x1'));var jsonpatch=require(_0xc9d5('0x2'));var rp=require('request-promise');var moment=require(_0xc9d5('0x3'));var BPromise=require(_0xc9d5('0x4'));var Mustache=require(_0xc9d5('0x5'));var util=require('util');var path=require(_0xc9d5('0x6'));var sox=require(_0xc9d5('0x7'));var csv=require('to-csv');var ejs=require(_0xc9d5('0x8'));var fs=require('fs');var fs_extra=require(_0xc9d5('0x9'));var _=require(_0xc9d5('0xa'));var squel=require(_0xc9d5('0xb'));var crypto=require(_0xc9d5('0xc'));var jsforce=require(_0xc9d5('0xd'));var deskjs=require(_0xc9d5('0xe'));var toCsv=require(_0xc9d5('0xf'));var querystring=require(_0xc9d5('0x10'));var Papa=require(_0xc9d5('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc9d5('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc9d5('0x13'));var logger=require(_0xc9d5('0x14'))(_0xc9d5('0x15'));var utils=require(_0xc9d5('0x16'));var config=require(_0xc9d5('0x17'));var licenseUtil=require(_0xc9d5('0x18'));var db=require(_0xc9d5('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xc9d5('0x1a'),'port':0x18eb});var socket=require(_0xc9d5('0x1b'))(new Redis(config[_0xc9d5('0x1c')]));require(_0xc9d5('0x1d'))['register'](socket);function respondWithStatusCode(_0x10d259,_0x3a10fc){_0x3a10fc=_0x3a10fc||0xcc;return function(_0x56b843){if(_0x56b843){return _0x10d259[_0xc9d5('0x1e')](_0x3a10fc);}return _0x10d259[_0xc9d5('0x1f')](_0x3a10fc)['end']();};}function respondWithResult(_0x57a42f,_0xdda7e3){_0xdda7e3=_0xdda7e3||0xc8;return function(_0x7d5471){if(_0x7d5471){return _0x57a42f[_0xc9d5('0x1f')](_0xdda7e3)['json'](_0x7d5471);}};}function respondWithFilteredResult(_0x395bad,_0x4900cc){return function(_0x3c8441){if(_0x3c8441){var _0x37fe94=typeof _0x4900cc[_0xc9d5('0x20')]===_0xc9d5('0x21')&&typeof _0x4900cc['limit']===_0xc9d5('0x21');var _0x516b45=_0x3c8441[_0xc9d5('0x22')];var _0x331772=_0x37fe94?0x0:_0x4900cc[_0xc9d5('0x20')];var _0x24f1fd=_0x37fe94?_0x3c8441['count']:_0x4900cc[_0xc9d5('0x20')]+_0x4900cc['limit'];var _0x565242;if(_0x24f1fd>=_0x516b45){_0x24f1fd=_0x516b45;_0x565242=0xc8;}else{_0x565242=0xce;}_0x395bad[_0xc9d5('0x1f')](_0x565242);return _0x395bad[_0xc9d5('0x23')](_0xc9d5('0x24'),_0x331772+'-'+_0x24f1fd+'/'+_0x516b45)[_0xc9d5('0x25')](_0x3c8441);}return null;};}function patchUpdates(_0x1447c9){return function(_0x59646f){try{jsonpatch['apply'](_0x59646f,_0x1447c9,!![]);}catch(_0x373563){return BPromise[_0xc9d5('0x26')](_0x373563);}return _0x59646f[_0xc9d5('0x27')]();};}function saveUpdates(_0x1424c9,_0x1448e2){return function(_0x21a50e){if(_0x21a50e){return _0x21a50e[_0xc9d5('0x28')](_0x1424c9)[_0xc9d5('0x29')](function(_0x1f2fbb){return _0x1f2fbb;});}return null;};}function removeEntity(_0x1ba306,_0x5f593d){return function(_0x35d18f){if(_0x35d18f){return _0x35d18f[_0xc9d5('0x2a')]()[_0xc9d5('0x29')](function(){var _0x2253c5=_0x35d18f[_0xc9d5('0x2b')]({'plain':!![]});var _0x4287ea=[{'name':_0xc9d5('0x2c'),'value':'inbound','ignore':![]},{'name':_0xc9d5('0x2d'),'value':_0xc9d5('0x2e'),'ignore':![]}];var _0x5e06f2=_(_0x4287ea)[_0xc9d5('0x2f')](_0xc9d5('0x30'))[_0xc9d5('0x31')](_0xc9d5('0x32'))[_0xc9d5('0x32')]();if(_[_0xc9d5('0x33')](_0x5e06f2,_0x2253c5[_0xc9d5('0x34')])){return;}var _0x463b8f=_[_0xc9d5('0x35')](_0x4287ea,['value',_0x2253c5[_0xc9d5('0x34')]])[_0xc9d5('0x36')];return db[_0xc9d5('0x37')]['destroy']({'where':{'type':_0x463b8f,'resourceId':_0x2253c5['id']}})['then'](function(){return _0x35d18f;});})['then'](function(){_0x1ba306['status'](0xcc)[_0xc9d5('0x38')]();});}};}function handleEntityNotFound(_0x322c5b,_0x365541){return function(_0xa216a8){if(!_0xa216a8){_0x322c5b[_0xc9d5('0x1e')](0x194);}return _0xa216a8;};}function handleError(_0x3caee1,_0x4e088f){_0x4e088f=_0x4e088f||0x1f4;return function(_0xa04020){logger[_0xc9d5('0x39')](_0xa04020[_0xc9d5('0x3a')]);if(_0xa04020[_0xc9d5('0x36')]){delete _0xa04020['name'];}_0x3caee1[_0xc9d5('0x1f')](_0x4e088f)[_0xc9d5('0x3b')](_0xa04020);};}exports[_0xc9d5('0x3c')]=function(_0x3c3ada,_0x5a2634){var _0x33567e={},_0x55ab3e={},_0x2135c8={'count':0x0,'rows':[]};var _0x299065=_[_0xc9d5('0x31')](db['VoiceQueue'][_0xc9d5('0x3d')],function(_0x2e12a6){return{'name':_0x2e12a6[_0xc9d5('0x3e')],'type':_0x2e12a6['type'][_0xc9d5('0x3f')]};});_0x55ab3e[_0xc9d5('0x40')]=_['map'](_0x299065,_0xc9d5('0x36'));_0x55ab3e[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0x3c3ada[_0xc9d5('0x41')]);_0x55ab3e[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x55ab3e['model'],_0x55ab3e['query']);_0x33567e[_0xc9d5('0x45')]=_['intersection'](_0x55ab3e[_0xc9d5('0x40')],qs[_0xc9d5('0x46')](_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x33567e[_0xc9d5('0x45')]=_0x33567e[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x33567e['attributes']:_0x55ab3e[_0xc9d5('0x40')];if(!_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x48')]('nolimit')){_0x33567e[_0xc9d5('0x49')]=qs['limit'](_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0x33567e['offset']=qs[_0xc9d5('0x20')](_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x20')]);}_0x33567e[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x3c3ada['query'][_0xc9d5('0x4b')]);_0x33567e[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_['pick'](_0x3c3ada['query'],_0x55ab3e['filters']),_0x299065);if(_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x2f')]){_0x33567e[_0xc9d5('0x4c')]=_['merge'](_0x33567e[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x299065,function(_0x577a89){if(_0x577a89[_0xc9d5('0x34')]!==_0xc9d5('0x4d')){var _0x399095={};_0x399095[_0x577a89[_0xc9d5('0x36')]]={'$like':'%'+_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0x399095;}})});}_0x33567e=_['merge']({},_0x33567e,_0x3c3ada[_0xc9d5('0x4e')]);var _0x5be215={'where':_0x33567e[_0xc9d5('0x4c')]};return db[_0xc9d5('0x4f')][_0xc9d5('0x22')](_0x5be215)[_0xc9d5('0x29')](function(_0xb7adf3){_0x2135c8[_0xc9d5('0x22')]=_0xb7adf3;if(_0x3c3ada[_0xc9d5('0x41')][_0xc9d5('0x50')]){_0x33567e[_0xc9d5('0x51')]=[{'all':!![]}];}return db[_0xc9d5('0x4f')][_0xc9d5('0x52')](_0x33567e);})[_0xc9d5('0x29')](function(_0x4022dc){_0x2135c8[_0xc9d5('0x53')]=_0x4022dc;return _0x2135c8;})[_0xc9d5('0x29')](respondWithFilteredResult(_0x5a2634,_0x33567e))[_0xc9d5('0x54')](handleError(_0x5a2634,null));};exports[_0xc9d5('0x55')]=function(_0x3b4288,_0x3f2c09){var _0x41226b={'raw':![],'where':{'id':_0x3b4288[_0xc9d5('0x56')]['id']}},_0x5d1cd5={};_0x5d1cd5[_0xc9d5('0x40')]=_['keys'](db[_0xc9d5('0x4f')][_0xc9d5('0x3d')]);_0x5d1cd5[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0x3b4288[_0xc9d5('0x41')]);_0x5d1cd5['filters']=_[_0xc9d5('0x44')](_0x5d1cd5[_0xc9d5('0x40')],_0x5d1cd5[_0xc9d5('0x41')]);_0x41226b[_0xc9d5('0x45')]=_['intersection'](_0x5d1cd5[_0xc9d5('0x40')],qs['fields'](_0x3b4288[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x41226b[_0xc9d5('0x45')]=_0x41226b[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x41226b[_0xc9d5('0x45')]:_0x5d1cd5[_0xc9d5('0x40')];if(_0x3b4288['query'][_0xc9d5('0x50')]){_0x41226b[_0xc9d5('0x51')]=[{'all':!![]}];}_0x41226b=_['merge']({},_0x41226b,_0x3b4288[_0xc9d5('0x4e')]);return db[_0xc9d5('0x4f')][_0xc9d5('0x35')](_0x41226b)['then'](handleEntityNotFound(_0x3f2c09,null))[_0xc9d5('0x29')](respondWithResult(_0x3f2c09,null))[_0xc9d5('0x54')](handleError(_0x3f2c09,null));};exports[_0xc9d5('0x57')]=function(_0x2b3e99,_0x25bb64){return db[_0xc9d5('0x4f')][_0xc9d5('0x57')](_0x2b3e99['body'],{})[_0xc9d5('0x29')](function(_0x3fd296){var _0x4b5e55=_0x2b3e99['user'][_0xc9d5('0x2b')]({'plain':!![]});if(!_0x4b5e55)throw new Error(_0xc9d5('0x58'));if(_0x4b5e55[_0xc9d5('0x59')]===_0xc9d5('0x5a')){var _0x5922f5=_0x3fd296[_0xc9d5('0x2b')]({'plain':!![]});var _0x3212e2=[{'name':_0xc9d5('0x2c'),'value':_0xc9d5('0x5b')},{'name':_0xc9d5('0x2d'),'value':_0xc9d5('0x2e')}];var _0x50153f=_[_0xc9d5('0x35')](_0x3212e2,[_0xc9d5('0x32'),_0x5922f5[_0xc9d5('0x34')]])[_0xc9d5('0x36')];return db['UserProfileSection'][_0xc9d5('0x35')]({'where':{'name':_0x50153f,'userProfileId':_0x4b5e55[_0xc9d5('0x5c')]},'raw':!![]})[_0xc9d5('0x29')](function(_0xedb2ec){if(_0xedb2ec&&_0xedb2ec['autoAssociation']===0x0){return db[_0xc9d5('0x37')][_0xc9d5('0x57')]({'name':_0x5922f5['name'],'resourceId':_0x5922f5['id'],'type':_0xedb2ec[_0xc9d5('0x36')],'sectionId':_0xedb2ec['id']},{})[_0xc9d5('0x29')](function(){return _0x3fd296;});}else{return _0x3fd296;}})[_0xc9d5('0x54')](function(_0xf85e39){logger[_0xc9d5('0x39')](_0xc9d5('0x5d'),_0xf85e39);throw _0xf85e39;});}return _0x3fd296;})[_0xc9d5('0x29')](respondWithResult(_0x25bb64,0xc9))[_0xc9d5('0x54')](handleError(_0x25bb64,null));};exports[_0xc9d5('0x5e')]=function(_0xf8f02,_0x5efda9){var _0x57d20c={'where':{'id':_0xf8f02[_0xc9d5('0x56')]['id']}},_0xd34d48={};_0xd34d48[_0xc9d5('0x40')]=_['keys'](db[_0xc9d5('0x4f')]['rawAttributes']);_0x57d20c[_0xc9d5('0x45')]=_['intersection'](_0xd34d48['model'],qs[_0xc9d5('0x46')](_0xf8f02[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x57d20c[_0xc9d5('0x45')]=_0x57d20c[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x57d20c[_0xc9d5('0x45')]:_0xd34d48[_0xc9d5('0x40')];if(_0xf8f02['query'][_0xc9d5('0x50')]){_0x57d20c[_0xc9d5('0x51')]=[{'all':!![]}];}_0x57d20c=_['merge']({},_0x57d20c,_0xf8f02[_0xc9d5('0x4e')]);return db[_0xc9d5('0x4f')][_0xc9d5('0x35')](_0x57d20c)[_0xc9d5('0x29')](handleEntityNotFound(_0x5efda9,null))[_0xc9d5('0x29')](function(_0xfcef8c){if(_0xfcef8c){var _0xb2c8d7=_0xfcef8c[_0xc9d5('0x2b')]({'plain':!![]});_0xb2c8d7=qs['omit'](_0xb2c8d7,['id',_0xc9d5('0x5f'),_0xc9d5('0x60')]);_0xf8f02['body']=_[_0xc9d5('0x61')](_0xf8f02[_0xc9d5('0x62')],['id',_0xc9d5('0x5f'),_0xc9d5('0x60')]);return db[_0xc9d5('0x4f')][_0xc9d5('0x57')](_[_0xc9d5('0x63')](_0xb2c8d7,_0xf8f02['body']),{'include':_0xf8f02[_0xc9d5('0x41')][_0xc9d5('0x50')]?[{'all':!![]}]:undefined})[_0xc9d5('0x29')](function(_0x1b13ad){var _0x3ca94b=_0xf8f02['user']['get']({'plain':!![]});if(!_0x3ca94b)throw new Error(_0xc9d5('0x58'));if(_0x3ca94b[_0xc9d5('0x59')]===_0xc9d5('0x5a')){var _0x204173=_0x1b13ad['get']({'plain':!![]});var _0x3b9ea2=[{'name':_0xc9d5('0x2c'),'value':_0xc9d5('0x5b')},{'name':_0xc9d5('0x2d'),'value':'outbound'}];var _0x1f9cc1=_['find'](_0x3b9ea2,['value',_0x204173[_0xc9d5('0x34')]])[_0xc9d5('0x36')];return db[_0xc9d5('0x64')][_0xc9d5('0x35')]({'where':{'name':_0x1f9cc1,'userProfileId':_0x3ca94b[_0xc9d5('0x5c')]},'raw':!![]})['then'](function(_0x13edf5){if(_0x13edf5&&_0x13edf5[_0xc9d5('0x65')]===0x0){return db[_0xc9d5('0x37')][_0xc9d5('0x57')]({'name':_0x204173[_0xc9d5('0x36')],'resourceId':_0x204173['id'],'type':_0x13edf5[_0xc9d5('0x36')],'sectionId':_0x13edf5['id']},{})[_0xc9d5('0x29')](function(){return _0x1b13ad;});}else{return _0x1b13ad;}})[_0xc9d5('0x54')](function(_0x5565a9){logger[_0xc9d5('0x39')](_0xc9d5('0x5d'),_0x5565a9);throw _0x5565a9;});}return _0x1b13ad;});}})[_0xc9d5('0x29')](respondWithResult(_0x5efda9,0xc9))['catch'](handleError(_0x5efda9,null));};exports[_0xc9d5('0x28')]=function(_0x251469,_0x2f070d){if(_0x251469[_0xc9d5('0x62')]['id']){delete _0x251469[_0xc9d5('0x62')]['id'];}return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x251469[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x2f070d,null))[_0xc9d5('0x29')](saveUpdates(_0x251469[_0xc9d5('0x62')],null))[_0xc9d5('0x29')](respondWithResult(_0x2f070d,null))[_0xc9d5('0x54')](handleError(_0x2f070d,null));};exports[_0xc9d5('0x2a')]=function(_0x19644d,_0x3ade94){return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x19644d['params']['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x3ade94,null))[_0xc9d5('0x29')](removeEntity(_0x3ade94,null))['catch'](handleError(_0x3ade94,null));};exports['getHoppers']=function(_0x12dd83,_0x205a45,_0x5ddeb6){var _0xe45fc9={'raw':![],'where':{}};var _0x2f683c={};var _0xd65d0={'count':0x0,'rows':[]};return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x12dd83['params']['id']}})['then'](handleEntityNotFound(_0x205a45,null))[_0xc9d5('0x29')](function(_0x3cc8af){if(_0x3cc8af){_0x2f683c['model']=_[_0xc9d5('0x42')](db[_0xc9d5('0x67')]['rawAttributes']);_0x2f683c[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0x12dd83['query']);_0x2f683c['filters']=_['intersection'](_0x2f683c[_0xc9d5('0x40')],_0x2f683c['query']);_0xe45fc9[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x2f683c[_0xc9d5('0x40')],qs['fields'](_0x12dd83[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0xe45fc9[_0xc9d5('0x45')]=_0xe45fc9[_0xc9d5('0x45')]['length']?_0xe45fc9[_0xc9d5('0x45')]:_0x2f683c[_0xc9d5('0x40')];if(!_0x12dd83[_0xc9d5('0x41')]['hasOwnProperty'](_0xc9d5('0x68'))){_0xe45fc9[_0xc9d5('0x49')]=qs[_0xc9d5('0x49')](_0x12dd83[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0xe45fc9[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x12dd83['query']['offset']);}_0xe45fc9[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x12dd83[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0xe45fc9[_0xc9d5('0x4c')]=qs['filters'](_[_0xc9d5('0x69')](_0x12dd83[_0xc9d5('0x41')],_0x2f683c[_0xc9d5('0x43')]));_0xe45fc9[_0xc9d5('0x4c')]['VoiceQueueId']=_0x3cc8af['id'];if(_0x12dd83[_0xc9d5('0x41')]['filter']){_0xe45fc9['where']=_['merge'](_0xe45fc9['where'],{'$or':_['map'](_0xe45fc9['attributes'],function(_0x3efd9a){var _0x109ac8={};_0x109ac8[_0x3efd9a]={'$like':'%'+_0x12dd83[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0x109ac8;})});}_0xe45fc9=_[_0xc9d5('0x63')]({},_0xe45fc9,_0x12dd83['options']);return db['CmHopper'][_0xc9d5('0x22')]({'where':_0xe45fc9[_0xc9d5('0x4c')]})[_0xc9d5('0x29')](function(_0x2196b7){_0xd65d0[_0xc9d5('0x22')]=_0x2196b7;if(_0x12dd83['query'][_0xc9d5('0x50')]){_0xe45fc9[_0xc9d5('0x51')]=[{'all':!![]}];}return db[_0xc9d5('0x67')][_0xc9d5('0x52')](_0xe45fc9);})['then'](function(_0x3b3d43){_0xd65d0[_0xc9d5('0x53')]=_0x3b3d43;return _0xd65d0;});}})[_0xc9d5('0x29')](respondWithFilteredResult(_0x205a45,_0xe45fc9))['catch'](handleError(_0x205a45,null));};exports[_0xc9d5('0x6a')]=function(_0x2fe7f2,_0x4ed5b6,_0x12b257){var _0x24ad28={'raw':!![],'where':{}};var _0x4474e2={};var _0x2e2b7e={'count':0x0,'rows':[]};return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x2fe7f2[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x4ed5b6,null))['then'](function(_0x3af774){if(_0x3af774){_0x4474e2['model']=_['keys'](db['CmHopperHistory']['rawAttributes']);_0x4474e2['query']=_['keys'](_0x2fe7f2['query']);_0x4474e2[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x4474e2[_0xc9d5('0x40')],_0x4474e2[_0xc9d5('0x41')]);_0x24ad28[_0xc9d5('0x45')]=_['intersection'](_0x4474e2[_0xc9d5('0x40')],qs['fields'](_0x2fe7f2[_0xc9d5('0x41')]['fields']));_0x24ad28[_0xc9d5('0x45')]=_0x24ad28[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x24ad28['attributes']:_0x4474e2[_0xc9d5('0x40')];if(!_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x48')]('nolimit')){_0x24ad28[_0xc9d5('0x49')]=qs[_0xc9d5('0x49')](_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0x24ad28['offset']=qs['offset'](_0x2fe7f2['query'][_0xc9d5('0x20')]);}_0x24ad28['order']=qs[_0xc9d5('0x4b')](_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0x24ad28['where']=qs[_0xc9d5('0x43')](_['pick'](_0x2fe7f2[_0xc9d5('0x41')],_0x4474e2[_0xc9d5('0x43')]));_0x24ad28[_0xc9d5('0x4c')][_0xc9d5('0x6b')]=_0x3af774['id'];if(_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x2f')]){_0x24ad28[_0xc9d5('0x4c')]=_['merge'](_0x24ad28['where'],{'$or':_[_0xc9d5('0x31')](_0x24ad28['attributes'],function(_0x5d458f){var _0x115201={};_0x115201[_0x5d458f]={'$like':'%'+_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0x115201;})});}_0x24ad28=_['merge']({},_0x24ad28,_0x2fe7f2[_0xc9d5('0x4e')]);return db[_0xc9d5('0x6c')][_0xc9d5('0x22')]({'where':_0x24ad28['where']})['then'](function(_0x3c6cb5){_0x2e2b7e[_0xc9d5('0x22')]=_0x3c6cb5;if(_0x2fe7f2[_0xc9d5('0x41')][_0xc9d5('0x50')]){_0x24ad28['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xc9d5('0x52')](_0x24ad28);})[_0xc9d5('0x29')](function(_0x1b2c0b){_0x2e2b7e['rows']=_0x1b2c0b;return _0x2e2b7e;});}})[_0xc9d5('0x29')](respondWithFilteredResult(_0x4ed5b6,_0x24ad28))[_0xc9d5('0x54')](handleError(_0x4ed5b6,null));};exports[_0xc9d5('0x6d')]=function(_0xf2e120,_0x205c45,_0x52b01b){var _0x35c508={'raw':!![],'where':{}};var _0x4db51d={};var _0x1a466c={'count':0x0,'rows':[]};return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0xf2e120[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x205c45,null))[_0xc9d5('0x29')](function(_0x3f493b){if(_0x3f493b){_0x4db51d[_0xc9d5('0x40')]=_[_0xc9d5('0x42')](db['CmHopperFinal'][_0xc9d5('0x3d')]);_0x4db51d[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0xf2e120[_0xc9d5('0x41')]);_0x4db51d[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x4db51d[_0xc9d5('0x40')],_0x4db51d['query']);_0x35c508['attributes']=_[_0xc9d5('0x44')](_0x4db51d[_0xc9d5('0x40')],qs[_0xc9d5('0x46')](_0xf2e120['query']['fields']));_0x35c508[_0xc9d5('0x45')]=_0x35c508['attributes'][_0xc9d5('0x47')]?_0x35c508[_0xc9d5('0x45')]:_0x4db51d[_0xc9d5('0x40')];if(!_0xf2e120[_0xc9d5('0x41')][_0xc9d5('0x48')](_0xc9d5('0x68'))){_0x35c508[_0xc9d5('0x49')]=qs['limit'](_0xf2e120[_0xc9d5('0x41')]['limit']);_0x35c508[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0xf2e120[_0xc9d5('0x41')][_0xc9d5('0x20')]);}_0x35c508[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0xf2e120['query'][_0xc9d5('0x4b')]);_0x35c508[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0xf2e120[_0xc9d5('0x41')],_0x4db51d['filters']));_0x35c508[_0xc9d5('0x4c')][_0xc9d5('0x6b')]=_0x3f493b['id'];if(_0xf2e120[_0xc9d5('0x41')][_0xc9d5('0x2f')]){_0x35c508[_0xc9d5('0x4c')]=_[_0xc9d5('0x63')](_0x35c508[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x35c508['attributes'],function(_0x31d8ef){var _0x492b74={};_0x492b74[_0x31d8ef]={'$like':'%'+_0xf2e120['query']['filter']+'%'};return _0x492b74;})});}_0x35c508=_[_0xc9d5('0x63')]({},_0x35c508,_0xf2e120[_0xc9d5('0x4e')]);return db[_0xc9d5('0x6e')][_0xc9d5('0x22')]({'where':_0x35c508[_0xc9d5('0x4c')]})[_0xc9d5('0x29')](function(_0x5de234){_0x1a466c[_0xc9d5('0x22')]=_0x5de234;if(_0xf2e120['query'][_0xc9d5('0x50')]){_0x35c508[_0xc9d5('0x51')]=[{'all':!![]}];}return db[_0xc9d5('0x6e')][_0xc9d5('0x52')](_0x35c508);})['then'](function(_0x530877){_0x1a466c[_0xc9d5('0x53')]=_0x530877;return _0x1a466c;});}})[_0xc9d5('0x29')](respondWithFilteredResult(_0x205c45,_0x35c508))['catch'](handleError(_0x205c45,null));};exports[_0xc9d5('0x6f')]=function(_0x23df53,_0x5f5c7e,_0x32daa7){var _0x272c5={'raw':!![],'where':{}};var _0x4bc952={};var _0xa7e48d={'count':0x0,'rows':[]};return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x23df53[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x5f5c7e,null))[_0xc9d5('0x29')](function(_0x25f262){if(_0x25f262){_0x4bc952['model']=_[_0xc9d5('0x42')](db[_0xc9d5('0x70')][_0xc9d5('0x3d')]);_0x4bc952[_0xc9d5('0x41')]=_['keys'](_0x23df53[_0xc9d5('0x41')]);_0x4bc952['filters']=_[_0xc9d5('0x44')](_0x4bc952[_0xc9d5('0x40')],_0x4bc952['query']);_0x272c5[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x4bc952['model'],qs['fields'](_0x23df53[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x272c5[_0xc9d5('0x45')]=_0x272c5[_0xc9d5('0x45')]['length']?_0x272c5[_0xc9d5('0x45')]:_0x4bc952[_0xc9d5('0x40')];if(!_0x23df53[_0xc9d5('0x41')][_0xc9d5('0x48')](_0xc9d5('0x68'))){_0x272c5['limit']=qs[_0xc9d5('0x49')](_0x23df53['query'][_0xc9d5('0x49')]);_0x272c5[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x23df53[_0xc9d5('0x41')][_0xc9d5('0x20')]);}_0x272c5[_0xc9d5('0x4a')]=qs['sort'](_0x23df53['query'][_0xc9d5('0x4b')]);_0x272c5[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x23df53['query'],_0x4bc952[_0xc9d5('0x43')]));_0x272c5[_0xc9d5('0x4c')]['VoiceQueueId']=_0x25f262['id'];if(_0x23df53[_0xc9d5('0x41')][_0xc9d5('0x2f')]){_0x272c5['where']=_[_0xc9d5('0x63')](_0x272c5[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x272c5[_0xc9d5('0x45')],function(_0x513c08){var _0x445f03={};_0x445f03[_0x513c08]={'$like':'%'+_0x23df53[_0xc9d5('0x41')]['filter']+'%'};return _0x445f03;})});}_0x272c5=_[_0xc9d5('0x63')]({},_0x272c5,_0x23df53[_0xc9d5('0x4e')]);return db[_0xc9d5('0x70')][_0xc9d5('0x22')]({'where':_0x272c5['where']})[_0xc9d5('0x29')](function(_0x5dcd43){_0xa7e48d['count']=_0x5dcd43;if(_0x23df53[_0xc9d5('0x41')][_0xc9d5('0x50')]){_0x272c5[_0xc9d5('0x51')]=[{'all':!![]}];}return db[_0xc9d5('0x70')][_0xc9d5('0x52')](_0x272c5);})['then'](function(_0x20e29a){_0xa7e48d[_0xc9d5('0x53')]=_0x20e29a;return _0xa7e48d;});}})[_0xc9d5('0x29')](respondWithFilteredResult(_0x5f5c7e,_0x272c5))['catch'](handleError(_0x5f5c7e,null));};exports[_0xc9d5('0x71')]=function(_0x5723f4,_0x332675,_0x46f070){var _0x19ed70={};var _0x3769c1={};var _0x1cd5c9;var _0xbabdf3;return db[_0xc9d5('0x4f')]['findOne']({'where':{'id':_0x5723f4[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x332675,null))[_0xc9d5('0x29')](function(_0x5b386b){if(_0x5b386b){_0x1cd5c9=_0x5b386b;_0x3769c1[_0xc9d5('0x40')]=_[_0xc9d5('0x42')](db[_0xc9d5('0x72')]['rawAttributes']);_0x3769c1[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0x5723f4[_0xc9d5('0x41')]);_0x3769c1['filters']=_['intersection'](_0x3769c1[_0xc9d5('0x40')],_0x3769c1[_0xc9d5('0x41')]);_0x19ed70[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x3769c1[_0xc9d5('0x40')],qs[_0xc9d5('0x46')](_0x5723f4[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x19ed70[_0xc9d5('0x45')]=_0x19ed70[_0xc9d5('0x45')]['length']?_0x19ed70[_0xc9d5('0x45')]:_0x3769c1[_0xc9d5('0x40')];_0x19ed70[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x5723f4[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0x19ed70[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x5723f4[_0xc9d5('0x41')],_0x3769c1[_0xc9d5('0x43')]));if(_0x5723f4['query']['filter']){_0x19ed70[_0xc9d5('0x4c')]=_['merge'](_0x19ed70[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x19ed70[_0xc9d5('0x45')],function(_0x15a341){var _0x4048e5={};_0x4048e5[_0x15a341]={'$like':'%'+_0x5723f4['query']['filter']+'%'};return _0x4048e5;})});}_0x19ed70=_[_0xc9d5('0x63')]({},_0x19ed70,_0x5723f4[_0xc9d5('0x4e')]);return _0x1cd5c9[_0xc9d5('0x71')](_0x19ed70);}})[_0xc9d5('0x29')](function(_0x67799){if(_0x67799){_0xbabdf3=_0x67799['length'];if(!_0x5723f4[_0xc9d5('0x41')][_0xc9d5('0x48')](_0xc9d5('0x68'))){_0x19ed70[_0xc9d5('0x49')]=qs[_0xc9d5('0x49')](_0x5723f4[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0x19ed70[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x5723f4[_0xc9d5('0x41')][_0xc9d5('0x20')]);}return _0x1cd5c9[_0xc9d5('0x71')](_0x19ed70);}})[_0xc9d5('0x29')](function(_0x360aa9){if(_0x360aa9){return _0x360aa9?{'count':_0xbabdf3,'rows':_0x360aa9}:null;}})[_0xc9d5('0x29')](respondWithResult(_0x332675,null))[_0xc9d5('0x54')](handleError(_0x332675,null));};exports[_0xc9d5('0x73')]=function(_0x2e23d7,_0x56c33b,_0x41a576){var _0x10e1c4=_0x2e23d7[_0xc9d5('0x62')][_0xc9d5('0x74')];var _0x3aa6b2=_[_0xc9d5('0x31')](_0x10e1c4,'id');return db['Team'][_0xc9d5('0x52')]({'where':{'id':_0x3aa6b2},'attributes':['id'],'include':[{'model':db[_0xc9d5('0x75')],'as':_0xc9d5('0x76'),'attributes':['id',_0xc9d5('0x36'),'online',_0xc9d5('0x77'),'interface'],'raw':!![]}]})[_0xc9d5('0x29')](function(_0x57cef4){if(_0x57cef4){var _0x39df78=_['flatMap'](_0x57cef4,function(_0x25f767){var _0x55028e=_0x25f767[_0xc9d5('0x2b')]({'plain':!![]});_0x55028e[_0xc9d5('0x76')]['forEach'](function(_0x40bbff){_0x40bbff[_0xc9d5('0x78')]=_[_0xc9d5('0x35')](_0x10e1c4,{'id':_0x55028e['id']})[_0xc9d5('0x78')];});return _0x55028e['Agents'];});return db[_0xc9d5('0x4f')]['find']({'where':{'id':_0x2e23d7['params']['id']}})[_0xc9d5('0x29')](function(_0x54757b){return db['sequelize'][_0xc9d5('0x79')](function(_0x1ecb12){return _0x54757b['addTeams'](_0x3aa6b2,{'transaction':_0x1ecb12})[_0xc9d5('0x29')](function(){return BPromise[_0xc9d5('0x7a')](_0x10e1c4,function(_0x12424e){return db[_0xc9d5('0x7b')][_0xc9d5('0x7c')]({'TeamId':_0x12424e['id'],'VoiceQueueId':_0x2e23d7[_0xc9d5('0x56')]['id'],'penalty':_0x12424e['penalty']},{'transaction':_0x1ecb12});});})[_0xc9d5('0x29')](function(){return BPromise[_0xc9d5('0x7a')](_0x39df78,function(_0x12070c){return db[_0xc9d5('0x7d')][_0xc9d5('0x7e')]({'where':{'UserId':_0x12070c['id'],'VoiceQueueId':_0x2e23d7[_0xc9d5('0x56')]['id']},'defaults':{'penalty':_0x12070c['penalty']},'transaction':_0x1ecb12});});})[_0xc9d5('0x29')](function(){return BPromise[_0xc9d5('0x7a')](_[_0xc9d5('0x2f')](_0x39df78,{'online':!![]}),function(_0x49325c){return db[_0xc9d5('0x7f')][_0xc9d5('0x7c')]({'membername':_0x49325c[_0xc9d5('0x36')],'UserId':_0x49325c['id'],'queue_name':_0x54757b[_0xc9d5('0x36')],'VoiceQueueId':_0x54757b['id'],'interface':_[_0xc9d5('0x80')](_0x49325c['interface'])?util[_0xc9d5('0x81')](_0xc9d5('0x82'),_0x49325c['name']):_0x49325c[_0xc9d5('0x83')],'paused':_0x49325c[_0xc9d5('0x77')]||![],'penalty':_0x49325c[_0xc9d5('0x78')]},{'transaction':_0x1ecb12});});})[_0xc9d5('0x29')](function(){_0x39df78['forEach'](function(_0x5e7c7e){socket[_0xc9d5('0x84')](_0xc9d5('0x85'),{'UserId':_0x5e7c7e['id'],'VoiceQueueId':_0x54757b['id']});});});});});}})[_0xc9d5('0x29')](respondWithStatusCode(_0x56c33b,null))['catch'](handleError(_0x56c33b,null));};exports[_0xc9d5('0x86')]=function(_0x4b4fa7,_0x5c3b49,_0x4b3eaa){return db[_0xc9d5('0x72')][_0xc9d5('0x52')]({'where':{'id':_0x4b4fa7['query'][_0xc9d5('0x87')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc9d5('0x76'),'attributes':['id'],'raw':!![]}]})[_0xc9d5('0x29')](handleEntityNotFound(_0x5c3b49,null))[_0xc9d5('0x29')](function(_0x130299){var _0x281b73=_['map'](_0x130299,'id');var _0x46f285=[];var _0x42ec1a=[];var _0x3e1807=squel[_0xc9d5('0x88')]();_0x3e1807[_0xc9d5('0x89')](_0xc9d5('0x8a'))[_0xc9d5('0x8b')](_0xc9d5('0x8c'),'tq')[_0xc9d5('0x8d')](_0xc9d5('0x8e'),'ut',_0xc9d5('0x8f'))[_0xc9d5('0x4c')](_0xc9d5('0x90'),_0x4b4fa7[_0xc9d5('0x56')]['id']);for(var _0x41f1d5=0x0;_0x41f1d5<_0x130299['length'];_0x41f1d5+=0x1){let _0x688055=_0x130299[_0x41f1d5];for(var _0x3bbb1b=0x0;_0x3bbb1b<_0x688055[_0xc9d5('0x76')][_0xc9d5('0x47')];_0x3bbb1b+=0x1){let _0x4ffb09=_0x688055[_0xc9d5('0x76')][_0x3bbb1b];var _0x1f9b0c=_0x3e1807[_0xc9d5('0x5e')]();_0x1f9b0c[_0xc9d5('0x4c')]('ut.UserId\x20=\x20?',_0x4ffb09['id']);_0x42ec1a['push'](db[_0xc9d5('0x91')][_0xc9d5('0x41')](_0x1f9b0c[_0xc9d5('0x92')](),{'type':db[_0xc9d5('0x91')]['QueryTypes'][_0xc9d5('0x93')]})['then'](function(_0x5433ac){if(_0x5433ac['length']===0x1){return _0x4ffb09['id'];}else{var _0x58d0ae=_[_0xc9d5('0x94')](_[_0xc9d5('0x31')](_0x5433ac,_0xc9d5('0x95')),function(_0x5270da){return _[_0xc9d5('0x33')](_0x281b73,_0x5270da);});if(_0x58d0ae){return _0x4ffb09['id'];}}}));}}return BPromise['all'](_0x42ec1a)[_0xc9d5('0x29')](function(_0x472011){_0x46f285=_(_0x46f285)[_0xc9d5('0x96')](_0x472011)[_0xc9d5('0x97')]()['value']();return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x4b4fa7[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](function(_0x4c6ddc){return db[_0xc9d5('0x91')][_0xc9d5('0x79')](function(_0x9c2d4c){return _0x4c6ddc['removeTeams'](_0x4b4fa7[_0xc9d5('0x41')][_0xc9d5('0x87')],{'transaction':_0x9c2d4c})[_0xc9d5('0x29')](function(){if(!_[_0xc9d5('0x98')](_0x46f285)){return _0x4c6ddc[_0xc9d5('0x99')](_0x46f285,{'transaction':_0x9c2d4c})[_0xc9d5('0x29')](function(){return db[_0xc9d5('0x7f')][_0xc9d5('0x2a')]({'where':{'VoiceQueueId':_0x4b4fa7[_0xc9d5('0x56')]['id'],'UserId':_0x46f285},'transaction':_0x9c2d4c});});}})['then'](function(){_0x46f285[_0xc9d5('0x9a')](function(_0x5a8314){socket['emit'](_0xc9d5('0x9b'),{'UserId':_0x5a8314,'VoiceQueueId':_0x4c6ddc['id']});});});});});});})[_0xc9d5('0x29')](respondWithStatusCode(_0x5c3b49,null))['catch'](handleError(_0x5c3b49,null));};exports['addAgents']=function(_0x51d4f1,_0x576d9b,_0x1ece1a){var _0x1f1972,_0x5a7fa8;return db['VoiceQueue']['find']({'where':{'id':_0x51d4f1[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x576d9b,null))[_0xc9d5('0x29')](function(_0x124015){if(_0x124015){_0x5a7fa8=_0x124015;return _0x124015[_0xc9d5('0x9c')](_0x51d4f1['body']['ids'],_['omit'](_0x51d4f1[_0xc9d5('0x62')],[_0xc9d5('0x87'),'id'])||{})[_0xc9d5('0x9d')](function(_0x3e249c){for(var _0x450b4b=0x0;_0x450b4b<_0x51d4f1['body'][_0xc9d5('0x87')][_0xc9d5('0x47')];_0x450b4b+=0x1){socket[_0xc9d5('0x84')]('userVoiceQueue:save',{'UserId':Number(_0x51d4f1[_0xc9d5('0x62')][_0xc9d5('0x87')][_0x450b4b]),'VoiceQueueId':Number(_0x51d4f1[_0xc9d5('0x56')]['id'])});}return _0x3e249c;});}})[_0xc9d5('0x29')](function(_0x4c692f){_0x1f1972=_0x4c692f||[];if(_0x5a7fa8){return db['User'][_0xc9d5('0x52')]({'where':{'id':_0x51d4f1[_0xc9d5('0x62')]['ids']},'attributes':['id',_0xc9d5('0x36'),_0xc9d5('0x9e'),_0xc9d5('0x77'),_0xc9d5('0x83')],'raw':!![]});}})[_0xc9d5('0x29')](function(_0x38e2df){if(!_[_0xc9d5('0x98')](_0x38e2df)){var _0x478900=[];for(var _0x2075bb=0x0;_0x2075bb<_0x38e2df[_0xc9d5('0x47')];_0x2075bb++){if(_0x38e2df[_0x2075bb]['online']){_0x478900[_0xc9d5('0x9f')](db[_0xc9d5('0x7f')][_0xc9d5('0x7c')]({'membername':_0x38e2df[_0x2075bb][_0xc9d5('0x36')],'UserId':_0x38e2df[_0x2075bb]['id'],'queue_name':_0x5a7fa8[_0xc9d5('0x36')],'VoiceQueueId':_0x5a7fa8['id'],'interface':_['isNil'](_0x38e2df[_0x2075bb][_0xc9d5('0x83')])?util[_0xc9d5('0x81')](_0xc9d5('0x82'),_0x38e2df[_0x2075bb][_0xc9d5('0x36')]):_0x38e2df[_0x2075bb][_0xc9d5('0x83')],'paused':_0x38e2df[_0x2075bb][_0xc9d5('0x77')]||![],'penalty':_0x51d4f1[_0xc9d5('0x62')][_0xc9d5('0x78')]||0x0}));}}return BPromise[_0xc9d5('0xa0')](_0x478900);}})[_0xc9d5('0x29')](function(){return _0x1f1972;})['then'](respondWithResult(_0x576d9b,null))[_0xc9d5('0x54')](handleError(_0x576d9b,null));};exports['removeAgents']=function(_0x549655,_0x38df15,_0x4c945d){return db['VoiceQueue'][_0xc9d5('0x35')]({'where':{'id':_0x549655['params']['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x38df15,null))[_0xc9d5('0x29')](function(_0x367a18){if(_0x367a18){return _0x367a18['removeAgents'](_0x549655[_0xc9d5('0x41')][_0xc9d5('0x87')])[_0xc9d5('0x29')](function(){if(_[_0xc9d5('0xa1')](_0x549655[_0xc9d5('0x41')]['ids'])){for(var _0xf8fd08=0x0;_0xf8fd08<_0x549655[_0xc9d5('0x41')][_0xc9d5('0x87')][_0xc9d5('0x47')];_0xf8fd08+=0x1){socket[_0xc9d5('0x84')](_0xc9d5('0x9b'),{'UserId':Number(_0x549655['query'][_0xc9d5('0x87')][_0xf8fd08]),'VoiceQueueId':Number(_0x549655[_0xc9d5('0x56')]['id'])});}}else{socket[_0xc9d5('0x84')]('userVoiceQueue:remove',{'UserId':Number(_0x549655['query'][_0xc9d5('0x87')]),'VoiceQueueId':Number(_0x549655[_0xc9d5('0x56')]['id'])});}});}})[_0xc9d5('0x29')](function(_0x637a1){return db[_0xc9d5('0x7f')]['destroy']({'where':{'VoiceQueueId':_0x549655['params']['id'],'UserId':_0x549655[_0xc9d5('0x41')][_0xc9d5('0x87')]}})[_0xc9d5('0x29')](function(){return _0x637a1;});})[_0xc9d5('0x29')](respondWithStatusCode(_0x38df15,null))[_0xc9d5('0x54')](handleError(_0x38df15,null));};exports['getAgents']=function(_0x1cf90c,_0x30ece6,_0x19483){var _0x425e43={};var _0x29d44e={};var _0x7aa54f;var _0x1ced91;return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x1cf90c[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x30ece6,null))['then'](function(_0x9a7b2a){if(_0x9a7b2a){_0x7aa54f=_0x9a7b2a;_0x29d44e[_0xc9d5('0x40')]=_[_0xc9d5('0x42')](db[_0xc9d5('0x75')][_0xc9d5('0x3d')]);_0x29d44e['query']=_[_0xc9d5('0x42')](_0x1cf90c[_0xc9d5('0x41')]);_0x29d44e[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x29d44e[_0xc9d5('0x40')],_0x29d44e[_0xc9d5('0x41')]);_0x425e43[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x29d44e['model'],qs[_0xc9d5('0x46')](_0x1cf90c[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x425e43[_0xc9d5('0x45')]=_0x425e43[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x425e43['attributes']:_0x29d44e[_0xc9d5('0x40')];_0x425e43[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x1cf90c[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0x425e43[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x1cf90c[_0xc9d5('0x41')],_0x29d44e['filters']));if(_0x1cf90c[_0xc9d5('0x41')]['filter']){_0x425e43[_0xc9d5('0x4c')]=_['merge'](_0x425e43['where'],{'$or':_[_0xc9d5('0x31')](_0x425e43[_0xc9d5('0x45')],function(_0x152d7a){var _0xde8bc5={};_0xde8bc5[_0x152d7a]={'$like':'%'+_0x1cf90c[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0xde8bc5;})});}_0x425e43=_[_0xc9d5('0x63')]({},_0x425e43,_0x1cf90c[_0xc9d5('0x4e')]);return _0x7aa54f[_0xc9d5('0xa2')](_0x425e43);}})[_0xc9d5('0x29')](function(_0x307307){if(_0x307307){_0x1ced91=_0x307307[_0xc9d5('0x47')];if(!_0x1cf90c[_0xc9d5('0x41')][_0xc9d5('0x48')]('nolimit')){_0x425e43['limit']=qs[_0xc9d5('0x49')](_0x1cf90c['query'][_0xc9d5('0x49')]);_0x425e43[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x1cf90c[_0xc9d5('0x41')]['offset']);}return _0x7aa54f[_0xc9d5('0xa2')](_0x425e43);}})['then'](function(_0x24d6f8){if(_0x24d6f8){return _0x24d6f8?{'count':_0x1ced91,'rows':_0x24d6f8}:null;}})[_0xc9d5('0x29')](respondWithResult(_0x30ece6,null))[_0xc9d5('0x54')](handleError(_0x30ece6,null));};exports[_0xc9d5('0xa3')]=function(_0x502c27,_0x16f528,_0xe81b11){var _0x42645a={};var _0x37377e={};var _0x2066d3;var _0x29cccd;return db['VoiceQueue'][_0xc9d5('0x66')]({'where':{'id':_0x502c27[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x16f528,null))[_0xc9d5('0x29')](function(_0xa8e326){if(_0xa8e326){_0x2066d3=_0xa8e326;_0x37377e[_0xc9d5('0x40')]=_[_0xc9d5('0x42')](db['UserVoiceQueueRt']['rawAttributes']);_0x37377e['query']=_[_0xc9d5('0x42')](_0x502c27[_0xc9d5('0x41')]);_0x37377e[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x37377e['model'],_0x37377e['query']);_0x42645a[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x37377e[_0xc9d5('0x40')],qs['fields'](_0x502c27[_0xc9d5('0x41')]['fields']));_0x42645a[_0xc9d5('0x45')]=_0x42645a['attributes']['length']?_0x42645a[_0xc9d5('0x45')]:_0x37377e['model'];_0x42645a[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x502c27[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0x42645a['where']=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x502c27[_0xc9d5('0x41')],_0x37377e[_0xc9d5('0x43')]));if(_0x502c27[_0xc9d5('0x41')]['filter']){_0x42645a[_0xc9d5('0x4c')]=_[_0xc9d5('0x63')](_0x42645a['where'],{'$or':_[_0xc9d5('0x31')](_0x42645a['attributes'],function(_0x341532){var _0x2f9f2d={};_0x2f9f2d[_0x341532]={'$like':'%'+_0x502c27[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0x2f9f2d;})});}_0x42645a=_[_0xc9d5('0x63')]({},_0x42645a,_0x502c27[_0xc9d5('0x4e')]);return _0x2066d3[_0xc9d5('0xa3')](_0x42645a);}})[_0xc9d5('0x29')](function(_0x1ace0b){if(_0x1ace0b){_0x29cccd=_0x1ace0b[_0xc9d5('0x47')];if(!_0x502c27[_0xc9d5('0x41')][_0xc9d5('0x48')](_0xc9d5('0x68'))){_0x42645a['limit']=qs['limit'](_0x502c27[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0x42645a[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x502c27[_0xc9d5('0x41')]['offset']);}return _0x2066d3[_0xc9d5('0xa3')](_0x42645a);}})[_0xc9d5('0x29')](function(_0x43a2bf){return _0x43a2bf?{'count':_0x29cccd,'rows':_0x43a2bf}:null;})[_0xc9d5('0x29')](respondWithResult(_0x16f528,null))[_0xc9d5('0x54')](handleError(_0x16f528,null));};exports['getLists']=function(_0x2680fd,_0x4d34ed,_0x3d880c){var _0x25440d={};var _0x16b837={};var _0x1c2a8d;var _0x57aff8;return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x2680fd[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x4d34ed,null))[_0xc9d5('0x29')](function(_0x97128e){if(_0x97128e){_0x1c2a8d=_0x97128e;_0x16b837['model']=_[_0xc9d5('0x42')](db['CmList'][_0xc9d5('0x3d')]);_0x16b837[_0xc9d5('0x41')]=_['keys'](_0x2680fd[_0xc9d5('0x41')]);_0x16b837[_0xc9d5('0x43')]=_[_0xc9d5('0x44')](_0x16b837[_0xc9d5('0x40')],_0x16b837[_0xc9d5('0x41')]);_0x25440d['attributes']=_[_0xc9d5('0x44')](_0x16b837['model'],qs['fields'](_0x2680fd[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x25440d[_0xc9d5('0x45')]=_0x25440d[_0xc9d5('0x45')][_0xc9d5('0x47')]?_0x25440d[_0xc9d5('0x45')]:_0x16b837[_0xc9d5('0x40')];_0x25440d[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x2680fd[_0xc9d5('0x41')]['sort']);_0x25440d[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x2680fd['query'],_0x16b837[_0xc9d5('0x43')]));if(_0x2680fd[_0xc9d5('0x41')]['filter']){_0x25440d['where']=_[_0xc9d5('0x63')](_0x25440d[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x25440d[_0xc9d5('0x45')],function(_0x3cb457){var _0x2842cf={};_0x2842cf[_0x3cb457]={'$like':'%'+_0x2680fd[_0xc9d5('0x41')][_0xc9d5('0x2f')]+'%'};return _0x2842cf;})});}_0x25440d=_[_0xc9d5('0x63')]({},_0x25440d,_0x2680fd[_0xc9d5('0x4e')]);return _0x1c2a8d['getLists'](_0x25440d);}})[_0xc9d5('0x29')](function(_0x2dc5e3){if(_0x2dc5e3){_0x57aff8=_0x2dc5e3['length'];if(!_0x2680fd[_0xc9d5('0x41')][_0xc9d5('0x48')](_0xc9d5('0x68'))){_0x25440d[_0xc9d5('0x49')]=qs[_0xc9d5('0x49')](_0x2680fd[_0xc9d5('0x41')][_0xc9d5('0x49')]);_0x25440d[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x2680fd['query']['offset']);}return _0x1c2a8d[_0xc9d5('0xa4')](_0x25440d);}})[_0xc9d5('0x29')](function(_0x37ebb8){if(_0x37ebb8){return _0x37ebb8?{'count':_0x57aff8,'rows':_0x37ebb8}:null;}})['then'](respondWithResult(_0x4d34ed,null))[_0xc9d5('0x54')](handleError(_0x4d34ed,null));};exports[_0xc9d5('0xa5')]=function(_0x148301,_0x3992a6,_0x47131a){var _0x5d0de6=moment()[_0xc9d5('0x81')](_0xc9d5('0xa6'));var _0x1344c4,_0x3e135e;return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x148301['params']['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x3992a6,null))['then'](function(_0x4f63ef){if(_0x4f63ef){_0x3e135e=_0x4f63ef;return _0x4f63ef['addLists'](_0x148301[_0xc9d5('0x62')][_0xc9d5('0x87')],_[_0xc9d5('0x61')](_0x148301[_0xc9d5('0x62')],[_0xc9d5('0x87'),'id'])||{});}return null;})[_0xc9d5('0x9d')](function(_0x24ab3f){var _0xce3e29;_0x1344c4=_0x24ab3f||[];var _0x199bd7=[];if(_0x24ab3f){for(var _0x244740=0x0;_0x244740<_0x24ab3f[_0xc9d5('0x47')];_0x244740+=0x1){var _0x499713=_0x24ab3f[_0x244740][_0xc9d5('0x2b')]({'plain':!![]});_0x3e135e[_0xc9d5('0xa7')]=_0x148301[_0xc9d5('0x62')][_0xc9d5('0xa7')]?_0x148301['body'][_0xc9d5('0xa7')]:_0x3e135e[_0xc9d5('0xa7')];switch(_0x3e135e[_0xc9d5('0xa7')]){case _0xc9d5('0xa8'):_0xce3e29=squel[_0xc9d5('0xa9')]()[_0xc9d5('0xaa')]('cm_hopper')[_0xc9d5('0xab')](['phone','scheduledAt',_0xc9d5('0xac'),'ListId',_0xc9d5('0x6b'),_0xc9d5('0x5f'),_0xc9d5('0x60')],squel[_0xc9d5('0x88')]()['field'](_0xc9d5('0xad'),'phone')['field']('\x27'+_0x5d0de6+'\x27',_0xc9d5('0xae'))[_0xc9d5('0x89')]('id',_0xc9d5('0xac'))[_0xc9d5('0x89')](_0x499713['CmListId'][_0xc9d5('0x92')](),_0xc9d5('0xaf'))[_0xc9d5('0x89')](_0x148301[_0xc9d5('0x56')]['id'][_0xc9d5('0x92')](),'VoiceQueueId')[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x5f'))[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x60'))[_0xc9d5('0x8b')](_0xc9d5('0xb0'))['where'](_0xc9d5('0xb1'))['where'](_0xc9d5('0xb2'),_0x499713[_0xc9d5('0xb3')][_0xc9d5('0x92')]())[_0xc9d5('0x4c')]('phone\x20IS\x20NOT\x20NULL')[_0xc9d5('0x4c')]('phone\x20NOT\x20IN\x20(?)',squel[_0xc9d5('0x88')]()[_0xc9d5('0x89')](_0xc9d5('0xb4'))[_0xc9d5('0x8b')](_0xc9d5('0xb5'))[_0xc9d5('0x4c')](_0xc9d5('0x90'),_0x148301[_0xc9d5('0x56')]['id'][_0xc9d5('0x92')]()))['where'](_0xc9d5('0xb6'),squel[_0xc9d5('0x88')]()[_0xc9d5('0x89')](_0xc9d5('0xb7'))['from'](_0xc9d5('0xb8'))[_0xc9d5('0x4c')](_0xc9d5('0x90'),_0x148301[_0xc9d5('0x56')]['id'][_0xc9d5('0x92')]())))[_0xc9d5('0x92')]();break;case _0xc9d5('0xb9'):_0xce3e29=squel[_0xc9d5('0xa9')]()[_0xc9d5('0xaa')](_0xc9d5('0xb8'))['fromQuery']([_0xc9d5('0xad'),_0xc9d5('0xae'),_0xc9d5('0xac'),_0xc9d5('0xaf'),'VoiceQueueId',_0xc9d5('0x5f'),_0xc9d5('0x60')],squel[_0xc9d5('0x88')]()[_0xc9d5('0x89')](_0xc9d5('0xad'),_0xc9d5('0xad'))[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27',_0xc9d5('0xae'))[_0xc9d5('0x89')]('id','ContactId')[_0xc9d5('0x89')](_0x499713['CmListId']['toString'](),'ListId')[_0xc9d5('0x89')](_0x148301['params']['id'][_0xc9d5('0x92')](),'VoiceQueueId')[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x5f'))['field']('\x27'+_0x5d0de6+'\x27','updatedAt')[_0xc9d5('0x8b')](_0xc9d5('0xb0'))[_0xc9d5('0x4c')](_0xc9d5('0xb1'))['where'](_0xc9d5('0xb2'),_0x499713[_0xc9d5('0xb3')]['toString']())[_0xc9d5('0x4c')](_0xc9d5('0xba'))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xc9d5('0x89')]('COALESCE(phone,\x27\x27)')[_0xc9d5('0x8b')](_0xc9d5('0xb8'))[_0xc9d5('0x4c')](_0xc9d5('0x90'),_0x148301[_0xc9d5('0x56')]['id'][_0xc9d5('0x92')]())))[_0xc9d5('0x92')]();break;default:_0xce3e29=squel[_0xc9d5('0xa9')]()['into'](_0xc9d5('0xb8'))[_0xc9d5('0xab')]([_0xc9d5('0xad'),_0xc9d5('0xae'),_0xc9d5('0xac'),_0xc9d5('0xaf'),_0xc9d5('0x6b'),'createdAt',_0xc9d5('0x60')],squel[_0xc9d5('0x88')]()[_0xc9d5('0x89')](_0xc9d5('0xad'),'phone')['field']('\x27'+_0x5d0de6+'\x27',_0xc9d5('0xae'))[_0xc9d5('0x89')]('id',_0xc9d5('0xac'))[_0xc9d5('0x89')](_0x499713['CmListId']['toString'](),_0xc9d5('0xaf'))['field'](_0x148301[_0xc9d5('0x56')]['id']['toString'](),'VoiceQueueId')[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x5f'))['field']('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x60'))['from']('cm_contacts')['where'](_0xc9d5('0xb1'))[_0xc9d5('0x4c')](_0xc9d5('0xb2'),_0x499713[_0xc9d5('0xb3')][_0xc9d5('0x92')]())[_0xc9d5('0x4c')](_0xc9d5('0xba')))[_0xc9d5('0x92')]();}_0x199bd7[_0xc9d5('0x9f')](db[_0xc9d5('0x91')]['query'](_0xce3e29));}return BPromise[_0xc9d5('0xa0')](_0x199bd7);}})['then'](function(){var _0x30e7df=[];var _0x405037=squel[_0xc9d5('0xa9')]()['into']('cm_hopper_additional_phones')[_0xc9d5('0xab')](['CmHopperId',_0xc9d5('0xad'),_0xc9d5('0xbb'),_0xc9d5('0x5f'),_0xc9d5('0x60')],squel[_0xc9d5('0x88')]()[_0xc9d5('0x89')](_0xc9d5('0xbc'))[_0xc9d5('0x89')](_0xc9d5('0xbd'))[_0xc9d5('0x89')]('ci.OrderBy+1')[_0xc9d5('0x89')]('\x27'+_0x5d0de6+'\x27','createdAt')['field']('\x27'+_0x5d0de6+'\x27',_0xc9d5('0x60'))[_0xc9d5('0x8b')](_0xc9d5('0xbe'),'ci')['join'](_0xc9d5('0xb8'),'h',_0xc9d5('0xbf'))[_0xc9d5('0x4c')](_0xc9d5('0xc0'),_0x5d0de6)[_0xc9d5('0x4c')](_0xc9d5('0xc1'),_0xc9d5('0xc2')))['toString']();_0x30e7df[_0xc9d5('0x9f')](db[_0xc9d5('0x91')]['query'](_0x405037));return BPromise[_0xc9d5('0xa0')](_0x30e7df);})[_0xc9d5('0x29')](function(){return _0x1344c4;})[_0xc9d5('0x29')](respondWithResult(_0x3992a6,null))[_0xc9d5('0x54')](handleError(_0x3992a6,null));};exports[_0xc9d5('0xc3')]=function(_0x36c9d2,_0x970ac6,_0x22008e){return db['VoiceQueue']['find']({'where':{'id':_0x36c9d2['params']['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x970ac6,null))[_0xc9d5('0x29')](function(_0x23a8ef){if(_0x23a8ef){return _0x23a8ef[_0xc9d5('0xc3')](_0x36c9d2[_0xc9d5('0x41')][_0xc9d5('0x87')]);}})['then'](function(_0x1ab497){if(_0x1ab497){return db[_0xc9d5('0x67')][_0xc9d5('0x2a')]({'where':{'ListId':_0x36c9d2[_0xc9d5('0x41')]['ids'],'VoiceQueueId':_0x36c9d2['params']['id']}})[_0xc9d5('0x29')](function(){return _0x1ab497;});}})[_0xc9d5('0x29')](respondWithStatusCode(_0x970ac6,null))[_0xc9d5('0x54')](handleError(_0x970ac6,null));};exports[_0xc9d5('0xc4')]=function(_0x51841c,_0x22b7d2,_0x24edca){var _0x25f7f4={};var _0x27a73a={};var _0x2ecd00;var _0x56e3ff;return db[_0xc9d5('0x4f')][_0xc9d5('0x66')]({'where':{'id':_0x51841c[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x22b7d2,null))[_0xc9d5('0x29')](function(_0x214ba4){if(_0x214ba4){_0x2ecd00=_0x214ba4;_0x27a73a[_0xc9d5('0x40')]=_[_0xc9d5('0x42')](db[_0xc9d5('0xc5')][_0xc9d5('0x3d')]);_0x27a73a[_0xc9d5('0x41')]=_[_0xc9d5('0x42')](_0x51841c[_0xc9d5('0x41')]);_0x27a73a['filters']=_[_0xc9d5('0x44')](_0x27a73a[_0xc9d5('0x40')],_0x27a73a['query']);_0x25f7f4[_0xc9d5('0x45')]=_[_0xc9d5('0x44')](_0x27a73a[_0xc9d5('0x40')],qs['fields'](_0x51841c[_0xc9d5('0x41')][_0xc9d5('0x46')]));_0x25f7f4[_0xc9d5('0x45')]=_0x25f7f4[_0xc9d5('0x45')]['length']?_0x25f7f4[_0xc9d5('0x45')]:_0x27a73a[_0xc9d5('0x40')];_0x25f7f4[_0xc9d5('0x4a')]=qs[_0xc9d5('0x4b')](_0x51841c[_0xc9d5('0x41')][_0xc9d5('0x4b')]);_0x25f7f4[_0xc9d5('0x4c')]=qs[_0xc9d5('0x43')](_[_0xc9d5('0x69')](_0x51841c[_0xc9d5('0x41')],_0x27a73a[_0xc9d5('0x43')]));if(_0x51841c[_0xc9d5('0x41')][_0xc9d5('0x2f')]){_0x25f7f4[_0xc9d5('0x4c')]=_['merge'](_0x25f7f4[_0xc9d5('0x4c')],{'$or':_[_0xc9d5('0x31')](_0x25f7f4[_0xc9d5('0x45')],function(_0x168f8f){var _0xd50a6e={};_0xd50a6e[_0x168f8f]={'$like':'%'+_0x51841c['query']['filter']+'%'};return _0xd50a6e;})});}_0x25f7f4=_[_0xc9d5('0x63')]({},_0x25f7f4,_0x51841c[_0xc9d5('0x4e')]);return _0x2ecd00[_0xc9d5('0xc4')](_0x25f7f4);}})['then'](function(_0x1805d2){if(_0x1805d2){_0x56e3ff=_0x1805d2[_0xc9d5('0x47')];if(!_0x51841c[_0xc9d5('0x41')][_0xc9d5('0x48')]('nolimit')){_0x25f7f4[_0xc9d5('0x49')]=qs[_0xc9d5('0x49')](_0x51841c[_0xc9d5('0x41')]['limit']);_0x25f7f4[_0xc9d5('0x20')]=qs[_0xc9d5('0x20')](_0x51841c['query'][_0xc9d5('0x20')]);}return _0x2ecd00['getBlackLists'](_0x25f7f4);}})[_0xc9d5('0x29')](function(_0x2828e2){if(_0x2828e2){return _0x2828e2?{'count':_0x56e3ff,'rows':_0x2828e2}:null;}})['then'](respondWithResult(_0x22b7d2,null))[_0xc9d5('0x54')](handleError(_0x22b7d2,null));};exports['addBlackLists']=function(_0x3523fd,_0x2020f9,_0x27e3c7){var _0x3d0753,_0x218dbd;return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x3523fd['params']['id']}})['then'](handleEntityNotFound(_0x2020f9,null))['then'](function(_0x3f826b){if(_0x3f826b){_0x218dbd=_0x3f826b;return _0x3f826b['addBlackLists'](_0x3523fd['body'][_0xc9d5('0x87')],_[_0xc9d5('0x61')](_0x3523fd['body'],[_0xc9d5('0x87'),'id'])||{});}return null;})[_0xc9d5('0x9d')](function(_0x55b1eb){var _0x5d6bee;_0x3d0753=_0x55b1eb||[];var _0x3c341b=[];if(_0x55b1eb){for(var _0x37418c=0x0;_0x37418c<_0x55b1eb[_0xc9d5('0x47')];_0x37418c+=0x1){var _0x34f5fe=_0x55b1eb[_0x37418c]['get']({'plain':!![]});_0x5d6bee=squel[_0xc9d5('0xa9')]()[_0xc9d5('0xaa')]('cm_hopper_black')[_0xc9d5('0xab')]([_0xc9d5('0xad'),_0xc9d5('0xac'),_0xc9d5('0xaf'),_0xc9d5('0x6b'),_0xc9d5('0x5f'),'updatedAt'],squel['select']()[_0xc9d5('0x89')](_0xc9d5('0xad'),_0xc9d5('0xad'))[_0xc9d5('0x89')]('id',_0xc9d5('0xac'))['field'](_0x34f5fe[_0xc9d5('0xb3')][_0xc9d5('0x92')](),_0xc9d5('0xaf'))[_0xc9d5('0x89')](_0x3523fd[_0xc9d5('0x56')]['id'][_0xc9d5('0x92')](),_0xc9d5('0x6b'))[_0xc9d5('0x89')](_0xc9d5('0xc6'),'createdAt')[_0xc9d5('0x89')](_0xc9d5('0xc6'),_0xc9d5('0x60'))[_0xc9d5('0x8b')](_0xc9d5('0xb0'))[_0xc9d5('0x4c')](_0xc9d5('0xb1'))[_0xc9d5('0x4c')]('ListId\x20=\x20?',_0x34f5fe[_0xc9d5('0xb3')][_0xc9d5('0x92')]())[_0xc9d5('0x4c')](_0xc9d5('0xba')))[_0xc9d5('0x92')]();_0x3c341b[_0xc9d5('0x9f')](db[_0xc9d5('0x91')]['query'](_0x5d6bee));}return BPromise[_0xc9d5('0xa0')](_0x3c341b);}})[_0xc9d5('0x29')](function(){return _0x3d0753;})[_0xc9d5('0x29')](respondWithResult(_0x2020f9,null))[_0xc9d5('0x54')](handleError(_0x2020f9,null));};exports[_0xc9d5('0xc7')]=function(_0x25ce87,_0x206ec5,_0x109396){return db[_0xc9d5('0x4f')][_0xc9d5('0x35')]({'where':{'id':_0x25ce87[_0xc9d5('0x56')]['id']}})[_0xc9d5('0x29')](handleEntityNotFound(_0x206ec5,null))[_0xc9d5('0x29')](function(_0x51041f){if(_0x51041f){return _0x51041f['removeBlackLists'](_0x25ce87['query']['ids']);}})[_0xc9d5('0x29')](function(_0x583d98){if(_0x583d98){return db[_0xc9d5('0x70')][_0xc9d5('0x2a')]({'where':{'ListId':_0x25ce87['query'][_0xc9d5('0x87')],'VoiceQueueId':_0x25ce87[_0xc9d5('0x56')]['id']}})['then'](function(){return _0x583d98;});}})[_0xc9d5('0x29')](respondWithStatusCode(_0x206ec5,null))['catch'](handleError(_0x206ec5,null));};
\ No newline at end of file
+var _0xf69c=['name','UserProfileResource','destroy','sendStatus','error','stack','send','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','map','options','VoiceQueue','include','findAll','catch','show','params','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','omit','createdAt','updatedAt','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','where','VoiceQueueId','CmHopper','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getTeams','addTeams','teams','Team','User','Agents','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','upsert','each','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','select','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','online','all','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','field','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','push','cm_hopper_additional_phones','CmHopperId','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','value','includes','type','find'];(function(_0x57fd69,_0x19f758){var _0x6f744c=function(_0x1681ba){while(--_0x1681ba){_0x57fd69['push'](_0x57fd69['shift']());}};_0x6f744c(++_0x19f758);}(_0xf69c,0x151));var _0xcf69=function(_0x3212cc,_0x3bfe46){_0x3212cc=_0x3212cc-0x0;var _0x3ecd2c=_0xf69c[_0x3212cc];return _0x3ecd2c;};'use strict';var emlformat=require(_0xcf69('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcf69('0x1'));var jsonpatch=require(_0xcf69('0x2'));var rp=require('request-promise');var moment=require(_0xcf69('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xcf69('0x4'));var util=require('util');var path=require(_0xcf69('0x5'));var sox=require('sox');var csv=require(_0xcf69('0x6'));var ejs=require(_0xcf69('0x7'));var fs=require('fs');var fs_extra=require(_0xcf69('0x8'));var _=require(_0xcf69('0x9'));var squel=require(_0xcf69('0xa'));var crypto=require('crypto');var jsforce=require(_0xcf69('0xb'));var deskjs=require(_0xcf69('0xc'));var toCsv=require(_0xcf69('0x6'));var querystring=require(_0xcf69('0xd'));var Papa=require('papaparse');var Redis=require(_0xcf69('0xe'));var authService=require(_0xcf69('0xf'));var qs=require(_0xcf69('0x10'));var as=require(_0xcf69('0x11'));var hardwareService=require(_0xcf69('0x12'));var logger=require(_0xcf69('0x13'))('api');var utils=require(_0xcf69('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xcf69('0x15'));var db=require(_0xcf69('0x16'))['db'];config[_0xcf69('0x17')]=_[_0xcf69('0x18')](config[_0xcf69('0x17')],{'host':_0xcf69('0x19'),'port':0x18eb});var socket=require(_0xcf69('0x1a'))(new Redis(config[_0xcf69('0x17')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x5c66b6,_0x525102){_0x525102=_0x525102||0xcc;return function(_0x41ff4a){if(_0x41ff4a){return _0x5c66b6['sendStatus'](_0x525102);}return _0x5c66b6[_0xcf69('0x1b')](_0x525102)[_0xcf69('0x1c')]();};}function respondWithResult(_0x2309f,_0x2ca371){_0x2ca371=_0x2ca371||0xc8;return function(_0x5691ec){if(_0x5691ec){return _0x2309f[_0xcf69('0x1b')](_0x2ca371)[_0xcf69('0x1d')](_0x5691ec);}};}function respondWithFilteredResult(_0x4e4055,_0x486e06){return function(_0x438700){if(_0x438700){var _0x3198a6=typeof _0x486e06[_0xcf69('0x1e')]===_0xcf69('0x1f')&&typeof _0x486e06[_0xcf69('0x20')]===_0xcf69('0x1f');var _0x120980=_0x438700[_0xcf69('0x21')];var _0x53666e=_0x3198a6?0x0:_0x486e06[_0xcf69('0x1e')];var _0x5c35e3=_0x3198a6?_0x438700[_0xcf69('0x21')]:_0x486e06[_0xcf69('0x1e')]+_0x486e06[_0xcf69('0x20')];var _0x3d02c6;if(_0x5c35e3>=_0x120980){_0x5c35e3=_0x120980;_0x3d02c6=0xc8;}else{_0x3d02c6=0xce;}_0x4e4055[_0xcf69('0x1b')](_0x3d02c6);return _0x4e4055[_0xcf69('0x22')](_0xcf69('0x23'),_0x53666e+'-'+_0x5c35e3+'/'+_0x120980)[_0xcf69('0x1d')](_0x438700);}return null;};}function patchUpdates(_0x3a159f){return function(_0x1061d4){try{jsonpatch[_0xcf69('0x24')](_0x1061d4,_0x3a159f,!![]);}catch(_0x7d86bc){return BPromise[_0xcf69('0x25')](_0x7d86bc);}return _0x1061d4[_0xcf69('0x26')]();};}function saveUpdates(_0x3ec2fb,_0x5d16ef){return function(_0x2b4c1b){if(_0x2b4c1b){return _0x2b4c1b[_0xcf69('0x27')](_0x3ec2fb)[_0xcf69('0x28')](function(_0x278ce3){return _0x278ce3;});}return null;};}function removeEntity(_0x9a006b,_0x1a0b33){return function(_0x5643b3){if(_0x5643b3){return _0x5643b3['destroy']()[_0xcf69('0x28')](function(){var _0x59de98=_0x5643b3[_0xcf69('0x29')]({'plain':!![]});var _0x81a49f=[{'name':_0xcf69('0x2a'),'value':_0xcf69('0x2b'),'ignore':![]},{'name':_0xcf69('0x2c'),'value':_0xcf69('0x2d'),'ignore':![]}];var _0x17d1e5=_(_0x81a49f)[_0xcf69('0x2e')]('ignore')['map'](_0xcf69('0x2f'))[_0xcf69('0x2f')]();if(_[_0xcf69('0x30')](_0x17d1e5,_0x59de98[_0xcf69('0x31')])){return;}var _0x539f6e=_[_0xcf69('0x32')](_0x81a49f,[_0xcf69('0x2f'),_0x59de98[_0xcf69('0x31')]])[_0xcf69('0x33')];return db[_0xcf69('0x34')][_0xcf69('0x35')]({'where':{'type':_0x539f6e,'resourceId':_0x59de98['id']}})[_0xcf69('0x28')](function(){return _0x5643b3;});})[_0xcf69('0x28')](function(){_0x9a006b[_0xcf69('0x1b')](0xcc)[_0xcf69('0x1c')]();});}};}function handleEntityNotFound(_0x4a5db6,_0x38753b){return function(_0x490c22){if(!_0x490c22){_0x4a5db6[_0xcf69('0x36')](0x194);}return _0x490c22;};}function handleError(_0x37d3e4,_0x3877c3){_0x3877c3=_0x3877c3||0x1f4;return function(_0x191699){logger[_0xcf69('0x37')](_0x191699[_0xcf69('0x38')]);if(_0x191699[_0xcf69('0x33')]){delete _0x191699[_0xcf69('0x33')];}_0x37d3e4[_0xcf69('0x1b')](_0x3877c3)[_0xcf69('0x39')](_0x191699);};}exports['index']=function(_0x2753fe,_0x10da39){var _0x58739d={},_0x171bd5={},_0x4962df={'count':0x0,'rows':[]};var _0x4018ac=_['map'](db['VoiceQueue'][_0xcf69('0x3a')],function(_0x33ec6c){return{'name':_0x33ec6c[_0xcf69('0x3b')],'type':_0x33ec6c[_0xcf69('0x31')][_0xcf69('0x3c')]};});_0x171bd5[_0xcf69('0x3d')]=_['map'](_0x4018ac,'name');_0x171bd5[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x2753fe[_0xcf69('0x3e')]);_0x171bd5[_0xcf69('0x40')]=_[_0xcf69('0x41')](_0x171bd5[_0xcf69('0x3d')],_0x171bd5[_0xcf69('0x3e')]);_0x58739d[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0x171bd5[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x2753fe[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x58739d[_0xcf69('0x42')]=_0x58739d[_0xcf69('0x42')][_0xcf69('0x44')]?_0x58739d[_0xcf69('0x42')]:_0x171bd5[_0xcf69('0x3d')];if(!_0x2753fe[_0xcf69('0x3e')][_0xcf69('0x45')](_0xcf69('0x46'))){_0x58739d['limit']=qs['limit'](_0x2753fe[_0xcf69('0x3e')][_0xcf69('0x20')]);_0x58739d[_0xcf69('0x1e')]=qs[_0xcf69('0x1e')](_0x2753fe['query'][_0xcf69('0x1e')]);}_0x58739d[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x2753fe[_0xcf69('0x3e')][_0xcf69('0x48')]);_0x58739d['where']=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x2753fe['query'],_0x171bd5[_0xcf69('0x40')]),_0x4018ac);if(_0x2753fe[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x58739d['where']=_[_0xcf69('0x4a')](_0x58739d['where'],{'$or':_[_0xcf69('0x4b')](_0x4018ac,function(_0x3b32bd){if(_0x3b32bd['type']!=='VIRTUAL'){var _0x8b01af={};_0x8b01af[_0x3b32bd[_0xcf69('0x33')]]={'$like':'%'+_0x2753fe[_0xcf69('0x3e')]['filter']+'%'};return _0x8b01af;}})});}_0x58739d=_['merge']({},_0x58739d,_0x2753fe[_0xcf69('0x4c')]);var _0x106284={'where':_0x58739d['where']};return db[_0xcf69('0x4d')][_0xcf69('0x21')](_0x106284)[_0xcf69('0x28')](function(_0x24128f){_0x4962df[_0xcf69('0x21')]=_0x24128f;if(_0x2753fe[_0xcf69('0x3e')]['includeAll']){_0x58739d[_0xcf69('0x4e')]=[{'all':!![]}];}return db[_0xcf69('0x4d')][_0xcf69('0x4f')](_0x58739d);})['then'](function(_0x1a1270){_0x4962df['rows']=_0x1a1270;return _0x4962df;})[_0xcf69('0x28')](respondWithFilteredResult(_0x10da39,_0x58739d))[_0xcf69('0x50')](handleError(_0x10da39,null));};exports[_0xcf69('0x51')]=function(_0x45c458,_0x3cc66c){var _0x57a296={'raw':![],'where':{'id':_0x45c458[_0xcf69('0x52')]['id']}},_0x57748d={};_0x57748d[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db['VoiceQueue']['rawAttributes']);_0x57748d['query']=_[_0xcf69('0x3f')](_0x45c458[_0xcf69('0x3e')]);_0x57748d[_0xcf69('0x40')]=_['intersection'](_0x57748d[_0xcf69('0x3d')],_0x57748d['query']);_0x57a296[_0xcf69('0x42')]=_['intersection'](_0x57748d[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x45c458[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x57a296[_0xcf69('0x42')]=_0x57a296[_0xcf69('0x42')][_0xcf69('0x44')]?_0x57a296[_0xcf69('0x42')]:_0x57748d[_0xcf69('0x3d')];if(_0x45c458[_0xcf69('0x3e')][_0xcf69('0x53')]){_0x57a296['include']=[{'all':!![]}];}_0x57a296=_[_0xcf69('0x4a')]({},_0x57a296,_0x45c458[_0xcf69('0x4c')]);return db[_0xcf69('0x4d')]['find'](_0x57a296)[_0xcf69('0x28')](handleEntityNotFound(_0x3cc66c,null))['then'](respondWithResult(_0x3cc66c,null))[_0xcf69('0x50')](handleError(_0x3cc66c,null));};exports[_0xcf69('0x54')]=function(_0x1c2491,_0x398b2e){return db[_0xcf69('0x4d')][_0xcf69('0x54')](_0x1c2491[_0xcf69('0x55')],{})[_0xcf69('0x28')](function(_0x196975){var _0x13740f=_0x1c2491[_0xcf69('0x56')][_0xcf69('0x29')]({'plain':!![]});if(!_0x13740f)throw new Error(_0xcf69('0x57'));if(_0x13740f['role']===_0xcf69('0x56')){var _0x2d5fb3=_0x196975[_0xcf69('0x29')]({'plain':!![]});var _0x4907b1=[{'name':'VoiceQueues','value':_0xcf69('0x2b')},{'name':'QueueCampaigns','value':_0xcf69('0x2d')}];var _0x212903=_['find'](_0x4907b1,[_0xcf69('0x2f'),_0x2d5fb3['type']])['name'];return db[_0xcf69('0x58')][_0xcf69('0x32')]({'where':{'name':_0x212903,'userProfileId':_0x13740f[_0xcf69('0x59')]},'raw':!![]})[_0xcf69('0x28')](function(_0x59294e){if(_0x59294e&&_0x59294e[_0xcf69('0x5a')]===0x0){return db[_0xcf69('0x34')][_0xcf69('0x54')]({'name':_0x2d5fb3['name'],'resourceId':_0x2d5fb3['id'],'type':_0x59294e['name'],'sectionId':_0x59294e['id']},{})[_0xcf69('0x28')](function(){return _0x196975;});}else{return _0x196975;}})[_0xcf69('0x50')](function(_0x1bb016){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bb016);throw _0x1bb016;});}return _0x196975;})['then'](respondWithResult(_0x398b2e,0xc9))['catch'](handleError(_0x398b2e,null));};exports['clone']=function(_0x4bfd20,_0x1ace3c){var _0x3111db={'where':{'id':_0x4bfd20[_0xcf69('0x52')]['id']}},_0x4dcc73={};_0x4dcc73[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x4d')][_0xcf69('0x3a')]);_0x3111db[_0xcf69('0x42')]=_['intersection'](_0x4dcc73['model'],qs[_0xcf69('0x43')](_0x4bfd20[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x3111db[_0xcf69('0x42')]=_0x3111db['attributes']['length']?_0x3111db['attributes']:_0x4dcc73['model'];if(_0x4bfd20[_0xcf69('0x3e')][_0xcf69('0x53')]){_0x3111db[_0xcf69('0x4e')]=[{'all':!![]}];}_0x3111db=_[_0xcf69('0x4a')]({},_0x3111db,_0x4bfd20[_0xcf69('0x4c')]);return db[_0xcf69('0x4d')]['find'](_0x3111db)[_0xcf69('0x28')](handleEntityNotFound(_0x1ace3c,null))[_0xcf69('0x28')](function(_0x111089){if(_0x111089){var _0x9ff2ea=_0x111089[_0xcf69('0x29')]({'plain':!![]});_0x9ff2ea=qs[_0xcf69('0x5b')](_0x9ff2ea,['id',_0xcf69('0x5c'),_0xcf69('0x5d')]);_0x4bfd20[_0xcf69('0x55')]=_[_0xcf69('0x5b')](_0x4bfd20[_0xcf69('0x55')],['id','createdAt',_0xcf69('0x5d')]);return db[_0xcf69('0x4d')][_0xcf69('0x54')](_['merge'](_0x9ff2ea,_0x4bfd20[_0xcf69('0x55')]),{'include':_0x4bfd20['query'][_0xcf69('0x53')]?[{'all':!![]}]:undefined})['then'](function(_0x4b3250){var _0x3bff41=_0x4bfd20[_0xcf69('0x56')][_0xcf69('0x29')]({'plain':!![]});if(!_0x3bff41)throw new Error(_0xcf69('0x57'));if(_0x3bff41[_0xcf69('0x5e')]==='user'){var _0x5d098a=_0x4b3250[_0xcf69('0x29')]({'plain':!![]});var _0x2e4014=[{'name':'VoiceQueues','value':'inbound'},{'name':'QueueCampaigns','value':_0xcf69('0x2d')}];var _0x27d946=_['find'](_0x2e4014,[_0xcf69('0x2f'),_0x5d098a['type']])[_0xcf69('0x33')];return db[_0xcf69('0x58')][_0xcf69('0x32')]({'where':{'name':_0x27d946,'userProfileId':_0x3bff41[_0xcf69('0x59')]},'raw':!![]})[_0xcf69('0x28')](function(_0x4c97ec){if(_0x4c97ec&&_0x4c97ec['autoAssociation']===0x0){return db[_0xcf69('0x34')]['create']({'name':_0x5d098a[_0xcf69('0x33')],'resourceId':_0x5d098a['id'],'type':_0x4c97ec['name'],'sectionId':_0x4c97ec['id']},{})['then'](function(){return _0x4b3250;});}else{return _0x4b3250;}})['catch'](function(_0x2abdbc){logger[_0xcf69('0x37')](_0xcf69('0x5f'),_0x2abdbc);throw _0x2abdbc;});}return _0x4b3250;});}})[_0xcf69('0x28')](respondWithResult(_0x1ace3c,0xc9))[_0xcf69('0x50')](handleError(_0x1ace3c,null));};exports[_0xcf69('0x27')]=function(_0x5658f4,_0x243fda){if(_0x5658f4['body']['id']){delete _0x5658f4[_0xcf69('0x55')]['id'];}return db[_0xcf69('0x4d')]['find']({'where':{'id':_0x5658f4[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x243fda,null))[_0xcf69('0x28')](saveUpdates(_0x5658f4['body'],null))['then'](respondWithResult(_0x243fda,null))[_0xcf69('0x50')](handleError(_0x243fda,null));};exports[_0xcf69('0x35')]=function(_0x5b79f4,_0x21710b){return db[_0xcf69('0x4d')][_0xcf69('0x32')]({'where':{'id':_0x5b79f4['params']['id']}})['then'](handleEntityNotFound(_0x21710b,null))[_0xcf69('0x28')](removeEntity(_0x21710b,null))['catch'](handleError(_0x21710b,null));};exports[_0xcf69('0x60')]=function(_0x3269a5,_0x57eccf,_0x8bdaa5){var _0x2925c9={'raw':![],'where':{}};var _0x5b68b8={};var _0x222cdc={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xcf69('0x61')]({'where':{'id':_0x3269a5[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x57eccf,null))[_0xcf69('0x28')](function(_0x340265){if(_0x340265){_0x5b68b8[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db['CmHopper'][_0xcf69('0x3a')]);_0x5b68b8[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x3269a5[_0xcf69('0x3e')]);_0x5b68b8['filters']=_['intersection'](_0x5b68b8[_0xcf69('0x3d')],_0x5b68b8[_0xcf69('0x3e')]);_0x2925c9[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0x5b68b8[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x3269a5['query'][_0xcf69('0x43')]));_0x2925c9[_0xcf69('0x42')]=_0x2925c9[_0xcf69('0x42')][_0xcf69('0x44')]?_0x2925c9[_0xcf69('0x42')]:_0x5b68b8['model'];if(!_0x3269a5[_0xcf69('0x3e')]['hasOwnProperty']('nolimit')){_0x2925c9[_0xcf69('0x20')]=qs[_0xcf69('0x20')](_0x3269a5['query']['limit']);_0x2925c9['offset']=qs[_0xcf69('0x1e')](_0x3269a5[_0xcf69('0x3e')][_0xcf69('0x1e')]);}_0x2925c9[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x3269a5[_0xcf69('0x3e')]['sort']);_0x2925c9[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_['pick'](_0x3269a5[_0xcf69('0x3e')],_0x5b68b8[_0xcf69('0x40')]));_0x2925c9[_0xcf69('0x62')][_0xcf69('0x63')]=_0x340265['id'];if(_0x3269a5[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x2925c9['where']=_[_0xcf69('0x4a')](_0x2925c9[_0xcf69('0x62')],{'$or':_[_0xcf69('0x4b')](_0x2925c9[_0xcf69('0x42')],function(_0x4ff433){var _0x208f96={};_0x208f96[_0x4ff433]={'$like':'%'+_0x3269a5[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x208f96;})});}_0x2925c9=_[_0xcf69('0x4a')]({},_0x2925c9,_0x3269a5['options']);return db[_0xcf69('0x64')]['count']({'where':_0x2925c9[_0xcf69('0x62')]})[_0xcf69('0x28')](function(_0x4a3364){_0x222cdc['count']=_0x4a3364;if(_0x3269a5['query'][_0xcf69('0x53')]){_0x2925c9[_0xcf69('0x4e')]=[{'all':!![]}];}return db['CmHopper'][_0xcf69('0x4f')](_0x2925c9);})[_0xcf69('0x28')](function(_0x145bde){_0x222cdc[_0xcf69('0x65')]=_0x145bde;return _0x222cdc;});}})[_0xcf69('0x28')](respondWithFilteredResult(_0x57eccf,_0x2925c9))[_0xcf69('0x50')](handleError(_0x57eccf,null));};exports[_0xcf69('0x66')]=function(_0x2a17f6,_0x3f67d7,_0x4a7f65){var _0x455dd0={'raw':!![],'where':{}};var _0x2ca0d3={};var _0x7d4ae3={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x2a17f6['params']['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x3f67d7,null))['then'](function(_0x5eabdb){if(_0x5eabdb){_0x2ca0d3[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x67')][_0xcf69('0x3a')]);_0x2ca0d3[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x2a17f6[_0xcf69('0x3e')]);_0x2ca0d3['filters']=_[_0xcf69('0x41')](_0x2ca0d3[_0xcf69('0x3d')],_0x2ca0d3[_0xcf69('0x3e')]);_0x455dd0[_0xcf69('0x42')]=_['intersection'](_0x2ca0d3[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x455dd0[_0xcf69('0x42')]=_0x455dd0['attributes']['length']?_0x455dd0[_0xcf69('0x42')]:_0x2ca0d3[_0xcf69('0x3d')];if(!_0x2a17f6['query'][_0xcf69('0x45')](_0xcf69('0x46'))){_0x455dd0['limit']=qs[_0xcf69('0x20')](_0x2a17f6['query'][_0xcf69('0x20')]);_0x455dd0[_0xcf69('0x1e')]=qs[_0xcf69('0x1e')](_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x1e')]);}_0x455dd0[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x48')]);_0x455dd0[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_['pick'](_0x2a17f6[_0xcf69('0x3e')],_0x2ca0d3[_0xcf69('0x40')]));_0x455dd0['where']['VoiceQueueId']=_0x5eabdb['id'];if(_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x455dd0[_0xcf69('0x62')]=_['merge'](_0x455dd0['where'],{'$or':_[_0xcf69('0x4b')](_0x455dd0[_0xcf69('0x42')],function(_0x8a4d91){var _0x47d3cb={};_0x47d3cb[_0x8a4d91]={'$like':'%'+_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x47d3cb;})});}_0x455dd0=_[_0xcf69('0x4a')]({},_0x455dd0,_0x2a17f6['options']);return db[_0xcf69('0x67')][_0xcf69('0x21')]({'where':_0x455dd0[_0xcf69('0x62')]})[_0xcf69('0x28')](function(_0x1ce89d){_0x7d4ae3[_0xcf69('0x21')]=_0x1ce89d;if(_0x2a17f6[_0xcf69('0x3e')][_0xcf69('0x53')]){_0x455dd0[_0xcf69('0x4e')]=[{'all':!![]}];}return db[_0xcf69('0x67')]['findAll'](_0x455dd0);})[_0xcf69('0x28')](function(_0x17ef57){_0x7d4ae3[_0xcf69('0x65')]=_0x17ef57;return _0x7d4ae3;});}})[_0xcf69('0x28')](respondWithFilteredResult(_0x3f67d7,_0x455dd0))[_0xcf69('0x50')](handleError(_0x3f67d7,null));};exports[_0xcf69('0x68')]=function(_0x59afec,_0x1d7528,_0x333438){var _0x2a6fd9={'raw':!![],'where':{}};var _0x1c4364={};var _0x220220={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xcf69('0x61')]({'where':{'id':_0x59afec['params']['id']}})['then'](handleEntityNotFound(_0x1d7528,null))[_0xcf69('0x28')](function(_0x405576){if(_0x405576){_0x1c4364[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x69')][_0xcf69('0x3a')]);_0x1c4364['query']=_[_0xcf69('0x3f')](_0x59afec[_0xcf69('0x3e')]);_0x1c4364[_0xcf69('0x40')]=_['intersection'](_0x1c4364[_0xcf69('0x3d')],_0x1c4364[_0xcf69('0x3e')]);_0x2a6fd9[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0x1c4364[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x59afec[_0xcf69('0x3e')]['fields']));_0x2a6fd9[_0xcf69('0x42')]=_0x2a6fd9[_0xcf69('0x42')][_0xcf69('0x44')]?_0x2a6fd9['attributes']:_0x1c4364[_0xcf69('0x3d')];if(!_0x59afec[_0xcf69('0x3e')]['hasOwnProperty']('nolimit')){_0x2a6fd9[_0xcf69('0x20')]=qs[_0xcf69('0x20')](_0x59afec[_0xcf69('0x3e')][_0xcf69('0x20')]);_0x2a6fd9[_0xcf69('0x1e')]=qs[_0xcf69('0x1e')](_0x59afec[_0xcf69('0x3e')][_0xcf69('0x1e')]);}_0x2a6fd9[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x59afec[_0xcf69('0x3e')][_0xcf69('0x48')]);_0x2a6fd9['where']=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x59afec[_0xcf69('0x3e')],_0x1c4364[_0xcf69('0x40')]));_0x2a6fd9[_0xcf69('0x62')]['VoiceQueueId']=_0x405576['id'];if(_0x59afec[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x2a6fd9[_0xcf69('0x62')]=_[_0xcf69('0x4a')](_0x2a6fd9[_0xcf69('0x62')],{'$or':_['map'](_0x2a6fd9[_0xcf69('0x42')],function(_0x30481a){var _0x229a9e={};_0x229a9e[_0x30481a]={'$like':'%'+_0x59afec[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x229a9e;})});}_0x2a6fd9=_['merge']({},_0x2a6fd9,_0x59afec['options']);return db['CmHopperFinal'][_0xcf69('0x21')]({'where':_0x2a6fd9[_0xcf69('0x62')]})[_0xcf69('0x28')](function(_0x46d90a){_0x220220[_0xcf69('0x21')]=_0x46d90a;if(_0x59afec['query'][_0xcf69('0x53')]){_0x2a6fd9[_0xcf69('0x4e')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x2a6fd9);})[_0xcf69('0x28')](function(_0x2ca5e9){_0x220220[_0xcf69('0x65')]=_0x2ca5e9;return _0x220220;});}})[_0xcf69('0x28')](respondWithFilteredResult(_0x1d7528,_0x2a6fd9))['catch'](handleError(_0x1d7528,null));};exports['getHopperBlacks']=function(_0x275e4c,_0xaeed4b,_0x2bd6fd){var _0xf36300={'raw':!![],'where':{}};var _0x33548e={};var _0x4f2100={'count':0x0,'rows':[]};return db[_0xcf69('0x4d')][_0xcf69('0x61')]({'where':{'id':_0x275e4c[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0xaeed4b,null))[_0xcf69('0x28')](function(_0x5144af){if(_0x5144af){_0x33548e[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x6a')][_0xcf69('0x3a')]);_0x33548e[_0xcf69('0x3e')]=_['keys'](_0x275e4c[_0xcf69('0x3e')]);_0x33548e[_0xcf69('0x40')]=_['intersection'](_0x33548e[_0xcf69('0x3d')],_0x33548e[_0xcf69('0x3e')]);_0xf36300['attributes']=_[_0xcf69('0x41')](_0x33548e[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x275e4c[_0xcf69('0x3e')]['fields']));_0xf36300[_0xcf69('0x42')]=_0xf36300[_0xcf69('0x42')][_0xcf69('0x44')]?_0xf36300[_0xcf69('0x42')]:_0x33548e['model'];if(!_0x275e4c[_0xcf69('0x3e')][_0xcf69('0x45')]('nolimit')){_0xf36300[_0xcf69('0x20')]=qs[_0xcf69('0x20')](_0x275e4c[_0xcf69('0x3e')]['limit']);_0xf36300[_0xcf69('0x1e')]=qs[_0xcf69('0x1e')](_0x275e4c[_0xcf69('0x3e')][_0xcf69('0x1e')]);}_0xf36300[_0xcf69('0x47')]=qs['sort'](_0x275e4c[_0xcf69('0x3e')]['sort']);_0xf36300[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x275e4c[_0xcf69('0x3e')],_0x33548e['filters']));_0xf36300[_0xcf69('0x62')][_0xcf69('0x63')]=_0x5144af['id'];if(_0x275e4c[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0xf36300[_0xcf69('0x62')]=_['merge'](_0xf36300['where'],{'$or':_[_0xcf69('0x4b')](_0xf36300[_0xcf69('0x42')],function(_0x3079fc){var _0x1e53aa={};_0x1e53aa[_0x3079fc]={'$like':'%'+_0x275e4c[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x1e53aa;})});}_0xf36300=_[_0xcf69('0x4a')]({},_0xf36300,_0x275e4c[_0xcf69('0x4c')]);return db['CmHopperBlack']['count']({'where':_0xf36300[_0xcf69('0x62')]})['then'](function(_0x341ad3){_0x4f2100[_0xcf69('0x21')]=_0x341ad3;if(_0x275e4c['query'][_0xcf69('0x53')]){_0xf36300[_0xcf69('0x4e')]=[{'all':!![]}];}return db[_0xcf69('0x6a')][_0xcf69('0x4f')](_0xf36300);})['then'](function(_0x3684ef){_0x4f2100[_0xcf69('0x65')]=_0x3684ef;return _0x4f2100;});}})[_0xcf69('0x28')](respondWithFilteredResult(_0xaeed4b,_0xf36300))[_0xcf69('0x50')](handleError(_0xaeed4b,null));};exports[_0xcf69('0x6b')]=function(_0x163404,_0x3a023e,_0x5a2115){var _0x1ebc7f={};var _0x42dc8c={};var _0x1d0b18;var _0x5424b5;return db[_0xcf69('0x4d')]['findOne']({'where':{'id':_0x163404[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x3a023e,null))[_0xcf69('0x28')](function(_0x331d10){if(_0x331d10){_0x1d0b18=_0x331d10;_0x42dc8c[_0xcf69('0x3d')]=_['keys'](db['Team'][_0xcf69('0x3a')]);_0x42dc8c[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x163404[_0xcf69('0x3e')]);_0x42dc8c['filters']=_[_0xcf69('0x41')](_0x42dc8c[_0xcf69('0x3d')],_0x42dc8c['query']);_0x1ebc7f['attributes']=_['intersection'](_0x42dc8c['model'],qs[_0xcf69('0x43')](_0x163404[_0xcf69('0x3e')]['fields']));_0x1ebc7f[_0xcf69('0x42')]=_0x1ebc7f['attributes'][_0xcf69('0x44')]?_0x1ebc7f[_0xcf69('0x42')]:_0x42dc8c[_0xcf69('0x3d')];_0x1ebc7f['order']=qs['sort'](_0x163404[_0xcf69('0x3e')][_0xcf69('0x48')]);_0x1ebc7f[_0xcf69('0x62')]=qs['filters'](_[_0xcf69('0x49')](_0x163404[_0xcf69('0x3e')],_0x42dc8c['filters']));if(_0x163404[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x1ebc7f['where']=_[_0xcf69('0x4a')](_0x1ebc7f['where'],{'$or':_[_0xcf69('0x4b')](_0x1ebc7f[_0xcf69('0x42')],function(_0x24fcbd){var _0x3a263e={};_0x3a263e[_0x24fcbd]={'$like':'%'+_0x163404[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x3a263e;})});}_0x1ebc7f=_['merge']({},_0x1ebc7f,_0x163404[_0xcf69('0x4c')]);return _0x1d0b18[_0xcf69('0x6b')](_0x1ebc7f);}})[_0xcf69('0x28')](function(_0x3cef8c){if(_0x3cef8c){_0x5424b5=_0x3cef8c['length'];if(!_0x163404['query'][_0xcf69('0x45')](_0xcf69('0x46'))){_0x1ebc7f['limit']=qs[_0xcf69('0x20')](_0x163404['query'][_0xcf69('0x20')]);_0x1ebc7f[_0xcf69('0x1e')]=qs['offset'](_0x163404[_0xcf69('0x3e')]['offset']);}return _0x1d0b18[_0xcf69('0x6b')](_0x1ebc7f);}})['then'](function(_0x385ca2){if(_0x385ca2){return _0x385ca2?{'count':_0x5424b5,'rows':_0x385ca2}:null;}})[_0xcf69('0x28')](respondWithResult(_0x3a023e,null))[_0xcf69('0x50')](handleError(_0x3a023e,null));};exports[_0xcf69('0x6c')]=function(_0x14ba92,_0x511e49,_0x5842d4){var _0x3d1e04=_0x14ba92[_0xcf69('0x55')][_0xcf69('0x6d')];var _0x48f665=_[_0xcf69('0x4b')](_0x3d1e04,'id');return db[_0xcf69('0x6e')][_0xcf69('0x4f')]({'where':{'id':_0x48f665},'attributes':['id'],'include':[{'model':db[_0xcf69('0x6f')],'as':_0xcf69('0x70'),'attributes':['id',_0xcf69('0x33'),'online',_0xcf69('0x71'),_0xcf69('0x72')],'raw':!![]}]})['then'](function(_0x9e31ac){if(_0x9e31ac){var _0xc862a3=_[_0xcf69('0x73')](_0x9e31ac,function(_0x1fca30){var _0x5b58d8=_0x1fca30[_0xcf69('0x29')]({'plain':!![]});_0x5b58d8[_0xcf69('0x70')][_0xcf69('0x74')](function(_0x32f86c){_0x32f86c['penalty']=_['find'](_0x3d1e04,{'id':_0x5b58d8['id']})[_0xcf69('0x75')];});return _0x5b58d8[_0xcf69('0x70')];});return db[_0xcf69('0x4d')]['find']({'where':{'id':_0x14ba92[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](function(_0x6e99d0){return db[_0xcf69('0x76')][_0xcf69('0x77')](function(_0x3cefe5){return _0x6e99d0[_0xcf69('0x6c')](_0x48f665,{'transaction':_0x3cefe5})[_0xcf69('0x28')](function(){return BPromise['each'](_0x3d1e04,function(_0x53089b){return db['TeamVoiceQueue'][_0xcf69('0x78')]({'TeamId':_0x53089b['id'],'VoiceQueueId':_0x14ba92[_0xcf69('0x52')]['id'],'penalty':_0x53089b[_0xcf69('0x75')]},{'transaction':_0x3cefe5});});})[_0xcf69('0x28')](function(){return BPromise[_0xcf69('0x79')](_0xc862a3,function(_0x490c30){return db[_0xcf69('0x7a')][_0xcf69('0x7b')]({'where':{'UserId':_0x490c30['id'],'VoiceQueueId':_0x14ba92[_0xcf69('0x52')]['id']},'defaults':{'penalty':_0x490c30['penalty']},'transaction':_0x3cefe5});});})[_0xcf69('0x28')](function(){return BPromise[_0xcf69('0x79')](_[_0xcf69('0x2e')](_0xc862a3,{'online':!![]}),function(_0x298937){return db[_0xcf69('0x7c')][_0xcf69('0x78')]({'membername':_0x298937[_0xcf69('0x33')],'UserId':_0x298937['id'],'queue_name':_0x6e99d0[_0xcf69('0x33')],'VoiceQueueId':_0x6e99d0['id'],'interface':_[_0xcf69('0x7d')](_0x298937[_0xcf69('0x72')])?util[_0xcf69('0x7e')](_0xcf69('0x7f'),_0x298937[_0xcf69('0x33')]):_0x298937[_0xcf69('0x72')],'paused':_0x298937[_0xcf69('0x71')]||![],'penalty':_0x298937['penalty']},{'transaction':_0x3cefe5});});})[_0xcf69('0x28')](function(){_0xc862a3[_0xcf69('0x74')](function(_0x5b4fdb){socket[_0xcf69('0x80')](_0xcf69('0x81'),{'UserId':_0x5b4fdb['id'],'VoiceQueueId':_0x6e99d0['id']});});});});});}})['then'](respondWithStatusCode(_0x511e49,null))['catch'](handleError(_0x511e49,null));};exports[_0xcf69('0x82')]=function(_0x2a0a13,_0x570117,_0x330d02){return db[_0xcf69('0x6e')]['findAll']({'where':{'id':_0x2a0a13['query'][_0xcf69('0x83')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xcf69('0x70'),'attributes':['id'],'raw':!![]}]})[_0xcf69('0x28')](handleEntityNotFound(_0x570117,null))[_0xcf69('0x28')](function(_0xdaaba2){var _0x359a78=_['map'](_0xdaaba2,'id');var _0x1c06b8=[];var _0x5efc61=[];var _0xaea229=squel[_0xcf69('0x84')]();_0xaea229['field'](_0xcf69('0x85'))[_0xcf69('0x86')]('team_has_voice_queues','tq')['join'](_0xcf69('0x87'),'ut',_0xcf69('0x88'))['where'](_0xcf69('0x89'),_0x2a0a13[_0xcf69('0x52')]['id']);for(var _0x389501=0x0;_0x389501<_0xdaaba2[_0xcf69('0x44')];_0x389501+=0x1){let _0x30dfa9=_0xdaaba2[_0x389501];for(var _0xef7f73=0x0;_0xef7f73<_0x30dfa9['Agents'][_0xcf69('0x44')];_0xef7f73+=0x1){let _0x308fc8=_0x30dfa9['Agents'][_0xef7f73];var _0x8cb383=_0xaea229['clone']();_0x8cb383[_0xcf69('0x62')](_0xcf69('0x8a'),_0x308fc8['id']);_0x5efc61['push'](db[_0xcf69('0x76')][_0xcf69('0x3e')](_0x8cb383[_0xcf69('0x8b')](),{'type':db[_0xcf69('0x76')][_0xcf69('0x8c')][_0xcf69('0x8d')]})[_0xcf69('0x28')](function(_0x20f94c){if(_0x20f94c[_0xcf69('0x44')]===0x1){return _0x308fc8['id'];}else{var _0xc75f1d=_[_0xcf69('0x8e')](_[_0xcf69('0x4b')](_0x20f94c,'TeamId'),function(_0x359534){return _[_0xcf69('0x30')](_0x359a78,_0x359534);});if(_0xc75f1d){return _0x308fc8['id'];}}}));}}return BPromise['all'](_0x5efc61)['then'](function(_0x18d274){_0x1c06b8=_(_0x1c06b8)['union'](_0x18d274)['compact']()[_0xcf69('0x2f')]();return db[_0xcf69('0x4d')]['find']({'where':{'id':_0x2a0a13[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](function(_0x216e27){return db[_0xcf69('0x76')][_0xcf69('0x77')](function(_0x412f67){return _0x216e27[_0xcf69('0x82')](_0x2a0a13[_0xcf69('0x3e')][_0xcf69('0x83')],{'transaction':_0x412f67})[_0xcf69('0x28')](function(){if(!_[_0xcf69('0x8f')](_0x1c06b8)){return _0x216e27[_0xcf69('0x90')](_0x1c06b8,{'transaction':_0x412f67})[_0xcf69('0x28')](function(){return db[_0xcf69('0x7c')][_0xcf69('0x35')]({'where':{'VoiceQueueId':_0x2a0a13[_0xcf69('0x52')]['id'],'UserId':_0x1c06b8},'transaction':_0x412f67});});}})[_0xcf69('0x28')](function(){_0x1c06b8[_0xcf69('0x74')](function(_0x48ab26){socket['emit'](_0xcf69('0x91'),{'UserId':_0x48ab26,'VoiceQueueId':_0x216e27['id']});});});});});});})[_0xcf69('0x28')](respondWithStatusCode(_0x570117,null))['catch'](handleError(_0x570117,null));};exports['addAgents']=function(_0x18ee29,_0x153094,_0x5dfc90){var _0x4010bc,_0x36f78a;return db[_0xcf69('0x4d')][_0xcf69('0x32')]({'where':{'id':_0x18ee29['params']['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x153094,null))[_0xcf69('0x28')](function(_0x287c29){if(_0x287c29){_0x36f78a=_0x287c29;return _0x287c29[_0xcf69('0x92')](_0x18ee29[_0xcf69('0x55')][_0xcf69('0x83')],_[_0xcf69('0x5b')](_0x18ee29['body'],[_0xcf69('0x83'),'id'])||{})[_0xcf69('0x93')](function(_0x210e64){for(var _0x23d5cb=0x0;_0x23d5cb<_0x18ee29[_0xcf69('0x55')]['ids'][_0xcf69('0x44')];_0x23d5cb+=0x1){socket['emit'](_0xcf69('0x81'),{'UserId':Number(_0x18ee29[_0xcf69('0x55')][_0xcf69('0x83')][_0x23d5cb]),'VoiceQueueId':Number(_0x18ee29['params']['id'])});}return _0x210e64;});}})['then'](function(_0x3f07bb){_0x4010bc=_0x3f07bb||[];if(_0x36f78a){return db[_0xcf69('0x6f')][_0xcf69('0x4f')]({'where':{'id':_0x18ee29[_0xcf69('0x55')][_0xcf69('0x83')]},'attributes':['id','name',_0xcf69('0x94'),_0xcf69('0x71'),_0xcf69('0x72')],'raw':!![]});}})['then'](function(_0x2ae031){if(!_['isEmpty'](_0x2ae031)){var _0x4665ca=[];for(var _0xa51a2f=0x0;_0xa51a2f<_0x2ae031[_0xcf69('0x44')];_0xa51a2f++){if(_0x2ae031[_0xa51a2f]['online']){_0x4665ca['push'](db[_0xcf69('0x7c')][_0xcf69('0x78')]({'membername':_0x2ae031[_0xa51a2f][_0xcf69('0x33')],'UserId':_0x2ae031[_0xa51a2f]['id'],'queue_name':_0x36f78a[_0xcf69('0x33')],'VoiceQueueId':_0x36f78a['id'],'interface':_[_0xcf69('0x7d')](_0x2ae031[_0xa51a2f][_0xcf69('0x72')])?util[_0xcf69('0x7e')](_0xcf69('0x7f'),_0x2ae031[_0xa51a2f][_0xcf69('0x33')]):_0x2ae031[_0xa51a2f]['interface'],'paused':_0x2ae031[_0xa51a2f][_0xcf69('0x71')]||![],'penalty':_0x18ee29['body'][_0xcf69('0x75')]||0x0}));}}return BPromise[_0xcf69('0x95')](_0x4665ca);}})[_0xcf69('0x28')](function(){return _0x4010bc;})[_0xcf69('0x28')](respondWithResult(_0x153094,null))[_0xcf69('0x50')](handleError(_0x153094,null));};exports[_0xcf69('0x90')]=function(_0x443d9b,_0x384e28,_0x45e1ea){return db['VoiceQueue'][_0xcf69('0x32')]({'where':{'id':_0x443d9b[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x384e28,null))[_0xcf69('0x28')](function(_0x119b15){if(_0x119b15){return _0x119b15[_0xcf69('0x90')](_0x443d9b['query']['ids'])[_0xcf69('0x28')](function(){if(_[_0xcf69('0x96')](_0x443d9b[_0xcf69('0x3e')][_0xcf69('0x83')])){for(var _0x1af27a=0x0;_0x1af27a<_0x443d9b['query'][_0xcf69('0x83')]['length'];_0x1af27a+=0x1){socket[_0xcf69('0x80')](_0xcf69('0x91'),{'UserId':Number(_0x443d9b['query'][_0xcf69('0x83')][_0x1af27a]),'VoiceQueueId':Number(_0x443d9b[_0xcf69('0x52')]['id'])});}}else{socket[_0xcf69('0x80')](_0xcf69('0x91'),{'UserId':Number(_0x443d9b['query'][_0xcf69('0x83')]),'VoiceQueueId':Number(_0x443d9b['params']['id'])});}});}})[_0xcf69('0x28')](function(_0x88003b){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x443d9b[_0xcf69('0x52')]['id'],'UserId':_0x443d9b[_0xcf69('0x3e')][_0xcf69('0x83')]}})[_0xcf69('0x28')](function(){return _0x88003b;});})[_0xcf69('0x28')](respondWithStatusCode(_0x384e28,null))['catch'](handleError(_0x384e28,null));};exports[_0xcf69('0x97')]=function(_0x246116,_0x212554,_0x3c0cc9){var _0xdc41cb={};var _0xcf60cf={};var _0x55c2e1;var _0x3095b1;return db['VoiceQueue'][_0xcf69('0x61')]({'where':{'id':_0x246116[_0xcf69('0x52')]['id']}})['then'](handleEntityNotFound(_0x212554,null))[_0xcf69('0x28')](function(_0x1eee0e){if(_0x1eee0e){_0x55c2e1=_0x1eee0e;_0xcf60cf[_0xcf69('0x3d')]=_['keys'](db[_0xcf69('0x6f')]['rawAttributes']);_0xcf60cf[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x246116[_0xcf69('0x3e')]);_0xcf60cf[_0xcf69('0x40')]=_[_0xcf69('0x41')](_0xcf60cf['model'],_0xcf60cf[_0xcf69('0x3e')]);_0xdc41cb[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0xcf60cf[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x246116['query'][_0xcf69('0x43')]));_0xdc41cb[_0xcf69('0x42')]=_0xdc41cb['attributes'][_0xcf69('0x44')]?_0xdc41cb['attributes']:_0xcf60cf[_0xcf69('0x3d')];_0xdc41cb[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x246116[_0xcf69('0x3e')]['sort']);_0xdc41cb[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x246116[_0xcf69('0x3e')],_0xcf60cf['filters']));if(_0x246116[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0xdc41cb[_0xcf69('0x62')]=_[_0xcf69('0x4a')](_0xdc41cb[_0xcf69('0x62')],{'$or':_[_0xcf69('0x4b')](_0xdc41cb[_0xcf69('0x42')],function(_0x34c2fb){var _0xf4df04={};_0xf4df04[_0x34c2fb]={'$like':'%'+_0x246116[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0xf4df04;})});}_0xdc41cb=_[_0xcf69('0x4a')]({},_0xdc41cb,_0x246116[_0xcf69('0x4c')]);return _0x55c2e1[_0xcf69('0x97')](_0xdc41cb);}})[_0xcf69('0x28')](function(_0xdb04b1){if(_0xdb04b1){_0x3095b1=_0xdb04b1[_0xcf69('0x44')];if(!_0x246116[_0xcf69('0x3e')]['hasOwnProperty'](_0xcf69('0x46'))){_0xdc41cb[_0xcf69('0x20')]=qs[_0xcf69('0x20')](_0x246116[_0xcf69('0x3e')][_0xcf69('0x20')]);_0xdc41cb[_0xcf69('0x1e')]=qs['offset'](_0x246116[_0xcf69('0x3e')][_0xcf69('0x1e')]);}return _0x55c2e1[_0xcf69('0x97')](_0xdc41cb);}})[_0xcf69('0x28')](function(_0x58f49f){if(_0x58f49f){return _0x58f49f?{'count':_0x3095b1,'rows':_0x58f49f}:null;}})[_0xcf69('0x28')](respondWithResult(_0x212554,null))['catch'](handleError(_0x212554,null));};exports['getMembers']=function(_0x3155a7,_0x5634ea,_0x1e8b71){var _0x955ad7={};var _0x59a668={};var _0x3fe4a3;var _0x2d2ba3;return db['VoiceQueue'][_0xcf69('0x61')]({'where':{'id':_0x3155a7[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x5634ea,null))[_0xcf69('0x28')](function(_0xbc12f1){if(_0xbc12f1){_0x3fe4a3=_0xbc12f1;_0x59a668[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x7c')][_0xcf69('0x3a')]);_0x59a668[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x3155a7[_0xcf69('0x3e')]);_0x59a668['filters']=_[_0xcf69('0x41')](_0x59a668[_0xcf69('0x3d')],_0x59a668['query']);_0x955ad7[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0x59a668[_0xcf69('0x3d')],qs[_0xcf69('0x43')](_0x3155a7[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x955ad7[_0xcf69('0x42')]=_0x955ad7['attributes'][_0xcf69('0x44')]?_0x955ad7['attributes']:_0x59a668[_0xcf69('0x3d')];_0x955ad7[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x3155a7['query'][_0xcf69('0x48')]);_0x955ad7['where']=qs[_0xcf69('0x40')](_['pick'](_0x3155a7[_0xcf69('0x3e')],_0x59a668[_0xcf69('0x40')]));if(_0x3155a7[_0xcf69('0x3e')]['filter']){_0x955ad7[_0xcf69('0x62')]=_[_0xcf69('0x4a')](_0x955ad7[_0xcf69('0x62')],{'$or':_[_0xcf69('0x4b')](_0x955ad7[_0xcf69('0x42')],function(_0x5233f9){var _0x51fda6={};_0x51fda6[_0x5233f9]={'$like':'%'+_0x3155a7['query'][_0xcf69('0x2e')]+'%'};return _0x51fda6;})});}_0x955ad7=_['merge']({},_0x955ad7,_0x3155a7[_0xcf69('0x4c')]);return _0x3fe4a3[_0xcf69('0x98')](_0x955ad7);}})[_0xcf69('0x28')](function(_0xa3df44){if(_0xa3df44){_0x2d2ba3=_0xa3df44[_0xcf69('0x44')];if(!_0x3155a7[_0xcf69('0x3e')][_0xcf69('0x45')](_0xcf69('0x46'))){_0x955ad7['limit']=qs[_0xcf69('0x20')](_0x3155a7['query'][_0xcf69('0x20')]);_0x955ad7[_0xcf69('0x1e')]=qs[_0xcf69('0x1e')](_0x3155a7[_0xcf69('0x3e')]['offset']);}return _0x3fe4a3[_0xcf69('0x98')](_0x955ad7);}})['then'](function(_0x328e0b){return _0x328e0b?{'count':_0x2d2ba3,'rows':_0x328e0b}:null;})[_0xcf69('0x28')](respondWithResult(_0x5634ea,null))[_0xcf69('0x50')](handleError(_0x5634ea,null));};exports[_0xcf69('0x99')]=function(_0x334ea2,_0x2dd2de,_0x392f8d){var _0x4becf6={};var _0x5a5393={};var _0x306921;var _0x4c26b0;return db[_0xcf69('0x4d')]['findOne']({'where':{'id':_0x334ea2['params']['id']}})['then'](handleEntityNotFound(_0x2dd2de,null))[_0xcf69('0x28')](function(_0x2573e6){if(_0x2573e6){_0x306921=_0x2573e6;_0x5a5393['model']=_['keys'](db[_0xcf69('0x9a')][_0xcf69('0x3a')]);_0x5a5393[_0xcf69('0x3e')]=_['keys'](_0x334ea2[_0xcf69('0x3e')]);_0x5a5393[_0xcf69('0x40')]=_['intersection'](_0x5a5393[_0xcf69('0x3d')],_0x5a5393['query']);_0x4becf6[_0xcf69('0x42')]=_[_0xcf69('0x41')](_0x5a5393[_0xcf69('0x3d')],qs['fields'](_0x334ea2[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x4becf6[_0xcf69('0x42')]=_0x4becf6['attributes'][_0xcf69('0x44')]?_0x4becf6[_0xcf69('0x42')]:_0x5a5393[_0xcf69('0x3d')];_0x4becf6[_0xcf69('0x47')]=qs['sort'](_0x334ea2[_0xcf69('0x3e')][_0xcf69('0x48')]);_0x4becf6[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x334ea2[_0xcf69('0x3e')],_0x5a5393[_0xcf69('0x40')]));if(_0x334ea2[_0xcf69('0x3e')]['filter']){_0x4becf6[_0xcf69('0x62')]=_['merge'](_0x4becf6[_0xcf69('0x62')],{'$or':_['map'](_0x4becf6['attributes'],function(_0x4dcba8){var _0x344b53={};_0x344b53[_0x4dcba8]={'$like':'%'+_0x334ea2[_0xcf69('0x3e')][_0xcf69('0x2e')]+'%'};return _0x344b53;})});}_0x4becf6=_['merge']({},_0x4becf6,_0x334ea2[_0xcf69('0x4c')]);return _0x306921['getLists'](_0x4becf6);}})[_0xcf69('0x28')](function(_0x470ef7){if(_0x470ef7){_0x4c26b0=_0x470ef7['length'];if(!_0x334ea2[_0xcf69('0x3e')][_0xcf69('0x45')](_0xcf69('0x46'))){_0x4becf6[_0xcf69('0x20')]=qs['limit'](_0x334ea2['query']['limit']);_0x4becf6['offset']=qs[_0xcf69('0x1e')](_0x334ea2[_0xcf69('0x3e')][_0xcf69('0x1e')]);}return _0x306921[_0xcf69('0x99')](_0x4becf6);}})[_0xcf69('0x28')](function(_0x40f9c1){if(_0x40f9c1){return _0x40f9c1?{'count':_0x4c26b0,'rows':_0x40f9c1}:null;}})['then'](respondWithResult(_0x2dd2de,null))['catch'](handleError(_0x2dd2de,null));};exports[_0xcf69('0x9b')]=function(_0x5cbc98,_0x3cf596,_0x3f6385){var _0x15ed84=moment()[_0xcf69('0x7e')](_0xcf69('0x9c'));var _0x424c30,_0x46c16e;return db[_0xcf69('0x4d')][_0xcf69('0x32')]({'where':{'id':_0x5cbc98[_0xcf69('0x52')]['id']}})['then'](handleEntityNotFound(_0x3cf596,null))['then'](function(_0x17e769){if(_0x17e769){_0x46c16e=_0x17e769;return _0x17e769['addLists'](_0x5cbc98[_0xcf69('0x55')][_0xcf69('0x83')],_[_0xcf69('0x5b')](_0x5cbc98[_0xcf69('0x55')],['ids','id'])||{});}return null;})[_0xcf69('0x93')](function(_0x2c1206){var _0x523917;_0x424c30=_0x2c1206||[];var _0xea8927=[];if(_0x2c1206){for(var _0x68e42a=0x0;_0x68e42a<_0x2c1206['length'];_0x68e42a+=0x1){var _0xe539af=_0x2c1206[_0x68e42a][_0xcf69('0x29')]({'plain':!![]});_0x46c16e[_0xcf69('0x9d')]=_0x5cbc98[_0xcf69('0x55')][_0xcf69('0x9d')]?_0x5cbc98['body']['dialCheckDuplicateType']:_0x46c16e[_0xcf69('0x9d')];switch(_0x46c16e[_0xcf69('0x9d')]){case _0xcf69('0x9e'):_0x523917=squel[_0xcf69('0x9f')]()[_0xcf69('0xa0')](_0xcf69('0xa1'))[_0xcf69('0xa2')]([_0xcf69('0xa3'),_0xcf69('0xa4'),_0xcf69('0xa5'),_0xcf69('0xa6'),_0xcf69('0x63'),'createdAt','updatedAt'],squel[_0xcf69('0x84')]()[_0xcf69('0xa7')](_0xcf69('0xa3'),_0xcf69('0xa3'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27','scheduledAt')[_0xcf69('0xa7')]('id',_0xcf69('0xa5'))['field'](_0xe539af[_0xcf69('0xa8')][_0xcf69('0x8b')](),_0xcf69('0xa6'))['field'](_0x5cbc98[_0xcf69('0x52')]['id'][_0xcf69('0x8b')](),_0xcf69('0x63'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0x5c'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0x5d'))[_0xcf69('0x86')](_0xcf69('0xa9'))['where'](_0xcf69('0xaa'))[_0xcf69('0x62')](_0xcf69('0xab'),_0xe539af[_0xcf69('0xa8')][_0xcf69('0x8b')]())[_0xcf69('0x62')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xcf69('0xac'),squel[_0xcf69('0x84')]()[_0xcf69('0xa7')](_0xcf69('0xad'))[_0xcf69('0x86')]('cm_hopper_final')[_0xcf69('0x62')](_0xcf69('0x89'),_0x5cbc98[_0xcf69('0x52')]['id']['toString']()))[_0xcf69('0x62')]('phone\x20NOT\x20IN\x20(?)',squel[_0xcf69('0x84')]()[_0xcf69('0xa7')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0xcf69('0x89'),_0x5cbc98['params']['id'][_0xcf69('0x8b')]())))[_0xcf69('0x8b')]();break;case _0xcf69('0xae'):_0x523917=squel[_0xcf69('0x9f')]()[_0xcf69('0xa0')]('cm_hopper')[_0xcf69('0xa2')](['phone',_0xcf69('0xa4'),_0xcf69('0xa5'),_0xcf69('0xa6'),_0xcf69('0x63'),_0xcf69('0x5c'),_0xcf69('0x5d')],squel[_0xcf69('0x84')]()[_0xcf69('0xa7')](_0xcf69('0xa3'),_0xcf69('0xa3'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0xa4'))[_0xcf69('0xa7')]('id','ContactId')[_0xcf69('0xa7')](_0xe539af[_0xcf69('0xa8')]['toString'](),'ListId')[_0xcf69('0xa7')](_0x5cbc98[_0xcf69('0x52')]['id'][_0xcf69('0x8b')](),_0xcf69('0x63'))['field']('\x27'+_0x15ed84+'\x27',_0xcf69('0x5c'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0x5d'))['from'](_0xcf69('0xa9'))[_0xcf69('0x62')](_0xcf69('0xaa'))[_0xcf69('0x62')](_0xcf69('0xab'),_0xe539af['CmListId'][_0xcf69('0x8b')]())[_0xcf69('0x62')](_0xcf69('0xaf'))[_0xcf69('0x62')](_0xcf69('0xac'),squel[_0xcf69('0x84')]()[_0xcf69('0xa7')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')['where'](_0xcf69('0x89'),_0x5cbc98['params']['id'][_0xcf69('0x8b')]())))[_0xcf69('0x8b')]();break;default:_0x523917=squel['insert']()[_0xcf69('0xa0')](_0xcf69('0xa1'))[_0xcf69('0xa2')]([_0xcf69('0xa3'),_0xcf69('0xa4'),_0xcf69('0xa5'),_0xcf69('0xa6'),_0xcf69('0x63'),_0xcf69('0x5c'),_0xcf69('0x5d')],squel[_0xcf69('0x84')]()[_0xcf69('0xa7')](_0xcf69('0xa3'),_0xcf69('0xa3'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27','scheduledAt')['field']('id','ContactId')['field'](_0xe539af[_0xcf69('0xa8')]['toString'](),_0xcf69('0xa6'))[_0xcf69('0xa7')](_0x5cbc98['params']['id'][_0xcf69('0x8b')](),_0xcf69('0x63'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0x5c'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27','updatedAt')[_0xcf69('0x86')](_0xcf69('0xa9'))[_0xcf69('0x62')](_0xcf69('0xaa'))['where'](_0xcf69('0xab'),_0xe539af[_0xcf69('0xa8')]['toString']())[_0xcf69('0x62')](_0xcf69('0xaf')))[_0xcf69('0x8b')]();}_0xea8927[_0xcf69('0xb0')](db[_0xcf69('0x76')][_0xcf69('0x3e')](_0x523917));}return BPromise[_0xcf69('0x95')](_0xea8927);}})[_0xcf69('0x28')](function(){var _0x54e6aa=[];var _0x4acd95=squel[_0xcf69('0x9f')]()[_0xcf69('0xa0')](_0xcf69('0xb1'))[_0xcf69('0xa2')]([_0xcf69('0xb2'),'phone','OrderBy',_0xcf69('0x5c'),_0xcf69('0x5d')],squel[_0xcf69('0x84')]()['field'](_0xcf69('0xb3'))[_0xcf69('0xa7')](_0xcf69('0xb4'))['field'](_0xcf69('0xb5'))['field']('\x27'+_0x15ed84+'\x27',_0xcf69('0x5c'))[_0xcf69('0xa7')]('\x27'+_0x15ed84+'\x27',_0xcf69('0x5d'))['from'](_0xcf69('0xb6'),'ci')[_0xcf69('0xb7')](_0xcf69('0xa1'),'h',_0xcf69('0xb8'))[_0xcf69('0x62')](_0xcf69('0xb9'),_0x15ed84)[_0xcf69('0x62')](_0xcf69('0xba'),_0xcf69('0xbb')))['toString']();_0x54e6aa[_0xcf69('0xb0')](db[_0xcf69('0x76')][_0xcf69('0x3e')](_0x4acd95));return BPromise['all'](_0x54e6aa);})[_0xcf69('0x28')](function(){return _0x424c30;})[_0xcf69('0x28')](respondWithResult(_0x3cf596,null))[_0xcf69('0x50')](handleError(_0x3cf596,null));};exports[_0xcf69('0xbc')]=function(_0x48690b,_0x4caf41,_0xff4405){return db[_0xcf69('0x4d')]['find']({'where':{'id':_0x48690b['params']['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x4caf41,null))['then'](function(_0x457bed){if(_0x457bed){return _0x457bed['removeLists'](_0x48690b[_0xcf69('0x3e')][_0xcf69('0x83')]);}})[_0xcf69('0x28')](function(_0x2a5029){if(_0x2a5029){return db[_0xcf69('0x64')][_0xcf69('0x35')]({'where':{'ListId':_0x48690b[_0xcf69('0x3e')]['ids'],'VoiceQueueId':_0x48690b[_0xcf69('0x52')]['id']}})['then'](function(){return _0x2a5029;});}})[_0xcf69('0x28')](respondWithStatusCode(_0x4caf41,null))[_0xcf69('0x50')](handleError(_0x4caf41,null));};exports[_0xcf69('0xbd')]=function(_0x3733e6,_0x2dfa1d,_0x55f204){var _0x2980cb={};var _0x57c68f={};var _0x4d554c;var _0x2d22e2;return db['VoiceQueue']['findOne']({'where':{'id':_0x3733e6['params']['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x2dfa1d,null))[_0xcf69('0x28')](function(_0x549d2f){if(_0x549d2f){_0x4d554c=_0x549d2f;_0x57c68f[_0xcf69('0x3d')]=_[_0xcf69('0x3f')](db[_0xcf69('0x9a')][_0xcf69('0x3a')]);_0x57c68f[_0xcf69('0x3e')]=_[_0xcf69('0x3f')](_0x3733e6[_0xcf69('0x3e')]);_0x57c68f[_0xcf69('0x40')]=_[_0xcf69('0x41')](_0x57c68f[_0xcf69('0x3d')],_0x57c68f[_0xcf69('0x3e')]);_0x2980cb['attributes']=_[_0xcf69('0x41')](_0x57c68f['model'],qs[_0xcf69('0x43')](_0x3733e6[_0xcf69('0x3e')][_0xcf69('0x43')]));_0x2980cb[_0xcf69('0x42')]=_0x2980cb[_0xcf69('0x42')][_0xcf69('0x44')]?_0x2980cb[_0xcf69('0x42')]:_0x57c68f[_0xcf69('0x3d')];_0x2980cb[_0xcf69('0x47')]=qs[_0xcf69('0x48')](_0x3733e6['query']['sort']);_0x2980cb[_0xcf69('0x62')]=qs[_0xcf69('0x40')](_[_0xcf69('0x49')](_0x3733e6[_0xcf69('0x3e')],_0x57c68f[_0xcf69('0x40')]));if(_0x3733e6[_0xcf69('0x3e')][_0xcf69('0x2e')]){_0x2980cb[_0xcf69('0x62')]=_[_0xcf69('0x4a')](_0x2980cb[_0xcf69('0x62')],{'$or':_[_0xcf69('0x4b')](_0x2980cb['attributes'],function(_0x5306da){var _0x3a5751={};_0x3a5751[_0x5306da]={'$like':'%'+_0x3733e6['query'][_0xcf69('0x2e')]+'%'};return _0x3a5751;})});}_0x2980cb=_[_0xcf69('0x4a')]({},_0x2980cb,_0x3733e6[_0xcf69('0x4c')]);return _0x4d554c[_0xcf69('0xbd')](_0x2980cb);}})[_0xcf69('0x28')](function(_0x14b13b){if(_0x14b13b){_0x2d22e2=_0x14b13b[_0xcf69('0x44')];if(!_0x3733e6[_0xcf69('0x3e')][_0xcf69('0x45')](_0xcf69('0x46'))){_0x2980cb[_0xcf69('0x20')]=qs[_0xcf69('0x20')](_0x3733e6[_0xcf69('0x3e')][_0xcf69('0x20')]);_0x2980cb['offset']=qs[_0xcf69('0x1e')](_0x3733e6[_0xcf69('0x3e')][_0xcf69('0x1e')]);}return _0x4d554c[_0xcf69('0xbd')](_0x2980cb);}})[_0xcf69('0x28')](function(_0x8a6fa4){if(_0x8a6fa4){return _0x8a6fa4?{'count':_0x2d22e2,'rows':_0x8a6fa4}:null;}})['then'](respondWithResult(_0x2dfa1d,null))[_0xcf69('0x50')](handleError(_0x2dfa1d,null));};exports[_0xcf69('0xbe')]=function(_0x5e3432,_0x3c21b9,_0x179e24){var _0x1f3770,_0x3a3d5d;return db['VoiceQueue'][_0xcf69('0x32')]({'where':{'id':_0x5e3432[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x3c21b9,null))[_0xcf69('0x28')](function(_0x6455b3){if(_0x6455b3){_0x3a3d5d=_0x6455b3;return _0x6455b3[_0xcf69('0xbe')](_0x5e3432['body'][_0xcf69('0x83')],_['omit'](_0x5e3432['body'],[_0xcf69('0x83'),'id'])||{});}return null;})[_0xcf69('0x93')](function(_0x5bbc46){var _0xad2ff9;_0x1f3770=_0x5bbc46||[];var _0x3aa5ea=[];if(_0x5bbc46){for(var _0x49ab93=0x0;_0x49ab93<_0x5bbc46[_0xcf69('0x44')];_0x49ab93+=0x1){var _0x28cb77=_0x5bbc46[_0x49ab93][_0xcf69('0x29')]({'plain':!![]});_0xad2ff9=squel[_0xcf69('0x9f')]()['into'](_0xcf69('0xbf'))[_0xcf69('0xa2')]([_0xcf69('0xa3'),'ContactId','ListId',_0xcf69('0x63'),'createdAt','updatedAt'],squel[_0xcf69('0x84')]()[_0xcf69('0xa7')](_0xcf69('0xa3'),'phone')[_0xcf69('0xa7')]('id',_0xcf69('0xa5'))[_0xcf69('0xa7')](_0x28cb77[_0xcf69('0xa8')][_0xcf69('0x8b')](),_0xcf69('0xa6'))[_0xcf69('0xa7')](_0x5e3432[_0xcf69('0x52')]['id'][_0xcf69('0x8b')](),_0xcf69('0x63'))[_0xcf69('0xa7')](_0xcf69('0xc0'),'createdAt')[_0xcf69('0xa7')](_0xcf69('0xc0'),_0xcf69('0x5d'))[_0xcf69('0x86')](_0xcf69('0xa9'))[_0xcf69('0x62')](_0xcf69('0xaa'))[_0xcf69('0x62')](_0xcf69('0xab'),_0x28cb77[_0xcf69('0xa8')][_0xcf69('0x8b')]())[_0xcf69('0x62')](_0xcf69('0xaf')))[_0xcf69('0x8b')]();_0x3aa5ea[_0xcf69('0xb0')](db['sequelize'][_0xcf69('0x3e')](_0xad2ff9));}return BPromise[_0xcf69('0x95')](_0x3aa5ea);}})['then'](function(){return _0x1f3770;})[_0xcf69('0x28')](respondWithResult(_0x3c21b9,null))['catch'](handleError(_0x3c21b9,null));};exports[_0xcf69('0xc1')]=function(_0x345600,_0x49bcd1,_0x1a2717){return db[_0xcf69('0x4d')][_0xcf69('0x32')]({'where':{'id':_0x345600[_0xcf69('0x52')]['id']}})[_0xcf69('0x28')](handleEntityNotFound(_0x49bcd1,null))[_0xcf69('0x28')](function(_0x1737e3){if(_0x1737e3){return _0x1737e3['removeBlackLists'](_0x345600[_0xcf69('0x3e')]['ids']);}})[_0xcf69('0x28')](function(_0x20f235){if(_0x20f235){return db[_0xcf69('0x6a')]['destroy']({'where':{'ListId':_0x345600[_0xcf69('0x3e')]['ids'],'VoiceQueueId':_0x345600[_0xcf69('0x52')]['id']}})['then'](function(){return _0x20f235;});}})['then'](respondWithStatusCode(_0x49bcd1,null))[_0xcf69('0x50')](handleError(_0x49bcd1,null));};
\ No newline at end of file
index 4ec89ed..7db430f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b26=['hook','exports','events','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3bb5fd,_0x162ba3){var _0x21009a=function(_0x323cb7){while(--_0x323cb7){_0x3bb5fd['push'](_0x3bb5fd['shift']());}};_0x21009a(++_0x162ba3);}(_0x2b26,0x11a));var _0x62b2=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x2b26[_0x160c73];return _0xd9302;};'use strict';var EventEmitter=require(_0x62b2('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x62b2('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x62b2('0x2')](0x0);var events={'afterCreate':_0x62b2('0x3'),'afterUpdate':_0x62b2('0x4'),'afterDestroy':_0x62b2('0x5')};function emitEvent(_0x56e683){return function(_0x1b7156,_0x2f3bc7,_0x217652){VoiceQueueEvents[_0x62b2('0x6')](_0x56e683+':'+_0x1b7156['id'],_0x1b7156);VoiceQueueEvents[_0x62b2('0x6')](_0x56e683,_0x1b7156);_0x217652(null);};}for(var e in events){if(events[_0x62b2('0x7')](e)){var event=events[e];VoiceQueue[_0x62b2('0x8')](e,emitEvent(event));}}module[_0x62b2('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x2cf1=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoiceQueue'];(function(_0x1bf939,_0x555bbd){var _0x42ad35=function(_0x53fac8){while(--_0x53fac8){_0x1bf939['push'](_0x1bf939['shift']());}};_0x42ad35(++_0x555bbd);}(_0x2cf1,0xa9));var _0x12cf=function(_0x5e9f2a,_0x10a9f9){_0x5e9f2a=_0x5e9f2a-0x0;var _0x2fcaea=_0x2cf1[_0x5e9f2a];return _0x2fcaea;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x12cf('0x0'))['db'][_0x12cf('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x12cf('0x2')](0x0);var events={'afterCreate':_0x12cf('0x3'),'afterUpdate':'update','afterDestroy':_0x12cf('0x4')};function emitEvent(_0x2b947c){return function(_0x4acc24,_0x486e95,_0x3d87b3){VoiceQueueEvents[_0x12cf('0x5')](_0x2b947c+':'+_0x4acc24['id'],_0x4acc24);VoiceQueueEvents[_0x12cf('0x5')](_0x2b947c,_0x4acc24);_0x3d87b3(null);};}for(var e in events){if(events[_0x12cf('0x6')](e)){var event=events[e];VoiceQueue[_0x12cf('0x7')](e,emitEvent(event));}}module[_0x12cf('0x8')]=VoiceQueueEvents;
\ No newline at end of file
index 0e55e5c..57c5561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x2fe959,_0x351d77){var _0x2f6ace=function(_0x4ede54){while(--_0x4ede54){_0x2fe959['push'](_0x2fe959['shift']());}};_0x2f6ace(++_0x351d77);}(_0x70e0,0x17b));var _0x070e=function(_0x183e3a,_0xfc950d){_0x183e3a=_0x183e3a-0x0;var _0x1133e6=_0x70e0[_0x183e3a];return _0x1133e6;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x409d89,_0x2b0cb1){var _0x3f3a4d=function(_0x2b9224){while(--_0x2b9224){_0x409d89['push'](_0x409d89['shift']());}};_0x3f3a4d(++_0x2b0cb1);}(_0xedd9,0xfc));var _0x9edd=function(_0x28cecc,_0x513dcb){_0x28cecc=_0x28cecc-0x0;var _0x5b6d58=_0xedd9[_0x28cecc];return _0x5b6d58;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0549df..4c61dfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf347=['map','model','catch','ShowVoiceQueue','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetVoiceQueue','VoiceQueue','options','raw','where','attributes','limit','include'];(function(_0xf0419,_0x3d69b2){var _0x4765fa=function(_0xa162e6){while(--_0xa162e6){_0xf0419['push'](_0xf0419['shift']());}};_0x4765fa(++_0x3d69b2);}(_0xf347,0xd2));var _0x7f34=function(_0x353018,_0x45ae63){_0x353018=_0x353018-0x0;var _0x4d8689=_0xf347[_0x353018];return _0x4d8689;};'use strict';var _=require('lodash');var util=require(_0x7f34('0x0'));var moment=require(_0x7f34('0x1'));var BPromise=require(_0x7f34('0x2'));var rs=require(_0x7f34('0x3'));var fs=require('fs');var Redis=require(_0x7f34('0x4'));var db=require(_0x7f34('0x5'))['db'];var utils=require(_0x7f34('0x6'));var logger=require('../../config/logger')(_0x7f34('0x7'));var config=require(_0x7f34('0x8'));var jayson=require(_0x7f34('0x9'));var client=jayson[_0x7f34('0xa')]['http']({'port':0x232a});config[_0x7f34('0xb')]=_[_0x7f34('0xc')](config['redis'],{'host':_0x7f34('0xd'),'port':0x18eb});var socket=require(_0x7f34('0xe'))(new Redis(config[_0x7f34('0xb')]));require(_0x7f34('0xf'))[_0x7f34('0x10')](socket);function respondWithRpcPromise(_0x1d214f,_0x25abb2,_0x168e22){return new BPromise(function(_0x433bb8,_0x5464e3){return client[_0x7f34('0x11')](_0x1d214f,_0x168e22)[_0x7f34('0x12')](function(_0xdaabf8){logger[_0x7f34('0x13')](_0x7f34('0x14'),_0x25abb2,_0x7f34('0x15'));logger[_0x7f34('0x16')](_0x7f34('0x17'),_0x25abb2,_0x7f34('0x15'),JSON['stringify'](_0xdaabf8));if(_0xdaabf8[_0x7f34('0x18')]){if(_0xdaabf8['error'][_0x7f34('0x19')]===0x1f4){logger[_0x7f34('0x18')](_0x7f34('0x14'),_0x25abb2,_0xdaabf8[_0x7f34('0x18')]['message']);return _0x5464e3(_0xdaabf8[_0x7f34('0x18')][_0x7f34('0x1a')]);}logger[_0x7f34('0x18')](_0x7f34('0x14'),_0x25abb2,_0xdaabf8[_0x7f34('0x18')][_0x7f34('0x1a')]);return _0x433bb8(_0xdaabf8[_0x7f34('0x18')][_0x7f34('0x1a')]);}else{logger[_0x7f34('0x13')](_0x7f34('0x14'),_0x25abb2,'request\x20sent');_0x433bb8(_0xdaabf8[_0x7f34('0x1b')][_0x7f34('0x1a')]);}})['catch'](function(_0x14b888){logger[_0x7f34('0x18')](_0x7f34('0x14'),_0x25abb2,_0x14b888);_0x5464e3(_0x14b888);});});}exports[_0x7f34('0x1c')]=function(_0x5cead0){var _0x24df9e=this;return new Promise(function(_0x47c622,_0x20fc27){return db[_0x7f34('0x1d')]['findAll']({'raw':_0x5cead0[_0x7f34('0x1e')]?_0x5cead0[_0x7f34('0x1e')][_0x7f34('0x1f')]===undefined?!![]:![]:!![],'where':_0x5cead0[_0x7f34('0x1e')]?_0x5cead0['options'][_0x7f34('0x20')]||null:null,'attributes':_0x5cead0[_0x7f34('0x1e')]?_0x5cead0[_0x7f34('0x1e')][_0x7f34('0x21')]||null:null,'limit':_0x5cead0['options']?_0x5cead0[_0x7f34('0x1e')][_0x7f34('0x22')]||null:null,'include':_0x5cead0['options']?_0x5cead0[_0x7f34('0x1e')][_0x7f34('0x23')]?_[_0x7f34('0x24')](_0x5cead0[_0x7f34('0x1e')]['include'],function(_0x138095){return{'model':db[_0x138095['model']],'as':_0x138095['as'],'attributes':_0x138095[_0x7f34('0x21')],'include':_0x138095[_0x7f34('0x23')]?_[_0x7f34('0x24')](_0x138095['include'],function(_0x4f3c8d){return{'model':db[_0x4f3c8d[_0x7f34('0x25')]],'as':_0x4f3c8d['as'],'attributes':_0x4f3c8d['attributes'],'include':_0x4f3c8d[_0x7f34('0x23')]?_[_0x7f34('0x24')](_0x4f3c8d[_0x7f34('0x23')],function(_0xc199aa){return{'model':db[_0xc199aa[_0x7f34('0x25')]],'as':_0xc199aa['as'],'attributes':_0xc199aa[_0x7f34('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7f34('0x12')](function(_0x1b9952){logger[_0x7f34('0x13')](_0x7f34('0x1c'),_0x5cead0);logger[_0x7f34('0x16')]('GetVoiceQueue',_0x5cead0,JSON['stringify'](_0x1b9952));_0x47c622(_0x1b9952);})[_0x7f34('0x26')](function(_0x4f60be){logger[_0x7f34('0x18')](_0x7f34('0x1c'),_0x4f60be['message'],_0x5cead0);_0x20fc27(_0x24df9e[_0x7f34('0x18')](0x1f4,_0x4f60be['message']));});});};exports['ShowVoiceQueue']=function(_0xe1e390){var _0x114338=this;return new Promise(function(_0x535658,_0x30c2ef){return db[_0x7f34('0x1d')]['find']({'raw':_0xe1e390[_0x7f34('0x1e')]?_0xe1e390[_0x7f34('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0xe1e390[_0x7f34('0x1e')]?_0xe1e390[_0x7f34('0x1e')][_0x7f34('0x20')]||null:null,'attributes':_0xe1e390['options']?_0xe1e390[_0x7f34('0x1e')][_0x7f34('0x21')]||null:null,'include':_0xe1e390[_0x7f34('0x1e')]?_0xe1e390['options'][_0x7f34('0x23')]?_[_0x7f34('0x24')](_0xe1e390[_0x7f34('0x1e')][_0x7f34('0x23')],function(_0x531434){return{'model':db[_0x531434[_0x7f34('0x25')]],'as':_0x531434['as'],'attributes':_0x531434[_0x7f34('0x21')],'include':_0x531434['include']?_[_0x7f34('0x24')](_0x531434['include'],function(_0xde4e72){return{'model':db[_0xde4e72[_0x7f34('0x25')]],'as':_0xde4e72['as'],'attributes':_0xde4e72['attributes'],'include':_0xde4e72[_0x7f34('0x23')]?_[_0x7f34('0x24')](_0xde4e72[_0x7f34('0x23')],function(_0x40ad9d){return{'model':db[_0x40ad9d[_0x7f34('0x25')]],'as':_0x40ad9d['as'],'attributes':_0x40ad9d[_0x7f34('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7f34('0x12')](function(_0x4f275b){logger['info'](_0x7f34('0x27'),_0xe1e390);logger[_0x7f34('0x16')](_0x7f34('0x27'),_0xe1e390,JSON[_0x7f34('0x28')](_0x4f275b));_0x535658(_0x4f275b);})['catch'](function(_0x1ac5db){logger[_0x7f34('0x18')]('ShowVoiceQueue',_0x1ac5db[_0x7f34('0x1a')],_0xe1e390);_0x30c2ef(_0x114338[_0x7f34('0x18')](0x1f4,_0x1ac5db[_0x7f34('0x1a')]));});});};
\ No newline at end of file
+var _0x1261=['findAll','options','where','attributes','limit','map','model','include','GetVoiceQueue','catch','ShowVoiceQueue','VoiceQueue','find','raw','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','request\x20sent','debug','stringify','code','error','message','VoiceQueue,\x20%s,\x20%s','info','result'];(function(_0x143cfd,_0x1a336e){var _0x2cb5f5=function(_0x1523fa){while(--_0x1523fa){_0x143cfd['push'](_0x143cfd['shift']());}};_0x2cb5f5(++_0x1a336e);}(_0x1261,0xaa));var _0x1126=function(_0x31f7c5,_0x3bf428){_0x31f7c5=_0x31f7c5-0x0;var _0x19fabc=_0x1261[_0x31f7c5];return _0x19fabc;};'use strict';var _=require(_0x1126('0x0'));var util=require('util');var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1126('0x3'))['db'];var utils=require(_0x1126('0x4'));var logger=require(_0x1126('0x5'))(_0x1126('0x6'));var config=require(_0x1126('0x7'));var jayson=require(_0x1126('0x8'));var client=jayson[_0x1126('0x9')]['http']({'port':0x232a});config[_0x1126('0xa')]=_[_0x1126('0xb')](config[_0x1126('0xa')],{'host':_0x1126('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceQueue.socket')[_0x1126('0xd')](socket);function respondWithRpcPromise(_0x31cf07,_0x28d1fd,_0x36603d){return new BPromise(function(_0x23e866,_0x1a6a54){return client[_0x1126('0xe')](_0x31cf07,_0x36603d)[_0x1126('0xf')](function(_0x23e9b1){logger['info']('VoiceQueue,\x20%s,\x20%s',_0x28d1fd,_0x1126('0x10'));logger[_0x1126('0x11')]('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x28d1fd,'request\x20sent',JSON[_0x1126('0x12')](_0x23e9b1));if(_0x23e9b1['error']){if(_0x23e9b1['error'][_0x1126('0x13')]===0x1f4){logger[_0x1126('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x28d1fd,_0x23e9b1[_0x1126('0x14')]['message']);return _0x1a6a54(_0x23e9b1[_0x1126('0x14')][_0x1126('0x15')]);}logger[_0x1126('0x14')](_0x1126('0x16'),_0x28d1fd,_0x23e9b1['error'][_0x1126('0x15')]);return _0x23e866(_0x23e9b1[_0x1126('0x14')][_0x1126('0x15')]);}else{logger[_0x1126('0x17')](_0x1126('0x16'),_0x28d1fd,_0x1126('0x10'));_0x23e866(_0x23e9b1[_0x1126('0x18')][_0x1126('0x15')]);}})['catch'](function(_0x3beb2){logger[_0x1126('0x14')](_0x1126('0x16'),_0x28d1fd,_0x3beb2);_0x1a6a54(_0x3beb2);});});}exports['GetVoiceQueue']=function(_0x173096){var _0x101bf6=this;return new Promise(function(_0xe21c03,_0x22b3c0){return db['VoiceQueue'][_0x1126('0x19')]({'raw':_0x173096[_0x1126('0x1a')]?_0x173096[_0x1126('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x173096[_0x1126('0x1a')]?_0x173096[_0x1126('0x1a')][_0x1126('0x1b')]||null:null,'attributes':_0x173096[_0x1126('0x1a')]?_0x173096[_0x1126('0x1a')][_0x1126('0x1c')]||null:null,'limit':_0x173096[_0x1126('0x1a')]?_0x173096[_0x1126('0x1a')][_0x1126('0x1d')]||null:null,'include':_0x173096['options']?_0x173096[_0x1126('0x1a')]['include']?_[_0x1126('0x1e')](_0x173096[_0x1126('0x1a')]['include'],function(_0x20894d){return{'model':db[_0x20894d[_0x1126('0x1f')]],'as':_0x20894d['as'],'attributes':_0x20894d['attributes'],'include':_0x20894d[_0x1126('0x20')]?_[_0x1126('0x1e')](_0x20894d[_0x1126('0x20')],function(_0x450f03){return{'model':db[_0x450f03['model']],'as':_0x450f03['as'],'attributes':_0x450f03[_0x1126('0x1c')],'include':_0x450f03[_0x1126('0x20')]?_[_0x1126('0x1e')](_0x450f03[_0x1126('0x20')],function(_0x262ccc){return{'model':db[_0x262ccc[_0x1126('0x1f')]],'as':_0x262ccc['as'],'attributes':_0x262ccc[_0x1126('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x12772a){logger[_0x1126('0x17')](_0x1126('0x21'),_0x173096);logger[_0x1126('0x11')](_0x1126('0x21'),_0x173096,JSON['stringify'](_0x12772a));_0xe21c03(_0x12772a);})[_0x1126('0x22')](function(_0x2b3c67){logger[_0x1126('0x14')]('GetVoiceQueue',_0x2b3c67['message'],_0x173096);_0x22b3c0(_0x101bf6['error'](0x1f4,_0x2b3c67[_0x1126('0x15')]));});});};exports[_0x1126('0x23')]=function(_0x12d986){var _0x5c8eb4=this;return new Promise(function(_0x52bfbf,_0x24935a){return db[_0x1126('0x24')][_0x1126('0x25')]({'raw':_0x12d986[_0x1126('0x1a')]?_0x12d986[_0x1126('0x1a')][_0x1126('0x26')]===undefined?!![]:![]:!![],'where':_0x12d986[_0x1126('0x1a')]?_0x12d986['options'][_0x1126('0x1b')]||null:null,'attributes':_0x12d986['options']?_0x12d986[_0x1126('0x1a')][_0x1126('0x1c')]||null:null,'include':_0x12d986[_0x1126('0x1a')]?_0x12d986[_0x1126('0x1a')][_0x1126('0x20')]?_['map'](_0x12d986[_0x1126('0x1a')][_0x1126('0x20')],function(_0x1acaa8){return{'model':db[_0x1acaa8[_0x1126('0x1f')]],'as':_0x1acaa8['as'],'attributes':_0x1acaa8['attributes'],'include':_0x1acaa8[_0x1126('0x20')]?_[_0x1126('0x1e')](_0x1acaa8[_0x1126('0x20')],function(_0x29279c){return{'model':db[_0x29279c[_0x1126('0x1f')]],'as':_0x29279c['as'],'attributes':_0x29279c[_0x1126('0x1c')],'include':_0x29279c[_0x1126('0x20')]?_[_0x1126('0x1e')](_0x29279c[_0x1126('0x20')],function(_0x51e91a){return{'model':db[_0x51e91a[_0x1126('0x1f')]],'as':_0x51e91a['as'],'attributes':_0x51e91a[_0x1126('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x547df1){logger[_0x1126('0x17')]('ShowVoiceQueue',_0x12d986);logger[_0x1126('0x11')](_0x1126('0x23'),_0x12d986,JSON[_0x1126('0x12')](_0x547df1));_0x52bfbf(_0x547df1);})[_0x1126('0x22')](function(_0x1fff58){logger[_0x1126('0x14')]('ShowVoiceQueue',_0x1fff58['message'],_0x12d986);_0x24935a(_0x5c8eb4[_0x1126('0x14')](0x1f4,_0x1fff58['message']));});});};
\ No newline at end of file
index db57a63..8ebed5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0150=['./voiceQueue.events','save','remove','emit','removeListener','register'];(function(_0x109669,_0x1b4895){var _0x4dd5a7=function(_0x1dc91b){while(--_0x1dc91b){_0x109669['push'](_0x109669['shift']());}};_0x4dd5a7(++_0x1b4895);}(_0x0150,0x6c));var _0x0015=function(_0x13d498,_0x266a5a){_0x13d498=_0x13d498-0x0;var _0x1885ed=_0x0150[_0x13d498];return _0x1885ed;};'use strict';var VoiceQueueEvents=require(_0x0015('0x0'));var events=[_0x0015('0x1'),_0x0015('0x2'),'update'];function createListener(_0x55ff04,_0x12d8bc){return function(_0xff9ffe){_0x12d8bc[_0x0015('0x3')](_0x55ff04,_0xff9ffe);};}function removeListener(_0x2f44ab,_0x463b5f){return function(){VoiceQueueEvents[_0x0015('0x4')](_0x2f44ab,_0x463b5f);};}exports[_0x0015('0x5')]=function(_0x436d92){for(var _0x5e0ff7=0x0,_0x416e1c=events['length'];_0x5e0ff7<_0x416e1c;_0x5e0ff7++){var _0x436794=events[_0x5e0ff7];var _0x244be9=createListener('voiceQueue:'+_0x436794,_0x436d92);VoiceQueueEvents['on'](_0x436794,_0x244be9);}};
\ No newline at end of file
+var _0x1e6b=['length','./voiceQueue.events','save','remove','update','removeListener','register'];(function(_0x2c21f8,_0x753291){var _0x5b2c19=function(_0x561608){while(--_0x561608){_0x2c21f8['push'](_0x2c21f8['shift']());}};_0x5b2c19(++_0x753291);}(_0x1e6b,0x1ba));var _0xb1e6=function(_0x1d74e1,_0x1fa521){_0x1d74e1=_0x1d74e1-0x0;var _0xbb12e6=_0x1e6b[_0x1d74e1];return _0xbb12e6;};'use strict';var VoiceQueueEvents=require(_0xb1e6('0x0'));var events=[_0xb1e6('0x1'),_0xb1e6('0x2'),_0xb1e6('0x3')];function createListener(_0xa7419c,_0x32d185){return function(_0x3f2bba){_0x32d185['emit'](_0xa7419c,_0x3f2bba);};}function removeListener(_0x4ac0ee,_0x121b60){return function(){VoiceQueueEvents[_0xb1e6('0x4')](_0x4ac0ee,_0x121b60);};}exports[_0xb1e6('0x5')]=function(_0x4c6343){for(var _0xbcbd02=0x0,_0x3febf3=events[_0xb1e6('0x6')];_0xbcbd02<_0x3febf3;_0xbcbd02++){var _0x49c199=events[_0xbcbd02];var _0x4af8db=createListener('voiceQueue:'+_0x49c199,_0x4c6343);VoiceQueueEvents['on'](_0x49c199,_0x4af8db);}};
\ No newline at end of file
index 157c296..8743744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc20=['/index','getVoiceQueuesReport','/:id','show','post','create','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xdc20,0x100));var _0x0dc2=function(_0x1e1864,_0x1bb639){_0x1e1864=_0x1e1864-0x0;var _0x1a17ec=_0xdc20[_0x1e1864];return _0x1a17ec;};'use strict';var multer=require(_0x0dc2('0x0'));var util=require(_0x0dc2('0x1'));var path=require(_0x0dc2('0x2'));var timeout=require(_0x0dc2('0x3'));var express=require(_0x0dc2('0x4'));var router=express['Router']();var fs_extra=require(_0x0dc2('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0dc2('0x6'));var controller=require('./voiceQueueReport.controller');router[_0x0dc2('0x7')]('/',auth[_0x0dc2('0x8')](),controller[_0x0dc2('0x9')]);router[_0x0dc2('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x0dc2('0xa'),auth[_0x0dc2('0x8')](),controller[_0x0dc2('0xb')]);router['get'](_0x0dc2('0xc'),auth[_0x0dc2('0x8')](),controller[_0x0dc2('0xd')]);router[_0x0dc2('0xe')]('/',auth[_0x0dc2('0x8')](),controller[_0x0dc2('0xf')]);router['put'](_0x0dc2('0xc'),auth['isAuthenticated'](),controller[_0x0dc2('0x10')]);router['delete'](_0x0dc2('0xc'),auth[_0x0dc2('0x8')](),controller[_0x0dc2('0x11')]);module[_0x0dc2('0x12')]=router;
\ No newline at end of file
+var _0x49c8=['getVoiceQueuesReport','/:id','post','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','describe','/index'];(function(_0x2860c0,_0x5ca757){var _0x148415=function(_0xab4f6e){while(--_0xab4f6e){_0x2860c0['push'](_0x2860c0['shift']());}};_0x148415(++_0x5ca757);}(_0x49c8,0x1d3));var _0x849c=function(_0x53be0c,_0x388390){_0x53be0c=_0x53be0c-0x0;var _0x2f7897=_0x49c8[_0x53be0c];return _0x2f7897;};'use strict';var multer=require(_0x849c('0x0'));var util=require(_0x849c('0x1'));var path=require('path');var timeout=require(_0x849c('0x2'));var express=require(_0x849c('0x3'));var router=express['Router']();var fs_extra=require(_0x849c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x849c('0x5'));var config=require(_0x849c('0x6'));var controller=require(_0x849c('0x7'));router['get']('/',auth[_0x849c('0x8')](),controller[_0x849c('0x9')]);router[_0x849c('0xa')]('/describe',auth[_0x849c('0x8')](),controller[_0x849c('0xb')]);router[_0x849c('0xa')](_0x849c('0xc'),auth[_0x849c('0x8')](),controller[_0x849c('0xd')]);router[_0x849c('0xa')](_0x849c('0xe'),auth[_0x849c('0x8')](),controller['show']);router[_0x849c('0xf')]('/',auth[_0x849c('0x8')](),controller['create']);router[_0x849c('0x10')](_0x849c('0xe'),auth[_0x849c('0x8')](),controller[_0x849c('0x11')]);router['delete']('/:id',auth[_0x849c('0x8')](),controller[_0x849c('0x12')]);module[_0x849c('0x13')]=router;
\ No newline at end of file
index c9e5412..8131330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe11d=['moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x154192,_0x2d360f){var _0x3c2792=function(_0x2e257b){while(--_0x2e257b){_0x154192['push'](_0x154192['shift']());}};_0x3c2792(++_0x2d360f);}(_0xe11d,0xfe));var _0xde11=function(_0x2ccf6b,_0x559d7c){_0x2ccf6b=_0x2ccf6b-0x0;var _0x66b1d=_0xe11d[_0x2ccf6b];return _0x66b1d;};'use strict';var Sequelize=require(_0xde11('0x0'));var moment=require(_0xde11('0x1'));module[_0xde11('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xde11('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xde11('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xde11('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xde11('0x4')],'set':function(_0x23c89e){var _0x4a6991=moment(_0x23c89e);var _0x352f4a=moment(this[_0xde11('0x5')](_0xde11('0x6')))[_0xde11('0x7')](_0xde11('0x8'));var _0x10b6f5=_0x4a6991[_0xde11('0x9')](_0x352f4a,'seconds');this[_0xde11('0xa')](_0xde11('0xb'),_0x23c89e);this['setDataValue'](_0xde11('0xc'),_0x10b6f5||null);}},'position':{'type':Sequelize[_0xde11('0xd')]},'count':{'type':Sequelize[_0xde11('0xd')]},'queuecallerabandon':{'type':Sequelize[_0xde11('0xe')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xde11('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xde11('0xe')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0xde11('0xe')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xde11('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xde11('0x3')],'comment':_0xde11('0xf')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0xde11('0x3')]},'connectedlinenum':{'type':Sequelize[_0xde11('0x3')]},'connectedlinename':{'type':Sequelize[_0xde11('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xde11('0x3')]},'exten':{'type':Sequelize[_0xde11('0x3')]},'priority':{'type':Sequelize[_0xde11('0x3')]},'holdtime':{'type':Sequelize[_0xde11('0xd')]},'mohtime':{'type':Sequelize[_0xde11('0xd')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xde11('0xe')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xde11('0x3')]},'transfer':{'type':Sequelize[_0xde11('0xe')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xde11('0x3')],'comment':_0xde11('0x10')},'transferexten':{'type':Sequelize[_0xde11('0x3')]},'transferuniqueid':{'type':Sequelize[_0xde11('0x3')]},'disposition':{'type':Sequelize[_0xde11('0x3')]},'secondDisposition':{'type':Sequelize[_0xde11('0x3')]},'thirdDisposition':{'type':Sequelize[_0xde11('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize[_0xde11('0x3')]}};
\ No newline at end of file
+var _0x205c=['exports','STRING','DATE','diff','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','moment'];(function(_0x581b07,_0x8acd21){var _0x4268a5=function(_0x32a13c){while(--_0x32a13c){_0x581b07['push'](_0x581b07['shift']());}};_0x4268a5(++_0x8acd21);}(_0x205c,0xd0));var _0xc205=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0x205c[_0x12ca5f];return _0xfc3ae9;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc205('0x0'));module[_0xc205('0x1')]={'type':{'type':Sequelize[_0xc205('0x2')]},'uniqueid':{'type':Sequelize[_0xc205('0x2')]},'calleridnum':{'type':Sequelize[_0xc205('0x2')]},'calleridname':{'type':Sequelize[_0xc205('0x2')]},'queue':{'type':Sequelize[_0xc205('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0xc205('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0xc205('0x3')],'set':function(_0x4827de){var _0x269636=moment(_0x4827de);var _0x4587c8=moment(this['getDataValue']('queuecallerjoinAt'))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x16e464=_0x269636[_0xc205('0x4')](_0x4587c8,'seconds');this[_0xc205('0x5')](_0xc205('0x6'),_0x4827de);this[_0xc205('0x5')](_0xc205('0x7'),_0x16e464||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0xc205('0x8')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xc205('0x3')]},'queuecallercomplete':{'type':Sequelize[_0xc205('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xc205('0x3')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0xc205('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0xc205('0x2')]},'connectedlinenum':{'type':Sequelize[_0xc205('0x2')]},'connectedlinename':{'type':Sequelize[_0xc205('0x2')]},'accountcode':{'type':Sequelize[_0xc205('0x2')]},'context':{'type':Sequelize[_0xc205('0x2')]},'exten':{'type':Sequelize[_0xc205('0x2')]},'priority':{'type':Sequelize[_0xc205('0x2')]},'holdtime':{'type':Sequelize[_0xc205('0x8')]},'mohtime':{'type':Sequelize[_0xc205('0x8')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc205('0x9')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xc205('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xc205('0xa')},'transferexten':{'type':Sequelize[_0xc205('0x2')]},'transferuniqueid':{'type':Sequelize[_0xc205('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xc205('0x2')]},'thirdDisposition':{'type':Sequelize[_0xc205('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0xc205('0x8')],'defaultValue':0x0},'note':{'type':Sequelize[_0xc205('0x2')]}};
\ No newline at end of file
index 3ae1aab..428f37d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a54=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','index','map','VoiceQueueReport','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','where','filter','type','merge','options','findAll','rows','catch','show','includeAll','include','find','create','body','update','params','describe','getVoiceQueuesReport','nolimit','pick','eml-format','rimraf','request-promise','mustache','util','path','sox'];(function(_0x3d2158,_0x28fe8c){var _0x4dd0e6=function(_0x8e419b){while(--_0x8e419b){_0x3d2158['push'](_0x3d2158['shift']());}};_0x4dd0e6(++_0x28fe8c);}(_0x4a54,0x18e));var _0x44a5=function(_0xa1db88,_0x4368ea){_0xa1db88=_0xa1db88-0x0;var _0x1259d1=_0x4a54[_0xa1db88];return _0x1259d1;};'use strict';var emlformat=require(_0x44a5('0x0'));var rimraf=require(_0x44a5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44a5('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44a5('0x3'));var util=require(_0x44a5('0x4'));var path=require(_0x44a5('0x5'));var sox=require(_0x44a5('0x6'));var csv=require(_0x44a5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44a5('0x8'));var _=require(_0x44a5('0x9'));var squel=require(_0x44a5('0xa'));var crypto=require(_0x44a5('0xb'));var jsforce=require(_0x44a5('0xc'));var deskjs=require(_0x44a5('0xd'));var toCsv=require(_0x44a5('0x7'));var querystring=require(_0x44a5('0xe'));var Papa=require(_0x44a5('0xf'));var Redis=require('ioredis');var authService=require(_0x44a5('0x10'));var qs=require(_0x44a5('0x11'));var as=require(_0x44a5('0x12'));var hardwareService=require(_0x44a5('0x13'));var logger=require('../../config/logger')(_0x44a5('0x14'));var utils=require(_0x44a5('0x15'));var config=require(_0x44a5('0x16'));var licenseUtil=require(_0x44a5('0x17'));var db=require(_0x44a5('0x18'))['db'];config[_0x44a5('0x19')]=_[_0x44a5('0x1a')](config[_0x44a5('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x44a5('0x1b'))(new Redis(config[_0x44a5('0x19')]));require(_0x44a5('0x1c'))['register'](socket);function respondWithStatusCode(_0x46db74,_0x317a70){_0x317a70=_0x317a70||0xcc;return function(_0x317530){if(_0x317530){return _0x46db74[_0x44a5('0x1d')](_0x317a70);}return _0x46db74['status'](_0x317a70)[_0x44a5('0x1e')]();};}function respondWithResult(_0x440c75,_0x541fb9){_0x541fb9=_0x541fb9||0xc8;return function(_0x449851){if(_0x449851){return _0x440c75[_0x44a5('0x1f')](_0x541fb9)[_0x44a5('0x20')](_0x449851);}};}function respondWithFilteredResult(_0x1ae702,_0x226e20){return function(_0x42b215){if(_0x42b215){var _0x3650c1=typeof _0x226e20[_0x44a5('0x21')]===_0x44a5('0x22')&&typeof _0x226e20[_0x44a5('0x23')]===_0x44a5('0x22');var _0x25580b=_0x42b215['count'];var _0x1f2c0b=_0x3650c1?0x0:_0x226e20[_0x44a5('0x21')];var _0x245a6d=_0x3650c1?_0x42b215[_0x44a5('0x24')]:_0x226e20[_0x44a5('0x21')]+_0x226e20[_0x44a5('0x23')];var _0x39075d;if(_0x245a6d>=_0x25580b){_0x245a6d=_0x25580b;_0x39075d=0xc8;}else{_0x39075d=0xce;}_0x1ae702['status'](_0x39075d);return _0x1ae702[_0x44a5('0x25')]('Content-Range',_0x1f2c0b+'-'+_0x245a6d+'/'+_0x25580b)[_0x44a5('0x20')](_0x42b215);}return null;};}function patchUpdates(_0x3da83a){return function(_0x1dffdf){try{jsonpatch[_0x44a5('0x26')](_0x1dffdf,_0x3da83a,!![]);}catch(_0x58e73c){return BPromise[_0x44a5('0x27')](_0x58e73c);}return _0x1dffdf[_0x44a5('0x28')]();};}function saveUpdates(_0x298eb5,_0x22461b){return function(_0x332bcc){if(_0x332bcc){return _0x332bcc['update'](_0x298eb5)[_0x44a5('0x29')](function(_0x427857){return _0x427857;});}return null;};}function removeEntity(_0x575156,_0x23205f){return function(_0x54220f){if(_0x54220f){return _0x54220f[_0x44a5('0x2a')]()[_0x44a5('0x29')](function(){_0x575156[_0x44a5('0x1f')](0xcc)[_0x44a5('0x1e')]();});}};}function handleEntityNotFound(_0xcfeb2f,_0xf35e7c){return function(_0x4db6d6){if(!_0x4db6d6){_0xcfeb2f[_0x44a5('0x1d')](0x194);}return _0x4db6d6;};}function handleError(_0x384ee4,_0x38edb2){_0x38edb2=_0x38edb2||0x1f4;return function(_0x1043e7){logger['error'](_0x1043e7[_0x44a5('0x2b')]);if(_0x1043e7[_0x44a5('0x2c')]){delete _0x1043e7['name'];}_0x384ee4['status'](_0x38edb2)['send'](_0x1043e7);};}exports[_0x44a5('0x2d')]=function(_0x39e35e,_0x54a940){var _0x56f1b4={},_0x4e4009={},_0x12ac4a={'count':0x0,'rows':[]};var _0x44cee4=_[_0x44a5('0x2e')](db[_0x44a5('0x2f')][_0x44a5('0x30')],function(_0x599e8c){return{'name':_0x599e8c['fieldName'],'type':_0x599e8c['type'][_0x44a5('0x31')]};});_0x4e4009[_0x44a5('0x32')]=_['map'](_0x44cee4,'name');_0x4e4009['query']=_[_0x44a5('0x33')](_0x39e35e['query']);_0x4e4009[_0x44a5('0x34')]=_[_0x44a5('0x35')](_0x4e4009[_0x44a5('0x32')],_0x4e4009[_0x44a5('0x36')]);_0x56f1b4['attributes']=_['intersection'](_0x4e4009['model'],qs['fields'](_0x39e35e[_0x44a5('0x36')][_0x44a5('0x37')]));_0x56f1b4[_0x44a5('0x38')]=_0x56f1b4[_0x44a5('0x38')][_0x44a5('0x39')]?_0x56f1b4['attributes']:_0x4e4009['model'];if(!_0x39e35e['query'][_0x44a5('0x3a')]('nolimit')){_0x56f1b4['limit']=qs[_0x44a5('0x23')](_0x39e35e[_0x44a5('0x36')][_0x44a5('0x23')]);_0x56f1b4[_0x44a5('0x21')]=qs['offset'](_0x39e35e[_0x44a5('0x36')]['offset']);}_0x56f1b4[_0x44a5('0x3b')]=qs[_0x44a5('0x3c')](_0x39e35e[_0x44a5('0x36')][_0x44a5('0x3c')]);_0x56f1b4[_0x44a5('0x3d')]=qs[_0x44a5('0x34')](_['pick'](_0x39e35e[_0x44a5('0x36')],_0x4e4009['filters']),_0x44cee4);if(_0x39e35e[_0x44a5('0x36')][_0x44a5('0x3e')]){_0x56f1b4[_0x44a5('0x3d')]=_['merge'](_0x56f1b4['where'],{'$or':_[_0x44a5('0x2e')](_0x44cee4,function(_0x1b9d97){if(_0x1b9d97[_0x44a5('0x3f')]!=='VIRTUAL'){var _0x23f0fd={};_0x23f0fd[_0x1b9d97[_0x44a5('0x2c')]]={'$like':'%'+_0x39e35e[_0x44a5('0x36')][_0x44a5('0x3e')]+'%'};return _0x23f0fd;}})});}_0x56f1b4=_[_0x44a5('0x40')]({},_0x56f1b4,_0x39e35e[_0x44a5('0x41')]);var _0x1a96c4={'where':_0x56f1b4[_0x44a5('0x3d')]};return db['VoiceQueueReport'][_0x44a5('0x24')](_0x1a96c4)[_0x44a5('0x29')](function(_0x1ac372){_0x12ac4a[_0x44a5('0x24')]=_0x1ac372;if(_0x39e35e['query']['includeAll']){_0x56f1b4['include']=[{'all':!![]}];}return db[_0x44a5('0x2f')][_0x44a5('0x42')](_0x56f1b4);})[_0x44a5('0x29')](function(_0x41b339){_0x12ac4a[_0x44a5('0x43')]=_0x41b339;return _0x12ac4a;})['then'](respondWithFilteredResult(_0x54a940,_0x56f1b4))[_0x44a5('0x44')](handleError(_0x54a940,null));};exports[_0x44a5('0x45')]=function(_0x175a17,_0x540af){var _0x100f62={'raw':![],'where':{'id':_0x175a17['params']['id']}},_0x2c2f06={};_0x2c2f06['model']=_[_0x44a5('0x33')](db['VoiceQueueReport'][_0x44a5('0x30')]);_0x2c2f06[_0x44a5('0x36')]=_['keys'](_0x175a17[_0x44a5('0x36')]);_0x2c2f06['filters']=_[_0x44a5('0x35')](_0x2c2f06[_0x44a5('0x32')],_0x2c2f06[_0x44a5('0x36')]);_0x100f62['attributes']=_[_0x44a5('0x35')](_0x2c2f06['model'],qs['fields'](_0x175a17['query'][_0x44a5('0x37')]));_0x100f62[_0x44a5('0x38')]=_0x100f62[_0x44a5('0x38')][_0x44a5('0x39')]?_0x100f62[_0x44a5('0x38')]:_0x2c2f06[_0x44a5('0x32')];if(_0x175a17[_0x44a5('0x36')][_0x44a5('0x46')]){_0x100f62[_0x44a5('0x47')]=[{'all':!![]}];}_0x100f62=_[_0x44a5('0x40')]({},_0x100f62,_0x175a17[_0x44a5('0x41')]);return db['VoiceQueueReport'][_0x44a5('0x48')](_0x100f62)[_0x44a5('0x29')](handleEntityNotFound(_0x540af,null))[_0x44a5('0x29')](respondWithResult(_0x540af,null))[_0x44a5('0x44')](handleError(_0x540af,null));};exports[_0x44a5('0x49')]=function(_0x38be75,_0x15949f){return db[_0x44a5('0x2f')]['create'](_0x38be75[_0x44a5('0x4a')],{})['then'](respondWithResult(_0x15949f,0xc9))['catch'](handleError(_0x15949f,null));};exports[_0x44a5('0x4b')]=function(_0x3efd76,_0x184d13){if(_0x3efd76['body']['id']){delete _0x3efd76[_0x44a5('0x4a')]['id'];}return db[_0x44a5('0x2f')][_0x44a5('0x48')]({'where':{'id':_0x3efd76[_0x44a5('0x4c')]['id']}})[_0x44a5('0x29')](handleEntityNotFound(_0x184d13,null))[_0x44a5('0x29')](saveUpdates(_0x3efd76[_0x44a5('0x4a')],null))[_0x44a5('0x29')](respondWithResult(_0x184d13,null))[_0x44a5('0x44')](handleError(_0x184d13,null));};exports[_0x44a5('0x2a')]=function(_0x4f7ce8,_0x746835){return db[_0x44a5('0x2f')][_0x44a5('0x48')]({'where':{'id':_0x4f7ce8['params']['id']}})['then'](handleEntityNotFound(_0x746835,null))[_0x44a5('0x29')](removeEntity(_0x746835,null))[_0x44a5('0x44')](handleError(_0x746835,null));};exports[_0x44a5('0x4d')]=function(_0x398da1,_0xc4af75){return db[_0x44a5('0x2f')]['describe']()[_0x44a5('0x29')](respondWithResult(_0xc4af75,null))['catch'](handleError(_0xc4af75,null));};exports[_0x44a5('0x4e')]=function(_0x49dff5,_0x1cbda1){var _0x2e0362={},_0x567ed8={},_0x56e2d0={'count':0x0,'rows':[]};_0x567ed8['model']=_[_0x44a5('0x33')](db['VoiceQueueReport'][_0x44a5('0x30')]);_0x567ed8['query']=_[_0x44a5('0x33')](_0x49dff5[_0x44a5('0x36')]);_0x567ed8[_0x44a5('0x34')]=_[_0x44a5('0x35')](_0x567ed8[_0x44a5('0x32')],_0x567ed8[_0x44a5('0x36')]);_0x2e0362[_0x44a5('0x38')]=_[_0x44a5('0x35')](_0x567ed8['model'],qs[_0x44a5('0x37')](_0x49dff5['query']['fields']));_0x2e0362[_0x44a5('0x38')]=_0x2e0362[_0x44a5('0x38')]['length']?_0x2e0362['attributes']:_0x567ed8[_0x44a5('0x32')];if(!_0x49dff5[_0x44a5('0x36')]['hasOwnProperty'](_0x44a5('0x4f'))){_0x2e0362[_0x44a5('0x23')]=qs['limit'](_0x49dff5[_0x44a5('0x36')][_0x44a5('0x23')]);_0x2e0362[_0x44a5('0x21')]=qs[_0x44a5('0x21')](_0x49dff5[_0x44a5('0x36')][_0x44a5('0x21')]);}_0x2e0362[_0x44a5('0x3b')]=qs[_0x44a5('0x3c')](_0x49dff5['query'][_0x44a5('0x3c')]);_0x2e0362[_0x44a5('0x3d')]=qs[_0x44a5('0x34')](_[_0x44a5('0x50')](_0x49dff5[_0x44a5('0x36')],_0x567ed8[_0x44a5('0x34')]));if(_0x49dff5['query'][_0x44a5('0x3e')]){_0x2e0362[_0x44a5('0x3d')]=_[_0x44a5('0x40')](_0x2e0362['where'],{'$or':_[_0x44a5('0x2e')](_0x2e0362[_0x44a5('0x38')],function(_0x5d5e72){var _0xbf5440={};_0xbf5440[_0x5d5e72]={'$like':'%'+_0x49dff5[_0x44a5('0x36')][_0x44a5('0x3e')]+'%'};return _0xbf5440;})});}_0x2e0362=_[_0x44a5('0x40')]({},_0x2e0362,_0x49dff5[_0x44a5('0x41')]);var _0x5b1493={'where':_0x2e0362['where']};return db['VoiceQueueReport']['count'](_0x5b1493)['then'](function(_0x1529cc){_0x56e2d0[_0x44a5('0x24')]=_0x1529cc;if(_0x49dff5[_0x44a5('0x36')][_0x44a5('0x46')]){_0x2e0362[_0x44a5('0x47')]=[{'all':!![]}];}return db[_0x44a5('0x2f')][_0x44a5('0x42')](_0x2e0362);})[_0x44a5('0x29')](function(_0x272132){_0x56e2d0[_0x44a5('0x43')]=_0x272132;return _0x56e2d0;})[_0x44a5('0x29')](respondWithFilteredResult(_0x1cbda1,_0x2e0362,_0x44a5('0x4e')))['catch'](handleError(_0x1cbda1,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x2446=['crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','./voiceQueueReport.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','end','error','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','length','options','find','create','body','destroy','describe','getVoiceQueuesReport','hasOwnProperty','rows','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2446,0x1d5));var _0x6244=function(_0x3f4fac,_0x2f3f0b){_0x3f4fac=_0x3f4fac-0x0;var _0xbb8141=_0x2446[_0x3f4fac];return _0xbb8141;};'use strict';var emlformat=require(_0x6244('0x0'));var rimraf=require(_0x6244('0x1'));var zipdir=require(_0x6244('0x2'));var jsonpatch=require(_0x6244('0x3'));var rp=require(_0x6244('0x4'));var moment=require('moment');var BPromise=require(_0x6244('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6244('0x6'));var sox=require(_0x6244('0x7'));var csv=require(_0x6244('0x8'));var ejs=require(_0x6244('0x9'));var fs=require('fs');var fs_extra=require(_0x6244('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6244('0xb'));var jsforce=require(_0x6244('0xc'));var deskjs=require(_0x6244('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6244('0xe'));var Papa=require('papaparse');var Redis=require(_0x6244('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6244('0x10'));var hardwareService=require(_0x6244('0x11'));var logger=require(_0x6244('0x12'))(_0x6244('0x13'));var utils=require(_0x6244('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x6244('0x15'));var db=require(_0x6244('0x16'))['db'];config[_0x6244('0x17')]=_['defaults'](config[_0x6244('0x17')],{'host':_0x6244('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6244('0x19'))[_0x6244('0x1a')](socket);function respondWithStatusCode(_0xfafa24,_0x35222c){_0x35222c=_0x35222c||0xcc;return function(_0x25991e){if(_0x25991e){return _0xfafa24[_0x6244('0x1b')](_0x35222c);}return _0xfafa24['status'](_0x35222c)['end']();};}function respondWithResult(_0x5e3b49,_0x329df2){_0x329df2=_0x329df2||0xc8;return function(_0x24be5c){if(_0x24be5c){return _0x5e3b49[_0x6244('0x1c')](_0x329df2)[_0x6244('0x1d')](_0x24be5c);}};}function respondWithFilteredResult(_0x3dfa35,_0x399c96){return function(_0x4ccd0c){if(_0x4ccd0c){var _0x403a87=typeof _0x399c96[_0x6244('0x1e')]===_0x6244('0x1f')&&typeof _0x399c96[_0x6244('0x20')]===_0x6244('0x1f');var _0x1bcc84=_0x4ccd0c[_0x6244('0x21')];var _0x306a66=_0x403a87?0x0:_0x399c96[_0x6244('0x1e')];var _0x25b2b1=_0x403a87?_0x4ccd0c[_0x6244('0x21')]:_0x399c96[_0x6244('0x1e')]+_0x399c96[_0x6244('0x20')];var _0x1ac051;if(_0x25b2b1>=_0x1bcc84){_0x25b2b1=_0x1bcc84;_0x1ac051=0xc8;}else{_0x1ac051=0xce;}_0x3dfa35['status'](_0x1ac051);return _0x3dfa35['set'](_0x6244('0x22'),_0x306a66+'-'+_0x25b2b1+'/'+_0x1bcc84)[_0x6244('0x1d')](_0x4ccd0c);}return null;};}function patchUpdates(_0x257e0b){return function(_0x376518){try{jsonpatch[_0x6244('0x23')](_0x376518,_0x257e0b,!![]);}catch(_0x135e1a){return BPromise['reject'](_0x135e1a);}return _0x376518[_0x6244('0x24')]();};}function saveUpdates(_0x5508a1,_0x7dbb9c){return function(_0x3f98e3){if(_0x3f98e3){return _0x3f98e3[_0x6244('0x25')](_0x5508a1)['then'](function(_0x2980c8){return _0x2980c8;});}return null;};}function removeEntity(_0x4d647d,_0x525b6c){return function(_0x378759){if(_0x378759){return _0x378759['destroy']()[_0x6244('0x26')](function(){_0x4d647d[_0x6244('0x1c')](0xcc)[_0x6244('0x27')]();});}};}function handleEntityNotFound(_0x182507,_0x22e12f){return function(_0x95eaf4){if(!_0x95eaf4){_0x182507[_0x6244('0x1b')](0x194);}return _0x95eaf4;};}function handleError(_0x36ff8a,_0x1c5511){_0x1c5511=_0x1c5511||0x1f4;return function(_0x53703b){logger[_0x6244('0x28')](_0x53703b['stack']);if(_0x53703b['name']){delete _0x53703b['name'];}_0x36ff8a['status'](_0x1c5511)['send'](_0x53703b);};}exports[_0x6244('0x29')]=function(_0x4740fa,_0x3a07c7){var _0x3aecb2={},_0x250e55={},_0x27fb9b={'count':0x0,'rows':[]};var _0x27693d=_[_0x6244('0x2a')](db[_0x6244('0x2b')][_0x6244('0x2c')],function(_0x3be64d){return{'name':_0x3be64d[_0x6244('0x2d')],'type':_0x3be64d[_0x6244('0x2e')][_0x6244('0x2f')]};});_0x250e55[_0x6244('0x30')]=_[_0x6244('0x2a')](_0x27693d,_0x6244('0x31'));_0x250e55['query']=_[_0x6244('0x32')](_0x4740fa[_0x6244('0x33')]);_0x250e55[_0x6244('0x34')]=_[_0x6244('0x35')](_0x250e55[_0x6244('0x30')],_0x250e55[_0x6244('0x33')]);_0x3aecb2[_0x6244('0x36')]=_[_0x6244('0x35')](_0x250e55[_0x6244('0x30')],qs[_0x6244('0x37')](_0x4740fa[_0x6244('0x33')][_0x6244('0x37')]));_0x3aecb2['attributes']=_0x3aecb2[_0x6244('0x36')]['length']?_0x3aecb2['attributes']:_0x250e55[_0x6244('0x30')];if(!_0x4740fa[_0x6244('0x33')]['hasOwnProperty'](_0x6244('0x38'))){_0x3aecb2['limit']=qs[_0x6244('0x20')](_0x4740fa[_0x6244('0x33')]['limit']);_0x3aecb2[_0x6244('0x1e')]=qs[_0x6244('0x1e')](_0x4740fa[_0x6244('0x33')][_0x6244('0x1e')]);}_0x3aecb2[_0x6244('0x39')]=qs[_0x6244('0x3a')](_0x4740fa[_0x6244('0x33')][_0x6244('0x3a')]);_0x3aecb2[_0x6244('0x3b')]=qs['filters'](_[_0x6244('0x3c')](_0x4740fa[_0x6244('0x33')],_0x250e55['filters']),_0x27693d);if(_0x4740fa[_0x6244('0x33')][_0x6244('0x3d')]){_0x3aecb2[_0x6244('0x3b')]=_['merge'](_0x3aecb2[_0x6244('0x3b')],{'$or':_[_0x6244('0x2a')](_0x27693d,function(_0x29201b){if(_0x29201b[_0x6244('0x2e')]!==_0x6244('0x3e')){var _0xea0351={};_0xea0351[_0x29201b['name']]={'$like':'%'+_0x4740fa[_0x6244('0x33')][_0x6244('0x3d')]+'%'};return _0xea0351;}})});}_0x3aecb2=_[_0x6244('0x3f')]({},_0x3aecb2,_0x4740fa['options']);var _0x211e8a={'where':_0x3aecb2[_0x6244('0x3b')]};return db[_0x6244('0x2b')][_0x6244('0x21')](_0x211e8a)[_0x6244('0x26')](function(_0x400631){_0x27fb9b[_0x6244('0x21')]=_0x400631;if(_0x4740fa[_0x6244('0x33')][_0x6244('0x40')]){_0x3aecb2[_0x6244('0x41')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x6244('0x42')](_0x3aecb2);})[_0x6244('0x26')](function(_0xd7997d){_0x27fb9b['rows']=_0xd7997d;return _0x27fb9b;})['then'](respondWithFilteredResult(_0x3a07c7,_0x3aecb2))[_0x6244('0x43')](handleError(_0x3a07c7,null));};exports[_0x6244('0x44')]=function(_0x206eb3,_0x426ba2){var _0x3d940c={'raw':![],'where':{'id':_0x206eb3[_0x6244('0x45')]['id']}},_0x2fbee7={};_0x2fbee7['model']=_[_0x6244('0x32')](db[_0x6244('0x2b')]['rawAttributes']);_0x2fbee7[_0x6244('0x33')]=_[_0x6244('0x32')](_0x206eb3[_0x6244('0x33')]);_0x2fbee7['filters']=_[_0x6244('0x35')](_0x2fbee7['model'],_0x2fbee7[_0x6244('0x33')]);_0x3d940c['attributes']=_[_0x6244('0x35')](_0x2fbee7[_0x6244('0x30')],qs[_0x6244('0x37')](_0x206eb3[_0x6244('0x33')][_0x6244('0x37')]));_0x3d940c[_0x6244('0x36')]=_0x3d940c[_0x6244('0x36')][_0x6244('0x46')]?_0x3d940c[_0x6244('0x36')]:_0x2fbee7[_0x6244('0x30')];if(_0x206eb3[_0x6244('0x33')][_0x6244('0x40')]){_0x3d940c[_0x6244('0x41')]=[{'all':!![]}];}_0x3d940c=_[_0x6244('0x3f')]({},_0x3d940c,_0x206eb3[_0x6244('0x47')]);return db[_0x6244('0x2b')][_0x6244('0x48')](_0x3d940c)[_0x6244('0x26')](handleEntityNotFound(_0x426ba2,null))[_0x6244('0x26')](respondWithResult(_0x426ba2,null))[_0x6244('0x43')](handleError(_0x426ba2,null));};exports[_0x6244('0x49')]=function(_0x1be83a,_0x15c0e4){return db[_0x6244('0x2b')][_0x6244('0x49')](_0x1be83a[_0x6244('0x4a')],{})[_0x6244('0x26')](respondWithResult(_0x15c0e4,0xc9))[_0x6244('0x43')](handleError(_0x15c0e4,null));};exports[_0x6244('0x25')]=function(_0x48c7e7,_0x5828ed){if(_0x48c7e7['body']['id']){delete _0x48c7e7[_0x6244('0x4a')]['id'];}return db[_0x6244('0x2b')][_0x6244('0x48')]({'where':{'id':_0x48c7e7[_0x6244('0x45')]['id']}})['then'](handleEntityNotFound(_0x5828ed,null))[_0x6244('0x26')](saveUpdates(_0x48c7e7[_0x6244('0x4a')],null))['then'](respondWithResult(_0x5828ed,null))[_0x6244('0x43')](handleError(_0x5828ed,null));};exports[_0x6244('0x4b')]=function(_0xe5e3ad,_0x216074){return db['VoiceQueueReport']['find']({'where':{'id':_0xe5e3ad[_0x6244('0x45')]['id']}})[_0x6244('0x26')](handleEntityNotFound(_0x216074,null))[_0x6244('0x26')](removeEntity(_0x216074,null))['catch'](handleError(_0x216074,null));};exports[_0x6244('0x4c')]=function(_0x32effb,_0x4325f3){return db[_0x6244('0x2b')][_0x6244('0x4c')]()[_0x6244('0x26')](respondWithResult(_0x4325f3,null))['catch'](handleError(_0x4325f3,null));};exports[_0x6244('0x4d')]=function(_0x39d896,_0xdbf448){var _0x1ef22c={},_0x13c221={},_0x269d26={'count':0x0,'rows':[]};_0x13c221['model']=_[_0x6244('0x32')](db['VoiceQueueReport']['rawAttributes']);_0x13c221[_0x6244('0x33')]=_[_0x6244('0x32')](_0x39d896[_0x6244('0x33')]);_0x13c221[_0x6244('0x34')]=_['intersection'](_0x13c221['model'],_0x13c221[_0x6244('0x33')]);_0x1ef22c['attributes']=_['intersection'](_0x13c221[_0x6244('0x30')],qs['fields'](_0x39d896[_0x6244('0x33')][_0x6244('0x37')]));_0x1ef22c[_0x6244('0x36')]=_0x1ef22c['attributes']['length']?_0x1ef22c[_0x6244('0x36')]:_0x13c221[_0x6244('0x30')];if(!_0x39d896['query'][_0x6244('0x4e')](_0x6244('0x38'))){_0x1ef22c[_0x6244('0x20')]=qs['limit'](_0x39d896['query'][_0x6244('0x20')]);_0x1ef22c[_0x6244('0x1e')]=qs['offset'](_0x39d896['query'][_0x6244('0x1e')]);}_0x1ef22c['order']=qs[_0x6244('0x3a')](_0x39d896[_0x6244('0x33')]['sort']);_0x1ef22c[_0x6244('0x3b')]=qs['filters'](_[_0x6244('0x3c')](_0x39d896[_0x6244('0x33')],_0x13c221['filters']));if(_0x39d896[_0x6244('0x33')][_0x6244('0x3d')]){_0x1ef22c[_0x6244('0x3b')]=_[_0x6244('0x3f')](_0x1ef22c[_0x6244('0x3b')],{'$or':_[_0x6244('0x2a')](_0x1ef22c[_0x6244('0x36')],function(_0xa7700d){var _0x4acd16={};_0x4acd16[_0xa7700d]={'$like':'%'+_0x39d896[_0x6244('0x33')][_0x6244('0x3d')]+'%'};return _0x4acd16;})});}_0x1ef22c=_['merge']({},_0x1ef22c,_0x39d896['options']);var _0x85a28d={'where':_0x1ef22c[_0x6244('0x3b')]};return db['VoiceQueueReport'][_0x6244('0x21')](_0x85a28d)['then'](function(_0x2cedf3){_0x269d26[_0x6244('0x21')]=_0x2cedf3;if(_0x39d896[_0x6244('0x33')]['includeAll']){_0x1ef22c[_0x6244('0x41')]=[{'all':!![]}];}return db[_0x6244('0x2b')][_0x6244('0x42')](_0x1ef22c);})[_0x6244('0x26')](function(_0x2d7255){_0x269d26[_0x6244('0x4f')]=_0x2d7255;return _0x269d26;})[_0x6244('0x26')](respondWithFilteredResult(_0xdbf448,_0x1ef22c,'getVoiceQueuesReport'))[_0x6244('0x43')](handleError(_0xdbf448,null,_0x6244('0x4d')));};
\ No newline at end of file
index cd82237..600423d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8123=['emit','hasOwnProperty','hook','exports','events','VoiceQueueReport','setMaxListeners','save','update'];(function(_0x6130fe,_0x4e0dce){var _0x1b04eb=function(_0x4dc7ed){while(--_0x4dc7ed){_0x6130fe['push'](_0x6130fe['shift']());}};_0x1b04eb(++_0x4e0dce);}(_0x8123,0x112));var _0x3812=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x8123[_0x465a0c];return _0x1e202e;};'use strict';var EventEmitter=require(_0x3812('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0x3812('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x3812('0x2')](0x0);var events={'afterCreate':_0x3812('0x3'),'afterUpdate':_0x3812('0x4'),'afterDestroy':'remove'};function emitEvent(_0x465048){return function(_0x6ceef0,_0x25cbea,_0x2dff2c){VoiceQueueReportEvents[_0x3812('0x5')](_0x465048+':'+_0x6ceef0['id'],_0x6ceef0);VoiceQueueReportEvents[_0x3812('0x5')](_0x465048,_0x6ceef0);_0x2dff2c(null);};}for(var e in events){if(events[_0x3812('0x6')](e)){var event=events[e];VoiceQueueReport[_0x3812('0x7')](e,emitEvent(event));}}module[_0x3812('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x8509=['events','../../mysqldb','VoiceQueueReport','setMaxListeners','update','remove','emit','hasOwnProperty','exports'];(function(_0x324cfb,_0x2385e4){var _0x471a8e=function(_0x585dbe){while(--_0x585dbe){_0x324cfb['push'](_0x324cfb['shift']());}};_0x471a8e(++_0x2385e4);}(_0x8509,0xb4));var _0x9850=function(_0x1e4c37,_0xdf253e){_0x1e4c37=_0x1e4c37-0x0;var _0xec3469=_0x8509[_0x1e4c37];return _0xec3469;};'use strict';var EventEmitter=require(_0x9850('0x0'));var VoiceQueueReport=require(_0x9850('0x1'))['db'][_0x9850('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x9850('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9850('0x4'),'afterDestroy':_0x9850('0x5')};function emitEvent(_0x57bb61){return function(_0x594df1,_0x4f57e3,_0x4f9173){VoiceQueueReportEvents[_0x9850('0x6')](_0x57bb61+':'+_0x594df1['id'],_0x594df1);VoiceQueueReportEvents[_0x9850('0x6')](_0x57bb61,_0x594df1);_0x4f9173(null);};}for(var e in events){if(events[_0x9850('0x7')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x9850('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index 3be017f..3ca3f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe5=['VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./voiceQueueReport.attributes','define'];(function(_0x1729ef,_0x1cf88b){var _0x5be9e4=function(_0x48999f){while(--_0x48999f){_0x1729ef['push'](_0x1729ef['shift']());}};_0x5be9e4(++_0x1cf88b);}(_0xcbe5,0x1d8));var _0x5cbe=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xcbe5[_0x413feb];return _0x40ee88;};'use strict';var _=require('lodash');var util=require(_0x5cbe('0x0'));var logger=require(_0x5cbe('0x1'))(_0x5cbe('0x2'));var moment=require('moment');var BPromise=require(_0x5cbe('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5cbe('0x4'));var rimraf=require(_0x5cbe('0x5'));var config=require(_0x5cbe('0x6'));var attributes=require(_0x5cbe('0x7'));module['exports']=function(_0x1760df,_0x54f81c){return _0x1760df[_0x5cbe('0x8')](_0x5cbe('0x9'),attributes,{'tableName':_0x5cbe('0xa'),'paranoid':![],'indexes':[{'fields':[_0x5cbe('0xb')]},{'fields':[_0x5cbe('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0eb7=['path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','report_queue','calleridnum','lodash','util','moment','bluebird','request-promise'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x0eb7,0x1e7));var _0x70eb=function(_0x3e3280,_0x2e2c6e){_0x3e3280=_0x3e3280-0x0;var _0x45e1e5=_0x0eb7[_0x3e3280];return _0x45e1e5;};'use strict';var _=require(_0x70eb('0x0'));var util=require(_0x70eb('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x70eb('0x2'));var BPromise=require(_0x70eb('0x3'));var rp=require(_0x70eb('0x4'));var fs=require('fs');var path=require(_0x70eb('0x5'));var rimraf=require(_0x70eb('0x6'));var config=require(_0x70eb('0x7'));var attributes=require(_0x70eb('0x8'));module[_0x70eb('0x9')]=function(_0x2d1933,_0x367dd8){return _0x2d1933['define']('VoiceQueueReport',attributes,{'tableName':_0x70eb('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x70eb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index dabc282..d45d0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4041=['VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueReport','findAll','raw','options','where','limit','map','model','attributes','include','VoiceQueueReport','create','CreateVoiceQueueReport','UpdateVoiceQueueReport','body','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','./voiceQueueReport.socket','register','request','then','info'];(function(_0x5978b5,_0x3e9432){var _0x5d9aca=function(_0x27bcd0){while(--_0x27bcd0){_0x5978b5['push'](_0x5978b5['shift']());}};_0x5d9aca(++_0x3e9432);}(_0x4041,0xc1));var _0x1404=function(_0x465ba9,_0x4e26d3){_0x465ba9=_0x465ba9-0x0;var _0x27cb97=_0x4041[_0x465ba9];return _0x27cb97;};'use strict';var _=require('lodash');var util=require(_0x1404('0x0'));var moment=require(_0x1404('0x1'));var BPromise=require(_0x1404('0x2'));var rs=require(_0x1404('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1404('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1404('0x5'))(_0x1404('0x6'));var config=require(_0x1404('0x7'));var jayson=require(_0x1404('0x8'));var client=jayson['client'][_0x1404('0x9')]({'port':0x232a});config['redis']=_[_0x1404('0xa')](config[_0x1404('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1404('0xb')]));require(_0x1404('0xc'))[_0x1404('0xd')](socket);function respondWithRpcPromise(_0x4ccedb,_0x4f61a0,_0x4c26ef){return new BPromise(function(_0x5a813e,_0x4d26cf){return client[_0x1404('0xe')](_0x4ccedb,_0x4c26ef)[_0x1404('0xf')](function(_0x4ec562){logger[_0x1404('0x10')](_0x1404('0x11'),_0x4f61a0,_0x1404('0x12'));logger[_0x1404('0x13')](_0x1404('0x14'),_0x4f61a0,'request\x20sent',JSON[_0x1404('0x15')](_0x4ec562));if(_0x4ec562[_0x1404('0x16')]){if(_0x4ec562[_0x1404('0x16')][_0x1404('0x17')]===0x1f4){logger[_0x1404('0x16')](_0x1404('0x11'),_0x4f61a0,_0x4ec562[_0x1404('0x16')][_0x1404('0x18')]);return _0x4d26cf(_0x4ec562[_0x1404('0x16')][_0x1404('0x18')]);}logger[_0x1404('0x16')](_0x1404('0x11'),_0x4f61a0,_0x4ec562[_0x1404('0x16')]['message']);return _0x5a813e(_0x4ec562[_0x1404('0x16')]['message']);}else{logger[_0x1404('0x10')](_0x1404('0x11'),_0x4f61a0,_0x1404('0x12'));_0x5a813e(_0x4ec562[_0x1404('0x19')][_0x1404('0x18')]);}})[_0x1404('0x1a')](function(_0x12334d){logger[_0x1404('0x16')](_0x1404('0x11'),_0x4f61a0,_0x12334d);_0x4d26cf(_0x12334d);});});}exports[_0x1404('0x1b')]=function(_0xd729b5){var _0x24282d=this;return new Promise(function(_0x51467f,_0x1cdf15){return db['VoiceQueueReport'][_0x1404('0x1c')]({'raw':_0xd729b5['options']?_0xd729b5['options'][_0x1404('0x1d')]===undefined?!![]:![]:!![],'where':_0xd729b5[_0x1404('0x1e')]?_0xd729b5['options'][_0x1404('0x1f')]||null:null,'attributes':_0xd729b5['options']?_0xd729b5[_0x1404('0x1e')]['attributes']||null:null,'limit':_0xd729b5[_0x1404('0x1e')]?_0xd729b5[_0x1404('0x1e')][_0x1404('0x20')]||null:null,'include':_0xd729b5[_0x1404('0x1e')]?_0xd729b5['options']['include']?_[_0x1404('0x21')](_0xd729b5['options']['include'],function(_0x44caff){return{'model':db[_0x44caff[_0x1404('0x22')]],'as':_0x44caff['as'],'attributes':_0x44caff[_0x1404('0x23')],'include':_0x44caff['include']?_['map'](_0x44caff[_0x1404('0x24')],function(_0x599413){return{'model':db[_0x599413['model']],'as':_0x599413['as'],'attributes':_0x599413[_0x1404('0x23')],'include':_0x599413[_0x1404('0x24')]?_[_0x1404('0x21')](_0x599413[_0x1404('0x24')],function(_0x3e7672){return{'model':db[_0x3e7672[_0x1404('0x22')]],'as':_0x3e7672['as'],'attributes':_0x3e7672[_0x1404('0x23')]};}):[]};}):[]};}):[]:[]})[_0x1404('0xf')](function(_0x3d9923){logger[_0x1404('0x10')](_0x1404('0x1b'),_0xd729b5);logger[_0x1404('0x13')](_0x1404('0x1b'),_0xd729b5,JSON['stringify'](_0x3d9923));_0x51467f(_0x3d9923);})[_0x1404('0x1a')](function(_0x5be592){logger['error'](_0x1404('0x1b'),_0x5be592[_0x1404('0x18')],_0xd729b5);_0x1cdf15(_0x24282d[_0x1404('0x16')](0x1f4,_0x5be592[_0x1404('0x18')]));});});};exports['CreateVoiceQueueReport']=function(_0x592b49){var _0x4eede5=this;return new Promise(function(_0x15ad24,_0x97842b){return db[_0x1404('0x25')][_0x1404('0x26')](_0x592b49['body'],{'raw':_0x592b49['options']?_0x592b49[_0x1404('0x1e')][_0x1404('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x243345){logger[_0x1404('0x10')]('CreateVoiceQueueReport',_0x592b49);logger[_0x1404('0x13')](_0x1404('0x27'),_0x592b49,JSON[_0x1404('0x15')](_0x243345));_0x15ad24(_0x243345);})[_0x1404('0x1a')](function(_0x519da1){logger['error'](_0x1404('0x27'),_0x519da1[_0x1404('0x18')],_0x592b49);_0x97842b(_0x4eede5[_0x1404('0x16')](0x1f4,_0x519da1['message']));});});};exports[_0x1404('0x28')]=function(_0x53a6af){var _0x2ffaef=this;return new Promise(function(_0x510ba5,_0x13a01c){return db[_0x1404('0x25')]['update'](_0x53a6af[_0x1404('0x29')],{'raw':_0x53a6af[_0x1404('0x1e')]?_0x53a6af[_0x1404('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53a6af[_0x1404('0x1e')]?_0x53a6af['options'][_0x1404('0x1f')]||null:null,'attributes':_0x53a6af[_0x1404('0x1e')]?_0x53a6af['options'][_0x1404('0x23')]||null:null,'limit':_0x53a6af['options']?_0x53a6af[_0x1404('0x1e')]['limit']||null:null})[_0x1404('0xf')](function(_0x475add){logger[_0x1404('0x10')](_0x1404('0x28'),_0x53a6af);logger[_0x1404('0x13')](_0x1404('0x28'),_0x53a6af,JSON[_0x1404('0x15')](_0x475add));_0x510ba5(_0x475add);})['catch'](function(_0x5183d5){logger[_0x1404('0x16')](_0x1404('0x28'),_0x5183d5[_0x1404('0x18')],_0x53a6af);_0x13a01c(_0x2ffaef['error'](0x1f4,_0x5183d5[_0x1404('0x18')]));});});};
\ No newline at end of file
+var _0x834b=['raw','where','attributes','limit','include','model','map','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options'];(function(_0x267c52,_0x3c0df3){var _0x46c47b=function(_0x3c3740){while(--_0x3c3740){_0x267c52['push'](_0x267c52['shift']());}};_0x46c47b(++_0x3c0df3);}(_0x834b,0xaf));var _0xb834=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x834b[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xb834('0x0'));var util=require('util');var moment=require(_0xb834('0x1'));var BPromise=require(_0xb834('0x2'));var rs=require(_0xb834('0x3'));var fs=require('fs');var Redis=require(_0xb834('0x4'));var db=require(_0xb834('0x5'))['db'];var utils=require(_0xb834('0x6'));var logger=require(_0xb834('0x7'))('rpc');var config=require(_0xb834('0x8'));var jayson=require(_0xb834('0x9'));var client=jayson[_0xb834('0xa')][_0xb834('0xb')]({'port':0x232a});config[_0xb834('0xc')]=_['defaults'](config[_0xb834('0xc')],{'host':_0xb834('0xd'),'port':0x18eb});var socket=require(_0xb834('0xe'))(new Redis(config[_0xb834('0xc')]));require(_0xb834('0xf'))[_0xb834('0x10')](socket);function respondWithRpcPromise(_0x440c20,_0x34d1a1,_0x1cab25){return new BPromise(function(_0x5bb21b,_0x1b4e56){return client['request'](_0x440c20,_0x1cab25)[_0xb834('0x11')](function(_0x191c74){logger[_0xb834('0x12')](_0xb834('0x13'),_0x34d1a1,_0xb834('0x14'));logger[_0xb834('0x15')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x34d1a1,'request\x20sent',JSON[_0xb834('0x16')](_0x191c74));if(_0x191c74[_0xb834('0x17')]){if(_0x191c74['error']['code']===0x1f4){logger['error'](_0xb834('0x13'),_0x34d1a1,_0x191c74[_0xb834('0x17')]['message']);return _0x1b4e56(_0x191c74[_0xb834('0x17')][_0xb834('0x18')]);}logger[_0xb834('0x17')](_0xb834('0x13'),_0x34d1a1,_0x191c74[_0xb834('0x17')][_0xb834('0x18')]);return _0x5bb21b(_0x191c74['error'][_0xb834('0x18')]);}else{logger[_0xb834('0x12')](_0xb834('0x13'),_0x34d1a1,'request\x20sent');_0x5bb21b(_0x191c74[_0xb834('0x19')][_0xb834('0x18')]);}})[_0xb834('0x1a')](function(_0x23ac6d){logger[_0xb834('0x17')](_0xb834('0x13'),_0x34d1a1,_0x23ac6d);_0x1b4e56(_0x23ac6d);});});}exports[_0xb834('0x1b')]=function(_0xe5bf5d){var _0x594118=this;return new Promise(function(_0x3326a6,_0x5a3103){return db[_0xb834('0x1c')]['findAll']({'raw':_0xe5bf5d['options']?_0xe5bf5d[_0xb834('0x1d')][_0xb834('0x1e')]===undefined?!![]:![]:!![],'where':_0xe5bf5d['options']?_0xe5bf5d['options'][_0xb834('0x1f')]||null:null,'attributes':_0xe5bf5d[_0xb834('0x1d')]?_0xe5bf5d[_0xb834('0x1d')][_0xb834('0x20')]||null:null,'limit':_0xe5bf5d[_0xb834('0x1d')]?_0xe5bf5d[_0xb834('0x1d')][_0xb834('0x21')]||null:null,'include':_0xe5bf5d['options']?_0xe5bf5d[_0xb834('0x1d')]['include']?_['map'](_0xe5bf5d[_0xb834('0x1d')][_0xb834('0x22')],function(_0x50cf39){return{'model':db[_0x50cf39[_0xb834('0x23')]],'as':_0x50cf39['as'],'attributes':_0x50cf39[_0xb834('0x20')],'include':_0x50cf39[_0xb834('0x22')]?_[_0xb834('0x24')](_0x50cf39['include'],function(_0x123948){return{'model':db[_0x123948[_0xb834('0x23')]],'as':_0x123948['as'],'attributes':_0x123948[_0xb834('0x20')],'include':_0x123948[_0xb834('0x22')]?_[_0xb834('0x24')](_0x123948[_0xb834('0x22')],function(_0x4549e1){return{'model':db[_0x4549e1[_0xb834('0x23')]],'as':_0x4549e1['as'],'attributes':_0x4549e1[_0xb834('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x282edf){logger[_0xb834('0x12')](_0xb834('0x1b'),_0xe5bf5d);logger[_0xb834('0x15')](_0xb834('0x1b'),_0xe5bf5d,JSON[_0xb834('0x16')](_0x282edf));_0x3326a6(_0x282edf);})[_0xb834('0x1a')](function(_0x51fd59){logger[_0xb834('0x17')](_0xb834('0x1b'),_0x51fd59[_0xb834('0x18')],_0xe5bf5d);_0x5a3103(_0x594118[_0xb834('0x17')](0x1f4,_0x51fd59['message']));});});};exports[_0xb834('0x25')]=function(_0x3e13f2){var _0x551bbc=this;return new Promise(function(_0x5cd89a,_0x344277){return db['VoiceQueueReport'][_0xb834('0x26')](_0x3e13f2[_0xb834('0x27')],{'raw':_0x3e13f2[_0xb834('0x1d')]?_0x3e13f2[_0xb834('0x1d')][_0xb834('0x1e')]===undefined?!![]:![]:!![]})[_0xb834('0x11')](function(_0x220596){logger[_0xb834('0x12')](_0xb834('0x25'),_0x3e13f2);logger['debug'](_0xb834('0x25'),_0x3e13f2,JSON[_0xb834('0x16')](_0x220596));_0x5cd89a(_0x220596);})['catch'](function(_0x36026d){logger[_0xb834('0x17')](_0xb834('0x25'),_0x36026d[_0xb834('0x18')],_0x3e13f2);_0x344277(_0x551bbc[_0xb834('0x17')](0x1f4,_0x36026d['message']));});});};exports['UpdateVoiceQueueReport']=function(_0x2fcfec){var _0xb6267c=this;return new Promise(function(_0xc3469f,_0x3d160a){return db[_0xb834('0x1c')]['update'](_0x2fcfec[_0xb834('0x27')],{'raw':_0x2fcfec[_0xb834('0x1d')]?_0x2fcfec['options'][_0xb834('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fcfec[_0xb834('0x1d')]?_0x2fcfec[_0xb834('0x1d')]['where']||null:null,'attributes':_0x2fcfec[_0xb834('0x1d')]?_0x2fcfec[_0xb834('0x1d')][_0xb834('0x20')]||null:null,'limit':_0x2fcfec[_0xb834('0x1d')]?_0x2fcfec[_0xb834('0x1d')][_0xb834('0x21')]||null:null})[_0xb834('0x11')](function(_0xd17109){logger[_0xb834('0x12')]('UpdateVoiceQueueReport',_0x2fcfec);logger['debug'](_0xb834('0x28'),_0x2fcfec,JSON[_0xb834('0x16')](_0xd17109));_0xc3469f(_0xd17109);})[_0xb834('0x1a')](function(_0x1572fc){logger[_0xb834('0x17')](_0xb834('0x28'),_0x1572fc[_0xb834('0x18')],_0x2fcfec);_0x3d160a(_0xb6267c[_0xb834('0x17')](0x1f4,_0x1572fc[_0xb834('0x18')]));});});};
\ No newline at end of file
index b037ee9..a9ce9c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x241a=['remove','update','removeListener','register','length','./voiceQueueReport.events'];(function(_0x16aaef,_0x410651){var _0x1c82ef=function(_0x3d802b){while(--_0x3d802b){_0x16aaef['push'](_0x16aaef['shift']());}};_0x1c82ef(++_0x410651);}(_0x241a,0x13d));var _0xa241=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0x241a[_0x55abd9];return _0x3e5669;};'use strict';var VoiceQueueReportEvents=require(_0xa241('0x0'));var events=['save',_0xa241('0x1'),_0xa241('0x2')];function createListener(_0x9fecd1,_0xc8a344){return function(_0x33c576){_0xc8a344['emit'](_0x9fecd1,_0x33c576);};}function removeListener(_0x4b40d8,_0x316fd3){return function(){VoiceQueueReportEvents[_0xa241('0x3')](_0x4b40d8,_0x316fd3);};}exports[_0xa241('0x4')]=function(_0x2ce6d7){for(var _0xb9e036=0x0,_0x4df134=events[_0xa241('0x5')];_0xb9e036<_0x4df134;_0xb9e036++){var _0x3f3c37=events[_0xb9e036];var _0x422e3a=createListener('voiceQueueReport:'+_0x3f3c37,_0x2ce6d7);VoiceQueueReportEvents['on'](_0x3f3c37,_0x422e3a);}};
\ No newline at end of file
+var _0x85d3=['remove','update','emit','removeListener','voiceQueueReport:','save'];(function(_0x282580,_0x59b489){var _0x326a51=function(_0x4676aa){while(--_0x4676aa){_0x282580['push'](_0x282580['shift']());}};_0x326a51(++_0x59b489);}(_0x85d3,0x1a9));var _0x385d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x85d3[_0x2dafbe];return _0x58a45a;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x385d('0x0'),_0x385d('0x1'),_0x385d('0x2')];function createListener(_0x4a60cb,_0x5df85c){return function(_0x292155){_0x5df85c[_0x385d('0x3')](_0x4a60cb,_0x292155);};}function removeListener(_0x1c70e9,_0x586d7c){return function(){VoiceQueueReportEvents[_0x385d('0x4')](_0x1c70e9,_0x586d7c);};}exports['register']=function(_0x554c8d){for(var _0x59938d=0x0,_0x1b84d9=events['length'];_0x59938d<_0x1b84d9;_0x59938d++){var _0x2ea3b1=events[_0x59938d];var _0x5494d1=createListener(_0x385d('0x5')+_0x2ea3b1,_0x554c8d);VoiceQueueReportEvents['on'](_0x2ea3b1,_0x5494d1);}};
\ No newline at end of file
index 9e4c15f..2137d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb1c=['put','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','create'];(function(_0x11b19b,_0x213234){var _0x1daac1=function(_0x516d3b){while(--_0x516d3b){_0x11b19b['push'](_0x11b19b['shift']());}};_0x1daac1(++_0x213234);}(_0xcb1c,0x1f0));var _0xccb1=function(_0x5d64e9,_0x150f53){_0x5d64e9=_0x5d64e9-0x0;var _0x298944=_0xcb1c[_0x5d64e9];return _0x298944;};'use strict';var multer=require(_0xccb1('0x0'));var util=require('util');var path=require(_0xccb1('0x1'));var timeout=require(_0xccb1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xccb1('0x3'));var auth=require(_0xccb1('0x4'));var interaction=require(_0xccb1('0x5'));var config=require(_0xccb1('0x6'));var controller=require(_0xccb1('0x7'));router[_0xccb1('0x8')]('/',auth[_0xccb1('0x9')](),controller[_0xccb1('0xa')]);router[_0xccb1('0x8')](_0xccb1('0xb'),auth['isAuthenticated'](),controller[_0xccb1('0xc')]);router['post']('/',auth[_0xccb1('0x9')](),controller[_0xccb1('0xd')]);router[_0xccb1('0xe')](_0xccb1('0xb'),auth[_0xccb1('0x9')](),controller['update']);router[_0xccb1('0xf')]('/:id',auth[_0xccb1('0x9')](),controller['destroy']);module[_0xccb1('0x10')]=router;
\ No newline at end of file
+var _0xc192=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x625a73,_0x50ae08){var _0x3eceb5=function(_0x9e9500){while(--_0x9e9500){_0x625a73['push'](_0x625a73['shift']());}};_0x3eceb5(++_0x50ae08);}(_0xc192,0xd6));var _0x2c19=function(_0x4d4c2c,_0x4f8c0a){_0x4d4c2c=_0x4d4c2c-0x0;var _0x4c1e9f=_0xc192[_0x4d4c2c];return _0x4c1e9f;};'use strict';var multer=require(_0x2c19('0x0'));var util=require('util');var path=require(_0x2c19('0x1'));var timeout=require(_0x2c19('0x2'));var express=require(_0x2c19('0x3'));var router=express[_0x2c19('0x4')]();var fs_extra=require(_0x2c19('0x5'));var auth=require(_0x2c19('0x6'));var interaction=require(_0x2c19('0x7'));var config=require(_0x2c19('0x8'));var controller=require(_0x2c19('0x9'));router[_0x2c19('0xa')]('/',auth[_0x2c19('0xb')](),controller[_0x2c19('0xc')]);router[_0x2c19('0xa')]('/:id',auth[_0x2c19('0xb')](),controller[_0x2c19('0xd')]);router[_0x2c19('0xe')]('/',auth[_0x2c19('0xb')](),controller[_0x2c19('0xf')]);router[_0x2c19('0x10')](_0x2c19('0x11'),auth['isAuthenticated'](),controller[_0x2c19('0x12')]);router[_0x2c19('0x13')](_0x2c19('0x11'),auth[_0x2c19('0xb')](),controller[_0x2c19('0x14')]);module[_0x2c19('0x15')]=router;
\ No newline at end of file
index 6efcd41..b148ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe3=['exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','moment'];(function(_0xbe5405,_0x188e5f){var _0x170234=function(_0x456172){while(--_0x456172){_0xbe5405['push'](_0xbe5405['shift']());}};_0x170234(++_0x188e5f);}(_0xdfe3,0x143));var _0x3dfe=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xdfe3[_0x87b0ff];return _0x3bc0b2;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3dfe('0x0'));module[_0x3dfe('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x3dfe('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x3dfe('0x3')],'allowNull':![],'defaultValue':Sequelize[_0x3dfe('0x4')](_0x3dfe('0x5'))}};
\ No newline at end of file
+var _0x0304=['moment','exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x39ab2b,_0x3953cc){var _0x358dd9=function(_0x558477){while(--_0x558477){_0x39ab2b['push'](_0x39ab2b['shift']());}};_0x358dd9(++_0x3953cc);}(_0x0304,0x1d4));var _0x4030=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0304[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x4030('0x0'));var moment=require(_0x4030('0x1'));module[_0x4030('0x2')]={'time':{'type':Sequelize[_0x4030('0x3')]},'callid':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x4030('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x4030('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x4030('0x5')](_0x4030('0x6'))}};
\ No newline at end of file
index 8e776d5..331c590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e1=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','update','then','error','stack','map','VoiceQueuesLog','fieldName','type','name','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','where','filters','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','rawAttributes','options','find','create','body','destroy','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x3b4d15,_0x3fb8e2){var _0x1416bf=function(_0x17d96a){while(--_0x17d96a){_0x3b4d15['push'](_0x3b4d15['shift']());}};_0x1416bf(++_0x3fb8e2);}(_0xc7e1,0x112));var _0x1c7e=function(_0x561e63,_0x2cd7df){_0x561e63=_0x561e63-0x0;var _0x44044c=_0xc7e1[_0x561e63];return _0x44044c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1c7e('0x0'));var jsonpatch=require(_0x1c7e('0x1'));var rp=require('request-promise');var moment=require(_0x1c7e('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1c7e('0x3'));var util=require(_0x1c7e('0x4'));var path=require(_0x1c7e('0x5'));var sox=require(_0x1c7e('0x6'));var csv=require(_0x1c7e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1c7e('0x8'));var squel=require(_0x1c7e('0x9'));var crypto=require(_0x1c7e('0xa'));var jsforce=require(_0x1c7e('0xb'));var deskjs=require(_0x1c7e('0xc'));var toCsv=require(_0x1c7e('0x7'));var querystring=require(_0x1c7e('0xd'));var Papa=require(_0x1c7e('0xe'));var Redis=require(_0x1c7e('0xf'));var authService=require(_0x1c7e('0x10'));var qs=require(_0x1c7e('0x11'));var as=require(_0x1c7e('0x12'));var hardwareService=require(_0x1c7e('0x13'));var logger=require('../../config/logger')(_0x1c7e('0x14'));var utils=require('../../config/utils');var config=require(_0x1c7e('0x15'));var licenseUtil=require(_0x1c7e('0x16'));var db=require(_0x1c7e('0x17'))['db'];function respondWithStatusCode(_0x4dfb8f,_0x447127){_0x447127=_0x447127||0xcc;return function(_0x2f5593){if(_0x2f5593){return _0x4dfb8f[_0x1c7e('0x18')](_0x447127);}return _0x4dfb8f[_0x1c7e('0x19')](_0x447127)[_0x1c7e('0x1a')]();};}function respondWithResult(_0x3df59d,_0x32c34e){_0x32c34e=_0x32c34e||0xc8;return function(_0x525fbb){if(_0x525fbb){return _0x3df59d[_0x1c7e('0x19')](_0x32c34e)[_0x1c7e('0x1b')](_0x525fbb);}};}function respondWithFilteredResult(_0x535716,_0x1cb09e){return function(_0x2bb290){if(_0x2bb290){var _0x4bc419=typeof _0x1cb09e['offset']===_0x1c7e('0x1c')&&typeof _0x1cb09e['limit']==='undefined';var _0x3d43be=_0x2bb290['count'];var _0x16f8db=_0x4bc419?0x0:_0x1cb09e[_0x1c7e('0x1d')];var _0x10af23=_0x4bc419?_0x2bb290[_0x1c7e('0x1e')]:_0x1cb09e[_0x1c7e('0x1d')]+_0x1cb09e[_0x1c7e('0x1f')];var _0x1ef3e8;if(_0x10af23>=_0x3d43be){_0x10af23=_0x3d43be;_0x1ef3e8=0xc8;}else{_0x1ef3e8=0xce;}_0x535716['status'](_0x1ef3e8);return _0x535716[_0x1c7e('0x20')](_0x1c7e('0x21'),_0x16f8db+'-'+_0x10af23+'/'+_0x3d43be)[_0x1c7e('0x1b')](_0x2bb290);}return null;};}function patchUpdates(_0x21ce71){return function(_0x3e79ee){try{jsonpatch[_0x1c7e('0x22')](_0x3e79ee,_0x21ce71,!![]);}catch(_0x46d0f0){return BPromise[_0x1c7e('0x23')](_0x46d0f0);}return _0x3e79ee['save']();};}function saveUpdates(_0x11db30,_0x1d162f){return function(_0x45fb21){if(_0x45fb21){return _0x45fb21[_0x1c7e('0x24')](_0x11db30)['then'](function(_0x46bec3){return _0x46bec3;});}return null;};}function removeEntity(_0x1c1ad9,_0x58d999){return function(_0x12e4b6){if(_0x12e4b6){return _0x12e4b6['destroy']()[_0x1c7e('0x25')](function(){_0x1c1ad9['status'](0xcc)[_0x1c7e('0x1a')]();});}};}function handleEntityNotFound(_0x1ef5e5,_0x7956cc){return function(_0x341260){if(!_0x341260){_0x1ef5e5[_0x1c7e('0x18')](0x194);}return _0x341260;};}function handleError(_0x387e88,_0x2f13f2){_0x2f13f2=_0x2f13f2||0x1f4;return function(_0x3e8ffd){logger[_0x1c7e('0x26')](_0x3e8ffd[_0x1c7e('0x27')]);if(_0x3e8ffd['name']){delete _0x3e8ffd['name'];}_0x387e88['status'](_0x2f13f2)['send'](_0x3e8ffd);};}exports['index']=function(_0x27eb51,_0x2b58fe){var _0x38c9f2={},_0x283d5b={},_0x541432={'count':0x0,'rows':[]};var _0x298d73=_[_0x1c7e('0x28')](db[_0x1c7e('0x29')]['rawAttributes'],function(_0x4b58d8){return{'name':_0x4b58d8[_0x1c7e('0x2a')],'type':_0x4b58d8[_0x1c7e('0x2b')]['key']};});_0x283d5b['model']=_[_0x1c7e('0x28')](_0x298d73,_0x1c7e('0x2c'));_0x283d5b[_0x1c7e('0x2d')]=_[_0x1c7e('0x2e')](_0x27eb51[_0x1c7e('0x2d')]);_0x283d5b['filters']=_[_0x1c7e('0x2f')](_0x283d5b['model'],_0x283d5b[_0x1c7e('0x2d')]);_0x38c9f2[_0x1c7e('0x30')]=_[_0x1c7e('0x2f')](_0x283d5b[_0x1c7e('0x31')],qs[_0x1c7e('0x32')](_0x27eb51[_0x1c7e('0x2d')][_0x1c7e('0x32')]));_0x38c9f2['attributes']=_0x38c9f2[_0x1c7e('0x30')][_0x1c7e('0x33')]?_0x38c9f2['attributes']:_0x283d5b[_0x1c7e('0x31')];if(!_0x27eb51[_0x1c7e('0x2d')][_0x1c7e('0x34')](_0x1c7e('0x35'))){_0x38c9f2[_0x1c7e('0x1f')]=qs[_0x1c7e('0x1f')](_0x27eb51[_0x1c7e('0x2d')]['limit']);_0x38c9f2[_0x1c7e('0x1d')]=qs[_0x1c7e('0x1d')](_0x27eb51['query'][_0x1c7e('0x1d')]);}_0x38c9f2[_0x1c7e('0x36')]=qs['sort'](_0x27eb51[_0x1c7e('0x2d')]['sort']);_0x38c9f2[_0x1c7e('0x37')]=qs[_0x1c7e('0x38')](_['pick'](_0x27eb51[_0x1c7e('0x2d')],_0x283d5b[_0x1c7e('0x38')]),_0x298d73);if(_0x27eb51[_0x1c7e('0x2d')][_0x1c7e('0x39')]){_0x38c9f2[_0x1c7e('0x37')]=_['merge'](_0x38c9f2[_0x1c7e('0x37')],{'$or':_[_0x1c7e('0x28')](_0x298d73,function(_0x2367ee){if(_0x2367ee[_0x1c7e('0x2b')]!==_0x1c7e('0x3a')){var _0x2db411={};_0x2db411[_0x2367ee[_0x1c7e('0x2c')]]={'$like':'%'+_0x27eb51[_0x1c7e('0x2d')][_0x1c7e('0x39')]+'%'};return _0x2db411;}})});}_0x38c9f2=_[_0x1c7e('0x3b')]({},_0x38c9f2,_0x27eb51['options']);var _0x558640={'where':_0x38c9f2[_0x1c7e('0x37')]};return db[_0x1c7e('0x29')]['count'](_0x558640)['then'](function(_0x184976){_0x541432[_0x1c7e('0x1e')]=_0x184976;if(_0x27eb51[_0x1c7e('0x2d')][_0x1c7e('0x3c')]){_0x38c9f2[_0x1c7e('0x3d')]=[{'all':!![]}];}return db[_0x1c7e('0x29')][_0x1c7e('0x3e')](_0x38c9f2);})[_0x1c7e('0x25')](function(_0x54611a){_0x541432['rows']=_0x54611a;return _0x541432;})[_0x1c7e('0x25')](respondWithFilteredResult(_0x2b58fe,_0x38c9f2))[_0x1c7e('0x3f')](handleError(_0x2b58fe,null));};exports[_0x1c7e('0x40')]=function(_0x5daa02,_0x42f5ee){var _0x1fe205={'raw':!![],'where':{'id':_0x5daa02[_0x1c7e('0x41')]['id']}},_0xe71f31={};_0xe71f31[_0x1c7e('0x31')]=_[_0x1c7e('0x2e')](db[_0x1c7e('0x29')][_0x1c7e('0x42')]);_0xe71f31['query']=_[_0x1c7e('0x2e')](_0x5daa02[_0x1c7e('0x2d')]);_0xe71f31[_0x1c7e('0x38')]=_[_0x1c7e('0x2f')](_0xe71f31[_0x1c7e('0x31')],_0xe71f31[_0x1c7e('0x2d')]);_0x1fe205[_0x1c7e('0x30')]=_[_0x1c7e('0x2f')](_0xe71f31[_0x1c7e('0x31')],qs[_0x1c7e('0x32')](_0x5daa02[_0x1c7e('0x2d')][_0x1c7e('0x32')]));_0x1fe205['attributes']=_0x1fe205['attributes']['length']?_0x1fe205[_0x1c7e('0x30')]:_0xe71f31[_0x1c7e('0x31')];if(_0x5daa02[_0x1c7e('0x2d')][_0x1c7e('0x3c')]){_0x1fe205[_0x1c7e('0x3d')]=[{'all':!![]}];}_0x1fe205=_[_0x1c7e('0x3b')]({},_0x1fe205,_0x5daa02[_0x1c7e('0x43')]);return db['VoiceQueuesLog'][_0x1c7e('0x44')](_0x1fe205)[_0x1c7e('0x25')](handleEntityNotFound(_0x42f5ee,null))['then'](respondWithResult(_0x42f5ee,null))[_0x1c7e('0x3f')](handleError(_0x42f5ee,null));};exports[_0x1c7e('0x45')]=function(_0x29c95d,_0x214e78){return db[_0x1c7e('0x29')]['create'](_0x29c95d[_0x1c7e('0x46')],{})[_0x1c7e('0x25')](respondWithResult(_0x214e78,0xc9))[_0x1c7e('0x3f')](handleError(_0x214e78,null));};exports[_0x1c7e('0x24')]=function(_0x162845,_0x33e146){if(_0x162845[_0x1c7e('0x46')]['id']){delete _0x162845[_0x1c7e('0x46')]['id'];}return db[_0x1c7e('0x29')][_0x1c7e('0x44')]({'where':{'id':_0x162845[_0x1c7e('0x41')]['id']}})[_0x1c7e('0x25')](handleEntityNotFound(_0x33e146,null))[_0x1c7e('0x25')](saveUpdates(_0x162845[_0x1c7e('0x46')],null))[_0x1c7e('0x25')](respondWithResult(_0x33e146,null))[_0x1c7e('0x3f')](handleError(_0x33e146,null));};exports[_0x1c7e('0x47')]=function(_0x3773c4,_0x887dd1){return db['VoiceQueuesLog'][_0x1c7e('0x44')]({'where':{'id':_0x3773c4[_0x1c7e('0x41')]['id']}})['then'](handleEntityNotFound(_0x887dd1,null))[_0x1c7e('0x25')](removeEntity(_0x887dd1,null))['catch'](handleError(_0x887dd1,null));};
\ No newline at end of file
+var _0x1b40=['index','map','VoiceQueuesLog','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','then','error','name'];(function(_0x5d57fc,_0x49f7d6){var _0x2729c9=function(_0xb5463e){while(--_0xb5463e){_0x5d57fc['push'](_0x5d57fc['shift']());}};_0x2729c9(++_0x49f7d6);}(_0x1b40,0x6a));var _0x01b4=function(_0x3dda00,_0x392dca){_0x3dda00=_0x3dda00-0x0;var _0x2a6b26=_0x1b40[_0x3dda00];return _0x2a6b26;};'use strict';var emlformat=require(_0x01b4('0x0'));var rimraf=require(_0x01b4('0x1'));var zipdir=require(_0x01b4('0x2'));var jsonpatch=require(_0x01b4('0x3'));var rp=require(_0x01b4('0x4'));var moment=require('moment');var BPromise=require(_0x01b4('0x5'));var Mustache=require(_0x01b4('0x6'));var util=require(_0x01b4('0x7'));var path=require(_0x01b4('0x8'));var sox=require(_0x01b4('0x9'));var csv=require(_0x01b4('0xa'));var ejs=require(_0x01b4('0xb'));var fs=require('fs');var fs_extra=require(_0x01b4('0xc'));var _=require(_0x01b4('0xd'));var squel=require('squel');var crypto=require(_0x01b4('0xe'));var jsforce=require(_0x01b4('0xf'));var deskjs=require(_0x01b4('0x10'));var toCsv=require(_0x01b4('0xa'));var querystring=require('querystring');var Papa=require(_0x01b4('0x11'));var Redis=require(_0x01b4('0x12'));var authService=require(_0x01b4('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x01b4('0x14'));var utils=require('../../config/utils');var config=require(_0x01b4('0x15'));var licenseUtil=require(_0x01b4('0x16'));var db=require(_0x01b4('0x17'))['db'];function respondWithStatusCode(_0x2cb64b,_0x1c70f3){_0x1c70f3=_0x1c70f3||0xcc;return function(_0x1c6bb5){if(_0x1c6bb5){return _0x2cb64b[_0x01b4('0x18')](_0x1c70f3);}return _0x2cb64b[_0x01b4('0x19')](_0x1c70f3)['end']();};}function respondWithResult(_0x3db0c6,_0x5a0324){_0x5a0324=_0x5a0324||0xc8;return function(_0x342ec9){if(_0x342ec9){return _0x3db0c6[_0x01b4('0x19')](_0x5a0324)[_0x01b4('0x1a')](_0x342ec9);}};}function respondWithFilteredResult(_0x3a870e,_0x57391d){return function(_0x424913){if(_0x424913){var _0x5c222d=typeof _0x57391d['offset']===_0x01b4('0x1b')&&typeof _0x57391d[_0x01b4('0x1c')]===_0x01b4('0x1b');var _0x53745d=_0x424913[_0x01b4('0x1d')];var _0x17fbb1=_0x5c222d?0x0:_0x57391d[_0x01b4('0x1e')];var _0x3bf408=_0x5c222d?_0x424913[_0x01b4('0x1d')]:_0x57391d['offset']+_0x57391d[_0x01b4('0x1c')];var _0x59447d;if(_0x3bf408>=_0x53745d){_0x3bf408=_0x53745d;_0x59447d=0xc8;}else{_0x59447d=0xce;}_0x3a870e[_0x01b4('0x19')](_0x59447d);return _0x3a870e['set'](_0x01b4('0x1f'),_0x17fbb1+'-'+_0x3bf408+'/'+_0x53745d)[_0x01b4('0x1a')](_0x424913);}return null;};}function patchUpdates(_0x2a6cc8){return function(_0x578419){try{jsonpatch[_0x01b4('0x20')](_0x578419,_0x2a6cc8,!![]);}catch(_0x3be9e5){return BPromise['reject'](_0x3be9e5);}return _0x578419['save']();};}function saveUpdates(_0x29edf8,_0x3440c6){return function(_0x4d60e5){if(_0x4d60e5){return _0x4d60e5['update'](_0x29edf8)[_0x01b4('0x21')](function(_0x4d39c2){return _0x4d39c2;});}return null;};}function removeEntity(_0xe611c2,_0x27c343){return function(_0x30c81d){if(_0x30c81d){return _0x30c81d['destroy']()[_0x01b4('0x21')](function(){_0xe611c2[_0x01b4('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x21b4cb,_0x2f5064){return function(_0x2d78e6){if(!_0x2d78e6){_0x21b4cb['sendStatus'](0x194);}return _0x2d78e6;};}function handleError(_0x26697c,_0x156105){_0x156105=_0x156105||0x1f4;return function(_0x3b1fc5){logger[_0x01b4('0x22')](_0x3b1fc5['stack']);if(_0x3b1fc5[_0x01b4('0x23')]){delete _0x3b1fc5[_0x01b4('0x23')];}_0x26697c[_0x01b4('0x19')](_0x156105)['send'](_0x3b1fc5);};}exports[_0x01b4('0x24')]=function(_0x3b5d42,_0x4e6779){var _0x464d27={},_0x1c9c13={},_0x5cd33a={'count':0x0,'rows':[]};var _0x59e260=_[_0x01b4('0x25')](db[_0x01b4('0x26')][_0x01b4('0x27')],function(_0x158dc2){return{'name':_0x158dc2['fieldName'],'type':_0x158dc2[_0x01b4('0x28')][_0x01b4('0x29')]};});_0x1c9c13[_0x01b4('0x2a')]=_['map'](_0x59e260,_0x01b4('0x23'));_0x1c9c13[_0x01b4('0x2b')]=_[_0x01b4('0x2c')](_0x3b5d42[_0x01b4('0x2b')]);_0x1c9c13[_0x01b4('0x2d')]=_[_0x01b4('0x2e')](_0x1c9c13['model'],_0x1c9c13[_0x01b4('0x2b')]);_0x464d27[_0x01b4('0x2f')]=_[_0x01b4('0x2e')](_0x1c9c13[_0x01b4('0x2a')],qs['fields'](_0x3b5d42[_0x01b4('0x2b')][_0x01b4('0x30')]));_0x464d27[_0x01b4('0x2f')]=_0x464d27[_0x01b4('0x2f')][_0x01b4('0x31')]?_0x464d27['attributes']:_0x1c9c13[_0x01b4('0x2a')];if(!_0x3b5d42[_0x01b4('0x2b')][_0x01b4('0x32')](_0x01b4('0x33'))){_0x464d27[_0x01b4('0x1c')]=qs[_0x01b4('0x1c')](_0x3b5d42[_0x01b4('0x2b')][_0x01b4('0x1c')]);_0x464d27[_0x01b4('0x1e')]=qs[_0x01b4('0x1e')](_0x3b5d42[_0x01b4('0x2b')]['offset']);}_0x464d27[_0x01b4('0x34')]=qs[_0x01b4('0x35')](_0x3b5d42['query'][_0x01b4('0x35')]);_0x464d27['where']=qs[_0x01b4('0x2d')](_[_0x01b4('0x36')](_0x3b5d42[_0x01b4('0x2b')],_0x1c9c13['filters']),_0x59e260);if(_0x3b5d42[_0x01b4('0x2b')][_0x01b4('0x37')]){_0x464d27[_0x01b4('0x38')]=_[_0x01b4('0x39')](_0x464d27[_0x01b4('0x38')],{'$or':_[_0x01b4('0x25')](_0x59e260,function(_0x29aa96){if(_0x29aa96['type']!==_0x01b4('0x3a')){var _0x48641f={};_0x48641f[_0x29aa96[_0x01b4('0x23')]]={'$like':'%'+_0x3b5d42[_0x01b4('0x2b')]['filter']+'%'};return _0x48641f;}})});}_0x464d27=_[_0x01b4('0x39')]({},_0x464d27,_0x3b5d42['options']);var _0x257345={'where':_0x464d27['where']};return db[_0x01b4('0x26')]['count'](_0x257345)[_0x01b4('0x21')](function(_0x4a2b0b){_0x5cd33a[_0x01b4('0x1d')]=_0x4a2b0b;if(_0x3b5d42[_0x01b4('0x2b')][_0x01b4('0x3b')]){_0x464d27[_0x01b4('0x3c')]=[{'all':!![]}];}return db[_0x01b4('0x26')][_0x01b4('0x3d')](_0x464d27);})[_0x01b4('0x21')](function(_0x2dd8fa){_0x5cd33a[_0x01b4('0x3e')]=_0x2dd8fa;return _0x5cd33a;})[_0x01b4('0x21')](respondWithFilteredResult(_0x4e6779,_0x464d27))['catch'](handleError(_0x4e6779,null));};exports[_0x01b4('0x3f')]=function(_0x2fca22,_0x332ead){var _0x21feee={'raw':!![],'where':{'id':_0x2fca22[_0x01b4('0x40')]['id']}},_0x54822b={};_0x54822b[_0x01b4('0x2a')]=_[_0x01b4('0x2c')](db['VoiceQueuesLog'][_0x01b4('0x27')]);_0x54822b[_0x01b4('0x2b')]=_[_0x01b4('0x2c')](_0x2fca22['query']);_0x54822b[_0x01b4('0x2d')]=_[_0x01b4('0x2e')](_0x54822b['model'],_0x54822b[_0x01b4('0x2b')]);_0x21feee['attributes']=_['intersection'](_0x54822b[_0x01b4('0x2a')],qs[_0x01b4('0x30')](_0x2fca22[_0x01b4('0x2b')][_0x01b4('0x30')]));_0x21feee[_0x01b4('0x2f')]=_0x21feee[_0x01b4('0x2f')]['length']?_0x21feee[_0x01b4('0x2f')]:_0x54822b[_0x01b4('0x2a')];if(_0x2fca22[_0x01b4('0x2b')]['includeAll']){_0x21feee[_0x01b4('0x3c')]=[{'all':!![]}];}_0x21feee=_[_0x01b4('0x39')]({},_0x21feee,_0x2fca22[_0x01b4('0x41')]);return db['VoiceQueuesLog'][_0x01b4('0x42')](_0x21feee)['then'](handleEntityNotFound(_0x332ead,null))['then'](respondWithResult(_0x332ead,null))[_0x01b4('0x43')](handleError(_0x332ead,null));};exports[_0x01b4('0x44')]=function(_0x1b7ecb,_0x34df47){return db['VoiceQueuesLog']['create'](_0x1b7ecb[_0x01b4('0x45')],{})['then'](respondWithResult(_0x34df47,0xc9))[_0x01b4('0x43')](handleError(_0x34df47,null));};exports['update']=function(_0x2f7c70,_0x56c526){if(_0x2f7c70[_0x01b4('0x45')]['id']){delete _0x2f7c70[_0x01b4('0x45')]['id'];}return db[_0x01b4('0x26')][_0x01b4('0x42')]({'where':{'id':_0x2f7c70[_0x01b4('0x40')]['id']}})['then'](handleEntityNotFound(_0x56c526,null))[_0x01b4('0x21')](saveUpdates(_0x2f7c70[_0x01b4('0x45')],null))[_0x01b4('0x21')](respondWithResult(_0x56c526,null))[_0x01b4('0x43')](handleError(_0x56c526,null));};exports[_0x01b4('0x46')]=function(_0x229251,_0x4b3a2a){return db[_0x01b4('0x26')]['find']({'where':{'id':_0x229251[_0x01b4('0x40')]['id']}})['then'](handleEntityNotFound(_0x4b3a2a,null))['then'](removeEntity(_0x4b3a2a,null))[_0x01b4('0x43')](handleError(_0x4b3a2a,null));};
\ No newline at end of file
index e54023b..3fb5d32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7f=['moment','bluebird','path','../../config/environment','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','util','../../config/logger','api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f7f,0x177));var _0xf6f7=function(_0x15ce46,_0x24096b){_0x15ce46=_0x15ce46-0x0;var _0xf9488f=_0x6f7f[_0x15ce46];return _0xf9488f;};'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('0xc'),_0xf6f7('0xd')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x2035=['event_dtm','event','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x2035,0xb2));var _0x5203=function(_0x19a531,_0x3daec8){_0x19a531=_0x19a531-0x0;var _0x4caa1d=_0x2035[_0x19a531];return _0x4caa1d;};'use strict';var _=require(_0x5203('0x0'));var util=require(_0x5203('0x1'));var logger=require(_0x5203('0x2'))(_0x5203('0x3'));var moment=require(_0x5203('0x4'));var BPromise=require(_0x5203('0x5'));var rp=require(_0x5203('0x6'));var fs=require('fs');var path=require(_0x5203('0x7'));var rimraf=require(_0x5203('0x8'));var config=require(_0x5203('0x9'));var attributes=require(_0x5203('0xa'));module[_0x5203('0xb')]=function(_0x3f37a7,_0x63aca4){return _0x3f37a7[_0x5203('0xc')](_0x5203('0xd'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x5203('0xe'),'fields':[_0x5203('0xf'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 98412c4..fc2a93b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb58=['lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\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);}(_0xfb58,0x143));var _0x8fb5=function(_0x27c964,_0x43da88){_0x27c964=_0x27c964-0x0;var _0x265cbf=_0xfb58[_0x27c964];return _0x265cbf;};'use strict';var _=require(_0x8fb5('0x0'));var util=require(_0x8fb5('0x1'));var moment=require(_0x8fb5('0x2'));var BPromise=require(_0x8fb5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8fb5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8fb5('0x5'));var logger=require('../../config/logger')(_0x8fb5('0x6'));var config=require('../../config/environment');var jayson=require(_0x8fb5('0x7'));var client=jayson['client'][_0x8fb5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4e5784,_0x7d8895,_0x5ad9a4){return new BPromise(function(_0x1a466d,_0x31fb32){return client[_0x8fb5('0x9')](_0x4e5784,_0x5ad9a4)['then'](function(_0x916389){logger[_0x8fb5('0xa')](_0x8fb5('0xb'),_0x7d8895,_0x8fb5('0xc'));logger['debug'](_0x8fb5('0xd'),_0x7d8895,_0x8fb5('0xc'),JSON[_0x8fb5('0xe')](_0x916389));if(_0x916389[_0x8fb5('0xf')]){if(_0x916389[_0x8fb5('0xf')][_0x8fb5('0x10')]===0x1f4){logger[_0x8fb5('0xf')](_0x8fb5('0xb'),_0x7d8895,_0x916389['error']['message']);return _0x31fb32(_0x916389[_0x8fb5('0xf')][_0x8fb5('0x11')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x7d8895,_0x916389[_0x8fb5('0xf')]['message']);return _0x1a466d(_0x916389['error'][_0x8fb5('0x11')]);}else{logger[_0x8fb5('0xa')](_0x8fb5('0xb'),_0x7d8895,_0x8fb5('0xc'));_0x1a466d(_0x916389['result'][_0x8fb5('0x11')]);}})[_0x8fb5('0x12')](function(_0x5ebd30){logger[_0x8fb5('0xf')](_0x8fb5('0xb'),_0x7d8895,_0x5ebd30);_0x31fb32(_0x5ebd30);});});}
\ No newline at end of file
+var _0xe373=['VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','debug'];(function(_0x356bb3,_0x23fdf6){var _0x3392f9=function(_0x4fd2d4){while(--_0x4fd2d4){_0x356bb3['push'](_0x356bb3['shift']());}};_0x3392f9(++_0x23fdf6);}(_0xe373,0x11c));var _0x3e37=function(_0x544f28,_0x12f685){_0x544f28=_0x544f28-0x0;var _0x1867bb=_0xe373[_0x544f28];return _0x1867bb;};'use strict';var _=require(_0x3e37('0x0'));var util=require(_0x3e37('0x1'));var moment=require(_0x3e37('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3e37('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3e37('0x4'));var logger=require(_0x3e37('0x5'))(_0x3e37('0x6'));var config=require(_0x3e37('0x7'));var jayson=require(_0x3e37('0x8'));var client=jayson[_0x3e37('0x9')][_0x3e37('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42d6e3,_0x2e8fc8,_0x563c98){return new BPromise(function(_0x5e2509,_0x435f3f){return client[_0x3e37('0xb')](_0x42d6e3,_0x563c98)['then'](function(_0x45c876){logger[_0x3e37('0xc')](_0x3e37('0xd'),_0x2e8fc8,'request\x20sent');logger[_0x3e37('0xe')](_0x3e37('0xf'),_0x2e8fc8,'request\x20sent',JSON[_0x3e37('0x10')](_0x45c876));if(_0x45c876['error']){if(_0x45c876[_0x3e37('0x11')][_0x3e37('0x12')]===0x1f4){logger[_0x3e37('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2e8fc8,_0x45c876['error']['message']);return _0x435f3f(_0x45c876[_0x3e37('0x11')][_0x3e37('0x13')]);}logger[_0x3e37('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2e8fc8,_0x45c876['error'][_0x3e37('0x13')]);return _0x5e2509(_0x45c876[_0x3e37('0x11')][_0x3e37('0x13')]);}else{logger['info'](_0x3e37('0xd'),_0x2e8fc8,_0x3e37('0x14'));_0x5e2509(_0x45c876[_0x3e37('0x15')][_0x3e37('0x13')]);}})[_0x3e37('0x16')](function(_0x4d1794){logger['error'](_0x3e37('0xd'),_0x2e8fc8,_0x4d1794);_0x435f3f(_0x4d1794);});});}
\ No newline at end of file
index 039a16b..b551504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cd4=['./voiceRecording.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/download','/:id/downloads','downloads','/:id/transcribe','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x4934d0,_0x20e8ac){var _0x301dbf=function(_0x2ca3b2){while(--_0x2ca3b2){_0x4934d0['push'](_0x4934d0['shift']());}};_0x301dbf(++_0x20e8ac);}(_0x1cd4,0x88));var _0x41cd=function(_0xaf5487,_0x5a9448){_0xaf5487=_0xaf5487-0x0;var _0x10b590=_0x1cd4[_0xaf5487];return _0x10b590;};'use strict';var multer=require(_0x41cd('0x0'));var util=require(_0x41cd('0x1'));var path=require(_0x41cd('0x2'));var timeout=require(_0x41cd('0x3'));var express=require(_0x41cd('0x4'));var router=express[_0x41cd('0x5')]();var fs_extra=require(_0x41cd('0x6'));var auth=require(_0x41cd('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x41cd('0x8'));router[_0x41cd('0x9')]('/',auth[_0x41cd('0xa')](),controller[_0x41cd('0xb')]);router[_0x41cd('0x9')](_0x41cd('0xc'),auth[_0x41cd('0xa')](),controller['describe']);router[_0x41cd('0x9')](_0x41cd('0xd'),auth[_0x41cd('0xa')](),controller[_0x41cd('0xe')]);router[_0x41cd('0x9')](_0x41cd('0xf'),auth['isAuthenticated'](),controller['download']);router['get'](_0x41cd('0x10'),controller[_0x41cd('0x11')]);router[_0x41cd('0x9')](_0x41cd('0x12'),auth['isAuthenticated'](),controller['downloadTranscribe']);router[_0x41cd('0x13')]('/',auth[_0x41cd('0xa')](),controller[_0x41cd('0x14')]);router[_0x41cd('0x13')](_0x41cd('0x12'),auth['isAuthenticated'](),controller['runTranscribe']);router[_0x41cd('0x15')]('/:id',auth[_0x41cd('0xa')](),controller[_0x41cd('0x16')]);router[_0x41cd('0x17')]('/:id',auth[_0x41cd('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8233=['get','index','isAuthenticated','/:id','show','download','/:id/downloads','/:id/transcribe','post','create','runTranscribe','put','update','delete','destroy','multer','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller'];(function(_0x56b6f4,_0x5ac889){var _0x51cca8=function(_0x471e68){while(--_0x471e68){_0x56b6f4['push'](_0x56b6f4['shift']());}};_0x51cca8(++_0x5ac889);}(_0x8233,0x1b1));var _0x3823=function(_0x359ad3,_0x1b636e){_0x359ad3=_0x359ad3-0x0;var _0x1c403e=_0x8233[_0x359ad3];return _0x1c403e;};'use strict';var multer=require(_0x3823('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3823('0x1'));var express=require(_0x3823('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3823('0x3'));var interaction=require(_0x3823('0x4'));var config=require(_0x3823('0x5'));var controller=require(_0x3823('0x6'));router[_0x3823('0x7')]('/',auth['isAuthenticated'](),controller[_0x3823('0x8')]);router[_0x3823('0x7')]('/describe',auth[_0x3823('0x9')](),controller['describe']);router[_0x3823('0x7')](_0x3823('0xa'),auth[_0x3823('0x9')](),controller[_0x3823('0xb')]);router[_0x3823('0x7')]('/:id/download',auth[_0x3823('0x9')](),controller[_0x3823('0xc')]);router[_0x3823('0x7')](_0x3823('0xd'),controller['downloads']);router[_0x3823('0x7')](_0x3823('0xe'),auth[_0x3823('0x9')](),controller['downloadTranscribe']);router[_0x3823('0xf')]('/',auth[_0x3823('0x9')](),controller[_0x3823('0x10')]);router[_0x3823('0xf')](_0x3823('0xe'),auth[_0x3823('0x9')](),controller[_0x3823('0x11')]);router[_0x3823('0x12')](_0x3823('0xa'),auth[_0x3823('0x9')](),controller[_0x3823('0x13')]);router[_0x3823('0x14')]('/:id',auth[_0x3823('0x9')](),controller[_0x3823('0x15')]);module['exports']=router;
\ No newline at end of file
index a444ca3..2a6de43 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(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 6eb77a6..99c3e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c27=['fieldName','type','key','model','differenceBy','format','query','keys','intersection','fields','attributes','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','VoiceRecording','rows','catch','show','params','length','includeAll','include','find','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','token','$and','push','filename','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','unlinkSync','.cypher','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJob','TranscriptionJobName','transcribeName','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeStatus','NEW','IN_PROGRESS','tempSentiment','runSentiment','updateAttributes','downloadTranscribe','fileText','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','sendStatus','error','name','send','map','rawAttributes'];(function(_0xf89c3,_0x351bf1){var _0x274fc8=function(_0x5e0c91){while(--_0x5e0c91){_0xf89c3['push'](_0xf89c3['shift']());}};_0x274fc8(++_0x351bf1);}(_0x8c27,0x6e));var _0x78c2=function(_0x49a811,_0x190495){_0x49a811=_0x49a811-0x0;var _0xd8ff9d=_0x8c27[_0x49a811];return _0xd8ff9d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x78c2('0x0'));var zipdir=require(_0x78c2('0x1'));var jsonpatch=require(_0x78c2('0x2'));var rp=require(_0x78c2('0x3'));var moment=require(_0x78c2('0x4'));var BPromise=require(_0x78c2('0x5'));var Mustache=require(_0x78c2('0x6'));var util=require('util');var path=require(_0x78c2('0x7'));var sox=require('sox');var csv=require(_0x78c2('0x8'));var ejs=require(_0x78c2('0x9'));var fs=require('fs');var fs_extra=require(_0x78c2('0xa'));var _=require('lodash');var squel=require(_0x78c2('0xb'));var crypto=require(_0x78c2('0xc'));var jsforce=require(_0x78c2('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x78c2('0x8'));var querystring=require(_0x78c2('0xe'));var Papa=require(_0x78c2('0xf'));var AWS=require('aws-sdk');var uuidv4=require(_0x78c2('0x10'));var Redis=require(_0x78c2('0x11'));var authService=require(_0x78c2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x78c2('0x13'));var hardwareService=require(_0x78c2('0x14'));var logger=require(_0x78c2('0x15'))(_0x78c2('0x16'));var utils=require(_0x78c2('0x17'));var config=require(_0x78c2('0x18'));var licenseUtil=require(_0x78c2('0x19'));var db=require(_0x78c2('0x1a'))['db'];function respondWithStatusCode(_0x53cd83,_0x4ae726){_0x4ae726=_0x4ae726||0xcc;return function(_0x104b59){if(_0x104b59){return _0x53cd83['sendStatus'](_0x4ae726);}return _0x53cd83['status'](_0x4ae726)[_0x78c2('0x1b')]();};}function respondWithResult(_0x340b44,_0x3e0312){_0x3e0312=_0x3e0312||0xc8;return function(_0xb1ab1b){if(_0xb1ab1b){return _0x340b44[_0x78c2('0x1c')](_0x3e0312)['json'](_0xb1ab1b);}};}function respondWithFilteredResult(_0x3864e9,_0x2e0f7c){return function(_0x333748){if(_0x333748){var _0x23e507=typeof _0x2e0f7c['offset']===_0x78c2('0x1d')&&typeof _0x2e0f7c[_0x78c2('0x1e')]===_0x78c2('0x1d');var _0xf12cb1=_0x333748[_0x78c2('0x1f')];var _0x25dcc1=_0x23e507?0x0:_0x2e0f7c['offset'];var _0xad5af4=_0x23e507?_0x333748[_0x78c2('0x1f')]:_0x2e0f7c[_0x78c2('0x20')]+_0x2e0f7c['limit'];var _0x4a97f2;if(_0xad5af4>=_0xf12cb1){_0xad5af4=_0xf12cb1;_0x4a97f2=0xc8;}else{_0x4a97f2=0xce;}_0x3864e9[_0x78c2('0x1c')](_0x4a97f2);return _0x3864e9[_0x78c2('0x21')](_0x78c2('0x22'),_0x25dcc1+'-'+_0xad5af4+'/'+_0xf12cb1)[_0x78c2('0x23')](_0x333748);}return null;};}function patchUpdates(_0x27843e){return function(_0x2f8d86){try{jsonpatch[_0x78c2('0x24')](_0x2f8d86,_0x27843e,!![]);}catch(_0xedfd47){return BPromise[_0x78c2('0x25')](_0xedfd47);}return _0x2f8d86[_0x78c2('0x26')]();};}function saveUpdates(_0x122ef8,_0x5c3d79){return function(_0x362834){if(_0x362834){return _0x362834[_0x78c2('0x27')](_0x122ef8)['then'](function(_0x38c48a){return _0x38c48a;});}return null;};}function removeEntity(_0x2b2fd2,_0x5047f2){return function(_0x4778f5){if(_0x4778f5){return _0x4778f5['destroy']()[_0x78c2('0x28')](function(){_0x2b2fd2[_0x78c2('0x1c')](0xcc)[_0x78c2('0x1b')]();});}};}function handleEntityNotFound(_0x20a8e9,_0x57bdec){return function(_0xf82c10){if(!_0xf82c10){_0x20a8e9[_0x78c2('0x29')](0x194);}return _0xf82c10;};}function handleError(_0x300e6c,_0x174b5d){_0x174b5d=_0x174b5d||0x1f4;return function(_0x1e7894){logger[_0x78c2('0x2a')](_0x1e7894['stack']);if(_0x1e7894['name']){delete _0x1e7894[_0x78c2('0x2b')];}_0x300e6c['status'](_0x174b5d)[_0x78c2('0x2c')](_0x1e7894);};}exports['index']=function(_0x30e1ff,_0x4c3c29){var _0x570bdf={},_0x379338={},_0x4210da={'count':0x0,'rows':[]};var _0x2983fd=_[_0x78c2('0x2d')](db['VoiceRecording'][_0x78c2('0x2e')],function(_0x94e85c){return{'name':_0x94e85c[_0x78c2('0x2f')],'type':_0x94e85c[_0x78c2('0x30')][_0x78c2('0x31')]};});_0x379338[_0x78c2('0x32')]=_[_0x78c2('0x33')](_[_0x78c2('0x2d')](_0x2983fd,_0x78c2('0x2b')),[_0x78c2('0x34')]);_0x379338[_0x78c2('0x35')]=_[_0x78c2('0x36')](_0x30e1ff[_0x78c2('0x35')]);_0x379338['filters']=_[_0x78c2('0x37')](_0x379338[_0x78c2('0x32')],_0x379338[_0x78c2('0x35')]);_0x570bdf['attributes']=_[_0x78c2('0x37')](_0x379338[_0x78c2('0x32')],qs[_0x78c2('0x38')](_0x30e1ff[_0x78c2('0x35')][_0x78c2('0x38')]));_0x570bdf[_0x78c2('0x39')]=_0x570bdf[_0x78c2('0x39')]['length']?_0x570bdf['attributes']:_0x379338['model'];if(!_0x30e1ff[_0x78c2('0x35')]['hasOwnProperty'](_0x78c2('0x3a'))){_0x570bdf['limit']=qs[_0x78c2('0x1e')](_0x30e1ff[_0x78c2('0x35')][_0x78c2('0x1e')]);_0x570bdf[_0x78c2('0x20')]=qs['offset'](_0x30e1ff[_0x78c2('0x35')][_0x78c2('0x20')]);}_0x570bdf[_0x78c2('0x3b')]=qs[_0x78c2('0x3c')](_0x30e1ff['query']['sort']);_0x570bdf[_0x78c2('0x3d')]=qs[_0x78c2('0x3e')](_[_0x78c2('0x3f')](_0x30e1ff[_0x78c2('0x35')],_0x379338['filters']),_0x2983fd);if(_0x30e1ff['query']['filter']){_0x570bdf[_0x78c2('0x3d')]=_[_0x78c2('0x40')](_0x570bdf[_0x78c2('0x3d')],{'$or':_[_0x78c2('0x2d')](_0x2983fd,function(_0x1af442){if(_0x1af442[_0x78c2('0x30')]!==_0x78c2('0x41')){var _0x55d734={};_0x55d734[_0x1af442[_0x78c2('0x2b')]]={'$like':'%'+_0x30e1ff[_0x78c2('0x35')][_0x78c2('0x42')]+'%'};return _0x55d734;}})});}_0x570bdf=_['merge']({},_0x570bdf,_0x30e1ff[_0x78c2('0x43')]);var _0x53eae1={'where':_0x570bdf[_0x78c2('0x3d')]};return db[_0x78c2('0x44')][_0x78c2('0x1f')](_0x53eae1)[_0x78c2('0x28')](function(_0x5e3798){_0x4210da['count']=_0x5e3798;if(_0x30e1ff['query']['includeAll']){_0x570bdf['include']=[{'all':!![]}];}return db[_0x78c2('0x44')]['findAll'](_0x570bdf);})[_0x78c2('0x28')](function(_0xc8b56){_0x4210da[_0x78c2('0x45')]=_0xc8b56;return _0x4210da;})[_0x78c2('0x28')](respondWithFilteredResult(_0x4c3c29,_0x570bdf))[_0x78c2('0x46')](handleError(_0x4c3c29,null));};exports[_0x78c2('0x47')]=function(_0x46a108,_0x4ca6be){var _0x145763={'raw':![],'where':{'id':_0x46a108[_0x78c2('0x48')]['id']}},_0x2d7d5d={};_0x2d7d5d[_0x78c2('0x32')]=_[_0x78c2('0x36')](db[_0x78c2('0x44')][_0x78c2('0x2e')]);_0x2d7d5d['query']=_['keys'](_0x46a108[_0x78c2('0x35')]);_0x2d7d5d[_0x78c2('0x3e')]=_['intersection'](_0x2d7d5d[_0x78c2('0x32')],_0x2d7d5d['query']);_0x145763[_0x78c2('0x39')]=_[_0x78c2('0x37')](_0x2d7d5d[_0x78c2('0x32')],qs[_0x78c2('0x38')](_0x46a108[_0x78c2('0x35')][_0x78c2('0x38')]));_0x145763[_0x78c2('0x39')]=_0x145763[_0x78c2('0x39')][_0x78c2('0x49')]?_0x145763[_0x78c2('0x39')]:_0x2d7d5d[_0x78c2('0x32')];if(_0x46a108[_0x78c2('0x35')][_0x78c2('0x4a')]){_0x145763[_0x78c2('0x4b')]=[{'all':!![]}];}_0x145763=_[_0x78c2('0x40')]({},_0x145763,_0x46a108[_0x78c2('0x43')]);return db[_0x78c2('0x44')][_0x78c2('0x4c')](_0x145763)['then'](handleEntityNotFound(_0x4ca6be,null))[_0x78c2('0x28')](respondWithResult(_0x4ca6be,null))['catch'](handleError(_0x4ca6be,null));};exports[_0x78c2('0x4d')]=function(_0x33545b,_0x4fb9ec){return db[_0x78c2('0x44')][_0x78c2('0x4d')](_0x33545b[_0x78c2('0x4e')],{})[_0x78c2('0x28')](respondWithResult(_0x4fb9ec,0xc9))[_0x78c2('0x46')](handleError(_0x4fb9ec,null));};exports[_0x78c2('0x27')]=function(_0x7d87a5,_0x41ef26){if(_0x7d87a5['body']['id']){delete _0x7d87a5[_0x78c2('0x4e')]['id'];}return db[_0x78c2('0x44')][_0x78c2('0x4c')]({'where':{'id':_0x7d87a5['params']['id']}})[_0x78c2('0x28')](handleEntityNotFound(_0x41ef26,null))[_0x78c2('0x28')](saveUpdates(_0x7d87a5[_0x78c2('0x4e')],null))[_0x78c2('0x28')](respondWithResult(_0x41ef26,null))[_0x78c2('0x46')](handleError(_0x41ef26,null));};exports['describe']=function(_0x2280c7,_0x2d6672){return db['VoiceRecording'][_0x78c2('0x4f')]()['then'](respondWithResult(_0x2d6672,null))[_0x78c2('0x46')](handleError(_0x2d6672,null));};exports['download']=function(_0x4d4985,_0x30d923,_0x17020a){var _0x548da6=require(_0x78c2('0x50'));var _0x473830=![];var _0x4bd6d8={};if(_0x4d4985[_0x78c2('0x35')][_0x78c2('0x30')]&&_0x4d4985[_0x78c2('0x35')][_0x78c2('0x30')]===_0x78c2('0x51')){_0x4bd6d8[_0x78c2('0x51')]=_0x4d4985[_0x78c2('0x48')]['id'];}else{_0x4bd6d8['id']=_0x4d4985['params']['id'];}return db['VoiceRecording']['find']({'where':_0x4bd6d8,'attributes':['id',_0x78c2('0x52')],'raw':!![]})[_0x78c2('0x28')](handleEntityNotFound(_0x30d923,null))['then'](function(_0x2149b9){if(_0x2149b9){var _0x258c5c=_0x2149b9[_0x78c2('0x52')];var _0x392ba8=util[_0x78c2('0x34')](_0x78c2('0x53'),_0x258c5c);if(fs[_0x78c2('0x54')](_0x392ba8)){_0x473830=!![];return _0x548da6[_0x78c2('0x55')](_0x392ba8,_0x258c5c,config[_0x78c2('0x56')][_0x78c2('0x57')])[_0x78c2('0x28')](function(){return _0x2149b9;});}return _0x2149b9;}})[_0x78c2('0x28')](function(_0x38d08a){if(_0x38d08a){var _0x4a60d1=_0x38d08a[_0x78c2('0x52')];if(!fs['existsSync'](_0x4a60d1)){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x5a'));}if(_0x38d08a['filename']){return _0x30d923[_0x78c2('0x5b')](_0x4a60d1,_0x38d08a['filename']+path[_0x78c2('0x5c')](_0x4a60d1),function(){if(_0x473830){fs['unlink'](_0x4a60d1);}});}else{return _0x30d923[_0x78c2('0x5b')](_0x4a60d1,function(_0x2a545){if(_0x473830){fs[_0x78c2('0x5d')](_0x4a60d1);}});}}})['catch'](function(_0x5a5daa){if(_0x5a5daa[_0x78c2('0x5e')]===_0x78c2('0x5a')){_0x30d923[_0x78c2('0x1c')](0x194)[_0x78c2('0x2c')](_0x78c2('0x5f'));}else{return handleError(_0x30d923,null);}});};exports[_0x78c2('0x60')]=function(_0x4a0577,_0x5752e2,_0x29d00a){var _0x333b49=require(_0x78c2('0x50'));var _0x2e2171=![];var _0x4fc22a={'$and':[db['sequelize'][_0x78c2('0x3d')](db[_0x78c2('0x61')]['fn'](_0x78c2('0x62'),db[_0x78c2('0x61')]['col'](_0x78c2('0x51'))),_0x4a0577[_0x78c2('0x35')][_0x78c2('0x63')])]};if(_0x4a0577[_0x78c2('0x35')]['type']&&_0x4a0577[_0x78c2('0x35')][_0x78c2('0x30')]===_0x78c2('0x51')){_0x4fc22a[_0x78c2('0x64')][_0x78c2('0x65')]({'uniqueid':_0x4a0577[_0x78c2('0x48')]['id']});}else{_0x4fc22a[_0x78c2('0x64')][_0x78c2('0x65')]({'id':_0x4a0577['params']['id']});}return db[_0x78c2('0x44')][_0x78c2('0x4c')]({'where':_0x4fc22a,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x5752e2,null))[_0x78c2('0x28')](function(_0x2696fe){if(_0x2696fe){var _0x54ff97=util[_0x78c2('0x34')](_0x78c2('0x53'),_0x2696fe[_0x78c2('0x52')]);if(fs['existsSync'](_0x54ff97)){_0x2e2171=!![];return _0x333b49[_0x78c2('0x55')](_0x54ff97,_0x2696fe[_0x78c2('0x52')],config[_0x78c2('0x56')][_0x78c2('0x57')])[_0x78c2('0x28')](function(){return _0x2696fe;});}return _0x2696fe;}})['then'](function(_0x470dac){if(_0x470dac){if(!fs['existsSync'](_0x470dac[_0x78c2('0x52')])){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x5a'));}if(_0x470dac[_0x78c2('0x66')]){return _0x5752e2['download'](_0x470dac[_0x78c2('0x52')],_0x470dac['filename']+path[_0x78c2('0x5c')](_0x470dac[_0x78c2('0x52')]),function(){if(_0x2e2171){fs[_0x78c2('0x5d')](_0x470dac[_0x78c2('0x52')]);}});}else{return _0x5752e2[_0x78c2('0x5b')](_0x470dac['value'],function(_0x2cfcf6){if(_0x2e2171){fs[_0x78c2('0x5d')](_0x470dac[_0x78c2('0x52')]);}});}}})[_0x78c2('0x46')](handleError(_0x5752e2,null));};exports[_0x78c2('0x67')]=function(_0x1c3ee2,_0x4e4f26){return db[_0x78c2('0x44')][_0x78c2('0x4c')]({'where':{'id':_0x1c3ee2['params']['id']}})[_0x78c2('0x28')](function(_0xb412f4){if(_[_0x78c2('0x68')](_0xb412f4)){throw new ReferenceError(_0x78c2('0x69'));}return _0xb412f4;})['then'](function(_0x511d7c){var _0x232dab=_0x511d7c[_0x78c2('0x52')];logger[_0x78c2('0x6a')](_0x78c2('0x6b'),_0x232dab);if(!_[_0x78c2('0x68')](_0x511d7c[_0x78c2('0x52')])&&fs[_0x78c2('0x54')](_0x232dab)){logger['info']('File:\x20\x22'+_0x232dab+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x78c2('0x6c')](_0x232dab);}_0x232dab=_0x232dab+_0x78c2('0x6d');if(!_['isNil'](_0x511d7c['value'])&&fs[_0x78c2('0x54')](_0x232dab)){logger[_0x78c2('0x6a')](_0x78c2('0x6e')+_0x232dab+_0x78c2('0x6f'));fs[_0x78c2('0x6c')](_0x232dab);}return _0x511d7c;})[_0x78c2('0x28')](function(_0x371954){if(!_0x371954)throw new InternalError();return _0x371954['destroy']();})[_0x78c2('0x28')](function(){_0x4e4f26[_0x78c2('0x1c')](0xcc)[_0x78c2('0x1b')]();})[_0x78c2('0x46')](handleError(_0x4e4f26,null));};function getBucketslist(_0x24b972,_0x5f2d83,_0x31d86c){return new Promise(function(_0x90eb91,_0x3f7dab){var _0xd553f1=new AWS['S3']({'accessKeyId':_0x5f2d83,'secretAccessKey':_0x24b972,'region':_0x31d86c});_0xd553f1[_0x78c2('0x70')]({},function(_0x58888b,_0x241ce1){if(_0x58888b){return _0x3f7dab(_0x58888b);}else{return _0x90eb91(_0x241ce1);}});});}function createBucket(_0x5d766c,_0x5cd100,_0x152d9b,_0x4ac8c5){return new Promise(function(_0xd56b84,_0x2efdcc){var _0xe75519=new AWS['S3']({'accessKeyId':_0x5cd100,'secretAccessKey':_0x5d766c,'region':_0x152d9b});_0xe75519[_0x78c2('0x71')]({'Bucket':_0x4ac8c5},function(_0x115046,_0x40173b){if(_0x115046){return _0x2efdcc(_0x115046);}else{return _0xd56b84(_0x40173b);}});});}function uploadFile(_0x5e1045,_0x3950d8,_0x488223,_0x1d4e2a,_0x4ee8c8,_0x186efb){return new Promise(function(_0x1e7acf,_0x52c334){var _0x44a7be=new AWS['S3']({'accessKeyId':_0x3950d8,'secretAccessKey':_0x5e1045,'region':_0x488223});_0x44a7be[_0x78c2('0x72')]({'Bucket':_0x1d4e2a,'Key':_0x4ee8c8,'Body':_0x186efb},function(_0x4cea6c,_0x7b695f){if(_0x4cea6c){return _0x52c334(_0x4cea6c);}else{return _0x1e7acf(_0x7b695f);}});});}function startTranscribe(_0x5568fe,_0x4300d8,_0x5ece09,_0xacfc7,_0x43b5c5,_0x294619){return new Promise(function(_0x5bee6a,_0x5805a5){var _0x200079=new AWS[(_0x78c2('0x73'))]({'accessKeyId':_0x4300d8,'secretAccessKey':_0x5568fe,'region':_0x5ece09});_0x200079[_0x78c2('0x74')]({'TranscriptionJobName':_0xacfc7,'LanguageCode':_0x43b5c5,'Media':{'MediaFileUri':_0x294619}},function(_0x469232,_0x492ddd){if(_0x469232){return _0x5805a5(_0x469232);}else{return _0x5bee6a(_0x492ddd);}});});}function transcribe(_0x4c5378,_0x26500e,_0x27e4f0,_0x34c131,_0x47c388,_0x470b70,_0x1a45d6){return new Promise(function(_0x15018d,_0xab1cfe){var _0x3a7845={};logger[_0x78c2('0x6a')](util['format'](_0x78c2('0x75'),_0x4c5378,_0x47c388));return uploadFile(_0x26500e,_0x27e4f0,_0x34c131,_0x47c388,path[_0x78c2('0x76')](_0x470b70),fs[_0x78c2('0x77')](_0x470b70))[_0x78c2('0x28')](function(_0x552a79){logger[_0x78c2('0x6a')](util[_0x78c2('0x34')](_0x78c2('0x78'),_0x4c5378,_0x47c388,_0x552a79['Location']));_0x3a7845[_0x78c2('0x79')]=_0x552a79[_0x78c2('0x7a')];_0x3a7845[_0x78c2('0x7b')]=_0x552a79[_0x78c2('0x7c')];logger['info'](util['format'](_0x78c2('0x7d'),_0x4c5378));return startTranscribe(_0x26500e,_0x27e4f0,_0x34c131,uuidv4(),_0x1a45d6,_0x552a79['Location']);})[_0x78c2('0x28')](function(_0x3dd21c){logger[_0x78c2('0x6a')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x4c5378,_0x3dd21c[_0x78c2('0x7e')][_0x78c2('0x7f')]));_0x3a7845[_0x78c2('0x80')]=_0x3dd21c[_0x78c2('0x7e')]['TranscriptionJobName'];_0x3a7845['transcribeStatus']=_0x3dd21c['TranscriptionJob']['TranscriptionJobStatus'];return _0x15018d(_0x3a7845);})[_0x78c2('0x46')](function(_0xeb3304){return _0xab1cfe(_0xeb3304);});});}exports[_0x78c2('0x81')]=function(_0x5d29d4,_0x2f5aff,_0x5b082f){var _0x3c0065;var _0x523974;var _0x23224a;var _0x27b79b=require(_0x78c2('0x50'));return db[_0x78c2('0x44')][_0x78c2('0x82')]({'where':{'id':_0x5d29d4[_0x78c2('0x48')]['id']}})[_0x78c2('0x28')](function(_0xe1a981){if(_0xe1a981){var _0x2613e1=util[_0x78c2('0x34')](_0x78c2('0x53'),_0xe1a981[_0x78c2('0x52')]);if(fs['existsSync'](_0x2613e1)){cypher=!![];return _0x27b79b['decryptFile'](_0x2613e1,_0xe1a981[_0x78c2('0x52')],config[_0x78c2('0x56')][_0x78c2('0x57')])[_0x78c2('0x28')](function(){return _0xe1a981;});}return _0xe1a981;}})[_0x78c2('0x28')](function(_0x458611){if(!_0x458611){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x83'));}_0x523974=_0x458611;return db[_0x78c2('0x84')][_0x78c2('0x82')]({'where':{'id':0x1}});})[_0x78c2('0x28')](handleEntityNotFound(_0x2f5aff,null))[_0x78c2('0x28')](function(_0x388fb9){if(_0x388fb9){_0x3c0065=_0x388fb9;if(!_0x3c0065['transcribe']||!_0x3c0065[_0x78c2('0x85')]||!_0x3c0065[_0x78c2('0x86')]||!_0x3c0065[_0x78c2('0x87')]||!_0x3c0065[_0x78c2('0x79')]){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x88'));}if(_0x5d29d4[_0x78c2('0x4e')]['runSentiment']&&(!_0x3c0065[_0x78c2('0x89')]||!_0x3c0065[_0x78c2('0x8a')]||!_0x3c0065[_0x78c2('0x8b')]||!_0x3c0065[_0x78c2('0x87')]||!_0x3c0065[_0x78c2('0x79')])){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x8c'));}return db[_0x78c2('0x8d')][_0x78c2('0x82')]({'where':{'id':_0x3c0065[_0x78c2('0x85')]}});}})[_0x78c2('0x28')](function(_0x355d2c){if(!_0x355d2c){throw new db[(_0x78c2('0x58'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x355d2c['data1']||!_0x355d2c['data2']){throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))]('Cloud\x20Provider\x20not\x20configured');}_0x23224a=_0x355d2c;return getBucketslist(_0x23224a[_0x78c2('0x8e')],_0x23224a[_0x78c2('0x8f')],_0x3c0065[_0x78c2('0x86')]);})['then'](function(_0x1b912e){if(_0x1b912e&&_0x1b912e[_0x78c2('0x90')]){var _0x245f26=_[_0x78c2('0x4c')](_0x1b912e[_0x78c2('0x90')],function(_0xc7f6d6){return _0xc7f6d6[_0x78c2('0x91')]===_0x3c0065[_0x78c2('0x79')];});if(!_0x245f26){logger[_0x78c2('0x6a')](util[_0x78c2('0x34')](_0x78c2('0x92'),_0x5d29d4['params']['id'],_0x3c0065[_0x78c2('0x79')]));return createBucket(_0x23224a[_0x78c2('0x8e')],_0x23224a['data2'],_0x3c0065[_0x78c2('0x86')],_0x3c0065[_0x78c2('0x79')]);}logger[_0x78c2('0x6a')](util[_0x78c2('0x34')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x5d29d4[_0x78c2('0x48')]['id'],_0x3c0065[_0x78c2('0x79')]));return;}})['then'](function(_0x3eb045){if(_0x523974[_0x78c2('0x93')]===_0x78c2('0x94')){return transcribe(_0x5d29d4[_0x78c2('0x48')]['id'],_0x23224a[_0x78c2('0x8e')],_0x23224a['data2'],_0x3c0065['transcribeRegion'],_0x3c0065[_0x78c2('0x79')],_0x523974[_0x78c2('0x52')],_0x3c0065[_0x78c2('0x87')]);}else{logger['info'](util[_0x78c2('0x34')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x5d29d4[_0x78c2('0x48')]['id']));return{'transcribeStatus':_0x78c2('0x95')};}})[_0x78c2('0x28')](function(_0x354c8f){if(_0x354c8f){_0x354c8f[_0x78c2('0x96')]=_0x5d29d4[_0x78c2('0x4e')][_0x78c2('0x97')];return _0x523974[_0x78c2('0x98')](_0x354c8f);}})[_0x78c2('0x28')](respondWithResult(_0x2f5aff,null))[_0x78c2('0x46')](handleError(_0x2f5aff,null));};function writeFile(_0x41b5da,_0x2e9ffe){return new Promise(function(_0x142281,_0x206794){fs['writeFile'](_0x2e9ffe,_0x41b5da,function(_0x3d9685,_0x53f639){if(_0x3d9685){return _0x206794(_0x3d9685);}else{return _0x142281(_0x53f639);}});});}exports[_0x78c2('0x99')]=function(_0x26e3fe,_0x3ace3d,_0x171782){return db['VoiceRecording'][_0x78c2('0x82')]({'where':{'id':_0x26e3fe['params']['id']}})[_0x78c2('0x28')](handleEntityNotFound(_0x3ace3d))[_0x78c2('0x28')](function(_0x187140){if(_0x187140&&_0x187140[_0x78c2('0x9a')]){var _0x2b4438=_0x187140['fileText'];var _0x307ddc=config['root']+'/server/files/transcribes/transcribe_'+_0x187140['id']+_0x78c2('0x9b');if(fs[_0x78c2('0x54')](_0x307ddc)){return _0x307ddc;}return writeFile(_0x2b4438,_0x307ddc)[_0x78c2('0x28')](function(){return _0x307ddc;});}else{throw new db[(_0x78c2('0x58'))][(_0x78c2('0x59'))](_0x78c2('0x9c'));}})['then'](function(_0x4f507f){return _0x3ace3d['download'](_0x4f507f);})['catch'](handleError(_0x3ace3d));};
\ No newline at end of file
+var _0x1d71=['TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','transcribe','transcribeAccountId','language','runSentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','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','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','stack','name','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','download','../../components/encryptor','uniqueid','existsSync','decryptFile','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','sequelize','$and','value','%s.cypher','secrets','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','createBucket','upload','TranscribeService','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob'];(function(_0x1214e4,_0x1cb35c){var _0x1250f6=function(_0x4e6d4a){while(--_0x4e6d4a){_0x1214e4['push'](_0x1214e4['shift']());}};_0x1250f6(++_0x1cb35c);}(_0x1d71,0xb8));var _0x11d7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1d71[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x11d7('0x0'));var rimraf=require(_0x11d7('0x1'));var zipdir=require(_0x11d7('0x2'));var jsonpatch=require(_0x11d7('0x3'));var rp=require(_0x11d7('0x4'));var moment=require(_0x11d7('0x5'));var BPromise=require(_0x11d7('0x6'));var Mustache=require(_0x11d7('0x7'));var util=require(_0x11d7('0x8'));var path=require(_0x11d7('0x9'));var sox=require(_0x11d7('0xa'));var csv=require(_0x11d7('0xb'));var ejs=require(_0x11d7('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11d7('0xd'));var squel=require(_0x11d7('0xe'));var crypto=require(_0x11d7('0xf'));var jsforce=require(_0x11d7('0x10'));var deskjs=require(_0x11d7('0x11'));var toCsv=require(_0x11d7('0xb'));var querystring=require(_0x11d7('0x12'));var Papa=require(_0x11d7('0x13'));var AWS=require(_0x11d7('0x14'));var uuidv4=require('uuid/v4');var Redis=require(_0x11d7('0x15'));var authService=require(_0x11d7('0x16'));var qs=require('../../components/parsers/qs');var as=require(_0x11d7('0x17'));var hardwareService=require(_0x11d7('0x18'));var logger=require(_0x11d7('0x19'))(_0x11d7('0x1a'));var utils=require(_0x11d7('0x1b'));var config=require(_0x11d7('0x1c'));var licenseUtil=require(_0x11d7('0x1d'));var db=require(_0x11d7('0x1e'))['db'];function respondWithStatusCode(_0x3ddaa5,_0x167211){_0x167211=_0x167211||0xcc;return function(_0x18d0c3){if(_0x18d0c3){return _0x3ddaa5[_0x11d7('0x1f')](_0x167211);}return _0x3ddaa5[_0x11d7('0x20')](_0x167211)[_0x11d7('0x21')]();};}function respondWithResult(_0x35429b,_0x1c9334){_0x1c9334=_0x1c9334||0xc8;return function(_0x58538a){if(_0x58538a){return _0x35429b[_0x11d7('0x20')](_0x1c9334)[_0x11d7('0x22')](_0x58538a);}};}function respondWithFilteredResult(_0x4e4886,_0x4aebe8){return function(_0x47bc85){if(_0x47bc85){var _0x1f620e=typeof _0x4aebe8[_0x11d7('0x23')]===_0x11d7('0x24')&&typeof _0x4aebe8[_0x11d7('0x25')]==='undefined';var _0x55ccd2=_0x47bc85['count'];var _0x3c8f57=_0x1f620e?0x0:_0x4aebe8['offset'];var _0x230010=_0x1f620e?_0x47bc85[_0x11d7('0x26')]:_0x4aebe8[_0x11d7('0x23')]+_0x4aebe8[_0x11d7('0x25')];var _0x460db2;if(_0x230010>=_0x55ccd2){_0x230010=_0x55ccd2;_0x460db2=0xc8;}else{_0x460db2=0xce;}_0x4e4886[_0x11d7('0x20')](_0x460db2);return _0x4e4886['set'](_0x11d7('0x27'),_0x3c8f57+'-'+_0x230010+'/'+_0x55ccd2)[_0x11d7('0x22')](_0x47bc85);}return null;};}function patchUpdates(_0x1bec34){return function(_0x26c0ab){try{jsonpatch['apply'](_0x26c0ab,_0x1bec34,!![]);}catch(_0x213e98){return BPromise[_0x11d7('0x28')](_0x213e98);}return _0x26c0ab['save']();};}function saveUpdates(_0x15dfe3,_0x43dc19){return function(_0x53e7f1){if(_0x53e7f1){return _0x53e7f1[_0x11d7('0x29')](_0x15dfe3)[_0x11d7('0x2a')](function(_0x1c4a46){return _0x1c4a46;});}return null;};}function removeEntity(_0x4963ab,_0x72829e){return function(_0xc648fd){if(_0xc648fd){return _0xc648fd['destroy']()[_0x11d7('0x2a')](function(){_0x4963ab[_0x11d7('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52d5c7,_0x2d5cf8){return function(_0x2e17fd){if(!_0x2e17fd){_0x52d5c7['sendStatus'](0x194);}return _0x2e17fd;};}function handleError(_0x3d3928,_0x454981){_0x454981=_0x454981||0x1f4;return function(_0x970d16){logger['error'](_0x970d16[_0x11d7('0x2b')]);if(_0x970d16[_0x11d7('0x2c')]){delete _0x970d16['name'];}_0x3d3928[_0x11d7('0x20')](_0x454981)['send'](_0x970d16);};}exports[_0x11d7('0x2d')]=function(_0x105773,_0x52e1a4){var _0x4419b6={},_0x2066ad={},_0x474fbf={'count':0x0,'rows':[]};var _0x4adc19=_[_0x11d7('0x2e')](db[_0x11d7('0x2f')]['rawAttributes'],function(_0xcc98bf){return{'name':_0xcc98bf[_0x11d7('0x30')],'type':_0xcc98bf[_0x11d7('0x31')][_0x11d7('0x32')]};});_0x2066ad[_0x11d7('0x33')]=_[_0x11d7('0x34')](_[_0x11d7('0x2e')](_0x4adc19,_0x11d7('0x2c')),[_0x11d7('0x35')]);_0x2066ad[_0x11d7('0x36')]=_[_0x11d7('0x37')](_0x105773[_0x11d7('0x36')]);_0x2066ad['filters']=_[_0x11d7('0x38')](_0x2066ad[_0x11d7('0x33')],_0x2066ad[_0x11d7('0x36')]);_0x4419b6[_0x11d7('0x39')]=_[_0x11d7('0x38')](_0x2066ad[_0x11d7('0x33')],qs[_0x11d7('0x3a')](_0x105773['query'][_0x11d7('0x3a')]));_0x4419b6[_0x11d7('0x39')]=_0x4419b6[_0x11d7('0x39')][_0x11d7('0x3b')]?_0x4419b6['attributes']:_0x2066ad[_0x11d7('0x33')];if(!_0x105773[_0x11d7('0x36')][_0x11d7('0x3c')]('nolimit')){_0x4419b6[_0x11d7('0x25')]=qs['limit'](_0x105773[_0x11d7('0x36')][_0x11d7('0x25')]);_0x4419b6['offset']=qs[_0x11d7('0x23')](_0x105773[_0x11d7('0x36')][_0x11d7('0x23')]);}_0x4419b6[_0x11d7('0x3d')]=qs['sort'](_0x105773[_0x11d7('0x36')][_0x11d7('0x3e')]);_0x4419b6[_0x11d7('0x3f')]=qs[_0x11d7('0x40')](_[_0x11d7('0x41')](_0x105773[_0x11d7('0x36')],_0x2066ad['filters']),_0x4adc19);if(_0x105773[_0x11d7('0x36')]['filter']){_0x4419b6[_0x11d7('0x3f')]=_[_0x11d7('0x42')](_0x4419b6[_0x11d7('0x3f')],{'$or':_[_0x11d7('0x2e')](_0x4adc19,function(_0x55271d){if(_0x55271d[_0x11d7('0x31')]!=='VIRTUAL'){var _0x3607ee={};_0x3607ee[_0x55271d[_0x11d7('0x2c')]]={'$like':'%'+_0x105773[_0x11d7('0x36')][_0x11d7('0x43')]+'%'};return _0x3607ee;}})});}_0x4419b6=_[_0x11d7('0x42')]({},_0x4419b6,_0x105773[_0x11d7('0x44')]);var _0x85d094={'where':_0x4419b6[_0x11d7('0x3f')]};return db[_0x11d7('0x2f')][_0x11d7('0x26')](_0x85d094)[_0x11d7('0x2a')](function(_0x341c59){_0x474fbf[_0x11d7('0x26')]=_0x341c59;if(_0x105773[_0x11d7('0x36')][_0x11d7('0x45')]){_0x4419b6[_0x11d7('0x46')]=[{'all':!![]}];}return db[_0x11d7('0x2f')][_0x11d7('0x47')](_0x4419b6);})[_0x11d7('0x2a')](function(_0x52feef){_0x474fbf[_0x11d7('0x48')]=_0x52feef;return _0x474fbf;})['then'](respondWithFilteredResult(_0x52e1a4,_0x4419b6))[_0x11d7('0x49')](handleError(_0x52e1a4,null));};exports[_0x11d7('0x4a')]=function(_0x15a907,_0x524242){var _0x3aa63a={'raw':![],'where':{'id':_0x15a907['params']['id']}},_0x1eed86={};_0x1eed86['model']=_[_0x11d7('0x37')](db[_0x11d7('0x2f')]['rawAttributes']);_0x1eed86[_0x11d7('0x36')]=_[_0x11d7('0x37')](_0x15a907[_0x11d7('0x36')]);_0x1eed86[_0x11d7('0x40')]=_[_0x11d7('0x38')](_0x1eed86[_0x11d7('0x33')],_0x1eed86[_0x11d7('0x36')]);_0x3aa63a[_0x11d7('0x39')]=_[_0x11d7('0x38')](_0x1eed86['model'],qs[_0x11d7('0x3a')](_0x15a907[_0x11d7('0x36')][_0x11d7('0x3a')]));_0x3aa63a[_0x11d7('0x39')]=_0x3aa63a[_0x11d7('0x39')]['length']?_0x3aa63a[_0x11d7('0x39')]:_0x1eed86[_0x11d7('0x33')];if(_0x15a907[_0x11d7('0x36')][_0x11d7('0x45')]){_0x3aa63a[_0x11d7('0x46')]=[{'all':!![]}];}_0x3aa63a=_[_0x11d7('0x42')]({},_0x3aa63a,_0x15a907[_0x11d7('0x44')]);return db[_0x11d7('0x2f')][_0x11d7('0x4b')](_0x3aa63a)[_0x11d7('0x2a')](handleEntityNotFound(_0x524242,null))[_0x11d7('0x2a')](respondWithResult(_0x524242,null))['catch'](handleError(_0x524242,null));};exports[_0x11d7('0x4c')]=function(_0x5af27d,_0x98316f){return db[_0x11d7('0x2f')][_0x11d7('0x4c')](_0x5af27d[_0x11d7('0x4d')],{})[_0x11d7('0x2a')](respondWithResult(_0x98316f,0xc9))[_0x11d7('0x49')](handleError(_0x98316f,null));};exports[_0x11d7('0x29')]=function(_0x349f81,_0x444fdd){if(_0x349f81[_0x11d7('0x4d')]['id']){delete _0x349f81[_0x11d7('0x4d')]['id'];}return db[_0x11d7('0x2f')][_0x11d7('0x4b')]({'where':{'id':_0x349f81[_0x11d7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x444fdd,null))[_0x11d7('0x2a')](saveUpdates(_0x349f81[_0x11d7('0x4d')],null))[_0x11d7('0x2a')](respondWithResult(_0x444fdd,null))['catch'](handleError(_0x444fdd,null));};exports[_0x11d7('0x4f')]=function(_0x270027,_0x34d057){return db[_0x11d7('0x2f')][_0x11d7('0x4f')]()['then'](respondWithResult(_0x34d057,null))[_0x11d7('0x49')](handleError(_0x34d057,null));};exports[_0x11d7('0x50')]=function(_0x22d8ed,_0x23ad34,_0x3c6eba){var _0x332c17=require(_0x11d7('0x51'));var _0x5b2fd4=![];var _0x5f1e91={};if(_0x22d8ed['query'][_0x11d7('0x31')]&&_0x22d8ed['query']['type']===_0x11d7('0x52')){_0x5f1e91['uniqueid']=_0x22d8ed[_0x11d7('0x4e')]['id'];}else{_0x5f1e91['id']=_0x22d8ed[_0x11d7('0x4e')]['id'];}return db['VoiceRecording'][_0x11d7('0x4b')]({'where':_0x5f1e91,'attributes':['id','value'],'raw':!![]})[_0x11d7('0x2a')](handleEntityNotFound(_0x23ad34,null))[_0x11d7('0x2a')](function(_0x2dec81){if(_0x2dec81){var _0x3a0c80=_0x2dec81['value'];var _0x396f90=util['format']('%s.cypher',_0x3a0c80);if(fs[_0x11d7('0x53')](_0x396f90)){_0x5b2fd4=!![];return _0x332c17[_0x11d7('0x54')](_0x396f90,_0x3a0c80,config['secrets'][_0x11d7('0x55')])[_0x11d7('0x2a')](function(){return _0x2dec81;});}return _0x2dec81;}})['then'](function(_0x19443f){if(_0x19443f){var _0x438a60=_0x19443f['value'];if(!fs[_0x11d7('0x53')](_0x438a60)){throw new db[(_0x11d7('0x56'))][(_0x11d7('0x57'))](_0x11d7('0x58'));}if(_0x19443f[_0x11d7('0x59')]){return _0x23ad34[_0x11d7('0x50')](_0x438a60,_0x19443f[_0x11d7('0x59')]+path[_0x11d7('0x5a')](_0x438a60),function(){if(_0x5b2fd4){fs['unlink'](_0x438a60);}});}else{return _0x23ad34[_0x11d7('0x50')](_0x438a60,function(_0x335129){if(_0x5b2fd4){fs[_0x11d7('0x5b')](_0x438a60);}});}}})[_0x11d7('0x49')](function(_0x1167b4){if(_0x1167b4[_0x11d7('0x5c')]===_0x11d7('0x58')){_0x23ad34[_0x11d7('0x20')](0x194)['send'](_0x11d7('0x5d'));}else{return handleError(_0x23ad34,null);}});};exports[_0x11d7('0x5e')]=function(_0x547958,_0x21f64e,_0x242dfa){var _0x1d1003=require(_0x11d7('0x51'));var _0x42aaec=![];var _0x538957={'$and':[db[_0x11d7('0x5f')]['where'](db['sequelize']['fn']('MD5',db[_0x11d7('0x5f')]['col']('uniqueid')),_0x547958[_0x11d7('0x36')]['token'])]};if(_0x547958[_0x11d7('0x36')]['type']&&_0x547958[_0x11d7('0x36')][_0x11d7('0x31')]===_0x11d7('0x52')){_0x538957[_0x11d7('0x60')]['push']({'uniqueid':_0x547958[_0x11d7('0x4e')]['id']});}else{_0x538957[_0x11d7('0x60')]['push']({'id':_0x547958[_0x11d7('0x4e')]['id']});}return db[_0x11d7('0x2f')][_0x11d7('0x4b')]({'where':_0x538957,'attributes':['id',_0x11d7('0x61')],'raw':!![]})[_0x11d7('0x2a')](handleEntityNotFound(_0x21f64e,null))[_0x11d7('0x2a')](function(_0x5a27dc){if(_0x5a27dc){var _0x3ac2b5=util[_0x11d7('0x35')](_0x11d7('0x62'),_0x5a27dc['value']);if(fs[_0x11d7('0x53')](_0x3ac2b5)){_0x42aaec=!![];return _0x1d1003['decryptFile'](_0x3ac2b5,_0x5a27dc[_0x11d7('0x61')],config[_0x11d7('0x63')][_0x11d7('0x55')])[_0x11d7('0x2a')](function(){return _0x5a27dc;});}return _0x5a27dc;}})[_0x11d7('0x2a')](function(_0x5e743e){if(_0x5e743e){if(!fs[_0x11d7('0x53')](_0x5e743e[_0x11d7('0x61')])){throw new db['Sequelize'][(_0x11d7('0x57'))](_0x11d7('0x58'));}if(_0x5e743e['filename']){return _0x21f64e[_0x11d7('0x50')](_0x5e743e[_0x11d7('0x61')],_0x5e743e[_0x11d7('0x59')]+path['extname'](_0x5e743e[_0x11d7('0x61')]),function(){if(_0x42aaec){fs[_0x11d7('0x5b')](_0x5e743e[_0x11d7('0x61')]);}});}else{return _0x21f64e[_0x11d7('0x50')](_0x5e743e['value'],function(_0x377496){if(_0x42aaec){fs[_0x11d7('0x5b')](_0x5e743e[_0x11d7('0x61')]);}});}}})[_0x11d7('0x49')](handleError(_0x21f64e,null));};exports[_0x11d7('0x64')]=function(_0x2bfafe,_0x1801ed){return db['VoiceRecording'][_0x11d7('0x4b')]({'where':{'id':_0x2bfafe['params']['id']}})[_0x11d7('0x2a')](function(_0xc0fa8b){if(_[_0x11d7('0x65')](_0xc0fa8b)){throw new ReferenceError(_0x11d7('0x66'));}return _0xc0fa8b;})[_0x11d7('0x2a')](function(_0x428ec6){var _0x4a776f=_0x428ec6[_0x11d7('0x61')];logger[_0x11d7('0x67')](_0x11d7('0x68'),_0x4a776f);if(!_[_0x11d7('0x65')](_0x428ec6['value'])&&fs[_0x11d7('0x53')](_0x4a776f)){logger[_0x11d7('0x67')](_0x11d7('0x69')+_0x4a776f+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x4a776f);}_0x4a776f=_0x4a776f+'.cypher';if(!_[_0x11d7('0x65')](_0x428ec6[_0x11d7('0x61')])&&fs['existsSync'](_0x4a776f)){logger['info']('File:\x20\x22'+_0x4a776f+_0x11d7('0x6a'));fs[_0x11d7('0x6b')](_0x4a776f);}return _0x428ec6;})[_0x11d7('0x2a')](function(_0x449821){if(!_0x449821)throw new InternalError();return _0x449821[_0x11d7('0x64')]();})[_0x11d7('0x2a')](function(){_0x1801ed['status'](0xcc)[_0x11d7('0x21')]();})[_0x11d7('0x49')](handleError(_0x1801ed,null));};function getBucketslist(_0xc1a8ae,_0x58e3af,_0x2192c0){return new Promise(function(_0x5df237,_0x2f6412){var _0x35dd47=new AWS['S3']({'accessKeyId':_0x58e3af,'secretAccessKey':_0xc1a8ae,'region':_0x2192c0});_0x35dd47[_0x11d7('0x6c')]({},function(_0x78db78,_0x56fb65){if(_0x78db78){return _0x2f6412(_0x78db78);}else{return _0x5df237(_0x56fb65);}});});}function createBucket(_0x4becf6,_0x52d0e2,_0x5ba4a0,_0x1d6b59){return new Promise(function(_0x1baa79,_0x14f12b){var _0x2973a2=new AWS['S3']({'accessKeyId':_0x52d0e2,'secretAccessKey':_0x4becf6,'region':_0x5ba4a0});_0x2973a2[_0x11d7('0x6d')]({'Bucket':_0x1d6b59},function(_0x5569ec,_0x3d8ac3){if(_0x5569ec){return _0x14f12b(_0x5569ec);}else{return _0x1baa79(_0x3d8ac3);}});});}function uploadFile(_0x2d48a8,_0x165863,_0x41089,_0x13248a,_0x2b7869,_0x4dee3f){return new Promise(function(_0x577f68,_0x54fb17){var _0x3ffdb3=new AWS['S3']({'accessKeyId':_0x165863,'secretAccessKey':_0x2d48a8,'region':_0x41089});_0x3ffdb3[_0x11d7('0x6e')]({'Bucket':_0x13248a,'Key':_0x2b7869,'Body':_0x4dee3f},function(_0x5e7d22,_0x4c25f6){if(_0x5e7d22){return _0x54fb17(_0x5e7d22);}else{return _0x577f68(_0x4c25f6);}});});}function startTranscribe(_0x26f82a,_0x5201cc,_0x528838,_0x41f7f0,_0x1d8c6c,_0x45de88){return new Promise(function(_0x514e40,_0x15063d){var _0x53d3ea=new AWS[(_0x11d7('0x6f'))]({'accessKeyId':_0x5201cc,'secretAccessKey':_0x26f82a,'region':_0x528838});_0x53d3ea['startTranscriptionJob']({'TranscriptionJobName':_0x41f7f0,'LanguageCode':_0x1d8c6c,'Media':{'MediaFileUri':_0x45de88}},function(_0x2454d0,_0x3aa03e){if(_0x2454d0){return _0x15063d(_0x2454d0);}else{return _0x514e40(_0x3aa03e);}});});}function transcribe(_0x1d3ade,_0x800af7,_0x224680,_0x50c7fb,_0x2c291b,_0x50445e,_0x46858f){return new Promise(function(_0x3721ce,_0x34b82e){var _0x70afbb={};logger[_0x11d7('0x67')](util['format']('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x1d3ade,_0x2c291b));return uploadFile(_0x800af7,_0x224680,_0x50c7fb,_0x2c291b,path[_0x11d7('0x70')](_0x50445e),fs[_0x11d7('0x71')](_0x50445e))[_0x11d7('0x2a')](function(_0x54088e){logger[_0x11d7('0x67')](util['format'](_0x11d7('0x72'),_0x1d3ade,_0x2c291b,_0x54088e[_0x11d7('0x73')]));_0x70afbb[_0x11d7('0x74')]=_0x54088e[_0x11d7('0x75')];_0x70afbb[_0x11d7('0x76')]=_0x54088e[_0x11d7('0x73')];logger[_0x11d7('0x67')](util['format'](_0x11d7('0x77'),_0x1d3ade));return startTranscribe(_0x800af7,_0x224680,_0x50c7fb,uuidv4(),_0x46858f,_0x54088e[_0x11d7('0x73')]);})['then'](function(_0x1d0405){logger[_0x11d7('0x67')](util[_0x11d7('0x35')](_0x11d7('0x78'),_0x1d3ade,_0x1d0405[_0x11d7('0x79')]['TranscriptionJobName']));_0x70afbb['transcribeName']=_0x1d0405[_0x11d7('0x79')][_0x11d7('0x7a')];_0x70afbb[_0x11d7('0x7b')]=_0x1d0405[_0x11d7('0x79')][_0x11d7('0x7c')];return _0x3721ce(_0x70afbb);})['catch'](function(_0x37a7e4){return _0x34b82e(_0x37a7e4);});});}exports[_0x11d7('0x7d')]=function(_0x6cfd95,_0x53731b,_0x1803a3){var _0x5d8e33;var _0xa14d65;var _0x4c14e6;var _0x3a1852=require(_0x11d7('0x51'));return db[_0x11d7('0x2f')][_0x11d7('0x7e')]({'where':{'id':_0x6cfd95[_0x11d7('0x4e')]['id']}})['then'](function(_0x5a0b1b){if(_0x5a0b1b){var _0x25fd19=util['format']('%s.cypher',_0x5a0b1b[_0x11d7('0x61')]);if(fs[_0x11d7('0x53')](_0x25fd19)){cypher=!![];return _0x3a1852[_0x11d7('0x54')](_0x25fd19,_0x5a0b1b['value'],config[_0x11d7('0x63')]['recording'])[_0x11d7('0x2a')](function(){return _0x5a0b1b;});}return _0x5a0b1b;}})[_0x11d7('0x2a')](function(_0x22dfd7){if(!_0x22dfd7){throw new db[(_0x11d7('0x56'))]['ValidationError'](_0x11d7('0x7f'));}_0xa14d65=_0x22dfd7;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x11d7('0x2a')](handleEntityNotFound(_0x53731b,null))[_0x11d7('0x2a')](function(_0x192bd0){if(_0x192bd0){_0x5d8e33=_0x192bd0;if(!_0x5d8e33[_0x11d7('0x80')]||!_0x5d8e33[_0x11d7('0x81')]||!_0x5d8e33['transcribeRegion']||!_0x5d8e33[_0x11d7('0x82')]||!_0x5d8e33[_0x11d7('0x74')]){throw new db[(_0x11d7('0x56'))]['ValidationError']('Transcribe\x20not\x20configured');}if(_0x6cfd95[_0x11d7('0x4d')][_0x11d7('0x83')]&&(!_0x5d8e33['sentiment']||!_0x5d8e33['sentimentAccountId']||!_0x5d8e33[_0x11d7('0x84')]||!_0x5d8e33['language']||!_0x5d8e33[_0x11d7('0x74')])){throw new db['Sequelize'][(_0x11d7('0x57'))](_0x11d7('0x85'));}return db['CloudProvider'][_0x11d7('0x7e')]({'where':{'id':_0x5d8e33[_0x11d7('0x81')]}});}})[_0x11d7('0x2a')](function(_0xcb6a3e){if(!_0xcb6a3e){throw new db[(_0x11d7('0x56'))]['ValidationError'](_0x11d7('0x86'));}if(!_0xcb6a3e[_0x11d7('0x87')]||!_0xcb6a3e[_0x11d7('0x88')]){throw new db[(_0x11d7('0x56'))][(_0x11d7('0x57'))](_0x11d7('0x89'));}_0x4c14e6=_0xcb6a3e;return getBucketslist(_0x4c14e6[_0x11d7('0x87')],_0x4c14e6[_0x11d7('0x88')],_0x5d8e33[_0x11d7('0x8a')]);})[_0x11d7('0x2a')](function(_0x1b4452){if(_0x1b4452&&_0x1b4452[_0x11d7('0x8b')]){var _0x4a3c61=_[_0x11d7('0x4b')](_0x1b4452['Buckets'],function(_0x2aeab9){return _0x2aeab9[_0x11d7('0x8c')]===_0x5d8e33['bucket'];});if(!_0x4a3c61){logger[_0x11d7('0x67')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x6cfd95[_0x11d7('0x4e')]['id'],_0x5d8e33[_0x11d7('0x74')]));return createBucket(_0x4c14e6[_0x11d7('0x87')],_0x4c14e6[_0x11d7('0x88')],_0x5d8e33[_0x11d7('0x8a')],_0x5d8e33[_0x11d7('0x74')]);}logger[_0x11d7('0x67')](util['format'](_0x11d7('0x8d'),_0x6cfd95[_0x11d7('0x4e')]['id'],_0x5d8e33[_0x11d7('0x74')]));return;}})[_0x11d7('0x2a')](function(_0x48c100){if(_0xa14d65[_0x11d7('0x7b')]===_0x11d7('0x8e')){return transcribe(_0x6cfd95[_0x11d7('0x4e')]['id'],_0x4c14e6[_0x11d7('0x87')],_0x4c14e6[_0x11d7('0x88')],_0x5d8e33[_0x11d7('0x8a')],_0x5d8e33[_0x11d7('0x74')],_0xa14d65[_0x11d7('0x61')],_0x5d8e33['language']);}else{logger[_0x11d7('0x67')](util[_0x11d7('0x35')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x6cfd95[_0x11d7('0x4e')]['id']));return{'transcribeStatus':_0x11d7('0x8f')};}})['then'](function(_0x2c4237){if(_0x2c4237){_0x2c4237[_0x11d7('0x90')]=_0x6cfd95[_0x11d7('0x4d')][_0x11d7('0x83')];return _0xa14d65[_0x11d7('0x91')](_0x2c4237);}})[_0x11d7('0x2a')](respondWithResult(_0x53731b,null))[_0x11d7('0x49')](handleError(_0x53731b,null));};function writeFile(_0x45c330,_0x403da4){return new Promise(function(_0x1028c9,_0x3d4295){fs[_0x11d7('0x92')](_0x403da4,_0x45c330,function(_0x1d9106,_0x30a070){if(_0x1d9106){return _0x3d4295(_0x1d9106);}else{return _0x1028c9(_0x30a070);}});});}exports[_0x11d7('0x93')]=function(_0x3fecb5,_0x5447c6,_0x111e99){return db[_0x11d7('0x2f')]['findOne']({'where':{'id':_0x3fecb5[_0x11d7('0x4e')]['id']}})[_0x11d7('0x2a')](handleEntityNotFound(_0x5447c6))[_0x11d7('0x2a')](function(_0xa80ce0){if(_0xa80ce0&&_0xa80ce0['fileText']){var _0x38e220=_0xa80ce0[_0x11d7('0x94')];var _0x2f5d27=config[_0x11d7('0x95')]+_0x11d7('0x96')+_0xa80ce0['id']+_0x11d7('0x97');if(fs['existsSync'](_0x2f5d27)){return _0x2f5d27;}return writeFile(_0x38e220,_0x2f5d27)['then'](function(){return _0x2f5d27;});}else{throw new db[(_0x11d7('0x56'))][(_0x11d7('0x57'))](_0x11d7('0x98'));}})[_0x11d7('0x2a')](function(_0x210056){return _0x5447c6['download'](_0x210056);})[_0x11d7('0x49')](handleError(_0x5447c6));};
\ No newline at end of file
index 6bd9730..11bbcd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e31=['transcribeStatus','./voiceRecording.attributes','exports','define','VoiceRecording','uniqueid'];(function(_0x3bf3f1,_0x5b8238){var _0x5a0c0c=function(_0x303fac){while(--_0x303fac){_0x3bf3f1['push'](_0x3bf3f1['shift']());}};_0x5a0c0c(++_0x5b8238);}(_0x2e31,0x145));var _0x12e3=function(_0x4da66b,_0x53f200){_0x4da66b=_0x4da66b-0x0;var _0x6220b0=_0x2e31[_0x4da66b];return _0x6220b0;};'use strict';var attributes=require(_0x12e3('0x0'));module[_0x12e3('0x1')]=function(_0x3b852c,_0x4bd2a3){return _0x3b852c[_0x12e3('0x2')](_0x12e3('0x3'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x12e3('0x4')]},{'name':_0x12e3('0x5'),'fields':[_0x12e3('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d5b=['define','voice_recordings','uniqueid','transcribeStatus','./voiceRecording.attributes','exports'];(function(_0x5e40e1,_0x439631){var _0x2a6579=function(_0x29f922){while(--_0x29f922){_0x5e40e1['push'](_0x5e40e1['shift']());}};_0x2a6579(++_0x439631);}(_0x1d5b,0x13c));var _0xb1d5=function(_0x32df95,_0x511441){_0x32df95=_0x32df95-0x0;var _0x2956c9=_0x1d5b[_0x32df95];return _0x2956c9;};'use strict';var attributes=require(_0xb1d5('0x0'));module[_0xb1d5('0x1')]=function(_0x1a1089,_0x4a5a6c){return _0x1a1089[_0xb1d5('0x2')]('VoiceRecording',attributes,{'tableName':_0xb1d5('0x3'),'paranoid':![],'indexes':[{'name':_0xb1d5('0x4'),'fields':[_0xb1d5('0x4')]},{'name':_0xb1d5('0x5'),'fields':['transcribeStatus']}],'timestamps':!![]});};
\ No newline at end of file
index 0c67c09..5aa37d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['options','raw','attributes','limit','debug','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','value','format','encryptFile','secrets','recording','unlink','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xb016,0x159));var _0x6b01=function(_0x20f4d0,_0x57f52e){_0x20f4d0=_0x20f4d0-0x0;var _0x50a626=_0xb016[_0x20f4d0];return _0x50a626;};'use strict';var _=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6b01('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b01('0x3'))['db'];var utils=require(_0x6b01('0x4'));var logger=require(_0x6b01('0x5'))(_0x6b01('0x6'));var config=require('../../config/environment');var jayson=require(_0x6b01('0x7'));var client=jayson[_0x6b01('0x8')][_0x6b01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5759a1,_0x5c5bfb,_0x374aab){return new BPromise(function(_0x39f9fa,_0x526a7d){return client['request'](_0x5759a1,_0x374aab)[_0x6b01('0xa')](function(_0x1cb3a6){logger[_0x6b01('0xb')](_0x6b01('0xc'),_0x5c5bfb,_0x6b01('0xd'));logger['debug']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'),JSON[_0x6b01('0xe')](_0x1cb3a6));if(_0x1cb3a6[_0x6b01('0xf')]){if(_0x1cb3a6['error'][_0x6b01('0x10')]===0x1f4){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x5c5bfb,_0x1cb3a6[_0x6b01('0xf')]['message']);return _0x526a7d(_0x1cb3a6[_0x6b01('0xf')][_0x6b01('0x11')]);}logger['error'](_0x6b01('0xc'),_0x5c5bfb,_0x1cb3a6['error']['message']);return _0x39f9fa(_0x1cb3a6['error'][_0x6b01('0x11')]);}else{logger['info']('VoiceRecording,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'));_0x39f9fa(_0x1cb3a6[_0x6b01('0x12')][_0x6b01('0x11')]);}})[_0x6b01('0x13')](function(_0x3d7045){logger[_0x6b01('0xf')](_0x6b01('0xc'),_0x5c5bfb,_0x3d7045);_0x526a7d(_0x3d7045);});});}exports[_0x6b01('0x14')]=function(_0x9c6571){var _0xc4e1b1=this;return new Promise(function(_0x18f336,_0x4f2d08){return db[_0x6b01('0x15')][_0x6b01('0x16')](_0x9c6571[_0x6b01('0x17')],{'raw':_0x9c6571[_0x6b01('0x18')]?_0x9c6571[_0x6b01('0x18')][_0x6b01('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x9c6571[_0x6b01('0x18')]?_0x9c6571[_0x6b01('0x18')]['where']||null:null,'attributes':_0x9c6571[_0x6b01('0x18')]?_0x9c6571[_0x6b01('0x18')][_0x6b01('0x1a')]||null:null,'limit':_0x9c6571[_0x6b01('0x18')]?_0x9c6571[_0x6b01('0x18')][_0x6b01('0x1b')]||null:null})[_0x6b01('0xa')](function(_0x542fab){logger[_0x6b01('0xb')](_0x6b01('0x14'),_0x9c6571);logger[_0x6b01('0x1c')]('UpdateVoiceRecording',_0x9c6571,JSON[_0x6b01('0xe')](_0x542fab));_0x18f336(_0x542fab);})[_0x6b01('0x13')](function(_0x304393){logger[_0x6b01('0xf')](_0x6b01('0x14'),_0x304393[_0x6b01('0x11')],_0x9c6571);_0x4f2d08(_0xc4e1b1[_0x6b01('0xf')](0x1f4,_0x304393[_0x6b01('0x11')]));});});};exports[_0x6b01('0x1d')]=function(_0x152dda){var _0x3c0607=this;return new Promise(function(_0xa846d8,_0x154dfc){var _0x55ca4b=require(_0x6b01('0x1e'));var _0x220efb;return db[_0x6b01('0x1f')][_0x6b01('0x20')]({'attributes':['id',_0x6b01('0x21')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x54f030){_0x220efb=_0x54f030;return db[_0x6b01('0x15')][_0x6b01('0x22')](_0x152dda[_0x6b01('0x17')]);})[_0x6b01('0xa')](function(_0x2a894e){if(_0x220efb[_0x6b01('0x21')]&&fs['existsSync'](_0x2a894e[_0x6b01('0x23')])){var _0x5482a8=util[_0x6b01('0x24')]('%s.cypher',_0x2a894e[_0x6b01('0x23')]);return _0x55ca4b[_0x6b01('0x25')](_0x2a894e[_0x6b01('0x23')],_0x5482a8,config[_0x6b01('0x26')][_0x6b01('0x27')])['then'](function(){fs[_0x6b01('0x28')](_0x2a894e[_0x6b01('0x23')]);logger[_0x6b01('0xb')]('CreateVoiceRecording\x20file\x20encrypted');return _0x2a894e;});}return _0x2a894e;})['then'](function(_0x3578ef){logger['info'](_0x6b01('0x1d'),_0x152dda);logger[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x152dda,JSON['stringify'](_0x3578ef));_0xa846d8(_0x3578ef);})[_0x6b01('0x13')](function(_0x42d5f7){logger[_0x6b01('0xf')]('CreateVoiceRecording',_0x42d5f7[_0x6b01('0x11')],_0x152dda);_0x154dfc(_0x3c0607[_0x6b01('0xf')](0x1f4,_0x42d5f7[_0x6b01('0x11')]));});});};
\ No newline at end of file
+var _0x958a=['unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher'];(function(_0x4e25e0,_0x35409c){var _0x12013b=function(_0x426c0e){while(--_0x426c0e){_0x4e25e0['push'](_0x4e25e0['shift']());}};_0x12013b(++_0x35409c);}(_0x958a,0x128));var _0xa958=function(_0x1efec6,_0x98d5c7){_0x1efec6=_0x1efec6-0x0;var _0x1bb8f8=_0x958a[_0x1efec6];return _0x1bb8f8;};'use strict';var _=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var moment=require('moment');var BPromise=require(_0xa958('0x2'));var rs=require(_0xa958('0x3'));var fs=require('fs');var Redis=require(_0xa958('0x4'));var db=require(_0xa958('0x5'))['db'];var utils=require(_0xa958('0x6'));var logger=require('../../config/logger')(_0xa958('0x7'));var config=require('../../config/environment');var jayson=require(_0xa958('0x8'));var client=jayson[_0xa958('0x9')][_0xa958('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ddaa9,_0x3ca01f,_0x3b2693){return new BPromise(function(_0x1895da,_0x54c0e0){return client['request'](_0x3ddaa9,_0x3b2693)[_0xa958('0xb')](function(_0x249764){logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));logger[_0xa958('0xf')](_0xa958('0x10'),_0x3ca01f,_0xa958('0xe'),JSON[_0xa958('0x11')](_0x249764));if(_0x249764[_0xa958('0x12')]){if(_0x249764[_0xa958('0x12')][_0xa958('0x13')]===0x1f4){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764[_0xa958('0x12')]['message']);return _0x1895da(_0x249764['error']['message']);}else{logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));_0x1895da(_0x249764[_0xa958('0x15')][_0xa958('0x14')]);}})[_0xa958('0x16')](function(_0x23736f){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x23736f);_0x54c0e0(_0x23736f);});});}exports[_0xa958('0x17')]=function(_0x4eadc9){var _0x3a053f=this;return new Promise(function(_0x70d13e,_0x52a184){return db[_0xa958('0x18')][_0xa958('0x19')](_0x4eadc9[_0xa958('0x1a')],{'raw':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')][_0xa958('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eadc9['options']?_0x4eadc9['options'][_0xa958('0x1d')]||null:null,'attributes':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['attributes']||null:null,'limit':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['limit']||null:null})[_0xa958('0xb')](function(_0x401175){logger['info']('UpdateVoiceRecording',_0x4eadc9);logger[_0xa958('0xf')](_0xa958('0x17'),_0x4eadc9,JSON['stringify'](_0x401175));_0x70d13e(_0x401175);})[_0xa958('0x16')](function(_0x27097a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x27097a[_0xa958('0x14')],_0x4eadc9);_0x52a184(_0x3a053f[_0xa958('0x12')](0x1f4,_0x27097a['message']));});});};exports[_0xa958('0x1e')]=function(_0x48ef34){var _0x43df63=this;return new Promise(function(_0x3c2ea3,_0x32ea36){var _0x18f600=require(_0xa958('0x1f'));var _0xddc7f6;return db[_0xa958('0x20')][_0xa958('0x21')]({'attributes':['id',_0xa958('0x22')],'where':{'id':0x1},'raw':!![]})[_0xa958('0xb')](function(_0x4c4c37){_0xddc7f6=_0x4c4c37;return db['VoiceRecording'][_0xa958('0x23')](_0x48ef34['body']);})[_0xa958('0xb')](function(_0x1b76de){if(_0xddc7f6['callRecordingEncryption']&&fs[_0xa958('0x24')](_0x1b76de[_0xa958('0x25')])){var _0x179bc2=util[_0xa958('0x26')](_0xa958('0x27'),_0x1b76de['value']);return _0x18f600['encryptFile'](_0x1b76de[_0xa958('0x25')],_0x179bc2,config['secrets']['recording'])[_0xa958('0xb')](function(){fs[_0xa958('0x28')](_0x1b76de[_0xa958('0x25')]);logger[_0xa958('0xc')](_0xa958('0x29'));return _0x1b76de;});}return _0x1b76de;})[_0xa958('0xb')](function(_0x516a2f){logger[_0xa958('0xc')]('CreateVoiceRecording',_0x48ef34);logger['debug'](_0xa958('0x1e'),_0x48ef34,JSON[_0xa958('0x11')](_0x516a2f));_0x3c2ea3(_0x516a2f);})[_0xa958('0x16')](function(_0x1cc55d){logger[_0xa958('0x12')](_0xa958('0x1e'),_0x1cc55d[_0xa958('0x14')],_0x48ef34);_0x32ea36(_0x43df63[_0xa958('0x12')](0x1f4,_0x1cc55d['message']));});});};
\ No newline at end of file
index f22cf0d..de2f332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4aa=['isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','index'];(function(_0x34eb0d,_0x43448b){var _0x309bb3=function(_0x3f10c5){while(--_0x3f10c5){_0x34eb0d['push'](_0x34eb0d['shift']());}};_0x309bb3(++_0x43448b);}(_0xe4aa,0x16f));var _0xae4a=function(_0x559fa5,_0x1934cf){_0x559fa5=_0x559fa5-0x0;var _0x5f01f2=_0xe4aa[_0x559fa5];return _0x5f01f2;};'use strict';var multer=require('multer');var util=require(_0xae4a('0x0'));var path=require(_0xae4a('0x1'));var timeout=require(_0xae4a('0x2'));var express=require(_0xae4a('0x3'));var router=express[_0xae4a('0x4')]();var fs_extra=require(_0xae4a('0x5'));var auth=require(_0xae4a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xae4a('0x7'));var controller=require(_0xae4a('0x8'));router[_0xae4a('0x9')]('/',auth['isAuthenticated'](),controller[_0xae4a('0xa')]);router['get']('/describe',auth[_0xae4a('0xb')](),controller[_0xae4a('0xc')]);router[_0xae4a('0x9')](_0xae4a('0xd'),auth['isAuthenticated'](),controller[_0xae4a('0xe')]);router[_0xae4a('0xf')]('/',auth[_0xae4a('0xb')](),controller[_0xae4a('0x10')]);router[_0xae4a('0x11')](_0xae4a('0xd'),auth[_0xae4a('0xb')](),controller[_0xae4a('0x12')]);router['delete'](_0xae4a('0xd'),auth['isAuthenticated'](),controller[_0xae4a('0x13')]);module[_0xae4a('0x14')]=router;
\ No newline at end of file
+var _0xc1b9=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x5bdb42,_0x77b4cd){var _0x46ea7f=function(_0x436af1){while(--_0x436af1){_0x5bdb42['push'](_0x5bdb42['shift']());}};_0x46ea7f(++_0x77b4cd);}(_0xc1b9,0x1de));var _0x9c1b=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xc1b9[_0x22b68a];return _0x1ac67a;};'use strict';var multer=require(_0x9c1b('0x0'));var util=require(_0x9c1b('0x1'));var path=require(_0x9c1b('0x2'));var timeout=require(_0x9c1b('0x3'));var express=require(_0x9c1b('0x4'));var router=express[_0x9c1b('0x5')]();var fs_extra=require(_0x9c1b('0x6'));var auth=require(_0x9c1b('0x7'));var interaction=require(_0x9c1b('0x8'));var config=require('../../config/environment');var controller=require(_0x9c1b('0x9'));router[_0x9c1b('0xa')]('/',auth[_0x9c1b('0xb')](),controller[_0x9c1b('0xc')]);router[_0x9c1b('0xa')](_0x9c1b('0xd'),auth[_0x9c1b('0xb')](),controller['describe']);router[_0x9c1b('0xa')](_0x9c1b('0xe'),auth[_0x9c1b('0xb')](),controller[_0x9c1b('0xf')]);router[_0x9c1b('0x10')]('/',auth[_0x9c1b('0xb')](),controller['create']);router['put'](_0x9c1b('0xe'),auth[_0x9c1b('0xb')](),controller[_0x9c1b('0x11')]);router[_0x9c1b('0x12')](_0x9c1b('0xe'),auth[_0x9c1b('0xb')](),controller[_0x9c1b('0x13')]);module[_0x9c1b('0x14')]=router;
\ No newline at end of file
index 842df18..99d8cfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c1=['sequelize','moment','exports','ENUM','blind','attended','STRING','Yes'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0xa2c1,0xd8));var _0x1a2c=function(_0x3714e8,_0x14a006){_0x3714e8=_0x3714e8-0x0;var _0x4038cf=_0xa2c1[_0x3714e8];return _0x4038cf;};'use strict';var Sequelize=require(_0x1a2c('0x0'));var moment=require(_0x1a2c('0x1'));module[_0x1a2c('0x2')]={'type':{'type':Sequelize[_0x1a2c('0x3')](_0x1a2c('0x4'),_0x1a2c('0x5'))},'result':{'type':Sequelize[_0x1a2c('0x6')]},'transfererchannel':{'type':Sequelize[_0x1a2c('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x1a2c('0x6')]},'transferercalleridname':{'type':Sequelize[_0x1a2c('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x1a2c('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x1a2c('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x1a2c('0x6')]},'transferercontext':{'type':Sequelize[_0x1a2c('0x6')]},'transfererexten':{'type':Sequelize[_0x1a2c('0x6')]},'transfererlinkedid':{'type':Sequelize[_0x1a2c('0x6')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x1a2c('0x6')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x1a2c('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x1a2c('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x1a2c('0x6')]},'transfereecontext':{'type':Sequelize[_0x1a2c('0x6')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x1a2c('0x6')]},'isexternal':{'type':Sequelize['ENUM'](_0x1a2c('0x7'),'No')},'context':{'type':Sequelize[_0x1a2c('0x6')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x03dc=['moment','ENUM','attended','STRING','Yes'];(function(_0x260adb,_0xd0e02d){var _0x2f1d1e=function(_0x1cb374){while(--_0x1cb374){_0x260adb['push'](_0x260adb['shift']());}};_0x2f1d1e(++_0xd0e02d);}(_0x03dc,0xf0));var _0xc03d=function(_0x501b53,_0x605c7e){_0x501b53=_0x501b53-0x0;var _0x2982de=_0x03dc[_0x501b53];return _0x2982de;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc03d('0x0'));module['exports']={'type':{'type':Sequelize[_0xc03d('0x1')]('blind',_0xc03d('0x2'))},'result':{'type':Sequelize[_0xc03d('0x3')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xc03d('0x3')]},'transfererconnectedlinenum':{'type':Sequelize[_0xc03d('0x3')]},'transfererconnectedlinename':{'type':Sequelize[_0xc03d('0x3')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0xc03d('0x3')]},'transfererexten':{'type':Sequelize[_0xc03d('0x3')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xc03d('0x3')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xc03d('0x3')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xc03d('0x3')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xc03d('0x3')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0xc03d('0x1')](_0xc03d('0x4'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0xc03d('0x3')]}};
\ No newline at end of file
index 8481fa4..e34c688 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3d=['sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','VoiceTransferReport','catch','show','params','rawAttributes','fields','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x2f3be2,_0x224419){var _0x4cf7b0=function(_0xa03718){while(--_0xa03718){_0x2f3be2['push'](_0x2f3be2['shift']());}};_0x4cf7b0(++_0x224419);}(_0xaa3d,0x173));var _0xdaa3=function(_0x7f66,_0x16f2ae){_0x7f66=_0x7f66-0x0;var _0x478705=_0xaa3d[_0x7f66];return _0x478705;};'use strict';var emlformat=require(_0xdaa3('0x0'));var rimraf=require(_0xdaa3('0x1'));var zipdir=require(_0xdaa3('0x2'));var jsonpatch=require(_0xdaa3('0x3'));var rp=require(_0xdaa3('0x4'));var moment=require(_0xdaa3('0x5'));var BPromise=require(_0xdaa3('0x6'));var Mustache=require(_0xdaa3('0x7'));var util=require(_0xdaa3('0x8'));var path=require('path');var sox=require(_0xdaa3('0x9'));var csv=require(_0xdaa3('0xa'));var ejs=require(_0xdaa3('0xb'));var fs=require('fs');var fs_extra=require(_0xdaa3('0xc'));var _=require(_0xdaa3('0xd'));var squel=require(_0xdaa3('0xe'));var crypto=require('crypto');var jsforce=require(_0xdaa3('0xf'));var deskjs=require(_0xdaa3('0x10'));var toCsv=require(_0xdaa3('0xa'));var querystring=require(_0xdaa3('0x11'));var Papa=require(_0xdaa3('0x12'));var Redis=require(_0xdaa3('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xdaa3('0x14'));var as=require(_0xdaa3('0x15'));var hardwareService=require(_0xdaa3('0x16'));var logger=require(_0xdaa3('0x17'))(_0xdaa3('0x18'));var utils=require(_0xdaa3('0x19'));var config=require(_0xdaa3('0x1a'));var licenseUtil=require(_0xdaa3('0x1b'));var db=require(_0xdaa3('0x1c'))['db'];function respondWithStatusCode(_0x18ce84,_0xe27a14){_0xe27a14=_0xe27a14||0xcc;return function(_0x2a7c42){if(_0x2a7c42){return _0x18ce84[_0xdaa3('0x1d')](_0xe27a14);}return _0x18ce84[_0xdaa3('0x1e')](_0xe27a14)[_0xdaa3('0x1f')]();};}function respondWithResult(_0x4de9b0,_0x24f17e){_0x24f17e=_0x24f17e||0xc8;return function(_0x400ce5){if(_0x400ce5){return _0x4de9b0[_0xdaa3('0x1e')](_0x24f17e)[_0xdaa3('0x20')](_0x400ce5);}};}function respondWithFilteredResult(_0x52fdc7,_0x3eccde){return function(_0x249e98){if(_0x249e98){var _0x587495=typeof _0x3eccde[_0xdaa3('0x21')]===_0xdaa3('0x22')&&typeof _0x3eccde['limit']==='undefined';var _0x1d27ce=_0x249e98[_0xdaa3('0x23')];var _0x20c0a0=_0x587495?0x0:_0x3eccde[_0xdaa3('0x21')];var _0x13daa5=_0x587495?_0x249e98[_0xdaa3('0x23')]:_0x3eccde[_0xdaa3('0x21')]+_0x3eccde[_0xdaa3('0x24')];var _0x2c97fc;if(_0x13daa5>=_0x1d27ce){_0x13daa5=_0x1d27ce;_0x2c97fc=0xc8;}else{_0x2c97fc=0xce;}_0x52fdc7[_0xdaa3('0x1e')](_0x2c97fc);return _0x52fdc7['set'](_0xdaa3('0x25'),_0x20c0a0+'-'+_0x13daa5+'/'+_0x1d27ce)[_0xdaa3('0x20')](_0x249e98);}return null;};}function patchUpdates(_0x105339){return function(_0x2a5db9){try{jsonpatch[_0xdaa3('0x26')](_0x2a5db9,_0x105339,!![]);}catch(_0x3015cb){return BPromise[_0xdaa3('0x27')](_0x3015cb);}return _0x2a5db9[_0xdaa3('0x28')]();};}function saveUpdates(_0x36c96c,_0x215da7){return function(_0x4ad60b){if(_0x4ad60b){return _0x4ad60b['update'](_0x36c96c)[_0xdaa3('0x29')](function(_0x3943ab){return _0x3943ab;});}return null;};}function removeEntity(_0x3710e9,_0x557c95){return function(_0x356a4b){if(_0x356a4b){return _0x356a4b[_0xdaa3('0x2a')]()[_0xdaa3('0x29')](function(){_0x3710e9[_0xdaa3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c325e,_0xdce47b){return function(_0x5590eb){if(!_0x5590eb){_0x4c325e[_0xdaa3('0x1d')](0x194);}return _0x5590eb;};}function handleError(_0x9a065e,_0x450eaf){_0x450eaf=_0x450eaf||0x1f4;return function(_0x8c6e30){logger[_0xdaa3('0x2b')](_0x8c6e30[_0xdaa3('0x2c')]);if(_0x8c6e30[_0xdaa3('0x2d')]){delete _0x8c6e30['name'];}_0x9a065e['status'](_0x450eaf)['send'](_0x8c6e30);};}exports[_0xdaa3('0x2e')]=function(_0x2b48a0,_0x18a7ec){var _0x5a8c1b={},_0x4373ae={},_0x299168={'count':0x0,'rows':[]};var _0x1d5ca7=_['map'](db['VoiceTransferReport']['rawAttributes'],function(_0x28f501){return{'name':_0x28f501[_0xdaa3('0x2f')],'type':_0x28f501[_0xdaa3('0x30')][_0xdaa3('0x31')]};});_0x4373ae[_0xdaa3('0x32')]=_[_0xdaa3('0x33')](_0x1d5ca7,'name');_0x4373ae[_0xdaa3('0x34')]=_[_0xdaa3('0x35')](_0x2b48a0['query']);_0x4373ae[_0xdaa3('0x36')]=_['intersection'](_0x4373ae[_0xdaa3('0x32')],_0x4373ae[_0xdaa3('0x34')]);_0x5a8c1b[_0xdaa3('0x37')]=_[_0xdaa3('0x38')](_0x4373ae[_0xdaa3('0x32')],qs['fields'](_0x2b48a0[_0xdaa3('0x34')]['fields']));_0x5a8c1b[_0xdaa3('0x37')]=_0x5a8c1b[_0xdaa3('0x37')][_0xdaa3('0x39')]?_0x5a8c1b[_0xdaa3('0x37')]:_0x4373ae['model'];if(!_0x2b48a0[_0xdaa3('0x34')][_0xdaa3('0x3a')](_0xdaa3('0x3b'))){_0x5a8c1b[_0xdaa3('0x24')]=qs['limit'](_0x2b48a0[_0xdaa3('0x34')][_0xdaa3('0x24')]);_0x5a8c1b['offset']=qs[_0xdaa3('0x21')](_0x2b48a0[_0xdaa3('0x34')][_0xdaa3('0x21')]);}_0x5a8c1b[_0xdaa3('0x3c')]=qs[_0xdaa3('0x3d')](_0x2b48a0[_0xdaa3('0x34')]['sort']);_0x5a8c1b[_0xdaa3('0x3e')]=qs[_0xdaa3('0x36')](_['pick'](_0x2b48a0[_0xdaa3('0x34')],_0x4373ae['filters']),_0x1d5ca7);if(_0x2b48a0['query'][_0xdaa3('0x3f')]){_0x5a8c1b[_0xdaa3('0x3e')]=_['merge'](_0x5a8c1b[_0xdaa3('0x3e')],{'$or':_['map'](_0x1d5ca7,function(_0x13c988){if(_0x13c988[_0xdaa3('0x30')]!==_0xdaa3('0x40')){var _0x430303={};_0x430303[_0x13c988[_0xdaa3('0x2d')]]={'$like':'%'+_0x2b48a0[_0xdaa3('0x34')][_0xdaa3('0x3f')]+'%'};return _0x430303;}})});}_0x5a8c1b=_[_0xdaa3('0x41')]({},_0x5a8c1b,_0x2b48a0[_0xdaa3('0x42')]);var _0x3f92db={'where':_0x5a8c1b[_0xdaa3('0x3e')]};return db['VoiceTransferReport'][_0xdaa3('0x23')](_0x3f92db)[_0xdaa3('0x29')](function(_0x45273f){_0x299168[_0xdaa3('0x23')]=_0x45273f;if(_0x2b48a0['query'][_0xdaa3('0x43')]){_0x5a8c1b['include']=[{'all':!![]}];}return db[_0xdaa3('0x44')]['findAll'](_0x5a8c1b);})[_0xdaa3('0x29')](function(_0x581c83){_0x299168['rows']=_0x581c83;return _0x299168;})['then'](respondWithFilteredResult(_0x18a7ec,_0x5a8c1b))[_0xdaa3('0x45')](handleError(_0x18a7ec,null));};exports[_0xdaa3('0x46')]=function(_0x1aae79,_0x1de2fc){var _0x2c9d26={'raw':!![],'where':{'id':_0x1aae79[_0xdaa3('0x47')]['id']}},_0x309382={};_0x309382[_0xdaa3('0x32')]=_[_0xdaa3('0x35')](db[_0xdaa3('0x44')][_0xdaa3('0x48')]);_0x309382[_0xdaa3('0x34')]=_[_0xdaa3('0x35')](_0x1aae79[_0xdaa3('0x34')]);_0x309382[_0xdaa3('0x36')]=_['intersection'](_0x309382[_0xdaa3('0x32')],_0x309382[_0xdaa3('0x34')]);_0x2c9d26['attributes']=_[_0xdaa3('0x38')](_0x309382[_0xdaa3('0x32')],qs[_0xdaa3('0x49')](_0x1aae79[_0xdaa3('0x34')][_0xdaa3('0x49')]));_0x2c9d26[_0xdaa3('0x37')]=_0x2c9d26[_0xdaa3('0x37')]['length']?_0x2c9d26[_0xdaa3('0x37')]:_0x309382['model'];if(_0x1aae79[_0xdaa3('0x34')][_0xdaa3('0x43')]){_0x2c9d26[_0xdaa3('0x4a')]=[{'all':!![]}];}_0x2c9d26=_[_0xdaa3('0x41')]({},_0x2c9d26,_0x1aae79[_0xdaa3('0x42')]);return db[_0xdaa3('0x44')][_0xdaa3('0x4b')](_0x2c9d26)[_0xdaa3('0x29')](handleEntityNotFound(_0x1de2fc,null))[_0xdaa3('0x29')](respondWithResult(_0x1de2fc,null))[_0xdaa3('0x45')](handleError(_0x1de2fc,null));};exports[_0xdaa3('0x4c')]=function(_0x22dd87,_0x2aa647){return db[_0xdaa3('0x44')][_0xdaa3('0x4c')](_0x22dd87[_0xdaa3('0x4d')],{})[_0xdaa3('0x29')](respondWithResult(_0x2aa647,0xc9))[_0xdaa3('0x45')](handleError(_0x2aa647,null));};exports[_0xdaa3('0x4e')]=function(_0x2869e2,_0x1e9fb2){if(_0x2869e2[_0xdaa3('0x4d')]['id']){delete _0x2869e2[_0xdaa3('0x4d')]['id'];}return db[_0xdaa3('0x44')][_0xdaa3('0x4b')]({'where':{'id':_0x2869e2[_0xdaa3('0x47')]['id']}})[_0xdaa3('0x29')](handleEntityNotFound(_0x1e9fb2,null))['then'](saveUpdates(_0x2869e2[_0xdaa3('0x4d')],null))[_0xdaa3('0x29')](respondWithResult(_0x1e9fb2,null))['catch'](handleError(_0x1e9fb2,null));};exports['destroy']=function(_0x149ace,_0x25e52b){return db[_0xdaa3('0x44')][_0xdaa3('0x4b')]({'where':{'id':_0x149ace[_0xdaa3('0x47')]['id']}})['then'](handleEntityNotFound(_0x25e52b,null))[_0xdaa3('0x29')](removeEntity(_0x25e52b,null))[_0xdaa3('0x45')](handleError(_0x25e52b,null));};exports['describe']=function(_0x531190,_0x1c599f){return db[_0xdaa3('0x44')][_0xdaa3('0x4f')]()[_0xdaa3('0x29')](respondWithResult(_0x1c599f,null))[_0xdaa3('0x45')](handleError(_0x1c599f,null));};
\ No newline at end of file
+var _0x128e=['filters','filter','where','VIRTUAL','merge','includeAll','findAll','rows','show','params','fields','length','include','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','hasOwnProperty','sort'];(function(_0x324598,_0x330e8b){var _0x6865fa=function(_0x1af70f){while(--_0x1af70f){_0x324598['push'](_0x324598['shift']());}};_0x6865fa(++_0x330e8b);}(_0x128e,0x143));var _0xe128=function(_0xc7df63,_0x169409){_0xc7df63=_0xc7df63-0x0;var _0x9e769=_0x128e[_0xc7df63];return _0x9e769;};'use strict';var emlformat=require(_0xe128('0x0'));var rimraf=require(_0xe128('0x1'));var zipdir=require(_0xe128('0x2'));var jsonpatch=require(_0xe128('0x3'));var rp=require('request-promise');var moment=require(_0xe128('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe128('0x5'));var path=require(_0xe128('0x6'));var sox=require(_0xe128('0x7'));var csv=require(_0xe128('0x8'));var ejs=require(_0xe128('0x9'));var fs=require('fs');var fs_extra=require(_0xe128('0xa'));var _=require(_0xe128('0xb'));var squel=require(_0xe128('0xc'));var crypto=require(_0xe128('0xd'));var jsforce=require(_0xe128('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe128('0x8'));var querystring=require(_0xe128('0xf'));var Papa=require(_0xe128('0x10'));var Redis=require(_0xe128('0x11'));var authService=require(_0xe128('0x12'));var qs=require(_0xe128('0x13'));var as=require(_0xe128('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe128('0x15'))(_0xe128('0x16'));var utils=require(_0xe128('0x17'));var config=require(_0xe128('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xe128('0x19'))['db'];function respondWithStatusCode(_0xa2ba75,_0x42413e){_0x42413e=_0x42413e||0xcc;return function(_0x3953f7){if(_0x3953f7){return _0xa2ba75[_0xe128('0x1a')](_0x42413e);}return _0xa2ba75[_0xe128('0x1b')](_0x42413e)[_0xe128('0x1c')]();};}function respondWithResult(_0x3df5d9,_0x25c784){_0x25c784=_0x25c784||0xc8;return function(_0x415d5b){if(_0x415d5b){return _0x3df5d9[_0xe128('0x1b')](_0x25c784)[_0xe128('0x1d')](_0x415d5b);}};}function respondWithFilteredResult(_0x54accd,_0x59b66c){return function(_0x5546a6){if(_0x5546a6){var _0x9c78b=typeof _0x59b66c[_0xe128('0x1e')]===_0xe128('0x1f')&&typeof _0x59b66c[_0xe128('0x20')]==='undefined';var _0x3ea637=_0x5546a6[_0xe128('0x21')];var _0x2cbf2f=_0x9c78b?0x0:_0x59b66c[_0xe128('0x1e')];var _0x52461a=_0x9c78b?_0x5546a6[_0xe128('0x21')]:_0x59b66c['offset']+_0x59b66c[_0xe128('0x20')];var _0x6ce310;if(_0x52461a>=_0x3ea637){_0x52461a=_0x3ea637;_0x6ce310=0xc8;}else{_0x6ce310=0xce;}_0x54accd[_0xe128('0x1b')](_0x6ce310);return _0x54accd[_0xe128('0x22')](_0xe128('0x23'),_0x2cbf2f+'-'+_0x52461a+'/'+_0x3ea637)[_0xe128('0x1d')](_0x5546a6);}return null;};}function patchUpdates(_0x501883){return function(_0x63008b){try{jsonpatch['apply'](_0x63008b,_0x501883,!![]);}catch(_0xfe4257){return BPromise['reject'](_0xfe4257);}return _0x63008b[_0xe128('0x24')]();};}function saveUpdates(_0x198765,_0x8f736f){return function(_0x4df3ae){if(_0x4df3ae){return _0x4df3ae[_0xe128('0x25')](_0x198765)[_0xe128('0x26')](function(_0xec462c){return _0xec462c;});}return null;};}function removeEntity(_0x55776d,_0xd3818d){return function(_0x1e66b4){if(_0x1e66b4){return _0x1e66b4[_0xe128('0x27')]()[_0xe128('0x26')](function(){_0x55776d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b40c9,_0x5acff8){return function(_0x43a1cd){if(!_0x43a1cd){_0x5b40c9[_0xe128('0x1a')](0x194);}return _0x43a1cd;};}function handleError(_0x362ac1,_0x4ee64d){_0x4ee64d=_0x4ee64d||0x1f4;return function(_0x5e445b){logger[_0xe128('0x28')](_0x5e445b[_0xe128('0x29')]);if(_0x5e445b['name']){delete _0x5e445b[_0xe128('0x2a')];}_0x362ac1['status'](_0x4ee64d)[_0xe128('0x2b')](_0x5e445b);};}exports['index']=function(_0x339bb4,_0x2a2808){var _0x4ed278={},_0x1fd1f1={},_0x2fba1c={'count':0x0,'rows':[]};var _0x544ae2=_[_0xe128('0x2c')](db[_0xe128('0x2d')][_0xe128('0x2e')],function(_0x595a4f){return{'name':_0x595a4f[_0xe128('0x2f')],'type':_0x595a4f[_0xe128('0x30')][_0xe128('0x31')]};});_0x1fd1f1[_0xe128('0x32')]=_[_0xe128('0x2c')](_0x544ae2,_0xe128('0x2a'));_0x1fd1f1[_0xe128('0x33')]=_[_0xe128('0x34')](_0x339bb4[_0xe128('0x33')]);_0x1fd1f1['filters']=_[_0xe128('0x35')](_0x1fd1f1[_0xe128('0x32')],_0x1fd1f1['query']);_0x4ed278[_0xe128('0x36')]=_[_0xe128('0x35')](_0x1fd1f1[_0xe128('0x32')],qs['fields'](_0x339bb4[_0xe128('0x33')]['fields']));_0x4ed278[_0xe128('0x36')]=_0x4ed278[_0xe128('0x36')]['length']?_0x4ed278['attributes']:_0x1fd1f1[_0xe128('0x32')];if(!_0x339bb4[_0xe128('0x33')][_0xe128('0x37')]('nolimit')){_0x4ed278[_0xe128('0x20')]=qs[_0xe128('0x20')](_0x339bb4['query'][_0xe128('0x20')]);_0x4ed278['offset']=qs['offset'](_0x339bb4[_0xe128('0x33')][_0xe128('0x1e')]);}_0x4ed278['order']=qs[_0xe128('0x38')](_0x339bb4[_0xe128('0x33')]['sort']);_0x4ed278['where']=qs[_0xe128('0x39')](_['pick'](_0x339bb4[_0xe128('0x33')],_0x1fd1f1[_0xe128('0x39')]),_0x544ae2);if(_0x339bb4[_0xe128('0x33')][_0xe128('0x3a')]){_0x4ed278[_0xe128('0x3b')]=_['merge'](_0x4ed278[_0xe128('0x3b')],{'$or':_[_0xe128('0x2c')](_0x544ae2,function(_0x1dc462){if(_0x1dc462['type']!==_0xe128('0x3c')){var _0x2381ac={};_0x2381ac[_0x1dc462['name']]={'$like':'%'+_0x339bb4[_0xe128('0x33')][_0xe128('0x3a')]+'%'};return _0x2381ac;}})});}_0x4ed278=_[_0xe128('0x3d')]({},_0x4ed278,_0x339bb4['options']);var _0x1738c9={'where':_0x4ed278[_0xe128('0x3b')]};return db[_0xe128('0x2d')]['count'](_0x1738c9)['then'](function(_0x5642da){_0x2fba1c['count']=_0x5642da;if(_0x339bb4[_0xe128('0x33')][_0xe128('0x3e')]){_0x4ed278['include']=[{'all':!![]}];}return db[_0xe128('0x2d')][_0xe128('0x3f')](_0x4ed278);})[_0xe128('0x26')](function(_0xdceb9d){_0x2fba1c[_0xe128('0x40')]=_0xdceb9d;return _0x2fba1c;})['then'](respondWithFilteredResult(_0x2a2808,_0x4ed278))['catch'](handleError(_0x2a2808,null));};exports[_0xe128('0x41')]=function(_0x3ca3bd,_0x42dee7){var _0x105387={'raw':!![],'where':{'id':_0x3ca3bd[_0xe128('0x42')]['id']}},_0x2df469={};_0x2df469[_0xe128('0x32')]=_[_0xe128('0x34')](db[_0xe128('0x2d')][_0xe128('0x2e')]);_0x2df469[_0xe128('0x33')]=_['keys'](_0x3ca3bd[_0xe128('0x33')]);_0x2df469[_0xe128('0x39')]=_[_0xe128('0x35')](_0x2df469['model'],_0x2df469[_0xe128('0x33')]);_0x105387[_0xe128('0x36')]=_[_0xe128('0x35')](_0x2df469[_0xe128('0x32')],qs['fields'](_0x3ca3bd[_0xe128('0x33')][_0xe128('0x43')]));_0x105387['attributes']=_0x105387[_0xe128('0x36')][_0xe128('0x44')]?_0x105387[_0xe128('0x36')]:_0x2df469[_0xe128('0x32')];if(_0x3ca3bd['query'][_0xe128('0x3e')]){_0x105387[_0xe128('0x45')]=[{'all':!![]}];}_0x105387=_['merge']({},_0x105387,_0x3ca3bd[_0xe128('0x46')]);return db['VoiceTransferReport'][_0xe128('0x47')](_0x105387)[_0xe128('0x26')](handleEntityNotFound(_0x42dee7,null))['then'](respondWithResult(_0x42dee7,null))[_0xe128('0x48')](handleError(_0x42dee7,null));};exports[_0xe128('0x49')]=function(_0x41e4e5,_0x261d59){return db[_0xe128('0x2d')][_0xe128('0x49')](_0x41e4e5[_0xe128('0x4a')],{})[_0xe128('0x26')](respondWithResult(_0x261d59,0xc9))['catch'](handleError(_0x261d59,null));};exports[_0xe128('0x25')]=function(_0x590798,_0x17d096){if(_0x590798[_0xe128('0x4a')]['id']){delete _0x590798['body']['id'];}return db['VoiceTransferReport'][_0xe128('0x47')]({'where':{'id':_0x590798[_0xe128('0x42')]['id']}})[_0xe128('0x26')](handleEntityNotFound(_0x17d096,null))[_0xe128('0x26')](saveUpdates(_0x590798['body'],null))[_0xe128('0x26')](respondWithResult(_0x17d096,null))[_0xe128('0x48')](handleError(_0x17d096,null));};exports['destroy']=function(_0x5a5bac,_0x888eba){return db[_0xe128('0x2d')][_0xe128('0x47')]({'where':{'id':_0x5a5bac[_0xe128('0x42')]['id']}})['then'](handleEntityNotFound(_0x888eba,null))['then'](removeEntity(_0x888eba,null))[_0xe128('0x48')](handleError(_0x888eba,null));};exports[_0xe128('0x4b')]=function(_0x3471df,_0x5795d2){return db[_0xe128('0x2d')]['describe']()[_0xe128('0x26')](respondWithResult(_0x5795d2,null))[_0xe128('0x48')](handleError(_0x5795d2,null));};
\ No newline at end of file
index cae0329..916c4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a33=['bluebird','request-promise','path','../../config/environment','./voiceTransferReport.attributes','exports','define','util','../../config/logger','api','moment'];(function(_0x28f351,_0x4db337){var _0x27ed9a=function(_0xd812da){while(--_0xd812da){_0x28f351['push'](_0x28f351['shift']());}};_0x27ed9a(++_0x4db337);}(_0x4a33,0x1a9));var _0x34a3=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x4a33[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0x34a3('0x0'));var logger=require(_0x34a3('0x1'))(_0x34a3('0x2'));var moment=require(_0x34a3('0x3'));var BPromise=require(_0x34a3('0x4'));var rp=require(_0x34a3('0x5'));var fs=require('fs');var path=require(_0x34a3('0x6'));var rimraf=require('rimraf');var config=require(_0x34a3('0x7'));var attributes=require(_0x34a3('0x8'));module[_0x34a3('0x9')]=function(_0x12e331,_0x99d00e){return _0x12e331[_0x34a3('0xa')]('VoiceTransferReport',attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9238=['path','rimraf','../../config/environment','./voiceTransferReport.attributes','report_call_transfer','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x46773d,_0x1de999){var _0x28fd61=function(_0x18f642){while(--_0x18f642){_0x46773d['push'](_0x46773d['shift']());}};_0x28fd61(++_0x1de999);}(_0x9238,0xb9));var _0x8923=function(_0x16256b,_0x28af5f){_0x16256b=_0x16256b-0x0;var _0x5934e6=_0x9238[_0x16256b];return _0x5934e6;};'use strict';var _=require(_0x8923('0x0'));var util=require('util');var logger=require(_0x8923('0x1'))(_0x8923('0x2'));var moment=require('moment');var BPromise=require(_0x8923('0x3'));var rp=require(_0x8923('0x4'));var fs=require('fs');var path=require(_0x8923('0x5'));var rimraf=require(_0x8923('0x6'));var config=require(_0x8923('0x7'));var attributes=require(_0x8923('0x8'));module['exports']=function(_0x565ca8,_0x10f888){return _0x565ca8['define']('VoiceTransferReport',attributes,{'tableName':_0x8923('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69c5516..bc59455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1600=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceTransferReport,\x20%s,\x20%s','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw'];(function(_0x4568a0,_0x3670bb){var _0x1bb2de=function(_0x3d9824){while(--_0x3d9824){_0x4568a0['push'](_0x4568a0['shift']());}};_0x1bb2de(++_0x3670bb);}(_0x1600,0x1e7));var _0x0160=function(_0x4b4706,_0x188138){_0x4b4706=_0x4b4706-0x0;var _0x481390=_0x1600[_0x4b4706];return _0x481390;};'use strict';var _=require(_0x0160('0x0'));var util=require('util');var moment=require(_0x0160('0x1'));var BPromise=require(_0x0160('0x2'));var rs=require(_0x0160('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0160('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0160('0x5'))(_0x0160('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0160('0x7')][_0x0160('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b3134,_0x3288ce,_0x5c04a5){return new BPromise(function(_0x424389,_0x35bafc){return client[_0x0160('0x9')](_0x2b3134,_0x5c04a5)[_0x0160('0xa')](function(_0x50f749){logger[_0x0160('0xb')]('VoiceTransferReport,\x20%s,\x20%s',_0x3288ce,_0x0160('0xc'));logger['debug'](_0x0160('0xd'),_0x3288ce,_0x0160('0xc'),JSON[_0x0160('0xe')](_0x50f749));if(_0x50f749[_0x0160('0xf')]){if(_0x50f749[_0x0160('0xf')][_0x0160('0x10')]===0x1f4){logger[_0x0160('0xf')](_0x0160('0x11'),_0x3288ce,_0x50f749[_0x0160('0xf')][_0x0160('0x12')]);return _0x35bafc(_0x50f749[_0x0160('0xf')][_0x0160('0x12')]);}logger['error'](_0x0160('0x11'),_0x3288ce,_0x50f749[_0x0160('0xf')][_0x0160('0x12')]);return _0x424389(_0x50f749[_0x0160('0xf')][_0x0160('0x12')]);}else{logger[_0x0160('0xb')](_0x0160('0x11'),_0x3288ce,_0x0160('0xc'));_0x424389(_0x50f749[_0x0160('0x13')][_0x0160('0x12')]);}})[_0x0160('0x14')](function(_0x247cc9){logger[_0x0160('0xf')]('VoiceTransferReport,\x20%s,\x20%s',_0x3288ce,_0x247cc9);_0x35bafc(_0x247cc9);});});}exports[_0x0160('0x15')]=function(_0x10ec35){var _0xc96d86=this;return new Promise(function(_0x3341db,_0x5a173c){return db[_0x0160('0x16')]['create'](_0x10ec35[_0x0160('0x17')],{'raw':_0x10ec35['options']?_0x10ec35[_0x0160('0x18')][_0x0160('0x19')]===undefined?!![]:![]:!![]})[_0x0160('0xa')](function(_0x3603cd){logger[_0x0160('0xb')](_0x0160('0x15'),_0x10ec35);logger[_0x0160('0x1a')](_0x0160('0x15'),_0x10ec35,JSON[_0x0160('0xe')](_0x3603cd));_0x3341db(_0x3603cd);})[_0x0160('0x14')](function(_0x3ddb48){logger[_0x0160('0xf')](_0x0160('0x15'),_0x3ddb48['message'],_0x10ec35);_0x5a173c(_0xc96d86[_0x0160('0xf')](0x1f4,_0x3ddb48[_0x0160('0x12')]));});});};
\ No newline at end of file
+var _0x705e=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateVoiceTransferReport','options','raw','debug','stringify'];(function(_0x11f3c5,_0x4766a3){var _0xc0b593=function(_0x39fd07){while(--_0x39fd07){_0x11f3c5['push'](_0x11f3c5['shift']());}};_0xc0b593(++_0x4766a3);}(_0x705e,0x1cc));var _0xe705=function(_0x2b2230,_0xe48d8e){_0x2b2230=_0x2b2230-0x0;var _0x20cd54=_0x705e[_0x2b2230];return _0x20cd54;};'use strict';var _=require(_0xe705('0x0'));var util=require(_0xe705('0x1'));var moment=require(_0xe705('0x2'));var BPromise=require(_0xe705('0x3'));var rs=require(_0xe705('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe705('0x5'))['db'];var utils=require(_0xe705('0x6'));var logger=require(_0xe705('0x7'))(_0xe705('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe705('0x9')][_0xe705('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19027a,_0x3cf93b,_0x429f32){return new BPromise(function(_0x58da7a,_0x1c7a8a){return client[_0xe705('0xb')](_0x19027a,_0x429f32)[_0xe705('0xc')](function(_0x52cce6){logger[_0xe705('0xd')](_0xe705('0xe'),_0x3cf93b,'request\x20sent');logger['debug'](_0xe705('0xf'),_0x3cf93b,_0xe705('0x10'),JSON['stringify'](_0x52cce6));if(_0x52cce6[_0xe705('0x11')]){if(_0x52cce6['error'][_0xe705('0x12')]===0x1f4){logger[_0xe705('0x11')](_0xe705('0xe'),_0x3cf93b,_0x52cce6[_0xe705('0x11')][_0xe705('0x13')]);return _0x1c7a8a(_0x52cce6[_0xe705('0x11')][_0xe705('0x13')]);}logger[_0xe705('0x11')](_0xe705('0xe'),_0x3cf93b,_0x52cce6[_0xe705('0x11')]['message']);return _0x58da7a(_0x52cce6[_0xe705('0x11')]['message']);}else{logger['info'](_0xe705('0xe'),_0x3cf93b,_0xe705('0x10'));_0x58da7a(_0x52cce6[_0xe705('0x14')]['message']);}})['catch'](function(_0x1cee3b){logger[_0xe705('0x11')](_0xe705('0xe'),_0x3cf93b,_0x1cee3b);_0x1c7a8a(_0x1cee3b);});});}exports[_0xe705('0x15')]=function(_0x14fd84){var _0x58e2bd=this;return new Promise(function(_0x10e650,_0x19cc4c){return db['VoiceTransferReport']['create'](_0x14fd84['body'],{'raw':_0x14fd84[_0xe705('0x16')]?_0x14fd84[_0xe705('0x16')][_0xe705('0x17')]===undefined?!![]:![]:!![]})[_0xe705('0xc')](function(_0x26da6a){logger['info']('CreateVoiceTransferReport',_0x14fd84);logger[_0xe705('0x18')](_0xe705('0x15'),_0x14fd84,JSON[_0xe705('0x19')](_0x26da6a));_0x10e650(_0x26da6a);})[_0xe705('0x1a')](function(_0x55f771){logger[_0xe705('0x11')](_0xe705('0x15'),_0x55f771[_0xe705('0x13')],_0x14fd84);_0x19cc4c(_0x58e2bd[_0xe705('0x11')](0x1f4,_0x55f771[_0xe705('0x13')]));});});};
\ No newline at end of file
index dae1697..1bfa61c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['Router','../../components/auth/service','./webbar.controller','isAuthenticated','originate','post','/hangup','isWebrtcLicence','/answer','/hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x419a88,_0x51bc2e){var _0x3cfaa3=function(_0x2858cf){while(--_0x2858cf){_0x419a88['push'](_0x419a88['shift']());}};_0x3cfaa3(++_0x51bc2e);}(_0x5b02,0xe9));var _0x25b0=function(_0x53b867,_0x19c6b3){_0x53b867=_0x53b867-0x0;var _0x4a5b28=_0x5b02[_0x53b867];return _0x4a5b28;};'use strict';var express=require(_0x25b0('0x0'));var router=express[_0x25b0('0x1')]();var auth=require(_0x25b0('0x2'));var controller=require(_0x25b0('0x3'));router['post']('/originate',auth[_0x25b0('0x4')](),auth['isWebrtcLicence'](),controller[_0x25b0('0x5')]);router[_0x25b0('0x6')](_0x25b0('0x7'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hangup']);router[_0x25b0('0x6')](_0x25b0('0x9'),auth['isAuthenticated'](),auth[_0x25b0('0x8')](),controller['answer']);router['post'](_0x25b0('0xa'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hold']);router[_0x25b0('0x6')](_0x25b0('0xb'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x6')](_0x25b0('0xd'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xe')]);router[_0x25b0('0x6')](_0x25b0('0xf'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
+var _0x70e0=['unhold','/calls','calls','/transfer','transfer','express','Router','../../components/auth/service','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','answer','post','/hold','/unhold'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x70e0,0x17b));var _0x070e=function(_0x1df2e0,_0x12f970){_0x1df2e0=_0x1df2e0-0x0;var _0x3e601c=_0x70e0[_0x1df2e0];return _0x3e601c;};'use strict';var express=require(_0x070e('0x0'));var router=express[_0x070e('0x1')]();var auth=require(_0x070e('0x2'));var controller=require('./webbar.controller');router['post'](_0x070e('0x3'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0x6')]);router['post'](_0x070e('0x7'),auth['isAuthenticated'](),auth[_0x070e('0x5')](),controller['hangup']);router['post']('/answer',auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0x8')]);router[_0x070e('0x9')](_0x070e('0xa'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller['hold']);router['post'](_0x070e('0xb'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0xc')]);router[_0x070e('0x9')](_0x070e('0xd'),auth[_0x070e('0x4')](),auth[_0x070e('0x5')](),controller[_0x070e('0xe')]);router[_0x070e('0x9')](_0x070e('0xf'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x070e('0x10')]);module['exports']=router;
\ No newline at end of file
index f1e7f79..1654acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ded=['User','findOne','agent','VoiceChannels','all','filter','rows','length','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','hangup','sessionId','user:%s','webbar:hangup','hangup\x20executed!','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','defaults','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','result','catch'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0x4ded,0x116));var _0xd4de=function(_0x206c9d,_0x33f813){_0x206c9d=_0x206c9d-0x0;var _0x1cdd63=_0x4ded[_0x206c9d];return _0x1cdd63;};'use strict';var path=require(_0xd4de('0x0'));var fs=require('fs');var _=require(_0xd4de('0x1'));var db=require(_0xd4de('0x2'))['db'];var config=require(_0xd4de('0x3'));var util=require(_0xd4de('0x4'));var BPromise=require(_0xd4de('0x5'));var jayson=require(_0xd4de('0x6'));var amiClient=jayson[_0xd4de('0x7')][_0xd4de('0x8')]({'port':0x232a});var logger=require(_0xd4de('0x9'))(_0xd4de('0xa'));var Redis=require(_0xd4de('0xb'));config['redis']=_[_0xd4de('0xc')](config[_0xd4de('0xd')],{'host':_0xd4de('0xe'),'port':0x18eb});var io=require(_0xd4de('0xf'))(new Redis(config[_0xd4de('0xd')]));var Schema=require(_0xd4de('0x10'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd4de('0x11')]},'callNumber':{'type':'string','required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0xd4de('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xd4de('0x11')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':[!![],_0xd4de('0x14')]},'transferNumber':{'type':_0xd4de('0x12'),'required':[!![],_0xd4de('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]},'sessionId':{'type':_0xd4de('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]}});var conferenceValidation=new Schema({'userId':{'type':_0xd4de('0x13'),'required':[!![],_0xd4de('0x11')]}});function emit(_0x325fba,_0x4b0a95,_0x5d0aeb){logger[_0xd4de('0x16')](_0x325fba,_0x4b0a95,JSON[_0xd4de('0x17')](_0x5d0aeb));io['to'](_0x325fba)[_0xd4de('0x18')](_0x4b0a95,_0x5d0aeb);}function handleError(_0x428aa2){return function(_0x5b1d1c){console['log'](_0xd4de('0x19'),_0x5b1d1c,_0x5b1d1c instanceof RangeError);logger['error'](_0x5b1d1c[_0xd4de('0x1a')]);if(_0x5b1d1c instanceof RangeError){if(_0x5b1d1c[_0xd4de('0x1b')]){delete _0x5b1d1c['name'];}_0x428aa2[_0xd4de('0x1c')](0x194)['send'](_0x5b1d1c);}else{if(_0x5b1d1c[_0xd4de('0x1b')]){delete _0x5b1d1c[_0xd4de('0x1b')];}_0x428aa2[_0xd4de('0x1c')](0x1f4)[_0xd4de('0x1d')](_0x5b1d1c);}};}function checkError(){return function(_0x5368f5){if(!_0x5368f5){throw new RangeError(_0xd4de('0x1e'));}return _0x5368f5;};}function respondWithRpcPromise(_0x47311c,_0x360e3d){return new BPromise(function(_0xdb3fc,_0x1c631a){var _0x2d092a=amiClient;return _0x2d092a[_0xd4de('0x1f')](_0x47311c,_0x360e3d)[_0xd4de('0x20')](function(_0x2f9de6){if(_0x2f9de6[_0xd4de('0x21')]){if(_0x2f9de6['error'][_0xd4de('0x22')]===0x1f4){return _0x1c631a(_0x2f9de6[_0xd4de('0x21')][_0xd4de('0x23')]);}return _0xdb3fc(_0x2f9de6[_0xd4de('0x21')][_0xd4de('0x23')]);}else{_0xdb3fc(_0x2f9de6[_0xd4de('0x24')]);}})[_0xd4de('0x25')](function(_0x36308c){_0x1c631a(_0x36308c);});});}function getAgent(_0x2aa82a){return db[_0xd4de('0x26')][_0xd4de('0x27')]({'where':{'id':_0x2aa82a,'role':_0xd4de('0x28')}})['then'](checkError());}function getAgentCheckSession(_0xe64e4e,_0x35e2fc){return new BPromise(function(_0x5005b0,_0x1d7d37){var _0x59b3c5=respondWithRpcPromise(_0xd4de('0x29'));var _0x32e407=getAgent(_0xe64e4e);Promise[_0xd4de('0x2a')]([_0x59b3c5,_0x32e407])['then'](function(_0xd4de93){var _0x36f2f1=_0xd4de93[0x0];var _0x17f0a=_0xd4de93[0x1];var _0x50cb73=_[_0xd4de('0x2b')](_0x36f2f1[_0xd4de('0x2c')],function(_0x55f9f9){return _0x55f9f9['UserId']==_0x17f0a['id']&&_0x55f9f9['sessionId']==_0x35e2fc;});if(_0x50cb73[_0xd4de('0x2d')]==0x1){_0x5005b0(_0x17f0a);}else{_0x1d7d37(new RangeError('sessionId\x20'+_0x35e2fc+_0xd4de('0x2e')));}});});}exports[_0xd4de('0x2f')]=function(_0x3bc54d,_0x2e08eb){logger['info'](_0xd4de('0x30'),_0x3bc54d[_0xd4de('0x31')]);var _0x4e43a1=originateValidation[_0xd4de('0x10')](_0x3bc54d[_0xd4de('0x31')]);if(_0x4e43a1['length']>0x0){return _0x2e08eb['status'](0x190)[_0xd4de('0x32')](_0x4e43a1);}var _0x40114b=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x33')];var _0x4f565b=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x34')];var _0x4def30=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x35')];var _0x1e744e=_0x3bc54d[_0xd4de('0x31')][_0xd4de('0x36')];return getAgent(_0x40114b)[_0xd4de('0x20')](function(_0x53441c){logger['info'](_0xd4de('0x37'),_0x53441c[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x53441c[_0xd4de('0x1b')]),_0xd4de('0x39'),{'callNumber':_0x4f565b,'callerId':_0x4def30,'callbackUrl':_0x1e744e});return _0x2e08eb['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x3a')});})[_0xd4de('0x25')](handleError(_0x2e08eb));};exports[_0xd4de('0x3b')]=function(_0x4c5898,_0x53d7dc){logger[_0xd4de('0x16')]('hangup\x20fired:',_0x4c5898[_0xd4de('0x31')]);var _0x4de12c=hangupValidation[_0xd4de('0x10')](_0x4c5898[_0xd4de('0x31')]);if(_0x4de12c[_0xd4de('0x2d')]>0x0){return _0x53d7dc[_0xd4de('0x1c')](0x190)['json'](_0x4de12c);}var _0x21209d=_0x4c5898['body'][_0xd4de('0x33')];var _0x280f76=_0x4c5898[_0xd4de('0x31')][_0xd4de('0x3c')];return getAgent(_0x21209d)[_0xd4de('0x20')](function(_0x13c256){logger[_0xd4de('0x16')]('entityFound:',_0x13c256[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')](_0xd4de('0x3d'),_0x13c256[_0xd4de('0x1b')]),_0xd4de('0x3e'),{'sessionId':_0x280f76});return _0x53d7dc['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x3f')});})[_0xd4de('0x25')](handleError(_0x53d7dc));};exports['answer']=function(_0x3eaa14,_0x1f2ff4){logger[_0xd4de('0x16')]('answer\x20fired:',_0x3eaa14[_0xd4de('0x31')]);var _0x10a42c=answerValidation[_0xd4de('0x10')](_0x3eaa14[_0xd4de('0x31')]);if(_0x10a42c[_0xd4de('0x2d')]>0x0){return _0x1f2ff4[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x10a42c);}var _0x5ecbbd=_0x3eaa14[_0xd4de('0x31')][_0xd4de('0x33')];var _0x58082a=_0x3eaa14['body'][_0xd4de('0x3c')];return getAgent(_0x5ecbbd)[_0xd4de('0x20')](function(_0x20245a){logger['info']('entityFound:',_0x20245a[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x20245a[_0xd4de('0x1b')]),_0xd4de('0x40'),{'sessionId':_0x58082a});return _0x1f2ff4[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':'answer\x20executed!'});})[_0xd4de('0x25')](handleError(_0x1f2ff4));};exports[_0xd4de('0x41')]=function(_0x579700,_0x3745ef){logger[_0xd4de('0x16')](_0xd4de('0x42'),_0x579700['body']);var _0x2f775c=holdValidation[_0xd4de('0x10')](_0x579700[_0xd4de('0x31')]);if(_0x2f775c[_0xd4de('0x2d')]>0x0){return _0x3745ef[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x2f775c);}var _0x40bf55=_0x579700[_0xd4de('0x31')][_0xd4de('0x33')];var _0x2e46b3=_0x579700['body'][_0xd4de('0x3c')];return getAgent(_0x40bf55)[_0xd4de('0x20')](function(_0x178daf){logger['info'](_0xd4de('0x37'),_0x178daf[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')](_0xd4de('0x3d'),_0x178daf[_0xd4de('0x1b')]),_0xd4de('0x43'),{'sessionId':_0x2e46b3});return _0x3745ef[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x44')});})[_0xd4de('0x25')](handleError(_0x3745ef));};exports['unhold']=function(_0x3e4c7f,_0x26d032){logger[_0xd4de('0x16')](_0xd4de('0x45'),_0x3e4c7f[_0xd4de('0x31')]);var _0x584548=unholdValidation['validate'](_0x3e4c7f[_0xd4de('0x31')]);if(_0x584548[_0xd4de('0x2d')]>0x0){return _0x26d032['status'](0x190)['json'](_0x584548);}var _0x2d8589=_0x3e4c7f[_0xd4de('0x31')][_0xd4de('0x33')];var _0x199440=_0x3e4c7f[_0xd4de('0x31')][_0xd4de('0x3c')];return getAgent(_0x2d8589)[_0xd4de('0x20')](function(_0x4801de){logger[_0xd4de('0x16')](_0xd4de('0x37'),_0x4801de[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x4801de[_0xd4de('0x1b')]),_0xd4de('0x46'),{'sessionId':_0x199440});return _0x26d032[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'error':![],'message':_0xd4de('0x47')});})[_0xd4de('0x25')](handleError(_0x26d032));};exports['calls']=function(_0x70a48b,_0x5896c5){logger['info'](_0xd4de('0x48'),_0x5896c5[_0xd4de('0x31')]);var _0x2d1e45=callsValidation[_0xd4de('0x10')](_0x70a48b['body']);if(_0x2d1e45[_0xd4de('0x2d')]>0x0){return _0x5896c5[_0xd4de('0x1c')](0x190)[_0xd4de('0x32')](_0x2d1e45);}var _0x117052=_0x70a48b[_0xd4de('0x31')]['userId'];var _0x5496f7=respondWithRpcPromise('VoiceChannels');var _0x3f6d8c=getAgent(_0x117052);return Promise[_0xd4de('0x2a')]([_0x5496f7,_0x3f6d8c])[_0xd4de('0x20')](function(_0x3c5f7a){var _0x5be7d2=_0x3c5f7a[0x0];var _0x35ba6f=_0x3c5f7a[0x1];var _0x146eaa=_[_0xd4de('0x2b')](_0x5be7d2[_0xd4de('0x2c')],function(_0x51e239){return _0x51e239[_0xd4de('0x49')]==_0x35ba6f['id'];});return _0x5896c5[_0xd4de('0x1c')](0xc8)[_0xd4de('0x32')]({'count':_0x146eaa[_0xd4de('0x2d')],'rows':_0x146eaa});})['catch'](handleError(_0x5896c5));};exports['conference']=function(_0x5aeab7,_0x42e40b){logger[_0xd4de('0x16')](_0xd4de('0x4a'),_0x5aeab7['body']);var _0x18f2c3=conferenceValidation[_0xd4de('0x10')](_0x5aeab7[_0xd4de('0x31')]);if(_0x18f2c3['length']>0x0){return _0x42e40b[_0xd4de('0x1c')](0x190)['json'](_0x18f2c3);}var _0x2ee7c1=_0x5aeab7[_0xd4de('0x31')][_0xd4de('0x33')];return getAgent(_0x2ee7c1)[_0xd4de('0x20')](function(_0x9b082d){logger[_0xd4de('0x16')](_0xd4de('0x37'),_0x9b082d[_0xd4de('0x1b')]);emit(util['format'](_0xd4de('0x3d'),_0x9b082d['name']),_0xd4de('0x4b'));return _0x42e40b[_0xd4de('0x1c')](0xc8)['json']({'error':![],'message':_0xd4de('0x4c')});})[_0xd4de('0x25')](handleError(_0x42e40b));};exports[_0xd4de('0x4d')]=function(_0x4652b9,_0x26a803){logger[_0xd4de('0x16')](_0xd4de('0x4e'),_0x4652b9[_0xd4de('0x31')]);var _0x1c2f97=transferValidation[_0xd4de('0x10')](_0x4652b9[_0xd4de('0x31')]);if(_0x1c2f97[_0xd4de('0x2d')]>0x0){return _0x26a803[_0xd4de('0x1c')](0x190)['json'](_0x1c2f97);}var _0x38d703=_0x4652b9[_0xd4de('0x31')][_0xd4de('0x33')];var _0x331f08=_0x4652b9[_0xd4de('0x31')][_0xd4de('0x3c')];var _0x26bf55=_0x4652b9[_0xd4de('0x31')]['transferNumber'];return getAgent(_0x38d703)[_0xd4de('0x20')](function(_0x538d98){logger['info']('entityFound:',_0x538d98[_0xd4de('0x1b')]);emit(util[_0xd4de('0x38')]('user:%s',_0x538d98['name']),'webbar:transfer',{'sessionId':_0x331f08,'transferNumber':_0x26bf55});return _0x26a803['status'](0xc8)[_0xd4de('0x32')]({'error':![],'message':'transfer\x20executed!'});})[_0xd4de('0x25')](handleError(_0x26a803));};
\ No newline at end of file
+var _0xd87e=['transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','client','../../config/logger','webbarapi','redis','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required','number','transferNumber\x20is\x20required','info','emit','log','error','stack','name','status','send','then','code','message','result','catch','User','findOne','agent','all','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','entityFound:','format','user:%s','webbar:originate','json','originate\x20executed!','sessionId','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','filter','conference','conference\x20fired:','conference\x20executed!','transfer\x20fired:'];(function(_0x22db94,_0x4c47c0){var _0x3be6ec=function(_0x497130){while(--_0x497130){_0x22db94['push'](_0x22db94['shift']());}};_0x3be6ec(++_0x4c47c0);}(_0xd87e,0x1bf));var _0xed87=function(_0x7d40bc,_0x5c9ee1){_0x7d40bc=_0x7d40bc-0x0;var _0x2e955a=_0xd87e[_0x7d40bc];return _0x2e955a;};'use strict';var path=require(_0xed87('0x0'));var fs=require('fs');var _=require(_0xed87('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xed87('0x2'));var util=require(_0xed87('0x3'));var BPromise=require(_0xed87('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0xed87('0x5')]['http']({'port':0x232a});var logger=require(_0xed87('0x6'))(_0xed87('0x7'));var Redis=require('ioredis');config[_0xed87('0x8')]=_['defaults'](config['redis'],{'host':_0xed87('0x9'),'port':0x18eb});var io=require(_0xed87('0xa'))(new Redis(config[_0xed87('0x8')]));var Schema=require(_0xed87('0xb'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xed87('0xc')]},'callNumber':{'type':_0xed87('0xd'),'required':[!![],_0xed87('0xe')]},'callerId':{'type':_0xed87('0xd')},'callbackUrl':{'type':_0xed87('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xed87('0xd'),'required':[!![],_0xed87('0x10')]}});var holdValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]},'sessionId':{'type':_0xed87('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xed87('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]}});var conferenceValidation=new Schema({'userId':{'type':_0xed87('0xf'),'required':[!![],_0xed87('0xc')]}});function emit(_0xd34e0e,_0x173413,_0x2563e4){logger[_0xed87('0x11')](_0xd34e0e,_0x173413,JSON['stringify'](_0x2563e4));io['to'](_0xd34e0e)[_0xed87('0x12')](_0x173413,_0x2563e4);}function handleError(_0x18ab7d){return function(_0x2c386a){console[_0xed87('0x13')]('handleError:',_0x2c386a,_0x2c386a instanceof RangeError);logger[_0xed87('0x14')](_0x2c386a[_0xed87('0x15')]);if(_0x2c386a instanceof RangeError){if(_0x2c386a[_0xed87('0x16')]){delete _0x2c386a[_0xed87('0x16')];}_0x18ab7d[_0xed87('0x17')](0x194)[_0xed87('0x18')](_0x2c386a);}else{if(_0x2c386a[_0xed87('0x16')]){delete _0x2c386a[_0xed87('0x16')];}_0x18ab7d[_0xed87('0x17')](0x1f4)['send'](_0x2c386a);}};}function checkError(){return function(_0x5a7329){if(!_0x5a7329){throw new RangeError('NotFound');}return _0x5a7329;};}function respondWithRpcPromise(_0x47c121,_0x42609e){return new BPromise(function(_0x5d3ec8,_0x4191a7){var _0x2b0b98=amiClient;return _0x2b0b98['request'](_0x47c121,_0x42609e)[_0xed87('0x19')](function(_0x505733){if(_0x505733[_0xed87('0x14')]){if(_0x505733[_0xed87('0x14')][_0xed87('0x1a')]===0x1f4){return _0x4191a7(_0x505733[_0xed87('0x14')][_0xed87('0x1b')]);}return _0x5d3ec8(_0x505733['error'][_0xed87('0x1b')]);}else{_0x5d3ec8(_0x505733[_0xed87('0x1c')]);}})[_0xed87('0x1d')](function(_0x320bcc){_0x4191a7(_0x320bcc);});});}function getAgent(_0x31c600){return db[_0xed87('0x1e')][_0xed87('0x1f')]({'where':{'id':_0x31c600,'role':_0xed87('0x20')}})[_0xed87('0x19')](checkError());}function getAgentCheckSession(_0x38f5c,_0x469181){return new BPromise(function(_0x341a35,_0x16a541){var _0x2b86e2=respondWithRpcPromise('VoiceChannels');var _0xb32b1c=getAgent(_0x38f5c);Promise[_0xed87('0x21')]([_0x2b86e2,_0xb32b1c])['then'](function(_0x3dff74){var _0x33c367=_0x3dff74[0x0];var _0x21c93b=_0x3dff74[0x1];var _0x4b259e=_['filter'](_0x33c367[_0xed87('0x22')],function(_0x428b75){return _0x428b75[_0xed87('0x23')]==_0x21c93b['id']&&_0x428b75['sessionId']==_0x469181;});if(_0x4b259e[_0xed87('0x24')]==0x1){_0x341a35(_0x21c93b);}else{_0x16a541(new RangeError(_0xed87('0x25')+_0x469181+_0xed87('0x26')));}});});}exports[_0xed87('0x27')]=function(_0x114e60,_0x46b9f9){logger[_0xed87('0x11')](_0xed87('0x28'),_0x114e60[_0xed87('0x29')]);var _0x4c0bc0=originateValidation[_0xed87('0xb')](_0x114e60[_0xed87('0x29')]);if(_0x4c0bc0['length']>0x0){return _0x46b9f9[_0xed87('0x17')](0x190)['json'](_0x4c0bc0);}var _0x4430aa=_0x114e60[_0xed87('0x29')][_0xed87('0x2a')];var _0x46b41b=_0x114e60[_0xed87('0x29')][_0xed87('0x2b')];var _0xbd7b69=_0x114e60[_0xed87('0x29')][_0xed87('0x2c')];var _0x6f7b23=_0x114e60[_0xed87('0x29')]['callbackUrl'];return getAgent(_0x4430aa)[_0xed87('0x19')](function(_0x167de8){logger['info'](_0xed87('0x2d'),_0x167de8['name']);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x167de8['name']),_0xed87('0x30'),{'callNumber':_0x46b41b,'callerId':_0xbd7b69,'callbackUrl':_0x6f7b23});return _0x46b9f9[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x32')});})[_0xed87('0x1d')](handleError(_0x46b9f9));};exports['hangup']=function(_0x1ca26d,_0x525a11){logger[_0xed87('0x11')]('hangup\x20fired:',_0x1ca26d[_0xed87('0x29')]);var _0xb6fe59=hangupValidation[_0xed87('0xb')](_0x1ca26d[_0xed87('0x29')]);if(_0xb6fe59[_0xed87('0x24')]>0x0){return _0x525a11[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0xb6fe59);}var _0x161491=_0x1ca26d[_0xed87('0x29')]['userId'];var _0x4b49f8=_0x1ca26d[_0xed87('0x29')][_0xed87('0x33')];return getAgent(_0x161491)[_0xed87('0x19')](function(_0x325112){logger[_0xed87('0x11')](_0xed87('0x2d'),_0x325112['name']);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x325112[_0xed87('0x16')]),'webbar:hangup',{'sessionId':_0x4b49f8});return _0x525a11[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x34')});})[_0xed87('0x1d')](handleError(_0x525a11));};exports[_0xed87('0x35')]=function(_0x151179,_0x315e13){logger[_0xed87('0x11')](_0xed87('0x36'),_0x151179[_0xed87('0x29')]);var _0x5c6925=answerValidation[_0xed87('0xb')](_0x151179[_0xed87('0x29')]);if(_0x5c6925[_0xed87('0x24')]>0x0){return _0x315e13['status'](0x190)['json'](_0x5c6925);}var _0xa31eec=_0x151179[_0xed87('0x29')][_0xed87('0x2a')];var _0x41a658=_0x151179['body'][_0xed87('0x33')];return getAgent(_0xa31eec)[_0xed87('0x19')](function(_0x57fa19){logger[_0xed87('0x11')](_0xed87('0x2d'),_0x57fa19[_0xed87('0x16')]);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x57fa19[_0xed87('0x16')]),_0xed87('0x37'),{'sessionId':_0x41a658});return _0x315e13[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x38')});})[_0xed87('0x1d')](handleError(_0x315e13));};exports['hold']=function(_0x168d7a,_0x122369){logger[_0xed87('0x11')](_0xed87('0x39'),_0x168d7a[_0xed87('0x29')]);var _0x1d3f37=holdValidation[_0xed87('0xb')](_0x168d7a[_0xed87('0x29')]);if(_0x1d3f37[_0xed87('0x24')]>0x0){return _0x122369[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0x1d3f37);}var _0x26c8f4=_0x168d7a[_0xed87('0x29')][_0xed87('0x2a')];var _0x2ed9c3=_0x168d7a[_0xed87('0x29')][_0xed87('0x33')];return getAgent(_0x26c8f4)['then'](function(_0x2c7bef){logger[_0xed87('0x11')](_0xed87('0x2d'),_0x2c7bef['name']);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x2c7bef['name']),_0xed87('0x3a'),{'sessionId':_0x2ed9c3});return _0x122369[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x3b')});})['catch'](handleError(_0x122369));};exports[_0xed87('0x3c')]=function(_0x436e15,_0x3ca34c){logger[_0xed87('0x11')](_0xed87('0x3d'),_0x436e15[_0xed87('0x29')]);var _0x242b57=unholdValidation[_0xed87('0xb')](_0x436e15[_0xed87('0x29')]);if(_0x242b57[_0xed87('0x24')]>0x0){return _0x3ca34c[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0x242b57);}var _0x2e5a9f=_0x436e15['body'][_0xed87('0x2a')];var _0x4ea4e3=_0x436e15[_0xed87('0x29')][_0xed87('0x33')];return getAgent(_0x2e5a9f)[_0xed87('0x19')](function(_0x27ad77){logger[_0xed87('0x11')](_0xed87('0x2d'),_0x27ad77[_0xed87('0x16')]);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x27ad77[_0xed87('0x16')]),'webbar:unhold',{'sessionId':_0x4ea4e3});return _0x3ca34c[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x3e')});})[_0xed87('0x1d')](handleError(_0x3ca34c));};exports[_0xed87('0x3f')]=function(_0x44b176,_0x1dbadc){logger[_0xed87('0x11')](_0xed87('0x40'),_0x1dbadc[_0xed87('0x29')]);var _0x32db1f=callsValidation['validate'](_0x44b176['body']);if(_0x32db1f[_0xed87('0x24')]>0x0){return _0x1dbadc[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0x32db1f);}var _0x2ef4a9=_0x44b176[_0xed87('0x29')]['userId'];var _0x7e6738=respondWithRpcPromise(_0xed87('0x41'));var _0x184e99=getAgent(_0x2ef4a9);return Promise[_0xed87('0x21')]([_0x7e6738,_0x184e99])[_0xed87('0x19')](function(_0x43034f){var _0x15e3bc=_0x43034f[0x0];var _0x1391a2=_0x43034f[0x1];var _0x2ffffa=_[_0xed87('0x42')](_0x15e3bc[_0xed87('0x22')],function(_0x227d19){return _0x227d19[_0xed87('0x23')]==_0x1391a2['id'];});return _0x1dbadc[_0xed87('0x17')](0xc8)['json']({'count':_0x2ffffa[_0xed87('0x24')],'rows':_0x2ffffa});})[_0xed87('0x1d')](handleError(_0x1dbadc));};exports[_0xed87('0x43')]=function(_0x423076,_0x1c6578){logger[_0xed87('0x11')](_0xed87('0x44'),_0x423076[_0xed87('0x29')]);var _0x4b1cc5=conferenceValidation[_0xed87('0xb')](_0x423076[_0xed87('0x29')]);if(_0x4b1cc5[_0xed87('0x24')]>0x0){return _0x1c6578[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0x4b1cc5);}var _0x306d9a=_0x423076['body']['userId'];return getAgent(_0x306d9a)[_0xed87('0x19')](function(_0x176bc4){logger[_0xed87('0x11')](_0xed87('0x2d'),_0x176bc4[_0xed87('0x16')]);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0x176bc4[_0xed87('0x16')]),'webbar:conference');return _0x1c6578[_0xed87('0x17')](0xc8)['json']({'error':![],'message':_0xed87('0x45')});})[_0xed87('0x1d')](handleError(_0x1c6578));};exports['transfer']=function(_0x11b3a8,_0x30f9d0){logger['info'](_0xed87('0x46'),_0x11b3a8[_0xed87('0x29')]);var _0x2dd1e8=transferValidation[_0xed87('0xb')](_0x11b3a8[_0xed87('0x29')]);if(_0x2dd1e8['length']>0x0){return _0x30f9d0[_0xed87('0x17')](0x190)[_0xed87('0x31')](_0x2dd1e8);}var _0x263810=_0x11b3a8[_0xed87('0x29')]['userId'];var _0x58279a=_0x11b3a8[_0xed87('0x29')][_0xed87('0x33')];var _0x52b53f=_0x11b3a8[_0xed87('0x29')][_0xed87('0x47')];return getAgent(_0x263810)[_0xed87('0x19')](function(_0xa1c262){logger[_0xed87('0x11')](_0xed87('0x2d'),_0xa1c262[_0xed87('0x16')]);emit(util[_0xed87('0x2e')](_0xed87('0x2f'),_0xa1c262[_0xed87('0x16')]),_0xed87('0x48'),{'sessionId':_0x58279a,'transferNumber':_0x52b53f});return _0x30f9d0[_0xed87('0x17')](0xc8)[_0xed87('0x31')]({'error':![],'message':_0xed87('0x49')});})['catch'](handleError(_0x30f9d0));};
\ No newline at end of file
index 26175c8..764bfc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','getApplications','create','post','addDisposition','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','/:id','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1fb96f,_0x2c4eee){var _0xccb259=function(_0x271c29){while(--_0x271c29){_0x1fb96f['push'](_0x1fb96f['shift']());}};_0xccb259(++_0x2c4eee);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x3f9a86,_0x36b4e3){_0x3f9a86=_0x3f9a86-0x0;var _0x4b7503=_0xf4f4[_0x3f9a86];return _0x4b7503;};'use strict';var multer=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var path=require('path');var timeout=require(_0x4f4f('0x2'));var express=require(_0x4f4f('0x3'));var router=express[_0x4f4f('0x4')]();var fs_extra=require(_0x4f4f('0x5'));var auth=require(_0x4f4f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4f4f('0x7'));var controller=require('./whatsappAccount.controller');router[_0x4f4f('0x8')]('/',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xa')]);router[_0x4f4f('0x8')](_0x4f4f('0xb'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xc')]);router[_0x4f4f('0x8')]('/:id',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xd')]);router[_0x4f4f('0x8')](_0x4f4f('0xe'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0xf')]);router[_0x4f4f('0x8')](_0x4f4f('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x4f4f('0x8')](_0x4f4f('0x11'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x12')]);router[_0x4f4f('0x8')](_0x4f4f('0x13'),auth['isAuthenticated'](),controller[_0x4f4f('0x14')]);router['post']('/',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x15')]);router[_0x4f4f('0x16')](_0x4f4f('0xe'),auth['isAuthenticated'](),controller[_0x4f4f('0x17')]);router['post']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x4f4f('0x18')]);router[_0x4f4f('0x16')](_0x4f4f('0x11'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x19')]);router[_0x4f4f('0x16')](_0x4f4f('0x13'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x1a')]);router[_0x4f4f('0x16')](_0x4f4f('0x1b'),controller[_0x4f4f('0x1c')]);router['post'](_0x4f4f('0x1d'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x1e')]);router[_0x4f4f('0x1f')](_0x4f4f('0x20'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x21')]);router[_0x4f4f('0x22')](_0x4f4f('0x20'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x23')]);router[_0x4f4f('0x22')](_0x4f4f('0xe'),auth[_0x4f4f('0x9')](),controller['removeDispositions']);router['delete']('/:id/canned_answers',auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x24')]);router['delete'](_0x4f4f('0x11'),auth[_0x4f4f('0x9')](),controller[_0x4f4f('0x25')]);module[_0x4f4f('0x26')]=router;
\ No newline at end of file
+var _0xef0f=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','removeAnswers','exports'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xef0f,0x168));var _0xfef0=function(_0x30f221,_0x37df21){_0x30f221=_0x30f221-0x0;var _0x23fbed=_0xef0f[_0x30f221];return _0x23fbed;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0x8')](_0xfef0('0xf'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x8')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x8')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller['getAgents']);router[_0xfef0('0x8')](_0xfef0('0x14'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x15')]);router[_0xfef0('0x16')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x17')]);router['post'](_0xfef0('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x18')]);router[_0xfef0('0x16')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x19')]);router[_0xfef0('0x16')]('/:id/applications',auth[_0xfef0('0x9')](),controller[_0xfef0('0x1a')]);router[_0xfef0('0x16')](_0xfef0('0x1b'),controller[_0xfef0('0x1c')]);router['post'](_0xfef0('0x1d'),auth['isAuthenticated'](),controller[_0xfef0('0x1e')]);router[_0xfef0('0x1f')](_0xfef0('0xd'),auth['isAuthenticated'](),controller[_0xfef0('0x20')]);router['delete'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0xfef0('0x9')](),controller['removeDispositions']);router[_0xfef0('0x21')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x22')]);router[_0xfef0('0x21')](_0xfef0('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xfef0('0x23')]=router;
\ No newline at end of file
index b879c78..1472469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe420=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','STRING','generate','twilio','BOOLEAN','INTEGER'];(function(_0x2e6f50,_0x484810){var _0x3b4a87=function(_0x12fbca){while(--_0x12fbca){_0x2e6f50['push'](_0x2e6f50['shift']());}};_0x3b4a87(++_0x484810);}(_0xe420,0x1e8));var _0x0e42=function(_0x163cea,_0x3a4d77){_0x163cea=_0x163cea-0x0;var _0x40dc8f=_0xe420[_0x163cea];return _0x40dc8f;};'use strict';var Sequelize=require(_0x0e42('0x0'));var rs=require(_0x0e42('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x0e42('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x0e42('0x2')],'defaultValue':function(){return rs[_0x0e42('0x3')]();}},'phone':{'type':Sequelize[_0x0e42('0x2')]},'type':{'type':Sequelize['ENUM'](_0x0e42('0x4'),'sinch')},'accountSid':{'type':Sequelize[_0x0e42('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x0e42('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x0e42('0x5')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0e42('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0e42('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0e42('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0e42('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0e42('0x6')],'comment':_0x0e42('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x0e42('0x5')],'defaultValue':![],'comment':_0x0e42('0x8'),'set':function(_0x51d519){if(!_0x51d519){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0x0e42('0x9')](_0x0e42('0xa'),_0x51d519);}},'description':{'type':Sequelize[_0x0e42('0x2')]}};
\ No newline at end of file
+var _0x5251=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','STRING','generate','ENUM','twilio','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x547555,_0x1a4db4){var _0x3b842d=function(_0x4502e5){while(--_0x4502e5){_0x547555['push'](_0x547555['shift']());}};_0x3b842d(++_0x1a4db4);}(_0x5251,0xc8));var _0x1525=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5251[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x1525('0x0'));module[_0x1525('0x1')]={'name':{'type':Sequelize[_0x1525('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x1525('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x1525('0x2')],'defaultValue':function(){return rs[_0x1525('0x3')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x1525('0x4')](_0x1525('0x5'),'sinch')},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x1525('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x1525('0x6');}},'notificationSound':{'type':Sequelize[_0x1525('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x1525('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x1525('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x1525('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1525('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x1525('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x1525('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x1525('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x1525('0x7')],'defaultValue':![],'comment':_0x1525('0xa'),'set':function(_0x2e7fcb){if(!_0x2e7fcb){this[_0x1525('0xb')](_0x1525('0xc'),null);}this[_0x1525('0xb')](_0x1525('0xd'),_0x2e7fcb);}},'description':{'type':Sequelize[_0x1525('0x2')]}};
\ No newline at end of file
index b25e426..cd10080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db3=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','WhatsappAccountId','Disposition','findOne','hasOwnProperty','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','sequelize','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','findAndCountAll','priority','stack','send','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','orderBy','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','from','From','replace','Body','messageId','MessageSid','notifications','isNil','Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','CmContact','Contacts','DESC','list','WhatsappInteraction','interaction','autoclose','applications','push','close','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./whatsappAccount.socket','register','jayson/promise','client','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','code','message','error','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','destroy','get','WhatsappAccounts','UserProfileResource','name','index','Pause','mandatoryDispositionPause','map','key','model','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','WhatsappAccount','findAll','rows','show','params','rawAttributes','includeAll','create'];(function(_0x28fc3d,_0x83e9b9){var _0x12b9c4=function(_0x1c666b){while(--_0x1c666b){_0x28fc3d['push'](_0x28fc3d['shift']());}};_0x12b9c4(++_0x83e9b9);}(_0x8db3,0x69));var _0x38db=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x8db3[_0x9df060];return _0x338dfe;};'use strict';var emlformat=require(_0x38db('0x0'));var rimraf=require(_0x38db('0x1'));var zipdir=require(_0x38db('0x2'));var jsonpatch=require(_0x38db('0x3'));var rp=require(_0x38db('0x4'));var moment=require(_0x38db('0x5'));var BPromise=require(_0x38db('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x38db('0x7'));var sox=require('sox');var csv=require(_0x38db('0x8'));var ejs=require(_0x38db('0x9'));var fs=require('fs');var fs_extra=require(_0x38db('0xa'));var _=require(_0x38db('0xb'));var squel=require(_0x38db('0xc'));var crypto=require(_0x38db('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x38db('0xe'));var toCsv=require(_0x38db('0x8'));var querystring=require(_0x38db('0xf'));var Papa=require('papaparse');var Redis=require(_0x38db('0x10'));var authService=require(_0x38db('0x11'));var qs=require(_0x38db('0x12'));var as=require(_0x38db('0x13'));var hardwareService=require(_0x38db('0x14'));var logger=require(_0x38db('0x15'))(_0x38db('0x16'));var utils=require(_0x38db('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x38db('0x18'));var db=require(_0x38db('0x19'))['db'];config[_0x38db('0x1a')]=_[_0x38db('0x1b')](config[_0x38db('0x1a')],{'host':_0x38db('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x38db('0x1a')]));require(_0x38db('0x1d'))[_0x38db('0x1e')](socket);var jayson=require(_0x38db('0x1f'));var client=jayson[_0x38db('0x20')]['http']({'port':0x232c});function respondWithRpcPromise(_0x167e45,_0x542ca1,_0x4b96e4,_0x14adfb){return new BPromise(function(_0xe01da1,_0x4e3fa8){var _0x58e908=_0x14adfb||client;return _0x58e908['request'](_0x167e45,_0x4b96e4)[_0x38db('0x21')](function(_0x46c5bb){logger[_0x38db('0x22')](_0x38db('0x23'),_0x542ca1,_0x38db('0x24'));logger[_0x38db('0x25')](_0x38db('0x26'),_0x542ca1,_0x38db('0x24'),JSON[_0x38db('0x27')](_0x46c5bb));if(_0x46c5bb['error']){if(_0x46c5bb['error'][_0x38db('0x28')]===0x1f4){logger['error'](_0x38db('0x23'),_0x542ca1,_0x46c5bb['error'][_0x38db('0x29')]);return _0x4e3fa8(_0x46c5bb[_0x38db('0x2a')][_0x38db('0x29')]);}logger[_0x38db('0x2a')](_0x38db('0x23'),_0x542ca1,_0x46c5bb[_0x38db('0x2a')][_0x38db('0x29')]);return _0xe01da1(_0x46c5bb[_0x38db('0x2a')][_0x38db('0x29')]);}else{logger[_0x38db('0x22')](_0x38db('0x23'),_0x542ca1,_0x38db('0x24'));_0xe01da1(_0x46c5bb['result']['message']);}})[_0x38db('0x2b')](function(_0x35fabf){logger[_0x38db('0x2a')]('WhatsappAccount,\x20%s,\x20%s',_0x542ca1,_0x35fabf);_0x4e3fa8(_0x35fabf);});});}function respondWithStatusCode(_0x31ba9d,_0x2d4d9f){_0x2d4d9f=_0x2d4d9f||0xcc;return function(_0x40b622){if(_0x40b622){return _0x31ba9d[_0x38db('0x2c')](_0x2d4d9f);}return _0x31ba9d[_0x38db('0x2d')](_0x2d4d9f)[_0x38db('0x2e')]();};}function respondWithResult(_0x513a0b,_0x5afe0c){_0x5afe0c=_0x5afe0c||0xc8;return function(_0x53f49f){if(_0x53f49f){return _0x513a0b[_0x38db('0x2d')](_0x5afe0c)['json'](_0x53f49f);}};}function respondWithFilteredResult(_0x17fa57,_0x5f1d8d){return function(_0x448b62){if(_0x448b62){var _0x542b48=typeof _0x5f1d8d['offset']===_0x38db('0x2f')&&typeof _0x5f1d8d[_0x38db('0x30')]===_0x38db('0x2f');var _0x4720b6=_0x448b62[_0x38db('0x31')];var _0x3c5fad=_0x542b48?0x0:_0x5f1d8d[_0x38db('0x32')];var _0x29b476=_0x542b48?_0x448b62['count']:_0x5f1d8d[_0x38db('0x32')]+_0x5f1d8d['limit'];var _0x21ece0;if(_0x29b476>=_0x4720b6){_0x29b476=_0x4720b6;_0x21ece0=0xc8;}else{_0x21ece0=0xce;}_0x17fa57[_0x38db('0x2d')](_0x21ece0);return _0x17fa57[_0x38db('0x33')](_0x38db('0x34'),_0x3c5fad+'-'+_0x29b476+'/'+_0x4720b6)[_0x38db('0x35')](_0x448b62);}return null;};}function patchUpdates(_0x1e5c94){return function(_0x1c5316){try{jsonpatch[_0x38db('0x36')](_0x1c5316,_0x1e5c94,!![]);}catch(_0x23865a){return BPromise[_0x38db('0x37')](_0x23865a);}return _0x1c5316['save']();};}function saveUpdates(_0x4326b7,_0x135e5e){return function(_0x26889d){if(_0x26889d){return _0x26889d['update'](_0x4326b7)[_0x38db('0x21')](function(_0x19840d){return _0x19840d;});}return null;};}function removeEntity(_0x202489,_0x3d30f2){return function(_0x28eb9b){if(_0x28eb9b){return _0x28eb9b[_0x38db('0x38')]()['then'](function(){var _0x33804a=_0x28eb9b[_0x38db('0x39')]({'plain':!![]});var _0x1e4560=_0x38db('0x3a');return db[_0x38db('0x3b')][_0x38db('0x38')]({'where':{'type':_0x1e4560,'resourceId':_0x33804a['id']}})[_0x38db('0x21')](function(){return _0x28eb9b;});})[_0x38db('0x21')](function(){_0x202489[_0x38db('0x2d')](0xcc)[_0x38db('0x2e')]();});}};}function handleEntityNotFound(_0xd39923,_0x58d1ce){return function(_0x29c00d){if(!_0x29c00d){_0xd39923['sendStatus'](0x194);}return _0x29c00d;};}function handleError(_0x240a50,_0x22b62d){_0x22b62d=_0x22b62d||0x1f4;return function(_0x3e4fc2){logger[_0x38db('0x2a')](_0x3e4fc2['stack']);if(_0x3e4fc2[_0x38db('0x3c')]){delete _0x3e4fc2[_0x38db('0x3c')];}_0x240a50[_0x38db('0x2d')](_0x22b62d)['send'](_0x3e4fc2);};}exports[_0x38db('0x3d')]=function(_0x2b3b92,_0x16f281){var _0x81beff={'include':[{'model':db[_0x38db('0x3e')],'as':_0x38db('0x3f')}]},_0x15d6b8={},_0x4605a5={'count':0x0,'rows':[]};var _0x1fe280=_[_0x38db('0x40')](db['WhatsappAccount']['rawAttributes'],function(_0x445530){return{'name':_0x445530['fieldName'],'type':_0x445530['type'][_0x38db('0x41')]};});_0x15d6b8[_0x38db('0x42')]=_[_0x38db('0x40')](_0x1fe280,'name');_0x15d6b8['query']=_[_0x38db('0x43')](_0x2b3b92[_0x38db('0x44')]);_0x15d6b8['filters']=_[_0x38db('0x45')](_0x15d6b8['model'],_0x15d6b8[_0x38db('0x44')]);_0x81beff[_0x38db('0x46')]=_[_0x38db('0x45')](_0x15d6b8[_0x38db('0x42')],qs[_0x38db('0x47')](_0x2b3b92[_0x38db('0x44')]['fields']));_0x81beff[_0x38db('0x46')]=_0x81beff[_0x38db('0x46')][_0x38db('0x48')]?_0x81beff[_0x38db('0x46')]:_0x15d6b8['model'];if(!_0x2b3b92[_0x38db('0x44')]['hasOwnProperty'](_0x38db('0x49'))){_0x81beff['limit']=qs[_0x38db('0x30')](_0x2b3b92[_0x38db('0x44')][_0x38db('0x30')]);_0x81beff['offset']=qs[_0x38db('0x32')](_0x2b3b92['query']['offset']);}_0x81beff[_0x38db('0x4a')]=qs[_0x38db('0x4b')](_0x2b3b92['query'][_0x38db('0x4b')]);_0x81beff[_0x38db('0x4c')]=qs[_0x38db('0x4d')](_[_0x38db('0x4e')](_0x2b3b92['query'],_0x15d6b8[_0x38db('0x4d')]),_0x1fe280);if(_0x2b3b92['query'][_0x38db('0x4f')]){_0x81beff[_0x38db('0x4c')]=_[_0x38db('0x50')](_0x81beff[_0x38db('0x4c')],{'$or':_['map'](_0x1fe280,function(_0x280f6a){if(_0x280f6a[_0x38db('0x51')]!==_0x38db('0x52')){var _0x5cf2f5={};_0x5cf2f5[_0x280f6a['name']]={'$like':'%'+_0x2b3b92[_0x38db('0x44')]['filter']+'%'};return _0x5cf2f5;}})});}_0x81beff=_['merge']({},_0x81beff,_0x2b3b92[_0x38db('0x53')]);var _0x5ed2b6={'where':_0x81beff['where']};return db['WhatsappAccount'][_0x38db('0x31')](_0x5ed2b6)['then'](function(_0x26f2ed){_0x4605a5[_0x38db('0x31')]=_0x26f2ed;if(_0x2b3b92['query']['includeAll']){_0x81beff[_0x38db('0x54')]=[{'all':!![]}];}return db[_0x38db('0x55')][_0x38db('0x56')](_0x81beff);})[_0x38db('0x21')](function(_0xf29375){_0x4605a5[_0x38db('0x57')]=_0xf29375;return _0x4605a5;})[_0x38db('0x21')](respondWithFilteredResult(_0x16f281,_0x81beff))[_0x38db('0x2b')](handleError(_0x16f281,null));};exports[_0x38db('0x58')]=function(_0x32e744,_0x29139f){var _0x52c7ac={'raw':![],'where':{'id':_0x32e744[_0x38db('0x59')]['id']},'include':[{'model':db[_0x38db('0x3e')],'as':_0x38db('0x3f')}]},_0x1c641a={};_0x1c641a[_0x38db('0x42')]=_[_0x38db('0x43')](db[_0x38db('0x55')][_0x38db('0x5a')]);_0x1c641a['query']=_[_0x38db('0x43')](_0x32e744[_0x38db('0x44')]);_0x1c641a[_0x38db('0x4d')]=_[_0x38db('0x45')](_0x1c641a[_0x38db('0x42')],_0x1c641a['query']);_0x52c7ac[_0x38db('0x46')]=_[_0x38db('0x45')](_0x1c641a['model'],qs[_0x38db('0x47')](_0x32e744[_0x38db('0x44')][_0x38db('0x47')]));_0x52c7ac[_0x38db('0x46')]=_0x52c7ac[_0x38db('0x46')][_0x38db('0x48')]?_0x52c7ac[_0x38db('0x46')]:_0x1c641a[_0x38db('0x42')];if(_0x32e744['query'][_0x38db('0x5b')]){_0x52c7ac['include']=[{'all':!![]}];}_0x52c7ac=_[_0x38db('0x50')]({},_0x52c7ac,_0x32e744[_0x38db('0x53')]);return db['WhatsappAccount']['find'](_0x52c7ac)[_0x38db('0x21')](handleEntityNotFound(_0x29139f,null))[_0x38db('0x21')](respondWithResult(_0x29139f,null))[_0x38db('0x2b')](handleError(_0x29139f,null));};exports[_0x38db('0x5c')]=function(_0x17f63b,_0x165431){return db[_0x38db('0x55')][_0x38db('0x5c')](_0x17f63b[_0x38db('0x5d')],{})[_0x38db('0x21')](function(_0x3b0c84){var _0x589d72=_0x17f63b[_0x38db('0x5e')][_0x38db('0x39')]({'plain':!![]});if(!_0x589d72)throw new Error(_0x38db('0x5f'));if(_0x589d72['role']===_0x38db('0x5e')){var _0x4bb697=_0x3b0c84[_0x38db('0x39')]({'plain':!![]});var _0x315423=_0x38db('0x3a');return db[_0x38db('0x60')][_0x38db('0x61')]({'where':{'name':_0x315423,'userProfileId':_0x589d72['userProfileId']},'raw':!![]})[_0x38db('0x21')](function(_0x51d6aa){if(_0x51d6aa&&_0x51d6aa[_0x38db('0x62')]===0x0){return db['UserProfileResource'][_0x38db('0x5c')]({'name':_0x4bb697[_0x38db('0x3c')],'resourceId':_0x4bb697['id'],'type':_0x51d6aa[_0x38db('0x3c')],'sectionId':_0x51d6aa['id']},{})['then'](function(){return _0x3b0c84;});}else{return _0x3b0c84;}})[_0x38db('0x2b')](function(_0x26bb25){logger[_0x38db('0x2a')](_0x38db('0x63'),_0x26bb25);throw _0x26bb25;});}return _0x3b0c84;})[_0x38db('0x21')](respondWithResult(_0x165431,0xc9))[_0x38db('0x2b')](handleError(_0x165431,null));};exports[_0x38db('0x64')]=function(_0x2c1449,_0x39bf09){if(_0x2c1449['body']['id']){delete _0x2c1449[_0x38db('0x5d')]['id'];}return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x2c1449[_0x38db('0x59')]['id']},'include':[{'model':db[_0x38db('0x3e')],'as':_0x38db('0x3f')}]})[_0x38db('0x21')](handleEntityNotFound(_0x39bf09,null))[_0x38db('0x21')](saveUpdates(_0x2c1449[_0x38db('0x5d')],null))['then'](respondWithResult(_0x39bf09,null))[_0x38db('0x2b')](handleError(_0x39bf09,null));};exports[_0x38db('0x38')]=function(_0x45b615,_0x5c0be6){return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x45b615['params']['id']}})['then'](handleEntityNotFound(_0x5c0be6,null))[_0x38db('0x21')](removeEntity(_0x5c0be6,null))[_0x38db('0x2b')](handleError(_0x5c0be6,null));};exports[_0x38db('0x65')]=function(_0x5e2255,_0x26f011){return db[_0x38db('0x55')][_0x38db('0x65')]()[_0x38db('0x21')](respondWithResult(_0x26f011,null))['catch'](handleError(_0x26f011,null));};exports[_0x38db('0x66')]=function(_0x931668,_0x3cb088,_0x1c8564){if(_0x931668[_0x38db('0x5d')]['id']){delete _0x931668[_0x38db('0x5d')]['id'];}return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x931668[_0x38db('0x59')]['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x3cb088,null))[_0x38db('0x21')](function(_0x2bf16f){if(_0x2bf16f){_0x931668[_0x38db('0x5d')][_0x38db('0x67')]=_0x2bf16f['id'];return db[_0x38db('0x68')][_0x38db('0x5c')](_0x931668[_0x38db('0x5d')]);}})[_0x38db('0x21')](respondWithResult(_0x3cb088,null))['catch'](handleError(_0x3cb088,null));};exports['getDispositions']=function(_0x1987e3,_0x451d99,_0x4e9366){var _0x29bc99={'raw':![],'where':{}};var _0x1b3bcf={};var _0x60bdfd={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x38db('0x69')]({'where':{'id':_0x1987e3[_0x38db('0x59')]['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x451d99,null))[_0x38db('0x21')](function(_0x5154d1){if(_0x5154d1){_0x1b3bcf['model']=_[_0x38db('0x43')](db[_0x38db('0x68')][_0x38db('0x5a')]);_0x1b3bcf[_0x38db('0x44')]=_['keys'](_0x1987e3[_0x38db('0x44')]);_0x1b3bcf[_0x38db('0x4d')]=_[_0x38db('0x45')](_0x1b3bcf[_0x38db('0x42')],_0x1b3bcf[_0x38db('0x44')]);_0x29bc99[_0x38db('0x46')]=_[_0x38db('0x45')](_0x1b3bcf[_0x38db('0x42')],qs['fields'](_0x1987e3[_0x38db('0x44')][_0x38db('0x47')]));_0x29bc99[_0x38db('0x46')]=_0x29bc99[_0x38db('0x46')][_0x38db('0x48')]?_0x29bc99[_0x38db('0x46')]:_0x1b3bcf[_0x38db('0x42')];if(!_0x1987e3[_0x38db('0x44')][_0x38db('0x6a')](_0x38db('0x49'))){_0x29bc99['limit']=qs[_0x38db('0x30')](_0x1987e3[_0x38db('0x44')]['limit']);_0x29bc99[_0x38db('0x32')]=qs[_0x38db('0x32')](_0x1987e3[_0x38db('0x44')][_0x38db('0x32')]);}_0x29bc99[_0x38db('0x4a')]=qs['sort'](_0x1987e3[_0x38db('0x44')][_0x38db('0x4b')]);_0x29bc99[_0x38db('0x4c')]=qs['filters'](_['pick'](_0x1987e3[_0x38db('0x44')],_0x1b3bcf[_0x38db('0x4d')]));_0x29bc99['where'][_0x38db('0x67')]=_0x5154d1['id'];if(_0x1987e3[_0x38db('0x44')]['filter']){_0x29bc99[_0x38db('0x4c')]=_[_0x38db('0x50')](_0x29bc99[_0x38db('0x4c')],{'$or':_['map'](_0x29bc99['attributes'],function(_0x1f24bc){var _0x4a013b={};_0x4a013b[_0x1f24bc]={'$like':'%'+_0x1987e3[_0x38db('0x44')]['filter']+'%'};return _0x4a013b;})});}_0x29bc99=_['merge']({},_0x29bc99,_0x1987e3[_0x38db('0x53')]);return db[_0x38db('0x68')][_0x38db('0x31')]({'where':_0x29bc99[_0x38db('0x4c')]})[_0x38db('0x21')](function(_0x2792e2){_0x60bdfd[_0x38db('0x31')]=_0x2792e2;if(_0x1987e3[_0x38db('0x44')][_0x38db('0x5b')]){_0x29bc99[_0x38db('0x54')]=[{'all':!![]}];}return db[_0x38db('0x68')][_0x38db('0x56')](_0x29bc99);})[_0x38db('0x21')](function(_0x2b9b19){_0x60bdfd[_0x38db('0x57')]=_0x2b9b19;return _0x60bdfd;});}})[_0x38db('0x21')](respondWithFilteredResult(_0x451d99,_0x29bc99))[_0x38db('0x2b')](handleError(_0x451d99,null));};exports[_0x38db('0x6b')]=function(_0x2a225a,_0x35d70e,_0x596685){return db[_0x38db('0x55')]['find']({'where':{'id':_0x2a225a[_0x38db('0x59')]['id']}})['then'](handleEntityNotFound(_0x35d70e,null))[_0x38db('0x21')](function(_0x415539){if(_0x415539){return _0x415539['removeDispositions'](_0x2a225a['query'][_0x38db('0x6c')]);}})[_0x38db('0x21')](respondWithStatusCode(_0x35d70e,null))[_0x38db('0x2b')](handleError(_0x35d70e,null));};exports[_0x38db('0x6d')]=function(_0x31ec37,_0x3b1c24,_0x2bf80f){if(_0x31ec37['body']['id']){delete _0x31ec37[_0x38db('0x5d')]['id'];}return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x31ec37[_0x38db('0x59')]['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x3b1c24,null))[_0x38db('0x21')](function(_0x158a93){if(_0x158a93){_0x31ec37['body']['WhatsappAccountId']=_0x158a93['id'];return db['CannedAnswer'][_0x38db('0x5c')](_0x31ec37[_0x38db('0x5d')]);}})['then'](respondWithResult(_0x3b1c24,null))['catch'](handleError(_0x3b1c24,null));};exports[_0x38db('0x6e')]=function(_0x2d0b31,_0xa74c2d,_0x10b560){var _0x42e07b={'raw':![],'where':{}};var _0x517d48={};var _0x49ab4b={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x38db('0x69')]({'where':{'id':_0x2d0b31['params']['id']}})['then'](handleEntityNotFound(_0xa74c2d,null))[_0x38db('0x21')](function(_0x5cbd52){if(_0x5cbd52){_0x517d48['model']=_[_0x38db('0x43')](db[_0x38db('0x6f')][_0x38db('0x5a')]);_0x517d48[_0x38db('0x44')]=_[_0x38db('0x43')](_0x2d0b31[_0x38db('0x44')]);_0x517d48[_0x38db('0x4d')]=_['intersection'](_0x517d48['model'],_0x517d48[_0x38db('0x44')]);_0x42e07b[_0x38db('0x46')]=_[_0x38db('0x45')](_0x517d48[_0x38db('0x42')],qs['fields'](_0x2d0b31[_0x38db('0x44')][_0x38db('0x47')]));_0x42e07b[_0x38db('0x46')]=_0x42e07b[_0x38db('0x46')][_0x38db('0x48')]?_0x42e07b['attributes']:_0x517d48[_0x38db('0x42')];if(!_0x2d0b31[_0x38db('0x44')][_0x38db('0x6a')](_0x38db('0x49'))){_0x42e07b[_0x38db('0x30')]=qs[_0x38db('0x30')](_0x2d0b31[_0x38db('0x44')][_0x38db('0x30')]);_0x42e07b[_0x38db('0x32')]=qs[_0x38db('0x32')](_0x2d0b31[_0x38db('0x44')][_0x38db('0x32')]);}_0x42e07b[_0x38db('0x4a')]=qs[_0x38db('0x4b')](_0x2d0b31[_0x38db('0x44')][_0x38db('0x4b')]);_0x42e07b['where']=qs['filters'](_[_0x38db('0x4e')](_0x2d0b31[_0x38db('0x44')],_0x517d48[_0x38db('0x4d')]));_0x42e07b[_0x38db('0x4c')][_0x38db('0x67')]=_0x5cbd52['id'];if(_0x2d0b31[_0x38db('0x44')][_0x38db('0x4f')]){_0x42e07b[_0x38db('0x4c')]=_['merge'](_0x42e07b[_0x38db('0x4c')],{'$or':_['map'](_0x42e07b[_0x38db('0x46')],function(_0x240afd){var _0x376202={};_0x376202[_0x240afd]={'$like':'%'+_0x2d0b31[_0x38db('0x44')]['filter']+'%'};return _0x376202;})});}_0x42e07b=_[_0x38db('0x50')]({},_0x42e07b,_0x2d0b31[_0x38db('0x53')]);return db[_0x38db('0x6f')][_0x38db('0x31')]({'where':_0x42e07b['where']})['then'](function(_0x2a70ec){_0x49ab4b['count']=_0x2a70ec;if(_0x2d0b31[_0x38db('0x44')][_0x38db('0x5b')]){_0x42e07b['include']=[{'all':!![]}];}return db[_0x38db('0x6f')][_0x38db('0x56')](_0x42e07b);})[_0x38db('0x21')](function(_0x389b7e){_0x49ab4b[_0x38db('0x57')]=_0x389b7e;return _0x49ab4b;});}})[_0x38db('0x21')](respondWithFilteredResult(_0xa74c2d,_0x42e07b))[_0x38db('0x2b')](handleError(_0xa74c2d,null));};exports['removeAnswers']=function(_0x50f156,_0x3bb963,_0x44ae76){return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x50f156[_0x38db('0x59')]['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x3bb963,null))['then'](function(_0x2857ed){if(_0x2857ed){return _0x2857ed['removeAnswers'](_0x50f156[_0x38db('0x44')][_0x38db('0x6c')]);}})[_0x38db('0x21')](respondWithStatusCode(_0x3bb963,null))[_0x38db('0x2b')](handleError(_0x3bb963,null));};exports[_0x38db('0x70')]=function(_0x4a96b5,_0x5a2f7b,_0x24d718){return db[_0x38db('0x55')][_0x38db('0x61')]({'where':{'id':_0x4a96b5['params']['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x5a2f7b,null))['then'](function(_0x3bce1a){if(_0x3bce1a){return _0x3bce1a[_0x38db('0x70')](_0x4a96b5[_0x38db('0x5d')][_0x38db('0x6c')],_[_0x38db('0x71')](_0x4a96b5['body'],[_0x38db('0x6c'),'id'])||{})[_0x38db('0x72')](function(_0x53d06c){for(var _0x293f17=0x0;_0x293f17<_0x4a96b5[_0x38db('0x5d')][_0x38db('0x6c')][_0x38db('0x48')];_0x293f17+=0x1){socket[_0x38db('0x73')](_0x38db('0x74'),{'UserId':Number(_0x4a96b5[_0x38db('0x5d')][_0x38db('0x6c')][_0x293f17]),'WhatsappAccountId':Number(_0x4a96b5[_0x38db('0x59')]['id'])});}return _0x53d06c;});}})['then'](respondWithResult(_0x5a2f7b,null))['catch'](handleError(_0x5a2f7b,null));};exports[_0x38db('0x75')]=function(_0x25eecc,_0x237aeb,_0x4ea8d7){return db[_0x38db('0x55')]['find']({'where':{'id':_0x25eecc['params']['id']}})['then'](handleEntityNotFound(_0x237aeb,null))['then'](function(_0x5025ac){if(_0x5025ac){return _0x5025ac['removeAgents'](_0x25eecc[_0x38db('0x44')]['ids'])[_0x38db('0x21')](function(){if(_[_0x38db('0x76')](_0x25eecc[_0x38db('0x44')]['ids'])){for(var _0x36691b=0x0;_0x36691b<_0x25eecc['query'][_0x38db('0x6c')]['length'];_0x36691b+=0x1){socket[_0x38db('0x73')](_0x38db('0x77'),{'UserId':Number(_0x25eecc[_0x38db('0x44')][_0x38db('0x6c')][_0x36691b]),'WhatsappAccountId':Number(_0x25eecc[_0x38db('0x59')]['id'])});}}else{socket['emit'](_0x38db('0x77'),{'UserId':Number(_0x25eecc[_0x38db('0x44')][_0x38db('0x6c')]),'WhatsappAccountId':Number(_0x25eecc[_0x38db('0x59')]['id'])});}});}})[_0x38db('0x21')](respondWithStatusCode(_0x237aeb,null))[_0x38db('0x2b')](handleError(_0x237aeb,null));};exports[_0x38db('0x78')]=function(_0x1c56a1,_0x1a6b5d,_0x521dde){var _0x43a2b0={};var _0x5305d3={};var _0x5af08b;var _0x3a5311;return db[_0x38db('0x55')][_0x38db('0x69')]({'where':{'id':_0x1c56a1['params']['id']}})['then'](handleEntityNotFound(_0x1a6b5d,null))[_0x38db('0x21')](function(_0x4e2092){if(_0x4e2092){_0x5af08b=_0x4e2092;_0x5305d3['model']=_[_0x38db('0x43')](db[_0x38db('0x79')][_0x38db('0x5a')]);_0x5305d3[_0x38db('0x44')]=_[_0x38db('0x43')](_0x1c56a1['query']);_0x5305d3['filters']=_[_0x38db('0x45')](_0x5305d3['model'],_0x5305d3[_0x38db('0x44')]);_0x43a2b0[_0x38db('0x46')]=_['intersection'](_0x5305d3[_0x38db('0x42')],qs[_0x38db('0x47')](_0x1c56a1['query'][_0x38db('0x47')]));_0x43a2b0[_0x38db('0x46')]=_0x43a2b0[_0x38db('0x46')][_0x38db('0x48')]?_0x43a2b0[_0x38db('0x46')]:_0x5305d3[_0x38db('0x42')];_0x43a2b0[_0x38db('0x4a')]=qs['sort'](_0x1c56a1['query'][_0x38db('0x4b')]);_0x43a2b0['where']=qs['filters'](_['pick'](_0x1c56a1[_0x38db('0x44')],_0x5305d3[_0x38db('0x4d')]));if(_0x1c56a1['query']['filter']){_0x43a2b0[_0x38db('0x4c')]=_[_0x38db('0x50')](_0x43a2b0[_0x38db('0x4c')],{'$or':_[_0x38db('0x40')](_0x43a2b0[_0x38db('0x46')],function(_0x3b6ce4){var _0x34b294={};_0x34b294[_0x3b6ce4]={'$like':'%'+_0x1c56a1['query'][_0x38db('0x4f')]+'%'};return _0x34b294;})});}_0x43a2b0=_[_0x38db('0x50')]({},_0x43a2b0,_0x1c56a1[_0x38db('0x53')]);return _0x5af08b['getAgents'](_0x43a2b0);}})[_0x38db('0x21')](function(_0x4455a6){if(_0x4455a6){_0x3a5311=_0x4455a6[_0x38db('0x48')];if(!_0x1c56a1[_0x38db('0x44')][_0x38db('0x6a')](_0x38db('0x49'))){_0x43a2b0['limit']=qs[_0x38db('0x30')](_0x1c56a1[_0x38db('0x44')][_0x38db('0x30')]);_0x43a2b0['offset']=qs['offset'](_0x1c56a1['query']['offset']);}return _0x5af08b[_0x38db('0x78')](_0x43a2b0);}})[_0x38db('0x21')](function(_0x5cda4f){if(_0x5cda4f){return _0x5cda4f?{'count':_0x3a5311,'rows':_0x5cda4f}:null;}})['then'](respondWithResult(_0x1a6b5d,null))[_0x38db('0x2b')](handleError(_0x1a6b5d,null));};exports[_0x38db('0x7a')]=function(_0x5576ed,_0x4f1f84){var _0x1a037a=_0x5576ed[_0x38db('0x59')]['id'];var _0x1bb716=_0x5576ed[_0x38db('0x5d')];var _0x551fdb=0xc8;var _0xc5fbea=null;return db['sequelize'][_0x38db('0x7b')]({'isolationLevel':db[_0x38db('0x7c')]['Transaction'][_0x38db('0x7d')]['READ_COMMITTED']},function(_0x331e2c){return db[_0x38db('0x55')][_0x38db('0x69')]({'where':{'id':_0x1a037a},'transaction':_0x331e2c})['then'](function(_0x52f369){if(_0x52f369){return db[_0x38db('0x7e')][_0x38db('0x38')]({'where':{'WhatsappAccountId':_0x1a037a},'transaction':_0x331e2c})['then'](function(){var _0x2a442a=_[_0x38db('0x40')](_0x1bb716,function(_0x481780){_0x481780[_0x38db('0x67')]=_0x1a037a;return _0x481780;});return db['WhatsappApplication'][_0x38db('0x7f')](_0x2a442a,{'transaction':_0x331e2c});});}else{_0x551fdb=0x194;_0xc5fbea=[];}});})[_0x38db('0x21')](function(){if(_0x551fdb!==0x194){return db['WhatsappApplication'][_0x38db('0x80')]({'where':{'WhatsappAccountId':_0x1a037a},'order':_0x38db('0x81')})['then'](function(_0x24ef5f){_0xc5fbea=_0x24ef5f;});}})[_0x38db('0x2b')](function(_0x5daa6f){_0x551fdb=0x1f4;logger[_0x38db('0x2a')](_0x5daa6f[_0x38db('0x82')]);if(_0x5daa6f[_0x38db('0x3c')]){delete _0x5daa6f[_0x38db('0x3c')];}_0xc5fbea=_0x5daa6f;})['finally'](function(){if(_0xc5fbea===null){_0x4f1f84['sendStatus'](_0x551fdb);}else{if(_0x551fdb===0x1f4){_0x4f1f84[_0x38db('0x2d')](_0x551fdb)[_0x38db('0x83')](_0xc5fbea);}else{_0x4f1f84[_0x38db('0x2d')](_0x551fdb)[_0x38db('0x35')](_0xc5fbea);}}});};exports[_0x38db('0x84')]=function(_0x2d34a1,_0x54cc56,_0x2d1dd6){var _0x5b515f={};var _0x126984={};var _0x1b4121;var _0x4126af;return db['WhatsappAccount']['findOne']({'where':{'id':_0x2d34a1[_0x38db('0x59')]['id']}})[_0x38db('0x21')](handleEntityNotFound(_0x54cc56,null))[_0x38db('0x21')](function(_0x461168){if(_0x461168){_0x1b4121=_0x461168;_0x126984[_0x38db('0x42')]=_['keys'](db['WhatsappApplication'][_0x38db('0x5a')]);_0x126984[_0x38db('0x44')]=_['keys'](_0x2d34a1[_0x38db('0x44')]);_0x126984[_0x38db('0x4d')]=_['intersection'](_0x126984[_0x38db('0x42')],_0x126984[_0x38db('0x44')]);_0x5b515f[_0x38db('0x46')]=_[_0x38db('0x45')](_0x126984[_0x38db('0x42')],qs[_0x38db('0x47')](_0x2d34a1[_0x38db('0x44')][_0x38db('0x47')]));_0x5b515f[_0x38db('0x46')]=_0x5b515f['attributes']['length']?_0x5b515f[_0x38db('0x46')]:_0x126984[_0x38db('0x42')];_0x5b515f[_0x38db('0x4a')]=qs['sort'](_0x2d34a1[_0x38db('0x44')][_0x38db('0x4b')]);_0x5b515f[_0x38db('0x4c')]=qs['filters'](_[_0x38db('0x4e')](_0x2d34a1[_0x38db('0x44')],_0x126984[_0x38db('0x4d')]));if(_0x2d34a1[_0x38db('0x44')][_0x38db('0x4f')]){_0x5b515f['where']=_[_0x38db('0x50')](_0x5b515f[_0x38db('0x4c')],{'$or':_[_0x38db('0x40')](_0x5b515f[_0x38db('0x46')],function(_0x1eb343){var _0x57b168={};_0x57b168[_0x1eb343]={'$like':'%'+_0x2d34a1['query'][_0x38db('0x4f')]+'%'};return _0x57b168;})});}_0x5b515f=_[_0x38db('0x50')]({},_0x5b515f,_0x2d34a1['options']);return _0x1b4121[_0x38db('0x84')](_0x5b515f);}})[_0x38db('0x21')](function(_0x5fe2b9){if(_0x5fe2b9){_0x4126af=_0x5fe2b9[_0x38db('0x48')];if(!_0x2d34a1[_0x38db('0x44')][_0x38db('0x6a')](_0x38db('0x49'))){_0x5b515f[_0x38db('0x30')]=qs[_0x38db('0x30')](_0x2d34a1[_0x38db('0x44')][_0x38db('0x30')]);_0x5b515f[_0x38db('0x32')]=qs['offset'](_0x2d34a1[_0x38db('0x44')]['offset']);}return _0x1b4121[_0x38db('0x84')](_0x5b515f);}})['then'](function(_0xe2e86f){if(_0xe2e86f){return _0xe2e86f?{'count':_0x4126af,'rows':_0xe2e86f}:null;}})[_0x38db('0x21')](respondWithResult(_0x54cc56,null))[_0x38db('0x2b')](handleError(_0x54cc56,null));};exports[_0x38db('0x85')]=function(_0x28385a,_0x3b317a,_0x3e05a0){var _0x384f5d={'channel':_0x38db('0x86')};var _0x5cb82f=[];var _0x2e0392=[];var _0x599ef8={};return db['WhatsappAccount'][_0x38db('0x61')]({'where':{'id':_0x28385a[_0x38db('0x59')]['id']},'include':[{'model':db[_0x38db('0x7e')],'as':_0x38db('0x87')}]})[_0x38db('0x21')](handleEntityNotFound(_0x3b317a,null))[_0x38db('0x21')](function(_0x137f71){_0x384f5d[_0x38db('0x88')]=_0x137f71;if(_0x384f5d[_0x38db('0x88')]&&_0x384f5d[_0x38db('0x88')][_0x38db('0x51')]===_0x38db('0x89')&&_0x28385a[_0x38db('0x5d')][_0x38db('0x8a')]){if(_0x28385a[_0x38db('0x5d')][_0x38db('0x8a')][_0x38db('0x48')]===0x0)return;if(_0x28385a[_0x38db('0x5d')][_0x38db('0x8a')][0x0][_0x38db('0x8b')]!==_0x38db('0x8c'))return;return db[_0x38db('0x8d')][_0x38db('0x64')]({'read':!![],'readAt':_0x28385a[_0x38db('0x5d')]['statuses'][0x0][_0x38db('0x8e')]},{'where':{'messageId':_0x28385a[_0x38db('0x5d')][_0x38db('0x8a')][0x0][_0x38db('0x8f')]},'individualHooks':!![]})[_0x38db('0x21')](function(_0xa2cc3){return _0x3b317a[_0x38db('0x2d')](0xc8)[_0x38db('0x35')](_0xa2cc3);});}_0x384f5d['applications']=_[_0x38db('0x90')](_0x137f71[_0x38db('0x87')],['priority'],['asc']);if(_0x384f5d['account']['Applications']){delete _0x384f5d['account']['Applications'];}return db['CmContact'][_0x38db('0x65')]()[_0x38db('0x21')](function(_0x3986d1){if(!_0x3986d1){throw new db['Sequelize'][(_0x38db('0x91'))]('no\x20available\x20attributes');}_0x5cb82f=_[_0x38db('0x92')](_[_0x38db('0x43')](_0x3986d1),[_0x38db('0x93'),_0x38db('0x94')]);_0x2e0392=_[_0x38db('0x92')](_[_0x38db('0x43')](_0x3986d1),['createdAt','updatedAt',_0x38db('0x95'),'ListId']);_0x384f5d[_0x38db('0x5d')]={'mapKey':_0x38db('0x96')};if(_0x384f5d[_0x38db('0x88')]&&_0x384f5d[_0x38db('0x88')][_0x38db('0x51')]==='twilio'){_0x384f5d[_0x38db('0x5d')][_0x38db('0x97')]=_0x28385a[_0x38db('0x5d')][_0x38db('0x98')][_0x38db('0x99')]('whatsapp:','');_0x384f5d[_0x38db('0x5d')]['body']=_0x28385a[_0x38db('0x5d')][_0x38db('0x9a')];_0x384f5d[_0x38db('0x5d')][_0x38db('0x9b')]=_0x28385a[_0x38db('0x5d')][_0x38db('0x9c')];}if(_0x384f5d[_0x38db('0x88')]&&_0x384f5d['account']['type']===_0x38db('0x89')){_0x384f5d[_0x38db('0x5d')][_0x38db('0x97')]=_0x28385a[_0x38db('0x5d')]['notifications'][0x0][_0x38db('0x97')];_0x384f5d[_0x38db('0x5d')][_0x38db('0x5d')]=_0x28385a[_0x38db('0x5d')][_0x38db('0x9d')][0x0][_0x38db('0x29')][_0x38db('0x5d')];_0x384f5d[_0x38db('0x5d')]['messageId']=_0x28385a[_0x38db('0x5d')]['notifications'][0x0][_0x38db('0x8f')];}if(_0x384f5d['body']['id']){delete _0x384f5d['body']['id'];}if(_[_0x38db('0x9e')](_0x384f5d[_0x38db('0x5d')][_0x38db('0x97')])){throw new db[(_0x38db('0x9f'))][(_0x38db('0x91'))](_0x38db('0xa0'));}if(_['isNil'](_0x384f5d['body']['body'])||_0x384f5d[_0x38db('0x5d')]['body']===''){throw new db[(_0x38db('0x9f'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x38db('0x9e')](_0x384f5d[_0x38db('0x5d')][_0x38db('0xa1')])){throw new db['Sequelize'][(_0x38db('0x91'))](_0x38db('0xa2')+_0x2e0392);}if(!_[_0x38db('0xa3')](_0x2e0392,_0x384f5d[_0x38db('0x5d')][_0x38db('0xa1')])){throw new db[(_0x38db('0x9f'))][(_0x38db('0x91'))](_0x38db('0xa4')+_0x2e0392);}_0x599ef8[_0x384f5d[_0x38db('0x5d')][_0x38db('0xa1')]]=_0x384f5d[_0x38db('0x5d')]['from'];return db[_0x38db('0xa5')][_0x38db('0x61')]({'where':{'id':_0x384f5d[_0x38db('0x88')][_0x38db('0xa6')]},'include':[{'model':db[_0x38db('0xa7')],'as':_0x38db('0xa8'),'where':_0x599ef8,'limit':0x1,'order':[[_0x38db('0x94'),_0x38db('0xa9')]]}]});})[_0x38db('0x21')](handleEntityNotFound(_0x3b317a,null))[_0x38db('0x21')](function(_0x59f672){if(_0x59f672){_0x384f5d[_0x38db('0xaa')]=_[_0x38db('0x71')](_0x59f672,[_0x38db('0xa8')]);if(_0x59f672[_0x38db('0xa8')][_0x38db('0x48')]){return _0x59f672[_0x38db('0xa8')][0x0];}var _0x113ffc=_['defaults'](_0x384f5d[_0x38db('0x5d')],{'firstName':_0x384f5d['body'][_0x38db('0x97')],'ListId':_0x59f672['id']});_0x113ffc[_0x384f5d[_0x38db('0x5d')][_0x38db('0xa1')]]=_0x384f5d['body']['from'];return db[_0x38db('0xa7')][_0x38db('0x5c')](_0x113ffc,{'fields':_0x5cb82f,'raw':!![]});}})[_0x38db('0x21')](handleEntityNotFound(_0x3b317a,null))['then'](function(_0x1b338c){if(_0x1b338c){_0x384f5d['contact']=_0x1b338c;var _0x36da7e={'ContactId':_0x1b338c['id'],'phone':_0x384f5d['body'][_0x38db('0x97')],'WhatsappAccountId':_0x28385a[_0x38db('0x59')]['id']};var _0x35bf42={'ContactId':_0x1b338c['id'],'WhatsappAccountId':_0x28385a[_0x38db('0x59')]['id'],'closed':![]};return db[_0x38db('0xab')][_0x38db('0x61')]({'where':_0x35bf42})[_0x38db('0x21')](function(_0xf5160e){if(_0xf5160e){return[_0xf5160e,![]];}return db['WhatsappInteraction'][_0x38db('0x5c')](_0x36da7e)[_0x38db('0x21')](function(_0x2b61e5){return[_0x2b61e5,!![]];});});}})[_0x38db('0x72')](function(_0x4052c5,_0x5906fb){_0x384f5d[_0x38db('0xac')]=_0x4052c5['get']({'plain':!![]});_0x384f5d[_0x38db('0xac')]['created']=![];if(_0x5906fb){if(_0x384f5d[_0x38db('0x88')][_0x38db('0xad')]){_0x384f5d[_0x38db('0xae')][_0x38db('0xaf')]({'id':0x0,'priority':_0x384f5d['applications'][_0x38db('0x48')]+0x1,'app':_0x38db('0xb0'),'appdata':_0x38db('0xb1'),'interval':_0x38db('0xb2')});}_0x384f5d[_0x38db('0xac')][_0x38db('0xb3')]=!![];}return db['WhatsappMessage']['create']({'phone':_0x384f5d[_0x38db('0x5d')]['from'],'messageId':_0x384f5d[_0x38db('0x5d')]['messageId'],'body':_0x384f5d[_0x38db('0x5d')][_0x38db('0x5d')],'WhatsappAccountId':_0x28385a[_0x38db('0x59')]['id'],'WhatsappInteractionId':_0x4052c5['id'],'direction':'in','ContactId':_0x4052c5[_0x38db('0xb4')],'AttachmentId':_0x384f5d[_0x38db('0x5d')][_0x38db('0xb5')]});})[_0x38db('0x21')](function(_0x38671e){_0x384f5d[_0x38db('0x29')]=_0x38671e;if(_0x384f5d[_0x38db('0xac')][_0x38db('0xb6')]){return db['User'][_0x38db('0x61')]({'attributes':['id',_0x38db('0x3c')],'where':{'id':_0x384f5d['interaction'][_0x38db('0xb6')]}})[_0x38db('0x21')](function(_0x546931){if(_0x546931){_0x384f5d[_0x38db('0xae')][_0x38db('0xb7')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x546931['name']+','+(_0x384f5d[_0x38db('0x88')][_0x38db('0xb8')]||0xa),'interval':_0x38db('0xb2')});}return respondWithRpcPromise(_0x38db('0xb9'),_0x38db('0xba'),_0x384f5d);});}return respondWithRpcPromise(_0x38db('0xb9'),'startRouting',_0x384f5d);})[_0x38db('0x21')](function(_0x9fa0cb){if(_0x9fa0cb){var _0x38c652=0xc8;var _0x297933=_0x38db('0xbb');logger[_0x38db('0x22')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x297933,_0x38c652,_0x38db('0xbc'));logger[_0x38db('0x25')](_0x38db('0xbd'),_0x297933,_0x38c652,_0x38db('0xbc'),JSON[_0x38db('0x27')](_0x9fa0cb));if(_0x384f5d[_0x38db('0x88')][_0x38db('0x51')]===_0x38db('0xbe')){return _0x3b317a['status'](_0x38c652)[_0x38db('0x33')]('Content-Type',_0x38db('0xbf'))['send'](_0x38db('0xc0'));}else{return _0x3b317a['status'](_0x38c652)[_0x38db('0x35')](_0x9fa0cb);}}});})[_0x38db('0x2b')](handleError(_0x3b317a,null));};exports['send']=function(_0x4d0a77,_0x341db1,_0x454632){var _0x80324f,_0x55ec86,_0x2130fb;if(_[_0x38db('0x9e')](_0x4d0a77[_0x38db('0x5d')]['body'])||_0x4d0a77[_0x38db('0x5d')]['body']===''){throw new db[(_0x38db('0x9f'))][(_0x38db('0x91'))](_0x38db('0xc1'));}if(_[_0x38db('0x9e')](_0x4d0a77[_0x38db('0x5d')]['to'])){throw new db[(_0x38db('0x9f'))][(_0x38db('0x91'))](_0x38db('0xc2'));}_0x80324f=_0x4d0a77[_0x38db('0x5d')]['to'];return db['WhatsappAccount'][_0x38db('0x61')]({'where':{'id':_0x4d0a77[_0x38db('0x59')]['id']},'include':[{'model':db[_0x38db('0xa5')],'as':_0x38db('0xc3'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x80324f},'limit':0x1,'order':[[_0x38db('0x94'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x341db1,null))['then'](function(_0x2fb26a){if(_0x2fb26a&&_0x2fb26a[_0x38db('0xc3')]){_0x55ec86=_0x2fb26a[_0x38db('0x39')]({'plain':!![]});if(_0x55ec86[_0x38db('0xc3')]&&_0x55ec86[_0x38db('0xc3')]['Contacts'][_0x38db('0x48')]){return _0x55ec86[_0x38db('0xc3')]['Contacts'][0x0];}return db[_0x38db('0xa7')][_0x38db('0x5c')](_[_0x38db('0x1b')](_0x4d0a77[_0x38db('0x5d')],{'firstName':_0x80324f,'mobile':_0x80324f,'phone':_0x80324f,'ListId':_0x55ec86['ListId']}));}})[_0x38db('0x21')](handleEntityNotFound(_0x341db1,null))[_0x38db('0x21')](function(_0x4b39a7){if(_0x4b39a7){_0x2130fb=_0x4b39a7;return db[_0x38db('0xab')][_0x38db('0x61')]({'where':{'ContactId':_0x2130fb['id'],'closed':![],'WhatsappAccountId':_0x55ec86['id']}})[_0x38db('0x21')](function(_0x13da8e){if(_0x13da8e){return[_0x13da8e,![]];}return db[_0x38db('0xab')][_0x38db('0x5c')]({'UserId':_0x4d0a77[_0x38db('0x5e')]['id'],'ContactId':_0x2130fb['id'],'WhatsappAccountId':_0x55ec86['id'],'phone':_0x80324f,'firstMsgDirection':'out','Messages':[_[_0x38db('0x50')](_0x4d0a77[_0x38db('0x5d')],{'read':![],'body':_0x4d0a77['body'][_0x38db('0x5d')],'phone':_0x80324f,'WhatsappAccountId':_0x55ec86['id'],'UserId':_0x4d0a77['user']['id'],'ContactId':_0x2130fb['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x38db('0xc4')}]})[_0x38db('0x21')](function(_0x533be1){return[_0x533be1,!![]];});});}})['spread'](function(_0x21086e,_0x3bc9a0){if(_0x3bc9a0){return _0x21086e;}return db[_0x38db('0x8d')][_0x38db('0x5c')](_[_0x38db('0x50')](_0x4d0a77[_0x38db('0x5d')],{'read':![],'body':_0x4d0a77[_0x38db('0x5d')][_0x38db('0x5d')],'phone':_0x80324f,'WhatsappAccountId':_0x55ec86['id'],'WhatsappInteractionId':_0x21086e['id'],'UserId':_0x4d0a77[_0x38db('0x5e')]['id'],'ContactId':_0x2130fb['id']}))[_0x38db('0x21')](function(_0x3d0039){_0x21086e[_0x38db('0xc5')]['Messages']=[];_0x21086e['dataValues']['Messages'][_0x38db('0xaf')](_0x3d0039['dataValues']);return _0x21086e;});})[_0x38db('0x21')](respondWithResult(_0x341db1,null))[_0x38db('0x2b')](handleError(_0x341db1,null));};
\ No newline at end of file
+var _0x73eb=['no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','whatsapp:','Body','MessageSid','notifications','messageId','isNil','from\x20is\x20mandatory','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmContact','Contacts','DESC','defaults','contact','WhatsappInteraction','spread','interaction','created','push','close','unmanaged','ContactId','AttachmentId','UserId','unshift','agent','*,*,*,*','Start','startRouting','receiveMessage','info','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','CmList','List','Messages','dataValues','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','WhatsappAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','get','WhatsappAccounts','UserProfileResource','sendStatus','stack','name','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','Pause','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','Disposition','WhatsappAccountId','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','findOne','User','nolimit','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','priority','finally','send','getApplications','notify','Applications','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','account','Sequelize','ValidationError'];(function(_0x49bd2d,_0x4e7921){var _0x40012e=function(_0x1d2539){while(--_0x1d2539){_0x49bd2d['push'](_0x49bd2d['shift']());}};_0x40012e(++_0x4e7921);}(_0x73eb,0x1c5));var _0xb73e=function(_0x24d951,_0xc0fb73){_0x24d951=_0x24d951-0x0;var _0x5cfd1e=_0x73eb[_0x24d951];return _0x5cfd1e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb73e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb73e('0x1'));var moment=require('moment');var BPromise=require(_0xb73e('0x2'));var Mustache=require(_0xb73e('0x3'));var util=require(_0xb73e('0x4'));var path=require(_0xb73e('0x5'));var sox=require(_0xb73e('0x6'));var csv=require(_0xb73e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb73e('0x8'));var _=require('lodash');var squel=require(_0xb73e('0x9'));var crypto=require(_0xb73e('0xa'));var jsforce=require(_0xb73e('0xb'));var deskjs=require(_0xb73e('0xc'));var toCsv=require(_0xb73e('0x7'));var querystring=require(_0xb73e('0xd'));var Papa=require(_0xb73e('0xe'));var Redis=require(_0xb73e('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb73e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb73e('0x11'));var logger=require(_0xb73e('0x12'))('api');var utils=require(_0xb73e('0x13'));var config=require(_0xb73e('0x14'));var licenseUtil=require(_0xb73e('0x15'));var db=require(_0xb73e('0x16'))['db'];config[_0xb73e('0x17')]=_['defaults'](config[_0xb73e('0x17')],{'host':_0xb73e('0x18'),'port':0x18eb});var socket=require(_0xb73e('0x19'))(new Redis(config['redis']));require(_0xb73e('0x1a'))[_0xb73e('0x1b')](socket);var jayson=require(_0xb73e('0x1c'));var client=jayson[_0xb73e('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x506658,_0x2f963d,_0x2f0321,_0x480564){return new BPromise(function(_0x534af3,_0x5c3315){var _0x2509f2=_0x480564||client;return _0x2509f2['request'](_0x506658,_0x2f0321)['then'](function(_0xefa87){logger['info'](_0xb73e('0x1e'),_0x2f963d,'request\x20sent');logger[_0xb73e('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x2f963d,_0xb73e('0x20'),JSON['stringify'](_0xefa87));if(_0xefa87[_0xb73e('0x21')]){if(_0xefa87['error'][_0xb73e('0x22')]===0x1f4){logger[_0xb73e('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x2f963d,_0xefa87['error'][_0xb73e('0x23')]);return _0x5c3315(_0xefa87[_0xb73e('0x21')][_0xb73e('0x23')]);}logger[_0xb73e('0x21')](_0xb73e('0x1e'),_0x2f963d,_0xefa87[_0xb73e('0x21')][_0xb73e('0x23')]);return _0x534af3(_0xefa87[_0xb73e('0x21')][_0xb73e('0x23')]);}else{logger['info'](_0xb73e('0x1e'),_0x2f963d,_0xb73e('0x20'));_0x534af3(_0xefa87[_0xb73e('0x24')][_0xb73e('0x23')]);}})[_0xb73e('0x25')](function(_0x2129d6){logger[_0xb73e('0x21')]('WhatsappAccount,\x20%s,\x20%s',_0x2f963d,_0x2129d6);_0x5c3315(_0x2129d6);});});}function respondWithStatusCode(_0x47ff57,_0x2cf692){_0x2cf692=_0x2cf692||0xcc;return function(_0x31c55e){if(_0x31c55e){return _0x47ff57['sendStatus'](_0x2cf692);}return _0x47ff57[_0xb73e('0x26')](_0x2cf692)[_0xb73e('0x27')]();};}function respondWithResult(_0x3e626b,_0x1ff773){_0x1ff773=_0x1ff773||0xc8;return function(_0x5af616){if(_0x5af616){return _0x3e626b[_0xb73e('0x26')](_0x1ff773)[_0xb73e('0x28')](_0x5af616);}};}function respondWithFilteredResult(_0x2d995a,_0x31cbf2){return function(_0x5713b8){if(_0x5713b8){var _0x2734d5=typeof _0x31cbf2['offset']===_0xb73e('0x29')&&typeof _0x31cbf2[_0xb73e('0x2a')]===_0xb73e('0x29');var _0x499c44=_0x5713b8['count'];var _0x1df2d9=_0x2734d5?0x0:_0x31cbf2[_0xb73e('0x2b')];var _0x2fef57=_0x2734d5?_0x5713b8[_0xb73e('0x2c')]:_0x31cbf2[_0xb73e('0x2b')]+_0x31cbf2['limit'];var _0x2e7896;if(_0x2fef57>=_0x499c44){_0x2fef57=_0x499c44;_0x2e7896=0xc8;}else{_0x2e7896=0xce;}_0x2d995a['status'](_0x2e7896);return _0x2d995a[_0xb73e('0x2d')](_0xb73e('0x2e'),_0x1df2d9+'-'+_0x2fef57+'/'+_0x499c44)[_0xb73e('0x28')](_0x5713b8);}return null;};}function patchUpdates(_0x5ba3d5){return function(_0x1bc634){try{jsonpatch[_0xb73e('0x2f')](_0x1bc634,_0x5ba3d5,!![]);}catch(_0x204c24){return BPromise[_0xb73e('0x30')](_0x204c24);}return _0x1bc634[_0xb73e('0x31')]();};}function saveUpdates(_0x40e412,_0x5ab277){return function(_0x13c25f){if(_0x13c25f){return _0x13c25f[_0xb73e('0x32')](_0x40e412)[_0xb73e('0x33')](function(_0x463e72){return _0x463e72;});}return null;};}function removeEntity(_0x196902,_0x46433a){return function(_0x15c576){if(_0x15c576){return _0x15c576[_0xb73e('0x34')]()[_0xb73e('0x33')](function(){var _0x44029f=_0x15c576[_0xb73e('0x35')]({'plain':!![]});var _0x52b011=_0xb73e('0x36');return db[_0xb73e('0x37')][_0xb73e('0x34')]({'where':{'type':_0x52b011,'resourceId':_0x44029f['id']}})['then'](function(){return _0x15c576;});})[_0xb73e('0x33')](function(){_0x196902[_0xb73e('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2231eb,_0x1f4260){return function(_0x16b5a8){if(!_0x16b5a8){_0x2231eb[_0xb73e('0x38')](0x194);}return _0x16b5a8;};}function handleError(_0x1abbb2,_0x4731dd){_0x4731dd=_0x4731dd||0x1f4;return function(_0x2e95f8){logger[_0xb73e('0x21')](_0x2e95f8[_0xb73e('0x39')]);if(_0x2e95f8[_0xb73e('0x3a')]){delete _0x2e95f8[_0xb73e('0x3a')];}_0x1abbb2[_0xb73e('0x26')](_0x4731dd)['send'](_0x2e95f8);};}exports['index']=function(_0x589423,_0x3681ea){var _0x59fbc4={'include':[{'model':db['Pause'],'as':_0xb73e('0x3b')}]},_0x57ed7d={},_0x3d56ad={'count':0x0,'rows':[]};var _0x4e52b3=_[_0xb73e('0x3c')](db[_0xb73e('0x3d')][_0xb73e('0x3e')],function(_0x1aaf20){return{'name':_0x1aaf20[_0xb73e('0x3f')],'type':_0x1aaf20[_0xb73e('0x40')][_0xb73e('0x41')]};});_0x57ed7d[_0xb73e('0x42')]=_[_0xb73e('0x3c')](_0x4e52b3,_0xb73e('0x3a'));_0x57ed7d[_0xb73e('0x43')]=_[_0xb73e('0x44')](_0x589423[_0xb73e('0x43')]);_0x57ed7d[_0xb73e('0x45')]=_[_0xb73e('0x46')](_0x57ed7d['model'],_0x57ed7d[_0xb73e('0x43')]);_0x59fbc4['attributes']=_[_0xb73e('0x46')](_0x57ed7d['model'],qs['fields'](_0x589423['query'][_0xb73e('0x47')]));_0x59fbc4['attributes']=_0x59fbc4[_0xb73e('0x48')][_0xb73e('0x49')]?_0x59fbc4[_0xb73e('0x48')]:_0x57ed7d[_0xb73e('0x42')];if(!_0x589423[_0xb73e('0x43')][_0xb73e('0x4a')]('nolimit')){_0x59fbc4[_0xb73e('0x2a')]=qs[_0xb73e('0x2a')](_0x589423[_0xb73e('0x43')][_0xb73e('0x2a')]);_0x59fbc4[_0xb73e('0x2b')]=qs[_0xb73e('0x2b')](_0x589423[_0xb73e('0x43')][_0xb73e('0x2b')]);}_0x59fbc4[_0xb73e('0x4b')]=qs[_0xb73e('0x4c')](_0x589423[_0xb73e('0x43')][_0xb73e('0x4c')]);_0x59fbc4[_0xb73e('0x4d')]=qs[_0xb73e('0x45')](_[_0xb73e('0x4e')](_0x589423[_0xb73e('0x43')],_0x57ed7d[_0xb73e('0x45')]),_0x4e52b3);if(_0x589423[_0xb73e('0x43')][_0xb73e('0x4f')]){_0x59fbc4['where']=_[_0xb73e('0x50')](_0x59fbc4[_0xb73e('0x4d')],{'$or':_[_0xb73e('0x3c')](_0x4e52b3,function(_0x1859df){if(_0x1859df[_0xb73e('0x40')]!==_0xb73e('0x51')){var _0x307941={};_0x307941[_0x1859df['name']]={'$like':'%'+_0x589423[_0xb73e('0x43')][_0xb73e('0x4f')]+'%'};return _0x307941;}})});}_0x59fbc4=_[_0xb73e('0x50')]({},_0x59fbc4,_0x589423[_0xb73e('0x52')]);var _0x18a505={'where':_0x59fbc4[_0xb73e('0x4d')]};return db['WhatsappAccount'][_0xb73e('0x2c')](_0x18a505)['then'](function(_0x4bab20){_0x3d56ad[_0xb73e('0x2c')]=_0x4bab20;if(_0x589423[_0xb73e('0x43')][_0xb73e('0x53')]){_0x59fbc4[_0xb73e('0x54')]=[{'all':!![]}];}return db['WhatsappAccount'][_0xb73e('0x55')](_0x59fbc4);})['then'](function(_0x3f9e63){_0x3d56ad[_0xb73e('0x56')]=_0x3f9e63;return _0x3d56ad;})['then'](respondWithFilteredResult(_0x3681ea,_0x59fbc4))['catch'](handleError(_0x3681ea,null));};exports[_0xb73e('0x57')]=function(_0x2d7fa1,_0x94e8d4){var _0x313abb={'raw':![],'where':{'id':_0x2d7fa1[_0xb73e('0x58')]['id']},'include':[{'model':db[_0xb73e('0x59')],'as':'mandatoryDispositionPause'}]},_0x2106d2={};_0x2106d2[_0xb73e('0x42')]=_[_0xb73e('0x44')](db['WhatsappAccount'][_0xb73e('0x3e')]);_0x2106d2[_0xb73e('0x43')]=_['keys'](_0x2d7fa1['query']);_0x2106d2['filters']=_[_0xb73e('0x46')](_0x2106d2[_0xb73e('0x42')],_0x2106d2[_0xb73e('0x43')]);_0x313abb[_0xb73e('0x48')]=_[_0xb73e('0x46')](_0x2106d2[_0xb73e('0x42')],qs[_0xb73e('0x47')](_0x2d7fa1[_0xb73e('0x43')][_0xb73e('0x47')]));_0x313abb[_0xb73e('0x48')]=_0x313abb[_0xb73e('0x48')][_0xb73e('0x49')]?_0x313abb[_0xb73e('0x48')]:_0x2106d2[_0xb73e('0x42')];if(_0x2d7fa1[_0xb73e('0x43')]['includeAll']){_0x313abb['include']=[{'all':!![]}];}_0x313abb=_[_0xb73e('0x50')]({},_0x313abb,_0x2d7fa1[_0xb73e('0x52')]);return db[_0xb73e('0x3d')][_0xb73e('0x5a')](_0x313abb)['then'](handleEntityNotFound(_0x94e8d4,null))[_0xb73e('0x33')](respondWithResult(_0x94e8d4,null))['catch'](handleError(_0x94e8d4,null));};exports[_0xb73e('0x5b')]=function(_0x2ee96d,_0x19dc4c){return db['WhatsappAccount'][_0xb73e('0x5b')](_0x2ee96d['body'],{})[_0xb73e('0x33')](function(_0x191610){var _0x4d2cfe=_0x2ee96d['user'][_0xb73e('0x35')]({'plain':!![]});if(!_0x4d2cfe)throw new Error(_0xb73e('0x5c'));if(_0x4d2cfe[_0xb73e('0x5d')]===_0xb73e('0x5e')){var _0x49bd8d=_0x191610[_0xb73e('0x35')]({'plain':!![]});var _0x6bb067='WhatsappAccounts';return db[_0xb73e('0x5f')][_0xb73e('0x5a')]({'where':{'name':_0x6bb067,'userProfileId':_0x4d2cfe[_0xb73e('0x60')]},'raw':!![]})[_0xb73e('0x33')](function(_0x59a51e){if(_0x59a51e&&_0x59a51e[_0xb73e('0x61')]===0x0){return db[_0xb73e('0x37')]['create']({'name':_0x49bd8d[_0xb73e('0x3a')],'resourceId':_0x49bd8d['id'],'type':_0x59a51e['name'],'sectionId':_0x59a51e['id']},{})[_0xb73e('0x33')](function(){return _0x191610;});}else{return _0x191610;}})[_0xb73e('0x25')](function(_0x4d14ef){logger['error'](_0xb73e('0x62'),_0x4d14ef);throw _0x4d14ef;});}return _0x191610;})[_0xb73e('0x33')](respondWithResult(_0x19dc4c,0xc9))[_0xb73e('0x25')](handleError(_0x19dc4c,null));};exports[_0xb73e('0x32')]=function(_0x4e2297,_0x3a6ded){if(_0x4e2297['body']['id']){delete _0x4e2297['body']['id'];}return db['WhatsappAccount'][_0xb73e('0x5a')]({'where':{'id':_0x4e2297[_0xb73e('0x58')]['id']},'include':[{'model':db[_0xb73e('0x59')],'as':_0xb73e('0x3b')}]})[_0xb73e('0x33')](handleEntityNotFound(_0x3a6ded,null))[_0xb73e('0x33')](saveUpdates(_0x4e2297[_0xb73e('0x63')],null))['then'](respondWithResult(_0x3a6ded,null))[_0xb73e('0x25')](handleError(_0x3a6ded,null));};exports[_0xb73e('0x34')]=function(_0x2ba241,_0x236275){return db[_0xb73e('0x3d')]['find']({'where':{'id':_0x2ba241[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x236275,null))[_0xb73e('0x33')](removeEntity(_0x236275,null))[_0xb73e('0x25')](handleError(_0x236275,null));};exports[_0xb73e('0x64')]=function(_0x36d858,_0x26bb6e){return db['WhatsappAccount'][_0xb73e('0x64')]()[_0xb73e('0x33')](respondWithResult(_0x26bb6e,null))[_0xb73e('0x25')](handleError(_0x26bb6e,null));};exports[_0xb73e('0x65')]=function(_0x20e65c,_0x1f14bd,_0xa440ed){if(_0x20e65c[_0xb73e('0x63')]['id']){delete _0x20e65c['body']['id'];}return db[_0xb73e('0x3d')]['find']({'where':{'id':_0x20e65c[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x1f14bd,null))['then'](function(_0x1e04ee){if(_0x1e04ee){_0x20e65c[_0xb73e('0x63')]['WhatsappAccountId']=_0x1e04ee['id'];return db[_0xb73e('0x66')][_0xb73e('0x5b')](_0x20e65c['body']);}})[_0xb73e('0x33')](respondWithResult(_0x1f14bd,null))[_0xb73e('0x25')](handleError(_0x1f14bd,null));};exports['getDispositions']=function(_0x235cb8,_0x4591f1,_0x2c2baf){var _0x526d11={'raw':![],'where':{}};var _0x473dfc={};var _0x4f0538={'count':0x0,'rows':[]};return db[_0xb73e('0x3d')]['findOne']({'where':{'id':_0x235cb8[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x4591f1,null))[_0xb73e('0x33')](function(_0x4b0ddb){if(_0x4b0ddb){_0x473dfc[_0xb73e('0x42')]=_[_0xb73e('0x44')](db[_0xb73e('0x66')][_0xb73e('0x3e')]);_0x473dfc[_0xb73e('0x43')]=_[_0xb73e('0x44')](_0x235cb8['query']);_0x473dfc[_0xb73e('0x45')]=_['intersection'](_0x473dfc[_0xb73e('0x42')],_0x473dfc[_0xb73e('0x43')]);_0x526d11[_0xb73e('0x48')]=_[_0xb73e('0x46')](_0x473dfc[_0xb73e('0x42')],qs[_0xb73e('0x47')](_0x235cb8[_0xb73e('0x43')][_0xb73e('0x47')]));_0x526d11[_0xb73e('0x48')]=_0x526d11['attributes'][_0xb73e('0x49')]?_0x526d11[_0xb73e('0x48')]:_0x473dfc[_0xb73e('0x42')];if(!_0x235cb8[_0xb73e('0x43')][_0xb73e('0x4a')]('nolimit')){_0x526d11['limit']=qs[_0xb73e('0x2a')](_0x235cb8[_0xb73e('0x43')][_0xb73e('0x2a')]);_0x526d11[_0xb73e('0x2b')]=qs[_0xb73e('0x2b')](_0x235cb8[_0xb73e('0x43')][_0xb73e('0x2b')]);}_0x526d11[_0xb73e('0x4b')]=qs['sort'](_0x235cb8[_0xb73e('0x43')][_0xb73e('0x4c')]);_0x526d11[_0xb73e('0x4d')]=qs[_0xb73e('0x45')](_[_0xb73e('0x4e')](_0x235cb8[_0xb73e('0x43')],_0x473dfc[_0xb73e('0x45')]));_0x526d11[_0xb73e('0x4d')][_0xb73e('0x67')]=_0x4b0ddb['id'];if(_0x235cb8['query'][_0xb73e('0x4f')]){_0x526d11['where']=_[_0xb73e('0x50')](_0x526d11[_0xb73e('0x4d')],{'$or':_['map'](_0x526d11[_0xb73e('0x48')],function(_0x47145b){var _0x5d0b52={};_0x5d0b52[_0x47145b]={'$like':'%'+_0x235cb8[_0xb73e('0x43')][_0xb73e('0x4f')]+'%'};return _0x5d0b52;})});}_0x526d11=_[_0xb73e('0x50')]({},_0x526d11,_0x235cb8[_0xb73e('0x52')]);return db['Disposition'][_0xb73e('0x2c')]({'where':_0x526d11[_0xb73e('0x4d')]})[_0xb73e('0x33')](function(_0x22d794){_0x4f0538[_0xb73e('0x2c')]=_0x22d794;if(_0x235cb8[_0xb73e('0x43')]['includeAll']){_0x526d11[_0xb73e('0x54')]=[{'all':!![]}];}return db['Disposition'][_0xb73e('0x55')](_0x526d11);})[_0xb73e('0x33')](function(_0x6c0a1e){_0x4f0538[_0xb73e('0x56')]=_0x6c0a1e;return _0x4f0538;});}})[_0xb73e('0x33')](respondWithFilteredResult(_0x4591f1,_0x526d11))['catch'](handleError(_0x4591f1,null));};exports[_0xb73e('0x68')]=function(_0x260dfe,_0x32beec,_0x3c3747){return db[_0xb73e('0x3d')][_0xb73e('0x5a')]({'where':{'id':_0x260dfe[_0xb73e('0x58')]['id']}})['then'](handleEntityNotFound(_0x32beec,null))['then'](function(_0x59613c){if(_0x59613c){return _0x59613c['removeDispositions'](_0x260dfe[_0xb73e('0x43')][_0xb73e('0x69')]);}})[_0xb73e('0x33')](respondWithStatusCode(_0x32beec,null))[_0xb73e('0x25')](handleError(_0x32beec,null));};exports[_0xb73e('0x6a')]=function(_0x587778,_0x258267,_0x1b7fbc){if(_0x587778['body']['id']){delete _0x587778[_0xb73e('0x63')]['id'];}return db[_0xb73e('0x3d')][_0xb73e('0x5a')]({'where':{'id':_0x587778['params']['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x258267,null))[_0xb73e('0x33')](function(_0x1636a5){if(_0x1636a5){_0x587778[_0xb73e('0x63')][_0xb73e('0x67')]=_0x1636a5['id'];return db['CannedAnswer']['create'](_0x587778[_0xb73e('0x63')]);}})['then'](respondWithResult(_0x258267,null))[_0xb73e('0x25')](handleError(_0x258267,null));};exports[_0xb73e('0x6b')]=function(_0x219447,_0x3fb7c0,_0x295922){var _0x519cd6={'raw':![],'where':{}};var _0x3cff33={};var _0x41d510={'count':0x0,'rows':[]};return db[_0xb73e('0x3d')]['findOne']({'where':{'id':_0x219447[_0xb73e('0x58')]['id']}})['then'](handleEntityNotFound(_0x3fb7c0,null))[_0xb73e('0x33')](function(_0x63565a){if(_0x63565a){_0x3cff33[_0xb73e('0x42')]=_[_0xb73e('0x44')](db['CannedAnswer'][_0xb73e('0x3e')]);_0x3cff33['query']=_['keys'](_0x219447[_0xb73e('0x43')]);_0x3cff33['filters']=_['intersection'](_0x3cff33[_0xb73e('0x42')],_0x3cff33[_0xb73e('0x43')]);_0x519cd6[_0xb73e('0x48')]=_['intersection'](_0x3cff33['model'],qs[_0xb73e('0x47')](_0x219447[_0xb73e('0x43')][_0xb73e('0x47')]));_0x519cd6[_0xb73e('0x48')]=_0x519cd6['attributes'][_0xb73e('0x49')]?_0x519cd6[_0xb73e('0x48')]:_0x3cff33['model'];if(!_0x219447['query'][_0xb73e('0x4a')]('nolimit')){_0x519cd6[_0xb73e('0x2a')]=qs[_0xb73e('0x2a')](_0x219447[_0xb73e('0x43')][_0xb73e('0x2a')]);_0x519cd6[_0xb73e('0x2b')]=qs[_0xb73e('0x2b')](_0x219447[_0xb73e('0x43')][_0xb73e('0x2b')]);}_0x519cd6[_0xb73e('0x4b')]=qs[_0xb73e('0x4c')](_0x219447[_0xb73e('0x43')]['sort']);_0x519cd6[_0xb73e('0x4d')]=qs[_0xb73e('0x45')](_[_0xb73e('0x4e')](_0x219447['query'],_0x3cff33[_0xb73e('0x45')]));_0x519cd6['where'][_0xb73e('0x67')]=_0x63565a['id'];if(_0x219447[_0xb73e('0x43')][_0xb73e('0x4f')]){_0x519cd6['where']=_[_0xb73e('0x50')](_0x519cd6[_0xb73e('0x4d')],{'$or':_['map'](_0x519cd6[_0xb73e('0x48')],function(_0x1dc39b){var _0x3a9f63={};_0x3a9f63[_0x1dc39b]={'$like':'%'+_0x219447['query'][_0xb73e('0x4f')]+'%'};return _0x3a9f63;})});}_0x519cd6=_[_0xb73e('0x50')]({},_0x519cd6,_0x219447[_0xb73e('0x52')]);return db[_0xb73e('0x6c')][_0xb73e('0x2c')]({'where':_0x519cd6['where']})[_0xb73e('0x33')](function(_0x2aec28){_0x41d510[_0xb73e('0x2c')]=_0x2aec28;if(_0x219447[_0xb73e('0x43')][_0xb73e('0x53')]){_0x519cd6['include']=[{'all':!![]}];}return db[_0xb73e('0x6c')][_0xb73e('0x55')](_0x519cd6);})[_0xb73e('0x33')](function(_0x486af6){_0x41d510[_0xb73e('0x56')]=_0x486af6;return _0x41d510;});}})['then'](respondWithFilteredResult(_0x3fb7c0,_0x519cd6))[_0xb73e('0x25')](handleError(_0x3fb7c0,null));};exports[_0xb73e('0x6d')]=function(_0x23cbd3,_0x58bf74,_0x571998){return db[_0xb73e('0x3d')][_0xb73e('0x5a')]({'where':{'id':_0x23cbd3[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x58bf74,null))['then'](function(_0x110c8){if(_0x110c8){return _0x110c8[_0xb73e('0x6d')](_0x23cbd3['query']['ids']);}})['then'](respondWithStatusCode(_0x58bf74,null))[_0xb73e('0x25')](handleError(_0x58bf74,null));};exports[_0xb73e('0x6e')]=function(_0x43b538,_0x3e4676,_0x3dec45){return db['WhatsappAccount'][_0xb73e('0x5a')]({'where':{'id':_0x43b538[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x3e4676,null))[_0xb73e('0x33')](function(_0x4e8351){if(_0x4e8351){return _0x4e8351[_0xb73e('0x6e')](_0x43b538[_0xb73e('0x63')][_0xb73e('0x69')],_[_0xb73e('0x6f')](_0x43b538[_0xb73e('0x63')],[_0xb73e('0x69'),'id'])||{})['spread'](function(_0x27d5e5){for(var _0x5a2e03=0x0;_0x5a2e03<_0x43b538[_0xb73e('0x63')][_0xb73e('0x69')][_0xb73e('0x49')];_0x5a2e03+=0x1){socket[_0xb73e('0x70')](_0xb73e('0x71'),{'UserId':Number(_0x43b538[_0xb73e('0x63')][_0xb73e('0x69')][_0x5a2e03]),'WhatsappAccountId':Number(_0x43b538[_0xb73e('0x58')]['id'])});}return _0x27d5e5;});}})[_0xb73e('0x33')](respondWithResult(_0x3e4676,null))[_0xb73e('0x25')](handleError(_0x3e4676,null));};exports[_0xb73e('0x72')]=function(_0x18baf4,_0x2e61d5,_0xa95098){return db['WhatsappAccount'][_0xb73e('0x5a')]({'where':{'id':_0x18baf4[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x2e61d5,null))[_0xb73e('0x33')](function(_0x28ee5a){if(_0x28ee5a){return _0x28ee5a[_0xb73e('0x72')](_0x18baf4[_0xb73e('0x43')][_0xb73e('0x69')])['then'](function(){if(_['isArray'](_0x18baf4[_0xb73e('0x43')][_0xb73e('0x69')])){for(var _0x254e26=0x0;_0x254e26<_0x18baf4[_0xb73e('0x43')][_0xb73e('0x69')][_0xb73e('0x49')];_0x254e26+=0x1){socket[_0xb73e('0x70')](_0xb73e('0x73'),{'UserId':Number(_0x18baf4[_0xb73e('0x43')]['ids'][_0x254e26]),'WhatsappAccountId':Number(_0x18baf4[_0xb73e('0x58')]['id'])});}}else{socket[_0xb73e('0x70')]('userWhatsappAccount:remove',{'UserId':Number(_0x18baf4[_0xb73e('0x43')][_0xb73e('0x69')]),'WhatsappAccountId':Number(_0x18baf4[_0xb73e('0x58')]['id'])});}});}})[_0xb73e('0x33')](respondWithStatusCode(_0x2e61d5,null))['catch'](handleError(_0x2e61d5,null));};exports[_0xb73e('0x74')]=function(_0x2b6b66,_0x140bd6,_0x164e9b){var _0x28d716={};var _0x525c9c={};var _0x4fb408;var _0x369d0c;return db[_0xb73e('0x3d')][_0xb73e('0x75')]({'where':{'id':_0x2b6b66[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x140bd6,null))[_0xb73e('0x33')](function(_0x36e3a2){if(_0x36e3a2){_0x4fb408=_0x36e3a2;_0x525c9c[_0xb73e('0x42')]=_[_0xb73e('0x44')](db[_0xb73e('0x76')]['rawAttributes']);_0x525c9c[_0xb73e('0x43')]=_[_0xb73e('0x44')](_0x2b6b66[_0xb73e('0x43')]);_0x525c9c[_0xb73e('0x45')]=_[_0xb73e('0x46')](_0x525c9c[_0xb73e('0x42')],_0x525c9c[_0xb73e('0x43')]);_0x28d716[_0xb73e('0x48')]=_['intersection'](_0x525c9c[_0xb73e('0x42')],qs[_0xb73e('0x47')](_0x2b6b66[_0xb73e('0x43')][_0xb73e('0x47')]));_0x28d716[_0xb73e('0x48')]=_0x28d716['attributes']['length']?_0x28d716[_0xb73e('0x48')]:_0x525c9c[_0xb73e('0x42')];_0x28d716[_0xb73e('0x4b')]=qs['sort'](_0x2b6b66[_0xb73e('0x43')][_0xb73e('0x4c')]);_0x28d716[_0xb73e('0x4d')]=qs[_0xb73e('0x45')](_[_0xb73e('0x4e')](_0x2b6b66['query'],_0x525c9c[_0xb73e('0x45')]));if(_0x2b6b66[_0xb73e('0x43')][_0xb73e('0x4f')]){_0x28d716[_0xb73e('0x4d')]=_['merge'](_0x28d716[_0xb73e('0x4d')],{'$or':_[_0xb73e('0x3c')](_0x28d716[_0xb73e('0x48')],function(_0x559bc5){var _0xf9c229={};_0xf9c229[_0x559bc5]={'$like':'%'+_0x2b6b66[_0xb73e('0x43')]['filter']+'%'};return _0xf9c229;})});}_0x28d716=_[_0xb73e('0x50')]({},_0x28d716,_0x2b6b66[_0xb73e('0x52')]);return _0x4fb408[_0xb73e('0x74')](_0x28d716);}})['then'](function(_0x943c9a){if(_0x943c9a){_0x369d0c=_0x943c9a[_0xb73e('0x49')];if(!_0x2b6b66['query'][_0xb73e('0x4a')](_0xb73e('0x77'))){_0x28d716[_0xb73e('0x2a')]=qs[_0xb73e('0x2a')](_0x2b6b66[_0xb73e('0x43')]['limit']);_0x28d716[_0xb73e('0x2b')]=qs[_0xb73e('0x2b')](_0x2b6b66[_0xb73e('0x43')][_0xb73e('0x2b')]);}return _0x4fb408['getAgents'](_0x28d716);}})[_0xb73e('0x33')](function(_0x54beec){if(_0x54beec){return _0x54beec?{'count':_0x369d0c,'rows':_0x54beec}:null;}})[_0xb73e('0x33')](respondWithResult(_0x140bd6,null))[_0xb73e('0x25')](handleError(_0x140bd6,null));};exports[_0xb73e('0x78')]=function(_0x1800cc,_0x11c27e){var _0x28f735=_0x1800cc['params']['id'];var _0x12d78f=_0x1800cc[_0xb73e('0x63')];var _0x2fa349=0xc8;var _0x2fb598=null;return db[_0xb73e('0x79')][_0xb73e('0x7a')]({'isolationLevel':db[_0xb73e('0x79')][_0xb73e('0x7b')][_0xb73e('0x7c')][_0xb73e('0x7d')]},function(_0x18a6a8){return db[_0xb73e('0x3d')][_0xb73e('0x75')]({'where':{'id':_0x28f735},'transaction':_0x18a6a8})[_0xb73e('0x33')](function(_0x46ccb6){if(_0x46ccb6){return db['WhatsappApplication'][_0xb73e('0x34')]({'where':{'WhatsappAccountId':_0x28f735},'transaction':_0x18a6a8})[_0xb73e('0x33')](function(){var _0x19f418=_[_0xb73e('0x3c')](_0x12d78f,function(_0x36fd62){_0x36fd62[_0xb73e('0x67')]=_0x28f735;return _0x36fd62;});return db[_0xb73e('0x7e')][_0xb73e('0x7f')](_0x19f418,{'transaction':_0x18a6a8});});}else{_0x2fa349=0x194;_0x2fb598=[];}});})[_0xb73e('0x33')](function(){if(_0x2fa349!==0x194){return db[_0xb73e('0x7e')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x28f735},'order':_0xb73e('0x80')})[_0xb73e('0x33')](function(_0x441c33){_0x2fb598=_0x441c33;});}})['catch'](function(_0x3e0b2d){_0x2fa349=0x1f4;logger[_0xb73e('0x21')](_0x3e0b2d[_0xb73e('0x39')]);if(_0x3e0b2d[_0xb73e('0x3a')]){delete _0x3e0b2d[_0xb73e('0x3a')];}_0x2fb598=_0x3e0b2d;})[_0xb73e('0x81')](function(){if(_0x2fb598===null){_0x11c27e['sendStatus'](_0x2fa349);}else{if(_0x2fa349===0x1f4){_0x11c27e[_0xb73e('0x26')](_0x2fa349)[_0xb73e('0x82')](_0x2fb598);}else{_0x11c27e[_0xb73e('0x26')](_0x2fa349)[_0xb73e('0x28')](_0x2fb598);}}});};exports[_0xb73e('0x83')]=function(_0x5f5c2f,_0x5a49c3,_0x1ef9e5){var _0x5e0847={};var _0x1dd75c={};var _0x4cbb82;var _0x125c7b;return db['WhatsappAccount']['findOne']({'where':{'id':_0x5f5c2f[_0xb73e('0x58')]['id']}})[_0xb73e('0x33')](handleEntityNotFound(_0x5a49c3,null))['then'](function(_0xf86a6e){if(_0xf86a6e){_0x4cbb82=_0xf86a6e;_0x1dd75c['model']=_[_0xb73e('0x44')](db['WhatsappApplication'][_0xb73e('0x3e')]);_0x1dd75c[_0xb73e('0x43')]=_[_0xb73e('0x44')](_0x5f5c2f['query']);_0x1dd75c[_0xb73e('0x45')]=_[_0xb73e('0x46')](_0x1dd75c[_0xb73e('0x42')],_0x1dd75c[_0xb73e('0x43')]);_0x5e0847[_0xb73e('0x48')]=_[_0xb73e('0x46')](_0x1dd75c[_0xb73e('0x42')],qs['fields'](_0x5f5c2f['query'][_0xb73e('0x47')]));_0x5e0847[_0xb73e('0x48')]=_0x5e0847[_0xb73e('0x48')][_0xb73e('0x49')]?_0x5e0847[_0xb73e('0x48')]:_0x1dd75c[_0xb73e('0x42')];_0x5e0847[_0xb73e('0x4b')]=qs[_0xb73e('0x4c')](_0x5f5c2f[_0xb73e('0x43')]['sort']);_0x5e0847['where']=qs[_0xb73e('0x45')](_[_0xb73e('0x4e')](_0x5f5c2f[_0xb73e('0x43')],_0x1dd75c[_0xb73e('0x45')]));if(_0x5f5c2f['query']['filter']){_0x5e0847[_0xb73e('0x4d')]=_['merge'](_0x5e0847[_0xb73e('0x4d')],{'$or':_[_0xb73e('0x3c')](_0x5e0847[_0xb73e('0x48')],function(_0x2be178){var _0x36ca3d={};_0x36ca3d[_0x2be178]={'$like':'%'+_0x5f5c2f[_0xb73e('0x43')][_0xb73e('0x4f')]+'%'};return _0x36ca3d;})});}_0x5e0847=_['merge']({},_0x5e0847,_0x5f5c2f[_0xb73e('0x52')]);return _0x4cbb82['getApplications'](_0x5e0847);}})[_0xb73e('0x33')](function(_0x5714bb){if(_0x5714bb){_0x125c7b=_0x5714bb[_0xb73e('0x49')];if(!_0x5f5c2f[_0xb73e('0x43')][_0xb73e('0x4a')](_0xb73e('0x77'))){_0x5e0847['limit']=qs[_0xb73e('0x2a')](_0x5f5c2f[_0xb73e('0x43')]['limit']);_0x5e0847[_0xb73e('0x2b')]=qs[_0xb73e('0x2b')](_0x5f5c2f[_0xb73e('0x43')][_0xb73e('0x2b')]);}return _0x4cbb82[_0xb73e('0x83')](_0x5e0847);}})[_0xb73e('0x33')](function(_0x5e7ab3){if(_0x5e7ab3){return _0x5e7ab3?{'count':_0x125c7b,'rows':_0x5e7ab3}:null;}})[_0xb73e('0x33')](respondWithResult(_0x5a49c3,null))[_0xb73e('0x25')](handleError(_0x5a49c3,null));};exports[_0xb73e('0x84')]=function(_0x4a5ccd,_0x17b8d8,_0x2c6362){var _0x194e91={'channel':'whatsapp'};var _0xad55b8=[];var _0x22a856=[];var _0x5158de={};return db[_0xb73e('0x3d')][_0xb73e('0x5a')]({'where':{'id':_0x4a5ccd['params']['id']},'include':[{'model':db[_0xb73e('0x7e')],'as':_0xb73e('0x85')}]})[_0xb73e('0x33')](handleEntityNotFound(_0x17b8d8,null))[_0xb73e('0x33')](function(_0x336e9b){_0x194e91['account']=_0x336e9b;if(_0x194e91['account']&&_0x194e91['account'][_0xb73e('0x40')]===_0xb73e('0x86')&&_0x4a5ccd['body'][_0xb73e('0x87')]){if(_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x87')][_0xb73e('0x49')]===0x0)return;if(_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x87')][0x0][_0xb73e('0x88')]!==_0xb73e('0x89'))return;return db[_0xb73e('0x8a')][_0xb73e('0x32')]({'read':!![],'readAt':_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x87')][0x0][_0xb73e('0x8b')]},{'where':{'messageId':_0x4a5ccd['body'][_0xb73e('0x87')][0x0][_0xb73e('0x8c')]},'individualHooks':!![]})['then'](function(_0x16a030){return _0x17b8d8[_0xb73e('0x26')](0xc8)[_0xb73e('0x28')](_0x16a030);});}_0x194e91[_0xb73e('0x8d')]=_[_0xb73e('0x8e')](_0x336e9b[_0xb73e('0x85')],[_0xb73e('0x80')],[_0xb73e('0x8f')]);if(_0x194e91[_0xb73e('0x90')]['Applications']){delete _0x194e91[_0xb73e('0x90')]['Applications'];}return db['CmContact'][_0xb73e('0x64')]()['then'](function(_0x2638c5){if(!_0x2638c5){throw new db[(_0xb73e('0x91'))][(_0xb73e('0x92'))](_0xb73e('0x93'));}_0xad55b8=_['difference'](_[_0xb73e('0x44')](_0x2638c5),[_0xb73e('0x94'),_0xb73e('0x95')]);_0x22a856=_['difference'](_['keys'](_0x2638c5),[_0xb73e('0x94'),_0xb73e('0x95'),_0xb73e('0x96'),_0xb73e('0x97')]);_0x194e91['body']={'mapKey':_0xb73e('0x98')};if(_0x194e91[_0xb73e('0x90')]&&_0x194e91['account'][_0xb73e('0x40')]===_0xb73e('0x99')){_0x194e91[_0xb73e('0x63')][_0xb73e('0x9a')]=_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x9b')]['replace'](_0xb73e('0x9c'),'');_0x194e91['body']['body']=_0x4a5ccd['body'][_0xb73e('0x9d')];_0x194e91[_0xb73e('0x63')]['messageId']=_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x9e')];}if(_0x194e91['account']&&_0x194e91[_0xb73e('0x90')][_0xb73e('0x40')]===_0xb73e('0x86')){_0x194e91['body'][_0xb73e('0x9a')]=_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x9f')][0x0][_0xb73e('0x9a')];_0x194e91['body'][_0xb73e('0x63')]=_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x9f')][0x0][_0xb73e('0x23')]['body'];_0x194e91['body'][_0xb73e('0xa0')]=_0x4a5ccd[_0xb73e('0x63')][_0xb73e('0x9f')][0x0]['message_id'];}if(_0x194e91[_0xb73e('0x63')]['id']){delete _0x194e91[_0xb73e('0x63')]['id'];}if(_[_0xb73e('0xa1')](_0x194e91['body'][_0xb73e('0x9a')])){throw new db['Sequelize'][(_0xb73e('0x92'))](_0xb73e('0xa2'));}if(_[_0xb73e('0xa1')](_0x194e91[_0xb73e('0x63')][_0xb73e('0x63')])||_0x194e91[_0xb73e('0x63')][_0xb73e('0x63')]===''){throw new db[(_0xb73e('0x91'))][(_0xb73e('0x92'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xb73e('0xa1')](_0x194e91[_0xb73e('0x63')][_0xb73e('0xa3')])){throw new db[(_0xb73e('0x91'))][(_0xb73e('0x92'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x22a856);}if(!_[_0xb73e('0xa4')](_0x22a856,_0x194e91[_0xb73e('0x63')]['mapKey'])){throw new db[(_0xb73e('0x91'))][(_0xb73e('0x92'))](_0xb73e('0xa5')+_0x22a856);}_0x5158de[_0x194e91[_0xb73e('0x63')][_0xb73e('0xa3')]]=_0x194e91[_0xb73e('0x63')][_0xb73e('0x9a')];return db['CmList'][_0xb73e('0x5a')]({'where':{'id':_0x194e91[_0xb73e('0x90')][_0xb73e('0x97')]},'include':[{'model':db[_0xb73e('0xa6')],'as':_0xb73e('0xa7'),'where':_0x5158de,'limit':0x1,'order':[[_0xb73e('0x95'),_0xb73e('0xa8')]]}]});})[_0xb73e('0x33')](handleEntityNotFound(_0x17b8d8,null))['then'](function(_0x4b2b8f){if(_0x4b2b8f){_0x194e91['list']=_['omit'](_0x4b2b8f,[_0xb73e('0xa7')]);if(_0x4b2b8f['Contacts'][_0xb73e('0x49')]){return _0x4b2b8f[_0xb73e('0xa7')][0x0];}var _0x2c5925=_[_0xb73e('0xa9')](_0x194e91['body'],{'firstName':_0x194e91[_0xb73e('0x63')][_0xb73e('0x9a')],'ListId':_0x4b2b8f['id']});_0x2c5925[_0x194e91[_0xb73e('0x63')][_0xb73e('0xa3')]]=_0x194e91[_0xb73e('0x63')][_0xb73e('0x9a')];return db['CmContact']['create'](_0x2c5925,{'fields':_0xad55b8,'raw':!![]});}})[_0xb73e('0x33')](handleEntityNotFound(_0x17b8d8,null))['then'](function(_0x44538a){if(_0x44538a){_0x194e91[_0xb73e('0xaa')]=_0x44538a;var _0x3e07c5={'ContactId':_0x44538a['id'],'phone':_0x194e91['body']['from'],'WhatsappAccountId':_0x4a5ccd[_0xb73e('0x58')]['id']};var _0x4fe987={'ContactId':_0x44538a['id'],'WhatsappAccountId':_0x4a5ccd['params']['id'],'closed':![]};return db[_0xb73e('0xab')][_0xb73e('0x5a')]({'where':_0x4fe987})[_0xb73e('0x33')](function(_0x6c60f3){if(_0x6c60f3){return[_0x6c60f3,![]];}return db[_0xb73e('0xab')][_0xb73e('0x5b')](_0x3e07c5)[_0xb73e('0x33')](function(_0x5227ec){return[_0x5227ec,!![]];});});}})[_0xb73e('0xac')](function(_0x48ca31,_0x5de390){_0x194e91[_0xb73e('0xad')]=_0x48ca31['get']({'plain':!![]});_0x194e91[_0xb73e('0xad')][_0xb73e('0xae')]=![];if(_0x5de390){if(_0x194e91[_0xb73e('0x90')]['autoclose']){_0x194e91[_0xb73e('0x8d')][_0xb73e('0xaf')]({'id':0x0,'priority':_0x194e91['applications'][_0xb73e('0x49')]+0x1,'app':_0xb73e('0xb0'),'appdata':_0xb73e('0xb1'),'interval':'*,*,*,*'});}_0x194e91[_0xb73e('0xad')][_0xb73e('0xae')]=!![];}return db[_0xb73e('0x8a')][_0xb73e('0x5b')]({'phone':_0x194e91[_0xb73e('0x63')][_0xb73e('0x9a')],'messageId':_0x194e91[_0xb73e('0x63')][_0xb73e('0xa0')],'body':_0x194e91['body'][_0xb73e('0x63')],'WhatsappAccountId':_0x4a5ccd[_0xb73e('0x58')]['id'],'WhatsappInteractionId':_0x48ca31['id'],'direction':'in','ContactId':_0x48ca31[_0xb73e('0xb2')],'AttachmentId':_0x194e91[_0xb73e('0x63')][_0xb73e('0xb3')]});})[_0xb73e('0x33')](function(_0x1eede2){_0x194e91[_0xb73e('0x23')]=_0x1eede2;if(_0x194e91[_0xb73e('0xad')][_0xb73e('0xb4')]){return db[_0xb73e('0x76')][_0xb73e('0x5a')]({'attributes':['id','name'],'where':{'id':_0x194e91[_0xb73e('0xad')][_0xb73e('0xb4')]}})['then'](function(_0x31501c){if(_0x31501c){_0x194e91[_0xb73e('0x8d')][_0xb73e('0xb5')]({'id':0x0,'priority':0x0,'app':_0xb73e('0xb6'),'appdata':_0x31501c[_0xb73e('0x3a')]+','+(_0x194e91[_0xb73e('0x90')]['waitForTheAssignedAgent']||0xa),'interval':_0xb73e('0xb7')});}return respondWithRpcPromise(_0xb73e('0xb8'),_0xb73e('0xb9'),_0x194e91);});}return respondWithRpcPromise(_0xb73e('0xb8'),'startRouting',_0x194e91);})['then'](function(_0x5a9a94){if(_0x5a9a94){var _0x332a5c=0xc8;var _0x230f08=_0xb73e('0xba');logger[_0xb73e('0xbb')](_0xb73e('0xbc'),_0x230f08,_0x332a5c,'entity\x20found');logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x230f08,_0x332a5c,_0xb73e('0xbd'),JSON[_0xb73e('0xbe')](_0x5a9a94));if(_0x194e91[_0xb73e('0x90')][_0xb73e('0x40')]==='twilio'){return _0x17b8d8[_0xb73e('0x26')](_0x332a5c)['set'](_0xb73e('0xbf'),_0xb73e('0xc0'))[_0xb73e('0x82')](_0xb73e('0xc1'));}else{return _0x17b8d8[_0xb73e('0x26')](_0x332a5c)[_0xb73e('0x28')](_0x5a9a94);}}});})[_0xb73e('0x25')](handleError(_0x17b8d8,null));};exports[_0xb73e('0x82')]=function(_0x4775c6,_0x28e944,_0x5a7234){var _0x47b5a8,_0x2e2fdf,_0x1821f5;if(_[_0xb73e('0xa1')](_0x4775c6[_0xb73e('0x63')]['body'])||_0x4775c6[_0xb73e('0x63')][_0xb73e('0x63')]===''){throw new db['Sequelize'][(_0xb73e('0x92'))](_0xb73e('0xc2'));}if(_[_0xb73e('0xa1')](_0x4775c6[_0xb73e('0x63')]['to'])){throw new db[(_0xb73e('0x91'))][(_0xb73e('0x92'))](_0xb73e('0xc3'));}_0x47b5a8=_0x4775c6['body']['to'];return db[_0xb73e('0x3d')][_0xb73e('0x5a')]({'where':{'id':_0x4775c6[_0xb73e('0x58')]['id']},'include':[{'model':db[_0xb73e('0xc4')],'as':_0xb73e('0xc5'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x47b5a8},'limit':0x1,'order':[[_0xb73e('0x95'),_0xb73e('0xa8')]]}]}]})[_0xb73e('0x33')](handleEntityNotFound(_0x28e944,null))[_0xb73e('0x33')](function(_0x200652){if(_0x200652&&_0x200652[_0xb73e('0xc5')]){_0x2e2fdf=_0x200652['get']({'plain':!![]});if(_0x2e2fdf[_0xb73e('0xc5')]&&_0x2e2fdf['List']['Contacts']['length']){return _0x2e2fdf[_0xb73e('0xc5')][_0xb73e('0xa7')][0x0];}return db['CmContact'][_0xb73e('0x5b')](_[_0xb73e('0xa9')](_0x4775c6['body'],{'firstName':_0x47b5a8,'mobile':_0x47b5a8,'phone':_0x47b5a8,'ListId':_0x2e2fdf['ListId']}));}})[_0xb73e('0x33')](handleEntityNotFound(_0x28e944,null))[_0xb73e('0x33')](function(_0x48a801){if(_0x48a801){_0x1821f5=_0x48a801;return db[_0xb73e('0xab')][_0xb73e('0x5a')]({'where':{'ContactId':_0x1821f5['id'],'closed':![],'WhatsappAccountId':_0x2e2fdf['id']}})[_0xb73e('0x33')](function(_0x1647c6){if(_0x1647c6){return[_0x1647c6,![]];}return db[_0xb73e('0xab')]['create']({'UserId':_0x4775c6[_0xb73e('0x5e')]['id'],'ContactId':_0x1821f5['id'],'WhatsappAccountId':_0x2e2fdf['id'],'phone':_0x47b5a8,'firstMsgDirection':'out','Messages':[_[_0xb73e('0x50')](_0x4775c6['body'],{'read':![],'body':_0x4775c6[_0xb73e('0x63')][_0xb73e('0x63')],'phone':_0x47b5a8,'WhatsappAccountId':_0x2e2fdf['id'],'UserId':_0x4775c6[_0xb73e('0x5e')]['id'],'ContactId':_0x1821f5['id']})]},{'include':[{'model':db[_0xb73e('0x8a')],'as':_0xb73e('0xc6')}]})[_0xb73e('0x33')](function(_0x4f59ac){return[_0x4f59ac,!![]];});});}})[_0xb73e('0xac')](function(_0x9d8aa5,_0x28d2c8){if(_0x28d2c8){return _0x9d8aa5;}return db[_0xb73e('0x8a')][_0xb73e('0x5b')](_[_0xb73e('0x50')](_0x4775c6['body'],{'read':![],'body':_0x4775c6[_0xb73e('0x63')][_0xb73e('0x63')],'phone':_0x47b5a8,'WhatsappAccountId':_0x2e2fdf['id'],'WhatsappInteractionId':_0x9d8aa5['id'],'UserId':_0x4775c6['user']['id'],'ContactId':_0x1821f5['id']}))[_0xb73e('0x33')](function(_0x1b0670){_0x9d8aa5[_0xb73e('0xc7')][_0xb73e('0xc6')]=[];_0x9d8aa5[_0xb73e('0xc7')][_0xb73e('0xc6')][_0xb73e('0xaf')](_0x1b0670['dataValues']);return _0x9d8aa5;});})[_0xb73e('0x33')](respondWithResult(_0x28e944,null))[_0xb73e('0x25')](handleError(_0x28e944,null));};
\ No newline at end of file
index 64a2572..65427b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x995c=['../../mysqldb','WhatsappAccount','save','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x5ac6f9,_0x483c12){var _0x5c51f2=function(_0x5f3236){while(--_0x5f3236){_0x5ac6f9['push'](_0x5ac6f9['shift']());}};_0x5c51f2(++_0x483c12);}(_0x995c,0x18b));var _0xc995=function(_0x390e1a,_0x5de8bf){_0x390e1a=_0x390e1a-0x0;var _0x532104=_0x995c[_0x390e1a];return _0x532104;};'use strict';var EventEmitter=require(_0xc995('0x0'));var WhatsappAccount=require(_0xc995('0x1'))['db'][_0xc995('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc995('0x3'),'afterUpdate':_0xc995('0x4'),'afterDestroy':_0xc995('0x5')};function emitEvent(_0x3a704c){return function(_0x3460e9,_0x14e458,_0x14d126){WhatsappAccountEvents[_0xc995('0x6')](_0x3a704c+':'+_0x3460e9['id'],_0x3460e9);WhatsappAccountEvents[_0xc995('0x6')](_0x3a704c,_0x3460e9);_0x14d126(null);};}for(var e in events){if(events[_0xc995('0x7')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0xc995('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xa5f6=['save','remove','emit','hook','exports','../../mysqldb','setMaxListeners'];(function(_0x11b6d1,_0x5afbad){var _0x388011=function(_0x2724da){while(--_0x2724da){_0x11b6d1['push'](_0x11b6d1['shift']());}};_0x388011(++_0x5afbad);}(_0xa5f6,0x171));var _0x6a5f=function(_0x27df48,_0x1595f4){_0x27df48=_0x27df48-0x0;var _0x2ececb=_0xa5f6[_0x27df48];return _0x2ececb;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x6a5f('0x0'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x6a5f('0x1')](0x0);var events={'afterCreate':_0x6a5f('0x2'),'afterUpdate':'update','afterDestroy':_0x6a5f('0x3')};function emitEvent(_0x51fb4e){return function(_0x285100,_0xc470d6,_0x1b2398){WhatsappAccountEvents[_0x6a5f('0x4')](_0x51fb4e+':'+_0x285100['id'],_0x285100);WhatsappAccountEvents[_0x6a5f('0x4')](_0x51fb4e,_0x285100);_0x1b2398(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x6a5f('0x5')](e,emitEvent(event));}}module[_0x6a5f('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
index 8973123..bdda1be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','define','WhatsappAccount','lodash','util','api'];(function(_0x3a11df,_0x54ec6b){var _0x34a06d=function(_0x309452){while(--_0x309452){_0x3a11df['push'](_0x3a11df['shift']());}};_0x34a06d(++_0x54ec6b);}(_0x88b4,0xf4));var _0x488b=function(_0x4d05a0,_0x53aa7e){_0x4d05a0=_0x4d05a0-0x0;var _0x4c999c=_0x88b4[_0x4d05a0];return _0x4c999c;};'use strict';var _=require(_0x488b('0x0'));var util=require(_0x488b('0x1'));var logger=require('../../config/logger')(_0x488b('0x2'));var moment=require(_0x488b('0x3'));var BPromise=require(_0x488b('0x4'));var rp=require(_0x488b('0x5'));var fs=require('fs');var path=require(_0x488b('0x6'));var rimraf=require(_0x488b('0x7'));var config=require(_0x488b('0x8'));var attributes=require(_0x488b('0x9'));module[_0x488b('0xa')]=function(_0x4713a5,_0x1fcdfc){return _0x4713a5[_0x488b('0xb')](_0x488b('0xc'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedf0=['path','rimraf','exports','define','whatsapp_accounts','api','moment','bluebird','request-promise'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0xedf0,0x15b));var _0x0edf=function(_0x1eb4e0,_0x4ebc2d){_0x1eb4e0=_0x1eb4e0-0x0;var _0x18ec21=_0xedf0[_0x1eb4e0];return _0x18ec21;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0edf('0x0'));var moment=require(_0x0edf('0x1'));var BPromise=require(_0x0edf('0x2'));var rp=require(_0x0edf('0x3'));var fs=require('fs');var path=require(_0x0edf('0x4'));var rimraf=require(_0x0edf('0x5'));var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0x0edf('0x6')]=function(_0x1da598,_0x3acd66){return _0x1da598[_0x0edf('0x7')]('WhatsappAccount',attributes,{'tableName':_0x0edf('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63cddd7..7670ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd72e=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','localhost','redis','./whatsappAccount.socket','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','WhatsappAccount','find','options','raw','where','attributes','include','map','model','ShowWhatsappAccount','lodash','util'];(function(_0x364fbe,_0x3a5536){var _0x35dfae=function(_0xd43640){while(--_0xd43640){_0x364fbe['push'](_0x364fbe['shift']());}};_0x35dfae(++_0x3a5536);}(_0xd72e,0x1c5));var _0xed72=function(_0xf1226a,_0x29a250){_0xf1226a=_0xf1226a-0x0;var _0x1b8fe7=_0xd72e[_0xf1226a];return _0x1b8fe7;};'use strict';var _=require(_0xed72('0x0'));var util=require(_0xed72('0x1'));var moment=require(_0xed72('0x2'));var BPromise=require(_0xed72('0x3'));var rs=require(_0xed72('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed72('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xed72('0x6'))(_0xed72('0x7'));var config=require('../../config/environment');var jayson=require(_0xed72('0x8'));var client=jayson['client'][_0xed72('0x9')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xed72('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xed72('0xb')]));require(_0xed72('0xc'))['register'](socket);function respondWithRpcPromise(_0x838232,_0x5390ee,_0xf74fd){return new BPromise(function(_0x4d7167,_0x5ca656){return client['request'](_0x838232,_0xf74fd)[_0xed72('0xd')](function(_0xa3f241){logger[_0xed72('0xe')](_0xed72('0xf'),_0x5390ee,_0xed72('0x10'));logger[_0xed72('0x11')](_0xed72('0x12'),_0x5390ee,_0xed72('0x10'),JSON[_0xed72('0x13')](_0xa3f241));if(_0xa3f241[_0xed72('0x14')]){if(_0xa3f241[_0xed72('0x14')][_0xed72('0x15')]===0x1f4){logger['error'](_0xed72('0xf'),_0x5390ee,_0xa3f241[_0xed72('0x14')][_0xed72('0x16')]);return _0x5ca656(_0xa3f241[_0xed72('0x14')][_0xed72('0x16')]);}logger['error'](_0xed72('0xf'),_0x5390ee,_0xa3f241[_0xed72('0x14')]['message']);return _0x4d7167(_0xa3f241[_0xed72('0x14')][_0xed72('0x16')]);}else{logger['info'](_0xed72('0xf'),_0x5390ee,_0xed72('0x10'));_0x4d7167(_0xa3f241[_0xed72('0x17')][_0xed72('0x16')]);}})[_0xed72('0x18')](function(_0x55a95d){logger[_0xed72('0x14')](_0xed72('0xf'),_0x5390ee,_0x55a95d);_0x5ca656(_0x55a95d);});});}exports['ShowWhatsappAccount']=function(_0x471de8){var _0x1e5912=this;return new Promise(function(_0x57edcb,_0x4c0247){return db[_0xed72('0x19')][_0xed72('0x1a')]({'raw':_0x471de8['options']?_0x471de8[_0xed72('0x1b')][_0xed72('0x1c')]===undefined?!![]:![]:!![],'where':_0x471de8[_0xed72('0x1b')]?_0x471de8[_0xed72('0x1b')][_0xed72('0x1d')]||null:null,'attributes':_0x471de8[_0xed72('0x1b')]?_0x471de8[_0xed72('0x1b')][_0xed72('0x1e')]||null:null,'include':_0x471de8[_0xed72('0x1b')]?_0x471de8['options'][_0xed72('0x1f')]?_[_0xed72('0x20')](_0x471de8[_0xed72('0x1b')][_0xed72('0x1f')],function(_0x59d25e){return{'model':db[_0x59d25e[_0xed72('0x21')]],'as':_0x59d25e['as'],'attributes':_0x59d25e[_0xed72('0x1e')],'include':_0x59d25e['include']?_['map'](_0x59d25e['include'],function(_0x521d83){return{'model':db[_0x521d83['model']],'as':_0x521d83['as'],'attributes':_0x521d83['attributes'],'include':_0x521d83[_0xed72('0x1f')]?_[_0xed72('0x20')](_0x521d83['include'],function(_0x393604){return{'model':db[_0x393604[_0xed72('0x21')]],'as':_0x393604['as'],'attributes':_0x393604[_0xed72('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f2d2d){logger[_0xed72('0xe')]('ShowWhatsappAccount',_0x471de8);logger[_0xed72('0x11')]('ShowWhatsappAccount',_0x471de8,JSON['stringify'](_0x2f2d2d));_0x57edcb(_0x2f2d2d);})[_0xed72('0x18')](function(_0x12f876){logger[_0xed72('0x14')](_0xed72('0x22'),_0x12f876[_0xed72('0x16')],_0x471de8);_0x4c0247(_0x1e5912[_0xed72('0x14')](0x1f4,_0x12f876[_0xed72('0x16')]));});});};
\ No newline at end of file
+var _0xed8f=['randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','model','map','lodash','util','moment','bluebird'];(function(_0x4aa828,_0x1ae629){var _0xd9f89b=function(_0x5e58da){while(--_0x5e58da){_0x4aa828['push'](_0x4aa828['shift']());}};_0xd9f89b(++_0x1ae629);}(_0xed8f,0x1a9));var _0xfed8=function(_0x276522,_0x3e88fd){_0x276522=_0x276522-0x0;var _0x1c48b6=_0xed8f[_0x276522];return _0x1c48b6;};'use strict';var _=require(_0xfed8('0x0'));var util=require(_0xfed8('0x1'));var moment=require(_0xfed8('0x2'));var BPromise=require(_0xfed8('0x3'));var rs=require(_0xfed8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfed8('0x5'));var logger=require(_0xfed8('0x6'))(_0xfed8('0x7'));var config=require('../../config/environment');var jayson=require(_0xfed8('0x8'));var client=jayson[_0xfed8('0x9')][_0xfed8('0xa')]({'port':0x232a});config[_0xfed8('0xb')]=_[_0xfed8('0xc')](config[_0xfed8('0xb')],{'host':_0xfed8('0xd'),'port':0x18eb});var socket=require(_0xfed8('0xe'))(new Redis(config['redis']));require(_0xfed8('0xf'))['register'](socket);function respondWithRpcPromise(_0x25e4b2,_0x14f9d7,_0x5e5f3c){return new BPromise(function(_0x5c48f7,_0x5b41e4){return client[_0xfed8('0x10')](_0x25e4b2,_0x5e5f3c)[_0xfed8('0x11')](function(_0x30f243){logger['info'](_0xfed8('0x12'),_0x14f9d7,'request\x20sent');logger[_0xfed8('0x13')](_0xfed8('0x14'),_0x14f9d7,_0xfed8('0x15'),JSON[_0xfed8('0x16')](_0x30f243));if(_0x30f243['error']){if(_0x30f243[_0xfed8('0x17')][_0xfed8('0x18')]===0x1f4){logger[_0xfed8('0x17')](_0xfed8('0x12'),_0x14f9d7,_0x30f243['error'][_0xfed8('0x19')]);return _0x5b41e4(_0x30f243[_0xfed8('0x17')][_0xfed8('0x19')]);}logger[_0xfed8('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x14f9d7,_0x30f243[_0xfed8('0x17')][_0xfed8('0x19')]);return _0x5c48f7(_0x30f243[_0xfed8('0x17')][_0xfed8('0x19')]);}else{logger[_0xfed8('0x1a')](_0xfed8('0x12'),_0x14f9d7,'request\x20sent');_0x5c48f7(_0x30f243[_0xfed8('0x1b')][_0xfed8('0x19')]);}})[_0xfed8('0x1c')](function(_0x5eda34){logger[_0xfed8('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x14f9d7,_0x5eda34);_0x5b41e4(_0x5eda34);});});}exports[_0xfed8('0x1d')]=function(_0x3e5d5a){var _0x5ce6ab=this;return new Promise(function(_0x5452d0,_0x28d523){return db[_0xfed8('0x1e')][_0xfed8('0x1f')]({'raw':_0x3e5d5a[_0xfed8('0x20')]?_0x3e5d5a[_0xfed8('0x20')][_0xfed8('0x21')]===undefined?!![]:![]:!![],'where':_0x3e5d5a['options']?_0x3e5d5a[_0xfed8('0x20')][_0xfed8('0x22')]||null:null,'attributes':_0x3e5d5a[_0xfed8('0x20')]?_0x3e5d5a[_0xfed8('0x20')][_0xfed8('0x23')]||null:null,'include':_0x3e5d5a[_0xfed8('0x20')]?_0x3e5d5a[_0xfed8('0x20')]['include']?_['map'](_0x3e5d5a[_0xfed8('0x20')][_0xfed8('0x24')],function(_0xd809f5){return{'model':db[_0xd809f5[_0xfed8('0x25')]],'as':_0xd809f5['as'],'attributes':_0xd809f5[_0xfed8('0x23')],'include':_0xd809f5[_0xfed8('0x24')]?_[_0xfed8('0x26')](_0xd809f5[_0xfed8('0x24')],function(_0x5cbab0){return{'model':db[_0x5cbab0['model']],'as':_0x5cbab0['as'],'attributes':_0x5cbab0['attributes'],'include':_0x5cbab0[_0xfed8('0x24')]?_[_0xfed8('0x26')](_0x5cbab0['include'],function(_0x3ccc66){return{'model':db[_0x3ccc66['model']],'as':_0x3ccc66['as'],'attributes':_0x3ccc66[_0xfed8('0x23')]};}):[]};}):[]};}):[]:[]})[_0xfed8('0x11')](function(_0xfb6c32){logger['info'](_0xfed8('0x1d'),_0x3e5d5a);logger[_0xfed8('0x13')](_0xfed8('0x1d'),_0x3e5d5a,JSON[_0xfed8('0x16')](_0xfb6c32));_0x5452d0(_0xfb6c32);})[_0xfed8('0x1c')](function(_0x344ef6){logger[_0xfed8('0x17')](_0xfed8('0x1d'),_0x344ef6[_0xfed8('0x19')],_0x3e5d5a);_0x28d523(_0x5ce6ab['error'](0x1f4,_0x344ef6[_0xfed8('0x19')]));});});};
\ No newline at end of file
index 6387c76..5d9b7a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc12f=['whatsappAccount:','remove','update','removeListener','register','length'];(function(_0x2f0463,_0x2ce4f6){var _0x8f9858=function(_0x2f1586){while(--_0x2f1586){_0x2f0463['push'](_0x2f0463['shift']());}};_0x8f9858(++_0x2ce4f6);}(_0xc12f,0x16f));var _0xfc12=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0xc12f[_0x17928f];return _0x500b63;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=['save',_0xfc12('0x0'),_0xfc12('0x1')];function createListener(_0x3c4620,_0x2df36a){return function(_0x310a83){_0x2df36a['emit'](_0x3c4620,_0x310a83);};}function removeListener(_0x24511f,_0x1f18a0){return function(){WhatsappAccountEvents[_0xfc12('0x2')](_0x24511f,_0x1f18a0);};}exports[_0xfc12('0x3')]=function(_0x51a728){for(var _0x3fe5a3=0x0,_0x3365db=events[_0xfc12('0x4')];_0x3fe5a3<_0x3365db;_0x3fe5a3++){var _0x16181d=events[_0x3fe5a3];var _0x4b7c5e=createListener(_0xfc12('0x5')+_0x16181d,_0x51a728);WhatsappAccountEvents['on'](_0x16181d,_0x4b7c5e);}};
\ No newline at end of file
+var _0xcda2=['emit','removeListener','length','whatsappAccount:','./whatsappAccount.events','save'];(function(_0x354c31,_0x45c581){var _0x30c658=function(_0x38be4d){while(--_0x38be4d){_0x354c31['push'](_0x354c31['shift']());}};_0x30c658(++_0x45c581);}(_0xcda2,0xd0));var _0x2cda=function(_0x573c19,_0x5525bd){_0x573c19=_0x573c19-0x0;var _0x26df1d=_0xcda2[_0x573c19];return _0x26df1d;};'use strict';var WhatsappAccountEvents=require(_0x2cda('0x0'));var events=[_0x2cda('0x1'),'remove','update'];function createListener(_0x3cbdc8,_0x5cec0c){return function(_0x2fbcab){_0x5cec0c[_0x2cda('0x2')](_0x3cbdc8,_0x2fbcab);};}function removeListener(_0x1cc0b0,_0x1921d7){return function(){WhatsappAccountEvents[_0x2cda('0x3')](_0x1cc0b0,_0x1921d7);};}exports['register']=function(_0x28a233){for(var _0x3fc16d=0x0,_0x2ac67d=events[_0x2cda('0x4')];_0x3fc16d<_0x2ac67d;_0x3fc16d++){var _0x194bee=events[_0x3fc16d];var _0x42c9b4=createListener(_0x2cda('0x5')+_0x194bee,_0x28a233);WhatsappAccountEvents['on'](_0x194bee,_0x42c9b4);}};
\ No newline at end of file
index 0027c6a..ba2ab3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48dd=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete','exports','util','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x48dd,0x19a));var _0xd48d=function(_0x10f4dc,_0x445ae0){_0x10f4dc=_0x10f4dc-0x0;var _0x444e27=_0x48dd[_0x10f4dc];return _0x444e27;};'use strict';var multer=require('multer');var util=require(_0xd48d('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd48d('0x1'));var router=express[_0xd48d('0x2')]();var fs_extra=require(_0xd48d('0x3'));var auth=require(_0xd48d('0x4'));var interaction=require(_0xd48d('0x5'));var config=require(_0xd48d('0x6'));var controller=require(_0xd48d('0x7'));router[_0xd48d('0x8')]('/',auth['isAuthenticated'](),controller[_0xd48d('0x9')]);router['get'](_0xd48d('0xa'),auth[_0xd48d('0xb')](),controller['show']);router[_0xd48d('0xc')]('/',auth[_0xd48d('0xb')](),controller[_0xd48d('0xd')]);router[_0xd48d('0xe')](_0xd48d('0xa'),auth[_0xd48d('0xb')](),controller[_0xd48d('0xf')]);router[_0xd48d('0x10')]('/:id',auth[_0xd48d('0xb')](),controller['destroy']);module[_0xd48d('0x11')]=router;
\ No newline at end of file
+var _0x9160=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','post','create','put','update','destroy','exports','multer','util'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x9160,0x11e));var _0x0916=function(_0x40527a,_0xfeae45){_0x40527a=_0x40527a-0x0;var _0x299dfa=_0x9160[_0x40527a];return _0x299dfa;};'use strict';var multer=require(_0x0916('0x0'));var util=require(_0x0916('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0916('0x2'));var router=express[_0x0916('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0916('0x4'));var interaction=require(_0x0916('0x5'));var config=require(_0x0916('0x6'));var controller=require('./whatsappApplication.controller');router[_0x0916('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x0916('0x8'),auth[_0x0916('0x9')](),controller['show']);router[_0x0916('0xa')]('/',auth[_0x0916('0x9')](),controller[_0x0916('0xb')]);router[_0x0916('0xc')]('/:id',auth[_0x0916('0x9')](),controller[_0x0916('0xd')]);router['delete']('/:id',auth[_0x0916('0x9')](),controller[_0x0916('0xe')]);module[_0x0916('0xf')]=router;
\ No newline at end of file
index dfa57e1..bb6ee7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a7=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x1aebfe,_0xb00c5b){var _0x3f0f9b=function(_0x291391){while(--_0x291391){_0x1aebfe['push'](_0x1aebfe['shift']());}};_0x3f0f9b(++_0xb00c5b);}(_0x15a7,0x15b));var _0x715a=function(_0x24633c,_0x251a7e){_0x24633c=_0x24633c-0x0;var _0x3f42f3=_0x15a7[_0x24633c];return _0x3f42f3;};'use strict';var Sequelize=require(_0x715a('0x0'));module[_0x715a('0x1')]={'priority':{'type':Sequelize[_0x715a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x715a('0x3')],'allowNull':![],'defaultValue':_0x715a('0x4')},'appdata':{'type':Sequelize[_0x715a('0x5')]()},'description':{'type':Sequelize[_0x715a('0x3')]},'interval':{'type':Sequelize[_0x715a('0x3')],'defaultValue':_0x715a('0x6')}};
\ No newline at end of file
+var _0x3e89=['STRING','noop','sequelize','INTEGER'];(function(_0x3414ca,_0xadf349){var _0x440a13=function(_0x29921b){while(--_0x29921b){_0x3414ca['push'](_0x3414ca['shift']());}};_0x440a13(++_0xadf349);}(_0x3e89,0x1aa));var _0x93e8=function(_0x447180,_0x274f49){_0x447180=_0x447180-0x0;var _0x4ceb25=_0x3e89[_0x447180];return _0x4ceb25;};'use strict';var Sequelize=require(_0x93e8('0x0'));module['exports']={'priority':{'type':Sequelize[_0x93e8('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x93e8('0x2')],'allowNull':![],'defaultValue':_0x93e8('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x93e8('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 025a0da..e4d81f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d4e=['VIRTUAL','options','include','rows','catch','show','keys','fields','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','filters','intersection','model','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x34c553,_0x3e7dfc){var _0x1357d2=function(_0x3b509f){while(--_0x3b509f){_0x34c553['push'](_0x34c553['shift']());}};_0x1357d2(++_0x3e7dfc);}(_0x5d4e,0x138));var _0xe5d4=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5d4e[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5d4('0x0'));var zipdir=require(_0xe5d4('0x1'));var jsonpatch=require(_0xe5d4('0x2'));var rp=require(_0xe5d4('0x3'));var moment=require(_0xe5d4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe5d4('0x5'));var util=require(_0xe5d4('0x6'));var path=require(_0xe5d4('0x7'));var sox=require('sox');var csv=require(_0xe5d4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe5d4('0x9'));var crypto=require(_0xe5d4('0xa'));var jsforce=require(_0xe5d4('0xb'));var deskjs=require(_0xe5d4('0xc'));var toCsv=require(_0xe5d4('0x8'));var querystring=require(_0xe5d4('0xd'));var Papa=require(_0xe5d4('0xe'));var Redis=require(_0xe5d4('0xf'));var authService=require(_0xe5d4('0x10'));var qs=require(_0xe5d4('0x11'));var as=require(_0xe5d4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe5d4('0x13'));var utils=require(_0xe5d4('0x14'));var config=require(_0xe5d4('0x15'));var licenseUtil=require(_0xe5d4('0x16'));var db=require(_0xe5d4('0x17'))['db'];function respondWithStatusCode(_0xf3b751,_0x451ac4){_0x451ac4=_0x451ac4||0xcc;return function(_0x1d2de6){if(_0x1d2de6){return _0xf3b751[_0xe5d4('0x18')](_0x451ac4);}return _0xf3b751['status'](_0x451ac4)['end']();};}function respondWithResult(_0x31aa74,_0x22f970){_0x22f970=_0x22f970||0xc8;return function(_0x4d0756){if(_0x4d0756){return _0x31aa74[_0xe5d4('0x19')](_0x22f970)[_0xe5d4('0x1a')](_0x4d0756);}};}function respondWithFilteredResult(_0x3dee9f,_0x49a0e1){return function(_0x3e7987){if(_0x3e7987){var _0x96d668=typeof _0x49a0e1[_0xe5d4('0x1b')]===_0xe5d4('0x1c')&&typeof _0x49a0e1[_0xe5d4('0x1d')]===_0xe5d4('0x1c');var _0x473e7f=_0x3e7987[_0xe5d4('0x1e')];var _0x915fb7=_0x96d668?0x0:_0x49a0e1[_0xe5d4('0x1b')];var _0x435782=_0x96d668?_0x3e7987[_0xe5d4('0x1e')]:_0x49a0e1[_0xe5d4('0x1b')]+_0x49a0e1[_0xe5d4('0x1d')];var _0x1efe37;if(_0x435782>=_0x473e7f){_0x435782=_0x473e7f;_0x1efe37=0xc8;}else{_0x1efe37=0xce;}_0x3dee9f[_0xe5d4('0x19')](_0x1efe37);return _0x3dee9f['set'](_0xe5d4('0x1f'),_0x915fb7+'-'+_0x435782+'/'+_0x473e7f)[_0xe5d4('0x1a')](_0x3e7987);}return null;};}function patchUpdates(_0x4c632f){return function(_0x2b6e17){try{jsonpatch[_0xe5d4('0x20')](_0x2b6e17,_0x4c632f,!![]);}catch(_0x157307){return BPromise[_0xe5d4('0x21')](_0x157307);}return _0x2b6e17[_0xe5d4('0x22')]();};}function saveUpdates(_0x16a819,_0x5730e3){return function(_0x51ddf6){if(_0x51ddf6){return _0x51ddf6[_0xe5d4('0x23')](_0x16a819)[_0xe5d4('0x24')](function(_0x5c2bbc){return _0x5c2bbc;});}return null;};}function removeEntity(_0x1ddbbb,_0x357161){return function(_0x57ea65){if(_0x57ea65){return _0x57ea65['destroy']()[_0xe5d4('0x24')](function(){_0x1ddbbb[_0xe5d4('0x19')](0xcc)[_0xe5d4('0x25')]();});}};}function handleEntityNotFound(_0xb79648,_0x3e266e){return function(_0xb124df){if(!_0xb124df){_0xb79648[_0xe5d4('0x18')](0x194);}return _0xb124df;};}function handleError(_0x456ab2,_0x5d3473){_0x5d3473=_0x5d3473||0x1f4;return function(_0x436d08){logger[_0xe5d4('0x26')](_0x436d08[_0xe5d4('0x27')]);if(_0x436d08['name']){delete _0x436d08[_0xe5d4('0x28')];}_0x456ab2[_0xe5d4('0x19')](_0x5d3473)[_0xe5d4('0x29')](_0x436d08);};}exports[_0xe5d4('0x2a')]=function(_0xbb9fdd,_0xb0ae3b){var _0x5a80a2={},_0x15965d={},_0x3315c7={'count':0x0,'rows':[]};var _0x3a517b=_[_0xe5d4('0x2b')](db[_0xe5d4('0x2c')][_0xe5d4('0x2d')],function(_0x569160){return{'name':_0x569160[_0xe5d4('0x2e')],'type':_0x569160[_0xe5d4('0x2f')][_0xe5d4('0x30')]};});_0x15965d['model']=_[_0xe5d4('0x2b')](_0x3a517b,'name');_0x15965d['query']=_['keys'](_0xbb9fdd['query']);_0x15965d[_0xe5d4('0x31')]=_[_0xe5d4('0x32')](_0x15965d[_0xe5d4('0x33')],_0x15965d[_0xe5d4('0x34')]);_0x5a80a2[_0xe5d4('0x35')]=_[_0xe5d4('0x32')](_0x15965d['model'],qs['fields'](_0xbb9fdd['query']['fields']));_0x5a80a2[_0xe5d4('0x35')]=_0x5a80a2[_0xe5d4('0x35')][_0xe5d4('0x36')]?_0x5a80a2[_0xe5d4('0x35')]:_0x15965d['model'];if(!_0xbb9fdd[_0xe5d4('0x34')][_0xe5d4('0x37')](_0xe5d4('0x38'))){_0x5a80a2['limit']=qs[_0xe5d4('0x1d')](_0xbb9fdd[_0xe5d4('0x34')][_0xe5d4('0x1d')]);_0x5a80a2[_0xe5d4('0x1b')]=qs[_0xe5d4('0x1b')](_0xbb9fdd[_0xe5d4('0x34')][_0xe5d4('0x1b')]);}_0x5a80a2[_0xe5d4('0x39')]=qs[_0xe5d4('0x3a')](_0xbb9fdd['query'][_0xe5d4('0x3a')]);_0x5a80a2[_0xe5d4('0x3b')]=qs[_0xe5d4('0x31')](_[_0xe5d4('0x3c')](_0xbb9fdd['query'],_0x15965d[_0xe5d4('0x31')]),_0x3a517b);if(_0xbb9fdd[_0xe5d4('0x34')][_0xe5d4('0x3d')]){_0x5a80a2[_0xe5d4('0x3b')]=_[_0xe5d4('0x3e')](_0x5a80a2['where'],{'$or':_['map'](_0x3a517b,function(_0x12302a){if(_0x12302a[_0xe5d4('0x2f')]!==_0xe5d4('0x3f')){var _0x4af73d={};_0x4af73d[_0x12302a['name']]={'$like':'%'+_0xbb9fdd[_0xe5d4('0x34')][_0xe5d4('0x3d')]+'%'};return _0x4af73d;}})});}_0x5a80a2=_[_0xe5d4('0x3e')]({},_0x5a80a2,_0xbb9fdd[_0xe5d4('0x40')]);var _0x1801c3={'where':_0x5a80a2[_0xe5d4('0x3b')]};return db[_0xe5d4('0x2c')][_0xe5d4('0x1e')](_0x1801c3)[_0xe5d4('0x24')](function(_0x333db1){_0x3315c7[_0xe5d4('0x1e')]=_0x333db1;if(_0xbb9fdd['query']['includeAll']){_0x5a80a2[_0xe5d4('0x41')]=[{'all':!![]}];}return db[_0xe5d4('0x2c')]['findAll'](_0x5a80a2);})[_0xe5d4('0x24')](function(_0x956d08){_0x3315c7[_0xe5d4('0x42')]=_0x956d08;return _0x3315c7;})[_0xe5d4('0x24')](respondWithFilteredResult(_0xb0ae3b,_0x5a80a2))[_0xe5d4('0x43')](handleError(_0xb0ae3b,null));};exports[_0xe5d4('0x44')]=function(_0x3dbcbd,_0xd7a499){var _0xb62655={'raw':!![],'where':{'id':_0x3dbcbd['params']['id']}},_0x2f0b69={};_0x2f0b69[_0xe5d4('0x33')]=_[_0xe5d4('0x45')](db[_0xe5d4('0x2c')][_0xe5d4('0x2d')]);_0x2f0b69[_0xe5d4('0x34')]=_['keys'](_0x3dbcbd[_0xe5d4('0x34')]);_0x2f0b69[_0xe5d4('0x31')]=_[_0xe5d4('0x32')](_0x2f0b69[_0xe5d4('0x33')],_0x2f0b69[_0xe5d4('0x34')]);_0xb62655['attributes']=_['intersection'](_0x2f0b69[_0xe5d4('0x33')],qs[_0xe5d4('0x46')](_0x3dbcbd[_0xe5d4('0x34')][_0xe5d4('0x46')]));_0xb62655[_0xe5d4('0x35')]=_0xb62655[_0xe5d4('0x35')][_0xe5d4('0x36')]?_0xb62655[_0xe5d4('0x35')]:_0x2f0b69['model'];if(_0x3dbcbd[_0xe5d4('0x34')]['includeAll']){_0xb62655['include']=[{'all':!![]}];}_0xb62655=_[_0xe5d4('0x3e')]({},_0xb62655,_0x3dbcbd[_0xe5d4('0x40')]);return db['WhatsappApplication'][_0xe5d4('0x47')](_0xb62655)[_0xe5d4('0x24')](handleEntityNotFound(_0xd7a499,null))['then'](respondWithResult(_0xd7a499,null))['catch'](handleError(_0xd7a499,null));};exports['create']=function(_0x2df9ac,_0x50e9ec){return db['WhatsappApplication'][_0xe5d4('0x48')](_0x2df9ac['body'],{})[_0xe5d4('0x24')](respondWithResult(_0x50e9ec,0xc9))[_0xe5d4('0x43')](handleError(_0x50e9ec,null));};exports[_0xe5d4('0x23')]=function(_0x32e68f,_0x565dbb){if(_0x32e68f[_0xe5d4('0x49')]['id']){delete _0x32e68f['body']['id'];}return db[_0xe5d4('0x2c')]['find']({'where':{'id':_0x32e68f[_0xe5d4('0x4a')]['id']}})[_0xe5d4('0x24')](handleEntityNotFound(_0x565dbb,null))[_0xe5d4('0x24')](saveUpdates(_0x32e68f[_0xe5d4('0x49')],null))['then'](respondWithResult(_0x565dbb,null))[_0xe5d4('0x43')](handleError(_0x565dbb,null));};exports['destroy']=function(_0x56e65c,_0x597c8e){return db[_0xe5d4('0x2c')]['find']({'where':{'id':_0x56e65c['params']['id']}})[_0xe5d4('0x24')](handleEntityNotFound(_0x597c8e,null))[_0xe5d4('0x24')](removeEntity(_0x597c8e,null))[_0xe5d4('0x43')](handleError(_0x597c8e,null));};
\ No newline at end of file
+var _0xd98a=['map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','include','find','create','body','destroy','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','name','send','index'];(function(_0x718493,_0x485616){var _0x59af54=function(_0x21268d){while(--_0x21268d){_0x718493['push'](_0x718493['shift']());}};_0x59af54(++_0x485616);}(_0xd98a,0xfc));var _0xad98=function(_0xf30eb6,_0xef6c9c){_0xf30eb6=_0xf30eb6-0x0;var _0x5e5eb3=_0xd98a[_0xf30eb6];return _0x5e5eb3;};'use strict';var emlformat=require(_0xad98('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xad98('0x1'));var rp=require(_0xad98('0x2'));var moment=require(_0xad98('0x3'));var BPromise=require(_0xad98('0x4'));var Mustache=require(_0xad98('0x5'));var util=require(_0xad98('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xad98('0x7'));var ejs=require(_0xad98('0x8'));var fs=require('fs');var fs_extra=require(_0xad98('0x9'));var _=require(_0xad98('0xa'));var squel=require(_0xad98('0xb'));var crypto=require('crypto');var jsforce=require(_0xad98('0xc'));var deskjs=require(_0xad98('0xd'));var toCsv=require('to-csv');var querystring=require(_0xad98('0xe'));var Papa=require('papaparse');var Redis=require(_0xad98('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xad98('0x10'));var logger=require(_0xad98('0x11'))(_0xad98('0x12'));var utils=require(_0xad98('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xad98('0x14'))['db'];function respondWithStatusCode(_0x1180d6,_0x1b430a){_0x1b430a=_0x1b430a||0xcc;return function(_0x1ba078){if(_0x1ba078){return _0x1180d6[_0xad98('0x15')](_0x1b430a);}return _0x1180d6[_0xad98('0x16')](_0x1b430a)[_0xad98('0x17')]();};}function respondWithResult(_0x1f033b,_0x308cf8){_0x308cf8=_0x308cf8||0xc8;return function(_0x5b2df6){if(_0x5b2df6){return _0x1f033b[_0xad98('0x16')](_0x308cf8)[_0xad98('0x18')](_0x5b2df6);}};}function respondWithFilteredResult(_0x338589,_0x354a4c){return function(_0x408e2a){if(_0x408e2a){var _0x2b3ee3=typeof _0x354a4c[_0xad98('0x19')]===_0xad98('0x1a')&&typeof _0x354a4c[_0xad98('0x1b')]==='undefined';var _0x533d76=_0x408e2a[_0xad98('0x1c')];var _0x5a3d09=_0x2b3ee3?0x0:_0x354a4c[_0xad98('0x19')];var _0x1df804=_0x2b3ee3?_0x408e2a[_0xad98('0x1c')]:_0x354a4c[_0xad98('0x19')]+_0x354a4c[_0xad98('0x1b')];var _0x17f502;if(_0x1df804>=_0x533d76){_0x1df804=_0x533d76;_0x17f502=0xc8;}else{_0x17f502=0xce;}_0x338589[_0xad98('0x16')](_0x17f502);return _0x338589[_0xad98('0x1d')]('Content-Range',_0x5a3d09+'-'+_0x1df804+'/'+_0x533d76)['json'](_0x408e2a);}return null;};}function patchUpdates(_0xa307d1){return function(_0x5d76e5){try{jsonpatch[_0xad98('0x1e')](_0x5d76e5,_0xa307d1,!![]);}catch(_0x2180dc){return BPromise[_0xad98('0x1f')](_0x2180dc);}return _0x5d76e5[_0xad98('0x20')]();};}function saveUpdates(_0x2a6aea,_0x2a286c){return function(_0x28ce36){if(_0x28ce36){return _0x28ce36[_0xad98('0x21')](_0x2a6aea)[_0xad98('0x22')](function(_0x46be4e){return _0x46be4e;});}return null;};}function removeEntity(_0xa04f8f,_0x1c8fd7){return function(_0x25c80f){if(_0x25c80f){return _0x25c80f['destroy']()[_0xad98('0x22')](function(){_0xa04f8f[_0xad98('0x16')](0xcc)[_0xad98('0x17')]();});}};}function handleEntityNotFound(_0xf48fe4,_0x536907){return function(_0x590b77){if(!_0x590b77){_0xf48fe4[_0xad98('0x15')](0x194);}return _0x590b77;};}function handleError(_0x3ff3b6,_0x383dba){_0x383dba=_0x383dba||0x1f4;return function(_0x135e6d){logger[_0xad98('0x23')](_0x135e6d[_0xad98('0x24')]);if(_0x135e6d[_0xad98('0x25')]){delete _0x135e6d['name'];}_0x3ff3b6[_0xad98('0x16')](_0x383dba)[_0xad98('0x26')](_0x135e6d);};}exports[_0xad98('0x27')]=function(_0x115d3f,_0x16eda0){var _0x341c16={},_0xc32be4={},_0x2ef98f={'count':0x0,'rows':[]};var _0x4c841f=_[_0xad98('0x28')](db[_0xad98('0x29')][_0xad98('0x2a')],function(_0x5a1a98){return{'name':_0x5a1a98[_0xad98('0x2b')],'type':_0x5a1a98[_0xad98('0x2c')][_0xad98('0x2d')]};});_0xc32be4[_0xad98('0x2e')]=_['map'](_0x4c841f,_0xad98('0x25'));_0xc32be4[_0xad98('0x2f')]=_[_0xad98('0x30')](_0x115d3f[_0xad98('0x2f')]);_0xc32be4['filters']=_[_0xad98('0x31')](_0xc32be4[_0xad98('0x2e')],_0xc32be4[_0xad98('0x2f')]);_0x341c16[_0xad98('0x32')]=_['intersection'](_0xc32be4[_0xad98('0x2e')],qs[_0xad98('0x33')](_0x115d3f[_0xad98('0x2f')]['fields']));_0x341c16[_0xad98('0x32')]=_0x341c16[_0xad98('0x32')][_0xad98('0x34')]?_0x341c16[_0xad98('0x32')]:_0xc32be4['model'];if(!_0x115d3f[_0xad98('0x2f')][_0xad98('0x35')](_0xad98('0x36'))){_0x341c16['limit']=qs[_0xad98('0x1b')](_0x115d3f[_0xad98('0x2f')][_0xad98('0x1b')]);_0x341c16['offset']=qs['offset'](_0x115d3f[_0xad98('0x2f')]['offset']);}_0x341c16['order']=qs[_0xad98('0x37')](_0x115d3f['query']['sort']);_0x341c16[_0xad98('0x38')]=qs[_0xad98('0x39')](_[_0xad98('0x3a')](_0x115d3f[_0xad98('0x2f')],_0xc32be4[_0xad98('0x39')]),_0x4c841f);if(_0x115d3f[_0xad98('0x2f')]['filter']){_0x341c16[_0xad98('0x38')]=_[_0xad98('0x3b')](_0x341c16[_0xad98('0x38')],{'$or':_[_0xad98('0x28')](_0x4c841f,function(_0x5d70d7){if(_0x5d70d7[_0xad98('0x2c')]!==_0xad98('0x3c')){var _0x264bf6={};_0x264bf6[_0x5d70d7[_0xad98('0x25')]]={'$like':'%'+_0x115d3f[_0xad98('0x2f')][_0xad98('0x3d')]+'%'};return _0x264bf6;}})});}_0x341c16=_[_0xad98('0x3b')]({},_0x341c16,_0x115d3f[_0xad98('0x3e')]);var _0xfdad30={'where':_0x341c16['where']};return db['WhatsappApplication']['count'](_0xfdad30)[_0xad98('0x22')](function(_0xab3182){_0x2ef98f[_0xad98('0x1c')]=_0xab3182;if(_0x115d3f[_0xad98('0x2f')][_0xad98('0x3f')]){_0x341c16['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0xad98('0x40')](_0x341c16);})[_0xad98('0x22')](function(_0x1006d9){_0x2ef98f[_0xad98('0x41')]=_0x1006d9;return _0x2ef98f;})[_0xad98('0x22')](respondWithFilteredResult(_0x16eda0,_0x341c16))[_0xad98('0x42')](handleError(_0x16eda0,null));};exports['show']=function(_0x5e7afc,_0x2ee57d){var _0x308973={'raw':!![],'where':{'id':_0x5e7afc[_0xad98('0x43')]['id']}},_0x329e55={};_0x329e55['model']=_[_0xad98('0x30')](db['WhatsappApplication']['rawAttributes']);_0x329e55['query']=_[_0xad98('0x30')](_0x5e7afc[_0xad98('0x2f')]);_0x329e55[_0xad98('0x39')]=_[_0xad98('0x31')](_0x329e55[_0xad98('0x2e')],_0x329e55[_0xad98('0x2f')]);_0x308973[_0xad98('0x32')]=_['intersection'](_0x329e55['model'],qs[_0xad98('0x33')](_0x5e7afc['query'][_0xad98('0x33')]));_0x308973[_0xad98('0x32')]=_0x308973['attributes']['length']?_0x308973['attributes']:_0x329e55[_0xad98('0x2e')];if(_0x5e7afc[_0xad98('0x2f')]['includeAll']){_0x308973[_0xad98('0x44')]=[{'all':!![]}];}_0x308973=_['merge']({},_0x308973,_0x5e7afc[_0xad98('0x3e')]);return db['WhatsappApplication'][_0xad98('0x45')](_0x308973)[_0xad98('0x22')](handleEntityNotFound(_0x2ee57d,null))[_0xad98('0x22')](respondWithResult(_0x2ee57d,null))[_0xad98('0x42')](handleError(_0x2ee57d,null));};exports[_0xad98('0x46')]=function(_0x27b1d9,_0x4b5124){return db[_0xad98('0x29')][_0xad98('0x46')](_0x27b1d9[_0xad98('0x47')],{})[_0xad98('0x22')](respondWithResult(_0x4b5124,0xc9))[_0xad98('0x42')](handleError(_0x4b5124,null));};exports[_0xad98('0x21')]=function(_0x153312,_0x3c05dc){if(_0x153312['body']['id']){delete _0x153312[_0xad98('0x47')]['id'];}return db[_0xad98('0x29')][_0xad98('0x45')]({'where':{'id':_0x153312['params']['id']}})['then'](handleEntityNotFound(_0x3c05dc,null))['then'](saveUpdates(_0x153312[_0xad98('0x47')],null))[_0xad98('0x22')](respondWithResult(_0x3c05dc,null))[_0xad98('0x42')](handleError(_0x3c05dc,null));};exports[_0xad98('0x48')]=function(_0x433a12,_0x226c47){return db[_0xad98('0x29')]['find']({'where':{'id':_0x433a12[_0xad98('0x43')]['id']}})['then'](handleEntityNotFound(_0x226c47,null))[_0xad98('0x22')](removeEntity(_0x226c47,null))['catch'](handleError(_0x226c47,null));};
\ No newline at end of file
index a134b5f..48cee05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','whatsapp_applications','utf8mb4','lodash'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xa41a,0x6b));var _0xaa41=function(_0x31d000,_0x416aaa){_0x31d000=_0x31d000-0x0;var _0x2a254e=_0xa41a[_0x31d000];return _0x2a254e;};'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']('WhatsappApplication',attributes,{'tableName':_0xaa41('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xaa41('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x68fc=['./whatsappApplication.attributes','exports','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','path'];(function(_0x4471ff,_0x4bb7de){var _0xe723ca=function(_0xf3cc76){while(--_0xf3cc76){_0x4471ff['push'](_0x4471ff['shift']());}};_0xe723ca(++_0x4bb7de);}(_0x68fc,0xa5));var _0xc68f=function(_0x108bde,_0x49e09b){_0x108bde=_0x108bde-0x0;var _0x24c7a9=_0x68fc[_0x108bde];return _0x24c7a9;};'use strict';var _=require(_0xc68f('0x0'));var util=require(_0xc68f('0x1'));var logger=require(_0xc68f('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc68f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc68f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc68f('0x5'));module[_0xc68f('0x6')]=function(_0x1c6df9,_0x363cdf){return _0x1c6df9['define']('WhatsappApplication',attributes,{'tableName':_0xc68f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc68f('0x8'),'collate':_0xc68f('0x9')});};
\ No newline at end of file
index c693709..140548f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','util','moment','ioredis'];(function(_0x436f43,_0x2933ba){var _0x573482=function(_0x5c783b){while(--_0x5c783b){_0x436f43['push'](_0x436f43['shift']());}};_0x573482(++_0x2933ba);}(_0xb821,0xa7));var _0x1b82=function(_0x3061ba,_0x50f008){_0x3061ba=_0x3061ba-0x0;var _0x4d61fc=_0xb821[_0x3061ba];return _0x4d61fc;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var moment=require(_0x1b82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b82('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1b82('0x3'))(_0x1b82('0x4'));var config=require(_0x1b82('0x5'));var jayson=require(_0x1b82('0x6'));var client=jayson['client'][_0x1b82('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x192434,_0x202a5f,_0x3632dd){return new BPromise(function(_0x18f45f,_0x7b87e8){return client[_0x1b82('0x8')](_0x192434,_0x3632dd)[_0x1b82('0x9')](function(_0x141673){logger['info'](_0x1b82('0xa'),_0x202a5f,_0x1b82('0xb'));logger[_0x1b82('0xc')](_0x1b82('0xd'),_0x202a5f,_0x1b82('0xb'),JSON[_0x1b82('0xe')](_0x141673));if(_0x141673[_0x1b82('0xf')]){if(_0x141673[_0x1b82('0xf')]['code']===0x1f4){logger[_0x1b82('0xf')](_0x1b82('0xa'),_0x202a5f,_0x141673[_0x1b82('0xf')][_0x1b82('0x10')]);return _0x7b87e8(_0x141673['error'][_0x1b82('0x10')]);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x202a5f,_0x141673[_0x1b82('0xf')]['message']);return _0x18f45f(_0x141673[_0x1b82('0xf')][_0x1b82('0x10')]);}else{logger['info'](_0x1b82('0xa'),_0x202a5f,'request\x20sent');_0x18f45f(_0x141673['result'][_0x1b82('0x10')]);}})['catch'](function(_0x111247){logger[_0x1b82('0xf')](_0x1b82('0xa'),_0x202a5f,_0x111247);_0x7b87e8(_0x111247);});});}
\ No newline at end of file
+var _0xb903=['http','request','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','WhatsappApplication,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xe39f11,_0x198367){var _0x15595c=function(_0x2b68bc){while(--_0x2b68bc){_0xe39f11['push'](_0xe39f11['shift']());}};_0x15595c(++_0x198367);}(_0xb903,0x185));var _0x3b90=function(_0x5bee96,_0x52cd81){_0x5bee96=_0x5bee96-0x0;var _0x52e45a=_0xb903[_0x5bee96];return _0x52e45a;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var moment=require(_0x3b90('0x2'));var BPromise=require(_0x3b90('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b90('0x4'));var db=require(_0x3b90('0x5'))['db'];var utils=require(_0x3b90('0x6'));var logger=require(_0x3b90('0x7'))(_0x3b90('0x8'));var config=require(_0x3b90('0x9'));var jayson=require(_0x3b90('0xa'));var client=jayson['client'][_0x3b90('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e845a,_0x55792c,_0x153283){return new BPromise(function(_0x2e4c06,_0x42efe8){return client[_0x3b90('0xc')](_0x5e845a,_0x153283)['then'](function(_0x5cda1d){logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x55792c,'request\x20sent');logger['debug'](_0x3b90('0xd'),_0x55792c,_0x3b90('0xe'),JSON['stringify'](_0x5cda1d));if(_0x5cda1d[_0x3b90('0xf')]){if(_0x5cda1d[_0x3b90('0xf')]['code']===0x1f4){logger[_0x3b90('0xf')](_0x3b90('0x10'),_0x55792c,_0x5cda1d[_0x3b90('0xf')]['message']);return _0x42efe8(_0x5cda1d['error'][_0x3b90('0x11')]);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x55792c,_0x5cda1d[_0x3b90('0xf')][_0x3b90('0x11')]);return _0x2e4c06(_0x5cda1d['error']['message']);}else{logger[_0x3b90('0x12')](_0x3b90('0x10'),_0x55792c,_0x3b90('0xe'));_0x2e4c06(_0x5cda1d[_0x3b90('0x13')][_0x3b90('0x11')]);}})['catch'](function(_0x494970){logger[_0x3b90('0xf')](_0x3b90('0x10'),_0x55792c,_0x494970);_0x42efe8(_0x494970);});});}
\ No newline at end of file
index f32515a..6e7a5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4d=['isAuthenticated','/describe','describe','show','/:id/messages','getMessages','download','post','create','addMessage','whatsapp','addTags','tracked','whatsappinteraction:update','update','delete','/:id','destroy','/:id/tags','exports','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get'];(function(_0x500ae1,_0x335b54){var _0x1e7b36=function(_0x3fc13b){while(--_0x3fc13b){_0x500ae1['push'](_0x500ae1['shift']());}};_0x1e7b36(++_0x335b54);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x2964d1,_0x5cb586){_0x2964d1=_0x2964d1-0x0;var _0x10ad50=_0x0f4d[_0x2964d1];return _0x10ad50;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd0f4('0x0'));var express=require('express');var router=express[_0xd0f4('0x1')]();var fs_extra=require(_0xd0f4('0x2'));var auth=require(_0xd0f4('0x3'));var interaction=require(_0xd0f4('0x4'));var config=require(_0xd0f4('0x5'));var controller=require(_0xd0f4('0x6'));router[_0xd0f4('0x7')]('/',auth[_0xd0f4('0x8')](),controller['index']);router[_0xd0f4('0x7')](_0xd0f4('0x9'),auth['isAuthenticated'](),controller[_0xd0f4('0xa')]);router[_0xd0f4('0x7')]('/:id',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xb')]);router['get'](_0xd0f4('0xc'),auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xd')]);router['get']('/:id/download',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0xe')]);router[_0xd0f4('0xf')]('/',auth[_0xd0f4('0x8')](),controller[_0xd0f4('0x10')]);router[_0xd0f4('0xf')](_0xd0f4('0xc'),auth['isAuthenticated'](),controller[_0xd0f4('0x11')]);router[_0xd0f4('0xf')]('/:id/tags',auth[_0xd0f4('0x8')](),interaction['tracked'](_0xd0f4('0x12'),'whatsappinteraction:addtags'),controller[_0xd0f4('0x13')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0xd0f4('0x14')](_0xd0f4('0x12'),_0xd0f4('0x15')),controller[_0xd0f4('0x16')]);router[_0xd0f4('0x17')](_0xd0f4('0x18'),auth[_0xd0f4('0x8')](),interaction[_0xd0f4('0x14')](_0xd0f4('0x12'),'whatsappinteraction:destroy'),controller[_0xd0f4('0x19')]);router[_0xd0f4('0x17')](_0xd0f4('0x1a'),auth[_0xd0f4('0x8')](),controller['removeTags']);module[_0xd0f4('0x1b')]=router;
\ No newline at end of file
+var _0xc1c6=['/describe','isAuthenticated','describe','show','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','/:id','whatsappinteraction:update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index'];(function(_0x42963c,_0x3c2b10){var _0xe4acd5=function(_0xa92fc0){while(--_0xa92fc0){_0x42963c['push'](_0x42963c['shift']());}};_0xe4acd5(++_0x3c2b10);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x145ac1,_0x28a9ed){_0x145ac1=_0x145ac1-0x0;var _0xcd5e27=_0xc1c6[_0x145ac1];return _0xcd5e27;};'use strict';var multer=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var path=require(_0x6c1c('0x2'));var timeout=require('connect-timeout');var express=require(_0x6c1c('0x3'));var router=express['Router']();var fs_extra=require(_0x6c1c('0x4'));var auth=require(_0x6c1c('0x5'));var interaction=require(_0x6c1c('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0x6c1c('0x7')]('/',auth['isAuthenticated'](),controller[_0x6c1c('0x8')]);router['get'](_0x6c1c('0x9'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xb')]);router[_0x6c1c('0x7')]('/:id',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xc')]);router['get'](_0x6c1c('0xd'),auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xe')]);router[_0x6c1c('0x7')]('/:id/download',auth[_0x6c1c('0xa')](),controller[_0x6c1c('0xf')]);router[_0x6c1c('0x10')]('/',auth['isAuthenticated'](),controller[_0x6c1c('0x11')]);router[_0x6c1c('0x10')](_0x6c1c('0xd'),auth['isAuthenticated'](),controller[_0x6c1c('0x12')]);router['post'](_0x6c1c('0x13'),auth[_0x6c1c('0xa')](),interaction[_0x6c1c('0x14')](_0x6c1c('0x15'),_0x6c1c('0x16')),controller[_0x6c1c('0x17')]);router[_0x6c1c('0x18')](_0x6c1c('0x19'),auth[_0x6c1c('0xa')](),interaction['tracked'](_0x6c1c('0x15'),_0x6c1c('0x1a')),controller['update']);router[_0x6c1c('0x1b')](_0x6c1c('0x19'),auth['isAuthenticated'](),interaction[_0x6c1c('0x14')]('whatsapp',_0x6c1c('0x1c')),controller[_0x6c1c('0x1d')]);router['delete'](_0x6c1c('0x13'),auth['isAuthenticated'](),controller[_0x6c1c('0x1e')]);module[_0x6c1c('0x1f')]=router;
\ No newline at end of file
index a81ee94..30e0764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d49=['STRING','ENUM','out','moment','BOOLEAN','DATE'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x4d49,0x141));var _0x94d4=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x4d49[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x94d4('0x0'));module['exports']={'closed':{'type':Sequelize[_0x94d4('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x94d4('0x2')]},'disposition':{'type':Sequelize[_0x94d4('0x3')]},'secondDisposition':{'type':Sequelize[_0x94d4('0x3')]},'thirdDisposition':{'type':Sequelize[_0x94d4('0x3')]},'note':{'type':Sequelize[_0x94d4('0x3')]},'phone':{'type':Sequelize[_0x94d4('0x3')]},'read1stAt':{'type':Sequelize[_0x94d4('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x94d4('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x94d4('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x94d4('0x4')]('in',_0x94d4('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x94d4('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x093a=['BOOLEAN','STRING','DATE','ENUM','out','moment','exports'];(function(_0x17c483,_0xc69535){var _0x112bdb=function(_0x19adb9){while(--_0x19adb9){_0x17c483['push'](_0x17c483['shift']());}};_0x112bdb(++_0xc69535);}(_0x093a,0x16a));var _0xa093=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x093a[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa093('0x0'));module[_0xa093('0x1')]={'closed':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xa093('0x3')]},'thirdDisposition':{'type':Sequelize[_0xa093('0x3')]},'note':{'type':Sequelize[_0xa093('0x3')]},'phone':{'type':Sequelize[_0xa093('0x3')]},'read1stAt':{'type':Sequelize[_0xa093('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xa093('0x5')]('in',_0xa093('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa093('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xa093('0x5')]('in',_0xa093('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa093('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 44f2918..f319e5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3f3=['lastName','attachments','Attachment','createdAt','secret','read','WhatsappAccount','Account','Owner','get','mkdirSync','N.A.','closed','Messages','existsSync','createReadStream','pipe','createWriteStream','basename','direction','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/logger','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','error','stack','name','send','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','query','user','catch','show','params','keys','filters','intersection','model','attributes','fields','includeAll','include','merge','options','create','update','body','destroy','describe','WhatsappMessage','ids','omit','getMessages','findOne','length','nolimit','sort','pick','where','WhatsappInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','find','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','server','files','tmp','join','root','push','User','fullname','CmContact','Contact','firstName'];(function(_0x52be3f,_0x4aa98b){var _0x5d38a4=function(_0x16de12){while(--_0x16de12){_0x52be3f['push'](_0x52be3f['shift']());}};_0x5d38a4(++_0x4aa98b);}(_0xa3f3,0x1a1));var _0x3a3f=function(_0x2026d9,_0x43732b){_0x2026d9=_0x2026d9-0x0;var _0x8a229e=_0xa3f3[_0x2026d9];return _0x8a229e;};'use strict';var rimraf=require(_0x3a3f('0x0'));var zipdir=require(_0x3a3f('0x1'));var moment=require(_0x3a3f('0x2'));var BPromise=require(_0x3a3f('0x3'));var util=require(_0x3a3f('0x4'));var path=require(_0x3a3f('0x5'));var ejs=require(_0x3a3f('0x6'));var fs=require('fs');var _=require(_0x3a3f('0x7'));var Redis=require('ioredis');var interaction=require(_0x3a3f('0x8'));var qs=require(_0x3a3f('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x3a3f('0xa'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_[_0x3a3f('0xb')](config[_0x3a3f('0xc')],{'host':_0x3a3f('0xd'),'port':0x18eb});var socket=require(_0x3a3f('0xe'))(new Redis(config[_0x3a3f('0xc')]));require(_0x3a3f('0xf'))['register'](socket);function respondWithStatusCode(_0x463944,_0x2053ad){_0x2053ad=_0x2053ad||0xcc;return function(_0x168215){if(_0x168215){return _0x463944[_0x3a3f('0x10')](_0x2053ad);}return _0x463944[_0x3a3f('0x11')](_0x2053ad)[_0x3a3f('0x12')]();};}function respondWithResult(_0x2c41da,_0x57f804){_0x57f804=_0x57f804||0xc8;return function(_0xdac503){if(_0xdac503){return _0x2c41da[_0x3a3f('0x11')](_0x57f804)[_0x3a3f('0x13')](_0xdac503);}};}function respondWithFilteredResult(_0x55a840,_0x4a9601){return function(_0x3df7cb){if(_0x3df7cb){var _0x1a9981=typeof _0x4a9601[_0x3a3f('0x14')]===_0x3a3f('0x15')&&typeof _0x4a9601[_0x3a3f('0x16')]===_0x3a3f('0x15');var _0x48c4b3=_0x3df7cb['count'];var _0x518e3d=_0x1a9981?0x0:_0x4a9601[_0x3a3f('0x14')];var _0x2caa64=_0x1a9981?_0x3df7cb[_0x3a3f('0x17')]:_0x4a9601[_0x3a3f('0x14')]+_0x4a9601[_0x3a3f('0x16')];var _0x26b75c;if(_0x2caa64>=_0x48c4b3){_0x2caa64=_0x48c4b3;_0x26b75c=0xc8;}else{_0x26b75c=0xce;}_0x55a840[_0x3a3f('0x11')](_0x26b75c);return _0x55a840[_0x3a3f('0x18')](_0x3a3f('0x19'),_0x518e3d+'-'+_0x2caa64+'/'+_0x48c4b3)['json'](_0x3df7cb);}return null;};}function saveUpdates(_0x374694){return function(_0x314578){if(_0x314578){return _0x314578['update'](_0x374694)[_0x3a3f('0x1a')](function(_0x4fdfbe){return _0x4fdfbe;});}return null;};}function removeEntity(_0x5aee45){return function(_0x15e3c8){if(_0x15e3c8){return _0x15e3c8['destroy']()['then'](function(){_0x5aee45[_0x3a3f('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dfdbe){return function(_0xdaf3c){if(!_0xdaf3c){_0x3dfdbe[_0x3a3f('0x10')](0x194);}return _0xdaf3c;};}function handleError(_0x25c621,_0x3c7279){_0x3c7279=_0x3c7279||0x1f4;return function(_0x12ccfb){logger[_0x3a3f('0x1b')](_0x12ccfb[_0x3a3f('0x1c')]);if(_0x12ccfb[_0x3a3f('0x1d')]){delete _0x12ccfb[_0x3a3f('0x1d')];}_0x25c621[_0x3a3f('0x11')](_0x3c7279)[_0x3a3f('0x1e')](_0x12ccfb);};}exports['index']=function(_0x38546f,_0xc4b7e6){var _0x42d0fb={};var _0x12a185=_[_0x3a3f('0x1f')](db[_0x3a3f('0x20')][_0x3a3f('0x21')],function(_0x1adc36){return{'name':_0x1adc36[_0x3a3f('0x22')],'type':_0x1adc36[_0x3a3f('0x23')][_0x3a3f('0x24')]};});_0x42d0fb=qs[_0x3a3f('0x25')](_0x12a185,_0x38546f);return interaction[_0x3a3f('0x26')]('whatsapp',_0x38546f[_0x3a3f('0x27')],_0x38546f[_0x3a3f('0x28')],_0x42d0fb,_0x12a185)[_0x3a3f('0x1a')](respondWithFilteredResult(_0xc4b7e6,_0x42d0fb))[_0x3a3f('0x29')](handleError(_0xc4b7e6,null));};exports[_0x3a3f('0x2a')]=function(_0x3bfd83,_0x3fce07){var _0x4a9b55={'raw':![],'where':{'id':_0x3bfd83[_0x3a3f('0x2b')]['id']}},_0x1d3e87={};_0x1d3e87['model']=_['keys'](db[_0x3a3f('0x20')][_0x3a3f('0x21')]);_0x1d3e87['query']=_[_0x3a3f('0x2c')](_0x3bfd83[_0x3a3f('0x27')]);_0x1d3e87[_0x3a3f('0x2d')]=_[_0x3a3f('0x2e')](_0x1d3e87[_0x3a3f('0x2f')],_0x1d3e87['query']);_0x4a9b55[_0x3a3f('0x30')]=_['intersection'](_0x1d3e87[_0x3a3f('0x2f')],qs[_0x3a3f('0x31')](_0x3bfd83[_0x3a3f('0x27')][_0x3a3f('0x31')]));_0x4a9b55[_0x3a3f('0x30')]=_0x4a9b55[_0x3a3f('0x30')]['length']?_0x4a9b55['attributes']:_0x1d3e87[_0x3a3f('0x2f')];if(_0x3bfd83[_0x3a3f('0x27')][_0x3a3f('0x32')]){_0x4a9b55[_0x3a3f('0x33')]=[{'all':!![]}];}_0x4a9b55=_[_0x3a3f('0x34')]({},_0x4a9b55,_0x3bfd83[_0x3a3f('0x35')]);return db[_0x3a3f('0x20')]['find'](_0x4a9b55)[_0x3a3f('0x1a')](handleEntityNotFound(_0x3fce07,null))[_0x3a3f('0x1a')](respondWithResult(_0x3fce07,null))['catch'](handleError(_0x3fce07,null));};exports[_0x3a3f('0x36')]=function(_0xb1f3df,_0x15db12){return db[_0x3a3f('0x20')][_0x3a3f('0x36')](_0xb1f3df['body'],{})[_0x3a3f('0x1a')](respondWithResult(_0x15db12,0xc9))['catch'](handleError(_0x15db12,null));};exports[_0x3a3f('0x37')]=function(_0x5736b6,_0x414fe6){if(_0x5736b6[_0x3a3f('0x38')]['id']){delete _0x5736b6['body']['id'];}return db[_0x3a3f('0x20')]['find']({'where':{'id':_0x5736b6[_0x3a3f('0x2b')]['id']}})['then'](handleEntityNotFound(_0x414fe6,null))[_0x3a3f('0x1a')](saveUpdates(_0x5736b6[_0x3a3f('0x38')],null))['then'](respondWithResult(_0x414fe6,null))[_0x3a3f('0x29')](handleError(_0x414fe6,null));};exports[_0x3a3f('0x39')]=function(_0x48a5fc,_0x289c3c){return db[_0x3a3f('0x20')]['find']({'where':{'id':_0x48a5fc[_0x3a3f('0x2b')]['id']}})[_0x3a3f('0x1a')](handleEntityNotFound(_0x289c3c,null))[_0x3a3f('0x1a')](removeEntity(_0x289c3c,null))[_0x3a3f('0x29')](handleError(_0x289c3c,null));};exports[_0x3a3f('0x3a')]=function(_0x1a95b2,_0x4fab4e){return db[_0x3a3f('0x20')][_0x3a3f('0x3a')]()[_0x3a3f('0x1a')](respondWithResult(_0x4fab4e,null))[_0x3a3f('0x29')](handleError(_0x4fab4e,null));};exports['addMessage']=function(_0x2c46fb,_0x1753c9){return db[_0x3a3f('0x3b')]['find']({'where':{'id':_0x2c46fb[_0x3a3f('0x2b')]['id']}})[_0x3a3f('0x1a')](handleEntityNotFound(_0x1753c9,null))[_0x3a3f('0x1a')](function(_0x581c04){if(_0x581c04){return _0x581c04['addMessage'](_0x2c46fb[_0x3a3f('0x38')][_0x3a3f('0x3c')],_[_0x3a3f('0x3d')](_0x2c46fb[_0x3a3f('0x38')],[_0x3a3f('0x3c'),'id'])||{});}})[_0x3a3f('0x1a')](respondWithResult(_0x1753c9,null))['catch'](handleError(_0x1753c9,null));};exports[_0x3a3f('0x3e')]=function(_0x55ebba,_0x4e551f){var _0x38eca0={'raw':![],'where':{}};var _0xe61182={};var _0x56bdf9={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x3a3f('0x3f')]({'where':{'id':_0x55ebba['params']['id']}})['then'](handleEntityNotFound(_0x4e551f,null))[_0x3a3f('0x1a')](function(_0x5ac584){if(_0x5ac584){_0xe61182['model']=_['keys'](db[_0x3a3f('0x3b')][_0x3a3f('0x21')]);_0xe61182[_0x3a3f('0x27')]=_['keys'](_0x55ebba['query']);_0xe61182[_0x3a3f('0x2d')]=_[_0x3a3f('0x2e')](_0xe61182[_0x3a3f('0x2f')],_0xe61182['query']);_0x38eca0[_0x3a3f('0x30')]=_[_0x3a3f('0x2e')](_0xe61182[_0x3a3f('0x2f')],qs[_0x3a3f('0x31')](_0x55ebba[_0x3a3f('0x27')][_0x3a3f('0x31')]));_0x38eca0[_0x3a3f('0x30')]=_0x38eca0[_0x3a3f('0x30')][_0x3a3f('0x40')]?_0x38eca0['attributes']:_0xe61182[_0x3a3f('0x2f')];if(!_0x55ebba[_0x3a3f('0x27')]['hasOwnProperty'](_0x3a3f('0x41'))){_0x38eca0[_0x3a3f('0x16')]=qs['limit'](_0x55ebba['query'][_0x3a3f('0x16')]);_0x38eca0['offset']=qs[_0x3a3f('0x14')](_0x55ebba[_0x3a3f('0x27')]['offset']);}_0x38eca0['order']=qs['sort'](_0x55ebba['query'][_0x3a3f('0x42')]);_0x38eca0['where']=qs[_0x3a3f('0x2d')](_[_0x3a3f('0x43')](_0x55ebba[_0x3a3f('0x27')],_0xe61182[_0x3a3f('0x2d')]));_0x38eca0[_0x3a3f('0x44')][_0x3a3f('0x45')]=_0x5ac584['id'];if(_0x55ebba['query']['filter']){_0x38eca0[_0x3a3f('0x44')]=_[_0x3a3f('0x34')](_0x38eca0[_0x3a3f('0x44')],{'$or':_['map'](_0x38eca0[_0x3a3f('0x30')],function(_0x8b6e46){var _0x38f545={};_0x38f545[_0x8b6e46]={'$like':'%'+_0x55ebba[_0x3a3f('0x27')][_0x3a3f('0x46')]+'%'};return _0x38f545;})});}if(_0x55ebba[_0x3a3f('0x27')]['$gte']){var _0xa153e5=_0x55ebba[_0x3a3f('0x27')][_0x3a3f('0x47')][_0x3a3f('0x48')](',');var _0x5dd7e3={};_0x5dd7e3[_0xa153e5[0x0]]={'$gte':moment(_0xa153e5[0x1])[_0x3a3f('0x49')](_0x3a3f('0x4a'))};_0x38eca0[_0x3a3f('0x44')]=_[_0x3a3f('0x34')](_0x38eca0[_0x3a3f('0x44')],_0x5dd7e3);}_0x38eca0=_[_0x3a3f('0x34')]({},_0x38eca0,_0x55ebba['options']);return db['WhatsappMessage']['count']({'where':_0x38eca0[_0x3a3f('0x44')]})['then'](function(_0x28c511){_0x56bdf9[_0x3a3f('0x17')]=_0x28c511;if(_0x55ebba[_0x3a3f('0x27')][_0x3a3f('0x32')]){_0x38eca0['include']=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x38eca0);})['then'](function(_0x10d293){_0x56bdf9[_0x3a3f('0x4b')]=_0x10d293;return _0x56bdf9;});}})[_0x3a3f('0x1a')](respondWithFilteredResult(_0x4e551f,_0x38eca0))[_0x3a3f('0x29')](handleError(_0x4e551f,null));};exports[_0x3a3f('0x4c')]=function(_0x284c0a,_0x2badf2){return db['WhatsappInteraction'][_0x3a3f('0x4d')]({'where':{'id':_0x284c0a['params']['id']}})[_0x3a3f('0x1a')](handleEntityNotFound(_0x2badf2,null))[_0x3a3f('0x1a')](function(_0x10c967){if(_0x10c967){return _0x10c967[_0x3a3f('0x4e')](_0x284c0a[_0x3a3f('0x38')][_0x3a3f('0x3c')],_[_0x3a3f('0x3d')](_0x284c0a[_0x3a3f('0x38')],['ids','id'])||{})[_0x3a3f('0x4f')](function(){return db[_0x3a3f('0x50')][_0x3a3f('0x26')]({'attributes':['id',_0x3a3f('0x1d'),_0x3a3f('0x51')],'where':{'id':_0x284c0a['body'][_0x3a3f('0x3c')]}});})[_0x3a3f('0x1a')](function(_0x2f9b18){socket[_0x3a3f('0x52')](_0x3a3f('0x53'),{'id':Number(_0x284c0a['params']['id']),'tags':_0x2f9b18||[]});return{'id':Number(_0x284c0a[_0x3a3f('0x2b')]['id']),'tags':_0x2f9b18||[]};});}})[_0x3a3f('0x1a')](respondWithResult(_0x2badf2,null))[_0x3a3f('0x29')](handleError(_0x2badf2,null));};exports[_0x3a3f('0x54')]=function(_0x47c993,_0x2c45f6){return db[_0x3a3f('0x20')][_0x3a3f('0x4d')]({'where':{'id':_0x47c993[_0x3a3f('0x2b')]['id']}})[_0x3a3f('0x1a')](handleEntityNotFound(_0x2c45f6,null))[_0x3a3f('0x1a')](function(_0x45f9e5){if(_0x45f9e5){return _0x45f9e5[_0x3a3f('0x54')](_0x47c993[_0x3a3f('0x27')][_0x3a3f('0x3c')]);}})['then'](respondWithStatusCode(_0x2c45f6,null))[_0x3a3f('0x29')](handleError(_0x2c45f6,null));};exports[_0x3a3f('0x55')]=function(_0xba9468,_0x4f5ddb){var _0xbdf5e9=moment()[_0x3a3f('0x56')]()[_0x3a3f('0x57')]();var _0x4d607a=path['join'](config['root'],_0x3a3f('0x58'),_0x3a3f('0x59'),_0x3a3f('0x5a'));var _0x1324d3=path[_0x3a3f('0x5b')](config[_0x3a3f('0x5c')],_0x3a3f('0x58'),_0x3a3f('0x59'),'attachments');var _0x29c0d0=path['join'](_0x4d607a,_0xbdf5e9);var _0x480124=util[_0x3a3f('0x49')]('transcript-%d-%s.zip',_0xba9468[_0x3a3f('0x2b')]['id'],_0xbdf5e9);var _0x386e67=path[_0x3a3f('0x5b')](_0x4d607a,_0x480124);var _0x9c7b80=[];_0x9c7b80[_0x3a3f('0x5d')]({'model':db[_0x3a3f('0x5e')],'as':_0x3a3f('0x5e'),'attributes':['id',_0x3a3f('0x5f')],'raw':!![]});_0x9c7b80[_0x3a3f('0x5d')]({'model':db[_0x3a3f('0x60')],'as':_0x3a3f('0x61'),'attributes':['id',_0x3a3f('0x62'),_0x3a3f('0x63')],'raw':!![]});if(_0xba9468['query'][_0x3a3f('0x64')]){_0x9c7b80['push']({'model':db['Attachment'],'as':_0x3a3f('0x65'),'raw':!![]});}var _0x2cbcf6=[{'model':db[_0x3a3f('0x3b')],'as':'Messages','attributes':['id','body',_0x3a3f('0x66'),'direction',_0x3a3f('0x67'),_0x3a3f('0x68')],'include':_0x9c7b80}];_0x2cbcf6[_0x3a3f('0x5d')]({'model':db[_0x3a3f('0x69')],'as':_0x3a3f('0x6a'),'attributes':['id','name']});_0x2cbcf6[_0x3a3f('0x5d')]({'model':db[_0x3a3f('0x5e')],'as':_0x3a3f('0x6b'),'attributes':['id',_0x3a3f('0x5f')]});return db[_0x3a3f('0x20')][_0x3a3f('0x4d')]({'where':{'id':_0xba9468['params']['id']},'include':_0x2cbcf6})['then'](handleEntityNotFound(_0x4f5ddb,null))['then'](function(_0x4217e6){if(_0x4217e6){var _0x5e5666=_0x4217e6[_0x3a3f('0x6c')]({'plain':!![]});fs[_0x3a3f('0x6d')](_0x29c0d0);var _0xcf5e29={'channel':'Whatsapp','account':_0x5e5666[_0x3a3f('0x6a')][_0x3a3f('0x1d')],'agent':_0x5e5666['Owner']?_0x5e5666['Owner']['fullname']:_0x3a3f('0x6e'),'createdAt':moment(_0x5e5666[_0x3a3f('0x66')])[_0x3a3f('0x49')](_0x3a3f('0x4a'))['toString'](),'closedAt':_0x5e5666[_0x3a3f('0x6f')]?moment(_0x5e5666['closedAt'])[_0x3a3f('0x49')](_0x3a3f('0x4a'))[_0x3a3f('0x57')]():'','disposition':_0x5e5666['disposition'],'messages':_(_0x5e5666[_0x3a3f('0x70')])['filter']({'secret':![]})[_0x3a3f('0x1f')](function(_0x3a073c){if(_0x3a073c[_0x3a3f('0x65')]){var _0x4e030f=path['join'](_0x1324d3,_0x3a073c['Attachment']['basename']);if(fs[_0x3a3f('0x71')](_0x4e030f)){fs[_0x3a3f('0x72')](_0x4e030f)[_0x3a3f('0x73')](fs[_0x3a3f('0x74')](path[_0x3a3f('0x5b')](_0x29c0d0,_0x3a073c[_0x3a3f('0x65')][_0x3a3f('0x75')])));}}return{'date':moment(_0x3a073c[_0x3a3f('0x66')])[_0x3a3f('0x49')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x3a073c[_0x3a3f('0x76')]===_0x3a3f('0x77')?_0x3a073c[_0x3a3f('0x5e')]?_0x3a073c[_0x3a3f('0x5e')]['fullname']:_0x3a3f('0x78'):_0x3a073c[_0x3a3f('0x61')]['firstName']+(_0x3a073c[_0x3a3f('0x61')][_0x3a3f('0x63')]?'\x20'+_0x3a073c[_0x3a3f('0x61')][_0x3a3f('0x63')]:''),'body':_0x3a073c['Attachment']?_0x3a073c['Attachment'][_0x3a3f('0x75')]:_0x3a073c[_0x3a3f('0x38')],'direction':_0x3a073c[_0x3a3f('0x76')]===_0x3a3f('0x77')?'A':'C','secret':_0x3a073c[_0x3a3f('0x67')],'read':_0x3a073c[_0x3a3f('0x68')],'attachment':_0x3a073c[_0x3a3f('0x65')]};})['value']()};return ejs[_0x3a3f('0x79')](path[_0x3a3f('0x5b')](config[_0x3a3f('0x5c')],_0x3a3f('0x58'),_0x3a3f('0x7a'),_0x3a3f('0x7b')),{'interaction':_0xcf5e29})['then'](function(_0x50cee1){var _0x3bfbe4=path[_0x3a3f('0x5b')](_0x29c0d0,_0x3a3f('0x7c')+_0x5e5666['id']+'-'+_0xbdf5e9+_0x3a3f('0x7d'));var _0x545e79={'path':_0x3bfbe4,'channel':_0x3a3f('0x7e'),'interactionId':_0x5e5666['id']};return pdf['createPdfFromHTML'](_0x50cee1,_0x545e79);})['then'](function(){return new BPromise(function(_0x546c69,_0x2148fc){zipdir(_0x29c0d0,{'saveTo':_0x386e67},function(_0x5589a2,_0xd6ad1c){if(_0x5589a2)return _0x2148fc(_0x5589a2);return _0x546c69(_0xd6ad1c);});})[_0x3a3f('0x1a')](function(){return new BPromise(function(_0x2cc908,_0x374be2){rimraf(_0x29c0d0,function(_0x1cf618){if(_0x1cf618)_0x374be2(_0x1cf618);return _0x2cc908();});});})[_0x3a3f('0x1a')](function(){return _0x4f5ddb['download'](_0x386e67,_0x480124,function(_0x26dbd5){if(_0x26dbd5){console['log'](_0x3a3f('0x7f'),_0x26dbd5);}else{fs[_0x3a3f('0x80')](_0x386e67);}});});});}else{return _0x4f5ddb[_0x3a3f('0x10')](0xc8);}})[_0x3a3f('0x29')](handleError(_0x4f5ddb,null));};
\ No newline at end of file
+var _0x228b=['zip-dir','moment','bluebird','path','ejs','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/environment','redis','defaults','localhost','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','user','catch','show','params','model','keys','query','intersection','attributes','fields','length','includeAll','include','merge','find','create','body','describe','WhatsappMessage','ids','getMessages','findOne','filters','hasOwnProperty','nolimit','order','sort','where','WhatsappInteractionId','filter','$gte','split','format','options','rows','addTags','omit','findAll','color','emit','whatsappInteractionTags:save','removeTags','toString','root','files','tmp','join','server','transcript-%d-%s.zip','User','fullname','CmContact','Contact','lastName','push','Attachment','direction','secret','read','WhatsappAccount','Account','Owner','get','mkdirSync','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','basename','existsSync','pipe','createdAt','out','System','firstName','value','downloadInteraction.ejs','transcript-','.pdf','Whatsapp','createPdfFromHTML','log','unlinkSync','rimraf'];(function(_0x535c9e,_0x1344b0){var _0x2f426e=function(_0x42b816){while(--_0x42b816){_0x535c9e['push'](_0x535c9e['shift']());}};_0x2f426e(++_0x1344b0);}(_0x228b,0x1e7));var _0xb228=function(_0x466e6c,_0x4f9d78){_0x466e6c=_0x466e6c-0x0;var _0x2b478a=_0x228b[_0x466e6c];return _0x2b478a;};'use strict';var rimraf=require(_0xb228('0x0'));var zipdir=require(_0xb228('0x1'));var moment=require(_0xb228('0x2'));var BPromise=require(_0xb228('0x3'));var util=require('util');var path=require(_0xb228('0x4'));var ejs=require(_0xb228('0x5'));var fs=require('fs');var _=require('lodash');var Redis=require(_0xb228('0x6'));var interaction=require(_0xb228('0x7'));var qs=require('../../components/parsers/qs');var pdf=require(_0xb228('0x8'));var logger=require('../../config/logger')('api');var config=require(_0xb228('0x9'));var db=require('../../mysqldb')['db'];config[_0xb228('0xa')]=_[_0xb228('0xb')](config['redis'],{'host':_0xb228('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb228('0xd'))[_0xb228('0xe')](socket);function respondWithStatusCode(_0x4fe3e3,_0x51a3df){_0x51a3df=_0x51a3df||0xcc;return function(_0x25c240){if(_0x25c240){return _0x4fe3e3[_0xb228('0xf')](_0x51a3df);}return _0x4fe3e3[_0xb228('0x10')](_0x51a3df)[_0xb228('0x11')]();};}function respondWithResult(_0x374cc9,_0x55e2df){_0x55e2df=_0x55e2df||0xc8;return function(_0x3c3280){if(_0x3c3280){return _0x374cc9[_0xb228('0x10')](_0x55e2df)[_0xb228('0x12')](_0x3c3280);}};}function respondWithFilteredResult(_0x1dfaf9,_0x289760){return function(_0x2d1123){if(_0x2d1123){var _0x276262=typeof _0x289760[_0xb228('0x13')]===_0xb228('0x14')&&typeof _0x289760[_0xb228('0x15')]==='undefined';var _0x378821=_0x2d1123[_0xb228('0x16')];var _0x5cc9b1=_0x276262?0x0:_0x289760[_0xb228('0x13')];var _0x143ebe=_0x276262?_0x2d1123[_0xb228('0x16')]:_0x289760[_0xb228('0x13')]+_0x289760['limit'];var _0x35416a;if(_0x143ebe>=_0x378821){_0x143ebe=_0x378821;_0x35416a=0xc8;}else{_0x35416a=0xce;}_0x1dfaf9[_0xb228('0x10')](_0x35416a);return _0x1dfaf9[_0xb228('0x17')](_0xb228('0x18'),_0x5cc9b1+'-'+_0x143ebe+'/'+_0x378821)['json'](_0x2d1123);}return null;};}function saveUpdates(_0x35fc55){return function(_0x264747){if(_0x264747){return _0x264747[_0xb228('0x19')](_0x35fc55)[_0xb228('0x1a')](function(_0xf118e9){return _0xf118e9;});}return null;};}function removeEntity(_0x2d8bf0){return function(_0x4b5dab){if(_0x4b5dab){return _0x4b5dab[_0xb228('0x1b')]()['then'](function(){_0x2d8bf0['status'](0xcc)[_0xb228('0x11')]();});}};}function handleEntityNotFound(_0x50203d){return function(_0x428327){if(!_0x428327){_0x50203d[_0xb228('0xf')](0x194);}return _0x428327;};}function handleError(_0x5a1004,_0x257b31){_0x257b31=_0x257b31||0x1f4;return function(_0x1ff4d9){logger[_0xb228('0x1c')](_0x1ff4d9[_0xb228('0x1d')]);if(_0x1ff4d9[_0xb228('0x1e')]){delete _0x1ff4d9['name'];}_0x5a1004['status'](_0x257b31)[_0xb228('0x1f')](_0x1ff4d9);};}exports['index']=function(_0x174b85,_0x8167f5){var _0x5f15fe={};var _0xf89bff=_[_0xb228('0x20')](db[_0xb228('0x21')][_0xb228('0x22')],function(_0x5f3cc2){return{'name':_0x5f3cc2[_0xb228('0x23')],'type':_0x5f3cc2[_0xb228('0x24')][_0xb228('0x25')]};});_0x5f15fe=qs[_0xb228('0x26')](_0xf89bff,_0x174b85);return interaction['findAll']('whatsapp',_0x174b85['query'],_0x174b85[_0xb228('0x27')],_0x5f15fe,_0xf89bff)[_0xb228('0x1a')](respondWithFilteredResult(_0x8167f5,_0x5f15fe))[_0xb228('0x28')](handleError(_0x8167f5,null));};exports[_0xb228('0x29')]=function(_0x3102ae,_0x21be18){var _0x2f78e6={'raw':![],'where':{'id':_0x3102ae[_0xb228('0x2a')]['id']}},_0x40464b={};_0x40464b[_0xb228('0x2b')]=_[_0xb228('0x2c')](db[_0xb228('0x21')][_0xb228('0x22')]);_0x40464b['query']=_[_0xb228('0x2c')](_0x3102ae[_0xb228('0x2d')]);_0x40464b['filters']=_[_0xb228('0x2e')](_0x40464b[_0xb228('0x2b')],_0x40464b[_0xb228('0x2d')]);_0x2f78e6[_0xb228('0x2f')]=_[_0xb228('0x2e')](_0x40464b[_0xb228('0x2b')],qs[_0xb228('0x30')](_0x3102ae['query']['fields']));_0x2f78e6[_0xb228('0x2f')]=_0x2f78e6[_0xb228('0x2f')][_0xb228('0x31')]?_0x2f78e6[_0xb228('0x2f')]:_0x40464b[_0xb228('0x2b')];if(_0x3102ae[_0xb228('0x2d')][_0xb228('0x32')]){_0x2f78e6[_0xb228('0x33')]=[{'all':!![]}];}_0x2f78e6=_[_0xb228('0x34')]({},_0x2f78e6,_0x3102ae['options']);return db[_0xb228('0x21')][_0xb228('0x35')](_0x2f78e6)[_0xb228('0x1a')](handleEntityNotFound(_0x21be18,null))[_0xb228('0x1a')](respondWithResult(_0x21be18,null))['catch'](handleError(_0x21be18,null));};exports[_0xb228('0x36')]=function(_0x1761a0,_0x43639d){return db['WhatsappInteraction'][_0xb228('0x36')](_0x1761a0[_0xb228('0x37')],{})[_0xb228('0x1a')](respondWithResult(_0x43639d,0xc9))['catch'](handleError(_0x43639d,null));};exports['update']=function(_0x82204a,_0x130cc0){if(_0x82204a['body']['id']){delete _0x82204a[_0xb228('0x37')]['id'];}return db[_0xb228('0x21')][_0xb228('0x35')]({'where':{'id':_0x82204a[_0xb228('0x2a')]['id']}})[_0xb228('0x1a')](handleEntityNotFound(_0x130cc0,null))['then'](saveUpdates(_0x82204a[_0xb228('0x37')],null))[_0xb228('0x1a')](respondWithResult(_0x130cc0,null))[_0xb228('0x28')](handleError(_0x130cc0,null));};exports[_0xb228('0x1b')]=function(_0x4974ac,_0x164147){return db['WhatsappInteraction'][_0xb228('0x35')]({'where':{'id':_0x4974ac[_0xb228('0x2a')]['id']}})[_0xb228('0x1a')](handleEntityNotFound(_0x164147,null))[_0xb228('0x1a')](removeEntity(_0x164147,null))[_0xb228('0x28')](handleError(_0x164147,null));};exports[_0xb228('0x38')]=function(_0x48c2c2,_0x2e5531){return db['WhatsappInteraction']['describe']()[_0xb228('0x1a')](respondWithResult(_0x2e5531,null))[_0xb228('0x28')](handleError(_0x2e5531,null));};exports['addMessage']=function(_0x188764,_0x1ffff7){return db[_0xb228('0x39')][_0xb228('0x35')]({'where':{'id':_0x188764[_0xb228('0x2a')]['id']}})[_0xb228('0x1a')](handleEntityNotFound(_0x1ffff7,null))[_0xb228('0x1a')](function(_0xe9094c){if(_0xe9094c){return _0xe9094c['addMessage'](_0x188764[_0xb228('0x37')]['ids'],_['omit'](_0x188764['body'],[_0xb228('0x3a'),'id'])||{});}})[_0xb228('0x1a')](respondWithResult(_0x1ffff7,null))[_0xb228('0x28')](handleError(_0x1ffff7,null));};exports[_0xb228('0x3b')]=function(_0x48ee57,_0xafa0a3){var _0x452391={'raw':![],'where':{}};var _0x2c1302={};var _0xe7400a={'count':0x0,'rows':[]};return db[_0xb228('0x21')][_0xb228('0x3c')]({'where':{'id':_0x48ee57['params']['id']}})[_0xb228('0x1a')](handleEntityNotFound(_0xafa0a3,null))[_0xb228('0x1a')](function(_0x18810c){if(_0x18810c){_0x2c1302[_0xb228('0x2b')]=_[_0xb228('0x2c')](db['WhatsappMessage'][_0xb228('0x22')]);_0x2c1302[_0xb228('0x2d')]=_[_0xb228('0x2c')](_0x48ee57[_0xb228('0x2d')]);_0x2c1302[_0xb228('0x3d')]=_[_0xb228('0x2e')](_0x2c1302[_0xb228('0x2b')],_0x2c1302['query']);_0x452391[_0xb228('0x2f')]=_[_0xb228('0x2e')](_0x2c1302[_0xb228('0x2b')],qs[_0xb228('0x30')](_0x48ee57[_0xb228('0x2d')][_0xb228('0x30')]));_0x452391[_0xb228('0x2f')]=_0x452391[_0xb228('0x2f')][_0xb228('0x31')]?_0x452391[_0xb228('0x2f')]:_0x2c1302['model'];if(!_0x48ee57[_0xb228('0x2d')][_0xb228('0x3e')](_0xb228('0x3f'))){_0x452391[_0xb228('0x15')]=qs[_0xb228('0x15')](_0x48ee57[_0xb228('0x2d')][_0xb228('0x15')]);_0x452391['offset']=qs[_0xb228('0x13')](_0x48ee57[_0xb228('0x2d')]['offset']);}_0x452391[_0xb228('0x40')]=qs[_0xb228('0x41')](_0x48ee57['query']['sort']);_0x452391[_0xb228('0x42')]=qs[_0xb228('0x3d')](_['pick'](_0x48ee57[_0xb228('0x2d')],_0x2c1302[_0xb228('0x3d')]));_0x452391[_0xb228('0x42')][_0xb228('0x43')]=_0x18810c['id'];if(_0x48ee57['query'][_0xb228('0x44')]){_0x452391['where']=_[_0xb228('0x34')](_0x452391[_0xb228('0x42')],{'$or':_[_0xb228('0x20')](_0x452391[_0xb228('0x2f')],function(_0x5e0d40){var _0xe55295={};_0xe55295[_0x5e0d40]={'$like':'%'+_0x48ee57[_0xb228('0x2d')][_0xb228('0x44')]+'%'};return _0xe55295;})});}if(_0x48ee57[_0xb228('0x2d')][_0xb228('0x45')]){var _0x469305=_0x48ee57['query'][_0xb228('0x45')][_0xb228('0x46')](',');var _0x428fab={};_0x428fab[_0x469305[0x0]]={'$gte':moment(_0x469305[0x1])[_0xb228('0x47')]('YYYY-MM-DD\x20HH:mm:ss')};_0x452391[_0xb228('0x42')]=_[_0xb228('0x34')](_0x452391['where'],_0x428fab);}_0x452391=_['merge']({},_0x452391,_0x48ee57[_0xb228('0x48')]);return db[_0xb228('0x39')]['count']({'where':_0x452391[_0xb228('0x42')]})[_0xb228('0x1a')](function(_0xfcde59){_0xe7400a[_0xb228('0x16')]=_0xfcde59;if(_0x48ee57[_0xb228('0x2d')]['includeAll']){_0x452391[_0xb228('0x33')]=[{'all':!![]}];}return db[_0xb228('0x39')]['findAll'](_0x452391);})['then'](function(_0x185799){_0xe7400a[_0xb228('0x49')]=_0x185799;return _0xe7400a;});}})['then'](respondWithFilteredResult(_0xafa0a3,_0x452391))[_0xb228('0x28')](handleError(_0xafa0a3,null));};exports[_0xb228('0x4a')]=function(_0x479afc,_0x1255a4){return db['WhatsappInteraction'][_0xb228('0x35')]({'where':{'id':_0x479afc['params']['id']}})[_0xb228('0x1a')](handleEntityNotFound(_0x1255a4,null))[_0xb228('0x1a')](function(_0x1b9c48){if(_0x1b9c48){return _0x1b9c48['setTags'](_0x479afc[_0xb228('0x37')][_0xb228('0x3a')],_[_0xb228('0x4b')](_0x479afc[_0xb228('0x37')],[_0xb228('0x3a'),'id'])||{})['spread'](function(){return db['Tag'][_0xb228('0x4c')]({'attributes':['id',_0xb228('0x1e'),_0xb228('0x4d')],'where':{'id':_0x479afc[_0xb228('0x37')]['ids']}});})['then'](function(_0x4cc582){socket[_0xb228('0x4e')](_0xb228('0x4f'),{'id':Number(_0x479afc[_0xb228('0x2a')]['id']),'tags':_0x4cc582||[]});return{'id':Number(_0x479afc[_0xb228('0x2a')]['id']),'tags':_0x4cc582||[]};});}})['then'](respondWithResult(_0x1255a4,null))[_0xb228('0x28')](handleError(_0x1255a4,null));};exports[_0xb228('0x50')]=function(_0x82e56d,_0x5f3439){return db[_0xb228('0x21')][_0xb228('0x35')]({'where':{'id':_0x82e56d['params']['id']}})['then'](handleEntityNotFound(_0x5f3439,null))['then'](function(_0x207498){if(_0x207498){return _0x207498['removeTags'](_0x82e56d['query']['ids']);}})[_0xb228('0x1a')](respondWithStatusCode(_0x5f3439,null))[_0xb228('0x28')](handleError(_0x5f3439,null));};exports['download']=function(_0x2acc76,_0x2abdbe){var _0x381996=moment()['unix']()[_0xb228('0x51')]();var _0x1b73d8=path['join'](config[_0xb228('0x52')],'server',_0xb228('0x53'),_0xb228('0x54'));var _0x57b59b=path[_0xb228('0x55')](config[_0xb228('0x52')],_0xb228('0x56'),'files','attachments');var _0x45fead=path[_0xb228('0x55')](_0x1b73d8,_0x381996);var _0xc44439=util[_0xb228('0x47')](_0xb228('0x57'),_0x2acc76['params']['id'],_0x381996);var _0x5b25bb=path[_0xb228('0x55')](_0x1b73d8,_0xc44439);var _0x2865db=[];_0x2865db['push']({'model':db[_0xb228('0x58')],'as':_0xb228('0x58'),'attributes':['id',_0xb228('0x59')],'raw':!![]});_0x2865db['push']({'model':db[_0xb228('0x5a')],'as':_0xb228('0x5b'),'attributes':['id','firstName',_0xb228('0x5c')],'raw':!![]});if(_0x2acc76['query']['attachments']){_0x2865db[_0xb228('0x5d')]({'model':db[_0xb228('0x5e')],'as':_0xb228('0x5e'),'raw':!![]});}var _0x137e66=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id',_0xb228('0x37'),'createdAt',_0xb228('0x5f'),_0xb228('0x60'),_0xb228('0x61')],'include':_0x2865db}];_0x137e66[_0xb228('0x5d')]({'model':db[_0xb228('0x62')],'as':_0xb228('0x63'),'attributes':['id',_0xb228('0x1e')]});_0x137e66[_0xb228('0x5d')]({'model':db['User'],'as':_0xb228('0x64'),'attributes':['id',_0xb228('0x59')]});return db['WhatsappInteraction'][_0xb228('0x35')]({'where':{'id':_0x2acc76[_0xb228('0x2a')]['id']},'include':_0x137e66})[_0xb228('0x1a')](handleEntityNotFound(_0x2abdbe,null))['then'](function(_0x42af6a){if(_0x42af6a){var _0x69fb40=_0x42af6a[_0xb228('0x65')]({'plain':!![]});fs[_0xb228('0x66')](_0x45fead);var _0x1e3d96={'channel':'Whatsapp','account':_0x69fb40[_0xb228('0x63')][_0xb228('0x1e')],'agent':_0x69fb40[_0xb228('0x64')]?_0x69fb40[_0xb228('0x64')][_0xb228('0x59')]:_0xb228('0x67'),'createdAt':moment(_0x69fb40['createdAt'])[_0xb228('0x47')](_0xb228('0x68'))[_0xb228('0x51')](),'closedAt':_0x69fb40['closed']?moment(_0x69fb40[_0xb228('0x69')])['format'](_0xb228('0x68'))['toString']():'','disposition':_0x69fb40[_0xb228('0x6a')],'messages':_(_0x69fb40['Messages'])['filter']({'secret':![]})[_0xb228('0x20')](function(_0x689a1a){if(_0x689a1a[_0xb228('0x5e')]){var _0x5b9b5e=path['join'](_0x57b59b,_0x689a1a['Attachment'][_0xb228('0x6b')]);if(fs[_0xb228('0x6c')](_0x5b9b5e)){fs['createReadStream'](_0x5b9b5e)[_0xb228('0x6d')](fs['createWriteStream'](path[_0xb228('0x55')](_0x45fead,_0x689a1a[_0xb228('0x5e')]['basename'])));}}return{'date':moment(_0x689a1a[_0xb228('0x6e')])[_0xb228('0x47')]('YYYY-MM-DD\x20HH:mm:ss')[_0xb228('0x51')](),'sender':_0x689a1a[_0xb228('0x5f')]===_0xb228('0x6f')?_0x689a1a[_0xb228('0x58')]?_0x689a1a[_0xb228('0x58')][_0xb228('0x59')]:_0xb228('0x70'):_0x689a1a['Contact'][_0xb228('0x71')]+(_0x689a1a[_0xb228('0x5b')][_0xb228('0x5c')]?'\x20'+_0x689a1a['Contact']['lastName']:''),'body':_0x689a1a[_0xb228('0x5e')]?_0x689a1a['Attachment'][_0xb228('0x6b')]:_0x689a1a[_0xb228('0x37')],'direction':_0x689a1a[_0xb228('0x5f')]===_0xb228('0x6f')?'A':'C','secret':_0x689a1a[_0xb228('0x60')],'read':_0x689a1a[_0xb228('0x61')],'attachment':_0x689a1a[_0xb228('0x5e')]};})[_0xb228('0x72')]()};return ejs['renderFile'](path[_0xb228('0x55')](config[_0xb228('0x52')],_0xb228('0x56'),'views',_0xb228('0x73')),{'interaction':_0x1e3d96})['then'](function(_0x22f6a4){var _0x4ba9f=path[_0xb228('0x55')](_0x45fead,_0xb228('0x74')+_0x69fb40['id']+'-'+_0x381996+_0xb228('0x75'));var _0x30b9c9={'path':_0x4ba9f,'channel':_0xb228('0x76'),'interactionId':_0x69fb40['id']};return pdf[_0xb228('0x77')](_0x22f6a4,_0x30b9c9);})['then'](function(){return new BPromise(function(_0x4bd739,_0x9ef659){zipdir(_0x45fead,{'saveTo':_0x5b25bb},function(_0xe753a,_0x226b6b){if(_0xe753a)return _0x9ef659(_0xe753a);return _0x4bd739(_0x226b6b);});})[_0xb228('0x1a')](function(){return new BPromise(function(_0x5b1eff,_0xd36771){rimraf(_0x45fead,function(_0x1bc348){if(_0x1bc348)_0xd36771(_0x1bc348);return _0x5b1eff();});});})[_0xb228('0x1a')](function(){return _0x2abdbe['download'](_0x5b25bb,_0xc44439,function(_0x3cec57){if(_0x3cec57){console[_0xb228('0x78')]('err',_0x3cec57);}else{fs[_0xb228('0x79')](_0x5b25bb);}});});});}else{return _0x2abdbe[_0xb228('0xf')](0xc8);}})[_0xb228('0x28')](handleError(_0x2abdbe,null));};
\ No newline at end of file
index 44e6dd6..f0c0ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd691=['setMaxListeners','save','update','remove','getUsers','setDataValue','map','findAll','then','unreadMessages','length','emit','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xd691,0xe6));var _0x1d69=function(_0x485865,_0x11d29a){_0x485865=_0x485865-0x0;var _0x11ef06=_0xd691[_0x485865];return _0x11ef06;};'use strict';var EventEmitter=require(_0x1d69('0x0'));var WhatsappInteraction=require(_0x1d69('0x1'))['db'][_0x1d69('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x1d69('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x1d69('0x4')](0x0);var events={'afterCreate':_0x1d69('0x5'),'afterUpdate':_0x1d69('0x6'),'afterDestroy':_0x1d69('0x7')};function emitEvent(_0x2228be){return function(_0x268d3e,_0x3d879d,_0xdbf1f2){_0x268d3e[_0x1d69('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x520acb){_0x268d3e[_0x1d69('0x9')]('Users',_0x520acb[_0x1d69('0xa')](function(_0x122b27){return{'id':_0x122b27['id']};}));return WhatsappMessage[_0x1d69('0xb')]({'where':{'WhatsappInteractionId':_0x268d3e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1d69('0xc')](function(_0x58a753){_0x268d3e[_0x1d69('0x9')](_0x1d69('0xd'),_0x58a753[_0x1d69('0xe')]);WhatsappInteractionEvents[_0x1d69('0xf')](_0x2228be+':'+_0x268d3e['id'],_0x268d3e);WhatsappInteractionEvents[_0x1d69('0xf')](_0x2228be,_0x268d3e);_0xdbf1f2(null);})['catch'](_0xdbf1f2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x1d69('0x10')](e,emitEvent(event));}}module[_0x1d69('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x7070=['emit','hasOwnProperty','exports','../../mysqldb','save','update','remove','map','findAll','then','setDataValue','unreadMessages','length'];(function(_0x44f5c5,_0x4b4eb6){var _0x589904=function(_0x2a06bb){while(--_0x2a06bb){_0x44f5c5['push'](_0x44f5c5['shift']());}};_0x589904(++_0x4b4eb6);}(_0x7070,0x1d7));var _0x0707=function(_0x2f610b,_0x405c00){_0x2f610b=_0x2f610b-0x0;var _0x7b9c95=_0x7070[_0x2f610b];return _0x7b9c95;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0x0707('0x0'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x0707('0x0'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0707('0x1'),'afterUpdate':_0x0707('0x2'),'afterDestroy':_0x0707('0x3')};function emitEvent(_0x878573){return function(_0x4b333a,_0x210102,_0x138a4){_0x4b333a['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x2e2dc0){_0x4b333a['setDataValue']('Users',_0x2e2dc0[_0x0707('0x4')](function(_0xacf92){return{'id':_0xacf92['id']};}));return WhatsappMessage[_0x0707('0x5')]({'where':{'WhatsappInteractionId':_0x4b333a['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0707('0x6')](function(_0x8aa149){_0x4b333a[_0x0707('0x7')](_0x0707('0x8'),_0x8aa149[_0x0707('0x9')]);WhatsappInteractionEvents[_0x0707('0xa')](_0x878573+':'+_0x4b333a['id'],_0x4b333a);WhatsappInteractionEvents[_0x0707('0xa')](_0x878573,_0x4b333a);_0x138a4(null);})['catch'](_0x138a4(null));};}for(var e in events){if(events[_0x0707('0xb')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x0707('0xc')]=WhatsappInteractionEvents;
\ No newline at end of file
index faa5424..bc77d03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x344f=['changed','closed','closedAt','format','lodash','util','moment','bluebird','request-promise','path','rimraf','./whatsappInteraction.attributes','exports','define','WhatsappInteraction'];(function(_0x2d08b9,_0x2fee02){var _0x34c713=function(_0x57defa){while(--_0x57defa){_0x2d08b9['push'](_0x2d08b9['shift']());}};_0x34c713(++_0x2fee02);}(_0x344f,0x103));var _0xf344=function(_0x56b1c5,_0x12a31f){_0x56b1c5=_0x56b1c5-0x0;var _0x1af40b=_0x344f[_0x56b1c5];return _0x1af40b;};'use strict';var _=require(_0xf344('0x0'));var util=require(_0xf344('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf344('0x2'));var BPromise=require(_0xf344('0x3'));var rp=require(_0xf344('0x4'));var fs=require('fs');var path=require(_0xf344('0x5'));var rimraf=require(_0xf344('0x6'));var config=require('../../config/environment');var attributes=require(_0xf344('0x7'));module[_0xf344('0x8')]=function(_0x5c5cdc,_0x195345){return _0x5c5cdc[_0xf344('0x9')](_0xf344('0xa'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x117190,_0x22b856,_0x1c9707){if(_0x117190[_0xf344('0xb')](_0xf344('0xc'))){_0x117190[_0xf344('0xd')]=moment()[_0xf344('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1c9707(null,_0x117190);}}});};
\ No newline at end of file
+var _0x5063=['whatsapp_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x5063,0xad));var _0x3506=function(_0x5b4640,_0x146a6d){_0x5b4640=_0x5b4640-0x0;var _0x1dbbe8=_0x5063[_0x5b4640];return _0x1dbbe8;};'use strict';var _=require(_0x3506('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3506('0x1'));var moment=require(_0x3506('0x2'));var BPromise=require(_0x3506('0x3'));var rp=require(_0x3506('0x4'));var fs=require('fs');var path=require(_0x3506('0x5'));var rimraf=require(_0x3506('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappInteraction.attributes');module[_0x3506('0x7')]=function(_0x10e28e,_0x3c7343){return _0x10e28e[_0x3506('0x8')]('WhatsappInteraction',attributes,{'tableName':_0x3506('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x494146,_0x277e73,_0x374e24){if(_0x494146[_0x3506('0xa')](_0x3506('0xb'))){_0x494146[_0x3506('0xc')]=moment()['format'](_0x3506('0xd'));}_0x374e24(null,_0x494146);}}});};
\ No newline at end of file
index c9d541a..4fb0525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1716=['then','UpdateWhatsappInteraction','addTags','ids','omit','AddTags','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','socket.io-emitter','./whatsappInteraction.socket','request','info','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappInteraction,\x20%s,\x20%s','message','request\x20sent','result','catch','WhatsappInteraction','update','options','where','attributes','limit'];(function(_0x38c699,_0x56fea7){var _0x3b1ded=function(_0x100851){while(--_0x100851){_0x38c699['push'](_0x38c699['shift']());}};_0x3b1ded(++_0x56fea7);}(_0x1716,0x96));var _0x6171=function(_0x469439,_0xc19d86){_0x469439=_0x469439-0x0;var _0xbdf349=_0x1716[_0x469439];return _0xbdf349;};'use strict';var _=require(_0x6171('0x0'));var util=require(_0x6171('0x1'));var moment=require(_0x6171('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6171('0x3'));var db=require(_0x6171('0x4'))['db'];var utils=require(_0x6171('0x5'));var logger=require(_0x6171('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6171('0x7'));var client=jayson['client'][_0x6171('0x8')]({'port':0x232a});config[_0x6171('0x9')]=_[_0x6171('0xa')](config[_0x6171('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x6171('0xb'))(new Redis(config[_0x6171('0x9')]));require(_0x6171('0xc'))['register'](socket);function respondWithRpcPromise(_0x5e6164,_0x15b3ed,_0x33a305){return new BPromise(function(_0x8f59f1,_0x5d08c4){return client[_0x6171('0xd')](_0x5e6164,_0x33a305)['then'](function(_0x5a9546){logger[_0x6171('0xe')]('WhatsappInteraction,\x20%s,\x20%s',_0x15b3ed,'request\x20sent');logger[_0x6171('0xf')](_0x6171('0x10'),_0x15b3ed,'request\x20sent',JSON[_0x6171('0x11')](_0x5a9546));if(_0x5a9546[_0x6171('0x12')]){if(_0x5a9546['error']['code']===0x1f4){logger[_0x6171('0x12')](_0x6171('0x13'),_0x15b3ed,_0x5a9546[_0x6171('0x12')]['message']);return _0x5d08c4(_0x5a9546[_0x6171('0x12')][_0x6171('0x14')]);}logger['error'](_0x6171('0x13'),_0x15b3ed,_0x5a9546['error'][_0x6171('0x14')]);return _0x8f59f1(_0x5a9546[_0x6171('0x12')][_0x6171('0x14')]);}else{logger[_0x6171('0xe')](_0x6171('0x13'),_0x15b3ed,_0x6171('0x15'));_0x8f59f1(_0x5a9546[_0x6171('0x16')][_0x6171('0x14')]);}})[_0x6171('0x17')](function(_0x856e1){logger[_0x6171('0x12')](_0x6171('0x13'),_0x15b3ed,_0x856e1);_0x5d08c4(_0x856e1);});});}exports['UpdateWhatsappInteraction']=function(_0x509f42){var _0x1613d5=this;return new Promise(function(_0x1524cd,_0x28be4a){return db[_0x6171('0x18')][_0x6171('0x19')](_0x509f42['body'],{'raw':_0x509f42[_0x6171('0x1a')]?_0x509f42[_0x6171('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x509f42[_0x6171('0x1a')]?_0x509f42['options'][_0x6171('0x1b')]||null:null,'attributes':_0x509f42[_0x6171('0x1a')]?_0x509f42['options'][_0x6171('0x1c')]||null:null,'limit':_0x509f42['options']?_0x509f42[_0x6171('0x1a')][_0x6171('0x1d')]||null:null})[_0x6171('0x1e')](function(_0x3e5c1e){logger[_0x6171('0xe')]('UpdateWhatsappInteraction',_0x509f42);logger['debug'](_0x6171('0x1f'),_0x509f42,JSON[_0x6171('0x11')](_0x3e5c1e));_0x1524cd(_0x3e5c1e);})[_0x6171('0x17')](function(_0x55c9fd){logger['error']('UpdateWhatsappInteraction',_0x55c9fd['message'],_0x509f42);_0x28be4a(_0x1613d5[_0x6171('0x12')](0x1f4,_0x55c9fd['message']));});});};exports['AddTagsToWhatsappInteraction']=function(_0x16125b){return new Promise(function(_0x3f738d,_0x26ae13){return db['WhatsappInteraction']['find']({'where':_0x16125b['options']?_0x16125b[_0x6171('0x1a')][_0x6171('0x1b')]||null:null})[_0x6171('0x1e')](function(_0xba1d5e){if(_0xba1d5e){return _0xba1d5e[_0x6171('0x20')](_0x16125b['body'][_0x6171('0x21')],_[_0x6171('0x22')](_0x16125b['body'],['ids','id'])||{});}})['spread'](function(_0x32c08d){logger[_0x6171('0xe')](_0x6171('0x23'),_0x16125b);logger['debug']('AddTags',_0x16125b,JSON['stringify'](_0x32c08d));_0x3f738d(_0x32c08d);})[_0x6171('0x17')](function(_0x3ecf94){logger[_0x6171('0x12')](_0x6171('0x23'),_0x3ecf94[_0x6171('0x14')],_0x16125b);_0x26ae13(_this[_0x6171('0x12')](0x1f4,_0x3ecf94[_0x6171('0x14')]));});});};
\ No newline at end of file
+var _0x8edc=['AddTagsToWhatsappInteraction','addTags','omit','ids','spread','AddTags','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','request','then','info','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','attributes','limit','debug'];(function(_0x3de89b,_0x43abaa){var _0x1caad0=function(_0x450524){while(--_0x450524){_0x3de89b['push'](_0x3de89b['shift']());}};_0x1caad0(++_0x43abaa);}(_0x8edc,0x102));var _0xc8ed=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x8edc[_0x2b5eae];return _0x5f3ac9;};'use strict';var _=require(_0xc8ed('0x0'));var util=require(_0xc8ed('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc8ed('0x2'));var fs=require('fs');var Redis=require(_0xc8ed('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc8ed('0x4'))(_0xc8ed('0x5'));var config=require(_0xc8ed('0x6'));var jayson=require(_0xc8ed('0x7'));var client=jayson[_0xc8ed('0x8')]['http']({'port':0x232a});config[_0xc8ed('0x9')]=_[_0xc8ed('0xa')](config['redis'],{'host':_0xc8ed('0xb'),'port':0x18eb});var socket=require(_0xc8ed('0xc'))(new Redis(config[_0xc8ed('0x9')]));require(_0xc8ed('0xd'))['register'](socket);function respondWithRpcPromise(_0x11b7a7,_0x4b5a7b,_0x4d74cd){return new BPromise(function(_0x3f15cc,_0x1b15dd){return client[_0xc8ed('0xe')](_0x11b7a7,_0x4d74cd)[_0xc8ed('0xf')](function(_0x30905a){logger[_0xc8ed('0x10')]('WhatsappInteraction,\x20%s,\x20%s',_0x4b5a7b,_0xc8ed('0x11'));logger['debug'](_0xc8ed('0x12'),_0x4b5a7b,_0xc8ed('0x11'),JSON[_0xc8ed('0x13')](_0x30905a));if(_0x30905a[_0xc8ed('0x14')]){if(_0x30905a[_0xc8ed('0x14')][_0xc8ed('0x15')]===0x1f4){logger['error'](_0xc8ed('0x16'),_0x4b5a7b,_0x30905a[_0xc8ed('0x14')][_0xc8ed('0x17')]);return _0x1b15dd(_0x30905a[_0xc8ed('0x14')]['message']);}logger[_0xc8ed('0x14')](_0xc8ed('0x16'),_0x4b5a7b,_0x30905a['error'][_0xc8ed('0x17')]);return _0x3f15cc(_0x30905a[_0xc8ed('0x14')]['message']);}else{logger[_0xc8ed('0x10')](_0xc8ed('0x16'),_0x4b5a7b,_0xc8ed('0x11'));_0x3f15cc(_0x30905a[_0xc8ed('0x18')][_0xc8ed('0x17')]);}})[_0xc8ed('0x19')](function(_0x418831){logger[_0xc8ed('0x14')](_0xc8ed('0x16'),_0x4b5a7b,_0x418831);_0x1b15dd(_0x418831);});});}exports[_0xc8ed('0x1a')]=function(_0x159132){var _0x5c3b1c=this;return new Promise(function(_0x3a0b38,_0x3808c0){return db[_0xc8ed('0x1b')][_0xc8ed('0x1c')](_0x159132[_0xc8ed('0x1d')],{'raw':_0x159132['options']?_0x159132[_0xc8ed('0x1e')][_0xc8ed('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x159132['options']?_0x159132[_0xc8ed('0x1e')][_0xc8ed('0x20')]||null:null,'attributes':_0x159132[_0xc8ed('0x1e')]?_0x159132[_0xc8ed('0x1e')][_0xc8ed('0x21')]||null:null,'limit':_0x159132[_0xc8ed('0x1e')]?_0x159132[_0xc8ed('0x1e')][_0xc8ed('0x22')]||null:null})[_0xc8ed('0xf')](function(_0x406375){logger[_0xc8ed('0x10')](_0xc8ed('0x1a'),_0x159132);logger[_0xc8ed('0x23')]('UpdateWhatsappInteraction',_0x159132,JSON[_0xc8ed('0x13')](_0x406375));_0x3a0b38(_0x406375);})['catch'](function(_0x286431){logger[_0xc8ed('0x14')]('UpdateWhatsappInteraction',_0x286431[_0xc8ed('0x17')],_0x159132);_0x3808c0(_0x5c3b1c[_0xc8ed('0x14')](0x1f4,_0x286431[_0xc8ed('0x17')]));});});};exports[_0xc8ed('0x24')]=function(_0x3c0cd2){return new Promise(function(_0x44700e,_0x53186f){return db[_0xc8ed('0x1b')]['find']({'where':_0x3c0cd2['options']?_0x3c0cd2[_0xc8ed('0x1e')]['where']||null:null})[_0xc8ed('0xf')](function(_0x95149a){if(_0x95149a){return _0x95149a[_0xc8ed('0x25')](_0x3c0cd2[_0xc8ed('0x1d')]['ids'],_[_0xc8ed('0x26')](_0x3c0cd2[_0xc8ed('0x1d')],[_0xc8ed('0x27'),'id'])||{});}})[_0xc8ed('0x28')](function(_0x4c6c11){logger['info'](_0xc8ed('0x29'),_0x3c0cd2);logger[_0xc8ed('0x23')](_0xc8ed('0x29'),_0x3c0cd2,JSON[_0xc8ed('0x13')](_0x4c6c11));_0x44700e(_0x4c6c11);})[_0xc8ed('0x19')](function(_0x4142e1){logger[_0xc8ed('0x14')](_0xc8ed('0x29'),_0x4142e1[_0xc8ed('0x17')],_0x3c0cd2);_0x53186f(_this[_0xc8ed('0x14')](0x1f4,_0x4142e1[_0xc8ed('0x17')]));});});};
\ No newline at end of file
index d230452..f145f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2089=['./whatsappInteraction.events','save','remove','emit','removeListener','register'];(function(_0x15a4ce,_0x3ebf1e){var _0x57a6f0=function(_0x1c4728){while(--_0x1c4728){_0x15a4ce['push'](_0x15a4ce['shift']());}};_0x57a6f0(++_0x3ebf1e);}(_0x2089,0x114));var _0x9208=function(_0x16342f,_0x27e803){_0x16342f=_0x16342f-0x0;var _0x230924=_0x2089[_0x16342f];return _0x230924;};'use strict';var WhatsappInteractionEvents=require(_0x9208('0x0'));var events=[_0x9208('0x1'),_0x9208('0x2'),'update'];function createListener(_0x30abfe,_0x3ed2ba){return function(_0x1b703e){_0x3ed2ba[_0x9208('0x3')](_0x30abfe,_0x1b703e);};}function removeListener(_0x266cec,_0x5311ac){return function(){WhatsappInteractionEvents[_0x9208('0x4')](_0x266cec,_0x5311ac);};}exports[_0x9208('0x5')]=function(_0xca4fba){for(var _0x4ccbf6=0x0,_0x25b8b9=events['length'];_0x4ccbf6<_0x25b8b9;_0x4ccbf6++){var _0x534afe=events[_0x4ccbf6];var _0x5164e2=createListener('whatsappInteraction:'+_0x534afe,_0xca4fba);WhatsappInteractionEvents['on'](_0x534afe,_0x5164e2);}};
\ No newline at end of file
+var _0x5579=['register','length','whatsappInteraction:','./whatsappInteraction.events','save','remove','update','emit','removeListener'];(function(_0x1ddedd,_0x485606){var _0xa3e1ac=function(_0x580444){while(--_0x580444){_0x1ddedd['push'](_0x1ddedd['shift']());}};_0xa3e1ac(++_0x485606);}(_0x5579,0x147));var _0x9557=function(_0x3d9f36,_0x3fdfbf){_0x3d9f36=_0x3d9f36-0x0;var _0x4a22ca=_0x5579[_0x3d9f36];return _0x4a22ca;};'use strict';var WhatsappInteractionEvents=require(_0x9557('0x0'));var events=[_0x9557('0x1'),_0x9557('0x2'),_0x9557('0x3')];function createListener(_0x211487,_0x255768){return function(_0x458959){_0x255768[_0x9557('0x4')](_0x211487,_0x458959);};}function removeListener(_0x587c4e,_0xb09018){return function(){WhatsappInteractionEvents[_0x9557('0x5')](_0x587c4e,_0xb09018);};}exports[_0x9557('0x6')]=function(_0x3a6a9c){for(var _0x36d708=0x0,_0x5ed2a8=events[_0x9557('0x7')];_0x36d708<_0x5ed2a8;_0x36d708++){var _0x15fc35=events[_0x36d708];var _0x3f11ce=createListener(_0x9557('0x8')+_0x15fc35,_0x3a6a9c);WhatsappInteractionEvents['on'](_0x15fc35,_0x3f11ce);}};
\ No newline at end of file
index 705589d..fc2d439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2c=['whatsapp','whatsappmessage:create','create','/:id/status','status','update','put','/:id/accept','accept','reject','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./whatsappMessage.controller','isAuthenticated','get','/describe','/:id','show'];(function(_0x10e9ea,_0x21b179){var _0x411678=function(_0x115a9d){while(--_0x115a9d){_0x10e9ea['push'](_0x10e9ea['shift']());}};_0x411678(++_0x21b179);}(_0x7e2c,0x1bb));var _0xc7e2=function(_0x21cce0,_0x22984c){_0x21cce0=_0x21cce0-0x0;var _0x1359b6=_0x7e2c[_0x21cce0];return _0x1359b6;};'use strict';var multer=require(_0xc7e2('0x0'));var util=require(_0xc7e2('0x1'));var path=require(_0xc7e2('0x2'));var timeout=require('connect-timeout');var express=require(_0xc7e2('0x3'));var router=express[_0xc7e2('0x4')]();var fs_extra=require(_0xc7e2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc7e2('0x6'));var config=require('../../config/environment');var controller=require(_0xc7e2('0x7'));router['get']('/',auth[_0xc7e2('0x8')](),controller['index']);router[_0xc7e2('0x9')](_0xc7e2('0xa'),auth[_0xc7e2('0x8')](),controller['describe']);router[_0xc7e2('0x9')](_0xc7e2('0xb'),auth['isAuthenticated'](),controller[_0xc7e2('0xc')]);router['post']('/',auth[_0xc7e2('0x8')](),interaction['tracked'](_0xc7e2('0xd'),_0xc7e2('0xe')),controller[_0xc7e2('0xf')]);router['post'](_0xc7e2('0x10'),controller[_0xc7e2('0x11')]);router['put']('/:id',auth[_0xc7e2('0x8')](),controller[_0xc7e2('0x12')]);router[_0xc7e2('0x13')](_0xc7e2('0x14'),auth[_0xc7e2('0x8')](),controller[_0xc7e2('0x15')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xc7e2('0x16')]);router['delete'](_0xc7e2('0xb'),auth['isAuthenticated'](),controller[_0xc7e2('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x489f=['post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated'];(function(_0x2c7dc6,_0x3c4ce0){var _0x10002b=function(_0x26f390){while(--_0x26f390){_0x2c7dc6['push'](_0x2c7dc6['shift']());}};_0x10002b(++_0x3c4ce0);}(_0x489f,0x18d));var _0xf489=function(_0x2e8776,_0x495c1){_0x2e8776=_0x2e8776-0x0;var _0x3e5b0b=_0x489f[_0x2e8776];return _0x3e5b0b;};'use strict';var multer=require(_0xf489('0x0'));var util=require(_0xf489('0x1'));var path=require('path');var timeout=require(_0xf489('0x2'));var express=require(_0xf489('0x3'));var router=express[_0xf489('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf489('0x5'));var interaction=require(_0xf489('0x6'));var config=require(_0xf489('0x7'));var controller=require(_0xf489('0x8'));router[_0xf489('0x9')]('/',auth[_0xf489('0xa')](),controller['index']);router[_0xf489('0x9')]('/describe',auth[_0xf489('0xa')](),controller['describe']);router[_0xf489('0x9')]('/:id',auth[_0xf489('0xa')](),controller['show']);router[_0xf489('0xb')]('/',auth[_0xf489('0xa')](),interaction[_0xf489('0xc')](_0xf489('0xd'),_0xf489('0xe')),controller[_0xf489('0xf')]);router[_0xf489('0xb')](_0xf489('0x10'),controller['status']);router[_0xf489('0x11')]('/:id',auth[_0xf489('0xa')](),controller['update']);router[_0xf489('0x11')](_0xf489('0x12'),auth['isAuthenticated'](),controller[_0xf489('0x13')]);router[_0xf489('0x11')](_0xf489('0x14'),auth[_0xf489('0xa')](),controller[_0xf489('0x15')]);router[_0xf489('0x16')]('/:id',auth[_0xf489('0xa')](),controller[_0xf489('0x17')]);module['exports']=router;
\ No newline at end of file
index 47b6958..ce5209e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa728=['out','STRING','DATE','TEXT','medium','BOOLEAN','ENUM'];(function(_0x4f689e,_0x183d9e){var _0x4a6193=function(_0x29cb51){while(--_0x29cb51){_0x4f689e['push'](_0x4f689e['shift']());}};_0x4a6193(++_0x183d9e);}(_0xa728,0xb2));var _0x8a72=function(_0x222d74,_0x2777e0){_0x222d74=_0x222d74-0x0;var _0x1f83d2=_0xa728[_0x222d74];return _0x1f83d2;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x8a72('0x0')](_0x8a72('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x8a72('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8a72('0x3')]('in',_0x8a72('0x4')),'defaultValue':_0x8a72('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8a72('0x5')](0xbe)},'phone':{'type':Sequelize[_0x8a72('0x5')]},'readAt':{'type':Sequelize[_0x8a72('0x6')]},'secret':{'type':Sequelize[_0x8a72('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x8a72('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x9ee5=['medium','BOOLEAN','STRING','DATE','sequelize','exports','TEXT'];(function(_0x327473,_0x26d1cc){var _0x594ce7=function(_0x1fddf8){while(--_0x1fddf8){_0x327473['push'](_0x327473['shift']());}};_0x594ce7(++_0x26d1cc);}(_0x9ee5,0x123));var _0x59ee=function(_0x3899bd,_0x5159f5){_0x3899bd=_0x3899bd-0x0;var _0x46e569=_0x9ee5[_0x3899bd];return _0x46e569;};'use strict';var Sequelize=require(_0x59ee('0x0'));module[_0x59ee('0x1')]={'body':{'type':Sequelize[_0x59ee('0x2')](_0x59ee('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x59ee('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x59ee('0x5')](0xbe)},'phone':{'type':Sequelize[_0x59ee('0x5')]},'readAt':{'type':Sequelize[_0x59ee('0x6')]},'secret':{'type':Sequelize[_0x59ee('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x59ee('0x5')]},'providerResponse':{'type':Sequelize[_0x59ee('0x2')]}};
\ No newline at end of file
index d80d8ec..5a1182a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e53=['jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','create','body','find','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','manual','interface','channel','event','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','motionChannel','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','defaults','redis','localhost','socket.io-emitter','register'];(function(_0x7f0a5,_0x31502){var _0x559f8f=function(_0x3e08a8){while(--_0x3e08a8){_0x7f0a5['push'](_0x7f0a5['shift']());}};_0x559f8f(++_0x31502);}(_0x1e53,0x18e));var _0x31e5=function(_0x45df8e,_0x21f5b5){_0x45df8e=_0x45df8e-0x0;var _0x18f960=_0x1e53[_0x45df8e];return _0x18f960;};'use strict';var emlformat=require(_0x31e5('0x0'));var rimraf=require(_0x31e5('0x1'));var zipdir=require(_0x31e5('0x2'));var jsonpatch=require(_0x31e5('0x3'));var rp=require(_0x31e5('0x4'));var moment=require(_0x31e5('0x5'));var BPromise=require(_0x31e5('0x6'));var Mustache=require(_0x31e5('0x7'));var util=require(_0x31e5('0x8'));var path=require(_0x31e5('0x9'));var sox=require(_0x31e5('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x31e5('0xb'));var _=require(_0x31e5('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x31e5('0xd'));var deskjs=require(_0x31e5('0xe'));var toCsv=require('to-csv');var querystring=require(_0x31e5('0xf'));var Papa=require(_0x31e5('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x31e5('0x11'));var as=require(_0x31e5('0x12'));var hardwareService=require(_0x31e5('0x13'));var logger=require(_0x31e5('0x14'))('api');var utils=require(_0x31e5('0x15'));var config=require(_0x31e5('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x31e5('0x17')](config[_0x31e5('0x18')],{'host':_0x31e5('0x19'),'port':0x18eb});var socket=require(_0x31e5('0x1a'))(new Redis(config['redis']));require('./whatsappMessage.socket')[_0x31e5('0x1b')](socket);var jayson=require(_0x31e5('0x1c'));var client=jayson[_0x31e5('0x1d')][_0x31e5('0x1e')]({'port':0x232c});var client9002=jayson[_0x31e5('0x1d')][_0x31e5('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0xb2de4c,_0xa688cc,_0xcce0b9,_0x490657){return new BPromise(function(_0x18221e,_0x19b7bd){var _0x3f8e1a=_0x490657||client;return _0x3f8e1a[_0x31e5('0x1f')](_0xb2de4c,_0xcce0b9)[_0x31e5('0x20')](function(_0x2d7e43){logger[_0x31e5('0x21')](_0x31e5('0x22'),_0xa688cc,_0x31e5('0x23'));logger[_0x31e5('0x24')](_0x31e5('0x25'),_0xa688cc,_0x31e5('0x23'),JSON[_0x31e5('0x26')](_0x2d7e43));if(_0x2d7e43[_0x31e5('0x27')]){if(_0x2d7e43['error'][_0x31e5('0x28')]===0x1f4){logger[_0x31e5('0x27')](_0x31e5('0x22'),_0xa688cc,_0x2d7e43[_0x31e5('0x27')][_0x31e5('0x29')]);return _0x19b7bd(_0x2d7e43['error']['message']);}logger[_0x31e5('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0xa688cc,_0x2d7e43[_0x31e5('0x27')][_0x31e5('0x29')]);return _0x18221e(_0x2d7e43['error'][_0x31e5('0x29')]);}else{logger[_0x31e5('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0xa688cc,'request\x20sent');_0x18221e(_0x2d7e43['result'][_0x31e5('0x29')]);}})[_0x31e5('0x2a')](function(_0x281688){logger['error'](_0x31e5('0x22'),_0xa688cc,_0x281688);_0x19b7bd(_0x281688);});});}function respondWithStatusCode(_0x2797a9,_0xee284e){_0xee284e=_0xee284e||0xcc;return function(_0x9cd108){if(_0x9cd108){return _0x2797a9[_0x31e5('0x2b')](_0xee284e);}return _0x2797a9[_0x31e5('0x2c')](_0xee284e)['end']();};}function respondWithResult(_0x9c0f1f,_0x375216){_0x375216=_0x375216||0xc8;return function(_0x5ee858){if(_0x5ee858){return _0x9c0f1f[_0x31e5('0x2c')](_0x375216)['json'](_0x5ee858);}};}function respondWithFilteredResult(_0x1d1809,_0x7d8361){return function(_0x1190d8){if(_0x1190d8){var _0x1dca3e=typeof _0x7d8361[_0x31e5('0x2d')]===_0x31e5('0x2e')&&typeof _0x7d8361[_0x31e5('0x2f')]===_0x31e5('0x2e');var _0x52d10f=_0x1190d8[_0x31e5('0x30')];var _0x17a657=_0x1dca3e?0x0:_0x7d8361[_0x31e5('0x2d')];var _0x284c9e=_0x1dca3e?_0x1190d8['count']:_0x7d8361[_0x31e5('0x2d')]+_0x7d8361['limit'];var _0x343934;if(_0x284c9e>=_0x52d10f){_0x284c9e=_0x52d10f;_0x343934=0xc8;}else{_0x343934=0xce;}_0x1d1809[_0x31e5('0x2c')](_0x343934);return _0x1d1809[_0x31e5('0x31')](_0x31e5('0x32'),_0x17a657+'-'+_0x284c9e+'/'+_0x52d10f)[_0x31e5('0x33')](_0x1190d8);}return null;};}function patchUpdates(_0x44813d){return function(_0x3c144f){try{jsonpatch['apply'](_0x3c144f,_0x44813d,!![]);}catch(_0x4178a9){return BPromise[_0x31e5('0x34')](_0x4178a9);}return _0x3c144f['save']();};}function saveUpdates(_0x210507,_0x58b73f){return function(_0x4ecd08){if(_0x4ecd08){return _0x4ecd08[_0x31e5('0x35')](_0x210507)[_0x31e5('0x20')](function(_0x31bafe){return _0x31bafe;});}return null;};}function removeEntity(_0xae0c8c,_0x1d9cdb){return function(_0x580208){if(_0x580208){return _0x580208[_0x31e5('0x36')]()[_0x31e5('0x20')](function(){_0xae0c8c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e716c,_0x5c31c1){return function(_0x34c0f0){if(!_0x34c0f0){_0x3e716c[_0x31e5('0x2b')](0x194);}return _0x34c0f0;};}function handleError(_0x57e02a,_0x300bf0){_0x300bf0=_0x300bf0||0x1f4;return function(_0xba54e2){logger[_0x31e5('0x27')](_0xba54e2[_0x31e5('0x37')]);if(_0xba54e2[_0x31e5('0x38')]){delete _0xba54e2['name'];}_0x57e02a[_0x31e5('0x2c')](_0x300bf0)[_0x31e5('0x39')](_0xba54e2);};}exports[_0x31e5('0x3a')]=function(_0x50aaf5,_0x5a4d57){var _0x11b145={},_0x5c3850={},_0x5abca9={'count':0x0,'rows':[]};var _0x23c144=_[_0x31e5('0x3b')](db[_0x31e5('0x3c')][_0x31e5('0x3d')],function(_0x31d0d0){return{'name':_0x31d0d0[_0x31e5('0x3e')],'type':_0x31d0d0[_0x31e5('0x3f')][_0x31e5('0x40')]};});_0x5c3850['model']=_['map'](_0x23c144,_0x31e5('0x38'));_0x5c3850[_0x31e5('0x41')]=_['keys'](_0x50aaf5[_0x31e5('0x41')]);_0x5c3850[_0x31e5('0x42')]=_[_0x31e5('0x43')](_0x5c3850['model'],_0x5c3850['query']);_0x11b145[_0x31e5('0x44')]=_[_0x31e5('0x43')](_0x5c3850[_0x31e5('0x45')],qs[_0x31e5('0x46')](_0x50aaf5['query'][_0x31e5('0x46')]));_0x11b145[_0x31e5('0x44')]=_0x11b145[_0x31e5('0x44')][_0x31e5('0x47')]?_0x11b145[_0x31e5('0x44')]:_0x5c3850[_0x31e5('0x45')];if(!_0x50aaf5['query'][_0x31e5('0x48')](_0x31e5('0x49'))){_0x11b145[_0x31e5('0x2f')]=qs[_0x31e5('0x2f')](_0x50aaf5['query'][_0x31e5('0x2f')]);_0x11b145[_0x31e5('0x2d')]=qs[_0x31e5('0x2d')](_0x50aaf5[_0x31e5('0x41')][_0x31e5('0x2d')]);}_0x11b145[_0x31e5('0x4a')]=qs['sort'](_0x50aaf5['query'][_0x31e5('0x4b')]);_0x11b145[_0x31e5('0x4c')]=qs[_0x31e5('0x42')](_[_0x31e5('0x4d')](_0x50aaf5['query'],_0x5c3850[_0x31e5('0x42')]),_0x23c144);if(_0x50aaf5['query'][_0x31e5('0x4e')]){_0x11b145[_0x31e5('0x4c')]=_['merge'](_0x11b145['where'],{'$or':_[_0x31e5('0x3b')](_0x23c144,function(_0x497674){if(_0x497674[_0x31e5('0x3f')]!==_0x31e5('0x4f')){var _0x1a0511={};_0x1a0511[_0x497674[_0x31e5('0x38')]]={'$like':'%'+_0x50aaf5['query'][_0x31e5('0x4e')]+'%'};return _0x1a0511;}})});}_0x11b145=_[_0x31e5('0x50')]({},_0x11b145,_0x50aaf5[_0x31e5('0x51')]);var _0x5d1379={'where':_0x11b145[_0x31e5('0x4c')]};return db[_0x31e5('0x3c')]['count'](_0x5d1379)[_0x31e5('0x20')](function(_0xd5b215){_0x5abca9['count']=_0xd5b215;if(_0x50aaf5[_0x31e5('0x41')][_0x31e5('0x52')]){_0x11b145[_0x31e5('0x53')]=[{'all':!![]}];}return db[_0x31e5('0x3c')][_0x31e5('0x54')](_0x11b145);})[_0x31e5('0x20')](function(_0x3fc8c0){_0x5abca9[_0x31e5('0x55')]=_0x3fc8c0;return _0x5abca9;})[_0x31e5('0x20')](respondWithFilteredResult(_0x5a4d57,_0x11b145))[_0x31e5('0x2a')](handleError(_0x5a4d57,null));};exports[_0x31e5('0x56')]=function(_0x47c938,_0x4d1fc1){var _0x59eca8={'raw':!![],'where':{'id':_0x47c938[_0x31e5('0x57')]['id']}},_0x1ee256={};_0x1ee256[_0x31e5('0x45')]=_[_0x31e5('0x58')](db[_0x31e5('0x3c')]['rawAttributes']);_0x1ee256[_0x31e5('0x41')]=_[_0x31e5('0x58')](_0x47c938['query']);_0x1ee256['filters']=_[_0x31e5('0x43')](_0x1ee256[_0x31e5('0x45')],_0x1ee256[_0x31e5('0x41')]);_0x59eca8[_0x31e5('0x44')]=_['intersection'](_0x1ee256[_0x31e5('0x45')],qs[_0x31e5('0x46')](_0x47c938[_0x31e5('0x41')][_0x31e5('0x46')]));_0x59eca8[_0x31e5('0x44')]=_0x59eca8[_0x31e5('0x44')][_0x31e5('0x47')]?_0x59eca8[_0x31e5('0x44')]:_0x1ee256['model'];if(_0x47c938[_0x31e5('0x41')][_0x31e5('0x52')]){_0x59eca8['include']=[{'all':!![]}];}_0x59eca8=_[_0x31e5('0x50')]({},_0x59eca8,_0x47c938[_0x31e5('0x51')]);return db[_0x31e5('0x3c')]['find'](_0x59eca8)['then'](handleEntityNotFound(_0x4d1fc1,null))[_0x31e5('0x20')](respondWithResult(_0x4d1fc1,null))[_0x31e5('0x2a')](handleError(_0x4d1fc1,null));};exports[_0x31e5('0x59')]=function(_0x304a95,_0x40c033){return db['WhatsappMessage'][_0x31e5('0x59')](_0x304a95[_0x31e5('0x5a')],{})[_0x31e5('0x20')](respondWithResult(_0x40c033,0xc9))[_0x31e5('0x2a')](handleError(_0x40c033,null));};exports[_0x31e5('0x35')]=function(_0xd84b61,_0x16305a){if(_0xd84b61[_0x31e5('0x5a')]['id']){delete _0xd84b61[_0x31e5('0x5a')]['id'];}return db[_0x31e5('0x3c')][_0x31e5('0x5b')]({'where':{'id':_0xd84b61[_0x31e5('0x57')]['id']}})[_0x31e5('0x20')](handleEntityNotFound(_0x16305a,null))[_0x31e5('0x20')](saveUpdates(_0xd84b61[_0x31e5('0x5a')],null))['then'](respondWithResult(_0x16305a,null))[_0x31e5('0x2a')](handleError(_0x16305a,null));};exports[_0x31e5('0x36')]=function(_0x393103,_0x51a4a9){return db[_0x31e5('0x3c')][_0x31e5('0x5b')]({'where':{'id':_0x393103[_0x31e5('0x57')]['id']}})['then'](handleEntityNotFound(_0x51a4a9,null))[_0x31e5('0x20')](removeEntity(_0x51a4a9,null))[_0x31e5('0x2a')](handleError(_0x51a4a9,null));};exports[_0x31e5('0x5c')]=function(_0x3916d0,_0x3727b4){return db['WhatsappMessage']['describe']()[_0x31e5('0x20')](respondWithResult(_0x3727b4,null))[_0x31e5('0x2a')](handleError(_0x3727b4,null));};var interaction_log=require('../../config/logger')(_0x31e5('0x5d'));exports[_0x31e5('0x5e')]=function(_0x7d88bd,_0x4bca98,_0x5ed594){var _0x58bf09={'agent':{},'channel':_0x31e5('0x5f')};if(_0x7d88bd[_0x31e5('0x5a')]['id']){delete _0x7d88bd[_0x31e5('0x5a')]['id'];}_0x7d88bd['body'][_0x31e5('0x60')]=!![];_0x7d88bd[_0x31e5('0x5a')][_0x31e5('0x61')]=moment()[_0x31e5('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x7d88bd[_0x31e5('0x5a')][_0x31e5('0x63')]=_0x7d88bd['body'][_0x31e5('0x63')]||_0x7d88bd[_0x31e5('0x64')]['id'];_0x58bf09['agent']['id']=_0x7d88bd[_0x31e5('0x5a')][_0x31e5('0x63')];return db['WhatsappMessage']['find']({'where':{'id':_0x7d88bd[_0x31e5('0x57')]['id'],'UserId':null}})[_0x31e5('0x20')](handleEntityNotFound(_0x4bca98,null))[_0x31e5('0x20')](saveUpdates(_0x7d88bd[_0x31e5('0x5a')],null))[_0x31e5('0x20')](function(_0x1c7cec){if(_0x1c7cec){_0x58bf09[_0x31e5('0x29')]=_0x1c7cec[_0x31e5('0x65')]({'plain':!![]});return db[_0x31e5('0x66')][_0x31e5('0x5b')]({'where':{'id':_0x1c7cec[_0x31e5('0x67')]}});}return null;})[_0x31e5('0x20')](handleEntityNotFound(_0x4bca98,null))[_0x31e5('0x20')](function(_0x4e8d5a){if(_0x4e8d5a){return _0x4e8d5a[_0x31e5('0x35')]({'UserId':_0x7d88bd['body']['UserId'],'read1stAt':_[_0x31e5('0x68')](_0x4e8d5a[_0x31e5('0x69')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x31e5('0x20')](function(_0x8e1d1){if(_0x8e1d1){_0x58bf09['interaction']=_0x8e1d1['get']({'plain':!![]});interaction_log[_0x31e5('0x21')](_0x31e5('0x6a'),_0x7d88bd[_0x31e5('0x64')]['id'],_0x7d88bd[_0x31e5('0x64')]['name'],_0x7d88bd[_0x31e5('0x64')][_0x31e5('0x6b')],_0x58bf09[_0x31e5('0x6c')]['id'],_0x7d88bd['body']?JSON[_0x31e5('0x26')](_0x7d88bd['body']):'null');return respondWithRpcPromise(_0x31e5('0x6d'),'acceptMessage',_0x58bf09);}return null;})[_0x31e5('0x20')](function(_0x630a0e){var _0x6ca927=_0x31e5('0x6e')+_0x630a0e[_0x31e5('0x29')][_0x31e5('0x6f')];return db[_0x31e5('0x70')][_0x31e5('0x41')](_0x6ca927,{'type':db[_0x31e5('0x71')][_0x31e5('0x72')][_0x31e5('0x73')],'raw':!![]})[_0x31e5('0x20')](function(_0x24c436){return _0x24c436;});})[_0x31e5('0x20')](function(_0x4dce47){if(_0x4dce47){_0x58bf09[_0x31e5('0x29')][_0x31e5('0x74')]=_0x4dce47[0x0];if(!_0x7d88bd[_0x31e5('0x5a')]['UserId'])return;return db[_0x31e5('0x75')][_0x31e5('0x5b')]({'where':{'id':_0x7d88bd['body']['UserId'],'role':_0x31e5('0x76')},'attributes':['id',_0x31e5('0x38'),_0x31e5('0x77'),_0x31e5('0x78'),_0x31e5('0x79')],'raw':!![]});}return null;})[_0x31e5('0x20')](function(_0x2fae09){if(!_0x2fae09)return null;_0x58bf09[_0x31e5('0x29')][_0x31e5('0x76')]=_0x2fae09;return _0x58bf09;})[_0x31e5('0x20')](function(_0x5cb0b5){if(_0x5cb0b5){if(_0x7d88bd['body'][_0x31e5('0x7a')]){_0x58bf09[_0x31e5('0x29')][_0x31e5('0x7b')]=util[_0x31e5('0x62')]('SIP/%s',_0x7d88bd['user'][_0x31e5('0x38')]);_0x58bf09['message'][_0x31e5('0x7c')]=_0x58bf09[_0x31e5('0x7c')];_0x58bf09[_0x31e5('0x29')]['motionChannel']=_0x58bf09['channel'];_0x58bf09[_0x31e5('0x29')][_0x31e5('0x7d')]='accept';return respondWithRpcPromise(_0x31e5('0x7e'),_0x31e5('0x7e'),{'event':'acceptmessage','message':_0x58bf09[_0x31e5('0x29')]},client9002)[_0x31e5('0x20')](function(){return _0x58bf09;});}return _0x58bf09;}return null;})['then'](respondWithResult(_0x4bca98,null))[_0x31e5('0x2a')](handleError(_0x4bca98,null));};var interaction_log=require(_0x31e5('0x14'))('whatsapp-interactions');exports['reject']=function(_0x1ee676,_0x1150e3,_0x183d6d){var _0x1f21e7={'agent':{},'channel':'whatsapp'};if(_0x1ee676[_0x31e5('0x5a')]['id']){delete _0x1ee676['body']['id'];}_0x1ee676[_0x31e5('0x5a')][_0x31e5('0x63')]=_0x1ee676[_0x31e5('0x5a')][_0x31e5('0x63')]||_0x1ee676['user']['id'];_0x1f21e7['agent']['id']=_0x1ee676['body'][_0x31e5('0x63')];return db['WhatsappMessage'][_0x31e5('0x5b')]({'where':{'id':_0x1ee676['params']['id'],'UserId':null}})[_0x31e5('0x20')](handleEntityNotFound(_0x1150e3,null))[_0x31e5('0x20')](function(_0x182673){if(_0x182673){_0x1f21e7[_0x31e5('0x29')]=_0x182673['get']({'plain':!![]});return db['WhatsappInteraction'][_0x31e5('0x5b')]({'where':{'id':_0x182673['WhatsappInteractionId']}});}return null;})[_0x31e5('0x20')](handleEntityNotFound(_0x1150e3,null))[_0x31e5('0x20')](function(_0x1968e4){if(_0x1968e4){_0x1f21e7[_0x31e5('0x6c')]=_0x1968e4['get']({'plain':!![]});interaction_log[_0x31e5('0x21')](_0x31e5('0x7f'),_0x1ee676[_0x31e5('0x64')]['id'],_0x1ee676[_0x31e5('0x64')][_0x31e5('0x38')],_0x1ee676['user'][_0x31e5('0x6b')],_0x1f21e7[_0x31e5('0x6c')]['id'],_0x1ee676[_0x31e5('0x5a')]?JSON[_0x31e5('0x26')](_0x1ee676[_0x31e5('0x5a')]):_0x31e5('0x80'));return respondWithRpcPromise(_0x31e5('0x81'),_0x31e5('0x82'),_0x1f21e7);}return null;})[_0x31e5('0x20')](function(_0x27727b){var _0x49d96e=_0x31e5('0x6e')+_0x27727b[_0x31e5('0x29')]['ContactId'];return db['sequelize'][_0x31e5('0x41')](_0x49d96e,{'type':db[_0x31e5('0x71')][_0x31e5('0x72')][_0x31e5('0x73')],'raw':!![]})[_0x31e5('0x20')](function(_0x15dab3){return _0x15dab3;});})[_0x31e5('0x20')](function(_0x265054){if(_0x265054){_0x1f21e7[_0x31e5('0x29')]['contact']=_0x265054[0x0];if(!_0x1ee676['body'][_0x31e5('0x63')])return;return db[_0x31e5('0x75')][_0x31e5('0x5b')]({'where':{'id':_0x1ee676[_0x31e5('0x5a')][_0x31e5('0x63')],'role':'agent'},'attributes':['id',_0x31e5('0x38'),'fullname',_0x31e5('0x78'),'internal'],'raw':!![]});}return null;})['then'](function(_0x677da8){if(!_0x677da8)return null;_0x1f21e7[_0x31e5('0x29')][_0x31e5('0x76')]=_0x677da8;return _0x1f21e7;})[_0x31e5('0x20')](function(_0x913bf0){if(_0x913bf0){_0x913bf0[_0x31e5('0x29')][_0x31e5('0x7b')]=util[_0x31e5('0x62')]('SIP/%s',_0x1ee676['user'][_0x31e5('0x38')]);_0x913bf0[_0x31e5('0x29')][_0x31e5('0x7c')]=_0x1f21e7['channel'];_0x913bf0[_0x31e5('0x29')][_0x31e5('0x83')]=_0x1f21e7[_0x31e5('0x7c')];_0x913bf0[_0x31e5('0x29')][_0x31e5('0x7d')]=_0x31e5('0x34');respondWithRpcPromise(_0x31e5('0x7e'),_0x31e5('0x7e'),{'event':_0x31e5('0x84'),'message':_0x913bf0[_0x31e5('0x29')]},client9002);return _0x1f21e7;}return null;})[_0x31e5('0x20')](respondWithResult(_0x1150e3,null))['catch'](handleError(_0x1150e3,null));};exports['status']=function(_0x234d82,_0x54ef29,_0x241326){if(_0x234d82[_0x31e5('0x5a')]['id']){delete _0x234d82[_0x31e5('0x5a')]['id'];}var _0xabc330;return db[_0x31e5('0x3c')][_0x31e5('0x5b')]({'where':{'id':_0x234d82[_0x31e5('0x57')]['id']}})[_0x31e5('0x20')](handleEntityNotFound(_0x54ef29,null))['then'](function(_0x34749e){if(_0x34749e){_0xabc330=_0x34749e;return db['WhatsappAccount'][_0x31e5('0x5b')]({'where':{'id':_0x34749e[_0x31e5('0x85')]}});}})['then'](handleEntityNotFound(_0x54ef29,null))[_0x31e5('0x20')](function(_0x5247af){if(_0x5247af){logger['debug'](_0x31e5('0x86'),_0x31e5('0x2c'),_0x31e5('0x87'),_0x5247af[_0x31e5('0x3f')],util[_0x31e5('0x88')](_0x234d82['body'],{'showHidden':![],'depth':null}));switch(_0x5247af['type']){case _0x31e5('0x89'):if(_0x234d82['body'][_0x31e5('0x8a')]&&_0x234d82[_0x31e5('0x5a')][_0x31e5('0x8a')]===_0xabc330[_0x31e5('0x8b')]&&_0x234d82[_0x31e5('0x5a')][_0x31e5('0x8c')]&&_0x234d82[_0x31e5('0x5a')][_0x31e5('0x8c')]===_0x31e5('0x60')){return _0xabc330[_0x31e5('0x35')]({'read':!![]});}else{logger[_0x31e5('0x27')](_0x31e5('0x8d'),_0x31e5('0x2c'),_0x31e5('0x89'),util[_0x31e5('0x88')](_0x234d82['body'],{'showHidden':![],'depth':null}));}break;}return _0xabc330;}})[_0x31e5('0x20')](respondWithResult(_0x54ef29,null))['catch'](handleError(_0x54ef29,null));};
\ No newline at end of file
+var _0x71b2=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','end','json','offset','limit','undefined','count','reject','save','update','destroy','stack','name','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','describe','whatsapp-interactions','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','Sequelize','SELECT','contact','fullname','email','internal','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','User','WhatsppMessage,\x20%s,\x20%s,\x20%s','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger'];(function(_0x264545,_0x214037){var _0x114d10=function(_0x9e3461){while(--_0x9e3461){_0x264545['push'](_0x264545['shift']());}};_0x114d10(++_0x214037);}(_0x71b2,0x17d));var _0x271b=function(_0x453704,_0xcf42a8){_0x453704=_0x453704-0x0;var _0x1d1ba5=_0x71b2[_0x453704];return _0x1d1ba5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x271b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x271b('0x1'));var rp=require(_0x271b('0x2'));var moment=require(_0x271b('0x3'));var BPromise=require(_0x271b('0x4'));var Mustache=require(_0x271b('0x5'));var util=require(_0x271b('0x6'));var path=require(_0x271b('0x7'));var sox=require(_0x271b('0x8'));var csv=require(_0x271b('0x9'));var ejs=require(_0x271b('0xa'));var fs=require('fs');var fs_extra=require(_0x271b('0xb'));var _=require(_0x271b('0xc'));var squel=require('squel');var crypto=require(_0x271b('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x271b('0xe'));var toCsv=require(_0x271b('0x9'));var querystring=require(_0x271b('0xf'));var Papa=require(_0x271b('0x10'));var Redis=require(_0x271b('0x11'));var authService=require(_0x271b('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x271b('0x13'));var logger=require(_0x271b('0x14'))('api');var utils=require(_0x271b('0x15'));var config=require(_0x271b('0x16'));var licenseUtil=require(_0x271b('0x17'));var db=require(_0x271b('0x18'))['db'];config[_0x271b('0x19')]=_['defaults'](config[_0x271b('0x19')],{'host':_0x271b('0x1a'),'port':0x18eb});var socket=require(_0x271b('0x1b'))(new Redis(config['redis']));require(_0x271b('0x1c'))[_0x271b('0x1d')](socket);var jayson=require(_0x271b('0x1e'));var client=jayson[_0x271b('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x271b('0x1f')][_0x271b('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x136cdc,_0x331b9c,_0x170bb6,_0x3250e4){return new BPromise(function(_0x9d3952,_0x3f07af){var _0x1cb31e=_0x3250e4||client;return _0x1cb31e['request'](_0x136cdc,_0x170bb6)[_0x271b('0x21')](function(_0x4417d1){logger['info'](_0x271b('0x22'),_0x331b9c,_0x271b('0x23'));logger[_0x271b('0x24')](_0x271b('0x25'),_0x331b9c,_0x271b('0x23'),JSON[_0x271b('0x26')](_0x4417d1));if(_0x4417d1[_0x271b('0x27')]){if(_0x4417d1[_0x271b('0x27')][_0x271b('0x28')]===0x1f4){logger['error'](_0x271b('0x22'),_0x331b9c,_0x4417d1[_0x271b('0x27')]['message']);return _0x3f07af(_0x4417d1['error'][_0x271b('0x29')]);}logger[_0x271b('0x27')](_0x271b('0x22'),_0x331b9c,_0x4417d1[_0x271b('0x27')][_0x271b('0x29')]);return _0x9d3952(_0x4417d1[_0x271b('0x27')][_0x271b('0x29')]);}else{logger[_0x271b('0x2a')](_0x271b('0x22'),_0x331b9c,'request\x20sent');_0x9d3952(_0x4417d1[_0x271b('0x2b')][_0x271b('0x29')]);}})['catch'](function(_0x286280){logger[_0x271b('0x27')](_0x271b('0x22'),_0x331b9c,_0x286280);_0x3f07af(_0x286280);});});}function respondWithStatusCode(_0x310bc5,_0x28c539){_0x28c539=_0x28c539||0xcc;return function(_0x11cb46){if(_0x11cb46){return _0x310bc5[_0x271b('0x2c')](_0x28c539);}return _0x310bc5[_0x271b('0x2d')](_0x28c539)[_0x271b('0x2e')]();};}function respondWithResult(_0x117db2,_0x470f05){_0x470f05=_0x470f05||0xc8;return function(_0x153986){if(_0x153986){return _0x117db2[_0x271b('0x2d')](_0x470f05)[_0x271b('0x2f')](_0x153986);}};}function respondWithFilteredResult(_0x40136f,_0x64b106){return function(_0x4b6f55){if(_0x4b6f55){var _0x896ad=typeof _0x64b106[_0x271b('0x30')]==='undefined'&&typeof _0x64b106[_0x271b('0x31')]===_0x271b('0x32');var _0xbd9554=_0x4b6f55[_0x271b('0x33')];var _0x33bff1=_0x896ad?0x0:_0x64b106[_0x271b('0x30')];var _0x2a7c7a=_0x896ad?_0x4b6f55['count']:_0x64b106[_0x271b('0x30')]+_0x64b106['limit'];var _0xc826e5;if(_0x2a7c7a>=_0xbd9554){_0x2a7c7a=_0xbd9554;_0xc826e5=0xc8;}else{_0xc826e5=0xce;}_0x40136f[_0x271b('0x2d')](_0xc826e5);return _0x40136f['set']('Content-Range',_0x33bff1+'-'+_0x2a7c7a+'/'+_0xbd9554)[_0x271b('0x2f')](_0x4b6f55);}return null;};}function patchUpdates(_0x32c920){return function(_0x1be269){try{jsonpatch['apply'](_0x1be269,_0x32c920,!![]);}catch(_0x1e1caf){return BPromise[_0x271b('0x34')](_0x1e1caf);}return _0x1be269[_0x271b('0x35')]();};}function saveUpdates(_0x4a104e,_0x4a647c){return function(_0x266f2f){if(_0x266f2f){return _0x266f2f[_0x271b('0x36')](_0x4a104e)['then'](function(_0x4b490b){return _0x4b490b;});}return null;};}function removeEntity(_0x34d4d4,_0x589468){return function(_0x3fe2b0){if(_0x3fe2b0){return _0x3fe2b0[_0x271b('0x37')]()[_0x271b('0x21')](function(){_0x34d4d4[_0x271b('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12b841,_0xfb7b35){return function(_0x29c7e0){if(!_0x29c7e0){_0x12b841['sendStatus'](0x194);}return _0x29c7e0;};}function handleError(_0x5ad867,_0x1c95df){_0x1c95df=_0x1c95df||0x1f4;return function(_0x369cf9){logger[_0x271b('0x27')](_0x369cf9[_0x271b('0x38')]);if(_0x369cf9[_0x271b('0x39')]){delete _0x369cf9[_0x271b('0x39')];}_0x5ad867[_0x271b('0x2d')](_0x1c95df)['send'](_0x369cf9);};}exports[_0x271b('0x3a')]=function(_0x973c44,_0x3a0e5b){var _0x1d136f={},_0x868954={},_0x9edd13={'count':0x0,'rows':[]};var _0x503458=_[_0x271b('0x3b')](db[_0x271b('0x3c')][_0x271b('0x3d')],function(_0x2b4f18){return{'name':_0x2b4f18[_0x271b('0x3e')],'type':_0x2b4f18[_0x271b('0x3f')][_0x271b('0x40')]};});_0x868954['model']=_[_0x271b('0x3b')](_0x503458,'name');_0x868954[_0x271b('0x41')]=_[_0x271b('0x42')](_0x973c44[_0x271b('0x41')]);_0x868954[_0x271b('0x43')]=_[_0x271b('0x44')](_0x868954[_0x271b('0x45')],_0x868954[_0x271b('0x41')]);_0x1d136f[_0x271b('0x46')]=_[_0x271b('0x44')](_0x868954[_0x271b('0x45')],qs[_0x271b('0x47')](_0x973c44[_0x271b('0x41')][_0x271b('0x47')]));_0x1d136f[_0x271b('0x46')]=_0x1d136f[_0x271b('0x46')][_0x271b('0x48')]?_0x1d136f[_0x271b('0x46')]:_0x868954[_0x271b('0x45')];if(!_0x973c44[_0x271b('0x41')][_0x271b('0x49')]('nolimit')){_0x1d136f[_0x271b('0x31')]=qs[_0x271b('0x31')](_0x973c44['query'][_0x271b('0x31')]);_0x1d136f[_0x271b('0x30')]=qs[_0x271b('0x30')](_0x973c44[_0x271b('0x41')]['offset']);}_0x1d136f[_0x271b('0x4a')]=qs[_0x271b('0x4b')](_0x973c44['query'][_0x271b('0x4b')]);_0x1d136f[_0x271b('0x4c')]=qs['filters'](_[_0x271b('0x4d')](_0x973c44['query'],_0x868954['filters']),_0x503458);if(_0x973c44['query'][_0x271b('0x4e')]){_0x1d136f[_0x271b('0x4c')]=_[_0x271b('0x4f')](_0x1d136f[_0x271b('0x4c')],{'$or':_[_0x271b('0x3b')](_0x503458,function(_0xa345dc){if(_0xa345dc['type']!==_0x271b('0x50')){var _0x2f4193={};_0x2f4193[_0xa345dc[_0x271b('0x39')]]={'$like':'%'+_0x973c44[_0x271b('0x41')]['filter']+'%'};return _0x2f4193;}})});}_0x1d136f=_[_0x271b('0x4f')]({},_0x1d136f,_0x973c44[_0x271b('0x51')]);var _0x59f6da={'where':_0x1d136f[_0x271b('0x4c')]};return db[_0x271b('0x3c')][_0x271b('0x33')](_0x59f6da)[_0x271b('0x21')](function(_0xfa7779){_0x9edd13[_0x271b('0x33')]=_0xfa7779;if(_0x973c44['query'][_0x271b('0x52')]){_0x1d136f[_0x271b('0x53')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x1d136f);})['then'](function(_0x46bcff){_0x9edd13['rows']=_0x46bcff;return _0x9edd13;})[_0x271b('0x21')](respondWithFilteredResult(_0x3a0e5b,_0x1d136f))[_0x271b('0x54')](handleError(_0x3a0e5b,null));};exports[_0x271b('0x55')]=function(_0x14ec2c,_0x5356eb){var _0x1c6b6={'raw':!![],'where':{'id':_0x14ec2c[_0x271b('0x56')]['id']}},_0x2c4fb7={};_0x2c4fb7[_0x271b('0x45')]=_[_0x271b('0x42')](db[_0x271b('0x3c')][_0x271b('0x3d')]);_0x2c4fb7[_0x271b('0x41')]=_['keys'](_0x14ec2c[_0x271b('0x41')]);_0x2c4fb7[_0x271b('0x43')]=_[_0x271b('0x44')](_0x2c4fb7[_0x271b('0x45')],_0x2c4fb7[_0x271b('0x41')]);_0x1c6b6[_0x271b('0x46')]=_['intersection'](_0x2c4fb7['model'],qs['fields'](_0x14ec2c[_0x271b('0x41')][_0x271b('0x47')]));_0x1c6b6[_0x271b('0x46')]=_0x1c6b6[_0x271b('0x46')][_0x271b('0x48')]?_0x1c6b6[_0x271b('0x46')]:_0x2c4fb7[_0x271b('0x45')];if(_0x14ec2c['query'][_0x271b('0x52')]){_0x1c6b6[_0x271b('0x53')]=[{'all':!![]}];}_0x1c6b6=_[_0x271b('0x4f')]({},_0x1c6b6,_0x14ec2c['options']);return db['WhatsappMessage'][_0x271b('0x57')](_0x1c6b6)['then'](handleEntityNotFound(_0x5356eb,null))[_0x271b('0x21')](respondWithResult(_0x5356eb,null))[_0x271b('0x54')](handleError(_0x5356eb,null));};exports[_0x271b('0x58')]=function(_0x3b840f,_0x3cc835){return db[_0x271b('0x3c')][_0x271b('0x58')](_0x3b840f[_0x271b('0x59')],{})['then'](respondWithResult(_0x3cc835,0xc9))[_0x271b('0x54')](handleError(_0x3cc835,null));};exports[_0x271b('0x36')]=function(_0xcf2b04,_0x9b0292){if(_0xcf2b04[_0x271b('0x59')]['id']){delete _0xcf2b04[_0x271b('0x59')]['id'];}return db['WhatsappMessage'][_0x271b('0x57')]({'where':{'id':_0xcf2b04[_0x271b('0x56')]['id']}})[_0x271b('0x21')](handleEntityNotFound(_0x9b0292,null))[_0x271b('0x21')](saveUpdates(_0xcf2b04[_0x271b('0x59')],null))[_0x271b('0x21')](respondWithResult(_0x9b0292,null))[_0x271b('0x54')](handleError(_0x9b0292,null));};exports[_0x271b('0x37')]=function(_0x3f9113,_0x32180c){return db['WhatsappMessage'][_0x271b('0x57')]({'where':{'id':_0x3f9113[_0x271b('0x56')]['id']}})[_0x271b('0x21')](handleEntityNotFound(_0x32180c,null))[_0x271b('0x21')](removeEntity(_0x32180c,null))[_0x271b('0x54')](handleError(_0x32180c,null));};exports[_0x271b('0x5a')]=function(_0x428163,_0x42f18d){return db[_0x271b('0x3c')][_0x271b('0x5a')]()['then'](respondWithResult(_0x42f18d,null))[_0x271b('0x54')](handleError(_0x42f18d,null));};var interaction_log=require(_0x271b('0x14'))(_0x271b('0x5b'));exports['accept']=function(_0x2e99ef,_0x5dc43f,_0x4adae1){var _0x5f1df6={'agent':{},'channel':_0x271b('0x5c')};if(_0x2e99ef[_0x271b('0x59')]['id']){delete _0x2e99ef[_0x271b('0x59')]['id'];}_0x2e99ef['body'][_0x271b('0x5d')]=!![];_0x2e99ef[_0x271b('0x59')]['readAt']=moment()[_0x271b('0x5e')](_0x271b('0x5f'));_0x2e99ef[_0x271b('0x59')]['UserId']=_0x2e99ef[_0x271b('0x59')][_0x271b('0x60')]||_0x2e99ef[_0x271b('0x61')]['id'];_0x5f1df6[_0x271b('0x62')]['id']=_0x2e99ef[_0x271b('0x59')][_0x271b('0x60')];return db[_0x271b('0x3c')][_0x271b('0x57')]({'where':{'id':_0x2e99ef[_0x271b('0x56')]['id'],'UserId':null}})[_0x271b('0x21')](handleEntityNotFound(_0x5dc43f,null))[_0x271b('0x21')](saveUpdates(_0x2e99ef[_0x271b('0x59')],null))[_0x271b('0x21')](function(_0x5778ee){if(_0x5778ee){_0x5f1df6[_0x271b('0x29')]=_0x5778ee[_0x271b('0x63')]({'plain':!![]});return db[_0x271b('0x64')][_0x271b('0x57')]({'where':{'id':_0x5778ee[_0x271b('0x65')]}});}return null;})[_0x271b('0x21')](handleEntityNotFound(_0x5dc43f,null))[_0x271b('0x21')](function(_0x39a6d1){if(_0x39a6d1){return _0x39a6d1['update']({'UserId':_0x2e99ef[_0x271b('0x59')][_0x271b('0x60')],'read1stAt':_[_0x271b('0x66')](_0x39a6d1[_0x271b('0x67')])?moment()[_0x271b('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x271b('0x21')](function(_0x576e29){if(_0x576e29){_0x5f1df6[_0x271b('0x68')]=_0x576e29['get']({'plain':!![]});interaction_log[_0x271b('0x2a')](_0x271b('0x69'),_0x2e99ef[_0x271b('0x61')]['id'],_0x2e99ef[_0x271b('0x61')][_0x271b('0x39')],_0x2e99ef[_0x271b('0x61')][_0x271b('0x6a')],_0x5f1df6[_0x271b('0x68')]['id'],_0x2e99ef[_0x271b('0x59')]?JSON['stringify'](_0x2e99ef[_0x271b('0x59')]):_0x271b('0x6b'));return respondWithRpcPromise(_0x271b('0x6c'),_0x271b('0x6d'),_0x5f1df6);}return null;})[_0x271b('0x21')](function(_0x37e6ae){var _0x3b9ded='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x37e6ae[_0x271b('0x29')]['ContactId'];return db['sequelize'][_0x271b('0x41')](_0x3b9ded,{'type':db[_0x271b('0x6e')]['QueryTypes'][_0x271b('0x6f')],'raw':!![]})[_0x271b('0x21')](function(_0x259ef0){return _0x259ef0;});})[_0x271b('0x21')](function(_0x29efe7){if(_0x29efe7){_0x5f1df6[_0x271b('0x29')][_0x271b('0x70')]=_0x29efe7[0x0];if(!_0x2e99ef[_0x271b('0x59')][_0x271b('0x60')])return;return db['User'][_0x271b('0x57')]({'where':{'id':_0x2e99ef[_0x271b('0x59')]['UserId'],'role':_0x271b('0x62')},'attributes':['id',_0x271b('0x39'),_0x271b('0x71'),_0x271b('0x72'),_0x271b('0x73')],'raw':!![]});}return null;})[_0x271b('0x21')](function(_0x34795e){if(!_0x34795e)return null;_0x5f1df6[_0x271b('0x29')]['agent']=_0x34795e;return _0x5f1df6;})[_0x271b('0x21')](function(_0x556812){if(_0x556812){if(_0x2e99ef[_0x271b('0x59')]['manual']){_0x5f1df6[_0x271b('0x29')][_0x271b('0x74')]=util['format'](_0x271b('0x75'),_0x2e99ef[_0x271b('0x61')][_0x271b('0x39')]);_0x5f1df6[_0x271b('0x29')][_0x271b('0x76')]=_0x5f1df6['channel'];_0x5f1df6['message']['motionChannel']=_0x5f1df6[_0x271b('0x76')];_0x5f1df6['message'][_0x271b('0x77')]=_0x271b('0x78');return respondWithRpcPromise(_0x271b('0x79'),_0x271b('0x79'),{'event':_0x271b('0x7a'),'message':_0x5f1df6['message']},client9002)[_0x271b('0x21')](function(){return _0x5f1df6;});}return _0x5f1df6;}return null;})[_0x271b('0x21')](respondWithResult(_0x5dc43f,null))['catch'](handleError(_0x5dc43f,null));};var interaction_log=require(_0x271b('0x14'))(_0x271b('0x5b'));exports[_0x271b('0x34')]=function(_0x3aa17a,_0x1b6b76,_0x4975a0){var _0x2d5b7e={'agent':{},'channel':_0x271b('0x5c')};if(_0x3aa17a[_0x271b('0x59')]['id']){delete _0x3aa17a[_0x271b('0x59')]['id'];}_0x3aa17a[_0x271b('0x59')][_0x271b('0x60')]=_0x3aa17a['body'][_0x271b('0x60')]||_0x3aa17a[_0x271b('0x61')]['id'];_0x2d5b7e['agent']['id']=_0x3aa17a[_0x271b('0x59')][_0x271b('0x60')];return db[_0x271b('0x3c')][_0x271b('0x57')]({'where':{'id':_0x3aa17a[_0x271b('0x56')]['id'],'UserId':null}})[_0x271b('0x21')](handleEntityNotFound(_0x1b6b76,null))['then'](function(_0x244a8a){if(_0x244a8a){_0x2d5b7e['message']=_0x244a8a['get']({'plain':!![]});return db[_0x271b('0x64')]['find']({'where':{'id':_0x244a8a[_0x271b('0x65')]}});}return null;})[_0x271b('0x21')](handleEntityNotFound(_0x1b6b76,null))[_0x271b('0x21')](function(_0x330674){if(_0x330674){_0x2d5b7e[_0x271b('0x68')]=_0x330674[_0x271b('0x63')]({'plain':!![]});interaction_log[_0x271b('0x2a')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3aa17a[_0x271b('0x61')]['id'],_0x3aa17a[_0x271b('0x61')][_0x271b('0x39')],_0x3aa17a['user'][_0x271b('0x6a')],_0x2d5b7e['interaction']['id'],_0x3aa17a[_0x271b('0x59')]?JSON['stringify'](_0x3aa17a[_0x271b('0x59')]):'null');return respondWithRpcPromise(_0x271b('0x7b'),_0x271b('0x7c'),_0x2d5b7e);}return null;})[_0x271b('0x21')](function(_0x560a88){var _0x4aa501=_0x271b('0x7d')+_0x560a88[_0x271b('0x29')][_0x271b('0x7e')];return db[_0x271b('0x7f')]['query'](_0x4aa501,{'type':db['Sequelize'][_0x271b('0x80')]['SELECT'],'raw':!![]})['then'](function(_0x3452fd){return _0x3452fd;});})['then'](function(_0x260884){if(_0x260884){_0x2d5b7e[_0x271b('0x29')][_0x271b('0x70')]=_0x260884[0x0];if(!_0x3aa17a['body'][_0x271b('0x60')])return;return db[_0x271b('0x81')]['find']({'where':{'id':_0x3aa17a[_0x271b('0x59')][_0x271b('0x60')],'role':_0x271b('0x62')},'attributes':['id',_0x271b('0x39'),_0x271b('0x71'),_0x271b('0x72'),_0x271b('0x73')],'raw':!![]});}return null;})[_0x271b('0x21')](function(_0x141242){if(!_0x141242)return null;_0x2d5b7e[_0x271b('0x29')]['agent']=_0x141242;return _0x2d5b7e;})[_0x271b('0x21')](function(_0x384a25){if(_0x384a25){_0x384a25['message'][_0x271b('0x74')]=util[_0x271b('0x5e')](_0x271b('0x75'),_0x3aa17a[_0x271b('0x61')]['name']);_0x384a25[_0x271b('0x29')][_0x271b('0x76')]=_0x2d5b7e[_0x271b('0x76')];_0x384a25[_0x271b('0x29')]['motionChannel']=_0x2d5b7e[_0x271b('0x76')];_0x384a25['message'][_0x271b('0x77')]='reject';respondWithRpcPromise(_0x271b('0x79'),'EventManager',{'event':'rejectmessage','message':_0x384a25[_0x271b('0x29')]},client9002);return _0x2d5b7e;}return null;})[_0x271b('0x21')](respondWithResult(_0x1b6b76,null))[_0x271b('0x54')](handleError(_0x1b6b76,null));};exports[_0x271b('0x2d')]=function(_0x287c0f,_0x4d8f0a,_0x3a3a7b){if(_0x287c0f[_0x271b('0x59')]['id']){delete _0x287c0f[_0x271b('0x59')]['id'];}var _0x7d1903;return db[_0x271b('0x3c')]['find']({'where':{'id':_0x287c0f[_0x271b('0x56')]['id']}})['then'](handleEntityNotFound(_0x4d8f0a,null))[_0x271b('0x21')](function(_0x52d63a){if(_0x52d63a){_0x7d1903=_0x52d63a;return db['WhatsappAccount']['find']({'where':{'id':_0x52d63a['WhatsappAccountId']}});}})[_0x271b('0x21')](handleEntityNotFound(_0x4d8f0a,null))[_0x271b('0x21')](function(_0x29bea1){if(_0x29bea1){logger[_0x271b('0x24')](_0x271b('0x82'),_0x271b('0x2d'),'received\x20delivery\x20report\x20from',_0x29bea1['type'],util['inspect'](_0x287c0f[_0x271b('0x59')],{'showHidden':![],'depth':null}));switch(_0x29bea1['type']){case'twilio':if(_0x287c0f[_0x271b('0x59')][_0x271b('0x83')]&&_0x287c0f[_0x271b('0x59')][_0x271b('0x83')]===_0x7d1903['messageId']&&_0x287c0f[_0x271b('0x59')][_0x271b('0x84')]&&_0x287c0f[_0x271b('0x59')][_0x271b('0x84')]===_0x271b('0x5d')){return _0x7d1903[_0x271b('0x36')]({'read':!![]});}else{logger[_0x271b('0x27')](_0x271b('0x85'),_0x271b('0x2d'),'twilio',util['inspect'](_0x287c0f['body'],{'showHidden':![],'depth':null}));}break;}return _0x7d1903;}})['then'](respondWithResult(_0x4d8f0a,null))[_0x271b('0x54')](handleError(_0x4d8f0a,null));};
\ No newline at end of file
index 911f9fd..04a5c85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4d=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1f5a63,_0x511504){var _0x30bb7a=function(_0x476310){while(--_0x476310){_0x1f5a63['push'](_0x1f5a63['shift']());}};_0x30bb7a(++_0x511504);}(_0x9f4d,0xb0));var _0xd9f4=function(_0xd73d53,_0x598443){_0xd73d53=_0xd73d53-0x0;var _0x560148=_0x9f4d[_0xd73d53];return _0x560148;};'use strict';var EventEmitter=require(_0xd9f4('0x0'));var WhatsappMessage=require(_0xd9f4('0x1'))['db'][_0xd9f4('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xd9f4('0x3')](0x0);var events={'afterCreate':_0xd9f4('0x4'),'afterUpdate':_0xd9f4('0x5'),'afterDestroy':_0xd9f4('0x6')};function emitEvent(_0x273eb9){return function(_0x7dccea,_0x5e0ab0,_0x2c39cb){WhatsappMessageEvents['emit'](_0x273eb9+':'+_0x7dccea['id'],_0x7dccea);WhatsappMessageEvents[_0xd9f4('0x7')](_0x273eb9,_0x7dccea);_0x2c39cb(null);};}for(var e in events){if(events[_0xd9f4('0x8')](e)){var event=events[e];WhatsappMessage[_0xd9f4('0x9')](e,emitEvent(event));}}module[_0xd9f4('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0xd757=['setMaxListeners','remove','emit','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x321077,_0x59935a){var _0x121987=function(_0x489ac3){while(--_0x489ac3){_0x321077['push'](_0x321077['shift']());}};_0x121987(++_0x59935a);}(_0xd757,0x1e5));var _0x7d75=function(_0x5273d8,_0xce5fe3){_0x5273d8=_0x5273d8-0x0;var _0x56be6e=_0xd757[_0x5273d8];return _0x56be6e;};'use strict';var EventEmitter=require(_0x7d75('0x0'));var WhatsappMessage=require(_0x7d75('0x1'))['db'][_0x7d75('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x7d75('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7d75('0x4')};function emitEvent(_0x2772a3){return function(_0x5e4a4c,_0xa7df66,_0x10d11a){WhatsappMessageEvents[_0x7d75('0x5')](_0x2772a3+':'+_0x5e4a4c['id'],_0x5e4a4c);WhatsappMessageEvents['emit'](_0x2772a3,_0x5e4a4c);_0x10d11a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x7d75('0x6')](e,emitEvent(event));}}module[_0x7d75('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 6a29c63..a74bcdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd65c=['models','get','direction','toLowerCase','out','secret','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','createdAt','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','sinch','baseUrl','/whatsapp/v1/','text','POST','Bearer\x20','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','node-fetch','rimraf','../../config/environment','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT'];(function(_0x1ff2ec,_0x386e86){var _0x405683=function(_0x22f921){while(--_0x22f921){_0x1ff2ec['push'](_0x1ff2ec['shift']());}};_0x405683(++_0x386e86);}(_0xd65c,0x6b));var _0xcd65=function(_0x26dff3,_0x153176){_0x26dff3=_0x26dff3-0x0;var _0x5425ec=_0xd65c[_0x26dff3];return _0x5425ec;};'use strict';var _=require(_0xcd65('0x0'));var util=require(_0xcd65('0x1'));var logger=require(_0xcd65('0x2'))('api');var moment=require(_0xcd65('0x3'));var BPromise=require(_0xcd65('0x4'));var rp=require(_0xcd65('0x5'));var fetch=require(_0xcd65('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcd65('0x7'));var config=require(_0xcd65('0x8'));var attributes=require('./whatsappMessage.attributes');module[_0xcd65('0x9')]=function(_0x5494e3,_0x18c846){return _0x5494e3[_0xcd65('0xa')](_0xcd65('0xb'),attributes,{'tableName':_0xcd65('0xc'),'paranoid':![],'indexes':[{'name':_0xcd65('0xd'),'fields':[_0xcd65('0xd')]},{'name':_0xcd65('0xe'),'fields':[_0xcd65('0xf')],'type':_0xcd65('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5eb6cb,_0x5377df,_0x4af4a2){var _0x1a3e2c=_0x5494e3[_0xcd65('0x11')];var _0xc155a4=_0x5eb6cb[_0xcd65('0x12')]({'plain':!![]});if(_0xc155a4[_0xcd65('0x13')][_0xcd65('0x14')]()==='in'||_0xc155a4[_0xcd65('0x13')][_0xcd65('0x14')]()===_0xcd65('0x15')&&!_0xc155a4[_0xcd65('0x16')]&&!_['isNil'](_0xc155a4[_0xcd65('0x17')])){_0x1a3e2c[_0xcd65('0x18')][_0xcd65('0x19')]({'where':{'id':_0xc155a4[_0xcd65('0x1a')]}})[_0xcd65('0x1b')](function(_0x2fc5cd){if(_0x2fc5cd){_0x2fc5cd['update']({'lastMsgAt':_0xc155a4[_0xcd65('0x1c')],'lastMsgDirection':_0xc155a4[_0xcd65('0x13')][_0xcd65('0x14')]()});}})[_0xcd65('0x1d')](function(_0x41f453){console[_0xcd65('0x1e')](_0x41f453);});}if(_0xc155a4[_0xcd65('0x13')]===_0xcd65('0x15')&&!_0xc155a4[_0xcd65('0x16')]){var _0x261a45;_0x1a3e2c[_0xcd65('0x1f')][_0xcd65('0x20')]({'where':{'id':_0xc155a4[_0xcd65('0x21')]},'raw':!![]})[_0xcd65('0x1b')](function(_0x5babe7){_0x261a45=_0x5babe7;if(_0x261a45&&_0x261a45[_0xcd65('0x22')]){switch(_0x261a45[_0xcd65('0x22')]){case _0xcd65('0x23'):var _0x48fcfd=require(_0xcd65('0x23'));if(_0x261a45[_0xcd65('0x24')]&&_0x261a45[_0xcd65('0x25')]&&_0x261a45[_0xcd65('0x26')]){var _0x14450c=new _0x48fcfd(_0x261a45[_0xcd65('0x24')],_0x261a45[_0xcd65('0x25')]);_0x14450c['messages'][_0xcd65('0x27')]({'body':_0xc155a4[_0xcd65('0xf')],'to':_0xcd65('0x28')+_0xc155a4['phone'],'from':'whatsapp:'+_0x261a45[_0xcd65('0x26')],'statusCallback':_0x261a45[_0xcd65('0x29')]+_0xcd65('0x2a')+_0xc155a4['id']+_0xcd65('0x2b')+_0x261a45[_0xcd65('0x2c')]})['then'](function(_0x205811){if(_0x205811[_0xcd65('0x2d')]){return _0x5eb6cb['update']({'messageId':_0x205811[_0xcd65('0x2d')]});}})[_0xcd65('0x1d')](function(_0x4dbc88){logger[_0xcd65('0x1e')](_0xcd65('0x2e'),_0xcd65('0x2f'),_0xcd65('0x23'),util[_0xcd65('0x30')](_0x4dbc88,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xcd65('0x2e'),_0xcd65('0x2f'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xcd65('0x31'):var _0xf51800=_0x261a45['accountSid'];var _0x120b81=_0x261a45['authToken'];var _0x128470=_0x261a45[_0xcd65('0x32')]+_0xcd65('0x33')+_0xf51800+'/messages/';var _0x1b78e5={'to':[_0xc155a4[_0xcd65('0x26')]],'message':{'type':_0xcd65('0x34'),'text':_0xc155a4['body']}};var _0x435338={'method':_0xcd65('0x35'),'uri':_0x128470,'headers':{'Authorization':_0xcd65('0x36')+_0x120b81,'Content-Type':_0xcd65('0x37')},'body':_0x1b78e5,'json':!![]};rp(_0x435338)[_0xcd65('0x1b')](function(_0x2e2ff4){if(_0x2e2ff4[_0xcd65('0x38')][0x0][_0xcd65('0x39')]){return _0x5eb6cb['update']({'messageId':_0x2e2ff4[_0xcd65('0x38')][0x0]['message_id']});}})['catch'](function(_0x4daa73){logger[_0xcd65('0x3a')](_0xcd65('0x3b'),_0x4daa73);});break;}}})['finally'](function(){_0x4af4a2();});}else{_0x4af4a2();}}},'charset':_0xcd65('0x3c'),'collate':_0xcd65('0x3d')});};
\ No newline at end of file
+var _0xa27f=['/whatsapp/v1/','/messages/','POST','application/json','message_id','statuses','err','WhatsappMessage,\x20%s','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','direction','toLowerCase','secret','isNil','WhatsappInteraction','findOne','then','update','createdAt','catch','error','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl'];(function(_0x40a6af,_0x6714bf){var _0x5314a5=function(_0x3f1cf8){while(--_0x3f1cf8){_0x40a6af['push'](_0x40a6af['shift']());}};_0x5314a5(++_0x6714bf);}(_0xa27f,0x76));var _0xfa27=function(_0xcaf028,_0x27002a){_0xcaf028=_0xcaf028-0x0;var _0x1fa0f7=_0xa27f[_0xcaf028];return _0x1fa0f7;};'use strict';var _=require(_0xfa27('0x0'));var util=require(_0xfa27('0x1'));var logger=require('../../config/logger')(_0xfa27('0x2'));var moment=require('moment');var BPromise=require(_0xfa27('0x3'));var rp=require(_0xfa27('0x4'));var fetch=require('node-fetch');var fs=require('fs');var path=require('path');var rimraf=require(_0xfa27('0x5'));var config=require(_0xfa27('0x6'));var attributes=require(_0xfa27('0x7'));module[_0xfa27('0x8')]=function(_0x40e570,_0x212696){return _0x40e570[_0xfa27('0x9')]('WhatsappMessage',attributes,{'tableName':_0xfa27('0xa'),'paranoid':![],'indexes':[{'name':_0xfa27('0xb'),'fields':[_0xfa27('0xb')]},{'name':_0xfa27('0xc'),'fields':[_0xfa27('0xd')],'type':_0xfa27('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4b099c,_0x53d9bb,_0x200ab8){var _0x2fab36=_0x40e570[_0xfa27('0xf')];var _0x2fedfc=_0x4b099c['get']({'plain':!![]});if(_0x2fedfc[_0xfa27('0x10')][_0xfa27('0x11')]()==='in'||_0x2fedfc[_0xfa27('0x10')][_0xfa27('0x11')]()==='out'&&!_0x2fedfc[_0xfa27('0x12')]&&!_[_0xfa27('0x13')](_0x2fedfc['UserId'])){_0x2fab36[_0xfa27('0x14')][_0xfa27('0x15')]({'where':{'id':_0x2fedfc['WhatsappInteractionId']}})[_0xfa27('0x16')](function(_0x404ca0){if(_0x404ca0){_0x404ca0[_0xfa27('0x17')]({'lastMsgAt':_0x2fedfc[_0xfa27('0x18')],'lastMsgDirection':_0x2fedfc[_0xfa27('0x10')][_0xfa27('0x11')]()});}})[_0xfa27('0x19')](function(_0x25f821){console[_0xfa27('0x1a')](_0x25f821);});}if(_0x2fedfc[_0xfa27('0x10')]==='out'&&!_0x2fedfc[_0xfa27('0x12')]){var _0x435f1b;_0x2fab36[_0xfa27('0x1b')]['find']({'where':{'id':_0x2fedfc[_0xfa27('0x1c')]},'raw':!![]})[_0xfa27('0x16')](function(_0x4e2812){_0x435f1b=_0x4e2812;if(_0x435f1b&&_0x435f1b[_0xfa27('0x1d')]){switch(_0x435f1b[_0xfa27('0x1d')]){case _0xfa27('0x1e'):var _0x5c5b38=require(_0xfa27('0x1e'));if(_0x435f1b[_0xfa27('0x1f')]&&_0x435f1b[_0xfa27('0x20')]&&_0x435f1b[_0xfa27('0x21')]){var _0x4ac256=new _0x5c5b38(_0x435f1b[_0xfa27('0x1f')],_0x435f1b[_0xfa27('0x20')]);_0x4ac256[_0xfa27('0x22')]['create']({'body':_0x2fedfc['body'],'to':_0xfa27('0x23')+_0x2fedfc[_0xfa27('0x21')],'from':_0xfa27('0x23')+_0x435f1b[_0xfa27('0x21')],'statusCallback':_0x435f1b[_0xfa27('0x24')]+_0xfa27('0x25')+_0x2fedfc['id']+_0xfa27('0x26')+_0x435f1b[_0xfa27('0x27')]})[_0xfa27('0x16')](function(_0x3ec3b8){if(_0x3ec3b8[_0xfa27('0x28')]){return _0x4b099c['update']({'messageId':_0x3ec3b8[_0xfa27('0x28')]});}})[_0xfa27('0x19')](function(_0xff67d8){logger[_0xfa27('0x1a')](_0xfa27('0x29'),_0xfa27('0x2a'),_0xfa27('0x1e'),util[_0xfa27('0x2b')](_0xff67d8,{'showHidden':![],'depth':null}));});}else{logger[_0xfa27('0x1a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xfa27('0x2a'),_0xfa27('0x1e'),_0xfa27('0x2c'));}break;case _0xfa27('0x2d'):var _0x41f52c=_0x435f1b['accountSid'];var _0x2ca72e=_0x435f1b[_0xfa27('0x20')];var _0xfe87c9=_0x435f1b[_0xfa27('0x2e')]+_0xfa27('0x2f')+_0x41f52c+_0xfa27('0x30');var _0x666cee={'to':[_0x2fedfc[_0xfa27('0x21')]],'message':{'type':'text','text':_0x2fedfc[_0xfa27('0xd')]}};var _0x2e0c62={'method':_0xfa27('0x31'),'uri':_0xfe87c9,'headers':{'Authorization':'Bearer\x20'+_0x2ca72e,'Content-Type':_0xfa27('0x32')},'body':_0x666cee,'json':!![]};rp(_0x2e0c62)['then'](function(_0x48b321){if(_0x48b321['statuses'][0x0][_0xfa27('0x33')]){return _0x4b099c['update']({'messageId':_0x48b321[_0xfa27('0x34')][0x0][_0xfa27('0x33')]});}})[_0xfa27('0x19')](function(_0x45d0ff){logger[_0xfa27('0x35')](_0xfa27('0x36'),_0x45d0ff);});break;}}})['finally'](function(){_0x200ab8();});}else{_0x200ab8();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index e6e76ab..ca99020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f2=['localhost','socket.io-emitter','./whatsappMessage.socket','request','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','WhatsappMessage','create','options','CreateWhatsappMessage','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0x2d909d,_0x2e2072){var _0x40cc8d=function(_0x3733e3){while(--_0x3733e3){_0x2d909d['push'](_0x2d909d['shift']());}};_0x40cc8d(++_0x2e2072);}(_0xf5f2,0x186));var _0x2f5f=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0xf5f2[_0x125ff8];return _0x2d9ef;};'use strict';var _=require('lodash');var util=require(_0x2f5f('0x0'));var moment=require(_0x2f5f('0x1'));var BPromise=require('bluebird');var rs=require(_0x2f5f('0x2'));var fs=require('fs');var Redis=require(_0x2f5f('0x3'));var db=require(_0x2f5f('0x4'))['db'];var utils=require(_0x2f5f('0x5'));var logger=require(_0x2f5f('0x6'))(_0x2f5f('0x7'));var config=require(_0x2f5f('0x8'));var jayson=require(_0x2f5f('0x9'));var client=jayson[_0x2f5f('0xa')]['http']({'port':0x232a});config[_0x2f5f('0xb')]=_[_0x2f5f('0xc')](config['redis'],{'host':_0x2f5f('0xd'),'port':0x18eb});var socket=require(_0x2f5f('0xe'))(new Redis(config['redis']));require(_0x2f5f('0xf'))['register'](socket);function respondWithRpcPromise(_0x16abd3,_0x222db0,_0x15fe39){return new BPromise(function(_0x229528,_0x466e7c){return client[_0x2f5f('0x10')](_0x16abd3,_0x15fe39)['then'](function(_0x59afa1){logger['info'](_0x2f5f('0x11'),_0x222db0,_0x2f5f('0x12'));logger[_0x2f5f('0x13')](_0x2f5f('0x14'),_0x222db0,_0x2f5f('0x12'),JSON[_0x2f5f('0x15')](_0x59afa1));if(_0x59afa1[_0x2f5f('0x16')]){if(_0x59afa1[_0x2f5f('0x16')][_0x2f5f('0x17')]===0x1f4){logger[_0x2f5f('0x16')](_0x2f5f('0x11'),_0x222db0,_0x59afa1[_0x2f5f('0x16')][_0x2f5f('0x18')]);return _0x466e7c(_0x59afa1[_0x2f5f('0x16')][_0x2f5f('0x18')]);}logger[_0x2f5f('0x16')](_0x2f5f('0x11'),_0x222db0,_0x59afa1[_0x2f5f('0x16')]['message']);return _0x229528(_0x59afa1[_0x2f5f('0x16')][_0x2f5f('0x18')]);}else{logger[_0x2f5f('0x19')](_0x2f5f('0x11'),_0x222db0,'request\x20sent');_0x229528(_0x59afa1[_0x2f5f('0x1a')]['message']);}})['catch'](function(_0x4330e0){logger['error'](_0x2f5f('0x11'),_0x222db0,_0x4330e0);_0x466e7c(_0x4330e0);});});}exports['CreateWhatsappMessage']=function(_0x1b4c9a){var _0x324be6=this;return new Promise(function(_0x5658ff,_0x860b95){return db[_0x2f5f('0x1b')][_0x2f5f('0x1c')](_0x1b4c9a['body'],{'raw':_0x1b4c9a[_0x2f5f('0x1d')]?_0x1b4c9a[_0x2f5f('0x1d')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e4520){logger[_0x2f5f('0x19')](_0x2f5f('0x1e'),_0x1b4c9a);logger[_0x2f5f('0x13')](_0x2f5f('0x1e'),_0x1b4c9a,JSON[_0x2f5f('0x15')](_0x1e4520));_0x5658ff(_0x1e4520);})['catch'](function(_0x3d8b96){logger['error'](_0x2f5f('0x1e'),_0x3d8b96['message'],_0x1b4c9a);_0x860b95(_0x324be6[_0x2f5f('0x16')](0x1f4,_0x3d8b96[_0x2f5f('0x18')]));});});};
\ No newline at end of file
+var _0x6066=['request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','catch','options','CreateWhatsappMessage','util','moment','bluebird','../../config/utils','jayson/promise','client','http','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register'];(function(_0x15fa77,_0x93eaff){var _0x1385ff=function(_0x165e02){while(--_0x165e02){_0x15fa77['push'](_0x15fa77['shift']());}};_0x1385ff(++_0x93eaff);}(_0x6066,0x90));var _0x6606=function(_0x390733,_0x1e3d32){_0x390733=_0x390733-0x0;var _0x33beb9=_0x6066[_0x390733];return _0x33beb9;};'use strict';var _=require('lodash');var util=require(_0x6606('0x0'));var moment=require(_0x6606('0x1'));var BPromise=require(_0x6606('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6606('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x6606('0x4'));var client=jayson[_0x6606('0x5')][_0x6606('0x6')]({'port':0x232a});config[_0x6606('0x7')]=_['defaults'](config[_0x6606('0x7')],{'host':_0x6606('0x8'),'port':0x18eb});var socket=require(_0x6606('0x9'))(new Redis(config[_0x6606('0x7')]));require(_0x6606('0xa'))[_0x6606('0xb')](socket);function respondWithRpcPromise(_0x2d4f0b,_0x48551f,_0x5008e9){return new BPromise(function(_0x4119b5,_0x2854e7){return client[_0x6606('0xc')](_0x2d4f0b,_0x5008e9)[_0x6606('0xd')](function(_0x3e0593){logger[_0x6606('0xe')]('WhatsappMessage,\x20%s,\x20%s',_0x48551f,_0x6606('0xf'));logger[_0x6606('0x10')](_0x6606('0x11'),_0x48551f,_0x6606('0xf'),JSON[_0x6606('0x12')](_0x3e0593));if(_0x3e0593[_0x6606('0x13')]){if(_0x3e0593[_0x6606('0x13')][_0x6606('0x14')]===0x1f4){logger[_0x6606('0x13')](_0x6606('0x15'),_0x48551f,_0x3e0593[_0x6606('0x13')][_0x6606('0x16')]);return _0x2854e7(_0x3e0593[_0x6606('0x13')][_0x6606('0x16')]);}logger['error'](_0x6606('0x15'),_0x48551f,_0x3e0593[_0x6606('0x13')][_0x6606('0x16')]);return _0x4119b5(_0x3e0593[_0x6606('0x13')][_0x6606('0x16')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x48551f,_0x6606('0xf'));_0x4119b5(_0x3e0593['result'][_0x6606('0x16')]);}})[_0x6606('0x17')](function(_0x283a45){logger[_0x6606('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x48551f,_0x283a45);_0x2854e7(_0x283a45);});});}exports['CreateWhatsappMessage']=function(_0x1584dd){var _0x1692e9=this;return new Promise(function(_0x195fe7,_0x387c13){return db['WhatsappMessage']['create'](_0x1584dd['body'],{'raw':_0x1584dd[_0x6606('0x18')]?_0x1584dd[_0x6606('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x6606('0xd')](function(_0x318d86){logger[_0x6606('0xe')](_0x6606('0x19'),_0x1584dd);logger[_0x6606('0x10')](_0x6606('0x19'),_0x1584dd,JSON['stringify'](_0x318d86));_0x195fe7(_0x318d86);})[_0x6606('0x17')](function(_0xc550a3){logger[_0x6606('0x13')](_0x6606('0x19'),_0xc550a3[_0x6606('0x16')],_0x1584dd);_0x387c13(_0x1692e9[_0x6606('0x13')](0x1f4,_0xc550a3[_0x6606('0x16')]));});});};
\ No newline at end of file
index 3a2a494..cb4f933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0601=['register','length','whatsappMessage:','./whatsappMessage.events','remove','update','removeListener'];(function(_0x54459c,_0x204068){var _0x6b4797=function(_0x58b60c){while(--_0x58b60c){_0x54459c['push'](_0x54459c['shift']());}};_0x6b4797(++_0x204068);}(_0x0601,0x184));var _0x1060=function(_0x358478,_0x5f2729){_0x358478=_0x358478-0x0;var _0x1aa513=_0x0601[_0x358478];return _0x1aa513;};'use strict';var WhatsappMessageEvents=require(_0x1060('0x0'));var events=['save',_0x1060('0x1'),_0x1060('0x2')];function createListener(_0x4bab21,_0x3d49de){return function(_0x3382d7){_0x3d49de['emit'](_0x4bab21,_0x3382d7);};}function removeListener(_0x25b431,_0x38e67e){return function(){WhatsappMessageEvents[_0x1060('0x3')](_0x25b431,_0x38e67e);};}exports[_0x1060('0x4')]=function(_0x32da6b){for(var _0x3d4ad1=0x0,_0x406fb3=events[_0x1060('0x5')];_0x3d4ad1<_0x406fb3;_0x3d4ad1++){var _0x36ade9=events[_0x3d4ad1];var _0x2e3e04=createListener(_0x1060('0x6')+_0x36ade9,_0x32da6b);WhatsappMessageEvents['on'](_0x36ade9,_0x2e3e04);}};
\ No newline at end of file
+var _0xcf65=['./whatsappMessage.events','save','update','emit','removeListener','register','length','whatsappMessage:'];(function(_0x5307f1,_0x66442d){var _0x212ae1=function(_0x471731){while(--_0x471731){_0x5307f1['push'](_0x5307f1['shift']());}};_0x212ae1(++_0x66442d);}(_0xcf65,0x70));var _0x5cf6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcf65[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappMessageEvents=require(_0x5cf6('0x0'));var events=[_0x5cf6('0x1'),'remove',_0x5cf6('0x2')];function createListener(_0x5b1d82,_0x1c379c){return function(_0x5667a4){_0x1c379c[_0x5cf6('0x3')](_0x5b1d82,_0x5667a4);};}function removeListener(_0x8de153,_0xdf5ba0){return function(){WhatsappMessageEvents[_0x5cf6('0x4')](_0x8de153,_0xdf5ba0);};}exports[_0x5cf6('0x5')]=function(_0x448a63){for(var _0xd5ed4c=0x0,_0x46af66=events[_0x5cf6('0x6')];_0xd5ed4c<_0x46af66;_0xd5ed4c++){var _0x55e5f4=events[_0xd5ed4c];var _0xde6cc7=createListener(_0x5cf6('0x7')+_0x55e5f4,_0x448a63);WhatsappMessageEvents['on'](_0x55e5f4,_0xde6cc7);}};
\ No newline at end of file
index f318654..5f65091 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e2=['post','addTeams','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents'];(function(_0x152834,_0x3724f4){var _0x32f05c=function(_0x3371b7){while(--_0x3371b7){_0x152834['push'](_0x152834['shift']());}};_0x32f05c(++_0x3724f4);}(_0xa9e2,0xc0));var _0x2a9e=function(_0x4d2c12,_0x3817b8){_0x4d2c12=_0x4d2c12-0x0;var _0x50c849=_0xa9e2[_0x4d2c12];return _0x50c849;};'use strict';var multer=require(_0x2a9e('0x0'));var util=require(_0x2a9e('0x1'));var path=require(_0x2a9e('0x2'));var timeout=require(_0x2a9e('0x3'));var express=require('express');var router=express[_0x2a9e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x2a9e('0x5'));var config=require('../../config/environment');var controller=require(_0x2a9e('0x6'));router[_0x2a9e('0x7')]('/',auth[_0x2a9e('0x8')](),controller[_0x2a9e('0x9')]);router[_0x2a9e('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x2a9e('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x2a9e('0xa')]);router[_0x2a9e('0x7')](_0x2a9e('0xb'),auth[_0x2a9e('0x8')](),controller['getMembers']);router[_0x2a9e('0x7')](_0x2a9e('0xc'),auth[_0x2a9e('0x8')](),controller[_0x2a9e('0xd')]);router[_0x2a9e('0x7')](_0x2a9e('0xe'),auth['isAuthenticated'](),controller[_0x2a9e('0xf')]);router[_0x2a9e('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/teams',auth[_0x2a9e('0x8')](),controller[_0x2a9e('0x11')]);router[_0x2a9e('0x10')](_0x2a9e('0xe'),auth[_0x2a9e('0x8')](),controller['addAgents']);router[_0x2a9e('0x12')](_0x2a9e('0x13'),auth['isAuthenticated'](),controller[_0x2a9e('0x14')]);router[_0x2a9e('0x15')](_0x2a9e('0x13'),auth[_0x2a9e('0x8')](),controller[_0x2a9e('0x16')]);router[_0x2a9e('0x15')](_0x2a9e('0xc'),auth[_0x2a9e('0x8')](),controller[_0x2a9e('0x17')]);router['delete'](_0x2a9e('0xe'),auth['isAuthenticated'](),controller[_0x2a9e('0x18')]);module[_0x2a9e('0x19')]=router;
\ No newline at end of file
+var _0xa3bb=['/:id/members','getTeams','post','create','/:id/teams','addTeams','addAgents','put','delete','destroy','removeTeams','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id'];(function(_0x2817d9,_0x3e1a8d){var _0x3e942a=function(_0x4bc5b6){while(--_0x4bc5b6){_0x2817d9['push'](_0x2817d9['shift']());}};_0x3e942a(++_0x3e1a8d);}(_0xa3bb,0x1c8));var _0xba3b=function(_0x3cb599,_0x455abb){_0x3cb599=_0x3cb599-0x0;var _0x44d643=_0xa3bb[_0x3cb599];return _0x44d643;};'use strict';var multer=require(_0xba3b('0x0'));var util=require(_0xba3b('0x1'));var path=require(_0xba3b('0x2'));var timeout=require(_0xba3b('0x3'));var express=require('express');var router=express[_0xba3b('0x4')]();var fs_extra=require(_0xba3b('0x5'));var auth=require(_0xba3b('0x6'));var interaction=require(_0xba3b('0x7'));var config=require('../../config/environment');var controller=require('./whatsappQueue.controller');router[_0xba3b('0x8')]('/',auth[_0xba3b('0x9')](),controller[_0xba3b('0xa')]);router[_0xba3b('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xba3b('0x8')](_0xba3b('0xb'),auth[_0xba3b('0x9')](),controller['show']);router[_0xba3b('0x8')](_0xba3b('0xc'),auth[_0xba3b('0x9')](),controller['getMembers']);router[_0xba3b('0x8')]('/:id/teams',auth[_0xba3b('0x9')](),controller[_0xba3b('0xd')]);router[_0xba3b('0x8')]('/:id/users',auth[_0xba3b('0x9')](),controller['getAgents']);router[_0xba3b('0xe')]('/',auth[_0xba3b('0x9')](),controller[_0xba3b('0xf')]);router[_0xba3b('0xe')](_0xba3b('0x10'),auth['isAuthenticated'](),controller[_0xba3b('0x11')]);router[_0xba3b('0xe')]('/:id/users',auth[_0xba3b('0x9')](),controller[_0xba3b('0x12')]);router[_0xba3b('0x13')](_0xba3b('0xb'),auth[_0xba3b('0x9')](),controller['update']);router[_0xba3b('0x14')](_0xba3b('0xb'),auth[_0xba3b('0x9')](),controller[_0xba3b('0x15')]);router[_0xba3b('0x14')](_0xba3b('0x10'),auth[_0xba3b('0x9')](),controller[_0xba3b('0x16')]);router[_0xba3b('0x14')](_0xba3b('0x17'),auth[_0xba3b('0x9')](),controller[_0xba3b('0x18')]);module[_0xba3b('0x19')]=router;
\ No newline at end of file
index b43712a..6a97762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8cc=['INTEGER','ENUM','rrmemory','beepall','STRING','sequelize','exports'];(function(_0x288f5e,_0x205edd){var _0x476cc9=function(_0x796f53){while(--_0x796f53){_0x288f5e['push'](_0x288f5e['shift']());}};_0x476cc9(++_0x205edd);}(_0xd8cc,0xc9));var _0xcd8c=function(_0x297c55,_0x34fa75){_0x297c55=_0x297c55-0x0;var _0x120389=_0xd8cc[_0x297c55];return _0x120389;};'use strict';var Sequelize=require(_0xcd8c('0x0'));module[_0xcd8c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xcd8c('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xcd8c('0x3')](_0xcd8c('0x4'),_0xcd8c('0x5'),'roundrobin')},'description':{'type':Sequelize[_0xcd8c('0x6')]}};
\ No newline at end of file
+var _0x949d=['sequelize','exports','STRING','name','rrmemory','beepall'];(function(_0xb875ee,_0x583042){var _0x4c7f3a=function(_0x1f6661){while(--_0x1f6661){_0xb875ee['push'](_0xb875ee['shift']());}};_0x4c7f3a(++_0x583042);}(_0x949d,0x162));var _0xd949=function(_0x124604,_0x30a681){_0x124604=_0x124604-0x0;var _0x2e4a9a=_0x949d[_0x124604];return _0x2e4a9a;};'use strict';var Sequelize=require(_0xd949('0x0'));module[_0xd949('0x1')]={'name':{'type':Sequelize[_0xd949('0x2')],'unique':_0xd949('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd949('0x4'),_0xd949('0x5'),'roundrobin')},'description':{'type':Sequelize[_0xd949('0x2')]}};
\ No newline at end of file
index 7e86fe0..444f1d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaced=['then','destroy','get','WhatsappQueues','UserProfileResource','error','stack','name','send','index','WhatsappQueue','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','fields','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','body','describe','getMembers','findOne','UserWhatsappQueue','pick','WhatsappQueueId','findAll','User','UserId','agent','whatsappPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','each','findOrCreate','emit','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','spread','userWhatsappQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update'];(function(_0xcc6aae,_0x13e875){var _0x77e291=function(_0x5cae37){while(--_0x5cae37){_0xcc6aae['push'](_0xcc6aae['shift']());}};_0x77e291(++_0x13e875);}(_0xaced,0x17e));var _0xdace=function(_0x3aac7d,_0x4cc0f8){_0x3aac7d=_0x3aac7d-0x0;var _0x5c0151=_0xaced[_0x3aac7d];return _0x5c0151;};'use strict';var emlformat=require(_0xdace('0x0'));var rimraf=require(_0xdace('0x1'));var zipdir=require(_0xdace('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdace('0x3'));var moment=require('moment');var BPromise=require(_0xdace('0x4'));var Mustache=require(_0xdace('0x5'));var util=require(_0xdace('0x6'));var path=require('path');var sox=require(_0xdace('0x7'));var csv=require(_0xdace('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdace('0x9'));var _=require(_0xdace('0xa'));var squel=require(_0xdace('0xb'));var crypto=require('crypto');var jsforce=require(_0xdace('0xc'));var deskjs=require(_0xdace('0xd'));var toCsv=require(_0xdace('0x8'));var querystring=require(_0xdace('0xe'));var Papa=require(_0xdace('0xf'));var Redis=require(_0xdace('0x10'));var authService=require(_0xdace('0x11'));var qs=require(_0xdace('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdace('0x13'));var logger=require('../../config/logger')(_0xdace('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdace('0x15'));var db=require(_0xdace('0x16'))['db'];config[_0xdace('0x17')]=_['defaults'](config['redis'],{'host':_0xdace('0x18'),'port':0x18eb});var socket=require(_0xdace('0x19'))(new Redis(config[_0xdace('0x17')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x35c39b,_0x4e0956){_0x4e0956=_0x4e0956||0xcc;return function(_0x4c78e0){if(_0x4c78e0){return _0x35c39b[_0xdace('0x1a')](_0x4e0956);}return _0x35c39b[_0xdace('0x1b')](_0x4e0956)[_0xdace('0x1c')]();};}function respondWithResult(_0x28a36e,_0x5a97f7){_0x5a97f7=_0x5a97f7||0xc8;return function(_0x2e3aa1){if(_0x2e3aa1){return _0x28a36e[_0xdace('0x1b')](_0x5a97f7)['json'](_0x2e3aa1);}};}function respondWithFilteredResult(_0x5b9411,_0x301ef0){return function(_0x6c414){if(_0x6c414){var _0x4c6383=typeof _0x301ef0[_0xdace('0x1d')]===_0xdace('0x1e')&&typeof _0x301ef0[_0xdace('0x1f')]===_0xdace('0x1e');var _0x308dca=_0x6c414[_0xdace('0x20')];var _0x2668c7=_0x4c6383?0x0:_0x301ef0['offset'];var _0x4ff82c=_0x4c6383?_0x6c414[_0xdace('0x20')]:_0x301ef0[_0xdace('0x1d')]+_0x301ef0[_0xdace('0x1f')];var _0x121440;if(_0x4ff82c>=_0x308dca){_0x4ff82c=_0x308dca;_0x121440=0xc8;}else{_0x121440=0xce;}_0x5b9411['status'](_0x121440);return _0x5b9411['set'](_0xdace('0x21'),_0x2668c7+'-'+_0x4ff82c+'/'+_0x308dca)[_0xdace('0x22')](_0x6c414);}return null;};}function patchUpdates(_0x275a5b){return function(_0x9364d1){try{jsonpatch[_0xdace('0x23')](_0x9364d1,_0x275a5b,!![]);}catch(_0x137b40){return BPromise[_0xdace('0x24')](_0x137b40);}return _0x9364d1['save']();};}function saveUpdates(_0x942fb0,_0x589c15){return function(_0x2ef02a){if(_0x2ef02a){return _0x2ef02a[_0xdace('0x25')](_0x942fb0)[_0xdace('0x26')](function(_0x2193e4){return _0x2193e4;});}return null;};}function removeEntity(_0x681b2,_0x59316c){return function(_0x439f3c){if(_0x439f3c){return _0x439f3c[_0xdace('0x27')]()[_0xdace('0x26')](function(){var _0x11e9f5=_0x439f3c[_0xdace('0x28')]({'plain':!![]});var _0x4ff607=_0xdace('0x29');return db[_0xdace('0x2a')][_0xdace('0x27')]({'where':{'type':_0x4ff607,'resourceId':_0x11e9f5['id']}})[_0xdace('0x26')](function(){return _0x439f3c;});})[_0xdace('0x26')](function(){_0x681b2['status'](0xcc)[_0xdace('0x1c')]();});}};}function handleEntityNotFound(_0x52c6cc,_0x2ebd70){return function(_0x258e80){if(!_0x258e80){_0x52c6cc[_0xdace('0x1a')](0x194);}return _0x258e80;};}function handleError(_0x3a2370,_0x5238e2){_0x5238e2=_0x5238e2||0x1f4;return function(_0x5bc0e6){logger[_0xdace('0x2b')](_0x5bc0e6[_0xdace('0x2c')]);if(_0x5bc0e6['name']){delete _0x5bc0e6[_0xdace('0x2d')];}_0x3a2370[_0xdace('0x1b')](_0x5238e2)[_0xdace('0x2e')](_0x5bc0e6);};}exports[_0xdace('0x2f')]=function(_0x2da756,_0x2975bd){var _0x480e6c={},_0x293b97={},_0x226bb5={'count':0x0,'rows':[]};var _0x25efd8=_['map'](db[_0xdace('0x30')]['rawAttributes'],function(_0x138f92){return{'name':_0x138f92[_0xdace('0x31')],'type':_0x138f92[_0xdace('0x32')][_0xdace('0x33')]};});_0x293b97[_0xdace('0x34')]=_[_0xdace('0x35')](_0x25efd8,_0xdace('0x2d'));_0x293b97[_0xdace('0x36')]=_[_0xdace('0x37')](_0x2da756['query']);_0x293b97[_0xdace('0x38')]=_[_0xdace('0x39')](_0x293b97[_0xdace('0x34')],_0x293b97[_0xdace('0x36')]);_0x480e6c['attributes']=_['intersection'](_0x293b97[_0xdace('0x34')],qs['fields'](_0x2da756[_0xdace('0x36')]['fields']));_0x480e6c[_0xdace('0x3a')]=_0x480e6c[_0xdace('0x3a')][_0xdace('0x3b')]?_0x480e6c['attributes']:_0x293b97[_0xdace('0x34')];if(!_0x2da756[_0xdace('0x36')][_0xdace('0x3c')](_0xdace('0x3d'))){_0x480e6c[_0xdace('0x1f')]=qs['limit'](_0x2da756[_0xdace('0x36')][_0xdace('0x1f')]);_0x480e6c[_0xdace('0x1d')]=qs[_0xdace('0x1d')](_0x2da756[_0xdace('0x36')][_0xdace('0x1d')]);}_0x480e6c[_0xdace('0x3e')]=qs['sort'](_0x2da756['query'][_0xdace('0x3f')]);_0x480e6c[_0xdace('0x40')]=qs[_0xdace('0x38')](_['pick'](_0x2da756[_0xdace('0x36')],_0x293b97[_0xdace('0x38')]),_0x25efd8);if(_0x2da756[_0xdace('0x36')]['filter']){_0x480e6c['where']=_[_0xdace('0x41')](_0x480e6c[_0xdace('0x40')],{'$or':_['map'](_0x25efd8,function(_0x3253b3){if(_0x3253b3[_0xdace('0x32')]!==_0xdace('0x42')){var _0x582f67={};_0x582f67[_0x3253b3[_0xdace('0x2d')]]={'$like':'%'+_0x2da756[_0xdace('0x36')][_0xdace('0x43')]+'%'};return _0x582f67;}})});}_0x480e6c=_['merge']({},_0x480e6c,_0x2da756[_0xdace('0x44')]);var _0x4b35e3={'where':_0x480e6c[_0xdace('0x40')]};return db[_0xdace('0x30')][_0xdace('0x20')](_0x4b35e3)[_0xdace('0x26')](function(_0x48c8c6){_0x226bb5[_0xdace('0x20')]=_0x48c8c6;if(_0x2da756[_0xdace('0x36')][_0xdace('0x45')]){_0x480e6c[_0xdace('0x46')]=[{'all':!![]}];}return db[_0xdace('0x30')]['findAll'](_0x480e6c);})[_0xdace('0x26')](function(_0x4daf47){_0x226bb5[_0xdace('0x47')]=_0x4daf47;return _0x226bb5;})[_0xdace('0x26')](respondWithFilteredResult(_0x2975bd,_0x480e6c))[_0xdace('0x48')](handleError(_0x2975bd,null));};exports[_0xdace('0x49')]=function(_0x368368,_0x54be13){var _0x53ff78={'raw':!![],'where':{'id':_0x368368[_0xdace('0x4a')]['id']}},_0x465bff={};_0x465bff[_0xdace('0x34')]=_[_0xdace('0x37')](db['WhatsappQueue'][_0xdace('0x4b')]);_0x465bff[_0xdace('0x36')]=_[_0xdace('0x37')](_0x368368[_0xdace('0x36')]);_0x465bff[_0xdace('0x38')]=_['intersection'](_0x465bff[_0xdace('0x34')],_0x465bff['query']);_0x53ff78[_0xdace('0x3a')]=_[_0xdace('0x39')](_0x465bff[_0xdace('0x34')],qs[_0xdace('0x4c')](_0x368368['query']['fields']));_0x53ff78[_0xdace('0x3a')]=_0x53ff78[_0xdace('0x3a')]['length']?_0x53ff78[_0xdace('0x3a')]:_0x465bff[_0xdace('0x34')];if(_0x368368['query'][_0xdace('0x45')]){_0x53ff78[_0xdace('0x46')]=[{'all':!![]}];}_0x53ff78=_[_0xdace('0x41')]({},_0x53ff78,_0x368368['options']);return db[_0xdace('0x30')]['find'](_0x53ff78)[_0xdace('0x26')](handleEntityNotFound(_0x54be13,null))[_0xdace('0x26')](respondWithResult(_0x54be13,null))['catch'](handleError(_0x54be13,null));};exports[_0xdace('0x4d')]=function(_0x5b7b34,_0xd56af4){return db['WhatsappQueue'][_0xdace('0x4d')](_0x5b7b34['body'],{})[_0xdace('0x26')](function(_0x25575f){var _0x58531c=_0x5b7b34[_0xdace('0x4e')]['get']({'plain':!![]});if(!_0x58531c)throw new Error(_0xdace('0x4f'));if(_0x58531c[_0xdace('0x50')]===_0xdace('0x4e')){var _0x47ee25=_0x25575f[_0xdace('0x28')]({'plain':!![]});var _0x4a8e4f=_0xdace('0x29');return db[_0xdace('0x51')][_0xdace('0x52')]({'where':{'name':_0x4a8e4f,'userProfileId':_0x58531c[_0xdace('0x53')]},'raw':!![]})[_0xdace('0x26')](function(_0x380ac3){if(_0x380ac3&&_0x380ac3[_0xdace('0x54')]===0x0){return db['UserProfileResource'][_0xdace('0x4d')]({'name':_0x47ee25[_0xdace('0x2d')],'resourceId':_0x47ee25['id'],'type':_0x380ac3['name'],'sectionId':_0x380ac3['id']},{})[_0xdace('0x26')](function(){return _0x25575f;});}else{return _0x25575f;}})['catch'](function(_0x25e830){logger[_0xdace('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x25e830);throw _0x25e830;});}return _0x25575f;})['then'](respondWithResult(_0xd56af4,0xc9))['catch'](handleError(_0xd56af4,null));};exports[_0xdace('0x25')]=function(_0x4ebff7,_0x3ac524){if(_0x4ebff7[_0xdace('0x55')]['id']){delete _0x4ebff7[_0xdace('0x55')]['id'];}return db[_0xdace('0x30')][_0xdace('0x52')]({'where':{'id':_0x4ebff7[_0xdace('0x4a')]['id']}})[_0xdace('0x26')](handleEntityNotFound(_0x3ac524,null))[_0xdace('0x26')](saveUpdates(_0x4ebff7[_0xdace('0x55')],null))['then'](respondWithResult(_0x3ac524,null))[_0xdace('0x48')](handleError(_0x3ac524,null));};exports[_0xdace('0x27')]=function(_0x4b0b81,_0x5a68ff){return db[_0xdace('0x30')]['find']({'where':{'id':_0x4b0b81['params']['id']}})[_0xdace('0x26')](handleEntityNotFound(_0x5a68ff,null))[_0xdace('0x26')](removeEntity(_0x5a68ff,null))[_0xdace('0x48')](handleError(_0x5a68ff,null));};exports[_0xdace('0x56')]=function(_0xc3ca17,_0x66f58e){return db[_0xdace('0x30')][_0xdace('0x56')]()[_0xdace('0x26')](respondWithResult(_0x66f58e,null))[_0xdace('0x48')](handleError(_0x66f58e,null));};exports[_0xdace('0x57')]=function(_0x3ada46,_0x453628,_0x70389e){var _0x208b67={'raw':!![],'where':{}},_0x1f898c={},_0x262f18;return db['WhatsappQueue'][_0xdace('0x58')]({'where':{'id':_0x3ada46['params']['id']}})['then'](handleEntityNotFound(_0x453628,null))[_0xdace('0x26')](function(_0x4d236d){if(_0x4d236d){_0x262f18=_0x4d236d['get']({'plain':!![]});_0x1f898c[_0xdace('0x34')]=_[_0xdace('0x37')](db[_0xdace('0x59')][_0xdace('0x4b')]);_0x1f898c[_0xdace('0x36')]=_[_0xdace('0x37')](_0x3ada46['query']);_0x1f898c[_0xdace('0x38')]=_[_0xdace('0x39')](_0x1f898c['model'],_0x1f898c[_0xdace('0x36')]);_0x208b67['attributes']=_[_0xdace('0x39')](_0x1f898c[_0xdace('0x34')],qs[_0xdace('0x4c')](_0x3ada46[_0xdace('0x36')][_0xdace('0x4c')]));_0x208b67['attributes']=_0x208b67[_0xdace('0x3a')][_0xdace('0x3b')]?_0x208b67[_0xdace('0x3a')]:_0x1f898c['model'];if(!_0x3ada46[_0xdace('0x36')]['hasOwnProperty']('nolimit')){_0x208b67[_0xdace('0x1f')]=qs[_0xdace('0x1f')](_0x3ada46['query'][_0xdace('0x1f')]);_0x208b67[_0xdace('0x1d')]=qs['offset'](_0x3ada46[_0xdace('0x36')][_0xdace('0x1d')]);}_0x208b67['order']=qs['sort'](_0x3ada46[_0xdace('0x36')]['sort']);_0x208b67['where']=qs[_0xdace('0x38')](_[_0xdace('0x5a')](_0x3ada46[_0xdace('0x36')],_0x1f898c[_0xdace('0x38')]));_0x208b67[_0xdace('0x40')][_0xdace('0x5b')]=_0x4d236d['id'];if(_0x3ada46[_0xdace('0x36')][_0xdace('0x43')]){_0x208b67[_0xdace('0x40')]=_[_0xdace('0x41')](_0x208b67[_0xdace('0x40')],{'$or':_['map'](_0x208b67[_0xdace('0x3a')],function(_0x4c8874){var _0x5c01c3={};_0x5c01c3[_0x4c8874]={'$like':'%'+_0x3ada46[_0xdace('0x36')][_0xdace('0x43')]+'%'};return _0x5c01c3;})});}_0x208b67=_[_0xdace('0x41')]({},_0x208b67,_0x3ada46[_0xdace('0x44')]);return db['UserWhatsappQueue'][_0xdace('0x5c')](_0x208b67);}})['then'](function(_0x22f41c){if(_0x22f41c){return db[_0xdace('0x5d')]['findAndCountAll']({'where':{'id':_[_0xdace('0x35')](_0x22f41c,_0xdace('0x5e')),'role':_0xdace('0x5f')},'attributes':['id',_0xdace('0x2d'),_0xdace('0x60'),_0xdace('0x61'),_0xdace('0x62')]});}})[_0xdace('0x26')](function(_0x5ba6f1){if(_0x5ba6f1){return{'count':_0x5ba6f1[_0xdace('0x20')],'rows':_[_0xdace('0x35')](_0x5ba6f1[_0xdace('0x47')],function(_0x2e6a14){return{'membername':_0x2e6a14[_0xdace('0x2d')],'UserId':_0x2e6a14['id'],'queue_name':_0x262f18[_0xdace('0x2d')],'WhatsappQueueId':_0x262f18['id'],'interface':util['format'](_0xdace('0x63'),_0xdace('0x64'),_0x2e6a14[_0xdace('0x2d')]),'penalty':0x0,'paused':_0x2e6a14['whatsappPause'],'createdAt':_0x2e6a14[_0xdace('0x62')],'updatedAt':_0x2e6a14[_0xdace('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x453628,_0x208b67))[_0xdace('0x48')](handleError(_0x453628,null));};exports[_0xdace('0x65')]=function(_0x10b031,_0x1fe5a3,_0x11f5ee){var _0x5f1732={};var _0x36d100={};var _0x5e320a;var _0x1e3bbf;return db[_0xdace('0x30')]['findOne']({'where':{'id':_0x10b031['params']['id']}})[_0xdace('0x26')](handleEntityNotFound(_0x1fe5a3,null))[_0xdace('0x26')](function(_0x2d2edd){if(_0x2d2edd){_0x5e320a=_0x2d2edd;_0x36d100[_0xdace('0x34')]=_[_0xdace('0x37')](db[_0xdace('0x66')][_0xdace('0x4b')]);_0x36d100[_0xdace('0x36')]=_[_0xdace('0x37')](_0x10b031[_0xdace('0x36')]);_0x36d100['filters']=_[_0xdace('0x39')](_0x36d100[_0xdace('0x34')],_0x36d100[_0xdace('0x36')]);_0x5f1732['attributes']=_[_0xdace('0x39')](_0x36d100[_0xdace('0x34')],qs[_0xdace('0x4c')](_0x10b031[_0xdace('0x36')][_0xdace('0x4c')]));_0x5f1732['attributes']=_0x5f1732['attributes'][_0xdace('0x3b')]?_0x5f1732[_0xdace('0x3a')]:_0x36d100[_0xdace('0x34')];_0x5f1732[_0xdace('0x3e')]=qs[_0xdace('0x3f')](_0x10b031['query']['sort']);_0x5f1732['where']=qs[_0xdace('0x38')](_[_0xdace('0x5a')](_0x10b031[_0xdace('0x36')],_0x36d100[_0xdace('0x38')]));if(_0x10b031[_0xdace('0x36')][_0xdace('0x43')]){_0x5f1732[_0xdace('0x40')]=_[_0xdace('0x41')](_0x5f1732['where'],{'$or':_['map'](_0x5f1732[_0xdace('0x3a')],function(_0x5df15c){var _0x34f6d3={};_0x34f6d3[_0x5df15c]={'$like':'%'+_0x10b031[_0xdace('0x36')][_0xdace('0x43')]+'%'};return _0x34f6d3;})});}_0x5f1732=_[_0xdace('0x41')]({},_0x5f1732,_0x10b031[_0xdace('0x44')]);return _0x5e320a[_0xdace('0x65')](_0x5f1732);}})[_0xdace('0x26')](function(_0x4f83f3){if(_0x4f83f3){_0x1e3bbf=_0x4f83f3['length'];if(!_0x10b031[_0xdace('0x36')][_0xdace('0x3c')](_0xdace('0x3d'))){_0x5f1732[_0xdace('0x1f')]=qs['limit'](_0x10b031[_0xdace('0x36')][_0xdace('0x1f')]);_0x5f1732[_0xdace('0x1d')]=qs['offset'](_0x10b031[_0xdace('0x36')][_0xdace('0x1d')]);}return _0x5e320a[_0xdace('0x65')](_0x5f1732);}})[_0xdace('0x26')](function(_0x5b743d){if(_0x5b743d){return _0x5b743d?{'count':_0x1e3bbf,'rows':_0x5b743d}:null;}})['then'](respondWithResult(_0x1fe5a3,null))['catch'](handleError(_0x1fe5a3,null));};exports[_0xdace('0x67')]=function(_0x5be3c8,_0x292807,_0x260379){var _0x192706=_0x5be3c8[_0xdace('0x55')][_0xdace('0x68')];return db[_0xdace('0x66')]['findAll']({'where':{'id':_0x192706},'attributes':['id'],'include':[{'model':db['User'],'as':_0xdace('0x69'),'attributes':['id',_0xdace('0x2d'),_0xdace('0x6a'),_0xdace('0x6b'),_0xdace('0x6c')],'raw':!![]}]})['then'](function(_0x5bb493){if(_0x5bb493){var _0x382ff1=_[_0xdace('0x6d')](_0x5bb493,function(_0x3f5145){var _0x444edd=_0x3f5145[_0xdace('0x28')]({'plain':!![]});return _0x444edd[_0xdace('0x69')];});return db[_0xdace('0x30')]['find']({'where':{'id':_0x5be3c8[_0xdace('0x4a')]['id']}})[_0xdace('0x26')](function(_0x91db2a){return db[_0xdace('0x6e')]['transaction'](function(_0x3694c0){return _0x91db2a[_0xdace('0x67')](_0x192706,{'transaction':_0x3694c0})[_0xdace('0x26')](function(){return BPromise[_0xdace('0x6f')](_0x382ff1,function(_0x349561){return db[_0xdace('0x59')][_0xdace('0x70')]({'where':{'UserId':_0x349561['id'],'WhatsappQueueId':_0x5be3c8['params']['id']},'transaction':_0x3694c0});});})[_0xdace('0x26')](function(){_0x382ff1['forEach'](function(_0x524d9f){socket[_0xdace('0x71')]('userWhatsappQueue:save',{'UserId':_0x524d9f['id'],'WhatsappQueueId':_0x91db2a['id']});});});});});}})['then'](respondWithStatusCode(_0x292807,null))['catch'](handleError(_0x292807,null));};exports[_0xdace('0x72')]=function(_0x505750,_0x46e971,_0x5b0151){return db[_0xdace('0x66')]['findAll']({'where':{'id':_0x505750[_0xdace('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0xdace('0x5d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xdace('0x26')](handleEntityNotFound(_0x46e971,null))[_0xdace('0x26')](function(_0x979dcc){var _0x732eeb=_[_0xdace('0x35')](_0x979dcc,'id');var _0x154676=[];var _0x33fbd3=[];var _0x29f565=squel[_0xdace('0x73')]();_0x29f565['field'](_0xdace('0x74'))[_0xdace('0x75')]('team_has_whatsapp_queues','tq')[_0xdace('0x76')](_0xdace('0x77'),'ut',_0xdace('0x78'))['where'](_0xdace('0x79'),_0x505750['params']['id']);for(var _0x3b7f87=0x0;_0x3b7f87<_0x979dcc[_0xdace('0x3b')];_0x3b7f87+=0x1){let _0x5b8814=_0x979dcc[_0x3b7f87];for(var _0x48cccc=0x0;_0x48cccc<_0x5b8814[_0xdace('0x69')]['length'];_0x48cccc+=0x1){let _0x4b499d=_0x5b8814[_0xdace('0x69')][_0x48cccc];var _0x2051a4=_0x29f565['clone']();_0x2051a4[_0xdace('0x40')](_0xdace('0x7a'),_0x4b499d['id']);_0x33fbd3[_0xdace('0x7b')](db[_0xdace('0x6e')][_0xdace('0x36')](_0x2051a4[_0xdace('0x7c')](),{'type':db[_0xdace('0x6e')]['QueryTypes']['SELECT']})[_0xdace('0x26')](function(_0x486db0){if(_0x486db0[_0xdace('0x3b')]===0x1){return _0x4b499d['id'];}else{var _0x2e8aa7=_['every'](_[_0xdace('0x35')](_0x486db0,_0xdace('0x7d')),function(_0x2d4277){return _[_0xdace('0x7e')](_0x732eeb,_0x2d4277);});if(_0x2e8aa7){return _0x4b499d['id'];}}}));}}return BPromise[_0xdace('0x7f')](_0x33fbd3)[_0xdace('0x26')](function(_0x4fafcd){_0x154676=_(_0x154676)[_0xdace('0x80')](_0x4fafcd)[_0xdace('0x81')]()[_0xdace('0x82')]();return db[_0xdace('0x30')][_0xdace('0x52')]({'where':{'id':_0x505750[_0xdace('0x4a')]['id']}})[_0xdace('0x26')](function(_0x5bd971){return db['sequelize']['transaction'](function(_0xf40419){return _0x5bd971[_0xdace('0x72')](_0x505750['query'][_0xdace('0x68')],{'transaction':_0xf40419})[_0xdace('0x26')](function(){if(!_[_0xdace('0x83')](_0x154676)){return _0x5bd971[_0xdace('0x84')](_0x154676,{'transaction':_0xf40419});}})[_0xdace('0x26')](function(){_0x154676['forEach'](function(_0x4ae55d){socket[_0xdace('0x71')](_0xdace('0x85'),{'UserId':_0x4ae55d,'WhatsappQueueId':_0x5bd971['id']});});});});});});})[_0xdace('0x26')](respondWithStatusCode(_0x46e971,null))['catch'](handleError(_0x46e971,null));};exports['addAgents']=function(_0x31aa74,_0x28aa5e,_0x3b3c59){return db['WhatsappQueue']['find']({'where':{'id':_0x31aa74[_0xdace('0x4a')]['id']}})[_0xdace('0x26')](handleEntityNotFound(_0x28aa5e,null))[_0xdace('0x26')](function(_0x7a852e){if(_0x7a852e){return _0x7a852e[_0xdace('0x86')](_0x31aa74[_0xdace('0x55')]['ids'],_[_0xdace('0x87')](_0x31aa74[_0xdace('0x55')],['ids','id'])||{})[_0xdace('0x88')](function(_0xa2de63){for(var _0x70bdf6=0x0;_0x70bdf6<_0x31aa74['body']['ids'][_0xdace('0x3b')];_0x70bdf6+=0x1){socket[_0xdace('0x71')](_0xdace('0x89'),{'UserId':Number(_0x31aa74[_0xdace('0x55')][_0xdace('0x68')][_0x70bdf6]),'WhatsappQueueId':Number(_0x31aa74[_0xdace('0x4a')]['id'])});}return _0xa2de63;});}})['then'](respondWithResult(_0x28aa5e,null))[_0xdace('0x48')](handleError(_0x28aa5e,null));};exports[_0xdace('0x84')]=function(_0xc4bff3,_0x3da8d6,_0x24f809){return db[_0xdace('0x30')]['find']({'where':{'id':_0xc4bff3[_0xdace('0x4a')]['id']}})[_0xdace('0x26')](handleEntityNotFound(_0x3da8d6,null))[_0xdace('0x26')](function(_0xae80ea){if(_0xae80ea){return _0xae80ea[_0xdace('0x84')](_0xc4bff3[_0xdace('0x36')][_0xdace('0x68')])[_0xdace('0x26')](function(){if(_[_0xdace('0x8a')](_0xc4bff3[_0xdace('0x36')]['ids'])){for(var _0x5571a7=0x0;_0x5571a7<_0xc4bff3['query'][_0xdace('0x68')][_0xdace('0x3b')];_0x5571a7+=0x1){socket['emit'](_0xdace('0x85'),{'UserId':Number(_0xc4bff3[_0xdace('0x36')][_0xdace('0x68')][_0x5571a7]),'WhatsappQueueId':Number(_0xc4bff3[_0xdace('0x4a')]['id'])});}}else{socket[_0xdace('0x71')]('userWhatsappQueue:remove',{'UserId':Number(_0xc4bff3['query']['ids']),'WhatsappQueueId':Number(_0xc4bff3[_0xdace('0x4a')]['id'])});}});}})[_0xdace('0x26')](respondWithStatusCode(_0x3da8d6,null))[_0xdace('0x48')](handleError(_0x3da8d6,null));};exports[_0xdace('0x8b')]=function(_0xf48502,_0x36470a,_0x52ece7){var _0xe8bc03={};var _0x5a2d4b={};var _0x2f32af;var _0x3a83e1;return db['WhatsappQueue']['findOne']({'where':{'id':_0xf48502[_0xdace('0x4a')]['id']}})['then'](handleEntityNotFound(_0x36470a,null))[_0xdace('0x26')](function(_0x2e3014){if(_0x2e3014){_0x2f32af=_0x2e3014;_0x5a2d4b[_0xdace('0x34')]=_['keys'](db['User'][_0xdace('0x4b')]);_0x5a2d4b['query']=_['keys'](_0xf48502[_0xdace('0x36')]);_0x5a2d4b['filters']=_['intersection'](_0x5a2d4b[_0xdace('0x34')],_0x5a2d4b['query']);_0xe8bc03['attributes']=_[_0xdace('0x39')](_0x5a2d4b[_0xdace('0x34')],qs[_0xdace('0x4c')](_0xf48502[_0xdace('0x36')][_0xdace('0x4c')]));_0xe8bc03[_0xdace('0x3a')]=_0xe8bc03['attributes'][_0xdace('0x3b')]?_0xe8bc03[_0xdace('0x3a')]:_0x5a2d4b[_0xdace('0x34')];_0xe8bc03['order']=qs[_0xdace('0x3f')](_0xf48502[_0xdace('0x36')][_0xdace('0x3f')]);_0xe8bc03['where']=qs['filters'](_[_0xdace('0x5a')](_0xf48502[_0xdace('0x36')],_0x5a2d4b[_0xdace('0x38')]));if(_0xf48502['query'][_0xdace('0x43')]){_0xe8bc03[_0xdace('0x40')]=_[_0xdace('0x41')](_0xe8bc03[_0xdace('0x40')],{'$or':_[_0xdace('0x35')](_0xe8bc03[_0xdace('0x3a')],function(_0x24df40){var _0xa7fea={};_0xa7fea[_0x24df40]={'$like':'%'+_0xf48502[_0xdace('0x36')]['filter']+'%'};return _0xa7fea;})});}_0xe8bc03=_[_0xdace('0x41')]({},_0xe8bc03,_0xf48502[_0xdace('0x44')]);return _0x2f32af[_0xdace('0x8b')](_0xe8bc03);}})[_0xdace('0x26')](function(_0x9b6c){if(_0x9b6c){_0x3a83e1=_0x9b6c['length'];if(!_0xf48502[_0xdace('0x36')][_0xdace('0x3c')](_0xdace('0x3d'))){_0xe8bc03[_0xdace('0x1f')]=qs[_0xdace('0x1f')](_0xf48502[_0xdace('0x36')][_0xdace('0x1f')]);_0xe8bc03[_0xdace('0x1d')]=qs[_0xdace('0x1d')](_0xf48502[_0xdace('0x36')]['offset']);}return _0x2f32af['getAgents'](_0xe8bc03);}})[_0xdace('0x26')](function(_0x3cf959){if(_0x3cf959){return _0x3cf959?{'count':_0x3a83e1,'rows':_0x3cf959}:null;}})[_0xdace('0x26')](respondWithResult(_0x36470a,null))['catch'](handleError(_0x36470a,null));};
\ No newline at end of file
+var _0xfeee=['options','includeAll','findAll','rows','catch','show','filters','fields','include','create','body','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','nolimit','WhatsappQueueId','UserWhatsappQueue','User','UserId','agent','whatsappPause','updatedAt','createdAt','format','findOne','Team','getTeams','ids','online','voicePause','interface','Agents','transaction','each','forEach','userWhatsappQueue:save','field','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','sequelize','QueryTypes','every','TeamId','includes','all','compact','value','removeTeams','removeAgents','emit','addAgents','omit','spread','isArray','userWhatsappQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','WhatsappQueues','UserProfileResource','end','error','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type'];(function(_0x57c13e,_0x3b4360){var _0x4eba44=function(_0x4d0d15){while(--_0x4d0d15){_0x57c13e['push'](_0x57c13e['shift']());}};_0x4eba44(++_0x3b4360);}(_0xfeee,0xd0));var _0xefee=function(_0x3f1305,_0x9ade43){_0x3f1305=_0x3f1305-0x0;var _0x1e79ef=_0xfeee[_0x3f1305];return _0x1e79ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xefee('0x0'));var zipdir=require(_0xefee('0x1'));var jsonpatch=require(_0xefee('0x2'));var rp=require('request-promise');var moment=require(_0xefee('0x3'));var BPromise=require(_0xefee('0x4'));var Mustache=require(_0xefee('0x5'));var util=require('util');var path=require(_0xefee('0x6'));var sox=require(_0xefee('0x7'));var csv=require(_0xefee('0x8'));var ejs=require(_0xefee('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xefee('0xa'));var squel=require(_0xefee('0xb'));var crypto=require('crypto');var jsforce=require(_0xefee('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xefee('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xefee('0xd'));var qs=require(_0xefee('0xe'));var as=require(_0xefee('0xf'));var hardwareService=require(_0xefee('0x10'));var logger=require(_0xefee('0x11'))('api');var utils=require(_0xefee('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xefee('0x13'));var db=require(_0xefee('0x14'))['db'];config[_0xefee('0x15')]=_[_0xefee('0x16')](config['redis'],{'host':_0xefee('0x17'),'port':0x18eb});var socket=require(_0xefee('0x18'))(new Redis(config[_0xefee('0x15')]));require(_0xefee('0x19'))[_0xefee('0x1a')](socket);function respondWithStatusCode(_0x2abdc7,_0x4ee0d9){_0x4ee0d9=_0x4ee0d9||0xcc;return function(_0x546ae6){if(_0x546ae6){return _0x2abdc7[_0xefee('0x1b')](_0x4ee0d9);}return _0x2abdc7[_0xefee('0x1c')](_0x4ee0d9)['end']();};}function respondWithResult(_0xbddc3b,_0x2f7301){_0x2f7301=_0x2f7301||0xc8;return function(_0x2f9a97){if(_0x2f9a97){return _0xbddc3b[_0xefee('0x1c')](_0x2f7301)[_0xefee('0x1d')](_0x2f9a97);}};}function respondWithFilteredResult(_0x271191,_0x46a167){return function(_0x304784){if(_0x304784){var _0x1c6d3f=typeof _0x46a167[_0xefee('0x1e')]===_0xefee('0x1f')&&typeof _0x46a167[_0xefee('0x20')]==='undefined';var _0x342cae=_0x304784[_0xefee('0x21')];var _0x1a0638=_0x1c6d3f?0x0:_0x46a167[_0xefee('0x1e')];var _0x5e699f=_0x1c6d3f?_0x304784['count']:_0x46a167[_0xefee('0x1e')]+_0x46a167['limit'];var _0x20e997;if(_0x5e699f>=_0x342cae){_0x5e699f=_0x342cae;_0x20e997=0xc8;}else{_0x20e997=0xce;}_0x271191[_0xefee('0x1c')](_0x20e997);return _0x271191['set']('Content-Range',_0x1a0638+'-'+_0x5e699f+'/'+_0x342cae)[_0xefee('0x1d')](_0x304784);}return null;};}function patchUpdates(_0x519279){return function(_0x11f66e){try{jsonpatch[_0xefee('0x22')](_0x11f66e,_0x519279,!![]);}catch(_0x4bbbf0){return BPromise[_0xefee('0x23')](_0x4bbbf0);}return _0x11f66e[_0xefee('0x24')]();};}function saveUpdates(_0x2bae26,_0x3c7e78){return function(_0x319d58){if(_0x319d58){return _0x319d58[_0xefee('0x25')](_0x2bae26)[_0xefee('0x26')](function(_0x119518){return _0x119518;});}return null;};}function removeEntity(_0x264f65,_0xa30c4d){return function(_0x560e6a){if(_0x560e6a){return _0x560e6a[_0xefee('0x27')]()[_0xefee('0x26')](function(){var _0x12f59d=_0x560e6a['get']({'plain':!![]});var _0x497408=_0xefee('0x28');return db[_0xefee('0x29')][_0xefee('0x27')]({'where':{'type':_0x497408,'resourceId':_0x12f59d['id']}})['then'](function(){return _0x560e6a;});})['then'](function(){_0x264f65[_0xefee('0x1c')](0xcc)[_0xefee('0x2a')]();});}};}function handleEntityNotFound(_0x50fd66,_0x4b47db){return function(_0x3039ab){if(!_0x3039ab){_0x50fd66[_0xefee('0x1b')](0x194);}return _0x3039ab;};}function handleError(_0x4dc891,_0x3e587e){_0x3e587e=_0x3e587e||0x1f4;return function(_0x3c65a4){logger[_0xefee('0x2b')](_0x3c65a4['stack']);if(_0x3c65a4[_0xefee('0x2c')]){delete _0x3c65a4[_0xefee('0x2c')];}_0x4dc891[_0xefee('0x1c')](_0x3e587e)[_0xefee('0x2d')](_0x3c65a4);};}exports[_0xefee('0x2e')]=function(_0x2c2e7d,_0xfb758b){var _0x43578b={},_0x58dbbc={},_0x14e311={'count':0x0,'rows':[]};var _0x451aa4=_[_0xefee('0x2f')](db[_0xefee('0x30')][_0xefee('0x31')],function(_0x318771){return{'name':_0x318771[_0xefee('0x32')],'type':_0x318771['type'][_0xefee('0x33')]};});_0x58dbbc[_0xefee('0x34')]=_[_0xefee('0x2f')](_0x451aa4,_0xefee('0x2c'));_0x58dbbc[_0xefee('0x35')]=_[_0xefee('0x36')](_0x2c2e7d['query']);_0x58dbbc['filters']=_[_0xefee('0x37')](_0x58dbbc['model'],_0x58dbbc[_0xefee('0x35')]);_0x43578b[_0xefee('0x38')]=_['intersection'](_0x58dbbc['model'],qs['fields'](_0x2c2e7d[_0xefee('0x35')]['fields']));_0x43578b['attributes']=_0x43578b[_0xefee('0x38')][_0xefee('0x39')]?_0x43578b[_0xefee('0x38')]:_0x58dbbc[_0xefee('0x34')];if(!_0x2c2e7d[_0xefee('0x35')][_0xefee('0x3a')]('nolimit')){_0x43578b[_0xefee('0x20')]=qs['limit'](_0x2c2e7d['query']['limit']);_0x43578b[_0xefee('0x1e')]=qs[_0xefee('0x1e')](_0x2c2e7d[_0xefee('0x35')][_0xefee('0x1e')]);}_0x43578b[_0xefee('0x3b')]=qs['sort'](_0x2c2e7d[_0xefee('0x35')][_0xefee('0x3c')]);_0x43578b[_0xefee('0x3d')]=qs['filters'](_[_0xefee('0x3e')](_0x2c2e7d[_0xefee('0x35')],_0x58dbbc['filters']),_0x451aa4);if(_0x2c2e7d[_0xefee('0x35')][_0xefee('0x3f')]){_0x43578b['where']=_[_0xefee('0x40')](_0x43578b['where'],{'$or':_['map'](_0x451aa4,function(_0x4ec30f){if(_0x4ec30f[_0xefee('0x41')]!=='VIRTUAL'){var _0x1e8cde={};_0x1e8cde[_0x4ec30f[_0xefee('0x2c')]]={'$like':'%'+_0x2c2e7d[_0xefee('0x35')][_0xefee('0x3f')]+'%'};return _0x1e8cde;}})});}_0x43578b=_[_0xefee('0x40')]({},_0x43578b,_0x2c2e7d[_0xefee('0x42')]);var _0xb1bf2={'where':_0x43578b[_0xefee('0x3d')]};return db['WhatsappQueue'][_0xefee('0x21')](_0xb1bf2)[_0xefee('0x26')](function(_0x404b90){_0x14e311[_0xefee('0x21')]=_0x404b90;if(_0x2c2e7d[_0xefee('0x35')][_0xefee('0x43')]){_0x43578b['include']=[{'all':!![]}];}return db[_0xefee('0x30')][_0xefee('0x44')](_0x43578b);})[_0xefee('0x26')](function(_0x1152a6){_0x14e311[_0xefee('0x45')]=_0x1152a6;return _0x14e311;})['then'](respondWithFilteredResult(_0xfb758b,_0x43578b))[_0xefee('0x46')](handleError(_0xfb758b,null));};exports[_0xefee('0x47')]=function(_0x422a27,_0x278c91){var _0x15b50b={'raw':!![],'where':{'id':_0x422a27['params']['id']}},_0x33ec6c={};_0x33ec6c['model']=_[_0xefee('0x36')](db['WhatsappQueue']['rawAttributes']);_0x33ec6c[_0xefee('0x35')]=_[_0xefee('0x36')](_0x422a27[_0xefee('0x35')]);_0x33ec6c[_0xefee('0x48')]=_[_0xefee('0x37')](_0x33ec6c[_0xefee('0x34')],_0x33ec6c[_0xefee('0x35')]);_0x15b50b[_0xefee('0x38')]=_[_0xefee('0x37')](_0x33ec6c['model'],qs[_0xefee('0x49')](_0x422a27[_0xefee('0x35')]['fields']));_0x15b50b['attributes']=_0x15b50b['attributes']['length']?_0x15b50b[_0xefee('0x38')]:_0x33ec6c['model'];if(_0x422a27[_0xefee('0x35')]['includeAll']){_0x15b50b[_0xefee('0x4a')]=[{'all':!![]}];}_0x15b50b=_[_0xefee('0x40')]({},_0x15b50b,_0x422a27[_0xefee('0x42')]);return db[_0xefee('0x30')]['find'](_0x15b50b)[_0xefee('0x26')](handleEntityNotFound(_0x278c91,null))[_0xefee('0x26')](respondWithResult(_0x278c91,null))['catch'](handleError(_0x278c91,null));};exports[_0xefee('0x4b')]=function(_0x4a00f1,_0x2a7c93){return db['WhatsappQueue'][_0xefee('0x4b')](_0x4a00f1[_0xefee('0x4c')],{})[_0xefee('0x26')](function(_0xb8bf){var _0x395233=_0x4a00f1[_0xefee('0x4d')][_0xefee('0x4e')]({'plain':!![]});if(!_0x395233)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x395233[_0xefee('0x4f')]==='user'){var _0x243f81=_0xb8bf[_0xefee('0x4e')]({'plain':!![]});var _0x124bc8=_0xefee('0x28');return db[_0xefee('0x50')][_0xefee('0x51')]({'where':{'name':_0x124bc8,'userProfileId':_0x395233[_0xefee('0x52')]},'raw':!![]})['then'](function(_0x4ee365){if(_0x4ee365&&_0x4ee365[_0xefee('0x53')]===0x0){return db['UserProfileResource'][_0xefee('0x4b')]({'name':_0x243f81['name'],'resourceId':_0x243f81['id'],'type':_0x4ee365[_0xefee('0x2c')],'sectionId':_0x4ee365['id']},{})[_0xefee('0x26')](function(){return _0xb8bf;});}else{return _0xb8bf;}})['catch'](function(_0x3bd4e8){logger['error'](_0xefee('0x54'),_0x3bd4e8);throw _0x3bd4e8;});}return _0xb8bf;})[_0xefee('0x26')](respondWithResult(_0x2a7c93,0xc9))[_0xefee('0x46')](handleError(_0x2a7c93,null));};exports[_0xefee('0x25')]=function(_0x5278cd,_0x399193){if(_0x5278cd[_0xefee('0x4c')]['id']){delete _0x5278cd[_0xefee('0x4c')]['id'];}return db[_0xefee('0x30')][_0xefee('0x51')]({'where':{'id':_0x5278cd[_0xefee('0x55')]['id']}})['then'](handleEntityNotFound(_0x399193,null))[_0xefee('0x26')](saveUpdates(_0x5278cd[_0xefee('0x4c')],null))[_0xefee('0x26')](respondWithResult(_0x399193,null))[_0xefee('0x46')](handleError(_0x399193,null));};exports['destroy']=function(_0x251f65,_0x46639f){return db[_0xefee('0x30')][_0xefee('0x51')]({'where':{'id':_0x251f65[_0xefee('0x55')]['id']}})[_0xefee('0x26')](handleEntityNotFound(_0x46639f,null))[_0xefee('0x26')](removeEntity(_0x46639f,null))['catch'](handleError(_0x46639f,null));};exports[_0xefee('0x56')]=function(_0x358e42,_0x222e81){return db[_0xefee('0x30')][_0xefee('0x56')]()['then'](respondWithResult(_0x222e81,null))['catch'](handleError(_0x222e81,null));};exports[_0xefee('0x57')]=function(_0x5e2d5a,_0x40406e,_0x46d02a){var _0xbd5dcd={'raw':!![],'where':{}},_0x4ed027={},_0x363f48;return db['WhatsappQueue']['findOne']({'where':{'id':_0x5e2d5a[_0xefee('0x55')]['id']}})[_0xefee('0x26')](handleEntityNotFound(_0x40406e,null))['then'](function(_0x29e2d6){if(_0x29e2d6){_0x363f48=_0x29e2d6[_0xefee('0x4e')]({'plain':!![]});_0x4ed027['model']=_['keys'](db['UserWhatsappQueue'][_0xefee('0x31')]);_0x4ed027[_0xefee('0x35')]=_[_0xefee('0x36')](_0x5e2d5a[_0xefee('0x35')]);_0x4ed027['filters']=_[_0xefee('0x37')](_0x4ed027[_0xefee('0x34')],_0x4ed027[_0xefee('0x35')]);_0xbd5dcd[_0xefee('0x38')]=_['intersection'](_0x4ed027[_0xefee('0x34')],qs['fields'](_0x5e2d5a[_0xefee('0x35')][_0xefee('0x49')]));_0xbd5dcd['attributes']=_0xbd5dcd['attributes'][_0xefee('0x39')]?_0xbd5dcd[_0xefee('0x38')]:_0x4ed027[_0xefee('0x34')];if(!_0x5e2d5a[_0xefee('0x35')][_0xefee('0x3a')](_0xefee('0x58'))){_0xbd5dcd[_0xefee('0x20')]=qs[_0xefee('0x20')](_0x5e2d5a['query'][_0xefee('0x20')]);_0xbd5dcd[_0xefee('0x1e')]=qs[_0xefee('0x1e')](_0x5e2d5a[_0xefee('0x35')][_0xefee('0x1e')]);}_0xbd5dcd[_0xefee('0x3b')]=qs['sort'](_0x5e2d5a[_0xefee('0x35')][_0xefee('0x3c')]);_0xbd5dcd['where']=qs[_0xefee('0x48')](_[_0xefee('0x3e')](_0x5e2d5a[_0xefee('0x35')],_0x4ed027['filters']));_0xbd5dcd['where'][_0xefee('0x59')]=_0x29e2d6['id'];if(_0x5e2d5a[_0xefee('0x35')][_0xefee('0x3f')]){_0xbd5dcd[_0xefee('0x3d')]=_['merge'](_0xbd5dcd[_0xefee('0x3d')],{'$or':_['map'](_0xbd5dcd['attributes'],function(_0x105179){var _0x4d13ab={};_0x4d13ab[_0x105179]={'$like':'%'+_0x5e2d5a[_0xefee('0x35')][_0xefee('0x3f')]+'%'};return _0x4d13ab;})});}_0xbd5dcd=_[_0xefee('0x40')]({},_0xbd5dcd,_0x5e2d5a[_0xefee('0x42')]);return db[_0xefee('0x5a')][_0xefee('0x44')](_0xbd5dcd);}})[_0xefee('0x26')](function(_0x4e429e){if(_0x4e429e){return db[_0xefee('0x5b')]['findAndCountAll']({'where':{'id':_[_0xefee('0x2f')](_0x4e429e,_0xefee('0x5c')),'role':_0xefee('0x5d')},'attributes':['id',_0xefee('0x2c'),_0xefee('0x5e'),_0xefee('0x5f'),_0xefee('0x60')]});}})['then'](function(_0x4c2fe1){if(_0x4c2fe1){return{'count':_0x4c2fe1[_0xefee('0x21')],'rows':_[_0xefee('0x2f')](_0x4c2fe1[_0xefee('0x45')],function(_0x5e8ef4){return{'membername':_0x5e8ef4[_0xefee('0x2c')],'UserId':_0x5e8ef4['id'],'queue_name':_0x363f48[_0xefee('0x2c')],'WhatsappQueueId':_0x363f48['id'],'interface':util[_0xefee('0x61')]('%s/%s','SIP',_0x5e8ef4[_0xefee('0x2c')]),'penalty':0x0,'paused':_0x5e8ef4[_0xefee('0x5e')],'createdAt':_0x5e8ef4[_0xefee('0x60')],'updatedAt':_0x5e8ef4['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xefee('0x26')](respondWithFilteredResult(_0x40406e,_0xbd5dcd))['catch'](handleError(_0x40406e,null));};exports['getTeams']=function(_0x101c56,_0x28a82b,_0x2d87b5){var _0x3080e7={};var _0x40b469={};var _0x212685;var _0x43db1c;return db[_0xefee('0x30')][_0xefee('0x62')]({'where':{'id':_0x101c56['params']['id']}})['then'](handleEntityNotFound(_0x28a82b,null))[_0xefee('0x26')](function(_0x428615){if(_0x428615){_0x212685=_0x428615;_0x40b469[_0xefee('0x34')]=_[_0xefee('0x36')](db[_0xefee('0x63')][_0xefee('0x31')]);_0x40b469['query']=_[_0xefee('0x36')](_0x101c56[_0xefee('0x35')]);_0x40b469['filters']=_[_0xefee('0x37')](_0x40b469[_0xefee('0x34')],_0x40b469[_0xefee('0x35')]);_0x3080e7[_0xefee('0x38')]=_[_0xefee('0x37')](_0x40b469[_0xefee('0x34')],qs['fields'](_0x101c56[_0xefee('0x35')][_0xefee('0x49')]));_0x3080e7[_0xefee('0x38')]=_0x3080e7[_0xefee('0x38')][_0xefee('0x39')]?_0x3080e7[_0xefee('0x38')]:_0x40b469[_0xefee('0x34')];_0x3080e7[_0xefee('0x3b')]=qs[_0xefee('0x3c')](_0x101c56[_0xefee('0x35')][_0xefee('0x3c')]);_0x3080e7['where']=qs[_0xefee('0x48')](_[_0xefee('0x3e')](_0x101c56['query'],_0x40b469[_0xefee('0x48')]));if(_0x101c56[_0xefee('0x35')]['filter']){_0x3080e7['where']=_[_0xefee('0x40')](_0x3080e7[_0xefee('0x3d')],{'$or':_[_0xefee('0x2f')](_0x3080e7[_0xefee('0x38')],function(_0x7fe668){var _0x166036={};_0x166036[_0x7fe668]={'$like':'%'+_0x101c56[_0xefee('0x35')][_0xefee('0x3f')]+'%'};return _0x166036;})});}_0x3080e7=_[_0xefee('0x40')]({},_0x3080e7,_0x101c56['options']);return _0x212685[_0xefee('0x64')](_0x3080e7);}})['then'](function(_0x3b1d36){if(_0x3b1d36){_0x43db1c=_0x3b1d36[_0xefee('0x39')];if(!_0x101c56[_0xefee('0x35')][_0xefee('0x3a')](_0xefee('0x58'))){_0x3080e7[_0xefee('0x20')]=qs[_0xefee('0x20')](_0x101c56[_0xefee('0x35')][_0xefee('0x20')]);_0x3080e7['offset']=qs[_0xefee('0x1e')](_0x101c56[_0xefee('0x35')]['offset']);}return _0x212685[_0xefee('0x64')](_0x3080e7);}})[_0xefee('0x26')](function(_0x2ef8f3){if(_0x2ef8f3){return _0x2ef8f3?{'count':_0x43db1c,'rows':_0x2ef8f3}:null;}})[_0xefee('0x26')](respondWithResult(_0x28a82b,null))['catch'](handleError(_0x28a82b,null));};exports['addTeams']=function(_0x56468a,_0x220ec4,_0x4dd743){var _0xfb1f5c=_0x56468a[_0xefee('0x4c')][_0xefee('0x65')];return db[_0xefee('0x63')][_0xefee('0x44')]({'where':{'id':_0xfb1f5c},'attributes':['id'],'include':[{'model':db[_0xefee('0x5b')],'as':'Agents','attributes':['id',_0xefee('0x2c'),_0xefee('0x66'),_0xefee('0x67'),_0xefee('0x68')],'raw':!![]}]})['then'](function(_0x44f275){if(_0x44f275){var _0x17cd38=_['flatMap'](_0x44f275,function(_0x52bbac){var _0x7f3ceb=_0x52bbac['get']({'plain':!![]});return _0x7f3ceb[_0xefee('0x69')];});return db[_0xefee('0x30')]['find']({'where':{'id':_0x56468a[_0xefee('0x55')]['id']}})['then'](function(_0x2e8f96){return db['sequelize'][_0xefee('0x6a')](function(_0x5c63a1){return _0x2e8f96['addTeams'](_0xfb1f5c,{'transaction':_0x5c63a1})[_0xefee('0x26')](function(){return BPromise[_0xefee('0x6b')](_0x17cd38,function(_0x229eaa){return db[_0xefee('0x5a')]['findOrCreate']({'where':{'UserId':_0x229eaa['id'],'WhatsappQueueId':_0x56468a[_0xefee('0x55')]['id']},'transaction':_0x5c63a1});});})['then'](function(){_0x17cd38[_0xefee('0x6c')](function(_0x1aa83a){socket['emit'](_0xefee('0x6d'),{'UserId':_0x1aa83a['id'],'WhatsappQueueId':_0x2e8f96['id']});});});});});}})[_0xefee('0x26')](respondWithStatusCode(_0x220ec4,null))['catch'](handleError(_0x220ec4,null));};exports['removeTeams']=function(_0x63951d,_0x6d1ec1,_0x34e477){return db['Team'][_0xefee('0x44')]({'where':{'id':_0x63951d[_0xefee('0x35')][_0xefee('0x65')]},'attributes':['id'],'include':[{'model':db[_0xefee('0x5b')],'as':_0xefee('0x69'),'attributes':['id'],'raw':!![]}]})[_0xefee('0x26')](handleEntityNotFound(_0x6d1ec1,null))[_0xefee('0x26')](function(_0x3601bb){var _0x33cd68=_[_0xefee('0x2f')](_0x3601bb,'id');var _0x535563=[];var _0x43afd3=[];var _0x133f37=squel['select']();_0x133f37[_0xefee('0x6e')]('tq.TeamId')[_0xefee('0x6f')](_0xefee('0x70'),'tq')[_0xefee('0x71')](_0xefee('0x72'),'ut',_0xefee('0x73'))[_0xefee('0x3d')]('WhatsappQueueId\x20=\x20?',_0x63951d['params']['id']);for(var _0x30e143=0x0;_0x30e143<_0x3601bb[_0xefee('0x39')];_0x30e143+=0x1){let _0x4f15ad=_0x3601bb[_0x30e143];for(var _0x3148f8=0x0;_0x3148f8<_0x4f15ad[_0xefee('0x69')][_0xefee('0x39')];_0x3148f8+=0x1){let _0x425da0=_0x4f15ad[_0xefee('0x69')][_0x3148f8];var _0x52035f=_0x133f37[_0xefee('0x74')]();_0x52035f[_0xefee('0x3d')](_0xefee('0x75'),_0x425da0['id']);_0x43afd3[_0xefee('0x76')](db['sequelize'][_0xefee('0x35')](_0x52035f[_0xefee('0x77')](),{'type':db[_0xefee('0x78')][_0xefee('0x79')]['SELECT']})[_0xefee('0x26')](function(_0x1ae0d0){if(_0x1ae0d0[_0xefee('0x39')]===0x1){return _0x425da0['id'];}else{var _0x5414b2=_[_0xefee('0x7a')](_[_0xefee('0x2f')](_0x1ae0d0,_0xefee('0x7b')),function(_0x26c6ba){return _[_0xefee('0x7c')](_0x33cd68,_0x26c6ba);});if(_0x5414b2){return _0x425da0['id'];}}}));}}return BPromise[_0xefee('0x7d')](_0x43afd3)['then'](function(_0x457683){_0x535563=_(_0x535563)['union'](_0x457683)[_0xefee('0x7e')]()[_0xefee('0x7f')]();return db[_0xefee('0x30')][_0xefee('0x51')]({'where':{'id':_0x63951d[_0xefee('0x55')]['id']}})['then'](function(_0x1b7fe7){return db['sequelize'][_0xefee('0x6a')](function(_0x58e0f2){return _0x1b7fe7[_0xefee('0x80')](_0x63951d['query'][_0xefee('0x65')],{'transaction':_0x58e0f2})['then'](function(){if(!_['isEmpty'](_0x535563)){return _0x1b7fe7[_0xefee('0x81')](_0x535563,{'transaction':_0x58e0f2});}})[_0xefee('0x26')](function(){_0x535563['forEach'](function(_0x4c7b95){socket[_0xefee('0x82')]('userWhatsappQueue:remove',{'UserId':_0x4c7b95,'WhatsappQueueId':_0x1b7fe7['id']});});});});});});})[_0xefee('0x26')](respondWithStatusCode(_0x6d1ec1,null))[_0xefee('0x46')](handleError(_0x6d1ec1,null));};exports['addAgents']=function(_0x128583,_0x986b46,_0x3e8313){return db[_0xefee('0x30')][_0xefee('0x51')]({'where':{'id':_0x128583[_0xefee('0x55')]['id']}})[_0xefee('0x26')](handleEntityNotFound(_0x986b46,null))[_0xefee('0x26')](function(_0x479758){if(_0x479758){return _0x479758[_0xefee('0x83')](_0x128583['body'][_0xefee('0x65')],_[_0xefee('0x84')](_0x128583[_0xefee('0x4c')],[_0xefee('0x65'),'id'])||{})[_0xefee('0x85')](function(_0x3470b8){for(var _0xb100c0=0x0;_0xb100c0<_0x128583[_0xefee('0x4c')][_0xefee('0x65')][_0xefee('0x39')];_0xb100c0+=0x1){socket[_0xefee('0x82')](_0xefee('0x6d'),{'UserId':Number(_0x128583[_0xefee('0x4c')]['ids'][_0xb100c0]),'WhatsappQueueId':Number(_0x128583['params']['id'])});}return _0x3470b8;});}})[_0xefee('0x26')](respondWithResult(_0x986b46,null))[_0xefee('0x46')](handleError(_0x986b46,null));};exports['removeAgents']=function(_0x195b18,_0x4f7aa5,_0x569a7f){return db['WhatsappQueue']['find']({'where':{'id':_0x195b18[_0xefee('0x55')]['id']}})[_0xefee('0x26')](handleEntityNotFound(_0x4f7aa5,null))[_0xefee('0x26')](function(_0x32db81){if(_0x32db81){return _0x32db81[_0xefee('0x81')](_0x195b18[_0xefee('0x35')]['ids'])[_0xefee('0x26')](function(){if(_[_0xefee('0x86')](_0x195b18[_0xefee('0x35')][_0xefee('0x65')])){for(var _0x4aa6cb=0x0;_0x4aa6cb<_0x195b18[_0xefee('0x35')][_0xefee('0x65')]['length'];_0x4aa6cb+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x195b18[_0xefee('0x35')][_0xefee('0x65')][_0x4aa6cb]),'WhatsappQueueId':Number(_0x195b18[_0xefee('0x55')]['id'])});}}else{socket['emit'](_0xefee('0x87'),{'UserId':Number(_0x195b18[_0xefee('0x35')]['ids']),'WhatsappQueueId':Number(_0x195b18[_0xefee('0x55')]['id'])});}});}})[_0xefee('0x26')](respondWithStatusCode(_0x4f7aa5,null))[_0xefee('0x46')](handleError(_0x4f7aa5,null));};exports[_0xefee('0x88')]=function(_0x912fa4,_0x1894ef,_0x11f1e7){var _0x5204df={};var _0x4f2b38={};var _0xdc599f;var _0x136973;return db['WhatsappQueue']['findOne']({'where':{'id':_0x912fa4['params']['id']}})[_0xefee('0x26')](handleEntityNotFound(_0x1894ef,null))[_0xefee('0x26')](function(_0x454616){if(_0x454616){_0xdc599f=_0x454616;_0x4f2b38[_0xefee('0x34')]=_[_0xefee('0x36')](db[_0xefee('0x5b')][_0xefee('0x31')]);_0x4f2b38[_0xefee('0x35')]=_[_0xefee('0x36')](_0x912fa4[_0xefee('0x35')]);_0x4f2b38[_0xefee('0x48')]=_[_0xefee('0x37')](_0x4f2b38['model'],_0x4f2b38[_0xefee('0x35')]);_0x5204df[_0xefee('0x38')]=_[_0xefee('0x37')](_0x4f2b38['model'],qs[_0xefee('0x49')](_0x912fa4[_0xefee('0x35')][_0xefee('0x49')]));_0x5204df[_0xefee('0x38')]=_0x5204df[_0xefee('0x38')]['length']?_0x5204df[_0xefee('0x38')]:_0x4f2b38[_0xefee('0x34')];_0x5204df[_0xefee('0x3b')]=qs[_0xefee('0x3c')](_0x912fa4[_0xefee('0x35')][_0xefee('0x3c')]);_0x5204df[_0xefee('0x3d')]=qs['filters'](_[_0xefee('0x3e')](_0x912fa4[_0xefee('0x35')],_0x4f2b38[_0xefee('0x48')]));if(_0x912fa4['query'][_0xefee('0x3f')]){_0x5204df[_0xefee('0x3d')]=_[_0xefee('0x40')](_0x5204df[_0xefee('0x3d')],{'$or':_['map'](_0x5204df['attributes'],function(_0x223034){var _0x595768={};_0x595768[_0x223034]={'$like':'%'+_0x912fa4[_0xefee('0x35')][_0xefee('0x3f')]+'%'};return _0x595768;})});}_0x5204df=_[_0xefee('0x40')]({},_0x5204df,_0x912fa4[_0xefee('0x42')]);return _0xdc599f[_0xefee('0x88')](_0x5204df);}})['then'](function(_0x41fc55){if(_0x41fc55){_0x136973=_0x41fc55[_0xefee('0x39')];if(!_0x912fa4[_0xefee('0x35')][_0xefee('0x3a')](_0xefee('0x58'))){_0x5204df[_0xefee('0x20')]=qs['limit'](_0x912fa4[_0xefee('0x35')][_0xefee('0x20')]);_0x5204df[_0xefee('0x1e')]=qs[_0xefee('0x1e')](_0x912fa4[_0xefee('0x35')][_0xefee('0x1e')]);}return _0xdc599f['getAgents'](_0x5204df);}})[_0xefee('0x26')](function(_0x32c396){if(_0x32c396){return _0x32c396?{'count':_0x136973,'rows':_0x32c396}:null;}})[_0xefee('0x26')](respondWithResult(_0x1894ef,null))[_0xefee('0x46')](handleError(_0x1894ef,null));};
\ No newline at end of file
index 2d36736..03189c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ede=['../../mysqldb','WhatsappQueue','setMaxListeners','save','update','emit','hook'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7ede,0x1a4));var _0xe7ed=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x7ede[_0x1573ea];return _0x51c0e2;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xe7ed('0x0'))['db'][_0xe7ed('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xe7ed('0x2')](0x0);var events={'afterCreate':_0xe7ed('0x3'),'afterUpdate':_0xe7ed('0x4'),'afterDestroy':'remove'};function emitEvent(_0x229814){return function(_0x429429,_0x177fbd,_0x352182){WhatsappQueueEvents[_0xe7ed('0x5')](_0x229814+':'+_0x429429['id'],_0x429429);WhatsappQueueEvents[_0xe7ed('0x5')](_0x229814,_0x429429);_0x352182(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xe7ed('0x6')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0x9b9d=['hook','exports','events','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x4a6b92,_0x53929c){var _0x303f17=function(_0x30a218){while(--_0x30a218){_0x4a6b92['push'](_0x4a6b92['shift']());}};_0x303f17(++_0x53929c);}(_0x9b9d,0x18e));var _0xd9b9=function(_0x456f08,_0x150572){_0x456f08=_0x456f08-0x0;var _0x4a10bc=_0x9b9d[_0x456f08];return _0x4a10bc;};'use strict';var EventEmitter=require(_0xd9b9('0x0'));var WhatsappQueue=require(_0xd9b9('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xd9b9('0x2')](0x0);var events={'afterCreate':_0xd9b9('0x3'),'afterUpdate':_0xd9b9('0x4'),'afterDestroy':'remove'};function emitEvent(_0x56170a){return function(_0x22dbc1,_0x1fd7e8,_0x54e4ab){WhatsappQueueEvents[_0xd9b9('0x5')](_0x56170a+':'+_0x22dbc1['id'],_0x22dbc1);WhatsappQueueEvents[_0xd9b9('0x5')](_0x56170a,_0x22dbc1);_0x54e4ab(null);};}for(var e in events){if(events[_0xd9b9('0x6')](e)){var event=events[e];WhatsappQueue[_0xd9b9('0x7')](e,emitEvent(event));}}module[_0xd9b9('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index 0acf802..a231647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c41=['moment','request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','whatsapp_queues','util','../../config/logger','api'];(function(_0x266618,_0x18f637){var _0x54dbf5=function(_0x1f7985){while(--_0x1f7985){_0x266618['push'](_0x266618['shift']());}};_0x54dbf5(++_0x18f637);}(_0x8c41,0x17d));var _0x18c4=function(_0x14bbcd,_0x3bfa9c){_0x14bbcd=_0x14bbcd-0x0;var _0x2ce3cb=_0x8c41[_0x14bbcd];return _0x2ce3cb;};'use strict';var _=require('lodash');var util=require(_0x18c4('0x0'));var logger=require(_0x18c4('0x1'))(_0x18c4('0x2'));var moment=require(_0x18c4('0x3'));var BPromise=require('bluebird');var rp=require(_0x18c4('0x4'));var fs=require('fs');var path=require(_0x18c4('0x5'));var rimraf=require(_0x18c4('0x6'));var config=require(_0x18c4('0x7'));var attributes=require(_0x18c4('0x8'));module['exports']=function(_0x2dbd75,_0x621721){return _0x2dbd75[_0x18c4('0x9')](_0x18c4('0xa'),attributes,{'tableName':_0x18c4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc088=['../../config/environment','./whatsappQueue.attributes','exports','WhatsappQueue','moment','bluebird','request-promise','rimraf'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xc088,0xec));var _0x8c08=function(_0x5148d2,_0x3dada8){_0x5148d2=_0x5148d2-0x0;var _0x5d7cd3=_0xc088[_0x5148d2];return _0x5d7cd3;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x8c08('0x0'));var BPromise=require(_0x8c08('0x1'));var rp=require(_0x8c08('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8c08('0x3'));var config=require(_0x8c08('0x4'));var attributes=require(_0x8c08('0x5'));module[_0x8c08('0x6')]=function(_0x611750,_0x296c50){return _0x611750['define'](_0x8c08('0x7'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cf0595..2bb12de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x903f=['WhatsappQueue','findAll','options','where','limit','include','map','model','attributes','debug','find','ShowWhatsappQueue','lodash','util','moment','bluebird','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./whatsappQueue.socket','register','request','then','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','info','result','catch','GetWhatsappQueue'];(function(_0x4da7fc,_0x39957c){var _0x2721e3=function(_0x3f7912){while(--_0x3f7912){_0x4da7fc['push'](_0x4da7fc['shift']());}};_0x2721e3(++_0x39957c);}(_0x903f,0x10f));var _0xf903=function(_0x153d1c,_0x1e2034){_0x153d1c=_0x153d1c-0x0;var _0x23f2cd=_0x903f[_0x153d1c];return _0x23f2cd;};'use strict';var _=require(_0xf903('0x0'));var util=require(_0xf903('0x1'));var moment=require(_0xf903('0x2'));var BPromise=require(_0xf903('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('../../config/logger')('rpc');var config=require(_0xf903('0x4'));var jayson=require(_0xf903('0x5'));var client=jayson[_0xf903('0x6')][_0xf903('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf903('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xf903('0x9'))(new Redis(config['redis']));require(_0xf903('0xa'))[_0xf903('0xb')](socket);function respondWithRpcPromise(_0x99f276,_0x48bbe0,_0x4b86f8){return new BPromise(function(_0x39d8f0,_0x3634b1){return client[_0xf903('0xc')](_0x99f276,_0x4b86f8)[_0xf903('0xd')](function(_0x3a2900){logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x48bbe0,_0xf903('0xe'));logger['debug'](_0xf903('0xf'),_0x48bbe0,_0xf903('0xe'),JSON[_0xf903('0x10')](_0x3a2900));if(_0x3a2900[_0xf903('0x11')]){if(_0x3a2900[_0xf903('0x11')][_0xf903('0x12')]===0x1f4){logger['error'](_0xf903('0x13'),_0x48bbe0,_0x3a2900['error']['message']);return _0x3634b1(_0x3a2900['error']['message']);}logger[_0xf903('0x11')](_0xf903('0x13'),_0x48bbe0,_0x3a2900[_0xf903('0x11')][_0xf903('0x14')]);return _0x39d8f0(_0x3a2900['error']['message']);}else{logger[_0xf903('0x15')](_0xf903('0x13'),_0x48bbe0,_0xf903('0xe'));_0x39d8f0(_0x3a2900[_0xf903('0x16')][_0xf903('0x14')]);}})[_0xf903('0x17')](function(_0x292560){logger[_0xf903('0x11')](_0xf903('0x13'),_0x48bbe0,_0x292560);_0x3634b1(_0x292560);});});}exports[_0xf903('0x18')]=function(_0x488334){var _0x157471=this;return new Promise(function(_0x52e001,_0x4d577b){return db[_0xf903('0x19')][_0xf903('0x1a')]({'raw':_0x488334[_0xf903('0x1b')]?_0x488334['options']['raw']===undefined?!![]:![]:!![],'where':_0x488334[_0xf903('0x1b')]?_0x488334['options'][_0xf903('0x1c')]||null:null,'attributes':_0x488334[_0xf903('0x1b')]?_0x488334[_0xf903('0x1b')]['attributes']||null:null,'limit':_0x488334[_0xf903('0x1b')]?_0x488334[_0xf903('0x1b')][_0xf903('0x1d')]||null:null,'include':_0x488334[_0xf903('0x1b')]?_0x488334[_0xf903('0x1b')][_0xf903('0x1e')]?_[_0xf903('0x1f')](_0x488334[_0xf903('0x1b')][_0xf903('0x1e')],function(_0x242754){return{'model':db[_0x242754[_0xf903('0x20')]],'as':_0x242754['as'],'attributes':_0x242754['attributes'],'include':_0x242754[_0xf903('0x1e')]?_[_0xf903('0x1f')](_0x242754[_0xf903('0x1e')],function(_0x38a4e5){return{'model':db[_0x38a4e5['model']],'as':_0x38a4e5['as'],'attributes':_0x38a4e5[_0xf903('0x21')],'include':_0x38a4e5[_0xf903('0x1e')]?_[_0xf903('0x1f')](_0x38a4e5[_0xf903('0x1e')],function(_0x14c588){return{'model':db[_0x14c588[_0xf903('0x20')]],'as':_0x14c588['as'],'attributes':_0x14c588[_0xf903('0x21')]};}):[]};}):[]};}):[]:[]})[_0xf903('0xd')](function(_0x26d2a1){logger[_0xf903('0x15')](_0xf903('0x18'),_0x488334);logger[_0xf903('0x22')](_0xf903('0x18'),_0x488334,JSON['stringify'](_0x26d2a1));_0x52e001(_0x26d2a1);})[_0xf903('0x17')](function(_0x4b7541){logger[_0xf903('0x11')](_0xf903('0x18'),_0x4b7541['message'],_0x488334);_0x4d577b(_0x157471[_0xf903('0x11')](0x1f4,_0x4b7541['message']));});});};exports['ShowWhatsappQueue']=function(_0x3b4a93){var _0x227198=this;return new Promise(function(_0x2d60f6,_0x40d429){return db['WhatsappQueue'][_0xf903('0x23')]({'raw':_0x3b4a93[_0xf903('0x1b')]?_0x3b4a93[_0xf903('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x3b4a93[_0xf903('0x1b')]?_0x3b4a93[_0xf903('0x1b')]['where']||null:null,'attributes':_0x3b4a93[_0xf903('0x1b')]?_0x3b4a93[_0xf903('0x1b')][_0xf903('0x21')]||null:null,'include':_0x3b4a93[_0xf903('0x1b')]?_0x3b4a93['options'][_0xf903('0x1e')]?_[_0xf903('0x1f')](_0x3b4a93[_0xf903('0x1b')][_0xf903('0x1e')],function(_0x40ea97){return{'model':db[_0x40ea97[_0xf903('0x20')]],'as':_0x40ea97['as'],'attributes':_0x40ea97[_0xf903('0x21')],'include':_0x40ea97[_0xf903('0x1e')]?_['map'](_0x40ea97[_0xf903('0x1e')],function(_0x3bafb0){return{'model':db[_0x3bafb0[_0xf903('0x20')]],'as':_0x3bafb0['as'],'attributes':_0x3bafb0[_0xf903('0x21')],'include':_0x3bafb0[_0xf903('0x1e')]?_[_0xf903('0x1f')](_0x3bafb0[_0xf903('0x1e')],function(_0x35de54){return{'model':db[_0x35de54[_0xf903('0x20')]],'as':_0x35de54['as'],'attributes':_0x35de54[_0xf903('0x21')]};}):[]};}):[]};}):[]:[]})[_0xf903('0xd')](function(_0x341d24){logger[_0xf903('0x15')](_0xf903('0x24'),_0x3b4a93);logger[_0xf903('0x22')](_0xf903('0x24'),_0x3b4a93,JSON['stringify'](_0x341d24));_0x2d60f6(_0x341d24);})['catch'](function(_0x461e8f){logger[_0xf903('0x11')](_0xf903('0x24'),_0x461e8f['message'],_0x3b4a93);_0x40d429(_0x227198[_0xf903('0x11')](0x1f4,_0x461e8f[_0xf903('0x14')]));});});};
\ No newline at end of file
+var _0xcc4e=['client','http','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','WhatsappQueue','options','raw','attributes','limit','include','map','model','GetWhatsappQueue','catch','ShowWhatsappQueue','where','debug','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4a5452,_0xa31da4){var _0x209900=function(_0x15b396){while(--_0x15b396){_0x4a5452['push'](_0x4a5452['shift']());}};_0x209900(++_0xa31da4);}(_0xcc4e,0x1d7));var _0xecc4=function(_0x2bfc42,_0x5a9e74){_0x2bfc42=_0x2bfc42-0x0;var _0x1630ef=_0xcc4e[_0x2bfc42];return _0x1630ef;};'use strict';var _=require('lodash');var util=require(_0xecc4('0x0'));var moment=require('moment');var BPromise=require(_0xecc4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xecc4('0x2'));var db=require(_0xecc4('0x3'))['db'];var utils=require(_0xecc4('0x4'));var logger=require(_0xecc4('0x5'))(_0xecc4('0x6'));var config=require(_0xecc4('0x7'));var jayson=require(_0xecc4('0x8'));var client=jayson[_0xecc4('0x9')][_0xecc4('0xa')]({'port':0x232a});config[_0xecc4('0xb')]=_['defaults'](config[_0xecc4('0xb')],{'host':_0xecc4('0xc'),'port':0x18eb});var socket=require(_0xecc4('0xd'))(new Redis(config['redis']));require(_0xecc4('0xe'))[_0xecc4('0xf')](socket);function respondWithRpcPromise(_0x4444ab,_0x2b3038,_0x3bcb14){return new BPromise(function(_0x13bbfa,_0x3abb3d){return client[_0xecc4('0x10')](_0x4444ab,_0x3bcb14)[_0xecc4('0x11')](function(_0x1f634d){logger[_0xecc4('0x12')](_0xecc4('0x13'),_0x2b3038,'request\x20sent');logger['debug'](_0xecc4('0x14'),_0x2b3038,_0xecc4('0x15'),JSON[_0xecc4('0x16')](_0x1f634d));if(_0x1f634d['error']){if(_0x1f634d[_0xecc4('0x17')][_0xecc4('0x18')]===0x1f4){logger['error'](_0xecc4('0x13'),_0x2b3038,_0x1f634d[_0xecc4('0x17')][_0xecc4('0x19')]);return _0x3abb3d(_0x1f634d[_0xecc4('0x17')][_0xecc4('0x19')]);}logger['error'](_0xecc4('0x13'),_0x2b3038,_0x1f634d['error'][_0xecc4('0x19')]);return _0x13bbfa(_0x1f634d[_0xecc4('0x17')][_0xecc4('0x19')]);}else{logger[_0xecc4('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x2b3038,'request\x20sent');_0x13bbfa(_0x1f634d[_0xecc4('0x1a')]['message']);}})['catch'](function(_0xd64d99){logger[_0xecc4('0x17')](_0xecc4('0x13'),_0x2b3038,_0xd64d99);_0x3abb3d(_0xd64d99);});});}exports['GetWhatsappQueue']=function(_0x55f54c){var _0x2c1e1d=this;return new Promise(function(_0x11a63d,_0x3bfa76){return db[_0xecc4('0x1b')]['findAll']({'raw':_0x55f54c[_0xecc4('0x1c')]?_0x55f54c['options'][_0xecc4('0x1d')]===undefined?!![]:![]:!![],'where':_0x55f54c[_0xecc4('0x1c')]?_0x55f54c['options']['where']||null:null,'attributes':_0x55f54c[_0xecc4('0x1c')]?_0x55f54c[_0xecc4('0x1c')][_0xecc4('0x1e')]||null:null,'limit':_0x55f54c[_0xecc4('0x1c')]?_0x55f54c[_0xecc4('0x1c')][_0xecc4('0x1f')]||null:null,'include':_0x55f54c[_0xecc4('0x1c')]?_0x55f54c[_0xecc4('0x1c')][_0xecc4('0x20')]?_[_0xecc4('0x21')](_0x55f54c[_0xecc4('0x1c')]['include'],function(_0x85f2ed){return{'model':db[_0x85f2ed[_0xecc4('0x22')]],'as':_0x85f2ed['as'],'attributes':_0x85f2ed[_0xecc4('0x1e')],'include':_0x85f2ed[_0xecc4('0x20')]?_[_0xecc4('0x21')](_0x85f2ed[_0xecc4('0x20')],function(_0x404a03){return{'model':db[_0x404a03['model']],'as':_0x404a03['as'],'attributes':_0x404a03[_0xecc4('0x1e')],'include':_0x404a03[_0xecc4('0x20')]?_[_0xecc4('0x21')](_0x404a03[_0xecc4('0x20')],function(_0x7cc9f){return{'model':db[_0x7cc9f[_0xecc4('0x22')]],'as':_0x7cc9f['as'],'attributes':_0x7cc9f[_0xecc4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x11')](function(_0x3d41c5){logger[_0xecc4('0x12')](_0xecc4('0x23'),_0x55f54c);logger['debug'](_0xecc4('0x23'),_0x55f54c,JSON[_0xecc4('0x16')](_0x3d41c5));_0x11a63d(_0x3d41c5);})[_0xecc4('0x24')](function(_0x1c3868){logger[_0xecc4('0x17')](_0xecc4('0x23'),_0x1c3868[_0xecc4('0x19')],_0x55f54c);_0x3bfa76(_0x2c1e1d[_0xecc4('0x17')](0x1f4,_0x1c3868['message']));});});};exports[_0xecc4('0x25')]=function(_0x24cb24){var _0x3dfb5e=this;return new Promise(function(_0x4df855,_0x51f9a6){return db[_0xecc4('0x1b')]['find']({'raw':_0x24cb24['options']?_0x24cb24[_0xecc4('0x1c')][_0xecc4('0x1d')]===undefined?!![]:![]:!![],'where':_0x24cb24[_0xecc4('0x1c')]?_0x24cb24[_0xecc4('0x1c')][_0xecc4('0x26')]||null:null,'attributes':_0x24cb24[_0xecc4('0x1c')]?_0x24cb24[_0xecc4('0x1c')][_0xecc4('0x1e')]||null:null,'include':_0x24cb24[_0xecc4('0x1c')]?_0x24cb24[_0xecc4('0x1c')]['include']?_[_0xecc4('0x21')](_0x24cb24[_0xecc4('0x1c')][_0xecc4('0x20')],function(_0x18d193){return{'model':db[_0x18d193[_0xecc4('0x22')]],'as':_0x18d193['as'],'attributes':_0x18d193['attributes'],'include':_0x18d193[_0xecc4('0x20')]?_['map'](_0x18d193[_0xecc4('0x20')],function(_0x215c34){return{'model':db[_0x215c34[_0xecc4('0x22')]],'as':_0x215c34['as'],'attributes':_0x215c34[_0xecc4('0x1e')],'include':_0x215c34[_0xecc4('0x20')]?_[_0xecc4('0x21')](_0x215c34['include'],function(_0x449ec1){return{'model':db[_0x449ec1[_0xecc4('0x22')]],'as':_0x449ec1['as'],'attributes':_0x449ec1[_0xecc4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x11')](function(_0x1cf640){logger[_0xecc4('0x12')]('ShowWhatsappQueue',_0x24cb24);logger[_0xecc4('0x27')](_0xecc4('0x25'),_0x24cb24,JSON[_0xecc4('0x16')](_0x1cf640));_0x4df855(_0x1cf640);})[_0xecc4('0x24')](function(_0x553901){logger[_0xecc4('0x17')](_0xecc4('0x25'),_0x553901['message'],_0x24cb24);_0x51f9a6(_0x3dfb5e[_0xecc4('0x17')](0x1f4,_0x553901[_0xecc4('0x19')]));});});};
\ No newline at end of file
index 3fbf9bd..e656514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cc2=['save','remove','emit','removeListener','register','length','whatsappQueue:','./whatsappQueue.events'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x4cc2,0x1cf));var _0x24cc=function(_0x576d6b,_0x138750){_0x576d6b=_0x576d6b-0x0;var _0x5a8fb5=_0x4cc2[_0x576d6b];return _0x5a8fb5;};'use strict';var WhatsappQueueEvents=require(_0x24cc('0x0'));var events=[_0x24cc('0x1'),_0x24cc('0x2'),'update'];function createListener(_0x153f01,_0x193467){return function(_0x4eb566){_0x193467[_0x24cc('0x3')](_0x153f01,_0x4eb566);};}function removeListener(_0x16a8cf,_0x730d4a){return function(){WhatsappQueueEvents[_0x24cc('0x4')](_0x16a8cf,_0x730d4a);};}exports[_0x24cc('0x5')]=function(_0x4a0176){for(var _0x463843=0x0,_0x172ab5=events[_0x24cc('0x6')];_0x463843<_0x172ab5;_0x463843++){var _0x242761=events[_0x463843];var _0x4fdcdc=createListener(_0x24cc('0x7')+_0x242761,_0x4a0176);WhatsappQueueEvents['on'](_0x242761,_0x4fdcdc);}};
\ No newline at end of file
+var _0x2000=['update','removeListener','whatsappQueue:','./whatsappQueue.events','save'];(function(_0x455bdd,_0x420ec5){var _0x473945=function(_0x4d47fe){while(--_0x4d47fe){_0x455bdd['push'](_0x455bdd['shift']());}};_0x473945(++_0x420ec5);}(_0x2000,0xd0));var _0x0200=function(_0x1418b3,_0x1f5bf3){_0x1418b3=_0x1418b3-0x0;var _0x2e38d3=_0x2000[_0x1418b3];return _0x2e38d3;};'use strict';var WhatsappQueueEvents=require(_0x0200('0x0'));var events=[_0x0200('0x1'),'remove',_0x0200('0x2')];function createListener(_0x31c3ce,_0x41b243){return function(_0x5a3679){_0x41b243['emit'](_0x31c3ce,_0x5a3679);};}function removeListener(_0x520e1f,_0x41314b){return function(){WhatsappQueueEvents[_0x0200('0x3')](_0x520e1f,_0x41314b);};}exports['register']=function(_0x236dee){for(var _0x46ff53=0x0,_0x40e546=events['length'];_0x46ff53<_0x40e546;_0x46ff53++){var _0x768745=events[_0x46ff53];var _0x3c6f4f=createListener(_0x0200('0x4')+_0x768745,_0x236dee);WhatsappQueueEvents['on'](_0x768745,_0x3c6f4f);}};
\ No newline at end of file
index 7e6959f..17eb7a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x164a=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete','destroy','exports'];(function(_0x13c112,_0x18397f){var _0x5a7a62=function(_0x5200a1){while(--_0x5200a1){_0x13c112['push'](_0x13c112['shift']());}};_0x5a7a62(++_0x18397f);}(_0x164a,0x160));var _0xa164=function(_0x53174f,_0x986a3b){_0x53174f=_0x53174f-0x0;var _0x1cbd1c=_0x164a[_0x53174f];return _0x1cbd1c;};'use strict';var multer=require(_0xa164('0x0'));var util=require(_0xa164('0x1'));var path=require(_0xa164('0x2'));var timeout=require(_0xa164('0x3'));var express=require('express');var router=express[_0xa164('0x4')]();var fs_extra=require(_0xa164('0x5'));var auth=require(_0xa164('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa164('0x7'));var controller=require(_0xa164('0x8'));router[_0xa164('0x9')]('/',auth[_0xa164('0xa')](),controller[_0xa164('0xb')]);router['get'](_0xa164('0xc'),auth['isAuthenticated'](),controller[_0xa164('0xd')]);router[_0xa164('0x9')]('/:id',auth[_0xa164('0xa')](),controller[_0xa164('0xe')]);router['post']('/',auth[_0xa164('0xa')](),controller[_0xa164('0xf')]);router[_0xa164('0x10')](_0xa164('0x11'),auth[_0xa164('0xa')](),controller[_0xa164('0x12')]);router[_0xa164('0x13')]('/:id',auth[_0xa164('0xa')](),controller[_0xa164('0x14')]);module[_0xa164('0x15')]=router;
\ No newline at end of file
+var _0x08c7=['isAuthenticated','describe','/:id','show','post','put','update','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','/describe'];(function(_0x8dc04d,_0xaa7559){var _0x2f5f28=function(_0xdd2d1d){while(--_0xdd2d1d){_0x8dc04d['push'](_0x8dc04d['shift']());}};_0x2f5f28(++_0xaa7559);}(_0x08c7,0x1e4));var _0x708c=function(_0x5b951c,_0x2088be){_0x5b951c=_0x5b951c-0x0;var _0x3e8e64=_0x08c7[_0x5b951c];return _0x3e8e64;};'use strict';var multer=require(_0x708c('0x0'));var util=require(_0x708c('0x1'));var path=require('path');var timeout=require(_0x708c('0x2'));var express=require('express');var router=express[_0x708c('0x3')]();var fs_extra=require(_0x708c('0x4'));var auth=require(_0x708c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x708c('0x6'));var controller=require(_0x708c('0x7'));router[_0x708c('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x708c('0x8')](_0x708c('0x9'),auth[_0x708c('0xa')](),controller[_0x708c('0xb')]);router[_0x708c('0x8')](_0x708c('0xc'),auth['isAuthenticated'](),controller[_0x708c('0xd')]);router[_0x708c('0xe')]('/',auth[_0x708c('0xa')](),controller['create']);router[_0x708c('0xf')](_0x708c('0xc'),auth[_0x708c('0xa')](),controller[_0x708c('0x10')]);router[_0x708c('0x11')](_0x708c('0xc'),auth[_0x708c('0xa')](),controller[_0x708c('0x12')]);module['exports']=router;
\ No newline at end of file
index 1ea12b1..dc45baf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x1c946a,_0x24de54){var _0xd5e908=function(_0x2c1880){while(--_0x2c1880){_0x1c946a['push'](_0x1c946a['shift']());}};_0xd5e908(++_0x24de54);}(_0x7a54,0x106));var _0x47a5=function(_0x24dff4,_0x54e46e){_0x24dff4=_0x24dff4-0x0;var _0x5d3f9d=_0x7a54[_0x24dff4];return _0x5d3f9d;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x157ae1,_0x4c74cf){var _0x54d53c=function(_0x157682){while(--_0x157682){_0x157ae1['push'](_0x157ae1['shift']());}};_0x54d53c(++_0x4c74cf);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 98c6c4e..98c644c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['catch','show','params','find','create','body','update','destroy','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','error','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x2ecbaf,_0x9111ac){var _0x39720a=function(_0x2d8bc6){while(--_0x2d8bc6){_0x2ecbaf['push'](_0x2ecbaf['shift']());}};_0x39720a(++_0x9111ac);}(_0x2e54,0x1dd));var _0x42e5=function(_0x1d2155,_0xb0f398){_0x1d2155=_0x1d2155-0x0;var _0x3e4a44=_0x2e54[_0x1d2155];return _0x3e4a44;};'use strict';var emlformat=require(_0x42e5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x42e5('0x1'));var rp=require(_0x42e5('0x2'));var moment=require(_0x42e5('0x3'));var BPromise=require(_0x42e5('0x4'));var Mustache=require(_0x42e5('0x5'));var util=require(_0x42e5('0x6'));var path=require(_0x42e5('0x7'));var sox=require('sox');var csv=require(_0x42e5('0x8'));var ejs=require(_0x42e5('0x9'));var fs=require('fs');var fs_extra=require(_0x42e5('0xa'));var _=require('lodash');var squel=require(_0x42e5('0xb'));var crypto=require('crypto');var jsforce=require(_0x42e5('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x42e5('0x8'));var querystring=require(_0x42e5('0xd'));var Papa=require(_0x42e5('0xe'));var Redis=require(_0x42e5('0xf'));var authService=require(_0x42e5('0x10'));var qs=require(_0x42e5('0x11'));var as=require(_0x42e5('0x12'));var hardwareService=require(_0x42e5('0x13'));var logger=require(_0x42e5('0x14'))('api');var utils=require(_0x42e5('0x15'));var config=require(_0x42e5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x42e5('0x17'))['db'];function respondWithStatusCode(_0x12385d,_0x4530ba){_0x4530ba=_0x4530ba||0xcc;return function(_0x41598d){if(_0x41598d){return _0x12385d[_0x42e5('0x18')](_0x4530ba);}return _0x12385d[_0x42e5('0x19')](_0x4530ba)[_0x42e5('0x1a')]();};}function respondWithResult(_0x96fae2,_0x447648){_0x447648=_0x447648||0xc8;return function(_0x23957f){if(_0x23957f){return _0x96fae2['status'](_0x447648)[_0x42e5('0x1b')](_0x23957f);}};}function respondWithFilteredResult(_0x1d8e52,_0x4034bd){return function(_0x388300){if(_0x388300){var _0x2f4999=typeof _0x4034bd[_0x42e5('0x1c')]===_0x42e5('0x1d')&&typeof _0x4034bd[_0x42e5('0x1e')]===_0x42e5('0x1d');var _0x3c7b79=_0x388300[_0x42e5('0x1f')];var _0x38282d=_0x2f4999?0x0:_0x4034bd[_0x42e5('0x1c')];var _0x23fe09=_0x2f4999?_0x388300['count']:_0x4034bd[_0x42e5('0x1c')]+_0x4034bd['limit'];var _0x5f4428;if(_0x23fe09>=_0x3c7b79){_0x23fe09=_0x3c7b79;_0x5f4428=0xc8;}else{_0x5f4428=0xce;}_0x1d8e52[_0x42e5('0x19')](_0x5f4428);return _0x1d8e52[_0x42e5('0x20')]('Content-Range',_0x38282d+'-'+_0x23fe09+'/'+_0x3c7b79)[_0x42e5('0x1b')](_0x388300);}return null;};}function patchUpdates(_0x39a3e2){return function(_0x1c2169){try{jsonpatch[_0x42e5('0x21')](_0x1c2169,_0x39a3e2,!![]);}catch(_0x1150f4){return BPromise[_0x42e5('0x22')](_0x1150f4);}return _0x1c2169[_0x42e5('0x23')]();};}function saveUpdates(_0x58eee5,_0x4da508){return function(_0x283d44){if(_0x283d44){return _0x283d44['update'](_0x58eee5)[_0x42e5('0x24')](function(_0x2e9574){return _0x2e9574;});}return null;};}function removeEntity(_0x37d10e,_0x49490f){return function(_0x32380f){if(_0x32380f){return _0x32380f['destroy']()[_0x42e5('0x24')](function(){_0x37d10e[_0x42e5('0x19')](0xcc)[_0x42e5('0x1a')]();});}};}function handleEntityNotFound(_0x275c80,_0x4638bc){return function(_0x4f52b2){if(!_0x4f52b2){_0x275c80['sendStatus'](0x194);}return _0x4f52b2;};}function handleError(_0x3115e4,_0x534a26){_0x534a26=_0x534a26||0x1f4;return function(_0x56f812){logger[_0x42e5('0x25')](_0x56f812['stack']);if(_0x56f812[_0x42e5('0x26')]){delete _0x56f812[_0x42e5('0x26')];}_0x3115e4[_0x42e5('0x19')](_0x534a26)[_0x42e5('0x27')](_0x56f812);};}exports[_0x42e5('0x28')]=function(_0x2f1edc,_0x59a46b){var _0x3e2ea5={},_0x201d9e={},_0x39f763={'count':0x0,'rows':[]};var _0x2c53d4=_[_0x42e5('0x29')](db[_0x42e5('0x2a')][_0x42e5('0x2b')],function(_0x282cbf){return{'name':_0x282cbf[_0x42e5('0x2c')],'type':_0x282cbf[_0x42e5('0x2d')][_0x42e5('0x2e')]};});_0x201d9e[_0x42e5('0x2f')]=_[_0x42e5('0x29')](_0x2c53d4,'name');_0x201d9e[_0x42e5('0x30')]=_[_0x42e5('0x31')](_0x2f1edc[_0x42e5('0x30')]);_0x201d9e[_0x42e5('0x32')]=_['intersection'](_0x201d9e['model'],_0x201d9e[_0x42e5('0x30')]);_0x3e2ea5['attributes']=_[_0x42e5('0x33')](_0x201d9e['model'],qs[_0x42e5('0x34')](_0x2f1edc[_0x42e5('0x30')][_0x42e5('0x34')]));_0x3e2ea5['attributes']=_0x3e2ea5[_0x42e5('0x35')][_0x42e5('0x36')]?_0x3e2ea5['attributes']:_0x201d9e[_0x42e5('0x2f')];if(!_0x2f1edc['query'][_0x42e5('0x37')](_0x42e5('0x38'))){_0x3e2ea5[_0x42e5('0x1e')]=qs[_0x42e5('0x1e')](_0x2f1edc[_0x42e5('0x30')][_0x42e5('0x1e')]);_0x3e2ea5[_0x42e5('0x1c')]=qs['offset'](_0x2f1edc['query'][_0x42e5('0x1c')]);}_0x3e2ea5[_0x42e5('0x39')]=qs[_0x42e5('0x3a')](_0x2f1edc['query']['sort']);_0x3e2ea5['where']=qs['filters'](_[_0x42e5('0x3b')](_0x2f1edc[_0x42e5('0x30')],_0x201d9e[_0x42e5('0x32')]),_0x2c53d4);if(_0x2f1edc[_0x42e5('0x30')][_0x42e5('0x3c')]){_0x3e2ea5[_0x42e5('0x3d')]=_[_0x42e5('0x3e')](_0x3e2ea5[_0x42e5('0x3d')],{'$or':_['map'](_0x2c53d4,function(_0x260413){if(_0x260413['type']!==_0x42e5('0x3f')){var _0x343363={};_0x343363[_0x260413[_0x42e5('0x26')]]={'$like':'%'+_0x2f1edc[_0x42e5('0x30')][_0x42e5('0x3c')]+'%'};return _0x343363;}})});}_0x3e2ea5=_[_0x42e5('0x3e')]({},_0x3e2ea5,_0x2f1edc[_0x42e5('0x40')]);var _0x5ab9b8={'where':_0x3e2ea5[_0x42e5('0x3d')]};return db[_0x42e5('0x2a')]['count'](_0x5ab9b8)[_0x42e5('0x24')](function(_0x5e8f96){_0x39f763['count']=_0x5e8f96;if(_0x2f1edc['query'][_0x42e5('0x41')]){_0x3e2ea5[_0x42e5('0x42')]=[{'all':!![]}];}return db[_0x42e5('0x2a')][_0x42e5('0x43')](_0x3e2ea5);})[_0x42e5('0x24')](function(_0x77aa22){_0x39f763[_0x42e5('0x44')]=_0x77aa22;return _0x39f763;})['then'](respondWithFilteredResult(_0x59a46b,_0x3e2ea5))[_0x42e5('0x45')](handleError(_0x59a46b,null));};exports[_0x42e5('0x46')]=function(_0x5bec97,_0x398b73){var _0x1c697a={'raw':!![],'where':{'id':_0x5bec97[_0x42e5('0x47')]['id']}},_0x5db771={};_0x5db771[_0x42e5('0x2f')]=_[_0x42e5('0x31')](db[_0x42e5('0x2a')][_0x42e5('0x2b')]);_0x5db771['query']=_[_0x42e5('0x31')](_0x5bec97[_0x42e5('0x30')]);_0x5db771[_0x42e5('0x32')]=_[_0x42e5('0x33')](_0x5db771['model'],_0x5db771[_0x42e5('0x30')]);_0x1c697a[_0x42e5('0x35')]=_[_0x42e5('0x33')](_0x5db771[_0x42e5('0x2f')],qs[_0x42e5('0x34')](_0x5bec97[_0x42e5('0x30')][_0x42e5('0x34')]));_0x1c697a[_0x42e5('0x35')]=_0x1c697a['attributes'][_0x42e5('0x36')]?_0x1c697a['attributes']:_0x5db771['model'];if(_0x5bec97[_0x42e5('0x30')][_0x42e5('0x41')]){_0x1c697a[_0x42e5('0x42')]=[{'all':!![]}];}_0x1c697a=_[_0x42e5('0x3e')]({},_0x1c697a,_0x5bec97[_0x42e5('0x40')]);return db[_0x42e5('0x2a')][_0x42e5('0x48')](_0x1c697a)['then'](handleEntityNotFound(_0x398b73,null))[_0x42e5('0x24')](respondWithResult(_0x398b73,null))[_0x42e5('0x45')](handleError(_0x398b73,null));};exports[_0x42e5('0x49')]=function(_0x21a047,_0x1086b2){return db[_0x42e5('0x2a')][_0x42e5('0x49')](_0x21a047[_0x42e5('0x4a')],{})['then'](respondWithResult(_0x1086b2,0xc9))[_0x42e5('0x45')](handleError(_0x1086b2,null));};exports[_0x42e5('0x4b')]=function(_0x3616f4,_0x48757e){if(_0x3616f4[_0x42e5('0x4a')]['id']){delete _0x3616f4[_0x42e5('0x4a')]['id'];}return db[_0x42e5('0x2a')][_0x42e5('0x48')]({'where':{'id':_0x3616f4[_0x42e5('0x47')]['id']}})['then'](handleEntityNotFound(_0x48757e,null))[_0x42e5('0x24')](saveUpdates(_0x3616f4['body'],null))[_0x42e5('0x24')](respondWithResult(_0x48757e,null))[_0x42e5('0x45')](handleError(_0x48757e,null));};exports[_0x42e5('0x4c')]=function(_0x48b63b,_0x50f59c){return db['WhatsappQueueReport'][_0x42e5('0x48')]({'where':{'id':_0x48b63b[_0x42e5('0x47')]['id']}})[_0x42e5('0x24')](handleEntityNotFound(_0x50f59c,null))[_0x42e5('0x24')](removeEntity(_0x50f59c,null))['catch'](handleError(_0x50f59c,null));};exports[_0x42e5('0x4d')]=function(_0x26782e,_0x18cedc){return db['WhatsappQueueReport'][_0x42e5('0x4d')]()['then'](respondWithResult(_0x18cedc,null))[_0x42e5('0x45')](handleError(_0x18cedc,null));};
\ No newline at end of file
+var _0xeffd=['model','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','catch','show','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','set','Content-Range','json','reject','update','then','destroy','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','type'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xeffd,0x6b));var _0xdeff=function(_0x15f234,_0x51af00){_0x15f234=_0x15f234-0x0;var _0x15e30f=_0xeffd[_0x15f234];return _0x15e30f;};'use strict';var emlformat=require(_0xdeff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdeff('0x1'));var jsonpatch=require(_0xdeff('0x2'));var rp=require(_0xdeff('0x3'));var moment=require(_0xdeff('0x4'));var BPromise=require(_0xdeff('0x5'));var Mustache=require(_0xdeff('0x6'));var util=require(_0xdeff('0x7'));var path=require(_0xdeff('0x8'));var sox=require(_0xdeff('0x9'));var csv=require(_0xdeff('0xa'));var ejs=require(_0xdeff('0xb'));var fs=require('fs');var fs_extra=require(_0xdeff('0xc'));var _=require(_0xdeff('0xd'));var squel=require(_0xdeff('0xe'));var crypto=require(_0xdeff('0xf'));var jsforce=require(_0xdeff('0x10'));var deskjs=require(_0xdeff('0x11'));var toCsv=require('to-csv');var querystring=require(_0xdeff('0x12'));var Papa=require(_0xdeff('0x13'));var Redis=require(_0xdeff('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdeff('0x15'));var as=require(_0xdeff('0x16'));var hardwareService=require(_0xdeff('0x17'));var logger=require(_0xdeff('0x18'))(_0xdeff('0x19'));var utils=require(_0xdeff('0x1a'));var config=require(_0xdeff('0x1b'));var licenseUtil=require(_0xdeff('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x461699,_0x116bf9){_0x116bf9=_0x116bf9||0xcc;return function(_0x4952f2){if(_0x4952f2){return _0x461699[_0xdeff('0x1d')](_0x116bf9);}return _0x461699['status'](_0x116bf9)['end']();};}function respondWithResult(_0x3e56a1,_0x47410f){_0x47410f=_0x47410f||0xc8;return function(_0x1585e8){if(_0x1585e8){return _0x3e56a1[_0xdeff('0x1e')](_0x47410f)['json'](_0x1585e8);}};}function respondWithFilteredResult(_0x826132,_0x314ded){return function(_0xea6c4){if(_0xea6c4){var _0x391633=typeof _0x314ded[_0xdeff('0x1f')]===_0xdeff('0x20')&&typeof _0x314ded['limit']==='undefined';var _0x7440af=_0xea6c4['count'];var _0x5c9837=_0x391633?0x0:_0x314ded[_0xdeff('0x1f')];var _0x369e13=_0x391633?_0xea6c4['count']:_0x314ded[_0xdeff('0x1f')]+_0x314ded[_0xdeff('0x21')];var _0x1ab1fa;if(_0x369e13>=_0x7440af){_0x369e13=_0x7440af;_0x1ab1fa=0xc8;}else{_0x1ab1fa=0xce;}_0x826132[_0xdeff('0x1e')](_0x1ab1fa);return _0x826132[_0xdeff('0x22')](_0xdeff('0x23'),_0x5c9837+'-'+_0x369e13+'/'+_0x7440af)[_0xdeff('0x24')](_0xea6c4);}return null;};}function patchUpdates(_0x919c93){return function(_0x488faa){try{jsonpatch['apply'](_0x488faa,_0x919c93,!![]);}catch(_0x56cb84){return BPromise[_0xdeff('0x25')](_0x56cb84);}return _0x488faa['save']();};}function saveUpdates(_0x189627,_0x91c0b4){return function(_0x543653){if(_0x543653){return _0x543653[_0xdeff('0x26')](_0x189627)[_0xdeff('0x27')](function(_0x4eb2a8){return _0x4eb2a8;});}return null;};}function removeEntity(_0x5dbe96,_0x3b2554){return function(_0x15c425){if(_0x15c425){return _0x15c425[_0xdeff('0x28')]()[_0xdeff('0x27')](function(){_0x5dbe96[_0xdeff('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb08f19,_0x412db3){return function(_0x3741fb){if(!_0x3741fb){_0xb08f19[_0xdeff('0x1d')](0x194);}return _0x3741fb;};}function handleError(_0x16974b,_0x35823c){_0x35823c=_0x35823c||0x1f4;return function(_0x3d0111){logger['error'](_0x3d0111[_0xdeff('0x29')]);if(_0x3d0111[_0xdeff('0x2a')]){delete _0x3d0111['name'];}_0x16974b['status'](_0x35823c)[_0xdeff('0x2b')](_0x3d0111);};}exports[_0xdeff('0x2c')]=function(_0x16b2d0,_0xcb819c){var _0x533069={},_0xf9b278={},_0xbc75ee={'count':0x0,'rows':[]};var _0x4e0ff2=_[_0xdeff('0x2d')](db[_0xdeff('0x2e')][_0xdeff('0x2f')],function(_0x5045b8){return{'name':_0x5045b8['fieldName'],'type':_0x5045b8[_0xdeff('0x30')]['key']};});_0xf9b278[_0xdeff('0x31')]=_[_0xdeff('0x2d')](_0x4e0ff2,_0xdeff('0x2a'));_0xf9b278['query']=_[_0xdeff('0x32')](_0x16b2d0['query']);_0xf9b278['filters']=_[_0xdeff('0x33')](_0xf9b278[_0xdeff('0x31')],_0xf9b278[_0xdeff('0x34')]);_0x533069[_0xdeff('0x35')]=_['intersection'](_0xf9b278[_0xdeff('0x31')],qs[_0xdeff('0x36')](_0x16b2d0[_0xdeff('0x34')][_0xdeff('0x36')]));_0x533069[_0xdeff('0x35')]=_0x533069[_0xdeff('0x35')][_0xdeff('0x37')]?_0x533069['attributes']:_0xf9b278[_0xdeff('0x31')];if(!_0x16b2d0['query'][_0xdeff('0x38')](_0xdeff('0x39'))){_0x533069[_0xdeff('0x21')]=qs[_0xdeff('0x21')](_0x16b2d0[_0xdeff('0x34')][_0xdeff('0x21')]);_0x533069['offset']=qs[_0xdeff('0x1f')](_0x16b2d0[_0xdeff('0x34')]['offset']);}_0x533069[_0xdeff('0x3a')]=qs[_0xdeff('0x3b')](_0x16b2d0[_0xdeff('0x34')][_0xdeff('0x3b')]);_0x533069[_0xdeff('0x3c')]=qs[_0xdeff('0x3d')](_[_0xdeff('0x3e')](_0x16b2d0[_0xdeff('0x34')],_0xf9b278['filters']),_0x4e0ff2);if(_0x16b2d0[_0xdeff('0x34')]['filter']){_0x533069[_0xdeff('0x3c')]=_[_0xdeff('0x3f')](_0x533069[_0xdeff('0x3c')],{'$or':_['map'](_0x4e0ff2,function(_0x443550){if(_0x443550[_0xdeff('0x30')]!==_0xdeff('0x40')){var _0x467ce0={};_0x467ce0[_0x443550[_0xdeff('0x2a')]]={'$like':'%'+_0x16b2d0['query'][_0xdeff('0x41')]+'%'};return _0x467ce0;}})});}_0x533069=_['merge']({},_0x533069,_0x16b2d0[_0xdeff('0x42')]);var _0x14f1d0={'where':_0x533069['where']};return db[_0xdeff('0x2e')][_0xdeff('0x43')](_0x14f1d0)[_0xdeff('0x27')](function(_0x2e9dcd){_0xbc75ee[_0xdeff('0x43')]=_0x2e9dcd;if(_0x16b2d0['query'][_0xdeff('0x44')]){_0x533069[_0xdeff('0x45')]=[{'all':!![]}];}return db[_0xdeff('0x2e')][_0xdeff('0x46')](_0x533069);})[_0xdeff('0x27')](function(_0x5dfbb3){_0xbc75ee['rows']=_0x5dfbb3;return _0xbc75ee;})[_0xdeff('0x27')](respondWithFilteredResult(_0xcb819c,_0x533069))[_0xdeff('0x47')](handleError(_0xcb819c,null));};exports[_0xdeff('0x48')]=function(_0x318e77,_0x3c4fd2){var _0x289f70={'raw':!![],'where':{'id':_0x318e77['params']['id']}},_0x2cd68a={};_0x2cd68a[_0xdeff('0x31')]=_[_0xdeff('0x32')](db[_0xdeff('0x2e')]['rawAttributes']);_0x2cd68a[_0xdeff('0x34')]=_[_0xdeff('0x32')](_0x318e77[_0xdeff('0x34')]);_0x2cd68a[_0xdeff('0x3d')]=_['intersection'](_0x2cd68a[_0xdeff('0x31')],_0x2cd68a[_0xdeff('0x34')]);_0x289f70[_0xdeff('0x35')]=_[_0xdeff('0x33')](_0x2cd68a[_0xdeff('0x31')],qs[_0xdeff('0x36')](_0x318e77[_0xdeff('0x34')][_0xdeff('0x36')]));_0x289f70['attributes']=_0x289f70[_0xdeff('0x35')][_0xdeff('0x37')]?_0x289f70[_0xdeff('0x35')]:_0x2cd68a[_0xdeff('0x31')];if(_0x318e77[_0xdeff('0x34')]['includeAll']){_0x289f70[_0xdeff('0x45')]=[{'all':!![]}];}_0x289f70=_[_0xdeff('0x3f')]({},_0x289f70,_0x318e77[_0xdeff('0x42')]);return db[_0xdeff('0x2e')][_0xdeff('0x49')](_0x289f70)['then'](handleEntityNotFound(_0x3c4fd2,null))[_0xdeff('0x27')](respondWithResult(_0x3c4fd2,null))['catch'](handleError(_0x3c4fd2,null));};exports[_0xdeff('0x4a')]=function(_0x10e4ba,_0x1bf17c){return db[_0xdeff('0x2e')][_0xdeff('0x4a')](_0x10e4ba[_0xdeff('0x4b')],{})['then'](respondWithResult(_0x1bf17c,0xc9))['catch'](handleError(_0x1bf17c,null));};exports[_0xdeff('0x26')]=function(_0xf91a72,_0x3dc206){if(_0xf91a72['body']['id']){delete _0xf91a72['body']['id'];}return db[_0xdeff('0x2e')][_0xdeff('0x49')]({'where':{'id':_0xf91a72['params']['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x3dc206,null))[_0xdeff('0x27')](saveUpdates(_0xf91a72[_0xdeff('0x4b')],null))['then'](respondWithResult(_0x3dc206,null))[_0xdeff('0x47')](handleError(_0x3dc206,null));};exports[_0xdeff('0x28')]=function(_0x1ca376,_0x59ae32){return db[_0xdeff('0x2e')][_0xdeff('0x49')]({'where':{'id':_0x1ca376[_0xdeff('0x4c')]['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x59ae32,null))[_0xdeff('0x27')](removeEntity(_0x59ae32,null))[_0xdeff('0x47')](handleError(_0x59ae32,null));};exports[_0xdeff('0x4d')]=function(_0x578185,_0x4517d1){return db[_0xdeff('0x2e')]['describe']()[_0xdeff('0x27')](respondWithResult(_0x4517d1,null))[_0xdeff('0x47')](handleError(_0x4517d1,null));};
\ No newline at end of file
index 9f050f7..1c42a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f5c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','report_whatsapp_queue','uniqueid','lodash','util'];(function(_0xb65e77,_0x238c3d){var _0x38134b=function(_0x39da21){while(--_0x39da21){_0xb65e77['push'](_0xb65e77['shift']());}};_0x38134b(++_0x238c3d);}(_0x9f5c,0xb2));var _0xc9f5=function(_0x2e7d40,_0x2e24c4){_0x2e7d40=_0x2e7d40-0x0;var _0x2e6131=_0x9f5c[_0x2e7d40];return _0x2e6131;};'use strict';var _=require(_0xc9f5('0x0'));var util=require(_0xc9f5('0x1'));var logger=require(_0xc9f5('0x2'))(_0xc9f5('0x3'));var moment=require(_0xc9f5('0x4'));var BPromise=require(_0xc9f5('0x5'));var rp=require(_0xc9f5('0x6'));var fs=require('fs');var path=require(_0xc9f5('0x7'));var rimraf=require(_0xc9f5('0x8'));var config=require(_0xc9f5('0x9'));var attributes=require(_0xc9f5('0xa'));module[_0xc9f5('0xb')]=function(_0x21487b,_0x38fbb5){return _0x21487b[_0xc9f5('0xc')]('WhatsappQueueReport',attributes,{'tableName':_0xc9f5('0xd'),'paranoid':![],'indexes':[{'name':_0xc9f5('0xe'),'fields':[_0xc9f5('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd01d=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','util'];(function(_0x16da8f,_0x4ddb80){var _0xd5dca8=function(_0x3b7cb6){while(--_0x3b7cb6){_0x16da8f['push'](_0x16da8f['shift']());}};_0xd5dca8(++_0x4ddb80);}(_0xd01d,0x133));var _0xdd01=function(_0x166935,_0x107459){_0x166935=_0x166935-0x0;var _0x24f9bb=_0xd01d[_0x166935];return _0x24f9bb;};'use strict';var _=require('lodash');var util=require(_0xdd01('0x0'));var logger=require(_0xdd01('0x1'))(_0xdd01('0x2'));var moment=require('moment');var BPromise=require(_0xdd01('0x3'));var rp=require(_0xdd01('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdd01('0x5'));var config=require(_0xdd01('0x6'));var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x5e0101,_0x4afdfb){return _0x5e0101[_0xdd01('0x7')](_0xdd01('0x8'),attributes,{'tableName':_0xdd01('0x9'),'paranoid':![],'indexes':[{'name':_0xdd01('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index eb9caf0..f512b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bd2=['info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','update','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x23a12d,_0x4171f2){var _0x136b63=function(_0x5292f6){while(--_0x5292f6){_0x23a12d['push'](_0x23a12d['shift']());}};_0x136b63(++_0x4171f2);}(_0x3bd2,0x168));var _0x23bd=function(_0x867bd3,_0x483bef){_0x867bd3=_0x867bd3-0x0;var _0x5f0887=_0x3bd2[_0x867bd3];return _0x5f0887;};'use strict';var _=require(_0x23bd('0x0'));var util=require(_0x23bd('0x1'));var moment=require(_0x23bd('0x2'));var BPromise=require('bluebird');var rs=require(_0x23bd('0x3'));var fs=require('fs');var Redis=require(_0x23bd('0x4'));var db=require(_0x23bd('0x5'))['db'];var utils=require(_0x23bd('0x6'));var logger=require(_0x23bd('0x7'))(_0x23bd('0x8'));var config=require(_0x23bd('0x9'));var jayson=require(_0x23bd('0xa'));var client=jayson[_0x23bd('0xb')][_0x23bd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x737123,_0x2e0fb1,_0x231590){return new BPromise(function(_0x21856c,_0x1119f9){return client['request'](_0x737123,_0x231590)[_0x23bd('0xd')](function(_0x2056b7){logger[_0x23bd('0xe')](_0x23bd('0xf'),_0x2e0fb1,_0x23bd('0x10'));logger[_0x23bd('0x11')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x2e0fb1,'request\x20sent',JSON[_0x23bd('0x12')](_0x2056b7));if(_0x2056b7[_0x23bd('0x13')]){if(_0x2056b7[_0x23bd('0x13')]['code']===0x1f4){logger[_0x23bd('0x13')](_0x23bd('0xf'),_0x2e0fb1,_0x2056b7[_0x23bd('0x13')][_0x23bd('0x14')]);return _0x1119f9(_0x2056b7[_0x23bd('0x13')][_0x23bd('0x14')]);}logger['error'](_0x23bd('0xf'),_0x2e0fb1,_0x2056b7[_0x23bd('0x13')][_0x23bd('0x14')]);return _0x21856c(_0x2056b7['error'][_0x23bd('0x14')]);}else{logger['info'](_0x23bd('0xf'),_0x2e0fb1,_0x23bd('0x10'));_0x21856c(_0x2056b7[_0x23bd('0x15')]['message']);}})[_0x23bd('0x16')](function(_0x51434a){logger['error'](_0x23bd('0xf'),_0x2e0fb1,_0x51434a);_0x1119f9(_0x51434a);});});}exports[_0x23bd('0x17')]=function(_0x220844){var _0x4b25aa=this;return new Promise(function(_0x803d66,_0x5ed1ef){return db[_0x23bd('0x18')][_0x23bd('0x19')](_0x220844[_0x23bd('0x1a')],{'raw':_0x220844[_0x23bd('0x1b')]?_0x220844[_0x23bd('0x1b')][_0x23bd('0x1c')]===undefined?!![]:![]:!![]})[_0x23bd('0xd')](function(_0x419362){logger[_0x23bd('0xe')](_0x23bd('0x17'),_0x220844);logger[_0x23bd('0x11')]('CreateWhatsappQueueReport',_0x220844,JSON[_0x23bd('0x12')](_0x419362));_0x803d66(_0x419362);})[_0x23bd('0x16')](function(_0x347859){logger[_0x23bd('0x13')](_0x23bd('0x17'),_0x347859[_0x23bd('0x14')],_0x220844);_0x5ed1ef(_0x4b25aa[_0x23bd('0x13')](0x1f4,_0x347859[_0x23bd('0x14')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x5a10b8){var _0x1dbdec=this;return new Promise(function(_0x1fbead,_0x4584e5){return db['WhatsappQueueReport'][_0x23bd('0x1d')](_0x5a10b8['body'],{'raw':_0x5a10b8[_0x23bd('0x1b')]?_0x5a10b8[_0x23bd('0x1b')][_0x23bd('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a10b8[_0x23bd('0x1b')]?_0x5a10b8[_0x23bd('0x1b')][_0x23bd('0x1e')]||null:null,'attributes':_0x5a10b8[_0x23bd('0x1b')]?_0x5a10b8['options'][_0x23bd('0x1f')]||null:null,'limit':_0x5a10b8['options']?_0x5a10b8[_0x23bd('0x1b')][_0x23bd('0x20')]||null:null})[_0x23bd('0xd')](function(_0x22a91d){logger[_0x23bd('0xe')](_0x23bd('0x21'),_0x5a10b8);logger[_0x23bd('0x11')](_0x23bd('0x21'),_0x5a10b8,JSON['stringify'](_0x22a91d));_0x1fbead(_0x22a91d);})[_0x23bd('0x16')](function(_0x276112){logger[_0x23bd('0x13')](_0x23bd('0x21'),_0x276112[_0x23bd('0x14')],_0x5a10b8);_0x4584e5(_0x1dbdec[_0x23bd('0x13')](0x1f4,_0x276112[_0x23bd('0x14')]));});});};
\ No newline at end of file
+var _0x5653=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','update','attributes','limit','UpdateWhatsappQueueReport','lodash','moment','randomstring'];(function(_0x3a664e,_0x31b92a){var _0x57940f=function(_0x50ef92){while(--_0x50ef92){_0x3a664e['push'](_0x3a664e['shift']());}};_0x57940f(++_0x31b92a);}(_0x5653,0x171));var _0x3565=function(_0x1ec2a1,_0x20ac0c){_0x1ec2a1=_0x1ec2a1-0x0;var _0x30227d=_0x5653[_0x1ec2a1];return _0x30227d;};'use strict';var _=require(_0x3565('0x0'));var util=require('util');var moment=require(_0x3565('0x1'));var BPromise=require('bluebird');var rs=require(_0x3565('0x2'));var fs=require('fs');var Redis=require(_0x3565('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3565('0x4'))(_0x3565('0x5'));var config=require(_0x3565('0x6'));var jayson=require(_0x3565('0x7'));var client=jayson['client'][_0x3565('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x31e2d4,_0x332715,_0x31f48c){return new BPromise(function(_0x4d76f3,_0x1bd323){return client[_0x3565('0x9')](_0x31e2d4,_0x31f48c)[_0x3565('0xa')](function(_0x214e14){logger[_0x3565('0xb')](_0x3565('0xc'),_0x332715,_0x3565('0xd'));logger[_0x3565('0xe')](_0x3565('0xf'),_0x332715,_0x3565('0xd'),JSON[_0x3565('0x10')](_0x214e14));if(_0x214e14[_0x3565('0x11')]){if(_0x214e14['error'][_0x3565('0x12')]===0x1f4){logger[_0x3565('0x11')](_0x3565('0xc'),_0x332715,_0x214e14['error'][_0x3565('0x13')]);return _0x1bd323(_0x214e14[_0x3565('0x11')][_0x3565('0x13')]);}logger[_0x3565('0x11')](_0x3565('0xc'),_0x332715,_0x214e14[_0x3565('0x11')][_0x3565('0x13')]);return _0x4d76f3(_0x214e14[_0x3565('0x11')]['message']);}else{logger[_0x3565('0xb')](_0x3565('0xc'),_0x332715,_0x3565('0xd'));_0x4d76f3(_0x214e14['result'][_0x3565('0x13')]);}})[_0x3565('0x14')](function(_0x1ada03){logger[_0x3565('0x11')](_0x3565('0xc'),_0x332715,_0x1ada03);_0x1bd323(_0x1ada03);});});}exports[_0x3565('0x15')]=function(_0x25b17d){var _0x476b37=this;return new Promise(function(_0xcdf950,_0x23fb5f){return db[_0x3565('0x16')][_0x3565('0x17')](_0x25b17d[_0x3565('0x18')],{'raw':_0x25b17d['options']?_0x25b17d[_0x3565('0x19')][_0x3565('0x1a')]===undefined?!![]:![]:!![]})[_0x3565('0xa')](function(_0x4869d1){logger[_0x3565('0xb')](_0x3565('0x15'),_0x25b17d);logger[_0x3565('0xe')](_0x3565('0x15'),_0x25b17d,JSON[_0x3565('0x10')](_0x4869d1));_0xcdf950(_0x4869d1);})[_0x3565('0x14')](function(_0x333cca){logger[_0x3565('0x11')]('CreateWhatsappQueueReport',_0x333cca[_0x3565('0x13')],_0x25b17d);_0x23fb5f(_0x476b37[_0x3565('0x11')](0x1f4,_0x333cca[_0x3565('0x13')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x34eef3){var _0x5f0b4a=this;return new Promise(function(_0x17bb53,_0x5171ce){return db[_0x3565('0x16')][_0x3565('0x1b')](_0x34eef3['body'],{'raw':_0x34eef3['options']?_0x34eef3[_0x3565('0x19')][_0x3565('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34eef3[_0x3565('0x19')]?_0x34eef3['options']['where']||null:null,'attributes':_0x34eef3[_0x3565('0x19')]?_0x34eef3[_0x3565('0x19')][_0x3565('0x1c')]||null:null,'limit':_0x34eef3[_0x3565('0x19')]?_0x34eef3[_0x3565('0x19')][_0x3565('0x1d')]||null:null})[_0x3565('0xa')](function(_0x4430c0){logger[_0x3565('0xb')](_0x3565('0x1e'),_0x34eef3);logger['debug'](_0x3565('0x1e'),_0x34eef3,JSON[_0x3565('0x10')](_0x4430c0));_0x17bb53(_0x4430c0);})[_0x3565('0x14')](function(_0x4d5654){logger[_0x3565('0x11')](_0x3565('0x1e'),_0x4d5654[_0x3565('0x13')],_0x34eef3);_0x5171ce(_0x5f0b4a[_0x3565('0x11')](0x1f4,_0x4d5654[_0x3565('0x13')]));});});};
\ No newline at end of file
index 37de096..2d91038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4155=['/:id','show','post','create','update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','/describe','describe'];(function(_0x370723,_0x179030){var _0x4f82bb=function(_0x49f0ee){while(--_0x49f0ee){_0x370723['push'](_0x370723['shift']());}};_0x4f82bb(++_0x179030);}(_0x4155,0x1d0));var _0x5415=function(_0x312796,_0x336851){_0x312796=_0x312796-0x0;var _0xb7fa48=_0x4155[_0x312796];return _0xb7fa48;};'use strict';var multer=require(_0x5415('0x0'));var util=require(_0x5415('0x1'));var path=require(_0x5415('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5415('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5415('0x4'));var config=require(_0x5415('0x5'));var controller=require(_0x5415('0x6'));router[_0x5415('0x7')]('/',auth[_0x5415('0x8')](),controller['index']);router[_0x5415('0x7')](_0x5415('0x9'),auth[_0x5415('0x8')](),controller[_0x5415('0xa')]);router[_0x5415('0x7')](_0x5415('0xb'),auth[_0x5415('0x8')](),controller[_0x5415('0xc')]);router[_0x5415('0xd')]('/',auth[_0x5415('0x8')](),controller[_0x5415('0xe')]);router['put'](_0x5415('0xb'),auth[_0x5415('0x8')](),controller[_0x5415('0xf')]);router[_0x5415('0x10')](_0x5415('0xb'),auth[_0x5415('0x8')](),controller[_0x5415('0x11')]);module[_0x5415('0x12')]=router;
\ No newline at end of file
+var _0xaba6=['show','post','create','put','/:id','update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2d3cf2,_0x5282a6){var _0x339acf=function(_0x1c0447){while(--_0x1c0447){_0x2d3cf2['push'](_0x2d3cf2['shift']());}};_0x339acf(++_0x5282a6);}(_0xaba6,0x1ec));var _0x6aba=function(_0x26158a,_0x35e5ab){_0x26158a=_0x26158a-0x0;var _0x1cf4ac=_0xaba6[_0x26158a];return _0x1cf4ac;};'use strict';var multer=require(_0x6aba('0x0'));var util=require('util');var path=require(_0x6aba('0x1'));var timeout=require(_0x6aba('0x2'));var express=require('express');var router=express[_0x6aba('0x3')]();var fs_extra=require(_0x6aba('0x4'));var auth=require(_0x6aba('0x5'));var interaction=require(_0x6aba('0x6'));var config=require(_0x6aba('0x7'));var controller=require(_0x6aba('0x8'));router[_0x6aba('0x9')]('/',auth[_0x6aba('0xa')](),controller[_0x6aba('0xb')]);router['get'](_0x6aba('0xc'),auth[_0x6aba('0xa')](),controller[_0x6aba('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x6aba('0xe')]);router[_0x6aba('0xf')]('/',auth[_0x6aba('0xa')](),controller[_0x6aba('0x10')]);router[_0x6aba('0x11')](_0x6aba('0x12'),auth['isAuthenticated'](),controller[_0x6aba('0x13')]);router[_0x6aba('0x14')](_0x6aba('0x12'),auth[_0x6aba('0xa')](),controller[_0x6aba('0x15')]);module['exports']=router;
\ No newline at end of file
index 5022cb2..e5a22d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd983=['exports','STRING','ENUM','account','DATE','sequelize'];(function(_0x1b5024,_0x5f1607){var _0x15fa73=function(_0x15eaa4){while(--_0x15eaa4){_0x1b5024['push'](_0x1b5024['shift']());}};_0x15fa73(++_0x5f1607);}(_0xd983,0x1df));var _0x3d98=function(_0x51a33a,_0x5f4e8a){_0x51a33a=_0x51a33a-0x0;var _0x557089=_0xd983[_0x51a33a];return _0x557089;};'use strict';var Sequelize=require(_0x3d98('0x0'));module[_0x3d98('0x1')]={'uniqueid':{'type':Sequelize[_0x3d98('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x3d98('0x3')](_0x3d98('0x4'),'agent','queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x3d98('0x5')]}};
\ No newline at end of file
+var _0x4f7b=['agent','queue','DATE','sequelize','exports','STRING','ENUM'];(function(_0x92521c,_0x1a7e36){var _0x98678d=function(_0x380bb6){while(--_0x380bb6){_0x92521c['push'](_0x92521c['shift']());}};_0x98678d(++_0x1a7e36);}(_0x4f7b,0x13e));var _0xb4f7=function(_0x29f7e6,_0x4df4e4){_0x29f7e6=_0x29f7e6-0x0;var _0x262c0f=_0x4f7b[_0x29f7e6];return _0x262c0f;};'use strict';var Sequelize=require(_0xb4f7('0x0'));module[_0xb4f7('0x1')]={'uniqueid':{'type':Sequelize[_0xb4f7('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xb4f7('0x3')]('account',_0xb4f7('0x4'),_0xb4f7('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xb4f7('0x6')]}};
\ No newline at end of file
index 4cc60a0..1cce076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0b=['update','then','destroy','sendStatus','stack','name','index','map','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','filter','merge','options','WhatsappTransferReport','include','catch','show','includeAll','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','apply','reject','save'];(function(_0x1038ec,_0x2e3eea){var _0x4ca945=function(_0x545381){while(--_0x545381){_0x1038ec['push'](_0x1038ec['shift']());}};_0x4ca945(++_0x2e3eea);}(_0x6a0b,0x181));var _0xb6a0=function(_0x18977a,_0xf1bf0c){_0x18977a=_0x18977a-0x0;var _0x5515e5=_0x6a0b[_0x18977a];return _0x5515e5;};'use strict';var emlformat=require(_0xb6a0('0x0'));var rimraf=require(_0xb6a0('0x1'));var zipdir=require(_0xb6a0('0x2'));var jsonpatch=require(_0xb6a0('0x3'));var rp=require('request-promise');var moment=require(_0xb6a0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb6a0('0x5'));var util=require('util');var path=require('path');var sox=require(_0xb6a0('0x6'));var csv=require(_0xb6a0('0x7'));var ejs=require(_0xb6a0('0x8'));var fs=require('fs');var fs_extra=require(_0xb6a0('0x9'));var _=require('lodash');var squel=require(_0xb6a0('0xa'));var crypto=require(_0xb6a0('0xb'));var jsforce=require(_0xb6a0('0xc'));var deskjs=require(_0xb6a0('0xd'));var toCsv=require(_0xb6a0('0x7'));var querystring=require(_0xb6a0('0xe'));var Papa=require(_0xb6a0('0xf'));var Redis=require(_0xb6a0('0x10'));var authService=require(_0xb6a0('0x11'));var qs=require(_0xb6a0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb6a0('0x13'))(_0xb6a0('0x14'));var utils=require(_0xb6a0('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb6a0('0x16'));var db=require(_0xb6a0('0x17'))['db'];function respondWithStatusCode(_0x1f7e4d,_0x3372bf){_0x3372bf=_0x3372bf||0xcc;return function(_0x54609b){if(_0x54609b){return _0x1f7e4d['sendStatus'](_0x3372bf);}return _0x1f7e4d[_0xb6a0('0x18')](_0x3372bf)[_0xb6a0('0x19')]();};}function respondWithResult(_0x28a8da,_0x2d12ec){_0x2d12ec=_0x2d12ec||0xc8;return function(_0x3f122a){if(_0x3f122a){return _0x28a8da[_0xb6a0('0x18')](_0x2d12ec)['json'](_0x3f122a);}};}function respondWithFilteredResult(_0x46a01c,_0xb8115b){return function(_0x3c63a4){if(_0x3c63a4){var _0x2a7abe=typeof _0xb8115b[_0xb6a0('0x1a')]===_0xb6a0('0x1b')&&typeof _0xb8115b[_0xb6a0('0x1c')]===_0xb6a0('0x1b');var _0x3e2ab7=_0x3c63a4[_0xb6a0('0x1d')];var _0x459b51=_0x2a7abe?0x0:_0xb8115b[_0xb6a0('0x1a')];var _0x202fc5=_0x2a7abe?_0x3c63a4[_0xb6a0('0x1d')]:_0xb8115b[_0xb6a0('0x1a')]+_0xb8115b[_0xb6a0('0x1c')];var _0x5a559f;if(_0x202fc5>=_0x3e2ab7){_0x202fc5=_0x3e2ab7;_0x5a559f=0xc8;}else{_0x5a559f=0xce;}_0x46a01c['status'](_0x5a559f);return _0x46a01c[_0xb6a0('0x1e')]('Content-Range',_0x459b51+'-'+_0x202fc5+'/'+_0x3e2ab7)[_0xb6a0('0x1f')](_0x3c63a4);}return null;};}function patchUpdates(_0x1e537f){return function(_0x42ea9d){try{jsonpatch[_0xb6a0('0x20')](_0x42ea9d,_0x1e537f,!![]);}catch(_0x234b00){return BPromise[_0xb6a0('0x21')](_0x234b00);}return _0x42ea9d[_0xb6a0('0x22')]();};}function saveUpdates(_0x9a5e15,_0x1aba7f){return function(_0x54b889){if(_0x54b889){return _0x54b889[_0xb6a0('0x23')](_0x9a5e15)[_0xb6a0('0x24')](function(_0x39a87a){return _0x39a87a;});}return null;};}function removeEntity(_0x3e9559,_0x43b096){return function(_0x50da6e){if(_0x50da6e){return _0x50da6e[_0xb6a0('0x25')]()[_0xb6a0('0x24')](function(){_0x3e9559[_0xb6a0('0x18')](0xcc)[_0xb6a0('0x19')]();});}};}function handleEntityNotFound(_0x2cb355,_0x1b1c37){return function(_0x19a847){if(!_0x19a847){_0x2cb355[_0xb6a0('0x26')](0x194);}return _0x19a847;};}function handleError(_0x38a343,_0x5b0a79){_0x5b0a79=_0x5b0a79||0x1f4;return function(_0xdee0ec){logger['error'](_0xdee0ec[_0xb6a0('0x27')]);if(_0xdee0ec[_0xb6a0('0x28')]){delete _0xdee0ec[_0xb6a0('0x28')];}_0x38a343['status'](_0x5b0a79)['send'](_0xdee0ec);};}exports[_0xb6a0('0x29')]=function(_0x517b34,_0x1318e2){var _0x372e32={},_0x324aea={},_0x5410d0={'count':0x0,'rows':[]};var _0x10e8ba=_[_0xb6a0('0x2a')](db['WhatsappTransferReport'][_0xb6a0('0x2b')],function(_0x16af9a){return{'name':_0x16af9a['fieldName'],'type':_0x16af9a['type']['key']};});_0x324aea[_0xb6a0('0x2c')]=_[_0xb6a0('0x2a')](_0x10e8ba,'name');_0x324aea[_0xb6a0('0x2d')]=_[_0xb6a0('0x2e')](_0x517b34['query']);_0x324aea[_0xb6a0('0x2f')]=_[_0xb6a0('0x30')](_0x324aea[_0xb6a0('0x2c')],_0x324aea[_0xb6a0('0x2d')]);_0x372e32[_0xb6a0('0x31')]=_[_0xb6a0('0x30')](_0x324aea['model'],qs[_0xb6a0('0x32')](_0x517b34[_0xb6a0('0x2d')][_0xb6a0('0x32')]));_0x372e32[_0xb6a0('0x31')]=_0x372e32['attributes'][_0xb6a0('0x33')]?_0x372e32[_0xb6a0('0x31')]:_0x324aea[_0xb6a0('0x2c')];if(!_0x517b34[_0xb6a0('0x2d')]['hasOwnProperty'](_0xb6a0('0x34'))){_0x372e32['limit']=qs[_0xb6a0('0x1c')](_0x517b34['query'][_0xb6a0('0x1c')]);_0x372e32[_0xb6a0('0x1a')]=qs[_0xb6a0('0x1a')](_0x517b34[_0xb6a0('0x2d')][_0xb6a0('0x1a')]);}_0x372e32[_0xb6a0('0x35')]=qs[_0xb6a0('0x36')](_0x517b34['query'][_0xb6a0('0x36')]);_0x372e32['where']=qs['filters'](_[_0xb6a0('0x37')](_0x517b34[_0xb6a0('0x2d')],_0x324aea[_0xb6a0('0x2f')]),_0x10e8ba);if(_0x517b34[_0xb6a0('0x2d')]['filter']){_0x372e32[_0xb6a0('0x38')]=_['merge'](_0x372e32[_0xb6a0('0x38')],{'$or':_['map'](_0x10e8ba,function(_0x41c140){if(_0x41c140['type']!=='VIRTUAL'){var _0x7e7372={};_0x7e7372[_0x41c140[_0xb6a0('0x28')]]={'$like':'%'+_0x517b34['query'][_0xb6a0('0x39')]+'%'};return _0x7e7372;}})});}_0x372e32=_[_0xb6a0('0x3a')]({},_0x372e32,_0x517b34[_0xb6a0('0x3b')]);var _0x42191f={'where':_0x372e32[_0xb6a0('0x38')]};return db[_0xb6a0('0x3c')][_0xb6a0('0x1d')](_0x42191f)[_0xb6a0('0x24')](function(_0x45d41f){_0x5410d0[_0xb6a0('0x1d')]=_0x45d41f;if(_0x517b34['query']['includeAll']){_0x372e32[_0xb6a0('0x3d')]=[{'all':!![]}];}return db[_0xb6a0('0x3c')]['findAll'](_0x372e32);})[_0xb6a0('0x24')](function(_0x247813){_0x5410d0['rows']=_0x247813;return _0x5410d0;})['then'](respondWithFilteredResult(_0x1318e2,_0x372e32))[_0xb6a0('0x3e')](handleError(_0x1318e2,null));};exports[_0xb6a0('0x3f')]=function(_0x3246ad,_0x5e065c){var _0x3e0b69={'raw':!![],'where':{'id':_0x3246ad['params']['id']}},_0x57f968={};_0x57f968['model']=_['keys'](db['WhatsappTransferReport'][_0xb6a0('0x2b')]);_0x57f968[_0xb6a0('0x2d')]=_[_0xb6a0('0x2e')](_0x3246ad[_0xb6a0('0x2d')]);_0x57f968[_0xb6a0('0x2f')]=_['intersection'](_0x57f968[_0xb6a0('0x2c')],_0x57f968[_0xb6a0('0x2d')]);_0x3e0b69[_0xb6a0('0x31')]=_[_0xb6a0('0x30')](_0x57f968[_0xb6a0('0x2c')],qs['fields'](_0x3246ad[_0xb6a0('0x2d')][_0xb6a0('0x32')]));_0x3e0b69['attributes']=_0x3e0b69['attributes'][_0xb6a0('0x33')]?_0x3e0b69[_0xb6a0('0x31')]:_0x57f968[_0xb6a0('0x2c')];if(_0x3246ad[_0xb6a0('0x2d')][_0xb6a0('0x40')]){_0x3e0b69[_0xb6a0('0x3d')]=[{'all':!![]}];}_0x3e0b69=_[_0xb6a0('0x3a')]({},_0x3e0b69,_0x3246ad['options']);return db['WhatsappTransferReport'][_0xb6a0('0x41')](_0x3e0b69)['then'](handleEntityNotFound(_0x5e065c,null))[_0xb6a0('0x24')](respondWithResult(_0x5e065c,null))['catch'](handleError(_0x5e065c,null));};exports[_0xb6a0('0x42')]=function(_0x36e405,_0x5d6b36){return db['WhatsappTransferReport']['create'](_0x36e405[_0xb6a0('0x43')],{})[_0xb6a0('0x24')](respondWithResult(_0x5d6b36,0xc9))[_0xb6a0('0x3e')](handleError(_0x5d6b36,null));};exports['update']=function(_0x18e8e3,_0x3bb2a7){if(_0x18e8e3[_0xb6a0('0x43')]['id']){delete _0x18e8e3[_0xb6a0('0x43')]['id'];}return db[_0xb6a0('0x3c')]['find']({'where':{'id':_0x18e8e3['params']['id']}})[_0xb6a0('0x24')](handleEntityNotFound(_0x3bb2a7,null))[_0xb6a0('0x24')](saveUpdates(_0x18e8e3['body'],null))['then'](respondWithResult(_0x3bb2a7,null))[_0xb6a0('0x3e')](handleError(_0x3bb2a7,null));};exports['destroy']=function(_0x1d50e7,_0x74821){return db[_0xb6a0('0x3c')]['find']({'where':{'id':_0x1d50e7[_0xb6a0('0x44')]['id']}})['then'](handleEntityNotFound(_0x74821,null))['then'](removeEntity(_0x74821,null))[_0xb6a0('0x3e')](handleError(_0x74821,null));};exports[_0xb6a0('0x45')]=function(_0x30cfc1,_0xcd24e2){return db['WhatsappTransferReport'][_0xb6a0('0x45')]()[_0xb6a0('0x24')](respondWithResult(_0xcd24e2,null))[_0xb6a0('0x3e')](handleError(_0xcd24e2,null));};
\ No newline at end of file
+var _0xad3a=['VIRTUAL','filter','options','include','rows','show','params','includeAll','create','catch','update','body','find','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','WhatsappTransferReport','fieldName','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','type'];(function(_0x349c32,_0x128d37){var _0x9bd759=function(_0x10eea6){while(--_0x10eea6){_0x349c32['push'](_0x349c32['shift']());}};_0x9bd759(++_0x128d37);}(_0xad3a,0x13d));var _0xaad3=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xad3a[_0x2e4aa2];return _0x5e6092;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xaad3('0x0'));var jsonpatch=require(_0xaad3('0x1'));var rp=require(_0xaad3('0x2'));var moment=require(_0xaad3('0x3'));var BPromise=require(_0xaad3('0x4'));var Mustache=require(_0xaad3('0x5'));var util=require(_0xaad3('0x6'));var path=require(_0xaad3('0x7'));var sox=require(_0xaad3('0x8'));var csv=require(_0xaad3('0x9'));var ejs=require(_0xaad3('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaad3('0xb'));var crypto=require(_0xaad3('0xc'));var jsforce=require(_0xaad3('0xd'));var deskjs=require(_0xaad3('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xaad3('0xf'));var Redis=require(_0xaad3('0x10'));var authService=require(_0xaad3('0x11'));var qs=require(_0xaad3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xaad3('0x13'))(_0xaad3('0x14'));var utils=require('../../config/utils');var config=require(_0xaad3('0x15'));var licenseUtil=require(_0xaad3('0x16'));var db=require(_0xaad3('0x17'))['db'];function respondWithStatusCode(_0x580439,_0x2497dd){_0x2497dd=_0x2497dd||0xcc;return function(_0x3bd4b3){if(_0x3bd4b3){return _0x580439[_0xaad3('0x18')](_0x2497dd);}return _0x580439['status'](_0x2497dd)[_0xaad3('0x19')]();};}function respondWithResult(_0x7357a3,_0x21cd5d){_0x21cd5d=_0x21cd5d||0xc8;return function(_0x562b5f){if(_0x562b5f){return _0x7357a3['status'](_0x21cd5d)[_0xaad3('0x1a')](_0x562b5f);}};}function respondWithFilteredResult(_0x9633a8,_0x50837f){return function(_0x115173){if(_0x115173){var _0x22fa15=typeof _0x50837f[_0xaad3('0x1b')]===_0xaad3('0x1c')&&typeof _0x50837f[_0xaad3('0x1d')]===_0xaad3('0x1c');var _0x36f4f2=_0x115173[_0xaad3('0x1e')];var _0x2bb688=_0x22fa15?0x0:_0x50837f[_0xaad3('0x1b')];var _0x3c2a95=_0x22fa15?_0x115173[_0xaad3('0x1e')]:_0x50837f[_0xaad3('0x1b')]+_0x50837f['limit'];var _0x583a35;if(_0x3c2a95>=_0x36f4f2){_0x3c2a95=_0x36f4f2;_0x583a35=0xc8;}else{_0x583a35=0xce;}_0x9633a8[_0xaad3('0x1f')](_0x583a35);return _0x9633a8[_0xaad3('0x20')](_0xaad3('0x21'),_0x2bb688+'-'+_0x3c2a95+'/'+_0x36f4f2)[_0xaad3('0x1a')](_0x115173);}return null;};}function patchUpdates(_0xa669df){return function(_0x5cfa2c){try{jsonpatch[_0xaad3('0x22')](_0x5cfa2c,_0xa669df,!![]);}catch(_0x2fe14c){return BPromise[_0xaad3('0x23')](_0x2fe14c);}return _0x5cfa2c[_0xaad3('0x24')]();};}function saveUpdates(_0x26e33d,_0x2233ea){return function(_0x28b685){if(_0x28b685){return _0x28b685['update'](_0x26e33d)[_0xaad3('0x25')](function(_0xbcf297){return _0xbcf297;});}return null;};}function removeEntity(_0x46f4aa,_0x318bad){return function(_0x348df8){if(_0x348df8){return _0x348df8[_0xaad3('0x26')]()['then'](function(){_0x46f4aa[_0xaad3('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x56255d,_0x463c1f){return function(_0x152f12){if(!_0x152f12){_0x56255d[_0xaad3('0x18')](0x194);}return _0x152f12;};}function handleError(_0x531424,_0x2dfeaa){_0x2dfeaa=_0x2dfeaa||0x1f4;return function(_0x1865d6){logger[_0xaad3('0x27')](_0x1865d6['stack']);if(_0x1865d6[_0xaad3('0x28')]){delete _0x1865d6[_0xaad3('0x28')];}_0x531424[_0xaad3('0x1f')](_0x2dfeaa)[_0xaad3('0x29')](_0x1865d6);};}exports[_0xaad3('0x2a')]=function(_0x49a968,_0x1ea29f){var _0x383f76={},_0xdb26f={},_0x1440b9={'count':0x0,'rows':[]};var _0x25b88b=_['map'](db[_0xaad3('0x2b')]['rawAttributes'],function(_0x476e67){return{'name':_0x476e67[_0xaad3('0x2c')],'type':_0x476e67['type'][_0xaad3('0x2d')]};});_0xdb26f[_0xaad3('0x2e')]=_[_0xaad3('0x2f')](_0x25b88b,_0xaad3('0x28'));_0xdb26f[_0xaad3('0x30')]=_[_0xaad3('0x31')](_0x49a968['query']);_0xdb26f['filters']=_['intersection'](_0xdb26f[_0xaad3('0x2e')],_0xdb26f[_0xaad3('0x30')]);_0x383f76[_0xaad3('0x32')]=_[_0xaad3('0x33')](_0xdb26f[_0xaad3('0x2e')],qs[_0xaad3('0x34')](_0x49a968[_0xaad3('0x30')][_0xaad3('0x34')]));_0x383f76[_0xaad3('0x32')]=_0x383f76[_0xaad3('0x32')][_0xaad3('0x35')]?_0x383f76['attributes']:_0xdb26f[_0xaad3('0x2e')];if(!_0x49a968['query'][_0xaad3('0x36')](_0xaad3('0x37'))){_0x383f76[_0xaad3('0x1d')]=qs[_0xaad3('0x1d')](_0x49a968[_0xaad3('0x30')][_0xaad3('0x1d')]);_0x383f76[_0xaad3('0x1b')]=qs[_0xaad3('0x1b')](_0x49a968[_0xaad3('0x30')][_0xaad3('0x1b')]);}_0x383f76[_0xaad3('0x38')]=qs[_0xaad3('0x39')](_0x49a968[_0xaad3('0x30')]['sort']);_0x383f76[_0xaad3('0x3a')]=qs['filters'](_[_0xaad3('0x3b')](_0x49a968[_0xaad3('0x30')],_0xdb26f[_0xaad3('0x3c')]),_0x25b88b);if(_0x49a968[_0xaad3('0x30')]['filter']){_0x383f76[_0xaad3('0x3a')]=_[_0xaad3('0x3d')](_0x383f76[_0xaad3('0x3a')],{'$or':_[_0xaad3('0x2f')](_0x25b88b,function(_0x464634){if(_0x464634[_0xaad3('0x3e')]!==_0xaad3('0x3f')){var _0x164c95={};_0x164c95[_0x464634['name']]={'$like':'%'+_0x49a968[_0xaad3('0x30')][_0xaad3('0x40')]+'%'};return _0x164c95;}})});}_0x383f76=_[_0xaad3('0x3d')]({},_0x383f76,_0x49a968[_0xaad3('0x41')]);var _0x4e1afe={'where':_0x383f76['where']};return db[_0xaad3('0x2b')][_0xaad3('0x1e')](_0x4e1afe)[_0xaad3('0x25')](function(_0x410764){_0x1440b9['count']=_0x410764;if(_0x49a968[_0xaad3('0x30')]['includeAll']){_0x383f76[_0xaad3('0x42')]=[{'all':!![]}];}return db[_0xaad3('0x2b')]['findAll'](_0x383f76);})['then'](function(_0x2c0010){_0x1440b9[_0xaad3('0x43')]=_0x2c0010;return _0x1440b9;})[_0xaad3('0x25')](respondWithFilteredResult(_0x1ea29f,_0x383f76))['catch'](handleError(_0x1ea29f,null));};exports[_0xaad3('0x44')]=function(_0x3d3215,_0x1bf767){var _0x26a42a={'raw':!![],'where':{'id':_0x3d3215[_0xaad3('0x45')]['id']}},_0x320148={};_0x320148[_0xaad3('0x2e')]=_[_0xaad3('0x31')](db[_0xaad3('0x2b')]['rawAttributes']);_0x320148[_0xaad3('0x30')]=_[_0xaad3('0x31')](_0x3d3215['query']);_0x320148[_0xaad3('0x3c')]=_[_0xaad3('0x33')](_0x320148['model'],_0x320148['query']);_0x26a42a[_0xaad3('0x32')]=_[_0xaad3('0x33')](_0x320148[_0xaad3('0x2e')],qs[_0xaad3('0x34')](_0x3d3215['query']['fields']));_0x26a42a['attributes']=_0x26a42a['attributes'][_0xaad3('0x35')]?_0x26a42a[_0xaad3('0x32')]:_0x320148[_0xaad3('0x2e')];if(_0x3d3215['query'][_0xaad3('0x46')]){_0x26a42a[_0xaad3('0x42')]=[{'all':!![]}];}_0x26a42a=_[_0xaad3('0x3d')]({},_0x26a42a,_0x3d3215['options']);return db[_0xaad3('0x2b')]['find'](_0x26a42a)[_0xaad3('0x25')](handleEntityNotFound(_0x1bf767,null))[_0xaad3('0x25')](respondWithResult(_0x1bf767,null))['catch'](handleError(_0x1bf767,null));};exports[_0xaad3('0x47')]=function(_0x4f5547,_0x1428eb){return db[_0xaad3('0x2b')][_0xaad3('0x47')](_0x4f5547['body'],{})[_0xaad3('0x25')](respondWithResult(_0x1428eb,0xc9))[_0xaad3('0x48')](handleError(_0x1428eb,null));};exports[_0xaad3('0x49')]=function(_0x12a6d4,_0xa8b7a2){if(_0x12a6d4[_0xaad3('0x4a')]['id']){delete _0x12a6d4['body']['id'];}return db[_0xaad3('0x2b')]['find']({'where':{'id':_0x12a6d4[_0xaad3('0x45')]['id']}})['then'](handleEntityNotFound(_0xa8b7a2,null))[_0xaad3('0x25')](saveUpdates(_0x12a6d4[_0xaad3('0x4a')],null))['then'](respondWithResult(_0xa8b7a2,null))['catch'](handleError(_0xa8b7a2,null));};exports[_0xaad3('0x26')]=function(_0x17a1e9,_0x139738){return db[_0xaad3('0x2b')][_0xaad3('0x4b')]({'where':{'id':_0x17a1e9[_0xaad3('0x45')]['id']}})[_0xaad3('0x25')](handleEntityNotFound(_0x139738,null))[_0xaad3('0x25')](removeEntity(_0x139738,null))[_0xaad3('0x48')](handleError(_0x139738,null));};exports['describe']=function(_0x1ac6de,_0x3fda25){return db['WhatsappTransferReport']['describe']()[_0xaad3('0x25')](respondWithResult(_0x3fda25,null))[_0xaad3('0x48')](handleError(_0x3fda25,null));};
\ No newline at end of file
index f5b73c5..3be45b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a33=['./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x2c89a9,_0x59f83e){var _0xe67a69=function(_0x5c6ce0){while(--_0x5c6ce0){_0x2c89a9['push'](_0x2c89a9['shift']());}};_0xe67a69(++_0x59f83e);}(_0x7a33,0x1c7));var _0x37a3=function(_0x38924e,_0x1771bd){_0x38924e=_0x38924e-0x0;var _0x562eec=_0x7a33[_0x38924e];return _0x562eec;};'use strict';var _=require('lodash');var util=require(_0x37a3('0x0'));var logger=require(_0x37a3('0x1'))(_0x37a3('0x2'));var moment=require(_0x37a3('0x3'));var BPromise=require(_0x37a3('0x4'));var rp=require(_0x37a3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x37a3('0x6'));var attributes=require(_0x37a3('0x7'));module[_0x37a3('0x8')]=function(_0x171d9c,_0x47d5b6){return _0x171d9c[_0x37a3('0x9')](_0x37a3('0xa'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x637d=['./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x8f0542,_0x5a0282){var _0x290ab7=function(_0x19ade8){while(--_0x19ade8){_0x8f0542['push'](_0x8f0542['shift']());}};_0x290ab7(++_0x5a0282);}(_0x637d,0x109));var _0xd637=function(_0x2d7966,_0x53fb36){_0x2d7966=_0x2d7966-0x0;var _0x22a950=_0x637d[_0x2d7966];return _0x22a950;};'use strict';var _=require(_0xd637('0x0'));var util=require(_0xd637('0x1'));var logger=require(_0xd637('0x2'))(_0xd637('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd637('0x4'));var fs=require('fs');var path=require(_0xd637('0x5'));var rimraf=require(_0xd637('0x6'));var config=require(_0xd637('0x7'));var attributes=require(_0xd637('0x8'));module['exports']=function(_0x1b5d40,_0x79a117){return _0x1b5d40[_0xd637('0x9')](_0xd637('0xa'),attributes,{'tableName':_0xd637('0xb'),'paranoid':![],'indexes':[{'name':_0xd637('0xc'),'fields':[_0xd637('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 85d0c93..e78b739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc5=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x2a371a,_0x2f5ad0){var _0x40ef68=function(_0x25d051){while(--_0x25d051){_0x2a371a['push'](_0x2a371a['shift']());}};_0x40ef68(++_0x2f5ad0);}(_0xdfc5,0xa1));var _0x5dfc=function(_0x3ecd74,_0x5a29dc){_0x3ecd74=_0x3ecd74-0x0;var _0x3c71e3=_0xdfc5[_0x3ecd74];return _0x3c71e3;};'use strict';var _=require(_0x5dfc('0x0'));var util=require(_0x5dfc('0x1'));var moment=require(_0x5dfc('0x2'));var BPromise=require(_0x5dfc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5dfc('0x4'));var db=require(_0x5dfc('0x5'))['db'];var utils=require(_0x5dfc('0x6'));var logger=require('../../config/logger')(_0x5dfc('0x7'));var config=require('../../config/environment');var jayson=require(_0x5dfc('0x8'));var client=jayson[_0x5dfc('0x9')][_0x5dfc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3bfa66,_0x403433,_0x28f9bc){return new BPromise(function(_0x323d69,_0x12c0b7){return client[_0x5dfc('0xb')](_0x3bfa66,_0x28f9bc)[_0x5dfc('0xc')](function(_0x1ad7b4){logger[_0x5dfc('0xd')](_0x5dfc('0xe'),_0x403433,_0x5dfc('0xf'));logger[_0x5dfc('0x10')](_0x5dfc('0x11'),_0x403433,_0x5dfc('0xf'),JSON[_0x5dfc('0x12')](_0x1ad7b4));if(_0x1ad7b4[_0x5dfc('0x13')]){if(_0x1ad7b4['error']['code']===0x1f4){logger[_0x5dfc('0x13')]('WhatsappTransferReport,\x20%s,\x20%s',_0x403433,_0x1ad7b4['error'][_0x5dfc('0x14')]);return _0x12c0b7(_0x1ad7b4[_0x5dfc('0x13')][_0x5dfc('0x14')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x403433,_0x1ad7b4[_0x5dfc('0x13')][_0x5dfc('0x14')]);return _0x323d69(_0x1ad7b4[_0x5dfc('0x13')][_0x5dfc('0x14')]);}else{logger[_0x5dfc('0xd')](_0x5dfc('0xe'),_0x403433,_0x5dfc('0xf'));_0x323d69(_0x1ad7b4[_0x5dfc('0x15')][_0x5dfc('0x14')]);}})[_0x5dfc('0x16')](function(_0x1b893e){logger[_0x5dfc('0x13')]('WhatsappTransferReport,\x20%s,\x20%s',_0x403433,_0x1b893e);_0x12c0b7(_0x1b893e);});});}
\ No newline at end of file
+var _0x00bc=['request\x20sent','debug','stringify','error','message','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','request','then','info','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x35dab2,_0xa93213){var _0x237b23=function(_0x1f6907){while(--_0x1f6907){_0x35dab2['push'](_0x35dab2['shift']());}};_0x237b23(++_0xa93213);}(_0x00bc,0x18d));var _0xc00b=function(_0x1152c1,_0x5d31cb){_0x1152c1=_0x1152c1-0x0;var _0x997148=_0x00bc[_0x1152c1];return _0x997148;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc00b('0x0'));var rs=require(_0xc00b('0x1'));var fs=require('fs');var Redis=require(_0xc00b('0x2'));var db=require(_0xc00b('0x3'))['db'];var utils=require(_0xc00b('0x4'));var logger=require('../../config/logger')(_0xc00b('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc00b('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x422a2b,_0x28ef4c,_0x523152){return new BPromise(function(_0x11e6ff,_0x54c19b){return client[_0xc00b('0x7')](_0x422a2b,_0x523152)[_0xc00b('0x8')](function(_0x2ad3b0){logger[_0xc00b('0x9')](_0xc00b('0xa'),_0x28ef4c,_0xc00b('0xb'));logger[_0xc00b('0xc')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x28ef4c,_0xc00b('0xb'),JSON[_0xc00b('0xd')](_0x2ad3b0));if(_0x2ad3b0['error']){if(_0x2ad3b0[_0xc00b('0xe')]['code']===0x1f4){logger[_0xc00b('0xe')](_0xc00b('0xa'),_0x28ef4c,_0x2ad3b0[_0xc00b('0xe')][_0xc00b('0xf')]);return _0x54c19b(_0x2ad3b0['error'][_0xc00b('0xf')]);}logger[_0xc00b('0xe')](_0xc00b('0xa'),_0x28ef4c,_0x2ad3b0['error'][_0xc00b('0xf')]);return _0x11e6ff(_0x2ad3b0[_0xc00b('0xe')][_0xc00b('0xf')]);}else{logger[_0xc00b('0x9')](_0xc00b('0xa'),_0x28ef4c,_0xc00b('0xb'));_0x11e6ff(_0x2ad3b0['result']['message']);}})[_0xc00b('0x10')](function(_0x1f7e9f){logger[_0xc00b('0xe')](_0xc00b('0xa'),_0x28ef4c,_0x1f7e9f);_0x54c19b(_0x1f7e9f);});});}
\ No newline at end of file
index a7e487b..3c2a95a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b20=['None','App\x20Ready!','catch','log','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','seedDB','default','listen','info','start','filter','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','Online\x20apps:','online','join','Offline\x20apps:','status'];(function(_0x1dfc98,_0x3264e9){var _0x57430f=function(_0x47404d){while(--_0x47404d){_0x1dfc98['push'](_0x1dfc98['shift']());}};_0x57430f(++_0x3264e9);}(_0x5b20,0x86));var _0x05b2=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x5b20[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x05b2('0x0'));var db=require(_0x05b2('0x1'))['db'];var seedDb=require(_0x05b2('0x2'));var checkLicense=require(_0x05b2('0x3'));var rpc=require(_0x05b2('0x4'));var config=require(_0x05b2('0x5'));var logger=require(_0x05b2('0x6'))(_0x05b2('0x7'));var pm2=require(_0x05b2('0x8'));var pm2Config=require(_0x05b2('0x9'));var schedule=require(_0x05b2('0xa'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x05b2('0xb'));var transcribe=require(_0x05b2('0xc'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0x05b2('0xd')][_0x05b2('0xe')]()[_0x05b2('0xf')](function(){if(config[_0x05b2('0x10')]){return seedDb[_0x05b2('0x11')]();}})[_0x05b2('0xf')](function(){return checkLicense[_0x05b2('0x11')]();})[_0x05b2('0xf')](function(){return rpc[_0x05b2('0x12')]();})[_0x05b2('0xf')](function(_0x9a7fd7){logger[_0x05b2('0x13')](_0x9a7fd7);return chat[_0x05b2('0x14')]();})[_0x05b2('0xf')](function(){return whatsapp[_0x05b2('0x14')]();})[_0x05b2('0xf')](function(){return schedule['start']();})[_0x05b2('0xf')](function(){return transcribe[_0x05b2('0x14')]();})[_0x05b2('0xf')](function(){return provider[_0x05b2('0x14')]();})['then'](function(_0x1339ad){logger[_0x05b2('0x13')](_0x1339ad);return pm2[_0x05b2('0x14')](pm2Config);})['then'](function(_0x4e5c5d){var _0x961aca=_0x4e5c5d[_0x05b2('0x15')](function(_0x4d6d7e){return typeof _0x4d6d7e['exitCode']===_0x05b2('0x16')&&_0x4d6d7e[_0x05b2('0x17')]>=0x0;});if(_0x961aca[_0x05b2('0x18')]>0x0){throw new Error(_0x961aca[_0x05b2('0x18')]+_0x05b2('0x19')+_[_0x05b2('0x1a')](_0x961aca,function(_0x290cce){return'\x22'+_0x290cce[_0x05b2('0x1b')][_0x05b2('0x1c')]+'\x22';}));}logger[_0x05b2('0x13')](_0x05b2('0x1d'),_[_0x05b2('0x1a')](_[_0x05b2('0x15')](_0x4e5c5d,{'status':_0x05b2('0x1e')}),_0x05b2('0x1c'))[_0x05b2('0x1f')]());logger['info'](_0x05b2('0x20'),_[_0x05b2('0x1a')](_[_0x05b2('0x15')](_0x4e5c5d,function(_0x41bea5){return _0x41bea5[_0x05b2('0x21')]!==_0x05b2('0x1e');}),_0x05b2('0x1c'))['join']()||_0x05b2('0x22'));console['log'](_0x05b2('0x23'));})[_0x05b2('0x24')](function(_0x4b2eac){console[_0x05b2('0x25')](_0x05b2('0x26'),_0x4b2eac);logger[_0x05b2('0x27')](_0x05b2('0x28'),_0x4b2eac);process[_0x05b2('0x29')](0x1);});}main();
\ No newline at end of file
+var _0x81bd=['join','Offline\x20apps:','status','None','log','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','then','default','listen','info','start','filter','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','Online\x20apps:','online'];(function(_0x486c22,_0x306c6d){var _0xbad918=function(_0x419503){while(--_0x419503){_0x486c22['push'](_0x486c22['shift']());}};_0xbad918(++_0x306c6d);}(_0x81bd,0x7c));var _0xd81b=function(_0x378fc7,_0x5181a3){_0x378fc7=_0x378fc7-0x0;var _0x44dfec=_0x81bd[_0x378fc7];return _0x44dfec;};'use strict';var _=require(_0xd81b('0x0'));var db=require(_0xd81b('0x1'))['db'];var seedDb=require(_0xd81b('0x2'));var checkLicense=require(_0xd81b('0x3'));var rpc=require(_0xd81b('0x4'));var config=require(_0xd81b('0x5'));var logger=require(_0xd81b('0x6'))('app');var pm2=require(_0xd81b('0x7'));var pm2Config=require(_0xd81b('0x8'));var schedule=require(_0xd81b('0x9'));var chat=require('./config/schedule/chat');var whatsapp=require(_0xd81b('0xa'));var transcribe=require(_0xd81b('0xb'));var provider=require(_0xd81b('0xc'));function main(){return db['sequelize']['sync']()[_0xd81b('0xd')](function(){if(config['seedDB']){return seedDb[_0xd81b('0xe')]();}})[_0xd81b('0xd')](function(){return checkLicense[_0xd81b('0xe')]();})[_0xd81b('0xd')](function(){return rpc[_0xd81b('0xf')]();})[_0xd81b('0xd')](function(_0x4391be){logger[_0xd81b('0x10')](_0x4391be);return chat[_0xd81b('0x11')]();})[_0xd81b('0xd')](function(){return whatsapp[_0xd81b('0x11')]();})[_0xd81b('0xd')](function(){return schedule[_0xd81b('0x11')]();})['then'](function(){return transcribe[_0xd81b('0x11')]();})['then'](function(){return provider[_0xd81b('0x11')]();})[_0xd81b('0xd')](function(_0x5f0b6b){logger[_0xd81b('0x10')](_0x5f0b6b);return pm2['start'](pm2Config);})[_0xd81b('0xd')](function(_0x41bf7a){var _0x6c6041=_0x41bf7a[_0xd81b('0x12')](function(_0x128162){return typeof _0x128162['exitCode']===_0xd81b('0x13')&&_0x128162[_0xd81b('0x14')]>=0x0;});if(_0x6c6041['length']>0x0){throw new Error(_0x6c6041[_0xd81b('0x15')]+_0xd81b('0x16')+_[_0xd81b('0x17')](_0x6c6041,function(_0x15e860){return'\x22'+_0x15e860[_0xd81b('0x18')][_0xd81b('0x19')]+'\x22';}));}logger[_0xd81b('0x10')](_0xd81b('0x1a'),_[_0xd81b('0x17')](_[_0xd81b('0x12')](_0x41bf7a,{'status':_0xd81b('0x1b')}),_0xd81b('0x19'))[_0xd81b('0x1c')]());logger[_0xd81b('0x10')](_0xd81b('0x1d'),_[_0xd81b('0x17')](_['filter'](_0x41bf7a,function(_0x4d566e){return _0x4d566e[_0xd81b('0x1e')]!==_0xd81b('0x1b');}),_0xd81b('0x19'))['join']()||_0xd81b('0x1f'));console[_0xd81b('0x20')]('App\x20Ready!');})[_0xd81b('0x21')](function(_0x13d687){console[_0xd81b('0x20')](_0xd81b('0x22'),_0x13d687);logger[_0xd81b('0x23')](_0xd81b('0x24'),_0x13d687);process[_0xd81b('0x25')](0x1);});}main();
\ No newline at end of file
index 6f76395..d4c4a5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['showWebBar','lastLoginAt','crudPermissions','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','settingsEnabled','wssPort','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','user','ChatInteraction','findOne','params','then','status','disposition','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','Basic','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','User','find','sub','Setting','allowedLoginAttempts','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','use','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','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~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','sign','options','promisify','toString','hex','floor','now','HS512','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','crypto','util','moment','secrets','session','role','name','internal','email','userpic','voicePause','chatPause','faxPause','smsPause'];(function(_0x2a238a,_0x1d5054){var _0xeef802=function(_0x583637){while(--_0x583637){_0x2a238a['push'](_0x2a238a['shift']());}};_0xeef802(++_0x1d5054);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var hardwareConf=require(_0x49c4('0x0'));var licenseUtil=require(_0x49c4('0x1'));var encryptor=require(_0x49c4('0x2'));var _=require(_0x49c4('0x3'));var jwt=require(_0x49c4('0x4'));var expressJwt=require(_0x49c4('0x5'));var compose=require('composable-middleware');var basicAuth=require('basic-auth');var crypto=require(_0x49c4('0x6'));var BPromise=require('bluebird');var util=require(_0x49c4('0x7'));var moment=require(_0x49c4('0x8'));var validateJwt=expressJwt({'secret':config[_0x49c4('0x9')][_0x49c4('0xa')]});var userAttributes=['id',_0x49c4('0xb'),'fullname',_0x49c4('0xc'),_0x49c4('0xd'),_0x49c4('0xe'),_0x49c4('0xf'),'permissions','md5secret',_0x49c4('0x10'),_0x49c4('0x11'),'mailPause',_0x49c4('0x12'),_0x49c4('0x13'),'openchannelPause','pauseType',_0x49c4('0x14'),_0x49c4('0x15'),'lastPauseAt',_0x49c4('0x16'),_0x49c4('0x17'),'passwordResetAt',_0x49c4('0x18'),_0x49c4('0x19'),_0x49c4('0x1a'),_0x49c4('0x1b'),_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),'phoneBarPrefixRequired',_0x49c4('0x20'),_0x49c4('0x21'),_0x49c4('0x22'),_0x49c4('0x23'),_0x49c4('0x24'),'privacyEnabled',_0x49c4('0x25'),_0x49c4('0x26'),'downloadVoiceRecordings','downloadOmnichannelInteractions',_0x49c4('0x27'),_0x49c4('0x28'),_0x49c4('0x29'),'chatAutoanswer',_0x49c4('0x2a'),'emailAutoanswer',_0x49c4('0x2b'),_0x49c4('0x2c'),_0x49c4('0x2d'),_0x49c4('0x2e'),_0x49c4('0x2f'),_0x49c4('0x30'),_0x49c4('0x31'),_0x49c4('0x32'),_0x49c4('0x33')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])['use'](function(_0x1c99b1,_0x4f0b62,_0x592bb8){if(_0x1c99b1[_0x49c4('0x34')]){_0x592bb8();}else{return db[_0x49c4('0x35')][_0x49c4('0x36')]({'where':{'id':_0x1c99b1[_0x49c4('0x37')]['id']},'attributes':['id','closed','disposition'],'raw':!![]})[_0x49c4('0x38')](function(_0x9cb797){if(_0x9cb797&&_0x9cb797['closed']){return _0x4f0b62[_0x49c4('0x39')](_0x9cb797[_0x49c4('0x3a')]===_0x49c4('0x3b')?0x195:0x193)[_0x49c4('0x3c')]({'message':_0x9cb797['disposition']==='unmanaged'?_0x49c4('0x3d'):'Forbidden.'});}else{_0x592bb8();}})[_0x49c4('0x3e')](function(_0x3852b2){_0x592bb8(_0x3852b2);});}});};exports[_0x49c4('0x3f')]=function isAuthenticated(_0x372a47){return compose()['use'](function(_0x889909,_0x2b2793,_0x46e04d){var _0x4f28a2;if(_0x889909[_0x49c4('0x40')][_0x49c4('0x41')]){if(_[_0x49c4('0x42')](_0x889909[_0x49c4('0x40')][_0x49c4('0x41')],_0x49c4('0x43'))){var _0x46f7ea=basicAuth(_0x889909);db['User']['find']({'where':{'name':_0x46f7ea['name']}})[_0x49c4('0x38')](function(_0x7ee704){if(!_0x7ee704||!_0x7ee704[_0x49c4('0x44')](_0x46f7ea[_0x49c4('0x45')])){return _0x2b2793[_0x49c4('0x39')](0x191)['json']({'message':_0x49c4('0x46')});}_0x889909[_0x49c4('0x34')]={'id':_0x7ee704['id']};_0x46e04d();})[_0x49c4('0x3e')](function(_0x24bba9){_0x46e04d(_0x24bba9);});}else if(_['startsWith'](_0x889909['headers'][_0x49c4('0x41')],_0x49c4('0x47'))){validateJwt(_0x889909,_0x2b2793,_0x46e04d);}else{if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}}}else if(_0x889909['query'][_0x49c4('0x49')]){try{var _0x84c621={'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x889909['query'][_0x49c4('0x49')],_0x84c621)[_0x49c4('0x38')](function(_0x3bec0a){return db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x3bec0a[_0x49c4('0x4d')]}})[_0x49c4('0x38')](function(_0x27ef5f){_0x4f28a2=_0x27ef5f;return db[_0x49c4('0x4e')]['findOne']({'where':{'id':0x1},'attributes':[_0x49c4('0x4f'),'blockDuration'],'raw':!![]});})[_0x49c4('0x38')](function(_0x349791){if(!_0x4f28a2||!_[_0x49c4('0x50')](_0x4f28a2[_0x49c4('0x51')],_0x3bec0a['nonce'])){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x52')});}if(_0x4f28a2['disabled']){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}if(_0x4f28a2[_0x49c4('0x54')]){if(_0x349791[_0x49c4('0x55')]>0x0){if(moment(_0x4f28a2[_0x49c4('0x56')])[_0x49c4('0x57')](_0x349791[_0x49c4('0x55')],_0x49c4('0x58'))>moment()){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}}_0x889909[_0x49c4('0x34')]={'id':_0x4f28a2['id']};_0x46e04d();});})[_0x49c4('0x3e')](function(){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});});}catch(_0x248c0a){_0x46e04d(_0x248c0a);}}else if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}})[_0x49c4('0x59')](function(_0x4e38bc,_0x212366,_0x49829e){if(_0x4e38bc[_0x49c4('0x34')]){db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x4e38bc[_0x49c4('0x34')]['id']},'attributes':userAttributes})[_0x49c4('0x38')](function(_0x281b83){if(!_0x281b83){return _0x212366['status'](0x194)['json']({'message':_0x49c4('0x5a')});}_0x4e38bc[_0x49c4('0x34')]=_0x281b83;_0x49829e();})[_0x49c4('0x3e')](function(_0x117151){_0x49829e(_0x117151);});}else if(_0x372a47){_0x49829e();}else{return _0x212366['status'](0x194)[_0x49c4('0x3c')]({'message':_0x49c4('0x5b')});}});};exports[_0x49c4('0x5c')]=function canUpdate(){return compose()[_0x49c4('0x59')](function(_0x81a674,_0x3bde49,_0x1a9593){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5640d3){if(_0x5640d3[_0x49c4('0x5e')]){_0x1a9593();}else{return _0x3bde49['status'](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x5f')});}})[_0x49c4('0x3e')](function(_0x258abe){_0x1a9593(_0x258abe);});});};exports[_0x49c4('0x60')]=function isWebrtcLicence(){return compose()['use'](function(_0x592e8e,_0x15b674,_0x384862){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5d4790){if(_0x5d4790[_0x49c4('0x61')]){_0x384862();}else{return _0x15b674['status'](0x193)[_0x49c4('0x3c')]({'message':'Forbidden'});}})[_0x49c4('0x3e')](function(_0x906d3){_0x384862(_0x906d3);});});};exports[_0x49c4('0x62')]=function(_0x27adfe,_0x2d8087,_0x30bea5){_0x27adfe[_0x49c4('0x62')]=!![];return _0x30bea5();};exports['signToken']=function signToken(_0x3b731f){return signJwt(_0x3b731f);};exports[_0x49c4('0x63')]=function(_0x4a5c34,_0x1e1ac4){if(!_0x4a5c34[_0x49c4('0x34')]){return _0x1e1ac4[_0x49c4('0x39')](0x194)[_0x49c4('0x3c')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x5d8bf0={'payload':{'id':_0x4a5c34[_0x49c4('0x34')]['id'],'role':_0x4a5c34['user'][_0x49c4('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5d8bf0)[_0x49c4('0x38')](function(_0x3811b2){_0x1e1ac4[_0x49c4('0x64')](_0x49c4('0x65'),_0x3811b2);_0x1e1ac4[_0x49c4('0x66')](_0x49c4('0x67'));})['catch'](function(_0x1f26c2){return _0x1e1ac4[_0x49c4('0x39')](0x1f4)[_0x49c4('0x68')](_0x1f26c2);});};exports[_0x49c4('0x69')]=function(_0x17ef75){if(_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x51')])||_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x6b')])){return null;}else{return createJwt(_0x17ef75);}};exports[_0x49c4('0x6c')]=function(_0x5b822f){_0x5b822f['apiKeyNonce']=generateNonce();_0x5b822f[_0x49c4('0x6b')]=generateIssuedAt();return createJwt(_0x5b822f);};exports[_0x49c4('0x6d')]=function(_0x527e74,_0x59a8bc){var _0x77163d=_0x527e74['query']['apikey'];if(_0x77163d){var _0x3208c2={'nonce':_0x59a8bc[_0x49c4('0x51')],'iat':_0x59a8bc[_0x49c4('0x6b')],'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf[_0x49c4('0x4a')]()};return verifyJwt(_0x77163d,_0x3208c2)[_0x49c4('0x38')](function(){return generateApiKey(_0x59a8bc);});}else{throw{'message':_0x49c4('0x6e')};}};exports['validatePasswordPattern']=function(_0x859dde){var _0xcc6a2b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xcc6a2b[_0x49c4('0x6f')](_0x859dde))throw new db[(_0x49c4('0x70'))][(_0x49c4('0x71'))](_0x49c4('0x72'));return;};exports['validatePasswordHistory']=function(_0x5c7ddd,_0x1ef0c1,_0x155c43){var _0x2a6308=encryptor[_0x49c4('0x73')](_0x1ef0c1)[_0x49c4('0x74')](',');for(var _0x6b2592=0x0;_0x6b2592<_0x155c43;_0x6b2592++){if(!_0x2a6308[_0x6b2592])break;if(_0x5c7ddd[_0x49c4('0x75')]()===_0x2a6308[_0x6b2592]['toLowerCase']()){var _0x45d715=util[_0x49c4('0x76')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x155c43);if(_0x155c43===0x1){_0x45d715=_0x49c4('0x77');}throw new db['Sequelize'][(_0x49c4('0x71'))](_0x45d715);}}return;};exports[_0x49c4('0x78')]=function(_0x9eaa84,_0x2fe89a){var _0x845f7e=_0x2fe89a?encryptor[_0x49c4('0x73')](_0x2fe89a)[_0x49c4('0x74')](','):[];if(_0x845f7e[_0x49c4('0x79')]===0x5){_0x845f7e['splice'](-0x1,0x1);}_0x845f7e[_0x49c4('0x7a')](_0x9eaa84);return encryptor[_0x49c4('0x7b')](_0x845f7e['join'](','));};function signJwt(_0x10dec7){var _0x299e74=BPromise['promisify'](jwt[_0x49c4('0x7c')],{'context':jwt});var _0x42e0e6=_0x10dec7['secret']||config['secrets']['session'];return new BPromise(function(_0x513879,_0xc43386){_0x299e74(_0x10dec7['payload'],_0x42e0e6,_0x10dec7[_0x49c4('0x7d')])[_0x49c4('0x38')](function(_0x515240){_0x513879(_0x515240);})[_0x49c4('0x3e')](function(_0xdb2b33){_0xc43386(_0xdb2b33);});});}function verifyJwt(_0x5ac9f0,_0x34272f,_0x3dcf4c){var _0x167e84=BPromise[_0x49c4('0x7e')](jwt['verify'],{'context':jwt});var _0x431921=_0x3dcf4c||config[_0x49c4('0x9')][_0x49c4('0xa')];return new BPromise(function(_0x20e97d,_0x5d3375){_0x167e84(_0x5ac9f0,_0x431921,_0x34272f)[_0x49c4('0x38')](function(_0x4a93bc){_0x20e97d(_0x4a93bc);})['catch'](function(_0x58259d){_0x5d3375(_0x58259d);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x49c4('0x7f')](_0x49c4('0x80'));}function generateIssuedAt(){return Math[_0x49c4('0x81')](Date[_0x49c4('0x82')]()/0x3e8)['toString']();}function createJwt(_0x4daa6d){var _0x340523={'payload':{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d[_0x49c4('0x51')]},'options':{'algorithm':_0x49c4('0x83'),'subject':_0x4daa6d['id'][_0x49c4('0x7f')](),'issuer':hardwareConf[_0x49c4('0x4a')](),'audience':hardwareConf[_0x49c4('0x4a')]()}};return signJwt(_0x340523)[_0x49c4('0x38')](function(_0x4d49e0){return{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d['apiKeyNonce'],'token':_0x4d49e0};});}
\ No newline at end of file
+var _0xf3cd=['role','name','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','params','closed','disposition','then','status','unmanaged','json','authorization','startsWith','Basic','User','authenticate','catch','Bearer','query','apikey','getUuid','find','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blockDuration','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','isMiddleware','cookie','motion.token','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','test','Sequelize','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','ValidationError','updatePasswordsHistory','length','splice','encryptString','promisify','sign','secret','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','express-jwt','composable-middleware','basic-auth','bluebird','util','moment','secrets','session'];(function(_0x23f5f5,_0x4717d9){var _0x16d61f=function(_0x5e5410){while(--_0x5e5410){_0x23f5f5['push'](_0x23f5f5['shift']());}};_0x16d61f(++_0x4717d9);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x582274,_0x2cbd9c){_0x582274=_0x582274-0x0;var _0x8f14d3=_0xf3cd[_0x582274];return _0x8f14d3;};'use strict';var db=require(_0xdf3c('0x0'))['db'];var config=require(_0xdf3c('0x1'));var hardwareConf=require(_0xdf3c('0x2'));var licenseUtil=require(_0xdf3c('0x3'));var encryptor=require(_0xdf3c('0x4'));var _=require(_0xdf3c('0x5'));var jwt=require('jsonwebtoken');var expressJwt=require(_0xdf3c('0x6'));var compose=require(_0xdf3c('0x7'));var basicAuth=require(_0xdf3c('0x8'));var crypto=require('crypto');var BPromise=require(_0xdf3c('0x9'));var util=require(_0xdf3c('0xa'));var moment=require(_0xdf3c('0xb'));var validateJwt=expressJwt({'secret':config[_0xdf3c('0xc')][_0xdf3c('0xd')]});var userAttributes=['id',_0xdf3c('0xe'),'fullname',_0xdf3c('0xf'),'internal','email',_0xdf3c('0x10'),_0xdf3c('0x11'),'md5secret',_0xdf3c('0x12'),_0xdf3c('0x13'),_0xdf3c('0x14'),_0xdf3c('0x15'),_0xdf3c('0x16'),_0xdf3c('0x17'),_0xdf3c('0x18'),_0xdf3c('0x19'),'lastLoginAt',_0xdf3c('0x1a'),_0xdf3c('0x1b'),_0xdf3c('0x1c'),_0xdf3c('0x1d'),'alias',_0xdf3c('0x1e'),_0xdf3c('0x1f'),_0xdf3c('0x20'),'phoneBarEnableRecording',_0xdf3c('0x21'),_0xdf3c('0x22'),_0xdf3c('0x23'),_0xdf3c('0x24'),_0xdf3c('0x25'),_0xdf3c('0x26'),_0xdf3c('0x27'),_0xdf3c('0x28'),_0xdf3c('0x29'),_0xdf3c('0x2a'),'settingsEnabled',_0xdf3c('0x2b'),_0xdf3c('0x2c'),_0xdf3c('0x2d'),_0xdf3c('0x2e'),_0xdf3c('0x2f'),_0xdf3c('0x30'),_0xdf3c('0x31'),_0xdf3c('0x32'),_0xdf3c('0x33'),_0xdf3c('0x34'),_0xdf3c('0x35'),_0xdf3c('0x36'),_0xdf3c('0x37'),'openchannelAutoanswerDelay','faxAutoanswer',_0xdf3c('0x38'),'whatsappAutoanswer',_0xdf3c('0x39')];exports[_0xdf3c('0x3a')]=function(){return this[_0xdf3c('0x3b')](!![])[_0xdf3c('0x3c')](function(_0x33652f,_0x36ba1c,_0x50d8ca){if(_0x33652f[_0xdf3c('0x3d')]){_0x50d8ca();}else{return db[_0xdf3c('0x3e')][_0xdf3c('0x3f')]({'where':{'id':_0x33652f[_0xdf3c('0x40')]['id']},'attributes':['id',_0xdf3c('0x41'),_0xdf3c('0x42')],'raw':!![]})[_0xdf3c('0x43')](function(_0x155f54){if(_0x155f54&&_0x155f54[_0xdf3c('0x41')]){return _0x36ba1c[_0xdf3c('0x44')](_0x155f54['disposition']===_0xdf3c('0x45')?0x195:0x193)[_0xdf3c('0x46')]({'message':_0x155f54['disposition']===_0xdf3c('0x45')?'Unmanaged.':'Forbidden.'});}else{_0x50d8ca();}})['catch'](function(_0x14aac9){_0x50d8ca(_0x14aac9);});}});};exports[_0xdf3c('0x3b')]=function isAuthenticated(_0x52b8f6){return compose()['use'](function(_0x37ecfd,_0x1f2ce4,_0xd3cfcb){var _0x1ccdd4;if(_0x37ecfd['headers'][_0xdf3c('0x47')]){if(_[_0xdf3c('0x48')](_0x37ecfd['headers']['authorization'],_0xdf3c('0x49'))){var _0x46f0e3=basicAuth(_0x37ecfd);db[_0xdf3c('0x4a')]['find']({'where':{'name':_0x46f0e3[_0xdf3c('0xf')]}})[_0xdf3c('0x43')](function(_0x21e7b8){if(!_0x21e7b8||!_0x21e7b8[_0xdf3c('0x4b')](_0x46f0e3['pass'])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':'Wrong\x20credentials.'});}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x21e7b8['id']};_0xd3cfcb();})[_0xdf3c('0x4c')](function(_0x217a65){_0xd3cfcb(_0x217a65);});}else if(_[_0xdf3c('0x48')](_0x37ecfd['headers'][_0xdf3c('0x47')],_0xdf3c('0x4d'))){validateJwt(_0x37ecfd,_0x1f2ce4,_0xd3cfcb);}else{if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4[_0xdf3c('0x44')](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x37ecfd[_0xdf3c('0x4e')][_0xdf3c('0x4f')]){try{var _0x5ddd21={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};verifyJwt(_0x37ecfd['query'][_0xdf3c('0x4f')],_0x5ddd21)['then'](function(_0x57faba){return db['User'][_0xdf3c('0x51')]({'where':{'id':_0x57faba[_0xdf3c('0x52')]}})[_0xdf3c('0x43')](function(_0x29b5b7){_0x1ccdd4=_0x29b5b7;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xdf3c('0x53'),'blockDuration'],'raw':!![]});})[_0xdf3c('0x43')](function(_0x17b502){if(!_0x1ccdd4||!_[_0xdf3c('0x54')](_0x1ccdd4[_0xdf3c('0x55')],_0x57faba[_0xdf3c('0x56')])){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x57')});}if(_0x1ccdd4[_0xdf3c('0x58')]){return _0x1f2ce4['status'](0x191)[_0xdf3c('0x46')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x1ccdd4['blocked']){if(_0x17b502[_0xdf3c('0x59')]>0x0){if(moment(_0x1ccdd4['blockedAt'])[_0xdf3c('0x5a')](_0x17b502['blockDuration'],_0xdf3c('0x5b'))>moment()){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}else{return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});}}_0x37ecfd[_0xdf3c('0x3d')]={'id':_0x1ccdd4['id']};_0xd3cfcb();});})[_0xdf3c('0x4c')](function(){return _0x1f2ce4[_0xdf3c('0x44')](0x191)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5c')});});}catch(_0x57e0ab){_0xd3cfcb(_0x57e0ab);}}else if(_0x52b8f6){_0xd3cfcb();}else{return _0x1f2ce4['status'](0x193)[_0xdf3c('0x46')]({'message':'Unknown\x20authorization\x20format'});}})[_0xdf3c('0x3c')](function(_0x14d8e1,_0x46194d,_0x328b18){if(_0x14d8e1['user']){db['User'][_0xdf3c('0x51')]({'where':{'id':_0x14d8e1[_0xdf3c('0x3d')]['id']},'attributes':userAttributes})[_0xdf3c('0x43')](function(_0x4c59ef){if(!_0x4c59ef){return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5d')});}_0x14d8e1[_0xdf3c('0x3d')]=_0x4c59ef;_0x328b18();})['catch'](function(_0x127685){_0x328b18(_0x127685);});}else if(_0x52b8f6){_0x328b18();}else{return _0x46194d[_0xdf3c('0x44')](0x194)[_0xdf3c('0x46')]({'message':_0xdf3c('0x5e')});}});};exports[_0xdf3c('0x5f')]=function canUpdate(){return compose()['use'](function(_0x410aaf,_0x286b72,_0x437443){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x344f1e){if(_0x344f1e['update']){_0x437443();}else{return _0x286b72['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})['catch'](function(_0x5c9885){_0x437443(_0x5c9885);});});};exports[_0xdf3c('0x62')]=function isWebrtcLicence(){return compose()[_0xdf3c('0x3c')](function(_0x46b2bd,_0x2aeb29,_0xaae4bc){return licenseUtil[_0xdf3c('0x60')]()[_0xdf3c('0x43')](function(_0x84c5c2){if(_0x84c5c2[_0xdf3c('0x63')]){_0xaae4bc();}else{return _0x2aeb29['status'](0x193)[_0xdf3c('0x46')]({'message':_0xdf3c('0x61')});}})[_0xdf3c('0x4c')](function(_0xe760dd){_0xaae4bc(_0xe760dd);});});};exports[_0xdf3c('0x64')]=function(_0x385824,_0x28a468,_0x553f70){_0x385824[_0xdf3c('0x64')]=!![];return _0x553f70();};exports['signToken']=function signToken(_0xa4e137){return signJwt(_0xa4e137);};exports['setTokenCookie']=function(_0x41b78c,_0x28144f){if(!_0x41b78c[_0xdf3c('0x3d')]){return _0x28144f[_0xdf3c('0x44')](0x194)['json']({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x4a068a={'payload':{'id':_0x41b78c[_0xdf3c('0x3d')]['id'],'role':_0x41b78c['user'][_0xdf3c('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x4a068a)[_0xdf3c('0x43')](function(_0x446713){_0x28144f[_0xdf3c('0x65')](_0xdf3c('0x66'),_0x446713);_0x28144f['redirect']('/dashboards/general');})[_0xdf3c('0x4c')](function(_0x27a541){return _0x28144f['status'](0x1f4)[_0xdf3c('0x67')](_0x27a541);});};exports[_0xdf3c('0x68')]=function(_0x168eaf){if(_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x55')])||_[_0xdf3c('0x69')](_0x168eaf[_0xdf3c('0x6a')])){return null;}else{return createJwt(_0x168eaf);}};exports['generateApiKey']=function(_0x4c98dc){_0x4c98dc[_0xdf3c('0x55')]=generateNonce();_0x4c98dc[_0xdf3c('0x6a')]=generateIssuedAt();return createJwt(_0x4c98dc);};exports[_0xdf3c('0x6b')]=function(_0x1ad771,_0x22de6c){var _0x39f38f=_0x1ad771[_0xdf3c('0x4e')][_0xdf3c('0x4f')];if(_0x39f38f){var _0x143d01={'nonce':_0x22de6c[_0xdf3c('0x55')],'iat':_0x22de6c[_0xdf3c('0x6a')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdf3c('0x50')]()};return verifyJwt(_0x39f38f,_0x143d01)['then'](function(){return generateApiKey(_0x22de6c);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports['validatePasswordPattern']=function(_0x58fcbf){var _0x541c57=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x541c57[_0xdf3c('0x6c')](_0x58fcbf))throw new db[(_0xdf3c('0x6d'))]['ValidationError'](_0xdf3c('0x6e'));return;};exports[_0xdf3c('0x6f')]=function(_0x51f8dd,_0xa8dddb,_0x28f935){var _0x10e9d5=encryptor[_0xdf3c('0x70')](_0xa8dddb)[_0xdf3c('0x71')](',');for(var _0x28f387=0x0;_0x28f387<_0x28f935;_0x28f387++){if(!_0x10e9d5[_0x28f387])break;if(_0x51f8dd[_0xdf3c('0x72')]()===_0x10e9d5[_0x28f387][_0xdf3c('0x72')]()){var _0x42efa2=util[_0xdf3c('0x73')](_0xdf3c('0x74'),_0x28f935);if(_0x28f935===0x1){_0x42efa2='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xdf3c('0x6d'))][(_0xdf3c('0x75'))](_0x42efa2);}}return;};exports[_0xdf3c('0x76')]=function(_0x5a3d63,_0x245c68){var _0x3e327e=_0x245c68?encryptor[_0xdf3c('0x70')](_0x245c68)['split'](','):[];if(_0x3e327e[_0xdf3c('0x77')]===0x5){_0x3e327e[_0xdf3c('0x78')](-0x1,0x1);}_0x3e327e['unshift'](_0x5a3d63);return encryptor[_0xdf3c('0x79')](_0x3e327e['join'](','));};function signJwt(_0x28c296){var _0x1b03e7=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7b')],{'context':jwt});var _0xed2a78=_0x28c296[_0xdf3c('0x7c')]||config[_0xdf3c('0xc')][_0xdf3c('0xd')];return new BPromise(function(_0x2922d8,_0x330730){_0x1b03e7(_0x28c296[_0xdf3c('0x7d')],_0xed2a78,_0x28c296[_0xdf3c('0x7e')])[_0xdf3c('0x43')](function(_0x206a18){_0x2922d8(_0x206a18);})[_0xdf3c('0x4c')](function(_0xe42432){_0x330730(_0xe42432);});});}function verifyJwt(_0xd7fb2d,_0x510538,_0x4dade5){var _0x2e8511=BPromise[_0xdf3c('0x7a')](jwt[_0xdf3c('0x7f')],{'context':jwt});var _0x596282=_0x4dade5||config[_0xdf3c('0xc')]['session'];return new BPromise(function(_0x574852,_0x184952){_0x2e8511(_0xd7fb2d,_0x596282,_0x510538)[_0xdf3c('0x43')](function(_0x1121b9){_0x574852(_0x1121b9);})[_0xdf3c('0x4c')](function(_0x68f487){_0x184952(_0x68f487);});});}function generateNonce(){return crypto[_0xdf3c('0x80')](0x10)[_0xdf3c('0x81')](_0xdf3c('0x82'));}function generateIssuedAt(){return Math[_0xdf3c('0x83')](Date[_0xdf3c('0x84')]()/0x3e8)[_0xdf3c('0x81')]();}function createJwt(_0x5a2dad){var _0x34000c={'payload':{'iat':_0x5a2dad['apiKeyIat'],'nonce':_0x5a2dad[_0xdf3c('0x55')]},'options':{'algorithm':_0xdf3c('0x85'),'subject':_0x5a2dad['id'][_0xdf3c('0x81')](),'issuer':hardwareConf[_0xdf3c('0x50')](),'audience':hardwareConf[_0xdf3c('0x50')]()}};return signJwt(_0x34000c)['then'](function(_0x18bf4f){return{'iat':_0x5a2dad[_0xdf3c('0x6a')],'nonce':_0x5a2dad[_0xdf3c('0x55')],'token':_0x18bf4f};});}
\ No newline at end of file
index 93d6d52..0606a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ebc=['CmCustomField','findOne','slice','all','length','fieldType','type','lodash','./sql-utils','../../mysqldb','findAll','resolve','then','search','parseAdvancedSearchFilter','where','fields','filter','clause','tags','user','skip','checkListsRestrictions','ids','tag','countFilteredContacts','count','User','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','cf_','map'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7ebc,0x12f));var _0xc7eb=function(_0x172747,_0x1732bd){_0x172747=_0x172747-0x0;var _0x509692=_0x7ebc[_0x172747];return _0x509692;};'use strict';var _=require(_0xc7eb('0x0'));var sqlUtils=require(_0xc7eb('0x1'));var db=require(_0xc7eb('0x2'))['db'];exports[_0xc7eb('0x3')]=function(_0xe09047,_0x24a960,_0x3f0115,_0x125be2){var _0x3ed620={'count':0x0,'rows':[]};var _0x33a92f=sqlUtils['skipContactsQuery'](_0x24a960,_0xe09047);if(_0x33a92f){return Promise[_0xc7eb('0x4')](_0x3ed620);}var _0x3445f4=sqlUtils['getContactsSubquery']();var _0x162e4c={};var _0x4f8a46=![];var _0x22402c=![];return Promise[_0xc7eb('0x4')]()[_0xc7eb('0x5')](function(){if(_0xe09047[_0xc7eb('0x6')]){return sqlUtils[_0xc7eb('0x7')](_0xe09047[_0xc7eb('0x6')],_0x125be2);}else{return sqlUtils['parseQueryParameters'](_0xe09047,_0x125be2);}})[_0xc7eb('0x5')](function(_0x1b1443){_0x3445f4[_0xc7eb('0x8')](_0x1b1443['default']);_0x3445f4['where'](_0x1b1443[_0xc7eb('0x9')]);_0x3445f4[_0xc7eb('0x8')](_0x1b1443[_0xc7eb('0xa')]);_0x3445f4[_0xc7eb('0x8')](_0x1b1443['user'][_0xc7eb('0xb')]);_0x162e4c=_0x1b1443[_0xc7eb('0xc')];_0x22402c=_0x1b1443[_0xc7eb('0xd')][_0xc7eb('0xe')];return sqlUtils[_0xc7eb('0xf')](_0x24a960,_0xe09047,_0x22402c);})[_0xc7eb('0x5')](function(_0x235f9c){_0x3445f4['where'](_0x235f9c);var _0x1e1d1=_0xe09047['search']?_0x162e4c[_0xc7eb('0x10')]:_0xe09047[_0xc7eb('0x11')];_0x4f8a46=_0x1e1d1?!![]:![];return sqlUtils[_0xc7eb('0x12')](_0x3445f4,_0x1e1d1);})[_0xc7eb('0x5')](function(_0x37609b){_0x3ed620[_0xc7eb('0x13')]=_0x37609b;if(_0x3ed620[_0xc7eb('0x13')]===0x0){return;}if(_0xe09047[_0xc7eb('0x14')]){_0x22402c=!![];}return sqlUtils[_0xc7eb('0x15')](_0x3445f4,_0xe09047[_0xc7eb('0x9')],_0x3f0115,_0x4f8a46,_0x162e4c[_0xc7eb('0xb')],_0x22402c);})[_0xc7eb('0x5')](function(_0x5907c6){if(!_0x5907c6){return[];}return sqlUtils[_0xc7eb('0x16')](_0x5907c6,_0xe09047,_0x3f0115);})[_0xc7eb('0x5')](function(_0x53d968){_0x3ed620[_0xc7eb('0x17')]=_0x53d968;return _0x3ed620;})[_0xc7eb('0x18')](function(_0x5dd5c2){throw _0x5dd5c2;});};exports[_0xc7eb('0x19')]=function(){var _0x45b234={};var _0x4e2c40=[];return db[_0xc7eb('0x1a')][_0xc7eb('0x19')]()[_0xc7eb('0x5')](function(_0x5d1562){_0x45b234=_0x5d1562;var _0x1d1a79=Object[_0xc7eb('0x1b')](_0x45b234)[_0xc7eb('0xa')](function(_0x3dafb8){return _['startsWith'](_0x3dafb8,_0xc7eb('0x1c'))?_0x3dafb8:undefined;});var _0x41d166=_0x1d1a79[_0xc7eb('0x1d')](function(_0x3722dd){return db[_0xc7eb('0x1e')][_0xc7eb('0x1f')]({'where':{'id':_0x3722dd[_0xc7eb('0x20')](0x3)},'raw':!![]});});return Promise[_0xc7eb('0x21')](_0x41d166);})[_0xc7eb('0x5')](function(_0x3d8eeb){for(var _0x4e28a2=0x0;_0x4e28a2<_0x3d8eeb[_0xc7eb('0x22')];_0x4e28a2++){if(_0x3d8eeb[_0x4e28a2]){var _0x2e52b=_0xc7eb('0x1c')+_0x3d8eeb[_0x4e28a2]['id'];_0x45b234[_0x2e52b][_0xc7eb('0x23')]=_0x3d8eeb[_0x4e28a2]['type'];}}_0x4e2c40=_['map'](Object[_0xc7eb('0x1b')](_0x45b234),function(_0xa8e351){return{'name':_0xa8e351,'type':_0x45b234[_0xa8e351][_0xc7eb('0x24')]};});return _0x4e2c40;})['catch'](function(_0x56ed73){throw _0x56ed73;});};
\ No newline at end of file
+var _0x4d06=['catch','describe','CmContact','keys','startsWith','CmCustomField','findOne','all','length','cf_','fieldType','type','map','lodash','findAll','skipContactsQuery','getContactsSubquery','resolve','search','parseAdvancedSearchFilter','parseQueryParameters','then','where','default','fields','filter','user','clause','tags','skip','tag','count','buildContactsQuery','getFilteredContacts','rows'];(function(_0x47f7ec,_0x369f9d){var _0x415101=function(_0x41317a){while(--_0x41317a){_0x47f7ec['push'](_0x47f7ec['shift']());}};_0x415101(++_0x369f9d);}(_0x4d06,0x1b1));var _0x64d0=function(_0x2ca616,_0x384ec8){_0x2ca616=_0x2ca616-0x0;var _0x53155f=_0x4d06[_0x2ca616];return _0x53155f;};'use strict';var _=require(_0x64d0('0x0'));var sqlUtils=require('./sql-utils');var db=require('../../mysqldb')['db'];exports[_0x64d0('0x1')]=function(_0x503ebd,_0x3b4ac7,_0x1720e3,_0x2b5eef){var _0x5826e8={'count':0x0,'rows':[]};var _0x16244d=sqlUtils[_0x64d0('0x2')](_0x3b4ac7,_0x503ebd);if(_0x16244d){return Promise['resolve'](_0x5826e8);}var _0x2d018d=sqlUtils[_0x64d0('0x3')]();var _0x1b016e={};var _0x578d87=![];var _0x4d66e1=![];return Promise[_0x64d0('0x4')]()['then'](function(){if(_0x503ebd[_0x64d0('0x5')]){return sqlUtils[_0x64d0('0x6')](_0x503ebd[_0x64d0('0x5')],_0x2b5eef);}else{return sqlUtils[_0x64d0('0x7')](_0x503ebd,_0x2b5eef);}})[_0x64d0('0x8')](function(_0x4f9d72){_0x2d018d[_0x64d0('0x9')](_0x4f9d72[_0x64d0('0xa')]);_0x2d018d[_0x64d0('0x9')](_0x4f9d72[_0x64d0('0xb')]);_0x2d018d['where'](_0x4f9d72[_0x64d0('0xc')]);_0x2d018d['where'](_0x4f9d72[_0x64d0('0xd')][_0x64d0('0xe')]);_0x1b016e=_0x4f9d72[_0x64d0('0xf')];_0x4d66e1=_0x4f9d72[_0x64d0('0xd')][_0x64d0('0x10')];return sqlUtils['checkListsRestrictions'](_0x3b4ac7,_0x503ebd,_0x4d66e1);})[_0x64d0('0x8')](function(_0x440330){_0x2d018d[_0x64d0('0x9')](_0x440330);var _0x5a7a72=_0x503ebd['search']?_0x1b016e['ids']:_0x503ebd[_0x64d0('0x11')];_0x578d87=_0x5a7a72?!![]:![];return sqlUtils['countFilteredContacts'](_0x2d018d,_0x5a7a72);})[_0x64d0('0x8')](function(_0x594dc2){_0x5826e8[_0x64d0('0x12')]=_0x594dc2;if(_0x5826e8[_0x64d0('0x12')]===0x0){return;}if(_0x503ebd['User']){_0x4d66e1=!![];}return sqlUtils[_0x64d0('0x13')](_0x2d018d,_0x503ebd[_0x64d0('0xb')],_0x1720e3,_0x578d87,_0x1b016e['clause'],_0x4d66e1);})[_0x64d0('0x8')](function(_0x424ebe){if(!_0x424ebe){return[];}return sqlUtils[_0x64d0('0x14')](_0x424ebe,_0x503ebd,_0x1720e3);})[_0x64d0('0x8')](function(_0x306629){_0x5826e8[_0x64d0('0x15')]=_0x306629;return _0x5826e8;})[_0x64d0('0x16')](function(_0xe8968d){throw _0xe8968d;});};exports[_0x64d0('0x17')]=function(){var _0x3cccd9={};var _0x396ffd=[];return db[_0x64d0('0x18')][_0x64d0('0x17')]()[_0x64d0('0x8')](function(_0x395813){_0x3cccd9=_0x395813;var _0x3339ad=Object[_0x64d0('0x19')](_0x3cccd9)[_0x64d0('0xc')](function(_0x2fb270){return _[_0x64d0('0x1a')](_0x2fb270,'cf_')?_0x2fb270:undefined;});var _0x115581=_0x3339ad['map'](function(_0x15b9a5){return db[_0x64d0('0x1b')][_0x64d0('0x1c')]({'where':{'id':_0x15b9a5['slice'](0x3)},'raw':!![]});});return Promise[_0x64d0('0x1d')](_0x115581);})[_0x64d0('0x8')](function(_0x77c43e){for(var _0x7bda81=0x0;_0x7bda81<_0x77c43e[_0x64d0('0x1e')];_0x7bda81++){if(_0x77c43e[_0x7bda81]){var _0x12e84f=_0x64d0('0x1f')+_0x77c43e[_0x7bda81]['id'];_0x3cccd9[_0x12e84f][_0x64d0('0x20')]=_0x77c43e[_0x7bda81][_0x64d0('0x21')];}}_0x396ffd=_[_0x64d0('0x22')](Object[_0x64d0('0x19')](_0x3cccd9),function(_0x50e268){return{'name':_0x50e268,'type':_0x3cccd9[_0x50e268][_0x64d0('0x21')]};});return _0x396ffd;})['catch'](function(_0x4d722f){throw _0x4d722f;});};
\ No newline at end of file
index 1abd531..d1ed127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb95e=['uc.UserId\x20=\x20?','keys','map','some','compact','Contact','push','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','getLists','c.ListId\x20IS\x20NULL','c.id','limit','offset','subqry.id','having','order','DESC','color','keyBy','Sequelize','QueryTypes','SELECT','sequelize','query','toString','Tags','clone','COUNT(*)','isEmpty','exports','lodash','squel','../interaction/utils','../../mysqldb','role','search','ListId','autocomplete','select','from','cm_contacts','where','subqry','left_join','cm_user_has_contacts','.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','email','updatedAt','deletedAt','TagIds','includes','forEach','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','name','fieldType','datetime','castTo','DATE','buildExpression','type','start','value','end','Tag','split','clause','and','tags','User','user'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0xb95e,0x158));var _0xeb95=function(_0xf22560,_0x3254a9){_0xf22560=_0xf22560-0x0;var _0x4ff23e=_0xb95e[_0xf22560];return _0x4ff23e;};'use strict';var _=require(_0xeb95('0x0'));var squel=require(_0xeb95('0x1'));var as=require('../parsers/advancedSearch');var qs=require('../parsers/qs');var utils=require(_0xeb95('0x2'));var db=require(_0xeb95('0x3'))['db'];function skipContactsQuery(_0x907edd,_0x399b30){var _0x11cc80=![];if(_0x907edd[_0xeb95('0x4')]==='agent'&&!_0x399b30[_0xeb95('0x5')]&&!_0x399b30[_0xeb95('0x6')]&&_0x399b30[_0xeb95('0x7')]!=='true'){_0x11cc80=!![];}return _0x11cc80;}function getContactsSubquery(){return squel[_0xeb95('0x8')]()[_0xeb95('0x9')](_0xeb95('0xa'),'c')[_0xeb95('0xb')]('c.deletedAt\x20IS\x20NULL');}function applyJoinClauses(_0x5ba573,_0x357c6b){var _0x42ab8a=_0x357c6b?'c':_0xeb95('0xc');_0x5ba573[_0xeb95('0xd')](_0xeb95('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x42ab8a+_0xeb95('0xf'))[_0xeb95('0xd')](_0xeb95('0x10'),'ct','ct.CmContactId\x20=\x20'+_0x42ab8a+_0xeb95('0xf'))['left_join']('tools_tags','t',_0xeb95('0x11'));return _0x5ba573;}function addFieldsToQuery(_0x314ee8,_0xdd2dc9,_0x10c1f9,_0x21bd57,_0x4123a5){var _0x422110=_0x4123a5?'c':_0xeb95('0xc');if(!_0xdd2dc9){_0xdd2dc9=['id',_0xeb95('0x12'),_0xeb95('0x13'),_0xeb95('0x14'),_0xeb95('0x15'),_0xeb95('0x16'),_0xeb95('0x17'),'ListId','CompanyId','createdAt',_0xeb95('0x18'),_0xeb95('0x19'),_0xeb95('0x1a')];}else if(!_0xdd2dc9[_0xeb95('0x1b')]('id')){_0xdd2dc9['push']('id');}var _0x1044be=_0x10c1f9&&_0x4123a5||!_0x10c1f9&&!_0x4123a5;if(_0x21bd57){_0x1044be=_0x21bd57&&_0x4123a5||!_0x21bd57&&!_0x4123a5;}_0xdd2dc9[_0xeb95('0x1c')](function(_0x48a42c){if(_0x48a42c===_0xeb95('0x1a')){if(_0x1044be){_0x314ee8[_0xeb95('0x1d')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x48a42c);}else if(_0x10c1f9||_0x21bd57){_0x314ee8[_0xeb95('0x1d')](_0x422110+'.'+_0x48a42c);}}else{_0x314ee8[_0xeb95('0x1d')](_0x422110+'.'+_0x48a42c);}});return _0x314ee8;}function getSqlClauses(){var _0x4c6782={'default':squel[_0xeb95('0x1e')](),'fields':squel[_0xeb95('0x1e')](),'filter':squel['expr'](),'tags':{'clause':squel[_0xeb95('0x1e')](),'ids':null},'user':{'clause':squel[_0xeb95('0x1e')](),'skip':![]}};return _0x4c6782;}function parseTagParameter(_0x1aa217){var _0x35fb73=squel[_0xeb95('0x1e')]();if(_0x1aa217){var _0x5acd88=utils[_0xeb95('0x1f')](_0x1aa217);_0x5acd88[_0xeb95('0x1c')](function(_0x2b3b9f){_0x35fb73['or'](_0xeb95('0x20'),'%,'+_0x2b3b9f+',%');});}return _0x35fb73;}function parseSearchFilter(_0x94bf3b){var _0x4a1171=squel[_0xeb95('0x1e')]();if(_0x94bf3b){var _0x57c71e=_0x94bf3b[_0xeb95('0x21')]('\x5c','\x5c\x5c')[_0xeb95('0x21')](/'/g,'\x27\x27');if(_0x57c71e['split']('\x20')[_0xeb95('0x22')]>0x1){_0x4a1171['or'](_0xeb95('0x23'),qs[_0xeb95('0x24')](_0x57c71e,!![]),null);}else{if(qs[_0xeb95('0x25')](_0x57c71e)){_0x4a1171['or']('c.id\x20LIKE\x20?',_0x57c71e+'%');_0x4a1171['or'](_0xeb95('0x26'),_0x57c71e+'%');_0x4a1171['or'](_0xeb95('0x27'),_0x57c71e+'%');_0x4a1171['or'](_0xeb95('0x28'),_0x57c71e+'%');}else if(qs[_0xeb95('0x29')](_0x57c71e)){_0x4a1171['or'](_0xeb95('0x2a'),_0x57c71e+'%');}else{_0x4a1171['or'](_0xeb95('0x2b'),'%'+_0x57c71e+'%');_0x4a1171['or'](_0xeb95('0x2c'),'%'+_0x57c71e+'%');_0x4a1171['or'](_0xeb95('0x2a'),'%'+_0x57c71e+'%');}}}return _0x4a1171;}function parseAdvancedSearchFilter(_0x581f93,_0x5aa38d){var _0x4a7dc8=getSqlClauses();var _0x2f5c84=as[_0xeb95('0x2d')](_0x581f93);var _0x5adb97=_0x2f5c84[_0xeb95('0x2e')];for(var _0x588b0a=0x0;_0x588b0a<_0x2f5c84['conditions'][_0xeb95('0x22')];_0x588b0a++){var _0x300d7c=_0x2f5c84['conditions'][_0x588b0a];var _0x1d696f='c';var _0xb39dd=_['find'](_0x5aa38d,[_0xeb95('0x2f'),_0x300d7c[_0xeb95('0x1d')]]);if(_0xb39dd){if(_0x300d7c[_0xeb95('0x1d')]==='dateOfBirth'||_0xb39dd[_0xeb95('0x30')]===_0xeb95('0x31')){_0x300d7c[_0xeb95('0x32')]=_0xeb95('0x33');}var _0x6741de=as[_0xeb95('0x34')](_0x1d696f,_0xb39dd[_0xeb95('0x35')],_0x300d7c);_0x4a7dc8['default'][_0x5adb97](_0x6741de['text'],_0x6741de['value'][_0xeb95('0x36')],_0x6741de[_0xeb95('0x37')][_0xeb95('0x38')]);}else{if(_0x300d7c[_0xeb95('0x1d')]===_0xeb95('0x39')){var _0x378652=_0x300d7c[_0xeb95('0x37')][_0xeb95('0x3a')](',')['map'](function(_0x50cfcc){return Number(_0x50cfcc);});var _0x5dda6c=parseTagParameter(_0x378652);_0x4a7dc8['tags'][_0xeb95('0x3b')][_0xeb95('0x3c')](_0x5dda6c);_0x4a7dc8[_0xeb95('0x3d')]['ids']=_0x378652;}else if(_0x300d7c['field']===_0xeb95('0x3e')){_0x4a7dc8[_0xeb95('0x3f')][_0xeb95('0x3b')][_0xeb95('0x3c')](_0xeb95('0x40'),_0x300d7c[_0xeb95('0x37')]);_0x4a7dc8[_0xeb95('0x3f')]['skip']=!![];}}}return _0x4a7dc8;}function parseModelFields(_0x2ef333,_0x22caf7){var _0x2a4e1a=squel['expr']();var _0xdb6e52=_(_0x2ef333)[_0xeb95('0x41')]()[_0xeb95('0x42')](function(_0x53f49a){return _[_0xeb95('0x43')](_0x22caf7,['name',_0x53f49a])?_0x53f49a:undefined;})[_0xeb95('0x44')]()[_0xeb95('0x37')]();if(_0x2ef333['Contact']){_0xdb6e52['push'](_0xeb95('0x45'));}if(_0x2ef333[_0xeb95('0x3e')]){_0xdb6e52[_0xeb95('0x46')](_0xeb95('0x3e'));}if(_0xdb6e52[_0xeb95('0x22')]>0x0){_0xdb6e52[_0xeb95('0x1c')](function(_0x4b8019){if(_0x4b8019===_0xeb95('0x6')){_0x2a4e1a[_0xeb95('0x3c')](_0xeb95('0x47'),[][_0xeb95('0x48')](_0x2ef333[_0x4b8019]));}else if(_0x4b8019===_0xeb95('0x45')){var _0x4d9a00='%'+_0x2ef333[_0x4b8019]+'%';_0x2a4e1a[_0xeb95('0x3c')](_0xeb95('0x49'),_0x4d9a00);}else if(_0x4b8019===_0xeb95('0x3e')){_0x2a4e1a['and'](_0xeb95('0x40'),_0x2ef333[_0x4b8019]);}else{_0x2a4e1a[_0xeb95('0x3c')]('c.'+_0x4b8019+_0xeb95('0x4a'),_0x2ef333[_0x4b8019]);}});}return _0x2a4e1a;}function parseQueryParameters(_0x5ba351,_0x545c15){var _0x3cd7cc=getSqlClauses();return Promise[_0xeb95('0x4b')]()[_0xeb95('0x4c')](function(){return parseModelFields(_0x5ba351,_0x545c15);})['then'](function(_0x4d7742){_0x3cd7cc[_0xeb95('0x4d')][_0xeb95('0x3c')](_0x4d7742);return parseTagParameter(_0x5ba351[_0xeb95('0x4e')]);})[_0xeb95('0x4c')](function(_0x575751){_0x3cd7cc[_0xeb95('0x3d')][_0xeb95('0x3b')]['and'](_0x575751);return parseSearchFilter(_0x5ba351[_0xeb95('0x4f')]);})['then'](function(_0x32ff2f){_0x3cd7cc['filter']=_0x32ff2f;return _0x3cd7cc;});}function checkListsRestrictions(_0x5f1327,_0x1c4d37,_0x4bbe29){var _0x2036bd=squel[_0xeb95('0x1e')]();return Promise[_0xeb95('0x4b')]()[_0xeb95('0x4c')](function(){if(_0x1c4d37[_0xeb95('0x5')]&&_0x5f1327[_0xeb95('0x4')]==='agent'&&!_0x4bbe29){return _0x5f1327[_0xeb95('0x50')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x58ac16){if(_0x58ac16){if(_0x58ac16[_0xeb95('0x22')]===0x0){_0x2036bd[_0xeb95('0x3c')](_0xeb95('0x51'));}else{_0x2036bd[_0xeb95('0x3c')](_0xeb95('0x47'),_[_0xeb95('0x42')](_0x58ac16,'id'));}}})[_0xeb95('0x4c')](function(){return _0x2036bd;});}function buildContactsQuery(_0x41c63d,_0x58f40f,_0x4943c7,_0x56d449,_0xb652fc,_0x1f139d){if(_0x58f40f){_0x58f40f=_0x4943c7['attributes'];}_0x41c63d=addFieldsToQuery(_0x41c63d,_0x58f40f,_0x56d449,_0x1f139d,!![]);var _0x324510=squel[_0xeb95('0x8')]();_0x324510=addFieldsToQuery(_0x324510,_0x58f40f,_0x56d449,_0x1f139d,![]);if(_0x56d449||_0x1f139d){_0x41c63d=applyJoinClauses(_0x41c63d,!![]);_0x41c63d['group'](_0xeb95('0x52'));if(_0x4943c7[_0xeb95('0x53')]){_0x324510['limit'](_0x4943c7[_0xeb95('0x53')]);}if(_0x4943c7[_0xeb95('0x54')]){_0x324510[_0xeb95('0x54')](_0x4943c7[_0xeb95('0x54')]);}}else{_0x324510=applyJoinClauses(_0x324510,![]);_0x324510['group'](_0xeb95('0x55'));if(_0x4943c7[_0xeb95('0x53')]){_0x41c63d[_0xeb95('0x53')](_0x4943c7[_0xeb95('0x53')]);}if(_0x4943c7['offset']){_0x41c63d[_0xeb95('0x54')](_0x4943c7[_0xeb95('0x54')]);}}_0x324510[_0xeb95('0x56')](_0xb652fc);if(_0x4943c7[_0xeb95('0x57')]){_0x4943c7['order']['forEach'](function(_0x547c20){_0x41c63d[_0xeb95('0x57')]('c.'+_0x547c20[0x0],_0x547c20[0x1]===_0xeb95('0x58')?![]:!![]);_0x324510[_0xeb95('0x57')]('subqry.'+_0x547c20[0x0],_0x547c20[0x1]===_0xeb95('0x58')?![]:!![]);});}_0x324510[_0xeb95('0x9')](_0x41c63d,_0xeb95('0xc'));return _0x324510;}function getFilteredContacts(_0x60ea66){var _0xb070a3=[];return db[_0xeb95('0x39')]['findAll']({'attributes':['id',_0xeb95('0x2f'),_0xeb95('0x59')],'raw':!![]})[_0xeb95('0x4c')](function(_0x460ca){_0xb070a3=_[_0xeb95('0x5a')](_0x460ca,'id');var _0x523816={'type':db[_0xeb95('0x5b')][_0xeb95('0x5c')][_0xeb95('0x5d')],'model':db['CmContact'],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xeb95('0x5e')][_0xeb95('0x5f')](_0x60ea66[_0xeb95('0x60')](),_0x523816);})['then'](function(_0x53a654){_0x53a654['forEach'](function(_0x247d98){if(_0x247d98['TagIds']){_0x247d98[_0xeb95('0x61')]=[];_0x247d98['TagIds']['split'](',')[_0xeb95('0x1c')](function(_0x47877f){_0x247d98[_0xeb95('0x61')][_0xeb95('0x46')](_0xb070a3[_0x47877f]);});}delete _0x247d98[_0xeb95('0x1a')];});return _0x53a654;});}function countFilteredContacts(_0x2eb4b8,_0x3f7793){var _0x241b75=_0x2eb4b8[_0xeb95('0x62')]();_0x241b75['field'](_0xeb95('0x63'));_0x241b75=applyJoinClauses(_0x241b75,!![]);_0x2eb4b8['group'](_0xeb95('0x52'));var _0x57b5a0=utils[_0xeb95('0x1f')](_0x3f7793);if(!_[_0xeb95('0x64')](_0x57b5a0)){_0x241b75[_0xeb95('0xb')]('t.id\x20IN\x20?',_0x57b5a0);}var _0x40fb28={'type':db['Sequelize'][_0xeb95('0x5c')]['SELECT'],'raw':!![]};return db[_0xeb95('0x5e')][_0xeb95('0x5f')](_0x241b75[_0xeb95('0x60')](),_0x40fb28)['then'](function(_0x381a07){return _0x381a07[0x0]['COUNT(*)'];});}module[_0xeb95('0x65')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x15aa=['t.id\x20IN\x20?','lodash','squel','../parsers/advancedSearch','../parsers/qs','../../mysqldb','role','agent','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','lastName','phone','fax','email','CompanyId','updatedAt','deletedAt','TagIds','includes','push','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','sqlOperator','conditions','find','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','value','start','end','Tag','and','tags','ids','User','user','clause','uc.UserId\x20=\x20?','skip','keys','some','compact','Contact','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','then','fields','filter','resolve','search','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','map','attributes','group','limit','offset','subqry.id','having','order','DESC','subqry.','findAll','color','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','split','clone','COUNT(*)','c.id','isEmpty'];(function(_0xc8adab,_0x5ff7dd){var _0x266a25=function(_0x37b277){while(--_0x37b277){_0xc8adab['push'](_0xc8adab['shift']());}};_0x266a25(++_0x5ff7dd);}(_0x15aa,0xdd));var _0xa15a=function(_0x47a1da,_0x517938){_0x47a1da=_0x47a1da-0x0;var _0x2c4480=_0x15aa[_0x47a1da];return _0x2c4480;};'use strict';var _=require(_0xa15a('0x0'));var squel=require(_0xa15a('0x1'));var as=require(_0xa15a('0x2'));var qs=require(_0xa15a('0x3'));var utils=require('../interaction/utils');var db=require(_0xa15a('0x4'))['db'];function skipContactsQuery(_0x3685fa,_0x359d6d){var _0x2495d2=![];if(_0x3685fa[_0xa15a('0x5')]===_0xa15a('0x6')&&!_0x359d6d['search']&&!_0x359d6d[_0xa15a('0x7')]&&_0x359d6d[_0xa15a('0x8')]!==_0xa15a('0x9')){_0x2495d2=!![];}return _0x2495d2;}function getContactsSubquery(){return squel[_0xa15a('0xa')]()[_0xa15a('0xb')](_0xa15a('0xc'),'c')[_0xa15a('0xd')](_0xa15a('0xe'));}function applyJoinClauses(_0x38a456,_0x3f8381){var _0xaf9847=_0x3f8381?'c':_0xa15a('0xf');_0x38a456[_0xa15a('0x10')](_0xa15a('0x11'),'uc',_0xa15a('0x12')+_0xaf9847+_0xa15a('0x13'))[_0xa15a('0x10')](_0xa15a('0x14'),'ct','ct.CmContactId\x20=\x20'+_0xaf9847+'.id')[_0xa15a('0x10')]('tools_tags','t','t.id\x20=\x20ct.TagId');return _0x38a456;}function addFieldsToQuery(_0x5e229f,_0x4f4220,_0x55fecd,_0x3bdd30,_0x320f7c){var _0x5154b5=_0x320f7c?'c':_0xa15a('0xf');if(!_0x4f4220){_0x4f4220=['id','firstName',_0xa15a('0x15'),_0xa15a('0x16'),'mobile',_0xa15a('0x17'),_0xa15a('0x18'),_0xa15a('0x7'),_0xa15a('0x19'),'createdAt',_0xa15a('0x1a'),_0xa15a('0x1b'),_0xa15a('0x1c')];}else if(!_0x4f4220[_0xa15a('0x1d')]('id')){_0x4f4220[_0xa15a('0x1e')]('id');}var _0x5e9ede=_0x55fecd&&_0x320f7c||!_0x55fecd&&!_0x320f7c;if(_0x3bdd30){_0x5e9ede=_0x3bdd30&&_0x320f7c||!_0x3bdd30&&!_0x320f7c;}_0x4f4220[_0xa15a('0x1f')](function(_0x3c35f1){if(_0x3c35f1===_0xa15a('0x1c')){if(_0x5e9ede){_0x5e229f[_0xa15a('0x20')](_0xa15a('0x21'),_0x3c35f1);}else if(_0x55fecd||_0x3bdd30){_0x5e229f[_0xa15a('0x20')](_0x5154b5+'.'+_0x3c35f1);}}else{_0x5e229f[_0xa15a('0x20')](_0x5154b5+'.'+_0x3c35f1);}});return _0x5e229f;}function getSqlClauses(){var _0x4d7b64={'default':squel['expr'](),'fields':squel[_0xa15a('0x22')](),'filter':squel[_0xa15a('0x22')](),'tags':{'clause':squel[_0xa15a('0x22')](),'ids':null},'user':{'clause':squel[_0xa15a('0x22')](),'skip':![]}};return _0x4d7b64;}function parseTagParameter(_0x1dbccb){var _0x55cf9e=squel[_0xa15a('0x22')]();if(_0x1dbccb){var _0x4463c3=utils[_0xa15a('0x23')](_0x1dbccb);_0x4463c3['forEach'](function(_0x1017f4){_0x55cf9e['or']('CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1017f4+',%');});}return _0x55cf9e;}function parseSearchFilter(_0x16bd5b){var _0x551191=squel['expr']();if(_0x16bd5b){var _0xc0c550=_0x16bd5b[_0xa15a('0x24')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0xc0c550['split']('\x20')[_0xa15a('0x25')]>0x1){_0x551191['or'](_0xa15a('0x26'),qs['getFullTextValue'](_0xc0c550,!![]),null);}else{if(qs[_0xa15a('0x27')](_0xc0c550)){_0x551191['or']('c.id\x20LIKE\x20?',_0xc0c550+'%');_0x551191['or'](_0xa15a('0x28'),_0xc0c550+'%');_0x551191['or'](_0xa15a('0x29'),_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2a'),_0xc0c550+'%');}else if(qs['isEmail'](_0xc0c550)){_0x551191['or'](_0xa15a('0x2b'),_0xc0c550+'%');}else{_0x551191['or'](_0xa15a('0x2c'),'%'+_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2d'),'%'+_0xc0c550+'%');_0x551191['or'](_0xa15a('0x2b'),'%'+_0xc0c550+'%');}}}return _0x551191;}function parseAdvancedSearchFilter(_0x3ab987,_0x324d00){var _0x4defd6=getSqlClauses();var _0x5a6346=as['parseSearch'](_0x3ab987);var _0x435aae=_0x5a6346[_0xa15a('0x2e')];for(var _0x5c2d7b=0x0;_0x5c2d7b<_0x5a6346['conditions']['length'];_0x5c2d7b++){var _0x32f343=_0x5a6346[_0xa15a('0x2f')][_0x5c2d7b];var _0x57106c='c';var _0x4b42d8=_[_0xa15a('0x30')](_0x324d00,[_0xa15a('0x31'),_0x32f343[_0xa15a('0x20')]]);if(_0x4b42d8){if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x32')||_0x4b42d8[_0xa15a('0x33')]===_0xa15a('0x34')){_0x32f343['castTo']=_0xa15a('0x35');}var _0x1f8c50=as[_0xa15a('0x36')](_0x57106c,_0x4b42d8[_0xa15a('0x37')],_0x32f343);_0x4defd6[_0xa15a('0x38')][_0x435aae](_0x1f8c50[_0xa15a('0x39')],_0x1f8c50[_0xa15a('0x3a')][_0xa15a('0x3b')],_0x1f8c50[_0xa15a('0x3a')][_0xa15a('0x3c')]);}else{if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x3d')){var _0x3b87fc=_0x32f343['value']['split'](',')['map'](function(_0x215bf7){return Number(_0x215bf7);});var _0x40d7c0=parseTagParameter(_0x3b87fc);_0x4defd6['tags']['clause'][_0xa15a('0x3e')](_0x40d7c0);_0x4defd6[_0xa15a('0x3f')][_0xa15a('0x40')]=_0x3b87fc;}else if(_0x32f343[_0xa15a('0x20')]===_0xa15a('0x41')){_0x4defd6[_0xa15a('0x42')][_0xa15a('0x43')][_0xa15a('0x3e')](_0xa15a('0x44'),_0x32f343[_0xa15a('0x3a')]);_0x4defd6[_0xa15a('0x42')][_0xa15a('0x45')]=!![];}}}return _0x4defd6;}function parseModelFields(_0x1fc9ae,_0x2089a2){var _0x3a6c65=squel['expr']();var _0x5c60ca=_(_0x1fc9ae)[_0xa15a('0x46')]()['map'](function(_0x34398d){return _[_0xa15a('0x47')](_0x2089a2,[_0xa15a('0x31'),_0x34398d])?_0x34398d:undefined;})[_0xa15a('0x48')]()['value']();if(_0x1fc9ae[_0xa15a('0x49')]){_0x5c60ca[_0xa15a('0x1e')](_0xa15a('0x49'));}if(_0x1fc9ae[_0xa15a('0x41')]){_0x5c60ca[_0xa15a('0x1e')](_0xa15a('0x41'));}if(_0x5c60ca['length']>0x0){_0x5c60ca[_0xa15a('0x1f')](function(_0x44cc89){if(_0x44cc89===_0xa15a('0x7')){_0x3a6c65[_0xa15a('0x3e')]('c.ListId\x20IN\x20?',[]['concat'](_0x1fc9ae[_0x44cc89]));}else if(_0x44cc89===_0xa15a('0x49')){var _0xf56b39='%'+_0x1fc9ae[_0x44cc89]+'%';_0x3a6c65[_0xa15a('0x3e')](_0xa15a('0x4a'),_0xf56b39);}else if(_0x44cc89==='User'){_0x3a6c65[_0xa15a('0x3e')]('uc.UserId\x20=\x20?',_0x1fc9ae[_0x44cc89]);}else{_0x3a6c65[_0xa15a('0x3e')]('c.'+_0x44cc89+_0xa15a('0x4b'),_0x1fc9ae[_0x44cc89]);}});}return _0x3a6c65;}function parseQueryParameters(_0x9b25fc,_0x4a7588){var _0xb6a4bd=getSqlClauses();return Promise['resolve']()[_0xa15a('0x4c')](function(){return parseModelFields(_0x9b25fc,_0x4a7588);})[_0xa15a('0x4c')](function(_0x655cb2){_0xb6a4bd[_0xa15a('0x4d')]['and'](_0x655cb2);return parseTagParameter(_0x9b25fc['tag']);})['then'](function(_0x43cfb1){_0xb6a4bd[_0xa15a('0x3f')][_0xa15a('0x43')][_0xa15a('0x3e')](_0x43cfb1);return parseSearchFilter(_0x9b25fc[_0xa15a('0x4e')]);})['then'](function(_0x16e159){_0xb6a4bd[_0xa15a('0x4e')]=_0x16e159;return _0xb6a4bd;});}function checkListsRestrictions(_0x395956,_0x316118,_0x39cde8){var _0x20f486=squel[_0xa15a('0x22')]();return Promise[_0xa15a('0x4f')]()['then'](function(){if(_0x316118[_0xa15a('0x50')]&&_0x395956[_0xa15a('0x5')]===_0xa15a('0x6')&&!_0x39cde8){return _0x395956[_0xa15a('0x51')]({'attributes':['id'],'raw':!![]});}})[_0xa15a('0x4c')](function(_0x59379a){if(_0x59379a){if(_0x59379a['length']===0x0){_0x20f486[_0xa15a('0x3e')](_0xa15a('0x52'));}else{_0x20f486[_0xa15a('0x3e')](_0xa15a('0x53'),_[_0xa15a('0x54')](_0x59379a,'id'));}}})[_0xa15a('0x4c')](function(){return _0x20f486;});}function buildContactsQuery(_0xc925eb,_0x1f126f,_0x795582,_0x220b29,_0x3442b2,_0x390ded){if(_0x1f126f){_0x1f126f=_0x795582[_0xa15a('0x55')];}_0xc925eb=addFieldsToQuery(_0xc925eb,_0x1f126f,_0x220b29,_0x390ded,!![]);var _0x58c9b8=squel[_0xa15a('0xa')]();_0x58c9b8=addFieldsToQuery(_0x58c9b8,_0x1f126f,_0x220b29,_0x390ded,![]);if(_0x220b29||_0x390ded){_0xc925eb=applyJoinClauses(_0xc925eb,!![]);_0xc925eb[_0xa15a('0x56')]('c.id');if(_0x795582[_0xa15a('0x57')]){_0x58c9b8[_0xa15a('0x57')](_0x795582[_0xa15a('0x57')]);}if(_0x795582[_0xa15a('0x58')]){_0x58c9b8[_0xa15a('0x58')](_0x795582['offset']);}}else{_0x58c9b8=applyJoinClauses(_0x58c9b8,![]);_0x58c9b8[_0xa15a('0x56')](_0xa15a('0x59'));if(_0x795582['limit']){_0xc925eb[_0xa15a('0x57')](_0x795582[_0xa15a('0x57')]);}if(_0x795582['offset']){_0xc925eb['offset'](_0x795582[_0xa15a('0x58')]);}}_0x58c9b8[_0xa15a('0x5a')](_0x3442b2);if(_0x795582[_0xa15a('0x5b')]){_0x795582[_0xa15a('0x5b')][_0xa15a('0x1f')](function(_0x18774b){_0xc925eb[_0xa15a('0x5b')]('c.'+_0x18774b[0x0],_0x18774b[0x1]===_0xa15a('0x5c')?![]:!![]);_0x58c9b8[_0xa15a('0x5b')](_0xa15a('0x5d')+_0x18774b[0x0],_0x18774b[0x1]==='DESC'?![]:!![]);});}_0x58c9b8[_0xa15a('0xb')](_0xc925eb,_0xa15a('0xf'));return _0x58c9b8;}function getFilteredContacts(_0x144148){var _0x33c1c4=[];return db['Tag'][_0xa15a('0x5e')]({'attributes':['id',_0xa15a('0x31'),_0xa15a('0x5f')],'raw':!![]})[_0xa15a('0x4c')](function(_0x319b74){_0x33c1c4=_['keyBy'](_0x319b74,'id');var _0x4d2105={'type':db[_0xa15a('0x60')][_0xa15a('0x61')][_0xa15a('0x62')],'model':db[_0xa15a('0x63')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xa15a('0x64')][_0xa15a('0x65')](_0x144148[_0xa15a('0x66')](),_0x4d2105);})[_0xa15a('0x4c')](function(_0x2dfddf){_0x2dfddf[_0xa15a('0x1f')](function(_0x8fe2dd){if(_0x8fe2dd[_0xa15a('0x1c')]){_0x8fe2dd[_0xa15a('0x67')]=[];_0x8fe2dd[_0xa15a('0x1c')][_0xa15a('0x68')](',')[_0xa15a('0x1f')](function(_0x4b7b23){_0x8fe2dd['Tags']['push'](_0x33c1c4[_0x4b7b23]);});}delete _0x8fe2dd['TagIds'];});return _0x2dfddf;});}function countFilteredContacts(_0x56fc0f,_0x564df0){var _0x566c44=_0x56fc0f[_0xa15a('0x69')]();_0x566c44['field'](_0xa15a('0x6a'));_0x566c44=applyJoinClauses(_0x566c44,!![]);_0x56fc0f[_0xa15a('0x56')](_0xa15a('0x6b'));var _0x3094c7=utils[_0xa15a('0x23')](_0x564df0);if(!_[_0xa15a('0x6c')](_0x3094c7)){_0x566c44[_0xa15a('0xd')](_0xa15a('0x6d'),_0x3094c7);}var _0x319a0a={'type':db[_0xa15a('0x60')][_0xa15a('0x61')][_0xa15a('0x62')],'raw':!![]};return db[_0xa15a('0x64')][_0xa15a('0x65')](_0x566c44[_0xa15a('0x66')](),_0x319a0a)['then'](function(_0x50c2ad){return _0x50c2ad[0x0][_0xa15a('0x6a')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 68fa82b..7b39021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fde=['secret','utf8','base64','decryptString','bluebird','lodash','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','indexOf','hasOwnProperty','createReadStream','createCipher','data','binary','write','end','final','close','unlink','createWriteStream','createDecipher','update'];(function(_0xbfc335,_0x125b2d){var _0x297093=function(_0x11e9af){while(--_0x11e9af){_0xbfc335['push'](_0xbfc335['shift']());}};_0x297093(++_0x125b2d);}(_0x8fde,0x80));var _0xe8fd=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0x8fde[_0x26462c];return _0x509a42;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xe8fd('0x0'));var _=require(_0xe8fd('0x1'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xe8fd('0x2'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xe8fd('0x3')][_0xe8fd('0x4')],'algorithm':_0xe8fd('0x5')};const fileOptions={'algorithm':_0xe8fd('0x6')};if(config['encrypt']&&config[_0xe8fd('0x7')][_0xe8fd('0x8')]){var isSupported=isAlgorithmSupported(config[_0xe8fd('0x7')][_0xe8fd('0x8')]);if(isSupported){fileOptions[_0xe8fd('0x8')]=config[_0xe8fd('0x7')][_0xe8fd('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xe8fd('0x9')](',\x20');logger['error'](config['encrypt'][_0xe8fd('0x8')],_0xe8fd('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x4d1165){return AES_SUPPORTED_RX[_0xe8fd('0xb')](_0x4d1165);}function getSupportedCiphers(){return crypto['getCiphers']()[_0xe8fd('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x34c61c){return getSupportedCiphers()[_0xe8fd('0xd')](_0x34c61c)>-0x1;}function combineOptions(_0x386f88){var _0x38aedc={};for(var _0x572518 in fileOptions){if(fileOptions[_0xe8fd('0xe')](_0x572518)){_0x38aedc[_0x572518]=fileOptions[_0x572518];}}if(_0x386f88){for(var _0x35e212 in _0x386f88){if(_0x386f88['hasOwnProperty'](_0x35e212)){_0x38aedc[_0x35e212]=_0x386f88[_0x35e212];}}}return _0x38aedc;}exports['encryptFile']=function(_0x2cbf7c,_0xab5d1d,_0x147377,_0x55af57){return new BPromise(function(_0xcb3ecf,_0xbd8a91){_0x55af57=combineOptions(_0x55af57);var _0x229e2a=new Buffer(_0x147377);var _0x4fbf4a=fs[_0xe8fd('0xf')](_0x2cbf7c);var _0x51a8be=fs['createWriteStream'](_0xab5d1d);var _0x44b26f=crypto[_0xe8fd('0x10')](_0x55af57[_0xe8fd('0x8')],_0x229e2a);_0x4fbf4a['on'](_0xe8fd('0x11'),function(_0x1452f6){var _0x331329=new Buffer(_0x44b26f['update'](_0x1452f6),_0xe8fd('0x12'));_0x51a8be[_0xe8fd('0x13')](_0x331329);});_0x4fbf4a['on'](_0xe8fd('0x14'),function(){try{var _0x37d810=new Buffer(_0x44b26f[_0xe8fd('0x15')]('binary'),_0xe8fd('0x12'));_0x51a8be[_0xe8fd('0x13')](_0x37d810);_0x51a8be[_0xe8fd('0x14')]();_0x51a8be['on'](_0xe8fd('0x16'),function(){return _0xcb3ecf(_0xab5d1d);});}catch(_0x365f0e){fs[_0xe8fd('0x17')](_0xab5d1d);return _0xbd8a91(_0x365f0e);}});});};exports['decryptFile']=function(_0x4ffeff,_0x400360,_0x3ca6d2,_0x4fff69){return new BPromise(function(_0x2283c9,_0x451131){_0x4fff69=combineOptions(_0x4fff69);var _0x1de526=new Buffer(_0x3ca6d2);var _0x2829d7=fs[_0xe8fd('0xf')](_0x4ffeff);var _0x1464ee=fs[_0xe8fd('0x18')](_0x400360);var _0x54e77e=crypto[_0xe8fd('0x19')](_0x4fff69[_0xe8fd('0x8')],_0x1de526);_0x2829d7['on'](_0xe8fd('0x11'),function(_0x2e2d4c){var _0x138764=new Buffer(_0x54e77e[_0xe8fd('0x1a')](_0x2e2d4c),'binary');_0x1464ee[_0xe8fd('0x13')](_0x138764);});_0x2829d7['on'](_0xe8fd('0x14'),function(){try{var _0xdef155=new Buffer(_0x54e77e[_0xe8fd('0x15')]('binary'),_0xe8fd('0x12'));_0x1464ee[_0xe8fd('0x13')](_0xdef155);_0x1464ee[_0xe8fd('0x14')]();_0x1464ee['on']('close',function(){return _0x2283c9(_0x400360);});}catch(_0x31b960){fs[_0xe8fd('0x17')](_0x400360);return _0x451131(_0x31b960);}});});};exports['encryptString']=function(_0x4881a9,_0x51cbc6,_0x5a2e30){var _0x39b5e9=_0x5a2e30||stringOptions[_0xe8fd('0x8')];var _0x53656b=_0x51cbc6||stringOptions[_0xe8fd('0x1b')];var _0x1b1ea5=crypto[_0xe8fd('0x10')](_0x39b5e9,_0x53656b);var _0x5f149e=_0x1b1ea5['update'](_0x4881a9,_0xe8fd('0x1c'),'base64');_0x5f149e+=_0x1b1ea5['final'](_0xe8fd('0x1d'));return _0x5f149e;};exports[_0xe8fd('0x1e')]=function(_0x31466d,_0x776d74,_0x156e22){var _0x434c9e=_0x156e22||stringOptions['algorithm'];var _0x5ec7dc=_0x776d74||stringOptions['secret'];var _0x28e4be=crypto[_0xe8fd('0x19')](_0x434c9e,_0x5ec7dc);var _0x41c924=_0x28e4be[_0xe8fd('0x1a')](_0x31466d,'base64',_0xe8fd('0x1c'));_0x41c924+=_0x28e4be[_0xe8fd('0x15')](_0xe8fd('0x1c'));return _0x41c924;};
\ No newline at end of file
+var _0x8c6c=['bluebird','lodash','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','filter','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','close','createWriteStream','unlink','secret','utf8','final','base64','createDecipher','crypto'];(function(_0x23552b,_0x5b042e){var _0x4c338d=function(_0x452bf5){while(--_0x452bf5){_0x23552b['push'](_0x23552b['shift']());}};_0x4c338d(++_0x5b042e);}(_0x8c6c,0x77));var _0xc8c6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8c6c[_0x321bb2];return _0x9c12ed;};'use strict';var crypto=require(_0xc8c6('0x0'));var fs=require('fs');var BPromise=require(_0xc8c6('0x1'));var _=require(_0xc8c6('0x2'));var config=require('../../config/environment');var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xc8c6('0x3')][_0xc8c6('0x4')],'algorithm':_0xc8c6('0x5')};const fileOptions={'algorithm':_0xc8c6('0x6')};if(config[_0xc8c6('0x7')]&&config['encrypt'][_0xc8c6('0x8')]){var isSupported=isAlgorithmSupported(config[_0xc8c6('0x7')][_0xc8c6('0x8')]);if(isSupported){fileOptions[_0xc8c6('0x8')]=config[_0xc8c6('0x7')][_0xc8c6('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xc8c6('0x9')](',\x20');logger['error'](config[_0xc8c6('0x7')][_0xc8c6('0x8')],_0xc8c6('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x20c075){return AES_SUPPORTED_RX[_0xc8c6('0xb')](_0x20c075);}function getSupportedCiphers(){return crypto['getCiphers']()[_0xc8c6('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x4f5786){return getSupportedCiphers()['indexOf'](_0x4f5786)>-0x1;}function combineOptions(_0x43ff1f){var _0x6ef154={};for(var _0x58cf2b in fileOptions){if(fileOptions[_0xc8c6('0xd')](_0x58cf2b)){_0x6ef154[_0x58cf2b]=fileOptions[_0x58cf2b];}}if(_0x43ff1f){for(var _0x130c7e in _0x43ff1f){if(_0x43ff1f[_0xc8c6('0xd')](_0x130c7e)){_0x6ef154[_0x130c7e]=_0x43ff1f[_0x130c7e];}}}return _0x6ef154;}exports[_0xc8c6('0xe')]=function(_0x2dcf23,_0x253a43,_0x303aba,_0x536e47){return new BPromise(function(_0x4ec3c6,_0x44c411){_0x536e47=combineOptions(_0x536e47);var _0x1a4a8f=new Buffer(_0x303aba);var _0x4667cf=fs[_0xc8c6('0xf')](_0x2dcf23);var _0x3a5078=fs['createWriteStream'](_0x253a43);var _0x4aec0d=crypto[_0xc8c6('0x10')](_0x536e47[_0xc8c6('0x8')],_0x1a4a8f);_0x4667cf['on'](_0xc8c6('0x11'),function(_0x1b6ac4){var _0x21c9a9=new Buffer(_0x4aec0d[_0xc8c6('0x12')](_0x1b6ac4),_0xc8c6('0x13'));_0x3a5078[_0xc8c6('0x14')](_0x21c9a9);});_0x4667cf['on'](_0xc8c6('0x15'),function(){try{var _0x1ada1f=new Buffer(_0x4aec0d['final'](_0xc8c6('0x13')),_0xc8c6('0x13'));_0x3a5078[_0xc8c6('0x14')](_0x1ada1f);_0x3a5078[_0xc8c6('0x15')]();_0x3a5078['on'](_0xc8c6('0x16'),function(){return _0x4ec3c6(_0x253a43);});}catch(_0x1f1d63){fs['unlink'](_0x253a43);return _0x44c411(_0x1f1d63);}});});};exports['decryptFile']=function(_0x72cef9,_0x5e8974,_0x217fab,_0x34fbb8){return new BPromise(function(_0x136f18,_0x2e6b30){_0x34fbb8=combineOptions(_0x34fbb8);var _0x34c638=new Buffer(_0x217fab);var _0x5a50a2=fs['createReadStream'](_0x72cef9);var _0x3f5c3c=fs[_0xc8c6('0x17')](_0x5e8974);var _0x3e3bc5=crypto['createDecipher'](_0x34fbb8[_0xc8c6('0x8')],_0x34c638);_0x5a50a2['on'](_0xc8c6('0x11'),function(_0x50a303){var _0x23f23d=new Buffer(_0x3e3bc5[_0xc8c6('0x12')](_0x50a303),_0xc8c6('0x13'));_0x3f5c3c['write'](_0x23f23d);});_0x5a50a2['on'](_0xc8c6('0x15'),function(){try{var _0x1be8e2=new Buffer(_0x3e3bc5['final'](_0xc8c6('0x13')),_0xc8c6('0x13'));_0x3f5c3c[_0xc8c6('0x14')](_0x1be8e2);_0x3f5c3c[_0xc8c6('0x15')]();_0x3f5c3c['on'](_0xc8c6('0x16'),function(){return _0x136f18(_0x5e8974);});}catch(_0x55c6e8){fs[_0xc8c6('0x18')](_0x5e8974);return _0x2e6b30(_0x55c6e8);}});});};exports['encryptString']=function(_0xfa33d6,_0x4ca891,_0xe2e5e){var _0x49d678=_0xe2e5e||stringOptions[_0xc8c6('0x8')];var _0xc0c2f=_0x4ca891||stringOptions[_0xc8c6('0x19')];var _0x1b12b4=crypto[_0xc8c6('0x10')](_0x49d678,_0xc0c2f);var _0x434801=_0x1b12b4['update'](_0xfa33d6,_0xc8c6('0x1a'),'base64');_0x434801+=_0x1b12b4[_0xc8c6('0x1b')](_0xc8c6('0x1c'));return _0x434801;};exports['decryptString']=function(_0x3ff1c6,_0xa7b58e,_0x43fa5a){var _0x485c0a=_0x43fa5a||stringOptions[_0xc8c6('0x8')];var _0xde488e=_0xa7b58e||stringOptions[_0xc8c6('0x19')];var _0x2f8d8f=crypto[_0xc8c6('0x1d')](_0x485c0a,_0xde488e);var _0x32ec60=_0x2f8d8f[_0xc8c6('0x12')](_0x3ff1c6,_0xc8c6('0x1c'),_0xc8c6('0x1a'));_0x32ec60+=_0x2f8d8f[_0xc8c6('0x1b')](_0xc8c6('0x1a'));return _0x32ec60;};
\ No newline at end of file
index 118c6f6..42c20a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b36=['zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','split','splitSizeCsv','then','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','length','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.csv','existsSync','join','mkdirSync','%s%d.%s','csv','writeFileSync','%s.%s','zip','zip\x20finished','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','to-csv'];(function(_0x3718b7,_0x2da677){var _0xf8c91e=function(_0x2519b4){while(--_0x2519b4){_0x3718b7['push'](_0x3718b7['shift']());}};_0xf8c91e(++_0x2da677);}(_0x5b36,0x11d));var _0x65b3=function(_0xcd8b7b,_0x4f2a9b){_0xcd8b7b=_0xcd8b7b-0x0;var _0x1490c4=_0x5b36[_0xcd8b7b];return _0x1490c4;};'use strict';var util=require(_0x65b3('0x0'));var path=require(_0x65b3('0x1'));var _=require('lodash');var csv=require(_0x65b3('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x65b3('0x3'));var rimraf=require('rimraf');var db=require(_0x65b3('0x4'))['db'];var dbH=require(_0x65b3('0x4'))[_0x65b3('0x5')];var logger=require(_0x65b3('0x6'))(_0x65b3('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x65b3('0x8')][0x2]);var QUERY=process[_0x65b3('0x8')][0x3];var PATH=process[_0x65b3('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x126059,_0x5eaf65){var _0x49d0a1={'status':_0x126059};var _0x35f92a={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5eaf65){_0x49d0a1['savename']=_0x5eaf65;}return db[_0x65b3('0x9')][_0x65b3('0xa')](_0x49d0a1,_0x35f92a);}function main(){var _0x2da05c=0x1388;var _0x3b6e32;logger[_0x65b3('0xb')](util['format'](_0x65b3('0xc'),EXTRACTED_REPORT_ID,_0x65b3('0xd')));return db['Setting'][_0x65b3('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x65b3('0xf'),_0x65b3('0x10')]})[_0x65b3('0x11')](function(_0x3d1423){if(_0x3d1423){_0x3b6e32=_0x3d1423;_0x2da05c=_0x3b6e32[_0x65b3('0x10')]||0x1388;}})[_0x65b3('0x11')](function(){return dbH['sequelize'][_0x65b3('0x12')](util[_0x65b3('0x13')](_0x65b3('0x14'),QUERY),{'type':dbH[_0x65b3('0x15')][_0x65b3('0x16')][_0x65b3('0x17')]});})[_0x65b3('0x11')](function(_0x1bb277){if(!_0x1bb277[0x0]['num']){return analyticExtractedReport('Empty');}var _0x17f586=[];var _0x28175c=0x0;if(_0x3b6e32[_0x65b3('0xf')]){if(_0x1bb277&&_0x1bb277[_0x65b3('0x18')]){var _0x52e722=_['range'](_0x1bb277[0x0][_0x65b3('0x19')]/_0x2da05c);var _0x12f767=Number[_0x65b3('0x1a')](_0x1bb277[0x0][_0x65b3('0x19')]/_0x2da05c)?_0x1bb277[0x0][_0x65b3('0x19')]%_0x2da05c:0x0;_0x52e722[_0x65b3('0x1b')](function(_0x5574af){if(_0x5574af>0x0){_0x28175c+=_0x2da05c;}_0x17f586['push'](dbH[_0x65b3('0x15')][_0x65b3('0x12')](util[_0x65b3('0x13')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2da05c,_0x28175c),{'type':dbH[_0x65b3('0x15')]['QueryTypes'][_0x65b3('0x17')]}));});if(_0x12f767>0x0){_0x28175c+=_0x2da05c;_0x17f586[_0x65b3('0x1c')](dbH[_0x65b3('0x15')]['query'](util[_0x65b3('0x13')](_0x65b3('0x1d'),QUERY,_0x12f767,_0x28175c),{'type':dbH['sequelize'][_0x65b3('0x16')]['SELECT']}));}}}else{_0x17f586[_0x65b3('0x1c')](dbH[_0x65b3('0x15')]['query'](QUERY,{'type':dbH[_0x65b3('0x15')][_0x65b3('0x16')]['SELECT']}));}var _0x5e0488=path['dirname'](PATH);var _0x47a6aa=path[_0x65b3('0x1e')](PATH,_0x65b3('0x1f'));var _0x43f17e=_0x3b6e32[_0x65b3('0xf')]&&_0x17f586[_0x65b3('0x18')]>0x1;var _0x1e62e4=[];if(!fs[_0x65b3('0x20')](path[_0x65b3('0x21')](_0x5e0488,_0x47a6aa))&&_0x43f17e){fs[_0x65b3('0x22')](path['join'](_0x5e0488,_0x47a6aa));}return BPromise['each'](_0x17f586,function(_0x437138){_0x1e62e4[_0x65b3('0x1c')](_0x437138);})['then'](function(){for(var _0xa31c01=0x0;_0xa31c01<_0x1e62e4[_0x65b3('0x18')];_0xa31c01+=0x1){var _0x54d246;var _0x347b5c=_0x1e62e4[_0xa31c01];if(_0x43f17e){_0x54d246=path[_0x65b3('0x21')](_0x5e0488,_0x47a6aa,util['format'](_0x65b3('0x23'),_0x47a6aa,_0xa31c01,_0x65b3('0x24')));}else{_0x54d246=path[_0x65b3('0x21')](_0x5e0488,util[_0x65b3('0x13')]('%s.%s',_0x47a6aa,'csv'));}fs[_0x65b3('0x25')](_0x54d246,csv(_0x347b5c));}})[_0x65b3('0x11')](function(){if(_0x43f17e){return new Promise(function(_0x2575dd){zipdir(path[_0x65b3('0x21')](_0x5e0488,_0x47a6aa),{'saveTo':path['join'](_0x5e0488,util['format'](_0x65b3('0x26'),_0x47a6aa,_0x65b3('0x27')))},function(_0x173d3,_0x5151cd){rimraf(path['join'](_0x5e0488,_0x47a6aa),function(){});_0x2575dd(_0x65b3('0x28'));});});}})[_0x65b3('0x11')](function(){logger[_0x65b3('0xb')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x65b3('0xd')));return analyticExtractedReport(_0x65b3('0x29'),_0x43f17e?util[_0x65b3('0x13')](_0x65b3('0x26'),_0x47a6aa,_0x43f17e?_0x65b3('0x27'):_0x65b3('0x24')):null);});})[_0x65b3('0x2a')](function(_0x55fddf){logger['info'](util[_0x65b3('0x13')](_0x65b3('0x2b'),EXTRACTED_REPORT_ID,'CSV'),util[_0x65b3('0x2c')](_0x55fddf,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x65b3('0x2d'));})[_0x65b3('0x2e')](function(){process[_0x65b3('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xb752=['forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','basename','.csv','join','mkdirSync','each','length','%s.%s','csv','writeFileSync','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','isInteger'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0xb752,0x114));var _0x2b75=function(_0x2d1cad,_0x24a9bc){_0x2d1cad=_0x2d1cad-0x0;var _0x449809=_0xb752[_0x2d1cad];return _0x449809;};'use strict';var util=require(_0x2b75('0x0'));var path=require(_0x2b75('0x1'));var _=require(_0x2b75('0x2'));var csv=require(_0x2b75('0x3'));var fs=require('fs');var BPromise=require(_0x2b75('0x4'));var zipdir=require(_0x2b75('0x5'));var rimraf=require(_0x2b75('0x6'));var db=require(_0x2b75('0x7'))['db'];var dbH=require(_0x2b75('0x7'))[_0x2b75('0x8')];var logger=require(_0x2b75('0x9'))(_0x2b75('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x2b75('0xb')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x2b75('0xb')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2dbd78,_0x462a48){var _0x34ed77={'status':_0x2dbd78};var _0x116e7d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x462a48){_0x34ed77[_0x2b75('0xc')]=_0x462a48;}return db[_0x2b75('0xd')][_0x2b75('0xe')](_0x34ed77,_0x116e7d);}function main(){var _0x58d1ea=0x1388;var _0x43ee44;logger[_0x2b75('0xf')](util[_0x2b75('0x10')](_0x2b75('0x11'),EXTRACTED_REPORT_ID,_0x2b75('0x12')));return db[_0x2b75('0x13')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2b75('0x14'),_0x2b75('0x15')]})[_0x2b75('0x16')](function(_0x1744db){if(_0x1744db){_0x43ee44=_0x1744db;_0x58d1ea=_0x43ee44['splitSizeCsv']||0x1388;}})[_0x2b75('0x16')](function(){return dbH[_0x2b75('0x17')][_0x2b75('0x18')](util[_0x2b75('0x10')](_0x2b75('0x19'),QUERY),{'type':dbH[_0x2b75('0x17')]['QueryTypes'][_0x2b75('0x1a')]});})[_0x2b75('0x16')](function(_0x13a1ac){if(!_0x13a1ac[0x0][_0x2b75('0x1b')]){return analyticExtractedReport(_0x2b75('0x1c'));}var _0x142a37=[];var _0x2678af=0x0;if(_0x43ee44[_0x2b75('0x14')]){if(_0x13a1ac&&_0x13a1ac['length']){var _0x54d63a=_['range'](_0x13a1ac[0x0][_0x2b75('0x1b')]/_0x58d1ea);var _0x11d701=Number[_0x2b75('0x1d')](_0x13a1ac[0x0][_0x2b75('0x1b')]/_0x58d1ea)?_0x13a1ac[0x0][_0x2b75('0x1b')]%_0x58d1ea:0x0;_0x54d63a[_0x2b75('0x1e')](function(_0x15149f){if(_0x15149f>0x0){_0x2678af+=_0x58d1ea;}_0x142a37[_0x2b75('0x1f')](dbH[_0x2b75('0x17')]['query'](util[_0x2b75('0x10')](_0x2b75('0x20'),QUERY,_0x58d1ea,_0x2678af),{'type':dbH[_0x2b75('0x17')][_0x2b75('0x21')]['SELECT']}));});if(_0x11d701>0x0){_0x2678af+=_0x58d1ea;_0x142a37[_0x2b75('0x1f')](dbH[_0x2b75('0x17')][_0x2b75('0x18')](util[_0x2b75('0x10')](_0x2b75('0x20'),QUERY,_0x11d701,_0x2678af),{'type':dbH[_0x2b75('0x17')][_0x2b75('0x21')][_0x2b75('0x1a')]}));}}}else{_0x142a37['push'](dbH['sequelize'][_0x2b75('0x18')](QUERY,{'type':dbH[_0x2b75('0x17')][_0x2b75('0x21')]['SELECT']}));}var _0x560bf3=path['dirname'](PATH);var _0x2fc95e=path[_0x2b75('0x22')](PATH,_0x2b75('0x23'));var _0x214ed0=_0x43ee44[_0x2b75('0x14')]&&_0x142a37['length']>0x1;var _0x4351ca=[];if(!fs['existsSync'](path[_0x2b75('0x24')](_0x560bf3,_0x2fc95e))&&_0x214ed0){fs[_0x2b75('0x25')](path[_0x2b75('0x24')](_0x560bf3,_0x2fc95e));}return BPromise[_0x2b75('0x26')](_0x142a37,function(_0x2c6f37){_0x4351ca[_0x2b75('0x1f')](_0x2c6f37);})[_0x2b75('0x16')](function(){for(var _0x5bc5a6=0x0;_0x5bc5a6<_0x4351ca[_0x2b75('0x27')];_0x5bc5a6+=0x1){var _0x9beef4;var _0x37cf4f=_0x4351ca[_0x5bc5a6];if(_0x214ed0){_0x9beef4=path[_0x2b75('0x24')](_0x560bf3,_0x2fc95e,util['format']('%s%d.%s',_0x2fc95e,_0x5bc5a6,'csv'));}else{_0x9beef4=path[_0x2b75('0x24')](_0x560bf3,util[_0x2b75('0x10')](_0x2b75('0x28'),_0x2fc95e,_0x2b75('0x29')));}fs[_0x2b75('0x2a')](_0x9beef4,csv(_0x37cf4f));}})[_0x2b75('0x16')](function(){if(_0x214ed0){return new Promise(function(_0x1ea612){zipdir(path[_0x2b75('0x24')](_0x560bf3,_0x2fc95e),{'saveTo':path['join'](_0x560bf3,util[_0x2b75('0x10')](_0x2b75('0x28'),_0x2fc95e,'zip'))},function(_0x3a14fb,_0x504ed3){rimraf(path[_0x2b75('0x24')](_0x560bf3,_0x2fc95e),function(){});_0x1ea612(_0x2b75('0x2b'));});});}})[_0x2b75('0x16')](function(){logger[_0x2b75('0xf')](util['format'](_0x2b75('0x2c'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x2b75('0x2d'),_0x214ed0?util[_0x2b75('0x10')]('%s.%s',_0x2fc95e,_0x214ed0?_0x2b75('0x2e'):_0x2b75('0x29')):null);});})[_0x2b75('0x2f')](function(_0x27fe3b){logger[_0x2b75('0xf')](util[_0x2b75('0x10')](_0x2b75('0x30'),EXTRACTED_REPORT_ID,'CSV'),util[_0x2b75('0x31')](_0x27fe3b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x2b75('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
index 5418457..a40e55a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3912=['isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','sequelize','dirname','.pdf','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','%s.%s','pdf','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','YYYY-MM-DD','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','createPdfFromHTML','catch','lodash','util','path','moment','jsdom','JSDOM','window','../../mysqldb','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','pick','toString','length','auto','body','concat','chunk','keys','forEach','push','format','startDate','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','black','right','num','Empty','Setting','split','splitSizePdf','then','range'];(function(_0x8e8ca7,_0x5a5e07){var _0x561381=function(_0x2f4bda){while(--_0x2f4bda){_0x8e8ca7['push'](_0x8e8ca7['shift']());}};_0x561381(++_0x5a5e07);}(_0x3912,0x1e9));var _0x2391=function(_0x23e2a3,_0x279987){_0x23e2a3=_0x23e2a3-0x0;var _0x317b8f=_0x3912[_0x23e2a3];return _0x317b8f;};'use strict';var _=require(_0x2391('0x0'));var fs=require('fs');var util=require(_0x2391('0x1'));var path=require(_0x2391('0x2'));var moment=require(_0x2391('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require('pdfmake/src/printer');var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require(_0x2391('0x4'))[_0x2391('0x5')];var window=new JSDOM('')[_0x2391('0x6')];var BPromise=require('bluebird');var db=require(_0x2391('0x7'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x2391('0x8'))(_0x2391('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x2391('0xa')][0x4];var NAME=process[_0x2391('0xa')][0x5];var FORMAT=_0x2391('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x4f0055,_0x238f44){var _0x15e7b7={'status':_0x4f0055};var _0x6719d4={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x238f44){_0x15e7b7[_0x2391('0xc')]=_0x238f44;}return db[_0x2391('0xd')]['update'](_0x15e7b7,_0x6719d4);}function getHeaders(_0x4985b2){return _[_0x2391('0xe')](_0x4985b2,function(_0x26b463){return{'text':_0x26b463,'style':_0x2391('0xf')};});}function getRows(_0x5f4e4f,_0x46cd5f){return _[_0x2391('0xe')](_0x46cd5f,function(_0x186921){return _(_0x186921)[_0x2391('0x10')](_0x5f4e4f)[_0x2391('0xe')](function(_0x36fed8){return _0x36fed8?_[_0x2391('0x11')](_0x36fed8):'';})['value']();});}function createTable(_0x57eed6,_0x2a8166){var _0x455d84={'widths':_['fill'](Array(_0x57eed6[_0x2391('0x12')]),0x91),'heights':function(_0x8bbe1d){return _0x8bbe1d===0x0?_0x2391('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x215ca9=getHeaders(_0x57eed6);_0x455d84[_0x2391('0x14')]['push'](_0x215ca9);var _0x2fc463=getRows(_0x57eed6,_0x2a8166);_0x455d84[_0x2391('0x14')]=_0x455d84[_0x2391('0x14')][_0x2391('0x15')](_0x2fc463);return _0x455d84;}function createTables(_0x1366ba){var _0x4d4eae=[];var _0x45636c=_[_0x2391('0x16')](Object[_0x2391('0x17')](_0x1366ba[0x0]),0x5);_0x45636c[_0x2391('0x18')](function(_0x485e0d){_0x4d4eae[_0x2391('0x19')](createTable(_0x485e0d,_0x1366ba));});return _0x4d4eae;}function getPDFDocDefinition(_0x5578b1){var _0x472128=util[_0x2391('0x1a')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x2391('0x1b')])[_0x2391('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x2391('0x1c')])[_0x2391('0x1a')](FORMAT));var _0x4633e0=[];for(var _0x531b7b=0x0;_0x531b7b<_0x5578b1[_0x2391('0x12')];_0x531b7b++){var _0x53b82f=[];if(_0x531b7b===0x0){_0x53b82f[_0x2391('0x19')]({'text':_0x472128,'style':_0x2391('0x1d')});}var _0x10c832={'table':_0x5578b1[_0x531b7b]};if(_0x531b7b>0x0){_0x10c832[_0x2391('0x1e')]=_0x2391('0x1f');_0x10c832[_0x2391('0x20')]=[0x0,0x46,0x0,0x0];}_0x53b82f[_0x2391('0x19')](_0x10c832);_0x4633e0['push'](_0x53b82f);}return{'pageSize':'A4','pageOrientation':_0x2391('0x21'),'content':_0x4633e0,'footer':function(_0x3e355b,_0x35a7f3){return{'text':_0x3e355b[_0x2391('0x11')]()+_0x2391('0x22')+_0x35a7f3,'style':_0x2391('0x23')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x2391('0x24')},'footer':{'alignment':_0x2391('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x48f1ad){var _0x119d3b=0x1388;var _0x5d8d28;if(!_0x48f1ad[0x0][_0x2391('0x26')]){return analyticExtractedReport(_0x2391('0x27'));}return db[_0x2391('0x28')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x2391('0x29'),_0x2391('0x2a')]})['then'](function(_0x2cbff6){if(_0x2cbff6){_0x5d8d28=_0x2cbff6;_0x119d3b=_0x5d8d28[_0x2391('0x2a')]||0x3e8;}})[_0x2391('0x2b')](function(){var _0xdde9e2=[];var _0x5462c8=0x0;if(_0x5d8d28['split']){if(_0x48f1ad&&_0x48f1ad[_0x2391('0x12')]){var _0x619df3=_[_0x2391('0x2c')](_0x48f1ad[0x0][_0x2391('0x26')]/_0x119d3b);var _0x49f2c1=Number[_0x2391('0x2d')](_0x48f1ad[0x0][_0x2391('0x26')]/_0x119d3b)?_0x48f1ad[0x0]['num']%_0x119d3b:0x0;_0x619df3[_0x2391('0x18')](function(_0xe3fe68){if(_0xe3fe68>0x0){_0x5462c8+=_0x119d3b;}_0xdde9e2[_0x2391('0x19')](dbH['sequelize'][_0x2391('0x2e')](util[_0x2391('0x1a')](_0x2391('0x2f'),QUERY,_0x119d3b,_0x5462c8),{'type':dbH['sequelize'][_0x2391('0x30')]['SELECT']}));});if(_0x49f2c1>0x0){_0x5462c8+=_0x119d3b;_0xdde9e2[_0x2391('0x19')](dbH[_0x2391('0x31')]['query'](util[_0x2391('0x1a')](_0x2391('0x2f'),QUERY,_0x49f2c1,_0x5462c8),{'type':dbH[_0x2391('0x31')][_0x2391('0x30')]['SELECT']}));}}}else{_0xdde9e2['push'](dbH['sequelize'][_0x2391('0x2e')](QUERY,{'type':dbH[_0x2391('0x31')][_0x2391('0x30')]['SELECT']}));}var _0x5835fa=path[_0x2391('0x32')](PATH);var _0x31d9d4=path['basename'](PATH,_0x2391('0x33'));var _0x421d0a=_0x5d8d28[_0x2391('0x29')]&&_0xdde9e2[_0x2391('0x12')]>0x1;var _0x1bcaf7=[];if(!fs['existsSync'](path[_0x2391('0x34')](_0x5835fa,_0x31d9d4))&&_0x421d0a){fs[_0x2391('0x35')](path[_0x2391('0x34')](_0x5835fa,_0x31d9d4));}return BPromise[_0x2391('0x36')](_0xdde9e2,function(_0x3940ba){_0x1bcaf7[_0x2391('0x19')](_0x3940ba);})[_0x2391('0x2b')](function(){var _0x2e0ae7=[];for(var _0x1168cb=0x0;_0x1168cb<_0x1bcaf7[_0x2391('0x12')];_0x1168cb+=0x1){var _0x3c26ce=_0x1bcaf7[_0x1168cb];var _0x19f7f8=createTables(_[_0x2391('0x37')](_0x3c26ce));var _0x29e670;var _0x5e160d=getPDFDocDefinition(_0x19f7f8);var _0x2ba560=getPDFPrinter();var _0x5889c5=_0x2ba560[_0x2391('0x38')](_0x5e160d);if(_0x421d0a){_0x29e670=path[_0x2391('0x34')](_0x5835fa,_0x31d9d4,util[_0x2391('0x1a')](_0x2391('0x39'),_0x31d9d4,_0x1168cb,'pdf'));}else{_0x29e670=path['join'](_0x5835fa,util['format'](_0x2391('0x3a'),_0x31d9d4,_0x2391('0x3b')));}_0x2e0ae7[_0x2391('0x19')](writePDFDocument(_0x5889c5,_0x29e670));}return Promise[_0x2391('0x3c')](_0x2e0ae7);})[_0x2391('0x2b')](function(){if(_0x421d0a){return new Promise(function(_0x3f47f0){zipdir(path[_0x2391('0x34')](_0x5835fa,_0x31d9d4),{'saveTo':path['join'](_0x5835fa,util[_0x2391('0x1a')]('%s.%s',_0x31d9d4,_0x2391('0x3d')))},function(){rimraf(path[_0x2391('0x34')](_0x5835fa,_0x31d9d4),function(){});_0x3f47f0(_0x2391('0x3e'));});});}})[_0x2391('0x2b')](function(){if(!_0x421d0a)return;rimraf(path['join'](_0x5835fa,_0x31d9d4),function(){});})['then'](function(){logger[_0x2391('0x3f')](util[_0x2391('0x1a')](_0x2391('0x40'),EXTRACTED_REPORT_ID,_0x2391('0x41')));return analyticExtractedReport(_0x2391('0x42'),_0x421d0a?util[_0x2391('0x1a')](_0x2391('0x3a'),_0x31d9d4,_0x421d0a?_0x2391('0x3d'):_0x2391('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x2391('0x3f')](util[_0x2391('0x1a')](_0x2391('0x43'),EXTRACTED_REPORT_ID,_0x2391('0x41')));return db[_0x2391('0xd')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x2391('0x2b')](function(_0xe71509){EXTRACTED_REPORT=_0xe71509;return dbH[_0x2391('0x31')][_0x2391('0x2e')](util[_0x2391('0x1a')](_0x2391('0x44'),QUERY),{'type':dbH[_0x2391('0x31')][_0x2391('0x30')]['SELECT']});})[_0x2391('0x2b')](extractReport)['catch'](function(_0x45669b){logger[_0x2391('0x3f')](util[_0x2391('0x1a')](_0x2391('0x45'),EXTRACTED_REPORT_ID,_0x2391('0x41')),util[_0x2391('0x46')](_0x45669b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x2391('0x47'));})[_0x2391('0x48')](function(){process[_0x2391('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x400417=new PdfPrinter({'Arial':{'normal':__dirname+_0x2391('0x4a'),'bold':__dirname+_0x2391('0x4b'),'italics':__dirname+_0x2391('0x4c'),'bolditalics':__dirname+_0x2391('0x4d')}});return _0x400417;}function getPDFDocDefinitionFromHTML(_0x503d9e,_0x27da4b){var _0x52f8c7=util[_0x2391('0x1a')]('%s\x20#%d',_0x27da4b[_0x2391('0x4e')],_0x27da4b['interactionId']);var _0x2778fa=moment()[_0x2391('0x1a')](_0x2391('0x4f'))['toString']();var _0x2c344=htmlToPdfmake(_0x503d9e,{'window':window,'tableAutoSize':!![]});return{'content':[_0x2c344],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x2391('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x2391('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x2391('0x50')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x2391('0x1d')}];},'footer':function(_0x1242bc,_0x270036){return[{'text':util['format'](_0x2391('0x51'),_0x52f8c7,_0x1242bc,_0x270036,_0x2778fa),'style':'footer'}];}};}function writePDFDocument(_0x350b1f,_0x368a75){return new Promise(function(_0x2785bb,_0x11f8c7){var _0x2bf03d=_0x350b1f[_0x2391('0x52')](fs[_0x2391('0x53')](_0x368a75));_0x2bf03d['on']('finish',function(){_0x2785bb(_0x2391('0x54'));});_0x2bf03d['on'](_0x2391('0x55'),function(_0x34ed1e){_0x11f8c7(_0x34ed1e);});_0x350b1f[_0x2391('0x56')]();});}exports[_0x2391('0x57')]=function(_0x546c66,_0x348540){var _0x4c8f56=getPDFPrinter();var _0x5006e=getPDFDocDefinitionFromHTML(_0x546c66,_0x348540);var _0x53e7fc=_0x4c8f56['createPdfKitDocument'](_0x5006e);return writePDFDocument(_0x53e7fc,_0x348540[_0x2391('0x2')])[_0x2391('0x58')](function(_0x36104c){throw _0x36104c;});};
\ No newline at end of file
+var _0x8cb9=['name','startDate','endDate','header','pageBreak','before','margin','toString','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','info','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','path','moment','pdfmake/src/printer','zip-dir','rimraf','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s'];(function(_0x33d1e4,_0x42afe7){var _0x3bf601=function(_0x50e9a5){while(--_0x50e9a5){_0x33d1e4['push'](_0x33d1e4['shift']());}};_0x3bf601(++_0x42afe7);}(_0x8cb9,0xf2));var _0x98cb=function(_0x50bb0e,_0x449299){_0x50bb0e=_0x50bb0e-0x0;var _0xecd389=_0x8cb9[_0x50bb0e];return _0xecd389;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require(_0x98cb('0x0'));var moment=require(_0x98cb('0x1'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x98cb('0x2'));var zipdir=require(_0x98cb('0x3'));var rimraf=require(_0x98cb('0x4'));var JSDOM=require('jsdom')[_0x98cb('0x5')];var window=new JSDOM('')['window'];var BPromise=require(_0x98cb('0x6'));var db=require(_0x98cb('0x7'))['db'];var dbH=require('../../mysqldb')[_0x98cb('0x8')];var logger=require(_0x98cb('0x9'))(_0x98cb('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0x98cb('0xb')][0x2]);var QUERY=process[_0x98cb('0xb')][0x3];var PATH=process[_0x98cb('0xb')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x98cb('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1bd572,_0x3c990a){var _0x4b303a={'status':_0x1bd572};var _0x535f05={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3c990a){_0x4b303a[_0x98cb('0xd')]=_0x3c990a;}return db[_0x98cb('0xe')][_0x98cb('0xf')](_0x4b303a,_0x535f05);}function getHeaders(_0x56df3e){return _[_0x98cb('0x10')](_0x56df3e,function(_0xfb4038){return{'text':_0xfb4038,'style':_0x98cb('0x11')};});}function getRows(_0x26bad7,_0x2887c5){return _[_0x98cb('0x10')](_0x2887c5,function(_0x4aa0ef){return _(_0x4aa0ef)['pick'](_0x26bad7)[_0x98cb('0x10')](function(_0x3756eb){return _0x3756eb?_['toString'](_0x3756eb):'';})['value']();});}function createTable(_0x55ed0b,_0x1417e4){var _0x5eb14e={'widths':_['fill'](Array(_0x55ed0b[_0x98cb('0x12')]),0x91),'heights':function(_0x34e11e){return _0x34e11e===0x0?_0x98cb('0x13'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xf525d1=getHeaders(_0x55ed0b);_0x5eb14e[_0x98cb('0x14')][_0x98cb('0x15')](_0xf525d1);var _0x49dcf8=getRows(_0x55ed0b,_0x1417e4);_0x5eb14e['body']=_0x5eb14e[_0x98cb('0x14')][_0x98cb('0x16')](_0x49dcf8);return _0x5eb14e;}function createTables(_0x25c170){var _0x22f50b=[];var _0x410fa6=_[_0x98cb('0x17')](Object[_0x98cb('0x18')](_0x25c170[0x0]),0x5);_0x410fa6[_0x98cb('0x19')](function(_0x2358f6){_0x22f50b['push'](createTable(_0x2358f6,_0x25c170));});return _0x22f50b;}function getPDFDocDefinition(_0x4b549f){var _0x2af99b=util[_0x98cb('0x1a')](_0x98cb('0x1b'),NAME,EXTRACTED_REPORT[_0x98cb('0x1c')],moment(EXTRACTED_REPORT[_0x98cb('0x1d')])[_0x98cb('0x1a')](FORMAT),moment(EXTRACTED_REPORT[_0x98cb('0x1e')])[_0x98cb('0x1a')](FORMAT));var _0x5657dd=[];for(var _0x393e49=0x0;_0x393e49<_0x4b549f[_0x98cb('0x12')];_0x393e49++){var _0x19aa4d=[];if(_0x393e49===0x0){_0x19aa4d[_0x98cb('0x15')]({'text':_0x2af99b,'style':_0x98cb('0x1f')});}var _0xcd6410={'table':_0x4b549f[_0x393e49]};if(_0x393e49>0x0){_0xcd6410[_0x98cb('0x20')]=_0x98cb('0x21');_0xcd6410[_0x98cb('0x22')]=[0x0,0x46,0x0,0x0];}_0x19aa4d[_0x98cb('0x15')](_0xcd6410);_0x5657dd[_0x98cb('0x15')](_0x19aa4d);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x5657dd,'footer':function(_0x1698fe,_0x2ddd3c){return{'text':_0x1698fe[_0x98cb('0x23')]()+_0x98cb('0x24')+_0x2ddd3c,'style':_0x98cb('0x25')};},'defaultStyle':{'font':_0x98cb('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x98cb('0x27')},'footer':{'alignment':_0x98cb('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5648ea){var _0x469435=0x1388;var _0x5791e7;if(!_0x5648ea[0x0][_0x98cb('0x29')]){return analyticExtractedReport(_0x98cb('0x2a'));}return db[_0x98cb('0x2b')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x98cb('0x2c'),_0x98cb('0x2d')]})[_0x98cb('0x2e')](function(_0x3970ff){if(_0x3970ff){_0x5791e7=_0x3970ff;_0x469435=_0x5791e7['splitSizePdf']||0x3e8;}})['then'](function(){var _0x331f41=[];var _0x1ebbc4=0x0;if(_0x5791e7['split']){if(_0x5648ea&&_0x5648ea[_0x98cb('0x12')]){var _0x3d2ebe=_[_0x98cb('0x2f')](_0x5648ea[0x0][_0x98cb('0x29')]/_0x469435);var _0x378003=Number[_0x98cb('0x30')](_0x5648ea[0x0][_0x98cb('0x29')]/_0x469435)?_0x5648ea[0x0][_0x98cb('0x29')]%_0x469435:0x0;_0x3d2ebe['forEach'](function(_0x34d70d){if(_0x34d70d>0x0){_0x1ebbc4+=_0x469435;}_0x331f41['push'](dbH[_0x98cb('0x31')][_0x98cb('0x32')](util[_0x98cb('0x1a')](_0x98cb('0x33'),QUERY,_0x469435,_0x1ebbc4),{'type':dbH[_0x98cb('0x31')][_0x98cb('0x34')][_0x98cb('0x35')]}));});if(_0x378003>0x0){_0x1ebbc4+=_0x469435;_0x331f41[_0x98cb('0x15')](dbH[_0x98cb('0x31')][_0x98cb('0x32')](util[_0x98cb('0x1a')](_0x98cb('0x33'),QUERY,_0x378003,_0x1ebbc4),{'type':dbH[_0x98cb('0x31')][_0x98cb('0x34')]['SELECT']}));}}}else{_0x331f41['push'](dbH[_0x98cb('0x31')]['query'](QUERY,{'type':dbH[_0x98cb('0x31')][_0x98cb('0x34')][_0x98cb('0x35')]}));}var _0x3eb36f=path[_0x98cb('0x36')](PATH);var _0x3481a7=path[_0x98cb('0x37')](PATH,_0x98cb('0x38'));var _0x1dc1c4=_0x5791e7[_0x98cb('0x2c')]&&_0x331f41[_0x98cb('0x12')]>0x1;var _0x2a0937=[];if(!fs[_0x98cb('0x39')](path[_0x98cb('0x3a')](_0x3eb36f,_0x3481a7))&&_0x1dc1c4){fs['mkdirSync'](path[_0x98cb('0x3a')](_0x3eb36f,_0x3481a7));}return BPromise[_0x98cb('0x3b')](_0x331f41,function(_0x158778){_0x2a0937[_0x98cb('0x15')](_0x158778);})['then'](function(){var _0x1dcdde=[];for(var _0x1f7893=0x0;_0x1f7893<_0x2a0937[_0x98cb('0x12')];_0x1f7893+=0x1){var _0x2f2c98=_0x2a0937[_0x1f7893];var _0x4f563f=createTables(_[_0x98cb('0x3c')](_0x2f2c98));var _0x2c2148;var _0x3aefa9=getPDFDocDefinition(_0x4f563f);var _0xd353c5=getPDFPrinter();var _0x2642a6=_0xd353c5[_0x98cb('0x3d')](_0x3aefa9);if(_0x1dc1c4){_0x2c2148=path[_0x98cb('0x3a')](_0x3eb36f,_0x3481a7,util['format'](_0x98cb('0x3e'),_0x3481a7,_0x1f7893,_0x98cb('0x3f')));}else{_0x2c2148=path[_0x98cb('0x3a')](_0x3eb36f,util[_0x98cb('0x1a')](_0x98cb('0x40'),_0x3481a7,_0x98cb('0x3f')));}_0x1dcdde[_0x98cb('0x15')](writePDFDocument(_0x2642a6,_0x2c2148));}return Promise[_0x98cb('0x41')](_0x1dcdde);})['then'](function(){if(_0x1dc1c4){return new Promise(function(_0x4694e4){zipdir(path['join'](_0x3eb36f,_0x3481a7),{'saveTo':path[_0x98cb('0x3a')](_0x3eb36f,util[_0x98cb('0x1a')](_0x98cb('0x40'),_0x3481a7,_0x98cb('0x42')))},function(){rimraf(path[_0x98cb('0x3a')](_0x3eb36f,_0x3481a7),function(){});_0x4694e4('zip\x20finished');});});}})['then'](function(){if(!_0x1dc1c4)return;rimraf(path[_0x98cb('0x3a')](_0x3eb36f,_0x3481a7),function(){});})[_0x98cb('0x2e')](function(){logger[_0x98cb('0x43')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x98cb('0x44')));return analyticExtractedReport(_0x98cb('0x45'),_0x1dc1c4?util[_0x98cb('0x1a')]('%s.%s',_0x3481a7,_0x1dc1c4?_0x98cb('0x42'):_0x98cb('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x98cb('0x43')](util[_0x98cb('0x1a')](_0x98cb('0x46'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport']['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x98cb('0x2e')](function(_0x473cb9){EXTRACTED_REPORT=_0x473cb9;return dbH[_0x98cb('0x31')][_0x98cb('0x32')](util[_0x98cb('0x1a')](_0x98cb('0x47'),QUERY),{'type':dbH['sequelize'][_0x98cb('0x34')][_0x98cb('0x35')]});})[_0x98cb('0x2e')](extractReport)[_0x98cb('0x48')](function(_0x151ce8){logger['info'](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util[_0x98cb('0x49')](_0x151ce8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x98cb('0x4a'));})['finally'](function(){process[_0x98cb('0x4b')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x428139=new PdfPrinter({'Arial':{'normal':__dirname+_0x98cb('0x4c'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x98cb('0x4d')}});return _0x428139;}function getPDFDocDefinitionFromHTML(_0x17128a,_0x2f5604){var _0x1181b8=util[_0x98cb('0x1a')](_0x98cb('0x4e'),_0x2f5604[_0x98cb('0x4f')],_0x2f5604[_0x98cb('0x50')]);var _0x56d674=moment()[_0x98cb('0x1a')](_0x98cb('0x51'))[_0x98cb('0x23')]();var _0x347966=htmlToPdfmake(_0x17128a,{'window':window,'tableAutoSize':!![]});return{'content':[_0x347966],'defaultStyle':{'font':_0x98cb('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x98cb('0x52'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x98cb('0x52'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x98cb('0x52')}},'header':function(){return[{'text':_0x98cb('0x53'),'style':_0x98cb('0x1f')}];},'footer':function(_0x4404ec,_0x23df65){return[{'text':util[_0x98cb('0x1a')](_0x98cb('0x54'),_0x1181b8,_0x4404ec,_0x23df65,_0x56d674),'style':_0x98cb('0x25')}];}};}function writePDFDocument(_0x328ec4,_0x3703f9){return new Promise(function(_0x25060e,_0x52927f){var _0x551184=_0x328ec4[_0x98cb('0x55')](fs[_0x98cb('0x56')](_0x3703f9));_0x551184['on']('finish',function(){_0x25060e(_0x98cb('0x57'));});_0x551184['on'](_0x98cb('0x58'),function(_0x1107f1){_0x52927f(_0x1107f1);});_0x328ec4[_0x98cb('0x59')]();});}exports['createPdfFromHTML']=function(_0x24ab29,_0x49df55){var _0xcce678=getPDFPrinter();var _0x515a60=getPDFDocDefinitionFromHTML(_0x24ab29,_0x49df55);var _0x111351=_0xcce678['createPdfKitDocument'](_0x515a60);return writePDFDocument(_0x111351,_0x49df55['path'])[_0x98cb('0x48')](function(_0x5e3f48){throw _0x5e3f48;});};
\ No newline at end of file
index c95afb5..c86c2c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cd1=['Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','util','path','bluebird','zip-dir','rimraf','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','QueryTypes','SELECT','num','Empty','length','isInteger','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','existsSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x5cd1,0x1cf));var _0x15cd=function(_0x4f8558,_0x73052b){_0x4f8558=_0x4f8558-0x0;var _0x202d81=_0x5cd1[_0x4f8558];return _0x202d81;};'use strict';var util=require(_0x15cd('0x0'));var path=require(_0x15cd('0x1'));var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x15cd('0x2'));var zipdir=require(_0x15cd('0x3'));var rimraf=require(_0x15cd('0x4'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x15cd('0x5'))(_0x15cd('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x15cd('0x7')][0x2]);var QUERY=process[_0x15cd('0x7')][0x3];var PATH=process[_0x15cd('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x24ab27,_0x3b3cf5){var _0x20613c={'status':_0x24ab27};var _0x809152={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3b3cf5){_0x20613c[_0x15cd('0x8')]=_0x3b3cf5;}return db[_0x15cd('0x9')][_0x15cd('0xa')](_0x20613c,_0x809152);}function main(){var _0x356cae=0x1388;var _0x3b959a;logger[_0x15cd('0xb')](util[_0x15cd('0xc')](_0x15cd('0xd'),EXTRACTED_REPORT_ID,_0x15cd('0xe')));return db['Setting'][_0x15cd('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x15cd('0x10'),_0x15cd('0x11')]})[_0x15cd('0x12')](function(_0x5bfbeb){if(_0x5bfbeb){_0x3b959a=_0x5bfbeb;_0x356cae=_0x3b959a[_0x15cd('0x11')]||0x1388;}})['then'](function(){return dbH[_0x15cd('0x13')]['query'](util[_0x15cd('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x15cd('0x13')][_0x15cd('0x14')][_0x15cd('0x15')]});})[_0x15cd('0x12')](function(_0x152941){if(!_0x152941[0x0][_0x15cd('0x16')]){return analyticExtractedReport(_0x15cd('0x17'));}var _0x3d89a2=[];var _0x503cca=0x0;if(_0x3b959a[_0x15cd('0x10')]){if(_0x152941&&_0x152941[_0x15cd('0x18')]){var _0x3c9d6a=_['range'](_0x152941[0x0][_0x15cd('0x16')]/_0x356cae);var _0x8b1167=Number[_0x15cd('0x19')](_0x152941[0x0][_0x15cd('0x16')]/_0x356cae)?_0x152941[0x0][_0x15cd('0x16')]%_0x356cae:0x0;_0x3c9d6a['forEach'](function(_0x5a9942){if(_0x5a9942>0x0){_0x503cca+=_0x356cae;}_0x3d89a2[_0x15cd('0x1a')](dbH['sequelize'][_0x15cd('0x1b')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x356cae,_0x503cca),{'type':dbH[_0x15cd('0x13')][_0x15cd('0x14')][_0x15cd('0x15')]}));});if(_0x8b1167>0x0){_0x503cca+=_0x356cae;_0x3d89a2[_0x15cd('0x1a')](dbH[_0x15cd('0x13')][_0x15cd('0x1b')](util[_0x15cd('0xc')](_0x15cd('0x1c'),QUERY,_0x8b1167,_0x503cca),{'type':dbH[_0x15cd('0x13')][_0x15cd('0x14')][_0x15cd('0x15')]}));}}}else{_0x3d89a2[_0x15cd('0x1a')](dbH[_0x15cd('0x13')][_0x15cd('0x1b')](QUERY,{'type':dbH[_0x15cd('0x13')][_0x15cd('0x14')][_0x15cd('0x15')]}));}var _0x3caf5e=path[_0x15cd('0x1d')](PATH);var _0x311df2=path[_0x15cd('0x1e')](PATH,'.xlsx');var _0x1c99f1=_0x3b959a[_0x15cd('0x10')]&&_0x3d89a2[_0x15cd('0x18')]>0x1;var _0x3964bd=[];if(!fs[_0x15cd('0x1f')](path[_0x15cd('0x20')](_0x3caf5e,_0x311df2))&&_0x1c99f1){fs['mkdirSync'](path[_0x15cd('0x20')](_0x3caf5e,_0x311df2));}return BPromise[_0x15cd('0x21')](_0x3d89a2,function(_0x194a70){_0x3964bd['push'](_0x194a70);})[_0x15cd('0x12')](function(){for(var _0x7657db=0x0;_0x7657db<_0x3964bd['length'];_0x7657db+=0x1){var _0x59a4e5;var _0x4cd3c8=_0x3964bd[_0x7657db];if(_0x1c99f1){_0x59a4e5=path[_0x15cd('0x20')](_0x3caf5e,_0x311df2,util[_0x15cd('0xc')](_0x15cd('0x22'),_0x311df2,_0x7657db,_0x15cd('0x23')));}else{_0x59a4e5=path[_0x15cd('0x20')](_0x3caf5e,util['format'](_0x15cd('0x24'),_0x311df2,'xlsx'));}fs[_0x15cd('0x25')](_0x59a4e5,json2xls(_0x4cd3c8),_0x15cd('0x26'));}})['then'](function(){if(_0x1c99f1){return new Promise(function(_0x39f22e){zipdir(path['join'](_0x3caf5e,_0x311df2),{'saveTo':path[_0x15cd('0x20')](_0x3caf5e,util[_0x15cd('0xc')](_0x15cd('0x24'),_0x311df2,_0x15cd('0x27')))},function(_0x55883f,_0x7bf444){rimraf(path['join'](_0x3caf5e,_0x311df2),function(){});_0x39f22e('zip\x20finished');});});}})[_0x15cd('0x12')](function(){logger[_0x15cd('0xb')](util['format'](_0x15cd('0x28'),EXTRACTED_REPORT_ID,_0x15cd('0xe')));return analyticExtractedReport(_0x15cd('0x29'),_0x1c99f1?util[_0x15cd('0xc')](_0x15cd('0x24'),_0x311df2,_0x1c99f1?_0x15cd('0x27'):_0x15cd('0x23')):null);});})[_0x15cd('0x2a')](function(_0x3dec36){logger['info'](util['format'](_0x15cd('0x2b'),EXTRACTED_REPORT_ID,_0x15cd('0xe')),util[_0x15cd('0x2c')](_0x3dec36,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x15cd('0x2d'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x6301=['join','each','%s%d.%s','xlsx','binary','%s.%s','XLSX','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','lodash','json2xls','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','argv','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeXlsx','then','query','sequelize','QueryTypes','SELECT','Empty','length','range','num','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','existsSync'];(function(_0x4f06b,_0x56c71d){var _0x3d6745=function(_0x976207){while(--_0x976207){_0x4f06b['push'](_0x4f06b['shift']());}};_0x3d6745(++_0x56c71d);}(_0x6301,0x9e));var _0x1630=function(_0x3fa479,_0x222259){_0x3fa479=_0x3fa479-0x0;var _0x23feb5=_0x6301[_0x3fa479];return _0x23feb5;};'use strict';var util=require(_0x1630('0x0'));var path=require(_0x1630('0x1'));var _=require(_0x1630('0x2'));var fs=require('fs');var json2xls=require(_0x1630('0x3'));var BPromise=require(_0x1630('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x1630('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0x1630('0x6'))[_0x1630('0x7')];var logger=require(_0x1630('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x1630('0x9')][0x3];var PATH=process[_0x1630('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1916cc,_0x496099){var _0x374c93={'status':_0x1916cc};var _0x3800b9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x496099){_0x374c93['savename']=_0x496099;}return db[_0x1630('0xa')]['update'](_0x374c93,_0x3800b9);}function main(){var _0x4eebd5=0x1388;var _0x445d83;logger[_0x1630('0xb')](util[_0x1630('0xc')](_0x1630('0xd'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0x1630('0xe')][_0x1630('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1630('0x10'),_0x1630('0x11')]})[_0x1630('0x12')](function(_0x4001ba){if(_0x4001ba){_0x445d83=_0x4001ba;_0x4eebd5=_0x445d83[_0x1630('0x11')]||0x1388;}})[_0x1630('0x12')](function(){return dbH['sequelize'][_0x1630('0x13')](util[_0x1630('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x1630('0x14')][_0x1630('0x15')][_0x1630('0x16')]});})[_0x1630('0x12')](function(_0x17d944){if(!_0x17d944[0x0]['num']){return analyticExtractedReport(_0x1630('0x17'));}var _0x1bb023=[];var _0xd75d92=0x0;if(_0x445d83[_0x1630('0x10')]){if(_0x17d944&&_0x17d944[_0x1630('0x18')]){var _0x3c9008=_[_0x1630('0x19')](_0x17d944[0x0][_0x1630('0x1a')]/_0x4eebd5);var _0x4a7cae=Number[_0x1630('0x1b')](_0x17d944[0x0]['num']/_0x4eebd5)?_0x17d944[0x0][_0x1630('0x1a')]%_0x4eebd5:0x0;_0x3c9008[_0x1630('0x1c')](function(_0x2c6c81){if(_0x2c6c81>0x0){_0xd75d92+=_0x4eebd5;}_0x1bb023['push'](dbH[_0x1630('0x14')][_0x1630('0x13')](util[_0x1630('0xc')](_0x1630('0x1d'),QUERY,_0x4eebd5,_0xd75d92),{'type':dbH[_0x1630('0x14')][_0x1630('0x15')][_0x1630('0x16')]}));});if(_0x4a7cae>0x0){_0xd75d92+=_0x4eebd5;_0x1bb023['push'](dbH['sequelize'][_0x1630('0x13')](util['format'](_0x1630('0x1d'),QUERY,_0x4a7cae,_0xd75d92),{'type':dbH[_0x1630('0x14')][_0x1630('0x15')][_0x1630('0x16')]}));}}}else{_0x1bb023[_0x1630('0x1e')](dbH['sequelize'][_0x1630('0x13')](QUERY,{'type':dbH[_0x1630('0x14')][_0x1630('0x15')][_0x1630('0x16')]}));}var _0x149647=path[_0x1630('0x1f')](PATH);var _0x33cdb2=path[_0x1630('0x20')](PATH,'.xlsx');var _0x380d6e=_0x445d83[_0x1630('0x10')]&&_0x1bb023[_0x1630('0x18')]>0x1;var _0x381db1=[];if(!fs[_0x1630('0x21')](path['join'](_0x149647,_0x33cdb2))&&_0x380d6e){fs['mkdirSync'](path[_0x1630('0x22')](_0x149647,_0x33cdb2));}return BPromise[_0x1630('0x23')](_0x1bb023,function(_0x188399){_0x381db1[_0x1630('0x1e')](_0x188399);})[_0x1630('0x12')](function(){for(var _0xb17c1e=0x0;_0xb17c1e<_0x381db1[_0x1630('0x18')];_0xb17c1e+=0x1){var _0x1490ce;var _0x32a73d=_0x381db1[_0xb17c1e];if(_0x380d6e){_0x1490ce=path[_0x1630('0x22')](_0x149647,_0x33cdb2,util[_0x1630('0xc')](_0x1630('0x24'),_0x33cdb2,_0xb17c1e,_0x1630('0x25')));}else{_0x1490ce=path[_0x1630('0x22')](_0x149647,util[_0x1630('0xc')]('%s.%s',_0x33cdb2,_0x1630('0x25')));}fs['writeFileSync'](_0x1490ce,json2xls(_0x32a73d),_0x1630('0x26'));}})[_0x1630('0x12')](function(){if(_0x380d6e){return new Promise(function(_0xe0a657){zipdir(path[_0x1630('0x22')](_0x149647,_0x33cdb2),{'saveTo':path[_0x1630('0x22')](_0x149647,util[_0x1630('0xc')](_0x1630('0x27'),_0x33cdb2,'zip'))},function(_0x5d3019,_0x57192e){rimraf(path['join'](_0x149647,_0x33cdb2),function(){});_0xe0a657('zip\x20finished');});});}})[_0x1630('0x12')](function(){logger[_0x1630('0xb')](util[_0x1630('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x1630('0x28')));return analyticExtractedReport(_0x1630('0x29'),_0x380d6e?util[_0x1630('0xc')](_0x1630('0x27'),_0x33cdb2,_0x380d6e?'zip':_0x1630('0x25')):null);});})[_0x1630('0x2a')](function(_0x407910){logger['info'](util[_0x1630('0xc')](_0x1630('0x2b'),EXTRACTED_REPORT_ID,_0x1630('0x28')),util[_0x1630('0x2c')](_0x407910,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1630('0x2d'));})[_0x1630('0x2e')](function(){process[_0x1630('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index 0d4ee2b..895365e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b8=['last','concat','destroy','bulkCreate','sortBy','catch','lodash','util','Interval','then','intervals','models','VoiceExtension','findAll','IntervalId','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','queue','playback','hasOwnProperty','priority','extensions','extension','find','push','type','format','CDR(type)=%s','Set','CDR(routeid)=','VoiceExtensionId','context','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','wav','XCALLY-MOTION-ANSWER=0','length','updatedAt','interval','*,*,*,*','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)','toLowerCase','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},'];(function(_0x2af48c,_0x197d52){var _0x58af9d=function(_0x4bd9d4){while(--_0x4bd9d4){_0x2af48c['push'](_0x2af48c['shift']());}};_0x58af9d(++_0x197d52);}(_0xd5b8,0x141));var _0x8d5b=function(_0x559573,_0x4da6c4){_0x559573=_0x559573-0x0;var _0x122acf=_0xd5b8[_0x559573];return _0x122acf;};'use strict';var _=require(_0x8d5b('0x0'));var util=require(_0x8d5b('0x1'));function rewrite(_0x1fa5f5,_0x18e00d){var _0xe3a9e2=this;return _0x1fa5f5['models'][_0x8d5b('0x2')]['findAll']({'raw':!![]})[_0x8d5b('0x3')](function(_0x51920b){_0xe3a9e2[_0x8d5b('0x4')]=_0x51920b;return _0x1fa5f5[_0x8d5b('0x5')][_0x8d5b('0x6')][_0x8d5b('0x7')]({'where':{'IntervalId':_0x18e00d[_0x8d5b('0x8')]},'raw':!![]});})[_0x8d5b('0x3')](function(_0x2552e6){return _0x1fa5f5['models'][_0x8d5b('0x6')][_0x8d5b('0x7')]({'where':{'exten':{'$in':_['uniq'](_[_0x8d5b('0x9')](_0x2552e6,_0x8d5b('0xa')))}},'order':[{'raw':_0x8d5b('0xb')}],'raw':!![]});})[_0x8d5b('0x3')](function(_0x34fe08){var _0x578717=_[_0x8d5b('0xc')](_0x34fe08,{'priority':'1'});var _0x3e646d=_[_0x8d5b('0xc')](_0x34fe08,{'isApp':0x1});var _0x30d30e=_['groupBy'](_0x3e646d,_0x8d5b('0xa'));var _0x1a104b=[_0x8d5b('0xd'),_0x8d5b('0xe')];var _0x19b176=[];var _0x9d5624=[];for(var _0x554ad1 in _0x30d30e){if(_0x30d30e[_0x8d5b('0xf')](_0x554ad1)){_0xe3a9e2[_0x8d5b('0x10')]=0x2;_0xe3a9e2[_0x8d5b('0x11')]=[];_0xe3a9e2[_0x8d5b('0x12')]=_[_0x8d5b('0x13')](_0x578717,{'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')]});_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':'Set','appdata':util[_0x8d5b('0x16')](_0x8d5b('0x17'),_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')]),'context':_0x30d30e[_0x554ad1][0x0]['context'],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0]['VoiceExtensionId']});if(_0x30d30e[_0x554ad1][0x0]['type']==='inbound'){_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x19')+_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')],'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0]['VoiceExtensionId']});}else if(_0x30d30e[_0x554ad1][0x0]['type']===_0x8d5b('0x1c')){if(_0xe3a9e2[_0x8d5b('0x12')]){_0xe3a9e2[_0x8d5b('0x11')]['push']({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x1d')+(_0xe3a9e2[_0x8d5b('0x12')][_0x8d5b('0x1e')]?_0x8d5b('0x1f')+_0xe3a9e2[_0x8d5b('0x12')][_0x8d5b('0x1e')]+'}':_0x8d5b('0x20')),'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});}_0xe3a9e2['extensions']['push']({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x19')+_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')],'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});var _0x34b529=_0xe3a9e2[_0x8d5b('0x10')]++;_0xe3a9e2['extensions'][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0]['type'],'app':'ExecIf','appdata':_0x8d5b('0x21')+(_0x34b529+0x2)+_0x8d5b('0x22')+(_0x34b529+0x1)+')','context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0x34b529,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});if(_0xe3a9e2['extension']){_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0]['type'],'app':_0x8d5b('0x18'),'appdata':_0xe3a9e2['extension']['cutdigits']?_0x8d5b('0x23')+_0xe3a9e2[_0x8d5b('0x12')][_0x8d5b('0x1e')]+'}':_0x8d5b('0x24'),'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0]['VoiceExtensionId']});}_0xe3a9e2[_0x8d5b('0x11')]['push']({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x25')+_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')],'context':_0x30d30e[_0x554ad1][0x0]['context'],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0]['VoiceExtensionId']});if(_0xe3a9e2['extension']&&_0xe3a9e2[_0x8d5b('0x12')]['hasOwnProperty'](_0x8d5b('0x26'))&&_0xe3a9e2['extension'][_0x8d5b('0x26')]!==_0x8d5b('0x27')){_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0]['VoiceExtensionId']});_0xe3a9e2[_0x8d5b('0x11')]['push']({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0xe3a9e2[_0x8d5b('0x12')][_0x8d5b('0x26')]||_0x8d5b('0x28'),'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});}}_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x29'),'context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0]['exten'],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2[_0x8d5b('0x10')]++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});_0xe3a9e2[_0x8d5b('0x11')][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0]['type'],'app':_0x8d5b('0x18'),'appdata':'MONITOR_OPTIONS=ab','context':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1b')],'exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'priority':_0xe3a9e2['priority']++,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});for(var _0xcb7406=0x0,_0x12b566=0x0;_0xcb7406<_0x30d30e[_0x554ad1][_0x8d5b('0x2a')];_0xcb7406+=0x1,_0x12b566=0x0){var _0x598e2a=_0x30d30e[_0x554ad1][_0xcb7406];if(_0x598e2a['type']){_0x598e2a[_0x8d5b('0x15')]=_0x598e2a[_0x8d5b('0x15')]['toLowerCase']();}var _0x271b96=[];var _0x10ed4e=[];delete _0x598e2a['id'];delete _0x598e2a['createdAt'];delete _0x598e2a[_0x8d5b('0x2b')];var _0x5bccf9=_0x598e2a[_0x8d5b('0x2c')]!==_0x8d5b('0x2d')?[_0x598e2a[_0x8d5b('0x2c')]]:_0x598e2a[_0x8d5b('0x8')]?_[_0x8d5b('0x9')](_['filter'](_0xe3a9e2[_0x8d5b('0x4')],{'IntervalId':_0x598e2a[_0x8d5b('0x8')]}),_0x8d5b('0x2c')):[];if(_0x598e2a['hasOwnProperty'](_0x8d5b('0x2e'))){if(_0x598e2a[_0x8d5b('0x2e')]&&_0x598e2a['tag']!=='--'){_0x271b96[_0x8d5b('0x14')]({'type':_0x598e2a['type'],'app':_0x8d5b('0x18'),'appdata':'CDR(tag)='+_0x598e2a['tag'],'context':_0x598e2a['context'],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2[_0x8d5b('0x10')]+_0x12b566++,'VoiceExtensionId':_0x598e2a['VoiceExtensionId']});}}if(_0x598e2a[_0x8d5b('0x15')]===_0x8d5b('0x1c')&&_0x598e2a[_0x8d5b('0xf')](_0x8d5b('0x2f'))){if(_0x598e2a[_0x8d5b('0x2f')]){_0x271b96['push']({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x30'),'appdata':_0x8d5b('0x31')+_0x598e2a[_0x8d5b('0x2f')]+')','context':_0x598e2a[_0x8d5b('0x1b')],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2[_0x8d5b('0x10')]+_0x12b566++,'VoiceExtensionId':_0x598e2a['VoiceExtensionId']});}else{_0x271b96[_0x8d5b('0x14')]({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x30'),'appdata':_0x8d5b('0x32'),'context':_0x598e2a['context'],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2['priority']+_0x12b566++,'VoiceExtensionId':_0x598e2a[_0x8d5b('0x1a')]});}}if(_0x598e2a[_0x8d5b('0xf')]('answer')){if(_0x1a104b['indexOf'](_0x598e2a['app'][_0x8d5b('0x33')]())>=0x0&&_0x598e2a['appType']!=='custom'){if(_0x598e2a['answer']){_0x271b96['push']({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x30'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x598e2a[_0x8d5b('0x1b')],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2[_0x8d5b('0x10')]+_0x12b566++,'VoiceExtensionId':_0x598e2a[_0x8d5b('0x1a')]});_0x271b96['push']({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x598e2a[_0x8d5b('0x1b')],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9['length']+_0xe3a9e2['priority']+_0x12b566++,'VoiceExtensionId':_0x598e2a[_0x8d5b('0x1a')]});}else{_0x271b96[_0x8d5b('0x14')]({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x30'),'appdata':_0x8d5b('0x34'),'context':_0x598e2a[_0x8d5b('0x1b')],'exten':_0x598e2a['exten'],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2[_0x8d5b('0x10')]+_0x12b566++,'VoiceExtensionId':_0x598e2a[_0x8d5b('0x1a')]});_0x271b96[_0x8d5b('0x14')]({'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x18'),'appdata':_0x8d5b('0x35'),'context':_0x598e2a[_0x8d5b('0x1b')],'exten':_0x598e2a[_0x8d5b('0xa')],'priority':_0x5bccf9[_0x8d5b('0x2a')]+_0xe3a9e2[_0x8d5b('0x10')]+_0x12b566++,'VoiceExtensionId':_0x598e2a[_0x8d5b('0x1a')]});}}}for(var _0x38e96a=0x0;_0x38e96a<_0x5bccf9[_0x8d5b('0x2a')];_0x38e96a+=0x1){var _0x4a083d=_0xe3a9e2['priority']+_0x5bccf9[_0x8d5b('0x2a')];var _0x580bb5=_0x38e96a===_0x5bccf9[_0x8d5b('0x2a')]-0x1?_0xe3a9e2[_0x8d5b('0x10')]+_0x271b96['length']+_0x10ed4e[_0x8d5b('0x2a')]+0x2:_0xe3a9e2[_0x8d5b('0x10')]+_0x38e96a+0x1;_0x271b96[_0x8d5b('0x36')](_0x38e96a,0x0,{'type':_0x598e2a[_0x8d5b('0x15')],'app':_0x8d5b('0x37'),'appdata':_0x5bccf9[_0x38e96a]+'?'+_0x598e2a[_0x8d5b('0x1b')]+_0x8d5b('0x38')+_0x4a083d+':'+_0x598e2a['context']+_0x8d5b('0x38')+_0x580bb5,'exten':_0x598e2a[_0x8d5b('0xa')],'context':_0x598e2a[_0x8d5b('0x1b')],'priority':_0xe3a9e2['priority']+_0x38e96a,'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});}_0x598e2a[_0x8d5b('0x10')]=_0x271b96[_0x8d5b('0x2a')]?_[_0x8d5b('0x39')](_0x271b96)[_0x8d5b('0x10')]+0x1:_0xe3a9e2['priority'];_0xe3a9e2[_0x8d5b('0x10')]=(_0x10ed4e['length']?_[_0x8d5b('0x39')](_0x10ed4e)[_0x8d5b('0x10')]:_0x598e2a[_0x8d5b('0x10')])+0x1;_0xe3a9e2[_0x8d5b('0x11')]=_[_0x8d5b('0x3a')](_0xe3a9e2[_0x8d5b('0x11')],_0x271b96,[_0x598e2a],_0x10ed4e);}_0xe3a9e2['extensions'][_0x8d5b('0x14')]({'type':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x15')],'app':'Hangup','exten':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0xa')],'context':_0x30d30e[_0x554ad1][0x0]['context'],'priority':_0xe3a9e2[_0x8d5b('0x10')],'VoiceExtensionId':_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]});_0x19b176[_0x8d5b('0x14')](_0x30d30e[_0x554ad1][0x0][_0x8d5b('0x1a')]);_0x9d5624=_['concat'](_0x9d5624,_0xe3a9e2[_0x8d5b('0x11')]);}}return _0x1fa5f5['transaction'](function(_0x513809){return _0x1fa5f5[_0x8d5b('0x5')][_0x8d5b('0x6')][_0x8d5b('0x3b')]({'where':{'VoiceExtensionId':{'$in':_0x19b176}},'transaction':_0x513809})[_0x8d5b('0x3')](function(_0x16bef8){return _0x1fa5f5['models'][_0x8d5b('0x6')][_0x8d5b('0x3c')](_[_0x8d5b('0x3d')](_0x9d5624,_0x8d5b('0x10')),{'transaction':_0x513809});});});})[_0x8d5b('0x3e')](function(_0x57ac0a){console['error'](_0x57ac0a);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xc865=['util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extensions','find','push','format','type','VoiceExtensionId','inbound','CDR(routeid)=','context','outbound','CDR(destination)=','extension','cutdigits','${EXTEN:','${EXTEN}','Set','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','length','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','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','destroy','bulkCreate','sortBy','catch','rewrite','lodash'];(function(_0x20a646,_0x486fc0){var _0x4bb624=function(_0xc2fa5f){while(--_0xc2fa5f){_0x20a646['push'](_0x20a646['shift']());}};_0x4bb624(++_0x486fc0);}(_0xc865,0x16c));var _0x5c86=function(_0x1a0bd1,_0x53ded9){_0x1a0bd1=_0x1a0bd1-0x0;var _0xb94bd6=_0xc865[_0x1a0bd1];return _0xb94bd6;};'use strict';var _=require(_0x5c86('0x0'));var util=require(_0x5c86('0x1'));function rewrite(_0x2de65a,_0x21ef59){var _0x53f26b=this;return _0x2de65a[_0x5c86('0x2')][_0x5c86('0x3')][_0x5c86('0x4')]({'raw':!![]})[_0x5c86('0x5')](function(_0xb1757d){_0x53f26b[_0x5c86('0x6')]=_0xb1757d;return _0x2de65a[_0x5c86('0x2')][_0x5c86('0x7')][_0x5c86('0x4')]({'where':{'IntervalId':_0x21ef59[_0x5c86('0x8')]},'raw':!![]});})[_0x5c86('0x5')](function(_0x4a81d4){return _0x2de65a[_0x5c86('0x2')][_0x5c86('0x7')][_0x5c86('0x4')]({'where':{'exten':{'$in':_[_0x5c86('0x9')](_[_0x5c86('0xa')](_0x4a81d4,_0x5c86('0xb')))}},'order':[{'raw':_0x5c86('0xc')}],'raw':!![]});})[_0x5c86('0x5')](function(_0x3d66b3){var _0x2a64f3=_[_0x5c86('0xd')](_0x3d66b3,{'priority':'1'});var _0x224de8=_[_0x5c86('0xd')](_0x3d66b3,{'isApp':0x1});var _0x53f894=_[_0x5c86('0xe')](_0x224de8,_0x5c86('0xb'));var _0x5eddce=[_0x5c86('0xf'),_0x5c86('0x10')];var _0x1e5510=[];var _0x1ef694=[];for(var _0xa70d3d in _0x53f894){if(_0x53f894['hasOwnProperty'](_0xa70d3d)){_0x53f26b[_0x5c86('0x11')]=0x2;_0x53f26b[_0x5c86('0x12')]=[];_0x53f26b['extension']=_[_0x5c86('0x13')](_0x2a64f3,{'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')]});_0x53f26b['extensions'][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0]['type'],'app':'Set','appdata':util[_0x5c86('0x15')]('CDR(type)=%s',_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')]),'context':_0x53f894[_0xa70d3d][0x0]['context'],'exten':_0x53f894[_0xa70d3d][0x0]['exten'],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});if(_0x53f894[_0xa70d3d][0x0]['type']===_0x5c86('0x18')){_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':'Set','appdata':_0x5c86('0x19')+_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')],'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0]['VoiceExtensionId']});}else if(_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')]===_0x5c86('0x1b')){if(_0x53f26b['extension']){_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':'Set','appdata':_0x5c86('0x1c')+(_0x53f26b[_0x5c86('0x1d')][_0x5c86('0x1e')]?_0x5c86('0x1f')+_0x53f26b[_0x5c86('0x1d')][_0x5c86('0x1e')]+'}':_0x5c86('0x20')),'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0]['exten'],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});}_0x53f26b['extensions'][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0]['type'],'app':_0x5c86('0x21'),'appdata':'CDR(routeid)='+_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')],'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0]['exten'],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});var _0x4b21fd=_0x53f26b['priority']++;_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':_0x5c86('0x22'),'appdata':_0x5c86('0x23')+(_0x4b21fd+0x2)+'):Goto('+(_0x4b21fd+0x1)+')','context':_0x53f894[_0xa70d3d][0x0]['context'],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x4b21fd,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});if(_0x53f26b[_0x5c86('0x1d')]){_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':_0x5c86('0x21'),'appdata':_0x53f26b[_0x5c86('0x1d')][_0x5c86('0x1e')]?'CDR(prefix)=${EXTEN:0:'+_0x53f26b['extension'][_0x5c86('0x1e')]+'}':_0x5c86('0x24'),'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b['priority']++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});}_0x53f26b[_0x5c86('0x12')]['push']({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':_0x5c86('0x21'),'appdata':_0x5c86('0x25')+_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')],'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b['priority']++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});if(_0x53f26b[_0x5c86('0x1d')]&&_0x53f26b[_0x5c86('0x1d')][_0x5c86('0x26')](_0x5c86('0x27'))&&_0x53f26b[_0x5c86('0x1d')]['recordingFormat']!=='none'){_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':'Set','appdata':_0x5c86('0x28'),'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});_0x53f26b['extensions'][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':'Set','appdata':_0x5c86('0x29')+_0x53f26b[_0x5c86('0x1d')]['recordingFormat']||_0x5c86('0x2a'),'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0]['exten'],'priority':_0x53f26b['priority']++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});}}_0x53f26b[_0x5c86('0x12')]['push']({'type':_0x53f894[_0xa70d3d][0x0]['type'],'app':_0x5c86('0x21'),'appdata':_0x5c86('0x2b'),'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0]['VoiceExtensionId']});_0x53f26b['extensions'][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0]['type'],'app':'Set','appdata':_0x5c86('0x2c'),'context':_0x53f894[_0xa70d3d][0x0]['context'],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0]['type'],'app':_0x5c86('0x21'),'appdata':'MONITOR_OPTIONS=ab','context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'priority':_0x53f26b[_0x5c86('0x11')]++,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});for(var _0x49f22a=0x0,_0x580e47=0x0;_0x49f22a<_0x53f894[_0xa70d3d]['length'];_0x49f22a+=0x1,_0x580e47=0x0){var _0x5101b3=_0x53f894[_0xa70d3d][_0x49f22a];if(_0x5101b3[_0x5c86('0x16')]){_0x5101b3[_0x5c86('0x16')]=_0x5101b3[_0x5c86('0x16')][_0x5c86('0x2d')]();}var _0x3ae429=[];var _0x34812a=[];delete _0x5101b3['id'];delete _0x5101b3[_0x5c86('0x2e')];delete _0x5101b3[_0x5c86('0x2f')];var _0x4d0572=_0x5101b3[_0x5c86('0x30')]!==_0x5c86('0x31')?[_0x5101b3[_0x5c86('0x30')]]:_0x5101b3[_0x5c86('0x8')]?_['map'](_[_0x5c86('0xd')](_0x53f26b[_0x5c86('0x6')],{'IntervalId':_0x5101b3[_0x5c86('0x8')]}),'interval'):[];if(_0x5101b3['hasOwnProperty'](_0x5c86('0x32'))){if(_0x5101b3['tag']&&_0x5101b3[_0x5c86('0x32')]!=='--'){_0x3ae429['push']({'type':_0x5101b3[_0x5c86('0x16')],'app':_0x5c86('0x21'),'appdata':_0x5c86('0x33')+_0x5101b3[_0x5c86('0x32')],'context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3['exten'],'priority':_0x4d0572[_0x5c86('0x34')]+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});}}if(_0x5101b3[_0x5c86('0x16')]===_0x5c86('0x1b')&&_0x5101b3[_0x5c86('0x26')](_0x5c86('0x35'))){if(_0x5101b3[_0x5c86('0x35')]){_0x3ae429[_0x5c86('0x14')]({'type':_0x5101b3[_0x5c86('0x16')],'app':_0x5c86('0x22'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x5101b3[_0x5c86('0x35')]+')','context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3[_0x5c86('0xb')],'priority':_0x4d0572[_0x5c86('0x34')]+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});}else{_0x3ae429[_0x5c86('0x14')]({'type':_0x5101b3[_0x5c86('0x16')],'app':_0x5c86('0x22'),'appdata':_0x5c86('0x36'),'context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3[_0x5c86('0xb')],'priority':_0x4d0572['length']+_0x53f26b['priority']+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});}}if(_0x5101b3['hasOwnProperty'](_0x5c86('0x37'))){if(_0x5eddce['indexOf'](_0x5101b3[_0x5c86('0x38')][_0x5c86('0x2d')]())>=0x0&&_0x5101b3[_0x5c86('0x39')]!==_0x5c86('0x3a')){if(_0x5101b3[_0x5c86('0x37')]){_0x3ae429[_0x5c86('0x14')]({'type':_0x5101b3[_0x5c86('0x16')],'app':_0x5c86('0x22'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3['exten'],'priority':_0x4d0572[_0x5c86('0x34')]+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});_0x3ae429[_0x5c86('0x14')]({'type':_0x5101b3[_0x5c86('0x16')],'app':_0x5c86('0x21'),'appdata':_0x5c86('0x3b'),'context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3[_0x5c86('0xb')],'priority':_0x4d0572[_0x5c86('0x34')]+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});}else{_0x3ae429['push']({'type':_0x5101b3[_0x5c86('0x16')],'app':'ExecIf','appdata':_0x5c86('0x3c'),'context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3[_0x5c86('0xb')],'priority':_0x4d0572['length']+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3['VoiceExtensionId']});_0x3ae429[_0x5c86('0x14')]({'type':_0x5101b3['type'],'app':_0x5c86('0x21'),'appdata':_0x5c86('0x3d'),'context':_0x5101b3[_0x5c86('0x1a')],'exten':_0x5101b3[_0x5c86('0xb')],'priority':_0x4d0572['length']+_0x53f26b[_0x5c86('0x11')]+_0x580e47++,'VoiceExtensionId':_0x5101b3[_0x5c86('0x17')]});}}}for(var _0x4fae70=0x0;_0x4fae70<_0x4d0572[_0x5c86('0x34')];_0x4fae70+=0x1){var _0x296486=_0x53f26b[_0x5c86('0x11')]+_0x4d0572[_0x5c86('0x34')];var _0x142255=_0x4fae70===_0x4d0572[_0x5c86('0x34')]-0x1?_0x53f26b['priority']+_0x3ae429[_0x5c86('0x34')]+_0x34812a[_0x5c86('0x34')]+0x2:_0x53f26b[_0x5c86('0x11')]+_0x4fae70+0x1;_0x3ae429[_0x5c86('0x3e')](_0x4fae70,0x0,{'type':_0x5101b3['type'],'app':_0x5c86('0x3f'),'appdata':_0x4d0572[_0x4fae70]+'?'+_0x5101b3[_0x5c86('0x1a')]+_0x5c86('0x40')+_0x296486+':'+_0x5101b3[_0x5c86('0x1a')]+_0x5c86('0x40')+_0x142255,'exten':_0x5101b3[_0x5c86('0xb')],'context':_0x5101b3[_0x5c86('0x1a')],'priority':_0x53f26b[_0x5c86('0x11')]+_0x4fae70,'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]});}_0x5101b3[_0x5c86('0x11')]=_0x3ae429[_0x5c86('0x34')]?_['last'](_0x3ae429)[_0x5c86('0x11')]+0x1:_0x53f26b[_0x5c86('0x11')];_0x53f26b[_0x5c86('0x11')]=(_0x34812a['length']?_[_0x5c86('0x41')](_0x34812a)[_0x5c86('0x11')]:_0x5101b3[_0x5c86('0x11')])+0x1;_0x53f26b[_0x5c86('0x12')]=_['concat'](_0x53f26b[_0x5c86('0x12')],_0x3ae429,[_0x5101b3],_0x34812a);}_0x53f26b[_0x5c86('0x12')][_0x5c86('0x14')]({'type':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x16')],'app':_0x5c86('0x42'),'exten':_0x53f894[_0xa70d3d][0x0][_0x5c86('0xb')],'context':_0x53f894[_0xa70d3d][0x0][_0x5c86('0x1a')],'priority':_0x53f26b[_0x5c86('0x11')],'VoiceExtensionId':_0x53f894[_0xa70d3d][0x0]['VoiceExtensionId']});_0x1e5510['push'](_0x53f894[_0xa70d3d][0x0][_0x5c86('0x17')]);_0x1ef694=_[_0x5c86('0x43')](_0x1ef694,_0x53f26b[_0x5c86('0x12')]);}}return _0x2de65a['transaction'](function(_0x11c9dd){return _0x2de65a[_0x5c86('0x2')]['VoiceExtension'][_0x5c86('0x44')]({'where':{'VoiceExtensionId':{'$in':_0x1e5510}},'transaction':_0x11c9dd})['then'](function(_0x5a3b60){return _0x2de65a[_0x5c86('0x2')][_0x5c86('0x7')][_0x5c86('0x45')](_[_0x5c86('0x46')](_0x1ef694,_0x5c86('0x11')),{'transaction':_0x11c9dd});});});})[_0x5c86('0x47')](function(_0x18ad29){console['error'](_0x18ad29);});}exports[_0x5c86('0x48')]=rewrite;
\ No newline at end of file
index edc7a07..ef81cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d02=['always','sequelize','query','onlyIfOpen','VoiceQueueId','outbound','BlackLists','Campaign','Lists','CampaignId','all','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','contact:csv_','resume','resolve','emit','Unable\x20to\x20delete\x20temp\x20file:','stringify','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','parse','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','squel','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','null','Missing\x20filepath\x20parameter!','undefined','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','CmContact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','calleridnum','cm_hopper_black','from','VoiceQueue','findAll','CmList','get','dialCheckDuplicateType'];(function(_0x3e1726,_0x2855b7){var _0x3fa443=function(_0x3eb32b){while(--_0x3eb32b){_0x3e1726['push'](_0x3e1726['shift']());}};_0x3fa443(++_0x2855b7);}(_0x1d02,0x1dc));var _0x21d0=function(_0x2f4c23,_0x28cb68){_0x2f4c23=_0x2f4c23-0x0;var _0x393996=_0x1d02[_0x2f4c23];return _0x393996;};'use strict';var BPromise=require(_0x21d0('0x0'));var util=require('util');var _=require(_0x21d0('0x1'));var fs=require('fs');var squel=require(_0x21d0('0x2'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0x21d0('0x3'))['db'];var config=require(_0x21d0('0x4'));var logger=require(_0x21d0('0x5'))(_0x21d0('0x6'));config[_0x21d0('0x7')]=_[_0x21d0('0x8')](config[_0x21d0('0x7')],{'host':_0x21d0('0x9'),'port':0x18eb});var socket=require(_0x21d0('0xa'))(new Redis(config[_0x21d0('0x7')]));require(_0x21d0('0xb'))['register'](socket);try{if(!process['argv'][0x2]||process[_0x21d0('0xc')][0x2]==='undefined'||process[_0x21d0('0xc')][0x2]===_0x21d0('0xd')){throw new Error(_0x21d0('0xe'));}var FILEPATH=process[_0x21d0('0xc')][0x2];if(!process[_0x21d0('0xc')][0x3]||process['argv'][0x3]==='undefined'||process[_0x21d0('0xc')][0x3]===_0x21d0('0xd')||!process[_0x21d0('0xc')][0x4]||process['argv'][0x4]===_0x21d0('0xf')||process['argv'][0x4]===_0x21d0('0xd')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x21d0('0x10')](process['argv'][0x3][_0x21d0('0x11')](','),process[_0x21d0('0xc')][0x4][_0x21d0('0x11')](','));if(!process[_0x21d0('0xc')][0x5]||process[_0x21d0('0xc')][0x5]==='undefined'||process[_0x21d0('0xc')][0x5]===_0x21d0('0xd')){throw new Error(_0x21d0('0x12'));}var LISTID=process[_0x21d0('0xc')][0x5];var COMPANYID=process[_0x21d0('0xc')][0x6]&&process[_0x21d0('0xc')][0x6]!==_0x21d0('0xf')&&process[_0x21d0('0xc')][0x6]!==_0x21d0('0xd')?process[_0x21d0('0xc')][0x6]:null;var DUPLICATES=process[_0x21d0('0xc')][0x7]&&process[_0x21d0('0xc')][0x7]!==_0x21d0('0xf')&&process['argv'][0x7]!==_0x21d0('0xd')?process[_0x21d0('0xc')][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]===_0x21d0('0xf')||process[_0x21d0('0xc')][0x8]===_0x21d0('0xd')){throw new Error(_0x21d0('0x13'));}var SOCKET_TIMESTAMP=process[_0x21d0('0xc')][0x8];}catch(_0x594e0c){logger[_0x21d0('0x14')](_0x594e0c);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(_0x3a5bf9,_0x4cab9e,_0x3b31dc,_0x590fa8){var _0x595552={'message':_0x4cab9e};_0x595552[_0x3a5bf9]=!![];if(_0x3b31dc){_0x595552[_0x21d0('0x15')]=_0x3b31dc;}if(_0x590fa8){_0x595552[_0x21d0('0x16')]=_0x590fa8;}return _0x595552;}function isEmail(_0x5d9263){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))*$/[_0x21d0('0x17')](_0x5d9263);}function checkRow(_0x5780c6,_0x258414,_0x4b0df3){return new BPromise(function(_0x1689f4,_0x9bf1be){if(_[_0x21d0('0x18')](_0x5780c6)){return _0x9bf1be(handleCheckRowError('error',_0x21d0('0x19'),null,_0x4b0df3));}if(_0x5780c6[_0x21d0('0x1a')]&&_0x5780c6[_0x21d0('0x1a')][_0x21d0('0x1b')]){var _0xd00802=_[_0x21d0('0x1c')](_0x5780c6[_0x21d0('0x1a')],_0x21d0('0x1d'))[_0x21d0('0x1e')](';');return _0x9bf1be(handleCheckRowError(_0x21d0('0x14'),_0xd00802,null,_0x4b0df3));}var _0x229d51={};for(var _0x34f69c in FIELDS){if(FIELDS[_0x21d0('0x1f')](_0x34f69c)&&FIELDS[_0x34f69c]){_0x229d51[_0x34f69c]=_0x5780c6[_0x21d0('0x20')][0x0][FIELDS[_0x34f69c]]||_0x5780c6['data'][0x0]['\ufeff'+FIELDS[_0x34f69c]];}}if(!_0x229d51[_0x21d0('0x21')]){return _0x9bf1be(handleCheckRowError(_0x21d0('0x14'),_0x21d0('0x22'),null,_0x4b0df3));}if(!_0x229d51[_0x21d0('0x23')]){return _0x9bf1be(handleCheckRowError(_0x21d0('0x14'),'phone\x20not\x20specified!',null,_0x4b0df3));}if(_0x229d51['birthDate']){var _0x1c2782=moment(_0x229d51[_0x21d0('0x24')],'YYYY-MM-DD');if(!_0x1c2782[_0x21d0('0x25')]()){return _0x9bf1be(handleCheckRowError(_0x21d0('0x14'),_0x21d0('0x26'),null,_0x4b0df3));}}if(_0x229d51[_0x21d0('0x27')]){if(!isEmail(_0x229d51[_0x21d0('0x27')])){return _0x9bf1be(handleCheckRowError('error',_0x21d0('0x28'),null,_0x4b0df3));}}_0x229d51[_0x21d0('0x29')]=LISTID;_0x229d51[_0x21d0('0x2a')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x258414){var _0x1a7d1e={};for(var _0x5f1202=0x0,_0x2ded64=DUPLICATES[_0x21d0('0x1b')];_0x5f1202<_0x2ded64;_0x5f1202+=0x1){_0x1a7d1e[DUPLICATES[_0x5f1202]]=_0x229d51[DUPLICATES[_0x5f1202]];}var _0xf680ac=_[_0x21d0('0x2b')](_0x258414,_0x1a7d1e);if(_0xf680ac){return _0x9bf1be(handleCheckRowError(_0x21d0('0x2c'),'Duplicate\x20Contact',_0xf680ac,_0x4b0df3));}}return db[_0x21d0('0x2d')][_0x21d0('0x2e')](_0x229d51,{'raw':!![],'hooks':![],'fields':_[_0x21d0('0x2f')](_0x229d51)})[_0x21d0('0x30')](function(_0x2cd0b4){if(DUPLICATES&&DUPLICATES[_0x21d0('0x1b')]&&_0x258414){_0x258414[_0x21d0('0x31')](_['pick'](_0x229d51,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2cd0b4['id'];return _0x1689f4();})[_0x21d0('0x32')](function(_0x21d5d8){return _0x9bf1be(handleCheckRowError(_0x21d0('0x14'),_0x21d0('0x33')+(_0x21d5d8[_0x21d0('0x1d')]||JSON['stringify'](_0x21d5d8)),null,_0x4b0df3));});});}function checkHopper(){function _0x28e256(){return function(_0x247601){logger['error'](_0x21d0('0x34'),_0x21d0('0x35'),util[_0x21d0('0x36')](_0x247601,{'showHidden':![],'depth':null}));};}var _0x461edd=function(_0x958ae1,_0x1e0077){var _0x396f73=squel[_0x21d0('0x37')]()[_0x21d0('0x38')](_0x21d0('0x39'))[_0x21d0('0x3a')]([_0x21d0('0x23'),_0x21d0('0x3b'),_0x21d0('0x3c'),_0x21d0('0x29'),_0x1e0077,_0x21d0('0x3d'),_0x21d0('0x3e')],squel[_0x21d0('0x3f')]()[_0x21d0('0x40')](_0x21d0('0x23'),_0x21d0('0x23'))['field'](_0x21d0('0x41'),_0x21d0('0x3b'))[_0x21d0('0x40')]('id','ContactId')['field'](LISTID['toString'](),'ListId')[_0x21d0('0x40')](_0x958ae1['id'][_0x21d0('0x42')](),_0x1e0077)[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3d'))[_0x21d0('0x40')]('NOW()',_0x21d0('0x3e'))['from'](_0x21d0('0x43'))[_0x21d0('0x44')]('deletedAt\x20IS\x20NULL')[_0x21d0('0x44')](_0x21d0('0x45'),LISTID[_0x21d0('0x42')]())['where'](_0x21d0('0x46'))['where'](_0x21d0('0x47'),squel[_0x21d0('0x3f')]()[_0x21d0('0x40')](_0x21d0('0x23'))['from']('cm_hopper')[_0x21d0('0x44')](_0x1e0077+_0x21d0('0x48'),_0x958ae1['id'][_0x21d0('0x42')]())))[_0x21d0('0x42')]();return _0x396f73;};var _0x1ce1a0=function(_0x46b56b,_0x28e00d){var _0x2bac2d=squel['insert']()[_0x21d0('0x38')]('cm_hopper')['fromQuery']([_0x21d0('0x23'),_0x21d0('0x3b'),'ContactId',_0x21d0('0x29'),_0x28e00d,_0x21d0('0x3d'),_0x21d0('0x3e')],squel[_0x21d0('0x3f')]()['field']('phone',_0x21d0('0x23'))[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3b'))[_0x21d0('0x40')]('id',_0x21d0('0x3c'))['field'](LISTID[_0x21d0('0x42')](),_0x21d0('0x29'))[_0x21d0('0x40')](_0x46b56b['id'][_0x21d0('0x42')](),_0x28e00d)[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3d'))[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3e'))['from'](_0x21d0('0x43'))[_0x21d0('0x44')](_0x21d0('0x49'))[_0x21d0('0x44')](_0x21d0('0x45'),LISTID[_0x21d0('0x42')]())[_0x21d0('0x44')](_0x21d0('0x4a'),squel[_0x21d0('0x4b')](hopperContacts))[_0x21d0('0x44')](_0x21d0('0x46'))[_0x21d0('0x44')](_0x21d0('0x47'),squel[_0x21d0('0x3f')]()[_0x21d0('0x40')](_0x21d0('0x4c'))['from']('cm_hopper_final')[_0x21d0('0x44')](_0x28e00d+'\x20=\x20?',_0x46b56b['id'][_0x21d0('0x42')]()))['where'](_0x21d0('0x47'),squel['select']()['field'](_0x21d0('0x23'))['from'](_0x21d0('0x39'))['where'](_0x28e00d+_0x21d0('0x48'),_0x46b56b['id'][_0x21d0('0x42')]())))[_0x21d0('0x42')]();return _0x2bac2d;};function _0x30f4de(_0x16dfbc,_0x3a639c){var _0x5f3d5a=squel[_0x21d0('0x37')]()[_0x21d0('0x38')](_0x21d0('0x39'))[_0x21d0('0x3a')]([_0x21d0('0x23'),_0x21d0('0x3b'),'ContactId',_0x21d0('0x29'),_0x3a639c,_0x21d0('0x3d'),'updatedAt'],squel[_0x21d0('0x3f')]()[_0x21d0('0x40')](_0x21d0('0x23'),'phone')[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3b'))['field']('id',_0x21d0('0x3c'))[_0x21d0('0x40')](LISTID['toString'](),_0x21d0('0x29'))[_0x21d0('0x40')](_0x16dfbc['id']['toString'](),_0x3a639c)['field']('NOW()',_0x21d0('0x3d'))[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3e'))['from'](_0x21d0('0x43'))[_0x21d0('0x44')](_0x21d0('0x49'))['where']('ListId\x20=\x20?',LISTID[_0x21d0('0x42')]())[_0x21d0('0x44')](_0x21d0('0x4a'),squel[_0x21d0('0x4b')](hopperContacts))['where'](_0x21d0('0x46')))[_0x21d0('0x42')]();return _0x5f3d5a;}function _0x23acf3(_0x4e2b19,_0x5433df){var _0x192eb2=squel[_0x21d0('0x37')]()[_0x21d0('0x38')](_0x21d0('0x4d'))[_0x21d0('0x3a')]([_0x21d0('0x23'),_0x21d0('0x3c'),_0x21d0('0x29'),_0x5433df,_0x21d0('0x3d'),'updatedAt'],squel['select']()[_0x21d0('0x40')](_0x21d0('0x23'),'phone')['field']('id',_0x21d0('0x3c'))[_0x21d0('0x40')](LISTID[_0x21d0('0x42')](),_0x21d0('0x29'))['field'](_0x4e2b19['id']['toString'](),_0x5433df)[_0x21d0('0x40')](_0x21d0('0x41'),_0x21d0('0x3d'))[_0x21d0('0x40')](_0x21d0('0x41'),'updatedAt')[_0x21d0('0x4e')](_0x21d0('0x43'))[_0x21d0('0x44')]('deletedAt\x20IS\x20NULL')[_0x21d0('0x44')](_0x21d0('0x45'),LISTID[_0x21d0('0x42')]())[_0x21d0('0x44')](_0x21d0('0x4a'),squel[_0x21d0('0x4b')](hopperContacts))[_0x21d0('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x21d0('0x42')]();return _0x192eb2;}return db[_0x21d0('0x4f')][_0x21d0('0x50')]({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x21d0('0x51')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x57b4b5){var _0x11376c=[];if(_0x57b4b5){var _0x5af5e1;for(var _0x1c1fdb=0x0,_0x46097d;_0x1c1fdb<_0x57b4b5[_0x21d0('0x1b')];_0x1c1fdb+=0x1){_0x46097d=_0x57b4b5[_0x1c1fdb][_0x21d0('0x52')]({'plain':!![]});switch(_0x46097d[_0x21d0('0x53')]){case _0x21d0('0x54'):_0x11376c[_0x21d0('0x31')](db[_0x21d0('0x55')][_0x21d0('0x56')](_0x1ce1a0(_0x46097d,'VoiceQueueId'))[_0x21d0('0x30')](function(){})[_0x21d0('0x32')](_0x28e256()));break;case _0x21d0('0x57'):_0x11376c[_0x21d0('0x31')](db['sequelize'][_0x21d0('0x56')](_0x461edd(_0x46097d,_0x21d0('0x58')))[_0x21d0('0x30')](function(){})['catch'](_0x28e256()));break;default:_0x11376c[_0x21d0('0x31')](db['sequelize'][_0x21d0('0x56')](_0x30f4de(_0x46097d,_0x21d0('0x58')))[_0x21d0('0x30')](function(){})[_0x21d0('0x32')](_0x28e256()));}}}return _0x11376c;})['all']()['then'](function(){return db[_0x21d0('0x4f')][_0x21d0('0x50')]({'where':{'type':_0x21d0('0x59')},'attributes':['id'],'include':[{'model':db[_0x21d0('0x51')],'as':_0x21d0('0x5a'),'where':{'id':LISTID}}]})[_0x21d0('0x30')](function(_0x56a9a1){var _0x5f3534=[];if(_0x56a9a1){var _0x1223e3;for(var _0x1a438e=0x0,_0x55fbcd;_0x1a438e<_0x56a9a1[_0x21d0('0x1b')];_0x1a438e+=0x1){_0x55fbcd=_0x56a9a1[_0x1a438e][_0x21d0('0x52')]({'plain':!![]});_0x5f3534['push'](db[_0x21d0('0x55')][_0x21d0('0x56')](_0x23acf3(_0x55fbcd,_0x21d0('0x58')))[_0x21d0('0x30')](function(){})[_0x21d0('0x32')](_0x28e256()));}}return _0x5f3534;})['all']();})[_0x21d0('0x30')](function(){return db[_0x21d0('0x5b')][_0x21d0('0x50')]({'attributes':['id',_0x21d0('0x53')],'include':[{'model':db['CmList'],'as':_0x21d0('0x5c'),'where':{'id':LISTID}}]})['then'](function(_0x4a0eef){var _0x196ec4=[];if(_0x4a0eef){for(var _0x13bd18=0x0,_0x3a7270;_0x13bd18<_0x4a0eef[_0x21d0('0x1b')];_0x13bd18+=0x1){_0x3a7270=_0x4a0eef[_0x13bd18][_0x21d0('0x52')]({'plain':!![]});switch(_0x3a7270[_0x21d0('0x53')]){case _0x21d0('0x54'):_0x196ec4[_0x21d0('0x31')](db['sequelize'][_0x21d0('0x56')](_0x1ce1a0(_0x3a7270,_0x21d0('0x5d')))[_0x21d0('0x30')](function(){})['catch'](_0x28e256()));break;case _0x21d0('0x57'):_0x196ec4[_0x21d0('0x31')](db[_0x21d0('0x55')][_0x21d0('0x56')](_0x461edd(_0x3a7270,_0x21d0('0x5d')))[_0x21d0('0x30')](function(){})[_0x21d0('0x32')](_0x28e256()));break;default:_0x196ec4['push'](db[_0x21d0('0x55')][_0x21d0('0x56')](_0x30f4de(_0x3a7270,_0x21d0('0x5d')))['then'](function(){})['catch'](_0x28e256()));}}}return _0x196ec4;})[_0x21d0('0x5e')]();})['then'](function(){return db[_0x21d0('0x5b')][_0x21d0('0x50')]({'attributes':['id'],'include':[{'model':db[_0x21d0('0x51')],'as':_0x21d0('0x5a'),'where':{'id':LISTID}}]})[_0x21d0('0x30')](function(_0x46eaeb){var _0x4189b9=[];if(_0x46eaeb){for(var _0xebec24=0x0,_0x44d4c5;_0xebec24<_0x46eaeb['length'];_0xebec24+=0x1){_0x44d4c5=_0x46eaeb[_0xebec24]['get']({'plain':!![]});_0x4189b9['push'](db[_0x21d0('0x55')][_0x21d0('0x56')](_0x23acf3(_0x44d4c5,_0x21d0('0x5d')))[_0x21d0('0x30')](function(){})[_0x21d0('0x32')](_0x28e256()));}}return _0x4189b9;})['all']();})['catch'](function(_0x1fb15d){logger[_0x21d0('0x14')]('cmContact,\x20%s,\x20%s',_0x21d0('0x5f'),_0x1fb15d['message']);});}var processPromises=function(_0x7304f9){return BPromise[_0x21d0('0x5e')](promises)[_0x21d0('0x30')](function(_0x4f3263){})['catch'](function(_0x5a3581){logger[_0x21d0('0x14')](_0x21d0('0x60'),JSON['stringify'](_0x5a3581));})[_0x21d0('0x61')](function(){socket['emit'](_0x21d0('0x62')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x7304f9){return _0x7304f9[_0x21d0('0x63')]();}});};var endCsv=function(){return BPromise[_0x21d0('0x64')]()[_0x21d0('0x30')](function(){if(hopperContacts){return checkHopper();}})[_0x21d0('0x30')](function(){socket[_0x21d0('0x65')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x1bdf1f){logger[_0x21d0('0x14')](_0x21d0('0x66'),JSON[_0x21d0('0x67')](_0x1bdf1f));}finally{process[_0x21d0('0x68')](0x0);}});};process['on'](_0x21d0('0x69'),function(){logger[_0x21d0('0x6a')](_0x21d0('0x6b'));endCsv();});function main(){return BPromise['resolve']()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x21d0('0x11')](',');return db['CmContact'][_0x21d0('0x50')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x5cff92){var _0x5e30c6=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x21d0('0x6c')](_0x5e30c6,{'header':!![],'skipEmptyLines':!![],'step':function(_0x41e79a,_0x5768ce){total+=0x1;var _0x21173b=total;promises[_0x21d0('0x31')](checkRow(_0x41e79a,_0x5cff92,_0x21173b)[_0x21d0('0x30')](function(){success+=0x1;})[_0x21d0('0x32')](function(_0x272d10){if(_0x272d10[_0x21d0('0x14')]){errors+=0x1;delete _0x272d10[_0x21d0('0x14')];}else if(_0x272d10[_0x21d0('0x2c')]){duplicates+=0x1;delete _0x272d10[_0x21d0('0x2c')];}rows[_0x21d0('0x31')](_0x272d10);}));if(total%0xc8===0x0){_0x5768ce['pause']();return processPromises(_0x5768ce);}},'complete':function(){return processPromises()[_0x21d0('0x30')](function(){logger['info'](_0x21d0('0x6d'));endCsv();});},'error':function(_0x490046,_0x52309f){logger[_0x21d0('0x6a')](_0x21d0('0x6e'),JSON[_0x21d0('0x67')](_0x490046));endCsv();}});})['catch'](function(_0x196474){logger['error'](_0x21d0('0x6f'),JSON[_0x21d0('0x67')](_0x196474));});}main();
\ No newline at end of file
+var _0xd357=['ContactId','updatedAt','select','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','createdAt','ListId\x20=\x20?','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','id\x20IN\x20?','cm_hopper_black','VoiceQueue','outbound','dialCheckDuplicateType','sequelize','query','VoiceQueueId','all','get','Campaign','findAll','CmList','Lists','CampaignId','onlyIfOpen','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','contact:csv_','resume','unlinkSync','exit','info','resolve','CmContact','createReadStream','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','bluebird','lodash','squel','ioredis','../../../mysqldb','../../../config/logger','api','redis','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','Duplicate\x20Contact','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','insert','into','cm_hopper','fromQuery','scheduledAt'];(function(_0x263f4c,_0x438626){var _0x3a78d3=function(_0xbdb00f){while(--_0xbdb00f){_0x263f4c['push'](_0x263f4c['shift']());}};_0x3a78d3(++_0x438626);}(_0xd357,0x9c));var _0x7d35=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd357[_0x57b54c];return _0x59cc19;};'use strict';var BPromise=require(_0x7d35('0x0'));var util=require('util');var _=require(_0x7d35('0x1'));var fs=require('fs');var squel=require(_0x7d35('0x2'));var Papa=require('papaparse');var Redis=require(_0x7d35('0x3'));var db=require(_0x7d35('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x7d35('0x5'))(_0x7d35('0x6'));config['redis']=_['defaults'](config[_0x7d35('0x7')],{'host':_0x7d35('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7d35('0x7')]));require(_0x7d35('0x9'))[_0x7d35('0xa')](socket);try{if(!process['argv'][0x2]||process[_0x7d35('0xb')][0x2]===_0x7d35('0xc')||process[_0x7d35('0xb')][0x2]===_0x7d35('0xd')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0x7d35('0xb')][0x2];if(!process[_0x7d35('0xb')][0x3]||process[_0x7d35('0xb')][0x3]===_0x7d35('0xc')||process[_0x7d35('0xb')][0x3]===_0x7d35('0xd')||!process[_0x7d35('0xb')][0x4]||process[_0x7d35('0xb')][0x4]===_0x7d35('0xc')||process[_0x7d35('0xb')][0x4]===_0x7d35('0xd')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x7d35('0xe')](process['argv'][0x3]['split'](','),process['argv'][0x4][_0x7d35('0xf')](','));if(!process[_0x7d35('0xb')][0x5]||process['argv'][0x5]===_0x7d35('0xc')||process['argv'][0x5]==='null'){throw new Error(_0x7d35('0x10'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x7d35('0xb')][0x6]&&process[_0x7d35('0xb')][0x6]!=='undefined'&&process[_0x7d35('0xb')][0x6]!==_0x7d35('0xd')?process[_0x7d35('0xb')][0x6]:null;var DUPLICATES=process[_0x7d35('0xb')][0x7]&&process[_0x7d35('0xb')][0x7]!=='undefined'&&process['argv'][0x7]!=='null'?process[_0x7d35('0xb')][0x7]:null;if(!process[_0x7d35('0xb')][0x8]||process['argv'][0x8]===_0x7d35('0xc')||process['argv'][0x8]===_0x7d35('0xd')){throw new Error(_0x7d35('0x11'));}var SOCKET_TIMESTAMP=process[_0x7d35('0xb')][0x8];}catch(_0x449653){logger[_0x7d35('0x12')](_0x449653);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(_0x4b75da,_0x285aa6,_0x4f0bc1,_0x58da0b){var _0x12c8f2={'message':_0x285aa6};_0x12c8f2[_0x4b75da]=!![];if(_0x4f0bc1){_0x12c8f2[_0x7d35('0x13')]=_0x4f0bc1;}if(_0x58da0b){_0x12c8f2[_0x7d35('0x14')]=_0x58da0b;}return _0x12c8f2;}function isEmail(_0x8d7e61){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))*$/[_0x7d35('0x15')](_0x8d7e61);}function checkRow(_0x3bdde8,_0x1e074b,_0x1a6e6c){return new BPromise(function(_0x49c529,_0x1134a9){if(_[_0x7d35('0x16')](_0x3bdde8)){return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x7d35('0x17'),null,_0x1a6e6c));}if(_0x3bdde8['errors']&&_0x3bdde8['errors']['length']){var _0x3a1fc6=_['map'](_0x3bdde8['errors'],_0x7d35('0x18'))[_0x7d35('0x19')](';');return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x3a1fc6,null,_0x1a6e6c));}var _0x5c2f0a={};for(var _0x144d2c in FIELDS){if(FIELDS[_0x7d35('0x1a')](_0x144d2c)&&FIELDS[_0x144d2c]){_0x5c2f0a[_0x144d2c]=_0x3bdde8[_0x7d35('0x1b')][0x0][FIELDS[_0x144d2c]]||_0x3bdde8[_0x7d35('0x1b')][0x0]['\ufeff'+FIELDS[_0x144d2c]];}}if(!_0x5c2f0a[_0x7d35('0x1c')]){return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x7d35('0x1d'),null,_0x1a6e6c));}if(!_0x5c2f0a[_0x7d35('0x1e')]){return _0x1134a9(handleCheckRowError('error','phone\x20not\x20specified!',null,_0x1a6e6c));}if(_0x5c2f0a['birthDate']){var _0x3c45e3=moment(_0x5c2f0a['birthDate'],_0x7d35('0x1f'));if(!_0x3c45e3[_0x7d35('0x20')]()){return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x7d35('0x21'),null,_0x1a6e6c));}}if(_0x5c2f0a[_0x7d35('0x22')]){if(!isEmail(_0x5c2f0a[_0x7d35('0x22')])){return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x7d35('0x23'),null,_0x1a6e6c));}}_0x5c2f0a[_0x7d35('0x24')]=LISTID;_0x5c2f0a[_0x7d35('0x25')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x1e074b){var _0x5eaf81={};for(var _0x52f469=0x0,_0x2e13b4=DUPLICATES[_0x7d35('0x26')];_0x52f469<_0x2e13b4;_0x52f469+=0x1){_0x5eaf81[DUPLICATES[_0x52f469]]=_0x5c2f0a[DUPLICATES[_0x52f469]];}var _0x11f238=_[_0x7d35('0x27')](_0x1e074b,_0x5eaf81);if(_0x11f238){return _0x1134a9(handleCheckRowError('duplicate',_0x7d35('0x28'),_0x11f238,_0x1a6e6c));}}return db['CmContact']['create'](_0x5c2f0a,{'raw':!![],'hooks':![],'fields':_[_0x7d35('0x29')](_0x5c2f0a)})[_0x7d35('0x2a')](function(_0x1494bd){if(DUPLICATES&&DUPLICATES[_0x7d35('0x26')]&&_0x1e074b){_0x1e074b[_0x7d35('0x2b')](_[_0x7d35('0x2c')](_0x5c2f0a,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x1494bd['id'];return _0x49c529();})[_0x7d35('0x2d')](function(_0x233e0e){return _0x1134a9(handleCheckRowError(_0x7d35('0x12'),_0x7d35('0x2e')+(_0x233e0e[_0x7d35('0x18')]||JSON[_0x7d35('0x2f')](_0x233e0e)),null,_0x1a6e6c));});});}function checkHopper(){function _0x30dfcc(){return function(_0x5f39c9){logger['error']('cmContact',_0x7d35('0x30'),util['inspect'](_0x5f39c9,{'showHidden':![],'depth':null}));};}var _0x45d493=function(_0x298d2e,_0xc134ff){var _0x5ef814=squel[_0x7d35('0x31')]()[_0x7d35('0x32')](_0x7d35('0x33'))[_0x7d35('0x34')]([_0x7d35('0x1e'),_0x7d35('0x35'),_0x7d35('0x36'),_0x7d35('0x24'),_0xc134ff,'createdAt',_0x7d35('0x37')],squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'),_0x7d35('0x1e'))['field'](_0x7d35('0x3a'),_0x7d35('0x35'))[_0x7d35('0x39')]('id',_0x7d35('0x36'))[_0x7d35('0x39')](LISTID[_0x7d35('0x3b')](),_0x7d35('0x24'))['field'](_0x298d2e['id'][_0x7d35('0x3b')](),_0xc134ff)[_0x7d35('0x39')](_0x7d35('0x3a'),'createdAt')['field']('NOW()',_0x7d35('0x37'))[_0x7d35('0x3c')](_0x7d35('0x3d'))[_0x7d35('0x3e')](_0x7d35('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x7d35('0x3b')]())[_0x7d35('0x3e')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x7d35('0x40'),squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'))['from'](_0x7d35('0x33'))[_0x7d35('0x3e')](_0xc134ff+'\x20=\x20?',_0x298d2e['id']['toString']())))[_0x7d35('0x3b')]();return _0x5ef814;};var _0x36fb67=function(_0x6ae50a,_0x25a00f){var _0x10cd61=squel[_0x7d35('0x31')]()[_0x7d35('0x32')](_0x7d35('0x33'))['fromQuery']([_0x7d35('0x1e'),_0x7d35('0x35'),_0x7d35('0x36'),'ListId',_0x25a00f,_0x7d35('0x41'),'updatedAt'],squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'),_0x7d35('0x1e'))[_0x7d35('0x39')]('NOW()',_0x7d35('0x35'))[_0x7d35('0x39')]('id',_0x7d35('0x36'))[_0x7d35('0x39')](LISTID['toString'](),'ListId')[_0x7d35('0x39')](_0x6ae50a['id'][_0x7d35('0x3b')](),_0x25a00f)[_0x7d35('0x39')](_0x7d35('0x3a'),_0x7d35('0x41'))[_0x7d35('0x39')](_0x7d35('0x3a'),_0x7d35('0x37'))[_0x7d35('0x3c')]('cm_contacts')[_0x7d35('0x3e')](_0x7d35('0x3f'))[_0x7d35('0x3e')](_0x7d35('0x42'),LISTID[_0x7d35('0x3b')]())[_0x7d35('0x3e')]('id\x20IN\x20?',squel[_0x7d35('0x43')](hopperContacts))[_0x7d35('0x3e')](_0x7d35('0x44'))[_0x7d35('0x3e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x45'))['from'](_0x7d35('0x46'))[_0x7d35('0x3e')](_0x25a00f+_0x7d35('0x47'),_0x6ae50a['id'][_0x7d35('0x3b')]()))[_0x7d35('0x3e')](_0x7d35('0x40'),squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'))[_0x7d35('0x3c')]('cm_hopper')['where'](_0x25a00f+_0x7d35('0x47'),_0x6ae50a['id'][_0x7d35('0x3b')]())))[_0x7d35('0x3b')]();return _0x10cd61;};function _0x1d1dd1(_0x5f113f,_0x4adb40){var _0x1e0092=squel[_0x7d35('0x31')]()['into'](_0x7d35('0x33'))[_0x7d35('0x34')]([_0x7d35('0x1e'),_0x7d35('0x35'),_0x7d35('0x36'),_0x7d35('0x24'),_0x4adb40,_0x7d35('0x41'),_0x7d35('0x37')],squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'),_0x7d35('0x1e'))[_0x7d35('0x39')](_0x7d35('0x3a'),_0x7d35('0x35'))[_0x7d35('0x39')]('id','ContactId')[_0x7d35('0x39')](LISTID[_0x7d35('0x3b')](),_0x7d35('0x24'))['field'](_0x5f113f['id'][_0x7d35('0x3b')](),_0x4adb40)[_0x7d35('0x39')]('NOW()','createdAt')[_0x7d35('0x39')](_0x7d35('0x3a'),_0x7d35('0x37'))['from'](_0x7d35('0x3d'))[_0x7d35('0x3e')]('deletedAt\x20IS\x20NULL')[_0x7d35('0x3e')](_0x7d35('0x42'),LISTID[_0x7d35('0x3b')]())[_0x7d35('0x3e')](_0x7d35('0x48'),squel[_0x7d35('0x43')](hopperContacts))['where'](_0x7d35('0x44')))[_0x7d35('0x3b')]();return _0x1e0092;}function _0x53f86d(_0x16def6,_0x31b885){var _0x1c5df0=squel['insert']()[_0x7d35('0x32')](_0x7d35('0x49'))['fromQuery'](['phone',_0x7d35('0x36'),_0x7d35('0x24'),_0x31b885,_0x7d35('0x41'),_0x7d35('0x37')],squel[_0x7d35('0x38')]()[_0x7d35('0x39')](_0x7d35('0x1e'),'phone')['field']('id','ContactId')[_0x7d35('0x39')](LISTID[_0x7d35('0x3b')](),_0x7d35('0x24'))[_0x7d35('0x39')](_0x16def6['id'][_0x7d35('0x3b')](),_0x31b885)['field'](_0x7d35('0x3a'),_0x7d35('0x41'))[_0x7d35('0x39')](_0x7d35('0x3a'),_0x7d35('0x37'))[_0x7d35('0x3c')](_0x7d35('0x3d'))[_0x7d35('0x3e')]('deletedAt\x20IS\x20NULL')[_0x7d35('0x3e')]('ListId\x20=\x20?',LISTID[_0x7d35('0x3b')]())[_0x7d35('0x3e')](_0x7d35('0x48'),squel['str'](hopperContacts))['where'](_0x7d35('0x44')))[_0x7d35('0x3b')]();return _0x1c5df0;}return db[_0x7d35('0x4a')]['findAll']({'where':{'type':_0x7d35('0x4b')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x7d35('0x2a')](function(_0x34876d){var _0x41ddef=[];if(_0x34876d){var _0x29fa26;for(var _0x2ce346=0x0,_0x220b78;_0x2ce346<_0x34876d[_0x7d35('0x26')];_0x2ce346+=0x1){_0x220b78=_0x34876d[_0x2ce346]['get']({'plain':!![]});switch(_0x220b78[_0x7d35('0x4c')]){case'always':_0x41ddef[_0x7d35('0x2b')](db[_0x7d35('0x4d')][_0x7d35('0x4e')](_0x36fb67(_0x220b78,'VoiceQueueId'))[_0x7d35('0x2a')](function(){})[_0x7d35('0x2d')](_0x30dfcc()));break;case'onlyIfOpen':_0x41ddef['push'](db[_0x7d35('0x4d')]['query'](_0x45d493(_0x220b78,_0x7d35('0x4f')))[_0x7d35('0x2a')](function(){})['catch'](_0x30dfcc()));break;default:_0x41ddef['push'](db[_0x7d35('0x4d')]['query'](_0x1d1dd1(_0x220b78,_0x7d35('0x4f')))[_0x7d35('0x2a')](function(){})[_0x7d35('0x2d')](_0x30dfcc()));}}}return _0x41ddef;})[_0x7d35('0x50')]()[_0x7d35('0x2a')](function(){return db[_0x7d35('0x4a')]['findAll']({'where':{'type':_0x7d35('0x4b')},'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})['then'](function(_0x33df22){var _0xe6556d=[];if(_0x33df22){var _0x465878;for(var _0x20d380=0x0,_0x1cf127;_0x20d380<_0x33df22[_0x7d35('0x26')];_0x20d380+=0x1){_0x1cf127=_0x33df22[_0x20d380][_0x7d35('0x51')]({'plain':!![]});_0xe6556d[_0x7d35('0x2b')](db[_0x7d35('0x4d')][_0x7d35('0x4e')](_0x53f86d(_0x1cf127,_0x7d35('0x4f')))['then'](function(){})[_0x7d35('0x2d')](_0x30dfcc()));}}return _0xe6556d;})[_0x7d35('0x50')]();})[_0x7d35('0x2a')](function(){return db[_0x7d35('0x52')][_0x7d35('0x53')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x7d35('0x54')],'as':_0x7d35('0x55'),'where':{'id':LISTID}}]})[_0x7d35('0x2a')](function(_0x48a9cf){var _0x1a6d82=[];if(_0x48a9cf){for(var _0x3396a8=0x0,_0x1434fc;_0x3396a8<_0x48a9cf[_0x7d35('0x26')];_0x3396a8+=0x1){_0x1434fc=_0x48a9cf[_0x3396a8]['get']({'plain':!![]});switch(_0x1434fc[_0x7d35('0x4c')]){case'always':_0x1a6d82[_0x7d35('0x2b')](db[_0x7d35('0x4d')][_0x7d35('0x4e')](_0x36fb67(_0x1434fc,_0x7d35('0x56')))[_0x7d35('0x2a')](function(){})['catch'](_0x30dfcc()));break;case _0x7d35('0x57'):_0x1a6d82[_0x7d35('0x2b')](db[_0x7d35('0x4d')]['query'](_0x45d493(_0x1434fc,_0x7d35('0x56')))['then'](function(){})[_0x7d35('0x2d')](_0x30dfcc()));break;default:_0x1a6d82['push'](db[_0x7d35('0x4d')][_0x7d35('0x4e')](_0x1d1dd1(_0x1434fc,_0x7d35('0x56')))[_0x7d35('0x2a')](function(){})[_0x7d35('0x2d')](_0x30dfcc()));}}}return _0x1a6d82;})[_0x7d35('0x50')]();})[_0x7d35('0x2a')](function(){return db[_0x7d35('0x52')]['findAll']({'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0x7d35('0x2a')](function(_0x5c398e){var _0x53b9e8=[];if(_0x5c398e){for(var _0x34c484=0x0,_0x3d83e8;_0x34c484<_0x5c398e[_0x7d35('0x26')];_0x34c484+=0x1){_0x3d83e8=_0x5c398e[_0x34c484]['get']({'plain':!![]});_0x53b9e8[_0x7d35('0x2b')](db[_0x7d35('0x4d')][_0x7d35('0x4e')](_0x53f86d(_0x3d83e8,'CampaignId'))[_0x7d35('0x2a')](function(){})[_0x7d35('0x2d')](_0x30dfcc()));}}return _0x53b9e8;})[_0x7d35('0x50')]();})[_0x7d35('0x2d')](function(_0x5b2544){logger[_0x7d35('0x12')](_0x7d35('0x58'),_0x7d35('0x59'),_0x5b2544[_0x7d35('0x18')]);});}var processPromises=function(_0x4956e9){return BPromise[_0x7d35('0x50')](promises)[_0x7d35('0x2a')](function(_0x301e54){})[_0x7d35('0x2d')](function(_0x4873f6){logger['error'](_0x7d35('0x5a'),JSON[_0x7d35('0x2f')](_0x4873f6));})[_0x7d35('0x5b')](function(){socket[_0x7d35('0x5c')](_0x7d35('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x4956e9){return _0x4956e9[_0x7d35('0x5e')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x7d35('0x2a')](function(){if(hopperContacts){return checkHopper();}})[_0x7d35('0x2a')](function(){socket['emit'](_0x7d35('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x7d35('0x5f')](FILEPATH);}catch(_0x19fda9){logger[_0x7d35('0x12')]('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x19fda9));}finally{process[_0x7d35('0x60')](0x0);}});};process['on']('SIGINT',function(){logger[_0x7d35('0x61')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x7d35('0x62')]()[_0x7d35('0x2a')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x7d35('0x63')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x7d35('0x2a')](function(_0x4ed843){var _0x4155a4=fs[_0x7d35('0x64')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x4155a4,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2a6258,_0x4a7614){total+=0x1;var _0x3941fe=total;promises[_0x7d35('0x2b')](checkRow(_0x2a6258,_0x4ed843,_0x3941fe)['then'](function(){success+=0x1;})[_0x7d35('0x2d')](function(_0x409a8e){if(_0x409a8e[_0x7d35('0x12')]){errors+=0x1;delete _0x409a8e[_0x7d35('0x12')];}else if(_0x409a8e[_0x7d35('0x65')]){duplicates+=0x1;delete _0x409a8e['duplicate'];}rows[_0x7d35('0x2b')](_0x409a8e);}));if(total%0xc8===0x0){_0x4a7614[_0x7d35('0x66')]();return processPromises(_0x4a7614);}},'complete':function(){return processPromises()['then'](function(){logger[_0x7d35('0x61')](_0x7d35('0x67'));endCsv();});},'error':function(_0x12d3e2,_0x43837d){logger[_0x7d35('0x61')](_0x7d35('0x68'),JSON['stringify'](_0x12d3e2));endCsv();}});})[_0x7d35('0x2d')](function(_0x35c2b1){logger[_0x7d35('0x12')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0x7d35('0x2f')](_0x35c2b1));});}main();
\ No newline at end of file
index b3ce069..3e6e541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40e1=['cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','info','Received\x20SIGINT','message','exit','code','sequelize','query','spread','error','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','catch','timezones','dialTimezone','utcOffset','set','offset','main','stringify','send','binding','clone','socket_timestamp','root','.csv','includes','header','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','errors','find','hasOwnProperty','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','replace','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','duplicates','CREATE\x20TABLE\x20','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues_has_cm_blacklists','voice_queues','VoiceQueueId','campaigns','CampaignId','campaigns_has_cm_blacklists','each','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','papaparse','util','bluebird','moment','squel','../../../mysqldb','../../../config/logger','import','redis','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','from','join','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','AdditionalPhones','then','length','push','all','split','isNil','filter','CmContactHasItem','findOne','update','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','ContactId','ListId','createdAt','UserId','recallme','cm_contacts','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','toString','cm_contacts.id','fromQuery','fields','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','phone','cm_hopper_black','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','scheduledat','updatedAt','priority','\x22always\x22','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy'];(function(_0x16d934,_0x242956){var _0x38cdfb=function(_0x5c4212){while(--_0x5c4212){_0x16d934['push'](_0x16d934['shift']());}};_0x38cdfb(++_0x242956);}(_0x40e1,0x1e7));var _0x140e=function(_0x41b1cc,_0x28ea31){_0x41b1cc=_0x41b1cc-0x0;var _0x4b16bf=_0x40e1[_0x41b1cc];return _0x4b16bf;};'use strict';var fs=require('fs');var path=require(_0x140e('0x0'));var _=require('lodash');var Papa=require(_0x140e('0x1'));var util=require(_0x140e('0x2'));var BPromise=require(_0x140e('0x3'));var moment=require(_0x140e('0x4'));var squel=require(_0x140e('0x5'));var Redis=require('ioredis');var db=require(_0x140e('0x6'))['db'];var config=require('../../../config/environment');var shared=require('../../../config/environment/shared');var logger=require(_0x140e('0x7'))(_0x140e('0x8'));config[_0x140e('0x9')]=_['defaults'](config[_0x140e('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x140e('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x140e('0xa')](_0x140e('0xb'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x140e('0xa')](_0x140e('0xb'));function isEmail(_0x1a81d7){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))*$/[_0x140e('0xc')](_0x1a81d7);}function selectNotIn(_0x898644,_0x47d52d,_0x57e718,_0x34c2ad,_0x54cba1){return squel[_0x140e('0xd')]()[_0x140e('0xe')]('phone')[_0x140e('0xf')](_0x34c2ad)[_0x140e('0x10')](_0x47d52d,null,_0x47d52d+'.id\x20=\x20'+_0x34c2ad+'.'+_0x57e718)[_0x140e('0x11')](_0x34c2ad+'.'+_0x57e718+_0x140e('0x12')+_0x898644+'.'+_0x57e718)['where'](_0x47d52d+_0x140e('0x13')+_0x54cba1[_0x140e('0x10')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x1169c9,_0x2f13d5){promisesAdditionalPhones=[];return db[_0x140e('0x14')]['findAll']({'raw':!![],'attributes':['id',_0x140e('0x15')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x140e('0x16')](function(_0x446edd){if(_0x446edd!==null){var _0x105132=[];for(var _0x477d07=0x0;_0x477d07<_0x446edd[_0x140e('0x17')];_0x477d07++){var _0x1d8abf=_0x446edd[_0x477d07];_0x105132[_0x140e('0x18')](insertAdditionalPhones(_0x1d8abf));}}Promise[_0x140e('0x19')](_0x105132)['then'](function(){_0x1169c9({'val':0x1});});});});}function insertAdditionalPhones(_0x33b6f0){return new Promise(function(_0x559a70,_0x12902d){var _0x3bb648=_0x33b6f0[_0x140e('0x15')];var _0x32a128=_0x3bb648['split'](';');var _0x1357d9=[];orderBy=0x0;for(var _0x26b9d8=0x0;_0x26b9d8<_0x32a128[_0x140e('0x17')];_0x26b9d8++){_0x1357d9[_0x140e('0x18')](splitAdditionalPhone(_0x33b6f0['id'],_0x32a128[_0x26b9d8]));}Promise[_0x140e('0x19')](_0x1357d9)['then'](function(){_0x559a70({'val':_0x32a128[_0x140e('0x17')]});});});}function splitAdditionalPhone(_0x49c75d,_0x289ccb){return new Promise(function(_0x4d8299,_0x4f8aa4){var _0x37f818=_0x289ccb[_0x140e('0x1a')](':');var _0x4cb940=_0x37f818[0x0];var _0x12a0a5=_0x37f818[0x1];if(!_[_0x140e('0x1b')](_0x12a0a5)){var _0x19ae4d=_0x12a0a5['split']('|');var _0xe2bfc3=[];for(var _0x23ceea=0x0;_0x23ceea<_0x19ae4d[_0x140e('0x17')];_0x23ceea++){if(_0x19ae4d[_0x23ceea]!==''){var _0x19cd2b=_[_0x140e('0x1c')](promisesAdditionalPhones,{'contactId':_0x49c75d,'phone':_0x19ae4d[_0x23ceea]});if(_0x19cd2b[_0x140e('0x17')]==0x0){orderBy++;promisesAdditionalPhones[_0x140e('0x18')]({'contactId':_0x49c75d,'contactTypeId':_0x4cb940,'phone':_0x19ae4d[_0x23ceea],'orderBy':orderBy});}}}_0x4d8299({'ok':0x1});}else _0x4d8299({'res':0x0});});}function createAdditionalPhone(_0x2e26c5,_0x21dae2,_0xbecd47,_0x1a92c8){var _0x372985='';var _0x4c0aa3='';var _0x1942da=_0xbecd47[_0x140e('0x1a')]('§');_0x372985=_0x1942da[0x0];if(_0x1942da[_0x140e('0x17')]==0x2)_0x4c0aa3=_0x1942da[0x1];return new Promise(function(_0x3f5e92,_0x5b193f){return db[_0x140e('0x1d')][_0x140e('0x1e')]({'where':{'CmContactId':_0x2e26c5,'item':_0x372985}})['then'](function(_0x58a1be){if(_0x58a1be){return db['CmContactHasItem'][_0x140e('0x1f')]({'ItemTypeId':_0x21dae2,'description':_0x4c0aa3,'OrderBy':_0x1a92c8},{'where':{'CmContactId':_0x2e26c5,'item':_0x372985}})[_0x140e('0x16')](function(_0xba0f21){_0x3f5e92({'res':'updated'});});}else{return db[_0x140e('0x1d')][_0x140e('0x20')]({'CmContactId':_0x2e26c5,'item':_0x372985,'description':_0x4c0aa3,'ItemTypeId':_0x21dae2,'OrderBy':_0x1a92c8,'ItemClass':_0x140e('0x21')})[_0x140e('0x16')](function(_0x19f4a8){_0x3f5e92({'res':_0x140e('0x22')});});}});});}function insertCmHopper(_0x1f65a7,_0x517d5f,_0x44758e,_0x366d42,_0xb09168){var _0x31ec62=[_0x140e('0x23'),_0x140e('0x24'),'cm_contacts.id',_0x140e('0x25'),_0x517d5f+'.'+_0x366d42,_0x140e('0x26'),_0x140e('0x27'),_0x140e('0x28'),'cm_contacts.UserId','\x22'+_0xb09168+'\x22'];return squel[_0x140e('0x29')]()[_0x140e('0x2a')](_0x140e('0x2b'))['fromQuery'](['phone','scheduledat',_0x140e('0x2c'),_0x140e('0x2d'),_0x366d42,_0x140e('0x2e'),'updatedAt','priority',_0x140e('0x2f'),_0x140e('0x30')],squel['select']()['fields'](_0x31ec62)[_0x140e('0xf')](_0x517d5f)[_0x140e('0x10')](_0x140e('0x31'),null,'cm_contacts.ListId\x20=\x20'+_0x517d5f+'.CmListId')['join'](_0x44758e,null,_0x44758e+_0x140e('0x32')+_0x517d5f+'.'+_0x366d42)[_0x140e('0x11')](_0x517d5f+_0x140e('0x33'),_0x1f65a7)[_0x140e('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x140e('0x11')](_0x140e('0x34'),selectNotIn(_0x517d5f,_0x44758e,_0x366d42,'cm_hopper',['\x22always\x22',_0x140e('0x35')]))['where'](_0x140e('0x34'),selectNotIn(_0x517d5f,_0x44758e,_0x366d42,_0x140e('0x2b'),['\x22always\x22'])))[_0x140e('0x36')]();}function insertCmHopperBlack(_0x3765c6,_0x18acaa,_0x3ab14d,_0x1f1905){var _0x40bd3e=[_0x140e('0x23'),_0x140e('0x37'),_0x140e('0x25'),_0x18acaa+'.'+_0x1f1905,_0x140e('0x26'),_0x140e('0x27')];return squel[_0x140e('0x29')]()[_0x140e('0x2a')]('cm_hopper_black')[_0x140e('0x38')](['phone',_0x140e('0x2c'),'ListId',_0x1f1905,_0x140e('0x2e'),'updatedAt'],squel[_0x140e('0xd')]()[_0x140e('0x39')](_0x40bd3e)[_0x140e('0xf')](_0x18acaa)['join'](_0x140e('0x31'),null,_0x140e('0x3a')+_0x18acaa+_0x140e('0x3b'))['join'](_0x3ab14d,null,_0x3ab14d+_0x140e('0x32')+_0x18acaa+'.'+_0x1f1905)['where'](_0x18acaa+'.CmListId\x20=\x20?',_0x3765c6)[_0x140e('0x11')](_0x140e('0x3c'),NOW)[_0x140e('0x11')](_0x140e('0x34'),squel[_0x140e('0xd')]()[_0x140e('0xe')](_0x140e('0x3d'))['from'](_0x140e('0x3e'))[_0x140e('0x11')](_0x140e('0x3f'),_0x3765c6)[_0x140e('0x11')](_0x1f1905+'\x20=\x20'+_0x18acaa+'.'+_0x1f1905)))['toString']();}function insertTzCmHopper(_0xbbb9e9,_0xefb4b5,_0x191e7c,_0x18a6ac,_0x3b3930,_0x3386c8){var _0x455d9b=['cm_contacts.phone',_0x140e('0x40')+_0x3386c8+'.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.id',_0x140e('0x25'),_0xefb4b5+'.'+_0x18a6ac,_0x140e('0x26'),'cm_contacts.updatedAt',_0x140e('0x28'),'cm_contacts.UserId','\x22'+_0x3b3930+'\x22'];var _0x3610d9=squel[_0x140e('0x29')]()[_0x140e('0x2a')](_0x140e('0x2b'))[_0x140e('0x38')]([_0x140e('0x3d'),_0x140e('0x41'),_0x140e('0x2c'),_0x140e('0x2d'),_0x18a6ac,_0x140e('0x2e'),_0x140e('0x42'),_0x140e('0x43'),_0x140e('0x2f'),_0x140e('0x30')],squel['select']()['fields'](_0x455d9b)[_0x140e('0xf')](_0xefb4b5)[_0x140e('0x10')](_0x140e('0x31'),null,_0x140e('0x3a')+_0xefb4b5+_0x140e('0x3b'))[_0x140e('0x10')](_0x191e7c,null,_0x191e7c+_0x140e('0x32')+_0xefb4b5+'.'+_0x18a6ac)[_0x140e('0x10')](_0x3386c8,null,_0x3386c8+_0x140e('0x32')+_0xefb4b5+'.'+_0x18a6ac)[_0x140e('0x11')](_0xefb4b5+_0x140e('0x33'),_0xbbb9e9)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x140e('0x34'),selectNotIn(_0xefb4b5,_0x191e7c,_0x18a6ac,_0x140e('0x2b'),[_0x140e('0x44'),_0x140e('0x35')]))[_0x140e('0x11')](_0x140e('0x34'),selectNotIn(_0xefb4b5,_0x191e7c,_0x18a6ac,_0x140e('0x2b'),[_0x140e('0x44')])))[_0x140e('0x36')]();return _0x3610d9;}function insertTzCmHopperBlack(_0x28b902,_0x4b84ae,_0x3d77e9,_0x26ca1b){var _0x554556=['cm_contacts.phone',_0x140e('0x37'),_0x140e('0x25'),_0x4b84ae+'.'+_0x26ca1b,_0x140e('0x26'),_0x140e('0x27')];return squel[_0x140e('0x29')]()[_0x140e('0x2a')](_0x140e('0x3e'))[_0x140e('0x38')]([_0x140e('0x3d'),_0x140e('0x2c'),_0x140e('0x2d'),_0x26ca1b,_0x140e('0x2e'),_0x140e('0x42')],squel[_0x140e('0xd')]()['fields'](_0x554556)[_0x140e('0xf')](_0x4b84ae)['join'](_0x140e('0x31'),null,'cm_contacts.ListId\x20=\x20'+_0x4b84ae+'.CmListId')[_0x140e('0x10')](_0x3d77e9,null,_0x3d77e9+_0x140e('0x32')+_0x4b84ae+'.'+_0x26ca1b)[_0x140e('0x11')](_0x4b84ae+_0x140e('0x33'),_0x28b902)[_0x140e('0x11')](_0x140e('0x3c'),NOW)[_0x140e('0x11')](_0x140e('0x34'),squel[_0x140e('0xd')]()['field']('phone')[_0x140e('0xf')](_0x140e('0x3e'))[_0x140e('0x11')](_0x140e('0x3f'),_0x28b902)[_0x140e('0x11')](_0x26ca1b+_0x140e('0x12')+_0x4b84ae+'.'+_0x26ca1b)))[_0x140e('0x36')]();}function insertCmHopperAdditionalPhones(_0x2f4b7b){var _0x4a44fd=[_0x140e('0x45'),_0x140e('0x46'),_0x140e('0x47'),_0x140e('0x48'),_0x140e('0x49')];return squel['insert']()['into'](_0x140e('0x4a'))[_0x140e('0x38')]([_0x140e('0x4b'),_0x140e('0x3d'),_0x140e('0x4c'),_0x140e('0x2e'),'updatedAt'],squel['select']()['fields'](_0x4a44fd)[_0x140e('0xf')]('cm_hopper')[_0x140e('0x10')](_0x140e('0x31'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x140e('0x10')](_0x140e('0x4d'),null,_0x140e('0x4e'))['where'](_0x140e('0x4f'),_0x2f4b7b)[_0x140e('0x11')](_0x140e('0x3c'),NOW))[_0x140e('0x36')]();}function insertCmContact(_0x190a4e,_0x485175,_0x4a9136,_0x2979d6){var _0x51e764=_[_0x140e('0x50')](_[_0x140e('0x51')](_0x2979d6),[_0x140e('0x2d'),_0x140e('0x52'),'createdAt',_0x140e('0x42')]);return squel[_0x140e('0x29')]()[_0x140e('0x2a')](_0x140e('0x31'))['fromQuery'](_0x51e764,squel[_0x140e('0xd')]()[_0x140e('0x39')](_0x51e764)['from'](_0x485175)[_0x140e('0x11')]('('+_0x4a9136['join'](',')+_0x140e('0x53'),squel[_0x140e('0xd')]()[_0x140e('0x39')](_0x4a9136)[_0x140e('0xf')](_0x140e('0x31'))[_0x140e('0x11')](_0x140e('0x3f'),_0x190a4e)['where'](_0x140e('0x54')))[_0x140e('0x11')]('id\x20IN\x20?',squel[_0x140e('0xd')]()['field'](_0x140e('0x55'),_0x140e('0x56'))[_0x140e('0xf')](_0x485175)['group'](_0x4a9136[_0x140e('0x10')](','))))[_0x140e('0x36')]();}function handleStop(){logger[_0x140e('0x57')](_0x140e('0x58'));stopped=!![];}function handleUncaughtException(_0x14e6f1){logger['error'](_0x14e6f1[_0x140e('0x59')]);process[_0x140e('0x5a')](0x1);}function handleError(_0x27e400,_0x3ecdf7){stats['errors']['push']({'name':_0x3ecdf7[_0x140e('0x5b')],'message':_0x3ecdf7[_0x140e('0x59')],'row':_0x27e400});}function handleQuery(_0x1b0c02){logger['info'](_0x1b0c02);return db[_0x140e('0x5c')][_0x140e('0x5d')](_0x1b0c02)[_0x140e('0x5e')](function(_0x3f5149){results['push'](_0x3f5149);})['catch'](function(_0x2b8de8){logger[_0x140e('0x5f')](_0x2b8de8[_0x140e('0x59')]);});}function updateTzCampaigns(_0x53c48d){return new Promise(function(_0x2ad97f,_0x4dd83c){var _0x57548a=squel['select']()[_0x140e('0x39')]([_0x140e('0x60'),_0x140e('0x61')])['from']('campaigns')['join'](_0x140e('0x62'),null,_0x140e('0x63'))[_0x140e('0x11')](_0x140e('0x64')+_0x53c48d);db[_0x140e('0x5c')]['query'](_0x57548a['toString']())['spread'](function(_0xdc329a){var _0x24daa0=[];for(var _0x557578=0x0;_0x557578<_0xdc329a[_0x140e('0x17')];_0x557578++){_0x24daa0['push'](getTimezoneData(_0xdc329a[_0x557578],tmp_campaigns));}BPromise['all'](_0x24daa0)[_0x140e('0x16')](function(){_0x2ad97f({'val':0x1});});})['catch'](function(_0xf71bce){logger[_0x140e('0x5f')](_0xf71bce[_0x140e('0x59')]);_0x2ad97f({'val':0x0});});});}function updateTzVoiceQueues(_0x44b759){return new Promise(function(_0x371684,_0x1cad1b){var _0x5bbef1=squel['select']()[_0x140e('0x39')]([_0x140e('0x65'),_0x140e('0x66')])[_0x140e('0xf')]('voice_queues')[_0x140e('0x10')](_0x140e('0x67'),null,_0x140e('0x68'))['where'](_0x140e('0x69')+_0x44b759);db[_0x140e('0x5c')][_0x140e('0x5d')](_0x5bbef1[_0x140e('0x36')]())['spread'](function(_0x440485){var _0x309b4d=[];for(var _0x2be62f=0x0;_0x2be62f<_0x440485[_0x140e('0x17')];_0x2be62f++){_0x309b4d[_0x140e('0x18')](getTimezoneData(_0x440485[_0x2be62f],tmp_voice_queues));}BPromise[_0x140e('0x19')](_0x309b4d)[_0x140e('0x16')](function(){_0x371684({'val':0x1});});})[_0x140e('0x6a')](function(_0x67757){logger[_0x140e('0x5f')](_0x67757[_0x140e('0x59')]);_0x371684({'val':0x0});});});}function getTimezoneData(_0x58a8e9,_0x39e218){return new Promise(function(_0x4015f5,_0x504465){var _0x2ca549=shared[_0x140e('0x6b')];var _0x4760ed=_0x2ca549[_0x58a8e9[_0x140e('0x6c')]];if(_[_0x140e('0x1b')](_0x4760ed)){_0x4015f5({'ret':0x1});}else{var _0x132083=_0x4760ed[_0x140e('0x6d')];var _0x11f053=squel[_0x140e('0x29')]()[_0x140e('0x2a')](_0x39e218)['set']('id',_0x58a8e9['id'])[_0x140e('0x6e')](_0x140e('0x6f'),_0x132083)['set'](_0x140e('0x6c'),_0x58a8e9[_0x140e('0x6c')])[_0x140e('0x36')]();return db['sequelize'][_0x140e('0x5d')](_0x11f053)['spread'](function(_0xd0961f){_0x4015f5({'ret':0x1});})[_0x140e('0x6a')](function(_0x5b0a82){logger[_0x140e('0x5f')](_0x5b0a82['message']);_0x504465({'ret':0x1});});}});}function handleTZQuery(_0x12a636){logger[_0x140e('0x57')](_0x12a636);return db[_0x140e('0x5c')][_0x140e('0x5d')](_0x12a636)['spread'](function(_0x351952){})[_0x140e('0x6a')](function(_0x5b2a3d){logger[_0x140e('0x5f')](_0x5b2a3d[_0x140e('0x59')]);});}function main(_0xbf0cfe,_0x550a87,_0x501c34,_0x43b6c3){logger[_0x140e('0x57')](_0x140e('0x70'),_0xbf0cfe,JSON[_0x140e('0x71')](_0x550a87));process[_0x140e('0x72')]('start');var _0x8bfb61=_0x550a87[_0x140e('0x73')];var _0x3cf5ec=_[_0x140e('0x74')](_0x8bfb61);var _0xb39bc=_0x550a87[_0x140e('0x75')];var _0x27cf69=path['join'](config[_0x140e('0x76')],'server/files/tmp',_0xb39bc+_0x140e('0x77'));hasTZ=_[_0x140e('0x51')](_0x8bfb61)[_0x140e('0x78')](_0x140e('0x6c'));var _0x10131b=_[_0x140e('0x51')](_0x8bfb61)[_0x140e('0x10')]();logger[_0x140e('0x57')](_0x140e('0x79'),_0x10131b);db['ContactItemType'][_0x140e('0x7a')]({'raw':!![],'attributes':['id',_0x140e('0x7b')]})['then'](function(_0x2bf2ce){for(var _0x406efb=0x0;_0x406efb<_0x2bf2ce[_0x140e('0x17')];_0x406efb++){if(_0x2bf2ce[_0x406efb][_0x140e('0x7b')]in _0x8bfb61){contactItemTypes['push'](_0x2bf2ce[_0x406efb]);delete _0x3cf5ec[_0x2bf2ce[_0x406efb][_0x140e('0x7b')]];hasAdditionalPhones=!![];}for(var _0xd69689 in _0x8bfb61){if(_0x2bf2ce[_0x406efb][_0x140e('0x7b')]+_0x140e('0x7c')===_0xd69689){phoneDescriptions[_0x140e('0x18')]({'itemTypeId':_0x2bf2ce[_0x406efb]['id'],'description':_0xd69689});delete _0x3cf5ec[_0xd69689];}}}if(hasAdditionalPhones)_0x3cf5ec[_0x140e('0x15')]='';var _0x535b1f=_[_0x140e('0x51')](_0x3cf5ec)[_0x140e('0x10')]();logger[_0x140e('0x57')](_0x140e('0x79'),_0x535b1f);fs[_0x140e('0x7d')](_0x27cf69,_0x535b1f+'\x0a');Papa[_0x140e('0x7e')](fs[_0x140e('0x7f')](_0xbf0cfe),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2ecdf0,_0x2e7335){try{for(var _0x595d9d=0x0,_0x4182e7=[];_0x595d9d<_0x2ecdf0[_0x140e('0x80')]['length'];_0x595d9d++){stats[_0x140e('0x81')]+=0x1;if(_0x2ecdf0['errors'][_0x595d9d]){handleError(_0x2ecdf0[_0x140e('0x80')][_0x595d9d],_0x2ecdf0[_0x140e('0x82')][_0x595d9d]);}else{var _0x1f45b=[];var _0x52c5ce=[];var _0x5da5df={};for(var _0x4feadb in _0x8bfb61){let _0x16587f=contactItemTypes['find'](_0x394662=>_0x394662[_0x140e('0x7b')]===_0x4feadb);let _0x2f58e3=contactItemTypes[_0x140e('0x83')](_0x271855=>_0x271855['name']+_0x140e('0x7c')===_0x4feadb);if(_[_0x140e('0x1b')](_0x16587f)&&_['isNil'](_0x2f58e3)){if(_0x8bfb61[_0x140e('0x84')](_0x4feadb)){if(_0x2ecdf0[_0x140e('0x80')][_0x595d9d][_0x8bfb61[_0x4feadb]]){var _0x2772f3=_[_0x140e('0x85')](_0x2ecdf0[_0x140e('0x80')][_0x595d9d][_0x8bfb61[_0x4feadb]]['replace'](/"/g,'\x27'));switch(_0x4feadb){case _0x140e('0x41'):var _0x59bbaf=moment(_0x2772f3,_0x140e('0xb'),!![]);if(_0x59bbaf[_0x140e('0x86')]()){_0x4182e7[_0x140e('0x18')]('\x22'+_0x2772f3+'\x22');}else{_0x1f45b[_0x140e('0x18')](_0x140e('0x87'));}break;case _0x140e('0x43'):var _0x49a200=parseInt(_0x2772f3);_0x2772f3=_[_0x140e('0x88')](_0x49a200)||_0x49a200<0x0||_0x49a200>0x4?_0x43b6c3?0x3:0x2:_0x49a200;_0x4182e7['push']('\x22'+_0x2772f3+'\x22');break;case'UserId':var _0x329e91=parseInt(_0x2772f3);if(_[_0x140e('0x89')](_0x329e91)&&_['includes'](_0x501c34,_0x329e91)){_0x4182e7[_0x140e('0x18')]('\x22'+_0x329e91+'\x22');}else{_0x1f45b[_0x140e('0x18')](_0x140e('0x8a'));}break;case _0x140e('0x8b'):if(isEmail(_0x2772f3)){_0x4182e7[_0x140e('0x18')]('\x22'+_0x2772f3+'\x22');}else{_0x1f45b[_0x140e('0x18')]('email\x20wrong\x20format');}break;case _0x140e('0x8c'):var _0x37e09=moment(_0x2772f3,_0x140e('0x8d'),!![]);if(_0x37e09[_0x140e('0x86')]()){_0x4182e7['push']('\x22'+_0x2772f3+'\x22');}else{_0x1f45b[_0x140e('0x18')](_0x140e('0x8e'));}break;case _0x140e('0x6c'):var _0x426d73=shared[_0x140e('0x6b')];var _0x2aa012=_0x426d73[_0x2772f3];if(!_['isNil'](_0x2aa012)){var _0x23cdc1=_0x2aa012[_0x140e('0x6d')];_0x4182e7['push']('\x22'+_0x2772f3+'\x22');_0x4182e7[_0x140e('0x18')]('\x22'+_0x23cdc1+'\x22');}break;default:_0x4182e7['push']('\x22'+_0x2772f3+'\x22');}}else{switch(_0x4feadb){case _0x140e('0x8f'):case _0x140e('0x3d'):_0x1f45b[_0x140e('0x18')](_0x4feadb+_0x140e('0x90'));break;default:_0x4182e7['push']('\x22\x22');}}}}else{var _0x1ad656='';if(!_['isNil'](_0x16587f)){if(!_0x5da5df[_0x140e('0x84')](_0x16587f['id'])){if(!_['isNil'](_0x2ecdf0[_0x140e('0x80')][_0x595d9d][_0x8bfb61[_0x4feadb]])){var _0x2772f3=_['trim'](_0x2ecdf0['data'][_0x595d9d][_0x8bfb61[_0x4feadb]][_0x140e('0x91')](/"/g,'\x27'));var _0x42e8f8=phoneDescriptions[_0x140e('0x83')](_0x1b33c2=>_0x1b33c2[_0x140e('0x92')]===_0x16587f['id']);if(!_[_0x140e('0x1b')](_0x42e8f8)){var _0x5ef91e=_[_0x140e('0x85')](_0x2ecdf0[_0x140e('0x80')][_0x595d9d][_0x8bfb61[_0x42e8f8[_0x140e('0x93')]]][_0x140e('0x91')](/"/g,'\x27'));if(!_[_0x140e('0x1b')](_0x5ef91e))_0x2772f3=_0x2772f3+'§'+_0x5ef91e;}if(_0x1ad656=='')_0x1ad656=_0x2772f3;else _0x1ad656+='|'+_0x2772f3;}_0x52c5ce[_0x140e('0x18')](_0x16587f['id']+':'+_0x1ad656);_0x5da5df[_0x16587f['id']]=0x1;}}}}if(hasAdditionalPhones){_0x4182e7[_0x140e('0x18')]('\x22'+_0x52c5ce[_0x140e('0x10')](';')+'\x22');}if(_0x1f45b[_0x140e('0x17')]){handleError(_0x2ecdf0['data'][_0x595d9d],{'code':_0x140e('0x94'),'message':_0x1f45b[_0x140e('0x10')]()});}else{fs[_0x140e('0x95')](_0x27cf69,_0x4182e7[_0x140e('0x10')]()+'\x0a');}_0x4182e7=[];}if(!(stats[_0x140e('0x81')]%0xc8)){socket[_0x140e('0x96')](_0x140e('0x97')+_0xb39bc,stats);stats[_0x140e('0x82')]=[];}}if(stopped){logger['info'](_0x140e('0x98'));_0x2e7335['abort']();}}catch(_0x3b591c){handleError(_0x2ecdf0[_0x140e('0x80')][_0x595d9d],{'code':_0x140e('0x99'),'message':_0x3b591c[_0x140e('0x59')]});logger[_0x140e('0x5f')](_0x140e('0x9a'),_0x3b591c[_0x140e('0x59')]);}},'complete':function(){try{var _0x264ccc=[];var _0x366391=[];var _0xe7b828=_0x140e('0x31');if(_0x550a87[_0x140e('0x9b')]&&_0x550a87[_0x140e('0x9b')]['length']){_0xe7b828='cm_contacts_'+_0xb39bc;_0x264ccc['push'](_0x140e('0x9c')+_0xe7b828+'\x20LIKE\x20cm_contacts;');}tmp_campaigns='campaigns_'+_0xb39bc;tmp_voice_queues=_0x140e('0x9d')+_0xb39bc;_0x366391['push'](_0x140e('0x9c')+tmp_campaigns+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');_0x366391[_0x140e('0x18')](_0x140e('0x9c')+tmp_voice_queues+_0x140e('0x9e'));BPromise['each'](_0x366391,handleTZQuery)[_0x140e('0x16')](function(_0x16c8ce){updateTzCampaigns(_0x550a87[_0x140e('0x2d')])[_0x140e('0x16')](function(_0x4afdee){updateTzVoiceQueues(_0x550a87['ListId'])[_0x140e('0x16')](function(_0x3e618e){if(hasTZ)_0x535b1f=_0x535b1f[_0x140e('0x91')](_0x140e('0x6c'),_0x140e('0x9f'));var _0x4e8df2=util[_0x140e('0xa')](_0x140e('0xa0'),_0x27cf69,_0xe7b828,_0x535b1f,_0x550a87[_0x140e('0x2d')],_0x550a87[_0x140e('0x52')]||null,NOW,NOW);if(_[_0x140e('0x1b')](_0x8bfb61[_0x140e('0x41')])){_0x4e8df2+=',\x20scheduledAt\x20=\x20NOW()';}_0x264ccc[_0x140e('0x18')](_0x4e8df2);if(_0x550a87['duplicates']&&_0x550a87[_0x140e('0x9b')]['length']){_0x264ccc[_0x140e('0x18')](insertCmContact(_0x550a87['ListId'],_0xe7b828,_0x550a87[_0x140e('0x9b')],_0x8bfb61));_0x264ccc[_0x140e('0x18')](_0x140e('0xa1')+_0xe7b828+';');}BPromise['each'](_0x264ccc,handleQuery)[_0x140e('0x16')](function(_0x3f8eb5){BPromise[_0x140e('0x19')]([handleAdditionalPhones()])[_0x140e('0x16')](function(){_0x264ccc=[];for(var _0x8d80b6=0x0;_0x8d80b6<promisesAdditionalPhones[_0x140e('0x17')];_0x8d80b6++){if(promisesAdditionalPhones[_0x8d80b6]['phone']!='§'){_0x264ccc[_0x140e('0x18')](createAdditionalPhone(promisesAdditionalPhones[_0x8d80b6][_0x140e('0xa2')],promisesAdditionalPhones[_0x8d80b6][_0x140e('0xa3')],promisesAdditionalPhones[_0x8d80b6][_0x140e('0x3d')],promisesAdditionalPhones[_0x8d80b6][_0x140e('0xa4')]));}}BPromise['all'](_0x264ccc)[_0x140e('0x16')](function(){_0x264ccc=[];if(hasTZ){_0x264ccc[_0x140e('0x18')](insertTzCmHopper(_0x550a87[_0x140e('0x2d')],'voice_queues_has_cm_lists','voice_queues','VoiceQueueId',_0x43b6c3,tmp_voice_queues));_0x264ccc[_0x140e('0x18')](insertTzCmHopperBlack(_0x550a87[_0x140e('0x2d')],_0x140e('0xa5'),_0x140e('0xa6'),_0x140e('0xa7')));_0x264ccc['push'](insertTzCmHopper(_0x550a87['ListId'],_0x140e('0x62'),_0x140e('0xa8'),_0x140e('0xa9'),_0x43b6c3,tmp_campaigns));_0x264ccc[_0x140e('0x18')](insertTzCmHopperBlack(_0x550a87[_0x140e('0x2d')],_0x140e('0xaa'),_0x140e('0xa8'),'CampaignId'));_0x264ccc[_0x140e('0x18')](insertCmHopperAdditionalPhones(_0x550a87['ListId']));}else{_0x264ccc[_0x140e('0x18')](insertCmHopper(_0x550a87[_0x140e('0x2d')],_0x140e('0x67'),_0x140e('0xa6'),_0x140e('0xa7'),_0x43b6c3));_0x264ccc['push'](insertCmHopperBlack(_0x550a87['ListId'],_0x140e('0xa5'),'voice_queues',_0x140e('0xa7')));_0x264ccc[_0x140e('0x18')](insertCmHopper(_0x550a87['ListId'],_0x140e('0x62'),_0x140e('0xa8'),_0x140e('0xa9'),_0x43b6c3));_0x264ccc[_0x140e('0x18')](insertCmHopperBlack(_0x550a87[_0x140e('0x2d')],'campaigns_has_cm_blacklists','campaigns',_0x140e('0xa9')));_0x264ccc[_0x140e('0x18')](insertCmHopperAdditionalPhones(_0x550a87[_0x140e('0x2d')]));}_0x264ccc[_0x140e('0x18')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x264ccc[_0x140e('0x18')](_0x140e('0xa1')+tmp_voice_queues+';');BPromise[_0x140e('0xab')](_0x264ccc,handleQuery)[_0x140e('0x16')](function(_0x7d35a1){stats['finish']=!![];stats['affectedRows']=_0x550a87[_0x140e('0x9b')]&&_0x550a87[_0x140e('0x9b')]['length']?results[0x2][_0x140e('0xac')]:results[0x0][_0x140e('0xac')];socket[_0x140e('0x96')](_0x140e('0x97')+_0xb39bc,stats);fs[_0x140e('0xad')](_0xbf0cfe);fs['unlink'](_0x27cf69);process['exit'](0x0);})[_0x140e('0x6a')](function(_0x2619fc){logger[_0x140e('0x5f')](_0x2619fc[_0x140e('0x59')]);process[_0x140e('0x5a')](0x1);});});});})['catch'](function(_0x9ed690){logger[_0x140e('0x5f')](_0x9ed690['message']);process[_0x140e('0x5a')](0x1);});});});});}catch(_0x1f8839){logger['error'](_0x140e('0xae'),_0x1f8839[_0x140e('0x59')]);process[_0x140e('0x5a')](0x1);}},'error':function(_0x4f8e7c,_0x7c9c61,_0x2bf94e,_0x2a2142){throw new Error(_0x2a2142);}});});}function validate(){if(process[_0x140e('0xaf')]&&process['argv'][_0x140e('0x17')]<0x4){throw new Error(_0x140e('0xb0'));}var _0x1fd234=path['join'](config[_0x140e('0x76')],_0x140e('0xb1'),process[_0x140e('0xaf')][0x2]);if(!fs[_0x140e('0xb2')](_0x1fd234)){throw new Error(_0x140e('0xb3'));}var _0x452634={};try{_0x452634=JSON['parse'](process['argv'][0x3]);if(!_0x452634[_0x140e('0x73')]){throw new Error(_0x140e('0xb4'));}if(!_0x452634[_0x140e('0x73')]['phone']){throw new Error(_0x140e('0xb5'));}if(!_0x452634[_0x140e('0x73')]['firstName']){throw new Error(_0x140e('0xb6'));}var _0x47ebad=0x0;if(_0x452634['binding'][_0x140e('0x2f')]){_0x47ebad=0x1;}if(!_0x452634[_0x140e('0x2d')]){throw new Error(_0x140e('0xb7'));}}catch(_0x17142c){throw new Error('body\x20id\x20mandatory');}var _0x5db9e4=[];try{_0x5db9e4=_[_0x140e('0xb8')](JSON[_0x140e('0x7e')](process[_0x140e('0xaf')][0x4]),'id');}catch(_0x27e967){logger['info'](_0x140e('0xb9'));}main(_0x1fd234,_0x452634,_0x5db9e4,_0x47ebad);}validate();process['on'](_0x140e('0xba'),handleStop);process['on'](_0x140e('0xbb'),handleUncaughtException);
\ No newline at end of file
+var _0xed65=['phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','CmContact','findAll','AdditionalPhones','then','push','all','split','length','isNil','filter','CmContactHasItem','update','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','from','cm_contacts','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','into','cm_hopper_black','ContactId','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','ListId\x20=\x20?','.offset-cm_contacts.utcOffset\x20minute)','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues_has_cm_lists.CmListId=','query','dialTimezone','utcOffset','set','offset','main','send','start','binding','clone','root','server/files/tmp','header','ContactItemType','name','_description','parse','data','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','includes','email','email\x20wrong\x20format','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','timezones','firstName','itemTypeId','description','appendFileSync','rows','emit','Abort\x20parser','abort','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','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','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','moment','ioredis','../../../config/environment/shared','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field'];(function(_0x35b9e6,_0x55f654){var _0x55e8cd=function(_0x4fd81c){while(--_0x4fd81c){_0x35b9e6['push'](_0x35b9e6['shift']());}};_0x55e8cd(++_0x55f654);}(_0xed65,0xa1));var _0x5ed6=function(_0x381a28,_0x4eb359){_0x381a28=_0x381a28-0x0;var _0x5e572d=_0xed65[_0x381a28];return _0x5e572d;};'use strict';var fs=require('fs');var path=require(_0x5ed6('0x0'));var _=require(_0x5ed6('0x1'));var Papa=require(_0x5ed6('0x2'));var util=require(_0x5ed6('0x3'));var BPromise=require('bluebird');var moment=require(_0x5ed6('0x4'));var squel=require('squel');var Redis=require(_0x5ed6('0x5'));var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var shared=require(_0x5ed6('0x6'));var logger=require('../../../config/logger')(_0x5ed6('0x7'));config[_0x5ed6('0x8')]=_[_0x5ed6('0x9')](config[_0x5ed6('0x8')],{'host':_0x5ed6('0xa'),'port':0x18eb});var socket=require(_0x5ed6('0xb'))(new Redis(config[_0x5ed6('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x5ed6('0xc')]('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x5ed6('0xc')](_0x5ed6('0xd'));function isEmail(_0x202071){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))*$/[_0x5ed6('0xe')](_0x202071);}function selectNotIn(_0x29963c,_0x37466f,_0x2101ed,_0x34e2d6,_0x2a88d4){return squel[_0x5ed6('0xf')]()[_0x5ed6('0x10')](_0x5ed6('0x11'))['from'](_0x34e2d6)[_0x5ed6('0x12')](_0x37466f,null,_0x37466f+_0x5ed6('0x13')+_0x34e2d6+'.'+_0x2101ed)[_0x5ed6('0x14')](_0x34e2d6+'.'+_0x2101ed+_0x5ed6('0x15')+_0x29963c+'.'+_0x2101ed)[_0x5ed6('0x14')](_0x37466f+_0x5ed6('0x16')+_0x2a88d4[_0x5ed6('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x31e43f,_0x37eee4){promisesAdditionalPhones=[];return db[_0x5ed6('0x17')][_0x5ed6('0x18')]({'raw':!![],'attributes':['id',_0x5ed6('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x5ed6('0x1a')](function(_0x3637e7){if(_0x3637e7!==null){var _0x385ac4=[];for(var _0x25cdcc=0x0;_0x25cdcc<_0x3637e7['length'];_0x25cdcc++){var _0x676869=_0x3637e7[_0x25cdcc];_0x385ac4[_0x5ed6('0x1b')](insertAdditionalPhones(_0x676869));}}Promise[_0x5ed6('0x1c')](_0x385ac4)[_0x5ed6('0x1a')](function(){_0x31e43f({'val':0x1});});});});}function insertAdditionalPhones(_0x22d7d2){return new Promise(function(_0x369299,_0x442513){var _0x474bd8=_0x22d7d2['AdditionalPhones'];var _0x4219c9=_0x474bd8[_0x5ed6('0x1d')](';');var _0x1bbad6=[];orderBy=0x0;for(var _0xe4a883=0x0;_0xe4a883<_0x4219c9[_0x5ed6('0x1e')];_0xe4a883++){_0x1bbad6[_0x5ed6('0x1b')](splitAdditionalPhone(_0x22d7d2['id'],_0x4219c9[_0xe4a883]));}Promise[_0x5ed6('0x1c')](_0x1bbad6)['then'](function(){_0x369299({'val':_0x4219c9[_0x5ed6('0x1e')]});});});}function splitAdditionalPhone(_0x40a2f2,_0x3330c9){return new Promise(function(_0x183a4,_0xe62ffb){var _0x11e2ae=_0x3330c9[_0x5ed6('0x1d')](':');var _0x24ad7f=_0x11e2ae[0x0];var _0x4077c5=_0x11e2ae[0x1];if(!_[_0x5ed6('0x1f')](_0x4077c5)){var _0x4f0a01=_0x4077c5[_0x5ed6('0x1d')]('|');var _0x4ecc04=[];for(var _0x1ff651=0x0;_0x1ff651<_0x4f0a01[_0x5ed6('0x1e')];_0x1ff651++){if(_0x4f0a01[_0x1ff651]!==''){var _0x42c53a=_[_0x5ed6('0x20')](promisesAdditionalPhones,{'contactId':_0x40a2f2,'phone':_0x4f0a01[_0x1ff651]});if(_0x42c53a['length']==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x40a2f2,'contactTypeId':_0x24ad7f,'phone':_0x4f0a01[_0x1ff651],'orderBy':orderBy});}}}_0x183a4({'ok':0x1});}else _0x183a4({'res':0x0});});}function createAdditionalPhone(_0x300d07,_0x59028a,_0x4b1dc2,_0x4d3a88){var _0x40b18f='';var _0x56de18='';var _0x5ca7c9=_0x4b1dc2[_0x5ed6('0x1d')]('§');_0x40b18f=_0x5ca7c9[0x0];if(_0x5ca7c9[_0x5ed6('0x1e')]==0x2)_0x56de18=_0x5ca7c9[0x1];return new Promise(function(_0xaeb439,_0x33bf07){return db[_0x5ed6('0x21')]['findOne']({'where':{'CmContactId':_0x300d07,'item':_0x40b18f}})[_0x5ed6('0x1a')](function(_0x1dd2f5){if(_0x1dd2f5){return db[_0x5ed6('0x21')][_0x5ed6('0x22')]({'ItemTypeId':_0x59028a,'description':_0x56de18,'OrderBy':_0x4d3a88},{'where':{'CmContactId':_0x300d07,'item':_0x40b18f}})[_0x5ed6('0x1a')](function(_0x1be45a){_0xaeb439({'res':'updated'});});}else{return db[_0x5ed6('0x21')]['create']({'CmContactId':_0x300d07,'item':_0x40b18f,'description':_0x56de18,'ItemTypeId':_0x59028a,'OrderBy':_0x4d3a88,'ItemClass':'PHONE'})[_0x5ed6('0x1a')](function(_0xb9b7ea){_0xaeb439({'res':'inserted'});});}});});}function insertCmHopper(_0x380280,_0x46ee1a,_0x1b03d0,_0x4054fc,_0x1ee865){var _0x1c1048=[_0x5ed6('0x23'),'cm_contacts.scheduledat',_0x5ed6('0x24'),_0x5ed6('0x25'),_0x46ee1a+'.'+_0x4054fc,_0x5ed6('0x26'),_0x5ed6('0x27'),_0x5ed6('0x28'),_0x5ed6('0x29'),'\x22'+_0x1ee865+'\x22'];return squel[_0x5ed6('0x2a')]()['into'](_0x5ed6('0x2b'))[_0x5ed6('0x2c')]([_0x5ed6('0x11'),_0x5ed6('0x2d'),'ContactId',_0x5ed6('0x2e'),_0x4054fc,_0x5ed6('0x2f'),_0x5ed6('0x30'),_0x5ed6('0x31'),_0x5ed6('0x32'),_0x5ed6('0x33')],squel[_0x5ed6('0xf')]()['fields'](_0x1c1048)[_0x5ed6('0x34')](_0x46ee1a)['join'](_0x5ed6('0x35'),null,'cm_contacts.ListId\x20=\x20'+_0x46ee1a+'.CmListId')[_0x5ed6('0x12')](_0x1b03d0,null,_0x1b03d0+'.id\x20=\x20'+_0x46ee1a+'.'+_0x4054fc)[_0x5ed6('0x14')](_0x46ee1a+'.CmListId\x20=\x20?',_0x380280)[_0x5ed6('0x14')](_0x5ed6('0x36'),NOW)['where'](_0x5ed6('0x37'),selectNotIn(_0x46ee1a,_0x1b03d0,_0x4054fc,_0x5ed6('0x2b'),[_0x5ed6('0x38'),_0x5ed6('0x39')]))[_0x5ed6('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x46ee1a,_0x1b03d0,_0x4054fc,_0x5ed6('0x2b'),[_0x5ed6('0x38')])))[_0x5ed6('0x3a')]();}function insertCmHopperBlack(_0x438668,_0x2e0c38,_0x56a224,_0x286357){var _0xef94b0=['cm_contacts.phone',_0x5ed6('0x24'),_0x5ed6('0x25'),_0x2e0c38+'.'+_0x286357,'cm_contacts.createdAt',_0x5ed6('0x27')];return squel['insert']()[_0x5ed6('0x3b')](_0x5ed6('0x3c'))[_0x5ed6('0x2c')]([_0x5ed6('0x11'),_0x5ed6('0x3d'),_0x5ed6('0x2e'),_0x286357,'createdAt',_0x5ed6('0x30')],squel[_0x5ed6('0xf')]()[_0x5ed6('0x3e')](_0xef94b0)['from'](_0x2e0c38)[_0x5ed6('0x12')]('cm_contacts',null,_0x5ed6('0x3f')+_0x2e0c38+_0x5ed6('0x40'))[_0x5ed6('0x12')](_0x56a224,null,_0x56a224+_0x5ed6('0x13')+_0x2e0c38+'.'+_0x286357)[_0x5ed6('0x14')](_0x2e0c38+_0x5ed6('0x41'),_0x438668)[_0x5ed6('0x14')](_0x5ed6('0x36'),NOW)[_0x5ed6('0x14')](_0x5ed6('0x37'),squel['select']()[_0x5ed6('0x10')](_0x5ed6('0x11'))['from'](_0x5ed6('0x3c'))[_0x5ed6('0x14')](_0x5ed6('0x42'),_0x438668)[_0x5ed6('0x14')](_0x286357+_0x5ed6('0x15')+_0x2e0c38+'.'+_0x286357)))[_0x5ed6('0x3a')]();}function insertTzCmHopper(_0xe5e88d,_0x2d54a1,_0x882eda,_0x403e26,_0x22f622,_0x3050ce){var _0x1d620c=[_0x5ed6('0x23'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x3050ce+_0x5ed6('0x43'),'cm_contacts.id',_0x5ed6('0x25'),_0x2d54a1+'.'+_0x403e26,'cm_contacts.createdAt',_0x5ed6('0x27'),_0x5ed6('0x28'),_0x5ed6('0x29'),'\x22'+_0x22f622+'\x22'];var _0x3624d2=squel[_0x5ed6('0x2a')]()[_0x5ed6('0x3b')](_0x5ed6('0x2b'))['fromQuery']([_0x5ed6('0x11'),_0x5ed6('0x2d'),'ContactId','ListId',_0x403e26,_0x5ed6('0x2f'),_0x5ed6('0x30'),_0x5ed6('0x31'),_0x5ed6('0x32'),'recallme'],squel[_0x5ed6('0xf')]()['fields'](_0x1d620c)[_0x5ed6('0x34')](_0x2d54a1)['join'](_0x5ed6('0x35'),null,'cm_contacts.ListId\x20=\x20'+_0x2d54a1+_0x5ed6('0x40'))[_0x5ed6('0x12')](_0x882eda,null,_0x882eda+'.id\x20=\x20'+_0x2d54a1+'.'+_0x403e26)[_0x5ed6('0x12')](_0x3050ce,null,_0x3050ce+'.id\x20=\x20'+_0x2d54a1+'.'+_0x403e26)[_0x5ed6('0x14')](_0x2d54a1+_0x5ed6('0x41'),_0xe5e88d)[_0x5ed6('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x5ed6('0x37'),selectNotIn(_0x2d54a1,_0x882eda,_0x403e26,_0x5ed6('0x2b'),[_0x5ed6('0x38'),'\x22onlyIfOpen\x22']))[_0x5ed6('0x14')](_0x5ed6('0x37'),selectNotIn(_0x2d54a1,_0x882eda,_0x403e26,'cm_hopper',['\x22always\x22'])))[_0x5ed6('0x3a')]();return _0x3624d2;}function insertTzCmHopperBlack(_0x5e5352,_0x50d458,_0x407400,_0x37ba4f){var _0x586e22=['cm_contacts.phone',_0x5ed6('0x24'),_0x5ed6('0x25'),_0x50d458+'.'+_0x37ba4f,_0x5ed6('0x26'),_0x5ed6('0x27')];return squel[_0x5ed6('0x2a')]()['into'](_0x5ed6('0x3c'))[_0x5ed6('0x2c')]([_0x5ed6('0x11'),_0x5ed6('0x3d'),_0x5ed6('0x2e'),_0x37ba4f,_0x5ed6('0x2f'),_0x5ed6('0x30')],squel[_0x5ed6('0xf')]()[_0x5ed6('0x3e')](_0x586e22)['from'](_0x50d458)[_0x5ed6('0x12')](_0x5ed6('0x35'),null,_0x5ed6('0x3f')+_0x50d458+_0x5ed6('0x40'))[_0x5ed6('0x12')](_0x407400,null,_0x407400+_0x5ed6('0x13')+_0x50d458+'.'+_0x37ba4f)[_0x5ed6('0x14')](_0x50d458+_0x5ed6('0x41'),_0x5e5352)[_0x5ed6('0x14')](_0x5ed6('0x36'),NOW)[_0x5ed6('0x14')](_0x5ed6('0x37'),squel[_0x5ed6('0xf')]()[_0x5ed6('0x10')]('phone')[_0x5ed6('0x34')](_0x5ed6('0x3c'))['where']('ListId\x20=\x20?',_0x5e5352)[_0x5ed6('0x14')](_0x37ba4f+_0x5ed6('0x15')+_0x50d458+'.'+_0x37ba4f)))[_0x5ed6('0x3a')]();}function insertCmHopperAdditionalPhones(_0x566feb){var _0x12558e=[_0x5ed6('0x44'),_0x5ed6('0x45'),_0x5ed6('0x46'),_0x5ed6('0x47'),'cm_contact_has_items.updatedAt'];return squel[_0x5ed6('0x2a')]()['into'](_0x5ed6('0x48'))['fromQuery']([_0x5ed6('0x49'),_0x5ed6('0x11'),_0x5ed6('0x4a'),_0x5ed6('0x2f'),_0x5ed6('0x30')],squel['select']()[_0x5ed6('0x3e')](_0x12558e)['from'](_0x5ed6('0x2b'))[_0x5ed6('0x12')](_0x5ed6('0x35'),null,_0x5ed6('0x4b'))[_0x5ed6('0x12')](_0x5ed6('0x4c'),null,_0x5ed6('0x4d'))[_0x5ed6('0x14')](_0x5ed6('0x4e'),_0x566feb)[_0x5ed6('0x14')](_0x5ed6('0x36'),NOW))[_0x5ed6('0x3a')]();}function insertCmContact(_0x2da011,_0x18098c,_0xe07220,_0x54f147){var _0x4851dc=_[_0x5ed6('0x4f')](_[_0x5ed6('0x50')](_0x54f147),[_0x5ed6('0x2e'),_0x5ed6('0x51'),_0x5ed6('0x2f'),_0x5ed6('0x30')]);return squel['insert']()[_0x5ed6('0x3b')]('cm_contacts')[_0x5ed6('0x2c')](_0x4851dc,squel['select']()[_0x5ed6('0x3e')](_0x4851dc)['from'](_0x18098c)[_0x5ed6('0x14')]('('+_0xe07220['join'](',')+_0x5ed6('0x52'),squel[_0x5ed6('0xf')]()[_0x5ed6('0x3e')](_0xe07220)[_0x5ed6('0x34')](_0x5ed6('0x35'))[_0x5ed6('0x14')](_0x5ed6('0x42'),_0x2da011)[_0x5ed6('0x14')](_0x5ed6('0x53')))[_0x5ed6('0x14')](_0x5ed6('0x54'),squel[_0x5ed6('0xf')]()[_0x5ed6('0x10')]('MIN(id)',_0x5ed6('0x55'))[_0x5ed6('0x34')](_0x18098c)['group'](_0xe07220[_0x5ed6('0x12')](','))))['toString']();}function handleStop(){logger[_0x5ed6('0x56')](_0x5ed6('0x57'));stopped=!![];}function handleUncaughtException(_0x500d8a){logger[_0x5ed6('0x58')](_0x500d8a[_0x5ed6('0x59')]);process[_0x5ed6('0x5a')](0x1);}function handleError(_0x10fe80,_0x40256c){stats[_0x5ed6('0x5b')]['push']({'name':_0x40256c[_0x5ed6('0x5c')],'message':_0x40256c['message'],'row':_0x10fe80});}function handleQuery(_0xd0355b){logger[_0x5ed6('0x56')](_0xd0355b);return db[_0x5ed6('0x5d')]['query'](_0xd0355b)[_0x5ed6('0x5e')](function(_0x467836){results['push'](_0x467836);})[_0x5ed6('0x5f')](function(_0x1e867d){logger['error'](_0x1e867d[_0x5ed6('0x59')]);});}function updateTzCampaigns(_0x35a240){return new Promise(function(_0x534b4b,_0x51dbdb){var _0x8f8707=squel['select']()[_0x5ed6('0x3e')]([_0x5ed6('0x60'),_0x5ed6('0x61')])['from'](_0x5ed6('0x62'))[_0x5ed6('0x12')](_0x5ed6('0x63'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x5ed6('0x14')](_0x5ed6('0x64')+_0x35a240);db[_0x5ed6('0x5d')]['query'](_0x8f8707[_0x5ed6('0x3a')]())['spread'](function(_0x13f462){var _0x43f9ce=[];for(var _0x26fff2=0x0;_0x26fff2<_0x13f462[_0x5ed6('0x1e')];_0x26fff2++){_0x43f9ce['push'](getTimezoneData(_0x13f462[_0x26fff2],tmp_campaigns));}BPromise['all'](_0x43f9ce)[_0x5ed6('0x1a')](function(){_0x534b4b({'val':0x1});});})['catch'](function(_0x401403){logger[_0x5ed6('0x58')](_0x401403['message']);_0x534b4b({'val':0x0});});});}function updateTzVoiceQueues(_0x22ebb5){return new Promise(function(_0x56650c,_0x49d4ab){var _0x13e611=squel[_0x5ed6('0xf')]()[_0x5ed6('0x3e')]([_0x5ed6('0x65'),_0x5ed6('0x66')])[_0x5ed6('0x34')](_0x5ed6('0x67'))['join'](_0x5ed6('0x68'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x5ed6('0x14')](_0x5ed6('0x69')+_0x22ebb5);db[_0x5ed6('0x5d')][_0x5ed6('0x6a')](_0x13e611[_0x5ed6('0x3a')]())['spread'](function(_0x48861b){var _0x5454da=[];for(var _0x31348c=0x0;_0x31348c<_0x48861b['length'];_0x31348c++){_0x5454da[_0x5ed6('0x1b')](getTimezoneData(_0x48861b[_0x31348c],tmp_voice_queues));}BPromise[_0x5ed6('0x1c')](_0x5454da)[_0x5ed6('0x1a')](function(){_0x56650c({'val':0x1});});})[_0x5ed6('0x5f')](function(_0x23e43a){logger['error'](_0x23e43a[_0x5ed6('0x59')]);_0x56650c({'val':0x0});});});}function getTimezoneData(_0x5d5c85,_0x184551){return new Promise(function(_0x33c5b9,_0x325b6b){var _0x5a4642=shared['timezones'];var _0xff090a=_0x5a4642[_0x5d5c85[_0x5ed6('0x6b')]];if(_[_0x5ed6('0x1f')](_0xff090a)){_0x33c5b9({'ret':0x1});}else{var _0x5f35ce=_0xff090a[_0x5ed6('0x6c')];var _0x356fc8=squel['insert']()['into'](_0x184551)[_0x5ed6('0x6d')]('id',_0x5d5c85['id'])['set'](_0x5ed6('0x6e'),_0x5f35ce)[_0x5ed6('0x6d')](_0x5ed6('0x6b'),_0x5d5c85[_0x5ed6('0x6b')])['toString']();return db[_0x5ed6('0x5d')][_0x5ed6('0x6a')](_0x356fc8)[_0x5ed6('0x5e')](function(_0x273160){_0x33c5b9({'ret':0x1});})[_0x5ed6('0x5f')](function(_0x162267){logger[_0x5ed6('0x58')](_0x162267['message']);_0x325b6b({'ret':0x1});});}});}function handleTZQuery(_0x4f32b0){logger[_0x5ed6('0x56')](_0x4f32b0);return db[_0x5ed6('0x5d')][_0x5ed6('0x6a')](_0x4f32b0)[_0x5ed6('0x5e')](function(_0x286266){})[_0x5ed6('0x5f')](function(_0x462b07){logger[_0x5ed6('0x58')](_0x462b07['message']);});}function main(_0x47c7df,_0x242174,_0x120ec4,_0xe91467){logger[_0x5ed6('0x56')](_0x5ed6('0x6f'),_0x47c7df,JSON['stringify'](_0x242174));process[_0x5ed6('0x70')](_0x5ed6('0x71'));var _0x1566eb=_0x242174[_0x5ed6('0x72')];var _0x42891f=_[_0x5ed6('0x73')](_0x1566eb);var _0x3485ca=_0x242174['socket_timestamp'];var _0x5e724f=path[_0x5ed6('0x12')](config[_0x5ed6('0x74')],_0x5ed6('0x75'),_0x3485ca+'.csv');hasTZ=_[_0x5ed6('0x50')](_0x1566eb)['includes'](_0x5ed6('0x6b'));var _0x1e5077=_[_0x5ed6('0x50')](_0x1566eb)[_0x5ed6('0x12')]();logger[_0x5ed6('0x56')](_0x5ed6('0x76'),_0x1e5077);db[_0x5ed6('0x77')]['findAll']({'raw':!![],'attributes':['id',_0x5ed6('0x78')]})['then'](function(_0x351400){for(var _0x2a2922=0x0;_0x2a2922<_0x351400['length'];_0x2a2922++){if(_0x351400[_0x2a2922]['name']in _0x1566eb){contactItemTypes[_0x5ed6('0x1b')](_0x351400[_0x2a2922]);delete _0x42891f[_0x351400[_0x2a2922]['name']];hasAdditionalPhones=!![];}for(var _0x5d657a in _0x1566eb){if(_0x351400[_0x2a2922][_0x5ed6('0x78')]+_0x5ed6('0x79')===_0x5d657a){phoneDescriptions[_0x5ed6('0x1b')]({'itemTypeId':_0x351400[_0x2a2922]['id'],'description':_0x5d657a});delete _0x42891f[_0x5d657a];}}}if(hasAdditionalPhones)_0x42891f[_0x5ed6('0x19')]='';var _0x3361d9=_[_0x5ed6('0x50')](_0x42891f)[_0x5ed6('0x12')]();logger['info'](_0x5ed6('0x76'),_0x3361d9);fs['writeFileSync'](_0x5e724f,_0x3361d9+'\x0a');Papa[_0x5ed6('0x7a')](fs['createReadStream'](_0x47c7df),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4f64c0,_0x4905a1){try{for(var _0x2621c2=0x0,_0x5db3b7=[];_0x2621c2<_0x4f64c0[_0x5ed6('0x7b')][_0x5ed6('0x1e')];_0x2621c2++){stats['rows']+=0x1;if(_0x4f64c0['errors'][_0x2621c2]){handleError(_0x4f64c0[_0x5ed6('0x7b')][_0x2621c2],_0x4f64c0[_0x5ed6('0x5b')][_0x2621c2]);}else{var _0x1ad6e3=[];var _0xa1cacc=[];var _0x3e2c6f={};for(var _0x30d4d1 in _0x1566eb){let _0x3333d5=contactItemTypes[_0x5ed6('0x7c')](_0xfee13c=>_0xfee13c[_0x5ed6('0x78')]===_0x30d4d1);let _0x36eb7b=contactItemTypes[_0x5ed6('0x7c')](_0x598c43=>_0x598c43[_0x5ed6('0x78')]+_0x5ed6('0x79')===_0x30d4d1);if(_[_0x5ed6('0x1f')](_0x3333d5)&&_[_0x5ed6('0x1f')](_0x36eb7b)){if(_0x1566eb[_0x5ed6('0x7d')](_0x30d4d1)){if(_0x4f64c0[_0x5ed6('0x7b')][_0x2621c2][_0x1566eb[_0x30d4d1]]){var _0x5354f8=_[_0x5ed6('0x7e')](_0x4f64c0['data'][_0x2621c2][_0x1566eb[_0x30d4d1]][_0x5ed6('0x7f')](/"/g,'\x27'));switch(_0x30d4d1){case'scheduledat':var _0x58b2f8=moment(_0x5354f8,_0x5ed6('0xd'),!![]);if(_0x58b2f8[_0x5ed6('0x80')]()){_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x5354f8+'\x22');}else{_0x1ad6e3[_0x5ed6('0x1b')](_0x5ed6('0x81'));}break;case _0x5ed6('0x31'):var _0x348f4e=parseInt(_0x5354f8);_0x5354f8=_['isNaN'](_0x348f4e)||_0x348f4e<0x0||_0x348f4e>0x4?_0xe91467?0x3:0x2:_0x348f4e;_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x5354f8+'\x22');break;case _0x5ed6('0x32'):var _0x3ab42f=parseInt(_0x5354f8);if(_[_0x5ed6('0x82')](_0x3ab42f)&&_[_0x5ed6('0x83')](_0x120ec4,_0x3ab42f)){_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x3ab42f+'\x22');}else{_0x1ad6e3[_0x5ed6('0x1b')]('agent\x20not\x20exists');}break;case _0x5ed6('0x84'):if(isEmail(_0x5354f8)){_0x5db3b7['push']('\x22'+_0x5354f8+'\x22');}else{_0x1ad6e3['push'](_0x5ed6('0x85'));}break;case'dateOfBirth':var _0x1412b0=moment(_0x5354f8,_0x5ed6('0x86'),!![]);if(_0x1412b0[_0x5ed6('0x80')]()){_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x5354f8+'\x22');}else{_0x1ad6e3[_0x5ed6('0x1b')](_0x5ed6('0x87'));}break;case _0x5ed6('0x6b'):var _0x11223b=shared[_0x5ed6('0x88')];var _0x471479=_0x11223b[_0x5354f8];if(!_[_0x5ed6('0x1f')](_0x471479)){var _0x5b6445=_0x471479[_0x5ed6('0x6c')];_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x5354f8+'\x22');_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0x5b6445+'\x22');}break;default:_0x5db3b7['push']('\x22'+_0x5354f8+'\x22');}}else{switch(_0x30d4d1){case _0x5ed6('0x89'):case _0x5ed6('0x11'):_0x1ad6e3[_0x5ed6('0x1b')](_0x30d4d1+'\x20not\x20specified');break;default:_0x5db3b7[_0x5ed6('0x1b')]('\x22\x22');}}}}else{var _0x4b11dd='';if(!_[_0x5ed6('0x1f')](_0x3333d5)){if(!_0x3e2c6f[_0x5ed6('0x7d')](_0x3333d5['id'])){if(!_[_0x5ed6('0x1f')](_0x4f64c0['data'][_0x2621c2][_0x1566eb[_0x30d4d1]])){var _0x5354f8=_[_0x5ed6('0x7e')](_0x4f64c0[_0x5ed6('0x7b')][_0x2621c2][_0x1566eb[_0x30d4d1]][_0x5ed6('0x7f')](/"/g,'\x27'));var _0x478245=phoneDescriptions[_0x5ed6('0x7c')](_0x56c6e9=>_0x56c6e9[_0x5ed6('0x8a')]===_0x3333d5['id']);if(!_['isNil'](_0x478245)){var _0x423ebf=_[_0x5ed6('0x7e')](_0x4f64c0['data'][_0x2621c2][_0x1566eb[_0x478245[_0x5ed6('0x8b')]]]['replace'](/"/g,'\x27'));if(!_[_0x5ed6('0x1f')](_0x423ebf))_0x5354f8=_0x5354f8+'§'+_0x423ebf;}if(_0x4b11dd=='')_0x4b11dd=_0x5354f8;else _0x4b11dd+='|'+_0x5354f8;}_0xa1cacc['push'](_0x3333d5['id']+':'+_0x4b11dd);_0x3e2c6f[_0x3333d5['id']]=0x1;}}}}if(hasAdditionalPhones){_0x5db3b7[_0x5ed6('0x1b')]('\x22'+_0xa1cacc[_0x5ed6('0x12')](';')+'\x22');}if(_0x1ad6e3[_0x5ed6('0x1e')]){handleError(_0x4f64c0['data'][_0x2621c2],{'code':'SystemRow','message':_0x1ad6e3[_0x5ed6('0x12')]()});}else{fs[_0x5ed6('0x8c')](_0x5e724f,_0x5db3b7[_0x5ed6('0x12')]()+'\x0a');}_0x5db3b7=[];}if(!(stats[_0x5ed6('0x8d')]%0xc8)){socket[_0x5ed6('0x8e')]('contact:import:'+_0x3485ca,stats);stats[_0x5ed6('0x5b')]=[];}}if(stopped){logger[_0x5ed6('0x56')](_0x5ed6('0x8f'));_0x4905a1[_0x5ed6('0x90')]();}}catch(_0x3b1bf1){handleError(_0x4f64c0[_0x5ed6('0x7b')][_0x2621c2],{'code':'SystemError','message':_0x3b1bf1[_0x5ed6('0x59')]});logger[_0x5ed6('0x58')](_0x5ed6('0x91'),_0x3b1bf1['message']);}},'complete':function(){try{var _0x20c00e=[];var _0x12798e=[];var _0x4b8645=_0x5ed6('0x35');if(_0x242174[_0x5ed6('0x92')]&&_0x242174[_0x5ed6('0x92')]['length']){_0x4b8645='cm_contacts_'+_0x3485ca;_0x20c00e[_0x5ed6('0x1b')](_0x5ed6('0x93')+_0x4b8645+_0x5ed6('0x94'));}tmp_campaigns=_0x5ed6('0x95')+_0x3485ca;tmp_voice_queues=_0x5ed6('0x96')+_0x3485ca;_0x12798e[_0x5ed6('0x1b')](_0x5ed6('0x93')+tmp_campaigns+_0x5ed6('0x97'));_0x12798e['push'](_0x5ed6('0x93')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise['each'](_0x12798e,handleTZQuery)['then'](function(_0x360a9b){updateTzCampaigns(_0x242174[_0x5ed6('0x2e')])[_0x5ed6('0x1a')](function(_0x1433a4){updateTzVoiceQueues(_0x242174[_0x5ed6('0x2e')])[_0x5ed6('0x1a')](function(_0xec5827){if(hasTZ)_0x3361d9=_0x3361d9[_0x5ed6('0x7f')](_0x5ed6('0x6b'),'dialTimezone,utcOffset');var _0x58e90a=util[_0x5ed6('0xc')](_0x5ed6('0x98'),_0x5e724f,_0x4b8645,_0x3361d9,_0x242174['ListId'],_0x242174['CompanyId']||null,NOW,NOW);if(_[_0x5ed6('0x1f')](_0x1566eb['scheduledat'])){_0x58e90a+=_0x5ed6('0x99');}_0x20c00e[_0x5ed6('0x1b')](_0x58e90a);if(_0x242174[_0x5ed6('0x92')]&&_0x242174['duplicates']['length']){_0x20c00e[_0x5ed6('0x1b')](insertCmContact(_0x242174[_0x5ed6('0x2e')],_0x4b8645,_0x242174[_0x5ed6('0x92')],_0x1566eb));_0x20c00e[_0x5ed6('0x1b')](_0x5ed6('0x9a')+_0x4b8645+';');}BPromise['each'](_0x20c00e,handleQuery)[_0x5ed6('0x1a')](function(_0x4978b6){BPromise[_0x5ed6('0x1c')]([handleAdditionalPhones()])[_0x5ed6('0x1a')](function(){_0x20c00e=[];for(var _0x42b6f4=0x0;_0x42b6f4<promisesAdditionalPhones[_0x5ed6('0x1e')];_0x42b6f4++){if(promisesAdditionalPhones[_0x42b6f4]['phone']!='§'){_0x20c00e[_0x5ed6('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x42b6f4][_0x5ed6('0x9b')],promisesAdditionalPhones[_0x42b6f4][_0x5ed6('0x9c')],promisesAdditionalPhones[_0x42b6f4][_0x5ed6('0x11')],promisesAdditionalPhones[_0x42b6f4][_0x5ed6('0x9d')]));}}BPromise[_0x5ed6('0x1c')](_0x20c00e)[_0x5ed6('0x1a')](function(){_0x20c00e=[];if(hasTZ){_0x20c00e[_0x5ed6('0x1b')](insertTzCmHopper(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x68'),_0x5ed6('0x67'),_0x5ed6('0x9e'),_0xe91467,tmp_voice_queues));_0x20c00e[_0x5ed6('0x1b')](insertTzCmHopperBlack(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x9f'),_0x5ed6('0x67'),_0x5ed6('0x9e')));_0x20c00e['push'](insertTzCmHopper(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x63'),_0x5ed6('0x62'),_0x5ed6('0xa0'),_0xe91467,tmp_campaigns));_0x20c00e[_0x5ed6('0x1b')](insertTzCmHopperBlack(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0xa1'),_0x5ed6('0x62'),_0x5ed6('0xa0')));_0x20c00e[_0x5ed6('0x1b')](insertCmHopperAdditionalPhones(_0x242174[_0x5ed6('0x2e')]));}else{_0x20c00e[_0x5ed6('0x1b')](insertCmHopper(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x68'),'voice_queues',_0x5ed6('0x9e'),_0xe91467));_0x20c00e[_0x5ed6('0x1b')](insertCmHopperBlack(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x9f'),_0x5ed6('0x67'),_0x5ed6('0x9e')));_0x20c00e[_0x5ed6('0x1b')](insertCmHopper(_0x242174[_0x5ed6('0x2e')],_0x5ed6('0x63'),_0x5ed6('0x62'),_0x5ed6('0xa0'),_0xe91467));_0x20c00e['push'](insertCmHopperBlack(_0x242174['ListId'],'campaigns_has_cm_blacklists',_0x5ed6('0x62'),'CampaignId'));_0x20c00e[_0x5ed6('0x1b')](insertCmHopperAdditionalPhones(_0x242174[_0x5ed6('0x2e')]));}_0x20c00e[_0x5ed6('0x1b')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x20c00e['push'](_0x5ed6('0x9a')+tmp_voice_queues+';');BPromise['each'](_0x20c00e,handleQuery)[_0x5ed6('0x1a')](function(_0x44a2ee){stats[_0x5ed6('0xa2')]=!![];stats['affectedRows']=_0x242174[_0x5ed6('0x92')]&&_0x242174[_0x5ed6('0x92')]['length']?results[0x2][_0x5ed6('0xa3')]:results[0x0]['affectedRows'];socket[_0x5ed6('0x8e')]('contact:import:'+_0x3485ca,stats);fs[_0x5ed6('0xa4')](_0x47c7df);fs[_0x5ed6('0xa4')](_0x5e724f);process[_0x5ed6('0x5a')](0x0);})[_0x5ed6('0x5f')](function(_0x1f50b0){logger['error'](_0x1f50b0['message']);process['exit'](0x1);});});});})[_0x5ed6('0x5f')](function(_0x88ab9a){logger[_0x5ed6('0x58')](_0x88ab9a[_0x5ed6('0x59')]);process[_0x5ed6('0x5a')](0x1);});});});});}catch(_0x461990){logger[_0x5ed6('0x58')](_0x5ed6('0xa5'),_0x461990[_0x5ed6('0x59')]);process['exit'](0x1);}},'error':function(_0x4c8c2c,_0x4a78f9,_0x19e9d1,_0x403238){throw new Error(_0x403238);}});});}function validate(){if(process[_0x5ed6('0xa6')]&&process['argv']['length']<0x4){throw new Error(_0x5ed6('0xa7'));}var _0x3bf3d9=path[_0x5ed6('0x12')](config['root'],_0x5ed6('0x75'),process[_0x5ed6('0xa6')][0x2]);if(!fs[_0x5ed6('0xa8')](_0x3bf3d9)){throw new Error(_0x5ed6('0xa9'));}var _0x26ef06={};try{_0x26ef06=JSON[_0x5ed6('0x7a')](process[_0x5ed6('0xa6')][0x3]);if(!_0x26ef06[_0x5ed6('0x72')]){throw new Error(_0x5ed6('0xaa'));}if(!_0x26ef06[_0x5ed6('0x72')][_0x5ed6('0x11')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x26ef06[_0x5ed6('0x72')][_0x5ed6('0x89')]){throw new Error(_0x5ed6('0xab'));}var _0x4ec874=0x0;if(_0x26ef06['binding'][_0x5ed6('0x32')]){_0x4ec874=0x1;}if(!_0x26ef06[_0x5ed6('0x2e')]){throw new Error(_0x5ed6('0xac'));}}catch(_0x21d46c){throw new Error(_0x5ed6('0xad'));}var _0x11f749=[];try{_0x11f749=_[_0x5ed6('0xae')](JSON[_0x5ed6('0x7a')](process['argv'][0x4]),'id');}catch(_0xdfb977){logger[_0x5ed6('0x56')](_0x5ed6('0xaf'));}main(_0x3bf3d9,_0x26ef06,_0x11f749,_0x4ec874);}validate();process['on'](_0x5ed6('0xb0'),handleStop);process['on'](_0x5ed6('0xb1'),handleUncaughtException);
\ No newline at end of file
index af157a8..5b3a08e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9563=['arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','util','bluebird','moment','squel','../../../config/environment','import','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','test','select','field','phone','from','join','.id\x20=\x20','where','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','error','split','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','toString','cm_contacts.id','cm_hopper_black','updatedAt','cm_contacts.ListId\x20=\x20','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','group','info','Received\x20SIGINT','exit','code','main','stringify','send','start','clone','socket_timestamp','server/files/tmp','.csv','body','findAll','name','keys','parse','createReadStream','data','errors','find','_description','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','YYYY-MM-DD','firstName','hasOwnProperty','replace','SystemRow','appendFileSync','rows','emit','Abort\x20parser','abort','SystemError','message','step','CREATE\x20TABLE\x20','CIS\x20len','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','finish','contact:import:','unlink','argv'];(function(_0x1c58ef,_0xcba064){var _0x1a1714=function(_0x1efd2f){while(--_0x1efd2f){_0x1c58ef['push'](_0x1c58ef['shift']());}};_0x1a1714(++_0xcba064);}(_0x9563,0x1e7));var _0x3956=function(_0x167f00,_0x45862d){_0x167f00=_0x167f00-0x0;var _0xaac3dd=_0x9563[_0x167f00];return _0xaac3dd;};'use strict';var fs=require('fs');var path=require(_0x3956('0x0'));var _=require(_0x3956('0x1'));var Papa=require('papaparse');var util=require(_0x3956('0x2'));var BPromise=require(_0x3956('0x3'));var moment=require(_0x3956('0x4'));var squel=require(_0x3956('0x5'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0x3956('0x6'));var logger=require('../../../config/logger')(_0x3956('0x7'));config[_0x3956('0x8')]=_[_0x3956('0x9')](config[_0x3956('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x3956('0xa'))(new Redis(config[_0x3956('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x3956('0xb')](_0x3956('0xc'));var tempTableName=_0x3956('0xd')+moment()['format']('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x3cc5cc){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))*$/[_0x3956('0xe')](_0x3cc5cc);}function selectNotIn(_0x336973,_0xad495b,_0x5b65b0,_0x413a7c,_0x19019b){return squel[_0x3956('0xf')]()[_0x3956('0x10')](_0x3956('0x11'))[_0x3956('0x12')](_0x413a7c)[_0x3956('0x13')](_0xad495b,null,_0xad495b+_0x3956('0x14')+_0x413a7c+'.'+_0x5b65b0)[_0x3956('0x15')](_0x413a7c+'.'+_0x5b65b0+'\x20=\x20'+_0x336973+'.'+_0x5b65b0)['where'](_0xad495b+'.dialCheckDuplicateType\x20IN\x20('+_0x19019b[_0x3956('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x3b5eb1,_0x504512){promisesAdditionalPhones=[];promisesContact=[];return db[_0x3956('0x16')][_0x3956('0x17')](_0x3956('0x18')+tempTableName)[_0x3956('0x19')](function(_0x29b3bf){if(_0x29b3bf!==null){var _0x1fc05c=[];for(var _0x429d28=0x0;_0x429d28<_0x29b3bf[_0x3956('0x1a')];_0x429d28++){var _0x3f70e7=_0x29b3bf[_0x429d28];if(!_[_0x3956('0x1b')](_0x3f70e7[_0x3956('0x11')])){if(!_[_0x3956('0x1b')](_0x3f70e7[_0x3956('0x1c')]))_0x1fc05c[_0x3956('0x1d')](insertAdditionalPhones(_0x3f70e7));promisesContact[_0x3956('0x1d')]({'contact':_0x3f70e7});}}}Promise[_0x3956('0x1e')](_0x1fc05c)[_0x3956('0x1f')](function(){_0x3b5eb1({'val':0x1});});})[_0x3956('0x20')](function(_0x31552d){logger[_0x3956('0x21')](_0x31552d['message']);});});}function insertAdditionalPhones(_0x3be8ab){return new Promise(function(_0x401aa2,_0x5a2ba1){var _0x530d58=_0x3be8ab['AdditionalPhones'];if(_[_0x3956('0x1b')](_0x530d58))_0x5a2ba1({'val':0x0});else{var _0x25f3e4=_0x530d58['split'](';');var _0x2f9bb5=[];orderBy=0x0;for(var _0x5b2fdd=0x0;_0x5b2fdd<_0x25f3e4[_0x3956('0x1a')];_0x5b2fdd++){_0x2f9bb5['push'](splitAdditionalPhone(_0x3be8ab['id'],_0x25f3e4[_0x5b2fdd]));}Promise[_0x3956('0x1e')](_0x2f9bb5)[_0x3956('0x1f')](function(){_0x401aa2({'val':_0x25f3e4[_0x3956('0x1a')]});});}});}function splitAdditionalPhone(_0x1d9163,_0x31b849){return new Promise(function(_0x3f6c2c,_0x5e27fd){var _0x5a6339=_0x31b849[_0x3956('0x22')](':');var _0x42f61e=_0x5a6339[0x0];var _0x52edaf=_0x5a6339[0x1];if(_0x52edaf!==''){var _0x51a47c=_0x52edaf[_0x3956('0x22')]('|');var _0x358942=[];for(var _0x547337=0x0;_0x547337<_0x51a47c[_0x3956('0x1a')];_0x547337++){if(_0x51a47c[_0x547337]!==''){var _0x34c843=_[_0x3956('0x23')](promisesAdditionalPhones,{'contactId':_0x1d9163,'phone':_0x51a47c[_0x547337]});if(_0x34c843[_0x3956('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0x3956('0x1d')]({'contactId':_0x1d9163,'contactTypeId':_0x42f61e,'phone':_0x51a47c[_0x547337],'orderBy':orderBy});}}}_0x3f6c2c({'ok':0x1});}else _0x3f6c2c({'res':0x0});});}function createAdditionalPhone(_0x4389be,_0x49d309,_0x3fa582,_0x222986){var _0x2d5029='';var _0x5e680c='';var _0x10bf35=_0x3fa582[_0x3956('0x22')]('§');_0x2d5029=_0x10bf35[0x0];if(_0x10bf35[_0x3956('0x1a')]==0x2)_0x5e680c=_0x10bf35[0x1];return new Promise(function(_0x4e9a32,_0x1bc983){return db[_0x3956('0x24')][_0x3956('0x25')]({'where':{'CmContactId':_0x4389be,'item':_0x2d5029}})[_0x3956('0x1f')](function(_0xef1b56){if(_0xef1b56){return db[_0x3956('0x24')][_0x3956('0x26')]({'ItemTypeId':_0x49d309,'description':_0x5e680c,'OrderBy':_0x222986},{'where':{'CmContactId':_0x4389be,'item':_0x2d5029}})[_0x3956('0x1f')](function(_0x3c35fe){_0x4e9a32({'res':_0x3956('0x27')});});}else{return db['CmContactHasItem'][_0x3956('0x28')]({'CmContactId':_0x4389be,'item':_0x2d5029,'ItemTypeId':_0x49d309,'description':_0x5e680c,'OrderBy':_0x222986,'ItemClass':_0x3956('0x29')})['then'](function(_0x359a09){_0x4e9a32({'res':_0x3956('0x2a')});});}});});}function updateContact(_0x5d534c){return new Promise(function(_0x455ce7,_0x56372f){var _0x3ff953=_0x5d534c['id'];delete _0x5d534c['id'];return db[_0x3956('0x2b')][_0x3956('0x26')](_0x5d534c,{'where':{'id':_0x3ff953}})['then'](function(_0x4a09fc){updatedRows+=0x1;return db[_0x3956('0x2c')][_0x3956('0x26')]({'phone':_0x5d534c['phone']},{'where':{'ContactId':_0x3ff953}})[_0x3956('0x1f')](function(_0x4f2eb1){_0x455ce7({'ret':'OK'});});});});}function insertCmHopper(_0x41827d,_0x221eaf,_0x265eb5,_0x45200b,_0x35e10e){var _0x34f304=[_0x3956('0x2d'),_0x3956('0x2e'),'cm_contacts.id',_0x3956('0x2f'),_0x221eaf+'.'+_0x45200b,'cm_contacts.createdAt',_0x3956('0x30'),_0x3956('0x31'),_0x3956('0x32'),'\x22'+_0x35e10e+'\x22'];return squel[_0x3956('0x33')]()[_0x3956('0x34')](_0x3956('0x35'))[_0x3956('0x36')]([_0x3956('0x11'),_0x3956('0x37'),_0x3956('0x38'),_0x3956('0x39'),_0x45200b,_0x3956('0x3a'),'updatedAt',_0x3956('0x3b'),_0x3956('0x3c'),_0x3956('0x3d')],squel[_0x3956('0xf')]()[_0x3956('0x3e')](_0x34f304)[_0x3956('0x12')](_0x221eaf)[_0x3956('0x13')](_0x3956('0x3f'),null,'cm_contacts.ListId\x20=\x20'+_0x221eaf+_0x3956('0x40'))[_0x3956('0x13')](_0x265eb5,null,_0x265eb5+_0x3956('0x14')+_0x221eaf+'.'+_0x45200b)['where'](_0x221eaf+_0x3956('0x41'),_0x41827d)[_0x3956('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x3956('0x15')](_0x3956('0x42'),selectNotIn(_0x221eaf,_0x265eb5,_0x45200b,_0x3956('0x35'),['\x22always\x22',_0x3956('0x43')]))[_0x3956('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x221eaf,_0x265eb5,_0x45200b,'cm_hopper',[_0x3956('0x44')])))[_0x3956('0x45')]();}function insertCmHopperBlack(_0x17997c,_0x3674d3,_0x2b2491,_0x555fec){var _0xa5808f=['cm_contacts.phone',_0x3956('0x46'),_0x3956('0x2f'),_0x3674d3+'.'+_0x555fec,'cm_contacts.createdAt',_0x3956('0x30')];return squel['insert']()[_0x3956('0x34')](_0x3956('0x47'))[_0x3956('0x36')]([_0x3956('0x11'),_0x3956('0x38'),_0x3956('0x39'),_0x555fec,_0x3956('0x3a'),_0x3956('0x48')],squel[_0x3956('0xf')]()['fields'](_0xa5808f)[_0x3956('0x12')](_0x3674d3)['join'](_0x3956('0x3f'),null,_0x3956('0x49')+_0x3674d3+_0x3956('0x40'))['join'](_0x2b2491,null,_0x2b2491+'.id\x20=\x20'+_0x3674d3+'.'+_0x555fec)['where'](_0x3674d3+_0x3956('0x41'),_0x17997c)[_0x3956('0x15')](_0x3956('0x4a'),NOW)[_0x3956('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x3956('0xf')]()[_0x3956('0x10')](_0x3956('0x11'))[_0x3956('0x12')](_0x3956('0x47'))[_0x3956('0x15')](_0x3956('0x4b'),_0x17997c)[_0x3956('0x15')](_0x555fec+_0x3956('0x4c'),_0x3674d3+'.'+_0x555fec)))['toString']();}function insertCmHopperAdditionalPhones(_0x50db91){var _0x1fbf14=[_0x3956('0x4d'),_0x3956('0x4e'),_0x3956('0x4f'),'cm_contact_has_items.createdAt',_0x3956('0x50')];return squel['insert']()['into'](_0x3956('0x51'))[_0x3956('0x36')]([_0x3956('0x52'),_0x3956('0x11'),_0x3956('0x53'),_0x3956('0x3a'),'updatedAt'],squel[_0x3956('0xf')]()[_0x3956('0x3e')](_0x1fbf14)[_0x3956('0x12')]('cm_hopper')[_0x3956('0x13')](_0x3956('0x3f'),null,_0x3956('0x54'))['join'](_0x3956('0x55'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x3956('0x15')](_0x3956('0x56'),_0x50db91)[_0x3956('0x15')](_0x3956('0x4a'),NOW))['toString']();}function insertCmContact(_0x179d32,_0x37ae0d,_0xc5b32e,_0xf1dc14){var _0x1c8b3d=_[_0x3956('0x57')](_['keys'](_0xf1dc14),[_0x3956('0x39'),_0x3956('0x58'),_0x3956('0x3a'),_0x3956('0x48')]);return squel[_0x3956('0x33')]()[_0x3956('0x34')](_0x3956('0x3f'))[_0x3956('0x36')](_0x1c8b3d,squel[_0x3956('0xf')]()[_0x3956('0x3e')](_0x1c8b3d)[_0x3956('0x12')](_0x37ae0d)[_0x3956('0x15')]('('+_0xc5b32e['join'](',')+_0x3956('0x59'),squel['select']()['fields'](_0xc5b32e)[_0x3956('0x12')](_0x3956('0x3f'))['where'](_0x3956('0x4b'),_0x179d32))[_0x3956('0x15')](_0x3956('0x5a'),squel['select']()[_0x3956('0x10')](_0x3956('0x5b'),'min_id')['from'](_0x37ae0d)[_0x3956('0x5c')](_0xc5b32e[_0x3956('0x13')](','))))[_0x3956('0x45')]();}function handleStop(){logger[_0x3956('0x5d')](_0x3956('0x5e'));stopped=!![];}function handleUncaughtException(_0x567dce){logger[_0x3956('0x21')](_0x567dce['message']);process[_0x3956('0x5f')](0x1);}function handleError(_0x31cb2a,_0xceaadc){stats['errors'][_0x3956('0x1d')]({'name':_0xceaadc[_0x3956('0x60')],'message':_0xceaadc['message'],'row':_0x31cb2a});}function handleQuery(_0x22cdfd){logger['info'](_0x22cdfd);return db[_0x3956('0x16')]['query'](_0x22cdfd)[_0x3956('0x19')](function(_0x1cc14a){results[_0x3956('0x1d')](_0x1cc14a);})[_0x3956('0x20')](function(_0x5a4127){logger[_0x3956('0x21')](_0x5a4127['message']);});}function main(_0x1ee246,_0x31f18a,_0x8667ca,_0x130b21){logger[_0x3956('0x5d')](_0x3956('0x61'),_0x1ee246,JSON[_0x3956('0x62')](_0x31f18a));process[_0x3956('0x63')](_0x3956('0x64'));var _0x57f8c0=_0x31f18a['binding'];var _0x4c1a0e=_[_0x3956('0x65')](_0x57f8c0);var _0x2c01ba=_0x31f18a[_0x3956('0x66')];var _0x1beb16=path[_0x3956('0x13')](config['root'],_0x3956('0x67'),_0x2c01ba+_0x3956('0x68'));logger[_0x3956('0x5d')](_0x3956('0x69'),_0x31f18a);db['ContactItemType'][_0x3956('0x6a')]({'raw':!![],'attributes':['id',_0x3956('0x6b')]})[_0x3956('0x1f')](function(_0x1c915d){for(var _0x2f4111=0x0;_0x2f4111<_0x1c915d[_0x3956('0x1a')];_0x2f4111++){if(_0x1c915d[_0x2f4111][_0x3956('0x6b')]in _0x57f8c0){contactItemTypes[_0x3956('0x1d')](_0x1c915d[_0x2f4111]);delete _0x4c1a0e[_0x1c915d[_0x2f4111][_0x3956('0x6b')]];hasAdditionalPhones=!![];}for(var _0x4debf3 in _0x57f8c0){if(_0x1c915d[_0x2f4111]['name']+'_description'===_0x4debf3){phoneDescriptions[_0x3956('0x1d')]({'itemTypeId':_0x1c915d[_0x2f4111]['id'],'description':_0x4debf3});delete _0x4c1a0e[_0x4debf3];}}}if(hasAdditionalPhones)_0x4c1a0e[_0x3956('0x1c')]='';var _0x4b7620=_[_0x3956('0x6c')](_0x4c1a0e)['join']();logger[_0x3956('0x5d')]('header',_0x4b7620);fs['writeFileSync'](_0x1beb16,_0x4b7620+'\x0a');Papa[_0x3956('0x6d')](fs[_0x3956('0x6e')](_0x1ee246),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2f3e94,_0xb52013){try{for(var _0x4a1baa=0x0,_0x54d174=[];_0x4a1baa<_0x2f3e94['data'][_0x3956('0x1a')];_0x4a1baa++){stats['rows']+=0x1;if(_0x2f3e94['errors'][_0x4a1baa]){handleError(_0x2f3e94[_0x3956('0x6f')][_0x4a1baa],_0x2f3e94[_0x3956('0x70')][_0x4a1baa]);}else{var _0x1691e2=[];var _0x44d795=[];var _0xa1a371={};for(var _0x38f1a3 in _0x57f8c0){let _0x32c12c=contactItemTypes['find'](_0x18adfc=>_0x18adfc[_0x3956('0x6b')]===_0x38f1a3);let _0x5c3e37=contactItemTypes[_0x3956('0x71')](_0x357630=>_0x357630[_0x3956('0x6b')]+_0x3956('0x72')===_0x38f1a3);if(_[_0x3956('0x1b')](_0x32c12c)&&_[_0x3956('0x1b')](_0x5c3e37)){if(_0x57f8c0['hasOwnProperty'](_0x38f1a3)){if(_0x2f3e94[_0x3956('0x6f')][_0x4a1baa][_0x57f8c0[_0x38f1a3]]){var _0x57ab75=_[_0x3956('0x73')](_0x2f3e94[_0x3956('0x6f')][_0x4a1baa][_0x57f8c0[_0x38f1a3]]['replace'](/"/g,'\x27'));switch(_0x38f1a3){case _0x3956('0x37'):var _0x19f5cd=moment(_0x57ab75,_0x3956('0xc'),!![]);if(_0x19f5cd[_0x3956('0x74')]()){_0x54d174[_0x3956('0x1d')]('\x22'+_0x57ab75+'\x22');}else{_0x1691e2[_0x3956('0x1d')](_0x3956('0x75'));}break;case _0x3956('0x3b'):var _0x195d37=parseInt(_0x57ab75);_0x57ab75=_['isNaN'](_0x195d37)||_0x195d37<0x0||_0x195d37>0x4?_0x130b21?0x3:0x2:_0x195d37;_0x54d174[_0x3956('0x1d')]('\x22'+_0x57ab75+'\x22');break;case _0x3956('0x3c'):var _0x50bc42=parseInt(_0x57ab75);if(_[_0x3956('0x76')](_0x50bc42)&&_[_0x3956('0x77')](_0x8667ca,_0x50bc42)){_0x54d174[_0x3956('0x1d')]('\x22'+_0x50bc42+'\x22');}else{_0x1691e2[_0x3956('0x1d')](_0x3956('0x78'));}break;case _0x3956('0x79'):if(isEmail(_0x57ab75)){_0x54d174[_0x3956('0x1d')]('\x22'+_0x57ab75+'\x22');}else{_0x1691e2[_0x3956('0x1d')](_0x3956('0x7a'));}break;case'dateOfBirth':var _0x791476=moment(_0x57ab75,_0x3956('0x7b'),!![]);if(_0x791476[_0x3956('0x74')]()){_0x54d174[_0x3956('0x1d')]('\x22'+_0x57ab75+'\x22');}else{_0x1691e2[_0x3956('0x1d')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x54d174[_0x3956('0x1d')]('\x22'+_0x57ab75+'\x22');}}else{switch(_0x38f1a3){case _0x3956('0x7c'):case _0x3956('0x11'):_0x1691e2['push'](_0x38f1a3+'\x20not\x20specified');break;default:_0x54d174['push']('\x22\x22');}}}}else{var _0x4ef821='';if(!_[_0x3956('0x1b')](_0x32c12c)){if(!_0xa1a371[_0x3956('0x7d')](_0x32c12c['id'])){for(var _0x126029=0x0;_0x126029<_0x57f8c0[_0x38f1a3][_0x3956('0x1a')];_0x126029++){var _0x57ab75=_['trim'](_0x2f3e94[_0x3956('0x6f')][_0x4a1baa][_0x57f8c0[_0x38f1a3][_0x126029]][_0x3956('0x7e')](/"/g,'\x27'));var _0x9a80da=phoneDescriptions[_0x3956('0x71')](_0x303cb9=>_0x303cb9['itemTypeId']===_0x32c12c['id']);if(!_['isNil'](_0x9a80da)){var _0x32784b=_['trim'](_0x2f3e94[_0x3956('0x6f')][_0x4a1baa][_0x57f8c0[_0x9a80da['description']][0x0]][_0x3956('0x7e')](/"/g,'\x27'));if(!_[_0x3956('0x1b')](_0x32784b))_0x57ab75=_0x57ab75+'§'+_0x32784b;}if(_0x4ef821=='')_0x4ef821=_0x57ab75;else _0x4ef821+='|'+_0x57ab75;}_0x44d795[_0x3956('0x1d')](_0x32c12c['id']+':'+_0x4ef821);_0xa1a371[_0x32c12c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x54d174['push']('\x22'+_0x44d795['join'](';')+'\x22');}if(_0x1691e2[_0x3956('0x1a')]){handleError(_0x2f3e94[_0x3956('0x6f')][_0x4a1baa],{'code':_0x3956('0x7f'),'message':_0x1691e2['join']()});}else{fs[_0x3956('0x80')](_0x1beb16,_0x54d174[_0x3956('0x13')]()+'\x0a');}_0x54d174=[];}if(!(stats[_0x3956('0x81')]%0xc8)){socket[_0x3956('0x82')]('contact:import:'+_0x2c01ba,stats);stats[_0x3956('0x70')]=[];}}if(stopped){logger[_0x3956('0x5d')](_0x3956('0x83'));_0xb52013[_0x3956('0x84')]();}}catch(_0x5139c0){handleError(_0x2f3e94[_0x3956('0x6f')][_0x4a1baa],{'code':_0x3956('0x85'),'message':_0x5139c0[_0x3956('0x86')]});logger['error'](_0x3956('0x87'),_0x5139c0[_0x3956('0x86')]);}},'complete':function(){try{var _0x3f941c=[];var _0x318987=tempTableName;_0x3f941c[_0x3956('0x1d')](_0x3956('0x88')+_0x318987+'\x20LIKE\x20cm_contacts;');logger[_0x3956('0x5d')](_0x3956('0x89'),contactItemTypes[_0x3956('0x1a')]);var _0xb8483c=util['format'](_0x3956('0x8a'),_0x1beb16,_0x318987,_0x4b7620,_0x31f18a[_0x3956('0x39')],_0x31f18a[_0x3956('0x58')]||null,NOW,NOW);if(_[_0x3956('0x1b')](_0x57f8c0['scheduledat'])){_0xb8483c+=_0x3956('0x8b');}_0x3f941c[_0x3956('0x1d')](_0xb8483c);BPromise[_0x3956('0x8c')](_0x3f941c,handleQuery)[_0x3956('0x1f')](function(_0x4265e9){BPromise[_0x3956('0x1e')]([handleAdditionalPhones()])[_0x3956('0x1f')](function(){_0x3f941c=[];for(var _0x4cbe56=0x0;_0x4cbe56<promisesContact[_0x3956('0x1a')];_0x4cbe56++){_0x3f941c['push'](updateContact(promisesContact[_0x4cbe56][_0x3956('0x8d')]));}BPromise[_0x3956('0x1e')](_0x3f941c)['then'](function(){_0x3f941c=[];for(var _0x7969dc=0x0;_0x7969dc<promisesAdditionalPhones['length'];_0x7969dc++){_0x3f941c[_0x3956('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x7969dc][_0x3956('0x8e')],promisesAdditionalPhones[_0x7969dc][_0x3956('0x8f')],promisesAdditionalPhones[_0x7969dc][_0x3956('0x11')],promisesAdditionalPhones[_0x7969dc][_0x3956('0x90')]));}BPromise[_0x3956('0x1e')](_0x3f941c)['then'](function(){_0x3f941c=[];_0x3f941c[_0x3956('0x1d')](insertCmHopperAdditionalPhones(_0x31f18a[_0x3956('0x39')]));_0x3f941c['push']('DROP\x20TABLE\x20'+_0x318987+';');BPromise[_0x3956('0x8c')](_0x3f941c,handleQuery)['then'](function(_0x15cdd9){stats[_0x3956('0x91')]=!![];stats['affectedRows']=updatedRows;socket[_0x3956('0x82')](_0x3956('0x92')+_0x2c01ba,stats);fs['unlink'](_0x1ee246);fs[_0x3956('0x93')](_0x1beb16);process[_0x3956('0x5f')](0x0);})['catch'](function(_0x481274){logger[_0x3956('0x21')](_0x481274['message']);process[_0x3956('0x5f')](0x1);});});});});})[_0x3956('0x20')](function(_0x42ddc9){logger['error'](_0x42ddc9[_0x3956('0x86')]);process['exit'](0x1);});}catch(_0x2d9f87){logger[_0x3956('0x21')]('complete',_0x2d9f87[_0x3956('0x86')]);process[_0x3956('0x5f')](0x1);}},'error':function(_0x351529,_0xec91f7,_0x1e74c4,_0x2f9471){throw new Error(_0x2f9471);}});});}function validate(){if(process[_0x3956('0x94')]&&process['argv'][_0x3956('0x1a')]<0x4){throw new Error(_0x3956('0x95'));}var _0x1dff59=path[_0x3956('0x13')](config[_0x3956('0x96')],_0x3956('0x67'),process[_0x3956('0x94')][0x2]);if(!fs[_0x3956('0x97')](_0x1dff59)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x11477d={};try{_0x11477d=JSON['parse'](process[_0x3956('0x94')][0x3]);if(!_0x11477d[_0x3956('0x98')]){throw new Error(_0x3956('0x99'));}var _0x33c473=0x0;if(_0x11477d['binding'][_0x3956('0x3c')]){_0x33c473=0x1;}if(!_0x11477d[_0x3956('0x39')]){throw new Error(_0x3956('0x9a'));}}catch(_0x48f23e){throw new Error(_0x3956('0x9b'));}var _0x4442f1=[];try{_0x4442f1=_[_0x3956('0x9c')](JSON[_0x3956('0x6d')](process['argv'][0x4]),'id');}catch(_0x262efa){logger['info'](_0x3956('0x9d'));}main(_0x1dff59,_0x11477d,_0x4442f1,_0x33c473);}validate();process['on']('SIGINT',handleStop);process['on'](_0x3956('0x9e'),handleUncaughtException);
\ No newline at end of file
+var _0xffc0=['YYYY-MM-DD\x20HH:mm:ss','YYYYMMDDHHmmss','test','select','field','from','join','.id\x20=\x20','\x20=\x20','where','sequelize','query','spread','push','all','then','catch','message','isNil','split','length','CmContactHasItem','update','updated','PHONE','CmContact','CmHopper','phone','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_hopper_black','.CmListId\x20=\x20?','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','CmHopperId','OrderBy','createdAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','keys','MIN(id)','min_id','group','error','errors','info','stringify','start','clone','socket_timestamp','root','body','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isValid','isNaN','isNumber','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','itemTypeId','description','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','CREATE\x20TABLE\x20','CIS\x20len','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId',',\x20scheduledAt\x20=\x20NOW()','contact','contactId','orderBy','DROP\x20TABLE\x20','each','finish','unlink','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','defaults','socket.io-emitter','format'];(function(_0x2fd02e,_0x8ebcc5){var _0x4d7f54=function(_0x1437c0){while(--_0x1437c0){_0x2fd02e['push'](_0x2fd02e['shift']());}};_0x4d7f54(++_0x8ebcc5);}(_0xffc0,0x1a0));var _0x0ffc=function(_0x48873f,_0x29c1d7){_0x48873f=_0x48873f-0x0;var _0x154ad4=_0xffc0[_0x48873f];return _0x154ad4;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x0ffc('0x0'));var Papa=require('papaparse');var util=require(_0x0ffc('0x1'));var BPromise=require(_0x0ffc('0x2'));var moment=require(_0x0ffc('0x3'));var squel=require(_0x0ffc('0x4'));var Redis=require(_0x0ffc('0x5'));var db=require(_0x0ffc('0x6'))['db'];var config=require(_0x0ffc('0x7'));var logger=require('../../../config/logger')(_0x0ffc('0x8'));config[_0x0ffc('0x9')]=_[_0x0ffc('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0ffc('0xb'))(new Redis(config[_0x0ffc('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x0ffc('0xc')](_0x0ffc('0xd'));var tempTableName='cm_contacts_temp_'+moment()[_0x0ffc('0xc')](_0x0ffc('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x234549){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))*$/[_0x0ffc('0xf')](_0x234549);}function selectNotIn(_0x20bfe1,_0x1ca057,_0x252444,_0x3547c0,_0x481a0f){return squel[_0x0ffc('0x10')]()[_0x0ffc('0x11')]('phone')[_0x0ffc('0x12')](_0x3547c0)[_0x0ffc('0x13')](_0x1ca057,null,_0x1ca057+_0x0ffc('0x14')+_0x3547c0+'.'+_0x252444)['where'](_0x3547c0+'.'+_0x252444+_0x0ffc('0x15')+_0x20bfe1+'.'+_0x252444)[_0x0ffc('0x16')](_0x1ca057+'.dialCheckDuplicateType\x20IN\x20('+_0x481a0f[_0x0ffc('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x137908,_0x1e32b4){promisesAdditionalPhones=[];promisesContact=[];return db[_0x0ffc('0x17')][_0x0ffc('0x18')]('select\x20*\x20from\x20'+tempTableName)[_0x0ffc('0x19')](function(_0x565921){if(_0x565921!==null){var _0x7f401=[];for(var _0xc2bb7e=0x0;_0xc2bb7e<_0x565921['length'];_0xc2bb7e++){var _0x4803b4=_0x565921[_0xc2bb7e];if(!_['isNil'](_0x4803b4['phone'])){if(!_['isNil'](_0x4803b4['AdditionalPhones']))_0x7f401[_0x0ffc('0x1a')](insertAdditionalPhones(_0x4803b4));promisesContact[_0x0ffc('0x1a')]({'contact':_0x4803b4});}}}Promise[_0x0ffc('0x1b')](_0x7f401)[_0x0ffc('0x1c')](function(){_0x137908({'val':0x1});});})[_0x0ffc('0x1d')](function(_0x480931){logger['error'](_0x480931[_0x0ffc('0x1e')]);});});}function insertAdditionalPhones(_0x5e5256){return new Promise(function(_0x49e690,_0x60ac9d){var _0x126f09=_0x5e5256['AdditionalPhones'];if(_[_0x0ffc('0x1f')](_0x126f09))_0x60ac9d({'val':0x0});else{var _0x18bc34=_0x126f09[_0x0ffc('0x20')](';');var _0x527fd4=[];orderBy=0x0;for(var _0x4ffd80=0x0;_0x4ffd80<_0x18bc34[_0x0ffc('0x21')];_0x4ffd80++){_0x527fd4[_0x0ffc('0x1a')](splitAdditionalPhone(_0x5e5256['id'],_0x18bc34[_0x4ffd80]));}Promise[_0x0ffc('0x1b')](_0x527fd4)[_0x0ffc('0x1c')](function(){_0x49e690({'val':_0x18bc34[_0x0ffc('0x21')]});});}});}function splitAdditionalPhone(_0x4d4294,_0x501c0c){return new Promise(function(_0x3e1180,_0x529415){var _0x154ffe=_0x501c0c['split'](':');var _0x25e3c0=_0x154ffe[0x0];var _0x136b0a=_0x154ffe[0x1];if(_0x136b0a!==''){var _0x23b14e=_0x136b0a[_0x0ffc('0x20')]('|');var _0x3968cc=[];for(var _0x34bce1=0x0;_0x34bce1<_0x23b14e[_0x0ffc('0x21')];_0x34bce1++){if(_0x23b14e[_0x34bce1]!==''){var _0x4a2794=_['filter'](promisesAdditionalPhones,{'contactId':_0x4d4294,'phone':_0x23b14e[_0x34bce1]});if(_0x4a2794[_0x0ffc('0x21')]==0x0){orderBy++;promisesAdditionalPhones[_0x0ffc('0x1a')]({'contactId':_0x4d4294,'contactTypeId':_0x25e3c0,'phone':_0x23b14e[_0x34bce1],'orderBy':orderBy});}}}_0x3e1180({'ok':0x1});}else _0x3e1180({'res':0x0});});}function createAdditionalPhone(_0x59afc9,_0x5bb1d5,_0x40166f,_0x5f3a01){var _0x13c425='';var _0x5d3cff='';var _0x4ece4f=_0x40166f[_0x0ffc('0x20')]('§');_0x13c425=_0x4ece4f[0x0];if(_0x4ece4f['length']==0x2)_0x5d3cff=_0x4ece4f[0x1];return new Promise(function(_0x467905,_0x18dc67){return db[_0x0ffc('0x22')]['findOne']({'where':{'CmContactId':_0x59afc9,'item':_0x13c425}})[_0x0ffc('0x1c')](function(_0x2c87d0){if(_0x2c87d0){return db[_0x0ffc('0x22')][_0x0ffc('0x23')]({'ItemTypeId':_0x5bb1d5,'description':_0x5d3cff,'OrderBy':_0x5f3a01},{'where':{'CmContactId':_0x59afc9,'item':_0x13c425}})['then'](function(_0x170390){_0x467905({'res':_0x0ffc('0x24')});});}else{return db[_0x0ffc('0x22')]['create']({'CmContactId':_0x59afc9,'item':_0x13c425,'ItemTypeId':_0x5bb1d5,'description':_0x5d3cff,'OrderBy':_0x5f3a01,'ItemClass':_0x0ffc('0x25')})['then'](function(_0x321fa9){_0x467905({'res':'inserted'});});}});});}function updateContact(_0x214faf){return new Promise(function(_0x103bb3,_0x48fdca){var _0x473d6c=_0x214faf['id'];delete _0x214faf['id'];return db[_0x0ffc('0x26')][_0x0ffc('0x23')](_0x214faf,{'where':{'id':_0x473d6c}})[_0x0ffc('0x1c')](function(_0x581c42){updatedRows+=0x1;return db[_0x0ffc('0x27')][_0x0ffc('0x23')]({'phone':_0x214faf[_0x0ffc('0x28')]},{'where':{'ContactId':_0x473d6c}})[_0x0ffc('0x1c')](function(_0x1edd2c){_0x103bb3({'ret':'OK'});});});});}function insertCmHopper(_0x6f3091,_0x1ba0b6,_0x597d9a,_0x482372,_0x3e3c5f){var _0x329a64=[_0x0ffc('0x29'),'cm_contacts.scheduledat',_0x0ffc('0x2a'),_0x0ffc('0x2b'),_0x1ba0b6+'.'+_0x482372,_0x0ffc('0x2c'),_0x0ffc('0x2d'),'cm_contacts.priority',_0x0ffc('0x2e'),'\x22'+_0x3e3c5f+'\x22'];return squel[_0x0ffc('0x2f')]()[_0x0ffc('0x30')](_0x0ffc('0x31'))[_0x0ffc('0x32')]([_0x0ffc('0x28'),_0x0ffc('0x33'),_0x0ffc('0x34'),_0x0ffc('0x35'),_0x482372,'createdAt',_0x0ffc('0x36'),_0x0ffc('0x37'),_0x0ffc('0x38'),_0x0ffc('0x39')],squel['select']()[_0x0ffc('0x3a')](_0x329a64)[_0x0ffc('0x12')](_0x1ba0b6)[_0x0ffc('0x13')](_0x0ffc('0x3b'),null,_0x0ffc('0x3c')+_0x1ba0b6+_0x0ffc('0x3d'))[_0x0ffc('0x13')](_0x597d9a,null,_0x597d9a+_0x0ffc('0x14')+_0x1ba0b6+'.'+_0x482372)[_0x0ffc('0x16')](_0x1ba0b6+'.CmListId\x20=\x20?',_0x6f3091)[_0x0ffc('0x16')](_0x0ffc('0x3e'),NOW)[_0x0ffc('0x16')](_0x0ffc('0x3f'),selectNotIn(_0x1ba0b6,_0x597d9a,_0x482372,'cm_hopper',['\x22always\x22','\x22onlyIfOpen\x22']))[_0x0ffc('0x16')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1ba0b6,_0x597d9a,_0x482372,_0x0ffc('0x31'),['\x22always\x22'])))[_0x0ffc('0x40')]();}function insertCmHopperBlack(_0x1cb958,_0x50c005,_0x54070c,_0x1bf431){var _0x46b411=['cm_contacts.phone',_0x0ffc('0x2a'),_0x0ffc('0x2b'),_0x50c005+'.'+_0x1bf431,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel[_0x0ffc('0x2f')]()['into'](_0x0ffc('0x41'))['fromQuery'](['phone','ContactId',_0x0ffc('0x35'),_0x1bf431,'createdAt',_0x0ffc('0x36')],squel[_0x0ffc('0x10')]()[_0x0ffc('0x3a')](_0x46b411)['from'](_0x50c005)[_0x0ffc('0x13')](_0x0ffc('0x3b'),null,_0x0ffc('0x3c')+_0x50c005+_0x0ffc('0x3d'))[_0x0ffc('0x13')](_0x54070c,null,_0x54070c+_0x0ffc('0x14')+_0x50c005+'.'+_0x1bf431)[_0x0ffc('0x16')](_0x50c005+_0x0ffc('0x42'),_0x1cb958)['where'](_0x0ffc('0x3e'),NOW)[_0x0ffc('0x16')](_0x0ffc('0x3f'),squel['select']()[_0x0ffc('0x11')](_0x0ffc('0x28'))[_0x0ffc('0x12')](_0x0ffc('0x41'))['where'](_0x0ffc('0x43'),_0x1cb958)[_0x0ffc('0x16')](_0x1bf431+'\x20=\x20?',_0x50c005+'.'+_0x1bf431)))[_0x0ffc('0x40')]();}function insertCmHopperAdditionalPhones(_0x5f6aad){var _0x5cd99e=['cm_hopper.id',_0x0ffc('0x44'),_0x0ffc('0x45'),_0x0ffc('0x46'),'cm_contact_has_items.updatedAt'];return squel['insert']()[_0x0ffc('0x30')]('cm_hopper_additional_phones')[_0x0ffc('0x32')]([_0x0ffc('0x47'),_0x0ffc('0x28'),_0x0ffc('0x48'),_0x0ffc('0x49'),'updatedAt'],squel[_0x0ffc('0x10')]()[_0x0ffc('0x3a')](_0x5cd99e)[_0x0ffc('0x12')](_0x0ffc('0x31'))['join']('cm_contacts',null,_0x0ffc('0x4a'))['join'](_0x0ffc('0x4b'),null,_0x0ffc('0x4c'))['where']('cm_hopper.ListId\x20=\x20?',_0x5f6aad)[_0x0ffc('0x16')](_0x0ffc('0x3e'),NOW))['toString']();}function insertCmContact(_0x3394a9,_0x14d785,_0x265b8d,_0x38aa4b){var _0x18b55b=_[_0x0ffc('0x4d')](_[_0x0ffc('0x4e')](_0x38aa4b),['ListId','CompanyId',_0x0ffc('0x49'),_0x0ffc('0x36')]);return squel['insert']()[_0x0ffc('0x30')](_0x0ffc('0x3b'))[_0x0ffc('0x32')](_0x18b55b,squel['select']()[_0x0ffc('0x3a')](_0x18b55b)['from'](_0x14d785)['where']('('+_0x265b8d[_0x0ffc('0x13')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0x0ffc('0x3a')](_0x265b8d)[_0x0ffc('0x12')](_0x0ffc('0x3b'))['where'](_0x0ffc('0x43'),_0x3394a9))[_0x0ffc('0x16')]('id\x20IN\x20?',squel['select']()[_0x0ffc('0x11')](_0x0ffc('0x4f'),_0x0ffc('0x50'))[_0x0ffc('0x12')](_0x14d785)[_0x0ffc('0x51')](_0x265b8d['join'](','))))[_0x0ffc('0x40')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x28ec97){logger[_0x0ffc('0x52')](_0x28ec97[_0x0ffc('0x1e')]);process['exit'](0x1);}function handleError(_0x5c83d3,_0x4aa514){stats[_0x0ffc('0x53')][_0x0ffc('0x1a')]({'name':_0x4aa514['code'],'message':_0x4aa514[_0x0ffc('0x1e')],'row':_0x5c83d3});}function handleQuery(_0x455e96){logger['info'](_0x455e96);return db[_0x0ffc('0x17')][_0x0ffc('0x18')](_0x455e96)[_0x0ffc('0x19')](function(_0x4a510b){results[_0x0ffc('0x1a')](_0x4a510b);})[_0x0ffc('0x1d')](function(_0x42372d){logger[_0x0ffc('0x52')](_0x42372d['message']);});}function main(_0x55b47d,_0x13a739,_0x59bb1e,_0x32ce17){logger[_0x0ffc('0x54')]('main',_0x55b47d,JSON[_0x0ffc('0x55')](_0x13a739));process['send'](_0x0ffc('0x56'));var _0x44397e=_0x13a739['binding'];var _0x5d515c=_[_0x0ffc('0x57')](_0x44397e);var _0x314da1=_0x13a739[_0x0ffc('0x58')];var _0x26f3d8=path[_0x0ffc('0x13')](config[_0x0ffc('0x59')],'server/files/tmp',_0x314da1+'.csv');logger[_0x0ffc('0x54')](_0x0ffc('0x5a'),_0x13a739);db[_0x0ffc('0x5b')][_0x0ffc('0x5c')]({'raw':!![],'attributes':['id',_0x0ffc('0x5d')]})['then'](function(_0x576442){for(var _0x12fd65=0x0;_0x12fd65<_0x576442[_0x0ffc('0x21')];_0x12fd65++){if(_0x576442[_0x12fd65][_0x0ffc('0x5d')]in _0x44397e){contactItemTypes['push'](_0x576442[_0x12fd65]);delete _0x5d515c[_0x576442[_0x12fd65][_0x0ffc('0x5d')]];hasAdditionalPhones=!![];}for(var _0x10107d in _0x44397e){if(_0x576442[_0x12fd65][_0x0ffc('0x5d')]+_0x0ffc('0x5e')===_0x10107d){phoneDescriptions[_0x0ffc('0x1a')]({'itemTypeId':_0x576442[_0x12fd65]['id'],'description':_0x10107d});delete _0x5d515c[_0x10107d];}}}if(hasAdditionalPhones)_0x5d515c['AdditionalPhones']='';var _0x2f4ae6=_[_0x0ffc('0x4e')](_0x5d515c)[_0x0ffc('0x13')]();logger[_0x0ffc('0x54')]('header',_0x2f4ae6);fs[_0x0ffc('0x5f')](_0x26f3d8,_0x2f4ae6+'\x0a');Papa[_0x0ffc('0x60')](fs[_0x0ffc('0x61')](_0x55b47d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x24dd64,_0x589e42){try{for(var _0xc8e26d=0x0,_0x416aad=[];_0xc8e26d<_0x24dd64[_0x0ffc('0x62')][_0x0ffc('0x21')];_0xc8e26d++){stats[_0x0ffc('0x63')]+=0x1;if(_0x24dd64[_0x0ffc('0x53')][_0xc8e26d]){handleError(_0x24dd64[_0x0ffc('0x62')][_0xc8e26d],_0x24dd64['errors'][_0xc8e26d]);}else{var _0x8162a5=[];var _0x59901f=[];var _0x3bde31={};for(var _0x1d7b1e in _0x44397e){let _0x577890=contactItemTypes[_0x0ffc('0x64')](_0x44f708=>_0x44f708[_0x0ffc('0x5d')]===_0x1d7b1e);let _0xb98f11=contactItemTypes[_0x0ffc('0x64')](_0x313e9b=>_0x313e9b[_0x0ffc('0x5d')]+_0x0ffc('0x5e')===_0x1d7b1e);if(_['isNil'](_0x577890)&&_[_0x0ffc('0x1f')](_0xb98f11)){if(_0x44397e[_0x0ffc('0x65')](_0x1d7b1e)){if(_0x24dd64[_0x0ffc('0x62')][_0xc8e26d][_0x44397e[_0x1d7b1e]]){var _0x100d6c=_[_0x0ffc('0x66')](_0x24dd64[_0x0ffc('0x62')][_0xc8e26d][_0x44397e[_0x1d7b1e]][_0x0ffc('0x67')](/"/g,'\x27'));switch(_0x1d7b1e){case _0x0ffc('0x33'):var _0x53e2f2=moment(_0x100d6c,_0x0ffc('0xd'),!![]);if(_0x53e2f2[_0x0ffc('0x68')]()){_0x416aad['push']('\x22'+_0x100d6c+'\x22');}else{_0x8162a5[_0x0ffc('0x1a')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x0ffc('0x37'):var _0x4cbb97=parseInt(_0x100d6c);_0x100d6c=_[_0x0ffc('0x69')](_0x4cbb97)||_0x4cbb97<0x0||_0x4cbb97>0x4?_0x32ce17?0x3:0x2:_0x4cbb97;_0x416aad['push']('\x22'+_0x100d6c+'\x22');break;case _0x0ffc('0x38'):var _0x1b0cd2=parseInt(_0x100d6c);if(_[_0x0ffc('0x6a')](_0x1b0cd2)&&_['includes'](_0x59bb1e,_0x1b0cd2)){_0x416aad['push']('\x22'+_0x1b0cd2+'\x22');}else{_0x8162a5[_0x0ffc('0x1a')]('agent\x20not\x20exists');}break;case'email':if(isEmail(_0x100d6c)){_0x416aad[_0x0ffc('0x1a')]('\x22'+_0x100d6c+'\x22');}else{_0x8162a5[_0x0ffc('0x1a')]('email\x20wrong\x20format');}break;case _0x0ffc('0x6b'):var _0x489c4a=moment(_0x100d6c,_0x0ffc('0x6c'),!![]);if(_0x489c4a[_0x0ffc('0x68')]()){_0x416aad[_0x0ffc('0x1a')]('\x22'+_0x100d6c+'\x22');}else{_0x8162a5['push'](_0x0ffc('0x6d'));}break;default:_0x416aad[_0x0ffc('0x1a')]('\x22'+_0x100d6c+'\x22');}}else{switch(_0x1d7b1e){case _0x0ffc('0x6e'):case _0x0ffc('0x28'):_0x8162a5[_0x0ffc('0x1a')](_0x1d7b1e+'\x20not\x20specified');break;default:_0x416aad[_0x0ffc('0x1a')]('\x22\x22');}}}}else{var _0x250eb7='';if(!_['isNil'](_0x577890)){if(!_0x3bde31[_0x0ffc('0x65')](_0x577890['id'])){for(var _0x5be92d=0x0;_0x5be92d<_0x44397e[_0x1d7b1e][_0x0ffc('0x21')];_0x5be92d++){var _0x100d6c=_[_0x0ffc('0x66')](_0x24dd64[_0x0ffc('0x62')][_0xc8e26d][_0x44397e[_0x1d7b1e][_0x5be92d]][_0x0ffc('0x67')](/"/g,'\x27'));var _0x3314be=phoneDescriptions['find'](_0x355a70=>_0x355a70[_0x0ffc('0x6f')]===_0x577890['id']);if(!_['isNil'](_0x3314be)){var _0x7789d4=_[_0x0ffc('0x66')](_0x24dd64[_0x0ffc('0x62')][_0xc8e26d][_0x44397e[_0x3314be[_0x0ffc('0x70')]][0x0]][_0x0ffc('0x67')](/"/g,'\x27'));if(!_[_0x0ffc('0x1f')](_0x7789d4))_0x100d6c=_0x100d6c+'§'+_0x7789d4;}if(_0x250eb7=='')_0x250eb7=_0x100d6c;else _0x250eb7+='|'+_0x100d6c;}_0x59901f[_0x0ffc('0x1a')](_0x577890['id']+':'+_0x250eb7);_0x3bde31[_0x577890['id']]=0x1;}}}}if(hasAdditionalPhones){_0x416aad[_0x0ffc('0x1a')]('\x22'+_0x59901f[_0x0ffc('0x13')](';')+'\x22');}if(_0x8162a5[_0x0ffc('0x21')]){handleError(_0x24dd64['data'][_0xc8e26d],{'code':'SystemRow','message':_0x8162a5['join']()});}else{fs[_0x0ffc('0x71')](_0x26f3d8,_0x416aad[_0x0ffc('0x13')]()+'\x0a');}_0x416aad=[];}if(!(stats[_0x0ffc('0x63')]%0xc8)){socket[_0x0ffc('0x72')](_0x0ffc('0x73')+_0x314da1,stats);stats['errors']=[];}}if(stopped){logger[_0x0ffc('0x54')](_0x0ffc('0x74'));_0x589e42[_0x0ffc('0x75')]();}}catch(_0x3c5583){handleError(_0x24dd64['data'][_0xc8e26d],{'code':_0x0ffc('0x76'),'message':_0x3c5583[_0x0ffc('0x1e')]});logger[_0x0ffc('0x52')](_0x0ffc('0x77'),_0x3c5583[_0x0ffc('0x1e')]);}},'complete':function(){try{var _0xc6ffb6=[];var _0x2e3f2b=tempTableName;_0xc6ffb6[_0x0ffc('0x1a')](_0x0ffc('0x78')+_0x2e3f2b+'\x20LIKE\x20cm_contacts;');logger[_0x0ffc('0x54')](_0x0ffc('0x79'),contactItemTypes['length']);var _0x2eb982=util[_0x0ffc('0xc')](_0x0ffc('0x7a'),_0x26f3d8,_0x2e3f2b,_0x2f4ae6,_0x13a739[_0x0ffc('0x35')],_0x13a739[_0x0ffc('0x7b')]||null,NOW,NOW);if(_['isNil'](_0x44397e[_0x0ffc('0x33')])){_0x2eb982+=_0x0ffc('0x7c');}_0xc6ffb6['push'](_0x2eb982);BPromise['each'](_0xc6ffb6,handleQuery)[_0x0ffc('0x1c')](function(_0x3bf2d8){BPromise['all']([handleAdditionalPhones()])['then'](function(){_0xc6ffb6=[];for(var _0x44c882=0x0;_0x44c882<promisesContact[_0x0ffc('0x21')];_0x44c882++){_0xc6ffb6[_0x0ffc('0x1a')](updateContact(promisesContact[_0x44c882][_0x0ffc('0x7d')]));}BPromise['all'](_0xc6ffb6)[_0x0ffc('0x1c')](function(){_0xc6ffb6=[];for(var _0x3f41c1=0x0;_0x3f41c1<promisesAdditionalPhones[_0x0ffc('0x21')];_0x3f41c1++){_0xc6ffb6['push'](createAdditionalPhone(promisesAdditionalPhones[_0x3f41c1][_0x0ffc('0x7e')],promisesAdditionalPhones[_0x3f41c1]['contactTypeId'],promisesAdditionalPhones[_0x3f41c1][_0x0ffc('0x28')],promisesAdditionalPhones[_0x3f41c1][_0x0ffc('0x7f')]));}BPromise[_0x0ffc('0x1b')](_0xc6ffb6)[_0x0ffc('0x1c')](function(){_0xc6ffb6=[];_0xc6ffb6[_0x0ffc('0x1a')](insertCmHopperAdditionalPhones(_0x13a739['ListId']));_0xc6ffb6[_0x0ffc('0x1a')](_0x0ffc('0x80')+_0x2e3f2b+';');BPromise[_0x0ffc('0x81')](_0xc6ffb6,handleQuery)[_0x0ffc('0x1c')](function(_0x561e4c){stats[_0x0ffc('0x82')]=!![];stats['affectedRows']=updatedRows;socket[_0x0ffc('0x72')](_0x0ffc('0x73')+_0x314da1,stats);fs[_0x0ffc('0x83')](_0x55b47d);fs[_0x0ffc('0x83')](_0x26f3d8);process['exit'](0x0);})['catch'](function(_0x5b0171){logger[_0x0ffc('0x52')](_0x5b0171[_0x0ffc('0x1e')]);process['exit'](0x1);});});});});})[_0x0ffc('0x1d')](function(_0x5b2ce3){logger[_0x0ffc('0x52')](_0x5b2ce3['message']);process[_0x0ffc('0x84')](0x1);});}catch(_0xb89296){logger[_0x0ffc('0x52')](_0x0ffc('0x85'),_0xb89296['message']);process[_0x0ffc('0x84')](0x1);}},'error':function(_0x1a2d22,_0x43fdf7,_0x113668,_0x259c88){throw new Error(_0x259c88);}});});}function validate(){if(process[_0x0ffc('0x86')]&&process[_0x0ffc('0x86')][_0x0ffc('0x21')]<0x4){throw new Error(_0x0ffc('0x87'));}var _0x39b276=path[_0x0ffc('0x13')](config['root'],'server/files/tmp',process['argv'][0x2]);if(!fs[_0x0ffc('0x88')](_0x39b276)){throw new Error(_0x0ffc('0x89'));}var _0x2e78af={};try{_0x2e78af=JSON[_0x0ffc('0x60')](process['argv'][0x3]);if(!_0x2e78af[_0x0ffc('0x8a')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x4987c2=0x0;if(_0x2e78af[_0x0ffc('0x8a')][_0x0ffc('0x38')]){_0x4987c2=0x1;}if(!_0x2e78af[_0x0ffc('0x35')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0xc53a71){throw new Error(_0x0ffc('0x8b'));}var _0x4babf5=[];try{_0x4babf5=_[_0x0ffc('0x8c')](JSON[_0x0ffc('0x60')](process[_0x0ffc('0x86')][0x4]),'id');}catch(_0xb3796f){logger['info'](_0x0ffc('0x8d'));}main(_0x39b276,_0x2e78af,_0x4babf5,_0x4987c2);}validate();process['on']('SIGINT',handleStop);process['on'](_0x0ffc('0x8e'),handleUncaughtException);
\ No newline at end of file
index abcda49..c7f6cbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ad=['destcalleridname','Agent\x20Number','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','Member\x20Name','membername','uniqueid','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','endtime','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridname','Call\x20To','destexten','UniqueId','Date','***\x20Agent\x20Info\x20***','Agent\x20Name'];(function(_0x2defb5,_0x1cda14){var _0x229c53=function(_0x5dd408){while(--_0x5dd408){_0x2defb5['push'](_0x2defb5['shift']());}};_0x229c53(++_0x1cda14);}(_0xf7ad,0x91));var _0xdf7a=function(_0x373a53,_0x1c6ed4){_0x373a53=_0x373a53-0x0;var _0xfee32c=_0xf7ad[_0x373a53];return _0xfee32c;};'use strict';exports[_0xdf7a('0x0')]=function(_0x274521,_0x39d7a0){var _0x564744=[{'type':_0xdf7a('0x1'),'content':_0xdf7a('0x2'),'variableName':null}];switch(_0x274521[_0xdf7a('0x3')]()){case _0xdf7a('0x4'):switch(_0x39d7a0[_0xdf7a('0x3')]()){case _0xdf7a('0x5'):_0x564744[_0xdf7a('0x6')]({'type':_0xdf7a('0x7'),'content':'','variableName':_0xdf7a('0x8')});_0x564744[_0xdf7a('0x6')]({'type':_0xdf7a('0x7'),'content':'','variableName':_0xdf7a('0x9')});break;case _0xdf7a('0xa'):_0x564744[_0xdf7a('0x6')]({'type':_0xdf7a('0x1'),'content':_0xdf7a('0xb'),'variableName':null});_0x564744[_0xdf7a('0x6')]({'type':_0xdf7a('0x7'),'content':'','variableName':_0xdf7a('0xc')});break;}}return _0x564744;};exports['getDescriptions']=function(_0xcea266,_0x27d324){var _0x3acaf8=[];switch(_0xcea266[_0xdf7a('0x3')]()){case _0xdf7a('0x4'):switch(_0x27d324[_0xdf7a('0x3')]()){case _0xdf7a('0x5'):_0x3acaf8=[{'type':_0xdf7a('0x1'),'content':_0xdf7a('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0xf'),'keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0x9')},{'type':_0xdf7a('0xe'),'content':'','key':'Caller\x20Name','keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0x10')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x11'),'keyType':'variable','variableName':_0xdf7a('0x12')},{'type':_0xdf7a('0xe'),'content':'','key':'Queue','keyType':'variable','variableName':_0xdf7a('0x8')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x13'),'keyType':_0xdf7a('0x7'),'variableName':'uniqueid'},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x14'),'keyType':_0xdf7a('0x7'),'variableName':'agentcalledAt'},{'type':_0xdf7a('0x1'),'content':_0xdf7a('0x15'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xdf7a('0x16'),'keyType':'variable','variableName':_0xdf7a('0x17')},{'type':'keyValue','content':'','key':_0xdf7a('0x18'),'keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0xc')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xdf7a('0x19'),'keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0x1a')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x1b'),'keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0x1c')},{'type':'keyValue','content':'','key':_0xdf7a('0x1d'),'keyType':_0xdf7a('0x7'),'variableName':_0xdf7a('0x1e')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x1f'),'keyType':_0xdf7a('0x7'),'variableName':'holdtime'},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x20'),'keyType':_0xdf7a('0x7'),'variableName':'talktime'}];break;case _0xdf7a('0xa'):_0x3acaf8=[{'type':_0xdf7a('0x1'),'content':_0xdf7a('0xd'),'variableName':null},{'type':_0xdf7a('0xe'),'content':'','key':'Called\x20Number','keyType':_0xdf7a('0x7'),'keyContent':'','variableName':_0xdf7a('0xc')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x21'),'keyType':_0xdf7a('0x7'),'keyContent':'','variableName':_0xdf7a('0x22')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x13'),'keyType':_0xdf7a('0x7'),'keyContent':'','variableName':_0xdf7a('0x23')},{'type':_0xdf7a('0xe'),'content':'','key':_0xdf7a('0x14'),'keyType':'variable','keyContent':'','variableName':'starttime'},{'type':'string','content':_0xdf7a('0x24')},{'type':'keyValue','content':'','key':_0xdf7a('0x25'),'keyType':_0xdf7a('0x7'),'keyContent':'','variableName':_0xdf7a('0x26')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':_0xdf7a('0x7'),'keyContent':'','variableName':_0xdf7a('0x27')},{'type':'keyValue','content':'','key':'Duration','keyType':_0xdf7a('0x7'),'keyContent':'','variableName':'duration'},{'type':'keyValue','content':'','key':_0xdf7a('0x28'),'keyType':'variable','keyContent':'','variableName':_0xdf7a('0x29')}];break;}}return _0x3acaf8;};
\ No newline at end of file
+var _0x6567=['***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','Queue','queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','membername','starttime','Answer\x20Time','answertime','endtime','duration','billableseconds','getSubjects','string','toLowerCase','voice','inbound','push','variable','calleridnum','outbound','destcalleridnum','getDescriptions'];(function(_0x4be79b,_0x21e987){var _0x14d71e=function(_0x25ea7a){while(--_0x25ea7a){_0x4be79b['push'](_0x4be79b['shift']());}};_0x14d71e(++_0x21e987);}(_0x6567,0x9d));var _0x7656=function(_0x134f00,_0x1b22ff){_0x134f00=_0x134f00-0x0;var _0x2eeb35=_0x6567[_0x134f00];return _0x2eeb35;};'use strict';exports[_0x7656('0x0')]=function(_0x5d6871,_0x12af2c){var _0x190ca6=[{'type':_0x7656('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x5d6871[_0x7656('0x2')]()){case _0x7656('0x3'):switch(_0x12af2c[_0x7656('0x2')]()){case _0x7656('0x4'):_0x190ca6[_0x7656('0x5')]({'type':_0x7656('0x6'),'content':'','variableName':'queue'});_0x190ca6[_0x7656('0x5')]({'type':_0x7656('0x6'),'content':'','variableName':_0x7656('0x7')});break;case _0x7656('0x8'):_0x190ca6[_0x7656('0x5')]({'type':'string','content':'Outbound\x20Call','variableName':null});_0x190ca6[_0x7656('0x5')]({'type':_0x7656('0x6'),'content':'','variableName':_0x7656('0x9')});break;}}return _0x190ca6;};exports[_0x7656('0xa')]=function(_0x15b7dd,_0x2226f6){var _0x50a405=[];switch(_0x15b7dd[_0x7656('0x2')]()){case'voice':switch(_0x2226f6[_0x7656('0x2')]()){case _0x7656('0x4'):_0x50a405=[{'type':'string','content':_0x7656('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0xd'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x7')},{'type':'keyValue','content':'','key':_0x7656('0xe'),'keyType':_0x7656('0x6'),'variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x7656('0xf'),'keyType':_0x7656('0x6'),'variableName':'destexten'},{'type':'keyValue','content':'','key':_0x7656('0x10'),'keyType':'variable','variableName':_0x7656('0x11')},{'type':'keyValue','content':'','key':_0x7656('0x12'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x13')},{'type':'keyValue','content':'','key':_0x7656('0x14'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x15')},{'type':'string','content':_0x7656('0x16'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x7656('0x17'),'keyType':_0x7656('0x6'),'variableName':'destcalleridname'},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x18'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x9')},{'type':'string','content':_0x7656('0x19'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x7656('0x1a'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x15')},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x1b'),'keyType':'variable','variableName':_0x7656('0x1c')},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x1d'),'keyType':_0x7656('0x6'),'variableName':'agentcompleteAt'},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x1e'),'keyType':_0x7656('0x6'),'variableName':_0x7656('0x1f')},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x20'),'keyType':'variable','variableName':'talktime'}];break;case _0x7656('0x8'):_0x50a405=[{'type':_0x7656('0x1'),'content':_0x7656('0xb'),'variableName':null},{'type':'keyValue','content':'','key':_0x7656('0x21'),'keyType':_0x7656('0x6'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x22'),'keyType':_0x7656('0x6'),'keyContent':'','variableName':_0x7656('0x23')},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x7656('0x6'),'keyContent':'','variableName':_0x7656('0x13')},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x14'),'keyType':'variable','keyContent':'','variableName':_0x7656('0x24')},{'type':_0x7656('0x1'),'content':_0x7656('0x19')},{'type':_0x7656('0xc'),'content':'','key':_0x7656('0x25'),'keyType':'variable','keyContent':'','variableName':_0x7656('0x26')},{'type':_0x7656('0xc'),'content':'','key':'Complete\x20Time','keyType':_0x7656('0x6'),'keyContent':'','variableName':_0x7656('0x27')},{'type':_0x7656('0xc'),'content':'','key':'Duration','keyType':'variable','keyContent':'','variableName':_0x7656('0x28')},{'type':_0x7656('0xc'),'content':'','key':'Billable\x20Time','keyType':'variable','keyContent':'','variableName':_0x7656('0x29')}];break;}}return _0x50a405;};
\ No newline at end of file
index bbadfdb..8a5aa26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567a=['findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','body','contact','where','default','filter','read','tags','group','ids','count','having','order','forEach','contactName','closed','getClosedOrderClause','getFilteredInteractions','rows','catch','tracked','user','clone','omit','phone','fax','mobile','updateUser','lodash','./sql-utils','./utils'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x567a,0x8d));var _0xa567=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x567a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa567('0x0'));var sqlUtils=require(_0xa567('0x1'));var utils=require(_0xa567('0x2'));exports[_0xa567('0x3')]=function(_0x3d35f7,_0x3a5bcf,_0x1d74fd,_0x588c62,_0x3c35c6){var _0x49aec9={'count':0x0,'rows':[]};var _0x43cc30=sqlUtils[_0xa567('0x4')](_0x3d35f7,_0x1d74fd,_0x3a5bcf);if(_0x43cc30){return Promise[_0xa567('0x5')](_0x49aec9);}var _0x441b0e=sqlUtils[_0xa567('0x6')](_0x3d35f7);var _0x110001={};return Promise[_0xa567('0x5')]()[_0xa567('0x7')](function(){if(_0x3a5bcf['search']){return sqlUtils['parseAdvancedSearchFilter'](_0x3a5bcf[_0xa567('0x8')],_0x3c35c6);}else{return sqlUtils['parseQueryParameters'](_0x3d35f7,_0x3a5bcf,_0x3c35c6);}})[_0xa567('0x7')](function(_0x4ed527){_0x441b0e['where'](_0x4ed527[_0xa567('0x9')]);_0x441b0e['where'](_0x4ed527[_0xa567('0xa')]);_0x441b0e[_0xa567('0xb')](_0x4ed527[_0xa567('0xc')]);_0x441b0e[_0xa567('0xb')](_0x4ed527['fields']);_0x441b0e[_0xa567('0xb')](_0x4ed527[_0xa567('0xd')]);_0x441b0e[_0xa567('0xb')](_0x4ed527['user']);_0x441b0e['having'](_0x4ed527[_0xa567('0xe')]);_0x110001=_0x4ed527[_0xa567('0xf')];return sqlUtils['checkAccountsRestrictions'](_0x3d35f7,_0x1d74fd,_0x3a5bcf);})[_0xa567('0x7')](function(_0x4177b8){_0x441b0e['where'](_0x4177b8);_0x441b0e[_0xa567('0x10')]('i.id');var _0x4b5353=_0x3a5bcf[_0xa567('0x8')]?_0x110001[_0xa567('0x11')]:_0x3a5bcf['tag'];return sqlUtils['countFilteredInteractions'](_0x441b0e,_0x4b5353);})[_0xa567('0x7')](function(_0x2aefe4){_0x49aec9[_0xa567('0x12')]=_0x2aefe4['length'];if(_0x49aec9[_0xa567('0x12')]===0x0){return[];}_0x441b0e[_0xa567('0x13')](_0x110001['clause']);if(_0x588c62[_0xa567('0x14')]){_0x588c62[_0xa567('0x14')][_0xa567('0x15')](function(_0x186a6b){var _0xe5336d=_0x186a6b[0x0]===_0xa567('0x16')?_0x186a6b[0x0]:'i.'+_0x186a6b[0x0];_0x441b0e['order'](_0xe5336d,_0x186a6b[0x1]==='DESC'?![]:!![]);if(_0x186a6b[0x0]===_0xa567('0x17')){var _0x2910b6=sqlUtils[_0xa567('0x18')](_0x3d35f7,_0x3a5bcf);_0x441b0e[_0xa567('0x14')](_0x2910b6,_0x186a6b[0x1]==='DESC'?![]:!![]);}});}return sqlUtils[_0xa567('0x19')](_0x3d35f7,_0x441b0e,_0x3a5bcf,_0x588c62);})[_0xa567('0x7')](function(_0x5aeabf){_0x49aec9[_0xa567('0x1a')]=_0x5aeabf;return _0x49aec9;})[_0xa567('0x1b')](function(_0x58c58a){throw _0x58c58a;});};exports[_0xa567('0x1c')]=function(_0x15b02b,_0x5ea11b){return function(_0x41a3eb,_0xa2087,_0x48f441){var _0x41e709=_0x41a3eb[_0xa567('0x1d')];var _0x2e7430={};var _0x3778d2=_0x41a3eb['query'];if(_0x2e7430){_0x2e7430=_[_0xa567('0x1e')](_0x41a3eb['body']);_0x2e7430=_[_0xa567('0x1f')](_0x2e7430,[_0xa567('0x9'),'html',_0xa567('0x20'),_0xa567('0x21'),_0xa567('0x22')]);}utils[_0xa567('0x23')](_0x41e709,_0x2e7430,_0x3778d2,_0x15b02b,_0x5ea11b);_0x48f441(null);};};
\ No newline at end of file
+var _0x2d52=['skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','contact','default','filter','user','having','read','tags','checkAccountsRestrictions','group','ids','countFilteredInteractions','count','length','clause','order','forEach','contactName','DESC','getFilteredInteractions','rows','tracked','query','clone','omit','body','html','phone','mobile','updateUser','lodash','./utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2d52,0x1ec));var _0x22d5=function(_0x59f655,_0x1c12aa){_0x59f655=_0x59f655-0x0;var _0x1dbb6e=_0x2d52[_0x59f655];return _0x1dbb6e;};'use strict';var _=require(_0x22d5('0x0'));var sqlUtils=require('./sql-utils');var utils=require(_0x22d5('0x1'));exports['findAll']=function(_0x260f72,_0x239d68,_0x5b4bb0,_0x386ac7,_0x403c2e){var _0x50ae84={'count':0x0,'rows':[]};var _0x36efbc=sqlUtils[_0x22d5('0x2')](_0x260f72,_0x5b4bb0,_0x239d68);if(_0x36efbc){return Promise[_0x22d5('0x3')](_0x50ae84);}var _0xf67fb7=sqlUtils['getInteractionsQuery'](_0x260f72);var _0x453372={};return Promise[_0x22d5('0x3')]()[_0x22d5('0x4')](function(){if(_0x239d68[_0x22d5('0x5')]){return sqlUtils[_0x22d5('0x6')](_0x239d68['search'],_0x403c2e);}else{return sqlUtils[_0x22d5('0x7')](_0x260f72,_0x239d68,_0x403c2e);}})[_0x22d5('0x4')](function(_0x1428ff){_0xf67fb7[_0x22d5('0x8')](_0x1428ff['body']);_0xf67fb7[_0x22d5('0x8')](_0x1428ff[_0x22d5('0x9')]);_0xf67fb7[_0x22d5('0x8')](_0x1428ff[_0x22d5('0xa')]);_0xf67fb7[_0x22d5('0x8')](_0x1428ff['fields']);_0xf67fb7[_0x22d5('0x8')](_0x1428ff[_0x22d5('0xb')]);_0xf67fb7[_0x22d5('0x8')](_0x1428ff[_0x22d5('0xc')]);_0xf67fb7[_0x22d5('0xd')](_0x1428ff[_0x22d5('0xe')]);_0x453372=_0x1428ff[_0x22d5('0xf')];return sqlUtils[_0x22d5('0x10')](_0x260f72,_0x5b4bb0,_0x239d68);})[_0x22d5('0x4')](function(_0x4a34ba){_0xf67fb7[_0x22d5('0x8')](_0x4a34ba);_0xf67fb7[_0x22d5('0x11')]('i.id');var _0x461695=_0x239d68[_0x22d5('0x5')]?_0x453372[_0x22d5('0x12')]:_0x239d68['tag'];return sqlUtils[_0x22d5('0x13')](_0xf67fb7,_0x461695);})['then'](function(_0x3b8a5d){_0x50ae84[_0x22d5('0x14')]=_0x3b8a5d[_0x22d5('0x15')];if(_0x50ae84[_0x22d5('0x14')]===0x0){return[];}_0xf67fb7['having'](_0x453372[_0x22d5('0x16')]);if(_0x386ac7['order']){_0x386ac7[_0x22d5('0x17')][_0x22d5('0x18')](function(_0x4cb1e0){var _0x8dedb7=_0x4cb1e0[0x0]===_0x22d5('0x19')?_0x4cb1e0[0x0]:'i.'+_0x4cb1e0[0x0];_0xf67fb7['order'](_0x8dedb7,_0x4cb1e0[0x1]===_0x22d5('0x1a')?![]:!![]);if(_0x4cb1e0[0x0]==='closed'){var _0x1442a6=sqlUtils['getClosedOrderClause'](_0x260f72,_0x239d68);_0xf67fb7[_0x22d5('0x17')](_0x1442a6,_0x4cb1e0[0x1]===_0x22d5('0x1a')?![]:!![]);}});}return sqlUtils[_0x22d5('0x1b')](_0x260f72,_0xf67fb7,_0x239d68,_0x386ac7);})[_0x22d5('0x4')](function(_0x77e245){_0x50ae84[_0x22d5('0x1c')]=_0x77e245;return _0x50ae84;})['catch'](function(_0xf9dd84){throw _0xf9dd84;});};exports[_0x22d5('0x1d')]=function(_0xe9cf12,_0xa0560f){return function(_0xe096f9,_0x2d617f,_0x418ba5){var _0x418e50=_0xe096f9[_0x22d5('0xc')];var _0x5c56b9={};var _0x588386=_0xe096f9[_0x22d5('0x1e')];if(_0x5c56b9){_0x5c56b9=_[_0x22d5('0x1f')](_0xe096f9['body']);_0x5c56b9=_[_0x22d5('0x20')](_0x5c56b9,[_0x22d5('0x21'),_0x22d5('0x22'),_0x22d5('0x23'),'fax',_0x22d5('0x24')]);}utils[_0x22d5('0x25')](_0x418e50,_0x5c56b9,_0x588386,_0xe9cf12,_0xa0560f);_0x418ba5(null);};};
\ No newline at end of file
index 498697b..161fd3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db8=['users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.','messages','\x20=\x20i.id','interactionsTags','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','name','buildExpression','type','default','value','unreadMessages','read','and','operator','$substring','split','contact','find','ContactId','text','start','end','Tag','tags','clause','ids','User','user','UserId','body','plainBody','some','compact','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','then','fields','tag','filter','get','capitalize','chat','Websites','Accounts','resolve','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','query','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_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.id','i.createdAt','i.closed','i.closedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','sequelize','toString','groupBy','Setting','enableEmailPreview','COUNT(*)','isEmpty','t.id\x20IN\x20?','QueryTypes','SELECT','exports','lodash','squel','../parsers/advancedSearch','./update-interaction','../../mysqldb','getAccountFK','role','agent','search','field','color','from','getInteractionFK','user_has_','select','u.id','ui.','left_join','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL'];(function(_0x4fcbbe,_0x55a068){var _0x2ac729=function(_0x44aa09){while(--_0x44aa09){_0x4fcbbe['push'](_0x4fcbbe['shift']());}};_0x2ac729(++_0x55a068);}(_0x4db8,0x89));var _0x84db=function(_0x24421d,_0x4c530d){_0x24421d=_0x24421d-0x0;var _0x4c661b=_0x4db8[_0x24421d];return _0x4c661b;};'use strict';var _=require(_0x84db('0x0'));var squel=require(_0x84db('0x1'));var as=require(_0x84db('0x2'));var qs=require('../parsers/qs');var updateInteraction=require(_0x84db('0x3'))['updateInteraction'];var utils=require('./utils');var db=require(_0x84db('0x4'))['db'];function skipInteractionsQuery(_0x20685f,_0x3e2971,_0x436536){var _0x5f1e6d=![];var _0xbf6982=utils[_0x84db('0x5')](_0x20685f);if(_0x3e2971[_0x84db('0x6')]===_0x84db('0x7')&&!_0x436536[_0x84db('0x8')]&&!_0x436536[_0xbf6982]){_0x5f1e6d=!![];}return _0x5f1e6d;}function getTagsQuery(){return squel['select']()['field']('id')[_0x84db('0x9')]('name')['field'](_0x84db('0xa'))[_0x84db('0xb')]('tools_tags');}function getUsersQuery(_0x4b85e4,_0x54c96b){var _0x1562a0=utils[_0x84db('0xc')](_0x4b85e4);var _0x176444=_0x84db('0xd')+_0x4b85e4+'_interactions';var _0x49036b=squel[_0x84db('0xe')]()['field'](_0x84db('0xf'))['field']('u.fullname')[_0x84db('0x9')](_0x84db('0x10')+_0x1562a0)[_0x84db('0xb')](_0x176444,'ui')[_0x84db('0x11')]('users','u',_0x84db('0x12'));if(_0x54c96b[_0x84db('0x13')]>0x0){_0x49036b[_0x84db('0x14')]('ui.'+_0x1562a0+_0x84db('0x15'),_[_0x84db('0x16')](_0x54c96b,'id'));}return _0x49036b;}function getInteractionsQuery(_0x5beca9){var _0x1feaac=utils[_0x84db('0x17')](_0x5beca9);var _0x57a59c=utils[_0x84db('0x5')](_0x5beca9);var _0x1c9157=utils['getInteractionFK'](_0x5beca9);return squel['select']()[_0x84db('0xb')](_0x1feaac[_0x84db('0x18')],'i')[_0x84db('0x11')]('cm_contacts','c',_0x84db('0x19'))[_0x84db('0x11')](_0x84db('0x1a'),'o',_0x84db('0x1b'))[_0x84db('0x11')](_0x1feaac['accounts'],'a',_0x84db('0x1c')+_0x57a59c)[_0x84db('0x11')](_0x1feaac[_0x84db('0x1d')],'me','me.'+_0x1c9157+_0x84db('0x1e'))[_0x84db('0x11')](_0x1feaac[_0x84db('0x1f')],'it',_0x84db('0x20')+_0x1c9157+_0x84db('0x1e'))[_0x84db('0x11')]('tools_tags','t',_0x84db('0x21'));}function getSqlClauses(){var _0x4eb959={'body':squel[_0x84db('0x22')](),'contact':squel['expr'](),'default':squel['expr'](),'fields':squel[_0x84db('0x22')](),'filter':squel[_0x84db('0x22')](),'read':squel[_0x84db('0x22')](),'tags':{'clause':squel[_0x84db('0x22')](),'ids':null},'user':squel[_0x84db('0x22')]()};return _0x4eb959;}function parseTagParameter(_0x28628d){var _0x34d541=squel[_0x84db('0x22')]();if(_0x28628d){var _0x54fee3=utils[_0x84db('0x23')](_0x28628d);_0x54fee3['forEach'](function(_0x472c0b){_0x34d541['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x472c0b+',%');});}return _0x34d541;}function parseReadParameter(_0x1e5351){var _0x39559f='';if(_0x1e5351){_0x39559f=_0x84db('0x24');if(_0x1e5351==='1'){_0x39559f=_0x39559f[_0x84db('0x25')](_0x84db('0x26'),'=');}else{_0x39559f=_0x39559f[_0x84db('0x25')](_0x84db('0x26'),'>');}}return _0x39559f;}function parseSearchFilter(_0x1cff78,_0x550d6e){var _0x2778b8=squel[_0x84db('0x22')]();if(_0x550d6e){var _0x2e8ac4=_0x550d6e['replace']('\x5c','\x5c\x5c')[_0x84db('0x25')](/'/g,'\x27\x27');if(qs[_0x84db('0x27')](_0x2e8ac4)){_0x2778b8['or'](_0x84db('0x28'),_0x2e8ac4+'%');if([_0x84db('0x29'),_0x84db('0x2a')][_0x84db('0x2b')](_0x1cff78)){_0x2778b8['or'](_0x84db('0x2c'),_0x2e8ac4+'%');}else if(_0x1cff78===_0x84db('0x2d')){_0x2778b8['or'](_0x84db('0x2e'),_0x2e8ac4+'%');}else if(_0x1cff78==='openchannel'){_0x2778b8['or']('i.from\x20LIKE\x20?',_0x2e8ac4+'%');}}else if(_0x1cff78==='mail'&&qs[_0x84db('0x2f')](_0x2e8ac4)){_0x2778b8['or'](_0x84db('0x30'),_0x2e8ac4+'%');}else{if(_0x1cff78===_0x84db('0x31')){_0x2778b8['or'](_0x84db('0x32'),qs[_0x84db('0x33')](_0x2e8ac4,!![]))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x84db('0x33')](_0x2e8ac4));}else if(_0x1cff78!==_0x84db('0x2d')){_0x2778b8['or'](_0x84db('0x34'),qs[_0x84db('0x33')](_0x2e8ac4));}_0x2778b8['or'](_0x84db('0x35'),qs[_0x84db('0x33')](_0x2e8ac4,!![]),null);}}return _0x2778b8;}function parseAdvancedSearchFilter(_0xf4ce1a,_0x27164a){var _0x27c387=getSqlClauses();var _0x52f752=as[_0x84db('0x36')](_0xf4ce1a);var _0x1ffb21=_0x52f752[_0x84db('0x37')];for(var _0x1018eb=0x0;_0x1018eb<_0x52f752[_0x84db('0x38')]['length'];_0x1018eb++){var _0x1e2363=_0x52f752[_0x84db('0x38')][_0x1018eb];var _0xc10b09='i';var _0x39f9c0=_['find'](_0x27164a,[_0x84db('0x39'),_0x1e2363['field']]);if(_0x39f9c0){var _0x567a64=as[_0x84db('0x3a')](_0xc10b09,_0x39f9c0[_0x84db('0x3b')],_0x1e2363);_0x27c387[_0x84db('0x3c')][_0x1ffb21](_0x567a64['text'],_0x567a64[_0x84db('0x3d')]['start'],_0x567a64['value']['end']);}else{switch(_0x1e2363[_0x84db('0x9')]){case _0x84db('0x3e'):var _0x2e41f0=parseReadParameter(_0x1e2363['value']);_0x27c387[_0x84db('0x3f')][_0x84db('0x40')](_0x2e41f0);break;case'Contact':if(_0x1e2363[_0x84db('0x41')]===_0x84db('0x42')){if(_0x1e2363[_0x84db('0x3d')][_0x84db('0x43')]('\x20')['length']>0x1){_0x27c387[_0x84db('0x44')][_0x1ffb21](_0x84db('0x35'),qs['getFullTextValue'](_0x1e2363[_0x84db('0x3d')],!![]),null);}else{var _0x1f19b2='%'+_0x1e2363[_0x84db('0x3d')]+'%';_0x27c387[_0x84db('0x44')][_0x1ffb21]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x1f19b2,_0x1f19b2,_0x1f19b2);}}else{_0x39f9c0=_[_0x84db('0x45')](_0x27164a,['name',_0x84db('0x46')]);_0x1e2363[_0x84db('0x9')]='ContactId';_0x567a64=as['buildExpression'](_0xc10b09,_0x39f9c0[_0x84db('0x3b')],_0x1e2363);_0x27c387[_0x84db('0x44')][_0x1ffb21](_0x567a64[_0x84db('0x47')],_0x567a64[_0x84db('0x3d')][_0x84db('0x48')],_0x567a64[_0x84db('0x3d')][_0x84db('0x49')]);}break;case _0x84db('0x4a'):var _0x48615b=_0x1e2363['value'][_0x84db('0x43')](',')[_0x84db('0x16')](function(_0x1373c4){return Number(_0x1373c4);});var _0xfd66be=parseTagParameter(_0x48615b);_0x27c387[_0x84db('0x4b')][_0x84db('0x4c')][_0x84db('0x40')](_0xfd66be);_0x27c387[_0x84db('0x4b')][_0x84db('0x4d')]=_0x48615b;break;case _0x84db('0x4e'):if(_0x1e2363[_0x84db('0x41')]===_0x84db('0x42')){_0x27c387[_0x84db('0x4f')][_0x1ffb21]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1e2363['value']+'%',null);}else{_0x39f9c0=_['find'](_0x27164a,[_0x84db('0x39'),_0x84db('0x50')]);_0x1e2363[_0x84db('0x9')]='UserId';_0x567a64=as[_0x84db('0x3a')](_0xc10b09,_0x39f9c0[_0x84db('0x3b')],_0x1e2363);_0x27c387[_0x84db('0x4f')][_0x1ffb21](_0x567a64[_0x84db('0x47')],_0x567a64[_0x84db('0x3d')][_0x84db('0x48')],_0x567a64['value'][_0x84db('0x49')]);}break;case _0x84db('0x51'):case _0x84db('0x52'):_0x567a64=as[_0x84db('0x3a')]('me',null,_0x1e2363);_0x27c387['body'][_0x1ffb21](_0x567a64[_0x84db('0x47')],_0x567a64[_0x84db('0x3d')][_0x84db('0x48')],_0x567a64['value'][_0x84db('0x49')]);break;}}}return _0x27c387;}function parseModelFields(_0x4bacbe,_0x3438ec,_0xc040c4){var _0x5cb379=utils[_0x84db('0x5')](_0x4bacbe);var _0x4b62f5=squel['expr']();var _0x1d842a=_(_0x3438ec)['keys']()[_0x84db('0x16')](function(_0x311e77){return _[_0x84db('0x53')](_0xc040c4,[_0x84db('0x39'),_0x311e77])?_0x311e77:undefined;})[_0x84db('0x54')]()['value']();if(_0x1d842a[_0x84db('0x13')]>0x0){_0x1d842a['forEach'](function(_0x1422de){if(_0x1422de===_0x5cb379){_0x4b62f5['and']('i.'+_0x5cb379+_0x84db('0x15'),[][_0x84db('0x55')](_0x3438ec[_0x1422de]));}else if(_0x1422de==='createdAt'){var _0xb437c7=JSON[_0x84db('0x56')](_0x3438ec[_0x1422de])[_0x84db('0x57')];var _0x79d71b=JSON[_0x84db('0x56')](_0x3438ec[_0x1422de])[_0x84db('0x58')];_0x4b62f5[_0x84db('0x40')](_0x84db('0x59'),_0xb437c7,_0x79d71b);}else{if(_0x3438ec[_0x1422de]===_0x84db('0x5a')){_0x4b62f5[_0x84db('0x40')]('i.'+_0x1422de+_0x84db('0x5b'));}else{_0x4b62f5[_0x84db('0x40')]('i.'+_0x1422de+_0x84db('0x5c'),_0x3438ec[_0x1422de]);}}});}return _0x4b62f5;}function parseQueryParameters(_0x59faa1,_0x3463aa,_0x2c96ba){var _0x3678ec=getSqlClauses();return Promise['resolve']()['then'](function(){return parseModelFields(_0x59faa1,_0x3463aa,_0x2c96ba);})[_0x84db('0x5d')](function(_0x4c1ac0){_0x3678ec[_0x84db('0x5e')][_0x84db('0x40')](_0x4c1ac0);return parseReadParameter(_0x3463aa[_0x84db('0x3f')]);})[_0x84db('0x5d')](function(_0x427b60){_0x3678ec[_0x84db('0x3f')]['and'](_0x427b60);return parseTagParameter(_0x3463aa[_0x84db('0x5f')]);})[_0x84db('0x5d')](function(_0x4d82c4){_0x3678ec[_0x84db('0x4b')][_0x84db('0x4c')]['and'](_0x4d82c4);return parseSearchFilter(_0x59faa1,_0x3463aa['filter']);})[_0x84db('0x5d')](function(_0xc75be0){_0x3678ec[_0x84db('0x60')]=_0xc75be0;return _0x3678ec;});}function checkAccountsRestrictions(_0xdb042,_0x29236c,_0x4b167f){var _0x57b694=utils[_0x84db('0x5')](_0xdb042);var _0x33f021=_0x84db('0x61')+_[_0x84db('0x62')](_0xdb042)+(_0xdb042===_0x84db('0x63')?_0x84db('0x64'):_0x84db('0x65'));var _0x2d28b2=squel['expr']();return Promise[_0x84db('0x66')]()[_0x84db('0x5d')](function(){if(_0x4b167f['search']&&_0x29236c['role']===_0x84db('0x7')){return _0x29236c[_0x33f021]({'attributes':['id'],'raw':!![]});}})[_0x84db('0x5d')](function(_0x300eb9){if(_0x300eb9){if(_0x300eb9[_0x84db('0x13')]===0x0){_0x2d28b2['and']('i.'+_0x57b694+'\x20IS\x20NULL');}else{_0x2d28b2[_0x84db('0x40')]('i.'+_0x57b694+_0x84db('0x15'),_[_0x84db('0x16')](_0x300eb9,'id'));}}else if(!_0x4b167f[_0x57b694]){_0x2d28b2[_0x84db('0x40')]('i.'+_0x57b694+_0x84db('0x67'));}})[_0x84db('0x5d')](function(){return _0x2d28b2;});}function getClosedOrderClause(_0x1bc421,_0x14c9ee){var _0x1669d9='';var _0x3a6a86=[_0x84db('0x68'),_0x84db('0x69'),'i.disposition'];if(_0x1bc421===_0x84db('0x31')){_0x3a6a86[_0x84db('0x6a')](_0x84db('0x6b'));}if(_0x14c9ee[_0x84db('0x6c')]==='0'&&_0x1bc421===_0x84db('0x31')){_0x1669d9=_0x84db('0x6b');}else{if(_0x14c9ee[_0x84db('0x6c')]==='1'){_0x3a6a86[_0x84db('0x6d')]();}_0x1669d9=_0x84db('0x6e')+_0x3a6a86[_0x84db('0x6f')](',\x20')+')';}return _0x1669d9;}function getFilteredInteractions(_0x34e3d4,_0x2dbfcc,_0x4e4309,_0x50b1ed){var _0x1695cc=utils['getInteractionFK'](_0x34e3d4);var _0x339dc1=_[_0x84db('0x62')](_0x34e3d4)+_0x84db('0x70');var _0x3ed446=[];var _0x172b22=getTagsQuery();var _0x28eb70={'type':db[_0x84db('0x71')]['QueryTypes']['SELECT'],'raw':!![]};var _0x5d71a0=[];var _0x4582ce=[];return db['sequelize'][_0x84db('0x72')](_0x172b22['toString'](),_0x28eb70)[_0x84db('0x5d')](function(_0x270431){_0x3ed446=_['keyBy'](_0x270431,'id');_0x28eb70=_[_0x84db('0x73')](_0x28eb70,{'model':db[_0x339dc1],'mapToModel':!![],'nest':!![]});if(_0x4e4309[_0x84db('0x5e')]){_0x50b1ed[_0x84db('0x74')]['forEach'](function(_0x43001c){_0x2dbfcc[_0x84db('0x9')]('i.'+_0x43001c);});}else{_0x2dbfcc[_0x84db('0x9')](_0x84db('0x75'),_0x84db('0x3e'));_0x2dbfcc[_0x84db('0x9')]('a.key',_0x84db('0x76'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x77'),'Account.mandatoryDisposition');if(_0x34e3d4==='mail'){_0x2dbfcc['field'](_0x84db('0x78'),_0x84db('0x79'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x7a'),_0x84db('0x7b'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x7c'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x7d'));_0x2dbfcc[_0x84db('0x9')]('i.updatedAt');_0x2dbfcc['field'](_0x84db('0x7e'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x7f'));_0x2dbfcc[_0x84db('0x9')]('i.attach');_0x2dbfcc[_0x84db('0x9')](_0x84db('0x80'));_0x2dbfcc['field'](_0x84db('0x81'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x82'));_0x2dbfcc[_0x84db('0x9')]('i.disposition');_0x2dbfcc[_0x84db('0x9')](_0x84db('0x69'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x68'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x6b'));_0x2dbfcc[_0x84db('0x9')]('i.to');_0x2dbfcc[_0x84db('0x9')](_0x84db('0x83'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x84'));_0x2dbfcc['field'](_0x84db('0x85'));}else if(_0x34e3d4==='openchannel'){_0x2dbfcc['field'](_0x84db('0x86'),'contactName');}else{_0x2dbfcc[_0x84db('0x9')]('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',_0x84db('0x7b'));}if(_0x34e3d4!=='mail'){_0x2dbfcc[_0x84db('0x9')](_0x84db('0x87'));}_0x2dbfcc[_0x84db('0x9')](_0x84db('0x88'),_0x84db('0x89'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x8a'),_0x84db('0x8b'));_0x2dbfcc[_0x84db('0x9')]('c.email',_0x84db('0x8c'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x8d'),'Contact.phone');_0x2dbfcc['field'](_0x84db('0x8e'),_0x84db('0x8f'));_0x2dbfcc['field']('c.fax',_0x84db('0x90'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x91'),_0x84db('0x92'));_0x2dbfcc[_0x84db('0x9')](_0x84db('0x93'),'Owner.internal');_0x2dbfcc['field'](_0x84db('0x94'),_0x84db('0x95'));}if(_0x50b1ed['limit']){_0x2dbfcc['limit'](_0x50b1ed[_0x84db('0x96')]);}if(_0x50b1ed[_0x84db('0x97')]){_0x2dbfcc[_0x84db('0x97')](_0x50b1ed[_0x84db('0x97')]);}return db[_0x84db('0x98')]['query'](_0x2dbfcc['toString'](),_0x28eb70);})['then'](function(_0x40498b){_0x5d71a0=_0x40498b;var _0xe9c81c=getUsersQuery(_0x34e3d4,_0x5d71a0);return db[_0x84db('0x98')][_0x84db('0x72')](_0xe9c81c[_0x84db('0x99')](),_0x28eb70);})[_0x84db('0x5d')](function(_0xb00f95){_0x4582ce=_[_0x84db('0x9a')](_0xb00f95,_0x1695cc);if(_0x34e3d4===_0x84db('0x31')){return db[_0x84db('0x9b')]['findOne']({'attributes':[_0x84db('0x9c')],'raw':!![]});}})[_0x84db('0x5d')](function(_0x3ba625){var _0x2a7266=_0x3ba625?_0x3ba625['enableEmailPreview']:undefined;var _0x4beeff=_0x5d71a0[_0x84db('0x16')](function(_0x5f4e2f){return updateInteraction(_0x5f4e2f,_0x3ed446,_0x4582ce,_0x2a7266);});return Promise['all'](_0x4beeff);});}function countFilteredInteractions(_0x21c097,_0x4ff7c2){var _0x372be8=_0x21c097['clone']();_0x372be8[_0x84db('0x9')](_0x84db('0x9d'));_0x372be8[_0x84db('0x9')](_0x84db('0x75'),'unreadMessages');var _0x2056e7=utils[_0x84db('0x23')](_0x4ff7c2);if(!_[_0x84db('0x9e')](_0x2056e7)){_0x372be8[_0x84db('0x14')](_0x84db('0x9f'),_0x2056e7);}var _0x29bad2={'type':db[_0x84db('0x71')][_0x84db('0xa0')][_0x84db('0xa1')],'raw':!![]};return db[_0x84db('0x98')]['query'](_0x372be8[_0x84db('0x99')](),_0x29bad2);}module[_0x84db('0xa2')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0x38c7=['interactionsTags','expr','getSelectedTags','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','i.phone\x20LIKE\x20?','i.fax\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','getFullTextValue','fax','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','conditions','length','find','buildExpression','type','default','value','end','unreadMessages','and','Contact','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','tags','clause','ids','User','operator','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','forEach','\x20IN\x20?','concat','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','resolve','then','fields','read','filter','get','capitalize','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','CONCAT_WS(\x27\x27,\x20','Interaction','QueryTypes','sequelize','query','toString','merge','attributes','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_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.id','i.createdAt','i.closed','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','i.MailAccountId','openchannel','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','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','Contact.firstName','c.lastName','Contact.lastName','c.phone','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','limit','offset','groupBy','Setting','findOne','enableEmailPreview','all','COUNT(*)','isEmpty','t.id\x20IN\x20?','Sequelize','SELECT','lodash','squel','../parsers/qs','./update-interaction','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','field','name','from','tools_tags','user_has_','_interactions','select','u.id','u.fullname','where','ui.','map','getInteractionsTables','getInteractionFK','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id'];(function(_0x58a551,_0x61dbd6){var _0x4162b0=function(_0x58732b){while(--_0x58732b){_0x58a551['push'](_0x58a551['shift']());}};_0x4162b0(++_0x61dbd6);}(_0x38c7,0x11a));var _0x738c=function(_0x49a168,_0x3bddfa){_0x49a168=_0x49a168-0x0;var _0x5ef4d8=_0x38c7[_0x49a168];return _0x5ef4d8;};'use strict';var _=require(_0x738c('0x0'));var squel=require(_0x738c('0x1'));var as=require('../parsers/advancedSearch');var qs=require(_0x738c('0x2'));var updateInteraction=require(_0x738c('0x3'))[_0x738c('0x4')];var utils=require(_0x738c('0x5'));var db=require(_0x738c('0x6'))['db'];function skipInteractionsQuery(_0x2f3ea5,_0x4608a8,_0x1cde83){var _0x1ced31=![];var _0x46d7ab=utils[_0x738c('0x7')](_0x2f3ea5);if(_0x4608a8[_0x738c('0x8')]===_0x738c('0x9')&&!_0x1cde83[_0x738c('0xa')]&&!_0x1cde83[_0x46d7ab]){_0x1ced31=!![];}return _0x1ced31;}function getTagsQuery(){return squel['select']()[_0x738c('0xb')]('id')['field'](_0x738c('0xc'))['field']('color')[_0x738c('0xd')](_0x738c('0xe'));}function getUsersQuery(_0x37fdcf,_0x39cecf){var _0x21f23c=utils['getInteractionFK'](_0x37fdcf);var _0x3548b1=_0x738c('0xf')+_0x37fdcf+_0x738c('0x10');var _0x6a5d53=squel[_0x738c('0x11')]()['field'](_0x738c('0x12'))[_0x738c('0xb')](_0x738c('0x13'))[_0x738c('0xb')]('ui.'+_0x21f23c)[_0x738c('0xd')](_0x3548b1,'ui')['left_join']('users','u','u.id\x20=\x20ui.UserId');if(_0x39cecf['length']>0x0){_0x6a5d53[_0x738c('0x14')](_0x738c('0x15')+_0x21f23c+'\x20IN\x20?',_[_0x738c('0x16')](_0x39cecf,'id'));}return _0x6a5d53;}function getInteractionsQuery(_0x1d865a){var _0x50c5ec=utils[_0x738c('0x17')](_0x1d865a);var _0x595d70=utils[_0x738c('0x7')](_0x1d865a);var _0x154400=utils[_0x738c('0x18')](_0x1d865a);return squel[_0x738c('0x11')]()[_0x738c('0xd')](_0x50c5ec['interactions'],'i')[_0x738c('0x19')](_0x738c('0x1a'),'c',_0x738c('0x1b'))[_0x738c('0x19')]('users','o',_0x738c('0x1c'))[_0x738c('0x19')](_0x50c5ec[_0x738c('0x1d')],'a',_0x738c('0x1e')+_0x595d70)['left_join'](_0x50c5ec[_0x738c('0x1f')],'me',_0x738c('0x20')+_0x154400+_0x738c('0x21'))[_0x738c('0x19')](_0x50c5ec[_0x738c('0x22')],'it','it.'+_0x154400+_0x738c('0x21'))[_0x738c('0x19')](_0x738c('0xe'),'t','t.id\x20=\x20it.TagId');}function getSqlClauses(){var _0x3936f4={'body':squel[_0x738c('0x23')](),'contact':squel[_0x738c('0x23')](),'default':squel[_0x738c('0x23')](),'fields':squel['expr'](),'filter':squel[_0x738c('0x23')](),'read':squel[_0x738c('0x23')](),'tags':{'clause':squel[_0x738c('0x23')](),'ids':null},'user':squel[_0x738c('0x23')]()};return _0x3936f4;}function parseTagParameter(_0x1db222){var _0x1ac4fc=squel[_0x738c('0x23')]();if(_0x1db222){var _0x9a53aa=utils[_0x738c('0x24')](_0x1db222);_0x9a53aa['forEach'](function(_0x116dfd){_0x1ac4fc['or'](_0x738c('0x25'),'%,'+_0x116dfd+',%');});}return _0x1ac4fc;}function parseReadParameter(_0x328f16){var _0x5cf900='';if(_0x328f16){_0x5cf900=_0x738c('0x26');if(_0x328f16==='1'){_0x5cf900=_0x5cf900[_0x738c('0x27')](_0x738c('0x28'),'=');}else{_0x5cf900=_0x5cf900[_0x738c('0x27')](_0x738c('0x28'),'>');}}return _0x5cf900;}function parseSearchFilter(_0x10c052,_0xc633d5){var _0x3429be=squel[_0x738c('0x23')]();if(_0xc633d5){var _0x53a3c4=_0xc633d5['replace']('\x5c','\x5c\x5c')[_0x738c('0x27')](/'/g,'\x27\x27');if(qs[_0x738c('0x29')](_0x53a3c4)){_0x3429be['or'](_0x738c('0x2a'),_0x53a3c4+'%');if([_0x738c('0x2b'),_0x738c('0x2c')]['includes'](_0x10c052)){_0x3429be['or'](_0x738c('0x2d'),_0x53a3c4+'%');}else if(_0x10c052==='fax'){_0x3429be['or'](_0x738c('0x2e'),_0x53a3c4+'%');}else if(_0x10c052==='openchannel'){_0x3429be['or']('i.from\x20LIKE\x20?',_0x53a3c4+'%');}}else if(_0x10c052===_0x738c('0x2f')&&qs[_0x738c('0x30')](_0x53a3c4)){_0x3429be['or'](_0x738c('0x31'),_0x53a3c4+'%');}else{if(_0x10c052===_0x738c('0x2f')){_0x3429be['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x738c('0x32')](_0x53a3c4,!![]))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x738c('0x32')](_0x53a3c4));}else if(_0x10c052!==_0x738c('0x33')){_0x3429be['or'](_0x738c('0x34'),qs[_0x738c('0x32')](_0x53a3c4));}_0x3429be['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x738c('0x32')](_0x53a3c4,!![]),null);}}return _0x3429be;}function parseAdvancedSearchFilter(_0x19ca7c,_0x508e47){var _0x36a58f=getSqlClauses();var _0x4f5f9e=as[_0x738c('0x35')](_0x19ca7c);var _0x3be2af=_0x4f5f9e[_0x738c('0x36')];for(var _0x2bc801=0x0;_0x2bc801<_0x4f5f9e[_0x738c('0x37')][_0x738c('0x38')];_0x2bc801++){var _0x2be196=_0x4f5f9e[_0x738c('0x37')][_0x2bc801];var _0x2d827b='i';var _0x20a22f=_[_0x738c('0x39')](_0x508e47,[_0x738c('0xc'),_0x2be196['field']]);if(_0x20a22f){var _0x1f93f8=as[_0x738c('0x3a')](_0x2d827b,_0x20a22f[_0x738c('0x3b')],_0x2be196);_0x36a58f[_0x738c('0x3c')][_0x3be2af](_0x1f93f8['text'],_0x1f93f8['value']['start'],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x3e')]);}else{switch(_0x2be196[_0x738c('0xb')]){case _0x738c('0x3f'):var _0x11f873=parseReadParameter(_0x2be196[_0x738c('0x3d')]);_0x36a58f['read'][_0x738c('0x40')](_0x11f873);break;case _0x738c('0x41'):if(_0x2be196['operator']===_0x738c('0x42')){if(_0x2be196[_0x738c('0x3d')][_0x738c('0x43')]('\x20')['length']>0x1){_0x36a58f[_0x738c('0x44')][_0x3be2af](_0x738c('0x45'),qs[_0x738c('0x32')](_0x2be196[_0x738c('0x3d')],!![]),null);}else{var _0x42020c='%'+_0x2be196[_0x738c('0x3d')]+'%';_0x36a58f[_0x738c('0x44')][_0x3be2af](_0x738c('0x46'),_0x42020c,_0x42020c,_0x42020c);}}else{_0x20a22f=_[_0x738c('0x39')](_0x508e47,[_0x738c('0xc'),_0x738c('0x47')]);_0x2be196[_0x738c('0xb')]=_0x738c('0x47');_0x1f93f8=as[_0x738c('0x3a')](_0x2d827b,_0x20a22f[_0x738c('0x3b')],_0x2be196);_0x36a58f['contact'][_0x3be2af](_0x1f93f8[_0x738c('0x48')],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x49')],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x3e')]);}break;case'Tag':var _0x56e392=_0x2be196[_0x738c('0x3d')][_0x738c('0x43')](',')[_0x738c('0x16')](function(_0xf9fd86){return Number(_0xf9fd86);});var _0x4753b2=parseTagParameter(_0x56e392);_0x36a58f[_0x738c('0x4a')][_0x738c('0x4b')][_0x738c('0x40')](_0x4753b2);_0x36a58f[_0x738c('0x4a')][_0x738c('0x4c')]=_0x56e392;break;case _0x738c('0x4d'):if(_0x2be196[_0x738c('0x4e')]===_0x738c('0x42')){_0x36a58f[_0x738c('0x4f')][_0x3be2af](_0x738c('0x50'),'%'+_0x2be196[_0x738c('0x3d')]+'%',null);}else{_0x20a22f=_[_0x738c('0x39')](_0x508e47,[_0x738c('0xc'),_0x738c('0x51')]);_0x2be196[_0x738c('0xb')]=_0x738c('0x51');_0x1f93f8=as[_0x738c('0x3a')](_0x2d827b,_0x20a22f[_0x738c('0x3b')],_0x2be196);_0x36a58f[_0x738c('0x4f')][_0x3be2af](_0x1f93f8[_0x738c('0x48')],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x49')],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x3e')]);}break;case _0x738c('0x52'):case'plainBody':_0x1f93f8=as[_0x738c('0x3a')]('me',null,_0x2be196);_0x36a58f[_0x738c('0x52')][_0x3be2af](_0x1f93f8[_0x738c('0x48')],_0x1f93f8[_0x738c('0x3d')][_0x738c('0x49')],_0x1f93f8[_0x738c('0x3d')]['end']);break;}}}return _0x36a58f;}function parseModelFields(_0x4ce910,_0x2b02d6,_0x5b18a6){var _0x5ab6a0=utils[_0x738c('0x7')](_0x4ce910);var _0x5b6e9e=squel['expr']();var _0x8d2a7f=_(_0x2b02d6)[_0x738c('0x53')]()['map'](function(_0x15e419){return _['some'](_0x5b18a6,[_0x738c('0xc'),_0x15e419])?_0x15e419:undefined;})['compact']()[_0x738c('0x3d')]();if(_0x8d2a7f[_0x738c('0x38')]>0x0){_0x8d2a7f[_0x738c('0x54')](function(_0x26c656){if(_0x26c656===_0x5ab6a0){_0x5b6e9e['and']('i.'+_0x5ab6a0+_0x738c('0x55'),[][_0x738c('0x56')](_0x2b02d6[_0x26c656]));}else if(_0x26c656==='createdAt'){var _0x4e5501=JSON['parse'](_0x2b02d6[_0x26c656])[_0x738c('0x57')];var _0x3ff3cb=JSON['parse'](_0x2b02d6[_0x26c656])[_0x738c('0x58')];_0x5b6e9e[_0x738c('0x40')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4e5501,_0x3ff3cb);}else{if(_0x2b02d6[_0x26c656]===_0x738c('0x59')){_0x5b6e9e['and']('i.'+_0x26c656+_0x738c('0x5a'));}else{_0x5b6e9e['and']('i.'+_0x26c656+_0x738c('0x5b'),_0x2b02d6[_0x26c656]);}}});}return _0x5b6e9e;}function parseQueryParameters(_0x24a4e5,_0x23ffca,_0x1c8ceb){var _0x1b8a52=getSqlClauses();return Promise[_0x738c('0x5c')]()[_0x738c('0x5d')](function(){return parseModelFields(_0x24a4e5,_0x23ffca,_0x1c8ceb);})[_0x738c('0x5d')](function(_0x15bb0a){_0x1b8a52[_0x738c('0x5e')][_0x738c('0x40')](_0x15bb0a);return parseReadParameter(_0x23ffca[_0x738c('0x5f')]);})[_0x738c('0x5d')](function(_0x2ffb73){_0x1b8a52['read'][_0x738c('0x40')](_0x2ffb73);return parseTagParameter(_0x23ffca['tag']);})['then'](function(_0x5a68c1){_0x1b8a52[_0x738c('0x4a')]['clause']['and'](_0x5a68c1);return parseSearchFilter(_0x24a4e5,_0x23ffca[_0x738c('0x60')]);})[_0x738c('0x5d')](function(_0x218e58){_0x1b8a52[_0x738c('0x60')]=_0x218e58;return _0x1b8a52;});}function checkAccountsRestrictions(_0x311170,_0x578d26,_0x2514ca){var _0x4e680c=utils[_0x738c('0x7')](_0x311170);var _0x16fd48=_0x738c('0x61')+_[_0x738c('0x62')](_0x311170)+(_0x311170==='chat'?_0x738c('0x63'):_0x738c('0x64'));var _0x5a12ac=squel[_0x738c('0x23')]();return Promise[_0x738c('0x5c')]()[_0x738c('0x5d')](function(){if(_0x2514ca[_0x738c('0xa')]&&_0x578d26[_0x738c('0x8')]===_0x738c('0x9')){return _0x578d26[_0x16fd48]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x4fa9ee){if(_0x4fa9ee){if(_0x4fa9ee[_0x738c('0x38')]===0x0){_0x5a12ac[_0x738c('0x40')]('i.'+_0x4e680c+'\x20IS\x20NULL');}else{_0x5a12ac[_0x738c('0x40')]('i.'+_0x4e680c+_0x738c('0x55'),_[_0x738c('0x16')](_0x4fa9ee,'id'));}}else if(!_0x2514ca[_0x4e680c]){_0x5a12ac[_0x738c('0x40')]('i.'+_0x4e680c+_0x738c('0x65'));}})[_0x738c('0x5d')](function(){return _0x5a12ac;});}function getClosedOrderClause(_0xb77ede,_0x2cdc31){var _0x2ba8c4='';var _0x26d18c=[_0x738c('0x66'),_0x738c('0x67'),_0x738c('0x68')];if(_0xb77ede==='mail'){_0x26d18c[_0x738c('0x69')](_0x738c('0x6a'));}if(_0x2cdc31['closed']==='0'&&_0xb77ede===_0x738c('0x2f')){_0x2ba8c4='i.substatus';}else{if(_0x2cdc31[_0x738c('0x6b')]==='1'){_0x26d18c['shift']();}_0x2ba8c4=_0x738c('0x6c')+_0x26d18c['join'](',\x20')+')';}return _0x2ba8c4;}function getFilteredInteractions(_0x85927c,_0x7dffc7,_0x4d07f9,_0x2b8c88){var _0x4d3c17=utils['getInteractionFK'](_0x85927c);var _0x28a60b=_[_0x738c('0x62')](_0x85927c)+_0x738c('0x6d');var _0x29ea5b=[];var _0x2f8785=getTagsQuery();var _0x456206={'type':db['Sequelize'][_0x738c('0x6e')]['SELECT'],'raw':!![]};var _0x8cf392=[];var _0x56a0a6=[];return db[_0x738c('0x6f')][_0x738c('0x70')](_0x2f8785[_0x738c('0x71')](),_0x456206)[_0x738c('0x5d')](function(_0x5efa48){_0x29ea5b=_['keyBy'](_0x5efa48,'id');_0x456206=_[_0x738c('0x72')](_0x456206,{'model':db[_0x28a60b],'mapToModel':!![],'nest':!![]});if(_0x4d07f9[_0x738c('0x5e')]){_0x2b8c88[_0x738c('0x73')][_0x738c('0x54')](function(_0xf21d2a){_0x7dffc7['field']('i.'+_0xf21d2a);});}else{_0x7dffc7[_0x738c('0xb')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x738c('0x3f'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x74'),_0x738c('0x75'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x76'),_0x738c('0x77'));if(_0x85927c===_0x738c('0x2f')){_0x7dffc7['field']('a.email',_0x738c('0x78'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x79'),_0x738c('0x7a'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x7b'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x7c'));_0x7dffc7[_0x738c('0xb')]('i.updatedAt');_0x7dffc7['field'](_0x738c('0x7d'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x7e'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x7f'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x80'));_0x7dffc7['field'](_0x738c('0x81'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x82'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x68'));_0x7dffc7[_0x738c('0xb')]('i.secondDisposition');_0x7dffc7[_0x738c('0xb')](_0x738c('0x66'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x6a'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x83'));_0x7dffc7[_0x738c('0xb')]('i.ContactId');_0x7dffc7['field'](_0x738c('0x84'));_0x7dffc7[_0x738c('0xb')]('i.UserId');}else if(_0x85927c===_0x738c('0x85')){_0x7dffc7['field'](_0x738c('0x86'),_0x738c('0x7a'));}else{_0x7dffc7[_0x738c('0xb')](_0x738c('0x87'),_0x738c('0x7a'));}if(_0x85927c!=='mail'){_0x7dffc7['field']('i.*');}_0x7dffc7[_0x738c('0xb')](_0x738c('0x88'),_0x738c('0x89'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x8a'),_0x738c('0x8b'));_0x7dffc7[_0x738c('0xb')]('c.email','Contact.email');_0x7dffc7['field'](_0x738c('0x8c'),'Contact.phone');_0x7dffc7[_0x738c('0xb')]('c.mobile','Contact.mobile');_0x7dffc7[_0x738c('0xb')]('c.fax',_0x738c('0x8d'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x8e'),_0x738c('0x8f'));_0x7dffc7[_0x738c('0xb')](_0x738c('0x90'),'Owner.internal');_0x7dffc7['field'](_0x738c('0x91'),'TagIds');}if(_0x2b8c88[_0x738c('0x92')]){_0x7dffc7[_0x738c('0x92')](_0x2b8c88['limit']);}if(_0x2b8c88[_0x738c('0x93')]){_0x7dffc7[_0x738c('0x93')](_0x2b8c88[_0x738c('0x93')]);}return db[_0x738c('0x6f')]['query'](_0x7dffc7[_0x738c('0x71')](),_0x456206);})[_0x738c('0x5d')](function(_0x6f81ff){_0x8cf392=_0x6f81ff;var _0x3097f8=getUsersQuery(_0x85927c,_0x8cf392);return db[_0x738c('0x6f')]['query'](_0x3097f8[_0x738c('0x71')](),_0x456206);})[_0x738c('0x5d')](function(_0x5b8f90){_0x56a0a6=_[_0x738c('0x94')](_0x5b8f90,_0x4d3c17);if(_0x85927c===_0x738c('0x2f')){return db[_0x738c('0x95')][_0x738c('0x96')]({'attributes':[_0x738c('0x97')],'raw':!![]});}})[_0x738c('0x5d')](function(_0x1a8073){var _0x4bd5b7=_0x1a8073?_0x1a8073[_0x738c('0x97')]:undefined;var _0x291836=_0x8cf392['map'](function(_0x5844b6){return updateInteraction(_0x5844b6,_0x29ea5b,_0x56a0a6,_0x4bd5b7);});return Promise[_0x738c('0x98')](_0x291836);});}function countFilteredInteractions(_0x10281d,_0x48665c){var _0x4c79ca=_0x10281d['clone']();_0x4c79ca[_0x738c('0xb')](_0x738c('0x99'));_0x4c79ca[_0x738c('0xb')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x738c('0x3f'));var _0x4b29dc=utils['getSelectedTags'](_0x48665c);if(!_[_0x738c('0x9a')](_0x4b29dc)){_0x4c79ca[_0x738c('0x14')](_0x738c('0x9b'),_0x4b29dc);}var _0x5474a9={'type':db[_0x738c('0x9c')][_0x738c('0x6e')][_0x738c('0x9d')],'raw':!![]};return db[_0x738c('0x6f')]['query'](_0x4c79ca['toString'](),_0x5474a9);}module['exports']={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index e2fbe0b..f2b7605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab77=['waiting','talking','answered','unmanaged','abandoned','total','disposition','UserId','findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','lodash','../../mysqldb','fullname','forEach','push'];(function(_0x5886c1,_0x3f9e4e){var _0x48fa6e=function(_0x2eecf4){while(--_0x2eecf4){_0x5886c1['push'](_0x5886c1['shift']());}};_0x48fa6e(++_0x3f9e4e);}(_0xab77,0xeb));var _0x7ab7=function(_0x18894b,_0xb20093){_0x18894b=_0x18894b-0x0;var _0x4b3230=_0xab77[_0x18894b];return _0x4b3230;};'use strict';var _=require(_0x7ab7('0x0'));var db=require(_0x7ab7('0x1'))['db'];function getInteractionUsers(_0x20e32d,_0x58a8cf){return new Promise(function(_0x172960,_0x9c9782){try{var _0x6199c2=[];if(_0x58a8cf[_0x20e32d]){_0x6199c2=_0x58a8cf[_0x20e32d]['map'](function(_0xc1e623){return{'id':_0xc1e623['id'],'fullname':_0xc1e623[_0x7ab7('0x2')]};});}return _0x172960(_0x6199c2);}catch(_0x256cc0){_0x9c9782(_0x256cc0);}});}function getInteractionTags(_0x5f0b49,_0x97780){var _0x5aad4c=[];if(_0x5f0b49){_0x5f0b49['split'](',')[_0x7ab7('0x3')](function(_0x267db4){_0x5aad4c[_0x7ab7('0x4')](_0x97780[_0x267db4]);});}return _0x5aad4c;}function updateWaitingCounter(_0x42364e){if(_0x42364e[_0x7ab7('0x5')]){_0x42364e['waiting']-=0x1;}}function updateInteractionCounters(_0x5e31ad){_0x5e31ad[_0x7ab7('0x5')]=0x0;_0x5e31ad[_0x7ab7('0x6')]=0x0;_0x5e31ad[_0x7ab7('0x7')]=0x0;_0x5e31ad[_0x7ab7('0x8')]=0x0;_0x5e31ad[_0x7ab7('0x9')]=0x0;_0x5e31ad[_0x7ab7('0xa')]=0x0;if(_0x5e31ad['closed']){if(_0x5e31ad[_0x7ab7('0xb')]===_0x7ab7('0x9')){_0x5e31ad[_0x7ab7('0x9')]+=0x1;updateWaitingCounter(_0x5e31ad);}if(_0x5e31ad[_0x7ab7('0xc')]){_0x5e31ad[_0x7ab7('0x7')]+=0x1;if(_0x5e31ad[_0x7ab7('0x6')]){_0x5e31ad[_0x7ab7('0x6')]-=0x1;}}else{if(_0x5e31ad[_0x7ab7('0xb')]){_0x5e31ad[_0x7ab7('0x8')]+=0x1;updateWaitingCounter(_0x5e31ad);}}}else{if(!_0x5e31ad[_0x7ab7('0xc')]){_0x5e31ad['waiting']+=0x1;}if(_0x5e31ad[_0x7ab7('0xc')]){_0x5e31ad[_0x7ab7('0x6')]+=0x1;updateWaitingCounter(_0x5e31ad);}}_0x5e31ad[_0x7ab7('0xa')]+=0x1;return _0x5e31ad;}function getLastMessageText(_0x40fc9c){return db['MailMessage'][_0x7ab7('0xd')]({'where':{'$and':[{'MailInteractionId':_0x40fc9c['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x7ab7('0xe')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x7ab7('0xf')],'order':_0x7ab7('0x10'),'raw':!![]})[_0x7ab7('0x11')](function(_0x372076){if(_0x372076&&_0x372076[_0x7ab7('0xf')]){_0x40fc9c[_0x7ab7('0x12')]=_[_0x7ab7('0x13')](_0x372076[_0x7ab7('0xf')]);}return _0x40fc9c;})[_0x7ab7('0x14')](function(_0x3efd46){throw _0x3efd46;});}exports[_0x7ab7('0x15')]=function(_0x7e8803,_0x4e8431,_0x39237e,_0x3d9ced){return new Promise(function(_0x2e9bc9,_0x1ab4ff){return getInteractionUsers(_0x7e8803['id'],_0x39237e)[_0x7ab7('0x11')](function(_0x28226d){_0x7e8803[_0x7ab7('0x16')]=_0x28226d;return getInteractionTags(_0x7e8803[_0x7ab7('0x17')],_0x4e8431);})['then'](function(_0x388609){_0x7e8803['Tags']=_0x388609;delete _0x7e8803[_0x7ab7('0x17')];return updateInteractionCounters(_0x7e8803);})[_0x7ab7('0x11')](function(_0x415b0d){if(_0x3d9ced){return getLastMessageText(_0x415b0d);}else{return _0x415b0d;}})[_0x7ab7('0x11')](function(_0x4bb76e){_0x2e9bc9(_0x4bb76e);})[_0x7ab7('0x14')](function(_0x5cbe93){_0x1ab4ff(_0x5cbe93);});});};
\ No newline at end of file
+var _0xc1ab=['TagIds','lodash','map','push','waiting','talking','unmanaged','total','closed','disposition','abandoned','UserId','MailMessage','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users'];(function(_0x50a0b7,_0x5a25f6){var _0x1a7e9a=function(_0xad49b2){while(--_0xad49b2){_0x50a0b7['push'](_0x50a0b7['shift']());}};_0x1a7e9a(++_0x5a25f6);}(_0xc1ab,0x11f));var _0xbc1a=function(_0x223603,_0x29fff3){_0x223603=_0x223603-0x0;var _0x416d6e=_0xc1ab[_0x223603];return _0x416d6e;};'use strict';var _=require(_0xbc1a('0x0'));var db=require('../../mysqldb')['db'];function getInteractionUsers(_0x7c399b,_0xcc30ac){return new Promise(function(_0x53959f,_0x514456){try{var _0x422e22=[];if(_0xcc30ac[_0x7c399b]){_0x422e22=_0xcc30ac[_0x7c399b][_0xbc1a('0x1')](function(_0xb06ef){return{'id':_0xb06ef['id'],'fullname':_0xb06ef['fullname']};});}return _0x53959f(_0x422e22);}catch(_0x2037d6){_0x514456(_0x2037d6);}});}function getInteractionTags(_0x4e0c64,_0xabc176){var _0x599dea=[];if(_0x4e0c64){_0x4e0c64['split'](',')['forEach'](function(_0xdae03b){_0x599dea[_0xbc1a('0x2')](_0xabc176[_0xdae03b]);});}return _0x599dea;}function updateWaitingCounter(_0x3269cd){if(_0x3269cd[_0xbc1a('0x3')]){_0x3269cd[_0xbc1a('0x3')]-=0x1;}}function updateInteractionCounters(_0x2bef66){_0x2bef66[_0xbc1a('0x3')]=0x0;_0x2bef66[_0xbc1a('0x4')]=0x0;_0x2bef66['answered']=0x0;_0x2bef66[_0xbc1a('0x5')]=0x0;_0x2bef66['abandoned']=0x0;_0x2bef66[_0xbc1a('0x6')]=0x0;if(_0x2bef66[_0xbc1a('0x7')]){if(_0x2bef66[_0xbc1a('0x8')]===_0xbc1a('0x9')){_0x2bef66[_0xbc1a('0x9')]+=0x1;updateWaitingCounter(_0x2bef66);}if(_0x2bef66['UserId']){_0x2bef66['answered']+=0x1;if(_0x2bef66[_0xbc1a('0x4')]){_0x2bef66[_0xbc1a('0x4')]-=0x1;}}else{if(_0x2bef66[_0xbc1a('0x8')]){_0x2bef66[_0xbc1a('0x5')]+=0x1;updateWaitingCounter(_0x2bef66);}}}else{if(!_0x2bef66[_0xbc1a('0xa')]){_0x2bef66['waiting']+=0x1;}if(_0x2bef66[_0xbc1a('0xa')]){_0x2bef66['talking']+=0x1;updateWaitingCounter(_0x2bef66);}}_0x2bef66[_0xbc1a('0x6')]+=0x1;return _0x2bef66;}function getLastMessageText(_0x3c58d5){return db[_0xbc1a('0xb')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x3c58d5['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbc1a('0xc')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xbc1a('0xd')],'order':_0xbc1a('0xe'),'raw':!![]})[_0xbc1a('0xf')](function(_0x196afa){if(_0x196afa&&_0x196afa[_0xbc1a('0xd')]){_0x3c58d5[_0xbc1a('0x10')]=_[_0xbc1a('0x11')](_0x196afa[_0xbc1a('0xd')]);}return _0x3c58d5;})[_0xbc1a('0x12')](function(_0x5d5328){throw _0x5d5328;});}exports[_0xbc1a('0x13')]=function(_0x29ff69,_0xabc65c,_0x295116,_0x4d8d5f){return new Promise(function(_0x4b116e,_0x168379){return getInteractionUsers(_0x29ff69['id'],_0x295116)[_0xbc1a('0xf')](function(_0x4f814f){_0x29ff69[_0xbc1a('0x14')]=_0x4f814f;return getInteractionTags(_0x29ff69[_0xbc1a('0x15')],_0xabc65c);})['then'](function(_0x5e3b4a){_0x29ff69['Tags']=_0x5e3b4a;delete _0x29ff69[_0xbc1a('0x15')];return updateInteractionCounters(_0x29ff69);})[_0xbc1a('0xf')](function(_0x305109){if(_0x4d8d5f){return getLastMessageText(_0x305109);}else{return _0x305109;}})[_0xbc1a('0xf')](function(_0x2d3b14){_0x4b116e(_0x2d3b14);})['catch'](function(_0x4f7525){_0x168379(_0x4f7525);});});};
\ No newline at end of file
index 4d77949..d53a392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x043e=['unknown','chat','websites','accounts','_messages','user_has_','_interactions','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','findOne','then','catch','error','../../mysqldb','../../config/logger','openchannel-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','Account','InteractionId','upperFirst'];(function(_0x2fdbeb,_0x464897){var _0x3c57a3=function(_0x9f428d){while(--_0x9f428d){_0x2fdbeb['push'](_0x2fdbeb['shift']());}};_0x3c57a3(++_0x464897);}(_0x043e,0x135));var _0xe043=function(_0x3dd7b3,_0x2c1b54){_0x3dd7b3=_0x3dd7b3-0x0;var _0x5381b0=_0x043e[_0x3dd7b3];return _0x5381b0;};'use strict';var _=require('lodash');var db=require(_0xe043('0x0'))['db'];var loggers={'openchannel':require(_0xe043('0x1'))(_0xe043('0x2')),'mail':require(_0xe043('0x1'))('mail-interactions'),'fax':require(_0xe043('0x1'))(_0xe043('0x3')),'sms':require(_0xe043('0x1'))(_0xe043('0x4')),'chat':require(_0xe043('0x1'))(_0xe043('0x5')),'whatsapp':require('../../config/logger')(_0xe043('0x6'))};function getAccountFK(_0xc97b73){return _['capitalize'](_0xc97b73)+(_0xc97b73==='chat'?'Website':_0xe043('0x7'))+'Id';}function getInteractionFK(_0x407bac){return _['capitalize'](_0x407bac)+_0xe043('0x8');}function getInteractionId(_0x472e61,_0x45aa9d,_0x425e61){if(_0x472e61&&_0x472e61[_['upperFirst'](_0x425e61)+_0xe043('0x8')]){return _0x472e61[_[_0xe043('0x9')](_0x425e61)+'InteractionId'];}else if(_0x472e61&&_0x472e61['id']){return _0x472e61['id'];}else if(_0x45aa9d&&_0x45aa9d['id']){return _0x45aa9d['id'];}else{return _0xe043('0xa');}}function getInteractionsTables(_0x3b6d07){return{'accounts':_0x3b6d07+'_'+(_0x3b6d07===_0xe043('0xb')?_0xe043('0xc'):_0xe043('0xd')),'interactions':_0x3b6d07+'_interactions','interactionsTags':_0x3b6d07+'_interaction_has_tags','messages':_0x3b6d07+_0xe043('0xe'),'userInteractions':_0xe043('0xf')+_0x3b6d07+_0xe043('0x10')};}function getSelectedTags(_0x16b2a5){var _0xfe5929=[];if(_0x16b2a5){_0xfe5929=Array['isArray'](_0x16b2a5)?_0x16b2a5:[_0x16b2a5];}return _0xfe5929;}function log(_0x504945,_0x316606,_0x4a86b1,_0x4a8a5d,_0x5a5bc1,_0x1a16d0){loggers[_0x5a5bc1[_0xe043('0x11')]()][_0x504945](_0xe043('0x12'),_0x1a16d0[_0xe043('0x13')](),_0x316606?_0x316606['id']:null,_0x316606?_0x316606[_0xe043('0x14')]:null,_0x316606?_0x316606[_0xe043('0x15')]:null,getInteractionId(_0x4a86b1,_0x4a8a5d,_0x5a5bc1),_0x4a86b1?JSON[_0xe043('0x16')](_0x4a86b1):_0xe043('0x17'));}function updateUser(_0x6dd56b,_0x474724,_0x248a83,_0x4056ad,_0x150c83){db[_[_0xe043('0x9')](_0x4056ad)+_0xe043('0x18')][_0xe043('0x19')]({'where':{'id':getInteractionId(_0x474724,_0x248a83,_0x4056ad)}})[_0xe043('0x1a')](function(_0x7d0e7a){if(_0x7d0e7a){return _0x7d0e7a['update']({'UserId':_0x6dd56b?_0x6dd56b['id']:null});}})[_0xe043('0x1a')](function(_0x27703a){if(_0x27703a){log('info',_0x6dd56b,_0x474724,_0x248a83,_0x4056ad,_0x150c83);}})[_0xe043('0x1b')](function(){log(_0xe043('0x1c'),_0x6dd56b,_0x474724,_0x248a83,_0x4056ad,_0x150c83);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0x943c=['info','catch','error','exports','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','accounts','_interactions','_interaction_has_tags','_messages','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','findOne','then','update'];(function(_0x216d45,_0x4989fe){var _0xbaac0b=function(_0x308a41){while(--_0x308a41){_0x216d45['push'](_0x216d45['shift']());}};_0xbaac0b(++_0x4989fe);}(_0x943c,0xd0));var _0xc943=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x943c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var db=require(_0xc943('0x0'))['db'];var loggers={'openchannel':require(_0xc943('0x1'))(_0xc943('0x2')),'mail':require(_0xc943('0x1'))(_0xc943('0x3')),'fax':require(_0xc943('0x1'))('fax-interactions'),'sms':require('../../config/logger')(_0xc943('0x4')),'chat':require(_0xc943('0x1'))(_0xc943('0x5')),'whatsapp':require('../../config/logger')(_0xc943('0x6'))};function getAccountFK(_0x345879){return _[_0xc943('0x7')](_0x345879)+(_0x345879===_0xc943('0x8')?_0xc943('0x9'):_0xc943('0xa'))+'Id';}function getInteractionFK(_0x230f88){return _[_0xc943('0x7')](_0x230f88)+_0xc943('0xb');}function getInteractionId(_0x3fa421,_0x3d8896,_0x41c4f3){if(_0x3fa421&&_0x3fa421[_[_0xc943('0xc')](_0x41c4f3)+_0xc943('0xb')]){return _0x3fa421[_[_0xc943('0xc')](_0x41c4f3)+_0xc943('0xb')];}else if(_0x3fa421&&_0x3fa421['id']){return _0x3fa421['id'];}else if(_0x3d8896&&_0x3d8896['id']){return _0x3d8896['id'];}else{return _0xc943('0xd');}}function getInteractionsTables(_0x55583b){return{'accounts':_0x55583b+'_'+(_0x55583b==='chat'?'websites':_0xc943('0xe')),'interactions':_0x55583b+_0xc943('0xf'),'interactionsTags':_0x55583b+_0xc943('0x10'),'messages':_0x55583b+_0xc943('0x11'),'userInteractions':_0xc943('0x12')+_0x55583b+_0xc943('0xf')};}function getSelectedTags(_0x32b45b){var _0x21f707=[];if(_0x32b45b){_0x21f707=Array[_0xc943('0x13')](_0x32b45b)?_0x32b45b:[_0x32b45b];}return _0x21f707;}function log(_0x19d41a,_0x27c3cb,_0x3b1cbb,_0x5be78b,_0x132fe5,_0x4ade72){loggers[_0x132fe5[_0xc943('0x14')]()][_0x19d41a](_0xc943('0x15'),_0x4ade72[_0xc943('0x16')](),_0x27c3cb?_0x27c3cb['id']:null,_0x27c3cb?_0x27c3cb[_0xc943('0x17')]:null,_0x27c3cb?_0x27c3cb[_0xc943('0x18')]:null,getInteractionId(_0x3b1cbb,_0x5be78b,_0x132fe5),_0x3b1cbb?JSON[_0xc943('0x19')](_0x3b1cbb):_0xc943('0x1a'));}function updateUser(_0x40741f,_0x14c8e4,_0xb04669,_0x56532f,_0x1b1dc1){db[_['upperFirst'](_0x56532f)+'Interaction'][_0xc943('0x1b')]({'where':{'id':getInteractionId(_0x14c8e4,_0xb04669,_0x56532f)}})[_0xc943('0x1c')](function(_0x283cc8){if(_0x283cc8){return _0x283cc8[_0xc943('0x1d')]({'UserId':_0x40741f?_0x40741f['id']:null});}})[_0xc943('0x1c')](function(_0x4ff440){if(_0x4ff440){log(_0xc943('0x1e'),_0x40741f,_0x14c8e4,_0xb04669,_0x56532f,_0x1b1dc1);}})[_0xc943('0x1f')](function(){log(_0xc943('0x20'),_0x40741f,_0x14c8e4,_0xb04669,_0x56532f,_0x1b1dc1);});}module[_0xc943('0x21')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 508cff0..2f72b03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x060b=['User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','parse','hasOwnProperty','License','findOne','then','count','status','json','users'];(function(_0x172459,_0x4a34eb){var _0x28a544=function(_0x3390b1){while(--_0x3390b1){_0x172459['push'](_0x172459['shift']());}};_0x28a544(++_0x4a34eb);}(_0x060b,0xac));var _0xb060=function(_0x306700,_0x213d29){_0x306700=_0x306700-0x0;var _0xbbc80e=_0x060b[_0x306700];return _0xbbc80e;};'use strict';var crypto=require(_0xb060('0x0'));var util=require(_0xb060('0x1'));var compose=require(_0xb060('0x2'));var db=require(_0xb060('0x3'))['db'];var config=require(_0xb060('0x4'));function getValueFromLicense(_0x4ad51a,_0x592fc6){if(_0x4ad51a&&_0x592fc6){if(_0x592fc6[_0xb060('0x5')]&&_0x592fc6['license']){var _0x392fdc=_0x592fc6[_0xb060('0x5')];var _0xa5fb37=_0x592fc6[_0xb060('0x6')];var _0x150333=_0x392fdc[_0xb060('0x7')]('-')[0x4];var _0x4bf71b=_0x392fdc[_0xb060('0x7')]('-')[0x0];var _0x5908ec=crypto[_0xb060('0x8')](_0xb060('0x9'),util[_0xb060('0xa')](_0xb060('0xb'),_0x150333,_0x392fdc,_0x4bf71b));var _0x21f6ed=_0x5908ec[_0xb060('0xc')](_0xa5fb37,_0xb060('0xd'),_0xb060('0xe'));_0x21f6ed+=_0x5908ec['final'](_0xb060('0xe'));var _0x777d51=JSON[_0xb060('0xf')](_0x21f6ed);return _0x777d51[_0xb060('0x10')](_0x4ad51a)?_0x777d51[_0x4ad51a]:null;}}return null;}function isLimit(_0x26fdc8,_0x2be7b6,_0x417bae,_0x338757){var _0x218c5f=_0x2be7b6;return compose()['use'](function(_0x23e6ff,_0x48e2ec,_0x130367){return db[_0xb060('0x11')][_0xb060('0x12')]({'where':{'id':0x1},'raw':!![]})[_0xb060('0x13')](function(_0x896d1f){var _0x553515=getValueFromLicense(_0x26fdc8,_0x896d1f);return _0x553515?_0x553515:_0x218c5f;})[_0xb060('0x13')](function(_0x21ed73){_0x218c5f=_0x21ed73;return _0x417bae[_0xb060('0x14')](_0x338757);})['then'](function(_0x4b552f){if(_0x4b552f>=_0x218c5f){return _0x48e2ec[_0xb060('0x15')](0x193)[_0xb060('0x16')]({'message':util['format']('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x26fdc8)});}_0x130367();})['catch'](function(_0x3c9992){_0x130367(_0x3c9992);});});}function isUserLimit(){return isLimit(_0xb060('0x17'),0x1,db[_0xb060('0x18')],{'where':{'$or':[{'role':_0xb060('0x19')},{'role':_0xb060('0x1a')}]}});}exports[_0xb060('0x1b')]=isUserLimit;
\ No newline at end of file
+var _0xfadd=['parse','hasOwnProperty','use','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','crypto','composable-middleware','../../mysqldb','../../config/environment','data1','split','aes-256-ctr','format','%s:%s:%s','utf8','final'];(function(_0x21246d,_0x24d050){var _0x2dadff=function(_0x445e9e){while(--_0x445e9e){_0x21246d['push'](_0x21246d['shift']());}};_0x2dadff(++_0x24d050);}(_0xfadd,0x12d));var _0xdfad=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfadd[_0x20a584];return _0x4b41a8;};'use strict';var crypto=require(_0xdfad('0x0'));var util=require('util');var compose=require(_0xdfad('0x1'));var db=require(_0xdfad('0x2'))['db'];var config=require(_0xdfad('0x3'));function getValueFromLicense(_0x2fc64a,_0x21f0fd){if(_0x2fc64a&&_0x21f0fd){if(_0x21f0fd[_0xdfad('0x4')]&&_0x21f0fd['license']){var _0x54d599=_0x21f0fd[_0xdfad('0x4')];var _0x1cec3a=_0x21f0fd['license'];var _0x23a830=_0x54d599[_0xdfad('0x5')]('-')[0x4];var _0x3f5309=_0x54d599[_0xdfad('0x5')]('-')[0x0];var _0x320eb6=crypto['createDecipher'](_0xdfad('0x6'),util[_0xdfad('0x7')](_0xdfad('0x8'),_0x23a830,_0x54d599,_0x3f5309));var _0x5c258d=_0x320eb6['update'](_0x1cec3a,'base64',_0xdfad('0x9'));_0x5c258d+=_0x320eb6[_0xdfad('0xa')]('utf8');var _0x4afc0d=JSON[_0xdfad('0xb')](_0x5c258d);return _0x4afc0d[_0xdfad('0xc')](_0x2fc64a)?_0x4afc0d[_0x2fc64a]:null;}}return null;}function isLimit(_0x5e253d,_0x3c8323,_0x5637f3,_0x5af864){var _0xa450c6=_0x3c8323;return compose()[_0xdfad('0xd')](function(_0x3f299e,_0x569556,_0x7ee147){return db['License'][_0xdfad('0xe')]({'where':{'id':0x1},'raw':!![]})[_0xdfad('0xf')](function(_0x319614){var _0x30d259=getValueFromLicense(_0x5e253d,_0x319614);return _0x30d259?_0x30d259:_0xa450c6;})[_0xdfad('0xf')](function(_0x1cccbc){_0xa450c6=_0x1cccbc;return _0x5637f3[_0xdfad('0x10')](_0x5af864);})[_0xdfad('0xf')](function(_0x4116cf){if(_0x4116cf>=_0xa450c6){return _0x569556[_0xdfad('0x11')](0x193)[_0xdfad('0x12')]({'message':util['format'](_0xdfad('0x13'),_0x5e253d)});}_0x7ee147();})[_0xdfad('0x14')](function(_0x4d960d){_0x7ee147(_0x4d960d);});});}function isUserLimit(){return isLimit(_0xdfad('0x15'),0x1,db['User'],{'where':{'$or':[{'role':_0xdfad('0x16')},{'role':_0xdfad('0x17')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index 43e32d4..3c19a1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cfb=['$lte','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','pop','utcOffset','format','add','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','and','replace','[$and]','length','slice','forEach','shift','match','split','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$between','value','$gt','days','YYYY-MM-DD','castTo','text','CAST(','\x20AS\x20','field','includes','$ne','\x20OR\x20','IN\x20?','$notIn','NOT\x20IN\x20?','$eq','=\x20?','<>\x20?','$substring','$startsWith','LIKE\x20?','$lt','<\x20?'];(function(_0x54622e,_0x463948){var _0x3fdf16=function(_0x203f21){while(--_0x203f21){_0x54622e['push'](_0x54622e['shift']());}};_0x3fdf16(++_0x463948);}(_0x3cfb,0xfe));var _0xb3cf=function(_0x490b05,_0x3c042d){_0x490b05=_0x490b05-0x0;var _0xdcba32=_0x3cfb[_0x490b05];return _0xdcba32;};'use strict';var _=require(_0xb3cf('0x0'));var moment=require(_0xb3cf('0x1'));exports[_0xb3cf('0x2')]=function(_0x3cf16f){var _0x378e42={'conditions':[]};_0x378e42[_0xb3cf('0x3')]=_[_0xb3cf('0x4')](_0x3cf16f,'[$or]')?'or':_0xb3cf('0x5');var _0x369b5e=_0x3cf16f[_0xb3cf('0x6')](_0xb3cf('0x7'),'')[_0xb3cf('0x6')]('[$or]','')['split']('||');for(var _0x5256c9=0x0;_0x5256c9<_0x369b5e[_0xb3cf('0x8')];_0x5256c9++){var _0x576482=_0x369b5e[_0x5256c9]['split'](':=');var _0x13c785=_0x576482[0x0];var _0x5dbbab=_0x576482[_0xb3cf('0x9')](0x1);_0x5dbbab[_0xb3cf('0xa')](function(_0x47da2e){var _0x30d8bd=_0x47da2e['split']('[')[_0xb3cf('0xb')]();var _0x4c030d=_0x47da2e[_0xb3cf('0xc')](/\[(.*?)\]/g);_0x4c030d[_0xb3cf('0xa')](function(_0x3b0732){var _0x3d2192=_0x3b0732[_0xb3cf('0xd')]('[')[_0xb3cf('0xe')](function(_0x5dbdbf){return _0x5dbdbf[_0xb3cf('0xf')](']')>-0x1;})[_0xb3cf('0x10')](function(_0x59a695){return _0x59a695[_0xb3cf('0xd')](']')[0x0];})[0x0];_0x378e42[_0xb3cf('0x11')][_0xb3cf('0x12')]({'field':_0x13c785,'operator':_0x30d8bd,'value':_0x3d2192});});});}return _0x378e42;};exports[_0xb3cf('0x13')]=function(_0x4fd366,_0x1f9403,_0x384eb1){var _0x5ce579={};if(_0x1f9403===_0xb3cf('0x14')){if(_0x384eb1[_0xb3cf('0x15')]==='$eq'){_0x384eb1[_0xb3cf('0x15')]=_0xb3cf('0x16');_0x384eb1[_0xb3cf('0x17')]+=','+_0x384eb1[_0xb3cf('0x17')];}else if(_['includes']([_0xb3cf('0x18'),'$lte'],_0x384eb1[_0xb3cf('0x15')])){_0x384eb1['value']=moment(_0x384eb1[_0xb3cf('0x17')])['add'](0x1,_0xb3cf('0x19'))['format'](_0xb3cf('0x1a'));}}if(_0x384eb1[_0xb3cf('0x1b')]){_0x1f9403=_0x384eb1[_0xb3cf('0x1b')];_0x5ce579[_0xb3cf('0x1c')]=_0xb3cf('0x1d')+_0x4fd366+'.'+_0x384eb1['field']+_0xb3cf('0x1e')+_0x384eb1[_0xb3cf('0x1b')]+')\x20'+parseOperator(_0x384eb1['operator']);}else{_0x5ce579[_0xb3cf('0x1c')]=_0x4fd366+'.'+_0x384eb1[_0xb3cf('0x1f')]+'\x20'+parseOperator(_0x384eb1[_0xb3cf('0x15')]);}if(_[_0xb3cf('0x20')]([_0xb3cf('0x21'),'$notIn'],_0x384eb1[_0xb3cf('0x15')]))_0x5ce579[_0xb3cf('0x1c')]='('+_0x5ce579[_0xb3cf('0x1c')]+_0xb3cf('0x22')+_0x4fd366+'.'+_0x384eb1[_0xb3cf('0x1f')]+'\x20IS\x20NULL)';_0x5ce579['value']=parseValue(_0x1f9403,_0x384eb1[_0xb3cf('0x15')],_0x384eb1[_0xb3cf('0x17')]);return _0x5ce579;};function parseOperator(_0x45eae1){var _0x592d9e;switch(_0x45eae1){case'$in':_0x592d9e=_0xb3cf('0x23');break;case _0xb3cf('0x24'):_0x592d9e=_0xb3cf('0x25');break;case _0xb3cf('0x26'):_0x592d9e=_0xb3cf('0x27');break;case _0xb3cf('0x21'):_0x592d9e=_0xb3cf('0x28');break;case _0xb3cf('0x29'):case _0xb3cf('0x2a'):case'$endsWith':_0x592d9e=_0xb3cf('0x2b');break;case _0xb3cf('0x2c'):_0x592d9e=_0xb3cf('0x2d');break;case _0xb3cf('0x18'):_0x592d9e='>\x20?';break;case _0xb3cf('0x2e'):_0x592d9e=_0xb3cf('0x2f');break;case _0xb3cf('0x30'):_0x592d9e=_0xb3cf('0x31');break;case'$between':_0x592d9e=_0xb3cf('0x32');break;}return _0x592d9e;}function parseValue(_0x473737,_0x3d9d7e,_0x2e79d6){var _0x373dd4={'start':undefined,'end':undefined};switch(_0x3d9d7e){case _0xb3cf('0x33'):case _0xb3cf('0x24'):_0x373dd4[_0xb3cf('0x34')]=_0x2e79d6[_0xb3cf('0xd')](',');break;case'$substring':_0x373dd4['start']='%'+_0x2e79d6+'%';break;case _0xb3cf('0x2a'):_0x373dd4[_0xb3cf('0x34')]=_0x2e79d6+'%';break;case'$endsWith':_0x373dd4[_0xb3cf('0x34')]='%'+_0x2e79d6;break;case _0xb3cf('0x16'):var _0x44360a=_0x2e79d6[_0xb3cf('0xd')](',');var _0x2e79d6=_0x44360a[_0xb3cf('0xb')]();var _0x2df26a=_0x44360a[_0xb3cf('0x35')]();if(_0x473737===_0xb3cf('0x14')){_0x2e79d6=moment(_0x2e79d6)[_0xb3cf('0x36')](0x0,!![])[_0xb3cf('0x37')]();_0x2df26a=moment(_0x2df26a)[_0xb3cf('0x36')](0x0,!![])[_0xb3cf('0x38')](0x17,_0xb3cf('0x39'))[_0xb3cf('0x38')](0x3b,_0xb3cf('0x3a'))['add'](0x3b,_0xb3cf('0x3b'))['format']();}_0x373dd4={'start':_0x2e79d6,'end':_0x2df26a};break;default:_0x373dd4[_0xb3cf('0x34')]=_0x2e79d6;break;}return _0x373dd4;}
\ No newline at end of file
+var _0x2d1d=['[$and]','[$or]','split','length','slice','forEach','filter','map','conditions','DATE','operator','$eq','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','text','\x20AS\x20','field','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','>\x20?','<=\x20?','$gte','$between','start','pop','utcOffset','format','hours','minutes','seconds','lodash','moment','sqlOperator','and','replace'];(function(_0x4a60c1,_0x3cec26){var _0x2b4f8e=function(_0x3c3e27){while(--_0x3c3e27){_0x4a60c1['push'](_0x4a60c1['shift']());}};_0x2b4f8e(++_0x3cec26);}(_0x2d1d,0xcb));var _0xd2d1=function(_0xbdc8ec,_0x439316){_0xbdc8ec=_0xbdc8ec-0x0;var _0x5543f1=_0x2d1d[_0xbdc8ec];return _0x5543f1;};'use strict';var _=require(_0xd2d1('0x0'));var moment=require(_0xd2d1('0x1'));exports['parseSearch']=function(_0x1df1e3){var _0x10a227={'conditions':[]};_0x10a227[_0xd2d1('0x2')]=_['startsWith'](_0x1df1e3,'[$or]')?'or':_0xd2d1('0x3');var _0x565fc7=_0x1df1e3[_0xd2d1('0x4')](_0xd2d1('0x5'),'')[_0xd2d1('0x4')](_0xd2d1('0x6'),'')[_0xd2d1('0x7')]('||');for(var _0x2158bf=0x0;_0x2158bf<_0x565fc7[_0xd2d1('0x8')];_0x2158bf++){var _0x15bacd=_0x565fc7[_0x2158bf][_0xd2d1('0x7')](':=');var _0x719ffb=_0x15bacd[0x0];var _0x2c948f=_0x15bacd[_0xd2d1('0x9')](0x1);_0x2c948f['forEach'](function(_0xde2626){var _0x341998=_0xde2626[_0xd2d1('0x7')]('[')['shift']();var _0x4eb918=_0xde2626['match'](/\[(.*?)\]/g);_0x4eb918[_0xd2d1('0xa')](function(_0x2432d1){var _0x572703=_0x2432d1[_0xd2d1('0x7')]('[')[_0xd2d1('0xb')](function(_0x1bf7cf){return _0x1bf7cf['indexOf'](']')>-0x1;})[_0xd2d1('0xc')](function(_0x224fb3){return _0x224fb3['split'](']')[0x0];})[0x0];_0x10a227[_0xd2d1('0xd')]['push']({'field':_0x719ffb,'operator':_0x341998,'value':_0x572703});});});}return _0x10a227;};exports['buildExpression']=function(_0x1af80e,_0x2e091f,_0x14a662){var _0x5c34b1={};if(_0x2e091f===_0xd2d1('0xe')){if(_0x14a662[_0xd2d1('0xf')]===_0xd2d1('0x10')){_0x14a662[_0xd2d1('0xf')]='$between';_0x14a662[_0xd2d1('0x11')]+=','+_0x14a662[_0xd2d1('0x11')];}else if(_[_0xd2d1('0x12')]([_0xd2d1('0x13'),_0xd2d1('0x14')],_0x14a662['operator'])){_0x14a662['value']=moment(_0x14a662[_0xd2d1('0x11')])[_0xd2d1('0x15')](0x1,_0xd2d1('0x16'))['format'](_0xd2d1('0x17'));}}if(_0x14a662[_0xd2d1('0x18')]){_0x2e091f=_0x14a662[_0xd2d1('0x18')];_0x5c34b1[_0xd2d1('0x19')]='CAST('+_0x1af80e+'.'+_0x14a662['field']+_0xd2d1('0x1a')+_0x14a662[_0xd2d1('0x18')]+')\x20'+parseOperator(_0x14a662[_0xd2d1('0xf')]);}else{_0x5c34b1[_0xd2d1('0x19')]=_0x1af80e+'.'+_0x14a662[_0xd2d1('0x1b')]+'\x20'+parseOperator(_0x14a662[_0xd2d1('0xf')]);}if(_[_0xd2d1('0x12')]([_0xd2d1('0x1c'),'$notIn'],_0x14a662[_0xd2d1('0xf')]))_0x5c34b1['text']='('+_0x5c34b1[_0xd2d1('0x19')]+_0xd2d1('0x1d')+_0x1af80e+'.'+_0x14a662[_0xd2d1('0x1b')]+_0xd2d1('0x1e');_0x5c34b1[_0xd2d1('0x11')]=parseValue(_0x2e091f,_0x14a662[_0xd2d1('0xf')],_0x14a662[_0xd2d1('0x11')]);return _0x5c34b1;};function parseOperator(_0x4dad9c){var _0x255072;switch(_0x4dad9c){case _0xd2d1('0x1f'):_0x255072=_0xd2d1('0x20');break;case _0xd2d1('0x21'):_0x255072=_0xd2d1('0x22');break;case _0xd2d1('0x10'):_0x255072=_0xd2d1('0x23');break;case'$ne':_0x255072='<>\x20?';break;case _0xd2d1('0x24'):case _0xd2d1('0x25'):case _0xd2d1('0x26'):_0x255072=_0xd2d1('0x27');break;case'$lt':_0x255072=_0xd2d1('0x28');break;case'$gt':_0x255072=_0xd2d1('0x29');break;case _0xd2d1('0x14'):_0x255072=_0xd2d1('0x2a');break;case _0xd2d1('0x2b'):_0x255072='>=\x20?';break;case _0xd2d1('0x2c'):_0x255072='BETWEEN\x20?\x20AND\x20?';break;}return _0x255072;}function parseValue(_0x53d9ce,_0xeb5558,_0x4caa50){var _0x30f781={'start':undefined,'end':undefined};switch(_0xeb5558){case _0xd2d1('0x1f'):case _0xd2d1('0x21'):_0x30f781[_0xd2d1('0x2d')]=_0x4caa50['split'](',');break;case'$substring':_0x30f781[_0xd2d1('0x2d')]='%'+_0x4caa50+'%';break;case _0xd2d1('0x25'):_0x30f781['start']=_0x4caa50+'%';break;case _0xd2d1('0x26'):_0x30f781[_0xd2d1('0x2d')]='%'+_0x4caa50;break;case _0xd2d1('0x2c'):var _0x516191=_0x4caa50[_0xd2d1('0x7')](',');var _0x4caa50=_0x516191['shift']();var _0x1f1924=_0x516191[_0xd2d1('0x2e')]();if(_0x53d9ce===_0xd2d1('0xe')){_0x4caa50=moment(_0x4caa50)[_0xd2d1('0x2f')](0x0,!![])[_0xd2d1('0x30')]();_0x1f1924=moment(_0x1f1924)[_0xd2d1('0x2f')](0x0,!![])[_0xd2d1('0x15')](0x17,_0xd2d1('0x31'))[_0xd2d1('0x15')](0x3b,_0xd2d1('0x32'))[_0xd2d1('0x15')](0x3b,_0xd2d1('0x33'))[_0xd2d1('0x30')]();}_0x30f781={'start':_0x4caa50,'end':_0x1f1924};break;default:_0x30f781[_0xd2d1('0x2d')]=_0x4caa50;break;}return _0x30f781;}
\ No newline at end of file
index 7cb75c8..6dd563b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5211=['where','pick','filter','columns','value','VIRTUAL','lower','merge','options','lodash','sequelize','parse','keys','includes','fields','split','filters','isEmpty','forOwn','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','name','uniqueid','isArray','limit','offset','sort','priority','cast','col','unsigned','substr','DESC','length','omit','isObject','unset','isNumeric','isEmail','match','getFullTextValue','\x22{EXPR}\x22','forEach','replace','push','{EXPR}','join','getOptions','query','$id','model','map','intersection','attributes','hasOwnProperty','nolimit'];(function(_0x5b2832,_0x91e54b){var _0x3d1add=function(_0x595222){while(--_0x595222){_0x5b2832['push'](_0x5b2832['shift']());}};_0x3d1add(++_0x91e54b);}(_0x5211,0x17d));var _0x1521=function(_0x3c5800,_0x370f52){_0x3c5800=_0x3c5800-0x0;var _0x237558=_0x5211[_0x3c5800];return _0x237558;};'use strict';var _=require(_0x1521('0x0'));var sequelize=require(_0x1521('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x268f07){var _0x302d2d=['ne'];try{var _0x474474=JSON[_0x1521('0x2')](_0x268f07);var _0x420388=Object[_0x1521('0x3')](_0x474474)[0x0];return _0x302d2d[_0x1521('0x4')](_0x420388);}catch(_0x3a08a9){return![];}}function getOperatorValue(_0x2cdb94){var _0x5c81b9=JSON[_0x1521('0x2')](_0x2cdb94);var _0x4c7997=Object[_0x1521('0x3')](_0x5c81b9)[0x0];var _0x1beb33=_0x5c81b9[_0x4c7997];return{['$'+_0x4c7997]:_0x1beb33};}exports[_0x1521('0x5')]=function(_0xfa2e0d){var _0xb3dc41=null;if(_0xfa2e0d){_0xb3dc41=_0xfa2e0d[_0x1521('0x6')](',');}return _0xb3dc41;};exports[_0x1521('0x7')]=function(_0xe30e04,_0xc0fc2d){var _0x2edd66={};if(!_[_0x1521('0x8')](_0xe30e04)){_[_0x1521('0x9')](_0xe30e04,function(_0x4740e9,_0x3c6d47){try{if(_0xc0fc2d){var _0x219f84=_['find'](_0xc0fc2d,{'name':_0x3c6d47})||{};if(hasSequelizeOperator(_0x4740e9)){_0x2edd66[_0x3c6d47]=getOperatorValue(_0x4740e9);}else if(_0x219f84[_0x1521('0xa')]===_0x1521('0xb')&&_[_0x1521('0xc')](_0x4740e9)){var _0x5538bb=JSON[_0x1521('0x2')](_0x4740e9);var _0x1dc968={'$gte':moment(moment(_0x5538bb[_0x1521('0xd')])[_0x1521('0xe')](_0x1521('0xf')))[_0x1521('0x10')]()[_0x1521('0xe')](),'$lte':moment(moment(_0x5538bb[_0x1521('0x11')])['format'](_0x1521('0xf')))[_0x1521('0x10')]()['subtract'](0x1,'s')[_0x1521('0xe')]()};_0x2edd66[_0x3c6d47]=_0x1dc968;}else if(_0x219f84[_0x1521('0x12')]===_0x1521('0x13')){_0x2edd66[_0x3c6d47]=_0x4740e9;}else{_0x2edd66[_0x3c6d47]=_[_0x1521('0x14')](_0x4740e9)?_0x4740e9:JSON[_0x1521('0x2')](_0x4740e9);}}else{_0x2edd66[_0x3c6d47]=_['isArray'](_0x4740e9)?_0x4740e9:JSON[_0x1521('0x2')](_0x4740e9);}}catch(_0x556f5b){_0x2edd66[_0x3c6d47]=_0x4740e9[_0x1521('0x6')](',');}});}return _0x2edd66;};exports[_0x1521('0x15')]=function(_0x2af33c){_0x2af33c=parseInt(_0x2af33c,0xa);if(!_0x2af33c||_0x2af33c<0x0){_0x2af33c=LIMIT_VALUE;}return _0x2af33c;};exports[_0x1521('0x16')]=function(_0x5d93bf){_0x5d93bf=parseInt(_0x5d93bf,0xa);if(!_0x5d93bf||_0x5d93bf<0x0){_0x5d93bf=0x0;}return _0x5d93bf;};exports[_0x1521('0x17')]=function(_0x3ded52){var _0x2ea157,_0x19bc7b=null;if(_0x3ded52){_0x2ea157=_0x3ded52[_0x1521('0x6')](',');_0x19bc7b=_['map'](_0x2ea157,function(_0x4a3578){if(_0x4a3578['indexOf']('-')===0x0){return[_0x4a3578===_0x1521('0x18')?sequelize[_0x1521('0x19')](sequelize[_0x1521('0x1a')]('priority'),_0x1521('0x1b')):_0x4a3578[_0x1521('0x1c')](0x1),_0x1521('0x1d')];}else{return[_0x4a3578==='priority'?sequelize[_0x1521('0x19')](sequelize['col'](_0x1521('0x18')),_0x1521('0x1b')):_0x4a3578,'ASC'];}});}return _0x19bc7b;};exports['omit']=function(_0x3063dc,_0x57e165){if(_[_0x1521('0x8')](_0x3063dc)){return _0x3063dc;}if(_[_0x1521('0x14')](_0x3063dc)){for(var _0x97d17b=0x0;_0x97d17b<_0x3063dc[_0x1521('0x1e')];_0x97d17b+=0x1){_0x3063dc[_0x97d17b]=this[_0x1521('0x1f')](_0x3063dc[_0x97d17b],_0x57e165);}return _0x3063dc;}if(!_[_0x1521('0x20')](_0x3063dc)){return _0x3063dc;}if(_['isString'](_0x57e165)){_0x57e165=[_0x57e165];}if(!_[_0x1521('0x14')](_0x57e165)){return _0x3063dc;}for(var _0x29fe28=0x0;_0x29fe28<_0x57e165['length'];_0x29fe28+=0x1){_[_0x1521('0x21')](_0x3063dc,_0x57e165[_0x29fe28]);}for(var _0x14f674 in _0x3063dc){if(_0x3063dc['hasOwnProperty'](_0x14f674)){_0x3063dc[_0x14f674]=this[_0x1521('0x1f')](_0x3063dc[_0x14f674],_0x57e165);}}return _0x3063dc;};exports[_0x1521('0x22')]=function(_0x4c0afe){return _0x4c0afe['match'](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0x1521('0x23')]=function(_0x1a68d1){return _0x1a68d1[_0x1521('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x1521('0x25')]=function(_0x3930be,_0x56b584){var _0x19ffd6=[];var _0x4359fd=/[ `!@#$%^&*()_\-?~]/;var _0x451983=_0x56b584?_0x1521('0x26'):'{EXPR}';_0x3930be[_0x1521('0x6')](/[ ,]+/)[_0x1521('0x27')](function(_0x5e8e2a){_0x5e8e2a=_0x5e8e2a[_0x1521('0x28')](/([^:]")"+/g,'$1');_0x5e8e2a='+'+_0x5e8e2a+'*';var _0x72689d=_0x5e8e2a[_0x1521('0x24')](_0x4359fd);if(_0x72689d){_0x5e8e2a='\x22'+_0x5e8e2a+'\x22';}_0x19ffd6[_0x1521('0x29')](_0x5e8e2a);});_0x451983=_0x451983[_0x1521('0x28')](_0x1521('0x2a'),_0x19ffd6[_0x1521('0x2b')]('\x20'));return _0x451983;};exports[_0x1521('0x2c')]=function(_0x52e616,_0x4a82d1,_0x1bd477){var _0x40faa7={},_0x1538b5={};if(_0x4a82d1[_0x1521('0x2d')][_0x1521('0x2e')]){_0x4a82d1[_0x1521('0x2d')]['id']=_0x4a82d1[_0x1521('0x2d')][_0x1521('0x2e')];delete _0x4a82d1[_0x1521('0x2d')][_0x1521('0x2e')];}_0x40faa7[_0x1521('0x2f')]=_[_0x1521('0x30')](_0x52e616,'name');_0x40faa7[_0x1521('0x2d')]=_[_0x1521('0x3')](_0x4a82d1[_0x1521('0x2d')]);_0x40faa7['filters']=_[_0x1521('0x31')](_0x40faa7['model'],_0x40faa7[_0x1521('0x2d')]);_0x1538b5[_0x1521('0x32')]=_['intersection'](_0x40faa7['model'],this[_0x1521('0x5')](_0x4a82d1[_0x1521('0x2d')][_0x1521('0x5')]));_0x1538b5[_0x1521('0x32')]=_0x1538b5['attributes']['length']?_0x1538b5['attributes']:_0x40faa7[_0x1521('0x2f')];if(!_0x4a82d1[_0x1521('0x2d')][_0x1521('0x33')](_0x1521('0x34'))){_0x1538b5[_0x1521('0x15')]=this[_0x1521('0x15')](_0x4a82d1['query'][_0x1521('0x15')]);_0x1538b5['offset']=this[_0x1521('0x16')](_0x4a82d1[_0x1521('0x2d')][_0x1521('0x16')]);}_0x1538b5['order']=this[_0x1521('0x17')](_0x4a82d1[_0x1521('0x2d')][_0x1521('0x17')]);_0x1538b5[_0x1521('0x35')]=this[_0x1521('0x7')](_[_0x1521('0x36')](_0x4a82d1[_0x1521('0x2d')],_0x40faa7[_0x1521('0x7')]),_0x52e616);if(_0x4a82d1[_0x1521('0x2d')]['filter']){var _0x454c46=_0x52e616;var _0x3d3f37=_0x4a82d1[_0x1521('0x2d')][_0x1521('0x37')];if(typeof _0x3d3f37==='object'){_0x454c46=_[_0x1521('0x37')](_0x52e616,function(_0x476020){return _['includes'](_0x3d3f37[_0x1521('0x38')],_0x476020['name']);});_0x3d3f37=_0x3d3f37[_0x1521('0x39')];}_0x1538b5[_0x1521('0x35')]=_['merge'](_0x1538b5[_0x1521('0x35')],{'$or':_[_0x1521('0x30')](_0x454c46,function(_0x1646cd){if(_0x1646cd['type']!==_0x1521('0x3a')){if(_0x1bd477){return sequelize[_0x1521('0x35')](sequelize['fn'](_0x1521('0x3b'),sequelize['col'](_0x1646cd['name'])),{'$like':sequelize['fn'](_0x1521('0x3b'),'%'+_0x4a82d1[_0x1521('0x2d')]['filter']+'%')});}else{var _0xe19eda={};_0xe19eda[_0x1646cd[_0x1521('0x12')]]={'$like':'%'+_0x4a82d1[_0x1521('0x2d')][_0x1521('0x37')]+'%'};return _0xe19eda;}}})});}_0x1538b5=_[_0x1521('0x3c')]({},_0x1538b5,_0x4a82d1[_0x1521('0x3d')]);return _0x1538b5;};
\ No newline at end of file
+var _0x4c4f=['includes','parse','keys','fields','split','filters','forOwn','type','DATE','isPlainObject','format','utc','$lte','YYYY-MM-DD','name','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','substr','omit','isEmpty','length','isObject','unset','match','^[+]?[0-9]*$','isEmail','getFullTextValue','\x22{EXPR}\x22','forEach','replace','push','{EXPR}','join','getOptions','query','$id','model','intersection','attributes','nolimit','where','pick','filter','object','value','merge','lower','lodash','sequelize'];(function(_0x3a026b,_0x42af55){var _0x4a3dec=function(_0xcfea52){while(--_0xcfea52){_0x3a026b['push'](_0x3a026b['shift']());}};_0x4a3dec(++_0x42af55);}(_0x4c4f,0x18d));var _0xf4c4=function(_0x234bb5,_0x9068d9){_0x234bb5=_0x234bb5-0x0;var _0x18de11=_0x4c4f[_0x234bb5];return _0x18de11;};'use strict';var _=require(_0xf4c4('0x0'));var sequelize=require(_0xf4c4('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x277ca2){var _0x1f8ac6=['ne'];try{var _0xdb7613=JSON['parse'](_0x277ca2);var _0x2e6fd1=Object['keys'](_0xdb7613)[0x0];return _0x1f8ac6[_0xf4c4('0x2')](_0x2e6fd1);}catch(_0x794a75){return![];}}function getOperatorValue(_0x5d6328){var _0x3b574d=JSON[_0xf4c4('0x3')](_0x5d6328);var _0x430f16=Object[_0xf4c4('0x4')](_0x3b574d)[0x0];var _0x27fc0e=_0x3b574d[_0x430f16];return{['$'+_0x430f16]:_0x27fc0e};}exports[_0xf4c4('0x5')]=function(_0x2470a5){var _0x24ccd1=null;if(_0x2470a5){_0x24ccd1=_0x2470a5[_0xf4c4('0x6')](',');}return _0x24ccd1;};exports[_0xf4c4('0x7')]=function(_0x48f39c,_0x14805c){var _0xf1d2cd={};if(!_['isEmpty'](_0x48f39c)){_[_0xf4c4('0x8')](_0x48f39c,function(_0x11f26e,_0x4aa3f3){try{if(_0x14805c){var _0x1343ab=_['find'](_0x14805c,{'name':_0x4aa3f3})||{};if(hasSequelizeOperator(_0x11f26e)){_0xf1d2cd[_0x4aa3f3]=getOperatorValue(_0x11f26e);}else if(_0x1343ab[_0xf4c4('0x9')]===_0xf4c4('0xa')&&_[_0xf4c4('0xb')](_0x11f26e)){var _0x4d7075=JSON[_0xf4c4('0x3')](_0x11f26e);var _0x4cc0ee={'$gte':moment(moment(_0x4d7075['$gte'])[_0xf4c4('0xc')]('YYYY-MM-DD'))[_0xf4c4('0xd')]()['format'](),'$lte':moment(moment(_0x4d7075[_0xf4c4('0xe')])['format'](_0xf4c4('0xf')))[_0xf4c4('0xd')]()['subtract'](0x1,'s')[_0xf4c4('0xc')]()};_0xf1d2cd[_0x4aa3f3]=_0x4cc0ee;}else if(_0x1343ab[_0xf4c4('0x10')]===_0xf4c4('0x11')){_0xf1d2cd[_0x4aa3f3]=_0x11f26e;}else{_0xf1d2cd[_0x4aa3f3]=_[_0xf4c4('0x12')](_0x11f26e)?_0x11f26e:JSON[_0xf4c4('0x3')](_0x11f26e);}}else{_0xf1d2cd[_0x4aa3f3]=_[_0xf4c4('0x12')](_0x11f26e)?_0x11f26e:JSON[_0xf4c4('0x3')](_0x11f26e);}}catch(_0x2a6fda){_0xf1d2cd[_0x4aa3f3]=_0x11f26e[_0xf4c4('0x6')](',');}});}return _0xf1d2cd;};exports[_0xf4c4('0x13')]=function(_0x557ee3){_0x557ee3=parseInt(_0x557ee3,0xa);if(!_0x557ee3||_0x557ee3<0x0){_0x557ee3=LIMIT_VALUE;}return _0x557ee3;};exports[_0xf4c4('0x14')]=function(_0x2b723a){_0x2b723a=parseInt(_0x2b723a,0xa);if(!_0x2b723a||_0x2b723a<0x0){_0x2b723a=0x0;}return _0x2b723a;};exports[_0xf4c4('0x15')]=function(_0x255e51){var _0x537514,_0x38202c=null;if(_0x255e51){_0x537514=_0x255e51['split'](',');_0x38202c=_[_0xf4c4('0x16')](_0x537514,function(_0x5a0bf2){if(_0x5a0bf2[_0xf4c4('0x17')]('-')===0x0){return[_0x5a0bf2===_0xf4c4('0x18')?sequelize[_0xf4c4('0x19')](sequelize[_0xf4c4('0x1a')](_0xf4c4('0x18')),'unsigned'):_0x5a0bf2[_0xf4c4('0x1b')](0x1),'DESC'];}else{return[_0x5a0bf2===_0xf4c4('0x18')?sequelize['cast'](sequelize['col'](_0xf4c4('0x18')),'unsigned'):_0x5a0bf2,'ASC'];}});}return _0x38202c;};exports[_0xf4c4('0x1c')]=function(_0x316657,_0x5be6c4){if(_[_0xf4c4('0x1d')](_0x316657)){return _0x316657;}if(_[_0xf4c4('0x12')](_0x316657)){for(var _0x5342f4=0x0;_0x5342f4<_0x316657[_0xf4c4('0x1e')];_0x5342f4+=0x1){_0x316657[_0x5342f4]=this[_0xf4c4('0x1c')](_0x316657[_0x5342f4],_0x5be6c4);}return _0x316657;}if(!_[_0xf4c4('0x1f')](_0x316657)){return _0x316657;}if(_['isString'](_0x5be6c4)){_0x5be6c4=[_0x5be6c4];}if(!_[_0xf4c4('0x12')](_0x5be6c4)){return _0x316657;}for(var _0x35addf=0x0;_0x35addf<_0x5be6c4[_0xf4c4('0x1e')];_0x35addf+=0x1){_[_0xf4c4('0x20')](_0x316657,_0x5be6c4[_0x35addf]);}for(var _0xcf99e3 in _0x316657){if(_0x316657['hasOwnProperty'](_0xcf99e3)){_0x316657[_0xcf99e3]=this[_0xf4c4('0x1c')](_0x316657[_0xcf99e3],_0x5be6c4);}}return _0x316657;};exports['isNumeric']=function(_0x24eb8e){return _0x24eb8e[_0xf4c4('0x21')](RegExp(_0xf4c4('0x22')))?!![]:![];};exports[_0xf4c4('0x23')]=function(_0x44ce8d){return _0x44ce8d[_0xf4c4('0x21')](/^\S+@\S+$/)?!![]:![];};exports[_0xf4c4('0x24')]=function(_0x451ca9,_0x4bfcbe){var _0x45c1b9=[];var _0x228932=/[ `!@#$%^&*()_\-?~]/;var _0x5e37a5=_0x4bfcbe?_0xf4c4('0x25'):'{EXPR}';_0x451ca9['split'](/[ ,]+/)[_0xf4c4('0x26')](function(_0x16aa42){_0x16aa42=_0x16aa42[_0xf4c4('0x27')](/([^:]")"+/g,'$1');_0x16aa42='+'+_0x16aa42+'*';var _0x12d823=_0x16aa42[_0xf4c4('0x21')](_0x228932);if(_0x12d823){_0x16aa42='\x22'+_0x16aa42+'\x22';}_0x45c1b9[_0xf4c4('0x28')](_0x16aa42);});_0x5e37a5=_0x5e37a5['replace'](_0xf4c4('0x29'),_0x45c1b9[_0xf4c4('0x2a')]('\x20'));return _0x5e37a5;};exports[_0xf4c4('0x2b')]=function(_0x20f4a5,_0x5cd078,_0x37bce3){var _0x4d2448={},_0xc77b12={};if(_0x5cd078[_0xf4c4('0x2c')]['$id']){_0x5cd078[_0xf4c4('0x2c')]['id']=_0x5cd078[_0xf4c4('0x2c')][_0xf4c4('0x2d')];delete _0x5cd078[_0xf4c4('0x2c')]['$id'];}_0x4d2448[_0xf4c4('0x2e')]=_[_0xf4c4('0x16')](_0x20f4a5,_0xf4c4('0x10'));_0x4d2448[_0xf4c4('0x2c')]=_[_0xf4c4('0x4')](_0x5cd078[_0xf4c4('0x2c')]);_0x4d2448[_0xf4c4('0x7')]=_[_0xf4c4('0x2f')](_0x4d2448[_0xf4c4('0x2e')],_0x4d2448[_0xf4c4('0x2c')]);_0xc77b12[_0xf4c4('0x30')]=_['intersection'](_0x4d2448[_0xf4c4('0x2e')],this['fields'](_0x5cd078['query'][_0xf4c4('0x5')]));_0xc77b12[_0xf4c4('0x30')]=_0xc77b12[_0xf4c4('0x30')]['length']?_0xc77b12[_0xf4c4('0x30')]:_0x4d2448['model'];if(!_0x5cd078[_0xf4c4('0x2c')]['hasOwnProperty'](_0xf4c4('0x31'))){_0xc77b12[_0xf4c4('0x13')]=this[_0xf4c4('0x13')](_0x5cd078[_0xf4c4('0x2c')][_0xf4c4('0x13')]);_0xc77b12[_0xf4c4('0x14')]=this[_0xf4c4('0x14')](_0x5cd078['query'][_0xf4c4('0x14')]);}_0xc77b12['order']=this['sort'](_0x5cd078['query'][_0xf4c4('0x15')]);_0xc77b12[_0xf4c4('0x32')]=this[_0xf4c4('0x7')](_[_0xf4c4('0x33')](_0x5cd078[_0xf4c4('0x2c')],_0x4d2448[_0xf4c4('0x7')]),_0x20f4a5);if(_0x5cd078[_0xf4c4('0x2c')][_0xf4c4('0x34')]){var _0x488a2d=_0x20f4a5;var _0x4b9c48=_0x5cd078['query'][_0xf4c4('0x34')];if(typeof _0x4b9c48===_0xf4c4('0x35')){_0x488a2d=_['filter'](_0x20f4a5,function(_0x10da0b){return _[_0xf4c4('0x2')](_0x4b9c48['columns'],_0x10da0b['name']);});_0x4b9c48=_0x4b9c48[_0xf4c4('0x36')];}_0xc77b12[_0xf4c4('0x32')]=_[_0xf4c4('0x37')](_0xc77b12[_0xf4c4('0x32')],{'$or':_[_0xf4c4('0x16')](_0x488a2d,function(_0x47bd8e){if(_0x47bd8e['type']!=='VIRTUAL'){if(_0x37bce3){return sequelize[_0xf4c4('0x32')](sequelize['fn'](_0xf4c4('0x38'),sequelize[_0xf4c4('0x1a')](_0x47bd8e[_0xf4c4('0x10')])),{'$like':sequelize['fn'](_0xf4c4('0x38'),'%'+_0x5cd078[_0xf4c4('0x2c')][_0xf4c4('0x34')]+'%')});}else{var _0x4345bc={};_0x4345bc[_0x47bd8e[_0xf4c4('0x10')]]={'$like':'%'+_0x5cd078[_0xf4c4('0x2c')][_0xf4c4('0x34')]+'%'};return _0x4345bc;}}})});}_0xc77b12=_[_0xf4c4('0x37')]({},_0xc77b12,_0x5cd078['options']);return _0xc77b12;};
\ No newline at end of file
index e4794d8..3e99fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd7d=['getAgentIdsByStatus','resolve','User','findAll','mailPause','pauseType','merge','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','startsWith','DESC','ASC','internal','substring','fullname','validateSortParameter','toLowerCase','online','lastLoginAt','lastPauseAt','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','openchannelCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','voiceStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','routealias','omit','pick','value','filterAgentAttributes','jayson/promise','../../mysqldb','client','http','chatPause','faxPause','openchannelPause','smsPause','voicePause','whatsappPause','filter','length','idle','unknown','ringing','isNil','pause','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','Queue','getAgents','all','flatten','map','uniq','includes'];(function(_0x6f51ff,_0x5e1100){var _0x1b29e0=function(_0x4632b4){while(--_0x4632b4){_0x6f51ff['push'](_0x6f51ff['shift']());}};_0x1b29e0(++_0x5e1100);}(_0xbd7d,0x1db));var _0xdbd7=function(_0x3c89da,_0x4aef0f){_0x3c89da=_0x3c89da-0x0;var _0x49bcd6=_0xbd7d[_0x3c89da];return _0x49bcd6;};'use strict';var _=require('lodash');var jayson=require(_0xdbd7('0x0'));var db=require(_0xdbd7('0x1'))['db'];var amiClient=jayson[_0xdbd7('0x2')][_0xdbd7('0x3')]({'port':0x232a});var routingClient=jayson[_0xdbd7('0x2')][_0xdbd7('0x3')]({'port':0x232c});function isAgentPaused(_0x521d9c,_0x478d12){var _0x3e37d2=[_0x521d9c[_0xdbd7('0x4')],_0x521d9c[_0xdbd7('0x5')],_0x521d9c['mailPause'],_0x521d9c[_0xdbd7('0x6')],_0x521d9c[_0xdbd7('0x7')],_0x521d9c[_0xdbd7('0x8')],_0x521d9c[_0xdbd7('0x9')]];if(!_0x478d12)return _['every'](_0x3e37d2);var _0x4a5d1c=_[_0xdbd7('0xa')](_0x3e37d2);return _0x4a5d1c['length']>0x0&&_0x4a5d1c[_0xdbd7('0xb')]<_0x3e37d2[_0xdbd7('0xb')]?!![]:![];}function isIdle(_0x2be4b4){return _0x2be4b4===_0xdbd7('0xc')||_0x2be4b4===_0xdbd7('0xd')||_0x2be4b4==='unavailable'||_0x2be4b4===_0xdbd7('0xe')||_[_0xdbd7('0xf')](_0x2be4b4);}function isAgentIdle(_0x4e11b8){if(_0x4e11b8['voiceStatus']!=='idle'&&_0x4e11b8[_0xdbd7('0x8')]){_0x4e11b8['voiceStatus']=_0xdbd7('0x10');return![];}return _[_0xdbd7('0x11')]([_0x4e11b8[_0xdbd7('0x12')],_0x4e11b8[_0xdbd7('0x13')],_0x4e11b8[_0xdbd7('0x14')],_0x4e11b8[_0xdbd7('0x15')],_0x4e11b8[_0xdbd7('0x16')],_0x4e11b8['voiceStatus'],_0x4e11b8['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0xdbd7('0x17')](_0xdbd7('0x18'),{})[_0xdbd7('0x19')](function(_0x35e0fd){if(_0x35e0fd[_0xdbd7('0x1a')]){throw new Error(_0xdbd7('0x1b'));}var _0x1fc2bd=_0x35e0fd[_0xdbd7('0x1c')];return routingClient[_0xdbd7('0x17')]('Agents',{})[_0xdbd7('0x19')](function(_0x1451de){if(_0x1451de[_0xdbd7('0x1a')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x4d529a=_0x1451de[_0xdbd7('0x1c')];return _['merge']({},_0x1fc2bd,_0x4d529a);});})['catch'](function(_0xf7689b){throw _0xf7689b;});}exports[_0xdbd7('0x1d')]=getRealtimeAgents;function getAgentStatus(_0x26deea){var _0x4b8608='unknown';if(isAgentPaused(_0x26deea))_0x4b8608=_0xdbd7('0x10');else if(isAgentPaused(_0x26deea,!![]))_0x4b8608='*pause';else if(isAgentIdle(_0x26deea))_0x4b8608='idle';else _0x4b8608=_0xdbd7('0x1e');return _0x4b8608;}exports[_0xdbd7('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x3a1d44,_0x5a9ac9){var _0x581cf7=_[_0xdbd7('0x20')](_0x3a1d44)?_0x3a1d44:[_0x3a1d44];var _0x2d90cb=_[_0xdbd7('0x21')](_0x5a9ac9)+_0xdbd7('0x22');var _0x2a0d01=_['map'](_0x581cf7,function(_0x884a6d){return db[_0x2d90cb]['findOne']({'where':{'id':_0x884a6d}})[_0xdbd7('0x19')](function(_0x4ef350){if(!_0x4ef350)return[];return _0x4ef350[_0xdbd7('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xdbd7('0x24')](_0x2a0d01)['then'](function(_0xa79cc3){var _0x17bed9=_(_0xa79cc3)[_0xdbd7('0x25')]()[_0xdbd7('0x26')]('id')[_0xdbd7('0x27')]()['value']();return _0x17bed9;});}exports['getAgentIdsByQueues']=getAgentIdsByQueues;function getAgentIdsByStatus(_0x137dfa,_0x56bf98,_0x285cd2){try{if(_0x56bf98[_0xdbd7('0xb')]>0x0){_0x137dfa=_0x137dfa[_0xdbd7('0xa')](function(_0x45d3ff){return _0x56bf98[_0xdbd7('0x28')](_0x45d3ff['id']);});}var _0x35946a=_0x137dfa[_0xdbd7('0xa')](function(_0x383c6b){var _0x2b4272='busy';if(isAgentIdle(_0x383c6b)){_0x2b4272=_0xdbd7('0xc');}return _0x2b4272===_0x285cd2;});return _[_0xdbd7('0x26')](_0x35946a,'id');}catch(_0x19b087){throw _0x19b087;}}exports[_0xdbd7('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x5d1eb7,_0x18626e,_0x236e13){return Promise[_0xdbd7('0x2a')]()['then'](function(){if(_0x18626e[_0xdbd7('0xb')]>0x0){_0x5d1eb7=_0x5d1eb7['filter'](function(_0x3f1e01){return _0x18626e[_0xdbd7('0x28')](_0x3f1e01['id']);});}return _0x5d1eb7;})[_0xdbd7('0x19')](function(){return db[_0xdbd7('0x2b')][_0xdbd7('0x2c')]({'attributes':['id','name','fullname',_0xdbd7('0x4'),_0xdbd7('0x5'),_0xdbd7('0x2d'),_0xdbd7('0x6'),_0xdbd7('0x7'),_0xdbd7('0x8'),_0xdbd7('0x9'),_0xdbd7('0x2e')],'where':{'id':{'$in':_[_0xdbd7('0x26')](_0x5d1eb7,'id')}},'raw':!![]});})[_0xdbd7('0x19')](function(_0x2d1193){return _0x2d1193['map'](function(_0x354bfe){var _0xde4e8a=_['find'](_0x5d1eb7,['id',_0x354bfe['id']]);var _0x326923=filterAgentAttributes(_0xde4e8a);_[_0xdbd7('0x2f')](_0x354bfe,_0x326923);_0x354bfe[_0xdbd7('0x30')]=getAgentStatus(_0x354bfe);return _0x354bfe;});})[_0xdbd7('0x19')](function(_0x13b9b1){var _0xde6a26=sortAgentsByStatus(_0x13b9b1,_0x236e13);return _[_0xdbd7('0x26')](_0xde6a26,'id');})['catch'](function(_0x4fd9c6){throw _0x4fd9c6;});}exports[_0xdbd7('0x31')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x30839b){var _0x26a78f={'fields':[],'order':null};var _0x23613d=_0x30839b[_0xdbd7('0x32')](',');_0x26a78f[_0xdbd7('0x33')]=_[_0xdbd7('0xa')](_0x23613d,function(_0x55e7ef){if(!_0x55e7ef[_0xdbd7('0x28')](_0xdbd7('0x30'))){return!![];}_0x26a78f[_0xdbd7('0x34')]=_[_0xdbd7('0x35')](_0x55e7ef,'-')?_0xdbd7('0x36'):_0xdbd7('0x37');return![];});return _0x26a78f;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x48eb42){if(_0x48eb42[_0xdbd7('0x28')]('fullname')&&!_0x48eb42['includes'](_0xdbd7('0x38'))){var _0x3157ac=_0x48eb42[_0xdbd7('0x39')](0x0,_0x48eb42['indexOf'](_0xdbd7('0x3a')));_0x48eb42+=','+_0x3157ac+'internal';}return _0x48eb42;}exports[_0xdbd7('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x67400f,_0x1aa8c9){var _0x2f701a=_0x67400f['sort'](function(_0x1e7634,_0x115ce8){if(_0x1e7634[_0xdbd7('0x30')]===_0x115ce8[_0xdbd7('0x30')]){if(_0x1e7634[_0xdbd7('0x30')]===_0xdbd7('0x10')){if(_0x1aa8c9===_0xdbd7('0x36')){return(_0x1e7634[_0xdbd7('0x2e')]||'')<(_0x115ce8['pauseType']||'')||_0x1e7634[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()>_0x115ce8[_0xdbd7('0x3a')]['toLowerCase']()?0x1:-0x1;}else{return(_0x1e7634['pauseType']||'')<(_0x115ce8[_0xdbd7('0x2e')]||'')||_0x1e7634[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()>_0x115ce8[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()?-0x1:0x1;}}else{if(_0x1aa8c9===_0xdbd7('0x36')){return _0x1e7634[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()<_0x115ce8[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()?0x1:-0x1;}else{return _0x1e7634['fullname'][_0xdbd7('0x3c')]()<_0x115ce8[_0xdbd7('0x3a')][_0xdbd7('0x3c')]()?-0x1:0x1;}}}else{if(_0x1aa8c9===_0xdbd7('0x36')){return _0x1e7634[_0xdbd7('0x30')]<_0x115ce8[_0xdbd7('0x30')]?0x1:-0x1;}else{return _0x1e7634[_0xdbd7('0x30')]<_0x115ce8[_0xdbd7('0x30')]?-0x1:0x1;}}});return _0x2f701a;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x13f10a){var _0x3d1440=['userpic',_0xdbd7('0x3d'),_0xdbd7('0x3e'),_0xdbd7('0x3f'),_0xdbd7('0x2e'),_0xdbd7('0x3f'),_0xdbd7('0x38'),'address',_0xdbd7('0x4'),_0xdbd7('0x6'),_0xdbd7('0x2d'),_0xdbd7('0x7'),_0xdbd7('0x9'),_0xdbd7('0x5'),'voicePause',_0xdbd7('0x40'),'openchannelCapacity',_0xdbd7('0x41'),_0xdbd7('0x42'),_0xdbd7('0x43'),_0xdbd7('0x44'),'chatCurrentCapacity',_0xdbd7('0x45'),'mailCurrentCapacity','smsCurrentCapacity',_0xdbd7('0x46'),_0xdbd7('0x47'),_0xdbd7('0x12'),_0xdbd7('0x15'),_0xdbd7('0x14'),_0xdbd7('0x16'),'whatsappStatus','faxStatus',_0xdbd7('0x48'),_0xdbd7('0x49'),_0xdbd7('0x4a'),_0xdbd7('0x4b'),'smsStatusTime',_0xdbd7('0x4c'),'faxStatusTime',_0xdbd7('0x4d'),_0xdbd7('0x4e'),'destconnectedlinenum',_0xdbd7('0x4f'),_0xdbd7('0x50'),'phoneBarEnableAutomaticScreenRecording',_0xdbd7('0x51')];var _0x36ff05=[_0xdbd7('0x4'),_0xdbd7('0x6'),_0xdbd7('0x2d'),_0xdbd7('0x7'),_0xdbd7('0x9'),_0xdbd7('0x5'),_0xdbd7('0x8'),_0xdbd7('0x3d')];var _0xd0ed6f=_(_0x13f10a)[_0xdbd7('0x52')](_0x36ff05)[_0xdbd7('0x53')](_0x3d1440)[_0xdbd7('0x54')]();return _0xd0ed6f;}exports[_0xdbd7('0x55')]=filterAgentAttributes;
\ No newline at end of file
+var _0x0fa4=['lastPauseAt','chatPause','chatCapacity','openchannelCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','filterAgentAttributes','jayson/promise','../../mysqldb','client','http','faxPause','mailPause','openchannelPause','voicePause','every','filter','length','unknown','unavailable','ringing','voiceStatus','idle','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','then','result','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','*pause','busy','getAgentStatus','isArray','startCase','findOne','all','flatten','map','uniq','value','getAgentIdsByQueues','getAgentIdsByStatus','resolve','includes','User','findAll','name','smsPause','whatsappPause','pauseType','find','getSortedAgentsIdsByStatus','split','globalStatus','startsWith','DESC','ASC','getUpdatedSortOptions','fullname','internal','substring','validateSortParameter','sort','toLowerCase','userpic','online','lastLoginAt'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0fa4,0x12d));var _0x40fa=function(_0x16af89,_0x1155e5){_0x16af89=_0x16af89-0x0;var _0x13931a=_0x0fa4[_0x16af89];return _0x13931a;};'use strict';var _=require('lodash');var jayson=require(_0x40fa('0x0'));var db=require(_0x40fa('0x1'))['db'];var amiClient=jayson[_0x40fa('0x2')][_0x40fa('0x3')]({'port':0x232a});var routingClient=jayson[_0x40fa('0x2')][_0x40fa('0x3')]({'port':0x232c});function isAgentPaused(_0x571b12,_0x369831){var _0x3456a5=[_0x571b12['chatPause'],_0x571b12[_0x40fa('0x4')],_0x571b12[_0x40fa('0x5')],_0x571b12[_0x40fa('0x6')],_0x571b12['smsPause'],_0x571b12[_0x40fa('0x7')],_0x571b12['whatsappPause']];if(!_0x369831)return _[_0x40fa('0x8')](_0x3456a5);var _0x10e5d8=_[_0x40fa('0x9')](_0x3456a5);return _0x10e5d8[_0x40fa('0xa')]>0x0&&_0x10e5d8[_0x40fa('0xa')]<_0x3456a5[_0x40fa('0xa')]?!![]:![];}function isIdle(_0x42a791){return _0x42a791==='idle'||_0x42a791===_0x40fa('0xb')||_0x42a791===_0x40fa('0xc')||_0x42a791===_0x40fa('0xd')||_['isNil'](_0x42a791);}function isAgentIdle(_0x5e7257){if(_0x5e7257[_0x40fa('0xe')]!==_0x40fa('0xf')&&_0x5e7257[_0x40fa('0x7')]){_0x5e7257['voiceStatus']=_0x40fa('0x10');return![];}return _[_0x40fa('0x8')]([_0x5e7257[_0x40fa('0x11')],_0x5e7257[_0x40fa('0x12')],_0x5e7257[_0x40fa('0x13')],_0x5e7257[_0x40fa('0x14')],_0x5e7257[_0x40fa('0x15')],_0x5e7257[_0x40fa('0xe')],_0x5e7257['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient['request']('Agents',{})[_0x40fa('0x16')](function(_0x3ceb32){if(_0x3ceb32['error']){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x1d79ea=_0x3ceb32[_0x40fa('0x17')];return routingClient[_0x40fa('0x18')](_0x40fa('0x19'),{})[_0x40fa('0x16')](function(_0x4025d5){if(_0x4025d5['error']){throw new Error(_0x40fa('0x1a'));}var _0x2b7461=_0x4025d5['result'];return _[_0x40fa('0x1b')]({},_0x1d79ea,_0x2b7461);});})[_0x40fa('0x1c')](function(_0x4b7c1d){throw _0x4b7c1d;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x26ba27){var _0x230bb5='unknown';if(isAgentPaused(_0x26ba27))_0x230bb5=_0x40fa('0x10');else if(isAgentPaused(_0x26ba27,!![]))_0x230bb5=_0x40fa('0x1d');else if(isAgentIdle(_0x26ba27))_0x230bb5=_0x40fa('0xf');else _0x230bb5=_0x40fa('0x1e');return _0x230bb5;}exports[_0x40fa('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x169eaa,_0x287041){var _0xd210cd=_[_0x40fa('0x20')](_0x169eaa)?_0x169eaa:[_0x169eaa];var _0x1c11d2=_[_0x40fa('0x21')](_0x287041)+'Queue';var _0x4b6324=_['map'](_0xd210cd,function(_0xf26292){return db[_0x1c11d2][_0x40fa('0x22')]({'where':{'id':_0xf26292}})['then'](function(_0x2e7e7a){if(!_0x2e7e7a)return[];return _0x2e7e7a['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x40fa('0x23')](_0x4b6324)[_0x40fa('0x16')](function(_0x3c8eaf){var _0x7c08b8=_(_0x3c8eaf)[_0x40fa('0x24')]()[_0x40fa('0x25')]('id')[_0x40fa('0x26')]()[_0x40fa('0x27')]();return _0x7c08b8;});}exports[_0x40fa('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x3db1d6,_0x30b088,_0x7ee4b9){try{if(_0x30b088['length']>0x0){_0x3db1d6=_0x3db1d6['filter'](function(_0x40b9a0){return _0x30b088['includes'](_0x40b9a0['id']);});}var _0x3301e2=_0x3db1d6['filter'](function(_0x1b4ad1){var _0x3c5be4=_0x40fa('0x1e');if(isAgentIdle(_0x1b4ad1)){_0x3c5be4=_0x40fa('0xf');}return _0x3c5be4===_0x7ee4b9;});return _['map'](_0x3301e2,'id');}catch(_0x4bbb22){throw _0x4bbb22;}}exports[_0x40fa('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x3e375e,_0xacd971,_0x294d8e){return Promise[_0x40fa('0x2a')]()['then'](function(){if(_0xacd971[_0x40fa('0xa')]>0x0){_0x3e375e=_0x3e375e['filter'](function(_0x2b1690){return _0xacd971[_0x40fa('0x2b')](_0x2b1690['id']);});}return _0x3e375e;})['then'](function(){return db[_0x40fa('0x2c')][_0x40fa('0x2d')]({'attributes':['id',_0x40fa('0x2e'),'fullname','chatPause',_0x40fa('0x4'),'mailPause',_0x40fa('0x6'),_0x40fa('0x2f'),'voicePause',_0x40fa('0x30'),_0x40fa('0x31')],'where':{'id':{'$in':_[_0x40fa('0x25')](_0x3e375e,'id')}},'raw':!![]});})['then'](function(_0x6af8b2){return _0x6af8b2[_0x40fa('0x25')](function(_0x332a8b){var _0x328647=_[_0x40fa('0x32')](_0x3e375e,['id',_0x332a8b['id']]);var _0x1848de=filterAgentAttributes(_0x328647);_['merge'](_0x332a8b,_0x1848de);_0x332a8b['globalStatus']=getAgentStatus(_0x332a8b);return _0x332a8b;});})['then'](function(_0x3a08d1){var _0x4f18b6=sortAgentsByStatus(_0x3a08d1,_0x294d8e);return _[_0x40fa('0x25')](_0x4f18b6,'id');})[_0x40fa('0x1c')](function(_0x390c42){throw _0x390c42;});}exports[_0x40fa('0x33')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x485994){var _0xa061b4={'fields':[],'order':null};var _0x3ad4ce=_0x485994[_0x40fa('0x34')](',');_0xa061b4['fields']=_['filter'](_0x3ad4ce,function(_0x5f0ebe){if(!_0x5f0ebe[_0x40fa('0x2b')](_0x40fa('0x35'))){return!![];}_0xa061b4['order']=_[_0x40fa('0x36')](_0x5f0ebe,'-')?_0x40fa('0x37'):_0x40fa('0x38');return![];});return _0xa061b4;}exports[_0x40fa('0x39')]=getUpdatedSortOptions;function validateSortParameter(_0x128520){if(_0x128520[_0x40fa('0x2b')](_0x40fa('0x3a'))&&!_0x128520[_0x40fa('0x2b')](_0x40fa('0x3b'))){var _0x4d0b11=_0x128520[_0x40fa('0x3c')](0x0,_0x128520['indexOf'](_0x40fa('0x3a')));_0x128520+=','+_0x4d0b11+'internal';}return _0x128520;}exports[_0x40fa('0x3d')]=validateSortParameter;function sortAgentsByStatus(_0x291252,_0x29eb11){var _0x2528b1=_0x291252[_0x40fa('0x3e')](function(_0x486f2a,_0x3cd779){if(_0x486f2a[_0x40fa('0x35')]===_0x3cd779[_0x40fa('0x35')]){if(_0x486f2a[_0x40fa('0x35')]===_0x40fa('0x10')){if(_0x29eb11===_0x40fa('0x37')){return(_0x486f2a['pauseType']||'')<(_0x3cd779[_0x40fa('0x31')]||'')||_0x486f2a[_0x40fa('0x3a')][_0x40fa('0x3f')]()>_0x3cd779[_0x40fa('0x3a')]['toLowerCase']()?0x1:-0x1;}else{return(_0x486f2a[_0x40fa('0x31')]||'')<(_0x3cd779[_0x40fa('0x31')]||'')||_0x486f2a[_0x40fa('0x3a')][_0x40fa('0x3f')]()>_0x3cd779[_0x40fa('0x3a')][_0x40fa('0x3f')]()?-0x1:0x1;}}else{if(_0x29eb11===_0x40fa('0x37')){return _0x486f2a[_0x40fa('0x3a')][_0x40fa('0x3f')]()<_0x3cd779['fullname']['toLowerCase']()?0x1:-0x1;}else{return _0x486f2a['fullname'][_0x40fa('0x3f')]()<_0x3cd779['fullname']['toLowerCase']()?-0x1:0x1;}}}else{if(_0x29eb11==='DESC'){return _0x486f2a[_0x40fa('0x35')]<_0x3cd779['globalStatus']?0x1:-0x1;}else{return _0x486f2a[_0x40fa('0x35')]<_0x3cd779[_0x40fa('0x35')]?-0x1:0x1;}}});return _0x2528b1;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x3f6789){var _0x5c6138=[_0x40fa('0x40'),_0x40fa('0x41'),_0x40fa('0x42'),_0x40fa('0x43'),_0x40fa('0x31'),'lastPauseAt','internal','address',_0x40fa('0x44'),_0x40fa('0x6'),_0x40fa('0x5'),_0x40fa('0x2f'),_0x40fa('0x30'),_0x40fa('0x4'),'voicePause',_0x40fa('0x45'),_0x40fa('0x46'),'mailCapacity','smsCapacity','whatsappCapacity',_0x40fa('0x47'),_0x40fa('0x48'),_0x40fa('0x49'),_0x40fa('0x4a'),_0x40fa('0x4b'),_0x40fa('0x4c'),'faxCurrentCapacity','chatStatus',_0x40fa('0x14'),_0x40fa('0x13'),'smsStatus','whatsappStatus','faxStatus',_0x40fa('0xe'),_0x40fa('0x4d'),_0x40fa('0x4e'),_0x40fa('0x4f'),_0x40fa('0x50'),_0x40fa('0x51'),_0x40fa('0x52'),_0x40fa('0x53'),_0x40fa('0x54'),'destconnectedlinenum',_0x40fa('0x55'),_0x40fa('0x56'),_0x40fa('0x57'),_0x40fa('0x58')];var _0x3ae805=[_0x40fa('0x44'),_0x40fa('0x6'),_0x40fa('0x5'),_0x40fa('0x2f'),_0x40fa('0x30'),'faxPause',_0x40fa('0x7'),'online'];var _0xaea46d=_(_0x3f6789)[_0x40fa('0x59')](_0x3ae805)[_0x40fa('0x5a')](_0x5c6138)[_0x40fa('0x27')]();return _0xaea46d;}exports[_0x40fa('0x5b')]=filterAgentAttributes;
\ No newline at end of file
index fec5def..10a95ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e99=['available','paused','waiting','busy','inUse','invalid','loggedInDb','onHold','ringing','talking','unknown','pTalking','originated','statusMessage','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','voice','request','startCase','Queues','result','getRealtimeQueues','inbound','concat','outbound','map','loggedIn','find','merge','pick','initializeQueues','lodash','util','http','client'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0x8e99,0xb8));var _0x98e9=function(_0x5dc749,_0x2df276){_0x5dc749=_0x5dc749-0x0;var _0xa1ddce=_0x8e99[_0x5dc749];return _0xa1ddce;};'use strict';var _=require(_0x98e9('0x0'));var jayson=require('jayson/promise');var util=require(_0x98e9('0x1'));var amiClient=jayson['client'][_0x98e9('0x2')]({'port':0x232a});var routingClient=jayson[_0x98e9('0x3')]['http']({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0x98e9('0x4'),'loggedIn',_0x98e9('0x5'),_0x98e9('0x6')];var VOICE_QUEUE_ATTRIBUTES=[_0x98e9('0x7'),_0x98e9('0x8'),_0x98e9('0x9'),_0x98e9('0xa'),'notInUse',_0x98e9('0xb'),_0x98e9('0xc'),'ringInUse',_0x98e9('0xd'),'unavailable',_0x98e9('0xe')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x98e9('0xf'),_0x98e9('0x10'),'message',_0x98e9('0x11'),'dialActive',_0x98e9('0x12'),_0x98e9('0x13'),_0x98e9('0x14'),_0x98e9('0x15'),_0x98e9('0x16'),_0x98e9('0x17'),_0x98e9('0x18'),'erlangBusyFactor',_0x98e9('0x19'),'dialPredictiveIntervalMaxThreshold',_0x98e9('0x1a'),_0x98e9('0x1b'),'predictiveIntervalTotalCalls',_0x98e9('0x1c'),_0x98e9('0x1d'),_0x98e9('0x1e'),'predictiveIntervalAvgHoldtime',_0x98e9('0x1f')];function getRealtimeQueues(_0x55296f,_0x282b61){var _0xa1e0d8=_0x282b61===_0x98e9('0x20')?amiClient:routingClient;return _0xa1e0d8[_0x98e9('0x21')](_[_0x98e9('0x22')](_0x282b61)+_0x98e9('0x23'),_0x55296f)['then'](function(_0x1adcc8){if(_0x1adcc8['error'])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x282b61));return _0x1adcc8[_0x98e9('0x24')];})['catch'](function(_0x1e4074){throw _0x1e4074;});}exports[_0x98e9('0x25')]=getRealtimeQueues;function initializeQueues(_0x1822e1,_0x18dc95,_0x58c82e,_0x1a3220){var _0x2cb3e5=DEFAULT_QUEUE_ATTRIBUTES;if(_0x58c82e==='voice'){if(_0x1a3220===_0x98e9('0x26')){_0x2cb3e5=_0x2cb3e5[_0x98e9('0x27')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x1a3220===_0x98e9('0x28')){_0x2cb3e5=_0x2cb3e5[_0x98e9('0x27')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x1822e1[_0x98e9('0x29')](function(_0x5cb3a8){var _0x52d690=_0x5cb3a8['get']({'plain':!![]});_0x52d690[_0x98e9('0x5')]=0x0;_0x52d690[_0x98e9('0xa')]=0x0;_0x52d690[_0x98e9('0x2a')]=0x0;_0x52d690[_0x98e9('0x4')]=0x0;_0x52d690[_0x98e9('0x6')]=0x0;if(_0x58c82e===_0x98e9('0x20')){_0x52d690[_0x98e9('0xd')]=0x0;_0x52d690[_0x98e9('0x7')]=0x0;if(_0x1a3220==='outbound'){_0x52d690[_0x98e9('0xf')]=0x0;_0x52d690[_0x98e9('0x10')]=0x0;}}var _0x36e5a2=_[_0x98e9('0x2b')](_0x18dc95,['id',_0x52d690['id']]);if(_0x36e5a2){_[_0x98e9('0x2c')](_0x52d690,_[_0x98e9('0x2d')](_0x36e5a2,_0x2cb3e5));}return _0x52d690;});}exports[_0x98e9('0x2e')]=initializeQueues;
\ No newline at end of file
+var _0x375f=['loggedInDb','onHold','ringing','ringInUse','talking','unavailable','unknown','statusMessage','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','request','startCase','then','error','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','voice','inbound','outbound','concat','map','paused','loggedIn','pTalking','originated','merge','pick','initializeQueues','lodash','jayson/promise','util','client','http','waiting','busy','inUse','invalid'];(function(_0x153f07,_0xceb2eb){var _0x563003=function(_0x47fa2a){while(--_0x47fa2a){_0x153f07['push'](_0x153f07['shift']());}};_0x563003(++_0xceb2eb);}(_0x375f,0x12f));var _0xf375=function(_0x4abfbc,_0xc04dee){_0x4abfbc=_0x4abfbc-0x0;var _0x32cc91=_0x375f[_0x4abfbc];return _0x32cc91;};'use strict';var _=require(_0xf375('0x0'));var jayson=require(_0xf375('0x1'));var util=require(_0xf375('0x2'));var amiClient=jayson[_0xf375('0x3')][_0xf375('0x4')]({'port':0x232a});var routingClient=jayson[_0xf375('0x3')]['http']({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=['available','loggedIn','paused',_0xf375('0x5')];var VOICE_QUEUE_ATTRIBUTES=[_0xf375('0x6'),_0xf375('0x7'),_0xf375('0x8'),_0xf375('0x9'),'notInUse',_0xf375('0xa'),_0xf375('0xb'),_0xf375('0xc'),_0xf375('0xd'),_0xf375('0xe'),_0xf375('0xf')];var OUTBOUND_QUEUE_ATTRIBUTES=['pTalking','originated','message',_0xf375('0x10'),_0xf375('0x11'),_0xf375('0x12'),_0xf375('0x13'),_0xf375('0x14'),_0xf375('0x15'),_0xf375('0x16'),_0xf375('0x17'),_0xf375('0x18'),_0xf375('0x19'),'dialPredictiveInterval',_0xf375('0x1a'),_0xf375('0x1b'),_0xf375('0x1c'),_0xf375('0x1d'),_0xf375('0x1e'),_0xf375('0x1f'),_0xf375('0x20'),'predictiveIntervalAvgHoldtime',_0xf375('0x21')];function getRealtimeQueues(_0x528a1f,_0x1b65a3){var _0x2ee132=_0x1b65a3==='voice'?amiClient:routingClient;return _0x2ee132[_0xf375('0x22')](_[_0xf375('0x23')](_0x1b65a3)+'Queues',_0x528a1f)[_0xf375('0x24')](function(_0x594fe8){if(_0x594fe8[_0xf375('0x25')])throw new Error(util['format'](_0xf375('0x26'),_0x1b65a3));return _0x594fe8[_0xf375('0x27')];})['catch'](function(_0x3027d6){throw _0x3027d6;});}exports['getRealtimeQueues']=getRealtimeQueues;function initializeQueues(_0xba02ea,_0x10f67e,_0x1b252d,_0x438708){var _0x5995e9=DEFAULT_QUEUE_ATTRIBUTES;if(_0x1b252d===_0xf375('0x28')){if(_0x438708===_0xf375('0x29')){_0x5995e9=_0x5995e9['concat'](VOICE_QUEUE_ATTRIBUTES);}else if(_0x438708===_0xf375('0x2a')){_0x5995e9=_0x5995e9[_0xf375('0x2b')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0xba02ea[_0xf375('0x2c')](function(_0x1ef80f){var _0x217587=_0x1ef80f['get']({'plain':!![]});_0x217587[_0xf375('0x2d')]=0x0;_0x217587[_0xf375('0x9')]=0x0;_0x217587[_0xf375('0x2e')]=0x0;_0x217587['available']=0x0;_0x217587['waiting']=0x0;if(_0x1b252d===_0xf375('0x28')){_0x217587['talking']=0x0;_0x217587['busy']=0x0;if(_0x438708==='outbound'){_0x217587[_0xf375('0x2f')]=0x0;_0x217587[_0xf375('0x30')]=0x0;}}var _0x27ffcd=_['find'](_0x10f67e,['id',_0x217587['id']]);if(_0x27ffcd){_[_0xf375('0x31')](_0x217587,_[_0xf375('0x32')](_0x27ffcd,_0x5995e9));}return _0x217587;});}exports[_0xf375('0x33')]=initializeQueues;
\ No newline at end of file
index cc00b15..5773bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x33c637,_0x597c26){var _0x14aa20=function(_0x32a8b5){while(--_0x32a8b5){_0x33c637['push'](_0x33c637['shift']());}};_0x14aa20(++_0x597c26);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
+var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x53dd9b,_0x24d9e9){var _0x42f82b=function(_0x1adbbc){while(--_0x1adbbc){_0x53dd9b['push'](_0x53dd9b['shift']());}};_0x42f82b(++_0x24d9e9);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index d707aa7..7da18b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a9=['hex','substring','crypto','child_process','execSync','../environment','networkInterfaces','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','map','model','join','md5','digest','licenseToken','test','win32','replace','hostname','macAddress','ipAddress','createHash','update'];(function(_0x622035,_0x1a4b91){var _0x326cf2=function(_0x5c3002){while(--_0x5c3002){_0x622035['push'](_0x622035['shift']());}};_0x326cf2(++_0x1a4b91);}(_0x25a9,0x18e));var _0x925a=function(_0x3d71ba,_0x49a38b){_0x3d71ba=_0x3d71ba-0x0;var _0x5e0ed0=_0x25a9[_0x3d71ba];return _0x5e0ed0;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x925a('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0x925a('0x1'))[_0x925a('0x2')];var config=require(_0x925a('0x3'));function getInterfaces(){var _0xfaee85=[];var _0x546136=os[_0x925a('0x4')]();var _0x14c460=_['orderBy'](_[_0x925a('0x5')](_0x546136));for(var _0x31c38a=0x0;_0x31c38a<_0x14c460[_0x925a('0x6')];_0x31c38a++){var _0x5a3bad=_0x546136[_0x14c460[_0x31c38a]][_0x925a('0x7')](function(_0x5cb994){return _0x5cb994[_0x925a('0x8')]===_0x925a('0x9')&&_0x5cb994[_0x925a('0xa')]===![];});_0xfaee85=_0xfaee85[_0x925a('0xb')](_0x5a3bad);}return _0xfaee85;}function getFirstInterface(){var _0xfc609=_[_0x925a('0xc')](getInterfaces());return{'macAddress':_0xfc609&&_0xfc609[_0x925a('0xd')]?_0xfc609[_0x925a('0xd')]:_0x925a('0xe'),'ipAddress':_0xfc609&&_0xfc609[_0x925a('0xf')]?_0xfc609[_0x925a('0xf')]:_0x925a('0x10')};}exports[_0x925a('0x11')]=getFirstInterface;function getCPUhash(){var _0x48c07d=_[_0x925a('0x12')](os[_0x925a('0x13')]()[_0x925a('0x14')](function(_0x180842){return _0x180842[_0x925a('0x15')];}))[_0x925a('0x16')](':');return crypto['createHash'](_0x925a('0x17'))['update'](_0x48c07d)[_0x925a('0x18')]('hex');}exports['getUuid']=function(){var _0x497c7b=os['platform']();var _0x2ab060=/[0-9a-f-]{36}/;if(config[_0x925a('0x19')]&&_0x2ab060[_0x925a('0x1a')](config[_0x925a('0x19')])){return config[_0x925a('0x19')];}else if(_0x497c7b===_0x925a('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':'utf8'})[_0x925a('0x1c')]('\x0d\x0a','');}else{var _0x401a4f=getFirstInterface();var _0x19ccce=getCPUhash();var _0x4f908c=_0x19ccce+'|'+os[_0x925a('0x1d')]()+'|'+_0x401a4f[_0x925a('0x1e')]+'|'+_0x401a4f[_0x925a('0x1f')];var _0x3723c0=crypto[_0x925a('0x20')](_0x925a('0x17'))[_0x925a('0x21')](_0x4f908c)['digest'](_0x925a('0x22'));return _0x3723c0[_0x925a('0x23')](0x0,0x8)+'-'+_0x3723c0['substring'](0x8,0xc)+'-'+_0x3723c0['substring'](0xc,0x10)+'-'+_0x3723c0[_0x925a('0x23')](0x10,0x14)+'-'+_0x3723c0[_0x925a('0x23')](0x14);}};
\ No newline at end of file
+var _0x2326=['licenseToken','test','win32','utf8','replace','hostname','md5','substring','lodash','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','filter','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','createHash','update','digest','hex','getUuid','platform'];(function(_0x1a497a,_0x27d40b){var _0x21ef9a=function(_0xa4cbf5){while(--_0xa4cbf5){_0x1a497a['push'](_0x1a497a['shift']());}};_0x21ef9a(++_0x27d40b);}(_0x2326,0x1a0));var _0x6232=function(_0x4e52d3,_0x8b1936){_0x4e52d3=_0x4e52d3-0x0;var _0x593c39=_0x2326[_0x4e52d3];return _0x593c39;};'use strict';var _=require(_0x6232('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x6232('0x1'));var exec=require('child_process')[_0x6232('0x2')];var config=require(_0x6232('0x3'));function getInterfaces(){var _0x4247c3=[];var _0x56f1e2=os[_0x6232('0x4')]();var _0x268efa=_[_0x6232('0x5')](_[_0x6232('0x6')](_0x56f1e2));for(var _0x1e3d63=0x0;_0x1e3d63<_0x268efa['length'];_0x1e3d63++){var _0x134be1=_0x56f1e2[_0x268efa[_0x1e3d63]][_0x6232('0x7')](function(_0x56759a){return _0x56759a['family']===_0x6232('0x8')&&_0x56759a[_0x6232('0x9')]===![];});_0x4247c3=_0x4247c3[_0x6232('0xa')](_0x134be1);}return _0x4247c3;}function getFirstInterface(){var _0x2433ce=_[_0x6232('0xb')](getInterfaces());return{'macAddress':_0x2433ce&&_0x2433ce[_0x6232('0xc')]?_0x2433ce[_0x6232('0xc')]:_0x6232('0xd'),'ipAddress':_0x2433ce&&_0x2433ce[_0x6232('0xe')]?_0x2433ce[_0x6232('0xe')]:_0x6232('0xf')};}exports[_0x6232('0x10')]=getFirstInterface;function getCPUhash(){var _0x159791=_['orderBy'](os[_0x6232('0x11')]()[_0x6232('0x12')](function(_0x556659){return _0x556659[_0x6232('0x13')];}))['join'](':');return crypto[_0x6232('0x14')]('md5')[_0x6232('0x15')](_0x159791)[_0x6232('0x16')](_0x6232('0x17'));}exports[_0x6232('0x18')]=function(){var _0x3fac79=os[_0x6232('0x19')]();var _0x5274b8=/[0-9a-f-]{36}/;if(config[_0x6232('0x1a')]&&_0x5274b8[_0x6232('0x1b')](config[_0x6232('0x1a')])){return config[_0x6232('0x1a')];}else if(_0x3fac79===_0x6232('0x1c')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x6232('0x1d')})[_0x6232('0x1e')]('\x0d\x0a','');}else{var _0x547f20=getFirstInterface();var _0x4892d0=getCPUhash();var _0xe6f9ff=_0x4892d0+'|'+os[_0x6232('0x1f')]()+'|'+_0x547f20['macAddress']+'|'+_0x547f20['ipAddress'];var _0x28338a=crypto[_0x6232('0x14')](_0x6232('0x20'))[_0x6232('0x15')](_0xe6f9ff)[_0x6232('0x16')](_0x6232('0x17'));return _0x28338a[_0x6232('0x21')](0x0,0x8)+'-'+_0x28338a['substring'](0x8,0xc)+'-'+_0x28338a[_0x6232('0x21')](0xc,0x10)+'-'+_0x28338a[_0x6232('0x21')](0x10,0x14)+'-'+_0x28338a[_0x6232('0x21')](0x14);}};
\ No newline at end of file
index 6b7d7f1..c299488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a13=['encryptString','YYYY-MM-DD\x20HH:mm','diff','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','util','bluebird','version','../../mysqldb','./hardware','../logger','https://www.xcallymotion.com','exports','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','get','data1','license','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase'];(function(_0x17397c,_0x2e2208){var _0x58aa5f=function(_0xf2c324){while(--_0xf2c324){_0x17397c['push'](_0x17397c['shift']());}};_0x58aa5f(++_0x2e2208);}(_0x1a13,0x1d4));var _0x31a1=function(_0x3fd791,_0x4c444e){_0x3fd791=_0x3fd791-0x0;var _0x4d0af2=_0x1a13[_0x3fd791];return _0x4d0af2;};'use strict';var util=require(_0x31a1('0x0'));var moment=require('moment');var rp=require('request-promise');var BPromise=require(_0x31a1('0x1'));var pkginfo=require('pkginfo')(module,_0x31a1('0x2'));var db=require(_0x31a1('0x3'))['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x31a1('0x4'));var logger=require(_0x31a1('0x5'))('license');var HOST=_0x31a1('0x6');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x48303b){return new BPromise(function(_0x388c61,_0x41e846){var _0x33169b=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x48303b,module[_0x31a1('0x7')][_0x31a1('0x2')]);if(oldToken){_0x33169b=util[_0x31a1('0x8')](_0x31a1('0x9'),HOST,_0x48303b,module[_0x31a1('0x7')][_0x31a1('0x2')],oldToken);}var _0x4ab0b8={'uri':_0x33169b,'method':_0x31a1('0xa'),'timeout':0xea60,'json':!![]};return rp(_0x4ab0b8)[_0x31a1('0xb')](function(_0x29af19){_0x388c61(_0x29af19);})['catch'](function(_0x4432c2){_0x41e846(_0x4432c2);});});}function manageLicense(_0x15df4d,_0x6074d4){var _0x2c3e16=_0x6074d4[_0x31a1('0xc')]({'plain':!![]});if(!isOldTokenSent&&_0x2c3e16[_0x31a1('0xd')]!==_0x15df4d&&!_0x2c3e16['data2']){oldToken=_0x2c3e16[_0x31a1('0xd')];}httpRequest(_0x15df4d)[_0x31a1('0xb')](function(_0x2691aa){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x2691aa['active']){isOldTokenSent=![];if(!_0x2c3e16[_0x31a1('0xe')]&&_0x2c3e16[_0x31a1('0xe')]!=_0x2691aa[_0x31a1('0xe')]||_0x2c3e16[_0x31a1('0xe')]&&_0x2c3e16['data2']){logger[_0x31a1('0xf')](_0x31a1('0x10'));}if(_0x2c3e16[_0x31a1('0xe')]&&!_0x2c3e16[_0x31a1('0x11')]&&_0x2c3e16[_0x31a1('0xe')]!=_0x2691aa[_0x31a1('0xe')]){logger[_0x31a1('0xf')](_0x31a1('0x12'));}if(_0x2c3e16[_0x31a1('0xe')]&&!_0x2c3e16[_0x31a1('0x11')]&&_0x2c3e16[_0x31a1('0xe')]==_0x2691aa[_0x31a1('0xe')]){return _0x6074d4;}return _0x6074d4[_0x31a1('0x13')]({'data1':_0x15df4d,'data2':null,'license':_0x2691aa[_0x31a1('0xe')]});}else{if(_0x2691aa[_0x31a1('0xe')]||_0x2c3e16['license']){if(!_0x2c3e16[_0x31a1('0x11')]){if(_0x2c3e16[_0x31a1('0xd')]==_0x15df4d){GRAY_PERIOD_REASON=_0x31a1('0x14');logger[_0x31a1('0xf')](_0x31a1('0x15'));}else{GRAY_PERIOD_REASON=_0x31a1('0x16');logger[_0x31a1('0xf')](_0x31a1('0x17'),_0x2c3e16[_0x31a1('0xd')],_0x15df4d);}logger['info'](_0x31a1('0x18'),GRAY_PERIOD_REASON[_0x31a1('0x19')](),moment()[_0x31a1('0x8')]('YYYY-MM-DD\x20HH:mm'));return _0x6074d4[_0x31a1('0x13')]({'data2':encryptor[_0x31a1('0x1a')](moment()['format'](_0x31a1('0x1b')))});}else{if(moment()[_0x31a1('0x1c')](encryptor['decryptString'](_0x2c3e16[_0x31a1('0x11')]),_0x31a1('0x1d'))>DAYS){logger[_0x31a1('0xf')](_0x31a1('0x1e'),moment()['format'](_0x31a1('0x1b')));isOldTokenSent=![];return _0x6074d4[_0x31a1('0x13')]({'data1':_0x15df4d,'data2':null,'license':null});}}}else{if(_0x2c3e16['data1']!=_0x15df4d){logger[_0x31a1('0xf')](_0x31a1('0x17'),_0x2c3e16['data1'],_0x15df4d);return _0x6074d4[_0x31a1('0x13')]({'data1':_0x15df4d,'data2':null,'license':null});}}}return _0x6074d4;})[_0x31a1('0xb')](function(_0x37a7bc){_0x6074d4=_0x37a7bc;})['catch'](function(_0x59f761){logger['error'](_0x59f761[_0x31a1('0x1f')]);})[_0x31a1('0x20')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x6074d4);},TIME);});}function defaultLicense(){var _0x339608=hardware[_0x31a1('0x21')]();if(_0x339608){return db[_0x31a1('0x22')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x339608}})['spread'](function(_0x3fcc6c,_0x56fbd4){logger[_0x31a1('0xf')](_0x31a1('0x23'),_0x339608);manageLicense(_0x339608,_0x3fcc6c);})['catch'](function(_0x47fc7c){logger[_0x31a1('0x24')](_0x47fc7c[_0x31a1('0x1f')]);});}}exports[_0x31a1('0x25')]=defaultLicense;
\ No newline at end of file
+var _0x6555=['get','data1','license','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','bluebird','pkginfo','../../components/encryptor','./hardware','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','version','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch'];(function(_0x4c0998,_0x165050){var _0x1110e2=function(_0x7cb8c3){while(--_0x7cb8c3){_0x4c0998['push'](_0x4c0998['shift']());}};_0x1110e2(++_0x165050);}(_0x6555,0x1df));var _0x5655=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6555[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x5655('0x0'));var moment=require(_0x5655('0x1'));var rp=require('request-promise');var BPromise=require(_0x5655('0x2'));var pkginfo=require(_0x5655('0x3'))(module,'version');var db=require('../../mysqldb')['db'];var encryptor=require(_0x5655('0x4'));var hardware=require(_0x5655('0x5'));var logger=require('../logger')('license');var HOST=_0x5655('0x6');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5a6521){return new BPromise(function(_0x388e2a,_0x4a0cc8){var _0x4b858a=util['format'](_0x5655('0x7'),HOST,_0x5a6521,module[_0x5655('0x8')][_0x5655('0x9')]);if(oldToken){_0x4b858a=util[_0x5655('0xa')](_0x5655('0xb'),HOST,_0x5a6521,module[_0x5655('0x8')][_0x5655('0x9')],oldToken);}var _0x2fbe3c={'uri':_0x4b858a,'method':_0x5655('0xc'),'timeout':0xea60,'json':!![]};return rp(_0x2fbe3c)[_0x5655('0xd')](function(_0x575420){_0x388e2a(_0x575420);})[_0x5655('0xe')](function(_0x17507){_0x4a0cc8(_0x17507);});});}function manageLicense(_0x4eef58,_0x5a1b4b){var _0x4bae6c=_0x5a1b4b[_0x5655('0xf')]({'plain':!![]});if(!isOldTokenSent&&_0x4bae6c[_0x5655('0x10')]!==_0x4eef58&&!_0x4bae6c['data2']){oldToken=_0x4bae6c[_0x5655('0x10')];}httpRequest(_0x4eef58)[_0x5655('0xd')](function(_0x25f698){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x25f698['active']){isOldTokenSent=![];if(!_0x4bae6c[_0x5655('0x11')]&&_0x4bae6c[_0x5655('0x11')]!=_0x25f698[_0x5655('0x11')]||_0x4bae6c[_0x5655('0x11')]&&_0x4bae6c[_0x5655('0x12')]){logger[_0x5655('0x13')](_0x5655('0x14'));}if(_0x4bae6c[_0x5655('0x11')]&&!_0x4bae6c[_0x5655('0x12')]&&_0x4bae6c[_0x5655('0x11')]!=_0x25f698[_0x5655('0x11')]){logger['info'](_0x5655('0x15'));}if(_0x4bae6c['license']&&!_0x4bae6c[_0x5655('0x12')]&&_0x4bae6c['license']==_0x25f698[_0x5655('0x11')]){return _0x5a1b4b;}return _0x5a1b4b[_0x5655('0x16')]({'data1':_0x4eef58,'data2':null,'license':_0x25f698[_0x5655('0x11')]});}else{if(_0x25f698[_0x5655('0x11')]||_0x4bae6c['license']){if(!_0x4bae6c['data2']){if(_0x4bae6c[_0x5655('0x10')]==_0x4eef58){GRAY_PERIOD_REASON='Disabled';logger[_0x5655('0x13')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON='Changed';logger[_0x5655('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x4bae6c[_0x5655('0x10')],_0x4eef58);}logger[_0x5655('0x13')](_0x5655('0x17'),GRAY_PERIOD_REASON[_0x5655('0x18')](),moment()[_0x5655('0xa')](_0x5655('0x19')));return _0x5a1b4b[_0x5655('0x16')]({'data2':encryptor['encryptString'](moment()['format'](_0x5655('0x19')))});}else{if(moment()[_0x5655('0x1a')](encryptor['decryptString'](_0x4bae6c['data2']),_0x5655('0x1b'))>DAYS){logger[_0x5655('0x13')](_0x5655('0x1c'),moment()['format'](_0x5655('0x19')));isOldTokenSent=![];return _0x5a1b4b[_0x5655('0x16')]({'data1':_0x4eef58,'data2':null,'license':null});}}}else{if(_0x4bae6c['data1']!=_0x4eef58){logger[_0x5655('0x13')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x4bae6c['data1'],_0x4eef58);return _0x5a1b4b[_0x5655('0x16')]({'data1':_0x4eef58,'data2':null,'license':null});}}}return _0x5a1b4b;})[_0x5655('0xd')](function(_0x14548f){_0x5a1b4b=_0x14548f;})[_0x5655('0xe')](function(_0x3d0e91){logger[_0x5655('0x1d')](_0x3d0e91[_0x5655('0x1e')]);})[_0x5655('0x1f')](function(){setTimeout(function(){manageLicense(hardware[_0x5655('0x20')](),_0x5a1b4b);},TIME);});}function defaultLicense(){var _0x28963e=hardware['getUuid']();if(_0x28963e){return db[_0x5655('0x21')][_0x5655('0x22')]({'where':{'id':0x1},'defaults':{'data1':_0x28963e}})[_0x5655('0x23')](function(_0x287706,_0x3a9f53){logger['info'](_0x5655('0x24'),_0x28963e);manageLicense(_0x28963e,_0x287706);})[_0x5655('0xe')](function(_0x156732){logger[_0x5655('0x1d')](_0x156732[_0x5655('0x1e')]);});}}exports[_0x5655('0x25')]=defaultLicense;
\ No newline at end of file
index c5298fa..3a508b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c8=['grayReason','changed','message','findAll','sequelize','COUNT','role','count','admin','telephone','users','telephones','forEach','user','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','bluebird','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','decryptString','format','parse','demo','machineUuid','gray','deadline','add'];(function(_0x425c39,_0x508167){var _0x293b7a=function(_0x202310){while(--_0x202310){_0x425c39['push'](_0x425c39['shift']());}};_0x293b7a(++_0x508167);}(_0x37c8,0x19e));var _0x837c=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x37c8[_0x8de54f];return _0x14cba4;};'use strict';var util=require(_0x837c('0x0'));var _=require(_0x837c('0x1'));var moment=require('moment');var BPromise=require(_0x837c('0x2'));var hardware=require('./hardware');var encryptor=require(_0x837c('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x837c('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x837c('0x5'),'machineUuid':hardware[_0x837c('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x837c('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x837c('0x7'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x49b0f2){return new BPromise(function(_0x1e9392,_0xcf90e8){return db[_0x837c('0x8')][_0x837c('0x9')](_[_0x837c('0xa')](_0x49b0f2,{'raw':!![],'where':{'id':0x1}}))[_0x837c('0xb')](function(_0x38de84){return checkLicense(_0x38de84,null);})[_0x837c('0xb')](function(_0x31f0db){_0x1e9392(_0x31f0db);return;})[_0x837c('0xc')](function(_0x3527f3){_0xcf90e8(_0x3527f3);});});}function checkLicense(_0x54744b,_0x33b456){if(!_0x54744b){demoLicense[_0x837c('0xd')]=_0x54744b[_0x837c('0xe')];return demoLicense;}try{var _0x528459=_0x33b456||_0x54744b[_0x837c('0xf')];if(_['isEmpty'](_0x528459)){throw new Error(_0x837c('0x10'));}var _0x33a42c=_0x54744b['data1'];var _0x57c885=_0x54744b['data2'];var _0x3e27ec=_0x33a42c['split']('-')[0x4];var _0x407d08=_0x33a42c[_0x837c('0x11')]('-')[0x0];var _0x29b872=encryptor[_0x837c('0x12')](_0x528459,util[_0x837c('0x13')]('%s:%s:%s',_0x3e27ec,_0x33a42c,_0x407d08));var _0x5257ee=JSON[_0x837c('0x14')](_0x29b872);_0x5257ee[_0x837c('0x15')]=![];_0x5257ee[_0x837c('0xd')]=_0x33a42c;_0x5257ee[_0x837c('0x16')]=hardware[_0x837c('0x6')]();if(_0x57c885){var _0x245118=encryptor[_0x837c('0x12')](_0x57c885);_0x5257ee[_0x837c('0x17')]=_0x245118;_0x5257ee[_0x837c('0x18')]=moment(_0x245118)[_0x837c('0x19')](0x7,'days')[_0x837c('0x13')]();_0x5257ee[_0x837c('0x1a')]=_0x5257ee[_0x837c('0xd')]!=_0x5257ee['machineUuid']?_0x837c('0x1b'):'disabled';}return _0x5257ee;}catch(_0x557446){breakingLicense['uuid']=_0x54744b[_0x837c('0xe')];breakingLicense[_0x837c('0x1c')]=_0x557446[_0x837c('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2ed929,_0x47bdb5){getLicense()[_0x837c('0xb')](function(_0x2d2460){return db['User'][_0x837c('0x1d')]({'attributes':['role',[db[_0x837c('0x1e')]['fn'](_0x837c('0x1f'),db['sequelize']['col'](_0x837c('0x20'))),_0x837c('0x21')]],'group':_0x837c('0x20'),'where':{'role':{'$or':[_0x837c('0x22'),'user',_0x837c('0x23')]}},'raw':!![]})[_0x837c('0xb')](function(_0x303080){var _0x39d582={'user':_0x2d2460[_0x837c('0x24')]||0x0,'telephone':_0x2d2460[_0x837c('0x25')]||0x0};_0x303080[_0x837c('0x26')](function(_0x33c7f0){var _0x2ef63b=_0x33c7f0[_0x837c('0x20')]===_0x837c('0x22')?_0x837c('0x27'):_0x33c7f0[_0x837c('0x20')];_0x39d582[_0x2ef63b]-=_0x33c7f0[_0x837c('0x21')];if(_0x39d582[_0x2ef63b]<0x0)_0x39d582[_0x2ef63b]=0x0;});_0x2ed929(_0x39d582);return;});})['catch'](function(_0x1e2069){_0x47bdb5(_0x1e2069);});});}function checkUserLimits(_0x1664ef){return new BPromise(function(_0x728664,_0x3cd619){getLimits()[_0x837c('0xb')](function(_0x218433){var _0x389183=_[_0x837c('0x28')](_[_0x837c('0x29')](_0x1664ef,_0x837c('0x20')),['admin',_0x837c('0x27'),_0x837c('0x23')]);var _0x5505ed=(_0x389183[_0x837c('0x22')]||0x0)+(_0x389183[_0x837c('0x27')]||0x0);var _0x727ab1=_0x389183[_0x837c('0x23')]||0x0;if(_0x5505ed>_0x218433['user'])return _0x3cd619('License\x20limit\x20reached\x20for\x20users');if(_0x727ab1>_0x218433['telephone'])return _0x3cd619(_0x837c('0x2a'));return _0x728664();})[_0x837c('0xc')](function(_0x2e1a3b){_0x3cd619(_0x2e1a3b);});});}module[_0x837c('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x7103=['count','admin','user','telephone','users','telephones','forEach','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','../../components/encryptor','../../mysqldb','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','uuid','data1','license','split','decryptString','format','parse','demo','machineUuid','gray','add','days','grayReason','disabled','User','role','COUNT','sequelize','col'];(function(_0x5b701c,_0x23458a){var _0x580ad3=function(_0x102a06){while(--_0x102a06){_0x5b701c['push'](_0x5b701c['shift']());}};_0x580ad3(++_0x23458a);}(_0x7103,0xb6));var _0x3710=function(_0x6d79da,_0x274df3){_0x6d79da=_0x6d79da-0x0;var _0x17e3ae=_0x7103[_0x6d79da];return _0x17e3ae;};'use strict';var util=require(_0x3710('0x0'));var _=require(_0x3710('0x1'));var moment=require(_0x3710('0x2'));var BPromise=require(_0x3710('0x3'));var hardware=require('./hardware');var encryptor=require(_0x3710('0x4'));var db=require(_0x3710('0x5'))['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':_0x3710('0x6'),'machineUuid':hardware[_0x3710('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x3710('0x8'),'machineUuid':hardware[_0x3710('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x54fb6c){return new BPromise(function(_0xa3f883,_0x5450b9){return db[_0x3710('0x9')][_0x3710('0xa')](_[_0x3710('0xb')](_0x54fb6c,{'raw':!![],'where':{'id':0x1}}))[_0x3710('0xc')](function(_0x3fe79c){return checkLicense(_0x3fe79c,null);})[_0x3710('0xc')](function(_0x58d914){_0xa3f883(_0x58d914);return;})[_0x3710('0xd')](function(_0x2a4f99){_0x5450b9(_0x2a4f99);});});}function checkLicense(_0x560568,_0x44972d){if(!_0x560568){demoLicense[_0x3710('0xe')]=_0x560568[_0x3710('0xf')];return demoLicense;}try{var _0x333937=_0x44972d||_0x560568[_0x3710('0x10')];if(_['isEmpty'](_0x333937)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x40b219=_0x560568[_0x3710('0xf')];var _0x3c653c=_0x560568['data2'];var _0xdf8acb=_0x40b219[_0x3710('0x11')]('-')[0x4];var _0x5a5315=_0x40b219['split']('-')[0x0];var _0x2e6f12=encryptor[_0x3710('0x12')](_0x333937,util[_0x3710('0x13')]('%s:%s:%s',_0xdf8acb,_0x40b219,_0x5a5315));var _0x3d81d5=JSON[_0x3710('0x14')](_0x2e6f12);_0x3d81d5[_0x3710('0x15')]=![];_0x3d81d5[_0x3710('0xe')]=_0x40b219;_0x3d81d5[_0x3710('0x16')]=hardware['getUuid']();if(_0x3c653c){var _0x377a74=encryptor[_0x3710('0x12')](_0x3c653c);_0x3d81d5[_0x3710('0x17')]=_0x377a74;_0x3d81d5['deadline']=moment(_0x377a74)[_0x3710('0x18')](0x7,_0x3710('0x19'))['format']();_0x3d81d5[_0x3710('0x1a')]=_0x3d81d5[_0x3710('0xe')]!=_0x3d81d5[_0x3710('0x16')]?'changed':_0x3710('0x1b');}return _0x3d81d5;}catch(_0x12d615){breakingLicense[_0x3710('0xe')]=_0x560568[_0x3710('0xf')];breakingLicense['message']=_0x12d615['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2f77fd,_0x59177f){getLicense()[_0x3710('0xc')](function(_0x3c8fb4){return db[_0x3710('0x1c')]['findAll']({'attributes':[_0x3710('0x1d'),[db['sequelize']['fn'](_0x3710('0x1e'),db[_0x3710('0x1f')][_0x3710('0x20')]('role')),_0x3710('0x21')]],'group':_0x3710('0x1d'),'where':{'role':{'$or':[_0x3710('0x22'),_0x3710('0x23'),_0x3710('0x24')]}},'raw':!![]})['then'](function(_0x1430d6){var _0x44a9cf={'user':_0x3c8fb4[_0x3710('0x25')]||0x0,'telephone':_0x3c8fb4[_0x3710('0x26')]||0x0};_0x1430d6[_0x3710('0x27')](function(_0x411dca){var _0x55a11d=_0x411dca[_0x3710('0x1d')]===_0x3710('0x22')?_0x3710('0x23'):_0x411dca['role'];_0x44a9cf[_0x55a11d]-=_0x411dca['count'];if(_0x44a9cf[_0x55a11d]<0x0)_0x44a9cf[_0x55a11d]=0x0;});_0x2f77fd(_0x44a9cf);return;});})[_0x3710('0xd')](function(_0x39e511){_0x59177f(_0x39e511);});});}function checkUserLimits(_0x1c4395){return new BPromise(function(_0x3afe62,_0x2f8b7d){getLimits()[_0x3710('0xc')](function(_0x2f38d5){var _0x5c5405=_['pick'](_[_0x3710('0x28')](_0x1c4395,_0x3710('0x1d')),[_0x3710('0x22'),_0x3710('0x23'),'telephone']);var _0x5b6352=(_0x5c5405[_0x3710('0x22')]||0x0)+(_0x5c5405['user']||0x0);var _0xf9f1a8=_0x5c5405[_0x3710('0x24')]||0x0;if(_0x5b6352>_0x2f38d5['user'])return _0x2f8b7d('License\x20limit\x20reached\x20for\x20users');if(_0xf9f1a8>_0x2f38d5['telephone'])return _0x2f8b7d(_0x3710('0x29'));return _0x3afe62();})['catch'](function(_0x26580c){_0x2f8b7d(_0x26580c);});});}module[_0x3710('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 1123382..9d1d227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['http://localhost:9000','myappanuglar-secret','app-id','secret'];(function(_0x188211,_0x1292ce){var _0x5e6bd5=function(_0x286e04){while(--_0x286e04){_0x188211['push'](_0x188211['shift']());}};_0x5e6bd5(++_0x1292ce);}(_0x7880,0x1f4));var _0x0788=function(_0x15fdff,_0x40d5b2){_0x15fdff=_0x15fdff-0x0;var _0x5450ed=_0x7880[_0x15fdff];return _0x5450ed;};'use strict';module['exports']={'DOMAIN':_0x0788('0x0'),'SESSION_SECRET':_0x0788('0x1'),'GOOGLE_ID':_0x0788('0x2'),'GOOGLE_SECRET':_0x0788('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0x0120=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0x560557,_0x9c8ce){var _0x5f4caa=function(_0x438a3b){while(--_0x438a3b){_0x560557['push'](_0x560557['shift']());}};_0x5f4caa(++_0x9c8ce);}(_0x0120,0x6f));var _0x0012=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x0120[_0x2f5ac5];return _0x37c9a8;};'use strict';module[_0x0012('0x0')]={'DOMAIN':_0x0012('0x1'),'SESSION_SECRET':_0x0012('0x2'),'GOOGLE_ID':_0x0012('0x3'),'GOOGLE_SECRET':_0x0012('0x4'),'DEBUG':''};
\ No newline at end of file
index 54b29e3..2f0f9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f11=['../utils/loggers','exports'];(function(_0x355d58,_0x43ad89){var _0x3d23fc=function(_0xd5a267){while(--_0xd5a267){_0x355d58['push'](_0x355d58['shift']());}};_0x3d23fc(++_0x43ad89);}(_0x1f11,0x1ca));var _0x11f1=function(_0xf62f27,_0x249f1d){_0xf62f27=_0xf62f27-0x0;var _0x4f7985=_0x1f11[_0xf62f27];return _0x4f7985;};'use strict';var fileLogger=require(_0x11f1('0x0'))['fileLogger'];module[_0x11f1('0x1')]=fileLogger;
\ No newline at end of file
+var _0x7f46=['fileLogger','../utils/loggers'];(function(_0x419550,_0x15cdf1){var _0x55f9ef=function(_0x44f707){while(--_0x44f707){_0x419550['push'](_0x419550['shift']());}};_0x55f9ef(++_0x15cdf1);}(_0x7f46,0xad));var _0x67f4=function(_0x4591ee,_0x3a1daf){_0x4591ee=_0x4591ee-0x0;var _0x4cdb81=_0x7f46[_0x4591ee];return _0x4cdb81;};'use strict';var fileLogger=require(_0x67f4('0x0'))[_0x67f4('0x1')];module['exports']=fileLogger;
\ No newline at end of file
index 38747e7..702555f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe46f=['ami','../../services/ami/index.js','../../services/agi/index.js','email','../../services/routing/index.js','xdr','exports','../../config/environment','join','root','legacy-libs','express'];(function(_0x5b26e0,_0x5728fb){var _0x42c735=function(_0x82ef78){while(--_0x82ef78){_0x5b26e0['push'](_0x5b26e0['shift']());}};_0x42c735(++_0x5728fb);}(_0xe46f,0xbb));var _0xfe46=function(_0x260b6f,_0x1edc36){_0x260b6f=_0x260b6f-0x0;var _0x3f672e=_0xe46f[_0x260b6f];return _0x3f672e;};'use strict';var path=require('path');var cfg=require(_0xfe46('0x0'));var env={'NODE_PATH':path['resolve'](path[_0xfe46('0x1')](cfg[_0xfe46('0x2')],_0xfe46('0x3')))};var pm2config={'apps':[{'name':_0xfe46('0x4'),'script':path[_0xfe46('0x1')](__dirname,'../../services/express/index.js'),'env':env},{'name':_0xfe46('0x5'),'script':path[_0xfe46('0x1')](__dirname,_0xfe46('0x6')),'env':env},{'name':'agi','script':path[_0xfe46('0x1')](__dirname,_0xfe46('0x7')),'env':env},{'name':_0xfe46('0x8'),'script':path[_0xfe46('0x1')](__dirname,'../../services/email/index.js'),'env':env},{'name':'routing','script':path[_0xfe46('0x1')](__dirname,_0xfe46('0x9')),'env':env},{'name':_0xfe46('0xa'),'script':path[_0xfe46('0x1')](__dirname,'../../services/xdr/index.js'),'env':env}]};module[_0xfe46('0xb')]=pm2config;
\ No newline at end of file
+var _0xea4b=['../../services/agi/index.js','email','../../services/email/index.js','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','../../config/environment','resolve','join','root','legacy-libs','express','ami','agi'];(function(_0x1f58a6,_0x48a33a){var _0x1f320e=function(_0x1abd7d){while(--_0x1abd7d){_0x1f58a6['push'](_0x1f58a6['shift']());}};_0x1f320e(++_0x48a33a);}(_0xea4b,0xe7));var _0xbea4=function(_0x698e19,_0x37fd58){_0x698e19=_0x698e19-0x0;var _0x3db5bf=_0xea4b[_0x698e19];return _0x3db5bf;};'use strict';var path=require(_0xbea4('0x0'));var cfg=require(_0xbea4('0x1'));var env={'NODE_PATH':path[_0xbea4('0x2')](path[_0xbea4('0x3')](cfg[_0xbea4('0x4')],_0xbea4('0x5')))};var pm2config={'apps':[{'name':_0xbea4('0x6'),'script':path[_0xbea4('0x3')](__dirname,'../../services/express/index.js'),'env':env},{'name':_0xbea4('0x7'),'script':path[_0xbea4('0x3')](__dirname,'../../services/ami/index.js'),'env':env},{'name':_0xbea4('0x8'),'script':path[_0xbea4('0x3')](__dirname,_0xbea4('0x9')),'env':env},{'name':_0xbea4('0xa'),'script':path[_0xbea4('0x3')](__dirname,_0xbea4('0xb')),'env':env},{'name':'routing','script':path[_0xbea4('0x3')](__dirname,_0xbea4('0xc')),'env':env},{'name':_0xbea4('0xd'),'script':path[_0xbea4('0x3')](__dirname,_0xbea4('0xe')),'env':env}]};module['exports']=pm2config;
\ No newline at end of file
index 604e525..ad018f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfec9=['stop','then','restart','describe','delete','dump','saved','bluebird','./config','connect','connected','start','disconnect'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfec9,0x13f));var _0x9fec=function(_0x40b4c1,_0x187262){_0x40b4c1=_0x40b4c1-0x0;var _0x8cf42b=_0xfec9[_0x40b4c1];return _0x8cf42b;};'use strict';var pm2=require('pm2');var BPromise=require(_0x9fec('0x0'));var config=require(_0x9fec('0x1'));function connect(){return new BPromise(function(_0x2ef927,_0x308b29){return pm2[_0x9fec('0x2')](function(_0x811f8d){if(_0x811f8d){return _0x308b29(_0x811f8d);}return _0x2ef927(_0x9fec('0x3'));});});};exports[_0x9fec('0x4')]=function(_0x453f63){return connect()['then'](function(){return new BPromise(function(_0x52c579,_0x39f9e1){return pm2[_0x9fec('0x4')](_0x453f63,function(_0x3dab0b,_0x5e84ea){if(_0x3dab0b){return _0x39f9e1(_0x3dab0b);}pm2[_0x9fec('0x5')]();return _0x52c579(_0x5e84ea);});});});};exports[_0x9fec('0x6')]=function(_0xa7bc34){return connect()[_0x9fec('0x7')](function(){return new BPromise(function(_0x1449de,_0x1ef90a){return pm2[_0x9fec('0x6')](_0xa7bc34,function(_0x2fee61,_0x3abf15){if(_0x2fee61){return _0x1ef90a(_0x2fee61);}pm2['disconnect']();return _0x1449de(_0x3abf15);});});});};exports[_0x9fec('0x8')]=function(_0x2ace9a){return connect()[_0x9fec('0x7')](function(){return new BPromise(function(_0x3f95dc,_0x3c2a22){return pm2['restart'](_0x2ace9a,function(_0x3ce296,_0x576668){if(_0x3ce296){return _0x3c2a22(_0x3ce296);}pm2[_0x9fec('0x5')]();return _0x3f95dc(_0x576668);});});});};exports['list']=function(){return connect()[_0x9fec('0x7')](function(){return new BPromise(function(_0x164978,_0x2d421d){return pm2['list'](function(_0x40159d,_0x42b488){if(_0x40159d){return _0x2d421d(_0x40159d);}pm2[_0x9fec('0x5')]();return _0x164978(_0x42b488);});});});};exports['describe']=function(_0x4d9fe4){return connect()[_0x9fec('0x7')](function(){return new BPromise(function(_0x2b19fa,_0x3fcf83){return pm2[_0x9fec('0x9')](_0x4d9fe4,function(_0x81e88e,_0x33ed34){if(_0x81e88e){return _0x3fcf83(_0x81e88e);}pm2['disconnect']();return _0x2b19fa(_0x33ed34);});});});};exports['delete']=function(_0x3c2719){return connect()[_0x9fec('0x7')](function(){return new BPromise(function(_0x54ca2a,_0x521395){return pm2[_0x9fec('0xa')](_0x3c2719,function(_0x53c4be,_0x1bab5c){if(_0x53c4be){return _0x521395(_0x53c4be);}pm2[_0x9fec('0x5')]();return _0x54ca2a(_0x1bab5c);});});});};exports[_0x9fec('0xb')]=function(){return connect()['then'](function(){return new BPromise(function(_0x3b53fb,_0x4a1a01){return pm2[_0x9fec('0xb')](function(_0x25b2da){if(_0x25b2da){return _0x4a1a01(_0x25b2da);}return _0x3b53fb(_0x9fec('0xc'));});});});};
\ No newline at end of file
+var _0x15c3=['delete','dump','saved','pm2','./config','connect','then','start','disconnect','stop','restart','list','describe'];(function(_0x11c065,_0x41f17b){var _0x27b50f=function(_0x47a43d){while(--_0x47a43d){_0x11c065['push'](_0x11c065['shift']());}};_0x27b50f(++_0x41f17b);}(_0x15c3,0x114));var _0x315c=function(_0x2794e4,_0x9147ec){_0x2794e4=_0x2794e4-0x0;var _0x5ebd69=_0x15c3[_0x2794e4];return _0x5ebd69;};'use strict';var pm2=require(_0x315c('0x0'));var BPromise=require('bluebird');var config=require(_0x315c('0x1'));function connect(){return new BPromise(function(_0x186ac7,_0x6c8551){return pm2[_0x315c('0x2')](function(_0x5f01cb){if(_0x5f01cb){return _0x6c8551(_0x5f01cb);}return _0x186ac7('connected');});});};exports['start']=function(_0x53ad0f){return connect()[_0x315c('0x3')](function(){return new BPromise(function(_0x247443,_0x1152d4){return pm2[_0x315c('0x4')](_0x53ad0f,function(_0x53835e,_0xb200f9){if(_0x53835e){return _0x1152d4(_0x53835e);}pm2[_0x315c('0x5')]();return _0x247443(_0xb200f9);});});});};exports['stop']=function(_0x387806){return connect()[_0x315c('0x3')](function(){return new BPromise(function(_0x13ddd5,_0x238f90){return pm2[_0x315c('0x6')](_0x387806,function(_0x4fe991,_0x5706e0){if(_0x4fe991){return _0x238f90(_0x4fe991);}pm2[_0x315c('0x5')]();return _0x13ddd5(_0x5706e0);});});});};exports[_0x315c('0x7')]=function(_0x22a71b){return connect()[_0x315c('0x3')](function(){return new BPromise(function(_0x4e9b3c,_0x58afe5){return pm2[_0x315c('0x7')](_0x22a71b,function(_0x1724b3,_0x918d8){if(_0x1724b3){return _0x58afe5(_0x1724b3);}pm2[_0x315c('0x5')]();return _0x4e9b3c(_0x918d8);});});});};exports[_0x315c('0x8')]=function(){return connect()[_0x315c('0x3')](function(){return new BPromise(function(_0x107138,_0x976833){return pm2[_0x315c('0x8')](function(_0x21059b,_0x497555){if(_0x21059b){return _0x976833(_0x21059b);}pm2[_0x315c('0x5')]();return _0x107138(_0x497555);});});});};exports[_0x315c('0x9')]=function(_0x23376a){return connect()[_0x315c('0x3')](function(){return new BPromise(function(_0x1ccf2d,_0x360f93){return pm2[_0x315c('0x9')](_0x23376a,function(_0x4dc8d0,_0x2905fc){if(_0x4dc8d0){return _0x360f93(_0x4dc8d0);}pm2['disconnect']();return _0x1ccf2d(_0x2905fc);});});});};exports[_0x315c('0xa')]=function(_0x541cd7){return connect()['then'](function(){return new BPromise(function(_0x443731,_0x2ae7ec){return pm2[_0x315c('0xa')](_0x541cd7,function(_0x422a31,_0x24f03f){if(_0x422a31){return _0x2ae7ec(_0x422a31);}pm2['disconnect']();return _0x443731(_0x24f03f);});});});};exports[_0x315c('0xb')]=function(){return connect()['then'](function(){return new BPromise(function(_0x54dd39,_0x2096a9){return pm2[_0x315c('0xb')](function(_0x2a48c6){if(_0x2a48c6){return _0x2096a9(_0x2a48c6);}return _0x54dd39(_0x315c('0xc'));});});});};
\ No newline at end of file
index 83ac129..e17058e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x488a=['minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','catch','error','inspect','start','lodash','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','Setting','find','then','subtract'];(function(_0x51b5b7,_0x3ef5b6){var _0x19d79d=function(_0x4bf925){while(--_0x4bf925){_0x51b5b7['push'](_0x51b5b7['shift']());}};_0x19d79d(++_0x3ef5b6);}(_0x488a,0xd1));var _0xa488=function(_0x550081,_0x9a66c4){_0x550081=_0x550081-0x0;var _0x3f47b0=_0x488a[_0x550081];return _0x3f47b0;};'use strict';var _=require(_0xa488('0x0'));var moment=require(_0xa488('0x1'));var Redis=require(_0xa488('0x2'));var util=require('util');var config=require(_0xa488('0x3'));var db=require(_0xa488('0x4'))['db'];var logger=require(_0xa488('0x5'))(_0xa488('0x6'));config[_0xa488('0x7')]=_[_0xa488('0x8')](config['redis'],{'host':_0xa488('0x9'),'port':0x18eb});var io=require(_0xa488('0xa'))(new Redis(config['redis']));function closeInteractions(){var _0x179f82=0x0;var _0x194f1f=[];return db[_0xa488('0xb')][_0xa488('0xc')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0xa488('0xd')](function(_0xda9e98){_0x179f82=_0xda9e98['chatTimeout'];if(_0x179f82){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xa488('0xe')](_0xda9e98['chatTimeout'],_0xa488('0xf'))}}});}else{return[];}})[_0xa488('0xd')](function(_0x19f623){if(_0x19f623&&_0x19f623[_0xa488('0x10')]){_0x194f1f=_[_0xa488('0x11')](_0x19f623||[],'id');logger[_0xa488('0x12')](_0xa488('0x13'),_0x194f1f[_0xa488('0x14')]());return db[_0xa488('0x15')][_0xa488('0x16')]({'closeReason':'system','disposition':_0xa488('0x17'),'closed':!![],'closedAt':moment()[_0xa488('0x18')](_0xa488('0x19'))},{'where':{'id':_0x194f1f}});}})['then'](function(){if(_0x194f1f&&_0x194f1f[_0xa488('0x10')]){logger[_0xa488('0x12')](_0xa488('0x1a'),_0x194f1f[_0xa488('0x14')]());for(var _0x30ee8b=0x0;_0x30ee8b<_0x194f1f[_0xa488('0x10')];_0x30ee8b++){io['emit'](_0xa488('0x1b'),{'id':_0x194f1f[_0x30ee8b],'closed':!![]});}}})[_0xa488('0x1c')](function(_0x343cc2){logger[_0xa488('0x1d')]('[CHAT]\x20Error\x20closing\x20interactions',_0x343cc2?util[_0xa488('0x1e')](_0x343cc2,{'showHidden':![],'depth':null}):'');});}exports[_0xa488('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x0115=['socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','findAll','lastMsgAt','minutes','map','info','join','update','system','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','util','../../config/environment','../../mysqldb','redis','defaults','localhost'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0x0115,0x156));var _0x5011=function(_0x31b323,_0x4d1cfe){_0x31b323=_0x31b323-0x0;var _0x557071=_0x0115[_0x31b323];return _0x557071;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require('ioredis');var util=require(_0x5011('0x0'));var config=require(_0x5011('0x1'));var db=require(_0x5011('0x2'))['db'];var logger=require('../logger')('schedule');config[_0x5011('0x3')]=_[_0x5011('0x4')](config[_0x5011('0x3')],{'host':_0x5011('0x5'),'port':0x18eb});var io=require(_0x5011('0x6'))(new Redis(config[_0x5011('0x3')]));function closeInteractions(){var _0x2c75f0=0x0;var _0x103cee=[];return db[_0x5011('0x7')][_0x5011('0x8')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x5011('0x9')](function(_0x2a6295){_0x2c75f0=_0x2a6295[_0x5011('0xa')];if(_0x2c75f0){return db[_0x5011('0xb')][_0x5011('0xc')]({'raw':!![],'attributes':['id',_0x5011('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x2a6295[_0x5011('0xa')],_0x5011('0xe'))}}});}else{return[];}})[_0x5011('0x9')](function(_0x508074){if(_0x508074&&_0x508074['length']){_0x103cee=_[_0x5011('0xf')](_0x508074||[],'id');logger[_0x5011('0x10')]('[CHAT]\x20Interactions\x20to\x20close:',_0x103cee[_0x5011('0x11')]());return db[_0x5011('0xb')][_0x5011('0x12')]({'closeReason':_0x5011('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0x5011('0x14'))},{'where':{'id':_0x103cee}});}})[_0x5011('0x9')](function(){if(_0x103cee&&_0x103cee[_0x5011('0x15')]){logger[_0x5011('0x10')](_0x5011('0x16'),_0x103cee[_0x5011('0x11')]());for(var _0x407681=0x0;_0x407681<_0x103cee['length'];_0x407681++){io[_0x5011('0x17')](_0x5011('0x18'),{'id':_0x103cee[_0x407681],'closed':!![]});}}})['catch'](function(_0x460e8c){logger[_0x5011('0x19')](_0x5011('0x1a'),_0x460e8c?util[_0x5011('0x1b')](_0x460e8c,{'showHidden':![],'depth':null}):'');});}exports[_0x5011('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 57f68e6..7d79813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc6e=['startAllRefreshIntervals','exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x5ca3f5,_0x647883){var _0x2649f1=function(_0xd5e89d){while(--_0xd5e89d){_0x5ca3f5['push'](_0x5ca3f5['shift']());}};_0x2649f1(++_0x647883);}(_0xfc6e,0xec));var _0xefc6=function(_0x1ff7f9,_0x7f4e5d){_0x1ff7f9=_0x1ff7f9-0x0;var _0x42f261=_0xfc6e[_0x1ff7f9];return _0x42f261;};'use strict';function start(){var _0xf2d522=require(_0xefc6('0x0'));return _0xf2d522[_0xefc6('0x1')]();}module[_0xefc6('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xedf6=['startAllRefreshIntervals','exports'];(function(_0x50e351,_0x35608c){var _0x418d06=function(_0x26145a){while(--_0x26145a){_0x50e351['push'](_0x50e351['shift']());}};_0x418d06(++_0x35608c);}(_0xedf6,0x1f2));var _0x6edf=function(_0x53a7a8,_0xed2bff){_0x53a7a8=_0x53a7a8-0x0;var _0x555f71=_0xedf6[_0x53a7a8];return _0x555f71;};'use strict';function start(){var _0x1677fb=require('../../api/cloudProvider/cloudProvider.oauth.js');return _0x1677fb[_0x6edf('0x0')]();}module[_0x6edf('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
index f4fdb0d..a7dcc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b84=['jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','run\x20job','cron','active','startAt','endAt','add','start','stop\x20cron','isBetween','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','email','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','savename','format','basename','extname','zip','join','existsSync','status','Sent','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','message','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','then','CustomReportId','runReport','no\x20report\x20id','Schedule','findAll','CloudProvider'];(function(_0x1a87b3,_0x45ba68){var _0x37e84d=function(_0x39f49e){while(--_0x39f49e){_0x1a87b3['push'](_0x1a87b3['shift']());}};_0x37e84d(++_0x45ba68);}(_0x6b84,0x6f));var _0x46b8=function(_0x406792,_0x19ac40){_0x406792=_0x406792-0x0;var _0x5623ce=_0x6b84[_0x406792];return _0x5623ce;};'use strict';var fs=require('fs');var util=require(_0x46b8('0x0'));var path=require(_0x46b8('0x1'));var _=require(_0x46b8('0x2'));var moment=require(_0x46b8('0x3'));var CronJobManager=require(_0x46b8('0x4'));var jayson=require(_0x46b8('0x5'));var BPromise=require(_0x46b8('0x6'));var logger=require('../logger')(_0x46b8('0x7'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x46b8('0x8'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x15fd1e,_0x41d02e){return function(){logger[_0x46b8('0x9')](_0x46b8('0xa'),_0x15fd1e['email']);var _0x51a82f=!![];var _0x5603b2=_0x15fd1e[_0x46b8('0xb')][_0x46b8('0xc')]();var _0x3753d3={'account':_0x5603b2,'message':{'from':util['format'](_0x46b8('0xd'),_0x15fd1e['MailAccount'][_0x46b8('0xe')],_0x15fd1e['MailAccount'][_0x46b8('0xf')]||_0x15fd1e[_0x46b8('0xb')][_0x46b8('0x10')][_0x46b8('0x11')]),'to':_0x15fd1e[_0x46b8('0xf')],'cc':_0x15fd1e['cc'],'bcc':_0x15fd1e[_0x46b8('0x12')],'subject':util['format'](_0x46b8('0x13'),_0x41d02e[_0x46b8('0xe')],_0x15fd1e[_0x46b8('0x14')],_0x15fd1e[_0x46b8('0x15')])}};var _0x39f22f=path['join'](__dirname,_0x46b8('0x16'));var _0x3608e9=_0x41d02e[_0x46b8('0x17')];var _0xfae042=util[_0x46b8('0x18')]('%s.%s',path[_0x46b8('0x19')](_0x41d02e[_0x46b8('0x17')],path[_0x46b8('0x1a')](_0x41d02e[_0x46b8('0x17')])),_0x46b8('0x1b'));var _0x4fae8d=path[_0x46b8('0x1c')](_0x39f22f,_0x3608e9);var _0x4e791b=path[_0x46b8('0x1c')](_0x39f22f,_0xfae042);if(fs[_0x46b8('0x1d')](_0x4fae8d)){_0x41d02e[_0x46b8('0x1e')]=_0x46b8('0x1f');_0x3753d3['message'][_0x46b8('0x20')]=[{'filename':_0x3608e9,'path':_0x4fae8d}];_0x3753d3['message'][_0x46b8('0x21')]=util['format'](_0x46b8('0x22'),JSON[_0x46b8('0x23')](_0x41d02e,null,0x2));}else if(fs['existsSync'](_0x4e791b)){_0x41d02e[_0x46b8('0x1e')]=_0x46b8('0x1f');_0x3753d3[_0x46b8('0x24')][_0x46b8('0x20')]=[{'filename':_0xfae042,'path':_0x4e791b}];}else{_0x3753d3[_0x46b8('0x24')][_0x46b8('0x21')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x15fd1e['sendIfEmpty']){_0x51a82f=![];logger[_0x46b8('0x9')](_0x46b8('0x25'));}}if(_0x51a82f){return client[_0x46b8('0x26')](_0x46b8('0x27'),_0x3753d3)['then'](function(_0x2a4c76){if(_0x2a4c76[_0x46b8('0x28')]){return logger['error']('error\x20mail',JSON['stringify'](_0x2a4c76));}return logger[_0x46b8('0x9')](_0x46b8('0x29'));})[_0x46b8('0x2a')](function(_0x4e5aca){return logger[_0x46b8('0x28')](_0x46b8('0x2b'),JSON[_0x46b8('0x23')](_0x4e5aca));});}};}function handleError(){return function(_0x7a4874){return logger[_0x46b8('0x28')](JSON[_0x46b8('0x23')](_0x7a4874));};}function handleResult(_0x39e837){return function(_0x307d7d){logger[_0x46b8('0x9')](_0x46b8('0x2c'),JSON[_0x46b8('0x23')](_0x307d7d));if(_0x39e837['MailAccount']&&_0x39e837[_0x46b8('0xb')][_0x46b8('0x10')]&&!_[_0x46b8('0x2d')](_0x39e837[_0x46b8('0xf')])){setTimeout(handleSendEmail(_0x39e837,_0x307d7d),0x3c*0x3e8);}};}function handleJob(_0x47d237){return function(){try{if(_[_0x46b8('0x2d')](_0x47d237['subtractNumber'])){return logger[_0x46b8('0x9')](_0x46b8('0x2e'));}if(_['isNil'](_0x47d237[_0x46b8('0x15')])){return logger[_0x46b8('0x9')](_0x46b8('0x2f'));}var _0x2baf33={'startDate':moment()[_0x46b8('0x30')](_0x47d237[_0x46b8('0x14')],_0x47d237[_0x46b8('0x15')])['format'](_0x46b8('0x31')),'endDate':moment()[_0x46b8('0x18')](_0x46b8('0x31')),'type':_0x46b8('0x32'),'output':_0x47d237[_0x46b8('0x33')],'name':_0x47d237[_0x46b8('0xe')]};if(!_[_0x46b8('0x2d')](_0x47d237[_0x46b8('0x34')])){logger[_0x46b8('0x9')](_0x46b8('0x35'),_0x47d237[_0x46b8('0x34')]);return analyticDefaultReportController['runReport']({'id':_0x47d237['DefaultReportId']},_0x2baf33)[_0x46b8('0x36')](handleResult(_0x47d237))[_0x46b8('0x2a')](handleError());}if(!_[_0x46b8('0x2d')](_0x47d237[_0x46b8('0x37')])){logger[_0x46b8('0x9')]('exec\x20custom\x20report\x20id:%s',_0x47d237['CustomReportId']);return analyticCustomReportController[_0x46b8('0x38')]({'id':_0x47d237['CustomReportId']},_0x2baf33)[_0x46b8('0x36')](handleResult(_0x47d237))['catch'](handleError());}}catch(_0x558bc9){logger['error'](JSON[_0x46b8('0x23')](_0x558bc9));}return logger[_0x46b8('0x9')](_0x46b8('0x39'));};}function getJobs(_0x486d0e){var _0x57faba={};if(_0x486d0e){_0x57faba['id']=_0x486d0e;}return db[_0x46b8('0x3a')][_0x46b8('0x3b')]({'where':_0x57faba,'include':[{'model':db[_0x46b8('0xb')],'attributes':['id',_0x46b8('0xe'),_0x46b8('0xf')],'include':[{'model':db['MailServerOut'],'as':_0x46b8('0x10'),'include':[{'model':db['CloudProvider'],'as':_0x46b8('0x3c')}]}]}]})[_0x46b8('0x36')](function(_0x3e55f4){var _0x57a9c7=_['keys'](manager[_0x46b8('0x3d')]);var _0x14f0b9=_[_0x46b8('0x3e')](_0x3e55f4,function(_0x13ccf6){return _0x13ccf6['id'][_0x46b8('0x3f')]();});var _0x8182d6=_[_0x46b8('0x40')](_0x3e55f4,function(_0x4b9a9d){return _0x4b9a9d['id'][_0x46b8('0x3f')]();});var _0x24ab40=_0x486d0e?_0x14f0b9:_[_0x46b8('0x41')](_0x14f0b9,_0x57a9c7);var _0x27f151=_[_0x46b8('0x42')](_0x14f0b9,_0x57a9c7);var _0x20061c=_[_0x46b8('0x41')](_0x57a9c7,_0x14f0b9);var _0x3aada5;var _0x1e3e69;for(_0x3aada5=0x0;_0x3aada5<_0x20061c[_0x46b8('0x43')]&&!_0x486d0e;_0x3aada5+=0x1){_0x1e3e69=_0x20061c[_0x3aada5][_0x46b8('0x3f')]();if(manager[_0x46b8('0x44')](_0x1e3e69)){manager[_0x46b8('0x45')](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger[_0x46b8('0x9')](_0x46b8('0x47'),_0x1e3e69);}}logger[_0x46b8('0x9')]('toRun',JSON[_0x46b8('0x23')](_0x24ab40));for(_0x3aada5=0x0;_0x3aada5<_0x24ab40['length'];_0x3aada5+=0x1){_0x1e3e69=_0x24ab40[_0x3aada5]['toString']();logger['info'](_0x46b8('0x48'),_0x1e3e69);if(_0x486d0e){logger[_0x46b8('0x9')](_0x46b8('0x49'),_0x486d0e);logger['info'](JSON[_0x46b8('0x23')](_0x8182d6[_0x1e3e69]));BPromise['resolve']()['then'](handleJob(_0x8182d6[_0x1e3e69]));logger['info'](_0x46b8('0x4a'),_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}else if(_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]&&_0x8182d6[_0x1e3e69][_0x46b8('0x4c')]&&moment()['isBetween'](_0x8182d6[_0x1e3e69][_0x46b8('0x4d')],_0x8182d6[_0x1e3e69][_0x46b8('0x4e')])){manager[_0x46b8('0x4f')](_0x1e3e69,_0x8182d6[_0x1e3e69][_0x46b8('0x4b')],handleJob(_0x8182d6[_0x1e3e69]));manager[_0x46b8('0x50')](_0x1e3e69);logger[_0x46b8('0x9')]('add\x20cron',_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69]['cron']);}else if(manager[_0x46b8('0x44')](_0x1e3e69)){manager[_0x46b8('0x45')](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger[_0x46b8('0x9')](_0x46b8('0x51'),_0x8182d6[_0x1e3e69]['name'],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}}for(_0x3aada5=0x0,_0x1e3e69;_0x3aada5<_0x27f151['length']&&!_0x486d0e;_0x3aada5+=0x1){_0x1e3e69=_0x27f151[_0x3aada5]['toString']();if(manager[_0x46b8('0x44')](_0x1e3e69)){if(_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]&&_0x8182d6[_0x1e3e69][_0x46b8('0x4c')]&&moment()[_0x46b8('0x52')](_0x8182d6[_0x1e3e69]['startAt'],_0x8182d6[_0x1e3e69][_0x46b8('0x4e')])){manager[_0x46b8('0x53')](_0x1e3e69,_0x8182d6[_0x1e3e69][_0x46b8('0x4b')],handleJob(_0x8182d6[_0x1e3e69]));logger[_0x46b8('0x9')](_0x46b8('0x54'),_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}else{manager['stop'](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger['info'](_0x46b8('0x51'),_0x8182d6[_0x1e3e69]['name'],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}}}})[_0x46b8('0x2a')](function(_0x2f3702){logger['error'](JSON[_0x46b8('0x23')](_0x2f3702));});}exports[_0x46b8('0x55')]=function(_0x45d5fb){return getJobs(_0x45d5fb);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xec9a=['MailAccount','name','Smtp','user','bcc','format','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','Sent','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','stringify','email\x20sent','catch','isNil','subtractNumber','subtractUnit','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','then','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','intersection','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','active','isBetween','add','start','add\x20cron','stop\x20cron','startAt','endAt','update','update\x20cron','util','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','email','getSmtpOptions','\x22%s\x22\x20<%s>'];(function(_0x20c4ea,_0x40edad){var _0x38f70d=function(_0x37fe1b){while(--_0x37fe1b){_0x20c4ea['push'](_0x20c4ea['shift']());}};_0x38f70d(++_0x40edad);}(_0xec9a,0xf7));var _0xaec9=function(_0x239a41,_0x3d82df){_0x239a41=_0x239a41-0x0;var _0xe6228d=_0xec9a[_0x239a41];return _0xe6228d;};'use strict';var fs=require('fs');var util=require(_0xaec9('0x0'));var path=require('path');var _=require(_0xaec9('0x1'));var moment=require(_0xaec9('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xaec9('0x3'));var BPromise=require(_0xaec9('0x4'));var logger=require(_0xaec9('0x5'))(_0xaec9('0x6'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xaec9('0x7'));var analyticDefaultReportController=require(_0xaec9('0x8'));var client=jayson[_0xaec9('0x9')][_0xaec9('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4e0d60,_0x259baf){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x4e0d60[_0xaec9('0xb')]);var _0x12b0ef=!![];var _0x14be15=_0x4e0d60['MailAccount'][_0xaec9('0xc')]();var _0x2577bb={'account':_0x14be15,'message':{'from':util['format'](_0xaec9('0xd'),_0x4e0d60[_0xaec9('0xe')][_0xaec9('0xf')],_0x4e0d60[_0xaec9('0xe')][_0xaec9('0xb')]||_0x4e0d60[_0xaec9('0xe')][_0xaec9('0x10')][_0xaec9('0x11')]),'to':_0x4e0d60[_0xaec9('0xb')],'cc':_0x4e0d60['cc'],'bcc':_0x4e0d60[_0xaec9('0x12')],'subject':util[_0xaec9('0x13')]('Report\x20%s\x20last\x20%s\x20%s',_0x259baf[_0xaec9('0xf')],_0x4e0d60['subtractNumber'],_0x4e0d60['subtractUnit'])}};var _0x471288=path[_0xaec9('0x14')](__dirname,_0xaec9('0x15'));var _0xa29807=_0x259baf[_0xaec9('0x16')];var _0xea0447=util[_0xaec9('0x13')](_0xaec9('0x17'),path[_0xaec9('0x18')](_0x259baf['savename'],path[_0xaec9('0x19')](_0x259baf['savename'])),_0xaec9('0x1a'));var _0x16b7c2=path[_0xaec9('0x14')](_0x471288,_0xa29807);var _0x651d5c=path['join'](_0x471288,_0xea0447);if(fs['existsSync'](_0x16b7c2)){_0x259baf[_0xaec9('0x1b')]=_0xaec9('0x1c');_0x2577bb[_0xaec9('0x1d')]['attachments']=[{'filename':_0xa29807,'path':_0x16b7c2}];_0x2577bb['message'][_0xaec9('0x1e')]=util['format'](_0xaec9('0x1f'),JSON['stringify'](_0x259baf,null,0x2));}else if(fs['existsSync'](_0x651d5c)){_0x259baf[_0xaec9('0x1b')]=_0xaec9('0x1c');_0x2577bb[_0xaec9('0x1d')][_0xaec9('0x20')]=[{'filename':_0xea0447,'path':_0x651d5c}];}else{_0x2577bb[_0xaec9('0x1d')]['text']=_0xaec9('0x21');if(!_0x4e0d60[_0xaec9('0x22')]){_0x12b0ef=![];logger[_0xaec9('0x23')](_0xaec9('0x24'));}}if(_0x12b0ef){return client[_0xaec9('0x25')](_0xaec9('0x26'),_0x2577bb)['then'](function(_0x41a353){if(_0x41a353['error']){return logger[_0xaec9('0x27')](_0xaec9('0x28'),JSON[_0xaec9('0x29')](_0x41a353));}return logger[_0xaec9('0x23')](_0xaec9('0x2a'));})[_0xaec9('0x2b')](function(_0x4566e9){return logger[_0xaec9('0x27')]('error\x20mail',JSON['stringify'](_0x4566e9));});}};}function handleError(){return function(_0x1fb927){return logger['error'](JSON['stringify'](_0x1fb927));};}function handleResult(_0x58a35d){return function(_0x26b940){logger[_0xaec9('0x23')]('data',JSON[_0xaec9('0x29')](_0x26b940));if(_0x58a35d[_0xaec9('0xe')]&&_0x58a35d[_0xaec9('0xe')]['Smtp']&&!_[_0xaec9('0x2c')](_0x58a35d[_0xaec9('0xb')])){setTimeout(handleSendEmail(_0x58a35d,_0x26b940),0x3c*0x3e8);}};}function handleJob(_0x59d82f){return function(){try{if(_['isNil'](_0x59d82f[_0xaec9('0x2d')])){return logger['info']('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xaec9('0x2c')](_0x59d82f[_0xaec9('0x2e')])){return logger[_0xaec9('0x23')]('subtractUnit\x20null\x20or\x20undefined');}var _0x49c1d4={'startDate':moment()[_0xaec9('0x2f')](_0x59d82f[_0xaec9('0x2d')],_0x59d82f[_0xaec9('0x2e')])[_0xaec9('0x13')](_0xaec9('0x30')),'endDate':moment()[_0xaec9('0x13')](_0xaec9('0x30')),'type':'scheduled','output':_0x59d82f[_0xaec9('0x31')],'name':_0x59d82f[_0xaec9('0xf')]};if(!_[_0xaec9('0x2c')](_0x59d82f[_0xaec9('0x32')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x59d82f['DefaultReportId']);return analyticDefaultReportController[_0xaec9('0x33')]({'id':_0x59d82f[_0xaec9('0x32')]},_0x49c1d4)[_0xaec9('0x34')](handleResult(_0x59d82f))[_0xaec9('0x2b')](handleError());}if(!_[_0xaec9('0x2c')](_0x59d82f['CustomReportId'])){logger[_0xaec9('0x23')](_0xaec9('0x35'),_0x59d82f['CustomReportId']);return analyticCustomReportController[_0xaec9('0x33')]({'id':_0x59d82f[_0xaec9('0x36')]},_0x49c1d4)[_0xaec9('0x34')](handleResult(_0x59d82f))[_0xaec9('0x2b')](handleError());}}catch(_0x1bc113){logger[_0xaec9('0x27')](JSON[_0xaec9('0x29')](_0x1bc113));}return logger[_0xaec9('0x23')](_0xaec9('0x37'));};}function getJobs(_0x54064d){var _0x245bdb={};if(_0x54064d){_0x245bdb['id']=_0x54064d;}return db[_0xaec9('0x38')][_0xaec9('0x39')]({'where':_0x245bdb,'include':[{'model':db[_0xaec9('0xe')],'attributes':['id','name',_0xaec9('0xb')],'include':[{'model':db[_0xaec9('0x3a')],'as':_0xaec9('0x10'),'include':[{'model':db[_0xaec9('0x3b')],'as':_0xaec9('0x3b')}]}]}]})[_0xaec9('0x34')](function(_0x449a54){var _0x28a0cc=_[_0xaec9('0x3c')](manager[_0xaec9('0x3d')]);var _0x27cbab=_[_0xaec9('0x3e')](_0x449a54,function(_0x19bd8c){return _0x19bd8c['id'][_0xaec9('0x3f')]();});var _0x5893cc=_[_0xaec9('0x40')](_0x449a54,function(_0x138a8d){return _0x138a8d['id'][_0xaec9('0x3f')]();});var _0x537386=_0x54064d?_0x27cbab:_['difference'](_0x27cbab,_0x28a0cc);var _0x36e0c5=_[_0xaec9('0x41')](_0x27cbab,_0x28a0cc);var _0x50129b=_[_0xaec9('0x42')](_0x28a0cc,_0x27cbab);var _0x40ec90;var _0x427ce5;for(_0x40ec90=0x0;_0x40ec90<_0x50129b[_0xaec9('0x43')]&&!_0x54064d;_0x40ec90+=0x1){_0x427ce5=_0x50129b[_0x40ec90]['toString']();if(manager[_0xaec9('0x44')](_0x427ce5)){manager[_0xaec9('0x45')](_0x427ce5);manager[_0xaec9('0x46')](_0x427ce5);logger['info'](_0xaec9('0x47'),_0x427ce5);}}logger[_0xaec9('0x23')](_0xaec9('0x48'),JSON[_0xaec9('0x29')](_0x537386));for(_0x40ec90=0x0;_0x40ec90<_0x537386[_0xaec9('0x43')];_0x40ec90+=0x1){_0x427ce5=_0x537386[_0x40ec90][_0xaec9('0x3f')]();logger['info'](_0xaec9('0x49'),_0x427ce5);if(_0x54064d){logger['info'](_0xaec9('0x4a'),_0x54064d);logger[_0xaec9('0x23')](JSON[_0xaec9('0x29')](_0x5893cc[_0x427ce5]));BPromise['resolve']()[_0xaec9('0x34')](handleJob(_0x5893cc[_0x427ce5]));logger[_0xaec9('0x23')](_0xaec9('0x4b'),_0x5893cc[_0x427ce5]['name'],_0x5893cc[_0x427ce5][_0xaec9('0x4c')]);}else if(_0x5893cc[_0x427ce5]['cron']&&_0x5893cc[_0x427ce5][_0xaec9('0x4d')]&&moment()[_0xaec9('0x4e')](_0x5893cc[_0x427ce5]['startAt'],_0x5893cc[_0x427ce5]['endAt'])){manager[_0xaec9('0x4f')](_0x427ce5,_0x5893cc[_0x427ce5]['cron'],handleJob(_0x5893cc[_0x427ce5]));manager[_0xaec9('0x50')](_0x427ce5);logger[_0xaec9('0x23')](_0xaec9('0x51'),_0x5893cc[_0x427ce5][_0xaec9('0xf')],_0x5893cc[_0x427ce5][_0xaec9('0x4c')]);}else if(manager[_0xaec9('0x44')](_0x427ce5)){manager[_0xaec9('0x45')](_0x427ce5);manager['deleteJob'](_0x427ce5);logger[_0xaec9('0x23')](_0xaec9('0x52'),_0x5893cc[_0x427ce5][_0xaec9('0xf')],_0x5893cc[_0x427ce5]['cron']);}}for(_0x40ec90=0x0,_0x427ce5;_0x40ec90<_0x36e0c5[_0xaec9('0x43')]&&!_0x54064d;_0x40ec90+=0x1){_0x427ce5=_0x36e0c5[_0x40ec90][_0xaec9('0x3f')]();if(manager[_0xaec9('0x44')](_0x427ce5)){if(_0x5893cc[_0x427ce5][_0xaec9('0x4c')]&&_0x5893cc[_0x427ce5][_0xaec9('0x4d')]&&moment()[_0xaec9('0x4e')](_0x5893cc[_0x427ce5][_0xaec9('0x53')],_0x5893cc[_0x427ce5][_0xaec9('0x54')])){manager[_0xaec9('0x55')](_0x427ce5,_0x5893cc[_0x427ce5][_0xaec9('0x4c')],handleJob(_0x5893cc[_0x427ce5]));logger[_0xaec9('0x23')](_0xaec9('0x56'),_0x5893cc[_0x427ce5][_0xaec9('0xf')],_0x5893cc[_0x427ce5][_0xaec9('0x4c')]);}else{manager[_0xaec9('0x45')](_0x427ce5);manager['deleteJob'](_0x427ce5);logger[_0xaec9('0x23')](_0xaec9('0x52'),_0x5893cc[_0x427ce5][_0xaec9('0xf')],_0x5893cc[_0x427ce5]['cron']);}}}})['catch'](function(_0x3ad052){logger[_0xaec9('0x27')](JSON['stringify'](_0x3ad052));});}exports['run']=function(_0x222494){return getJobs(_0x222494);};exports[_0xaec9('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 8c2311c..70e1fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcabe=['util','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data2','transcribeRegion','transcribeName','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','COMPLETED','TranscriptionJobStatus','Transcript','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','sentimentAccountId','Cloud\x20Provider\x20not\x20available','data1','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Cloud\x20Provider\x20not\x20configured','Positive','catch','name','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','SequelizeValidationError','error','start','lodash','request-promise'];(function(_0x17bd90,_0x2c8435){var _0x83ff1d=function(_0xab0d5){while(--_0xab0d5){_0x17bd90['push'](_0x17bd90['shift']());}};_0x83ff1d(++_0x2c8435);}(_0xcabe,0x1ef));var _0xecab=function(_0x4f2332,_0x2c4b27){_0x4f2332=_0x4f2332-0x0;var _0x3557f0=_0xcabe[_0x4f2332];return _0x3557f0;};var _=require(_0xecab('0x0'));var AWS=require('aws-sdk');var rp=require(_0xecab('0x1'));var util=require(_0xecab('0x2'));var BPromise=require('bluebird');var db=require(_0xecab('0x3'))['db'];var logger=require(_0xecab('0x4'))('transcribe');function getTranscriptionJob(_0x21243b,_0xa979c2,_0x120cdf,_0x4c477b){return new Promise(function(_0x2ef298,_0x2ace9c){var _0x105562=new AWS[(_0xecab('0x5'))]({'accessKeyId':_0xa979c2,'secretAccessKey':_0x21243b,'region':_0x120cdf});_0x105562[_0xecab('0x6')]({'TranscriptionJobName':_0x4c477b},function(_0x2bd7c7,_0x88f839){if(_0x2bd7c7){return _0x2ace9c(_0x2bd7c7);}else{return _0x2ef298(_0x88f839);}});});}function sentiment(_0x451770,_0x186f0f,_0x5f2db6,_0x4b1d26,_0x270fdd){return new Promise(function(_0x2550e9,_0x52f26a){var _0x445617=new AWS[(_0xecab('0x7'))]({'accessKeyId':_0x186f0f,'secretAccessKey':_0x451770,'region':_0x5f2db6});_0x445617[_0xecab('0x8')]({'Text':_0x4b1d26,'LanguageCode':_0x270fdd[_0xecab('0x9')](0x0,0x2)},function(_0x2cc3dc,_0x449816){if(_0x2cc3dc){return _0x52f26a(_0x2cc3dc);}else{return _0x2550e9(_0x449816);}});});}function checkTranscribeJob(_0x5e502e,_0x3d161e,_0x24cf0c){var _0x1d04c1;return new BPromise(function(_0x9de64e,_0x2d0208){logger[_0xecab('0xa')](util['format'](_0xecab('0xb'),_0x5e502e['id'],_0x5e502e['transcribeName']));return getTranscriptionJob(_0x24cf0c['data1'],_0x24cf0c[_0xecab('0xc')],_0x3d161e[_0xecab('0xd')],_0x5e502e[_0xecab('0xe')])[_0xecab('0xf')](function(_0x5bdb81){logger[_0xecab('0xa')](util[_0xecab('0x10')](_0xecab('0x11'),_0x5e502e['id'],_0x5e502e[_0xecab('0xe')],_0x5bdb81[_0xecab('0x12')]['TranscriptionJobStatus']));if(!_0x5e502e[_0xecab('0x13')]){switch(_0x5bdb81[_0xecab('0x12')]['TranscriptionJobStatus']){case _0xecab('0x14'):var _0x3bd6c0={'transcribeStatus':_0x5bdb81[_0xecab('0x12')][_0xecab('0x15')],'fileUri':_0x5bdb81[_0xecab('0x12')][_0xecab('0x16')]['TranscriptFileUri']};logger[_0xecab('0xa')](util[_0xecab('0x10')](_0xecab('0x17'),_0x5e502e['id']));return rp({'uri':_0x5bdb81['TranscriptionJob'][_0xecab('0x16')]['TranscriptFileUri'],'json':!![]})[_0xecab('0xf')](function(_0x5e31aa){logger[_0xecab('0xa')](util[_0xecab('0x10')](_0xecab('0x18'),_0x5e502e['id']));if(_0x5e31aa&&_0x5e31aa[_0xecab('0x19')]&&_0x5e31aa[_0xecab('0x19')][_0xecab('0x1a')]&&_0x5e31aa[_0xecab('0x19')][_0xecab('0x1a')][_0xecab('0x1b')]){_0x3bd6c0[_0xecab('0x13')]='';for(var _0x30191f=0x0;_0x30191f<_0x5e31aa[_0xecab('0x19')]['transcripts'][_0xecab('0x1b')];_0x30191f++){_0x3bd6c0['fileText']+=_0x5e31aa[_0xecab('0x19')][_0xecab('0x1a')][_0x30191f]['transcript']+'';}}return _0x5e502e[_0xecab('0x1c')](_0x3bd6c0);})['then'](function(){logger['info'](util[_0xecab('0x10')](_0xecab('0x1d'),_0x5e502e['id']));if(!_0x5e502e[_0xecab('0x1e')]){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x21'));}if(!_0x3d161e[_0xecab('0x22')]||!_0x3d161e['sentimentAccountId']||!_0x3d161e['sentimentRegion']||!_0x3d161e[_0xecab('0x23')]||!_0x3d161e[_0xecab('0x24')]){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x25'));}if(!_0x3bd6c0[_0xecab('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x3d161e['sentimentAccountId']===_0x24cf0c['id']){return _0x24cf0c;}else{return db[_0xecab('0x26')][_0xecab('0x27')]({'where':{'id':_settings[_0xecab('0x28')]}});}})[_0xecab('0xf')](function(_0x2e59d1){if(!_0x2e59d1){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x29'));}if(!_0x2e59d1[_0xecab('0x2a')]||!_0x2e59d1['data2']){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x1d04c1=_0x2e59d1;logger['info'](util[_0xecab('0x10')](_0xecab('0x2b'),_0x5e502e['id']));return sentiment(_0x1d04c1[_0xecab('0x2a')],_0x1d04c1[_0xecab('0xc')],_0x3d161e[_0xecab('0x2c')],_0x3bd6c0[_0xecab('0x13')],_0x3d161e[_0xecab('0x23')]);})[_0xecab('0xf')](function(_0x469e10){logger[_0xecab('0xa')](util['format'](_0xecab('0x2d'),_0x5e502e['id']));return _0x5e502e['update']({'sentiment':_0x469e10['Sentiment'],'sPositive':_0x469e10[_0xecab('0x2e')]['Positive'],'sNegative':_0x469e10[_0xecab('0x2e')][_0xecab('0x2f')],'sMixed':_0x469e10['SentimentScore'][_0xecab('0x30')],'sNeutral':_0x469e10[_0xecab('0x2e')][_0xecab('0x31')]});})[_0xecab('0xf')](function(){logger['info'](util[_0xecab('0x10')](_0xecab('0x1d'),_0x5e502e['id']));_0x9de64e();});case _0xecab('0x32'):return _0x5e502e['update']({'transcribeStatus':_0xecab('0x32'),'failureReason':_0x5bdb81[_0xecab('0x12')]['FailureReason']})[_0xecab('0xf')](function(){logger[_0xecab('0xa')](util[_0xecab('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5e502e['id']));_0x9de64e();});default:logger['info'](util['format'](_0xecab('0x33'),_0x5e502e['id']));break;}}else{return BPromise[_0xecab('0x34')]()[_0xecab('0xf')](function(){if(!_0x5e502e[_0xecab('0x1e')]){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x21'));}if(!_0x3d161e[_0xecab('0x22')]||!_0x3d161e['sentimentAccountId']||!_0x3d161e[_0xecab('0x2c')]||!_0x3d161e['language']||!_0x3d161e['bucket']){throw new db['Sequelize']['ValidationError'](_0xecab('0x25'));}if(!_0x5e502e[_0xecab('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x3d161e[_0xecab('0x28')]===_0x24cf0c['id']){return _0x24cf0c;}else{return db[_0xecab('0x26')][_0xecab('0x27')]({'where':{'id':_settings[_0xecab('0x28')]}});}})[_0xecab('0xf')](function(_0x3bc454){if(!_0x3bc454){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x3bc454[_0xecab('0x2a')]||!_0x3bc454[_0xecab('0xc')]){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x35'));}_0x1d04c1=_0x3bc454;logger[_0xecab('0xa')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5e502e['id']));return sentiment(_0x1d04c1[_0xecab('0x2a')],_0x1d04c1[_0xecab('0xc')],_0x3d161e['sentimentRegion'],_0x5e502e['fileText'],_0x3d161e[_0xecab('0x23')]);})[_0xecab('0xf')](function(_0x43c82a){logger['info'](util[_0xecab('0x10')](_0xecab('0x2d'),_0x5e502e['id']));return _0x5e502e[_0xecab('0x1c')]({'sentiment':_0x43c82a['Sentiment'],'sPositive':_0x43c82a[_0xecab('0x2e')][_0xecab('0x36')],'sNegative':_0x43c82a[_0xecab('0x2e')]['Negative'],'sMixed':_0x43c82a[_0xecab('0x2e')][_0xecab('0x30')],'sNeutral':_0x43c82a[_0xecab('0x2e')][_0xecab('0x31')],'transcribeStatus':_0xecab('0x14')});})[_0xecab('0xf')](function(){logger[_0xecab('0xa')](util[_0xecab('0x10')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5e502e['id']));_0x9de64e();});}})[_0xecab('0x37')](function(_0x19946e){if(_0x19946e){if(!_0x19946e[_0xecab('0x38')]||_0x19946e[_0xecab('0x38')]!=='SequelizeValidationError'){logger['error'](util['format'](_0xecab('0x39'),_0x5e502e['id']),util[_0xecab('0x3a')](_0x19946e,{'showHidden':![],'depth':null}));}}_0x9de64e();});});}function checkTranscribe(){var _0x106af8;var _0x1fbc0f;var _0x3378dd;return db[_0xecab('0x3b')]['findAll']({'where':{'transcribeStatus':_0xecab('0x3c')}})[_0xecab('0xf')](function(_0x14e966){if(!_0x14e966||!_0x14e966[_0xecab('0x1b')]){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x3d'));}_0x106af8=_0x14e966;return db[_0xecab('0x3e')]['findOne']({'where':{'id':0x1}});})[_0xecab('0xf')](function(_0x1d1db8){if(!_0x1d1db8){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))]('Settings\x20not\x20available');}_0x1fbc0f=_0x1d1db8;if(!_0x1fbc0f[_0xecab('0x3f')]||!_0x1fbc0f[_0xecab('0x40')]||!_0x1fbc0f[_0xecab('0xd')]||!_0x1fbc0f[_0xecab('0x23')]||!_0x1fbc0f['bucket']){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x41'));}return db[_0xecab('0x26')]['findOne']({'where':{'id':_0x1fbc0f[_0xecab('0x40')]}});})[_0xecab('0xf')](function(_0xe8ac1b){if(!_0xe8ac1b){throw new db['Sequelize']['ValidationError'](_0xecab('0x29'));}if(!_0xe8ac1b['data1']||!_0xe8ac1b['data2']){throw new db[(_0xecab('0x1f'))][(_0xecab('0x20'))](_0xecab('0x35'));}_0x3378dd=_0xe8ac1b;var _0x3cf8e7=[];_0x106af8[_0xecab('0x42')](function(_0x2799a0){_0x3cf8e7[_0xecab('0x43')](checkTranscribeJob(_0x2799a0,_0x1fbc0f,_0x3378dd));});return BPromise['all'](_0x3cf8e7);})[_0xecab('0x37')](function(_0x15135d){if(_0x15135d){if(!_0x15135d[_0xecab('0x38')]||_0x15135d['name']!==_0xecab('0x44')){logger[_0xecab('0x45')](util[_0xecab('0x3a')](_0x15135d,{'showHidden':![],'depth':null}));}}});}exports[_0xecab('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xfbb4=['[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20configured','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','push','all','SequelizeValidationError','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','transcribeName','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Sequelize','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','FailureReason'];(function(_0x4db2d9,_0x3e2c08){var _0x285c8d=function(_0x3b0e60){while(--_0x3b0e60){_0x4db2d9['push'](_0x4db2d9['shift']());}};_0x285c8d(++_0x3e2c08);}(_0xfbb4,0x186));var _0x4fbb=function(_0x520bb3,_0x982fce){_0x520bb3=_0x520bb3-0x0;var _0x5d646c=_0xfbb4[_0x520bb3];return _0x5d646c;};var _=require(_0x4fbb('0x0'));var AWS=require(_0x4fbb('0x1'));var rp=require(_0x4fbb('0x2'));var util=require(_0x4fbb('0x3'));var BPromise=require(_0x4fbb('0x4'));var db=require(_0x4fbb('0x5'))['db'];var logger=require(_0x4fbb('0x6'))(_0x4fbb('0x7'));function getTranscriptionJob(_0x5c67e4,_0x514d23,_0x16c6f2,_0xba265e){return new Promise(function(_0x2b5756,_0x306f07){var _0x5f0b6b=new AWS['TranscribeService']({'accessKeyId':_0x514d23,'secretAccessKey':_0x5c67e4,'region':_0x16c6f2});_0x5f0b6b['getTranscriptionJob']({'TranscriptionJobName':_0xba265e},function(_0x4e57d7,_0xa17d45){if(_0x4e57d7){return _0x306f07(_0x4e57d7);}else{return _0x2b5756(_0xa17d45);}});});}function sentiment(_0x45ac3e,_0x5574b4,_0xc9ddea,_0xc3ed78,_0x4cac34){return new Promise(function(_0x360c27,_0x208526){var _0x1ecd42=new AWS[(_0x4fbb('0x8'))]({'accessKeyId':_0x5574b4,'secretAccessKey':_0x45ac3e,'region':_0xc9ddea});_0x1ecd42[_0x4fbb('0x9')]({'Text':_0xc3ed78,'LanguageCode':_0x4cac34['substring'](0x0,0x2)},function(_0xa148,_0x3e349){if(_0xa148){return _0x208526(_0xa148);}else{return _0x360c27(_0x3e349);}});});}function checkTranscribeJob(_0x3b94dc,_0x2aec34,_0x340523){var _0x486020;return new BPromise(function(_0x5f2a54,_0x19dd5e){logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')](_0x4fbb('0xc'),_0x3b94dc['id'],_0x3b94dc['transcribeName']));return getTranscriptionJob(_0x340523[_0x4fbb('0xd')],_0x340523['data2'],_0x2aec34['transcribeRegion'],_0x3b94dc[_0x4fbb('0xe')])[_0x4fbb('0xf')](function(_0x4c47ff){logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x3b94dc['id'],_0x3b94dc['transcribeName'],_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x11')]));if(!_0x3b94dc[_0x4fbb('0x12')]){switch(_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x11')]){case _0x4fbb('0x13'):var _0x91e29f={'transcribeStatus':_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x11')],'fileUri':_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x14')][_0x4fbb('0x15')]};logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')](_0x4fbb('0x16'),_0x3b94dc['id']));return rp({'uri':_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x14')][_0x4fbb('0x15')],'json':!![]})[_0x4fbb('0xf')](function(_0x2db786){logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')](_0x4fbb('0x17'),_0x3b94dc['id']));if(_0x2db786&&_0x2db786[_0x4fbb('0x18')]&&_0x2db786['results']['transcripts']&&_0x2db786[_0x4fbb('0x18')][_0x4fbb('0x19')][_0x4fbb('0x1a')]){_0x91e29f[_0x4fbb('0x12')]='';for(var _0x505c9d=0x0;_0x505c9d<_0x2db786[_0x4fbb('0x18')][_0x4fbb('0x19')]['length'];_0x505c9d++){_0x91e29f['fileText']+=_0x2db786['results'][_0x4fbb('0x19')][_0x505c9d][_0x4fbb('0x1b')]+'';}}return _0x3b94dc[_0x4fbb('0x1c')](_0x91e29f);})[_0x4fbb('0xf')](function(){logger['info'](util[_0x4fbb('0xb')](_0x4fbb('0x1d'),_0x3b94dc['id']));if(!_0x3b94dc[_0x4fbb('0x1e')]){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x20'));}if(!_0x2aec34[_0x4fbb('0x21')]||!_0x2aec34[_0x4fbb('0x22')]||!_0x2aec34[_0x4fbb('0x23')]||!_0x2aec34[_0x4fbb('0x24')]||!_0x2aec34[_0x4fbb('0x25')]){throw new db['Sequelize'][(_0x4fbb('0x1f'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x91e29f[_0x4fbb('0x12')]){throw new Error(_0x4fbb('0x26'));}if(_0x2aec34[_0x4fbb('0x22')]===_0x340523['id']){return _0x340523;}else{return db[_0x4fbb('0x27')]['findOne']({'where':{'id':_settings[_0x4fbb('0x22')]}});}})[_0x4fbb('0xf')](function(_0x4f112c){if(!_0x4f112c){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x28'));}if(!_0x4f112c[_0x4fbb('0xd')]||!_0x4f112c['data2']){throw new db[(_0x4fbb('0x29'))]['ValidationError'](_0x4fbb('0x2a'));}_0x486020=_0x4f112c;logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')](_0x4fbb('0x2b'),_0x3b94dc['id']));return sentiment(_0x486020['data1'],_0x486020[_0x4fbb('0x2c')],_0x2aec34['sentimentRegion'],_0x91e29f['fileText'],_0x2aec34[_0x4fbb('0x24')]);})['then'](function(_0x3c2be1){logger[_0x4fbb('0xa')](util['format'](_0x4fbb('0x2d'),_0x3b94dc['id']));return _0x3b94dc[_0x4fbb('0x1c')]({'sentiment':_0x3c2be1[_0x4fbb('0x2e')],'sPositive':_0x3c2be1[_0x4fbb('0x2f')][_0x4fbb('0x30')],'sNegative':_0x3c2be1[_0x4fbb('0x2f')][_0x4fbb('0x31')],'sMixed':_0x3c2be1[_0x4fbb('0x2f')][_0x4fbb('0x32')],'sNeutral':_0x3c2be1[_0x4fbb('0x2f')][_0x4fbb('0x33')]});})[_0x4fbb('0xf')](function(){logger['info'](util[_0x4fbb('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x3b94dc['id']));_0x5f2a54();});case _0x4fbb('0x34'):return _0x3b94dc[_0x4fbb('0x1c')]({'transcribeStatus':'FAILED','failureReason':_0x4c47ff[_0x4fbb('0x10')][_0x4fbb('0x35')]})[_0x4fbb('0xf')](function(){logger['info'](util['format'](_0x4fbb('0x1d'),_0x3b94dc['id']));_0x5f2a54();});default:logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')](_0x4fbb('0x36'),_0x3b94dc['id']));break;}}else{return BPromise[_0x4fbb('0x37')]()[_0x4fbb('0xf')](function(){if(!_0x3b94dc['tempSentiment']){throw new db[(_0x4fbb('0x29'))]['ValidationError'](_0x4fbb('0x20'));}if(!_0x2aec34['sentiment']||!_0x2aec34[_0x4fbb('0x22')]||!_0x2aec34[_0x4fbb('0x23')]||!_0x2aec34['language']||!_0x2aec34['bucket']){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x38'));}if(!_0x3b94dc[_0x4fbb('0x12')]){throw new Error(_0x4fbb('0x26'));}if(_0x2aec34[_0x4fbb('0x22')]===_0x340523['id']){return _0x340523;}else{return db[_0x4fbb('0x27')]['findOne']({'where':{'id':_settings[_0x4fbb('0x22')]}});}})[_0x4fbb('0xf')](function(_0x19ea9d){if(!_0x19ea9d){throw new db[(_0x4fbb('0x29'))][(_0x4fbb('0x1f'))](_0x4fbb('0x28'));}if(!_0x19ea9d[_0x4fbb('0xd')]||!_0x19ea9d[_0x4fbb('0x2c')]){throw new db[(_0x4fbb('0x29'))][(_0x4fbb('0x1f'))](_0x4fbb('0x2a'));}_0x486020=_0x19ea9d;logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x3b94dc['id']));return sentiment(_0x486020[_0x4fbb('0xd')],_0x486020[_0x4fbb('0x2c')],_0x2aec34[_0x4fbb('0x23')],_0x3b94dc[_0x4fbb('0x12')],_0x2aec34[_0x4fbb('0x24')]);})[_0x4fbb('0xf')](function(_0x5bbd77){logger[_0x4fbb('0xa')](util[_0x4fbb('0xb')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x3b94dc['id']));return _0x3b94dc[_0x4fbb('0x1c')]({'sentiment':_0x5bbd77[_0x4fbb('0x2e')],'sPositive':_0x5bbd77['SentimentScore'][_0x4fbb('0x30')],'sNegative':_0x5bbd77[_0x4fbb('0x2f')]['Negative'],'sMixed':_0x5bbd77[_0x4fbb('0x2f')][_0x4fbb('0x32')],'sNeutral':_0x5bbd77[_0x4fbb('0x2f')][_0x4fbb('0x33')],'transcribeStatus':_0x4fbb('0x13')});})[_0x4fbb('0xf')](function(){logger['info'](util['format'](_0x4fbb('0x1d'),_0x3b94dc['id']));_0x5f2a54();});}})['catch'](function(_0x574d10){if(_0x574d10){if(!_0x574d10[_0x4fbb('0x39')]||_0x574d10[_0x4fbb('0x39')]!=='SequelizeValidationError'){logger[_0x4fbb('0x3a')](util[_0x4fbb('0xb')](_0x4fbb('0x3b'),_0x3b94dc['id']),util[_0x4fbb('0x3c')](_0x574d10,{'showHidden':![],'depth':null}));}}_0x5f2a54();});});}function checkTranscribe(){var _0x38c149;var _0x143883;var _0x1b736d;return db[_0x4fbb('0x3d')]['findAll']({'where':{'transcribeStatus':_0x4fbb('0x3e')}})[_0x4fbb('0xf')](function(_0x12d624){if(!_0x12d624||!_0x12d624[_0x4fbb('0x1a')]){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x3f'));}_0x38c149=_0x12d624;return db[_0x4fbb('0x40')]['findOne']({'where':{'id':0x1}});})[_0x4fbb('0xf')](function(_0x236bea){if(!_0x236bea){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x41'));}_0x143883=_0x236bea;if(!_0x143883[_0x4fbb('0x7')]||!_0x143883[_0x4fbb('0x42')]||!_0x143883[_0x4fbb('0x43')]||!_0x143883[_0x4fbb('0x24')]||!_0x143883['bucket']){throw new db[(_0x4fbb('0x29'))]['ValidationError'](_0x4fbb('0x44'));}return db[_0x4fbb('0x27')]['findOne']({'where':{'id':_0x143883[_0x4fbb('0x42')]}});})[_0x4fbb('0xf')](function(_0x2030b5){if(!_0x2030b5){throw new db['Sequelize'][(_0x4fbb('0x1f'))](_0x4fbb('0x28'));}if(!_0x2030b5['data1']||!_0x2030b5[_0x4fbb('0x2c')]){throw new db[(_0x4fbb('0x29'))]['ValidationError'](_0x4fbb('0x2a'));}_0x1b736d=_0x2030b5;var _0x588f86=[];_0x38c149[_0x4fbb('0x45')](function(_0x12e00f){_0x588f86[_0x4fbb('0x46')](checkTranscribeJob(_0x12e00f,_0x143883,_0x1b736d));});return BPromise[_0x4fbb('0x47')](_0x588f86);})['catch'](function(_0x5a655c){if(_0x5a655c){if(!_0x5a655c['name']||_0x5a655c['name']!==_0x4fbb('0x48')){logger['error'](util['inspect'](_0x5a655c,{'showHidden':![],'depth':null}));}}});}exports[_0x4fbb('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 27e8065..6ff306c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ad=['moment','ioredis','util','../../mysqldb','../logger','defaults','redis','socket.io-emitter','WhatsappInteraction','lastMsgAt','hours','then','length','map','info','system','timeout','YYYY-MM-DD\x20HH:mm:ss','join','catch','inspect','start','lodash'];(function(_0x108c0a,_0x3bc25e){var _0x2fff8a=function(_0x2b5427){while(--_0x2b5427){_0x108c0a['push'](_0x108c0a['shift']());}};_0x2fff8a(++_0x3bc25e);}(_0xd4ad,0x158));var _0xdd4a=function(_0x4cb61f,_0x561f34){_0x4cb61f=_0x4cb61f-0x0;var _0x5093ca=_0xd4ad[_0x4cb61f];return _0x5093ca;};'use strict';var _=require(_0xdd4a('0x0'));var moment=require(_0xdd4a('0x1'));var Redis=require(_0xdd4a('0x2'));var util=require(_0xdd4a('0x3'));var config=require('../../config/environment');var db=require(_0xdd4a('0x4'))['db'];var logger=require(_0xdd4a('0x5'))('schedule');config['redis']=_[_0xdd4a('0x6')](config[_0xdd4a('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xdd4a('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0xd243eb=[];return db[_0xdd4a('0x9')]['findAll']({'raw':!![],'attributes':['id',_0xdd4a('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0xdd4a('0xb'))}}})[_0xdd4a('0xc')](function(_0x42fa33){if(_0x42fa33&&_0x42fa33[_0xdd4a('0xd')]){_0xd243eb=_[_0xdd4a('0xe')](_0x42fa33||[],'id');logger[_0xdd4a('0xf')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0xd243eb['join']());return db[_0xdd4a('0x9')]['update']({'closeReason':_0xdd4a('0x10'),'disposition':_0xdd4a('0x11'),'closed':!![],'closedAt':moment()['format'](_0xdd4a('0x12'))},{'where':{'id':_0xd243eb}});}})[_0xdd4a('0xc')](function(){if(_0xd243eb&&_0xd243eb['length']){logger[_0xdd4a('0xf')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0xd243eb[_0xdd4a('0x13')]());for(var _0x55a374=0x0;_0x55a374<_0xd243eb[_0xdd4a('0xd')];_0x55a374++){io['emit']('whatsappInteraction:update',{'id':_0xd243eb[_0x55a374],'closed':!![]});}}})[_0xdd4a('0x14')](function(_0x52d623){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x52d623?util[_0xdd4a('0x15')](_0x52d623,{'showHidden':![],'depth':null}):'');});}exports[_0xdd4a('0x16')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xd5f8=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','length','join','update','system','timeout','format','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start'];(function(_0x1904bd,_0x136af4){var _0x207b38=function(_0x21a4a0){while(--_0x21a4a0){_0x1904bd['push'](_0x1904bd['shift']());}};_0x207b38(++_0x136af4);}(_0xd5f8,0x1d1));var _0x8d5f=function(_0x557ad4,_0x5005ba){_0x557ad4=_0x557ad4-0x0;var _0x452a84=_0xd5f8[_0x557ad4];return _0x452a84;};'use strict';var _=require(_0x8d5f('0x0'));var moment=require(_0x8d5f('0x1'));var Redis=require(_0x8d5f('0x2'));var util=require(_0x8d5f('0x3'));var config=require(_0x8d5f('0x4'));var db=require(_0x8d5f('0x5'))['db'];var logger=require('../logger')(_0x8d5f('0x6'));config['redis']=_['defaults'](config[_0x8d5f('0x7')],{'host':_0x8d5f('0x8'),'port':0x18eb});var io=require(_0x8d5f('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x2b8ac6=[];return db[_0x8d5f('0xa')][_0x8d5f('0xb')]({'raw':!![],'attributes':['id',_0x8d5f('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x8d5f('0xd')](0x18,_0x8d5f('0xe'))}}})[_0x8d5f('0xf')](function(_0x1b2999){if(_0x1b2999&&_0x1b2999[_0x8d5f('0x10')]){_0x2b8ac6=_['map'](_0x1b2999||[],'id');logger['info']('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x2b8ac6[_0x8d5f('0x11')]());return db[_0x8d5f('0xa')][_0x8d5f('0x12')]({'closeReason':_0x8d5f('0x13'),'disposition':_0x8d5f('0x14'),'closed':!![],'closedAt':moment()[_0x8d5f('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x2b8ac6}});}})[_0x8d5f('0xf')](function(){if(_0x2b8ac6&&_0x2b8ac6[_0x8d5f('0x10')]){logger[_0x8d5f('0x16')](_0x8d5f('0x17'),_0x2b8ac6['join']());for(var _0x340a3b=0x0;_0x340a3b<_0x2b8ac6[_0x8d5f('0x10')];_0x340a3b++){io[_0x8d5f('0x18')](_0x8d5f('0x19'),{'id':_0x2b8ac6[_0x340a3b],'closed':!![]});}}})[_0x8d5f('0x1a')](function(_0x1c50e0){logger[_0x8d5f('0x1b')](_0x8d5f('0x1c'),_0x1c50e0?util[_0x8d5f('0x1d')](_0x1c50e0,{'showHidden':![],'depth':null}):'');});}exports[_0x8d5f('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 86bb016..638721b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc529=['log','hopper1','catch','../mysqldb','push','Biondo','innocenzo.biondo','@xcally.com','Innocenzo','now','CmContact','destroy','then','bulkCreate','finished\x20populating','contacts1','CmHopper'];(function(_0x257841,_0x389b4d){var _0x1b87ed=function(_0xceb19e){while(--_0xceb19e){_0x257841['push'](_0x257841['shift']());}};_0x1b87ed(++_0x389b4d);}(_0xc529,0x124));var _0x9c52=function(_0x2a6252,_0x1b38ff){_0x2a6252=_0x2a6252-0x0;var _0x108c1b=_0xc529[_0x2a6252];return _0x108c1b;};'use strict';var util=require('util');var db=require(_0x9c52('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x9c52('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x9c52('0x2')+i,'phone':0xf879fb460+i,'email':_0x9c52('0x3')+i+_0x9c52('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x9c52('0x1')]({'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['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x9c52('0x1')]({'id':i,'firstName':_0x9c52('0x5')+i,'lastName':_0x9c52('0x2')+i,'phone':0xf879fb460+i,'email':_0x9c52('0x3')+i+_0x9c52('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x9c52('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x9c52('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x9c52('0x6')](),'updatedAt':Date[_0x9c52('0x6')]()});}db[_0x9c52('0x7')][_0x9c52('0x8')]({'where':{}})[_0x9c52('0x9')](function(){return db[_0x9c52('0x7')][_0x9c52('0xa')](contacts);})[_0x9c52('0x9')](function(){console['log'](_0x9c52('0xb'),_0x9c52('0xc'));return db['CmHopper'][_0x9c52('0x8')]({'where':{}});})[_0x9c52('0x9')](function(){return db[_0x9c52('0xd')][_0x9c52('0xa')](hopper);})[_0x9c52('0x9')](function(){console[_0x9c52('0xe')](_0x9c52('0xb'),_0x9c52('0xf'));return db[_0x9c52('0x7')][_0x9c52('0xa')](contacts2);})[_0x9c52('0x9')](function(){console['log'](_0x9c52('0xb'),'contacts2');return db[_0x9c52('0xd')]['bulkCreate'](hopper2);})[_0x9c52('0x9')](function(){console[_0x9c52('0xe')](_0x9c52('0xb'),'hopper2');})[_0x9c52('0x10')](function(_0x86a037){console[_0x9c52('0xe')](_0x86a037);});
\ No newline at end of file
+var _0x911f=['Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','bulkCreate','then','log','contacts1','CmHopper','finished\x20populating','contacts2','hopper2','catch','util','../mysqldb','push'];(function(_0x2534d0,_0x392d71){var _0x3928ac=function(_0x23a44a){while(--_0x23a44a){_0x2534d0['push'](_0x2534d0['shift']());}};_0x3928ac(++_0x392d71);}(_0x911f,0x12d));var _0xf911=function(_0x221a26,_0x1325d1){_0x221a26=_0x221a26-0x0;var _0x184ec7=_0x911f[_0x221a26];return _0x184ec7;};'use strict';var util=require(_0xf911('0x0'));var db=require(_0xf911('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf911('0x2')]({'id':i,'firstName':_0xf911('0x3')+i,'lastName':_0xf911('0x4')+i,'phone':0xf879fb460+i,'email':_0xf911('0x5')+i+_0xf911('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf911('0x2')]({'id':i,'active':![],'scheduledat':Date[_0xf911('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf911('0x7')](),'updatedAt':Date[_0xf911('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf911('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf911('0x4')+i,'phone':0xf879fb460+i,'email':_0xf911('0x5')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf911('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0xf911('0x8')][_0xf911('0x9')]({'where':{}})['then'](function(){return db[_0xf911('0x8')][_0xf911('0xa')](contacts);})[_0xf911('0xb')](function(){console[_0xf911('0xc')]('finished\x20populating',_0xf911('0xd'));return db['CmHopper']['destroy']({'where':{}});})[_0xf911('0xb')](function(){return db[_0xf911('0xe')][_0xf911('0xa')](hopper);})[_0xf911('0xb')](function(){console[_0xf911('0xc')](_0xf911('0xf'),'hopper1');return db[_0xf911('0x8')][_0xf911('0xa')](contacts2);})[_0xf911('0xb')](function(){console[_0xf911('0xc')](_0xf911('0xf'),_0xf911('0x10'));return db[_0xf911('0xe')]['bulkCreate'](hopper2);})[_0xf911('0xb')](function(){console[_0xf911('0xc')](_0xf911('0xf'),_0xf911('0x11'));})[_0xf911('0x12')](function(_0x68c43f){console['log'](_0x68c43f);});
\ No newline at end of file
index 482cd2b..532a459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209e=['wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','util','push','format','%s%s','agent','%s%s@xcally.com','password'];(function(_0x2706da,_0x3856f5){var _0x3ba87e=function(_0x479a79){while(--_0x479a79){_0x2706da['push'](_0x2706da['shift']());}};_0x3ba87e(++_0x3856f5);}(_0x209e,0x14d));var _0xe209=function(_0x2a7ab8,_0x462ad2){_0x2a7ab8=_0x2a7ab8-0x0;var _0x2ace4b=_0x209e[_0x2a7ab8];return _0x2ace4b;};'use strict';var util=require(_0xe209('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xe209('0x1')]({'name':util[_0xe209('0x2')](_0xe209('0x3'),_0xe209('0x4'),i),'fullname':util[_0xe209('0x2')]('%s%s',_0xe209('0x4'),i),'email':util[_0xe209('0x2')](_0xe209('0x5'),_0xe209('0x4'),i),'role':'agent','password':_0xe209('0x6'),'internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0xe209('0x7')],'disallow':[_0xe209('0x8')],'allow':[_0xe209('0x9')],'defaultuser':util['format'](_0xe209('0x3'),_0xe209('0x4'),i),'encryption':_0xe209('0xa'),'avpf':'yes','force_avp':'yes','icesupport':_0xe209('0xa'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0xe209('0xb'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0xe209('0xc'),'callerid':util[_0xe209('0x2')](_0xe209('0xd'),util[_0xe209('0x2')]('%s%s',_0xe209('0x4'),i),0xfa0+i)});}db[_0xe209('0xe')][_0xe209('0xf')](users)[_0xe209('0x10')](function(){console[_0xe209('0x11')](_0xe209('0x12'));})[_0xe209('0x13')](function(_0x339256){console[_0xe209('0x11')](_0x339256);});
\ No newline at end of file
+var _0x079f=['User','bulkCreate','log','add\x20user','catch','util','../mysqldb','agent','%s%s','%s%s@xcally.com','udp','all','ulaw','format','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>'];(function(_0x3fc8a5,_0x2c9129){var _0x132208=function(_0x2a1272){while(--_0x2a1272){_0x3fc8a5['push'](_0x3fc8a5['shift']());}};_0x132208(++_0x2c9129);}(_0x079f,0x113));var _0xf079=function(_0x12af74,_0x4fb5c2){_0x12af74=_0x12af74-0x0;var _0x41277b=_0x079f[_0x12af74];return _0x41277b;};'use strict';var util=require(_0xf079('0x0'));var db=require(_0xf079('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format']('%s%s',_0xf079('0x2'),i),'fullname':util['format'](_0xf079('0x3'),'agent',i),'email':util['format'](_0xf079('0x4'),_0xf079('0x2'),i),'role':_0xf079('0x2'),'password':'password','internal':0xfa0+i,'type':'friend','transport':[_0xf079('0x5'),'ws','wss'],'disallow':[_0xf079('0x6')],'allow':[_0xf079('0x7')],'defaultuser':util[_0xf079('0x8')](_0xf079('0x3'),_0xf079('0x2'),i),'encryption':_0xf079('0x9'),'avpf':_0xf079('0x9'),'force_avp':'yes','icesupport':'yes','dtlsenable':_0xf079('0x9'),'dtlsverify':'no','dtlscertfile':_0xf079('0xa'),'dtlsprivatekey':_0xf079('0xb'),'dtlssetup':'actpass','callerid':util[_0xf079('0x8')](_0xf079('0xc'),util['format'](_0xf079('0x3'),_0xf079('0x2'),i),0xfa0+i)});}db[_0xf079('0xd')][_0xf079('0xe')](users)['then'](function(){console[_0xf079('0xf')](_0xf079('0x10'));})[_0xf079('0x11')](function(_0x6a271d){console[_0xf079('0xf')](_0x6a271d);});
\ No newline at end of file
index b109eec..40199ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c16=['agent','telephone','ivr','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','UserProfileResource','resourceId','map','User','Campaign','where','type','format','length','user:%s','query','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteractions','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','voice:inbound','hasOwnProperty','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','voice:outbound','SmsQueues','MailQueues','Telephones','Trunk','IvrCampaigns','getChatQueues','getFaxQueues','getOpenchannelQueues','getWhatsappQueues','fax','sms','openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','request','remoteAddress','remotePort','connectedAt','nsp','address','disconnect','CONNECTED','util','../mysqldb','./environment','Agents','name','role'];(function(_0x6907f6,_0xd967c){var _0x21f743=function(_0x2b0862){while(--_0x2b0862){_0x6907f6['push'](_0x6907f6['shift']());}};_0x21f743(++_0xd967c);}(_0x7c16,0x1c6));var _0x67c1=function(_0x9d2bdc,_0x4f2b6a){_0x9d2bdc=_0x9d2bdc-0x0;var _0x410615=_0x7c16[_0x9d2bdc];return _0x410615;};'use strict';var _=require('lodash');var util=require(_0x67c1('0x0'));var BPromise=require('bluebird');var db=require(_0x67c1('0x1'))['db'];var config=require(_0x67c1('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x67c1('0x3'),'model':db['User'],'attributes':['id',_0x67c1('0x4'),_0x67c1('0x5')],'raw':!![],'where':{'role':_0x67c1('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x67c1('0x4')],'where':{'role':_0x67c1('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x67c1('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x67c1('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x67c1('0x4'),'type'],'where':{'type':_0x67c1('0x8')}};function getAssociatedResources(_0x5d1b5c,_0x19deff,_0x5f1d32){return db['UserProfileSection']['findOne']({'where':{'name':_0x5d1b5c,'userProfileId':_0x19deff},'raw':!![]})[_0x67c1('0x9')](function(_0x250c5e){if(_0x250c5e){if(_0x250c5e[_0x67c1('0xa')]){switch(_0x5d1b5c){case _0x67c1('0xb'):case _0x67c1('0xc'):case _0x67c1('0xd'):case'SmsQueues':case'MailQueues':case _0x67c1('0xe'):case _0x67c1('0xf'):return db[_0x5f1d32][_0x67c1('0x10')](queryQueues);case'Telephones':return db[_0x5f1d32][_0x67c1('0x10')](queryTelephones);case _0x67c1('0x11'):return db[_0x5f1d32][_0x67c1('0x10')](queryTrunks);case'IvrCampaigns':return db[_0x5f1d32][_0x67c1('0x10')](queryCampaigns);}}else{return db[_0x67c1('0x12')][_0x67c1('0x10')]({'attributes':[_0x67c1('0x13')],'where':{'sectionId':_0x250c5e['id']},'raw':!![]})[_0x67c1('0x9')](function(_0x10b8af){if(_0x10b8af){var _0xa3323c={'where':{'id':_[_0x67c1('0x14')](_0x10b8af,_0x67c1('0x13'))},'raw':!![]};switch(_0x5f1d32){case _0x67c1('0x15'):_0xa3323c['where'][_0x67c1('0x5')]=_0x67c1('0x7');break;case _0x67c1('0x16'):_0xa3323c[_0x67c1('0x17')][_0x67c1('0x18')]='ivr';break;}return db[_0x5f1d32][_0x67c1('0x10')](_0xa3323c);}else{return[];}});}}else{return[];}})['then'](function(_0x282abf){return _0x282abf;});}function joinOrLeaveQueues(_0x23d76a,_0x3863b8,_0x1092f8,_0x2efaa4){_0x23d76a[_0x3863b8](util[_0x67c1('0x19')]('%s:queue:%s',_0x1092f8,_0x2efaa4[_0x67c1('0x4')]));if(_0x2efaa4['Agents']){for(var _0x57fdce=0x0;_0x57fdce<_0x2efaa4[_0x67c1('0x3')][_0x67c1('0x1a')];_0x57fdce+=0x1){_0x23d76a[_0x3863b8](util[_0x67c1('0x19')](_0x67c1('0x1b'),_0x2efaa4[_0x67c1('0x3')][_0x57fdce][_0x67c1('0x4')]));}}}function joinOrLeave(_0x511b04,_0xe7c2c3,_0x47c01d){var _0x4216a5;if(_0x511b04['handshake'][_0x67c1('0x1c')]['id']){db[_0x67c1('0x15')][_0x67c1('0x1d')]({'attributes':['id',_0x67c1('0x4'),'role',_0x67c1('0x1e')],'where':{'id':_0x511b04[_0x67c1('0x1f')]['query']['id']},'include':[{'model':db[_0x67c1('0x20')],'as':_0x67c1('0x21'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x67c1('0x22'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x67c1('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x67c1('0x24')],'as':_0x67c1('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x67c1('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x67c1('0x27')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x67c1('0x9')](function(_0xb584b2){if(_0xb584b2){_0x4216a5=_0xb584b2;_0x511b04[_0xe7c2c3](util['format'](_0x67c1('0x1b'),_0xb584b2[_0x67c1('0x4')]));var _0x1b496b=[];switch(_0xb584b2[_0x67c1('0x5')]){case'admin':_0x511b04[_0xe7c2c3](_0x67c1('0x28'));_0x511b04[_0xe7c2c3]('voice:outbound');if(queryQueues[_0x67c1('0x29')](_0x67c1('0x2a'))){delete queryQueues['include'];}_0x1b496b[_0x67c1('0x2b')](db[_0x67c1('0x2c')]['findAll'](queryQueues));_0x1b496b['push'](db['ChatQueue'][_0x67c1('0x10')](queryQueues));_0x1b496b['push'](db['FaxQueue'][_0x67c1('0x10')](queryQueues));_0x1b496b['push'](db[_0x67c1('0x2d')]['findAll'](queryQueues));_0x1b496b[_0x67c1('0x2b')](db[_0x67c1('0x2e')]['findAll'](queryQueues));_0x1b496b[_0x67c1('0x2b')](db[_0x67c1('0x2f')]['findAll'](queryQueues));_0x1b496b[_0x67c1('0x2b')](db[_0x67c1('0x30')]['findAll'](queryQueues));_0x1b496b['push'](db['User']['findAll'](queryTelephones));_0x1b496b['push'](db['Trunk'][_0x67c1('0x10')](queryTrunks));_0x1b496b[_0x67c1('0x2b')](db[_0x67c1('0x16')][_0x67c1('0x10')](queryCampaigns));_0x1b496b['push'](db[_0x67c1('0x15')][_0x67c1('0x10')](queryAgents));break;case _0x67c1('0x31'):_0x511b04[_0xe7c2c3](_0x67c1('0x28'));_0x511b04[_0xe7c2c3](_0x67c1('0x32'));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources('VoiceQueues',_0xb584b2[_0x67c1('0x1e')],'VoiceQueue'));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0xc'),_0xb584b2[_0x67c1('0x1e')],'ChatQueue'));_0x1b496b['push'](getAssociatedResources('FaxQueues',_0xb584b2[_0x67c1('0x1e')],'FaxQueue'));_0x1b496b['push'](getAssociatedResources(_0x67c1('0x33'),_0xb584b2[_0x67c1('0x1e')],_0x67c1('0x2d')));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0x34'),_0xb584b2[_0x67c1('0x1e')],_0x67c1('0x2e')));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0xe'),_0xb584b2[_0x67c1('0x1e')],'OpenchannelQueue'));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0xf'),_0xb584b2['userProfileId'],'WhatsappQueue'));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0x35'),_0xb584b2[_0x67c1('0x1e')],'User'));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0x11'),_0xb584b2[_0x67c1('0x1e')],_0x67c1('0x36')));_0x1b496b[_0x67c1('0x2b')](getAssociatedResources(_0x67c1('0x37'),_0xb584b2[_0x67c1('0x1e')],_0x67c1('0x16')));_0x1b496b[_0x67c1('0x2b')](db['User'][_0x67c1('0x10')](queryAgents));break;case _0x67c1('0x6'):_0x511b04[_0xe7c2c3](_0x67c1('0x28'));_0x511b04[_0xe7c2c3](_0x67c1('0x32'));_0x1b496b[_0x67c1('0x2b')](_0xb584b2['getVoiceQueues']({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b[_0x67c1('0x2b')](_0xb584b2[_0x67c1('0x38')]({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b[_0x67c1('0x2b')](_0xb584b2[_0x67c1('0x39')]({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b[_0x67c1('0x2b')](_0xb584b2['getSmsQueues']({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b['push'](_0xb584b2['getMailQueues']({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b[_0x67c1('0x2b')](_0xb584b2[_0x67c1('0x3a')]({'attributes':['id',_0x67c1('0x4')]}));_0x1b496b[_0x67c1('0x2b')](_0xb584b2[_0x67c1('0x3b')]({'attributes':['id',_0x67c1('0x4')]}));break;}return BPromise['all'](_0x1b496b);}})[_0x67c1('0x9')](function(_0x1ae39e){if(_0x1ae39e&&_0x1ae39e['length']){for(var _0x8eab9=0x0;_0x8eab9<_0x1ae39e[_0x67c1('0x1a')];_0x8eab9+=0x1){for(var _0x55270e=0x0;_0x55270e<_0x1ae39e[_0x8eab9][_0x67c1('0x1a')];_0x55270e+=0x1){switch(_0x8eab9){case 0x0:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,'voice',_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x1:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,'chat',_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x2:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,_0x67c1('0x3c'),_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x3:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,_0x67c1('0x3d'),_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x4:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,'mail',_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x5:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,_0x67c1('0x3e'),_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x6:joinOrLeaveQueues(_0x511b04,_0xe7c2c3,_0x67c1('0x3f'),_0x1ae39e[_0x8eab9][_0x55270e]);break;case 0x7:if(_0x4216a5[_0x67c1('0x5')]!==_0x67c1('0x6'))_0x511b04[_0xe7c2c3](util['format']('telephone:%s',_0x1ae39e[_0x8eab9][_0x55270e]['name']));break;case 0x8:if(_0x4216a5[_0x67c1('0x5')]!==_0x67c1('0x6'))_0x511b04[_0xe7c2c3](util['format'](_0x67c1('0x40'),_0x1ae39e[_0x8eab9][_0x55270e]['name']));break;case 0x9:if(_0x4216a5[_0x67c1('0x5')]!==_0x67c1('0x6'))_0x511b04[_0xe7c2c3](util[_0x67c1('0x19')](_0x67c1('0x41'),_0x1ae39e[_0x8eab9][_0x55270e][_0x67c1('0x18')],_0x1ae39e[_0x8eab9][_0x55270e]['name']));break;case 0xa:_0x511b04[_0xe7c2c3](util[_0x67c1('0x19')](_0x67c1('0x1b'),_0x1ae39e[_0x8eab9][_0x55270e]['name']));break;}}}}})['then'](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x2fb6a3=_[_0x67c1('0x14')](_0x4216a5['ChatInteractions'],'id');return _0x4216a5[_0x67c1('0x43')](_0x2fb6a3)['then'](function(){for(var _0x3a162f=0x0;_0x3a162f<_0x2fb6a3[_0x67c1('0x1a')];_0x3a162f+=0x1){_0x47c01d[_0x67c1('0x44')](_0x67c1('0x45'),{'ChatInteractionId':Number(_0x2fb6a3[_0x3a162f]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x9')](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x2142de=_['map'](_0x4216a5['MailInteractions'],'id');return _0x4216a5[_0x67c1('0x46')](_0x2142de)[_0x67c1('0x9')](function(){for(var _0x11c882=0x0;_0x11c882<_0x2142de['length'];_0x11c882+=0x1){_0x47c01d[_0x67c1('0x44')](_0x67c1('0x47'),{'MailInteractionId':Number(_0x2142de[_0x11c882]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x9')](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x46882a=_[_0x67c1('0x14')](_0x4216a5[_0x67c1('0x23')],'id');return _0x4216a5[_0x67c1('0x48')](_0x46882a)['then'](function(){for(var _0x19332b=0x0;_0x19332b<_0x46882a[_0x67c1('0x1a')];_0x19332b+=0x1){_0x47c01d['emit'](_0x67c1('0x49'),{'FaxInteractionId':Number(_0x46882a[_0x19332b]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x9')](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x689bce=_[_0x67c1('0x14')](_0x4216a5[_0x67c1('0x25')],'id');return _0x4216a5[_0x67c1('0x4a')](_0x689bce)['then'](function(){for(var _0x36439a=0x0;_0x36439a<_0x689bce[_0x67c1('0x1a')];_0x36439a+=0x1){_0x47c01d[_0x67c1('0x44')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x689bce[_0x36439a]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x9')](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x471133=_[_0x67c1('0x14')](_0x4216a5[_0x67c1('0x26')],'id');return _0x4216a5[_0x67c1('0x4b')](_0x471133)[_0x67c1('0x9')](function(){for(var _0x2c38d3=0x0;_0x2c38d3<_0x471133['length'];_0x2c38d3+=0x1){_0x47c01d[_0x67c1('0x44')](_0x67c1('0x4c'),{'OpenchannelInteractionId':Number(_0x471133[_0x2c38d3]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x9')](function(){if(_0xe7c2c3===_0x67c1('0x42')){var _0x1a21e1=_['map'](_0x4216a5['WhatsappInteractions'],'id');return _0x4216a5['removeWhatsappInteractions'](_0x1a21e1)['then'](function(){for(var _0x208ad6=0x0;_0x208ad6<_0x1a21e1[_0x67c1('0x1a')];_0x208ad6+=0x1){_0x47c01d[_0x67c1('0x44')](_0x67c1('0x4d'),{'WhatsappInteractionId':Number(_0x1a21e1[_0x208ad6]),'UserId':Number(_0x4216a5['id'])});}});}})[_0x67c1('0x4e')](function(_0x3f3eda){_0x511b04[_0x67c1('0x4f')](_0x3f3eda);});}}function onDisconnect(_0x13bf33,_0x3968b4){joinOrLeave(_0x13bf33,_0x67c1('0x42'),_0x3968b4);}function onConnect(_0x16b544){joinOrLeave(_0x16b544,_0x67c1('0x50'));}exports[_0x67c1('0x51')]=function(_0x2609e6){_0x2609e6['on'](_0x67c1('0x52'),function(_0x244ccb){_0x244ccb[_0x67c1('0x53')](0x0);_0x244ccb['address']=_0x244ccb[_0x67c1('0x54')][_0x67c1('0x52')][_0x67c1('0x55')]+':'+_0x244ccb[_0x67c1('0x54')][_0x67c1('0x52')][_0x67c1('0x56')];_0x244ccb[_0x67c1('0x57')]=new Date();_0x244ccb[_0x67c1('0x4f')]=function(_0x48cbdb){console[_0x67c1('0x4f')]('SocketIO\x20'+_0x244ccb[_0x67c1('0x58')][_0x67c1('0x4')]+'['+_0x244ccb[_0x67c1('0x59')]+']',_0x48cbdb);};_0x244ccb['on'](_0x67c1('0x5a'),function(){onDisconnect(_0x244ccb,_0x2609e6);_0x244ccb['log']('DISCONNECTED');});onConnect(_0x244ccb);_0x244ccb[_0x67c1('0x4f')](_0x67c1('0x5b'));});};
\ No newline at end of file
+var _0xf1d6=['MailInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','telephone','agent','autoAssociation','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','where','role','Campaign','type','format','%s:queue:%s','length','handshake','query','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','admin','voice:inbound','voice:outbound','include','VoiceQueue','push','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','ChatQueue','FaxQueue','OpenchannelQueues','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','user:%s','removeChatInteractions','emit','leave'];(function(_0x3b5edd,_0x28d04c){var _0x5ece68=function(_0x446045){while(--_0x446045){_0x3b5edd['push'](_0x3b5edd['shift']());}};_0x5ece68(++_0x28d04c);}(_0xf1d6,0x195));var _0x6f1d=function(_0x534682,_0x46fa1c){_0x534682=_0x534682-0x0;var _0xd06232=_0xf1d6[_0x534682];return _0xd06232;};'use strict';var _=require(_0x6f1d('0x0'));var util=require(_0x6f1d('0x1'));var BPromise=require(_0x6f1d('0x2'));var db=require(_0x6f1d('0x3'))['db'];var config=require(_0x6f1d('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x6f1d('0x5'),'model':db[_0x6f1d('0x6')],'attributes':['id',_0x6f1d('0x7'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x6f1d('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x6f1d('0x7')]};var queryAgents={'raw':!![],'attributes':['id',_0x6f1d('0x7')],'where':{'role':_0x6f1d('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6f1d('0x7'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x57dc9a,_0x38e88c,_0x58ffb5){return db['UserProfileSection']['findOne']({'where':{'name':_0x57dc9a,'userProfileId':_0x38e88c},'raw':!![]})['then'](function(_0x51811d){if(_0x51811d){if(_0x51811d[_0x6f1d('0xa')]){switch(_0x57dc9a){case'VoiceQueues':case _0x6f1d('0xb'):case _0x6f1d('0xc'):case _0x6f1d('0xd'):case _0x6f1d('0xe'):case'OpenchannelQueues':case _0x6f1d('0xf'):return db[_0x58ffb5][_0x6f1d('0x10')](queryQueues);case _0x6f1d('0x11'):return db[_0x58ffb5][_0x6f1d('0x10')](queryTelephones);case _0x6f1d('0x12'):return db[_0x58ffb5][_0x6f1d('0x10')](queryTrunks);case _0x6f1d('0x13'):return db[_0x58ffb5][_0x6f1d('0x10')](queryCampaigns);}}else{return db[_0x6f1d('0x14')]['findAll']({'attributes':[_0x6f1d('0x15')],'where':{'sectionId':_0x51811d['id']},'raw':!![]})[_0x6f1d('0x16')](function(_0x217086){if(_0x217086){var _0x495a14={'where':{'id':_[_0x6f1d('0x17')](_0x217086,_0x6f1d('0x15'))},'raw':!![]};switch(_0x58ffb5){case _0x6f1d('0x6'):_0x495a14[_0x6f1d('0x18')][_0x6f1d('0x19')]=_0x6f1d('0x8');break;case _0x6f1d('0x1a'):_0x495a14[_0x6f1d('0x18')][_0x6f1d('0x1b')]='ivr';break;}return db[_0x58ffb5]['findAll'](_0x495a14);}else{return[];}});}}else{return[];}})[_0x6f1d('0x16')](function(_0x50cba3){return _0x50cba3;});}function joinOrLeaveQueues(_0x44d805,_0x53693f,_0x31a935,_0xec7d0f){_0x44d805[_0x53693f](util[_0x6f1d('0x1c')](_0x6f1d('0x1d'),_0x31a935,_0xec7d0f['name']));if(_0xec7d0f[_0x6f1d('0x5')]){for(var _0x120fff=0x0;_0x120fff<_0xec7d0f[_0x6f1d('0x5')][_0x6f1d('0x1e')];_0x120fff+=0x1){_0x44d805[_0x53693f](util[_0x6f1d('0x1c')]('user:%s',_0xec7d0f['Agents'][_0x120fff][_0x6f1d('0x7')]));}}}function joinOrLeave(_0x239ff7,_0x2fbd59,_0x19338f){var _0x4265b3;if(_0x239ff7[_0x6f1d('0x1f')][_0x6f1d('0x20')]['id']){db[_0x6f1d('0x6')]['find']({'attributes':['id',_0x6f1d('0x7'),_0x6f1d('0x19'),_0x6f1d('0x21')],'where':{'id':_0x239ff7[_0x6f1d('0x1f')][_0x6f1d('0x20')]['id']},'include':[{'model':db[_0x6f1d('0x22')],'as':_0x6f1d('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x6f1d('0x24')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x6f1d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x6f1d('0x26')],'as':_0x6f1d('0x27'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x6f1d('0x28'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x6f1d('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2cad3c){if(_0x2cad3c){_0x4265b3=_0x2cad3c;_0x239ff7[_0x2fbd59](util[_0x6f1d('0x1c')]('user:%s',_0x2cad3c[_0x6f1d('0x7')]));var _0x5ac4e6=[];switch(_0x2cad3c[_0x6f1d('0x19')]){case _0x6f1d('0x2a'):_0x239ff7[_0x2fbd59](_0x6f1d('0x2b'));_0x239ff7[_0x2fbd59](_0x6f1d('0x2c'));if(queryQueues['hasOwnProperty'](_0x6f1d('0x2d'))){delete queryQueues['include'];}_0x5ac4e6['push'](db[_0x6f1d('0x2e')][_0x6f1d('0x10')](queryQueues));_0x5ac4e6['push'](db['ChatQueue']['findAll'](queryQueues));_0x5ac4e6[_0x6f1d('0x2f')](db['FaxQueue'][_0x6f1d('0x10')](queryQueues));_0x5ac4e6['push'](db[_0x6f1d('0x30')][_0x6f1d('0x10')](queryQueues));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x31')][_0x6f1d('0x10')](queryQueues));_0x5ac4e6['push'](db['OpenchannelQueue'][_0x6f1d('0x10')](queryQueues));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x32')]['findAll'](queryQueues));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x6')][_0x6f1d('0x10')](queryTelephones));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x33')][_0x6f1d('0x10')](queryTrunks));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x1a')]['findAll'](queryCampaigns));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x6')][_0x6f1d('0x10')](queryAgents));break;case _0x6f1d('0x34'):_0x239ff7[_0x2fbd59](_0x6f1d('0x2b'));_0x239ff7[_0x2fbd59]('voice:outbound');_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources('VoiceQueues',_0x2cad3c['userProfileId'],_0x6f1d('0x2e')));_0x5ac4e6['push'](getAssociatedResources(_0x6f1d('0xb'),_0x2cad3c[_0x6f1d('0x21')],_0x6f1d('0x35')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources(_0x6f1d('0xc'),_0x2cad3c[_0x6f1d('0x21')],_0x6f1d('0x36')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources('SmsQueues',_0x2cad3c['userProfileId'],_0x6f1d('0x30')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources(_0x6f1d('0xe'),_0x2cad3c['userProfileId'],_0x6f1d('0x31')));_0x5ac4e6['push'](getAssociatedResources(_0x6f1d('0x37'),_0x2cad3c[_0x6f1d('0x21')],_0x6f1d('0x38')));_0x5ac4e6['push'](getAssociatedResources(_0x6f1d('0xf'),_0x2cad3c['userProfileId'],_0x6f1d('0x32')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources(_0x6f1d('0x11'),_0x2cad3c[_0x6f1d('0x21')],_0x6f1d('0x6')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources(_0x6f1d('0x12'),_0x2cad3c[_0x6f1d('0x21')],_0x6f1d('0x33')));_0x5ac4e6[_0x6f1d('0x2f')](getAssociatedResources(_0x6f1d('0x13'),_0x2cad3c['userProfileId'],_0x6f1d('0x1a')));_0x5ac4e6[_0x6f1d('0x2f')](db[_0x6f1d('0x6')][_0x6f1d('0x10')](queryAgents));break;case _0x6f1d('0x9'):_0x239ff7[_0x2fbd59]('voice:inbound');_0x239ff7[_0x2fbd59]('voice:outbound');_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x39')]({'attributes':['id',_0x6f1d('0x7')]}));_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x3a')]({'attributes':['id',_0x6f1d('0x7')]}));_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x3b')]({'attributes':['id',_0x6f1d('0x7')]}));_0x5ac4e6['push'](_0x2cad3c['getSmsQueues']({'attributes':['id',_0x6f1d('0x7')]}));_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x3c')]({'attributes':['id',_0x6f1d('0x7')]}));_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x3d')]({'attributes':['id','name']}));_0x5ac4e6[_0x6f1d('0x2f')](_0x2cad3c[_0x6f1d('0x3e')]({'attributes':['id',_0x6f1d('0x7')]}));break;}return BPromise['all'](_0x5ac4e6);}})[_0x6f1d('0x16')](function(_0xe31571){if(_0xe31571&&_0xe31571['length']){for(var _0x419d6b=0x0;_0x419d6b<_0xe31571[_0x6f1d('0x1e')];_0x419d6b+=0x1){for(var _0x412318=0x0;_0x412318<_0xe31571[_0x419d6b]['length'];_0x412318+=0x1){switch(_0x419d6b){case 0x0:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x3f'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x1:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x40'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x2:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x41'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x3:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x42'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x4:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x43'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x5:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,'openchannel',_0xe31571[_0x419d6b][_0x412318]);break;case 0x6:joinOrLeaveQueues(_0x239ff7,_0x2fbd59,_0x6f1d('0x44'),_0xe31571[_0x419d6b][_0x412318]);break;case 0x7:if(_0x4265b3[_0x6f1d('0x19')]!==_0x6f1d('0x9'))_0x239ff7[_0x2fbd59](util[_0x6f1d('0x1c')](_0x6f1d('0x45'),_0xe31571[_0x419d6b][_0x412318]['name']));break;case 0x8:if(_0x4265b3['role']!==_0x6f1d('0x9'))_0x239ff7[_0x2fbd59](util[_0x6f1d('0x1c')](_0x6f1d('0x46'),_0xe31571[_0x419d6b][_0x412318]['name']));break;case 0x9:if(_0x4265b3['role']!==_0x6f1d('0x9'))_0x239ff7[_0x2fbd59](util[_0x6f1d('0x1c')]('campaign:%s:%s',_0xe31571[_0x419d6b][_0x412318][_0x6f1d('0x1b')],_0xe31571[_0x419d6b][_0x412318][_0x6f1d('0x7')]));break;case 0xa:_0x239ff7[_0x2fbd59](util[_0x6f1d('0x1c')](_0x6f1d('0x47'),_0xe31571[_0x419d6b][_0x412318]['name']));break;}}}}})['then'](function(){if(_0x2fbd59==='leave'){var _0x43b039=_[_0x6f1d('0x17')](_0x4265b3['ChatInteractions'],'id');return _0x4265b3[_0x6f1d('0x48')](_0x43b039)['then'](function(){for(var _0x3d1849=0x0;_0x3d1849<_0x43b039[_0x6f1d('0x1e')];_0x3d1849+=0x1){_0x19338f[_0x6f1d('0x49')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x43b039[_0x3d1849]),'UserId':Number(_0x4265b3['id'])});}});}})[_0x6f1d('0x16')](function(){if(_0x2fbd59===_0x6f1d('0x4a')){var _0x4d2562=_[_0x6f1d('0x17')](_0x4265b3[_0x6f1d('0x4b')],'id');return _0x4265b3[_0x6f1d('0x4c')](_0x4d2562)[_0x6f1d('0x16')](function(){for(var _0x4d9b1b=0x0;_0x4d9b1b<_0x4d2562[_0x6f1d('0x1e')];_0x4d9b1b+=0x1){_0x19338f['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4d2562[_0x4d9b1b]),'UserId':Number(_0x4265b3['id'])});}});}})['then'](function(){if(_0x2fbd59===_0x6f1d('0x4a')){var _0x468796=_[_0x6f1d('0x17')](_0x4265b3[_0x6f1d('0x25')],'id');return _0x4265b3[_0x6f1d('0x4d')](_0x468796)['then'](function(){for(var _0x489018=0x0;_0x489018<_0x468796[_0x6f1d('0x1e')];_0x489018+=0x1){_0x19338f[_0x6f1d('0x49')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x468796[_0x489018]),'UserId':Number(_0x4265b3['id'])});}});}})[_0x6f1d('0x16')](function(){if(_0x2fbd59===_0x6f1d('0x4a')){var _0xfa908a=_['map'](_0x4265b3['SmsInteractions'],'id');return _0x4265b3[_0x6f1d('0x4e')](_0xfa908a)[_0x6f1d('0x16')](function(){for(var _0x2bc824=0x0;_0x2bc824<_0xfa908a['length'];_0x2bc824+=0x1){_0x19338f[_0x6f1d('0x49')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0xfa908a[_0x2bc824]),'UserId':Number(_0x4265b3['id'])});}});}})[_0x6f1d('0x16')](function(){if(_0x2fbd59===_0x6f1d('0x4a')){var _0x17ce84=_[_0x6f1d('0x17')](_0x4265b3['OpenchannelInteractions'],'id');return _0x4265b3['removeOpenchannelInteractions'](_0x17ce84)[_0x6f1d('0x16')](function(){for(var _0xff0e29=0x0;_0xff0e29<_0x17ce84[_0x6f1d('0x1e')];_0xff0e29+=0x1){_0x19338f['emit'](_0x6f1d('0x4f'),{'OpenchannelInteractionId':Number(_0x17ce84[_0xff0e29]),'UserId':Number(_0x4265b3['id'])});}});}})[_0x6f1d('0x16')](function(){if(_0x2fbd59===_0x6f1d('0x4a')){var _0x275d5f=_[_0x6f1d('0x17')](_0x4265b3[_0x6f1d('0x29')],'id');return _0x4265b3[_0x6f1d('0x50')](_0x275d5f)[_0x6f1d('0x16')](function(){for(var _0x46411e=0x0;_0x46411e<_0x275d5f['length'];_0x46411e+=0x1){_0x19338f[_0x6f1d('0x49')](_0x6f1d('0x51'),{'WhatsappInteractionId':Number(_0x275d5f[_0x46411e]),'UserId':Number(_0x4265b3['id'])});}});}})['catch'](function(_0xe34457){_0x239ff7['log'](_0xe34457);});}}function onDisconnect(_0xac2013,_0x224c2b){joinOrLeave(_0xac2013,_0x6f1d('0x4a'),_0x224c2b);}function onConnect(_0x15016b){joinOrLeave(_0x15016b,_0x6f1d('0x52'));}exports[_0x6f1d('0x53')]=function(_0x5450a1){_0x5450a1['on']('connection',function(_0x41b413){_0x41b413[_0x6f1d('0x54')](0x0);_0x41b413[_0x6f1d('0x55')]=_0x41b413[_0x6f1d('0x56')][_0x6f1d('0x57')][_0x6f1d('0x58')]+':'+_0x41b413['request']['connection'][_0x6f1d('0x59')];_0x41b413[_0x6f1d('0x5a')]=new Date();_0x41b413[_0x6f1d('0x5b')]=function(_0x1eda71){console[_0x6f1d('0x5b')](_0x6f1d('0x5c')+_0x41b413[_0x6f1d('0x5d')][_0x6f1d('0x7')]+'['+_0x41b413[_0x6f1d('0x55')]+']',_0x1eda71);};_0x41b413['on'](_0x6f1d('0x5e'),function(){onDisconnect(_0x41b413,_0x5450a1);_0x41b413[_0x6f1d('0x5b')]('DISCONNECTED');});onConnect(_0x41b413);_0x41b413[_0x6f1d('0x5b')](_0x6f1d('0x5f'));});};
\ No newline at end of file
index 7c2b713..afd5cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe945=['Openchannel','OpenchannelMessage','request','then','info','Trigger,\x20%s','EventManager','error','code','catch','get','channel','event','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','SELECT','contact','UserId','format','SIP/%s','name','agent','incomingmessage','outgoingmessage','AfterCreateMessage','motionChannel','offlineMessage','opened','interface','AfterCreate','changed','closed','substatus','User','find','internal','default','hasOwnProperty','model','hook','callback','toLowerCase','util','../../mysqldb','jayson/promise','../logger','client','http','Chat','afterCreate','newinteraction','ChatInteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction'];(function(_0x167117,_0x2dee70){var _0x387b70=function(_0x58f7e0){while(--_0x58f7e0){_0x167117['push'](_0x167117['shift']());}};_0x387b70(++_0x2dee70);}(_0xe945,0xc4));var _0x5e94=function(_0x4417a7,_0x5e17e2){_0x4417a7=_0x4417a7-0x0;var _0x3ac456=_0xe945[_0x4417a7];return _0x3ac456;};'use strict';var util=require(_0x5e94('0x0'));var db=require(_0x5e94('0x1'))['db'];var jayson=require(_0x5e94('0x2'));var logger=require(_0x5e94('0x3'))('triggers');var client=jayson[_0x5e94('0x4')][_0x5e94('0x5')]({'port':0x232a});var triggers=[{'channel':_0x5e94('0x6'),'model':'ChatInteraction','event':_0x5e94('0x7'),'condition':_0x5e94('0x8'),'callback':afterCreate},{'channel':_0x5e94('0x6'),'model':_0x5e94('0x9'),'event':_0x5e94('0xa'),'condition':_0x5e94('0xb'),'callback':afterUpdate},{'channel':_0x5e94('0x6'),'model':_0x5e94('0xc'),'event':'afterCreate','condition':_0x5e94('0xd'),'callback':afterCreateMessage},{'channel':_0x5e94('0x6'),'model':'ChatOfflineMessage','event':_0x5e94('0x7'),'condition':_0x5e94('0xd'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':'SmsInteraction','event':'afterCreate','condition':_0x5e94('0x8'),'callback':afterCreate},{'channel':_0x5e94('0xe'),'model':'SmsInteraction','event':_0x5e94('0xa'),'condition':_0x5e94('0xb'),'callback':afterUpdate},{'channel':_0x5e94('0xe'),'model':_0x5e94('0xf'),'event':'afterCreate','condition':_0x5e94('0xd'),'callback':afterCreateMessage},{'channel':_0x5e94('0x10'),'model':_0x5e94('0x11'),'event':_0x5e94('0x7'),'condition':_0x5e94('0x8'),'callback':afterCreate},{'channel':'Whatsapp','model':_0x5e94('0x11'),'event':_0x5e94('0xa'),'condition':_0x5e94('0xb'),'callback':afterUpdate},{'channel':_0x5e94('0x10'),'model':_0x5e94('0x12'),'event':_0x5e94('0x7'),'condition':_0x5e94('0xd'),'callback':afterCreateMessage},{'channel':_0x5e94('0x13'),'model':'FaxInteraction','event':_0x5e94('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':'Fax','model':_0x5e94('0x14'),'event':_0x5e94('0xa'),'condition':_0x5e94('0xb'),'callback':afterUpdate},{'channel':_0x5e94('0x13'),'model':_0x5e94('0x15'),'event':_0x5e94('0x7'),'condition':_0x5e94('0xd'),'callback':afterCreateMessage},{'channel':_0x5e94('0x16'),'model':_0x5e94('0x17'),'event':_0x5e94('0x7'),'condition':_0x5e94('0x8'),'callback':afterCreate},{'channel':_0x5e94('0x16'),'model':_0x5e94('0x17'),'event':_0x5e94('0xa'),'condition':_0x5e94('0xb'),'callback':afterUpdate},{'channel':_0x5e94('0x16'),'model':_0x5e94('0x18'),'event':_0x5e94('0x7'),'condition':_0x5e94('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x5e94('0x19'),'event':'afterCreate','condition':_0x5e94('0x8'),'callback':afterCreate},{'channel':_0x5e94('0x1a'),'model':_0x5e94('0x19'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':_0x5e94('0x1b'),'event':_0x5e94('0x7'),'condition':_0x5e94('0xd'),'callback':afterCreateMessage}];function request(_0x57fef1){return client[_0x5e94('0x1c')]('EventManager',_0x57fef1)[_0x5e94('0x1d')](function(_0x4ae1c7){logger[_0x5e94('0x1e')](_0x5e94('0x1f'),_0x5e94('0x20'),_0x4ae1c7);if(_0x4ae1c7[_0x5e94('0x21')]){if(_0x4ae1c7['error'][_0x5e94('0x22')]===0x1f4){logger['error']('Trigger,\x20%s',_0x5e94('0x20'),_0x4ae1c7['error']);}}})[_0x5e94('0x23')](function(_0x329451){logger[_0x5e94('0x21')](_0x5e94('0x1f'),_0x5e94('0x20'),_0x329451);});}function afterCreateMessage(_0x3edb8c){return function(_0x5f4f30){_0x5f4f30=_0x5f4f30[_0x5e94('0x24')]({'plain':!![]});_0x5f4f30[_0x5e94('0x25')]=_0x3edb8c;_0x5f4f30['motionChannel']=_0x3edb8c;_0x5f4f30[_0x5e94('0x26')]=_0x5f4f30[_0x5e94('0x27')];Promise[_0x5e94('0x28')]()['then'](function(){if(typeof _0x5f4f30[_0x5e94('0x29')]===_0x5e94('0x2a'))return null;var _0xb4719e=_0x5e94('0x2b')+_0x5f4f30['ContactId'];return db[_0x5e94('0x2c')][_0x5e94('0x2d')](_0xb4719e,{'type':db[_0x5e94('0x2e')]['QueryTypes'][_0x5e94('0x2f')],'raw':!![]});})[_0x5e94('0x1d')](function(_0x401ec0){if(_0x401ec0){_0x5f4f30[_0x5e94('0x30')]=_0x401ec0[0x0];}if(typeof _0x5f4f30[_0x5e94('0x31')]===_0x5e94('0x2a'))return;return getAgent(_0x5f4f30[_0x5e94('0x31')]);})[_0x5e94('0x1d')](function(_0x354764){if(_0x354764){_0x5f4f30['interface']=util[_0x5e94('0x32')](_0x5e94('0x33'),_0x354764[_0x5e94('0x34')]);_0x5f4f30[_0x5e94('0x35')]=_0x354764;_0x5f4f30[_0x5e94('0x25')]=_0x3edb8c;return request({'event':_0x5e94('0x36'),'message':_0x5f4f30});}else{return request({'event':_0x5e94('0x37'),'message':_0x5f4f30});}})[_0x5e94('0x23')](function(_0x48fe84){logger[_0x5e94('0x21')]('Trigger,\x20%s',_0x5e94('0x38'),_0x48fe84);});};}function afterCreateOfflineMessage(_0x5dfa97){return function(_0x17d211){_0x17d211=_0x17d211[_0x5e94('0x24')]({'plain':!![]});_0x17d211[_0x5e94('0x25')]=_0x5dfa97;_0x17d211[_0x5e94('0x39')]=_0x5dfa97;_0x17d211[_0x5e94('0x26')]=_0x5e94('0x3a');return request({'event':_0x17d211['event'],'message':_0x17d211});};}function afterCreate(_0x2746e2,_0x2aa4af){return function(_0x1f7fc2){_0x1f7fc2=_0x1f7fc2['get']({'plain':!![]});_0x1f7fc2[_0x5e94('0x25')]=_0x2746e2;_0x1f7fc2[_0x5e94('0x39')]=_0x2746e2;_0x1f7fc2[_0x5e94('0x26')]=_0x5e94('0x3b');Promise[_0x5e94('0x28')]()[_0x5e94('0x1d')](function(){var _0x5d0458=_0x5e94('0x2b')+_0x1f7fc2[_0x5e94('0x29')];return db[_0x5e94('0x2c')][_0x5e94('0x2d')](_0x5d0458,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]});})['then'](function(_0x18ccea){if(_0x18ccea){_0x1f7fc2[_0x5e94('0x30')]=_0x18ccea[0x0];}if(typeof _0x1f7fc2[_0x5e94('0x31')]==='undefined')return;return getAgent(_0x1f7fc2['UserId']);})['then'](function(_0x31158a){if(_0x31158a){_0x1f7fc2[_0x5e94('0x3c')]=util['format']('SIP/%s',_0x31158a['name']);_0x1f7fc2['agent']=_0x31158a;}return request({'event':_0x2aa4af,'message':_0x1f7fc2});})[_0x5e94('0x23')](function(_0x2a05af){logger[_0x5e94('0x21')](_0x5e94('0x1f'),_0x5e94('0x3d'),_0x2a05af);});};}function afterUpdate(_0xa1fd8a){return function(_0x3d70cf){var _0x3e8c77=_0x3d70cf[_0x5e94('0x3e')](_0x5e94('0x3f'))&&_0x3d70cf[_0x5e94('0x3f')];var _0x4eb536=_0x3d70cf['changed']('substatus');if(_0x3e8c77||_0x4eb536){var _0x1cd322=_0x3e8c77?_0x5e94('0xb'):_0x5e94('0x40');var _0x474c6d=_0x3d70cf['get']({'plain':!![]});_0x474c6d[_0x5e94('0x25')]=_0xa1fd8a;_0x474c6d[_0x5e94('0x39')]=_0xa1fd8a;_0x474c6d['event']=_0x3e8c77?'closed':_0x5e94('0x40');var _0x24417b=_0x5e94('0x2b')+_0x474c6d[_0x5e94('0x29')];return db['sequelize'][_0x5e94('0x2d')](_0x24417b,{'type':db[_0x5e94('0x2e')]['QueryTypes'][_0x5e94('0x2f')],'raw':!![]})[_0x5e94('0x1d')](function(_0x1afb53){if(_0x1afb53){_0x474c6d[_0x5e94('0x30')]=_0x1afb53[0x0];}if(typeof _0x474c6d[_0x5e94('0x31')]===_0x5e94('0x2a'))return;return getAgent(_0x474c6d[_0x5e94('0x31')]);})[_0x5e94('0x1d')](function(_0x2aa8e8){if(_0x2aa8e8){_0x474c6d[_0x5e94('0x3c')]=util[_0x5e94('0x32')]('SIP/%s',_0x2aa8e8[_0x5e94('0x34')]);_0x474c6d[_0x5e94('0x35')]=_0x2aa8e8;}return request({'event':_0x1cd322,'message':_0x474c6d});})[_0x5e94('0x23')](function(_0x480579){logger[_0x5e94('0x21')](_0x5e94('0x1f'),'AfterUpdate',_0x480579);});}};}function getAgent(_0x19f3af){return db[_0x5e94('0x41')][_0x5e94('0x42')]({'where':{'id':_0x19f3af},'attributes':['id',_0x5e94('0x34'),'fullname','email',_0x5e94('0x43')],'raw':!![]})['then'](function(_0x490f6f){return _0x490f6f;});}exports[_0x5e94('0x44')]=function(){for(var _0x28183e=0x0;_0x28183e<triggers['length'];_0x28183e+=0x1){if(db[_0x5e94('0x45')](triggers[_0x28183e][_0x5e94('0x46')])){db[triggers[_0x28183e][_0x5e94('0x46')]][_0x5e94('0x47')](triggers[_0x28183e][_0x5e94('0x26')],triggers[_0x28183e][_0x5e94('0x48')](triggers[_0x28183e][_0x5e94('0x25')][_0x5e94('0x49')](),triggers[_0x28183e]['condition']));}}};
\ No newline at end of file
+var _0xcd1a=['format','agent','AfterCreate','closed','changed','substatus','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','AfterUpdate','find','fullname','email','default','length','model','hook','condition','../../mysqldb','jayson/promise','../logger','triggers','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','then','info','Trigger,\x20%s','EventManager','error','catch','get','channel','motionChannel','event','direction','resolve','ContactId','undefined','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','interface','SIP/%s','name','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','opened'];(function(_0x280438,_0x1a2b94){var _0x26c9d6=function(_0x1d369a){while(--_0x1d369a){_0x280438['push'](_0x280438['shift']());}};_0x26c9d6(++_0x1a2b94);}(_0xcd1a,0xeb));var _0xacd1=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xcd1a[_0x599f41];return _0x2e4d58;};'use strict';var util=require('util');var db=require(_0xacd1('0x0'))['db'];var jayson=require(_0xacd1('0x1'));var logger=require(_0xacd1('0x2'))(_0xacd1('0x3'));var client=jayson['client']['http']({'port':0x232a});var triggers=[{'channel':_0xacd1('0x4'),'model':_0xacd1('0x5'),'event':_0xacd1('0x6'),'condition':_0xacd1('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0xacd1('0x5'),'event':_0xacd1('0x8'),'condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':_0xacd1('0x4'),'model':_0xacd1('0xa'),'event':'afterCreate','condition':_0xacd1('0xb'),'callback':afterCreateMessage},{'channel':_0xacd1('0x4'),'model':_0xacd1('0xc'),'event':_0xacd1('0x6'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xacd1('0xd'),'model':_0xacd1('0xe'),'event':_0xacd1('0x6'),'condition':_0xacd1('0x7'),'callback':afterCreate},{'channel':_0xacd1('0xd'),'model':_0xacd1('0xe'),'event':_0xacd1('0x8'),'condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':_0xacd1('0xd'),'model':_0xacd1('0xf'),'event':_0xacd1('0x6'),'condition':_0xacd1('0xb'),'callback':afterCreateMessage},{'channel':_0xacd1('0x10'),'model':_0xacd1('0x11'),'event':'afterCreate','condition':_0xacd1('0x7'),'callback':afterCreate},{'channel':_0xacd1('0x10'),'model':_0xacd1('0x11'),'event':'afterUpdate','condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0xacd1('0x12'),'event':_0xacd1('0x6'),'condition':_0xacd1('0xb'),'callback':afterCreateMessage},{'channel':_0xacd1('0x13'),'model':_0xacd1('0x14'),'event':_0xacd1('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xacd1('0x13'),'model':_0xacd1('0x14'),'event':_0xacd1('0x8'),'condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':_0xacd1('0x13'),'model':_0xacd1('0x15'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0xacd1('0x16'),'model':_0xacd1('0x17'),'event':_0xacd1('0x6'),'condition':_0xacd1('0x7'),'callback':afterCreate},{'channel':_0xacd1('0x16'),'model':_0xacd1('0x17'),'event':'afterUpdate','condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':_0xacd1('0x16'),'model':'MailMessage','event':_0xacd1('0x6'),'condition':_0xacd1('0xb'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0xacd1('0x18'),'event':_0xacd1('0x6'),'condition':_0xacd1('0x7'),'callback':afterCreate},{'channel':'Openchannel','model':_0xacd1('0x18'),'event':_0xacd1('0x8'),'condition':_0xacd1('0x9'),'callback':afterUpdate},{'channel':_0xacd1('0x19'),'model':_0xacd1('0x1a'),'event':_0xacd1('0x6'),'condition':_0xacd1('0xb'),'callback':afterCreateMessage}];function request(_0x1bebd3){return client[_0xacd1('0x1b')]('EventManager',_0x1bebd3)[_0xacd1('0x1c')](function(_0x18c068){logger[_0xacd1('0x1d')](_0xacd1('0x1e'),_0xacd1('0x1f'),_0x18c068);if(_0x18c068[_0xacd1('0x20')]){if(_0x18c068[_0xacd1('0x20')]['code']===0x1f4){logger[_0xacd1('0x20')](_0xacd1('0x1e'),_0xacd1('0x1f'),_0x18c068[_0xacd1('0x20')]);}}})[_0xacd1('0x21')](function(_0x22aff4){logger[_0xacd1('0x20')](_0xacd1('0x1e'),_0xacd1('0x1f'),_0x22aff4);});}function afterCreateMessage(_0x4e62ae){return function(_0x38585c){_0x38585c=_0x38585c[_0xacd1('0x22')]({'plain':!![]});_0x38585c[_0xacd1('0x23')]=_0x4e62ae;_0x38585c[_0xacd1('0x24')]=_0x4e62ae;_0x38585c[_0xacd1('0x25')]=_0x38585c[_0xacd1('0x26')];Promise[_0xacd1('0x27')]()[_0xacd1('0x1c')](function(){if(typeof _0x38585c[_0xacd1('0x28')]===_0xacd1('0x29'))return null;var _0x2df061='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x38585c[_0xacd1('0x28')];return db[_0xacd1('0x2a')][_0xacd1('0x2b')](_0x2df061,{'type':db[_0xacd1('0x2c')][_0xacd1('0x2d')][_0xacd1('0x2e')],'raw':!![]});})['then'](function(_0x422045){if(_0x422045){_0x38585c[_0xacd1('0x2f')]=_0x422045[0x0];}if(typeof _0x38585c['UserId']===_0xacd1('0x29'))return;return getAgent(_0x38585c[_0xacd1('0x30')]);})[_0xacd1('0x1c')](function(_0x53e18e){if(_0x53e18e){_0x38585c[_0xacd1('0x31')]=util['format'](_0xacd1('0x32'),_0x53e18e[_0xacd1('0x33')]);_0x38585c['agent']=_0x53e18e;_0x38585c[_0xacd1('0x23')]=_0x4e62ae;return request({'event':_0xacd1('0x34'),'message':_0x38585c});}else{return request({'event':_0xacd1('0x35'),'message':_0x38585c});}})['catch'](function(_0x4bb1a5){logger[_0xacd1('0x20')]('Trigger,\x20%s',_0xacd1('0x36'),_0x4bb1a5);});};}function afterCreateOfflineMessage(_0x127eed){return function(_0xf598be){_0xf598be=_0xf598be['get']({'plain':!![]});_0xf598be[_0xacd1('0x23')]=_0x127eed;_0xf598be[_0xacd1('0x24')]=_0x127eed;_0xf598be[_0xacd1('0x25')]=_0xacd1('0x37');return request({'event':_0xf598be[_0xacd1('0x25')],'message':_0xf598be});};}function afterCreate(_0x423306,_0x256c8c){return function(_0x370191){_0x370191=_0x370191[_0xacd1('0x22')]({'plain':!![]});_0x370191[_0xacd1('0x23')]=_0x423306;_0x370191[_0xacd1('0x24')]=_0x423306;_0x370191[_0xacd1('0x25')]=_0xacd1('0x38');Promise[_0xacd1('0x27')]()[_0xacd1('0x1c')](function(){var _0x4a074d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x370191['ContactId'];return db[_0xacd1('0x2a')][_0xacd1('0x2b')](_0x4a074d,{'type':db[_0xacd1('0x2c')]['QueryTypes'][_0xacd1('0x2e')],'raw':!![]});})[_0xacd1('0x1c')](function(_0x44f24a){if(_0x44f24a){_0x370191[_0xacd1('0x2f')]=_0x44f24a[0x0];}if(typeof _0x370191[_0xacd1('0x30')]==='undefined')return;return getAgent(_0x370191[_0xacd1('0x30')]);})['then'](function(_0x2b9b92){if(_0x2b9b92){_0x370191['interface']=util[_0xacd1('0x39')](_0xacd1('0x32'),_0x2b9b92['name']);_0x370191[_0xacd1('0x3a')]=_0x2b9b92;}return request({'event':_0x256c8c,'message':_0x370191});})[_0xacd1('0x21')](function(_0x497c7c){logger[_0xacd1('0x20')](_0xacd1('0x1e'),_0xacd1('0x3b'),_0x497c7c);});};}function afterUpdate(_0x2c83ea){return function(_0x3e2255){var _0x5b3513=_0x3e2255['changed']('closed')&&_0x3e2255[_0xacd1('0x3c')];var _0x229cef=_0x3e2255[_0xacd1('0x3d')](_0xacd1('0x3e'));if(_0x5b3513||_0x229cef){var _0x419610=_0x5b3513?_0xacd1('0x9'):_0xacd1('0x3e');var _0x568dc1=_0x3e2255[_0xacd1('0x22')]({'plain':!![]});_0x568dc1[_0xacd1('0x23')]=_0x2c83ea;_0x568dc1[_0xacd1('0x24')]=_0x2c83ea;_0x568dc1['event']=_0x5b3513?_0xacd1('0x3c'):_0xacd1('0x3e');var _0x511b1d=_0xacd1('0x3f')+_0x568dc1['ContactId'];return db[_0xacd1('0x2a')]['query'](_0x511b1d,{'type':db[_0xacd1('0x2c')][_0xacd1('0x2d')]['SELECT'],'raw':!![]})[_0xacd1('0x1c')](function(_0x1630a9){if(_0x1630a9){_0x568dc1['contact']=_0x1630a9[0x0];}if(typeof _0x568dc1[_0xacd1('0x30')]===_0xacd1('0x29'))return;return getAgent(_0x568dc1[_0xacd1('0x30')]);})[_0xacd1('0x1c')](function(_0x58b8a7){if(_0x58b8a7){_0x568dc1['interface']=util['format']('SIP/%s',_0x58b8a7[_0xacd1('0x33')]);_0x568dc1['agent']=_0x58b8a7;}return request({'event':_0x419610,'message':_0x568dc1});})['catch'](function(_0x289ed6){logger[_0xacd1('0x20')]('Trigger,\x20%s',_0xacd1('0x40'),_0x289ed6);});}};}function getAgent(_0x367803){return db['User'][_0xacd1('0x41')]({'where':{'id':_0x367803},'attributes':['id',_0xacd1('0x33'),_0xacd1('0x42'),_0xacd1('0x43'),'internal'],'raw':!![]})['then'](function(_0x114e93){return _0x114e93;});}exports[_0xacd1('0x44')]=function(){for(var _0x2af150=0x0;_0x2af150<triggers[_0xacd1('0x45')];_0x2af150+=0x1){if(db['hasOwnProperty'](triggers[_0x2af150][_0xacd1('0x46')])){db[triggers[_0x2af150][_0xacd1('0x46')]][_0xacd1('0x47')](triggers[_0x2af150][_0xacd1('0x25')],triggers[_0x2af150]['callback'](triggers[_0x2af150]['channel']['toLowerCase'](),triggers[_0x2af150][_0xacd1('0x48')]));}}};
\ No newline at end of file
index 010c4b8..1ba1207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f9=['./license/util','voice','mail','chat','fax','sms','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','role','User','count','agent','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird'];(function(_0x5b01d6,_0x4514f6){var _0x5511f7=function(_0x596bb7){while(--_0x596bb7){_0x5b01d6['push'](_0x5b01d6['shift']());}};_0x5511f7(++_0x4514f6);}(_0x95f9,0x136));var _0x995f=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x95f9[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0x995f('0x0'));var BPromise=require(_0x995f('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x995f('0x2'));var channels=[_0x995f('0x3'),_0x995f('0x4'),_0x995f('0x5'),_0x995f('0x6'),_0x995f('0x7'),'whatsapp',_0x995f('0x8')];exports[_0x995f('0x9')]=function(){return channels;};exports[_0x995f('0xa')]=function(_0x715ee3){_0x715ee3=_0x715ee3[_0x995f('0xb')]();return _[_0x995f('0xc')](channels,_0x715ee3);};exports[_0x995f('0xd')]=function(_0x1a7601,_0x3fb026,_0x49db2c,_0x3b0cb9){var _0x36a872={'loginAttempts':_0x3fb026,'blocked':_0x49db2c};if(!_[_0x995f('0xe')](_0x3b0cb9)){_0x36a872[_0x995f('0xf')]=_0x3b0cb9;}return _0x1a7601[_0x995f('0x10')](_0x36a872);};exports['getLicense']=function(_0x29a645){return new BPromise(function(_0x280038,_0x7bd855){var _0x48f2fe=0x0;if(_0x29a645[_0x995f('0x11')]!=='agent'){_0x280038(_0x29a645);}db[_0x995f('0x12')][_0x995f('0x13')]({'where':{'role':_0x995f('0x14'),'online':!![],'id':{'$ne':_0x29a645['id']}}})[_0x995f('0x15')](function(_0x33d221){_0x48f2fe=_0x33d221;return util[_0x995f('0x16')]();})['then'](function(_0x4adc73){if(_0x4adc73&&_0x4adc73[_0x995f('0x17')]&&_0x48f2fe>=_0x4adc73['agents']){throw Error(_0x995f('0x18'));}_0x280038(_0x29a645);})[_0x995f('0x19')](function(_0x2b1cf1){_0x7bd855(_0x2b1cf1);});});};
\ No newline at end of file
+var _0xcbea=['whatsapp','openchannel','getChannels','isValidChannel','isUndefined','getLicense','role','agent','User','count','then','agents','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','fax','sms'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xcbea,0x1da));var _0xacbe=function(_0x3964ac,_0x292545){_0x3964ac=_0x3964ac-0x0;var _0x55823a=_0xcbea[_0x3964ac];return _0x55823a;};'use strict';var _=require(_0xacbe('0x0'));var BPromise=require(_0xacbe('0x1'));var db=require(_0xacbe('0x2'))['db'];var util=require(_0xacbe('0x3'));var channels=[_0xacbe('0x4'),_0xacbe('0x5'),_0xacbe('0x6'),_0xacbe('0x7'),_0xacbe('0x8'),_0xacbe('0x9'),_0xacbe('0xa')];exports[_0xacbe('0xb')]=function(){return channels;};exports[_0xacbe('0xc')]=function(_0x46bd1b){_0x46bd1b=_0x46bd1b['toLowerCase']();return _['includes'](channels,_0x46bd1b);};exports['clearBlockUser']=function(_0x3de214,_0x4eb299,_0x39f9f2,_0x50a7cb){var _0xc052e5={'loginAttempts':_0x4eb299,'blocked':_0x39f9f2};if(!_[_0xacbe('0xd')](_0x50a7cb)){_0xc052e5['blockedAt']=_0x50a7cb;}return _0x3de214['updateAttributes'](_0xc052e5);};exports[_0xacbe('0xe')]=function(_0x401836){return new BPromise(function(_0x3b5170,_0x10c084){var _0x197bf6=0x0;if(_0x401836[_0xacbe('0xf')]!==_0xacbe('0x10')){_0x3b5170(_0x401836);}db[_0xacbe('0x11')][_0xacbe('0x12')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x401836['id']}}})[_0xacbe('0x13')](function(_0x208125){_0x197bf6=_0x208125;return util[_0xacbe('0xe')]();})[_0xacbe('0x13')](function(_0x39f597){if(_0x39f597&&_0x39f597[_0xacbe('0x14')]&&_0x197bf6>=_0x39f597['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x3b5170(_0x401836);})['catch'](function(_0x3f3440){_0x10c084(_0x3f3440);});});};
\ No newline at end of file
index 476c46e..03a708f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['error','status','util','../config/logger','message','name','Error','inherits','Entity\x20not\x20found','Forbidden','OutOfInterval','Not\x20Found'];(function(_0x692f3b,_0xa50056){var _0x25d511=function(_0x5ee2e0){while(--_0x5ee2e0){_0x692f3b['push'](_0x692f3b['shift']());}};_0x25d511(++_0xa50056);}(_0xb43b,0x1b2));var _0xbb43=function(_0x51735f,_0x40ba17){_0x51735f=_0x51735f-0x0;var _0x46af44=_0xb43b[_0x51735f];return _0x46af44;};'use strict';var util=require(_0xbb43('0x0'));var logger=require(_0xbb43('0x1'))('api');var APIError=function(_0x1bdcfc,_0x1995f8){this[_0xbb43('0x2')]=_0x1bdcfc||'Internal\x20Server\x20Error';this[_0xbb43('0x3')]=_0x1995f8||_0xbb43('0x4');util[_0xbb43('0x5')](APIError,Error);};var APIBadRequestError=function(_0x16432a){this['message']=_0x16432a||'Bad\x20Request';this[_0xbb43('0x3')]='Bad\x20Request';util[_0xbb43('0x5')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x1ccd49){this[_0xbb43('0x2')]=_0x1ccd49||_0xbb43('0x6');this[_0xbb43('0x3')]='Not\x20Found';util[_0xbb43('0x5')](APINotFoundError,APIError);};function getStatusCode(_0xf54ac5){switch(_0xf54ac5){case'Bad\x20Request':return 0x190;case _0xbb43('0x7'),_0xbb43('0x8'):return 0x193;case _0xbb43('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x5e3611){return function(_0xfac791){logger[_0xbb43('0xa')](_0xfac791['stack']);var _0x36a473=getStatusCode(_0xfac791[_0xbb43('0x3')]);if(_0xfac791['name'])delete _0xfac791['name'];return _0x5e3611[_0xbb43('0xb')](_0x36a473)['send'](_0xfac791);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xa9e0=['message','name','Error','inherits','Bad\x20Request','Entity\x20not\x20found','Forbidden','OutOfInterval','Not\x20Found','status','send','util','../config/logger','api'];(function(_0x41e0a3,_0x1d6101){var _0x31afca=function(_0x2e7f26){while(--_0x2e7f26){_0x41e0a3['push'](_0x41e0a3['shift']());}};_0x31afca(++_0x1d6101);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var util=require(_0x0a9e('0x0'));var logger=require(_0x0a9e('0x1'))(_0x0a9e('0x2'));var APIError=function(_0x5dd881,_0x550fbc){this[_0x0a9e('0x3')]=_0x5dd881||'Internal\x20Server\x20Error';this[_0x0a9e('0x4')]=_0x550fbc||_0x0a9e('0x5');util[_0x0a9e('0x6')](APIError,Error);};var APIBadRequestError=function(_0x991246){this[_0x0a9e('0x3')]=_0x991246||'Bad\x20Request';this[_0x0a9e('0x4')]=_0x0a9e('0x7');util[_0x0a9e('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x5f41ea){this['message']=_0x5f41ea||_0x0a9e('0x8');this['name']='Not\x20Found';util[_0x0a9e('0x6')](APINotFoundError,APIError);};function getStatusCode(_0xf81284){switch(_0xf81284){case _0x0a9e('0x7'):return 0x190;case _0x0a9e('0x9'),_0x0a9e('0xa'):return 0x193;case _0x0a9e('0xb'):return 0x194;default:return 0x1f4;}}function handleError(_0x4a4c56){return function(_0x50dfb2){logger['error'](_0x50dfb2['stack']);var _0x273d4d=getStatusCode(_0x50dfb2[_0x0a9e('0x4')]);if(_0x50dfb2[_0x0a9e('0x4')])delete _0x50dfb2[_0x0a9e('0x4')];return _0x4a4c56[_0x0a9e('0xc')](_0x273d4d)[_0x0a9e('0xd')](_0x50dfb2);};}module['exports']={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 3b630a4..001da9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d5=['404','status','render','json'];(function(_0x4c5f1d,_0x413ee0){var _0x284216=function(_0x2589cb){while(--_0x2589cb){_0x4c5f1d['push'](_0x4c5f1d['shift']());}};_0x284216(++_0x413ee0);}(_0xb5d5,0x1c0));var _0x5b5d=function(_0x63e26a,_0x529ae2){_0x63e26a=_0x63e26a-0x0;var _0x241c4d=_0xb5d5[_0x63e26a];return _0x241c4d;};'use strict';module['exports'][0x194]=function pageNotFound(_0x2cea7e,_0x5375f7){var _0x184b62=_0x5b5d('0x0');var _0x2a3976=0x194;var _0x25c649={'status':_0x2a3976};_0x5375f7[_0x5b5d('0x1')](_0x25c649[_0x5b5d('0x1')]);_0x5375f7[_0x5b5d('0x2')](_0x184b62,{},function(_0x35b160,_0x27ca75){if(_0x35b160){return _0x5375f7['status'](_0x25c649['status'])[_0x5b5d('0x3')](_0x25c649);}_0x5375f7['send'](_0x27ca75);});};
\ No newline at end of file
+var _0xd20f=['json','send','status','render'];(function(_0xe4c521,_0x20a061){var _0x3cafa0=function(_0x25711a){while(--_0x25711a){_0xe4c521['push'](_0xe4c521['shift']());}};_0x3cafa0(++_0x20a061);}(_0xd20f,0x172));var _0xfd20=function(_0x4fa745,_0x25d32e){_0x4fa745=_0x4fa745-0x0;var _0x1243e0=_0xd20f[_0x4fa745];return _0x1243e0;};'use strict';module['exports'][0x194]=function pageNotFound(_0x1d2553,_0x2f5d3d){var _0x1e91cc='404';var _0x54e8ab=0x194;var _0x29ad21={'status':_0x54e8ab};_0x2f5d3d[_0xfd20('0x0')](_0x29ad21[_0xfd20('0x0')]);_0x2f5d3d[_0xfd20('0x1')](_0x1e91cc,{},function(_0x444b32,_0x8db5a8){if(_0x444b32){return _0x2f5d3d[_0xfd20('0x0')](_0x29ad21[_0xfd20('0x0')])[_0xfd20('0x2')](_0x29ad21);}_0x2f5d3d[_0xfd20('0x3')](_0x8db5a8);});};
\ No newline at end of file
diff --git a/server/migrations/2.6.14.js b/server/migrations/2.6.14.js
new file mode 100644 (file)
index 0000000..ceb719d
--- /dev/null
@@ -0,0 +1,172 @@
+'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 users
+      migration.query('ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;');
+      // END users
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function( /* queryInterface, Sequelize */ ) {
+    // var migration = new Migration(queryInterface);
+  },
+};
\ No newline at end of file
index 697bb35..63c4216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','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','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0xf2f332,_0x299fbf){var _0x56cce3=function(_0x5f37e0){while(--_0x5f37e0){_0xf2f332['push'](_0xf2f332['shift']());}};_0x56cce3(++_0x299fbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','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','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index e322964..b839b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb6a=['./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','/api/user-settings','./api/user-setting','./api/authLocal','/api/auth/google','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','./api/webbar','static','join','root','/www','/demo','/snippet','snippet','/plugins','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','path','setupLoggers','default','then','use','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','/api/mail/interactions','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','/api/cm/hopper_final','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','/api/openchannel/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer'];(function(_0x1b7860,_0x314b91){var _0x1be41b=function(_0x5aa88f){while(--_0x5aa88f){_0x1b7860['push'](_0x1b7860['shift']());}};_0x1be41b(++_0x314b91);}(_0xdb6a,0x13a));var _0xadb6=function(_0x1a13ef,_0x318598){_0x1a13ef=_0x1a13ef-0x0;var _0x48ad0f=_0xdb6a[_0x1a13ef];return _0x48ad0f;};'use strict';var path=require(_0xadb6('0x0'));var express=require('express');var errors=require('./errors');var config=require('./config/environment');var setupLoggers=require('./utils/client-side-logger')[_0xadb6('0x1')];var clientSideLogs=require('./api/client-side-logs');exports[_0xadb6('0x2')]=function(_0x4f4708){return setupLoggers(_0x4f4708)[_0xadb6('0x3')](function(){_0x4f4708[_0xadb6('0x4')]('/api/users',require('./api/user'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x5'),require(_0xadb6('0x6')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x7'),require(_0xadb6('0x8')));_0x4f4708[_0xadb6('0x4')]('/api/voice/extensions',require(_0xadb6('0x9')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xa'),require('./api/voiceMusicOnHold'));_0x4f4708[_0xadb6('0x4')]('/api/voice/queues',require(_0xadb6('0xb')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xc'),require('./api/voiceRecording'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xd'),require('./api/screenRecording'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xe'),require(_0xadb6('0xf')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x10'),require(_0xadb6('0x11')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x12'),require(_0xadb6('0x13')));_0x4f4708['use'](_0xadb6('0x14'),require(_0xadb6('0x15')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x16'),require(_0xadb6('0x17')));_0x4f4708[_0xadb6('0x4')]('/api/voice/queues/reports',require(_0xadb6('0x18')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x19'),require(_0xadb6('0x1a')));_0x4f4708[_0xadb6('0x4')]('/api/trunks',require(_0xadb6('0x1b')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x1c'),require(_0xadb6('0x1d')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x1e'),require(_0xadb6('0x1f')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x20'),require(_0xadb6('0x21')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x22'),require('./api/mailQueue'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x23'),require('./api/mailSubstatus'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x24'),require('./api/mailInteraction'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x25'),require('./api/mailMessage'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x26'),require(_0xadb6('0x27')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x28'),require(_0xadb6('0x29')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x2a'),require(_0xadb6('0x2b')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x2c'),require(_0xadb6('0x2d')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x2e'),require('./api/faxAccount'));_0x4f4708['use'](_0xadb6('0x2f'),require(_0xadb6('0x30')));_0x4f4708['use'](_0xadb6('0x31'),require(_0xadb6('0x32')));_0x4f4708['use'](_0xadb6('0x33'),require(_0xadb6('0x34')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x35'),require(_0xadb6('0x36')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x37'),require(_0xadb6('0x38')));_0x4f4708['use'](_0xadb6('0x39'),require(_0xadb6('0x3a')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x3b'),require(_0xadb6('0x3c')));_0x4f4708['use'](_0xadb6('0x3d'),require(_0xadb6('0x3e')));_0x4f4708[_0xadb6('0x4')]('/api/sms/messages',require(_0xadb6('0x3f')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x40'),require(_0xadb6('0x41')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x42'),require(_0xadb6('0x43')));_0x4f4708[_0xadb6('0x4')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x44'),require(_0xadb6('0x45')));_0x4f4708['use'](_0xadb6('0x46'),require(_0xadb6('0x47')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x48'),require(_0xadb6('0x49')));_0x4f4708[_0xadb6('0x4')]('/api/chat/websites',require(_0xadb6('0x4a')));_0x4f4708['use']('/api/openchannel/reports/queue',require(_0xadb6('0x4b')));_0x4f4708['use'](_0xadb6('0x4c'),require('./api/chatApplication'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x4d'),require('./api/chatInteraction'));_0x4f4708['use'](_0xadb6('0x4e'),require(_0xadb6('0x4f')));_0x4f4708['use'](_0xadb6('0x50'),require('./api/chatOfflineMessage'));_0x4f4708[_0xadb6('0x4')]('/api/chat/queues',require(_0xadb6('0x51')));_0x4f4708['use'](_0xadb6('0x52'),require('./api/chatGroup'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x53'),require(_0xadb6('0x54')));_0x4f4708['use'](_0xadb6('0x55'),require(_0xadb6('0x56')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x57'),require(_0xadb6('0x58')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x59'),require('./api/cmHopper'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x5a'),require('./api/cmHopperBlack'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x5b'),require('./api/cmHopperFinal'));_0x4f4708['use'](_0xadb6('0x5c'),require('./api/cmHopperHistory'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x5d'),require(_0xadb6('0x5e')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x5f'),require(_0xadb6('0x60')));_0x4f4708['use'](_0xadb6('0x61'),require(_0xadb6('0x62')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x63'),require(_0xadb6('0x64')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x65'),require(_0xadb6('0x66')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x67'),require(_0xadb6('0x68')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x69'),require(_0xadb6('0x6a')));_0x4f4708[_0xadb6('0x4')]('/api/pauses',require(_0xadb6('0x6b')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x6c'),require(_0xadb6('0x6d')));_0x4f4708[_0xadb6('0x4')]('/api/voiceQueuesLog',require(_0xadb6('0x6e')));_0x4f4708['use'](_0xadb6('0x6f'),require(_0xadb6('0x70')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x71'),require(_0xadb6('0x72')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x73'),require(_0xadb6('0x74')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x75'),require(_0xadb6('0x76')));_0x4f4708['use']('/api/cm_contact_has_items',require('./api/cmContactHasItem'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x77'),require(_0xadb6('0x78')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x79'),require('./api/template'));_0x4f4708['use']('/api/triggers',require(_0xadb6('0x7a')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x7b'),require(_0xadb6('0x7c')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x7d'),require(_0xadb6('0x7e')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x7f'),require('./api/integrationReport'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x80'),require(_0xadb6('0x81')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x82'),require(_0xadb6('0x83')));_0x4f4708['use'](_0xadb6('0x84'),require(_0xadb6('0x85')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x86'),require(_0xadb6('0x87')));_0x4f4708['use']('/api/analytics/field_reports',require(_0xadb6('0x88')));_0x4f4708[_0xadb6('0x4')]('/api/analytics/tree_reports',require(_0xadb6('0x89')));_0x4f4708['use']('/api/integrations/salesforce/accounts',require(_0xadb6('0x8a')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x8b'),require(_0xadb6('0x8c')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x8d'),require(_0xadb6('0x8e')));_0x4f4708['use'](_0xadb6('0x8f'),require('./api/intSugarcrmAccount'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x90'),require('./api/intSugarcrmConfiguration'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x91'),require(_0xadb6('0x92')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x93'),require(_0xadb6('0x94')));_0x4f4708['use'](_0xadb6('0x95'),require(_0xadb6('0x96')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x97'),require(_0xadb6('0x98')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x99'),require('./api/intZohoAccount'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x9a'),require(_0xadb6('0x9b')));_0x4f4708[_0xadb6('0x4')]('/api/integrations/zoho/fields',require(_0xadb6('0x9c')));_0x4f4708['use']('/api/integrations/zendesk/accounts',require('./api/intZendeskAccount'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x9d'),require(_0xadb6('0x9e')));_0x4f4708['use'](_0xadb6('0x9f'),require('./api/intZendeskField'));_0x4f4708['use'](_0xadb6('0xa0'),require('./api/intFreshdeskAccount'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xa1'),require(_0xadb6('0xa2')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xa3'),require(_0xadb6('0xa4')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xa5'),require(_0xadb6('0xa6')));_0x4f4708[_0xadb6('0x4')]('/api/integrations/vtiger/configurations',require(_0xadb6('0xa7')));_0x4f4708['use'](_0xadb6('0xa8'),require(_0xadb6('0xa9')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xaa'),require(_0xadb6('0xab')));_0x4f4708[_0xadb6('0x4')]('/api/integrations/servicenow/configurations',require(_0xadb6('0xac')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xad'),require(_0xadb6('0xae')));_0x4f4708['use']('/api/integrations/dynamics365/accounts',require(_0xadb6('0xaf')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xb0'),require(_0xadb6('0xb1')));_0x4f4708['use'](_0xadb6('0xb2'),require('./api/intDynamics365Field'));_0x4f4708['use'](_0xadb6('0xb3'),require(_0xadb6('0xb4')));_0x4f4708['use'](_0xadb6('0xb5'),require(_0xadb6('0xb6')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xb7'),require(_0xadb6('0xb8')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xb9'),require(_0xadb6('0xba')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xbb'),require(_0xadb6('0xbc')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xbd'),require(_0xadb6('0xbe')));_0x4f4708['use'](_0xadb6('0xbf'),require(_0xadb6('0xc0')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xc1'),require(_0xadb6('0xc2')));_0x4f4708['use'](_0xadb6('0xc3'),require('./api/jscriptySessionReport'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xc4'),require('./api/smsQueueReport'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xc5'),require(_0xadb6('0xc6')));_0x4f4708['use'](_0xadb6('0xc7'),require(_0xadb6('0xc8')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xc9'),require('./api/jscriptyProject'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xca'),require(_0xadb6('0xcb')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xcc'),require(_0xadb6('0xcd')));_0x4f4708['use'](_0xadb6('0xce'),require(_0xadb6('0xcf')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xd0'),require('./api/squareRecording'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xd1'),require(_0xadb6('0xd2')));_0x4f4708[_0xadb6('0x4')]('/api/teams',require('./api/team'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xd3'),require('./api/license'));_0x4f4708['use'](_0xadb6('0xd4'),require(_0xadb6('0xd5')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xd6'),require(_0xadb6('0xd7')));_0x4f4708[_0xadb6('0x4')]('/api/attachments',require(_0xadb6('0xd8')));_0x4f4708[_0xadb6('0x4')]('/api/plugins',require(_0xadb6('0xd9')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xda'),require(_0xadb6('0xdb')));_0x4f4708['use'](_0xadb6('0xdc'),require('./api/chatTransferReport'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xdd'),require('./api/faxTransferReport'));_0x4f4708['use'](_0xadb6('0xde'),require('./api/openchannelTransferReport'));_0x4f4708[_0xadb6('0x4')]('/api/sms/reports/transfer',require(_0xadb6('0xdf')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xe0'),require(_0xadb6('0xe1')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xe2'),require(_0xadb6('0xe3')));_0x4f4708[_0xadb6('0x4')]('/api/userProfiles',require(_0xadb6('0xe4')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xe5'),require(_0xadb6('0xe6')));_0x4f4708['use']('/api/userProfile/resources',require(_0xadb6('0xe7')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xe8'),require(_0xadb6('0xe9')));_0x4f4708[_0xadb6('0x4')]('/api/whatsapp/accounts',require(_0xadb6('0xea')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xeb'),require(_0xadb6('0xec')));_0x4f4708['use']('/api/whatsapp/interactions',require(_0xadb6('0xed')));_0x4f4708['use'](_0xadb6('0xee'),require('./api/whatsappMessage'));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xef'),require(_0xadb6('0xf0')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xf1'),require(_0xadb6('0xf2')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xf3'),require(_0xadb6('0xf4')));_0x4f4708['use'](_0xadb6('0xf5'),require(_0xadb6('0xf6')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xf7'),require('./api/realtime'));_0x4f4708['use'](_0xadb6('0xf8'),require(_0xadb6('0xf9')));_0x4f4708['use']('/api/auth/local',require(_0xadb6('0xfa')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0xfb'),require('./api/authGoogle'));_0x4f4708['use'](_0xadb6('0xfc'),require(_0xadb6('0xfd')));_0x4f4708['use'](_0xadb6('0xfe'),require(_0xadb6('0xff')));_0x4f4708['use'](_0xadb6('0x100'),require(_0xadb6('0x101')));_0x4f4708[_0xadb6('0x4')]('/api/version',require(_0xadb6('0x102')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x103'),require(_0xadb6('0x104')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x105'),require(_0xadb6('0x106')));_0x4f4708[_0xadb6('0x4')]('/api/webbar',require(_0xadb6('0x107')));_0x4f4708[_0xadb6('0x4')]('/api/logs',clientSideLogs);_0x4f4708['use']('/apidoc',express[_0xadb6('0x108')](path[_0xadb6('0x109')](config[_0xadb6('0x10a')],'/apidoc')));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x10b'),express['static'](path[_0xadb6('0x109')](config[_0xadb6('0x10a')],_0xadb6('0x10b'))));_0x4f4708[_0xadb6('0x4')](_0xadb6('0x10c'),express[_0xadb6('0x108')](path[_0xadb6('0x109')](config[_0xadb6('0x10a')],_0xadb6('0x10c'))));_0x4f4708['use'](_0xadb6('0x10d'),express[_0xadb6('0x108')](path['join'](config[_0xadb6('0x10a')],_0xadb6('0x10e'),'3.1.0')));_0x4f4708['use'](_0xadb6('0x10f'),express[_0xadb6('0x108')](path['join'](config[_0xadb6('0x10a')],_0xadb6('0x110'))));_0x4f4708['route'](_0xadb6('0x111'))['get'](errors[0x194]);_0x4f4708['route']('/*')[_0xadb6('0x112')](function(_0x2c74f6,_0x234e30){_0x234e30['sendFile'](path[_0xadb6('0x113')](_0x4f4708[_0xadb6('0x112')](_0xadb6('0x114'))+_0xadb6('0x115')));});return _0x4f4708;});};
\ No newline at end of file
+var _0xea1f=['./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','./api/interval','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','./api/sound','/api/tags','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','/api/cm_hopper_additional_phones','/api/templates','./api/template','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskConfiguration','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','./api/squareProject','./api/squareRecording','./api/team','/api/license','/api/campaigns','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','/api/logs','/apidoc','static','join','root','/www','/demo','snippet','3.1.0','/plugins','route','get','/index.html','path','./errors','./config/environment','./utils/client-side-logger','./api/client-side-logs','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/extensions','./api/voiceExtension','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','./api/voiceQueueReport','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','/api/mail/queues','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper'];(function(_0x2a478e,_0x404251){var _0x51322c=function(_0x2e547e){while(--_0x2e547e){_0x2a478e['push'](_0x2a478e['shift']());}};_0x51322c(++_0x404251);}(_0xea1f,0x1ce));var _0xfea1=function(_0x176213,_0x5d59c8){_0x176213=_0x176213-0x0;var _0x2b290c=_0xea1f[_0x176213];return _0x2b290c;};'use strict';var path=require(_0xfea1('0x0'));var express=require('express');var errors=require(_0xfea1('0x1'));var config=require(_0xfea1('0x2'));var setupLoggers=require(_0xfea1('0x3'))['setupLoggers'];var clientSideLogs=require(_0xfea1('0x4'));exports['default']=function(_0x14c219){return setupLoggers(_0x14c219)[_0xfea1('0x5')](function(){_0x14c219[_0xfea1('0x6')](_0xfea1('0x7'),require(_0xfea1('0x8')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x9'),require(_0xfea1('0xa')));_0x14c219[_0xfea1('0x6')]('/api/voice/contexts',require('./api/voiceContext'));_0x14c219['use'](_0xfea1('0xb'),require(_0xfea1('0xc')));_0x14c219[_0xfea1('0x6')]('/api/voice/mohs',require('./api/voiceMusicOnHold'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd'),require(_0xfea1('0xe')));_0x14c219['use'](_0xfea1('0xf'),require(_0xfea1('0x10')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x11'),require(_0xfea1('0x12')));_0x14c219[_0xfea1('0x6')]('/api/voice/mails',require(_0xfea1('0x13')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x14'),require(_0xfea1('0x15')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x16'),require(_0xfea1('0x17')));_0x14c219['use'](_0xfea1('0x18'),require(_0xfea1('0x19')));_0x14c219['use'](_0xfea1('0x1a'),require('./api/voiceAgentReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x1b'),require(_0xfea1('0x1c')));_0x14c219['use']('/api/members/reports',require(_0xfea1('0x1d')));_0x14c219[_0xfea1('0x6')]('/api/trunks',require(_0xfea1('0x1e')));_0x14c219['use'](_0xfea1('0x1f'),require(_0xfea1('0x20')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x21'),require('./api/mailServerOut'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x22'),require(_0xfea1('0x23')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x24'),require('./api/mailQueue'));_0x14c219['use'](_0xfea1('0x25'),require(_0xfea1('0x26')));_0x14c219[_0xfea1('0x6')]('/api/mail/interactions',require(_0xfea1('0x27')));_0x14c219[_0xfea1('0x6')]('/api/mail/messages',require(_0xfea1('0x28')));_0x14c219[_0xfea1('0x6')]('/api/mail/applications',require(_0xfea1('0x29')));_0x14c219['use'](_0xfea1('0x2a'),require(_0xfea1('0x2b')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x2c'),require(_0xfea1('0x2d')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x2e'),require(_0xfea1('0x2f')));_0x14c219['use'](_0xfea1('0x30'),require('./api/faxAccount'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x31'),require(_0xfea1('0x32')));_0x14c219['use'](_0xfea1('0x33'),require('./api/faxInteraction'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x34'),require(_0xfea1('0x35')));_0x14c219['use'](_0xfea1('0x36'),require('./api/faxQueue'));_0x14c219['use']('/api/fax/reports/queue',require('./api/faxQueueReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x37'),require('./api/smsAccount'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x38'),require(_0xfea1('0x39')));_0x14c219['use'](_0xfea1('0x3a'),require(_0xfea1('0x3b')));_0x14c219[_0xfea1('0x6')]('/api/sms/messages',require(_0xfea1('0x3c')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x3d'),require(_0xfea1('0x3e')));_0x14c219[_0xfea1('0x6')]('/api/openchannel/accounts',require(_0xfea1('0x3f')));_0x14c219[_0xfea1('0x6')]('/api/openchannel/applications',require(_0xfea1('0x40')));_0x14c219['use'](_0xfea1('0x41'),require(_0xfea1('0x42')));_0x14c219['use'](_0xfea1('0x43'),require(_0xfea1('0x44')));_0x14c219['use'](_0xfea1('0x45'),require(_0xfea1('0x46')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x47'),require(_0xfea1('0x48')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x49'),require(_0xfea1('0x4a')));_0x14c219['use'](_0xfea1('0x4b'),require('./api/chatApplication'));_0x14c219[_0xfea1('0x6')]('/api/chat/interactions',require(_0xfea1('0x4c')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x4d'),require('./api/chatMessage'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x4e'),require(_0xfea1('0x4f')));_0x14c219['use'](_0xfea1('0x50'),require(_0xfea1('0x51')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x52'),require('./api/chatGroup'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x53'),require('./api/chatProactiveAction'));_0x14c219[_0xfea1('0x6')]('/api/cm/companies',require(_0xfea1('0x54')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x55'),require(_0xfea1('0x56')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x57'),require(_0xfea1('0x58')));_0x14c219['use'](_0xfea1('0x59'),require(_0xfea1('0x5a')));_0x14c219[_0xfea1('0x6')]('/api/cm/hopper_final',require(_0xfea1('0x5b')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x5c'),require(_0xfea1('0x5d')));_0x14c219['use'](_0xfea1('0x5e'),require(_0xfea1('0x5f')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x60'),require(_0xfea1('0x61')));_0x14c219[_0xfea1('0x6')]('/api/automations',require(_0xfea1('0x62')));_0x14c219['use'](_0xfea1('0x63'),require(_0xfea1('0x64')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x65'),require(_0xfea1('0x66')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x67'),require(_0xfea1('0x68')));_0x14c219['use']('/api/intervals',require(_0xfea1('0x69')));_0x14c219[_0xfea1('0x6')]('/api/pauses',require(_0xfea1('0x6a')));_0x14c219[_0xfea1('0x6')]('/api/cdr',require(_0xfea1('0x6b')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x6c'),require(_0xfea1('0x6d')));_0x14c219[_0xfea1('0x6')]('/api/schedules',require(_0xfea1('0x6e')));_0x14c219[_0xfea1('0x6')]('/api/sounds',require(_0xfea1('0x6f')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x70'),require('./api/tag'));_0x14c219['use'](_0xfea1('0x71'),require(_0xfea1('0x72')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x73'),require('./api/cmContactHasItem'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x74'),require('./api/cmHopperAdditionalPhone'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x75'),require(_0xfea1('0x76')));_0x14c219[_0xfea1('0x6')]('/api/triggers',require(_0xfea1('0x77')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x78'),require(_0xfea1('0x79')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x7a'),require(_0xfea1('0x7b')));_0x14c219[_0xfea1('0x6')]('/api/integrations/reports',require(_0xfea1('0x7c')));_0x14c219['use'](_0xfea1('0x7d'),require('./api/analyticCustomReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x7e'),require('./api/analyticDefaultReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x7f'),require(_0xfea1('0x80')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x81'),require(_0xfea1('0x82')));_0x14c219[_0xfea1('0x6')]('/api/analytics/field_reports',require(_0xfea1('0x83')));_0x14c219[_0xfea1('0x6')]('/api/analytics/tree_reports',require(_0xfea1('0x84')));_0x14c219['use'](_0xfea1('0x85'),require(_0xfea1('0x86')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x87'),require('./api/intSalesforceConfiguration'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x88'),require(_0xfea1('0x89')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x8a'),require(_0xfea1('0x8b')));_0x14c219['use'](_0xfea1('0x8c'),require(_0xfea1('0x8d')));_0x14c219[_0xfea1('0x6')]('/api/integrations/sugarcrm/fields',require(_0xfea1('0x8e')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x8f'),require('./api/intDeskAccount'));_0x14c219[_0xfea1('0x6')]('/api/integrations/desk/configurations',require(_0xfea1('0x90')));_0x14c219[_0xfea1('0x6')]('/api/integrations/desk/fields',require(_0xfea1('0x91')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x92'),require(_0xfea1('0x93')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x94'),require('./api/intZohoConfiguration'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x95'),require('./api/intZohoField'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x96'),require(_0xfea1('0x97')));_0x14c219[_0xfea1('0x6')]('/api/integrations/zendesk/configurations',require(_0xfea1('0x98')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x99'),require(_0xfea1('0x9a')));_0x14c219[_0xfea1('0x6')]('/api/integrations/freshdesk/accounts',require(_0xfea1('0x9b')));_0x14c219[_0xfea1('0x6')]('/api/integrations/freshdesk/configurations',require(_0xfea1('0x9c')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x9d'),require(_0xfea1('0x9e')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x9f'),require(_0xfea1('0xa0')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xa1'),require(_0xfea1('0xa2')));_0x14c219['use'](_0xfea1('0xa3'),require('./api/intVtigerField'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xa4'),require(_0xfea1('0xa5')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xa6'),require(_0xfea1('0xa7')));_0x14c219[_0xfea1('0x6')]('/api/integrations/servicenow/fields',require(_0xfea1('0xa8')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xa9'),require(_0xfea1('0xaa')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xab'),require(_0xfea1('0xac')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xad'),require('./api/intDynamics365Field'));_0x14c219['use'](_0xfea1('0xae'),require(_0xfea1('0xaf')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xb0'),require(_0xfea1('0xb1')));_0x14c219['use'](_0xfea1('0xb2'),require('./api/intFreshsalesField'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xb3'),require(_0xfea1('0xb4')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xb5'),require('./api/chatQueueReport'));_0x14c219['use'](_0xfea1('0xb6'),require(_0xfea1('0xb7')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xb8'),require(_0xfea1('0xb9')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xba'),require(_0xfea1('0xbb')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xbc'),require(_0xfea1('0xbd')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xbe'),require(_0xfea1('0xbf')));_0x14c219['use'](_0xfea1('0xc0'),require(_0xfea1('0xc1')));_0x14c219['use'](_0xfea1('0xc2'),require(_0xfea1('0xc3')));_0x14c219['use'](_0xfea1('0xc4'),require(_0xfea1('0xc5')));_0x14c219['use'](_0xfea1('0xc6'),require(_0xfea1('0xc7')));_0x14c219[_0xfea1('0x6')]('/api/square/odbc',require(_0xfea1('0xc8')));_0x14c219[_0xfea1('0x6')]('/api/square/projects',require(_0xfea1('0xc9')));_0x14c219[_0xfea1('0x6')]('/api/square/recordings',require(_0xfea1('0xca')));_0x14c219[_0xfea1('0x6')]('/api/square/messages',require('./api/squareMessage'));_0x14c219[_0xfea1('0x6')]('/api/teams',require(_0xfea1('0xcb')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xcc'),require('./api/license'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xcd'),require('./api/campaign'));_0x14c219[_0xfea1('0x6')]('/api/migrations',require(_0xfea1('0xce')));_0x14c219['use'](_0xfea1('0xcf'),require(_0xfea1('0xd0')));_0x14c219[_0xfea1('0x6')]('/api/plugins',require(_0xfea1('0xd1')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd2'),require(_0xfea1('0xd3')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd4'),require('./api/chatTransferReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd5'),require(_0xfea1('0xd6')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd7'),require('./api/openchannelTransferReport'));_0x14c219[_0xfea1('0x6')](_0xfea1('0xd8'),require(_0xfea1('0xd9')));_0x14c219['use'](_0xfea1('0xda'),require(_0xfea1('0xdb')));_0x14c219['use'](_0xfea1('0xdc'),require(_0xfea1('0xdd')));_0x14c219['use'](_0xfea1('0xde'),require(_0xfea1('0xdf')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xe0'),require(_0xfea1('0xe1')));_0x14c219[_0xfea1('0x6')]('/api/userProfile/resources',require(_0xfea1('0xe2')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xe3'),require(_0xfea1('0xe4')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xe5'),require(_0xfea1('0xe6')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xe7'),require(_0xfea1('0xe8')));_0x14c219[_0xfea1('0x6')]('/api/whatsapp/interactions',require(_0xfea1('0xe9')));_0x14c219['use'](_0xfea1('0xea'),require(_0xfea1('0xeb')));_0x14c219[_0xfea1('0x6')]('/api/whatsapp/reports/queue',require(_0xfea1('0xec')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xed'),require(_0xfea1('0xee')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xef'),require(_0xfea1('0xf0')));_0x14c219['use'](_0xfea1('0xf1'),require(_0xfea1('0xf2')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xf3'),require(_0xfea1('0xf4')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xf5'),require(_0xfea1('0xf6')));_0x14c219[_0xfea1('0x6')]('/api/auth/local',require(_0xfea1('0xf7')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xf8'),require(_0xfea1('0xf9')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xfa'),require(_0xfea1('0xfb')));_0x14c219['use'](_0xfea1('0xfc'),require(_0xfea1('0xfd')));_0x14c219[_0xfea1('0x6')]('/api/rpc',require(_0xfea1('0xfe')));_0x14c219[_0xfea1('0x6')](_0xfea1('0xff'),require(_0xfea1('0x100')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x101'),require(_0xfea1('0x102')));_0x14c219['use'](_0xfea1('0x103'),require(_0xfea1('0x104')));_0x14c219[_0xfea1('0x6')](_0xfea1('0x105'),require('./api/webbar'));_0x14c219[_0xfea1('0x6')](_0xfea1('0x106'),clientSideLogs);_0x14c219[_0xfea1('0x6')](_0xfea1('0x107'),express[_0xfea1('0x108')](path[_0xfea1('0x109')](config[_0xfea1('0x10a')],_0xfea1('0x107'))));_0x14c219['use']('/www',express[_0xfea1('0x108')](path[_0xfea1('0x109')](config[_0xfea1('0x10a')],_0xfea1('0x10b'))));_0x14c219[_0xfea1('0x6')](_0xfea1('0x10c'),express[_0xfea1('0x108')](path[_0xfea1('0x109')](config['root'],_0xfea1('0x10c'))));_0x14c219['use']('/snippet',express['static'](path[_0xfea1('0x109')](config['root'],_0xfea1('0x10d'),_0xfea1('0x10e'))));_0x14c219[_0xfea1('0x6')](_0xfea1('0x10f'),express['static'](path['join'](config[_0xfea1('0x10a')],'/server/files/plugins')));_0x14c219[_0xfea1('0x110')]('/:url(api|auth|components|app|bower_components|assets)/*')[_0xfea1('0x111')](errors[0x194]);_0x14c219[_0xfea1('0x110')]('/*')[_0xfea1('0x111')](function(_0x2a229a,_0xfdb54f){_0xfdb54f['sendFile'](path['resolve'](_0x14c219[_0xfea1('0x111')]('appPath')+_0xfea1('0x112')));});return _0x14c219;});};
\ No newline at end of file
index 5cb3d62..ddb4b4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553a=['../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','lodash','listen','../api/user/user.rpc','merge','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.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/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.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/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc'];(function(_0xe99fca,_0x1517d6){var _0x1a3045=function(_0x103152){while(--_0x103152){_0xe99fca['push'](_0xe99fca['shift']());}};_0x1a3045(++_0x1517d6);}(_0x553a,0x192));var _0xa553=function(_0x2a7812,_0x1ce83a){_0x2a7812=_0x2a7812-0x0;var _0x3e1342=_0x553a[_0x2a7812];return _0x3e1342;};'use strict';var jayson=require('jayson/promise');var _=require(_0xa553('0x0'));var config=require('../config/environment');exports[_0xa553('0x1')]=function(){return new Promise(function(_0x1f4982,_0x1776c6){var _0x58654a={};_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x2')));_0x58654a=_['merge'](_0x58654a,require('../api/voiceExtension/voiceExtension.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/voiceQueue/voiceQueue.rpc'));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x4')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x5')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x6')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x7')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x8')));_0x58654a=_['merge'](_0x58654a,require('../api/memberReport/memberReport.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/trunk/trunk.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x9')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0xa')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/mailAccount/mailAccount.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0xb')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/mailInteraction/mailInteraction.rpc'));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0xc')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0xd')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/faxAccount/faxAccount.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/faxApplication/faxApplication.rpc'));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0xe')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0xf')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x10')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x11')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/smsAccount/smsAccount.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x12')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x13')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x14')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x15')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x16')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x17')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/chatMessage/chatMessage.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x18')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/cmContact/cmContact.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x19')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1a')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1b')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1c')));_0x58654a=_['merge'](_0x58654a,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1d')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1e')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x1f')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x20')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x21')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x22')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x23')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x24')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x25')));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x26')));_0x58654a=_['merge'](_0x58654a,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x58654a=_['merge'](_0x58654a,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x27')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x28')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x29')));_0x58654a=_['merge'](_0x58654a,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x2a')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x2b')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x2c')));_0x58654a=_['merge'](_0x58654a,require('../api/squareOdbc/squareOdbc.rpc'));_0x58654a=_[_0xa553('0x3')](_0x58654a,require('../api/squareProject/squareProject.rpc'));_0x58654a=_['merge'](_0x58654a,require(_0xa553('0x2d')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x2e')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x2f')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x30')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x31')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x32')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x33')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x34')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x35')));_0x58654a=_[_0xa553('0x3')](_0x58654a,require(_0xa553('0x36')));var _0x13800e=jayson[_0xa553('0x37')](_0x58654a)[_0xa553('0x38')]();var _0x558a33=config[_0xa553('0x39')][_0xa553('0x3a')]||config[_0xa553('0x3a')]+0x1;var _0x16ed6c=config[_0xa553('0x39')]['ip']||_0xa553('0x3b');_0x13800e['on']('error',function(_0x429653){return _0x1776c6(_0x429653);});_0x13800e['listen'](_0x558a33,_0x16ed6c,function(){console[_0xa553('0x3c')](_0xa553('0x3d'),_0x16ed6c,_0x558a33);require(_0xa553('0x3e'))[_0xa553('0x3f')]();return _0x1f4982(_0xa553('0x40')+_0x16ed6c+':'+_0x558a33);});});};
\ No newline at end of file
+var _0xc918=['../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','lodash','listen','merge','../api/voiceQueue/voiceQueue.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc'];(function(_0x485195,_0x4fde33){var _0x744caf=function(_0x4e6b74){while(--_0x4e6b74){_0x485195['push'](_0x485195['shift']());}};_0x744caf(++_0x4fde33);}(_0xc918,0xb9));var _0x8c91=function(_0x982b9,_0x25d03e){_0x982b9=_0x982b9-0x0;var _0xdc4c90=_0xc918[_0x982b9];return _0xdc4c90;};'use strict';var jayson=require(_0x8c91('0x0'));var _=require(_0x8c91('0x1'));var config=require('../config/environment');exports[_0x8c91('0x2')]=function(){return new Promise(function(_0x5b204b,_0x9f4503){var _0x41f065={};_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/user/user.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/voiceExtension/voiceExtension.rpc'));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x4')));_0x41f065=_['merge'](_0x41f065,require('../api/voiceRecording/voiceRecording.rpc'));_0x41f065=_['merge'](_0x41f065,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x41f065=_['merge'](_0x41f065,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x5')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x6')));_0x41f065=_['merge'](_0x41f065,require('../api/memberReport/memberReport.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x7')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x41f065=_['merge'](_0x41f065,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x8')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x9')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0xa')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0xb')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0xc')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0xd')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0xe')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0xf')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x10')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x11')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x12')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x13')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x14')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x15')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x16')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x17')));_0x41f065=_['merge'](_0x41f065,require('../api/smsQueue/smsQueue.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x18')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x19')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1a')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1b')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/chatInteraction/chatInteraction.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1c')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/chatQueue/chatQueue.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1d')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1e')));_0x41f065=_['merge'](_0x41f065,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x41f065=_['merge'](_0x41f065,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x1f')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x20')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/pause/pause.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x21')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x22')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x23')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x24')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x25')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x26')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x27')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x28')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x29')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x2a')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x2b')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x2c')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x2d')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x2e')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x2f')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x30')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x31')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x32')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x33')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x34')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/squareRecording/squareRecording.rpc'));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/squareMessage/squareMessage.rpc'));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x35')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x36')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x37')));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x38')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x39')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x41f065=_['merge'](_0x41f065,require(_0x8c91('0x3a')));_0x41f065=_[_0x8c91('0x3')](_0x41f065,require(_0x8c91('0x3b')));var _0x1ecbd6=jayson[_0x8c91('0x3c')](_0x41f065)[_0x8c91('0x3d')]();var _0x4c88ba=config[_0x8c91('0x3e')][_0x8c91('0x3f')]||config['port']+0x1;var _0x30d742=config['rpc']['ip']||_0x8c91('0x40');_0x1ecbd6['on'](_0x8c91('0x41'),function(_0xc1c556){return _0x9f4503(_0xc1c556);});_0x1ecbd6['listen'](_0x4c88ba,_0x30d742,function(){console[_0x8c91('0x42')](_0x8c91('0x43'),_0x30d742,_0x4c88ba);require(_0x8c91('0x44'))[_0x8c91('0x45')]();return _0x5b204b(_0x8c91('0x46')+_0x30d742+':'+_0x4c88ba);});});};
\ No newline at end of file
index 71b842b..44a0ef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea7e=['sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','setContext','noop','GOTO\x20%s\x20%s\x20%s','getVariable','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','lodash','events','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','result=','indexOf','substr','startsWith','length','match','error','E_AGI_SOCKET_ERROR','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','sendRequest','prototype','answer','ANSWER','getData','beep','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setExtension','SET\x20EXTENSION\x20%s','setPriority','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','sayDigits','SAY\x20DIGITS\x20%s\x20%s'];(function(_0x1c9283,_0x2cb620){var _0x152bbf=function(_0x99769e){while(--_0x99769e){_0x1c9283['push'](_0x1c9283['shift']());}};_0x152bbf(++_0x2cb620);}(_0xea7e,0x143));var _0xeea7=function(_0x2c54a1,_0x3f3e14){_0x2c54a1=_0x2c54a1-0x0;var _0x3a589f=_0xea7e[_0x2c54a1];return _0x3a589f;};'use strict';var util=require('util');var _=require(_0xeea7('0x0'));var EventEmitter=require(_0xeea7('0x1'))['EventEmitter'];var AGIReply=require(_0xeea7('0x2'));var AGIError=require(_0xeea7('0x3'));function AGIChannel(_0x22f597){var _0x5bd2fa=this,_0x27a941=new AGIReply(),_0x178559=![],_0xaa8af4={};EventEmitter[_0xeea7('0x4')](_0x5bd2fa);_0x22f597[_0xeea7('0x5')](_0xeea7('0x6'));_0x22f597[_0xeea7('0x7')](0x8*0x3c*0x3c*0x3e8);_0x27a941[_0xeea7('0x5')](_0xeea7('0x6'));_0x27a941['on'](_0xeea7('0x8'),function(_0x18ce7f){for(var _0x54b91f in _0x18ce7f){_0x5bd2fa[_0x54b91f]=_0x18ce7f[_0x54b91f];}_0x5bd2fa[_0xeea7('0x9')](_0xeea7('0xa'));});_0x27a941['on'](_0xeea7('0xb'),function(_0x58d38d){if(_0x58d38d[_0xeea7('0xc')]()==_0xeea7('0xd')){_0x5bd2fa['emit'](_0xeea7('0xd'));return;}if(_0x58d38d[_0xeea7('0xe')](0x0,0xb)==_0xeea7('0xf')){_0x178559=!![];}if(_0x178559){_0xaa8af4['rx']+=_0x58d38d+'\x0a';if(_0x58d38d[_0xeea7('0x10')](_0xeea7('0x11'))!=-0x1){_0x178559=![];}}else{_0xaa8af4['rx']=_0x58d38d;}if(_0x178559){return;}if(typeof _0xaa8af4['cb']==_0xeea7('0x12')){var _0x1ad01b=_0xaa8af4['rx']['substring'](0x0,0x3),_0x4c82b8=null,_0x529f84=null;_0x1ad01b=parseInt(_0x1ad01b);if(isNaN(_0x1ad01b)){_0xaa8af4['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xeea7('0x13')});return;}if(_0x1ad01b!=0xc8){_0xaa8af4['cb'](null,{'code':_0x1ad01b,'result':-0x1,'extra':'KO'});return;}_0x4c82b8=_0xaa8af4['rx'][_0xeea7('0xe')](0x4)['replace'](_0xeea7('0x14'),'');if(_0x4c82b8[_0xeea7('0x15')]('\x20')!=-0x1){_0x4c82b8=_0x4c82b8[_0xeea7('0x16')](0x0,_0x4c82b8['indexOf']('\x20'));}if(_[_0xeea7('0x17')](_0x4c82b8,'-1')){_0x4c82b8=parseInt(_0x4c82b8);}_0x529f84=_0xaa8af4['rx']['split']('\x20');if(_0x529f84[_0xeea7('0x18')]==0x3){_0x529f84=_0x529f84[0x2]['substring'](0x1,_0x529f84[0x2]['length']-0x1);}else if(_0x529f84[_0xeea7('0x18')]>0x3){var _0x451d1e=/\((.+)\)/;var _0x468c62=_0xaa8af4['rx'][_0xeea7('0x19')](_0x451d1e);if(_0x468c62){_0x529f84=_0x468c62[0x1];}else{_0x529f84=null;}}else{_0x529f84=null;}_0xaa8af4['cb'](null,{'code':_0x1ad01b,'result':_0x4c82b8,'extra':_0x529f84});}});_0x22f597['on'](_0xeea7('0x1a'),function(_0xdefce6){_0x5bd2fa[_0xeea7('0x9')]('error',new AGIError(_0xeea7('0x1b'),_0xdefce6['code']));});_0x22f597['on'](_0xeea7('0x1c'),function(){_0x5bd2fa['emit'](_0xeea7('0x1c'),new AGIError('E_AGI_SOCKET_CLOSE'));});_0x22f597['on'](_0xeea7('0x1d'),function(){_0x5bd2fa['emit'](_0xeea7('0x1d'),new AGIError(_0xeea7('0x1e')));_0x22f597[_0xeea7('0x1f')]();});_0x22f597[_0xeea7('0x20')](_0x27a941);this[_0xeea7('0x21')]=function(_0xc5f120,_0x11b9eb){var _0xc5f120=_0xc5f120||'',_0x11b9eb=typeof _0x11b9eb=='function'?_0x11b9eb:new Function();_0xaa8af4={'tx':_0xc5f120,'rx':'','cb':_0x11b9eb};_0x22f597[_0xeea7('0x22')](_0xc5f120+'\x0a');},this[_0xeea7('0x1c')]=function(){_0x22f597['destroy']();};}util[_0xeea7('0x23')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xeea7('0x24')]=function(_0x89c78c){return this[_0xeea7('0x21')]['sync'](this,_0x89c78c);};AGIChannel[_0xeea7('0x25')][_0xeea7('0x26')]=function(){return this[_0xeea7('0x24')](_0xeea7('0x27'));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x28')]=function(_0x2edb9e,_0x2354c8,_0x279aa0){_0x2edb9e=_0x2edb9e===undefined?_0xeea7('0x29'):_0x2edb9e;_0x2354c8=_0x2354c8===undefined?'5':_0x2354c8;_0x279aa0=_0x279aa0===undefined?'1':_0x279aa0;return this[_0xeea7('0x24')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x2edb9e,_0x2354c8*0x3e8,_0x279aa0));};AGIChannel[_0xeea7('0x25')]['noop']=function(_0x2495fd){_0x2495fd=_0x2495fd||_0xeea7('0x2a');return this['sendRequest'](util[_0xeea7('0x2b')](_0xeea7('0x2c'),_0x2495fd));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x2d')]=function(_0x591566,_0x4164b8){if(_[_0xeea7('0x2e')](_0x4164b8)){return this[_0xeea7('0x24')](util['format'](_0xeea7('0x2f'),_0x591566,_0x4164b8[_0xeea7('0x30')](',')));}return this['sendRequest'](util[_0xeea7('0x2b')]('EXEC\x20%s\x20%s',_0x591566,_0x4164b8));};AGIChannel[_0xeea7('0x25')]['setContext']=function(_0x1b4923){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')]('SET\x20CONTEXT\x20%s',_0x1b4923));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x31')]=function(_0x506c07){return this[_0xeea7('0x24')](util['format'](_0xeea7('0x32'),_0x506c07));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x33')]=function(_0x249b47){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')]('SET\x20PRIORITY\x20%s',_0x249b47));};AGIChannel[_0xeea7('0x25')][_0xeea7('0xd')]=function(){return this[_0xeea7('0x24')](_0xeea7('0x34'));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x35')]=function(_0x215d54,_0x40fb43){var _0x5076b5=_[_0xeea7('0x36')](_0x40fb43)||_[_0xeea7('0x37')](_0x40fb43)?_0x40fb43[_0xeea7('0x38')]():_0x40fb43;return this[_0xeea7('0x24')](util[_0xeea7('0x2b')](_0xeea7('0x39'),_0x215d54,_0x5076b5?_0x5076b5['toString']()[_0xeea7('0x3a')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xeea7('0x3b')]=function(_0x3a5715,_0x66faaf){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')]('SAY\x20NUMBER\x20%s\x20%s',_0x3a5715,_0x66faaf));};AGIChannel['prototype'][_0xeea7('0x3c')]=function(_0xbc664,_0x42effe){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')](_0xeea7('0x3d'),_0xbc664,_0x42effe));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x3e')]=function(_0x21f9d2,_0x4110eb){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')](_0xeea7('0x3f'),_0x21f9d2,_0x4110eb));};AGIChannel['prototype']['continueAt']=function(_0x25ef6a,_0x267888,_0x42a117){_0x267888=_0x267888||this['extension'];_0x42a117=_0x42a117||0x1;this[_0xeea7('0x40')](_0x25ef6a);this[_0xeea7('0x31')](_0x267888);this[_0xeea7('0x33')](_0x42a117);return this[_0xeea7('0x41')](util[_0xeea7('0x2b')](_0xeea7('0x42'),_0x25ef6a,_0x267888,_0x42a117));};AGIChannel[_0xeea7('0x25')][_0xeea7('0x43')]=function(_0x23b14e){return this[_0xeea7('0x24')](util[_0xeea7('0x2b')]('GET\x20VARIABLE\x20\x22%s\x22',_0x23b14e));};AGIChannel[_0xeea7('0x25')]['recordFile']=function(_0x5c0efa,_0xecc139,_0x5cb157,_0xfa2b90,_0x47ed80,_0x147373){_0xecc139=_0xecc139||_0xeea7('0x44');_0x5cb157=_0x5cb157||'';_0xfa2b90=_0xfa2b90===undefined?-0x1:_0xfa2b90==='-1'?-0x1:_0xfa2b90*0x3e8;_0x47ed80=_0x47ed80===undefined?'':'s='+_0x47ed80;_0x147373=_0x147373?'BEEP':'';return this['sendRequest'](util[_0xeea7('0x2b')](_0xeea7('0x45'),_0x5c0efa,_0xecc139,_0x5cb157,_0xfa2b90,_0x147373,_0x47ed80));};AGIChannel['prototype'][_0xeea7('0x46')]=function(_0x36fa3e,_0x460572){_0x460572=_0x460572||'';return this[_0xeea7('0x24')](util[_0xeea7('0x2b')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x36fa3e,_0x460572));};AGIChannel['prototype']['agi']=function(_0xb67195){return this[_0xeea7('0x2d')](_0xeea7('0x47'),_0xb67195);};AGIChannel['prototype'][_0xeea7('0x48')]=function(_0x24cb20){return this[_0xeea7('0x2d')](_0xeea7('0x49'),_0x24cb20);};AGIChannel['prototype'][_0xeea7('0x1a')]=function(_0x20d3a0,_0x429a66){this['noop'](util[_0xeea7('0x2b')](_0xeea7('0x4a'),_0x20d3a0['id'],_0x20d3a0[_0xeea7('0x4b')],_0x429a66));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xeea7('0x4c')]=AGIChannel;
\ No newline at end of file
+var _0x3be6=['toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','sayDigits','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','extension','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','EventEmitter','./reply','./error','setEncoding','utf8','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','function','replace','result=','substr','indexOf','startsWith','length','match','error','code','close','E_AGI_SOCKET_CLOSE','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber'];(function(_0xeec781,_0xe1f5f4){var _0x1e1efc=function(_0x25839c){while(--_0x25839c){_0xeec781['push'](_0xeec781['shift']());}};_0x1e1efc(++_0xe1f5f4);}(_0x3be6,0x13a));var _0x63be=function(_0x108db1,_0x89896d){_0x108db1=_0x108db1-0x0;var _0x16848d=_0x3be6[_0x108db1];return _0x16848d;};'use strict';var util=require(_0x63be('0x0'));var _=require(_0x63be('0x1'));var EventEmitter=require('events')[_0x63be('0x2')];var AGIReply=require(_0x63be('0x3'));var AGIError=require(_0x63be('0x4'));function AGIChannel(_0x1871e9){var _0x46c71b=this,_0x16e9eb=new AGIReply(),_0x16b348=![],_0x43f34a={};EventEmitter['call'](_0x46c71b);_0x1871e9[_0x63be('0x5')](_0x63be('0x6'));_0x1871e9['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x16e9eb[_0x63be('0x5')](_0x63be('0x6'));_0x16e9eb['on']('headers',function(_0x1b65bb){for(var _0x3a257a in _0x1b65bb){_0x46c71b[_0x3a257a]=_0x1b65bb[_0x3a257a];}_0x46c71b[_0x63be('0x7')](_0x63be('0x8'));});_0x16e9eb['on'](_0x63be('0x9'),function(_0x46c770){if(_0x46c770[_0x63be('0xa')]()==_0x63be('0xb')){_0x46c71b[_0x63be('0x7')](_0x63be('0xb'));return;}if(_0x46c770[_0x63be('0xc')](0x0,0xb)==_0x63be('0xd')){_0x16b348=!![];}if(_0x16b348){_0x43f34a['rx']+=_0x46c770+'\x0a';if(_0x46c770[_0x63be('0xe')]('520\x20End\x20of\x20proper')!=-0x1){_0x16b348=![];}}else{_0x43f34a['rx']=_0x46c770;}if(_0x16b348){return;}if(typeof _0x43f34a['cb']==_0x63be('0xf')){var _0x5c9a24=_0x43f34a['rx'][_0x63be('0xc')](0x0,0x3),_0x3eae71=null,_0x40929b=null;_0x5c9a24=parseInt(_0x5c9a24);if(isNaN(_0x5c9a24)){_0x43f34a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x5c9a24!=0xc8){_0x43f34a['cb'](null,{'code':_0x5c9a24,'result':-0x1,'extra':'KO'});return;}_0x3eae71=_0x43f34a['rx']['substring'](0x4)[_0x63be('0x10')](_0x63be('0x11'),'');if(_0x3eae71['indexOf']('\x20')!=-0x1){_0x3eae71=_0x3eae71[_0x63be('0x12')](0x0,_0x3eae71[_0x63be('0x13')]('\x20'));}if(_[_0x63be('0x14')](_0x3eae71,'-1')){_0x3eae71=parseInt(_0x3eae71);}_0x40929b=_0x43f34a['rx']['split']('\x20');if(_0x40929b['length']==0x3){_0x40929b=_0x40929b[0x2][_0x63be('0xc')](0x1,_0x40929b[0x2][_0x63be('0x15')]-0x1);}else if(_0x40929b[_0x63be('0x15')]>0x3){var _0x75efdb=/\((.+)\)/;var _0x5cdb91=_0x43f34a['rx'][_0x63be('0x16')](_0x75efdb);if(_0x5cdb91){_0x40929b=_0x5cdb91[0x1];}else{_0x40929b=null;}}else{_0x40929b=null;}_0x43f34a['cb'](null,{'code':_0x5c9a24,'result':_0x3eae71,'extra':_0x40929b});}});_0x1871e9['on'](_0x63be('0x17'),function(_0x501c76){_0x46c71b['emit'](_0x63be('0x17'),new AGIError('E_AGI_SOCKET_ERROR',_0x501c76[_0x63be('0x18')]));});_0x1871e9['on'](_0x63be('0x19'),function(){_0x46c71b[_0x63be('0x7')](_0x63be('0x19'),new AGIError(_0x63be('0x1a')));});_0x1871e9['on']('timeout',function(){_0x46c71b['emit']('timeout',new AGIError(_0x63be('0x1b')));_0x1871e9[_0x63be('0x1c')]();});_0x1871e9[_0x63be('0x1d')](_0x16e9eb);this[_0x63be('0x1e')]=function(_0x237837,_0x299033){var _0x237837=_0x237837||'',_0x299033=typeof _0x299033=='function'?_0x299033:new Function();_0x43f34a={'tx':_0x237837,'rx':'','cb':_0x299033};_0x1871e9['write'](_0x237837+'\x0a');},this[_0x63be('0x19')]=function(){_0x1871e9[_0x63be('0x1c')]();};}util[_0x63be('0x1f')](AGIChannel,EventEmitter);AGIChannel[_0x63be('0x20')][_0x63be('0x21')]=function(_0x50c4f5){return this['command'][_0x63be('0x22')](this,_0x50c4f5);};AGIChannel[_0x63be('0x20')][_0x63be('0x23')]=function(){return this[_0x63be('0x21')](_0x63be('0x24'));};AGIChannel[_0x63be('0x20')][_0x63be('0x25')]=function(_0x5e7ccb,_0x481699,_0x24b7ce){_0x5e7ccb=_0x5e7ccb===undefined?_0x63be('0x26'):_0x5e7ccb;_0x481699=_0x481699===undefined?'5':_0x481699;_0x24b7ce=_0x24b7ce===undefined?'1':_0x24b7ce;return this[_0x63be('0x21')](util[_0x63be('0x27')](_0x63be('0x28'),_0x5e7ccb,_0x481699*0x3e8,_0x24b7ce));};AGIChannel[_0x63be('0x20')][_0x63be('0x29')]=function(_0x2d4e58){_0x2d4e58=_0x2d4e58||_0x63be('0x2a');return this['sendRequest'](util['format'](_0x63be('0x2b'),_0x2d4e58));};AGIChannel[_0x63be('0x20')][_0x63be('0x2c')]=function(_0x1c7756,_0x31a7cb){if(_[_0x63be('0x2d')](_0x31a7cb)){return this[_0x63be('0x21')](util[_0x63be('0x27')](_0x63be('0x2e'),_0x1c7756,_0x31a7cb['join'](',')));}return this[_0x63be('0x21')](util['format'](_0x63be('0x2e'),_0x1c7756,_0x31a7cb));};AGIChannel[_0x63be('0x20')][_0x63be('0x2f')]=function(_0x3ea472){return this[_0x63be('0x21')](util[_0x63be('0x27')]('SET\x20CONTEXT\x20%s',_0x3ea472));};AGIChannel[_0x63be('0x20')][_0x63be('0x30')]=function(_0x4d5215){return this['sendRequest'](util['format'](_0x63be('0x31'),_0x4d5215));};AGIChannel['prototype'][_0x63be('0x32')]=function(_0x4da53c){return this[_0x63be('0x21')](util['format'](_0x63be('0x33'),_0x4da53c));};AGIChannel[_0x63be('0x20')][_0x63be('0xb')]=function(){return this['sendRequest'](_0x63be('0x34'));};AGIChannel[_0x63be('0x20')][_0x63be('0x35')]=function(_0x3bf08c,_0x327312){var _0x46e54f=_[_0x63be('0x36')](_0x327312)||_[_0x63be('0x37')](_0x327312)?_0x327312[_0x63be('0x38')]():_0x327312;return this['sendRequest'](util['format'](_0x63be('0x39'),_0x3bf08c,_0x46e54f?_0x46e54f[_0x63be('0x38')]()[_0x63be('0x10')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x63be('0x20')][_0x63be('0x3a')]=function(_0x111337,_0x639481){return this[_0x63be('0x21')](util[_0x63be('0x27')]('SAY\x20NUMBER\x20%s\x20%s',_0x111337,_0x639481));};AGIChannel['prototype'][_0x63be('0x3b')]=function(_0x10d42e,_0x4b773c){return this[_0x63be('0x21')](util[_0x63be('0x27')]('SAY\x20DIGITS\x20%s\x20%s',_0x10d42e,_0x4b773c));};AGIChannel[_0x63be('0x20')]['sayPhonetic']=function(_0x1102a0,_0x7605cf){return this[_0x63be('0x21')](util['format'](_0x63be('0x3c'),_0x1102a0,_0x7605cf));};AGIChannel[_0x63be('0x20')]['continueAt']=function(_0x55b7c4,_0x38154a,_0x354ba9){_0x38154a=_0x38154a||this[_0x63be('0x3d')];_0x354ba9=_0x354ba9||0x1;this[_0x63be('0x2f')](_0x55b7c4);this['setExtension'](_0x38154a);this[_0x63be('0x32')](_0x354ba9);return this[_0x63be('0x29')](util[_0x63be('0x27')]('GOTO\x20%s\x20%s\x20%s',_0x55b7c4,_0x38154a,_0x354ba9));};AGIChannel[_0x63be('0x20')][_0x63be('0x3e')]=function(_0x3b05cb){return this['sendRequest'](util[_0x63be('0x27')](_0x63be('0x3f'),_0x3b05cb));};AGIChannel[_0x63be('0x20')][_0x63be('0x40')]=function(_0x2e95c9,_0x5128ee,_0x1d8efa,_0x252c04,_0x2e5995,_0x2df8f9){_0x5128ee=_0x5128ee||_0x63be('0x41');_0x1d8efa=_0x1d8efa||'';_0x252c04=_0x252c04===undefined?-0x1:_0x252c04==='-1'?-0x1:_0x252c04*0x3e8;_0x2e5995=_0x2e5995===undefined?'':'s='+_0x2e5995;_0x2df8f9=_0x2df8f9?_0x63be('0x42'):'';return this[_0x63be('0x21')](util[_0x63be('0x27')](_0x63be('0x43'),_0x2e95c9,_0x5128ee,_0x1d8efa,_0x252c04,_0x2df8f9,_0x2e5995));};AGIChannel[_0x63be('0x20')][_0x63be('0x44')]=function(_0x80b320,_0x2bb4cb){_0x2bb4cb=_0x2bb4cb||'';return this[_0x63be('0x21')](util['format'](_0x63be('0x45'),_0x80b320,_0x2bb4cb));};AGIChannel[_0x63be('0x20')]['agi']=function(_0x210784){return this[_0x63be('0x2c')]('AGI',_0x210784);};AGIChannel[_0x63be('0x20')][_0x63be('0x46')]=function(_0x389450){return this[_0x63be('0x2c')]('WAIT',_0x389450);};AGIChannel['prototype'][_0x63be('0x17')]=function(_0x140741,_0x371ce6){this['noop'](util[_0x63be('0x27')](_0x63be('0x47'),_0x140741['id'],_0x140741[_0x63be('0x48')],_0x371ce6));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x63be('0x49')]=AGIChannel;
\ No newline at end of file
index 3a4a811..73d12af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8422=['util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Empty\x20command.','push','format','message','name'];(function(_0x391462,_0xdbd4c5){var _0x4776f8=function(_0x57c17d){while(--_0x57c17d){_0x391462['push'](_0x391462['shift']());}};_0x4776f8(++_0xdbd4c5);}(_0x8422,0x120));var _0x2842=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0x8422[_0x2c0dc0];return _0x4c0990;};'use strict';var util=require(_0x2842('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0x2842('0x1'),'E_AGI_SERVER_ERROR':_0x2842('0x2'),'E_AGI_SERVER_CLOSE':_0x2842('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x2842('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x2842('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x2842('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x2842('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x4935db){var _0x4935db=_0x4935db||null,_0x5951c9=_0x5951c9||[],_0x53fdbe=0x1,_0x58907d='';if(!error[_0x4935db]){_0x4935db='E_AGI_UNDEFINED';}_0x5951c9['push'](error[_0x4935db]);while(arguments[_0x53fdbe]){_0x5951c9[_0x2842('0x8')](arguments[_0x53fdbe]);_0x53fdbe++;}_0x58907d=util[_0x2842('0x9')]['apply'](util,_0x5951c9);this[_0x2842('0xa')]=_0x58907d;this[_0x2842('0xb')]=_0x4935db;}module['exports']=AGIError;
\ No newline at end of file
+var _0xc07d=['Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','message','name','exports','util'];(function(_0x4671bf,_0x3fafb2){var _0x189511=function(_0x409823){while(--_0x409823){_0x4671bf['push'](_0x4671bf['shift']());}};_0x189511(++_0x3fafb2);}(_0xc07d,0x19d));var _0xdc07=function(_0x491b1a,_0x1f2d5d){_0x491b1a=_0x491b1a-0x0;var _0x10da68=_0xc07d[_0x491b1a];return _0x10da68;};'use strict';var util=require(_0xdc07('0x0'));var error={'E_AGI_UNDEFINED':_0xdc07('0x1'),'E_AGI_ARGUMENT_PORT':_0xdc07('0x2'),'E_AGI_SERVER_ERROR':_0xdc07('0x3'),'E_AGI_SERVER_CLOSE':_0xdc07('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xdc07('0x5'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xdc07('0x6'),'E_AGI_SOCKET_CLOSE':_0xdc07('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xdc07('0x8'),'E_AGI_COMMAND_EMPTY':_0xdc07('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xdc07('0xa'),'E_AGI_IVR_ENTRY':_0xdc07('0xb')};function AGIError(_0x23fad2){var _0x23fad2=_0x23fad2||null,_0x1d0fe8=_0x1d0fe8||[],_0x564fe=0x1,_0x41aba1='';if(!error[_0x23fad2]){_0x23fad2=_0xdc07('0xc');}_0x1d0fe8['push'](error[_0x23fad2]);while(arguments[_0x564fe]){_0x1d0fe8[_0xdc07('0xd')](arguments[_0x564fe]);_0x564fe++;}_0x41aba1=util['format'][_0xdc07('0xe')](util,_0x1d0fe8);this[_0xdc07('0xf')]=_0x41aba1;this[_0xdc07('0x10')]=_0x23fad2;}module[_0xdc07('0x11')]=AGIError;
\ No newline at end of file
index 597b9c8..86b5e96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc8=['ioredis','../../config/environment','redis','defaults','localhost','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','message','projectUpdate','exports','lodash','EventEmitter'];(function(_0x358408,_0x2bfe3f){var _0x14fef8=function(_0x471090){while(--_0x471090){_0x358408['push'](_0x358408['shift']());}};_0x14fef8(++_0x2bfe3f);}(_0xebc8,0x1de));var _0x8ebc=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xebc8[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x8ebc('0x0'));var EventEmitter=require('events')[_0x8ebc('0x1')];var Redis=require(_0x8ebc('0x2'));var AGIError=require('./error');var config=require(_0x8ebc('0x3'));config[_0x8ebc('0x4')]=_[_0x8ebc('0x5')](config[_0x8ebc('0x4')],{'host':_0x8ebc('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x8ebc('0x4')]);sub[_0x8ebc('0x7')](_0x8ebc('0x8'),function(_0x5395ed){if(_0x5395ed)return eventEmitter[_0x8ebc('0x9')](_0x8ebc('0xa'),new AGIError(_0x8ebc('0xb'),_0x5395ed));});sub['on'](_0x8ebc('0xc'),function(_0x54e7ef,_0x5b0892){if(_0x54e7ef!==_0x8ebc('0x8'))return;try{var _0x3cab72=JSON['parse'](_0x5b0892);eventEmitter[_0x8ebc('0x9')](_0x8ebc('0xd'),_0x3cab72);}catch(_0x1ae550){eventEmitter[_0x8ebc('0x9')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x1ae550));}});module[_0x8ebc('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x9aca=['projectUpdate','exports','lodash','events','EventEmitter','ioredis','./error','redis','localhost','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','message','parse'];(function(_0x2c4832,_0x23b1f2){var _0xa91472=function(_0x2b9413){while(--_0x2b9413){_0x2c4832['push'](_0x2c4832['shift']());}};_0xa91472(++_0x23b1f2);}(_0x9aca,0xf2));var _0xa9ac=function(_0x3d9564,_0x3031d2){_0x3d9564=_0x3d9564-0x0;var _0x571ff3=_0x9aca[_0x3d9564];return _0x571ff3;};'use strict';var _=require(_0xa9ac('0x0'));var EventEmitter=require(_0xa9ac('0x1'))[_0xa9ac('0x2')];var Redis=require(_0xa9ac('0x3'));var AGIError=require(_0xa9ac('0x4'));var config=require('../../config/environment');config[_0xa9ac('0x5')]=_['defaults'](config[_0xa9ac('0x5')],{'host':_0xa9ac('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xa9ac('0x5')]);sub[_0xa9ac('0x7')](_0xa9ac('0x8'),function(_0x4014f0){if(_0x4014f0)return eventEmitter[_0xa9ac('0x9')](_0xa9ac('0xa'),new AGIError(_0xa9ac('0xb'),_0x4014f0));});sub['on'](_0xa9ac('0xc'),function(_0x27814b,_0x80946a){if(_0x27814b!==_0xa9ac('0x8'))return;try{var _0xdd3df8=JSON[_0xa9ac('0xd')](_0x80946a);eventEmitter['emit'](_0xa9ac('0xe'),_0xdd3df8);}catch(_0x3808a9){eventEmitter[_0xa9ac('0x9')](_0xa9ac('0xa'),new AGIError(_0xa9ac('0xb'),_0x3808a9));}});module[_0xa9ac('0xf')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 7de457a..42e6ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6697=['condition','split','agicommand','vswitch','target','default','invalid','includes','max\x20retry\x20reach','exports','lodash','../../../config/logger','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','length'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x6697,0xa0));var _0x7669=function(_0x1d3cbe,_0x5a1aca){_0x1d3cbe=_0x1d3cbe-0x0;var _0x178bea=_0x6697[_0x1d3cbe];return _0x178bea;};'use strict';var _=require(_0x7669('0x0'));var logger=require(_0x7669('0x1'))('agi');var verticesWithRetry=[_0x7669('0x2'),_0x7669('0x3'),_0x7669('0x4')];var Graph=function(){this[_0x7669('0x5')]={};this[_0x7669('0x6')]={};this[_0x7669('0x7')]=0x0;};Graph[_0x7669('0x8')]['addVertex']=function(_0x19f09d){this[_0x7669('0x5')][_0x19f09d['id']]=_0x19f09d;this[_0x7669('0x6')][_0x19f09d['id']]=[];};Graph[_0x7669('0x8')][_0x7669('0x9')]=function(_0x4c50bb,_0x43affb,_0xe1c8b6){this[_0x7669('0x6')][_0x4c50bb][_0x7669('0xa')]({'target':_0x43affb,'condition':_0xe1c8b6});this[_0x7669('0x7')]+=0x1;};Graph[_0x7669('0x8')][_0x7669('0xb')]=function(){return _[_0x7669('0xb')](this[_0x7669('0x5')]);};Graph['prototype'][_0x7669('0xc')]=function(){return this[_0x7669('0x7')];};Graph['prototype'][_0x7669('0xd')]=function(_0x2c010c){return this[_0x7669('0x5')][_0x2c010c];};Graph['prototype'][_0x7669('0xe')]=function(_0x17499b,_0x6532b6){if(!this['vertices'][_0x17499b]){return logger[_0x7669('0xf')](_0x7669('0x10'));}var _0x1cb265=_0x6532b6(this['vertices'][_0x17499b]);if(!_0x1cb265){return logger['info'](_0x7669('0x11'));}if(this[_0x7669('0x6')][_0x17499b]['length']===0x0){return logger[_0x7669('0xf')](_0x7669('0x12'));}for(var _0x239dd2=0x0,_0x220c08=[],_0x19babd=![];_0x239dd2<this[_0x7669('0x6')][_0x17499b][_0x7669('0x13')];_0x239dd2+=0x1){if(this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x14')]){_0x220c08=this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x14')][_0x7669('0x15')](',');for(var _0x311cca=0x0;_0x311cca<_0x220c08['length'];_0x311cca+=0x1){if(this[_0x7669('0x5')][_0x17499b][_0x7669('0x16')]===_0x7669('0x17')&&_0x220c08[_0x311cca]==='-'){_0x19babd=this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x18')];logger['info'](_0x7669('0x19'),_0x220c08[_0x311cca],this['edges'][_0x17499b][_0x239dd2]['target']);}else if(this[_0x7669('0x5')][_0x17499b][_0x7669('0x16')]==='menu'&&_0x220c08[_0x311cca]==='i'){_0x19babd=this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x18')];logger[_0x7669('0xf')](_0x7669('0x1a'),_0x220c08[_0x311cca],this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x18')]);}if(_0x220c08[_0x311cca]===_0x1cb265){return this['traverseBFS'](this['edges'][_0x17499b][_0x239dd2]['target'],_0x6532b6);}}}else{return this[_0x7669('0xe')](this[_0x7669('0x6')][_0x17499b][_0x239dd2][_0x7669('0x18')],_0x6532b6);}}if(_0x220c08[_0x7669('0x13')]){if(this[_0x7669('0x5')][_0x17499b][_0x7669('0x16')]===_0x7669('0x17')){if(_0x19babd){return this[_0x7669('0xe')](_0x19babd,_0x6532b6);}return logger[_0x7669('0xf')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0x7669('0x1b')](verticesWithRetry,this[_0x7669('0x5')][_0x17499b][_0x7669('0x16')])){if(_0x1cb265==='-'){return logger['info'](_0x7669('0x1c'));}if(_0x19babd&&_0x1cb265!=='t'){return this[_0x7669('0xe')](_0x19babd,_0x6532b6);}return this[_0x7669('0xe')](_0x17499b,_0x6532b6);}return logger[_0x7669('0xf')]('condition\x20not\x20found');}};module[_0x7669('0x1d')]=Graph;
\ No newline at end of file
+var _0xb4b4=['default','traverseBFS','max\x20retry\x20reach','condition\x20not\x20found','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','numberOfEdges','prototype','edges','addEdge','push','size','relations','getVertex','no\x20vertex\x20found','info','stop\x20traverse','length','condition','split','agicommand','vswitch','target'];(function(_0x55f3ec,_0x1d947b){var _0x338075=function(_0x2ce4cc){while(--_0x2ce4cc){_0x55f3ec['push'](_0x55f3ec['shift']());}};_0x338075(++_0x1d947b);}(_0xb4b4,0x163));var _0x4b4b=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xb4b4[_0x3d42d8];return _0x27fc41;};'use strict';var _=require('lodash');var logger=require(_0x4b4b('0x0'))(_0x4b4b('0x1'));var verticesWithRetry=[_0x4b4b('0x2'),_0x4b4b('0x3'),_0x4b4b('0x4')];var Graph=function(){this[_0x4b4b('0x5')]={};this['edges']={};this[_0x4b4b('0x6')]=0x0;};Graph[_0x4b4b('0x7')]['addVertex']=function(_0x21d489){this[_0x4b4b('0x5')][_0x21d489['id']]=_0x21d489;this[_0x4b4b('0x8')][_0x21d489['id']]=[];};Graph['prototype'][_0x4b4b('0x9')]=function(_0x45daf0,_0x2630f9,_0x48842f){this[_0x4b4b('0x8')][_0x45daf0][_0x4b4b('0xa')]({'target':_0x2630f9,'condition':_0x48842f});this['numberOfEdges']+=0x1;};Graph[_0x4b4b('0x7')][_0x4b4b('0xb')]=function(){return _[_0x4b4b('0xb')](this[_0x4b4b('0x5')]);};Graph[_0x4b4b('0x7')][_0x4b4b('0xc')]=function(){return this[_0x4b4b('0x6')];};Graph[_0x4b4b('0x7')][_0x4b4b('0xd')]=function(_0x3719c0){return this[_0x4b4b('0x5')][_0x3719c0];};Graph[_0x4b4b('0x7')]['traverseBFS']=function(_0x18ee49,_0x35c05e){if(!this['vertices'][_0x18ee49]){return logger['info'](_0x4b4b('0xe'));}var _0x1ea966=_0x35c05e(this[_0x4b4b('0x5')][_0x18ee49]);if(!_0x1ea966){return logger[_0x4b4b('0xf')](_0x4b4b('0x10'));}if(this[_0x4b4b('0x8')][_0x18ee49][_0x4b4b('0x11')]===0x0){return logger[_0x4b4b('0xf')]('no\x20edge/s\x20available');}for(var _0x6e4eae=0x0,_0x26cc07=[],_0x517a1a=![];_0x6e4eae<this[_0x4b4b('0x8')][_0x18ee49][_0x4b4b('0x11')];_0x6e4eae+=0x1){if(this[_0x4b4b('0x8')][_0x18ee49][_0x6e4eae][_0x4b4b('0x12')]){_0x26cc07=this['edges'][_0x18ee49][_0x6e4eae]['condition'][_0x4b4b('0x13')](',');for(var _0x59be81=0x0;_0x59be81<_0x26cc07['length'];_0x59be81+=0x1){if(this[_0x4b4b('0x5')][_0x18ee49][_0x4b4b('0x14')]===_0x4b4b('0x15')&&_0x26cc07[_0x59be81]==='-'){_0x517a1a=this[_0x4b4b('0x8')][_0x18ee49][_0x6e4eae][_0x4b4b('0x16')];logger[_0x4b4b('0xf')](_0x4b4b('0x17'),_0x26cc07[_0x59be81],this[_0x4b4b('0x8')][_0x18ee49][_0x6e4eae][_0x4b4b('0x16')]);}else if(this[_0x4b4b('0x5')][_0x18ee49][_0x4b4b('0x14')]===_0x4b4b('0x2')&&_0x26cc07[_0x59be81]==='i'){_0x517a1a=this[_0x4b4b('0x8')][_0x18ee49][_0x6e4eae]['target'];logger[_0x4b4b('0xf')]('invalid',_0x26cc07[_0x59be81],this['edges'][_0x18ee49][_0x6e4eae]['target']);}if(_0x26cc07[_0x59be81]===_0x1ea966){return this['traverseBFS'](this[_0x4b4b('0x8')][_0x18ee49][_0x6e4eae][_0x4b4b('0x16')],_0x35c05e);}}}else{return this[_0x4b4b('0x18')](this['edges'][_0x18ee49][_0x6e4eae][_0x4b4b('0x16')],_0x35c05e);}}if(_0x26cc07[_0x4b4b('0x11')]){if(this[_0x4b4b('0x5')][_0x18ee49]['agicommand']===_0x4b4b('0x15')){if(_0x517a1a){return this[_0x4b4b('0x18')](_0x517a1a,_0x35c05e);}return logger[_0x4b4b('0xf')]('default\x20on\x20switch\x20not\x20found');}else if(_['includes'](verticesWithRetry,this[_0x4b4b('0x5')][_0x18ee49][_0x4b4b('0x14')])){if(_0x1ea966==='-'){return logger[_0x4b4b('0xf')](_0x4b4b('0x19'));}if(_0x517a1a&&_0x1ea966!=='t'){return this[_0x4b4b('0x18')](_0x517a1a,_0x35c05e);}return this[_0x4b4b('0x18')](_0x18ee49,_0x35c05e);}return logger[_0x4b4b('0xf')](_0x4b4b('0x1a'));}};module['exports']=Graph;
\ No newline at end of file
index 5c33881..0de6cfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda60=['message','error','format','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','catch','hasOwnProperty','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','handleNotFound','production','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','./server','listening','connection','lodash','syncho','util','../../config/environment','agi','./rpc','EventEmitter','defaults','projectUpdate','nextTick','splice','push','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','port','name'];(function(_0x11c144,_0x13fcad){var _0x3c03b7=function(_0x52c474){while(--_0x52c474){_0x11c144['push'](_0x11c144['shift']());}};_0x3c03b7(++_0x13fcad);}(_0xda60,0x1ae));var _0x0da6=function(_0x5d897d,_0x8f648e){_0x5d897d=_0x5d897d-0x0;var _0x21a626=_0xda60[_0x5d897d];return _0x21a626;};'use strict';var _=require(_0x0da6('0x0'));var syncho=require(_0x0da6('0x1'));var util=require(_0x0da6('0x2'));var config=require(_0x0da6('0x3'));var logger=require('../../config/logger')(_0x0da6('0x4'));var utilLicense=require('../../config/license/util');var rpc=require(_0x0da6('0x5'));var Project=require('./project');var AGIEmitter=require('./events')[_0x0da6('0x6')];var projects=[];config[_0x0da6('0x4')]=_[_0x0da6('0x7')](config[_0x0da6('0x4')],{'ip':'127.0.0.1','port':0x11dd});AGIEmitter['on'](_0x0da6('0x8'),projectUpdateHandler);function connectionHandler(_0x2ddefd){process[_0x0da6('0x9')](function(){syncho(function(){try{setChannelVariables(_0x2ddefd);agiHandler(_0x2ddefd);}catch(_0x57911d){logger['error'](_0x57911d['stack']);}});});}function projectUpdateHandler(_0x8ec2ca){try{var _0x4429c2=_['findIndex'](projects,['id',_0x8ec2ca['id']]);if(_0x4429c2>-0x1){if(_0x8ec2ca['deleted']===!![]){projects[_0x0da6('0xa')](_0x4429c2,0x1);}else{projects[_0x4429c2]=_0x8ec2ca;}}else{projects[_0x0da6('0xb')](_0x8ec2ca);}}catch(_0x53cb5c){logger['error'](_0x53cb5c[_0x0da6('0xc')]);}}function listeningHandler(){console['log'](_0x0da6('0xd'),config['agi']['port']);logger[_0x0da6('0xe')](util['format'](_0x0da6('0xf'),config[_0x0da6('0x4')]['ip'],config[_0x0da6('0x4')][_0x0da6('0x10')]));}function errorHandler(_0x18a9cd){if(_0x18a9cd&&_0x18a9cd[_0x0da6('0x11')]&&_0x18a9cd[_0x0da6('0x12')]){logger[_0x0da6('0x13')](util[_0x0da6('0x14')](_0x0da6('0x15'),_0x18a9cd[_0x0da6('0x11')],_0x18a9cd['message']));}else{logger[_0x0da6('0x13')](util[_0x0da6('0x14')](_0x0da6('0x16'),_0x18a9cd[_0x0da6('0xc')]));}}function closeHandler(){logger[_0x0da6('0xe')](util[_0x0da6('0x14')](_0x0da6('0x17'),this['arg_1'],this[_0x0da6('0x18')],this['callerid'],this['dnid'],this[_0x0da6('0x19')]));try{createSquareReport(this);}catch(_0x3ebf72){logger[_0x0da6('0x13')](_0x3ebf72['stack']);}}function timeoutHandler(){logger['info'](util['format'](_0x0da6('0x1a'),this[_0x0da6('0x1b')],this['calleridname'],this[_0x0da6('0x1c')],this[_0x0da6('0x1d')],this['uniqueid']));}function hangupHandler(){logger[_0x0da6('0xe')](util[_0x0da6('0x14')](_0x0da6('0x1e'),this[_0x0da6('0x1b')],this[_0x0da6('0x18')],this[_0x0da6('0x1c')],this[_0x0da6('0x1d')],this[_0x0da6('0x19')]));this[_0x0da6('0x1f')]=!![];}function createSquareReport(_0x311418,_0x41fa1b){rpc[_0x0da6('0x20')](_0x311418)[_0x0da6('0x21')](function(_0x3b4c36){if(_0x41fa1b){_0x41fa1b(null,_0x3b4c36);}})[_0x0da6('0x22')](function(_0x3c6da1){if(_0x41fa1b){_0x41fa1b(null,_0x3c6da1);}});}function setChannelVariables(_0x50c744){for(var _0x5a9b50 in _0x50c744){if(_0x50c744[_0x0da6('0x23')](_0x5a9b50)){if(_0x5a9b50['indexOf']('agi_')===0x0){_0x50c744[_0x5a9b50[_0x0da6('0x24')](0x4)]=_0x50c744[_0x5a9b50];delete _0x50c744[_0x5a9b50];}}}}function agiHandler(_0x50050e){logger[_0x0da6('0x25')](_0x0da6('0x26'),JSON['stringify'](_0x50050e,null,0x2));logger['info'](util[_0x0da6('0x14')](_0x0da6('0x27'),_0x50050e[_0x0da6('0x1b')],_0x50050e[_0x0da6('0x18')],_0x50050e[_0x0da6('0x1c')],_0x50050e[_0x0da6('0x1d')],_0x50050e[_0x0da6('0x19')]));_0x50050e['on'](_0x0da6('0x13'),errorHandler);_0x50050e['on'](_0x0da6('0x28'),closeHandler);_0x50050e['on'](_0x0da6('0x29'),timeoutHandler);_0x50050e['evtHangup']=![];_0x50050e['on'](_0x0da6('0x2a'),hangupHandler);var _0x5be83c=_['find'](projects,['name',_0x50050e[_0x0da6('0x1b')]]);if(!_0x5be83c)return Project[_0x0da6('0x2b')](_0x50050e);if(!_0x5be83c[_0x0da6('0x2c')])return Project['handleUnpublished'](_0x50050e);return Project[_0x0da6('0x2d')](_0x5be83c,_0x50050e);}function main(){var _0x2e19be;return utilLicense[_0x0da6('0x2e')]()['then'](function(_0x66c497){if(!_0x66c497)return;if(_0x66c497[_0x0da6('0x2f')]){if(_0x66c497['callysquare']&&_0x66c497[_0x0da6('0x30')]>0x0){logger[_0x0da6('0xe')](util[_0x0da6('0x14')](_0x0da6('0x31'),_0x66c497[_0x0da6('0x30')]));_0x2e19be=_0x66c497[_0x0da6('0x30')];}else{logger[_0x0da6('0xe')]('[LICENSE]\x20CHANNELS:\x20UNLIMITED');}}else{logger[_0x0da6('0xe')](_0x0da6('0x32'));_0x2e19be=-0x1;}})['then'](function(){return Project[_0x0da6('0x33')]();})['then'](function(_0x39a8f3){projects=_0x39a8f3;return;})[_0x0da6('0x22')](function(_0x1fb298){logger['error'](_0x0da6('0x34'),_0x1fb298['stack']);})['finally'](function(){var _0x18207c=require(_0x0da6('0x35'))(config['agi'][_0x0da6('0x10')],config[_0x0da6('0x4')]['ip'],_0x2e19be);_0x18207c['on']('error',errorHandler);_0x18207c['on'](_0x0da6('0x36'),listeningHandler);_0x18207c['on'](_0x0da6('0x37'),connectionHandler);_0x18207c['on'](_0x0da6('0x28'),closeHandler);});}main();
\ No newline at end of file
+var _0x872b=['format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','agi_','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','find','handleNotFound','handleUnpublished','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','catch','[LICENSE]','finally','./server','listening','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./events','EventEmitter','127.0.0.1','projectUpdate','nextTick','error','stack','findIndex','deleted','splice','push','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info'];(function(_0x368f74,_0x545cf8){var _0x1c2f02=function(_0x35c2e8){while(--_0x35c2e8){_0x368f74['push'](_0x368f74['shift']());}};_0x1c2f02(++_0x545cf8);}(_0x872b,0x1c2));var _0xb872=function(_0x58f36a,_0x152045){_0x58f36a=_0x58f36a-0x0;var _0x1ed996=_0x872b[_0x58f36a];return _0x1ed996;};'use strict';var _=require(_0xb872('0x0'));var syncho=require(_0xb872('0x1'));var util=require(_0xb872('0x2'));var config=require(_0xb872('0x3'));var logger=require(_0xb872('0x4'))(_0xb872('0x5'));var utilLicense=require(_0xb872('0x6'));var rpc=require('./rpc');var Project=require('./project');var AGIEmitter=require(_0xb872('0x7'))[_0xb872('0x8')];var projects=[];config[_0xb872('0x5')]=_['defaults'](config[_0xb872('0x5')],{'ip':_0xb872('0x9'),'port':0x11dd});AGIEmitter['on'](_0xb872('0xa'),projectUpdateHandler);function connectionHandler(_0x8019dd){process[_0xb872('0xb')](function(){syncho(function(){try{setChannelVariables(_0x8019dd);agiHandler(_0x8019dd);}catch(_0x4fcb1c){logger[_0xb872('0xc')](_0x4fcb1c[_0xb872('0xd')]);}});});}function projectUpdateHandler(_0x4592a8){try{var _0x553d65=_[_0xb872('0xe')](projects,['id',_0x4592a8['id']]);if(_0x553d65>-0x1){if(_0x4592a8[_0xb872('0xf')]===!![]){projects[_0xb872('0x10')](_0x553d65,0x1);}else{projects[_0x553d65]=_0x4592a8;}}else{projects[_0xb872('0x11')](_0x4592a8);}}catch(_0x208a6c){logger['error'](_0x208a6c['stack']);}}function listeningHandler(){console[_0xb872('0x12')](_0xb872('0x13'),config[_0xb872('0x5')][_0xb872('0x14')]);logger[_0xb872('0x15')](util[_0xb872('0x16')](_0xb872('0x17'),config[_0xb872('0x5')]['ip'],config[_0xb872('0x5')][_0xb872('0x14')]));}function errorHandler(_0x13f11f){if(_0x13f11f&&_0x13f11f[_0xb872('0x18')]&&_0x13f11f[_0xb872('0x19')]){logger[_0xb872('0xc')](util[_0xb872('0x16')](_0xb872('0x1a'),_0x13f11f[_0xb872('0x18')],_0x13f11f[_0xb872('0x19')]));}else{logger[_0xb872('0xc')](util[_0xb872('0x16')](_0xb872('0x1b'),_0x13f11f['stack']));}}function closeHandler(){logger[_0xb872('0x15')](util['format'](_0xb872('0x1c'),this[_0xb872('0x1d')],this[_0xb872('0x1e')],this[_0xb872('0x1f')],this['dnid'],this[_0xb872('0x20')]));try{createSquareReport(this);}catch(_0x5650e2){logger['error'](_0x5650e2[_0xb872('0xd')]);}}function timeoutHandler(){logger[_0xb872('0x15')](util[_0xb872('0x16')](_0xb872('0x21'),this[_0xb872('0x1d')],this[_0xb872('0x1e')],this['callerid'],this[_0xb872('0x22')],this['uniqueid']));}function hangupHandler(){logger['info'](util[_0xb872('0x16')](_0xb872('0x23'),this['arg_1'],this[_0xb872('0x1e')],this[_0xb872('0x1f')],this[_0xb872('0x22')],this[_0xb872('0x20')]));this[_0xb872('0x24')]=!![];}function createSquareReport(_0x12aefa,_0x9c42d6){rpc[_0xb872('0x25')](_0x12aefa)[_0xb872('0x26')](function(_0x516438){if(_0x9c42d6){_0x9c42d6(null,_0x516438);}})['catch'](function(_0x327a96){if(_0x9c42d6){_0x9c42d6(null,_0x327a96);}});}function setChannelVariables(_0x44be3f){for(var _0x230c3e in _0x44be3f){if(_0x44be3f['hasOwnProperty'](_0x230c3e)){if(_0x230c3e['indexOf'](_0xb872('0x27'))===0x0){_0x44be3f[_0x230c3e['substring'](0x4)]=_0x44be3f[_0x230c3e];delete _0x44be3f[_0x230c3e];}}}}function agiHandler(_0x5da38f){logger[_0xb872('0x28')](_0xb872('0x29'),JSON[_0xb872('0x2a')](_0x5da38f,null,0x2));logger[_0xb872('0x15')](util['format'](_0xb872('0x2b'),_0x5da38f[_0xb872('0x1d')],_0x5da38f[_0xb872('0x1e')],_0x5da38f[_0xb872('0x1f')],_0x5da38f['dnid'],_0x5da38f['uniqueid']));_0x5da38f['on'](_0xb872('0xc'),errorHandler);_0x5da38f['on'](_0xb872('0x2c'),closeHandler);_0x5da38f['on']('timeout',timeoutHandler);_0x5da38f[_0xb872('0x24')]=![];_0x5da38f['on']('hangup',hangupHandler);var _0x19d331=_[_0xb872('0x2d')](projects,[_0xb872('0x18'),_0x5da38f[_0xb872('0x1d')]]);if(!_0x19d331)return Project[_0xb872('0x2e')](_0x5da38f);if(!_0x19d331['production'])return Project[_0xb872('0x2f')](_0x5da38f);return Project['initialize'](_0x19d331,_0x5da38f);}function main(){var _0x23cd09;return utilLicense['getLicense']()['then'](function(_0x561722){if(!_0x561722)return;if(_0x561722[_0xb872('0x30')]){if(_0x561722[_0xb872('0x31')]&&_0x561722['callysquare']>0x0){logger['info'](util[_0xb872('0x16')](_0xb872('0x32'),_0x561722['callysquare']));_0x23cd09=_0x561722[_0xb872('0x31')];}else{logger['info'](_0xb872('0x33'));}}else{logger[_0xb872('0x15')](_0xb872('0x34'));_0x23cd09=-0x1;}})[_0xb872('0x26')](function(){return Project['getAll']();})[_0xb872('0x26')](function(_0x4e404e){projects=_0x4e404e;return;})[_0xb872('0x35')](function(_0x3b1c0a){logger[_0xb872('0xc')](_0xb872('0x36'),_0x3b1c0a[_0xb872('0xd')]);})[_0xb872('0x37')](function(){var _0x5b4353=require(_0xb872('0x38'))(config[_0xb872('0x5')][_0xb872('0x14')],config[_0xb872('0x5')]['ip'],_0x23cd09);_0x5b4353['on'](_0xb872('0xc'),errorHandler);_0x5b4353['on'](_0xb872('0x39'),listeningHandler);_0x5b4353['on'](_0xb872('0x3a'),connectionHandler);_0x5b4353['on'](_0xb872('0x2c'),closeHandler);});}main();
\ No newline at end of file
index a85d8d0..a0cd31d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f0f=['jayson/promise','http','request','error','result','catch','SendMail','bluebird'];(function(_0x1c1eb9,_0x1fc295){var _0x4dfe74=function(_0x1b7cf8){while(--_0x1b7cf8){_0x1c1eb9['push'](_0x1c1eb9['shift']());}};_0x4dfe74(++_0x1fc295);}(_0x1f0f,0xa7));var _0xf1f0=function(_0x189c9b,_0x310efa){_0x189c9b=_0x189c9b-0x0;var _0x331487=_0x1f0f[_0x189c9b];return _0x331487;};'use strict';var BPromise=require(_0xf1f0('0x0'));var jayson=require(_0xf1f0('0x1'));var client=jayson['client'][_0xf1f0('0x2')]({'port':0x232b});function request(_0x11f3ba,_0x19b0a4){return new BPromise(function(_0x2fcb2a,_0x105a69){return client[_0xf1f0('0x3')](_0x11f3ba,_0x19b0a4)['then'](function(_0x2f62e9){if(_0x2f62e9['error']){return _0x105a69(_0x2f62e9[_0xf1f0('0x4')]['message']);}else{return _0x2fcb2a(_0x2f62e9[_0xf1f0('0x5')]);}})[_0xf1f0('0x6')](function(_0x3391a1){return _0x105a69(_0x3391a1);});});}exports['sendMailMessage']=function(_0x5dd946,_0xc424ef){return request(_0xf1f0('0x7'),{'account':_0x5dd946,'message':_0xc424ef});};
\ No newline at end of file
+var _0x29b8=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','request','then','error','message','result'];(function(_0x60fcc3,_0x54f061){var _0x24b1db=function(_0x17fddd){while(--_0x17fddd){_0x60fcc3['push'](_0x60fcc3['shift']());}};_0x24b1db(++_0x54f061);}(_0x29b8,0x143));var _0x829b=function(_0x413b4d,_0xa3459c){_0x413b4d=_0x413b4d-0x0;var _0x8b810a=_0x29b8[_0x413b4d];return _0x8b810a;};'use strict';var BPromise=require(_0x829b('0x0'));var jayson=require(_0x829b('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x3b95b7,_0x44990d){return new BPromise(function(_0x56068d,_0x3cff41){return client[_0x829b('0x2')](_0x3b95b7,_0x44990d)[_0x829b('0x3')](function(_0x2f8b6a){if(_0x2f8b6a['error']){return _0x3cff41(_0x2f8b6a[_0x829b('0x4')][_0x829b('0x5')]);}else{return _0x56068d(_0x2f8b6a[_0x829b('0x6')]);}})[_0x829b('0x7')](function(_0x119fa6){return _0x3cff41(_0x119fa6);});});}exports[_0x829b('0x8')]=function(_0x5518fe,_0x29e3e9){return request(_0x829b('0x9'),{'account':_0x5518fe,'message':_0x29e3e9});};
\ No newline at end of file
index 959c3e3..0844e3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8830=['isUndefined','toString','error','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','uniqueid','traverseBFS','vertex','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','lodash','moment','agi','./rpc','./graph','./vertices','getSquareProjects','catch','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','hasOwnProperty','retry','maxRetry','addVertex','isArray','length','source','target','value','toJson','mxGraphModel','root','production','start','debug','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','omit','mxCell','info','calleridname','callerid','dnid','clear','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','result','evtHangup','response'];(function(_0x3c24a8,_0x39442e){var _0x195e05=function(_0x25dbe1){while(--_0x25dbe1){_0x3c24a8['push'](_0x3c24a8['shift']());}};_0x195e05(++_0x39442e);}(_0x8830,0x8d));var _0x0883=function(_0x155a36,_0x4bf39){_0x155a36=_0x155a36-0x0;var _0x3c99d0=_0x8830[_0x155a36];return _0x3c99d0;};'use strict';var _=require(_0x0883('0x0'));var moment=require(_0x0883('0x1'));var parser=require('xml2json');var util=require('util');var logger=require('../../config/logger')(_0x0883('0x2'));var rpc=require(_0x0883('0x3'));var mailRpc=require('./mailRpc');var Graph=require(_0x0883('0x4'));var Vertices=require(_0x0883('0x5'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x0883('0x6')]()[_0x0883('0x7')](function(_0x4d0ed4){logger['error'](_0x0883('0x8'),_0x4d0ed4[_0x0883('0x9')]);return[];});}function addVertex(_0xcfa35,_0x5062fa,_0x1c1935){_0x5062fa[_0x0883('0xa')]=_0x1c1935;if(_0x5062fa[_0x0883('0xb')](_0x0883('0xc'))){_0x5062fa[_0x0883('0xd')]=parseInt(_0x5062fa['retry'],0xa);}_0xcfa35[_0x0883('0xe')](_['omit'](_0x5062fa,'mxCell'));}function initGraph(_0x9ac2a6,_0x1977ad){var _0x1a7bb5=new Graph();for(var _0x692554 in _0x9ac2a6){if(_0x9ac2a6[_0x0883('0xb')](_0x692554)){if(_[_0x0883('0xf')](_0x9ac2a6[_0x692554])){for(var _0x2e3a6c=0x0;_0x2e3a6c<_0x9ac2a6[_0x692554][_0x0883('0x10')];_0x2e3a6c+=0x1){addVertex(_0x1a7bb5,_0x9ac2a6[_0x692554][_0x2e3a6c],_0x692554);}}else{addVertex(_0x1a7bb5,_0x9ac2a6[_0x692554],_0x692554);}}}for(var _0x5342bf=0x0;_0x5342bf<_0x1977ad[_0x0883('0x10')];_0x5342bf+=0x1){if(_0x1977ad[_0x5342bf][_0x0883('0x11')]&&_0x1977ad[_0x5342bf][_0x0883('0x12')]){_0x1a7bb5['addEdge'](_0x1977ad[_0x5342bf][_0x0883('0x11')],_0x1977ad[_0x5342bf]['target'],_0x1977ad[_0x5342bf][_0x0883('0x13')]);}}return _0x1a7bb5;}function getRoot(_0x2a0661){return parser[_0x0883('0x14')](_0x2a0661,{'object':!![]})[_0x0883('0x15')][_0x0883('0x16')];}function inspect(_0x2b6900){return util['inspect'](_0x2b6900,{'showHidden':![],'depth':null});}function initialize(_0x518df1,_0x2dcb5a){var _0x4ee4bc=getRoot(_0x518df1[_0x0883('0x17')]);if(!_0x4ee4bc||!_0x4ee4bc[_0x0883('0x18')])return;var _0x278775,_0xb7974e,_0x4705b4;logger[_0x0883('0x19')](_0x0883('0x16'),JSON[_0x0883('0x1a')](_0x4ee4bc,null,0x2));_0x2dcb5a[_0x0883('0x1b')]=moment()[_0x0883('0x1c')](_0x0883('0x1d'));_0x278775=initGraph(_[_0x0883('0x1e')](_0x4ee4bc,'mxCell'),_0x4ee4bc[_0x0883('0x1f')]);_0xb7974e=new Vertices(_0x2dcb5a,rpc,mailRpc);logger[_0x0883('0x20')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2dcb5a['arg_1'],_0x2dcb5a[_0x0883('0x21')],_0x2dcb5a[_0x0883('0x22')],_0x2dcb5a[_0x0883('0x23')],_0x2dcb5a['uniqueid']));_0x278775['traverseBFS'](_0x4ee4bc[_0x0883('0x18')]['id'],function(_0x40b2c8){try{_0x40b2c8=_0xb7974e[_0x0883('0x24')](_0x40b2c8);logger[_0x0883('0x19')]('vertex',JSON['stringify'](_0x40b2c8,null,0x2));if(_0x40b2c8[_0x0883('0xa')]==='gotoc'){logger['info'](_0x0883('0x25'));_0x2dcb5a[_0x0883('0x26')]=_0x40b2c8[_0x0883('0x26')]||_0x2dcb5a[_0x0883('0x26')];_0x2dcb5a[_0x0883('0x27')]=_0x40b2c8['extension'];_0x2dcb5a['priority']=_0x40b2c8[_0x0883('0x28')]?_0x40b2c8[_0x0883('0x28')]-0x1:0x1;return null;}else if(_0x40b2c8&&_0xb7974e[_0x40b2c8[_0x0883('0xa')]]){_0x4705b4=_0xb7974e[_0x40b2c8['agicommand']](_0x40b2c8);logger[_0x0883('0x20')]('response',JSON['stringify'](_0x4705b4,null,0x2));if(_0x4705b4&&_0x4705b4[_0x0883('0x29')]===AGI_CODE_SUCCESS&&_0x4705b4[_0x0883('0x2a')]!==AGI_RESULT_ERROR&&!_0x2dcb5a[_0x0883('0x2b')]){logger[_0x0883('0x19')](_0x0883('0x2c'),inspect(_0x4705b4));return _[_0x0883('0x2d')](_0x4705b4[_0x0883('0x2a')])?null:_0x4705b4[_0x0883('0x2a')][_0x0883('0x2e')]();}else{logger[_0x0883('0x2f')]('response',inspect(_0x4705b4));return null;}}else{logger[_0x0883('0x2f')](_0x0883('0x30'));return null;}}catch(_0x31fbfb){logger[_0x0883('0x2f')](_0x31fbfb[_0x0883('0x9')]);return null;}});if(_0x4ee4bc[_0x0883('0x31')]){logger[_0x0883('0x20')](util[_0x0883('0x1c')](_0x0883('0x32'),_0x2dcb5a[_0x0883('0x33')],_0x2dcb5a['calleridname'],_0x2dcb5a[_0x0883('0x22')],_0x2dcb5a[_0x0883('0x23')],_0x2dcb5a[_0x0883('0x34')]));_0x278775[_0x0883('0x35')](_0x4ee4bc['finally']['id'],function(_0x4a85da){try{_0x4a85da=_0xb7974e['clear'](_0x4a85da);logger['debug'](_0x0883('0x36'),JSON[_0x0883('0x1a')](_0x4a85da,null,0x2));if(_0x4a85da&&_0xb7974e[_0x4a85da[_0x0883('0xa')]]){_0x4705b4=_0xb7974e[_0x4a85da[_0x0883('0xa')]](_0x4a85da);if(_0x4705b4){logger[_0x0883('0x19')](_0x0883('0x2c'),inspect(_0x4705b4));return _[_0x0883('0x2d')](_0x4705b4[_0x0883('0x2a')])?null:_0x4705b4[_0x0883('0x2a')][_0x0883('0x2e')]();}else{logger['error']('response',inspect(_0x4705b4));return null;}}else{logger[_0x0883('0x2f')](_0x0883('0x30'));return null;}}catch(_0x4f1dc0){logger['error'](_0x4f1dc0['stack']);return null;}});}logger[_0x0883('0x20')](util[_0x0883('0x1c')](_0x0883('0x37'),_0x2dcb5a['arg_1'],_0x2dcb5a[_0x0883('0x21')],_0x2dcb5a[_0x0883('0x22')],_0x2dcb5a[_0x0883('0x23')],_0x2dcb5a[_0x0883('0x34')]));logger[_0x0883('0x20')](util['format'](_0x0883('0x38'),_0x2dcb5a['context'],_0x2dcb5a[_0x0883('0x27')],parseInt(_0x2dcb5a[_0x0883('0x28')],0xa)+0x1));_0x2dcb5a[_0x0883('0x39')](_0x2dcb5a['context'],_0x2dcb5a[_0x0883('0x27')],parseInt(_0x2dcb5a[_0x0883('0x28')],0xa)+0x1);_0x2dcb5a[_0x0883('0x3a')]();}function handleNotFound(_0x5bd921){logger[_0x0883('0x2f')](util[_0x0883('0x1c')](_0x0883('0x3b'),_0x5bd921['arg_1']));_0x5bd921[_0x0883('0x39')](_0x5bd921['context'],_0x5bd921[_0x0883('0x27')],parseInt(_0x5bd921[_0x0883('0x28')],0xa)+0x1);_0x5bd921['close']();}function handleUnpublished(_0x413b3c){logger[_0x0883('0x2f')](util[_0x0883('0x1c')](_0x0883('0x3c'),_0x413b3c[_0x0883('0x33')]));_0x413b3c['continueAt'](_0x413b3c[_0x0883('0x26')],_0x413b3c[_0x0883('0x27')],parseInt(_0x413b3c[_0x0883('0x28')],0xa)+0x1);_0x413b3c['close']();}module[_0x0883('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0xfe51=['./rpc','./mailRpc','./vertices','getSquareProjects','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','target','addEdge','source','value','toJson','root','inspect','production','start','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','clear','debug','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','stringify','code','result','evtHangup','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','dnid','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','Project\x20%s\x20not\x20published','exports','lodash','moment','xml2json','util','../../config/logger'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xfe51,0x77));var _0x1fe5=function(_0x31c08c,_0x4250fa){_0x31c08c=_0x31c08c-0x0;var _0x2c76d4=_0xfe51[_0x31c08c];return _0x2c76d4;};'use strict';var _=require(_0x1fe5('0x0'));var moment=require(_0x1fe5('0x1'));var parser=require(_0x1fe5('0x2'));var util=require(_0x1fe5('0x3'));var logger=require(_0x1fe5('0x4'))('agi');var rpc=require(_0x1fe5('0x5'));var mailRpc=require(_0x1fe5('0x6'));var Graph=require('./graph');var Vertices=require(_0x1fe5('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x1fe5('0x8')]()['catch'](function(_0x25c86f){logger[_0x1fe5('0x9')](_0x1fe5('0xa'),_0x25c86f[_0x1fe5('0xb')]);return[];});}function addVertex(_0x51126c,_0x3c967f,_0x1ce6f0){_0x3c967f[_0x1fe5('0xc')]=_0x1ce6f0;if(_0x3c967f[_0x1fe5('0xd')](_0x1fe5('0xe'))){_0x3c967f[_0x1fe5('0xf')]=parseInt(_0x3c967f[_0x1fe5('0xe')],0xa);}_0x51126c[_0x1fe5('0x10')](_[_0x1fe5('0x11')](_0x3c967f,_0x1fe5('0x12')));}function initGraph(_0x107316,_0x1e1b7e){var _0xfff909=new Graph();for(var _0x212685 in _0x107316){if(_0x107316[_0x1fe5('0xd')](_0x212685)){if(_[_0x1fe5('0x13')](_0x107316[_0x212685])){for(var _0x102c99=0x0;_0x102c99<_0x107316[_0x212685]['length'];_0x102c99+=0x1){addVertex(_0xfff909,_0x107316[_0x212685][_0x102c99],_0x212685);}}else{addVertex(_0xfff909,_0x107316[_0x212685],_0x212685);}}}for(var _0x43832a=0x0;_0x43832a<_0x1e1b7e['length'];_0x43832a+=0x1){if(_0x1e1b7e[_0x43832a]['source']&&_0x1e1b7e[_0x43832a][_0x1fe5('0x14')]){_0xfff909[_0x1fe5('0x15')](_0x1e1b7e[_0x43832a][_0x1fe5('0x16')],_0x1e1b7e[_0x43832a]['target'],_0x1e1b7e[_0x43832a][_0x1fe5('0x17')]);}}return _0xfff909;}function getRoot(_0x34013d){return parser[_0x1fe5('0x18')](_0x34013d,{'object':!![]})['mxGraphModel'][_0x1fe5('0x19')];}function inspect(_0x4d55ba){return util[_0x1fe5('0x1a')](_0x4d55ba,{'showHidden':![],'depth':null});}function initialize(_0x50c4f7,_0x268f49){var _0x28c3dc=getRoot(_0x50c4f7[_0x1fe5('0x1b')]);if(!_0x28c3dc||!_0x28c3dc[_0x1fe5('0x1c')])return;var _0xba56c8,_0x7b3d93,_0x43152f;logger['debug']('root',JSON['stringify'](_0x28c3dc,null,0x2));_0x268f49[_0x1fe5('0x1d')]=moment()[_0x1fe5('0x1e')](_0x1fe5('0x1f'));_0xba56c8=initGraph(_[_0x1fe5('0x11')](_0x28c3dc,_0x1fe5('0x12')),_0x28c3dc['mxCell']);_0x7b3d93=new Vertices(_0x268f49,rpc,mailRpc);logger[_0x1fe5('0x20')](util[_0x1fe5('0x1e')](_0x1fe5('0x21'),_0x268f49[_0x1fe5('0x22')],_0x268f49[_0x1fe5('0x23')],_0x268f49[_0x1fe5('0x24')],_0x268f49['dnid'],_0x268f49[_0x1fe5('0x25')]));_0xba56c8['traverseBFS'](_0x28c3dc[_0x1fe5('0x1c')]['id'],function(_0xdf4824){try{_0xdf4824=_0x7b3d93[_0x1fe5('0x26')](_0xdf4824);logger[_0x1fe5('0x27')](_0x1fe5('0x28'),JSON['stringify'](_0xdf4824,null,0x2));if(_0xdf4824[_0x1fe5('0xc')]===_0x1fe5('0x29')){logger[_0x1fe5('0x20')](_0x1fe5('0x2a'));_0x268f49['context']=_0xdf4824[_0x1fe5('0x2b')]||_0x268f49[_0x1fe5('0x2b')];_0x268f49['extension']=_0xdf4824[_0x1fe5('0x2c')];_0x268f49[_0x1fe5('0x2d')]=_0xdf4824[_0x1fe5('0x2d')]?_0xdf4824[_0x1fe5('0x2d')]-0x1:0x1;return null;}else if(_0xdf4824&&_0x7b3d93[_0xdf4824[_0x1fe5('0xc')]]){_0x43152f=_0x7b3d93[_0xdf4824['agicommand']](_0xdf4824);logger[_0x1fe5('0x20')](_0x1fe5('0x2e'),JSON[_0x1fe5('0x2f')](_0x43152f,null,0x2));if(_0x43152f&&_0x43152f[_0x1fe5('0x30')]===AGI_CODE_SUCCESS&&_0x43152f[_0x1fe5('0x31')]!==AGI_RESULT_ERROR&&!_0x268f49[_0x1fe5('0x32')]){logger['debug'](_0x1fe5('0x2e'),inspect(_0x43152f));return _[_0x1fe5('0x33')](_0x43152f['result'])?null:_0x43152f[_0x1fe5('0x31')][_0x1fe5('0x34')]();}else{logger[_0x1fe5('0x9')]('response',inspect(_0x43152f));return null;}}else{logger[_0x1fe5('0x9')](_0x1fe5('0x35'));return null;}}catch(_0x38ff09){logger[_0x1fe5('0x9')](_0x38ff09[_0x1fe5('0xb')]);return null;}});if(_0x28c3dc[_0x1fe5('0x36')]){logger['info'](util[_0x1fe5('0x1e')](_0x1fe5('0x37'),_0x268f49[_0x1fe5('0x22')],_0x268f49[_0x1fe5('0x23')],_0x268f49[_0x1fe5('0x24')],_0x268f49[_0x1fe5('0x38')],_0x268f49[_0x1fe5('0x25')]));_0xba56c8['traverseBFS'](_0x28c3dc[_0x1fe5('0x36')]['id'],function(_0x4e7dff){try{_0x4e7dff=_0x7b3d93['clear'](_0x4e7dff);logger[_0x1fe5('0x27')](_0x1fe5('0x28'),JSON[_0x1fe5('0x2f')](_0x4e7dff,null,0x2));if(_0x4e7dff&&_0x7b3d93[_0x4e7dff[_0x1fe5('0xc')]]){_0x43152f=_0x7b3d93[_0x4e7dff[_0x1fe5('0xc')]](_0x4e7dff);if(_0x43152f){logger[_0x1fe5('0x27')](_0x1fe5('0x2e'),inspect(_0x43152f));return _['isUndefined'](_0x43152f[_0x1fe5('0x31')])?null:_0x43152f[_0x1fe5('0x31')][_0x1fe5('0x34')]();}else{logger[_0x1fe5('0x9')](_0x1fe5('0x2e'),inspect(_0x43152f));return null;}}else{logger['error'](_0x1fe5('0x35'));return null;}}catch(_0x161445){logger['error'](_0x161445[_0x1fe5('0xb')]);return null;}});}logger[_0x1fe5('0x20')](util[_0x1fe5('0x1e')](_0x1fe5('0x39'),_0x268f49['arg_1'],_0x268f49[_0x1fe5('0x23')],_0x268f49[_0x1fe5('0x24')],_0x268f49['dnid'],_0x268f49[_0x1fe5('0x25')]));logger[_0x1fe5('0x20')](util[_0x1fe5('0x1e')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x268f49['context'],_0x268f49[_0x1fe5('0x2c')],parseInt(_0x268f49[_0x1fe5('0x2d')],0xa)+0x1));_0x268f49[_0x1fe5('0x3a')](_0x268f49['context'],_0x268f49[_0x1fe5('0x2c')],parseInt(_0x268f49[_0x1fe5('0x2d')],0xa)+0x1);_0x268f49[_0x1fe5('0x3b')]();}function handleNotFound(_0x3053ac){logger[_0x1fe5('0x9')](util[_0x1fe5('0x1e')]('Project\x20%s\x20not\x20found',_0x3053ac[_0x1fe5('0x22')]));_0x3053ac['continueAt'](_0x3053ac[_0x1fe5('0x2b')],_0x3053ac['extension'],parseInt(_0x3053ac['priority'],0xa)+0x1);_0x3053ac[_0x1fe5('0x3b')]();}function handleUnpublished(_0x476382){logger[_0x1fe5('0x9')](util[_0x1fe5('0x1e')](_0x1fe5('0x3c'),_0x476382[_0x1fe5('0x22')]));_0x476382[_0x1fe5('0x3a')](_0x476382[_0x1fe5('0x2b')],_0x476382[_0x1fe5('0x2c')],parseInt(_0x476382[_0x1fe5('0x2d')],0xa)+0x1);_0x476382[_0x1fe5('0x3b')]();}module[_0x1fe5('0x3d')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 41c8b9a..426caf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85a=['util','stream','Transform','call','_localBuffer','_inBody','prototype','_transform','toString','indexOf','substring','length','split','slice','trim','emit','headers','line'];(function(_0x4adebf,_0x3fb8e0){var _0x1d5608=function(_0x25791c){while(--_0x25791c){_0x4adebf['push'](_0x4adebf['shift']());}};_0x1d5608(++_0x3fb8e0);}(_0xc85a,0x90));var _0xac85=function(_0x5b1dd0,_0x7a91f){_0x5b1dd0=_0x5b1dd0-0x0;var _0x111ae9=_0xc85a[_0x5b1dd0];return _0x111ae9;};'use strict';var util=require(_0xac85('0x0'));var Transform=require(_0xac85('0x1'))[_0xac85('0x2')];function AGIReply(_0x469e94){Transform[_0xac85('0x3')](this,_0x469e94);this[_0xac85('0x4')]='';this[_0xac85('0x5')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0xac85('0x6')][_0xac85('0x7')]=function(_0x2a579c,_0x3eb94a,_0x4e6a02){var _0x315aca='\x0a',_0x48cf2d=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x514a7c=-0x1,_0x54a6b2=-0x1,_0x3990a7='',_0x4107fe=0x0,_0x19b2ae='',_0xad274d='';this[_0xac85('0x4')]+=_0x2a579c[_0xac85('0x8')]();_0x19b2ae=this['_localBuffer'];if(!this['_inBody']){_0x4107fe=0x0;while(_0x48cf2d[_0x4107fe]){while((_0x54a6b2=_0x19b2ae[_0xac85('0x9')](_0x48cf2d[_0x4107fe]))!=-0x1){_0x3990a7=_0x48cf2d[_0x4107fe];_0xad274d=_0x19b2ae[_0xac85('0xa')](0x0,_0x54a6b2);_0x19b2ae=_0x19b2ae['substring'](_0x54a6b2+_0x3990a7[_0xac85('0xb')]);var _0x3d0ad6=_0xad274d[_0xac85('0xc')](_0x315aca),_0x4ea6ec=0x0,_0x131b39={},_0x1f0e38='',_0x1ff71e='',_0x53288b=-0x1;while(_0x3d0ad6[_0x4ea6ec]){_0x53288b=_0x3d0ad6[_0x4ea6ec][_0xac85('0x9')](':');if(_0x53288b!=-0x1){_0x1f0e38=_0x3d0ad6[_0x4ea6ec][_0xac85('0xd')](0x0,_0x53288b)[_0xac85('0xe')]();_0x1ff71e=_0x3d0ad6[_0x4ea6ec][_0xac85('0xd')](_0x53288b+0x1)[_0xac85('0xe')]();if(_0x1f0e38[_0xac85('0xb')]>0x0){_0x131b39[_0x1f0e38]=_0x1ff71e;}}else{}_0x4ea6ec++;}this[_0xac85('0xf')](_0xac85('0x10'),_0x131b39);this[_0xac85('0x5')]=!![];}_0x4107fe++;}this['_localBuffer']=_0x19b2ae;}else{while((_0x514a7c=_0x19b2ae[_0xac85('0x9')](_0x315aca))!=-0x1){_0xad274d=_0x19b2ae[_0xac85('0xa')](0x0,_0x514a7c);this['emit'](_0xac85('0x11'),_0xad274d);_0x19b2ae=_0x19b2ae[_0xac85('0xa')](_0x514a7c+_0x315aca[_0xac85('0xb')]);}this['_localBuffer']=_0x19b2ae;}_0x4e6a02();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x8f94=['_transform','_localBuffer','indexOf','substring','length','split','slice','trim','headers','emit','line','util','stream','Transform','call','_inBody','inherits'];(function(_0x316100,_0x40076d){var _0x2e1935=function(_0x2dacf){while(--_0x2dacf){_0x316100['push'](_0x316100['shift']());}};_0x2e1935(++_0x40076d);}(_0x8f94,0xd7));var _0x48f9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x8f94[_0x5b644e];return _0x49c6bf;};'use strict';var util=require(_0x48f9('0x0'));var Transform=require(_0x48f9('0x1'))[_0x48f9('0x2')];function AGIReply(_0x3cdb59){Transform[_0x48f9('0x3')](this,_0x3cdb59);this['_localBuffer']='';this[_0x48f9('0x4')]=![];}util[_0x48f9('0x5')](AGIReply,Transform);AGIReply['prototype'][_0x48f9('0x6')]=function(_0x53ecc4,_0x2f6a18,_0x5d427f){var _0x38c652='\x0a',_0x45cdf7=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x48e93f=-0x1,_0x2fe384=-0x1,_0x28704d='',_0x24bc0f=0x0,_0x1fde15='',_0x1ec24c='';this[_0x48f9('0x7')]+=_0x53ecc4['toString']();_0x1fde15=this[_0x48f9('0x7')];if(!this[_0x48f9('0x4')]){_0x24bc0f=0x0;while(_0x45cdf7[_0x24bc0f]){while((_0x2fe384=_0x1fde15[_0x48f9('0x8')](_0x45cdf7[_0x24bc0f]))!=-0x1){_0x28704d=_0x45cdf7[_0x24bc0f];_0x1ec24c=_0x1fde15['substring'](0x0,_0x2fe384);_0x1fde15=_0x1fde15[_0x48f9('0x9')](_0x2fe384+_0x28704d[_0x48f9('0xa')]);var _0x4839ad=_0x1ec24c[_0x48f9('0xb')](_0x38c652),_0x18c127=0x0,_0x12cdfb={},_0xe9eceb='',_0x5249c3='',_0x28d8e9=-0x1;while(_0x4839ad[_0x18c127]){_0x28d8e9=_0x4839ad[_0x18c127]['indexOf'](':');if(_0x28d8e9!=-0x1){_0xe9eceb=_0x4839ad[_0x18c127][_0x48f9('0xc')](0x0,_0x28d8e9)[_0x48f9('0xd')]();_0x5249c3=_0x4839ad[_0x18c127][_0x48f9('0xc')](_0x28d8e9+0x1)['trim']();if(_0xe9eceb[_0x48f9('0xa')]>0x0){_0x12cdfb[_0xe9eceb]=_0x5249c3;}}else{}_0x18c127++;}this['emit'](_0x48f9('0xe'),_0x12cdfb);this[_0x48f9('0x4')]=!![];}_0x24bc0f++;}this[_0x48f9('0x7')]=_0x1fde15;}else{while((_0x48e93f=_0x1fde15[_0x48f9('0x8')](_0x38c652))!=-0x1){_0x1ec24c=_0x1fde15[_0x48f9('0x9')](0x0,_0x48e93f);this[_0x48f9('0xf')](_0x48f9('0x10'),_0x1ec24c);_0x1fde15=_0x1fde15[_0x48f9('0x9')](_0x48e93f+_0x38c652[_0x48f9('0xa')]);}this['_localBuffer']=_0x1fde15;}_0x5d427f();};module['exports']=AGIReply;
\ No newline at end of file
index 1d620c7..3bee34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee8=['ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentUnpause','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','http','request','then','error','catch','getSquareProjects','GetSquareProjects','name','production','ShowSquareProject','getMailAccountById','MailServerOut','CloudProvider','email','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','GetContactByPhone','phone','getTrunkById','getSoundById','save_name','getIntervalById','Interval','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper'];(function(_0x37d7ca,_0x400096){var _0x1aa619=function(_0x468742){while(--_0x468742){_0x37d7ca['push'](_0x37d7ca['shift']());}};_0x1aa619(++_0x400096);}(_0xcee8,0xb1));var _0x8cee=function(_0x4808ca,_0x41200f){_0x4808ca=_0x4808ca-0x0;var _0x457ef2=_0xcee8[_0x4808ca];return _0x457ef2;};'use strict';var _=require(_0x8cee('0x0'));var moment=require(_0x8cee('0x1'));var jayson=require(_0x8cee('0x2'));var client=jayson[_0x8cee('0x3')][_0x8cee('0x4')]({'port':0x2329});function request(_0x6608db,_0x5b82bd){return new Promise(function(_0x127360,_0x4e4143){return client[_0x8cee('0x5')](_0x6608db,_0x5b82bd)[_0x8cee('0x6')](function(_0x482900){if(_0x482900[_0x8cee('0x7')]){return _0x4e4143(_0x482900[_0x8cee('0x7')]['message']);}else{return _0x127360(_0x482900['result']);}})[_0x8cee('0x8')](function(_0x49a070){return _0x4e4143(_0x49a070);});});}exports[_0x8cee('0x9')]=function(){return request(_0x8cee('0xa'),{'options':{'raw':![],'attributes':['id',_0x8cee('0xb'),_0x8cee('0xc')]}});};exports['getSquareProject']=function(_0x17d67a){return request(_0x8cee('0xd'),{'options':{'raw':![],'where':{'name':_0x17d67a},'attributes':['production']}});};exports[_0x8cee('0xe')]=function(_0x16a4b9){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x16a4b9},'include':[{'model':_0x8cee('0xf'),'as':'Smtp','include':[{'model':_0x8cee('0x10'),'as':_0x8cee('0x10')}]}],'attributes':['id',_0x8cee('0xb'),_0x8cee('0x11')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x5d4de3){return request(_0x8cee('0xd'),{'options':{'where':{'id':_0x5d4de3},'attributes':[_0x8cee('0xb')]}});};exports[_0x8cee('0x12')]=function(_0x227762){return request(_0x8cee('0x13'),{'options':{'where':{'id':_0x227762},'attributes':[_0x8cee('0xb')]}});};exports[_0x8cee('0x14')]=function(_0x3c3694){return request(_0x8cee('0x15'),{'options':{'where':{'id':_0x3c3694},'attributes':[_0x8cee('0xb')]}});};exports[_0x8cee('0x16')]=function(_0x39213b){return request(_0x8cee('0x17'),{'options':{'where':{'id':_0x39213b},'attributes':[_0x8cee('0x18')]}});};exports[_0x8cee('0x19')]=function(_0x5f53e3){return request(_0x8cee('0x1a'),{'options':{'where':{'id':_0x5f53e3},'attributes':['name']}});};exports['getContactByPhone']=function(_0x8e242b){return request(_0x8cee('0x1b'),{'options':{'where':{'phone':_0x8e242b[_0x8cee('0x1c')]},'attributes':['id']}});};exports[_0x8cee('0x1d')]=function(_0x42d863){return request('ShowTrunk',{'options':{'where':{'id':_0x42d863},'attributes':[_0x8cee('0xb')]}});};exports[_0x8cee('0x1e')]=function(_0x1f110c){return request('ShowSound',{'options':{'where':{'id':_0x1f110c},'attributes':[_0x8cee('0x1f')]}});};exports[_0x8cee('0x20')]=function(_0x52262a){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x52262a},'include':[{'model':_0x8cee('0x21'),'as':'Intervals'}]}});};exports['getSmsAccountById']=function(_0x51a93f){return request('ShowSmsAccount',{'options':{'where':{'id':_0x51a93f},'attributes':['id',_0x8cee('0xb')]}});};exports['createSmsMessage']=function(_0x117bc6){return request('CreateSmsMessage',{'body':_0x117bc6});};exports[_0x8cee('0x22')]=function(_0x27e8fb){return request(_0x8cee('0x23'),{'body':_0x27e8fb});};exports[_0x8cee('0x24')]=function(_0x38fcd6){return request(_0x8cee('0x25'),{'body':_[_0x8cee('0x26')](_0x38fcd6,{'project_name':_0x38fcd6[_0x8cee('0x27')],'prev_project_name':_0x38fcd6['arg_2']||'','is_subproject':_0x38fcd6[_0x8cee('0x28')]?!![]:![],'leaveAt':moment()[_0x8cee('0x29')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x17c2ad){return request(_0x8cee('0x2a'),{'body':_0x17c2ad});};exports[_0x8cee('0x2b')]=function(_0x8b5e32){return request(_0x8cee('0x2c'),{'body':_0x8b5e32});};exports[_0x8cee('0x2d')]=function(_0x51003d){return request(_0x8cee('0x2e'),{'options':{'raw':![],'where':{'phone':_0x51003d['phone'],'ListId':_0x51003d[_0x8cee('0x2f')]}}})[_0x8cee('0x6')](function(_0x16f571){if(_0x16f571){return _0x16f571;}return request(_0x8cee('0x30'),{'body':_0x51003d});});};exports[_0x8cee('0x31')]=function(_0x513759){return request(_0x8cee('0x32'),{'options':{'where':{'id':_0x513759},'attributes':['name']}});};exports[_0x8cee('0x33')]=function(_0xcd691,_0x22adea){return request(_0x8cee('0x34'),{'body':{'interface':_0x22adea},'options':{'where':_0xcd691}});};exports['agentPause']=function(_0x3df58f,_0x5aab70,_0x2ede52){return request('PauseUser',{'body':{'type':_0x5aab70,'uniqueid':_0x2ede52},'options':{'where':_0x3df58f}});};exports[_0x8cee('0x35')]=function(_0x495100){return request('UnpauseUser',{'body':{},'options':{'where':_0x495100}});};exports[_0x8cee('0x36')]=function(_0xebb76e){return request(_0x8cee('0x37'),{'body':{},'options':{'where':_0xebb76e}});};
\ No newline at end of file
+var _0x47c7=['ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','CreateSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','LogoutUser','lodash','jayson/promise','client','request','then','error','result','catch','getSquareProjects','GetSquareProjects','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','phone','getTrunkById','getSoundById'];(function(_0x391fec,_0x30feb9){var _0x4c71f8=function(_0x3d9ec8){while(--_0x3d9ec8){_0x391fec['push'](_0x391fec['shift']());}};_0x4c71f8(++_0x30feb9);}(_0x47c7,0x1ab));var _0x747c=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x47c7[_0x2235bf];return _0x4c3a64;};'use strict';var _=require(_0x747c('0x0'));var moment=require('moment');var jayson=require(_0x747c('0x1'));var client=jayson[_0x747c('0x2')]['http']({'port':0x2329});function request(_0xbe1d88,_0x2af847){return new Promise(function(_0x51f4bc,_0x3313cd){return client[_0x747c('0x3')](_0xbe1d88,_0x2af847)[_0x747c('0x4')](function(_0x259638){if(_0x259638['error']){return _0x3313cd(_0x259638[_0x747c('0x5')]['message']);}else{return _0x51f4bc(_0x259638[_0x747c('0x6')]);}})[_0x747c('0x7')](function(_0x10b9f0){return _0x3313cd(_0x10b9f0);});});}exports[_0x747c('0x8')]=function(){return request(_0x747c('0x9'),{'options':{'raw':![],'attributes':['id','name','production']}});};exports[_0x747c('0xa')]=function(_0x3b5d7c){return request(_0x747c('0xb'),{'options':{'raw':![],'where':{'name':_0x3b5d7c},'attributes':['production']}});};exports[_0x747c('0xc')]=function(_0x28b782){return request(_0x747c('0xd'),{'options':{'raw':![],'where':{'id':_0x28b782},'include':[{'model':'MailServerOut','as':_0x747c('0xe'),'include':[{'model':'CloudProvider','as':'CloudProvider'}]}],'attributes':['id',_0x747c('0xf'),_0x747c('0x10')],'smtp':!![]}});};exports[_0x747c('0x11')]=function(_0x25e1b6){return request(_0x747c('0xb'),{'options':{'where':{'id':_0x25e1b6},'attributes':[_0x747c('0xf')]}});};exports[_0x747c('0x12')]=function(_0x323c4e){return request(_0x747c('0x13'),{'options':{'where':{'id':_0x323c4e},'attributes':[_0x747c('0xf')]}});};exports['getVariableById']=function(_0x54a895){return request(_0x747c('0x14'),{'options':{'where':{'id':_0x54a895},'attributes':[_0x747c('0xf')]}});};exports[_0x747c('0x15')]=function(_0x5caaad){return request(_0x747c('0x16'),{'options':{'where':{'id':_0x5caaad},'attributes':[_0x747c('0x17')]}});};exports[_0x747c('0x18')]=function(_0x2fa7a8){return request(_0x747c('0x19'),{'options':{'where':{'id':_0x2fa7a8},'attributes':[_0x747c('0xf')]}});};exports['getContactByPhone']=function(_0x19080b){return request('GetContactByPhone',{'options':{'where':{'phone':_0x19080b[_0x747c('0x1a')]},'attributes':['id']}});};exports[_0x747c('0x1b')]=function(_0x328e47){return request('ShowTrunk',{'options':{'where':{'id':_0x328e47},'attributes':[_0x747c('0xf')]}});};exports[_0x747c('0x1c')]=function(_0x85e468){return request(_0x747c('0x1d'),{'options':{'where':{'id':_0x85e468},'attributes':[_0x747c('0x1e')]}});};exports[_0x747c('0x1f')]=function(_0x378df8){return request(_0x747c('0x20'),{'options':{'raw':![],'where':{'id':_0x378df8},'include':[{'model':_0x747c('0x21'),'as':_0x747c('0x22')}]}});};exports[_0x747c('0x23')]=function(_0x2a1233){return request('ShowSmsAccount',{'options':{'where':{'id':_0x2a1233},'attributes':['id',_0x747c('0xf')]}});};exports['createSmsMessage']=function(_0x2e76dc){return request(_0x747c('0x24'),{'body':_0x2e76dc});};exports[_0x747c('0x25')]=function(_0x23a458){return request('CreateSquareDetailsReport',{'body':_0x23a458});};exports['createSquareReport']=function(_0xb20a10){return request(_0x747c('0x26'),{'body':_[_0x747c('0x27')](_0xb20a10,{'project_name':_0xb20a10[_0x747c('0x28')],'prev_project_name':_0xb20a10[_0x747c('0x29')]||'','is_subproject':_0xb20a10['arg_2']?!![]:![],'leaveAt':moment()[_0x747c('0x2a')](_0x747c('0x2b'))})});};exports[_0x747c('0x2c')]=function(_0x5d4d37){return request(_0x747c('0x2d'),{'body':_0x5d4d37});};exports['createSquareMessage']=function(_0x12fb80){return request(_0x747c('0x2e'),{'body':_0x12fb80});};exports[_0x747c('0x2f')]=function(_0xec4098){return request(_0x747c('0x30'),{'options':{'raw':![],'where':{'phone':_0xec4098[_0x747c('0x1a')],'ListId':_0xec4098[_0x747c('0x31')]}}})[_0x747c('0x4')](function(_0x41b26e){if(_0x41b26e){return _0x41b26e;}return request('CreateCmContact',{'body':_0xec4098});});};exports[_0x747c('0x32')]=function(_0x1d04f1){return request(_0x747c('0x33'),{'options':{'where':{'id':_0x1d04f1},'attributes':[_0x747c('0xf')]}});};exports[_0x747c('0x34')]=function(_0x3e0c6f,_0x2e1d27){return request(_0x747c('0x35'),{'body':{'interface':_0x2e1d27},'options':{'where':_0x3e0c6f}});};exports[_0x747c('0x36')]=function(_0x2cda4e,_0x4a2682,_0x58e566){return request(_0x747c('0x37'),{'body':{'type':_0x4a2682,'uniqueid':_0x58e566},'options':{'where':_0x2cda4e}});};exports['agentUnpause']=function(_0x55e762){return request('UnpauseUser',{'body':{},'options':{'where':_0x55e762}});};exports['agentLogout']=function(_0x26abf1){return request(_0x747c('0x38'),{'body':{},'options':{'where':_0x26abf1}});};
\ No newline at end of file
index 0c8a937..b5f78fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770d=['./lex','exports','./polly'];(function(_0x34f06c,_0x41062d){var _0x327f6a=function(_0x53e0b9){while(--_0x53e0b9){_0x34f06c['push'](_0x34f06c['shift']());}};_0x327f6a(++_0x41062d);}(_0x770d,0x122));var _0xd770=function(_0x8f1506,_0x3be1e8){_0x8f1506=_0x8f1506-0x0;var _0x41dbd6=_0x770d[_0x8f1506];return _0x41dbd6;};var polly=require(_0xd770('0x0'));var lex=require(_0xd770('0x1'));module[_0xd770('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x2070=['exports'];(function(_0x30b159,_0x3fbb50){var _0x23c3f9=function(_0xa21305){while(--_0xa21305){_0x30b159['push'](_0x30b159['shift']());}};_0x23c3f9(++_0x3fbb50);}(_0x2070,0x1a2));var _0x0207=function(_0x486747,_0x438892){_0x486747=_0x486747-0x0;var _0x37bd0d=_0x2070[_0x486747];return _0x37bd0d;};var polly=require('./polly');var lex=require('./lex');module[_0x0207('0x0')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 7090e71..f741200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['exports','./lib/api'];(function(_0x2defc7,_0x10bf1f){var _0x1a6222=function(_0x172cd6){while(--_0x172cd6){_0x2defc7['push'](_0x2defc7['shift']());}};_0x1a6222(++_0x10bf1f);}(_0xac4a,0x13f));var _0xaac4=function(_0x5982d9,_0x6fe350){_0x5982d9=_0x5982d9-0x0;var _0x28a673=_0xac4a[_0x5982d9];return _0x28a673;};'use strict';var lex=require(_0xaac4('0x0'));module[_0xaac4('0x1')]=function(_0x2e2ad0,_0x132fc3,_0x38f4f4,_0x1dc251,_0x5aeb7d,_0x58626e){return lex(_0x2e2ad0,_0x132fc3,_0x38f4f4,_0x1dc251,_0x5aeb7d,_0x58626e);};
\ No newline at end of file
+var _0xb58b=['exports'];(function(_0x4e3c56,_0x33dd5d){var _0x2a5451=function(_0x27998f){while(--_0x27998f){_0x4e3c56['push'](_0x4e3c56['shift']());}};_0x2a5451(++_0x33dd5d);}(_0xb58b,0x1f1));var _0xbb58=function(_0x380e21,_0x3782a7){_0x380e21=_0x380e21-0x0;var _0x46b982=_0xb58b[_0x380e21];return _0x46b982;};'use strict';var lex=require('./lib/api');module[_0xbb58('0x0')]=function(_0x3de0dd,_0x3fb85a,_0x4f5d42,_0x340c23,_0x4e6d6c,_0x5c9ec5){return lex(_0x3de0dd,_0x3fb85a,_0x4f5d42,_0x340c23,_0x4e6d6c,_0x5c9ec5);};
\ No newline at end of file
index 1ed770f..1ac9b9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1b93a2,_0x22bcd8){var _0x3c714d=function(_0x3f938a){while(--_0x3f938a){_0x1b93a2['push'](_0x1b93a2['shift']());}};_0x3c714d(++_0x22bcd8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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(_0x1faaa1,_0x13d548){var _0x13e58f=function(_0x4fbbb8){while(--_0x4fbbb8){_0x1faaa1['push'](_0x1faaa1['shift']());}};_0x13e58f(++_0x13d548);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 9401eb3..54109a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad3b=['exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xad3b,0x11f));var _0xbad3=function(_0x57e50b,_0x16e856){_0x57e50b=_0x57e50b-0x0;var _0x4a1016=_0xad3b[_0x57e50b];return _0x4a1016;};'use strict';var polly=require('./lib/api');module[_0xbad3('0x0')]=function(_0x27ed34,_0x4ba868,_0x2c6e18,_0x1f60b5,_0x5dcb84,_0x4d1781,_0x153019){return polly(_0x27ed34,_0x4ba868,_0x2c6e18,_0x1f60b5,_0x5dcb84,_0x4d1781,_0x153019);};
\ No newline at end of file
+var _0x6990=['exports'];(function(_0x103411,_0x401c53){var _0x153774=function(_0x501e4d){while(--_0x501e4d){_0x103411['push'](_0x103411['shift']());}};_0x153774(++_0x401c53);}(_0x6990,0x124));var _0x0699=function(_0x1fd053,_0x309b86){_0x1fd053=_0x1fd053-0x0;var _0x33b6d2=_0x6990[_0x1fd053];return _0x33b6d2;};'use strict';var polly=require('./lib/api');module[_0x0699('0x0')]=function(_0x26c4b6,_0x1d3b36,_0x16b000,_0x139051,_0x3e9650,_0x16412f,_0x28b915){return polly(_0x26c4b6,_0x1d3b36,_0x16b000,_0x139051,_0x3e9650,_0x16412f,_0x28b915);};
\ No newline at end of file
index c6d2e54..a7f6a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ef1=['writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','bluebird','randomstring','aws-sdk','AudioStream'];(function(_0x43907a,_0x494c2f){var _0x4927d2=function(_0x31a201){while(--_0x31a201){_0x43907a['push'](_0x43907a['shift']());}};_0x4927d2(++_0x494c2f);}(_0x7ef1,0x9b));var _0x17ef=function(_0x5d1a3f,_0x15c8f4){_0x5d1a3f=_0x5d1a3f-0x0;var _0x37983c=_0x7ef1[_0x5d1a3f];return _0x37983c;};'use strict';var fs=require('fs');var path=require(_0x17ef('0x0'));var BPromise=require(_0x17ef('0x1'));var rs=require(_0x17ef('0x2'));var AWS=require(_0x17ef('0x3'));function pollyResult(_0x10d6c3,_0x4962d4,_0x27212b){return new BPromise(function(_0x44346c,_0x1bc054){_0x10d6c3['synthesizeSpeech'](_0x4962d4,function(_0x2b1834,_0x2d9c46){if(_0x2b1834){_0x1bc054(_0x2b1834);}else if(_0x2d9c46){if(_0x2d9c46[_0x17ef('0x4')]instanceof Buffer){fs[_0x17ef('0x5')](_0x27212b,_0x2d9c46[_0x17ef('0x4')],function(_0x1ae250){if(_0x1ae250){_0x1bc054(_0x1ae250);}else{_0x44346c();}});}else{_0x1bc054(new Error(_0x17ef('0x6')));}}else{_0x1bc054(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x17ef('0x7')]=function(_0xaf1849,_0x263491,_0x42e4f9,_0xf643c9,_0x6c7ad,_0x2c9b7c,_0x3e919f){var _0x6f521d=new AWS['Polly']({'accessKeyId':_0xaf1849,'secretAccessKey':_0x263491,'region':_0x42e4f9});var _0x298675={'Text':_0x6c7ad,'TextType':_0x2c9b7c||_0x17ef('0x8'),'OutputFormat':_0x17ef('0x9'),'VoiceId':_0xf643c9};return pollyResult(_0x6f521d,_0x298675,_0x3e919f);};
\ No newline at end of file
+var _0x7e77=['AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','path','bluebird'];(function(_0x177b4b,_0x5b0f28){var _0x2ead42=function(_0x1d0393){while(--_0x1d0393){_0x177b4b['push'](_0x177b4b['shift']());}};_0x2ead42(++_0x5b0f28);}(_0x7e77,0xae));var _0x77e7=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0x7e77[_0x2d34d6];return _0x1d3d12;};'use strict';var fs=require('fs');var path=require(_0x77e7('0x0'));var BPromise=require(_0x77e7('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x3fb0e1,_0x5de2e5,_0x57fe8a){return new BPromise(function(_0x16ab17,_0x5ee17e){_0x3fb0e1['synthesizeSpeech'](_0x5de2e5,function(_0x2071bd,_0x3acdf7){if(_0x2071bd){_0x5ee17e(_0x2071bd);}else if(_0x3acdf7){if(_0x3acdf7[_0x77e7('0x2')]instanceof Buffer){fs[_0x77e7('0x3')](_0x57fe8a,_0x3acdf7[_0x77e7('0x2')],function(_0x3bbcd5){if(_0x3bbcd5){_0x5ee17e(_0x3bbcd5);}else{_0x16ab17();}});}else{_0x5ee17e(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x5ee17e(new Error(_0x77e7('0x4')));}});});}module[_0x77e7('0x5')]=function(_0x10500d,_0x5cf6d5,_0xb11a9,_0x56b5ba,_0x1331e9,_0x5e0650,_0x46e3a3){var _0x20f2e4=new AWS['Polly']({'accessKeyId':_0x10500d,'secretAccessKey':_0x5cf6d5,'region':_0xb11a9});var _0x1b1b8e={'Text':_0x1331e9,'TextType':_0x5e0650||_0x77e7('0x6'),'OutputFormat':_0x77e7('0x7'),'VoiceId':_0x56b5ba};return pollyResult(_0x20f2e4,_0x1b1b8e,_0x46e3a3);};
\ No newline at end of file
index f03ea46..fe23b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c8c=['exports','./lib/api'];(function(_0x1c37a5,_0x59ee51){var _0x389d03=function(_0x51b4f4){while(--_0x51b4f4){_0x1c37a5['push'](_0x1c37a5['shift']());}};_0x389d03(++_0x59ee51);}(_0x0c8c,0xa7));var _0xc0c8=function(_0x3ae98c,_0x5f023a){_0x3ae98c=_0x3ae98c-0x0;var _0x545762=_0x0c8c[_0x3ae98c];return _0x545762;};'use strict';var asr=require(_0xc0c8('0x0'));module[_0xc0c8('0x1')]=function(_0xfb4de4,_0x25c13f,_0x2ed103,_0x316c22){return asr(_0xfb4de4,_0x25c13f,_0x2ed103);};
\ No newline at end of file
+var _0xaa61=['./lib/api','exports'];(function(_0x26b317,_0xb6e378){var _0x3ff485=function(_0x28087a){while(--_0x28087a){_0x26b317['push'](_0x26b317['shift']());}};_0x3ff485(++_0xb6e378);}(_0xaa61,0xce));var _0x1aa6=function(_0xca9bcd,_0x54e883){_0xca9bcd=_0xca9bcd-0x0;var _0x521e98=_0xaa61[_0xca9bcd];return _0x521e98;};'use strict';var asr=require(_0x1aa6('0x0'));module[_0x1aa6('0x1')]=function(_0x1e7fad,_0x1d8d46,_0x11100a,_0x499809){return asr(_0x1e7fad,_0x1d8d46,_0x11100a);};
\ No newline at end of file
index 87a190f..95a44d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a81=['exports','filepath\x20should\x20be\x20a\x20string','length','undefined','string','lang\x20should\x20be\x20a\x20string','readFileSync','POST','/v1/speech:recognize?key=','8000','url','bluebird','https://speech.googleapis.com'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x4a81,0x1b7));var _0x14a8=function(_0x2501f4,_0x167086){_0x2501f4=_0x2501f4-0x0;var _0x4d1529=_0x4a81[_0x2501f4];return _0x4d1529;};'use strict';var url=require(_0x14a8('0x0'));var BPromise=require(_0x14a8('0x1'));var fs=require('fs');var host=_0x14a8('0x2');module[_0x14a8('0x3')]=function(_0x4a7f9e,_0x5845a3,_0x45869b){return new BPromise(function(_0x53309b,_0x39c3d4){var _0x3363f8;if(typeof _0x4a7f9e!=='string'||_0x4a7f9e['length']===0x0){return _0x39c3d4(_0x14a8('0x4'));}if(typeof _0x5845a3!=='string'||_0x5845a3[_0x14a8('0x5')]===0x0){return _0x39c3d4('key\x20should\x20be\x20a\x20string');}if(typeof _0x45869b!==_0x14a8('0x6')&&(typeof _0x45869b!==_0x14a8('0x7')||_0x45869b[_0x14a8('0x5')]===0x0)){return _0x39c3d4(_0x14a8('0x8'));}try{_0x3363f8=fs[_0x14a8('0x9')](_0x4a7f9e)['toString']('base64');}catch(_0x1a6f60){return _0x39c3d4(_0x1a6f60);}return _0x53309b({'method':_0x14a8('0xa'),'uri':host+_0x14a8('0xb')+_0x5845a3,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0x14a8('0xc'),'languageCode':_0x45869b},'audio':{'content':_0x3363f8}},'json':!![]});});};
\ No newline at end of file
+var _0x4746=['POST','/v1/speech:recognize?key=','8000','url','bluebird','exports','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','string','lang\x20should\x20be\x20a\x20string','toString'];(function(_0x5cbace,_0x33943c){var _0x6de5b8=function(_0x5aae38){while(--_0x5aae38){_0x5cbace['push'](_0x5cbace['shift']());}};_0x6de5b8(++_0x33943c);}(_0x4746,0xc6));var _0x6474=function(_0x243ad5,_0x34c387){_0x243ad5=_0x243ad5-0x0;var _0x1a072a=_0x4746[_0x243ad5];return _0x1a072a;};'use strict';var url=require(_0x6474('0x0'));var BPromise=require(_0x6474('0x1'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0x6474('0x2')]=function(_0x59b95a,_0xd115f7,_0x244bc5){return new BPromise(function(_0x863c56,_0x156374){var _0x1314f4;if(typeof _0x59b95a!=='string'||_0x59b95a[_0x6474('0x3')]===0x0){return _0x156374(_0x6474('0x4'));}if(typeof _0xd115f7!=='string'||_0xd115f7[_0x6474('0x3')]===0x0){return _0x156374(_0x6474('0x5'));}if(typeof _0x244bc5!==_0x6474('0x6')&&(typeof _0x244bc5!==_0x6474('0x7')||_0x244bc5[_0x6474('0x3')]===0x0)){return _0x156374(_0x6474('0x8'));}try{_0x1314f4=fs['readFileSync'](_0x59b95a)[_0x6474('0x9')]('base64');}catch(_0x5335ac){return _0x156374(_0x5335ac);}return _0x863c56({'method':_0x6474('0xa'),'uri':host+_0x6474('0xb')+_0xd115f7,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0x6474('0xc'),'languageCode':_0x244bc5},'audio':{'content':_0x1314f4}},'json':!![]});});};
\ No newline at end of file
index 7744a37..5f30fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7398=['./asr'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7398,0xc7));var _0x8739=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7398[_0x2641f9];return _0x585741;};var asr=require(_0x8739('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x854a=['exports','./asr'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x854a,0x1c3));var _0xa854=function(_0x4788c2,_0x50a78b){_0x4788c2=_0x4788c2-0x0;var _0x50a1fe=_0x854a[_0x4788c2];return _0x50a1fe;};var asr=require(_0xa854('0x0'));module[_0xa854('0x1')]={'asr':asr};
\ No newline at end of file
index a598d96..1d09515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2296=['./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusCode','statusMessage','createWriteStream','finish','finish\x20download\x20file','close','unlink','pipe','end','protocol','path','data','transcode','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','POST','then','.mp3','from','audioContent','writeFile','chmodSync','resolve','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','777','info','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','catch','message','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','end_conversation','intent','name','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','fulfillmentText','Tilde\x20ASR\x20confidence','awsPolly','lex','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','Data','dirName','apiai-promise','bluebird','http','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','parse'];(function(_0x35e124,_0x1d85e2){var _0x53c482=function(_0x5afd39){while(--_0x5afd39){_0x35e124['push'](_0x35e124['shift']());}};_0x53c482(++_0x1d85e2);}(_0x2296,0x79));var _0x6229=function(_0x3dac84,_0x34a89d){_0x3dac84=_0x3dac84-0x0;var _0x4913ce=_0x2296[_0x3dac84];return _0x4913ce;};'use strict';var apiai=require(_0x6229('0x0'));var BPromise=require(_0x6229('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x6229('0x2'));var https=require(_0x6229('0x3'));var md5=require(_0x6229('0x4'));var path=require('path');var querystring=require(_0x6229('0x5'));var rp=require(_0x6229('0x6'));var rs=require(_0x6229('0x7'));var sox=require(_0x6229('0x8'));var tts=require(_0x6229('0x9'));var urlParse=require(_0x6229('0xa'))[_0x6229('0xb')];var util=require('util');var aws=require(_0x6229('0xc'));var google=require(_0x6229('0xd'));var sestek=require(_0x6229('0xe'));var tilde=require(_0x6229('0xf'));var logger=require(_0x6229('0x10'))(_0x6229('0x11'));var ISPEECH_API=_0x6229('0x12');function downloadFile(_0x574953,_0x51f5f3){return new BPromise(function(_0xdbbf18,_0x240c91){var _0x556ade=urlParse(_0x574953);var _0x2cbd24=_0x556ade['protocol']===_0x6229('0x13')?https:http;var _0x6d45f0={'host':_0x556ade[_0x6229('0x14')],'path':_0x556ade['path'],'headers':{'user-agent':_0x6229('0x15')}};_0x2cbd24[_0x6229('0x16')](_0x6d45f0,function(_0x54d885){if(_0x54d885['statusCode']!==0xc8){logger[_0x6229('0x17')](_0x6229('0x18')+_0x574953+_0x6229('0x19')+_0x54d885[_0x6229('0x1a')]+'\x20('+_0x54d885['statusMessage']+')');_0x240c91(new Error(_0x6229('0x18')+_0x574953+'\x20failed,\x20status\x20code\x20=\x20'+_0x54d885[_0x6229('0x1a')]+'\x20('+_0x54d885[_0x6229('0x1b')]+')'));return;}var _0x247a7f=fs[_0x6229('0x1c')](_0x51f5f3);_0x247a7f['on'](_0x6229('0x1d'),function(){logger['info'](_0x6229('0x1e'));_0x247a7f[_0x6229('0x1f')](_0xdbbf18);});_0x247a7f['on'](_0x6229('0x17'),function(_0x2ab025){fs[_0x6229('0x20')](_0x51f5f3);logger[_0x6229('0x17')]('download\x20error',_0x2ab025);_0x240c91(_0x2ab025);});_0x54d885[_0x6229('0x21')](_0x247a7f);})['on'](_0x6229('0x17'),function(_0x31da66){logger[_0x6229('0x17')](_0x31da66);_0x240c91(_0x31da66);})[_0x6229('0x22')]();});}function uploadFile(_0x3828c5){return new BPromise(function(_0x6e7bdb,_0x20569a){var _0x1933cb=urlParse(_0x3828c5);var _0x23a483=_0x1933cb[_0x6229('0x23')]===_0x6229('0x13')?https:http;var _0x26b658={'host':_0x1933cb[_0x6229('0x14')],'path':_0x1933cb[_0x6229('0x24')],'headers':{'user-agent':'WHAT_EVER'}};_0x23a483[_0x6229('0x16')](_0x26b658,function(_0x4b9fb1){if(_0x4b9fb1[_0x6229('0x1a')]!==0xc8){_0x20569a(new Error(_0x6229('0x18')+_0x3828c5+_0x6229('0x19')+_0x4b9fb1[_0x6229('0x1a')]+'\x20('+_0x4b9fb1['statusMessage']+')'));return;}var _0x142af5='';_0x4b9fb1['on'](_0x6229('0x25'),function(_0x42dbb2){_0x142af5+=_0x42dbb2;});_0x4b9fb1['on'](_0x6229('0x22'),function(){_0x6e7bdb(_0x142af5);});})['on'](_0x6229('0x17'),function(_0x218bad){_0x20569a(_0x218bad);})['end']();});}function convertFile(_0x1fb171,_0xf2d1a7){return new BPromise(function(_0x54ac5a,_0x214b05){var _0x2a3ff1=sox[_0x6229('0x26')](_0x1fb171,_0xf2d1a7,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2a3ff1['on'](_0x6229('0x17'),function(_0x3740bd){logger[_0x6229('0x17')]('error\x20convert',_0x3740bd);_0x214b05(_0x3740bd);});_0x2a3ff1['on'](_0x6229('0x22'),function(){logger['info'](_0x6229('0x27'));_0x54ac5a();});_0x2a3ff1[_0x6229('0x28')]();});}function base64Decode(_0x4c13b0,_0x1d2807){var _0x460916=path['resolve'](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+_0x6229('0x2b'));fs[_0x6229('0x2c')](_0x460916,_0x4c13b0,_0x6229('0x2d'));return convertFile(_0x460916,_0x1d2807)['then'](function(){try{fs[_0x6229('0x20')](_0x460916);fs['chmodSync'](_0x1d2807,'777');}catch(_0xd41a8f){logger[_0x6229('0x17')](_0xd41a8f);}return _0x1d2807['split']('.')[0x0];});}function base64Encode(_0x1e9763){var _0x481a52=fs[_0x6229('0x2e')](_0x1e9763);return new Buffer(_0x481a52)[_0x6229('0x2f')](_0x6229('0x2d'));}exports['googleCloudTTS']=function(_0x542d3e,_0x593bc7,_0x4863f1,_0x342cd3,_0x31ad2b,_0x4f8dfe){var _0x15325b,_0x29f843;var _0x5b7206=_0x6229('0x30');var _0x2a9210=_0x6229('0x31')+_0x542d3e;var _0x489379={};if(_0x593bc7==='ssml'){_0x489379[_0x6229('0x32')]={'ssml':_0x4863f1};}else{_0x489379[_0x6229('0x32')]={'text':_0x4863f1};};_0x489379[_0x6229('0x33')]={'languageCode':_0x342cd3,'ssmlGender':_0x31ad2b};_0x489379[_0x6229('0x34')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x5db52e={'url':_0x5b7206+'text:synthesize'+_0x2a9210,'method':_0x6229('0x35'),'json':!![],'body':_0x489379};return rp(_0x5db52e)[_0x6229('0x36')](function(_0x3fdf8d){return new BPromise(function(_0x11d72b,_0x5a1a18){_0x15325b=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x6229('0x37'));var _0x4871ea=Buffer[_0x6229('0x38')](_0x3fdf8d[_0x6229('0x39')],_0x6229('0x2d'));return fs[_0x6229('0x3a')](_0x15325b,_0x4871ea,function(_0x5d54ad){_0x5a1a18(_0x5d54ad);},function(_0x2a6326){fs[_0x6229('0x3b')](_0x15325b,'777');_0x11d72b(_0x2a6326);});});})['then'](function(_0x47f0b9){_0x29f843=path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+_0x6229('0x2b'));return convertFile(_0x15325b,_0x29f843);})[_0x6229('0x36')](function(){try{fs[_0x6229('0x20')](_0x15325b);fs[_0x6229('0x3b')](_0x29f843,'777');}catch(_0x283a13){logger[_0x6229('0x17')](_0x283a13);}logger['info'](_0x6229('0x3d'),_0x29f843[_0x6229('0x3e')]('.')[0x0]);return _0x29f843[_0x6229('0x3e')]('.')[0x0];});};exports[_0x6229('0x3f')]=function(_0x224d02,_0x19547c){var _0x461b80=_0x6229('0x40');var _0x16f2c5,_0x39828a;var _0x5147de;var _0x60aeeb={'encoding':_0x6229('0x41'),'method':'POST','timeout':0x2710,'url':_0x461b80,'headers':{'Content-Type':_0x6229('0x42')},'body':'f.req='+encodeURIComponent(JSON[_0x6229('0x43')]([[[_0x6229('0x44'),JSON[_0x6229('0x43')]([_0x224d02,_0x19547c||'en',![],_0x6229('0x45')]),null,_0x6229('0x46')]]]))};return rp(_0x60aeeb)[_0x6229('0x36')](function(_0x4e4afc){try{_0x5147de=eval(_0x4e4afc['slice'](0x5))[0x0][0x2];}catch(_0x3a9b18){throw new Error(_0x6229('0x47')+_0x4e4afc[_0x6229('0x25')]);}if(!_0x5147de){if(_0x224d02[_0x6229('0x48')]>0xc8){throw new Error(_0x6229('0x49'));}else{throw new Error(_0x6229('0x4a')+_0x19547c+_0x6229('0x4b'));}}try{_0x5147de=eval(_0x5147de)[0x0];}catch(_0x4593ad){throw new Error(_0x6229('0x47')+res[_0x6229('0x25')]);}const _0x3f5846=_0x5147de;_0x16f2c5=path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+_0x6229('0x37'));fs['writeFileSync'](_0x16f2c5,_0x5147de,{'encoding':'base64'});_0x39828a=path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+'.wav');return convertFile(_0x16f2c5,_0x39828a);})[_0x6229('0x36')](function(){try{fs[_0x6229('0x20')](_0x16f2c5);fs[_0x6229('0x3b')](_0x39828a,_0x6229('0x4c'));}catch(_0x5ca899){logger['error'](_0x5ca899);}logger[_0x6229('0x4d')]('goggleTTS\x20path',_0x39828a[_0x6229('0x3e')]('.')[0x0]);return _0x39828a[_0x6229('0x3e')]('.')[0x0];});};exports[_0x6229('0x4e')]=function(_0x13c960,_0x5623db,_0x2ad10e){return google[_0x6229('0x4f')](_0x13c960,_0x5623db,_0x2ad10e)[_0x6229('0x36')](function(_0x4b64f5){logger['info'](_0x4b64f5[_0x6229('0x50')]);return rp(_0x4b64f5);})[_0x6229('0x36')](function(_0xf529dc){var _0x4ade5f='';var _0x286ccb=0x0;try{fs[_0x6229('0x20')](_0x13c960);}catch(_0x518efb){logger[_0x6229('0x17')](_0x518efb);}if(_0xf529dc&&_0xf529dc['results']){_0x4ade5f=_0xf529dc[_0x6229('0x51')][_0x6229('0x52')](function(_0x5bbdcd){return _0x5bbdcd&&_0x5bbdcd[_0x6229('0x53')][0x0]&&_0x5bbdcd[_0x6229('0x53')][0x0][_0x6229('0x54')]?_0x5bbdcd[_0x6229('0x53')][0x0]['transcript']:'';})[_0x6229('0x55')]('\x0a');_0x286ccb=_0xf529dc[_0x6229('0x51')][_0x6229('0x52')](function(_0x5351fc){return _0x5351fc&&_0x5351fc[_0x6229('0x53')][0x0]&&_0x5351fc[_0x6229('0x53')][0x0][_0x6229('0x56')]?_0x5351fc['alternatives'][0x0][_0x6229('0x56')]:0x0;})[_0x6229('0x55')]('\x0a');}logger[_0x6229('0x4d')]('googleASR\x20transcription',_0x4ade5f);logger[_0x6229('0x4d')]('googleASR\x20confidence',_0x286ccb);return{'transcript':_0x4ade5f,'confidence':_0x286ccb};})[_0x6229('0x57')](function(_0x427e01){logger[_0x6229('0x17')]('[%s]\x20%s:%s',_0x427e01[_0x6229('0x1a')],_0x427e01['name'],_0x427e01[_0x6229('0x58')]);});};exports['googleDialogflow']=function(_0x58f06a,_0x55a800,_0x124149,_0x367469){var _0x4170e5=apiai(_0x55a800,{'language':_0x367469||'en'});return _0x4170e5[_0x6229('0x59')](_0x124149,{'sessionId':md5(_0x58f06a)})[_0x6229('0x36')](function(_0xef6462){logger['info'](JSON['stringify'](_0xef6462));return{'source':_0xef6462[_0x6229('0x5a')][_0x6229('0x5b')],'resolvedQuery':_0xef6462[_0x6229('0x5a')][_0x6229('0x5c')],'action':_0xef6462[_0x6229('0x5a')][_0x6229('0x5d')],'actionIncomplete':_0xef6462[_0x6229('0x5a')][_0x6229('0x5e')],'speech':_0xef6462[_0x6229('0x5a')][_0x6229('0x5f')][_0x6229('0x60')],'score':_0xef6462[_0x6229('0x5a')][_0x6229('0x61')],'statusCode':_0xef6462[_0x6229('0x62')]['code'],'endConversation':_0xef6462[_0x6229('0x5a')][_0x6229('0x63')][_0x6229('0x64')]||![],'isFallbackIntent':_0xef6462[_0x6229('0x5a')][_0x6229('0x63')][_0x6229('0x65')]};});};exports[_0x6229('0x66')]=function(_0x3e3356,_0x52601e,_0x21f884,_0x351595,_0x5a11f7,_0x1082fd){var _0x3d4426=_0x351595[_0x6229('0x67')](/\\n/g,'\x0a');var _0x545408={'credentials':{'private_key':_0x3d4426,'client_email':_0x21f884}};var _0x4dc20d=new dialogflow['SessionsClient'](_0x545408);var _0x34d95f=_0x4dc20d[_0x6229('0x68')](_0x52601e,md5(_0x3e3356));var _0x146f7f={'session':_0x34d95f,'queryInput':{'text':{'text':_0x5a11f7,'languageCode':_0x1082fd}}};return _0x4dc20d[_0x6229('0x69')](_0x146f7f)[_0x6229('0x36')](function(_0x435c4e){if(_0x435c4e&&_0x435c4e['length']){logger[_0x6229('0x4d')](_0x6229('0x6a'),JSON[_0x6229('0x43')](_0x435c4e));var _0xb4a15c=_0x435c4e[0x0];if(_0xb4a15c){var _0x57b066={'action':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x5d')],'allRequiredParamsPresent':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x6c')],'endConversation':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x6d')]&&_0xb4a15c['queryResult']['diagnosticInfo']['fields']?_0xb4a15c[_0x6229('0x6b')][_0x6229('0x6d')]['fields'][_0x6229('0x6e')]['boolValue']:![],'fulfillmentText':_0xb4a15c[_0x6229('0x6b')]['fulfillmentText'],'intentName':_0xb4a15c['queryResult'][_0x6229('0x6f')][_0x6229('0x70')],'intentDisplayName':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x6f')][_0x6229('0x71')],'isFallbackIntent':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x6f')][_0x6229('0x72')],'languageCode':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x73')],'queryText':_0xb4a15c['queryResult'][_0x6229('0x74')],'responseId':_0xb4a15c['responseId'],'score':_0xb4a15c['queryResult'][_0x6229('0x75')],'speech':_0xb4a15c[_0x6229('0x6b')][_0x6229('0x76')],'providerResponse':JSON[_0x6229('0x43')](_0x435c4e)};return _0x57b066;}}});};exports['tildeASR']=function(_0x5e1249,_0x55a2d2,_0x2de357,_0x172be8){return tilde[_0x6229('0x4f')](_0x5e1249,_0x55a2d2,_0x2de357,_0x172be8)[_0x6229('0x36')](function(_0x128141){try{fs[_0x6229('0x20')](_0x5e1249);}catch(_0x5bd407){logger[_0x6229('0x17')](_0x5bd407);}logger[_0x6229('0x4d')]('Tilde\x20ASR\x20transcription',_0x128141[_0x6229('0x54')]);logger[_0x6229('0x4d')](_0x6229('0x77'),_0x128141['confidence']);return _0x128141;});};exports[_0x6229('0x78')]=function(_0x23e6b9,_0x2bb2b4,_0x5aae72,_0x1fc8d7,_0x3140cb,_0x2880ec){var _0x5372db=path[_0x6229('0x3c')](__dirname,'tmp',rs['generate'](0x4)+_0x6229('0x37'));var _0x1baccc;return aws['polly'](_0x23e6b9,_0x2bb2b4,_0x5aae72,_0x1fc8d7,_0x3140cb,_0x2880ec,_0x5372db)[_0x6229('0x36')](function(){_0x1baccc=path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+_0x6229('0x2b'));return convertFile(_0x5372db,_0x1baccc);})['then'](function(){try{fs[_0x6229('0x20')](_0x5372db);fs['chmodSync'](_0x1baccc,_0x6229('0x4c'));}catch(_0x46a099){logger[_0x6229('0x17')](_0x46a099);}return _0x1baccc[_0x6229('0x3e')]('.')[0x0];});};exports['awsLex']=function(_0xd87fbc,_0x177fb0,_0x4453d8,_0x40e5db,_0x30bae5,_0x590aae){return aws[_0x6229('0x79')](_0xd87fbc,_0x177fb0,_0x4453d8,_0x40e5db,_0x30bae5,_0x590aae)[_0x6229('0x36')](function(_0x19e500){logger[_0x6229('0x4d')](JSON[_0x6229('0x43')](_0x19e500));return _0x19e500;});};exports['ispeechTTS']=function(_0x19b08c,_0x36f783,_0x1a761b,_0x3c24fc){var _0x5e781a=util['format'](_0x6229('0x7a'),ISPEECH_API,_0x19b08c,encodeURIComponent(_0x36f783),_0x1a761b,_0x3c24fc);var _0x182b05=path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs[_0x6229('0x2a')](0x4)+_0x6229('0x37'));var _0x46f304;return downloadFile(_0x5e781a,_0x182b05)['then'](function(){_0x46f304=path['resolve'](__dirname,_0x6229('0x29'),rs['generate'](0x4)+_0x6229('0x2b'));return convertFile(_0x182b05,_0x46f304);})[_0x6229('0x36')](function(){try{fs[_0x6229('0x20')](_0x182b05);fs[_0x6229('0x3b')](_0x46f304,_0x6229('0x4c'));}catch(_0x15a646){logger[_0x6229('0x17')](_0x15a646);}return _0x46f304[_0x6229('0x3e')]('.')[0x0];});};exports['ispeechASR']=function(_0x316b37,_0x52bfda,_0x4d3d9c,_0x480cb1){var _0x32caae=util[_0x6229('0x7b')](_0x6229('0x7c'),ISPEECH_API,_0x52bfda,_0x4d3d9c,base64Encode(_0x316b37),_0x480cb1?util['format']('model=%s',encodeURIComponent(_0x480cb1)):_0x6229('0x7d'));return uploadFile(_0x32caae)[_0x6229('0x36')](function(_0x3007ed){return querystring[_0x6229('0xb')](_0x3007ed);});};exports[_0x6229('0x7e')]=function(_0x4b0a4f,_0x3fe79c){return sestek[_0x6229('0x7f')](_0x4b0a4f,_0x3fe79c)[_0x6229('0x36')](function(_0xd20b4e){logger[_0x6229('0x4d')](JSON[_0x6229('0x43')](_0xd20b4e));var _0x39d2c0={'speech':_0xd20b4e[_0x6229('0x80')],'action':_0xd20b4e[_0x6229('0x81')]?_0xd20b4e[_0x6229('0x81')][_0x6229('0x82')]:undefined,'actiondata':_0xd20b4e[_0x6229('0x81')]?_0xd20b4e[_0x6229('0x81')]['CustomActionData']:undefined};if(_0xd20b4e[_0x6229('0x81')]&&_0xd20b4e[_0x6229('0x81')]['AudioFromTts']){return base64Decode(_0xd20b4e[_0x6229('0x81')]['AudioFromTts'][_0x6229('0x83')],path[_0x6229('0x3c')](__dirname,_0x6229('0x29'),rs['generate'](0x4)+_0x6229('0x2b')))['then'](function(_0x5c38ff){_0x39d2c0['audiofile']=_0x5c38ff;return _0x39d2c0;});}return _0x39d2c0;});};exports[_0x6229('0x84')]=function(){return __dirname;};
\ No newline at end of file
+var _0x01e0=['googleTTS','utf8','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','writeFileSync','goggleTTS\x20path','googleASR','uri','results','map','transcript','join','alternatives','confidence','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','actionIncomplete','speech','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','queryText','fulfillmentText','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','format','model=%s','freeform=3','parse','sestekNDA','nda','CustomAction','channelData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','path','querystring','request-promise','sox','google-tts-api','url','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','protocol','WHAT_EVER','get','statusCode','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','close','error','unlink','download\x20error','end','https:','host','data','transcode','finish\x20to\x20convert','start','tmp','.wav','base64','then','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','audioConfig','MP3','text:synthesize','POST','resolve','generate','.mp3','from','chmodSync','googleCloudTTS\x20path','split'];(function(_0x3f5f9a,_0x567b5c){var _0x34f86b=function(_0x33cff0){while(--_0x33cff0){_0x3f5f9a['push'](_0x3f5f9a['shift']());}};_0x34f86b(++_0x567b5c);}(_0x01e0,0x1cd));var _0x001e=function(_0x230949,_0x790da6){_0x230949=_0x230949-0x0;var _0x54a3dd=_0x01e0[_0x230949];return _0x54a3dd;};'use strict';var apiai=require(_0x001e('0x0'));var BPromise=require(_0x001e('0x1'));var dialogflow=require(_0x001e('0x2'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require('md5');var path=require(_0x001e('0x3'));var querystring=require(_0x001e('0x4'));var rp=require(_0x001e('0x5'));var rs=require('randomstring');var sox=require(_0x001e('0x6'));var tts=require(_0x001e('0x7'));var urlParse=require(_0x001e('0x8'))['parse'];var util=require(_0x001e('0x9'));var aws=require(_0x001e('0xa'));var google=require(_0x001e('0xb'));var sestek=require(_0x001e('0xc'));var tilde=require(_0x001e('0xd'));var logger=require(_0x001e('0xe'))(_0x001e('0xf'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x33073b,_0x454ec0){return new BPromise(function(_0x53bcd7,_0x16288e){var _0x430825=urlParse(_0x33073b);var _0x329aca=_0x430825[_0x001e('0x10')]==='https:'?https:http;var _0x1b5a75={'host':_0x430825['host'],'path':_0x430825[_0x001e('0x3')],'headers':{'user-agent':_0x001e('0x11')}};_0x329aca[_0x001e('0x12')](_0x1b5a75,function(_0x14cde2){if(_0x14cde2[_0x001e('0x13')]!==0xc8){logger['error'](_0x001e('0x14')+_0x33073b+'\x20failed,\x20status\x20code\x20=\x20'+_0x14cde2[_0x001e('0x13')]+'\x20('+_0x14cde2[_0x001e('0x15')]+')');_0x16288e(new Error(_0x001e('0x14')+_0x33073b+_0x001e('0x16')+_0x14cde2[_0x001e('0x13')]+'\x20('+_0x14cde2['statusMessage']+')'));return;}var _0x39a877=fs[_0x001e('0x17')](_0x454ec0);_0x39a877['on'](_0x001e('0x18'),function(){logger[_0x001e('0x19')]('finish\x20download\x20file');_0x39a877[_0x001e('0x1a')](_0x53bcd7);});_0x39a877['on'](_0x001e('0x1b'),function(_0x47d22e){fs[_0x001e('0x1c')](_0x454ec0);logger[_0x001e('0x1b')](_0x001e('0x1d'),_0x47d22e);_0x16288e(_0x47d22e);});_0x14cde2['pipe'](_0x39a877);})['on']('error',function(_0x486f2a){logger[_0x001e('0x1b')](_0x486f2a);_0x16288e(_0x486f2a);})[_0x001e('0x1e')]();});}function uploadFile(_0x11a0a2){return new BPromise(function(_0x2ae67c,_0x3ef911){var _0x548706=urlParse(_0x11a0a2);var _0x347e7c=_0x548706[_0x001e('0x10')]===_0x001e('0x1f')?https:http;var _0x1f7ced={'host':_0x548706[_0x001e('0x20')],'path':_0x548706[_0x001e('0x3')],'headers':{'user-agent':_0x001e('0x11')}};_0x347e7c[_0x001e('0x12')](_0x1f7ced,function(_0x59e0ae){if(_0x59e0ae[_0x001e('0x13')]!==0xc8){_0x3ef911(new Error(_0x001e('0x14')+_0x11a0a2+'\x20failed,\x20status\x20code\x20=\x20'+_0x59e0ae[_0x001e('0x13')]+'\x20('+_0x59e0ae[_0x001e('0x15')]+')'));return;}var _0x4f9c5a='';_0x59e0ae['on'](_0x001e('0x21'),function(_0x5d9899){_0x4f9c5a+=_0x5d9899;});_0x59e0ae['on'](_0x001e('0x1e'),function(){_0x2ae67c(_0x4f9c5a);});})['on']('error',function(_0x3c6412){_0x3ef911(_0x3c6412);})[_0x001e('0x1e')]();});}function convertFile(_0x572daf,_0x1117a4){return new BPromise(function(_0x306733,_0x771a6e){var _0x36e8e6=sox[_0x001e('0x22')](_0x572daf,_0x1117a4,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x36e8e6['on']('error',function(_0x4b8729){logger[_0x001e('0x1b')]('error\x20convert',_0x4b8729);_0x771a6e(_0x4b8729);});_0x36e8e6['on'](_0x001e('0x1e'),function(){logger[_0x001e('0x19')](_0x001e('0x23'));_0x306733();});_0x36e8e6[_0x001e('0x24')]();});}function base64Decode(_0x351fe1,_0x46e94c){var _0x242921=path['resolve'](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26'));fs['writeFileSync'](_0x242921,_0x351fe1,_0x001e('0x27'));return convertFile(_0x242921,_0x46e94c)[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x242921);fs['chmodSync'](_0x46e94c,_0x001e('0x29'));}catch(_0x4f2398){logger[_0x001e('0x1b')](_0x4f2398);}return _0x46e94c['split']('.')[0x0];});}function base64Encode(_0x351235){var _0x1ee0ba=fs[_0x001e('0x2a')](_0x351235);return new Buffer(_0x1ee0ba)[_0x001e('0x2b')](_0x001e('0x27'));}exports[_0x001e('0x2c')]=function(_0x43344a,_0x377811,_0x294038,_0x25565c,_0x28bd16,_0x25cf49){var _0x3d53aa,_0x52a851;var _0x336b76=_0x001e('0x2d');var _0x3aaa01=_0x001e('0x2e')+_0x43344a;var _0x16d5a2={};if(_0x377811==='ssml'){_0x16d5a2['input']={'ssml':_0x294038};}else{_0x16d5a2[_0x001e('0x2f')]={'text':_0x294038};};_0x16d5a2['voice']={'languageCode':_0x25565c,'ssmlGender':_0x28bd16};_0x16d5a2[_0x001e('0x30')]={'audioEncoding':_0x001e('0x31'),'sampleRateHertz':0x1f40};var _0x404e2e={'url':_0x336b76+_0x001e('0x32')+_0x3aaa01,'method':_0x001e('0x33'),'json':!![],'body':_0x16d5a2};return rp(_0x404e2e)[_0x001e('0x28')](function(_0x549110){return new BPromise(function(_0x56a91f,_0x424a2f){_0x3d53aa=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));var _0x2a64df=Buffer[_0x001e('0x37')](_0x549110['audioContent'],_0x001e('0x27'));return fs['writeFile'](_0x3d53aa,_0x2a64df,function(_0x5119dd){_0x424a2f(_0x5119dd);},function(_0x4f9b98){fs['chmodSync'](_0x3d53aa,_0x001e('0x29'));_0x56a91f(_0x4f9b98);});});})[_0x001e('0x28')](function(_0x3d79f8){_0x52a851=path[_0x001e('0x34')](__dirname,'tmp',rs[_0x001e('0x35')](0x4)+_0x001e('0x26'));return convertFile(_0x3d53aa,_0x52a851);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x3d53aa);fs[_0x001e('0x38')](_0x52a851,_0x001e('0x29'));}catch(_0x52bb07){logger[_0x001e('0x1b')](_0x52bb07);}logger[_0x001e('0x19')](_0x001e('0x39'),_0x52a851[_0x001e('0x3a')]('.')[0x0]);return _0x52a851['split']('.')[0x0];});};exports[_0x001e('0x3b')]=function(_0x187de9,_0x250be5){var _0x56e01b='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x39e83f,_0x4ed9b7;var _0x177ad8;var _0xd38cd5={'encoding':_0x001e('0x3c'),'method':_0x001e('0x33'),'timeout':0x2710,'url':_0x56e01b,'headers':{'Content-Type':_0x001e('0x3d')},'body':_0x001e('0x3e')+encodeURIComponent(JSON[_0x001e('0x3f')]([[[_0x001e('0x40'),JSON['stringify']([_0x187de9,_0x250be5||'en',![],_0x001e('0x41')]),null,'generic']]]))};return rp(_0xd38cd5)[_0x001e('0x28')](function(_0x291dc8){try{_0x177ad8=eval(_0x291dc8[_0x001e('0x42')](0x5))[0x0][0x2];}catch(_0x1f3aad){throw new Error(_0x001e('0x43')+_0x291dc8['data']);}if(!_0x177ad8){if(_0x187de9['length']>0xc8){throw new Error(_0x001e('0x44'));}else{throw new Error(_0x001e('0x45')+_0x250be5+_0x001e('0x46'));}}try{_0x177ad8=eval(_0x177ad8)[0x0];}catch(_0x42d955){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x001e('0x21')]);}const _0x1b1710=_0x177ad8;_0x39e83f=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));fs[_0x001e('0x47')](_0x39e83f,_0x177ad8,{'encoding':_0x001e('0x27')});_0x4ed9b7=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+'.wav');return convertFile(_0x39e83f,_0x4ed9b7);})['then'](function(){try{fs[_0x001e('0x1c')](_0x39e83f);fs[_0x001e('0x38')](_0x4ed9b7,'777');}catch(_0x5267a9){logger[_0x001e('0x1b')](_0x5267a9);}logger[_0x001e('0x19')](_0x001e('0x48'),_0x4ed9b7[_0x001e('0x3a')]('.')[0x0]);return _0x4ed9b7[_0x001e('0x3a')]('.')[0x0];});};exports[_0x001e('0x49')]=function(_0x4ebc84,_0x1cca1c,_0x259d65){return google['asr'](_0x4ebc84,_0x1cca1c,_0x259d65)[_0x001e('0x28')](function(_0x11e105){logger[_0x001e('0x19')](_0x11e105[_0x001e('0x4a')]);return rp(_0x11e105);})[_0x001e('0x28')](function(_0x1d3b8a){var _0x80af31='';var _0x228a02=0x0;try{fs[_0x001e('0x1c')](_0x4ebc84);}catch(_0x242798){logger['error'](_0x242798);}if(_0x1d3b8a&&_0x1d3b8a[_0x001e('0x4b')]){_0x80af31=_0x1d3b8a[_0x001e('0x4b')][_0x001e('0x4c')](function(_0x29f777){return _0x29f777&&_0x29f777['alternatives'][0x0]&&_0x29f777['alternatives'][0x0][_0x001e('0x4d')]?_0x29f777['alternatives'][0x0][_0x001e('0x4d')]:'';})[_0x001e('0x4e')]('\x0a');_0x228a02=_0x1d3b8a[_0x001e('0x4b')][_0x001e('0x4c')](function(_0x3aaaa8){return _0x3aaaa8&&_0x3aaaa8[_0x001e('0x4f')][0x0]&&_0x3aaaa8['alternatives'][0x0][_0x001e('0x50')]?_0x3aaaa8[_0x001e('0x4f')][0x0][_0x001e('0x50')]:0x0;})[_0x001e('0x4e')]('\x0a');}logger[_0x001e('0x19')]('googleASR\x20transcription',_0x80af31);logger[_0x001e('0x19')](_0x001e('0x51'),_0x228a02);return{'transcript':_0x80af31,'confidence':_0x228a02};})['catch'](function(_0x32cd3c){logger[_0x001e('0x1b')](_0x001e('0x52'),_0x32cd3c[_0x001e('0x13')],_0x32cd3c[_0x001e('0x53')],_0x32cd3c[_0x001e('0x54')]);});};exports[_0x001e('0x55')]=function(_0x52fe8a,_0x24b144,_0x543b79,_0xc1ca62){var _0x3994c5=apiai(_0x24b144,{'language':_0xc1ca62||'en'});return _0x3994c5[_0x001e('0x56')](_0x543b79,{'sessionId':md5(_0x52fe8a)})[_0x001e('0x28')](function(_0x8d86a1){logger[_0x001e('0x19')](JSON['stringify'](_0x8d86a1));return{'source':_0x8d86a1[_0x001e('0x57')][_0x001e('0x58')],'resolvedQuery':_0x8d86a1['result']['resolvedQuery'],'action':_0x8d86a1['result']['action'],'actionIncomplete':_0x8d86a1[_0x001e('0x57')][_0x001e('0x59')],'speech':_0x8d86a1[_0x001e('0x57')]['fulfillment'][_0x001e('0x5a')],'score':_0x8d86a1['result']['score'],'statusCode':_0x8d86a1['status']['code'],'endConversation':_0x8d86a1[_0x001e('0x57')][_0x001e('0x5b')][_0x001e('0x5c')]||![],'isFallbackIntent':_0x8d86a1[_0x001e('0x57')][_0x001e('0x5b')][_0x001e('0x5d')]};});};exports[_0x001e('0x5e')]=function(_0x512df9,_0x255e01,_0x3871e7,_0x4fdb68,_0x53e248,_0x38cdaa){var _0x4e45e2=_0x4fdb68[_0x001e('0x5f')](/\\n/g,'\x0a');var _0x30dc53={'credentials':{'private_key':_0x4e45e2,'client_email':_0x3871e7}};var _0x3576c3=new dialogflow[(_0x001e('0x60'))](_0x30dc53);var _0x4e2b4c=_0x3576c3[_0x001e('0x61')](_0x255e01,md5(_0x512df9));var _0x44a1c9={'session':_0x4e2b4c,'queryInput':{'text':{'text':_0x53e248,'languageCode':_0x38cdaa}}};return _0x3576c3[_0x001e('0x62')](_0x44a1c9)['then'](function(_0x3a502d){if(_0x3a502d&&_0x3a502d[_0x001e('0x63')]){logger['info'](_0x001e('0x64'),JSON[_0x001e('0x3f')](_0x3a502d));var _0x4be256=_0x3a502d[0x0];if(_0x4be256){var _0xd0b87e={'action':_0x4be256[_0x001e('0x65')][_0x001e('0x66')],'allRequiredParamsPresent':_0x4be256['queryResult'][_0x001e('0x67')],'endConversation':_0x4be256[_0x001e('0x65')][_0x001e('0x68')]&&_0x4be256['queryResult'][_0x001e('0x68')][_0x001e('0x69')]?_0x4be256[_0x001e('0x65')]['diagnosticInfo'][_0x001e('0x69')]['end_conversation'][_0x001e('0x6a')]:![],'fulfillmentText':_0x4be256[_0x001e('0x65')]['fulfillmentText'],'intentName':_0x4be256['queryResult'][_0x001e('0x6b')][_0x001e('0x53')],'intentDisplayName':_0x4be256[_0x001e('0x65')][_0x001e('0x6b')][_0x001e('0x6c')],'isFallbackIntent':_0x4be256[_0x001e('0x65')]['intent'][_0x001e('0x6d')],'languageCode':_0x4be256['queryResult']['languageCode'],'queryText':_0x4be256['queryResult'][_0x001e('0x6e')],'responseId':_0x4be256['responseId'],'score':_0x4be256[_0x001e('0x65')]['intentDetectionConfidence'],'speech':_0x4be256[_0x001e('0x65')][_0x001e('0x6f')],'providerResponse':JSON['stringify'](_0x3a502d)};return _0xd0b87e;}}});};exports[_0x001e('0x70')]=function(_0x4ea546,_0x23d809,_0x163b97,_0x9eef52){return tilde[_0x001e('0x71')](_0x4ea546,_0x23d809,_0x163b97,_0x9eef52)['then'](function(_0x39c8cb){try{fs[_0x001e('0x1c')](_0x4ea546);}catch(_0x5d5996){logger[_0x001e('0x1b')](_0x5d5996);}logger[_0x001e('0x19')](_0x001e('0x72'),_0x39c8cb[_0x001e('0x4d')]);logger[_0x001e('0x19')](_0x001e('0x73'),_0x39c8cb['confidence']);return _0x39c8cb;});};exports[_0x001e('0x74')]=function(_0x13c687,_0x338420,_0x4769e4,_0x17e6f9,_0x184433,_0x26653e){var _0x3b3b46=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x36'));var _0x17d2df;return aws[_0x001e('0x75')](_0x13c687,_0x338420,_0x4769e4,_0x17e6f9,_0x184433,_0x26653e,_0x3b3b46)[_0x001e('0x28')](function(){_0x17d2df=path['resolve'](__dirname,_0x001e('0x25'),rs[_0x001e('0x35')](0x4)+_0x001e('0x26'));return convertFile(_0x3b3b46,_0x17d2df);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0x3b3b46);fs['chmodSync'](_0x17d2df,_0x001e('0x29'));}catch(_0x4c448c){logger[_0x001e('0x1b')](_0x4c448c);}return _0x17d2df['split']('.')[0x0];});};exports[_0x001e('0x76')]=function(_0x3d959f,_0x59f0b,_0x183bd2,_0x117b93,_0x2ef176,_0x27898c){return aws['lex'](_0x3d959f,_0x59f0b,_0x183bd2,_0x117b93,_0x2ef176,_0x27898c)[_0x001e('0x28')](function(_0x3fa7d2){logger[_0x001e('0x19')](JSON[_0x001e('0x3f')](_0x3fa7d2));return _0x3fa7d2;});};exports['ispeechTTS']=function(_0x129453,_0x545f0e,_0x3edf82,_0x551ec1){var _0x229632=util[_0x001e('0x77')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x129453,encodeURIComponent(_0x545f0e),_0x3edf82,_0x551ec1);var _0xd4199a=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x36'));var _0x327bfa;return downloadFile(_0x229632,_0xd4199a)[_0x001e('0x28')](function(){_0x327bfa=path[_0x001e('0x34')](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26'));return convertFile(_0xd4199a,_0x327bfa);})[_0x001e('0x28')](function(){try{fs[_0x001e('0x1c')](_0xd4199a);fs['chmodSync'](_0x327bfa,'777');}catch(_0x78b0cc){logger[_0x001e('0x1b')](_0x78b0cc);}return _0x327bfa['split']('.')[0x0];});};exports['ispeechASR']=function(_0x4c18a3,_0x3f07de,_0xdbb52f,_0x43bc14){var _0x1472fb=util[_0x001e('0x77')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x3f07de,_0xdbb52f,base64Encode(_0x4c18a3),_0x43bc14?util[_0x001e('0x77')](_0x001e('0x78'),encodeURIComponent(_0x43bc14)):_0x001e('0x79'));return uploadFile(_0x1472fb)['then'](function(_0x5a8d8f){return querystring[_0x001e('0x7a')](_0x5a8d8f);});};exports[_0x001e('0x7b')]=function(_0x2aa1ec,_0x176fef){return sestek[_0x001e('0x7c')](_0x2aa1ec,_0x176fef)[_0x001e('0x28')](function(_0x1830dc){logger[_0x001e('0x19')](JSON[_0x001e('0x3f')](_0x1830dc));var _0x5df524={'speech':_0x1830dc['text'],'action':_0x1830dc['channelData']?_0x1830dc['channelData'][_0x001e('0x7d')]:undefined,'actiondata':_0x1830dc[_0x001e('0x7e')]?_0x1830dc[_0x001e('0x7e')]['CustomActionData']:undefined};if(_0x1830dc[_0x001e('0x7e')]&&_0x1830dc['channelData'][_0x001e('0x7f')]){return base64Decode(_0x1830dc[_0x001e('0x7e')][_0x001e('0x7f')][_0x001e('0x80')],path['resolve'](__dirname,_0x001e('0x25'),rs['generate'](0x4)+_0x001e('0x26')))[_0x001e('0x28')](function(_0x52de23){_0x5df524[_0x001e('0x81')]=_0x52de23;return _0x5df524;});}return _0x5df524;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index e6ecfc0..31b744b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126e=['exports','./nda'];(function(_0x2a7b8e,_0x50ffce){var _0x29b5c8=function(_0x131fe0){while(--_0x131fe0){_0x2a7b8e['push'](_0x2a7b8e['shift']());}};_0x29b5c8(++_0x50ffce);}(_0x126e,0xaf));var _0xe126=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x126e[_0x397e5f];return _0x5302b8;};var nda=require(_0xe126('0x0'));module[_0xe126('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x4fde=['./nda','exports'];(function(_0xa41df9,_0x20fed0){var _0x342a45=function(_0x5832c5){while(--_0x5832c5){_0xa41df9['push'](_0xa41df9['shift']());}};_0x342a45(++_0x20fed0);}(_0x4fde,0x170));var _0xe4fd=function(_0x406696,_0x39f9b1){_0x406696=_0x406696-0x0;var _0x10e35c=_0x4fde[_0x406696];return _0x10e35c;};var nda=require(_0xe4fd('0x0'));module[_0xe4fd('0x1')]={'nda':nda};
\ No newline at end of file
index fd8dc40..8519ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['info','request-promise','../../../../../config/logger','agi','exports','POST','resolve','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','Nda','uniqueid','dnid','extension','Bearer\x20','project','body','channelData','ProjectName','ndagenerate_audio','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData'];(function(_0x4fd1a5,_0x21ee6f){var _0x3bc2b4=function(_0x54aa82){while(--_0x54aa82){_0x4fd1a5['push'](_0x4fd1a5['shift']());}};_0x3bc2b4(++_0x21ee6f);}(_0xdace,0xc5));var _0xedac=function(_0x26b80e,_0x5c9333){_0x26b80e=_0x26b80e-0x0;var _0x84a8a8=_0xdace[_0x26b80e];return _0x84a8a8;};'use strict';var rp=require(_0xedac('0x0'));var url=require('url');var logger=require(_0xedac('0x1'))(_0xedac('0x2'));module[_0xedac('0x3')]=function(_0x518516,_0x413d77){var _0x36bcd2={'method':_0xedac('0x4'),'uri':url[_0xedac('0x5')](_0x413d77['ndauth_url'],_0xedac('0x6')),'form':{'grant_type':_0xedac('0x7'),'username':_0x413d77[_0xedac('0x8')],'password':_0x413d77['password']},'json':!![]};return rp(_0x36bcd2)[_0xedac('0x9')](function(_0x21440e){var _0x162eea={'method':'POST','uri':url[_0xedac('0x5')](_0x413d77[_0xedac('0xa')],_0xedac('0xb')),'body':{'type':_0x413d77['ndaactivity_type']||'message','channelId':_0xedac('0xc'),'conversation':{'id':_0x518516[_0xedac('0xd')]},'from':{'id':_0x518516['callerid'],'name':_0x518516['calleridname']},'recipient':{'id':_0x518516[_0xedac('0xe')],'name':_0x518516[_0xedac('0xf')]},'text':_0x413d77['text'],'channelData':{}},'headers':{'Authorization':_0xedac('0x10')+_0x21440e['access_token']},'json':!![]};if(_0x413d77[_0xedac('0x11')]){_0x162eea[_0xedac('0x12')][_0xedac('0x13')][_0xedac('0x14')]=_0x413d77[_0xedac('0x11')];}if(_0x413d77[_0xedac('0x15')]=='1'){_0x162eea[_0xedac('0x12')][_0xedac('0x13')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xedac('0x16')};}if(_0x413d77[_0xedac('0x17')]){_0x162eea[_0xedac('0x12')][_0xedac('0x13')][_0xedac('0x18')]=_0x413d77['custom_action'];if(_0x413d77[_0xedac('0x19')]){_0x162eea['body'][_0xedac('0x13')][_0xedac('0x1a')]=_0x413d77[_0xedac('0x19')];}}logger[_0xedac('0x1b')](JSON['stringify'](_0x162eea));return rp(_0x162eea);});};
\ No newline at end of file
+var _0x0f88=['agi','exports','resolve','/token','password','username','then','POST','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','access_token','project','body','ProjectName','ndagenerate_audio','custom_action','channelData','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger'];(function(_0x3d1f8e,_0x279486){var _0x3ebcb3=function(_0x544b2e){while(--_0x544b2e){_0x3d1f8e['push'](_0x3d1f8e['shift']());}};_0x3ebcb3(++_0x279486);}(_0x0f88,0x1d9));var _0x80f8=function(_0x428f80,_0x307620){_0x428f80=_0x428f80-0x0;var _0x2f4273=_0x0f88[_0x428f80];return _0x2f4273;};'use strict';var rp=require(_0x80f8('0x0'));var url=require(_0x80f8('0x1'));var logger=require(_0x80f8('0x2'))(_0x80f8('0x3'));module[_0x80f8('0x4')]=function(_0x236dde,_0x362cbf){var _0x27306a={'method':'POST','uri':url[_0x80f8('0x5')](_0x362cbf['ndauth_url'],_0x80f8('0x6')),'form':{'grant_type':_0x80f8('0x7'),'username':_0x362cbf[_0x80f8('0x8')],'password':_0x362cbf[_0x80f8('0x7')]},'json':!![]};return rp(_0x27306a)[_0x80f8('0x9')](function(_0x279479){var _0x3d6ad3={'method':_0x80f8('0xa'),'uri':url[_0x80f8('0x5')](_0x362cbf[_0x80f8('0xb')],_0x80f8('0xc')),'body':{'type':_0x362cbf[_0x80f8('0xd')]||_0x80f8('0xe'),'channelId':_0x80f8('0xf'),'conversation':{'id':_0x236dde[_0x80f8('0x10')]},'from':{'id':_0x236dde[_0x80f8('0x11')],'name':_0x236dde[_0x80f8('0x12')]},'recipient':{'id':_0x236dde[_0x80f8('0x13')],'name':_0x236dde[_0x80f8('0x14')]},'text':_0x362cbf[_0x80f8('0x15')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x279479[_0x80f8('0x16')]},'json':!![]};if(_0x362cbf[_0x80f8('0x17')]){_0x3d6ad3[_0x80f8('0x18')]['channelData'][_0x80f8('0x19')]=_0x362cbf[_0x80f8('0x17')];}if(_0x362cbf[_0x80f8('0x1a')]=='1'){_0x3d6ad3['body']['channelData']['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x362cbf[_0x80f8('0x1b')]){_0x3d6ad3['body'][_0x80f8('0x1c')][_0x80f8('0x1d')]=_0x362cbf[_0x80f8('0x1b')];if(_0x362cbf[_0x80f8('0x1e')]){_0x3d6ad3[_0x80f8('0x18')][_0x80f8('0x1c')][_0x80f8('0x1f')]=_0x362cbf[_0x80f8('0x1e')];}}logger[_0x80f8('0x20')](JSON[_0x80f8('0x21')](_0x3d6ad3));return rp(_0x3d6ad3);});};
\ No newline at end of file
index 6d8e5a1..a25526f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x379e=['./lib/api','exports'];(function(_0x2ae22a,_0x4fe753){var _0x286a82=function(_0x256e58){while(--_0x256e58){_0x2ae22a['push'](_0x2ae22a['shift']());}};_0x286a82(++_0x4fe753);}(_0x379e,0x1d6));var _0xe379=function(_0x1cc74a,_0x4e217e){_0x1cc74a=_0x1cc74a-0x0;var _0x4b94ba=_0x379e[_0x1cc74a];return _0x4b94ba;};'use strict';var asr=require(_0xe379('0x0'));module[_0xe379('0x1')]=function(_0xf39461,_0x1c3684,_0x24b487,_0x1eb23c){return asr(_0xf39461,_0x1c3684,_0x24b487,_0x1eb23c);};
\ No newline at end of file
+var _0xfb17=['./lib/api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfb17,0x13f));var _0x7fb1=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xfb17[_0x2faddb];return _0x273c05;};'use strict';var asr=require(_0x7fb1('0x0'));module['exports']=function(_0x43d5fa,_0x273de6,_0x5d4963,_0x112559){return asr(_0x43d5fa,_0x273de6,_0x5d4963,_0x112559);};
\ No newline at end of file
index f3039c8..50a7710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a8=['final','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.','error','isObject','open','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','close','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xc3a8,0x1d4));var _0x8c3a=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0xc3a8[_0x4cfc1d];return _0x1c01a0;};'use strict';var BPromise=require(_0x8c3a('0x0'));var _=require(_0x8c3a('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x8c3a('0x2'));var crypto=require(_0x8c3a('0x3'));var logger=require(_0x8c3a('0x4'))(_0x8c3a('0x5'));module['exports']=function(_0x12b970,_0x2f94bd,_0x3b5f5b,_0x34d865){return new BPromise(function(_0x5541de,_0x3b1375){logger[_0x8c3a('0x6')](_0x8c3a('0x7'),_0x34d865||_0x8c3a('0x8'));var _0x2abbb0=new WebSocket(_0x34d865||_0x8c3a('0x8'),{'perMessageDeflate':![]});var _0x4044aa='';var _0xeee1d7='0';var _0x158163='1';var _0xcef52d=_0x8c3a('0x9');function _0x538cbb(_0x1de35d){var _0x482264=crypto[_0x8c3a('0xa')](_0x8c3a('0xb'));_0x482264[_0x8c3a('0xc')](_0x1de35d);return _0x482264[_0x8c3a('0xd')](_0x8c3a('0xe'));}function _0x2a6652(){try{logger[_0x8c3a('0x6')](_0x8c3a('0xf'));var _0x2fbfae=moment()[_0x8c3a('0x10')]();var _0x3fc5a2=_0x538cbb(_0x2fbfae+_0x2f94bd+_0x3b5f5b);_0x2abbb0[_0x8c3a('0x11')](JSON[_0x8c3a('0x12')]({'appID':_0x2f94bd,'timestamp':_0x2fbfae,'appKey':_0x3fc5a2}));var _0x192b4a=fs[_0x8c3a('0x13')](_0x12b970);_0x192b4a['on']('data',function(_0x1f4923){_0x2abbb0[_0x8c3a('0x11')](_0x1f4923);});_0x192b4a['on'](_0x8c3a('0x14'),function(){_0x2abbb0[_0x8c3a('0x11')]('EOS');});}catch(_0x57bfba){logger['error'](_0x8c3a('0x15'),JSON['stringify'](_0x57bfba));_0x2abbb0[_0x8c3a('0x16')]();}}function _0x3d7d6(_0x5231bc){try{if(_0x5231bc){var _0x18aa5a=JSON[_0x8c3a('0x17')](_0x5231bc);switch(_0x18aa5a[_0x8c3a('0x18')]){case 0x0:if(_0x18aa5a[_0x8c3a('0x19')]){if(_0x18aa5a['result'][_0x8c3a('0x1a')]){logger[_0x8c3a('0x6')]('Tilde\x20ASR\x20hypoteses',JSON[_0x8c3a('0x12')](_0x18aa5a[_0x8c3a('0x19')]['hypotheses']));_0x4044aa=_0x18aa5a['result'][_0x8c3a('0x1b')][0x0]['transcript'];_0xeee1d7=_0x18aa5a['result']['hypotheses'][0x0][_0x8c3a('0x1c')];_0x158163='0';_0xcef52d=_0x8c3a('0x1d');_0x2abbb0[_0x8c3a('0x16')]();}}break;case 0x1:logger[_0x8c3a('0x6')](_0x8c3a('0x9'));_0x158163='1';_0xcef52d=_0x8c3a('0x9');break;case 0x2:logger[_0x8c3a('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x158163='2';_0xcef52d=_0x8c3a('0x1e');break;case 0x9:logger[_0x8c3a('0x6')](_0x8c3a('0x1f'));_0x158163='9';_0xcef52d=_0x8c3a('0x1f');break;case 0xa:logger['info'](_0x8c3a('0x20'));_0x158163='10';_0xcef52d=_0x8c3a('0x20');break;case 0xb:logger[_0x8c3a('0x6')](_0x8c3a('0x21'));_0x158163='11';_0xcef52d=_0x8c3a('0x21');}}}catch(_0x49c221){logger[_0x8c3a('0x22')]('Tilde\x20ASR\x20parse\x20error',JSON[_0x8c3a('0x12')](_0x49c221));_0x2abbb0['terminate']();}}function _0x3e9f22(){logger[_0x8c3a('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x5541de({'transcript':_0x4044aa,'confidence':_0xeee1d7,'status':_0x158163,'status_message':_0xcef52d});}function _0x8ec591(_0x4eedc0){logger[_0x8c3a('0x22')]('Error\x20Tilde\x20ASR\x20socket');if(!_['isNil'](_0x4eedc0)){logger[_0x8c3a('0x22')](_[_0x8c3a('0x23')](_0x4eedc0)?JSON['stringify'](_0x4eedc0):_0x4eedc0);}}_0x2abbb0['on'](_0x8c3a('0x24'),_0x2a6652);_0x2abbb0['on'](_0x8c3a('0x25'),_0x3d7d6);_0x2abbb0['on']('close',_0x3e9f22);_0x2abbb0['on'](_0x8c3a('0x22'),_0x8ec591);});};
\ No newline at end of file
+var _0xfa91=['lodash','moment','../../../../../../config/logger','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','createHash','sha1','digest','hex','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','hypotheses','likelihood','Success.','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird'];(function(_0x743701,_0x3e67bb){var _0x5a141d=function(_0x4b198d){while(--_0x4b198d){_0x743701['push'](_0x743701['shift']());}};_0x5a141d(++_0x3e67bb);}(_0xfa91,0x77));var _0x1fa9=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0xfa91[_0x256b72];return _0x2183e3;};'use strict';var BPromise=require(_0x1fa9('0x0'));var _=require(_0x1fa9('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x1fa9('0x2'));var crypto=require('crypto');var logger=require(_0x1fa9('0x3'))('agi');module[_0x1fa9('0x4')]=function(_0x510c8c,_0x5015ec,_0x589531,_0x3240eb){return new BPromise(function(_0x6ca24,_0x53c424){logger[_0x1fa9('0x5')](_0x1fa9('0x6'),_0x3240eb||_0x1fa9('0x7'));var _0x1b5e06=new WebSocket(_0x3240eb||_0x1fa9('0x7'),{'perMessageDeflate':![]});var _0x1610d7='';var _0x3a17dd='0';var _0x740bff='1';var _0x5baa58='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x160c9b(_0x4ef4c3){var _0x4ca3d7=crypto[_0x1fa9('0x8')](_0x1fa9('0x9'));_0x4ca3d7['update'](_0x4ef4c3);return _0x4ca3d7[_0x1fa9('0xa')](_0x1fa9('0xb'));}function _0x3f873b(){try{logger[_0x1fa9('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0x162ec6=moment()[_0x1fa9('0xc')]();var _0x2fa135=_0x160c9b(_0x162ec6+_0x5015ec+_0x589531);_0x1b5e06[_0x1fa9('0xd')](JSON[_0x1fa9('0xe')]({'appID':_0x5015ec,'timestamp':_0x162ec6,'appKey':_0x2fa135}));var _0x7156c9=fs[_0x1fa9('0xf')](_0x510c8c);_0x7156c9['on'](_0x1fa9('0x10'),function(_0xbc58c9){_0x1b5e06[_0x1fa9('0xd')](_0xbc58c9);});_0x7156c9['on'](_0x1fa9('0x11'),function(){_0x1b5e06['send'](_0x1fa9('0x12'));});}catch(_0x50d100){logger[_0x1fa9('0x13')](_0x1fa9('0x14'),JSON[_0x1fa9('0xe')](_0x50d100));_0x1b5e06[_0x1fa9('0x15')]();}}function _0xad9d3(_0x9f0939){try{if(_0x9f0939){var _0x2577d9=JSON[_0x1fa9('0x16')](_0x9f0939);switch(_0x2577d9[_0x1fa9('0x17')]){case 0x0:if(_0x2577d9['result']){if(_0x2577d9[_0x1fa9('0x18')][_0x1fa9('0x19')]){logger[_0x1fa9('0x5')]('Tilde\x20ASR\x20hypoteses',JSON[_0x1fa9('0xe')](_0x2577d9[_0x1fa9('0x18')][_0x1fa9('0x1a')]));_0x1610d7=_0x2577d9[_0x1fa9('0x18')][_0x1fa9('0x1a')][0x0]['transcript'];_0x3a17dd=_0x2577d9[_0x1fa9('0x18')][_0x1fa9('0x1a')][0x0][_0x1fa9('0x1b')];_0x740bff='0';_0x5baa58=_0x1fa9('0x1c');_0x1b5e06['terminate']();}}break;case 0x1:logger[_0x1fa9('0x5')](_0x1fa9('0x1d'));_0x740bff='1';_0x5baa58=_0x1fa9('0x1d');break;case 0x2:logger[_0x1fa9('0x5')](_0x1fa9('0x1e'));_0x740bff='2';_0x5baa58=_0x1fa9('0x1e');break;case 0x9:logger[_0x1fa9('0x5')](_0x1fa9('0x1f'));_0x740bff='9';_0x5baa58=_0x1fa9('0x1f');break;case 0xa:logger[_0x1fa9('0x5')](_0x1fa9('0x20'));_0x740bff='10';_0x5baa58='Authentication\x20failed.';break;case 0xb:logger[_0x1fa9('0x5')](_0x1fa9('0x21'));_0x740bff='11';_0x5baa58=_0x1fa9('0x21');}}}catch(_0x27b91d){logger[_0x1fa9('0x13')](_0x1fa9('0x22'),JSON[_0x1fa9('0xe')](_0x27b91d));_0x1b5e06[_0x1fa9('0x15')]();}}function _0x3ba643(){logger[_0x1fa9('0x5')]('Close\x20Tilde\x20ASR\x20socket');_0x6ca24({'transcript':_0x1610d7,'confidence':_0x3a17dd,'status':_0x740bff,'status_message':_0x5baa58});}function _0x2a93cf(_0x11d3a0){logger['error'](_0x1fa9('0x23'));if(!_[_0x1fa9('0x24')](_0x11d3a0)){logger[_0x1fa9('0x13')](_[_0x1fa9('0x25')](_0x11d3a0)?JSON[_0x1fa9('0xe')](_0x11d3a0):_0x11d3a0);}}_0x1b5e06['on'](_0x1fa9('0x26'),_0x3f873b);_0x1b5e06['on'](_0x1fa9('0x27'),_0xad9d3);_0x1b5e06['on'](_0x1fa9('0x11'),_0x3ba643);_0x1b5e06['on']('error',_0x2a93cf);});};
\ No newline at end of file
index c473a8d..9826401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfba9=['exports','./asr'];(function(_0x557b55,_0x570a83){var _0x523420=function(_0x5aa04a){while(--_0x5aa04a){_0x557b55['push'](_0x557b55['shift']());}};_0x523420(++_0x570a83);}(_0xfba9,0x85));var _0x9fba=function(_0x42afc6,_0x57f8a1){_0x42afc6=_0x42afc6-0x0;var _0x52ef7d=_0xfba9[_0x42afc6];return _0x52ef7d;};var asr=require(_0x9fba('0x0'));module[_0x9fba('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xb42e=['./asr'];(function(_0x4f3060,_0x123a95){var _0x197fc6=function(_0x192a23){while(--_0x192a23){_0x4f3060['push'](_0x4f3060['shift']());}};_0x197fc6(++_0x123a95);}(_0xb42e,0x1ae));var _0xeb42=function(_0x5b740b,_0x381833){_0x5b740b=_0x5b740b-0x0;var _0x6f8f4e=_0xb42e[_0x5b740b];return _0x6f8f4e;};var asr=require(_0xeb42('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 436e047..191495c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','./channel','call','emit','createServer','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy'];(function(_0x390752,_0x42cad3){var _0x5eca55=function(_0x529961){while(--_0x529961){_0x390752['push'](_0x390752['shift']());}};_0x5eca55(++_0x42cad3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var util=require(_0x0a9e('0x0'));var net=require(_0x0a9e('0x1'));var EventEmitter=require(_0x0a9e('0x2'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0a9e('0x3'));var AGIServer=function(_0x4ce2f1,_0x333808,_0x432180){var _0x2ab90b=this;var _0x991246=null;var _0x981158=0x0;if(!_0x4ce2f1)_0x4ce2f1=0x11dd;if(!_0x333808)_0x333808='127.0.0.1';EventEmitter[_0x0a9e('0x4')](_0x2ab90b);function _0x441e3a(){if(!_0x4ce2f1){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x991246=net[_0x0a9e('0x6')]();_0x991246['listen'](_0x4ce2f1,_0x333808);_0x991246['on']('listening',function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x7'));});_0x991246['on'](_0x0a9e('0x8'),function(_0x3ab53f){_0x991246[_0x0a9e('0x9')](function(_0xbd1168,_0x4a4c56){if(_0xbd1168){_0x2ab90b['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0xbd1168));}else if(_0x432180&&_0x432180<0x0){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError(_0x0a9e('0xb')));_0x3ab53f[_0x0a9e('0xc')]();}else if(_0x432180&&_0x432180>0x0&&_0x432180<_0x4a4c56){_0x981158+=0x1;_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x981158));_0x3ab53f[_0x0a9e('0xc')]();}else{var _0x239b12=new AGIChannel(_0x3ab53f);_0x239b12['on'](_0x0a9e('0xd'),function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x8'),_0x239b12);});}});});_0x991246['on'](_0x0a9e('0xa'),function(_0x52a03d){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError(_0x0a9e('0xe'),_0x52a03d['code']));});_0x991246['on'](_0x0a9e('0xf'),function(){_0x2ab90b[_0x0a9e('0x5')]('close',new AGIError(_0x0a9e('0x10')));});}process['nextTick'](function(){_0x441e3a();});};util[_0x0a9e('0x11')](AGIServer,EventEmitter);module[_0x0a9e('0x12')]=function(_0x106033,_0x205fd6,_0x31b1ca){return new AGIServer(_0x106033,_0x205fd6,_0x31b1ca);};
\ No newline at end of file
+var _0x9c44=['./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','events','EventEmitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require(_0x49c4('0x0'))[_0x49c4('0x1')];var AGIError=require(_0x49c4('0x2'));var AGIChannel=require(_0x49c4('0x3'));var AGIServer=function(_0x455700,_0x2ad237,_0x4e0313){var _0x4941f1=this;var _0x41a183=null;var _0x57effd=0x0;if(!_0x455700)_0x455700=0x11dd;if(!_0x2ad237)_0x2ad237=_0x49c4('0x4');EventEmitter[_0x49c4('0x5')](_0x4941f1);function _0x69bc41(){if(!_0x455700){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x41a183=net[_0x49c4('0x8')]();_0x41a183[_0x49c4('0x9')](_0x455700,_0x2ad237);_0x41a183['on'](_0x49c4('0xa'),function(){_0x4941f1[_0x49c4('0x6')]('listening');});_0x41a183['on']('connection',function(_0x451ea6){_0x41a183[_0x49c4('0xb')](function(_0x58cad7,_0xb611a1){if(_0x58cad7){_0x4941f1[_0x49c4('0x6')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x58cad7));}else if(_0x4e0313&&_0x4e0313<0x0){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x451ea6[_0x49c4('0xc')]();}else if(_0x4e0313&&_0x4e0313>0x0&&_0x4e0313<_0xb611a1){_0x57effd+=0x1;_0x4941f1[_0x49c4('0x6')]('error',new AGIError(_0x49c4('0xd'),_0x57effd));_0x451ea6[_0x49c4('0xc')]();}else{var _0x21f15a=new AGIChannel(_0x451ea6);_0x21f15a['on'](_0x49c4('0xe'),function(){_0x4941f1[_0x49c4('0x6')](_0x49c4('0xf'),_0x21f15a);});}});});_0x41a183['on'](_0x49c4('0x7'),function(_0x3de397){_0x4941f1['emit'](_0x49c4('0x7'),new AGIError(_0x49c4('0x10'),_0x3de397[_0x49c4('0x11')]));});_0x41a183['on'](_0x49c4('0x12'),function(){_0x4941f1[_0x49c4('0x6')]('close',new AGIError(_0x49c4('0x13')));});}process[_0x49c4('0x14')](function(){_0x69bc41();});};util['inherits'](AGIServer,EventEmitter);module['exports']=function(_0x3c782d,_0x2f82d5,_0x3addb2){return new AGIServer(_0x3c782d,_0x2f82d5,_0x3addb2);};
\ No newline at end of file
index 06e1875..d31ccd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x590a=['An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','parse','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','stringify','body','render','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','ispeechASR','key','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','awsLex','googleASR','tildeASR','appsecret','clear','clone','replaceObjectAllVariables','replaceAllVariables','hasOwnProperty','isArray','length','recursiveNodeIndex','isString','saveRestApiResult','setVariable','%s.%s','split','replaceAll','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','extra','retry','mrcpsynth','label','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','timeout','Wait\x20%s\x20seconds\x20before\x20answer','wait','callback','no\x20list\x20selected','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','lumenvoxasr','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','query:\x20%s','getQueryOdbc','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','SIP/%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','bot','DIALOGFLOW_%s','speech','out','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','audiofile','unlink','.wav','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','DIAL','SIP/%s/%s','opts','Enter\x20in\x20FINALLY\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','tildeasr','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','NOBEEP','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','Enter\x20in\x20LOGOUT\x20(%s)\x20block','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','maxRetry','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','indexOf','toLowerCase','QUEUE','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','inspect','%s_STATUS_CODE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','getMailAccount','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','project_id','host','127.0.0.1','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','apiKey','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','exports','lodash','shelljs','odbc','randomstring','moment','../../config/logger','agi','../../config/environment','./scripts','rawHeaders','rawBody','menu','getdigits','channel','rpc','mailRpc','getVariable','getVariableById','then','prototype','getVoiceQueue','getVoiceQueueById','name','getSquareProject','getSquareProjectById','catch','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundPath','save_name','getMailAccountById','sendMailMessage','getIntervalById','IntervalId','map','Intervals','interval','format','%s/sounds/converted/%s','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','agicommand','arg_1','createSquareRecording','uniqueid','calleridname','context','extension','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agent','callerid','agentLogout','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','url','includes','POST','PUT','method','toUpperCase'];(function(_0x256422,_0x367394){var _0x55dddc=function(_0x1594bc){while(--_0x1594bc){_0x256422['push'](_0x256422['shift']());}};_0x55dddc(++_0x367394);}(_0x590a,0x159));var _0xa590=function(_0x2e1375,_0x12d9c0){_0x2e1375=_0x2e1375-0x0;var _0x4d720e=_0x590a[_0x2e1375];return _0x4d720e;};'use strict';var fs=require('fs');var util=require('util');var _=require(_0xa590('0x0'));var sh=require(_0xa590('0x1'));var odbc=require(_0xa590('0x2'))();var rs=require(_0xa590('0x3'));var moment=require(_0xa590('0x4'));var Mustache=require('mustache');var rp=require('request-promise');var logger=require(_0xa590('0x5'))(_0xa590('0x6'));var config=require(_0xa590('0x7'));var shared=require('../../config/environment/shared');var scripts=require(_0xa590('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0xa590('0x9'),_0xa590('0xa')];var verticesWithRetry=[_0xa590('0xb'),_0xa590('0xc'),'getsecretdigits'];var AGIVertices=function(_0x4d840d,_0x13dc7a,_0x486f78){this[_0xa590('0xd')]=_0x4d840d;this[_0xa590('0xe')]=_0x13dc7a;this[_0xa590('0xf')]=_0x486f78;};AGIVertices['prototype'][_0xa590('0x10')]=function(_0x10ea3e,_0xcd3bdb){this[_0xa590('0xe')][_0xa590('0x11')](_0x10ea3e)[_0xa590('0x12')](function(_0x201863){_0xcd3bdb(null,_0x201863?_0x201863['name']:![]);})['catch'](function(_0x252e2b){_0xcd3bdb(_0x252e2b);});};AGIVertices[_0xa590('0x13')][_0xa590('0x14')]=function(_0x1733ab,_0x52656c){this[_0xa590('0xe')][_0xa590('0x15')](_0x1733ab)['then'](function(_0x569f99){_0x52656c(null,_0x569f99?_0x569f99[_0xa590('0x16')]:![]);})['catch'](function(_0x165b81){_0x52656c(_0x165b81);});};AGIVertices[_0xa590('0x13')][_0xa590('0x17')]=function(_0x18092f,_0xfb7055){this[_0xa590('0xe')][_0xa590('0x18')](_0x18092f)[_0xa590('0x12')](function(_0x4f4075){_0xfb7055(null,_0x4f4075?_0x4f4075[_0xa590('0x16')]:![]);})[_0xa590('0x19')](function(_0x360a1e){_0xfb7055(_0x360a1e);});};AGIVertices[_0xa590('0x13')][_0xa590('0x1a')]=function(_0x352bf6,_0x219d01){this[_0xa590('0xe')][_0xa590('0x1b')](_0x352bf6)[_0xa590('0x12')](function(_0x12eaec){_0x219d01(null,_0x12eaec?_0x12eaec[_0xa590('0x1c')]:![]);})[_0xa590('0x19')](function(_0x544a16){_0x219d01(_0x544a16);});};AGIVertices[_0xa590('0x13')][_0xa590('0x1d')]=function(_0x47d5f4,_0x489a13){this[_0xa590('0xe')][_0xa590('0x1e')](_0x47d5f4)[_0xa590('0x12')](function(_0x20dfa3){_0x489a13(null,_0x20dfa3?_0x20dfa3[_0xa590('0x16')]:![]);})['catch'](function(_0x1805d8){_0x489a13(_0x1805d8);});};AGIVertices[_0xa590('0x13')][_0xa590('0x1f')]=function(_0x257297,_0x41eb90){this[_0xa590('0xe')]['getTrunkById'](_0x257297)[_0xa590('0x12')](function(_0x4fdc6e){_0x41eb90(null,_0x4fdc6e?_0x4fdc6e[_0xa590('0x16')]:![]);})[_0xa590('0x19')](function(_0x46f7dd){_0x41eb90(_0x46f7dd);});};AGIVertices['prototype'][_0xa590('0x20')]=function(_0x218939,_0x8556d0){var _0x1b15d2=this;this['rpc']['getSoundById'](_0x218939)[_0xa590('0x12')](function(_0x391f8c){_0x8556d0(null,_0x391f8c?_0x1b15d2[_0xa590('0x21')](_0x391f8c[_0xa590('0x22')]):![]);})[_0xa590('0x19')](function(_0x35a179){_0x8556d0(_0x35a179);});};AGIVertices[_0xa590('0x13')]['getMailAccount']=function(_0x2fca57,_0x17bafb){this[_0xa590('0xe')][_0xa590('0x23')](_0x2fca57)[_0xa590('0x12')](function(_0x3c5c74){_0x17bafb(null,_0x3c5c74?_0x3c5c74:![]);})['catch'](function(_0x5602b3){_0x17bafb(_0x5602b3);});};AGIVertices['prototype'][_0xa590('0x24')]=function(_0x559cc1,_0x582728,_0x366310){this[_0xa590('0xf')][_0xa590('0x24')](_0x559cc1,_0x582728)[_0xa590('0x12')](function(){_0x366310(null);})['catch'](function(_0x4464bc){_0x366310(_0x4464bc);});};AGIVertices[_0xa590('0x13')]['getIntervals']=function(_0x2f5392,_0x3643f0){this[_0xa590('0xe')][_0xa590('0x25')](_0x2f5392)[_0xa590('0x12')](function(_0x490979){if(_0x490979){if(_0x490979[_0xa590('0x26')]){_0x3643f0(null,[_0x490979['interval']]);}else{_0x3643f0(null,_[_0xa590('0x27')](_0x490979[_0xa590('0x28')],_0xa590('0x29')));}}else{_0x3643f0(null,![]);}})[_0xa590('0x19')](function(_0x4ed0b7){_0x3643f0(_0x4ed0b7);});};AGIVertices[_0xa590('0x13')][_0xa590('0x21')]=function(_0x3ed307){return util[_0xa590('0x2a')](_0xa590('0x2b'),FILES_PATH,_0x3ed307);};AGIVertices[_0xa590('0x13')]['getQueryOdbc']=function(_0x347964,_0x34bdf6,_0x1b9fa6){odbc[_0xa590('0x2c')](_0x347964,function(_0x2677ff){if(_0x2677ff){logger[_0xa590('0x2d')](_0xa590('0x2e'),_0x2677ff);_0x1b9fa6(_0x2677ff);}else{logger[_0xa590('0x2f')](_0xa590('0x30'));odbc[_0xa590('0x31')](_0x34bdf6,function(_0x262405,_0x4d1e81){if(_0x262405){logger['info']('Error\x20executing\x20query\x20%s',_0x34bdf6);_0x1b9fa6(_0x262405);}else{logger[_0xa590('0x2f')](_0xa590('0x32'),_0x34bdf6);odbc[_0xa590('0x33')](function(_0x4b8b6d){if(_0x4b8b6d){logger[_0xa590('0x2d')](_0xa590('0x34'),_0x4b8b6d);}_0x1b9fa6(null,_0x4d1e81);});}});}});};AGIVertices['prototype'][_0xa590('0x35')]=function(_0x41835f,_0x4ab94d){this[_0xa590('0xe')][_0xa590('0x36')](_0x41835f)[_0xa590('0x12')](function(_0xf858d4){_0x4ab94d(null,_0xf858d4?_0xf858d4:![]);})['catch'](function(_0x147766){_0x4ab94d(_0x147766);});};AGIVertices['prototype'][_0xa590('0x37')]=function(_0x1b90d9,_0x25b9e3){this[_0xa590('0xe')][_0xa590('0x37')](_0x1b90d9)[_0xa590('0x12')](function(_0x4382df){_0x25b9e3(null,_0x4382df);})[_0xa590('0x19')](function(_0x2a44ee){_0x25b9e3(_0x2a44ee);});};AGIVertices[_0xa590('0x13')][_0xa590('0x38')]=function(_0x5408f4,_0x16431f,_0x256317){this[_0xa590('0xe')][_0xa590('0x38')]({'uniqueid':this[_0xa590('0xd')]['uniqueid'],'node':_0x5408f4['label'],'application':_0x5408f4[_0xa590('0x39')],'data':_0x16431f||null,'project_name':this[_0xa590('0xd')][_0xa590('0x3a')],'callerid':this[_0xa590('0xd')]['callerid']})[_0xa590('0x12')](function(_0x50c0c2){if(_0x256317){_0x256317(null,_0x50c0c2);}})[_0xa590('0x19')](function(_0x4938b7){if(_0x256317){_0x256317(_0x4938b7);}});};AGIVertices[_0xa590('0x13')]['createSquareRecording']=function(_0x12590e,_0x48ea4d,_0x5305e4,_0x428645){this[_0xa590('0xe')][_0xa590('0x3b')]({'uniqueid':this[_0xa590('0xd')][_0xa590('0x3c')],'callerid':this[_0xa590('0xd')]['callerid'],'calleridname':this['channel'][_0xa590('0x3d')],'context':this['channel'][_0xa590('0x3e')],'extension':this[_0xa590('0xd')][_0xa590('0x3f')],'priority':this[_0xa590('0xd')][_0xa590('0x40')],'accountcode':this['channel']['accountcode'],'dnid':this[_0xa590('0xd')][_0xa590('0x41')],'projectName':this[_0xa590('0xd')]['arg_1'],'saveName':_0x48ea4d,'filename':_0x12590e[_0xa590('0x42')]||_0x48ea4d,'savePath':_0x5305e4})['then'](function(_0x196b84){_0x428645(null,_0x196b84);})[_0xa590('0x19')](function(_0x407f13){_0x428645(_0x407f13);});};AGIVertices[_0xa590('0x13')]['createSquareMessage']=function(_0x207cae,_0x3b046a,_0x5118a8,_0x47f4f1,_0x2968f0){this[_0xa590('0xe')][_0xa590('0x43')]({'uniqueid':this[_0xa590('0xd')]['uniqueid'],'body':_0x207cae,'direction':_0x3b046a,'providerName':_0x5118a8,'providerResponse':_0x47f4f1})[_0xa590('0x12')](function(_0x54dd1b){if(_0x2968f0){_0x2968f0(null,_0x54dd1b);}})[_0xa590('0x19')](function(_0x154438){if(_0x2968f0){_0x2968f0(_0x154438);}});};AGIVertices[_0xa590('0x13')]['createCmContact']=function(_0xa83ae5,_0x2f5ace){this[_0xa590('0xe')][_0xa590('0x44')]({'firstName':_[_0xa590('0x45')](_0xa83ae5[_0xa590('0x16')])||_[_0xa590('0x46')](_0xa83ae5[_0xa590('0x16')])?_0xa590('0x47')+Math['random']():_0xa83ae5[_0xa590('0x16')],'lastName':_[_0xa590('0x45')](_0xa83ae5[_0xa590('0x48')])||_['isNil'](_0xa83ae5['lastName'])?null:_0xa83ae5['lastName'],'phone':_0xa83ae5[_0xa590('0x49')],'ListId':_0xa83ae5[_0xa590('0x4a')],'scheduledat':_0xa83ae5[_0xa590('0x4b')],'callbackUniqueid':this[_0xa590('0xd')][_0xa590('0x3c')],'tags':'callback','description':'Callback\x20scheduled\x20at\x20'+_0xa83ae5[_0xa590('0x4b')][_0xa590('0x4c')](),'priority':_0xa83ae5[_0xa590('0x4d')]})['then'](function(_0x22d392){_0x2f5ace(null,_0x22d392);})[_0xa590('0x19')](function(_0x545521){_0x2f5ace(_0x545521);});};AGIVertices['prototype'][_0xa590('0x4e')]=function(_0x34abae,_0x2b3713){this[_0xa590('0xe')][_0xa590('0x4f')](_0x34abae)['then'](function(_0x424383){_0x2b3713(null,_0x424383?_0x424383[_0xa590('0x16')]:![]);})[_0xa590('0x19')](function(_0x35c25b){_0x2b3713(_0x35c25b);});};AGIVertices[_0xa590('0x13')][_0xa590('0x50')]=function(_0x332512,_0x30207c,_0x4296e8){var _0x5acb6c={'role':_0xa590('0x51')};_0x5acb6c[_0x332512]=this['channel'][_0xa590('0x52')];this['rpc'][_0xa590('0x50')](_0x5acb6c,_0x30207c,this[_0xa590('0xd')][_0xa590('0x3c')])['then'](function(_0x4933a7){_0x4296e8(null,_[_0xa590('0x46')](_0x4933a7)?![]:!![]);})['catch'](function(_0x277dff){logger['error'](_0x277dff);_0x4296e8(null,![]);});};AGIVertices[_0xa590('0x13')]['agentUnpause']=function(_0x393437,_0x52b113){var _0x5aeb26={'role':_0xa590('0x51')};_0x5aeb26[_0x393437]=this[_0xa590('0xd')][_0xa590('0x52')];this[_0xa590('0xe')]['agentUnpause'](_0x5aeb26)[_0xa590('0x12')](function(_0x3e4927){_0x52b113(null,_[_0xa590('0x46')](_0x3e4927)?![]:!![]);})[_0xa590('0x19')](function(_0x3660ff){logger[_0xa590('0x2d')](_0x3660ff);_0x52b113(null,![]);});};AGIVertices['prototype'][_0xa590('0x53')]=function(_0x16d232,_0x552bcd){var _0x9583c={'role':'agent'};_0x9583c[_0x16d232]=this[_0xa590('0xd')][_0xa590('0x52')];this[_0xa590('0xe')][_0xa590('0x53')](_0x9583c)[_0xa590('0x12')](function(_0x5ed6c0){_0x552bcd(null,_[_0xa590('0x46')](_0x5ed6c0)?![]:!![]);})['catch'](function(_0x35fa22){logger[_0xa590('0x2d')](_0x35fa22);_0x552bcd(null,![]);});};AGIVertices[_0xa590('0x13')][_0xa590('0x54')]=function(_0x1fbfad,_0x440116){var _0x52595e={'role':_0xa590('0x51')};_0x52595e[_0x1fbfad]=this['channel'][_0xa590('0x52')];var _0x39789d=_0x1fbfad!='internal'?util[_0xa590('0x2a')](_0xa590('0x55'),_0xa590('0x56'),this[_0xa590('0xd')][_0xa590('0x52')]):undefined;this['rpc'][_0xa590('0x54')](_0x52595e,_0x39789d)[_0xa590('0x12')](function(_0x176eb6){_0x440116(null,_[_0xa590('0x46')](_0x176eb6)?![]:!![]);})[_0xa590('0x19')](function(_0x4ed0dd){logger[_0xa590('0x2d')](_0x4ed0dd);_0x440116(null,![]);});};AGIVertices['prototype'][_0xa590('0x57')]=function(_0x300f55,_0x223b48){sh[_0xa590('0x58')](_[_0xa590('0x59')](_0x300f55),function(_0x109612,_0x4557d0){var _0x1ca7d8=_0x4557d0[_0xa590('0x5a')](/(\r\n|\n|\r)/gm,'');_0x223b48(null,_0x1ca7d8);});};AGIVertices[_0xa590('0x13')][_0xa590('0x5b')]=function(_0x3af4b6,_0x326033){scripts['googleCloudTTS'](_0x3af4b6['apiKey'],_0x3af4b6[_0xa590('0x5c')]||_0xa590('0x5d'),_0x3af4b6['text'],_0x3af4b6[_0xa590('0x5e')]||_0xa590('0x5f'),_0x3af4b6[_0xa590('0x60')]||_0xa590('0x61'),_0x3af4b6[_0xa590('0x62')]||'MP3')[_0xa590('0x12')](function(_0x3b7001){_0x326033(null,_0x3b7001);})['catch'](function(_0x5921c6){_0x326033(_0x5921c6);});};AGIVertices[_0xa590('0x13')][_0xa590('0x63')]=function(_0x5b4083,_0x15e6d4){scripts['googleTTS'](_0x5b4083[_0xa590('0x5d')],_0x5b4083[_0xa590('0x64')]||'en',0x1)['then'](function(_0x3acb3b){_0x15e6d4(null,_0x3acb3b);})[_0xa590('0x19')](function(_0x1127ff){_0x15e6d4(_0x1127ff);});};AGIVertices[_0xa590('0x13')]['restAPI']=function(_0x541c2f,_0x754d71){var _0x1c75f6={'uri':_0x541c2f[_0xa590('0x65')],'method':_0x541c2f['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x541c2f['timeout'])==='number'&&parseInt(_0x541c2f['timeout'])>=0x1?parseInt(_0x541c2f['timeout'])*0x3e8:0x5*0x3e8};if(_[_0xa590('0x66')]([_0xa590('0x67'),_0xa590('0x68')],_0x1c75f6[_0xa590('0x69')][_0xa590('0x6a')]())){try{_0x1c75f6['body']=_0x541c2f[_0xa590('0xa')]?JSON['parse'](_0x541c2f[_0xa590('0xa')]):{};}catch(_0x4c5758){logger[_0xa590('0x2d')](_0xa590('0x6b'),_0x4c5758);}}try{_0x1c75f6[_0xa590('0x6c')]=_0x541c2f['rawHeaders']?JSON[_0xa590('0x6d')](_0x541c2f['rawHeaders']):{};}catch(_0x2993bb){logger[_0xa590('0x2d')](_0xa590('0x6e'),_0x2993bb);}if(_0x541c2f['computedVariables']){try{var _0x2b5532=require(_0x541c2f[_0xa590('0x6f')])[_0xa590('0x70')](this,_0x1c75f6);_0x1c75f6[_0xa590('0x71')]=Mustache['render'](_0x541c2f[_0xa590('0x65')],_0x2b5532,{},['$$','$$']);if(_0x1c75f6[_0xa590('0x6c')]){_0x1c75f6['headers']=JSON[_0xa590('0x6d')](Mustache['render'](JSON[_0xa590('0x72')](_0x1c75f6[_0xa590('0x6c')]),_0x2b5532,{},['$$','$$']));}if(_0x1c75f6[_0xa590('0x73')]){_0x1c75f6[_0xa590('0x73')]=JSON['parse'](Mustache[_0xa590('0x74')](JSON[_0xa590('0x72')](_0x1c75f6['body']),_0x2b5532,{},['$$','$$']));}}catch(_0x467b2a){logger[_0xa590('0x2d')](_0xa590('0x75'),_0x467b2a);}}rp(_0x1c75f6)[_0xa590('0x12')](function(_0x49d7ea){var _0x2d2a2e={'statusCode':_0x49d7ea[_0xa590('0x76')]||0xc8,'statusMessage':_0x49d7ea[_0xa590('0x77')]||'OK','headers':_0x49d7ea['headers']||{},'body':_0x49d7ea['body']||{}};_0x754d71(null,_0x2d2a2e);})[_0xa590('0x19')](function(_0x111d13){var _0xfa3cf9={'statusCode':_0x111d13[_0xa590('0x76')]||0x1f4,'statusMessage':_0x111d13[_0xa590('0x78')]||_0xa590('0x79'),'headers':_0x111d13[_0xa590('0x7a')][_0xa590('0x6c')]||{},'body':_0x111d13[_0xa590('0x7a')][_0xa590('0x73')]||{}};_0x754d71(null,_0xfa3cf9);});};AGIVertices[_0xa590('0x13')][_0xa590('0x7b')]=function(_0x57d548,_0x49da11){scripts[_0xa590('0x7b')](this['channel']['uniqueid'],_0x57d548['key'],_0x57d548['text'],_0x57d548[_0xa590('0x7c')]||'en')[_0xa590('0x12')](function(_0x535113){_0x49da11(null,_0x535113);})[_0xa590('0x19')](function(_0x28bf4d){_0x49da11(_0x28bf4d);});};AGIVertices[_0xa590('0x13')][_0xa590('0x7d')]=function(_0x3936b0,_0x969e6a){scripts['googleDialogflowV2'](this[_0xa590('0xd')][_0xa590('0x3c')],_0x3936b0[_0xa590('0x7e')],_0x3936b0['client_email'],_0x3936b0[_0xa590('0x7f')],_0x3936b0[_0xa590('0x5d')],_0x3936b0[_0xa590('0x80')]||'en')[_0xa590('0x12')](function(_0x328768){_0x969e6a(null,_0x328768);})['catch'](function(_0x58bc5a){_0x969e6a(_0x58bc5a);});};AGIVertices[_0xa590('0x13')][_0xa590('0x81')]=function(_0x24c8a0,_0x2b5192){scripts['sestekNDA'](this[_0xa590('0xd')],_0x24c8a0)['then'](function(_0x315dd0){_0x2b5192(null,_0x315dd0);})[_0xa590('0x19')](function(_0x164d15){_0x2b5192(_0x164d15);});};AGIVertices[_0xa590('0x13')][_0xa590('0x82')]=function(_0xd784a8,_0x1412ae){scripts[_0xa590('0x82')](_0xd784a8['key'],_0xd784a8[_0xa590('0x5d')],_0xd784a8[_0xa590('0x83')]||_0xa590('0x5f'),_0xd784a8['speed'])[_0xa590('0x12')](function(_0x53405b){_0x1412ae(null,_0x53405b);})[_0xa590('0x19')](function(_0x15bdf3){_0x1412ae(_0x15bdf3);});};AGIVertices[_0xa590('0x13')]['ispeechASR']=function(_0x62a2fb,_0x2e9394,_0x14c29f){scripts[_0xa590('0x84')](_0x2e9394,_0x62a2fb[_0xa590('0x85')],_0x62a2fb['ispeech_asr_language']||_0xa590('0x5f'),this[_0xa590('0x86')](_0x62a2fb[_0xa590('0x87')])?_0x62a2fb[_0xa590('0x87')]:undefined)['then'](function(_0x1f0243){_0x14c29f(null,_0x1f0243);})[_0xa590('0x19')](function(_0x4d9542){_0x14c29f(_0x4d9542);});};AGIVertices[_0xa590('0x13')]['awsPolly']=function(_0x364207,_0x588d7b){scripts[_0xa590('0x88')](_0x364207[_0xa590('0x89')],_0x364207[_0xa590('0x8a')],_0x364207[_0xa590('0x8b')],_0x364207[_0xa590('0x8c')]||_0xa590('0x8d'),_0x364207[_0xa590('0x5d')],_0x364207['aws_text_type']||_0xa590('0x5d'))[_0xa590('0x12')](function(_0x58006e){_0x588d7b(null,_0x58006e);})[_0xa590('0x19')](function(_0x17ed20){_0x588d7b(_0x17ed20);});};AGIVertices[_0xa590('0x13')][_0xa590('0x8e')]=function(_0x105f0a,_0x2e25a2){scripts[_0xa590('0x8e')](this[_0xa590('0xd')]['uniqueid'],_0x105f0a[_0xa590('0x89')],_0x105f0a[_0xa590('0x8a')],_0x105f0a['aws_lex_region'],_0x105f0a['text'],_0x105f0a['aws_bot_name'])[_0xa590('0x12')](function(_0x10a263){_0x2e25a2(null,_0x10a263);})[_0xa590('0x19')](function(_0x44bb51){_0x2e25a2(_0x44bb51);});};AGIVertices[_0xa590('0x13')][_0xa590('0x8f')]=function(_0xa77904,_0x9cd4c7,_0x53e56e){scripts[_0xa590('0x8f')](_0x9cd4c7,_0xa77904['key'],_0xa77904['google_asr_language']||'en-US')[_0xa590('0x12')](function(_0x4bed37){_0x53e56e(null,_0x4bed37);})[_0xa590('0x19')](function(_0x11c750){_0x53e56e(_0x11c750);});};AGIVertices[_0xa590('0x13')][_0xa590('0x90')]=function(_0x15de06,_0x588cd1,_0x4a34b3){scripts[_0xa590('0x90')](_0x588cd1,_0x15de06['appid'],_0x15de06[_0xa590('0x91')],_0x15de06[_0xa590('0x71')])[_0xa590('0x12')](function(_0x452d04){_0x4a34b3(null,_0x452d04);})[_0xa590('0x19')](function(_0x1b128e){_0x4a34b3(_0x1b128e);});};AGIVertices[_0xa590('0x13')][_0xa590('0x92')]=function(_0x613739){var _0x28bb2c=_[_0xa590('0x66')](verticesWithRetry,_0x613739[_0xa590('0x39')])?_0x613739:_[_0xa590('0x93')](_0x613739);for(var _0x9073e8 in _0x28bb2c){if(_0x28bb2c['hasOwnProperty'](_0x9073e8)){if(_0x28bb2c[_0x9073e8]&&_['isString'](_0x28bb2c[_0x9073e8])){if(_[_0xa590('0x66')](recursiveMapAttributes,_0x9073e8)){_0x28bb2c[_0x9073e8]=this[_0xa590('0x94')](_0x28bb2c[_0x9073e8]);}else{_0x28bb2c[_0x9073e8]=this[_0xa590('0x95')](_0x28bb2c[_0x9073e8]);}}}}return _0x28bb2c;};AGIVertices[_0xa590('0x13')]['recursiveNodeIndex']=function(_0x386fad){for(var _0x5aed65 in _0x386fad){if(_0x386fad[_0xa590('0x96')](_0x5aed65)){if(_['isPlainObject'](_0x386fad[_0x5aed65])){this['recursiveNodeIndex'](_0x386fad[_0x5aed65]);}else if(_[_0xa590('0x97')](_0x386fad[_0x5aed65])){for(var _0x2714e9=0x0;_0x2714e9<_0x386fad[_0x5aed65][_0xa590('0x98')];_0x2714e9++){this[_0xa590('0x99')](_0x386fad[_0x5aed65][_0x2714e9]);}}else if(_[_0xa590('0x9a')](_0x386fad[_0x5aed65])){_0x386fad[_0x5aed65]=this[_0xa590('0x95')](_0x386fad[_0x5aed65]);}}}};AGIVertices[_0xa590('0x13')][_0xa590('0x9b')]=function(_0x267c8e,_0x12c5a0){for(var _0x152739 in _0x267c8e){if(_0x267c8e[_0xa590('0x96')](_0x152739)){if(_['isPlainObject'](_0x267c8e[_0x152739])){if(!_['isEmpty'](_0x267c8e[_0x152739])){this[_0xa590('0x9b')](_0x267c8e[_0x152739],util[_0xa590('0x2a')]('%s.%s',_0x12c5a0,_0x152739));}}else if(_['isArray'](_0x267c8e[_0x152739])){for(var _0x4a7e67=0x0;_0x4a7e67<_0x267c8e[_0x152739][_0xa590('0x98')];_0x4a7e67++){this['saveRestApiResult'](_0x267c8e[_0x152739][_0x4a7e67],util[_0xa590('0x2a')]('%s.%s',_0x12c5a0,_0x152739+'['+_0x4a7e67+']'));}}else{if(!_[_0xa590('0x46')](_0x267c8e[_0x152739])){this[_0xa590('0xd')][_0xa590('0x9c')](util['format'](_0xa590('0x9d'),_0x12c5a0,_0x152739),_0x267c8e[_0x152739]);}}}}};AGIVertices['prototype'][_0xa590('0x94')]=function(_0x5ad091){try{var _0x3d4e4c=JSON[_0xa590('0x6d')](_0x5ad091);this['recursiveNodeIndex'](_0x3d4e4c);return JSON[_0xa590('0x72')](_0x3d4e4c);}catch(_0x3e71cc){return this[_0xa590('0x95')](_0x5ad091);}};AGIVertices[_0xa590('0x13')][_0xa590('0x95')]=function(_0x5c190b){var _0x47e33e=_0x5c190b[_0xa590('0x9e')]('{');for(var _0x347c6a=0x1;_0x347c6a<_0x47e33e[_0xa590('0x98')];_0x347c6a+=0x1){var _0xbd8235=_0x47e33e[_0x347c6a][_0xa590('0x9e')]('}');if(_0xbd8235[_0xa590('0x98')]>0x1){_0x5c190b=_0x5c190b[_0xa590('0x9f')]('{'+_0xbd8235[0x0]+'}',this[_0xa590('0xd')]['getVariable'](_0xbd8235[0x0])['extra']||_0xbd8235[0x0]);}}if(_0x47e33e[_0xa590('0x98')]===0x1){return _0x5c190b[_0xa590('0x4c')]();}return this[_0xa590('0x95')](_0x5c190b);};AGIVertices[_0xa590('0x13')][_0xa590('0xa0')]=function(_0x33e0db,_0x46e99a){var _0x3d923e=this[_0xa590('0xd')][_0xa590('0x10')](_0x33e0db);if(_0x3d923e[_0xa590('0xa1')]===-0x1){return _0x3d923e;}logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xa2'),_0x46e99a,_0x3d923e[_0xa590('0xa3')]));return this[_0xa590('0xd')]['setVariable'](_0x46e99a,_0x3d923e[_0xa590('0xa3')]);};AGIVertices['prototype'][_0xa590('0x86')]=function(_0x5e382c){return _0x5e382c&&_0x5e382c!=='0'&&_0x5e382c!=='-1'&&_0x5e382c!=='';};AGIVertices[_0xa590('0x13')]['maxRetry']=function(_0x306c87){this[_0xa590('0x38')][_0xa590('0x70')](this,_0x306c87,'-');_0x306c87[_0xa590('0xa4')]=_0x306c87['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xa590('0x13')][_0xa590('0xa5')]=function(_0x300f07){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x300f07[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x300f07['text'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xa8'));}var _0x23cb6e='\x22'+_0x300f07[_0xa590('0x5d')]+'\x22';if(this[_0xa590('0x86')](_0x300f07['options'])){_0x23cb6e+=','+_0x300f07[_0xa590('0x7a')];}var _0x5039b6=this[_0xa590('0xd')][_0xa590('0x58')](_0xa590('0xa9'),_0x23cb6e);if(_0x5039b6[_0xa590('0xa1')]===-0x1){return _0x5039b6;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xaa'),_0x23cb6e));};AGIVertices[_0xa590('0x13')][_0xa590('0xab')]=function(_0x31107c){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xac'),_0x31107c['label']));if(!this['isConfigured'](_0x31107c[_0xa590('0xad')])){return this['channel'][_0xa590('0xa7')]('no\x20grammar\x20configured');}var _0x55ca54=_0x31107c[_0xa590('0xad')];if(this['isConfigured'](_0x31107c['options'])){_0x55ca54+=','+_0x31107c['options'];}var _0x11969d=this['channel'][_0xa590('0x58')](_0xa590('0xae'),_0x55ca54);if(_0x11969d[_0xa590('0xa1')]===-0x1){return _0x11969d;}var _0x38be4e=this[_0xa590('0xa0')](_0xa590('0xaf'),_0xa590('0xb0'));if(_0x38be4e[_0xa590('0xa1')]===-0x1){return _0x38be4e;}var _0x20293e=this[_0xa590('0xa0')](_0xa590('0xb1'),_0xa590('0xb2'));if(_0x20293e[_0xa590('0xa1')]===-0x1){return _0x20293e;}var _0x74deca=this[_0xa590('0xa0')]('RECOG_INSTANCE()',_0xa590('0xb3'));if(_0x74deca[_0xa590('0xa1')]===-0x1){return _0x74deca;}return this[_0xa590('0xd')][_0xa590('0xa7')](util['format'](_0xa590('0xb4'),_0x55ca54));};AGIVertices[_0xa590('0x13')][_0xa590('0x6')]=function(_0x5f21a3){logger['info'](util[_0xa590('0x2a')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x5f21a3[_0xa590('0xa6')]));return this[_0xa590('0xd')]['agi']([_0x5f21a3[_0xa590('0xb5')],_0x5f21a3[_0xa590('0xb6')]]);};AGIVertices['prototype'][_0xa590('0xb7')]=function(_0x4a5898){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xb8'),_0x4a5898[_0xa590('0xa6')]));if(this[_0xa590('0x86')](_0x4a5898[_0xa590('0xb9')])){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xba'),_0x4a5898[_0xa590('0xb9')]));var _0x5a9004=this[_0xa590('0xd')][_0xa590('0xbb')](_0x4a5898['timeout']);if(_0x5a9004['result']===-0x1){return _0x5a9004;}}return this[_0xa590('0xd')]['answer']();};AGIVertices['prototype'][_0xa590('0xbc')]=function(_0x487ad4){logger['info'](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x487ad4[_0xa590('0xa6')]));if(!this['isConfigured'](_0x487ad4[_0xa590('0x4a')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x487ad4,_0xa590('0xbd'));}_0x487ad4[_0xa590('0x4b')]=moment();if(this[_0xa590('0x86')](_0x487ad4[_0xa590('0xbe')])){_0x487ad4['scheduledAt']=moment()[_0xa590('0xbf')](_0x487ad4['delay'],_0xa590('0xc0'));}if(!this['isConfigured'](_0x487ad4[_0xa590('0x4d')])){_0x487ad4[_0xa590('0x4d')]=0x2;}this[_0xa590('0x44')][_0xa590('0x70')](this,_0x487ad4);return this[_0xa590('0xd')]['noop'](util['format'](_0xa590('0xc1'),_0x487ad4['phone'],_0x487ad4[_0xa590('0x4a')],_0x487ad4[_0xa590('0x4b')]));};AGIVertices[_0xa590('0x13')]['custom_app']=function(_0x431c80){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xc2'),_0x431c80['label']));var _0x41b2d1=this[_0xa590('0xd')]['exec'](_0x431c80['application'],_0x431c80[_0xa590('0x7a')]);if(_0x41b2d1[_0xa590('0xa1')]===-0x1){return _0x41b2d1;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xc3'),_0x431c80[_0xa590('0xc4')],_0x431c80[_0xa590('0x7a')]));};AGIVertices[_0xa590('0x13')][_0xa590('0xc5')]=function(_0x4cc46f){logger[_0xa590('0x2f')](util['format'](_0xa590('0xc6'),_0x4cc46f[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x4cc46f[_0xa590('0x5d')])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xa8'));}var _0x4e0960='\x22'+_0x4cc46f[_0xa590('0x5d')]+'\x22';if(this[_0xa590('0x86')](_0x4cc46f[_0xa590('0x7a')])){_0x4e0960+=','+_0x4cc46f[_0xa590('0x7a')];}var _0xa3480e=this[_0xa590('0xd')]['exec'](_0xa590('0xa9'),_0x4e0960);if(_0xa3480e[_0xa590('0xa1')]===-0x1){return _0xa3480e;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xaa'),_0x4e0960));};AGIVertices[_0xa590('0x13')][_0xa590('0xc7')]=function(_0x5b0122){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x5b0122[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x5b0122['text'])){return this['channel'][_0xa590('0xa7')](_0xa590('0xa8'));}var _0x5a17ec='\x22'+_0x5b0122[_0xa590('0x5d')]+'\x22';if(this[_0xa590('0x86')](_0x5b0122['options'])){_0x5a17ec+=','+_0x5b0122[_0xa590('0x7a')];}var _0x20c1c7=this[_0xa590('0xd')]['exec']('MRCPSynth',_0x5a17ec);if(_0x20c1c7[_0xa590('0xa1')]===-0x1){return _0x20c1c7;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xaa'),_0x5a17ec));};AGIVertices['prototype'][_0xa590('0xc8')]=function(_0xf13968){logger[_0xa590('0x2f')](util['format']('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0xf13968['label']));if(!this[_0xa590('0x86')](_0xf13968['grammar'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xc9'));}var _0x1befe3=_0xf13968['grammar'];if(this['isConfigured'](_0xf13968[_0xa590('0x7a')])){_0x1befe3+=','+_0xf13968[_0xa590('0x7a')];}var _0x401cd8=this['channel'][_0xa590('0x58')](_0xa590('0xae'),_0x1befe3);if(_0x401cd8[_0xa590('0xa1')]===-0x1){return _0x401cd8;}var _0x5941b0=this[_0xa590('0xa0')](_0xa590('0xaf'),_0xa590('0xca'));if(_0x5941b0[_0xa590('0xa1')]===-0x1){return _0x5941b0;}var _0x35e595=this[_0xa590('0xa0')]('RECOG_INPUT()',_0xa590('0xcb'));if(_0x35e595[_0xa590('0xa1')]===-0x1){return _0x35e595;}var _0x4b93df=this[_0xa590('0xa0')]('RECOG_INSTANCE()',_0xa590('0xcc'));if(_0x4b93df[_0xa590('0xa1')]===-0x1){return _0x4b93df;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xb4'),_0x1befe3));};AGIVertices[_0xa590('0x13')]['sestekasr']=function(_0x273e2f){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xcd'),_0x273e2f[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x273e2f[_0xa590('0xad')])){return this['channel'][_0xa590('0xa7')]('no\x20grammar\x20configured');}var _0x559aa6=_0x273e2f['grammar'];if(this[_0xa590('0x86')](_0x273e2f['options'])){_0x559aa6+=','+_0x273e2f[_0xa590('0x7a')];}var _0x151203=this[_0xa590('0xd')][_0xa590('0x58')](_0xa590('0xae'),_0x559aa6);if(_0x151203['result']===-0x1){return _0x151203;}var _0x4460f1=this[_0xa590('0xa0')](_0xa590('0xaf'),'SESTEK_ASR_CONFIDENCE');if(_0x4460f1['result']===-0x1){return _0x4460f1;}var _0x5ee9bd=this[_0xa590('0xa0')](_0xa590('0xb1'),_0xa590('0xce'));if(_0x5ee9bd[_0xa590('0xa1')]===-0x1){return _0x5ee9bd;}var _0x3258d3=this[_0xa590('0xa0')]('RECOG_INSTANCE()',_0xa590('0xcf'));if(_0x3258d3[_0xa590('0xa1')]===-0x1){return _0x3258d3;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xb4'),_0x559aa6));};AGIVertices[_0xa590('0x13')][_0xa590('0xd0')]=function(_0x2b1ab3){logger['info'](util[_0xa590('0x2a')](_0xa590('0xd1'),_0x2b1ab3[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x2b1ab3[_0xa590('0xd2')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x2b1ab3,'no\x20database\x20selected');}var _0xd8ae5f=this['getSquareOdbc'][_0xa590('0x70')](this,_0x2b1ab3['odbc_id']);if(!_0xd8ae5f){return this['channel'][_0xa590('0x2d')](_0x2b1ab3,_0xa590('0xd3'));}if(!this['isConfigured'](_0x2b1ab3[_0xa590('0x31')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x2b1ab3,'no\x20query\x20configured');}var _0xc6a2a4=_0x2b1ab3[_0xa590('0x31')][_0xa590('0x5a')](/(\r\n|\n|\r)/gm,'\x20');this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0xd4'),_0xc6a2a4));var _0x486be8=this[_0xa590('0xd5')][_0xa590('0x70')](this,_0xd8ae5f,_0xc6a2a4);this['createSquareDetailsReport']['sync'](this,_0x2b1ab3,_0xc6a2a4);if(!this[_0xa590('0x86')](_0x2b1ab3['variable_id'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xd6'));}var _0x153c7f=this[_0xa590('0x10')][_0xa590('0x70')](this,_0x2b1ab3[_0xa590('0xd7')]);if(!_0x153c7f){return this['channel'][_0xa590('0x2d')](_0x2b1ab3,_0xa590('0xd8'));}var _0x5aa016=this;_0x486be8[_0xa590('0xd9')](function(_0x1c80c5,_0x43fef9){Object[_0xa590('0xda')](_0x1c80c5)[_0xa590('0xd9')](function(_0x344785){_0x5aa016[_0xa590('0xd')][_0xa590('0x9c')](util['format'](_0xa590('0xdb'),_0x153c7f,_0x43fef9,_0x344785),_0x1c80c5[_0x344785]);});});this['channel'][_0xa590('0x9c')](util[_0xa590('0x2a')](_0xa590('0xdc'),_0x153c7f),_0x486be8[_0xa590('0x98')]);return this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')]('variable\x20%s\x20set',_0x153c7f));};AGIVertices[_0xa590('0x13')]['dial']=function(_0x22ca92){logger[_0xa590('0xdd')](util[_0xa590('0x2a')](_0xa590('0xde'),_0x22ca92[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x22ca92[_0xa590('0xdf')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x22ca92,'no\x20user\x20selected');}var _0x5e416a=this[_0xa590('0x1d')]['sync'](this,_0x22ca92[_0xa590('0xdf')]);if(!_0x5e416a){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x22ca92,_0xa590('0xe0'));}var _0x1bb136=this[_0xa590('0xd')][_0xa590('0x58')]('DIAL',[util[_0xa590('0x2a')](_0xa590('0xe1'),_0x5e416a),_0x22ca92[_0xa590('0xb9')],_0x22ca92['opts'],_0x22ca92['url']]);if(_0x1bb136['result']===-0x1){return _0x1bb136;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0xa590('0x13')][_0xa590('0xe2')]=function(_0x7c96c8){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xe3'),_0x7c96c8['label']));if(!this[_0xa590('0x86')](_0x7c96c8[_0xa590('0x85')])){return this[_0xa590('0xd')][_0xa590('0xa7')]('no\x20key\x20configured');}if(!this[_0xa590('0x86')](_0x7c96c8['text'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xa8'));}this[_0xa590('0xd')][_0xa590('0xe4')]=!![];this[_0xa590('0x38')](_0x7c96c8);this['createSquareMessage'](_0x7c96c8['text'],'in','','');this[_0xa590('0xd')]['noop'](util['format']('Trying\x20Dialogflow:\x20%s',_0x7c96c8[_0xa590('0x5d')]));var _0xecf21a=this['googleDialogflow'][_0xa590('0x70')](this,_0x7c96c8);if(_0xecf21a){for(var _0x214c43 in _0xecf21a){if(_0xecf21a['hasOwnProperty'](_0x214c43)){this[_0xa590('0xd')][_0xa590('0x9c')](util['format'](_0xa590('0xe5'),_0x214c43['toUpperCase']()),_0xecf21a[_0x214c43]);}}this[_0xa590('0x43')](_0xecf21a[_0xa590('0xe6')],_0xa590('0xe7'),'dialogflow','');return this[_0xa590('0xd')][_0xa590('0xa7')](util['format']('Dialogflow\x20Result\x20%s',_0xecf21a[_0xa590('0xe6')]));}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x7c96c8,_0xa590('0xe8'));};AGIVertices['prototype'][_0xa590('0xe9')]=function(_0x4fa404){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x4fa404['label']));if(!this[_0xa590('0x86')](_0x4fa404[_0xa590('0x7e')])){return this['channel'][_0xa590('0xa7')](_0xa590('0xea'));}if(!this['isConfigured'](_0x4fa404['client_email'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xeb'));}if(!this[_0xa590('0x86')](_0x4fa404[_0xa590('0x7f')])){return this[_0xa590('0xd')]['noop'](_0xa590('0xec'));}if(!this[_0xa590('0x86')](_0x4fa404['dialogflowV2_language'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xed'));}if(!this[_0xa590('0x86')](_0x4fa404['text'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xa8'));}this['channel'][_0xa590('0xe4')]=!![];this[_0xa590('0x38')](_0x4fa404);this[_0xa590('0x43')](_0x4fa404[_0xa590('0x5d')],'in','','');this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0xee'),_0x4fa404[_0xa590('0x5d')]));var _0x51159c=this[_0xa590('0x7d')][_0xa590('0x70')](this,_0x4fa404);if(_0x51159c){for(var _0x25d5d7 in _0x51159c){if(_0x51159c[_0xa590('0x96')](_0x25d5d7)){if(_0x25d5d7!=='providerResponse'){this['channel']['setVariable'](util[_0xa590('0x2a')]('DIALOGFLOW_%s',_0x25d5d7['toUpperCase']()),_0x51159c[_0x25d5d7]);}}}this[_0xa590('0x43')](_0x51159c[_0xa590('0xe6')],_0xa590('0xe7'),_0xa590('0xe9'),_0x51159c[_0xa590('0xef')]);return this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')]('DialogflowV2\x20Result\x20%s',_0x51159c['speech']));}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x4fa404,_0xa590('0xf0'));};AGIVertices[_0xa590('0x13')][_0xa590('0xf1')]=function(_0x3df841){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0xf2'),_0x3df841['label']));if(!this['isConfigured'](_0x3df841[_0xa590('0xf3')])){return this['channel']['noop'](_0xa590('0xf4'));}if(!this['isConfigured'](_0x3df841[_0xa590('0xf5')])){return this['channel'][_0xa590('0xa7')](_0xa590('0xf6'));}if(!this[_0xa590('0x86')](_0x3df841['password'])){return this['channel'][_0xa590('0xa7')](_0xa590('0xf7'));}if(!this[_0xa590('0x86')](_0x3df841[_0xa590('0xf8')])){return this[_0xa590('0xd')]['noop']('no\x20text\x20configured');}this['channel'][_0xa590('0xe4')]=!![];this[_0xa590('0x38')](_0x3df841);this['createSquareMessage'](_0x3df841['text'],'in','','');this['channel']['noop'](util[_0xa590('0x2a')](_0xa590('0xf9'),_0x3df841['text']));var _0xd528a3=this['sestekNDA']['sync'](this,_0x3df841);if(_0xd528a3){for(var _0x17d771 in _0xd528a3){if(_0xd528a3['hasOwnProperty'](_0x17d771)){this['channel'][_0xa590('0x9c')](util[_0xa590('0x2a')](_0xa590('0xfa'),_0x17d771[_0xa590('0x6a')]()),_0xd528a3[_0x17d771]);}}this[_0xa590('0x43')](_0xd528a3['speech'],_0xa590('0xe7'),'sesteknda','');if(_0xd528a3['audiofile']){this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xfb'),_0xd528a3['audiofile']));var _0x244335=this['channel'][_0xa590('0xfc')](_0xd528a3[_0xa590('0xfd')]);try{fs[_0xa590('0xfe')](_0xd528a3[_0xa590('0xfd')]+_0xa590('0xff'));}catch(_0x305a39){logger[_0xa590('0x2d')](_0x305a39);}return _0x244335;}else{return this[_0xa590('0xd')][_0xa590('0xa7')](util['format']('SestekNDA\x20Result\x20%s',_0xd528a3[_0xa590('0xe6')]));}}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x3df841,_0xa590('0x100'));};AGIVertices[_0xa590('0x13')]['end']=function(_0x9260cd){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20END\x20(%s)\x20block',_0x9260cd[_0xa590('0xa6')]));return this['channel'][_0xa590('0xa7')](_0xa590('0x101'));};AGIVertices[_0xa590('0x13')][_0xa590('0x102')]=function(_0x83e4c2){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x103'),_0x83e4c2['label']));var _0x329a88='';if(_0x83e4c2[_0xa590('0x104')]){if(!this[_0xa590('0x86')](_0x83e4c2['trunk_id'])){return this['channel']['error'](_0x83e4c2,_0xa590('0x105'));}else{var _0x2a64c8=parseInt(_0x83e4c2['trunk_id'],0xa);if(isNaN(_0x2a64c8)){_0x329a88=_0x83e4c2['trunk_id'];}else{_0x329a88=this[_0xa590('0x1f')][_0xa590('0x70')](this,_0x83e4c2['trunk_id']);if(!_0x329a88){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x83e4c2,_0xa590('0x106'));}}}}else if(_0x83e4c2[_0xa590('0x107')]){_0x329a88=_0x83e4c2['trunk_name'];}else{return this[_0xa590('0xd')][_0xa590('0x2d')](_0x83e4c2,_0xa590('0x105'));}var _0x53bb58=this[_0xa590('0xd')][_0xa590('0x58')](_0xa590('0x108'),[util[_0xa590('0x2a')](_0xa590('0x109'),_0x329a88,_0x83e4c2[_0xa590('0x49')]),_0x83e4c2['timeout'],_0x83e4c2[_0xa590('0x10a')],_0x83e4c2[_0xa590('0x65')]]);if(_0x53bb58[_0xa590('0xa1')]===-0x1){return _0x53bb58;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')]('Executed\x20command\x20%s',_0xa590('0x108')));};AGIVertices[_0xa590('0x13')]['finally']=function(_0x1c4dda){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x10b'),_0x1c4dda['label']));return this[_0xa590('0xd')]['noop']('finally');};AGIVertices[_0xa590('0x13')][_0xa590('0xc')]=function(_0x44170d){logger['info'](util[_0xa590('0x2a')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x44170d['label']));if(_0x44170d[_0xa590('0xa4')]===0x0){return this['maxRetry'](_0x44170d);}_0x44170d['retry']-=0x1;if(!this[_0xa590('0x86')](_0x44170d['file_id'])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x44170d,_0xa590('0x10c'));}var _0x5238fc=this[_0xa590('0x20')][_0xa590('0x70')](this,_0x44170d[_0xa590('0x10d')]);if(!_0x5238fc){return this[_0xa590('0xd')]['error'](_0x44170d,_0xa590('0x10e'));}if(!this[_0xa590('0x86')](_0x44170d[_0xa590('0xd7')])){return this[_0xa590('0xd')]['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x525904=this[_0xa590('0xd')][_0xa590('0x10f')](_0x5238fc,_0x44170d[_0xa590('0x110')],_0x44170d[_0xa590('0x111')]);var _0x2be620=_0x525904['result']?_0x525904['result'][_0xa590('0x4c')]():'';logger['info']('test',JSON[_0xa590('0x72')](_0x525904));if(_0x525904[_0xa590('0xa1')]===-0x1){this[_0xa590('0x38')][_0xa590('0x70')](this,_0x44170d,_0x2be620);return _0x525904;}else if(_0x525904[_0xa590('0xa3')]===_0xa590('0xb9')){_0x525904[_0xa590('0xa1')]=_0x2be620[_0xa590('0x98')]>=parseInt(_0x44170d[_0xa590('0x112')])?'x':'i';}else{_0x525904[_0xa590('0xa1')]=_0x2be620[_0xa590('0x98')]>=parseInt(_0x44170d['mindigit'])&&_0x2be620[_0xa590('0x98')]<=parseInt(_0x44170d[_0xa590('0x111')])?'x':'i';}var _0x52adb2=this['getVariable'][_0xa590('0x70')](this,_0x44170d[_0xa590('0xd7')]);if(!_0x52adb2){return this[_0xa590('0xd')]['error'](_0x44170d,'no\x20variable\x20found');}this[_0xa590('0xd')][_0xa590('0x9c')](_0x52adb2,_0x2be620);if(this[_0xa590('0x86')](_0x44170d[_0xa590('0x113')])){var _0x5feaf5=parseInt(_0x44170d[_0xa590('0x113')],0xa);var _0x2abcab=rs[_0xa590('0x114')]({'charset':'*','length':_0x5feaf5});var _0x4ab249=_0x2be620[_0xa590('0x98')];if(_0x4ab249>0x0){if(_0x4ab249>_0x5feaf5){this[_0xa590('0x38')][_0xa590('0x70')](this,_0x44170d,_0x44170d[_0xa590('0x115')]===_0xa590('0x116')?_0x2abcab+_0x2be620['substr'](_0x5feaf5):_0x2be620[_0xa590('0x117')](0x0,_0x4ab249-_0x5feaf5)+_0x2abcab);}else{this[_0xa590('0x38')][_0xa590('0x70')](this,_0x44170d,rs[_0xa590('0x114')]({'charset':'*','length':_0x4ab249}));}}else{this[_0xa590('0x38')][_0xa590('0x70')](this,_0x44170d,'');}}else{this[_0xa590('0x38')][_0xa590('0x70')](this,_0x44170d,_0x2be620);}return _0x525904;};AGIVertices[_0xa590('0x13')][_0xa590('0x118')]=function(_0x1a98c3){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x119'),_0x1a98c3[_0xa590('0xa6')]));return this[_0xa590('0xc')](_0x1a98c3);};AGIVertices[_0xa590('0x13')][_0xa590('0x11a')]=function(_0x4a8303){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x11b'),_0x4a8303['label']));this[_0xa590('0x38')]['sync'](this,_0x4a8303,_0x4a8303[_0xa590('0x11c')]);return this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0x11d'),_0x4a8303[_0xa590('0x11c')]));};AGIVertices[_0xa590('0x13')]['awspolly']=function(_0x5938d0){logger['info'](util[_0xa590('0x2a')](_0xa590('0x11e'),_0x5938d0[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x5938d0[_0xa590('0x89')])||!this[_0xa590('0x86')](_0x5938d0['aws_secret_access_key'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x11f'));}if(!this[_0xa590('0x86')](_0x5938d0[_0xa590('0x5d')])){return this[_0xa590('0xd')]['noop'](_0xa590('0xa8'));}this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x120'),_0x5938d0[_0xa590('0x5d')]));var _0x56df3c=this[_0xa590('0x88')]['sync'](this,_0x5938d0);if(_0x56df3c){this[_0xa590('0xd')]['noop'](util['format'](_0xa590('0x121'),_0x56df3c));var _0x2e2b8d=this['channel']['streamFile'](_0x56df3c);try{fs['unlink'](_0x56df3c+'.wav');}catch(_0x3cb3b5){logger[_0xa590('0x2d')](_0x3cb3b5);}return _0x2e2b8d;}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x5938d0,_0xa590('0x122'));};AGIVertices[_0xa590('0x13')][_0xa590('0x123')]=function(_0x1901aa){logger[_0xa590('0x2f')](util['format'](_0xa590('0x124'),_0x1901aa[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x1901aa['aws_access_key_id'])||!this[_0xa590('0x86')](_0x1901aa[_0xa590('0x8a')])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x11f'));}if(!this[_0xa590('0x86')](_0x1901aa[_0xa590('0x125')])){return this[_0xa590('0xd')]['noop'](_0xa590('0x126'));}if(!this[_0xa590('0x86')](_0x1901aa[_0xa590('0x5d')])){return this['channel']['noop'](_0xa590('0xa8'));}this['channel'][_0xa590('0xe4')]=!![];this[_0xa590('0x38')](_0x1901aa);this['createSquareMessage'](_0x1901aa[_0xa590('0x5d')],'in','','');this['channel'][_0xa590('0xa7')](util['format'](_0xa590('0x127'),_0x1901aa[_0xa590('0x5d')]));var _0x52cfc4=this[_0xa590('0x8e')][_0xa590('0x70')](this,_0x1901aa);if(_0x52cfc4){for(var _0x50a0ff in _0x52cfc4){if(_0x52cfc4[_0xa590('0x96')](_0x50a0ff)&&_[_0xa590('0x9a')](_0x52cfc4[_0x50a0ff])){this[_0xa590('0xd')][_0xa590('0x9c')](util[_0xa590('0x2a')]('AWS_LEX_%s',_0x50a0ff[_0xa590('0x6a')]()),_0x52cfc4[_0x50a0ff]);}}if(_[_0xa590('0x46')](_0x52cfc4['message'])){return this['channel'][_0xa590('0xa7')](_0xa590('0x128'));}else{this['createSquareMessage'](_0x52cfc4[_0xa590('0x78')],_0xa590('0xe7'),_0xa590('0x129'),'');return this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')]('Amazon\x20Lex\x20Result\x20%s',_0x52cfc4[_0xa590('0x78')]));}}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x1901aa,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0xa590('0x13')][_0xa590('0x12a')]=function(_0x311167){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x12b'),_0x311167[_0xa590('0xa6')],_0x311167[_0xa590('0xb9')]));if(!this['isConfigured'](_0x311167['key'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x12c'));}var _0x75a626=_0xa590('0x12d');var _0x59fbe4=util[_0xa590('0x2a')](_0xa590('0x12e'),FILES_PATH,rs['generate'](0x4));var _0x293365=util[_0xa590('0x2a')](_0xa590('0x9d'),_0x59fbe4,_0x75a626);var _0x208a62=!![];if(_0x311167['beep']==='NOBEEP'){_0x208a62=![];}var _0x11d026=this[_0xa590('0xd')]['recordFile'](_0x59fbe4,_0x75a626,_0x311167[_0xa590('0x12f')],_0x311167[_0xa590('0xb9')],undefined,_0x208a62);if(_0x11d026[_0xa590('0xa1')]!==-0x1){this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x130'),_0x293365));var _0x12cbb6=this[_0xa590('0x8f')][_0xa590('0x70')](this,_0x311167,_0x293365);if(_0x12cbb6){for(var _0xcbd404 in _0x12cbb6){if(_0x12cbb6[_0xa590('0x96')](_0xcbd404)){this[_0xa590('0xd')][_0xa590('0x9c')](util[_0xa590('0x2a')](_0xa590('0x131'),_0xcbd404[_0xa590('0x6a')]()),_0x12cbb6[_0xcbd404]);}}return this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')]('GoogleASR\x20Result\x20%s',JSON[_0xa590('0x72')](_0x12cbb6)));}}return _0x11d026;};AGIVertices[_0xa590('0x13')][_0xa590('0x132')]=function(_0x4a26a9){logger[_0xa590('0x2f')](util['format']('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x4a26a9['label']));if(!this[_0xa590('0x86')](_0x4a26a9['appid'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x133'));}if(!this[_0xa590('0x86')](_0x4a26a9['appsecret'])){return this[_0xa590('0xd')]['noop'](_0xa590('0x134'));}var _0x2d3ea2='wav';var _0x2cbca1=util[_0xa590('0x2a')](_0xa590('0x12e'),FILES_PATH,rs[_0xa590('0x114')](0x4));var _0x330175=util[_0xa590('0x2a')](_0xa590('0x9d'),_0x2cbca1,_0x2d3ea2);var _0x1bfc28=!![];if(_0x4a26a9[_0xa590('0x135')]===_0xa590('0x136')){_0x1bfc28=![];}var _0x37b85b=this[_0xa590('0xd')][_0xa590('0x137')](_0x2cbca1,_0x2d3ea2,_0x4a26a9['intKey'],_0x4a26a9['timeout'],undefined,_0x1bfc28);if(_0x37b85b[_0xa590('0xa1')]!==-0x1){this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0x138'),_0x330175));var _0x3b1e9d=this[_0xa590('0x90')][_0xa590('0x70')](this,_0x4a26a9,_0x330175);if(_0x3b1e9d){for(var _0x4a1ef3 in _0x3b1e9d){if(_0x3b1e9d[_0xa590('0x96')](_0x4a1ef3)){this['channel']['setVariable'](util[_0xa590('0x2a')](_0xa590('0x139'),_0x4a1ef3[_0xa590('0x6a')]()),_0x3b1e9d[_0x4a1ef3]);}}return this[_0xa590('0xd')]['noop'](util['format'](_0xa590('0x13a'),JSON[_0xa590('0x72')](_0x3b1e9d)));}}return _0x37b85b;};AGIVertices['prototype'][_0xa590('0x13b')]=function(_0x20ae11){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x20ae11[_0xa590('0xa6')]));return this[_0xa590('0xd')][_0xa590('0x13c')](_0x20ae11[_0xa590('0x3e')],_0x20ae11[_0xa590('0x3f')],_0x20ae11['priority']);};AGIVertices[_0xa590('0x13')][_0xa590('0x13d')]=function(_0x299a9){logger['info'](util[_0xa590('0x2a')](_0xa590('0x13e'),_0x299a9[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x299a9[_0xa590('0x13f')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x299a9,_0xa590('0x140'));}try{var _0x157701=eval(_0x299a9['condition'])?'true':_0xa590('0x141');this[_0xa590('0xd')][_0xa590('0xa7')](util['format'](_0xa590('0x142'),_0x299a9[_0xa590('0x13f')],_0x157701));return{'code':0xc8,'result':_0x157701};}catch(_0x28f91b){return{'code':0xc8,'result':'false'};}};AGIVertices[_0xa590('0x13')]['gotoiftime']=function(_0x253830){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x253830[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x253830[_0xa590('0x143')])){return this['channel'][_0xa590('0x2d')](_0x253830,'no\x20interval\x20configured');}var _0x374532=this['getIntervals'][_0xa590('0x70')](this,_0x253830[_0xa590('0x143')]);if(!_0x374532){return this[_0xa590('0xd')]['error'](_0x253830,_0xa590('0x144'));}for(var _0x2436b1=0x0;_0x2436b1<_0x374532[_0xa590('0x98')];_0x2436b1+=0x1){var _0x5dce29=this[_0xa590('0xd')][_0xa590('0x10')](util[_0xa590('0x2a')](_0xa590('0x145'),_0x374532[_0x2436b1]));if(_0x5dce29['result']===-0x1){return _0x5dce29;}logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('IFTIME\x20%s\x20%s',_0x374532[_0x2436b1],_0x5dce29['extra']));if(_0x5dce29['extra']===_0xa590('0x146')){logger['info'](util[_0xa590('0x2a')](_0xa590('0x147'),_0x374532[_0x2436b1],_0xa590('0x146')));this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x147'),_0x374532[_0x2436b1],'true'));return{'code':0xc8,'result':'true'};}else{logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x147'),_0x374532[_0x2436b1],_0xa590('0x141')));this['channel']['noop'](util[_0xa590('0x2a')]('IFTIME\x20%s\x20%s',_0x374532[_0x2436b1],_0xa590('0x141')));}}return{'code':0xc8,'result':_0xa590('0x141')};};AGIVertices[_0xa590('0x13')][_0xa590('0x148')]=function(_0x30a5dc){logger['info'](util[_0xa590('0x2a')](_0xa590('0x149'),_0x30a5dc[_0xa590('0xa6')]));return this[_0xa590('0xd')][_0xa590('0x148')]();};AGIVertices['prototype'][_0xa590('0x14a')]=function(_0x366b6e){logger['info'](util[_0xa590('0x2a')](_0xa590('0x14b'),_0x366b6e[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x366b6e['key'])){return this[_0xa590('0xd')]['noop'](_0xa590('0x12c'));}var _0x3de8d4=_0xa590('0x12d');var _0x3077a8=util[_0xa590('0x2a')](_0xa590('0x12e'),FILES_PATH,rs['generate'](0x4));var _0x274dca=util[_0xa590('0x2a')]('%s.%s',_0x3077a8,_0x3de8d4);var _0x52fc1c=!![];if(_0x366b6e[_0xa590('0x135')]===_0xa590('0x136')){_0x52fc1c=![];}var _0x584102=this['channel'][_0xa590('0x137')](_0x3077a8,_0x3de8d4,_0x366b6e[_0xa590('0x12f')],_0x366b6e[_0xa590('0xb9')],undefined,_0x52fc1c);if(_0x584102[_0xa590('0xa1')]!==-0x1){this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x14c'),_0x274dca));var _0x199c79=this[_0xa590('0x84')]['sync'](this,_0x366b6e,_0x274dca);if(_0x199c79){for(var _0x166027 in _0x199c79){if(_0x199c79[_0xa590('0x96')](_0x166027)){this[_0xa590('0xd')]['setVariable'](util[_0xa590('0x2a')](_0xa590('0x14d'),_0x166027[_0xa590('0x6a')]()),_0x199c79[_0x166027]);}}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x14e'),JSON[_0xa590('0x72')](_0x199c79)));}}return _0x584102;};AGIVertices['prototype'][_0xa590('0x14f')]=function(_0x2ddfaf){logger[_0xa590('0x2f')](util['format'](_0xa590('0x150'),_0x2ddfaf['label']));if(!this['isConfigured'](_0x2ddfaf[_0xa590('0x85')])){return this['channel'][_0xa590('0xa7')](_0xa590('0x12c'));}if(!this[_0xa590('0x86')](_0x2ddfaf[_0xa590('0x5d')])){return this[_0xa590('0xd')][_0xa590('0xa7')]('no\x20text\x20configured');}this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')]('Trying\x20ispeech\x20TTS\x20%s',_0x2ddfaf['text']));var _0x81cd9b=this['ispeechTTS'][_0xa590('0x70')](this,_0x2ddfaf);if(_0x81cd9b){this['channel']['noop'](util['format']('ispeech\x20%s\x20file\x20created',_0x81cd9b));var _0x586754=this[_0xa590('0xd')][_0xa590('0xfc')](_0x81cd9b,_0x2ddfaf[_0xa590('0x12f')]);try{fs['unlink'](_0x81cd9b+_0xa590('0xff'));}catch(_0x3a56a4){logger[_0xa590('0x2d')](_0x3a56a4);}return _0x586754;}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x2ddfaf,_0xa590('0x151'));};AGIVertices[_0xa590('0x13')][_0xa590('0x152')]=function(_0x38c20b){logger['info'](util['format']('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x38c20b[_0xa590('0xa6')]));if(!this['isConfigured'](_0x38c20b[_0xa590('0x153')])){return this['channel'][_0xa590('0x2d')](_0x38c20b,_0xa590('0x154'));}logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x155'),this[_0xa590('0xd')][_0xa590('0x52')],_0x38c20b['findBy']));var _0x5254c5=this[_0xa590('0x54')][_0xa590('0x70')](this,_0x38c20b[_0xa590('0x153')]);if(_0x5254c5){logger[_0xa590('0x2f')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xa590('0xd')][_0xa590('0x52')],_0x38c20b['findBy']));this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')]['callerid'],_0x38c20b[_0xa590('0x153')]));return{'code':0xc8,'result':_0xa590('0x157')};}else{logger[_0xa590('0x2f')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xa590('0xd')]['callerid'],_0x38c20b[_0xa590('0x153')]));this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xa590('0x52')],_0x38c20b[_0xa590('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xa590('0x13')]['logout']=function(_0x4803d7){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x158'),_0x4803d7['label']));if(!this[_0xa590('0x86')](_0x4803d7[_0xa590('0x153')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x4803d7,_0xa590('0x154'));}logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xa590('0x52')],_0x4803d7[_0xa590('0x153')]));var _0x4f03ef=this[_0xa590('0x53')][_0xa590('0x70')](this,_0x4803d7['findBy']);if(_0x4f03ef){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')][_0xa590('0x52')],_0x4803d7[_0xa590('0x153')]));this['channel']['noop'](util['format'](_0xa590('0x156'),this['channel']['callerid'],_0x4803d7['findBy']));return{'code':0xc8,'result':_0xa590('0x157')};}else{logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x159'),this[_0xa590('0xd')]['callerid'],_0x4803d7[_0xa590('0x153')]));this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x159'),this['channel'][_0xa590('0x52')],_0x4803d7[_0xa590('0x153')]));return{'code':0xc8,'result':_0xa590('0x15a')};}};AGIVertices[_0xa590('0x13')][_0xa590('0x15b')]=function(_0x4bc1cc){logger['info'](util[_0xa590('0x2a')](_0xa590('0x15c'),_0x4bc1cc[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x4bc1cc[_0xa590('0x15d')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x4bc1cc,'no\x20operation\x20configured');}this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x15e'),_0x4bc1cc['operation']));var _0x284d2a=eval(_0x4bc1cc[_0xa590('0x15d')]);if(!this[_0xa590('0x86')](_0x4bc1cc['variable_id'])){return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xd6'));}var _0x2b6c81=this[_0xa590('0x10')][_0xa590('0x70')](this,_0x4bc1cc[_0xa590('0xd7')]);if(!_0x2b6c81){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x4bc1cc,'no\x20variable\x20found');}if(_[_0xa590('0x97')](_0x284d2a)){var _0x13b3ee=this;_0x284d2a[_0xa590('0xd9')](function(_0x4b60e7,_0x181992){_0x13b3ee[_0xa590('0xd')][_0xa590('0x9c')](util[_0xa590('0x2a')](_0xa590('0x15f'),_0x2b6c81,_0x181992),_0x4b60e7);});return this[_0xa590('0xd')][_0xa590('0xa7')](util['format'](_0xa590('0x160'),_0x2b6c81));}else{return this[_0xa590('0xd')][_0xa590('0x9c')](_0x2b6c81,_0x284d2a);}};AGIVertices[_0xa590('0x13')]['menu']=function(_0x50783f){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x161'),_0x50783f['label']));if(_0x50783f['retry']===0x0){return this[_0xa590('0x162')](_0x50783f);}_0x50783f[_0xa590('0xa4')]-=0x1;if(!this[_0xa590('0x86')](_0x50783f[_0xa590('0x10d')])){return this[_0xa590('0xd')]['error'](_0x50783f,_0xa590('0x10c'));}var _0x2b4070=this[_0xa590('0x20')][_0xa590('0x70')](this,_0x50783f[_0xa590('0x10d')]);if(!_0x2b4070){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x50783f,_0xa590('0x10e'));}var _0x5dd4b7=this[_0xa590('0xd')][_0xa590('0x10f')](_0x2b4070,_0x50783f['response'],_0x50783f[_0xa590('0x163')]);var _0x4c206a=_0x5dd4b7[_0xa590('0xa1')];if(_0x5dd4b7[_0xa590('0xa1')]===-0x1){this[_0xa590('0x38')][_0xa590('0x70')](this,_0x50783f,'-1');return _0x5dd4b7;}else if(_0x5dd4b7['extra']==='timeout'){_0x5dd4b7[_0xa590('0xa1')]=_0x5dd4b7['result']['length']>0x0?_0x5dd4b7[_0xa590('0xa1')]:'t';}else if(_[_0xa590('0x45')](_0x5dd4b7['result'])){_0x5dd4b7[_0xa590('0xa1')]='#';_0x4c206a='#';}if(!this[_0xa590('0x86')](_0x50783f[_0xa590('0xd7')])){this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0xd6'));}else{var _0x27198a=this[_0xa590('0x10')][_0xa590('0x70')](this,_0x50783f[_0xa590('0xd7')]);if(!_0x27198a){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x50783f,_0xa590('0xd8'));}this[_0xa590('0xd')][_0xa590('0x9c')](_0x27198a,_0x4c206a);}this['createSquareDetailsReport'][_0xa590('0x70')](this,_0x50783f,_0x4c206a);return _0x5dd4b7;};AGIVertices[_0xa590('0x13')][_0xa590('0xa7')]=function(_0x48774d){logger['info'](util[_0xa590('0x2a')](_0xa590('0x164'),_0x48774d['label']));return this['channel'][_0xa590('0xa7')](_0x48774d[_0xa590('0x165')]||_0x48774d[_0xa590('0xa6')]);};AGIVertices[_0xa590('0x13')][_0xa590('0x166')]=function(_0x3f393f){logger['info'](util[_0xa590('0x2a')](_0xa590('0x167'),_0x3f393f['label']));if(!this['isConfigured'](_0x3f393f[_0xa590('0x153')])){return this[_0xa590('0xd')]['error'](_0x3f393f,'no\x20find\x20by\x20configured');}logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xa590('0xd')][_0xa590('0x52')],_0x3f393f['findBy']));var _0x28b95a=this[_0xa590('0x4e')][_0xa590('0x70')](this,_0x3f393f[_0xa590('0x168')]);var _0x3e7012=this[_0xa590('0x50')][_0xa590('0x70')](this,_0x3f393f[_0xa590('0x153')],_0x28b95a);if(_0x3e7012){logger['info'](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')][_0xa590('0x52')],_0x3f393f['findBy']));this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')][_0xa590('0x52')],_0x3f393f[_0xa590('0x153')]));return{'code':0xc8,'result':_0xa590('0x157')};}else{logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x159'),this[_0xa590('0xd')][_0xa590('0x52')],_0x3f393f[_0xa590('0x153')]));this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')][_0xa590('0x52')],_0x3f393f[_0xa590('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0xa590('0x169')]=function(_0xff35e5){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0xff35e5[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0xff35e5[_0xa590('0x10d')])){return this[_0xa590('0xd')]['error'](_0xff35e5,_0xa590('0x10c'));}var _0x234086=this[_0xa590('0x20')][_0xa590('0x70')](this,_0xff35e5[_0xa590('0x10d')]);if(!_0x234086){return this[_0xa590('0xd')]['error'](_0xff35e5,'no\x20file\x20audio\x20found');}var _0x1df721=this[_0xa590('0xd')][_0xa590('0x58')](_0xa590('0x16a'),[_0x234086,_0xff35e5[_0xa590('0x10a')]]);if(_0x1df721[_0xa590('0xa1')]===-0x1){return _0x1df721;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0xc3'),_0xa590('0x16a'),_0x234086));};AGIVertices[_0xa590('0x13')][_0xa590('0x16b')]=function(_0x3503f7){logger['info'](util[_0xa590('0x2a')](_0xa590('0x16c'),_0x3503f7['label']));if(!this['isConfigured'](_0x3503f7['queue_id'])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x3503f7,_0xa590('0x16d'));}var _0x325271='';var _0xa3b10e=parseInt(_0x3503f7[_0xa590('0x16e')],0xa);if(isNaN(_0xa3b10e)){_0x325271=_0x3503f7[_0xa590('0x16e')];}else{_0x325271=this[_0xa590('0x14')][_0xa590('0x70')](this,_0x3503f7['queue_id']);if(!_0x325271){return this['channel']['error'](_0x3503f7,'no\x20queue\x20found');}}var _0x52b77b='';if(this['isConfigured'](_0x3503f7[_0xa590('0x10d')])){var _0x16bc52=this[_0xa590('0x20')][_0xa590('0x70')](this,_0x3503f7['file_id']);if(_0x16bc52){_0x52b77b=_0x16bc52;}}this['createSquareDetailsReport'][_0xa590('0x70')](this,_0x3503f7,_0x325271);if(_0x3503f7[_0xa590('0x10a')][_0xa590('0x16f')]('x')<0x0){_0x3503f7[_0xa590('0x10a')]+='x';}if(_0x3503f7[_0xa590('0x10a')]['indexOf']('X')<0x0){_0x3503f7[_0xa590('0x10a')]+='X';}this[_0xa590('0xd')][_0xa590('0x9c')]('XMCS-QUEUE',_0x325271?_0x325271[_0xa590('0x170')]():'');var _0x663a76=this[_0xa590('0xd')]['exec'](_0xa590('0x171'),[_0x325271,_0x3503f7[_0xa590('0x10a')],_0x3503f7[_0xa590('0x65')],_0x52b77b,_0x3503f7[_0xa590('0xb9')],_0x3503f7[_0xa590('0x6')],_0x3503f7[_0xa590('0x172')],_0x3503f7[_0xa590('0x173')],'',_0x3503f7['position']]);if(_0x663a76[_0xa590('0xa1')]===-0x1){return _0x663a76;}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')]('Executed\x20command\x20%s\x20%s','QUEUE',_0x325271));};AGIVertices['prototype'][_0xa590('0x174')]=function(_0x42d532){logger['info'](util[_0xa590('0x2a')](_0xa590('0x175'),_0x42d532[_0xa590('0xa6')]));var _0x13bbfc=_0x42d532['recordingFormat']||_0xa590('0x12d');var _0x445fac=util['format'](_0xa590('0x176'),this[_0xa590('0xd')][_0xa590('0x3c')],rs[_0xa590('0x114')](0x5));var _0x4b03c2=util['format'](_0xa590('0x177'),FILES_PATH,_0x445fac,_0x13bbfc);var _0x19116f=util[_0xa590('0x2a')](_0xa590('0x12e'),FILES_PATH,_0x445fac);this[_0xa590('0x3b')][_0xa590('0x70')](this,_0x42d532,_0x445fac,_0x4b03c2);this['channel'][_0xa590('0x9c')](_0xa590('0x178'),_0x445fac);logger[_0xa590('0x2f')](_0xa590('0x179'),_0x19116f,_0x13bbfc,_0x42d532['escape_digits'],_0x42d532['timeout']);return this[_0xa590('0xd')][_0xa590('0x137')](_0x19116f,_0x13bbfc,_0x42d532[_0xa590('0x17a')],_0x42d532['timeout'],undefined,!![]);};AGIVertices[_0xa590('0x13')]['restapi']=function(_0x13b565){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x17b'),_0x13b565[_0xa590('0xa6')]));if(!this['isConfigured'](_0x13b565[_0xa590('0x65')])){return this[_0xa590('0xd')][_0xa590('0xa7')]('no\x20url\x20configured');}var _0x1e2f61=this['restAPI'][_0xa590('0x70')](this,_0x13b565);logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x17c'),util[_0xa590('0x17d')](_0x1e2f61,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x13b565[_0xa590('0xd7')])){return this['channel'][_0xa590('0xa7')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x1bd806=this[_0xa590('0x10')][_0xa590('0x70')](this,_0x13b565[_0xa590('0xd7')]);if(!_0x1bd806){return this[_0xa590('0xd')]['error'](_0x13b565,'no\x20variable\x20found');}this[_0xa590('0xd')][_0xa590('0x9c')](util[_0xa590('0x2a')](_0xa590('0x17e'),_0x1bd806),_0x1e2f61[_0xa590('0x76')]?_0x1e2f61['statusCode']:'200');this['channel'][_0xa590('0x9c')](util[_0xa590('0x2a')]('%s_STATUS_MESSAGE',_0x1bd806),_0x1e2f61['statusMessage']?_0x1e2f61['statusMessage']:'OK');if(_0x1e2f61['body']){try{this['saveRestApiResult'](_0x1e2f61['body'],_0x1bd806);}catch(_0x91eb06){logger[_0xa590('0x2d')](util['format'](_0xa590('0x17f'),_0x1bd806));}}return this['channel'][_0xa590('0xa7')](util['format']('variable\x20%s\x20set',_0x1bd806));};AGIVertices[_0xa590('0x13')]['saydigits']=function(_0x528dc0){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x180'),_0x528dc0[_0xa590('0xa6')]));return this['channel'][_0xa590('0x181')](_0x528dc0[_0xa590('0x182')][_0xa590('0x5a')](/\s+/g,''),_0x528dc0['escape_digits']);};AGIVertices[_0xa590('0x13')][_0xa590('0x183')]=function(_0x147d9e){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x184'),_0x147d9e[_0xa590('0xa6')]));return this['channel'][_0xa590('0x185')](_0x147d9e[_0xa590('0x186')][_0xa590('0x5a')](/\s+/g,''),_0x147d9e[_0xa590('0x17a')]);};AGIVertices[_0xa590('0x13')][_0xa590('0x187')]=function(_0x797d31){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x188'),_0x797d31['label']));return this[_0xa590('0xd')]['sayPhonetic'](_0x797d31['text'],_0x797d31[_0xa590('0x17a')]);};AGIVertices[_0xa590('0x13')]['sendMail']=function(_0x53b14a){logger['info'](util[_0xa590('0x2a')](_0xa590('0x189'),_0x53b14a['label']));if(!this[_0xa590('0x86')](_0x53b14a['account_id'])){return this['channel'][_0xa590('0xa7')](_0xa590('0x18a'));}var _0xb4b2f4=this[_0xa590('0x18b')]['sync'](this,_0x53b14a['account_id']);if(!_0xb4b2f4||!_0xb4b2f4[_0xa590('0x18c')]){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x53b14a,_0xa590('0x18d'));}var _0x5892a7={'from':util['format'](_0xa590('0x18e'),_0xb4b2f4[_0xa590('0x16')],_0xb4b2f4[_0xa590('0x18f')]||_0xb4b2f4[_0xa590('0x18c')][_0xa590('0x190')]),'to':_0x53b14a['to']||'','cc':_0x53b14a['cc']||'','bcc':_0x53b14a[_0xa590('0x191')]||'','subject':_0x53b14a[_0xa590('0x192')],'html':_0x53b14a['text'],'text':_0x53b14a[_0xa590('0x5d')]};if(this[_0xa590('0x86')](_0x53b14a[_0xa590('0x193')])){}logger['debug'](_0xa590('0x194'),JSON[_0xa590('0x72')](_0x5892a7));this[_0xa590('0x38')][_0xa590('0x70')](this,_0x53b14a,_0x53b14a[_0xa590('0x195')]);this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x196'),_0xb4b2f4[_0xa590('0x16')]));this[_0xa590('0x24')][_0xa590('0x70')](this,_0xb4b2f4[_0xa590('0x197')],_0x5892a7);return this['channel'][_0xa590('0xa7')](_0xa590('0x198'));};AGIVertices[_0xa590('0x13')][_0xa590('0x199')]=function(_0x58c44e){logger['info'](util[_0xa590('0x2a')](_0xa590('0x19a'),_0x58c44e['label']));return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x19b'));};AGIVertices[_0xa590('0x13')]['sendSMS']=function(_0x58fb0c){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x19c'),_0x58fb0c[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x58fb0c[_0xa590('0x19d')])){return this[_0xa590('0xd')][_0xa590('0xa7')]('no\x20sms\x20account\x20configured');}var _0x1aaf7a=this[_0xa590('0x35')]['sync'](this,_0x58fb0c[_0xa590('0x19d')]);if(!_0x1aaf7a){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x58fb0c,_0xa590('0x19e'));}var _0x1cfcd6={'body':_0x58fb0c[_0xa590('0x19f')],'phone':_0x58fb0c['to']||'','SmsAccountId':_0x1aaf7a['id']};logger[_0xa590('0xdd')](_0xa590('0x1a0'),JSON['stringify'](_0x1cfcd6));this[_0xa590('0x38')]['sync'](this,_0x58fb0c,_0x58fb0c[_0xa590('0x19d')]);this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x1a1'),_0x1aaf7a[_0xa590('0x16')]));this[_0xa590('0x37')][_0xa590('0x70')](this,_0x1cfcd6);return this[_0xa590('0xd')][_0xa590('0xa7')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xa590('0x13')][_0xa590('0x1a2')]=function(_0x2636f9){logger[_0xa590('0x2f')](util[_0xa590('0x2a')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x2636f9[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x2636f9[_0xa590('0xd7')])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x2636f9,_0xa590('0x1a3'));}var _0xe78f0d=this[_0xa590('0x10')][_0xa590('0x70')](this,_0x2636f9[_0xa590('0xd7')]);if(!_0xe78f0d){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x2636f9,'no\x20variable\x20found');}return this[_0xa590('0xd')][_0xa590('0x9c')](_0xe78f0d,_0x2636f9[_0xa590('0x1a4')]);};AGIVertices[_0xa590('0x13')][_0xa590('0x1a5')]=function(_0x5771e8){logger['info'](util[_0xa590('0x2a')](_0xa590('0x1a6'),_0x5771e8[_0xa590('0xa6')]));this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x1a7'));if(_0x5771e8[_0xa590('0xb7')]==='yes'){this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x1a8'));return this[_0xa590('0xd')]['answer']();}return this[_0xa590('0xd')][_0xa590('0xa7')](_0xa590('0x1a9'));};AGIVertices[_0xa590('0x13')][_0xa590('0x1aa')]=function(_0x41e8a8){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x1ab'),_0x41e8a8[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x41e8a8['project_id'])){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x41e8a8,_0xa590('0x1ac'));}var _0x2c21d3=this[_0xa590('0x17')][_0xa590('0x70')](this,_0x41e8a8[_0xa590('0x1ad')]);if(!this['isConfigured'](_0x2c21d3)){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x41e8a8,util[_0xa590('0x2a')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x41e8a8[_0xa590('0x1ad')]));}if(_0x2c21d3===this[_0xa590('0xd')][_0xa590('0x3a')]){return this[_0xa590('0xd')][_0xa590('0x2d')](_0x41e8a8,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this['createSquareDetailsReport'][_0xa590('0x70')](this,_0x41e8a8,_0x2c21d3);var _0x38984f=this[_0xa590('0xd')]['exec']('AGI',util[_0xa590('0x2a')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xa590('0x6')][_0xa590('0x1ae')]||_0xa590('0x1af'),_0x2c21d3,this[_0xa590('0xd')][_0xa590('0x3a')]));if(_0x38984f[_0xa590('0xa1')]===-0x1){return _0x38984f;}return this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0xc3'),_0xa590('0x1b0'),_0x2c21d3));};AGIVertices[_0xa590('0x13')][_0xa590('0x1b1')]=function(_0x20730c){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x1b2'),_0x20730c[_0xa590('0xa6')]));var _0x5187b4=this[_0xa590('0x57')][_0xa590('0x70')](this,_0x20730c[_0xa590('0xb5')]);this[_0xa590('0x38')]['sync'](this,_0x20730c,_0x20730c[_0xa590('0xb5')]);if(this[_0xa590('0x86')](_0x20730c[_0xa590('0xd7')])){var _0x42126e=this[_0xa590('0x10')]['sync'](this,_0x20730c[_0xa590('0xd7')]);if(_0x42126e){this[_0xa590('0xd')][_0xa590('0x9c')](_0x42126e,_0x5187b4);return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x1b3'),_0x20730c[_0xa590('0xb5')],_0x42126e));}}return this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x1b4'),_0x20730c[_0xa590('0xb5')]));};AGIVertices['prototype'][_0xa590('0x1b5')]=function(_0x62ee30){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x1b6'),_0x62ee30[_0xa590('0xa6')]));_0x62ee30['text']=_0x62ee30[_0xa590('0x5d')][_0xa590('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa590('0x86')](_0x62ee30[_0xa590('0x1b7')])){return this[_0xa590('0xd')]['noop'](_0xa590('0x1b8'));}if(!this['isConfigured'](_0x62ee30[_0xa590('0x5d')])){return this['channel'][_0xa590('0xa7')]('no\x20text\x20configured');}this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x1b9'),_0x62ee30['text']));var _0x4aae5a=this[_0xa590('0x5b')][_0xa590('0x70')](this,_0x62ee30);if(_0x4aae5a){this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x4aae5a));var _0x1ff63d=this[_0xa590('0xd')][_0xa590('0xfc')](_0x4aae5a);try{fs[_0xa590('0xfe')](_0x4aae5a+_0xa590('0xff'));}catch(_0x512375){logger['error'](_0x512375);}return _0x1ff63d;}return this[_0xa590('0xd')][_0xa590('0x2d')](_0x62ee30,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices['prototype']['tts']=function(_0x207541){logger[_0xa590('0x2f')](util['format']('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x207541[_0xa590('0xa6')]));_0x207541[_0xa590('0x5d')]=_0x207541[_0xa590('0x5d')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xa590('0x86')](_0x207541['text'])){return this[_0xa590('0xd')][_0xa590('0xa7')]('no\x20text\x20configured');}this['channel']['noop'](util[_0xa590('0x2a')](_0xa590('0x1ba'),_0x207541[_0xa590('0x5d')]));var _0x436167=this[_0xa590('0x63')][_0xa590('0x70')](this,_0x207541);if(_0x436167){this['channel'][_0xa590('0xa7')](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x436167));var _0x350519=this[_0xa590('0xd')][_0xa590('0xfc')](_0x436167);try{fs[_0xa590('0xfe')](_0x436167+_0xa590('0xff'));}catch(_0x251821){logger[_0xa590('0x2d')](_0x251821);}return _0x350519;}return this[_0xa590('0xd')]['error'](_0x207541,_0xa590('0x1bb'));};AGIVertices[_0xa590('0x13')][_0xa590('0x1bc')]=function(_0x22b68e){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x1bd'),_0x22b68e['label']));if(!this[_0xa590('0x86')](_0x22b68e['findBy'])){return this[_0xa590('0xd')]['error'](_0x22b68e,_0xa590('0x154'));}logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x155'),this['channel'][_0xa590('0x52')],_0x22b68e[_0xa590('0x153')]));var _0x554d44=this['agentUnpause']['sync'](this,_0x22b68e[_0xa590('0x153')]);if(_0x554d44){logger[_0xa590('0x2f')](util[_0xa590('0x2a')](_0xa590('0x156'),this[_0xa590('0xd')][_0xa590('0x52')],_0x22b68e['findBy']));this[_0xa590('0xd')][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x156'),this['channel'][_0xa590('0x52')],_0x22b68e['findBy']));return{'code':0xc8,'result':_0xa590('0x157')};}else{logger[_0xa590('0x2f')](util['format'](_0xa590('0x159'),this[_0xa590('0xd')][_0xa590('0x52')],_0x22b68e[_0xa590('0x153')]));this['channel'][_0xa590('0xa7')](util[_0xa590('0x2a')](_0xa590('0x159'),this['channel'][_0xa590('0x52')],_0x22b68e[_0xa590('0x153')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xa590('0x13')][_0xa590('0x1be')]=function(_0x6e252b){logger['info'](util['format'](_0xa590('0x1bf'),_0x6e252b[_0xa590('0xa6')]));var _0x22815d=this[_0xa590('0xd')][_0xa590('0x58')](_0xa590('0x1c0'),[_0x6e252b[_0xa590('0x1c1')],_0x6e252b[_0xa590('0x7a')]]);if(_0x22815d['result']===-0x1){return _0x22815d;}return this[_0xa590('0xd')]['noop'](util[_0xa590('0x2a')](_0xa590('0xc3'),_0xa590('0x1c0'),_0x6e252b['mailbox']));};AGIVertices[_0xa590('0x13')][_0xa590('0x1c2')]=function(_0x21ecbb){logger[_0xa590('0x2f')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x21ecbb[_0xa590('0xa6')]));if(!this[_0xa590('0x86')](_0x21ecbb[_0xa590('0xd7')])){return this['channel']['error'](_0x21ecbb,'no\x20variable\x20selected');}var _0x262c3e=this['getVariable'][_0xa590('0x70')](this,_0x21ecbb[_0xa590('0xd7')]);if(!_0x262c3e){return this['channel'][_0xa590('0x2d')](_0x21ecbb,_0xa590('0xd8'));}var _0x40df89=this['channel'][_0xa590('0x10')](_0x262c3e);return{'code':0xc8,'result':_0x40df89[_0xa590('0xa3')]?_0x40df89['extra']:'-'};};String['prototype']['replaceAll']=function(_0x10ac9c,_0x856bc0){return this[_0xa590('0x9e')](_0x10ac9c)['join'](_0x856bc0);};module[_0xa590('0x1c3')]=AGIVertices;
\ No newline at end of file
+var _0xe0dd=['google_tts_language','url','timeout','includes','POST','PUT','toUpperCase','body','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','sync','render','parse','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','awsPolly','aws_secret_access_key','Amy','aws_text_type','awsLex','aws_access_key_id','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','noop','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','list_id','no\x20list\x20selected','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','RECOG_CONFIDENCE()','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','query','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','getVariable','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20found','DIAL','opts','Executed\x20command\x20%s','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','googleDialogflowV2','providerResponse','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','SestekNDA\x20is\x20unreachable','end','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','streamFile','unlink','.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\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','NOBEEP','recordFile','google\x20%s\x20file\x20created','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','%s/recordings/%s','beep','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','true','IFTIME\x20%s\x20%s','hangup','ispeechasr','intKey','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','findBy','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','success','failure','math','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','gosub','position','record','recordingFormat','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','saydigits','sayDigits','digits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','getMailAccount','account_id','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','template_id','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','start','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','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','host','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','lodash','odbc','randomstring','moment','mustache','request-promise','../../config/logger','../../config/environment/shared','./scripts','rawHeaders','rawBody','menu','getsecretdigits','channel','rpc','mailRpc','getVariableById','name','prototype','getVoiceQueue','getVoiceQueueById','catch','getSquareProject','getSquareProjectById','then','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','info','ODBC\x20connection\x20successfully','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','agicommand','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','extension','priority','accountcode','dnid','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','agentPause','agent','agentUnpause','error','agentLogout','agentLogin','internal','LOCAL','exec','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','MP3','googleTTS'];(function(_0x599a0f,_0x4ce2d9){var _0x392039=function(_0x190ff7){while(--_0x190ff7){_0x599a0f['push'](_0x599a0f['shift']());}};_0x392039(++_0x4ce2d9);}(_0xe0dd,0x163));var _0xde0d=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xe0dd[_0x3b0731];return _0x4204d7;};'use strict';var fs=require('fs');var util=require(_0xde0d('0x0'));var _=require(_0xde0d('0x1'));var sh=require('shelljs');var odbc=require(_0xde0d('0x2'))();var rs=require(_0xde0d('0x3'));var moment=require(_0xde0d('0x4'));var Mustache=require(_0xde0d('0x5'));var rp=require(_0xde0d('0x6'));var logger=require(_0xde0d('0x7'))('agi');var config=require('../../config/environment');var shared=require(_0xde0d('0x8'));var scripts=require(_0xde0d('0x9'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0xde0d('0xa'),_0xde0d('0xb')];var verticesWithRetry=[_0xde0d('0xc'),'getdigits',_0xde0d('0xd')];var AGIVertices=function(_0x492a1f,_0x295d54,_0x5e6588){this[_0xde0d('0xe')]=_0x492a1f;this[_0xde0d('0xf')]=_0x295d54;this[_0xde0d('0x10')]=_0x5e6588;};AGIVertices['prototype']['getVariable']=function(_0x56391c,_0x42026a){this[_0xde0d('0xf')][_0xde0d('0x11')](_0x56391c)['then'](function(_0x1557ce){_0x42026a(null,_0x1557ce?_0x1557ce[_0xde0d('0x12')]:![]);})['catch'](function(_0x413c76){_0x42026a(_0x413c76);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x14')]=function(_0x2ca416,_0x13e887){this['rpc'][_0xde0d('0x15')](_0x2ca416)['then'](function(_0xf267c){_0x13e887(null,_0xf267c?_0xf267c['name']:![]);})[_0xde0d('0x16')](function(_0x578a3c){_0x13e887(_0x578a3c);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x17')]=function(_0x116bb2,_0x228666){this[_0xde0d('0xf')][_0xde0d('0x18')](_0x116bb2)[_0xde0d('0x19')](function(_0x5ee4f9){_0x228666(null,_0x5ee4f9?_0x5ee4f9[_0xde0d('0x12')]:![]);})[_0xde0d('0x16')](function(_0x1b6266){_0x228666(_0x1b6266);});};AGIVertices['prototype'][_0xde0d('0x1a')]=function(_0x3c9639,_0x59cd34){this['rpc'][_0xde0d('0x1b')](_0x3c9639)[_0xde0d('0x19')](function(_0x11437e){_0x59cd34(null,_0x11437e?_0x11437e[_0xde0d('0x1c')]:![]);})[_0xde0d('0x16')](function(_0x5ec167){_0x59cd34(_0x5ec167);});};AGIVertices['prototype'][_0xde0d('0x1d')]=function(_0x5ef8fa,_0x2e52aa){this[_0xde0d('0xf')][_0xde0d('0x1e')](_0x5ef8fa)['then'](function(_0x47d3f4){_0x2e52aa(null,_0x47d3f4?_0x47d3f4['name']:![]);})[_0xde0d('0x16')](function(_0x3b11e9){_0x2e52aa(_0x3b11e9);});};AGIVertices['prototype'][_0xde0d('0x1f')]=function(_0x1ccb8d,_0x39ca31){this[_0xde0d('0xf')]['getTrunkById'](_0x1ccb8d)[_0xde0d('0x19')](function(_0x392185){_0x39ca31(null,_0x392185?_0x392185[_0xde0d('0x12')]:![]);})[_0xde0d('0x16')](function(_0x33aa43){_0x39ca31(_0x33aa43);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x20')]=function(_0xf081af,_0x26e30b){var _0x525221=this;this[_0xde0d('0xf')][_0xde0d('0x21')](_0xf081af)[_0xde0d('0x19')](function(_0x188a7a){_0x26e30b(null,_0x188a7a?_0x525221[_0xde0d('0x22')](_0x188a7a[_0xde0d('0x23')]):![]);})[_0xde0d('0x16')](function(_0x4786c1){_0x26e30b(_0x4786c1);});};AGIVertices[_0xde0d('0x13')]['getMailAccount']=function(_0x5d6a16,_0x486914){this['rpc']['getMailAccountById'](_0x5d6a16)[_0xde0d('0x19')](function(_0x272230){_0x486914(null,_0x272230?_0x272230:![]);})[_0xde0d('0x16')](function(_0x16a360){_0x486914(_0x16a360);});};AGIVertices['prototype'][_0xde0d('0x24')]=function(_0x1a7fe3,_0x3aa9a6,_0x5d5cb1){this[_0xde0d('0x10')][_0xde0d('0x24')](_0x1a7fe3,_0x3aa9a6)['then'](function(){_0x5d5cb1(null);})[_0xde0d('0x16')](function(_0x426a23){_0x5d5cb1(_0x426a23);});};AGIVertices['prototype'][_0xde0d('0x25')]=function(_0x4bf68a,_0x1213b1){this[_0xde0d('0xf')][_0xde0d('0x26')](_0x4bf68a)[_0xde0d('0x19')](function(_0x216348){if(_0x216348){if(_0x216348[_0xde0d('0x27')]){_0x1213b1(null,[_0x216348[_0xde0d('0x28')]]);}else{_0x1213b1(null,_[_0xde0d('0x29')](_0x216348[_0xde0d('0x2a')],_0xde0d('0x28')));}}else{_0x1213b1(null,![]);}})[_0xde0d('0x16')](function(_0x2957c6){_0x1213b1(_0x2957c6);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x22')]=function(_0x231164){return util[_0xde0d('0x2b')](_0xde0d('0x2c'),FILES_PATH,_0x231164);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x2d')]=function(_0x522fa0,_0x516ef2,_0xf47f46){odbc[_0xde0d('0x2e')](_0x522fa0,function(_0x5ec787){if(_0x5ec787){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x5ec787);_0xf47f46(_0x5ec787);}else{logger[_0xde0d('0x2f')](_0xde0d('0x30'));odbc['query'](_0x516ef2,function(_0x3f1c77,_0x4999d9){if(_0x3f1c77){logger[_0xde0d('0x2f')]('Error\x20executing\x20query\x20%s',_0x516ef2);_0xf47f46(_0x3f1c77);}else{logger[_0xde0d('0x2f')]('Query\x20executed\x20correctly\x20%s',_0x516ef2);odbc['close'](function(_0x279c73){if(_0x279c73){logger['error'](_0xde0d('0x31'),_0x279c73);}_0xf47f46(null,_0x4999d9);});}});}});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x32')]=function(_0xdb345c,_0x3403e8){this[_0xde0d('0xf')][_0xde0d('0x33')](_0xdb345c)['then'](function(_0xea8c9b){_0x3403e8(null,_0xea8c9b?_0xea8c9b:![]);})[_0xde0d('0x16')](function(_0x2f0065){_0x3403e8(_0x2f0065);});};AGIVertices['prototype'][_0xde0d('0x34')]=function(_0x742f9d,_0xac6340){this[_0xde0d('0xf')][_0xde0d('0x34')](_0x742f9d)[_0xde0d('0x19')](function(_0x3728d7){_0xac6340(null,_0x3728d7);})[_0xde0d('0x16')](function(_0x261226){_0xac6340(_0x261226);});};AGIVertices[_0xde0d('0x13')]['createSquareDetailsReport']=function(_0x1d95e1,_0x1f187c,_0x50c6b5){this['rpc'][_0xde0d('0x35')]({'uniqueid':this[_0xde0d('0xe')]['uniqueid'],'node':_0x1d95e1['label'],'application':_0x1d95e1[_0xde0d('0x36')],'data':_0x1f187c||null,'project_name':this[_0xde0d('0xe')][_0xde0d('0x37')],'callerid':this['channel'][_0xde0d('0x38')]})[_0xde0d('0x19')](function(_0x101c38){if(_0x50c6b5){_0x50c6b5(null,_0x101c38);}})[_0xde0d('0x16')](function(_0x1cc025){if(_0x50c6b5){_0x50c6b5(_0x1cc025);}});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x39')]=function(_0x2979ce,_0x527f0d,_0x4ee04e,_0x4d959b){this[_0xde0d('0xf')][_0xde0d('0x39')]({'uniqueid':this[_0xde0d('0xe')][_0xde0d('0x3a')],'callerid':this[_0xde0d('0xe')]['callerid'],'calleridname':this['channel'][_0xde0d('0x3b')],'context':this[_0xde0d('0xe')][_0xde0d('0x3c')],'extension':this['channel'][_0xde0d('0x3d')],'priority':this['channel'][_0xde0d('0x3e')],'accountcode':this['channel'][_0xde0d('0x3f')],'dnid':this[_0xde0d('0xe')][_0xde0d('0x40')],'projectName':this['channel'][_0xde0d('0x37')],'saveName':_0x527f0d,'filename':_0x2979ce['file']||_0x527f0d,'savePath':_0x4ee04e})['then'](function(_0x236ce6){_0x4d959b(null,_0x236ce6);})[_0xde0d('0x16')](function(_0x2f00f7){_0x4d959b(_0x2f00f7);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x41')]=function(_0x2f5777,_0x15b24f,_0x1c9479,_0x387096,_0x358e55){this[_0xde0d('0xf')][_0xde0d('0x41')]({'uniqueid':this[_0xde0d('0xe')][_0xde0d('0x3a')],'body':_0x2f5777,'direction':_0x15b24f,'providerName':_0x1c9479,'providerResponse':_0x387096})['then'](function(_0x574268){if(_0x358e55){_0x358e55(null,_0x574268);}})[_0xde0d('0x16')](function(_0x2644bd){if(_0x358e55){_0x358e55(_0x2644bd);}});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x42')]=function(_0x16f45a,_0x40a282){this[_0xde0d('0xf')][_0xde0d('0x42')]({'firstName':_[_0xde0d('0x43')](_0x16f45a['name'])||_[_0xde0d('0x44')](_0x16f45a[_0xde0d('0x12')])?_0xde0d('0x45')+Math[_0xde0d('0x46')]():_0x16f45a[_0xde0d('0x12')],'lastName':_['isEmpty'](_0x16f45a[_0xde0d('0x47')])||_['isNil'](_0x16f45a['lastName'])?null:_0x16f45a[_0xde0d('0x47')],'phone':_0x16f45a[_0xde0d('0x48')],'ListId':_0x16f45a['list_id'],'scheduledat':_0x16f45a[_0xde0d('0x49')],'callbackUniqueid':this['channel']['uniqueid'],'tags':_0xde0d('0x4a'),'description':_0xde0d('0x4b')+_0x16f45a[_0xde0d('0x49')][_0xde0d('0x4c')](),'priority':_0x16f45a[_0xde0d('0x4d')]})['then'](function(_0x3c3c82){_0x40a282(null,_0x3c3c82);})['catch'](function(_0x5bdc08){_0x40a282(_0x5bdc08);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x4e')]=function(_0x1f0e01,_0x3e6ab6){this[_0xde0d('0xf')]['getPauseById'](_0x1f0e01)[_0xde0d('0x19')](function(_0x3eb0ee){_0x3e6ab6(null,_0x3eb0ee?_0x3eb0ee[_0xde0d('0x12')]:![]);})[_0xde0d('0x16')](function(_0x529ba3){_0x3e6ab6(_0x529ba3);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x4f')]=function(_0x2d5ff8,_0x25f1e1,_0x268e34){var _0x1e5604={'role':_0xde0d('0x50')};_0x1e5604[_0x2d5ff8]=this['channel'][_0xde0d('0x38')];this['rpc']['agentPause'](_0x1e5604,_0x25f1e1,this[_0xde0d('0xe')]['uniqueid'])[_0xde0d('0x19')](function(_0x2b14c4){_0x268e34(null,_[_0xde0d('0x44')](_0x2b14c4)?![]:!![]);})[_0xde0d('0x16')](function(_0x634111){logger['error'](_0x634111);_0x268e34(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x4e59c7,_0x451a37){var _0x2e14f7={'role':_0xde0d('0x50')};_0x2e14f7[_0x4e59c7]=this[_0xde0d('0xe')]['callerid'];this[_0xde0d('0xf')][_0xde0d('0x51')](_0x2e14f7)[_0xde0d('0x19')](function(_0x12568a){_0x451a37(null,_[_0xde0d('0x44')](_0x12568a)?![]:!![]);})[_0xde0d('0x16')](function(_0x30db75){logger[_0xde0d('0x52')](_0x30db75);_0x451a37(null,![]);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x53')]=function(_0x2edb54,_0x8ddf54){var _0x24919f={'role':_0xde0d('0x50')};_0x24919f[_0x2edb54]=this[_0xde0d('0xe')]['callerid'];this[_0xde0d('0xf')][_0xde0d('0x53')](_0x24919f)['then'](function(_0x29bb6f){_0x8ddf54(null,_[_0xde0d('0x44')](_0x29bb6f)?![]:!![]);})[_0xde0d('0x16')](function(_0x8e6a63){logger[_0xde0d('0x52')](_0x8e6a63);_0x8ddf54(null,![]);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x54')]=function(_0x5d3aec,_0x2e2d0f){var _0x12d82e={'role':_0xde0d('0x50')};_0x12d82e[_0x5d3aec]=this[_0xde0d('0xe')][_0xde0d('0x38')];var _0x5c2b3f=_0x5d3aec!=_0xde0d('0x55')?util[_0xde0d('0x2b')]('%s/%s@from-sip/n',_0xde0d('0x56'),this[_0xde0d('0xe')][_0xde0d('0x38')]):undefined;this[_0xde0d('0xf')]['agentLogin'](_0x12d82e,_0x5c2b3f)[_0xde0d('0x19')](function(_0xcea254){_0x2e2d0f(null,_[_0xde0d('0x44')](_0xcea254)?![]:!![]);})[_0xde0d('0x16')](function(_0x1e2c4c){logger[_0xde0d('0x52')](_0x1e2c4c);_0x2e2d0f(null,![]);});};AGIVertices[_0xde0d('0x13')]['shellCommand']=function(_0x239992,_0x9575e8){sh[_0xde0d('0x57')](_['trim'](_0x239992),function(_0x4bb7ea,_0x17ae5c){var _0x1fba27=_0x17ae5c['replace'](/(\r\n|\n|\r)/gm,'');_0x9575e8(null,_0x1fba27);});};AGIVertices[_0xde0d('0x13')]['googleCloudTTS']=function(_0x3dc038,_0x18e3f7){scripts[_0xde0d('0x58')](_0x3dc038[_0xde0d('0x59')],_0x3dc038[_0xde0d('0x5a')]||'text',_0x3dc038[_0xde0d('0x5b')],_0x3dc038[_0xde0d('0x5c')]||_0xde0d('0x5d'),_0x3dc038[_0xde0d('0x5e')]||'MALE',_0x3dc038[_0xde0d('0x5f')]||_0xde0d('0x60'))[_0xde0d('0x19')](function(_0x414ea7){_0x18e3f7(null,_0x414ea7);})[_0xde0d('0x16')](function(_0x253533){_0x18e3f7(_0x253533);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x61')]=function(_0x369751,_0x4d2853){scripts['googleTTS'](_0x369751['text'],_0x369751[_0xde0d('0x62')]||'en',0x1)[_0xde0d('0x19')](function(_0x57f3d8){_0x4d2853(null,_0x57f3d8);})[_0xde0d('0x16')](function(_0x36344d){_0x4d2853(_0x36344d);});};AGIVertices[_0xde0d('0x13')]['restAPI']=function(_0x2abb12,_0x3f8a8f){var _0x4c7b67={'uri':_0x2abb12[_0xde0d('0x63')],'method':_0x2abb12['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2abb12[_0xde0d('0x64')])==='number'&&parseInt(_0x2abb12[_0xde0d('0x64')])>=0x1?parseInt(_0x2abb12[_0xde0d('0x64')])*0x3e8:0x5*0x3e8};if(_[_0xde0d('0x65')]([_0xde0d('0x66'),_0xde0d('0x67')],_0x4c7b67['method'][_0xde0d('0x68')]())){try{_0x4c7b67[_0xde0d('0x69')]=_0x2abb12[_0xde0d('0xb')]?JSON['parse'](_0x2abb12['rawBody']):{};}catch(_0x19b866){logger[_0xde0d('0x52')](_0xde0d('0x6a'),_0x19b866);}}try{_0x4c7b67[_0xde0d('0x6b')]=_0x2abb12[_0xde0d('0xa')]?JSON['parse'](_0x2abb12['rawHeaders']):{};}catch(_0x2fd75d){logger[_0xde0d('0x52')](_0xde0d('0x6c'),_0x2fd75d);}if(_0x2abb12['computedVariables']){try{var _0x42b45f=require(_0x2abb12['computedVariables'])[_0xde0d('0x6d')](this,_0x4c7b67);_0x4c7b67['uri']=Mustache[_0xde0d('0x6e')](_0x2abb12[_0xde0d('0x63')],_0x42b45f,{},['$$','$$']);if(_0x4c7b67['headers']){_0x4c7b67[_0xde0d('0x6b')]=JSON[_0xde0d('0x6f')](Mustache['render'](JSON[_0xde0d('0x70')](_0x4c7b67[_0xde0d('0x6b')]),_0x42b45f,{},['$$','$$']));}if(_0x4c7b67[_0xde0d('0x69')]){_0x4c7b67[_0xde0d('0x69')]=JSON[_0xde0d('0x6f')](Mustache['render'](JSON[_0xde0d('0x70')](_0x4c7b67['body']),_0x42b45f,{},['$$','$$']));}}catch(_0x2b0b47){logger[_0xde0d('0x52')](_0xde0d('0x71'),_0x2b0b47);}}rp(_0x4c7b67)[_0xde0d('0x19')](function(_0x1b4d09){var _0x2fb5b2={'statusCode':_0x1b4d09[_0xde0d('0x72')]||0xc8,'statusMessage':_0x1b4d09[_0xde0d('0x73')]||'OK','headers':_0x1b4d09['headers']||{},'body':_0x1b4d09['body']||{}};_0x3f8a8f(null,_0x2fb5b2);})[_0xde0d('0x16')](function(_0x16fe97){var _0x433640={'statusCode':_0x16fe97['statusCode']||0x1f4,'statusMessage':_0x16fe97[_0xde0d('0x74')]||_0xde0d('0x75'),'headers':_0x16fe97[_0xde0d('0x76')]['headers']||{},'body':_0x16fe97[_0xde0d('0x76')]['body']||{}};_0x3f8a8f(null,_0x433640);});};AGIVertices['prototype'][_0xde0d('0x77')]=function(_0x5d9fa2,_0x8ec885){scripts[_0xde0d('0x77')](this[_0xde0d('0xe')][_0xde0d('0x3a')],_0x5d9fa2[_0xde0d('0x78')],_0x5d9fa2[_0xde0d('0x5b')],_0x5d9fa2[_0xde0d('0x79')]||'en')['then'](function(_0x246fd7){_0x8ec885(null,_0x246fd7);})[_0xde0d('0x16')](function(_0x54dafd){_0x8ec885(_0x54dafd);});};AGIVertices[_0xde0d('0x13')]['googleDialogflowV2']=function(_0x1e1ba9,_0x252dce){scripts['googleDialogflowV2'](this[_0xde0d('0xe')][_0xde0d('0x3a')],_0x1e1ba9[_0xde0d('0x7a')],_0x1e1ba9[_0xde0d('0x7b')],_0x1e1ba9[_0xde0d('0x7c')],_0x1e1ba9[_0xde0d('0x5b')],_0x1e1ba9[_0xde0d('0x7d')]||'en')[_0xde0d('0x19')](function(_0x38eb77){_0x252dce(null,_0x38eb77);})[_0xde0d('0x16')](function(_0x2c9072){_0x252dce(_0x2c9072);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x7e')]=function(_0x69bc4e,_0x17e06f){scripts['sestekNDA'](this[_0xde0d('0xe')],_0x69bc4e)[_0xde0d('0x19')](function(_0x162cba){_0x17e06f(null,_0x162cba);})[_0xde0d('0x16')](function(_0x4dd6bd){_0x17e06f(_0x4dd6bd);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x7f')]=function(_0x3f0e72,_0x276d00){scripts[_0xde0d('0x7f')](_0x3f0e72[_0xde0d('0x78')],_0x3f0e72[_0xde0d('0x5b')],_0x3f0e72[_0xde0d('0x80')]||_0xde0d('0x5d'),_0x3f0e72[_0xde0d('0x81')])[_0xde0d('0x19')](function(_0x40a75e){_0x276d00(null,_0x40a75e);})[_0xde0d('0x16')](function(_0x42af22){_0x276d00(_0x42af22);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x82')]=function(_0xfb656,_0x11c964,_0x78a827){scripts[_0xde0d('0x82')](_0x11c964,_0xfb656[_0xde0d('0x78')],_0xfb656[_0xde0d('0x83')]||'en-US',this[_0xde0d('0x84')](_0xfb656['model'])?_0xfb656['model']:undefined)['then'](function(_0x407dbc){_0x78a827(null,_0x407dbc);})[_0xde0d('0x16')](function(_0x37c060){_0x78a827(_0x37c060);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x85')]=function(_0xdf40fc,_0x2f696b){scripts[_0xde0d('0x85')](_0xdf40fc['aws_access_key_id'],_0xdf40fc[_0xde0d('0x86')],_0xdf40fc['aws_polly_region'],_0xdf40fc['aws_polly_voice']||_0xde0d('0x87'),_0xdf40fc[_0xde0d('0x5b')],_0xdf40fc[_0xde0d('0x88')]||'text')[_0xde0d('0x19')](function(_0x6c872d){_0x2f696b(null,_0x6c872d);})['catch'](function(_0x3127e6){_0x2f696b(_0x3127e6);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x89')]=function(_0x44f348,_0x1b1f81){scripts[_0xde0d('0x89')](this['channel'][_0xde0d('0x3a')],_0x44f348[_0xde0d('0x8a')],_0x44f348[_0xde0d('0x86')],_0x44f348[_0xde0d('0x8b')],_0x44f348['text'],_0x44f348['aws_bot_name'])[_0xde0d('0x19')](function(_0x49c022){_0x1b1f81(null,_0x49c022);})[_0xde0d('0x16')](function(_0x35b979){_0x1b1f81(_0x35b979);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x8c')]=function(_0x52e7f8,_0x16cc23,_0x4391c3){scripts[_0xde0d('0x8c')](_0x16cc23,_0x52e7f8[_0xde0d('0x78')],_0x52e7f8[_0xde0d('0x8d')]||_0xde0d('0x5d'))[_0xde0d('0x19')](function(_0x4bb3a3){_0x4391c3(null,_0x4bb3a3);})[_0xde0d('0x16')](function(_0x590099){_0x4391c3(_0x590099);});};AGIVertices[_0xde0d('0x13')]['tildeASR']=function(_0x1a06ca,_0x547982,_0xebfc40){scripts[_0xde0d('0x8e')](_0x547982,_0x1a06ca[_0xde0d('0x8f')],_0x1a06ca[_0xde0d('0x90')],_0x1a06ca[_0xde0d('0x91')])[_0xde0d('0x19')](function(_0xd0852){_0xebfc40(null,_0xd0852);})['catch'](function(_0x2646cb){_0xebfc40(_0x2646cb);});};AGIVertices[_0xde0d('0x13')][_0xde0d('0x92')]=function(_0x287b96){var _0x33c833=_['includes'](verticesWithRetry,_0x287b96['agicommand'])?_0x287b96:_[_0xde0d('0x93')](_0x287b96);for(var _0x5754a7 in _0x33c833){if(_0x33c833[_0xde0d('0x94')](_0x5754a7)){if(_0x33c833[_0x5754a7]&&_[_0xde0d('0x95')](_0x33c833[_0x5754a7])){if(_[_0xde0d('0x65')](recursiveMapAttributes,_0x5754a7)){_0x33c833[_0x5754a7]=this[_0xde0d('0x96')](_0x33c833[_0x5754a7]);}else{_0x33c833[_0x5754a7]=this[_0xde0d('0x97')](_0x33c833[_0x5754a7]);}}}}return _0x33c833;};AGIVertices[_0xde0d('0x13')][_0xde0d('0x98')]=function(_0x40f980){for(var _0x2776aa in _0x40f980){if(_0x40f980[_0xde0d('0x94')](_0x2776aa)){if(_[_0xde0d('0x99')](_0x40f980[_0x2776aa])){this[_0xde0d('0x98')](_0x40f980[_0x2776aa]);}else if(_[_0xde0d('0x9a')](_0x40f980[_0x2776aa])){for(var _0x1be377=0x0;_0x1be377<_0x40f980[_0x2776aa][_0xde0d('0x9b')];_0x1be377++){this[_0xde0d('0x98')](_0x40f980[_0x2776aa][_0x1be377]);}}else if(_['isString'](_0x40f980[_0x2776aa])){_0x40f980[_0x2776aa]=this[_0xde0d('0x97')](_0x40f980[_0x2776aa]);}}}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x9c')]=function(_0x1444c0,_0x3a238c){for(var _0x4b113a in _0x1444c0){if(_0x1444c0['hasOwnProperty'](_0x4b113a)){if(_[_0xde0d('0x99')](_0x1444c0[_0x4b113a])){if(!_[_0xde0d('0x43')](_0x1444c0[_0x4b113a])){this['saveRestApiResult'](_0x1444c0[_0x4b113a],util[_0xde0d('0x2b')](_0xde0d('0x9d'),_0x3a238c,_0x4b113a));}}else if(_[_0xde0d('0x9a')](_0x1444c0[_0x4b113a])){for(var _0x1cad92=0x0;_0x1cad92<_0x1444c0[_0x4b113a][_0xde0d('0x9b')];_0x1cad92++){this[_0xde0d('0x9c')](_0x1444c0[_0x4b113a][_0x1cad92],util[_0xde0d('0x2b')](_0xde0d('0x9d'),_0x3a238c,_0x4b113a+'['+_0x1cad92+']'));}}else{if(!_[_0xde0d('0x44')](_0x1444c0[_0x4b113a])){this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x9d'),_0x3a238c,_0x4b113a),_0x1444c0[_0x4b113a]);}}}}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x96')]=function(_0x2868e7){try{var _0x1b62d0=JSON[_0xde0d('0x6f')](_0x2868e7);this['recursiveNodeIndex'](_0x1b62d0);return JSON[_0xde0d('0x70')](_0x1b62d0);}catch(_0x4b0471){return this[_0xde0d('0x97')](_0x2868e7);}};AGIVertices['prototype'][_0xde0d('0x97')]=function(_0x384776){var _0x5f192d=_0x384776[_0xde0d('0x9f')]('{');for(var _0x3b2356=0x1;_0x3b2356<_0x5f192d[_0xde0d('0x9b')];_0x3b2356+=0x1){var _0x4fb0d6=_0x5f192d[_0x3b2356]['split']('}');if(_0x4fb0d6['length']>0x1){_0x384776=_0x384776[_0xde0d('0xa0')]('{'+_0x4fb0d6[0x0]+'}',this[_0xde0d('0xe')]['getVariable'](_0x4fb0d6[0x0])[_0xde0d('0xa1')]||_0x4fb0d6[0x0]);}}if(_0x5f192d[_0xde0d('0x9b')]===0x1){return _0x384776['toString']();}return this[_0xde0d('0x97')](_0x384776);};AGIVertices[_0xde0d('0x13')][_0xde0d('0xa2')]=function(_0x3fcd35,_0x34ea0e){var _0x312dba=this[_0xde0d('0xe')]['getVariable'](_0x3fcd35);if(_0x312dba[_0xde0d('0xa3')]===-0x1){return _0x312dba;}logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x34ea0e,_0x312dba[_0xde0d('0xa1')]));return this[_0xde0d('0xe')][_0xde0d('0x9e')](_0x34ea0e,_0x312dba['extra']);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x84')]=function(_0x34674f){return _0x34674f&&_0x34674f!=='0'&&_0x34674f!=='-1'&&_0x34674f!=='';};AGIVertices[_0xde0d('0x13')][_0xde0d('0xa4')]=function(_0x3a933b){this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x3a933b,'-');_0x3a933b[_0xde0d('0xa5')]=_0x3a933b['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xde0d('0xa6')]=function(_0x4a380b){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xa7'),_0x4a380b[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x4a380b[_0xde0d('0x5b')])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0xa9'));}var _0x414184='\x22'+_0x4a380b['text']+'\x22';if(this['isConfigured'](_0x4a380b[_0xde0d('0x76')])){_0x414184+=','+_0x4a380b['options'];}var _0x5f08de=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0xaa'),_0x414184);if(_0x5f08de['result']===-0x1){return _0x5f08de;}return this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0xab'),_0x414184));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xac')]=function(_0x2dc174){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xad'),_0x2dc174[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x2dc174[_0xde0d('0xae')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0xb0'));}var _0x5dfa0b=_0x2dc174[_0xde0d('0xae')];if(this[_0xde0d('0x84')](_0x2dc174['options'])){_0x5dfa0b+=','+_0x2dc174[_0xde0d('0x76')];}var _0x5177a4=this['channel'][_0xde0d('0x57')](_0xde0d('0xb1'),_0x5dfa0b);if(_0x5177a4[_0xde0d('0xa3')]===-0x1){return _0x5177a4;}var _0x1276b7=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xde0d('0xb2'));if(_0x1276b7[_0xde0d('0xa3')]===-0x1){return _0x1276b7;}var _0x3f8ef2=this['getAndSetVariable'](_0xde0d('0xb3'),_0xde0d('0xb4'));if(_0x3f8ef2[_0xde0d('0xa3')]===-0x1){return _0x3f8ef2;}var _0x1c3260=this[_0xde0d('0xa2')](_0xde0d('0xb5'),_0xde0d('0xb6'));if(_0x1c3260[_0xde0d('0xa3')]===-0x1){return _0x1c3260;}return this['channel'][_0xde0d('0xaf')](util['format'](_0xde0d('0xb7'),_0x5dfa0b));};AGIVertices['prototype'][_0xde0d('0xb8')]=function(_0x24ca93){logger['info'](util[_0xde0d('0x2b')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x24ca93[_0xde0d('0xa8')]));return this[_0xde0d('0xe')][_0xde0d('0xb8')]([_0x24ca93['command'],_0x24ca93['args']]);};AGIVertices[_0xde0d('0x13')][_0xde0d('0xb9')]=function(_0x28b73d){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xba'),_0x28b73d[_0xde0d('0xa8')]));if(this[_0xde0d('0x84')](_0x28b73d[_0xde0d('0x64')])){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0xbb'),_0x28b73d[_0xde0d('0x64')]));var _0x2cfa6f=this[_0xde0d('0xe')][_0xde0d('0xbc')](_0x28b73d[_0xde0d('0x64')]);if(_0x2cfa6f['result']===-0x1){return _0x2cfa6f;}}return this[_0xde0d('0xe')][_0xde0d('0xb9')]();};AGIVertices[_0xde0d('0x13')][_0xde0d('0x4a')]=function(_0x55d8df){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0xbd'),_0x55d8df[_0xde0d('0xa8')]));if(!this['isConfigured'](_0x55d8df[_0xde0d('0xbe')])){return this[_0xde0d('0xe')]['error'](_0x55d8df,_0xde0d('0xbf'));}_0x55d8df[_0xde0d('0x49')]=moment();if(this[_0xde0d('0x84')](_0x55d8df['delay'])){_0x55d8df['scheduledAt']=moment()['add'](_0x55d8df['delay'],_0xde0d('0xc0'));}if(!this[_0xde0d('0x84')](_0x55d8df[_0xde0d('0x4d')])){_0x55d8df['callback_priority']=0x2;}this['createCmContact']['sync'](this,_0x55d8df);return this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0xc1'),_0x55d8df[_0xde0d('0x48')],_0x55d8df['list_id'],_0x55d8df[_0xde0d('0x49')]));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xc2')]=function(_0x14b834){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0xc3'),_0x14b834['label']));var _0x3627dd=this[_0xde0d('0xe')][_0xde0d('0x57')](_0x14b834['application'],_0x14b834[_0xde0d('0x76')]);if(_0x3627dd[_0xde0d('0xa3')]===-0x1){return _0x3627dd;}return this[_0xde0d('0xe')]['noop'](util['format'](_0xde0d('0xc4'),_0x14b834[_0xde0d('0xc5')],_0x14b834[_0xde0d('0x76')]));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xc6')]=function(_0x2d3be9){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xc7'),_0x2d3be9[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x2d3be9[_0xde0d('0x5b')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}var _0x4a2b94='\x22'+_0x2d3be9[_0xde0d('0x5b')]+'\x22';if(this['isConfigured'](_0x2d3be9[_0xde0d('0x76')])){_0x4a2b94+=','+_0x2d3be9[_0xde0d('0x76')];}var _0x12074f=this[_0xde0d('0xe')][_0xde0d('0x57')]('MRCPSynth',_0x4a2b94);if(_0x12074f[_0xde0d('0xa3')]===-0x1){return _0x12074f;}return this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0xab'),_0x4a2b94));};AGIVertices['prototype'][_0xde0d('0xc8')]=function(_0x58130b){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0xc9'),_0x58130b[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x58130b[_0xde0d('0x5b')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}var _0x16240c='\x22'+_0x58130b[_0xde0d('0x5b')]+'\x22';if(this[_0xde0d('0x84')](_0x58130b[_0xde0d('0x76')])){_0x16240c+=','+_0x58130b[_0xde0d('0x76')];}var _0x522a6d=this['channel'][_0xde0d('0x57')](_0xde0d('0xaa'),_0x16240c);if(_0x522a6d[_0xde0d('0xa3')]===-0x1){return _0x522a6d;}return this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xab'),_0x16240c));};AGIVertices['prototype']['lumenvoxasr']=function(_0x4c5cc9){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0xca'),_0x4c5cc9[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x4c5cc9[_0xde0d('0xae')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')]('no\x20grammar\x20configured');}var _0x242bf8=_0x4c5cc9[_0xde0d('0xae')];if(this['isConfigured'](_0x4c5cc9[_0xde0d('0x76')])){_0x242bf8+=','+_0x4c5cc9[_0xde0d('0x76')];}var _0x1ab45c=this[_0xde0d('0xe')]['exec'](_0xde0d('0xb1'),_0x242bf8);if(_0x1ab45c[_0xde0d('0xa3')]===-0x1){return _0x1ab45c;}var _0x255afe=this[_0xde0d('0xa2')]('RECOG_CONFIDENCE()',_0xde0d('0xcb'));if(_0x255afe['result']===-0x1){return _0x255afe;}var _0x1a3497=this[_0xde0d('0xa2')]('RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT');if(_0x1a3497[_0xde0d('0xa3')]===-0x1){return _0x1a3497;}var _0x4532ac=this[_0xde0d('0xa2')](_0xde0d('0xb5'),'LUMENVOX_ASR_INSTANCE');if(_0x4532ac[_0xde0d('0xa3')]===-0x1){return _0x4532ac;}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0xb7'),_0x242bf8));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xcc')]=function(_0x7e268b){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xcd'),_0x7e268b['label']));if(!this[_0xde0d('0x84')](_0x7e268b[_0xde0d('0xae')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x4c98fb=_0x7e268b[_0xde0d('0xae')];if(this[_0xde0d('0x84')](_0x7e268b['options'])){_0x4c98fb+=','+_0x7e268b[_0xde0d('0x76')];}var _0x35a104=this[_0xde0d('0xe')]['exec'](_0xde0d('0xb1'),_0x4c98fb);if(_0x35a104[_0xde0d('0xa3')]===-0x1){return _0x35a104;}var _0x25ccae=this[_0xde0d('0xa2')](_0xde0d('0xce'),'SESTEK_ASR_CONFIDENCE');if(_0x25ccae['result']===-0x1){return _0x25ccae;}var _0x379443=this['getAndSetVariable'](_0xde0d('0xb3'),_0xde0d('0xcf'));if(_0x379443[_0xde0d('0xa3')]===-0x1){return _0x379443;}var _0x299dd8=this[_0xde0d('0xa2')]('RECOG_INSTANCE()',_0xde0d('0xd0'));if(_0x299dd8[_0xde0d('0xa3')]===-0x1){return _0x299dd8;}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xb7'),_0x4c98fb));};AGIVertices['prototype'][_0xde0d('0xd1')]=function(_0x449d11){logger['info'](util['format'](_0xde0d('0xd2'),_0x449d11[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x449d11['odbc_id'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x449d11,_0xde0d('0xd3'));}var _0x572aa4=this['getSquareOdbc'][_0xde0d('0x6d')](this,_0x449d11[_0xde0d('0xd4')]);if(!_0x572aa4){return this[_0xde0d('0xe')]['error'](_0x449d11,_0xde0d('0xd5'));}if(!this[_0xde0d('0x84')](_0x449d11[_0xde0d('0xd6')])){return this[_0xde0d('0xe')]['error'](_0x449d11,'no\x20query\x20configured');}var _0xd08bd0=_0x449d11[_0xde0d('0xd6')][_0xde0d('0xd7')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xde0d('0xaf')](util['format'](_0xde0d('0xd8'),_0xd08bd0));var _0x422a03=this['getQueryOdbc']['sync'](this,_0x572aa4,_0xd08bd0);this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x449d11,_0xd08bd0);if(!this[_0xde0d('0x84')](_0x449d11[_0xde0d('0xd9')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0xda'));}var _0x1f4c1f=this[_0xde0d('0xdb')]['sync'](this,_0x449d11[_0xde0d('0xd9')]);if(!_0x1f4c1f){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x449d11,_0xde0d('0xdc'));}var _0x2b2592=this;_0x422a03[_0xde0d('0xdd')](function(_0xc3382,_0x3b75a0){Object[_0xde0d('0xde')](_0xc3382)['forEach'](function(_0x32deeb){_0x2b2592[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0xdf'),_0x1f4c1f,_0x3b75a0,_0x32deeb),_0xc3382[_0x32deeb]);});});this[_0xde0d('0xe')]['setVariable'](util['format'](_0xde0d('0xe0'),_0x1f4c1f),_0x422a03[_0xde0d('0x9b')]);return this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xe1'),_0x1f4c1f));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xe2')]=function(_0xa081e0){logger[_0xde0d('0xe3')](util['format']('Enter\x20in\x20DIAL\x20(%s)\x20block',_0xa081e0[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0xa081e0['sip_id'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0xa081e0,'no\x20user\x20selected');}var _0x271d92=this[_0xde0d('0x1d')]['sync'](this,_0xa081e0[_0xde0d('0xe4')]);if(!_0x271d92){return this['channel'][_0xde0d('0x52')](_0xa081e0,_0xde0d('0xe5'));}var _0x27ba07=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0xe6'),[util[_0xde0d('0x2b')]('SIP/%s',_0x271d92),_0xa081e0[_0xde0d('0x64')],_0xa081e0[_0xde0d('0xe7')],_0xa081e0[_0xde0d('0x63')]]);if(_0x27ba07[_0xde0d('0xa3')]===-0x1){return _0x27ba07;}return this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xe8'),_0xde0d('0xe6')));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xe9')]=function(_0x5e7513){logger['info'](util['format']('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x5e7513[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x5e7513['key'])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0xea'));}if(!this[_0xde0d('0x84')](_0x5e7513[_0xde0d('0x5b')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0xa9'));}this['channel'][_0xde0d('0xeb')]=!![];this[_0xde0d('0x35')](_0x5e7513);this[_0xde0d('0x41')](_0x5e7513['text'],'in','','');this['channel'][_0xde0d('0xaf')](util['format'](_0xde0d('0xec'),_0x5e7513[_0xde0d('0x5b')]));var _0x2e3b0e=this[_0xde0d('0x77')][_0xde0d('0x6d')](this,_0x5e7513);if(_0x2e3b0e){for(var _0x46cfff in _0x2e3b0e){if(_0x2e3b0e['hasOwnProperty'](_0x46cfff)){this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0xed'),_0x46cfff[_0xde0d('0x68')]()),_0x2e3b0e[_0x46cfff]);}}this[_0xde0d('0x41')](_0x2e3b0e[_0xde0d('0xee')],'out',_0xde0d('0xe9'),'');return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xef'),_0x2e3b0e['speech']));}return this['channel'][_0xde0d('0x52')](_0x5e7513,_0xde0d('0xf0'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xf1')]=function(_0x21d928){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xf2'),_0x21d928[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x21d928[_0xde0d('0x7a')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xf3'));}if(!this[_0xde0d('0x84')](_0x21d928[_0xde0d('0x7b')])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0xf4'));}if(!this[_0xde0d('0x84')](_0x21d928[_0xde0d('0x7c')])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0xf5'));}if(!this[_0xde0d('0x84')](_0x21d928['dialogflowV2_language'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xf6'));}if(!this[_0xde0d('0x84')](_0x21d928[_0xde0d('0x5b')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')]('no\x20text\x20configured');}this[_0xde0d('0xe')][_0xde0d('0xeb')]=!![];this[_0xde0d('0x35')](_0x21d928);this[_0xde0d('0x41')](_0x21d928['text'],'in','','');this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xf7'),_0x21d928['text']));var _0x1665cc=this[_0xde0d('0xf8')][_0xde0d('0x6d')](this,_0x21d928);if(_0x1665cc){for(var _0x5da006 in _0x1665cc){if(_0x1665cc[_0xde0d('0x94')](_0x5da006)){if(_0x5da006!==_0xde0d('0xf9')){this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0xed'),_0x5da006[_0xde0d('0x68')]()),_0x1665cc[_0x5da006]);}}}this[_0xde0d('0x41')](_0x1665cc[_0xde0d('0xee')],_0xde0d('0xfa'),_0xde0d('0xf1'),_0x1665cc[_0xde0d('0xf9')]);return this['channel']['noop'](util['format'](_0xde0d('0xfb'),_0x1665cc[_0xde0d('0xee')]));}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x21d928,_0xde0d('0xfc'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0xfd')]=function(_0xf75e4a){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0xfe'),_0xf75e4a[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0xf75e4a[_0xde0d('0xff')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x100'));}if(!this[_0xde0d('0x84')](_0xf75e4a[_0xde0d('0x101')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')]('no\x20username\x20configured');}if(!this[_0xde0d('0x84')](_0xf75e4a[_0xde0d('0x102')])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0x103'));}if(!this[_0xde0d('0x84')](_0xf75e4a[_0xde0d('0x104')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}this['channel'][_0xde0d('0xeb')]=!![];this['createSquareDetailsReport'](_0xf75e4a);this[_0xde0d('0x41')](_0xf75e4a['text'],'in','','');this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0x105'),_0xf75e4a[_0xde0d('0x5b')]));var _0x67b274=this[_0xde0d('0x7e')][_0xde0d('0x6d')](this,_0xf75e4a);if(_0x67b274){for(var _0x3f0c8f in _0x67b274){if(_0x67b274[_0xde0d('0x94')](_0x3f0c8f)){this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x106'),_0x3f0c8f[_0xde0d('0x68')]()),_0x67b274[_0x3f0c8f]);}}this[_0xde0d('0x41')](_0x67b274[_0xde0d('0xee')],_0xde0d('0xfa'),_0xde0d('0xfd'),'');if(_0x67b274[_0xde0d('0x107')]){this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x108'),_0x67b274[_0xde0d('0x107')]));var _0x506236=this[_0xde0d('0xe')]['streamFile'](_0x67b274[_0xde0d('0x107')]);try{fs['unlink'](_0x67b274[_0xde0d('0x107')]+'.wav');}catch(_0x2ab8f7){logger[_0xde0d('0x52')](_0x2ab8f7);}return _0x506236;}else{return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('SestekNDA\x20Result\x20%s',_0x67b274[_0xde0d('0xee')]));}}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0xf75e4a,_0xde0d('0x109'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x10a')]=function(_0x32144f){logger['info'](util[_0xde0d('0x2b')]('Enter\x20in\x20END\x20(%s)\x20block',_0x32144f[_0xde0d('0xa8')]));return this['channel']['noop'](_0xde0d('0x10a'));};AGIVertices['prototype'][_0xde0d('0x10b')]=function(_0x4b0030){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x4b0030[_0xde0d('0xa8')]));var _0x1c7e88='';if(_0x4b0030[_0xde0d('0x10c')]){if(!this['isConfigured'](_0x4b0030[_0xde0d('0x10c')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4b0030,_0xde0d('0x10d'));}else{var _0x57ab3d=parseInt(_0x4b0030[_0xde0d('0x10c')],0xa);if(isNaN(_0x57ab3d)){_0x1c7e88=_0x4b0030[_0xde0d('0x10c')];}else{_0x1c7e88=this[_0xde0d('0x1f')][_0xde0d('0x6d')](this,_0x4b0030[_0xde0d('0x10c')]);if(!_0x1c7e88){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4b0030,_0xde0d('0x10e'));}}}}else if(_0x4b0030[_0xde0d('0x10f')]){_0x1c7e88=_0x4b0030[_0xde0d('0x10f')];}else{return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4b0030,_0xde0d('0x10d'));}var _0x117cd7=this[_0xde0d('0xe')][_0xde0d('0x57')]('DIAL',[util[_0xde0d('0x2b')](_0xde0d('0x110'),_0x1c7e88,_0x4b0030['phone']),_0x4b0030[_0xde0d('0x64')],_0x4b0030[_0xde0d('0xe7')],_0x4b0030[_0xde0d('0x63')]]);if(_0x117cd7[_0xde0d('0xa3')]===-0x1){return _0x117cd7;}return this[_0xde0d('0xe')]['noop'](util['format'](_0xde0d('0xe8'),_0xde0d('0xe6')));};AGIVertices['prototype'][_0xde0d('0x111')]=function(_0x3f58c8){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x112'),_0x3f58c8[_0xde0d('0xa8')]));return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x111'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x113')]=function(_0x4af955){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x114'),_0x4af955['label']));if(_0x4af955[_0xde0d('0xa5')]===0x0){return this['maxRetry'](_0x4af955);}_0x4af955['retry']-=0x1;if(!this[_0xde0d('0x84')](_0x4af955['file_id'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4af955,_0xde0d('0x115'));}var _0x595da7=this[_0xde0d('0x20')]['sync'](this,_0x4af955[_0xde0d('0x116')]);if(!_0x595da7){return this[_0xde0d('0xe')]['error'](_0x4af955,_0xde0d('0x117'));}if(!this['isConfigured'](_0x4af955['variable_id'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0xde0d('0xda'));}var _0x56293f=this[_0xde0d('0xe')][_0xde0d('0x118')](_0x595da7,_0x4af955['response'],_0x4af955[_0xde0d('0x119')]);var _0x201fdd=_0x56293f[_0xde0d('0xa3')]?_0x56293f[_0xde0d('0xa3')][_0xde0d('0x4c')]():'';logger['info']('test',JSON[_0xde0d('0x70')](_0x56293f));if(_0x56293f[_0xde0d('0xa3')]===-0x1){this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x4af955,_0x201fdd);return _0x56293f;}else if(_0x56293f[_0xde0d('0xa1')]===_0xde0d('0x64')){_0x56293f[_0xde0d('0xa3')]=_0x201fdd[_0xde0d('0x9b')]>=parseInt(_0x4af955[_0xde0d('0x11a')])?'x':'i';}else{_0x56293f[_0xde0d('0xa3')]=_0x201fdd['length']>=parseInt(_0x4af955[_0xde0d('0x11a')])&&_0x201fdd['length']<=parseInt(_0x4af955[_0xde0d('0x119')])?'x':'i';}var _0x2b13e8=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x4af955['variable_id']);if(!_0x2b13e8){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4af955,_0xde0d('0xdc'));}this[_0xde0d('0xe')]['setVariable'](_0x2b13e8,_0x201fdd);if(this[_0xde0d('0x84')](_0x4af955[_0xde0d('0x11b')])){var _0x2eab48=parseInt(_0x4af955[_0xde0d('0x11b')],0xa);var _0x5766f6=rs[_0xde0d('0x11c')]({'charset':'*','length':_0x2eab48});var _0x2d247e=_0x201fdd[_0xde0d('0x9b')];if(_0x2d247e>0x0){if(_0x2d247e>_0x2eab48){this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x4af955,_0x4af955[_0xde0d('0x11d')]===_0xde0d('0x11e')?_0x5766f6+_0x201fdd[_0xde0d('0x11f')](_0x2eab48):_0x201fdd[_0xde0d('0x11f')](0x0,_0x2d247e-_0x2eab48)+_0x5766f6);}else{this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x4af955,rs[_0xde0d('0x11c')]({'charset':'*','length':_0x2d247e}));}}else{this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x4af955,'');}}else{this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x4af955,_0x201fdd);}return _0x56293f;};AGIVertices['prototype'][_0xde0d('0xd')]=function(_0x21be26){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x120'),_0x21be26[_0xde0d('0xa8')]));return this[_0xde0d('0x113')](_0x21be26);};AGIVertices[_0xde0d('0x13')]['goal']=function(_0x303ed6){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x121'),_0x303ed6[_0xde0d('0xa8')]));this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x303ed6,_0x303ed6['goalname']);return this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x122'),_0x303ed6[_0xde0d('0x123')]));};AGIVertices[_0xde0d('0x13')]['awspolly']=function(_0x5e7468){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x124'),_0x5e7468['label']));if(!this[_0xde0d('0x84')](_0x5e7468['aws_access_key_id'])||!this['isConfigured'](_0x5e7468['aws_secret_access_key'])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0x125'));}if(!this['isConfigured'](_0x5e7468[_0xde0d('0x5b')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x126'),_0x5e7468[_0xde0d('0x5b')]));var _0x191eab=this[_0xde0d('0x85')][_0xde0d('0x6d')](this,_0x5e7468);if(_0x191eab){this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')]('aws\x20Polly\x20%s\x20file\x20created',_0x191eab));var _0x19b723=this[_0xde0d('0xe')][_0xde0d('0x127')](_0x191eab);try{fs[_0xde0d('0x128')](_0x191eab+_0xde0d('0x129'));}catch(_0x968392){logger[_0xde0d('0x52')](_0x968392);}return _0x19b723;}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x5e7468,_0xde0d('0x12a'));};AGIVertices[_0xde0d('0x13')]['awslex']=function(_0x27fd16){logger['info'](util['format'](_0xde0d('0x12b'),_0x27fd16[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x27fd16[_0xde0d('0x8a')])||!this[_0xde0d('0x84')](_0x27fd16[_0xde0d('0x86')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0x125'));}if(!this[_0xde0d('0x84')](_0x27fd16[_0xde0d('0x12c')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0x12d'));}if(!this[_0xde0d('0x84')](_0x27fd16['text'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}this[_0xde0d('0xe')][_0xde0d('0xeb')]=!![];this[_0xde0d('0x35')](_0x27fd16);this[_0xde0d('0x41')](_0x27fd16[_0xde0d('0x5b')],'in','','');this['channel'][_0xde0d('0xaf')](util['format'](_0xde0d('0x12e'),_0x27fd16[_0xde0d('0x5b')]));var _0x291d8e=this[_0xde0d('0x89')][_0xde0d('0x6d')](this,_0x27fd16);if(_0x291d8e){for(var _0x3b1c6f in _0x291d8e){if(_0x291d8e[_0xde0d('0x94')](_0x3b1c6f)&&_[_0xde0d('0x95')](_0x291d8e[_0x3b1c6f])){this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x12f'),_0x3b1c6f[_0xde0d('0x68')]()),_0x291d8e[_0x3b1c6f]);}}if(_['isNil'](_0x291d8e['message'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x130'));}else{this[_0xde0d('0x41')](_0x291d8e[_0xde0d('0x74')],_0xde0d('0xfa'),_0xde0d('0x131'),'');return this[_0xde0d('0xe')]['noop'](util['format'](_0xde0d('0x132'),_0x291d8e[_0xde0d('0x74')]));}}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x27fd16,_0xde0d('0x133'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x134')]=function(_0x4a98fe){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x135'),_0x4a98fe[_0xde0d('0xa8')],_0x4a98fe[_0xde0d('0x64')]));if(!this[_0xde0d('0x84')](_0x4a98fe[_0xde0d('0x78')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xea'));}var _0x4fca48=_0xde0d('0x136');var _0x5f3294=util[_0xde0d('0x2b')]('%s/recordings/%s',FILES_PATH,rs[_0xde0d('0x11c')](0x4));var _0x5e014b=util[_0xde0d('0x2b')](_0xde0d('0x9d'),_0x5f3294,_0x4fca48);var _0x4b8cec=!![];if(_0x4a98fe['beep']===_0xde0d('0x137')){_0x4b8cec=![];}var _0x3f42ae=this['channel'][_0xde0d('0x138')](_0x5f3294,_0x4fca48,_0x4a98fe['intKey'],_0x4a98fe[_0xde0d('0x64')],undefined,_0x4b8cec);if(_0x3f42ae[_0xde0d('0xa3')]!==-0x1){this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x139'),_0x5e014b));var _0x9eba3d=this['googleASR'][_0xde0d('0x6d')](this,_0x4a98fe,_0x5e014b);if(_0x9eba3d){for(var _0x5c4f85 in _0x9eba3d){if(_0x9eba3d[_0xde0d('0x94')](_0x5c4f85)){this[_0xde0d('0xe')][_0xde0d('0x9e')](util['format']('GOOGLE_ASR_%s',_0x5c4f85[_0xde0d('0x68')]()),_0x9eba3d[_0x5c4f85]);}}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('GoogleASR\x20Result\x20%s',JSON[_0xde0d('0x70')](_0x9eba3d)));}}return _0x3f42ae;};AGIVertices[_0xde0d('0x13')][_0xde0d('0x13a')]=function(_0x34a41a){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x13b'),_0x34a41a[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x34a41a[_0xde0d('0x8f')])){return this['channel'][_0xde0d('0xaf')](_0xde0d('0x13c'));}if(!this[_0xde0d('0x84')](_0x34a41a[_0xde0d('0x90')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x13d'));}var _0x582db8=_0xde0d('0x136');var _0x13539e=util['format'](_0xde0d('0x13e'),FILES_PATH,rs['generate'](0x4));var _0x390856=util[_0xde0d('0x2b')](_0xde0d('0x9d'),_0x13539e,_0x582db8);var _0x5e957f=!![];if(_0x34a41a[_0xde0d('0x13f')]===_0xde0d('0x137')){_0x5e957f=![];}var _0x5f2d64=this[_0xde0d('0xe')][_0xde0d('0x138')](_0x13539e,_0x582db8,_0x34a41a['intKey'],_0x34a41a[_0xde0d('0x64')],undefined,_0x5e957f);if(_0x5f2d64[_0xde0d('0xa3')]!==-0x1){this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')]('tilde\x20%s\x20file\x20created',_0x390856));var _0x33d638=this['tildeASR']['sync'](this,_0x34a41a,_0x390856);if(_0x33d638){for(var _0x262f3d in _0x33d638){if(_0x33d638[_0xde0d('0x94')](_0x262f3d)){this[_0xde0d('0xe')]['setVariable'](util[_0xde0d('0x2b')](_0xde0d('0x140'),_0x262f3d['toUpperCase']()),_0x33d638[_0x262f3d]);}}return this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0x141'),JSON['stringify'](_0x33d638)));}}return _0x5f2d64;};AGIVertices[_0xde0d('0x13')][_0xde0d('0x142')]=function(_0x6117af){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x143'),_0x6117af['label']));return this[_0xde0d('0xe')][_0xde0d('0x144')](_0x6117af[_0xde0d('0x3c')],_0x6117af['extension'],_0x6117af[_0xde0d('0x3e')]);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x145')]=function(_0x2a0d73){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x146'),_0x2a0d73[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x2a0d73[_0xde0d('0x147')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x2a0d73,_0xde0d('0x148'));}try{var _0x14ebfa=eval(_0x2a0d73[_0xde0d('0x147')])?'true':_0xde0d('0x149');this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x14a'),_0x2a0d73[_0xde0d('0x147')],_0x14ebfa));return{'code':0xc8,'result':_0x14ebfa};}catch(_0x155447){return{'code':0xc8,'result':_0xde0d('0x149')};}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x14b')]=function(_0x30f8f8){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x14c'),_0x30f8f8['label']));if(!this['isConfigured'](_0x30f8f8[_0xde0d('0x14d')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x30f8f8,_0xde0d('0x14e'));}var _0xd2d13b=this[_0xde0d('0x25')][_0xde0d('0x6d')](this,_0x30f8f8[_0xde0d('0x14d')]);if(!_0xd2d13b){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x30f8f8,_0xde0d('0x14f'));}for(var _0x2fff4b=0x0;_0x2fff4b<_0xd2d13b[_0xde0d('0x9b')];_0x2fff4b+=0x1){var _0x4bff7d=this[_0xde0d('0xe')][_0xde0d('0xdb')](util[_0xde0d('0x2b')](_0xde0d('0x150'),_0xd2d13b[_0x2fff4b]));if(_0x4bff7d['result']===-0x1){return _0x4bff7d;}logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('IFTIME\x20%s\x20%s',_0xd2d13b[_0x2fff4b],_0x4bff7d[_0xde0d('0xa1')]));if(_0x4bff7d[_0xde0d('0xa1')]===_0xde0d('0x151')){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x152'),_0xd2d13b[_0x2fff4b],_0xde0d('0x151')));this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x152'),_0xd2d13b[_0x2fff4b],_0xde0d('0x151')));return{'code':0xc8,'result':'true'};}else{logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x152'),_0xd2d13b[_0x2fff4b],_0xde0d('0x149')));this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0x152'),_0xd2d13b[_0x2fff4b],'false'));}}return{'code':0xc8,'result':_0xde0d('0x149')};};AGIVertices['prototype'][_0xde0d('0x153')]=function(_0x7c8ac4){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x7c8ac4[_0xde0d('0xa8')]));return this['channel'][_0xde0d('0x153')]();};AGIVertices[_0xde0d('0x13')][_0xde0d('0x154')]=function(_0x28ec3f){logger[_0xde0d('0x2f')](util['format']('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x28ec3f['label']));if(!this[_0xde0d('0x84')](_0x28ec3f[_0xde0d('0x78')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xea'));}var _0x3a4355=_0xde0d('0x136');var _0x1e789b=util['format']('%s/recordings/%s',FILES_PATH,rs[_0xde0d('0x11c')](0x4));var _0x34ad5e=util[_0xde0d('0x2b')]('%s.%s',_0x1e789b,_0x3a4355);var _0x3bb46d=!![];if(_0x28ec3f['beep']===_0xde0d('0x137')){_0x3bb46d=![];}var _0x21d0e4=this[_0xde0d('0xe')][_0xde0d('0x138')](_0x1e789b,_0x3a4355,_0x28ec3f[_0xde0d('0x155')],_0x28ec3f[_0xde0d('0x64')],undefined,_0x3bb46d);if(_0x21d0e4[_0xde0d('0xa3')]!==-0x1){this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x156'),_0x34ad5e));var _0x3026c3=this[_0xde0d('0x82')][_0xde0d('0x6d')](this,_0x28ec3f,_0x34ad5e);if(_0x3026c3){for(var _0x2e5694 in _0x3026c3){if(_0x3026c3[_0xde0d('0x94')](_0x2e5694)){this[_0xde0d('0xe')]['setVariable'](util[_0xde0d('0x2b')]('ISPEECH_ASR_%s',_0x2e5694[_0xde0d('0x68')]()),_0x3026c3[_0x2e5694]);}}return this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x157'),JSON['stringify'](_0x3026c3)));}}return _0x21d0e4;};AGIVertices[_0xde0d('0x13')]['ispeechtts']=function(_0x3e56c5){logger[_0xde0d('0x2f')](util['format']('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x3e56c5[_0xde0d('0xa8')]));if(!this['isConfigured'](_0x3e56c5[_0xde0d('0x78')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xea'));}if(!this[_0xde0d('0x84')](_0x3e56c5[_0xde0d('0x5b')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')]('no\x20text\x20configured');}this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format']('Trying\x20ispeech\x20TTS\x20%s',_0x3e56c5['text']));var _0x1191b4=this[_0xde0d('0x7f')][_0xde0d('0x6d')](this,_0x3e56c5);if(_0x1191b4){this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x156'),_0x1191b4));var _0x3fc0c7=this[_0xde0d('0xe')][_0xde0d('0x127')](_0x1191b4,_0x3e56c5[_0xde0d('0x155')]);try{fs[_0xde0d('0x128')](_0x1191b4+'.wav');}catch(_0x3a2718){logger[_0xde0d('0x52')](_0x3a2718);}return _0x3fc0c7;}return this['channel'][_0xde0d('0x52')](_0x3e56c5,_0xde0d('0x158'));};AGIVertices['prototype'][_0xde0d('0x159')]=function(_0x1f533e){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x15a'),_0x1f533e['label']));if(!this['isConfigured'](_0x1f533e['findBy'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1f533e,_0xde0d('0x15b'));}logger['info'](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xde0d('0xe')][_0xde0d('0x38')],_0x1f533e[_0xde0d('0x15c')]));var _0x4e8d2a=this['agentLogin'][_0xde0d('0x6d')](this,_0x1f533e['findBy']);if(_0x4e8d2a){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xde0d('0x38')],_0x1f533e[_0xde0d('0x15c')]));this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x15d'),this[_0xde0d('0xe')]['callerid'],_0x1f533e[_0xde0d('0x15c')]));return{'code':0xc8,'result':'success'};}else{logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x15e'),this[_0xde0d('0xe')][_0xde0d('0x38')],_0x1f533e[_0xde0d('0x15c')]));this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xde0d('0x38')],_0x1f533e['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x15f')]=function(_0x4152fc){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x160'),_0x4152fc[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x4152fc[_0xde0d('0x15c')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4152fc,_0xde0d('0x15b'));}logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x161'),this[_0xde0d('0xe')][_0xde0d('0x38')],_0x4152fc[_0xde0d('0x15c')]));var _0x5a48ab=this['agentLogout'][_0xde0d('0x6d')](this,_0x4152fc[_0xde0d('0x15c')]);if(_0x5a48ab){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x15d'),this['channel'][_0xde0d('0x38')],_0x4152fc[_0xde0d('0x15c')]));this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x15d'),this[_0xde0d('0xe')][_0xde0d('0x38')],_0x4152fc[_0xde0d('0x15c')]));return{'code':0xc8,'result':_0xde0d('0x162')};}else{logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x15e'),this[_0xde0d('0xe')][_0xde0d('0x38')],_0x4152fc[_0xde0d('0x15c')]));this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xde0d('0xe')][_0xde0d('0x38')],_0x4152fc[_0xde0d('0x15c')]));return{'code':0xc8,'result':_0xde0d('0x163')};}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x164')]=function(_0x41a902){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x41a902['label']));if(!this[_0xde0d('0x84')](_0x41a902[_0xde0d('0x165')])){return this['channel'][_0xde0d('0x52')](_0x41a902,_0xde0d('0x166'));}this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x167'),_0x41a902[_0xde0d('0x165')]));var _0x20481b=eval(_0x41a902['operation']);if(!this[_0xde0d('0x84')](_0x41a902['variable_id'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xda'));}var _0x2ae44b=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x41a902['variable_id']);if(!_0x2ae44b){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x41a902,_0xde0d('0xdc'));}if(_[_0xde0d('0x9a')](_0x20481b)){var _0x5387b6=this;_0x20481b[_0xde0d('0xdd')](function(_0x6195f4,_0x58bea6){_0x5387b6[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x168'),_0x2ae44b,_0x58bea6),_0x6195f4);});return this[_0xde0d('0xe')]['noop'](util['format'](_0xde0d('0x169'),_0x2ae44b));}else{return this['channel'][_0xde0d('0x9e')](_0x2ae44b,_0x20481b);}};AGIVertices['prototype']['menu']=function(_0x1c0bfc){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x16a'),_0x1c0bfc[_0xde0d('0xa8')]));if(_0x1c0bfc[_0xde0d('0xa5')]===0x0){return this[_0xde0d('0xa4')](_0x1c0bfc);}_0x1c0bfc['retry']-=0x1;if(!this[_0xde0d('0x84')](_0x1c0bfc[_0xde0d('0x116')])){return this['channel']['error'](_0x1c0bfc,_0xde0d('0x115'));}var _0x424339=this['getSound'][_0xde0d('0x6d')](this,_0x1c0bfc[_0xde0d('0x116')]);if(!_0x424339){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1c0bfc,_0xde0d('0x117'));}var _0x1369ef=this['channel']['getData'](_0x424339,_0x1c0bfc['response'],_0x1c0bfc[_0xde0d('0x16b')]);var _0x2a0795=_0x1369ef['result'];if(_0x1369ef[_0xde0d('0xa3')]===-0x1){this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x1c0bfc,'-1');return _0x1369ef;}else if(_0x1369ef['extra']===_0xde0d('0x64')){_0x1369ef[_0xde0d('0xa3')]=_0x1369ef['result']['length']>0x0?_0x1369ef['result']:'t';}else if(_[_0xde0d('0x43')](_0x1369ef['result'])){_0x1369ef[_0xde0d('0xa3')]='#';_0x2a0795='#';}if(!this[_0xde0d('0x84')](_0x1c0bfc[_0xde0d('0xd9')])){this['channel'][_0xde0d('0xaf')](_0xde0d('0xda'));}else{var _0x24576a=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x1c0bfc[_0xde0d('0xd9')]);if(!_0x24576a){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1c0bfc,_0xde0d('0xdc'));}this[_0xde0d('0xe')][_0xde0d('0x9e')](_0x24576a,_0x2a0795);}this[_0xde0d('0x35')]['sync'](this,_0x1c0bfc,_0x2a0795);return _0x1369ef;};AGIVertices[_0xde0d('0x13')]['noop']=function(_0x2db383){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x16c'),_0x2db383['label']));return this['channel'][_0xde0d('0xaf')](_0x2db383[_0xde0d('0x16d')]||_0x2db383[_0xde0d('0xa8')]);};AGIVertices[_0xde0d('0x13')]['pause']=function(_0x413d8c){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x16e'),_0x413d8c['label']));if(!this[_0xde0d('0x84')](_0x413d8c[_0xde0d('0x15c')])){return this['channel'][_0xde0d('0x52')](_0x413d8c,_0xde0d('0x15b'));}logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x161'),this[_0xde0d('0xe')][_0xde0d('0x38')],_0x413d8c['findBy']));var _0x11b313=this[_0xde0d('0x4e')][_0xde0d('0x6d')](this,_0x413d8c['pause_id']);var _0x36d5b8=this[_0xde0d('0x4f')][_0xde0d('0x6d')](this,_0x413d8c[_0xde0d('0x15c')],_0x11b313);if(_0x36d5b8){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xde0d('0xe')]['callerid'],_0x413d8c[_0xde0d('0x15c')]));this[_0xde0d('0xe')]['noop'](util['format'](_0xde0d('0x15d'),this['channel']['callerid'],_0x413d8c[_0xde0d('0x15c')]));return{'code':0xc8,'result':'success'};}else{logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x15e'),this['channel'][_0xde0d('0x38')],_0x413d8c[_0xde0d('0x15c')]));this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x15d'),this['channel'][_0xde0d('0x38')],_0x413d8c['findBy']));return{'code':0xc8,'result':_0xde0d('0x163')};}};AGIVertices['prototype']['playback']=function(_0x1949c5){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x16f'),_0x1949c5[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x1949c5[_0xde0d('0x116')])){return this[_0xde0d('0xe')]['error'](_0x1949c5,_0xde0d('0x115'));}var _0x1ca7ec=this[_0xde0d('0x20')]['sync'](this,_0x1949c5[_0xde0d('0x116')]);if(!_0x1ca7ec){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1949c5,_0xde0d('0x117'));}var _0x52c30f=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0x170'),[_0x1ca7ec,_0x1949c5[_0xde0d('0xe7')]]);if(_0x52c30f[_0xde0d('0xa3')]===-0x1){return _0x52c30f;}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xc4'),'PLAYBACK',_0x1ca7ec));};AGIVertices['prototype'][_0xde0d('0x171')]=function(_0x42f107){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x172'),_0x42f107[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x42f107[_0xde0d('0x173')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x42f107,'no\x20queue\x20selected');}var _0x3f3d0b='';var _0x2adebd=parseInt(_0x42f107[_0xde0d('0x173')],0xa);if(isNaN(_0x2adebd)){_0x3f3d0b=_0x42f107['queue_id'];}else{_0x3f3d0b=this['getVoiceQueue']['sync'](this,_0x42f107[_0xde0d('0x173')]);if(!_0x3f3d0b){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x42f107,_0xde0d('0x174'));}}var _0x3cafc5='';if(this[_0xde0d('0x84')](_0x42f107[_0xde0d('0x116')])){var _0x247f5f=this[_0xde0d('0x20')][_0xde0d('0x6d')](this,_0x42f107[_0xde0d('0x116')]);if(_0x247f5f){_0x3cafc5=_0x247f5f;}}this['createSquareDetailsReport']['sync'](this,_0x42f107,_0x3f3d0b);if(_0x42f107[_0xde0d('0xe7')][_0xde0d('0x175')]('x')<0x0){_0x42f107[_0xde0d('0xe7')]+='x';}if(_0x42f107[_0xde0d('0xe7')][_0xde0d('0x175')]('X')<0x0){_0x42f107[_0xde0d('0xe7')]+='X';}this[_0xde0d('0xe')]['setVariable'](_0xde0d('0x176'),_0x3f3d0b?_0x3f3d0b['toLowerCase']():'');var _0x35b7ba=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0x177'),[_0x3f3d0b,_0x42f107[_0xde0d('0xe7')],_0x42f107[_0xde0d('0x63')],_0x3cafc5,_0x42f107['timeout'],_0x42f107[_0xde0d('0xb8')],_0x42f107['macro'],_0x42f107[_0xde0d('0x178')],'',_0x42f107[_0xde0d('0x179')]]);if(_0x35b7ba['result']===-0x1){return _0x35b7ba;}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0xc4'),_0xde0d('0x177'),_0x3f3d0b));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x17a')]=function(_0x1e41f2){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x1e41f2[_0xde0d('0xa8')]));var _0x1470ac=_0x1e41f2[_0xde0d('0x17b')]||_0xde0d('0x136');var _0x4c9fd9=util[_0xde0d('0x2b')](_0xde0d('0x17c'),this[_0xde0d('0xe')][_0xde0d('0x3a')],rs[_0xde0d('0x11c')](0x5));var _0x15478f=util[_0xde0d('0x2b')](_0xde0d('0x17d'),FILES_PATH,_0x4c9fd9,_0x1470ac);var _0x233bfc=util[_0xde0d('0x2b')]('%s/recordings/%s',FILES_PATH,_0x4c9fd9);this[_0xde0d('0x39')][_0xde0d('0x6d')](this,_0x1e41f2,_0x4c9fd9,_0x15478f);this[_0xde0d('0xe')][_0xde0d('0x9e')]('RECORDING_SAVENAME',_0x4c9fd9);logger['info'](_0xde0d('0x17e'),_0x233bfc,_0x1470ac,_0x1e41f2['escape_digits'],_0x1e41f2[_0xde0d('0x64')]);return this['channel'][_0xde0d('0x138')](_0x233bfc,_0x1470ac,_0x1e41f2[_0xde0d('0x17f')],_0x1e41f2[_0xde0d('0x64')],undefined,!![]);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x180')]=function(_0x25563b){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x181'),_0x25563b[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x25563b[_0xde0d('0x63')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x182'));}var _0x22abbf=this[_0xde0d('0x183')]['sync'](this,_0x25563b);logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Response:',util['inspect'](_0x22abbf,{'showHidden':![],'depth':null})));if(!this[_0xde0d('0x84')](_0x25563b['variable_id'])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0x184'));}var _0xe49e18=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x25563b[_0xde0d('0xd9')]);if(!_0xe49e18){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x25563b,_0xde0d('0xdc'));}this[_0xde0d('0xe')][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x185'),_0xe49e18),_0x22abbf[_0xde0d('0x72')]?_0x22abbf['statusCode']:'200');this['channel'][_0xde0d('0x9e')](util[_0xde0d('0x2b')](_0xde0d('0x186'),_0xe49e18),_0x22abbf['statusMessage']?_0x22abbf[_0xde0d('0x73')]:'OK');if(_0x22abbf[_0xde0d('0x69')]){try{this[_0xde0d('0x9c')](_0x22abbf['body'],_0xe49e18);}catch(_0x726d87){logger[_0xde0d('0x52')](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0xe49e18));}}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xe1'),_0xe49e18));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x187')]=function(_0x5cf92e){logger[_0xde0d('0x2f')](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x5cf92e[_0xde0d('0xa8')]));return this[_0xde0d('0xe')][_0xde0d('0x188')](_0x5cf92e[_0xde0d('0x189')]['replace'](/\s+/g,''),_0x5cf92e['escape_digits']);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x18a')]=function(_0x1411fa){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x1411fa[_0xde0d('0xa8')]));return this['channel'][_0xde0d('0x18b')](_0x1411fa['number'][_0xde0d('0xd7')](/\s+/g,''),_0x1411fa[_0xde0d('0x17f')]);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x18c')]=function(_0x45c42a){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x18d'),_0x45c42a[_0xde0d('0xa8')]));return this[_0xde0d('0xe')][_0xde0d('0x18e')](_0x45c42a[_0xde0d('0x5b')],_0x45c42a[_0xde0d('0x17f')]);};AGIVertices[_0xde0d('0x13')]['sendMail']=function(_0x519a1f){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x18f'),_0x519a1f['label']));if(!this['isConfigured'](_0x519a1f['account_id'])){return this[_0xde0d('0xe')]['noop'](_0xde0d('0x190'));}var _0x1b68d2=this[_0xde0d('0x191')]['sync'](this,_0x519a1f[_0xde0d('0x192')]);if(!_0x1b68d2||!_0x1b68d2[_0xde0d('0x193')]){return this['channel'][_0xde0d('0x52')](_0x519a1f,'no\x20mail\x20account\x20found');}var _0x6e6649={'from':util[_0xde0d('0x2b')](_0xde0d('0x194'),_0x1b68d2[_0xde0d('0x12')],_0x1b68d2[_0xde0d('0x195')]||_0x1b68d2[_0xde0d('0x193')][_0xde0d('0x196')]),'to':_0x519a1f['to']||'','cc':_0x519a1f['cc']||'','bcc':_0x519a1f[_0xde0d('0x197')]||'','subject':_0x519a1f[_0xde0d('0x198')],'html':_0x519a1f[_0xde0d('0x5b')],'text':_0x519a1f['text']};if(this['isConfigured'](_0x519a1f[_0xde0d('0x199')])){}logger['debug']('sendMail\x20message',JSON[_0xde0d('0x70')](_0x6e6649));this[_0xde0d('0x35')]['sync'](this,_0x519a1f,_0x519a1f[_0xde0d('0x192')]);this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x1b68d2[_0xde0d('0x12')]));this['sendMailMessage']['sync'](this,_0x1b68d2['smtpOptions'],_0x6e6649);return this['channel'][_0xde0d('0xaf')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xde0d('0x13')][_0xde0d('0x19a')]=function(_0x368d68){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x19b'),_0x368d68[_0xde0d('0xa8')]));return this[_0xde0d('0xe')][_0xde0d('0xaf')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices['prototype']['sendSMS']=function(_0x5f2b4f){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x19c'),_0x5f2b4f[_0xde0d('0xa8')]));if(!this[_0xde0d('0x84')](_0x5f2b4f[_0xde0d('0x19d')])){return this[_0xde0d('0xe')][_0xde0d('0xaf')]('no\x20sms\x20account\x20configured');}var _0x4d5b61=this[_0xde0d('0x32')]['sync'](this,_0x5f2b4f['sms_account_id']);if(!_0x4d5b61){return this[_0xde0d('0xe')]['error'](_0x5f2b4f,_0xde0d('0x19e'));}var _0x250b49={'body':_0x5f2b4f[_0xde0d('0x19f')],'phone':_0x5f2b4f['to']||'','SmsAccountId':_0x4d5b61['id']};logger['debug']('sendSMS\x20message',JSON[_0xde0d('0x70')](_0x250b49));this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x5f2b4f,_0x5f2b4f['sms_account_id']);this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x1a0'),_0x4d5b61[_0xde0d('0x12')]));this[_0xde0d('0x34')][_0xde0d('0x6d')](this,_0x250b49);return this[_0xde0d('0xe')][_0xde0d('0xaf')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1a1')]=function(_0x46f35c){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x1a2'),_0x46f35c[_0xde0d('0xa8')]));if(!this['isConfigured'](_0x46f35c['variable_id'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x46f35c,_0xde0d('0x1a3'));}var _0xc2c475=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x46f35c[_0xde0d('0xd9')]);if(!_0xc2c475){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x46f35c,_0xde0d('0xdc'));}return this[_0xde0d('0xe')][_0xde0d('0x9e')](_0xc2c475,_0x46f35c['variable_value']);};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1a4')]=function(_0x36c136){logger['info'](util[_0xde0d('0x2b')]('Enter\x20in\x20START\x20(%s)\x20block',_0x36c136[_0xde0d('0xa8')]));this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x1a5'));if(_0x36c136['answer']===_0xde0d('0x1a6')){this['channel'][_0xde0d('0xaf')](_0xde0d('0x1a7'));return this[_0xde0d('0xe')]['answer']();}return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x1a8'));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1a9')]=function(_0x317935){logger['info'](util['format']('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x317935[_0xde0d('0xa8')]));if(!this['isConfigured'](_0x317935[_0xde0d('0x1aa')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x317935,'no\x20subproject\x20selected');}var _0x12efb0=this['getSquareProject'][_0xde0d('0x6d')](this,_0x317935[_0xde0d('0x1aa')]);if(!this[_0xde0d('0x84')](_0x12efb0)){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x317935,util[_0xde0d('0x2b')](_0xde0d('0x1ab'),_0x317935[_0xde0d('0x1aa')]));}if(_0x12efb0===this[_0xde0d('0xe')][_0xde0d('0x37')]){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x317935,_0xde0d('0x1ac'));}this['createSquareDetailsReport'][_0xde0d('0x6d')](this,_0x317935,_0x12efb0);var _0x3de9b7=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0x1ad'),util['format'](_0xde0d('0x1ae'),config[_0xde0d('0xb8')][_0xde0d('0x1af')]||'127.0.0.1',_0x12efb0,this[_0xde0d('0xe')][_0xde0d('0x37')]));if(_0x3de9b7[_0xde0d('0xa3')]===-0x1){return _0x3de9b7;}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0xc4'),_0xde0d('0x1ad'),_0x12efb0));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1b0')]=function(_0x20fd6b){logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x1b1'),_0x20fd6b[_0xde0d('0xa8')]));var _0x1d071b=this['shellCommand'][_0xde0d('0x6d')](this,_0x20fd6b[_0xde0d('0x1b2')]);this[_0xde0d('0x35')][_0xde0d('0x6d')](this,_0x20fd6b,_0x20fd6b[_0xde0d('0x1b2')]);if(this['isConfigured'](_0x20fd6b[_0xde0d('0xd9')])){var _0x32a92c=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x20fd6b[_0xde0d('0xd9')]);if(_0x32a92c){this['channel'][_0xde0d('0x9e')](_0x32a92c,_0x1d071b);return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x1b3'),_0x20fd6b[_0xde0d('0x1b2')],_0x32a92c));}}return this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x1b4'),_0x20fd6b[_0xde0d('0x1b2')]));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1b5')]=function(_0x4feadc){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x4feadc[_0xde0d('0xa8')]));_0x4feadc[_0xde0d('0x5b')]=_0x4feadc[_0xde0d('0x5b')][_0xde0d('0xd7')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xde0d('0x84')](_0x4feadc['apiKey'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0x1b6'));}if(!this[_0xde0d('0x84')](_0x4feadc['text'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x4feadc[_0xde0d('0x5b')]));var _0x1fb938=this[_0xde0d('0x58')]['sync'](this,_0x4feadc);if(_0x1fb938){this['channel'][_0xde0d('0xaf')](util['format'](_0xde0d('0x1b7'),_0x1fb938));var _0x27bafd=this[_0xde0d('0xe')][_0xde0d('0x127')](_0x1fb938);try{fs['unlink'](_0x1fb938+_0xde0d('0x129'));}catch(_0x2b26e8){logger[_0xde0d('0x52')](_0x2b26e8);}return _0x27bafd;}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x4feadc,_0xde0d('0x1b8'));};AGIVertices[_0xde0d('0x13')]['tts']=function(_0x42591e){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x1b9'),_0x42591e[_0xde0d('0xa8')]));_0x42591e['text']=_0x42591e[_0xde0d('0x5b')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x42591e['text'])){return this[_0xde0d('0xe')][_0xde0d('0xaf')](_0xde0d('0xa9'));}this[_0xde0d('0xe')][_0xde0d('0xaf')](util[_0xde0d('0x2b')](_0xde0d('0x1ba'),_0x42591e[_0xde0d('0x5b')]));var _0x2ae97d=this['googleTTS']['sync'](this,_0x42591e);if(_0x2ae97d){this['channel'][_0xde0d('0xaf')](util[_0xde0d('0x2b')]('Google\x20TTS\x20%s\x20file\x20created',_0x2ae97d));var _0x584ef7=this[_0xde0d('0xe')][_0xde0d('0x127')](_0x2ae97d);try{fs[_0xde0d('0x128')](_0x2ae97d+_0xde0d('0x129'));}catch(_0x5914a3){logger[_0xde0d('0x52')](_0x5914a3);}return _0x584ef7;}return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x42591e,'Google\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0xde0d('0x1bb')]=function(_0x2cb65d){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x1bc'),_0x2cb65d['label']));if(!this['isConfigured'](_0x2cb65d['findBy'])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x2cb65d,'no\x20find\x20by\x20configured');}logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x161'),this['channel'][_0xde0d('0x38')],_0x2cb65d['findBy']));var _0x360003=this[_0xde0d('0x51')]['sync'](this,_0x2cb65d[_0xde0d('0x15c')]);if(_0x360003){logger[_0xde0d('0x2f')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x2cb65d['findBy']));this[_0xde0d('0xe')][_0xde0d('0xaf')](util['format'](_0xde0d('0x15d'),this['channel'][_0xde0d('0x38')],_0x2cb65d[_0xde0d('0x15c')]));return{'code':0xc8,'result':_0xde0d('0x162')};}else{logger[_0xde0d('0x2f')](util['format'](_0xde0d('0x15e'),this['channel']['callerid'],_0x2cb65d['findBy']));this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0x15e'),this['channel'][_0xde0d('0x38')],_0x2cb65d[_0xde0d('0x15c')]));return{'code':0xc8,'result':_0xde0d('0x163')};}};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1bd')]=function(_0x3c7006){logger[_0xde0d('0x2f')](util[_0xde0d('0x2b')](_0xde0d('0x1be'),_0x3c7006[_0xde0d('0xa8')]));var _0x17332f=this[_0xde0d('0xe')][_0xde0d('0x57')](_0xde0d('0x1bf'),[_0x3c7006[_0xde0d('0x1c0')],_0x3c7006[_0xde0d('0x76')]]);if(_0x17332f['result']===-0x1){return _0x17332f;}return this[_0xde0d('0xe')]['noop'](util[_0xde0d('0x2b')](_0xde0d('0xc4'),_0xde0d('0x1bf'),_0x3c7006['mailbox']));};AGIVertices[_0xde0d('0x13')][_0xde0d('0x1c1')]=function(_0x1809ad){logger['info'](util[_0xde0d('0x2b')](_0xde0d('0x1c2'),_0x1809ad['label']));if(!this[_0xde0d('0x84')](_0x1809ad[_0xde0d('0xd9')])){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1809ad,_0xde0d('0x1a3'));}var _0x24363c=this[_0xde0d('0xdb')][_0xde0d('0x6d')](this,_0x1809ad[_0xde0d('0xd9')]);if(!_0x24363c){return this[_0xde0d('0xe')][_0xde0d('0x52')](_0x1809ad,_0xde0d('0xdc'));}var _0x473049=this[_0xde0d('0xe')][_0xde0d('0xdb')](_0x24363c);return{'code':0xc8,'result':_0x473049[_0xde0d('0xa1')]?_0x473049['extra']:'-'};};String[_0xde0d('0x13')]['replaceAll']=function(_0x288dbf,_0x2269b3){return this['split'](_0x288dbf)[_0xde0d('0x1c3')](_0x2269b3);};module[_0xde0d('0x1c4')]=AGIVertices;
\ No newline at end of file
index 38d428c..b2afff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5611=['getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','acwTimeout','timer','stopAcw','lastPauseAt','format','uniqueid','queue','updateAcw','update','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','then'];(function(_0xc319ab,_0x295750){var _0xc09d48=function(_0x49631c){while(--_0x49631c){_0xc319ab['push'](_0xc319ab['shift']());}};_0xc09d48(++_0x295750);}(_0x5611,0x12e));var _0x1561=function(_0xae8498,_0xa5f603){_0xae8498=_0xae8498-0x0;var _0x23f55b=_0x5611[_0xae8498];return _0x23f55b;};'use strict';var _=require(_0x1561('0x0'));var moment=require(_0x1561('0x1'));var ami=require(_0x1561('0x2'));var logger=require(_0x1561('0x3'))(_0x1561('0x4'));var RpcUser=require(_0x1561('0x5'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x9eca47){this[_0x1561('0x6')]=_0x9eca47[_0x1561('0x6')];this['agents']=_0x9eca47[_0x1561('0x7')];this[_0x1561('0x8')]=_0x9eca47['timers'];this[_0x1561('0x9')]={};ami['on']('agentconnect',this[_0x1561('0xa')][_0x1561('0xb')](this));ami['on'](_0x1561('0xc'),this[_0x1561('0xd')][_0x1561('0xb')](this));ami['on'](_0x1561('0xe'),this[_0x1561('0xf')]['bind'](this));ami['on'](_0x1561('0x10'),this[_0x1561('0x11')]['bind'](this));ami['on']('attendedtransfer',this[_0x1561('0x12')]['bind'](this));ami['on'](_0x1561('0x13'),this['syncBlindTransfer'][_0x1561('0xb')](this));ami['on'](_0x1561('0x14'),this[_0x1561('0x15')][_0x1561('0xb')](this));}function getDiff(_0x1921ec){var _0x209185=moment()[_0x1561('0x16')](0x0);var _0x31ce15=moment(_0x1921ec)['milliseconds'](0x0);return _0x209185[_0x1561('0x17')](_0x31ce15,_0x1561('0x18'));}Acw[_0x1561('0x19')][_0x1561('0x1a')]=function(_0x23a191){try{var _0x52acf0=this;var _0x1bed80=this[_0x1561('0x9')][_0x23a191][_0x1561('0x1b')];var _0x31f85c=this[_0x1561('0x9')][_0x23a191]['queue'];var _0x33fd92=this['voiceQueues'][_0x31f85c];var _0x384571=![];var _0x178392=_0x1561('0x1c');if(_0x33fd92[_0x1561('0x1d')]){if(_0x33fd92[_0x1561('0x1e')][_0x1561('0x1f')]){_0x384571=!![];_0x178392=_0x33fd92[_0x1561('0x1e')][_0x1561('0x1f')];}}return ami[_0x1561('0x20')]({'action':'QueuePause','interface':_0x1bed80,'paused':!![],'reason':_0x178392})[_0x1561('0x21')](function(){if(_0x52acf0[_0x1561('0x7')][_0x1bed80]){return RpcUser[_0x1561('0x22')](_0x52acf0[_0x1561('0x7')][_0x1bed80]['id'])['then'](function(_0x4636b1){if(_0x4636b1&&!_0x4636b1[_0x1561('0x23')]){logger['info'](_0x1561('0x24'),_0x23a191,_0x1bed80,_0x31f85c);var _0x260ec6=_0x52acf0[_0x1561('0x9')][_0x23a191][_0x1561('0x25')]&&_0x52acf0[_0x1561('0x9')][_0x23a191][_0x1561('0x26')]?_0x52acf0[_0x1561('0x9')][_0x23a191]['destlinkedid']:_0x23a191;return RpcUser[_0x1561('0x27')](_0x52acf0[_0x1561('0x7')][_0x1bed80],_0x178392,_0x260ec6)[_0x1561('0x21')](function(){if(!_0x384571){_0x52acf0[_0x1561('0x8')][_0x1bed80]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x23a191,_0x52acf0[_0x1561('0x6')][_0x31f85c][_0x1561('0x28')],_0x1bed80,_0x31f85c);_0x52acf0[_0x1561('0x8')][_0x1bed80][_0x1561('0x29')]=setTimeout(_0x52acf0[_0x1561('0x2a')][_0x1561('0xb')](_0x52acf0,_0x1bed80),_0x52acf0[_0x1561('0x6')][_0x31f85c]['acwTimeout']*0x3e8);_0x52acf0[_0x1561('0x8')][_0x1bed80][_0x1561('0x2b')]=moment()[_0x1561('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');_0x52acf0[_0x1561('0x8')][_0x1bed80][_0x1561('0x2d')]=_0x23a191;_0x52acf0[_0x1561('0x8')][_0x1bed80][_0x1561('0x2e')]=_0x31f85c;_0x52acf0['timers'][_0x1bed80][_0x1561('0x2f')]=function(){var _0x39ff10=getDiff(_0x52acf0[_0x1561('0x8')][_0x1bed80][_0x1561('0x2b')]);clearTimeout(_0x52acf0[_0x1561('0x8')][_0x1bed80]['timer']);_0x52acf0['timers'][_0x1bed80][_0x1561('0x29')]=![];RpcVoiceAgentReport[_0x1561('0x30')]({'acwtime':_0x39ff10},_0x52acf0['timers'][_0x1bed80]['uniqueid'],_0x1bed80)['then'](function(_0x4ace8b){logger[_0x1561('0x31')](_0x1561('0x32'),_0x23a191,_0x39ff10,_0x4ace8b);})[_0x1561('0x33')](function(_0x10e155){logger[_0x1561('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x23a191,_0x10e155);});delete _0x52acf0[_0x1561('0x8')][_0x1bed80];};}});}else{logger[_0x1561('0x31')](_0x1561('0x35'),_0x23a191,_0x1bed80,_0x31f85c);}});}})[_0x1561('0x33')](function(){logger[_0x1561('0x34')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x23a191,_0x52acf0[_0x1561('0x6')][_0x31f85c]['acwTimeout'],_0x1bed80,_0x31f85c);})[_0x1561('0x36')](function(){delete _0x52acf0['channels'][_0x23a191];});}catch(_0x4b6851){logger[_0x1561('0x34')](_0x1561('0x37'),_0x4b6851[_0x1561('0x38')]);}};Acw[_0x1561('0x19')]['stopAcw']=function(_0x37e033){try{var _0x3a3f13=this;if(_0x3a3f13[_0x1561('0x8')][_0x37e033]){_0x3a3f13['timers'][_0x37e033]['timer']=![];var _0x700bca=_0x3a3f13['timers'][_0x37e033][_0x1561('0x2d')];var _0xf34c3a=_0x3a3f13[_0x1561('0x8')][_0x37e033][_0x1561('0x2e')];var _0x1d6fd1=_0x3a3f13[_0x1561('0x6')][_0xf34c3a][_0x1561('0x28')];logger[_0x1561('0x31')](_0x1561('0x39'),_0x700bca,_0x37e033);RpcUser[_0x1561('0x3a')](this[_0x1561('0x7')][_0x37e033]);RpcVoiceAgentReport[_0x1561('0x30')]({'acwtime':_0x1d6fd1,'agentacw':!![]},_0x700bca,_0x37e033)['then'](function(_0xe49d1a){logger[_0x1561('0x31')]('[%s][UPDATE][ACWTIME:%s]',_0x700bca,_0x1d6fd1,_0xe49d1a);})[_0x1561('0x33')](function(_0x5aa6e0){logger[_0x1561('0x34')](_0x1561('0x3b'),_0x700bca,_0x5aa6e0);});}else{logger[_0x1561('0x34')](_0x1561('0x3c'),_0x37e033);if(_0x3a3f13['timers']){logger[_0x1561('0x31')]('[ACW][TIMERS]',JSON[_0x1561('0x3d')](_0x3a3f13['timers']));}}}catch(_0x46c95e){logger[_0x1561('0x34')](_0x1561('0x3e'),_0x46c95e[_0x1561('0x38')]);}};Acw['prototype'][_0x1561('0xa')]=function(_0x1f70cd){try{if(this[_0x1561('0x6')][_0x1f70cd[_0x1561('0x2e')]]&&(this['voiceQueues'][_0x1f70cd['queue']][_0x1561('0x4')]||this[_0x1561('0x6')][_0x1f70cd[_0x1561('0x2e')]]['mandatoryDisposition'])){if(this[_0x1561('0x7')][_0x1f70cd[_0x1561('0x1b')]]){this[_0x1561('0x9')][_0x1f70cd[_0x1561('0x2d')]]={'queue':_0x1f70cd[_0x1561('0x2e')],'interface':_0x1f70cd['interface'],'destlinkedid':_0x1f70cd[_0x1561('0x26')]};}}}catch(_0x4f7780){logger[_0x1561('0x34')]('[ACW][syncAgentConnect]\x20%s',_0x4f7780[_0x1561('0x38')]);}};Acw[_0x1561('0x19')][_0x1561('0x15')]=function(_0x117993){try{if(this['voiceQueues'][_0x117993[_0x1561('0x2e')]]&&(this['voiceQueues'][_0x117993['queue']][_0x1561('0x4')]||this[_0x1561('0x6')][_0x117993[_0x1561('0x2e')]]['mandatoryDisposition'])){if(this[_0x1561('0x7')][_0x117993[_0x1561('0x1b')]]){this['channels'][_0x117993[_0x1561('0x2d')]]={'queue':_0x117993[_0x1561('0x2e')],'interface':_0x117993[_0x1561('0x1b')]};}}}catch(_0x4ec8d0){logger[_0x1561('0x34')](_0x1561('0x3f'),_0x4ec8d0[_0x1561('0x38')]);}};Acw[_0x1561('0x19')][_0x1561('0xd')]=function(_0x547b7a){try{if(this[_0x1561('0x9')][_0x547b7a[_0x1561('0x2d')]]&&_[_0x1561('0x40')](this[_0x1561('0x9')][_0x547b7a[_0x1561('0x2d')]][_0x1561('0x25')])){logger[_0x1561('0x31')](_0x1561('0x41'),_0x547b7a[_0x1561('0x2d')]);this[_0x1561('0x1a')](_0x547b7a[_0x1561('0x2d')]);}else if(this[_0x1561('0x9')][_0x547b7a[_0x1561('0x42')]]&&_[_0x1561('0x40')](this[_0x1561('0x9')][_0x547b7a['linkedid']][_0x1561('0x25')])){logger[_0x1561('0x31')](_0x1561('0x43'),_0x547b7a[_0x1561('0x42')]);this[_0x1561('0x1a')](_0x547b7a[_0x1561('0x42')]);}}catch(_0x59863f){logger[_0x1561('0x34')](_0x1561('0x44'),_0x59863f['message']);}};Acw[_0x1561('0x19')][_0x1561('0xf')]=function(_0x57594d){try{if(this[_0x1561('0x9')][_0x57594d[_0x1561('0x2d')]]&&this['channels'][_0x57594d[_0x1561('0x2d')]]['attended']){logger[_0x1561('0x31')](_0x1561('0x45'),_0x57594d[_0x1561('0x2d')]);this[_0x1561('0x1a')](_0x57594d[_0x1561('0x2d')]);}else if(this[_0x1561('0x9')][_0x57594d[_0x1561('0x42')]]&&this[_0x1561('0x9')][_0x57594d[_0x1561('0x42')]][_0x1561('0x25')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x57594d[_0x1561('0x42')]);this[_0x1561('0x1a')](_0x57594d[_0x1561('0x42')]);}}catch(_0x133467){logger[_0x1561('0x34')]('[ACW][syncHangup]\x20%s',_0x133467[_0x1561('0x38')]);}};Acw[_0x1561('0x19')]['syncAttendedTransfer']=function(_0x3a0421){try{if(!_['isNil'](this['channels'][_0x3a0421['transfereeuniqueid']])){this[_0x1561('0x1a')](_0x3a0421[_0x1561('0x46')]);if(this[_0x1561('0x9')][_0x3a0421[_0x1561('0x47')]]){this[_0x1561('0x9')][_0x3a0421[_0x1561('0x47')]][_0x1561('0x25')]=!![];this[_0x1561('0x9')][_0x3a0421[_0x1561('0x48')]]=this['channels'][_0x3a0421[_0x1561('0x47')]];delete this[_0x1561('0x9')][_0x3a0421[_0x1561('0x47')]];}}else if(!_['isNil'](this[_0x1561('0x9')][_0x3a0421[_0x1561('0x48')]])){this[_0x1561('0x1a')](_0x3a0421['transfertargetuniqueid']);if(this[_0x1561('0x9')][_0x3a0421['origtransfereruniqueid']]){this[_0x1561('0x9')][_0x3a0421[_0x1561('0x49')]][_0x1561('0x25')]=!![];this[_0x1561('0x9')][_0x3a0421[_0x1561('0x46')]]=this[_0x1561('0x9')][_0x3a0421[_0x1561('0x49')]];delete this[_0x1561('0x9')][_0x3a0421[_0x1561('0x49')]];}}}catch(_0x597923){logger[_0x1561('0x34')](_0x1561('0x4a'),_0x597923['message']);}};Acw[_0x1561('0x19')][_0x1561('0x4b')]=function(_0x4dfda2){try{if(this[_0x1561('0x9')][_0x4dfda2[_0x1561('0x4c')]]){logger[_0x1561('0x31')](_0x1561('0x4d'),JSON[_0x1561('0x3d')](_0x4dfda2['transfereruniqueid']));this[_0x1561('0x1a')](_0x4dfda2[_0x1561('0x4c')]);}else if(this[_0x1561('0x9')][_0x4dfda2[_0x1561('0x4e')]]){logger[_0x1561('0x31')]('[%s][BLINDTRANSFER:LINKEDID]',JSON['stringify'](_0x4dfda2[_0x1561('0x4e')]));this[_0x1561('0x1a')](_0x4dfda2[_0x1561('0x4e')]);}}catch(_0x5cf6f2){logger[_0x1561('0x34')](_0x1561('0x4f'),_0x5cf6f2[_0x1561('0x38')]);}};Acw['prototype'][_0x1561('0x11')]=function(_0x3b3f9a){try{if(this[_0x1561('0x6')][_0x3b3f9a[_0x1561('0x2e')]]&&this['voiceQueues'][_0x3b3f9a[_0x1561('0x2e')]]['autopause']===_0x1561('0x50')){if(this[_0x1561('0x7')][_0x3b3f9a[_0x1561('0x1b')]]){logger[_0x1561('0x31')](_0x1561('0x51'),_0x3b3f9a['uniqueid'],_0x3b3f9a[_0x1561('0x1b')],_0x3b3f9a[_0x1561('0x2e')]);return RpcUser[_0x1561('0x27')](this[_0x1561('0x7')][_0x3b3f9a[_0x1561('0x1b')]],_0x1561('0x52'),_0x3b3f9a[_0x1561('0x2d')]);}}}catch(_0x29c1c6){logger[_0x1561('0x34')](_0x1561('0x53'),_0x29c1c6[_0x1561('0x38')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xd6c8=['isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereeuniqueid','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','lodash','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','mandatoryDisposition','name','mandatoryDispositionPause','QueuePause','getAgent','voicePause','info','attended','destlinkedid','then','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','lastPauseAt','format','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]'];(function(_0x56e4e7,_0x1db098){var _0x383618=function(_0xb088c6){while(--_0xb088c6){_0x56e4e7['push'](_0x56e4e7['shift']());}};_0x383618(++_0x1db098);}(_0xd6c8,0x15d));var _0x8d6c=function(_0xf04c6d,_0xe98786){_0xf04c6d=_0xf04c6d-0x0;var _0x4a804e=_0xd6c8[_0xf04c6d];return _0x4a804e;};'use strict';var _=require(_0x8d6c('0x0'));var moment=require(_0x8d6c('0x1'));var ami=require(_0x8d6c('0x2'));var logger=require(_0x8d6c('0x3'))(_0x8d6c('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x8d6c('0x5'));function Acw(_0x2ea0fa){this[_0x8d6c('0x6')]=_0x2ea0fa[_0x8d6c('0x6')];this[_0x8d6c('0x7')]=_0x2ea0fa['agents'];this[_0x8d6c('0x8')]=_0x2ea0fa[_0x8d6c('0x8')];this[_0x8d6c('0x9')]={};ami['on'](_0x8d6c('0xa'),this[_0x8d6c('0xb')][_0x8d6c('0xc')](this));ami['on'](_0x8d6c('0xd'),this[_0x8d6c('0xe')][_0x8d6c('0xc')](this));ami['on'](_0x8d6c('0xf'),this[_0x8d6c('0x10')]['bind'](this));ami['on'](_0x8d6c('0x11'),this[_0x8d6c('0x12')][_0x8d6c('0xc')](this));ami['on']('attendedtransfer',this[_0x8d6c('0x13')][_0x8d6c('0xc')](this));ami['on'](_0x8d6c('0x14'),this[_0x8d6c('0x15')]['bind'](this));ami['on'](_0x8d6c('0x16'),this[_0x8d6c('0x17')][_0x8d6c('0xc')](this));}function getDiff(_0x24cf46){var _0x2a02ac=moment()[_0x8d6c('0x18')](0x0);var _0x351b47=moment(_0x24cf46)['milliseconds'](0x0);return _0x2a02ac[_0x8d6c('0x19')](_0x351b47,_0x8d6c('0x1a'));}Acw[_0x8d6c('0x1b')]['startAcw']=function(_0x49436e){try{var _0x4049ca=this;var _0x3400ef=this[_0x8d6c('0x9')][_0x49436e][_0x8d6c('0x1c')];var _0x28c01e=this['channels'][_0x49436e][_0x8d6c('0x1d')];var _0xc5e719=this['voiceQueues'][_0x28c01e];var _0x4a0268=![];var _0x3c2ff8='ACW';if(_0xc5e719[_0x8d6c('0x1e')]){if(_0xc5e719['mandatoryDispositionPause'][_0x8d6c('0x1f')]){_0x4a0268=!![];_0x3c2ff8=_0xc5e719[_0x8d6c('0x20')][_0x8d6c('0x1f')];}}return ami['Action']({'action':_0x8d6c('0x21'),'interface':_0x3400ef,'paused':!![],'reason':_0x3c2ff8})['then'](function(){if(_0x4049ca['agents'][_0x3400ef]){return RpcUser[_0x8d6c('0x22')](_0x4049ca['agents'][_0x3400ef]['id'])['then'](function(_0x48fc25){if(_0x48fc25&&!_0x48fc25[_0x8d6c('0x23')]){logger[_0x8d6c('0x24')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x49436e,_0x3400ef,_0x28c01e);var _0x3710f6=_0x4049ca['channels'][_0x49436e][_0x8d6c('0x25')]&&_0x4049ca[_0x8d6c('0x9')][_0x49436e][_0x8d6c('0x26')]?_0x4049ca[_0x8d6c('0x9')][_0x49436e][_0x8d6c('0x26')]:_0x49436e;return RpcUser['savePause'](_0x4049ca['agents'][_0x3400ef],_0x3c2ff8,_0x3710f6)[_0x8d6c('0x27')](function(){if(!_0x4a0268){_0x4049ca[_0x8d6c('0x8')][_0x3400ef]={};logger[_0x8d6c('0x24')](_0x8d6c('0x28'),_0x49436e,_0x4049ca[_0x8d6c('0x6')][_0x28c01e][_0x8d6c('0x29')],_0x3400ef,_0x28c01e);_0x4049ca['timers'][_0x3400ef][_0x8d6c('0x2a')]=setTimeout(_0x4049ca['stopAcw'][_0x8d6c('0xc')](_0x4049ca,_0x3400ef),_0x4049ca[_0x8d6c('0x6')][_0x28c01e][_0x8d6c('0x29')]*0x3e8);_0x4049ca[_0x8d6c('0x8')][_0x3400ef][_0x8d6c('0x2b')]=moment()[_0x8d6c('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');_0x4049ca['timers'][_0x3400ef][_0x8d6c('0x2d')]=_0x49436e;_0x4049ca[_0x8d6c('0x8')][_0x3400ef][_0x8d6c('0x1d')]=_0x28c01e;_0x4049ca['timers'][_0x3400ef]['updateAcw']=function(){var _0x23c153=getDiff(_0x4049ca[_0x8d6c('0x8')][_0x3400ef]['lastPauseAt']);clearTimeout(_0x4049ca[_0x8d6c('0x8')][_0x3400ef][_0x8d6c('0x2a')]);_0x4049ca[_0x8d6c('0x8')][_0x3400ef][_0x8d6c('0x2a')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x23c153},_0x4049ca['timers'][_0x3400ef][_0x8d6c('0x2d')],_0x3400ef)[_0x8d6c('0x27')](function(_0x1f1bc4){logger[_0x8d6c('0x24')](_0x8d6c('0x2e'),_0x49436e,_0x23c153,_0x1f1bc4);})[_0x8d6c('0x2f')](function(_0x230ba9){logger['error'](_0x8d6c('0x30'),_0x49436e,_0x230ba9);});delete _0x4049ca['timers'][_0x3400ef];};}});}else{logger[_0x8d6c('0x24')](_0x8d6c('0x31'),_0x49436e,_0x3400ef,_0x28c01e);}});}})['catch'](function(){logger[_0x8d6c('0x32')](_0x8d6c('0x28'),_0x49436e,_0x4049ca['voiceQueues'][_0x28c01e][_0x8d6c('0x29')],_0x3400ef,_0x28c01e);})[_0x8d6c('0x33')](function(){delete _0x4049ca[_0x8d6c('0x9')][_0x49436e];});}catch(_0x4cf36e){logger[_0x8d6c('0x32')](_0x8d6c('0x34'),_0x4cf36e[_0x8d6c('0x35')]);}};Acw[_0x8d6c('0x1b')][_0x8d6c('0x36')]=function(_0x1ba0b0){try{var _0x57670b=this;if(_0x57670b['timers'][_0x1ba0b0]){_0x57670b[_0x8d6c('0x8')][_0x1ba0b0][_0x8d6c('0x2a')]=![];var _0x418a5f=_0x57670b[_0x8d6c('0x8')][_0x1ba0b0][_0x8d6c('0x2d')];var _0x5f4a17=_0x57670b[_0x8d6c('0x8')][_0x1ba0b0][_0x8d6c('0x1d')];var _0x2c9df9=_0x57670b['voiceQueues'][_0x5f4a17][_0x8d6c('0x29')];logger[_0x8d6c('0x24')](_0x8d6c('0x37'),_0x418a5f,_0x1ba0b0);RpcUser[_0x8d6c('0x38')](this[_0x8d6c('0x7')][_0x1ba0b0]);RpcVoiceAgentReport[_0x8d6c('0x39')]({'acwtime':_0x2c9df9,'agentacw':!![]},_0x418a5f,_0x1ba0b0)[_0x8d6c('0x27')](function(_0x4ed9cf){logger[_0x8d6c('0x24')](_0x8d6c('0x2e'),_0x418a5f,_0x2c9df9,_0x4ed9cf);})[_0x8d6c('0x2f')](function(_0x5f3ea8){logger['error'](_0x8d6c('0x30'),_0x418a5f,_0x5f3ea8);});}else{logger[_0x8d6c('0x32')](_0x8d6c('0x3a'),_0x1ba0b0);if(_0x57670b[_0x8d6c('0x8')]){logger['info'](_0x8d6c('0x3b'),JSON[_0x8d6c('0x3c')](_0x57670b[_0x8d6c('0x8')]));}}}catch(_0x3e1a2d){logger[_0x8d6c('0x32')](_0x8d6c('0x3d'),_0x3e1a2d[_0x8d6c('0x35')]);}};Acw['prototype'][_0x8d6c('0xb')]=function(_0x178174){try{if(this[_0x8d6c('0x6')][_0x178174[_0x8d6c('0x1d')]]&&(this[_0x8d6c('0x6')][_0x178174['queue']][_0x8d6c('0x4')]||this[_0x8d6c('0x6')][_0x178174[_0x8d6c('0x1d')]]['mandatoryDisposition'])){if(this[_0x8d6c('0x7')][_0x178174[_0x8d6c('0x1c')]]){this[_0x8d6c('0x9')][_0x178174[_0x8d6c('0x2d')]]={'queue':_0x178174[_0x8d6c('0x1d')],'interface':_0x178174['interface'],'destlinkedid':_0x178174[_0x8d6c('0x26')]};}}}catch(_0x417f47){logger[_0x8d6c('0x32')](_0x8d6c('0x3e'),_0x417f47[_0x8d6c('0x35')]);}};Acw['prototype'][_0x8d6c('0x17')]=function(_0x98c2c5){try{if(this[_0x8d6c('0x6')][_0x98c2c5[_0x8d6c('0x1d')]]&&(this['voiceQueues'][_0x98c2c5[_0x8d6c('0x1d')]]['acw']||this['voiceQueues'][_0x98c2c5['queue']][_0x8d6c('0x1e')])){if(this[_0x8d6c('0x7')][_0x98c2c5[_0x8d6c('0x1c')]]){this['channels'][_0x98c2c5[_0x8d6c('0x2d')]]={'queue':_0x98c2c5[_0x8d6c('0x1d')],'interface':_0x98c2c5['interface']};}}}catch(_0x26956f){logger[_0x8d6c('0x32')](_0x8d6c('0x3f'),_0x26956f['message']);}};Acw[_0x8d6c('0x1b')][_0x8d6c('0xe')]=function(_0x3b52ed){try{if(this[_0x8d6c('0x9')][_0x3b52ed[_0x8d6c('0x2d')]]&&_[_0x8d6c('0x40')](this['channels'][_0x3b52ed[_0x8d6c('0x2d')]][_0x8d6c('0x25')])){logger[_0x8d6c('0x24')](_0x8d6c('0x41'),_0x3b52ed[_0x8d6c('0x2d')]);this[_0x8d6c('0x42')](_0x3b52ed[_0x8d6c('0x2d')]);}else if(this[_0x8d6c('0x9')][_0x3b52ed[_0x8d6c('0x43')]]&&_[_0x8d6c('0x40')](this[_0x8d6c('0x9')][_0x3b52ed[_0x8d6c('0x43')]][_0x8d6c('0x25')])){logger[_0x8d6c('0x24')](_0x8d6c('0x44'),_0x3b52ed[_0x8d6c('0x43')]);this[_0x8d6c('0x42')](_0x3b52ed[_0x8d6c('0x43')]);}}catch(_0x5c3012){logger[_0x8d6c('0x32')]('[ACW][syncHangupRequest]\x20%s',_0x5c3012[_0x8d6c('0x35')]);}};Acw[_0x8d6c('0x1b')][_0x8d6c('0x10')]=function(_0x2fd153){try{if(this[_0x8d6c('0x9')][_0x2fd153[_0x8d6c('0x2d')]]&&this[_0x8d6c('0x9')][_0x2fd153[_0x8d6c('0x2d')]][_0x8d6c('0x25')]){logger[_0x8d6c('0x24')](_0x8d6c('0x45'),_0x2fd153[_0x8d6c('0x2d')]);this[_0x8d6c('0x42')](_0x2fd153[_0x8d6c('0x2d')]);}else if(this['channels'][_0x2fd153[_0x8d6c('0x43')]]&&this['channels'][_0x2fd153[_0x8d6c('0x43')]][_0x8d6c('0x25')]){logger[_0x8d6c('0x24')](_0x8d6c('0x46'),_0x2fd153['linkedid']);this[_0x8d6c('0x42')](_0x2fd153[_0x8d6c('0x43')]);}}catch(_0x50a886){logger[_0x8d6c('0x32')]('[ACW][syncHangup]\x20%s',_0x50a886[_0x8d6c('0x35')]);}};Acw['prototype'][_0x8d6c('0x13')]=function(_0x49b42e){try{if(!_[_0x8d6c('0x47')](this[_0x8d6c('0x9')][_0x49b42e['transfereeuniqueid']])){this['startAcw'](_0x49b42e['transfereeuniqueid']);if(this[_0x8d6c('0x9')][_0x49b42e[_0x8d6c('0x48')]]){this[_0x8d6c('0x9')][_0x49b42e['secondtransfereruniqueid']][_0x8d6c('0x25')]=!![];this[_0x8d6c('0x9')][_0x49b42e[_0x8d6c('0x49')]]=this[_0x8d6c('0x9')][_0x49b42e[_0x8d6c('0x48')]];delete this['channels'][_0x49b42e[_0x8d6c('0x48')]];}}else if(!_[_0x8d6c('0x47')](this[_0x8d6c('0x9')][_0x49b42e['transfertargetuniqueid']])){this[_0x8d6c('0x42')](_0x49b42e[_0x8d6c('0x49')]);if(this[_0x8d6c('0x9')][_0x49b42e['origtransfereruniqueid']]){this['channels'][_0x49b42e[_0x8d6c('0x4a')]][_0x8d6c('0x25')]=!![];this[_0x8d6c('0x9')][_0x49b42e[_0x8d6c('0x4b')]]=this[_0x8d6c('0x9')][_0x49b42e['origtransfereruniqueid']];delete this[_0x8d6c('0x9')][_0x49b42e[_0x8d6c('0x4a')]];}}}catch(_0x389b5d){logger['error']('[ACW][syncAttendedTransfer]\x20%s',_0x389b5d[_0x8d6c('0x35')]);}};Acw['prototype'][_0x8d6c('0x15')]=function(_0x16b265){try{if(this[_0x8d6c('0x9')][_0x16b265[_0x8d6c('0x4c')]]){logger[_0x8d6c('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0x8d6c('0x3c')](_0x16b265[_0x8d6c('0x4c')]));this[_0x8d6c('0x42')](_0x16b265[_0x8d6c('0x4c')]);}else if(this[_0x8d6c('0x9')][_0x16b265['transfererlinkedid']]){logger[_0x8d6c('0x24')](_0x8d6c('0x4d'),JSON['stringify'](_0x16b265[_0x8d6c('0x4e')]));this[_0x8d6c('0x42')](_0x16b265['transfererlinkedid']);}}catch(_0x5022fb){logger[_0x8d6c('0x32')]('[ACW][syncBlindTransfer]\x20%s',_0x5022fb['message']);}};Acw['prototype'][_0x8d6c('0x12')]=function(_0x3c23e8){try{if(this[_0x8d6c('0x6')][_0x3c23e8[_0x8d6c('0x1d')]]&&this[_0x8d6c('0x6')][_0x3c23e8['queue']][_0x8d6c('0x4f')]===_0x8d6c('0x50')){if(this[_0x8d6c('0x7')][_0x3c23e8[_0x8d6c('0x1c')]]){logger[_0x8d6c('0x24')](_0x8d6c('0x51'),_0x3c23e8[_0x8d6c('0x2d')],_0x3c23e8[_0x8d6c('0x1c')],_0x3c23e8[_0x8d6c('0x1d')]);return RpcUser[_0x8d6c('0x52')](this[_0x8d6c('0x7')][_0x3c23e8[_0x8d6c('0x1c')]],_0x8d6c('0x53'),_0x3c23e8[_0x8d6c('0x2d')]);}}}catch(_0x5c138b){logger[_0x8d6c('0x32')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x5c138b[_0x8d6c('0x35')]);}};module['exports']=Acw;
\ No newline at end of file
index 32d41aa..927a823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb3=['once','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','actionCoreShowChannels','catch','[ami.js][fullybooted]','close','exports','../../config/logger','ami','../../config/environment','asterisk','username','password','keepConnected','Action','promisify','error','format','port','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s'];(function(_0x4d99c1,_0x18f8f4){var _0x339457=function(_0x4c1872){while(--_0x4c1872){_0x4d99c1['push'](_0x4d99c1['shift']());}};_0x339457(++_0x18f8f4);}(_0xebb3,0x1e7));var _0x3ebb=function(_0x2ba230,_0x30c3e6){_0x2ba230=_0x2ba230-0x0;var _0x57fe1b=_0xebb3[_0x2ba230];return _0x57fe1b;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var util=require('util');var logger=require(_0x3ebb('0x0'))(_0x3ebb('0x1'));var config=require(_0x3ebb('0x2'));var ami=new Manager(config[_0x3ebb('0x3')]['port'],config[_0x3ebb('0x3')]['ip'],config['asterisk'][_0x3ebb('0x4')],config[_0x3ebb('0x3')][_0x3ebb('0x5')],!![]);ami[_0x3ebb('0x6')]();ami[_0x3ebb('0x7')]=BPromise[_0x3ebb('0x8')](ami['action']);function error(_0x591ed0){logger[_0x3ebb('0x9')](util[_0x3ebb('0xa')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x3ebb('0x3')][_0x3ebb('0x4')],config[_0x3ebb('0x3')]['ip'],config['asterisk'][_0x3ebb('0xb')],util[_0x3ebb('0xc')](_0x591ed0,![],null)));}function close(){logger['error'](util[_0x3ebb('0xa')](_0x3ebb('0xd'),config[_0x3ebb('0x3')][_0x3ebb('0x4')],config[_0x3ebb('0x3')]['ip'],config[_0x3ebb('0x3')][_0x3ebb('0xb')]));}ami[_0x3ebb('0xe')]=function(){return function(){return ami[_0x3ebb('0x7')]({'action':'sipshowregistry'});};};ami[_0x3ebb('0xf')]=function(){return function(){return ami[_0x3ebb('0x7')]({'action':_0x3ebb('0x10')});};};ami[_0x3ebb('0x11')]=function(){return function(){return ami[_0x3ebb('0x7')]({'action':_0x3ebb('0x12')});};};ami[_0x3ebb('0x13')]=function(){return function(){return ami['Action']({'action':_0x3ebb('0x14')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(){logger[_0x3ebb('0x15')](util[_0x3ebb('0xa')](_0x3ebb('0x16'),config[_0x3ebb('0x3')][_0x3ebb('0x4')],config[_0x3ebb('0x3')]['ip'],config[_0x3ebb('0x3')][_0x3ebb('0xb')]));ami[_0x3ebb('0x17')]('error',error);ami[_0x3ebb('0x17')]('close',close);}ami['on']('connect',connect);ami['on'](_0x3ebb('0x18'),function(_0x371d69){logger[_0x3ebb('0x15')](util[_0x3ebb('0xa')](_0x3ebb('0x19'),config[_0x3ebb('0x3')][_0x3ebb('0x4')],config['asterisk']['ip'],config['asterisk']['port'],util[_0x3ebb('0xc')](_0x371d69,![],null)));});ami['on'](_0x3ebb('0x1a'),function(){logger['info'](util[_0x3ebb('0xa')](_0x3ebb('0x1b'),config[_0x3ebb('0x3')]['username'],config[_0x3ebb('0x3')]['ip'],config[_0x3ebb('0x3')][_0x3ebb('0xb')]));return Promise['resolve']()[_0x3ebb('0x1c')](ami['actionSipShowRegistry']())['then'](ami[_0x3ebb('0xf')]())[_0x3ebb('0x1c')](ami[_0x3ebb('0x11')]())['then'](ami[_0x3ebb('0x13')]())['then'](ami[_0x3ebb('0x1d')]())[_0x3ebb('0x1e')](function(_0x292ea7){logger[_0x3ebb('0x9')](_0x3ebb('0x1f'),util['inspect'](_0x292ea7,{'showHidden':![],'depth':null}));});});ami[_0x3ebb('0x17')](_0x3ebb('0x9'),error);ami[_0x3ebb('0x17')](_0x3ebb('0x20'),close);module[_0x3ebb('0x21')]=ami;
\ No newline at end of file
+var _0xe62e=['fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','catch','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','../../config/environment','asterisk','port','username','password','keepConnected','Action','promisify','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s'];(function(_0x3a62de,_0x21a5ff){var _0x5a626f=function(_0x31c1df){while(--_0x31c1df){_0x3a62de['push'](_0x3a62de['shift']());}};_0x5a626f(++_0x21a5ff);}(_0xe62e,0xe4));var _0xee62=function(_0x498bdd,_0x470eeb){_0x498bdd=_0x498bdd-0x0;var _0x392cb7=_0xe62e[_0x498bdd];return _0x392cb7;};'use strict';var Manager=require(_0xee62('0x0'));var BPromise=require(_0xee62('0x1'));var util=require('util');var logger=require(_0xee62('0x2'))('ami');var config=require(_0xee62('0x3'));var ami=new Manager(config[_0xee62('0x4')][_0xee62('0x5')],config[_0xee62('0x4')]['ip'],config[_0xee62('0x4')][_0xee62('0x6')],config[_0xee62('0x4')][_0xee62('0x7')],!![]);ami[_0xee62('0x8')]();ami[_0xee62('0x9')]=BPromise[_0xee62('0xa')](ami['action']);function error(_0x44710c){logger['error'](util[_0xee62('0xb')](_0xee62('0xc'),config[_0xee62('0x4')]['username'],config[_0xee62('0x4')]['ip'],config['asterisk']['port'],util[_0xee62('0xd')](_0x44710c,![],null)));}function close(){logger[_0xee62('0xe')](util[_0xee62('0xb')](_0xee62('0xf'),config[_0xee62('0x4')][_0xee62('0x6')],config[_0xee62('0x4')]['ip'],config[_0xee62('0x4')][_0xee62('0x5')]));}ami[_0xee62('0x10')]=function(){return function(){return ami[_0xee62('0x9')]({'action':_0xee62('0x11')});};};ami[_0xee62('0x12')]=function(){return function(){return ami[_0xee62('0x9')]({'action':_0xee62('0x13')});};};ami[_0xee62('0x14')]=function(){return function(){return ami[_0xee62('0x9')]({'action':_0xee62('0x15')});};};ami[_0xee62('0x16')]=function(){return function(){return ami[_0xee62('0x9')]({'action':_0xee62('0x17')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0xee62('0x9')]({'action':_0xee62('0x18')});};};function connect(){logger[_0xee62('0x19')](util[_0xee62('0xb')](_0xee62('0x1a'),config[_0xee62('0x4')]['username'],config[_0xee62('0x4')]['ip'],config[_0xee62('0x4')][_0xee62('0x5')]));ami[_0xee62('0x1b')](_0xee62('0xe'),error);ami[_0xee62('0x1b')](_0xee62('0x1c'),close);}ami['on']('connect',connect);ami['on'](_0xee62('0x1d'),function(_0x49fef1){logger[_0xee62('0x19')](util[_0xee62('0xb')](_0xee62('0x1e'),config[_0xee62('0x4')][_0xee62('0x6')],config[_0xee62('0x4')]['ip'],config['asterisk'][_0xee62('0x5')],util[_0xee62('0xd')](_0x49fef1,![],null)));});ami['on'](_0xee62('0x1f'),function(){logger['info'](util[_0xee62('0xb')](_0xee62('0x20'),config[_0xee62('0x4')][_0xee62('0x6')],config[_0xee62('0x4')]['ip'],config[_0xee62('0x4')]['port']));return Promise['resolve']()[_0xee62('0x21')](ami[_0xee62('0x10')]())[_0xee62('0x21')](ami[_0xee62('0x12')]())[_0xee62('0x21')](ami[_0xee62('0x14')]())['then'](ami['actionQueueSummary']())[_0xee62('0x21')](ami['actionCoreShowChannels']())[_0xee62('0x22')](function(_0xe77e49){logger[_0xee62('0xe')](_0xee62('0x23'),util['inspect'](_0xe77e49,{'showHidden':![],'depth':null}));});});ami[_0xee62('0x1b')](_0xee62('0xe'),error);ami['once'](_0xee62('0x1c'),close);module[_0xee62('0x24')]=ami;
\ No newline at end of file
index 7003324..14f5779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x1d8907,_0x180927){var _0x154499=function(_0x256dce){while(--_0x256dce){_0x1d8907['push'](_0x1d8907['shift']());}};_0x154499(++_0x180927);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x1cc3a5,_0x59850b){_0x1cc3a5=_0x1cc3a5-0x0;var _0x4bf8b7=_0xbdb7[_0x1cc3a5];return _0x4bf8b7;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
+var _0xa9e0=['result','catch','exports','jayson/promise','bluebird','../../config/logger','http','request','debug','rpc','error','message'];(function(_0x5ca82d,_0x7d11a0){var _0x397661=function(_0x4ce955){while(--_0x4ce955){_0x5ca82d['push'](_0x5ca82d['shift']());}};_0x397661(++_0x7d11a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('ami');var client=jayson['client'][_0x0a9e('0x3')]({'port':0x2329});client['Request']=function(_0x333808,_0x432180){return new BPromise(function(_0x2ab90b,_0x991246){return client[_0x0a9e('0x4')](_0x333808,_0x432180)['then'](function(_0x219af0){logger[_0x0a9e('0x5')](_0x0a9e('0x6'),'memberReport',_0x333808,_0x432180,_0x219af0);if(_0x219af0['error']){logger[_0x0a9e('0x7')]('rpc','memberReport',_0x333808,_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')],_0x432180);return _0x991246(_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')]);}else{return _0x2ab90b(_0x219af0[_0x0a9e('0x9')]);}})[_0x0a9e('0xa')](function(_0x4a4c56){logger['error']('rpc','memberReport',_0x333808,_0x4a4c56,_0x432180);return _0x991246(_0x4a4c56);});});};module[_0x0a9e('0xb')]=client;
\ No newline at end of file
index 95fe5a3..943982c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f56=['dialAbandonedRetryFrequency','dialAbandonedMaxRetry','VoiceQueueId','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actions','channel','actionid','strategy','rrmemory','roundrobin','isNil','locked','paused','stateinterface','queueBooked','idHopper','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','length','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','getQueue','response','Success','callProgressDetecting','[callProgressDetecting]\x20','syncVarSet','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','countmachineretry','countbusyretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','Machine','countcongestionretry','createStateFinal','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','inUse','pTalking','ACTIVE','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','[syncQueueSummary]','throttle','filter','dialPreviewRecallmeReminder','online','map','user:%s','user:dialPreviewRecallReminder','clearZombieChannels','[uniqueid]','[actions]','No\x20such\x20channel','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','[emptyContact][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','handleIvr','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialAgiAfterHangupAgent','dialer','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','isOutboundQueue','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','%s%s','toUpper','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','callerid','XMD-ORIGINATECALLERIDNAME','originatecalleridname','extractCalleridName','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','dialBusyMaxRetry','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','talking','floor','erlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dialPredictiveOptimization','dropRate','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','avgHandleTime','getDataPredictive','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(','predictiveIntervalAnsweredCalls','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','loggedIn','predictiveIntervalPauses','outboundQueuePauses','erlangCallToSecond','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','recallme','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','actionOriginate','scheduledat','voicePause','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','limitCalls','temp','getContactDialerIvr','checkContactEmpty','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','checkIsBlackListIvr','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','countReScheduled','[countReScheduled]\x20','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','dialOrderByScheduledAt','checkContactLowerLimitOriginate','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','exports','util','lodash','uuid','moment','ioredis','./utils','./utils/hopper','../preview/util/util','../../../config/logger','predictive','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/voiceQueueRt','../rpc/setting','./models/action','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBookedRR','queuesSummary','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','syncOriginateResponse','agentcomplete','syncAgentComplete','syncQueueSummaryComplete','hangup','syncHangup','syncNewExten','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','emit','type','outbound','debug','inspect','format','voice:queue:%s','voice_queue:save','isEmpty','info','-----\x20Stats\x20Predictive\x20---','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','isUndefined','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','getSeconds','name','startProgressive\x20value\x20cleared','startPredictive','startPredictive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','message','CAMPAIGN_STATUS','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','NO_AVAILABLE_CONTACTS','[getContactDialer2][Empty]','state','statedesc','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','stringify','pick','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isIVRCampaignActive','INACTIVE','isIVRCampaign','campaign:ivr:%s','sendMessageOneNotActive','is\x20not\x20active','DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','[ifTime][Action]','Error','active','SIP/%s','status','reachable','unmonitored','checkIsTrunkReachable','isTrunkReachable','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','push','Action','command','iftime\x20%s,%s','interval','timezones','indexOf','true','catch','content','all','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','syncCampaigns','undefined','resolve','dialGlobalInterval','launchHandleIvr','[syncCampaigns]','checkDialMethod','dialMethod','progressive','handlePower','power','dialPowerLevel','booked','Queue','dialTimezone','silly','Dialer::ifTime()','Voice\x20Queue\x20%s\x20$s','intervalIftime','Global:\x20','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','queue','uniqueid','ivr','updateOriginated','answertime','YYYY-MM-DD\x20HH:mm:ss','reason','agent','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','countdropretry','countglobal','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','rescheduleContact','add','dialDropRetryFrequency','minutes','ContactId','ListId','CampaignId','[rescheduleContact][Drop]','calleridname','calleridnum','createHistory','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','outboundDropCallsDayCallersExit','Abandoned','countabandonedretry'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1f56,0x144));var _0x61f5=function(_0x115152,_0x36c3af){_0x115152=_0x115152-0x0;var _0x50ef84=_0x1f56[_0x115152];return _0x50ef84;};'use strict';var util=require(_0x61f5('0x0'));var _=require(_0x61f5('0x1'));var uuid=require(_0x61f5('0x2'));var moment=require(_0x61f5('0x3'));var rr=require('rr');var Redis=require(_0x61f5('0x4'));var utils=require(_0x61f5('0x5'));var hopperUtils=require(_0x61f5('0x6'));var ut=require(_0x61f5('0x7'));var config=require('../../../config/environment/');var logger=require(_0x61f5('0x8'))('dialer');var loggerBooked=require(_0x61f5('0x8'))('booked');var loggerPredictive=require(_0x61f5('0x8'))(_0x61f5('0x9'));var loggerPredictiveCalls=require(_0x61f5('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x61f5('0x8'))(_0x61f5('0xa'));var ami=require(_0x61f5('0xb'));config['redis']=_['defaults'](config[_0x61f5('0xc')],{'host':_0x61f5('0xd'),'port':0x18eb});var io=require(_0x61f5('0xe'))(new Redis(config[_0x61f5('0xc')]));var cmHopper=require(_0x61f5('0xf'));var voiceQueueRt=require(_0x61f5('0x10'));var RpcSetting=require(_0x61f5('0x11'));var Interval=require('../rpc/interval');var Action=require(_0x61f5('0x12'));var History=require(_0x61f5('0x13'));var Final=require(_0x61f5('0x14'));var AgentComplete=require(_0x61f5('0x15'));var QueueCallerAbandon=require(_0x61f5('0x16'));var Hangup=require(_0x61f5('0x17'));var ipAgi=process[_0x61f5('0x18')][_0x61f5('0x19')]||'127.0.0.1';var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x61f5('0x1a')][_0x61f5('0x1b')]=function(_0x1bdaae){this['tail']=this[_0x61f5('0x1c')]?this[_0x61f5('0x1c')][_0x61f5('0x1d')](_0x1bdaae):_0x1bdaae();};function Dialer(_0x129094,_0x2ff28e){this[_0x61f5('0x1e')]=new Sequence();this[_0x61f5('0x1f')]=_0x2ff28e;this[_0x61f5('0x20')]=_0x129094[_0x61f5('0x20')];this[_0x61f5('0x21')]=_0x129094[_0x61f5('0x21')];this[_0x61f5('0x22')]=_0x129094[_0x61f5('0x22')];this[_0x61f5('0x23')]=_0x129094[_0x61f5('0x23')];this['maxNumberOriginate']=config[_0x61f5('0x24')]||0x2;this['channels']={};this['actions']={};this[_0x61f5('0x25')]={};this[_0x61f5('0x26')]={};this[_0x61f5('0x27')]={};this['startPredictive']={};this[_0x61f5('0x28')]={};this[_0x61f5('0x29')]={};this['queueBooked']={};this[_0x61f5('0x2a')]={};this[_0x61f5('0x2b')]={};ami['on'](_0x61f5('0x2c'),this[_0x61f5('0x2d')][_0x61f5('0x2e')](this));ami['on'](_0x61f5('0x2f'),this[_0x61f5('0x30')][_0x61f5('0x2e')](this));ami['on']('originateresponse',this[_0x61f5('0x31')][_0x61f5('0x2e')](this));ami['on'](_0x61f5('0x32'),this[_0x61f5('0x33')][_0x61f5('0x2e')](this));ami['on']('custom:queuesummary',this[_0x61f5('0xa')][_0x61f5('0x2e')](this));ami['on']('custom:queuesummarycomplete',this[_0x61f5('0x34')]['bind'](this));ami['on'](_0x61f5('0x35'),this[_0x61f5('0x36')][_0x61f5('0x2e')](this));ami['on']('newexten',this[_0x61f5('0x37')]['bind'](this));ami['on']('varset',this['syncVarSet'][_0x61f5('0x2e')](this));ami['on'](_0x61f5('0x38'),this[_0x61f5('0x39')][_0x61f5('0x2e')](this));ami['on'](_0x61f5('0x3a'),this[_0x61f5('0x3b')][_0x61f5('0x2e')](this));this[_0x61f5('0x3c')]();this[_0x61f5('0x3d')]();RpcSetting[_0x61f5('0x3e')]()[_0x61f5('0x3f')](function(_0x13e7b2){previewRecallmeReminderInterval=_0x13e7b2[_0x61f5('0x40')];});}function isNotNull(_0x3666a4){return _0x3666a4!==null&&!_['isUndefined'](_0x3666a4);}function msgResponse(_0x5ab791,_0x518e18,_0x21ae9b){return{'action':_0x5ab791,'response':_0x518e18,'message':_0x21ae9b,'stack':_0x21ae9b};}function emit(_0xff3e3b,_0x4a684c,_0x5d74a0){io['to'](_0xff3e3b)[_0x61f5('0x41')](_0x4a684c,_0x5d74a0);}function emitOutboundVoiceQueueSummary(_0x2ac7b2){if(_0x2ac7b2[_0x61f5('0x42')]===_0x61f5('0x43')){logger[_0x61f5('0x44')]('[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:',util[_0x61f5('0x45')](_0x2ac7b2,{'showHidden':![],'depth':null}));emit(util[_0x61f5('0x46')](_0x61f5('0x47'),_0x2ac7b2['name']),_0x61f5('0x48'),_0x2ac7b2);}}function checkGetDataPredictive(_0x3455f4){if(isNotNull(_0x3455f4)&&!_[_0x61f5('0x49')](_0x3455f4)){loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x4b'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3455f4[_0x61f5('0x4c')]);loggerPredictive[_0x61f5('0x4a')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3455f4['predictiveIntervalAnsweredCalls']);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3455f4[_0x61f5('0x4d')]);loggerPredictive['info']('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3455f4[_0x61f5('0x4e')]);loggerPredictive['info'](_0x61f5('0x4f'),_0x3455f4[_0x61f5('0x50')]);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x51'),_0x3455f4['predictiveIntervalAvgTalktime']);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x52'));if(_0x3455f4['predictiveIntervalTotalCalls']>0x0){if(!_[_0x61f5('0x53')](_0x3455f4['predictiveIntervalAvgTalktime'])&&_0x3455f4[_0x61f5('0x54')]>0x0){return!![];}loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x55'));if(!_['isUndefined'](_0x3455f4[_0x61f5('0x50')])&&_0x3455f4['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x56'));}else{loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x57'));}}else{loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x58'));}return![];}function mergeDataErlangB(_0x889fa){return function(_0x3259a7){loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x59'));loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x5a'),_0x3259a7['erlangCalls']);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x5b'),_0x3259a7['erlangCallToSecond']);loggerPredictive[_0x61f5('0x4a')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3259a7[_0x61f5('0x5c')]);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x5d'),_0x3259a7['erlangBusyFactor']);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x5e'),_0x3259a7[_0x61f5('0x5c')]);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x52'));_[_0x61f5('0x5f')](_0x889fa,_0x3259a7);};}function ifInterval(_0x557507,_0x3db400){if(_[_0x61f5('0x53')](_0x3db400)){return![];}return utils[_0x61f5('0x60')](undefined,_0x3db400)<_0x557507*0x3c;}function clearPredictiveAttributes(_0x29e756){if(_0x29e756['startProgressive']){_0x29e756[_0x61f5('0x28')]=undefined;loggerPredictive[_0x61f5('0x44')](_0x29e756[_0x61f5('0x61')],_0x61f5('0x62'));}if(_0x29e756[_0x61f5('0x63')]){_0x29e756[_0x61f5('0x63')]=undefined;loggerPredictive[_0x61f5('0x44')](_0x29e756['name'],_0x61f5('0x64'));}if(_0x29e756[_0x61f5('0x65')]){clearInterval(_0x29e756[_0x61f5('0x65')]);_0x29e756['handlePredictive']=undefined;loggerPredictive['debug'](_0x29e756[_0x61f5('0x61')],_0x61f5('0x66'));}}function loggerCatchPredictive(_0x3dcbc6,_0x4e3a58){return function(_0x384ec9){loggerPredictive[_0x61f5('0x67')](_0x4e3a58[_0x61f5('0x61')],_0x3dcbc6);loggerPredictive[_0x61f5('0x67')](_0x384ec9[_0x61f5('0x68')]);clearPredictiveAttributes(_0x4e3a58);};}function loggerCatch(_0xc4aa62){return function(_0x2e4933){logger[_0x61f5('0x67')](_0xc4aa62,util[_0x61f5('0x45')](_0x2e4933,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x391eca,_0x9f14cd,_0xc115af){return function(_0x176852){utils['checkContactLowerLimitOriginate'](_0x9f14cd,_0xc115af,0x0);logger['error'](_0x391eca,util['inspect'](_0x176852,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5a0aab){return function(_0x5dec8f){if(isNotNull(_0x5dec8f)&&isNotNull(_0x5dec8f[0x0])){if(_0x5dec8f[0x0]['contactsRescheduled']>0x0){_0x5a0aab[_0x61f5('0x69')]=utils[_0x61f5('0x6a')]['CONTACTS_RESCHEDULED'];logger[_0x61f5('0x4a')](_0x61f5('0x6b')+_0x5a0aab[_0x61f5('0x61')],_0x5dec8f[0x0][_0x61f5('0x6c')],_0x61f5('0x6d'));}else{_0x5a0aab['message']=utils[_0x61f5('0x6a')][_0x61f5('0x6e')];logger[_0x61f5('0x4a')](_0x61f5('0x6f')+_0x5a0aab[_0x61f5('0x61')]);}}};}function createObjHistory(_0x50fcf2,_0x3ab412,_0x5d116f,_0xabd870,_0xbc5f94){_0x50fcf2[_0x61f5('0x69')]=_0x5d116f;var _0x48766c=new Action(_0x50fcf2,_0x3ab412);var _0x560198=new History(_0x48766c);_0x560198[_0x61f5('0x70')]=_0xabd870;_0x560198[_0x61f5('0x71')]=_0xbc5f94;_0x560198[_0x61f5('0x72')]=_0x48766c[_0x61f5('0x73')];return _0x560198;}function unlockQueueStatus(_0xb0c38c,_0x5a20ed){setTimeout(function(){if(_[_0x61f5('0x53')](_0xb0c38c[_0x61f5('0x74')])){loggerBooked[_0x61f5('0x67')](_0x61f5('0x75'),_0x5a20ed);}_0xb0c38c[_0x61f5('0x74')]=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x5a20ed,JSON[_0x61f5('0x76')](_[_0x61f5('0x77')](_0xb0c38c,['name',_0x61f5('0x74')])));},0x1f3);}function checkInterval(_0x3a0b14){return function(){if(!isNotNull(_0x3a0b14[_0x61f5('0x78')])){_0x3a0b14[_0x61f5('0x69')]=utils['CAMPAIGN_STATUS'][_0x61f5('0x79')];throw _0x3a0b14[_0x61f5('0x61')]+_0x61f5('0x7a');}if(!isNotNull(_0x3a0b14[_0x61f5('0x78')][_0x61f5('0x7b')])){_0x3a0b14['message']=utils[_0x61f5('0x6a')][_0x61f5('0x79')];throw _0x3a0b14[_0x61f5('0x61')]+_0x61f5('0x7a');}if(!isNotNull(_[_0x61f5('0x49')](_0x3a0b14[_0x61f5('0x78')][_0x61f5('0x7b')]))){_0x3a0b14[_0x61f5('0x69')]=utils['CAMPAIGN_STATUS']['NULL_INTERVAL'];throw _0x3a0b14[_0x61f5('0x61')]+'\x20INTERVAL_IS_NULL';}};}function checkIsIVRCampaignActive(_0xd660e7){return function(){if(!utils[_0x61f5('0x7c')](_0xd660e7)){_0xd660e7[_0x61f5('0x69')]=utils['CAMPAIGN_STATUS'][_0x61f5('0x7d')];throw _0xd660e7[_0x61f5('0x61')]+'\x20NOT\x20Active';}};}function emitCampaignSummary(_0x407670){if(utils[_0x61f5('0x7e')](_0x407670)){emit(util[_0x61f5('0x46')](_0x61f5('0x7f'),_0x407670[_0x61f5('0x61')]),'campaign:save',_0x407670);}}function loggerCatchQueueSummary(_0x19c2da,_0x26863e){return function(_0x30efce){clearPredictiveAttributes(_0x26863e);emitCampaignSummary(_0x26863e);loggerSyncQueueSummary['debug'](_0x19c2da,util[_0x61f5('0x45')](_0x30efce,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0xdf5e8e){if(_0xdf5e8e[_0x61f5('0x80')]){if(_0xdf5e8e['originated']===0x0){_0xdf5e8e['sendMessageOneNotActive']=![];_0xdf5e8e['message']=utils[_0x61f5('0x6a')][_0x61f5('0x7d')];loggerSyncQueueSummary['debug']('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0xdf5e8e[_0x61f5('0x61')],_0x61f5('0x81'));}else{_0xdf5e8e[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x82')];loggerSyncQueueSummary[_0x61f5('0x44')](_0x61f5('0x83'),_0xdf5e8e[_0x61f5('0x61')],_0x61f5('0x84'));}emitCampaignSummary(_0xdf5e8e);}}function myreject(_0x547243){return function(_0x4b6ff9){return _0x547243(msgResponse(_0x61f5('0x85'),_0x61f5('0x86'),JSON[_0x61f5('0x76')](_0x4b6ff9)));};}Dialer[_0x61f5('0x1a')]['isTrunkReachable']=function(_0x1a77ca){return!_['isUndefined'](_0x1a77ca)&&_0x1a77ca&&!_[_0x61f5('0x53')](_0x1a77ca['name'])&&!_[_0x61f5('0x53')](_0x1a77ca[_0x61f5('0x87')])&&_0x1a77ca[_0x61f5('0x87')]&&(this[_0x61f5('0x23')][util[_0x61f5('0x46')](_0x61f5('0x88'),_0x1a77ca[_0x61f5('0x61')])][_0x61f5('0x89')]===_0x61f5('0x8a')||this[_0x61f5('0x23')][util['format'](_0x61f5('0x88'),_0x1a77ca[_0x61f5('0x61')])][_0x61f5('0x89')]===_0x61f5('0x8b'));};Dialer[_0x61f5('0x1a')][_0x61f5('0x8c')]=function(_0x4d62f5){var _0x119601=this;return function(){if(!_0x119601[_0x61f5('0x8d')](_0x4d62f5[_0x61f5('0x8e')])){if(!_0x119601['isTrunkReachable'](_0x4d62f5[_0x61f5('0x8f')])){_0x4d62f5[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x90')];throw _0x4d62f5[_0x61f5('0x61')]+_0x61f5('0x91');}}};};Dialer[_0x61f5('0x1a')][_0x61f5('0x92')]=function(_0x3fe60e,_0x3f41ea,_0x25c6e5,_0x471e5c){var _0x1ba171=this;return function(){var _0x274c56=!![];return _0x1ba171[_0x61f5('0x93')](_0x3fe60e,_0x3f41ea,_0x25c6e5,_0x471e5c,_0x274c56);};};Dialer[_0x61f5('0x1a')][_0x61f5('0x94')]=function(_0x519c8e,_0xc647a8,_0x2fa23c,_0x391b2c){var _0x5e181e=this;return function(){var _0x18a1a9=![];return _0x5e181e[_0x61f5('0x93')](_0x519c8e[_0x61f5('0x7b')],_0xc647a8,_0x2fa23c,_0x391b2c,_0x18a1a9);};};Dialer[_0x61f5('0x1a')]['ifTimeIvr']=function(_0x1d08d9,_0x4a1df0,_0x16a128,_0x3364f7,_0x10ab88){var _0x6e057e=[];return new Promise(function(_0x3ed698,_0x171bad){if(!isNotNull(_0x1d08d9)){_0x3364f7[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x79')];return _0x171bad(msgResponse(_0x61f5('0x95'),_0x61f5('0x96'),_0x16a128+_0x61f5('0x97')));}if(_[_0x61f5('0x49')](_0x1d08d9)){_0x3364f7[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x98')];return _0x171bad(msgResponse('ifTime',_0x61f5('0x96'),_0x16a128+'\x20Intervals\x20is\x20empty\x20'));}if(_0x4a1df0&&_[_0x61f5('0x53')](config['timezones'][_0x4a1df0])){_0x3364f7[_0x61f5('0x69')]=utils['CAMPAIGN_STATUS'][_0x61f5('0x99')];return _0x171bad(msgResponse(_0x61f5('0x95'),'Failure',_0x16a128+_0x61f5('0x9a')+_0x4a1df0));}if(_[_0x61f5('0x9b')](_0x1d08d9)){for(var _0x1e49f2=0x0;_0x1e49f2<_0x1d08d9['length'];_0x1e49f2+=0x1){_0x6e057e[_0x61f5('0x9c')](ami[_0x61f5('0x9d')]({'action':_0x61f5('0x9e'),'command':util[_0x61f5('0x46')](_0x61f5('0x9f'),_0x1d08d9[_0x1e49f2][_0x61f5('0xa0')],!_[_0x61f5('0x53')](config[_0x61f5('0xa1')][_0x4a1df0])?_0x4a1df0:'')})[_0x61f5('0x3f')](function(_0x3e8870){return _0x3e8870['content'][_0x61f5('0xa2')](_0x61f5('0xa3'))>=0x0;})[_0x61f5('0xa4')](myreject(_0x171bad)));}}else{_0x6e057e[_0x61f5('0x9c')](ami[_0x61f5('0x9d')]({'action':_0x61f5('0x9e'),'command':util['format'](_0x61f5('0x9f'),_0x1d08d9,!_[_0x61f5('0x53')](config[_0x61f5('0xa1')][_0x4a1df0])?_0x4a1df0:'')})[_0x61f5('0x3f')](function(_0x23d5ea){return _0x23d5ea[_0x61f5('0xa5')][_0x61f5('0xa2')]('true')>=0x0;})[_0x61f5('0xa4')](myreject(_0x171bad)));}Promise[_0x61f5('0xa6')](_0x6e057e)[_0x61f5('0x3f')](function(_0x3eaf77){var _0x3ee863=_[_0x61f5('0xa7')](_0x3eaf77);if(_0x3ee863){return _0x3ed698(_0x3ee863);}else{_0x3364f7[_0x61f5('0x69')]=_0x10ab88?utils[_0x61f5('0x6a')][_0x61f5('0xa8')]:utils[_0x61f5('0x6a')][_0x61f5('0xa9')];return _0x171bad(msgResponse(_0x61f5('0xaa'),_0x61f5('0x96'),'Global:\x20'+_0x10ab88+'\x20'+_0x16a128+_0x61f5('0xab')+util['inspect'](_0x1d08d9,{'showHidden':![],'depth':null})+_0x61f5('0xac')+_0x4a1df0));}})[_0x61f5('0xa4')](function(_0xee3dbe){return _0x171bad(msgResponse(_0x61f5('0x95'),_0x61f5('0x96'),JSON['stringify'](_0xee3dbe)));});});};Dialer[_0x61f5('0x1a')][_0x61f5('0x3c')]=function(){var _0x248b06=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0x61f5('0x3f')](function(){setInterval(function(){_0x248b06['syncCampaigns']();},0x3e8);});};Dialer[_0x61f5('0x1a')][_0x61f5('0xad')]=function(){var _0x37ff51=this;var _0x2b942c;for(var _0x4540d7 in this[_0x61f5('0x21')]){if(typeof this['campaigns'][_0x4540d7]!==_0x61f5('0xae')){_0x2b942c=this['campaigns'][_0x4540d7];if(utils['isIVRCampaign'](_0x2b942c)&&utils[_0x61f5('0x7c')](_0x2b942c)){_0x2b942c[_0x61f5('0x80')]=!![];Promise[_0x61f5('0xaf')]()[_0x61f5('0x3f')](checkIsIVRCampaignActive(_0x2b942c))['then'](checkInterval(_0x2b942c))['then'](_0x37ff51['checkIsTrunkReachable'](_0x2b942c))[_0x61f5('0x3f')](_0x37ff51['checkIfTime'](_0x2b942c[_0x61f5('0xb0')],_0x2b942c['dialTimezone'],_0x2b942c['name'],_0x2b942c))[_0x61f5('0x3f')](_0x37ff51[_0x61f5('0x94')](_0x2b942c[_0x61f5('0x78')],_0x2b942c['dialTimezone'],_0x2b942c[_0x61f5('0x61')],_0x2b942c))[_0x61f5('0x3f')](_0x37ff51[_0x61f5('0xb1')](_0x2b942c))[_0x61f5('0xa4')](loggerCatchQueueSummary(_0x61f5('0xb2'),_0x2b942c));}else{notSendMessagesCampaign(_0x2b942c);}}}};Dialer[_0x61f5('0x1a')][_0x61f5('0xb3')]=function(_0x47721d){if(_0x47721d[_0x61f5('0xb4')]!==_0x61f5('0x9')){clearPredictiveAttributes(_0x47721d);}switch(_0x47721d[_0x61f5('0xb4')]){case _0x61f5('0xb5'):this[_0x61f5('0xb6')](_0x47721d,0x1);break;case _0x61f5('0xb7'):this[_0x61f5('0xb6')](_0x47721d,_0x47721d[_0x61f5('0xb8')]);break;case _0x61f5('0x9'):this[_0x61f5('0x9')](_0x47721d);break;case _0x61f5('0xb9'):this[_0x61f5('0xb6')](_0x47721d,0x1);break;default:logger[_0x61f5('0x67')](_0x61f5('0xba'),_0x47721d[_0x61f5('0x61')],'method\x20not\x20recognized');}};Dialer[_0x61f5('0x1a')][_0x61f5('0x95')]=function(_0x16658c,_0x4871e1){var _0x5b0c7b=_0x16658c[_0x61f5('0xbb')];var _0x4f1f2f=_0x4871e1?_0x16658c[_0x61f5('0xb0')]:_0x16658c[_0x61f5('0x78')][_0x61f5('0x7b')];logger[_0x61f5('0xbc')](_0x61f5('0xbd'),_0x4f1f2f,_0x5b0c7b,_0x16658c['name'],util[_0x61f5('0x46')](_0x61f5('0xbe'),_0x16658c['name'],_0x16658c['id']));var _0x262e7e=null;return Interval[_0x61f5('0xbf')](_0x4f1f2f,_0x5b0c7b)['then'](function(_0x3d1fc5){if(_0x3d1fc5===!![]){return _0x3d1fc5;}else{_0x16658c['message']=_0x4871e1?utils[_0x61f5('0x6a')][_0x61f5('0xa8')]:utils[_0x61f5('0x6a')][_0x61f5('0xa9')];_0x262e7e=msgResponse(_0x61f5('0xaa'),'Failure',_0x61f5('0xc0')+_0x4871e1+'\x20'+_0x16658c['name']+'\x20Interval\x20is\x20overtime:\x20'+util[_0x61f5('0x45')](_0x4f1f2f,{'showHidden':![],'depth':null})+_0x61f5('0xac')+_0x5b0c7b);}if(_0x262e7e!==null){logger['silly'](_0x61f5('0xc1'),_0x262e7e);_0x262e7e[_0x61f5('0xc2')]=_0x4871e1;throw _0x262e7e;}})[_0x61f5('0xa4')](function(_0x37755b){logger[_0x61f5('0x67')](_0x61f5('0xc3'),_0x37755b);throw msgResponse(_0x61f5('0x85'),_0x61f5('0x86'),util['inspect'](_0x37755b,{'showHidden':![],'depth':null}));});};Dialer[_0x61f5('0x1a')][_0x61f5('0x2d')]=function(_0x41f0e1){if(this[_0x61f5('0x20')][_0x41f0e1[_0x61f5('0xc4')]]){if(this[_0x61f5('0x26')][_0x41f0e1[_0x61f5('0xc5')]]&&this['uniqueId'][_0x41f0e1[_0x61f5('0xc5')]][_0x61f5('0x42')]!==_0x61f5('0xc6')){this[_0x61f5('0xc7')](this[_0x61f5('0x20')][_0x41f0e1['queue']]);this[_0x61f5('0x26')][_0x41f0e1['uniqueid']][_0x61f5('0xc8')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));}}};Dialer[_0x61f5('0x1a')][_0x61f5('0x33')]=function(_0x470edd){var _0x2b0a4f=this['uniqueId'][_0x470edd[_0x61f5('0xc5')]];if(this[_0x61f5('0x20')][_0x470edd[_0x61f5('0xc4')]]){if(_0x2b0a4f&&_0x2b0a4f[_0x61f5('0x42')]!==_0x61f5('0xc6')){delete this[_0x61f5('0x26')][_0x470edd[_0x61f5('0xc5')]];this[_0x61f5('0x20')][_0x470edd[_0x61f5('0xc4')]]['outboundAnswerCallsDay']+=0x1;var _0x54223b=new AgentComplete(_0x2b0a4f,_0x470edd);if(_0x470edd[_0x61f5('0xca')]===_0x61f5('0xcb')){_0x54223b[_0x61f5('0xcc')]=this[_0x61f5('0x20')][_0x470edd[_0x61f5('0xc4')]][_0x61f5('0xcd')]&&this[_0x61f5('0x20')][_0x470edd[_0x61f5('0xc4')]]['dialAgiAfterHangupAgent']?moment()[_0x61f5('0x46')](_0x61f5('0xc9')):undefined;}hopperUtils['createHistory'](_0x54223b)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xce')));hopperUtils[_0x61f5('0xcf')](_0x54223b)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xd0')));}}};Dialer['prototype'][_0x61f5('0x30')]=function(_0x647a7c){var _0x549964=this[_0x61f5('0x26')][_0x647a7c['uniqueid']];var _0x255e16=this;var _0x25598c=![];var _0x79d1a5;var _0x22d500;if(this['voiceQueues'][_0x647a7c[_0x61f5('0xc4')]]){if(_0x549964&&_0x549964[_0x61f5('0x42')]!=='ivr'){delete this['uniqueId'][_0x647a7c[_0x61f5('0xc5')]];this['updateOriginated'](this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]]);_0x549964[_0x61f5('0xd1')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));var _0x328f27=new QueueCallerAbandon(_0x549964,_0x647a7c);if(utils[_0x61f5('0x60')](_0x549964['droptime'],_0x549964[_0x61f5('0xd2')])>=_0x549964[_0x61f5('0xd3')]){this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0x4d')]+=0x1;this['voiceQueues'][_0x647a7c['queue']][_0x61f5('0xd4')]+=0x1;this[_0x61f5('0x20')][_0x647a7c['queue']][_0x61f5('0xd5')]+=0x1;_0x328f27[_0x61f5('0x70')]=0xa;_0x328f27[_0x61f5('0x71')]=_0x61f5('0xd6');_0x328f27[_0x61f5('0xd7')]=_0x61f5('0xd8');_0x328f27[_0x61f5('0xcc')]=this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xcd')]?moment()[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x328f27[_0x61f5('0xd9')]+=0x1;_0x328f27[_0x61f5('0xda')]+=0x1;_0x79d1a5=this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]]['dialDropRetryFrequency'];_0x22d500=this[_0x61f5('0x20')][_0x647a7c['queue']][_0x61f5('0xdb')];hopperUtils[_0x61f5('0xdc')](_0x328f27,_0x328f27[_0x61f5('0x70')],_0x549964[_0x61f5('0xdd')])[_0x61f5('0x3f')](function(_0xda134f){_0x25598c=_0xda134f[_0x61f5('0xde')]==0x1;if(_0x328f27['countdropretry']>=_0x255e16[_0x61f5('0x20')][_0x647a7c['queue']][_0x61f5('0xdf')]){_0x255e16[_0x61f5('0xe0')](_0x328f27,_0xda134f['additional']);}else{hopperUtils[_0x61f5('0xe1')]({'active':![],'countdropretry':_0x328f27['countdropretry'],'scheduledat':moment()[_0x61f5('0xe2')](_0x255e16[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xe3')],_0x61f5('0xe4'))[_0x61f5('0x46')](_0x61f5('0xc9')),'ContactId':_0x549964[_0x61f5('0xe5')],'ListId':_0x549964[_0x61f5('0xe6')],'VoiceQueueId':_0x549964['VoiceQueueId']||undefined,'CampaignId':_0x549964[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xe8')));var _0x2342f5=new History(_0x328f27);_0x2342f5[_0x61f5('0x70')]=0xa;_0x2342f5[_0x61f5('0x71')]='Drop';_0x2342f5[_0x61f5('0x73')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));_0x2342f5[_0x61f5('0x72')]=_0x2342f5[_0x61f5('0x73')];_0x2342f5['calleridname']=_0x328f27[_0x61f5('0xe9')];_0x2342f5[_0x61f5('0xea')]=_0x328f27[_0x61f5('0xea')];hopperUtils[_0x61f5('0xeb')](_0x2342f5)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xec')));}})[_0x61f5('0x3f')](function(){if(_0x25598c)hopperUtils[_0x61f5('0xed')](_0x328f27,_0x79d1a5,_0x22d500)['then'](function(){return 0x1;});});}else{this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xee')]+=0x1;_0x328f27[_0x61f5('0x70')]=0xb;_0x328f27[_0x61f5('0x71')]=_0x61f5('0xef');_0x328f27[_0x61f5('0xd7')]='CALLEREXIT';_0x328f27[_0x61f5('0xf0')]+=0x1;_0x328f27[_0x61f5('0xda')]+=0x1;_0x79d1a5=this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xf1')];_0x22d500=this[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0x61f5('0xdc')](_0x328f27,_0x328f27['state'],_0x549964['voiceQueue'])[_0x61f5('0x3f')](function(_0x558ab8){if(_0x328f27[_0x61f5('0xf0')]>=_0x255e16[_0x61f5('0x20')][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xf2')]){_0x255e16[_0x61f5('0xe0')](_0x328f27,_0x558ab8[_0x61f5('0xde')]);}else{hopperUtils[_0x61f5('0xe1')]({'active':![],'countabandonedretry':_0x328f27['countabandonedretry'],'scheduledat':moment()['add'](_0x255e16['voiceQueues'][_0x647a7c[_0x61f5('0xc4')]][_0x61f5('0xf1')],_0x61f5('0xe4'))[_0x61f5('0x46')](_0x61f5('0xc9')),'ContactId':_0x549964['ContactId'],'ListId':_0x549964[_0x61f5('0xe6')],'VoiceQueueId':_0x549964[_0x61f5('0xf3')]||undefined,'CampaignId':_0x549964[_0x61f5('0xe7')]||undefined})['catch'](loggerCatch(_0x61f5('0xf4')));var _0x2d8b8f=new History(_0x328f27);_0x2d8b8f[_0x61f5('0x70')]=0xb;_0x2d8b8f['statedesc']=_0x61f5('0xef');_0x2d8b8f[_0x61f5('0x73')]=moment()[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss');_0x2d8b8f['endtime']=_0x2d8b8f[_0x61f5('0x73')];_0x2d8b8f['calleridname']=_0x328f27[_0x61f5('0xe9')];_0x2d8b8f['calleridnum']=_0x328f27['calleridnum'];hopperUtils[_0x61f5('0xeb')](_0x2d8b8f)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xf5')));}})[_0x61f5('0x3f')](function(){if(_0x25598c)hopperUtils[_0x61f5('0xed')](_0x328f27,_0x79d1a5,_0x22d500)['then'](function(){return 0x1;});});}}}};Dialer[_0x61f5('0x1a')]['syncNewExten']=function(_0x1a32ee){if(this[_0x61f5('0xf6')][_0x1a32ee[_0x61f5('0xc5')]]){this['actions'][_0x1a32ee[_0x61f5('0xc5')]][_0x61f5('0xf7')]=_0x1a32ee[_0x61f5('0xf7')];}if(this[_0x61f5('0x26')][_0x1a32ee[_0x61f5('0xc5')]]){this[_0x61f5('0x26')][_0x1a32ee[_0x61f5('0xc5')]][_0x61f5('0xf7')]=_0x1a32ee['channel'];}};Dialer[_0x61f5('0x1a')][_0x61f5('0x39')]=function(_0x35c50b){if(!this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]]){return;}var _0x39c690=this[_0x61f5('0x20')][this['actions'][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xc4')]][_0x61f5('0xf9')]||_0x61f5('0xfa');if(_0x39c690===_0x61f5('0xfb')){if(this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]]&&_[_0x61f5('0xfc')](this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xfd')])&&_0x35c50b[_0x61f5('0x89')]==='1'&&_0x35c50b[_0x61f5('0xfe')]==='0'){if(this[_0x61f5('0x22')][_0x35c50b['stateinterface']]){if(!this[_0x61f5('0x22')][_0x35c50b[_0x61f5('0xff')]][_0x61f5('0xfd')]){this[_0x61f5('0x22')][_0x35c50b[_0x61f5('0xff')]][_0x61f5('0xfd')]=!![];this[_0x61f5('0xf6')][_0x35c50b['actionid']][_0x61f5('0xfd')]=!![];this['actions'][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xff')]=_0x35c50b[_0x61f5('0xff')];}}}}else if(_0x39c690===_0x61f5('0xfa')){if(this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]]){if(this[_0x61f5('0x22')][_0x35c50b[_0x61f5('0xff')]]){this['actions'][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xff')]=_0x35c50b['stateinterface'];if(_['isNil'](this['queueBooked'][this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xc4')]])){this['queueBooked'][this['actions'][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xc4')]]=[];}this[_0x61f5('0x100')][this[_0x61f5('0xf6')][_0x35c50b[_0x61f5('0xf8')]][_0x61f5('0xc4')]][_0x61f5('0x9c')](_[_0x61f5('0x5f')](_['pick'](this[_0x61f5('0xf6')][_0x35c50b['actionid']],[_0x61f5('0x101'),_0x61f5('0xff')]),{'status':_0x35c50b[_0x61f5('0x89')],'paused':_0x35c50b[_0x61f5('0xfe')]}));}}}};Dialer[_0x61f5('0x1a')][_0x61f5('0x3b')]=function(_0x3607f4){if(!this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]){return;}var _0xe49d1c=this;var _0x40fc94=this[_0x61f5('0x20')][this['actions'][_0x3607f4['actionid']][_0x61f5('0xc4')]];var _0x2f091d=_0x40fc94['strategy']||_0x61f5('0xfa');if(_0x2f091d===_0x61f5('0xfb')){if(this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]&&this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['stateinterface']){this[_0x61f5('0x1f')][_0x61f5('0x102')](this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['idHopper'],this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xff')])[_0x61f5('0xa4')](function(_0x2dd4ce){logger[_0x61f5('0x67')](_0x61f5('0x103'),util[_0x61f5('0x45')](_0x2dd4ce,{'showHidden':![],'depth':null}));})[_0x61f5('0x1d')](function(){_0xe49d1c[_0x61f5('0xc7')](_0xe49d1c['voiceQueues'][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xc4')]]);_0xe49d1c[_0x61f5('0x22')][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xff')]]['locked']=![];delete _0xe49d1c[_0x61f5('0xf6')][_0x3607f4['actionid']];unlockQueueStatus(_0x40fc94);});}else{this['updateOriginated'](this[_0x61f5('0x20')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe5')],'ListId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe6')],'VoiceQueueId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe7')]||undefined})['catch'](loggerCatch(_0x61f5('0x104')));delete this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]];unlockQueueStatus(_0x40fc94);}}else if(_0x2f091d===_0x61f5('0xfa')){var _0x3e1cd7;if(this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]&&!_['isEmpty'](this[_0x61f5('0x100')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]])){if(this[_0x61f5('0x2a')][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xc4')]]){this[_0x61f5('0x2a')][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]=this[_0x61f5('0x2a')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]?this[_0x61f5('0x2a')][this[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xc4')]]:this['queueBooked'][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['queue']]?this[_0x61f5('0x100')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]['_rr']||0x0:0x0;}this[_0x61f5('0x100')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]['_rr']=this[_0x61f5('0x2a')][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]];for(var _0x273e02=0x0;_0x273e02<this['queueBooked'][this['actions'][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]][_0x61f5('0x105')];_0x273e02+=0x1){_0x3e1cd7=rr(this['queueBooked'][this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]);this[_0x61f5('0x2a')][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['queue']]=this[_0x61f5('0x100')][this[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xc4')]][_0x61f5('0x106')];if(_0x3e1cd7[_0x61f5('0x89')]==='1'&&_0x3e1cd7[_0x61f5('0xfe')]==='0'){break;}}if(!_[_0x61f5('0xfc')](_0x3e1cd7)){this[_0x61f5('0x22')][_0x3e1cd7[_0x61f5('0xff')]][_0x61f5('0x107')]=_['isUndefined'](this[_0x61f5('0x22')][_0x3e1cd7[_0x61f5('0xff')]]['unlockRR'])?!![]:this[_0x61f5('0x22')][_0x3e1cd7['stateinterface']][_0x61f5('0x107')];}loggerBooked['info'](_0x61f5('0x108'),_0x3607f4[_0x61f5('0xf8')],'Agent:\x20',JSON['stringify'](_['pick'](this[_0x61f5('0x22')][_0x3e1cd7['stateinterface']],['name',_0x61f5('0x107')])),_0x61f5('0x109'),JSON[_0x61f5('0x76')](_0x3e1cd7['idHopper']));if(!_[_0x61f5('0xfc')](_0x3e1cd7)&&_0x3e1cd7[_0x61f5('0x89')]==='1'&&_0x3e1cd7['paused']==='0'&&this[_0x61f5('0x22')][_0x3e1cd7[_0x61f5('0xff')]][_0x61f5('0x107')]){this[_0x61f5('0x22')][_0x3e1cd7[_0x61f5('0xff')]][_0x61f5('0x107')]=![];this['queueBooked'][_0xe49d1c[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['queue']]=[];this[_0x61f5('0x1f')][_0x61f5('0x102')](_0x3e1cd7[_0x61f5('0x101')],_0x3e1cd7['stateinterface'])[_0x61f5('0xa4')](function(_0x1ab553){logger[_0x61f5('0x67')](_0x61f5('0x103'),util[_0x61f5('0x45')](_0x1ab553,{'showHidden':![],'depth':null}));})[_0x61f5('0x1d')](function(){_0xe49d1c['updateOriginated'](_0xe49d1c[_0x61f5('0x20')][_0xe49d1c['actions'][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xc4')]]);setTimeout(function(){_0xe49d1c[_0x61f5('0x22')][_0x3e1cd7['stateinterface']][_0x61f5('0x107')]=!![];loggerBooked[_0x61f5('0x4a')]('[booked][RR][finaly]',_0x3607f4['actionid'],'Agent:\x20',JSON[_0x61f5('0x76')](_[_0x61f5('0x77')](_0xe49d1c[_0x61f5('0x22')][_0x3e1cd7[_0x61f5('0xff')]],[_0x61f5('0x61'),'unlockRR'])),_0x61f5('0x109'),JSON[_0x61f5('0x76')](_0x3e1cd7[_0x61f5('0x101')]));},0xc7);delete _0xe49d1c[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]];unlockQueueStatus(_0x40fc94,_0x3607f4[_0x61f5('0xf8')]);});}else{loggerBooked[_0x61f5('0x4a')](_0x61f5('0x10a'));this[_0x61f5('0xc7')](this['voiceQueues'][this['actions'][_0x3607f4['actionid']][_0x61f5('0xc4')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe5')],'ListId':this['actions'][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe6')],'VoiceQueueId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x61f5('0xf6')][_0x3607f4['actionid']]['CampaignId']||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x104')));delete this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]];unlockQueueStatus(_0x40fc94);}}else{loggerBooked[_0x61f5('0x4a')](_0x61f5('0x10b'));this[_0x61f5('0xc7')](this[_0x61f5('0x20')][this['actions'][_0x3607f4[_0x61f5('0xf8')]]['queue']]);hopperUtils[_0x61f5('0xe1')]({'active':![],'ContactId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe5')],'ListId':this['actions'][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe6')],'VoiceQueueId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xf3')]||undefined,'CampaignId':this['actions'][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x10c')));delete this['actions'][_0x3607f4[_0x61f5('0xf8')]];unlockQueueStatus(_0x40fc94);}}else{loggerBooked['info']('[booked][unlock3]');this[_0x61f5('0xc7')](this[_0x61f5('0x20')][this[_0x61f5('0xf6')][_0x3607f4['actionid']]['queue']]);hopperUtils[_0x61f5('0xe1')]({'active':![],'ContactId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe5')],'ListId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe6')],'VoiceQueueId':this[_0x61f5('0xf6')][_0x3607f4['actionid']][_0x61f5('0xf3')]||undefined,'CampaignId':this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]][_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x10d')));delete this[_0x61f5('0xf6')][_0x3607f4[_0x61f5('0xf8')]];unlockQueueStatus(_0x40fc94);}};Dialer[_0x61f5('0x1a')][_0x61f5('0x31')]=function(_0x45ca0b){var _0x59539d=this[_0x61f5('0xf6')][_0x45ca0b[_0x61f5('0xf8')]];if(_0x59539d){delete this[_0x61f5('0xf6')][_0x45ca0b[_0x61f5('0xf8')]];_0x59539d[_0x61f5('0xd2')]=moment()[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5ca415=_0x59539d['type']===_0x61f5('0xc6')?this[_0x61f5('0x21')][_0x59539d[_0x61f5('0xc4')]]:this[_0x61f5('0x20')][_0x59539d[_0x61f5('0x10e')]()];if(_0x45ca0b[_0x61f5('0x10f')]!==_0x61f5('0x110')){this['updateOriginated'](_0x5ca415);return this[_0x61f5('0x111')](_0x59539d,_0x5ca415,_0x45ca0b)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x112')));}this[_0x61f5('0x26')][_0x45ca0b['uniqueid']]=_0x59539d;}};Dialer[_0x61f5('0x1a')][_0x61f5('0x113')]=function(_0x265a15){var _0x5a9746=this;var _0x127914=this['uniqueId'][_0x265a15['uniqueid']];var _0x30dc2f;if(!_[_0x61f5('0xfc')](_0x265a15)&&!_[_0x61f5('0xfc')](_0x265a15[_0x61f5('0x114')])&&!_[_0x61f5('0xfc')](_0x265a15[_0x61f5('0x114')][_0x61f5('0x115')])&&_0x265a15[_0x61f5('0x116')]===_0x61f5('0x117')&&_0x127914){if(_0x127914['type']!==_0x61f5('0xc6')&&this[_0x61f5('0x20')][_0x127914['queue']][_0x61f5('0x118')]&&_0x265a15[_0x61f5('0x119')]===_0x61f5('0x11a')){delete this[_0x61f5('0x26')][_0x265a15['uniqueid']];this[_0x61f5('0xc7')](this[_0x61f5('0x20')][_0x127914['queue']]);this[_0x61f5('0x20')][_0x127914[_0x61f5('0xc4')]][_0x61f5('0x11b')]+=0x1;this[_0x61f5('0x20')][_0x127914[_0x61f5('0xc4')]][_0x61f5('0x11c')]+=0x1;_0x30dc2f=new Hangup(_0x127914,_0x265a15);_0x30dc2f['state']=0x12;_0x30dc2f[_0x61f5('0x71')]=_0x61f5('0x11d');_0x30dc2f[_0x61f5('0x11e')]=_0x61f5('0x11f');ami['emit'](_0x61f5('0x120'),ut[_0x61f5('0x121')](_0x30dc2f,_0x61f5('0x122')));this['saveInDb'](_0x30dc2f,_0x61f5('0x123'),_0x61f5('0x124'));}if(_0x127914['type']!==_0x61f5('0xc6')&&this[_0x61f5('0x20')][_0x127914['queue']]['dialAMDActive']&&_0x265a15[_0x61f5('0x119')]===_0x61f5('0x125')){return new Promise(function(_0x63aad0,_0x85329){delete _0x5a9746[_0x61f5('0x26')][_0x265a15[_0x61f5('0xc5')]];_0x5a9746[_0x61f5('0xc7')](_0x5a9746['voiceQueues'][_0x127914[_0x61f5('0xc4')]]);_0x5a9746[_0x61f5('0x20')][_0x127914['queue']][_0x61f5('0x11b')]+=0x1;_0x5a9746[_0x61f5('0x20')][_0x127914[_0x61f5('0xc4')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x2f7013=_0x5a9746[_0x61f5('0x20')][_0x127914[_0x61f5('0xc4')]];var _0x4906d7=new Hangup(_0x127914,_0x265a15);_0x4906d7[_0x61f5('0x70')]=0x13;_0x4906d7[_0x61f5('0x71')]='Machine';_0x4906d7['membername']=_0x61f5('0x11f');_0x4906d7[_0x61f5('0x126')]+=0x1;_0x4906d7['countglobal']+=0x1;_0x4906d7['amd']=!![];ami[_0x61f5('0x41')](_0x61f5('0x120'),ut['buildObj'](_0x4906d7,_0x61f5('0x122')));hopperUtils[_0x61f5('0xeb')](_0x4906d7)[_0x61f5('0xa4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x4906d7[_0x61f5('0x127')]+_0x4906d7['countcongestionretry']+_0x4906d7[_0x61f5('0x128')]+_0x4906d7[_0x61f5('0x129')]+_0x4906d7[_0x61f5('0xd9')]+_0x4906d7[_0x61f5('0xf0')]+_0x4906d7['countmachineretry']+_0x4906d7[_0x61f5('0x12a')]>=_0x2f7013[_0x61f5('0x12b')]){_0x5a9746[_0x61f5('0x12c')](_0x4906d7,_0x63aad0,_0x85329,_0x61f5('0x12d'));}else{if(_0x4906d7['countmachineretry']>=_0x2f7013[_0x61f5('0x12e')]){_0x5a9746['createStateFinal'](_0x4906d7,_0x63aad0,_0x85329,_0x61f5('0x12f'));}else{hopperUtils['rescheduleContact']({'active':![],'countmachineretry':_0x4906d7[_0x61f5('0x126')],'scheduledat':moment()[_0x61f5('0xe2')](_0x2f7013[_0x61f5('0x130')],'minutes')[_0x61f5('0x46')](_0x61f5('0xc9')),'ContactId':_0x4906d7[_0x61f5('0xe5')],'ListId':_0x4906d7[_0x61f5('0xe6')],'VoiceQueueId':_0x4906d7[_0x61f5('0xf3')]||undefined,'CampaignId':_0x4906d7['CampaignId']||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x131')));_0x63aad0({'reschedule':0x1});}}});}if(_0x127914['type']===_0x61f5('0xc6')&&this[_0x61f5('0x21')][_0x127914['queue']]['dialAMDActive']&&_0x265a15[_0x61f5('0x119')]===_0x61f5('0x11a')){delete this['uniqueId'][_0x265a15[_0x61f5('0xc5')]];this[_0x61f5('0xc7')](this['campaigns'][_0x127914[_0x61f5('0xc4')]]);_0x30dc2f=new Hangup(_0x127914,_0x265a15);_0x30dc2f[_0x61f5('0x70')]=0x12;_0x30dc2f[_0x61f5('0x71')]=_0x61f5('0x11d');_0x30dc2f['membername']=_0x61f5('0x11f');ami[_0x61f5('0x41')]('custom:amd',ut['buildObj'](_0x30dc2f,_0x61f5('0x122')));this['saveInDb'](_0x30dc2f,_0x61f5('0x132'),_0x61f5('0x133'));}if(_0x127914['type']==='ivr'&&this[_0x61f5('0x21')][_0x127914[_0x61f5('0xc4')]][_0x61f5('0x118')]&&_0x265a15['value']==='MACHINE'){return new Promise(function(_0x42d1fe,_0x1fa8a2){delete _0x5a9746[_0x61f5('0x26')][_0x265a15[_0x61f5('0xc5')]];_0x5a9746[_0x61f5('0xc7')](_0x5a9746['campaigns'][_0x127914['queue']]);_0x5a9746['campaigns'][_0x127914['queue']][_0x61f5('0x11b')]+=0x1;_0x5a9746['campaigns'][_0x127914[_0x61f5('0xc4')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x47a597=_0x5a9746[_0x61f5('0x21')][_0x127914[_0x61f5('0xc4')]];var _0x3ed4b3=new Hangup(_0x127914,_0x265a15);_0x3ed4b3[_0x61f5('0x70')]=0x13;_0x3ed4b3[_0x61f5('0x71')]=_0x61f5('0x134');_0x3ed4b3['membername']=_0x61f5('0x11f');_0x3ed4b3[_0x61f5('0x126')]+=0x1;_0x3ed4b3[_0x61f5('0xda')]+=0x1;_0x3ed4b3[_0x61f5('0x122')]=!![];ami[_0x61f5('0x41')](_0x61f5('0x120'),ut[_0x61f5('0x121')](_0x3ed4b3,_0x61f5('0x122')));hopperUtils[_0x61f5('0xeb')](_0x3ed4b3)[_0x61f5('0xa4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x3ed4b3[_0x61f5('0x127')]+_0x3ed4b3[_0x61f5('0x135')]+_0x3ed4b3[_0x61f5('0x128')]+_0x3ed4b3['countnosuchnumberretry']+_0x3ed4b3['countdropretry']+_0x3ed4b3[_0x61f5('0xf0')]+_0x3ed4b3[_0x61f5('0x126')]+_0x3ed4b3[_0x61f5('0x12a')]>=_0x47a597[_0x61f5('0x12b')]){_0x5a9746[_0x61f5('0x12c')](_0x3ed4b3,_0x42d1fe,_0x1fa8a2,_0x61f5('0x12d'));}else{if(_0x3ed4b3['countmachineretry']>=_0x47a597[_0x61f5('0x12e')]){_0x5a9746[_0x61f5('0x136')](_0x3ed4b3,_0x42d1fe,_0x1fa8a2,_0x61f5('0x12f'));}else{hopperUtils[_0x61f5('0xe1')]({'active':![],'countmachineretry':_0x3ed4b3['countmachineretry'],'scheduledat':moment()[_0x61f5('0xe2')](_0x47a597[_0x61f5('0x130')],_0x61f5('0xe4'))[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3ed4b3['ContactId'],'ListId':_0x3ed4b3['ListId'],'VoiceQueueId':_0x3ed4b3[_0x61f5('0xf3')]||undefined,'CampaignId':_0x3ed4b3[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch('[rescheduleContact][Machine]'));_0x42d1fe({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0x5835c4){var _0x719d0b=this[_0x61f5('0x26')][_0x5835c4['uniqueid']];var _0x366c1a;if(_0x719d0b&&_0x719d0b['type']===_0x61f5('0xc6')){delete this[_0x61f5('0x26')][_0x5835c4[_0x61f5('0xc5')]];this['updateOriginated'](this[_0x61f5('0x21')][_0x719d0b[_0x61f5('0xc4')]]);this['campaigns'][_0x719d0b[_0x61f5('0xc4')]][_0x61f5('0x137')]+=0x1;_0x366c1a=new Hangup(_0x719d0b,_0x5835c4);hopperUtils['createHistory'](_0x366c1a)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x138')));hopperUtils['moveContactManagedDialer'](_0x366c1a)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x139')));}if(_0x719d0b&&_0x719d0b[_0x61f5('0x42')]!==_0x61f5('0xc6')&&isNotNull(this['voiceQueues'][_0x719d0b['queue']][_0x61f5('0x13a')])){delete this[_0x61f5('0x26')][_0x5835c4[_0x61f5('0xc5')]];this[_0x61f5('0xc7')](this[_0x61f5('0x20')][_0x719d0b[_0x61f5('0xc4')]]);this[_0x61f5('0x20')][_0x719d0b['queue']][_0x61f5('0x11b')]+=0x1;this[_0x61f5('0x20')][_0x719d0b[_0x61f5('0xc4')]][_0x61f5('0x11c')]+=0x1;_0x366c1a=new Hangup(_0x719d0b,_0x5835c4);_0x366c1a[_0x61f5('0x70')]=0x10;_0x366c1a[_0x61f5('0x71')]=_0x61f5('0x13b');_0x366c1a[_0x61f5('0x11e')]=_0x61f5('0x13c');hopperUtils[_0x61f5('0xeb')](_0x366c1a)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x138')));hopperUtils[_0x61f5('0xcf')](_0x366c1a)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x139')));}if(_0x719d0b&&_0x719d0b[_0x61f5('0x42')]!=='ivr'&&!isNotNull(this[_0x61f5('0x20')][_0x719d0b[_0x61f5('0xc4')]][_0x61f5('0x13a')])){delete this[_0x61f5('0x26')][_0x5835c4[_0x61f5('0xc5')]];this[_0x61f5('0xc7')](this[_0x61f5('0x20')][_0x719d0b[_0x61f5('0xc4')]]);this[_0x61f5('0x20')][_0x719d0b[_0x61f5('0xc4')]]['outboundUnknownCallsDay']+=0x1;_0x366c1a=new Hangup(_0x719d0b,_0x5835c4);_0x366c1a[_0x61f5('0x70')]=0xc;_0x366c1a[_0x61f5('0x71')]=_0x5835c4[_0x61f5('0x13d')];_0x366c1a['membername']=_0x61f5('0x13e');hopperUtils[_0x61f5('0xeb')](_0x366c1a)[_0x61f5('0xa4')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0x61f5('0xcf')](_0x366c1a)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype'][_0x61f5('0xa')]=function(_0x1f102d){var _0x6ff5db=this;if(!_0x6ff5db[_0x61f5('0x2b')][_0x1f102d[_0x61f5('0x61')]]){_0x6ff5db[_0x61f5('0x2b')][_0x1f102d[_0x61f5('0x61')]]={'running':![]};}else if(_0x6ff5db[_0x61f5('0x2b')][_0x1f102d[_0x61f5('0x61')]]['running']===!![]){return;}else if(_0x6ff5db['queuesSummary'][_0x1f102d['name']][_0x61f5('0x13f')]===![]){_0x6ff5db[_0x61f5('0x2b')][_0x1f102d[_0x61f5('0x61')]][_0x61f5('0x13f')]=!![];}var _0x204f81=_0x6ff5db[_0x61f5('0x20')][_0x1f102d[_0x61f5('0x61')]];var _0x53c4b5=_0x204f81[_0x61f5('0x69')]!==utils[_0x61f5('0x6a')][_0x61f5('0x7d')];var _0x54e4b9=utils[_0x61f5('0x140')](_0x204f81);_0x204f81[_0x61f5('0x141')]=utils[_0x61f5('0x142')](_0x204f81,_0x6ff5db[_0x61f5('0x23')]);Promise['resolve']()[_0x61f5('0x3f')](function(){if(_0x204f81[_0x61f5('0x141')]===utils['CAMPAIGN_STATUS'][_0x61f5('0x7d')]){if(_0x53c4b5){clearPredictiveAttributes(_0x204f81);_0x1f102d[_0x61f5('0x63')]=undefined;_0x1f102d[_0x61f5('0x28')]=undefined;}if(_0x204f81[_0x61f5('0x141')]===utils['CAMPAIGN_STATUS'][_0x61f5('0x7d')]){_0x1f102d[_0x61f5('0x143')]=0x0;_0x1f102d['paused']=0x0;_0x1f102d[_0x61f5('0x144')]=0x0;_0x1f102d['talking']=0x0;_0x1f102d[_0x61f5('0x145')]=0x0;}}else if(_0x204f81[_0x61f5('0x141')]===utils[_0x61f5('0x6a')][_0x61f5('0x146')]&&!_0x54e4b9){return _0x6ff5db[_0x61f5('0x95')](_0x204f81,!![])['then'](function(){return _0x6ff5db[_0x61f5('0x95')](_0x204f81,![]);})[_0x61f5('0x3f')](function(){return _0x6ff5db['checkDialMethod'](_0x204f81);})[_0x61f5('0xa4')](function(_0x43de3b){loggerSyncQueueSummary[_0x61f5('0x44')]('[syncQueueSummary]',util[_0x61f5('0x45')](_0x43de3b,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x204f81);});}else{clearPredictiveAttributes(_0x204f81);}})[_0x61f5('0x3f')](function(){var _0x2af388=_0x1f102d[_0x61f5('0x147')](_0x204f81);if(_0x2af388||_0x204f81[_0x61f5('0x148')]){_0x204f81[_0x61f5('0x148')]=![];_0x1f102d[_0x61f5('0x149')](_0x204f81);Object[_0x61f5('0x14a')](_0x204f81,_0x1f102d);emitOutboundVoiceQueueSummary(_0x1f102d);}_0x6ff5db['queuesSummary'][_0x204f81[_0x61f5('0x61')]][_0x61f5('0x13f')]=![];})[_0x61f5('0xa4')](function(_0x1efb80){logger[_0x61f5('0x67')](_0x61f5('0x14b'),util[_0x61f5('0x45')](_0x1efb80,{'showHidden':![],'depth':null}));_0x6ff5db[_0x61f5('0x2b')][_0x204f81['name']][_0x61f5('0x13f')]=![];});};Dialer['prototype'][_0x61f5('0x34')]=_[_0x61f5('0x14c')](function(){var _0xf8622=_[_0x61f5('0x14d')](this[_0x61f5('0x20')],function(_0x500854){return _0x500854[_0x61f5('0x14e')];});var _0x4e2dd9=_[_0x61f5('0x14d')](this[_0x61f5('0x22')],function(_0xe487f0){return _0xe487f0[_0x61f5('0x14f')]&&_0xe487f0[_0x61f5('0x89')]===_0x61f5('0x8a');});if(_0xf8622[_0x61f5('0x105')]>0x0&&_0x4e2dd9[_0x61f5('0x105')]>0x0){return Promise[_0x61f5('0xaf')]()[_0x61f5('0x3f')](cmHopper['handlePreviewRecallNotifications'](_[_0x61f5('0x150')](_0xf8622,'id'),previewRecallmeReminderInterval,_[_0x61f5('0x150')](_0x4e2dd9,'id')))[_0x61f5('0x3f')](function(_0x5de774){for(var _0x563f9a=0x0;_0x563f9a<_0x5de774['length'];_0x563f9a++){var _0x1432f4=_0x5de774[_0x563f9a]['Agent'][_0x61f5('0x61')];if(_0x1432f4)io['to'](util[_0x61f5('0x46')](_0x61f5('0x151'),_0x1432f4))['emit'](_0x61f5('0x152'),{'hopper':_0x5de774[_0x563f9a]});}})[_0x61f5('0xa4')](function(_0x420715){logger['error']('checkPreviewRecallReminder',_0x420715);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x61f5('0x1a')][_0x61f5('0x3d')]=function(){var _0x58418a=this;setInterval(function(){_0x58418a[_0x61f5('0x153')](_0x58418a['uniqueId'],_0x61f5('0x154'));_0x58418a[_0x61f5('0x153')](_0x58418a[_0x61f5('0xf6')],_0x61f5('0x155'));},0x32c8);};Dialer[_0x61f5('0x1a')][_0x61f5('0x153')]=function(_0x13729d,_0x57a56c){var _0x267e73=this;for(var _0x3cc448 in _0x13729d){if(typeof _0x13729d[_0x3cc448]!==_0x61f5('0xae')){this[_0x61f5('0x1e')][_0x61f5('0x1b')](function(){if(!_[_0x61f5('0xfc')](_0x13729d[_0x3cc448])){return ami[_0x61f5('0x9d')]({'action':_0x61f5('0x89'),'channel':_0x13729d[_0x3cc448][_0x61f5('0xf7')]})[_0x61f5('0xa4')](function(_0x539a0c){if(_0x539a0c[_0x61f5('0x69')]===_0x61f5('0x156')){setTimeout(function(){if(_0x13729d[_0x3cc448]&&_0x13729d[_0x3cc448][_0x61f5('0x42')]!==_0x61f5('0xc6')){_0x267e73['updateOriginated'](_0x267e73[_0x61f5('0x20')][_0x13729d[_0x3cc448][_0x61f5('0xc4')]]);logger[_0x61f5('0x67')]('[Dialer][checkChannel]',_0x57a56c,_0x3cc448,_0x13729d[_0x3cc448][_0x61f5('0xc4')]);delete _0x13729d[_0x3cc448];}if(_0x13729d[_0x3cc448]&&_0x13729d[_0x3cc448][_0x61f5('0x42')]===_0x61f5('0xc6')){_0x267e73['updateOriginated'](_0x267e73['campaigns'][_0x13729d[_0x3cc448]['queue']]);logger[_0x61f5('0x67')]('[Dialer][checkChannel][ivr]',_0x57a56c,_0x3cc448,_0x13729d[_0x3cc448]['queue']);delete _0x13729d[_0x3cc448];}},0x2328);}});}});}}};Dialer['prototype'][_0x61f5('0x157')]=function(_0x46db95){return Promise['resolve']()[_0x61f5('0x3f')](voiceQueueRt[_0x61f5('0x157')](_0x46db95))[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x158')));};Dialer[_0x61f5('0x1a')][_0x61f5('0xc7')]=function(_0x59b101){if(!_[_0x61f5('0x53')](_0x59b101)&&_0x59b101!==null){if(typeof _0x59b101[_0x61f5('0x159')]!=='undefined'){if(_0x59b101[_0x61f5('0x159')]>0x0){_0x59b101[_0x61f5('0x159')]-=0x1;}else{logger['error'](_0x61f5('0x15a'));}}}else{logger[_0x61f5('0x67')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x61f5('0x1a')][_0x61f5('0x15b')]=function(_0x4ff3af,_0x3eb188){var _0x20adba=this;return function(_0x161be2){_0x20adba[_0x61f5('0xc7')](_0x3eb188);logger[_0x61f5('0x67')](_0x4ff3af,util[_0x61f5('0x45')](_0x161be2,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x61f5('0x15c')]=function(_0x4300fd,_0x19f0d5,_0x16d32d){var _0x4cf99b={'state':0x19,'statedesc':_0x61f5('0x15d')};this[_0x61f5('0xc7')](_0x19f0d5);this[_0x61f5('0x15e')](_[_0x61f5('0x5f')](_0x4cf99b,_[_0x61f5('0x77')](_0x16d32d,[_0x61f5('0xe5'),_0x61f5('0xe6'),'UserId',_0x61f5('0xf3'),_0x61f5('0xe7')])),_0x61f5('0x15f'),'[emptyContact]');logger['error'](_0x4300fd);};Dialer[_0x61f5('0x1a')]['saveInDb']=function(_0x3a3b7f,_0x43b143,_0x46b148){hopperUtils['createHistory'](_0x3a3b7f)[_0x61f5('0xa4')](loggerCatch(_0x43b143));hopperUtils[_0x61f5('0xcf')](_0x3a3b7f)[_0x61f5('0xa4')](loggerCatch(_0x46b148));};Dialer['prototype'][_0x61f5('0xe0')]=function(_0x1c0d1f,_0x28f701){hopperUtils[_0x61f5('0xeb')](_0x1c0d1f)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xce')));if(_0x28f701==0x0){hopperUtils[_0x61f5('0xcf')](_0x1c0d1f)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x160')));}};Dialer[_0x61f5('0x1a')][_0x61f5('0x161')]=function(_0x3ad69e){return Promise[_0x61f5('0xaf')]()[_0x61f5('0x3f')](cmHopper[_0x61f5('0x162')](_0x3ad69e['id'],previewRecallmeReminderInterval))['then'](function(_0x54b8c0){for(var _0xecacbd=0x0;_0xecacbd<_0x54b8c0[_0x61f5('0x105')];_0xecacbd++){var _0x5e9dbd=_0x54b8c0[_0xecacbd][_0x61f5('0x163')]['name'];if(_0x5e9dbd)io['to'](util[_0x61f5('0x46')]('user:%s',_0x5e9dbd))[_0x61f5('0x41')](_0x61f5('0x152'),{'hopper':_0x54b8c0[_0xecacbd]});}})['catch'](function(){});};Dialer[_0x61f5('0x1a')][_0x61f5('0xb1')]=function(_0x34c227){var _0x107417=this;return function(){_0x107417[_0x61f5('0x164')](_0x34c227);};};Dialer[_0x61f5('0x1a')]['actionOriginate']=function(_0x4e45d3,_0x488080){var _0xd53481=this;var _0x5e57b7=uuid['v4']();this[_0x61f5('0xf6')][_0x5e57b7]=new Action(_0x4e45d3,_0x488080,_0x5e57b7);return new Promise(function(_0x1c5a05,_0x3afb46){if(_['isUndefined'](_0x4e45d3)&&typeof _0x4e45d3!==_0x61f5('0x165')){return _0x3afb46(msgResponse(_0x61f5('0x166'),'Failure',_0x61f5('0x167')));}if(_[_0x61f5('0x53')](_0x488080[_0x61f5('0x168')])||_0x488080[_0x61f5('0x168')]===null){return _0x3afb46(msgResponse(_0x61f5('0x166'),'Failure',_0x61f5('0x169')));}var _0x543c02={'XMD-CALLERID':_0xd53481[_0x61f5('0xf6')][_0x5e57b7][_0x61f5('0x16a')](),'XMD-AGI':_0x4e45d3['dialQueueProject']?util['format'](_0x61f5('0x16b'),ipAgi,_0x4e45d3['dialQueueProject']):'NONE','XMD-AGIAFTER':_0x4e45d3[_0x61f5('0xcd')]?util[_0x61f5('0x46')](_0x61f5('0x16b'),ipAgi,_0x4e45d3[_0x61f5('0xcd')]):_0x61f5('0x16c'),'XMD-QUEUE':utils['isOutboundQueue'](_0x4e45d3)?util['format'](_0x61f5('0x16d'),_0x4e45d3[_0x61f5('0x61')],_0x4e45d3[_0x61f5('0x16e')]||'',_0x4e45d3[_0x61f5('0x16f')]?'c':'',_0x4e45d3[_0x61f5('0xd3')]||0x3):_0x61f5('0x16c'),'XMD-CONTACTID':_0x488080[_0x61f5('0xe5')],'XMD-CDRTYPE':_0x61f5('0x170'),'CALLERID(all)':_0xd53481[_0x61f5('0xf6')][_0x5e57b7][_0x61f5('0x16a')](),'XMD-AMD':_0x4e45d3[_0x61f5('0x118')]?_0x61f5('0x146'):_0x61f5('0x16c'),'XMD-DESTINATION':_0x61f5('0x117')};if(_0x4e45d3['dialAMDActive']){_0x543c02['XMD-AMDINITIALSILENCE']=_0x4e45d3[_0x61f5('0x171')]||0x9c4;_0x543c02[_0x61f5('0x172')]=_0x4e45d3['dialAMDGreeting']||0x5dc;_0x543c02[_0x61f5('0x173')]=_0x4e45d3[_0x61f5('0x174')]||0x320;_0x543c02['XMD-AMDTOTALANALYSISTIME']=_0x4e45d3[_0x61f5('0x175')]||0x1388;_0x543c02[_0x61f5('0x176')]=_0x4e45d3[_0x61f5('0x177')]||0x64;_0x543c02[_0x61f5('0x178')]=_0x4e45d3[_0x61f5('0x179')]||0x32;_0x543c02[_0x61f5('0x17a')]=_0x4e45d3[_0x61f5('0x17b')]||0x3;_0x543c02[_0x61f5('0x17c')]=_0x4e45d3[_0x61f5('0x17d')]||0x100;_0x543c02[_0x61f5('0x17e')]=_0x4e45d3[_0x61f5('0x17f')]||0x1388;}if(utils[_0x61f5('0x180')](_0x4e45d3)){_0x543c02['XMD-VOICEQUEUEID']=_0x488080[_0x61f5('0xf3')];}else{_0x543c02[_0x61f5('0x181')]=_0x488080['CampaignId'];}for(var _0x568a58 in _0x488080[_0x61f5('0x182')]){if(typeof _0x488080['Contact'][_0x568a58]!==_0x61f5('0xae')){if(isNotNull(_0x488080[_0x61f5('0x182')][_0x568a58])&&_0x568a58!=='id'&&_0x568a58!==_0x61f5('0x183')&&_0x568a58!==_0x61f5('0x184')&&_0x568a58!==_0x61f5('0x185')){_0x543c02[util['format'](_0x61f5('0x186'),'XMD-',_[_0x61f5('0x187')](_0x568a58))]=_0x488080[_0x61f5('0x182')][_0x568a58];}}}var _0x367bc0=_0xd53481['isTrunkReachable'](_0x4e45d3[_0x61f5('0x8e')])?utils[_0x61f5('0x188')](_0x4e45d3[_0x61f5('0x8e')]['callerid'],_0x4e45d3[_0x61f5('0x189')],_0x4e45d3[_0x61f5('0x18a')]>0x0?utils[_0x61f5('0x18b')](_0x4e45d3[_0x61f5('0x18c')],_0x4e45d3[_0x61f5('0x18a')]):_0x4e45d3[_0x61f5('0x18c')]):utils[_0x61f5('0x188')](_[_0x61f5('0xfc')](_0x4e45d3[_0x61f5('0x8f')])?_0x4e45d3[_0x61f5('0x8e')][_0x61f5('0x18d')]:_0x4e45d3[_0x61f5('0x8f')][_0x61f5('0x18d')],_0x4e45d3[_0x61f5('0x189')],_0x4e45d3[_0x61f5('0x18a')]>0x0?utils[_0x61f5('0x18b')](_0x4e45d3['dialOriginateCallerIdNumber'],_0x4e45d3[_0x61f5('0x18a')]):_0x4e45d3[_0x61f5('0x18c')]);if(_0x367bc0){_0x543c02[_0x61f5('0x18e')]=_0xd53481[_0x61f5('0xf6')][_0x5e57b7][_0x61f5('0x18f')]=utils[_0x61f5('0x190')](_0x367bc0);_0x543c02[_0x61f5('0x191')]=_0x488080[_0x61f5('0x168')];}_0x4e45d3[_0x61f5('0x192')]=_0x543c02;return ami['Action']({'actionid':_0x5e57b7,'action':_0x61f5('0x166'),'channel':_0xd53481[_0x61f5('0x8d')](_0x4e45d3[_0x61f5('0x8e')])?util[_0x61f5('0x46')](_0x61f5('0x193'),_0x4e45d3[_0x61f5('0x8e')][_0x61f5('0x61')],isNotNull(_0x4e45d3[_0x61f5('0x194')])?_0x4e45d3[_0x61f5('0x194')][_0x61f5('0x195')]()||'':'',_0x4e45d3[_0x61f5('0x196')]>0x0?_0x488080['phone'][_0x61f5('0x197')](_0x4e45d3[_0x61f5('0x196')]):_0x488080[_0x61f5('0x168')]):util[_0x61f5('0x46')](_0x61f5('0x193'),_[_0x61f5('0xfc')](_0x4e45d3[_0x61f5('0x8f')])?_0x4e45d3[_0x61f5('0x8e')]['name']:_0x4e45d3[_0x61f5('0x8f')][_0x61f5('0x61')],isNotNull(_0x4e45d3[_0x61f5('0x194')])?_0x4e45d3[_0x61f5('0x194')][_0x61f5('0x195')]()||'':'',_0x4e45d3[_0x61f5('0x196')]>0x0?_0x488080[_0x61f5('0x168')][_0x61f5('0x197')](_0x4e45d3[_0x61f5('0x196')]):_0x488080[_0x61f5('0x168')]),'callerid':_0x367bc0,'Exten':_0x61f5('0x117'),'Context':_0x61f5('0x198'),'Priority':'1','variable':_0x543c02,'timeout':(_0x4e45d3[_0x61f5('0x199')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5e57b7})[_0x61f5('0x3f')](function(_0x4e4497){return _0x1c5a05(_0x4e4497);})[_0x61f5('0xa4')](function(_0x478dd4){_0x4e45d3[_0x61f5('0x19a')]+=0x1;var _0x207298=new History(_0xd53481[_0x61f5('0xf6')][_0x5e57b7]);logger[_0x61f5('0x67')](util[_0x61f5('0x46')](_0x61f5('0x19b'),JSON[_0x61f5('0x76')](_0x478dd4)));_0x207298[_0x61f5('0x70')]=0xe;_0x207298['statedesc']=_0x61f5('0x19c');_0x207298[_0x61f5('0x73')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));_0x207298[_0x61f5('0x72')]=_0x207298['starttime'];hopperUtils[_0x61f5('0xeb')](_0x207298)['catch'](loggerCatch(_0x61f5('0x19d')));_0xd53481['moveContactManagedDialer'](_0x207298)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x19d')))[_0x61f5('0x1d')](function(){delete _0xd53481['actions'][_0x5e57b7];return _0x3afb46(msgResponse(_0x61f5('0x166'),_0x61f5('0x86'),'originate\x20action\x20Error'));});});});};Dialer[_0x61f5('0x1a')][_0x61f5('0x19e')]=function(_0x114582,_0x7b57db,_0x179377){var _0x2e7f30=new History(_0x7b57db);if(_0x2e7f30[_0x61f5('0x127')]+_0x2e7f30['countcongestionretry']+_0x2e7f30[_0x61f5('0x128')]+_0x2e7f30['countnosuchnumberretry']+_0x2e7f30['countdropretry']+_0x2e7f30[_0x61f5('0xf0')]+_0x2e7f30[_0x61f5('0x126')]+_0x2e7f30[_0x61f5('0x12a')]>=_0x179377[_0x61f5('0x12b')]-0x1){return!![];}switch(_0x114582){case 0x3:if(_0x2e7f30[_0x61f5('0x128')]>=_0x179377[_0x61f5('0x19f')]-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countnoanswerretry':_0x2e7f30[_0x61f5('0x128')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377[_0x61f5('0x1a0')],_0x61f5('0xe4'))['format'](_0x61f5('0xc9')),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30['ListId'],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1a1')));break;case 0x5:if(_0x2e7f30['countbusyretry']>=_0x179377['dialBusyMaxRetry']-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countbusyretry':_0x2e7f30[_0x61f5('0x127')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377[_0x61f5('0x1a2')],_0x61f5('0xe4'))['format'](_0x61f5('0xc9')),'ContactId':_0x2e7f30['ContactId'],'ListId':_0x2e7f30['ListId'],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30['CampaignId']||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1a3')));break;case 0x8:if(_0x2e7f30[_0x61f5('0x135')]>=_0x179377[_0x61f5('0x1a4')]-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countcongestionretry':_0x2e7f30['countcongestionretry']+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377['dialCongestionRetryFrequency'],_0x61f5('0xe4'))[_0x61f5('0x46')](_0x61f5('0xc9')),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30[_0x61f5('0xe6')],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1a5')));break;case 0x0:if(_0x2e7f30[_0x61f5('0x129')]>=_0x179377[_0x61f5('0x1a6')]-0x1){return!![];}else{hopperUtils[_0x61f5('0xe1')]({'active':![],'countnosuchnumberretry':_0x2e7f30[_0x61f5('0x129')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377[_0x61f5('0x1a7')],'minutes')[_0x61f5('0x46')](_0x61f5('0xc9')),'ContactId':_0x2e7f30['ContactId'],'ListId':_0x2e7f30['ListId'],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1a8')));}break;case 0xa:if(_0x2e7f30[_0x61f5('0xd9')]>=_0x179377[_0x61f5('0xdf')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x2e7f30[_0x61f5('0xd9')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377[_0x61f5('0xe3')],'minutes')[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30['ListId'],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x2e7f30[_0x61f5('0xf0')]>=_0x179377[_0x61f5('0xf2')]-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countabandonedretry':_0x2e7f30[_0x61f5('0xf0')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377[_0x61f5('0xf1')],_0x61f5('0xe4'))[_0x61f5('0x46')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30[_0x61f5('0xe6')],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x2e7f30[_0x61f5('0x126')]>=_0x179377[_0x61f5('0x12e')]-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countmachineretry':_0x2e7f30[_0x61f5('0x126')]+=0x1,'scheduledat':moment()[_0x61f5('0xe2')](_0x179377['dialMachineRetryFrequency'],_0x61f5('0xe4'))['format'](_0x61f5('0xc9')),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30[_0x61f5('0xe6')],'VoiceQueueId':_0x2e7f30[_0x61f5('0xf3')]||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x2e7f30[_0x61f5('0x12a')]>=_0x179377[_0x61f5('0x1a9')]-0x1){return!![];}hopperUtils[_0x61f5('0xe1')]({'active':![],'countagentrejectretry':_0x2e7f30[_0x61f5('0x12a')]+=0x1,'scheduledat':moment()['add'](_0x179377[_0x61f5('0x1aa')],_0x61f5('0xe4'))['format'](_0x61f5('0xc9')),'ContactId':_0x2e7f30[_0x61f5('0xe5')],'ListId':_0x2e7f30['ListId'],'VoiceQueueId':_0x2e7f30['VoiceQueueId']||undefined,'CampaignId':_0x2e7f30[_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1ab')));break;default:return!![];}};Dialer[_0x61f5('0x1a')][_0x61f5('0x111')]=function(_0x1459ee,_0x4f035d,_0x11703a){var _0x4eae8b=this;var _0xad1733=new History(_0x1459ee);var _0x16bab0=![];var _0x10a874;var _0x23beb3;return new Promise(function(_0x343fe4,_0x161347){if(_['isUndefined'](_0x4f035d)&&typeof _0x4f035d!==_0x61f5('0x165')){return _0x161347(msgResponse(_0x61f5('0x1ac'),_0x61f5('0x96'),_0x61f5('0x1ad')));}if(_[_0x61f5('0x53')](_0x11703a)&&typeof _0x11703a!==_0x61f5('0x165')){return _0x161347(msgResponse(_0x61f5('0x1ac'),_0x61f5('0x96'),'evt\x20is\x20undefine'));}hopperUtils[_0x61f5('0xdc')](_0xad1733,_0x11703a[_0x61f5('0xca')],_0x4f035d)[_0x61f5('0x3f')](function(_0x1f8b88){if(_0x1f8b88['additional']==0x1)_0x16bab0=!![];switch(_0x11703a[_0x61f5('0xca')]){case'0':_0x4f035d[_0x61f5('0x1ae')]+=0x1;_0xad1733['state']=0x0;_0xad1733['statedesc']=_0x61f5('0x1af');_0xad1733[_0x61f5('0x129')]+=0x1;_0xad1733[_0x61f5('0xda')]+=0x1;ami[_0x61f5('0x41')](_0x61f5('0x1b0'),ut[_0x61f5('0x121')](_0x1459ee,_0x61f5('0x1b1')));_0x10a874=_0x4f035d['dialNoSuchNumberRetryFrequency'];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];hopperUtils[_0x61f5('0xeb')](_0xad1733)[_0x61f5('0xa4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x4eae8b[_0x61f5('0x19e')](0x0,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733[_0x61f5('0x129')]>=_0x4f035d['dialNoSuchNumberMaxRetry']){_0x4eae8b[_0x61f5('0x136')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1b2'));}else{_0x4eae8b['stateGlobal'](_0xad1733,_0x343fe4,_0x161347,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x4f035d[_0x61f5('0x1b3')]+=0x1;_0xad1733[_0x61f5('0x70')]=0x3;_0xad1733['statedesc']=_0x61f5('0x1b4');_0xad1733[_0x61f5('0x128')]+=0x1;_0xad1733[_0x61f5('0xda')]+=0x1;var _0x1bb983=ut[_0x61f5('0x1b5')](_0x1459ee,_0x4f035d);ami[_0x61f5('0x41')](_0x61f5('0x1b6'),_0x1bb983);_0x10a874=_0x4f035d[_0x61f5('0x1a0')];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];hopperUtils[_0x61f5('0xeb')](_0xad1733)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1b7')));if(_0x4eae8b[_0x61f5('0x19e')](0x3,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733[_0x61f5('0x128')]>=_0x4f035d[_0x61f5('0x19f')]){_0x4eae8b['createStateFinal'](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1b8'));}else{_0x4eae8b['stateGlobal'](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1b8'));}}break;case'5':_0x4f035d['outboundBusyCallsDay']+=0x1;_0xad1733[_0x61f5('0x70')]=0x5;_0xad1733[_0x61f5('0x71')]='Busy';_0xad1733[_0x61f5('0x127')]+=0x1;_0xad1733[_0x61f5('0xda')]+=0x1;ami[_0x61f5('0x41')]('custom:agentbusy',ut[_0x61f5('0x121')](_0x1459ee,'busy'));_0x10a874=_0x4f035d[_0x61f5('0x1a2')];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];hopperUtils['createHistory'](_0xad1733)[_0x61f5('0xa4')](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x4eae8b[_0x61f5('0x19e')](0x5,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733[_0x61f5('0x127')]>=_0x4f035d[_0x61f5('0x1b9')]){_0x4eae8b[_0x61f5('0x136')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1ba'));}else{_0x4eae8b[_0x61f5('0x12c')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1ba'));}}break;case'8':_0x4f035d[_0x61f5('0x1bb')]+=0x1;_0xad1733[_0x61f5('0x70')]=0x8;_0xad1733[_0x61f5('0x71')]=_0x61f5('0x1bc');_0xad1733[_0x61f5('0x135')]+=0x1;_0xad1733['countglobal']+=0x1;_0x10a874=_0x4f035d[_0x61f5('0x1bd')];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];ami['emit'](_0x61f5('0x1be'),ut[_0x61f5('0x121')](_0x1459ee,_0x61f5('0x1bf')));hopperUtils['createHistory'](_0xad1733)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1c0')));if(_0x4eae8b[_0x61f5('0x19e')](0x8,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733[_0x61f5('0x135')]>=_0x4f035d[_0x61f5('0x1a4')]){_0x4eae8b[_0x61f5('0x136')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1c1'));}else{_0x4eae8b['stateGlobal'](_0xad1733,_0x343fe4,_0x161347,'reason\x208\x20congestion');}}break;case'11':_0x4f035d['outboundAbandonedCallsDay']+=0x1;_0xad1733[_0x61f5('0x70')]=0xb;_0xad1733[_0x61f5('0x71')]='Abandoned';_0xad1733[_0x61f5('0xf0')]+=0x1;_0xad1733[_0x61f5('0xda')]+=0x1;_0x10a874=_0x4f035d[_0x61f5('0xf1')];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];hopperUtils[_0x61f5('0xeb')](_0xad1733)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0xf5')));if(_0x4eae8b[_0x61f5('0x19e')](0xb,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733['countabandonedretry']>=_0x4f035d[_0x61f5('0xf2')]){_0x4eae8b[_0x61f5('0x136')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1c2'));}else{_0x4eae8b[_0x61f5('0x12c')](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1c2'));}}break;case'20':_0x4f035d[_0x61f5('0x1c3')]+=0x1;_0xad1733[_0x61f5('0x70')]=0x14;_0xad1733[_0x61f5('0x71')]=_0x61f5('0x1c4');_0xad1733['countagentrejectretry']+=0x1;_0xad1733[_0x61f5('0xda')]+=0x1;_0x10a874=_0x4f035d['dialAgentRejectRetryFrequency'];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];ami[_0x61f5('0x41')](_0x61f5('0x1c5'),ut[_0x61f5('0x121')](_0x1459ee,'agentreject'));hopperUtils[_0x61f5('0xeb')](_0xad1733)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1c6')));if(_0x4eae8b[_0x61f5('0x19e')](0x14,_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733[_0x61f5('0x12a')]>=_0x4f035d[_0x61f5('0x1a9')]){_0x4eae8b['createStateFinal'](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1c7'));}else{_0x4eae8b['stateGlobal'](_0xad1733,_0x343fe4,_0x161347,_0x61f5('0x1c7'));}}break;default:_0x4f035d[_0x61f5('0x1c8')]+=0x1;_0xad1733[_0x61f5('0x70')]=0xc;_0xad1733[_0x61f5('0x71')]=_0x11703a['reason'];_0x10a874=_0x4f035d[_0x61f5('0x1aa')];_0x23beb3=_0x4f035d[_0x61f5('0xdb')];hopperUtils[_0x61f5('0xeb')](_0xad1733)[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x1c9')));if(_0x4eae8b['checkRetriveMax'](_0x11703a['reason'],_0x1459ee,_0x4f035d)&&!_0x16bab0){if(_0xad1733['countbusyretry']+_0xad1733[_0x61f5('0x135')]+_0xad1733[_0x61f5('0x128')]+_0xad1733[_0x61f5('0x129')]+_0xad1733[_0x61f5('0xd9')]+_0xad1733[_0x61f5('0xf0')]+_0xad1733[_0x61f5('0x126')]+_0xad1733['countagentrejectretry']>=_0x4f035d['dialGlobalMaxRetry']){_0x4eae8b['stateGlobal'](_0xad1733,_0x343fe4,_0x161347,_0x11703a['reason']);}else{_0x4eae8b['createStateFinal'](_0xad1733,_0x343fe4,_0x161347,_0x11703a[_0x61f5('0xca')]);}}}})[_0x61f5('0x3f')](function(){if(_0x16bab0){hopperUtils[_0x61f5('0xed')](_0xad1733,_0x10a874,_0x23beb3)[_0x61f5('0x3f')](function(){return _0x343fe4(0x1);});}});});};Dialer[_0x61f5('0x1a')][_0x61f5('0x12c')]=function(_0x328eb6,_0x58f614,_0x4d19b5,_0x104c78){var _0x20397a=new Final(_0x328eb6);_0x20397a[_0x61f5('0x70')]=0xf;_0x20397a[_0x61f5('0x71')]='Global';this[_0x61f5('0x136')](_0x20397a,_0x58f614,_0x4d19b5,_0x104c78);};Dialer[_0x61f5('0x1a')][_0x61f5('0x136')]=function(_0x4a9abc,_0xaf02c7,_0x33df30,_0x37eeb4){hopperUtils[_0x61f5('0xcf')](_0x4a9abc)[_0x61f5('0x3f')](function(){return _0xaf02c7(msgResponse(_0x61f5('0x1ac'),_0x61f5('0x110'),_0x37eeb4));})[_0x61f5('0xa4')](function(){return _0x33df30(msgResponse(_0x61f5('0x1ca'),'Failure',_0x61f5('0x1cb')));});};Dialer[_0x61f5('0x1a')][_0x61f5('0x9')]=function(_0x47b3cf){var _0x3715da=_0x47b3cf[_0x61f5('0x1cc')]/0x64;var _0x424c46=_0x47b3cf['outboundDropCallsDayTimeout']/(_0x47b3cf[_0x61f5('0xd4')]+_0x47b3cf[_0x61f5('0x11b')]);var _0x4f21ce=Math['round'](_0x47b3cf['predictiveIntervalAvailable']*(_0x47b3cf['predictiveIntervalMaxThreshold']/0x64));var _0x4c0386=Math[_0x61f5('0x1cd')](_0x47b3cf[_0x61f5('0x1ce')]*(_0x47b3cf['predictiveIntervalMinThreshold']/0x64));var _0x42a2f9=_0x47b3cf[_0x61f5('0x143')]+_0x47b3cf[_0x61f5('0x1cf')];var _0x5c6fc3=Math[_0x61f5('0x1d0')](_0x47b3cf[_0x61f5('0x1d1')]*_0x47b3cf['erlangAbandonmentRate']*_0x47b3cf[_0x61f5('0x1d2')]*_0x47b3cf[_0x61f5('0x1d3')]);if(_[_0x61f5('0x53')](_0x47b3cf[_0x61f5('0x28')])){if(!_[_0x61f5('0x53')](_0x47b3cf[_0x61f5('0x63')])){_0x47b3cf['startPredictive']=undefined;loggerPredictive['error'](_0x61f5('0x1d4'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x61f5('0x53')](_0x47b3cf[_0x61f5('0x65')])){loggerPredictive[_0x61f5('0x67')](_0x61f5('0x1d4'),_0x61f5('0x1d5'));clearInterval(_0x47b3cf['handlePredictive']);_0x47b3cf['handlePredictive']=undefined;}_0x47b3cf[_0x61f5('0x28')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));loggerPredictive['info'](_0x47b3cf[_0x61f5('0x61')],_0x61f5('0x1d6'),_0x47b3cf[_0x61f5('0x28')]);this[_0x61f5('0xb6')](_0x47b3cf,0x1);}else if(ifInterval(_0x47b3cf[_0x61f5('0x1d7')],_0x47b3cf['startProgressive'])){this['handlePower'](_0x47b3cf,0x1);loggerPredictiveCalls[_0x61f5('0x4a')](_0x61f5('0x1d8'),_0x47b3cf[_0x61f5('0x28')],_0x47b3cf[_0x61f5('0x61')]);_0x47b3cf[_0x61f5('0x1d1')]=0x0;_0x47b3cf['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x3715da<_0x424c46&&_0x47b3cf['dialPredictiveOptimization']==='dropRate'){clearPredictiveAttributes(_0x47b3cf);loggerPredictive['info'](_0x61f5('0x1d9'),_0x61f5('0x1da'),_0x424c46,_0x61f5('0x28'),_0x47b3cf[_0x61f5('0x61')]);}else if(_0x5c6fc3<_0x47b3cf[_0x61f5('0xd5')]&&_0x47b3cf[_0x61f5('0x1db')]===_0x61f5('0x1dc')){clearPredictiveAttributes(_0x47b3cf);loggerPredictive[_0x61f5('0x4a')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x61f5('0x1dd'),_0x5c6fc3,_0x61f5('0x1de'),_0x47b3cf[_0x61f5('0xd5')],'startProgressive',_0x47b3cf[_0x61f5('0x61')]);}else if(!ifInterval(_0x47b3cf[_0x61f5('0x1d7')],_0x47b3cf[_0x61f5('0x28')])&&_[_0x61f5('0x53')](_0x47b3cf['startPredictive'])&&!_[_0x61f5('0x53')](_0x47b3cf[_0x61f5('0x28')])){_0x47b3cf[_0x61f5('0x63')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x47b3cf['name'],_0x61f5('0x1df'),_0x47b3cf['startPredictive']);hopperUtils['avgHandleTime'](_0x47b3cf[_0x61f5('0x1d7')])[_0x61f5('0x3f')](this['getDataPredictive'](_0x47b3cf))['then'](mergeDataErlangB(_0x47b3cf))[_0x61f5('0x3f')](this[_0x61f5('0x1e0')](_0x47b3cf))[_0x61f5('0xa4')](loggerCatchPredictive(_0x61f5('0x1e1'),_0x47b3cf));}else if(!ifInterval(_0x47b3cf[_0x61f5('0x1d7')],_0x47b3cf[_0x61f5('0x63')])){_0x47b3cf[_0x61f5('0xd5')]=0x0;_0x47b3cf[_0x61f5('0x63')]=moment()[_0x61f5('0x46')](_0x61f5('0xc9'));loggerPredictive[_0x61f5('0x4a')](_0x47b3cf[_0x61f5('0x61')],_0x61f5('0x1e2'),_0x47b3cf[_0x61f5('0x63')]);clearInterval(_0x47b3cf[_0x61f5('0x65')]);_0x47b3cf[_0x61f5('0x65')]=undefined;hopperUtils[_0x61f5('0x1e3')](_0x47b3cf[_0x61f5('0x1d7')])[_0x61f5('0x3f')](this[_0x61f5('0x1e4')](_0x47b3cf))['then'](mergeDataErlangB(_0x47b3cf))[_0x61f5('0x3f')](this[_0x61f5('0x1e0')](_0x47b3cf))['catch'](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x47b3cf));}else if(_0x47b3cf[_0x61f5('0x1ce')]&&_0x42a2f9<_0x47b3cf[_0x61f5('0x1ce')]-_0x4c0386){clearPredictiveAttributes(_0x47b3cf);loggerPredictive['info'](_0x47b3cf['name'],_0x61f5('0x1e5'),_0x42a2f9,_0x61f5('0x1e6'),_0x47b3cf[_0x61f5('0x1ce')],'-',_0x4c0386,'=',_0x47b3cf[_0x61f5('0x1ce')]-_0x4c0386,')');}else if(_0x47b3cf[_0x61f5('0x1ce')]&&_0x42a2f9>_0x47b3cf[_0x61f5('0x1ce')]+_0x4f21ce){clearPredictiveAttributes(_0x47b3cf);loggerPredictive[_0x61f5('0x4a')](_0x47b3cf[_0x61f5('0x61')],_0x61f5('0x1e5'),_0x42a2f9,')\x20are\x20more\x20than\x20threshold\x20(',_0x47b3cf[_0x61f5('0x1ce')],'+',_0x4f21ce,'=',_0x47b3cf[_0x61f5('0x1ce')]+_0x4f21ce,')');}};Dialer[_0x61f5('0x1a')][_0x61f5('0x1e4')]=function(_0x2454db){var _0xf7b421=this;return function(_0x5473ae){return new Promise(function(_0x4c8d75,_0x446423){_[_0x61f5('0x5f')](_0x2454db,_0x5473ae[0x0]);if(checkGetDataPredictive(_0x5473ae[0x0])){var _0x28fdc2=_0x2454db[_0x61f5('0x1ce')]=_0x2454db['talking']+_0x2454db['available'];var _0x1b6059=_0x2454db['dialPredictiveInterval']*0x3c;var _0x5834e6=_0x5473ae[0x0]['predictiveIntervalAvgTalktime']+_0x5473ae[0x0]['predictiveIntervalAvgHoldtime'];var _0x53a2df=(_0x5473ae[0x0][_0x61f5('0x1e7')]+_0x5473ae[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x5473ae[0x0][_0x61f5('0x4e')])/_0x5473ae[0x0][_0x61f5('0x4c')];_0x2454db[_0x61f5('0x1d2')]=_0x53a2df>0x0?_0x53a2df:0x1;switch(_0x2454db['dialPredictiveOptimization']){case _0x61f5('0x1dc'):var _0x328c84=_0x2454db['dialPredictiveOptimizationPercentage']/0x64;return _0xf7b421[_0x61f5('0x1e8')](_0x28fdc2,_0x1b6059,_0x5834e6,_0x53a2df,_0x328c84)['then'](function(_0x43f2e1){return _0x4c8d75(_0x43f2e1);});case _0x61f5('0x1e9'):var _0x59d216=_0x2454db[_0x61f5('0x1cc')]/0x64;return _0xf7b421[_0x61f5('0x1ea')](_0x28fdc2,_0x1b6059,_0x5834e6,_0x53a2df,_0x59d216)[_0x61f5('0x3f')](function(_0x4d02f9){return _0x4c8d75(_0x4d02f9);});default:return _0x446423(msgResponse(_0x61f5('0x1eb'),_0x61f5('0x96'),_0x61f5('0x1ec')));}}else{return _0x446423(msgResponse('[getDataPredictive]',_0x61f5('0x96'),_0x61f5('0x1ed')));}});};};Dialer[_0x61f5('0x1a')][_0x61f5('0x1ee')]=function(_0x45e4a8){var _0x5afdab=this;return function(_0x231f58){return new Promise(function(_0x16545e,_0x194b94){_['merge'](_0x45e4a8,_0x231f58[0x0]);if(checkGetDataPredictive(_0x231f58[0x0])){loggerPredictive[_0x61f5('0x4a')](JSON[_0x61f5('0x76')](_0x231f58[0x0]));if(_0x45e4a8[_0x61f5('0x1db')]===_0x61f5('0x1dc')){return _0x5afdab[_0x61f5('0x157')](_0x45e4a8['id'])['then'](function(_0x421bc5){var _0x5a59db=_0x45e4a8[_0x61f5('0x1ef')]-_0x421bc5[0x0]['outboundQueuePauses'];var _0x1df304=_0x45e4a8[_0x61f5('0x1d7')]*0x3c;var _0x45c88b=_0x231f58[0x0][_0x61f5('0x54')]+_0x231f58[0x0][_0x61f5('0x50')];var _0xa21ce5=(_0x231f58[0x0][_0x61f5('0x1e7')]+_0x231f58[0x0][_0x61f5('0x4d')]+_0x231f58[0x0][_0x61f5('0x4e')])/_0x231f58[0x0]['predictiveIntervalTotalCalls'];var _0x3ca21b=_0x45e4a8[_0x61f5('0x1cc')]/0x64;_0x45e4a8[_0x61f5('0x1f0')]=_0x421bc5[0x0][_0x61f5('0x1f1')]||0x0;_0x45e4a8[_0x61f5('0x1d2')]=_0xa21ce5>0x0?_0xa21ce5:0x1;return _0x5afdab[_0x61f5('0x1e8')](_0x5a59db,_0x1df304,_0x45c88b,_0xa21ce5,_0x3ca21b);})[_0x61f5('0x3f')](function(_0x43d07a){return _0x16545e(_0x43d07a);})[_0x61f5('0xa4')](function(_0x5d4886){return _0x194b94(msgResponse('[CatchErlangB]',_0x61f5('0x96'),JSON[_0x61f5('0x76')](_0x5d4886)));});}if(_0x45e4a8[_0x61f5('0x1db')]===_0x61f5('0x1e9')){return _0x5afdab[_0x61f5('0x157')](_0x45e4a8['id'])[_0x61f5('0x3f')](function(_0x227c3f){var _0x211692=_0x45e4a8[_0x61f5('0x1ef')]-_0x227c3f[0x0]['outboundQueuePauses'];var _0x162db1=_0x45e4a8[_0x61f5('0x1d7')]*0x3c;var _0x4a20f4=_0x231f58[0x0][_0x61f5('0x54')]+_0x231f58[0x0][_0x61f5('0x50')];var _0x2e2d4e=(_0x231f58[0x0][_0x61f5('0x1e7')]+_0x231f58[0x0][_0x61f5('0x4d')]+_0x231f58[0x0][_0x61f5('0x4e')])/_0x231f58[0x0][_0x61f5('0x4c')];var _0x394b5f=_0x45e4a8['dialPredictiveOptimizationPercentage']/0x64;_0x45e4a8[_0x61f5('0x1f0')]=_0x227c3f[0x0]['outboundQueuePauses']||0x0;_0x45e4a8[_0x61f5('0x1d2')]=_0x2e2d4e>0x0?_0x2e2d4e:0x1;return _0x5afdab[_0x61f5('0x1ea')](_0x211692,_0x162db1,_0x4a20f4,_0x2e2d4e,_0x394b5f);})[_0x61f5('0x3f')](function(_0x4fe6e7){return _0x16545e(_0x4fe6e7);})['catch'](function(_0x3ecba6){return _0x194b94(msgResponse('[CatchErlangB]',_0x61f5('0x96'),JSON[_0x61f5('0x76')](_0x3ecba6)));});}}else{return _0x194b94(msgResponse(_0x61f5('0x1eb'),_0x61f5('0x96'),_0x61f5('0x1ed')));}});};};Dialer[_0x61f5('0x1a')]['startMethodPredictive']=function(_0x4e8c12){var _0x44db56=this;return function(){var _0x1193a1=0x0;var _0x1a632b=Math[_0x61f5('0x1d0')](_0x4e8c12[_0x61f5('0x1f2')]*0x3e8);if(_0x1a632b>0x0){_0x1a632b=_0x1a632b<0x64?0x64:_0x1a632b;loggerPredictive[_0x61f5('0x4a')](_0x4e8c12['name'],_0x61f5('0x1f3'),_0x1a632b,_0x61f5('0x1f4'));_0x4e8c12[_0x61f5('0x65')]=setInterval(function(){_0x44db56[_0x61f5('0x65')](_0x4e8c12);loggerPredictiveCalls[_0x61f5('0x4a')](_0x61f5('0x1f5'),_0x1193a1+=0x1);},_0x1a632b);}else{loggerPredictive[_0x61f5('0x4a')](_0x4e8c12[_0x61f5('0x61')],_0x61f5('0x1f6'));}};};Dialer[_0x61f5('0x1a')][_0x61f5('0x1f7')]=function(_0x517bb4,_0x322b1b){var _0x15b744=this;return function(_0x4a1652){if(_[_0x61f5('0x49')](_0x4a1652)){if(_[_0x61f5('0xfc')](_0x322b1b[_0x61f5('0x1f8')])||!_0x322b1b[_0x61f5('0x1f9')]){if(_0x517bb4[_0x61f5('0xb4')]==='booked'){_0x517bb4[_0x61f5('0x74')]=_['isUndefined'](_0x517bb4[_0x61f5('0x74')])?!![]:_0x517bb4['queueStatusComplete'];var _0xe1bec2=uuid['v4']();_0x15b744[_0x61f5('0xf6')][_0xe1bec2]=new Action(_0x517bb4,_0x322b1b,_0xe1bec2);loggerBooked[_0x61f5('0x4a')]('[booked][checkContactBlack]',_0xe1bec2,_0x61f5('0x1fa'),JSON[_0x61f5('0x76')](_0x517bb4[_0x61f5('0x74')]),_0x61f5('0x1fb'),_0x517bb4[_0x61f5('0x61')]);if(_0x517bb4['queueStatusComplete']){_0x517bb4['queueStatusComplete']=![];_0x15b744['queueBooked'][_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xc4')]]=[];ami[_0x61f5('0x9d')]({'actionid':_0xe1bec2,'action':_0x61f5('0x1fc'),'queue':_0x517bb4['name']})['catch'](function(){_0x15b744[_0x61f5('0xc7')](_0x517bb4);hopperUtils[_0x61f5('0xe1')]({'active':![],'ContactId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xe5')],'ListId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xe6')],'VoiceQueueId':_0x15b744['actions'][_0xe1bec2]['VoiceQueueId']||undefined,'CampaignId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xe7')]||undefined})[_0x61f5('0xa4')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x15b744[_0x61f5('0xf6')][_0xe1bec2];});}else{loggerBooked[_0x61f5('0x4a')](_0x61f5('0x1fd'),JSON[_0x61f5('0x76')](_0x517bb4[_0x61f5('0x74')]),_0x61f5('0x1fb'),_0x517bb4[_0x61f5('0x61')]);_0x15b744[_0x61f5('0xc7')](_0x517bb4);hopperUtils[_0x61f5('0xe1')]({'active':![],'ContactId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xe5')],'ListId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2]['ListId'],'VoiceQueueId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xf3')]||undefined,'CampaignId':_0x15b744[_0x61f5('0xf6')][_0xe1bec2][_0x61f5('0xe7')]||undefined})['catch'](loggerCatch(_0x61f5('0x1fe')));delete _0x15b744[_0x61f5('0xf6')][_0xe1bec2];}}else{return _0x15b744[_0x61f5('0x1ff')](_0x517bb4,_0x322b1b);}}else{if(utils[_0x61f5('0x60')](undefined,_0x322b1b[_0x61f5('0x200')])<_0x517bb4['dialRecallMeTimeout']*0x3c){if(_0x322b1b[_0x61f5('0x163')]&&!_0x322b1b[_0x61f5('0x163')][_0x61f5('0x201')]){_0x15b744[_0x61f5('0x1f')]['run'](_0x322b1b['id'])['finally'](function(){_0x15b744[_0x61f5('0xc7')](_0x517bb4);});}else{hopperUtils[_0x61f5('0x202')]({'active':![]},_0x322b1b['id'],0x1)[_0x61f5('0x1d')](function(){_0x15b744['updateOriginated'](_0x517bb4);});}}else{_0x517bb4['outboundReCallsDay']+=0x1;_0x15b744[_0x61f5('0xc7')](_0x517bb4);if(_0x517bb4[_0x61f5('0x203')]){hopperUtils[_0x61f5('0xe1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x322b1b['ContactId'],'ListId':_0x322b1b['ListId'],'VoiceQueueId':_0x322b1b[_0x61f5('0xf3')]||undefined,'CampaignId':_0x322b1b[_0x61f5('0xe7')]||undefined})['catch'](loggerCatch(_0x61f5('0x204')));hopperUtils[_0x61f5('0xeb')](createObjHistory(_0x517bb4,_0x322b1b,utils[_0x61f5('0x6a')][_0x61f5('0x205')],0x17,_0x61f5('0x206')))['catch'](loggerCatch(_0x61f5('0x207')));}else{_0x15b744['saveInDb'](createObjHistory(_0x517bb4,_0x322b1b,utils[_0x61f5('0x6a')][_0x61f5('0x208')],0x16,_0x61f5('0x209')),_0x61f5('0x20a'),_0x61f5('0x20b'));}}}}else{_0x517bb4[_0x61f5('0x20c')]+=0x1;_0x15b744['saveInDb'](createObjHistory(_0x517bb4,_0x322b1b,utils['CAMPAIGN_STATUS'][_0x61f5('0x20d')],0xd,_0x61f5('0x20e')),'[Originate][historyBlacklist]',_0x61f5('0x20f'));throw'inBlackList';}};};Dialer[_0x61f5('0x1a')]['handleIvr']=function(_0x1db18d){var _0x2589e6=this;var _0x358685=_0x1db18d[_0x61f5('0x210')]-_0x1db18d[_0x61f5('0x159')]-_0x1db18d[_0x61f5('0x211')];emitCampaignSummary(_0x1db18d);if(_0x358685>0x0){if(_0x358685>this[_0x61f5('0x24')]){_0x358685=this[_0x61f5('0x24')];}_0x1db18d[_0x61f5('0x211')]+=_0x358685;hopperUtils[_0x61f5('0x212')](_0x1db18d,_0x358685)[_0x61f5('0x3f')](function(_0x4ffa36){_0x1db18d[_0x61f5('0x211')]-=_0x358685;_0x1db18d['temp']=_0x1db18d[_0x61f5('0x211')]>0x0?_0x1db18d['temp']:0x0;if(!utils[_0x61f5('0x213')](_0x4ffa36)){_0x1db18d[_0x61f5('0x69')]=utils['CAMPAIGN_STATUS'][_0x61f5('0x6e')];logger[_0x61f5('0x4a')](_0x61f5('0x214')+_0x1db18d[_0x61f5('0x61')]);}else{_0x1db18d[_0x61f5('0x159')]+=_0x4ffa36[_0x61f5('0x105')];_0x1db18d[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x215')];for(var _0x516856=0x0;_0x516856<_0x4ffa36[_0x61f5('0x105')];_0x516856+=0x1){_0x1db18d['ivrTotalCallsDays']+=0x1;if(_[_0x61f5('0xfc')](_0x4ffa36[_0x516856])||_[_0x61f5('0xfc')](_0x4ffa36[_0x516856][_0x61f5('0x182')])||_[_0x61f5('0xfc')](_0x4ffa36[_0x516856][_0x61f5('0x168')])){_0x2589e6[_0x61f5('0x15c')](_0x61f5('0x216'),_0x1db18d,_0x4ffa36[_0x516856]);}else{hopperUtils[_0x61f5('0x217')](_[_0x61f5('0x77')](_0x4ffa36[_0x516856],['CampaignId',_0x61f5('0x168')]))[_0x61f5('0x3f')](_0x2589e6[_0x61f5('0x1f7')](_0x1db18d,_0x4ffa36[_0x516856]))[_0x61f5('0xa4')](_0x2589e6['loggerHandler']('[actionOriginateIvr]\x20',_0x1db18d));}}}})[_0x61f5('0xa4')](loggerGetContactDialer(_0x61f5('0x218'),_0x1db18d,_0x358685));}};Dialer[_0x61f5('0x1a')]['handlePower']=function(_0x16eb18,_0x3f0899){var _0x51dd96=this;var _0x1bf23f=[];if(_0x3f0899<0x1||_0x16eb18[_0x61f5('0xb4')]===_0x61f5('0xb9')){_0x3f0899=0x1;}var _0x4af104=Math[_0x61f5('0x1d0')](_0x16eb18['available']*_0x3f0899)-_0x16eb18['originated']-_0x16eb18['temp'];if(_0x16eb18[_0x61f5('0x219')]>0x0){var _0x35ec32=_0x16eb18[_0x61f5('0x219')]-_0x16eb18['originated']-_0x16eb18['talking']-_0x16eb18[_0x61f5('0x211')]-_0x16eb18['pTalking'];if(_0x4af104>_0x35ec32){_0x4af104=_0x35ec32;}}if(_0x4af104>0x0){if(_0x16eb18[_0x61f5('0xb4')]===_0x61f5('0xb9')){_0x4af104=0x1;}if(_0x4af104>this[_0x61f5('0x24')]){_0x4af104=this[_0x61f5('0x24')];}_0x16eb18['temp']+=_0x4af104;for(var _0x5999ab in this[_0x61f5('0x22')]){if(typeof this[_0x61f5('0x22')][_0x5999ab]!==_0x61f5('0xae')){if(this[_0x61f5('0x22')][_0x5999ab][_0x61f5('0x70')]===_0x61f5('0x21a')&&this[_0x61f5('0x22')][_0x5999ab]['status']===_0x61f5('0x8a')){_0x1bf23f['push'](this['agents'][_0x5999ab]['id']);}}}hopperUtils[_0x61f5('0x21b')](_0x16eb18,_0x1bf23f,_0x4af104)['then'](function(_0x2d4dc9){_0x16eb18[_0x61f5('0x211')]-=_0x4af104;_0x16eb18[_0x61f5('0x211')]=_0x16eb18[_0x61f5('0x211')]>0x0?_0x16eb18['temp']:0x0;if(!utils[_0x61f5('0x213')](_0x2d4dc9)){hopperUtils[_0x61f5('0x21c')](_0x16eb18)[_0x61f5('0x3f')](sendMessageReschedule(_0x16eb18))[_0x61f5('0xa4')](loggerCatch(_0x61f5('0x21d')));}else{_0x16eb18[_0x61f5('0x159')]+=_0x2d4dc9[_0x61f5('0x105')];_0x16eb18['message']=_0x16eb18[_0x61f5('0xb4')]===_0x61f5('0xb9')?utils[_0x61f5('0x6a')][_0x61f5('0x146')]:utils[_0x61f5('0x6a')]['RUNNING'];for(var _0x586133=0x0;_0x586133<_0x2d4dc9[_0x61f5('0x105')];_0x586133+=0x1){if(_[_0x61f5('0xfc')](_0x2d4dc9[_0x586133])||_[_0x61f5('0xfc')](_0x2d4dc9[_0x586133][_0x61f5('0x182')])||_[_0x61f5('0xfc')](_0x2d4dc9[_0x586133][_0x61f5('0x168')])){_0x51dd96[_0x61f5('0x15c')](_0x61f5('0x216'),_0x16eb18,_0x2d4dc9[_0x586133]);}else{hopperUtils[_0x61f5('0x21e')](_['pick'](_0x2d4dc9[_0x586133],[_0x61f5('0xf3'),_0x61f5('0x168')]))[_0x61f5('0x3f')](_0x51dd96[_0x61f5('0x1f7')](_0x16eb18,_0x2d4dc9[_0x586133]))[_0x61f5('0xa4')](_0x51dd96[_0x61f5('0x15b')](_0x61f5('0x216'),_0x16eb18));}}}})[_0x61f5('0xa4')](loggerGetContactDialer(_0x61f5('0x21f'),_0x16eb18,_0x4af104));}};Dialer['prototype']['handlePredictive']=function(_0x26e0a9){if(_0x26e0a9[_0x61f5('0x219')]>0x0){var _0x32858c=_0x26e0a9['dialLimitQueue']-_0x26e0a9[_0x61f5('0x159')]-_0x26e0a9[_0x61f5('0x1cf')];if(_0x32858c>0x0){this[_0x61f5('0x220')](_0x26e0a9);}else{loggerPredictiveCalls[_0x61f5('0x4a')](_0x61f5('0x221'));}}else{this[_0x61f5('0x220')](_0x26e0a9);}};Dialer[_0x61f5('0x1a')][_0x61f5('0x220')]=function(_0xdf64c4){var _0x1f8748=this;var _0xe268e3=[];_0xdf64c4[_0x61f5('0x159')]+=0x1;for(var _0x2b7da1 in this[_0x61f5('0x22')]){if(typeof this[_0x61f5('0x22')][_0x2b7da1]!==_0x61f5('0xae')){if(this['agents'][_0x2b7da1]['state']===_0x61f5('0x21a')&&this[_0x61f5('0x22')][_0x2b7da1]['status']==='reachable'){_0xe268e3[_0x61f5('0x9c')](this[_0x61f5('0x22')][_0x2b7da1]['id']);}}}return this[_0x61f5('0x21b')](_0xdf64c4['id'],_0xe268e3,0x1,_0xdf64c4[_0x61f5('0x222')],_0xdf64c4)[_0x61f5('0x3f')](function(_0x4101d0){if(!utils[_0x61f5('0x213')](_0x4101d0)){utils[_0x61f5('0x223')](_0xdf64c4,0x1,0x0);return hopperUtils['countReScheduled'](_0xdf64c4)[_0x61f5('0x3f')](sendMessageReschedule(_0xdf64c4))[_0x61f5('0xa4')](loggerCatch('[countReScheduled]\x20'));}else{_0xdf64c4[_0x61f5('0x69')]=utils[_0x61f5('0x6a')][_0x61f5('0x215')];if(_[_0x61f5('0xfc')](_0x4101d0[0x0])||_[_0x61f5('0xfc')](_0x4101d0[0x0][_0x61f5('0x182')])||_[_0x61f5('0xfc')](_0x4101d0[0x0][_0x61f5('0x168')])){_0x1f8748[_0x61f5('0x15c')](_0x61f5('0x216'),_0xdf64c4,_0x4101d0[0x0]);}else{return hopperUtils[_0x61f5('0x21e')](_[_0x61f5('0x77')](_0x4101d0[0x0],[_0x61f5('0xf3'),_0x61f5('0x168')]))[_0x61f5('0x3f')](_0x1f8748['checkContactBlack'](_0xdf64c4,_0x4101d0[0x0]))[_0x61f5('0xa4')](_0x1f8748[_0x61f5('0x15b')](_0x61f5('0x224'),_0xdf64c4));}}})['catch'](loggerGetContactDialer(_0x61f5('0x225'),_0xdf64c4,0x1));};Dialer[_0x61f5('0x1a')][_0x61f5('0x1e8')]=function(_0x355a92,_0x1cb1ec,_0x4ae3ff,_0x18bdc5,_0x37b60d,_0x53488c){loggerPredictive[_0x61f5('0x4a')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x61f5('0x4a')]('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',_0x355a92);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x226'),_0x1cb1ec);loggerPredictive[_0x61f5('0x4a')]('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',_0x4ae3ff);loggerPredictive['info'](_0x61f5('0x227'),_0x18bdc5);loggerPredictive['info'](_0x61f5('0x228'),_0x37b60d);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x52'));return new Promise(function(_0x1f0278,_0x47aabd){if(_0x355a92<=0x0||isNaN(_0x355a92)){return _0x47aabd(msgResponse('[abandonmentRate]',_0x61f5('0x86'),_0x61f5('0x229')+_0x355a92));}if(_0x4ae3ff<=0x0||isNaN(_0x4ae3ff)){return _0x47aabd(msgResponse(_0x61f5('0x22a'),'Error',_0x61f5('0x22b')+_0x4ae3ff));}if(_0x18bdc5<=0x0||isNaN(_0x18bdc5)){return _0x47aabd(msgResponse(_0x61f5('0x22a'),_0x61f5('0x86'),_0x61f5('0x22c')+_0x18bdc5));}if(_0x1cb1ec<=0x0||isNaN(_0x1cb1ec)){return _0x47aabd(msgResponse(_0x61f5('0x22a'),_0x61f5('0x86'),_0x61f5('0x22d')+_0x1cb1ec));}if(_0x37b60d<=0x0||isNaN(_0x37b60d)){return _0x47aabd(msgResponse(_0x61f5('0x22a'),_0x61f5('0x86'),_0x61f5('0x22e')+_0x37b60d));}_0x53488c=_0x53488c||0x0;var _0x43f720=0x1/_0x4ae3ff;var _0x3fdf7a=0x0;var _0x6cd897=0x0;var _0x538024=0x0;var _0x53fbe9=0x0;for(var _0x54c4eb=0x0;_0x538024<_0x37b60d;_0x54c4eb+=0x1){_0x6cd897=_0x54c4eb/_0x1cb1ec;_0x3fdf7a=(_0x18bdc5*_0x6cd897+_0x53488c)/_0x43f720;_0x538024=utils[_0x61f5('0x22f')](_0x3fdf7a,_0x355a92);_0x53fbe9=_0x3fdf7a/_0x355a92*(0x1-utils[_0x61f5('0x22f')](_0x3fdf7a,_0x355a92));}return _0x1f0278({'erlangCalls':_0x54c4eb,'erlangCallToSecond':_0x1cb1ec/_0x54c4eb,'erlangAbandonmentRate':_0x538024,'erlangBusyFactor':_0x53fbe9});});};Dialer[_0x61f5('0x1a')][_0x61f5('0x1ea')]=function(_0x53aa37,_0x2b06ee,_0x1950e1,_0x50588f,_0xda643d,_0x31ffe4){loggerPredictive['info'](_0x61f5('0x230'));loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x231'),_0x53aa37);loggerPredictive[_0x61f5('0x4a')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2b06ee);loggerPredictive[_0x61f5('0x4a')]('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',_0x1950e1);loggerPredictive[_0x61f5('0x4a')]('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',_0x50588f);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x232'),_0xda643d);loggerPredictive[_0x61f5('0x4a')](_0x61f5('0x52'));return new Promise(function(_0x4c8431,_0x5906e9){if(_0x53aa37<=0x0||isNaN(_0x53aa37)){return _0x5906e9(msgResponse(_0x61f5('0x233'),_0x61f5('0x86'),_0x61f5('0x229')+_0x53aa37));}if(_0x1950e1<=0x0||isNaN(_0x1950e1)){return _0x5906e9(msgResponse(_0x61f5('0x233'),_0x61f5('0x86'),_0x61f5('0x22b')+_0x1950e1));}if(_0x50588f<=0x0||isNaN(_0x50588f)){return _0x5906e9(msgResponse(_0x61f5('0x233'),_0x61f5('0x86'),_0x61f5('0x22c')+_0x50588f));}if(_0x2b06ee<=0x0||isNaN(_0x2b06ee)){return _0x5906e9(msgResponse(_0x61f5('0x233'),_0x61f5('0x86'),_0x61f5('0x22d')+_0x2b06ee));}if(_0xda643d<=0x0||isNaN(_0xda643d)){return _0x5906e9(msgResponse(_0x61f5('0x233'),'Error','Umin\x20=\x20'+_0xda643d));}_0x31ffe4=_0x31ffe4||0x0;var _0x2b41aa=0x1/_0x1950e1;var _0x71174b=0x0;var _0x5be8db=0x0;var _0x225ab4=0x0;var _0x216aee=0x0;for(var _0x4ed09b=0x0;_0x216aee<_0xda643d;_0x4ed09b+=0x1){_0x5be8db=_0x4ed09b/_0x2b06ee;_0x71174b=(_0x50588f*_0x5be8db+_0x31ffe4)/_0x2b41aa;_0x225ab4=utils[_0x61f5('0x22f')](_0x71174b,_0x53aa37);_0x216aee=_0x71174b/_0x53aa37*(0x1-utils[_0x61f5('0x22f')](_0x71174b,_0x53aa37));}return _0x4c8431({'erlangCalls':_0x4ed09b,'erlangCallToSecond':_0x2b06ee/_0x4ed09b,'erlangAbandonmentRate':_0x225ab4,'erlangBusyFactor':_0x216aee});});};module[_0x61f5('0x234')]=Dialer;
\ No newline at end of file
+var _0x2de0=['is\x20disactive','[ifTime][Action]','Error','stringify','isTrunkReachable','active','SIP/%s','status','reachable','checkIsTrunkReachable','Trunk','TrunkBackup','checkIfTime','ifTimeIvr','checkIfTimeIntervals','EMPTY_INTERVAL','ifTime','Failure','\x20Intervals\x20is\x20empty\x20','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','length','push','Action','command','iftime\x20%s,%s','interval','timezones','content','indexOf','catch','true','some','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','syncCampaigns','undefined','resolve','then','dialGlobalInterval','dialTimezone','launchHandleIvr','[syncCampaigns]','checkDialMethod','progressive','power','handlePower','Queue','intervalIftime','OVERTIME_GLOBAL_INTERVAL','silly','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','queue','type','updateOriginated','uniqueid','answertime','YYYY-MM-DD\x20HH:mm:ss','ivr','outboundAnswerCallsDay','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','getSeconds','droptime','dialQueueTimeout','predictiveIntervalDroppedCallsTimeout','outboundDropCallsDayTimeout','statedesc','Drop','dropreason','TIMEOUT','countdropretry','countglobal','dialDropRetryFrequency','verifyAdditionalPhones','voiceQueue','additional','queueCallerAbandonCreateState','add','minutes','ContactId','ListId','VoiceQueueId','[rescheduleContact][Drop]','calleridnum','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','countabandonedretry','dialAbandonedRetryFrequency','callAdditionalPhoneAfterMin','dialAbandonedMaxRetry','CampaignId','calleridname','[syncAgentComplete][createHistory][11]','channel','actionid','strategy','rrmemory','roundrobin','isNil','locked','paused','stateinterface','merge','pick','idHopper','run','[Catch][Preview][syncQueueStatusComplete]','rescheduleContact','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','getQueue','response','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','amdstatus','exten','xcally-motion-dialer','HANGUP','outboundAnswerAgiCallsDay','AMD','buildObj','amd','saveInDb','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','dialAMDActive','value','MACHINE','Machine','countmachineretry','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','membername','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','outboundUnknownCallsDay','Unknow','queuesSummary','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','inUse','talking','ACTIVE','[syncQueueSummary]','queueSummaryCountersUpdated','updateReportFromOutboundQueue','throttle','filter','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','loopClearZombieChannels','clearZombieChannels','No\x20such\x20channel','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','UserId','[emptyContact][createHistory]','[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','handleIvr','actionOriginate','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','NONE','\x22agi://%s/square,%s\x22','isOutboundQueue','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','Contact','tags','XMD-','toUpper','getCallerId','callerid','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','dialOriginateCallerIdName','extractCalleridName','XMD-ORIGINATECALLERIDNUM','variables','dialPrefix','trim','dialCutDigit','SIP/%s/%s%s','substring','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','dialAgentRejectRetryFrequency','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','check\x20predictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','predictiveIntervalErlangCallsDroppedCalls','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','avgHandleTime','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','agentBusyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','busyFactor','[CatchErlangB]','erlangCallToSecond','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','recallme','dialMethod','queuestatus','[unlockOriginate][syncQueueStatusComplete]','Queue:\x20','scheduledat','dialRecallMeTimeout','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','getContactDialerIvr','checkContactEmpty','NO_AVAILABLE_CONTACTS','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','checkContactBlack','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','pTalking','getContactDialer','[countReScheduled]\x20','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','not_inuse','countReScheduled','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Umin\x20=\x20','exports','uuid','ioredis','./utils','./utils/hopper','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/interval','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','127.0.0.1','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','startPredictive','startProgressive','queueBooked','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','agentcomplete','syncAgentComplete','custom:queuesummary','syncQueueSummary','syncQueueSummaryComplete','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','getSettings','isUndefined','emit','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','name','voice_queue:save','isEmpty','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','predictiveIntervalAvgHoldtime','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','startPredictive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','checkContactLowerLimitOriginate','contactsRescheduled','message','CAMPAIGN_STATUS','[getContactDialer2][ReScheduled]','contacts','state','endtime','starttime','queueStatusComplete','[booked][unlockQueueStatus]','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isIVRCampaignActive','INACTIVE','\x20NOT\x20Active','isIVRCampaign','campaign:ivr:%s','campaign:save','originated','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','DISACTIVED'];(function(_0x5a6497,_0xb2da19){var _0x5a4b45=function(_0x40060c){while(--_0x40060c){_0x5a6497['push'](_0x5a6497['shift']());}};_0x5a4b45(++_0xb2da19);}(_0x2de0,0x1a2));var _0x02de=function(_0xd35c8d,_0x1b6b53){_0xd35c8d=_0xd35c8d-0x0;var _0x30511b=_0x2de0[_0xd35c8d];return _0x30511b;};'use strict';var util=require('util');var _=require('lodash');var uuid=require(_0x02de('0x0'));var moment=require('moment');var rr=require('rr');var Redis=require(_0x02de('0x1'));var utils=require(_0x02de('0x2'));var hopperUtils=require(_0x02de('0x3'));var ut=require(_0x02de('0x4'));var config=require(_0x02de('0x5'));var logger=require(_0x02de('0x6'))(_0x02de('0x7'));var loggerBooked=require(_0x02de('0x6'))(_0x02de('0x8'));var loggerPredictive=require(_0x02de('0x6'))(_0x02de('0x9'));var loggerPredictiveCalls=require(_0x02de('0x6'))(_0x02de('0xa'));var loggerSyncQueueSummary=require(_0x02de('0x6'))('syncQueueSummary');var ami=require('../ami');config[_0x02de('0xb')]=_[_0x02de('0xc')](config[_0x02de('0xb')],{'host':_0x02de('0xd'),'port':0x18eb});var io=require(_0x02de('0xe'))(new Redis(config[_0x02de('0xb')]));var cmHopper=require(_0x02de('0xf'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require('../rpc/setting');var Interval=require(_0x02de('0x10'));var Action=require('./models/action');var History=require('./models/history');var Final=require(_0x02de('0x11'));var AgentComplete=require(_0x02de('0x12'));var QueueCallerAbandon=require(_0x02de('0x13'));var Hangup=require(_0x02de('0x14'));var ipAgi=process[_0x02de('0x15')][_0x02de('0x16')]||_0x02de('0x17');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x02de('0x18')][_0x02de('0x19')]=function(_0x30de5a){this['tail']=this['tail']?this[_0x02de('0x1a')][_0x02de('0x1b')](_0x30de5a):_0x30de5a();};function Dialer(_0x1ba505,_0x1e217c){this[_0x02de('0x1c')]=new Sequence();this[_0x02de('0x1d')]=_0x1e217c;this['voiceQueues']=_0x1ba505[_0x02de('0x1e')];this['campaigns']=_0x1ba505[_0x02de('0x1f')];this[_0x02de('0x20')]=_0x1ba505[_0x02de('0x20')];this['trunks']=_0x1ba505[_0x02de('0x21')];this['maxNumberOriginate']=config[_0x02de('0x22')]||0x2;this[_0x02de('0x23')]={};this[_0x02de('0x24')]={};this[_0x02de('0x25')]={};this[_0x02de('0x26')]={};this['optionPredictive']={};this[_0x02de('0x27')]={};this[_0x02de('0x28')]={};this['ivrOriginated']={};this[_0x02de('0x29')]={};this['queueBookedRR']={};this['queuesSummary']={};ami['on']('agentconnect',this[_0x02de('0x2a')]['bind'](this));ami['on'](_0x02de('0x2b'),this[_0x02de('0x2c')][_0x02de('0x2d')](this));ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));ami['on'](_0x02de('0x2e'),this[_0x02de('0x2f')][_0x02de('0x2d')](this));ami['on'](_0x02de('0x30'),this[_0x02de('0x31')]['bind'](this));ami['on']('custom:queuesummarycomplete',this[_0x02de('0x32')][_0x02de('0x2d')](this));ami['on']('hangup',this[_0x02de('0x33')][_0x02de('0x2d')](this));ami['on'](_0x02de('0x34'),this[_0x02de('0x35')]['bind'](this));ami['on'](_0x02de('0x36'),this[_0x02de('0x37')][_0x02de('0x2d')](this));ami['on']('queuemember',this[_0x02de('0x38')][_0x02de('0x2d')](this));ami['on'](_0x02de('0x39'),this[_0x02de('0x3a')]['bind'](this));this[_0x02de('0x3b')]();this['loopClearZombieChannels']();RpcSetting[_0x02de('0x3c')]()['then'](function(_0x406e11){previewRecallmeReminderInterval=_0x406e11['previewRecallmeReminderInterval'];});}function isNotNull(_0x3982fb){return _0x3982fb!==null&&!_[_0x02de('0x3d')](_0x3982fb);}function msgResponse(_0x3be065,_0x16e621,_0x4462ba){return{'action':_0x3be065,'response':_0x16e621,'message':_0x4462ba,'stack':_0x4462ba};}function emit(_0x547ca9,_0x197cc1,_0x16a318){io['to'](_0x547ca9)[_0x02de('0x3e')](_0x197cc1,_0x16a318);}function emitOutboundVoiceQueueSummary(_0x3b9501){if(_0x3b9501['type']===_0x02de('0x3f')){logger[_0x02de('0x40')](_0x02de('0x41'),util[_0x02de('0x42')](_0x3b9501,{'showHidden':![],'depth':null}));emit(util[_0x02de('0x43')](_0x02de('0x44'),_0x3b9501[_0x02de('0x45')]),_0x02de('0x46'),_0x3b9501);}}function checkGetDataPredictive(_0x5ab643){if(isNotNull(_0x5ab643)&&!_[_0x02de('0x47')](_0x5ab643)){loggerPredictive[_0x02de('0x48')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x02de('0x48')](_0x02de('0x49'),_0x5ab643[_0x02de('0x4a')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x4b'),_0x5ab643[_0x02de('0x4c')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x4d'),_0x5ab643['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x02de('0x48')](_0x02de('0x4e'),_0x5ab643[_0x02de('0x4f')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x50'),_0x5ab643['predictiveIntervalAvgHoldtime']);loggerPredictive[_0x02de('0x48')](_0x02de('0x51'),_0x5ab643['predictiveIntervalAvgTalktime']);loggerPredictive[_0x02de('0x48')](_0x02de('0x52'));if(_0x5ab643[_0x02de('0x4a')]>0x0){if(!_[_0x02de('0x3d')](_0x5ab643[_0x02de('0x53')])&&_0x5ab643[_0x02de('0x53')]>0x0){return!![];}loggerPredictive[_0x02de('0x48')](_0x02de('0x54'));if(!_[_0x02de('0x3d')](_0x5ab643[_0x02de('0x55')])&&_0x5ab643[_0x02de('0x55')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x02de('0x48')](_0x02de('0x56'));}}else{loggerPredictive['info'](_0x02de('0x57'));}return![];}function mergeDataErlangB(_0x3f0ed5){return function(_0x1c6190){loggerPredictive['info']('---------\x20ErlangB\x20---------');loggerPredictive[_0x02de('0x48')](_0x02de('0x58'),_0x1c6190[_0x02de('0x59')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x5a'),_0x1c6190['erlangCallToSecond']);loggerPredictive[_0x02de('0x48')](_0x02de('0x5b'),_0x1c6190[_0x02de('0x5c')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x5d'),_0x1c6190[_0x02de('0x5e')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x5b'),_0x1c6190[_0x02de('0x5c')]);loggerPredictive[_0x02de('0x48')](_0x02de('0x52'));_['merge'](_0x3f0ed5,_0x1c6190);};}function ifInterval(_0x39fde2,_0x10bad4){if(_[_0x02de('0x3d')](_0x10bad4)){return![];}return utils['getSeconds'](undefined,_0x10bad4)<_0x39fde2*0x3c;}function clearPredictiveAttributes(_0x1c64c3){if(_0x1c64c3[_0x02de('0x28')]){_0x1c64c3[_0x02de('0x28')]=undefined;loggerPredictive[_0x02de('0x40')](_0x1c64c3['name'],'startProgressive\x20value\x20cleared');}if(_0x1c64c3[_0x02de('0x27')]){_0x1c64c3['startPredictive']=undefined;loggerPredictive[_0x02de('0x40')](_0x1c64c3[_0x02de('0x45')],_0x02de('0x5f'));}if(_0x1c64c3[_0x02de('0x60')]){clearInterval(_0x1c64c3[_0x02de('0x60')]);_0x1c64c3[_0x02de('0x60')]=undefined;loggerPredictive[_0x02de('0x40')](_0x1c64c3[_0x02de('0x45')],_0x02de('0x61'));}}function loggerCatchPredictive(_0x43500a,_0x43b632){return function(_0x30d7bd){loggerPredictive[_0x02de('0x62')](_0x43b632['name'],_0x43500a);loggerPredictive[_0x02de('0x62')](_0x30d7bd[_0x02de('0x63')]);clearPredictiveAttributes(_0x43b632);};}function loggerCatch(_0x454287){return function(_0x52a6ba){logger[_0x02de('0x62')](_0x454287,util[_0x02de('0x42')](_0x52a6ba,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x1ce780,_0x4b23d9,_0x387622){return function(_0x4a75a3){utils[_0x02de('0x64')](_0x4b23d9,_0x387622,0x0);logger['error'](_0x1ce780,util[_0x02de('0x42')](_0x4a75a3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5a6937){return function(_0x398517){if(isNotNull(_0x398517)&&isNotNull(_0x398517[0x0])){if(_0x398517[0x0][_0x02de('0x65')]>0x0){_0x5a6937[_0x02de('0x66')]=utils[_0x02de('0x67')]['CONTACTS_RESCHEDULED'];logger['info'](_0x02de('0x68')+_0x5a6937[_0x02de('0x45')],_0x398517[0x0][_0x02de('0x65')],_0x02de('0x69'));}else{_0x5a6937[_0x02de('0x66')]=utils[_0x02de('0x67')]['NO_AVAILABLE_CONTACTS'];logger[_0x02de('0x48')]('[getContactDialer2][Empty]'+_0x5a6937[_0x02de('0x45')]);}}};}function createObjHistory(_0x34b758,_0x5a08d9,_0x4a39f9,_0x30e6fb,_0x3e4c5a){_0x34b758[_0x02de('0x66')]=_0x4a39f9;var _0x49ede6=new Action(_0x34b758,_0x5a08d9);var _0x234c31=new History(_0x49ede6);_0x234c31[_0x02de('0x6a')]=_0x30e6fb;_0x234c31['statedesc']=_0x3e4c5a;_0x234c31[_0x02de('0x6b')]=_0x49ede6[_0x02de('0x6c')];return _0x234c31;}function unlockQueueStatus(_0x20a822,_0x1e7bda){setTimeout(function(){if(_[_0x02de('0x3d')](_0x20a822['queueStatusComplete'])){loggerBooked[_0x02de('0x62')]('[unlockQueueStatus][undefined]',_0x1e7bda);}_0x20a822[_0x02de('0x6d')]=!![];loggerBooked[_0x02de('0x48')](_0x02de('0x6e'),_0x1e7bda,JSON['stringify'](_['pick'](_0x20a822,[_0x02de('0x45'),_0x02de('0x6d')])));},0x1f3);}function checkInterval(_0x3c8089){return function(){if(!isNotNull(_0x3c8089[_0x02de('0x6f')])){_0x3c8089[_0x02de('0x66')]=utils[_0x02de('0x67')][_0x02de('0x70')];throw _0x3c8089['name']+_0x02de('0x71');}if(!isNotNull(_0x3c8089[_0x02de('0x6f')][_0x02de('0x72')])){_0x3c8089[_0x02de('0x66')]=utils['CAMPAIGN_STATUS'][_0x02de('0x70')];throw _0x3c8089['name']+_0x02de('0x71');}if(!isNotNull(_[_0x02de('0x47')](_0x3c8089[_0x02de('0x6f')][_0x02de('0x72')]))){_0x3c8089[_0x02de('0x66')]=utils[_0x02de('0x67')]['NULL_INTERVAL'];throw _0x3c8089[_0x02de('0x45')]+_0x02de('0x71');}};}function checkIsIVRCampaignActive(_0x58bdc0){return function(){if(!utils[_0x02de('0x73')](_0x58bdc0)){_0x58bdc0[_0x02de('0x66')]=utils[_0x02de('0x67')][_0x02de('0x74')];throw _0x58bdc0[_0x02de('0x45')]+_0x02de('0x75');}};}function emitCampaignSummary(_0x547df8){if(utils[_0x02de('0x76')](_0x547df8)){emit(util[_0x02de('0x43')](_0x02de('0x77'),_0x547df8[_0x02de('0x45')]),_0x02de('0x78'),_0x547df8);}}function loggerCatchQueueSummary(_0x45cb00,_0x7ecea8){return function(_0x16398a){clearPredictiveAttributes(_0x7ecea8);emitCampaignSummary(_0x7ecea8);loggerSyncQueueSummary[_0x02de('0x40')](_0x45cb00,util[_0x02de('0x42')](_0x16398a,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x28bd97){if(_0x28bd97['sendMessageOneNotActive']){if(_0x28bd97[_0x02de('0x79')]===0x0){_0x28bd97[_0x02de('0x7a')]=![];_0x28bd97[_0x02de('0x66')]=utils[_0x02de('0x67')]['INACTIVE'];loggerSyncQueueSummary['debug'](_0x02de('0x7b'),_0x28bd97[_0x02de('0x45')],_0x02de('0x7c'));}else{_0x28bd97[_0x02de('0x66')]=utils[_0x02de('0x67')][_0x02de('0x7d')];loggerSyncQueueSummary[_0x02de('0x40')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x28bd97[_0x02de('0x45')],_0x02de('0x7e'));}emitCampaignSummary(_0x28bd97);}}function myreject(_0x262d12){return function(_0x170781){return _0x262d12(msgResponse(_0x02de('0x7f'),_0x02de('0x80'),JSON[_0x02de('0x81')](_0x170781)));};}Dialer[_0x02de('0x18')][_0x02de('0x82')]=function(_0x5ae5af){return!_[_0x02de('0x3d')](_0x5ae5af)&&_0x5ae5af&&!_[_0x02de('0x3d')](_0x5ae5af[_0x02de('0x45')])&&!_[_0x02de('0x3d')](_0x5ae5af[_0x02de('0x83')])&&_0x5ae5af[_0x02de('0x83')]&&(this[_0x02de('0x21')][util[_0x02de('0x43')](_0x02de('0x84'),_0x5ae5af['name'])][_0x02de('0x85')]===_0x02de('0x86')||this[_0x02de('0x21')][util[_0x02de('0x43')]('SIP/%s',_0x5ae5af[_0x02de('0x45')])]['status']==='unmonitored');};Dialer[_0x02de('0x18')][_0x02de('0x87')]=function(_0x4ecd24){var _0x9849ff=this;return function(){if(!_0x9849ff[_0x02de('0x82')](_0x4ecd24[_0x02de('0x88')])){if(!_0x9849ff[_0x02de('0x82')](_0x4ecd24[_0x02de('0x89')])){_0x4ecd24[_0x02de('0x66')]=utils[_0x02de('0x67')]['TRUNK_NOT_REACHABLE'];throw _0x4ecd24['name']+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer[_0x02de('0x18')][_0x02de('0x8a')]=function(_0x29f692,_0x2973af,_0x28cfdb,_0x19ad32){var _0x193d93=this;return function(){var _0x54ff1b=!![];return _0x193d93[_0x02de('0x8b')](_0x29f692,_0x2973af,_0x28cfdb,_0x19ad32,_0x54ff1b);};};Dialer['prototype'][_0x02de('0x8c')]=function(_0x5b998f,_0x2be192,_0x24d32a,_0x5ada87){var _0x311da5=this;return function(){var _0x3a3aa8=![];return _0x311da5[_0x02de('0x8b')](_0x5b998f[_0x02de('0x72')],_0x2be192,_0x24d32a,_0x5ada87,_0x3a3aa8);};};Dialer['prototype'][_0x02de('0x8b')]=function(_0x5234,_0x7db152,_0x3beb4a,_0x4a354b,_0xb6f2a1){var _0x5453a3=[];return new Promise(function(_0x1481e9,_0x19fbbb){if(!isNotNull(_0x5234)){_0x4a354b[_0x02de('0x66')]=utils[_0x02de('0x67')][_0x02de('0x70')];return _0x19fbbb(msgResponse('ifTime','Failure',_0x3beb4a+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x02de('0x47')](_0x5234)){_0x4a354b[_0x02de('0x66')]=utils['CAMPAIGN_STATUS'][_0x02de('0x8d')];return _0x19fbbb(msgResponse(_0x02de('0x8e'),_0x02de('0x8f'),_0x3beb4a+_0x02de('0x90')));}if(_0x7db152&&_[_0x02de('0x3d')](config['timezones'][_0x7db152])){_0x4a354b[_0x02de('0x66')]=utils[_0x02de('0x67')][_0x02de('0x91')];return _0x19fbbb(msgResponse(_0x02de('0x8e'),_0x02de('0x8f'),_0x3beb4a+_0x02de('0x92')+_0x7db152));}if(_[_0x02de('0x93')](_0x5234)){for(var _0x4578af=0x0;_0x4578af<_0x5234[_0x02de('0x94')];_0x4578af+=0x1){_0x5453a3[_0x02de('0x95')](ami[_0x02de('0x96')]({'action':_0x02de('0x97'),'command':util[_0x02de('0x43')](_0x02de('0x98'),_0x5234[_0x4578af][_0x02de('0x99')],!_[_0x02de('0x3d')](config[_0x02de('0x9a')][_0x7db152])?_0x7db152:'')})['then'](function(_0x4403b0){return _0x4403b0[_0x02de('0x9b')][_0x02de('0x9c')]('true')>=0x0;})[_0x02de('0x9d')](myreject(_0x19fbbb)));}}else{_0x5453a3[_0x02de('0x95')](ami[_0x02de('0x96')]({'action':'command','command':util[_0x02de('0x43')](_0x02de('0x98'),_0x5234,!_[_0x02de('0x3d')](config[_0x02de('0x9a')][_0x7db152])?_0x7db152:'')})['then'](function(_0x493a64){return _0x493a64[_0x02de('0x9b')]['indexOf'](_0x02de('0x9e'))>=0x0;})['catch'](myreject(_0x19fbbb)));}Promise['all'](_0x5453a3)['then'](function(_0x3832aa){var _0x222411=_[_0x02de('0x9f')](_0x3832aa);if(_0x222411){return _0x1481e9(_0x222411);}else{_0x4a354b['message']=_0xb6f2a1?utils['CAMPAIGN_STATUS']['OVERTIME_GLOBAL_INTERVAL']:utils[_0x02de('0x67')][_0x02de('0xa0')];return _0x19fbbb(msgResponse(_0x02de('0xa1'),_0x02de('0x8f'),_0x02de('0xa2')+_0xb6f2a1+'\x20'+_0x3beb4a+_0x02de('0xa3')+util['inspect'](_0x5234,{'showHidden':![],'depth':null})+_0x02de('0xa4')+_0x7db152));}})[_0x02de('0x9d')](function(_0x5e01a7){return _0x19fbbb(msgResponse(_0x02de('0x8e'),_0x02de('0x8f'),JSON[_0x02de('0x81')](_0x5e01a7)));});});};Dialer['prototype'][_0x02de('0x3b')]=function(){var _0x4aa0fe=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})['then'](function(){setInterval(function(){_0x4aa0fe[_0x02de('0xa5')]();},0x3e8);});};Dialer[_0x02de('0x18')][_0x02de('0xa5')]=function(){var _0x4250c6=this;var _0x5409de;for(var _0x303d21 in this['campaigns']){if(typeof this['campaigns'][_0x303d21]!==_0x02de('0xa6')){_0x5409de=this['campaigns'][_0x303d21];if(utils[_0x02de('0x76')](_0x5409de)&&utils[_0x02de('0x73')](_0x5409de)){_0x5409de[_0x02de('0x7a')]=!![];Promise[_0x02de('0xa7')]()[_0x02de('0xa8')](checkIsIVRCampaignActive(_0x5409de))['then'](checkInterval(_0x5409de))[_0x02de('0xa8')](_0x4250c6[_0x02de('0x87')](_0x5409de))[_0x02de('0xa8')](_0x4250c6[_0x02de('0x8a')](_0x5409de[_0x02de('0xa9')],_0x5409de[_0x02de('0xaa')],_0x5409de['name'],_0x5409de))[_0x02de('0xa8')](_0x4250c6[_0x02de('0x8c')](_0x5409de[_0x02de('0x6f')],_0x5409de[_0x02de('0xaa')],_0x5409de[_0x02de('0x45')],_0x5409de))[_0x02de('0xa8')](_0x4250c6[_0x02de('0xab')](_0x5409de))[_0x02de('0x9d')](loggerCatchQueueSummary(_0x02de('0xac'),_0x5409de));}else{notSendMessagesCampaign(_0x5409de);}}}};Dialer[_0x02de('0x18')][_0x02de('0xad')]=function(_0x4b3712){if(_0x4b3712['dialMethod']!==_0x02de('0x9')){clearPredictiveAttributes(_0x4b3712);}switch(_0x4b3712['dialMethod']){case _0x02de('0xae'):this['handlePower'](_0x4b3712,0x1);break;case _0x02de('0xaf'):this[_0x02de('0xb0')](_0x4b3712,_0x4b3712['dialPowerLevel']);break;case'predictive':this['predictive'](_0x4b3712);break;case'booked':this[_0x02de('0xb0')](_0x4b3712,0x1);break;default:logger[_0x02de('0x62')](_0x02de('0xb1'),_0x4b3712[_0x02de('0x45')],'method\x20not\x20recognized');}};Dialer[_0x02de('0x18')][_0x02de('0x8e')]=function(_0x11b37f,_0x50d071){var _0x28d0e8=_0x11b37f[_0x02de('0xaa')];var _0x3e1666=_0x50d071?_0x11b37f[_0x02de('0xa9')]:_0x11b37f[_0x02de('0x6f')][_0x02de('0x72')];logger['silly']('Dialer::ifTime()',_0x3e1666,_0x28d0e8,_0x11b37f['name'],util[_0x02de('0x43')]('Voice\x20Queue\x20%s\x20$s',_0x11b37f[_0x02de('0x45')],_0x11b37f['id']));var _0x26729c=null;return Interval[_0x02de('0xb2')](_0x3e1666,_0x28d0e8)[_0x02de('0xa8')](function(_0x2f6837){if(_0x2f6837===!![]){return _0x2f6837;}else{_0x11b37f[_0x02de('0x66')]=_0x50d071?utils[_0x02de('0x67')][_0x02de('0xb3')]:utils[_0x02de('0x67')][_0x02de('0xa0')];_0x26729c=msgResponse('[ifTime][promiseAll]',_0x02de('0x8f'),_0x02de('0xa2')+_0x50d071+'\x20'+_0x11b37f[_0x02de('0x45')]+_0x02de('0xa3')+util['inspect'](_0x3e1666,{'showHidden':![],'depth':null})+_0x02de('0xa4')+_0x28d0e8);}if(_0x26729c!==null){logger[_0x02de('0xb4')](_0x02de('0xb5'),_0x26729c);_0x26729c[_0x02de('0xb6')]=_0x50d071;throw _0x26729c;}})[_0x02de('0x9d')](function(_0x159015){logger[_0x02de('0x62')](_0x02de('0xb7'),_0x159015);throw msgResponse('[ifTime][Action]','Error',util[_0x02de('0x42')](_0x159015,{'showHidden':![],'depth':null}));});};Dialer['prototype']['syncAgentConnect']=function(_0x564511){if(this[_0x02de('0x1e')][_0x564511[_0x02de('0xb8')]]){if(this[_0x02de('0x26')][_0x564511['uniqueid']]&&this[_0x02de('0x26')][_0x564511['uniqueid']][_0x02de('0xb9')]!=='ivr'){this[_0x02de('0xba')](this[_0x02de('0x1e')][_0x564511['queue']]);this[_0x02de('0x26')][_0x564511[_0x02de('0xbb')]][_0x02de('0xbc')]=moment()[_0x02de('0x43')](_0x02de('0xbd'));}}};Dialer[_0x02de('0x18')][_0x02de('0x2f')]=function(_0x106719){var _0x3e9ed4=this[_0x02de('0x26')][_0x106719[_0x02de('0xbb')]];if(this[_0x02de('0x1e')][_0x106719['queue']]){if(_0x3e9ed4&&_0x3e9ed4[_0x02de('0xb9')]!==_0x02de('0xbe')){delete this['uniqueId'][_0x106719[_0x02de('0xbb')]];this['voiceQueues'][_0x106719[_0x02de('0xb8')]][_0x02de('0xbf')]+=0x1;var _0x8a57b5=new AgentComplete(_0x3e9ed4,_0x106719);if(_0x106719[_0x02de('0xc0')]==='agent'){_0x8a57b5[_0x02de('0xc1')]=this[_0x02de('0x1e')][_0x106719[_0x02de('0xb8')]][_0x02de('0xc2')]&&this[_0x02de('0x1e')][_0x106719['queue']][_0x02de('0xc3')]?moment()['format'](_0x02de('0xbd')):undefined;}hopperUtils[_0x02de('0xc4')](_0x8a57b5)[_0x02de('0x9d')](loggerCatch(_0x02de('0xc5')));hopperUtils[_0x02de('0xc6')](_0x8a57b5)[_0x02de('0x9d')](loggerCatch(_0x02de('0xc7')));}}};Dialer[_0x02de('0x18')][_0x02de('0x2c')]=function(_0x5ddc6f){var _0x4746e5=this[_0x02de('0x26')][_0x5ddc6f[_0x02de('0xbb')]];var _0x47946d=this;var _0x4dc3ed=![];var _0x56921b;var _0x589d02;if(this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]]){if(_0x4746e5&&_0x4746e5[_0x02de('0xb9')]!=='ivr'){delete this[_0x02de('0x26')][_0x5ddc6f['uniqueid']];this['updateOriginated'](this[_0x02de('0x1e')][_0x5ddc6f['queue']]);_0x4746e5['droptime']=moment()[_0x02de('0x43')](_0x02de('0xbd'));var _0x2301ef=new QueueCallerAbandon(_0x4746e5,_0x5ddc6f);if(utils[_0x02de('0xc8')](_0x4746e5[_0x02de('0xc9')],_0x4746e5['responsetime'])>=_0x4746e5[_0x02de('0xca')]){this[_0x02de('0x1e')][_0x5ddc6f['queue']][_0x02de('0xcb')]+=0x1;this['voiceQueues'][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xcc')]+=0x1;this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x2301ef[_0x02de('0x6a')]=0xa;_0x2301ef[_0x02de('0xcd')]=_0x02de('0xce');_0x2301ef[_0x02de('0xcf')]=_0x02de('0xd0');_0x2301ef[_0x02de('0xc1')]=this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xc2')]?moment()[_0x02de('0x43')](_0x02de('0xbd')):undefined;_0x2301ef[_0x02de('0xd1')]+=0x1;_0x2301ef[_0x02de('0xd2')]+=0x1;_0x56921b=this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xd3')];_0x589d02=this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0x02de('0xd4')](_0x2301ef,_0x2301ef['state'],_0x4746e5[_0x02de('0xd5')])[_0x02de('0xa8')](function(_0x140949){_0x4dc3ed=_0x140949[_0x02de('0xd6')]==0x1;if(_0x2301ef[_0x02de('0xd1')]>=_0x47946d[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]]['dialDropMaxRetry']){_0x47946d[_0x02de('0xd7')](_0x2301ef,_0x140949[_0x02de('0xd6')]);}else{hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x2301ef[_0x02de('0xd1')],'scheduledat':moment()[_0x02de('0xd8')](_0x47946d['voiceQueues'][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xd3')],_0x02de('0xd9'))['format'](_0x02de('0xbd')),'ContactId':_0x4746e5[_0x02de('0xda')],'ListId':_0x4746e5[_0x02de('0xdb')],'VoiceQueueId':_0x4746e5[_0x02de('0xdc')]||undefined,'CampaignId':_0x4746e5['CampaignId']||undefined})['catch'](loggerCatch(_0x02de('0xdd')));var _0x17f831=new History(_0x2301ef);_0x17f831[_0x02de('0x6a')]=0xa;_0x17f831[_0x02de('0xcd')]=_0x02de('0xce');_0x17f831[_0x02de('0x6c')]=moment()[_0x02de('0x43')](_0x02de('0xbd'));_0x17f831[_0x02de('0x6b')]=_0x17f831[_0x02de('0x6c')];_0x17f831['calleridname']=_0x2301ef['calleridname'];_0x17f831[_0x02de('0xde')]=_0x2301ef[_0x02de('0xde')];hopperUtils[_0x02de('0xc4')](_0x17f831)[_0x02de('0x9d')](loggerCatch(_0x02de('0xdf')));}})[_0x02de('0xa8')](function(){if(_0x4dc3ed)hopperUtils[_0x02de('0xe0')](_0x2301ef,_0x56921b,_0x589d02)['then'](function(){return 0x1;});});}else{this['voiceQueues'][_0x5ddc6f['queue']][_0x02de('0x4f')]+=0x1;this['voiceQueues'][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xe1')]+=0x1;_0x2301ef[_0x02de('0x6a')]=0xb;_0x2301ef[_0x02de('0xcd')]=_0x02de('0xe2');_0x2301ef['dropreason']=_0x02de('0xe3');_0x2301ef[_0x02de('0xe4')]+=0x1;_0x2301ef[_0x02de('0xd2')]+=0x1;_0x56921b=this[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xe5')];_0x589d02=this['voiceQueues'][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xe6')];hopperUtils['verifyAdditionalPhones'](_0x2301ef,_0x2301ef[_0x02de('0x6a')],_0x4746e5[_0x02de('0xd5')])[_0x02de('0xa8')](function(_0x26a9f6){if(_0x2301ef[_0x02de('0xe4')]>=_0x47946d[_0x02de('0x1e')][_0x5ddc6f[_0x02de('0xb8')]][_0x02de('0xe7')]){_0x47946d[_0x02de('0xd7')](_0x2301ef,_0x26a9f6[_0x02de('0xd6')]);}else{hopperUtils['rescheduleContact']({'active':![],'countabandonedretry':_0x2301ef['countabandonedretry'],'scheduledat':moment()['add'](_0x47946d[_0x02de('0x1e')][_0x5ddc6f['queue']]['dialAbandonedRetryFrequency'],_0x02de('0xd9'))[_0x02de('0x43')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4746e5['ContactId'],'ListId':_0x4746e5[_0x02de('0xdb')],'VoiceQueueId':_0x4746e5[_0x02de('0xdc')]||undefined,'CampaignId':_0x4746e5[_0x02de('0xe8')]||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));var _0x53e19e=new History(_0x2301ef);_0x53e19e[_0x02de('0x6a')]=0xb;_0x53e19e['statedesc']=_0x02de('0xe2');_0x53e19e[_0x02de('0x6c')]=moment()['format'](_0x02de('0xbd'));_0x53e19e[_0x02de('0x6b')]=_0x53e19e[_0x02de('0x6c')];_0x53e19e['calleridname']=_0x2301ef[_0x02de('0xe9')];_0x53e19e[_0x02de('0xde')]=_0x2301ef[_0x02de('0xde')];hopperUtils[_0x02de('0xc4')](_0x53e19e)[_0x02de('0x9d')](loggerCatch(_0x02de('0xea')));}})[_0x02de('0xa8')](function(){if(_0x4dc3ed)hopperUtils[_0x02de('0xe0')](_0x2301ef,_0x56921b,_0x589d02)[_0x02de('0xa8')](function(){return 0x1;});});}}}};Dialer[_0x02de('0x18')][_0x02de('0x35')]=function(_0x1cd3b5){if(this['actions'][_0x1cd3b5[_0x02de('0xbb')]]){this[_0x02de('0x24')][_0x1cd3b5[_0x02de('0xbb')]]['channel']=_0x1cd3b5[_0x02de('0xeb')];}if(this[_0x02de('0x26')][_0x1cd3b5[_0x02de('0xbb')]]){this['uniqueId'][_0x1cd3b5['uniqueid']][_0x02de('0xeb')]=_0x1cd3b5['channel'];}};Dialer['prototype'][_0x02de('0x38')]=function(_0x3c6a57){if(!this['actions'][_0x3c6a57[_0x02de('0xec')]]){return;}var _0x3a1535=this['voiceQueues'][this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]][_0x02de('0xb8')]][_0x02de('0xed')]||_0x02de('0xee');if(_0x3a1535===_0x02de('0xef')){if(this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]]&&_[_0x02de('0xf0')](this['actions'][_0x3c6a57[_0x02de('0xec')]][_0x02de('0xf1')])&&_0x3c6a57['status']==='1'&&_0x3c6a57[_0x02de('0xf2')]==='0'){if(this['agents'][_0x3c6a57[_0x02de('0xf3')]]){if(!this[_0x02de('0x20')][_0x3c6a57['stateinterface']][_0x02de('0xf1')]){this[_0x02de('0x20')][_0x3c6a57['stateinterface']][_0x02de('0xf1')]=!![];this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]][_0x02de('0xf1')]=!![];this[_0x02de('0x24')][_0x3c6a57['actionid']][_0x02de('0xf3')]=_0x3c6a57['stateinterface'];}}}}else if(_0x3a1535==='rrmemory'){if(this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]]){if(this[_0x02de('0x20')][_0x3c6a57[_0x02de('0xf3')]]){this[_0x02de('0x24')][_0x3c6a57['actionid']][_0x02de('0xf3')]=_0x3c6a57[_0x02de('0xf3')];if(_['isNil'](this['queueBooked'][this['actions'][_0x3c6a57[_0x02de('0xec')]]['queue']])){this[_0x02de('0x29')][this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]][_0x02de('0xb8')]]=[];}this[_0x02de('0x29')][this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]][_0x02de('0xb8')]][_0x02de('0x95')](_[_0x02de('0xf4')](_[_0x02de('0xf5')](this[_0x02de('0x24')][_0x3c6a57[_0x02de('0xec')]],[_0x02de('0xf6'),'stateinterface']),{'status':_0x3c6a57[_0x02de('0x85')],'paused':_0x3c6a57[_0x02de('0xf2')]}));}}}};Dialer['prototype']['syncQueueStatusComplete']=function(_0x4e53c0){if(!this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]){return;}var _0x4f65d6=this;var _0x9abd26=this[_0x02de('0x1e')][this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]];var _0x287c6c=_0x9abd26['strategy']||'rrmemory';if(_0x287c6c===_0x02de('0xef')){if(this[_0x02de('0x24')][_0x4e53c0['actionid']]&&this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xf3')]){this[_0x02de('0x1d')][_0x02de('0xf7')](this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xf6')],this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xf3')])[_0x02de('0x9d')](function(_0x96c5f9){logger[_0x02de('0x62')](_0x02de('0xf8'),util[_0x02de('0x42')](_0x96c5f9,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4f65d6['updateOriginated'](_0x4f65d6['voiceQueues'][_0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]);_0x4f65d6[_0x02de('0x20')][_0x4f65d6['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xf3')]][_0x02de('0xf1')]=![];delete _0x4f65d6[_0x02de('0x24')][_0x4e53c0['actionid']];unlockQueueStatus(_0x9abd26);});}else{this[_0x02de('0xba')](this[_0x02de('0x1e')][this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]);hopperUtils[_0x02de('0xf9')]({'active':![],'ContactId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xda')],'ListId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]['ListId'],'VoiceQueueId':this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xdc')]||undefined,'CampaignId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0xfa')));delete this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]];unlockQueueStatus(_0x9abd26);}}else if(_0x287c6c===_0x02de('0xee')){var _0xcccf53;if(this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]&&!_[_0x02de('0x47')](this[_0x02de('0x29')][this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]])){if(this['queueBookedRR'][_0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]){this[_0x02de('0xfb')][_0x4f65d6['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]=this[_0x02de('0xfb')][this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]?this[_0x02de('0xfb')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]:this['queueBooked'][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]['queue']]?this[_0x02de('0x29')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]][_0x02de('0xfc')]||0x0:0x0;}this[_0x02de('0x29')][this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xb8')]][_0x02de('0xfc')]=this[_0x02de('0xfb')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]];for(var _0x3e309a=0x0;_0x3e309a<this[_0x02de('0x29')][this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xb8')]]['length'];_0x3e309a+=0x1){_0xcccf53=rr(this[_0x02de('0x29')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]);this[_0x02de('0xfb')][_0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]['queue']]=this[_0x02de('0x29')][this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xb8')]][_0x02de('0xfc')];if(_0xcccf53[_0x02de('0x85')]==='1'&&_0xcccf53[_0x02de('0xf2')]==='0'){break;}}if(!_[_0x02de('0xf0')](_0xcccf53)){this[_0x02de('0x20')][_0xcccf53[_0x02de('0xf3')]][_0x02de('0xfd')]=_[_0x02de('0x3d')](this[_0x02de('0x20')][_0xcccf53[_0x02de('0xf3')]][_0x02de('0xfd')])?!![]:this[_0x02de('0x20')][_0xcccf53['stateinterface']][_0x02de('0xfd')];}loggerBooked[_0x02de('0x48')]('[booked][RR]',_0x4e53c0[_0x02de('0xec')],_0x02de('0xfe'),JSON[_0x02de('0x81')](_[_0x02de('0xf5')](this['agents'][_0xcccf53[_0x02de('0xf3')]],[_0x02de('0x45'),'unlockRR'])),_0x02de('0xff'),JSON['stringify'](_0xcccf53[_0x02de('0xf6')]));if(!_[_0x02de('0xf0')](_0xcccf53)&&_0xcccf53['status']==='1'&&_0xcccf53['paused']==='0'&&this[_0x02de('0x20')][_0xcccf53[_0x02de('0xf3')]][_0x02de('0xfd')]){this[_0x02de('0x20')][_0xcccf53[_0x02de('0xf3')]]['unlockRR']=![];this['queueBooked'][_0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]=[];this[_0x02de('0x1d')][_0x02de('0xf7')](_0xcccf53[_0x02de('0xf6')],_0xcccf53['stateinterface'])[_0x02de('0x9d')](function(_0x488070){logger[_0x02de('0x62')](_0x02de('0xf8'),util[_0x02de('0x42')](_0x488070,{'showHidden':![],'depth':null}));})[_0x02de('0x1b')](function(){_0x4f65d6[_0x02de('0xba')](_0x4f65d6[_0x02de('0x1e')][_0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]['queue']]);setTimeout(function(){_0x4f65d6['agents'][_0xcccf53[_0x02de('0xf3')]]['unlockRR']=!![];loggerBooked[_0x02de('0x48')](_0x02de('0x100'),_0x4e53c0[_0x02de('0xec')],_0x02de('0xfe'),JSON[_0x02de('0x81')](_['pick'](_0x4f65d6[_0x02de('0x20')][_0xcccf53[_0x02de('0xf3')]],[_0x02de('0x45'),'unlockRR'])),_0x02de('0xff'),JSON[_0x02de('0x81')](_0xcccf53['idHopper']));},0xc7);delete _0x4f65d6[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]];unlockQueueStatus(_0x9abd26,_0x4e53c0[_0x02de('0xec')]);});}else{loggerBooked[_0x02de('0x48')](_0x02de('0x101'));this[_0x02de('0xba')](this[_0x02de('0x1e')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]);hopperUtils[_0x02de('0xf9')]({'active':![],'ContactId':this['actions'][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xda')],'ListId':this['actions'][_0x4e53c0['actionid']][_0x02de('0xdb')],'VoiceQueueId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xdc')]||undefined,'CampaignId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0xfa')));delete this['actions'][_0x4e53c0[_0x02de('0xec')]];unlockQueueStatus(_0x9abd26);}}else{loggerBooked[_0x02de('0x48')](_0x02de('0x102'));this[_0x02de('0xba')](this[_0x02de('0x1e')][this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xb8')]]);hopperUtils[_0x02de('0xf9')]({'active':![],'ContactId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]]['ContactId'],'ListId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xdb')],'VoiceQueueId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xdc')]||undefined,'CampaignId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x103')));delete this['actions'][_0x4e53c0[_0x02de('0xec')]];unlockQueueStatus(_0x9abd26);}}else{loggerBooked['info'](_0x02de('0x104'));this[_0x02de('0xba')](this[_0x02de('0x1e')][this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xb8')]]);hopperUtils[_0x02de('0xf9')]({'active':![],'ContactId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xda')],'ListId':this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]][_0x02de('0xdb')],'VoiceQueueId':this[_0x02de('0x24')][_0x4e53c0['actionid']][_0x02de('0xdc')]||undefined,'CampaignId':this['actions'][_0x4e53c0[_0x02de('0xec')]]['CampaignId']||undefined})[_0x02de('0x9d')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x02de('0x24')][_0x4e53c0[_0x02de('0xec')]];unlockQueueStatus(_0x9abd26);}};Dialer[_0x02de('0x18')]['syncOriginateResponse']=function(_0x4e3da9){var _0x3013d3=this['actions'][_0x4e3da9[_0x02de('0xec')]];if(_0x3013d3){delete this[_0x02de('0x24')][_0x4e3da9[_0x02de('0xec')]];_0x3013d3['responsetime']=moment()[_0x02de('0x43')](_0x02de('0xbd'));var _0x40f833=_0x3013d3[_0x02de('0xb9')]===_0x02de('0xbe')?this[_0x02de('0x1f')][_0x3013d3[_0x02de('0xb8')]]:this[_0x02de('0x1e')][_0x3013d3[_0x02de('0x105')]()];if(_0x4e3da9[_0x02de('0x106')]!==_0x02de('0x107')){this['updateOriginated'](_0x40f833);return this[_0x02de('0x108')](_0x3013d3,_0x40f833,_0x4e3da9)[_0x02de('0x9d')](loggerCatch(_0x02de('0x109')));}this[_0x02de('0x26')][_0x4e3da9[_0x02de('0xbb')]]=_0x3013d3;}};Dialer['prototype'][_0x02de('0x37')]=function(_0x3cbcbe){var _0x55bcf9=this;var _0x567015=this[_0x02de('0x26')][_0x3cbcbe[_0x02de('0xbb')]];var _0x26f6e7;if(!_[_0x02de('0xf0')](_0x3cbcbe)&&!_[_0x02de('0xf0')](_0x3cbcbe[_0x02de('0x10a')])&&!_[_0x02de('0xf0')](_0x3cbcbe[_0x02de('0x10a')][_0x02de('0x10b')])&&_0x3cbcbe[_0x02de('0x10c')]===_0x02de('0x10d')&&_0x567015){if(_0x567015[_0x02de('0xb9')]!==_0x02de('0xbe')&&this['voiceQueues'][_0x567015[_0x02de('0xb8')]]['dialAMDActive']&&_0x3cbcbe['value']===_0x02de('0x10e')){delete this[_0x02de('0x26')][_0x3cbcbe[_0x02de('0xbb')]];this[_0x02de('0xba')](this[_0x02de('0x1e')][_0x567015[_0x02de('0xb8')]]);this[_0x02de('0x1e')][_0x567015['queue']][_0x02de('0xbf')]+=0x1;this['voiceQueues'][_0x567015[_0x02de('0xb8')]][_0x02de('0x10f')]+=0x1;_0x26f6e7=new Hangup(_0x567015,_0x3cbcbe);_0x26f6e7[_0x02de('0x6a')]=0x12;_0x26f6e7[_0x02de('0xcd')]='HangupInAMD';_0x26f6e7['membername']=_0x02de('0x110');ami[_0x02de('0x3e')]('custom:amd',ut[_0x02de('0x111')](_0x26f6e7,_0x02de('0x112')));this[_0x02de('0x113')](_0x26f6e7,_0x02de('0x114'),_0x02de('0x115'));}if(_0x567015[_0x02de('0xb9')]!==_0x02de('0xbe')&&this[_0x02de('0x1e')][_0x567015[_0x02de('0xb8')]][_0x02de('0x116')]&&_0x3cbcbe[_0x02de('0x117')]===_0x02de('0x118')){return new Promise(function(_0x15e127,_0xb578fd){delete _0x55bcf9[_0x02de('0x26')][_0x3cbcbe[_0x02de('0xbb')]];_0x55bcf9[_0x02de('0xba')](_0x55bcf9['voiceQueues'][_0x567015['queue']]);_0x55bcf9[_0x02de('0x1e')][_0x567015[_0x02de('0xb8')]]['outboundAnswerCallsDay']+=0x1;_0x55bcf9[_0x02de('0x1e')][_0x567015[_0x02de('0xb8')]][_0x02de('0x10f')]+=0x1;var _0x57af8c=_0x55bcf9[_0x02de('0x1e')][_0x567015[_0x02de('0xb8')]];var _0x256337=new Hangup(_0x567015,_0x3cbcbe);_0x256337[_0x02de('0x6a')]=0x13;_0x256337[_0x02de('0xcd')]=_0x02de('0x119');_0x256337['membername']=_0x02de('0x110');_0x256337[_0x02de('0x11a')]+=0x1;_0x256337[_0x02de('0xd2')]+=0x1;_0x256337[_0x02de('0x112')]=!![];ami[_0x02de('0x3e')](_0x02de('0x11b'),ut['buildObj'](_0x256337,_0x02de('0x112')));hopperUtils[_0x02de('0xc4')](_0x256337)[_0x02de('0x9d')](loggerCatch(_0x02de('0x11c')));if(_0x256337[_0x02de('0x11d')]+_0x256337[_0x02de('0x11e')]+_0x256337['countnoanswerretry']+_0x256337['countnosuchnumberretry']+_0x256337[_0x02de('0xd1')]+_0x256337[_0x02de('0xe4')]+_0x256337['countmachineretry']+_0x256337['countagentrejectretry']>=_0x57af8c[_0x02de('0x11f')]){_0x55bcf9[_0x02de('0x120')](_0x256337,_0x15e127,_0xb578fd,_0x02de('0x121'));}else{if(_0x256337['countmachineretry']>=_0x57af8c[_0x02de('0x122')]){_0x55bcf9[_0x02de('0x123')](_0x256337,_0x15e127,_0xb578fd,_0x02de('0x124'));}else{hopperUtils[_0x02de('0xf9')]({'active':![],'countmachineretry':_0x256337[_0x02de('0x11a')],'scheduledat':moment()[_0x02de('0xd8')](_0x57af8c[_0x02de('0x125')],_0x02de('0xd9'))[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0x256337[_0x02de('0xda')],'ListId':_0x256337['ListId'],'VoiceQueueId':_0x256337[_0x02de('0xdc')]||undefined,'CampaignId':_0x256337[_0x02de('0xe8')]||undefined})['catch'](loggerCatch(_0x02de('0x126')));_0x15e127({'reschedule':0x1});}}});}if(_0x567015['type']===_0x02de('0xbe')&&this['campaigns'][_0x567015['queue']][_0x02de('0x116')]&&_0x3cbcbe[_0x02de('0x117')]===_0x02de('0x10e')){delete this['uniqueId'][_0x3cbcbe[_0x02de('0xbb')]];this[_0x02de('0xba')](this[_0x02de('0x1f')][_0x567015['queue']]);_0x26f6e7=new Hangup(_0x567015,_0x3cbcbe);_0x26f6e7[_0x02de('0x6a')]=0x12;_0x26f6e7['statedesc']='HangupInAMD';_0x26f6e7['membername']=_0x02de('0x110');ami['emit'](_0x02de('0x11b'),ut[_0x02de('0x111')](_0x26f6e7,_0x02de('0x112')));this['saveInDb'](_0x26f6e7,_0x02de('0x127'),_0x02de('0x128'));}if(_0x567015[_0x02de('0xb9')]==='ivr'&&this['campaigns'][_0x567015['queue']]['dialAMDActive']&&_0x3cbcbe[_0x02de('0x117')]===_0x02de('0x118')){return new Promise(function(_0x7b507b,_0x4634c2){delete _0x55bcf9[_0x02de('0x26')][_0x3cbcbe[_0x02de('0xbb')]];_0x55bcf9[_0x02de('0xba')](_0x55bcf9[_0x02de('0x1f')][_0x567015[_0x02de('0xb8')]]);_0x55bcf9[_0x02de('0x1f')][_0x567015['queue']][_0x02de('0xbf')]+=0x1;_0x55bcf9[_0x02de('0x1f')][_0x567015[_0x02de('0xb8')]][_0x02de('0x10f')]+=0x1;var _0x12aab1=_0x55bcf9[_0x02de('0x1f')][_0x567015[_0x02de('0xb8')]];var _0x1c0a55=new Hangup(_0x567015,_0x3cbcbe);_0x1c0a55[_0x02de('0x6a')]=0x13;_0x1c0a55[_0x02de('0xcd')]='Machine';_0x1c0a55[_0x02de('0x129')]=_0x02de('0x110');_0x1c0a55['countmachineretry']+=0x1;_0x1c0a55[_0x02de('0xd2')]+=0x1;_0x1c0a55['amd']=!![];ami[_0x02de('0x3e')](_0x02de('0x11b'),ut[_0x02de('0x111')](_0x1c0a55,_0x02de('0x112')));hopperUtils[_0x02de('0xc4')](_0x1c0a55)['catch'](loggerCatch(_0x02de('0x11c')));if(_0x1c0a55[_0x02de('0x11d')]+_0x1c0a55['countcongestionretry']+_0x1c0a55[_0x02de('0x12a')]+_0x1c0a55[_0x02de('0x12b')]+_0x1c0a55[_0x02de('0xd1')]+_0x1c0a55[_0x02de('0xe4')]+_0x1c0a55[_0x02de('0x11a')]+_0x1c0a55[_0x02de('0x12c')]>=_0x12aab1[_0x02de('0x11f')]){_0x55bcf9[_0x02de('0x120')](_0x1c0a55,_0x7b507b,_0x4634c2,_0x02de('0x121'));}else{if(_0x1c0a55['countmachineretry']>=_0x12aab1[_0x02de('0x122')]){_0x55bcf9[_0x02de('0x123')](_0x1c0a55,_0x7b507b,_0x4634c2,_0x02de('0x124'));}else{hopperUtils[_0x02de('0xf9')]({'active':![],'countmachineretry':_0x1c0a55[_0x02de('0x11a')],'scheduledat':moment()[_0x02de('0xd8')](_0x12aab1[_0x02de('0x125')],_0x02de('0xd9'))[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0x1c0a55['ContactId'],'ListId':_0x1c0a55[_0x02de('0xdb')],'VoiceQueueId':_0x1c0a55[_0x02de('0xdc')]||undefined,'CampaignId':_0x1c0a55[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch('[rescheduleContact][Machine]'));_0x7b507b({'reschedule':0x1});}}});}}};Dialer[_0x02de('0x18')][_0x02de('0x33')]=function(_0x59b210){var _0x2e9d2a=this[_0x02de('0x26')][_0x59b210[_0x02de('0xbb')]];var _0x330651;if(_0x2e9d2a&&_0x2e9d2a[_0x02de('0xb9')]===_0x02de('0xbe')){delete this[_0x02de('0x26')][_0x59b210[_0x02de('0xbb')]];this[_0x02de('0xba')](this['campaigns'][_0x2e9d2a[_0x02de('0xb8')]]);this['campaigns'][_0x2e9d2a[_0x02de('0xb8')]][_0x02de('0x12d')]+=0x1;_0x330651=new Hangup(_0x2e9d2a,_0x59b210);hopperUtils[_0x02de('0xc4')](_0x330651)[_0x02de('0x9d')](loggerCatch(_0x02de('0x12e')));hopperUtils['moveContactManagedDialer'](_0x330651)[_0x02de('0x9d')](loggerCatch(_0x02de('0x12f')));}if(_0x2e9d2a&&_0x2e9d2a[_0x02de('0xb9')]!=='ivr'&&isNotNull(this[_0x02de('0x1e')][_0x2e9d2a['queue']][_0x02de('0x130')])){delete this['uniqueId'][_0x59b210['uniqueid']];this[_0x02de('0xba')](this['voiceQueues'][_0x2e9d2a['queue']]);this[_0x02de('0x1e')][_0x2e9d2a[_0x02de('0xb8')]][_0x02de('0xbf')]+=0x1;this[_0x02de('0x1e')][_0x2e9d2a[_0x02de('0xb8')]][_0x02de('0x10f')]+=0x1;_0x330651=new Hangup(_0x2e9d2a,_0x59b210);_0x330651[_0x02de('0x6a')]=0x10;_0x330651[_0x02de('0xcd')]=_0x02de('0x131');_0x330651[_0x02de('0x129')]=_0x02de('0x132');hopperUtils[_0x02de('0xc4')](_0x330651)['catch'](loggerCatch(_0x02de('0x12e')));hopperUtils['moveContactManagedDialer'](_0x330651)[_0x02de('0x9d')](loggerCatch(_0x02de('0x12f')));}if(_0x2e9d2a&&_0x2e9d2a[_0x02de('0xb9')]!==_0x02de('0xbe')&&!isNotNull(this['voiceQueues'][_0x2e9d2a['queue']][_0x02de('0x130')])){delete this[_0x02de('0x26')][_0x59b210[_0x02de('0xbb')]];this['updateOriginated'](this[_0x02de('0x1e')][_0x2e9d2a['queue']]);this[_0x02de('0x1e')][_0x2e9d2a['queue']][_0x02de('0x133')]+=0x1;_0x330651=new Hangup(_0x2e9d2a,_0x59b210);_0x330651['state']=0xc;_0x330651[_0x02de('0xcd')]=_0x59b210['cause-txt'];_0x330651[_0x02de('0x129')]=_0x02de('0x134');hopperUtils[_0x02de('0xc4')](_0x330651)[_0x02de('0x9d')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0x02de('0xc6')](_0x330651)['catch'](loggerCatch(_0x02de('0x12f')));}};Dialer[_0x02de('0x18')][_0x02de('0x31')]=function(_0x1e7b21){var _0x22e404=this;if(!_0x22e404[_0x02de('0x135')][_0x1e7b21[_0x02de('0x45')]]){_0x22e404[_0x02de('0x135')][_0x1e7b21[_0x02de('0x45')]]={'running':![]};}else if(_0x22e404['queuesSummary'][_0x1e7b21[_0x02de('0x45')]]['running']===!![]){return;}else if(_0x22e404[_0x02de('0x135')][_0x1e7b21['name']][_0x02de('0x136')]===![]){_0x22e404[_0x02de('0x135')][_0x1e7b21['name']][_0x02de('0x136')]=!![];}var _0x3fc358=_0x22e404[_0x02de('0x1e')][_0x1e7b21[_0x02de('0x45')]];var _0x54255f=_0x3fc358['message']!==utils[_0x02de('0x67')][_0x02de('0x74')];var _0x2dee7d=utils[_0x02de('0x137')](_0x3fc358);_0x3fc358[_0x02de('0x138')]=utils[_0x02de('0x139')](_0x3fc358,_0x22e404[_0x02de('0x21')]);Promise[_0x02de('0xa7')]()['then'](function(){if(_0x3fc358[_0x02de('0x138')]===utils[_0x02de('0x67')][_0x02de('0x74')]){if(_0x54255f){clearPredictiveAttributes(_0x3fc358);_0x1e7b21[_0x02de('0x27')]=undefined;_0x1e7b21['startProgressive']=undefined;}if(_0x3fc358[_0x02de('0x138')]===utils[_0x02de('0x67')]['INACTIVE']){_0x1e7b21[_0x02de('0x13a')]=0x0;_0x1e7b21[_0x02de('0xf2')]=0x0;_0x1e7b21[_0x02de('0x13b')]=0x0;_0x1e7b21[_0x02de('0x13c')]=0x0;_0x1e7b21['pTalking']=0x0;}}else if(_0x3fc358['statusMessage']===utils['CAMPAIGN_STATUS'][_0x02de('0x13d')]&&!_0x2dee7d){return _0x22e404[_0x02de('0x8e')](_0x3fc358,!![])[_0x02de('0xa8')](function(){return _0x22e404[_0x02de('0x8e')](_0x3fc358,![]);})[_0x02de('0xa8')](function(){return _0x22e404['checkDialMethod'](_0x3fc358);})[_0x02de('0x9d')](function(_0x233c18){loggerSyncQueueSummary[_0x02de('0x40')](_0x02de('0x13e'),util[_0x02de('0x42')](_0x233c18,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x3fc358);});}else{clearPredictiveAttributes(_0x3fc358);}})[_0x02de('0xa8')](function(){var _0x2d7d17=_0x1e7b21['compareToOutboundQueue'](_0x3fc358);if(_0x2d7d17||_0x3fc358[_0x02de('0x13f')]){_0x3fc358[_0x02de('0x13f')]=![];_0x1e7b21[_0x02de('0x140')](_0x3fc358);Object['assign'](_0x3fc358,_0x1e7b21);emitOutboundVoiceQueueSummary(_0x1e7b21);}_0x22e404[_0x02de('0x135')][_0x3fc358[_0x02de('0x45')]]['running']=![];})[_0x02de('0x9d')](function(_0x93e53c){logger['error'](_0x02de('0x13e'),util[_0x02de('0x42')](_0x93e53c,{'showHidden':![],'depth':null}));_0x22e404[_0x02de('0x135')][_0x3fc358[_0x02de('0x45')]]['running']=![];});};Dialer[_0x02de('0x18')][_0x02de('0x32')]=_[_0x02de('0x141')](function(){var _0x3c2237=_[_0x02de('0x142')](this[_0x02de('0x1e')],function(_0xcb9ab){return _0xcb9ab[_0x02de('0x143')];});var _0xb8dcab=_[_0x02de('0x142')](this[_0x02de('0x20')],function(_0x108cff){return _0x108cff[_0x02de('0x144')]&&_0x108cff[_0x02de('0x85')]===_0x02de('0x86');});if(_0x3c2237[_0x02de('0x94')]>0x0&&_0xb8dcab[_0x02de('0x94')]>0x0){return Promise[_0x02de('0xa7')]()[_0x02de('0xa8')](cmHopper[_0x02de('0x145')](_[_0x02de('0x146')](_0x3c2237,'id'),previewRecallmeReminderInterval,_[_0x02de('0x146')](_0xb8dcab,'id')))[_0x02de('0xa8')](function(_0xe24a2d){for(var _0xb7018c=0x0;_0xb7018c<_0xe24a2d[_0x02de('0x94')];_0xb7018c++){var _0x5ecbfd=_0xe24a2d[_0xb7018c][_0x02de('0x147')]['name'];if(_0x5ecbfd)io['to'](util[_0x02de('0x43')](_0x02de('0x148'),_0x5ecbfd))[_0x02de('0x3e')](_0x02de('0x149'),{'hopper':_0xe24a2d[_0xb7018c]});}})[_0x02de('0x9d')](function(_0x190d77){logger[_0x02de('0x62')](_0x02de('0x14a'),_0x190d77);});}},0x3c*0x3e8,{'leading':!![]});Dialer['prototype'][_0x02de('0x14b')]=function(){var _0x3154c6=this;setInterval(function(){_0x3154c6['clearZombieChannels'](_0x3154c6[_0x02de('0x26')],'[uniqueid]');_0x3154c6[_0x02de('0x14c')](_0x3154c6['actions'],'[actions]');},0x32c8);};Dialer[_0x02de('0x18')][_0x02de('0x14c')]=function(_0x280cb5,_0x4de621){var _0x215b18=this;for(var _0x1bb72f in _0x280cb5){if(typeof _0x280cb5[_0x1bb72f]!==_0x02de('0xa6')){this[_0x02de('0x1c')][_0x02de('0x19')](function(){if(!_['isNil'](_0x280cb5[_0x1bb72f])){return ami[_0x02de('0x96')]({'action':_0x02de('0x85'),'channel':_0x280cb5[_0x1bb72f][_0x02de('0xeb')]})['catch'](function(_0x2d7ff6){if(_0x2d7ff6['message']===_0x02de('0x14d')){setTimeout(function(){if(_0x280cb5[_0x1bb72f]&&_0x280cb5[_0x1bb72f][_0x02de('0xb9')]!==_0x02de('0xbe')){_0x215b18[_0x02de('0xba')](_0x215b18[_0x02de('0x1e')][_0x280cb5[_0x1bb72f][_0x02de('0xb8')]]);logger[_0x02de('0x62')](_0x02de('0x14e'),_0x4de621,_0x1bb72f,_0x280cb5[_0x1bb72f][_0x02de('0xb8')]);delete _0x280cb5[_0x1bb72f];}if(_0x280cb5[_0x1bb72f]&&_0x280cb5[_0x1bb72f]['type']===_0x02de('0xbe')){_0x215b18['updateOriginated'](_0x215b18[_0x02de('0x1f')][_0x280cb5[_0x1bb72f][_0x02de('0xb8')]]);logger[_0x02de('0x62')](_0x02de('0x14f'),_0x4de621,_0x1bb72f,_0x280cb5[_0x1bb72f][_0x02de('0xb8')]);delete _0x280cb5[_0x1bb72f];}},0x2328);}});}});}}};Dialer[_0x02de('0x18')][_0x02de('0x150')]=function(_0x8e54ef){return Promise[_0x02de('0xa7')]()[_0x02de('0xa8')](voiceQueueRt[_0x02de('0x150')](_0x8e54ef))['catch'](loggerCatch(_0x02de('0x151')));};Dialer[_0x02de('0x18')][_0x02de('0xba')]=function(_0x2e6eb1){if(!_[_0x02de('0x3d')](_0x2e6eb1)&&_0x2e6eb1!==null){if(typeof _0x2e6eb1[_0x02de('0x79')]!==_0x02de('0xa6')){if(_0x2e6eb1[_0x02de('0x79')]>0x0){_0x2e6eb1[_0x02de('0x79')]-=0x1;}else{logger[_0x02de('0x62')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x02de('0x62')](_0x02de('0x152'));}};Dialer['prototype'][_0x02de('0x153')]=function(_0x379a04,_0x5bd9f2){var _0x12ef5d=this;return function(_0x2d74b1){_0x12ef5d[_0x02de('0xba')](_0x5bd9f2);logger[_0x02de('0x62')](_0x379a04,util[_0x02de('0x42')](_0x2d74b1,{'showHidden':![],'depth':null}));};};Dialer[_0x02de('0x18')]['emptyContact']=function(_0x457652,_0x38e48a,_0x2b9cc3){var _0x502e5d={'state':0x19,'statedesc':'notFound'};this[_0x02de('0xba')](_0x38e48a);this['saveInDb'](_[_0x02de('0xf4')](_0x502e5d,_[_0x02de('0xf5')](_0x2b9cc3,['ContactId',_0x02de('0xdb'),_0x02de('0x154'),_0x02de('0xdc'),'CampaignId'])),_0x02de('0x155'),_0x02de('0x156'));logger[_0x02de('0x62')](_0x457652);};Dialer[_0x02de('0x18')]['saveInDb']=function(_0x4b2c63,_0x5e935e,_0x56b678){hopperUtils[_0x02de('0xc4')](_0x4b2c63)[_0x02de('0x9d')](loggerCatch(_0x5e935e));hopperUtils[_0x02de('0xc6')](_0x4b2c63)[_0x02de('0x9d')](loggerCatch(_0x56b678));};Dialer[_0x02de('0x18')][_0x02de('0xd7')]=function(_0x5146c5,_0x3234c0){hopperUtils[_0x02de('0xc4')](_0x5146c5)[_0x02de('0x9d')](loggerCatch(_0x02de('0xc5')));if(_0x3234c0==0x0){hopperUtils[_0x02de('0xc6')](_0x5146c5)[_0x02de('0x9d')](loggerCatch(_0x02de('0x157')));}};Dialer[_0x02de('0x18')][_0x02de('0x14a')]=function(_0x46f83d){return Promise[_0x02de('0xa7')]()[_0x02de('0xa8')](cmHopper['handlePreviewRecallNotifications'](_0x46f83d['id'],previewRecallmeReminderInterval))[_0x02de('0xa8')](function(_0x1b95b2){for(var _0x3bf750=0x0;_0x3bf750<_0x1b95b2[_0x02de('0x94')];_0x3bf750++){var _0x3bfeb6=_0x1b95b2[_0x3bf750][_0x02de('0x147')][_0x02de('0x45')];if(_0x3bfeb6)io['to'](util[_0x02de('0x43')](_0x02de('0x148'),_0x3bfeb6))['emit'](_0x02de('0x149'),{'hopper':_0x1b95b2[_0x3bf750]});}})[_0x02de('0x9d')](function(){});};Dialer[_0x02de('0x18')][_0x02de('0xab')]=function(_0x18a6bf){var _0x312955=this;return function(){_0x312955[_0x02de('0x158')](_0x18a6bf);};};Dialer[_0x02de('0x18')][_0x02de('0x159')]=function(_0x311a41,_0x44ff74){var _0x4a37f7=this;var _0xdccc61=uuid['v4']();this[_0x02de('0x24')][_0xdccc61]=new Action(_0x311a41,_0x44ff74,_0xdccc61);return new Promise(function(_0x1028b4,_0x869168){if(_[_0x02de('0x3d')](_0x311a41)&&typeof _0x311a41!=='object'){return _0x869168(msgResponse(_0x02de('0x15a'),'Failure',_0x02de('0x15b')));}if(_[_0x02de('0x3d')](_0x44ff74[_0x02de('0x15c')])||_0x44ff74[_0x02de('0x15c')]===null){return _0x869168(msgResponse(_0x02de('0x15a'),_0x02de('0x8f'),_0x02de('0x15d')));}var _0x377724={'XMD-CALLERID':_0x4a37f7[_0x02de('0x24')][_0xdccc61][_0x02de('0x15e')](),'XMD-AGI':_0x311a41[_0x02de('0x130')]?util[_0x02de('0x43')]('\x22agi://%s/square,%s\x22',ipAgi,_0x311a41[_0x02de('0x130')]):_0x02de('0x15f'),'XMD-AGIAFTER':_0x311a41['dialQueueProject2']?util['format'](_0x02de('0x160'),ipAgi,_0x311a41[_0x02de('0xc2')]):_0x02de('0x15f'),'XMD-QUEUE':utils[_0x02de('0x161')](_0x311a41)?util['format'](_0x02de('0x162'),_0x311a41[_0x02de('0x45')],_0x311a41[_0x02de('0x163')]||'',_0x311a41[_0x02de('0xc3')]?'c':'',_0x311a41[_0x02de('0xca')]||0x3):'NONE','XMD-CONTACTID':_0x44ff74[_0x02de('0xda')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x4a37f7[_0x02de('0x24')][_0xdccc61][_0x02de('0x15e')](),'XMD-AMD':_0x311a41[_0x02de('0x116')]?'ACTIVE':_0x02de('0x15f'),'XMD-DESTINATION':_0x02de('0x10d')};if(_0x311a41[_0x02de('0x116')]){_0x377724[_0x02de('0x164')]=_0x311a41[_0x02de('0x165')]||0x9c4;_0x377724[_0x02de('0x166')]=_0x311a41[_0x02de('0x167')]||0x5dc;_0x377724['XMD-AMDAFTERGREETINGSILENCE']=_0x311a41[_0x02de('0x168')]||0x320;_0x377724[_0x02de('0x169')]=_0x311a41[_0x02de('0x16a')]||0x1388;_0x377724['XMD-AMDMINWORDLENGTH']=_0x311a41[_0x02de('0x16b')]||0x64;_0x377724[_0x02de('0x16c')]=_0x311a41[_0x02de('0x16d')]||0x32;_0x377724[_0x02de('0x16e')]=_0x311a41[_0x02de('0x16f')]||0x3;_0x377724[_0x02de('0x170')]=_0x311a41[_0x02de('0x171')]||0x100;_0x377724[_0x02de('0x172')]=_0x311a41['dialAMDMaximumWordLength']||0x1388;}if(utils['isOutboundQueue'](_0x311a41)){_0x377724[_0x02de('0x173')]=_0x44ff74[_0x02de('0xdc')];}else{_0x377724['XMD-CAMPAIGNID']=_0x44ff74[_0x02de('0xe8')];}for(var _0x19963b in _0x44ff74[_0x02de('0x174')]){if(typeof _0x44ff74['Contact'][_0x19963b]!==_0x02de('0xa6')){if(isNotNull(_0x44ff74[_0x02de('0x174')][_0x19963b])&&_0x19963b!=='id'&&_0x19963b!==_0x02de('0x175')&&_0x19963b!=='createdAt'&&_0x19963b!=='updatedAt'){_0x377724[util[_0x02de('0x43')]('%s%s',_0x02de('0x176'),_[_0x02de('0x177')](_0x19963b))]=_0x44ff74[_0x02de('0x174')][_0x19963b];}}}var _0x5952da=_0x4a37f7[_0x02de('0x82')](_0x311a41[_0x02de('0x88')])?utils[_0x02de('0x178')](_0x311a41[_0x02de('0x88')][_0x02de('0x179')],_0x311a41['dialOriginateCallerIdName'],_0x311a41[_0x02de('0x17a')]>0x0?utils['getCallerIdRandom'](_0x311a41[_0x02de('0x17b')],_0x311a41[_0x02de('0x17a')]):_0x311a41[_0x02de('0x17b')]):utils['getCallerId'](_['isNil'](_0x311a41[_0x02de('0x89')])?_0x311a41[_0x02de('0x88')][_0x02de('0x179')]:_0x311a41[_0x02de('0x89')]['callerid'],_0x311a41[_0x02de('0x17c')],_0x311a41['dialRandomLastDigitCallerIdNumber']>0x0?utils['getCallerIdRandom'](_0x311a41[_0x02de('0x17b')],_0x311a41['dialRandomLastDigitCallerIdNumber']):_0x311a41[_0x02de('0x17b')]);if(_0x5952da){_0x377724['XMD-ORIGINATECALLERIDNAME']=_0x4a37f7[_0x02de('0x24')][_0xdccc61]['originatecalleridname']=utils[_0x02de('0x17d')](_0x5952da);_0x377724[_0x02de('0x17e')]=_0x44ff74[_0x02de('0x15c')];}_0x311a41[_0x02de('0x17f')]=_0x377724;return ami[_0x02de('0x96')]({'actionid':_0xdccc61,'action':_0x02de('0x15a'),'channel':_0x4a37f7['isTrunkReachable'](_0x311a41['Trunk'])?util[_0x02de('0x43')]('SIP/%s/%s%s',_0x311a41[_0x02de('0x88')]['name'],isNotNull(_0x311a41['dialPrefix'])?_0x311a41[_0x02de('0x180')][_0x02de('0x181')]()||'':'',_0x311a41['dialCutDigit']>0x0?_0x44ff74[_0x02de('0x15c')]['substring'](_0x311a41[_0x02de('0x182')]):_0x44ff74[_0x02de('0x15c')]):util[_0x02de('0x43')](_0x02de('0x183'),_[_0x02de('0xf0')](_0x311a41['TrunkBackup'])?_0x311a41[_0x02de('0x88')]['name']:_0x311a41[_0x02de('0x89')][_0x02de('0x45')],isNotNull(_0x311a41[_0x02de('0x180')])?_0x311a41[_0x02de('0x180')][_0x02de('0x181')]()||'':'',_0x311a41[_0x02de('0x182')]>0x0?_0x44ff74['phone'][_0x02de('0x184')](_0x311a41[_0x02de('0x182')]):_0x44ff74[_0x02de('0x15c')]),'callerid':_0x5952da,'Exten':_0x02de('0x10d'),'Context':'from-sip','Priority':'1','variable':_0x377724,'timeout':(_0x311a41['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0xdccc61})[_0x02de('0xa8')](function(_0x530aee){return _0x1028b4(_0x530aee);})[_0x02de('0x9d')](function(_0x514fb4){_0x311a41[_0x02de('0x185')]+=0x1;var _0x15ea65=new History(_0x4a37f7[_0x02de('0x24')][_0xdccc61]);logger[_0x02de('0x62')](util[_0x02de('0x43')](_0x02de('0x186'),JSON[_0x02de('0x81')](_0x514fb4)));_0x15ea65['state']=0xe;_0x15ea65['statedesc']=_0x02de('0x187');_0x15ea65['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x15ea65[_0x02de('0x6b')]=_0x15ea65[_0x02de('0x6c')];hopperUtils[_0x02de('0xc4')](_0x15ea65)['catch'](loggerCatch(_0x02de('0x188')));_0x4a37f7[_0x02de('0xc6')](_0x15ea65)[_0x02de('0x9d')](loggerCatch(_0x02de('0x188')))[_0x02de('0x1b')](function(){delete _0x4a37f7['actions'][_0xdccc61];return _0x869168(msgResponse(_0x02de('0x15a'),'Error',_0x02de('0x189')));});});});};Dialer[_0x02de('0x18')][_0x02de('0x18a')]=function(_0x3166a4,_0x38cb47,_0x510d4d){var _0xa7e9bb=new History(_0x38cb47);if(_0xa7e9bb['countbusyretry']+_0xa7e9bb['countcongestionretry']+_0xa7e9bb['countnoanswerretry']+_0xa7e9bb[_0x02de('0x12b')]+_0xa7e9bb[_0x02de('0xd1')]+_0xa7e9bb[_0x02de('0xe4')]+_0xa7e9bb[_0x02de('0x11a')]+_0xa7e9bb[_0x02de('0x12c')]>=_0x510d4d[_0x02de('0x11f')]-0x1){return!![];}switch(_0x3166a4){case 0x3:if(_0xa7e9bb[_0x02de('0x12a')]>=_0x510d4d[_0x02de('0x18b')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countnoanswerretry':_0xa7e9bb[_0x02de('0x12a')]+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d[_0x02de('0x18c')],_0x02de('0xd9'))['format'](_0x02de('0xbd')),'ContactId':_0xa7e9bb['ContactId'],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb['VoiceQueueId']||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0xa7e9bb['countbusyretry']>=_0x510d4d[_0x02de('0x18d')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countbusyretry':_0xa7e9bb[_0x02de('0x11d')]+=0x1,'scheduledat':moment()['add'](_0x510d4d[_0x02de('0x18e')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb['VoiceQueueId']||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x18f')));break;case 0x8:if(_0xa7e9bb[_0x02de('0x11e')]>=_0x510d4d['dialCongestionMaxRetry']-0x1){return!![];}hopperUtils[_0x02de('0xf9')]({'active':![],'countcongestionretry':_0xa7e9bb['countcongestionretry']+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d['dialCongestionRetryFrequency'],'minutes')[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb[_0x02de('0xdc')]||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x190')));break;case 0x0:if(_0xa7e9bb[_0x02de('0x12b')]>=_0x510d4d[_0x02de('0x191')]-0x1){return!![];}else{hopperUtils['rescheduleContact']({'active':![],'countnosuchnumberretry':_0xa7e9bb[_0x02de('0x12b')]+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d[_0x02de('0x192')],'minutes')[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb['ListId'],'VoiceQueueId':_0xa7e9bb[_0x02de('0xdc')]||undefined,'CampaignId':_0xa7e9bb['CampaignId']||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x193')));}break;case 0xa:if(_0xa7e9bb[_0x02de('0xd1')]>=_0x510d4d[_0x02de('0x194')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0xa7e9bb['countdropretry']+=0x1,'scheduledat':moment()['add'](_0x510d4d['dialDropRetryFrequency'],_0x02de('0xd9'))[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb['VoiceQueueId']||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0xdd')));break;case 0xb:if(_0xa7e9bb['countabandonedretry']>=_0x510d4d[_0x02de('0xe7')]-0x1){return!![];}hopperUtils[_0x02de('0xf9')]({'active':![],'countabandonedretry':_0xa7e9bb[_0x02de('0xe4')]+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d[_0x02de('0xe5')],'minutes')[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb[_0x02de('0xdc')]||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x195')));break;case 0x13:if(_0xa7e9bb[_0x02de('0x11a')]>=_0x510d4d[_0x02de('0x122')]-0x1){return!![];}hopperUtils[_0x02de('0xf9')]({'active':![],'countmachineretry':_0xa7e9bb['countmachineretry']+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d[_0x02de('0x125')],'minutes')[_0x02de('0x43')](_0x02de('0xbd')),'ContactId':_0xa7e9bb[_0x02de('0xda')],'ListId':_0xa7e9bb[_0x02de('0xdb')],'VoiceQueueId':_0xa7e9bb['VoiceQueueId']||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0xa7e9bb[_0x02de('0x12c')]>=_0x510d4d[_0x02de('0x196')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countagentrejectretry':_0xa7e9bb[_0x02de('0x12c')]+=0x1,'scheduledat':moment()[_0x02de('0xd8')](_0x510d4d['dialAgentRejectRetryFrequency'],_0x02de('0xd9'))['format'](_0x02de('0xbd')),'ContactId':_0xa7e9bb['ContactId'],'ListId':_0xa7e9bb['ListId'],'VoiceQueueId':_0xa7e9bb[_0x02de('0xdc')]||undefined,'CampaignId':_0xa7e9bb[_0x02de('0xe8')]||undefined})['catch'](loggerCatch(_0x02de('0x197')));break;default:return!![];}};Dialer['prototype'][_0x02de('0x108')]=function(_0x141240,_0x4690d7,_0x407317){var _0xc5c227=this;var _0x2ce15c=new History(_0x141240);var _0x1bc284=![];var _0x4dcdbf;var _0x2d156a;return new Promise(function(_0xe25289,_0x40abea){if(_['isUndefined'](_0x4690d7)&&typeof _0x4690d7!==_0x02de('0x198')){return _0x40abea(msgResponse(_0x02de('0x199'),_0x02de('0x8f'),_0x02de('0x19a')));}if(_[_0x02de('0x3d')](_0x407317)&&typeof _0x407317!==_0x02de('0x198')){return _0x40abea(msgResponse(_0x02de('0x199'),_0x02de('0x8f'),_0x02de('0x19b')));}hopperUtils[_0x02de('0xd4')](_0x2ce15c,_0x407317['reason'],_0x4690d7)[_0x02de('0xa8')](function(_0x538f27){if(_0x538f27[_0x02de('0xd6')]==0x1)_0x1bc284=!![];switch(_0x407317[_0x02de('0xc0')]){case'0':_0x4690d7[_0x02de('0x19c')]+=0x1;_0x2ce15c[_0x02de('0x6a')]=0x0;_0x2ce15c[_0x02de('0xcd')]=_0x02de('0x19d');_0x2ce15c[_0x02de('0x12b')]+=0x1;_0x2ce15c['countglobal']+=0x1;ami[_0x02de('0x3e')]('custom:agentnosuchnumber',ut[_0x02de('0x111')](_0x141240,_0x02de('0x19e')));_0x4dcdbf=_0x4690d7['dialNoSuchNumberRetryFrequency'];_0x2d156a=_0x4690d7[_0x02de('0xe6')];hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x11c')));if(_0xc5c227[_0x02de('0x18a')](0x0,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0x12b')]>=_0x4690d7[_0x02de('0x191')]){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,'reason\x200\x20no\x20such\x20number....');}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x19f'));}}break;case'3':_0x4690d7['outboundNoAnswerCallsDay']+=0x1;_0x2ce15c['state']=0x3;_0x2ce15c[_0x02de('0xcd')]=_0x02de('0x1a0');_0x2ce15c['countnoanswerretry']+=0x1;_0x2ce15c['countglobal']+=0x1;var _0x1fbe72=ut['buildNoAnswerEventPayload'](_0x141240,_0x4690d7);ami[_0x02de('0x3e')](_0x02de('0x1a1'),_0x1fbe72);_0x4dcdbf=_0x4690d7[_0x02de('0x18c')];_0x2d156a=_0x4690d7[_0x02de('0xe6')];hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x1a2')));if(_0xc5c227[_0x02de('0x18a')](0x3,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0x12a')]>=_0x4690d7[_0x02de('0x18b')]){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1a3'));}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1a3'));}}break;case'5':_0x4690d7[_0x02de('0x1a4')]+=0x1;_0x2ce15c[_0x02de('0x6a')]=0x5;_0x2ce15c[_0x02de('0xcd')]=_0x02de('0x1a5');_0x2ce15c[_0x02de('0x11d')]+=0x1;_0x2ce15c[_0x02de('0xd2')]+=0x1;ami[_0x02de('0x3e')](_0x02de('0x1a6'),ut[_0x02de('0x111')](_0x141240,_0x02de('0x1a7')));_0x4dcdbf=_0x4690d7[_0x02de('0x18e')];_0x2d156a=_0x4690d7['callAdditionalPhoneAfterMin'];hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x1a8')));if(_0xc5c227[_0x02de('0x18a')](0x5,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c['countbusyretry']>=_0x4690d7['dialBusyMaxRetry']){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1a9'));}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1a9'));}}break;case'8':_0x4690d7[_0x02de('0x1aa')]+=0x1;_0x2ce15c[_0x02de('0x6a')]=0x8;_0x2ce15c[_0x02de('0xcd')]=_0x02de('0x1ab');_0x2ce15c[_0x02de('0x11e')]+=0x1;_0x2ce15c[_0x02de('0xd2')]+=0x1;_0x4dcdbf=_0x4690d7[_0x02de('0x1ac')];_0x2d156a=_0x4690d7['callAdditionalPhoneAfterMin'];ami['emit']('custom:agentcongestion',ut[_0x02de('0x111')](_0x141240,_0x02de('0x1ad')));hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x1ae')));if(_0xc5c227[_0x02de('0x18a')](0x8,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0x11e')]>=_0x4690d7[_0x02de('0x1af')]){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1b0'));}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1b0'));}}break;case'11':_0x4690d7[_0x02de('0x1b1')]+=0x1;_0x2ce15c[_0x02de('0x6a')]=0xb;_0x2ce15c[_0x02de('0xcd')]=_0x02de('0xe2');_0x2ce15c[_0x02de('0xe4')]+=0x1;_0x2ce15c[_0x02de('0xd2')]+=0x1;_0x4dcdbf=_0x4690d7[_0x02de('0xe5')];_0x2d156a=_0x4690d7[_0x02de('0xe6')];hopperUtils[_0x02de('0xc4')](_0x2ce15c)['catch'](loggerCatch(_0x02de('0xea')));if(_0xc5c227[_0x02de('0x18a')](0xb,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0xe4')]>=_0x4690d7[_0x02de('0xe7')]){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1b2'));}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1b2'));}}break;case'20':_0x4690d7[_0x02de('0x1b3')]+=0x1;_0x2ce15c['state']=0x14;_0x2ce15c['statedesc']=_0x02de('0x1b4');_0x2ce15c[_0x02de('0x12c')]+=0x1;_0x2ce15c['countglobal']+=0x1;_0x4dcdbf=_0x4690d7['dialAgentRejectRetryFrequency'];_0x2d156a=_0x4690d7[_0x02de('0xe6')];ami['emit'](_0x02de('0x1b5'),ut['buildObj'](_0x141240,'agentreject'));hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x1b6')));if(_0xc5c227['checkRetriveMax'](0x14,_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0x12c')]>=_0x4690d7[_0x02de('0x196')]){_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x02de('0x1b7'));}else{_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,'reason\x2020\x20agentreject');}}break;default:_0x4690d7[_0x02de('0x133')]+=0x1;_0x2ce15c[_0x02de('0x6a')]=0xc;_0x2ce15c['statedesc']=_0x407317[_0x02de('0xc0')];_0x4dcdbf=_0x4690d7[_0x02de('0x1b8')];_0x2d156a=_0x4690d7[_0x02de('0xe6')];hopperUtils[_0x02de('0xc4')](_0x2ce15c)[_0x02de('0x9d')](loggerCatch(_0x02de('0x1b9')));if(_0xc5c227[_0x02de('0x18a')](_0x407317[_0x02de('0xc0')],_0x141240,_0x4690d7)&&!_0x1bc284){if(_0x2ce15c[_0x02de('0x11d')]+_0x2ce15c[_0x02de('0x11e')]+_0x2ce15c[_0x02de('0x12a')]+_0x2ce15c[_0x02de('0x12b')]+_0x2ce15c[_0x02de('0xd1')]+_0x2ce15c[_0x02de('0xe4')]+_0x2ce15c[_0x02de('0x11a')]+_0x2ce15c[_0x02de('0x12c')]>=_0x4690d7[_0x02de('0x11f')]){_0xc5c227[_0x02de('0x120')](_0x2ce15c,_0xe25289,_0x40abea,_0x407317['reason']);}else{_0xc5c227[_0x02de('0x123')](_0x2ce15c,_0xe25289,_0x40abea,_0x407317[_0x02de('0xc0')]);}}}})[_0x02de('0xa8')](function(){if(_0x1bc284){hopperUtils['swapAdditionalPhones'](_0x2ce15c,_0x4dcdbf,_0x2d156a)[_0x02de('0xa8')](function(){return _0xe25289(0x1);});}});});};Dialer[_0x02de('0x18')][_0x02de('0x120')]=function(_0x5092d,_0x17c4e1,_0x2ee751,_0x3287c4){var _0x345668=new Final(_0x5092d);_0x345668[_0x02de('0x6a')]=0xf;_0x345668[_0x02de('0xcd')]=_0x02de('0x1ba');this[_0x02de('0x123')](_0x345668,_0x17c4e1,_0x2ee751,_0x3287c4);};Dialer[_0x02de('0x18')][_0x02de('0x123')]=function(_0x26f35f,_0x5035f3,_0x5601a6,_0x1e9e1b){hopperUtils['moveContactManagedDialer'](_0x26f35f)['then'](function(){return _0x5035f3(msgResponse(_0x02de('0x199'),_0x02de('0x107'),_0x1e9e1b));})[_0x02de('0x9d')](function(){return _0x5601a6(msgResponse(_0x02de('0x1bb'),_0x02de('0x8f'),_0x02de('0x1bc')));});};Dialer['prototype'][_0x02de('0x9')]=function(_0x424693){var _0x1960aa=_0x424693[_0x02de('0x1bd')]/0x64;var _0x519a7a=_0x424693[_0x02de('0xcc')]/(_0x424693[_0x02de('0xcc')]+_0x424693[_0x02de('0xbf')]);var _0x2ab8fd=Math['round'](_0x424693[_0x02de('0x1be')]*(_0x424693[_0x02de('0x1bf')]/0x64));var _0x298a30=Math['round'](_0x424693[_0x02de('0x1be')]*(_0x424693[_0x02de('0x1c0')]/0x64));var _0x93fc24=_0x424693['available']+_0x424693[_0x02de('0x13c')];var _0x5dcd24=Math[_0x02de('0x1c1')](_0x424693[_0x02de('0x59')]*_0x424693['erlangAbandonmentRate']*_0x424693[_0x02de('0x1c2')]*_0x424693['predictiveIntervalMultiplicativeFactor']);if(_[_0x02de('0x3d')](_0x424693['startProgressive'])){if(!_[_0x02de('0x3d')](_0x424693[_0x02de('0x27')])){_0x424693['startPredictive']=undefined;loggerPredictive[_0x02de('0x62')]('[startMethodPredictive][StartProgressive]',_0x02de('0x1c3'));}if(!_[_0x02de('0x3d')](_0x424693[_0x02de('0x60')])){loggerPredictive[_0x02de('0x62')](_0x02de('0x1c4'),_0x02de('0x1c5'));clearInterval(_0x424693[_0x02de('0x60')]);_0x424693[_0x02de('0x60')]=undefined;}_0x424693[_0x02de('0x28')]=moment()[_0x02de('0x43')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x02de('0x48')](_0x424693[_0x02de('0x45')],_0x02de('0x1c6'),_0x424693['startProgressive']);this[_0x02de('0xb0')](_0x424693,0x1);}else if(ifInterval(_0x424693['dialPredictiveInterval'],_0x424693[_0x02de('0x28')])){this['handlePower'](_0x424693,0x1);loggerPredictiveCalls[_0x02de('0x48')](_0x02de('0x1c7'),_0x424693[_0x02de('0x28')],_0x424693[_0x02de('0x45')]);_0x424693[_0x02de('0x59')]=0x0;_0x424693[_0x02de('0x1c8')]=0x0;}else if(_0x1960aa<_0x519a7a&&_0x424693[_0x02de('0x1c9')]===_0x02de('0x1ca')){clearPredictiveAttributes(_0x424693);loggerPredictive[_0x02de('0x48')](_0x02de('0x1cb'),_0x02de('0x1cc'),_0x519a7a,_0x02de('0x28'),_0x424693[_0x02de('0x45')]);}else if(_0x5dcd24<_0x424693['predictiveIntervalErlangCallsDroppedCalls']&&_0x424693['dialPredictiveOptimization']===_0x02de('0x1ca')){clearPredictiveAttributes(_0x424693);loggerPredictive[_0x02de('0x48')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x02de('0x1cd'),_0x5dcd24,_0x02de('0x1ce'),_0x424693[_0x02de('0x1c8')],'startProgressive',_0x424693[_0x02de('0x45')]);}else if(!ifInterval(_0x424693[_0x02de('0x1cf')],_0x424693[_0x02de('0x28')])&&_['isUndefined'](_0x424693[_0x02de('0x27')])&&!_['isUndefined'](_0x424693[_0x02de('0x28')])){_0x424693[_0x02de('0x27')]=moment()['format'](_0x02de('0xbd'));loggerPredictive[_0x02de('0x48')](_0x424693[_0x02de('0x45')],'started\x20in\x20predictive\x20at',_0x424693[_0x02de('0x27')]);hopperUtils[_0x02de('0x1d0')](_0x424693['dialPredictiveInterval'])[_0x02de('0xa8')](this[_0x02de('0x1d1')](_0x424693))['then'](mergeDataErlangB(_0x424693))['then'](this[_0x02de('0x1d2')](_0x424693))[_0x02de('0x9d')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x424693));}else if(!ifInterval(_0x424693[_0x02de('0x1cf')],_0x424693['startPredictive'])){_0x424693[_0x02de('0x1c8')]=0x0;_0x424693[_0x02de('0x27')]=moment()[_0x02de('0x43')](_0x02de('0xbd'));loggerPredictive[_0x02de('0x48')](_0x424693[_0x02de('0x45')],_0x02de('0x1d3'),_0x424693[_0x02de('0x27')]);clearInterval(_0x424693[_0x02de('0x60')]);_0x424693[_0x02de('0x60')]=undefined;hopperUtils['avgHandleTime'](_0x424693[_0x02de('0x1cf')])[_0x02de('0xa8')](this[_0x02de('0x1d1')](_0x424693))[_0x02de('0xa8')](mergeDataErlangB(_0x424693))[_0x02de('0xa8')](this['startMethodPredictive'](_0x424693))['catch'](loggerCatchPredictive(_0x02de('0x1d4'),_0x424693));}else if(_0x424693[_0x02de('0x1be')]&&_0x93fc24<_0x424693['predictiveIntervalAvailable']-_0x298a30){clearPredictiveAttributes(_0x424693);loggerPredictive['info'](_0x424693['name'],_0x02de('0x1d5'),_0x93fc24,_0x02de('0x1d6'),_0x424693['predictiveIntervalAvailable'],'-',_0x298a30,'=',_0x424693['predictiveIntervalAvailable']-_0x298a30,')');}else if(_0x424693[_0x02de('0x1be')]&&_0x93fc24>_0x424693['predictiveIntervalAvailable']+_0x2ab8fd){clearPredictiveAttributes(_0x424693);loggerPredictive[_0x02de('0x48')](_0x424693[_0x02de('0x45')],_0x02de('0x1d5'),_0x93fc24,_0x02de('0x1d7'),_0x424693[_0x02de('0x1be')],'+',_0x2ab8fd,'=',_0x424693[_0x02de('0x1be')]+_0x2ab8fd,')');}};Dialer[_0x02de('0x18')][_0x02de('0x1d1')]=function(_0x3d8d5c){var _0x10d061=this;return function(_0x1b1024){return new Promise(function(_0x3dccdc,_0x46aa76){_['merge'](_0x3d8d5c,_0x1b1024[0x0]);if(checkGetDataPredictive(_0x1b1024[0x0])){var _0x1622a0=_0x3d8d5c[_0x02de('0x1be')]=_0x3d8d5c[_0x02de('0x13c')]+_0x3d8d5c[_0x02de('0x13a')];var _0xcf4954=_0x3d8d5c[_0x02de('0x1cf')]*0x3c;var _0x18e2ef=_0x1b1024[0x0]['predictiveIntervalAvgTalktime']+_0x1b1024[0x0][_0x02de('0x55')];var _0x4ada5a=(_0x1b1024[0x0][_0x02de('0x4c')]+_0x1b1024[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x1b1024[0x0][_0x02de('0x4f')])/_0x1b1024[0x0][_0x02de('0x4a')];_0x3d8d5c[_0x02de('0x1c2')]=_0x4ada5a>0x0?_0x4ada5a:0x1;switch(_0x3d8d5c[_0x02de('0x1c9')]){case'dropRate':var _0x5e587a=_0x3d8d5c['dialPredictiveOptimizationPercentage']/0x64;return _0x10d061['abandonmentRate'](_0x1622a0,_0xcf4954,_0x18e2ef,_0x4ada5a,_0x5e587a)[_0x02de('0xa8')](function(_0x578bab){return _0x3dccdc(_0x578bab);});case _0x02de('0x1d8'):var _0x6919ad=_0x3d8d5c['dialPredictiveOptimizationPercentage']/0x64;return _0x10d061['busyFactor'](_0x1622a0,_0xcf4954,_0x18e2ef,_0x4ada5a,_0x6919ad)[_0x02de('0xa8')](function(_0x3c3c11){return _0x3dccdc(_0x3c3c11);});default:return _0x46aa76(msgResponse('[getDataPredictive]',_0x02de('0x8f'),_0x02de('0x1d9')));}}else{return _0x46aa76(msgResponse(_0x02de('0x1da'),'Failure',_0x02de('0x1db')));}});};};Dialer[_0x02de('0x18')][_0x02de('0x1dc')]=function(_0x1d6985){var _0x68a026=this;return function(_0x1fe6e1){return new Promise(function(_0x336745,_0x23d555){_[_0x02de('0xf4')](_0x1d6985,_0x1fe6e1[0x0]);if(checkGetDataPredictive(_0x1fe6e1[0x0])){loggerPredictive[_0x02de('0x48')](JSON['stringify'](_0x1fe6e1[0x0]));if(_0x1d6985['dialPredictiveOptimization']==='dropRate'){return _0x68a026[_0x02de('0x150')](_0x1d6985['id'])[_0x02de('0xa8')](function(_0x5c7103){var _0x15f396=_0x1d6985[_0x02de('0x1dd')]-_0x5c7103[0x0][_0x02de('0x1de')];var _0x156853=_0x1d6985['dialPredictiveInterval']*0x3c;var _0x4dffbe=_0x1fe6e1[0x0][_0x02de('0x53')]+_0x1fe6e1[0x0]['predictiveIntervalAvgHoldtime'];var _0x5a6640=(_0x1fe6e1[0x0]['predictiveIntervalAnsweredCalls']+_0x1fe6e1[0x0][_0x02de('0xcb')]+_0x1fe6e1[0x0][_0x02de('0x4f')])/_0x1fe6e1[0x0]['predictiveIntervalTotalCalls'];var _0x2e8f16=_0x1d6985[_0x02de('0x1bd')]/0x64;_0x1d6985['predictiveIntervalPauses']=_0x5c7103[0x0][_0x02de('0x1de')]||0x0;_0x1d6985['predictiveIntervalHitRate']=_0x5a6640>0x0?_0x5a6640:0x1;return _0x68a026['abandonmentRate'](_0x15f396,_0x156853,_0x4dffbe,_0x5a6640,_0x2e8f16);})['then'](function(_0x35b632){return _0x336745(_0x35b632);})[_0x02de('0x9d')](function(_0x478733){return _0x23d555(msgResponse('[CatchErlangB]',_0x02de('0x8f'),JSON[_0x02de('0x81')](_0x478733)));});}if(_0x1d6985[_0x02de('0x1c9')]===_0x02de('0x1d8')){return _0x68a026['getVoiceQueueRtPauses'](_0x1d6985['id'])[_0x02de('0xa8')](function(_0x1d9457){var _0x13a0d8=_0x1d6985[_0x02de('0x1dd')]-_0x1d9457[0x0][_0x02de('0x1de')];var _0xfccd7a=_0x1d6985[_0x02de('0x1cf')]*0x3c;var _0x3162c6=_0x1fe6e1[0x0][_0x02de('0x53')]+_0x1fe6e1[0x0][_0x02de('0x55')];var _0x2a5085=(_0x1fe6e1[0x0][_0x02de('0x4c')]+_0x1fe6e1[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x1fe6e1[0x0][_0x02de('0x4f')])/_0x1fe6e1[0x0]['predictiveIntervalTotalCalls'];var _0x44060d=_0x1d6985[_0x02de('0x1bd')]/0x64;_0x1d6985['predictiveIntervalPauses']=_0x1d9457[0x0][_0x02de('0x1de')]||0x0;_0x1d6985['predictiveIntervalHitRate']=_0x2a5085>0x0?_0x2a5085:0x1;return _0x68a026[_0x02de('0x1df')](_0x13a0d8,_0xfccd7a,_0x3162c6,_0x2a5085,_0x44060d);})[_0x02de('0xa8')](function(_0x49df17){return _0x336745(_0x49df17);})[_0x02de('0x9d')](function(_0x30b1b2){return _0x23d555(msgResponse(_0x02de('0x1e0'),_0x02de('0x8f'),JSON[_0x02de('0x81')](_0x30b1b2)));});}}else{return _0x23d555(msgResponse(_0x02de('0x1da'),_0x02de('0x8f'),'check\x20failure'));}});};};Dialer[_0x02de('0x18')][_0x02de('0x1d2')]=function(_0x44ac6d){var _0x460bed=this;return function(){var _0x5aee6f=0x0;var _0xd94fe8=Math[_0x02de('0x1c1')](_0x44ac6d[_0x02de('0x1e1')]*0x3e8);if(_0xd94fe8>0x0){_0xd94fe8=_0xd94fe8<0x64?0x64:_0xd94fe8;loggerPredictive['info'](_0x44ac6d[_0x02de('0x45')],_0x02de('0x1e2'),_0xd94fe8,'milliseconds');_0x44ac6d[_0x02de('0x60')]=setInterval(function(){_0x460bed[_0x02de('0x60')](_0x44ac6d);loggerPredictiveCalls[_0x02de('0x48')]('[handlePredictive]',_0x5aee6f+=0x1);},_0xd94fe8);}else{loggerPredictive['info'](_0x44ac6d[_0x02de('0x45')],_0x02de('0x1e3'));}};};Dialer['prototype']['checkContactBlack']=function(_0x23e52b,_0x23f9e5){var _0x37d527=this;return function(_0x5eafc4){if(_[_0x02de('0x47')](_0x5eafc4)){if(_['isNil'](_0x23f9e5['UserId'])||!_0x23f9e5[_0x02de('0x1e4')]){if(_0x23e52b[_0x02de('0x1e5')]===_0x02de('0x8')){_0x23e52b['queueStatusComplete']=_[_0x02de('0x3d')](_0x23e52b[_0x02de('0x6d')])?!![]:_0x23e52b[_0x02de('0x6d')];var _0x5663d4=uuid['v4']();_0x37d527[_0x02de('0x24')][_0x5663d4]=new Action(_0x23e52b,_0x23f9e5,_0x5663d4);loggerBooked['info']('[booked][checkContactBlack]',_0x5663d4,'queueStatusComplete:\x20',JSON[_0x02de('0x81')](_0x23e52b[_0x02de('0x6d')]),'Queue:\x20',_0x23e52b[_0x02de('0x45')]);if(_0x23e52b[_0x02de('0x6d')]){_0x23e52b[_0x02de('0x6d')]=![];_0x37d527[_0x02de('0x29')][_0x37d527[_0x02de('0x24')][_0x5663d4][_0x02de('0xb8')]]=[];ami[_0x02de('0x96')]({'actionid':_0x5663d4,'action':_0x02de('0x1e6'),'queue':_0x23e52b[_0x02de('0x45')]})['catch'](function(){_0x37d527[_0x02de('0xba')](_0x23e52b);hopperUtils[_0x02de('0xf9')]({'active':![],'ContactId':_0x37d527[_0x02de('0x24')][_0x5663d4]['ContactId'],'ListId':_0x37d527[_0x02de('0x24')][_0x5663d4]['ListId'],'VoiceQueueId':_0x37d527[_0x02de('0x24')][_0x5663d4][_0x02de('0xdc')]||undefined,'CampaignId':_0x37d527['actions'][_0x5663d4][_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x1e7')));delete _0x37d527[_0x02de('0x24')][_0x5663d4];});}else{loggerBooked[_0x02de('0x48')]('[booked][checkContactBlack][else]',JSON['stringify'](_0x23e52b[_0x02de('0x6d')]),_0x02de('0x1e8'),_0x23e52b[_0x02de('0x45')]);_0x37d527[_0x02de('0xba')](_0x23e52b);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x37d527['actions'][_0x5663d4][_0x02de('0xda')],'ListId':_0x37d527[_0x02de('0x24')][_0x5663d4][_0x02de('0xdb')],'VoiceQueueId':_0x37d527[_0x02de('0x24')][_0x5663d4]['VoiceQueueId']||undefined,'CampaignId':_0x37d527[_0x02de('0x24')][_0x5663d4][_0x02de('0xe8')]||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x1e7')));delete _0x37d527[_0x02de('0x24')][_0x5663d4];}}else{return _0x37d527[_0x02de('0x159')](_0x23e52b,_0x23f9e5);}}else{if(utils[_0x02de('0xc8')](undefined,_0x23f9e5[_0x02de('0x1e9')])<_0x23e52b[_0x02de('0x1ea')]*0x3c){if(_0x23f9e5[_0x02de('0x147')]&&!_0x23f9e5[_0x02de('0x147')]['voicePause']){_0x37d527[_0x02de('0x1d')][_0x02de('0xf7')](_0x23f9e5['id'])['finally'](function(){_0x37d527[_0x02de('0xba')](_0x23e52b);});}else{hopperUtils[_0x02de('0x1eb')]({'active':![]},_0x23f9e5['id'],0x1)['finally'](function(){_0x37d527['updateOriginated'](_0x23e52b);});}}else{_0x23e52b['outboundReCallsDay']+=0x1;_0x37d527[_0x02de('0xba')](_0x23e52b);if(_0x23e52b[_0x02de('0x1ec')]){hopperUtils[_0x02de('0xf9')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x23f9e5[_0x02de('0xda')],'ListId':_0x23f9e5[_0x02de('0xdb')],'VoiceQueueId':_0x23f9e5[_0x02de('0xdc')]||undefined,'CampaignId':_0x23f9e5['CampaignId']||undefined})[_0x02de('0x9d')](loggerCatch(_0x02de('0x1ed')));hopperUtils[_0x02de('0xc4')](createObjHistory(_0x23e52b,_0x23f9e5,utils['CAMPAIGN_STATUS'][_0x02de('0x1ee')],0x17,_0x02de('0x1ef')))[_0x02de('0x9d')](loggerCatch(_0x02de('0x1f0')));}else{_0x37d527[_0x02de('0x113')](createObjHistory(_0x23e52b,_0x23f9e5,utils['CAMPAIGN_STATUS']['RECALL_TIMEOUT'],0x16,_0x02de('0x1f1')),_0x02de('0x1f2'),'[Originate][HistoryRecallClose]');}}}}else{_0x23e52b[_0x02de('0x1f3')]+=0x1;_0x37d527[_0x02de('0x113')](createObjHistory(_0x23e52b,_0x23f9e5,utils['CAMPAIGN_STATUS']['BLACKLIST'],0xd,'Blacklist'),_0x02de('0x1f4'),_0x02de('0x1f5'));throw _0x02de('0x1f6');}};};Dialer[_0x02de('0x18')][_0x02de('0x158')]=function(_0x39f650){var _0x1427bf=this;var _0x592b14=_0x39f650[_0x02de('0x1f7')]-_0x39f650[_0x02de('0x79')]-_0x39f650[_0x02de('0x1f8')];emitCampaignSummary(_0x39f650);if(_0x592b14>0x0){if(_0x592b14>this[_0x02de('0x22')]){_0x592b14=this[_0x02de('0x22')];}_0x39f650[_0x02de('0x1f8')]+=_0x592b14;hopperUtils[_0x02de('0x1f9')](_0x39f650,_0x592b14)[_0x02de('0xa8')](function(_0x4bbbfe){_0x39f650[_0x02de('0x1f8')]-=_0x592b14;_0x39f650['temp']=_0x39f650[_0x02de('0x1f8')]>0x0?_0x39f650['temp']:0x0;if(!utils[_0x02de('0x1fa')](_0x4bbbfe)){_0x39f650[_0x02de('0x66')]=utils['CAMPAIGN_STATUS'][_0x02de('0x1fb')];logger[_0x02de('0x48')](_0x02de('0x1fc')+_0x39f650['name']);}else{_0x39f650[_0x02de('0x79')]+=_0x4bbbfe[_0x02de('0x94')];_0x39f650[_0x02de('0x66')]=utils['CAMPAIGN_STATUS'][_0x02de('0x1fd')];for(var _0x32fffb=0x0;_0x32fffb<_0x4bbbfe['length'];_0x32fffb+=0x1){_0x39f650[_0x02de('0x1fe')]+=0x1;if(_[_0x02de('0xf0')](_0x4bbbfe[_0x32fffb])||_[_0x02de('0xf0')](_0x4bbbfe[_0x32fffb][_0x02de('0x174')])||_[_0x02de('0xf0')](_0x4bbbfe[_0x32fffb][_0x02de('0x15c')])){_0x1427bf[_0x02de('0x1ff')](_0x02de('0x200'),_0x39f650,_0x4bbbfe[_0x32fffb]);}else{hopperUtils['checkIsBlackListIvr'](_[_0x02de('0xf5')](_0x4bbbfe[_0x32fffb],[_0x02de('0xe8'),_0x02de('0x15c')]))[_0x02de('0xa8')](_0x1427bf[_0x02de('0x201')](_0x39f650,_0x4bbbfe[_0x32fffb]))['catch'](_0x1427bf[_0x02de('0x153')](_0x02de('0x202'),_0x39f650));}}}})[_0x02de('0x9d')](loggerGetContactDialer(_0x02de('0x203'),_0x39f650,_0x592b14));}};Dialer[_0x02de('0x18')][_0x02de('0xb0')]=function(_0x4ce4ce,_0x54e16e){var _0x5b286e=this;var _0x58976f=[];if(_0x54e16e<0x1||_0x4ce4ce['dialMethod']===_0x02de('0x8')){_0x54e16e=0x1;}var _0x392602=Math[_0x02de('0x1c1')](_0x4ce4ce[_0x02de('0x13a')]*_0x54e16e)-_0x4ce4ce[_0x02de('0x79')]-_0x4ce4ce[_0x02de('0x1f8')];if(_0x4ce4ce[_0x02de('0x204')]>0x0){var _0x5babde=_0x4ce4ce[_0x02de('0x204')]-_0x4ce4ce['originated']-_0x4ce4ce[_0x02de('0x13c')]-_0x4ce4ce[_0x02de('0x1f8')]-_0x4ce4ce[_0x02de('0x205')];if(_0x392602>_0x5babde){_0x392602=_0x5babde;}}if(_0x392602>0x0){if(_0x4ce4ce[_0x02de('0x1e5')]===_0x02de('0x8')){_0x392602=0x1;}if(_0x392602>this[_0x02de('0x22')]){_0x392602=this[_0x02de('0x22')];}_0x4ce4ce[_0x02de('0x1f8')]+=_0x392602;for(var _0x173ad4 in this[_0x02de('0x20')]){if(typeof this[_0x02de('0x20')][_0x173ad4]!==_0x02de('0xa6')){if(this[_0x02de('0x20')][_0x173ad4][_0x02de('0x6a')]==='not_inuse'&&this[_0x02de('0x20')][_0x173ad4][_0x02de('0x85')]===_0x02de('0x86')){_0x58976f[_0x02de('0x95')](this[_0x02de('0x20')][_0x173ad4]['id']);}}}hopperUtils[_0x02de('0x206')](_0x4ce4ce,_0x58976f,_0x392602)[_0x02de('0xa8')](function(_0x38efc5){_0x4ce4ce[_0x02de('0x1f8')]-=_0x392602;_0x4ce4ce[_0x02de('0x1f8')]=_0x4ce4ce['temp']>0x0?_0x4ce4ce[_0x02de('0x1f8')]:0x0;if(!utils[_0x02de('0x1fa')](_0x38efc5)){hopperUtils['countReScheduled'](_0x4ce4ce)[_0x02de('0xa8')](sendMessageReschedule(_0x4ce4ce))[_0x02de('0x9d')](loggerCatch(_0x02de('0x207')));}else{_0x4ce4ce[_0x02de('0x79')]+=_0x38efc5[_0x02de('0x94')];_0x4ce4ce['message']=_0x4ce4ce[_0x02de('0x1e5')]===_0x02de('0x8')?utils['CAMPAIGN_STATUS'][_0x02de('0x13d')]:utils[_0x02de('0x67')][_0x02de('0x1fd')];for(var _0x1d2393=0x0;_0x1d2393<_0x38efc5[_0x02de('0x94')];_0x1d2393+=0x1){if(_['isNil'](_0x38efc5[_0x1d2393])||_[_0x02de('0xf0')](_0x38efc5[_0x1d2393]['Contact'])||_[_0x02de('0xf0')](_0x38efc5[_0x1d2393][_0x02de('0x15c')])){_0x5b286e[_0x02de('0x1ff')]('[actionOriginate]\x20',_0x4ce4ce,_0x38efc5[_0x1d2393]);}else{hopperUtils['checkIsBlackList'](_[_0x02de('0xf5')](_0x38efc5[_0x1d2393],[_0x02de('0xdc'),_0x02de('0x15c')]))[_0x02de('0xa8')](_0x5b286e[_0x02de('0x201')](_0x4ce4ce,_0x38efc5[_0x1d2393]))[_0x02de('0x9d')](_0x5b286e['loggerHandler']('[actionOriginate]\x20',_0x4ce4ce));}}}})[_0x02de('0x9d')](loggerGetContactDialer(_0x02de('0x208'),_0x4ce4ce,_0x392602));}};Dialer[_0x02de('0x18')][_0x02de('0x60')]=function(_0x48a3c2){if(_0x48a3c2[_0x02de('0x204')]>0x0){var _0x3c2450=_0x48a3c2[_0x02de('0x204')]-_0x48a3c2[_0x02de('0x79')]-_0x48a3c2[_0x02de('0x13c')];if(_0x3c2450>0x0){this[_0x02de('0x209')](_0x48a3c2);}else{loggerPredictiveCalls['info'](_0x02de('0x20a'));}}else{this['tryOriginatePredictive'](_0x48a3c2);}};Dialer[_0x02de('0x18')][_0x02de('0x209')]=function(_0x456ffc){var _0x51aa79=this;var _0x1e1c6a=[];_0x456ffc[_0x02de('0x79')]+=0x1;for(var _0x142498 in this[_0x02de('0x20')]){if(typeof this['agents'][_0x142498]!=='undefined'){if(this[_0x02de('0x20')][_0x142498]['state']===_0x02de('0x20b')&&this[_0x02de('0x20')][_0x142498][_0x02de('0x85')]===_0x02de('0x86')){_0x1e1c6a[_0x02de('0x95')](this['agents'][_0x142498]['id']);}}}return this[_0x02de('0x206')](_0x456ffc['id'],_0x1e1c6a,0x1,_0x456ffc['dialOrderByScheduledAt'],_0x456ffc)[_0x02de('0xa8')](function(_0x3002c0){if(!utils[_0x02de('0x1fa')](_0x3002c0)){utils[_0x02de('0x64')](_0x456ffc,0x1,0x0);return hopperUtils[_0x02de('0x20c')](_0x456ffc)['then'](sendMessageReschedule(_0x456ffc))[_0x02de('0x9d')](loggerCatch('[countReScheduled]\x20'));}else{_0x456ffc['message']=utils[_0x02de('0x67')][_0x02de('0x1fd')];if(_[_0x02de('0xf0')](_0x3002c0[0x0])||_[_0x02de('0xf0')](_0x3002c0[0x0]['Contact'])||_['isNil'](_0x3002c0[0x0][_0x02de('0x15c')])){_0x51aa79[_0x02de('0x1ff')](_0x02de('0x200'),_0x456ffc,_0x3002c0[0x0]);}else{return hopperUtils['checkIsBlackList'](_['pick'](_0x3002c0[0x0],[_0x02de('0xdc'),_0x02de('0x15c')]))[_0x02de('0xa8')](_0x51aa79['checkContactBlack'](_0x456ffc,_0x3002c0[0x0]))[_0x02de('0x9d')](_0x51aa79['loggerHandler'](_0x02de('0x20d'),_0x456ffc));}}})[_0x02de('0x9d')](loggerGetContactDialer(_0x02de('0x20e'),_0x456ffc,0x1));};Dialer[_0x02de('0x18')]['abandonmentRate']=function(_0x72858f,_0x5ac4e4,_0x5168d1,_0x3359f6,_0x211073,_0x10d3c2){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive['info'](_0x02de('0x20f'),_0x72858f);loggerPredictive[_0x02de('0x48')](_0x02de('0x210'),_0x5ac4e4);loggerPredictive[_0x02de('0x48')](_0x02de('0x211'),_0x5168d1);loggerPredictive[_0x02de('0x48')](_0x02de('0x212'),_0x3359f6);loggerPredictive[_0x02de('0x48')](_0x02de('0x213'),_0x211073);loggerPredictive[_0x02de('0x48')](_0x02de('0x52'));return new Promise(function(_0x49c701,_0x53f831){if(_0x72858f<=0x0||isNaN(_0x72858f)){return _0x53f831(msgResponse(_0x02de('0x214'),'Error',_0x02de('0x215')+_0x72858f));}if(_0x5168d1<=0x0||isNaN(_0x5168d1)){return _0x53f831(msgResponse(_0x02de('0x214'),'Error',_0x02de('0x216')+_0x5168d1));}if(_0x3359f6<=0x0||isNaN(_0x3359f6)){return _0x53f831(msgResponse('[abandonmentRate]',_0x02de('0x80'),_0x02de('0x217')+_0x3359f6));}if(_0x5ac4e4<=0x0||isNaN(_0x5ac4e4)){return _0x53f831(msgResponse(_0x02de('0x214'),_0x02de('0x80'),_0x02de('0x218')+_0x5ac4e4));}if(_0x211073<=0x0||isNaN(_0x211073)){return _0x53f831(msgResponse(_0x02de('0x214'),_0x02de('0x80'),_0x02de('0x219')+_0x211073));}_0x10d3c2=_0x10d3c2||0x0;var _0x5aa0e0=0x1/_0x5168d1;var _0x61b29=0x0;var _0x522896=0x0;var _0x15498b=0x0;var _0x235fbc=0x0;for(var _0x1d37d4=0x0;_0x15498b<_0x211073;_0x1d37d4+=0x1){_0x522896=_0x1d37d4/_0x5ac4e4;_0x61b29=(_0x3359f6*_0x522896+_0x10d3c2)/_0x5aa0e0;_0x15498b=utils['erlangb'](_0x61b29,_0x72858f);_0x235fbc=_0x61b29/_0x72858f*(0x1-utils[_0x02de('0x21a')](_0x61b29,_0x72858f));}return _0x49c701({'erlangCalls':_0x1d37d4,'erlangCallToSecond':_0x5ac4e4/_0x1d37d4,'erlangAbandonmentRate':_0x15498b,'erlangBusyFactor':_0x235fbc});});};Dialer['prototype']['busyFactor']=function(_0x245de1,_0xe0c3b7,_0x38da9d,_0x192449,_0x5cecd9,_0x2d0012){loggerPredictive['info'](_0x02de('0x21b'));loggerPredictive[_0x02de('0x48')]('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',_0x245de1);loggerPredictive['info'](_0x02de('0x210'),_0xe0c3b7);loggerPredictive[_0x02de('0x48')](_0x02de('0x211'),_0x38da9d);loggerPredictive[_0x02de('0x48')](_0x02de('0x212'),_0x192449);loggerPredictive['info'](_0x02de('0x21c'),_0x5cecd9);loggerPredictive[_0x02de('0x48')]('---------------------------');return new Promise(function(_0x3ebb91,_0x267e09){if(_0x245de1<=0x0||isNaN(_0x245de1)){return _0x267e09(msgResponse(_0x02de('0x21d'),'Error',_0x02de('0x215')+_0x245de1));}if(_0x38da9d<=0x0||isNaN(_0x38da9d)){return _0x267e09(msgResponse(_0x02de('0x21d'),_0x02de('0x80'),'Ts\x20=\x20'+_0x38da9d));}if(_0x192449<=0x0||isNaN(_0x192449)){return _0x267e09(msgResponse(_0x02de('0x21d'),_0x02de('0x80'),'p\x20=\x20'+_0x192449));}if(_0xe0c3b7<=0x0||isNaN(_0xe0c3b7)){return _0x267e09(msgResponse('[busyFactor]',_0x02de('0x80'),_0x02de('0x218')+_0xe0c3b7));}if(_0x5cecd9<=0x0||isNaN(_0x5cecd9)){return _0x267e09(msgResponse(_0x02de('0x21d'),'Error',_0x02de('0x21e')+_0x5cecd9));}_0x2d0012=_0x2d0012||0x0;var _0x387f19=0x1/_0x38da9d;var _0x221c4e=0x0;var _0x157064=0x0;var _0x24aafc=0x0;var _0x12db4f=0x0;for(var _0x418340=0x0;_0x12db4f<_0x5cecd9;_0x418340+=0x1){_0x157064=_0x418340/_0xe0c3b7;_0x221c4e=(_0x192449*_0x157064+_0x2d0012)/_0x387f19;_0x24aafc=utils[_0x02de('0x21a')](_0x221c4e,_0x245de1);_0x12db4f=_0x221c4e/_0x245de1*(0x1-utils[_0x02de('0x21a')](_0x221c4e,_0x245de1));}return _0x3ebb91({'erlangCalls':_0x418340,'erlangCallToSecond':_0xe0c3b7/_0x418340,'erlangAbandonmentRate':_0x24aafc,'erlangBusyFactor':_0x12db4f});});};module[_0x02de('0x21f')]=Dialer;
\ No newline at end of file
index 9d2a038..449fee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f66=['CampaignId','idHopper','ContactFirstName','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','voiceQueue','queue','exports','util','lodash','moment','isNil','name','Contact','phone','firstName','lastName','number','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x4a6d94,_0x1c9702){var _0x36aa39=function(_0x41bac7){while(--_0x41bac7){_0x4a6d94['push'](_0x4a6d94['shift']());}};_0x36aa39(++_0x1c9702);}(_0x7f66,0x114));var _0x67f6=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x7f66[_0x4565bf];return _0x5610ba;};'use strict';var util=require(_0x67f6('0x0'));var _=require(_0x67f6('0x1'));var moment=require(_0x67f6('0x2'));function checkNameSurname(_0x11de9e,_0x4077fc,_0x111611){var _0xdd71b7='';if(!_['isNil'](_0x4077fc)&&'string'===typeof _0x4077fc){_0xdd71b7+=_0x4077fc;}if(!_[_0x67f6('0x3')](_0x111611)&&'string'===typeof _0x111611){_0xdd71b7+='\x20'+_0x111611;}if(_0xdd71b7!==''){return _0xdd71b7;}return _0x11de9e;}function Action(_0xb6d8b0,_0x5a4ee9,_0x29881b){this['voiceQueue']=_0xb6d8b0;this['uniqueid']=_0x29881b||undefined;this[_0x67f6('0x4')]=checkNameSurname(_0x5a4ee9[_0x67f6('0x5')][_0x67f6('0x6')],_0x5a4ee9[_0x67f6('0x5')][_0x67f6('0x7')],_0x5a4ee9[_0x67f6('0x5')][_0x67f6('0x8')]);this[_0x67f6('0x9')]=_0x5a4ee9[_0x67f6('0x6')];this['queue']=_0xb6d8b0[_0x67f6('0x4')];this['active']=_0x5a4ee9[_0x67f6('0xa')]||![];this[_0x67f6('0xb')]=_0xb6d8b0[_0x67f6('0xb')];this[_0x67f6('0xc')]=_0xb6d8b0[_0x67f6('0xc')]||0x3;this['scheduledat']=_0x5a4ee9[_0x67f6('0xd')];this[_0x67f6('0xe')]=_0x5a4ee9[_0x67f6('0xe')];this['countcongestionretry']=_0x5a4ee9[_0x67f6('0xf')];this[_0x67f6('0x10')]=_0x5a4ee9[_0x67f6('0x10')];this[_0x67f6('0x11')]=_0x5a4ee9[_0x67f6('0x11')];this['countdropretry']=_0x5a4ee9[_0x67f6('0x12')];this[_0x67f6('0x13')]=_0x5a4ee9['countabandonedretry'];this['countmachineretry']=_0x5a4ee9['countmachineretry'];this[_0x67f6('0x14')]=_0x5a4ee9[_0x67f6('0x14')];this[_0x67f6('0x15')]=_0x5a4ee9[_0x67f6('0x15')];this[_0x67f6('0x16')]=_0x5a4ee9[_0x67f6('0x16')];this[_0x67f6('0x17')]=_0x5a4ee9['UserId'];this[_0x67f6('0x18')]=_0x5a4ee9[_0x67f6('0x18')];this[_0x67f6('0x19')]=_0x5a4ee9[_0x67f6('0x19')];this[_0x67f6('0x1a')]=_0x5a4ee9['id'];this[_0x67f6('0x1b')]=_0x5a4ee9[_0x67f6('0x5')]['firstName']||'';this['starttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x67f6('0x1c')]=_0x5a4ee9[_0x67f6('0x1c')];this[_0x67f6('0x1d')]=_0x5a4ee9[_0x67f6('0x1d')];this['callbackat']=_0x5a4ee9[_0x67f6('0x1e')];this[_0x67f6('0x1f')]=_0x5a4ee9[_0x67f6('0x1f')];this[_0x67f6('0x20')]='';this[_0x67f6('0x21')]='';}Action[_0x67f6('0x22')][_0x67f6('0x23')]=function(){return util[_0x67f6('0x24')](_0x67f6('0x25'),this['name'],this['voiceQueue'][_0x67f6('0x26')]>0x0?this['number'][_0x67f6('0x27')](this[_0x67f6('0x28')]['dialCutDigit']):this[_0x67f6('0x9')]);};Action[_0x67f6('0x22')]['getQueue']=function(){return this[_0x67f6('0x29')];};module[_0x67f6('0x2a')]=Action;
\ No newline at end of file
+var _0x2cb1=['recallme','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','exports','util','isNil','string','voiceQueue','uniqueid','name','Contact','phone','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid'];(function(_0x2a9d3b,_0x492bb6){var _0x11883c=function(_0x2373ff){while(--_0x2373ff){_0x2a9d3b['push'](_0x2a9d3b['shift']());}};_0x11883c(++_0x492bb6);}(_0x2cb1,0x136));var _0x12cb=function(_0x1ff80f,_0xfc057f){_0x1ff80f=_0x1ff80f-0x0;var _0x464b25=_0x2cb1[_0x1ff80f];return _0x464b25;};'use strict';var util=require(_0x12cb('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x10e895,_0x35b755,_0x323d58){var _0x2495d6='';if(!_[_0x12cb('0x1')](_0x35b755)&&_0x12cb('0x2')===typeof _0x35b755){_0x2495d6+=_0x35b755;}if(!_['isNil'](_0x323d58)&&'string'===typeof _0x323d58){_0x2495d6+='\x20'+_0x323d58;}if(_0x2495d6!==''){return _0x2495d6;}return _0x10e895;}function Action(_0x5161e4,_0x3797d3,_0x2fcce5){this[_0x12cb('0x3')]=_0x5161e4;this[_0x12cb('0x4')]=_0x2fcce5||undefined;this[_0x12cb('0x5')]=checkNameSurname(_0x3797d3[_0x12cb('0x6')][_0x12cb('0x7')],_0x3797d3[_0x12cb('0x6')]['firstName'],_0x3797d3[_0x12cb('0x6')]['lastName']);this[_0x12cb('0x8')]=_0x3797d3[_0x12cb('0x7')];this[_0x12cb('0x9')]=_0x5161e4[_0x12cb('0x5')];this[_0x12cb('0xa')]=_0x3797d3[_0x12cb('0xa')]||![];this[_0x12cb('0xb')]=_0x5161e4['type'];this[_0x12cb('0xc')]=_0x5161e4[_0x12cb('0xc')]||0x3;this[_0x12cb('0xd')]=_0x3797d3[_0x12cb('0xd')];this[_0x12cb('0xe')]=_0x3797d3['countbusyretry'];this[_0x12cb('0xf')]=_0x3797d3[_0x12cb('0xf')];this[_0x12cb('0x10')]=_0x3797d3[_0x12cb('0x10')];this['countnosuchnumberretry']=_0x3797d3[_0x12cb('0x11')];this[_0x12cb('0x12')]=_0x3797d3['countdropretry'];this[_0x12cb('0x13')]=_0x3797d3[_0x12cb('0x13')];this[_0x12cb('0x14')]=_0x3797d3[_0x12cb('0x14')];this[_0x12cb('0x15')]=_0x3797d3[_0x12cb('0x15')];this[_0x12cb('0x16')]=_0x3797d3['ContactId'];this[_0x12cb('0x17')]=_0x3797d3['ListId'];this['UserId']=_0x3797d3[_0x12cb('0x18')];this[_0x12cb('0x19')]=_0x3797d3['VoiceQueueId'];this['CampaignId']=_0x3797d3[_0x12cb('0x1a')];this[_0x12cb('0x1b')]=_0x3797d3['id'];this[_0x12cb('0x1c')]=_0x3797d3[_0x12cb('0x6')][_0x12cb('0x1d')]||'';this['starttime']=moment()[_0x12cb('0x1e')](_0x12cb('0x1f'));this[_0x12cb('0x20')]=_0x3797d3['callback'];this[_0x12cb('0x21')]=_0x3797d3['callbackuniqueid'];this['callbackat']=_0x3797d3['callbackat'];this[_0x12cb('0x22')]=_0x3797d3[_0x12cb('0x22')];this[_0x12cb('0x23')]='';this['originatecalleridname']='';}Action[_0x12cb('0x24')][_0x12cb('0x25')]=function(){return util[_0x12cb('0x1e')](_0x12cb('0x26'),this[_0x12cb('0x5')],this[_0x12cb('0x3')][_0x12cb('0x27')]>0x0?this[_0x12cb('0x8')][_0x12cb('0x28')](this[_0x12cb('0x3')]['dialCutDigit']):this[_0x12cb('0x8')]);};Action['prototype'][_0x12cb('0x29')]=function(){return this[_0x12cb('0x9')];};module[_0x12cb('0x2a')]=Action;
\ No newline at end of file
index 5d634c2..596f24a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb29d=['agiafterat','exports','moment','state','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridnum','number','starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','getSeconds','endtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x52b828,_0x359d0f){var _0x2721d8=function(_0x4f4222){while(--_0x4f4222){_0x52b828['push'](_0x52b828['shift']());}};_0x2721d8(++_0x359d0f);}(_0xb29d,0x9a));var _0xdb29=function(_0x5acf6e,_0x4403de){_0x5acf6e=_0x5acf6e-0x0;var _0xb67a1=_0xb29d[_0x5acf6e];return _0xb67a1;};'use strict';var moment=require(_0xdb29('0x0'));var utils=require('../utils');function AgentComplete(_0x363e5e,_0x148b30){this[_0xdb29('0x1')]=0x4;this['statedesc']='Answer';this['scheduledat']=_0x363e5e['scheduledat'];this['type']=_0x363e5e[_0xdb29('0x2')];this['campaigntype']=_0x363e5e[_0xdb29('0x2')]==='outbound'?_0xdb29('0x3'):_0x363e5e[_0xdb29('0x2')];this[_0xdb29('0x4')]=_0x363e5e[_0xdb29('0x4')];this[_0xdb29('0x5')]=_0x363e5e[_0xdb29('0x5')];this[_0xdb29('0x6')]=_0x363e5e[_0xdb29('0x6')];this[_0xdb29('0x7')]=_0x363e5e[_0xdb29('0x4')]+_0x363e5e['countcongestionretry']+_0x363e5e[_0xdb29('0x6')]+_0x363e5e[_0xdb29('0x8')]+_0x363e5e[_0xdb29('0x9')]+_0x363e5e['countabandonedretry']+_0x363e5e['countmachineretry']+_0x363e5e[_0xdb29('0xa')];this[_0xdb29('0x8')]=_0x363e5e[_0xdb29('0x8')];this[_0xdb29('0x9')]=_0x363e5e[_0xdb29('0x9')];this[_0xdb29('0xb')]=_0x363e5e[_0xdb29('0xb')];this[_0xdb29('0xc')]=_0x363e5e['countmachineretry'];this[_0xdb29('0xa')]=_0x363e5e[_0xdb29('0xa')];this[_0xdb29('0xd')]=_0x148b30[_0xdb29('0xd')];this['calleridname']=_0x363e5e['name'];this[_0xdb29('0xe')]=_0x363e5e[_0xdb29('0xf')];this[_0xdb29('0x10')]=_0x363e5e['starttime'];this[_0xdb29('0x11')]=_0x363e5e[_0xdb29('0x11')];this[_0xdb29('0x12')]=_0x363e5e['answertime'];this['endtime']=moment()[_0xdb29('0x13')](_0xdb29('0x14'));this[_0xdb29('0x15')]=utils['getSeconds'](_0x363e5e[_0xdb29('0x11')],_0x363e5e['starttime']);this[_0xdb29('0x16')]=utils[_0xdb29('0x17')](_0x363e5e[_0xdb29('0x12')],_0x363e5e[_0xdb29('0x11')]);this['talktime']=utils[_0xdb29('0x17')](this[_0xdb29('0x18')],_0x363e5e[_0xdb29('0x12')]);this['queue']=_0x148b30[_0xdb29('0x3')];this['membername']=_0x148b30['membername'];this['reason']=_0x148b30['reason'];this[_0xdb29('0x19')]=_0x363e5e[_0xdb29('0x19')];this[_0xdb29('0x1a')]=_0x363e5e['callbackuniqueid'];this[_0xdb29('0x1b')]=_0x363e5e['callbackat'];this[_0xdb29('0x1c')]=_0x363e5e[_0xdb29('0x1c')];this[_0xdb29('0x1d')]=_0x363e5e[_0xdb29('0x1d')];this[_0xdb29('0x1e')]=_0x363e5e[_0xdb29('0x1e')];this[_0xdb29('0x1f')]=_0x363e5e[_0xdb29('0x1f')];this[_0xdb29('0x20')]=_0x363e5e[_0xdb29('0x20')];this['CampaignId']=_0x363e5e[_0xdb29('0x21')];this[_0xdb29('0x22')]=_0x363e5e[_0xdb29('0x22')]||'';this['originatecalleridname']=_0x363e5e[_0xdb29('0x23')]||'';this[_0xdb29('0x24')]=_0x363e5e[_0xdb29('0x24')];}module[_0xdb29('0x25')]=AgentComplete;
\ No newline at end of file
+var _0x068a=['CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','../utils','state','Answer','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','format','ringtime','getSeconds','holdtime','answertime','talktime','endtime','reason','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x4c060b,_0x4c5e75){var _0x5b9790=function(_0x32e525){while(--_0x32e525){_0x4c060b['push'](_0x4c060b['shift']());}};_0x5b9790(++_0x4c5e75);}(_0x068a,0x17f));var _0xa068=function(_0x2a153f,_0x50b499){_0x2a153f=_0x2a153f-0x0;var _0x6b9c5e=_0x068a[_0x2a153f];return _0x6b9c5e;};'use strict';var moment=require('moment');var utils=require(_0xa068('0x0'));function AgentComplete(_0x1b33e9,_0x30e399){this[_0xa068('0x1')]=0x4;this['statedesc']=_0xa068('0x2');this['scheduledat']=_0x1b33e9[_0xa068('0x3')];this['type']=_0x1b33e9[_0xa068('0x4')];this['campaigntype']=_0x1b33e9['type']===_0xa068('0x5')?_0xa068('0x6'):_0x1b33e9['type'];this[_0xa068('0x7')]=_0x1b33e9[_0xa068('0x7')];this[_0xa068('0x8')]=_0x1b33e9[_0xa068('0x8')];this[_0xa068('0x9')]=_0x1b33e9['countnoanswerretry'];this[_0xa068('0xa')]=_0x1b33e9['countbusyretry']+_0x1b33e9[_0xa068('0x8')]+_0x1b33e9['countnoanswerretry']+_0x1b33e9[_0xa068('0xb')]+_0x1b33e9['countdropretry']+_0x1b33e9[_0xa068('0xc')]+_0x1b33e9[_0xa068('0xd')]+_0x1b33e9[_0xa068('0xe')];this[_0xa068('0xb')]=_0x1b33e9['countnosuchnumberretry'];this[_0xa068('0xf')]=_0x1b33e9['countdropretry'];this[_0xa068('0xc')]=_0x1b33e9[_0xa068('0xc')];this['countmachineretry']=_0x1b33e9[_0xa068('0xd')];this['countagentrejectretry']=_0x1b33e9[_0xa068('0xe')];this['uniqueid']=_0x30e399[_0xa068('0x10')];this[_0xa068('0x11')]=_0x1b33e9['name'];this[_0xa068('0x12')]=_0x1b33e9[_0xa068('0x13')];this[_0xa068('0x14')]=_0x1b33e9['starttime'];this[_0xa068('0x15')]=_0x1b33e9[_0xa068('0x15')];this['answertime']=_0x1b33e9['answertime'];this['endtime']=moment()[_0xa068('0x16')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa068('0x17')]=utils[_0xa068('0x18')](_0x1b33e9[_0xa068('0x15')],_0x1b33e9[_0xa068('0x14')]);this[_0xa068('0x19')]=utils['getSeconds'](_0x1b33e9[_0xa068('0x1a')],_0x1b33e9[_0xa068('0x15')]);this[_0xa068('0x1b')]=utils[_0xa068('0x18')](this[_0xa068('0x1c')],_0x1b33e9[_0xa068('0x1a')]);this[_0xa068('0x6')]=_0x30e399[_0xa068('0x6')];this['membername']=_0x30e399['membername'];this[_0xa068('0x1d')]=_0x30e399[_0xa068('0x1d')];this[_0xa068('0x1e')]=_0x1b33e9[_0xa068('0x1e')];this['callbackuniqueid']=_0x1b33e9['callbackuniqueid'];this[_0xa068('0x1f')]=_0x1b33e9['callbackat'];this[_0xa068('0x20')]=_0x1b33e9[_0xa068('0x20')];this[_0xa068('0x21')]=_0x1b33e9['ContactId'];this[_0xa068('0x22')]=_0x1b33e9[_0xa068('0x22')];this[_0xa068('0x23')]=_0x1b33e9['UserId'];this[_0xa068('0x24')]=_0x1b33e9[_0xa068('0x24')];this[_0xa068('0x25')]=_0x1b33e9[_0xa068('0x25')];this[_0xa068('0x26')]=_0x1b33e9['originatecalleridnum']||'';this[_0xa068('0x27')]=_0x1b33e9['originatecalleridname']||'';this['agiafterat']=_0x1b33e9[_0xa068('0x28')];}module[_0xa068('0x29')]=AgentComplete;
\ No newline at end of file
index 7049663..1111dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3069=['starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x837dad,_0x1d9098){var _0x1d62d3=function(_0x40b7c1){while(--_0x40b7c1){_0x837dad['push'](_0x837dad['shift']());}};_0x1d62d3(++_0x1d9098);}(_0x3069,0x111));var _0x9306=function(_0x30fc1c,_0x470217){_0x30fc1c=_0x30fc1c-0x0;var _0x582998=_0x3069[_0x30fc1c];return _0x582998;};'use strict';function Final(_0x1e1178){this[_0x9306('0x0')]=_0x1e1178[_0x9306('0x0')];this[_0x9306('0x1')]=_0x1e1178[_0x9306('0x1')];this[_0x9306('0x2')]=_0x1e1178[_0x9306('0x2')];this[_0x9306('0x3')]=_0x1e1178[_0x9306('0x2')]===_0x9306('0x4')?_0x9306('0x5'):_0x1e1178[_0x9306('0x2')];this['countbusyretry']=_0x1e1178[_0x9306('0x6')];this[_0x9306('0x7')]=_0x1e1178[_0x9306('0x7')];this[_0x9306('0x8')]=_0x1e1178[_0x9306('0x8')];this[_0x9306('0x9')]=_0x1e1178[_0x9306('0x6')]+_0x1e1178['countcongestionretry']+_0x1e1178[_0x9306('0x8')]+_0x1e1178[_0x9306('0xa')]+_0x1e1178[_0x9306('0xb')]+_0x1e1178[_0x9306('0xc')]+_0x1e1178[_0x9306('0xd')]+_0x1e1178[_0x9306('0xe')];this['countnosuchnumberretry']=_0x1e1178[_0x9306('0xa')];this[_0x9306('0xb')]=_0x1e1178[_0x9306('0xb')];this['countabandonedretry']=_0x1e1178[_0x9306('0xc')];this['countmachineretry']=_0x1e1178[_0x9306('0xd')];this[_0x9306('0xe')]=_0x1e1178[_0x9306('0xe')];this[_0x9306('0x5')]=_0x1e1178['queue'];this['calleridname']=_0x1e1178['calleridname'];this['calleridnum']=_0x1e1178['calleridnum'];this[_0x9306('0xf')]=_0x1e1178[_0x9306('0xf')];this['responsetime']=_0x1e1178[_0x9306('0x10')];this[_0x9306('0x11')]=_0x1e1178['responsetime'];this['ringtime']=_0x1e1178[_0x9306('0x12')]||0x0;this['holdtime']=_0x1e1178['holdtime']||0x0;this[_0x9306('0x13')]=_0x1e1178[_0x9306('0x13')]||0x0;this[_0x9306('0x14')]=_0x1e1178[_0x9306('0x14')];this['callbackuniqueid']=_0x1e1178[_0x9306('0x15')];this[_0x9306('0x16')]=_0x1e1178[_0x9306('0x16')];this['recallme']=_0x1e1178['recallme'];this['ContactId']=_0x1e1178[_0x9306('0x17')];this[_0x9306('0x18')]=_0x1e1178[_0x9306('0x18')];this[_0x9306('0x19')]=_0x1e1178[_0x9306('0x19')];this[_0x9306('0x1a')]=_0x1e1178[_0x9306('0x1a')];this[_0x9306('0x1b')]=_0x1e1178['CampaignId'];this[_0x9306('0x1c')]=_0x1e1178[_0x9306('0x1c')]||'';this['originatecalleridname']=_0x1e1178['originatecalleridname']||'';this[_0x9306('0x1d')]=_0x1e1178['state'];this[_0x9306('0x1e')]=_0x1e1178[_0x9306('0x1e')];}module[_0x9306('0x1f')]=Final;
\ No newline at end of file
+var _0xd68c=['countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x5f2868,_0x266c8f){var _0x23f2fb=function(_0x1ecc1c){while(--_0x1ecc1c){_0x5f2868['push'](_0x5f2868['shift']());}};_0x23f2fb(++_0x266c8f);}(_0xd68c,0x18f));var _0xcd68=function(_0x4400bf,_0x3dae8a){_0x4400bf=_0x4400bf-0x0;var _0x5aa062=_0xd68c[_0x4400bf];return _0x5aa062;};'use strict';function Final(_0x1b28c4){this['uniqueid']=_0x1b28c4[_0xcd68('0x0')];this['scheduledat']=_0x1b28c4[_0xcd68('0x1')];this[_0xcd68('0x2')]=_0x1b28c4['type'];this[_0xcd68('0x3')]=_0x1b28c4[_0xcd68('0x2')]==='outbound'?_0xcd68('0x4'):_0x1b28c4[_0xcd68('0x2')];this[_0xcd68('0x5')]=_0x1b28c4[_0xcd68('0x5')];this[_0xcd68('0x6')]=_0x1b28c4['countcongestionretry'];this[_0xcd68('0x7')]=_0x1b28c4['countnoanswerretry'];this[_0xcd68('0x8')]=_0x1b28c4[_0xcd68('0x5')]+_0x1b28c4['countcongestionretry']+_0x1b28c4[_0xcd68('0x7')]+_0x1b28c4[_0xcd68('0x9')]+_0x1b28c4[_0xcd68('0xa')]+_0x1b28c4[_0xcd68('0xb')]+_0x1b28c4[_0xcd68('0xc')]+_0x1b28c4[_0xcd68('0xd')];this[_0xcd68('0x9')]=_0x1b28c4[_0xcd68('0x9')];this[_0xcd68('0xa')]=_0x1b28c4[_0xcd68('0xa')];this[_0xcd68('0xb')]=_0x1b28c4[_0xcd68('0xb')];this[_0xcd68('0xc')]=_0x1b28c4[_0xcd68('0xc')];this[_0xcd68('0xd')]=_0x1b28c4[_0xcd68('0xd')];this[_0xcd68('0x4')]=_0x1b28c4[_0xcd68('0x4')];this[_0xcd68('0xe')]=_0x1b28c4[_0xcd68('0xe')];this['calleridnum']=_0x1b28c4[_0xcd68('0xf')];this[_0xcd68('0x10')]=_0x1b28c4[_0xcd68('0x10')];this['responsetime']=_0x1b28c4[_0xcd68('0x11')];this[_0xcd68('0x12')]=_0x1b28c4[_0xcd68('0x11')];this[_0xcd68('0x13')]=_0x1b28c4[_0xcd68('0x13')]||0x0;this[_0xcd68('0x14')]=_0x1b28c4[_0xcd68('0x14')]||0x0;this['talktime']=_0x1b28c4[_0xcd68('0x15')]||0x0;this[_0xcd68('0x16')]=_0x1b28c4[_0xcd68('0x16')];this[_0xcd68('0x17')]=_0x1b28c4[_0xcd68('0x17')];this['callbackat']=_0x1b28c4['callbackat'];this[_0xcd68('0x18')]=_0x1b28c4[_0xcd68('0x18')];this[_0xcd68('0x19')]=_0x1b28c4[_0xcd68('0x19')];this['ListId']=_0x1b28c4[_0xcd68('0x1a')];this['UserId']=_0x1b28c4[_0xcd68('0x1b')];this[_0xcd68('0x1c')]=_0x1b28c4[_0xcd68('0x1c')];this[_0xcd68('0x1d')]=_0x1b28c4[_0xcd68('0x1d')];this['originatecalleridnum']=_0x1b28c4['originatecalleridnum']||'';this[_0xcd68('0x1e')]=_0x1b28c4[_0xcd68('0x1e')]||'';this[_0xcd68('0x1f')]=_0x1b28c4['state'];this[_0xcd68('0x20')]=_0x1b28c4[_0xcd68('0x20')];}module[_0xcd68('0x21')]=Final;
\ No newline at end of file
index db3edf8..31ad1e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036c=['reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','state','statedesc','Answer','scheduledat','type','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','queue'];(function(_0x28089e,_0x530f8a){var _0x46a73c=function(_0x461513){while(--_0x461513){_0x28089e['push'](_0x28089e['shift']());}};_0x46a73c(++_0x530f8a);}(_0x036c,0x1af));var _0xc036=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x036c[_0x37c22c];return _0x119d79;};'use strict';var moment=require(_0xc036('0x0'));var utils=require(_0xc036('0x1'));function Hangup(_0x317eec,_0x52c6fe){this[_0xc036('0x2')]=0x4;this[_0xc036('0x3')]=_0xc036('0x4');this[_0xc036('0x5')]=_0x317eec['scheduledat'];this['type']=_0x317eec[_0xc036('0x6')];this['campaigntype']=_0x317eec[_0xc036('0x6')]==='outbound'?'queue':_0x317eec[_0xc036('0x6')];this[_0xc036('0x7')]=_0x317eec[_0xc036('0x7')]||![];this[_0xc036('0x8')]=_0x317eec[_0xc036('0x8')];this['countcongestionretry']=_0x317eec[_0xc036('0x9')];this[_0xc036('0xa')]=_0x317eec[_0xc036('0xa')];this[_0xc036('0xb')]=_0x317eec[_0xc036('0x8')]+_0x317eec['countcongestionretry']+_0x317eec[_0xc036('0xa')]+_0x317eec[_0xc036('0xc')]+_0x317eec[_0xc036('0xd')]+_0x317eec[_0xc036('0xe')]+_0x317eec[_0xc036('0xf')]+_0x317eec['countagentrejectretry'];this[_0xc036('0xc')]=_0x317eec['countnosuchnumberretry'];this[_0xc036('0xd')]=_0x317eec['countdropretry'];this['countabandonedretry']=_0x317eec['countabandonedretry'];this[_0xc036('0xf')]=_0x317eec[_0xc036('0xf')];this[_0xc036('0x10')]=_0x317eec[_0xc036('0x10')];this[_0xc036('0x11')]=_0x52c6fe[_0xc036('0x11')];this[_0xc036('0x12')]=_0x317eec[_0xc036('0x13')];this[_0xc036('0x14')]=_0x317eec[_0xc036('0x15')];this[_0xc036('0x16')]=_0x317eec[_0xc036('0x16')];this[_0xc036('0x17')]=_0x317eec[_0xc036('0x17')];this[_0xc036('0x18')]=moment()[_0xc036('0x19')](_0xc036('0x1a'));this[_0xc036('0x1b')]=utils[_0xc036('0x1c')](_0x317eec[_0xc036('0x17')],_0x317eec[_0xc036('0x16')]);this[_0xc036('0x1d')]=0x0;this['talktime']=utils['getSeconds'](this['endtime'],_0x317eec[_0xc036('0x17')]);this[_0xc036('0x1e')]=_0x317eec[_0xc036('0x1e')];this['membername']='IVR';this[_0xc036('0x1f')]=_0x52c6fe[_0xc036('0x20')];this[_0xc036('0x21')]=_0x317eec['callback'];this[_0xc036('0x22')]=_0x317eec[_0xc036('0x22')];this[_0xc036('0x23')]=_0x317eec[_0xc036('0x23')];this['recallme']=_0x317eec[_0xc036('0x24')];this['ContactId']=_0x317eec['ContactId'];this[_0xc036('0x25')]=_0x317eec[_0xc036('0x25')];this[_0xc036('0x26')]=_0x317eec[_0xc036('0x26')];this[_0xc036('0x27')]=_0x317eec[_0xc036('0x27')];this['CampaignId']=_0x317eec[_0xc036('0x28')];}module[_0xc036('0x29')]=Hangup;
\ No newline at end of file
+var _0xcb0c=['responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','getSeconds','queue','membername','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','moment','../utils','state','scheduledat','type','campaigntype','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridnum','number','starttime'];(function(_0x593f77,_0x34404c){var _0xc17c14=function(_0x300053){while(--_0x300053){_0x593f77['push'](_0x593f77['shift']());}};_0xc17c14(++_0x34404c);}(_0xcb0c,0xcb));var _0xccb0=function(_0x20d54d,_0x1adc8e){_0x20d54d=_0x20d54d-0x0;var _0x516e8b=_0xcb0c[_0x20d54d];return _0x516e8b;};'use strict';var moment=require(_0xccb0('0x0'));var utils=require(_0xccb0('0x1'));function Hangup(_0x474440,_0x537725){this[_0xccb0('0x2')]=0x4;this['statedesc']='Answer';this[_0xccb0('0x3')]=_0x474440[_0xccb0('0x3')];this['type']=_0x474440[_0xccb0('0x4')];this[_0xccb0('0x5')]=_0x474440[_0xccb0('0x4')]==='outbound'?'queue':_0x474440[_0xccb0('0x4')];this['amd']=_0x474440['amd']||![];this[_0xccb0('0x6')]=_0x474440[_0xccb0('0x6')];this['countcongestionretry']=_0x474440['countcongestionretry'];this[_0xccb0('0x7')]=_0x474440[_0xccb0('0x7')];this[_0xccb0('0x8')]=_0x474440[_0xccb0('0x6')]+_0x474440[_0xccb0('0x9')]+_0x474440[_0xccb0('0x7')]+_0x474440['countnosuchnumberretry']+_0x474440[_0xccb0('0xa')]+_0x474440['countabandonedretry']+_0x474440[_0xccb0('0xb')]+_0x474440[_0xccb0('0xc')];this['countnosuchnumberretry']=_0x474440[_0xccb0('0xd')];this[_0xccb0('0xa')]=_0x474440[_0xccb0('0xa')];this[_0xccb0('0xe')]=_0x474440['countabandonedretry'];this[_0xccb0('0xb')]=_0x474440[_0xccb0('0xb')];this['countagentrejectretry']=_0x474440[_0xccb0('0xc')];this[_0xccb0('0xf')]=_0x537725[_0xccb0('0xf')];this['calleridname']=_0x474440['name'];this[_0xccb0('0x10')]=_0x474440[_0xccb0('0x11')];this['starttime']=_0x474440[_0xccb0('0x12')];this[_0xccb0('0x13')]=_0x474440['responsetime'];this[_0xccb0('0x14')]=moment()[_0xccb0('0x15')](_0xccb0('0x16'));this['ringtime']=utils['getSeconds'](_0x474440[_0xccb0('0x13')],_0x474440[_0xccb0('0x12')]);this['holdtime']=0x0;this['talktime']=utils[_0xccb0('0x17')](this[_0xccb0('0x14')],_0x474440[_0xccb0('0x13')]);this[_0xccb0('0x18')]=_0x474440[_0xccb0('0x18')];this[_0xccb0('0x19')]=_0xccb0('0x1a');this[_0xccb0('0x1b')]=_0x537725['cause-txt'];this[_0xccb0('0x1c')]=_0x474440['callback'];this[_0xccb0('0x1d')]=_0x474440[_0xccb0('0x1d')];this[_0xccb0('0x1e')]=_0x474440[_0xccb0('0x1e')];this[_0xccb0('0x1f')]=_0x474440[_0xccb0('0x1f')];this['ContactId']=_0x474440[_0xccb0('0x20')];this[_0xccb0('0x21')]=_0x474440[_0xccb0('0x21')];this[_0xccb0('0x22')]=_0x474440['UserId'];this[_0xccb0('0x23')]=_0x474440[_0xccb0('0x23')];this[_0xccb0('0x24')]=_0x474440['CampaignId'];}module['exports']=Hangup;
\ No newline at end of file
index 1e7ccda..0f83fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6019=['countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countagentrejectretry','countdropretry','countmachineretry','calleridname','calleridnum','number','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','../utils','uniqueid','scheduledat','campaigntype','type','outbound','queue','countbusyretry'];(function(_0x1accf4,_0x312b17){var _0x28fefb=function(_0x5e5a8a){while(--_0x5e5a8a){_0x1accf4['push'](_0x1accf4['shift']());}};_0x28fefb(++_0x312b17);}(_0x6019,0xdc));var _0x9601=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x6019[_0x3bf83f];return _0x22c4a9;};'use strict';var utils=require(_0x9601('0x0'));function History(_0x5d213a){this['uniqueid']=_0x5d213a[_0x9601('0x1')];this['scheduledat']=_0x5d213a[_0x9601('0x2')]||undefined;this['type']=_0x5d213a['type'];this[_0x9601('0x3')]=_0x5d213a[_0x9601('0x4')]===_0x9601('0x5')?_0x9601('0x6'):_0x5d213a['type'];this[_0x9601('0x7')]=_0x5d213a['countbusyretry'];this[_0x9601('0x8')]=_0x5d213a[_0x9601('0x8')];this[_0x9601('0x9')]=_0x5d213a['countnoanswerretry'];this[_0x9601('0xa')]=_0x5d213a[_0x9601('0x7')]+_0x5d213a['countcongestionretry']+_0x5d213a[_0x9601('0x9')]+_0x5d213a[_0x9601('0xb')]+_0x5d213a['countdropretry']+_0x5d213a[_0x9601('0xc')]+_0x5d213a['countmachineretry']+_0x5d213a[_0x9601('0xd')];this[_0x9601('0xb')]=_0x5d213a[_0x9601('0xb')];this[_0x9601('0xe')]=_0x5d213a[_0x9601('0xe')];this['countabandonedretry']=_0x5d213a[_0x9601('0xc')];this[_0x9601('0xf')]=_0x5d213a[_0x9601('0xf')];this['countagentrejectretry']=_0x5d213a[_0x9601('0xd')];this[_0x9601('0x6')]=_0x5d213a[_0x9601('0x6')];this[_0x9601('0x10')]=_0x5d213a['name'];this[_0x9601('0x11')]=_0x5d213a[_0x9601('0x12')];this['starttime']=_0x5d213a[_0x9601('0x13')];this['responsetime']=_0x5d213a[_0x9601('0x14')];this[_0x9601('0x15')]=_0x5d213a[_0x9601('0x14')];this[_0x9601('0x16')]=utils['getSeconds'](_0x5d213a[_0x9601('0x14')],_0x5d213a['starttime']);this['holdtime']=0x0;this[_0x9601('0x17')]=0x0;this['callback']=_0x5d213a[_0x9601('0x18')];this[_0x9601('0x19')]=_0x5d213a[_0x9601('0x19')];this[_0x9601('0x1a')]=_0x5d213a[_0x9601('0x1a')];this[_0x9601('0x1b')]=_0x5d213a[_0x9601('0x1b')];this[_0x9601('0x1c')]=_0x5d213a[_0x9601('0x1c')];this[_0x9601('0x1d')]=_0x5d213a[_0x9601('0x1d')];this[_0x9601('0x1e')]=_0x5d213a[_0x9601('0x1e')];this[_0x9601('0x1f')]=_0x5d213a[_0x9601('0x1f')];this[_0x9601('0x20')]=_0x5d213a[_0x9601('0x20')];this[_0x9601('0x21')]=_0x5d213a['originatecalleridnum']||'';this[_0x9601('0x22')]=_0x5d213a[_0x9601('0x22')]||'';this[_0x9601('0x23')]=_0x5d213a['state'];this[_0x9601('0x24')]=_0x5d213a['statedesc'];}module[_0x9601('0x25')]=History;
\ No newline at end of file
+var _0x3494=['recallme','ContactId','ListId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countmachineretry','queue','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat'];(function(_0x17de8e,_0x41ad4c){var _0x39aba5=function(_0x255320){while(--_0x255320){_0x17de8e['push'](_0x17de8e['shift']());}};_0x39aba5(++_0x41ad4c);}(_0x3494,0x13a));var _0x4349=function(_0x37c889,_0x16e2b6){_0x37c889=_0x37c889-0x0;var _0x28ec5e=_0x3494[_0x37c889];return _0x28ec5e;};'use strict';var utils=require('../utils');function History(_0x4a87c5){this[_0x4349('0x0')]=_0x4a87c5[_0x4349('0x0')];this[_0x4349('0x1')]=_0x4a87c5[_0x4349('0x1')]||undefined;this['type']=_0x4a87c5[_0x4349('0x2')];this[_0x4349('0x3')]=_0x4a87c5[_0x4349('0x2')]===_0x4349('0x4')?'queue':_0x4a87c5[_0x4349('0x2')];this[_0x4349('0x5')]=_0x4a87c5[_0x4349('0x5')];this[_0x4349('0x6')]=_0x4a87c5['countcongestionretry'];this[_0x4349('0x7')]=_0x4a87c5[_0x4349('0x7')];this['countglobal']=_0x4a87c5[_0x4349('0x5')]+_0x4a87c5[_0x4349('0x6')]+_0x4a87c5[_0x4349('0x7')]+_0x4a87c5['countnosuchnumberretry']+_0x4a87c5['countdropretry']+_0x4a87c5[_0x4349('0x8')]+_0x4a87c5['countmachineretry']+_0x4a87c5[_0x4349('0x9')];this[_0x4349('0xa')]=_0x4a87c5['countnosuchnumberretry'];this[_0x4349('0xb')]=_0x4a87c5[_0x4349('0xb')];this[_0x4349('0x8')]=_0x4a87c5[_0x4349('0x8')];this['countmachineretry']=_0x4a87c5[_0x4349('0xc')];this[_0x4349('0x9')]=_0x4a87c5[_0x4349('0x9')];this[_0x4349('0xd')]=_0x4a87c5[_0x4349('0xd')];this[_0x4349('0xe')]=_0x4a87c5[_0x4349('0xf')];this[_0x4349('0x10')]=_0x4a87c5[_0x4349('0x11')];this[_0x4349('0x12')]=_0x4a87c5[_0x4349('0x12')];this[_0x4349('0x13')]=_0x4a87c5[_0x4349('0x13')];this[_0x4349('0x14')]=_0x4a87c5[_0x4349('0x13')];this[_0x4349('0x15')]=utils[_0x4349('0x16')](_0x4a87c5[_0x4349('0x13')],_0x4a87c5['starttime']);this[_0x4349('0x17')]=0x0;this[_0x4349('0x18')]=0x0;this['callback']=_0x4a87c5[_0x4349('0x19')];this[_0x4349('0x1a')]=_0x4a87c5[_0x4349('0x1a')];this['callbackat']=_0x4a87c5[_0x4349('0x1b')];this[_0x4349('0x1c')]=_0x4a87c5[_0x4349('0x1c')];this[_0x4349('0x1d')]=_0x4a87c5[_0x4349('0x1d')];this['ListId']=_0x4a87c5[_0x4349('0x1e')];this['UserId']=_0x4a87c5['UserId'];this[_0x4349('0x1f')]=_0x4a87c5[_0x4349('0x1f')];this['CampaignId']=_0x4a87c5[_0x4349('0x20')];this[_0x4349('0x21')]=_0x4a87c5[_0x4349('0x21')]||'';this['originatecalleridname']=_0x4a87c5[_0x4349('0x22')]||'';this['state']=_0x4a87c5[_0x4349('0x23')];this[_0x4349('0x24')]=_0x4a87c5['statedesc'];}module[_0x4349('0x25')]=History;
\ No newline at end of file
index 55fe3c2..9ea949d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c74=['ringtime','getSeconds','holdtime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime'];(function(_0xa63593,_0x313050){var _0x48ae39=function(_0x43a005){while(--_0x43a005){_0xa63593['push'](_0xa63593['shift']());}};_0x48ae39(++_0x313050);}(_0x0c74,0xc1));var _0x40c7=function(_0x41ee64,_0x206c94){_0x41ee64=_0x41ee64-0x0;var _0x468e47=_0x0c74[_0x41ee64];return _0x468e47;};'use strict';var utils=require('../utils');function QueueCallerAbandon(_0x315ae7,_0x42c54c){this['scheduledat']=_0x315ae7[_0x40c7('0x0')];this[_0x40c7('0x1')]=_0x315ae7[_0x40c7('0x1')];this[_0x40c7('0x2')]=_0x315ae7['type']===_0x40c7('0x3')?'queue':_0x315ae7[_0x40c7('0x1')];this[_0x40c7('0x4')]=_0x315ae7[_0x40c7('0x4')];this['countcongestionretry']=_0x315ae7[_0x40c7('0x5')];this[_0x40c7('0x6')]=_0x315ae7['countnoanswerretry'];this[_0x40c7('0x7')]=_0x315ae7[_0x40c7('0x4')]+_0x315ae7[_0x40c7('0x5')]+_0x315ae7[_0x40c7('0x6')]+_0x315ae7[_0x40c7('0x8')]+_0x315ae7[_0x40c7('0x9')]+_0x315ae7[_0x40c7('0xa')]+_0x315ae7[_0x40c7('0xb')]+_0x315ae7[_0x40c7('0xc')];this[_0x40c7('0x8')]=_0x315ae7[_0x40c7('0x8')];this[_0x40c7('0x9')]=_0x315ae7[_0x40c7('0x9')];this['countabandonedretry']=_0x315ae7[_0x40c7('0xa')];this['countmachineretry']=_0x315ae7[_0x40c7('0xb')];this[_0x40c7('0xc')]=_0x315ae7[_0x40c7('0xc')];this[_0x40c7('0xd')]=_0x42c54c['uniqueid'];this[_0x40c7('0xe')]=_0x315ae7[_0x40c7('0xf')];this[_0x40c7('0x10')]=_0x315ae7[_0x40c7('0x11')];this[_0x40c7('0x12')]=_0x315ae7[_0x40c7('0x12')];this['responsetime']=_0x315ae7[_0x40c7('0x13')];this[_0x40c7('0x14')]=_0x315ae7[_0x40c7('0x14')];this['dropreason']=_0x315ae7['dropreason'];this[_0x40c7('0x15')]=this[_0x40c7('0x14')];this[_0x40c7('0x16')]=utils[_0x40c7('0x17')](_0x315ae7['responsetime'],_0x315ae7[_0x40c7('0x12')]);this[_0x40c7('0x18')]=utils[_0x40c7('0x17')](this[_0x40c7('0x14')],_0x315ae7['responsetime']);this['talktime']=0x0;this[_0x40c7('0x19')]=_0x42c54c[_0x40c7('0x19')];this[_0x40c7('0x1a')]=_0x42c54c[_0x40c7('0x1b')];this[_0x40c7('0x1c')]=_0x42c54c['reason'];this[_0x40c7('0x1d')]=_0x315ae7[_0x40c7('0x1d')];this[_0x40c7('0x1e')]=_0x315ae7[_0x40c7('0x1e')];this[_0x40c7('0x1f')]=_0x315ae7[_0x40c7('0x1f')];this[_0x40c7('0x20')]=_0x315ae7[_0x40c7('0x20')];this[_0x40c7('0x21')]=_0x315ae7['ContactId'];this[_0x40c7('0x22')]=_0x315ae7[_0x40c7('0x22')];this[_0x40c7('0x23')]=_0x315ae7[_0x40c7('0x23')];this[_0x40c7('0x24')]=_0x315ae7[_0x40c7('0x24')];this[_0x40c7('0x25')]=_0x315ae7[_0x40c7('0x25')];this[_0x40c7('0x26')]=_0x315ae7[_0x40c7('0x26')]||'';this[_0x40c7('0x27')]=_0x315ae7['originatecalleridname']||'';this[_0x40c7('0x28')]=_0x315ae7[_0x40c7('0x28')];this['state']=_0x315ae7[_0x40c7('0x29')];this['statedesc']=_0x315ae7[_0x40c7('0x2a')];}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x47cb=['type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry','countmachineretry','calleridname','calleridnum','number','starttime','responsetime','droptime','dropreason','endtime','ringtime','getSeconds','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','../utils','scheduledat','campaigntype'];(function(_0x5b8d6f,_0x3a951c){var _0x19cb46=function(_0x21765d){while(--_0x21765d){_0x5b8d6f['push'](_0x5b8d6f['shift']());}};_0x19cb46(++_0x3a951c);}(_0x47cb,0x1bf));var _0xb47c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x47cb[_0x14add3];return _0x4a174f;};'use strict';var utils=require(_0xb47c('0x0'));function QueueCallerAbandon(_0x4ed2cc,_0x3e4e35){this['scheduledat']=_0x4ed2cc[_0xb47c('0x1')];this['type']=_0x4ed2cc['type'];this[_0xb47c('0x2')]=_0x4ed2cc[_0xb47c('0x3')]===_0xb47c('0x4')?'queue':_0x4ed2cc[_0xb47c('0x3')];this[_0xb47c('0x5')]=_0x4ed2cc['countbusyretry'];this[_0xb47c('0x6')]=_0x4ed2cc['countcongestionretry'];this[_0xb47c('0x7')]=_0x4ed2cc['countnoanswerretry'];this[_0xb47c('0x8')]=_0x4ed2cc[_0xb47c('0x5')]+_0x4ed2cc[_0xb47c('0x6')]+_0x4ed2cc['countnoanswerretry']+_0x4ed2cc['countnosuchnumberretry']+_0x4ed2cc[_0xb47c('0x9')]+_0x4ed2cc[_0xb47c('0xa')]+_0x4ed2cc['countmachineretry']+_0x4ed2cc[_0xb47c('0xb')];this[_0xb47c('0xc')]=_0x4ed2cc[_0xb47c('0xc')];this[_0xb47c('0x9')]=_0x4ed2cc[_0xb47c('0x9')];this[_0xb47c('0xa')]=_0x4ed2cc[_0xb47c('0xa')];this['countmachineretry']=_0x4ed2cc[_0xb47c('0xd')];this[_0xb47c('0xb')]=_0x4ed2cc['countagentrejectretry'];this['uniqueid']=_0x3e4e35['uniqueid'];this[_0xb47c('0xe')]=_0x4ed2cc['name'];this[_0xb47c('0xf')]=_0x4ed2cc[_0xb47c('0x10')];this['starttime']=_0x4ed2cc[_0xb47c('0x11')];this[_0xb47c('0x12')]=_0x4ed2cc[_0xb47c('0x12')];this[_0xb47c('0x13')]=_0x4ed2cc[_0xb47c('0x13')];this[_0xb47c('0x14')]=_0x4ed2cc[_0xb47c('0x14')];this[_0xb47c('0x15')]=this[_0xb47c('0x13')];this[_0xb47c('0x16')]=utils[_0xb47c('0x17')](_0x4ed2cc[_0xb47c('0x12')],_0x4ed2cc['starttime']);this[_0xb47c('0x18')]=utils['getSeconds'](this['droptime'],_0x4ed2cc[_0xb47c('0x12')]);this[_0xb47c('0x19')]=0x0;this[_0xb47c('0x1a')]=_0x3e4e35[_0xb47c('0x1a')];this[_0xb47c('0x1b')]=_0x3e4e35[_0xb47c('0x1c')];this[_0xb47c('0x1d')]=_0x3e4e35['reason'];this[_0xb47c('0x1e')]=_0x4ed2cc[_0xb47c('0x1e')];this[_0xb47c('0x1f')]=_0x4ed2cc[_0xb47c('0x1f')];this[_0xb47c('0x20')]=_0x4ed2cc[_0xb47c('0x20')];this['recallme']=_0x4ed2cc[_0xb47c('0x21')];this[_0xb47c('0x22')]=_0x4ed2cc[_0xb47c('0x22')];this[_0xb47c('0x23')]=_0x4ed2cc[_0xb47c('0x23')];this[_0xb47c('0x24')]=_0x4ed2cc['UserId'];this[_0xb47c('0x25')]=_0x4ed2cc[_0xb47c('0x25')];this[_0xb47c('0x26')]=_0x4ed2cc[_0xb47c('0x26')];this[_0xb47c('0x27')]=_0x4ed2cc['originatecalleridnum']||'';this[_0xb47c('0x28')]=_0x4ed2cc[_0xb47c('0x28')]||'';this[_0xb47c('0x29')]=_0x4ed2cc[_0xb47c('0x29')];this[_0xb47c('0x2a')]=_0x4ed2cc[_0xb47c('0x2a')];this[_0xb47c('0x2b')]=_0x4ed2cc[_0xb47c('0x2b')];}module[_0xb47c('0x2c')]=QueueCallerAbandon;
\ No newline at end of file
index 741466c..61104fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['[createHistory]','util','dialer','../../rpc/cmHopper','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperHistory','inspect','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialer','[getContactDialerIvr]','getContactDialerIvr','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]','moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[checkIsBlackListIvr]','verifyAdditionalPhones','[swapAdditionalPhone]','swapAdditionalPhones','avgHandleTime','[avgHandleTime]','createHistory'];(function(_0x12c4d1,_0x2ba6f9){var _0x4cc5c8=function(_0x5b32c5){while(--_0x5b32c5){_0x12c4d1['push'](_0x12c4d1['shift']());}};_0x4cc5c8(++_0x2ba6f9);}(_0xb10b,0x12a));var _0xbb10=function(_0x272202,_0x569e70){_0x272202=_0x272202-0x0;var _0xcad2a7=_0xb10b[_0x272202];return _0xcad2a7;};'use strict';var util=require(_0xbb10('0x0'));var logger=require('../../../../config/logger')(_0xbb10('0x1'));var cmHopper=require(_0xbb10('0x2'));var cmHopperAdditionalPhone=require(_0xbb10('0x3'));var cmHopperBlack=require('../../rpc/cmHopperBlack');var cmHopperHistory=require(_0xbb10('0x4'));function inspectError(_0x9bbed){return util[_0xbb10('0x5')](_0x9bbed,{'showHidden':![],'depth':null});}function getContactDialer(_0x22320e,_0x49baf4,_0x312b72){return cmHopper['getContactDialer'](_0x22320e['id'],_0x49baf4,_0x312b72,_0x22320e[_0xbb10('0x6')])[_0xbb10('0x7')](function(_0x513741){_0x22320e[_0xbb10('0x8')]-=_0x312b72;if(_0x22320e[_0xbb10('0x8')]<0x0){_0x22320e[_0xbb10('0x8')]=0x0;}logger[_0xbb10('0x9')](_0xbb10('0xa'),inspectError(_0x513741));});}exports[_0xbb10('0xb')]=getContactDialer;function getContactDialerIvr(_0x229887,_0xa3adc8){return cmHopper['getContactDialerIvr'](_0x229887['id'],_0xa3adc8,_0x229887['dialOrderByScheduledAt'])[_0xbb10('0x7')](function(_0x118a74){_0x229887[_0xbb10('0x8')]-=_0xa3adc8;if(_0x229887['temp']<0x0){_0x229887[_0xbb10('0x8')]=0x0;}logger['error'](_0xbb10('0xc'),inspectError(_0x118a74));});}exports[_0xbb10('0xd')]=getContactDialerIvr;function countReScheduled(_0x285009){return cmHopper[_0xbb10('0xe')](_0x285009)[_0xbb10('0x7')](function(_0x147230){logger['error'](_0xbb10('0xf'),inspectError(_0x147230));});}exports[_0xbb10('0xe')]=countReScheduled;function rescheduleContact(_0x45b9d6){return cmHopper[_0xbb10('0x10')](_0x45b9d6)[_0xbb10('0x7')](function(_0x2f2ebf){logger[_0xbb10('0x9')](_0xbb10('0x11'),inspectError(_0x2f2ebf));});}exports[_0xbb10('0x10')]=rescheduleContact;function unlockContact(_0x2b184e,_0x4a2bfc,_0x2eca0f){return cmHopper[_0xbb10('0x12')](_0x2b184e,_0x4a2bfc,_0x2eca0f)[_0xbb10('0x7')](function(_0x42db98){logger[_0xbb10('0x9')](_0xbb10('0x13'),inspectError(_0x42db98));});}exports[_0xbb10('0x12')]=unlockContact;function moveContactManagedDialer(_0x30efc6){return cmHopper[_0xbb10('0x14')](_0x30efc6)[_0xbb10('0x7')](function(_0x48b6e9){logger[_0xbb10('0x9')](_0xbb10('0x15'),inspectError(_0x48b6e9));});}exports[_0xbb10('0x14')]=moveContactManagedDialer;function checkIsBlackList(_0x109908){return cmHopperBlack[_0xbb10('0x16')](_0x109908)[_0xbb10('0x7')](function(_0x4deb49){logger[_0xbb10('0x9')](_0xbb10('0x17'),inspectError(_0x4deb49));});}exports['checkIsBlackList']=checkIsBlackList;function checkIsBlackListIvr(_0x4c4b0d){return cmHopperBlack[_0xbb10('0x18')](_0x4c4b0d)[_0xbb10('0x7')](function(_0x2e911d){logger[_0xbb10('0x9')](_0xbb10('0x19'),inspectError(_0x2e911d));});}exports[_0xbb10('0x18')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x407cb4,_0x436104,_0x7f2377){return cmHopperAdditionalPhone[_0xbb10('0x1a')](_0x407cb4,_0x436104,_0x7f2377)[_0xbb10('0x7')](function(_0x26ad93){logger['error']('[verifyAdditionalPhone]',inspectError(_0x26ad93));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0xc93a04,_0x3c5ae7,_0x2c89b9){return cmHopperAdditionalPhone['swapAdditionalPhones'](_0xc93a04,_0x3c5ae7,_0x2c89b9)[_0xbb10('0x7')](function(_0x24d586){logger[_0xbb10('0x9')](_0xbb10('0x1b'),inspectError(_0x24d586));});}exports[_0xbb10('0x1c')]=swapAdditionalPhones;function avgHandleTime(_0x20d946){return cmHopperHistory[_0xbb10('0x1d')](_0x20d946)['catch'](function(_0x3796c7){logger[_0xbb10('0x9')](_0xbb10('0x1e'),inspectError(_0x3796c7));});}exports[_0xbb10('0x1d')]=avgHandleTime;function createHistory(_0x1d30aa){return cmHopperHistory[_0xbb10('0x1f')](_0x1d30aa)['catch'](function(_0x221624){logger['error'](_0xbb10('0x20'),inspectError(_0x221624));});}exports['createHistory']=createHistory;
\ No newline at end of file
+var _0xd8b0=['moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackListIvr]','checkIsBlackListIvr','verifyAdditionalPhones','[verifyAdditionalPhone]','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[avgHandleTime]','[createHistory]','createHistory','util','../../../../config/logger','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','dialOrderByScheduledAt','catch','temp','error','[getContactDialer]','getContactDialerIvr','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','[rescheduleContact]','unlockContact','[unlockContact]'];(function(_0x384d00,_0x26fd69){var _0x4601c1=function(_0x5d8eaa){while(--_0x5d8eaa){_0x384d00['push'](_0x384d00['shift']());}};_0x4601c1(++_0x26fd69);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var util=require(_0x0d8b('0x0'));var logger=require(_0x0d8b('0x1'))('dialer');var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x0d8b('0x2'));var cmHopperHistory=require(_0x0d8b('0x3'));function inspectError(_0x43bca1){return util[_0x0d8b('0x4')](_0x43bca1,{'showHidden':![],'depth':null});}function getContactDialer(_0x8196ed,_0x577834,_0x5e15e6){return cmHopper[_0x0d8b('0x5')](_0x8196ed['id'],_0x577834,_0x5e15e6,_0x8196ed[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x4a4470){_0x8196ed[_0x0d8b('0x8')]-=_0x5e15e6;if(_0x8196ed[_0x0d8b('0x8')]<0x0){_0x8196ed['temp']=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xa'),inspectError(_0x4a4470));});}exports[_0x0d8b('0x5')]=getContactDialer;function getContactDialerIvr(_0x1f4800,_0x28ff7f){return cmHopper[_0x0d8b('0xb')](_0x1f4800['id'],_0x28ff7f,_0x1f4800[_0x0d8b('0x6')])[_0x0d8b('0x7')](function(_0x48fa16){_0x1f4800[_0x0d8b('0x8')]-=_0x28ff7f;if(_0x1f4800['temp']<0x0){_0x1f4800[_0x0d8b('0x8')]=0x0;}logger[_0x0d8b('0x9')](_0x0d8b('0xc'),inspectError(_0x48fa16));});}exports[_0x0d8b('0xb')]=getContactDialerIvr;function countReScheduled(_0x35a07b){return cmHopper[_0x0d8b('0xd')](_0x35a07b)[_0x0d8b('0x7')](function(_0x31a8cc){logger[_0x0d8b('0x9')](_0x0d8b('0xe'),inspectError(_0x31a8cc));});}exports[_0x0d8b('0xd')]=countReScheduled;function rescheduleContact(_0xe65334){return cmHopper[_0x0d8b('0xf')](_0xe65334)[_0x0d8b('0x7')](function(_0x4f6f21){logger[_0x0d8b('0x9')](_0x0d8b('0x10'),inspectError(_0x4f6f21));});}exports[_0x0d8b('0xf')]=rescheduleContact;function unlockContact(_0xe2e167,_0x2cb03c,_0x5cd485){return cmHopper[_0x0d8b('0x11')](_0xe2e167,_0x2cb03c,_0x5cd485)[_0x0d8b('0x7')](function(_0x2fd0fc){logger[_0x0d8b('0x9')](_0x0d8b('0x12'),inspectError(_0x2fd0fc));});}exports[_0x0d8b('0x11')]=unlockContact;function moveContactManagedDialer(_0x264b39){return cmHopper[_0x0d8b('0x13')](_0x264b39)['catch'](function(_0x27512e){logger[_0x0d8b('0x9')](_0x0d8b('0x14'),inspectError(_0x27512e));});}exports[_0x0d8b('0x13')]=moveContactManagedDialer;function checkIsBlackList(_0x24e8ed){return cmHopperBlack[_0x0d8b('0x15')](_0x24e8ed)[_0x0d8b('0x7')](function(_0x352c17){logger['error']('[checkIsBlackList]',inspectError(_0x352c17));});}exports[_0x0d8b('0x15')]=checkIsBlackList;function checkIsBlackListIvr(_0x54a9a7){return cmHopperBlack['checkIsBlackListIvr'](_0x54a9a7)['catch'](function(_0x238728){logger[_0x0d8b('0x9')](_0x0d8b('0x16'),inspectError(_0x238728));});}exports[_0x0d8b('0x17')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0x221071,_0x2c64e2,_0x30980c){return cmHopperAdditionalPhone[_0x0d8b('0x18')](_0x221071,_0x2c64e2,_0x30980c)[_0x0d8b('0x7')](function(_0x5e5bc3){logger[_0x0d8b('0x9')](_0x0d8b('0x19'),inspectError(_0x5e5bc3));});}exports['verifyAdditionalPhones']=verifyAdditionalPhones;function swapAdditionalPhones(_0xe1ef20,_0x4a0ae4,_0x3dd149){return cmHopperAdditionalPhone[_0x0d8b('0x1a')](_0xe1ef20,_0x4a0ae4,_0x3dd149)[_0x0d8b('0x7')](function(_0x4fe6f9){logger['error'](_0x0d8b('0x1b'),inspectError(_0x4fe6f9));});}exports[_0x0d8b('0x1a')]=swapAdditionalPhones;function avgHandleTime(_0x4c05ee){return cmHopperHistory[_0x0d8b('0x1c')](_0x4c05ee)['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x1d'),inspectError(_0x1b2b59));});}exports['avgHandleTime']=avgHandleTime;function createHistory(_0x2ab00d){return cmHopperHistory['createHistory'](_0x2ab00d)[_0x0d8b('0x7')](function(_0x544735){logger[_0x0d8b('0x9')](_0x0d8b('0x1e'),inspectError(_0x544735));});}exports[_0x0d8b('0x1f')]=createHistory;
\ No newline at end of file
index ed2daf1..2b1ddbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8f0=['seconds','getSeconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','inUse','originated','Trunk','name','hasQueueCampaignDataChanged','dialTimezone','isNil','dialGlobalInterval','Interval','isEmpty','Intervals','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','unmonitored','includes','TrunkBackup','status','waiting','DISACTIVED','UNREACHABLE_TRUNK','INACTIVE','getQueueCampaignActiveStatusMessage','isUndefined','string','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','getCallerId','\x5cw{0,','pow','replace','toString','error','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','checkContactEmpty','checkContactLowerLimitOriginate','lodash','../../../../config/logger','dialer','timezones','ACTIVE','BLACKLIST','RESCHEDULED_CONTACTS','DEACTIVATED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','TIMEZONE_UNKNOW','CAMPAIGN_STATUS','dialMethod','isPreviewCampaign','type','ivr','isIVRCampaign','isOutboundQueue','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds'];(function(_0x40570d,_0x80f238){var _0x374acf=function(_0x3ec750){while(--_0x3ec750){_0x40570d['push'](_0x40570d['shift']());}};_0x374acf(++_0x80f238);}(_0xc8f0,0x7d));var _0x0c8f=function(_0x16a7c8,_0x42c36f){_0x16a7c8=_0x16a7c8-0x0;var _0x2bff26=_0xc8f0[_0x16a7c8];return _0x2bff26;};'use strict';var _=require(_0x0c8f('0x0'));var moment=require('moment');var util=require('util');var logger=require(_0x0c8f('0x1'))(_0x0c8f('0x2'));var timezones=require('../../../../config/environment/shared')[_0x0c8f('0x3')];var CAMPAIGN_STATUS={'ACTIVE':_0x0c8f('0x4'),'BLACKLIST':_0x0c8f('0x5'),'CONTACTS_RESCHEDULED':_0x0c8f('0x6'),'DEACTIVATED':_0x0c8f('0x7'),'DISACTIVED':'IS_DISACTIVED','EMPTY_INTERVAL':_0x0c8f('0x8'),'INACTIVE':_0x0c8f('0x9'),'NO_AGENTS_LOGGED':_0x0c8f('0xa'),'NO_AVAILABLE_CONTACTS':_0x0c8f('0xb'),'NULL_INTERVAL':_0x0c8f('0xc'),'OVERTIME_INTERVAL':_0x0c8f('0xd'),'OVERTIME_GLOBAL_INTERVAL':_0x0c8f('0xe'),'QUEUE_RECALL':_0x0c8f('0xf'),'RECALL_TIMEOUT':_0x0c8f('0x10'),'RUNNING':_0x0c8f('0x11'),'UNKNOWN_TIMEZONE':_0x0c8f('0x12'),'UNREACHABLE_TRUNK':'TRUNK_IS_NOT_REACHABLE'};exports[_0x0c8f('0x13')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x33f0be){return _0x33f0be[_0x0c8f('0x14')]==='preview';}exports[_0x0c8f('0x15')]=isPreviewCampaign;function isIVRCampaign(_0x15962e){return _0x15962e[_0x0c8f('0x16')]===_0x0c8f('0x17');}exports[_0x0c8f('0x18')]=isIVRCampaign;function isOutboundQueue(_0x70ce45){return _0x70ce45[_0x0c8f('0x16')]==='outbound';}exports[_0x0c8f('0x19')]=isOutboundQueue;function isQueueCampaignActive(_0x16f478){return _0x16f478[_0x0c8f('0x1a')];}exports[_0x0c8f('0x1b')]=isQueueCampaignActive;function isIVRCampaignActive(_0x2df0b9){return _0x2df0b9[_0x0c8f('0x1c')];}exports[_0x0c8f('0x1d')]=isIVRCampaignActive;function getSeconds(_0x213c45,_0x48ed3c){var _0x50f469=moment(_0x213c45)[_0x0c8f('0x1e')](0x0);var _0x3915c5=moment(_0x48ed3c)['milliseconds'](0x0);return _0x50f469['diff'](_0x3915c5,_0x0c8f('0x1f'));}exports[_0x0c8f('0x20')]=getSeconds;function hasQueueCampaignDataChanged(_0x5ee5cd,_0x148429){var _0x384a21=![];var _0x10f473=_0x5ee5cd['dialMethod']!==_0x148429[_0x0c8f('0x14')]||_0x5ee5cd['dialActive']!==_0x148429[_0x0c8f('0x1a')]||_0x5ee5cd['message']!==_0x148429[_0x0c8f('0x21')];var _0x485ef7=_0x5ee5cd[_0x0c8f('0x22')]!==_0x148429[_0x0c8f('0x22')]||_0x5ee5cd[_0x0c8f('0x23')]!==_0x148429[_0x0c8f('0x23')]||_0x5ee5cd[_0x0c8f('0x24')]!==_0x148429[_0x0c8f('0x24')]||_0x5ee5cd['paused']!==_0x148429[_0x0c8f('0x25')]||_0x5ee5cd[_0x0c8f('0x26')]!==_0x148429['talking']||_0x5ee5cd[_0x0c8f('0x27')]!==_0x148429[_0x0c8f('0x27')]||_0x5ee5cd['waiting']!==_0x148429['waiting']||_0x5ee5cd[_0x0c8f('0x28')]!==_0x148429[_0x0c8f('0x28')]||_0x5ee5cd[_0x0c8f('0x29')]!==_0x148429[_0x0c8f('0x29')];if(_0x5ee5cd[_0x0c8f('0x2a')]&&_0x148429[_0x0c8f('0x2a')]){_0x384a21=_0x5ee5cd[_0x0c8f('0x2a')][_0x0c8f('0x2b')]!==_0x148429[_0x0c8f('0x2a')][_0x0c8f('0x2b')]||_0x5ee5cd[_0x0c8f('0x2a')][_0x0c8f('0x1c')]!==_0x148429['Trunk']['active'];}return _0x10f473||_0x485ef7||_0x384a21;}exports[_0x0c8f('0x2c')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x5871d8){var _0xcec41c=null;var _0x101e08=_0x5871d8[_0x0c8f('0x2d')];if(_[_0x0c8f('0x2e')](_0x5871d8[_0x0c8f('0x2f')])||_[_0x0c8f('0x2e')](_0x5871d8[_0x0c8f('0x30')])||_['isNil'](_0x5871d8[_0x0c8f('0x30')]['Intervals'])){_0xcec41c=CAMPAIGN_STATUS['NULL_INTERVAL'];}else if(_[_0x0c8f('0x31')](_0x5871d8[_0x0c8f('0x2f')])||_['isEmpty'](_0x5871d8['Interval'][_0x0c8f('0x32')])){_0xcec41c=CAMPAIGN_STATUS[_0x0c8f('0x33')];}else if(_0x101e08&&!timezones[_0x101e08]){_0xcec41c=CAMPAIGN_STATUS[_0x0c8f('0x34')];}return _0xcec41c;}function checkAnyValidTrunk(_0xa4210b,_0x2f56c9){var _0x2dc8e2=null;var _0x2b3147=_0x0c8f('0x35');var _0x18afbf=['reachable',_0x0c8f('0x36')];var _0x42d0c5=!![];if(_0xa4210b[_0x0c8f('0x2a')]&&_0xa4210b[_0x0c8f('0x2a')][_0x0c8f('0x1c')]){_0x2b3147+=_0xa4210b[_0x0c8f('0x2a')][_0x0c8f('0x2b')];_0x2dc8e2=_0x2f56c9[_0x2b3147];_0x42d0c5=_0x18afbf[_0x0c8f('0x37')](_0x2dc8e2['status']);}else if(_0xa4210b[_0x0c8f('0x38')]&&_0xa4210b[_0x0c8f('0x38')][_0x0c8f('0x1c')]){_0x2b3147+=_0xa4210b[_0x0c8f('0x38')][_0x0c8f('0x2b')];_0x2dc8e2=_0x2f56c9[_0x2b3147];_0x42d0c5=_0x18afbf[_0x0c8f('0x37')](_0x2dc8e2[_0x0c8f('0x39')]);}return _0x42d0c5;}function getQueueCampaignStatusMessage(_0x47217f,_0x4c50ee){var _0x2aa61f=CAMPAIGN_STATUS[_0x0c8f('0x4')];var _0x208a87=isPreviewCampaign(_0x47217f);if(!isQueueCampaignActive(_0x47217f)){if(_0x208a87){_0x2aa61f=CAMPAIGN_STATUS['INACTIVE'];}else{if(_0x47217f['originated']===0x0&&_0x47217f[_0x0c8f('0x26')]===0x0&&_0x47217f[_0x0c8f('0x3a')]===0x0&&(_0x47217f[_0x0c8f('0x27')]||0x0)===0x0){_0x2aa61f=CAMPAIGN_STATUS['INACTIVE'];}else{_0x2aa61f=CAMPAIGN_STATUS[_0x0c8f('0x3b')];}}}else if(_0x47217f[_0x0c8f('0x23')]===0x0){_0x2aa61f=CAMPAIGN_STATUS['NO_AGENTS_LOGGED'];}else if(!checkAnyValidTrunk(_0x47217f,_0x4c50ee)){_0x2aa61f=CAMPAIGN_STATUS[_0x0c8f('0x3c')];}else if(!isPreviewCampaign(_0x47217f)){var _0x3af730=checkAnyValidQueueCampaignInterval(_0x47217f);if(_0x3af730){_0x2aa61f=_0x3af730;}}return _0x2aa61f;}exports['getQueueCampaignStatusMessage']=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x480dcb){var _0x290f1f=CAMPAIGN_STATUS[_0x0c8f('0x3b')];if(_0x480dcb[_0x0c8f('0x29')]===0x0&&_0x480dcb[_0x0c8f('0x26')]===0x0&&_0x480dcb['waiting']===0x0&&(_0x480dcb[_0x0c8f('0x27')]||0x0)===0x0){_0x290f1f=CAMPAIGN_STATUS[_0x0c8f('0x3d')];}return _0x290f1f;}exports[_0x0c8f('0x3e')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x3a49ff){var _0x5e6fcf=_0x3a49ff['match'](/"(.*?)"/);return _0x5e6fcf?_0x5e6fcf[0x1]:_0x3a49ff;}exports['extractCalleridName']=extractCalleridName;function getCallerId(_0x549a7e,_0x40c485,_0x38dc3c){if(!_[_0x0c8f('0x3f')](_0x38dc3c)&&typeof _0x38dc3c===_0x0c8f('0x40')&&!_['isEmpty'](_0x38dc3c)){if(!_[_0x0c8f('0x3f')](_0x40c485)&&typeof _0x40c485===_0x0c8f('0x40')&&!_[_0x0c8f('0x31')](_0x40c485)){return util['format'](_0x0c8f('0x41'),_0x40c485,_0x38dc3c);}return util[_0x0c8f('0x42')](_0x0c8f('0x41'),_0x38dc3c,_0x38dc3c);}if(!_[_0x0c8f('0x3f')](_0x549a7e)&&typeof _0x549a7e===_0x0c8f('0x40')&&!_['isEmpty'](_0x549a7e)){return _0x549a7e;}return _0x0c8f('0x43');}exports[_0x0c8f('0x44')]=getCallerId;function getCallerIdRandom(_0x3e7afc,_0x129651){var _0x2f22f2;var _0x2b947f;var _0x6d916d;if(_0x129651<=0x0){_0x129651=0x1;}_0x2f22f2=new RegExp(_0x0c8f('0x45')+_0x129651+'}$');_0x2b947f=Math[_0x0c8f('0x46')](0xa,_0x129651-0x1);_0x6d916d=Math[_0x0c8f('0x46')](0xa,_0x129651)-0x1;return util[_0x0c8f('0x42')]('%s',_[_0x0c8f('0x47')](_0x3e7afc,_0x2f22f2,_['random'](_0x2b947f,_0x6d916d)[_0x0c8f('0x48')]()));}exports['getCallerIdRandom']=getCallerIdRandom;function decrementOriginate(_0x42f78b){if(_0x42f78b[_0x0c8f('0x29')]&&_0x42f78b['originated']>0x0){_0x42f78b[_0x0c8f('0x29')]-=0x1;}else{logger[_0x0c8f('0x49')](_0x0c8f('0x4a'));}}exports[_0x0c8f('0x4b')]=decrementOriginate;function checkContactEmpty(_0x24c749){return _0x24c749&&_0x24c749['length']>0x0;}exports[_0x0c8f('0x4c')]=checkContactEmpty;function erlangb(_0x232d96,_0x150e3a){if(_0x150e3a===0x0){return 0x0;}var _0x2255bd=0x1;for(var _0x9294bf=0x1;_0x9294bf<=_0x150e3a;_0x9294bf+=0x1){_0x2255bd=0x1+_0x2255bd*_0x9294bf/_0x232d96;}return 0x1/_0x2255bd;}exports['erlangb']=erlangb;function checkContactLowerLimitOriginate(_0x223c13,_0x231700,_0x11f6b5){if(_0x231700>_0x11f6b5){for(var _0xf6cfa9=0x0;_0xf6cfa9<_0x231700-_0x11f6b5;_0xf6cfa9+=0x1){decrementOriginate(_0x223c13);}}}exports[_0x0c8f('0x4d')]=checkContactLowerLimitOriginate;
\ No newline at end of file
+var _0x512d=['toString','error','decrementOriginate','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','lodash','moment','util','../../../../config/logger','dialer','../../../../config/environment/shared','ACTIVE','BLACKLIST','RESCHEDULED_CONTACTS','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','CAMPAIGN_STATUS','dialMethod','type','ivr','isIVRCampaign','isOutboundQueue','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','getSeconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','Trunk','name','hasQueueCampaignDataChanged','dialTimezone','isNil','dialGlobalInterval','Interval','NULL_INTERVAL','isEmpty','Intervals','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','status','TrunkBackup','includes','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','UNREACHABLE_TRUNK','getQueueCampaignStatusMessage','getQueueCampaignActiveStatusMessage','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','getCallerId','\x5cw{0,','pow','replace','random'];(function(_0x5a4945,_0x151743){var _0x249feb=function(_0x1bd0f8){while(--_0x1bd0f8){_0x5a4945['push'](_0x5a4945['shift']());}};_0x249feb(++_0x151743);}(_0x512d,0x196));var _0xd512=function(_0x421c12,_0x3935a0){_0x421c12=_0x421c12-0x0;var _0xdf971c=_0x512d[_0x421c12];return _0xdf971c;};'use strict';var _=require(_0xd512('0x0'));var moment=require(_0xd512('0x1'));var util=require(_0xd512('0x2'));var logger=require(_0xd512('0x3'))(_0xd512('0x4'));var timezones=require(_0xd512('0x5'))['timezones'];var CAMPAIGN_STATUS={'ACTIVE':_0xd512('0x6'),'BLACKLIST':_0xd512('0x7'),'CONTACTS_RESCHEDULED':_0xd512('0x8'),'DEACTIVATED':'DEACTIVATED','DISACTIVED':'IS_DISACTIVED','EMPTY_INTERVAL':_0xd512('0x9'),'INACTIVE':_0xd512('0xa'),'NO_AGENTS_LOGGED':_0xd512('0xb'),'NO_AVAILABLE_CONTACTS':_0xd512('0xc'),'NULL_INTERVAL':'INTERVAL_IS_NULL','OVERTIME_INTERVAL':'INTERVAL_IS_OVERTIME','OVERTIME_GLOBAL_INTERVAL':_0xd512('0xd'),'QUEUE_RECALL':_0xd512('0xe'),'RECALL_TIMEOUT':_0xd512('0xf'),'RUNNING':_0xd512('0x10'),'UNKNOWN_TIMEZONE':_0xd512('0x11'),'UNREACHABLE_TRUNK':_0xd512('0x12')};exports[_0xd512('0x13')]=CAMPAIGN_STATUS;function isPreviewCampaign(_0x46d0eb){return _0x46d0eb[_0xd512('0x14')]==='preview';}exports['isPreviewCampaign']=isPreviewCampaign;function isIVRCampaign(_0xbee6fd){return _0xbee6fd[_0xd512('0x15')]===_0xd512('0x16');}exports[_0xd512('0x17')]=isIVRCampaign;function isOutboundQueue(_0x59646a){return _0x59646a[_0xd512('0x15')]==='outbound';}exports[_0xd512('0x18')]=isOutboundQueue;function isQueueCampaignActive(_0x513f61){return _0x513f61[_0xd512('0x19')];}exports[_0xd512('0x1a')]=isQueueCampaignActive;function isIVRCampaignActive(_0x4ee923){return _0x4ee923[_0xd512('0x1b')];}exports[_0xd512('0x1c')]=isIVRCampaignActive;function getSeconds(_0x2dd066,_0x5a4129){var _0x1c3855=moment(_0x2dd066)[_0xd512('0x1d')](0x0);var _0x340203=moment(_0x5a4129)['milliseconds'](0x0);return _0x1c3855[_0xd512('0x1e')](_0x340203,'seconds');}exports[_0xd512('0x1f')]=getSeconds;function hasQueueCampaignDataChanged(_0x3cb82e,_0x2fea62){var _0x38848c=![];var _0x1a7834=_0x3cb82e[_0xd512('0x14')]!==_0x2fea62[_0xd512('0x14')]||_0x3cb82e['dialActive']!==_0x2fea62[_0xd512('0x19')]||_0x3cb82e[_0xd512('0x20')]!==_0x2fea62[_0xd512('0x20')];var _0x143beb=_0x3cb82e[_0xd512('0x21')]!==_0x2fea62[_0xd512('0x21')]||_0x3cb82e[_0xd512('0x22')]!==_0x2fea62['loggedIn']||_0x3cb82e[_0xd512('0x23')]!==_0x2fea62['loggedInDb']||_0x3cb82e[_0xd512('0x24')]!==_0x2fea62[_0xd512('0x24')]||_0x3cb82e[_0xd512('0x25')]!==_0x2fea62[_0xd512('0x25')]||_0x3cb82e[_0xd512('0x26')]!==_0x2fea62[_0xd512('0x26')]||_0x3cb82e[_0xd512('0x27')]!==_0x2fea62[_0xd512('0x27')]||_0x3cb82e[_0xd512('0x28')]!==_0x2fea62[_0xd512('0x28')]||_0x3cb82e[_0xd512('0x29')]!==_0x2fea62[_0xd512('0x29')];if(_0x3cb82e[_0xd512('0x2a')]&&_0x2fea62[_0xd512('0x2a')]){_0x38848c=_0x3cb82e[_0xd512('0x2a')][_0xd512('0x2b')]!==_0x2fea62[_0xd512('0x2a')]['name']||_0x3cb82e[_0xd512('0x2a')][_0xd512('0x1b')]!==_0x2fea62[_0xd512('0x2a')]['active'];}return _0x1a7834||_0x143beb||_0x38848c;}exports[_0xd512('0x2c')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x22d2c8){var _0x4d34cc=null;var _0x5c3d0f=_0x22d2c8[_0xd512('0x2d')];if(_[_0xd512('0x2e')](_0x22d2c8[_0xd512('0x2f')])||_['isNil'](_0x22d2c8['Interval'])||_[_0xd512('0x2e')](_0x22d2c8[_0xd512('0x30')]['Intervals'])){_0x4d34cc=CAMPAIGN_STATUS[_0xd512('0x31')];}else if(_[_0xd512('0x32')](_0x22d2c8[_0xd512('0x2f')])||_[_0xd512('0x32')](_0x22d2c8[_0xd512('0x30')][_0xd512('0x33')])){_0x4d34cc=CAMPAIGN_STATUS[_0xd512('0x34')];}else if(_0x5c3d0f&&!timezones[_0x5c3d0f]){_0x4d34cc=CAMPAIGN_STATUS[_0xd512('0x35')];}return _0x4d34cc;}function checkAnyValidTrunk(_0x1313d2,_0x7800de){var _0x2c8bb8=null;var _0x566d9b=_0xd512('0x36');var _0x2fd532=['reachable','unmonitored'];var _0x2362db=!![];if(_0x1313d2['Trunk']&&_0x1313d2['Trunk'][_0xd512('0x1b')]){_0x566d9b+=_0x1313d2[_0xd512('0x2a')]['name'];_0x2c8bb8=_0x7800de[_0x566d9b];_0x2362db=_0x2fd532['includes'](_0x2c8bb8[_0xd512('0x37')]);}else if(_0x1313d2[_0xd512('0x38')]&&_0x1313d2[_0xd512('0x38')][_0xd512('0x1b')]){_0x566d9b+=_0x1313d2[_0xd512('0x38')][_0xd512('0x2b')];_0x2c8bb8=_0x7800de[_0x566d9b];_0x2362db=_0x2fd532[_0xd512('0x39')](_0x2c8bb8['status']);}return _0x2362db;}function getQueueCampaignStatusMessage(_0xa19e4a,_0x573f0a){var _0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x6')];var _0x3f7b1f=isPreviewCampaign(_0xa19e4a);if(!isQueueCampaignActive(_0xa19e4a)){if(_0x3f7b1f){_0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x3a')];}else{if(_0xa19e4a[_0xd512('0x29')]===0x0&&_0xa19e4a[_0xd512('0x25')]===0x0&&_0xa19e4a[_0xd512('0x27')]===0x0&&(_0xa19e4a[_0xd512('0x26')]||0x0)===0x0){_0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x3a')];}else{_0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x3b')];}}}else if(_0xa19e4a['loggedIn']===0x0){_0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x3c')];}else if(!checkAnyValidTrunk(_0xa19e4a,_0x573f0a)){_0x2c4b72=CAMPAIGN_STATUS[_0xd512('0x3d')];}else if(!isPreviewCampaign(_0xa19e4a)){var _0x5a7a2f=checkAnyValidQueueCampaignInterval(_0xa19e4a);if(_0x5a7a2f){_0x2c4b72=_0x5a7a2f;}}return _0x2c4b72;}exports[_0xd512('0x3e')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x2e342c){var _0x2e674f=CAMPAIGN_STATUS['DISACTIVED'];if(_0x2e342c[_0xd512('0x29')]===0x0&&_0x2e342c[_0xd512('0x25')]===0x0&&_0x2e342c['waiting']===0x0&&(_0x2e342c[_0xd512('0x26')]||0x0)===0x0){_0x2e674f=CAMPAIGN_STATUS[_0xd512('0x3a')];}return _0x2e674f;}exports[_0xd512('0x3f')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x2ba320){var _0x5c096c=_0x2ba320['match'](/"(.*?)"/);return _0x5c096c?_0x5c096c[0x1]:_0x2ba320;}exports['extractCalleridName']=extractCalleridName;function getCallerId(_0x53d8bd,_0x53c0f9,_0x1c3fd8){if(!_[_0xd512('0x40')](_0x1c3fd8)&&typeof _0x1c3fd8===_0xd512('0x41')&&!_[_0xd512('0x32')](_0x1c3fd8)){if(!_[_0xd512('0x40')](_0x53c0f9)&&typeof _0x53c0f9===_0xd512('0x41')&&!_[_0xd512('0x32')](_0x53c0f9)){return util[_0xd512('0x42')](_0xd512('0x43'),_0x53c0f9,_0x1c3fd8);}return util[_0xd512('0x42')]('\x22%s\x22\x20<%s>',_0x1c3fd8,_0x1c3fd8);}if(!_[_0xd512('0x40')](_0x53d8bd)&&typeof _0x53d8bd==='string'&&!_['isEmpty'](_0x53d8bd)){return _0x53d8bd;}return _0xd512('0x44');}exports[_0xd512('0x45')]=getCallerId;function getCallerIdRandom(_0x959ea5,_0x63789d){var _0x4e1cc7;var _0x37aa2a;var _0x3d4def;if(_0x63789d<=0x0){_0x63789d=0x1;}_0x4e1cc7=new RegExp(_0xd512('0x46')+_0x63789d+'}$');_0x37aa2a=Math[_0xd512('0x47')](0xa,_0x63789d-0x1);_0x3d4def=Math[_0xd512('0x47')](0xa,_0x63789d)-0x1;return util[_0xd512('0x42')]('%s',_[_0xd512('0x48')](_0x959ea5,_0x4e1cc7,_[_0xd512('0x49')](_0x37aa2a,_0x3d4def)[_0xd512('0x4a')]()));}exports['getCallerIdRandom']=getCallerIdRandom;function decrementOriginate(_0x36952b){if(_0x36952b[_0xd512('0x29')]&&_0x36952b[_0xd512('0x29')]>0x0){_0x36952b['originated']-=0x1;}else{logger[_0xd512('0x4b')]('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0xd512('0x4c')]=decrementOriginate;function checkContactEmpty(_0x529454){return _0x529454&&_0x529454['length']>0x0;}exports[_0xd512('0x4d')]=checkContactEmpty;function erlangb(_0x145fb6,_0x42db0f){if(_0x42db0f===0x0){return 0x0;}var _0xa45383=0x1;for(var _0x38b9a8=0x1;_0x38b9a8<=_0x42db0f;_0x38b9a8+=0x1){_0xa45383=0x1+_0xa45383*_0x38b9a8/_0x145fb6;}return 0x1/_0xa45383;}exports[_0xd512('0x4e')]=erlangb;function checkContactLowerLimitOriginate(_0x384245,_0x33c686,_0x62bdb0){if(_0x33c686>_0x62bdb0){for(var _0x160734=0x0;_0x160734<_0x33c686-_0x62bdb0;_0x160734+=0x1){decrementOriginate(_0x384245);}}}exports[_0xd512('0x4f')]=checkContactLowerLimitOriginate;
\ No newline at end of file
index d77d9db..d030402 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(_0x479b17,_0x66b3e3){var _0x7fff03=function(_0x54d752){while(--_0x54d752){_0x479b17['push'](_0x479b17['shift']());}};_0x7fff03(++_0x66b3e3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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(_0x32bf6f,_0x51a0dc){var _0x4b5648=function(_0x2ffa89){while(--_0x2ffa89){_0x32bf6f['push'](_0x32bf6f['shift']());}};_0x4b5648(++_0x51a0dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 992979a..24df664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e5=['/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','then','notify','fax','.pdf','catch','error','stringify','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','dir','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','lodash','bluebird','uuid','moment','path','./util/gs','../../../config/logger','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','syncVarSet','syncNewState','newexten','syncNewExten','faxstatus','receivefax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','channel','uniqueid','name','info','\x20syncNewchannel\x20','actions','variable','channelstate','channelstatedesc','value','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum'];(function(_0x40300c,_0x3a63ba){var _0x5be991=function(_0x2d7a66){while(--_0x2d7a66){_0x40300c['push'](_0x40300c['shift']());}};_0x5be991(++_0x3a63ba);}(_0x93e5,0xb7));var _0x593e=function(_0x1cabae,_0x4c3b07){_0x1cabae=_0x1cabae-0x0;var _0x5b495b=_0x93e5[_0x1cabae];return _0x5b495b;};'use strict';var util=require(_0x593e('0x0'));var _=require(_0x593e('0x1'));var BPromise=require(_0x593e('0x2'));var uuid=require(_0x593e('0x3'));var moment=require(_0x593e('0x4'));var path=require(_0x593e('0x5'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x593e('0x6'));var logger=require(_0x593e('0x7'))('fax');var ami=require(_0x593e('0x8'));var rpcDb=require(_0x593e('0x9'));var Channel=require('./channel');var ut=require(_0x593e('0xa'));var Action=require(_0x593e('0xb'));var faxAccount=require(_0x593e('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x593e('0xd'));function Fax(_0x3944b2){this[_0x593e('0xe')]={};this['faxAccounts']=_0x3944b2[_0x593e('0xf')];this['trunks']=_0x3944b2[_0x593e('0x10')];this['actions']={};ami['on'](_0x593e('0x11'),this[_0x593e('0x12')][_0x593e('0x13')](this));ami['on']('varset',this[_0x593e('0x14')][_0x593e('0x13')](this));ami['on']('newstate',this[_0x593e('0x15')][_0x593e('0x13')](this));ami['on'](_0x593e('0x16'),this[_0x593e('0x17')][_0x593e('0x13')](this));ami['on'](_0x593e('0x18'),this['syncFaxStatus'][_0x593e('0x13')](this));ami['on'](_0x593e('0x19'),this['syncReceiveFax'][_0x593e('0x13')](this));ami['on'](_0x593e('0x1a'),this['syncHangup']['bind'](this));ami['on'](_0x593e('0x1b'),this[_0x593e('0x1c')][_0x593e('0x13')](this));}Fax[_0x593e('0x1d')][_0x593e('0x12')]=function(_0x15ebc2){if(_0x15ebc2[_0x593e('0x1e')]===_0x593e('0x1f')){for(var _0x493182 in this[_0x593e('0xf')]){if(this[_0x593e('0xf')][_0x593e('0x20')](_0x493182)){if(_0x15ebc2[_0x593e('0x21')]===this[_0x593e('0xf')][_0x493182][_0x593e('0x22')]){this[_0x593e('0xe')][_0x15ebc2['uniqueid']]={};this['channels'][_0x15ebc2['uniqueid']][_0x593e('0x23')]=_0x15ebc2[_0x593e('0x23')];this[_0x593e('0xe')][_0x15ebc2[_0x593e('0x24')]]['id']=this[_0x593e('0xf')][_0x493182]['id'];this[_0x593e('0xe')][_0x15ebc2[_0x593e('0x24')]][_0x593e('0x25')]=this[_0x593e('0xf')][_0x493182][_0x593e('0x25')];logger[_0x593e('0x26')](_0x15ebc2['uniqueid'],_0x593e('0x27'));}}}}if(this[_0x593e('0x28')][_0x15ebc2[_0x593e('0x24')]]){this[_0x593e('0xe')][_0x15ebc2[_0x593e('0x24')]]={};this['channels'][_0x15ebc2['uniqueid']][_0x593e('0x23')]=_0x15ebc2[_0x593e('0x23')];logger[_0x593e('0x26')](_0x15ebc2[_0x593e('0x24')],_0x593e('0x27'));}};Fax[_0x593e('0x1d')]['syncVarSet']=function(_0x5c5600){if(this['channels'][_0x5c5600[_0x593e('0x24')]]){for(var _0x3a594c in _0x5c5600[_0x593e('0x29')]){if(_0x5c5600['variable']['hasOwnProperty'](_0x3a594c)){this[_0x593e('0xe')][_0x5c5600['uniqueid']][_0x3a594c]=_0x5c5600['value'];}}}};Fax['prototype'][_0x593e('0x15')]=function(_0x3116b3){if(this['channels'][_0x3116b3['uniqueid']]){this[_0x593e('0xe')][_0x3116b3['uniqueid']][_0x593e('0x2a')]=_0x3116b3[_0x593e('0x2a')];this['channels'][_0x3116b3[_0x593e('0x24')]][_0x593e('0x2b')]=_0x3116b3[_0x593e('0x2b')];}};Fax[_0x593e('0x1d')][_0x593e('0x17')]=function(_0xea0c5){if(this[_0x593e('0xe')][_0xea0c5[_0x593e('0x24')]]){for(var _0x251a22 in _0xea0c5[_0x593e('0x29')]){if(_0xea0c5[_0x593e('0x29')][_0x593e('0x20')](_0x251a22)){this['channels'][_0xea0c5[_0x593e('0x24')]][_0x251a22]=_0xea0c5[_0x593e('0x2c')];}}}};Fax[_0x593e('0x1d')][_0x593e('0x2d')]=function(_0x35b561){if(this[_0x593e('0xe')][_0x35b561['uniqueid']]){this['channels'][_0x35b561[_0x593e('0x24')]][_0x593e('0x2e')]=_0x35b561[_0x593e('0x2e')];this['channels'][_0x35b561['uniqueid']]['status']=_0x35b561[_0x593e('0x2f')];this[_0x593e('0xe')][_0x35b561[_0x593e('0x24')]][_0x593e('0x22')]=_0x35b561[_0x593e('0x22')];this[_0x593e('0xe')][_0x35b561[_0x593e('0x24')]][_0x593e('0x30')]=_0x35b561[_0x593e('0x30')];logger[_0x593e('0x26')](_0x35b561[_0x593e('0x24')],_0x593e('0x31'));}};Fax[_0x593e('0x1d')]['syncReceiveFax']=function(_0x61e354){var _0x10dbf1=this;if(this[_0x593e('0xe')][_0x61e354[_0x593e('0x24')]]){var _0x2ec221=this[_0x593e('0xe')][_0x61e354[_0x593e('0x24')]]['id'];this['channels'][_0x61e354[_0x593e('0x24')]][_0x593e('0x32')]=_0x61e354[_0x593e('0x32')];this[_0x593e('0xe')][_0x61e354['uniqueid']][_0x593e('0x33')]=_0x61e354[_0x593e('0x33')];this[_0x593e('0xe')][_0x61e354[_0x593e('0x24')]][_0x593e('0x22')]=_0x61e354['localstationid'];this[_0x593e('0xe')][_0x61e354[_0x593e('0x24')]][_0x593e('0x34')]=_0x61e354['resolution'];this[_0x593e('0xe')][_0x61e354['uniqueid']]['transferrate']=_0x61e354[_0x593e('0x35')];this[_0x593e('0xe')][_0x61e354[_0x593e('0x24')]][_0x593e('0x30')]=_0x61e354['filename'];this['channels'][_0x61e354[_0x593e('0x24')]][_0x593e('0x36')]=_0x61e354[_0x593e('0x36')];if(this['channels'][_0x61e354['uniqueid']][_0x593e('0x33')]>0x0){tiff2pdf(_0x61e354[_0x593e('0x30')],_0x593e('0x37'),function(_0x573f61){logger[_0x593e('0x26')](_0x61e354['uniqueid'],_0x593e('0x38'),_0x573f61[_0x593e('0x39')]);attachment[_0x593e('0x3a')]({'name':path['parse'](_0x61e354[_0x593e('0x30')])[_0x593e('0x25')],'basename':path[_0x593e('0x3b')](_0x61e354[_0x593e('0x30')])[_0x593e('0x25')]+'.pdf','type':_0x593e('0x3c')})[_0x593e('0x3d')](function(_0x25f542){faxAccount[_0x593e('0x3e')](_0x2ec221,{'from':_0x61e354[_0x593e('0x36')],'mapKey':_0x593e('0x3f'),'body':path['parse'](_0x61e354[_0x593e('0x30')])[_0x593e('0x25')]+_0x593e('0x40'),'AttachmentId':_0x25f542['id']})[_0x593e('0x41')](function(_0xa4328f){logger['error'](_0x61e354[_0x593e('0x24')],'\x20notify\x20',JSON['stringify'](_0xa4328f));});})[_0x593e('0x41')](function(_0x4343a3){logger[_0x593e('0x42')](_0x61e354[_0x593e('0x24')],'\x20receiveFax\x20',JSON[_0x593e('0x43')](_0x4343a3));});});}logger[_0x593e('0x26')](_0x61e354[_0x593e('0x24')],'\x20receiveFax\x20');}};Fax['prototype'][_0x593e('0x1c')]=function(_0x15dabc){if(this['actions'][_0x15dabc['uniqueid']]){_[_0x593e('0x44')](this['channels'][_0x15dabc['uniqueid']],_['pick'](_0x15dabc,[_0x593e('0x45'),_0x593e('0x46')]));}};function updateStatus(_0x1d9b79){if(_0x1d9b79[_0x593e('0x47')]){faxMessage[_0x593e('0x48')](_0x1d9b79['AttachmentId'],{'failMessage':_0x593e('0x49')})['then'](function(_0x411d5f){ut[_0x593e('0x4a')]('[Fax][Message][Error][Updated]',_0x411d5f);})['catch'](function(_0xd13eb2){ut[_0x593e('0x4a')]('[Fax][Message][Error][NoUpdate1]',_0xd13eb2);});}else{ut[_0x593e('0x4a')](_0x593e('0x4b'));}}Fax[_0x593e('0x1d')][_0x593e('0x4c')]=function(_0x52ae4b,_0x54ec8,_0x5149d0){var _0x516d77=this;var _0x84d70b={};if(_0x54ec8){_0x84d70b={'read':_0x54ec8};}else{_0x84d70b={'failMessage':_0x5149d0};}if(this[_0x593e('0x28')][_0x52ae4b][_0x593e('0x47')]){faxMessage[_0x593e('0x48')](this[_0x593e('0x28')][_0x52ae4b][_0x593e('0x47')],_0x84d70b)[_0x593e('0x3d')](function(_0x758b83){ut[_0x593e('0x4a')](_0x593e('0x4d'),_0x758b83);})[_0x593e('0x41')](function(_0x5f53ca){ut['logger'](_0x593e('0x4e'),_0x5f53ca);})[_0x593e('0x4f')](function(){delete _0x516d77['channels'][_0x52ae4b];delete _0x516d77[_0x593e('0x28')][_0x52ae4b];});}else{ut[_0x593e('0x4a')](_0x593e('0x50'));delete this['channels'][_0x52ae4b];delete this[_0x593e('0x28')][_0x52ae4b];}};Fax[_0x593e('0x1d')]['syncHangup']=function(_0x12b561){var _0x183ab2=this;if(this[_0x593e('0xe')][_0x12b561[_0x593e('0x24')]]){if(this['actions'][_0x12b561[_0x593e('0x24')]]){this[_0x593e('0xe')][_0x12b561[_0x593e('0x24')]]['id']=this[_0x593e('0x28')][_0x12b561[_0x593e('0x24')]]['id'];this[_0x593e('0xe')][_0x12b561[_0x593e('0x24')]][_0x593e('0x25')]=this['actions'][_0x12b561[_0x593e('0x24')]]['name'];}logger[_0x593e('0x26')](_0x12b561['uniqueid'],this[_0x593e('0x28')][_0x12b561['uniqueid']]?_0x593e('0x51'):_0x593e('0x52'),JSON[_0x593e('0x43')](this[_0x593e('0xe')][_0x12b561[_0x593e('0x24')]]));if(this[_0x593e('0x28')][_0x12b561['uniqueid']]){if(this['channels'][_0x12b561[_0x593e('0x24')]][_0x593e('0x53')]>0x0&&this[_0x593e('0xe')][_0x12b561[_0x593e('0x24')]]['faxstatus']==='SUCCESS'){this[_0x593e('0x4c')](_0x12b561[_0x593e('0x24')],!![]);}else{this[_0x593e('0x4c')](_0x12b561[_0x593e('0x24')],![],this['channels'][_0x12b561[_0x593e('0x24')]][_0x593e('0x54')]?_0x593e('0x55')+this['channels'][_0x12b561[_0x593e('0x24')]][_0x593e('0x54')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0x593e('0x56')]=function(_0x5b0c5f){var _0x12115e=this;return new BPromise(function(_0x5a568b,_0x35b1f3){_0x12115e[_0x593e('0x57')](_0x5b0c5f,_0x12115e['faxAccounts'][_0x5b0c5f[_0x593e('0x58')]])['then'](function(_0x2ddc09){ut[_0x593e('0x4a')]('[Fax][execOriginate][success]',_0x2ddc09);_0x5a568b(ut[_0x593e('0x39')](_0x593e('0x59')));})[_0x593e('0x41')](function(_0x46e0cc){ut[_0x593e('0x4a')](_0x593e('0x5a'),_0x46e0cc);updateStatus(_0x5b0c5f);_0x35b1f3(ut['message']('Fax\x20failed'));});});};Fax['prototype'][_0x593e('0x5b')]=function(_0x4d6c58){var _0x1f0008=this;return new BPromise(function(_0x9cc5d9,_0xf14478){var _0x53fda8=_0x1f0008[_0x593e('0x5c')](_0x1f0008[_0x593e('0xf')][_0x4d6c58[_0x593e('0x58')]][_0x593e('0x5d')],_0x4d6c58);if(_0x53fda8[_0x593e('0x5e')]){_0x9cc5d9(ut[_0x593e('0x39')](_0x593e('0x5f')));}else{_0xf14478(ut['message'](_0x53fda8[_0x593e('0x39')]));}});};function originate(_0x48832a,_0x5ece58,_0x5ddc62){return new BPromise(function(_0x1a56fd,_0x45c2cd){if(_0x5ddc62){var _0x4e219d=util[_0x593e('0x60')](_0x593e('0x61'),path[_0x593e('0x3b')](_0x48832a['path'])[_0x593e('0x25')],_0x48832a[_0x593e('0x5')]);gs[_0x593e('0x62')](_0x4e219d)[_0x593e('0x3d')](function(){_0x48832a[_0x593e('0x5')]=util[_0x593e('0x60')]('%s/%s.tif',path[_0x593e('0x3b')](_0x48832a[_0x593e('0x5')])[_0x593e('0x63')],path[_0x593e('0x3b')](_0x48832a[_0x593e('0x5')])['name']);_0x5ece58['XMF-PATH']=_0x48832a[_0x593e('0x5')];ut[_0x593e('0x4a')](_0x593e('0x64'),'');ami[_0x593e('0x65')](ut[_0x593e('0x66')](_0x48832a,_0x5ece58))[_0x593e('0x3d')](function(_0x461659){_0x1a56fd(_0x461659);})['catch'](function(_0x21c345){_0x45c2cd(_0x21c345);});})[_0x593e('0x41')](function(_0xe009e){_0x45c2cd(_0xe009e);});}else{ami[_0x593e('0x65')](ut['variablesAction'](_0x48832a,_0x5ece58))[_0x593e('0x3d')](function(_0x95846e){_0x1a56fd(_0x95846e);})[_0x593e('0x41')](function(_0x303016){_0x45c2cd(_0x303016);});}});}Fax[_0x593e('0x1d')][_0x593e('0x57')]=function(_0x1c8ca0,_0xbbdc45){var _0x23dbb3=this;return new BPromise(function(_0x16b10c,_0x3c2246){var _0x5d14e8=uuid['v4']();var _0x14bb53=ut[_0x593e('0x67')](_0x1c8ca0,_0xbbdc45);_0x23dbb3[_0x593e('0x28')][_0x5d14e8]=new Action(_0x5d14e8,_0xbbdc45,_0x1c8ca0);var _0x7232c2=_0x23dbb3[_0x593e('0x28')][_0x5d14e8];if(path[_0x593e('0x3b')](_0x1c8ca0['path'])[_0x593e('0x68')]===_0x593e('0x40')){originate(_0x7232c2,_0x14bb53,!![])[_0x593e('0x3d')](function(_0x1ca4dd){_0x16b10c(_0x1ca4dd);})[_0x593e('0x41')](function(_0x4b009b){_0x3c2246(_0x4b009b);});}else{originate(_0x7232c2,_0x14bb53,![])[_0x593e('0x3d')](function(_0x2d67ca){_0x16b10c(_0x2d67ca);})[_0x593e('0x41')](function(_0x1424c9){_0x3c2246(_0x1424c9);});}});};Fax[_0x593e('0x1d')][_0x593e('0x69')]=function(_0xfbd7c){return!_[_0x593e('0x6a')](_0xfbd7c)&&!_[_0x593e('0x6a')](_0xfbd7c['name'])&&!_[_0x593e('0x6a')](_0xfbd7c[_0x593e('0x6b')])&&_0xfbd7c[_0x593e('0x6b')]&&!_[_0x593e('0x6a')](this[_0x593e('0x10')][util[_0x593e('0x60')](_0x593e('0x6c'),_0xfbd7c[_0x593e('0x25')])])&&!_[_0x593e('0x6a')](this[_0x593e('0x10')][util[_0x593e('0x60')](_0x593e('0x6c'),_0xfbd7c[_0x593e('0x25')])][_0x593e('0x2f')])&&(this[_0x593e('0x10')][util[_0x593e('0x60')](_0x593e('0x6c'),_0xfbd7c['name'])][_0x593e('0x2f')]===_0x593e('0x6d')||this[_0x593e('0x10')][util[_0x593e('0x60')]('SIP/%s',_0xfbd7c[_0x593e('0x25')])][_0x593e('0x2f')]===_0x593e('0x6e'));};Fax['prototype'][_0x593e('0x5c')]=function(_0x1109da,_0x31e274){if(!this[_0x593e('0x69')](_0x1109da)){ut[_0x593e('0x4a')](_0x593e('0x6f'),_[_0x593e('0x6a')](_0x1109da)?'':_0x1109da[_0x593e('0x25')]+_0x593e('0x70'));return{'isValid':![],'message':_0x593e('0x71')};}if(_[_0x593e('0x6a')](_0x31e274['fax'])){ut[_0x593e('0x4a')](_0x593e('0x72'),JSON[_0x593e('0x43')](_0x31e274));return{'isValid':![],'message':_0x593e('0x73')};}if(_[_0x593e('0x6a')](_0x31e274['path'])){ut[_0x593e('0x4a')](_0x593e('0x74'),JSON[_0x593e('0x43')](_0x31e274));return{'isValid':![],'message':_0x593e('0x75')};}return{'isValid':!![],'message':_0x593e('0x76')};};module['exports']=Fax;
\ No newline at end of file
+var _0x10a9=['localstationid','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','then','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','actions','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','SUCCESS','faxstatusstring','SENDING\x20FAILED','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','Trunk','format','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','./util/gs','fax','../ami','./channel','./action','../rpc/faxAccount','../rpc/attachment','channels','trunks','newchannel','syncNewchannel','varset','syncVarSet','bind','newstate','syncNewState','newexten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','faxAccounts','hasOwnProperty','exten','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','syncNewExten','operation','status'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x10a9,0xb7));var _0x910a=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x10a9[_0x432682];return _0x463d05;};'use strict';var util=require(_0x910a('0x0'));var _=require(_0x910a('0x1'));var BPromise=require(_0x910a('0x2'));var uuid=require(_0x910a('0x3'));var moment=require(_0x910a('0x4'));var path=require(_0x910a('0x5'));var tiff2pdf=require(_0x910a('0x6'));var gs=require(_0x910a('0x7'));var logger=require('../../../config/logger')(_0x910a('0x8'));var ami=require(_0x910a('0x9'));var rpcDb=require('./rpcDb');var Channel=require(_0x910a('0xa'));var ut=require('./util/util');var Action=require(_0x910a('0xb'));var faxAccount=require(_0x910a('0xc'));var attachment=require(_0x910a('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0xa08d68){this[_0x910a('0xe')]={};this['faxAccounts']=_0xa08d68['faxAccounts'];this['trunks']=_0xa08d68[_0x910a('0xf')];this['actions']={};ami['on'](_0x910a('0x10'),this[_0x910a('0x11')]['bind'](this));ami['on'](_0x910a('0x12'),this[_0x910a('0x13')][_0x910a('0x14')](this));ami['on'](_0x910a('0x15'),this[_0x910a('0x16')][_0x910a('0x14')](this));ami['on'](_0x910a('0x17'),this['syncNewExten'][_0x910a('0x14')](this));ami['on'](_0x910a('0x18'),this[_0x910a('0x19')][_0x910a('0x14')](this));ami['on'](_0x910a('0x1a'),this[_0x910a('0x1b')]['bind'](this));ami['on'](_0x910a('0x1c'),this[_0x910a('0x1d')][_0x910a('0x14')](this));ami['on'](_0x910a('0x1e'),this[_0x910a('0x1f')][_0x910a('0x14')](this));}Fax[_0x910a('0x20')]['syncNewchannel']=function(_0x2b047b){if(_0x2b047b[_0x910a('0x21')]==='from-voip-provider'){for(var _0xad6c1f in this[_0x910a('0x22')]){if(this[_0x910a('0x22')][_0x910a('0x23')](_0xad6c1f)){if(_0x2b047b[_0x910a('0x24')]===this[_0x910a('0x22')][_0xad6c1f]['localstationid']){this[_0x910a('0xe')][_0x2b047b[_0x910a('0x25')]]={};this['channels'][_0x2b047b[_0x910a('0x25')]][_0x910a('0x26')]=_0x2b047b[_0x910a('0x26')];this['channels'][_0x2b047b[_0x910a('0x25')]]['id']=this['faxAccounts'][_0xad6c1f]['id'];this[_0x910a('0xe')][_0x2b047b[_0x910a('0x25')]][_0x910a('0x27')]=this[_0x910a('0x22')][_0xad6c1f][_0x910a('0x27')];logger[_0x910a('0x28')](_0x2b047b[_0x910a('0x25')],_0x910a('0x29'));}}}}if(this['actions'][_0x2b047b[_0x910a('0x25')]]){this[_0x910a('0xe')][_0x2b047b[_0x910a('0x25')]]={};this[_0x910a('0xe')][_0x2b047b[_0x910a('0x25')]][_0x910a('0x26')]=_0x2b047b['channel'];logger[_0x910a('0x28')](_0x2b047b['uniqueid'],'\x20syncNewchannel\x20');}};Fax[_0x910a('0x20')][_0x910a('0x13')]=function(_0x2c72ad){if(this[_0x910a('0xe')][_0x2c72ad[_0x910a('0x25')]]){for(var _0x13ab64 in _0x2c72ad['variable']){if(_0x2c72ad[_0x910a('0x2a')][_0x910a('0x23')](_0x13ab64)){this['channels'][_0x2c72ad[_0x910a('0x25')]][_0x13ab64]=_0x2c72ad[_0x910a('0x2b')];}}}};Fax[_0x910a('0x20')][_0x910a('0x16')]=function(_0x1f3352){if(this[_0x910a('0xe')][_0x1f3352['uniqueid']]){this['channels'][_0x1f3352[_0x910a('0x25')]][_0x910a('0x2c')]=_0x1f3352[_0x910a('0x2c')];this['channels'][_0x1f3352[_0x910a('0x25')]][_0x910a('0x2d')]=_0x1f3352[_0x910a('0x2d')];}};Fax[_0x910a('0x20')][_0x910a('0x2e')]=function(_0x3b0c68){if(this['channels'][_0x3b0c68[_0x910a('0x25')]]){for(var _0x1ce875 in _0x3b0c68['variable']){if(_0x3b0c68[_0x910a('0x2a')]['hasOwnProperty'](_0x1ce875)){this[_0x910a('0xe')][_0x3b0c68[_0x910a('0x25')]][_0x1ce875]=_0x3b0c68[_0x910a('0x2b')];}}}};Fax[_0x910a('0x20')][_0x910a('0x19')]=function(_0x56ca8c){if(this[_0x910a('0xe')][_0x56ca8c[_0x910a('0x25')]]){this['channels'][_0x56ca8c[_0x910a('0x25')]][_0x910a('0x2f')]=_0x56ca8c[_0x910a('0x2f')];this[_0x910a('0xe')][_0x56ca8c[_0x910a('0x25')]][_0x910a('0x30')]=_0x56ca8c[_0x910a('0x30')];this[_0x910a('0xe')][_0x56ca8c[_0x910a('0x25')]][_0x910a('0x31')]=_0x56ca8c['localstationid'];this[_0x910a('0xe')][_0x56ca8c['uniqueid']][_0x910a('0x32')]=_0x56ca8c['filename'];logger['info'](_0x56ca8c[_0x910a('0x25')],'\x20syncFaxStatus\x20');}};Fax[_0x910a('0x20')][_0x910a('0x1b')]=function(_0x4fee02){var _0x3e10b5=this;if(this['channels'][_0x4fee02[_0x910a('0x25')]]){var _0x11831c=this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]]['id'];this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]][_0x910a('0x33')]=_0x4fee02[_0x910a('0x33')];this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]]['pagestransferred']=_0x4fee02[_0x910a('0x34')];this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]][_0x910a('0x31')]=_0x4fee02[_0x910a('0x31')];this['channels'][_0x4fee02[_0x910a('0x25')]][_0x910a('0x35')]=_0x4fee02[_0x910a('0x35')];this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]]['transferrate']=_0x4fee02[_0x910a('0x36')];this['channels'][_0x4fee02[_0x910a('0x25')]][_0x910a('0x32')]=_0x4fee02[_0x910a('0x32')];this[_0x910a('0xe')][_0x4fee02[_0x910a('0x25')]][_0x910a('0x37')]=_0x4fee02[_0x910a('0x37')];if(this['channels'][_0x4fee02['uniqueid']]['pagestransferred']>0x0){tiff2pdf(_0x4fee02[_0x910a('0x32')],'/var/opt/motion2/server/files/attachments/',function(_0x53dc0e){logger[_0x910a('0x28')](_0x4fee02['uniqueid'],_0x910a('0x38'),_0x53dc0e[_0x910a('0x39')]);attachment[_0x910a('0x3a')]({'name':path[_0x910a('0x3b')](_0x4fee02[_0x910a('0x32')])[_0x910a('0x27')],'basename':path[_0x910a('0x3b')](_0x4fee02[_0x910a('0x32')])['name']+_0x910a('0x3c'),'type':'application/pdf'})[_0x910a('0x3d')](function(_0x15bfb8){faxAccount[_0x910a('0x3e')](_0x11831c,{'from':_0x4fee02[_0x910a('0x37')],'mapKey':_0x910a('0x8'),'body':path[_0x910a('0x3b')](_0x4fee02[_0x910a('0x32')])[_0x910a('0x27')]+_0x910a('0x3c'),'AttachmentId':_0x15bfb8['id']})[_0x910a('0x3f')](function(_0x951992){logger[_0x910a('0x40')](_0x4fee02['uniqueid'],_0x910a('0x41'),JSON['stringify'](_0x951992));});})[_0x910a('0x3f')](function(_0x441d55){logger['error'](_0x4fee02[_0x910a('0x25')],_0x910a('0x42'),JSON[_0x910a('0x43')](_0x441d55));});});}logger[_0x910a('0x28')](_0x4fee02[_0x910a('0x25')],'\x20receiveFax\x20');}};Fax[_0x910a('0x20')][_0x910a('0x1f')]=function(_0x3e0e5f){if(this['actions'][_0x3e0e5f[_0x910a('0x25')]]){_[_0x910a('0x44')](this[_0x910a('0xe')][_0x3e0e5f[_0x910a('0x25')]],_[_0x910a('0x45')](_0x3e0e5f,[_0x910a('0x46'),_0x910a('0x47')]));}};function updateStatus(_0x160181){if(_0x160181[_0x910a('0x48')]){faxMessage[_0x910a('0x49')](_0x160181[_0x910a('0x48')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x910a('0x3d')](function(_0x33d1ae){ut[_0x910a('0x4a')]('[Fax][Message][Error][Updated]',_0x33d1ae);})[_0x910a('0x3f')](function(_0x14dfb7){ut[_0x910a('0x4a')](_0x910a('0x4b'),_0x14dfb7);});}else{ut[_0x910a('0x4a')](_0x910a('0x4c'));}}Fax[_0x910a('0x20')][_0x910a('0x4d')]=function(_0x11cdfc,_0x181d45,_0x2a0a3f){var _0x5a0afe=this;var _0x488f8a={};if(_0x181d45){_0x488f8a={'read':_0x181d45};}else{_0x488f8a={'failMessage':_0x2a0a3f};}if(this[_0x910a('0x4e')][_0x11cdfc]['AttachmentId']){faxMessage[_0x910a('0x49')](this[_0x910a('0x4e')][_0x11cdfc][_0x910a('0x48')],_0x488f8a)['then'](function(_0x132243){ut[_0x910a('0x4a')]('[Fax][Message][Updated]',_0x132243);})[_0x910a('0x3f')](function(_0x5a915d){ut[_0x910a('0x4a')](_0x910a('0x4f'),_0x5a915d);})['finally'](function(){delete _0x5a0afe[_0x910a('0xe')][_0x11cdfc];delete _0x5a0afe[_0x910a('0x4e')][_0x11cdfc];});}else{ut['logger'](_0x910a('0x50'));delete this[_0x910a('0xe')][_0x11cdfc];delete this[_0x910a('0x4e')][_0x11cdfc];}};Fax[_0x910a('0x20')][_0x910a('0x1d')]=function(_0x1b5d28){var _0x5475bb=this;if(this[_0x910a('0xe')][_0x1b5d28['uniqueid']]){if(this['actions'][_0x1b5d28[_0x910a('0x25')]]){this[_0x910a('0xe')][_0x1b5d28[_0x910a('0x25')]]['id']=this[_0x910a('0x4e')][_0x1b5d28[_0x910a('0x25')]]['id'];this[_0x910a('0xe')][_0x1b5d28[_0x910a('0x25')]][_0x910a('0x27')]=this[_0x910a('0x4e')][_0x1b5d28[_0x910a('0x25')]][_0x910a('0x27')];}logger[_0x910a('0x28')](_0x1b5d28[_0x910a('0x25')],this[_0x910a('0x4e')][_0x1b5d28['uniqueid']]?_0x910a('0x51'):'\x20hangup\x20faxRiceive\x20',JSON[_0x910a('0x43')](this[_0x910a('0xe')][_0x1b5d28[_0x910a('0x25')]]));if(this[_0x910a('0x4e')][_0x1b5d28[_0x910a('0x25')]]){if(this[_0x910a('0xe')][_0x1b5d28['uniqueid']][_0x910a('0x52')]>0x0&&this[_0x910a('0xe')][_0x1b5d28[_0x910a('0x25')]]['faxstatus']===_0x910a('0x53')){this[_0x910a('0x4d')](_0x1b5d28[_0x910a('0x25')],!![]);}else{this[_0x910a('0x4d')](_0x1b5d28[_0x910a('0x25')],![],this[_0x910a('0xe')][_0x1b5d28[_0x910a('0x25')]][_0x910a('0x54')]?'SENDING\x20FAILED:\x20'+this['channels'][_0x1b5d28[_0x910a('0x25')]][_0x910a('0x54')]:_0x910a('0x55'));}}}};Fax['prototype'][_0x910a('0x56')]=function(_0x3ce590){var _0x5753a0=this;return new BPromise(function(_0x40eaaa,_0x202cdc){_0x5753a0[_0x910a('0x57')](_0x3ce590,_0x5753a0[_0x910a('0x22')][_0x3ce590[_0x910a('0x58')]])[_0x910a('0x3d')](function(_0x4d1854){ut[_0x910a('0x4a')]('[Fax][execOriginate][success]',_0x4d1854);_0x40eaaa(ut['message'](_0x910a('0x59')));})[_0x910a('0x3f')](function(_0x2f57b9){ut[_0x910a('0x4a')](_0x910a('0x5a'),_0x2f57b9);updateStatus(_0x3ce590);_0x202cdc(ut[_0x910a('0x39')](_0x910a('0x5b')));});});};Fax[_0x910a('0x20')]['checkAfterSend']=function(_0x2a1649){var _0x25a500=this;return new BPromise(function(_0x5d457c,_0x2dd37b){var _0x1b9c76=_0x25a500[_0x910a('0x5c')](_0x25a500[_0x910a('0x22')][_0x2a1649[_0x910a('0x58')]][_0x910a('0x5d')],_0x2a1649);if(_0x1b9c76['isValid']){_0x5d457c(ut[_0x910a('0x39')]('Trunk\x20Reachable'));}else{_0x2dd37b(ut[_0x910a('0x39')](_0x1b9c76['message']));}});};function originate(_0x1479ba,_0x5edd2a,_0x1d2326){return new BPromise(function(_0x6b4bf,_0x3e9085){if(_0x1d2326){var _0x406c42=util[_0x910a('0x5e')]('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[_0x910a('0x3b')](_0x1479ba[_0x910a('0x5')])[_0x910a('0x27')],_0x1479ba[_0x910a('0x5')]);gs[_0x910a('0x5f')](_0x406c42)[_0x910a('0x3d')](function(){_0x1479ba['path']=util[_0x910a('0x5e')](_0x910a('0x60'),path[_0x910a('0x3b')](_0x1479ba['path'])[_0x910a('0x61')],path[_0x910a('0x3b')](_0x1479ba[_0x910a('0x5')])[_0x910a('0x27')]);_0x5edd2a[_0x910a('0x62')]=_0x1479ba[_0x910a('0x5')];ut[_0x910a('0x4a')](_0x910a('0x63'),'');ami['Action'](ut[_0x910a('0x64')](_0x1479ba,_0x5edd2a))[_0x910a('0x3d')](function(_0xda94c3){_0x6b4bf(_0xda94c3);})[_0x910a('0x3f')](function(_0x5a90e8){_0x3e9085(_0x5a90e8);});})[_0x910a('0x3f')](function(_0x3600ed){_0x3e9085(_0x3600ed);});}else{ami[_0x910a('0x65')](ut['variablesAction'](_0x1479ba,_0x5edd2a))['then'](function(_0x5dad34){_0x6b4bf(_0x5dad34);})[_0x910a('0x3f')](function(_0x2deef5){_0x3e9085(_0x2deef5);});}});}Fax[_0x910a('0x20')]['execOriginate']=function(_0x24a213,_0xa3d93c){var _0x5713e4=this;return new BPromise(function(_0x13b55d,_0x330c9a){var _0x8c6049=uuid['v4']();var _0x73461d=ut[_0x910a('0x66')](_0x24a213,_0xa3d93c);_0x5713e4[_0x910a('0x4e')][_0x8c6049]=new Action(_0x8c6049,_0xa3d93c,_0x24a213);var _0x31bd05=_0x5713e4['actions'][_0x8c6049];if(path[_0x910a('0x3b')](_0x24a213['path'])[_0x910a('0x67')]===_0x910a('0x3c')){originate(_0x31bd05,_0x73461d,!![])[_0x910a('0x3d')](function(_0x3364d6){_0x13b55d(_0x3364d6);})[_0x910a('0x3f')](function(_0x518f2){_0x330c9a(_0x518f2);});}else{originate(_0x31bd05,_0x73461d,![])[_0x910a('0x3d')](function(_0x2f1311){_0x13b55d(_0x2f1311);})[_0x910a('0x3f')](function(_0x166cd0){_0x330c9a(_0x166cd0);});}});};Fax[_0x910a('0x20')][_0x910a('0x68')]=function(_0x1abaa4){return!_[_0x910a('0x69')](_0x1abaa4)&&!_[_0x910a('0x69')](_0x1abaa4['name'])&&!_[_0x910a('0x69')](_0x1abaa4['active'])&&_0x1abaa4[_0x910a('0x6a')]&&!_[_0x910a('0x69')](this[_0x910a('0xf')][util['format']('SIP/%s',_0x1abaa4[_0x910a('0x27')])])&&!_[_0x910a('0x69')](this[_0x910a('0xf')][util[_0x910a('0x5e')](_0x910a('0x6b'),_0x1abaa4[_0x910a('0x27')])][_0x910a('0x30')])&&(this[_0x910a('0xf')][util[_0x910a('0x5e')]('SIP/%s',_0x1abaa4['name'])][_0x910a('0x30')]===_0x910a('0x6c')||this['trunks'][util[_0x910a('0x5e')](_0x910a('0x6b'),_0x1abaa4['name'])][_0x910a('0x30')]===_0x910a('0x6d'));};Fax['prototype'][_0x910a('0x5c')]=function(_0x85b5e5,_0x2958d8){if(!this[_0x910a('0x68')](_0x85b5e5)){ut['logger'](_0x910a('0x6e'),_[_0x910a('0x69')](_0x85b5e5)?'':_0x85b5e5['name']+_0x910a('0x6f'));return{'isValid':![],'message':_0x910a('0x70')};}if(_[_0x910a('0x69')](_0x2958d8[_0x910a('0x8')])){ut[_0x910a('0x4a')](_0x910a('0x71'),JSON[_0x910a('0x43')](_0x2958d8));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x910a('0x69')](_0x2958d8[_0x910a('0x5')])){ut[_0x910a('0x4a')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x910a('0x43')](_0x2958d8));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x910a('0x72')};};module[_0x910a('0x73')]=Fax;
\ No newline at end of file
index 8d93f05..0ad659c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a2=['resolve','catch','[Notify]\x20','../rpc/faxAccount','inspect'];(function(_0x3ea514,_0x1d572b){var _0x426622=function(_0x294f1c){while(--_0x294f1c){_0x3ea514['push'](_0x3ea514['shift']());}};_0x426622(++_0x1d572b);}(_0x47a2,0x1c5));var _0x247a=function(_0x205c34,_0x1e1b3a){_0x205c34=_0x205c34-0x0;var _0x4d0db1=_0x47a2[_0x205c34];return _0x4d0db1;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require('lodash');var faxAccount=require(_0x247a('0x0'));function loggerCatch(_0x117126){return function(_0x2f6bf2){logger['error'](_0x117126,util[_0x247a('0x1')](_0x2f6bf2,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x5b97ef,_0x468745){return BPromise[_0x247a('0x2')]()['then'](faxAccount['notify'](_0x5b97ef,_0x468745))[_0x247a('0x3')](loggerCatch(_0x247a('0x4')));};
\ No newline at end of file
+var _0x25bb=['error','inspect','notify','resolve','then','[Notify]\x20','util','../../../config/logger','../rpc/faxAccount'];(function(_0x639f5,_0x453959){var _0x5a5101=function(_0x35cea0){while(--_0x35cea0){_0x639f5['push'](_0x639f5['shift']());}};_0x5a5101(++_0x453959);}(_0x25bb,0xd5));var _0xb25b=function(_0x451ada,_0x1e08d9){_0x451ada=_0x451ada-0x0;var _0x156892=_0x25bb[_0x451ada];return _0x156892;};'use strict';var util=require(_0xb25b('0x0'));var BPromise=require('bluebird');var logger=require(_0xb25b('0x1'))('preview');var _=require('lodash');var faxAccount=require(_0xb25b('0x2'));function loggerCatch(_0x322e37){return function(_0x2f48e7){logger[_0xb25b('0x3')](_0x322e37,util[_0xb25b('0x4')](_0x2f48e7,{'showHidden':![],'depth':null}));};}exports[_0xb25b('0x5')]=function(_0x37f4e3,_0x5c8d85){return BPromise[_0xb25b('0x6')]()[_0xb25b('0x7')](faxAccount[_0xb25b('0x5')](_0x37f4e3,_0x5c8d85))['catch'](loggerCatch(_0xb25b('0x8')));};
\ No newline at end of file
index 0446676..822d449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5e=['exec','execute','Exec\x20gs','info','\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird','child_process'];(function(_0x195ef9,_0x28c1d6){var _0x33a2de=function(_0x5cea54){while(--_0x5cea54){_0x195ef9['push'](_0x195ef9['shift']());}};_0x33a2de(++_0x28c1d6);}(_0xfd5e,0x1be));var _0xefd5=function(_0x231a42,_0x39f4db){_0x231a42=_0x231a42-0x0;var _0x3c2a56=_0xfd5e[_0x231a42];return _0x3c2a56;};'use strict';var util=require(_0xefd5('0x0'));var logger=require(_0xefd5('0x1'))(_0xefd5('0x2'));var BPromise=require(_0xefd5('0x3'));var exec=require(_0xefd5('0x4'))[_0xefd5('0x5')];exports[_0xefd5('0x6')]=function(_0x3fded6){return new BPromise(function(_0x531231,_0x28e6b3){exec(_0x3fded6,function(_0x25c95e,_0x3e5c1e,_0x16b34a){logger['info'](_0xefd5('0x7'),_0x3e5c1e);if(_0x25c95e){logger[_0xefd5('0x8')]('Exec\x20gs',_0xefd5('0x9'),util[_0xefd5('0xa')](_0x25c95e,{'showHidden':![],'depth':null}),_0x3e5c1e,_0x16b34a);_0x28e6b3(_0x25c95e);}_0x531231(_0x3e5c1e);});});};
\ No newline at end of file
+var _0x8aea=['child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util','fax','bluebird'];(function(_0x3f9d5c,_0x49f9eb){var _0x4b36b8=function(_0x1c9e94){while(--_0x1c9e94){_0x3f9d5c['push'](_0x3f9d5c['shift']());}};_0x4b36b8(++_0x49f9eb);}(_0x8aea,0xbb));var _0xa8ae=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x8aea[_0x1facfa];return _0x9ec701;};'use strict';var util=require(_0xa8ae('0x0'));var logger=require('../../../../config/logger')(_0xa8ae('0x1'));var BPromise=require(_0xa8ae('0x2'));var exec=require(_0xa8ae('0x3'))[_0xa8ae('0x4')];exports[_0xa8ae('0x5')]=function(_0x3b066e){return new BPromise(function(_0x23b456,_0x239b73){exec(_0x3b066e,function(_0x5e1644,_0x58b998,_0x4dc869){logger[_0xa8ae('0x6')](_0xa8ae('0x7'),_0x58b998);if(_0x5e1644){logger[_0xa8ae('0x6')](_0xa8ae('0x7'),_0xa8ae('0x8'),util[_0xa8ae('0x9')](_0x5e1644,{'showHidden':![],'depth':null}),_0x58b998,_0x4dc869);_0x239b73(_0x5e1644);}_0x23b456(_0x58b998);});});};
\ No newline at end of file
index 55cff30..7ac2185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbad=['t38timeout','localstationid','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','lodash','../../../../config/logger','message','logger','info','addVariables','headerinfo','minrate','format','modem','faxdetect'];(function(_0x2fdf82,_0x322e7c){var _0x2382f5=function(_0x4d6951){while(--_0x4d6951){_0x2fdf82['push'](_0x2fdf82['shift']());}};_0x2382f5(++_0x322e7c);}(_0xdbad,0x87));var _0xddba=function(_0x2fd91a,_0x57bbca){_0x2fd91a=_0x2fd91a-0x0;var _0x2c81c0=_0xdbad[_0x2fd91a];return _0x2c81c0;};'use strict';var util=require(_0xddba('0x0'));var _=require(_0xddba('0x1'));var moment=require('moment');var logger=require(_0xddba('0x2'))('fax');exports[_0xddba('0x3')]=function(_0x34016e){return{'message':_0x34016e};};exports[_0xddba('0x4')]=function(_0x232c81,_0x3f090b){logger[_0xddba('0x5')](_0x232c81,util['inspect'](_0x3f090b,{'showHidden':![],'depth':null}));};exports[_0xddba('0x6')]=function(_0x540feb,_0x568093){var _0x152216={'XMF-ECM':_0x568093['ecm'],'XMF-HEADERINFO':_0x568093[_0xddba('0x7')],'XMF-MINRATE':_0x568093[_0xddba('0x8')],'XMF-MAXRATE':_0x568093['maxrate'],'XMF-MODEM':util[_0xddba('0x9')]('\x22%s\x22',_0x568093[_0xddba('0xa')]),'XMF-GATEWAY':_0x568093['gateway'],'XMF-FAXDETECT':_0x568093[_0xddba('0xb')],'XMF-T38TIMEOUT':_0x568093[_0xddba('0xc')],'XMF-LOCALSTATIONID':_0x568093[_0xddba('0xd')],'XMF-PATH':_0x540feb['path']};return _0x152216;};exports[_0xddba('0xe')]=function(_0x24cbbf,_0x216a11){return{'actionid':_0x24cbbf[_0xddba('0xf')],'action':_0xddba('0x10'),'channel':_0x24cbbf[_0xddba('0x11')],'Exten':_0xddba('0x12'),'Context':_0xddba('0x13'),'Priority':'1','callerid':util[_0xddba('0x9')](_0xddba('0x14'),_0x24cbbf['headerinfo']?_0x24cbbf['headerinfo']:'',_0x24cbbf[_0xddba('0xd')]),'variable':_0x216a11,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x24cbbf[_0xddba('0xf')]};};
\ No newline at end of file
+var _0xf36d=['modem','gateway','faxdetect','t38timeout','path','variablesAction','originate','xcally-motion-fax','from-sip','localstationid','uniqueid','lodash','moment','fax','logger','info','inspect','addVariables','headerinfo','maxrate','format','\x22%s\x22'];(function(_0xaa7460,_0x33e950){var _0x298718=function(_0x1d357c){while(--_0x1d357c){_0xaa7460['push'](_0xaa7460['shift']());}};_0x298718(++_0x33e950);}(_0xf36d,0x1d9));var _0xdf36=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xf36d[_0x5783f4];return _0x28e380;};'use strict';var util=require('util');var _=require(_0xdf36('0x0'));var moment=require(_0xdf36('0x1'));var logger=require('../../../../config/logger')(_0xdf36('0x2'));exports['message']=function(_0x5a248f){return{'message':_0x5a248f};};exports[_0xdf36('0x3')]=function(_0x585a79,_0x722b43){logger[_0xdf36('0x4')](_0x585a79,util[_0xdf36('0x5')](_0x722b43,{'showHidden':![],'depth':null}));};exports[_0xdf36('0x6')]=function(_0x1c7fcc,_0x104337){var _0x30e63b={'XMF-ECM':_0x104337['ecm'],'XMF-HEADERINFO':_0x104337[_0xdf36('0x7')],'XMF-MINRATE':_0x104337['minrate'],'XMF-MAXRATE':_0x104337[_0xdf36('0x8')],'XMF-MODEM':util[_0xdf36('0x9')](_0xdf36('0xa'),_0x104337[_0xdf36('0xb')]),'XMF-GATEWAY':_0x104337[_0xdf36('0xc')],'XMF-FAXDETECT':_0x104337[_0xdf36('0xd')],'XMF-T38TIMEOUT':_0x104337[_0xdf36('0xe')],'XMF-LOCALSTATIONID':_0x104337['localstationid'],'XMF-PATH':_0x1c7fcc[_0xdf36('0xf')]};return _0x30e63b;};exports[_0xdf36('0x10')]=function(_0x4eead9,_0x3c2221){return{'actionid':_0x4eead9['uniqueid'],'action':_0xdf36('0x11'),'channel':_0x4eead9['channel'],'Exten':_0xdf36('0x12'),'Context':_0xdf36('0x13'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x4eead9['headerinfo']?_0x4eead9[_0xdf36('0x7')]:'',_0x4eead9[_0xdf36('0x14')]),'variable':_0x3c2221,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4eead9[_0xdf36('0x15')]};};
\ No newline at end of file
index 6ec09a9..022c19c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb4=['getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','[index.js][initParams]','inspect','listen','sync','error','[index.js][main]','moment','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0xfeb4,0xa6));var _0x4feb=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0xfeb4[_0x4fbfd9];return _0x31dc94;};'use strict';var util=require('util');var moment=require(_0x4feb('0x0'));var server=require('./server');var Realtime=require('./realtime');var Report=require(_0x4feb('0x1'));var Acw=require(_0x4feb('0x2'));var Trigger=require(_0x4feb('0x3'));var Dialer=require(_0x4feb('0x4'));var Preview=require(_0x4feb('0x5'));var Fax=require(_0x4feb('0x6'));var user=require(_0x4feb('0x7'));var voiceQueue=require(_0x4feb('0x8'));var voiceQueueReport=require(_0x4feb('0x9'));var voiceCallReport=require(_0x4feb('0xa'));var trunk=require(_0x4feb('0xb'));var trigger=require('./rpc/trigger');var template=require(_0x4feb('0xc'));var cmHopperHistory=require(_0x4feb('0xd'));var campaign=require(_0x4feb('0xe'));var voiceExtension=require(_0x4feb('0xf'));var faxAccount=require(_0x4feb('0x10'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x4feb('0x11'));var sugarcrm=require(_0x4feb('0x12'));var freshdesk=require(_0x4feb('0x13'));var desk=require(_0x4feb('0x14'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x4feb('0x15'));var freshsales=require(_0x4feb('0x16'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x4feb('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x4feb('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x4feb('0x19')](_0x4feb('0x1a'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4feb('0x19')](_0x4feb('0x1a'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x4feb('0x1b')]()[_0x4feb('0x1c')](user[_0x4feb('0x1d')]())['then'](realtime[_0x4feb('0x1e')]())[_0x4feb('0x1c')](user[_0x4feb('0x1f')]())[_0x4feb('0x1c')](realtime['initTelephones']())[_0x4feb('0x1c')](trunk[_0x4feb('0x20')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x21')]())['then'](voiceQueue[_0x4feb('0x22')]())[_0x4feb('0x1c')](realtime['initVoiceQueues']())[_0x4feb('0x1c')](trigger[_0x4feb('0x23')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x24')]())[_0x4feb('0x1c')](template[_0x4feb('0x25')]())['then'](realtime['initTemplates']())[_0x4feb('0x1c')](zendesk[_0x4feb('0x26')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x27')]())[_0x4feb('0x1c')](salesforce[_0x4feb('0x28')]())['then'](realtime['initSalesforceAccounts']())[_0x4feb('0x1c')](sugarcrm[_0x4feb('0x29')]())['then'](realtime[_0x4feb('0x2a')]())[_0x4feb('0x1c')](freshdesk[_0x4feb('0x2b')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x2c')]())[_0x4feb('0x1c')](desk[_0x4feb('0x2d')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x2e')]())[_0x4feb('0x1c')](zoho['getZohoAccounts']())['then'](realtime[_0x4feb('0x2f')]())[_0x4feb('0x1c')](vtiger[_0x4feb('0x30')]())['then'](realtime[_0x4feb('0x31')]())[_0x4feb('0x1c')](freshsales[_0x4feb('0x32')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x33')]())[_0x4feb('0x1c')](servicenow[_0x4feb('0x34')]())['then'](realtime[_0x4feb('0x35')]())[_0x4feb('0x1c')](dynamics365[_0x4feb('0x36')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x37')]())[_0x4feb('0x1c')](campaign[_0x4feb('0x38')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x39')]())[_0x4feb('0x1c')](voiceExtension[_0x4feb('0x3a')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x3b')]())[_0x4feb('0x1c')](faxAccount[_0x4feb('0x3c')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x3d')]())[_0x4feb('0x1c')](function(){return realtime;});}function initParams(){return Promise[_0x4feb('0x1b')]()[_0x4feb('0x1c')](voiceQueueReport[_0x4feb('0x3e')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x3f')]())[_0x4feb('0x1c')](cmHopperHistory[_0x4feb('0x40')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x41')]())[_0x4feb('0x1c')](cmHopperHistory[_0x4feb('0x42')]())[_0x4feb('0x1c')](realtime[_0x4feb('0x43')]())[_0x4feb('0x1c')](voiceCallReport[_0x4feb('0x44')]())[_0x4feb('0x1c')](realtime['initVoiceCallReports']())[_0x4feb('0x45')](function(_0x17f5a7){logger['error'](_0x4feb('0x46'),util[_0x4feb('0x47')](_0x17f5a7,{'showHidden':![],'depth':null}));});}function main(){return server[_0x4feb('0x48')](realtime,preview,fax)[_0x4feb('0x1c')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x4feb('0x1c')](function(){report[_0x4feb('0x49')]();setInterval(initRealtime,0x1388);})[_0x4feb('0x45')](function(_0x4f3347){logger[_0x4feb('0x4a')](_0x4feb('0x4b'),util[_0x4feb('0x47')](_0x4f3347,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x0da4=['initDeskAccounts','getZohoAccounts','initZohoAccounts','initVtigerAccounts','getFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','getCampaigns','initVoiceExtensions','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','sync','[index.js][main]','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/freshdesk','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','resolve','then','getAgents','getTelephones','initTelephones','getTrunks','initTrunks','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts'];(function(_0xf4add4,_0x5b9cc1){var _0x1c42fb=function(_0x2674c1){while(--_0x2674c1){_0xf4add4['push'](_0xf4add4['shift']());}};_0x1c42fb(++_0x5b9cc1);}(_0x0da4,0x93));var _0x40da=function(_0x474444,_0x1a5b68){_0x474444=_0x474444-0x0;var _0x25c500=_0x0da4[_0x474444];return _0x25c500;};'use strict';var util=require('util');var moment=require('moment');var server=require('./server');var Realtime=require(_0x40da('0x0'));var Report=require(_0x40da('0x1'));var Acw=require(_0x40da('0x2'));var Trigger=require(_0x40da('0x3'));var Dialer=require(_0x40da('0x4'));var Preview=require(_0x40da('0x5'));var Fax=require(_0x40da('0x6'));var user=require(_0x40da('0x7'));var voiceQueue=require(_0x40da('0x8'));var voiceQueueReport=require(_0x40da('0x9'));var voiceCallReport=require(_0x40da('0xa'));var trunk=require(_0x40da('0xb'));var trigger=require('./rpc/trigger');var template=require(_0x40da('0xc'));var cmHopperHistory=require(_0x40da('0xd'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x40da('0xe'));var faxAccount=require(_0x40da('0xf'));var zendesk=require(_0x40da('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x40da('0x11'));var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x40da('0x12'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x40da('0x13'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x40da('0x14'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get']('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get']('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x40da('0x15')]()[_0x40da('0x16')](user[_0x40da('0x17')]())[_0x40da('0x16')](realtime['initAgents']())[_0x40da('0x16')](user[_0x40da('0x18')]())['then'](realtime[_0x40da('0x19')]())[_0x40da('0x16')](trunk[_0x40da('0x1a')]())[_0x40da('0x16')](realtime[_0x40da('0x1b')]())['then'](voiceQueue['getVoiceQueues']())[_0x40da('0x16')](realtime['initVoiceQueues']())[_0x40da('0x16')](trigger[_0x40da('0x1c')]())['then'](realtime[_0x40da('0x1d')]())['then'](template[_0x40da('0x1e')]())[_0x40da('0x16')](realtime[_0x40da('0x1f')]())[_0x40da('0x16')](zendesk[_0x40da('0x20')]())[_0x40da('0x16')](realtime[_0x40da('0x21')]())[_0x40da('0x16')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x40da('0x22')]())['then'](sugarcrm[_0x40da('0x23')]())[_0x40da('0x16')](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0x40da('0x24')]())[_0x40da('0x16')](realtime[_0x40da('0x25')]())[_0x40da('0x16')](desk[_0x40da('0x26')]())[_0x40da('0x16')](realtime[_0x40da('0x27')]())[_0x40da('0x16')](zoho[_0x40da('0x28')]())[_0x40da('0x16')](realtime[_0x40da('0x29')]())[_0x40da('0x16')](vtiger['getVtigerAccounts']())['then'](realtime[_0x40da('0x2a')]())[_0x40da('0x16')](freshsales[_0x40da('0x2b')]())[_0x40da('0x16')](realtime['initFreshsalesAccounts']())[_0x40da('0x16')](servicenow[_0x40da('0x2c')]())[_0x40da('0x16')](realtime['initServicenowAccounts']())['then'](dynamics365[_0x40da('0x2d')]())[_0x40da('0x16')](realtime['initDynamics365Accounts']())[_0x40da('0x16')](campaign[_0x40da('0x2e')]())[_0x40da('0x16')](realtime['initCampaigns']())[_0x40da('0x16')](voiceExtension['getVoiceExtensions']())['then'](realtime[_0x40da('0x2f')]())[_0x40da('0x16')](faxAccount['getFaxAccounts']())[_0x40da('0x16')](realtime[_0x40da('0x30')]())[_0x40da('0x16')](function(){return realtime;});}function initParams(){return Promise['resolve']()[_0x40da('0x16')](voiceQueueReport[_0x40da('0x31')]())['then'](realtime[_0x40da('0x32')]())[_0x40da('0x16')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x40da('0x16')](realtime[_0x40da('0x33')]())[_0x40da('0x16')](cmHopperHistory['getCampaignHopperHistory']())[_0x40da('0x16')](realtime[_0x40da('0x34')]())[_0x40da('0x16')](voiceCallReport[_0x40da('0x35')]())['then'](realtime[_0x40da('0x36')]())[_0x40da('0x37')](function(_0x52f6b4){logger[_0x40da('0x38')](_0x40da('0x39'),util[_0x40da('0x3a')](_0x52f6b4,{'showHidden':![],'depth':null}));});}function main(){return server[_0x40da('0x3b')](realtime,preview,fax)[_0x40da('0x16')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x40da('0x16')](function(){report[_0x40da('0x3c')]();setInterval(initRealtime,0x1388);})[_0x40da('0x37')](function(_0x97f092){logger[_0x40da('0x38')](_0x40da('0x3d'),util['inspect'](_0x97f092,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 9e8b18d..6ae15e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f2=['stringify','user:%s','emit','user:presence','md5','ioredis','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','state','stateTime','status','unknown','phone','mobile','online','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','inuse','talking','voiceStatus','statePause','format','address','interface'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x06f2,0x190));var _0x206f=function(_0x2b5bf5,_0x3bb408){_0x2b5bf5=_0x2b5bf5-0x0;var _0x312592=_0x06f2[_0x2b5bf5];return _0x312592;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var md5=require(_0x206f('0x0'));var Redis=require(_0x206f('0x1'));var config=require('../../../config/environment');config[_0x206f('0x2')]=_['defaults'](config[_0x206f('0x2')],{'host':_0x206f('0x3'),'port':0x18eb});var io=require(_0x206f('0x4'))(new Redis(config[_0x206f('0x2')]));function Agent(_0x7e98e1){this['id']=_0x7e98e1['id']||0x0;this[_0x206f('0x5')]=_0x7e98e1[_0x206f('0x5')]||'';this[_0x206f('0x6')]=_0x7e98e1[_0x206f('0x6')]||'';this[_0x206f('0x7')]=_0x7e98e1[_0x206f('0x7')]||'';this[_0x206f('0x8')]=_0x7e98e1[_0x206f('0x8')]||'';this[_0x206f('0x9')]='unknown';this[_0x206f('0xa')]=0x0;this[_0x206f('0xb')]=_0x206f('0xc');this['address']='';this[_0x206f('0xd')]='';this[_0x206f('0xe')]='';this['interface']='';this['online']=_0x7e98e1[_0x206f('0xf')]||![];this['voiceStatus']=_0x206f('0xc');this[_0x206f('0x10')]=0x0;this[_0x206f('0x11')]='';this[_0x206f('0x12')]='';this[_0x206f('0x13')]=![];this[_0x206f('0x14')]=![];this[_0x206f('0x0')]='';}Agent[_0x206f('0x15')][_0x206f('0x16')]=function(_0x587502){var _0x3be72a;if(_0x587502&&_0x587502[_0x206f('0x9')]){_0x3be72a=_0x587502[_0x206f('0x9')][_0x206f('0x17')]();switch(_0x3be72a){case _0x206f('0x18'):_0x3be72a='idle';break;case _0x206f('0x19'):_0x3be72a=_0x206f('0x1a');break;}}if(_0x3be72a&&this[_0x206f('0x1b')]!==_0x3be72a||_0x587502[_0x206f('0x1c')]){this[_0x206f('0x10')]=_['toNumber'](moment()[_0x206f('0x1d')]('x'));}if(_0x3be72a){this[_0x206f('0x1b')]=_0x3be72a;}var _0x172a7c={'id':this['id'],'name':this['name'],'email':this[_0x206f('0x6')],'accountcode':this['accountcode'],'fullname':this[_0x206f('0x8')],'state':this[_0x206f('0x9')],'stateTime':this[_0x206f('0xa')],'status':this[_0x206f('0xb')],'address':this[_0x206f('0x1e')],'online':this[_0x206f('0xf')],'voiceStatus':this[_0x206f('0x1b')],'voiceStatusTime':this[_0x206f('0x10')],'voiceStatusCallerIdNumber':this[_0x206f('0x11')],'voiceStatusQueue':this[_0x206f('0x12')],'interface':this[_0x206f('0x1f')],'onhold':this[_0x206f('0x13')]};var _0x462197=md5(JSON[_0x206f('0x20')](_0x172a7c));if(this['md5']!==_0x462197){this['md5']=_0x462197;io['to'](util[_0x206f('0x1d')](_0x206f('0x21'),_0x172a7c[_0x206f('0x5')]))[_0x206f('0x22')]('user:save',_0x172a7c);io[_0x206f('0x22')](_0x206f('0x23'),_0x172a7c);}};module['exports']=Agent;
\ No newline at end of file
+var _0xbac2=['emit','user:presence','exports','lodash','util','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','status','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','prototype','updateStatusRealtime','idle','inuse','talking','format','address','interface','onhold','stringify','user:%s','user:save'];(function(_0x53915d,_0x1daa70){var _0x11e040=function(_0x40e514){while(--_0x40e514){_0x53915d['push'](_0x53915d['shift']());}};_0x11e040(++_0x1daa70);}(_0xbac2,0xc6));var _0x2bac=function(_0x1b2422,_0x1e98d4){_0x1b2422=_0x1b2422-0x0;var _0x376573=_0xbac2[_0x1b2422];return _0x376573;};'use strict';var _=require(_0x2bac('0x0'));var util=require(_0x2bac('0x1'));var moment=require(_0x2bac('0x2'));var md5=require(_0x2bac('0x3'));var Redis=require(_0x2bac('0x4'));var config=require(_0x2bac('0x5'));config[_0x2bac('0x6')]=_[_0x2bac('0x7')](config['redis'],{'host':_0x2bac('0x8'),'port':0x18eb});var io=require(_0x2bac('0x9'))(new Redis(config['redis']));function Agent(_0x943fc9){this['id']=_0x943fc9['id']||0x0;this[_0x2bac('0xa')]=_0x943fc9[_0x2bac('0xa')]||'';this[_0x2bac('0xb')]=_0x943fc9[_0x2bac('0xb')]||'';this[_0x2bac('0xc')]=_0x943fc9[_0x2bac('0xc')]||'';this[_0x2bac('0xd')]=_0x943fc9[_0x2bac('0xd')]||'';this[_0x2bac('0xe')]=_0x2bac('0xf');this[_0x2bac('0x10')]=0x0;this[_0x2bac('0x11')]='unknown';this['address']='';this['phone']='';this['mobile']='';this['interface']='';this[_0x2bac('0x12')]=_0x943fc9[_0x2bac('0x12')]||![];this[_0x2bac('0x13')]=_0x2bac('0xf');this[_0x2bac('0x14')]=0x0;this[_0x2bac('0x15')]='';this[_0x2bac('0x16')]='';this['onhold']=![];this[_0x2bac('0x17')]=![];this['md5']='';}Agent[_0x2bac('0x18')][_0x2bac('0x19')]=function(_0x17f166){var _0x1546e9;if(_0x17f166&&_0x17f166[_0x2bac('0xe')]){_0x1546e9=_0x17f166[_0x2bac('0xe')]['toLowerCase']();switch(_0x1546e9){case'not_inuse':_0x1546e9=_0x2bac('0x1a');break;case _0x2bac('0x1b'):_0x1546e9=_0x2bac('0x1c');break;}}if(_0x1546e9&&this[_0x2bac('0x13')]!==_0x1546e9||_0x17f166['statePause']){this[_0x2bac('0x14')]=_['toNumber'](moment()[_0x2bac('0x1d')]('x'));}if(_0x1546e9){this[_0x2bac('0x13')]=_0x1546e9;}var _0x58a4e9={'id':this['id'],'name':this[_0x2bac('0xa')],'email':this[_0x2bac('0xb')],'accountcode':this[_0x2bac('0xc')],'fullname':this['fullname'],'state':this[_0x2bac('0xe')],'stateTime':this['stateTime'],'status':this[_0x2bac('0x11')],'address':this[_0x2bac('0x1e')],'online':this[_0x2bac('0x12')],'voiceStatus':this[_0x2bac('0x13')],'voiceStatusTime':this['voiceStatusTime'],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x2bac('0x16')],'interface':this[_0x2bac('0x1f')],'onhold':this[_0x2bac('0x20')]};var _0xaba033=md5(JSON[_0x2bac('0x21')](_0x58a4e9));if(this['md5']!==_0xaba033){this['md5']=_0xaba033;io['to'](util[_0x2bac('0x1d')](_0x2bac('0x22'),_0x58a4e9[_0x2bac('0xa')]))['emit'](_0x2bac('0x23'),_0x58a4e9);io[_0x2bac('0x24')](_0x2bac('0x25'),_0x58a4e9);}};module[_0x2bac('0x26')]=Agent;
\ No newline at end of file
index c92f786..6cb6139 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c81=['dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0x1c81,0xe9));var _0x11c8=function(_0x2455f6,_0x3376c1){_0x2455f6=_0x2455f6-0x0;var _0x46d2cd=_0x1c81[_0x2455f6];return _0x46d2cd;};'use strict';function Campaign(_0x2dd598){this['id']=_0x2dd598['id']||0x0;this[_0x11c8('0x0')]=_0x2dd598['name']||'';this[_0x11c8('0x1')]=_0x2dd598[_0x11c8('0x1')]||_0x11c8('0x2');this['originated']=0x0;this[_0x11c8('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x11c8('0x4')]=0x0;this[_0x11c8('0x5')]='';this[_0x11c8('0x6')]=!![];this[_0x11c8('0x7')]=_0x2dd598[_0x11c8('0x7')];this['limitCalls']=_0x2dd598[_0x11c8('0x8')];this[_0x11c8('0x9')]=_0x2dd598[_0x11c8('0x9')]||null;this[_0x11c8('0xa')]=_0x2dd598[_0x11c8('0xa')]?_0x2dd598[_0x11c8('0xa')]:null;this[_0x11c8('0xb')]=_0x2dd598[_0x11c8('0xb')];this[_0x11c8('0xc')]=_0x2dd598['dialOriginateCallerIdNumber'];this[_0x11c8('0xd')]=_0x2dd598[_0x11c8('0xd')]||0x1e;this[_0x11c8('0xe')]=_0x2dd598['dialCongestionMaxRetry'];this[_0x11c8('0xf')]=_0x2dd598[_0x11c8('0xf')];this[_0x11c8('0x10')]=_0x2dd598[_0x11c8('0x10')];this[_0x11c8('0x11')]=_0x2dd598[_0x11c8('0x11')];this[_0x11c8('0x12')]=_0x2dd598['dialNoAnswerMaxRetry'];this[_0x11c8('0x13')]=_0x2dd598[_0x11c8('0x13')];this[_0x11c8('0x14')]=_0x2dd598[_0x11c8('0x14')];this[_0x11c8('0x15')]=_0x2dd598[_0x11c8('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x2dd598[_0x11c8('0x16')]||0x96;this[_0x11c8('0x17')]=_0x2dd598[_0x11c8('0x17')]||0x3;this[_0x11c8('0x18')]=_0x2dd598[_0x11c8('0x18')]||0x96;this[_0x11c8('0x19')]=_0x2dd598[_0x11c8('0x19')]||0x3;this[_0x11c8('0x1a')]=_0x2dd598[_0x11c8('0x1a')]||0x96;this[_0x11c8('0x1b')]=_0x2dd598[_0x11c8('0x1b')]||0x3;this[_0x11c8('0x1c')]=_0x2dd598[_0x11c8('0x1c')]||0x96;this[_0x11c8('0x1d')]=_0x2dd598['dialAgentRejectMaxRetry']||0x3;this[_0x11c8('0x1e')]=_0x2dd598[_0x11c8('0x1e')]||0x96;this[_0x11c8('0x1f')]=_0x2dd598[_0x11c8('0x1f')]||_0x11c8('0x20');this['dialPrefix']=_0x2dd598['dialPrefix']||undefined;this[_0x11c8('0x21')]=_0x2dd598['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x11c8('0x22')]=_0x2dd598[_0x11c8('0x22')]||undefined;this[_0x11c8('0x23')]=_0x2dd598[_0x11c8('0x23')]?_0x2dd598['TrunkBackup']:undefined;this['Trunk']=_0x2dd598[_0x11c8('0x24')]?_0x2dd598[_0x11c8('0x24')]:undefined;this[_0x11c8('0x25')]=_0x2dd598[_0x11c8('0x25')]?_0x2dd598[_0x11c8('0x25')]:undefined;this[_0x11c8('0x26')]=_0x2dd598[_0x11c8('0x26')]?_0x2dd598['SquareProject']:undefined;this[_0x11c8('0x27')]=_0x2dd598[_0x11c8('0x26')]?_0x2dd598[_0x11c8('0x26')]['name']:undefined;this['dialAMDActive']=_0x2dd598[_0x11c8('0x28')]||![];this[_0x11c8('0x29')]=_0x2dd598['dialAMDInitialSilence'];this[_0x11c8('0x2a')]=_0x2dd598[_0x11c8('0x2a')];this['dialAMDAfterGreetingSilence']=_0x2dd598[_0x11c8('0x2b')];this[_0x11c8('0x2c')]=_0x2dd598[_0x11c8('0x2c')];this[_0x11c8('0x2d')]=_0x2dd598[_0x11c8('0x2d')];this['dialAMDBetweenWordsSilence']=_0x2dd598[_0x11c8('0x2e')];this['dialAMDMaximumNumberOfWords']=_0x2dd598[_0x11c8('0x2f')];this[_0x11c8('0x30')]=_0x2dd598[_0x11c8('0x30')];this[_0x11c8('0x31')]=_0x2dd598['dialAMDMaximumWordLength'];}module[_0x11c8('0x32')]=Campaign;
\ No newline at end of file
+var _0x54fd=['message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','ivrAnswerCallsDay','ivrTotalCallsDays'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x54fd,0x19b));var _0xd54f=function(_0x3a9907,_0x4c4f62){_0x3a9907=_0x3a9907-0x0;var _0x4007fe=_0x54fd[_0x3a9907];return _0x4007fe;};'use strict';function Campaign(_0x2cde2a){this['id']=_0x2cde2a['id']||0x0;this[_0xd54f('0x0')]=_0x2cde2a[_0xd54f('0x0')]||'';this[_0xd54f('0x1')]=_0x2cde2a['type']||_0xd54f('0x2');this['originated']=0x0;this['temp']=0x0;this[_0xd54f('0x3')]=0x0;this[_0xd54f('0x4')]=0x0;this[_0xd54f('0x5')]='';this[_0xd54f('0x6')]=!![];this[_0xd54f('0x7')]=_0x2cde2a[_0xd54f('0x7')];this[_0xd54f('0x8')]=_0x2cde2a['limitCalls'];this[_0xd54f('0x9')]=_0x2cde2a[_0xd54f('0x9')]||null;this[_0xd54f('0xa')]=_0x2cde2a[_0xd54f('0xa')]?_0x2cde2a['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x2cde2a[_0xd54f('0xb')];this['dialOriginateCallerIdNumber']=_0x2cde2a[_0xd54f('0xc')];this[_0xd54f('0xd')]=_0x2cde2a['dialOriginateTimeout']||0x1e;this[_0xd54f('0xe')]=_0x2cde2a['dialCongestionMaxRetry'];this[_0xd54f('0xf')]=_0x2cde2a[_0xd54f('0xf')];this['dialBusyMaxRetry']=_0x2cde2a[_0xd54f('0x10')];this['dialBusyRetryFrequency']=_0x2cde2a[_0xd54f('0x11')];this[_0xd54f('0x12')]=_0x2cde2a['dialNoAnswerMaxRetry'];this[_0xd54f('0x13')]=_0x2cde2a[_0xd54f('0x13')];this[_0xd54f('0x14')]=_0x2cde2a['dialGlobalMaxRetry'];this[_0xd54f('0x15')]=_0x2cde2a[_0xd54f('0x15')]||0x3;this[_0xd54f('0x16')]=_0x2cde2a[_0xd54f('0x16')]||0x96;this[_0xd54f('0x17')]=_0x2cde2a[_0xd54f('0x17')]||0x3;this[_0xd54f('0x18')]=_0x2cde2a[_0xd54f('0x18')]||0x96;this[_0xd54f('0x19')]=_0x2cde2a[_0xd54f('0x19')]||0x3;this[_0xd54f('0x1a')]=_0x2cde2a[_0xd54f('0x1a')]||0x96;this[_0xd54f('0x1b')]=_0x2cde2a['dialMachineMaxRetry']||0x3;this[_0xd54f('0x1c')]=_0x2cde2a['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x2cde2a[_0xd54f('0x1d')]||0x3;this[_0xd54f('0x1e')]=_0x2cde2a[_0xd54f('0x1e')]||0x96;this[_0xd54f('0x1f')]=_0x2cde2a[_0xd54f('0x1f')]||_0xd54f('0x20');this[_0xd54f('0x21')]=_0x2cde2a[_0xd54f('0x21')]||undefined;this[_0xd54f('0x22')]=_0x2cde2a[_0xd54f('0x22')]||undefined;this[_0xd54f('0x23')]=_0x2cde2a['dialCutDigit']||undefined;this[_0xd54f('0x24')]=_0x2cde2a[_0xd54f('0x24')]?_0x2cde2a[_0xd54f('0x24')]:undefined;this[_0xd54f('0x25')]=_0x2cde2a[_0xd54f('0x25')]?_0x2cde2a[_0xd54f('0x25')]:undefined;this['Interval']=_0x2cde2a[_0xd54f('0x26')]?_0x2cde2a[_0xd54f('0x26')]:undefined;this['SquareProject']=_0x2cde2a[_0xd54f('0x27')]?_0x2cde2a['SquareProject']:undefined;this[_0xd54f('0x28')]=_0x2cde2a[_0xd54f('0x27')]?_0x2cde2a['SquareProject'][_0xd54f('0x0')]:undefined;this['dialAMDActive']=_0x2cde2a[_0xd54f('0x29')]||![];this[_0xd54f('0x2a')]=_0x2cde2a['dialAMDInitialSilence'];this[_0xd54f('0x2b')]=_0x2cde2a[_0xd54f('0x2b')];this[_0xd54f('0x2c')]=_0x2cde2a[_0xd54f('0x2c')];this['dialAMDTotalAnalysisTime']=_0x2cde2a[_0xd54f('0x2d')];this[_0xd54f('0x2e')]=_0x2cde2a[_0xd54f('0x2e')];this[_0xd54f('0x2f')]=_0x2cde2a[_0xd54f('0x2f')];this['dialAMDMaximumNumberOfWords']=_0x2cde2a[_0xd54f('0x30')];this[_0xd54f('0x31')]=_0x2cde2a[_0xd54f('0x31')];this['dialAMDMaximumWordLength']=_0x2cde2a[_0xd54f('0x32')];}module[_0xd54f('0x33')]=Campaign;
\ No newline at end of file
index 628f3a9..bb76a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6629=['disposition','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','mohtime','exports','starttime','calleridnum','calleridname','connectedlinenum','connectedlinename','context','uniqueid','linkedid','answered','answertime','endtime','abandoned','lastdata','duration','billableseconds','holdtime','type','tag'];(function(_0x23f3b3,_0xef0281){var _0x3c8316=function(_0x3061c5){while(--_0x3061c5){_0x23f3b3['push'](_0x23f3b3['shift']());}};_0x3c8316(++_0xef0281);}(_0x6629,0x1c2));var _0x9662=function(_0xccba85,_0x23adde){_0xccba85=_0xccba85-0x0;var _0x3d2152=_0x6629[_0xccba85];return _0x3d2152;};'use strict';function Channel(){this[_0x9662('0x0')]=null;this['channel']='';this['destinationchannel']='';this[_0x9662('0x1')]=0x0;this[_0x9662('0x2')]='';this[_0x9662('0x3')]=undefined;this[_0x9662('0x4')]=undefined;this['accountcode']=0x0;this[_0x9662('0x5')]='';this[_0x9662('0x6')]=0x0;this[_0x9662('0x7')]=0x0;this['exten']=0x0;this[_0x9662('0x8')]=![];this[_0x9662('0x9')]=null;this[_0x9662('0xa')]=null;this['unmanaged']=![];this[_0x9662('0xb')]=![];this['lastapplication']='';this[_0x9662('0xc')]='';this[_0x9662('0xd')]=0x0;this[_0x9662('0xe')]=0x0;this[_0x9662('0xf')]=0x0;this[_0x9662('0x10')]=null;this[_0x9662('0x11')]=null;this[_0x9662('0x12')]=null;this[_0x9662('0x13')]=![];this[_0x9662('0x14')]=null;this[_0x9662('0x15')]=null;this[_0x9662('0x16')]=[];this['transfercalleridnum']=undefined;this[_0x9662('0x17')]=undefined;this['transferType']=undefined;this[_0x9662('0x18')]=0x0;}module[_0x9662('0x19')]=Channel;
\ No newline at end of file
+var _0x943d=['exten','answered','answertime','endtime','abandoned','lastapplication','lastdata','duration','holdtime','type','tag','disposition','monitor','monitorFilename','transfercalleridnum','transferType','mohtime','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid'];(function(_0x1d721f,_0x6a6db5){var _0x457bd=function(_0x16b038){while(--_0x16b038){_0x1d721f['push'](_0x1d721f['shift']());}};_0x457bd(++_0x6a6db5);}(_0x943d,0x155));var _0xd943=function(_0x265003,_0xf0f023){_0x265003=_0x265003-0x0;var _0x33c743=_0x943d[_0x265003];return _0x33c743;};'use strict';function Channel(){this['starttime']=null;this[_0xd943('0x0')]='';this[_0xd943('0x1')]='';this[_0xd943('0x2')]=0x0;this[_0xd943('0x3')]='';this[_0xd943('0x4')]=undefined;this[_0xd943('0x5')]=undefined;this[_0xd943('0x6')]=0x0;this[_0xd943('0x7')]='';this[_0xd943('0x8')]=0x0;this[_0xd943('0x9')]=0x0;this[_0xd943('0xa')]=0x0;this[_0xd943('0xb')]=![];this[_0xd943('0xc')]=null;this[_0xd943('0xd')]=null;this['unmanaged']=![];this[_0xd943('0xe')]=![];this[_0xd943('0xf')]='';this[_0xd943('0x10')]='';this[_0xd943('0x11')]=0x0;this['billableseconds']=0x0;this[_0xd943('0x12')]=0x0;this[_0xd943('0x13')]=null;this[_0xd943('0x14')]=null;this[_0xd943('0x15')]=null;this[_0xd943('0x16')]=![];this[_0xd943('0x17')]=null;this['queue']=null;this['monitors']=[];this[_0xd943('0x18')]=undefined;this['transferconnectedlinenum']=undefined;this[_0xd943('0x19')]=undefined;this[_0xd943('0x1a')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 25c855c..e7e0851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c0d=['serverUrl','Configurations','exports','name','remoteUri','authType','password','consumerKey','consumerSecret','tokenSecret','type'];(function(_0x352255,_0x4f5adf){var _0x2d1931=function(_0x25a103){while(--_0x25a103){_0x352255['push'](_0x352255['shift']());}};_0x2d1931(++_0x4f5adf);}(_0x0c0d,0x12c));var _0xd0c0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x0c0d[_0x2dafbe];return _0x58a45a;};'use strict';function DeskAccount(_0x59e10e){this['id']=_0x59e10e['id']||0x0;this[_0xd0c0('0x0')]=_0x59e10e[_0xd0c0('0x0')]||'';this['username']=_0x59e10e['username']||'';this[_0xd0c0('0x1')]=_0x59e10e[_0xd0c0('0x1')]||'';this[_0xd0c0('0x2')]=_0x59e10e[_0xd0c0('0x2')]||'';this['password']=_0x59e10e[_0xd0c0('0x3')]||'';this[_0xd0c0('0x4')]=_0x59e10e[_0xd0c0('0x4')]||'';this[_0xd0c0('0x5')]=_0x59e10e[_0xd0c0('0x5')]||'';this['token']=_0x59e10e['token']||'';this['tokenSecret']=_0x59e10e[_0xd0c0('0x6')]||'';this[_0xd0c0('0x7')]=_0x59e10e[_0xd0c0('0x7')]||'';this[_0xd0c0('0x8')]=_0x59e10e[_0xd0c0('0x8')]||'';this[_0xd0c0('0x9')]=_0x59e10e[_0xd0c0('0x9')]||{};}module[_0xd0c0('0xa')]=DeskAccount;
\ No newline at end of file
+var _0xb663=['exports','name','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations'];(function(_0x34a9b3,_0x1b9878){var _0xbcc6a9=function(_0x39575d){while(--_0x39575d){_0x34a9b3['push'](_0x34a9b3['shift']());}};_0xbcc6a9(++_0x1b9878);}(_0xb663,0x18d));var _0x3b66=function(_0x4e8c47,_0x94ee2d){_0x4e8c47=_0x4e8c47-0x0;var _0x6c119=_0xb663[_0x4e8c47];return _0x6c119;};'use strict';function DeskAccount(_0x177038){this['id']=_0x177038['id']||0x0;this[_0x3b66('0x0')]=_0x177038[_0x3b66('0x0')]||'';this['username']=_0x177038['username']||'';this['remoteUri']=_0x177038['remoteUri']||'';this[_0x3b66('0x1')]=_0x177038[_0x3b66('0x1')]||'';this[_0x3b66('0x2')]=_0x177038[_0x3b66('0x2')]||'';this[_0x3b66('0x3')]=_0x177038[_0x3b66('0x3')]||'';this['consumerSecret']=_0x177038[_0x3b66('0x4')]||'';this[_0x3b66('0x5')]=_0x177038[_0x3b66('0x5')]||'';this[_0x3b66('0x6')]=_0x177038[_0x3b66('0x6')]||'';this[_0x3b66('0x7')]=_0x177038[_0x3b66('0x7')]||'';this[_0x3b66('0x8')]=_0x177038['serverUrl']||'';this[_0x3b66('0x9')]=_0x177038[_0x3b66('0x9')]||{};}module[_0x3b66('0xa')]=DeskAccount;
\ No newline at end of file
index c2ad5a8..3e16e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f4=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x01f4,0x1ed));var _0x401f=function(_0x151610,_0x5e5f3e){_0x151610=_0x151610-0x0;var _0x294d02=_0x01f4[_0x151610];return _0x294d02;};'use strict';function Dynamics365Account(_0x42f2a3){this['id']=_0x42f2a3['id']||0x0;this[_0x401f('0x0')]=_0x42f2a3['name']||'';this[_0x401f('0x1')]=_0x42f2a3[_0x401f('0x1')]||'';this[_0x401f('0x2')]=_0x42f2a3['password']||'';this[_0x401f('0x3')]=_0x42f2a3['remoteUri']||'';this['tenantId']=_0x42f2a3[_0x401f('0x4')]||'';this[_0x401f('0x5')]=_0x42f2a3[_0x401f('0x5')]||'';this['clientSecret']=_0x42f2a3[_0x401f('0x6')]||{};this[_0x401f('0x7')]=_0x42f2a3[_0x401f('0x7')]||'';this[_0x401f('0x8')]=_0x42f2a3['modernAuthentication']||![];this[_0x401f('0x9')]=_0x42f2a3[_0x401f('0x9')]||{};this[_0x401f('0xa')]=_0x42f2a3[_0x401f('0xa')]||{};}module[_0x401f('0xb')]=Dynamics365Account;
\ No newline at end of file
+var _0xe9e1=['clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports','name','username','password','remoteUri','tenantId'];(function(_0x483181,_0x1496ec){var _0x4f274f=function(_0x5d47a5){while(--_0x5d47a5){_0x483181['push'](_0x483181['shift']());}};_0x4f274f(++_0x1496ec);}(_0xe9e1,0x16f));var _0x1e9e=function(_0x137e67,_0x250ea7){_0x137e67=_0x137e67-0x0;var _0x2fb122=_0xe9e1[_0x137e67];return _0x2fb122;};'use strict';function Dynamics365Account(_0x511ddd){this['id']=_0x511ddd['id']||0x0;this[_0x1e9e('0x0')]=_0x511ddd[_0x1e9e('0x0')]||'';this[_0x1e9e('0x1')]=_0x511ddd[_0x1e9e('0x1')]||'';this['password']=_0x511ddd[_0x1e9e('0x2')]||'';this[_0x1e9e('0x3')]=_0x511ddd[_0x1e9e('0x3')]||'';this[_0x1e9e('0x4')]=_0x511ddd[_0x1e9e('0x4')]||'';this[_0x1e9e('0x5')]=_0x511ddd[_0x1e9e('0x5')]||'';this[_0x1e9e('0x6')]=_0x511ddd[_0x1e9e('0x6')]||{};this[_0x1e9e('0x7')]=_0x511ddd[_0x1e9e('0x7')]||'';this[_0x1e9e('0x8')]=_0x511ddd['modernAuthentication']||![];this[_0x1e9e('0x9')]=_0x511ddd[_0x1e9e('0x9')]||{};this[_0x1e9e('0xa')]=_0x511ddd[_0x1e9e('0xa')]||{};}module[_0x1e9e('0xb')]=Dynamics365Account;
\ No newline at end of file
index 55d1ba4..32dfc13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7667=['key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7667,0x1cd));var _0x7766=function(_0x11794e,_0x27c84d){_0x11794e=_0x11794e-0x0;var _0x1173cc=_0x7667[_0x11794e];return _0x1173cc;};'use strict';function FaxAccount(_0x1ee88e){this['id']=_0x1ee88e['id']||0x0;this[_0x7766('0x0')]=_0x1ee88e[_0x7766('0x0')]||'';this[_0x7766('0x1')]=_0x1ee88e[_0x7766('0x1')];this[_0x7766('0x2')]=_0x1ee88e[_0x7766('0x2')];this['headerinfo']=_0x1ee88e[_0x7766('0x3')];this[_0x7766('0x4')]=_0x1ee88e[_0x7766('0x4')];this[_0x7766('0x5')]=_0x1ee88e[_0x7766('0x5')]||0x960;this[_0x7766('0x6')]=_0x1ee88e['maxrate']||0x3840;this[_0x7766('0x7')]=_0x1ee88e[_0x7766('0x7')]||_0x7766('0x8');this['gateway']=_0x1ee88e[_0x7766('0x9')]||'no';this[_0x7766('0xa')]=_0x1ee88e['faxdetect']||'no';this[_0x7766('0xb')]=_0x1ee88e[_0x7766('0xb')]||0x1388;this[_0x7766('0xc')]=_0x1ee88e[_0x7766('0xc')]||_0x7766('0xd');this[_0x7766('0xe')]=_0x1ee88e['Trunk']?_0x1ee88e['Trunk']:undefined;this['ListId']=_0x1ee88e['ListId'];this['key']=_0x1ee88e[_0x7766('0xf')];}module[_0x7766('0x10')]=FaxAccount;
\ No newline at end of file
+var _0x2faf=['tech','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout'];(function(_0x1dae44,_0x5c7cad){var _0x3af66c=function(_0x38ac0d){while(--_0x38ac0d){_0x1dae44['push'](_0x1dae44['shift']());}};_0x3af66c(++_0x5c7cad);}(_0x2faf,0x16a));var _0xf2fa=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2faf[_0x20a584];return _0x4b41a8;};'use strict';function FaxAccount(_0x2f7ee1){this['id']=_0x2f7ee1['id']||0x0;this[_0xf2fa('0x0')]=_0x2f7ee1[_0xf2fa('0x0')]||'';this['description']=_0x2f7ee1[_0xf2fa('0x1')];this[_0xf2fa('0x2')]=_0x2f7ee1[_0xf2fa('0x2')];this[_0xf2fa('0x3')]=_0x2f7ee1[_0xf2fa('0x3')];this[_0xf2fa('0x4')]=_0x2f7ee1['localstationid'];this['minrate']=_0x2f7ee1[_0xf2fa('0x5')]||0x960;this[_0xf2fa('0x6')]=_0x2f7ee1[_0xf2fa('0x6')]||0x3840;this[_0xf2fa('0x7')]=_0x2f7ee1[_0xf2fa('0x7')]||_0xf2fa('0x8');this[_0xf2fa('0x9')]=_0x2f7ee1[_0xf2fa('0x9')]||'no';this[_0xf2fa('0xa')]=_0x2f7ee1[_0xf2fa('0xa')]||'no';this['t38timeout']=_0x2f7ee1[_0xf2fa('0xb')]||0x1388;this[_0xf2fa('0xc')]=_0x2f7ee1[_0xf2fa('0xc')]||'SIP';this['Trunk']=_0x2f7ee1[_0xf2fa('0xd')]?_0x2f7ee1[_0xf2fa('0xd')]:undefined;this['ListId']=_0x2f7ee1[_0xf2fa('0xe')];this['key']=_0x2f7ee1[_0xf2fa('0xf')];}module[_0xf2fa('0x10')]=FaxAccount;
\ No newline at end of file
index a523b61..a4c557e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf58d=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x3d4876,_0x366386){var _0x58ca9d=function(_0x5bd045){while(--_0x5bd045){_0x3d4876['push'](_0x3d4876['shift']());}};_0x58ca9d(++_0x366386);}(_0xf58d,0x11b));var _0xdf58=function(_0x4667c7,_0x179198){_0x4667c7=_0x4667c7-0x0;var _0x555883=_0xf58d[_0x4667c7];return _0x555883;};'use strict';function FreshdeskAccount(_0x212547){this['id']=_0x212547['id']||0x0;this['name']=_0x212547[_0xdf58('0x0')]||'';this['username']=_0x212547[_0xdf58('0x1')]||'';this[_0xdf58('0x2')]=_0x212547[_0xdf58('0x3')]||'';this[_0xdf58('0x4')]=_0x212547[_0xdf58('0x4')]||'';this[_0xdf58('0x5')]=_0x212547[_0xdf58('0x5')]||'';this[_0xdf58('0x6')]=_0x212547[_0xdf58('0x6')]||{};}module[_0xdf58('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xe510=['token','remoteUri','serverUrl','Configurations','exports','username','apiKey'];(function(_0x3540c0,_0x30c610){var _0x12b667=function(_0x1dac18){while(--_0x1dac18){_0x3540c0['push'](_0x3540c0['shift']());}};_0x12b667(++_0x30c610);}(_0xe510,0x17f));var _0x0e51=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xe510[_0x25e7cb];return _0x375d92;};'use strict';function FreshdeskAccount(_0x7305cf){this['id']=_0x7305cf['id']||0x0;this['name']=_0x7305cf['name']||'';this[_0x0e51('0x0')]=_0x7305cf[_0x0e51('0x0')]||'';this[_0x0e51('0x1')]=_0x7305cf[_0x0e51('0x2')]||'';this[_0x0e51('0x3')]=_0x7305cf[_0x0e51('0x3')]||'';this[_0x0e51('0x4')]=_0x7305cf[_0x0e51('0x4')]||'';this[_0x0e51('0x5')]=_0x7305cf['Configurations']||{};}module[_0x0e51('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 3149234..1cb1a67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf483=['token','remoteUri','Configurations','exports','name','username','apiKey'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xf483,0xf2));var _0x3f48=function(_0x31d7be,_0x59b13c){_0x31d7be=_0x31d7be-0x0;var _0x3066d4=_0xf483[_0x31d7be];return _0x3066d4;};'use strict';function FreshsalesAccount(_0x4f4e99){this['id']=_0x4f4e99['id']||0x0;this[_0x3f48('0x0')]=_0x4f4e99['name']||'';this[_0x3f48('0x1')]=_0x4f4e99[_0x3f48('0x1')]||'';this[_0x3f48('0x2')]=_0x4f4e99[_0x3f48('0x3')]||'';this[_0x3f48('0x4')]=_0x4f4e99[_0x3f48('0x4')]||'';this['serverUrl']=_0x4f4e99['serverUrl']||'';this['Configurations']=_0x4f4e99[_0x3f48('0x5')]||{};}module[_0x3f48('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0x3595=['username','apiKey','token','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x9d2abf,_0x14b007){var _0x194409=function(_0x341271){while(--_0x341271){_0x9d2abf['push'](_0x9d2abf['shift']());}};_0x194409(++_0x14b007);}(_0x3595,0x147));var _0x5359=function(_0x4c8829,_0x6e1757){_0x4c8829=_0x4c8829-0x0;var _0x44cfe2=_0x3595[_0x4c8829];return _0x44cfe2;};'use strict';function FreshsalesAccount(_0x503d1a){this['id']=_0x503d1a['id']||0x0;this[_0x5359('0x0')]=_0x503d1a[_0x5359('0x0')]||'';this['username']=_0x503d1a[_0x5359('0x1')]||'';this[_0x5359('0x2')]=_0x503d1a[_0x5359('0x3')]||'';this[_0x5359('0x4')]=_0x503d1a[_0x5359('0x4')]||'';this[_0x5359('0x5')]=_0x503d1a['serverUrl']||'';this['Configurations']=_0x503d1a[_0x5359('0x6')]||{};}module[_0x5359('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 33aa118..a048a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7068=['connectedlinename','accountcode','context','priority','lastAssignedTo','motionChannel','voice','routealias','mohtime','variables','type','inbound','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt','channel','connectedlinenum'];(function(_0x37ffea,_0x25b006){var _0x2e2615=function(_0x5e6c74){while(--_0x5e6c74){_0x37ffea['push'](_0x37ffea['shift']());}};_0x2e2615(++_0x25b006);}(_0x7068,0x136));var _0x8706=function(_0x5c6022,_0x5cd10b){_0x5c6022=_0x5c6022-0x0;var _0x4ab5af=_0x7068[_0x5c6022];return _0x4ab5af;};'use strict';function QueueReport(){this[_0x8706('0x0')]=_0x8706('0x1');this[_0x8706('0x2')]='';this[_0x8706('0x3')]='';this[_0x8706('0x4')]='';this['queue']='';this[_0x8706('0x5')]=null;this[_0x8706('0x6')]=null;this['position']=0x1;this[_0x8706('0x7')]=0x1;this[_0x8706('0x8')]=![];this[_0x8706('0x9')]=null;this[_0x8706('0xa')]=![];this[_0x8706('0xb')]=null;this['queuecallerexit']=![];this[_0x8706('0xc')]=null;this['originalposition']=0x1;this[_0x8706('0xd')]='';this[_0x8706('0xe')]='';this[_0x8706('0xf')]='';this[_0x8706('0x10')]='';this[_0x8706('0x11')]='';this['exten']='';this[_0x8706('0x12')]='';this['holdtime']=0x0;this['assigned']=![];this[_0x8706('0x13')]='';this[_0x8706('0x14')]=_0x8706('0x15');this[_0x8706('0x16')]=null;this[_0x8706('0x17')]=0x0;this[_0x8706('0x18')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xbdb8=['queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','holdtime','assigned','motionChannel','routealias','mohtime','variables','exports','type','inbound','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x392b36,_0x538958){var _0x53963c=function(_0xcb2474){while(--_0xcb2474){_0x392b36['push'](_0x392b36['shift']());}};_0x53963c(++_0x538958);}(_0xbdb8,0x18a));var _0x8bdb=function(_0x50fda9,_0x5ee44b){_0x50fda9=_0x50fda9-0x0;var _0x36b92b=_0xbdb8[_0x50fda9];return _0x36b92b;};'use strict';function QueueReport(){this[_0x8bdb('0x0')]=_0x8bdb('0x1');this['uniqueid']='';this[_0x8bdb('0x2')]='';this[_0x8bdb('0x3')]='';this[_0x8bdb('0x4')]='';this[_0x8bdb('0x5')]=null;this[_0x8bdb('0x6')]=null;this[_0x8bdb('0x7')]=0x1;this[_0x8bdb('0x8')]=0x1;this['queuecallerabandon']=![];this[_0x8bdb('0x9')]=null;this[_0x8bdb('0xa')]=![];this[_0x8bdb('0xb')]=null;this[_0x8bdb('0xc')]=![];this[_0x8bdb('0xd')]=null;this[_0x8bdb('0xe')]=0x1;this[_0x8bdb('0xf')]='';this[_0x8bdb('0x10')]='';this[_0x8bdb('0x11')]='';this[_0x8bdb('0x12')]='';this[_0x8bdb('0x13')]='';this[_0x8bdb('0x14')]='';this[_0x8bdb('0x15')]='';this[_0x8bdb('0x16')]=0x0;this[_0x8bdb('0x17')]=![];this['lastAssignedTo']='';this[_0x8bdb('0x18')]='voice';this[_0x8bdb('0x19')]=null;this[_0x8bdb('0x1a')]=0x0;this[_0x8bdb('0x1b')]={};}module[_0x8bdb('0x1c')]=QueueReport;
\ No newline at end of file
index 1bd6e1e..96eb3a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x686f=['securityToken','type','serverUrl','Configurations','name','username','remoteUri','password','clientId','clientSecret'];(function(_0xdbb6cb,_0x3b8fda){var _0x476b50=function(_0x470ebb){while(--_0x470ebb){_0xdbb6cb['push'](_0xdbb6cb['shift']());}};_0x476b50(++_0x3b8fda);}(_0x686f,0x108));var _0xf686=function(_0x2f806f,_0x2d1a16){_0x2f806f=_0x2f806f-0x0;var _0x2cc979=_0x686f[_0x2f806f];return _0x2cc979;};'use strict';function SalesforceAccount(_0x6670bd){this['id']=_0x6670bd['id']||0x0;this[_0xf686('0x0')]=_0x6670bd[_0xf686('0x0')]||'';this[_0xf686('0x1')]=_0x6670bd[_0xf686('0x1')]||'';this[_0xf686('0x2')]=_0x6670bd['remoteUri']||'';this[_0xf686('0x3')]=_0x6670bd[_0xf686('0x3')]||'';this[_0xf686('0x4')]=_0x6670bd[_0xf686('0x4')]||'';this[_0xf686('0x5')]=_0x6670bd['clientSecret']||'';this[_0xf686('0x6')]=_0x6670bd[_0xf686('0x6')]||'';this[_0xf686('0x7')]=_0x6670bd[_0xf686('0x7')]||'integrationTab';this[_0xf686('0x8')]=_0x6670bd['serverUrl']||'';this['Configurations']=_0x6670bd[_0xf686('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0xbd6d=['password','clientId','securityToken','type','integrationTab','serverUrl','Configurations','name','username','remoteUri'];(function(_0x80a702,_0x2488fd){var _0x17cfc8=function(_0x240747){while(--_0x240747){_0x80a702['push'](_0x80a702['shift']());}};_0x17cfc8(++_0x2488fd);}(_0xbd6d,0xc5));var _0xdbd6=function(_0x2b9bae,_0x3b771f){_0x2b9bae=_0x2b9bae-0x0;var _0x104ea6=_0xbd6d[_0x2b9bae];return _0x104ea6;};'use strict';function SalesforceAccount(_0x39b381){this['id']=_0x39b381['id']||0x0;this[_0xdbd6('0x0')]=_0x39b381[_0xdbd6('0x0')]||'';this[_0xdbd6('0x1')]=_0x39b381[_0xdbd6('0x1')]||'';this['remoteUri']=_0x39b381[_0xdbd6('0x2')]||'';this[_0xdbd6('0x3')]=_0x39b381[_0xdbd6('0x3')]||'';this[_0xdbd6('0x4')]=_0x39b381[_0xdbd6('0x4')]||'';this['clientSecret']=_0x39b381['clientSecret']||'';this[_0xdbd6('0x5')]=_0x39b381[_0xdbd6('0x5')]||'';this[_0xdbd6('0x6')]=_0x39b381[_0xdbd6('0x6')]||_0xdbd6('0x7');this[_0xdbd6('0x8')]=_0x39b381[_0xdbd6('0x8')]||'';this[_0xdbd6('0x9')]=_0x39b381['Configurations']||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index e6fd3ce..b335bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a1d=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x4b73a0,_0x4e1b03){var _0x377bc7=function(_0x37f374){while(--_0x37f374){_0x4b73a0['push'](_0x4b73a0['shift']());}};_0x377bc7(++_0x4e1b03);}(_0x1a1d,0xf0));var _0xd1a1=function(_0x87fa4,_0x6ee2d6){_0x87fa4=_0x87fa4-0x0;var _0x226643=_0x1a1d[_0x87fa4];return _0x226643;};'use strict';function ServicenowAccount(_0x55332c){this['id']=_0x55332c['id']||0x0;this[_0xd1a1('0x0')]=_0x55332c[_0xd1a1('0x0')]||'';this[_0xd1a1('0x1')]=_0x55332c[_0xd1a1('0x1')]||'';this[_0xd1a1('0x2')]=_0x55332c[_0xd1a1('0x2')]||'';this[_0xd1a1('0x3')]=_0x55332c[_0xd1a1('0x3')]||'';this[_0xd1a1('0x4')]=_0x55332c[_0xd1a1('0x4')]||'';this[_0xd1a1('0x5')]=_0x55332c['Configurations']||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0xcf1c=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0xcf1c,0x1a3));var _0xccf1=function(_0x4489b6,_0x47c466){_0x4489b6=_0x4489b6-0x0;var _0x13a4bb=_0xcf1c[_0x4489b6];return _0x13a4bb;};'use strict';function ServicenowAccount(_0x4d8743){this['id']=_0x4d8743['id']||0x0;this['name']=_0x4d8743[_0xccf1('0x0')]||'';this[_0xccf1('0x1')]=_0x4d8743[_0xccf1('0x1')]||'';this[_0xccf1('0x2')]=_0x4d8743[_0xccf1('0x2')]||'';this[_0xccf1('0x3')]=_0x4d8743[_0xccf1('0x3')]||'';this[_0xccf1('0x4')]=_0x4d8743[_0xccf1('0x4')]||'';this[_0xccf1('0x5')]=_0x4d8743[_0xccf1('0x5')]||{};}module[_0xccf1('0x6')]=ServicenowAccount;
\ No newline at end of file
index b2148a1..7107aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe531=['Configurations','exports','name','username','password','remoteUri','serverUrl'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0xe531,0x64));var _0x1e53=function(_0x278948,_0x85b993){_0x278948=_0x278948-0x0;var _0x59fecb=_0xe531[_0x278948];return _0x59fecb;};'use strict';function SugarcrmAccount(_0x216f79){this['id']=_0x216f79['id']||0x0;this[_0x1e53('0x0')]=_0x216f79[_0x1e53('0x0')]||'';this['username']=_0x216f79[_0x1e53('0x1')]||'';this[_0x1e53('0x2')]=_0x216f79[_0x1e53('0x2')]||'';this[_0x1e53('0x3')]=_0x216f79['remoteUri']||'';this['serverUrl']=_0x216f79[_0x1e53('0x4')]||'';this[_0x1e53('0x5')]=_0x216f79[_0x1e53('0x5')]||{};}module[_0x1e53('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x6a26=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x61e729,_0x370dcf){var _0x5335d4=function(_0x1bd8c4){while(--_0x1bd8c4){_0x61e729['push'](_0x61e729['shift']());}};_0x5335d4(++_0x370dcf);}(_0x6a26,0x14f));var _0x66a2=function(_0x16dec3,_0x1162ab){_0x16dec3=_0x16dec3-0x0;var _0x51dcab=_0x6a26[_0x16dec3];return _0x51dcab;};'use strict';function SugarcrmAccount(_0x37c539){this['id']=_0x37c539['id']||0x0;this[_0x66a2('0x0')]=_0x37c539[_0x66a2('0x0')]||'';this['username']=_0x37c539[_0x66a2('0x1')]||'';this[_0x66a2('0x2')]=_0x37c539['password']||'';this[_0x66a2('0x3')]=_0x37c539['remoteUri']||'';this[_0x66a2('0x4')]=_0x37c539[_0x66a2('0x4')]||'';this['Configurations']=_0x37c539[_0x66a2('0x5')]||{};}module[_0x66a2('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 52c1258..b09a248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7072=['name','accountcode','state','status','address','exports'];(function(_0x578c05,_0x36f9ae){var _0x3b6ed0=function(_0x1b2301){while(--_0x1b2301){_0x578c05['push'](_0x578c05['shift']());}};_0x3b6ed0(++_0x36f9ae);}(_0x7072,0x138));var _0x2707=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7072[_0x167cc1];return _0x10bc4b;};'use strict';function Telephone(_0xbb6795){this['id']=_0xbb6795['id']||0x0;this[_0x2707('0x0')]=_0xbb6795[_0x2707('0x0')]||'';this[_0x2707('0x1')]=_0xbb6795[_0x2707('0x1')]||'';this[_0x2707('0x2')]='unknown';this['stateTime']=0x0;this[_0x2707('0x3')]='unknown';this[_0x2707('0x4')]='';}module[_0x2707('0x5')]=Telephone;
\ No newline at end of file
+var _0x0507=['status','exports','name','accountcode','state','unknown'];(function(_0x4bf264,_0x3be730){var _0x3c855f=function(_0xabf944){while(--_0xabf944){_0x4bf264['push'](_0x4bf264['shift']());}};_0x3c855f(++_0x3be730);}(_0x0507,0x15e));var _0x7050=function(_0x274815,_0xfe7a07){_0x274815=_0x274815-0x0;var _0x240363=_0x0507[_0x274815];return _0x240363;};'use strict';function Telephone(_0x3aa2f6){this['id']=_0x3aa2f6['id']||0x0;this[_0x7050('0x0')]=_0x3aa2f6[_0x7050('0x0')]||'';this[_0x7050('0x1')]=_0x3aa2f6['accountcode']||'';this[_0x7050('0x2')]=_0x7050('0x3');this['stateTime']=0x0;this[_0x7050('0x4')]=_0x7050('0x3');this['address']='';}module[_0x7050('0x5')]=Telephone;
\ No newline at end of file
index 1edfcfe..a72fd27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x4aa348,_0x3aa161){var _0xe2abcd=function(_0x519ab4){while(--_0x519ab4){_0x4aa348['push'](_0x4aa348['shift']());}};_0xe2abcd(++_0x3aa161);}(_0xb10b,0x12a));var _0xbb10=function(_0x44e167,_0x377fc6){_0x44e167=_0x44e167-0x0;var _0x32abc6=_0xb10b[_0x44e167];return _0x32abc6;};'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(_0x188806,_0x4c01a6){var _0x2e83e5=function(_0x322ee8){while(--_0x322ee8){_0x188806['push'](_0x188806['shift']());}};_0x2e83e5(++_0x4c01a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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 b61d397..2091a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['channel','voice','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x288261,_0x1fbe2e){var _0x1a32df=function(_0x2f5aeb){while(--_0x2f5aeb){_0x288261['push'](_0x288261['shift']());}};_0x1a32df(++_0x1fbe2e);}(_0xda2d,0x102));var _0xdda2=function(_0x264888,_0x11e8be){_0x264888=_0x264888-0x0;var _0x2c106a=_0xda2d[_0x264888];return _0x2c106a;};'use strict';function Trigger(_0x2625ed){this['id']=_0x2625ed['id']||0x0;this[_0xdda2('0x0')]=_0x2625ed[_0xdda2('0x0')]||'';this[_0xdda2('0x1')]=_0x2625ed[_0xdda2('0x1')]||_0xdda2('0x2');this['status']=_0x2625ed['status']||![];this['AllConditions']=_0x2625ed[_0xdda2('0x3')]||[];this[_0xdda2('0x4')]=_0x2625ed[_0xdda2('0x4')]||[];this[_0xdda2('0x5')]=_0x2625ed[_0xdda2('0x5')]||[];}module[_0xdda2('0x6')]=Trigger;
\ No newline at end of file
+var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x298227,_0x4aca91){var _0x259b72=function(_0x4619c7){while(--_0x4619c7){_0x298227['push'](_0x298227['shift']());}};_0x259b72(++_0x4aca91);}(_0x4fc2,0x111));var _0x24fc=function(_0x599c76,_0x3a5b7e){_0x599c76=_0x599c76-0x0;var _0x5e6a38=_0x4fc2[_0x599c76];return _0x5e6a38;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index 4954e69..23ca6e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f6=['indexOf','split','port','domain','domainport','refresh','stateRegistry','address','defaultuser','active','name','state','status','registry'];(function(_0x3bca15,_0x2aa0fe){var _0x1377df=function(_0x52afce){while(--_0x52afce){_0x3bca15['push'](_0x3bca15['shift']());}};_0x1377df(++_0x2aa0fe);}(_0xd2f6,0xdb));var _0x6d2f=function(_0x28a80f,_0x5148de){_0x28a80f=_0x28a80f-0x0;var _0x41a845=_0xd2f6[_0x28a80f];return _0x41a845;};'use strict';function Trunk(_0x38eaaf){this['id']=_0x38eaaf['id']||0x0;this[_0x6d2f('0x0')]=_0x38eaaf[_0x6d2f('0x0')]||![];this[_0x6d2f('0x1')]=_0x38eaaf[_0x6d2f('0x1')]||'';this[_0x6d2f('0x2')]='unknown';this['stateTime']=0x0;this[_0x6d2f('0x3')]='unknown';this[_0x6d2f('0x4')]=_0x38eaaf['registry']&&_0x38eaaf[_0x6d2f('0x4')][_0x6d2f('0x5')](':')?_0x38eaaf[_0x6d2f('0x4')][_0x6d2f('0x6')](':')[0x0]:'';this['host']='';this[_0x6d2f('0x7')]='';this[_0x6d2f('0x8')]='';this[_0x6d2f('0x9')]='';this[_0x6d2f('0xa')]='';this[_0x6d2f('0xb')]='unknown';this['registrationtime']='';this[_0x6d2f('0xc')]='';this[_0x6d2f('0xd')]=_0x38eaaf[_0x6d2f('0xd')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0xc531=['address','defaultuser','exports','name','state','stateTime','status','unknown','registry','split','host','domain','domainport'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0xc531,0xac));var _0x1c53=function(_0x3bd4c0,_0x26b3d8){_0x3bd4c0=_0x3bd4c0-0x0;var _0x2f3485=_0xc531[_0x3bd4c0];return _0x2f3485;};'use strict';function Trunk(_0x1b9c1b){this['id']=_0x1b9c1b['id']||0x0;this['active']=_0x1b9c1b['active']||![];this[_0x1c53('0x0')]=_0x1b9c1b[_0x1c53('0x0')]||'';this[_0x1c53('0x1')]='unknown';this[_0x1c53('0x2')]=0x0;this[_0x1c53('0x3')]=_0x1c53('0x4');this['registry']=_0x1b9c1b[_0x1c53('0x5')]&&_0x1b9c1b[_0x1c53('0x5')]['indexOf'](':')?_0x1b9c1b[_0x1c53('0x5')][_0x1c53('0x6')](':')[0x0]:'';this[_0x1c53('0x7')]='';this['port']='';this[_0x1c53('0x8')]='';this[_0x1c53('0x9')]='';this['refresh']='';this['stateRegistry']='unknown';this['registrationtime']='';this[_0x1c53('0xa')]='';this[_0x1c53('0xb')]=_0x1b9c1b[_0x1c53('0xb')]||'';}module[_0x1c53('0xc')]=Trunk;
\ No newline at end of file
index d34abef..7dfc75e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6cd=['mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd6cd,0xfa));var _0xdd6c=function(_0x5f2a3d,_0x364ac9){_0x5f2a3d=_0x5f2a3d-0x0;var _0x282426=_0xd6cd[_0x5f2a3d];return _0x282426;};'use strict';function voiceExtension(_0x35bacd){this['id']=_0x35bacd['id']||0x0;this[_0xdd6c('0x0')]=_0x35bacd['exten']||'';this[_0xdd6c('0x1')]=_0x35bacd['recordingFormat']||'none';this[_0xdd6c('0x2')]=_0x35bacd['mandatoryDisposition']||![];}module[_0xdd6c('0x3')]=voiceExtension;
\ No newline at end of file
+var _0x4f14=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x4f14,0x1e1));var _0x44f1=function(_0x19c09d,_0x5c2b4a){_0x19c09d=_0x19c09d-0x0;var _0x4f05ea=_0x4f14[_0x19c09d];return _0x4f05ea;};'use strict';function voiceExtension(_0x2a318f){this['id']=_0x2a318f['id']||0x0;this[_0x44f1('0x0')]=_0x2a318f[_0x44f1('0x0')]||'';this['recordingFormat']=_0x2a318f[_0x44f1('0x1')]||_0x44f1('0x2');this[_0x44f1('0x3')]=_0x2a318f[_0x44f1('0x3')]||![];}module[_0x44f1('0x4')]=voiceExtension;
\ No newline at end of file
index ba0fd0d..dbe149d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8de=['wav','wav49','fewestcalls','leastrecent','linear','random','ringall','roundrobin','rrmemory','name','type','inbound','waiting','total','answered','sumBillable','available','busy','inUse','invalid','notInUse','onHold','paused','ringing','ringInUse','talking','unavailable','acw','acwTimeout','autopause','sendMessageOneNotActive','message','statusMessage','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','pTalking','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','monitor_format','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated'];(function(_0x3c6359,_0x17a4cf){var _0xc1c1ed=function(_0x42fdeb){while(--_0x42fdeb){_0x3c6359['push'](_0x3c6359['shift']());}};_0xc1c1ed(++_0x17a4cf);}(_0xf8de,0x17a));var _0xef8d=function(_0x3691e6,_0x158f53){_0x3691e6=_0x3691e6-0x0;var _0x5211e2=_0xf8de[_0x3691e6];return _0x5211e2;};'use strict';var monitorFormat={'wav':_0xef8d('0x0'),'wav49':_0xef8d('0x1'),'gsm':'gsm'};var strategy={'fewestcalls':_0xef8d('0x2'),'leastrecent':_0xef8d('0x3'),'linear':_0xef8d('0x4'),'random':_0xef8d('0x5'),'ringall':_0xef8d('0x6'),'rr':_0xef8d('0x7'),'rrmemory':_0xef8d('0x8'),'rrordered':'rrordered','wrandom':'wrandom'};function VoiceQueue(_0x1e42e9){this['id']=_0x1e42e9['id']||0x0;this[_0xef8d('0x9')]=_0x1e42e9[_0xef8d('0x9')]||'';this['monitor_format']=_0x1e42e9['monitor_format']||'';this[_0xef8d('0xa')]=_0x1e42e9[_0xef8d('0xa')]||_0xef8d('0xb');this[_0xef8d('0xc')]=0x0;this[_0xef8d('0xd')]=0x0;this[_0xef8d('0xe')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this[_0xef8d('0xf')]=0x0;this['unmanaged']=0x0;this['abandoned']=0x0;this[_0xef8d('0x10')]=0x0;this[_0xef8d('0x11')]=0x0;this[_0xef8d('0x12')]=0x0;this[_0xef8d('0x13')]=0x0;this['loggedIn']=0x0;this[_0xef8d('0x14')]=0x0;this[_0xef8d('0x15')]=0x0;this[_0xef8d('0x16')]=0x0;this[_0xef8d('0x17')]=0x0;this[_0xef8d('0x18')]=0x0;this[_0xef8d('0x19')]=0x0;this[_0xef8d('0x1a')]=0x0;this['unknown']=0x0;this[_0xef8d('0x1b')]=_0x1e42e9[_0xef8d('0x1b')]||![];this[_0xef8d('0x1c')]=_0x1e42e9[_0xef8d('0x1c')]||0xa;this[_0xef8d('0x1d')]=_0x1e42e9[_0xef8d('0x1d')]||'no';this[_0xef8d('0x1e')]=!![];this[_0xef8d('0x1f')]='';this[_0xef8d('0x20')]='';this[_0xef8d('0x21')]=0x0;this['temp']=0x0;this[_0xef8d('0x22')]=_0x1e42e9[_0xef8d('0x22')]||null;this['dialGlobalInterval']=_0x1e42e9[_0xef8d('0x23')]?_0x1e42e9[_0xef8d('0x23')]:null;this[_0xef8d('0x24')]=_0x1e42e9[_0xef8d('0x24')];this[_0xef8d('0x25')]=_0x1e42e9[_0xef8d('0x25')]||_0xef8d('0x26');this[_0xef8d('0x27')]=_0x1e42e9[_0xef8d('0x27')]||0x0;this[_0xef8d('0x28')]=_0x1e42e9[_0xef8d('0x28')]||0x0;this[_0xef8d('0x29')]=_0x1e42e9['dialPowerLevel']||0x1;this['dialPredictiveOptimization']=_0x1e42e9['dialPredictiveOptimization']||_0xef8d('0x2a');this['dialPredictiveOptimizationPercentage']=_0x1e42e9[_0xef8d('0x2b')]||0.03;this[_0xef8d('0x2c')]=_0x1e42e9[_0xef8d('0x2c')]||0x258;this[_0xef8d('0x2d')]=_0x1e42e9[_0xef8d('0x2d')]||_0xef8d('0x2e');this[_0xef8d('0x2f')]=_0x1e42e9[_0xef8d('0x2f')]||_0xef8d('0x2e');this[_0xef8d('0x30')]=_0x1e42e9[_0xef8d('0x30')]||0x1e;this[_0xef8d('0x31')]=_0x1e42e9['dialQueueOptions']||'tTxX';this[_0xef8d('0x32')]=_0x1e42e9['dialQueueTimeout']||0x3;this['dialQueueProject']=_0x1e42e9[_0xef8d('0x33')]||undefined;this[_0xef8d('0x34')]=_0x1e42e9[_0xef8d('0x34')]||0x3;this[_0xef8d('0x35')]=_0x1e42e9['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x1e42e9['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x1e42e9['dialBusyRetryFrequency']||0x96;this[_0xef8d('0x36')]=_0x1e42e9[_0xef8d('0x36')]||0x3;this[_0xef8d('0x37')]=_0x1e42e9[_0xef8d('0x37')]||0x96;this[_0xef8d('0x38')]=_0x1e42e9[_0xef8d('0x38')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x1e42e9[_0xef8d('0x39')]||0x96;this[_0xef8d('0x3a')]=_0x1e42e9['dialDropMaxRetry']||0x3;this[_0xef8d('0x3b')]=_0x1e42e9[_0xef8d('0x3b')]||0x96;this['dialAbandonedMaxRetry']=_0x1e42e9[_0xef8d('0x3c')]||0x3;this[_0xef8d('0x3d')]=_0x1e42e9[_0xef8d('0x3d')]||0x96;this[_0xef8d('0x3e')]=_0x1e42e9[_0xef8d('0x3e')]||0x3;this[_0xef8d('0x3f')]=_0x1e42e9[_0xef8d('0x3f')]||0x96;this[_0xef8d('0x40')]=_0x1e42e9['dialAgentRejectMaxRetry']||0x3;this[_0xef8d('0x41')]=_0x1e42e9[_0xef8d('0x41')]||0x96;this[_0xef8d('0x42')]=_0x1e42e9['callAdditionalPhoneAfterMin']||0x3;this[_0xef8d('0x43')]=_0x1e42e9['dialGlobalMaxRetry']||0x4;this[_0xef8d('0x44')]=_0x1e42e9['Trunk']?_0x1e42e9[_0xef8d('0x44')]:undefined;this[_0xef8d('0x45')]=_0x1e42e9[_0xef8d('0x45')]?_0x1e42e9[_0xef8d('0x45')]:undefined;this[_0xef8d('0x46')]=_0x1e42e9[_0xef8d('0x46')]||undefined;this[_0xef8d('0x47')]=_0x1e42e9[_0xef8d('0x47')]?_0x1e42e9[_0xef8d('0x47')]:undefined;this[_0xef8d('0x48')]=_0x1e42e9[_0xef8d('0x48')]||'DESC';this[_0xef8d('0x49')]=_0x1e42e9['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xef8d('0x4a')]=_0x1e42e9['dialCutDigit']||undefined;this[_0xef8d('0x4b')]=strategy[_0x1e42e9['strategy']];this[_0xef8d('0x4c')]=!![];this[_0xef8d('0x4d')]=_0x1e42e9[_0xef8d('0x4d')]||![];this['dialAMDInitialSilence']=_0x1e42e9[_0xef8d('0x4e')];this['dialAMDGreeting']=_0x1e42e9[_0xef8d('0x4f')];this[_0xef8d('0x50')]=_0x1e42e9[_0xef8d('0x50')];this[_0xef8d('0x51')]=_0x1e42e9['dialAMDTotalAnalysisTime'];this[_0xef8d('0x52')]=_0x1e42e9[_0xef8d('0x52')];this['dialAMDBetweenWordsSilence']=_0x1e42e9[_0xef8d('0x53')];this[_0xef8d('0x54')]=_0x1e42e9[_0xef8d('0x54')];this[_0xef8d('0x55')]=_0x1e42e9[_0xef8d('0x55')];this['dialAMDMaximumWordLength']=_0x1e42e9['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this[_0xef8d('0x56')]=0x0;this[_0xef8d('0x57')]=_0x1e42e9[_0xef8d('0x57')];this['outboundAnswerCallsDay']=0x0;this[_0xef8d('0x58')]=0x0;this[_0xef8d('0x59')]=0x0;this[_0xef8d('0x5a')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xef8d('0x5b')]=0x0;this[_0xef8d('0x5c')]=0x0;this[_0xef8d('0x5d')]=0x0;this[_0xef8d('0x5e')]=0x0;this[_0xef8d('0x5f')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0xef8d('0x60')]=0x0;this['outboundReCallsDay']=0x0;this[_0xef8d('0x61')]=0x0;this['startProgressive']=undefined;this[_0xef8d('0x62')]=undefined;this[_0xef8d('0x63')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xef8d('0x64')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0xef8d('0x65')]=0x0;this[_0xef8d('0x66')]=0x0;this[_0xef8d('0x67')]=0x0;this[_0xef8d('0x68')]=0x0;this[_0xef8d('0x69')]=0x0;this[_0xef8d('0x6a')]=0x0;this[_0xef8d('0x6b')]=_0x1e42e9[_0xef8d('0x6c')]||0x14;this['predictiveIntervalMinThreshold']=_0x1e42e9['dialPredictiveIntervalMaxThreshold']||0xa;this[_0xef8d('0x6d')]=0x0;this[_0xef8d('0x6e')]=0x0;this[_0xef8d('0x6f')]=0x1;this[_0xef8d('0x70')]=0x0;this[_0xef8d('0x71')]=0x0;this[_0xef8d('0x72')]=0x0;this['erlangBusyFactor']=0x0;this[_0xef8d('0x73')]=_0x1e42e9['dialRecallMeTimeout']||0x1e;this[_0xef8d('0x74')]=_0x1e42e9[_0xef8d('0x74')]||![];this[_0xef8d('0x75')]=!!_0x1e42e9[_0xef8d('0x75')]||![];this[_0xef8d('0x76')]=!!_0x1e42e9[_0xef8d('0x76')]||![];this[_0xef8d('0x77')]=_0x1e42e9[_0xef8d('0x77')]||undefined;this[_0xef8d('0x78')]=_0x1e42e9[_0xef8d('0x78')]||![];this[_0xef8d('0x79')]=_0x1e42e9[_0xef8d('0x79')]||![];this[_0xef8d('0x7a')]=monitorFormat[_0x1e42e9[_0xef8d('0x7a')]]?monitorFormat[_0x1e42e9[_0xef8d('0x7a')]]:undefined;this['mandatoryDisposition']=_0x1e42e9[_0xef8d('0x7b')]||![];this[_0xef8d('0x7c')]=_0x1e42e9['mandatoryDispositionPause']?_0x1e42e9['mandatoryDispositionPause']:undefined;this[_0xef8d('0x7d')]=![];}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0x20bd=['outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','wav49','gsm','fewestcalls','leastrecent','random','ringall','rrmemory','wrandom','name','monitor_format','type','inbound','waiting','sumDuration','sumHoldTime','unmanaged','abandoned','available','invalid','loggedIn','notInUse','onHold','ringing','ringInUse','talking','unknown','acw','acwTimeout','autopause','sendMessageOneNotActive','message','statusMessage','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundReCallsDay'];(function(_0x194483,_0x438dce){var _0x39bf73=function(_0x7d522a){while(--_0x7d522a){_0x194483['push'](_0x194483['shift']());}};_0x39bf73(++_0x438dce);}(_0x20bd,0x110));var _0xd20b=function(_0x47e362,_0x32774e){_0x47e362=_0x47e362-0x0;var _0x343311=_0x20bd[_0x47e362];return _0x343311;};'use strict';var monitorFormat={'wav':'wav','wav49':_0xd20b('0x0'),'gsm':_0xd20b('0x1')};var strategy={'fewestcalls':_0xd20b('0x2'),'leastrecent':_0xd20b('0x3'),'linear':'linear','random':_0xd20b('0x4'),'ringall':_0xd20b('0x5'),'rr':'roundrobin','rrmemory':_0xd20b('0x6'),'rrordered':'rrordered','wrandom':_0xd20b('0x7')};function VoiceQueue(_0x459488){this['id']=_0x459488['id']||0x0;this[_0xd20b('0x8')]=_0x459488[_0xd20b('0x8')]||'';this[_0xd20b('0x9')]=_0x459488[_0xd20b('0x9')]||'';this[_0xd20b('0xa')]=_0x459488['type']||_0xd20b('0xb');this[_0xd20b('0xc')]=0x0;this['total']=0x0;this['answered']=0x0;this[_0xd20b('0xd')]=0x0;this[_0xd20b('0xe')]=0x0;this['sumBillable']=0x0;this[_0xd20b('0xf')]=0x0;this[_0xd20b('0x10')]=0x0;this[_0xd20b('0x11')]=0x0;this['busy']=0x0;this['inUse']=0x0;this[_0xd20b('0x12')]=0x0;this[_0xd20b('0x13')]=0x0;this[_0xd20b('0x14')]=0x0;this[_0xd20b('0x15')]=0x0;this['paused']=0x0;this[_0xd20b('0x16')]=0x0;this[_0xd20b('0x17')]=0x0;this[_0xd20b('0x18')]=0x0;this['unavailable']=0x0;this[_0xd20b('0x19')]=0x0;this[_0xd20b('0x1a')]=_0x459488[_0xd20b('0x1a')]||![];this[_0xd20b('0x1b')]=_0x459488[_0xd20b('0x1b')]||0xa;this[_0xd20b('0x1c')]=_0x459488[_0xd20b('0x1c')]||'no';this[_0xd20b('0x1d')]=!![];this[_0xd20b('0x1e')]='';this[_0xd20b('0x1f')]='';this[_0xd20b('0x20')]=0x0;this[_0xd20b('0x21')]=0x0;this[_0xd20b('0x22')]=_0x459488[_0xd20b('0x22')]||null;this[_0xd20b('0x23')]=_0x459488[_0xd20b('0x23')]?_0x459488[_0xd20b('0x23')]:null;this[_0xd20b('0x24')]=_0x459488[_0xd20b('0x24')];this['dialMethod']=_0x459488[_0xd20b('0x25')]||'progressive';this[_0xd20b('0x26')]=_0x459488['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x459488[_0xd20b('0x27')]||0x0;this[_0xd20b('0x28')]=_0x459488['dialPowerLevel']||0x1;this[_0xd20b('0x29')]=_0x459488['dialPredictiveOptimization']||_0xd20b('0x2a');this['dialPredictiveOptimizationPercentage']=_0x459488['dialPredictiveOptimizationPercentage']||0.03;this['dialPredictiveInterval']=_0x459488['dialPredictiveInterval']||0x258;this[_0xd20b('0x2b')]=_0x459488[_0xd20b('0x2b')]||'anonymous';this[_0xd20b('0x2c')]=_0x459488[_0xd20b('0x2c')]||_0xd20b('0x2d');this[_0xd20b('0x2e')]=_0x459488[_0xd20b('0x2e')]||0x1e;this['dialQueueOptions']=_0x459488['dialQueueOptions']||_0xd20b('0x2f');this[_0xd20b('0x30')]=_0x459488[_0xd20b('0x30')]||0x3;this[_0xd20b('0x31')]=_0x459488[_0xd20b('0x31')]||undefined;this[_0xd20b('0x32')]=_0x459488[_0xd20b('0x32')]||0x3;this[_0xd20b('0x33')]=_0x459488[_0xd20b('0x33')]||0x96;this[_0xd20b('0x34')]=_0x459488[_0xd20b('0x34')]||0x3;this['dialBusyRetryFrequency']=_0x459488[_0xd20b('0x35')]||0x96;this['dialNoAnswerMaxRetry']=_0x459488[_0xd20b('0x36')]||0x3;this[_0xd20b('0x37')]=_0x459488[_0xd20b('0x37')]||0x96;this[_0xd20b('0x38')]=_0x459488[_0xd20b('0x38')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x459488['dialNoSuchNumberRetryFrequency']||0x96;this[_0xd20b('0x39')]=_0x459488[_0xd20b('0x39')]||0x3;this[_0xd20b('0x3a')]=_0x459488[_0xd20b('0x3a')]||0x96;this[_0xd20b('0x3b')]=_0x459488[_0xd20b('0x3b')]||0x3;this[_0xd20b('0x3c')]=_0x459488[_0xd20b('0x3c')]||0x96;this[_0xd20b('0x3d')]=_0x459488[_0xd20b('0x3d')]||0x3;this['dialMachineRetryFrequency']=_0x459488['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x459488[_0xd20b('0x3e')]||0x3;this[_0xd20b('0x3f')]=_0x459488[_0xd20b('0x3f')]||0x96;this[_0xd20b('0x40')]=_0x459488[_0xd20b('0x40')]||0x3;this['dialGlobalMaxRetry']=_0x459488[_0xd20b('0x41')]||0x4;this['Trunk']=_0x459488[_0xd20b('0x42')]?_0x459488[_0xd20b('0x42')]:undefined;this[_0xd20b('0x43')]=_0x459488[_0xd20b('0x43')]?_0x459488[_0xd20b('0x43')]:undefined;this[_0xd20b('0x44')]=_0x459488[_0xd20b('0x44')]||undefined;this[_0xd20b('0x45')]=_0x459488[_0xd20b('0x45')]?_0x459488[_0xd20b('0x45')]:undefined;this['dialOrderByScheduledAt']=_0x459488[_0xd20b('0x46')]||_0xd20b('0x47');this[_0xd20b('0x48')]=_0x459488[_0xd20b('0x48')]||undefined;this[_0xd20b('0x49')]=_0x459488[_0xd20b('0x49')]||undefined;this[_0xd20b('0x4a')]=strategy[_0x459488[_0xd20b('0x4a')]];this[_0xd20b('0x4b')]=!![];this[_0xd20b('0x4c')]=_0x459488['dialAMDActive']||![];this[_0xd20b('0x4d')]=_0x459488[_0xd20b('0x4d')];this[_0xd20b('0x4e')]=_0x459488[_0xd20b('0x4e')];this[_0xd20b('0x4f')]=_0x459488[_0xd20b('0x4f')];this[_0xd20b('0x50')]=_0x459488[_0xd20b('0x50')];this[_0xd20b('0x51')]=_0x459488['dialAMDMinWordLength'];this[_0xd20b('0x52')]=_0x459488[_0xd20b('0x52')];this[_0xd20b('0x53')]=_0x459488[_0xd20b('0x53')];this[_0xd20b('0x54')]=_0x459488[_0xd20b('0x54')];this[_0xd20b('0x55')]=_0x459488['dialAMDMaximumWordLength'];this[_0xd20b('0x56')]=0x0;this['pTalking']=0x0;this[_0xd20b('0x57')]=_0x459488[_0xd20b('0x57')];this[_0xd20b('0x58')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xd20b('0x59')]=0x0;this[_0xd20b('0x5a')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xd20b('0x5b')]=0x0;this[_0xd20b('0x5c')]=0x0;this[_0xd20b('0x5d')]=0x0;this[_0xd20b('0x5e')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xd20b('0x5f')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0xd20b('0x60')]=0x0;this[_0xd20b('0x61')]=0x0;this[_0xd20b('0x62')]=undefined;this['startPredictive']=undefined;this[_0xd20b('0x63')]=undefined;this[_0xd20b('0x64')]=1.05;this[_0xd20b('0x65')]=0x0;this[_0xd20b('0x66')]=0x0;this[_0xd20b('0x67')]=0x0;this[_0xd20b('0x68')]=0x0;this[_0xd20b('0x69')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this['predictiveIntervalPauses']=0x0;this[_0xd20b('0x6a')]=0x0;this[_0xd20b('0x6b')]=_0x459488[_0xd20b('0x6c')]||0x14;this[_0xd20b('0x6d')]=_0x459488[_0xd20b('0x6c')]||0xa;this[_0xd20b('0x6e')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0xd20b('0x6f')]=0x1;this[_0xd20b('0x70')]=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0xd20b('0x71')]=0x0;this[_0xd20b('0x72')]=_0x459488[_0xd20b('0x72')]||0x1e;this[_0xd20b('0x73')]=_0x459488[_0xd20b('0x73')]||![];this[_0xd20b('0x74')]=!!_0x459488[_0xd20b('0x74')]||![];this[_0xd20b('0x75')]=!!_0x459488[_0xd20b('0x75')]||![];this['dialQueueProject2']=_0x459488['dialQueueProject2']||undefined;this[_0xd20b('0x76')]=_0x459488[_0xd20b('0x76')]||![];this[_0xd20b('0x77')]=_0x459488[_0xd20b('0x77')]||![];this['monitor_format']=monitorFormat[_0x459488[_0xd20b('0x9')]]?monitorFormat[_0x459488[_0xd20b('0x9')]]:undefined;this[_0xd20b('0x78')]=_0x459488[_0xd20b('0x78')]||![];this[_0xd20b('0x79')]=_0x459488['mandatoryDispositionPause']?_0x459488[_0xd20b('0x79')]:undefined;this[_0xd20b('0x7a')]=![];}module['exports']=VoiceQueue;
\ No newline at end of file
index 7220226..2bdb180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe002=['paused','sumBillable','sumDuration','total','name','strategy','busy','invalid','onHold','notInUse','ringInUse','sumHoldTime','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','message','statusMessage','Trunk','active','callerid','prototype','createReport','loggedin','callers','length','SIP/','incall','includes','status','booked','keys','dialer','xcally-motion-preview','compareToInboundQueue','some','updateReportFromOutboundQueue','preview','exports','available','loggedIn','loggedInDb','ringing','talking','waiting','answered','inUse','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay'];(function(_0x1cbd90,_0x112fd9){var _0x2f09a1=function(_0x4a81ed){while(--_0x4a81ed){_0x1cbd90['push'](_0x1cbd90['shift']());}};_0x2f09a1(++_0x112fd9);}(_0xe002,0xf7));var _0x2e00=function(_0x469ac7,_0x38e416){_0x469ac7=_0x469ac7-0x0;var _0x22f3b0=_0xe002[_0x469ac7];return _0x22f3b0;};'use strict';var INBOUND_COUNTERS=[_0x2e00('0x0'),_0x2e00('0x1'),_0x2e00('0x2'),'paused',_0x2e00('0x3'),_0x2e00('0x4'),_0x2e00('0x5')];var OUTBOUND_COUNTERS=['available',_0x2e00('0x6'),_0x2e00('0x7'),_0x2e00('0x1'),_0x2e00('0x2'),_0x2e00('0x8'),_0x2e00('0x9'),_0x2e00('0xa'),_0x2e00('0xb'),'outboundBusyCallsDay',_0x2e00('0xc'),_0x2e00('0xd'),'outboundNoSuchCallsDay',_0x2e00('0xe'),_0x2e00('0xf'),_0x2e00('0x10'),_0x2e00('0x11'),'pTalking','talking',_0x2e00('0x12'),_0x2e00('0x13'),_0x2e00('0x14'),'waiting'];function VoiceQueueSummary(_0x9a9d02){this['id']=_0x9a9d02['id'];this[_0x2e00('0x15')]=_0x9a9d02[_0x2e00('0x15')];this[_0x2e00('0x16')]=_0x9a9d02[_0x2e00('0x16')];this['abandoned']=_0x9a9d02['abandoned']||0x0;this[_0x2e00('0x6')]=_0x9a9d02[_0x2e00('0x6')]||0x0;this[_0x2e00('0x0')]=_0x9a9d02[_0x2e00('0x0')]||0x0;this[_0x2e00('0x17')]=_0x9a9d02['busy']||0x0;this[_0x2e00('0x7')]=_0x9a9d02['inUse']||0x0;this[_0x2e00('0x18')]=_0x9a9d02[_0x2e00('0x18')]||0x0;this['loggedIn']=_0x9a9d02[_0x2e00('0x1')]||0x0;this[_0x2e00('0x2')]=_0x9a9d02[_0x2e00('0x2')]||0x0;this[_0x2e00('0x19')]=_0x9a9d02['onHold']||0x0;this[_0x2e00('0x1a')]=_0x9a9d02[_0x2e00('0x1a')]||0x0;this['paused']=_0x9a9d02[_0x2e00('0x11')]||0x0;this[_0x2e00('0x3')]=_0x9a9d02[_0x2e00('0x3')]||0x0;this['ringInUse']=_0x9a9d02[_0x2e00('0x1b')];this[_0x2e00('0x12')]=_0x9a9d02['sumBillable'];this['sumDuration']=_0x9a9d02['sumDuration'];this['sumHoldTime']=_0x9a9d02[_0x2e00('0x1c')]||0x0;this[_0x2e00('0x4')]=_0x9a9d02[_0x2e00('0x4')]||0x0;this['total']=_0x9a9d02[_0x2e00('0x14')]||0x0;this[_0x2e00('0x1d')]=_0x9a9d02[_0x2e00('0x1d')];this[_0x2e00('0x1e')]=_0x9a9d02[_0x2e00('0x1e')]||0x0;this[_0x2e00('0x1f')]=_0x9a9d02[_0x2e00('0x1f')]||0x0;this[_0x2e00('0x20')]=_0x9a9d02[_0x2e00('0x20')]||0x0;this[_0x2e00('0x5')]=_0x9a9d02[_0x2e00('0x5')]||0x0;if(_0x9a9d02[_0x2e00('0x1d')]===_0x2e00('0x21')){this[_0x2e00('0x22')]=_0x9a9d02[_0x2e00('0x22')]||0x0;this[_0x2e00('0x23')]=_0x9a9d02['dialActive'];this[_0x2e00('0x24')]=_0x9a9d02[_0x2e00('0x24')];this[_0x2e00('0x25')]=_0x9a9d02['dialOriginateCallerIdName'];this[_0x2e00('0x26')]=_0x9a9d02[_0x2e00('0x26')];this[_0x2e00('0x27')]=_0x9a9d02[_0x2e00('0x27')];this[_0x2e00('0x28')]=_0x9a9d02['dialPrefix'];this[_0x2e00('0x29')]=_0x9a9d02['temp'];this[_0x2e00('0x2a')]=_0x9a9d02['outboundAnswerAgiCallsDay'];this[_0x2e00('0xa')]=_0x9a9d02['outboundAnswerCallsDay'];this[_0x2e00('0xb')]=_0x9a9d02[_0x2e00('0xb')];this[_0x2e00('0x2b')]=_0x9a9d02['outboundBusyCallsDay'];this[_0x2e00('0xc')]=_0x9a9d02[_0x2e00('0xc')];this[_0x2e00('0x2c')]=_0x9a9d02[_0x2e00('0x2c')];this[_0x2e00('0x2d')]=_0x9a9d02['outboundDropCallsDayCallersExit'];this[_0x2e00('0x2e')]=_0x9a9d02[_0x2e00('0x2e')];this[_0x2e00('0xd')]=_0x9a9d02[_0x2e00('0xd')];this[_0x2e00('0x2f')]=_0x9a9d02[_0x2e00('0x2f')];this[_0x2e00('0x30')]=_0x9a9d02[_0x2e00('0x30')];this['outboundReCallsDay']=_0x9a9d02[_0x2e00('0xe')];this['outboundRejectCallsDay']=_0x9a9d02[_0x2e00('0xf')];this[_0x2e00('0x10')]=_0x9a9d02['outboundUnknownCallsDay'];this[_0x2e00('0x31')]=_0x9a9d02[_0x2e00('0x31')];this[_0x2e00('0x32')]=_0x9a9d02[_0x2e00('0x32')];this[_0x2e00('0x33')]=_0x9a9d02['predictiveIntervalAvgTalktime'];this[_0x2e00('0x34')]=_0x9a9d02[_0x2e00('0x34')];this[_0x2e00('0x35')]=_0x9a9d02['predictiveIntervalDroppedCallsTimeout'];this[_0x2e00('0x36')]=_0x9a9d02[_0x2e00('0x36')];this[_0x2e00('0x37')]=_0x9a9d02[_0x2e00('0x37')];this[_0x2e00('0x38')]=_0x9a9d02[_0x2e00('0x38')];this[_0x2e00('0x39')]=_0x9a9d02[_0x2e00('0x39')];this['predictiveIntervalPauses']=_0x9a9d02['predictiveIntervalPauses'];this['predictiveIntervalAvailable']=_0x9a9d02[_0x2e00('0x3a')];this[_0x2e00('0x3b')]=_0x9a9d02[_0x2e00('0x3b')];this[_0x2e00('0x8')]=_0x9a9d02['originated'];this[_0x2e00('0x3c')]=_0x9a9d02[_0x2e00('0x3c')];this[_0x2e00('0x3d')]=_0x9a9d02[_0x2e00('0x3d')];this[_0x2e00('0x3e')]=_0x9a9d02['erlangAbandonmentRate'];this[_0x2e00('0x3f')]=_0x9a9d02[_0x2e00('0x3f')];this['startPredictive']=_0x9a9d02[_0x2e00('0x40')];this['startProgressive']=_0x9a9d02['startProgressive'];this[_0x2e00('0x41')]=_0x9a9d02['message'];this[_0x2e00('0x42')]=_0x9a9d02[_0x2e00('0x42')];}if(_0x9a9d02[_0x2e00('0x43')]){this['Trunk']={'id':_0x9a9d02['Trunk']['id'],'name':_0x9a9d02[_0x2e00('0x43')]['name'],'active':_0x9a9d02[_0x2e00('0x43')][_0x2e00('0x44')],'callerid':_0x9a9d02[_0x2e00('0x43')][_0x2e00('0x45')]};}}VoiceQueueSummary[_0x2e00('0x46')][_0x2e00('0x47')]=function(_0x1187ac,_0x1ee23d,_0x3df24a,_0x5333cc){this[_0x2e00('0x2')]=0x0;this[_0x2e00('0x4')]=0x0;this[_0x2e00('0x11')]=0x0;this['unknown']=0x0;this[_0x2e00('0x1a')]=0x0;this[_0x2e00('0x7')]=0x0;this[_0x2e00('0x17')]=0x0;this[_0x2e00('0x18')]=0x0;this[_0x2e00('0x1e')]=0x0;this[_0x2e00('0x3')]=0x0;this['ringInUse']=0x0;this[_0x2e00('0x19')]=0x0;if(_0x3df24a){if(_0x3df24a[_0x2e00('0x0')]){this[_0x2e00('0x0')]=Number(_0x3df24a['available']);}if(_0x3df24a[_0x2e00('0x48')]){this[_0x2e00('0x1')]=Number(_0x3df24a['loggedin']);}if(_0x3df24a[_0x2e00('0x49')]){this[_0x2e00('0x5')]=Number(_0x3df24a[_0x2e00('0x49')]);}}for(var _0xaee046=0x0;_0xaee046<_0x1187ac[_0x2e00('0x4a')];_0xaee046++){var _0x4fd083=_0x1ee23d[_0x2e00('0x4b')+_0x1187ac[_0xaee046][_0x2e00('0x15')]];if(_0x4fd083&&_0x4fd083['online']){this['loggedInDb']+=0x1;}if(_0x1187ac[_0xaee046][_0x2e00('0x4c')]==='1'){this[_0x2e00('0x4')]+=0x1;}if(_0x1187ac[_0xaee046]['paused']==='1'&&!['2','7','8'][_0x2e00('0x4d')](_0x1187ac[_0xaee046][_0x2e00('0x4e')])){this[_0x2e00('0x11')]+=0x1;}switch(_0x1187ac[_0xaee046]['status']){case'0':this[_0x2e00('0x1f')]+=0x1;break;case'1':this[_0x2e00('0x1a')]+=0x1;break;case'2':this[_0x2e00('0x7')]+=0x1;break;case'3':this['busy']+=0x1;break;case'4':this['invalid']+=0x1;break;case'5':this[_0x2e00('0x1e')]+=0x1;break;case'6':this[_0x2e00('0x3')]+=0x1;break;case'7':this[_0x2e00('0x1b')]+=0x1;break;case'8':this[_0x2e00('0x19')]+=0x1;break;}}if(this['dialMethod']===_0x2e00('0x4f')){var _0x127e76=Object[_0x2e00('0x50')](_0x5333cc);for(var _0xd245a1=0x0;_0xd245a1<_0x127e76['length'];_0xd245a1++){var _0x3b550d=_0x127e76[_0xd245a1];var _0x3862f8=_0x5333cc[_0x3b550d];if(_0x3862f8['queue']===this['name']&&_0x3862f8[_0x2e00('0x1d')]===_0x2e00('0x51')&&_0x3862f8['exten']===_0x2e00('0x52')){this['talking']+=0x1;}}if(this[_0x2e00('0x4')]>this[_0x2e00('0x7')]){this[_0x2e00('0x4')]=this[_0x2e00('0x7')];}this['pTalking']=0x0;}return this;};VoiceQueueSummary['prototype'][_0x2e00('0x53')]=function(_0x5a298f){var _0x404610=![];if(_0x5a298f){_0x404610=INBOUND_COUNTERS[_0x2e00('0x54')](function(_0xe7b287){return this[_0xe7b287]!==_0x5a298f[_0xe7b287];},this);}return _0x404610;};VoiceQueueSummary[_0x2e00('0x46')]['compareToOutboundQueue']=function(_0x2d97c2){var _0x1b95d3=![];var _0x5acdfe=![];var _0x58e3aa=![];if(_0x2d97c2){_0x1b95d3=this[_0x2e00('0x24')]!==_0x2d97c2[_0x2e00('0x24')]||this[_0x2e00('0x23')]!==_0x2d97c2[_0x2e00('0x23')]||this['message']!==_0x2d97c2[_0x2e00('0x41')]||this['statusMessage']!==_0x2d97c2['statusMessage'];_0x5acdfe=OUTBOUND_COUNTERS[_0x2e00('0x54')](function(_0x39970c){return this[_0x39970c]!==_0x2d97c2[_0x39970c];},this);if(this[_0x2e00('0x43')]&&_0x2d97c2[_0x2e00('0x43')]){_0x58e3aa=this[_0x2e00('0x43')][_0x2e00('0x15')]!==_0x2d97c2[_0x2e00('0x43')]['name']||this[_0x2e00('0x43')][_0x2e00('0x44')]!==_0x2d97c2[_0x2e00('0x43')][_0x2e00('0x44')];}}return _0x1b95d3||_0x5acdfe||_0x58e3aa;};VoiceQueueSummary[_0x2e00('0x46')][_0x2e00('0x55')]=function(_0x16a34c){this[_0x2e00('0x6')]=_0x16a34c['answered'];this[_0x2e00('0x41')]=_0x16a34c[_0x2e00('0x41')];this['statusMessage']=_0x16a34c[_0x2e00('0x42')];this[_0x2e00('0x8')]=_0x16a34c['originated'];this[_0x2e00('0x9')]=_0x16a34c[_0x2e00('0x9')];this[_0x2e00('0xa')]=_0x16a34c[_0x2e00('0xa')];this[_0x2e00('0xb')]=_0x16a34c[_0x2e00('0xb')];this[_0x2e00('0x2b')]=_0x16a34c['outboundBusyCallsDay'];this[_0x2e00('0xc')]=_0x16a34c['outboundCongestionCallsDay'];this[_0x2e00('0xd')]=_0x16a34c[_0x2e00('0xd')];this[_0x2e00('0x2f')]=_0x16a34c[_0x2e00('0x2f')];this[_0x2e00('0xe')]=_0x16a34c[_0x2e00('0xe')];this[_0x2e00('0xf')]=_0x16a34c[_0x2e00('0xf')];this[_0x2e00('0x10')]=_0x16a34c[_0x2e00('0x10')];this[_0x2e00('0x12')]=_0x16a34c['sumBillable'];this['sumDuration']=_0x16a34c['sumDuration'];this[_0x2e00('0x14')]=_0x16a34c['total'];if(this['dialMethod']===_0x2e00('0x56')){this[_0x2e00('0x22')]=_0x16a34c[_0x2e00('0x22')];}};module[_0x2e00('0x57')]=VoiceQueueSummary;
\ No newline at end of file
+var _0x4677=['loggedIn','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundReCallsDay','outboundRejectCallsDay','talking','sumBillable','sumDuration','name','strategy','abandoned','busy','invalid','onHold','notInUse','ringInUse','sumHoldTime','total','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','active','prototype','createReport','loggedin','callers','length','SIP/','incall','status','dialMethod','keys','dialer','exten','xcally-motion-preview','compareToInboundQueue','updateReportFromOutboundQueue','outboundBlacklistCallsDay','preview','available','loggedInDb','paused','ringing','waiting','answered','inUse'];(function(_0x592e25,_0x4aec9c){var _0x4e8d3b=function(_0x1cc34a){while(--_0x1cc34a){_0x592e25['push'](_0x592e25['shift']());}};_0x4e8d3b(++_0x4aec9c);}(_0x4677,0x155));var _0x7467=function(_0x3ea1a5,_0x4e8b1a){_0x3ea1a5=_0x3ea1a5-0x0;var _0xbe9f5c=_0x4677[_0x3ea1a5];return _0xbe9f5c;};'use strict';var INBOUND_COUNTERS=[_0x7467('0x0'),'loggedIn',_0x7467('0x1'),_0x7467('0x2'),_0x7467('0x3'),'talking',_0x7467('0x4')];var OUTBOUND_COUNTERS=[_0x7467('0x0'),_0x7467('0x5'),_0x7467('0x6'),_0x7467('0x7'),_0x7467('0x1'),_0x7467('0x8'),_0x7467('0x9'),_0x7467('0xa'),'outboundBlacklistCallsDay','outboundBusyCallsDay',_0x7467('0xb'),_0x7467('0xc'),'outboundNoSuchCallsDay',_0x7467('0xd'),_0x7467('0xe'),'outboundUnknownCallsDay',_0x7467('0x2'),'pTalking',_0x7467('0xf'),_0x7467('0x10'),_0x7467('0x11'),'total',_0x7467('0x4')];function VoiceQueueSummary(_0x13112a){this['id']=_0x13112a['id'];this[_0x7467('0x12')]=_0x13112a[_0x7467('0x12')];this['strategy']=_0x13112a[_0x7467('0x13')];this['abandoned']=_0x13112a[_0x7467('0x14')]||0x0;this[_0x7467('0x5')]=_0x13112a[_0x7467('0x5')]||0x0;this[_0x7467('0x0')]=_0x13112a['available']||0x0;this[_0x7467('0x15')]=_0x13112a[_0x7467('0x15')]||0x0;this[_0x7467('0x6')]=_0x13112a['inUse']||0x0;this[_0x7467('0x16')]=_0x13112a[_0x7467('0x16')]||0x0;this[_0x7467('0x7')]=_0x13112a['loggedIn']||0x0;this[_0x7467('0x1')]=_0x13112a[_0x7467('0x1')]||0x0;this[_0x7467('0x17')]=_0x13112a['onHold']||0x0;this[_0x7467('0x18')]=_0x13112a['notInUse']||0x0;this[_0x7467('0x2')]=_0x13112a[_0x7467('0x2')]||0x0;this[_0x7467('0x3')]=_0x13112a[_0x7467('0x3')]||0x0;this[_0x7467('0x19')]=_0x13112a[_0x7467('0x19')];this[_0x7467('0x10')]=_0x13112a[_0x7467('0x10')];this[_0x7467('0x11')]=_0x13112a[_0x7467('0x11')];this[_0x7467('0x1a')]=_0x13112a[_0x7467('0x1a')]||0x0;this[_0x7467('0xf')]=_0x13112a[_0x7467('0xf')]||0x0;this['total']=_0x13112a[_0x7467('0x1b')]||0x0;this[_0x7467('0x1c')]=_0x13112a[_0x7467('0x1c')];this[_0x7467('0x1d')]=_0x13112a[_0x7467('0x1d')]||0x0;this['unknown']=_0x13112a[_0x7467('0x1e')]||0x0;this['unmanaged']=_0x13112a[_0x7467('0x1f')]||0x0;this[_0x7467('0x4')]=_0x13112a[_0x7467('0x4')]||0x0;if(_0x13112a[_0x7467('0x1c')]===_0x7467('0x20')){this[_0x7467('0x21')]=_0x13112a['pTalking']||0x0;this[_0x7467('0x22')]=_0x13112a[_0x7467('0x22')];this['dialMethod']=_0x13112a['dialMethod'];this[_0x7467('0x23')]=_0x13112a[_0x7467('0x23')];this[_0x7467('0x24')]=_0x13112a[_0x7467('0x24')];this['dialOriginateTimeout']=_0x13112a[_0x7467('0x25')];this[_0x7467('0x26')]=_0x13112a['dialPrefix'];this[_0x7467('0x27')]=_0x13112a[_0x7467('0x27')];this[_0x7467('0x28')]=_0x13112a[_0x7467('0x28')];this[_0x7467('0xa')]=_0x13112a['outboundAnswerCallsDay'];this['outboundBlacklistCallsDay']=_0x13112a['outboundBlacklistCallsDay'];this[_0x7467('0x29')]=_0x13112a[_0x7467('0x29')];this['outboundCongestionCallsDay']=_0x13112a[_0x7467('0xb')];this[_0x7467('0x2a')]=_0x13112a[_0x7467('0x2a')];this[_0x7467('0x2b')]=_0x13112a[_0x7467('0x2b')];this[_0x7467('0x2c')]=_0x13112a['outboundDropCallsDayTimeout'];this[_0x7467('0xc')]=_0x13112a[_0x7467('0xc')];this[_0x7467('0x2d')]=_0x13112a['outboundNoSuchCallsDay'];this[_0x7467('0x2e')]=_0x13112a[_0x7467('0x2e')];this[_0x7467('0xd')]=_0x13112a[_0x7467('0xd')];this[_0x7467('0xe')]=_0x13112a[_0x7467('0xe')];this[_0x7467('0x2f')]=_0x13112a[_0x7467('0x2f')];this['predictiveIntervalAnsweredCalls']=_0x13112a[_0x7467('0x30')];this[_0x7467('0x31')]=_0x13112a[_0x7467('0x31')];this[_0x7467('0x32')]=_0x13112a[_0x7467('0x32')];this[_0x7467('0x33')]=_0x13112a[_0x7467('0x33')];this[_0x7467('0x34')]=_0x13112a[_0x7467('0x34')];this[_0x7467('0x35')]=_0x13112a[_0x7467('0x35')];this[_0x7467('0x36')]=_0x13112a[_0x7467('0x36')];this[_0x7467('0x37')]=_0x13112a[_0x7467('0x37')];this[_0x7467('0x38')]=_0x13112a[_0x7467('0x38')];this[_0x7467('0x39')]=_0x13112a[_0x7467('0x39')];this['predictiveIntervalAvailable']=_0x13112a[_0x7467('0x3a')];this['predictiveIntervalTotalCalls']=_0x13112a[_0x7467('0x3b')];this['originated']=_0x13112a[_0x7467('0x8')];this[_0x7467('0x3c')]=_0x13112a['erlangCalls'];this['erlangCallToSecond']=_0x13112a[_0x7467('0x3d')];this[_0x7467('0x3e')]=_0x13112a[_0x7467('0x3e')];this[_0x7467('0x3f')]=_0x13112a[_0x7467('0x3f')];this['startPredictive']=_0x13112a[_0x7467('0x40')];this[_0x7467('0x41')]=_0x13112a[_0x7467('0x41')];this[_0x7467('0x42')]=_0x13112a[_0x7467('0x42')];this[_0x7467('0x43')]=_0x13112a[_0x7467('0x43')];}if(_0x13112a[_0x7467('0x44')]){this[_0x7467('0x44')]={'id':_0x13112a[_0x7467('0x44')]['id'],'name':_0x13112a[_0x7467('0x44')]['name'],'active':_0x13112a[_0x7467('0x44')][_0x7467('0x45')],'callerid':_0x13112a[_0x7467('0x44')]['callerid']};}}VoiceQueueSummary[_0x7467('0x46')][_0x7467('0x47')]=function(_0x23a26d,_0x35694f,_0x5ace0d,_0x12ec7f){this['loggedInDb']=0x0;this['talking']=0x0;this[_0x7467('0x2')]=0x0;this[_0x7467('0x1e')]=0x0;this['notInUse']=0x0;this[_0x7467('0x6')]=0x0;this['busy']=0x0;this['invalid']=0x0;this[_0x7467('0x1d')]=0x0;this[_0x7467('0x3')]=0x0;this['ringInUse']=0x0;this[_0x7467('0x17')]=0x0;if(_0x5ace0d){if(_0x5ace0d[_0x7467('0x0')]){this[_0x7467('0x0')]=Number(_0x5ace0d[_0x7467('0x0')]);}if(_0x5ace0d['loggedin']){this[_0x7467('0x7')]=Number(_0x5ace0d[_0x7467('0x48')]);}if(_0x5ace0d[_0x7467('0x49')]){this[_0x7467('0x4')]=Number(_0x5ace0d['callers']);}}for(var _0x18b2a0=0x0;_0x18b2a0<_0x23a26d[_0x7467('0x4a')];_0x18b2a0++){var _0xa08a0a=_0x35694f[_0x7467('0x4b')+_0x23a26d[_0x18b2a0]['name']];if(_0xa08a0a&&_0xa08a0a['online']){this[_0x7467('0x1')]+=0x1;}if(_0x23a26d[_0x18b2a0][_0x7467('0x4c')]==='1'){this[_0x7467('0xf')]+=0x1;}if(_0x23a26d[_0x18b2a0][_0x7467('0x2')]==='1'&&!['2','7','8']['includes'](_0x23a26d[_0x18b2a0][_0x7467('0x4d')])){this[_0x7467('0x2')]+=0x1;}switch(_0x23a26d[_0x18b2a0][_0x7467('0x4d')]){case'0':this[_0x7467('0x1e')]+=0x1;break;case'1':this[_0x7467('0x18')]+=0x1;break;case'2':this['inUse']+=0x1;break;case'3':this['busy']+=0x1;break;case'4':this[_0x7467('0x16')]+=0x1;break;case'5':this[_0x7467('0x1d')]+=0x1;break;case'6':this['ringing']+=0x1;break;case'7':this[_0x7467('0x19')]+=0x1;break;case'8':this['onHold']+=0x1;break;}}if(this[_0x7467('0x4e')]==='booked'){var _0x3a9c15=Object[_0x7467('0x4f')](_0x12ec7f);for(var _0x2ea1fd=0x0;_0x2ea1fd<_0x3a9c15[_0x7467('0x4a')];_0x2ea1fd++){var _0xd2e9ac=_0x3a9c15[_0x2ea1fd];var _0x2be4c6=_0x12ec7f[_0xd2e9ac];if(_0x2be4c6['queue']===this['name']&&_0x2be4c6[_0x7467('0x1c')]===_0x7467('0x50')&&_0x2be4c6[_0x7467('0x51')]===_0x7467('0x52')){this['talking']+=0x1;}}if(this[_0x7467('0xf')]>this[_0x7467('0x6')]){this[_0x7467('0xf')]=this[_0x7467('0x6')];}this[_0x7467('0x21')]=0x0;}return this;};VoiceQueueSummary['prototype'][_0x7467('0x53')]=function(_0x5bc665){var _0x5aab46=![];if(_0x5bc665){_0x5aab46=INBOUND_COUNTERS['some'](function(_0x53f412){return this[_0x53f412]!==_0x5bc665[_0x53f412];},this);}return _0x5aab46;};VoiceQueueSummary[_0x7467('0x46')]['compareToOutboundQueue']=function(_0x396dc3){var _0x149574=![];var _0x364137=![];var _0x10f2c3=![];if(_0x396dc3){_0x149574=this[_0x7467('0x4e')]!==_0x396dc3[_0x7467('0x4e')]||this['dialActive']!==_0x396dc3[_0x7467('0x22')]||this[_0x7467('0x42')]!==_0x396dc3[_0x7467('0x42')]||this[_0x7467('0x43')]!==_0x396dc3[_0x7467('0x43')];_0x364137=OUTBOUND_COUNTERS['some'](function(_0x575a3e){return this[_0x575a3e]!==_0x396dc3[_0x575a3e];},this);if(this['Trunk']&&_0x396dc3[_0x7467('0x44')]){_0x10f2c3=this[_0x7467('0x44')]['name']!==_0x396dc3[_0x7467('0x44')]['name']||this[_0x7467('0x44')][_0x7467('0x45')]!==_0x396dc3[_0x7467('0x44')][_0x7467('0x45')];}}return _0x149574||_0x364137||_0x10f2c3;};VoiceQueueSummary['prototype'][_0x7467('0x54')]=function(_0x44c56a){this['answered']=_0x44c56a[_0x7467('0x5')];this[_0x7467('0x42')]=_0x44c56a['message'];this[_0x7467('0x43')]=_0x44c56a['statusMessage'];this[_0x7467('0x8')]=_0x44c56a[_0x7467('0x8')];this[_0x7467('0x9')]=_0x44c56a[_0x7467('0x9')];this[_0x7467('0xa')]=_0x44c56a[_0x7467('0xa')];this[_0x7467('0x55')]=_0x44c56a[_0x7467('0x55')];this[_0x7467('0x29')]=_0x44c56a[_0x7467('0x29')];this[_0x7467('0xb')]=_0x44c56a[_0x7467('0xb')];this[_0x7467('0xc')]=_0x44c56a[_0x7467('0xc')];this['outboundNoSuchCallsDay']=_0x44c56a[_0x7467('0x2d')];this[_0x7467('0xd')]=_0x44c56a['outboundReCallsDay'];this[_0x7467('0xe')]=_0x44c56a[_0x7467('0xe')];this[_0x7467('0x2f')]=_0x44c56a[_0x7467('0x2f')];this[_0x7467('0x10')]=_0x44c56a['sumBillable'];this[_0x7467('0x11')]=_0x44c56a['sumDuration'];this[_0x7467('0x1b')]=_0x44c56a[_0x7467('0x1b')];if(this[_0x7467('0x4e')]===_0x7467('0x56')){this[_0x7467('0x21')]=_0x44c56a[_0x7467('0x21')];}};module['exports']=VoiceQueueSummary;
\ No newline at end of file
index 7901d0d..f175365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd6=['Configurations','exports','name','username','accessKey','serverUrl'];(function(_0xad5a3d,_0x4a56d1){var _0x3386d2=function(_0x3ca1bc){while(--_0x3ca1bc){_0xad5a3d['push'](_0xad5a3d['shift']());}};_0x3386d2(++_0x4a56d1);}(_0x1dd6,0xfe));var _0x61dd=function(_0x2f1ab5,_0x2966be){_0x2f1ab5=_0x2f1ab5-0x0;var _0x5c7e72=_0x1dd6[_0x2f1ab5];return _0x5c7e72;};'use strict';function VtigerAccount(_0x38befe){this['id']=_0x38befe['id']||0x0;this[_0x61dd('0x0')]=_0x38befe['name']||'';this[_0x61dd('0x1')]=_0x38befe[_0x61dd('0x1')]||'';this[_0x61dd('0x2')]=_0x38befe[_0x61dd('0x2')]||'';this['remoteUri']=_0x38befe['remoteUri']||'';this[_0x61dd('0x3')]=_0x38befe['serverUrl']||'';this[_0x61dd('0x4')]=_0x38befe['Configurations']||{};}module[_0x61dd('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x119c=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x227d75,_0x16becc){var _0x419daf=function(_0x213cae){while(--_0x213cae){_0x227d75['push'](_0x227d75['shift']());}};_0x419daf(++_0x16becc);}(_0x119c,0x7f));var _0xc119=function(_0x57a2a6,_0x3d21b2){_0x57a2a6=_0x57a2a6-0x0;var _0x74724a=_0x119c[_0x57a2a6];return _0x74724a;};'use strict';function VtigerAccount(_0x551993){this['id']=_0x551993['id']||0x0;this[_0xc119('0x0')]=_0x551993[_0xc119('0x0')]||'';this['username']=_0x551993[_0xc119('0x1')]||'';this['accessKey']=_0x551993[_0xc119('0x2')]||'';this['remoteUri']=_0x551993[_0xc119('0x3')]||'';this['serverUrl']=_0x551993[_0xc119('0x4')]||'';this['Configurations']=_0x551993[_0xc119('0x5')]||{};}module[_0xc119('0x6')]=VtigerAccount;
\ No newline at end of file
index 30c0f38..49ed36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c8=['integrationTab','serverUrl','exports','name','username','password','remoteUri','authType','type'];(function(_0xdf3449,_0x2d5a21){var _0x461ce9=function(_0x4ec8bc){while(--_0x4ec8bc){_0xdf3449['push'](_0xdf3449['shift']());}};_0x461ce9(++_0x2d5a21);}(_0x16c8,0x186));var _0x816c=function(_0x21378b,_0x57eb4e){_0x21378b=_0x21378b-0x0;var _0x267afe=_0x16c8[_0x21378b];return _0x267afe;};'use strict';function ZendeskAccount(_0x538bed){this['id']=_0x538bed['id']||0x0;this[_0x816c('0x0')]=_0x538bed[_0x816c('0x0')]||'';this[_0x816c('0x1')]=_0x538bed['username']||'';this[_0x816c('0x2')]=_0x538bed[_0x816c('0x2')]||'';this['token']=_0x538bed['token']||'';this[_0x816c('0x3')]=_0x538bed[_0x816c('0x3')]||'';this[_0x816c('0x4')]=_0x538bed[_0x816c('0x4')]||'';this[_0x816c('0x5')]=_0x538bed[_0x816c('0x5')]||_0x816c('0x6');this[_0x816c('0x7')]=_0x538bed[_0x816c('0x7')]||'';this['Configurations']=_0x538bed['Configurations']||{};}module[_0x816c('0x8')]=ZendeskAccount;
\ No newline at end of file
+var _0xa448=['authType','integrationTab','serverUrl','exports','name','username','password','token','remoteUri'];(function(_0x45c78e,_0x89aa5d){var _0x4fd81c=function(_0x3b7a75){while(--_0x3b7a75){_0x45c78e['push'](_0x45c78e['shift']());}};_0x4fd81c(++_0x89aa5d);}(_0xa448,0x67));var _0x8a44=function(_0x1e8488,_0x1a01ce){_0x1e8488=_0x1e8488-0x0;var _0x2e3867=_0xa448[_0x1e8488];return _0x2e3867;};'use strict';function ZendeskAccount(_0x47fe58){this['id']=_0x47fe58['id']||0x0;this[_0x8a44('0x0')]=_0x47fe58[_0x8a44('0x0')]||'';this[_0x8a44('0x1')]=_0x47fe58[_0x8a44('0x1')]||'';this[_0x8a44('0x2')]=_0x47fe58[_0x8a44('0x2')]||'';this[_0x8a44('0x3')]=_0x47fe58[_0x8a44('0x3')]||'';this[_0x8a44('0x4')]=_0x47fe58['remoteUri']||'';this[_0x8a44('0x5')]=_0x47fe58['authType']||'';this['type']=_0x47fe58['type']||_0x8a44('0x6');this[_0x8a44('0x7')]=_0x47fe58['serverUrl']||'';this['Configurations']=_0x47fe58['Configurations']||{};}module[_0x8a44('0x8')]=ZendeskAccount;
\ No newline at end of file
index 72561b2..ffab8c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ee5=['clientSecret','serverUrl','code','Configurations','exports','name','description','clientId'];(function(_0x311222,_0x13c636){var _0x594e2f=function(_0x38a98){while(--_0x38a98){_0x311222['push'](_0x311222['shift']());}};_0x594e2f(++_0x13c636);}(_0x4ee5,0x6d));var _0x54ee=function(_0x2cd8aa,_0x509895){_0x2cd8aa=_0x2cd8aa-0x0;var _0x21e392=_0x4ee5[_0x2cd8aa];return _0x21e392;};'use strict';function ZohoAccount(_0x1ac836){this['id']=_0x1ac836['id']||0x0;this['name']=_0x1ac836[_0x54ee('0x0')]||'';this[_0x54ee('0x1')]=_0x1ac836[_0x54ee('0x1')]||'';this['host']=_0x1ac836['host']||'';this['zone']=_0x1ac836['zone']||'';this[_0x54ee('0x2')]=_0x1ac836[_0x54ee('0x2')]||'';this[_0x54ee('0x3')]=_0x1ac836['clientSecret']||'';this[_0x54ee('0x4')]=_0x1ac836['serverUrl']||'';this[_0x54ee('0x5')]=_0x1ac836['code']||'';this['refreshToken']=_0x1ac836['refreshToken']||'';this[_0x54ee('0x6')]=_0x1ac836[_0x54ee('0x6')]||{};}module[_0x54ee('0x7')]=ZohoAccount;
\ No newline at end of file
+var _0xf3f0=['clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host','zone','clientId'];(function(_0x286b9c,_0xeb0910){var _0x406cfd=function(_0x196155){while(--_0x196155){_0x286b9c['push'](_0x286b9c['shift']());}};_0x406cfd(++_0xeb0910);}(_0xf3f0,0x159));var _0x0f3f=function(_0x2e4fd4,_0x407776){_0x2e4fd4=_0x2e4fd4-0x0;var _0x20d3cb=_0xf3f0[_0x2e4fd4];return _0x20d3cb;};'use strict';function ZohoAccount(_0x3b3cfd){this['id']=_0x3b3cfd['id']||0x0;this[_0x0f3f('0x0')]=_0x3b3cfd[_0x0f3f('0x0')]||'';this[_0x0f3f('0x1')]=_0x3b3cfd[_0x0f3f('0x1')]||'';this['host']=_0x3b3cfd[_0x0f3f('0x2')]||'';this[_0x0f3f('0x3')]=_0x3b3cfd['zone']||'';this[_0x0f3f('0x4')]=_0x3b3cfd['clientId']||'';this[_0x0f3f('0x5')]=_0x3b3cfd[_0x0f3f('0x5')]||'';this[_0x0f3f('0x6')]=_0x3b3cfd[_0x0f3f('0x6')]||'';this[_0x0f3f('0x7')]=_0x3b3cfd[_0x0f3f('0x7')]||'';this[_0x0f3f('0x8')]=_0x3b3cfd[_0x0f3f('0x8')]||'';this[_0x0f3f('0x9')]=_0x3b3cfd[_0x0f3f('0x9')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 98e621b..eeeffcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','number','exports','lodash','moment','isNil','string','uniqueid','idContact','type','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x14a0,0x8e));var _0x014a=function(_0x52a7cf,_0x5cec2c){_0x52a7cf=_0x52a7cf-0x0;var _0x20f65f=_0x14a0[_0x52a7cf];return _0x20f65f;};'use strict';var util=require('util');var _=require(_0x014a('0x0'));var moment=require(_0x014a('0x1'));function checkNameSurname(_0x4144ed,_0x28b0f6,_0x32e88c){var _0xd5cdc6='';if(!_[_0x014a('0x2')](_0x28b0f6)&&'string'===typeof _0x28b0f6){_0xd5cdc6+=_0x28b0f6;}if(!_['isNil'](_0x32e88c)&&_0x014a('0x3')===typeof _0x32e88c){_0xd5cdc6+='\x20'+_0x32e88c;}if(_0xd5cdc6!==''){return _0xd5cdc6;}return _0x4144ed;}function Action(_0x12e8da,_0x38a22c,_0x5ec84d,_0x5a61ac,_0x11b8ce){this[_0x014a('0x4')]=_0x5ec84d||undefined;this[_0x014a('0x5')]=_0x12e8da['id'];this['queue']=_0x38a22c['name'];this[_0x014a('0x6')]=_0x38a22c['type'];this['campaigntype']='queue';this['dialAnswer']=![];this[_0x014a('0x7')]=_['isNil'](_0x12e8da[_0x014a('0x8')])?undefined:_0x12e8da[_0x014a('0x8')]['name'];this[_0x014a('0x9')]=this[_0x014a('0x7')]?util[_0x014a('0xa')](_0x014a('0xb'),this[_0x014a('0x7')]):_0x5a61ac||undefined;this[_0x014a('0xc')]=checkNameSurname(_0x12e8da[_0x014a('0xd')][_0x014a('0xe')],_0x12e8da[_0x014a('0xd')][_0x014a('0xf')],_0x12e8da[_0x014a('0xd')][_0x014a('0x10')]);this['active']=_0x12e8da[_0x014a('0x11')]||![];this[_0x014a('0x12')]=_0x12e8da['phone'];this[_0x014a('0x13')]=_0x12e8da[_0x014a('0x13')];this['countbusyretry']=_0x12e8da[_0x014a('0x14')]||0x0;this[_0x014a('0x15')]=_0x12e8da[_0x014a('0x15')]||0x0;this[_0x014a('0x16')]=_0x12e8da[_0x014a('0x16')]||0x0;this[_0x014a('0x17')]=(_0x12e8da[_0x014a('0x14')]||0x0)+(_0x12e8da[_0x014a('0x15')]||0x0)+(_0x12e8da[_0x014a('0x16')]||0x0)+(_0x12e8da[_0x014a('0x18')]||0x0)+(_0x12e8da[_0x014a('0x19')]||0x0)+(_0x12e8da[_0x014a('0x1a')]||0x0)+(_0x12e8da[_0x014a('0x1b')]||0x0)+(_0x12e8da[_0x014a('0x1c')]||0x0);this['countnosuchnumberretry']=_0x12e8da[_0x014a('0x18')]||0x0;this[_0x014a('0x19')]=_0x12e8da[_0x014a('0x19')]||0x0;this[_0x014a('0x1a')]=_0x12e8da[_0x014a('0x1a')]||0x0;this[_0x014a('0x1b')]=_0x12e8da[_0x014a('0x1b')]||0x0;this[_0x014a('0x1c')]=_0x12e8da[_0x014a('0x1c')]||0x0;this['callback']=_0x12e8da[_0x014a('0x1d')];this['callbackuniqueid']=_0x12e8da[_0x014a('0x1e')];this[_0x014a('0x1f')]=_0x12e8da[_0x014a('0x1f')];this[_0x014a('0x20')]=_0x12e8da[_0x014a('0x20')];this[_0x014a('0x21')]=_0x12e8da[_0x014a('0x21')];this[_0x014a('0x22')]=_0x12e8da[_0x014a('0x22')];this['UserId']=_[_0x014a('0x2')](_0x12e8da['Agent'])?_0x12e8da[_0x014a('0x23')]:_0x12e8da[_0x014a('0x8')]['id'];this['VoiceQueueId']=_0x12e8da['VoiceQueueId'];this[_0x014a('0x24')]='';this[_0x014a('0x25')]='';}Action[_0x014a('0x26')]['getCaller']=function(){return util[_0x014a('0xa')](_0x014a('0x27'),this['calleridname'],this[_0x014a('0x28')]);};module[_0x014a('0x29')]=Action;
\ No newline at end of file
+var _0xdb28=['name','type','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','phone','Contact','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','callback','callbackuniqueid','callbackat','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','calleridname','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue'];(function(_0x38aa95,_0x3dd9a7){var _0x4b45eb=function(_0x4e7a41){while(--_0x4e7a41){_0x38aa95['push'](_0x38aa95['shift']());}};_0x4b45eb(++_0x3dd9a7);}(_0xdb28,0x106));var _0x8db2=function(_0x9eee7f,_0x78ff71){_0x9eee7f=_0x9eee7f-0x0;var _0x47bb1f=_0xdb28[_0x9eee7f];return _0x47bb1f;};'use strict';var util=require(_0x8db2('0x0'));var _=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));function checkNameSurname(_0xf66e59,_0x585da1,_0x1f4c45){var _0x11c26d='';if(!_[_0x8db2('0x3')](_0x585da1)&&_0x8db2('0x4')===typeof _0x585da1){_0x11c26d+=_0x585da1;}if(!_[_0x8db2('0x3')](_0x1f4c45)&&'string'===typeof _0x1f4c45){_0x11c26d+='\x20'+_0x1f4c45;}if(_0x11c26d!==''){return _0x11c26d;}return _0xf66e59;}function Action(_0x21a03e,_0x1d2dd3,_0x5f42ee,_0x494b40,_0x477f50){this[_0x8db2('0x5')]=_0x5f42ee||undefined;this[_0x8db2('0x6')]=_0x21a03e['id'];this[_0x8db2('0x7')]=_0x1d2dd3[_0x8db2('0x8')];this[_0x8db2('0x9')]=_0x1d2dd3[_0x8db2('0x9')];this['campaigntype']=_0x8db2('0x7');this[_0x8db2('0xa')]=![];this[_0x8db2('0xb')]=_['isNil'](_0x21a03e[_0x8db2('0xc')])?undefined:_0x21a03e[_0x8db2('0xc')]['name'];this[_0x8db2('0xd')]=this[_0x8db2('0xb')]?util[_0x8db2('0xe')](_0x8db2('0xf'),this[_0x8db2('0xb')]):_0x494b40||undefined;this['calleridname']=checkNameSurname(_0x21a03e['Contact'][_0x8db2('0x10')],_0x21a03e[_0x8db2('0x11')][_0x8db2('0x12')],_0x21a03e[_0x8db2('0x11')][_0x8db2('0x13')]);this[_0x8db2('0x14')]=_0x21a03e[_0x8db2('0x14')]||![];this[_0x8db2('0x15')]=_0x21a03e[_0x8db2('0x10')];this[_0x8db2('0x16')]=_0x21a03e['scheduledat'];this[_0x8db2('0x17')]=_0x21a03e[_0x8db2('0x17')]||0x0;this['countcongestionretry']=_0x21a03e[_0x8db2('0x18')]||0x0;this[_0x8db2('0x19')]=_0x21a03e[_0x8db2('0x19')]||0x0;this[_0x8db2('0x1a')]=(_0x21a03e[_0x8db2('0x17')]||0x0)+(_0x21a03e[_0x8db2('0x18')]||0x0)+(_0x21a03e['countnoanswerretry']||0x0)+(_0x21a03e['countnosuchnumberretry']||0x0)+(_0x21a03e[_0x8db2('0x1b')]||0x0)+(_0x21a03e[_0x8db2('0x1c')]||0x0)+(_0x21a03e[_0x8db2('0x1d')]||0x0)+(_0x21a03e[_0x8db2('0x1e')]||0x0);this['countnosuchnumberretry']=_0x21a03e[_0x8db2('0x1f')]||0x0;this[_0x8db2('0x1b')]=_0x21a03e[_0x8db2('0x1b')]||0x0;this[_0x8db2('0x1c')]=_0x21a03e[_0x8db2('0x1c')]||0x0;this['countmachineretry']=_0x21a03e[_0x8db2('0x1d')]||0x0;this[_0x8db2('0x1e')]=_0x21a03e[_0x8db2('0x1e')]||0x0;this[_0x8db2('0x20')]=_0x21a03e[_0x8db2('0x20')];this[_0x8db2('0x21')]=_0x21a03e[_0x8db2('0x21')];this['callbackat']=_0x21a03e[_0x8db2('0x22')];this['recallme']=_0x21a03e['recallme'];this['ContactId']=_0x21a03e['ContactId'];this[_0x8db2('0x23')]=_0x21a03e[_0x8db2('0x23')];this[_0x8db2('0x24')]=_[_0x8db2('0x3')](_0x21a03e[_0x8db2('0xc')])?_0x21a03e[_0x8db2('0x24')]:_0x21a03e['Agent']['id'];this[_0x8db2('0x25')]=_0x21a03e[_0x8db2('0x25')];this[_0x8db2('0x26')]='';this[_0x8db2('0x27')]='';}Action['prototype'][_0x8db2('0x28')]=function(){return util[_0x8db2('0xe')](_0x8db2('0x29'),this[_0x8db2('0x2a')],this[_0x8db2('0x2b')]);};module[_0x8db2('0x2c')]=Action;
\ No newline at end of file
index 7ef373d..a3d34e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['countbusyretry','scheduledAt','unlockAgent','idContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','outboundAbandonedCallsDay','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','dialAbandonedRetryFrequency','countmachineretry','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','dialstatus','[callProgressDetectingCustomer][machine]','[default]','loggerError','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','checkInBlack','Contact\x20is\x20undefined','lookAgent','execCall','Queue:\x20','custom:agentcalled','[Preview][execCall][failure]','logBlacklist','createHistory','active','SIP/%s','format','reachable','unmonitored','execRun','getContactPreview','recallme','validateContact','checkIsBlackList','phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','isEmpty','logger','[Preview][validateContact][Empty\x20Contact]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdNumber','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','addVariables','toLowerVariables','variables','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','isUndefined','transfer','[syncHangup][talking][transfer]','destuniqueid','filterKey','keys','variable','addVariable','value','error','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','ioredis','preview','../../../config/logger','actionPreview','./action','../dialer/utils','defaults','socket.io-emitter','redis','prototype','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','syncHangup','bind','hanguprequest','syncHangupRequest','syncNewExten','syncVarSet','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','pTalking','available','paused','message','INACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','CAMPAIGN_STATUS','DEACTIVATED','hasOwnProperty','dialMethod','booked','type','outbound','dialActive','setMessage','recallMe','clearZombieChannel','enqueue','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','originated','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','loggedIn','NO_AGENTS_LOGGED','isActive','isTrunkReachable','Trunk','TrunkBackup','UNREACHABLE_TRUNK','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','activeContact','actioncountonusuch','incrementPreviewCounters','swapAdditionalPhones','ANSWER','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','custom:agentcomplete','complete','total','answered','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','linkedid','BUSY','dialBusyRetryFrequency','custom:agentbusy','[callProgressDetectingCustomer][logBusy]','Global','[callProgressDetectingCustomer][logBusyGlobal]'];(function(_0x1d2699,_0x322409){var _0x4c5a71=function(_0x3b2626){while(--_0x3b2626){_0x1d2699['push'](_0x1d2699['shift']());}};_0x4c5a71(++_0x322409);}(_0x4b84,0x1cc));var _0x44b8=function(_0x45096e,_0x17e82d){_0x45096e=_0x45096e-0x0;var _0xba1fa3=_0x4b84[_0x45096e];return _0xba1fa3;};'use strict';var util=require(_0x44b8('0x0'));var _=require(_0x44b8('0x1'));var uuid=require('uuid');var moment=require('moment');var Redis=require(_0x44b8('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x44b8('0x3'));var loggerAction=require(_0x44b8('0x4'))(_0x44b8('0x5'));var ami=require('../ami');var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x44b8('0x6'));var ut=require('./util/util');var utils=require(_0x44b8('0x7'));config['redis']=_[_0x44b8('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x44b8('0x9'))(new Redis(config[_0x44b8('0xa')]));var Sequence=function(){};Sequence[_0x44b8('0xb')]['enqueue']=function(_0xc650ec){this[_0x44b8('0xc')]=this[_0x44b8('0xc')]?this[_0x44b8('0xc')][_0x44b8('0xd')](_0xc650ec):_0xc650ec();};function Preview(_0x37e471){this[_0x44b8('0xe')]=new Sequence();this['campaignsPreview']=_0x37e471[_0x44b8('0xf')];this[_0x44b8('0x10')]=_0x37e471['trunks'];this[_0x44b8('0x11')]={};this['agents']=_0x37e471[_0x44b8('0x12')];this[_0x44b8('0x13')]=0x0;ami['on']('originateresponse',this[_0x44b8('0x14')]['bind'](this));ami['on']('hangup',this[_0x44b8('0x15')][_0x44b8('0x16')](this));ami['on'](_0x44b8('0x17'),this[_0x44b8('0x18')]['bind'](this));ami['on']('dialend',this['syncDialEnd'][_0x44b8('0x16')](this));ami['on']('newexten',this[_0x44b8('0x19')][_0x44b8('0x16')](this));ami['on']('varset',this[_0x44b8('0x1a')][_0x44b8('0x16')](this));ami['on']('attendedtransfer',this[_0x44b8('0x1b')][_0x44b8('0x16')](this));ami['on']('blindtransfer',this[_0x44b8('0x1c')][_0x44b8('0x16')](this));this[_0x44b8('0x1d')](this[_0x44b8('0x1e')]);}function emit(_0x102ef9,_0x369c09,_0x452f2f){io['to'](_0x102ef9)[_0x44b8('0x1f')](_0x369c09,_0x452f2f);}function emitVoiceQueueChannelRemove(_0x429461){logger[_0x44b8('0x20')](_0x44b8('0x21'),JSON[_0x44b8('0x22')](_0x429461));emit(util['format'](_0x44b8('0x23'),_0x429461[_0x44b8('0x24')]),_0x44b8('0x25'),_0x429461);io[_0x44b8('0x1f')](_0x44b8('0x26'),_0x429461);}function notSendMessagesQueue(_0x51a34a){if(_0x51a34a[_0x44b8('0x27')]){if(_0x51a34a['originated']===0x0&&_0x51a34a[_0x44b8('0x28')]===0x0){_0x51a34a[_0x44b8('0x27')]=![];_0x51a34a[_0x44b8('0x29')]=0x0;_0x51a34a[_0x44b8('0x2a')]=0x0;_0x51a34a[_0x44b8('0x2b')]=utils['CAMPAIGN_STATUS'][_0x44b8('0x2c')];ut['logger'](_0x44b8('0x2d'),_0x51a34a[_0x44b8('0x24')]+'\x20is\x20not\x20active');}else{_0x51a34a[_0x44b8('0x2b')]=utils[_0x44b8('0x2e')][_0x44b8('0x2f')];ut['logger'](_0x44b8('0x2d'),_0x51a34a[_0x44b8('0x24')]+'\x20is\x20deactivated');}}}Preview[_0x44b8('0xb')]['loopCampaigns']=function(){var _0xfb0028=this;setInterval(function(){_0xfb0028['syncCampaigns']();},0x7cf);};Preview['prototype']['syncCampaigns']=function(){var _0x387293=this[_0x44b8('0x1e')];this[_0x44b8('0x13')]+=0x1;for(var _0x1bd1be in _0x387293){if(_0x387293[_0x44b8('0x30')](_0x1bd1be)&&(_0x387293[_0x1bd1be][_0x44b8('0x31')]===_0x44b8('0x3')||_0x387293[_0x1bd1be][_0x44b8('0x31')]===_0x44b8('0x32'))&&_0x387293[_0x1bd1be][_0x44b8('0x33')]===_0x44b8('0x34')){if(this[_0x44b8('0x13')]>0x7){this[_0x44b8('0x13')]=0x0;this['clearZombieChannels']();}}if(_0x387293[_0x44b8('0x30')](_0x1bd1be)&&_0x387293[_0x1bd1be]['dialMethod']===_0x44b8('0x3')&&_0x387293[_0x1bd1be][_0x44b8('0x33')]===_0x44b8('0x34')){if(_0x387293[_0x1bd1be][_0x44b8('0x35')]){this[_0x44b8('0x36')](_0x387293[_0x1bd1be]);if(_0x387293[_0x1bd1be]['dialPreviewAutoRecallMe'])this[_0x44b8('0x37')](_0x387293[_0x1bd1be]);}else{notSendMessagesQueue(_0x387293[_0x1bd1be]);}}}};Preview[_0x44b8('0xb')][_0x44b8('0x38')]=function(_0x339f0f){var _0x46b008=this;this['sequence'][_0x44b8('0x39')](function(){if(!_[_0x44b8('0x3a')](_0x46b008[_0x44b8('0x11')][_0x339f0f])){loggerAction[_0x44b8('0x20')](_0x44b8('0x3b'),_0x339f0f,_0x44b8('0x3c'),_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')],_0x44b8('0x3e'),JSON[_0x44b8('0x22')](_0x46b008[_0x44b8('0x1e')][_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]][_0x44b8('0x3f')]),_0x44b8('0x40'),JSON[_0x44b8('0x22')](_0x46b008[_0x44b8('0x1e')][_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]][_0x44b8('0x28')]),JSON[_0x44b8('0x22')](_0x46b008[_0x44b8('0x11')][_0x339f0f]['dialAnswer']),JSON[_0x44b8('0x22')](_[_0x44b8('0x41')](_0x46b008['actions'][_0x339f0f],[_0x44b8('0x42'),_0x44b8('0x43'),_0x44b8('0x44'),_0x44b8('0x45')])));return ami['Action']({'action':_0x44b8('0x46'),'channel':_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x47')]})[_0x44b8('0x48')](function(_0x9cb2a){if(_0x9cb2a[_0x44b8('0x2b')]===_0x44b8('0x49')){setTimeout(function(){if(_0x46b008[_0x44b8('0x11')][_0x339f0f]){ut[_0x44b8('0x4a')](_0x46b008[_0x44b8('0x1e')][_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]],_0x44b8('0x4b'));if(_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x4c')]===!![]){ut[_0x44b8('0x4d')](_0x46b008['campaignsPreview'][_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]],_0x44b8('0x4b'));ut['loggerError'](_0x44b8('0x4e')+_0x339f0f,_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]);}ut['loggerError'](_0x44b8('0x4f')+_0x339f0f,_0x46b008[_0x44b8('0x11')][_0x339f0f][_0x44b8('0x3d')]);delete _0x46b008[_0x44b8('0x11')][_0x339f0f];}},0x2328);}});}});};Preview[_0x44b8('0xb')]['clearZombieChannels']=function(){var _0x5ae5f9=this;loggerAction[_0x44b8('0x20')](_0x44b8('0x50'),_[_0x44b8('0x51')](this[_0x44b8('0x11')]));for(var _0x43906b in this[_0x44b8('0x11')]){if(_0x5ae5f9[_0x44b8('0x11')][_0x44b8('0x30')](_0x43906b)){_0x5ae5f9[_0x44b8('0x38')](_0x43906b);}}};Preview[_0x44b8('0xb')][_0x44b8('0x37')]=function(_0x2a9b2a){var _0xc1b9de=this;rpcDb[_0x44b8('0x52')](_0x2a9b2a['id'],ut[_0x44b8('0x53')](this[_0x44b8('0x12')]))[_0x44b8('0x54')](function(_0x3b3d5d){if(!_[_0x44b8('0x3a')](_0x3b3d5d)){for(var _0x49c507=0x0;_0x49c507<_0x3b3d5d['length'];_0x49c507+=0x1){if(ut[_0x44b8('0x55')](_0x3b3d5d[_0x49c507][_0x44b8('0x56')])<_0x2a9b2a[_0x44b8('0x57')]*0x3c){if(_0x3b3d5d[_0x49c507][_0x44b8('0x58')]&&!_0x3b3d5d[_0x49c507][_0x44b8('0x58')][_0x44b8('0x59')]){_0xc1b9de[_0x44b8('0x5a')](_0x3b3d5d[_0x49c507]['id'])['then'](ut[_0x44b8('0x5b')]('[RecallMe]'))[_0x44b8('0x48')](ut[_0x44b8('0x5b')](_0x44b8('0x5c')));}else{rpcDb[_0x44b8('0x5d')](_0x3b3d5d[_0x49c507]['id']);}}else{var _0x103d57=new Action(_0x3b3d5d[_0x49c507],_0x2a9b2a);_0x103d57[_0x44b8('0x5e')]=moment()['format'](_0x44b8('0x5f'));_0x2a9b2a[_0x44b8('0x60')]+=0x1;ut[_0x44b8('0x61')](_0x103d57,0x17,_0x44b8('0x62'));if(_0x2a9b2a['dialRecallInQueue']){rpcDb[_0x44b8('0x63')](ut[_0x44b8('0x64')](_0x3b3d5d[_0x49c507]));rpcDb[_0x44b8('0x65')](_0x103d57,_0x44b8('0x66'));}else{ut[_0x44b8('0x61')](_0x103d57,0x16,_0x44b8('0x67'));rpcDb['createCustomerHistory'](_0x103d57,_0x44b8('0x68'));rpcDb[_0x44b8('0x69')](_0x103d57,_0x44b8('0x68'));}}}}})[_0x44b8('0x48')](ut[_0x44b8('0x5b')]('[getContactRecallMe]'));};Preview['prototype'][_0x44b8('0x36')]=function(_0x4eb344){_0x4eb344[_0x44b8('0x27')]=!![];if(ut['IsNotLoggedIn'](_0x4eb344[_0x44b8('0x6a')])){_0x4eb344[_0x44b8('0x2b')]=utils[_0x44b8('0x2e')][_0x44b8('0x6b')];}else if(!ut[_0x44b8('0x6c')](_0x4eb344[_0x44b8('0x35')])){_0x4eb344[_0x44b8('0x2b')]=utils['CAMPAIGN_STATUS'][_0x44b8('0x2c')];}else if(!this[_0x44b8('0x6d')](_0x4eb344[_0x44b8('0x6e')])){if(!this['isTrunkReachable'](_0x4eb344[_0x44b8('0x6f')])){_0x4eb344[_0x44b8('0x2b')]=utils[_0x44b8('0x2e')][_0x44b8('0x70')];}else{_0x4eb344['message']=utils[_0x44b8('0x2e')][_0x44b8('0x71')];}}else{_0x4eb344['message']=utils[_0x44b8('0x2e')][_0x44b8('0x71')];}};Preview[_0x44b8('0xb')][_0x44b8('0x72')]=function(_0xe86e34,_0x546a50,_0x5b99a3){var _0xc181d2=this;var _0x3154bc=this[_0x44b8('0x11')][_0x546a50];var _0x4358aa=this[_0x44b8('0x1e')][_0x3154bc[_0x44b8('0x3d')]];var _0x3c9534;var _0xf0fb0d=![];var _0x10bbd9=0x2;var _0xdff81b=0x3;if(_0x4358aa){switch(_0x5b99a3){case'1':_0x4358aa[_0x44b8('0x73')]+=0x1;_0x3154bc[_0x44b8('0x74')]+=0x1;_0x3154bc['countglobal']=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x0,_0x44b8('0x76'));ami[_0x44b8('0x1f')](_0x44b8('0x77'),ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0x79')));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0x7a'));_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'0',_0x4358aa)[_0x44b8('0x54')](function(_0x15bcba){_0xf0fb0d=_0x15bcba[_0x44b8('0x7c')]==0x1;_0x10bbd9=_0x4358aa[_0x44b8('0x7d')];_0xdff81b=_0x4358aa[_0x44b8('0x7e')];if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,'Global');rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0x81'));}else{if(_0x3154bc[_0x44b8('0x74')]>=_0x4358aa[_0x44b8('0x82')]){rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0x81'));}else{rpcDb[_0x44b8('0x83')](ut['scheduledAt'](_0x3154bc,_0x44b8('0x74'),_0x4358aa[_0x44b8('0x7d')]),_0x3154bc['unlockAgent'],_0x3154bc[_0x44b8('0x84')]);}}delete this[_0x44b8('0x11')][_0xe86e34['linkedid']];}else{_0x3154bc[_0x44b8('0x74')]++;logger[_0x44b8('0x20')](_0x44b8('0x85'),_0x3154bc['countnosuchnumberretry']);logger[_0x44b8('0x20')]('id',_0x3154bc['idContact']);_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc['idContact'],'field':{'countnosuchnumberretry':_0x3154bc[_0x44b8('0x74')]}})[_0x44b8('0x54')](function(){_0xc181d2[_0x44b8('0x87')](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});});}});break;case _0x44b8('0x88'):var _0x230b6a=moment()['format'](_0x44b8('0x5f'));_0x3154bc['responsetime']=_0x230b6a;_0x3154bc[_0x44b8('0x89')]=_0x230b6a;_0x3154bc[_0x44b8('0x4c')]=!![];_0x4358aa['pTalking']+=0x1;logger[_0x44b8('0x20')](_0x44b8('0x8a'),_0x3154bc[_0x44b8('0x8b')],_0x44b8('0x8c'),_0x4358aa[_0x44b8('0x24')],_0x44b8('0x40'),_0x4358aa[_0x44b8('0x28')]);ami[_0x44b8('0x1f')](_0x44b8('0x8d'),ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0x8e'),this[_0x44b8('0x1e')][_0x3154bc['queue']]));if(_0x4358aa[_0x44b8('0x8f')]){ami[_0x44b8('0x1f')](_0x44b8('0x90'),ut['buildAcw'](_0x3154bc));}break;case'16':ami[_0x44b8('0x1f')](_0x44b8('0x91'),ut['buildObj'](_0x3154bc,_0x44b8('0x92'),this[_0x44b8('0x1e')][_0x3154bc[_0x44b8('0x3d')]]));emitVoiceQueueChannelRemove(ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0x92')));_0x4358aa['outboundAnswerCallsDay']+=0x1;_0x4358aa[_0x44b8('0x93')]+=0x1;_0x4358aa[_0x44b8('0x94')]+=0x1;ut[_0x44b8('0x4d')](_0x4358aa,_0x44b8('0x95'));_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x4,_0x44b8('0x97'));rpcDb['createCustomerHistory'](_0x3154bc,_0x44b8('0x98'));rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0x99'));rpcDb[_0x44b8('0x9a')](_0x3154bc);_0x4358aa['sumDuration']+=_0x3154bc['talktime'];_0x4358aa['sumBillable']+=_0x3154bc[_0x44b8('0x9b')];logger[_0x44b8('0x20')](_0x44b8('0x9c'),_0x3154bc[_0x44b8('0x8b')],_0x44b8('0x8c'),_0x4358aa['name'],_0x44b8('0x40'),_0x4358aa['pTalking']);delete this[_0x44b8('0x11')][_0xe86e34[_0x44b8('0x9d')]];break;case _0x44b8('0x9e'):_0x4358aa['outboundBusyCallsDay']+=0x1;_0x3154bc['countbusyretry']+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x5,'Busy');_0x10bbd9=_0x4358aa[_0x44b8('0x9f')];_0xdff81b=_0x4358aa[_0x44b8('0x7e')];ami[_0x44b8('0x1f')](_0x44b8('0xa0'),ut[_0x44b8('0x78')](_0x3154bc,'busy'));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0xa1'));_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'5',_0x4358aa)[_0x44b8('0x54')](function(_0x220f1b){_0xf0fb0d=_0x220f1b['additional']==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xa3'));}else{if(_0x3154bc[_0x44b8('0xa4')]>=_0x4358aa['dialBusyMaxRetry']){rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xa1'));}else{rpcDb['rescheduleContact'](ut[_0x44b8('0xa5')](_0x3154bc,_0x44b8('0xa4'),_0x4358aa['dialBusyRetryFrequency']),_0x3154bc[_0x44b8('0xa6')],_0x3154bc['activeContact']);}}}else{_0x3154bc['countbusyretry']++;_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc[_0x44b8('0xa7')],'field':{'countbusyretry':_0x3154bc[_0x44b8('0xa4')]}})['then'](function(){_0xc181d2['swapAdditionalPhones'](_0x3154bc,_0x10bbd9,_0xdff81b)['then'](function(){});});}});break;case _0x44b8('0xa8'):_0x4358aa[_0x44b8('0xa9')]+=0x1;_0x3154bc[_0x44b8('0xaa')]+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x3,_0x44b8('0xab'));_0x10bbd9=_0x4358aa[_0x44b8('0xac')];_0xdff81b=_0x4358aa['callAdditionalPhoneAfterMin'];var _0x388c4c=ut['buildNoAnswerEventPayload'](_0x3154bc,_0x4358aa);ami['emit']('custom:agentnoanswer',_0x388c4c);rpcDb[_0x44b8('0x65')](_0x3154bc,'[callProgressDetectingCustomer][logNoAnswer]');_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'3',_0x4358aa)[_0x44b8('0x54')](function(_0x268e1e){_0xf0fb0d=_0x268e1e[_0x44b8('0x7c')]==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb['createCustomerFinal'](_0x3c9534,_0x44b8('0xad'));}else{if(_0x3154bc[_0x44b8('0xaa')]>=_0x4358aa[_0x44b8('0xae')]){rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xaf'));}else{rpcDb[_0x44b8('0x83')](ut[_0x44b8('0xa5')](_0x3154bc,_0x44b8('0xaa'),_0x4358aa[_0x44b8('0xac')]),_0x3154bc['unlockAgent'],_0x3154bc['activeContact']);}}}else{_0x3154bc[_0x44b8('0xaa')]++;_0xc181d2['incrementPreviewCounters']({'id':_0x3154bc[_0x44b8('0xa7')],'field':{'countnoanswerretry':_0x3154bc[_0x44b8('0xaa')]}})[_0x44b8('0x54')](function(){_0xc181d2['swapAdditionalPhones'](_0x3154bc,_0x10bbd9,_0xdff81b)['then'](function(){});});}});break;case'CONGESTION':_0x4358aa[_0x44b8('0xb0')]+=0x1;_0x3154bc['countcongestionretry']+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x8,_0x44b8('0xb1'));_0x10bbd9=_0x4358aa[_0x44b8('0xb2')];_0xdff81b=_0x4358aa[_0x44b8('0x7e')];ami[_0x44b8('0x1f')](_0x44b8('0xb3'),ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0xb4')));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0xb5'));_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'8',_0x4358aa)[_0x44b8('0x54')](function(_0x5de033){_0xf0fb0d=_0x5de033[_0x44b8('0x7c')]==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xb6'));}else{if(_0x3154bc[_0x44b8('0xb7')]>=_0x4358aa[_0x44b8('0xb8')]){rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xb5'));}else{rpcDb[_0x44b8('0x83')](ut[_0x44b8('0xa5')](_0x3154bc,'countcongestionretry',_0x4358aa[_0x44b8('0x9f')]),_0x3154bc[_0x44b8('0xa6')],_0x3154bc[_0x44b8('0x84')]);}}}else{_0x3154bc['countcongestionretry']++;_0xc181d2['incrementPreviewCounters']({'id':_0x3154bc[_0x44b8('0xa7')],'field':{'countcongestionretry':_0x3154bc[_0x44b8('0xb7')]}})[_0x44b8('0x54')](function(){_0xc181d2['swapAdditionalPhones'](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});});}});break;case _0x44b8('0xb9'):_0x4358aa[_0x44b8('0xba')]+=0x1;_0x3154bc[_0x44b8('0xbb')]+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x14,_0x44b8('0xbc'));_0x10bbd9=_0x4358aa['dialAgentRejectRetryFrequency'];_0xdff81b=_0x4358aa[_0x44b8('0x7e')];ami[_0x44b8('0x1f')](_0x44b8('0xbd'),ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0xbe')));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0xbf'));_0xc181d2['verifyAdditionalPhones'](_0x3154bc,'20',_0x4358aa)['then'](function(_0x478f17){_0xf0fb0d=_0x478f17[_0x44b8('0x7c')]==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0x14,_0x44b8('0xbc'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xc0'));}else{if(_0x3154bc[_0x44b8('0xbb')]>=_0x4358aa[_0x44b8('0xc1')]){rpcDb['createCustomerFinal'](_0x3154bc,_0x44b8('0xc0'));}else{rpcDb[_0x44b8('0x83')](ut['scheduledAt'](_0x3154bc,'countagentrejectretry',_0x4358aa[_0x44b8('0xc2')]),_0x3154bc['unlockAgent'],_0x3154bc[_0x44b8('0x84')]);}}}else{_0x3154bc[_0x44b8('0xaa')]++;_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc['idContact'],'field':{'countnoanswerretry':_0x3154bc[_0x44b8('0xaa')]}})[_0x44b8('0x54')](function(){_0xc181d2[_0x44b8('0x87')](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});});}});break;case'ABANDONED':_0x4358aa[_0x44b8('0xc3')]+=0x1;_0x3154bc['countabandonedretry']+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0xb,_0x44b8('0xc4'));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0xc5'));_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'11',_0x4358aa)['then'](function(_0x4d3b82){_0xf0fb0d=_0x4d3b82['additional']==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xc5'));}else{if(_0x3154bc[_0x44b8('0xc6')]>=_0x4358aa[_0x44b8('0xc7')]){rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xc5'));}else{rpcDb[_0x44b8('0x83')](ut[_0x44b8('0xa5')](_0x3154bc,_0x44b8('0xc8'),_0x4358aa[_0x44b8('0xc9')]),_0x3154bc[_0x44b8('0xa6')],_0x3154bc[_0x44b8('0x84')]);}}}else{_0x3154bc[_0x44b8('0xaa')]++;_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc['idContact'],'field':{'countnoanswerretry':_0x3154bc[_0x44b8('0xaa')]}})['then'](function(){_0xc181d2[_0x44b8('0x87')](_0x3154bc,_0x10bbd9,_0xdff81b)['then'](function(){});});}});break;case'18':_0x4358aa['outboundUnknownCallsDay']+=0x1;_0x3154bc[_0x44b8('0xca')]+=0x1;_0x3154bc['countglobal']=ut['totalGlobal'](_0x3154bc);ut['logCustomer'](_0x3154bc,0x12,_0xe86e34['cause-txt']||_0xe86e34['dialstatus']);ami[_0x44b8('0x1f')](_0x44b8('0xcb'),ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0xcc')));rpcDb['createCustomerHistory'](_0x3154bc,_0x44b8('0xcd'));_0xc181d2[_0x44b8('0x7b')](_0x3154bc,'18',_0x4358aa)['then'](function(_0x572e5c){_0xf0fb0d=_0x572e5c[_0x44b8('0x7c')]==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut['cloneAction'](_0x3154bc,0x12,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xcd'));}else{rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xcd'));}}else{_0x3154bc[_0x44b8('0xaa')]++;_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc[_0x44b8('0xa7')],'field':{'countnoanswerretry':_0x3154bc[_0x44b8('0xaa')]}})['then'](function(){_0xc181d2[_0x44b8('0x87')](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});});}});delete this['actions'][_0xe86e34[_0x44b8('0x9d')]];break;case'19':_0x4358aa[_0x44b8('0xce')]+=0x1;_0x3154bc[_0x44b8('0x96')]=ut['totalGlobal'](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0x13,_0xe86e34['cause-txt']||_0xe86e34[_0x44b8('0xcf')]);ami[_0x44b8('0x1f')]('custom:amd',ut[_0x44b8('0x78')](_0x3154bc,_0x44b8('0xcc')));rpcDb[_0x44b8('0x65')](_0x3154bc,_0x44b8('0xd0'));_0xc181d2['verifyAdditionalPhones'](_0x3154bc,'18',_0x4358aa)[_0x44b8('0x54')](function(_0xf73cde){_0xf0fb0d=_0xf73cde[_0x44b8('0x7c')]==0x1;if(!_0xf0fb0d){if(ut[_0x44b8('0x75')](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xd0'));}else{rpcDb['createCustomerFinal'](_0x3154bc,'[callProgressDetectingCustomer][machine]');}}else{_0x3154bc[_0x44b8('0xaa')]++;_0xc181d2[_0x44b8('0x86')]({'id':_0x3154bc[_0x44b8('0xa7')],'field':{'countnoanswerretry':_0x3154bc[_0x44b8('0xaa')]}})[_0x44b8('0x54')](function(){_0xc181d2['swapAdditionalPhones'](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});});}});delete this['actions'][_0xe86e34[_0x44b8('0x9d')]];break;default:if(_0x3154bc['dialAnswer']){ut[_0x44b8('0x4d')](_0x4358aa,_0x44b8('0xd1'));ut[_0x44b8('0xd2')](_0x44b8('0xd3')+_0x4358aa[_0x44b8('0x24')],_0xe86e34);}_0x4358aa[_0x44b8('0xce')]+=0x1;_0x3154bc[_0x44b8('0x96')]=ut[_0x44b8('0x75')](_0x3154bc);ut[_0x44b8('0x61')](_0x3154bc,0xc,_0xe86e34['cause-txt']||_0xe86e34[_0x44b8('0xcf')]);_0x10bbd9=_0x4358aa[_0x44b8('0xc2')];_0xdff81b=_0x4358aa[_0x44b8('0x7e')];rpcDb[_0x44b8('0x65')](_0x3154bc,'[callProgressDetectingCustomer][logUnknown]');_0xc181d2['verifyAdditionalPhones'](_0x3154bc,'20',_0x4358aa)['then'](function(_0xf5e39){_0xf0fb0d=_0xf5e39['additional']==0x1;if(!_0xf0fb0d){if(ut['totalGlobal'](_0x3154bc)>=_0x4358aa[_0x44b8('0x7f')]){_0x3c9534=ut[_0x44b8('0x80')](_0x3154bc,0xf,_0x44b8('0xa2'));rpcDb[_0x44b8('0x69')](_0x3c9534,_0x44b8('0xd4'));}else{rpcDb[_0x44b8('0x69')](_0x3154bc,_0x44b8('0xd4'));}delete this[_0x44b8('0x11')][_0xe86e34['linkedid']];}else{_0xc181d2[_0x44b8('0x87')](_0x3154bc,_0x10bbd9,_0xdff81b)[_0x44b8('0x54')](function(){});}});}if(!(_0x3154bc[_0x44b8('0x4c')]&&_0x5b99a3==='16')){ut[_0x44b8('0x4a')](_0x4358aa,'[callProgressDetectingCustomer]');logger[_0x44b8('0x20')](_0x44b8('0xd5'),_0x3154bc[_0x44b8('0x8b')],'\x20Queue',_0x4358aa['name'],_0x44b8('0x3e'),_0x4358aa[_0x44b8('0x3f')]);}if(_0x5b99a3!==_0x44b8('0x88')){delete this[_0x44b8('0x11')][_0xe86e34[_0x44b8('0x9d')]];delete this['actions'][_0xe86e34[_0x44b8('0xd6')]];}_0x4358aa[_0x44b8('0xd7')]=!![];}};Preview['prototype'][_0x44b8('0xd8')]=function(_0x13942e,_0xcb4c9b,_0x237f67){if(_['isUndefined'](_0xcb4c9b)&&_0x44b8('0xd9')!==typeof _0xcb4c9b){return;}if(_['isUndefined'](_0x237f67)&&_0x44b8('0xd9')!==typeof _0x237f67){return;}switch(_0x237f67[_0x44b8('0xda')]){case'0':ut[_0x44b8('0xdb')](_0x13942e,0x0,_0x44b8('0x76'));rpcDb[_0x44b8('0xdc')](_0x13942e,_0x44b8('0xdd'));break;case'3':ut[_0x44b8('0xdb')](_0x13942e,0x3,_0x44b8('0xab'));rpcDb['createAgentHistory'](_0x13942e,_0x44b8('0xde'));break;case'5':ut[_0x44b8('0xdb')](_0x13942e,0x5,_0x44b8('0xdf'));rpcDb[_0x44b8('0xdc')](_0x13942e,_0x44b8('0xe0'));break;case'8':ut[_0x44b8('0xdb')](_0x13942e,0x8,'Congestion');rpcDb['createAgentHistory'](_0x13942e,_0x44b8('0xe1'));break;case'22':ut[_0x44b8('0xdb')](_0x13942e,0x16,'AnswerAGI');rpcDb[_0x44b8('0xdc')](_0x13942e,_0x44b8('0xe2'));break;default:ut['logAgent'](_0x13942e,0xc,_0x237f67[_0x44b8('0xda')]);rpcDb[_0x44b8('0xdc')](_0x13942e,_0x44b8('0xe1'));}ut[_0x44b8('0x4a')](_0xcb4c9b,_0x44b8('0xe3'));logger[_0x44b8('0x20')](_0x44b8('0xe4'),_0x13942e[_0x44b8('0x8b')],_0x44b8('0x8c'),_0xcb4c9b[_0x44b8('0x24')],_0x44b8('0x3e'),_0xcb4c9b[_0x44b8('0x3f')]);delete this[_0x44b8('0x11')][_0x13942e[_0x44b8('0x8b')]];};Preview[_0x44b8('0xb')]['verifyAdditionalPhones']=function(_0x30fca,_0x3d92a9,_0x13ab7b){return cmHopperAdditionalPhone[_0x44b8('0x7b')](_0x30fca,_0x3d92a9,_0x13ab7b)['catch'](logger[_0x44b8('0x20')](_0x44b8('0xe5')));};Preview['prototype'][_0x44b8('0x87')]=function(_0x4b9731,_0x1cd645,_0x3fee20){return cmHopperAdditionalPhone[_0x44b8('0x87')](_0x4b9731,_0x1cd645,_0x3fee20)[_0x44b8('0x48')](logger['info']('[swapAdditionalPhone]\x20'));};Preview[_0x44b8('0xb')][_0x44b8('0x86')]=function(_0x5a2a9f){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0x44b8('0x86')](_0x5a2a9f))[_0x44b8('0x48')](logger[_0x44b8('0x20')]('[incrementPreviewCounters]\x20'));};Preview['prototype'][_0x44b8('0xe6')]=function(_0x289fbd,_0x12f78b,_0x24a6a6,_0x2f5451,_0xc54e64){var _0x100295=this;return new Promise(function(_0x287902,_0x2675e9){if(_['isNil'](_0x12f78b)||_[_0x44b8('0x3a')](_0x12f78b['Contact'])||_[_0x44b8('0x3a')](_0x12f78b['phone'])||_['isNil'](_0x12f78b[_0x44b8('0x44')])){_0x2675e9(ut[_0x44b8('0x2b')](_0x44b8('0xe7'),_0x2f5451,_0xc54e64));return;}var _0x13c741=uuid['v4']();var _0x2eec38=_0x100295[_0x44b8('0x1e')][_0x12f78b[_0x44b8('0x3c')][_0x44b8('0x24')]];var _0x17b749=_0x24a6a6?_0x100295['agents'][_0x24a6a6]['id']:undefined;_0x100295[_0x44b8('0x11')][_0x13c741]=new Action(_0x12f78b,_0x2eec38,_0x13c741,_0x24a6a6,_0x17b749);var _0x1e3b5f=_0x100295[_0x44b8('0x11')][_0x13c741];_0x1e3b5f['unlockAgent']=_0x2f5451;_0x1e3b5f['activeContact']=_0xc54e64;_0x1e3b5f[_0x44b8('0xe8')]=_0x24a6a6;if(_['isEmpty'](_0x289fbd)){_0x100295[_0x44b8('0xe9')](_0x1e3b5f,_0x2eec38,_0x12f78b,_0x24a6a6)['then'](function(_0x1ae0bb){logger['info']('[Preview][execCall][success]',_0x44b8('0xea')+_0x1e3b5f[_0x44b8('0x3d')]+'\x20IdHopper:\x20'+_0x1e3b5f[_0x44b8('0xa7')],JSON[_0x44b8('0x22')](_0x1ae0bb));ami[_0x44b8('0x1f')](_0x44b8('0xeb'),ut[_0x44b8('0x78')](_0x1e3b5f,'called',_0x100295[_0x44b8('0x1e')][_0x1e3b5f['queue']]));_0x287902(ut['message']('Calling'));})[_0x44b8('0x48')](function(_0x2818ec){ut['logger'](_0x44b8('0xec'),_0x2818ec);_0x2675e9(ut[_0x44b8('0x2b')]('Call\x20failed',_0x2f5451,_0xc54e64));});}else{_0x2eec38['outboundBlacklistCallsDay']+=0x1;ut[_0x44b8('0xed')](_0x1e3b5f);rpcDb[_0x44b8('0xee')](_0x1e3b5f,'[Blacklist][error]');delete _0x100295[_0x44b8('0x11')][_0x13c741];_0x2675e9(ut[_0x44b8('0x2b')]('Contact\x20in\x20black\x20List',_0x2f5451,_0xc54e64));}});};Preview[_0x44b8('0xb')][_0x44b8('0x6d')]=function(_0x5ce5ed){return!_[_0x44b8('0x3a')](_0x5ce5ed)&&!_[_0x44b8('0x3a')](_0x5ce5ed[_0x44b8('0x24')])&&!_['isNil'](_0x5ce5ed[_0x44b8('0xef')])&&_0x5ce5ed['active']&&!_[_0x44b8('0x3a')](this['trunks'][util['format'](_0x44b8('0xf0'),_0x5ce5ed[_0x44b8('0x24')])])&&!_[_0x44b8('0x3a')](this[_0x44b8('0x10')][util[_0x44b8('0xf1')](_0x44b8('0xf0'),_0x5ce5ed[_0x44b8('0x24')])][_0x44b8('0x46')])&&(this[_0x44b8('0x10')][util[_0x44b8('0xf1')](_0x44b8('0xf0'),_0x5ce5ed['name'])][_0x44b8('0x46')]===_0x44b8('0xf2')||this[_0x44b8('0x10')][util[_0x44b8('0xf1')](_0x44b8('0xf0'),_0x5ce5ed[_0x44b8('0x24')])][_0x44b8('0x46')]===_0x44b8('0xf3'));};Preview['prototype'][_0x44b8('0x5a')]=function(_0x3f33a9,_0x561645){return this[_0x44b8('0xf4')](_0x3f33a9,_0x561645)[_0x44b8('0x54')](function(_0x2a40a3){return _['pick'](_0x2a40a3,['message']);})[_0x44b8('0x48')](function(_0x133da8){if(_0x133da8['unlock']){rpcDb['unlockContact'](_0x3f33a9);}if(_0x133da8[_0x44b8('0xef')]){rpcDb[_0x44b8('0x5d')](_0x3f33a9);}throw _[_0x44b8('0x41')](_0x133da8,[_0x44b8('0x2b')]);});};Preview[_0x44b8('0xb')]['execRun']=function(_0x2ded38,_0x4fbf1d){var _0x444f66=this;var _0x1386c6,_0x36537c;return rpcDb[_0x44b8('0xf5')](_0x2ded38)[_0x44b8('0x54')](function(_0x180c33){if(!_['isNil'](_0x180c33[0x0])){_0x36537c=_0x180c33[0x0][_0x44b8('0xf6')]?![]:!![];_0x1386c6=_0x180c33[0x0]['recallme']?!![]:![];_0x1386c6=_0x4fbf1d?!![]:_0x1386c6;}var _0x2c3e11=_0x444f66[_0x44b8('0xf7')](_0x180c33);if(_0x2c3e11['isValid']){rpcDb[_0x44b8('0xf8')](_['pick'](_0x180c33[0x0],[_0x44b8('0x44'),_0x44b8('0xf9')]))[_0x44b8('0x54')](function(_0x4b0aa0){_0x444f66[_0x44b8('0xe6')](_0x4b0aa0,_0x180c33[0x0],_0x4fbf1d,_0x36537c,_0x1386c6)[_0x44b8('0x54')](function(_0x4ff63e){return _0x4ff63e;})[_0x44b8('0x48')](function(_0x5af83d){throw _0x5af83d;});})['catch'](function(_0x4220b5){ut['logger'](_0x44b8('0xfa'),_0x4220b5);throw ut['message'](_0x44b8('0xfb'),_0x36537c,_0x1386c6);});}else{throw ut[_0x44b8('0x2b')](_0x2c3e11['message'],_0x36537c,_0x1386c6);}})[_0x44b8('0x48')](function(_0x39507e){ut['logger']('[Preview][getContactPreview]',_0x39507e);throw ut[_0x44b8('0x2b')](_0x44b8('0xfb'),![],!![]);});};Preview[_0x44b8('0xb')][_0x44b8('0xf7')]=function(_0x596fa4){if(_[_0x44b8('0x3a')](_0x596fa4)||_[_0x44b8('0xfc')](_0x596fa4)||!_[_0x44b8('0x3a')](_0x596fa4[0x0][_0x44b8('0x58')])&&_['isNil'](_0x596fa4[0x0]['Agent'][_0x44b8('0x24')])){ut[_0x44b8('0xfd')](_0x44b8('0xfe'),_0x596fa4);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x1443bd=this[_0x44b8('0x1e')][_0x596fa4[0x0]['Queue'][_0x44b8('0x24')]];_0x1443bd[_0x44b8('0x2b')]=utils[_0x44b8('0x2e')][_0x44b8('0x71')];if(_[_0x44b8('0x3a')](_0x1443bd)){ut[_0x44b8('0xfd')]('[Preview][validateContact][Empty\x20Campaign]',_0x1443bd);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x44b8('0x6d')](_0x1443bd['Trunk'])){ut[_0x44b8('0xfd')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x44b8('0xff')+_0x1443bd[_0x44b8('0x24')]+_0x44b8('0x100'));if(!this[_0x44b8('0x6d')](_0x1443bd[_0x44b8('0x6f')])){ut[_0x44b8('0xfd')](_0x44b8('0x101'),_0x1443bd[_0x44b8('0x24')]+_0x44b8('0x102'));return{'isValid':![],'message':_0x44b8('0x103')};}}if(!ut[_0x44b8('0x6c')](_0x1443bd[_0x44b8('0x35')])){ut[_0x44b8('0xfd')](_0x44b8('0x104'),_0x1443bd[_0x44b8('0x24')]+_0x44b8('0x105'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x1443bd[_0x44b8('0x24')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0x44b8('0x106')};};Preview[_0x44b8('0xb')][_0x44b8('0xe9')]=function(_0x10fd21,_0x420a61,_0x22e5ae,_0x2f3340){var _0x4d98de=this;return new Promise(function(_0x597139,_0x2fffd5){var _0x3c90c2=_0x10fd21[_0x44b8('0x8b')];var _0x43c7ac=_0x4d98de[_0x44b8('0x6d')](_0x420a61['Trunk'])?util[_0x44b8('0xf1')](_0x44b8('0x107'),_0x420a61[_0x44b8('0x6e')][_0x44b8('0x24')],_[_0x44b8('0x3a')](_0x420a61[_0x44b8('0x108')])?'':_0x420a61['dialPrefix'][_0x44b8('0x109')]()||'',_0x420a61[_0x44b8('0x10a')]>0x0?_0x22e5ae[_0x44b8('0xf9')][_0x44b8('0x10b')](_0x420a61[_0x44b8('0x10a')]):_0x22e5ae['phone']):util['format'](_0x44b8('0x107'),_[_0x44b8('0x3a')](_0x420a61['TrunkBackup'])?_0x420a61['Trunk'][_0x44b8('0x24')]:_0x420a61['TrunkBackup'][_0x44b8('0x24')],_[_0x44b8('0x3a')](_0x420a61[_0x44b8('0x108')])?'':_0x420a61[_0x44b8('0x108')][_0x44b8('0x109')]()||'',_0x420a61[_0x44b8('0x10a')]>0x0?_0x22e5ae[_0x44b8('0xf9')][_0x44b8('0x10b')](_0x420a61['dialCutDigit']):_0x22e5ae[_0x44b8('0xf9')]);var _0xf24cdd=_0x4d98de[_0x44b8('0x6d')](_0x420a61['Trunk'])?ut[_0x44b8('0x10c')](_0x420a61[_0x44b8('0x6e')]['callerid'],_0x420a61['dialOriginateCallerIdName'],_0x420a61['dialRandomLastDigitCallerIdNumber']>0x0?ut['getCallerIdRandom'](_0x420a61[_0x44b8('0x10d')],_0x420a61['dialRandomLastDigitCallerIdNumber']):_0x420a61['dialOriginateCallerIdNumber']):ut[_0x44b8('0x10c')](_[_0x44b8('0x3a')](_0x420a61[_0x44b8('0x6f')])?_0x420a61['Trunk'][_0x44b8('0x10e')]:_0x420a61['TrunkBackup'][_0x44b8('0x10e')],_0x420a61[_0x44b8('0x10f')],_0x420a61[_0x44b8('0x110')]>0x0?ut[_0x44b8('0x111')](_0x420a61['dialOriginateCallerIdNumber'],_0x420a61[_0x44b8('0x110')]):_0x420a61[_0x44b8('0x10d')]);if(_0xf24cdd){_0x10fd21[_0x44b8('0x112')]=ut[_0x44b8('0x113')](_0xf24cdd);_0x10fd21['originatecalleridnum']=ut['extractCalleridNumber'](_0xf24cdd);}var _0x35a564=ut[_0x44b8('0x114')](_0x420a61,_0x22e5ae,_0x43c7ac,_0xf24cdd,_0x3c90c2,_0x10fd21);_['merge'](_0x10fd21,ut[_0x44b8('0x115')](_0x35a564));_0x10fd21[_0x44b8('0x5e')]=moment()[_0x44b8('0xf1')](_0x44b8('0x5f'));_0x420a61[_0x44b8('0x116')]=_0x35a564;var _0x2da727=ut[_0x44b8('0x117')](_0x10fd21,_0x420a61,_0x35a564,_0x10fd21[_0x44b8('0x84')],_0x2f3340);return ami['Action'](_0x2da727)[_0x44b8('0x54')](function(_0x3e5fa8){_0x420a61[_0x44b8('0x3f')]+=0x1;logger['info'](_0x44b8('0x118'),_0x3c90c2,'\x20Queue',_0x420a61[_0x44b8('0x24')],'originated:\x20',_0x420a61[_0x44b8('0x3f')]);_0x597139(_0x3e5fa8);})[_0x44b8('0x48')](function(_0x1f5c08){ut[_0x44b8('0xdb')](_0x10fd21,0xe,_0x44b8('0x119'));rpcDb[_0x44b8('0xdc')](_0x10fd21,_0x44b8('0x11a'));_0x2fffd5(_0x1f5c08);});});};Preview[_0x44b8('0xb')][_0x44b8('0x19')]=function(_0x31913d){if(this[_0x44b8('0x11')][_0x31913d[_0x44b8('0x9d')]]){this['actions'][_0x31913d[_0x44b8('0x9d')]]['channel']=_0x31913d[_0x44b8('0x47')];}};Preview['prototype'][_0x44b8('0x14')]=function(_0x31132c){var _0xdfc44b=this;var _0x2c8438=this[_0x44b8('0x11')][_0x31132c[_0x44b8('0x11b')]];if(_0x2c8438){if(_0x2c8438[_0x44b8('0xe8')]&&this['agents'][_0x2c8438[_0x44b8('0xe8')]]){ut[_0x44b8('0x11c')](_0x2c8438,this[_0x44b8('0x12')][_0x2c8438[_0x44b8('0xe8')]][_0x44b8('0x24')],this[_0x44b8('0x12')][_0x2c8438[_0x44b8('0xe8')]]['id']);}var _0x46cdee=_[_0x44b8('0x11d')](_0x2c8438);_0x46cdee[_0x44b8('0x11e')]=moment()[_0x44b8('0xf1')](_0x44b8('0x5f'));var _0xbbc40d=_0xdfc44b[_0x44b8('0x1e')][_0x2c8438['queue']];if(ut[_0x44b8('0x11f')](_0x31132c[_0x44b8('0x120')])){if(_0x2c8438['unlockAgent']){rpcDb[_0x44b8('0x121')](_0x2c8438[_0x44b8('0xa7')]);}if(_0x2c8438[_0x44b8('0x84')]){rpcDb[_0x44b8('0x5d')](_0x2c8438[_0x44b8('0xa7')]);}ami['emit'](_0x44b8('0x122'),ut[_0x44b8('0x78')](_0x2c8438,_0x44b8('0x123'),this[_0x44b8('0x1e')][_0x2c8438['queue']]));this[_0x44b8('0xd8')](_0x46cdee,_0xbbc40d,_0x31132c);}else{_0x2c8438[_0x44b8('0x5e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');ut['logAgent'](_0x46cdee,0x4,'Answer');rpcDb[_0x44b8('0xdc')](_0x46cdee,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype'][_0x44b8('0x15')]=function(_0xb5c212){var _0x87a38=this['actions'][_0xb5c212[_0x44b8('0x9d')]];var _0x32dafb;if(_0x87a38){_0x32dafb=this[_0x44b8('0x1e')][_0x87a38[_0x44b8('0x3d')]];logger['info'](_0x44b8('0x124'),_0xb5c212['linkedid'],_0x44b8('0x8c'),_0x32dafb[_0x44b8('0x24')],'pTalking:\x20',_0x32dafb[_0x44b8('0x28')]);}if(this[_0x44b8('0x11')][_0xb5c212[_0x44b8('0x9d')]]&&_0xb5c212[_0x44b8('0x9d')]!==_0xb5c212[_0x44b8('0x8b')]){if(_0xb5c212['cause']==='16'&&this['actions'][_0xb5c212[_0x44b8('0x9d')]][_0x44b8('0x4c')]){this[_0x44b8('0x72')](_0xb5c212,_0xb5c212[_0x44b8('0x9d')],_0xb5c212[_0x44b8('0x125')]);}else if(this[_0x44b8('0x11')][_0xb5c212[_0x44b8('0x9d')]][_0x44b8('0x4c')]){logger[_0x44b8('0x20')](_0x44b8('0x126'),_0xb5c212[_0x44b8('0x9d')],_0xb5c212[_0x44b8('0x125')],'\x20Queue',_0x32dafb['name'],_0x44b8('0x40'),_0x32dafb['pTalking']);this[_0x44b8('0x72')](_0xb5c212,_0xb5c212[_0x44b8('0x9d')],_0xb5c212[_0x44b8('0x125')]);}}else if(_0x87a38&&_['isNil'](_0x87a38[_0x44b8('0x127')])&&_0x32dafb[_0x44b8('0x128')]&&_0xb5c212[_0x44b8('0x9d')]===_0xb5c212[_0x44b8('0x8b')]&&_[_0x44b8('0x3a')](_0xb5c212[_0x44b8('0xda')])&&_0xb5c212['cause']==='16'&&_0xb5c212[_0x44b8('0x129')]==='6'&&_[_0x44b8('0x12a')](_0x87a38['transfer'])){if(_0x87a38[_0x44b8('0xa6')]){rpcDb[_0x44b8('0x121')](_0x87a38[_0x44b8('0xa7')]);}if(_0x87a38[_0x44b8('0x84')]){rpcDb[_0x44b8('0x5d')](_0x87a38['idContact']);}_0xb5c212[_0x44b8('0xda')]='22';this[_0x44b8('0xd8')](_0x87a38,_0x32dafb,_0xb5c212);}else if(_0x87a38&&_0x87a38[_0x44b8('0x12b')]){if(_0xb5c212[_0x44b8('0x125')]==='16'&&this[_0x44b8('0x11')][_0xb5c212[_0x44b8('0x9d')]][_0x44b8('0x4c')]){logger[_0x44b8('0x20')](_0x44b8('0x12c'),_0xb5c212[_0x44b8('0x9d')],_0xb5c212['cause'],_0x44b8('0x8c'),_0x32dafb[_0x44b8('0x24')],_0x44b8('0x40'),_0x32dafb['pTalking']);this['callProgressDetectingCustomer'](_0xb5c212,_0xb5c212[_0x44b8('0x9d')],_0xb5c212['cause']);}else if(this[_0x44b8('0x11')][_0xb5c212[_0x44b8('0x9d')]][_0x44b8('0x4c')]){logger[_0x44b8('0x20')](_0x44b8('0x126'),_0xb5c212[_0x44b8('0x9d')],_0xb5c212[_0x44b8('0x125')],'\x20Queue',_0x32dafb['name'],_0x44b8('0x40'),_0x32dafb[_0x44b8('0x28')]);this[_0x44b8('0x72')](_0xb5c212,_0xb5c212[_0x44b8('0x9d')],_0xb5c212[_0x44b8('0x125')]);}}};Preview[_0x44b8('0xb')]['syncDialEnd']=function(_0x4d88a6){if(this[_0x44b8('0x11')][_0x4d88a6[_0x44b8('0xd6')]]&&_0x4d88a6[_0x44b8('0xd6')]!==_0x4d88a6[_0x44b8('0x12d')]){this[_0x44b8('0x72')](_0x4d88a6,_0x4d88a6[_0x44b8('0xd6')],_0x4d88a6[_0x44b8('0xcf')]);}};Preview['prototype'][_0x44b8('0x18')]=function(_0x1f6244){if(this[_0x44b8('0x11')][_0x1f6244['linkedid']]&&_0x1f6244[_0x44b8('0x9d')]!==_0x1f6244[_0x44b8('0x8b')]&&!this[_0x44b8('0x11')][_0x1f6244[_0x44b8('0x9d')]]['dialAnswer']){if(_0x1f6244[_0x44b8('0x125')]==='1'){this[_0x44b8('0x72')](_0x1f6244,_0x1f6244[_0x44b8('0x9d')],_0x1f6244['cause']);}}};Preview['prototype']['addVariable']=function(_0x4b3c64,_0x59a43a,_0x355c5c){if(this[_0x44b8('0x11')][_0x4b3c64]){if(_[_0x44b8('0x3a')](this[_0x44b8('0x11')][_0x4b3c64][_0x44b8('0x116')])){this[_0x44b8('0x11')][_0x4b3c64][_0x44b8('0x116')]={};}this[_0x44b8('0x11')][_0x4b3c64][_0x44b8('0x116')][_0x59a43a]=_0x355c5c;}};Preview[_0x44b8('0xb')][_0x44b8('0x1a')]=function(_0x56aecf){try{if(!_[_0x44b8('0x3a')](_0x56aecf)){if(ut[_0x44b8('0x12e')](_[_0x44b8('0x12f')](_0x56aecf[_0x44b8('0x130')])[0x0])){this[_0x44b8('0x131')](_0x56aecf['uniqueid'],_[_0x44b8('0x12f')](_0x56aecf['variable'])[0x0],_0x56aecf[_0x44b8('0x132')]);}}}catch(_0x3432da){logger[_0x44b8('0x133')]('[syncVarSet][Preview]',util[_0x44b8('0x134')](_0x3432da,{'showHidden':![],'depth':null}));}};Preview[_0x44b8('0xb')]['syncAttendedTransfer']=function(_0xc8e8f4){if(_0xc8e8f4){if(this[_0x44b8('0x11')][_0xc8e8f4[_0x44b8('0x135')]]){this['actions'][_0xc8e8f4[_0x44b8('0x135')]]['transfer']=!![];}}};Preview[_0x44b8('0xb')][_0x44b8('0x1c')]=function(_0x280fe1){if(_0x280fe1){if(this['actions'][_0x280fe1[_0x44b8('0x136')]]){this['actions'][_0x280fe1[_0x44b8('0x136')]][_0x44b8('0x12b')]=!![];}}};module[_0x44b8('0x137')]=Preview;
\ No newline at end of file
+var _0x70e0=['[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','dialCutDigit','substring','trim','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','extractCalleridNumber','merge','toLowerVariables','variablesAction','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','callProgressDetectingAgent','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','util','lodash','uuid','../../../config/environment','../../../config/logger','preview','../ami','../rpc/cmHopperAdditionalPhone','redis','defaults','localhost','socket.io-emitter','prototype','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','hangup','syncHangup','syncHangupRequest','bind','dialend','syncDialEnd','syncNewExten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','info','stringify','format','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','originated','pTalking','sendMessageOneNotActive','paused','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','CAMPAIGN_STATUS','DEACTIVATED','\x20is\x20deactivated','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','booked','type','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','enqueue','[clearZombieChannels][talking]','Queue','queue','pick','UserId','VoiceQueueId','ListId','status','catch','message','No\x20such\x20channel','updateOriginated','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','clearZombieChannels','[action]','recallMe','agentReadyId','agents','isNil','length','getDiff','scheduledat','Agent','voicePause','run','then','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','loggedIn','dialActive','isTrunkReachable','Trunk','TrunkBackup','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','dialNoSuchNumberRetryFrequency','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','scheduledAt','unlockAgent','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','pTalking:\x20','custom:agentconnect','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','sumBillable','[syncHangup][talking][decrement]','linkedid','BUSY','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','additional','dialGlobalMaxRetry','dialBusyMaxRetry','rescheduleContact','activeContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','dialNoAnswerRetryFrequency','callAdditionalPhoneAfterMin','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','outboundCongestionCallsDay','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL','outboundRejectCallsDay','AgentReject','dialAgentRejectRetryFrequency','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','ABANDONED','outboundAbandonedCallsDay','Abandoned','[callProgressDetectingCustomer][logAbandoned]','outboundUnknownCallsDay','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','queueSummaryCountersUpdated','isUndefined','object','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','[incrementPreviewCounters]\x20','Contact','lookAgent','isEmpty','execCall','\x20IdHopper:\x20','custom:agentcalled','Calling','[Preview][execCall][failure]','outboundBlacklistCallsDay','logBlacklist','createHistory','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','unlockContact','getContactPreview','recallme','phone','checkInBlack'];(function(_0x2b3410,_0x57fc4b){var _0x532eed=function(_0x2be997){while(--_0x2be997){_0x2b3410['push'](_0x2b3410['shift']());}};_0x532eed(++_0x57fc4b);}(_0x70e0,0x17b));var _0x070e=function(_0x409e51,_0x44370a){_0x409e51=_0x409e51-0x0;var _0x424f44=_0x70e0[_0x409e51];return _0x424f44;};'use strict';var util=require(_0x070e('0x0'));var _=require(_0x070e('0x1'));var uuid=require(_0x070e('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x070e('0x3'));var logger=require(_0x070e('0x4'))(_0x070e('0x5'));var loggerAction=require(_0x070e('0x4'))('actionPreview');var ami=require(_0x070e('0x6'));var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0x070e('0x7'));var Action=require('./action');var ut=require('./util/util');var utils=require('../dialer/utils');config[_0x070e('0x8')]=_[_0x070e('0x9')](config[_0x070e('0x8')],{'host':_0x070e('0xa'),'port':0x18eb});var io=require(_0x070e('0xb'))(new Redis(config[_0x070e('0x8')]));var Sequence=function(){};Sequence[_0x070e('0xc')]['enqueue']=function(_0x49b2fb){this[_0x070e('0xd')]=this[_0x070e('0xd')]?this[_0x070e('0xd')][_0x070e('0xe')](_0x49b2fb):_0x49b2fb();};function Preview(_0xa927a2){this[_0x070e('0xf')]=new Sequence();this[_0x070e('0x10')]=_0xa927a2[_0x070e('0x11')];this[_0x070e('0x12')]=_0xa927a2[_0x070e('0x12')];this[_0x070e('0x13')]={};this['agents']=_0xa927a2['agents'];this[_0x070e('0x14')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));ami['on'](_0x070e('0x15'),this[_0x070e('0x16')]['bind'](this));ami['on']('hanguprequest',this[_0x070e('0x17')][_0x070e('0x18')](this));ami['on'](_0x070e('0x19'),this[_0x070e('0x1a')]['bind'](this));ami['on']('newexten',this[_0x070e('0x1b')][_0x070e('0x18')](this));ami['on'](_0x070e('0x1c'),this[_0x070e('0x1d')][_0x070e('0x18')](this));ami['on']('attendedtransfer',this[_0x070e('0x1e')][_0x070e('0x18')](this));ami['on'](_0x070e('0x1f'),this[_0x070e('0x20')][_0x070e('0x18')](this));this['loopCampaigns'](this['campaignsPreview']);}function emit(_0x4e958f,_0x9907cf,_0x3004f0){io['to'](_0x4e958f)[_0x070e('0x21')](_0x9907cf,_0x3004f0);}function emitVoiceQueueChannelRemove(_0x4be0d7){logger[_0x070e('0x22')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x070e('0x23')](_0x4be0d7));emit(util[_0x070e('0x24')](_0x070e('0x25'),_0x4be0d7[_0x070e('0x26')]),_0x070e('0x27'),_0x4be0d7);io[_0x070e('0x21')](_0x070e('0x28'),_0x4be0d7);}function notSendMessagesQueue(_0x164cdf){if(_0x164cdf['sendMessageOneNotActive']){if(_0x164cdf[_0x070e('0x29')]===0x0&&_0x164cdf[_0x070e('0x2a')]===0x0){_0x164cdf[_0x070e('0x2b')]=![];_0x164cdf['available']=0x0;_0x164cdf[_0x070e('0x2c')]=0x0;_0x164cdf['message']=utils['CAMPAIGN_STATUS'][_0x070e('0x2d')];ut[_0x070e('0x2e')](_0x070e('0x2f'),_0x164cdf[_0x070e('0x26')]+_0x070e('0x30'));}else{_0x164cdf['message']=utils[_0x070e('0x31')][_0x070e('0x32')];ut[_0x070e('0x2e')](_0x070e('0x2f'),_0x164cdf[_0x070e('0x26')]+_0x070e('0x33'));}}}Preview[_0x070e('0xc')][_0x070e('0x34')]=function(){var _0x5e8326=this;setInterval(function(){_0x5e8326[_0x070e('0x35')]();},0x7cf);};Preview[_0x070e('0xc')][_0x070e('0x35')]=function(){var _0x56fc12=this['campaignsPreview'];this[_0x070e('0x14')]+=0x1;for(var _0x46065c in _0x56fc12){if(_0x56fc12[_0x070e('0x36')](_0x46065c)&&(_0x56fc12[_0x46065c]['dialMethod']===_0x070e('0x5')||_0x56fc12[_0x46065c][_0x070e('0x37')]===_0x070e('0x38'))&&_0x56fc12[_0x46065c][_0x070e('0x39')]==='outbound'){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x56fc12[_0x070e('0x36')](_0x46065c)&&_0x56fc12[_0x46065c]['dialMethod']===_0x070e('0x5')&&_0x56fc12[_0x46065c][_0x070e('0x39')]==='outbound'){if(_0x56fc12[_0x46065c]['dialActive']){this[_0x070e('0x3a')](_0x56fc12[_0x46065c]);if(_0x56fc12[_0x46065c][_0x070e('0x3b')])this['recallMe'](_0x56fc12[_0x46065c]);}else{notSendMessagesQueue(_0x56fc12[_0x46065c]);}}}};Preview['prototype'][_0x070e('0x3c')]=function(_0x27dd1f){var _0x444d02=this;this[_0x070e('0xf')][_0x070e('0x3d')](function(){if(!_['isNil'](_0x444d02['actions'][_0x27dd1f])){loggerAction[_0x070e('0x22')](_0x070e('0x3e'),_0x27dd1f,_0x070e('0x3f'),_0x444d02[_0x070e('0x13')][_0x27dd1f][_0x070e('0x40')],'originated:\x20',JSON[_0x070e('0x23')](_0x444d02[_0x070e('0x10')][_0x444d02['actions'][_0x27dd1f][_0x070e('0x40')]][_0x070e('0x29')]),'pTalking:\x20',JSON['stringify'](_0x444d02['campaignsPreview'][_0x444d02[_0x070e('0x13')][_0x27dd1f][_0x070e('0x40')]][_0x070e('0x2a')]),JSON[_0x070e('0x23')](_0x444d02[_0x070e('0x13')][_0x27dd1f]['dialAnswer']),JSON[_0x070e('0x23')](_[_0x070e('0x41')](_0x444d02[_0x070e('0x13')][_0x27dd1f],['contactId',_0x070e('0x42'),_0x070e('0x43'),_0x070e('0x44')])));return ami['Action']({'action':_0x070e('0x45'),'channel':_0x444d02[_0x070e('0x13')][_0x27dd1f]['channel']})[_0x070e('0x46')](function(_0x5d689b){if(_0x5d689b[_0x070e('0x47')]===_0x070e('0x48')){setTimeout(function(){if(_0x444d02[_0x070e('0x13')][_0x27dd1f]){ut[_0x070e('0x49')](_0x444d02[_0x070e('0x10')][_0x444d02['actions'][_0x27dd1f][_0x070e('0x40')]],'[clearZombieChannel]');if(_0x444d02['actions'][_0x27dd1f][_0x070e('0x4a')]===!![]){ut[_0x070e('0x4b')](_0x444d02[_0x070e('0x10')][_0x444d02['actions'][_0x27dd1f][_0x070e('0x40')]],_0x070e('0x4c'));ut[_0x070e('0x4d')](_0x070e('0x4e')+_0x27dd1f,_0x444d02['actions'][_0x27dd1f][_0x070e('0x40')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x27dd1f,_0x444d02['actions'][_0x27dd1f][_0x070e('0x40')]);delete _0x444d02[_0x070e('0x13')][_0x27dd1f];}},0x2328);}});}});};Preview[_0x070e('0xc')][_0x070e('0x4f')]=function(){var _0x34f23e=this;loggerAction['info'](_0x070e('0x50'),_['size'](this[_0x070e('0x13')]));for(var _0x42245d in this[_0x070e('0x13')]){if(_0x34f23e['actions']['hasOwnProperty'](_0x42245d)){_0x34f23e[_0x070e('0x3c')](_0x42245d);}}};Preview['prototype'][_0x070e('0x51')]=function(_0x3fdb75){var _0x139820=this;rpcDb['getContactRecallMe'](_0x3fdb75['id'],ut[_0x070e('0x52')](this[_0x070e('0x53')]))['then'](function(_0x589b97){if(!_[_0x070e('0x54')](_0x589b97)){for(var _0x945901=0x0;_0x945901<_0x589b97[_0x070e('0x55')];_0x945901+=0x1){if(ut[_0x070e('0x56')](_0x589b97[_0x945901][_0x070e('0x57')])<_0x3fdb75['dialRecallMeTimeout']*0x3c){if(_0x589b97[_0x945901][_0x070e('0x58')]&&!_0x589b97[_0x945901][_0x070e('0x58')][_0x070e('0x59')]){_0x139820[_0x070e('0x5a')](_0x589b97[_0x945901]['id'])[_0x070e('0x5b')](ut[_0x070e('0x5c')](_0x070e('0x5d')))[_0x070e('0x46')](ut[_0x070e('0x5c')](_0x070e('0x5d')));}else{rpcDb[_0x070e('0x5e')](_0x589b97[_0x945901]['id']);}}else{var _0x3be553=new Action(_0x589b97[_0x945901],_0x3fdb75);_0x3be553[_0x070e('0x5f')]=moment()[_0x070e('0x24')](_0x070e('0x60'));_0x3fdb75['outboundReCallsDay']+=0x1;ut[_0x070e('0x61')](_0x3be553,0x17,_0x070e('0x62'));if(_0x3fdb75[_0x070e('0x63')]){rpcDb[_0x070e('0x64')](ut[_0x070e('0x65')](_0x589b97[_0x945901]));rpcDb[_0x070e('0x66')](_0x3be553,_0x070e('0x67'));}else{ut[_0x070e('0x61')](_0x3be553,0x16,_0x070e('0x68'));rpcDb['createCustomerHistory'](_0x3be553,_0x070e('0x69'));rpcDb['createCustomerFinal'](_0x3be553,_0x070e('0x69'));}}}}})[_0x070e('0x46')](ut['logger2'](_0x070e('0x6a')));};Preview[_0x070e('0xc')][_0x070e('0x3a')]=function(_0xa74805){_0xa74805[_0x070e('0x2b')]=!![];if(ut[_0x070e('0x6b')](_0xa74805[_0x070e('0x6c')])){_0xa74805['message']=utils[_0x070e('0x31')]['NO_AGENTS_LOGGED'];}else if(!ut['isActive'](_0xa74805[_0x070e('0x6d')])){_0xa74805[_0x070e('0x47')]=utils[_0x070e('0x31')][_0x070e('0x2d')];}else if(!this[_0x070e('0x6e')](_0xa74805[_0x070e('0x6f')])){if(!this[_0x070e('0x6e')](_0xa74805[_0x070e('0x70')])){_0xa74805['message']=utils[_0x070e('0x31')]['UNREACHABLE_TRUNK'];}else{_0xa74805['message']=utils[_0x070e('0x31')][_0x070e('0x71')];}}else{_0xa74805['message']=utils[_0x070e('0x31')][_0x070e('0x71')];}};Preview[_0x070e('0xc')][_0x070e('0x72')]=function(_0x1aacfc,_0x382ce3,_0x1b36cd){var _0x4ef647=this;var _0x5874cd=this['actions'][_0x382ce3];var _0x3087e5=this[_0x070e('0x10')][_0x5874cd[_0x070e('0x40')]];var _0x2f8fcb;var _0x5ac0b5=![];var _0x25f34c=0x2;var _0x5d3c3a=0x3;if(_0x3087e5){switch(_0x1b36cd){case'1':_0x3087e5[_0x070e('0x73')]+=0x1;_0x5874cd[_0x070e('0x74')]+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0x0,_0x070e('0x77'));ami['emit'](_0x070e('0x78'),ut[_0x070e('0x79')](_0x5874cd,_0x070e('0x7a')));rpcDb['createCustomerHistory'](_0x5874cd,_0x070e('0x7b'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'0',_0x3087e5)['then'](function(_0x1f1df5){_0x5ac0b5=_0x1f1df5['additional']==0x1;_0x25f34c=_0x3087e5[_0x070e('0x7d')];_0x5d3c3a=_0x3087e5['callAdditionalPhoneAfterMin'];if(!_0x5ac0b5){if(ut['totalGlobal'](_0x5874cd)>=_0x3087e5['dialGlobalMaxRetry']){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0x81'));}else{if(_0x5874cd[_0x070e('0x74')]>=_0x3087e5[_0x070e('0x82')]){rpcDb['createCustomerFinal'](_0x5874cd,_0x070e('0x81'));}else{rpcDb['rescheduleContact'](ut[_0x070e('0x83')](_0x5874cd,'countnosuchnumberretry',_0x3087e5[_0x070e('0x7d')]),_0x5874cd[_0x070e('0x84')],_0x5874cd['activeContact']);}}delete this[_0x070e('0x13')][_0x1aacfc['linkedid']];}else{_0x5874cd[_0x070e('0x74')]++;logger[_0x070e('0x22')](_0x070e('0x85'),_0x5874cd[_0x070e('0x74')]);logger[_0x070e('0x22')]('id',_0x5874cd[_0x070e('0x86')]);_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd[_0x070e('0x86')],'field':{'countnosuchnumberretry':_0x5874cd[_0x070e('0x74')]}})[_0x070e('0x5b')](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});break;case _0x070e('0x89'):var _0x20bcf3=moment()['format'](_0x070e('0x60'));_0x5874cd[_0x070e('0x8a')]=_0x20bcf3;_0x5874cd[_0x070e('0x8b')]=_0x20bcf3;_0x5874cd[_0x070e('0x4a')]=!![];_0x3087e5['pTalking']+=0x1;logger[_0x070e('0x22')](_0x070e('0x8c'),_0x5874cd[_0x070e('0x8d')],_0x070e('0x8e'),_0x3087e5[_0x070e('0x26')],_0x070e('0x8f'),_0x3087e5['pTalking']);ami[_0x070e('0x21')](_0x070e('0x90'),ut[_0x070e('0x79')](_0x5874cd,_0x070e('0x91'),this['campaignsPreview'][_0x5874cd[_0x070e('0x40')]]));if(_0x3087e5['acw']){ami[_0x070e('0x21')](_0x070e('0x92'),ut[_0x070e('0x93')](_0x5874cd));}break;case'16':ami[_0x070e('0x21')](_0x070e('0x94'),ut['buildObj'](_0x5874cd,_0x070e('0x95'),this[_0x070e('0x10')][_0x5874cd[_0x070e('0x40')]]));emitVoiceQueueChannelRemove(ut[_0x070e('0x79')](_0x5874cd,'complete'));_0x3087e5[_0x070e('0x96')]+=0x1;_0x3087e5['total']+=0x1;_0x3087e5[_0x070e('0x97')]+=0x1;ut[_0x070e('0x4b')](_0x3087e5,_0x070e('0x98'));_0x5874cd['countglobal']=ut[_0x070e('0x76')](_0x5874cd);ut['logCustomer'](_0x5874cd,0x4,_0x070e('0x99'));rpcDb['createCustomerHistory'](_0x5874cd,_0x070e('0x9a'));rpcDb[_0x070e('0x80')](_0x5874cd,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x070e('0x9b')](_0x5874cd);_0x3087e5['sumDuration']+=_0x5874cd[_0x070e('0x9c')];_0x3087e5[_0x070e('0x9d')]+=_0x5874cd['talktime'];logger['info'](_0x070e('0x9e'),_0x5874cd[_0x070e('0x8d')],_0x070e('0x8e'),_0x3087e5[_0x070e('0x26')],_0x070e('0x8f'),_0x3087e5[_0x070e('0x2a')]);delete this[_0x070e('0x13')][_0x1aacfc[_0x070e('0x9f')]];break;case _0x070e('0xa0'):_0x3087e5[_0x070e('0xa1')]+=0x1;_0x5874cd[_0x070e('0xa2')]+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut['logCustomer'](_0x5874cd,0x5,_0x070e('0xa3'));_0x25f34c=_0x3087e5[_0x070e('0xa4')];_0x5d3c3a=_0x3087e5['callAdditionalPhoneAfterMin'];ami['emit'](_0x070e('0xa5'),ut[_0x070e('0x79')](_0x5874cd,_0x070e('0xa6')));rpcDb[_0x070e('0x66')](_0x5874cd,_0x070e('0xa7'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'5',_0x3087e5)[_0x070e('0x5b')](function(_0x110813){_0x5ac0b5=_0x110813[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb['createCustomerFinal'](_0x2f8fcb,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x5874cd['countbusyretry']>=_0x3087e5[_0x070e('0xaa')]){rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xa7'));}else{rpcDb[_0x070e('0xab')](ut['scheduledAt'](_0x5874cd,_0x070e('0xa2'),_0x3087e5[_0x070e('0xa4')]),_0x5874cd[_0x070e('0x84')],_0x5874cd[_0x070e('0xac')]);}}}else{_0x5874cd[_0x070e('0xa2')]++;_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd['idContact'],'field':{'countbusyretry':_0x5874cd[_0x070e('0xa2')]}})['then'](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});break;case _0x070e('0xad'):_0x3087e5[_0x070e('0xae')]+=0x1;_0x5874cd[_0x070e('0xaf')]+=0x1;_0x5874cd['countglobal']=ut[_0x070e('0x76')](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0x3,'NoAnswer');_0x25f34c=_0x3087e5[_0x070e('0xb0')];_0x5d3c3a=_0x3087e5[_0x070e('0xb1')];var _0x553ea1=ut[_0x070e('0xb2')](_0x5874cd,_0x3087e5);ami[_0x070e('0x21')](_0x070e('0xb3'),_0x553ea1);rpcDb['createCustomerHistory'](_0x5874cd,_0x070e('0xb4'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'3',_0x3087e5)[_0x070e('0x5b')](function(_0x1ad0bf){_0x5ac0b5=_0x1ad0bf[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xb5'));}else{if(_0x5874cd[_0x070e('0xaf')]>=_0x3087e5[_0x070e('0xb6')]){rpcDb['createCustomerFinal'](_0x5874cd,_0x070e('0xb4'));}else{rpcDb[_0x070e('0xab')](ut[_0x070e('0x83')](_0x5874cd,_0x070e('0xaf'),_0x3087e5[_0x070e('0xb0')]),_0x5874cd[_0x070e('0x84')],_0x5874cd['activeContact']);}}}else{_0x5874cd['countnoanswerretry']++;_0x4ef647['incrementPreviewCounters']({'id':_0x5874cd[_0x070e('0x86')],'field':{'countnoanswerretry':_0x5874cd[_0x070e('0xaf')]}})[_0x070e('0x5b')](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)['then'](function(){});});}});break;case _0x070e('0xb7'):_0x3087e5[_0x070e('0xb8')]+=0x1;_0x5874cd[_0x070e('0xb9')]+=0x1;_0x5874cd['countglobal']=ut[_0x070e('0x76')](_0x5874cd);ut['logCustomer'](_0x5874cd,0x8,_0x070e('0xba'));_0x25f34c=_0x3087e5[_0x070e('0xbb')];_0x5d3c3a=_0x3087e5['callAdditionalPhoneAfterMin'];ami['emit'](_0x070e('0xbc'),ut[_0x070e('0x79')](_0x5874cd,'congestion'));rpcDb[_0x070e('0x66')](_0x5874cd,'[callProgressDetectingCustomer][logCongestion]');_0x4ef647['verifyAdditionalPhones'](_0x5874cd,'8',_0x3087e5)['then'](function(_0x15480c){_0x5ac0b5=_0x15480c[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xbd'));}else{if(_0x5874cd[_0x070e('0xb9')]>=_0x3087e5[_0x070e('0xbe')]){rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xbf'));}else{rpcDb[_0x070e('0xab')](ut[_0x070e('0x83')](_0x5874cd,_0x070e('0xb9'),_0x3087e5[_0x070e('0xa4')]),_0x5874cd[_0x070e('0x84')],_0x5874cd[_0x070e('0xac')]);}}}else{_0x5874cd[_0x070e('0xb9')]++;_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd[_0x070e('0x86')],'field':{'countcongestionretry':_0x5874cd[_0x070e('0xb9')]}})['then'](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});break;case _0x070e('0xc0'):_0x3087e5[_0x070e('0xc1')]+=0x1;_0x5874cd['countagentrejectretry']+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0x14,_0x070e('0xc2'));_0x25f34c=_0x3087e5[_0x070e('0xc3')];_0x5d3c3a=_0x3087e5[_0x070e('0xb1')];ami['emit']('custom:agentreject',ut['buildObj'](_0x5874cd,_0x070e('0xc4')));rpcDb['createCustomerHistory'](_0x5874cd,_0x070e('0xc5'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'20',_0x3087e5)['then'](function(_0x912f24){_0x5ac0b5=_0x912f24[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut['totalGlobal'](_0x5874cd)>=_0x3087e5['dialGlobalMaxRetry']){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0x14,_0x070e('0xc2'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xc6'));}else{if(_0x5874cd[_0x070e('0xc7')]>=_0x3087e5['dialAgentRejectMaxRetry']){rpcDb[_0x070e('0x80')](_0x5874cd,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x070e('0xab')](ut[_0x070e('0x83')](_0x5874cd,'countagentrejectretry',_0x3087e5[_0x070e('0xc3')]),_0x5874cd[_0x070e('0x84')],_0x5874cd[_0x070e('0xac')]);}}}else{_0x5874cd[_0x070e('0xaf')]++;_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd[_0x070e('0x86')],'field':{'countnoanswerretry':_0x5874cd['countnoanswerretry']}})[_0x070e('0x5b')](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});break;case _0x070e('0xc8'):_0x3087e5[_0x070e('0xc9')]+=0x1;_0x5874cd['countabandonedretry']+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0xb,_0x070e('0xca'));rpcDb[_0x070e('0x66')](_0x5874cd,_0x070e('0xcb'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'11',_0x3087e5)[_0x070e('0x5b')](function(_0x1fb1e6){_0x5ac0b5=_0x1fb1e6[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xcb'));}else{if(_0x5874cd['countabandonedetry']>=_0x3087e5['dialAbandonedMaxRety']){rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xcb'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x5874cd,'countabandonedretry',_0x3087e5['dialAbandonedRetryFrequency']),_0x5874cd[_0x070e('0x84')],_0x5874cd[_0x070e('0xac')]);}}}else{_0x5874cd[_0x070e('0xaf')]++;_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd[_0x070e('0x86')],'field':{'countnoanswerretry':_0x5874cd[_0x070e('0xaf')]}})[_0x070e('0x5b')](function(){_0x4ef647[_0x070e('0x88')](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});break;case'18':_0x3087e5[_0x070e('0xcc')]+=0x1;_0x5874cd['countmachineretry']+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut['logCustomer'](_0x5874cd,0x12,_0x1aacfc[_0x070e('0xcd')]||_0x1aacfc[_0x070e('0xce')]);ami[_0x070e('0x21')](_0x070e('0xcf'),ut['buildObj'](_0x5874cd,_0x070e('0xd0')));rpcDb[_0x070e('0x66')](_0x5874cd,_0x070e('0xd1'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'18',_0x3087e5)['then'](function(_0x4096ae){_0x5ac0b5=_0x4096ae[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0x12,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xd1'));}else{rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xd1'));}}else{_0x5874cd[_0x070e('0xaf')]++;_0x4ef647['incrementPreviewCounters']({'id':_0x5874cd[_0x070e('0x86')],'field':{'countnoanswerretry':_0x5874cd[_0x070e('0xaf')]}})['then'](function(){_0x4ef647['swapAdditionalPhones'](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});delete this['actions'][_0x1aacfc[_0x070e('0x9f')]];break;case'19':_0x3087e5[_0x070e('0xcc')]+=0x1;_0x5874cd[_0x070e('0x75')]=ut[_0x070e('0x76')](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0x13,_0x1aacfc[_0x070e('0xcd')]||_0x1aacfc[_0x070e('0xce')]);ami['emit'](_0x070e('0xcf'),ut[_0x070e('0x79')](_0x5874cd,_0x070e('0xd0')));rpcDb[_0x070e('0x66')](_0x5874cd,'[callProgressDetectingCustomer][machine]');_0x4ef647['verifyAdditionalPhones'](_0x5874cd,'18',_0x3087e5)[_0x070e('0x5b')](function(_0x205305){_0x5ac0b5=_0x205305[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut['totalGlobal'](_0x5874cd)>=_0x3087e5[_0x070e('0xa9')]){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,'Global');rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xd2'));}else{rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xd2'));}}else{_0x5874cd[_0x070e('0xaf')]++;_0x4ef647[_0x070e('0x87')]({'id':_0x5874cd['idContact'],'field':{'countnoanswerretry':_0x5874cd['countnoanswerretry']}})[_0x070e('0x5b')](function(){_0x4ef647['swapAdditionalPhones'](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});});}});delete this[_0x070e('0x13')][_0x1aacfc['linkedid']];break;default:if(_0x5874cd[_0x070e('0x4a')]){ut['decrementTalkink'](_0x3087e5,_0x070e('0xd3'));ut[_0x070e('0x4d')](_0x070e('0xd4')+_0x3087e5[_0x070e('0x26')],_0x1aacfc);}_0x3087e5[_0x070e('0xcc')]+=0x1;_0x5874cd[_0x070e('0x75')]=ut['totalGlobal'](_0x5874cd);ut[_0x070e('0x61')](_0x5874cd,0xc,_0x1aacfc[_0x070e('0xcd')]||_0x1aacfc['dialstatus']);_0x25f34c=_0x3087e5['dialAgentRejectRetryFrequency'];_0x5d3c3a=_0x3087e5[_0x070e('0xb1')];rpcDb[_0x070e('0x66')](_0x5874cd,_0x070e('0xd5'));_0x4ef647[_0x070e('0x7c')](_0x5874cd,'20',_0x3087e5)[_0x070e('0x5b')](function(_0x3e2c30){_0x5ac0b5=_0x3e2c30[_0x070e('0xa8')]==0x1;if(!_0x5ac0b5){if(ut[_0x070e('0x76')](_0x5874cd)>=_0x3087e5['dialGlobalMaxRetry']){_0x2f8fcb=ut[_0x070e('0x7e')](_0x5874cd,0xf,_0x070e('0x7f'));rpcDb[_0x070e('0x80')](_0x2f8fcb,_0x070e('0xd6'));}else{rpcDb[_0x070e('0x80')](_0x5874cd,_0x070e('0xd6'));}delete this[_0x070e('0x13')][_0x1aacfc[_0x070e('0x9f')]];}else{_0x4ef647['swapAdditionalPhones'](_0x5874cd,_0x25f34c,_0x5d3c3a)[_0x070e('0x5b')](function(){});}});}if(!(_0x5874cd[_0x070e('0x4a')]&&_0x1b36cd==='16')){ut[_0x070e('0x49')](_0x3087e5,_0x070e('0xd7'));logger[_0x070e('0x22')](_0x070e('0xd8'),_0x5874cd[_0x070e('0x8d')],_0x070e('0x8e'),_0x3087e5[_0x070e('0x26')],_0x070e('0xd9'),_0x3087e5['originated']);}if(_0x1b36cd!=='ANSWER'){delete this[_0x070e('0x13')][_0x1aacfc[_0x070e('0x9f')]];delete this[_0x070e('0x13')][_0x1aacfc['destlinkedid']];}_0x3087e5[_0x070e('0xda')]=!![];}};Preview[_0x070e('0xc')]['callProgressDetectingAgent']=function(_0x26901c,_0x2b6909,_0x2f34b9){if(_[_0x070e('0xdb')](_0x2b6909)&&_0x070e('0xdc')!==typeof _0x2b6909){return;}if(_[_0x070e('0xdb')](_0x2f34b9)&&'object'!==typeof _0x2f34b9){return;}switch(_0x2f34b9['reason']){case'0':ut[_0x070e('0xdd')](_0x26901c,0x0,_0x070e('0x77'));rpcDb['createAgentHistory'](_0x26901c,_0x070e('0xde'));break;case'3':ut[_0x070e('0xdd')](_0x26901c,0x3,_0x070e('0xdf'));rpcDb[_0x070e('0xe0')](_0x26901c,_0x070e('0xe1'));break;case'5':ut[_0x070e('0xdd')](_0x26901c,0x5,'Busy');rpcDb[_0x070e('0xe0')](_0x26901c,_0x070e('0xe2'));break;case'8':ut['logAgent'](_0x26901c,0x8,_0x070e('0xba'));rpcDb[_0x070e('0xe0')](_0x26901c,_0x070e('0xe3'));break;case'22':ut[_0x070e('0xdd')](_0x26901c,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x26901c,_0x070e('0xe4'));break;default:ut[_0x070e('0xdd')](_0x26901c,0xc,_0x2f34b9[_0x070e('0xe5')]);rpcDb[_0x070e('0xe0')](_0x26901c,_0x070e('0xe3'));}ut[_0x070e('0x49')](_0x2b6909,_0x070e('0xe6'));logger[_0x070e('0x22')](_0x070e('0xe7'),_0x26901c[_0x070e('0x8d')],'\x20Queue',_0x2b6909[_0x070e('0x26')],_0x070e('0xd9'),_0x2b6909[_0x070e('0x29')]);delete this[_0x070e('0x13')][_0x26901c['uniqueid']];};Preview[_0x070e('0xc')][_0x070e('0x7c')]=function(_0x510bce,_0x4b559b,_0x27c346){return cmHopperAdditionalPhone[_0x070e('0x7c')](_0x510bce,_0x4b559b,_0x27c346)[_0x070e('0x46')](logger['info'](_0x070e('0xe8')));};Preview[_0x070e('0xc')][_0x070e('0x88')]=function(_0x2e21cf,_0x34b5ae,_0x5605da){return cmHopperAdditionalPhone[_0x070e('0x88')](_0x2e21cf,_0x34b5ae,_0x5605da)[_0x070e('0x46')](logger['info'](_0x070e('0xe9')));};Preview['prototype']['incrementPreviewCounters']=function(_0x48b0aa){return Promise[_0x070e('0xea')]()[_0x070e('0x5b')](cmHopperAdditionalPhone[_0x070e('0x87')](_0x48b0aa))[_0x070e('0x46')](logger['info'](_0x070e('0xeb')));};Preview[_0x070e('0xc')]['checkInBlack']=function(_0x3c6a6e,_0xa9694a,_0x24448e,_0x41afe5,_0x4ea0a6){var _0x445182=this;return new Promise(function(_0x50fbb4,_0x40ff1b){if(_['isNil'](_0xa9694a)||_[_0x070e('0x54')](_0xa9694a[_0x070e('0xec')])||_[_0x070e('0x54')](_0xa9694a['phone'])||_[_0x070e('0x54')](_0xa9694a[_0x070e('0x43')])){_0x40ff1b(ut[_0x070e('0x47')]('Contact\x20is\x20undefined',_0x41afe5,_0x4ea0a6));return;}var _0xbaed32=uuid['v4']();var _0x3a5086=_0x445182['campaignsPreview'][_0xa9694a[_0x070e('0x3f')][_0x070e('0x26')]];var _0x478e5b=_0x24448e?_0x445182['agents'][_0x24448e]['id']:undefined;_0x445182['actions'][_0xbaed32]=new Action(_0xa9694a,_0x3a5086,_0xbaed32,_0x24448e,_0x478e5b);var _0x5e1fee=_0x445182[_0x070e('0x13')][_0xbaed32];_0x5e1fee[_0x070e('0x84')]=_0x41afe5;_0x5e1fee[_0x070e('0xac')]=_0x4ea0a6;_0x5e1fee[_0x070e('0xed')]=_0x24448e;if(_[_0x070e('0xee')](_0x3c6a6e)){_0x445182[_0x070e('0xef')](_0x5e1fee,_0x3a5086,_0xa9694a,_0x24448e)[_0x070e('0x5b')](function(_0x472fc9){logger['info']('[Preview][execCall][success]','Queue:\x20'+_0x5e1fee['queue']+_0x070e('0xf0')+_0x5e1fee[_0x070e('0x86')],JSON[_0x070e('0x23')](_0x472fc9));ami[_0x070e('0x21')](_0x070e('0xf1'),ut['buildObj'](_0x5e1fee,'called',_0x445182[_0x070e('0x10')][_0x5e1fee[_0x070e('0x40')]]));_0x50fbb4(ut['message'](_0x070e('0xf2')));})[_0x070e('0x46')](function(_0x239385){ut[_0x070e('0x2e')](_0x070e('0xf3'),_0x239385);_0x40ff1b(ut[_0x070e('0x47')]('Call\x20failed',_0x41afe5,_0x4ea0a6));});}else{_0x3a5086[_0x070e('0xf4')]+=0x1;ut[_0x070e('0xf5')](_0x5e1fee);rpcDb[_0x070e('0xf6')](_0x5e1fee,'[Blacklist][error]');delete _0x445182[_0x070e('0x13')][_0xbaed32];_0x40ff1b(ut[_0x070e('0x47')](_0x070e('0xf7'),_0x41afe5,_0x4ea0a6));}});};Preview[_0x070e('0xc')]['isTrunkReachable']=function(_0x4175b9){return!_[_0x070e('0x54')](_0x4175b9)&&!_['isNil'](_0x4175b9[_0x070e('0x26')])&&!_[_0x070e('0x54')](_0x4175b9['active'])&&_0x4175b9[_0x070e('0xf8')]&&!_['isNil'](this[_0x070e('0x12')][util['format'](_0x070e('0xf9'),_0x4175b9['name'])])&&!_['isNil'](this[_0x070e('0x12')][util['format']('SIP/%s',_0x4175b9[_0x070e('0x26')])][_0x070e('0x45')])&&(this[_0x070e('0x12')][util[_0x070e('0x24')](_0x070e('0xf9'),_0x4175b9['name'])][_0x070e('0x45')]===_0x070e('0xfa')||this[_0x070e('0x12')][util[_0x070e('0x24')](_0x070e('0xf9'),_0x4175b9[_0x070e('0x26')])]['status']===_0x070e('0xfb'));};Preview[_0x070e('0xc')][_0x070e('0x5a')]=function(_0x44c780,_0x5817a0){return this['execRun'](_0x44c780,_0x5817a0)[_0x070e('0x5b')](function(_0x324641){return _[_0x070e('0x41')](_0x324641,[_0x070e('0x47')]);})[_0x070e('0x46')](function(_0x150ff2){if(_0x150ff2['unlock']){rpcDb[_0x070e('0xfc')](_0x44c780);}if(_0x150ff2[_0x070e('0xf8')]){rpcDb[_0x070e('0x5e')](_0x44c780);}throw _[_0x070e('0x41')](_0x150ff2,[_0x070e('0x47')]);});};Preview[_0x070e('0xc')]['execRun']=function(_0x4aabc3,_0x9b1fb1){var _0x43e514=this;var _0x193c72,_0x150bfb;return rpcDb[_0x070e('0xfd')](_0x4aabc3)[_0x070e('0x5b')](function(_0x257569){if(!_['isNil'](_0x257569[0x0])){_0x150bfb=_0x257569[0x0][_0x070e('0xfe')]?![]:!![];_0x193c72=_0x257569[0x0]['recallme']?!![]:![];_0x193c72=_0x9b1fb1?!![]:_0x193c72;}var _0xfe12a6=_0x43e514['validateContact'](_0x257569);if(_0xfe12a6['isValid']){rpcDb['checkIsBlackList'](_[_0x070e('0x41')](_0x257569[0x0],[_0x070e('0x43'),_0x070e('0xff')]))[_0x070e('0x5b')](function(_0xec8bee){_0x43e514[_0x070e('0x100')](_0xec8bee,_0x257569[0x0],_0x9b1fb1,_0x150bfb,_0x193c72)[_0x070e('0x5b')](function(_0x37285d){return _0x37285d;})[_0x070e('0x46')](function(_0x538bd4){throw _0x538bd4;});})[_0x070e('0x46')](function(_0x170efa){ut[_0x070e('0x2e')](_0x070e('0x101'),_0x170efa);throw ut[_0x070e('0x47')](_0x070e('0x102'),_0x150bfb,_0x193c72);});}else{throw ut[_0x070e('0x47')](_0xfe12a6[_0x070e('0x47')],_0x150bfb,_0x193c72);}})[_0x070e('0x46')](function(_0x4ad025){ut['logger'](_0x070e('0x103'),_0x4ad025);throw ut[_0x070e('0x47')]('Call\x20unsuccessful',![],!![]);});};Preview[_0x070e('0xc')]['validateContact']=function(_0x48d26c){if(_[_0x070e('0x54')](_0x48d26c)||_[_0x070e('0xee')](_0x48d26c)||!_['isNil'](_0x48d26c[0x0][_0x070e('0x58')])&&_[_0x070e('0x54')](_0x48d26c[0x0][_0x070e('0x58')]['name'])){ut['logger'](_0x070e('0x104'),_0x48d26c);return{'isValid':![],'message':_0x070e('0x105')};}var _0x21d392=this['campaignsPreview'][_0x48d26c[0x0][_0x070e('0x3f')][_0x070e('0x26')]];_0x21d392['message']=utils[_0x070e('0x31')][_0x070e('0x71')];if(_[_0x070e('0x54')](_0x21d392)){ut[_0x070e('0x2e')](_0x070e('0x106'),_0x21d392);return{'isValid':![],'message':_0x070e('0x107')};}if(!this[_0x070e('0x6e')](_0x21d392[_0x070e('0x6f')])){ut[_0x070e('0x2e')](_0x070e('0x108'),_0x070e('0x109')+_0x21d392[_0x070e('0x26')]+_0x070e('0x10a'));if(!this[_0x070e('0x6e')](_0x21d392[_0x070e('0x70')])){ut[_0x070e('0x2e')](_0x070e('0x108'),_0x21d392['name']+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut['isActive'](_0x21d392[_0x070e('0x6d')])){ut[_0x070e('0x2e')](_0x070e('0x10b'),_0x21d392['name']+_0x070e('0x10c'));return{'isValid':![],'message':_0x070e('0x109')+_0x21d392[_0x070e('0x26')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0x070e('0x10d')};};Preview[_0x070e('0xc')][_0x070e('0xef')]=function(_0x3ef1b3,_0x526afc,_0x7f803a,_0x3967bd){var _0x4717de=this;return new Promise(function(_0x4fde12,_0xcd40c1){var _0x417350=_0x3ef1b3[_0x070e('0x8d')];var _0x220cc9=_0x4717de[_0x070e('0x6e')](_0x526afc[_0x070e('0x6f')])?util[_0x070e('0x24')](_0x070e('0x10e'),_0x526afc[_0x070e('0x6f')]['name'],_['isNil'](_0x526afc[_0x070e('0x10f')])?'':_0x526afc['dialPrefix']['trim']()||'',_0x526afc[_0x070e('0x110')]>0x0?_0x7f803a[_0x070e('0xff')][_0x070e('0x111')](_0x526afc[_0x070e('0x110')]):_0x7f803a[_0x070e('0xff')]):util[_0x070e('0x24')]('SIP/%s/%s%s',_[_0x070e('0x54')](_0x526afc[_0x070e('0x70')])?_0x526afc[_0x070e('0x6f')][_0x070e('0x26')]:_0x526afc['TrunkBackup'][_0x070e('0x26')],_['isNil'](_0x526afc[_0x070e('0x10f')])?'':_0x526afc[_0x070e('0x10f')][_0x070e('0x112')]()||'',_0x526afc[_0x070e('0x110')]>0x0?_0x7f803a[_0x070e('0xff')][_0x070e('0x111')](_0x526afc[_0x070e('0x110')]):_0x7f803a[_0x070e('0xff')]);var _0x2b4e74=_0x4717de['isTrunkReachable'](_0x526afc[_0x070e('0x6f')])?ut[_0x070e('0x113')](_0x526afc[_0x070e('0x6f')][_0x070e('0x114')],_0x526afc[_0x070e('0x115')],_0x526afc[_0x070e('0x116')]>0x0?ut[_0x070e('0x117')](_0x526afc[_0x070e('0x118')],_0x526afc['dialRandomLastDigitCallerIdNumber']):_0x526afc[_0x070e('0x118')]):ut[_0x070e('0x113')](_['isNil'](_0x526afc['TrunkBackup'])?_0x526afc[_0x070e('0x6f')][_0x070e('0x114')]:_0x526afc[_0x070e('0x70')][_0x070e('0x114')],_0x526afc[_0x070e('0x115')],_0x526afc[_0x070e('0x116')]>0x0?ut['getCallerIdRandom'](_0x526afc['dialOriginateCallerIdNumber'],_0x526afc[_0x070e('0x116')]):_0x526afc[_0x070e('0x118')]);if(_0x2b4e74){_0x3ef1b3['originatecalleridname']=ut[_0x070e('0x119')](_0x2b4e74);_0x3ef1b3['originatecalleridnum']=ut[_0x070e('0x11a')](_0x2b4e74);}var _0xa2c957=ut['addVariables'](_0x526afc,_0x7f803a,_0x220cc9,_0x2b4e74,_0x417350,_0x3ef1b3);_[_0x070e('0x11b')](_0x3ef1b3,ut[_0x070e('0x11c')](_0xa2c957));_0x3ef1b3['starttime']=moment()['format'](_0x070e('0x60'));_0x526afc['variables']=_0xa2c957;var _0x1ebec9=ut[_0x070e('0x11d')](_0x3ef1b3,_0x526afc,_0xa2c957,_0x3ef1b3[_0x070e('0xac')],_0x3967bd);return ami['Action'](_0x1ebec9)[_0x070e('0x5b')](function(_0x17adf3){_0x526afc['originated']+=0x1;logger[_0x070e('0x22')](_0x070e('0x11e'),_0x417350,_0x070e('0x8e'),_0x526afc[_0x070e('0x26')],_0x070e('0xd9'),_0x526afc[_0x070e('0x29')]);_0x4fde12(_0x17adf3);})[_0x070e('0x46')](function(_0x358e1b){ut[_0x070e('0xdd')](_0x3ef1b3,0xe,_0x070e('0x11f'));rpcDb['createAgentHistory'](_0x3ef1b3,_0x070e('0x120'));_0xcd40c1(_0x358e1b);});});};Preview[_0x070e('0xc')][_0x070e('0x1b')]=function(_0x52d89d){if(this['actions'][_0x52d89d[_0x070e('0x9f')]]){this[_0x070e('0x13')][_0x52d89d[_0x070e('0x9f')]][_0x070e('0x121')]=_0x52d89d['channel'];}};Preview[_0x070e('0xc')]['syncOriginateResponse']=function(_0x5044e8){var _0x1a1851=this;var _0x52ca6c=this[_0x070e('0x13')][_0x5044e8[_0x070e('0x122')]];if(_0x52ca6c){if(_0x52ca6c[_0x070e('0xed')]&&this[_0x070e('0x53')][_0x52ca6c['lookAgent']]){ut[_0x070e('0x123')](_0x52ca6c,this['agents'][_0x52ca6c[_0x070e('0xed')]][_0x070e('0x26')],this[_0x070e('0x53')][_0x52ca6c[_0x070e('0xed')]]['id']);}var _0x475774=_[_0x070e('0x124')](_0x52ca6c);_0x475774[_0x070e('0x8a')]=moment()[_0x070e('0x24')](_0x070e('0x60'));var _0xf8cfd=_0x1a1851[_0x070e('0x10')][_0x52ca6c[_0x070e('0x40')]];if(ut[_0x070e('0x125')](_0x5044e8[_0x070e('0x126')])){if(_0x52ca6c[_0x070e('0x84')]){rpcDb[_0x070e('0xfc')](_0x52ca6c['idContact']);}if(_0x52ca6c['activeContact']){rpcDb[_0x070e('0x5e')](_0x52ca6c[_0x070e('0x86')]);}ami['emit'](_0x070e('0x127'),ut[_0x070e('0x79')](_0x52ca6c,'rejected',this[_0x070e('0x10')][_0x52ca6c[_0x070e('0x40')]]));this['callProgressDetectingAgent'](_0x475774,_0xf8cfd,_0x5044e8);}else{_0x52ca6c[_0x070e('0x5f')]=moment()[_0x070e('0x24')](_0x070e('0x60'));ut[_0x070e('0xdd')](_0x475774,0x4,_0x070e('0x99'));rpcDb[_0x070e('0xe0')](_0x475774,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x070e('0xc')][_0x070e('0x16')]=function(_0x275767){var _0x4f33d8=this[_0x070e('0x13')][_0x275767[_0x070e('0x9f')]];var _0xe50bad;if(_0x4f33d8){_0xe50bad=this[_0x070e('0x10')][_0x4f33d8['queue']];logger['info'](_0x070e('0x128'),_0x275767[_0x070e('0x9f')],_0x070e('0x8e'),_0xe50bad[_0x070e('0x26')],_0x070e('0x8f'),_0xe50bad[_0x070e('0x2a')]);}if(this[_0x070e('0x13')][_0x275767['linkedid']]&&_0x275767[_0x070e('0x9f')]!==_0x275767[_0x070e('0x8d')]){if(_0x275767[_0x070e('0x129')]==='16'&&this[_0x070e('0x13')][_0x275767[_0x070e('0x9f')]][_0x070e('0x4a')]){this[_0x070e('0x72')](_0x275767,_0x275767[_0x070e('0x9f')],_0x275767[_0x070e('0x129')]);}else if(this[_0x070e('0x13')][_0x275767[_0x070e('0x9f')]][_0x070e('0x4a')]){logger[_0x070e('0x22')](_0x070e('0x12a'),_0x275767[_0x070e('0x9f')],_0x275767['cause'],_0x070e('0x8e'),_0xe50bad[_0x070e('0x26')],_0x070e('0x8f'),_0xe50bad[_0x070e('0x2a')]);this[_0x070e('0x72')](_0x275767,_0x275767[_0x070e('0x9f')],_0x275767[_0x070e('0x129')]);}}else if(_0x4f33d8&&_['isNil'](_0x4f33d8[_0x070e('0x12b')])&&_0xe50bad[_0x070e('0x12c')]&&_0x275767[_0x070e('0x9f')]===_0x275767[_0x070e('0x8d')]&&_[_0x070e('0x54')](_0x275767[_0x070e('0xe5')])&&_0x275767[_0x070e('0x129')]==='16'&&_0x275767[_0x070e('0x12d')]==='6'&&_[_0x070e('0xdb')](_0x4f33d8['transfer'])){if(_0x4f33d8[_0x070e('0x84')]){rpcDb[_0x070e('0xfc')](_0x4f33d8[_0x070e('0x86')]);}if(_0x4f33d8[_0x070e('0xac')]){rpcDb[_0x070e('0x5e')](_0x4f33d8[_0x070e('0x86')]);}_0x275767[_0x070e('0xe5')]='22';this[_0x070e('0x12e')](_0x4f33d8,_0xe50bad,_0x275767);}else if(_0x4f33d8&&_0x4f33d8[_0x070e('0x12f')]){if(_0x275767[_0x070e('0x129')]==='16'&&this[_0x070e('0x13')][_0x275767[_0x070e('0x9f')]][_0x070e('0x4a')]){logger[_0x070e('0x22')](_0x070e('0x130'),_0x275767[_0x070e('0x9f')],_0x275767[_0x070e('0x129')],_0x070e('0x8e'),_0xe50bad[_0x070e('0x26')],_0x070e('0x8f'),_0xe50bad[_0x070e('0x2a')]);this[_0x070e('0x72')](_0x275767,_0x275767['linkedid'],_0x275767[_0x070e('0x129')]);}else if(this[_0x070e('0x13')][_0x275767[_0x070e('0x9f')]][_0x070e('0x4a')]){logger['info'](_0x070e('0x12a'),_0x275767['linkedid'],_0x275767[_0x070e('0x129')],'\x20Queue',_0xe50bad['name'],_0x070e('0x8f'),_0xe50bad[_0x070e('0x2a')]);this[_0x070e('0x72')](_0x275767,_0x275767['linkedid'],_0x275767[_0x070e('0x129')]);}}};Preview['prototype'][_0x070e('0x1a')]=function(_0x1e0e55){if(this['actions'][_0x1e0e55[_0x070e('0x131')]]&&_0x1e0e55['destlinkedid']!==_0x1e0e55[_0x070e('0x132')]){this[_0x070e('0x72')](_0x1e0e55,_0x1e0e55[_0x070e('0x131')],_0x1e0e55['dialstatus']);}};Preview['prototype'][_0x070e('0x17')]=function(_0x4bed29){if(this[_0x070e('0x13')][_0x4bed29[_0x070e('0x9f')]]&&_0x4bed29[_0x070e('0x9f')]!==_0x4bed29[_0x070e('0x8d')]&&!this[_0x070e('0x13')][_0x4bed29[_0x070e('0x9f')]]['dialAnswer']){if(_0x4bed29['cause']==='1'){this[_0x070e('0x72')](_0x4bed29,_0x4bed29['linkedid'],_0x4bed29['cause']);}}};Preview[_0x070e('0xc')][_0x070e('0x133')]=function(_0x3c8b7d,_0x5ddf05,_0x241d86){if(this[_0x070e('0x13')][_0x3c8b7d]){if(_[_0x070e('0x54')](this['actions'][_0x3c8b7d]['variables'])){this[_0x070e('0x13')][_0x3c8b7d][_0x070e('0x134')]={};}this[_0x070e('0x13')][_0x3c8b7d]['variables'][_0x5ddf05]=_0x241d86;}};Preview[_0x070e('0xc')]['syncVarSet']=function(_0x2e9263){try{if(!_['isNil'](_0x2e9263)){if(ut[_0x070e('0x135')](_[_0x070e('0x136')](_0x2e9263['variable'])[0x0])){this[_0x070e('0x133')](_0x2e9263[_0x070e('0x8d')],_[_0x070e('0x136')](_0x2e9263[_0x070e('0x137')])[0x0],_0x2e9263[_0x070e('0x138')]);}}}catch(_0xd6529a){logger[_0x070e('0x139')](_0x070e('0x13a'),util[_0x070e('0x13b')](_0xd6529a,{'showHidden':![],'depth':null}));}};Preview[_0x070e('0xc')][_0x070e('0x1e')]=function(_0x10b168){if(_0x10b168){if(this[_0x070e('0x13')][_0x10b168['transfertargetlinkedid']]){this[_0x070e('0x13')][_0x10b168[_0x070e('0x13c')]][_0x070e('0x12f')]=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x38afa3){if(_0x38afa3){if(this[_0x070e('0x13')][_0x38afa3['transfererlinkedid']]){this[_0x070e('0x13')][_0x38afa3[_0x070e('0x13d')]][_0x070e('0x12f')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index bf867fa..9e76f57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaee=['resolve','createHistory','catch','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','then','getContactPreview','[getContactPreview]\x20','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','queuecallerexitreason','create','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','../../../config/logger','preview','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','[createHistory]\x20'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0xaaee,0x16a));var _0xeaae=function(_0x5825d4,_0x31deff){_0x5825d4=_0x5825d4-0x0;var _0x354001=_0xaaee[_0x5825d4];return _0x354001;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0xeaae('0x0'))(_0xeaae('0x1'));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0xeaae('0x2'));var cmHopperBlack=require(_0xeaae('0x3'));var agentReportPreview=require(_0xeaae('0x4'));var voiceQueueReport=require(_0xeaae('0x5'));function loggerCatch(_0x5675cc){return function(_0x49d8d6){logger[_0xeaae('0x6')](_0x5675cc,util[_0xeaae('0x7')](_0x49d8d6,{'showHidden':![],'depth':null}));};}function create(_0x476979){return cmHopperHistory['createHistory'](_0x476979)['catch'](loggerCatch(_0xeaae('0x8')));}function createAgent(_0x37478b){return BPromise[_0xeaae('0x9')]()['then'](agentReportPreview[_0xeaae('0xa')](_0x37478b))[_0xeaae('0xb')](loggerCatch(_0xeaae('0x8')));}function moveContact(_0x3e4e64){return cmHopper['moveContactManagedDialer'](_0x3e4e64,!![])[_0xeaae('0xb')](loggerCatch(_0xeaae('0xc')));}exports[_0xeaae('0xd')]=function(_0x461b7d){return cmHopperBlack[_0xeaae('0xd')](_0x461b7d)[_0xeaae('0xb')](loggerCatch(_0xeaae('0xe')));};exports['getContactPreview']=function(_0xa2cfab){return BPromise[_0xeaae('0x9')]()[_0xeaae('0xf')](cmHopper[_0xeaae('0x10')](_0xa2cfab))[_0xeaae('0xb')](loggerCatch(_0xeaae('0x11')));};exports[_0xeaae('0xa')]=function(_0x33d943,_0x5b71be){create(_0x33d943)['catch'](loggerCatch(_0x5b71be));moveContact(_0x33d943)[_0xeaae('0xb')](loggerCatch(_0x5b71be));};exports['createAgentHistory']=function(_0x2d6dc4,_0x1c3f0b){createAgent(_0x2d6dc4)[_0xeaae('0xb')](loggerCatch(_0x1c3f0b));};exports[_0xeaae('0x12')]=function(_0x1ebfdb,_0x5bbdd0){create(_0x1ebfdb)[_0xeaae('0xb')](loggerCatch(_0x5bbdd0));};exports[_0xeaae('0x13')]=function(_0x585374,_0x18fabf){moveContact(_0x585374)[_0xeaae('0xb')](loggerCatch(_0x18fabf));};exports[_0xeaae('0x14')]=function(_0x2eff2a,_0xf216ff,_0x349341){if(_0xf216ff){_0x2eff2a[_0xeaae('0x15')]=null;}if(_0x349341){_0x2eff2a['active']=![];}return cmHopper[_0xeaae('0x14')](_0x2eff2a)[_0xeaae('0xb')](loggerCatch(_0xeaae('0x16')));};exports[_0xeaae('0x17')]=function(_0x1879fe){return cmHopper[_0xeaae('0x17')](_0x1879fe)[_0xeaae('0xb')](loggerCatch(_0xeaae('0x18')));};exports[_0xeaae('0x19')]=function(_0x2cb9a2){return cmHopper['unlockContact']({'UserId':null},_0x2cb9a2,0x1)[_0xeaae('0xb')](loggerCatch(_0xeaae('0x1a')));};exports[_0xeaae('0x1b')]=function(_0x3d5e05){return cmHopper[_0xeaae('0x19')]({'active':![]},_0x3d5e05,0x1)[_0xeaae('0xb')](loggerCatch(_0xeaae('0x1c')));};exports[_0xeaae('0x1d')]=function(_0x5a7dfb){var _0x12267f={};_0x12267f[_0xeaae('0x1e')]=_0x5a7dfb[_0xeaae('0x1e')];_0x12267f['uniqueid']=_0x5a7dfb[_0xeaae('0x1f')];_0x12267f['calleridnum']=_0x5a7dfb[_0xeaae('0x20')];_0x12267f[_0xeaae('0x21')]=_0x5a7dfb['calleridname'];_0x12267f[_0xeaae('0x22')]=_0x5a7dfb['queue'];_0x12267f[_0xeaae('0x23')]=_0x5a7dfb[_0xeaae('0x24')];_0x12267f[_0xeaae('0x25')]=_0x5a7dfb['answertime'];_0x12267f[_0xeaae('0x26')]=0x1;_0x12267f[_0xeaae('0x27')]=_0x5a7dfb[_0xeaae('0x28')];_0x12267f[_0xeaae('0x29')]=_0x5a7dfb[_0xeaae('0x2a')];_0x12267f[_0xeaae('0x2b')]='from-sip';_0x12267f[_0xeaae('0x2c')]=_0xeaae('0x2d');_0x12267f[_0xeaae('0x2e')]=0x0;_0x12267f['assigned']=0x1;_0x12267f['lastAssignedTo']=_0x5a7dfb[_0xeaae('0x2a')];_0x12267f[_0xeaae('0x2f')]='COMPLETED';return BPromise[_0xeaae('0x9')]()[_0xeaae('0xf')](voiceQueueReport[_0xeaae('0x30')](_0x12267f))[_0xeaae('0xb')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0x3f8dfa,_0x3b7aee){return BPromise[_0xeaae('0x9')]()[_0xeaae('0xf')](cmHopper[_0xeaae('0x31')](_0x3f8dfa,_0x3b7aee))[_0xeaae('0xb')](loggerCatch(_0xeaae('0x32')));};exports[_0xeaae('0x33')]=function(_0x27dbbe){return cmHopper[_0xeaae('0x14')](_0x27dbbe,!![],!![])[_0xeaae('0xb')](loggerCatch(_0xeaae('0x34')));};
\ No newline at end of file
+var _0x05b8=['[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueReport','error','inspect','catch','[createHistory]\x20','resolve','then','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','UserId'];(function(_0x51228d,_0x2c2fde){var _0x280cdc=function(_0x23ddda){while(--_0x23ddda){_0x51228d['push'](_0x51228d['shift']());}};_0x280cdc(++_0x2c2fde);}(_0x05b8,0xc1));var _0x805b=function(_0xbf4084,_0x54d1ca){_0xbf4084=_0xbf4084-0x0;var _0x104211=_0x05b8[_0xbf4084];return _0x104211;};'use strict';var util=require(_0x805b('0x0'));var BPromise=require(_0x805b('0x1'));var logger=require(_0x805b('0x2'))(_0x805b('0x3'));var cmHopper=require(_0x805b('0x4'));var cmHopperHistory=require(_0x805b('0x5'));var cmHopperBlack=require(_0x805b('0x6'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x805b('0x7'));function loggerCatch(_0x577141){return function(_0x387f82){logger[_0x805b('0x8')](_0x577141,util[_0x805b('0x9')](_0x387f82,{'showHidden':![],'depth':null}));};}function create(_0x52cfd2){return cmHopperHistory['createHistory'](_0x52cfd2)[_0x805b('0xa')](loggerCatch(_0x805b('0xb')));}function createAgent(_0x3f6c60){return BPromise[_0x805b('0xc')]()[_0x805b('0xd')](agentReportPreview[_0x805b('0xe')](_0x3f6c60))[_0x805b('0xa')](loggerCatch(_0x805b('0xb')));}function moveContact(_0x46f43f){return cmHopper[_0x805b('0xf')](_0x46f43f,!![])['catch'](loggerCatch(_0x805b('0x10')));}exports[_0x805b('0x11')]=function(_0x2a85ec){return cmHopperBlack[_0x805b('0x11')](_0x2a85ec)['catch'](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x805b('0x12')]=function(_0x11abc2){return BPromise['resolve']()[_0x805b('0xd')](cmHopper['getContactPreview'](_0x11abc2))[_0x805b('0xa')](loggerCatch('[getContactPreview]\x20'));};exports[_0x805b('0xe')]=function(_0x518dc8,_0x9292b5){create(_0x518dc8)['catch'](loggerCatch(_0x9292b5));moveContact(_0x518dc8)[_0x805b('0xa')](loggerCatch(_0x9292b5));};exports[_0x805b('0x13')]=function(_0x25e337,_0x1954b0){createAgent(_0x25e337)['catch'](loggerCatch(_0x1954b0));};exports['createCustomerHistory']=function(_0x275780,_0x543e51){create(_0x275780)[_0x805b('0xa')](loggerCatch(_0x543e51));};exports[_0x805b('0x14')]=function(_0x5418a6,_0x2e9d9f){moveContact(_0x5418a6)['catch'](loggerCatch(_0x2e9d9f));};exports[_0x805b('0x15')]=function(_0x2c873d,_0x27406b,_0x3207dd){if(_0x27406b){_0x2c873d[_0x805b('0x16')]=null;}if(_0x3207dd){_0x2c873d['active']=![];}return cmHopper[_0x805b('0x15')](_0x2c873d)['catch'](loggerCatch(_0x805b('0x17')));};exports['countReScheduled']=function(_0x3e54db){return cmHopper[_0x805b('0x18')](_0x3e54db)[_0x805b('0xa')](loggerCatch(_0x805b('0x19')));};exports[_0x805b('0x1a')]=function(_0x163792){return cmHopper[_0x805b('0x1a')]({'UserId':null},_0x163792,0x1)[_0x805b('0xa')](loggerCatch(_0x805b('0x1b')));};exports['disableContact']=function(_0x5c0ef6){return cmHopper[_0x805b('0x1a')]({'active':![]},_0x5c0ef6,0x1)[_0x805b('0xa')](loggerCatch(_0x805b('0x1c')));};exports[_0x805b('0x1d')]=function(_0x2fcc86){var _0x4b042f={};_0x4b042f['type']=_0x2fcc86[_0x805b('0x1e')];_0x4b042f[_0x805b('0x1f')]=_0x2fcc86['uniqueid'];_0x4b042f[_0x805b('0x20')]=_0x2fcc86[_0x805b('0x20')];_0x4b042f[_0x805b('0x21')]=_0x2fcc86[_0x805b('0x21')];_0x4b042f[_0x805b('0x22')]=_0x2fcc86['queue'];_0x4b042f[_0x805b('0x23')]=_0x2fcc86[_0x805b('0x24')];_0x4b042f[_0x805b('0x25')]=_0x2fcc86[_0x805b('0x24')];_0x4b042f['queuecallercomplete']=0x1;_0x4b042f['queuecallercompleteAt']=_0x2fcc86[_0x805b('0x26')];_0x4b042f[_0x805b('0x27')]=_0x2fcc86[_0x805b('0x28')];_0x4b042f[_0x805b('0x29')]='from-sip';_0x4b042f[_0x805b('0x2a')]=_0x805b('0x2b');_0x4b042f[_0x805b('0x2c')]=0x0;_0x4b042f[_0x805b('0x2d')]=0x1;_0x4b042f[_0x805b('0x2e')]=_0x2fcc86[_0x805b('0x28')];_0x4b042f['queuecallerexitreason']=_0x805b('0x2f');return BPromise[_0x805b('0xc')]()['then'](voiceQueueReport[_0x805b('0x30')](_0x4b042f))[_0x805b('0xa')](loggerCatch(_0x805b('0x31')));};exports['getContactRecallMe']=function(_0x54be4a,_0x3c081d){return BPromise[_0x805b('0xc')]()[_0x805b('0xd')](cmHopper[_0x805b('0x32')](_0x54be4a,_0x3c081d))[_0x805b('0xa')](loggerCatch(_0x805b('0x33')));};exports[_0x805b('0x34')]=function(_0x29316c){return cmHopper['rescheduleContact'](_0x29316c,!![],!![])[_0x805b('0xa')](loggerCatch(_0x805b('0x35')));};
\ No newline at end of file
index 06745ed..a21a2b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1712=['dialQueueProject2','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags','createdAt','XMD-','toUpper','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','getSeconds','membername','UserId','logCustomer','endtime','talktime','answertime','isFailure','variablesAction','RECALL','BOOKED','uniqueid','channelAgent','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','Global','scheduledAt','scheduledat','add','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','lastevent','queue','interface','voice','mandatoryDisposition','buildObj','buildAcw','agentReadyId','not_inuse','status','reachable','push','getDiff','milliseconds','diff','seconds','createBody','CampaignId','type','campaigntype','dialAnswer','active','countglobal','callbackat','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqoslossbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','noanswer','variables','forEach','toLowerCase','util','lodash','../../../../config/logger','preview','127.0.0.1','error','inspect','logger','info','logger2','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','isActive','isNil','Queue','name','calleridname','calleridnum','ContactId','dialOriginateTimeout','\x22rtTxX%s%s\x22','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE'];(function(_0x119bce,_0x577591){var _0x36bdaf=function(_0x139f1f){while(--_0x139f1f){_0x119bce['push'](_0x119bce['shift']());}};_0x36bdaf(++_0x577591);}(_0x1712,0x72));var _0x2171=function(_0x42bafd,_0x3f0fe3){_0x42bafd=_0x42bafd-0x0;var _0x2ed705=_0x1712[_0x42bafd];return _0x2ed705;};'use strict';var util=require(_0x2171('0x0'));var _=require(_0x2171('0x1'));var moment=require('moment');var logger=require(_0x2171('0x2'))(_0x2171('0x3'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x2171('0x4');var utils=require('../../dialer/utils');exports['loggerCatch']=function(_0x5afe18){return function(_0x14bd34){logger[_0x2171('0x5')](_0x5afe18,util[_0x2171('0x6')](_0x14bd34,{'showHidden':![],'depth':null}));};};exports[_0x2171('0x7')]=function(_0x5960f4,_0x2124b7){logger[_0x2171('0x8')](_0x5960f4,util[_0x2171('0x6')](_0x2124b7,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x5061df,_0x422587){logger['error'](_0x5061df,util[_0x2171('0x6')](_0x422587,{'showHidden':![],'depth':null}));};exports[_0x2171('0x9')]=function(_0x564a8c){return function(_0x4eae1d){logger[_0x2171('0x8')](_0x564a8c,util[_0x2171('0x6')](_0x4eae1d,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x6104d7,_0x1b5036,_0x4b1666){return{'message':_0x6104d7,'unlock':_0x1b5036,'active':_0x4b1666};};exports['getCallerId']=function(_0x520432,_0x37f461,_0x3f5a97){if(!_[_0x2171('0xa')](_0x3f5a97)&&_0x2171('0xb')===typeof _0x3f5a97&&!_[_0x2171('0xc')](_0x3f5a97)){if(!_[_0x2171('0xa')](_0x37f461)&&'string'===typeof _0x37f461&&!_[_0x2171('0xc')](_0x37f461)){return util['format']('\x22%s\x22\x20<%s>',_0x37f461,_0x3f5a97);}return util[_0x2171('0xd')](_0x2171('0xe'),_0x3f5a97,_0x3f5a97);}if(!_[_0x2171('0xa')](_0x520432)&&'string'===typeof _0x520432&&!_[_0x2171('0xc')](_0x520432)){return _0x520432;}return'\x22\x22\x20<>';};exports[_0x2171('0xf')]=function(_0x339b8f){if(_[_0x2171('0x10')](_0x339b8f)){return![];}return _0x339b8f;};exports['addVariables']=function(_0x170928,_0x8c0ae6,_0x27ed1d,_0x2f7229,_0x108703,_0x1bfdf9){var _0x2662e7={'XMD-QUEUE':_0x8c0ae6[_0x2171('0x11')]?_0x8c0ae6['Queue'][_0x2171('0x12')]:'','XMD-CALLERID':_0x2f7229,'XMD-CALLERID-PREVIEW':_0x1bfdf9?util[_0x2171('0xd')]('\x22%s\x22\x20<%s>',_0x1bfdf9[_0x2171('0x13')],_0x1bfdf9[_0x2171('0x14')]):_0x2f7229,'XMD-DIALID':_0x108703,'XMD-CONTACTID':_0x8c0ae6[_0x2171('0x15')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2f7229,'XMD-VOICEQUEUEID':_0x8c0ae6['VoiceQueueId'],'XMD-DIALCHANNEL':_0x27ed1d,'XMD-DIALTIMEOUT':_0x170928[_0x2171('0x16')]||0x1e,'XMD-DIALOPTIONS':util[_0x2171('0xd')](_0x2171('0x17'),_0x170928['dialQueueProject2']?'g':'',_[_0x2171('0xc')](_0x170928[_0x2171('0x18')])?'':_0x2171('0x19')),'XMD-DIALURL':_0x170928[_0x2171('0x1a')]||'','XMD-AGI':_0x170928[_0x2171('0x1b')]?util[_0x2171('0xd')](_0x2171('0x1c'),ipAgi,_0x170928[_0x2171('0x1b')]):_0x2171('0x1d'),'XMD-AGIAFTER':_0x170928[_0x2171('0x1e')]?util[_0x2171('0xd')]('\x22agi://%s/square,%s\x22',ipAgi,_0x170928[_0x2171('0x1e')]):_0x2171('0x1d'),'XMD-ORIGINATECALLERIDNUM':_0x1bfdf9?_0x1bfdf9[_0x2171('0x1f')]:'','XMD-ORIGINATECALLERIDNAME':_0x1bfdf9?_0x1bfdf9[_0x2171('0x20')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x2171('0x21')};if(!_[_0x2171('0xc')](_0x170928['monitor_format'])){_0x2662e7[util[_0x2171('0xd')]('%s',_0x2171('0x22'))]=_0x170928[_0x2171('0x18')];_0x2662e7[util[_0x2171('0xd')]('%s',_0x2171('0x23'))]=_0x108703;}if(_0x8c0ae6&&_0x8c0ae6[_0x2171('0x24')]){for(var _0x27eac0 in _0x8c0ae6['Contact']){if(_0x8c0ae6['Contact']['hasOwnProperty'](_0x27eac0)){if(!_[_0x2171('0x10')](_0x8c0ae6[_0x2171('0x24')][_0x27eac0])&&_0x27eac0!=='id'&&_0x27eac0!==_0x2171('0x25')&&_0x27eac0!==_0x2171('0x26')&&_0x27eac0!=='updatedAt'){_0x2662e7[util[_0x2171('0xd')]('%s%s',_0x2171('0x27'),_[_0x2171('0x28')](_0x27eac0))]=_0x8c0ae6[_0x2171('0x24')][_0x27eac0];}}}}return _0x2662e7;};exports['toLowerVariables']=function(_0x336c31){var _0x330254={};for(var _0x35ae48 in _0x336c31){if(_0x336c31[_0x2171('0x29')](_0x35ae48)){_0x330254[util['format']('%s',_[_0x2171('0x2a')](_0x35ae48))]=_0x336c31[_0x35ae48];}}return{'variables':_0x330254};};exports[_0x2171('0x2b')]=function(_0x454e2c,_0x4bc6a1){if(!_[_0x2171('0x10')](_0x454e2c)){if(_0x454e2c[_0x2171('0x29')]('originated')){if(_0x454e2c[_0x2171('0x2c')]>0x0){_0x454e2c[_0x2171('0x2c')]-=0x1;}else{logger[_0x2171('0x5')](_0x2171('0x2d'),_0x4bc6a1);}}}else{logger['error'](_0x2171('0x2e'),_0x4bc6a1);}};exports[_0x2171('0x2f')]=function(_0x2798cb){var _0x23421b=moment()[_0x2171('0xd')](_0x2171('0x30'));_0x2798cb[_0x2171('0x31')]=0xd;_0x2798cb[_0x2171('0x32')]=_0x2171('0x33');_0x2798cb[_0x2171('0x34')]=_0x23421b;_0x2798cb[_0x2171('0x35')]=_0x23421b;_0x2798cb['endtime']=_0x23421b;};exports['logAgent']=function(_0x503d7e,_0x28ce1f,_0x563ca4){var _0x2371e7=moment()[_0x2171('0xd')]('YYYY-MM-DD\x20HH:mm:ss');_0x503d7e['state']=_0x28ce1f;_0x503d7e[_0x2171('0x32')]=_0x563ca4;_0x503d7e[_0x2171('0x35')]=_0x2371e7;_0x503d7e['ringtime']=utils[_0x2171('0x36')](_0x503d7e[_0x2171('0x35')],_0x503d7e[_0x2171('0x34')]);};exports['logLookAgent']=function(_0x48cdf7,_0xa789ed,_0x4850e6){_0x48cdf7[_0x2171('0x37')]=_0xa789ed;_0x48cdf7[_0x2171('0x38')]=_0x4850e6;};exports[_0x2171('0x39')]=function(_0x4a855a,_0x6eea3f,_0x591cbb){var _0x18b0ab=moment()[_0x2171('0xd')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a855a[_0x2171('0x31')]=_0x6eea3f;_0x4a855a[_0x2171('0x32')]=_0x591cbb;_0x4a855a['responsetime']=_0x4a855a[_0x2171('0x35')]?_0x4a855a[_0x2171('0x35')]:_0x18b0ab;_0x4a855a[_0x2171('0x3a')]=_0x4a855a[_0x2171('0x3a')]?_0x4a855a[_0x2171('0x3a')]:_0x18b0ab;_0x4a855a['ringtime']=utils['getSeconds'](_0x4a855a[_0x2171('0x35')]||0x0,_0x4a855a[_0x2171('0x34')]||0x0);_0x4a855a[_0x2171('0x3b')]=_0x4a855a[_0x2171('0x3c')]?utils['getSeconds'](_0x4a855a[_0x2171('0x3a')],_0x4a855a[_0x2171('0x3c')]):0x0;};exports[_0x2171('0x3d')]=function(_0x4b52b9){return _0x4b52b9==='Failure';};exports[_0x2171('0x3e')]=function(_0x195d2a,_0xd65872,_0xdb300d,_0x19d138,_0x11a5a0){var _0x2de030=_0x19d138?_0x2171('0x3f'):_0x195d2a[_0x2171('0x13')];_0x2de030=_0x11a5a0?_0x2171('0x40'):_0x2de030;return{'actionid':_0x195d2a[_0x2171('0x41')],'action':'originate','channel':_0x195d2a[_0x2171('0x42')],'callerid':util[_0x2171('0xd')](_0x2171('0xe'),_0x2de030,_0x195d2a['calleridnum']),'Exten':'xcally-motion-preview','Context':_0x2171('0x43'),'Priority':'1','variable':_0xdb300d,'timeout':(_0xd65872[_0x2171('0x44')]||0x1e)*0x3e8,'async':!![],'channelid':_0x195d2a[_0x2171('0x41')]};};exports[_0x2171('0x45')]=function(_0x5573c8){return _0x5573c8[_0x2171('0x46')]+_0x5573c8[_0x2171('0x47')]+_0x5573c8[_0x2171('0x48')]+_0x5573c8[_0x2171('0x49')]+_0x5573c8[_0x2171('0x4a')];};exports[_0x2171('0x4b')]=function(_0x379147){var _0x25e6c3=_['clone'](_0x379147);_0x25e6c3[_0x2171('0x31')]=0xf;_0x25e6c3[_0x2171('0x32')]=_0x2171('0x4c');return _0x25e6c3;};exports[_0x2171('0x4d')]=function(_0x32cabd,_0x1fecd4,_0x2908be){var _0x40cd85={};_0x40cd85[_0x1fecd4]=_0x32cabd[_0x1fecd4];_0x40cd85['active']=![];_0x40cd85[_0x2171('0x4e')]=moment()[_0x2171('0x4f')](_0x2908be,'minutes')['format'](_0x2171('0x30'));_0x40cd85['ContactId']=_0x32cabd['ContactId'];_0x40cd85[_0x2171('0x50')]=_0x32cabd[_0x2171('0x50')];_0x40cd85[_0x2171('0x51')]=_0x32cabd['VoiceQueueId']||undefined;return _0x40cd85;};exports[_0x2171('0x52')]=function(_0x1bb432,_0x36ebce){if(!_[_0x2171('0x10')](_0x1bb432)){if(_0x1bb432[_0x2171('0x53')]>0x0){_0x1bb432[_0x2171('0x53')]-=0x1;}else{logger[_0x2171('0x5')](_0x36ebce,_0x2171('0x54'));}}else{logger[_0x2171('0x5')](_0x36ebce,_0x2171('0x55'));}};exports['IsNotLoggedIn']=function(_0x2dc976){if(_0x2dc976<=0x0){return!![];}return![];};function buildObj(_0xde2933,_0x31c137,_0x3b2f1a){_0xde2933[_0x2171('0x56')]=_0x31c137;_0xde2933['name']=_0xde2933[_0x2171('0x57')];_0xde2933[_0x2171('0x58')]=_0xde2933[_0x2171('0x42')];_0xde2933['motionChannel']=_0x2171('0x59');if(_0x3b2f1a){_0xde2933[_0x2171('0x5a')]=_0x3b2f1a['mandatoryDisposition'];}return _0xde2933;}exports[_0x2171('0x5b')]=buildObj;exports[_0x2171('0x5c')]=function(_0x38502b){var _0x831c4b={};_0x831c4b[_0x2171('0x57')]=_0x38502b[_0x2171('0x57')];_0x831c4b['interface']=_0x38502b[_0x2171('0x42')];_0x831c4b['uniqueid']=_0x38502b[_0x2171('0x41')];return _0x831c4b;};exports[_0x2171('0x5d')]=function(_0x5958c4){var _0x28c782=[];for(var _0xcd2ea3 in _0x5958c4){if(_0x5958c4['hasOwnProperty'](_0xcd2ea3)){if(!_[_0x2171('0x10')](_0x5958c4[_0xcd2ea3])&&_0x5958c4[_0xcd2ea3][_0x2171('0x31')]===_0x2171('0x5e')&&_0x5958c4[_0xcd2ea3][_0x2171('0x5f')]===_0x2171('0x60')){_0x28c782[_0x2171('0x61')](_0x5958c4[_0xcd2ea3]['id']);}}}return _0x28c782;};exports[_0x2171('0x62')]=function(_0x44a154){var _0x30a5b8=moment()[_0x2171('0x63')](0x0);var _0x102f2e=moment(_0x44a154)['milliseconds'](0x0);return _0x30a5b8[_0x2171('0x64')](_0x102f2e,_0x2171('0x65'));};exports[_0x2171('0x66')]=function(_0x51b5d7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x51b5d7[_0x2171('0x15')],'ListId':_0x51b5d7[_0x2171('0x50')],'VoiceQueueId':_0x51b5d7[_0x2171('0x51')]||undefined,'CampaignId':_0x51b5d7[_0x2171('0x67')]||undefined};};exports['filterKey']=function(_0x56b307){if(_0x56b307===_0x2171('0x41')||_0x56b307==='idContact'||_0x56b307===_0x2171('0x57')||_0x56b307===_0x2171('0x68')||_0x56b307===_0x2171('0x69')||_0x56b307===_0x2171('0x6a')||_0x56b307===_0x2171('0x37')||_0x56b307===_0x2171('0x42')||_0x56b307==='calleridname'||_0x56b307===_0x2171('0x6b')||_0x56b307==='calleridnum'||_0x56b307===_0x2171('0x4e')||_0x56b307==='countbusyretry'||_0x56b307===_0x2171('0x47')||_0x56b307===_0x2171('0x48')||_0x56b307===_0x2171('0x6c')||_0x56b307==='callback'||_0x56b307==='callbackuniqueid'||_0x56b307===_0x2171('0x6d')||_0x56b307==='recallme'||_0x56b307===_0x2171('0x15')||_0x56b307==='ListId'||_0x56b307==='UserId'||_0x56b307===_0x2171('0x51')||_0x56b307===_0x2171('0x6e')||_0x56b307===_0x2171('0x6f')||_0x56b307===_0x2171('0x70')||_0x56b307===_0x2171('0x71')||_0x56b307==='xmd-listid'||_0x56b307===_0x2171('0x72')||_0x56b307===_0x2171('0x73')||_0x56b307===_0x2171('0x74')||_0x56b307===_0x2171('0x75')||_0x56b307===_0x2171('0x76')||_0x56b307===_0x2171('0x77')||_0x56b307===_0x2171('0x78')||_0x56b307===_0x2171('0x79')||_0x56b307===_0x2171('0x7a')||_0x56b307===_0x2171('0x7b')||_0x56b307===_0x2171('0x7c')||_0x56b307===_0x2171('0x7d')||_0x56b307===_0x2171('0x7e')||_0x56b307===_0x2171('0x7f')||_0x56b307===_0x2171('0x80')||_0x56b307==='rtpaudioqoslossbridged'||_0x56b307===_0x2171('0x81')||_0x56b307===_0x2171('0x82')||_0x56b307===_0x2171('0x7c')||_0x56b307===_0x2171('0x7d')||_0x56b307==='rtpaudioqosjitter'||_0x56b307===_0x2171('0x7f')||_0x56b307==='rtpaudioqosloss'||_0x56b307===_0x2171('0x83')||_0x56b307===_0x2171('0x81')||_0x56b307==='rtpaudioqosrttbridged'||_0x56b307===_0x2171('0x84')||_0x56b307==='bridgepvtcallid'||_0x56b307===_0x2171('0x31')||_0x56b307===_0x2171('0x32')){return![];}return!![];};exports[_0x2171('0x85')]=function(_0x3f1488,_0x416f10){var _0x1684a5,_0x525c71,_0x5e03b1;if(_0x416f10<=0x0){_0x416f10=0x1;}_0x1684a5=new RegExp(_0x2171('0x86')+_0x416f10+'}$');_0x525c71=Math['pow'](0xa,_0x416f10-0x1);_0x5e03b1=Math[_0x2171('0x87')](0xa,_0x416f10)-0x1;return util[_0x2171('0xd')]('%s',_[_0x2171('0x88')](_0x3f1488,_0x1684a5,_[_0x2171('0x89')](_0x525c71,_0x5e03b1)));};exports[_0x2171('0x8a')]=function(_0x1d9cd3){var _0x443343=_0x1d9cd3[_0x2171('0x8b')](/"(.*?)"/);return _0x443343?_0x443343[0x1]:_0x1d9cd3;};exports['extractCalleridNumber']=function(_0x557f90){var _0x383928=_0x557f90['match'](/<(.*?)>/);return _0x383928?_0x383928[0x1]:_0x557f90;};function buildNoAnswerEventPayload(_0x3c78cb,_0x6d7357){var _0x509ad6=buildObj(_0x3c78cb,_0x2171('0x8c'));if(!_['isEmpty'](_0x6d7357[_0x2171('0x8d')])){Object['keys'](_0x6d7357['variables'])[_0x2171('0x8e')](function(_0x56b80b){_0x509ad6[_0x56b80b[_0x2171('0x8f')]()]=_0x6d7357['variables'][_0x56b80b];});}return _0x509ad6;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x66c7=['not_inuse','status','reachable','getDiff','diff','createBody','CampaignId','idContact','type','campaigntype','dialAnswer','countglobal','callback','callbackuniqueid','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosloss','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','extractCalleridName','match','extractCalleridNumber','noanswer','variables','keys','forEach','toLowerCase','util','lodash','moment','env','XCALLY_IP_AGI','127.0.0.1','../../dialer/utils','loggerCatch','error','inspect','logger','info','loggerError','logger2','message','string','isEmpty','isUndefined','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','format','calleridname','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','isNil','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','hasOwnProperty','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','logAgent','ringtime','starttime','membername','UserId','logCustomer','endtime','getSeconds','answertime','isFailure','variablesAction','uniqueid','originate','from-sip','totalGlobal','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','Global','active','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildObj','buildAcw','queue'];(function(_0x2bd8a6,_0x5b9211){var _0x1e037a=function(_0x486e4b){while(--_0x486e4b){_0x2bd8a6['push'](_0x2bd8a6['shift']());}};_0x1e037a(++_0x5b9211);}(_0x66c7,0xbc));var _0x766c=function(_0x6076e5,_0x358457){_0x6076e5=_0x6076e5-0x0;var _0x4123a4=_0x66c7[_0x6076e5];return _0x4123a4;};'use strict';var util=require(_0x766c('0x0'));var _=require(_0x766c('0x1'));var moment=require(_0x766c('0x2'));var logger=require('../../../../config/logger')('preview');var ipAgi=process[_0x766c('0x3')][_0x766c('0x4')]||_0x766c('0x5');var utils=require(_0x766c('0x6'));exports[_0x766c('0x7')]=function(_0xbeb018){return function(_0x1b511d){logger[_0x766c('0x8')](_0xbeb018,util[_0x766c('0x9')](_0x1b511d,{'showHidden':![],'depth':null}));};};exports[_0x766c('0xa')]=function(_0x5c1cbd,_0x38dcc4){logger[_0x766c('0xb')](_0x5c1cbd,util[_0x766c('0x9')](_0x38dcc4,{'showHidden':![],'depth':null}));};exports[_0x766c('0xc')]=function(_0x1a99e7,_0x12d2f8){logger[_0x766c('0x8')](_0x1a99e7,util[_0x766c('0x9')](_0x12d2f8,{'showHidden':![],'depth':null}));};exports[_0x766c('0xd')]=function(_0x5f1b96){return function(_0x35c27a){logger[_0x766c('0xb')](_0x5f1b96,util[_0x766c('0x9')](_0x35c27a,{'showHidden':![],'depth':null}));};};exports[_0x766c('0xe')]=function(_0x11c03e,_0x12fadb,_0x228a67){return{'message':_0x11c03e,'unlock':_0x12fadb,'active':_0x228a67};};exports['getCallerId']=function(_0x4036be,_0x58ebc5,_0x346951){if(!_['isUndefined'](_0x346951)&&_0x766c('0xf')===typeof _0x346951&&!_[_0x766c('0x10')](_0x346951)){if(!_[_0x766c('0x11')](_0x58ebc5)&&_0x766c('0xf')===typeof _0x58ebc5&&!_[_0x766c('0x10')](_0x58ebc5)){return util['format'](_0x766c('0x12'),_0x58ebc5,_0x346951);}return util['format'](_0x766c('0x12'),_0x346951,_0x346951);}if(!_[_0x766c('0x11')](_0x4036be)&&_0x766c('0xf')===typeof _0x4036be&&!_[_0x766c('0x10')](_0x4036be)){return _0x4036be;}return _0x766c('0x13');};exports[_0x766c('0x14')]=function(_0x445752){if(_['isNil'](_0x445752)){return![];}return _0x445752;};exports[_0x766c('0x15')]=function(_0x2a34e8,_0x1bc771,_0xaf7fc2,_0x479ca7,_0x5a035a,_0xcc62e4){var _0x1f515e={'XMD-QUEUE':_0x1bc771[_0x766c('0x16')]?_0x1bc771[_0x766c('0x16')]['name']:'','XMD-CALLERID':_0x479ca7,'XMD-CALLERID-PREVIEW':_0xcc62e4?util[_0x766c('0x17')]('\x22%s\x22\x20<%s>',_0xcc62e4[_0x766c('0x18')],_0xcc62e4[_0x766c('0x19')]):_0x479ca7,'XMD-DIALID':_0x5a035a,'XMD-CONTACTID':_0x1bc771['ContactId'],'XMD-CDRTYPE':_0x766c('0x1a'),'CALLERID(all)':_0x479ca7,'XMD-VOICEQUEUEID':_0x1bc771[_0x766c('0x1b')],'XMD-DIALCHANNEL':_0xaf7fc2,'XMD-DIALTIMEOUT':_0x2a34e8[_0x766c('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x766c('0x17')](_0x766c('0x1d'),_0x2a34e8[_0x766c('0x1e')]?'g':'',_['isEmpty'](_0x2a34e8[_0x766c('0x1f')])?'':_0x766c('0x20')),'XMD-DIALURL':_0x2a34e8['dialPreviewUrl']||'','XMD-AGI':_0x2a34e8[_0x766c('0x21')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x2a34e8[_0x766c('0x21')]):_0x766c('0x22'),'XMD-AGIAFTER':_0x2a34e8[_0x766c('0x1e')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x2a34e8[_0x766c('0x1e')]):_0x766c('0x22'),'XMD-ORIGINATECALLERIDNUM':_0xcc62e4?_0xcc62e4[_0x766c('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0xcc62e4?_0xcc62e4[_0x766c('0x24')]:'','XMD-DESTINATION':_0x766c('0x25'),'SIPADDHEADER':_0x766c('0x26')};if(!_[_0x766c('0x10')](_0x2a34e8[_0x766c('0x1f')])){_0x1f515e[util[_0x766c('0x17')]('%s',_0x766c('0x27'))]=_0x2a34e8['monitor_format'];_0x1f515e[util[_0x766c('0x17')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x5a035a;}if(_0x1bc771&&_0x1bc771[_0x766c('0x28')]){for(var _0xaba241 in _0x1bc771[_0x766c('0x28')]){if(_0x1bc771[_0x766c('0x28')]['hasOwnProperty'](_0xaba241)){if(!_[_0x766c('0x29')](_0x1bc771['Contact'][_0xaba241])&&_0xaba241!=='id'&&_0xaba241!==_0x766c('0x2a')&&_0xaba241!==_0x766c('0x2b')&&_0xaba241!==_0x766c('0x2c')){_0x1f515e[util['format'](_0x766c('0x2d'),_0x766c('0x2e'),_[_0x766c('0x2f')](_0xaba241))]=_0x1bc771[_0x766c('0x28')][_0xaba241];}}}}return _0x1f515e;};exports['toLowerVariables']=function(_0x48fc8a){var _0x33e6a1={};for(var _0x46fe48 in _0x48fc8a){if(_0x48fc8a[_0x766c('0x30')](_0x46fe48)){_0x33e6a1[util[_0x766c('0x17')]('%s',_['toLower'](_0x46fe48))]=_0x48fc8a[_0x46fe48];}}return{'variables':_0x33e6a1};};exports[_0x766c('0x31')]=function(_0x526973,_0x2d1606){if(!_[_0x766c('0x29')](_0x526973)){if(_0x526973[_0x766c('0x30')]('originated')){if(_0x526973[_0x766c('0x32')]>0x0){_0x526973[_0x766c('0x32')]-=0x1;}else{logger[_0x766c('0x8')](_0x766c('0x33'),_0x2d1606);}}}else{logger['error'](_0x766c('0x34'),_0x2d1606);}};exports['logBlacklist']=function(_0x254ff1){var _0x3dcf06=moment()[_0x766c('0x17')](_0x766c('0x35'));_0x254ff1[_0x766c('0x36')]=0xd;_0x254ff1[_0x766c('0x37')]='Blacklist';_0x254ff1['starttime']=_0x3dcf06;_0x254ff1[_0x766c('0x38')]=_0x3dcf06;_0x254ff1['endtime']=_0x3dcf06;};exports[_0x766c('0x39')]=function(_0x4e041a,_0x4248b8,_0xb781dd){var _0x5b710e=moment()[_0x766c('0x17')](_0x766c('0x35'));_0x4e041a[_0x766c('0x36')]=_0x4248b8;_0x4e041a[_0x766c('0x37')]=_0xb781dd;_0x4e041a[_0x766c('0x38')]=_0x5b710e;_0x4e041a[_0x766c('0x3a')]=utils['getSeconds'](_0x4e041a[_0x766c('0x38')],_0x4e041a[_0x766c('0x3b')]);};exports['logLookAgent']=function(_0x640ffc,_0x1e15d2,_0x3d7669){_0x640ffc[_0x766c('0x3c')]=_0x1e15d2;_0x640ffc[_0x766c('0x3d')]=_0x3d7669;};exports[_0x766c('0x3e')]=function(_0x326460,_0x1abeb6,_0x295c24){var _0x2f4eeb=moment()[_0x766c('0x17')]('YYYY-MM-DD\x20HH:mm:ss');_0x326460[_0x766c('0x36')]=_0x1abeb6;_0x326460[_0x766c('0x37')]=_0x295c24;_0x326460[_0x766c('0x38')]=_0x326460[_0x766c('0x38')]?_0x326460[_0x766c('0x38')]:_0x2f4eeb;_0x326460[_0x766c('0x3f')]=_0x326460[_0x766c('0x3f')]?_0x326460[_0x766c('0x3f')]:_0x2f4eeb;_0x326460['ringtime']=utils[_0x766c('0x40')](_0x326460[_0x766c('0x38')]||0x0,_0x326460[_0x766c('0x3b')]||0x0);_0x326460['talktime']=_0x326460[_0x766c('0x41')]?utils[_0x766c('0x40')](_0x326460[_0x766c('0x3f')],_0x326460[_0x766c('0x41')]):0x0;};exports[_0x766c('0x42')]=function(_0x377869){return _0x377869==='Failure';};exports[_0x766c('0x43')]=function(_0x3b3639,_0x19c0da,_0x164598,_0x12ffec,_0x1bed07){var _0x448d71=_0x12ffec?'RECALL':_0x3b3639[_0x766c('0x18')];_0x448d71=_0x1bed07?'BOOKED':_0x448d71;return{'actionid':_0x3b3639[_0x766c('0x44')],'action':_0x766c('0x45'),'channel':_0x3b3639['channelAgent'],'callerid':util[_0x766c('0x17')]('\x22%s\x22\x20<%s>',_0x448d71,_0x3b3639[_0x766c('0x19')]),'Exten':'xcally-motion-preview','Context':_0x766c('0x46'),'Priority':'1','variable':_0x164598,'timeout':(_0x19c0da['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3b3639['uniqueid']};};exports[_0x766c('0x47')]=function(_0x5a6ebf){return _0x5a6ebf['countbusyretry']+_0x5a6ebf[_0x766c('0x48')]+_0x5a6ebf[_0x766c('0x49')]+_0x5a6ebf[_0x766c('0x4a')]+_0x5a6ebf['countnosuchnumberretry'];};exports[_0x766c('0x4b')]=function(_0x3ae127){var _0x315149=_['clone'](_0x3ae127);_0x315149[_0x766c('0x36')]=0xf;_0x315149['statedesc']=_0x766c('0x4c');return _0x315149;};exports['scheduledAt']=function(_0x314c73,_0x152a27,_0x3e12d7){var _0x98c41f={};_0x98c41f[_0x152a27]=_0x314c73[_0x152a27];_0x98c41f[_0x766c('0x4d')]=![];_0x98c41f['scheduledat']=moment()[_0x766c('0x4e')](_0x3e12d7,_0x766c('0x4f'))['format'](_0x766c('0x35'));_0x98c41f['ContactId']=_0x314c73[_0x766c('0x50')];_0x98c41f[_0x766c('0x51')]=_0x314c73[_0x766c('0x51')];_0x98c41f[_0x766c('0x1b')]=_0x314c73[_0x766c('0x1b')]||undefined;return _0x98c41f;};exports[_0x766c('0x52')]=function(_0x3f181b,_0x152a7d){if(!_['isNil'](_0x3f181b)){if(_0x3f181b[_0x766c('0x53')]>0x0){_0x3f181b[_0x766c('0x53')]-=0x1;}else{logger[_0x766c('0x8')](_0x152a7d,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger['error'](_0x152a7d,_0x766c('0x54'));}};exports[_0x766c('0x55')]=function(_0x231f8b){if(_0x231f8b<=0x0){return!![];}return![];};function buildObj(_0xe7cf18,_0x52681d,_0x59405d){_0xe7cf18[_0x766c('0x56')]=_0x52681d;_0xe7cf18[_0x766c('0x57')]=_0xe7cf18['queue'];_0xe7cf18[_0x766c('0x58')]=_0xe7cf18[_0x766c('0x59')];_0xe7cf18[_0x766c('0x5a')]=_0x766c('0x5b');if(_0x59405d){_0xe7cf18[_0x766c('0x5c')]=_0x59405d[_0x766c('0x5c')];}return _0xe7cf18;}exports[_0x766c('0x5d')]=buildObj;exports[_0x766c('0x5e')]=function(_0x25224d){var _0x49a91d={};_0x49a91d[_0x766c('0x5f')]=_0x25224d[_0x766c('0x5f')];_0x49a91d[_0x766c('0x58')]=_0x25224d[_0x766c('0x59')];_0x49a91d[_0x766c('0x44')]=_0x25224d[_0x766c('0x44')];return _0x49a91d;};exports['agentReadyId']=function(_0x50cb63){var _0x2c42f9=[];for(var _0x121058 in _0x50cb63){if(_0x50cb63[_0x766c('0x30')](_0x121058)){if(!_[_0x766c('0x29')](_0x50cb63[_0x121058])&&_0x50cb63[_0x121058][_0x766c('0x36')]===_0x766c('0x60')&&_0x50cb63[_0x121058][_0x766c('0x61')]===_0x766c('0x62')){_0x2c42f9['push'](_0x50cb63[_0x121058]['id']);}}}return _0x2c42f9;};exports[_0x766c('0x63')]=function(_0x247594){var _0x22bc9a=moment()['milliseconds'](0x0);var _0x1a1679=moment(_0x247594)['milliseconds'](0x0);return _0x22bc9a[_0x766c('0x64')](_0x1a1679,'seconds');};exports[_0x766c('0x65')]=function(_0x3e5653){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3e5653[_0x766c('0x50')],'ListId':_0x3e5653[_0x766c('0x51')],'VoiceQueueId':_0x3e5653[_0x766c('0x1b')]||undefined,'CampaignId':_0x3e5653[_0x766c('0x66')]||undefined};};exports['filterKey']=function(_0x334342){if(_0x334342===_0x766c('0x44')||_0x334342===_0x766c('0x67')||_0x334342==='queue'||_0x334342===_0x766c('0x68')||_0x334342===_0x766c('0x69')||_0x334342===_0x766c('0x6a')||_0x334342===_0x766c('0x3c')||_0x334342===_0x766c('0x59')||_0x334342===_0x766c('0x18')||_0x334342===_0x766c('0x4d')||_0x334342===_0x766c('0x19')||_0x334342==='scheduledat'||_0x334342==='countbusyretry'||_0x334342==='countcongestionretry'||_0x334342==='countnoanswerretry'||_0x334342===_0x766c('0x6b')||_0x334342===_0x766c('0x6c')||_0x334342===_0x766c('0x6d')||_0x334342==='callbackat'||_0x334342==='recallme'||_0x334342===_0x766c('0x50')||_0x334342===_0x766c('0x51')||_0x334342==='UserId'||_0x334342==='VoiceQueueId'||_0x334342===_0x766c('0x6e')||_0x334342===_0x766c('0x6f')||_0x334342===_0x766c('0x70')||_0x334342===_0x766c('0x71')||_0x334342==='xmd-listid'||_0x334342===_0x766c('0x72')||_0x334342===_0x766c('0x73')||_0x334342==='xmd-dialoptions'||_0x334342===_0x766c('0x74')||_0x334342==='xmd-dialchannel'||_0x334342==='xmd-contactid'||_0x334342===_0x766c('0x75')||_0x334342===_0x766c('0x76')||_0x334342===_0x766c('0x77')||_0x334342===_0x766c('0x78')||_0x334342===_0x766c('0x79')||_0x334342===_0x766c('0x7a')||_0x334342===_0x766c('0x7b')||_0x334342===_0x766c('0x7c')||_0x334342==='rtpaudioqosloss'||_0x334342===_0x766c('0x7d')||_0x334342===_0x766c('0x7e')||_0x334342==='rtpaudioqosrttbridged'||_0x334342==='rtpaudioqos'||_0x334342==='rtpaudioqosbridged'||_0x334342===_0x766c('0x7b')||_0x334342===_0x766c('0x7c')||_0x334342===_0x766c('0x7f')||_0x334342==='rtpaudioqoslossbridged'||_0x334342===_0x766c('0x7e')||_0x334342==='rtpaudioqosrttbridged'||_0x334342===_0x766c('0x80')||_0x334342===_0x766c('0x81')||_0x334342===_0x766c('0x36')||_0x334342===_0x766c('0x37')){return![];}return!![];};exports[_0x766c('0x82')]=function(_0x353ff8,_0x4f6a0c){var _0x44639a,_0xa8f701,_0x39240d;if(_0x4f6a0c<=0x0){_0x4f6a0c=0x1;}_0x44639a=new RegExp(_0x766c('0x83')+_0x4f6a0c+'}$');_0xa8f701=Math[_0x766c('0x84')](0xa,_0x4f6a0c-0x1);_0x39240d=Math[_0x766c('0x84')](0xa,_0x4f6a0c)-0x1;return util['format']('%s',_[_0x766c('0x85')](_0x353ff8,_0x44639a,_['random'](_0xa8f701,_0x39240d)));};exports[_0x766c('0x86')]=function(_0xb880de){var _0x53417d=_0xb880de[_0x766c('0x87')](/"(.*?)"/);return _0x53417d?_0x53417d[0x1]:_0xb880de;};exports[_0x766c('0x88')]=function(_0x3883b1){var _0x23c70d=_0x3883b1[_0x766c('0x87')](/<(.*?)>/);return _0x23c70d?_0x23c70d[0x1]:_0x3883b1;};function buildNoAnswerEventPayload(_0x5e0fa0,_0x323968){var _0x5a2209=buildObj(_0x5e0fa0,_0x766c('0x89'));if(!_['isEmpty'](_0x323968[_0x766c('0x8a')])){Object[_0x766c('0x8b')](_0x323968['variables'])[_0x766c('0x8c')](function(_0x503c4c){_0x5a2209[_0x503c4c[_0x766c('0x8d')]()]=_0x323968['variables'][_0x503c4c];});}return _0x5a2209;}exports['buildNoAnswerEventPayload']=buildNoAnswerEventPayload;
\ No newline at end of file
index c0a91cb..83a13db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x654d=['boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelredirect','queueadd','string','number'];(function(_0x37d0bc,_0x109b96){var _0x170e60=function(_0xae2ad){while(--_0xae2ad){_0x37d0bc['push'](_0x37d0bc['shift']());}};_0x170e60(++_0x109b96);}(_0x654d,0xcf));var _0xd654=function(_0x25f918,_0x18385f){_0x25f918=_0x25f918-0x0;var _0x24b72c=_0x654d[_0x25f918];return _0x24b72c;};'use strict';exports[_0xd654('0x0')]={'queue':{'type':_0xd654('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0xd654('0x2'),'required':![]},'paused':{'type':_0xd654('0x3'),'required':![]}};exports[_0xd654('0x4')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0xd654('0x1'),'required':!![]}};exports[_0xd654('0x5')]={'interface':{'type':_0xd654('0x1'),'required':!![]},'paused':{'type':_0xd654('0x3')},'reason':{'type':_0xd654('0x1'),'required':![]}};exports[_0xd654('0x6')]={'module':{'type':_0xd654('0x1'),'required':![]}};exports[_0xd654('0x7')]={'uniqueid':{'type':_0xd654('0x1'),'required':!![]}};exports[_0xd654('0x8')]={'uniqueid':{'type':_0xd654('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xd654('0x1')},'mixmonitorid':{'type':_0xd654('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0xd654('0x9')]={'uniqueid':{'type':_0xd654('0x1'),'required':!![]},'exten':{'type':_0xd654('0x1'),'required':!![]},'context':{'type':_0xd654('0x1')}};
\ No newline at end of file
+var _0xbe6e=['voicequeuechannelhangup','voicequeuechannelredirect','string','number','boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbe6e,0x138));var _0xebe6=function(_0x3444d5,_0x296135){_0x3444d5=_0x3444d5-0x0;var _0x2a7c74=_0xbe6e[_0x3444d5];return _0x2a7c74;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0xebe6('0x0'),'required':!![]},'membername':{'type':_0xebe6('0x0'),'required':!![]},'penalty':{'type':_0xebe6('0x1'),'required':![]},'paused':{'type':_0xebe6('0x2'),'required':![]}};exports[_0xebe6('0x3')]={'queue':{'type':_0xebe6('0x0'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xebe6('0x4')]={'interface':{'type':_0xebe6('0x0'),'required':!![]},'paused':{'type':_0xebe6('0x2')},'reason':{'type':_0xebe6('0x0'),'required':![]}};exports[_0xebe6('0x5')]={'module':{'type':_0xebe6('0x0'),'required':![]}};exports[_0xebe6('0x6')]={'uniqueid':{'type':_0xebe6('0x0'),'required':!![]}};exports[_0xebe6('0x7')]={'uniqueid':{'type':_0xebe6('0x0'),'required':!![]},'filename':{'type':_0xebe6('0x0')},'format':{'type':_0xebe6('0x0')},'mixmonitorid':{'type':'string'}};exports[_0xebe6('0x8')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xebe6('0x9')]={'uniqueid':{'type':_0xebe6('0x0'),'required':!![]},'exten':{'type':_0xebe6('0x0'),'required':!![]},'context':{'type':_0xebe6('0x0')}};
\ No newline at end of file
index e2dde42..4b86fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['initTriggers','triggers','initTemplates','initZendeskAccounts','zendeskAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queuecallerexit','queuecallerabandon','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','diff','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initVoiceQueues','exports','lodash','moment','util','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','total','answered','unmanaged','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','agents','length','isUndefined','mergeFromDatabase','initTelephones','initTrunks'];(function(_0x3d3861,_0x5e6015){var _0x5eead2=function(_0x30ee66){while(--_0x30ee66){_0x3d3861['push'](_0x3d3861['shift']());}};_0x5eead2(++_0x5e6015);}(_0xdb28,0x106));var _0x8db2=function(_0x585acf,_0x29aefd){_0x585acf=_0x585acf-0x0;var _0x58e7dd=_0xdb28[_0x585acf];return _0x58e7dd;};'use strict';var _=require(_0x8db2('0x0'));var moment=require(_0x8db2('0x1'));var util=require(_0x8db2('0x2'));var Agent=require(_0x8db2('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x8db2('0x4'));var VoiceQueue=require(_0x8db2('0x5'));var Trigger=require(_0x8db2('0x6'));var Template=require(_0x8db2('0x7'));var Campaign=require(_0x8db2('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x8db2('0x9'));var SalesforceAccount=require(_0x8db2('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x8db2('0xb'));var DeskAccount=require(_0x8db2('0xc'));var VtigerAccount=require(_0x8db2('0xd'));var ServicenowAccount=require(_0x8db2('0xe'));var Dynamics365Account=require(_0x8db2('0xf'));var FreshsalesAccount=require(_0x8db2('0x10'));var FaxAccount=require(_0x8db2('0x11'));function Realtime(){this['agents']={};this[_0x8db2('0x12')]={};this[_0x8db2('0x13')]={};this[_0x8db2('0x14')]={};this['triggers']={};this[_0x8db2('0x15')]={};this[_0x8db2('0x16')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8db2('0x17')]={};this[_0x8db2('0x18')]={};this[_0x8db2('0x19')]={};this[_0x8db2('0x1a')]={};this[_0x8db2('0x1b')]={};this['settings']={};this['zendeskAccounts']={};this[_0x8db2('0x1c')]={};this[_0x8db2('0x1d')]={};this[_0x8db2('0x1e')]={};this[_0x8db2('0x1f')]={};this[_0x8db2('0x20')]={};this[_0x8db2('0x21')]={};this[_0x8db2('0x22')]={};this[_0x8db2('0x23')]={};this[_0x8db2('0x24')]={};this[_0x8db2('0x25')]={};}function freeIsNotKey(_0x5489a9,_0x13b0f5,_0x24da1b){var _0x48101e=_[_0x8db2('0x26')](_0x5489a9,function(_0x44957d){return _0x44957d[_0x24da1b];});for(var _0x21db8c in _0x13b0f5){if(_0x13b0f5[_0x8db2('0x27')](_0x21db8c)){if(!_0x48101e[_0x21db8c]){delete _0x13b0f5[_0x21db8c];}}}}function freeIsNotKeySip(_0x2efd06,_0x46ce14){var _0x51d60d=_['mapKeys'](_0x2efd06,function(_0x77789){return util[_0x8db2('0x28')](_0x8db2('0x29'),_0x77789[_0x8db2('0x2a')]);});for(var _0x58562e in _0x46ce14){if(_0x46ce14[_0x8db2('0x27')](_0x58562e)){if(!_0x51d60d[_0x58562e]){delete _0x46ce14[_0x58562e];}}}}function freeIsNotKeyAgent(_0x36a9ff,_0x260940){var _0x297ba3=_[_0x8db2('0x26')](_0x36a9ff,function(_0x597260){var _0x124467=_[_0x8db2('0x2b')](_0x597260[_0x8db2('0x2c')])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x597260[_0x8db2('0x2a')]):_0x597260[_0x8db2('0x2c')];return _0x124467;});for(var _0x5c6614 in _0x260940){if(_0x260940[_0x8db2('0x27')](_0x5c6614)){if(!_0x297ba3[_0x5c6614]){delete _0x260940[_0x5c6614];}}}}function clearVoiceCallReports(_0x4f6516){_0x4f6516['total']=0x0;_0x4f6516['answered']=0x0;_0x4f6516['sumHoldTime']=0x0;_0x4f6516[_0x8db2('0x2d')]=0x0;_0x4f6516[_0x8db2('0x2e')]=0x0;}function clearCampaigns(_0x3be281){if(!_[_0x8db2('0x2f')](_0x3be281)){for(var _0x145328 in _0x3be281){if(_0x3be281[_0x8db2('0x27')](_0x145328)){_0x3be281[_0x145328]['ivrTotalCallsDays']=0x0;_0x3be281[_0x145328][_0x8db2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x372311){if(!_[_0x8db2('0x2f')](_0x372311)){for(var _0x8b7cec in _0x372311){if(_0x372311['hasOwnProperty'](_0x8b7cec)){_0x372311[_0x8b7cec][_0x8db2('0x31')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x32')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x33')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x34')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x35')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2e')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x37')]=0x0;_0x372311[_0x8b7cec]['outboundBusyCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x38')]=0x0;_0x372311[_0x8b7cec]['outboundNoSuchCallsDay']=0x0;_0x372311[_0x8b7cec]['outboundUnknownCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x39')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3a')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3b')]=0x0;_0x372311[_0x8b7cec]['outboundOriginateFailureCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3c')]=0x0;_0x372311[_0x8b7cec]['outboundReCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3e')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x35d337,_0x1a460b){for(var _0x4df530 in _0x1a460b){if(_0x35d337['hasOwnProperty'](_0x4df530)){_0x35d337[_0x4df530]=_0x1a460b[_0x4df530];}}};Realtime[_0x8db2('0x3f')][_0x8db2('0x40')]=function(){var _0xc884a=this;return function(_0x2a2d65){if(_0x2a2d65){freeIsNotKeyAgent(_0x2a2d65,_0xc884a[_0x8db2('0x41')]);for(var _0xd39848=0x0,_0x101711={};_0xd39848<_0x2a2d65[_0x8db2('0x42')];_0xd39848+=0x1){_0x101711=_0x2a2d65[_0xd39848];var _0x46e0c8=_[_0x8db2('0x2b')](_0x101711['interface'])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x101711['name']):_0x101711[_0x8db2('0x2c')];if(_[_0x8db2('0x43')](_0xc884a['agents'][_0x46e0c8])){_0xc884a['agents'][_0x46e0c8]=new Agent(_0x101711);}else{_0xc884a[_0x8db2('0x44')](_0xc884a['agents'][_0x46e0c8],_0x101711);}}}return _0xc884a[_0x8db2('0x41')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x45')]=function(){var _0x22c896=this;return function(_0x5cc419){if(_0x5cc419){freeIsNotKeySip(_0x5cc419,_0x22c896[_0x8db2('0x12')]);for(var _0x5e34e0=0x0,_0x227a08={};_0x5e34e0<_0x5cc419[_0x8db2('0x42')];_0x5e34e0+=0x1){_0x227a08=_0x5cc419[_0x5e34e0];if(_[_0x8db2('0x43')](_0x22c896[_0x8db2('0x12')][util['format']('SIP/%s',_0x227a08[_0x8db2('0x2a')])])){_0x22c896[_0x8db2('0x12')][util['format'](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])]=new Telephone(_0x227a08);}else{_0x22c896[_0x8db2('0x44')](_0x22c896['telephones'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])],_0x227a08);}}}return _0x22c896[_0x8db2('0x12')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x46')]=function(){var _0x380046=this;return function(_0x1575ea){if(_0x1575ea){freeIsNotKeySip(_0x1575ea,_0x380046[_0x8db2('0x13')]);for(var _0x63c561=0x0,_0x21cf7c={};_0x63c561<_0x1575ea[_0x8db2('0x42')];_0x63c561+=0x1){_0x21cf7c=_0x1575ea[_0x63c561];if(_[_0x8db2('0x43')](_0x380046['trunks'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c['name'])])){_0x380046['trunks'][util[_0x8db2('0x28')]('SIP/%s',_0x21cf7c[_0x8db2('0x2a')])]=new Trunk(_0x21cf7c);}else{_0x380046[_0x8db2('0x44')](_0x380046[_0x8db2('0x13')][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c[_0x8db2('0x2a')])],_0x21cf7c);}}}return _0x380046[_0x8db2('0x13')];};};Realtime['prototype'][_0x8db2('0x47')]=function(){var _0x3d44de=this;return function(_0x40c69e){if(_0x40c69e){freeIsNotKey(_0x40c69e,_0x3d44de[_0x8db2('0x48')],'id');for(var _0x482b26=0x0,_0x424c27={};_0x482b26<_0x40c69e[_0x8db2('0x42')];_0x482b26+=0x1){_0x424c27=_0x40c69e[_0x482b26];if(_[_0x8db2('0x43')](_0x3d44de[_0x8db2('0x48')][_0x424c27['id']])){_0x3d44de['triggers'][_0x424c27['id']]=new Trigger(_0x424c27);}else{_0x3d44de[_0x8db2('0x44')](_0x3d44de['triggers'][_0x424c27['id']],_0x424c27);}}}return _0x3d44de[_0x8db2('0x48')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x49')]=function(){var _0x4d2164=this;return function(_0x4b0e72){if(_0x4b0e72){freeIsNotKey(_0x4b0e72,_0x4d2164[_0x8db2('0x16')],'id');for(var _0x47c556=0x0,_0x173cc7={};_0x47c556<_0x4b0e72[_0x8db2('0x42')];_0x47c556+=0x1){_0x173cc7=_0x4b0e72[_0x47c556];if(_[_0x8db2('0x43')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']])){_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']]=new Template(_0x173cc7);}else{_0x4d2164[_0x8db2('0x44')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']],_0x173cc7);}}}return _0x4d2164[_0x8db2('0x16')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4a')]=function(){var _0x1362ed=this;return function(_0x36f9d6){if(_0x36f9d6){freeIsNotKey(_0x36f9d6,_0x1362ed['zendeskAccounts'],'id');for(var _0x449109=0x0,_0x2ada52={};_0x449109<_0x36f9d6[_0x8db2('0x42')];_0x449109+=0x1){_0x2ada52=_0x36f9d6[_0x449109];if(_[_0x8db2('0x43')](_0x1362ed['zendeskAccounts'][_0x2ada52['id']])){_0x1362ed['zendeskAccounts'][_0x2ada52['id']]=new ZendeskAccount(_0x2ada52);}else{_0x1362ed[_0x8db2('0x44')](_0x1362ed[_0x8db2('0x4b')][_0x2ada52['id']],_0x2ada52);}}}return _0x1362ed[_0x8db2('0x4b')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0x494d6e=this;return function(_0x44ac56){if(_0x44ac56){freeIsNotKey(_0x44ac56,_0x494d6e[_0x8db2('0x1c')],'id');for(var _0x55c7dd=0x0,_0x383fa1={};_0x55c7dd<_0x44ac56[_0x8db2('0x42')];_0x55c7dd+=0x1){_0x383fa1=_0x44ac56[_0x55c7dd];if(_[_0x8db2('0x43')](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']])){_0x494d6e['salesforceAccounts'][_0x383fa1['id']]=new SalesforceAccount(_0x383fa1);}else{_0x494d6e['mergeFromDatabase'](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']],_0x383fa1);}}}return _0x494d6e[_0x8db2('0x1c')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4c')]=function(){var _0x3daed6=this;return function(_0x2bf408){if(_0x2bf408){freeIsNotKey(_0x2bf408,_0x3daed6[_0x8db2('0x1e')],'id');for(var _0x3ca2a7=0x0,_0x4187d6={};_0x3ca2a7<_0x2bf408[_0x8db2('0x42')];_0x3ca2a7+=0x1){_0x4187d6=_0x2bf408[_0x3ca2a7];if(_[_0x8db2('0x43')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']])){_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']]=new FreshdeskAccount(_0x4187d6);}else{_0x3daed6[_0x8db2('0x44')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']],_0x4187d6);}}}return _0x3daed6['freshdeskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4d')]=function(){var _0x579317=this;return function(_0x27b644){if(_0x27b644){freeIsNotKey(_0x27b644,_0x579317[_0x8db2('0x1f')],'id');for(var _0x3af298=0x0,_0x547215={};_0x3af298<_0x27b644[_0x8db2('0x42')];_0x3af298+=0x1){_0x547215=_0x27b644[_0x3af298];if(_[_0x8db2('0x43')](_0x579317[_0x8db2('0x1f')][_0x547215['id']])){_0x579317[_0x8db2('0x1f')][_0x547215['id']]=new ZohoAccount(_0x547215);}else{_0x579317[_0x8db2('0x44')](_0x579317['zohoAccounts'][_0x547215['id']],_0x547215);}}}return _0x579317[_0x8db2('0x1f')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4e')]=function(){var _0x58bb60=this;return function(_0x1e7d1a){if(_0x1e7d1a){freeIsNotKey(_0x1e7d1a,_0x58bb60[_0x8db2('0x20')],'id');for(var _0x33dddd=0x0,_0x7b0de8={};_0x33dddd<_0x1e7d1a[_0x8db2('0x42')];_0x33dddd+=0x1){_0x7b0de8=_0x1e7d1a[_0x33dddd];if(_[_0x8db2('0x43')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']])){_0x58bb60['deskAccounts'][_0x7b0de8['id']]=new DeskAccount(_0x7b0de8);}else{_0x58bb60[_0x8db2('0x44')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']],_0x7b0de8);}}}return _0x58bb60['deskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4f')]=function(){var _0x533e41=this;return function(_0x107bbe){if(_0x107bbe){freeIsNotKey(_0x107bbe,_0x533e41[_0x8db2('0x1d')],'id');for(var _0x63e8f7=0x0,_0x30f4f3={};_0x63e8f7<_0x107bbe[_0x8db2('0x42')];_0x63e8f7+=0x1){_0x30f4f3=_0x107bbe[_0x63e8f7];if(_[_0x8db2('0x43')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']])){_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']]=new SugarcrmAccount(_0x30f4f3);}else{_0x533e41[_0x8db2('0x44')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']],_0x30f4f3);}}}return _0x533e41[_0x8db2('0x1d')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x50')]=function(){var _0x1ce89f=this;return function(_0x64ec90){if(_0x64ec90){freeIsNotKey(_0x64ec90,_0x1ce89f[_0x8db2('0x21')],'id');for(var _0x4a20a7=0x0,_0xe0c3e={};_0x4a20a7<_0x64ec90[_0x8db2('0x42')];_0x4a20a7+=0x1){_0xe0c3e=_0x64ec90[_0x4a20a7];if(_[_0x8db2('0x43')](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']])){_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']]=new VtigerAccount(_0xe0c3e);}else{_0x1ce89f['mergeFromDatabase'](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']],_0xe0c3e);}}}return _0x1ce89f[_0x8db2('0x21')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x51')]=function(){var _0x2ad70f=this;return function(_0x348da8){if(_0x348da8){freeIsNotKey(_0x348da8,_0x2ad70f[_0x8db2('0x22')],'id');for(var _0x2c7b04=0x0,_0x24cfe9={};_0x2c7b04<_0x348da8[_0x8db2('0x42')];_0x2c7b04+=0x1){_0x24cfe9=_0x348da8[_0x2c7b04];if(_[_0x8db2('0x43')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']])){_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']]=new ServicenowAccount(_0x24cfe9);}else{_0x2ad70f[_0x8db2('0x44')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']],_0x24cfe9);}}}return _0x2ad70f[_0x8db2('0x22')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x52')]=function(){var _0x5a719f=this;return function(_0x3273dd){if(_0x3273dd){freeIsNotKey(_0x3273dd,_0x5a719f['dynamics365Accounts'],'id');for(var _0x364176=0x0,_0x570c53={};_0x364176<_0x3273dd[_0x8db2('0x42')];_0x364176+=0x1){_0x570c53=_0x3273dd[_0x364176];if(_[_0x8db2('0x43')](_0x5a719f[_0x8db2('0x23')][_0x570c53['id']])){_0x5a719f[_0x8db2('0x23')][_0x570c53['id']]=new Dynamics365Account(_0x570c53);}else{_0x5a719f[_0x8db2('0x44')](_0x5a719f['dynamics365Accounts'][_0x570c53['id']],_0x570c53);}}}return _0x5a719f['dynamics365Accounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x53')]=function(){var _0x21ec87=this;return function(_0x3ba1d2){if(_0x3ba1d2){freeIsNotKey(_0x3ba1d2,_0x21ec87[_0x8db2('0x24')],'id');for(var _0x1f28d2=0x0,_0x3e3de3={};_0x1f28d2<_0x3ba1d2[_0x8db2('0x42')];_0x1f28d2+=0x1){_0x3e3de3=_0x3ba1d2[_0x1f28d2];if(_['isUndefined'](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']])){_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']]=new FreshsalesAccount(_0x3e3de3);}else{_0x21ec87[_0x8db2('0x44')](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']],_0x3e3de3);}}}return _0x21ec87[_0x8db2('0x24')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x54')]=function(){var _0x20caf0=this;return function(_0x4938bb){for(var _0x54318c=0x0;_0x54318c<_0x4938bb[_0x8db2('0x42')];_0x54318c+=0x1){_[_0x8db2('0x55')](_0x20caf0[_0x8db2('0x14')][_0x4938bb[_0x54318c][_0x8db2('0x2a')]],_0x4938bb[_0x54318c]);}return _0x20caf0[_0x8db2('0x14')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x3611da=this;return function(_0x364807){clearVoiceQueues(_0x3611da['voiceQueues']);if(_0x364807){_0x364807=_[_0x8db2('0x56')](_0x364807,_0x8db2('0x57'));for(var _0x1ab84c in _0x364807){if(_0x364807['hasOwnProperty'](_0x1ab84c)){for(var _0x26523b=0x0;_0x26523b<_0x364807[_0x1ab84c][_0x8db2('0x42')];_0x26523b+=0x1){var _0x2cf731=_0x364807[_0x1ab84c][_0x26523b]['queue'];if(_0x3611da[_0x8db2('0x14')][_0x2cf731]){if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x58')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x33')]+=0x1;}if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x59')]){_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x34')]+=0x1;}_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x35')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallerleaveAt'])['diff'](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;if(_0x26523b===_0x364807[_0x1ab84c]['length']-0x1){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5c')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5d')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5e')])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x31')]+=0x1;if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x60')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x32')]+=0x1;_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x2e')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallercompleteAt'])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x61')]),'seconds')||0x0;}}else{_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x35')]||0x0;}}}}}}return _0x3611da[_0x8db2('0x14')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x62')]=function(){var _0x242379=this;return function(_0x31a095){clearVoiceCallReports(_0x242379[_0x8db2('0x63')]);if(_0x31a095){for(var _0x3ac0fa=0x0;_0x3ac0fa<_0x31a095[_0x8db2('0x42')];_0x3ac0fa+=0x1){_0x242379['outbound']['total']+=0x1;_0x242379[_0x8db2('0x63')]['sumDuration']+=_0x31a095[_0x3ac0fa][_0x8db2('0x64')];if(_0x31a095[_0x3ac0fa][_0x8db2('0x65')]===_0x8db2('0x66')){_0x242379['outbound'][_0x8db2('0x32')]+=0x1;_0x242379[_0x8db2('0x63')][_0x8db2('0x35')]+=_0x31a095[_0x3ac0fa]['duration']-_0x31a095[_0x3ac0fa][_0x8db2('0x67')]||0x0;_0x242379[_0x8db2('0x63')][_0x8db2('0x2e')]+=_0x31a095[_0x3ac0fa][_0x8db2('0x67')];}}}return _0x242379['outbound'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x68')]=function(){var _0x299640=this;return function(_0x1edb1a){if(_0x1edb1a){freeIsNotKey(_0x1edb1a,_0x299640[_0x8db2('0x15')],_0x8db2('0x2a'));for(var _0x1aadfb=0x0,_0x3682bf={};_0x1aadfb<_0x1edb1a[_0x8db2('0x42')];_0x1aadfb+=0x1){_0x3682bf=_0x1edb1a[_0x1aadfb];if(_[_0x8db2('0x43')](_0x299640[_0x8db2('0x15')][_0x3682bf['name']])){_0x299640[_0x8db2('0x15')][_0x3682bf[_0x8db2('0x2a')]]=new Campaign(_0x3682bf);}else{_0x299640[_0x8db2('0x44')](_0x299640['campaigns'][_0x3682bf['name']],_0x3682bf);_0x299640['campaigns'][_0x3682bf[_0x8db2('0x2a')]][_0x8db2('0x69')]=_0x3682bf[_0x8db2('0x6a')]?_0x3682bf[_0x8db2('0x6a')][_0x8db2('0x2a')]:undefined;}}}return _0x299640[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6b')]=function(){var _0x3b1929=this;return function(_0x37cf6d){if(_0x37cf6d){freeIsNotKey(_0x37cf6d,_0x3b1929[_0x8db2('0x17')],'id');for(var _0x4d0ff6=0x0,_0x360a06={};_0x4d0ff6<_0x37cf6d[_0x8db2('0x42')];_0x4d0ff6+=0x1){_0x360a06=_0x37cf6d[_0x4d0ff6];if(_[_0x8db2('0x43')](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']])){_0x3b1929['voiceExtensions'][_0x360a06['id']]=new VoiceExtension(_0x360a06);}else{_0x3b1929['mergeFromDatabase'](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']],_0x360a06);}}}return _0x3b1929[_0x8db2('0x17')];};};Realtime['prototype'][_0x8db2('0x6c')]=function(){var _0x121f31=this;return function(_0x9132b4){clearCampaigns(_0x121f31['campaigns']);for(var _0x5dc46c=0x0;_0x5dc46c<_0x9132b4['length'];_0x5dc46c+=0x1){_[_0x8db2('0x55')](_0x121f31[_0x8db2('0x15')][_0x9132b4[_0x5dc46c][_0x8db2('0x2a')]],_0x9132b4[_0x5dc46c]);}return _0x121f31[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')]['initFaxAccounts']=function(){var _0x30930a=this;return function(_0x5e349c){if(_0x5e349c){freeIsNotKey(_0x5e349c,_0x30930a[_0x8db2('0x25')],'id');for(var _0x353101=0x0,_0xa083b1={};_0x353101<_0x5e349c[_0x8db2('0x42')];_0x353101+=0x1){_0xa083b1=_0x5e349c[_0x353101];if(_[_0x8db2('0x43')](_0x30930a['faxAccounts'][_0xa083b1['id']])){_0x30930a['faxAccounts'][_0xa083b1['id']]=new FaxAccount(_0xa083b1);}else{_0x30930a[_0x8db2('0x44')](_0x30930a['faxAccounts'][_0xa083b1['id']],_0xa083b1);}}}return _0x30930a[_0x8db2('0x25')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6d')]=function(){var _0x1e7bc2=this;return function(_0x2b7224){if(_0x2b7224){freeIsNotKey(_0x2b7224,_0x1e7bc2[_0x8db2('0x14')],'name');for(var _0x19f9a0=0x0,_0x222ea2={};_0x19f9a0<_0x2b7224[_0x8db2('0x42')];_0x19f9a0+=0x1){_0x222ea2=_0x2b7224[_0x19f9a0];if(_['isUndefined'](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]])){_0x1e7bc2['voiceQueues'][_0x222ea2[_0x8db2('0x2a')]]=new VoiceQueue(_0x222ea2);}else{_0x1e7bc2[_0x8db2('0x44')](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]],_0x222ea2);}}}return _0x1e7bc2[_0x8db2('0x14')];};};module[_0x8db2('0x6e')]=Realtime;
\ No newline at end of file
+var _0x5f66=['diff','seconds','disposition','ANSWERED','outbound','duration','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','templates','channels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','isNil','format','interface','total','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','length','name','isUndefined','initTelephones','SIP/%s','initTriggers','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','queuecallerexit','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','sumDuration','queuecallercompleteAt','queuecallerexitAt'];(function(_0x3d0131,_0xdde07f){var _0x248dee=function(_0x2b31d9){while(--_0x2b31d9){_0x3d0131['push'](_0x3d0131['shift']());}};_0x248dee(++_0xdde07f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x5f66[_0x122096];return _0x3d1966;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var util=require('util');var Agent=require(_0x65f6('0x1'));var Telephone=require(_0x65f6('0x2'));var Trunk=require(_0x65f6('0x3'));var VoiceQueue=require(_0x65f6('0x4'));var Trigger=require(_0x65f6('0x5'));var Template=require('../model/template');var Campaign=require(_0x65f6('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x65f6('0x7'));var SalesforceAccount=require(_0x65f6('0x8'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x65f6('0x9'));var DeskAccount=require(_0x65f6('0xa'));var VtigerAccount=require(_0x65f6('0xb'));var ServicenowAccount=require(_0x65f6('0xc'));var Dynamics365Account=require(_0x65f6('0xd'));var FreshsalesAccount=require(_0x65f6('0xe'));var FaxAccount=require('../model/faxAccount');function Realtime(){this['agents']={};this[_0x65f6('0xf')]={};this[_0x65f6('0x10')]={};this[_0x65f6('0x11')]={};this[_0x65f6('0x12')]={};this['campaigns']={};this[_0x65f6('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x65f6('0x14')]={};this['queueChannels']={};this[_0x65f6('0x15')]={};this['timers']={};this[_0x65f6('0x16')]={};this[_0x65f6('0x17')]={};this[_0x65f6('0x18')]={};this[_0x65f6('0x19')]={};this[_0x65f6('0x1a')]={};this[_0x65f6('0x1b')]={};this[_0x65f6('0x1c')]={};this[_0x65f6('0x1d')]={};this[_0x65f6('0x1e')]={};this[_0x65f6('0x1f')]={};this['freshsalesAccounts']={};this[_0x65f6('0x20')]={};}function freeIsNotKey(_0x49a913,_0x5dd324,_0x1693e6){var _0x5c69f8=_[_0x65f6('0x21')](_0x49a913,function(_0x1c955c){return _0x1c955c[_0x1693e6];});for(var _0x1b1cbb in _0x5dd324){if(_0x5dd324[_0x65f6('0x22')](_0x1b1cbb)){if(!_0x5c69f8[_0x1b1cbb]){delete _0x5dd324[_0x1b1cbb];}}}}function freeIsNotKeySip(_0xc8660c,_0x18380e){var _0x495dd6=_['mapKeys'](_0xc8660c,function(_0x2d538c){return util['format']('SIP/%s',_0x2d538c['name']);});for(var _0x365159 in _0x18380e){if(_0x18380e[_0x65f6('0x22')](_0x365159)){if(!_0x495dd6[_0x365159]){delete _0x18380e[_0x365159];}}}}function freeIsNotKeyAgent(_0x5114a4,_0x39e19f){var _0x270893=_[_0x65f6('0x21')](_0x5114a4,function(_0x3876ed){var _0x219ab2=_[_0x65f6('0x23')](_0x3876ed['interface'])?util[_0x65f6('0x24')]('SIP/%s',_0x3876ed['name']):_0x3876ed[_0x65f6('0x25')];return _0x219ab2;});for(var _0xd173f4 in _0x39e19f){if(_0x39e19f['hasOwnProperty'](_0xd173f4)){if(!_0x270893[_0xd173f4]){delete _0x39e19f[_0xd173f4];}}}}function clearVoiceCallReports(_0x1eeaaa){_0x1eeaaa[_0x65f6('0x26')]=0x0;_0x1eeaaa[_0x65f6('0x27')]=0x0;_0x1eeaaa[_0x65f6('0x28')]=0x0;_0x1eeaaa['sumDuration']=0x0;_0x1eeaaa[_0x65f6('0x29')]=0x0;}function clearCampaigns(_0x59ea32){if(!_[_0x65f6('0x2a')](_0x59ea32)){for(var _0x5963e0 in _0x59ea32){if(_0x59ea32['hasOwnProperty'](_0x5963e0)){_0x59ea32[_0x5963e0]['ivrTotalCallsDays']=0x0;_0x59ea32[_0x5963e0][_0x65f6('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x16cde8){if(!_['isEmpty'](_0x16cde8)){for(var _0x296cd9 in _0x16cde8){if(_0x16cde8[_0x65f6('0x22')](_0x296cd9)){_0x16cde8[_0x296cd9]['total']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x27')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2c')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2d')]=0x0;_0x16cde8[_0x296cd9]['sumHoldTime']=0x0;_0x16cde8[_0x296cd9]['sumDuration']=0x0;_0x16cde8[_0x296cd9]['sumBillable']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2e')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2f')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x30')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x31')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x32')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x33')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x34')]=0x0;_0x16cde8[_0x296cd9]['outboundDropCallsDayCallersExit']=0x0;_0x16cde8[_0x296cd9]['outboundBlacklistCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x35')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x36')]=0x0;_0x16cde8[_0x296cd9]['outboundReCallsDay']=0x0;_0x16cde8[_0x296cd9]['outboundAnswerAgiCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x37')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x38')]=!![];}}}}Realtime[_0x65f6('0x39')][_0x65f6('0x3a')]=function(_0x1217fd,_0x2d32be){for(var _0x5792a0 in _0x2d32be){if(_0x1217fd[_0x65f6('0x22')](_0x5792a0)){_0x1217fd[_0x5792a0]=_0x2d32be[_0x5792a0];}}};Realtime[_0x65f6('0x39')][_0x65f6('0x3b')]=function(){var _0x4bc037=this;return function(_0x217f35){if(_0x217f35){freeIsNotKeyAgent(_0x217f35,_0x4bc037[_0x65f6('0x3c')]);for(var _0xbaed3c=0x0,_0x45510a={};_0xbaed3c<_0x217f35[_0x65f6('0x3d')];_0xbaed3c+=0x1){_0x45510a=_0x217f35[_0xbaed3c];var _0x2f054c=_['isNil'](_0x45510a[_0x65f6('0x25')])?util[_0x65f6('0x24')]('SIP/%s',_0x45510a[_0x65f6('0x3e')]):_0x45510a['interface'];if(_[_0x65f6('0x3f')](_0x4bc037['agents'][_0x2f054c])){_0x4bc037[_0x65f6('0x3c')][_0x2f054c]=new Agent(_0x45510a);}else{_0x4bc037[_0x65f6('0x3a')](_0x4bc037['agents'][_0x2f054c],_0x45510a);}}}return _0x4bc037[_0x65f6('0x3c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x40')]=function(){var _0x515648=this;return function(_0x582c7e){if(_0x582c7e){freeIsNotKeySip(_0x582c7e,_0x515648[_0x65f6('0xf')]);for(var _0x4c0df4=0x0,_0x26de30={};_0x4c0df4<_0x582c7e['length'];_0x4c0df4+=0x1){_0x26de30=_0x582c7e[_0x4c0df4];if(_[_0x65f6('0x3f')](_0x515648[_0x65f6('0xf')][util['format'](_0x65f6('0x41'),_0x26de30['name'])])){_0x515648['telephones'][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])]=new Telephone(_0x26de30);}else{_0x515648[_0x65f6('0x3a')](_0x515648[_0x65f6('0xf')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])],_0x26de30);}}}return _0x515648['telephones'];};};Realtime[_0x65f6('0x39')]['initTrunks']=function(){var _0x12a589=this;return function(_0xa4394a){if(_0xa4394a){freeIsNotKeySip(_0xa4394a,_0x12a589[_0x65f6('0x10')]);for(var _0x2ea7f7=0x0,_0x5ef5c2={};_0x2ea7f7<_0xa4394a[_0x65f6('0x3d')];_0x2ea7f7+=0x1){_0x5ef5c2=_0xa4394a[_0x2ea7f7];if(_[_0x65f6('0x3f')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])])){_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2['name'])]=new Trunk(_0x5ef5c2);}else{_0x12a589[_0x65f6('0x3a')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])],_0x5ef5c2);}}}return _0x12a589[_0x65f6('0x10')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x42')]=function(){var _0x461393=this;return function(_0x2abbed){if(_0x2abbed){freeIsNotKey(_0x2abbed,_0x461393[_0x65f6('0x12')],'id');for(var _0x2c008a=0x0,_0x6c4d94={};_0x2c008a<_0x2abbed[_0x65f6('0x3d')];_0x2c008a+=0x1){_0x6c4d94=_0x2abbed[_0x2c008a];if(_[_0x65f6('0x3f')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']])){_0x461393['triggers'][_0x6c4d94['id']]=new Trigger(_0x6c4d94);}else{_0x461393[_0x65f6('0x3a')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']],_0x6c4d94);}}}return _0x461393[_0x65f6('0x12')];};};Realtime[_0x65f6('0x39')]['initTemplates']=function(){var _0x1bf5bf=this;return function(_0x2d0dac){if(_0x2d0dac){freeIsNotKey(_0x2d0dac,_0x1bf5bf[_0x65f6('0x13')],'id');for(var _0x5e69b4=0x0,_0x2dbab3={};_0x5e69b4<_0x2d0dac[_0x65f6('0x3d')];_0x5e69b4+=0x1){_0x2dbab3=_0x2d0dac[_0x5e69b4];if(_[_0x65f6('0x3f')](_0x1bf5bf[_0x65f6('0x13')][_0x2dbab3['id']])){_0x1bf5bf['templates'][_0x2dbab3['id']]=new Template(_0x2dbab3);}else{_0x1bf5bf[_0x65f6('0x3a')](_0x1bf5bf['templates'][_0x2dbab3['id']],_0x2dbab3);}}}return _0x1bf5bf[_0x65f6('0x13')];};};Realtime[_0x65f6('0x39')]['initZendeskAccounts']=function(){var _0xf754ee=this;return function(_0x5085db){if(_0x5085db){freeIsNotKey(_0x5085db,_0xf754ee[_0x65f6('0x17')],'id');for(var _0x4d9b76=0x0,_0x2d1706={};_0x4d9b76<_0x5085db[_0x65f6('0x3d')];_0x4d9b76+=0x1){_0x2d1706=_0x5085db[_0x4d9b76];if(_[_0x65f6('0x3f')](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']])){_0xf754ee['zendeskAccounts'][_0x2d1706['id']]=new ZendeskAccount(_0x2d1706);}else{_0xf754ee['mergeFromDatabase'](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']],_0x2d1706);}}}return _0xf754ee[_0x65f6('0x17')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x43')]=function(){var _0x3b907c=this;return function(_0x2d6ab9){if(_0x2d6ab9){freeIsNotKey(_0x2d6ab9,_0x3b907c[_0x65f6('0x18')],'id');for(var _0x41690c=0x0,_0x414f49={};_0x41690c<_0x2d6ab9['length'];_0x41690c+=0x1){_0x414f49=_0x2d6ab9[_0x41690c];if(_[_0x65f6('0x3f')](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']])){_0x3b907c[_0x65f6('0x18')][_0x414f49['id']]=new SalesforceAccount(_0x414f49);}else{_0x3b907c['mergeFromDatabase'](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']],_0x414f49);}}}return _0x3b907c[_0x65f6('0x18')];};};Realtime['prototype'][_0x65f6('0x44')]=function(){var _0x253d52=this;return function(_0x57eb04){if(_0x57eb04){freeIsNotKey(_0x57eb04,_0x253d52[_0x65f6('0x1a')],'id');for(var _0x4f96c4=0x0,_0x247be3={};_0x4f96c4<_0x57eb04[_0x65f6('0x3d')];_0x4f96c4+=0x1){_0x247be3=_0x57eb04[_0x4f96c4];if(_[_0x65f6('0x3f')](_0x253d52['freshdeskAccounts'][_0x247be3['id']])){_0x253d52[_0x65f6('0x1a')][_0x247be3['id']]=new FreshdeskAccount(_0x247be3);}else{_0x253d52[_0x65f6('0x3a')](_0x253d52['freshdeskAccounts'][_0x247be3['id']],_0x247be3);}}}return _0x253d52[_0x65f6('0x1a')];};};Realtime[_0x65f6('0x39')]['initZohoAccounts']=function(){var _0x34d6a9=this;return function(_0x344c0e){if(_0x344c0e){freeIsNotKey(_0x344c0e,_0x34d6a9[_0x65f6('0x1b')],'id');for(var _0x25d504=0x0,_0x234fa7={};_0x25d504<_0x344c0e[_0x65f6('0x3d')];_0x25d504+=0x1){_0x234fa7=_0x344c0e[_0x25d504];if(_[_0x65f6('0x3f')](_0x34d6a9[_0x65f6('0x1b')][_0x234fa7['id']])){_0x34d6a9['zohoAccounts'][_0x234fa7['id']]=new ZohoAccount(_0x234fa7);}else{_0x34d6a9['mergeFromDatabase'](_0x34d6a9['zohoAccounts'][_0x234fa7['id']],_0x234fa7);}}}return _0x34d6a9[_0x65f6('0x1b')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x45')]=function(){var _0x20c322=this;return function(_0x545445){if(_0x545445){freeIsNotKey(_0x545445,_0x20c322[_0x65f6('0x1c')],'id');for(var _0x2032b9=0x0,_0x9ff849={};_0x2032b9<_0x545445['length'];_0x2032b9+=0x1){_0x9ff849=_0x545445[_0x2032b9];if(_[_0x65f6('0x3f')](_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']])){_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']]=new DeskAccount(_0x9ff849);}else{_0x20c322['mergeFromDatabase'](_0x20c322['deskAccounts'][_0x9ff849['id']],_0x9ff849);}}}return _0x20c322[_0x65f6('0x1c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x46')]=function(){var _0x39364f=this;return function(_0x2a76b3){if(_0x2a76b3){freeIsNotKey(_0x2a76b3,_0x39364f[_0x65f6('0x19')],'id');for(var _0x35d77f=0x0,_0x138334={};_0x35d77f<_0x2a76b3[_0x65f6('0x3d')];_0x35d77f+=0x1){_0x138334=_0x2a76b3[_0x35d77f];if(_[_0x65f6('0x3f')](_0x39364f[_0x65f6('0x19')][_0x138334['id']])){_0x39364f[_0x65f6('0x19')][_0x138334['id']]=new SugarcrmAccount(_0x138334);}else{_0x39364f[_0x65f6('0x3a')](_0x39364f[_0x65f6('0x19')][_0x138334['id']],_0x138334);}}}return _0x39364f['sugarcrmAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x47')]=function(){var _0x42a805=this;return function(_0x4b4efe){if(_0x4b4efe){freeIsNotKey(_0x4b4efe,_0x42a805[_0x65f6('0x1d')],'id');for(var _0x16dec0=0x0,_0x4638c9={};_0x16dec0<_0x4b4efe[_0x65f6('0x3d')];_0x16dec0+=0x1){_0x4638c9=_0x4b4efe[_0x16dec0];if(_['isUndefined'](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']])){_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']]=new VtigerAccount(_0x4638c9);}else{_0x42a805[_0x65f6('0x3a')](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']],_0x4638c9);}}}return _0x42a805['vtigerAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x48')]=function(){var _0x5c55e4=this;return function(_0x28682b){if(_0x28682b){freeIsNotKey(_0x28682b,_0x5c55e4[_0x65f6('0x1e')],'id');for(var _0x36c316=0x0,_0x51549d={};_0x36c316<_0x28682b[_0x65f6('0x3d')];_0x36c316+=0x1){_0x51549d=_0x28682b[_0x36c316];if(_[_0x65f6('0x3f')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']])){_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']]=new ServicenowAccount(_0x51549d);}else{_0x5c55e4[_0x65f6('0x3a')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']],_0x51549d);}}}return _0x5c55e4['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x336a7d=this;return function(_0x367d95){if(_0x367d95){freeIsNotKey(_0x367d95,_0x336a7d[_0x65f6('0x1f')],'id');for(var _0x471bec=0x0,_0xab6f0={};_0x471bec<_0x367d95[_0x65f6('0x3d')];_0x471bec+=0x1){_0xab6f0=_0x367d95[_0x471bec];if(_['isUndefined'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']])){_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']]=new Dynamics365Account(_0xab6f0);}else{_0x336a7d['mergeFromDatabase'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']],_0xab6f0);}}}return _0x336a7d[_0x65f6('0x1f')];};};Realtime[_0x65f6('0x39')]['initFreshsalesAccounts']=function(){var _0x23c441=this;return function(_0x448c9a){if(_0x448c9a){freeIsNotKey(_0x448c9a,_0x23c441['freshsalesAccounts'],'id');for(var _0x271d76=0x0,_0x3edc6b={};_0x271d76<_0x448c9a[_0x65f6('0x3d')];_0x271d76+=0x1){_0x3edc6b=_0x448c9a[_0x271d76];if(_[_0x65f6('0x3f')](_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']])){_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']]=new FreshsalesAccount(_0x3edc6b);}else{_0x23c441[_0x65f6('0x3a')](_0x23c441['freshsalesAccounts'][_0x3edc6b['id']],_0x3edc6b);}}}return _0x23c441['freshsalesAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4a')]=function(){var _0x4a9524=this;return function(_0x417ba5){for(var _0x5f3df9=0x0;_0x5f3df9<_0x417ba5[_0x65f6('0x3d')];_0x5f3df9+=0x1){_['merge'](_0x4a9524[_0x65f6('0x11')][_0x417ba5[_0x5f3df9][_0x65f6('0x3e')]],_0x417ba5[_0x5f3df9]);}return _0x4a9524[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4b')]=function(){var _0x264e6c=this;return function(_0x1aaf75){clearVoiceQueues(_0x264e6c[_0x65f6('0x11')]);if(_0x1aaf75){_0x1aaf75=_[_0x65f6('0x4c')](_0x1aaf75,'uniqueid');for(var _0x480190 in _0x1aaf75){if(_0x1aaf75[_0x65f6('0x22')](_0x480190)){for(var _0x13ee4b=0x0;_0x13ee4b<_0x1aaf75[_0x480190][_0x65f6('0x3d')];_0x13ee4b+=0x1){var _0x51497f=_0x1aaf75[_0x480190][_0x13ee4b]['queue'];if(_0x264e6c[_0x65f6('0x11')][_0x51497f]){if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4d')]){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x2c')]+=0x1;}if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4e')]){_0x264e6c[_0x65f6('0x11')][_0x51497f]['abandoned']+=0x1;}_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4f')])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;if(_0x13ee4b===_0x1aaf75[_0x480190][_0x65f6('0x3d')]-0x1){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x52')]||_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerabandonAt']||_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x53')])[_0x65f6('0x54')](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x26')]+=0x1;if(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercomplete']){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x27')]+=0x1;_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x29')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercompleteAt'])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerleaveAt']),_0x65f6('0x55'))||0x0;}}else{_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]||0x0;}}}}}}return _0x264e6c[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')]['initVoiceCallReports']=function(){var _0x40d0f7=this;return function(_0x15809e){clearVoiceCallReports(_0x40d0f7['outbound']);if(_0x15809e){for(var _0x758e80=0x0;_0x758e80<_0x15809e[_0x65f6('0x3d')];_0x758e80+=0x1){_0x40d0f7['outbound'][_0x65f6('0x26')]+=0x1;_0x40d0f7['outbound'][_0x65f6('0x51')]+=_0x15809e[_0x758e80]['duration'];if(_0x15809e[_0x758e80][_0x65f6('0x56')]===_0x65f6('0x57')){_0x40d0f7['outbound'][_0x65f6('0x27')]+=0x1;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x28')]+=_0x15809e[_0x758e80][_0x65f6('0x59')]-_0x15809e[_0x758e80][_0x65f6('0x5a')]||0x0;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x29')]+=_0x15809e[_0x758e80][_0x65f6('0x5a')];}}}return _0x40d0f7[_0x65f6('0x58')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x5b')]=function(){var _0x574d84=this;return function(_0x10a661){if(_0x10a661){freeIsNotKey(_0x10a661,_0x574d84[_0x65f6('0x5c')],_0x65f6('0x3e'));for(var _0x219e42=0x0,_0x5694f9={};_0x219e42<_0x10a661[_0x65f6('0x3d')];_0x219e42+=0x1){_0x5694f9=_0x10a661[_0x219e42];if(_[_0x65f6('0x3f')](_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]])){_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]]=new Campaign(_0x5694f9);}else{_0x574d84['mergeFromDatabase'](_0x574d84[_0x65f6('0x5c')][_0x5694f9[_0x65f6('0x3e')]],_0x5694f9);_0x574d84['campaigns'][_0x5694f9['name']][_0x65f6('0x5d')]=_0x5694f9[_0x65f6('0x5e')]?_0x5694f9['SquareProject'][_0x65f6('0x3e')]:undefined;}}}return _0x574d84[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')]['initVoiceExtensions']=function(){var _0x1348ec=this;return function(_0x246510){if(_0x246510){freeIsNotKey(_0x246510,_0x1348ec['voiceExtensions'],'id');for(var _0x36b8de=0x0,_0x504b39={};_0x36b8de<_0x246510[_0x65f6('0x3d')];_0x36b8de+=0x1){_0x504b39=_0x246510[_0x36b8de];if(_['isUndefined'](_0x1348ec['voiceExtensions'][_0x504b39['id']])){_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']]=new VoiceExtension(_0x504b39);}else{_0x1348ec[_0x65f6('0x3a')](_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']],_0x504b39);}}}return _0x1348ec[_0x65f6('0x5f')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x60')]=function(){var _0x1ac46f=this;return function(_0x1f4e2c){clearCampaigns(_0x1ac46f['campaigns']);for(var _0x494904=0x0;_0x494904<_0x1f4e2c[_0x65f6('0x3d')];_0x494904+=0x1){_['merge'](_0x1ac46f[_0x65f6('0x5c')][_0x1f4e2c[_0x494904][_0x65f6('0x3e')]],_0x1f4e2c[_0x494904]);}return _0x1ac46f[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x61')]=function(){var _0x56bd9d=this;return function(_0x398cac){if(_0x398cac){freeIsNotKey(_0x398cac,_0x56bd9d[_0x65f6('0x20')],'id');for(var _0x14c908=0x0,_0x576ecd={};_0x14c908<_0x398cac[_0x65f6('0x3d')];_0x14c908+=0x1){_0x576ecd=_0x398cac[_0x14c908];if(_[_0x65f6('0x3f')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']])){_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']]=new FaxAccount(_0x576ecd);}else{_0x56bd9d[_0x65f6('0x3a')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']],_0x576ecd);}}}return _0x56bd9d['faxAccounts'];};};Realtime['prototype'][_0x65f6('0x62')]=function(){var _0x10d744=this;return function(_0x10c916){if(_0x10c916){freeIsNotKey(_0x10c916,_0x10d744[_0x65f6('0x11')],'name');for(var _0x4bda86=0x0,_0x336076={};_0x4bda86<_0x10c916[_0x65f6('0x3d')];_0x4bda86+=0x1){_0x336076=_0x10c916[_0x4bda86];if(_[_0x65f6('0x3f')](_0x10d744[_0x65f6('0x11')][_0x336076[_0x65f6('0x3e')]])){_0x10d744[_0x65f6('0x11')][_0x336076['name']]=new VoiceQueue(_0x336076);}else{_0x10d744['mergeFromDatabase'](_0x10d744['voiceQueues'][_0x336076[_0x65f6('0x3e')]],_0x336076);}}}return _0x10d744[_0x65f6('0x11')];};};module[_0x65f6('0x63')]=Realtime;
\ No newline at end of file
index 1c4c6c7..88ad126 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7f3=['hasOwnProperty','assign'];(function(_0x2ed1e9,_0x3664b1){var _0xa0db26=function(_0x426315){while(--_0x426315){_0x2ed1e9['push'](_0x2ed1e9['shift']());}};_0xa0db26(++_0x3664b1);}(_0xe7f3,0x1dd));var _0x3e7f=function(_0x53e1e8,_0x422ca0){_0x53e1e8=_0x53e1e8-0x0;var _0x2856c8=_0xe7f3[_0x53e1e8];return _0x2856c8;};'use strict';function mergeDBDataToRealtime(_0x4bb47f,_0x12e1ca){var _0x276a13=Object[_0x3e7f('0x0')]({},_0x4bb47f);for(var _0x3860b3 in _0x12e1ca){if(_0x276a13[_0x3e7f('0x1')](_0x3860b3)){_0x276a13[_0x3860b3]=_0x12e1ca[_0x3860b3];}}return _0x276a13;}exports['mergeDBDataToRealtime']=mergeDBDataToRealtime;
\ No newline at end of file
+var _0x83c0=['assign'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x83c0,0x69));var _0x083c=function(_0x2d5cf7,_0x49c672){_0x2d5cf7=_0x2d5cf7-0x0;var _0x265db0=_0x83c0[_0x2d5cf7];return _0x265db0;};'use strict';function mergeDBDataToRealtime(_0x280972,_0x1b79b0){var _0x3855ca=Object[_0x083c('0x0')]({},_0x280972);for(var _0x53175b in _0x1b79b0){if(_0x3855ca['hasOwnProperty'](_0x53175b)){_0x3855ca[_0x53175b]=_0x1b79b0[_0x53175b];}}return _0x3855ca;}exports['mergeDBDataToRealtime']=mergeDBDataToRealtime;
\ No newline at end of file
index f1be27c..f12f728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebab=['assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','create','match','keys','getCallType','channel','split','getAgentByInternal','calleridnum','outbound','internal','destination','exten','type','dialer','queue','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','membername','monitorFilename','filename','createdAt','monitors','connectedlinename','isArray','forEach','Local','substring','mobile','phone','indexOf','lastIndexOf','transfererlinkedid','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','custom:voiceCallReport','voiceCallReport','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','name','isNil','accountcode','interface','SIP/%s','length'];(function(_0x5285d0,_0x3d424c){var _0x4dd0a2=function(_0x594315){while(--_0x594315){_0x5285d0['push'](_0x5285d0['shift']());}};_0x4dd0a2(++_0x3d424c);}(_0xebab,0xf6));var _0xbeba=function(_0xe71a81,_0x245836){_0xe71a81=_0xe71a81-0x0;var _0x2d1da6=_0xebab[_0xe71a81];return _0x2d1da6;};'use strict';var _=require(_0xbeba('0x0'));var moment=require(_0xbeba('0x1'));var util=require(_0xbeba('0x2'));var config=require(_0xbeba('0x3'));var ami=require(_0xbeba('0x4'));var RpcVoiceAgentReport=require(_0xbeba('0x5'));var RpcVoiceCallReport=require(_0xbeba('0x6'));var RpcVoiceDialReport=require(_0xbeba('0x7'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0xbeba('0x8'));var RpcVoiceRecording=require(_0xbeba('0x9'));var RpcVoiceTransferReport=require(_0xbeba('0xa'));var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0xbeba('0xb'));var VoiceAgentReport=require(_0xbeba('0xc'));var VoiceDialReport=require(_0xbeba('0xd'));var UserReport=require(_0xbeba('0xe'));function Report(_0x2e4dda){this[_0xbeba('0xf')]=_0x2e4dda;this[_0xbeba('0x10')]=_0x2e4dda[_0xbeba('0x10')];this[_0xbeba('0x11')]=_0x2e4dda[_0xbeba('0x11')];}Report[_0xbeba('0x12')][_0xbeba('0x13')]=function(_0x5e0802){var _0x5f2ba5=new VoiceQueueReport(this[_0xbeba('0xf')]);var _0x320b86=new VoiceAgentReport(this[_0xbeba('0xf')]);var _0x232a66=new VoiceDialReport(this[_0xbeba('0xf')]);var _0x1d5c98=new VoiceCallReport(this[_0xbeba('0xf')]);var _0x1208ae=new UserReport(this[_0xbeba('0xf')]);if(config['xdr']&&config[_0xbeba('0x14')]['disabled']){ami['on'](_0xbeba('0x15'),this[_0xbeba('0x16')]['bind'](this));ami['on'](_0xbeba('0x17'),this[_0xbeba('0x18')][_0xbeba('0x19')](this));ami['on'](_0xbeba('0x1a'),this[_0xbeba('0x1b')][_0xbeba('0x19')](this));ami['on'](_0xbeba('0x1c'),this[_0xbeba('0x1d')][_0xbeba('0x19')](this));ami['on'](_0xbeba('0x1e'),this[_0xbeba('0x1f')]['bind'](this));ami['on'](_0xbeba('0x20'),this[_0xbeba('0x21')][_0xbeba('0x19')](this));}};Report[_0xbeba('0x12')][_0xbeba('0x22')]=function(_0x1e8e90){var _0x11826e;_0x11826e=_[_0xbeba('0x23')](this[_0xbeba('0x10')],function(_0x3f67bd){return _0x3f67bd['accountcode']==_0x1e8e90||_0x3f67bd[_0xbeba('0x24')]==_0x1e8e90;});if(_[_0xbeba('0x25')](_0x11826e)){var _0x4c7899=_['find'](this[_0xbeba('0x11')],function(_0x4e5fc8){return _0x4e5fc8[_0xbeba('0x26')]==_0x1e8e90||_0x4e5fc8[_0xbeba('0x24')]==_0x1e8e90;});if(_0x4c7899){_0x11826e=_[_0xbeba('0x23')](this['agents'],function(_0x52f5c9){return _0x52f5c9[_0xbeba('0x27')]==util['format'](_0xbeba('0x28'),_0x4c7899['name']);});}}return _0x11826e;};Report[_0xbeba('0x12')][_0xbeba('0x16')]=function(_0x15d0e5){for(var _0x97f1a8=0x0;_0x97f1a8<_0x15d0e5[_0xbeba('0x29')];_0x97f1a8+=0x1){var _0x1073f8=this[_0xbeba('0x22')](_0x15d0e5[_0x97f1a8]['connectedlinenum']);if(_0x1073f8){_0x15d0e5[_0x97f1a8][_0xbeba('0x26')]=_0x1073f8[_0xbeba('0x26')];_0x15d0e5[_0x97f1a8][_0xbeba('0x2a')]=!![];_0x15d0e5[_0x97f1a8][_0xbeba('0x2b')]=_0x1073f8[_0xbeba('0x24')];_0x15d0e5[_0x97f1a8][_0xbeba('0x27')]=_[_0xbeba('0x25')](_0x1073f8[_0xbeba('0x27')])?util['format'](_0xbeba('0x28'),_0x1073f8[_0xbeba('0x24')]):_0x1073f8[_0xbeba('0x27')];if(_0x15d0e5[_0x97f1a8][_0xbeba('0x2c')]){_0x15d0e5[_0x97f1a8][_0xbeba('0x2d')]=moment()[_0xbeba('0x2e')](_0xbeba('0x2f'));}if(_0x15d0e5[_0x97f1a8][_0xbeba('0x30')]){_0x15d0e5[_0x97f1a8]['queuecallerexitAt']=moment()['format'](_0xbeba('0x2f'));}RpcMemberReport[_0xbeba('0x16')](_0x15d0e5[_0x97f1a8]);}RpcVoiceQueueReport[_0xbeba('0x31')](_0x15d0e5[_0x97f1a8]);}};function extractCalleridNumber(_0x5f05f7){var _0x51fa37=_0x5f05f7[_0xbeba('0x32')](/<(.*?)>/);return _0x51fa37?_0x51fa37[0x1]:_0x5f05f7;}Report['prototype']['getAgentByInternal']=function(_0x1590ae){for(var _0x11119d=0x0;_0x11119d<Object['keys'](this[_0xbeba('0x10')])[_0xbeba('0x29')];_0x11119d++){var _0x1d149a=Object[_0xbeba('0x33')](this[_0xbeba('0x10')])[_0x11119d];var _0x1af814=this[_0xbeba('0x10')][_0x1d149a];if(_0x1af814['accountcode']===Number(_0x1590ae))return _0x1af814;}return null;};Report['prototype'][_0xbeba('0x34')]=function(_0x5c8425){var _0x46450c=_0x5c8425[_0xbeba('0x35')][_0xbeba('0x36')]('-')[0x0];var _0x5f4b6d=this[_0xbeba('0x10')][_0x46450c];if(!_0x5f4b6d)_0x5f4b6d=this[_0xbeba('0x37')](_0x5c8425[_0xbeba('0x38')]);return!_0x5f4b6d?_0xbeba('0x39'):_0xbeba('0x3a');};Report['prototype'][_0xbeba('0x18')]=function(_0xde88f7){_0xde88f7[_0xbeba('0x3b')]=_0xde88f7[_0xbeba('0x3b')]||_0xde88f7[_0xbeba('0x3c')];if(_0xde88f7[_0xbeba('0x3d')]==_0xbeba('0x3e')){_0xde88f7['lastapplication']=_0xbeba('0x3f');_0xde88f7[_0xbeba('0x40')]=_0xde88f7[_0xbeba('0x3f')];if(_0xde88f7[_0xbeba('0x41')]==_0xbeba('0x42')){_0xde88f7['accountcode']='';_0xde88f7[_0xbeba('0x3b')]=extractCalleridNumber(_0xde88f7[_0xbeba('0x43')]);}else if(_0xde88f7[_0xbeba('0x41')]=='from-sip'){if(_0xde88f7['destination']==_0xbeba('0x44')){_0xde88f7[_0xbeba('0x3b')]=extractCalleridNumber(_0xde88f7[_0xbeba('0x45')]);_0xde88f7['calleridnum']=_0xde88f7[_0xbeba('0x46')];_0xde88f7[_0xbeba('0x47')]=[_0xde88f7['channel'],_0xde88f7[_0xbeba('0x35')]=_0xde88f7['destinationchannel']][0x0];_0xde88f7[_0xbeba('0x43')]=_0xde88f7[_0xbeba('0x45')];}else{_0xde88f7['destination']=_0xde88f7[_0xbeba('0x38')];_0xde88f7[_0xbeba('0x38')]=_0xde88f7[_0xbeba('0x46')];if(_0xde88f7[_0xbeba('0x48')]==_0xbeba('0x49')){_0xde88f7[_0xbeba('0x26')]=_0xde88f7[_0xbeba('0x4a')];}else{_0xde88f7[_0xbeba('0x26')]='';}}}}else{_0xde88f7[_0xbeba('0x43')]=util[_0xbeba('0x2e')](_0xbeba('0x4b'),_0xde88f7[_0xbeba('0x4c')],_0xde88f7[_0xbeba('0x38')]);}if(RpcVoiceTransferReport[_0xbeba('0x4d')][_0xde88f7['linkedid']]){var _0x311c44=RpcVoiceTransferReport['transfers'][_0xde88f7[_0xbeba('0x4e')]];_0x311c44[_0xbeba('0x4f')]=_0xde88f7['uniqueid'];RpcVoiceTransferReport[_0xbeba('0x1f')](_0x311c44);delete RpcVoiceTransferReport[_0xbeba('0x4d')][_0xde88f7[_0xbeba('0x4e')]];}if(_['isNil'](_0xde88f7[_0xbeba('0x3d')])){_0xde88f7[_0xbeba('0x3d')]=this[_0xbeba('0x34')](_0xde88f7);}if(_[_0xbeba('0x25')](_0xde88f7[_0xbeba('0x50')])){var _0xbc5ef8=_0xde88f7[_0xbeba('0x35')][_0xbeba('0x36')]('-')[0x0];var _0x5271b5=this[_0xbeba('0x10')][_0xbc5ef8];if(!_0x5271b5)_0x5271b5=this[_0xbeba('0x37')](_0xde88f7[_0xbeba('0x26')]);if(_0x5271b5){_0xde88f7['UserId']=_0x5271b5['id'];_0xde88f7[_0xbeba('0x51')]=_0x5271b5['name'];}}RpcVoiceCallReport['create'](_0xde88f7);if(_0xde88f7['monitor']){for(var _0x2e817d=0x0;_0x2e817d<_0xde88f7['monitors'][_0xbeba('0x29')];_0x2e817d+=0x1){_0xde88f7[_0xbeba('0x52')]=_0xde88f7['monitors'][_0x2e817d][_0xbeba('0x53')];_0xde88f7[_0xbeba('0x54')]=_0xde88f7[_0xbeba('0x55')][_0x2e817d][_0xbeba('0x54')];if(_0xde88f7['exten']==_0xbeba('0x44')){_0xde88f7[_0xbeba('0x38')]=_0xde88f7[_0xbeba('0x4a')];_0xde88f7[_0xbeba('0x4c')]=_0xde88f7[_0xbeba('0x56')];_0xde88f7[_0xbeba('0x4a')]=_0xde88f7['accountcode'];_0xde88f7['connectedlinename']=_0xde88f7[_0xbeba('0x51')];_0xde88f7[_0xbeba('0x3c')]=_0xde88f7[_0xbeba('0x46')];}else if(_0xde88f7[_0xbeba('0x3c')]=='xcally-motion-dialer'){_0xde88f7[_0xbeba('0x38')]=_0xde88f7[_0xbeba('0x3b')];_0xde88f7['exten']=_0xde88f7[_0xbeba('0x46')];}RpcVoiceRecording[_0xbeba('0x31')](_0xde88f7);}}};Report[_0xbeba('0x12')]['voiceAgentReport']=function(_0x3596b9){if(_[_0xbeba('0x57')](_0x3596b9)){_0x3596b9[_0xbeba('0x58')](function(_0x3734c4){RpcVoiceAgentReport[_0xbeba('0x31')](_0x3734c4);});}else{RpcVoiceAgentReport[_0xbeba('0x31')](_0x3596b9);}};Report[_0xbeba('0x12')]['voiceDialReport']=function(_0x3bee22){RpcVoiceDialReport['create'](_0x3bee22);var _0x582373;var _0x55fe18;var _0x457b6a=_0x3bee22[_0xbeba('0x35')];if(_['startsWith'](_0x457b6a,_0xbeba('0x59'))){_0x55fe18=_0x457b6a[_0xbeba('0x5a')](_0x457b6a['indexOf']('/')+0x1,_0x457b6a['indexOf']('@'));_0x582373=_[_0xbeba('0x23')](this[_0xbeba('0x10')],function(_0x431b14){return _0x431b14[_0xbeba('0x5b')]==_0x55fe18||_0x431b14[_0xbeba('0x5c')]==_0x55fe18||_0x431b14[_0xbeba('0x26')]==_0x55fe18;});}else{_0x55fe18=_0x457b6a[_0xbeba('0x5a')](_0x457b6a[_0xbeba('0x5d')]('/')+0x1,_0x457b6a[_0xbeba('0x5e')]('-'));_0x582373=this[_0xbeba('0x22')](_0x55fe18);}if(_0x582373){_0x3bee22[_0xbeba('0x27')]=_['isNil'](_0x582373[_0xbeba('0x27')])?util[_0xbeba('0x2e')]('SIP/%s',_0x582373[_0xbeba('0x24')]):_0x582373[_0xbeba('0x27')];_0x3bee22['membername']=_0x582373[_0xbeba('0x24')];_0x3bee22[_0xbeba('0x26')]=_0x582373[_0xbeba('0x26')];RpcMemberReport[_0xbeba('0x1d')](_0x3bee22);}};Report['prototype']['blindTransfer']=function(_0x253dab){RpcVoiceTransferReport[_0xbeba('0x4d')][_0x253dab[_0xbeba('0x5f')]]=_0x253dab;};Report[_0xbeba('0x12')][_0xbeba('0x21')]=function(_0x3a98f0){RpcVoiceTransferReport[_0xbeba('0x21')](_0x3a98f0);};module['exports']=Report;
\ No newline at end of file
+var _0x3819=['internal','destination','exten','type','dialer','lastapplication','lastdata','queue','from-voip-provider','context','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','callerid','calleridpreview','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','UserId','membername','monitor','monitors','monitorFilename','createdAt','connectedlinename','xcally-motion-dialer','isArray','startsWith','substring','indexOf','mobile','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','agents','telephones','realtime','xdr','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','find','name','accountcode','interface','format','SIP/%s','voiceQueueReport','length','findAgent','assigned','lastAssignedTo','isNil','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','channel','split','outbound'];(function(_0x535a23,_0x455cdc){var _0x15b96e=function(_0x212110){while(--_0x212110){_0x535a23['push'](_0x535a23['shift']());}};_0x15b96e(++_0x455cdc);}(_0x3819,0x1a0));var _0x9381=function(_0xbd2b33,_0x3f7978){_0xbd2b33=_0xbd2b33-0x0;var _0x2f245f=_0x3819[_0xbd2b33];return _0x2f245f;};'use strict';var _=require(_0x9381('0x0'));var moment=require(_0x9381('0x1'));var util=require(_0x9381('0x2'));var config=require(_0x9381('0x3'));var ami=require(_0x9381('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x9381('0x5'));var RpcVoiceDialReport=require(_0x9381('0x6'));var RpcMemberReport=require(_0x9381('0x7'));var RpcVoiceQueueReport=require(_0x9381('0x8'));var RpcVoiceRecording=require(_0x9381('0x9'));var RpcVoiceTransferReport=require(_0x9381('0xa'));var VoiceQueueReport=require(_0x9381('0xb'));var VoiceCallReport=require(_0x9381('0xc'));var VoiceAgentReport=require(_0x9381('0xd'));var VoiceDialReport=require(_0x9381('0xe'));var UserReport=require('./userReport');function Report(_0x4f45d3){this['realtime']=_0x4f45d3;this[_0x9381('0xf')]=_0x4f45d3[_0x9381('0xf')];this[_0x9381('0x10')]=_0x4f45d3[_0x9381('0x10')];}Report['prototype']['sync']=function(_0x570bce){var _0x3a77a1=new VoiceQueueReport(this[_0x9381('0x11')]);var _0x3bab52=new VoiceAgentReport(this[_0x9381('0x11')]);var _0x4afcee=new VoiceDialReport(this[_0x9381('0x11')]);var _0x1edee4=new VoiceCallReport(this[_0x9381('0x11')]);var _0x133b78=new UserReport(this['realtime']);if(config[_0x9381('0x12')]&&config[_0x9381('0x12')]['disabled']){ami['on'](_0x9381('0x13'),this['voiceQueueReport'][_0x9381('0x14')](this));ami['on'](_0x9381('0x15'),this[_0x9381('0x16')][_0x9381('0x14')](this));ami['on'](_0x9381('0x17'),this['voiceAgentReport'][_0x9381('0x14')](this));ami['on']('custom:voiceDialReport',this[_0x9381('0x18')]['bind'](this));ami['on'](_0x9381('0x19'),this[_0x9381('0x1a')][_0x9381('0x14')](this));ami['on'](_0x9381('0x1b'),this[_0x9381('0x1c')]['bind'](this));}};Report[_0x9381('0x1d')]['findAgent']=function(_0x321695){var _0x399cf4;_0x399cf4=_[_0x9381('0x1e')](this[_0x9381('0xf')],function(_0x52ef31){return _0x52ef31['accountcode']==_0x321695||_0x52ef31[_0x9381('0x1f')]==_0x321695;});if(_['isNil'](_0x399cf4)){var _0x237e32=_[_0x9381('0x1e')](this['telephones'],function(_0x28a431){return _0x28a431[_0x9381('0x20')]==_0x321695||_0x28a431[_0x9381('0x1f')]==_0x321695;});if(_0x237e32){_0x399cf4=_[_0x9381('0x1e')](this[_0x9381('0xf')],function(_0x239d64){return _0x239d64[_0x9381('0x21')]==util[_0x9381('0x22')](_0x9381('0x23'),_0x237e32[_0x9381('0x1f')]);});}}return _0x399cf4;};Report[_0x9381('0x1d')][_0x9381('0x24')]=function(_0x71a59a){for(var _0x143c0c=0x0;_0x143c0c<_0x71a59a[_0x9381('0x25')];_0x143c0c+=0x1){var _0x14292a=this[_0x9381('0x26')](_0x71a59a[_0x143c0c]['connectedlinenum']);if(_0x14292a){_0x71a59a[_0x143c0c][_0x9381('0x20')]=_0x14292a[_0x9381('0x20')];_0x71a59a[_0x143c0c][_0x9381('0x27')]=!![];_0x71a59a[_0x143c0c][_0x9381('0x28')]=_0x14292a[_0x9381('0x1f')];_0x71a59a[_0x143c0c][_0x9381('0x21')]=_[_0x9381('0x29')](_0x14292a[_0x9381('0x21')])?util[_0x9381('0x22')](_0x9381('0x23'),_0x14292a[_0x9381('0x1f')]):_0x14292a['interface'];if(_0x71a59a[_0x143c0c][_0x9381('0x2a')]){_0x71a59a[_0x143c0c][_0x9381('0x2b')]=moment()['format'](_0x9381('0x2c'));}if(_0x71a59a[_0x143c0c][_0x9381('0x2d')]){_0x71a59a[_0x143c0c][_0x9381('0x2e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport['voiceQueueReport'](_0x71a59a[_0x143c0c]);}RpcVoiceQueueReport[_0x9381('0x2f')](_0x71a59a[_0x143c0c]);}};function extractCalleridNumber(_0x296cc2){var _0x57a2b1=_0x296cc2[_0x9381('0x30')](/<(.*?)>/);return _0x57a2b1?_0x57a2b1[0x1]:_0x296cc2;}Report[_0x9381('0x1d')][_0x9381('0x31')]=function(_0x34ebb5){for(var _0x42172c=0x0;_0x42172c<Object[_0x9381('0x32')](this[_0x9381('0xf')])[_0x9381('0x25')];_0x42172c++){var _0x45592c=Object[_0x9381('0x32')](this['agents'])[_0x42172c];var _0x3ac02b=this[_0x9381('0xf')][_0x45592c];if(_0x3ac02b[_0x9381('0x20')]===Number(_0x34ebb5))return _0x3ac02b;}return null;};Report[_0x9381('0x1d')]['getCallType']=function(_0x292870){var _0x4ed3e7=_0x292870[_0x9381('0x33')][_0x9381('0x34')]('-')[0x0];var _0x1c7ae5=this[_0x9381('0xf')][_0x4ed3e7];if(!_0x1c7ae5)_0x1c7ae5=this['getAgentByInternal'](_0x292870['calleridnum']);return!_0x1c7ae5?_0x9381('0x35'):_0x9381('0x36');};Report['prototype'][_0x9381('0x16')]=function(_0x5e9a08){_0x5e9a08['destination']=_0x5e9a08[_0x9381('0x37')]||_0x5e9a08[_0x9381('0x38')];if(_0x5e9a08[_0x9381('0x39')]==_0x9381('0x3a')){_0x5e9a08[_0x9381('0x3b')]='queue';_0x5e9a08[_0x9381('0x3c')]=_0x5e9a08[_0x9381('0x3d')];if(_0x5e9a08['context']==_0x9381('0x3e')){_0x5e9a08[_0x9381('0x20')]='';_0x5e9a08[_0x9381('0x37')]=extractCalleridNumber(_0x5e9a08['callerid']);}else if(_0x5e9a08[_0x9381('0x3f')]==_0x9381('0x40')){if(_0x5e9a08[_0x9381('0x37')]==_0x9381('0x41')){_0x5e9a08[_0x9381('0x37')]=extractCalleridNumber(_0x5e9a08['calleridpreview']);_0x5e9a08[_0x9381('0x42')]=_0x5e9a08[_0x9381('0x43')];_0x5e9a08[_0x9381('0x44')]=[_0x5e9a08[_0x9381('0x33')],_0x5e9a08[_0x9381('0x33')]=_0x5e9a08['destinationchannel']][0x0];_0x5e9a08[_0x9381('0x45')]=_0x5e9a08[_0x9381('0x46')];}else{_0x5e9a08[_0x9381('0x37')]=_0x5e9a08[_0x9381('0x42')];_0x5e9a08[_0x9381('0x42')]=_0x5e9a08[_0x9381('0x43')];if(_0x5e9a08['disposition']=='ANSWERED'){_0x5e9a08['accountcode']=_0x5e9a08[_0x9381('0x47')];}else{_0x5e9a08['accountcode']='';}}}}else{_0x5e9a08['callerid']=util['format'](_0x9381('0x48'),_0x5e9a08[_0x9381('0x49')],_0x5e9a08['calleridnum']);}if(RpcVoiceTransferReport[_0x9381('0x4a')][_0x5e9a08[_0x9381('0x4b')]]){var _0x24718=RpcVoiceTransferReport[_0x9381('0x4a')][_0x5e9a08[_0x9381('0x4b')]];_0x24718[_0x9381('0x4c')]=_0x5e9a08[_0x9381('0x4d')];RpcVoiceTransferReport[_0x9381('0x1a')](_0x24718);delete RpcVoiceTransferReport[_0x9381('0x4a')][_0x5e9a08[_0x9381('0x4b')]];}if(_['isNil'](_0x5e9a08[_0x9381('0x39')])){_0x5e9a08[_0x9381('0x39')]=this['getCallType'](_0x5e9a08);}if(_[_0x9381('0x29')](_0x5e9a08[_0x9381('0x4e')])){var _0x46b59f=_0x5e9a08['channel'][_0x9381('0x34')]('-')[0x0];var _0x39da5c=this['agents'][_0x46b59f];if(!_0x39da5c)_0x39da5c=this[_0x9381('0x31')](_0x5e9a08[_0x9381('0x20')]);if(_0x39da5c){_0x5e9a08[_0x9381('0x4e')]=_0x39da5c['id'];_0x5e9a08[_0x9381('0x4f')]=_0x39da5c['name'];}}RpcVoiceCallReport[_0x9381('0x2f')](_0x5e9a08);if(_0x5e9a08[_0x9381('0x50')]){for(var _0x2b0970=0x0;_0x2b0970<_0x5e9a08[_0x9381('0x51')][_0x9381('0x25')];_0x2b0970+=0x1){_0x5e9a08[_0x9381('0x52')]=_0x5e9a08['monitors'][_0x2b0970]['filename'];_0x5e9a08[_0x9381('0x53')]=_0x5e9a08[_0x9381('0x51')][_0x2b0970][_0x9381('0x53')];if(_0x5e9a08[_0x9381('0x38')]==_0x9381('0x41')){_0x5e9a08[_0x9381('0x42')]=_0x5e9a08[_0x9381('0x47')];_0x5e9a08['calleridname']=_0x5e9a08[_0x9381('0x54')];_0x5e9a08['connectedlinenum']=_0x5e9a08[_0x9381('0x20')];_0x5e9a08[_0x9381('0x54')]=_0x5e9a08[_0x9381('0x4f')];_0x5e9a08[_0x9381('0x38')]=_0x5e9a08[_0x9381('0x43')];}else if(_0x5e9a08['exten']==_0x9381('0x55')){_0x5e9a08[_0x9381('0x42')]=_0x5e9a08[_0x9381('0x37')];_0x5e9a08['exten']=_0x5e9a08['originatecalleridnum'];}RpcVoiceRecording[_0x9381('0x2f')](_0x5e9a08);}}};Report[_0x9381('0x1d')]['voiceAgentReport']=function(_0x412fd9){if(_[_0x9381('0x56')](_0x412fd9)){_0x412fd9['forEach'](function(_0x63974e){RpcVoiceAgentReport[_0x9381('0x2f')](_0x63974e);});}else{RpcVoiceAgentReport['create'](_0x412fd9);}};Report[_0x9381('0x1d')][_0x9381('0x18')]=function(_0x21dc1e){RpcVoiceDialReport[_0x9381('0x2f')](_0x21dc1e);var _0x275b48;var _0x28aca0;var _0x3d1551=_0x21dc1e['channel'];if(_[_0x9381('0x57')](_0x3d1551,'Local')){_0x28aca0=_0x3d1551[_0x9381('0x58')](_0x3d1551[_0x9381('0x59')]('/')+0x1,_0x3d1551[_0x9381('0x59')]('@'));_0x275b48=_[_0x9381('0x1e')](this[_0x9381('0xf')],function(_0x17824d){return _0x17824d[_0x9381('0x5a')]==_0x28aca0||_0x17824d['phone']==_0x28aca0||_0x17824d[_0x9381('0x20')]==_0x28aca0;});}else{_0x28aca0=_0x3d1551[_0x9381('0x58')](_0x3d1551[_0x9381('0x59')]('/')+0x1,_0x3d1551[_0x9381('0x5b')]('-'));_0x275b48=this[_0x9381('0x26')](_0x28aca0);}if(_0x275b48){_0x21dc1e[_0x9381('0x21')]=_[_0x9381('0x29')](_0x275b48[_0x9381('0x21')])?util[_0x9381('0x22')](_0x9381('0x23'),_0x275b48[_0x9381('0x1f')]):_0x275b48[_0x9381('0x21')];_0x21dc1e['membername']=_0x275b48[_0x9381('0x1f')];_0x21dc1e['accountcode']=_0x275b48[_0x9381('0x20')];RpcMemberReport[_0x9381('0x18')](_0x21dc1e);}};Report[_0x9381('0x1d')][_0x9381('0x1a')]=function(_0x4b6dce){RpcVoiceTransferReport[_0x9381('0x4a')][_0x4b6dce[_0x9381('0x5c')]]=_0x4b6dce;};Report[_0x9381('0x1d')][_0x9381('0x1c')]=function(_0x373a7c){RpcVoiceTransferReport[_0x9381('0x1c')](_0x373a7c);};module[_0x9381('0x5d')]=Report;
\ No newline at end of file
index 5d05625..fff26f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe54b=['[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:save','exports','ioredis','../../../config/environment','../../../config/logger','redis','localhost','trunks','agents','telephones','registryentry','bind','registry','syncRegistry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','resolve','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','find','stateRegistry','merge','omit','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','device','[userReport][devicestatechange]','toLowerCase','local','stateTime','toNumber','updateStatusRealtime','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','substring','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address'];(function(_0x5b8600,_0x3e2607){var _0x3ac812=function(_0xb123f6){while(--_0xb123f6){_0x5b8600['push'](_0x5b8600['shift']());}};_0x3ac812(++_0x3e2607);}(_0xe54b,0x111));var _0xbe54=function(_0xfa3ea5,_0x17dc80){_0xfa3ea5=_0xfa3ea5-0x0;var _0x375e88=_0xe54b[_0xfa3ea5];return _0x375e88;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require(_0xbe54('0x0'));var BPromise=require('bluebird');var config=require(_0xbe54('0x1'));var logger=require(_0xbe54('0x2'))('ami');var ami=require('../ami');config[_0xbe54('0x3')]=_['defaults'](config[_0xbe54('0x3')],{'host':_0xbe54('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xbe54('0x3')]));function UserReport(_0x532582){this[_0xbe54('0x5')]=_0x532582[_0xbe54('0x5')];this[_0xbe54('0x6')]=_0x532582[_0xbe54('0x6')];this['telephones']=_0x532582[_0xbe54('0x7')];ami['on'](_0xbe54('0x8'),this['syncRegistry'][_0xbe54('0x9')](this));ami['on'](_0xbe54('0xa'),this[_0xbe54('0xb')]['bind'](this));ami['on'](_0xbe54('0xc'),this[_0xbe54('0xd')][_0xbe54('0x9')](this));ami['on'](_0xbe54('0xe'),this[_0xbe54('0xf')][_0xbe54('0x9')](this));return this[_0xbe54('0x10')]();}function showSipRegistrations(){Promise['resolve']()[_0xbe54('0x11')](ami[_0xbe54('0x12')]())[_0xbe54('0x13')](function(_0x57fe89){logger[_0xbe54('0x14')](_0xbe54('0x15'),util[_0xbe54('0x16')](_0x57fe89,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xbe54('0x11')](ami[_0xbe54('0x17')]())[_0xbe54('0x13')](function(_0x2a6e5a){logger[_0xbe54('0x14')](_0xbe54('0x18'),util['inspect'](_0x2a6e5a,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xbe54('0x19')]()[_0xbe54('0x11')](ami[_0xbe54('0x1a')]())['catch'](function(_0x4388e9){logger[_0xbe54('0x14')]('[userReport][sippeerstatus]',util[_0xbe54('0x16')](_0x4388e9,{'showHidden':![],'depth':null}));});}UserReport[_0xbe54('0x1b')][_0xbe54('0x10')]=function(){setInterval(function(){BPromise[_0xbe54('0x19')]()[_0xbe54('0x11')](showSipRegistrations())[_0xbe54('0x11')](listDeviceStates())[_0xbe54('0x11')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0xbe54('0x1c')]=function(_0x114c70){return _0x114c70!==null&&!_[_0xbe54('0x1d')](_0x114c70);};UserReport[_0xbe54('0x1b')][_0xbe54('0x1e')]=function(_0x47aa70,_0x4a5a4e,_0x24e886){io['to'](_0x47aa70)[_0xbe54('0x1e')](_0x4a5a4e,_0x24e886);};UserReport[_0xbe54('0x1b')][_0xbe54('0xb')]=function(_0x434ce4){try{if(this['isNotNull'](_0x434ce4)){logger['info'](_0xbe54('0x1f'),_0x434ce4[_0xbe54('0x20')],_0x434ce4[_0xbe54('0x21')]);logger[_0xbe54('0x22')]('[userReport][registry]',util[_0xbe54('0x16')](_0x434ce4,{'showHidden':![],'depth':null}));var _0x25ac44=_[_0xbe54('0x23')](this['trunks'],{'defaultuser':_0x434ce4[_0xbe54('0x20')]});if(_0x25ac44){_0x434ce4[_0xbe54('0x24')]=_0x434ce4[_0xbe54('0x21')];_[_0xbe54('0x25')](_0x25ac44,_[_0xbe54('0x26')](_0x434ce4,['event',_0xbe54('0x27'),_0xbe54('0x20'),_0xbe54('0x21')]));logger[_0xbe54('0x22')](_0xbe54('0x28'),util['inspect'](_0x25ac44,{'showHidden':![],'depth':null}));this['emit'](util[_0xbe54('0x29')](_0xbe54('0x2a'),_0x25ac44['name']),'trunk:save',_0x25ac44);}}}catch(_0x4d03c0){logger[_0xbe54('0x14')]('[userReport][registry]',util[_0xbe54('0x16')](_0x4d03c0,{'showHidden':![],'depth':null}));}};UserReport[_0xbe54('0x1b')][_0xbe54('0xd')]=function(_0x4410b7){try{if(this['isNotNull'](_0x4410b7)){logger['info']('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x4410b7[_0xbe54('0x2b')],_0x4410b7[_0xbe54('0x21')]);logger[_0xbe54('0x22')](_0xbe54('0x2c'),util[_0xbe54('0x16')](_0x4410b7,{'showHidden':![],'depth':null}));if(this[_0xbe54('0x6')][_0x4410b7['device']]){if(!this[_0xbe54('0x6')][_0x4410b7[_0xbe54('0x2b')]]['local']||_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]()=='inuse'){this[_0xbe54('0x6')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x2e')]=![];if(this[_0xbe54('0x6')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x21')]!==_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]()){this['agents'][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x2f')]=_[_0xbe54('0x30')](moment()[_0xbe54('0x29')]('x'));}this[_0xbe54('0x6')][_0x4410b7['device']][_0xbe54('0x21')]=_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]();this[_0xbe54('0x6')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x31')](_0x4410b7);}}else if(this[_0xbe54('0x7')][_0x4410b7[_0xbe54('0x2b')]]){if(this[_0xbe54('0x7')][_0x4410b7['device']][_0xbe54('0x21')]!==_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]()){this['telephones'][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x2f')]=_['toNumber'](moment()[_0xbe54('0x29')]('x'));}this[_0xbe54('0x7')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x21')]=_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]();logger[_0xbe54('0x22')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0xbe54('0x16')](this[_0xbe54('0x7')][_0x4410b7[_0xbe54('0x2b')]],{'showHidden':![],'depth':null}));this[_0xbe54('0x1e')](util[_0xbe54('0x29')](_0xbe54('0x32'),this[_0xbe54('0x7')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x33')]),_0xbe54('0x34'),this[_0xbe54('0x7')][_0x4410b7['device']]);}else if(this[_0xbe54('0x5')][_0x4410b7[_0xbe54('0x2b')]]){if(this[_0xbe54('0x5')][_0x4410b7[_0xbe54('0x2b')]][_0xbe54('0x21')]!==_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]()){this[_0xbe54('0x5')][_0x4410b7[_0xbe54('0x2b')]]['stateTime']=_[_0xbe54('0x30')](moment()[_0xbe54('0x29')]('x'));}this[_0xbe54('0x5')][_0x4410b7['device']]['state']=_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]();logger[_0xbe54('0x22')](_0xbe54('0x35'),util[_0xbe54('0x16')](this[_0xbe54('0x5')][_0x4410b7[_0xbe54('0x2b')]],{'showHidden':![],'depth':null}));this[_0xbe54('0x1e')](util['format'](_0xbe54('0x2a'),this[_0xbe54('0x5')][_0x4410b7['device']][_0xbe54('0x33')]),'trunk:save',this['trunks'][_0x4410b7[_0xbe54('0x2b')]]);}else if(_['startsWith'](_0x4410b7[_0xbe54('0x2b')],'Local')){var _0x3c67d1=_0x4410b7[_0xbe54('0x2b')];var _0x6a4c00=_0x3c67d1[_0xbe54('0x36')](_0x3c67d1['indexOf']('/')+0x1,_0x3c67d1[_0xbe54('0x37')]('@'));var _0x294322=_['find'](this[_0xbe54('0x6')],function(_0x136906){return _0x136906[_0xbe54('0x38')]==_0x6a4c00||_0x136906[_0xbe54('0x39')]==_0x6a4c00||_0x136906[_0xbe54('0x3a')]==_0x6a4c00;});if(_0x294322){if(_0x294322[_0xbe54('0x21')]!==_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]()){_0x294322['stateTime']=_[_0xbe54('0x30')](moment()[_0xbe54('0x29')]('x'));}_0x294322[_0xbe54('0x21')]=_0x4410b7[_0xbe54('0x21')][_0xbe54('0x2d')]();_0x294322[_0xbe54('0x2e')]=!![];_0x294322[_0xbe54('0x31')](_0x4410b7);}}}}catch(_0x315595){logger[_0xbe54('0x14')](_0xbe54('0x2c'),util[_0xbe54('0x16')](_0x315595,{'showHidden':![],'depth':null}));}};UserReport[_0xbe54('0x1b')][_0xbe54('0xf')]=function(_0x201e54){try{if(this['isNotNull'](_0x201e54)&&this[_0xbe54('0x1c')](_0x201e54[_0xbe54('0xe')])){logger['info'](_0xbe54('0x3b'),_0x201e54[_0xbe54('0x3c')],_0x201e54[_0xbe54('0x3d')],_0x201e54[_0xbe54('0xe')]);logger[_0xbe54('0x22')](_0xbe54('0x3e'),util[_0xbe54('0x16')](_0x201e54,{'showHidden':![],'depth':null}));if(this['agents'][_0x201e54[_0xbe54('0x3c')]]){if(!this['agents'][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x2e')]||_0x201e54[_0xbe54('0xe')]['toLowerCase']()=='registered'){this[_0xbe54('0x6')][_0x201e54['peer']][_0xbe54('0x2e')]=![];this[_0xbe54('0x6')][_0x201e54['peer']][_0xbe54('0x3f')]=_0x201e54[_0xbe54('0xe')]['toLowerCase']();this[_0xbe54('0x6')][_0x201e54['peer']][_0xbe54('0x3d')]=_0x201e54[_0xbe54('0x3d')];this[_0xbe54('0x6')][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x31')](_0x201e54);}}else if(this[_0xbe54('0x7')][_0x201e54['peer']]){this[_0xbe54('0x7')][_0x201e54[_0xbe54('0x3c')]]['status']=_0x201e54[_0xbe54('0xe')][_0xbe54('0x2d')]();this['telephones'][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x3d')]=_0x201e54[_0xbe54('0x3d')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this['telephones'][_0x201e54[_0xbe54('0x3c')]],{'showHidden':![],'depth':null}));this[_0xbe54('0x1e')](util[_0xbe54('0x29')](_0xbe54('0x32'),this['telephones'][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x33')]),_0xbe54('0x34'),this[_0xbe54('0x7')][_0x201e54['peer']]);}else if(this['trunks'][_0x201e54[_0xbe54('0x3c')]]){this['trunks'][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x3f')]=_0x201e54[_0xbe54('0xe')][_0xbe54('0x2d')]();this[_0xbe54('0x5')][_0x201e54['peer']]['address']=_0x201e54[_0xbe54('0x3d')];logger['debug'](_0xbe54('0x40'),util[_0xbe54('0x16')](this[_0xbe54('0x5')][_0x201e54[_0xbe54('0x3c')]],{'showHidden':![],'depth':null}));this[_0xbe54('0x1e')](util['format']('trunk:%s',this[_0xbe54('0x5')][_0x201e54[_0xbe54('0x3c')]][_0xbe54('0x33')]),_0xbe54('0x41'),this['trunks'][_0x201e54['peer']]);}}}catch(_0x5d7197){logger['error'](_0xbe54('0x3e'),util[_0xbe54('0x16')](_0x5d7197,{'showHidden':![],'depth':null}));}};module[_0xbe54('0x42')]=UserReport;
\ No newline at end of file
+var _0x96db=['registry','devicestatechange','syncDeviceState','peerstatus','syncRealtimeShow','resolve','catch','error','[userReport][sipshowregistry]','inspect','then','[userReport][devicestatelist]','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','find','username','merge','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','trunk:save','device','inuse','toLowerCase','stateTime','updateStatusRealtime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','accountcode','local','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','lodash','moment','util','ioredis','bluebird','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind'];(function(_0x1d20e5,_0x3d4f74){var _0x14c8d3=function(_0x368a35){while(--_0x368a35){_0x1d20e5['push'](_0x1d20e5['shift']());}};_0x14c8d3(++_0x3d4f74);}(_0x96db,0x10b));var _0xb96d=function(_0x2c7dc6,_0x3c4ce0){_0x2c7dc6=_0x2c7dc6-0x0;var _0x10002b=_0x96db[_0x2c7dc6];return _0x10002b;};'use strict';var _=require(_0xb96d('0x0'));var moment=require(_0xb96d('0x1'));var util=require(_0xb96d('0x2'));var Redis=require(_0xb96d('0x3'));var BPromise=require(_0xb96d('0x4'));var config=require('../../../config/environment');var logger=require(_0xb96d('0x5'))(_0xb96d('0x6'));var ami=require(_0xb96d('0x7'));config[_0xb96d('0x8')]=_[_0xb96d('0x9')](config[_0xb96d('0x8')],{'host':_0xb96d('0xa'),'port':0x18eb});var io=require(_0xb96d('0xb'))(new Redis(config[_0xb96d('0x8')]));function UserReport(_0x2293fa){this[_0xb96d('0xc')]=_0x2293fa['trunks'];this[_0xb96d('0xd')]=_0x2293fa['agents'];this['telephones']=_0x2293fa[_0xb96d('0xe')];ami['on']('registryentry',this[_0xb96d('0xf')][_0xb96d('0x10')](this));ami['on'](_0xb96d('0x11'),this[_0xb96d('0xf')][_0xb96d('0x10')](this));ami['on'](_0xb96d('0x12'),this[_0xb96d('0x13')]['bind'](this));ami['on'](_0xb96d('0x14'),this['syncPeerStatus'][_0xb96d('0x10')](this));return this[_0xb96d('0x15')]();}function showSipRegistrations(){Promise[_0xb96d('0x16')]()['then'](ami['actionSipShowRegistry']())[_0xb96d('0x17')](function(_0x918886){logger[_0xb96d('0x18')](_0xb96d('0x19'),util[_0xb96d('0x1a')](_0x918886,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xb96d('0x16')]()[_0xb96d('0x1b')](ami['actionDeviceStateList']())[_0xb96d('0x17')](function(_0x153547){logger[_0xb96d('0x18')](_0xb96d('0x1c'),util[_0xb96d('0x1a')](_0x153547,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xb96d('0x16')]()[_0xb96d('0x1b')](ami['actionSipPeerStatus']())['catch'](function(_0x31f07a){logger[_0xb96d('0x18')]('[userReport][sippeerstatus]',util[_0xb96d('0x1a')](_0x31f07a,{'showHidden':![],'depth':null}));});}UserReport[_0xb96d('0x1d')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0xb96d('0x16')]()[_0xb96d('0x1b')](showSipRegistrations())['then'](listDeviceStates())[_0xb96d('0x1b')](showPeersStatus());},0x32c8);};UserReport[_0xb96d('0x1d')]['isNotNull']=function(_0x4e66ee){return _0x4e66ee!==null&&!_[_0xb96d('0x1e')](_0x4e66ee);};UserReport['prototype'][_0xb96d('0x1f')]=function(_0x3942f6,_0x3c59cf,_0x79f7a6){io['to'](_0x3942f6)[_0xb96d('0x1f')](_0x3c59cf,_0x79f7a6);};UserReport[_0xb96d('0x1d')][_0xb96d('0xf')]=function(_0x15dabe){try{if(this[_0xb96d('0x20')](_0x15dabe)){logger[_0xb96d('0x21')](_0xb96d('0x22'),_0x15dabe['username'],_0x15dabe[_0xb96d('0x23')]);logger['debug']('[userReport][registry]',util[_0xb96d('0x1a')](_0x15dabe,{'showHidden':![],'depth':null}));var _0x2ebdd5=_[_0xb96d('0x24')](this['trunks'],{'defaultuser':_0x15dabe[_0xb96d('0x25')]});if(_0x2ebdd5){_0x15dabe['stateRegistry']=_0x15dabe[_0xb96d('0x23')];_[_0xb96d('0x26')](_0x2ebdd5,_['omit'](_0x15dabe,[_0xb96d('0x27'),_0xb96d('0x28'),_0xb96d('0x25'),_0xb96d('0x23')]));logger[_0xb96d('0x29')](_0xb96d('0x2a'),util[_0xb96d('0x1a')](_0x2ebdd5,{'showHidden':![],'depth':null}));this[_0xb96d('0x1f')](util[_0xb96d('0x2b')](_0xb96d('0x2c'),_0x2ebdd5['name']),_0xb96d('0x2d'),_0x2ebdd5);}}}catch(_0x5b7b5d){logger[_0xb96d('0x18')]('[userReport][registry]',util[_0xb96d('0x1a')](_0x5b7b5d,{'showHidden':![],'depth':null}));}};UserReport[_0xb96d('0x1d')][_0xb96d('0x13')]=function(_0x571bc8){try{if(this[_0xb96d('0x20')](_0x571bc8)){logger[_0xb96d('0x21')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x571bc8[_0xb96d('0x2e')],_0x571bc8[_0xb96d('0x23')]);logger[_0xb96d('0x29')]('[userReport][devicestatechange]',util[_0xb96d('0x1a')](_0x571bc8,{'showHidden':![],'depth':null}));if(this['agents'][_0x571bc8['device']]){if(!this[_0xb96d('0xd')][_0x571bc8['device']]['local']||_0x571bc8[_0xb96d('0x23')]['toLowerCase']()==_0xb96d('0x2f')){this[_0xb96d('0xd')][_0x571bc8[_0xb96d('0x2e')]]['local']=![];if(this[_0xb96d('0xd')][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x23')]!==_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]()){this['agents'][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x31')]=_['toNumber'](moment()[_0xb96d('0x2b')]('x'));}this[_0xb96d('0xd')][_0x571bc8['device']][_0xb96d('0x23')]=_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]();this['agents'][_0x571bc8['device']][_0xb96d('0x32')](_0x571bc8);}}else if(this[_0xb96d('0xe')][_0x571bc8[_0xb96d('0x2e')]]){if(this[_0xb96d('0xe')][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x23')]!==_0x571bc8['state'][_0xb96d('0x30')]()){this[_0xb96d('0xe')][_0x571bc8[_0xb96d('0x2e')]]['stateTime']=_[_0xb96d('0x33')](moment()[_0xb96d('0x2b')]('x'));}this[_0xb96d('0xe')][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x23')]=_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]();logger[_0xb96d('0x29')](_0xb96d('0x34'),util[_0xb96d('0x1a')](this[_0xb96d('0xe')][_0x571bc8[_0xb96d('0x2e')]],{'showHidden':![],'depth':null}));this[_0xb96d('0x1f')](util[_0xb96d('0x2b')](_0xb96d('0x35'),this['telephones'][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x36')]),'telephone:save',this['telephones'][_0x571bc8[_0xb96d('0x2e')]]);}else if(this[_0xb96d('0xc')][_0x571bc8[_0xb96d('0x2e')]]){if(this[_0xb96d('0xc')][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x23')]!==_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]()){this[_0xb96d('0xc')][_0x571bc8[_0xb96d('0x2e')]][_0xb96d('0x31')]=_['toNumber'](moment()[_0xb96d('0x2b')]('x'));}this[_0xb96d('0xc')][_0x571bc8[_0xb96d('0x2e')]]['state']=_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]();logger['debug'](_0xb96d('0x37'),util['inspect'](this[_0xb96d('0xc')][_0x571bc8['device']],{'showHidden':![],'depth':null}));this[_0xb96d('0x1f')](util[_0xb96d('0x2b')](_0xb96d('0x2c'),this[_0xb96d('0xc')][_0x571bc8['device']]['name']),_0xb96d('0x2d'),this[_0xb96d('0xc')][_0x571bc8[_0xb96d('0x2e')]]);}else if(_[_0xb96d('0x38')](_0x571bc8[_0xb96d('0x2e')],'Local')){var _0x547c8a=_0x571bc8[_0xb96d('0x2e')];var _0x39c146=_0x547c8a[_0xb96d('0x39')](_0x547c8a['indexOf']('/')+0x1,_0x547c8a[_0xb96d('0x3a')]('@'));var _0x7973e9=_[_0xb96d('0x24')](this['agents'],function(_0x2ee19e){return _0x2ee19e[_0xb96d('0x3b')]==_0x39c146||_0x2ee19e['phone']==_0x39c146||_0x2ee19e[_0xb96d('0x3c')]==_0x39c146;});if(_0x7973e9){if(_0x7973e9[_0xb96d('0x23')]!==_0x571bc8[_0xb96d('0x23')]['toLowerCase']()){_0x7973e9['stateTime']=_[_0xb96d('0x33')](moment()[_0xb96d('0x2b')]('x'));}_0x7973e9[_0xb96d('0x23')]=_0x571bc8[_0xb96d('0x23')][_0xb96d('0x30')]();_0x7973e9[_0xb96d('0x3d')]=!![];_0x7973e9[_0xb96d('0x32')](_0x571bc8);}}}}catch(_0x34d7bf){logger['error'](_0xb96d('0x3e'),util[_0xb96d('0x1a')](_0x34d7bf,{'showHidden':![],'depth':null}));}};UserReport[_0xb96d('0x1d')][_0xb96d('0x3f')]=function(_0x581eb8){try{if(this['isNotNull'](_0x581eb8)&&this[_0xb96d('0x20')](_0x581eb8[_0xb96d('0x14')])){logger[_0xb96d('0x21')](_0xb96d('0x40'),_0x581eb8[_0xb96d('0x41')],_0x581eb8[_0xb96d('0x42')],_0x581eb8[_0xb96d('0x14')]);logger[_0xb96d('0x29')](_0xb96d('0x43'),util[_0xb96d('0x1a')](_0x581eb8,{'showHidden':![],'depth':null}));if(this[_0xb96d('0xd')][_0x581eb8[_0xb96d('0x41')]]){if(!this[_0xb96d('0xd')][_0x581eb8['peer']][_0xb96d('0x3d')]||_0x581eb8[_0xb96d('0x14')][_0xb96d('0x30')]()=='registered'){this[_0xb96d('0xd')][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x3d')]=![];this['agents'][_0x581eb8[_0xb96d('0x41')]]['status']=_0x581eb8[_0xb96d('0x14')][_0xb96d('0x30')]();this[_0xb96d('0xd')][_0x581eb8['peer']]['address']=_0x581eb8[_0xb96d('0x42')];this[_0xb96d('0xd')][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x32')](_0x581eb8);}}else if(this['telephones'][_0x581eb8[_0xb96d('0x41')]]){this['telephones'][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x44')]=_0x581eb8[_0xb96d('0x14')][_0xb96d('0x30')]();this['telephones'][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x42')]=_0x581eb8[_0xb96d('0x42')];logger['debug'](_0xb96d('0x45'),util['inspect'](this[_0xb96d('0xe')][_0x581eb8[_0xb96d('0x41')]],{'showHidden':![],'depth':null}));this[_0xb96d('0x1f')](util[_0xb96d('0x2b')](_0xb96d('0x35'),this[_0xb96d('0xe')][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x36')]),_0xb96d('0x46'),this[_0xb96d('0xe')][_0x581eb8[_0xb96d('0x41')]]);}else if(this[_0xb96d('0xc')][_0x581eb8[_0xb96d('0x41')]]){this[_0xb96d('0xc')][_0x581eb8['peer']]['status']=_0x581eb8['peerstatus'][_0xb96d('0x30')]();this[_0xb96d('0xc')][_0x581eb8['peer']][_0xb96d('0x42')]=_0x581eb8['address'];logger[_0xb96d('0x29')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xb96d('0x1a')](this[_0xb96d('0xc')][_0x581eb8[_0xb96d('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xb96d('0x2b')](_0xb96d('0x2c'),this[_0xb96d('0xc')][_0x581eb8[_0xb96d('0x41')]][_0xb96d('0x36')]),_0xb96d('0x2d'),this[_0xb96d('0xc')][_0x581eb8[_0xb96d('0x41')]]);}}}catch(_0x502165){logger[_0xb96d('0x18')](_0xb96d('0x43'),util['inspect'](_0x502165,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index 6e0d37f..0732558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a02=['[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','talktime','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','channels','voiceChannels','agents','agentcalled','syncAgentCalled','bind','syncAgentConnect','agentringnoanswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','interface','destuniqueid','voiceQueues','queue','format','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','inbound','voice','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','routealias','pick','destconnectedlinenum','name','accountcode','custom:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','acwtime','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','variables'];(function(_0x2189a5,_0x5abd42){var _0x418db7=function(_0x500e2a){while(--_0x500e2a){_0x2189a5['push'](_0x2189a5['shift']());}};_0x418db7(++_0x5abd42);}(_0x8a02,0x16c));var _0x28a0=function(_0x28d040,_0x13a8ec){_0x28d040=_0x28d040-0x0;var _0x3547c1=_0x8a02[_0x28d040];return _0x3547c1;};'use strict';var _=require('lodash');var moment=require(_0x28a0('0x0'));var util=require('util');var Redis=require(_0x28a0('0x1'));var config=require(_0x28a0('0x2'));var logger=require(_0x28a0('0x3'))(_0x28a0('0x4'));var ami=require(_0x28a0('0x5'));config['redis']=_[_0x28a0('0x6')](config[_0x28a0('0x7')],{'host':_0x28a0('0x8'),'port':0x18eb});var io=require(_0x28a0('0x9'))(new Redis(config[_0x28a0('0x7')]));function VoiceAgentReport(_0x1a5860){this[_0x28a0('0xa')]={};this[_0x28a0('0xb')]=_0x1a5860['channels'];this['voiceQueues']=_0x1a5860['voiceQueues'];this[_0x28a0('0xc')]=_0x1a5860[_0x28a0('0xc')];this['variables']={};ami['on'](_0x28a0('0xd'),this[_0x28a0('0xe')][_0x28a0('0xf')](this));ami['on']('agentconnect',this[_0x28a0('0x10')][_0x28a0('0xf')](this));ami['on'](_0x28a0('0x11'),this['syncAgentRingNoAnswer'][_0x28a0('0xf')](this));ami['on']('queuecallerabandon',this[_0x28a0('0x12')]['bind'](this));ami['on'](_0x28a0('0x13'),this[_0x28a0('0x14')][_0x28a0('0xf')](this));ami['on'](_0x28a0('0x15'),this[_0x28a0('0x16')][_0x28a0('0xf')](this));ami['on'](_0x28a0('0x17'),this['syncHangup']['bind'](this));ami['on']('musiconholdstart',this[_0x28a0('0x18')]['bind'](this));ami['on'](_0x28a0('0x19'),this[_0x28a0('0x1a')][_0x28a0('0xf')](this));ami['on'](_0x28a0('0x1b'),this[_0x28a0('0x1c')][_0x28a0('0xf')](this));ami['on'](_0x28a0('0x1d'),this[_0x28a0('0x1e')][_0x28a0('0xf')](this));}VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x20')]=function(_0x5db4cf,_0x506488,_0x49d7fb){io['to'](_0x5db4cf)[_0x28a0('0x20')](_0x506488,_0x49d7fb);};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x21')]=function(_0x185212){return _0x185212!==null&&!_[_0x28a0('0x22')](_0x185212);};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0xe')]=function(_0x414aae){try{if(this['isNotNull'](_0x414aae)){logger[_0x28a0('0x23')](_0x28a0('0x24'),_0x414aae[_0x28a0('0x25')],_0x414aae[_0x28a0('0x26')],_0x414aae['destuniqueid']);logger[_0x28a0('0x27')](_0x28a0('0x28'),_0x414aae[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x414aae,{'showHidden':![],'depth':null}));if(_[_0x28a0('0x22')](this[_0x28a0('0xa')][_0x414aae['uniqueid']])){this[_0x28a0('0xa')][_0x414aae[_0x28a0('0x25')]]={};}var _0x486ad0=this[_0x28a0('0xc')][_0x414aae[_0x28a0('0x2a')]];var _0x309857=this[_0x28a0('0xa')][_0x414aae[_0x28a0('0x25')]][_0x414aae[_0x28a0('0x2b')]];var _0x4cbb76=this[_0x28a0('0x2c')][_0x414aae[_0x28a0('0x2d')]];var _0x2dac00=this['variables'][_0x414aae[_0x28a0('0x25')]];if(_[_0x28a0('0x22')](_0x309857)){_0x309857={'agentcalledAt':moment()[_0x28a0('0x2e')](_0x28a0('0x2f')),'lastevent':'called','mandatoryDisposition':_0x4cbb76&&_0x4cbb76[_0x28a0('0x30')]?_0x4cbb76[_0x28a0('0x30')]:![],'type':_0x4cbb76&&_0x4cbb76['type']?_0x4cbb76['type']:_0x28a0('0x31'),'variables':_0x2dac00,'motionChannel':_0x28a0('0x32')};}_[_0x28a0('0x33')](_0x309857,_[_0x28a0('0x34')](_0x414aae,[_0x28a0('0x35'),_0x28a0('0x36')]));this[_0x28a0('0xa')][_0x414aae[_0x28a0('0x25')]][_0x414aae[_0x28a0('0x2b')]]=_0x309857;logger[_0x28a0('0x27')](_0x28a0('0x37'),_0x414aae['uniqueid'],util[_0x28a0('0x29')](_0x309857,{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',_0x309857);var _0x3f2bce={'id':_0x486ad0['id'],'calleridnum':_0x309857[_0x28a0('0x38')],'queue':_0x309857[_0x28a0('0x2d')],'variables':_0x309857['variables'],'uniqueid':_0x414aae['uniqueid']};logger[_0x28a0('0x27')](_0x28a0('0x39'),_0x414aae[_0x28a0('0x25')],util['inspect'](_0x3f2bce,{'showHidden':![],'depth':null}));this[_0x28a0('0x20')](util[_0x28a0('0x2e')](_0x28a0('0x3a'),_0x414aae['membername']),'user:called',_0x3f2bce);}}catch(_0x4a5de1){logger['error']('[%s][voiceAgentReport][agentcalled]',_0x414aae['uniqueid'],util['inspect'](_0x4a5de1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x10')]=function(_0x4cfd86){try{if(this[_0x28a0('0x21')](_0x4cfd86)){if(this[_0x28a0('0xa')][_0x4cfd86['uniqueid']]){for(var _0x2d30cc in this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]]){if(this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x28a0('0x3b')](_0x2d30cc)){if(_0x4cfd86['destuniqueid']===_0x2d30cc){logger[_0x28a0('0x23')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x4cfd86[_0x28a0('0x25')],_0x4cfd86[_0x28a0('0x26')],_0x4cfd86[_0x28a0('0x2b')]);this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x3c')]=moment()[_0x28a0('0x2e')](_0x28a0('0x2f'));this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x3d')]=_0x4cfd86[_0x28a0('0x3d')];this[_0x28a0('0xa')][_0x4cfd86['uniqueid']][_0x2d30cc][_0x28a0('0x3e')]=_0x4cfd86[_0x28a0('0x3e')];this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x3f')]=_0x4cfd86[_0x28a0('0x3f')];this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x40')]=_0x4cfd86[_0x28a0('0x40')];this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x41')]=_0x4cfd86[_0x28a0('0x41')];this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc]['lastevent']=_0x28a0('0x42');if(this[_0x28a0('0xb')][this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x25')]]){var _0x607a6b=this[_0x28a0('0xb')][this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x25')]]['routealias'];this[_0x28a0('0xa')][_0x4cfd86['uniqueid']][_0x2d30cc][_0x28a0('0x43')]=_0x607a6b;_0x4cfd86[_0x28a0('0x43')]=_0x607a6b;}_['merge'](this[_0x28a0('0xc')][_0x4cfd86['interface']],_[_0x28a0('0x44')](_0x4cfd86,[_0x28a0('0x2d'),_0x28a0('0x45'),_0x28a0('0x43')]));var _0x36ed5e=this[_0x28a0('0xc')][_0x4cfd86[_0x28a0('0x2a')]];var _0x4ca0a7={'id':_0x36ed5e['id'],'name':_0x36ed5e[_0x28a0('0x46')],'agentconnected':!![],'destaccountcode':_0x36ed5e[_0x28a0('0x47')],'destconnectedlinenum':this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x4cfd86[_0x28a0('0x2b')]]['exten'],'queue':this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x4cfd86[_0x28a0('0x2b')]][_0x28a0('0x2d')],'routealias':this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x4cfd86['destuniqueid']][_0x28a0('0x43')],'uniqueid':this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x4cfd86[_0x28a0('0x2b')]]['uniqueid']};ami[_0x28a0('0x20')](_0x28a0('0x48'),this[_0x28a0('0xa')][_0x4cfd86['uniqueid']][_0x4cfd86[_0x28a0('0x2b')]]);this['emit'](util[_0x28a0('0x2e')](_0x28a0('0x3a'),_0x4cfd86[_0x28a0('0x26')]),'user:agentconnect',_0x4ca0a7);}else if(!this['channels'][_0x4cfd86['uniqueid']][_0x2d30cc][_0x28a0('0x11')]&&!this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x13')]){logger['info'](_0x28a0('0x49'),_0x4cfd86[_0x28a0('0x25')],this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x26')],_0x2d30cc);this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x11')]=!![];this[_0x28a0('0xa')][_0x4cfd86['uniqueid']][_0x2d30cc][_0x28a0('0x4a')]=moment()['format'](_0x28a0('0x2f'));this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x4b')]=_0x4cfd86[_0x28a0('0x2b')];this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x4c')]=_0x4cfd86[_0x28a0('0x26')];this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc]['lastevent']='answered_elsewhere';this['channels'][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc][_0x28a0('0x4d')]='answered_elsewhere';logger[_0x28a0('0x27')](_0x28a0('0x4e'),_0x4cfd86[_0x28a0('0x25')],util[_0x28a0('0x29')](this[_0x28a0('0xa')][_0x4cfd86[_0x28a0('0x25')]][_0x2d30cc],{'showHidden':![],'depth':null}));ami['emit'](_0x28a0('0x4f'),this['channels'][_0x4cfd86['uniqueid']][_0x2d30cc]);}else{logger[_0x28a0('0x27')]('[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken',_0x4cfd86[_0x28a0('0x25')]);}}}}}}catch(_0x30fac6){logger[_0x28a0('0x50')](_0x28a0('0x51'),_0x4cfd86['uniqueid'],util[_0x28a0('0x29')](_0x30fac6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')]['syncAgentRingNoAnswer']=function(_0x230cd2){try{if(this[_0x28a0('0x21')](_0x230cd2)){logger[_0x28a0('0x27')](_0x28a0('0x52'),_0x230cd2[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x230cd2,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x230cd2[_0x28a0('0x25')]]&&this[_0x28a0('0xa')][_0x230cd2[_0x28a0('0x25')]][_0x230cd2['destuniqueid']]){logger[_0x28a0('0x23')](_0x28a0('0x53'),_0x230cd2[_0x28a0('0x25')],_0x230cd2[_0x28a0('0x26')],_0x230cd2['destuniqueid']);var _0x4aecb3=this[_0x28a0('0xc')][_0x230cd2[_0x28a0('0x2a')]];var _0x3f0ac0=this[_0x28a0('0xa')][_0x230cd2['uniqueid']][_0x230cd2[_0x28a0('0x2b')]];_0x3f0ac0[_0x28a0('0x11')]=!![];_0x3f0ac0['agentringnoanswerAt']=moment()[_0x28a0('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');_0x3f0ac0[_0x28a0('0x54')]=_0x28a0('0x55');_0x3f0ac0[_0x28a0('0x4d')]=_0x28a0('0x55');var _0x5944f2={'id':_0x4aecb3['id'],'name':_0x4aecb3[_0x28a0('0x46')],'queue':_0x3f0ac0[_0x28a0('0x2d')],'uniqueid':_0x3f0ac0[_0x28a0('0x25')]};logger[_0x28a0('0x27')](_0x28a0('0x56'),_0x230cd2[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x5944f2,{'showHidden':![],'depth':null}));this[_0x28a0('0x20')](util['format'](_0x28a0('0x3a'),_0x4aecb3[_0x28a0('0x46')]),_0x28a0('0x57'),_0x5944f2);ami[_0x28a0('0x20')](_0x28a0('0x58'),_0x3f0ac0);}}}catch(_0x93b3da){logger[_0x28a0('0x50')](_0x28a0('0x59'),_0x230cd2[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x93b3da,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x12')]=function(_0x257b2e){try{if(this[_0x28a0('0x21')](_0x257b2e)){logger['debug']('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x257b2e['uniqueid'],util[_0x28a0('0x29')](_0x257b2e,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x257b2e['uniqueid']]){for(var _0x20e4a3 in this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]]){if(this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x28a0('0x3b')](_0x20e4a3)&&!this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3][_0x28a0('0x11')]&&!this[_0x28a0('0xa')][_0x257b2e['uniqueid']][_0x20e4a3][_0x28a0('0x13')]){logger[_0x28a0('0x23')](_0x28a0('0x5a'),_0x257b2e[_0x28a0('0x25')],this['channels'][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3]['membername'],_0x20e4a3);this['channels'][_0x257b2e['uniqueid']][_0x20e4a3]['agentringnoanswer']=!![];this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3][_0x28a0('0x4a')]=moment()[_0x28a0('0x2e')](_0x28a0('0x2f'));this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3]['lastevent']=_0x28a0('0x5b');this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3][_0x28a0('0x4d')]=_0x28a0('0x5b');logger['debug'](_0x28a0('0x5c'),_0x257b2e['uniqueid'],util[_0x28a0('0x29')](this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3],{'showHidden':![],'depth':null}));ami[_0x28a0('0x20')]('custom:agentqueuecallerabandon',this[_0x28a0('0xa')][_0x257b2e[_0x28a0('0x25')]][_0x20e4a3]);}}}}}catch(_0x390937){logger[_0x28a0('0x50')](_0x28a0('0x5d'),_0x257b2e[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x390937,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x14')]=function(_0x4a95a8){try{if(this[_0x28a0('0x21')](_0x4a95a8)){logger[_0x28a0('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x4a95a8[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x4a95a8,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x4a95a8['uniqueid']]){for(var _0x597ffb in this['channels'][_0x4a95a8[_0x28a0('0x25')]]){if(this['channels'][_0x4a95a8['uniqueid']][_0x28a0('0x3b')](_0x597ffb)){if(this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x3c')]&&!this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x13')]){logger[_0x28a0('0x23')](_0x28a0('0x5e'),_0x4a95a8[_0x28a0('0x25')],this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x26')],_0x597ffb);this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x13')]=!![];this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x5f')]=moment()[_0x28a0('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb]['lastevent']=_0x28a0('0x60');this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb]['reason']=_0x4a95a8['reason']==_0x28a0('0x61')?_0x28a0('0x62'):_0x4a95a8[_0x28a0('0x4d')];this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb]['talktime']=_0x4a95a8['talktime'];if(this[_0x28a0('0x2c')][_0x4a95a8['queue']]&&this[_0x28a0('0x2c')][_0x4a95a8['queue']]['acw']){this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x63')]=this[_0x28a0('0x2c')][_0x4a95a8[_0x28a0('0x2d')]][_0x28a0('0x64')];this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb][_0x28a0('0x65')]=!![];}this[_0x28a0('0xc')][_0x4a95a8[_0x28a0('0x2a')]]=_[_0x28a0('0x34')](this[_0x28a0('0xc')][_0x4a95a8[_0x28a0('0x2a')]],['queue',_0x28a0('0x45')]);logger[_0x28a0('0x27')](_0x28a0('0x66'),_0x4a95a8[_0x28a0('0x25')],util[_0x28a0('0x29')](this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb],{'showHidden':![],'depth':null}));ami['emit'](_0x28a0('0x67'),this[_0x28a0('0xa')][_0x4a95a8[_0x28a0('0x25')]][_0x597ffb]);logger[_0x28a0('0x27')](_0x28a0('0x68'),_0x4a95a8['uniqueid'],util[_0x28a0('0x29')]({'id':this[_0x28a0('0xc')][_0x4a95a8[_0x28a0('0x2a')]]['id'],'destaccountcode':_0x4a95a8[_0x28a0('0x69')]},{'showHidden':![],'depth':null}));this[_0x28a0('0x20')](util[_0x28a0('0x2e')](_0x28a0('0x3a'),_0x4a95a8[_0x28a0('0x26')]),'user:agentcomplete',{'id':this['agents'][_0x4a95a8[_0x28a0('0x2a')]]['id'],'destaccountcode':Number(_0x4a95a8['destaccountcode'])});}}}}}}catch(_0x1a5cac){logger[_0x28a0('0x50')](_0x28a0('0x6a'),_0x4a95a8[_0x28a0('0x25')],util['inspect'](_0x1a5cac,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x28a0('0x16')]=function(_0x2eeb4a){try{if(this['isNotNull'](_0x2eeb4a)){logger[_0x28a0('0x27')](_0x28a0('0x6b'),_0x2eeb4a[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x2eeb4a,{'showHidden':![],'depth':null}));this[_0x28a0('0x6c')](_0x2eeb4a['uniqueid'],_[_0x28a0('0x6d')](_0x2eeb4a[_0x28a0('0x6e')])[0x0],_0x2eeb4a['value']);if(this['channels'][_0x2eeb4a[_0x28a0('0x25')]]){for(var _0x199bc5 in this[_0x28a0('0xa')][_0x2eeb4a[_0x28a0('0x25')]]){if(this['channels'][_0x2eeb4a['uniqueid']][_0x28a0('0x3b')](_0x199bc5)){logger[_0x28a0('0x23')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x2eeb4a['uniqueid'],_0x199bc5,_[_0x28a0('0x6d')](_0x2eeb4a['variable'])[0x0],_0x2eeb4a[_0x28a0('0x6f')]);if(_[_0x28a0('0x22')](this['channels'][_0x2eeb4a[_0x28a0('0x25')]][_0x199bc5]['variables'])){this[_0x28a0('0xa')][_0x2eeb4a['uniqueid']][_0x199bc5][_0x28a0('0x70')]={};}this[_0x28a0('0xa')][_0x2eeb4a[_0x28a0('0x25')]][_0x199bc5][_0x28a0('0x70')]=this['variables'][_0x2eeb4a['uniqueid']];}}}}}catch(_0x4f3c0e){logger[_0x28a0('0x50')](_0x28a0('0x71'),_0x2eeb4a[_0x28a0('0x25')],util['inspect'](_0x4f3c0e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x6c')]=function(_0x4fc6cb,_0x54e065,_0x2b46f0){var _0x46b454=[_0x28a0('0x72'),_0x28a0('0x73'),_0x28a0('0x74'),'rtpaudioqosjitterbridged',_0x28a0('0x75'),_0x28a0('0x76'),'rtpaudioqosrtt',_0x28a0('0x77'),_0x28a0('0x78'),_0x28a0('0x79'),'bridgepeer',_0x28a0('0x7a'),_0x28a0('0x7b'),'memberdynamic',_0x28a0('0x7c'),_0x28a0('0x7d'),_0x28a0('0x26'),_0x28a0('0x7e'),_0x28a0('0x7f')];if(!_[_0x28a0('0x80')](_0x54e065)&&!_[_0x28a0('0x81')](_0x46b454,_0x54e065)){if(_['isUndefined'](this[_0x28a0('0x70')][_0x4fc6cb])){this[_0x28a0('0x70')][_0x4fc6cb]={};}this[_0x28a0('0x70')][_0x4fc6cb][_0x54e065]=_0x2b46f0;}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x82')]=function(_0x376fb5){try{if(this[_0x28a0('0x21')](_0x376fb5)){logger[_0x28a0('0x27')](_0x28a0('0x83'),_0x376fb5['uniqueid'],util['inspect'](_0x376fb5,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x376fb5[_0x28a0('0x25')]]){for(var _0x1b4570 in this['channels'][_0x376fb5[_0x28a0('0x25')]]){if(this[_0x28a0('0xa')][_0x376fb5['uniqueid']][_0x28a0('0x3b')](_0x1b4570)){if(this[_0x28a0('0xa')][_0x376fb5[_0x28a0('0x25')]][_0x1b4570]['reason']==_0x28a0('0x61')&&this[_0x28a0('0xa')][_0x376fb5[_0x28a0('0x25')]][_0x1b4570]['agentcomplete']){logger[_0x28a0('0x23')](_0x28a0('0x84'),_0x376fb5[_0x28a0('0x25')],_0x1b4570);this[_0x28a0('0xa')][_0x376fb5['uniqueid']][_0x1b4570]['agentcompleteAt']=moment()[_0x28a0('0x2e')](_0x28a0('0x2f'));}}}logger['debug'](_0x28a0('0x85'),_0x376fb5[_0x28a0('0x25')],util[_0x28a0('0x29')](_[_0x28a0('0x86')](this['channels'][_0x376fb5[_0x28a0('0x25')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x28a0('0x87'),_[_0x28a0('0x86')](this[_0x28a0('0xa')][_0x376fb5[_0x28a0('0x25')]]));delete this[_0x28a0('0xa')][_0x376fb5['uniqueid']];}if(this[_0x28a0('0x70')][_0x376fb5[_0x28a0('0x25')]]){delete this[_0x28a0('0x70')][_0x376fb5[_0x28a0('0x25')]];}}}catch(_0x22b1f3){logger[_0x28a0('0x50')](_0x28a0('0x88'),_0x376fb5[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x22b1f3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x1c')]=function(_0x41fbe0){try{if(this[_0x28a0('0x21')](_0x41fbe0)){logger[_0x28a0('0x27')](_0x28a0('0x89'),_0x41fbe0[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x41fbe0,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]]){for(var _0x377911 in this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]]){if(this['channels'][_0x41fbe0['transfereeuniqueid']]['hasOwnProperty'](_0x377911)){if(_0x41fbe0[_0x28a0('0x8b')]===_0x377911){logger['info']('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x41fbe0[_0x28a0('0x25')],this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]][_0x377911][_0x28a0('0x26')],_0x377911);var _0x3d8752=moment();this['channels'][_0x41fbe0['transfereeuniqueid']][_0x377911][_0x28a0('0x13')]=!![];this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]][_0x377911][_0x28a0('0x5f')]=moment()[_0x28a0('0x2e')](_0x28a0('0x2f'));this[_0x28a0('0xa')][_0x41fbe0['transfereeuniqueid']][_0x377911][_0x28a0('0x54')]=_0x28a0('0x60');this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]][_0x377911][_0x28a0('0x4d')]=_0x28a0('0x61');this['channels'][_0x41fbe0['transfereeuniqueid']][_0x377911]['talktime']=_0x3d8752[_0x28a0('0x8c')](this[_0x28a0('0xa')][_0x41fbe0['transfereeuniqueid']][_0x377911][_0x28a0('0x3c')],_0x28a0('0x8d'));}}}}if(this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8e')]]){var _0x4c5737=this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8e')]];this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8e')]]=this[_0x28a0('0xa')][_0x41fbe0[_0x28a0('0x8a')]];this['channels'][_0x41fbe0[_0x28a0('0x8a')]]=_0x4c5737;}}}catch(_0x6e55b5){logger[_0x28a0('0x50')](_0x28a0('0x8f'),_0x41fbe0[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x6e55b5,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncBlindTransfer']=function(_0x360357){try{if(this[_0x28a0('0x21')](_0x360357)){logger['debug'](_0x28a0('0x90'),_0x360357[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x360357,{'showHidden':![],'depth':null}));if(this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]]){for(var _0x29c2d3 in this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]]){if(this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]][_0x28a0('0x3b')](_0x29c2d3)){if(_0x360357[_0x28a0('0x91')]===_0x29c2d3){logger[_0x28a0('0x23')](_0x28a0('0x92'),_0x360357[_0x28a0('0x25')],this['channels'][_0x360357[_0x28a0('0x8a')]][_0x29c2d3][_0x28a0('0x26')],_0x29c2d3);var _0x48a390=moment();this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]][_0x29c2d3]['agentcomplete']=!![];this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]][_0x29c2d3][_0x28a0('0x5f')]=_0x48a390;this[_0x28a0('0xa')][_0x360357[_0x28a0('0x8a')]][_0x29c2d3][_0x28a0('0x54')]=_0x28a0('0x60');this[_0x28a0('0xa')][_0x360357['transfereeuniqueid']][_0x29c2d3][_0x28a0('0x4d')]=_0x28a0('0x61');this['channels'][_0x360357[_0x28a0('0x8a')]][_0x29c2d3][_0x28a0('0x93')]=_0x48a390[_0x28a0('0x8c')](this[_0x28a0('0xa')][_0x360357['transfereeuniqueid']][_0x29c2d3][_0x28a0('0x3c')],_0x28a0('0x8d'));}}}}}}catch(_0x5a1cc0){logger[_0x28a0('0x50')](_0x28a0('0x94'),_0x360357[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x5a1cc0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x18')]=function(_0x4ffde6){var _0x3f383c='';try{if(this[_0x28a0('0x21')](_0x4ffde6)){logger[_0x28a0('0x27')](_0x28a0('0x95'),_0x4ffde6[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x4ffde6,{'showHidden':![],'depth':null}));if(_0x4ffde6[_0x28a0('0x96')]){_0x3f383c=_0x4ffde6[_0x28a0('0x96')]['substring'](0x0,_0x4ffde6[_0x28a0('0x96')][_0x28a0('0x97')]('-'));if(this[_0x28a0('0xc')][_0x3f383c]){logger[_0x28a0('0x23')](_0x28a0('0x98'),_0x4ffde6[_0x28a0('0x25')],_0x3f383c);this[_0x28a0('0xc')][_0x3f383c][_0x28a0('0x99')]=!![];}}}}catch(_0x5591b3){logger[_0x28a0('0x50')](_0x28a0('0x9a'),_0x4ffde6[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x5591b3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x28a0('0x1f')][_0x28a0('0x1a')]=function(_0x39f335){var _0x3b0e30='';try{if(this[_0x28a0('0x21')](_0x39f335)){logger[_0x28a0('0x27')](_0x28a0('0x9b'),_0x39f335['uniqueid'],util['inspect'](_0x39f335,{'showHidden':![],'depth':null}));if(_0x39f335[_0x28a0('0x96')]){_0x3b0e30=_0x39f335[_0x28a0('0x96')]['substring'](0x0,_0x39f335[_0x28a0('0x96')][_0x28a0('0x97')]('-'));if(this[_0x28a0('0xc')][_0x3b0e30]){logger[_0x28a0('0x23')](_0x28a0('0x9c'),_0x39f335['uniqueid'],_0x3b0e30);this[_0x28a0('0xc')][_0x3b0e30][_0x28a0('0x99')]=![];}}}}catch(_0x359aed){logger[_0x28a0('0x50')](_0x28a0('0x9d'),_0x39f335[_0x28a0('0x25')],util[_0x28a0('0x29')](_0x359aed,{'showHidden':![],'depth':null}));}};module[_0x28a0('0x9e')]=VoiceAgentReport;
\ No newline at end of file
+var _0x851a=['user:%s','user:agentconnect','answeredelsewheremembername','reason','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','agentringnoanswer','agentringnoanswerAt','rejected','name','user:agentringnoanswer','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:','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','agentconnectAt','agentcompleteAt','complete','transfer','talktime','acw','acwTimeout','agentacw','destconnectedlinenum','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','syncVarSet','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variable','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','agentcalled','bind','agentconnect','syncAgentConnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','hangup','syncHangup','musiconholdstart','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','interface','queue','variables','format','called','mandatoryDisposition','type','inbound','assign','omit','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:called','[%s][voiceAgentReport][agentcalled]','isNotNull','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','pick','accountcode','exten','custom:agentconnect'];(function(_0x403e1e,_0x1a6f69){var _0x500abc=function(_0x59e17e){while(--_0x59e17e){_0x403e1e['push'](_0x403e1e['shift']());}};_0x500abc(++_0x1a6f69);}(_0x851a,0xfa));var _0xa851=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x851a[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xa851('0x0'));var moment=require(_0xa851('0x1'));var util=require(_0xa851('0x2'));var Redis=require(_0xa851('0x3'));var config=require(_0xa851('0x4'));var logger=require(_0xa851('0x5'))(_0xa851('0x6'));var ami=require('../ami');config[_0xa851('0x7')]=_[_0xa851('0x8')](config['redis'],{'host':_0xa851('0x9'),'port':0x18eb});var io=require(_0xa851('0xa'))(new Redis(config[_0xa851('0x7')]));function VoiceAgentReport(_0x30bef0){this[_0xa851('0xb')]={};this[_0xa851('0xc')]=_0x30bef0['channels'];this[_0xa851('0xd')]=_0x30bef0[_0xa851('0xd')];this[_0xa851('0xe')]=_0x30bef0['agents'];this['variables']={};ami['on'](_0xa851('0xf'),this['syncAgentCalled'][_0xa851('0x10')](this));ami['on'](_0xa851('0x11'),this[_0xa851('0x12')][_0xa851('0x10')](this));ami['on']('agentringnoanswer',this[_0xa851('0x13')][_0xa851('0x10')](this));ami['on'](_0xa851('0x14'),this[_0xa851('0x15')][_0xa851('0x10')](this));ami['on'](_0xa851('0x16'),this['syncAgentComplete'][_0xa851('0x10')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on'](_0xa851('0x17'),this[_0xa851('0x18')][_0xa851('0x10')](this));ami['on'](_0xa851('0x19'),this['syncMusicOnHoldStart'][_0xa851('0x10')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0xa851('0x10')](this));ami['on']('attendedtransfer',this[_0xa851('0x1a')]['bind'](this));ami['on'](_0xa851('0x1b'),this[_0xa851('0x1c')][_0xa851('0x10')](this));}VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x1e')]=function(_0xbd4fbd,_0x7a209f,_0x33f8a9){io['to'](_0xbd4fbd)['emit'](_0x7a209f,_0x33f8a9);};VoiceAgentReport[_0xa851('0x1d')]['isNotNull']=function(_0x514169){return _0x514169!==null&&!_['isUndefined'](_0x514169);};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x1f')]=function(_0x1f28a3){try{if(this['isNotNull'](_0x1f28a3)){logger[_0xa851('0x20')](_0xa851('0x21'),_0x1f28a3[_0xa851('0x22')],_0x1f28a3[_0xa851('0x23')],_0x1f28a3[_0xa851('0x24')]);logger[_0xa851('0x25')](_0xa851('0x26'),_0x1f28a3['uniqueid'],util[_0xa851('0x27')](_0x1f28a3,{'showHidden':![],'depth':null}));if(_[_0xa851('0x28')](this[_0xa851('0xb')][_0x1f28a3[_0xa851('0x22')]])){this[_0xa851('0xb')][_0x1f28a3[_0xa851('0x22')]]={};}var _0x1d951c=this['agents'][_0x1f28a3[_0xa851('0x29')]];var _0x11a1df=this[_0xa851('0xb')][_0x1f28a3[_0xa851('0x22')]][_0x1f28a3[_0xa851('0x24')]];var _0x43d928=this[_0xa851('0xd')][_0x1f28a3[_0xa851('0x2a')]];var _0xddb68f=this[_0xa851('0x2b')][_0x1f28a3[_0xa851('0x22')]];if(_[_0xa851('0x28')](_0x11a1df)){_0x11a1df={'agentcalledAt':moment()[_0xa851('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xa851('0x2d'),'mandatoryDisposition':_0x43d928&&_0x43d928[_0xa851('0x2e')]?_0x43d928[_0xa851('0x2e')]:![],'type':_0x43d928&&_0x43d928[_0xa851('0x2f')]?_0x43d928['type']:_0xa851('0x30'),'variables':_0xddb68f,'motionChannel':'voice'};}Object[_0xa851('0x31')](_0x11a1df,_[_0xa851('0x32')](_0x1f28a3,[_0xa851('0x33'),'privilege']));this[_0xa851('0xb')][_0x1f28a3[_0xa851('0x22')]][_0x1f28a3[_0xa851('0x24')]]=_0x11a1df;logger[_0xa851('0x25')](_0xa851('0x34'),_0x1f28a3[_0xa851('0x22')],util['inspect'](_0x11a1df,{'showHidden':![],'depth':null}));ami[_0xa851('0x1e')](_0xa851('0x35'),_0x11a1df);var _0x4d1aa6={'id':_0x1d951c['id'],'calleridnum':_0x11a1df[_0xa851('0x36')],'queue':_0x11a1df[_0xa851('0x2a')],'variables':_0x11a1df['variables'],'uniqueid':_0x1f28a3[_0xa851('0x22')]};logger[_0xa851('0x25')](_0xa851('0x37'),_0x1f28a3[_0xa851('0x22')],util['inspect'](_0x4d1aa6,{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x1f28a3[_0xa851('0x23')]),_0xa851('0x38'),_0x4d1aa6);}}catch(_0xfa786b){logger['error'](_0xa851('0x39'),_0x1f28a3[_0xa851('0x22')],util[_0xa851('0x27')](_0xfa786b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x12')]=function(_0x120e57){try{if(this[_0xa851('0x3a')](_0x120e57)){if(this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]]){for(var _0x4012de in this[_0xa851('0xb')][_0x120e57['uniqueid']]){if(this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]]['hasOwnProperty'](_0x4012de)){if(_0x120e57[_0xa851('0x24')]===_0x4012de){logger[_0xa851('0x20')](_0xa851('0x3b'),_0x120e57[_0xa851('0x22')],_0x120e57['membername'],_0x120e57[_0xa851('0x24')]);this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['agentconnectAt']=moment()[_0xa851('0x2c')](_0xa851('0x3c'));this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['connectedlinename']=_0x120e57[_0xa851('0x3d')];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['connectedlinenum']=_0x120e57[_0xa851('0x3e')];this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de][_0xa851('0x3f')]=_0x120e57[_0xa851('0x3f')];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x40')]=_0x120e57['destchannelstatedesc'];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x41')]=_0x120e57['holdtime'];this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de][_0xa851('0x42')]=_0xa851('0x43');if(this[_0xa851('0xc')][this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de]['uniqueid']]){var _0x4487a1=this[_0xa851('0xc')][this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de][_0xa851('0x22')]][_0xa851('0x44')];this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de][_0xa851('0x44')]=_0x4487a1;_0x120e57[_0xa851('0x44')]=_0x4487a1;}_[_0xa851('0x45')](this[_0xa851('0xe')][_0x120e57[_0xa851('0x29')]],_[_0xa851('0x46')](_0x120e57,[_0xa851('0x2a'),'destconnectedlinenum',_0xa851('0x44')]));var _0x96afc8=this[_0xa851('0xe')][_0x120e57[_0xa851('0x29')]];var _0x51256f={'id':_0x96afc8['id'],'name':_0x96afc8['name'],'agentconnected':!![],'destaccountcode':_0x96afc8[_0xa851('0x47')],'destconnectedlinenum':this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x120e57[_0xa851('0x24')]][_0xa851('0x48')],'queue':this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x120e57['destuniqueid']]['queue'],'routealias':this['channels'][_0x120e57[_0xa851('0x22')]][_0x120e57[_0xa851('0x24')]][_0xa851('0x44')],'uniqueid':this['channels'][_0x120e57[_0xa851('0x22')]][_0x120e57[_0xa851('0x24')]][_0xa851('0x22')]};ami[_0xa851('0x1e')](_0xa851('0x49'),this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x120e57[_0xa851('0x24')]]);this[_0xa851('0x1e')](util['format'](_0xa851('0x4a'),_0x120e57[_0xa851('0x23')]),_0xa851('0x4b'),_0x51256f);}else if(!this[_0xa851('0xb')][_0x120e57['uniqueid']][_0x4012de]['agentringnoanswer']&&!this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x16')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x120e57[_0xa851('0x22')],this['channels'][_0x120e57['uniqueid']][_0x4012de]['membername'],_0x4012de);this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['agentringnoanswer']=!![];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['agentringnoanswerAt']=moment()[_0xa851('0x2c')](_0xa851('0x3c'));this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de]['answeredelsewheredestinationuniqueid']=_0x120e57['destuniqueid'];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x4c')]=_0x120e57[_0xa851('0x23')];this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x42')]='answered_elsewhere';this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de][_0xa851('0x4d')]=_0xa851('0x4e');logger[_0xa851('0x25')](_0xa851('0x4f'),_0x120e57['uniqueid'],util[_0xa851('0x27')](this[_0xa851('0xb')][_0x120e57[_0xa851('0x22')]][_0x4012de],{'showHidden':![],'depth':null}));ami[_0xa851('0x1e')](_0xa851('0x50'),this['channels'][_0x120e57[_0xa851('0x22')]][_0x4012de]);}else{logger[_0xa851('0x25')]('[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken',_0x120e57[_0xa851('0x22')]);}}}}}}catch(_0x4d7454){logger[_0xa851('0x51')](_0xa851('0x52'),_0x120e57[_0xa851('0x22')],util[_0xa851('0x27')](_0x4d7454,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x13')]=function(_0x35e6c7){try{if(this['isNotNull'](_0x35e6c7)){logger[_0xa851('0x25')](_0xa851('0x53'),_0x35e6c7['uniqueid'],util[_0xa851('0x27')](_0x35e6c7,{'showHidden':![],'depth':null}));if(this['channels'][_0x35e6c7[_0xa851('0x22')]]&&this[_0xa851('0xb')][_0x35e6c7['uniqueid']][_0x35e6c7[_0xa851('0x24')]]){logger[_0xa851('0x20')](_0xa851('0x54'),_0x35e6c7[_0xa851('0x22')],_0x35e6c7[_0xa851('0x23')],_0x35e6c7['destuniqueid']);var _0x1cff94=this[_0xa851('0xe')][_0x35e6c7['interface']];var _0x25afba=this['channels'][_0x35e6c7[_0xa851('0x22')]][_0x35e6c7[_0xa851('0x24')]];_0x25afba[_0xa851('0x55')]=!![];_0x25afba[_0xa851('0x56')]=moment()['format'](_0xa851('0x3c'));_0x25afba['lastevent']=_0xa851('0x57');_0x25afba[_0xa851('0x4d')]='rejected';var _0x3cf9e5={'id':_0x1cff94['id'],'name':_0x1cff94[_0xa851('0x58')],'queue':_0x25afba['queue'],'uniqueid':_0x25afba[_0xa851('0x22')]};logger[_0xa851('0x25')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x35e6c7[_0xa851('0x22')],util[_0xa851('0x27')](_0x3cf9e5,{'showHidden':![],'depth':null}));this[_0xa851('0x1e')](util[_0xa851('0x2c')](_0xa851('0x4a'),_0x1cff94[_0xa851('0x58')]),_0xa851('0x59'),_0x3cf9e5);ami[_0xa851('0x1e')](_0xa851('0x5a'),_0x25afba);this[_0xa851('0xb')][_0x35e6c7[_0xa851('0x22')]][_0x35e6c7[_0xa851('0x24')]]=Object[_0xa851('0x31')]({},_0x25afba);}}}catch(_0x2f168a){logger['error'](_0xa851('0x5b'),_0x35e6c7[_0xa851('0x22')],util[_0xa851('0x27')](_0x2f168a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x15')]=function(_0x5d93f2){try{if(this[_0xa851('0x3a')](_0x5d93f2)){logger[_0xa851('0x25')](_0xa851('0x5c'),_0x5d93f2[_0xa851('0x22')],util[_0xa851('0x27')](_0x5d93f2,{'showHidden':![],'depth':null}));if(this['channels'][_0x5d93f2[_0xa851('0x22')]]){for(var _0x4d667f in this['channels'][_0x5d93f2[_0xa851('0x22')]]){if(this['channels'][_0x5d93f2[_0xa851('0x22')]][_0xa851('0x5d')](_0x4d667f)&&!this['channels'][_0x5d93f2['uniqueid']][_0x4d667f][_0xa851('0x55')]&&!this[_0xa851('0xb')][_0x5d93f2[_0xa851('0x22')]][_0x4d667f][_0xa851('0x16')]){logger[_0xa851('0x20')](_0xa851('0x5e'),_0x5d93f2[_0xa851('0x22')],this['channels'][_0x5d93f2['uniqueid']][_0x4d667f][_0xa851('0x23')],_0x4d667f);this['channels'][_0x5d93f2['uniqueid']][_0x4d667f][_0xa851('0x55')]=!![];this[_0xa851('0xb')][_0x5d93f2['uniqueid']][_0x4d667f]['agentringnoanswerAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xa851('0xb')][_0x5d93f2[_0xa851('0x22')]][_0x4d667f][_0xa851('0x42')]=_0xa851('0x5f');this[_0xa851('0xb')][_0x5d93f2['uniqueid']][_0x4d667f][_0xa851('0x4d')]='abandoned';logger['debug'](_0xa851('0x60'),_0x5d93f2['uniqueid'],util[_0xa851('0x27')](this[_0xa851('0xb')][_0x5d93f2[_0xa851('0x22')]][_0x4d667f],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0xa851('0xb')][_0x5d93f2['uniqueid']][_0x4d667f]);}}}}}catch(_0x439a32){logger[_0xa851('0x51')](_0xa851('0x61'),_0x5d93f2[_0xa851('0x22')],util[_0xa851('0x27')](_0x439a32,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xa851('0x62')]=function(_0x46ba42){try{if(this[_0xa851('0x3a')](_0x46ba42)){logger[_0xa851('0x25')](_0xa851('0x63'),_0x46ba42[_0xa851('0x22')],util['inspect'](_0x46ba42,{'showHidden':![],'depth':null}));if(this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]]){for(var _0x414dd5 in this[_0xa851('0xb')][_0x46ba42['uniqueid']]){if(this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0xa851('0x5d')](_0x414dd5)){if(this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x64')]&&!this['channels'][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x16')]){logger['info']('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x46ba42[_0xa851('0x22')],this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x23')],_0x414dd5);this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x16')]=!![];this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x65')]=moment()[_0xa851('0x2c')](_0xa851('0x3c'));this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x42')]=_0xa851('0x66');this[_0xa851('0xb')][_0x46ba42['uniqueid']][_0x414dd5][_0xa851('0x4d')]=_0x46ba42['reason']==_0xa851('0x67')?'agent':_0x46ba42[_0xa851('0x4d')];this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5]['talktime']=_0x46ba42[_0xa851('0x68')];if(this[_0xa851('0xd')][_0x46ba42[_0xa851('0x2a')]]&&this[_0xa851('0xd')][_0x46ba42[_0xa851('0x2a')]][_0xa851('0x69')]){this['channels'][_0x46ba42['uniqueid']][_0x414dd5]['acwtime']=this[_0xa851('0xd')][_0x46ba42[_0xa851('0x2a')]][_0xa851('0x6a')];this['channels'][_0x46ba42[_0xa851('0x22')]][_0x414dd5][_0xa851('0x6b')]=!![];}this[_0xa851('0xe')][_0x46ba42[_0xa851('0x29')]]=_['omit'](this[_0xa851('0xe')][_0x46ba42[_0xa851('0x29')]],[_0xa851('0x2a'),_0xa851('0x6c')]);logger['debug'](_0xa851('0x6d'),_0x46ba42['uniqueid'],util[_0xa851('0x27')](this[_0xa851('0xb')][_0x46ba42['uniqueid']][_0x414dd5],{'showHidden':![],'depth':null}));ami[_0xa851('0x1e')]('custom:agentcomplete',this[_0xa851('0xb')][_0x46ba42[_0xa851('0x22')]][_0x414dd5]);logger[_0xa851('0x25')](_0xa851('0x6e'),_0x46ba42[_0xa851('0x22')],util[_0xa851('0x27')]({'id':this[_0xa851('0xe')][_0x46ba42['interface']]['id'],'destaccountcode':_0x46ba42[_0xa851('0x6f')]},{'showHidden':![],'depth':null}));this[_0xa851('0x1e')](util[_0xa851('0x2c')](_0xa851('0x4a'),_0x46ba42[_0xa851('0x23')]),'user:agentcomplete',{'id':this[_0xa851('0xe')][_0x46ba42['interface']]['id'],'destaccountcode':Number(_0x46ba42[_0xa851('0x6f')])});}}}}}}catch(_0x5ae1e9){logger[_0xa851('0x51')](_0xa851('0x70'),_0x46ba42[_0xa851('0x22')],util[_0xa851('0x27')](_0x5ae1e9,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xa851('0x71')]=function(_0x4d748e){try{if(this[_0xa851('0x3a')](_0x4d748e)){logger[_0xa851('0x25')](_0xa851('0x72'),_0x4d748e[_0xa851('0x22')],util[_0xa851('0x27')](_0x4d748e,{'showHidden':![],'depth':null}));this[_0xa851('0x73')](_0x4d748e[_0xa851('0x22')],_[_0xa851('0x74')](_0x4d748e['variable'])[0x0],_0x4d748e[_0xa851('0x75')]);if(this['channels'][_0x4d748e[_0xa851('0x22')]]){for(var _0x15c4e1 in this[_0xa851('0xb')][_0x4d748e[_0xa851('0x22')]]){if(this[_0xa851('0xb')][_0x4d748e[_0xa851('0x22')]][_0xa851('0x5d')](_0x15c4e1)){logger[_0xa851('0x20')](_0xa851('0x76'),_0x4d748e[_0xa851('0x22')],_0x15c4e1,_['keys'](_0x4d748e[_0xa851('0x77')])[0x0],_0x4d748e[_0xa851('0x75')]);if(_[_0xa851('0x28')](this[_0xa851('0xb')][_0x4d748e[_0xa851('0x22')]][_0x15c4e1][_0xa851('0x2b')])){this[_0xa851('0xb')][_0x4d748e['uniqueid']][_0x15c4e1][_0xa851('0x2b')]={};}this[_0xa851('0xb')][_0x4d748e['uniqueid']][_0x15c4e1]['variables']=this[_0xa851('0x2b')][_0x4d748e['uniqueid']];}}}}}catch(_0x512d75){logger[_0xa851('0x51')](_0xa851('0x78'),_0x4d748e[_0xa851('0x22')],util[_0xa851('0x27')](_0x512d75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['addVariable']=function(_0xab8583,_0x22d76d,_0x1ec595){var _0x50ab45=[_0xa851('0x79'),_0xa851('0x7a'),_0xa851('0x7b'),_0xa851('0x7c'),_0xa851('0x7d'),'rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged',_0xa851('0x7e'),_0xa851('0x7f'),_0xa851('0x80'),'bridgepvtcallid','membercalls',_0xa851('0x81'),_0xa851('0x82'),_0xa851('0x83'),_0xa851('0x23'),_0xa851('0x84'),_0xa851('0x85')];if(!_[_0xa851('0x86')](_0x22d76d)&&!_[_0xa851('0x87')](_0x50ab45,_0x22d76d)){if(_[_0xa851('0x28')](this[_0xa851('0x2b')][_0xab8583])){this[_0xa851('0x2b')][_0xab8583]={};}this['variables'][_0xab8583][_0x22d76d]=_0x1ec595;}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x18')]=function(_0x38d3a8){try{if(this[_0xa851('0x3a')](_0x38d3a8)){logger['debug'](_0xa851('0x88'),_0x38d3a8['uniqueid'],util[_0xa851('0x27')](_0x38d3a8,{'showHidden':![],'depth':null}));if(this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]]){for(var _0x46a0b7 in this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]]){if(this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]]['hasOwnProperty'](_0x46a0b7)){if(this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]][_0x46a0b7][_0xa851('0x4d')]==_0xa851('0x67')&&this[_0xa851('0xb')][_0x38d3a8['uniqueid']][_0x46a0b7]['agentcomplete']){logger[_0xa851('0x20')]('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x38d3a8[_0xa851('0x22')],_0x46a0b7);this['channels'][_0x38d3a8[_0xa851('0x22')]][_0x46a0b7][_0xa851('0x65')]=moment()[_0xa851('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0xa851('0x25')](_0xa851('0x89'),_0x38d3a8[_0xa851('0x22')],util['inspect'](_['values'](this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]]),{'showHidden':![],'depth':null}));ami['emit'](_0xa851('0x8a'),_['values'](this[_0xa851('0xb')][_0x38d3a8[_0xa851('0x22')]]));delete this['channels'][_0x38d3a8[_0xa851('0x22')]];}if(this[_0xa851('0x2b')][_0x38d3a8['uniqueid']]){delete this[_0xa851('0x2b')][_0x38d3a8[_0xa851('0x22')]];}}}catch(_0x830f49){logger[_0xa851('0x51')](_0xa851('0x8b'),_0x38d3a8[_0xa851('0x22')],util[_0xa851('0x27')](_0x830f49,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x1a')]=function(_0x25a87e){try{if(this[_0xa851('0x3a')](_0x25a87e)){logger[_0xa851('0x25')](_0xa851('0x8c'),_0x25a87e[_0xa851('0x22')],util[_0xa851('0x27')](_0x25a87e,{'showHidden':![],'depth':null}));if(this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]]){for(var _0x8d8081 in this[_0xa851('0xb')][_0x25a87e['transfereeuniqueid']]){if(this['channels'][_0x25a87e[_0xa851('0x8d')]][_0xa851('0x5d')](_0x8d8081)){if(_0x25a87e['origtransfereruniqueid']===_0x8d8081){logger[_0xa851('0x20')](_0xa851('0x8e'),_0x25a87e[_0xa851('0x22')],this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081][_0xa851('0x23')],_0x8d8081);var _0x165b50=moment();this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081][_0xa851('0x16')]=!![];this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081][_0xa851('0x65')]=moment()['format'](_0xa851('0x3c'));this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081][_0xa851('0x42')]=_0xa851('0x66');this[_0xa851('0xb')][_0x25a87e['transfereeuniqueid']][_0x8d8081][_0xa851('0x4d')]='transfer';this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081][_0xa851('0x68')]=_0x165b50[_0xa851('0x8f')](this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]][_0x8d8081]['agentconnectAt'],'seconds');}}}}if(this[_0xa851('0xb')][_0x25a87e['secondtransfereruniqueid']]){var _0x3792fa=this['channels'][_0x25a87e[_0xa851('0x90')]];this[_0xa851('0xb')][_0x25a87e[_0xa851('0x90')]]=this['channels'][_0x25a87e['transfereeuniqueid']];this[_0xa851('0xb')][_0x25a87e[_0xa851('0x8d')]]=_0x3792fa;}}}catch(_0x2bfc07){logger[_0xa851('0x51')](_0xa851('0x91'),_0x25a87e['uniqueid'],util[_0xa851('0x27')](_0x2bfc07,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x1c')]=function(_0xeff5ef){try{if(this['isNotNull'](_0xeff5ef)){logger[_0xa851('0x25')](_0xa851('0x92'),_0xeff5ef[_0xa851('0x22')],util['inspect'](_0xeff5ef,{'showHidden':![],'depth':null}));if(this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]]){for(var _0x53d9eb in this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]]){if(this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]][_0xa851('0x5d')](_0x53d9eb)){if(_0xeff5ef[_0xa851('0x93')]===_0x53d9eb){logger[_0xa851('0x20')](_0xa851('0x94'),_0xeff5ef[_0xa851('0x22')],this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]][_0x53d9eb][_0xa851('0x23')],_0x53d9eb);var _0x555a02=moment();this[_0xa851('0xb')][_0xeff5ef['transfereeuniqueid']][_0x53d9eb][_0xa851('0x16')]=!![];this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]][_0x53d9eb][_0xa851('0x65')]=_0x555a02;this[_0xa851('0xb')][_0xeff5ef['transfereeuniqueid']][_0x53d9eb][_0xa851('0x42')]=_0xa851('0x66');this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]][_0x53d9eb][_0xa851('0x4d')]=_0xa851('0x67');this[_0xa851('0xb')][_0xeff5ef['transfereeuniqueid']][_0x53d9eb][_0xa851('0x68')]=_0x555a02['diff'](this[_0xa851('0xb')][_0xeff5ef[_0xa851('0x8d')]][_0x53d9eb][_0xa851('0x64')],_0xa851('0x95'));}}}}}}catch(_0xe46e6){logger[_0xa851('0x51')](_0xa851('0x96'),_0xeff5ef[_0xa851('0x22')],util[_0xa851('0x27')](_0xe46e6,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xa851('0x97')]=function(_0x2924cc){var _0x4843b3='';try{if(this[_0xa851('0x3a')](_0x2924cc)){logger[_0xa851('0x25')](_0xa851('0x98'),_0x2924cc['uniqueid'],util[_0xa851('0x27')](_0x2924cc,{'showHidden':![],'depth':null}));if(_0x2924cc[_0xa851('0x99')]){_0x4843b3=_0x2924cc['channel'][_0xa851('0x9a')](0x0,_0x2924cc[_0xa851('0x99')]['lastIndexOf']('-'));if(this[_0xa851('0xe')][_0x4843b3]){logger[_0xa851('0x20')](_0xa851('0x9b'),_0x2924cc['uniqueid'],_0x4843b3);this[_0xa851('0xe')][_0x4843b3][_0xa851('0x9c')]=!![];}}}}catch(_0x5a95d7){logger[_0xa851('0x51')]('[%s][voiceAgentReport][musiconholdstart]',_0x2924cc['uniqueid'],util[_0xa851('0x27')](_0x5a95d7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xa851('0x1d')][_0xa851('0x9d')]=function(_0x1941f9){var _0x22b24e='';try{if(this[_0xa851('0x3a')](_0x1941f9)){logger[_0xa851('0x25')](_0xa851('0x9e'),_0x1941f9[_0xa851('0x22')],util[_0xa851('0x27')](_0x1941f9,{'showHidden':![],'depth':null}));if(_0x1941f9[_0xa851('0x99')]){_0x22b24e=_0x1941f9[_0xa851('0x99')]['substring'](0x0,_0x1941f9[_0xa851('0x99')][_0xa851('0x9f')]('-'));if(this[_0xa851('0xe')][_0x22b24e]){logger['info'](_0xa851('0xa0'),_0x1941f9[_0xa851('0x22')],_0x22b24e);this[_0xa851('0xe')][_0x22b24e][_0xa851('0x9c')]=![];}}}}catch(_0x486ed5){logger['error'](_0xa851('0xa1'),_0x1941f9[_0xa851('0x22')],util[_0xa851('0x27')](_0x486ed5,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
index 61534a2..b908daf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e3f=['[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','isUndefined','channels','merge','pick','keys','from-sip','split','exten','xcally-motion-preview','channel','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','YYYY-MM-DD\x20HH:mm:ss','disposition','context','undefined','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','duration','seconds','includes','lastapplication','lastdata','cdr(','match','type','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','starttime','connectedlinename','destinationchannel','toNumber','UserId','membername','holdtime','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','replace','.wav49','.WAV','find','isNil','monitors','push','rec','variable','mixmonitor_filename','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','answertime','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','diff','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','isEmpty','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','extension','transfereecalleridnum','transfereruniqueid','transfererchannel','BLIND','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','moment','path','../../../config/environment','ami','../ami','../model/channel','set','queue','agi','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','defaults','localhost','socket.io-emitter','agents','blindTransfers','coreshowchannel','newexten','syncNewExten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','info'];(function(_0x34aef6,_0x51636c){var _0x309a63=function(_0x3b6d16){while(--_0x3b6d16){_0x34aef6['push'](_0x34aef6['shift']());}};_0x309a63(++_0x51636c);}(_0x4e3f,0xa2));var _0xf4e3=function(_0x5b6e51,_0x17ed2a){_0x5b6e51=_0x5b6e51-0x0;var _0x3cc363=_0x4e3f[_0x5b6e51];return _0x3cc363;};'use strict';var _=require('lodash');var moment=require(_0xf4e3('0x0'));var util=require('util');var path=require(_0xf4e3('0x1'));var Redis=require('ioredis');var config=require(_0xf4e3('0x2'));var logger=require('../../../config/logger')(_0xf4e3('0x3'));var ami=require(_0xf4e3('0x4'));var Channel=require(_0xf4e3('0x5'));var RpcSetting=require('../rpc/setting');var applications=[_0xf4e3('0x6'),_0xf4e3('0x7'),_0xf4e3('0x8'),'dial',_0xf4e3('0x9'),'voicemail'];var dispositions=[_0xf4e3('0xa'),_0xf4e3('0xb'),_0xf4e3('0xb'),'NO\x20ANSWER',_0xf4e3('0xa'),_0xf4e3('0xa'),_0xf4e3('0xc'),_0xf4e3('0xd'),'FAILED',_0xf4e3('0xb'),_0xf4e3('0xb')];config[_0xf4e3('0xe')]=_[_0xf4e3('0xf')](config[_0xf4e3('0xe')],{'host':_0xf4e3('0x10'),'port':0x18eb});var io=require(_0xf4e3('0x11'))(new Redis(config[_0xf4e3('0xe')]));function VoiceCallReport(_0x3f941e){this['channels']=_0x3f941e['channels'];this[_0xf4e3('0x12')]=_0x3f941e[_0xf4e3('0x12')];this[_0xf4e3('0x13')]={};ami['on'](_0xf4e3('0x14'),this['syncNewExten']['bind'](this));ami['on'](_0xf4e3('0x15'),this[_0xf4e3('0x16')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x18'),this[_0xf4e3('0x19')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x1a'),this[_0xf4e3('0x1b')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x1c'),this[_0xf4e3('0x1d')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x1e'),this[_0xf4e3('0x1f')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x20'),this['syncNewCallerId']['bind'](this));ami['on']('attendedtransfer',this[_0xf4e3('0x21')]['bind'](this));ami['on'](_0xf4e3('0x22'),this[_0xf4e3('0x23')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x24'),this[_0xf4e3('0x25')][_0xf4e3('0x17')](this));ami['on'](_0xf4e3('0x26'),this['syncMusicOnHoldStop'][_0xf4e3('0x17')](this));try{logger[_0xf4e3('0x27')](_0xf4e3('0x28'));ami[_0xf4e3('0x29')]();}catch(_0x4df437){logger[_0xf4e3('0x2a')](_0xf4e3('0x2b'),util[_0xf4e3('0x2c')](_0x4df437,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x2e')]=function(_0x28ab2f){return _0x28ab2f!==null&&!_['isUndefined'](_0x28ab2f);};VoiceCallReport[_0xf4e3('0x2d')]['emit']=function(_0x1f2623,_0x3a4682,_0x23d5b5){io['to'](_0x1f2623)[_0xf4e3('0x2f')](_0x3a4682,_0x23d5b5);};VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x30')]=function(_0xaa2a51){try{if(this['isNotNull'](_0xaa2a51)){logger[_0xf4e3('0x27')](_0xf4e3('0x31'),_0xaa2a51[_0xf4e3('0x32')],_0xaa2a51[_0xf4e3('0x33')],_0xaa2a51[_0xf4e3('0x34')]);logger['debug'](_0xf4e3('0x35'),_0xaa2a51[_0xf4e3('0x32')],util['inspect'](_0xaa2a51,{'showHidden':![],'depth':null}));if(_0xaa2a51[_0xf4e3('0x32')]===_0xaa2a51[_0xf4e3('0x36')]){if(!_[_0xf4e3('0x37')](this[_0xf4e3('0x38')][_0xaa2a51[_0xf4e3('0x32')]])){_[_0xf4e3('0x39')](this['channels'][_0xaa2a51['uniqueid']],_[_0xf4e3('0x3a')](_0xaa2a51,_[_0xf4e3('0x3b')](this[_0xf4e3('0x38')][_0xaa2a51[_0xf4e3('0x32')]])));}}if(_0xaa2a51['context']===_0xf4e3('0x3c')){if(this[_0xf4e3('0x12')][_0xaa2a51['channel'][_0xf4e3('0x3d')]('-')[0x0]]){if(_0xaa2a51[_0xf4e3('0x3e')]==_0xf4e3('0x3f')){this[_0xf4e3('0x12')][_0xaa2a51[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]]['destconnectedlinenum']=_0xaa2a51[_0xf4e3('0x41')];this['emit'](util[_0xf4e3('0x42')](_0xf4e3('0x43'),this[_0xf4e3('0x12')][_0xaa2a51[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]][_0xf4e3('0x44')]),_0xf4e3('0x45'),{'destaccountcode':this[_0xf4e3('0x12')][_0xaa2a51['channel']['split']('-')[0x0]][_0xf4e3('0x46')],'destconnectedlinenum':_0xaa2a51[_0xf4e3('0x41')]});}}}}}catch(_0x3c74b0){logger[_0xf4e3('0x2a')](_0xf4e3('0x47'),_0xaa2a51[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x3c74b0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x19')]=function(_0x46450b){try{if(this['isNotNull'](_0x46450b)){logger[_0xf4e3('0x48')](_0xf4e3('0x49'),_0x46450b['uniqueid'],util[_0xf4e3('0x2c')](_0x46450b,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x38')][_0x46450b[_0xf4e3('0x32')]]){return;}if(_0x46450b[_0xf4e3('0x40')]===_0xf4e3('0x4a')){return;}if(_0x46450b[_0xf4e3('0x32')]!==_0x46450b[_0xf4e3('0x36')]&&!this[_0xf4e3('0x13')][_0x46450b[_0xf4e3('0x36')]]){return;}logger[_0xf4e3('0x27')](_0xf4e3('0x4b'),_0x46450b[_0xf4e3('0x32')],_0x46450b['context'],_0x46450b[_0xf4e3('0x3e')]);this[_0xf4e3('0x38')][_0x46450b[_0xf4e3('0x32')]]=new Channel();this[_0xf4e3('0x38')][_0x46450b[_0xf4e3('0x32')]]['starttime']=moment()[_0xf4e3('0x42')](_0xf4e3('0x4c'));this['channels'][_0x46450b[_0xf4e3('0x32')]][_0xf4e3('0x4d')]=dispositions[_['toNumber'](_0x46450b['channelstate'])];_[_0xf4e3('0x39')](this['channels'][_0x46450b[_0xf4e3('0x32')]],_[_0xf4e3('0x3a')](_0x46450b,_[_0xf4e3('0x3b')](this[_0xf4e3('0x38')][_0x46450b['uniqueid']])));if(_0x46450b[_0xf4e3('0x4e')]===_0xf4e3('0x3c')){var _0x1c6217=this[_0xf4e3('0x12')][_0x46450b['channel']['split']('-')[0x0]];if(_0x1c6217&&typeof _0x1c6217['destconnectedlinenum']===_0xf4e3('0x4f')){_0x1c6217[_0xf4e3('0x50')]=_0x46450b[_0xf4e3('0x3e')];logger[_0xf4e3('0x48')](_0xf4e3('0x51'),_0x46450b[_0xf4e3('0x32')],util[_0xf4e3('0x2c')]({'id':_0x1c6217['id'],'destaccountcode':_0x1c6217[_0xf4e3('0x46')],'destconnectedlinenum':_0x46450b[_0xf4e3('0x3e')]},{'showHidden':![],'depth':null}));this[_0xf4e3('0x2f')](util['format']('user:%s',_0x1c6217[_0xf4e3('0x44')]),_0xf4e3('0x45'),{'id':_0x1c6217['id'],'destaccountcode':_0x1c6217['accountcode'],'destconnectedlinenum':_0x46450b['exten']});}}}}catch(_0x1d9393){logger[_0xf4e3('0x2a')]('[%s][voiceCallReport][newchannel]',_0x46450b['uniqueid'],util[_0xf4e3('0x2c')](_0x1d9393,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x16')]=function(_0x1de924){try{if(this[_0xf4e3('0x2e')](_0x1de924)){logger[_0xf4e3('0x48')](_0xf4e3('0x52'),_0x1de924[_0xf4e3('0x32')],util['inspect'](_0x1de924,{'showHidden':![],'depth':null}));if(_0x1de924[_0xf4e3('0x40')]===_0xf4e3('0x4a')||_0x1de924['exten']==='h')return;if(_0x1de924[_0xf4e3('0x32')]===_0x1de924[_0xf4e3('0x36')]||this[_0xf4e3('0x13')][_0x1de924[_0xf4e3('0x36')]]){_0x1de924[_0xf4e3('0x53')]=_0x1de924['application']?_0x1de924[_0xf4e3('0x53')][_0xf4e3('0x54')]():undefined;_0x1de924[_0xf4e3('0x55')]=_0x1de924[_0xf4e3('0x56')]||_0x1de924[_0xf4e3('0x55')];if(_0x1de924[_0xf4e3('0x56')]&&!_0x1de924[_0xf4e3('0x56')][_0xf4e3('0x57')](_0xf4e3('0x58'))&&_0x1de924[_0xf4e3('0x53')]!==_0xf4e3('0x7')){_0x1de924[_0xf4e3('0x55')]=_0x1de924[_0xf4e3('0x55')][_0xf4e3('0x54')]();}logger[_0xf4e3('0x27')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x1de924['uniqueid'],_0x1de924[_0xf4e3('0x53')],_0x1de924[_0xf4e3('0x55')]);if(_['isUndefined'](this['channels'][_0x1de924[_0xf4e3('0x32')]])){this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]]=new Channel();this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]]['starttime']=_0x1de924[_0xf4e3('0x59')]?moment()['subtract'](moment['duration'](_0x1de924[_0xf4e3('0x59')])[_0xf4e3('0x5a')](),'seconds')[_0xf4e3('0x42')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xf4e3('0x42')](_0xf4e3('0x4c'));this[_0xf4e3('0x38')][_0x1de924['uniqueid']][_0xf4e3('0x4d')]=_0xf4e3('0xa');}_[_0xf4e3('0x39')](this['channels'][_0x1de924[_0xf4e3('0x32')]],_[_0xf4e3('0x3a')](_0x1de924,_[_0xf4e3('0x3b')](this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]])));if(_[_0xf4e3('0x5b')](applications,_0x1de924[_0xf4e3('0x53')])){this['channels'][_0x1de924['uniqueid']][_0xf4e3('0x5c')]=_0x1de924[_0xf4e3('0x53')];this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]][_0xf4e3('0x5d')]=_0x1de924[_0xf4e3('0x55')];if(_0x1de924[_0xf4e3('0x53')]===_0xf4e3('0x6')&&_[_0xf4e3('0x57')](_0x1de924[_0xf4e3('0x55')]['toLowerCase'](),_0xf4e3('0x5e'))){var _0x23feca=_0x1de924[_0xf4e3('0x55')][_0xf4e3('0x3d')]('=');var _0x321808=_0x23feca[0x0]['toLowerCase']()[_0xf4e3('0x5f')](/cdr\((.*)\)/);if(_0x321808){if(_0x321808[0x1]===_0xf4e3('0x60')&&!_['isNil'](this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]][_0x321808[0x1]]))return;this[_0xf4e3('0x38')][_0x1de924['uniqueid']][_0x321808[0x1]]=_0x23feca[0x1];}}else if(_0x1de924['application']==='queue'){this[_0xf4e3('0x38')][_0x1de924[_0xf4e3('0x32')]][_0xf4e3('0x7')]=_0x1de924[_0xf4e3('0x55')][_0xf4e3('0x3d')](',')[0x0];}}}}}catch(_0x5512b5){logger[_0xf4e3('0x2a')](_0xf4e3('0x61'),_0x1de924[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x5512b5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')]['syncNewState']=function(_0x2328ff){try{if(this[_0xf4e3('0x2e')](_0x2328ff)){logger[_0xf4e3('0x27')](_0xf4e3('0x62'),_0x2328ff[_0xf4e3('0x32')],_0x2328ff[_0xf4e3('0x36')],_0x2328ff[_0xf4e3('0x33')],_0x2328ff[_0xf4e3('0x34')]);logger[_0xf4e3('0x48')](_0xf4e3('0x63'),_0x2328ff[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x2328ff,{'showHidden':![],'depth':null}));if(_0x2328ff[_0xf4e3('0x64')]!=='6')return;var _0x1c3265=this[_0xf4e3('0x12')][_0x2328ff[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]];if(_0x2328ff['uniqueid']!==_0x2328ff[_0xf4e3('0x36')]){var _0x56fb81=moment();if(this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]]){if(!this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x65')]){this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x65')]=!![];this['channels'][_0x2328ff['linkedid']]['answertime']=_0x56fb81[_0xf4e3('0x42')](_0xf4e3('0x4c'));if(this[_0xf4e3('0x38')][_0x2328ff['linkedid']][_0xf4e3('0x66')]){this['channels'][_0x2328ff[_0xf4e3('0x36')]]['holdtime']=_0x56fb81['diff'](this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x66')],_0xf4e3('0x5a'));}}this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x36')]=_0x2328ff[_0xf4e3('0x32')];if(_0x2328ff[_0xf4e3('0x34')]!==_0xf4e3('0x3f')){this[_0xf4e3('0x38')][_0x2328ff['linkedid']][_0xf4e3('0x41')]=_0x2328ff[_0xf4e3('0x34')];}this['channels'][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x67')]=_0x2328ff['calleridname'];this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x68')]=_0x2328ff[_0xf4e3('0x40')];this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]]['disposition']=dispositions[_[_0xf4e3('0x69')](_0x2328ff[_0xf4e3('0x64')])];if(_0x1c3265){this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x6a')]=_0x1c3265['id'];this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x6b')]=_0x1c3265[_0xf4e3('0x44')];}}if(this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]]){if(!this[_0xf4e3('0x38')][_0x2328ff['uniqueid']][_0xf4e3('0x65')]){this[_0xf4e3('0x38')][_0x2328ff['uniqueid']]['answered']=!![];this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]]['answertime']=_0x56fb81[_0xf4e3('0x42')](_0xf4e3('0x4c'));if(this[_0xf4e3('0x38')][_0x2328ff['uniqueid']]['starttime']){this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]][_0xf4e3('0x6c')]=_0x56fb81['diff'](this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]][_0xf4e3('0x66')],_0xf4e3('0x5a'));}}if(_0x2328ff[_0xf4e3('0x34')]!=='xcally-motion-preview'){this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]][_0xf4e3('0x41')]=_0x2328ff[_0xf4e3('0x34')];}this[_0xf4e3('0x38')][_0x2328ff['uniqueid']]['connectedlinename']=_0x2328ff[_0xf4e3('0x33')];this['channels'][_0x2328ff[_0xf4e3('0x32')]][_0xf4e3('0x68')]=_0x2328ff['channel'];this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]][_0xf4e3('0x4d')]=dispositions[_['toNumber'](_0x2328ff[_0xf4e3('0x64')])];}}else{if(this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x32')]]){if(_0x1c3265){this['channels'][_0x2328ff['uniqueid']][_0xf4e3('0x6a')]=_0x1c3265['id'];this[_0xf4e3('0x38')][_0x2328ff['uniqueid']]['membername']=_0x1c3265['name'];}}}if(_0x2328ff[_0xf4e3('0x4e')]===_0xf4e3('0x3c')){if(_0x1c3265){_0x1c3265[_0xf4e3('0x50')]=_0x2328ff[_0xf4e3('0x3e')];var _0x48aad2,_0x505591;if(this[_0xf4e3('0x38')][_0x2328ff['uniqueid']]){_0x48aad2=this[_0xf4e3('0x38')][_0x2328ff['uniqueid']][_0xf4e3('0x6d')];_0x505591=this['channels'][_0x2328ff['uniqueid']][_0xf4e3('0x7')];}else if(this[_0xf4e3('0x38')][_0x2328ff['linkedid']]){_0x48aad2=this[_0xf4e3('0x38')][_0x2328ff[_0xf4e3('0x36')]]['routealias'];_0x505591=this['channels'][_0x2328ff[_0xf4e3('0x36')]][_0xf4e3('0x7')];}_0x1c3265[_0xf4e3('0x7')]=_0x505591;_0x1c3265[_0xf4e3('0x6d')]=_0x48aad2;var _0x33e93d={'id':_0x1c3265['id'],'name':_0x1c3265[_0xf4e3('0x44')],'agentconnected':!![],'destaccountcode':_0x1c3265[_0xf4e3('0x46')],'destconnectedlinenum':_0x2328ff[_0xf4e3('0x3e')],'queue':_0x505591||undefined,'routealias':_0x48aad2,'uniqueid':_0x2328ff['linkedid']};logger['debug'](_0xf4e3('0x6e'),_0x2328ff[_0xf4e3('0x32')],util['inspect'](_0x33e93d,{'showHidden':![],'depth':null}));this[_0xf4e3('0x2f')](util['format'](_0xf4e3('0x43'),_0x1c3265[_0xf4e3('0x44')]),_0xf4e3('0x45'),_0x33e93d);}}}}catch(_0x3997ae){logger['error'](_0xf4e3('0x6f'),_0x2328ff[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x3997ae,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')]['syncMixMonitorFilename']=function(_0x1a30b0,_0x5257b8){try{if(this[_0xf4e3('0x38')][_0x1a30b0]){logger[_0xf4e3('0x27')](_0xf4e3('0x70'),_0x1a30b0,_0x5257b8);this[_0xf4e3('0x38')][_0x1a30b0]['monitor']=!![];if(_['endsWith'](_0x5257b8,'.wav49')){_0x5257b8=_0x5257b8[_0xf4e3('0x71')](_0xf4e3('0x72'),_0xf4e3('0x73'));}this['channels'][_0x1a30b0]['monitorFilename']=_0x5257b8;var _0x1e28f4=_[_0xf4e3('0x74')](this[_0xf4e3('0x38')][_0x1a30b0]['monitors'],{'filename':_0x5257b8});if(_[_0xf4e3('0x75')](_0x1e28f4)){this['channels'][_0x1a30b0][_0xf4e3('0x76')][_0xf4e3('0x77')]({'filename':_0x5257b8,'createdAt':moment()['format'](_0xf4e3('0x4c')),'mixmonitorid':'','status':_0xf4e3('0x78')});}}}catch(_0x3998a4){logger[_0xf4e3('0x2a')]('[%s][voiceCallReport][mixMonitorFilename]',_0x1a30b0,util[_0xf4e3('0x2c')](_0x3998a4,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xf4e3('0x1d')]=function(_0x52463a){try{if(this['isNotNull'](_0x52463a)){logger[_0xf4e3('0x48')]('[%s][voiceCallReport][varset]\x20event:',_0x52463a[_0xf4e3('0x32')],util['inspect'](_0x52463a,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]]&&_0x52463a[_0xf4e3('0x40')]!=_0xf4e3('0x4a')){if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')])){if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x7a')])){logger[_0xf4e3('0x27')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);this['syncMixMonitorFilename'](_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);}else if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')]['xmd-phone'])){logger['info'](_0xf4e3('0x7c'),_0x52463a['uniqueid'],_0x52463a[_0xf4e3('0x7b')]);this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x34')]=_0x52463a['value'];}else if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x7d')])){logger[_0xf4e3('0x27')](_0xf4e3('0x7e'),_0x52463a[_0xf4e3('0x32')],_0x52463a['value']);this['channels'][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x7f')]=_0x52463a[_0xf4e3('0x7b')];}else if(this[_0xf4e3('0x2e')](_0x52463a['variable'][_0xf4e3('0x80')])){logger[_0xf4e3('0x27')](_0xf4e3('0x81'),_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x60')]=_0x52463a[_0xf4e3('0x7b')];}else if(this['isNotNull'](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x82')])){logger[_0xf4e3('0x27')](_0xf4e3('0x83'),_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')][_0xf4e3('0x3d')](',')[0x0]);this[_0xf4e3('0x38')][_0x52463a['uniqueid']][_0xf4e3('0x7')]=_0x52463a[_0xf4e3('0x7b')][_0xf4e3('0x3d')](',')[0x0];}else if(this['isNotNull'](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x84')])){logger[_0xf4e3('0x27')](_0xf4e3('0x85'),_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x86')]=_0x52463a['value'];}else if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x87')])){logger[_0xf4e3('0x27')](_0xf4e3('0x88'),_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);this['channels'][_0x52463a['uniqueid']]['destination']=_0x52463a[_0xf4e3('0x7b')];}else if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x89')])){logger[_0xf4e3('0x27')](_0xf4e3('0x8a'),_0x52463a[_0xf4e3('0x32')],_0x52463a[_0xf4e3('0x7b')]);this['channels'][_0x52463a[_0xf4e3('0x32')]]['calleridpreview']=_0x52463a[_0xf4e3('0x7b')];}else if(this['isNotNull'](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x8b')])){logger[_0xf4e3('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x52463a[_0xf4e3('0x32')],_0x52463a['value']);this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x7')]=_0x52463a['value'];}else if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x8c')])){logger['info'](_0xf4e3('0x8d'),_0x52463a['uniqueid'],_0x52463a[_0xf4e3('0x7b')]);this[_0xf4e3('0x38')][_0x52463a[_0xf4e3('0x32')]][_0xf4e3('0x8e')]=_0x52463a[_0xf4e3('0x7b')];}}}else if(this['isNotNull'](_0x52463a['variable']['mixmonitor_filename'])){if(_0x52463a['value']){var _0x3be0d8=path[_0xf4e3('0x8f')](_0x52463a[_0xf4e3('0x7b')])['name'];logger[_0xf4e3('0x27')](_0xf4e3('0x90'),_0x3be0d8,_0x52463a[_0xf4e3('0x7b')]);this['syncMixMonitorFilename'](_0x3be0d8,_0x52463a[_0xf4e3('0x7b')]);}}else if(this[_0xf4e3('0x38')][_0x52463a['linkedid']]){if(this[_0xf4e3('0x2e')](_0x52463a[_0xf4e3('0x79')])){if(this['isNotNull'](_0x52463a[_0xf4e3('0x79')][_0xf4e3('0x8c')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x52463a['linkedid'],_0x52463a[_0xf4e3('0x7b')]);this[_0xf4e3('0x38')][_0x52463a['linkedid']][_0xf4e3('0x91')]=_0x52463a[_0xf4e3('0x7b')];}}}}}catch(_0x24a514){logger[_0xf4e3('0x2a')](_0xf4e3('0x92'),_0x52463a['uniqueid'],util['inspect'](_0x24a514,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x1f')]=function(_0x7a2f5d){try{if(this['isNotNull'](_0x7a2f5d)){logger[_0xf4e3('0x48')](_0xf4e3('0x93'),_0x7a2f5d[_0xf4e3('0x32')],util['inspect'](_0x7a2f5d,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]){if(this[_0xf4e3('0x38')][this['blindTransfers'][_0x7a2f5d[_0xf4e3('0x36')]]['linkedid']]){this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]['linkedid']][_0xf4e3('0x32')]=_0x7a2f5d[_0xf4e3('0x32')];this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]['linkedid']]['answered']=this['channels'][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x65')];this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]][_0xf4e3('0x94')]=this['channels'][_0x7a2f5d['uniqueid']][_0xf4e3('0x94')];this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]][_0xf4e3('0x68')]=this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]][_0xf4e3('0x40')];this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]][_0xf4e3('0x4d')]=this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x4d')];this[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']]=this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]];delete this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x36')]];}else if(this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]]){this[_0xf4e3('0x38')][this['blindTransfers'][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]]['uniqueid']=[this[_0xf4e3('0x38')][this['blindTransfers'][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]][_0xf4e3('0x36')],this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]['uniqueid']]['linkedid']=this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]]['uniqueid']][0x0];this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]]['answered']=this[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x65')];this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]['uniqueid']]['answertime']=this[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x94')];this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]][_0xf4e3('0x68')]=this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d['linkedid']][_0xf4e3('0x32')]][_0xf4e3('0x40')];this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]][_0xf4e3('0x4d')]=this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x4d')];this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]=this[_0xf4e3('0x38')][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]][_0xf4e3('0x32')]];delete this['channels'][this[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x36')]]['uniqueid']];}}if(this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]){logger[_0xf4e3('0x27')](_0xf4e3('0x95'),_0x7a2f5d[_0xf4e3('0x32')],_0x7a2f5d[_0xf4e3('0x96')]);var _0x3e7712=moment();this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]['endtime']=_0x3e7712[_0xf4e3('0x42')](_0xf4e3('0x4c'));this[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x59')]=_0x3e7712[_0xf4e3('0x97')](this['channels'][_0x7a2f5d['uniqueid']][_0xf4e3('0x66')],_0xf4e3('0x5a'));if(this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x65')]){this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]['billableseconds']=_0x3e7712[_0xf4e3('0x97')](this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x94')],'seconds');this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x6c')]=this[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x59')]-this['channels'][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x98')];}if(_0x7a2f5d[_0xf4e3('0x4e')]===_0xf4e3('0x3c')){if(this['agents'][_0x7a2f5d['channel']['split']('-')[0x0]]){this[_0xf4e3('0x12')][_0x7a2f5d['channel']['split']('-')[0x0]]=_[_0xf4e3('0x99')](this[_0xf4e3('0x12')][_0x7a2f5d[_0xf4e3('0x40')]['split']('-')[0x0]],['destconnectedlinenum']);logger['debug'](_0xf4e3('0x9a'),_0x7a2f5d['uniqueid'],util[_0xf4e3('0x2c')]({'id':this[_0xf4e3('0x12')][_0x7a2f5d[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xf4e3('0x12')][_0x7a2f5d[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]][_0xf4e3('0x46')]},{'showHidden':![],'depth':null}));this[_0xf4e3('0x2f')](util[_0xf4e3('0x42')](_0xf4e3('0x43'),this[_0xf4e3('0x12')][_0x7a2f5d['channel'][_0xf4e3('0x3d')]('-')[0x0]][_0xf4e3('0x44')]),_0xf4e3('0x9b'),{'id':this[_0xf4e3('0x12')][_0x7a2f5d[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x7a2f5d[_0xf4e3('0x40')][_0xf4e3('0x3d')]('-')[0x0]][_0xf4e3('0x46')]});for(var _0x51c4df=0x0;_0x51c4df<Object[_0xf4e3('0x3b')](this['agents'])[_0xf4e3('0x9c')];_0x51c4df++){var _0x514744=Object[_0xf4e3('0x3b')](this['agents'])[_0x51c4df];var _0x484f9b=this['agents'][_0x514744];if(_0x484f9b[_0xf4e3('0x46')]===Number(this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x41')])){this[_0xf4e3('0x2f')](util[_0xf4e3('0x42')]('user:%s',_0x484f9b['name']),_0xf4e3('0x9b'),{'id':_0x484f9b['id'],'destaccountcode':_0x484f9b[_0xf4e3('0x46')],'transfer':this[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x9d')]});break;}}}}var _0x40d75b=this;Promise[_0xf4e3('0x9e')]()[_0xf4e3('0x9f')](function(){var _0x2daac5=_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]];if(typeof _0x2daac5[_0xf4e3('0x9d')]===_0xf4e3('0x4f'))return;if(_[_0xf4e3('0xa0')](_0x2daac5[_0xf4e3('0x76')]))return;return RpcSetting[_0xf4e3('0xa1')]()['then'](function(_0x339de5){if(!_0x339de5[_0xf4e3('0xa2')])return;return Promise['resolve']()[_0xf4e3('0x9f')](function(){return ami['Action']({'action':_0xf4e3('0xa3'),'channel':_0x2daac5[_0xf4e3('0x40')]})[_0xf4e3('0xa4')](function(){});})['then'](function(){return ami[_0xf4e3('0xa5')]({'action':'StopMixMonitor','channel':_0x2daac5[_0xf4e3('0x68')]})[_0xf4e3('0xa4')](function(){})[_0xf4e3('0xa6')](function(){var _0x18fa90=_0x40d75b[_0xf4e3('0x12')][_0x2daac5[_0xf4e3('0x68')][_0xf4e3('0x3d')]('-')[0x0]];if(!_0x18fa90)return;io['emit'](_0xf4e3('0xa7'),{'agentId':_0x18fa90['id'],'uniqueid':_0x2daac5[_0xf4e3('0x32')]});});});});})['then'](function(){if(_0x7a2f5d['event']===_0xf4e3('0xa8')){_0x40d75b[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x32')]]=_0x7a2f5d;}else{if(_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]['type']===_0xf4e3('0xa9')&&_0x40d75b[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x32')]]){_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x32')]=[_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]][_0xf4e3('0x36')],_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x36')]=_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d['uniqueid']][_0xf4e3('0x32')]][0x0];delete _0x40d75b[_0xf4e3('0x13')][_0x7a2f5d[_0xf4e3('0x32')]];}}logger[_0xf4e3('0x48')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x7a2f5d[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x40d75b['channels'][_0x7a2f5d[_0xf4e3('0x32')]],{'showHidden':![],'depth':null}));ami[_0xf4e3('0x2f')]('custom:voiceCallReport',_0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]]);delete _0x40d75b[_0xf4e3('0x38')][_0x7a2f5d[_0xf4e3('0x32')]];});}}}catch(_0x3ccd26){logger['error'](_0xf4e3('0xaa'),_0x7a2f5d[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x3ccd26,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')]['syncAttendedTransfer']=function(_0x47fcf4){try{if(this[_0xf4e3('0x2e')](_0x47fcf4)){logger['info'](_0xf4e3('0xab'),_0x47fcf4[_0xf4e3('0x32')],_0x47fcf4[_0xf4e3('0xac')],_0x47fcf4[_0xf4e3('0xad')]);logger[_0xf4e3('0x48')](_0xf4e3('0xae'),_0x47fcf4[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x47fcf4,{'showHidden':![],'depth':null}));var _0x47af3f;if(this['channels'][_0x47fcf4[_0xf4e3('0xaf')]]){this[_0xf4e3('0x38')][_0x47fcf4['transfereeuniqueid']][_0xf4e3('0xb0')]=_0x47fcf4[_0xf4e3('0xac')];this['channels'][_0x47fcf4[_0xf4e3('0xaf')]]['transferconnectedlinenum']=_0x47fcf4[_0xf4e3('0xad')];if(this[_0xf4e3('0x38')][_0x47fcf4['secondtransfereruniqueid']]){_0x47af3f=this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb1')]];this[_0xf4e3('0x38')][_0x47fcf4['secondtransfereruniqueid']]=this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xaf')]];this['channels'][_0x47fcf4[_0xf4e3('0xaf')]]=_0x47af3f;}this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb1')]][_0xf4e3('0x9d')]=_0xf4e3('0xb2');}else if(this[_0xf4e3('0x38')][_0x47fcf4['transfertargetuniqueid']]){this['channels'][_0x47fcf4[_0xf4e3('0xb3')]][_0xf4e3('0xb0')]=_0x47fcf4[_0xf4e3('0xac')];this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb3')]][_0xf4e3('0xb4')]=_0x47fcf4[_0xf4e3('0xad')];if(this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb5')]]){_0x47af3f=this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb5')]];this['channels'][_0x47fcf4['origtransfereruniqueid']]=this[_0xf4e3('0x38')][_0x47fcf4['transfertargetuniqueid']];this['channels'][_0x47fcf4['transfertargetuniqueid']]=_0x47af3f;}this['channels'][_0x47fcf4[_0xf4e3('0xb3')]][_0xf4e3('0x9d')]=_0xf4e3('0xb2');}if((this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb5')]]||this['channels'][_0x47fcf4[_0xf4e3('0xb6')]])&&this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb1')]]){var _0xa274c0=_[_0xf4e3('0xb7')]([this['channels'][_0x47fcf4[_0xf4e3('0xb5')]],this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb6')]],this[_0xf4e3('0x38')][_0x47fcf4['secondtransfereruniqueid']]],function(_0x6cdf53){return _0x6cdf53&&_0x6cdf53[_0xf4e3('0x60')]===_0xf4e3('0xa9')&&_0x6cdf53[_0xf4e3('0xb8')];});if(_0xa274c0){if(this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb5')]])this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb5')]][_0xf4e3('0x9d')]=_0xf4e3('0xb2');if(this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb6')]])this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb6')]][_0xf4e3('0x9d')]=_0xf4e3('0xb2');this[_0xf4e3('0x38')][_0x47fcf4[_0xf4e3('0xb1')]]['transferType']=_0xf4e3('0xb2');}}}}catch(_0x5243b0){logger[_0xf4e3('0x2a')](_0xf4e3('0xb9'),_0x47fcf4[_0xf4e3('0x32')],util['inspect'](_0x5243b0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')][_0xf4e3('0x23')]=function(_0x232840){try{if(this[_0xf4e3('0x2e')](_0x232840)){logger['info']('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x232840[_0xf4e3('0x32')],_0x232840['transfereecalleridnum'],_0x232840[_0xf4e3('0xba')]);logger[_0xf4e3('0x48')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x232840[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x232840,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x38')][_0x232840[_0xf4e3('0xaf')]]){this[_0xf4e3('0x38')][_0x232840[_0xf4e3('0xaf')]]['transfercalleridnum']=_0x232840[_0xf4e3('0xbb')];this[_0xf4e3('0x38')][_0x232840['transfereeuniqueid']]['transferconnectedlinenum']=_0x232840[_0xf4e3('0xba')];this[_0xf4e3('0x38')][_0x232840[_0xf4e3('0xaf')]][_0xf4e3('0x9d')]='BLIND';this[_0xf4e3('0x1f')]({'event':_0xf4e3('0xa8'),'uniqueid':_0x232840[_0xf4e3('0xaf')],'linkedid':_0x232840[_0xf4e3('0xbc')],'context':_0x232840[_0xf4e3('0x4e')],'channel':_0x232840[_0xf4e3('0xbd')]});}else{this[_0xf4e3('0x38')][_0x232840[_0xf4e3('0xbc')]][_0xf4e3('0x9d')]=_0xf4e3('0xbe');this[_0xf4e3('0x1f')]({'event':_0xf4e3('0xa8'),'uniqueid':_0x232840[_0xf4e3('0xbc')],'linkedid':_0x232840[_0xf4e3('0xaf')],'context':_0x232840[_0xf4e3('0x4e')],'channel':_0x232840[_0xf4e3('0xbd')]});}}}catch(_0x4cd383){logger['error'](_0xf4e3('0xbf'),_0x232840['uniqueid'],util[_0xf4e3('0x2c')](_0x4cd383,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xf4e3('0x25')]=function(_0x4a779a){try{if(this[_0xf4e3('0x2e')](_0x4a779a)){logger[_0xf4e3('0x48')](_0xf4e3('0xc0'),_0x4a779a[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x4a779a,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x38')][_0x4a779a[_0xf4e3('0x32')]]){if(!_[_0xf4e3('0x75')](this[_0xf4e3('0x38')][_0x4a779a[_0xf4e3('0x32')]][_0xf4e3('0x94')])){this[_0xf4e3('0x38')][_0x4a779a['uniqueid']][_0xf4e3('0xc1')]=moment()[_0xf4e3('0x42')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0xf4e3('0x27')](_0xf4e3('0xc2'),_0x4a779a[_0xf4e3('0x32')],this['channels'][_0x4a779a[_0xf4e3('0x32')]][_0xf4e3('0xc1')]);}}}}catch(_0x377941){logger[_0xf4e3('0x2a')](_0xf4e3('0xc3'),_0x4a779a[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x377941,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xf4e3('0x2d')]['syncMusicOnHoldStop']=function(_0x12e6b9){try{if(this[_0xf4e3('0x2e')](_0x12e6b9)){logger[_0xf4e3('0x48')](_0xf4e3('0xc4'),_0x12e6b9[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x12e6b9,{'showHidden':![],'depth':null}));if(this[_0xf4e3('0x38')][_0x12e6b9[_0xf4e3('0x32')]]){if(!_[_0xf4e3('0x75')](this[_0xf4e3('0x38')][_0x12e6b9[_0xf4e3('0x32')]][_0xf4e3('0xc1')])){this[_0xf4e3('0x38')][_0x12e6b9['uniqueid']][_0xf4e3('0xc5')]+=moment()[_0xf4e3('0xc6')](0x0)['diff'](this[_0xf4e3('0x38')][_0x12e6b9[_0xf4e3('0x32')]][_0xf4e3('0xc1')],_0xf4e3('0x5a'));logger[_0xf4e3('0x27')](_0xf4e3('0xc7'),_0x12e6b9[_0xf4e3('0x32')],this['channels'][_0x12e6b9['uniqueid']][_0xf4e3('0xc5')]);delete this[_0xf4e3('0x38')][_0x12e6b9[_0xf4e3('0x32')]][_0xf4e3('0xc1')];}}}}catch(_0x58e7ac){logger[_0xf4e3('0x2a')](_0xf4e3('0xc8'),_0x12e6b9[_0xf4e3('0x32')],util[_0xf4e3('0x2c')](_0x58e7ac,{'showHidden':![],'depth':null}));}};module[_0xf4e3('0xc9')]=VoiceCallReport;
\ No newline at end of file
+var _0x951e=['monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-destination','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcallid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','getSettings','stopRecordingOnTransfer','Action','catch','StopMixMonitor','event','BlindTransfer','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','extension','transfereecalleridnum','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','../model/channel','../rpc/setting','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','info','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','context','starttime','channelstate','undefined','user:%s','error','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','OutgoingSpoolFailed','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','application','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastapplication','cdr(','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','disposition','toNumber','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','.wav49','replace','.WAV','monitorFilename','find'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x951e,0x107));var _0xe951=function(_0x1bacfe,_0x3f5c16){_0x1bacfe=_0x1bacfe-0x0;var _0x51b390=_0x951e[_0x1bacfe];return _0x51b390;};'use strict';var _=require(_0xe951('0x0'));var moment=require(_0xe951('0x1'));var util=require(_0xe951('0x2'));var path=require(_0xe951('0x3'));var Redis=require(_0xe951('0x4'));var config=require(_0xe951('0x5'));var logger=require(_0xe951('0x6'))('ami');var ami=require('../ami');var Channel=require(_0xe951('0x7'));var RpcSetting=require(_0xe951('0x8'));var applications=['set',_0xe951('0x9'),_0xe951('0xa'),_0xe951('0xb'),_0xe951('0xc'),_0xe951('0xd')];var dispositions=[_0xe951('0xe'),_0xe951('0xf'),_0xe951('0xf'),'NO\x20ANSWER',_0xe951('0xe'),_0xe951('0xe'),'ANSWERED','BUSY',_0xe951('0xf'),'FAILED',_0xe951('0xf')];config[_0xe951('0x10')]=_['defaults'](config[_0xe951('0x10')],{'host':_0xe951('0x11'),'port':0x18eb});var io=require(_0xe951('0x12'))(new Redis(config[_0xe951('0x10')]));function VoiceCallReport(_0xc65861){this[_0xe951('0x13')]=_0xc65861['channels'];this['agents']=_0xc65861[_0xe951('0x14')];this[_0xe951('0x15')]={};ami['on']('coreshowchannel',this[_0xe951('0x16')][_0xe951('0x17')](this));ami['on'](_0xe951('0x18'),this[_0xe951('0x16')]['bind'](this));ami['on'](_0xe951('0x19'),this[_0xe951('0x1a')][_0xe951('0x17')](this));ami['on'](_0xe951('0x1b'),this['syncNewState'][_0xe951('0x17')](this));ami['on'](_0xe951('0x1c'),this[_0xe951('0x1d')][_0xe951('0x17')](this));ami['on'](_0xe951('0x1e'),this[_0xe951('0x1f')][_0xe951('0x17')](this));ami['on'](_0xe951('0x20'),this[_0xe951('0x21')]['bind'](this));ami['on'](_0xe951('0x22'),this[_0xe951('0x23')][_0xe951('0x17')](this));ami['on']('blindtransfer',this[_0xe951('0x24')]['bind'](this));ami['on'](_0xe951('0x25'),this[_0xe951('0x26')][_0xe951('0x17')](this));ami['on'](_0xe951('0x27'),this['syncMusicOnHoldStop'][_0xe951('0x17')](this));try{logger['info']('[voiceCallReport][coreshowchannels]\x20started');ami['actionCoreShowChannels']();}catch(_0x3cbe0c){logger['error'](_0xe951('0x28'),util[_0xe951('0x29')](_0x3cbe0c,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xe951('0x2a')][_0xe951('0x2b')]=function(_0x45e9a2){return _0x45e9a2!==null&&!_[_0xe951('0x2c')](_0x45e9a2);};VoiceCallReport[_0xe951('0x2a')]['emit']=function(_0x52a67c,_0x4dec87,_0x451206){io['to'](_0x52a67c)[_0xe951('0x2d')](_0x4dec87,_0x451206);};VoiceCallReport['prototype'][_0xe951('0x21')]=function(_0x39c7c9){try{if(this[_0xe951('0x2b')](_0x39c7c9)){logger[_0xe951('0x2e')](_0xe951('0x2f'),_0x39c7c9[_0xe951('0x30')],_0x39c7c9[_0xe951('0x31')],_0x39c7c9[_0xe951('0x32')]);logger[_0xe951('0x33')](_0xe951('0x34'),_0x39c7c9[_0xe951('0x30')],util['inspect'](_0x39c7c9,{'showHidden':![],'depth':null}));if(_0x39c7c9[_0xe951('0x30')]===_0x39c7c9[_0xe951('0x35')]){if(!_[_0xe951('0x2c')](this['channels'][_0x39c7c9['uniqueid']])){_[_0xe951('0x36')](this[_0xe951('0x13')][_0x39c7c9['uniqueid']],_[_0xe951('0x37')](_0x39c7c9,_[_0xe951('0x38')](this[_0xe951('0x13')][_0x39c7c9['uniqueid']])));}}if(_0x39c7c9['context']===_0xe951('0x39')){if(this[_0xe951('0x14')][_0x39c7c9[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]]){if(_0x39c7c9[_0xe951('0x3c')]==_0xe951('0x3d')){this['agents'][_0x39c7c9[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]][_0xe951('0x3e')]=_0x39c7c9[_0xe951('0x3f')];this[_0xe951('0x2d')](util[_0xe951('0x40')]('user:%s',this[_0xe951('0x14')][_0x39c7c9[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]][_0xe951('0x41')]),_0xe951('0x42'),{'destaccountcode':this[_0xe951('0x14')][_0x39c7c9[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]][_0xe951('0x43')],'destconnectedlinenum':_0x39c7c9[_0xe951('0x3f')]});}}}}}catch(_0x5ebba5){logger['error'](_0xe951('0x44'),_0x39c7c9['uniqueid'],util[_0xe951('0x29')](_0x5ebba5,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe951('0x1a')]=function(_0x5bbb0b){try{if(this[_0xe951('0x2b')](_0x5bbb0b)){logger[_0xe951('0x33')](_0xe951('0x45'),_0x5bbb0b['uniqueid'],util['inspect'](_0x5bbb0b,{'showHidden':![],'depth':null}));if(this['channels'][_0x5bbb0b[_0xe951('0x30')]]){return;}if(_0x5bbb0b[_0xe951('0x3a')]==='OutgoingSpoolFailed'){return;}if(_0x5bbb0b[_0xe951('0x30')]!==_0x5bbb0b[_0xe951('0x35')]&&!this[_0xe951('0x15')][_0x5bbb0b[_0xe951('0x35')]]){return;}logger[_0xe951('0x2e')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x5bbb0b[_0xe951('0x30')],_0x5bbb0b[_0xe951('0x46')],_0x5bbb0b[_0xe951('0x3c')]);this[_0xe951('0x13')][_0x5bbb0b[_0xe951('0x30')]]=new Channel();this[_0xe951('0x13')][_0x5bbb0b['uniqueid']][_0xe951('0x47')]=moment()[_0xe951('0x40')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5bbb0b['uniqueid']]['disposition']=dispositions[_['toNumber'](_0x5bbb0b[_0xe951('0x48')])];_[_0xe951('0x36')](this[_0xe951('0x13')][_0x5bbb0b[_0xe951('0x30')]],_[_0xe951('0x37')](_0x5bbb0b,_[_0xe951('0x38')](this[_0xe951('0x13')][_0x5bbb0b[_0xe951('0x30')]])));if(_0x5bbb0b['context']==='from-sip'){var _0x514175=this[_0xe951('0x14')][_0x5bbb0b[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]];if(_0x514175&&typeof _0x514175['destconnectedlinenum']===_0xe951('0x49')){_0x514175[_0xe951('0x3e')]=_0x5bbb0b[_0xe951('0x3c')];logger[_0xe951('0x33')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x5bbb0b[_0xe951('0x30')],util['inspect']({'id':_0x514175['id'],'destaccountcode':_0x514175[_0xe951('0x43')],'destconnectedlinenum':_0x5bbb0b['exten']},{'showHidden':![],'depth':null}));this[_0xe951('0x2d')](util[_0xe951('0x40')](_0xe951('0x4a'),_0x514175[_0xe951('0x41')]),_0xe951('0x42'),{'id':_0x514175['id'],'destaccountcode':_0x514175[_0xe951('0x43')],'destconnectedlinenum':_0x5bbb0b['exten']});}}}}catch(_0x50545f){logger[_0xe951('0x4b')](_0xe951('0x4c'),_0x5bbb0b[_0xe951('0x30')],util[_0xe951('0x29')](_0x50545f,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe951('0x16')]=function(_0x414e8c){try{if(this[_0xe951('0x2b')](_0x414e8c)){logger['debug'](_0xe951('0x4d'),_0x414e8c[_0xe951('0x30')],util['inspect'](_0x414e8c,{'showHidden':![],'depth':null}));if(_0x414e8c['channel']===_0xe951('0x4e')||_0x414e8c[_0xe951('0x3c')]==='h')return;if(_0x414e8c[_0xe951('0x30')]===_0x414e8c[_0xe951('0x35')]||this[_0xe951('0x15')][_0x414e8c['linkedid']]){_0x414e8c['application']=_0x414e8c['application']?_0x414e8c['application'][_0xe951('0x4f')]():undefined;_0x414e8c[_0xe951('0x50')]=_0x414e8c[_0xe951('0x51')]||_0x414e8c[_0xe951('0x50')];if(_0x414e8c[_0xe951('0x51')]&&!_0x414e8c[_0xe951('0x51')][_0xe951('0x52')](_0xe951('0x53'))&&_0x414e8c[_0xe951('0x54')]!==_0xe951('0x9')){_0x414e8c[_0xe951('0x50')]=_0x414e8c[_0xe951('0x50')][_0xe951('0x4f')]();}logger[_0xe951('0x2e')](_0xe951('0x55'),_0x414e8c[_0xe951('0x30')],_0x414e8c['application'],_0x414e8c[_0xe951('0x50')]);if(_['isUndefined'](this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]])){this[_0xe951('0x13')][_0x414e8c['uniqueid']]=new Channel();this[_0xe951('0x13')][_0x414e8c['uniqueid']][_0xe951('0x47')]=_0x414e8c[_0xe951('0x56')]?moment()[_0xe951('0x57')](moment[_0xe951('0x56')](_0x414e8c[_0xe951('0x56')])['seconds'](),_0xe951('0x58'))[_0xe951('0x40')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0xe951('0x40')](_0xe951('0x59'));this[_0xe951('0x13')][_0x414e8c['uniqueid']]['disposition']='NO\x20ANSWER';}_['merge'](this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]],_[_0xe951('0x37')](_0x414e8c,_[_0xe951('0x38')](this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]])));if(_[_0xe951('0x5a')](applications,_0x414e8c['application'])){this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]][_0xe951('0x5b')]=_0x414e8c[_0xe951('0x54')];this['channels'][_0x414e8c[_0xe951('0x30')]]['lastdata']=_0x414e8c[_0xe951('0x50')];if(_0x414e8c['application']==='set'&&_[_0xe951('0x52')](_0x414e8c['applicationdata'][_0xe951('0x4f')](),_0xe951('0x5c'))){var _0x4b6bfc=_0x414e8c[_0xe951('0x50')][_0xe951('0x3b')]('=');var _0x1e0d5d=_0x4b6bfc[0x0][_0xe951('0x4f')]()['match'](/cdr\((.*)\)/);if(_0x1e0d5d){if(_0x1e0d5d[0x1]==='type'&&!_[_0xe951('0x5d')](this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]][_0x1e0d5d[0x1]]))return;this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]][_0x1e0d5d[0x1]]=_0x4b6bfc[0x1];}}else if(_0x414e8c[_0xe951('0x54')]==='queue'){this[_0xe951('0x13')][_0x414e8c[_0xe951('0x30')]]['queue']=_0x414e8c[_0xe951('0x50')][_0xe951('0x3b')](',')[0x0];}}}}}catch(_0x17676a){logger['error'](_0xe951('0x5e'),_0x414e8c[_0xe951('0x30')],util['inspect'](_0x17676a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')]['syncNewState']=function(_0x4b5218){try{if(this['isNotNull'](_0x4b5218)){logger[_0xe951('0x2e')](_0xe951('0x5f'),_0x4b5218['uniqueid'],_0x4b5218[_0xe951('0x35')],_0x4b5218[_0xe951('0x31')],_0x4b5218[_0xe951('0x32')]);logger[_0xe951('0x33')](_0xe951('0x60'),_0x4b5218['uniqueid'],util['inspect'](_0x4b5218,{'showHidden':![],'depth':null}));if(_0x4b5218['channelstate']!=='6')return;var _0x5439b0=this[_0xe951('0x14')][_0x4b5218[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]];if(_0x4b5218[_0xe951('0x30')]!==_0x4b5218['linkedid']){var _0x5b93f1=moment();if(this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]]){if(!this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]][_0xe951('0x61')]){this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]]['answered']=!![];this['channels'][_0x4b5218['linkedid']][_0xe951('0x62')]=_0x5b93f1[_0xe951('0x40')]('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x4b5218[_0xe951('0x35')]][_0xe951('0x47')]){this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]][_0xe951('0x63')]=_0x5b93f1[_0xe951('0x64')](this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]][_0xe951('0x47')],_0xe951('0x58'));}}this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]]['linkedid']=_0x4b5218['uniqueid'];if(_0x4b5218[_0xe951('0x32')]!==_0xe951('0x3d')){this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]]['connectedlinenum']=_0x4b5218[_0xe951('0x32')];}this[_0xe951('0x13')][_0x4b5218['linkedid']][_0xe951('0x65')]=_0x4b5218[_0xe951('0x31')];this[_0xe951('0x13')][_0x4b5218['linkedid']][_0xe951('0x66')]=_0x4b5218['channel'];this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]]['disposition']=dispositions[_['toNumber'](_0x4b5218['channelstate'])];if(_0x5439b0){this['channels'][_0x4b5218[_0xe951('0x35')]][_0xe951('0x67')]=_0x5439b0['id'];this['channels'][_0x4b5218[_0xe951('0x35')]][_0xe951('0x68')]=_0x5439b0[_0xe951('0x41')];}}if(this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]){if(!this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]][_0xe951('0x61')]){this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]['answered']=!![];this['channels'][_0x4b5218[_0xe951('0x30')]][_0xe951('0x62')]=_0x5b93f1[_0xe951('0x40')](_0xe951('0x59'));if(this['channels'][_0x4b5218['uniqueid']][_0xe951('0x47')]){this['channels'][_0x4b5218[_0xe951('0x30')]]['holdtime']=_0x5b93f1[_0xe951('0x64')](this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]['starttime'],_0xe951('0x58'));}}if(_0x4b5218['calleridnum']!==_0xe951('0x3d')){this[_0xe951('0x13')][_0x4b5218['uniqueid']]['connectedlinenum']=_0x4b5218[_0xe951('0x32')];}this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]][_0xe951('0x65')]=_0x4b5218[_0xe951('0x31')];this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]['destinationchannel']=_0x4b5218[_0xe951('0x3a')];this['channels'][_0x4b5218[_0xe951('0x30')]][_0xe951('0x69')]=dispositions[_[_0xe951('0x6a')](_0x4b5218[_0xe951('0x48')])];}}else{if(this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]){if(_0x5439b0){this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]][_0xe951('0x67')]=_0x5439b0['id'];this[_0xe951('0x13')][_0x4b5218[_0xe951('0x30')]]['membername']=_0x5439b0[_0xe951('0x41')];}}}if(_0x4b5218[_0xe951('0x46')]==='from-sip'){if(_0x5439b0){_0x5439b0[_0xe951('0x3e')]=_0x4b5218['exten'];var _0x56be5f,_0x5f4a76;if(this[_0xe951('0x13')][_0x4b5218['uniqueid']]){_0x56be5f=this['channels'][_0x4b5218[_0xe951('0x30')]][_0xe951('0x6b')];_0x5f4a76=this['channels'][_0x4b5218[_0xe951('0x30')]][_0xe951('0x9')];}else if(this['channels'][_0x4b5218[_0xe951('0x35')]]){_0x56be5f=this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]][_0xe951('0x6b')];_0x5f4a76=this[_0xe951('0x13')][_0x4b5218[_0xe951('0x35')]][_0xe951('0x9')];}_0x5439b0[_0xe951('0x9')]=_0x5f4a76;_0x5439b0[_0xe951('0x6b')]=_0x56be5f;var _0x565928={'id':_0x5439b0['id'],'name':_0x5439b0[_0xe951('0x41')],'agentconnected':!![],'destaccountcode':_0x5439b0[_0xe951('0x43')],'destconnectedlinenum':_0x4b5218[_0xe951('0x3c')],'queue':_0x5f4a76||undefined,'routealias':_0x56be5f,'uniqueid':_0x4b5218[_0xe951('0x35')]};logger[_0xe951('0x33')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x4b5218[_0xe951('0x30')],util[_0xe951('0x29')](_0x565928,{'showHidden':![],'depth':null}));this[_0xe951('0x2d')](util[_0xe951('0x40')]('user:%s',_0x5439b0[_0xe951('0x41')]),_0xe951('0x42'),_0x565928);}}}}catch(_0x4b08f4){logger[_0xe951('0x4b')](_0xe951('0x6c'),_0x4b5218[_0xe951('0x30')],util[_0xe951('0x29')](_0x4b08f4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')][_0xe951('0x6d')]=function(_0x232909,_0x5e8948){try{if(this[_0xe951('0x13')][_0x232909]){logger[_0xe951('0x2e')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x232909,_0x5e8948);this['channels'][_0x232909]['monitor']=!![];if(_['endsWith'](_0x5e8948,_0xe951('0x6e'))){_0x5e8948=_0x5e8948[_0xe951('0x6f')]('.wav49',_0xe951('0x70'));}this[_0xe951('0x13')][_0x232909][_0xe951('0x71')]=_0x5e8948;var _0x443470=_[_0xe951('0x72')](this['channels'][_0x232909][_0xe951('0x73')],{'filename':_0x5e8948});if(_[_0xe951('0x5d')](_0x443470)){this[_0xe951('0x13')][_0x232909][_0xe951('0x73')][_0xe951('0x74')]({'filename':_0x5e8948,'createdAt':moment()[_0xe951('0x40')](_0xe951('0x59')),'mixmonitorid':'','status':_0xe951('0x75')});}}}catch(_0x122aff){logger[_0xe951('0x4b')](_0xe951('0x76'),_0x232909,util[_0xe951('0x29')](_0x122aff,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')][_0xe951('0x1d')]=function(_0x8f39a2){try{if(this['isNotNull'](_0x8f39a2)){logger[_0xe951('0x33')](_0xe951('0x77'),_0x8f39a2['uniqueid'],util[_0xe951('0x29')](_0x8f39a2,{'showHidden':![],'depth':null}));if(this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x30')]]&&_0x8f39a2[_0xe951('0x3a')]!=_0xe951('0x4e')){if(this['isNotNull'](_0x8f39a2['variable'])){if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')][_0xe951('0x79')])){logger['info'](_0xe951('0x7a'),_0x8f39a2['uniqueid'],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x6d')](_0x8f39a2[_0xe951('0x30')],_0x8f39a2[_0xe951('0x7b')]);}else if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')][_0xe951('0x7c')])){logger[_0xe951('0x2e')](_0xe951('0x7d'),_0x8f39a2[_0xe951('0x30')],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x13')][_0x8f39a2['uniqueid']]['calleridnum']=_0x8f39a2[_0xe951('0x7b')];}else if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')][_0xe951('0x7e')])){logger[_0xe951('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x8f39a2['uniqueid'],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x30')]][_0xe951('0x7f')]=_0x8f39a2[_0xe951('0x7b')];}else if(this['isNotNull'](_0x8f39a2['variable']['xmd-cdrtype'])){logger['info'](_0xe951('0x80'),_0x8f39a2['uniqueid'],_0x8f39a2['value']);this[_0xe951('0x13')][_0x8f39a2['uniqueid']][_0xe951('0x81')]=_0x8f39a2[_0xe951('0x7b')];}else if(this['isNotNull'](_0x8f39a2['variable'][_0xe951('0x82')])){logger['info'](_0xe951('0x83'),_0x8f39a2[_0xe951('0x30')],_0x8f39a2[_0xe951('0x7b')][_0xe951('0x3b')](',')[0x0]);this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x30')]][_0xe951('0x9')]=_0x8f39a2[_0xe951('0x7b')]['split'](',')[0x0];}else if(this['isNotNull'](_0x8f39a2[_0xe951('0x78')]['xmd-originatecalleridnum'])){logger[_0xe951('0x2e')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x8f39a2[_0xe951('0x30')],_0x8f39a2[_0xe951('0x7b')]);this['channels'][_0x8f39a2[_0xe951('0x30')]]['originatecalleridnum']=_0x8f39a2[_0xe951('0x7b')];}else if(this[_0xe951('0x2b')](_0x8f39a2['variable'][_0xe951('0x84')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x8f39a2[_0xe951('0x30')],_0x8f39a2['value']);this['channels'][_0x8f39a2[_0xe951('0x30')]]['destination']=_0x8f39a2['value'];}else if(this['isNotNull'](_0x8f39a2[_0xe951('0x78')]['xmd-callerid-preview'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x8f39a2['uniqueid'],_0x8f39a2['value']);this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x30')]][_0xe951('0x85')]=_0x8f39a2['value'];}else if(this[_0xe951('0x2b')](_0x8f39a2['variable'][_0xe951('0x86')])){logger[_0xe951('0x2e')](_0xe951('0x87'),_0x8f39a2[_0xe951('0x30')],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x30')]][_0xe951('0x9')]=_0x8f39a2[_0xe951('0x7b')];}else if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')]['sipcallid'])){logger[_0xe951('0x2e')](_0xe951('0x88'),_0x8f39a2['uniqueid'],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x13')][_0x8f39a2['uniqueid']]['sipcalluniqueid']=_0x8f39a2['value'];}}}else if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')][_0xe951('0x79')])){if(_0x8f39a2['value']){var _0x4a6058=path[_0xe951('0x89')](_0x8f39a2['value'])['name'];logger['info'](_0xe951('0x7a'),_0x4a6058,_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x6d')](_0x4a6058,_0x8f39a2['value']);}}else if(this['channels'][_0x8f39a2[_0xe951('0x35')]]){if(this['isNotNull'](_0x8f39a2[_0xe951('0x78')])){if(this[_0xe951('0x2b')](_0x8f39a2[_0xe951('0x78')][_0xe951('0x8a')])){logger[_0xe951('0x2e')](_0xe951('0x88'),_0x8f39a2['linkedid'],_0x8f39a2[_0xe951('0x7b')]);this[_0xe951('0x13')][_0x8f39a2[_0xe951('0x35')]]['sipcalllinkedid']=_0x8f39a2[_0xe951('0x7b')];}}}}}catch(_0x58ad1c){logger[_0xe951('0x4b')]('[%s][voiceCallReport][varset]',_0x8f39a2[_0xe951('0x30')],util[_0xe951('0x29')](_0x58ad1c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')][_0xe951('0x1f')]=function(_0x2582c0){try{if(this['isNotNull'](_0x2582c0)){logger[_0xe951('0x33')](_0xe951('0x8b'),_0x2582c0[_0xe951('0x30')],util[_0xe951('0x29')](_0x2582c0,{'showHidden':![],'depth':null}));if(this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]]){if(this['channels'][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x35')]]){this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0['linkedid']][_0xe951('0x35')]][_0xe951('0x30')]=_0x2582c0[_0xe951('0x30')];this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x35')]][_0xe951('0x61')]=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x61')];this[_0xe951('0x13')][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]][_0xe951('0x35')]][_0xe951('0x62')]=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]['answertime'];this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0['linkedid']][_0xe951('0x35')]]['destinationchannel']=this['channels'][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]]['linkedid']][_0xe951('0x3a')];this['channels'][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x35')]][_0xe951('0x69')]=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]['disposition'];this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]=this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0['linkedid']]['linkedid']];delete this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0['linkedid']][_0xe951('0x35')]];}else if(this[_0xe951('0x13')][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]]['uniqueid']]){this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]]['uniqueid']=[this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]][_0xe951('0x35')],this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]]['uniqueid']][_0xe951('0x35')]=this['channels'][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]][_0xe951('0x30')]][0x0];this[_0xe951('0x13')][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]]['answered']=this[_0xe951('0x13')][_0x2582c0['uniqueid']][_0xe951('0x61')];this['channels'][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]]['uniqueid']]['answertime']=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x62')];this[_0xe951('0x13')][this['blindTransfers'][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]][_0xe951('0x66')]=this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]][_0xe951('0x3a')];this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]][_0xe951('0x30')]][_0xe951('0x69')]=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x69')];this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]=this[_0xe951('0x13')][this['blindTransfers'][_0x2582c0['linkedid']][_0xe951('0x30')]];delete this[_0xe951('0x13')][this[_0xe951('0x15')][_0x2582c0[_0xe951('0x35')]]['uniqueid']];}}if(this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]){logger[_0xe951('0x2e')](_0xe951('0x8c'),_0x2582c0[_0xe951('0x30')],_0x2582c0['cause-txt']);var _0x2152ab=moment();this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x8d')]=_0x2152ab[_0xe951('0x40')](_0xe951('0x59'));this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x56')]=_0x2152ab[_0xe951('0x64')](this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x47')],_0xe951('0x58'));if(this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x61')]){this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x8e')]=_0x2152ab[_0xe951('0x64')](this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x62')],_0xe951('0x58'));this['channels'][_0x2582c0[_0xe951('0x30')]]['holdtime']=this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x56')]-this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]['billableseconds'];}if(_0x2582c0['context']===_0xe951('0x39')){if(this['agents'][_0x2582c0['channel'][_0xe951('0x3b')]('-')[0x0]]){this[_0xe951('0x14')][_0x2582c0[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]]=_['omit'](this[_0xe951('0x14')][_0x2582c0['channel'][_0xe951('0x3b')]('-')[0x0]],['destconnectedlinenum']);logger[_0xe951('0x33')](_0xe951('0x8f'),_0x2582c0[_0xe951('0x30')],util[_0xe951('0x29')]({'id':this['agents'][_0x2582c0['channel'][_0xe951('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xe951('0x14')][_0x2582c0[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]][_0xe951('0x43')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xe951('0x40')](_0xe951('0x4a'),this[_0xe951('0x14')][_0x2582c0[_0xe951('0x3a')]['split']('-')[0x0]]['name']),_0xe951('0x90'),{'id':this[_0xe951('0x14')][_0x2582c0[_0xe951('0x3a')][_0xe951('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xe951('0x14')][_0x2582c0[_0xe951('0x3a')]['split']('-')[0x0]][_0xe951('0x43')]});for(var _0x446439=0x0;_0x446439<Object[_0xe951('0x38')](this['agents'])[_0xe951('0x91')];_0x446439++){var _0x169209=Object[_0xe951('0x38')](this[_0xe951('0x14')])[_0x446439];var _0x476417=this[_0xe951('0x14')][_0x169209];if(_0x476417[_0xe951('0x43')]===Number(this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]]['connectedlinenum'])){this[_0xe951('0x2d')](util[_0xe951('0x40')](_0xe951('0x4a'),_0x476417[_0xe951('0x41')]),_0xe951('0x90'),{'id':_0x476417['id'],'destaccountcode':_0x476417[_0xe951('0x43')],'transfer':this[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x92')]});break;}}}}var _0x3bca8c=this;Promise[_0xe951('0x93')]()[_0xe951('0x94')](function(){var _0xa0e773=_0x3bca8c['channels'][_0x2582c0[_0xe951('0x30')]];if(typeof _0xa0e773['transferType']===_0xe951('0x49'))return;if(_['isEmpty'](_0xa0e773[_0xe951('0x73')]))return;return RpcSetting[_0xe951('0x95')]()[_0xe951('0x94')](function(_0x3e79f8){if(!_0x3e79f8[_0xe951('0x96')])return;return Promise[_0xe951('0x93')]()[_0xe951('0x94')](function(){return ami[_0xe951('0x97')]({'action':'StopMixMonitor','channel':_0xa0e773[_0xe951('0x3a')]})[_0xe951('0x98')](function(){});})[_0xe951('0x94')](function(){return ami[_0xe951('0x97')]({'action':_0xe951('0x99'),'channel':_0xa0e773[_0xe951('0x66')]})[_0xe951('0x98')](function(){})['finally'](function(){var _0x5f0e2d=_0x3bca8c[_0xe951('0x14')][_0xa0e773[_0xe951('0x66')][_0xe951('0x3b')]('-')[0x0]];if(!_0x5f0e2d)return;io[_0xe951('0x2d')]('webbar:stopmonitors',{'agentId':_0x5f0e2d['id'],'uniqueid':_0xa0e773[_0xe951('0x30')]});});});});})[_0xe951('0x94')](function(){if(_0x2582c0[_0xe951('0x9a')]===_0xe951('0x9b')){_0x3bca8c[_0xe951('0x15')][_0x2582c0[_0xe951('0x30')]]=_0x2582c0;}else{if(_0x3bca8c[_0xe951('0x13')][_0x2582c0['uniqueid']]['type']===_0xe951('0x9c')&&_0x3bca8c[_0xe951('0x15')][_0x2582c0['uniqueid']]){_0x3bca8c[_0xe951('0x13')][_0x2582c0['uniqueid']][_0xe951('0x30')]=[_0x3bca8c[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x35')],_0x3bca8c[_0xe951('0x13')][_0x2582c0['uniqueid']]['linkedid']=_0x3bca8c[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]][_0xe951('0x30')]][0x0];delete _0x3bca8c[_0xe951('0x15')][_0x2582c0['uniqueid']];}}logger[_0xe951('0x33')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x2582c0[_0xe951('0x30')],util[_0xe951('0x29')](_0x3bca8c[_0xe951('0x13')][_0x2582c0[_0xe951('0x30')]],{'showHidden':![],'depth':null}));ami[_0xe951('0x2d')](_0xe951('0x9d'),_0x3bca8c['channels'][_0x2582c0['uniqueid']]);delete _0x3bca8c['channels'][_0x2582c0['uniqueid']];});}}}catch(_0x1050d9){logger[_0xe951('0x4b')](_0xe951('0x9e'),_0x2582c0['uniqueid'],util['inspect'](_0x1050d9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')]['syncAttendedTransfer']=function(_0xf8195d){try{if(this[_0xe951('0x2b')](_0xf8195d)){logger[_0xe951('0x2e')](_0xe951('0x9f'),_0xf8195d['uniqueid'],_0xf8195d['origtransferercalleridnum'],_0xf8195d[_0xe951('0xa0')]);logger['debug'](_0xe951('0xa1'),_0xf8195d['uniqueid'],util[_0xe951('0x29')](_0xf8195d,{'showHidden':![],'depth':null}));var _0x59958;if(this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa2')]]){this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa2')]][_0xe951('0xa3')]=_0xf8195d[_0xe951('0xa4')];this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa2')]][_0xe951('0xa5')]=_0xf8195d[_0xe951('0xa0')];if(this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa6')]]){_0x59958=this[_0xe951('0x13')][_0xf8195d['secondtransfereruniqueid']];this[_0xe951('0x13')][_0xf8195d['secondtransfereruniqueid']]=this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa2')]];this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa2')]]=_0x59958;}this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa6')]][_0xe951('0x92')]=_0xe951('0xa7');}else if(this[_0xe951('0x13')][_0xf8195d['transfertargetuniqueid']]){this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa8')]]['transfercalleridnum']=_0xf8195d['origtransferercalleridnum'];this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa8')]][_0xe951('0xa5')]=_0xf8195d[_0xe951('0xa0')];if(this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa9')]]){_0x59958=this['channels'][_0xf8195d[_0xe951('0xa9')]];this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa9')]]=this[_0xe951('0x13')][_0xf8195d['transfertargetuniqueid']];this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa8')]]=_0x59958;}this['channels'][_0xf8195d[_0xe951('0xa8')]][_0xe951('0x92')]=_0xe951('0xa7');}if((this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa9')]]||this[_0xe951('0x13')][_0xf8195d[_0xe951('0xaa')]])&&this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa6')]]){var _0x302ac7=_[_0xe951('0xab')]([this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa9')]],this[_0xe951('0x13')][_0xf8195d[_0xe951('0xaa')]],this[_0xe951('0x13')][_0xf8195d['secondtransfereruniqueid']]],function(_0x4cbfb0){return _0x4cbfb0&&_0x4cbfb0['type']===_0xe951('0x9c')&&_0x4cbfb0[_0xe951('0xac')];});if(_0x302ac7){if(this[_0xe951('0x13')][_0xf8195d[_0xe951('0xa9')]])this['channels'][_0xf8195d[_0xe951('0xa9')]]['transferType']='ATTENDED';if(this[_0xe951('0x13')][_0xf8195d[_0xe951('0xaa')]])this[_0xe951('0x13')][_0xf8195d[_0xe951('0xaa')]][_0xe951('0x92')]='ATTENDED';this['channels'][_0xf8195d[_0xe951('0xa6')]][_0xe951('0x92')]=_0xe951('0xa7');}}}}catch(_0x1f47c){logger[_0xe951('0x4b')](_0xe951('0xad'),_0xf8195d[_0xe951('0x30')],util[_0xe951('0x29')](_0x1f47c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')]['syncBlindTransfer']=function(_0x3c1af8){try{if(this[_0xe951('0x2b')](_0x3c1af8)){logger[_0xe951('0x2e')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x3c1af8[_0xe951('0x30')],_0x3c1af8['transfereecalleridnum'],_0x3c1af8[_0xe951('0xae')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x3c1af8[_0xe951('0x30')],util['inspect'](_0x3c1af8,{'showHidden':![],'depth':null}));if(this[_0xe951('0x13')][_0x3c1af8[_0xe951('0xa2')]]){this[_0xe951('0x13')][_0x3c1af8[_0xe951('0xa2')]]['transfercalleridnum']=_0x3c1af8[_0xe951('0xaf')];this[_0xe951('0x13')][_0x3c1af8[_0xe951('0xa2')]][_0xe951('0xa5')]=_0x3c1af8[_0xe951('0xae')];this['channels'][_0x3c1af8[_0xe951('0xa2')]][_0xe951('0x92')]=_0xe951('0xb0');this[_0xe951('0x1f')]({'event':_0xe951('0x9b'),'uniqueid':_0x3c1af8[_0xe951('0xa2')],'linkedid':_0x3c1af8['transfereruniqueid'],'context':_0x3c1af8[_0xe951('0x46')],'channel':_0x3c1af8[_0xe951('0xb1')]});}else{this['channels'][_0x3c1af8[_0xe951('0xb2')]]['transferType']=_0xe951('0xb0');this[_0xe951('0x1f')]({'event':_0xe951('0x9b'),'uniqueid':_0x3c1af8['transfereruniqueid'],'linkedid':_0x3c1af8[_0xe951('0xa2')],'context':_0x3c1af8[_0xe951('0x46')],'channel':_0x3c1af8[_0xe951('0xb1')]});}}}catch(_0x447a04){logger['error'](_0xe951('0xb3'),_0x3c1af8[_0xe951('0x30')],util['inspect'](_0x447a04,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe951('0x26')]=function(_0x495a7e){try{if(this['isNotNull'](_0x495a7e)){logger['debug'](_0xe951('0xb4'),_0x495a7e[_0xe951('0x30')],util[_0xe951('0x29')](_0x495a7e,{'showHidden':![],'depth':null}));if(this[_0xe951('0x13')][_0x495a7e[_0xe951('0x30')]]){if(!_['isNil'](this[_0xe951('0x13')][_0x495a7e[_0xe951('0x30')]][_0xe951('0x62')])){this['channels'][_0x495a7e['uniqueid']][_0xe951('0xb5')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0xe951('0x2e')](_0xe951('0xb6'),_0x495a7e[_0xe951('0x30')],this[_0xe951('0x13')][_0x495a7e[_0xe951('0x30')]][_0xe951('0xb5')]);}}}}catch(_0xc9f5b3){logger['error'](_0xe951('0xb7'),_0x495a7e[_0xe951('0x30')],util[_0xe951('0x29')](_0xc9f5b3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe951('0x2a')][_0xe951('0xb8')]=function(_0x524a30){try{if(this[_0xe951('0x2b')](_0x524a30)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x524a30['uniqueid'],util[_0xe951('0x29')](_0x524a30,{'showHidden':![],'depth':null}));if(this['channels'][_0x524a30[_0xe951('0x30')]]){if(!_['isNil'](this[_0xe951('0x13')][_0x524a30[_0xe951('0x30')]][_0xe951('0xb5')])){this[_0xe951('0x13')][_0x524a30['uniqueid']][_0xe951('0xb9')]+=moment()[_0xe951('0xba')](0x0)[_0xe951('0x64')](this[_0xe951('0x13')][_0x524a30[_0xe951('0x30')]][_0xe951('0xb5')],_0xe951('0x58'));logger['info'](_0xe951('0xbb'),_0x524a30['uniqueid'],this[_0xe951('0x13')][_0x524a30[_0xe951('0x30')]]['mohtime']);delete this[_0xe951('0x13')][_0x524a30['uniqueid']][_0xe951('0xb5')];}}}}catch(_0x1f1695){logger[_0xe951('0x4b')](_0xe951('0xbc'),_0x524a30[_0xe951('0x30')],util['inspect'](_0x1f1695,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 6d62596..b31b20b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberdynamic','memberinterface','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','duration','starttime','lastevent','complete','total','answertime','answered','holdtime','diff','seconds','billableseconds','sumHoldTime','sumBillable','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','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','dialbegin','bind','dialend','syncDialEnd','syncVarSet','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','lastIndexOf','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','variable','value','outboundrouteid','variables','voice','keys'];(function(_0x26ddfe,_0xacae3f){var _0xa8f46f=function(_0xf55584){while(--_0xf55584){_0x26ddfe['push'](_0x26ddfe['shift']());}};_0xa8f46f(++_0xacae3f);}(_0x1883,0xab));var _0x3188=function(_0x4525b5,_0x3fb5cd){_0x4525b5=_0x4525b5-0x0;var _0x15777c=_0x1883[_0x4525b5];return _0x15777c;};'use strict';var _=require(_0x3188('0x0'));var moment=require(_0x3188('0x1'));var util=require(_0x3188('0x2'));var Redis=require(_0x3188('0x3'));var config=require(_0x3188('0x4'));var logger=require(_0x3188('0x5'))(_0x3188('0x6'));var ami=require(_0x3188('0x7'));config[_0x3188('0x8')]=_[_0x3188('0x9')](config[_0x3188('0x8')],{'host':_0x3188('0xa'),'port':0x18eb});var io=require(_0x3188('0xb'))(new Redis(config[_0x3188('0x8')]));function VoiceDialReport(_0x24f2f1){this[_0x3188('0xc')]=_0x24f2f1[_0x3188('0xd')];this['outbound']=_0x24f2f1[_0x3188('0xe')];this[_0x3188('0xf')]={};this['variables']={};ami['on'](_0x3188('0x10'),this['syncDialBegin'][_0x3188('0x11')](this));ami['on'](_0x3188('0x12'),this[_0x3188('0x13')][_0x3188('0x11')](this));ami['on']('varset',this[_0x3188('0x14')][_0x3188('0x11')](this));ami['on']('hangup',this['syncHangup'][_0x3188('0x11')](this));}VoiceDialReport[_0x3188('0x15')][_0x3188('0x16')]=function(_0x3ae228){return _0x3ae228!==null&&!_[_0x3188('0x17')](_0x3ae228);};VoiceDialReport[_0x3188('0x15')]['emit']=function(_0x276d69,_0x5e0044,_0x4a2f36){io['to'](_0x276d69)[_0x3188('0x18')](_0x5e0044,_0x4a2f36);};VoiceDialReport['prototype']['syncDialBegin']=function(_0x32c239){try{if(this[_0x3188('0x16')](_0x32c239)){logger[_0x3188('0x19')](_0x3188('0x1a'),_0x32c239[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x32c239,{'showHidden':![],'depth':null}));if(this['channels'][_0x32c239[_0x3188('0x1b')]]){_[_0x3188('0x1d')](this[_0x3188('0xc')][_0x32c239[_0x3188('0x1b')]],{'starttime':moment()[_0x3188('0x1e')](_0x3188('0x1f')),'lastevent':_0x3188('0x20'),'interface':_0x32c239[_0x3188('0x21')]['substring'](0x0,_0x32c239[_0x3188('0x21')][_0x3188('0x22')]('-')),'membername':_0x32c239['channel']['substring'](_0x32c239['channel'][_0x3188('0x22')]('/')+0x1,_0x32c239[_0x3188('0x21')][_0x3188('0x22')]('-'))},_['omit'](_0x32c239,['event',_0x3188('0x23')]));logger[_0x3188('0x24')](_0x3188('0x25'),_0x32c239[_0x3188('0x1b')],this[_0x3188('0xc')][_0x32c239['uniqueid']][_0x3188('0x26')],this[_0x3188('0xc')][_0x32c239['uniqueid']][_0x3188('0x27')]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x32c239[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x32c239[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));if(this[_0x3188('0xf')][_0x32c239[_0x3188('0x1b')]])_[_0x3188('0x1d')](this[_0x3188('0xc')][_0x32c239['uniqueid']],this[_0x3188('0xf')][_0x32c239[_0x3188('0x1b')]]);this['emit'](_0x3188('0x28'),_0x3188('0x29'),this[_0x3188('0xc')][_0x32c239[_0x3188('0x1b')]]);logger[_0x3188('0x19')](_0x3188('0x2a'),_0x32c239[_0x3188('0x1b')],util[_0x3188('0x1c')](this['channels'][_0x32c239[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0x3188('0x2b'),this['channels'][_0x32c239[_0x3188('0x1b')]]);}}}catch(_0x80f9a8){logger[_0x3188('0x2c')](_0x3188('0x2d'),_0x32c239[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x80f9a8,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x3188('0x15')][_0x3188('0x13')]=function(_0x3188a1){try{if(this[_0x3188('0x16')](_0x3188a1)){logger[_0x3188('0x19')](_0x3188('0x2e'),_0x3188a1[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x3188a1,{'showHidden':![],'depth':null}));if(this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]]){this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]]['dialstatus']=_0x3188a1[_0x3188('0x2f')];if(_0x3188a1['dialstatus']===_0x3188('0x30')){this[_0x3188('0xc')][_0x3188a1['uniqueid']][_0x3188('0x31')]=_0x3188a1[_0x3188('0x31')];this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]][_0x3188('0x32')]=_0x3188a1[_0x3188('0x32')];this[_0x3188('0xc')][_0x3188a1['uniqueid']]['answertime']=moment()[_0x3188('0x1e')](_0x3188('0x1f'));this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]]['lastevent']=_0x3188('0x33');logger[_0x3188('0x24')](_0x3188('0x34'),_0x3188a1[_0x3188('0x1b')],_0x3188a1['channel'][_0x3188('0x35')](_0x3188a1['channel'][_0x3188('0x22')]('/')+0x1,_0x3188a1['channel'][_0x3188('0x22')]('-')));logger[_0x3188('0x19')](_0x3188('0x36'),_0x3188a1[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x3188('0x18')](_0x3188('0x37'),this[_0x3188('0xc')][_0x3188a1['uniqueid']]);}logger[_0x3188('0x19')](_0x3188('0x38'),_0x3188a1[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));this['emit'](_0x3188('0x28'),'voice_outbound_channel:save',this[_0x3188('0xc')][_0x3188a1[_0x3188('0x1b')]]);}}}catch(_0xb9a025){logger[_0x3188('0x2c')](_0x3188('0x39'),_0x3188a1['uniqueid'],util['inspect'](_0xb9a025,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x4b9ed3){try{if(this[_0x3188('0x16')](_0x4b9ed3)){logger[_0x3188('0x19')](_0x3188('0x3a'),_0x4b9ed3[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x4b9ed3,{'showHidden':![],'depth':null}));this['addVariable'](_0x4b9ed3[_0x3188('0x1b')],_['keys'](_0x4b9ed3[_0x3188('0x3b')])[0x0],_0x4b9ed3[_0x3188('0x3c')]);if(this[_0x3188('0x16')](_0x4b9ed3[_0x3188('0x3b')])&&this['isNotNull'](_0x4b9ed3[_0x3188('0x3b')][_0x3188('0x3d')])){if(_[_0x3188('0x17')](this[_0x3188('0xc')][_0x4b9ed3[_0x3188('0x1b')]])){this['channels'][_0x4b9ed3['uniqueid']]={'routeId':_0x4b9ed3[_0x3188('0x3c')],'variables':this[_0x3188('0x3e')][_0x4b9ed3['uniqueid']],'motionChannel':_0x3188('0x3f')};logger[_0x3188('0x24')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x4b9ed3[_0x3188('0x1b')],_0x4b9ed3[_0x3188('0x3b')][_0x3188('0x3d')],_[_0x3188('0x40')](_0x4b9ed3[_0x3188('0x3b')])[0x0],_0x4b9ed3['value']);logger[_0x3188('0x19')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4b9ed3[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x4b9ed3[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));this[_0x3188('0x18')](_0x3188('0x28'),_0x3188('0x29'),this[_0x3188('0xc')][_0x4b9ed3[_0x3188('0x1b')]]);}}}}catch(_0xf21263){logger[_0x3188('0x2c')]('[%s][voiceDialReport][varset]',_0x4b9ed3['uniqueid'],util[_0x3188('0x1c')](_0xf21263,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x3188('0x41')]=function(_0x3efc29,_0x4e643f,_0x3abc6b){var _0x16417a=[_0x3188('0x42'),_0x3188('0x43'),_0x3188('0x44'),_0x3188('0x45'),_0x3188('0x46'),_0x3188('0x47'),'rtpaudioqosrtt',_0x3188('0x48'),_0x3188('0x49'),'sipuri',_0x3188('0x4a'),'bridgepvtcallid',_0x3188('0x4b'),_0x3188('0x4c'),_0x3188('0x4d'),'memberlastcall','membername','memberpenalty','memberrealtime'];if(!_['isNil'](_0x4e643f)&&!_[_0x3188('0x4e')](_0x16417a,_0x4e643f)){if(_[_0x3188('0x17')](this['variables'][_0x3efc29])){this[_0x3188('0x3e')][_0x3efc29]={};}this[_0x3188('0x3e')][_0x3efc29][_0x4e643f]=_0x3abc6b;}};VoiceDialReport['prototype']['syncHangup']=function(_0x53d604){try{if(this['isNotNull'](_0x53d604)){logger['debug'](_0x3188('0x4f'),_0x53d604[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x53d604,{'showHidden':![],'depth':null}));if(this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]]){logger['info'](_0x3188('0x50'),_0x53d604[_0x3188('0x1b')],_0x53d604['cause-txt']);this['channels'][_0x53d604['uniqueid']][_0x3188('0x51')]=moment()[_0x3188('0x1e')](_0x3188('0x1f'));this['channels'][_0x53d604[_0x3188('0x1b')]][_0x3188('0x52')]=moment(this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x51')])['diff'](this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x53')],'seconds');this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x54')]=_0x3188('0x55');this['outbound'][_0x3188('0x56')]+=0x1;if(this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x57')]){this[_0x3188('0xe')][_0x3188('0x58')]+=0x1;this[_0x3188('0xc')][_0x53d604['uniqueid']][_0x3188('0x59')]=moment(this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x57')])[_0x3188('0x5a')](this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]]['starttime'],_0x3188('0x5b'));this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x5c')]=moment(this[_0x3188('0xc')][_0x53d604['uniqueid']][_0x3188('0x51')])[_0x3188('0x5a')](this['channels'][_0x53d604['uniqueid']][_0x3188('0x57')],_0x3188('0x5b'));this[_0x3188('0xe')][_0x3188('0x5d')]+=this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]][_0x3188('0x59')]||0x0;this[_0x3188('0xe')][_0x3188('0x5e')]+=this[_0x3188('0xc')][_0x53d604['uniqueid']][_0x3188('0x5c')];}this['outbound']['sumDuration']+=this[_0x3188('0xc')][_0x53d604['uniqueid']][_0x3188('0x52')];logger[_0x3188('0x19')](_0x3188('0x5f'),_0x53d604[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x53d604['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x3188('0x18')](_0x3188('0x60'),this['channels'][_0x53d604[_0x3188('0x1b')]]);logger[_0x3188('0x19')](_0x3188('0x61'),_0x53d604[_0x3188('0x1b')],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x53d604['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x3188('0x18')](_0x3188('0x62'),this['channels'][_0x53d604[_0x3188('0x1b')]]);logger[_0x3188('0x19')](_0x3188('0x63'),_0x53d604['uniqueid'],util[_0x3188('0x1c')](this[_0x3188('0xc')][_0x53d604[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));this[_0x3188('0x18')](_0x3188('0x28'),_0x3188('0x64'),this[_0x3188('0xe')]);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON['stringify'](this['channels'][_0x53d604[_0x3188('0x1b')]]));logger[_0x3188('0x19')](_0x3188('0x65'),_0x53d604[_0x3188('0x1b')],util[_0x3188('0x1c')](this['channels'][_0x53d604[_0x3188('0x1b')]],{'showHidden':![],'depth':null}));this['emit'](_0x3188('0x28'),_0x3188('0x66'),this['channels'][_0x53d604[_0x3188('0x1b')]]);delete this['channels'][_0x53d604[_0x3188('0x1b')]];}else if(this[_0x3188('0xc')][_0x53d604['linkedid']]){this[_0x3188('0xc')][_0x53d604['linkedid']][_0x3188('0x1b')]=this[_0x3188('0xc')][_0x53d604[_0x3188('0x67')]][_0x3188('0x68')];}if(this[_0x3188('0x3e')][_0x53d604['uniqueid']]){delete this[_0x3188('0x3e')][_0x53d604[_0x3188('0x1b')]];}}}catch(_0x562449){logger[_0x3188('0x2c')](_0x3188('0x69'),_0x53d604['uniqueid'],util['inspect'](_0x562449,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x3188('0x15')][_0x3188('0x6a')]=function(_0x1c98d1){try{if(this[_0x3188('0x16')](_0x1c98d1)){logger[_0x3188('0x19')](_0x3188('0x6b'),_0x1c98d1['uniqueid'],util[_0x3188('0x1c')](_0x1c98d1,{'showHidden':![],'depth':null}));if(_0x1c98d1[_0x3188('0x6c')][_0x3188('0x6d')]()==='set'){_0x1c98d1[_0x3188('0x6e')]=(_0x1c98d1[_0x3188('0x6f')]||_0x1c98d1[_0x3188('0x6e')])[_0x3188('0x6d')]();if(_[_0x3188('0x70')](_0x1c98d1[_0x3188('0x6e')],'cdr(')){if(_['isUndefined'](this['applications'][_0x1c98d1[_0x3188('0x1b')]]))this[_0x3188('0xf')][_0x1c98d1['uniqueid']]={};logger[_0x3188('0x24')](_0x3188('0x71'),_0x1c98d1[_0x3188('0x1b')],_0x1c98d1[_0x3188('0x6c')],_0x1c98d1[_0x3188('0x6e')]);var _0x2604ef=_0x1c98d1['applicationdata'][_0x3188('0x72')]('=');var _0x7216ab=_0x2604ef[0x0][_0x3188('0x73')](/cdr\((.*)\)/);if(_0x7216ab)this[_0x3188('0xf')][_0x1c98d1[_0x3188('0x1b')]][_0x7216ab[0x1]]=_0x2604ef[0x1];}}}}catch(_0x3849c3){logger[_0x3188('0x2c')](_0x3188('0x74'),_0x1c98d1[_0x3188('0x1b')],util[_0x3188('0x1c')](_0x3849c3,{'showHidden':![],'depth':null}));}};module[_0x3188('0x75')]=VoiceDialReport;
\ No newline at end of file
+var _0xafc4=['variables','dialbegin','syncDialBegin','bind','syncVarSet','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','omit','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','endtime','diff','starttime','seconds','complete','total','answered','holdtime','billableseconds','sumHoldTime','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','util','../../../config/environment','../../../config/logger','ami','../ami','localhost','socket.io-emitter','redis','channels','outboundChannels','outbound','applications'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xafc4,0x69));var _0x4afc=function(_0x1b939d,_0x3ece74){_0x1b939d=_0x1b939d-0x0;var _0x554205=_0xafc4[_0x1b939d];return _0x554205;};'use strict';var _=require(_0x4afc('0x0'));var moment=require('moment');var util=require(_0x4afc('0x1'));var Redis=require('ioredis');var config=require(_0x4afc('0x2'));var logger=require(_0x4afc('0x3'))(_0x4afc('0x4'));var ami=require(_0x4afc('0x5'));config['redis']=_['defaults'](config['redis'],{'host':_0x4afc('0x6'),'port':0x18eb});var io=require(_0x4afc('0x7'))(new Redis(config[_0x4afc('0x8')]));function VoiceDialReport(_0x1bb281){this[_0x4afc('0x9')]=_0x1bb281[_0x4afc('0xa')];this['outbound']=_0x1bb281[_0x4afc('0xb')];this[_0x4afc('0xc')]={};this[_0x4afc('0xd')]={};ami['on'](_0x4afc('0xe'),this[_0x4afc('0xf')][_0x4afc('0x10')](this));ami['on']('dialend',this['syncDialEnd'][_0x4afc('0x10')](this));ami['on']('varset',this[_0x4afc('0x11')][_0x4afc('0x10')](this));ami['on']('hangup',this[_0x4afc('0x12')][_0x4afc('0x10')](this));}VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x14')]=function(_0x1d8f98){return _0x1d8f98!==null&&!_[_0x4afc('0x15')](_0x1d8f98);};VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x16')]=function(_0x5effb4,_0x26f3f1,_0x429fd8){io['to'](_0x5effb4)[_0x4afc('0x16')](_0x26f3f1,_0x429fd8);};VoiceDialReport[_0x4afc('0x13')]['syncDialBegin']=function(_0x4e32e8){try{if(this[_0x4afc('0x14')](_0x4e32e8)){logger['debug'](_0x4afc('0x17'),_0x4e32e8[_0x4afc('0x18')],util[_0x4afc('0x19')](_0x4e32e8,{'showHidden':![],'depth':null}));if(this[_0x4afc('0x9')][_0x4e32e8[_0x4afc('0x18')]]){_[_0x4afc('0x1a')](this[_0x4afc('0x9')][_0x4e32e8[_0x4afc('0x18')]],{'starttime':moment()[_0x4afc('0x1b')](_0x4afc('0x1c')),'lastevent':_0x4afc('0x1d'),'interface':_0x4e32e8['channel'][_0x4afc('0x1e')](0x0,_0x4e32e8[_0x4afc('0x1f')][_0x4afc('0x20')]('-')),'membername':_0x4e32e8[_0x4afc('0x1f')]['substring'](_0x4e32e8[_0x4afc('0x1f')][_0x4afc('0x20')]('/')+0x1,_0x4e32e8[_0x4afc('0x1f')][_0x4afc('0x20')]('-'))},_[_0x4afc('0x21')](_0x4e32e8,[_0x4afc('0x22'),_0x4afc('0x23')]));logger['info'](_0x4afc('0x24'),_0x4e32e8[_0x4afc('0x18')],this['channels'][_0x4e32e8[_0x4afc('0x18')]]['membername'],this[_0x4afc('0x9')][_0x4e32e8[_0x4afc('0x18')]][_0x4afc('0x25')]);logger[_0x4afc('0x26')](_0x4afc('0x27'),_0x4e32e8[_0x4afc('0x18')],util[_0x4afc('0x19')](this[_0x4afc('0x9')][_0x4e32e8[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x4afc('0xc')][_0x4e32e8[_0x4afc('0x18')]])_[_0x4afc('0x1a')](this[_0x4afc('0x9')][_0x4e32e8['uniqueid']],this[_0x4afc('0xc')][_0x4e32e8[_0x4afc('0x18')]]);this[_0x4afc('0x16')]('voice:outbound','voice_outbound_channel:save',this['channels'][_0x4e32e8[_0x4afc('0x18')]]);logger[_0x4afc('0x26')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4e32e8[_0x4afc('0x18')],util[_0x4afc('0x19')](this['channels'][_0x4e32e8['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x4afc('0x28'),this[_0x4afc('0x9')][_0x4e32e8[_0x4afc('0x18')]]);}}}catch(_0x46357b){logger[_0x4afc('0x29')](_0x4afc('0x2a'),_0x4e32e8['uniqueid'],util[_0x4afc('0x19')](_0x46357b,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x2b')]=function(_0x2f178c){try{if(this[_0x4afc('0x14')](_0x2f178c)){logger[_0x4afc('0x26')](_0x4afc('0x2c'),_0x2f178c[_0x4afc('0x18')],util['inspect'](_0x2f178c,{'showHidden':![],'depth':null}));if(this[_0x4afc('0x9')][_0x2f178c['uniqueid']]){this['channels'][_0x2f178c[_0x4afc('0x18')]][_0x4afc('0x2d')]=_0x2f178c[_0x4afc('0x2d')];if(_0x2f178c[_0x4afc('0x2d')]===_0x4afc('0x2e')){this[_0x4afc('0x9')][_0x2f178c['uniqueid']][_0x4afc('0x2f')]=_0x2f178c[_0x4afc('0x2f')];this[_0x4afc('0x9')][_0x2f178c[_0x4afc('0x18')]][_0x4afc('0x30')]=_0x2f178c[_0x4afc('0x30')];this['channels'][_0x2f178c[_0x4afc('0x18')]][_0x4afc('0x31')]=moment()[_0x4afc('0x1b')](_0x4afc('0x1c'));this['channels'][_0x2f178c['uniqueid']][_0x4afc('0x32')]=_0x4afc('0x33');logger[_0x4afc('0x34')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x2f178c['uniqueid'],_0x2f178c[_0x4afc('0x1f')]['substring'](_0x2f178c['channel'][_0x4afc('0x20')]('/')+0x1,_0x2f178c[_0x4afc('0x1f')][_0x4afc('0x20')]('-')));logger[_0x4afc('0x26')](_0x4afc('0x35'),_0x2f178c[_0x4afc('0x18')],util[_0x4afc('0x19')](this[_0x4afc('0x9')][_0x2f178c[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));ami[_0x4afc('0x16')](_0x4afc('0x36'),this[_0x4afc('0x9')][_0x2f178c[_0x4afc('0x18')]]);}logger[_0x4afc('0x26')](_0x4afc('0x37'),_0x2f178c['uniqueid'],util[_0x4afc('0x19')](this[_0x4afc('0x9')][_0x2f178c[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));this[_0x4afc('0x16')](_0x4afc('0x38'),_0x4afc('0x39'),this[_0x4afc('0x9')][_0x2f178c['uniqueid']]);}}}catch(_0x5e97f4){logger['error'](_0x4afc('0x3a'),_0x2f178c[_0x4afc('0x18')],util['inspect'](_0x5e97f4,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x11')]=function(_0x8ba5e6){try{if(this[_0x4afc('0x14')](_0x8ba5e6)){logger['debug'](_0x4afc('0x3b'),_0x8ba5e6[_0x4afc('0x18')],util[_0x4afc('0x19')](_0x8ba5e6,{'showHidden':![],'depth':null}));this[_0x4afc('0x3c')](_0x8ba5e6[_0x4afc('0x18')],_[_0x4afc('0x3d')](_0x8ba5e6['variable'])[0x0],_0x8ba5e6[_0x4afc('0x3e')]);if(this['isNotNull'](_0x8ba5e6[_0x4afc('0x3f')])&&this[_0x4afc('0x14')](_0x8ba5e6[_0x4afc('0x3f')]['outboundrouteid'])){if(_['isUndefined'](this[_0x4afc('0x9')][_0x8ba5e6[_0x4afc('0x18')]])){this[_0x4afc('0x9')][_0x8ba5e6[_0x4afc('0x18')]]={'routeId':_0x8ba5e6[_0x4afc('0x3e')],'variables':this[_0x4afc('0xd')][_0x8ba5e6[_0x4afc('0x18')]],'motionChannel':_0x4afc('0x40')};logger['info'](_0x4afc('0x41'),_0x8ba5e6[_0x4afc('0x18')],_0x8ba5e6['variable'][_0x4afc('0x42')],_['keys'](_0x8ba5e6[_0x4afc('0x3f')])[0x0],_0x8ba5e6[_0x4afc('0x3e')]);logger[_0x4afc('0x26')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x8ba5e6[_0x4afc('0x18')],util[_0x4afc('0x19')](this[_0x4afc('0x9')][_0x8ba5e6[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));this[_0x4afc('0x16')](_0x4afc('0x38'),'voice_outbound_channel:save',this['channels'][_0x8ba5e6['uniqueid']]);}}}}catch(_0x32f3b9){logger[_0x4afc('0x29')](_0x4afc('0x43'),_0x8ba5e6[_0x4afc('0x18')],util[_0x4afc('0x19')](_0x32f3b9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x3c')]=function(_0x41d690,_0x25347e,_0x464f94){var _0x48dbe3=[_0x4afc('0x44'),'rtpaudioqosbridged','rtpaudioqosjitter',_0x4afc('0x45'),'rtpaudioqosloss',_0x4afc('0x46'),_0x4afc('0x47'),_0x4afc('0x48'),_0x4afc('0x49'),'sipuri',_0x4afc('0x4a'),'bridgepvtcallid',_0x4afc('0x4b'),_0x4afc('0x4c'),_0x4afc('0x4d'),_0x4afc('0x4e'),_0x4afc('0x4f'),_0x4afc('0x50'),_0x4afc('0x51')];if(!_[_0x4afc('0x52')](_0x25347e)&&!_[_0x4afc('0x53')](_0x48dbe3,_0x25347e)){if(_[_0x4afc('0x15')](this[_0x4afc('0xd')][_0x41d690])){this[_0x4afc('0xd')][_0x41d690]={};}this['variables'][_0x41d690][_0x25347e]=_0x464f94;}};VoiceDialReport[_0x4afc('0x13')][_0x4afc('0x12')]=function(_0x33ff7c){try{if(this[_0x4afc('0x14')](_0x33ff7c)){logger[_0x4afc('0x26')](_0x4afc('0x54'),_0x33ff7c[_0x4afc('0x18')],util[_0x4afc('0x19')](_0x33ff7c,{'showHidden':![],'depth':null}));if(this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]]){logger[_0x4afc('0x34')](_0x4afc('0x55'),_0x33ff7c[_0x4afc('0x18')],_0x33ff7c['cause-txt']);this[_0x4afc('0x9')][_0x33ff7c['uniqueid']][_0x4afc('0x56')]=moment()[_0x4afc('0x1b')](_0x4afc('0x1c'));this[_0x4afc('0x9')][_0x33ff7c['uniqueid']]['duration']=moment(this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]]['endtime'])[_0x4afc('0x57')](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x58')],_0x4afc('0x59'));this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x32')]=_0x4afc('0x5a');this[_0x4afc('0xb')][_0x4afc('0x5b')]+=0x1;if(this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x31')]){this['outbound'][_0x4afc('0x5c')]+=0x1;this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x5d')]=moment(this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x31')])['diff'](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]]['starttime'],'seconds');this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x5e')]=moment(this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x56')])[_0x4afc('0x57')](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x31')],'seconds');this['outbound'][_0x4afc('0x5f')]+=this[_0x4afc('0x9')][_0x33ff7c['uniqueid']][_0x4afc('0x5d')]||0x0;this[_0x4afc('0xb')]['sumBillable']+=this['channels'][_0x33ff7c[_0x4afc('0x18')]][_0x4afc('0x5e')];}this[_0x4afc('0xb')]['sumDuration']+=this[_0x4afc('0x9')][_0x33ff7c['uniqueid']]['duration'];logger[_0x4afc('0x26')](_0x4afc('0x60'),_0x33ff7c[_0x4afc('0x18')],util[_0x4afc('0x19')](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));ami[_0x4afc('0x16')](_0x4afc('0x61'),this[_0x4afc('0x9')][_0x33ff7c['uniqueid']]);logger[_0x4afc('0x26')](_0x4afc('0x62'),_0x33ff7c[_0x4afc('0x18')],util['inspect'](this['channels'][_0x33ff7c['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x4afc('0x16')](_0x4afc('0x63'),this[_0x4afc('0x9')][_0x33ff7c['uniqueid']]);logger[_0x4afc('0x26')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x33ff7c['uniqueid'],util['inspect'](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));this[_0x4afc('0x16')]('voice:outbound',_0x4afc('0x64'),this[_0x4afc('0xb')]);logger[_0x4afc('0x34')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x4afc('0x65')](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]]));logger[_0x4afc('0x26')](_0x4afc('0x66'),_0x33ff7c['uniqueid'],util['inspect'](this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]],{'showHidden':![],'depth':null}));this[_0x4afc('0x16')]('voice:outbound',_0x4afc('0x67'),this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]]);delete this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x18')]];}else if(this['channels'][_0x33ff7c[_0x4afc('0x68')]]){this[_0x4afc('0x9')][_0x33ff7c['linkedid']][_0x4afc('0x18')]=this[_0x4afc('0x9')][_0x33ff7c[_0x4afc('0x68')]]['destuniqueid'];}if(this[_0x4afc('0xd')][_0x33ff7c[_0x4afc('0x18')]]){delete this[_0x4afc('0xd')][_0x33ff7c[_0x4afc('0x18')]];}}}catch(_0x428c61){logger[_0x4afc('0x29')](_0x4afc('0x69'),_0x33ff7c[_0x4afc('0x18')],util['inspect'](_0x428c61,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x4afc('0x13')]['syncNewExten']=function(_0x5a0a78){try{if(this[_0x4afc('0x14')](_0x5a0a78)){logger[_0x4afc('0x26')](_0x4afc('0x6a'),_0x5a0a78['uniqueid'],util['inspect'](_0x5a0a78,{'showHidden':![],'depth':null}));if(_0x5a0a78[_0x4afc('0x6b')][_0x4afc('0x6c')]()===_0x4afc('0x6d')){_0x5a0a78[_0x4afc('0x6e')]=(_0x5a0a78[_0x4afc('0x6f')]||_0x5a0a78[_0x4afc('0x6e')])[_0x4afc('0x6c')]();if(_[_0x4afc('0x70')](_0x5a0a78[_0x4afc('0x6e')],_0x4afc('0x71'))){if(_[_0x4afc('0x15')](this[_0x4afc('0xc')][_0x5a0a78[_0x4afc('0x18')]]))this[_0x4afc('0xc')][_0x5a0a78[_0x4afc('0x18')]]={};logger[_0x4afc('0x34')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x5a0a78[_0x4afc('0x18')],_0x5a0a78[_0x4afc('0x6b')],_0x5a0a78[_0x4afc('0x6e')]);var _0x18bf7c=_0x5a0a78[_0x4afc('0x6e')][_0x4afc('0x72')]('=');var _0x3fddd1=_0x18bf7c[0x0][_0x4afc('0x73')](/cdr\((.*)\)/);if(_0x3fddd1)this[_0x4afc('0xc')][_0x5a0a78['uniqueid']][_0x3fddd1[0x1]]=_0x18bf7c[0x1];}}}}catch(_0x352f0c){logger[_0x4afc('0x29')](_0x4afc('0x74'),_0x5a0a78[_0x4afc('0x18')],util['inspect'](_0x352f0c,{'showHidden':![],'depth':null}));}};module[_0x4afc('0x75')]=VoiceDialReport;
\ No newline at end of file
index 98ea1ff..42cceb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d0=['handleInboundQueueSummaryReport','outbound','custom:queuesummary','statusRequests','push','syncQueueSummary','debug','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','position','routealias','merge','pick','keys','queuecallerjoin','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]','queuecallerleaveAt','connectedlinenum','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][queuecallerleave]','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','syncVarSet','addVariable','variable','value','CONTINUE','queuecallerexit','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queuecallerabandonAt','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','length','unmanaged','abandoned','sumHoldTime','sumDuration','milliseconds','diff','total','answered','sumBillable','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','custom:voiceQueueReport','ATTENDEDTRANSFER','handleHangup','cause-txt','cause','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferexten','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','transferid','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','[%s][voiceQueueReport][blindtransfer]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','toLowerCase','set','appdata','CDR(routeAlias)','applicationdata','cdr(','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','localhost','enqueue','tail','queueReports','realtime','agents','channels','voiceQueues','campaigns','summary','variables','queuesummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','talking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','sequence','isNil','Action','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','inspect','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','prototype','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','queuecallerexitreason','queue','voice_queue_channel:remove','emitInboundVoiceQueueSummary','inbound','name','isNotNull','isUndefined','queues','loopQueueSummary','then','actionid','[voiceQueueReport][queuesummary]','createQueueSummaryReport','summaryEvent','compareToInboundQueue','queuestatus','type'];(function(_0x70d389,_0x2b4bff){var _0x5f0fdf=function(_0x272a25){while(--_0x272a25){_0x70d389['push'](_0x70d389['shift']());}};_0x5f0fdf(++_0x2b4bff);}(_0xd5d0,0x17b));var _0x0d5d=function(_0x386ab1,_0x1bde4d){_0x386ab1=_0x386ab1-0x0;var _0x40770e=_0xd5d0[_0x386ab1];return _0x40770e;};'use strict';var _=require(_0x0d5d('0x0'));var moment=require('moment');var util=require(_0x0d5d('0x1'));var Redis=require(_0x0d5d('0x2'));var config=require(_0x0d5d('0x3'));var logger=require(_0x0d5d('0x4'))(_0x0d5d('0x5'));var ami=require(_0x0d5d('0x6'));var QueueReport=require(_0x0d5d('0x7'));var VoiceQueueSummary=require(_0x0d5d('0x8'));config['redis']=_['defaults'](config[_0x0d5d('0x9')],{'host':_0x0d5d('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0d5d('0x9')]));var Sequence=function(){};Sequence['prototype'][_0x0d5d('0xb')]=function(_0xdbdefe){this[_0x0d5d('0xc')]=this[_0x0d5d('0xc')]?this[_0x0d5d('0xc')]['finally'](_0xdbdefe):_0xdbdefe();};function VoiceQueueReport(_0x33d9ed){this['sequence']=new Sequence();this[_0x0d5d('0xd')]={};this[_0x0d5d('0xe')]=_0x33d9ed;this[_0x0d5d('0xf')]=_0x33d9ed[_0x0d5d('0xf')];this[_0x0d5d('0x10')]=_0x33d9ed['queueChannels'];this['voiceQueues']=_0x33d9ed[_0x0d5d('0x11')];this[_0x0d5d('0x12')]=_0x33d9ed[_0x0d5d('0x12')];this[_0x0d5d('0x13')]=initializeSummary();this[_0x0d5d('0x14')]={};ami['on'](_0x0d5d('0x15'),this['syncQueueSummary'][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x17'),this[_0x0d5d('0x18')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x19'),this[_0x0d5d('0x1a')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x1b'),this[_0x0d5d('0x1c')][_0x0d5d('0x16')](this));ami['on']('queuecallerjoin',this[_0x0d5d('0x1d')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x1e'),this[_0x0d5d('0x1f')]['bind'](this));ami['on'](_0x0d5d('0x20'),this[_0x0d5d('0x21')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x22'),this[_0x0d5d('0x23')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x24'),this[_0x0d5d('0x25')][_0x0d5d('0x16')](this));ami['on']('varset',this['syncVarSet'][_0x0d5d('0x16')](this));ami['on']('hangup',this[_0x0d5d('0x26')]['bind'](this));ami['on'](_0x0d5d('0x27'),this['syncFullyBooted'][_0x0d5d('0x16')](this));ami['on']('musiconholdstart',this[_0x0d5d('0x28')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x29'),this[_0x0d5d('0x2a')][_0x0d5d('0x16')](this));ami['on'](_0x0d5d('0x2b'),this[_0x0d5d('0x2c')][_0x0d5d('0x16')](this));ami['on']('blindtransfer',this[_0x0d5d('0x2d')][_0x0d5d('0x16')](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x575d30){if(!_[_0x0d5d('0x2e')](_0x575d30)){for(var _0x33509a in _0x575d30){if(_0x575d30[_0x0d5d('0x2f')](_0x33509a)){delete _0x575d30[_0x33509a];}}}}function clearCampaigns(_0x22df89){if(!_[_0x0d5d('0x2e')](_0x22df89)){for(var _0x5a64ef in _0x22df89){if(_0x22df89['hasOwnProperty'](_0x5a64ef)){_0x22df89[_0x5a64ef]['originated']=0x0;}}}}function clearVoiceQueues(_0x392e6e){if(!_[_0x0d5d('0x2e')](_0x392e6e)){for(var _0x52d0d5 in _0x392e6e){if(_0x392e6e[_0x0d5d('0x2f')](_0x52d0d5)){_0x392e6e[_0x52d0d5][_0x0d5d('0x30')]=0x0;_0x392e6e[_0x52d0d5][_0x0d5d('0x31')]=0x0;_0x392e6e[_0x52d0d5]['pTalking']=0x0;_0x392e6e[_0x52d0d5][_0x0d5d('0x32')]=0x0;_0x392e6e[_0x52d0d5][_0x0d5d('0x33')]=!![];}}}}function clearAgentBooked(_0x47d670){if(!_[_0x0d5d('0x2e')](_0x47d670)){for(var _0x556692 in _0x47d670){if(_0x47d670[_0x0d5d('0x2f')](_0x556692)){_0x47d670[_0x556692][_0x0d5d('0x34')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}VoiceQueueReport['prototype'][_0x0d5d('0x35')]=function(){var _0x481c8a=this;for(var _0x259890 in this[_0x0d5d('0x10')]){if(this[_0x0d5d('0x10')]['hasOwnProperty'](_0x259890)&&!this[_0x0d5d('0x10')][_0x259890][_0x0d5d('0x36')]){this[_0x0d5d('0x37')][_0x0d5d('0xb')](function(){if(!_[_0x0d5d('0x38')](_0x481c8a['channels'][_0x259890])){return ami[_0x0d5d('0x39')]({'action':'status','channel':_0x481c8a[_0x0d5d('0x10')][_0x259890][_0x0d5d('0x3a')]})[_0x0d5d('0x3b')](function(_0xbe0342){if(_0xbe0342[_0x0d5d('0x3c')]===_0x0d5d('0x3d')){setTimeout(function(){if(_0x481c8a[_0x0d5d('0x10')][_0x259890]){delete _0x481c8a[_0x0d5d('0x10')][_0x259890];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x259890,util['inspect'](_0xbe0342,{'showHidden':![],'depth':null}));}if(_0x481c8a['queueReports'][_0x259890]){delete _0x481c8a[_0x0d5d('0xd')][_0x259890];logger[_0x0d5d('0x3e')](_0x0d5d('0x3f'),_0x259890,util['inspect'](_0xbe0342,{'showHidden':![],'depth':null}));}if(_0x481c8a[_0x0d5d('0x14')][_0x259890]){delete _0x481c8a[_0x0d5d('0x14')][_0x259890];logger['error'](_0x0d5d('0x40'),_0x259890,util[_0x0d5d('0x41')](_0xbe0342,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x0d5d('0x42')]=function(){logger['error'](_0x0d5d('0x43'));clearChannels(this[_0x0d5d('0x10')]);this[_0x0d5d('0x44')](this[_0x0d5d('0xd')]);clearAgentBooked(this[_0x0d5d('0xf')]);clearVoiceQueues(this[_0x0d5d('0x11')]);clearCampaigns(this[_0x0d5d('0x12')]);this['summary']=initializeSummary();};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x44')]=function(_0x3b8f0b){var _0x225ff7=this;if(!_[_0x0d5d('0x2e')](_0x3b8f0b)){for(var _0x47631f in _0x3b8f0b){if(_0x3b8f0b['hasOwnProperty'](_0x47631f)){_0x225ff7[_0x0d5d('0x46')](_0x3b8f0b[_0x47631f],_0x0d5d('0x47'));delete _0x3b8f0b[_0x47631f];}}}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x48')]=function(_0x43cdfa,_0xf2c76e,_0x3c9184){io['to'](_0x43cdfa)[_0x0d5d('0x48')](_0xf2c76e,_0x3c9184);};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x49')]=function(_0x415cc2,_0x1aa018){logger['debug'](_0x0d5d('0x4a')+_0x1aa018+_0x0d5d('0x4b'),_0x415cc2['uniqueid'],util[_0x0d5d('0x41')](_0x415cc2,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x0d5d('0x4c'),_0x415cc2['queue']),_0x0d5d('0x4d'),_0x415cc2);io['emit'](_0x0d5d('0x4e'),_0x415cc2);};VoiceQueueReport['prototype'][_0x0d5d('0x46')]=function(_0x144de3,_0x15c1df){logger['debug'](_0x0d5d('0x4a')+_0x15c1df+_0x0d5d('0x4f'),_0x144de3[_0x0d5d('0x50')],util['inspect'](_0x144de3,{'showHidden':![],'depth':null}));if(_0x144de3[_0x0d5d('0x51')]==='ATTENDEDTRANSFER'){return;}this['emit'](util['format'](_0x0d5d('0x4c'),_0x144de3[_0x0d5d('0x52')]),_0x0d5d('0x53'),_0x144de3);io[_0x0d5d('0x48')]('voice_queue_presence:remove',_0x144de3);};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x54')]=function(_0x2d47b3){if(_0x2d47b3['type']===_0x0d5d('0x55')){logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:',util[_0x0d5d('0x41')](_0x2d47b3,{'showHidden':![],'depth':null}));this[_0x0d5d('0x48')](util['format'](_0x0d5d('0x4c'),_0x2d47b3[_0x0d5d('0x56')]),'voice_queue:save',_0x2d47b3);}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x57')]=function(_0x1df0b0){return _0x1df0b0!==null&&!_[_0x0d5d('0x58')](_0x1df0b0);};VoiceQueueReport[_0x0d5d('0x45')]['loopQueueShow']=function(){var _0x5b499e=this;setInterval(function(){_0x5b499e[_0x0d5d('0x35')]();ami[_0x0d5d('0x39')]({'action':_0x0d5d('0x59')})[_0x0d5d('0x3b')](function(_0x265425){logger[_0x0d5d('0x3e')]('[voiceQueueReport][queues]',util[_0x0d5d('0x41')](_0x265425,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x5a')]=function(){var _0x451322=this;setInterval(function(){if(!_0x451322[_0x0d5d('0x13')]['isRunning']){return ami[_0x0d5d('0x39')]({'action':_0x0d5d('0x15')})[_0x0d5d('0x5b')](function(_0x23a01c){_0x451322[_0x0d5d('0x13')]['id']=_0x23a01c[_0x0d5d('0x5c')];_0x451322[_0x0d5d('0x13')]['isRunning']=!![];_0x451322[_0x0d5d('0x13')]['queuestatus'][_0x23a01c[_0x0d5d('0x5c')]]={};})[_0x0d5d('0x3b')](function(_0x2f82e3){logger[_0x0d5d('0x3e')](_0x0d5d('0x5d'),util[_0x0d5d('0x41')](_0x2f82e3,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x0d5d('0x5e')]=function(_0x7e0f7e,_0x224c47){var _0x31f2af=this[_0x0d5d('0x13')]['queues'][_0x7e0f7e[_0x0d5d('0x56')]][_0x0d5d('0x5f')];var _0x1447e9=new VoiceQueueSummary(_0x7e0f7e);return _0x1447e9['createReport'](_0x224c47['agents'],this[_0x0d5d('0xf')],_0x31f2af,this[_0x0d5d('0xe')][_0x0d5d('0x10')]);};VoiceQueueReport['prototype']['handleInboundQueueSummaryReport']=function(_0x535da7,_0x266659){var _0xcdccda=this[_0x0d5d('0x5e')](_0x535da7,_0x266659);var _0x685fd7=![];_0x685fd7=_0xcdccda[_0x0d5d('0x60')](_0x535da7);if(_0x685fd7){Object['assign'](_0x535da7,_0xcdccda);this['realtime'][_0x0d5d('0x11')][_0x535da7[_0x0d5d('0x56')]]=_0x535da7;this[_0x0d5d('0x54')](_0xcdccda);}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x1c')]=function(_0xba648b){var _0x3a3588=null;var _0x13fea3=this[_0x0d5d('0x13')]['id'];if(this[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x13fea3]){_0x3a3588=this[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x13fea3][_0xba648b[_0x0d5d('0x5c')]];}if(!_0x3a3588){this[_0x0d5d('0x13')]=initializeSummary();return;}var _0x166c6d=this['voiceQueues'][_0x3a3588[_0x0d5d('0x52')]];if(_0x166c6d[_0x0d5d('0x62')]===_0x0d5d('0x55')){this[_0x0d5d('0x63')](_0x166c6d,_0x3a3588);}else if(_0x166c6d[_0x0d5d('0x62')]===_0x0d5d('0x64')){var _0x35b641=this[_0x0d5d('0x5e')](_0x166c6d,_0x3a3588);ami[_0x0d5d('0x48')](_0x0d5d('0x65'),_0x35b641);}this['summary'][_0x0d5d('0x66')]-=0x1;var _0x48640e=this['summary']['statusRequests']>0x0?!![]:![];if(!_0x48640e){return this[_0x0d5d('0x18')](this[_0x0d5d('0x13')]['completeEvent']);}};VoiceQueueReport['prototype'][_0x0d5d('0x1a')]=function(_0x2924b5){var _0x1559b5=this[_0x0d5d('0x13')]['id'];if(this['summary']['queuestatus'][_0x1559b5]&&this[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x1559b5][_0x2924b5[_0x0d5d('0x5c')]]){this['summary'][_0x0d5d('0x61')][_0x1559b5][_0x2924b5[_0x0d5d('0x5c')]][_0x0d5d('0xf')][_0x0d5d('0x67')](_0x2924b5);}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x68')]=function(_0x1a204d){var _0x1daa09=this;try{if(this[_0x0d5d('0x57')](_0x1a204d)&&this[_0x0d5d('0x57')](_0x1a204d[_0x0d5d('0x52')])){logger[_0x0d5d('0x69')](_0x0d5d('0x6a'),util['inspect'](_0x1a204d,{'showHidden':![],'depth':null}));var _0x5097f6=this[_0x0d5d('0x11')][_0x1a204d[_0x0d5d('0x52')]];if(_0x5097f6){logger[_0x0d5d('0x6b')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x5097f6['name']);this['summary'][_0x0d5d('0x59')][_0x5097f6[_0x0d5d('0x56')]]={'summaryEvent':_0x1a204d};this['summary'][_0x0d5d('0x66')]+=0x1;return ami['Action']({'action':_0x0d5d('0x61'),'queue':_0x5097f6[_0x0d5d('0x56')]})['then'](function(_0x13679b){if(!_0x1daa09[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x1a204d['actionid']]){_0x1daa09[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x1a204d[_0x0d5d('0x5c')]]={};}_0x1daa09[_0x0d5d('0x13')][_0x0d5d('0x61')][_0x1a204d['actionid']][_0x13679b[_0x0d5d('0x5c')]]={'queue':_0x5097f6[_0x0d5d('0x56')],'agents':[]};})[_0x0d5d('0x3b')](function(_0x152995){throw _0x152995;});}}}catch(_0x391953){logger['error'](_0x0d5d('0x5d'),util[_0x0d5d('0x41')](_0x391953,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x18')]=function(_0x1643c5){if(this[_0x0d5d('0x13')]['statusRequests']>0x0){this['summary']['completeEvent']=_0x1643c5;return;}logger[_0x0d5d('0x69')](_0x0d5d('0x6c'),util[_0x0d5d('0x41')](_0x1643c5,{'showHidden':![],'depth':null}));this[_0x0d5d('0x13')]=initializeSummary();ami[_0x0d5d('0x48')](_0x0d5d('0x6d'),{});};VoiceQueueReport[_0x0d5d('0x45')]['syncQueueCallerJoin']=function(_0x5f312b){try{if(this[_0x0d5d('0x57')](_0x5f312b)){logger[_0x0d5d('0x69')](_0x0d5d('0x6e'),_0x5f312b[_0x0d5d('0x50')],util['inspect'](_0x5f312b,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x5f312b['uniqueid']])){this[_0x0d5d('0xd')][_0x5f312b['uniqueid']]=[];}if(_[_0x0d5d('0x58')](this[_0x0d5d('0x10')][_0x5f312b['uniqueid']])){this['channels'][_0x5f312b[_0x0d5d('0x50')]]={};}var _0x1b12c8=new QueueReport();_0x1b12c8['queue']=_0x5f312b[_0x0d5d('0x52')];_0x1b12c8['type']=this[_0x0d5d('0x11')][_0x1b12c8[_0x0d5d('0x52')]]&&this['voiceQueues'][_0x1b12c8[_0x0d5d('0x52')]]['type']?this[_0x0d5d('0x11')][_0x1b12c8[_0x0d5d('0x52')]][_0x0d5d('0x62')]||_0x0d5d('0x55'):_0x0d5d('0x55');_0x1b12c8[_0x0d5d('0x6f')]=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));_0x1b12c8[_0x0d5d('0x72')]=_0x5f312b[_0x0d5d('0x72')];_0x1b12c8['count']=_0x5f312b['count'];_0x1b12c8[_0x0d5d('0x50')]=_0x5f312b[_0x0d5d('0x50')];_0x1b12c8[_0x0d5d('0x73')]=this[_0x0d5d('0x10')][_0x5f312b[_0x0d5d('0x50')]][_0x0d5d('0x73')];logger['info']('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x1b12c8[_0x0d5d('0x52')],_0x1b12c8['type']);_[_0x0d5d('0x74')](_0x1b12c8,_[_0x0d5d('0x75')](_0x5f312b,_[_0x0d5d('0x76')](_0x1b12c8)));this['queueReports'][_0x5f312b[_0x0d5d('0x50')]][_0x0d5d('0x67')](_0x1b12c8);this[_0x0d5d('0x10')][_0x5f312b[_0x0d5d('0x50')]]=_0x1b12c8;this[_0x0d5d('0x49')](_0x1b12c8,_0x0d5d('0x77'));}}catch(_0x1a92b3){logger[_0x0d5d('0x3e')](_0x0d5d('0x6e'),_0x5f312b[_0x0d5d('0x50')],util['inspect'](_0x1a92b3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x1f')]=function(_0x30a848){try{if(this[_0x0d5d('0x57')](_0x30a848)){logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][queuecallerabandon]',_0x30a848[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x30a848,{'showHidden':![],'depth':null}));if(this[_0x0d5d('0xd')][_0x30a848[_0x0d5d('0x50')]]){var _0x4a5a29=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x30a848[_0x0d5d('0x50')]]);_0x4a5a29[_0x0d5d('0x79')]=![];_0x4a5a29[_0x0d5d('0x7a')]=null;_0x4a5a29['holdtime']=_0x30a848[_0x0d5d('0x7b')];_0x4a5a29[_0x0d5d('0x7c')]=_0x30a848['originalposition'];_0x4a5a29[_0x0d5d('0x1e')]=!![];_0x4a5a29['queuecallerabandonAt']=moment()[_0x0d5d('0x70')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a5a29[_0x0d5d('0x51')]='ABANDONED';_0x4a5a29[_0x0d5d('0x7d')]=null;logger[_0x0d5d('0x6b')](_0x0d5d('0x7e'),_0x4a5a29[_0x0d5d('0x52')],_0x4a5a29[_0x0d5d('0x62')]);this[_0x0d5d('0x10')][_0x30a848[_0x0d5d('0x50')]]=_0x4a5a29;this[_0x0d5d('0x46')](_0x4a5a29,'queuecallerabandon');}}}catch(_0x3cb3db){logger[_0x0d5d('0x3e')](_0x0d5d('0x7f'),_0x30a848['uniqueid'],util['inspect'](_0x3cb3db,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')]['syncQueueCallerLeave']=function(_0x2271df){try{if(this[_0x0d5d('0x57')](_0x2271df)){logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][queuecallerleave]',_0x2271df[_0x0d5d('0x50')],util['inspect'](_0x2271df,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2271df[_0x0d5d('0x50')]]){var _0x2818bb=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x2271df[_0x0d5d('0x50')]]);_0x2818bb[_0x0d5d('0x80')]=moment()['format'](_0x0d5d('0x71'));_0x2818bb[_0x0d5d('0x81')]=_0x2271df[_0x0d5d('0x81')];_0x2818bb['connectedlinename']=_0x2271df['connectedlinename'];logger[_0x0d5d('0x6b')](_0x0d5d('0x82'),_0x2818bb['queue'],_0x2818bb[_0x0d5d('0x62')],_0x2271df[_0x0d5d('0x81')],_0x2271df['connectedlinename']);this[_0x0d5d('0x10')][_0x2271df[_0x0d5d('0x50')]]=_0x2818bb;this[_0x0d5d('0x49')](_0x2818bb,_0x0d5d('0x20'));}}}catch(_0x270710){logger[_0x0d5d('0x3e')](_0x0d5d('0x83'),_0x2271df[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x270710,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x25')]=function(_0x42ab17){try{if(this[_0x0d5d('0x57')](_0x42ab17)){logger[_0x0d5d('0x69')](_0x0d5d('0x84'),_0x42ab17[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x42ab17,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x42ab17[_0x0d5d('0x50')]]){var _0x3f5d9d=_[_0x0d5d('0x78')](this['queueReports'][_0x42ab17[_0x0d5d('0x50')]]);_0x3f5d9d[_0x0d5d('0x79')]=!![];_0x3f5d9d['queuecallerexitreason']=_0x0d5d('0x85');logger[_0x0d5d('0x6b')](_0x0d5d('0x86'),_0x3f5d9d[_0x0d5d('0x52')],_0x3f5d9d[_0x0d5d('0x62')]);}}}catch(_0x37fc14){logger[_0x0d5d('0x3e')]('[%s][voiceQueueReport][agentconnect]',_0x42ab17[_0x0d5d('0x50')],util['inspect'](_0x37fc14,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x23')]=function(_0x4071a8){try{if(this[_0x0d5d('0x57')](_0x4071a8)){logger[_0x0d5d('0x69')](_0x0d5d('0x87'),_0x4071a8[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x4071a8,{'showHidden':![],'depth':null}));if(this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x50')]]){var _0x7b8597=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x4071a8['uniqueid']]);_0x7b8597[_0x0d5d('0x1e')]=![];_0x7b8597['queuecallerabandonAt']=null;_0x7b8597['assigned']=!![];_0x7b8597['lastAssignedTo']=_0x4071a8[_0x0d5d('0x88')];_0x7b8597['holdtime']=_0x4071a8[_0x0d5d('0x7b')];_0x7b8597[_0x0d5d('0x79')]=!![];_0x7b8597['queuecallerexit']=![];_0x7b8597[_0x0d5d('0x89')]=null;if(!_0x7b8597[_0x0d5d('0x8a')]){if(_0x4071a8[_0x0d5d('0x8b')]==_0x0d5d('0x8a')){_0x7b8597[_0x0d5d('0x51')]=_0x0d5d('0x8c');logger['info'](_0x0d5d('0x8d'),_0x7b8597[_0x0d5d('0x52')],_0x7b8597[_0x0d5d('0x62')]);}else{if(_[_0x0d5d('0x8e')](_0x4071a8['channel']['toLowerCase'](),'local/')){if(this['queueReports'][_0x4071a8[_0x0d5d('0x8f')]]){var _0x40a839=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x8f')]]);_0x40a839['queuecallercomplete']=![];_0x40a839['queuecallerexit']=!![];_0x40a839[_0x0d5d('0x89')]=moment(_0x7b8597[_0x0d5d('0x6f')])[_0x0d5d('0x90')](_0x4071a8[_0x0d5d('0x7b')],_0x0d5d('0x91'))[_0x0d5d('0x70')](_0x0d5d('0x71'));_0x40a839[_0x0d5d('0x51')]=_0x0d5d('0x92');_0x40a839[_0x0d5d('0x8a')]=!![];_0x40a839[_0x0d5d('0x93')]=_0x0d5d('0x94');_0x40a839['transferexten']=_0x4071a8[_0x0d5d('0x95')];_0x40a839['transferuniqueid']=_0x4071a8[_0x0d5d('0x50')];logger['info'](_0x0d5d('0x96'),_0x40a839[_0x0d5d('0x52')],_0x40a839[_0x0d5d('0x62')]);var _0x39c8a0=this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x8f')]];this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x8f')]]=this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x50')]];this[_0x0d5d('0xd')][_0x4071a8[_0x0d5d('0x50')]]=_0x39c8a0;}}else{_0x7b8597[_0x0d5d('0x51')]=_0x0d5d('0x97')+_0x4071a8['reason'][_0x0d5d('0x98')]();logger['info'](_0x0d5d('0x99'),_0x7b8597[_0x0d5d('0x52')],_0x7b8597[_0x0d5d('0x62')],_0x7b8597[_0x0d5d('0x51')]);}}}this[_0x0d5d('0x10')][_0x4071a8[_0x0d5d('0x50')]]=_0x7b8597;}}}catch(_0x239d62){logger[_0x0d5d('0x3e')](_0x0d5d('0x87'),_0x4071a8[_0x0d5d('0x50')],util['inspect'](_0x239d62,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0d5d('0x9a')]=function(_0x53623d){try{if(this[_0x0d5d('0x57')](_0x53623d)){logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][varset]',_0x53623d[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x53623d,{'showHidden':![],'depth':null}));this[_0x0d5d('0x9b')](_0x53623d[_0x0d5d('0x50')],_[_0x0d5d('0x76')](_0x53623d[_0x0d5d('0x9c')])[0x0],_0x53623d[_0x0d5d('0x9d')]);if(this[_0x0d5d('0xd')][_0x53623d[_0x0d5d('0x50')]]){var _0x3f3940=_[_0x0d5d('0x78')](this['queueReports'][_0x53623d[_0x0d5d('0x50')]]);if(_0x3f3940){if(this[_0x0d5d('0x57')](_0x53623d[_0x0d5d('0x9c')])&&this[_0x0d5d('0x57')](_0x53623d[_0x0d5d('0x9c')][_0x0d5d('0x61')])){switch(_0x53623d[_0x0d5d('0x9d')]){case _0x0d5d('0x9e'):_0x3f3940[_0x0d5d('0x9f')]=![];_0x3f3940['queuecallerexitAt']=null;break;case'TIMEOUT':_0x3f3940[_0x0d5d('0xa0')]=_0x0d5d('0xa1');_0x3f3940[_0x0d5d('0x9f')]=!![];_0x3f3940[_0x0d5d('0x89')]=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));_0x3f3940['queuecallerleaveAt']=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));logger[_0x0d5d('0x69')](_0x0d5d('0xa2'),_0x53623d['uniqueid'],util[_0x0d5d('0x41')](_0x3f3940,{'showHidden':![],'depth':null}));ami[_0x0d5d('0x48')](_0x0d5d('0xa3'),_0x3f3940);break;default:_0x3f3940[_0x0d5d('0x9f')]=!![];_0x3f3940[_0x0d5d('0x89')]=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));_0x3f3940[_0x0d5d('0x80')]=moment()['format'](_0x0d5d('0x71'));}_0x3f3940['queuecallerabandon']=![];_0x3f3940[_0x0d5d('0xa4')]=null;_0x3f3940[_0x0d5d('0x51')]=_0x53623d[_0x0d5d('0x9d')];this[_0x0d5d('0x10')][_0x53623d['uniqueid']]=_0x3f3940;this[_0x0d5d('0x46')](_0x3f3940,_0x0d5d('0xa5'));}else if(this[_0x0d5d('0x57')](_0x53623d['variable'])&&this[_0x0d5d('0x57')](_0x53623d[_0x0d5d('0x9c')][_0x0d5d('0xa6')])){if(!_0x3f3940[_0x0d5d('0x1e')]){_0x3f3940[_0x0d5d('0x9f')]=!![];_0x3f3940[_0x0d5d('0x89')]=moment()[_0x0d5d('0x70')]('YYYY-MM-DD\x20HH:mm:ss');_0x3f3940['queuecallerexitreason']=_0x0d5d('0xa7');_0x3f3940[_0x0d5d('0x80')]=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));this[_0x0d5d('0x10')][_0x53623d['uniqueid']]=_0x3f3940;}}logger[_0x0d5d('0x6b')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x53623d[_0x0d5d('0x50')],_0x3f3940[_0x0d5d('0x52')],_0x3f3940[_0x0d5d('0x62')],_[_0x0d5d('0x76')](_0x53623d['variable'])[0x0],_0x53623d[_0x0d5d('0x9d')]);_0x3f3940[_0x0d5d('0x14')]=this[_0x0d5d('0x14')][_0x53623d[_0x0d5d('0x50')]];}}}}catch(_0x550a3c){logger[_0x0d5d('0x3e')](_0x0d5d('0xa8'),_0x53623d[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x550a3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['addVariable']=function(_0x4cbd45,_0x39d893,_0x322e3d){var _0x138345=[_0x0d5d('0xa9'),'rtpaudioqosbridged','rtpaudioqosjitter',_0x0d5d('0xaa'),_0x0d5d('0xab'),_0x0d5d('0xac'),_0x0d5d('0xad'),_0x0d5d('0xae'),'sipcallid',_0x0d5d('0xaf'),'bridgepeer',_0x0d5d('0xb0'),'membercalls',_0x0d5d('0xb1'),_0x0d5d('0xb2'),_0x0d5d('0xb3'),_0x0d5d('0x88'),_0x0d5d('0xb4'),_0x0d5d('0xb5')];if(!_[_0x0d5d('0x38')](_0x39d893)&&!_[_0x0d5d('0xb6')](_0x138345,_0x39d893)){if(_['isUndefined'](this[_0x0d5d('0x14')][_0x4cbd45])){this['variables'][_0x4cbd45]={};}this[_0x0d5d('0x14')][_0x4cbd45][_0x39d893]=_0x322e3d;}};VoiceQueueReport['prototype']['handleHangup']=function(_0x2339eb,_0x403bcc,_0x78cbcf){var _0x18d37c={};for(var _0x370a0f=0x0;_0x370a0f<this[_0x0d5d('0xd')][_0x2339eb][_0x0d5d('0xb7')];_0x370a0f+=0x1){_0x18d37c=this[_0x0d5d('0xd')][_0x2339eb][_0x370a0f];if(this['voiceQueues'][_0x18d37c[_0x0d5d('0x52')]]){if(_0x18d37c[_0x0d5d('0x9f')]&&_0x18d37c['transfer']!=!![]){this[_0x0d5d('0x11')][_0x18d37c['queue']][_0x0d5d('0xb8')]+=0x1;}if(_0x18d37c[_0x0d5d('0x1e')]){this['voiceQueues'][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xb9')]+=0x1;}this[_0x0d5d('0x11')][_0x18d37c['queue']][_0x0d5d('0xba')]+=moment(_0x18d37c[_0x0d5d('0x80')])['diff'](_0x18d37c[_0x0d5d('0x6f')],'seconds')||0x0;if(_0x370a0f===this['queueReports'][_0x2339eb][_0x0d5d('0xb7')]-0x1){this[_0x0d5d('0x11')][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xbb')]+=moment()[_0x0d5d('0xbc')](0x0)[_0x0d5d('0xbd')](_0x18d37c[_0x0d5d('0x6f')],_0x0d5d('0x91'));this[_0x0d5d('0x11')][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xbe')]+=0x1;if(_0x18d37c[_0x0d5d('0x79')]){this[_0x0d5d('0x11')][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xbf')]+=0x1;this[_0x0d5d('0x11')][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xc0')]+=moment()[_0x0d5d('0xbc')](0x0)[_0x0d5d('0xbd')](_0x18d37c[_0x0d5d('0x80')],'seconds');_0x18d37c['queuecallercompleteAt']=moment()[_0x0d5d('0x70')](_0x0d5d('0x71'));_0x18d37c[_0x0d5d('0x9f')]=![];_0x18d37c[_0x0d5d('0x89')]=null;}if(_0x18d37c['queuecallerexit']&&_0x18d37c[_0x0d5d('0x8a')]!=!![]){_0x18d37c[_0x0d5d('0xa0')]=_0x0d5d('0xb8');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x2339eb,util[_0x0d5d('0x41')](_0x18d37c,{'showHidden':![],'depth':null}));ami[_0x0d5d('0x48')](_0x0d5d('0xc1'),_0x18d37c);}if(_0x18d37c[_0x0d5d('0x1e')]){_0x18d37c[_0x0d5d('0xa0')]='abandoned';logger['debug'](_0x0d5d('0xc2'),_0x2339eb,util[_0x0d5d('0x41')](_0x18d37c,{'showHidden':![],'depth':null}));ami[_0x0d5d('0x48')](_0x0d5d('0xc3'),_0x18d37c);}}else{this[_0x0d5d('0x11')][_0x18d37c[_0x0d5d('0x52')]]['sumDuration']+=this['voiceQueues'][_0x18d37c[_0x0d5d('0x52')]][_0x0d5d('0xba')];}logger[_0x0d5d('0x6b')](_0x0d5d('0xc4'),_0x2339eb,_0x18d37c[_0x0d5d('0x52')],_0x18d37c[_0x0d5d('0x62')],_0x403bcc);if(_0x78cbcf&&_0x18d37c['queuecallerexitreason']==='ATTENDEDTRANSFER'){_0x18d37c[_0x0d5d('0x51')]='COMPLETEDBYAGENT';}this[_0x0d5d('0x10')][_0x2339eb]=_0x18d37c;if(_0x18d37c[_0x0d5d('0x80')]){this['emitVoiceQueueChannelRemove'](_0x18d37c,_0x0d5d('0xc5'));}}}logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x2339eb,util[_0x0d5d('0x41')](this['queueReports'][_0x2339eb],{'showHidden':![],'depth':null}));ami[_0x0d5d('0x48')](_0x0d5d('0xc6'),this['queueReports'][_0x2339eb]);if(_0x18d37c[_0x0d5d('0x51')]===_0x0d5d('0xc7')||_0x18d37c[_0x0d5d('0x80')]===null){return;}if(_0x18d37c[_0x0d5d('0x9f')]||_0x18d37c[_0x0d5d('0x1e')]||_0x18d37c[_0x0d5d('0x79')]){delete this[_0x0d5d('0xd')][_0x2339eb];delete this[_0x0d5d('0x10')][_0x2339eb];if(this[_0x0d5d('0x14')][_0x2339eb]){delete this[_0x0d5d('0x14')][_0x2339eb];}}};VoiceQueueReport[_0x0d5d('0x45')]['syncHangup']=function(_0x157cdc){try{if(this[_0x0d5d('0x57')](_0x157cdc)){logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][hangup]',_0x157cdc[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x157cdc,{'showHidden':![],'depth':null}));if(this[_0x0d5d('0xd')][_0x157cdc[_0x0d5d('0x50')]]){return this[_0x0d5d('0xc8')](_0x157cdc[_0x0d5d('0x50')],_0x157cdc[_0x0d5d('0xc9')],![]);}if(this[_0x0d5d('0xd')][_0x157cdc[_0x0d5d('0x8f')]]){if(_0x157cdc[_0x0d5d('0xca')]==='21'){return;}return this[_0x0d5d('0xc8')](_0x157cdc['linkedid'],_0x157cdc[_0x0d5d('0xc9')],!![]);}var _0x45de28=Object[_0x0d5d('0x76')](this[_0x0d5d('0xd')]);for(var _0x20c63f=0x0;_0x20c63f<_0x45de28[_0x0d5d('0xb7')];_0x20c63f++){var _0x41de2f=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x45de28[_0x20c63f]]);if(_0x41de2f&&_0x41de2f['transferid']===_0x157cdc[_0x0d5d('0x50')]){return this[_0x0d5d('0xc8')](_0x41de2f[_0x0d5d('0x50')],_0x157cdc[_0x0d5d('0xc9')],!![]);}}}}catch(_0x1195b7){logger[_0x0d5d('0x3e')](_0x0d5d('0xcb'),_0x157cdc['uniqueid'],util[_0x0d5d('0x41')](_0x1195b7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x2c')]=function(_0x30dac6){try{if(this[_0x0d5d('0x57')](_0x30dac6)){logger['debug'](_0x0d5d('0xcc'),_0x30dac6['uniqueid'],util['inspect'](_0x30dac6,{'showHidden':![],'depth':null}));var _0x1f9687;var _0x587d23;var _0x3ee7f9;if(this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xcd')]]){_0x1f9687=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xcd')]]);_0x1f9687['transferexten']=_0x30dac6[_0x0d5d('0xce')];_0x1f9687[_0x0d5d('0xcf')]=_0x30dac6[_0x0d5d('0xd0')];_0x1f9687[_0x0d5d('0x51')]=_0x0d5d('0xc7');_0x1f9687[_0x0d5d('0x8a')]=!![];_0x1f9687[_0x0d5d('0x93')]=_0x0d5d('0xd1');if(this[_0x0d5d('0xd')][_0x30dac6['secondtransfereruniqueid']]){_0x3ee7f9=this['queueReports'][_0x30dac6[_0x0d5d('0xd0')]];this[_0x0d5d('0xd')][_0x30dac6['secondtransfereruniqueid']]=this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xcd')]];this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xcd')]]=_0x3ee7f9;_0x587d23=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x30dac6['transfereeuniqueid']]);_0x587d23[_0x0d5d('0x36')]=!![];}logger[_0x0d5d('0x6b')](_0x0d5d('0xd2'),_0x30dac6[_0x0d5d('0x50')],_0x1f9687[_0x0d5d('0x52')],_0x1f9687['type'],_0x1f9687[_0x0d5d('0xd3')],_0x1f9687['transferuniqueid']);}else if(this[_0x0d5d('0xd')][_0x30dac6['transfertargetuniqueid']]){_0x1f9687=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd4')]]);_0x1f9687[_0x0d5d('0xd3')]=_0x30dac6[_0x0d5d('0xd5')];_0x1f9687['transferuniqueid']=_0x30dac6['origtransfereruniqueid'];_0x1f9687[_0x0d5d('0x51')]='ATTENDEDTRANSFER';_0x1f9687['transfer']=!![];_0x1f9687[_0x0d5d('0x93')]=_0x0d5d('0xd1');if(this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd6')]]){_0x3ee7f9=this['queueReports'][_0x30dac6[_0x0d5d('0xd6')]];this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd6')]]=this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd4')]];this['queueReports'][_0x30dac6[_0x0d5d('0xd4')]]=_0x3ee7f9;_0x587d23=_['last'](this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd4')]]);_0x587d23[_0x0d5d('0x36')]=!![];}logger['info'](_0x0d5d('0xd2'),_0x30dac6[_0x0d5d('0x50')],_0x1f9687['queue'],_0x1f9687[_0x0d5d('0x62')],_0x1f9687[_0x0d5d('0xd3')],_0x1f9687['transferuniqueid']);}else if(this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd6')]]){_0x1f9687=_['last'](this[_0x0d5d('0xd')][_0x30dac6[_0x0d5d('0xd6')]]);_0x1f9687[_0x0d5d('0xd3')]=_0x30dac6[_0x0d5d('0xd5')];_0x1f9687[_0x0d5d('0xcf')]=_0x30dac6[_0x0d5d('0xd6')];_0x1f9687[_0x0d5d('0x51')]=_0x0d5d('0xc7');_0x1f9687[_0x0d5d('0x8a')]=!![];_0x1f9687['transfertype']=_0x0d5d('0xd1');_0x1f9687['switch']=!![];_0x1f9687[_0x0d5d('0xd7')]=_0x30dac6['transfereeuniqueid'];}else if(this['queueReports'][_0x30dac6['secondtransfereruniqueid']]){_0x1f9687=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x30dac6['secondtransfereruniqueid']]);_0x1f9687[_0x0d5d('0xd3')]=_0x30dac6[_0x0d5d('0xce')];_0x1f9687[_0x0d5d('0xcf')]=_0x30dac6[_0x0d5d('0xd0')];_0x1f9687[_0x0d5d('0x51')]='ATTENDEDTRANSFER';_0x1f9687['transfer']=!![];_0x1f9687['transfertype']=_0x0d5d('0xd1');_0x1f9687[_0x0d5d('0x36')]=!![];_0x1f9687['transferid']=_0x30dac6[_0x0d5d('0xd4')];}}}catch(_0x495549){logger[_0x0d5d('0x3e')](_0x0d5d('0xcc'),_0x30dac6['uniqueid'],util[_0x0d5d('0x41')](_0x495549,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x2d')]=function(_0x517904){try{if(this['isNotNull'](_0x517904)){logger[_0x0d5d('0x69')]('[%s][voiceQueueReport][blindtransfer]',_0x517904[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x517904,{'showHidden':![],'depth':null}));if(this[_0x0d5d('0xd')][_0x517904['transfereeuniqueid']]){var _0x181c58=_['last'](this[_0x0d5d('0xd')][_0x517904[_0x0d5d('0xcd')]]);_0x181c58['queuecallerexitreason']=_0x0d5d('0xd8');_0x181c58[_0x0d5d('0x8a')]=!![];_0x181c58[_0x0d5d('0x93')]=_0x0d5d('0xd9');_0x181c58['transferexten']=_0x517904['extension'];_0x181c58[_0x0d5d('0xcf')]=_0x517904['transfereeuniqueid'];logger[_0x0d5d('0x6b')](_0x0d5d('0xda'),_0x517904[_0x0d5d('0x50')],_0x181c58[_0x0d5d('0x52')],_0x181c58['type'],_0x181c58[_0x0d5d('0xd3')],_0x181c58[_0x0d5d('0xcf')]);this[_0x0d5d('0x26')]({'event':_0x0d5d('0xdb'),'uniqueid':_0x517904[_0x0d5d('0xcd')],'context':_0x517904['context'],'channel':_0x517904['transfererchannel']});}}}catch(_0x296af5){logger[_0x0d5d('0x3e')](_0x0d5d('0xdc'),_0x517904[_0x0d5d('0x50')],util['inspect'](_0x296af5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x28')]=function(_0x1906ef){try{if(this[_0x0d5d('0x57')](_0x1906ef)){logger['debug']('[%s][voiceQueueReport][musiconholdstart]',_0x1906ef[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x1906ef,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1906ef[_0x0d5d('0x50')]]){var _0x2d6de8=_['last'](this[_0x0d5d('0xd')][_0x1906ef[_0x0d5d('0x50')]]);if(!_[_0x0d5d('0x38')](_0x2d6de8[_0x0d5d('0x80')])){_0x2d6de8[_0x0d5d('0xdd')]=moment()[_0x0d5d('0x70')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x0d5d('0x6b')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x1906ef[_0x0d5d('0x50')],_0x2d6de8[_0x0d5d('0xdd')]);}}}}catch(_0x22a401){logger['error'](_0x0d5d('0xde'),_0x1906ef[_0x0d5d('0x50')],util['inspect'](_0x22a401,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0x2a')]=function(_0x5a5cf1){try{if(this[_0x0d5d('0x57')](_0x5a5cf1)){logger[_0x0d5d('0x69')](_0x0d5d('0xdf'),_0x5a5cf1[_0x0d5d('0x50')],util['inspect'](_0x5a5cf1,{'showHidden':![],'depth':null}));if(this[_0x0d5d('0xd')][_0x5a5cf1[_0x0d5d('0x50')]]){var _0x5f1e27=_[_0x0d5d('0x78')](this[_0x0d5d('0xd')][_0x5a5cf1['uniqueid']]);if(!_[_0x0d5d('0x38')](_0x5f1e27[_0x0d5d('0xdd')])){_0x5f1e27[_0x0d5d('0xe0')]+=moment()[_0x0d5d('0xbc')](0x0)[_0x0d5d('0xbd')](_0x5f1e27[_0x0d5d('0xdd')],_0x0d5d('0x91'));logger[_0x0d5d('0x6b')](_0x0d5d('0xe1'),_0x5a5cf1['uniqueid'],_0x5f1e27['mohtime']);delete _0x5f1e27[_0x0d5d('0xdd')];}}}}catch(_0xa501ae){logger[_0x0d5d('0x3e')](_0x0d5d('0xdf'),_0x5a5cf1[_0x0d5d('0x50')],util['inspect'](_0xa501ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0d5d('0x45')][_0x0d5d('0xe2')]=function(_0x14e4b8){try{if(this[_0x0d5d('0x57')](_0x14e4b8)){logger[_0x0d5d('0x69')](_0x0d5d('0xe3'),_0x14e4b8['uniqueid'],util[_0x0d5d('0x41')](_0x14e4b8,{'showHidden':![],'depth':null}));if(_0x14e4b8[_0x0d5d('0xe4')][_0x0d5d('0xe5')]()===_0x0d5d('0xe6')){_0x14e4b8['applicationdata']=_0x14e4b8[_0x0d5d('0xe7')]&&_0x14e4b8[_0x0d5d('0xe7')][_0x0d5d('0x8e')](_0x0d5d('0xe8'))?_0x14e4b8['appdata']:(_0x14e4b8[_0x0d5d('0xe7')]||_0x14e4b8[_0x0d5d('0xe9')])[_0x0d5d('0xe5')]();if(_[_0x0d5d('0x8e')](_0x14e4b8[_0x0d5d('0xe9')][_0x0d5d('0xe5')](),_0x0d5d('0xea'))){logger[_0x0d5d('0x6b')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x14e4b8[_0x0d5d('0x50')],_0x14e4b8['application'],_0x14e4b8[_0x0d5d('0xe9')]);if(_[_0x0d5d('0x58')](this[_0x0d5d('0x10')][_0x14e4b8['uniqueid']]))this[_0x0d5d('0x10')][_0x14e4b8[_0x0d5d('0x50')]]={};var _0x1b3bd4=_0x14e4b8['applicationdata'][_0x0d5d('0xeb')]('=');var _0x3550d0=_0x1b3bd4[0x0][_0x0d5d('0xe5')]()[_0x0d5d('0xec')](/cdr\((.*)\)/);if(_0x3550d0)this[_0x0d5d('0x10')][_0x14e4b8['uniqueid']][_0x3550d0[0x1]]=_0x1b3bd4[0x1];}}}}catch(_0x36f8f3){logger['error'](_0x0d5d('0xed'),_0x14e4b8[_0x0d5d('0x50')],util[_0x0d5d('0x41')](_0x36f8f3,{'showHidden':![],'depth':null}));}};module[_0x0d5d('0xee')]=VoiceQueueReport;
\ No newline at end of file
+var _0xfa25=['../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','realtime','agents','queueChannels','voiceQueues','campaigns','summary','queuesummarycomplete','bind','queuemember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','isEmpty','hasOwnProperty','originated','talking','waiting','queueStatusComplete','unlockRR','queuecallerexit','queuecallercomplete','clearZombieChannels','channels','Action','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','error','[%s][voiceQueueReport][checkQueueReport]','inspect','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','emit','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','queue','voice_queue_channel:remove','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','inbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isNotNull','isUndefined','loopQueueShow','[voiceQueueReport][queues]','loopQueueSummary','isRunning','then','queuestatus','actionid','[voiceQueueReport][queuesummary]','createQueueSummaryReport','queues','handleInboundQueueSummaryReport','compareToInboundQueue','custom:queuesummary','statusRequests','syncQueueSummaryComplete','completeEvent','syncQueueMember','push','syncQueueSummary','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','assign','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinename','info','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexitAt','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','local/','linkedid','add','seconds','transfer','FORWARD','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','keys','variable','value','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','handleHangup','diff','length','sumDuration','milliseconds','total','answered','sumBillable','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','cause-txt','cause','transferid','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDED','switch','transfertargetuniqueid','origtransfererexten','transfertype','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','CDR(routeAlias)','toLowerCase','startsWith','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','[%s][voiceQueueReport][newexten]','exports','moment','util','ioredis','../../../config/environment'];(function(_0xe1269d,_0x57b7c3){var _0x261ca1=function(_0x13b234){while(--_0x13b234){_0xe1269d['push'](_0xe1269d['shift']());}};_0x261ca1(++_0x57b7c3);}(_0xfa25,0xf3));var _0x5fa2=function(_0x5458fe,_0x487e4d){_0x5458fe=_0x5458fe-0x0;var _0x54458f=_0xfa25[_0x5458fe];return _0x54458f;};'use strict';var _=require('lodash');var moment=require(_0x5fa2('0x0'));var util=require(_0x5fa2('0x1'));var Redis=require(_0x5fa2('0x2'));var config=require(_0x5fa2('0x3'));var logger=require(_0x5fa2('0x4'))(_0x5fa2('0x5'));var ami=require(_0x5fa2('0x6'));var QueueReport=require(_0x5fa2('0x7'));var VoiceQueueSummary=require(_0x5fa2('0x8'));config[_0x5fa2('0x9')]=_[_0x5fa2('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x5fa2('0xb'))(new Redis(config[_0x5fa2('0x9')]));var Sequence=function(){};Sequence[_0x5fa2('0xc')][_0x5fa2('0xd')]=function(_0x547490){this[_0x5fa2('0xe')]=this[_0x5fa2('0xe')]?this[_0x5fa2('0xe')][_0x5fa2('0xf')](_0x547490):_0x547490();};function VoiceQueueReport(_0x3dba98){this[_0x5fa2('0x10')]=new Sequence();this[_0x5fa2('0x11')]={};this[_0x5fa2('0x12')]=_0x3dba98;this[_0x5fa2('0x13')]=_0x3dba98['agents'];this['channels']=_0x3dba98[_0x5fa2('0x14')];this[_0x5fa2('0x15')]=_0x3dba98[_0x5fa2('0x15')];this[_0x5fa2('0x16')]=_0x3dba98[_0x5fa2('0x16')];this[_0x5fa2('0x17')]=initializeSummary();this['variables']={};ami['on']('queuesummary',this['syncQueueSummary']['bind'](this));ami['on'](_0x5fa2('0x18'),this['syncQueueSummaryComplete'][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x1a'),this['syncQueueMember'][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x1b'),this[_0x5fa2('0x1c')][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x1d'),this[_0x5fa2('0x1e')][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x1f'),this[_0x5fa2('0x20')][_0x5fa2('0x19')](this));ami['on']('queuecallerleave',this[_0x5fa2('0x21')][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x22'),this[_0x5fa2('0x23')]['bind'](this));ami['on'](_0x5fa2('0x24'),this[_0x5fa2('0x25')]['bind'](this));ami['on'](_0x5fa2('0x26'),this['syncVarSet'][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x27'),this[_0x5fa2('0x28')]['bind'](this));ami['on'](_0x5fa2('0x29'),this[_0x5fa2('0x2a')]['bind'](this));ami['on'](_0x5fa2('0x2b'),this['syncMusicOnHoldStart'][_0x5fa2('0x19')](this));ami['on']('musiconholdstop',this[_0x5fa2('0x2c')][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x2d'),this[_0x5fa2('0x2e')][_0x5fa2('0x19')](this));ami['on'](_0x5fa2('0x2f'),this[_0x5fa2('0x30')][_0x5fa2('0x19')](this));this['loopQueueSummary']();this['loopQueueShow']();}function clearChannels(_0x305e42){if(!_[_0x5fa2('0x31')](_0x305e42)){for(var _0x4274c9 in _0x305e42){if(_0x305e42[_0x5fa2('0x32')](_0x4274c9)){delete _0x305e42[_0x4274c9];}}}}function clearCampaigns(_0x5efa17){if(!_[_0x5fa2('0x31')](_0x5efa17)){for(var _0x387fa0 in _0x5efa17){if(_0x5efa17[_0x5fa2('0x32')](_0x387fa0)){_0x5efa17[_0x387fa0][_0x5fa2('0x33')]=0x0;}}}}function clearVoiceQueues(_0x7e55b1){if(!_['isEmpty'](_0x7e55b1)){for(var _0x584d64 in _0x7e55b1){if(_0x7e55b1[_0x5fa2('0x32')](_0x584d64)){_0x7e55b1[_0x584d64][_0x5fa2('0x33')]=0x0;_0x7e55b1[_0x584d64][_0x5fa2('0x34')]=0x0;_0x7e55b1[_0x584d64]['pTalking']=0x0;_0x7e55b1[_0x584d64][_0x5fa2('0x35')]=0x0;_0x7e55b1[_0x584d64][_0x5fa2('0x36')]=!![];}}}}function clearAgentBooked(_0x28cef0){if(!_[_0x5fa2('0x31')](_0x28cef0)){for(var _0x4d90fc in _0x28cef0){if(_0x28cef0[_0x5fa2('0x32')](_0x4d90fc)){_0x28cef0[_0x4d90fc][_0x5fa2('0x37')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x33ade9){return _0x33ade9[_0x5fa2('0x38')]||_0x33ade9[_0x5fa2('0x1f')]||_0x33ade9[_0x5fa2('0x39')];}VoiceQueueReport['prototype'][_0x5fa2('0x3a')]=function(){var _0x7e1485=this;for(var _0x22da8c in this[_0x5fa2('0x3b')]){if(this['channels'][_0x5fa2('0x32')](_0x22da8c)&&!this[_0x5fa2('0x3b')][_0x22da8c]['switch']){this['sequence'][_0x5fa2('0xd')](function(){if(!_['isNil'](_0x7e1485[_0x5fa2('0x3b')][_0x22da8c])){return ami[_0x5fa2('0x3c')]({'action':'status','channel':_0x7e1485[_0x5fa2('0x3b')][_0x22da8c]['channel']})[_0x5fa2('0x3d')](function(_0x31edb6){if(_0x31edb6[_0x5fa2('0x3e')]===_0x5fa2('0x3f')){setTimeout(function(){if(_0x7e1485[_0x5fa2('0x3b')][_0x22da8c]){delete _0x7e1485['channels'][_0x22da8c];logger['error'](_0x5fa2('0x40'),_0x22da8c,util['inspect'](_0x31edb6,{'showHidden':![],'depth':null}));}if(_0x7e1485[_0x5fa2('0x11')][_0x22da8c]){delete _0x7e1485[_0x5fa2('0x11')][_0x22da8c];logger[_0x5fa2('0x41')](_0x5fa2('0x42'),_0x22da8c,util[_0x5fa2('0x43')](_0x31edb6,{'showHidden':![],'depth':null}));}if(_0x7e1485['variables'][_0x22da8c]){delete _0x7e1485[_0x5fa2('0x44')][_0x22da8c];logger[_0x5fa2('0x41')](_0x5fa2('0x45'),_0x22da8c,util[_0x5fa2('0x43')](_0x31edb6,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x2a')]=function(){logger[_0x5fa2('0x41')](_0x5fa2('0x46'));clearChannels(this[_0x5fa2('0x3b')]);this[_0x5fa2('0x47')](this[_0x5fa2('0x11')]);clearAgentBooked(this[_0x5fa2('0x13')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x5fa2('0x16')]);this['summary']=initializeSummary();};VoiceQueueReport['prototype'][_0x5fa2('0x47')]=function(_0x11ea3f){var _0x2c8036=this;if(!_[_0x5fa2('0x31')](_0x11ea3f)){for(var _0x43e6de in _0x11ea3f){if(_0x11ea3f[_0x5fa2('0x32')](_0x43e6de)){_0x2c8036[_0x5fa2('0x48')](_0x11ea3f[_0x43e6de],_0x5fa2('0x49'));delete _0x11ea3f[_0x43e6de];}}}};VoiceQueueReport[_0x5fa2('0xc')]['emit']=function(_0x2884a2,_0x308b33,_0x282dbe){io['to'](_0x2884a2)['emit'](_0x308b33,_0x282dbe);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x4a')]=function(_0xf2c961,_0x85c3f3){logger[_0x5fa2('0x4b')]('[%s][voiceQueueReport]['+_0x85c3f3+_0x5fa2('0x4c'),_0xf2c961[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0xf2c961,{'showHidden':![],'depth':null}));this[_0x5fa2('0x4e')](util[_0x5fa2('0x4f')](_0x5fa2('0x50'),_0xf2c961['queue']),_0x5fa2('0x51'),_0xf2c961);io[_0x5fa2('0x4e')](_0x5fa2('0x52'),_0xf2c961);};VoiceQueueReport[_0x5fa2('0xc')]['emitVoiceQueueChannelRemove']=function(_0x1e4e06,_0x53c122){logger['debug']('[%s][voiceQueueReport]['+_0x53c122+_0x5fa2('0x53'),_0x1e4e06[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x1e4e06,{'showHidden':![],'depth':null}));if(_0x1e4e06[_0x5fa2('0x54')]===_0x5fa2('0x55')){return;}this['emit'](util[_0x5fa2('0x4f')](_0x5fa2('0x50'),_0x1e4e06[_0x5fa2('0x56')]),_0x5fa2('0x57'),_0x1e4e06);io[_0x5fa2('0x4e')](_0x5fa2('0x58'),_0x1e4e06);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x59')]=function(_0x3d5eeb){if(_0x3d5eeb[_0x5fa2('0x5a')]===_0x5fa2('0x5b')){logger[_0x5fa2('0x4b')](_0x5fa2('0x5c'),util['inspect'](_0x3d5eeb,{'showHidden':![],'depth':null}));this[_0x5fa2('0x4e')](util[_0x5fa2('0x4f')](_0x5fa2('0x50'),_0x3d5eeb[_0x5fa2('0x5d')]),_0x5fa2('0x5e'),_0x3d5eeb);}};VoiceQueueReport['prototype'][_0x5fa2('0x5f')]=function(_0x3e92b5){return _0x3e92b5!==null&&!_[_0x5fa2('0x60')](_0x3e92b5);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x61')]=function(){var _0x195613=this;setInterval(function(){_0x195613[_0x5fa2('0x3a')]();ami[_0x5fa2('0x3c')]({'action':'queues'})[_0x5fa2('0x3d')](function(_0x69552e){logger['error'](_0x5fa2('0x62'),util[_0x5fa2('0x43')](_0x69552e,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x63')]=function(){var _0x52ee58=this;setInterval(function(){if(!_0x52ee58[_0x5fa2('0x17')][_0x5fa2('0x64')]){return ami['Action']({'action':'queuesummary'})[_0x5fa2('0x65')](function(_0x4e40dd){_0x52ee58[_0x5fa2('0x17')]['id']=_0x4e40dd['actionid'];_0x52ee58[_0x5fa2('0x17')][_0x5fa2('0x64')]=!![];_0x52ee58[_0x5fa2('0x17')][_0x5fa2('0x66')][_0x4e40dd[_0x5fa2('0x67')]]={};})[_0x5fa2('0x3d')](function(_0x51f6b5){logger['error'](_0x5fa2('0x68'),util[_0x5fa2('0x43')](_0x51f6b5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x69')]=function(_0x2889a2,_0x51cd1f){var _0x5a52de=this[_0x5fa2('0x17')][_0x5fa2('0x6a')][_0x2889a2['name']]['summaryEvent'];var _0x2af1bd=new VoiceQueueSummary(_0x2889a2);return _0x2af1bd['createReport'](_0x51cd1f['agents'],this[_0x5fa2('0x13')],_0x5a52de,this['realtime'][_0x5fa2('0x3b')]);};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x6b')]=function(_0x1490b7,_0x120937){var _0x210378=this[_0x5fa2('0x69')](_0x1490b7,_0x120937);var _0x47832a=![];_0x47832a=_0x210378[_0x5fa2('0x6c')](_0x1490b7);if(_0x47832a){Object['assign'](_0x1490b7,_0x210378);this['realtime']['voiceQueues'][_0x1490b7[_0x5fa2('0x5d')]]=_0x1490b7;this[_0x5fa2('0x59')](_0x210378);}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x1c')]=function(_0x4a5ca2){var _0x4c4dad=null;var _0x510115=this[_0x5fa2('0x17')]['id'];if(this['summary']['queuestatus'][_0x510115]){_0x4c4dad=this[_0x5fa2('0x17')][_0x5fa2('0x66')][_0x510115][_0x4a5ca2['actionid']];}if(!_0x4c4dad){this[_0x5fa2('0x17')]=initializeSummary();return;}var _0x398e09=this[_0x5fa2('0x15')][_0x4c4dad[_0x5fa2('0x56')]];if(_0x398e09['type']==='inbound'){this[_0x5fa2('0x6b')](_0x398e09,_0x4c4dad);}else if(_0x398e09['type']==='outbound'){var _0x7f8d38=this[_0x5fa2('0x69')](_0x398e09,_0x4c4dad);ami[_0x5fa2('0x4e')](_0x5fa2('0x6d'),_0x7f8d38);}this[_0x5fa2('0x17')][_0x5fa2('0x6e')]-=0x1;var _0x1e6994=this[_0x5fa2('0x17')]['statusRequests']>0x0?!![]:![];if(!_0x1e6994){return this[_0x5fa2('0x6f')](this['summary'][_0x5fa2('0x70')]);}};VoiceQueueReport['prototype'][_0x5fa2('0x71')]=function(_0x5bf610){var _0x2fb8f4=this[_0x5fa2('0x17')]['id'];if(this['summary'][_0x5fa2('0x66')][_0x2fb8f4]&&this[_0x5fa2('0x17')][_0x5fa2('0x66')][_0x2fb8f4][_0x5bf610[_0x5fa2('0x67')]]){this['summary'][_0x5fa2('0x66')][_0x2fb8f4][_0x5bf610[_0x5fa2('0x67')]][_0x5fa2('0x13')][_0x5fa2('0x72')](_0x5bf610);}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x73')]=function(_0x1cd2aa){var _0x398d61=this;try{if(this[_0x5fa2('0x5f')](_0x1cd2aa)&&this[_0x5fa2('0x5f')](_0x1cd2aa[_0x5fa2('0x56')])){logger['debug'](_0x5fa2('0x74'),util['inspect'](_0x1cd2aa,{'showHidden':![],'depth':null}));var _0x18e89c=this[_0x5fa2('0x15')][_0x1cd2aa[_0x5fa2('0x56')]];if(_0x18e89c){logger[_0x5fa2('0x4b')](_0x5fa2('0x75'),_0x18e89c[_0x5fa2('0x5d')]);this[_0x5fa2('0x17')]['queues'][_0x18e89c[_0x5fa2('0x5d')]]={'summaryEvent':_0x1cd2aa};this[_0x5fa2('0x17')][_0x5fa2('0x6e')]+=0x1;return ami[_0x5fa2('0x3c')]({'action':_0x5fa2('0x66'),'queue':_0x18e89c[_0x5fa2('0x5d')]})[_0x5fa2('0x65')](function(_0x49b1ce){if(!_0x398d61[_0x5fa2('0x17')][_0x5fa2('0x66')][_0x1cd2aa[_0x5fa2('0x67')]]){_0x398d61[_0x5fa2('0x17')][_0x5fa2('0x66')][_0x1cd2aa[_0x5fa2('0x67')]]={};}_0x398d61['summary'][_0x5fa2('0x66')][_0x1cd2aa[_0x5fa2('0x67')]][_0x49b1ce[_0x5fa2('0x67')]]={'queue':_0x18e89c[_0x5fa2('0x5d')],'agents':[]};})['catch'](function(_0x1a449b){throw _0x1a449b;});}}}catch(_0x196d8a){logger[_0x5fa2('0x41')](_0x5fa2('0x68'),util[_0x5fa2('0x43')](_0x196d8a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x6f')]=function(_0x496544){if(this[_0x5fa2('0x17')][_0x5fa2('0x6e')]>0x0){this[_0x5fa2('0x17')][_0x5fa2('0x70')]=_0x496544;return;}logger['debug'](_0x5fa2('0x76'),util[_0x5fa2('0x43')](_0x496544,{'showHidden':![],'depth':null}));this['summary']=initializeSummary();ami[_0x5fa2('0x4e')]('custom:queuesummarycomplete',{});};VoiceQueueReport[_0x5fa2('0xc')]['syncQueueCallerJoin']=function(_0x55617e){try{if(this[_0x5fa2('0x5f')](_0x55617e)){logger[_0x5fa2('0x4b')](_0x5fa2('0x77'),_0x55617e['uniqueid'],util[_0x5fa2('0x43')](_0x55617e,{'showHidden':![],'depth':null}));if(_[_0x5fa2('0x60')](this['queueReports'][_0x55617e[_0x5fa2('0x4d')]])){this['queueReports'][_0x55617e[_0x5fa2('0x4d')]]=[];}if(_[_0x5fa2('0x60')](this[_0x5fa2('0x3b')][_0x55617e['uniqueid']])){this[_0x5fa2('0x3b')][_0x55617e[_0x5fa2('0x4d')]]={};}var _0x315265=new QueueReport();_0x315265[_0x5fa2('0x56')]=_0x55617e['queue'];_0x315265[_0x5fa2('0x5a')]=this[_0x5fa2('0x15')][_0x315265['queue']]&&this[_0x5fa2('0x15')][_0x315265['queue']][_0x5fa2('0x5a')]?this[_0x5fa2('0x15')][_0x315265[_0x5fa2('0x56')]][_0x5fa2('0x5a')]||_0x5fa2('0x5b'):_0x5fa2('0x5b');_0x315265[_0x5fa2('0x78')]=moment()['format'](_0x5fa2('0x79'));_0x315265[_0x5fa2('0x7a')]=_0x55617e[_0x5fa2('0x7a')];_0x315265[_0x5fa2('0x7b')]=_0x55617e[_0x5fa2('0x7b')];_0x315265[_0x5fa2('0x4d')]=_0x55617e[_0x5fa2('0x4d')];_0x315265['routealias']=this[_0x5fa2('0x3b')][_0x55617e[_0x5fa2('0x4d')]][_0x5fa2('0x7c')];logger['info'](_0x5fa2('0x7d'),_0x315265[_0x5fa2('0x56')],_0x315265['type']);Object[_0x5fa2('0x7e')](_0x315265,_['pick'](_0x55617e,_['keys'](_0x315265)));this[_0x5fa2('0x11')][_0x55617e[_0x5fa2('0x4d')]][_0x5fa2('0x72')](_0x315265);this[_0x5fa2('0x3b')][_0x55617e[_0x5fa2('0x4d')]]=_0x315265;this[_0x5fa2('0x4a')](_0x315265,_0x5fa2('0x1d'));}}catch(_0x27bbf5){logger[_0x5fa2('0x41')](_0x5fa2('0x77'),_0x55617e[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x27bbf5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x20')]=function(_0x5d528d){try{if(this[_0x5fa2('0x5f')](_0x5d528d)){logger[_0x5fa2('0x4b')](_0x5fa2('0x7f'),_0x5d528d[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x5d528d,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x5d528d[_0x5fa2('0x4d')]]){var _0xb34630=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x5d528d[_0x5fa2('0x4d')]]);_0xb34630['queuecallercomplete']=![];_0xb34630[_0x5fa2('0x81')]=null;_0xb34630['holdtime']=_0x5d528d[_0x5fa2('0x82')];_0xb34630[_0x5fa2('0x83')]=_0x5d528d[_0x5fa2('0x83')];_0xb34630[_0x5fa2('0x1f')]=!![];_0xb34630[_0x5fa2('0x84')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0xb34630[_0x5fa2('0x54')]=_0x5fa2('0x85');_0xb34630['lastAssignedTo']=null;logger['info'](_0x5fa2('0x86'),_0xb34630[_0x5fa2('0x56')],_0xb34630['type']);this['channels'][_0x5d528d['uniqueid']]=_0xb34630;this[_0x5fa2('0x48')](_0xb34630,_0x5fa2('0x1f'));}}}catch(_0x287a34){logger['error'](_0x5fa2('0x7f'),_0x5d528d[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x287a34,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5fa2('0x21')]=function(_0x43ed82){try{if(this[_0x5fa2('0x5f')](_0x43ed82)){logger[_0x5fa2('0x4b')](_0x5fa2('0x87'),_0x43ed82['uniqueid'],util[_0x5fa2('0x43')](_0x43ed82,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x43ed82['uniqueid']]){var _0x28981d=_['last'](this[_0x5fa2('0x11')][_0x43ed82['uniqueid']]);_0x28981d[_0x5fa2('0x88')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x28981d['connectedlinenum']=_0x43ed82['connectedlinenum'];_0x28981d['connectedlinename']=_0x43ed82[_0x5fa2('0x89')];logger[_0x5fa2('0x8a')](_0x5fa2('0x8b'),_0x28981d[_0x5fa2('0x56')],_0x28981d[_0x5fa2('0x5a')],_0x43ed82[_0x5fa2('0x8c')],_0x43ed82[_0x5fa2('0x89')]);this['channels'][_0x43ed82[_0x5fa2('0x4d')]]=_0x28981d;this[_0x5fa2('0x4a')](_0x28981d,_0x5fa2('0x8d'));}}}catch(_0x16a062){logger[_0x5fa2('0x41')](_0x5fa2('0x87'),_0x43ed82[_0x5fa2('0x4d')],util['inspect'](_0x16a062,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x25')]=function(_0x42257e){try{if(this[_0x5fa2('0x5f')](_0x42257e)){logger[_0x5fa2('0x4b')](_0x5fa2('0x8e'),_0x42257e[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x42257e,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x42257e[_0x5fa2('0x4d')]]){var _0x3580ae=_[_0x5fa2('0x80')](this['queueReports'][_0x42257e[_0x5fa2('0x4d')]]);_0x3580ae[_0x5fa2('0x39')]=!![];_0x3580ae[_0x5fa2('0x54')]=_0x5fa2('0x8f');logger[_0x5fa2('0x8a')](_0x5fa2('0x90'),_0x3580ae[_0x5fa2('0x56')],_0x3580ae[_0x5fa2('0x5a')]);}}}catch(_0x194f61){logger[_0x5fa2('0x41')]('[%s][voiceQueueReport][agentconnect]',_0x42257e[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x194f61,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x23')]=function(_0x5ad536){try{if(this['isNotNull'](_0x5ad536)){logger['debug'](_0x5fa2('0x91'),_0x5ad536['uniqueid'],util[_0x5fa2('0x43')](_0x5ad536,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x5ad536[_0x5fa2('0x4d')]]){var _0x520bf3=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x5ad536[_0x5fa2('0x4d')]]);_0x520bf3[_0x5fa2('0x1f')]=![];_0x520bf3[_0x5fa2('0x84')]=null;_0x520bf3[_0x5fa2('0x92')]=!![];_0x520bf3[_0x5fa2('0x93')]=_0x5ad536[_0x5fa2('0x94')];_0x520bf3[_0x5fa2('0x82')]=_0x5ad536[_0x5fa2('0x82')];_0x520bf3['queuecallercomplete']=!![];_0x520bf3[_0x5fa2('0x38')]=![];_0x520bf3[_0x5fa2('0x95')]=null;if(!_0x520bf3['transfer']){if(_0x5ad536[_0x5fa2('0x96')]=='transfer'){_0x520bf3['queuecallerexitreason']=_0x5fa2('0x97');logger[_0x5fa2('0x8a')](_0x5fa2('0x98'),_0x520bf3[_0x5fa2('0x56')],_0x520bf3[_0x5fa2('0x5a')]);}else{if(_['startsWith'](_0x5ad536['channel']['toLowerCase'](),_0x5fa2('0x99'))){if(this[_0x5fa2('0x11')][_0x5ad536['linkedid']]){var _0x4fada2=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x5ad536[_0x5fa2('0x9a')]]);_0x4fada2[_0x5fa2('0x39')]=![];_0x4fada2[_0x5fa2('0x38')]=!![];_0x4fada2[_0x5fa2('0x95')]=moment(_0x520bf3['queuecallerjoinAt'])[_0x5fa2('0x9b')](_0x5ad536[_0x5fa2('0x82')],_0x5fa2('0x9c'))[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x4fada2[_0x5fa2('0x54')]='FORWARDTRANSFER';_0x4fada2[_0x5fa2('0x9d')]=!![];_0x4fada2['transfertype']=_0x5fa2('0x9e');_0x4fada2['transferexten']=_0x5ad536[_0x5fa2('0x9f')];_0x4fada2[_0x5fa2('0xa0')]=_0x5ad536[_0x5fa2('0x4d')];logger[_0x5fa2('0x8a')](_0x5fa2('0xa1'),_0x4fada2[_0x5fa2('0x56')],_0x4fada2[_0x5fa2('0x5a')]);var _0x8c3d76=this[_0x5fa2('0x11')][_0x5ad536[_0x5fa2('0x9a')]];this['queueReports'][_0x5ad536[_0x5fa2('0x9a')]]=this[_0x5fa2('0x11')][_0x5ad536[_0x5fa2('0x4d')]];this['queueReports'][_0x5ad536[_0x5fa2('0x4d')]]=_0x8c3d76;}}else{_0x520bf3['queuecallerexitreason']='COMPLETEDBY'+_0x5ad536['reason'][_0x5fa2('0xa2')]();logger[_0x5fa2('0x8a')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x520bf3[_0x5fa2('0x56')],_0x520bf3[_0x5fa2('0x5a')],_0x520bf3['queuecallerexitreason']);}}}this[_0x5fa2('0x3b')][_0x5ad536[_0x5fa2('0x4d')]]=_0x520bf3;}}}catch(_0x454681){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x5ad536['uniqueid'],util[_0x5fa2('0x43')](_0x454681,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')]['syncVarSet']=function(_0x683885){try{if(this[_0x5fa2('0x5f')](_0x683885)){logger[_0x5fa2('0x4b')]('[%s][voiceQueueReport][varset]',_0x683885['uniqueid'],util['inspect'](_0x683885,{'showHidden':![],'depth':null}));this['addVariable'](_0x683885[_0x5fa2('0x4d')],_[_0x5fa2('0xa3')](_0x683885[_0x5fa2('0xa4')])[0x0],_0x683885[_0x5fa2('0xa5')]);if(this[_0x5fa2('0x11')][_0x683885[_0x5fa2('0x4d')]]){var _0x1377a1=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x683885[_0x5fa2('0x4d')]]);if(_0x1377a1){if(this[_0x5fa2('0x5f')](_0x683885[_0x5fa2('0xa4')])&&this[_0x5fa2('0x5f')](_0x683885['variable'][_0x5fa2('0x66')])){switch(_0x683885[_0x5fa2('0xa5')]){case _0x5fa2('0xa6'):_0x1377a1[_0x5fa2('0x38')]=![];_0x1377a1[_0x5fa2('0x95')]=null;break;case'TIMEOUT':_0x1377a1[_0x5fa2('0xa7')]=_0x5fa2('0xa8');_0x1377a1[_0x5fa2('0x38')]=!![];_0x1377a1[_0x5fa2('0x95')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x1377a1[_0x5fa2('0x88')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));logger[_0x5fa2('0x4b')](_0x5fa2('0xa9'),_0x683885[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x1377a1,{'showHidden':![],'depth':null}));ami['emit'](_0x5fa2('0xaa'),_0x1377a1);break;default:_0x1377a1[_0x5fa2('0x38')]=!![];_0x1377a1[_0x5fa2('0x95')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x1377a1[_0x5fa2('0x88')]=moment()['format'](_0x5fa2('0x79'));}_0x1377a1[_0x5fa2('0x1f')]=![];_0x1377a1[_0x5fa2('0x84')]=null;_0x1377a1['queuecallerexitreason']=_0x683885[_0x5fa2('0xa5')];this[_0x5fa2('0x3b')][_0x683885[_0x5fa2('0x4d')]]=_0x1377a1;this['emitVoiceQueueChannelRemove'](_0x1377a1,_0x5fa2('0x26'));}else if(this[_0x5fa2('0x5f')](_0x683885['variable'])&&this['isNotNull'](_0x683885[_0x5fa2('0xa4')][_0x5fa2('0xab')])){if(!_0x1377a1['queuecallerabandon']){_0x1377a1[_0x5fa2('0x38')]=!![];_0x1377a1[_0x5fa2('0x95')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x1377a1[_0x5fa2('0x54')]=_0x5fa2('0xac');_0x1377a1[_0x5fa2('0x88')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));this[_0x5fa2('0x3b')][_0x683885['uniqueid']]=_0x1377a1;}}logger['info'](_0x5fa2('0xad'),_0x683885[_0x5fa2('0x4d')],_0x1377a1[_0x5fa2('0x56')],_0x1377a1[_0x5fa2('0x5a')],_[_0x5fa2('0xa3')](_0x683885[_0x5fa2('0xa4')])[0x0],_0x683885['value']);_0x1377a1[_0x5fa2('0x44')]=this['variables'][_0x683885[_0x5fa2('0x4d')]];}}}}catch(_0x2dcf2d){logger[_0x5fa2('0x41')]('[%s][voiceQueueReport][varset]',_0x683885['uniqueid'],util[_0x5fa2('0x43')](_0x2dcf2d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0xae')]=function(_0x46b403,_0x2e66e5,_0x47bb29){var _0xe6f7ed=[_0x5fa2('0xaf'),_0x5fa2('0xb0'),'rtpaudioqosjitter',_0x5fa2('0xb1'),_0x5fa2('0xb2'),_0x5fa2('0xb3'),'rtpaudioqosrtt',_0x5fa2('0xb4'),_0x5fa2('0xb5'),'sipuri',_0x5fa2('0xb6'),_0x5fa2('0xb7'),_0x5fa2('0xb8'),_0x5fa2('0xb9'),_0x5fa2('0xba'),_0x5fa2('0xbb'),'membername',_0x5fa2('0xbc'),_0x5fa2('0xbd')];if(!_[_0x5fa2('0xbe')](_0x2e66e5)&&!_['includes'](_0xe6f7ed,_0x2e66e5)){if(_[_0x5fa2('0x60')](this['variables'][_0x46b403])){this[_0x5fa2('0x44')][_0x46b403]={};}this[_0x5fa2('0x44')][_0x46b403][_0x2e66e5]=_0x47bb29;}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0xbf')]=function(_0x4c100b,_0x41cf1e,_0x278375){var _0x27c195={};for(var _0x215ade=0x0;_0x215ade<this[_0x5fa2('0x11')][_0x4c100b]['length'];_0x215ade+=0x1){_0x27c195=this[_0x5fa2('0x11')][_0x4c100b][_0x215ade];var _0xe1c747=this[_0x5fa2('0x15')][_0x27c195['queue']];if(_0xe1c747){_0xe1c747['sumHoldTime']+=moment(_0x27c195[_0x5fa2('0x88')])[_0x5fa2('0xc0')](_0x27c195[_0x5fa2('0x78')],_0x5fa2('0x9c'))||0x0;if(_0x278375&&_0x27c195[_0x5fa2('0x54')]===_0x5fa2('0x55')){_0x27c195[_0x5fa2('0x54')]=_0x5fa2('0x8f');}if(_0x215ade===this[_0x5fa2('0x11')][_0x4c100b][_0x5fa2('0xc1')]-0x1){_0xe1c747[_0x5fa2('0xc2')]+=moment()[_0x5fa2('0xc3')](0x0)[_0x5fa2('0xc0')](_0x27c195[_0x5fa2('0x78')],_0x5fa2('0x9c'));if(hasCallerLeftTheQueue(_0x27c195)&&_0x27c195['queuecallerexitreason']!==_0x5fa2('0x55')){_0xe1c747[_0x5fa2('0xc4')]+=0x1;}if(_0x27c195[_0x5fa2('0x39')]){_0xe1c747[_0x5fa2('0xc5')]+=0x1;_0xe1c747[_0x5fa2('0xc6')]+=moment()['milliseconds'](0x0)[_0x5fa2('0xc0')](_0x27c195['queuecallerleaveAt'],'seconds');_0x27c195[_0x5fa2('0x81')]=moment()[_0x5fa2('0x4f')](_0x5fa2('0x79'));_0x27c195['queuecallerexit']=![];_0x27c195[_0x5fa2('0x95')]=null;}if(_0x27c195['queuecallerexit']&&_0x27c195[_0x5fa2('0x9d')]!=!![]){_0xe1c747[_0x5fa2('0xc7')]+=0x1;_0x27c195['lastevent']=_0x5fa2('0xc7');logger[_0x5fa2('0x4b')](_0x5fa2('0xc8'),_0x4c100b,util[_0x5fa2('0x43')](_0x27c195,{'showHidden':![],'depth':null}));ami[_0x5fa2('0x4e')](_0x5fa2('0xc9'),_0x27c195);}if(_0x27c195['queuecallerabandon']){_0xe1c747[_0x5fa2('0xca')]+=0x1;_0x27c195[_0x5fa2('0xa7')]='abandoned';logger[_0x5fa2('0x4b')](_0x5fa2('0xcb'),_0x4c100b,util['inspect'](_0x27c195,{'showHidden':![],'depth':null}));ami['emit'](_0x5fa2('0xcc'),_0x27c195);}}else{_0xe1c747[_0x5fa2('0xc2')]+=_0xe1c747['sumHoldTime'];}logger[_0x5fa2('0x8a')](_0x5fa2('0xcd'),_0x4c100b,_0x27c195[_0x5fa2('0x56')],_0x27c195[_0x5fa2('0x5a')],_0x41cf1e);this[_0x5fa2('0x3b')][_0x4c100b]=_0x27c195;Object['assign'](this[_0x5fa2('0x15')][_0x27c195[_0x5fa2('0x56')]],_0xe1c747);if(_0x27c195['queuecallerleaveAt']){this['emitVoiceQueueChannelRemove'](_0x27c195,_0x5fa2('0x27'));}}}logger[_0x5fa2('0x4b')](_0x5fa2('0xce'),_0x4c100b,util[_0x5fa2('0x43')](this['queueReports'][_0x4c100b],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x27c195)&&_0x27c195['queuecallerexitreason']!=='ATTENDEDTRANSFER'){ami[_0x5fa2('0x4e')](_0x5fa2('0xcf'),this['queueReports'][_0x4c100b]);delete this['queueReports'][_0x4c100b];delete this['channels'][_0x4c100b];if(this[_0x5fa2('0x44')][_0x4c100b]){delete this['variables'][_0x4c100b];}}};VoiceQueueReport[_0x5fa2('0xc')]['syncHangup']=function(_0x17dd01){try{if(this['isNotNull'](_0x17dd01)){logger[_0x5fa2('0x4b')]('[%s][voiceQueueReport][hangup]',_0x17dd01[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x17dd01,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x17dd01[_0x5fa2('0x4d')]]){return this[_0x5fa2('0xbf')](_0x17dd01['uniqueid'],_0x17dd01[_0x5fa2('0xd0')],![]);}if(this[_0x5fa2('0x11')][_0x17dd01[_0x5fa2('0x9a')]]){if(_0x17dd01[_0x5fa2('0xd1')]==='21'){return;}return this[_0x5fa2('0xbf')](_0x17dd01[_0x5fa2('0x9a')],_0x17dd01[_0x5fa2('0xd0')],!![]);}var _0x130fbb=Object[_0x5fa2('0xa3')](this['queueReports']);for(var _0x761151=0x0;_0x761151<_0x130fbb[_0x5fa2('0xc1')];_0x761151++){var _0xa819e3=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x130fbb[_0x761151]]);if(_0xa819e3&&_0xa819e3[_0x5fa2('0xd2')]===_0x17dd01[_0x5fa2('0x4d')]){return this[_0x5fa2('0xbf')](_0xa819e3[_0x5fa2('0x4d')],_0x17dd01[_0x5fa2('0xd0')],!![]);}}}}catch(_0x5913cf){logger[_0x5fa2('0x41')](_0x5fa2('0xd3'),_0x17dd01['uniqueid'],util[_0x5fa2('0x43')](_0x5913cf,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0x2e')]=function(_0x253322){try{if(this[_0x5fa2('0x5f')](_0x253322)){logger[_0x5fa2('0x4b')](_0x5fa2('0xd4'),_0x253322[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x253322,{'showHidden':![],'depth':null}));var _0x1b1c46;var _0x51d834;var _0x27cd2d;if(this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xd5')]]){_0x1b1c46=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xd5')]]);_0x1b1c46[_0x5fa2('0xd6')]=_0x253322[_0x5fa2('0xd7')];_0x1b1c46[_0x5fa2('0xa0')]=_0x253322[_0x5fa2('0xd8')];_0x1b1c46[_0x5fa2('0x54')]='ATTENDEDTRANSFER';_0x1b1c46[_0x5fa2('0x9d')]=!![];_0x1b1c46['transfertype']=_0x5fa2('0xd9');if(this['queueReports'][_0x253322[_0x5fa2('0xd8')]]){_0x27cd2d=this[_0x5fa2('0x11')][_0x253322['secondtransfereruniqueid']];this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xd8')]]=this['queueReports'][_0x253322[_0x5fa2('0xd5')]];this[_0x5fa2('0x11')][_0x253322['transfereeuniqueid']]=_0x27cd2d;_0x51d834=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xd5')]]);_0x51d834[_0x5fa2('0xda')]=!![];}logger[_0x5fa2('0x8a')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x253322[_0x5fa2('0x4d')],_0x1b1c46['queue'],_0x1b1c46['type'],_0x1b1c46[_0x5fa2('0xd6')],_0x1b1c46[_0x5fa2('0xa0')]);}else if(this['queueReports'][_0x253322[_0x5fa2('0xdb')]]){_0x1b1c46=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xdb')]]);_0x1b1c46[_0x5fa2('0xd6')]=_0x253322[_0x5fa2('0xdc')];_0x1b1c46[_0x5fa2('0xa0')]=_0x253322['origtransfereruniqueid'];_0x1b1c46[_0x5fa2('0x54')]=_0x5fa2('0x55');_0x1b1c46[_0x5fa2('0x9d')]=!![];_0x1b1c46[_0x5fa2('0xdd')]=_0x5fa2('0xd9');if(this[_0x5fa2('0x11')][_0x253322['origtransfereruniqueid']]){_0x27cd2d=this[_0x5fa2('0x11')][_0x253322['origtransfereruniqueid']];this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xde')]]=this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xdb')]];this['queueReports'][_0x253322[_0x5fa2('0xdb')]]=_0x27cd2d;_0x51d834=_['last'](this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xdb')]]);_0x51d834[_0x5fa2('0xda')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x253322[_0x5fa2('0x4d')],_0x1b1c46['queue'],_0x1b1c46[_0x5fa2('0x5a')],_0x1b1c46['transferexten'],_0x1b1c46[_0x5fa2('0xa0')]);}else if(this['queueReports'][_0x253322[_0x5fa2('0xde')]]){_0x1b1c46=_['last'](this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xde')]]);_0x1b1c46['transferexten']=_0x253322[_0x5fa2('0xdc')];_0x1b1c46[_0x5fa2('0xa0')]=_0x253322[_0x5fa2('0xde')];_0x1b1c46[_0x5fa2('0x54')]=_0x5fa2('0x55');_0x1b1c46[_0x5fa2('0x9d')]=!![];_0x1b1c46[_0x5fa2('0xdd')]='ATTENDED';_0x1b1c46[_0x5fa2('0xda')]=!![];_0x1b1c46[_0x5fa2('0xd2')]=_0x253322[_0x5fa2('0xd5')];}else if(this[_0x5fa2('0x11')][_0x253322[_0x5fa2('0xd8')]]){_0x1b1c46=_[_0x5fa2('0x80')](this['queueReports'][_0x253322[_0x5fa2('0xd8')]]);_0x1b1c46[_0x5fa2('0xd6')]=_0x253322[_0x5fa2('0xd7')];_0x1b1c46[_0x5fa2('0xa0')]=_0x253322['secondtransfereruniqueid'];_0x1b1c46['queuecallerexitreason']=_0x5fa2('0x55');_0x1b1c46[_0x5fa2('0x9d')]=!![];_0x1b1c46[_0x5fa2('0xdd')]='ATTENDED';_0x1b1c46['switch']=!![];_0x1b1c46[_0x5fa2('0xd2')]=_0x253322[_0x5fa2('0xdb')];}}}catch(_0x3ee7a6){logger[_0x5fa2('0x41')]('[%s][voiceQueueReport][attendedtransfer]',_0x253322[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x3ee7a6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5fa2('0x30')]=function(_0x2006b1){try{if(this[_0x5fa2('0x5f')](_0x2006b1)){logger[_0x5fa2('0x4b')](_0x5fa2('0xdf'),_0x2006b1['uniqueid'],util['inspect'](_0x2006b1,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2006b1[_0x5fa2('0xd5')]]){var _0xc43a3f=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0x2006b1[_0x5fa2('0xd5')]]);_0xc43a3f[_0x5fa2('0x54')]=_0x5fa2('0xe0');_0xc43a3f['transfer']=!![];_0xc43a3f[_0x5fa2('0xdd')]='BLIND';_0xc43a3f[_0x5fa2('0xd6')]=_0x2006b1[_0x5fa2('0xe1')];_0xc43a3f[_0x5fa2('0xa0')]=_0x2006b1['transfereeuniqueid'];logger['info'](_0x5fa2('0xe2'),_0x2006b1[_0x5fa2('0x4d')],_0xc43a3f['queue'],_0xc43a3f[_0x5fa2('0x5a')],_0xc43a3f[_0x5fa2('0xd6')],_0xc43a3f[_0x5fa2('0xa0')]);this[_0x5fa2('0x28')]({'event':_0x5fa2('0xe3'),'uniqueid':_0x2006b1[_0x5fa2('0xd5')],'context':_0x2006b1['context'],'channel':_0x2006b1[_0x5fa2('0xe4')]});}}}catch(_0x31d750){logger[_0x5fa2('0x41')](_0x5fa2('0xdf'),_0x2006b1[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0x31d750,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0xdf31fb){try{if(this[_0x5fa2('0x5f')](_0xdf31fb)){logger[_0x5fa2('0x4b')](_0x5fa2('0xe5'),_0xdf31fb[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0xdf31fb,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xdf31fb[_0x5fa2('0x4d')]]){var _0x5394c7=_[_0x5fa2('0x80')](this[_0x5fa2('0x11')][_0xdf31fb[_0x5fa2('0x4d')]]);if(!_[_0x5fa2('0xbe')](_0x5394c7[_0x5fa2('0x88')])){_0x5394c7[_0x5fa2('0xe6')]=moment()['format'](_0x5fa2('0x79'));logger[_0x5fa2('0x8a')](_0x5fa2('0xe7'),_0xdf31fb['uniqueid'],_0x5394c7[_0x5fa2('0xe6')]);}}}}catch(_0xd605c3){logger[_0x5fa2('0x41')]('[%s][voiceQueueReport][musiconholdstart]',_0xdf31fb[_0x5fa2('0x4d')],util[_0x5fa2('0x43')](_0xd605c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x43af9e){try{if(this[_0x5fa2('0x5f')](_0x43af9e)){logger['debug'](_0x5fa2('0xe8'),_0x43af9e['uniqueid'],util[_0x5fa2('0x43')](_0x43af9e,{'showHidden':![],'depth':null}));if(this[_0x5fa2('0x11')][_0x43af9e[_0x5fa2('0x4d')]]){var _0x54a8b1=_['last'](this[_0x5fa2('0x11')][_0x43af9e[_0x5fa2('0x4d')]]);if(!_[_0x5fa2('0xbe')](_0x54a8b1[_0x5fa2('0xe6')])){_0x54a8b1['mohtime']+=moment()[_0x5fa2('0xc3')](0x0)[_0x5fa2('0xc0')](_0x54a8b1['mohstarttime'],_0x5fa2('0x9c'));logger[_0x5fa2('0x8a')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x43af9e[_0x5fa2('0x4d')],_0x54a8b1[_0x5fa2('0xe9')]);delete _0x54a8b1[_0x5fa2('0xe6')];}}}}catch(_0x6d07e){logger[_0x5fa2('0x41')](_0x5fa2('0xe8'),_0x43af9e['uniqueid'],util[_0x5fa2('0x43')](_0x6d07e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5fa2('0xc')][_0x5fa2('0xea')]=function(_0x5c147c){try{if(this['isNotNull'](_0x5c147c)){logger[_0x5fa2('0x4b')](_0x5fa2('0xeb'),_0x5c147c['uniqueid'],util['inspect'](_0x5c147c,{'showHidden':![],'depth':null}));if(_0x5c147c['application']['toLowerCase']()===_0x5fa2('0xec')){_0x5c147c[_0x5fa2('0xed')]=_0x5c147c['appdata']&&_0x5c147c[_0x5fa2('0xee')]['startsWith'](_0x5fa2('0xef'))?_0x5c147c['appdata']:(_0x5c147c[_0x5fa2('0xee')]||_0x5c147c[_0x5fa2('0xed')])[_0x5fa2('0xf0')]();if(_[_0x5fa2('0xf1')](_0x5c147c['applicationdata']['toLowerCase'](),_0x5fa2('0xf2'))){logger['info'](_0x5fa2('0xf3'),_0x5c147c[_0x5fa2('0x4d')],_0x5c147c[_0x5fa2('0xf4')],_0x5c147c['applicationdata']);if(_['isUndefined'](this[_0x5fa2('0x3b')][_0x5c147c[_0x5fa2('0x4d')]]))this[_0x5fa2('0x3b')][_0x5c147c[_0x5fa2('0x4d')]]={};var _0x1197e9=_0x5c147c[_0x5fa2('0xed')]['split']('=');var _0x57f373=_0x1197e9[0x0]['toLowerCase']()['match'](/cdr\((.*)\)/);if(_0x57f373)this[_0x5fa2('0x3b')][_0x5c147c[_0x5fa2('0x4d')]][_0x57f373[0x1]]=_0x1197e9[0x1];}}}}catch(_0x49d31e){logger['error'](_0x5fa2('0xf5'),_0x5c147c['uniqueid'],util[_0x5fa2('0x43')](_0x49d31e,{'showHidden':![],'depth':null}));}};module[_0x5fa2('0xf6')]=VoiceQueueReport;
\ No newline at end of file
index d3ae402..c0561d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152b=['CreateReportAgentPreview','../client','createHistory','queue','Request'];(function(_0x109bc8,_0x571e5b){var _0x447022=function(_0x155aba){while(--_0x155aba){_0x109bc8['push'](_0x109bc8['shift']());}};_0x447022(++_0x571e5b);}(_0x152b,0x1c8));var _0xb152=function(_0x9d1e6b,_0x3bdc22){_0x9d1e6b=_0x9d1e6b-0x0;var _0x2b3070=_0x152b[_0x9d1e6b];return _0x2b3070;};'use strict';var client=require(_0xb152('0x0'));exports[_0xb152('0x1')]=function(_0x10c0bd){return function(){_0x10c0bd['campaign']=_0x10c0bd[_0xb152('0x2')];return client[_0xb152('0x3')](_0xb152('0x4'),{'body':_0x10c0bd,'log':_0xb152('0x4')});};};
\ No newline at end of file
+var _0x7c07=['CreateReportAgentPreview','../client','createHistory','campaign','queue','Request'];(function(_0xdbbc99,_0x36e79f){var _0x3162a7=function(_0x5a56d5){while(--_0x5a56d5){_0xdbbc99['push'](_0xdbbc99['shift']());}};_0x3162a7(++_0x36e79f);}(_0x7c07,0x15d));var _0x77c0=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x7c07[_0x4243a3];return _0x1b2a33;};'use strict';var client=require(_0x77c0('0x0'));exports[_0x77c0('0x1')]=function(_0x725a51){return function(){_0x725a51[_0x77c0('0x2')]=_0x725a51[_0x77c0('0x3')];return client[_0x77c0('0x4')](_0x77c0('0x5'),{'body':_0x725a51,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index a2e006f..ab9c035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb488=['../client','Request','CreateAttachment'];(function(_0x5292a2,_0x1475a7){var _0x24500c=function(_0xd9691f){while(--_0xd9691f){_0x5292a2['push'](_0x5292a2['shift']());}};_0x24500c(++_0x1475a7);}(_0xb488,0xe7));var _0x8b48=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xb488[_0x4565bf];return _0x5610ba;};'use strict';var client=require(_0x8b48('0x0'));exports['create']=function(_0x2d57f4){return client[_0x8b48('0x1')](_0x8b48('0x2'),{'body':_0x2d57f4,'log':_0x8b48('0x2')});};
\ No newline at end of file
+var _0x1648=['create','Request','CreateAttachment','../client'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x1648,0xa7));var _0x8164=function(_0x68aa2b,_0x49e914){_0x68aa2b=_0x68aa2b-0x0;var _0x53a486=_0x1648[_0x68aa2b];return _0x53a486;};'use strict';var client=require(_0x8164('0x0'));exports[_0x8164('0x1')]=function(_0x35fb6b){return client[_0x8164('0x2')](_0x8164('0x3'),{'body':_0x35fb6b,'log':_0x8164('0x3')});};
\ No newline at end of file
index 28a42d7..db785b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x5dcf47,_0x5bf19a){var _0x37063e=function(_0x150f3c){while(--_0x150f3c){_0x5dcf47['push'](_0x5dcf47['shift']());}};_0x37063e(++_0x5bf19a);}(_0x7a54,0x106));var _0x47a5=function(_0x52b226,_0x2ad723){_0x52b226=_0x52b226-0x0;var _0x122a4a=_0x7a54[_0x52b226];return _0x122a4a;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x1100bc,_0x29f566){var _0x5f24c8=function(_0x2d450d){while(--_0x2d450d){_0x1100bc['push'](_0x1100bc['shift']());}};_0x5f24c8(++_0x29f566);}(_0x1261,0x144));var _0x1126=function(_0x589aee,_0x140a03){_0x589aee=_0x589aee-0x0;var _0x2f5ed4=_0x1261[_0x589aee];return _0x2f5ed4;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 055eb9c..7bb481b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x089f=['createContact','Request','getContacts','GetCmContact','../client'];(function(_0x57d4ef,_0xa63405){var _0x29b08f=function(_0x29f2d2){while(--_0x29f2d2){_0x57d4ef['push'](_0x57d4ef['shift']());}};_0x29b08f(++_0xa63405);}(_0x089f,0xae));var _0xf089=function(_0x10cc19,_0x5c45d6){_0x10cc19=_0x10cc19-0x0;var _0x1f093d=_0x089f[_0x10cc19];return _0x1f093d;};'use strict';var client=require(_0xf089('0x0'));exports[_0xf089('0x1')]=function(_0x5e8a0f){return function(){return client[_0xf089('0x2')]('CreateCmContact',{'body':_0x5e8a0f,'log':'CreateCmContact'});};};exports[_0xf089('0x3')]=function(_0x19cf4b){return function(){return client[_0xf089('0x2')](_0xf089('0x4'),{'options':_0x19cf4b,'log':_0xf089('0x4')});};};
\ No newline at end of file
+var _0xb108=['Request','GetCmContact','../client','createContact','CreateCmContact'];(function(_0x1880d0,_0x1b6b1a){var _0x261950=function(_0x217fd5){while(--_0x217fd5){_0x1880d0['push'](_0x1880d0['shift']());}};_0x261950(++_0x1b6b1a);}(_0xb108,0x8e));var _0x8b10=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xb108[_0x2c91e9];return _0x13f0ff;};'use strict';var client=require(_0x8b10('0x0'));exports[_0x8b10('0x1')]=function(_0x1088e6){return function(){return client['Request'](_0x8b10('0x2'),{'body':_0x1088e6,'log':_0x8b10('0x2')});};};exports['getContacts']=function(_0x339b4f){return function(){return client[_0x8b10('0x3')](_0x8b10('0x4'),{'options':_0x339b4f,'log':'GetCmContact'});};};
\ No newline at end of file
index 3e50ab1..1c63bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb182=['handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','moment','getContacts','GetCmHopper','CmContact','Contact','updateContacts','Request','UpdateCmHopper','format','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','DESC','scheduledat','ASC','getContactDialerIvr','priority','queue','MoveContactManagedDialer','countReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','resetActiveCalls','ResetActiveCalls'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb182,0x121));var _0x2b18=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0xb182[_0x4c6d6f];return _0x2d4478;};'use strict';var client=require('../client');var moment=require(_0x2b18('0x0'));exports[_0x2b18('0x1')]=function(_0x438d78,_0x4bc3a7){return function(){return client['Request'](_0x2b18('0x2'),{'options':{'where':{'VoiceQueueId':_0x438d78},'include':[{'model':_0x2b18('0x3'),'as':_0x2b18('0x4')}],'limit':_0x4bc3a7,'raw':![]},'log':'getCmHopper'});};};exports[_0x2b18('0x5')]=function(_0x245a62,_0x22eae8,_0x31236f){return function(){return client[_0x2b18('0x6')](_0x2b18('0x7'),{'body':_0x245a62,'options':{'where':{'VoiceQueueId':_0x22eae8,'scheduledat':{'$lte':moment()[_0x2b18('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x31236f},'log':_0x2b18('0x7')});};};exports[_0x2b18('0x9')]=function(_0xfe8a8d){return client[_0x2b18('0x6')](_0x2b18('0x7'),{'body':_0xfe8a8d,'options':{'where':{'ContactId':_0xfe8a8d[_0x2b18('0xa')],'ListId':_0xfe8a8d[_0x2b18('0xb')],'VoiceQueueId':_0xfe8a8d[_0x2b18('0xc')],'CampaignId':_0xfe8a8d[_0x2b18('0xd')]}},'log':_0x2b18('0x9')});};exports[_0x2b18('0xe')]=function(_0x36bea7,_0xdb11bf,_0x5225bf){return function(){return client[_0x2b18('0x6')](_0x2b18('0xf'),{'options':{'where':{'VoiceQueueId':_0x36bea7,'ListId':_0xdb11bf,'ContactId':_0x5225bf}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x310481,_0xf2643c,_0x436f48,_0x1d20a0){return client[_0x2b18('0x6')](_0x2b18('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x310481,'active':![],'scheduledat':{'$lte':moment()[_0x2b18('0x8')](_0x2b18('0x11'))},'$or':[{'UserId':null},{'UserId':{'$in':_0xf2643c}}]},'order':[['priority',_0x2b18('0x12')],[_0x2b18('0x13'),_0x1d20a0],['id',_0x2b18('0x14')]],'raw':!![],'limit':_0x436f48},'log':'GetContactDialer'});};exports[_0x2b18('0x15')]=function(_0x52754f,_0x5346e5,_0x480cd3){return client[_0x2b18('0x6')](_0x2b18('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x52754f,'active':![],'scheduledat':{'$lte':moment()[_0x2b18('0x8')](_0x2b18('0x11'))}},'include':[{'model':_0x2b18('0x3'),'as':_0x2b18('0x4')}],'order':[[_0x2b18('0x16'),'DESC'],[_0x2b18('0x13'),_0x480cd3],['id',_0x2b18('0x14')]],'raw':!![],'limit':_0x5346e5},'log':'GetContactDialerIvr'});};exports['moveContactManagedDialer']=function(_0x2cef3a,_0x603b94){_0x2cef3a['campaign']=_0x2cef3a[_0x2b18('0x17')];return client[_0x2b18('0x6')](_0x2b18('0x18'),{'body':_0x2cef3a,'options':{'where':{'ContactId':_0x2cef3a[_0x2b18('0xa')],'ListId':_0x2cef3a['ListId'],'VoiceQueueId':_0x2cef3a[_0x2b18('0xc')],'CampaignId':_0x2cef3a['CampaignId'],'active':_0x603b94?undefined:!![]}},'log':_0x2b18('0x18')});};exports[_0x2b18('0x19')]=function(_0x118197){return client['Request']('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x118197['id']?_0x118197['id']||null:null}},'log':'countReScheduled'});};exports[_0x2b18('0x1a')]=function(_0x446655){return function(){return client[_0x2b18('0x6')](_0x2b18('0x1b'),{'options':{'where':{'id':_0x446655},'include':[{'model':_0x2b18('0x3'),'as':_0x2b18('0x4')},{'model':_0x2b18('0x1c'),'as':_0x2b18('0x1d'),'attributes':['id',_0x2b18('0x1e')]},{'model':_0x2b18('0x1f'),'as':_0x2b18('0x20'),'attributes':['id',_0x2b18('0x1e')]}],'raw':!![]},'log':_0x2b18('0x21')});};};exports[_0x2b18('0x22')]=function(_0x23ca0e,_0x2ecd4c,_0x9901bc){return client[_0x2b18('0x6')](_0x2b18('0x7'),{'body':_0x23ca0e,'options':{'where':{'id':_0x2ecd4c},'limit':_0x9901bc},'log':_0x2b18('0x7')});};exports[_0x2b18('0x23')]=function(_0x390724,_0x161709){return function(){return client[_0x2b18('0x6')](_0x2b18('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x390724,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2b18('0x8')](_0x2b18('0x11'))},'UserId':{'$in':_0x161709}},'order':[[_0x2b18('0x16'),_0x2b18('0x12')],[_0x2b18('0x13'),_0x2b18('0x12')],['id',_0x2b18('0x14')]],'include':[{'model':'CmContact','as':_0x2b18('0x4')},{'model':_0x2b18('0x1c'),'as':_0x2b18('0x1d'),'attributes':['id',_0x2b18('0x1e'),'voicePause']}],'group':'db.CmHopper.UserId','raw':!![]},'log':'GetContactDialer'});};};exports[_0x2b18('0x25')]=function(_0x37a32e,_0x145024){return client[_0x2b18('0x6')](_0x2b18('0x26'),{'body':_0x37a32e,'options':_0x145024||{},'log':_0x2b18('0x26')});};exports[_0x2b18('0x27')]=function(_0x3f3f4d,_0x1639a4,_0x754b53){return function(){return client[_0x2b18('0x6')](_0x2b18('0x28'),{'body':{'where':{'voiceQueueIds':_0x3f3f4d,'interval':_0x1639a4,'availableAgentsIds':_0x754b53}},'log':_0x2b18('0x27')});};};
\ No newline at end of file
+var _0xf569=['CampaignId','destroyContact','DestroyCmHopper','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','getContactDialerIvr','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','VoiceQueueId','countReScheduled','getContactPreview','GetCmHopperPreview','User','VoiceQueue','Queue','name','getCmHopper','unlockContact','GetContactRecallMe','Agent','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','handlePreviewRecallNotifications','moment','getContacts','Request','GetCmHopper','CmContact','Contact','updateContacts','UpdateCmHopper','format','rescheduleContact','ContactId','ListId'];(function(_0x5597a0,_0x35c11e){var _0x2fc8d6=function(_0x492dcb){while(--_0x492dcb){_0x5597a0['push'](_0x5597a0['shift']());}};_0x2fc8d6(++_0x35c11e);}(_0xf569,0xd0));var _0x9f56=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xf569[_0xfae23b];return _0x200640;};'use strict';var client=require('../client');var moment=require(_0x9f56('0x0'));exports[_0x9f56('0x1')]=function(_0x156de2,_0x9c192){return function(){return client[_0x9f56('0x2')](_0x9f56('0x3'),{'options':{'where':{'VoiceQueueId':_0x156de2},'include':[{'model':_0x9f56('0x4'),'as':_0x9f56('0x5')}],'limit':_0x9c192,'raw':![]},'log':'getCmHopper'});};};exports[_0x9f56('0x6')]=function(_0x5ebdbd,_0x467a46,_0x3488f2){return function(){return client['Request'](_0x9f56('0x7'),{'body':_0x5ebdbd,'options':{'where':{'VoiceQueueId':_0x467a46,'scheduledat':{'$lte':moment()[_0x9f56('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x3488f2},'log':_0x9f56('0x7')});};};exports[_0x9f56('0x9')]=function(_0x40a384){return client['Request']('UpdateCmHopper',{'body':_0x40a384,'options':{'where':{'ContactId':_0x40a384[_0x9f56('0xa')],'ListId':_0x40a384[_0x9f56('0xb')],'VoiceQueueId':_0x40a384['VoiceQueueId'],'CampaignId':_0x40a384[_0x9f56('0xc')]}},'log':_0x9f56('0x9')});};exports[_0x9f56('0xd')]=function(_0x4baac9,_0x5b0e94,_0x19a5e1){return function(){return client['Request'](_0x9f56('0xe'),{'options':{'where':{'VoiceQueueId':_0x4baac9,'ListId':_0x5b0e94,'ContactId':_0x19a5e1}},'log':'DestroyCmHopper'});};};exports['getContactDialer']=function(_0x293687,_0x4230ea,_0x5af8ab,_0x227587){return client[_0x9f56('0x2')](_0x9f56('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x293687,'active':![],'scheduledat':{'$lte':moment()[_0x9f56('0x8')](_0x9f56('0x10'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x4230ea}}]},'order':[[_0x9f56('0x11'),_0x9f56('0x12')],[_0x9f56('0x13'),_0x227587],['id',_0x9f56('0x14')]],'raw':!![],'limit':_0x5af8ab},'log':_0x9f56('0xf')});};exports[_0x9f56('0x15')]=function(_0x13ebfa,_0x25a100,_0x9c39ec){return client[_0x9f56('0x2')](_0x9f56('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x13ebfa,'active':![],'scheduledat':{'$lte':moment()[_0x9f56('0x8')](_0x9f56('0x10'))}},'include':[{'model':'CmContact','as':'Contact'}],'order':[[_0x9f56('0x11'),_0x9f56('0x12')],[_0x9f56('0x13'),_0x9c39ec],['id',_0x9f56('0x14')]],'raw':!![],'limit':_0x25a100},'log':_0x9f56('0x16')});};exports['moveContactManagedDialer']=function(_0x433418,_0x25d1ea){_0x433418[_0x9f56('0x17')]=_0x433418[_0x9f56('0x18')];return client[_0x9f56('0x2')](_0x9f56('0x19'),{'body':_0x433418,'options':{'where':{'ContactId':_0x433418[_0x9f56('0xa')],'ListId':_0x433418['ListId'],'VoiceQueueId':_0x433418[_0x9f56('0x1a')],'CampaignId':_0x433418['CampaignId'],'active':_0x25d1ea?undefined:!![]}},'log':_0x9f56('0x19')});};exports[_0x9f56('0x1b')]=function(_0x43aae6){return client[_0x9f56('0x2')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x43aae6['id']?_0x43aae6['id']||null:null}},'log':_0x9f56('0x1b')});};exports[_0x9f56('0x1c')]=function(_0x573e31){return function(){return client[_0x9f56('0x2')](_0x9f56('0x1d'),{'options':{'where':{'id':_0x573e31},'include':[{'model':'CmContact','as':_0x9f56('0x5')},{'model':_0x9f56('0x1e'),'as':'Agent','attributes':['id','name']},{'model':_0x9f56('0x1f'),'as':_0x9f56('0x20'),'attributes':['id',_0x9f56('0x21')]}],'raw':!![]},'log':_0x9f56('0x22')});};};exports[_0x9f56('0x23')]=function(_0x2aaf54,_0x48da87,_0x76b04f){return client[_0x9f56('0x2')](_0x9f56('0x7'),{'body':_0x2aaf54,'options':{'where':{'id':_0x48da87},'limit':_0x76b04f},'log':_0x9f56('0x7')});};exports['getContactRecallMe']=function(_0x1157ca,_0x25bc7e){return function(){return client[_0x9f56('0x2')](_0x9f56('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1157ca,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x9f56('0x8')](_0x9f56('0x10'))},'UserId':{'$in':_0x25bc7e}},'order':[[_0x9f56('0x11'),_0x9f56('0x12')],[_0x9f56('0x13'),_0x9f56('0x12')],['id',_0x9f56('0x14')]],'include':[{'model':_0x9f56('0x4'),'as':'Contact'},{'model':'User','as':_0x9f56('0x25'),'attributes':['id','name',_0x9f56('0x26')]}],'group':_0x9f56('0x27'),'raw':!![]},'log':_0x9f56('0xf')});};};exports[_0x9f56('0x28')]=function(_0xe8d198,_0x4513a2){return client[_0x9f56('0x2')]('ResetActiveCalls',{'body':_0xe8d198,'options':_0x4513a2||{},'log':_0x9f56('0x29')});};exports['handlePreviewRecallNotifications']=function(_0xcdf778,_0x3e9d62,_0x2063ae){return function(){return client[_0x9f56('0x2')](_0x9f56('0x2a'),{'body':{'where':{'voiceQueueIds':_0xcdf778,'interval':_0x3e9d62,'availableAgentsIds':_0x2063ae}},'log':_0x9f56('0x2b')});};};
\ No newline at end of file
index 6037d2c..132320a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb7=['verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters'];(function(_0x2f5f92,_0x41c3ab){var _0xa5bfef=function(_0x447aab){while(--_0x447aab){_0x2f5f92['push'](_0x2f5f92['shift']());}};_0xa5bfef(++_0x41c3ab);}(_0x4fb7,0x1b2));var _0x74fb=function(_0x2975f1,_0x665cdd){_0x2975f1=_0x2975f1-0x0;var _0x263aba=_0x4fb7[_0x2975f1];return _0x263aba;};'use strict';var client=require('../client');exports[_0x74fb('0x0')]=function(_0x135f6b,_0x277b1a,_0x466092){return client[_0x74fb('0x1')]('VerifyAdditionalPhones',{'body':_0x135f6b,'reason':_0x277b1a,'entity':_0x466092,'log':_0x74fb('0x2')});};exports[_0x74fb('0x3')]=function(_0x4783c4,_0x39c736,_0x48d015){return client[_0x74fb('0x1')](_0x74fb('0x4'),{'body':_0x4783c4,'duration':_0x39c736,'waitTime':_0x48d015,'log':_0x74fb('0x4')});};exports[_0x74fb('0x5')]=function(_0x5c3b55){return function(){return client['Request'](_0x74fb('0x6'),{'body':_0x5c3b55,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
+var _0x2a5f=['incrementPreviewCounters','IncrementPreviewCounters','verifyAdditionalPhones','Request','SwapAdditionalPhones'];(function(_0x1a7bb5,_0x1337fc){var _0x22d3ce=function(_0x9caf9e){while(--_0x9caf9e){_0x1a7bb5['push'](_0x1a7bb5['shift']());}};_0x22d3ce(++_0x1337fc);}(_0x2a5f,0x9d));var _0xf2a5=function(_0x235482,_0x14b833){_0x235482=_0x235482-0x0;var _0x5f5bea=_0x2a5f[_0x235482];return _0x5f5bea;};'use strict';var client=require('../client');exports[_0xf2a5('0x0')]=function(_0x4ecbdf,_0x44d4cb,_0xaa4b8f){return client['Request']('VerifyAdditionalPhones',{'body':_0x4ecbdf,'reason':_0x44d4cb,'entity':_0xaa4b8f,'log':'VerifyAdditionalPhones'});};exports['swapAdditionalPhones']=function(_0x1fb036,_0x469054,_0x28b94b){return client[_0xf2a5('0x1')](_0xf2a5('0x2'),{'body':_0x1fb036,'duration':_0x469054,'waitTime':_0x28b94b,'log':_0xf2a5('0x2')});};exports[_0xf2a5('0x3')]=function(_0x1c40e1){return function(){return client[_0xf2a5('0x1')](_0xf2a5('0x4'),{'body':_0x1c40e1,'log':_0xf2a5('0x4')});};};
\ No newline at end of file
index 6565ccb..369bd86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa946=['checkIsBlackList','GetCmHopperBlack','VoiceQueueId','phone','Request','../client'];(function(_0x4d8089,_0x146e68){var _0xaafb70=function(_0x440695){while(--_0x440695){_0x4d8089['push'](_0x4d8089['shift']());}};_0xaafb70(++_0x146e68);}(_0xa946,0x95));var _0x6a94=function(_0x2c7f80,_0x2b0052){_0x2c7f80=_0x2c7f80-0x0;var _0x11fe38=_0xa946[_0x2c7f80];return _0x11fe38;};'use strict';var client=require(_0x6a94('0x0'));exports[_0x6a94('0x1')]=function(_0xd5fbfb){return client['Request'](_0x6a94('0x2'),{'options':{'where':{'VoiceQueueId':_0xd5fbfb[_0x6a94('0x3')],'phone':_0xd5fbfb[_0x6a94('0x4')]},'raw':![]},'log':_0x6a94('0x2')});};exports['checkIsBlackListIvr']=function(_0x508ce6){return client[_0x6a94('0x5')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x508ce6['CampaignId'],'phone':_0x508ce6[_0x6a94('0x4')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};
\ No newline at end of file
+var _0x5566=['checkIsBlackList','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr','Request','CampaignId','GetCmHopperBlackIvr'];(function(_0x34f545,_0x2bd2ee){var _0x1ff6b8=function(_0x582e3b){while(--_0x582e3b){_0x34f545['push'](_0x34f545['shift']());}};_0x1ff6b8(++_0x2bd2ee);}(_0x5566,0x1f0));var _0x6556=function(_0x409cff,_0x4b6971){_0x409cff=_0x409cff-0x0;var _0xdbc3c9=_0x5566[_0x409cff];return _0xdbc3c9;};'use strict';var client=require('../client');exports[_0x6556('0x0')]=function(_0x269a87){return client['Request'](_0x6556('0x1'),{'options':{'where':{'VoiceQueueId':_0x269a87[_0x6556('0x2')],'phone':_0x269a87[_0x6556('0x3')]},'raw':![]},'log':_0x6556('0x1')});};exports[_0x6556('0x4')]=function(_0xa150d7){return client[_0x6556('0x5')](_0x6556('0x1'),{'options':{'where':{'CampaignId':_0xa150d7[_0x6556('0x6')],'phone':_0xa150d7[_0x6556('0x3')]},'raw':![]},'log':_0x6556('0x7')});};
\ No newline at end of file
index 71a4237..522fcb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c32=['Request','../client'];(function(_0x5c18a6,_0x2932f7){var _0x4c1d6c=function(_0x712b3f){while(--_0x712b3f){_0x5c18a6['push'](_0x5c18a6['shift']());}};_0x4c1d6c(++_0x2932f7);}(_0x3c32,0xdb));var _0x23c3=function(_0x3f2919,_0x4a0a18){_0x3f2919=_0x3f2919-0x0;var _0x1d6fee=_0x3c32[_0x3f2919];return _0x1d6fee;};'use strict';var client=require(_0x23c3('0x0'));exports['createContact']=function(_0x1c1e5d){return function(){_0x1c1e5d['campaign']=_0x1c1e5d['queue'];return client[_0x23c3('0x1')]('CreateCmHopperFinal',{'body':_0x1c1e5d,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x7182=['createContact','campaign','queue','Request','CreateCmHopperFinal','../client'];(function(_0x3d8461,_0x2f762e){var _0x573ed9=function(_0x2fe8c1){while(--_0x2fe8c1){_0x3d8461['push'](_0x3d8461['shift']());}};_0x573ed9(++_0x2f762e);}(_0x7182,0xd7));var _0x2718=function(_0x3cefc5,_0x5a4bb7){_0x3cefc5=_0x3cefc5-0x0;var _0x51e5c4=_0x7182[_0x3cefc5];return _0x51e5c4;};'use strict';var client=require(_0x2718('0x0'));exports[_0x2718('0x1')]=function(_0x3a9fce){return function(){_0x3a9fce[_0x2718('0x2')]=_0x3a9fce[_0x2718('0x3')];return client[_0x2718('0x4')]('CreateCmHopperFinal',{'body':_0x3a9fce,'log':_0x2718('0x5')});};};
\ No newline at end of file
index b022ffc..27b9a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa2e=['CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','getCampaignHopperHistory','day','ivr','GetCampaignHopperHistory','../client','moment','createHistory','campaign','Request'];(function(_0x809b78,_0x5acbbf){var _0x63c016=function(_0x5559a7){while(--_0x5559a7){_0x809b78['push'](_0x809b78['shift']());}};_0x63c016(++_0x5acbbf);}(_0xfa2e,0x127));var _0xefa2=function(_0x356ab2,_0x2f1d77){_0x356ab2=_0x356ab2-0x0;var _0x10c5d4=_0xfa2e[_0x356ab2];return _0x10c5d4;};'use strict';var client=require(_0xefa2('0x0'));var moment=require(_0xefa2('0x1'));exports[_0xefa2('0x2')]=function(_0x1b2f5e){_0x1b2f5e[_0xefa2('0x3')]=_0x1b2f5e['queue'];return client[_0xefa2('0x4')](_0xefa2('0x5'),{'body':_0x1b2f5e,'log':_0xefa2('0x5')});};exports[_0xefa2('0x6')]=function(_0x2126dc){return client[_0xefa2('0x4')](_0xefa2('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x2126dc,_0xefa2('0x8'))[_0xefa2('0x9')](_0xefa2('0xa')),moment()[_0xefa2('0x9')](_0xefa2('0xa'))]}},'raw':![]},'log':_0xefa2('0xb')});};exports[_0xefa2('0xc')]=function(){return function(){return client['Request'](_0xefa2('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xefa2('0xe')]('day')['format'](_0xefa2('0xa')),moment()[_0xefa2('0xf')]('day')['format'](_0xefa2('0xa'))]},'campaigntype':'queue'},'raw':![]},'log':_0xefa2('0xd')});};};exports[_0xefa2('0x10')]=function(){return function(){return client[_0xefa2('0x4')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xefa2('0x11'))[_0xefa2('0x9')](_0xefa2('0xa')),moment()[_0xefa2('0xf')](_0xefa2('0x11'))[_0xefa2('0x9')](_0xefa2('0xa'))]},'campaigntype':_0xefa2('0x12')},'raw':![]},'log':_0xefa2('0x13')});};};
\ No newline at end of file
+var _0xaacc=['YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','Request','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','createHistory','queue','avgHandleTime','AvgHandleTime','minutes','format'];(function(_0x562ac9,_0x38ca3c){var _0x329e5b=function(_0x1fff3f){while(--_0x1fff3f){_0x562ac9['push'](_0x562ac9['shift']());}};_0x329e5b(++_0x38ca3c);}(_0xaacc,0x14f));var _0xcaac=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0xaacc[_0x5c9307];return _0x373e29;};'use strict';var client=require(_0xcaac('0x0'));var moment=require('moment');exports[_0xcaac('0x1')]=function(_0x5780ea){_0x5780ea['campaign']=_0x5780ea[_0xcaac('0x2')];return client['Request']('CreateCmHopperHistory',{'body':_0x5780ea,'log':'CreateCmHopperHistory'});};exports[_0xcaac('0x3')]=function(_0x4f4d2e){return client['Request'](_0xcaac('0x4'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x4f4d2e,_0xcaac('0x5'))[_0xcaac('0x6')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xcaac('0x6')](_0xcaac('0x7'))]}},'raw':![]},'log':_0xcaac('0x8')});};exports[_0xcaac('0x9')]=function(){return function(){return client[_0xcaac('0xa')](_0xcaac('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xcaac('0xc')](_0xcaac('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xcaac('0xe')](_0xcaac('0xd'))[_0xcaac('0x6')](_0xcaac('0x7'))]},'campaigntype':_0xcaac('0x2')},'raw':![]},'log':_0xcaac('0xb')});};};exports[_0xcaac('0xf')]=function(){return function(){return client[_0xcaac('0xa')](_0xcaac('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xcaac('0xd'))[_0xcaac('0x6')](_0xcaac('0x7')),moment()[_0xcaac('0xe')](_0xcaac('0xd'))[_0xcaac('0x6')](_0xcaac('0x7'))]},'campaigntype':_0xcaac('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index 6df2508..2794a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc274=['localstationid','minrate','modem','faxdetect','t38timeout','tech','key','Trunk','callerid','active','getFaxAccount','Request','NotifyFaxAccount','getFaxAccounts','name','description','ecm','headerinfo'];(function(_0x572fa4,_0x2ddac9){var _0x21f131=function(_0x17c14a){while(--_0x17c14a){_0x572fa4['push'](_0x572fa4['shift']());}};_0x21f131(++_0x2ddac9);}(_0xc274,0x151));var _0x4c27=function(_0x2af575,_0x2dca6b){_0x2af575=_0x2af575-0x0;var _0x32c6d5=_0xc274[_0x2af575];return _0x32c6d5;};'use strict';var client=require('../client');exports[_0x4c27('0x0')]=function(){return function(){return client['Request']('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x4c27('0x1'),_0x4c27('0x2'),_0x4c27('0x3'),_0x4c27('0x4'),_0x4c27('0x5'),_0x4c27('0x6'),'maxrate',_0x4c27('0x7'),'gateway',_0x4c27('0x8'),_0x4c27('0x9'),_0x4c27('0xa'),'TrunkId','ListId',_0x4c27('0xb')],'include':[{'model':'Trunk','as':_0x4c27('0xc'),'attributes':['id',_0x4c27('0x1'),_0x4c27('0xd'),_0x4c27('0xe')]}]},'log':_0x4c27('0xf')});};};exports['notify']=function(_0x29b5ff,_0xd59379){return client[_0x4c27('0x10')](_0x4c27('0x11'),{'account':{'id':_0x29b5ff},'body':_0xd59379,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0x50a5=['TrunkId','ListId','key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','ecm','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech'];(function(_0x50b04c,_0x21f8fd){var _0x4c39a5=function(_0x5a5da8){while(--_0x5a5da8){_0x50b04c['push'](_0x50b04c['shift']());}};_0x4c39a5(++_0x21f8fd);}(_0x50a5,0xd1));var _0x550a=function(_0x105ebf,_0x4cd1c3){_0x105ebf=_0x105ebf-0x0;var _0x5851e7=_0x50a5[_0x105ebf];return _0x5851e7;};'use strict';var client=require(_0x550a('0x0'));exports[_0x550a('0x1')]=function(){return function(){return client['Request']('GetFaxAccount',{'options':{'raw':![],'attributes':['id','name','description',_0x550a('0x2'),'headerinfo',_0x550a('0x3'),_0x550a('0x4'),_0x550a('0x5'),_0x550a('0x6'),_0x550a('0x7'),_0x550a('0x8'),_0x550a('0x9'),_0x550a('0xa'),_0x550a('0xb'),_0x550a('0xc'),_0x550a('0xd')],'include':[{'model':_0x550a('0xe'),'as':_0x550a('0xe'),'attributes':['id','name',_0x550a('0xf'),_0x550a('0x10')]}]},'log':_0x550a('0x11')});};};exports[_0x550a('0x12')]=function(_0x3f13f5,_0x2ab760){return client['Request'](_0x550a('0x13'),{'account':{'id':_0x3f13f5},'body':_0x2ab760,'log':_0x550a('0x13')});};
\ No newline at end of file
index 35d3c97..f029d4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3763=['Request','UpdateFaxMessage','../client'];(function(_0x3671a9,_0x2c30d2){var _0x4f917a=function(_0x4a671a){while(--_0x4a671a){_0x3671a9['push'](_0x3671a9['shift']());}};_0x4f917a(++_0x2c30d2);}(_0x3763,0x68));var _0x3376=function(_0x2b4f2d,_0x170d09){_0x2b4f2d=_0x2b4f2d-0x0;var _0xc077e=_0x3763[_0x2b4f2d];return _0xc077e;};'use strict';var client=require(_0x3376('0x0'));exports['update']=function(_0x115d69,_0x2a0d40){return client[_0x3376('0x1')](_0x3376('0x2'),{'body':_0x2a0d40,'options':{'where':{'AttachmentId':_0x115d69}},'log':_0x3376('0x2')});};
\ No newline at end of file
+var _0xe08d=['UpdateFaxMessage','../client','Request'];(function(_0xeb6f6c,_0x3773fe){var _0x2496e1=function(_0x5b3fd1){while(--_0x5b3fd1){_0xeb6f6c['push'](_0xeb6f6c['shift']());}};_0x2496e1(++_0x3773fe);}(_0xe08d,0x97));var _0xde08=function(_0x56cf8a,_0x5a9568){_0x56cf8a=_0x56cf8a-0x0;var _0x501384=_0xe08d[_0x56cf8a];return _0x501384;};'use strict';var client=require(_0xde08('0x0'));exports['update']=function(_0x49c72c,_0x503363){return client[_0xde08('0x1')](_0xde08('0x2'),{'body':_0x503363,'options':{'where':{'AttachmentId':_0x49c72c}},'log':_0xde08('0x2')});};
\ No newline at end of file
index ef3b41a..83eb082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3ae=['authType','type','serverUrl','DeskConfiguration','Configurations','Subjects','variableName','Variable','Descriptions','content','key','keyContent','DeskField','Fields','nameField','customField','Tag','../../client','Request','GetDeskAccount','name','description','username'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf3ae,0x84));var _0xef3a=function(_0x1bc5bc,_0x3b0cd8){_0x1bc5bc=_0x1bc5bc-0x0;var _0x3ae9dc=_0xf3ae[_0x1bc5bc];return _0x3ae9dc;};'use strict';var client=require(_0xef3a('0x0'));exports['getDeskAccounts']=function(){return function(_0x5f2e63){return client[_0xef3a('0x1')](_0xef3a('0x2'),{'options':{'raw':![],'attributes':['id',_0xef3a('0x3'),_0xef3a('0x4'),_0xef3a('0x5'),'password','remoteUri',_0xef3a('0x6'),_0xef3a('0x7'),_0xef3a('0x8')],'include':[{'model':_0xef3a('0x9'),'as':_0xef3a('0xa'),'attributes':['id','name'],'include':[{'model':'DeskField','as':_0xef3a('0xb'),'attributes':['id',_0xef3a('0x7'),'content',_0xef3a('0xc')],'include':[{'model':_0xef3a('0xd'),'as':_0xef3a('0xd'),'attributes':['id','name']}]},{'model':'DeskField','as':_0xef3a('0xe'),'attributes':['id',_0xef3a('0x7'),_0xef3a('0xf'),_0xef3a('0x10'),'keyType',_0xef3a('0x11'),_0xef3a('0xc')],'include':[{'model':_0xef3a('0xd'),'as':'Variable','attributes':['id',_0xef3a('0x3')]}]},{'model':_0xef3a('0x12'),'as':_0xef3a('0x13'),'attributes':['id',_0xef3a('0x7'),_0xef3a('0xf'),'idField',_0xef3a('0x14'),_0xef3a('0x15'),_0xef3a('0xc')],'include':[{'model':_0xef3a('0xd'),'as':_0xef3a('0xd'),'attributes':['id',_0xef3a('0x3')]}]},{'model':_0xef3a('0x16'),'as':'Tags','attributes':['id',_0xef3a('0x3')]}]}]},'log':_0xef3a('0x2')});};};
\ No newline at end of file
+var _0xa69c=['idField','nameField','customField','Tag','Tags','getDeskAccounts','Request','GetDeskAccount','name','username','password','remoteUri','authType','type','serverUrl','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields'];(function(_0x4adb5d,_0x4e250b){var _0x1f6f70=function(_0x579e78){while(--_0x579e78){_0x4adb5d['push'](_0x4adb5d['shift']());}};_0x1f6f70(++_0x4e250b);}(_0xa69c,0xbb));var _0xca69=function(_0x12ddb2,_0x5ad61e){_0x12ddb2=_0x12ddb2-0x0;var _0x10b6dd=_0xa69c[_0x12ddb2];return _0x10b6dd;};'use strict';var client=require('../../client');exports[_0xca69('0x0')]=function(){return function(_0x4118f3){return client[_0xca69('0x1')](_0xca69('0x2'),{'options':{'raw':![],'attributes':['id',_0xca69('0x3'),'description',_0xca69('0x4'),_0xca69('0x5'),_0xca69('0x6'),_0xca69('0x7'),_0xca69('0x8'),_0xca69('0x9')],'include':[{'model':'DeskConfiguration','as':_0xca69('0xa'),'attributes':['id',_0xca69('0x3')],'include':[{'model':_0xca69('0xb'),'as':_0xca69('0xc'),'attributes':['id',_0xca69('0x8'),_0xca69('0xd'),_0xca69('0xe')],'include':[{'model':_0xca69('0xf'),'as':_0xca69('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0xca69('0x10'),'attributes':['id',_0xca69('0x8'),_0xca69('0xd'),_0xca69('0x11'),_0xca69('0x12'),_0xca69('0x13'),_0xca69('0xe')],'include':[{'model':_0xca69('0xf'),'as':'Variable','attributes':['id',_0xca69('0x3')]}]},{'model':_0xca69('0xb'),'as':_0xca69('0x14'),'attributes':['id',_0xca69('0x8'),'content',_0xca69('0x15'),_0xca69('0x16'),_0xca69('0x17'),_0xca69('0xe')],'include':[{'model':_0xca69('0xf'),'as':_0xca69('0xf'),'attributes':['id','name']}]},{'model':_0xca69('0x18'),'as':_0xca69('0x19'),'attributes':['id',_0xca69('0x3')]}]}]},'log':_0xca69('0x2')});};};
\ No newline at end of file
index dd196b8..bb0b49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb1=['customField','CloudProvider','data2','data7','getDynamics365Accounts','Request','GetDynamics365Account','name','username','remoteUri','tenantId','clientId','clientSecret','description','modernAuthentication','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields'];(function(_0x54b6af,_0x4dad92){var _0x3c81d8=function(_0x3185ae){while(--_0x3185ae){_0x54b6af['push'](_0x54b6af['shift']());}};_0x3c81d8(++_0x4dad92);}(_0x5eb1,0x7c));var _0x15eb=function(_0x1a3bd2,_0x344d4a){_0x1a3bd2=_0x1a3bd2-0x0;var _0x4222e6=_0x5eb1[_0x1a3bd2];return _0x4222e6;};'use strict';var client=require('../../client');exports[_0x15eb('0x0')]=function(){return function(_0x18927a){return client[_0x15eb('0x1')](_0x15eb('0x2'),{'options':{'raw':![],'attributes':['id',_0x15eb('0x3'),_0x15eb('0x4'),'password',_0x15eb('0x5'),_0x15eb('0x6'),_0x15eb('0x7'),_0x15eb('0x8'),'serverUrl',_0x15eb('0x9'),_0x15eb('0xa')],'include':[{'model':'Dynamics365Configuration','as':_0x15eb('0xb'),'attributes':['id',_0x15eb('0x3'),_0x15eb('0xc'),_0x15eb('0xd'),_0x15eb('0xe'),_0x15eb('0xf')],'include':[{'model':_0x15eb('0x10'),'as':_0x15eb('0x11'),'attributes':['id',_0x15eb('0x12'),_0x15eb('0x13'),_0x15eb('0x14')],'include':[{'model':_0x15eb('0x15'),'as':_0x15eb('0x15'),'attributes':['id','name']}]},{'model':_0x15eb('0x10'),'as':'Descriptions','attributes':['id','type','content',_0x15eb('0x16'),_0x15eb('0x17'),_0x15eb('0x18'),_0x15eb('0x14')],'include':[{'model':'Variable','as':_0x15eb('0x15'),'attributes':['id',_0x15eb('0x3')]}]},{'model':_0x15eb('0x10'),'as':_0x15eb('0x19'),'attributes':['id','type','content','idField','nameField',_0x15eb('0x1a'),'variableName'],'include':[{'model':'Variable','as':_0x15eb('0x15'),'attributes':['id','name']}]}]},{'model':_0x15eb('0x1b'),'as':'CloudProvider','attributes':['id',_0x15eb('0x1c'),'data5',_0x15eb('0x1d')]}]},'log':_0x15eb('0x2')});};};
\ No newline at end of file
+var _0x8a5c=['CloudProvider','data2','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','remoteUri','clientId','clientSecret','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','Subjects','type','content','variableName','Descriptions','key','keyType','Variable','Fields','idField','customField'];(function(_0x21929f,_0xb96182){var _0x1a6077=function(_0x209786){while(--_0x209786){_0x21929f['push'](_0x21929f['shift']());}};_0x1a6077(++_0xb96182);}(_0x8a5c,0x136));var _0xc8a5=function(_0x6a561e,_0x18207c){_0x6a561e=_0x6a561e-0x0;var _0x4b3ce9=_0x8a5c[_0x6a561e];return _0x4b3ce9;};'use strict';var client=require(_0xc8a5('0x0'));exports[_0xc8a5('0x1')]=function(){return function(_0x2a8a8d){return client[_0xc8a5('0x2')](_0xc8a5('0x3'),{'options':{'raw':![],'attributes':['id',_0xc8a5('0x4'),_0xc8a5('0x5'),_0xc8a5('0x6'),_0xc8a5('0x7'),'tenantId',_0xc8a5('0x8'),_0xc8a5('0x9'),'serverUrl',_0xc8a5('0xa'),_0xc8a5('0xb')],'include':[{'model':_0xc8a5('0xc'),'as':_0xc8a5('0xd'),'attributes':['id','name',_0xc8a5('0xe'),_0xc8a5('0xf'),_0xc8a5('0x10'),_0xc8a5('0x11')],'include':[{'model':_0xc8a5('0x12'),'as':_0xc8a5('0x13'),'attributes':['id',_0xc8a5('0x14'),_0xc8a5('0x15'),_0xc8a5('0x16')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xc8a5('0x4')]}]},{'model':'Dynamics365Field','as':_0xc8a5('0x17'),'attributes':['id',_0xc8a5('0x14'),_0xc8a5('0x15'),_0xc8a5('0x18'),_0xc8a5('0x19'),'keyContent',_0xc8a5('0x16')],'include':[{'model':_0xc8a5('0x1a'),'as':'Variable','attributes':['id',_0xc8a5('0x4')]}]},{'model':_0xc8a5('0x12'),'as':_0xc8a5('0x1b'),'attributes':['id',_0xc8a5('0x14'),_0xc8a5('0x15'),_0xc8a5('0x1c'),'nameField',_0xc8a5('0x1d'),_0xc8a5('0x16')],'include':[{'model':'Variable','as':_0xc8a5('0x1a'),'attributes':['id',_0xc8a5('0x4')]}]}]},{'model':'CloudProvider','as':_0xc8a5('0x1e'),'attributes':['id',_0xc8a5('0x1f'),_0xc8a5('0x20'),_0xc8a5('0x21')]}]},'log':_0xc8a5('0x3')});};};
\ No newline at end of file
index 7b9d0b3..692a604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e5e=['getFreshdeskAccounts','Request','GetFreshdeskAccount','name','apiKey','serverUrl','FreshdeskConfiguration','Tag','Subjects','type','content','variableName','Variable','FreshdeskField','Descriptions','key','Fields','idField','nameField','customField','../../client'];(function(_0x286c17,_0x51742e){var _0x52f89c=function(_0xff55ba){while(--_0xff55ba){_0x286c17['push'](_0x286c17['shift']());}};_0x52f89c(++_0x51742e);}(_0x9e5e,0x1e2));var _0xe9e5=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x9e5e[_0x4a53d];return _0x27410e;};'use strict';var client=require(_0xe9e5('0x0'));exports[_0xe9e5('0x1')]=function(){return function(_0x5a229a){return client[_0xe9e5('0x2')](_0xe9e5('0x3'),{'options':{'raw':![],'attributes':['id',_0xe9e5('0x4'),'username',_0xe9e5('0x5'),'remoteUri',_0xe9e5('0x6')],'include':[{'model':_0xe9e5('0x7'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xe9e5('0x8'),'attributes':['id',_0xe9e5('0x4')]},{'model':'FreshdeskField','as':_0xe9e5('0x9'),'attributes':['id',_0xe9e5('0xa'),_0xe9e5('0xb'),_0xe9e5('0xc')],'include':[{'model':_0xe9e5('0xd'),'as':_0xe9e5('0xd'),'attributes':['id',_0xe9e5('0x4')]}]},{'model':_0xe9e5('0xe'),'as':_0xe9e5('0xf'),'attributes':['id','type',_0xe9e5('0xb'),_0xe9e5('0x10'),'keyType','keyContent','variableName'],'include':[{'model':'Variable','as':_0xe9e5('0xd'),'attributes':['id',_0xe9e5('0x4')]}]},{'model':_0xe9e5('0xe'),'as':_0xe9e5('0x11'),'attributes':['id',_0xe9e5('0xa'),_0xe9e5('0xb'),_0xe9e5('0x12'),_0xe9e5('0x13'),_0xe9e5('0x14'),_0xe9e5('0xc')],'include':[{'model':'Variable','as':_0xe9e5('0xd'),'attributes':['id',_0xe9e5('0x4')]}]}]}]},'log':_0xe9e5('0x3')});};};
\ No newline at end of file
+var _0xae8e=['username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name'];(function(_0x4d2938,_0x332d65){var _0x5e7d9b=function(_0x135e24){while(--_0x135e24){_0x4d2938['push'](_0x4d2938['shift']());}};_0x5e7d9b(++_0x332d65);}(_0xae8e,0xc3));var _0xeae8=function(_0x29f407,_0x50066f){_0x29f407=_0x29f407-0x0;var _0x5cb2d2=_0xae8e[_0x29f407];return _0x5cb2d2;};'use strict';var client=require(_0xeae8('0x0'));exports[_0xeae8('0x1')]=function(){return function(_0x238458){return client[_0xeae8('0x2')](_0xeae8('0x3'),{'options':{'raw':![],'attributes':['id',_0xeae8('0x4'),_0xeae8('0x5'),_0xeae8('0x6'),_0xeae8('0x7'),_0xeae8('0x8')],'include':[{'model':_0xeae8('0x9'),'as':_0xeae8('0xa'),'attributes':['id',_0xeae8('0x4')],'include':[{'model':_0xeae8('0xb'),'attributes':['id',_0xeae8('0x4')]},{'model':_0xeae8('0xc'),'as':_0xeae8('0xd'),'attributes':['id',_0xeae8('0xe'),_0xeae8('0xf'),_0xeae8('0x10')],'include':[{'model':_0xeae8('0x11'),'as':_0xeae8('0x11'),'attributes':['id',_0xeae8('0x4')]}]},{'model':_0xeae8('0xc'),'as':_0xeae8('0x12'),'attributes':['id',_0xeae8('0xe'),_0xeae8('0xf'),_0xeae8('0x13'),_0xeae8('0x14'),_0xeae8('0x15'),_0xeae8('0x10')],'include':[{'model':'Variable','as':_0xeae8('0x11'),'attributes':['id',_0xeae8('0x4')]}]},{'model':_0xeae8('0xc'),'as':_0xeae8('0x16'),'attributes':['id',_0xeae8('0xe'),_0xeae8('0xf'),'idField',_0xeae8('0x17'),_0xeae8('0x18'),_0xeae8('0x10')],'include':[{'model':_0xeae8('0x11'),'as':_0xeae8('0x11'),'attributes':['id',_0xeae8('0x4')]}]}]}]},'log':_0xeae8('0x3')});};};
\ No newline at end of file
index f44af12..5effbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf06c=['Subjects','content','FreshsalesField','Descriptions','type','keyType','variableName','Variable','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','username','apiKey','remoteUri','FreshsalesConfiguration','Configurations','name'];(function(_0x577e0a,_0x309b77){var _0x2fbcce=function(_0x524297){while(--_0x524297){_0x577e0a['push'](_0x577e0a['shift']());}};_0x2fbcce(++_0x309b77);}(_0xf06c,0xc7));var _0xcf06=function(_0x528139,_0x49f0c9){_0x528139=_0x528139-0x0;var _0x10a8c2=_0xf06c[_0x528139];return _0x10a8c2;};'use strict';var client=require(_0xcf06('0x0'));exports[_0xcf06('0x1')]=function(){return function(_0x3a0fc6){return client[_0xcf06('0x2')](_0xcf06('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xcf06('0x4'),_0xcf06('0x5'),_0xcf06('0x6'),'serverUrl'],'include':[{'model':_0xcf06('0x7'),'as':_0xcf06('0x8'),'attributes':['id',_0xcf06('0x9')],'include':[{'model':'FreshsalesField','as':_0xcf06('0xa'),'attributes':['id','type',_0xcf06('0xb'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0xcf06('0xc'),'as':_0xcf06('0xd'),'attributes':['id',_0xcf06('0xe'),'content','key',_0xcf06('0xf'),'keyContent',_0xcf06('0x10')],'include':[{'model':'Variable','as':_0xcf06('0x11'),'attributes':['id','name']}]}]}]},'log':_0xcf06('0x12')});};};
\ No newline at end of file
+var _0x8ca9=['key','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','username','serverUrl','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','Descriptions'];(function(_0x38ff50,_0x2cb0dd){var _0x4af340=function(_0x4588ee){while(--_0x4588ee){_0x38ff50['push'](_0x38ff50['shift']());}};_0x4af340(++_0x2cb0dd);}(_0x8ca9,0x9c));var _0x98ca=function(_0xfb14ba,_0x171568){_0xfb14ba=_0xfb14ba-0x0;var _0x5d5e7b=_0x8ca9[_0xfb14ba];return _0x5d5e7b;};'use strict';var client=require(_0x98ca('0x0'));exports[_0x98ca('0x1')]=function(){return function(_0x3acd03){return client[_0x98ca('0x2')](_0x98ca('0x3'),{'options':{'raw':![],'attributes':['id',_0x98ca('0x4'),_0x98ca('0x5'),'apiKey','remoteUri',_0x98ca('0x6')],'include':[{'model':'FreshsalesConfiguration','as':_0x98ca('0x7'),'attributes':['id','name'],'include':[{'model':_0x98ca('0x8'),'as':_0x98ca('0x9'),'attributes':['id',_0x98ca('0xa'),_0x98ca('0xb'),_0x98ca('0xc')],'include':[{'model':_0x98ca('0xd'),'as':_0x98ca('0xd'),'attributes':['id',_0x98ca('0x4')]}]},{'model':_0x98ca('0x8'),'as':_0x98ca('0xe'),'attributes':['id',_0x98ca('0xa'),_0x98ca('0xb'),_0x98ca('0xf'),_0x98ca('0x10'),_0x98ca('0x11'),_0x98ca('0xc')],'include':[{'model':_0x98ca('0xd'),'as':_0x98ca('0xd'),'attributes':['id','name']}]}]}]},'log':_0x98ca('0x12')});};};
\ No newline at end of file
index c1e9bdc..b351c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5227=['ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','password','remoteUri','clientId','clientSecret','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x5227,0x1d1));var _0x7522=function(_0x12012d,_0x46e1f6){_0x12012d=_0x12012d-0x0;var _0x2ccaf1=_0x5227[_0x12012d];return _0x2ccaf1;};'use strict';var client=require(_0x7522('0x0'));exports[_0x7522('0x1')]=function(){return function(_0x40041b){return client[_0x7522('0x2')](_0x7522('0x3'),{'options':{'raw':![],'attributes':['id',_0x7522('0x4'),'username',_0x7522('0x5'),_0x7522('0x6'),_0x7522('0x7'),_0x7522('0x8'),'securityToken',_0x7522('0x9'),_0x7522('0xa')],'include':[{'model':_0x7522('0xb'),'as':_0x7522('0xc'),'attributes':['id',_0x7522('0x4'),_0x7522('0xd'),_0x7522('0xe'),_0x7522('0xf'),_0x7522('0x10'),_0x7522('0x11'),_0x7522('0x12'),_0x7522('0x13')],'include':[{'model':_0x7522('0x14'),'as':'Subjects','include':[{'model':_0x7522('0x15'),'as':_0x7522('0x15'),'attributes':['id',_0x7522('0x4')]}]},{'model':_0x7522('0x14'),'as':_0x7522('0x16'),'include':[{'model':_0x7522('0x15'),'as':'Variable','attributes':['id',_0x7522('0x4')]}]},{'model':_0x7522('0x14'),'as':_0x7522('0x17'),'include':[{'model':_0x7522('0x15'),'as':_0x7522('0x15'),'attributes':['id',_0x7522('0x4')]}]}]}]},'log':_0x7522('0x3')});};};
\ No newline at end of file
+var _0xa321=['SalesforceField','Subjects','Variable','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','name','username','remoteUri','clientId','type','Configurations','moduleSearch','moduleCreate','ticketType','additionalSearchAccount','additionalSearchContact'];(function(_0x287665,_0x1881f2){var _0x27b844=function(_0x2a02c2){while(--_0x2a02c2){_0x287665['push'](_0x287665['shift']());}};_0x27b844(++_0x1881f2);}(_0xa321,0x9d));var _0x1a32=function(_0x426711,_0x12264c){_0x426711=_0x426711-0x0;var _0x592991=_0xa321[_0x426711];return _0x592991;};'use strict';var client=require(_0x1a32('0x0'));exports[_0x1a32('0x1')]=function(){return function(_0x220317){return client[_0x1a32('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0x1a32('0x3'),_0x1a32('0x4'),'password',_0x1a32('0x5'),_0x1a32('0x6'),'clientSecret','securityToken','serverUrl',_0x1a32('0x7')],'include':[{'model':'SalesforceConfiguration','as':_0x1a32('0x8'),'attributes':['id',_0x1a32('0x3'),_0x1a32('0x9'),_0x1a32('0xa'),_0x1a32('0xb'),'leadId',_0x1a32('0xc'),_0x1a32('0xd'),'additionalSearchLead'],'include':[{'model':_0x1a32('0xe'),'as':_0x1a32('0xf'),'include':[{'model':_0x1a32('0x10'),'as':_0x1a32('0x10'),'attributes':['id',_0x1a32('0x3')]}]},{'model':_0x1a32('0xe'),'as':'Descriptions','include':[{'model':_0x1a32('0x10'),'as':_0x1a32('0x10'),'attributes':['id',_0x1a32('0x3')]}]},{'model':'SalesforceField','as':_0x1a32('0x11'),'include':[{'model':_0x1a32('0x10'),'as':_0x1a32('0x10'),'attributes':['id',_0x1a32('0x3')]}]}]}]},'log':_0x1a32('0x12')});};};
\ No newline at end of file
index a4b815f..1da2e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['ServicenowConfiguration','Configurations','name','ServicenowField','Subjects','type','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','description','password','email','remoteUri','serverUrl'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda19,0xd5));var _0x9da1=function(_0x14e472,_0xb1f964){_0x14e472=_0x14e472-0x0;var _0x16b711=_0xda19[_0x14e472];return _0x16b711;};'use strict';var client=require('../../client');exports[_0x9da1('0x0')]=function(){return function(_0x430d39){return client['Request'](_0x9da1('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9da1('0x2'),'username',_0x9da1('0x3'),_0x9da1('0x4'),_0x9da1('0x5'),_0x9da1('0x6')],'include':[{'model':_0x9da1('0x7'),'as':_0x9da1('0x8'),'attributes':['id',_0x9da1('0x9')],'include':[{'model':_0x9da1('0xa'),'as':_0x9da1('0xb'),'attributes':['id',_0x9da1('0xc'),'content','variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0xe'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),_0x9da1('0x10'),_0x9da1('0x11'),_0x9da1('0x12'),'variableName'],'include':[{'model':'Variable','as':_0x9da1('0xd'),'attributes':['id','name']}]},{'model':_0x9da1('0xa'),'as':_0x9da1('0x13'),'attributes':['id',_0x9da1('0xc'),_0x9da1('0xf'),'idField',_0x9da1('0x14'),'customField','variableName'],'include':[{'model':_0x9da1('0xd'),'as':'Variable','attributes':['id',_0x9da1('0x9')]}]}]}]},'log':_0x9da1('0x15')});};};
\ No newline at end of file
+var _0xf494=['idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','type','content','variableName','Variable','ServicenowField','Descriptions','key','keyContent','Fields'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xf494,0x1c6));var _0x4f49=function(_0x3e8e83,_0x3d3efb){_0x3e8e83=_0x3e8e83-0x0;var _0x24aff6=_0xf494[_0x3e8e83];return _0x24aff6;};'use strict';var client=require(_0x4f49('0x0'));exports[_0x4f49('0x1')]=function(){return function(_0x3063f3){return client['Request'](_0x4f49('0x2'),{'options':{'raw':![],'attributes':['id',_0x4f49('0x3'),_0x4f49('0x4'),_0x4f49('0x5'),_0x4f49('0x6'),_0x4f49('0x7'),_0x4f49('0x8'),_0x4f49('0x9')],'include':[{'model':_0x4f49('0xa'),'as':_0x4f49('0xb'),'attributes':['id',_0x4f49('0x3')],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0xe')],'include':[{'model':_0x4f49('0xf'),'as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':_0x4f49('0x10'),'as':_0x4f49('0x11'),'attributes':['id','type',_0x4f49('0xd'),_0x4f49('0x12'),'keyType',_0x4f49('0x13'),'variableName'],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':'ServicenowField','as':_0x4f49('0x14'),'attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0x15'),_0x4f49('0x16'),_0x4f49('0x17'),_0x4f49('0xe')],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]}]}]},'log':_0x4f49('0x18')});};};
\ No newline at end of file
index d2b65c6..b060153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['serverUrl','SugarcrmConfiguration','SugarcrmField','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','remoteUri'];(function(_0x65d7c5,_0x13e1e9){var _0x2ac24e=function(_0x1540f4){while(--_0x1540f4){_0x65d7c5['push'](_0x65d7c5['shift']());}};_0x2ac24e(++_0x13e1e9);}(_0x1967,0x173));var _0x7196=function(_0x229a80,_0x1eca13){_0x229a80=_0x229a80-0x0;var _0x280ae2=_0x1967[_0x229a80];return _0x280ae2;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7')],'include':[{'model':_0x7196('0x8'),'as':'Configurations','attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0xd')],'include':[{'model':'Variable','as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0xb'),'content','key',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0x9'),'as':_0x7196('0x12'),'attributes':['id',_0x7196('0xb'),_0x7196('0xc'),_0x7196('0x13'),'nameField',_0x7196('0x14'),_0x7196('0xd')],'include':[{'model':_0x7196('0xe'),'as':_0x7196('0xe'),'attributes':['id','name']}]}]}]},'log':_0x7196('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(_0x3005d5,_0xf588c7){var _0x547c7e=function(_0x4514dc){while(--_0x4514dc){_0x3005d5['push'](_0x3005d5['shift']());}};_0x547c7e(++_0xf588c7);}(_0x14a0,0x8e));var _0x014a=function(_0x25cc1b,_0x463bba){_0x25cc1b=_0x25cc1b-0x0;var _0x26cf11=_0x14a0[_0x25cc1b];return _0x26cf11;};'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 7c7b725..027843f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a82=['type','key','keyType','keyContent','Fields','customField','GetVtigerAccount','../../client','getVtigerAccounts','Request','description','accessKey','serverUrl','VtigerConfiguration','Configurations','name','VtigerField','content','variableName','Variable','Descriptions'];(function(_0x1bf32f,_0x2e994e){var _0x147063=function(_0x423069){while(--_0x423069){_0x1bf32f['push'](_0x1bf32f['shift']());}};_0x147063(++_0x2e994e);}(_0x8a82,0x1ab));var _0x28a8=function(_0x3dfbd1,_0x39039c){_0x3dfbd1=_0x3dfbd1-0x0;var _0x2a4f6d=_0x8a82[_0x3dfbd1];return _0x2a4f6d;};'use strict';var client=require(_0x28a8('0x0'));exports[_0x28a8('0x1')]=function(){return function(_0x2d5a92){return client[_0x28a8('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id','name',_0x28a8('0x3'),'username',_0x28a8('0x4'),'remoteUri',_0x28a8('0x5')],'include':[{'model':_0x28a8('0x6'),'as':_0x28a8('0x7'),'attributes':['id',_0x28a8('0x8')],'include':[{'model':_0x28a8('0x9'),'as':'Subjects','attributes':['id','type',_0x28a8('0xa'),_0x28a8('0xb')],'include':[{'model':_0x28a8('0xc'),'as':_0x28a8('0xc'),'attributes':['id',_0x28a8('0x8')]}]},{'model':_0x28a8('0x9'),'as':_0x28a8('0xd'),'attributes':['id',_0x28a8('0xe'),'content',_0x28a8('0xf'),_0x28a8('0x10'),_0x28a8('0x11'),_0x28a8('0xb')],'include':[{'model':_0x28a8('0xc'),'as':_0x28a8('0xc'),'attributes':['id','name']}]},{'model':_0x28a8('0x9'),'as':_0x28a8('0x12'),'attributes':['id',_0x28a8('0xe'),'content','idField','nameField',_0x28a8('0x13'),_0x28a8('0xb')],'include':[{'model':_0x28a8('0xc'),'as':_0x28a8('0xc'),'attributes':['id',_0x28a8('0x8')]}]}]}]},'log':_0x28a8('0x14')});};};
\ No newline at end of file
+var _0x589f=['Fields','idField','customField','../../client','Request','name','description','username','accessKey','remoteUri','VtigerConfiguration','Configurations','Subjects','type','content','variableName','Variable','VtigerField','Descriptions','key','keyContent'];(function(_0x10dbba,_0x45e541){var _0x3110d1=function(_0x27ea4e){while(--_0x27ea4e){_0x10dbba['push'](_0x10dbba['shift']());}};_0x3110d1(++_0x45e541);}(_0x589f,0x1e6));var _0xf589=function(_0x3b2421,_0xf30f91){_0x3b2421=_0x3b2421-0x0;var _0x288bde=_0x589f[_0x3b2421];return _0x288bde;};'use strict';var client=require(_0xf589('0x0'));exports['getVtigerAccounts']=function(){return function(_0x2bdc32){return client[_0xf589('0x1')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0xf589('0x2'),_0xf589('0x3'),_0xf589('0x4'),_0xf589('0x5'),_0xf589('0x6'),'serverUrl'],'include':[{'model':_0xf589('0x7'),'as':_0xf589('0x8'),'attributes':['id',_0xf589('0x2')],'include':[{'model':'VtigerField','as':_0xf589('0x9'),'attributes':['id',_0xf589('0xa'),_0xf589('0xb'),_0xf589('0xc')],'include':[{'model':_0xf589('0xd'),'as':'Variable','attributes':['id',_0xf589('0x2')]}]},{'model':_0xf589('0xe'),'as':_0xf589('0xf'),'attributes':['id',_0xf589('0xa'),_0xf589('0xb'),_0xf589('0x10'),'keyType',_0xf589('0x11'),_0xf589('0xc')],'include':[{'model':_0xf589('0xd'),'as':_0xf589('0xd'),'attributes':['id',_0xf589('0x2')]}]},{'model':'VtigerField','as':_0xf589('0x12'),'attributes':['id',_0xf589('0xa'),_0xf589('0xb'),_0xf589('0x13'),'nameField',_0xf589('0x14'),'variableName'],'include':[{'model':_0xf589('0xd'),'as':'Variable','attributes':['id',_0xf589('0x2')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index 9f3d1f2..8c9e4c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a01=['remoteUri','authType','Tag','ZendeskField','Subjects','type','content','Variable','Descriptions','variableName','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','token'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a01,0xa1));var _0x17a0=function(_0x41339d,_0x51791b){_0x41339d=_0x41339d-0x0;var _0x4925b7=_0x7a01[_0x41339d];return _0x4925b7;};'use strict';var client=require(_0x17a0('0x0'));exports[_0x17a0('0x1')]=function(){return function(_0x441972){return client[_0x17a0('0x2')](_0x17a0('0x3'),{'options':{'raw':![],'attributes':['id',_0x17a0('0x4'),_0x17a0('0x5'),'password',_0x17a0('0x6'),_0x17a0('0x7'),_0x17a0('0x8'),'serverUrl','type'],'include':[{'model':'ZendeskConfiguration','as':'Configurations','attributes':['id',_0x17a0('0x4')],'include':[{'model':_0x17a0('0x9'),'attributes':['id',_0x17a0('0x4')]},{'model':_0x17a0('0xa'),'as':_0x17a0('0xb'),'attributes':['id',_0x17a0('0xc'),_0x17a0('0xd'),'variableName'],'include':[{'model':_0x17a0('0xe'),'as':'Variable','attributes':['id',_0x17a0('0x4')]}]},{'model':_0x17a0('0xa'),'as':_0x17a0('0xf'),'attributes':['id','type','content','key','keyType','keyContent',_0x17a0('0x10')],'include':[{'model':'Variable','as':_0x17a0('0xe'),'attributes':['id',_0x17a0('0x4')]}]},{'model':_0x17a0('0xa'),'as':_0x17a0('0x11'),'attributes':['id',_0x17a0('0xc'),_0x17a0('0xd'),_0x17a0('0x12'),_0x17a0('0x13'),_0x17a0('0x14'),'variableName'],'include':[{'model':_0x17a0('0xe'),'as':'Variable','attributes':['id',_0x17a0('0x4')]}]}]}]},'log':_0x17a0('0x3')});};};
\ No newline at end of file
+var _0x52f0=['remoteUri','authType','serverUrl','type','ZendeskConfiguration','Tag','Subjects','content','variableName','ZendeskField','Descriptions','key','keyContent','Variable','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password'];(function(_0x380a3f,_0x202483){var _0x2b4eca=function(_0x1e99b2){while(--_0x1e99b2){_0x380a3f['push'](_0x380a3f['shift']());}};_0x2b4eca(++_0x202483);}(_0x52f0,0x76));var _0x052f=function(_0x1667df,_0x266940){_0x1667df=_0x1667df-0x0;var _0x341abf=_0x52f0[_0x1667df];return _0x341abf;};'use strict';var client=require(_0x052f('0x0'));exports[_0x052f('0x1')]=function(){return function(_0x3a3955){return client[_0x052f('0x2')](_0x052f('0x3'),{'options':{'raw':![],'attributes':['id',_0x052f('0x4'),_0x052f('0x5'),_0x052f('0x6'),'token',_0x052f('0x7'),_0x052f('0x8'),_0x052f('0x9'),_0x052f('0xa')],'include':[{'model':_0x052f('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x052f('0xc'),'attributes':['id',_0x052f('0x4')]},{'model':'ZendeskField','as':_0x052f('0xd'),'attributes':['id',_0x052f('0xa'),_0x052f('0xe'),_0x052f('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x052f('0x10'),'as':_0x052f('0x11'),'attributes':['id',_0x052f('0xa'),_0x052f('0xe'),_0x052f('0x12'),'keyType',_0x052f('0x13'),_0x052f('0xf')],'include':[{'model':_0x052f('0x14'),'as':'Variable','attributes':['id',_0x052f('0x4')]}]},{'model':_0x052f('0x10'),'as':_0x052f('0x15'),'attributes':['id',_0x052f('0xa'),_0x052f('0xe'),_0x052f('0x16'),_0x052f('0x17'),_0x052f('0x18'),'variableName'],'include':[{'model':'Variable','as':_0x052f('0x14'),'attributes':['id',_0x052f('0x4')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 8e4b3ed..1f851a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x501b=['host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','moduleCreate','moduleSearch','description','Subjects','content','variableName','Variable','ZohoField','Descriptions','key','keyType','keyContent','type','idField','customField','../../client','Request','GetZohoAccount','name'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x501b,0x9e));var _0xb501=function(_0x5521b7,_0x5b6a11){_0x5521b7=_0x5521b7-0x0;var _0x3cfdf7=_0x501b[_0x5521b7];return _0x3cfdf7;};'use strict';var client=require(_0xb501('0x0'));exports['getZohoAccounts']=function(){return function(_0xe4240){return client[_0xb501('0x1')](_0xb501('0x2'),{'options':{'raw':![],'attributes':['id',_0xb501('0x3'),'description',_0xb501('0x4'),_0xb501('0x5'),_0xb501('0x6'),_0xb501('0x7'),_0xb501('0x8'),_0xb501('0x9'),_0xb501('0xa')],'include':[{'model':'ZohoConfiguration','as':_0xb501('0xb'),'attributes':['id','name',_0xb501('0xc'),_0xb501('0xd'),_0xb501('0xe')],'include':[{'model':'ZohoField','as':_0xb501('0xf'),'attributes':['id','type',_0xb501('0x10'),_0xb501('0x11')],'include':[{'model':_0xb501('0x12'),'as':'Variable','attributes':['id',_0xb501('0x3')]}]},{'model':_0xb501('0x13'),'as':_0xb501('0x14'),'attributes':['id','type','content',_0xb501('0x15'),_0xb501('0x16'),_0xb501('0x17'),_0xb501('0x11')],'include':[{'model':_0xb501('0x12'),'as':_0xb501('0x12'),'attributes':['id','name']}]},{'model':_0xb501('0x13'),'as':'Fields','attributes':['id',_0xb501('0x18'),_0xb501('0x10'),_0xb501('0x19'),'nameField',_0xb501('0x1a'),_0xb501('0x11')],'include':[{'model':_0xb501('0x12'),'as':_0xb501('0x12'),'attributes':['id',_0xb501('0x3')]}]}]}]},'log':_0xb501('0x2')});};};
\ No newline at end of file
+var _0x5def=['zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','description','ZohoField','type','content','variableName','Variable','key','keyContent','Fields','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host'];(function(_0x467bea,_0x2e1692){var _0x4aa832=function(_0x164600){while(--_0x164600){_0x467bea['push'](_0x467bea['shift']());}};_0x4aa832(++_0x2e1692);}(_0x5def,0x174));var _0xf5de=function(_0xbe48a,_0x4d3ec5){_0xbe48a=_0xbe48a-0x0;var _0x3eeda0=_0x5def[_0xbe48a];return _0x3eeda0;};'use strict';var client=require(_0xf5de('0x0'));exports[_0xf5de('0x1')]=function(){return function(_0x43f28b){return client[_0xf5de('0x2')](_0xf5de('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5de('0x4'),'description',_0xf5de('0x5'),_0xf5de('0x6'),_0xf5de('0x7'),_0xf5de('0x8'),_0xf5de('0x9'),_0xf5de('0xa'),_0xf5de('0xb')],'include':[{'model':_0xf5de('0xc'),'as':_0xf5de('0xd'),'attributes':['id',_0xf5de('0x4'),_0xf5de('0xe'),_0xf5de('0xf'),_0xf5de('0x10')],'include':[{'model':_0xf5de('0x11'),'as':'Subjects','attributes':['id',_0xf5de('0x12'),_0xf5de('0x13'),_0xf5de('0x14')],'include':[{'model':'Variable','as':_0xf5de('0x15'),'attributes':['id',_0xf5de('0x4')]}]},{'model':_0xf5de('0x11'),'as':'Descriptions','attributes':['id',_0xf5de('0x12'),'content',_0xf5de('0x16'),'keyType',_0xf5de('0x17'),'variableName'],'include':[{'model':'Variable','as':_0xf5de('0x15'),'attributes':['id','name']}]},{'model':_0xf5de('0x11'),'as':_0xf5de('0x18'),'attributes':['id',_0xf5de('0x12'),_0xf5de('0x13'),'idField',_0xf5de('0x19'),_0xf5de('0x1a'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xf5de('0x4')]}]}]}]},'log':_0xf5de('0x3')});};};
\ No newline at end of file
index 0318ce2..b70e789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3475=['stack','replace','trim','silly','length','every','string','map','concat','Request','intervalIftime','../../../config/logger','dialer'];(function(_0x1869a0,_0x2f3b49){var _0x5b7515=function(_0x383a5d){while(--_0x383a5d){_0x1869a0['push'](_0x1869a0['shift']());}};_0x5b7515(++_0x2f3b49);}(_0x3475,0xe8));var _0x5347=function(_0x57b589,_0x2b56de){_0x57b589=_0x57b589-0x0;var _0x1c6773=_0x3475[_0x57b589];return _0x1c6773;};var logger=require(_0x5347('0x0'))(_0x5347('0x1'));var client=require('../client');function intervalIftime(_0x10390b,_0x4173cc){const _0x25795e=new Error()[_0x5347('0x2')][_0x5347('0x3')](/^Error/,'')[_0x5347('0x4')]();logger[_0x5347('0x5')]('intervalIftime\x20called\x20with',_0x10390b,_0x4173cc,_0x25795e);const _0x53da33=Array['isArray'](_0x10390b);if(!_0x10390b||_0x53da33&&_0x10390b[_0x5347('0x6')]===0x0){return Promise['resolve'](![]);}else{var _0x28809d=[];var _0x2dbbc2=[];var _0x300f77=_0x53da33?_0x10390b:[_0x10390b];var _0x513157=_0x300f77['every'](function(_0x1638f7){return typeof _0x1638f7==='number';});var _0x526c4d=_0x300f77[_0x5347('0x7')](function(_0xe7ec93){return typeof _0xe7ec93===_0x5347('0x8');});if(!_0x513157&&!_0x526c4d){_0x28809d=_0x300f77['map'](function(_0x272f0f){return _0x272f0f['id'];});if(_0x28809d[_0x5347('0x6')]===0x0){_0x2dbbc2=_0x300f77[_0x5347('0x9')](function(_0x3248f0){return _0x3248f0['interval'];});}}else{if(_0x513157){_0x28809d=_0x28809d[_0x5347('0xa')](_0x300f77);}if(_0x526c4d){_0x2dbbc2=_0x2dbbc2[_0x5347('0xa')](_0x300f77);}}return client[_0x5347('0xb')]('IntervalIftime',{'intervalIds':_0x28809d,'intervals':_0x2dbbc2,'timezone':_0x4173cc,'log':'IntervalIftime'});}}exports[_0x5347('0xc')]=intervalIftime;
\ No newline at end of file
+var _0x144e=['length','resolve','number','every','string','map','interval','Request','IntervalIftime','intervalIftime','../../../config/logger','dialer','../client','stack','replace','isArray'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x144e,0x19a));var _0xe144=function(_0x399477,_0x5726ac){_0x399477=_0x399477-0x0;var _0xaa794d=_0x144e[_0x399477];return _0xaa794d;};var logger=require(_0xe144('0x0'))(_0xe144('0x1'));var client=require(_0xe144('0x2'));function intervalIftime(_0x10b6e1,_0x1f47dd){const _0x7b7d04=new Error()[_0xe144('0x3')][_0xe144('0x4')](/^Error/,'')['trim']();logger['silly']('intervalIftime\x20called\x20with',_0x10b6e1,_0x1f47dd,_0x7b7d04);const _0x1beab2=Array[_0xe144('0x5')](_0x10b6e1);if(!_0x10b6e1||_0x1beab2&&_0x10b6e1[_0xe144('0x6')]===0x0){return Promise[_0xe144('0x7')](![]);}else{var _0x3df43f=[];var _0x244ce4=[];var _0x1a7d28=_0x1beab2?_0x10b6e1:[_0x10b6e1];var _0x3c4b9c=_0x1a7d28['every'](function(_0x19659d){return typeof _0x19659d===_0xe144('0x8');});var _0x225442=_0x1a7d28[_0xe144('0x9')](function(_0x5ae407){return typeof _0x5ae407===_0xe144('0xa');});if(!_0x3c4b9c&&!_0x225442){_0x3df43f=_0x1a7d28[_0xe144('0xb')](function(_0x38bb32){return _0x38bb32['id'];});if(_0x3df43f[_0xe144('0x6')]===0x0){_0x244ce4=_0x1a7d28[_0xe144('0xb')](function(_0x5ed4de){return _0x5ed4de[_0xe144('0xc')];});}}else{if(_0x3c4b9c){_0x3df43f=_0x3df43f['concat'](_0x1a7d28);}if(_0x225442){_0x244ce4=_0x244ce4['concat'](_0x1a7d28);}}return client[_0xe144('0xd')]('IntervalIftime',{'intervalIds':_0x3df43f,'intervals':_0x244ce4,'timezone':_0x1f47dd,'log':_0xe144('0xe')});}}exports[_0xe144('0xf')]=intervalIftime;
\ No newline at end of file
index 0ef949f..53ed69f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fb9=['endtime','seconds','outbound','lodash','util','queuecallercompleteAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','TALKING','queuecallerleaveAt','diff','inbound','exten','agent','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime'];(function(_0x44c3ff,_0x519927){var _0x164abc=function(_0x2aed45){while(--_0x2aed45){_0x44c3ff['push'](_0x44c3ff['shift']());}};_0x164abc(++_0x519927);}(_0x6fb9,0x1c5));var _0x96fb=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x6fb9[_0x36eaaa];return _0x461349;};'use strict';var moment=require('moment');var _=require(_0x96fb('0x0'));var util=require(_0x96fb('0x1'));var client=require('../client');exports['voiceQueueReport']=function(_0x4c95db){var _0xdb38ac=_0x4c95db[_0x96fb('0x2')]||_0x4c95db['queuecallerexitAt'];return client[_0x96fb('0x3')](_0x96fb('0x4'),{'body':{'channel':_0x96fb('0x5'),'membername':_0x4c95db[_0x96fb('0x6')],'interface':_[_0x96fb('0x7')](_0x4c95db[_0x96fb('0x8')])?util[_0x96fb('0x9')]('SIP/%s',_0x4c95db[_0x96fb('0x6')]):_0x4c95db['interface'],'type':_0x96fb('0xa'),'enterAt':_0x4c95db[_0x96fb('0xb')],'exitAt':_0xdb38ac,'duration':moment(_0xdb38ac)[_0x96fb('0xc')](_0x4c95db['queuecallerleaveAt'],'seconds'),'data1':_0x96fb('0xd'),'data2':_0x4c95db['calleridnum'],'data3':_0x4c95db[_0x96fb('0xe')],'data4':null,'data5':_0x4c95db['queue'],'role':_0x96fb('0xf'),'internal':_0x4c95db[_0x96fb('0x10')]?_[_0x96fb('0x11')](_0x4c95db[_0x96fb('0x10')]):undefined,'uniqueid':_0x4c95db[_0x96fb('0x12')]},'log':'CreateMemberReport'});};exports[_0x96fb('0x13')]=function(_0x190893){return client[_0x96fb('0x3')]('CreateMemberReport',{'body':{'channel':_0x96fb('0x5'),'membername':_0x190893[_0x96fb('0x14')],'interface':_0x190893[_0x96fb('0x8')],'type':_0x96fb('0xa'),'enterAt':_0x190893[_0x96fb('0x15')],'exitAt':_0x190893[_0x96fb('0x16')],'duration':moment(_0x190893[_0x96fb('0x16')])['diff'](_0x190893['starttime'],_0x96fb('0x17'))>=0x0?moment(_0x190893['endtime'])[_0x96fb('0xc')](_0x190893[_0x96fb('0x15')],_0x96fb('0x17')):null,'data1':_0x96fb('0x18'),'data2':_0x190893[_0x96fb('0x10')],'data3':_0x190893[_0x96fb('0xe')],'data4':_0x190893['dialstring']||null,'role':_0x96fb('0xf'),'internal':_0x190893[_0x96fb('0x10')]?_[_0x96fb('0x11')](_0x190893[_0x96fb('0x10')]):undefined,'uniqueid':_0x190893[_0x96fb('0x12')]},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x9e38=['dialstring','toNumber','moment','lodash','util','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','calleridnum','exten','agent','accountcode','uniqueid','voiceDialReport','membername','starttime','endtime','outbound'];(function(_0x275edc,_0x40c7b2){var _0x40a0df=function(_0x2a0fe8){while(--_0x2a0fe8){_0x275edc['push'](_0x275edc['shift']());}};_0x40a0df(++_0x40c7b2);}(_0x9e38,0x93));var _0x89e3=function(_0x4d40dd,_0x39592b){_0x4d40dd=_0x4d40dd-0x0;var _0x1c51f2=_0x9e38[_0x4d40dd];return _0x1c51f2;};'use strict';var moment=require(_0x89e3('0x0'));var _=require(_0x89e3('0x1'));var util=require(_0x89e3('0x2'));var client=require('../client');exports[_0x89e3('0x3')]=function(_0x358394){var _0x19a4e2=_0x358394['queuecallercompleteAt']||_0x358394[_0x89e3('0x4')];return client[_0x89e3('0x5')](_0x89e3('0x6'),{'body':{'channel':_0x89e3('0x7'),'membername':_0x358394[_0x89e3('0x8')],'interface':_[_0x89e3('0x9')](_0x358394[_0x89e3('0xa')])?util[_0x89e3('0xb')](_0x89e3('0xc'),_0x358394[_0x89e3('0x8')]):_0x358394[_0x89e3('0xa')],'type':_0x89e3('0xd'),'enterAt':_0x358394[_0x89e3('0xe')],'exitAt':_0x19a4e2,'duration':moment(_0x19a4e2)[_0x89e3('0xf')](_0x358394[_0x89e3('0xe')],_0x89e3('0x10')),'data1':'inbound','data2':_0x358394[_0x89e3('0x11')],'data3':_0x358394[_0x89e3('0x12')],'data4':null,'data5':_0x358394['queue'],'role':_0x89e3('0x13'),'internal':_0x358394['accountcode']?_['toNumber'](_0x358394[_0x89e3('0x14')]):undefined,'uniqueid':_0x358394[_0x89e3('0x15')]},'log':'CreateMemberReport'});};exports[_0x89e3('0x16')]=function(_0x506091){return client[_0x89e3('0x5')](_0x89e3('0x6'),{'body':{'channel':_0x89e3('0x7'),'membername':_0x506091[_0x89e3('0x17')],'interface':_0x506091[_0x89e3('0xa')],'type':'TALKING','enterAt':_0x506091[_0x89e3('0x18')],'exitAt':_0x506091[_0x89e3('0x19')],'duration':moment(_0x506091['endtime'])['diff'](_0x506091[_0x89e3('0x18')],_0x89e3('0x10'))>=0x0?moment(_0x506091[_0x89e3('0x19')])['diff'](_0x506091[_0x89e3('0x18')],_0x89e3('0x10')):null,'data1':_0x89e3('0x1a'),'data2':_0x506091[_0x89e3('0x14')],'data3':_0x506091['exten'],'data4':_0x506091[_0x89e3('0x1b')]||null,'role':_0x89e3('0x13'),'internal':_0x506091[_0x89e3('0x14')]?_[_0x89e3('0x1c')](_0x506091['accountcode']):undefined,'uniqueid':_0x506091[_0x89e3('0x15')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 492981c..956f4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04fa=['previewRecallmeReminderInterval','getSettings','Request','ShowSetting','stopRecordingOnTransfer'];(function(_0x5641b8,_0x29685e){var _0x5835e4=function(_0x1721e8){while(--_0x1721e8){_0x5641b8['push'](_0x5641b8['shift']());}};_0x5835e4(++_0x29685e);}(_0x04fa,0x119));var _0xa04f=function(_0x1878f9,_0x4a5896){_0x1878f9=_0x1878f9-0x0;var _0x324553=_0x04fa[_0x1878f9];return _0x324553;};'use strict';var client=require('../client');exports[_0xa04f('0x0')]=function(){return client[_0xa04f('0x1')](_0xa04f('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xa04f('0x3'),_0xa04f('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0xbfa6=['../client','getSettings','previewRecallmeReminderInterval','GetSettings'];(function(_0x29d346,_0x2a7e6d){var _0x54bb35=function(_0x42ae1d){while(--_0x42ae1d){_0x29d346['push'](_0x29d346['shift']());}};_0x54bb35(++_0x2a7e6d);}(_0xbfa6,0x1d0));var _0x6bfa=function(_0x17dcd1,_0x3b7ccb){_0x17dcd1=_0x17dcd1-0x0;var _0x12af77=_0xbfa6[_0x17dcd1];return _0x12af77;};'use strict';var client=require(_0x6bfa('0x0'));exports[_0x6bfa('0x1')]=function(){return client['Request']('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0x6bfa('0x2')]},'log':_0x6bfa('0x3')});};
\ No newline at end of file
index e984e3e..f82172e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52c1=['GetTemplate','html','../client','getTemplates','Request'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x52c1,0x1ce));var _0x152c=function(_0xa6321,_0x524dd5){_0xa6321=_0xa6321-0x0;var _0x5c468=_0x52c1[_0xa6321];return _0x5c468;};'use strict';var client=require(_0x152c('0x0'));exports[_0x152c('0x1')]=function(_0x58c9ed){return function(_0x11ca60){return client[_0x152c('0x2')](_0x152c('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0x152c('0x4')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0x7f0d=['name','html','GetTemplate'];(function(_0x16f8da,_0x251b0d){var _0x35f922=function(_0x14693e){while(--_0x14693e){_0x16f8da['push'](_0x16f8da['shift']());}};_0x35f922(++_0x251b0d);}(_0x7f0d,0x89));var _0xd7f0=function(_0x1d897,_0x52c292){_0x1d897=_0x1d897-0x0;var _0xddf004=_0x7f0d[_0x1d897];return _0xddf004;};'use strict';var client=require('../client');exports['getTemplates']=function(_0x548c1f){return function(_0x4949c1){return client['Request'](_0xd7f0('0x0'),{'options':{'raw':!![],'attributes':['id',_0xd7f0('0x1'),_0xd7f0('0x2')]},'log':_0xd7f0('0x0')});};};
\ No newline at end of file
index 30989e9..b39da1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa277=['getTriggers','Request','name','channel','status','Condition','AllConditions','field','operator','value','Actions','action','data1','data3','data4','data6','data7','GetTrigger','../client'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xa277,0x18e));var _0x7a27=function(_0x32533a,_0x4d9762){_0x32533a=_0x32533a-0x0;var _0x3c0a39=_0xa277[_0x32533a];return _0x3c0a39;};'use strict';var client=require(_0x7a27('0x0'));exports[_0x7a27('0x1')]=function(_0x53687f){return function(_0x389931){return client[_0x7a27('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x7a27('0x3'),_0x7a27('0x4'),_0x7a27('0x5')],'include':[{'model':_0x7a27('0x6'),'as':_0x7a27('0x7'),'attributes':['id',_0x7a27('0x8'),_0x7a27('0x9'),'value']},{'model':_0x7a27('0x6'),'as':'AnyConditions','attributes':['id',_0x7a27('0x8'),_0x7a27('0x9'),_0x7a27('0xa')]},{'model':'Action','as':_0x7a27('0xb'),'attributes':['id',_0x7a27('0xc'),_0x7a27('0xd'),'data2',_0x7a27('0xe'),_0x7a27('0xf'),'data5',_0x7a27('0x10'),_0x7a27('0x11')]}]},'log':_0x7a27('0x12')});};};
\ No newline at end of file
+var _0xee8a=['data6','../client','GetTrigger','name','channel','status','Condition','AllConditions','field','operator','value','Action','Actions','action','data1','data4','data5'];(function(_0x49b2c8,_0x201939){var _0x51a964=function(_0x3d1e4f){while(--_0x3d1e4f){_0x49b2c8['push'](_0x49b2c8['shift']());}};_0x51a964(++_0x201939);}(_0xee8a,0x100));var _0xaee8=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0xee8a[_0x288f5e];return _0x476cc9;};'use strict';var client=require(_0xaee8('0x0'));exports['getTriggers']=function(_0x1cc9a3){return function(_0x55aeb6){return client['Request'](_0xaee8('0x1'),{'options':{'raw':![],'attributes':['id',_0xaee8('0x2'),_0xaee8('0x3'),_0xaee8('0x4')],'include':[{'model':_0xaee8('0x5'),'as':_0xaee8('0x6'),'attributes':['id',_0xaee8('0x7'),_0xaee8('0x8'),_0xaee8('0x9')]},{'model':_0xaee8('0x5'),'as':'AnyConditions','attributes':['id',_0xaee8('0x7'),_0xaee8('0x8'),'value']},{'model':_0xaee8('0xa'),'as':_0xaee8('0xb'),'attributes':['id',_0xaee8('0xc'),_0xaee8('0xd'),'data2','data3',_0xaee8('0xe'),_0xaee8('0xf'),_0xaee8('0x10'),'data7']}]},'log':_0xaee8('0x1')});};};
\ No newline at end of file
index a309b72..b72623c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514e=['registry','defaultuser','../client','getTrunks','GetTrunk','name'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x514e,0x146));var _0xe514=function(_0x12db6a,_0x327366){_0x12db6a=_0x12db6a-0x0;var _0x7dd50=_0x514e[_0x12db6a];return _0x7dd50;};'use strict';var client=require(_0xe514('0x0'));exports[_0xe514('0x1')]=function(_0x24939b){return function(_0x30fcbe){return client['Request'](_0xe514('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xe514('0x3'),_0xe514('0x4'),_0xe514('0x5')]},'log':_0xe514('0x2')});};};
\ No newline at end of file
+var _0xbbdc=['getTrunks','defaultuser','../client'];(function(_0x4f0a3a,_0x14f8d9){var _0x430cca=function(_0x48ae46){while(--_0x48ae46){_0x4f0a3a['push'](_0x4f0a3a['shift']());}};_0x430cca(++_0x14f8d9);}(_0xbbdc,0x1eb));var _0xcbbd=function(_0x25a0b9,_0x86e28f){_0x25a0b9=_0x25a0b9-0x0;var _0x30b9ab=_0xbbdc[_0x25a0b9];return _0x30b9ab;};'use strict';var client=require(_0xcbbd('0x0'));exports[_0xcbbd('0x1')]=function(_0x4f496d){return function(_0x4c4d13){return client['Request']('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0xcbbd('0x2')]},'log':'GetTrunk'});};};
\ No newline at end of file
index 07bcb90..b39dbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x545c72,_0x1c7b93){var _0x4b8d04=function(_0x406f14){while(--_0x406f14){_0x545c72['push'](_0x545c72['shift']());}};_0x4b8d04(++_0x1c7b93);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e182f,_0x380ec7){_0x3e182f=_0x3e182f-0x0;var _0x23edc9=_0xcb91[_0x3e182f];return _0x23edc9;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
+var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
index 149d2c5..4cefa45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f5f=['../client','Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1f5f,0x190));var _0xf1f5=function(_0x35dbce,_0x2c7a9a){_0x35dbce=_0x35dbce-0x0;var _0x53fcb0=_0x1f5f[_0x35dbce];return _0x53fcb0;};'use strict';var client=require(_0xf1f5('0x0'));exports['create']=function(_0x43717e){return client[_0xf1f5('0x1')](_0xf1f5('0x2'),{'body':_0x43717e,'log':_0xf1f5('0x2')});};exports[_0xf1f5('0x3')]=function(_0xf44f75,_0x2ab0e6,_0x13e1a5){return client['Request']('UpdateVoiceAgentReport',{'body':_0xf44f75,'options':{'where':{'uniqueid':_0x2ab0e6,'interface':_0x13e1a5,'agentcomplete':!![]}},'log':_0xf1f5('0x4')});};
\ No newline at end of file
+var _0x16f9=['../client','create','CreateVoiceAgentReport','Request','UpdateVoiceAgentReport'];(function(_0x51da35,_0x2a7cd2){var _0x14c227=function(_0x4f0b40){while(--_0x4f0b40){_0x51da35['push'](_0x51da35['shift']());}};_0x14c227(++_0x2a7cd2);}(_0x16f9,0x8c));var _0x916f=function(_0x38558e,_0x8aa4a6){_0x38558e=_0x38558e-0x0;var _0x332063=_0x16f9[_0x38558e];return _0x332063;};'use strict';var client=require(_0x916f('0x0'));exports[_0x916f('0x1')]=function(_0x572d91){return client['Request'](_0x916f('0x2'),{'body':_0x572d91,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x5da753,_0xc8c4c6,_0x1a21f0){return client[_0x916f('0x3')](_0x916f('0x4'),{'body':_0x5da753,'options':{'where':{'uniqueid':_0xc8c4c6,'interface':_0x1a21f0,'agentcomplete':!![]}},'log':_0x916f('0x4')});};
\ No newline at end of file
index bc9e051..2ed18cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff4=['endOf','format','type','disposition','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport','merge','context','callerid','DOCUMENTATION','GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xc298d9,_0x558c84){var _0x2a0b60=function(_0x2d5b92){while(--_0x2d5b92){_0xc298d9['push'](_0xc298d9['shift']());}};_0x2a0b60(++_0x558c84);}(_0xaff4,0xc3));var _0x4aff=function(_0x2906e6,_0x5ccd59){_0x2906e6=_0x2906e6-0x0;var _0x12517a=_0xaff4[_0x2906e6];return _0x12517a;};'use strict';var moment=require(_0x4aff('0x0'));var util=require(_0x4aff('0x1'));var _=require(_0x4aff('0x2'));var client=require(_0x4aff('0x3'));exports[_0x4aff('0x4')]=function(_0x304007){return client[_0x4aff('0x5')](_0x4aff('0x6'),{'body':_[_0x4aff('0x7')](_0x304007,{'source':_0x304007['calleridnum'],'destinationcontext':_0x304007[_0x4aff('0x8')],'callerid':_0x304007[_0x4aff('0x9')],'amaflags':_0x4aff('0xa')}),'log':_0x4aff('0x6')});};exports['getVoiceCallReports']=function(){return function(){return client['Request'](_0x4aff('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x4aff('0xc')](_0x4aff('0xd'))['format'](_0x4aff('0xe')),moment()[_0x4aff('0xf')](_0x4aff('0xd'))[_0x4aff('0x10')](_0x4aff('0xe'))]}},'attributes':[_0x4aff('0x11'),_0x4aff('0x12'),'duration',_0x4aff('0x13')]},'log':_0x4aff('0x14')});};};
\ No newline at end of file
+var _0x77a4=['endOf','day','disposition','duration','billableseconds','moment','lodash','../client','create','CreateVoiceCallReport','merge','calleridnum','DOCUMENTATION','getVoiceCallReports','Request','startOf','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x3794a0,_0x1a9cfc){var _0x5bdaba=function(_0x14a764){while(--_0x14a764){_0x3794a0['push'](_0x3794a0['shift']());}};_0x5bdaba(++_0x1a9cfc);}(_0x77a4,0x83));var _0x477a=function(_0x4bc4c8,_0x3139d3){_0x4bc4c8=_0x4bc4c8-0x0;var _0x3bb121=_0x77a4[_0x4bc4c8];return _0x3bb121;};'use strict';var moment=require(_0x477a('0x0'));var util=require('util');var _=require(_0x477a('0x1'));var client=require(_0x477a('0x2'));exports[_0x477a('0x3')]=function(_0x292091){return client['Request'](_0x477a('0x4'),{'body':_[_0x477a('0x5')](_0x292091,{'source':_0x292091[_0x477a('0x6')],'destinationcontext':_0x292091['context'],'callerid':_0x292091['callerid'],'amaflags':_0x477a('0x7')}),'log':'CreateVoiceCallReport'});};exports[_0x477a('0x8')]=function(){return function(){return client[_0x477a('0x9')]('GetVoiceCallReport',{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x477a('0xa')]('day')[_0x477a('0xb')](_0x477a('0xc')),moment()[_0x477a('0xd')](_0x477a('0xe'))[_0x477a('0xb')](_0x477a('0xc'))]}},'attributes':['type',_0x477a('0xf'),_0x477a('0x10'),_0x477a('0x11')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 097c075..1bdcc8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba5=['create','Request','CreateVoiceDialReport'];(function(_0x45dd07,_0x33c3a5){var _0x1379ac=function(_0x3b0f56){while(--_0x3b0f56){_0x45dd07['push'](_0x45dd07['shift']());}};_0x1379ac(++_0x33c3a5);}(_0x7ba5,0x16e));var _0x57ba=function(_0x448359,_0xf20e0c){_0x448359=_0x448359-0x0;var _0xe330a5=_0x7ba5[_0x448359];return _0xe330a5;};'use strict';var client=require('../client');exports[_0x57ba('0x0')]=function(_0x2d3a74){return client[_0x57ba('0x1')](_0x57ba('0x2'),{'body':_0x2d3a74,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0xa560=['create','CreateVoiceDialReport','../client'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xa560,0x152));var _0x0a56=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xa560[_0x21a9d9];return _0x46adce;};'use strict';var client=require(_0x0a56('0x0'));exports[_0x0a56('0x1')]=function(_0x57a237){return client['Request'](_0x0a56('0x2'),{'body':_0x57a237,'log':_0x0a56('0x2')});};
\ No newline at end of file
index dbcea12..d9886de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa1b=['getVoiceExtensions','Request','exten','../client'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0xaa1b,0x123));var _0xbaa1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xaa1b[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xbaa1('0x0'));exports[_0xbaa1('0x1')]=function(){return function(){return client[_0xbaa1('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xbaa1('0x3'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0xbaa1('0x1')});};};
\ No newline at end of file
+var _0x1491=['Request','GetVoiceExtension','recordingFormat','../client','getVoiceExtensions'];(function(_0xe6e78c,_0x582369){var _0x2a09c8=function(_0x470ccc){while(--_0x470ccc){_0xe6e78c['push'](_0xe6e78c['shift']());}};_0x2a09c8(++_0x582369);}(_0x1491,0x1b1));var _0x1149=function(_0x31483d,_0x1d0201){_0x31483d=_0x31483d-0x0;var _0x1ed9d5=_0x1491[_0x31483d];return _0x1ed9d5;};'use strict';var client=require(_0x1149('0x0'));exports[_0x1149('0x1')]=function(){return function(){return client[_0x1149('0x2')](_0x1149('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0x1149('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x1149('0x1')});};};
\ No newline at end of file
index a510e4a..423078e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb1=['timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength'];(function(_0x4f27ad,_0xd4a809){var _0x3b39d9=function(_0x59470f){while(--_0x59470f){_0x4f27ad['push'](_0x4f27ad['shift']());}};_0x3b39d9(++_0xd4a809);}(_0x9fb1,0xd7));var _0x19fb=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x9fb1[_0x17928f];return _0x500b63;};'use strict';var client=require(_0x19fb('0x0'));exports[_0x19fb('0x1')]=function(){return function(){return client[_0x19fb('0x2')](_0x19fb('0x3'),{'options':{'raw':![],'attributes':['id',_0x19fb('0x4'),_0x19fb('0x5'),_0x19fb('0x6'),_0x19fb('0x7'),_0x19fb('0x8'),_0x19fb('0x9'),'dialActive','dialMethod',_0x19fb('0xa'),'dialLimitQueue',_0x19fb('0xb'),'dialPredictiveOptimization',_0x19fb('0xc'),_0x19fb('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber',_0x19fb('0xe'),_0x19fb('0xf'),'dialQueueTimeout',_0x19fb('0x10'),_0x19fb('0x11'),_0x19fb('0x12'),_0x19fb('0x13'),_0x19fb('0x14'),_0x19fb('0x15'),_0x19fb('0x16'),_0x19fb('0x17'),_0x19fb('0x18'),_0x19fb('0x19'),_0x19fb('0x1a'),_0x19fb('0x1b'),'dialAMDActive',_0x19fb('0x1c'),_0x19fb('0x1d'),_0x19fb('0x1e'),_0x19fb('0x1f'),_0x19fb('0x20'),_0x19fb('0x21'),_0x19fb('0x22'),_0x19fb('0x23'),_0x19fb('0x24'),_0x19fb('0x25'),_0x19fb('0x26'),_0x19fb('0x27'),_0x19fb('0x28'),_0x19fb('0x29'),_0x19fb('0x2a'),'dialQueueProject2','monitor_format',_0x19fb('0x2b'),_0x19fb('0x2c'),_0x19fb('0x2d'),_0x19fb('0x2e'),_0x19fb('0x2f'),_0x19fb('0x30'),'dialDropRetryFrequency','dialAbandonedMaxRetry',_0x19fb('0x31'),'dialMachineMaxRetry',_0x19fb('0x32'),_0x19fb('0x33'),_0x19fb('0x34'),_0x19fb('0x35'),'dialPredictiveIntervalMaxThreshold',_0x19fb('0x36'),'dialPreviewAutoRecallMe',_0x19fb('0x37')],'include':[{'model':_0x19fb('0x38'),'as':_0x19fb('0x38'),'attributes':['id',_0x19fb('0x4'),_0x19fb('0x39'),'active']},{'model':'Pause','as':_0x19fb('0x3a'),'attributes':['id','name']},{'model':_0x19fb('0x38'),'as':_0x19fb('0x3b'),'attributes':['id',_0x19fb('0x4'),_0x19fb('0x39'),'active']},{'model':_0x19fb('0x3c'),'as':_0x19fb('0x3c'),'attributes':['id','name'],'include':[{'model':_0x19fb('0x3c'),'as':_0x19fb('0x3d'),'attributes':['id',_0x19fb('0x4'),_0x19fb('0x3e')]}]}]},'log':_0x19fb('0x1')});};};
\ No newline at end of file
+var _0x6fcb=['dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','name','callerid','active','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','acw','acwTimeout','autopause','monitor_format','type','dialMethod','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialGlobalInterval','dialCheckDuplicateType','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout'];(function(_0x4f8b2b,_0x1dc8dd){var _0x2f230a=function(_0x232685){while(--_0x232685){_0x4f8b2b['push'](_0x4f8b2b['shift']());}};_0x2f230a(++_0x1dc8dd);}(_0x6fcb,0x1db));var _0xb6fc=function(_0x292943,_0x2211dd){_0x292943=_0x292943-0x0;var _0x573350=_0x6fcb[_0x292943];return _0x573350;};'use strict';var client=require(_0xb6fc('0x0'));exports[_0xb6fc('0x1')]=function(){return function(){return client[_0xb6fc('0x2')](_0xb6fc('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb6fc('0x4'),_0xb6fc('0x5'),_0xb6fc('0x6'),_0xb6fc('0x7'),_0xb6fc('0x8'),'dialActive',_0xb6fc('0x9'),'dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage',_0xb6fc('0xa'),_0xb6fc('0xb'),_0xb6fc('0xc'),_0xb6fc('0xd'),_0xb6fc('0xe'),_0xb6fc('0xf'),_0xb6fc('0x10'),'dialCongestionMaxRetry',_0xb6fc('0x11'),_0xb6fc('0x12'),_0xb6fc('0x13'),'dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone',_0xb6fc('0x14'),'dialPrefix',_0xb6fc('0x15'),'dialAMDActive','dialAMDInitialSilence',_0xb6fc('0x16'),_0xb6fc('0x17'),_0xb6fc('0x18'),'dialAMDMinWordLength',_0xb6fc('0x19'),_0xb6fc('0x1a'),_0xb6fc('0x1b'),'dialAMDMaximumWordLength',_0xb6fc('0x1c'),_0xb6fc('0x1d'),_0xb6fc('0x1e'),_0xb6fc('0x1f'),_0xb6fc('0x20'),_0xb6fc('0x21'),'dialQueueProject2',_0xb6fc('0x7'),_0xb6fc('0x22'),'dialRandomLastDigitCallerIdNumber','dialCutDigit',_0xb6fc('0x23'),_0xb6fc('0x24'),_0xb6fc('0x25'),_0xb6fc('0x26'),'dialAbandonedMaxRetry','dialAbandonedRetryFrequency',_0xb6fc('0x27'),_0xb6fc('0x28'),'dialAgentRejectMaxRetry',_0xb6fc('0x29'),_0xb6fc('0x2a'),_0xb6fc('0x2b'),_0xb6fc('0x2c'),_0xb6fc('0x2d'),_0xb6fc('0x2e')],'include':[{'model':_0xb6fc('0x2f'),'as':_0xb6fc('0x2f'),'attributes':['id',_0xb6fc('0x30'),_0xb6fc('0x31'),_0xb6fc('0x32')]},{'model':'Pause','as':_0xb6fc('0x33'),'attributes':['id',_0xb6fc('0x30')]},{'model':_0xb6fc('0x2f'),'as':_0xb6fc('0x34'),'attributes':['id',_0xb6fc('0x30'),'callerid','active']},{'model':'Interval','as':_0xb6fc('0x35'),'attributes':['id',_0xb6fc('0x30')],'include':[{'model':_0xb6fc('0x35'),'as':_0xb6fc('0x36'),'attributes':['id',_0xb6fc('0x30'),_0xb6fc('0x37')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index b242345..6f303c7 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(_0x47f3d8,_0x5f01cc){var _0x702614=function(_0x15006a){while(--_0x15006a){_0x47f3d8['push'](_0x47f3d8['shift']());}};_0x702614(++_0x5f01cc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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(_0x25bd67,_0x9829ca){var _0x2385ad=function(_0x214009){while(--_0x214009){_0x25bd67['push'](_0x25bd67['shift']());}};_0x2385ad(++_0x9829ca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 fa1dba2..9881400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9f=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x3eb8e0,_0x3f35ec){var _0x210f9c=function(_0x17ffd6){while(--_0x17ffd6){_0x3eb8e0['push'](_0x3eb8e0['shift']());}};_0x210f9c(++_0x3f35ec);}(_0xbc9f,0x1ce));var _0xfbc9=function(_0x27604f,_0x5ae336){_0x27604f=_0x27604f-0x0;var _0x40d189=_0xbc9f[_0x27604f];return _0x40d189;};'use strict';var client=require('../client');exports[_0xfbc9('0x0')]=function(_0x3f7d8b){return function(){return client['Request'](_0xfbc9('0x1'),{'options':{'where':{'VoiceQueueId':_0x3f7d8b,'paused':!![]},'raw':!![]},'log':_0xfbc9('0x0')});};};
\ No newline at end of file
+var _0xf86d=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses','../client'];(function(_0xe6036b,_0x57ced5){var _0x9dd9e=function(_0x413feb){while(--_0x413feb){_0xe6036b['push'](_0xe6036b['shift']());}};_0x9dd9e(++_0x57ced5);}(_0xf86d,0x185));var _0xdf86=function(_0x22dac7,_0x45d32a){_0x22dac7=_0x22dac7-0x0;var _0x3e6cfa=_0xf86d[_0x22dac7];return _0x3e6cfa;};'use strict';var client=require(_0xdf86('0x0'));exports[_0xdf86('0x1')]=function(_0xe7e868){return function(){return client['Request'](_0xdf86('0x2'),{'options':{'where':{'VoiceQueueId':_0xe7e868,'paused':!![]},'raw':!![]},'log':_0xdf86('0x1')});};};
\ No newline at end of file
index 8e62935..8cc6940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x4eae45,_0x32764a){var _0x2fa511=function(_0x48b588){while(--_0x48b588){_0x4eae45['push'](_0x4eae45['shift']());}};_0x2fa511(++_0x32764a);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x1bb764,_0x3abf00){var _0x38a97e=function(_0x3335e4){while(--_0x3335e4){_0x1bb764['push'](_0x1bb764['shift']());}};_0x38a97e(++_0x3abf00);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index cbb77cf..13c7846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd442=['secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','origtransferercontext','origtransfererexten','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfereraccountcode','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname'];(function(_0x5419fd,_0x3dfa9c){var _0x2c3a7b=function(_0x4bf4bb){while(--_0x4bf4bb){_0x5419fd['push'](_0x5419fd['shift']());}};_0x2c3a7b(++_0x3dfa9c);}(_0xd442,0xff));var _0x2d44=function(_0x201e93,_0x1e9444){_0x201e93=_0x201e93-0x0;var _0x56d62e=_0xd442[_0x201e93];return _0x56d62e;};'use strict';var client=require(_0x2d44('0x0'));exports[_0x2d44('0x1')]={};exports[_0x2d44('0x2')]=function(_0x16adf7){return client[_0x2d44('0x3')](_0x2d44('0x4'),{'body':{'result':_0x16adf7[_0x2d44('0x5')],'transfererchannel':_0x16adf7[_0x2d44('0x6')],'transferercalleridnum':_0x16adf7[_0x2d44('0x7')],'transferercalleridname':_0x16adf7[_0x2d44('0x8')],'transfererconnectedlinenum':_0x16adf7['transfererconnectedlinenum'],'transfererconnectedlinename':_0x16adf7['transfererconnectedlinename'],'transfereraccountcode':_0x16adf7[_0x2d44('0x9')],'transferercontext':_0x16adf7['transferercontext'],'transfererexten':_0x16adf7['transfererexten'],'transfererlinkedid':_0x16adf7[_0x2d44('0xa')],'transfereechannel':_0x16adf7[_0x2d44('0xb')],'transfereecalleridnum':_0x16adf7[_0x2d44('0xc')],'transfereecalleridname':_0x16adf7[_0x2d44('0xd')],'transfereeconnectedlinenum':_0x16adf7[_0x2d44('0xe')],'transfereeconnectedlinename':_0x16adf7[_0x2d44('0xf')],'transfereeaccountcode':_0x16adf7[_0x2d44('0x10')],'transfereecontext':_0x16adf7[_0x2d44('0x11')],'transfereeexten':_0x16adf7['transfereeexten'],'transfereelinkedid':_0x16adf7['transfereelinkedid'],'isexternal':_0x16adf7['isexternal'],'context':_0x16adf7[_0x2d44('0x12')],'extension':_0x16adf7[_0x2d44('0x13')],'type':_0x2d44('0x14')},'log':_0x2d44('0x4')});};exports[_0x2d44('0x15')]=function(_0x22302a){return client['Request'](_0x2d44('0x4'),{'body':{'result':_0x22302a[_0x2d44('0x5')],'transfererchannel':_0x22302a[_0x2d44('0x16')],'transferercalleridnum':_0x22302a[_0x2d44('0x17')],'transferercalleridname':_0x22302a[_0x2d44('0x18')],'transfererconnectedlinenum':_0x22302a[_0x2d44('0x19')],'transfererconnectedlinename':_0x22302a[_0x2d44('0x1a')],'transfereraccountcode':_0x22302a[_0x2d44('0x1b')],'transferercontext':_0x22302a[_0x2d44('0x1c')],'transfererexten':_0x22302a[_0x2d44('0x1d')],'transfererlinkedid':_0x22302a[_0x2d44('0x1e')],'transfereechannel':_0x22302a['transfertargetchannel'],'transfereecalleridnum':_0x22302a[_0x2d44('0x1f')],'transfereecalleridname':_0x22302a[_0x2d44('0x20')],'transfereeconnectedlinenum':_0x22302a['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x22302a['transfertargetconnectedlinename'],'transfereeaccountcode':_0x22302a[_0x2d44('0x21')],'transfereecontext':_0x22302a[_0x2d44('0x22')],'transfereeexten':_0x22302a[_0x2d44('0x23')],'transfereelinkedid':_0x22302a[_0x2d44('0x24')],'isexternal':_0x22302a[_0x2d44('0x25')],'context':_0x22302a[_0x2d44('0x26')],'extension':_0x22302a[_0x2d44('0x27')],'type':'attended'},'log':_0x2d44('0x4')});};
\ No newline at end of file
+var _0xd091=['transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','transfererchannel','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','blind','attendedTransfer','CreateVoiceTransferReport','result','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridname'];(function(_0x42448d,_0x5816f5){var _0x47ba4a=function(_0x3b5735){while(--_0x3b5735){_0x42448d['push'](_0x42448d['shift']());}};_0x47ba4a(++_0x5816f5);}(_0xd091,0xa1));var _0x1d09=function(_0x3d6084,_0x4b738b){_0x3d6084=_0x3d6084-0x0;var _0x342378=_0xd091[_0x3d6084];return _0x342378;};'use strict';var client=require(_0x1d09('0x0'));exports[_0x1d09('0x1')]={};exports[_0x1d09('0x2')]=function(_0x4a6de2){return client['Request']('CreateVoiceTransferReport',{'body':{'result':_0x4a6de2['result'],'transfererchannel':_0x4a6de2[_0x1d09('0x3')],'transferercalleridnum':_0x4a6de2['transferercalleridnum'],'transferercalleridname':_0x4a6de2['transferercalleridname'],'transfererconnectedlinenum':_0x4a6de2[_0x1d09('0x4')],'transfererconnectedlinename':_0x4a6de2[_0x1d09('0x5')],'transfereraccountcode':_0x4a6de2[_0x1d09('0x6')],'transferercontext':_0x4a6de2[_0x1d09('0x7')],'transfererexten':_0x4a6de2['transfererexten'],'transfererlinkedid':_0x4a6de2[_0x1d09('0x8')],'transfereechannel':_0x4a6de2[_0x1d09('0x9')],'transfereecalleridnum':_0x4a6de2[_0x1d09('0xa')],'transfereecalleridname':_0x4a6de2['transfereecalleridname'],'transfereeconnectedlinenum':_0x4a6de2['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x4a6de2[_0x1d09('0xb')],'transfereeaccountcode':_0x4a6de2[_0x1d09('0xc')],'transfereecontext':_0x4a6de2[_0x1d09('0xd')],'transfereeexten':_0x4a6de2[_0x1d09('0xe')],'transfereelinkedid':_0x4a6de2[_0x1d09('0xf')],'isexternal':_0x4a6de2[_0x1d09('0x10')],'context':_0x4a6de2[_0x1d09('0x11')],'extension':_0x4a6de2['extension'],'type':_0x1d09('0x12')},'log':'CreateVoiceTransferReport'});};exports[_0x1d09('0x13')]=function(_0x5d03e2){return client['Request'](_0x1d09('0x14'),{'body':{'result':_0x5d03e2[_0x1d09('0x15')],'transfererchannel':_0x5d03e2[_0x1d09('0x16')],'transferercalleridnum':_0x5d03e2['origtransferercalleridnum'],'transferercalleridname':_0x5d03e2[_0x1d09('0x17')],'transfererconnectedlinenum':_0x5d03e2[_0x1d09('0x18')],'transfererconnectedlinename':_0x5d03e2[_0x1d09('0x19')],'transfereraccountcode':_0x5d03e2['origtransfereraccountcode'],'transferercontext':_0x5d03e2['secondtransferercontext'],'transfererexten':_0x5d03e2['secondtransfererexten'],'transfererlinkedid':_0x5d03e2[_0x1d09('0x1a')],'transfereechannel':_0x5d03e2[_0x1d09('0x1b')],'transfereecalleridnum':_0x5d03e2['transfertargetcalleridnum'],'transfereecalleridname':_0x5d03e2[_0x1d09('0x1c')],'transfereeconnectedlinenum':_0x5d03e2[_0x1d09('0x1d')],'transfereeconnectedlinename':_0x5d03e2[_0x1d09('0x1e')],'transfereeaccountcode':_0x5d03e2[_0x1d09('0x1f')],'transfereecontext':_0x5d03e2[_0x1d09('0x20')],'transfereeexten':_0x5d03e2[_0x1d09('0x21')],'transfereelinkedid':_0x5d03e2[_0x1d09('0x22')],'isexternal':_0x5d03e2[_0x1d09('0x10')],'context':_0x5d03e2[_0x1d09('0x23')],'extension':_0x5d03e2[_0x1d09('0x24')],'type':_0x1d09('0x25')},'log':_0x1d09('0x14')});};
\ No newline at end of file
index 4ec8317..d3044f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','asterisk','username','join','pick','keys','reload','module','action','Action','then','message','catch','error','ami\x20disconnected','command','Command','voiceQueues','hasOwnProperty','length','find','omit','undefined','values','channels','voicechannel','validate','map','uniqueid','format','%s.%s','filename','wav','channel','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','push','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','stop','queueChannels','type','inbound','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','count','rows','voicequeuechannel','voicequeuechannelhangup','Redirect','exten','context','telephones','run','custom:','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','util','jayson/promise','moment','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','listen','%s/%s'];(function(_0x507e80,_0x1d3a0a){var _0x5bcd1a=function(_0x308d5a){while(--_0x308d5a){_0x507e80['push'](_0x507e80['shift']());}};_0x5bcd1a(++_0x1d3a0a);}(_0x7c09,0x102));var _0x97c0=function(_0x300b9f,_0x53a7b8){_0x300b9f=_0x300b9f-0x0;var _0x4c4c1e=_0x7c09[_0x300b9f];return _0x4c4c1e;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var jayson=require(_0x97c0('0x1'));var schema=require('validate');var moment=require(_0x97c0('0x2'));var config=require(_0x97c0('0x3'));var properties=require(_0x97c0('0x4'));var ami=require(_0x97c0('0x5'));var VoiceQueueSummary=require(_0x97c0('0x6'));exports[_0x97c0('0x7')]=function(_0x15c67b,_0x4a7788,_0x4b2f81){return new Promise(function(_0x590368,_0x46fdd9){var _0x42c6c7={'QueuePause':function(_0x2c19fa){return new Promise(function(_0x109bc8){var _0x293785=util['format'](_0x97c0('0x8'),'SIP',_0x2c19fa[_0x97c0('0x9')]);if(_0x15c67b[_0x97c0('0xa')]&&_0x15c67b['timers'][_0x293785]&&_0x15c67b['timers'][_0x293785][_0x97c0('0xb')]){_0x15c67b[_0x97c0('0xa')][_0x293785][_0x97c0('0xc')]();}if(_0x15c67b[_0x97c0('0xd')][_0x293785]){_0x15c67b[_0x97c0('0xd')][_0x293785][_0x97c0('0xe')]({'statePause':_0x2c19fa[_0x97c0('0xf')]?!![]:![]});}_0x109bc8({'code':0xc8,'message':_0x97c0('0x10')});});},'Reload':function(_0x9ca3c1){var _0x2ecf34=this;return new Promise(function(_0x2810fd,_0x132865){if(ami[_0x97c0('0x11')]()==![]){return _0x132865(_0x2ecf34['error'](0x1f4,[config[_0x97c0('0x12')]['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],'ami\x20disconnected'][_0x97c0('0x14')]('\x20')));}_0x9ca3c1=_[_0x97c0('0x15')](_0x9ca3c1,_[_0x97c0('0x16')](properties[_0x97c0('0x17')][_0x97c0('0x18')]));_0x9ca3c1[_0x97c0('0x19')]='Reload';return ami[_0x97c0('0x1a')](_0x9ca3c1)[_0x97c0('0x1b')](function(_0x51180e){_0x2810fd({'code':0xc8,'message':_0x51180e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x179d43){_0x132865(_0x2ecf34[_0x97c0('0x1e')](0x1f5,_0x179d43[_0x97c0('0x1c')]));});});},'Command':function(_0x3e7a52){var _0x4fed42=this;return new Promise(function(_0x1eeaf0,_0x432705){if(ami[_0x97c0('0x11')]()==![]){return _0x432705(_0x4fed42['error'](0x1f4,[config['asterisk']['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],_0x97c0('0x1f')]['join']('\x20')));}_0x3e7a52=_[_0x97c0('0x15')](_0x3e7a52,_0x97c0('0x20'));_0x3e7a52[_0x97c0('0x19')]=_0x97c0('0x21');return ami[_0x97c0('0x1a')](_0x3e7a52)[_0x97c0('0x1b')](function(_0x9dff60){_0x1eeaf0({'code':0xc8,'message':_0x9dff60['content']});})[_0x97c0('0x1d')](function(_0x29b3aa){_0x432705(_0x4fed42[_0x97c0('0x1e')](0x1f5,_0x29b3aa[_0x97c0('0x1c')]));});});},'VoiceQueues':function(){return new Promise(function(_0x5a17df){var _0x2bda6c=[];for(var _0x14cada in _0x15c67b['voiceQueues']){if(_0x15c67b[_0x97c0('0x22')][_0x97c0('0x23')](_0x14cada)){var _0x447316=_0x15c67b['voiceQueues'][_0x14cada];var _0x4f11ba=new VoiceQueueSummary(_0x447316);_0x2bda6c['push'](_0x4f11ba);}}_0x5a17df({'count':_0x2bda6c[_0x97c0('0x24')],'rows':_0x2bda6c});});},'UpdateVoiceQueue':function(_0x8e3ee7){return new Promise(function(_0x3a744c,_0x225e43){var _0x26939e=_[_0x97c0('0x25')](_0x15c67b['voiceQueues'],{'id':parseInt(_0x8e3ee7['id'])});var _0x10e47e=_[_0x97c0('0x26')](_0x8e3ee7,['id']);if(_0x26939e){for(var _0x325090 in _0x10e47e){if(typeof _0x10e47e[_0x325090]!=='undefined'&&typeof _0x26939e[_0x325090]!==_0x97c0('0x27')){_0x26939e[_0x325090]=_0x10e47e[_0x325090];}}_0x3a744c(_0x26939e);}else{_0x225e43();}});},'VoiceChannels':function(){return new Promise(function(_0x148e95){var _0x21ba0d=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x29')]);_0x148e95({'count':_0x21ba0d['length'],'rows':_0x21ba0d});});},'VoiceChannelMixMonitor':function(_0x59abbb){var _0x29ad98=this;return new Promise(function(_0x353fc9,_0x23080c){if(ami['isConnected']()==![]){return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config['asterisk'][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x10015b=schema(properties[_0x97c0('0x2a')])[_0x97c0('0x2b')](_0x59abbb);if(_0x10015b[_0x97c0('0x24')]>0x0){return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x10015b,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x356b73=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x29')],{'uniqueid':_0x59abbb[_0x97c0('0x2d')]});if(_0x356b73&&_0x356b73['channel']){var _0x292560=util[_0x97c0('0x2e')](_0x97c0('0x2f'),_0x59abbb[_0x97c0('0x30')]||_0x59abbb[_0x97c0('0x2d')],_0x59abbb[_0x97c0('0x2e')]||_0x97c0('0x31'));return ami[_0x97c0('0x1a')]({'action':'MixMonitor','channel':_0x356b73[_0x97c0('0x32')],'file':_0x292560,'options':'ai(mixmonitorid)'})[_0x97c0('0x1b')](function(_0x20291){var _0xc4c795=_[_0x97c0('0x25')](_0x356b73[_0x97c0('0x33')],{'filename':_0x97c0('0x34')+_0x292560[_0x97c0('0x35')]()});if(_[_0x97c0('0x36')](_0xc4c795)){_0x356b73[_0x97c0('0x33')][_0x97c0('0x37')]({'filename':_0x97c0('0x34')+_0x292560['toLowerCase'](),'createdAt':moment()[_0x97c0('0x2e')](_0x97c0('0x38')),'mixmonitorid':_0x20291['mixmonitorid'],'status':_0x97c0('0x39')});}else{_0xc4c795[_0x97c0('0x3a')]=_0x20291[_0x97c0('0x3a')];_0xc4c795[_0x97c0('0x3b')]='rec';}_0x353fc9({'code':0xc8,'message':[_0x59abbb[_0x97c0('0x2d')],'MixMonitor\x20Success',_0x20291[_0x97c0('0x3a')]][_0x97c0('0x14')]('\x20'),'mixmonitorid':_0x20291['mixmonitorid']});})[_0x97c0('0x1d')](function(_0x163ebb){_0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f5,[_0x59abbb[_0x97c0('0x2d')],_0x163ebb[_0x97c0('0x1c')][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')));});}else{return _0x23080c(_0x29ad98[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceChannelStopMixMonitor':function(_0x2d4c25){var _0x25e099=this;return new Promise(function(_0x2cca4c,_0x1351d2){if(ami['isConnected']()==![]){return _0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x45e894=schema(properties['voicechannel'])['validate'](_0x2d4c25);if(_0x45e894[_0x97c0('0x24')]>0x0){return _0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x45e894,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x5556e8=_['find'](_0x15c67b['channels'],{'uniqueid':_0x2d4c25[_0x97c0('0x2d')]});if(_0x5556e8){return Promise['resolve']()['then'](function(){if(_0x5556e8[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x3d'),'channel':_0x5556e8[_0x97c0('0x32')],'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]})['catch'](function(){});}})[_0x97c0('0x1b')](function(){if(_0x5556e8[_0x97c0('0x3e')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x3d'),'channel':_0x5556e8[_0x97c0('0x3e')],'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]})[_0x97c0('0x1d')](function(){});}})[_0x97c0('0x1b')](function(){var _0x2c50ff=_[_0x97c0('0x25')](_0x5556e8['monitors'],{'mixmonitorid':_0x2d4c25[_0x97c0('0x3a')]});if(_0x2c50ff){_0x2c50ff[_0x97c0('0x3b')]=_0x97c0('0x3f');}})[_0x97c0('0x1b')](function(){var _0x4ff0a5=util['format'](_0x97c0('0x2f'),_0x2d4c25[_0x97c0('0x30')]||_0x2d4c25[_0x97c0('0x2d')],_0x2d4c25['format']||_0x97c0('0x31'));var _0xac56ac=_[_0x97c0('0x25')](_0x5556e8[_0x97c0('0x33')],{'filename':_0x97c0('0x34')+_0x4ff0a5['toLowerCase']()});if(_0xac56ac){_0xac56ac[_0x97c0('0x3b')]=_0x97c0('0x3f');}})[_0x97c0('0x1b')](function(){_0x2cca4c({'code':0xc8,'message':[_0x2d4c25['uniqueid'],'StopMixMonitor\x20Success'][_0x97c0('0x14')]('\x20')});})['catch'](function(_0x4c195a){_0x1351d2(_0x25e099[_0x97c0('0x1e')](0x1f5,[_0x2d4c25[_0x97c0('0x2d')],_0x4c195a[_0x97c0('0x1c')]['toLowerCase']()]['join']('\x20')));});}else{return _0x1351d2(_0x25e099['error'](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannels':function(_0x2b7daa){var _0x3afef4=this;return new Promise(function(_0xdb2767){var _0x397065=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x40')]);var _0x5dafa9={'count':_0x397065[_0x97c0('0x24')],'rows':_0x397065};if(_0x2b7daa&&_0x2b7daa[_0x97c0('0x41')]){if(![_0x97c0('0x42'),_0x97c0('0x43')][_0x97c0('0x44')](_0x2b7daa[_0x97c0('0x41')])){return _0x46fdd9(_0x3afef4['error'](0x190,_0x97c0('0x45')));}var _0x86a497=_['filter'](_0x397065,function(_0x245f2a){return _0x245f2a[_0x97c0('0x41')]===_0x2b7daa[_0x97c0('0x41')];});_0x5dafa9[_0x97c0('0x46')]=_0x86a497[_0x97c0('0x24')];_0x5dafa9[_0x97c0('0x47')]=_0x86a497;}_0xdb2767(_0x5dafa9);});},'VoiceQueuesChannel':function(_0x47298f){var _0x4e2cec=this;return new Promise(function(_0x2cd43c,_0x14e93c){var _0x3cb4c7=schema(properties[_0x97c0('0x48')])[_0x97c0('0x2b')](_0x47298f);if(_0x3cb4c7[_0x97c0('0x24')]>0x0){return _0x14e93c(_0x4e2cec[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x3cb4c7,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x447492=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x40')],{'uniqueid':_0x47298f['uniqueid']});if(_0x447492){_0x2cd43c(_0x447492);}else{return _0x14e93c(_0x4e2cec[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannelHangup':function(_0x405cda){var _0x3dfce8=this;return new Promise(function(_0x11d252,_0x3f197b){if(ami['isConnected']()==![]){return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f4,[config[_0x97c0('0x12')]['ip'],config['asterisk'][_0x97c0('0x13')],_0x97c0('0x1f')][_0x97c0('0x14')]('\x20')));}var _0x586ca1=schema(properties[_0x97c0('0x49')])['validate'](_0x405cda);if(_0x586ca1[_0x97c0('0x24')]>0x0){return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x586ca1,_0x97c0('0x1c'))[_0x97c0('0x14')](',\x20')));}var _0x2bb5d3=_[_0x97c0('0x25')](_0x15c67b[_0x97c0('0x40')],{'uniqueid':_0x405cda[_0x97c0('0x2d')]});if(_0x2bb5d3&&_0x2bb5d3[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':'Hangup','channel':_0x2bb5d3[_0x97c0('0x32')]})[_0x97c0('0x1b')](function(_0x102f68){_0x11d252({'code':0xc8,'message':[_0x405cda[_0x97c0('0x2d')],_0x102f68['message'][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')});})[_0x97c0('0x1d')](function(_0x37d337){_0x3f197b(_0x3dfce8['error'](0x1f5,[_0x405cda[_0x97c0('0x2d')],_0x37d337[_0x97c0('0x1c')][_0x97c0('0x35')]()]['join']('\x20')));});}else{return _0x3f197b(_0x3dfce8[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'VoiceQueuesChannelRedirect':function(_0x37a2fd){var _0x32e392=this;return new Promise(function(_0x373c34,_0x1838c9){if(ami[_0x97c0('0x11')]()==![]){return _0x1838c9(_0x32e392['error'](0x1f4,[config['asterisk']['ip'],config[_0x97c0('0x12')][_0x97c0('0x13')],'ami\x20disconnected'][_0x97c0('0x14')]('\x20')));}var _0x5a4738=schema(properties['voicequeuechannelredirect'])[_0x97c0('0x2b')](_0x37a2fd);if(_0x5a4738['length']>0x0){return _0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f4,_[_0x97c0('0x2c')](_0x5a4738,'message')['join'](',\x20')));}var _0x5da2cd=_[_0x97c0('0x25')](_0x15c67b['queueChannels'],{'uniqueid':_0x37a2fd[_0x97c0('0x2d')]});if(_0x5da2cd&&_0x5da2cd[_0x97c0('0x32')]){return ami[_0x97c0('0x1a')]({'action':_0x97c0('0x4a'),'channel':_0x5da2cd[_0x97c0('0x32')],'exten':_0x37a2fd[_0x97c0('0x4b')],'context':_0x37a2fd[_0x97c0('0x4c')]||_0x5da2cd[_0x97c0('0x4c')],'priority':0x1})[_0x97c0('0x1b')](function(_0x1b5173){_0x373c34({'code':0xc8,'message':[_0x37a2fd[_0x97c0('0x2d')],_0x1b5173['message'][_0x97c0('0x35')]()][_0x97c0('0x14')]('\x20')});})[_0x97c0('0x1d')](function(_0x38d0ea){_0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f5,[_0x37a2fd['uniqueid'],_0x38d0ea[_0x97c0('0x1c')][_0x97c0('0x35')]()]['join']('\x20')));});}else{return _0x1838c9(_0x32e392[_0x97c0('0x1e')](0x1f5,_0x97c0('0x3c')));}});},'Agents':function(_0x1cfe22){return new Promise(function(_0x4f52f4){var _0xa5f32b=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0xd')]);if(_0x1cfe22&&_0x1cfe22['id']){var _0x165c72=_['find'](_0xa5f32b,function(_0x4ee6a2){return _0x4ee6a2['id']===_0x1cfe22['id'];});_0x4f52f4(_0x165c72);}else{_0x4f52f4({'count':_0xa5f32b['length'],'rows':_0xa5f32b});}});},'Telephones':function(){return new Promise(function(_0x443508){var _0xf87b4b=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x4d')]);_0x443508({'count':_0xf87b4b[_0x97c0('0x24')],'rows':_0xf87b4b});});},'Trunks':function(){return new Promise(function(_0x1f41ef){var _0x1eb2a1=_[_0x97c0('0x28')](_0x15c67b['trunks']);_0x1f41ef({'count':_0x1eb2a1['length'],'rows':_0x1eb2a1});});},'OutboundChannels':function(){return new Promise(function(_0x199abc){var _0x5a74f7=_['values'](_0x15c67b['outboundChannels']);_0x199abc({'count':_0x5a74f7[_0x97c0('0x24')],'rows':_0x5a74f7});});},'Outbound':function(){return new Promise(function(_0x1479c4){_0x1479c4(_0x15c67b[_0x97c0('0x43')]);});},'Campaigns':function(){return new Promise(function(_0x30968e){var _0x4399f2=_['values'](_0x15c67b['campaigns']);_0x30968e({'count':_0x4399f2[_0x97c0('0x24')],'rows':_0x4399f2});});},'VoiceQueuesPreview':function(_0x388081){var _0x1ff571=this;return new Promise(function(_0x3a8ac0,_0x526bd5){_0x4a7788[_0x97c0('0x4e')](_0x388081['id'])['then'](function(_0x387d5e){_0x3a8ac0({'code':0xc8,'message':_0x387d5e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x3da4e5){_0x526bd5(_0x1ff571[_0x97c0('0x1e')](0x1f4,_0x3da4e5[_0x97c0('0x1c')]));});});},'EventManager':function(_0x2c00c4){var _0x41a6b5=this;return new Promise(function(_0x465a92,_0x8a333f){if(!_0x2c00c4['event']){return _0x8a333f(_0x41a6b5[_0x97c0('0x1e')](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x97c0('0x4f')+_0x2c00c4[_0x97c0('0x50')],_0x2c00c4['message']);_0x465a92({'code':0xc8,'message':_0x2c00c4});});},'FaxAccounts':function(){return new Promise(function(_0x2fa79f){var _0x5df143=_[_0x97c0('0x28')](_0x15c67b[_0x97c0('0x51')]);_0x2fa79f({'count':_0x5df143['length'],'rows':_0x5df143});});},'SendFax':function(_0x2d5b54){var _0x5d7a55=this;return new Promise(function(_0x525082,_0x4fecde){_0x4b2f81[_0x97c0('0x52')](_0x2d5b54)[_0x97c0('0x1b')](function(_0x52992e){_0x525082({'code':0xc8,'message':_0x52992e[_0x97c0('0x1c')]});})[_0x97c0('0x1d')](function(_0x2e93b1){_0x4fecde(_0x5d7a55[_0x97c0('0x1e')](0x1f4,_0x2e93b1[_0x97c0('0x1c')]));});});},'CheckAfterSend':function(_0x11db50){var _0x10f3cb=this;return new Promise(function(_0x363f31,_0x4e6887){_0x4b2f81[_0x97c0('0x53')](_0x11db50)['then'](function(_0x597cd1){_0x363f31({'code':0xc8,'message':_0x597cd1[_0x97c0('0x1c')]});})['catch'](function(_0x3f69a6){_0x4e6887(_0x10f3cb[_0x97c0('0x1e')](0x1f4,_0x3f69a6['message']));});});}};var _0xa50f5f=jayson[_0x97c0('0x54')](_0x42c6c7)[_0x97c0('0x55')]();_0xa50f5f['on'](_0x97c0('0x1e'),function(_0x388ba1){return _0x46fdd9(_0x388ba1);});_0xa50f5f['listen'](0x232a,_0x97c0('0x56'),function(){console[_0x97c0('0x57')](_0x97c0('0x58'),0x232a);return _0x590368('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x5162=['pick','keys','reload','module','action','Action','then','catch','message','Command','content','voiceQueues','hasOwnProperty','push','find','omit','undefined','values','channels','length','voicechannel','map','uniqueid','channel','%s.%s','filename','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','validate','resolve','StopMixMonitor','destinationchannel','stop','wav','StopMixMonitor\x20Success','type','inbound','outbound','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','campaigns','run','Event\x20name\x20mandatory','emit','event','faxAccounts','send','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','listen','format','%s/%s','SIP','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x5162,0x103));var _0x2516=function(_0x232cf2,_0x4ffb79){_0x232cf2=_0x232cf2-0x0;var _0x463cec=_0x5162[_0x232cf2];return _0x463cec;};'use strict';var _=require(_0x2516('0x0'));var util=require('util');var jayson=require('jayson/promise');var schema=require('validate');var moment=require('moment');var config=require(_0x2516('0x1'));var properties=require(_0x2516('0x2'));var ami=require(_0x2516('0x3'));var VoiceQueueSummary=require(_0x2516('0x4'));exports[_0x2516('0x5')]=function(_0x25dce6,_0x3a7984,_0x5b71b5){return new Promise(function(_0x48f411,_0x5beeb3){var _0x20a4a4={'QueuePause':function(_0xba4b36){return new Promise(function(_0xa1557){var _0x3a8834=util[_0x2516('0x6')](_0x2516('0x7'),_0x2516('0x8'),_0xba4b36['name']);if(_0x25dce6[_0x2516('0x9')]&&_0x25dce6[_0x2516('0x9')][_0x3a8834]&&_0x25dce6[_0x2516('0x9')][_0x3a8834]['timer']){_0x25dce6['timers'][_0x3a8834]['updateAcw']();}if(_0x25dce6['agents'][_0x3a8834]){_0x25dce6[_0x2516('0xa')][_0x3a8834][_0x2516('0xb')]({'statePause':_0xba4b36[_0x2516('0xc')]?!![]:![]});}_0xa1557({'code':0xc8,'message':_0x2516('0xd')});});},'Reload':function(_0x56c69c){var _0x33496b=this;return new Promise(function(_0x458aca,_0x171da2){if(ami[_0x2516('0xe')]()==![]){return _0x171da2(_0x33496b[_0x2516('0xf')](0x1f4,[config[_0x2516('0x10')]['ip'],config[_0x2516('0x10')][_0x2516('0x11')],_0x2516('0x12')][_0x2516('0x13')]('\x20')));}_0x56c69c=_[_0x2516('0x14')](_0x56c69c,_[_0x2516('0x15')](properties[_0x2516('0x16')][_0x2516('0x17')]));_0x56c69c[_0x2516('0x18')]='Reload';return ami[_0x2516('0x19')](_0x56c69c)[_0x2516('0x1a')](function(_0x1a1005){_0x458aca({'code':0xc8,'message':_0x1a1005['message']});})[_0x2516('0x1b')](function(_0x5e96c7){_0x171da2(_0x33496b['error'](0x1f5,_0x5e96c7[_0x2516('0x1c')]));});});},'Command':function(_0x3583cf){var _0x151168=this;return new Promise(function(_0x618aed,_0x198b93){if(ami[_0x2516('0xe')]()==![]){return _0x198b93(_0x151168[_0x2516('0xf')](0x1f4,[config[_0x2516('0x10')]['ip'],config[_0x2516('0x10')][_0x2516('0x11')],_0x2516('0x12')][_0x2516('0x13')]('\x20')));}_0x3583cf=_[_0x2516('0x14')](_0x3583cf,'command');_0x3583cf['action']=_0x2516('0x1d');return ami[_0x2516('0x19')](_0x3583cf)[_0x2516('0x1a')](function(_0x2d5b1b){_0x618aed({'code':0xc8,'message':_0x2d5b1b[_0x2516('0x1e')]});})[_0x2516('0x1b')](function(_0x3d906d){_0x198b93(_0x151168[_0x2516('0xf')](0x1f5,_0x3d906d['message']));});});},'VoiceQueues':function(){return new Promise(function(_0xa4538d){var _0x39c63f=[];for(var _0x774b60 in _0x25dce6[_0x2516('0x1f')]){if(_0x25dce6['voiceQueues'][_0x2516('0x20')](_0x774b60)){var _0x30eeb9=_0x25dce6[_0x2516('0x1f')][_0x774b60];var _0x3d728a=new VoiceQueueSummary(_0x30eeb9);_0x39c63f[_0x2516('0x21')](_0x3d728a);}}_0xa4538d({'count':_0x39c63f['length'],'rows':_0x39c63f});});},'UpdateVoiceQueue':function(_0x3c5c3c){return new Promise(function(_0x1750e7,_0x935035){var _0x2cb847=_[_0x2516('0x22')](_0x25dce6[_0x2516('0x1f')],{'id':parseInt(_0x3c5c3c['id'])});var _0x556f01=_[_0x2516('0x23')](_0x3c5c3c,['id']);if(_0x2cb847){for(var _0x20dc9f in _0x556f01){if(typeof _0x556f01[_0x20dc9f]!=='undefined'&&typeof _0x2cb847[_0x20dc9f]!==_0x2516('0x24')){_0x2cb847[_0x20dc9f]=_0x556f01[_0x20dc9f];}}_0x1750e7(_0x2cb847);}else{_0x935035();}});},'VoiceChannels':function(){return new Promise(function(_0x1de031){var _0x4527f1=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x26')]);_0x1de031({'count':_0x4527f1[_0x2516('0x27')],'rows':_0x4527f1});});},'VoiceChannelMixMonitor':function(_0x2e92f2){var _0x3c1daf=this;return new Promise(function(_0x10f9ec,_0x12d790){if(ami[_0x2516('0xe')]()==![]){return _0x12d790(_0x3c1daf[_0x2516('0xf')](0x1f4,[config[_0x2516('0x10')]['ip'],config[_0x2516('0x10')][_0x2516('0x11')],'ami\x20disconnected'][_0x2516('0x13')]('\x20')));}var _0x54147b=schema(properties[_0x2516('0x28')])['validate'](_0x2e92f2);if(_0x54147b[_0x2516('0x27')]>0x0){return _0x12d790(_0x3c1daf['error'](0x1f4,_[_0x2516('0x29')](_0x54147b,_0x2516('0x1c'))[_0x2516('0x13')](',\x20')));}var _0x261cff=_[_0x2516('0x22')](_0x25dce6[_0x2516('0x26')],{'uniqueid':_0x2e92f2[_0x2516('0x2a')]});if(_0x261cff&&_0x261cff[_0x2516('0x2b')]){var _0x1ad634=util['format'](_0x2516('0x2c'),_0x2e92f2[_0x2516('0x2d')]||_0x2e92f2[_0x2516('0x2a')],_0x2e92f2[_0x2516('0x6')]||'wav');return ami['Action']({'action':_0x2516('0x2e'),'channel':_0x261cff[_0x2516('0x2b')],'file':_0x1ad634,'options':_0x2516('0x2f')})[_0x2516('0x1a')](function(_0x45c12e){var _0x164f07=_[_0x2516('0x22')](_0x261cff[_0x2516('0x30')],{'filename':_0x2516('0x31')+_0x1ad634[_0x2516('0x32')]()});if(_['isNil'](_0x164f07)){_0x261cff['monitors'][_0x2516('0x21')]({'filename':_0x2516('0x31')+_0x1ad634['toLowerCase'](),'createdAt':moment()['format'](_0x2516('0x33')),'mixmonitorid':_0x45c12e[_0x2516('0x34')],'status':'rec'});}else{_0x164f07[_0x2516('0x34')]=_0x45c12e['mixmonitorid'];_0x164f07[_0x2516('0x35')]=_0x2516('0x36');}_0x10f9ec({'code':0xc8,'message':[_0x2e92f2['uniqueid'],_0x2516('0x37'),_0x45c12e[_0x2516('0x34')]][_0x2516('0x13')]('\x20'),'mixmonitorid':_0x45c12e[_0x2516('0x34')]});})[_0x2516('0x1b')](function(_0x25c33a){_0x12d790(_0x3c1daf[_0x2516('0xf')](0x1f5,[_0x2e92f2[_0x2516('0x2a')],_0x25c33a[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')));});}else{return _0x12d790(_0x3c1daf[_0x2516('0xf')](0x1f5,_0x2516('0x38')));}});},'VoiceChannelStopMixMonitor':function(_0x4c832b){var _0x1b72cd=this;return new Promise(function(_0x1bc0e,_0x5debf2){if(ami[_0x2516('0xe')]()==![]){return _0x5debf2(_0x1b72cd[_0x2516('0xf')](0x1f4,[config[_0x2516('0x10')]['ip'],config[_0x2516('0x10')][_0x2516('0x11')],'ami\x20disconnected'][_0x2516('0x13')]('\x20')));}var _0xe5bc76=schema(properties[_0x2516('0x28')])[_0x2516('0x39')](_0x4c832b);if(_0xe5bc76[_0x2516('0x27')]>0x0){return _0x5debf2(_0x1b72cd[_0x2516('0xf')](0x1f4,_['map'](_0xe5bc76,_0x2516('0x1c'))[_0x2516('0x13')](',\x20')));}var _0xe64acc=_[_0x2516('0x22')](_0x25dce6[_0x2516('0x26')],{'uniqueid':_0x4c832b[_0x2516('0x2a')]});if(_0xe64acc){return Promise[_0x2516('0x3a')]()['then'](function(){if(_0xe64acc[_0x2516('0x2b')]){return ami['Action']({'action':_0x2516('0x3b'),'channel':_0xe64acc['channel'],'mixmonitorid':_0x4c832b[_0x2516('0x34')]})[_0x2516('0x1b')](function(){});}})[_0x2516('0x1a')](function(){if(_0xe64acc['destinationchannel']){return ami['Action']({'action':_0x2516('0x3b'),'channel':_0xe64acc[_0x2516('0x3c')],'mixmonitorid':_0x4c832b['mixmonitorid']})['catch'](function(){});}})[_0x2516('0x1a')](function(){var _0x147e05=_[_0x2516('0x22')](_0xe64acc['monitors'],{'mixmonitorid':_0x4c832b[_0x2516('0x34')]});if(_0x147e05){_0x147e05['status']=_0x2516('0x3d');}})[_0x2516('0x1a')](function(){var _0x318128=util[_0x2516('0x6')]('%s.%s',_0x4c832b[_0x2516('0x2d')]||_0x4c832b[_0x2516('0x2a')],_0x4c832b[_0x2516('0x6')]||_0x2516('0x3e'));var _0x43874c=_['find'](_0xe64acc[_0x2516('0x30')],{'filename':_0x2516('0x31')+_0x318128[_0x2516('0x32')]()});if(_0x43874c){_0x43874c[_0x2516('0x35')]='stop';}})[_0x2516('0x1a')](function(){_0x1bc0e({'code':0xc8,'message':[_0x4c832b[_0x2516('0x2a')],_0x2516('0x3f')][_0x2516('0x13')]('\x20')});})[_0x2516('0x1b')](function(_0x4f805d){_0x5debf2(_0x1b72cd[_0x2516('0xf')](0x1f5,[_0x4c832b[_0x2516('0x2a')],_0x4f805d[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')));});}else{return _0x5debf2(_0x1b72cd[_0x2516('0xf')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x4f3eba){var _0x54e8df=this;return new Promise(function(_0x323590){var _0x4f7eb4=_['values'](_0x25dce6['queueChannels']);var _0x5e7cb={'count':_0x4f7eb4[_0x2516('0x27')],'rows':_0x4f7eb4};if(_0x4f3eba&&_0x4f3eba[_0x2516('0x40')]){if(![_0x2516('0x41'),_0x2516('0x42')]['includes'](_0x4f3eba[_0x2516('0x40')])){return _0x5beeb3(_0x54e8df[_0x2516('0xf')](0x190,_0x2516('0x43')));}var _0x4f75cd=_[_0x2516('0x44')](_0x4f7eb4,function(_0x350206){return _0x350206['type']===_0x4f3eba[_0x2516('0x40')];});_0x5e7cb[_0x2516('0x45')]=_0x4f75cd[_0x2516('0x27')];_0x5e7cb[_0x2516('0x46')]=_0x4f75cd;}_0x323590(_0x5e7cb);});},'VoiceQueuesChannel':function(_0x185298){var _0x5d92cb=this;return new Promise(function(_0x47edff,_0x2a877a){var _0x526b15=schema(properties[_0x2516('0x47')])['validate'](_0x185298);if(_0x526b15[_0x2516('0x27')]>0x0){return _0x2a877a(_0x5d92cb[_0x2516('0xf')](0x1f4,_[_0x2516('0x29')](_0x526b15,_0x2516('0x1c'))[_0x2516('0x13')](',\x20')));}var _0x4751fd=_[_0x2516('0x22')](_0x25dce6[_0x2516('0x48')],{'uniqueid':_0x185298[_0x2516('0x2a')]});if(_0x4751fd){_0x47edff(_0x4751fd);}else{return _0x2a877a(_0x5d92cb[_0x2516('0xf')](0x1f5,_0x2516('0x38')));}});},'VoiceQueuesChannelHangup':function(_0x4f095a){var _0x1b2493=this;return new Promise(function(_0x6c7d5f,_0x3adc8c){if(ami['isConnected']()==![]){return _0x3adc8c(_0x1b2493[_0x2516('0xf')](0x1f4,[config['asterisk']['ip'],config[_0x2516('0x10')][_0x2516('0x11')],_0x2516('0x12')]['join']('\x20')));}var _0x566224=schema(properties['voicequeuechannelhangup'])[_0x2516('0x39')](_0x4f095a);if(_0x566224[_0x2516('0x27')]>0x0){return _0x3adc8c(_0x1b2493[_0x2516('0xf')](0x1f4,_[_0x2516('0x29')](_0x566224,'message')[_0x2516('0x13')](',\x20')));}var _0x20a267=_[_0x2516('0x22')](_0x25dce6['queueChannels'],{'uniqueid':_0x4f095a[_0x2516('0x2a')]});if(_0x20a267&&_0x20a267[_0x2516('0x2b')]){return ami[_0x2516('0x19')]({'action':_0x2516('0x49'),'channel':_0x20a267[_0x2516('0x2b')]})[_0x2516('0x1a')](function(_0x26b897){_0x6c7d5f({'code':0xc8,'message':[_0x4f095a[_0x2516('0x2a')],_0x26b897[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')});})[_0x2516('0x1b')](function(_0xa10d29){_0x3adc8c(_0x1b2493['error'](0x1f5,[_0x4f095a[_0x2516('0x2a')],_0xa10d29[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')));});}else{return _0x3adc8c(_0x1b2493[_0x2516('0xf')](0x1f5,_0x2516('0x38')));}});},'VoiceQueuesChannelRedirect':function(_0x314c28){var _0x496001=this;return new Promise(function(_0x3ce0d6,_0xab7abf){if(ami[_0x2516('0xe')]()==![]){return _0xab7abf(_0x496001[_0x2516('0xf')](0x1f4,[config[_0x2516('0x10')]['ip'],config[_0x2516('0x10')]['username'],'ami\x20disconnected']['join']('\x20')));}var _0x331d78=schema(properties[_0x2516('0x4a')])[_0x2516('0x39')](_0x314c28);if(_0x331d78[_0x2516('0x27')]>0x0){return _0xab7abf(_0x496001['error'](0x1f4,_['map'](_0x331d78,_0x2516('0x1c'))['join'](',\x20')));}var _0x1c0540=_[_0x2516('0x22')](_0x25dce6['queueChannels'],{'uniqueid':_0x314c28[_0x2516('0x2a')]});if(_0x1c0540&&_0x1c0540[_0x2516('0x2b')]){return ami[_0x2516('0x19')]({'action':_0x2516('0x4b'),'channel':_0x1c0540[_0x2516('0x2b')],'exten':_0x314c28[_0x2516('0x4c')],'context':_0x314c28[_0x2516('0x4d')]||_0x1c0540[_0x2516('0x4d')],'priority':0x1})[_0x2516('0x1a')](function(_0x4c86a3){_0x3ce0d6({'code':0xc8,'message':[_0x314c28['uniqueid'],_0x4c86a3[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')});})['catch'](function(_0x23610d){_0xab7abf(_0x496001['error'](0x1f5,[_0x314c28[_0x2516('0x2a')],_0x23610d[_0x2516('0x1c')][_0x2516('0x32')]()][_0x2516('0x13')]('\x20')));});}else{return _0xab7abf(_0x496001[_0x2516('0xf')](0x1f5,_0x2516('0x38')));}});},'Agents':function(_0x3d0d99){return new Promise(function(_0x3379f8){var _0x6029a3=_[_0x2516('0x25')](_0x25dce6['agents']);if(_0x3d0d99&&_0x3d0d99['id']){var _0x4eac04=_[_0x2516('0x22')](_0x6029a3,function(_0x598f4a){return _0x598f4a['id']===_0x3d0d99['id'];});_0x3379f8(_0x4eac04);}else{_0x3379f8({'count':_0x6029a3['length'],'rows':_0x6029a3});}});},'Telephones':function(){return new Promise(function(_0x12e768){var _0x3960b3=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x4e')]);_0x12e768({'count':_0x3960b3[_0x2516('0x27')],'rows':_0x3960b3});});},'Trunks':function(){return new Promise(function(_0x371c06){var _0x1808fa=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x4f')]);_0x371c06({'count':_0x1808fa['length'],'rows':_0x1808fa});});},'OutboundChannels':function(){return new Promise(function(_0xe966c8){var _0x2e1029=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x50')]);_0xe966c8({'count':_0x2e1029['length'],'rows':_0x2e1029});});},'Outbound':function(){return new Promise(function(_0x9df753){_0x9df753(_0x25dce6[_0x2516('0x42')]);});},'Campaigns':function(){return new Promise(function(_0x737c82){var _0x2cb00e=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x51')]);_0x737c82({'count':_0x2cb00e['length'],'rows':_0x2cb00e});});},'VoiceQueuesPreview':function(_0x373bbc){var _0x4f5123=this;return new Promise(function(_0x509c68,_0x377083){_0x3a7984[_0x2516('0x52')](_0x373bbc['id'])[_0x2516('0x1a')](function(_0x49a992){_0x509c68({'code':0xc8,'message':_0x49a992[_0x2516('0x1c')]});})[_0x2516('0x1b')](function(_0x121818){_0x377083(_0x4f5123[_0x2516('0xf')](0x1f4,_0x121818['message']));});});},'EventManager':function(_0xbb8074){var _0x186083=this;return new Promise(function(_0x371cdc,_0x1d1983){if(!_0xbb8074['event']){return _0x1d1983(_0x186083[_0x2516('0xf')](0x1f4,_0x2516('0x53')));}ami[_0x2516('0x54')]('custom:'+_0xbb8074[_0x2516('0x55')],_0xbb8074['message']);_0x371cdc({'code':0xc8,'message':_0xbb8074});});},'FaxAccounts':function(){return new Promise(function(_0x293e40){var _0x437a04=_[_0x2516('0x25')](_0x25dce6[_0x2516('0x56')]);_0x293e40({'count':_0x437a04[_0x2516('0x27')],'rows':_0x437a04});});},'SendFax':function(_0x502cbf){var _0x5f0806=this;return new Promise(function(_0x4d671b,_0x3d8389){_0x5b71b5[_0x2516('0x57')](_0x502cbf)['then'](function(_0x2a54ee){_0x4d671b({'code':0xc8,'message':_0x2a54ee[_0x2516('0x1c')]});})[_0x2516('0x1b')](function(_0x44a023){_0x3d8389(_0x5f0806[_0x2516('0xf')](0x1f4,_0x44a023[_0x2516('0x1c')]));});});},'CheckAfterSend':function(_0x493c5c){var _0x84db05=this;return new Promise(function(_0x13d4fb,_0x20270a){_0x5b71b5['checkAfterSend'](_0x493c5c)['then'](function(_0x52e6be){_0x13d4fb({'code':0xc8,'message':_0x52e6be[_0x2516('0x1c')]});})[_0x2516('0x1b')](function(_0x14d4db){_0x20270a(_0x84db05[_0x2516('0xf')](0x1f4,_0x14d4db['message']));});});}};var _0x4a2158=jayson['server'](_0x20a4a4)[_0x2516('0x58')]();_0x4a2158['on'](_0x2516('0xf'),function(_0x379aa8){return _0x5beeb3(_0x379aa8);});_0x4a2158[_0x2516('0x5')](0x232a,_0x2516('0x59'),function(){console[_0x2516('0x5a')](_0x2516('0x5b'),0x232a);return _0x48f411(_0x2516('0x5c')+0x232a);});});};
\ No newline at end of file
index 1b1b548..b6d84a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['xmd-contactid','ListId','data3','split','phone','$or','map','destcalleridnum','calleridnum','routeId','firstName','lastName','fax','scheduledAt','updatedAt','union','resolve','then','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','uniqueid','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','action','toLowerCase','merge','lodash','bluebird','ioredis','../../../../config/environment','../../rpc/cmContact','defaults','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','data5'];(function(_0x220a2a,_0x556762){var _0x2c9e88=function(_0x2b65b8){while(--_0x2b65b8){_0x220a2a['push'](_0x220a2a['shift']());}};_0x2c9e88(++_0x556762);}(_0xcbe1,0xd7));var _0x1cbe=function(_0x1ba697,_0x186781){_0x1ba697=_0x1ba697-0x0;var _0x433b23=_0xcbe1[_0x1ba697];return _0x433b23;};'use strict';var _=require(_0x1cbe('0x0'));var BPromise=require(_0x1cbe('0x1'));var Redis=require(_0x1cbe('0x2'));var util=require('util');var config=require(_0x1cbe('0x3'));var logger=require('../../../../config/logger')('trigger');var cmContactRpc=require(_0x1cbe('0x4'));config['redis']=_[_0x1cbe('0x5')](config[_0x1cbe('0x6')],{'host':_0x1cbe('0x7'),'port':0x18eb});var io=require(_0x1cbe('0x8'))(new Redis(config[_0x1cbe('0x6')]));function emit(_0x28c0d4,_0x1d5cc0,_0x221970,_0x470b48,_0x1e1037){logger[_0x1cbe('0x9')](_0x1cbe('0xa'),_0x28c0d4,_0x1d5cc0['id'],_0x221970,_0x470b48,JSON[_0x1cbe('0xb')](_0x1e1037));io['to'](_0x221970)[_0x1cbe('0xc')](_0x470b48,_0x1e1037);}exports[_0x1cbe('0xd')]=function(_0x3ce13d,_0x1382b8,_0x1d10e3,_0x3423e8){var _0x1faa4f,_0x404a1e;var _0x5d93db={};var _0x17d072;var _0x4deb2c=Number(_0x1d10e3[_0x1cbe('0xe')]);var _0xe2f5e0=_0x1d10e3[_0x1cbe('0xf')]?Boolean(Number(_0x1d10e3[_0x1cbe('0xf')])):![];var _0x72ab7;var _0x4b791c=![];if(!_['isNil'](_0x1d10e3[_0x1cbe('0x10')])){if(_0x1d10e3[_0x1cbe('0x10')]=='1')_0x4b791c=!![];}if(!_0x4b791c){if(_0x3423e8[_0x1cbe('0x11')]){_0x5d93db['id']=_0x3423e8[_0x1cbe('0x11')];}}if(!_0x5d93db['id']){_0x5d93db[_0x1cbe('0x12')]=_0x4deb2c;_0x72ab7=_0x1d10e3[_0x1cbe('0x13')]&&_0x1d10e3[_0x1cbe('0x13')]!=='0'?_0x1d10e3[_0x1cbe('0x13')][_0x1cbe('0x14')](','):[_0x1cbe('0x15')];_0x5d93db[_0x1cbe('0x16')]=_[_0x1cbe('0x17')](_0x72ab7,function(_0x34390f){var _0x34b00c={};_0x34b00c[_0x34390f]=_0x3423e8['routeId']?_0x3423e8[_0x1cbe('0x18')]:_0x3423e8[_0x1cbe('0x19')];return _0x34b00c;});_0x17d072=_0x3423e8[_0x1cbe('0x1a')]?_0x3423e8[_0x1cbe('0x18')]:_0x3423e8[_0x1cbe('0x19')];}var _0x359995=['id',_0x1cbe('0x1b'),_0x1cbe('0x1c'),_0x1cbe('0x15'),'mobile',_0x1cbe('0x1d'),'ListId','createdAt',_0x1cbe('0x1e'),_0x1cbe('0x1f')];var _0x28d8f4=_[_0x1cbe('0x20')](_0x359995,_0x72ab7);BPromise[_0x1cbe('0x21')]()[_0x1cbe('0x22')](cmContactRpc['getContacts']({'attributes':_0x28d8f4,'where':_0x5d93db,'phone':_0x17d072}))[_0x1cbe('0x22')](function(_0x399212){_0x404a1e=_0x399212;if(!_[_0x1cbe('0x23')](_0x404a1e)){if(_0x404a1e[_0x1cbe('0x24')]===0x1){_0x1faa4f=_0x404a1e[0x0];logger['info']('[CM][%s][%s]\x20Contact\x20found:%s',_0x3423e8['uniqueid'],_0x1382b8['id'],_0x1faa4f['id']);}else{logger['info'](_0x1cbe('0x25'),_0x3423e8['uniqueid'],_0x1382b8['id'],_[_0x1cbe('0x17')](_0x404a1e,'id')[_0x1cbe('0x26')](','));}return;}else{logger[_0x1cbe('0x9')](_0x1cbe('0x27'),_0x3423e8[_0x1cbe('0x28')],_0x1382b8['id']);var _0x1f93eb={'ListId':_0x4deb2c};var _0x1cd88e=_0x1d10e3[_0x1cbe('0x29')]&&_0x1d10e3['data4']!=='0'?_0x1d10e3['data4']:_0x1cbe('0x15');if(_0xe2f5e0){logger[_0x1cbe('0x9')](_0x1cbe('0x2a'),_0x3423e8[_0x1cbe('0x28')],_0x1382b8['id']);_0x1f93eb[_0x1cd88e]=_[_0x1cbe('0x2b')](_0x3423e8[_0x1cbe('0x1a')])?_0x3423e8[_0x1cbe('0x19')]:_0x3423e8['destcalleridnum'];if(_[_0x1cbe('0x2b')](_0x3423e8[_0x1cbe('0x1a')])){_0x1f93eb[_0x1cbe('0x1b')]=_0x3423e8[_0x1cbe('0x2c')]&&_0x3423e8[_0x1cbe('0x2c')]!==_0x1cbe('0x2d')?_0x3423e8[_0x1cbe('0x2c')]:_0x1cbe('0x2e');}else{_0x1f93eb['firstName']=_0x3423e8[_0x1cbe('0x2f')]&&_0x3423e8[_0x1cbe('0x2f')]!==_0x1cbe('0x2d')?_0x3423e8['destcalleridname']:_0x1cbe('0x2e');}return BPromise[_0x1cbe('0x21')]()[_0x1cbe('0x22')](cmContactRpc[_0x1cbe('0x30')](_0x1f93eb))['then'](function(_0x4553da){_0x1faa4f=_0x4553da;_0x404a1e[_0x1cbe('0x31')](_0x4553da);if(_0x1faa4f){logger[_0x1cbe('0x9')](_0x1cbe('0x32'),_0x3423e8['uniqueid'],_0x1382b8['id'],_0x1faa4f['id']);}return;});}else{logger['info'](_0x1cbe('0x33'),_0x3423e8[_0x1cbe('0x28')],_0x1382b8['id']);_0x1f93eb[_0x1cd88e]=_[_0x1cbe('0x2b')](_0x3423e8[_0x1cbe('0x1a')])?_0x3423e8[_0x1cbe('0x19')]:_0x3423e8[_0x1cbe('0x18')];if(_['isNil'](_0x3423e8[_0x1cbe('0x1a')])){_0x1f93eb['firstName']=_0x3423e8[_0x1cbe('0x2c')]&&_0x3423e8[_0x1cbe('0x2c')]!==_0x1cbe('0x2d')?_0x3423e8[_0x1cbe('0x2c')]:_0x1cbe('0x2e');}else{_0x1f93eb['firstName']=_0x3423e8[_0x1cbe('0x2f')]&&_0x3423e8['destcalleridname']!==_0x1cbe('0x2d')?_0x3423e8[_0x1cbe('0x2f')]:_0x1cbe('0x2e');}_0x1faa4f=_0x1f93eb;_0x404a1e[_0x1cbe('0x31')](_0x1f93eb);return;}}})['then'](function(){if(_0x3ce13d){emit(_0x3423e8[_0x1cbe('0x28')],_0x1382b8,util[_0x1cbe('0x34')](_0x1cbe('0x35'),_0x3ce13d[_0x1cbe('0x36')]),util[_0x1cbe('0x34')]('trigger:%s',_0x1d10e3[_0x1cbe('0x37')][_0x1cbe('0x38')]()),{'evt':_[_0x1cbe('0x39')](_0x3423e8,{'autoCreate':_0xe2f5e0}),'contact':_0x1faa4f===undefined?{}:_0x1faa4f,'contacts':_0x404a1e[_0x1cbe('0x24')]===0x0?undefined:_0x404a1e});}});};
\ No newline at end of file
+var _0x381e=['lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or','map','routeId','calleridnum','destcalleridnum','firstName','lastName','mobile','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','createContact','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','push','format','name','action'];(function(_0x3c22b3,_0x509f39){var _0x6969f7=function(_0x27beef){while(--_0x27beef){_0x3c22b3['push'](_0x3c22b3['shift']());}};_0x6969f7(++_0x509f39);}(_0x381e,0x18f));var _0xe381=function(_0x257677,_0x19bd75){_0x257677=_0x257677-0x0;var _0x23964c=_0x381e[_0x257677];return _0x23964c;};'use strict';var _=require(_0xe381('0x0'));var BPromise=require(_0xe381('0x1'));var Redis=require(_0xe381('0x2'));var util=require(_0xe381('0x3'));var config=require(_0xe381('0x4'));var logger=require(_0xe381('0x5'))(_0xe381('0x6'));var cmContactRpc=require(_0xe381('0x7'));config[_0xe381('0x8')]=_[_0xe381('0x9')](config[_0xe381('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0xe381('0xa'))(new Redis(config[_0xe381('0x8')]));function emit(_0x25995c,_0x225e1b,_0xfd2fc3,_0x5d03d0,_0x5108df){logger[_0xe381('0xb')](_0xe381('0xc'),_0x25995c,_0x225e1b['id'],_0xfd2fc3,_0x5d03d0,JSON['stringify'](_0x5108df));io['to'](_0xfd2fc3)[_0xe381('0xd')](_0x5d03d0,_0x5108df);}exports[_0xe381('0xe')]=function(_0x155546,_0x4df107,_0xcb3f0c,_0x3d0575){var _0x56ad01,_0xce7858;var _0x156964={};var _0x2a9994;var _0x4077d4=Number(_0xcb3f0c[_0xe381('0xf')]);var _0x2ea1e1=_0xcb3f0c['data2']?Boolean(Number(_0xcb3f0c[_0xe381('0x10')])):![];var _0x1924e3;var _0x49febc=![];if(!_[_0xe381('0x11')](_0xcb3f0c['data5'])){if(_0xcb3f0c[_0xe381('0x12')]=='1')_0x49febc=!![];}if(!_0x49febc){if(_0x3d0575['xmd-contactid']){_0x156964['id']=_0x3d0575[_0xe381('0x13')];}}if(!_0x156964['id']){_0x156964[_0xe381('0x14')]=_0x4077d4;_0x1924e3=_0xcb3f0c[_0xe381('0x15')]&&_0xcb3f0c[_0xe381('0x15')]!=='0'?_0xcb3f0c[_0xe381('0x15')]['split'](','):[_0xe381('0x16')];_0x156964[_0xe381('0x17')]=_[_0xe381('0x18')](_0x1924e3,function(_0x4041b6){var _0x2d3179={};_0x2d3179[_0x4041b6]=_0x3d0575[_0xe381('0x19')]?_0x3d0575['destcalleridnum']:_0x3d0575[_0xe381('0x1a')];return _0x2d3179;});_0x2a9994=_0x3d0575['routeId']?_0x3d0575[_0xe381('0x1b')]:_0x3d0575[_0xe381('0x1a')];}var _0x3b30e1=['id',_0xe381('0x1c'),_0xe381('0x1d'),'phone',_0xe381('0x1e'),'fax',_0xe381('0x14'),_0xe381('0x1f'),_0xe381('0x20'),_0xe381('0x21')];var _0x14039b=_[_0xe381('0x22')](_0x3b30e1,_0x1924e3);BPromise[_0xe381('0x23')]()[_0xe381('0x24')](cmContactRpc[_0xe381('0x25')]({'attributes':_0x14039b,'where':_0x156964,'phone':_0x2a9994}))[_0xe381('0x24')](function(_0x1ddec4){_0xce7858=_0x1ddec4;if(!_['isEmpty'](_0xce7858)){if(_0xce7858[_0xe381('0x26')]===0x1){_0x56ad01=_0xce7858[0x0];logger[_0xe381('0xb')](_0xe381('0x27'),_0x3d0575[_0xe381('0x28')],_0x4df107['id'],_0x56ad01['id']);}else{logger[_0xe381('0xb')](_0xe381('0x29'),_0x3d0575[_0xe381('0x28')],_0x4df107['id'],_['map'](_0xce7858,'id')[_0xe381('0x2a')](','));}return;}else{logger['info'](_0xe381('0x2b'),_0x3d0575[_0xe381('0x28')],_0x4df107['id']);var _0xec53ed={'ListId':_0x4077d4};var _0x13eff9=_0xcb3f0c['data4']&&_0xcb3f0c[_0xe381('0x2c')]!=='0'?_0xcb3f0c[_0xe381('0x2c')]:_0xe381('0x16');if(_0x2ea1e1){logger['info'](_0xe381('0x2d'),_0x3d0575['uniqueid'],_0x4df107['id']);_0xec53ed[_0x13eff9]=_[_0xe381('0x11')](_0x3d0575['routeId'])?_0x3d0575[_0xe381('0x1a')]:_0x3d0575[_0xe381('0x1b')];if(_[_0xe381('0x11')](_0x3d0575[_0xe381('0x19')])){_0xec53ed[_0xe381('0x1c')]=_0x3d0575[_0xe381('0x2e')]&&_0x3d0575[_0xe381('0x2e')]!==_0xe381('0x2f')?_0x3d0575[_0xe381('0x2e')]:_0xe381('0x30');}else{_0xec53ed[_0xe381('0x1c')]=_0x3d0575[_0xe381('0x31')]&&_0x3d0575[_0xe381('0x31')]!==_0xe381('0x2f')?_0x3d0575[_0xe381('0x31')]:_0xe381('0x30');}return BPromise[_0xe381('0x23')]()[_0xe381('0x24')](cmContactRpc[_0xe381('0x32')](_0xec53ed))[_0xe381('0x24')](function(_0x53d461){_0x56ad01=_0x53d461;_0xce7858['push'](_0x53d461);if(_0x56ad01){logger['info'](_0xe381('0x33'),_0x3d0575[_0xe381('0x28')],_0x4df107['id'],_0x56ad01['id']);}return;});}else{logger[_0xe381('0xb')](_0xe381('0x34'),_0x3d0575[_0xe381('0x28')],_0x4df107['id']);_0xec53ed[_0x13eff9]=_[_0xe381('0x11')](_0x3d0575[_0xe381('0x19')])?_0x3d0575[_0xe381('0x1a')]:_0x3d0575[_0xe381('0x1b')];if(_[_0xe381('0x11')](_0x3d0575['routeId'])){_0xec53ed[_0xe381('0x1c')]=_0x3d0575[_0xe381('0x2e')]&&_0x3d0575[_0xe381('0x2e')]!==_0xe381('0x2f')?_0x3d0575['calleridname']:_0xe381('0x30');}else{_0xec53ed[_0xe381('0x1c')]=_0x3d0575[_0xe381('0x31')]&&_0x3d0575[_0xe381('0x31')]!==_0xe381('0x2f')?_0x3d0575[_0xe381('0x31')]:_0xe381('0x30');}_0x56ad01=_0xec53ed;_0xce7858[_0xe381('0x35')](_0xec53ed);return;}}})[_0xe381('0x24')](function(){if(_0x155546){emit(_0x3d0575[_0xe381('0x28')],_0x4df107,util[_0xe381('0x36')]('user:%s',_0x155546[_0xe381('0x37')]),util[_0xe381('0x36')]('trigger:%s',_0xcb3f0c[_0xe381('0x38')]['toLowerCase']()),{'evt':_['merge'](_0x3d0575,{'autoCreate':_0x2ea1e1}),'contact':_0x56ad01===undefined?{}:_0x56ad01,'contacts':_0xce7858[_0xe381('0x26')]===0x0?undefined:_0xce7858});}});};
\ No newline at end of file
index 8bf15dc..f6b8a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6992=['voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:offlineMessage','prototype','emit','stringify','clone','motionChannel','voice','debug','inspect','checkTriggers','interface','status','merge','variables','Actions','motionbar','browser','data1','popup','TemplateId','html','data2','render','buildUri','isNil','data3','data4','location','uriLocation','data5','windowHeight','data6','600','winArguments','format','name','trigger:%s:%s','action','toLowerCase','jscripty','user:%s','trigger:%s','exec','queue','routeId','urlforward','script','parse','query','checkTrigger','channel','AllConditions','length','checkConditions','AnyConditions','some','checkTrigger:\x20trigger','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','mailSubstatus','null','substatus','undefined','offlineMessage','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/logger','trigger','../ami','defaults','redis','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates'];(function(_0x317f11,_0x8b2e1a){var _0x37a4cc=function(_0x4d40c4){while(--_0x4d40c4){_0x317f11['push'](_0x317f11['shift']());}};_0x37a4cc(++_0x8b2e1a);}(_0x6992,0x168));var _0x2699=function(_0x344944,_0x188205){_0x344944=_0x344944-0x0;var _0x6b4dac=_0x6992[_0x344944];return _0x6b4dac;};'use strict';var util=require(_0x2699('0x0'));var _=require(_0x2699('0x1'));var url=require(_0x2699('0x2'));var Mustache=require(_0x2699('0x3'));var Redis=require(_0x2699('0x4'));var urlforward=require(_0x2699('0x5'));var integration=require(_0x2699('0x6'));var cmContact=require(_0x2699('0x7'));var script=require(_0x2699('0x8'));var config=require('../../../config/environment');var logger=require(_0x2699('0x9'))(_0x2699('0xa'));var ami=require(_0x2699('0xb'));config['redis']=_[_0x2699('0xc')](config[_0x2699('0xd')],{'host':_0x2699('0xe'),'port':0x18eb});var io=require(_0x2699('0xf'))(new Redis(config[_0x2699('0xd')]));var operators={'equals':function(_0x35a673,_0x34e07e){return _0x35a673==_0x34e07e;},'not_equals':function(_0x3c6273,_0xbf93cb){return _0x3c6273!=_0xbf93cb;}};var barAndWebActions=['popup',_0x2699('0x2'),_0x2699('0x10')];function Trigger(_0x8529c0){this[_0x2699('0x11')]=_0x8529c0[_0x2699('0x11')];this[_0x2699('0x12')]=_0x8529c0[_0x2699('0x12')];this['voiceQueues']=_0x8529c0[_0x2699('0x13')];this[_0x2699('0x14')]=_0x8529c0[_0x2699('0x14')];this[_0x2699('0x15')]=_0x8529c0[_0x2699('0x15')];this[_0x2699('0x16')]=_0x8529c0[_0x2699('0x16')];this[_0x2699('0x17')]=_0x8529c0[_0x2699('0x17')];this[_0x2699('0x18')]=_0x8529c0['salesforceAccounts'];this[_0x2699('0x19')]=_0x8529c0[_0x2699('0x19')];this[_0x2699('0x1a')]=_0x8529c0[_0x2699('0x1a')];this[_0x2699('0x1b')]=_0x8529c0['deskAccounts'];this[_0x2699('0x1c')]=_0x8529c0[_0x2699('0x1c')];this[_0x2699('0x1d')]=_0x8529c0[_0x2699('0x1d')];this[_0x2699('0x1e')]=_0x8529c0[_0x2699('0x1e')];this[_0x2699('0x1f')]=_0x8529c0[_0x2699('0x1f')];this[_0x2699('0x20')]={'zendesk':this['zendeskAccounts'],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x2699('0x17')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this[_0x2699('0x1a')],'desk':this[_0x2699('0x1b')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x2699('0x1e')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x2699('0x1d')]};ami['on'](_0x2699('0x21'),this['syncCustomEvent'][_0x2699('0x22')](this));ami['on']('custom:agentconnect',this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x24'),this[_0x2699('0x23')]['bind'](this));ami['on'](_0x2699('0x25'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:agentnosuchnumber',this[_0x2699('0x23')]['bind'](this));ami['on'](_0x2699('0x26'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:agentbusy',this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x27'),this[_0x2699('0x23')]['bind'](this));ami['on'](_0x2699('0x28'),this['syncCustomEvent'][_0x2699('0x22')](this));ami['on'](_0x2699('0x29'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:queuecallerabandon',this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:timeout',this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:dialbegin',this[_0x2699('0x2a')][_0x2699('0x22')](this));ami['on']('custom:dialconnect',this['syncAgentDial'][_0x2699('0x22')](this));ami['on']('custom:dialend',this[_0x2699('0x2a')]['bind'](this));ami['on'](_0x2699('0x2b'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x2c'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x2d'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x2e'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x2f'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on'](_0x2699('0x30'),this[_0x2699('0x23')][_0x2699('0x22')](this));ami['on']('custom:rejectmessage',this[_0x2699('0x23')]['bind'](this));ami['on'](_0x2699('0x31'),this['syncCustomEvent'][_0x2699('0x22')](this));}Trigger[_0x2699('0x32')][_0x2699('0x33')]=function(_0x1b34ec,_0x3cb5c2,_0x5a0974){logger['info'](_0x1b34ec,_0x3cb5c2,JSON[_0x2699('0x34')](_0x5a0974));io['to'](_0x1b34ec)['emit'](_0x3cb5c2,_0x5a0974);};Trigger['prototype'][_0x2699('0x23')]=function(_0x3cf920){var _0x293617=_[_0x2699('0x35')](_0x3cf920);if(typeof _0x293617[_0x2699('0x36')]==='undefined'){_0x293617['motionChannel']=_0x2699('0x37');}logger[_0x2699('0x38')]('syncCustomEvent',util[_0x2699('0x39')](_0x293617,{'showHidden':!![],'depth':null}));this[_0x2699('0x3a')](_0x293617);};Trigger[_0x2699('0x32')][_0x2699('0x2a')]=function(_0x461d2d){if(this[_0x2699('0x12')][_0x461d2d[_0x2699('0x3b')]]){this[_0x2699('0x23')](_0x461d2d);}};Trigger[_0x2699('0x32')][_0x2699('0x3a')]=function(_0x3dcfe6){var _0x65b585;for(var _0x12ea0b in this[_0x2699('0x11')]){if(this[_0x2699('0x11')]['hasOwnProperty'](_0x12ea0b)){if(this[_0x2699('0x11')][_0x12ea0b][_0x2699('0x3c')]){_0x65b585=this['checkTrigger'](this[_0x2699('0x11')][_0x12ea0b],_0x3dcfe6);if(_0x65b585){_[_0x2699('0x3d')](_0x3dcfe6,_0x3dcfe6[_0x2699('0x3e')]);for(var _0x149c7c=0x0,_0x81721e,_0x14f781,_0x1cdb8d;_0x149c7c<this['triggers'][_0x12ea0b][_0x2699('0x3f')]['length'];_0x149c7c+=0x1){_0x81721e=this[_0x2699('0x11')][_0x12ea0b][_0x2699('0x3f')][_0x149c7c];if(this[_0x2699('0x12')][_0x3dcfe6[_0x2699('0x3b')]]){switch(_0x81721e['action']['toLowerCase']()){case'contactmanager':break;case _0x2699('0x40'):case _0x2699('0x41'):var _0x19b05e={};switch(barAndWebActions[_0x81721e[_0x2699('0x42')]]){case _0x2699('0x43'):_0x19b05e[_0x2699('0x44')]=_0x81721e['data2'];_0x19b05e[_0x2699('0x45')]=this[_0x2699('0x14')][_0x81721e[_0x2699('0x46')]]?Mustache[_0x2699('0x47')](this['templates'][_0x81721e[_0x2699('0x46')]][_0x2699('0x45')],_0x3dcfe6):'template\x20not\x20found';break;case'url':_0x19b05e['uri']=this[_0x2699('0x48')](_0x81721e[_0x2699('0x46')],_0x3dcfe6,_[_0x2699('0x49')](_0x81721e[_0x2699('0x4a')])?!![]:parseInt(_0x81721e['data3'],0xa));if(_[_0x2699('0x49')](_0x81721e[_0x2699('0x4b')])){_0x19b05e[_0x2699('0x4c')]='0';}else{_0x19b05e[_0x2699('0x4d')]=_0x81721e[_0x2699('0x4b')];_0x19b05e['windowWidth']=_[_0x2699('0x49')](_0x81721e['data5'])?'800':_0x81721e[_0x2699('0x4e')];_0x19b05e[_0x2699('0x4f')]=_[_0x2699('0x49')](_0x81721e[_0x2699('0x50')])?_0x2699('0x51'):_0x81721e[_0x2699('0x50')];}break;case _0x2699('0x10'):_0x19b05e['winApplication']=_0x81721e[_0x2699('0x46')]?Mustache[_0x2699('0x47')](_0x81721e['data2'],_0x3dcfe6):'';_0x19b05e[_0x2699('0x52')]=_0x81721e[_0x2699('0x4a')]?Mustache[_0x2699('0x47')](_0x81721e[_0x2699('0x4a')],_0x3dcfe6):'';break;}this[_0x2699('0x33')](util[_0x2699('0x53')]('user:%s',this['agents'][_0x3dcfe6[_0x2699('0x3b')]][_0x2699('0x54')]),util[_0x2699('0x53')](_0x2699('0x55'),_0x81721e[_0x2699('0x56')][_0x2699('0x57')](),barAndWebActions[_0x81721e[_0x2699('0x42')]]),_[_0x2699('0x3d')](_0x19b05e,_0x3dcfe6));break;case _0x2699('0x58'):this[_0x2699('0x33')](util[_0x2699('0x53')](_0x2699('0x59'),this[_0x2699('0x12')][_0x3dcfe6[_0x2699('0x3b')]][_0x2699('0x54')]),util['format'](_0x2699('0x5a'),_0x81721e[_0x2699('0x56')]['toLowerCase']()),_[_0x2699('0x3d')]({'ProjectId':parseInt(_0x81721e['data1'],0xa)},_0x3dcfe6));break;default:this[_0x2699('0x33')](util['format']('user:%s',this[_0x2699('0x12')][_0x3dcfe6['interface']][_0x2699('0x54')]),util[_0x2699('0x53')](_0x2699('0x5a'),_0x81721e['action'][_0x2699('0x57')]()),_[_0x2699('0x3d')]({},_0x81721e,_0x3dcfe6));}}switch(_0x81721e[_0x2699('0x56')][_0x2699('0x57')]()){case'contactmanager':cmContact[_0x2699('0x5b')](this[_0x2699('0x12')][_0x3dcfe6[_0x2699('0x3b')]],this[_0x2699('0x11')][_0x12ea0b],_0x81721e,_0x3dcfe6);break;case'integration':integration[_0x2699('0x5b')](_0x81721e,_0x3dcfe6,this[_0x2699('0x20')],this['agents'][_0x3dcfe6[_0x2699('0x3b')]],this['voiceQueues'][_0x3dcfe6[_0x2699('0x5c')]],this[_0x2699('0x15')][_0x3dcfe6[_0x2699('0x5d')]]);break;case _0x2699('0x5e'):urlforward['exec'](_0x81721e,_0x3dcfe6);break;case _0x2699('0x5f'):script[_0x2699('0x5b')](_0x81721e,_0x3dcfe6);break;}}}}}}};Trigger[_0x2699('0x32')]['buildUri']=function(_0xf8b3e7,_0x1790c6,_0x3cc7bd){var _0x149db1=url[_0x2699('0x60')](Mustache[_0x2699('0x47')](_0xf8b3e7,_0x1790c6),!![]);if(_0x3cc7bd){_[_0x2699('0x3d')](_0x149db1[_0x2699('0x61')],_0x1790c6);}delete _0x149db1['search'];var _0x3b5d8e=url[_0x2699('0x53')](_0x149db1);_0x3b5d8e=_0x3b5d8e['replace'](/\/\?/g,'?');return _0x3b5d8e;};Trigger[_0x2699('0x32')][_0x2699('0x62')]=function(_0x325bf1,_0x473991){var _0x44f56b=!![];var _0x1dd297=!![];var _0x49d6de=![];if(_0x325bf1[_0x2699('0x63')]===_0x473991[_0x2699('0x36')]){_0x49d6de=!![];}if(_0x325bf1[_0x2699('0x64')][_0x2699('0x65')]){_0x44f56b=_['every'](_0x325bf1[_0x2699('0x64')],this[_0x2699('0x66')](_0x473991,_0x325bf1[_0x2699('0x63')]));}if(_0x325bf1[_0x2699('0x67')]['length']){_0x1dd297=_[_0x2699('0x68')](_0x325bf1[_0x2699('0x67')],this[_0x2699('0x66')](_0x473991,_0x325bf1[_0x2699('0x63')]));}var _0x48693c=_0x49d6de&&_0x44f56b&&_0x1dd297;logger[_0x2699('0x38')](_0x2699('0x69'),util[_0x2699('0x39')](_0x325bf1,{'showHidden':!![],'depth':null}),'evt',util[_0x2699('0x39')](_0x473991,{'showHidden':!![],'depth':null}),_0x49d6de,_0x44f56b,_0x1dd297);return _0x48693c;};Trigger[_0x2699('0x32')][_0x2699('0x66')]=function(_0x5dfc1b,_0x5dca8c){return function(_0x93c477){switch(_0x93c477[_0x2699('0x6a')]){case _0x2699('0x6b'):if(_0x5dfc1b[_0x2699('0x63')]===_0x5dca8c){if(_0x5dca8c===_0x2699('0x6c')){return _0x5dfc1b[_0x2699('0x6d')]?operators[_0x93c477[_0x2699('0x6e')]](Number(_0x93c477[_0x2699('0x6f')]),_0x5dfc1b[_0x2699('0x6d')]):![];}else{return _0x5dfc1b[_[_0x2699('0x70')](_0x5dca8c)+'AccountId']?operators[_0x93c477[_0x2699('0x6e')]](Number(_0x93c477[_0x2699('0x6f')]),_0x5dfc1b[_[_0x2699('0x70')](_0x5dca8c)+_0x2699('0x71')]):![];}}break;case _0x2699('0x72'):case _0x2699('0x73'):if(_0x5dfc1b[_0x2699('0x63')]===_0x5dca8c){return _0x5dfc1b[_0x2699('0x74')]?operators[_0x93c477[_0x2699('0x6e')]](_0x93c477[_0x2699('0x6f')],_0x5dfc1b['event']):![];}break;case _0x2699('0x5c'):return _0x5dfc1b['queue']?operators[_0x93c477[_0x2699('0x6e')]](_0x93c477['value'],_0x5dfc1b['queue']):![];case _0x2699('0x75'):return _0x5dfc1b[_0x2699('0x76')]?operators[_0x93c477['operator']](_0x93c477[_0x2699('0x6f')],_0x5dfc1b[_0x2699('0x76')]):![];case _0x2699('0x77'):return _0x5dfc1b[_0x2699('0x77')]?operators[_0x93c477[_0x2699('0x6e')]](_0x93c477[_0x2699('0x6f')],_0x5dfc1b[_0x2699('0x77')]):![];case'routeId':return _0x5dfc1b['routeId']?operators[_0x93c477[_0x2699('0x6e')]](_0x93c477[_0x2699('0x6f')],_0x5dfc1b[_0x2699('0x5d')]):![];case _0x2699('0x78'):if(_0x93c477[_0x2699('0x6f')]===_0x2699('0x79'))_0x93c477[_0x2699('0x6f')]=null;return typeof _0x5dfc1b[_0x2699('0x7a')]!==_0x2699('0x7b')?operators[_0x93c477[_0x2699('0x6e')]](_0x93c477[_0x2699('0x6f')],_0x5dfc1b[_0x2699('0x7a')]):![];case _0x2699('0x7c'):if(_0x5dfc1b[_0x2699('0x63')]===_0x5dca8c){return _0x93c477[_0x2699('0x6f')]==='created'&&_0x93c477['operator']===_0x2699('0x7d')?!![]:![];}break;}return![];};};module[_0x2699('0x7e')]=Trigger;
\ No newline at end of file
+var _0x0e4b=['sugarcrmAccounts','freshsalesAccounts','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialend','custom:newinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','emit','info','stringify','prototype','motionChannel','debug','inspect','checkTriggers','interface','status','checkTrigger','merge','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','data6','winApplication','user:%s','name','trigger:%s:%s','jscripty','format','trigger:%s','integration','exec','queue','script','query','replace','channel','every','AllConditions','checkConditions','AnyConditions','some','checkTrigger:\x20trigger','evt','field','account','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','routeId','mailSubstatus','null','substatus','created','equals','exports','util','lodash','url','ioredis','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','accounts'];(function(_0x250730,_0x38ddb2){var _0x17cb39=function(_0x253c28){while(--_0x253c28){_0x250730['push'](_0x250730['shift']());}};_0x17cb39(++_0x38ddb2);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x484a04,_0x78d6f8){_0x484a04=_0x484a04-0x0;var _0x32aaa9=_0x0e4b[_0x484a04];return _0x32aaa9;};'use strict';var util=require(_0xb0e4('0x0'));var _=require(_0xb0e4('0x1'));var url=require(_0xb0e4('0x2'));var Mustache=require('mustache');var Redis=require(_0xb0e4('0x3'));var urlforward=require('./urlforward');var integration=require('./integration');var cmContact=require('./cmContact');var script=require('./script');var config=require(_0xb0e4('0x4'));var logger=require(_0xb0e4('0x5'))('trigger');var ami=require(_0xb0e4('0x6'));config[_0xb0e4('0x7')]=_[_0xb0e4('0x8')](config[_0xb0e4('0x7')],{'host':_0xb0e4('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var operators={'equals':function(_0x101860,_0x9d4a99){return _0x101860==_0x9d4a99;},'not_equals':function(_0x1d6452,_0x23555b){return _0x1d6452!=_0x23555b;}};var barAndWebActions=[_0xb0e4('0xa'),_0xb0e4('0x2'),_0xb0e4('0xb')];function Trigger(_0x232133){this[_0xb0e4('0xc')]=_0x232133[_0xb0e4('0xc')];this[_0xb0e4('0xd')]=_0x232133[_0xb0e4('0xd')];this[_0xb0e4('0xe')]=_0x232133[_0xb0e4('0xe')];this[_0xb0e4('0xf')]=_0x232133['templates'];this[_0xb0e4('0x10')]=_0x232133[_0xb0e4('0x10')];this['zendeskAccounts']=_0x232133[_0xb0e4('0x11')];this[_0xb0e4('0x12')]=_0x232133[_0xb0e4('0x12')];this[_0xb0e4('0x13')]=_0x232133[_0xb0e4('0x13')];this['sugarcrmAccounts']=_0x232133['sugarcrmAccounts'];this[_0xb0e4('0x14')]=_0x232133[_0xb0e4('0x14')];this['deskAccounts']=_0x232133[_0xb0e4('0x15')];this[_0xb0e4('0x16')]=_0x232133[_0xb0e4('0x16')];this[_0xb0e4('0x17')]=_0x232133[_0xb0e4('0x17')];this[_0xb0e4('0x18')]=_0x232133['dynamics365Accounts'];this['freshsalesAccounts']=_0x232133['freshsalesAccounts'];this[_0xb0e4('0x19')]={'zendesk':this[_0xb0e4('0x11')],'salesforce':this[_0xb0e4('0x13')],'freshdesk':this[_0xb0e4('0x12')],'sugarcrm':this[_0xb0e4('0x1a')],'zoho':this[_0xb0e4('0x14')],'desk':this['deskAccounts'],'vtiger':this[_0xb0e4('0x16')],'dynamics365':this[_0xb0e4('0x18')],'freshsales':this[_0xb0e4('0x1b')],'servicenow':this[_0xb0e4('0x17')]};ami['on']('custom:agentcalled',this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on']('custom:agentconnect',this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x1e'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on']('custom:agentcomplete',this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x1f'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x20'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on']('custom:agentbusy',this[_0xb0e4('0x1c')]['bind'](this));ami['on'](_0xb0e4('0x21'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x22'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x23'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x24'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x25'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on']('custom:dialbegin',this[_0xb0e4('0x26')][_0xb0e4('0x1d')](this));ami['on']('custom:dialconnect',this[_0xb0e4('0x26')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x27'),this[_0xb0e4('0x26')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x28'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on']('custom:closedinteraction',this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on']('custom:substatus',this[_0xb0e4('0x1c')]['bind'](this));ami['on'](_0xb0e4('0x29'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x2a'),this[_0xb0e4('0x1c')]['bind'](this));ami['on'](_0xb0e4('0x2b'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x2c'),this[_0xb0e4('0x1c')][_0xb0e4('0x1d')](this));ami['on'](_0xb0e4('0x2d'),this['syncCustomEvent'][_0xb0e4('0x1d')](this));}Trigger['prototype'][_0xb0e4('0x2e')]=function(_0x434630,_0x3a7e82,_0x5451f2){logger[_0xb0e4('0x2f')](_0x434630,_0x3a7e82,JSON[_0xb0e4('0x30')](_0x5451f2));io['to'](_0x434630)[_0xb0e4('0x2e')](_0x3a7e82,_0x5451f2);};Trigger[_0xb0e4('0x31')]['syncCustomEvent']=function(_0x4b6f58){var _0x4af7f6=_['clone'](_0x4b6f58);if(typeof _0x4af7f6[_0xb0e4('0x32')]==='undefined'){_0x4af7f6[_0xb0e4('0x32')]='voice';}logger[_0xb0e4('0x33')]('syncCustomEvent',util[_0xb0e4('0x34')](_0x4af7f6,{'showHidden':!![],'depth':null}));this[_0xb0e4('0x35')](_0x4af7f6);};Trigger[_0xb0e4('0x31')][_0xb0e4('0x26')]=function(_0x52c40f){if(this[_0xb0e4('0xd')][_0x52c40f[_0xb0e4('0x36')]]){this['syncCustomEvent'](_0x52c40f);}};Trigger[_0xb0e4('0x31')]['checkTriggers']=function(_0x455b7e){var _0x15d92c;for(var _0x4ab8fa in this[_0xb0e4('0xc')]){if(this['triggers']['hasOwnProperty'](_0x4ab8fa)){if(this['triggers'][_0x4ab8fa][_0xb0e4('0x37')]){_0x15d92c=this[_0xb0e4('0x38')](this['triggers'][_0x4ab8fa],_0x455b7e);if(_0x15d92c){_[_0xb0e4('0x39')](_0x455b7e,_0x455b7e['variables']);for(var _0x3a26ec=0x0,_0x10dbdc,_0x2a5c01,_0x3b8cb7;_0x3a26ec<this['triggers'][_0x4ab8fa][_0xb0e4('0x3a')][_0xb0e4('0x3b')];_0x3a26ec+=0x1){_0x10dbdc=this[_0xb0e4('0xc')][_0x4ab8fa][_0xb0e4('0x3a')][_0x3a26ec];if(this[_0xb0e4('0xd')][_0x455b7e[_0xb0e4('0x36')]]){switch(_0x10dbdc[_0xb0e4('0x3c')][_0xb0e4('0x3d')]()){case _0xb0e4('0x3e'):break;case _0xb0e4('0x3f'):case _0xb0e4('0x40'):var _0x26aebc={};switch(barAndWebActions[_0x10dbdc[_0xb0e4('0x41')]]){case _0xb0e4('0xa'):_0x26aebc[_0xb0e4('0x42')]=_0x10dbdc[_0xb0e4('0x43')];_0x26aebc['html']=this[_0xb0e4('0xf')][_0x10dbdc[_0xb0e4('0x43')]]?Mustache[_0xb0e4('0x44')](this[_0xb0e4('0xf')][_0x10dbdc['data2']][_0xb0e4('0x45')],_0x455b7e):_0xb0e4('0x46');break;case'url':_0x26aebc[_0xb0e4('0x47')]=this[_0xb0e4('0x48')](_0x10dbdc[_0xb0e4('0x43')],_0x455b7e,_[_0xb0e4('0x49')](_0x10dbdc['data3'])?!![]:parseInt(_0x10dbdc[_0xb0e4('0x4a')],0xa));if(_[_0xb0e4('0x49')](_0x10dbdc[_0xb0e4('0x4b')])){_0x26aebc[_0xb0e4('0x4c')]='0';}else{_0x26aebc[_0xb0e4('0x4d')]=_0x10dbdc[_0xb0e4('0x4b')];_0x26aebc[_0xb0e4('0x4e')]=_[_0xb0e4('0x49')](_0x10dbdc[_0xb0e4('0x4f')])?_0xb0e4('0x50'):_0x10dbdc[_0xb0e4('0x4f')];_0x26aebc['windowHeight']=_[_0xb0e4('0x49')](_0x10dbdc[_0xb0e4('0x51')])?'600':_0x10dbdc['data6'];}break;case'winapp':_0x26aebc[_0xb0e4('0x52')]=_0x10dbdc[_0xb0e4('0x43')]?Mustache['render'](_0x10dbdc['data2'],_0x455b7e):'';_0x26aebc['winArguments']=_0x10dbdc['data3']?Mustache['render'](_0x10dbdc['data3'],_0x455b7e):'';break;}this[_0xb0e4('0x2e')](util['format'](_0xb0e4('0x53'),this[_0xb0e4('0xd')][_0x455b7e[_0xb0e4('0x36')]][_0xb0e4('0x54')]),util['format'](_0xb0e4('0x55'),_0x10dbdc[_0xb0e4('0x3c')]['toLowerCase'](),barAndWebActions[_0x10dbdc[_0xb0e4('0x41')]]),_['merge'](_0x26aebc,_0x455b7e));break;case _0xb0e4('0x56'):this[_0xb0e4('0x2e')](util[_0xb0e4('0x57')](_0xb0e4('0x53'),this['agents'][_0x455b7e[_0xb0e4('0x36')]][_0xb0e4('0x54')]),util[_0xb0e4('0x57')](_0xb0e4('0x58'),_0x10dbdc['action'][_0xb0e4('0x3d')]()),_[_0xb0e4('0x39')]({'ProjectId':parseInt(_0x10dbdc[_0xb0e4('0x41')],0xa)},_0x455b7e));break;default:this['emit'](util['format']('user:%s',this['agents'][_0x455b7e['interface']][_0xb0e4('0x54')]),util['format'](_0xb0e4('0x58'),_0x10dbdc[_0xb0e4('0x3c')][_0xb0e4('0x3d')]()),_[_0xb0e4('0x39')]({},_0x10dbdc,_0x455b7e));}}switch(_0x10dbdc['action'][_0xb0e4('0x3d')]()){case _0xb0e4('0x3e'):cmContact['exec'](this[_0xb0e4('0xd')][_0x455b7e['interface']],this[_0xb0e4('0xc')][_0x4ab8fa],_0x10dbdc,_0x455b7e);break;case _0xb0e4('0x59'):integration[_0xb0e4('0x5a')](_0x10dbdc,_0x455b7e,this['accounts'],this[_0xb0e4('0xd')][_0x455b7e[_0xb0e4('0x36')]],this['voiceQueues'][_0x455b7e[_0xb0e4('0x5b')]],this[_0xb0e4('0x10')][_0x455b7e['routeId']]);break;case'urlforward':urlforward[_0xb0e4('0x5a')](_0x10dbdc,_0x455b7e);break;case _0xb0e4('0x5c'):script[_0xb0e4('0x5a')](_0x10dbdc,_0x455b7e);break;}}}}}}};Trigger['prototype'][_0xb0e4('0x48')]=function(_0xf318df,_0x55db3f,_0x313801){var _0x32d5b7=url['parse'](Mustache[_0xb0e4('0x44')](_0xf318df,_0x55db3f),!![]);if(_0x313801){_[_0xb0e4('0x39')](_0x32d5b7[_0xb0e4('0x5d')],_0x55db3f);}delete _0x32d5b7['search'];var _0x28e973=url[_0xb0e4('0x57')](_0x32d5b7);_0x28e973=_0x28e973[_0xb0e4('0x5e')](/\/\?/g,'?');return _0x28e973;};Trigger[_0xb0e4('0x31')]['checkTrigger']=function(_0x2995e7,_0x4ab061){var _0x1df06d=!![];var _0x33a5fc=!![];var _0x32c5c5=![];if(_0x2995e7[_0xb0e4('0x5f')]===_0x4ab061[_0xb0e4('0x32')]){_0x32c5c5=!![];}if(_0x2995e7['AllConditions']['length']){_0x1df06d=_[_0xb0e4('0x60')](_0x2995e7[_0xb0e4('0x61')],this[_0xb0e4('0x62')](_0x4ab061,_0x2995e7[_0xb0e4('0x5f')]));}if(_0x2995e7[_0xb0e4('0x63')][_0xb0e4('0x3b')]){_0x33a5fc=_[_0xb0e4('0x64')](_0x2995e7[_0xb0e4('0x63')],this[_0xb0e4('0x62')](_0x4ab061,_0x2995e7[_0xb0e4('0x5f')]));}var _0x115dc7=_0x32c5c5&&_0x1df06d&&_0x33a5fc;logger[_0xb0e4('0x33')](_0xb0e4('0x65'),util[_0xb0e4('0x34')](_0x2995e7,{'showHidden':!![],'depth':null}),_0xb0e4('0x66'),util[_0xb0e4('0x34')](_0x4ab061,{'showHidden':!![],'depth':null}),_0x32c5c5,_0x1df06d,_0x33a5fc);return _0x115dc7;};Trigger['prototype']['checkConditions']=function(_0x55868c,_0x1203a2){return function(_0x34ee55){switch(_0x34ee55[_0xb0e4('0x67')]){case _0xb0e4('0x68'):if(_0x55868c['channel']===_0x1203a2){if(_0x1203a2==='chat'){return _0x55868c[_0xb0e4('0x69')]?operators[_0x34ee55[_0xb0e4('0x6a')]](Number(_0x34ee55[_0xb0e4('0x6b')]),_0x55868c['ChatWebsiteId']):![];}else{return _0x55868c[_[_0xb0e4('0x6c')](_0x1203a2)+_0xb0e4('0x6d')]?operators[_0x34ee55['operator']](Number(_0x34ee55['value']),_0x55868c[_[_0xb0e4('0x6c')](_0x1203a2)+'AccountId']):![];}}break;case _0xb0e4('0x6e'):case _0xb0e4('0x6f'):if(_0x55868c[_0xb0e4('0x5f')]===_0x1203a2){return _0x55868c[_0xb0e4('0x70')]?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55[_0xb0e4('0x6b')],_0x55868c[_0xb0e4('0x70')]):![];}break;case _0xb0e4('0x5b'):return _0x55868c[_0xb0e4('0x5b')]?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55[_0xb0e4('0x6b')],_0x55868c['queue']):![];case _0xb0e4('0x71'):return _0x55868c[_0xb0e4('0x72')]?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55[_0xb0e4('0x6b')],_0x55868c[_0xb0e4('0x72')]):![];case _0xb0e4('0x73'):return _0x55868c[_0xb0e4('0x73')]?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55['value'],_0x55868c[_0xb0e4('0x73')]):![];case _0xb0e4('0x74'):return _0x55868c[_0xb0e4('0x74')]?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55[_0xb0e4('0x6b')],_0x55868c[_0xb0e4('0x74')]):![];case _0xb0e4('0x75'):if(_0x34ee55[_0xb0e4('0x6b')]===_0xb0e4('0x76'))_0x34ee55['value']=null;return typeof _0x55868c[_0xb0e4('0x77')]!=='undefined'?operators[_0x34ee55[_0xb0e4('0x6a')]](_0x34ee55['value'],_0x55868c['substatus']):![];case'offlineMessage':if(_0x55868c[_0xb0e4('0x5f')]===_0x1203a2){return _0x34ee55[_0xb0e4('0x6b')]===_0xb0e4('0x78')&&_0x34ee55[_0xb0e4('0x6a')]===_0xb0e4('0x79')?!![]:![];}break;}return![];};};module[_0xb0e4('0x7a')]=Trigger;
\ No newline at end of file
index 66e74bb..40a4fd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5fc3,0xa8));var _0x35fc=function(_0x57cb4f,_0x541f57){_0x57cb4f=_0x57cb4f-0x0;var _0x29bb45=_0x5fc3[_0x57cb4f];return _0x29bb45;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
+var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x326f,0xd1));var _0xf326=function(_0x2070bb,_0x2fdd05){_0x2070bb=_0x2070bb-0x0;var _0x1de960=_0x326f[_0x2070bb];return _0x1de960;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ No newline at end of file
index 1424e28..98bd662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b5b=['odata-entityid','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','data7','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','Error\x20running\x20Dynamics365\x20integration','util','./util','md5','ioredis','../../../../config/logger','../../../../config/environment','redis','defaults','localhost','remoteUri','CloudProvider','tenantId','data2','data5','POST','username','password','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','isNil','validateEmail','email','userEmail','length','internalemailaddress',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','toLowerCase','outbound','/systemusers(','4.0','body','headers','lastIndexOf','message','destcalleridnum','calleridnum','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','value','contactid','nothing','info',']\x20Enduser\x20created!','enduserId','forEach','picklist','type','nameField','customField','idField','substring','indexOf','ticketType','incident','incidents','assign','Subjects','getString','Descriptions','/contacts(','phonecall','callDirection','queue','phonecalls','Fields'];(function(_0x5dbfd4,_0x510f13){var _0x3c206f=function(_0x25d820){while(--_0x25d820){_0x5dbfd4['push'](_0x5dbfd4['shift']());}};_0x3c206f(++_0x510f13);}(_0x8b5b,0x1c8));var _0xb8b5=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x8b5b[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var rp=require('request-promise');var util=require(_0xb8b5('0x0'));var intUtil=require(_0xb8b5('0x1'));var md5=require(_0xb8b5('0x2'));var Redis=require(_0xb8b5('0x3'));var logger=require(_0xb8b5('0x4'))('dynamics365');var config=require(_0xb8b5('0x5'));config[_0xb8b5('0x6')]=_[_0xb8b5('0x7')](config[_0xb8b5('0x6')],{'host':_0xb8b5('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb8b5('0x6')]));function getAuthToken(_0x1f01bc,_0x29c1aa,_0x59624a){if(_0x1f01bc['modernAuthentication']){_0x1f01bc[_0xb8b5('0x9')]=_0x1f01bc[_0xb8b5('0xa')]['data7'];_0x1f01bc[_0xb8b5('0xb')]=_0x1f01bc[_0xb8b5('0xa')][_0xb8b5('0xc')];return Promise['resolve'](_0x1f01bc['CloudProvider'][_0xb8b5('0xd')]);}var _0x3f866b={'method':_0xb8b5('0xe'),'uri':_0x29c1aa,'form':{'client_id':_0x1f01bc['clientId'],'resource':_0x1f01bc[_0xb8b5('0x9')],'username':_0x1f01bc[_0xb8b5('0xf')],'password':_0x1f01bc['password'],'grant_type':_0xb8b5('0x10'),'client_secret':_0x1f01bc['clientSecret']},'json':!![]};return rp(_0x3f866b)['then'](function(_0x410247){return _0x410247[_0xb8b5('0x11')];})[_0xb8b5('0x12')](function(_0x4ffaf4){logger[_0xb8b5('0x13')]('['+[_0x59624a[_0xb8b5('0x14')]()]+_0xb8b5('0x15'));return _0x4ffaf4['message'];});}function getUser(_0x1f43b4,_0x2003a7,_0x5a441f,_0x33bf21,_0x2939f0,_0x5e6e75){return new Promise(function(_0x461bee,_0x17fd0e){return getAuthToken(_0x2003a7,_0x33bf21,_0x5e6e75)[_0xb8b5('0x16')](function(_0xb1cbff){var _0x3e4788={'method':_0xb8b5('0x17'),'uri':_0x2939f0+_0xb8b5('0x18'),'headers':{'Authorization':_0xb8b5('0x19')+_0xb1cbff,'OData-Version':'4.0'},'json':!![]};return rp(_0x3e4788);})['then'](function(_0x231996){var _0x529415=_0x231996['value'];var _0x7619fc=![];var _0x35c6e0=null;if(!_[_0xb8b5('0x1a')](_0x5a441f)){if(intUtil[_0xb8b5('0x1b')](_0x5a441f[_0xb8b5('0x1c')])){_0x1f43b4[_0xb8b5('0x1d')]=_0x5a441f['email'];for(_0x35c6e0=0x0;_0x35c6e0<_0x529415[_0xb8b5('0x1e')];_0x35c6e0++){if(_0x529415[_0x35c6e0][_0xb8b5('0x1f')]===_0x5a441f['email']&&!_0x529415[_0x35c6e0]['isdisabled']){_0x7619fc=!![];logger['info']('['+[_0x5e6e75['toUpperCase']()]+_0xb8b5('0x20')+_0x529415[_0x35c6e0][_0xb8b5('0x21')]+'!');_0x1f43b4[_0xb8b5('0x22')]=_0x529415[_0x35c6e0][_0xb8b5('0x21')];}}}}if(!_0x7619fc){logger['info']('['+[_0x5e6e75[_0xb8b5('0x14')]()]+_0xb8b5('0x23'));_0x1f43b4[_0xb8b5('0x1d')]=_0x2003a7[_0xb8b5('0xf')];for(_0x35c6e0=0x0;_0x35c6e0<_0x529415[_0xb8b5('0x1e')];_0x35c6e0++){if(_0x529415[_0x35c6e0][_0xb8b5('0x1f')]===_0x2003a7[_0xb8b5('0xf')]){_0x1f43b4[_0xb8b5('0x22')]=_0x529415[_0x35c6e0]['systemuserid'];}}}_0x461bee(_0x1f43b4);})[_0xb8b5('0x12')](function(_0x504b04){_0x17fd0e(_0x504b04['message']);});});}function createEndUser(_0x26d310,_0x5a1694,_0x3a0765,_0x5024d6,_0x2a8aee,_0x3a746a,_0x1e8cc1){return new Promise(function(_0x3cb2f4,_0xc023da){return getAuthToken(_0x5a1694,_0x3a0765,_0x3a746a)[_0xb8b5('0x16')](function(_0x1d41b6){var _0x21fb2=_0x3a746a[_0xb8b5('0x24')]()===_0xb8b5('0x25')?_0x2a8aee['destcalleridnum']:_0x2a8aee['calleridnum'];var _0x2ef04b={'method':_0xb8b5('0xe'),'uri':_0x5024d6+'contacts','body':{'fullname':_0x21fb2,'firstname':_0x21fb2,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xb8b5('0x26')+_0x26d310['userId']+')'},'headers':{'Authorization':_0xb8b5('0x19')+_0x1d41b6,'OData-Version':_0xb8b5('0x27')},'json':!![],'resolveWithFullResponse':!![]};_0x2ef04b[_0xb8b5('0x28')][_0x1e8cc1]=_0x21fb2;return rp(_0x2ef04b);})[_0xb8b5('0x16')](function(_0x28a5ac){var _0x11ee05=_0x28a5ac[_0xb8b5('0x29')]['odata-entityid'];var _0x57e7ea=_0x11ee05['substring'](_0x11ee05[_0xb8b5('0x2a')]('(')+0x1,_0x11ee05[_0xb8b5('0x2a')](')'));_0x26d310['enduserId']=_0x57e7ea;_0x3cb2f4(_0x26d310);})['catch'](function(_0x360bdc){_0xc023da(_0x360bdc[_0xb8b5('0x2b')]);});});}function getEndUser(_0x56b98e,_0x354d8f,_0x21f770,_0x100a89,_0x194996,_0x3f10fd,_0x203141,_0x504e8d){var _0x39c051=_0x3f10fd['toLowerCase']()===_0xb8b5('0x25')?_0x194996[_0xb8b5('0x2c')]:_0x194996[_0xb8b5('0x2d')];return getAuthToken(_0x354d8f,_0x21f770,_0x3f10fd)[_0xb8b5('0x16')](function(_0x43563b){_0x504e8d=_0x504e8d?_0x504e8d:_0xb8b5('0x2e');var _0x41c44b={'method':_0xb8b5('0x17'),'uri':_0x100a89+_0xb8b5('0x2f')+_0x504e8d+_0xb8b5('0x30')+_0x504e8d+_0xb8b5('0x31')+_0x39c051[_0xb8b5('0x32')]('+',_0xb8b5('0x33'))+'\x27','headers':{'Authorization':_0xb8b5('0x19')+_0x43563b,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x41c44b);})['then'](function(_0x4f3261){var _0x46d30c=![];if(!_0x4f3261)return _0x46d30c;var _0x41dcb=_0x4f3261[_0xb8b5('0x34')];for(var _0x250d77=0x0;_0x250d77<_0x41dcb[_0xb8b5('0x1e')];_0x250d77++){if(_0x41dcb[_0x250d77][_0x504e8d]===_0x39c051){_0x46d30c=!![];_0x56b98e['enduserId']=_0x41dcb[_0x250d77][_0xb8b5('0x35')];}}return _0x46d30c;})[_0xb8b5('0x16')](function(_0x309342){if(_0x309342)return _0x56b98e;if(_0x203141===_0xb8b5('0x36')){logger[_0xb8b5('0x37')]('['+[_0x3f10fd[_0xb8b5('0x14')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x56b98e;}return createEndUser(_0x56b98e,_0x354d8f,_0x21f770,_0x100a89,_0x194996,_0x3f10fd,_0x504e8d)['then'](function(_0x4b1168){logger[_0xb8b5('0x37')]('['+[_0x3f10fd[_0xb8b5('0x14')]()]+_0xb8b5('0x38'),_0x4b1168[_0xb8b5('0x39')]);return _0x4b1168;});});}function getCustomFields(_0x846fa6,_0x1a91b8,_0x5844b1){var _0x129f97={};if(_0x846fa6[_0xb8b5('0x1e')]>0x0){_[_0xb8b5('0x3a')](_0x846fa6,function(_0x2f72f7){if(_['includes'](['string',_0xb8b5('0x3b')],_0x2f72f7[_0xb8b5('0x3c')])&&_0x2f72f7[_0xb8b5('0x3d')]&&!_0x2f72f7[_0xb8b5('0x3e')]){var _0x598e9e=_0x2f72f7[_0xb8b5('0x3f')][_0xb8b5('0x24')]();var _0x46a85a=_0x598e9e[_0xb8b5('0x40')](0x0,_0x598e9e[_0xb8b5('0x41')]('_'));var _0x100cf3=_0x598e9e[_0xb8b5('0x40')](_0x598e9e['indexOf']('_')+0x1);if(_0x46a85a===_0x5844b1){_0x129f97[_0x100cf3]=_0x2f72f7['content'];}}});}return _0x129f97;}function getTicket(_0x62838a,_0x25e06c,_0x8218e9,_0x15f681,_0x518d9e,_0x15d065,_0x1e9f0a){return new Promise(function(_0x553c0b,_0x21d78e){var _0x164a24;return getAuthToken(_0x25e06c,_0x8218e9,_0x1e9f0a)[_0xb8b5('0x16')](function(_0x225433){if(_0x15d065[_0xb8b5('0x42')]===_0xb8b5('0x43')){_0x164a24={'method':_0xb8b5('0xe'),'uri':_0x15f681+_0xb8b5('0x44'),'body':Object[_0xb8b5('0x45')]({},{'title':intUtil['getString'](_0x15d065[_0xb8b5('0x46')],_0x518d9e,'\x20'),'description':intUtil[_0xb8b5('0x47')](_0x15d065[_0xb8b5('0x48')],_0x518d9e,'\x0a'),'customerid_contact@odata.bind':_0x62838a[_0xb8b5('0x39')]?_0xb8b5('0x49')+_0x62838a[_0xb8b5('0x39')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x62838a['userId']+')','caseorigincode':'1'},getCustomFields(_0x15d065['Fields'],_0x518d9e,_0x15d065[_0xb8b5('0x42')])),'headers':{'Authorization':'Bearer\x20'+_0x225433,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x15d065[_0xb8b5('0x42')]===_0xb8b5('0x4a')){var _0xe6fbe8=_0x62838a[_0xb8b5('0x39')]?[{'partyid_systemuser@odata.bind':_0xb8b5('0x26')+_0x62838a[_0xb8b5('0x22')]+')','participationtypemask':_0x62838a[_0xb8b5('0x4b')]===_0xb8b5('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x62838a[_0xb8b5('0x39')]+')','participationtypemask':_0x62838a[_0xb8b5('0x4b')]===_0xb8b5('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x62838a['userId']+')','participationtypemask':_0x62838a[_0xb8b5('0x4b')]===_0xb8b5('0x4c')?0x2:0x1}];_0x164a24={'method':_0xb8b5('0xe'),'uri':_0x15f681+_0xb8b5('0x4d'),'body':Object['assign']({},{'subject':intUtil[_0xb8b5('0x47')](_0x15d065[_0xb8b5('0x46')],_0x518d9e,'\x20'),'phonenumber':String(_0x518d9e[_0xb8b5('0x2d')]),'description':intUtil[_0xb8b5('0x47')](_0x15d065[_0xb8b5('0x48')],_0x518d9e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x62838a[_0xb8b5('0x39')]?_0xb8b5('0x49')+_0x62838a[_0xb8b5('0x39')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x62838a[_0xb8b5('0x22')]+')','directioncode':_0x62838a[_0xb8b5('0x4b')]===_0xb8b5('0x4c')?![]:!![],'phonecall_activity_parties':_0xe6fbe8},getCustomFields(_0x15d065[_0xb8b5('0x4e')],_0x518d9e,_0x15d065[_0xb8b5('0x42')])),'headers':{'Authorization':_0xb8b5('0x19')+_0x225433,'OData-Version':_0xb8b5('0x27')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x164a24);})[_0xb8b5('0x16')](function(_0x37058d){var _0x3a3b76=_0x37058d[_0xb8b5('0x29')][_0xb8b5('0x4f')];var _0x1715ba=_0x3a3b76[_0xb8b5('0x40')](_0x3a3b76[_0xb8b5('0x2a')]('(')+0x1,_0x3a3b76[_0xb8b5('0x2a')](')'));_0x62838a[_0xb8b5('0x50')]=_0x1715ba;_0x553c0b(_0x62838a);})[_0xb8b5('0x12')](function(_0x4f82d8){_0x21d78e(_0x4f82d8[_0xb8b5('0x2b')]);});});}function emit(_0x234cdd,_0x12c81f,_0x126084,_0x41e207){var _0x237483={'uri':util['format'](_0xb8b5('0x51'),_0x234cdd,_0x126084,_0x41e207)};io['to'](util[_0xb8b5('0x52')](_0xb8b5('0x53'),_0x12c81f))[_0xb8b5('0x54')](_0xb8b5('0x55'),_0x237483);}exports['cs']=function(_0x2eeaa4,_0x26f46b,_0x249290,_0x3abdc6,_0x5a7a2b,_0x3016ed,_0x310f37,_0x4dbb2a){var _0x198edc={};_0x3016ed[_0xb8b5('0x9')]=_0x3016ed[_0xb8b5('0x56')]?intUtil[_0xb8b5('0x57')](_0x3016ed['CloudProvider'][_0xb8b5('0x58')]):intUtil[_0xb8b5('0x57')](_0x3016ed[_0xb8b5('0x9')]);_0x3016ed[_0xb8b5('0x59')]=intUtil[_0xb8b5('0x57')](_0x3016ed['serverUrl']);_0x198edc[_0xb8b5('0x4b')]=_0x4dbb2a===_0xb8b5('0x4c')||_0x4dbb2a===_0xb8b5('0x5a')?_0xb8b5('0x4c'):'outbound';var _0x23c513=_0x3016ed[_0xb8b5('0x56')]?util['format']('%s/api/data/v9.0/',_0x3016ed[_0xb8b5('0xa')][_0xb8b5('0x58')]):util[_0xb8b5('0x52')](_0xb8b5('0x5b'),_0x3016ed[_0xb8b5('0x9')]);var _0x563c84=util[_0xb8b5('0x52')]('https://login.microsoftonline.com/%s/oauth2/token',_0x3016ed[_0xb8b5('0xb')]);var _0x101992=util[_0xb8b5('0x52')](_0xb8b5('0x5c'),_0x3016ed['serverUrl'],_0x26f46b['uniqueid'],md5(_0x26f46b['uniqueid']));if(_0x5a7a2b&&_0x5a7a2b[_0xb8b5('0x5d')]){logger[_0xb8b5('0x37')]('[QUEUE]',_0xb8b5('0x5e'));_0x26f46b[_0xb8b5('0x5f')]=_0x101992;}else if(_0x310f37&&_0x310f37[_0xb8b5('0x60')]&&_0x310f37[_0xb8b5('0x60')]!=='none'){logger['info'](_0xb8b5('0x61'),_0xb8b5('0x5e'));_0x26f46b[_0xb8b5('0x5f')]=_0x101992;}else{_0x26f46b[_0xb8b5('0x5f')]='';}return getUser(_0x198edc,_0x3016ed,_0x3abdc6,_0x563c84,_0x23c513,_0x4dbb2a)['then'](function(_0x1f2b9c){logger[_0xb8b5('0x37')]('['+_0x4dbb2a['toUpperCase']()+_0xb8b5('0x62'),_0x1f2b9c['userId']);logger[_0xb8b5('0x37')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+_0xb8b5('0x63'),_0x1f2b9c[_0xb8b5('0x1d')]);return getEndUser(_0x1f2b9c,_0x3016ed,_0x563c84,_0x23c513,_0x26f46b,_0x4dbb2a,_0x249290[_0xb8b5('0x64')],_0x249290[_0xb8b5('0x65')]);})[_0xb8b5('0x16')](function(_0xe585dd){logger[_0xb8b5('0x37')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+']\x20The\x20Enduser\x20ID\x20is:',_0xe585dd['enduserId']);logger[_0xb8b5('0x37')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+_0xb8b5('0x66'),_0x26f46b[_0xb8b5('0x2d')]);return getTicket(_0xe585dd,_0x3016ed,_0x563c84,_0x23c513,_0x26f46b,_0x249290,_0x4dbb2a);})['then'](function(_0x1b22ae){logger[_0xb8b5('0x37')](util[_0xb8b5('0x52')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+_0xb8b5('0x67'),_0x249290[_0xb8b5('0x42')],_0x1b22ae[_0xb8b5('0x50')]));logger['info'](util['format']('['+_0x4dbb2a['toUpperCase']()+']\x20Call\x20direction:\x20%s',_0x4dbb2a));if(_0x4dbb2a!==_0xb8b5('0x5a')&&_0x249290['openNewTab']){logger[_0xb8b5('0x37')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+']',_0xb8b5('0x68'));emit(_0x3016ed[_0xb8b5('0x9')],_0x3abdc6[_0xb8b5('0x69')],_0x249290[_0xb8b5('0x42')],_0x1b22ae[_0xb8b5('0x50')]);}})['catch'](function(_0x5c718d){logger[_0xb8b5('0x13')]('['+_0x4dbb2a[_0xb8b5('0x14')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x5c718d[_0xb8b5('0x2b')]);console[_0xb8b5('0x13')](_0xb8b5('0x6a'),_0x5c718d);});};
\ No newline at end of file
+var _0xfcc5=['isdisabled','info',']\x20Agent\x20found\x20','systemuserid','username','internalemailaddress','userId','toLowerCase','outbound','destcalleridnum','calleridnum','POST','body','headers','odata-entityid','substring','lastIndexOf','enduserId','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','picklist','type','nameField','customField','idField','indexOf','content','ticketType','incident','getString','Descriptions','/systemusers(','Fields','callDirection','queue','/contacts(','phonecalls','assign','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','ticketId',']\x20Call\x20direction:\x20%s','openNewTab',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','ioredis','dynamics365','redis','defaults','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','CloudProvider','data2','resolve','data5','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length'];(function(_0x5337cd,_0x544b4b){var _0x3ce044=function(_0x30d55f){while(--_0x30d55f){_0x5337cd['push'](_0x5337cd['shift']());}};_0x3ce044(++_0x544b4b);}(_0xfcc5,0xb7));var _0x5fcc=function(_0x2621e1,_0x1297df){_0x2621e1=_0x2621e1-0x0;var _0x4b294b=_0xfcc5[_0x2621e1];return _0x4b294b;};'use strict';var _=require('lodash');var rp=require(_0x5fcc('0x0'));var util=require(_0x5fcc('0x1'));var intUtil=require(_0x5fcc('0x2'));var md5=require('md5');var Redis=require(_0x5fcc('0x3'));var logger=require('../../../../config/logger')(_0x5fcc('0x4'));var config=require('../../../../config/environment');config[_0x5fcc('0x5')]=_[_0x5fcc('0x6')](config[_0x5fcc('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x5fcc('0x7'))(new Redis(config[_0x5fcc('0x5')]));function getAuthToken(_0x526f7c,_0xd982fe,_0x44b3ed){if(_0x526f7c[_0x5fcc('0x8')]){_0x526f7c[_0x5fcc('0x9')]=_0x526f7c['CloudProvider'][_0x5fcc('0xa')];_0x526f7c[_0x5fcc('0xb')]=_0x526f7c[_0x5fcc('0xc')][_0x5fcc('0xd')];return Promise[_0x5fcc('0xe')](_0x526f7c[_0x5fcc('0xc')][_0x5fcc('0xf')]);}var _0x1c8991={'method':'POST','uri':_0xd982fe,'form':{'client_id':_0x526f7c['clientId'],'resource':_0x526f7c[_0x5fcc('0x9')],'username':_0x526f7c['username'],'password':_0x526f7c[_0x5fcc('0x10')],'grant_type':_0x5fcc('0x10'),'client_secret':_0x526f7c[_0x5fcc('0x11')]},'json':!![]};return rp(_0x1c8991)['then'](function(_0x266f19){return _0x266f19[_0x5fcc('0x12')];})[_0x5fcc('0x13')](function(_0x2dfdfe){logger[_0x5fcc('0x14')]('['+[_0x44b3ed[_0x5fcc('0x15')]()]+_0x5fcc('0x16'));return _0x2dfdfe[_0x5fcc('0x17')];});}function getUser(_0x89d915,_0x3dabb4,_0x14bf33,_0x47f0d5,_0x4ba0d4,_0x4668a1){return new Promise(function(_0x2006d7,_0x116e75){return getAuthToken(_0x3dabb4,_0x47f0d5,_0x4668a1)[_0x5fcc('0x18')](function(_0x1e90dc){var _0x47af1e={'method':_0x5fcc('0x19'),'uri':_0x4ba0d4+_0x5fcc('0x1a'),'headers':{'Authorization':_0x5fcc('0x1b')+_0x1e90dc,'OData-Version':_0x5fcc('0x1c')},'json':!![]};return rp(_0x47af1e);})[_0x5fcc('0x18')](function(_0x46f827){var _0x2a69a6=_0x46f827[_0x5fcc('0x1d')];var _0x4b04f6=![];var _0xddaefc=null;if(!_[_0x5fcc('0x1e')](_0x14bf33)){if(intUtil[_0x5fcc('0x1f')](_0x14bf33[_0x5fcc('0x20')])){_0x89d915[_0x5fcc('0x21')]=_0x14bf33[_0x5fcc('0x20')];for(_0xddaefc=0x0;_0xddaefc<_0x2a69a6[_0x5fcc('0x22')];_0xddaefc++){if(_0x2a69a6[_0xddaefc]['internalemailaddress']===_0x14bf33['email']&&!_0x2a69a6[_0xddaefc][_0x5fcc('0x23')]){_0x4b04f6=!![];logger[_0x5fcc('0x24')]('['+[_0x4668a1[_0x5fcc('0x15')]()]+_0x5fcc('0x25')+_0x2a69a6[_0xddaefc][_0x5fcc('0x26')]+'!');_0x89d915['userId']=_0x2a69a6[_0xddaefc][_0x5fcc('0x26')];}}}}if(!_0x4b04f6){logger[_0x5fcc('0x24')]('['+[_0x4668a1[_0x5fcc('0x15')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x89d915[_0x5fcc('0x21')]=_0x3dabb4[_0x5fcc('0x27')];for(_0xddaefc=0x0;_0xddaefc<_0x2a69a6[_0x5fcc('0x22')];_0xddaefc++){if(_0x2a69a6[_0xddaefc][_0x5fcc('0x28')]===_0x3dabb4[_0x5fcc('0x27')]){_0x89d915[_0x5fcc('0x29')]=_0x2a69a6[_0xddaefc][_0x5fcc('0x26')];}}}_0x2006d7(_0x89d915);})[_0x5fcc('0x13')](function(_0x495a50){_0x116e75(_0x495a50[_0x5fcc('0x17')]);});});}function createEndUser(_0x3e38d5,_0x317848,_0x4d7bf6,_0x2a96be,_0x11d825,_0x5a52fc,_0x1d98fe){return new Promise(function(_0x2761f3,_0x22e1bb){return getAuthToken(_0x317848,_0x4d7bf6,_0x5a52fc)['then'](function(_0x3686e9){var _0x31f29b=_0x5a52fc[_0x5fcc('0x2a')]()===_0x5fcc('0x2b')?_0x11d825[_0x5fcc('0x2c')]:_0x11d825[_0x5fcc('0x2d')];var _0x4826ff={'method':_0x5fcc('0x2e'),'uri':_0x2a96be+'contacts','body':{'fullname':_0x31f29b,'firstname':_0x31f29b,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x3e38d5[_0x5fcc('0x29')]+')'},'headers':{'Authorization':_0x5fcc('0x1b')+_0x3686e9,'OData-Version':_0x5fcc('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x4826ff[_0x5fcc('0x2f')][_0x1d98fe]=_0x31f29b;return rp(_0x4826ff);})[_0x5fcc('0x18')](function(_0x3e13d2){var _0x588757=_0x3e13d2[_0x5fcc('0x30')][_0x5fcc('0x31')];var _0xa0b011=_0x588757[_0x5fcc('0x32')](_0x588757[_0x5fcc('0x33')]('(')+0x1,_0x588757[_0x5fcc('0x33')](')'));_0x3e38d5[_0x5fcc('0x34')]=_0xa0b011;_0x2761f3(_0x3e38d5);})['catch'](function(_0x391d14){_0x22e1bb(_0x391d14[_0x5fcc('0x17')]);});});}function getEndUser(_0x28503d,_0xfb4e3e,_0x55e9ef,_0x427d06,_0x42b1ca,_0x14b2e9,_0x117c9e,_0x3fdf87){var _0x3d6465=_0x14b2e9['toLowerCase']()===_0x5fcc('0x2b')?_0x42b1ca['destcalleridnum']:_0x42b1ca[_0x5fcc('0x2d')];return getAuthToken(_0xfb4e3e,_0x55e9ef,_0x14b2e9)[_0x5fcc('0x18')](function(_0x580157){_0x3fdf87=_0x3fdf87?_0x3fdf87:'telephone1';var _0x546c6f={'method':_0x5fcc('0x19'),'uri':_0x427d06+_0x5fcc('0x35')+_0x3fdf87+_0x5fcc('0x36')+_0x3fdf87+_0x5fcc('0x37')+_0x3d6465[_0x5fcc('0x38')]('+','%2b')+'\x27','headers':{'Authorization':_0x5fcc('0x1b')+_0x580157,'If-None-Match':null,'OData-Version':_0x5fcc('0x1c')},'json':!![]};return rp(_0x546c6f);})['then'](function(_0x5460e3){var _0x14fdba=![];if(!_0x5460e3)return _0x14fdba;var _0x209c97=_0x5460e3['value'];for(var _0x10e3aa=0x0;_0x10e3aa<_0x209c97['length'];_0x10e3aa++){if(_0x209c97[_0x10e3aa][_0x3fdf87]===_0x3d6465){_0x14fdba=!![];_0x28503d[_0x5fcc('0x34')]=_0x209c97[_0x10e3aa]['contactid'];}}return _0x14fdba;})['then'](function(_0x5c1339){if(_0x5c1339)return _0x28503d;if(_0x117c9e===_0x5fcc('0x39')){logger[_0x5fcc('0x24')]('['+[_0x14b2e9['toUpperCase']()]+_0x5fcc('0x3a'));return _0x28503d;}return createEndUser(_0x28503d,_0xfb4e3e,_0x55e9ef,_0x427d06,_0x42b1ca,_0x14b2e9,_0x3fdf87)['then'](function(_0x25f0f8){logger[_0x5fcc('0x24')]('['+[_0x14b2e9[_0x5fcc('0x15')]()]+_0x5fcc('0x3b'),_0x25f0f8[_0x5fcc('0x34')]);return _0x25f0f8;});});}function getCustomFields(_0x16eb5a,_0x44c7cc,_0x40f2bc){var _0x321c59={};if(_0x16eb5a[_0x5fcc('0x22')]>0x0){_[_0x5fcc('0x3c')](_0x16eb5a,function(_0x3a1b9f){if(_[_0x5fcc('0x3d')](['string',_0x5fcc('0x3e')],_0x3a1b9f[_0x5fcc('0x3f')])&&_0x3a1b9f[_0x5fcc('0x40')]&&!_0x3a1b9f[_0x5fcc('0x41')]){var _0x27328b=_0x3a1b9f[_0x5fcc('0x42')]['toLowerCase']();var _0x4a9ae2=_0x27328b[_0x5fcc('0x32')](0x0,_0x27328b[_0x5fcc('0x43')]('_'));var _0x5b7e3f=_0x27328b[_0x5fcc('0x32')](_0x27328b[_0x5fcc('0x43')]('_')+0x1);if(_0x4a9ae2===_0x40f2bc){_0x321c59[_0x5b7e3f]=_0x3a1b9f[_0x5fcc('0x44')];}}});}return _0x321c59;}function getTicket(_0x4bc579,_0x36eec5,_0x266cfb,_0x4e11d,_0x5a6609,_0x480e69,_0x2608f8){return new Promise(function(_0xc5b0dd,_0x1c5ba9){var _0x4e0d9c;return getAuthToken(_0x36eec5,_0x266cfb,_0x2608f8)[_0x5fcc('0x18')](function(_0x56ed22){if(_0x480e69[_0x5fcc('0x45')]===_0x5fcc('0x46')){_0x4e0d9c={'method':_0x5fcc('0x2e'),'uri':_0x4e11d+'incidents','body':Object['assign']({},{'title':intUtil[_0x5fcc('0x47')](_0x480e69['Subjects'],_0x5a6609,'\x20'),'description':intUtil['getString'](_0x480e69[_0x5fcc('0x48')],_0x5a6609,'\x0a'),'customerid_contact@odata.bind':_0x4bc579['enduserId']?'/contacts('+_0x4bc579[_0x5fcc('0x34')]+')':undefined,'ownerid@odata.bind':_0x5fcc('0x49')+_0x4bc579[_0x5fcc('0x29')]+')','caseorigincode':'1'},getCustomFields(_0x480e69[_0x5fcc('0x4a')],_0x5a6609,_0x480e69[_0x5fcc('0x45')])),'headers':{'Authorization':'Bearer\x20'+_0x56ed22,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x480e69[_0x5fcc('0x45')]==='phonecall'){var _0x18d81d=_0x4bc579['enduserId']?[{'partyid_systemuser@odata.bind':_0x5fcc('0x49')+_0x4bc579[_0x5fcc('0x29')]+')','participationtypemask':_0x4bc579[_0x5fcc('0x4b')]===_0x5fcc('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':_0x5fcc('0x4d')+_0x4bc579['enduserId']+')','participationtypemask':_0x4bc579[_0x5fcc('0x4b')]===_0x5fcc('0x4c')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x5fcc('0x49')+_0x4bc579[_0x5fcc('0x29')]+')','participationtypemask':_0x4bc579[_0x5fcc('0x4b')]===_0x5fcc('0x4c')?0x2:0x1}];_0x4e0d9c={'method':_0x5fcc('0x2e'),'uri':_0x4e11d+_0x5fcc('0x4e'),'body':Object[_0x5fcc('0x4f')]({},{'subject':intUtil[_0x5fcc('0x47')](_0x480e69['Subjects'],_0x5a6609,'\x20'),'phonenumber':String(_0x5a6609[_0x5fcc('0x2d')]),'description':intUtil[_0x5fcc('0x47')](_0x480e69[_0x5fcc('0x48')],_0x5a6609,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4bc579[_0x5fcc('0x34')]?_0x5fcc('0x4d')+_0x4bc579[_0x5fcc('0x34')]+')':undefined,'ownerid@odata.bind':_0x5fcc('0x49')+_0x4bc579['userId']+')','directioncode':_0x4bc579['callDirection']===_0x5fcc('0x4c')?![]:!![],'phonecall_activity_parties':_0x18d81d},getCustomFields(_0x480e69[_0x5fcc('0x4a')],_0x5a6609,_0x480e69['ticketType'])),'headers':{'Authorization':_0x5fcc('0x1b')+_0x56ed22,'OData-Version':_0x5fcc('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4e0d9c);})[_0x5fcc('0x18')](function(_0x4c6184){var _0x5a19c9=_0x4c6184[_0x5fcc('0x30')][_0x5fcc('0x31')];var _0xd3a55f=_0x5a19c9[_0x5fcc('0x32')](_0x5a19c9[_0x5fcc('0x33')]('(')+0x1,_0x5a19c9[_0x5fcc('0x33')](')'));_0x4bc579['ticketId']=_0xd3a55f;_0xc5b0dd(_0x4bc579);})['catch'](function(_0x3c871a){_0x1c5ba9(_0x3c871a[_0x5fcc('0x17')]);});});}function emit(_0x2c2e87,_0x51716a,_0x3fa3b9,_0x24aefb){var _0x175a8e={'uri':util[_0x5fcc('0x50')](_0x5fcc('0x51'),_0x2c2e87,_0x3fa3b9,_0x24aefb)};io['to'](util[_0x5fcc('0x50')](_0x5fcc('0x52'),_0x51716a))[_0x5fcc('0x53')](_0x5fcc('0x54'),_0x175a8e);}exports['cs']=function(_0x337ee1,_0x551aaa,_0x23d29e,_0x13b792,_0x23e6cb,_0x252693,_0x2e86a8,_0x25913b){var _0x3ff77c={};_0x252693['remoteUri']=_0x252693[_0x5fcc('0x8')]?intUtil[_0x5fcc('0x55')](_0x252693['CloudProvider']['data7']):intUtil['stripTrailingSlash'](_0x252693['remoteUri']);_0x252693[_0x5fcc('0x56')]=intUtil[_0x5fcc('0x55')](_0x252693[_0x5fcc('0x56')]);_0x3ff77c[_0x5fcc('0x4b')]=_0x25913b===_0x5fcc('0x4c')||_0x25913b===_0x5fcc('0x57')?_0x5fcc('0x4c'):_0x5fcc('0x2b');var _0xe93211=_0x252693[_0x5fcc('0x8')]?util[_0x5fcc('0x50')](_0x5fcc('0x58'),_0x252693[_0x5fcc('0xc')][_0x5fcc('0xa')]):util[_0x5fcc('0x50')](_0x5fcc('0x58'),_0x252693[_0x5fcc('0x9')]);var _0x202ba0=util[_0x5fcc('0x50')]('https://login.microsoftonline.com/%s/oauth2/token',_0x252693[_0x5fcc('0xb')]);var _0x204dfc=util[_0x5fcc('0x50')](_0x5fcc('0x59'),_0x252693['serverUrl'],_0x551aaa[_0x5fcc('0x5a')],md5(_0x551aaa[_0x5fcc('0x5a')]));if(_0x23e6cb&&_0x23e6cb[_0x5fcc('0x5b')]){logger[_0x5fcc('0x24')]('[QUEUE]',_0x5fcc('0x5c'));_0x551aaa['recordingURL']=_0x204dfc;}else if(_0x2e86a8&&_0x2e86a8['recordingFormat']&&_0x2e86a8[_0x5fcc('0x5d')]!==_0x5fcc('0x5e')){logger[_0x5fcc('0x24')](_0x5fcc('0x5f'),_0x5fcc('0x5c'));_0x551aaa[_0x5fcc('0x60')]=_0x204dfc;}else{_0x551aaa['recordingURL']='';}return getUser(_0x3ff77c,_0x252693,_0x13b792,_0x202ba0,_0xe93211,_0x25913b)[_0x5fcc('0x18')](function(_0x8e976d){logger[_0x5fcc('0x24')]('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x61'),_0x8e976d[_0x5fcc('0x29')]);logger['info']('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x62'),_0x8e976d[_0x5fcc('0x21')]);return getEndUser(_0x8e976d,_0x252693,_0x202ba0,_0xe93211,_0x551aaa,_0x25913b,_0x23d29e[_0x5fcc('0x63')],_0x23d29e[_0x5fcc('0x64')]);})[_0x5fcc('0x18')](function(_0xd0be44){logger['info']('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x65'),_0xd0be44[_0x5fcc('0x34')]);logger[_0x5fcc('0x24')]('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x66'),_0x551aaa[_0x5fcc('0x2d')]);return getTicket(_0xd0be44,_0x252693,_0x202ba0,_0xe93211,_0x551aaa,_0x23d29e,_0x25913b);})[_0x5fcc('0x18')](function(_0x447580){logger[_0x5fcc('0x24')](util[_0x5fcc('0x50')]('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x67'),_0x23d29e['ticketType'],_0x447580[_0x5fcc('0x68')]));logger[_0x5fcc('0x24')](util[_0x5fcc('0x50')]('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x69'),_0x25913b));if(_0x25913b!==_0x5fcc('0x57')&&_0x23d29e[_0x5fcc('0x6a')]){logger[_0x5fcc('0x24')]('['+_0x25913b[_0x5fcc('0x15')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x252693[_0x5fcc('0x9')],_0x13b792['name'],_0x23d29e[_0x5fcc('0x45')],_0x447580[_0x5fcc('0x68')]);}})[_0x5fcc('0x13')](function(_0x4ad015){logger[_0x5fcc('0x14')]('['+_0x25913b[_0x5fcc('0x15')]()+_0x5fcc('0x6b'),_0x4ad015[_0x5fcc('0x17')]);console[_0x5fcc('0x14')](_0x5fcc('0x6c'),_0x4ad015);});};
\ No newline at end of file
index e312845..bd37b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75bb=['application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','format','%s/api/v2/agents','Agent\x20found!','find','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','base64','debug','[HTTP]','GET','map','length','includes','nameField','content','string','picklist','idField','push','toString','variable','variableName','Variable','customField','toLowerCase','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','toUpperCase','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis'];(function(_0x4c7998,_0x489acc){var _0x15f6bc=function(_0x12376b){while(--_0x12376b){_0x4c7998['push'](_0x4c7998['shift']());}};_0x15f6bc(++_0x489acc);}(_0x75bb,0x100));var _0xb75b=function(_0x5d7023,_0x293ec7){_0x5d7023=_0x5d7023-0x0;var _0x4cc12f=_0x75bb[_0x5d7023];return _0x4cc12f;};'use strict';var _=require('lodash');var rp=require(_0xb75b('0x0'));var md5=require(_0xb75b('0x1'));var util=require(_0xb75b('0x2'));var Redis=require(_0xb75b('0x3'));var intUtil=require('./util');var config=require(_0xb75b('0x4'));var logger=require(_0xb75b('0x5'))('freshdesk');config['redis']=_[_0xb75b('0x6')](config[_0xb75b('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb75b('0x7')]));var headers={'Content-Type':_0xb75b('0x8'),'Accept':_0xb75b('0x8')};function emit(_0x3b2481,_0x19d7da,_0xa47c86){io['to'](_0x3b2481)[_0xb75b('0x9')](_0x19d7da,_0xa47c86);}function getTicket(_0x5a2acd,_0x51066e,_0x34b257,_0x2730ac,_0x400c20){logger[_0xb75b('0xa')](_0xb75b('0xb'));var _0x1344f4=_['merge']({'responder_id':_0x51066e['id'],'requester_id':_0x34b257['id'],'name':util['format'](_0xb75b('0xc'),_0x400c20[_0xb75b('0xd')]),'phone':_0x400c20[_0xb75b('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x2730ac[_0xb75b('0xf')],_0x400c20,'\x20'),'description':intUtil[_0xb75b('0x10')](_0x2730ac[_0xb75b('0x11')],_0x400c20,_0xb75b('0x12')),'tags':getTags(_0x2730ac[_0xb75b('0x13')],_0xb75b('0x14'))},getCustomFields(_0x2730ac[_0xb75b('0x15')],_0x400c20));_0x1344f4[_0xb75b('0x16')]=_[_0xb75b('0x17')](_[_0xb75b('0x18')](_0x1344f4[_0xb75b('0x16')],'id'),'value');return request({'uri':util['format'](_0xb75b('0x19'),_0x5a2acd[_0xb75b('0x1a')]),'method':_0xb75b('0x1b'),'body':_0x1344f4})[_0xb75b('0x1c')](function(_0x38f844){logger[_0xb75b('0xa')](_0xb75b('0x1d'));return _0x38f844;});}function getUser(_0x4a4da0,_0x30ce8a){if(intUtil['validateEmail'](_0x30ce8a)){return request({'uri':util[_0xb75b('0x1e')](_0xb75b('0x1f'),_0x4a4da0['remoteUri']),'qs':{'email':_0x30ce8a}})[_0xb75b('0x1c')](function(_0x11b2ad){if(_0x11b2ad['length']){logger['info'](_0xb75b('0x20'));return _[_0xb75b('0x21')](_0x11b2ad,function(_0x4d596d){return _0x4d596d['contact'][_0xb75b('0x22')]===_0x30ce8a;});}else{logger[_0xb75b('0xa')](_0xb75b('0x23'));return request({'uri':util[_0xb75b('0x1e')](_0xb75b('0x24'),_0x4a4da0[_0xb75b('0x1a')])})[_0xb75b('0x1c')](function(_0x29a360){logger[_0xb75b('0xa')]('Admin\x20account\x20selected.');return _0x29a360;});}});}else{logger[_0xb75b('0xa')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb75b('0x1e')](_0xb75b('0x24'),_0x4a4da0[_0xb75b('0x1a')])})['then'](function(_0x25c570){logger[_0xb75b('0xa')]('Admin\x20account\x20selected.');return _0x25c570;});}}function getEndUser(_0x297b4b,_0x3bd9eb,_0x486cdb){logger[_0xb75b('0xa')](_0xb75b('0x25'),_0x486cdb);return request({'uri':util[_0xb75b('0x1e')]('%s/api/v2/contacts',_0x297b4b[_0xb75b('0x1a')]),'qs':{'phone':_0x486cdb}})[_0xb75b('0x1c')](function(_0x4014f4){if(_0x4014f4['length']){logger[_0xb75b('0xa')](_0xb75b('0x26'));return _[_0xb75b('0x21')](_0x4014f4,{'phone':_0x486cdb});}else{logger['info'](_0xb75b('0x27'));return request({'uri':util[_0xb75b('0x1e')](_0xb75b('0x28'),_0x297b4b[_0xb75b('0x1a')]),'method':_0xb75b('0x1b'),'body':{'name':_0x3bd9eb,'phone':_0x486cdb}})[_0xb75b('0x1c')](function(_0x4efddf){logger[_0xb75b('0xa')](_0xb75b('0x29'));return _0x4efddf;});}});}function getAuth(_0x206379){return util[_0xb75b('0x1e')]('Basic\x20%s',new Buffer(_0x206379['apiKey']+':X')['toString'](_0xb75b('0x2a')));}function request(_0x5830ec){logger[_0xb75b('0x2b')](_0xb75b('0x2c'),JSON['stringify'](_0x5830ec));return rp(_['defaults'](_0x5830ec,{'method':_0xb75b('0x2d'),'headers':headers,'json':!![]}));}function getTags(_0x1ee79c,_0xab7b77){var _0xce05f5=[];if(_0x1ee79c&&_0x1ee79c['length']>0x0){_0xce05f5=_[_0xb75b('0x2e')](_0x1ee79c,_0xab7b77);}return _0xce05f5;}function getCustomFields(_0x2030bc,_0x494d5e){var _0x14748f=[];var _0xc9a994={'custom_fields':[]};if(_0x2030bc[_0xb75b('0x2f')]>0x0){_['forEach'](_0x2030bc,function(_0x285cda){if(_[_0xb75b('0x30')](['string','picklist'],_0x285cda['type'])&&_0x285cda[_0xb75b('0x31')]&&!_0x285cda['customField']){_0xc9a994[_0x285cda[_0xb75b('0x31')]['toLowerCase']()]=_0x285cda[_0xb75b('0x32')]['toString']();}else if(_[_0xb75b('0x30')]([_0xb75b('0x33'),_0xb75b('0x34')],_0x285cda['type'])&&_0x285cda[_0xb75b('0x35')]&&_0x285cda['customField']){_0xc9a994[_0xb75b('0x16')][_0xb75b('0x36')]({'id':_0x285cda['idField'],'value':_0x285cda[_0xb75b('0x32')][_0xb75b('0x37')]()});}else if(_0x285cda['type']===_0xb75b('0x38')&&_0x285cda[_0xb75b('0x39')]&&_0x285cda[_0xb75b('0x35')]&&_0x285cda['customField']){_0x494d5e[_0x285cda['variableName']]&&_0xc9a994[_0xb75b('0x16')]['push']({'id':_0x285cda[_0xb75b('0x35')],'value':_0x494d5e[_0x285cda[_0xb75b('0x39')]]['toString']()});}else if(_0x285cda['type']==='customVariable'&&_0x285cda[_0xb75b('0x3a')]&&_0x285cda[_0xb75b('0x3a')][_0xb75b('0x14')]&&_0x285cda[_0xb75b('0x35')]&&_0x285cda[_0xb75b('0x3b')]){_0x494d5e[_0x285cda['Variable'][_0xb75b('0x14')][_0xb75b('0x3c')]()]&&_0xc9a994[_0xb75b('0x16')][_0xb75b('0x36')]({'id':_0x285cda[_0xb75b('0x35')],'value':_0x494d5e[_0x285cda[_0xb75b('0x3a')][_0xb75b('0x14')]['toLowerCase']()][_0xb75b('0x37')]()});}});}return _0xc9a994;}exports[_0xb75b('0x3d')]=function(_0x665986,_0x4e17ba,_0x137fce,_0x506e17,_0x2da474,_0x3a1c31){var _0x3d762f,_0xc22fdd;_0x3a1c31[_0xb75b('0x1a')]=intUtil[_0xb75b('0x3e')](_0x3a1c31['remoteUri']);_0x3a1c31[_0xb75b('0x3f')]=intUtil[_0xb75b('0x3e')](_0x3a1c31[_0xb75b('0x3f')]);if(_0x2da474&&_0x2da474['monitor_format']){logger[_0xb75b('0xa')](_0xb75b('0x40'),_0xb75b('0x41'));_0x4e17ba['recordingURL']=util[_0xb75b('0x1e')](_0xb75b('0x42'),_0x3a1c31[_0xb75b('0x3f')],_0x4e17ba[_0xb75b('0x43')],md5(_0x4e17ba[_0xb75b('0x43')]));}else{_0x4e17ba[_0xb75b('0x44')]='';}headers[_0xb75b('0x45')]=getAuth(_0x3a1c31);return getUser(_0x3a1c31,_0x506e17[_0xb75b('0x22')])[_0xb75b('0x1c')](function(_0x1ec00b){_0x3d762f=_0x1ec00b;logger[_0xb75b('0xa')](_0xb75b('0x46'),_0x3d762f['id']);return getEndUser(_0x3a1c31,_0x4e17ba['calleridname'],_0x4e17ba[_0xb75b('0xe')]);})[_0xb75b('0x1c')](function(_0x34e391){_0xc22fdd=_0x34e391;logger[_0xb75b('0xa')](_0xb75b('0x47'),_0xc22fdd['id']);return getTicket(_0x3a1c31,_0x3d762f,_0xc22fdd,_0x137fce,_0x4e17ba);})[_0xb75b('0x1c')](function(_0x4cda4e){if(_0x4cda4e&&_0x4cda4e['id']){logger['info'](_0xb75b('0x1d'));logger['info'](_0xb75b('0x48'),_0x4cda4e['id']);logger[_0xb75b('0xa')](_0xb75b('0x40'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xb75b('0x1e')](_0xb75b('0x49'),_0x506e17[_0xb75b('0x14')]),_0xb75b('0x4a'),{'uri':util[_0xb75b('0x1e')](_0xb75b('0x4b'),_0x3a1c31[_0xb75b('0x1a')],_0x4cda4e['id'])});}})[_0xb75b('0x4c')](function(_0x3ba90b){logger[_0xb75b('0x4d')]('[QUEUE]',JSON['stringify'](_0x3ba90b));});};exports[_0xb75b('0x4e')]=function(_0x48822a,_0x2e5ace,_0x43f43c,_0x581b8c,_0x1bcebd,_0x330694,_0x25ee07){var _0x558f1e,_0x1bf1a8;_0x330694['remoteUri']=intUtil['stripTrailingSlash'](_0x330694[_0xb75b('0x1a')]);_0x330694['serverUrl']=intUtil['stripTrailingSlash'](_0x330694[_0xb75b('0x3f')]);if(_0x25ee07&&_0x25ee07['recordingFormat']&&_0x25ee07[_0xb75b('0x4f')]!==_0xb75b('0x50')){logger[_0xb75b('0xa')](_0xb75b('0x51'),_0xb75b('0x41'));_0x2e5ace[_0xb75b('0x44')]=util[_0xb75b('0x1e')](_0xb75b('0x42'),_0x330694[_0xb75b('0x3f')],_0x2e5ace[_0xb75b('0x43')],md5(_0x2e5ace['uniqueid']));}headers[_0xb75b('0x45')]=getAuth(_0x330694);return getUser(_0x330694,_0x581b8c[_0xb75b('0x22')])[_0xb75b('0x1c')](function(_0x30e769){_0x558f1e=_0x30e769;logger[_0xb75b('0xa')](_0xb75b('0x46'),_0x558f1e['id']);return getEndUser(_0x330694,_0x2e5ace[_0xb75b('0x52')],_0x2e5ace[_0xb75b('0x53')]);})['then'](function(_0x50ce6a){_0x1bf1a8=_0x50ce6a;logger['info'](_0xb75b('0x47'),_0x1bf1a8['id']);return getTicket(_0x330694,_0x558f1e,_0x1bf1a8,_0x43f43c,_0x2e5ace);})[_0xb75b('0x1c')](function(_0x30d161){if(_0x30d161&&_0x30d161['id']){logger['info'](_0xb75b('0x1d'));logger[_0xb75b('0xa')]('The\x20Ticket\x20ID\x20is:',_0x30d161['id']);logger['info'](_0xb75b('0x51'),_0xb75b('0x54'));emit(util[_0xb75b('0x1e')]('user:%s',_0x581b8c['name']),'trigger:browser:url',{'uri':util[_0xb75b('0x1e')](_0xb75b('0x4b'),_0x330694[_0xb75b('0x1a')],_0x30d161['id'])});}})[_0xb75b('0x4c')](function(_0x755aa0){logger['error']('[OUTBOUND]',JSON['stringify'](_0x755aa0));});};exports[_0xb75b('0x55')]=function(_0x2ad6be,_0x44e378,_0x58528e,_0x125c44,_0x1096bc,_0x44476f){var _0x5206d3,_0x198a4f;_0x44476f['remoteUri']=intUtil[_0xb75b('0x3e')](_0x44476f[_0xb75b('0x1a')]);_0x44476f[_0xb75b('0x3f')]=intUtil[_0xb75b('0x3e')](_0x44476f[_0xb75b('0x3f')]);if(_0x1096bc&&_0x1096bc['monitor_format']){logger['info']('['+_0x44e378['lastevent']['toUpperCase']()+']',_0xb75b('0x41'));_0x44e378['recordingURL']=util[_0xb75b('0x1e')](_0xb75b('0x42'),_0x44476f[_0xb75b('0x3f')],_0x44e378['uniqueid'],md5(_0x44e378[_0xb75b('0x43')]));}else{_0x44e378['recordingURL']='';}headers[_0xb75b('0x45')]=getAuth(_0x44476f);return getUser(_0x44476f,'')[_0xb75b('0x1c')](function(_0x245b43){_0x5206d3=_0x245b43;logger[_0xb75b('0xa')](_0xb75b('0x46'),_0x5206d3['id']);return getEndUser(_0x44476f,_0x44e378[_0xb75b('0xd')],_0x44e378['calleridnum']);})[_0xb75b('0x1c')](function(_0x3a89f4){_0x198a4f=_0x3a89f4;logger[_0xb75b('0xa')](_0xb75b('0x47'),_0x198a4f['id']);return getTicket(_0x44476f,_0x5206d3,_0x198a4f,_0x58528e,_0x44e378);})[_0xb75b('0x1c')](function(_0x432969){if(_0x432969){logger[_0xb75b('0xa')](_0xb75b('0x1d'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x432969['id']);}})[_0xb75b('0x4c')](function(_0x58073e){logger[_0xb75b('0x4d')]('['+_0x44e378[_0xb75b('0x56')][_0xb75b('0x57')]()+']',JSON['stringify'](_0x58073e));});};
\ No newline at end of file
+var _0x103c=['find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','[HTTP]','stringify','GET','map','includes','string','picklist','customField','content','type','push','idField','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','error','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','ioredis','../../../../config/logger','freshdesk','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','custom_fields','keyBy','value','%s/api/v2/tickets','remoteUri','POST','%s/api/v2/agents','then','length'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x103c,0xf0));var _0xc103=function(_0x176e40,_0x338904){_0x176e40=_0x176e40-0x0;var _0x4b2d13=_0x103c[_0x176e40];return _0x4b2d13;};'use strict';var _=require(_0xc103('0x0'));var rp=require(_0xc103('0x1'));var md5=require(_0xc103('0x2'));var util=require('util');var Redis=require(_0xc103('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xc103('0x4'))(_0xc103('0x5'));config[_0xc103('0x6')]=_[_0xc103('0x7')](config[_0xc103('0x6')],{'host':_0xc103('0x8'),'port':0x18eb});var io=require(_0xc103('0x9'))(new Redis(config[_0xc103('0x6')]));var headers={'Content-Type':_0xc103('0xa'),'Accept':_0xc103('0xa')};function emit(_0xfefef8,_0x15cfac,_0x5342ae){io['to'](_0xfefef8)[_0xc103('0xb')](_0x15cfac,_0x5342ae);}function getTicket(_0x247c26,_0x3696bf,_0x4cee67,_0x3224c3,_0x263084){logger[_0xc103('0xc')](_0xc103('0xd'));var _0x50003e=_['merge']({'responder_id':_0x3696bf['id'],'requester_id':_0x4cee67['id'],'name':util[_0xc103('0xe')](_0xc103('0xf'),_0x263084[_0xc103('0x10')]),'phone':_0x263084[_0xc103('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xc103('0x12')](_0x3224c3[_0xc103('0x13')],_0x263084,'\x20'),'description':intUtil[_0xc103('0x12')](_0x3224c3[_0xc103('0x14')],_0x263084,_0xc103('0x15')),'tags':getTags(_0x3224c3[_0xc103('0x16')],_0xc103('0x17'))},getCustomFields(_0x3224c3['Fields'],_0x263084));_0x50003e[_0xc103('0x18')]=_['mapValues'](_[_0xc103('0x19')](_0x50003e[_0xc103('0x18')],'id'),_0xc103('0x1a'));return request({'uri':util['format'](_0xc103('0x1b'),_0x247c26[_0xc103('0x1c')]),'method':_0xc103('0x1d'),'body':_0x50003e})['then'](function(_0x4e17eb){logger[_0xc103('0xc')]('Ticket\x20created!');return _0x4e17eb;});}function getUser(_0x26ebd4,_0x30e9ed){if(intUtil['validateEmail'](_0x30e9ed)){return request({'uri':util['format'](_0xc103('0x1e'),_0x26ebd4[_0xc103('0x1c')]),'qs':{'email':_0x30e9ed}})[_0xc103('0x1f')](function(_0x3d4129){if(_0x3d4129[_0xc103('0x20')]){logger['info']('Agent\x20found!');return _[_0xc103('0x21')](_0x3d4129,function(_0x2689a9){return _0x2689a9[_0xc103('0x22')][_0xc103('0x23')]===_0x30e9ed;});}else{logger['info'](_0xc103('0x24'));return request({'uri':util[_0xc103('0xe')](_0xc103('0x25'),_0x26ebd4[_0xc103('0x1c')])})[_0xc103('0x1f')](function(_0x389798){logger[_0xc103('0xc')](_0xc103('0x26'));return _0x389798;});}});}else{logger[_0xc103('0xc')](_0xc103('0x27'));return request({'uri':util[_0xc103('0xe')]('%s/api/v2/agents/me',_0x26ebd4['remoteUri'])})['then'](function(_0x23aa75){logger['info'](_0xc103('0x26'));return _0x23aa75;});}}function getEndUser(_0x2c6959,_0x26493d,_0x25966b){logger[_0xc103('0xc')]('Searching\x20enduser\x20with\x20phone',_0x25966b);return request({'uri':util[_0xc103('0xe')]('%s/api/v2/contacts',_0x2c6959[_0xc103('0x1c')]),'qs':{'phone':_0x25966b}})[_0xc103('0x1f')](function(_0x36e220){if(_0x36e220['length']){logger[_0xc103('0xc')](_0xc103('0x28'));return _['find'](_0x36e220,{'phone':_0x25966b});}else{logger[_0xc103('0xc')](_0xc103('0x29'));return request({'uri':util['format'](_0xc103('0x2a'),_0x2c6959[_0xc103('0x1c')]),'method':_0xc103('0x1d'),'body':{'name':_0x26493d,'phone':_0x25966b}})['then'](function(_0x33bace){logger[_0xc103('0xc')](_0xc103('0x2b'));return _0x33bace;});}});}function getAuth(_0x33ec3a){return util[_0xc103('0xe')](_0xc103('0x2c'),new Buffer(_0x33ec3a[_0xc103('0x2d')]+':X')[_0xc103('0x2e')](_0xc103('0x2f')));}function request(_0x4153ec){logger['debug'](_0xc103('0x30'),JSON[_0xc103('0x31')](_0x4153ec));return rp(_['defaults'](_0x4153ec,{'method':_0xc103('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x25ef1f,_0x479c07){var _0x58d1a3=[];if(_0x25ef1f&&_0x25ef1f[_0xc103('0x20')]>0x0){_0x58d1a3=_[_0xc103('0x33')](_0x25ef1f,_0x479c07);}return _0x58d1a3;}function getCustomFields(_0x1f43d0,_0x43d97c){var _0x979230=[];var _0x32898c={'custom_fields':[]};if(_0x1f43d0[_0xc103('0x20')]>0x0){_['forEach'](_0x1f43d0,function(_0x439cd4){if(_[_0xc103('0x34')]([_0xc103('0x35'),_0xc103('0x36')],_0x439cd4['type'])&&_0x439cd4['nameField']&&!_0x439cd4[_0xc103('0x37')]){_0x32898c[_0x439cd4['nameField']['toLowerCase']()]=_0x439cd4[_0xc103('0x38')][_0xc103('0x2e')]();}else if(_[_0xc103('0x34')]([_0xc103('0x35'),_0xc103('0x36')],_0x439cd4[_0xc103('0x39')])&&_0x439cd4['idField']&&_0x439cd4[_0xc103('0x37')]){_0x32898c['custom_fields'][_0xc103('0x3a')]({'id':_0x439cd4[_0xc103('0x3b')],'value':_0x439cd4[_0xc103('0x38')]['toString']()});}else if(_0x439cd4[_0xc103('0x39')]==='variable'&&_0x439cd4[_0xc103('0x3c')]&&_0x439cd4[_0xc103('0x3b')]&&_0x439cd4[_0xc103('0x37')]){_0x43d97c[_0x439cd4['variableName']]&&_0x32898c[_0xc103('0x18')][_0xc103('0x3a')]({'id':_0x439cd4[_0xc103('0x3b')],'value':_0x43d97c[_0x439cd4[_0xc103('0x3c')]]['toString']()});}else if(_0x439cd4[_0xc103('0x39')]===_0xc103('0x3d')&&_0x439cd4[_0xc103('0x3e')]&&_0x439cd4[_0xc103('0x3e')][_0xc103('0x17')]&&_0x439cd4[_0xc103('0x3b')]&&_0x439cd4[_0xc103('0x37')]){_0x43d97c[_0x439cd4[_0xc103('0x3e')][_0xc103('0x17')]['toLowerCase']()]&&_0x32898c[_0xc103('0x18')]['push']({'id':_0x439cd4[_0xc103('0x3b')],'value':_0x43d97c[_0x439cd4[_0xc103('0x3e')][_0xc103('0x17')]['toLowerCase']()][_0xc103('0x2e')]()});}});}return _0x32898c;}exports['queue']=function(_0x20f16f,_0x5556a4,_0x15f9a7,_0x5e1f6f,_0x18016b,_0x4e345c){var _0x40e1de,_0x13d496;_0x4e345c[_0xc103('0x1c')]=intUtil['stripTrailingSlash'](_0x4e345c[_0xc103('0x1c')]);_0x4e345c['serverUrl']=intUtil[_0xc103('0x3f')](_0x4e345c[_0xc103('0x40')]);if(_0x18016b&&_0x18016b[_0xc103('0x41')]){logger[_0xc103('0xc')](_0xc103('0x42'),_0xc103('0x43'));_0x5556a4[_0xc103('0x44')]=util[_0xc103('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4e345c[_0xc103('0x40')],_0x5556a4[_0xc103('0x45')],md5(_0x5556a4[_0xc103('0x45')]));}else{_0x5556a4[_0xc103('0x44')]='';}headers[_0xc103('0x46')]=getAuth(_0x4e345c);return getUser(_0x4e345c,_0x5e1f6f[_0xc103('0x23')])[_0xc103('0x1f')](function(_0x1d622c){_0x40e1de=_0x1d622c;logger[_0xc103('0xc')](_0xc103('0x47'),_0x40e1de['id']);return getEndUser(_0x4e345c,_0x5556a4[_0xc103('0x10')],_0x5556a4[_0xc103('0x11')]);})[_0xc103('0x1f')](function(_0xbbcf72){_0x13d496=_0xbbcf72;logger[_0xc103('0xc')](_0xc103('0x48'),_0x13d496['id']);return getTicket(_0x4e345c,_0x40e1de,_0x13d496,_0x15f9a7,_0x5556a4);})['then'](function(_0x45f51e){if(_0x45f51e&&_0x45f51e['id']){logger[_0xc103('0xc')](_0xc103('0x49'));logger[_0xc103('0xc')](_0xc103('0x4a'),_0x45f51e['id']);logger['info'](_0xc103('0x42'),_0xc103('0x4b'));emit(util['format'](_0xc103('0x4c'),_0x5e1f6f[_0xc103('0x17')]),_0xc103('0x4d'),{'uri':util[_0xc103('0xe')](_0xc103('0x4e'),_0x4e345c[_0xc103('0x1c')],_0x45f51e['id'])});}})[_0xc103('0x4f')](function(_0xe87fc1){logger['error'](_0xc103('0x42'),JSON['stringify'](_0xe87fc1));});};exports[_0xc103('0x50')]=function(_0x4c97f1,_0x58a026,_0x123f14,_0x4e0211,_0x3f8cf2,_0x2e1ac7,_0xa7be86){var _0x38d6ef,_0x5a7cdc;_0x2e1ac7[_0xc103('0x1c')]=intUtil[_0xc103('0x3f')](_0x2e1ac7['remoteUri']);_0x2e1ac7['serverUrl']=intUtil[_0xc103('0x3f')](_0x2e1ac7[_0xc103('0x40')]);if(_0xa7be86&&_0xa7be86['recordingFormat']&&_0xa7be86[_0xc103('0x51')]!==_0xc103('0x52')){logger['info'](_0xc103('0x53'),_0xc103('0x43'));_0x58a026[_0xc103('0x44')]=util[_0xc103('0xe')](_0xc103('0x54'),_0x2e1ac7[_0xc103('0x40')],_0x58a026[_0xc103('0x45')],md5(_0x58a026[_0xc103('0x45')]));}headers['Authorization']=getAuth(_0x2e1ac7);return getUser(_0x2e1ac7,_0x4e0211[_0xc103('0x23')])[_0xc103('0x1f')](function(_0x4d23ca){_0x38d6ef=_0x4d23ca;logger[_0xc103('0xc')](_0xc103('0x47'),_0x38d6ef['id']);return getEndUser(_0x2e1ac7,_0x58a026[_0xc103('0x55')],_0x58a026[_0xc103('0x56')]);})['then'](function(_0xb90045){_0x5a7cdc=_0xb90045;logger[_0xc103('0xc')](_0xc103('0x48'),_0x5a7cdc['id']);return getTicket(_0x2e1ac7,_0x38d6ef,_0x5a7cdc,_0x123f14,_0x58a026);})[_0xc103('0x1f')](function(_0x23b772){if(_0x23b772&&_0x23b772['id']){logger[_0xc103('0xc')](_0xc103('0x49'));logger[_0xc103('0xc')](_0xc103('0x4a'),_0x23b772['id']);logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xc103('0xe')](_0xc103('0x4c'),_0x4e0211[_0xc103('0x17')]),_0xc103('0x4d'),{'uri':util[_0xc103('0xe')](_0xc103('0x4e'),_0x2e1ac7[_0xc103('0x1c')],_0x23b772['id'])});}})[_0xc103('0x4f')](function(_0x2394ce){logger[_0xc103('0x57')](_0xc103('0x53'),JSON[_0xc103('0x31')](_0x2394ce));});};exports[_0xc103('0x58')]=function(_0x354d03,_0x590672,_0xddf51c,_0x2ff2c1,_0x489b26,_0x3e3960){var _0xb684f1,_0x211cfb;_0x3e3960[_0xc103('0x1c')]=intUtil['stripTrailingSlash'](_0x3e3960[_0xc103('0x1c')]);_0x3e3960['serverUrl']=intUtil['stripTrailingSlash'](_0x3e3960['serverUrl']);if(_0x489b26&&_0x489b26[_0xc103('0x41')]){logger[_0xc103('0xc')]('['+_0x590672[_0xc103('0x59')][_0xc103('0x5a')]()+']',_0xc103('0x43'));_0x590672[_0xc103('0x44')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3e3960[_0xc103('0x40')],_0x590672[_0xc103('0x45')],md5(_0x590672[_0xc103('0x45')]));}else{_0x590672[_0xc103('0x44')]='';}headers['Authorization']=getAuth(_0x3e3960);return getUser(_0x3e3960,'')[_0xc103('0x1f')](function(_0xd5ae99){_0xb684f1=_0xd5ae99;logger['info'](_0xc103('0x47'),_0xb684f1['id']);return getEndUser(_0x3e3960,_0x590672[_0xc103('0x10')],_0x590672[_0xc103('0x11')]);})[_0xc103('0x1f')](function(_0x315ec9){_0x211cfb=_0x315ec9;logger[_0xc103('0xc')](_0xc103('0x48'),_0x211cfb['id']);return getTicket(_0x3e3960,_0xb684f1,_0x211cfb,_0xddf51c,_0x590672);})['then'](function(_0x1e4c65){if(_0x1e4c65){logger[_0xc103('0xc')](_0xc103('0x49'));logger[_0xc103('0xc')](_0xc103('0x4a'),_0x1e4c65['id']);}})[_0xc103('0x4f')](function(_0x34504c){logger[_0xc103('0x57')]('['+_0x590672[_0xc103('0x59')][_0xc103('0x5a')]()+']',JSON[_0xc103('0x31')](_0x34504c));});};
\ No newline at end of file
index c4739b2..3e62d6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79b8=['/api/contacts','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','getString','Subjects','Descriptions','Contact','format','ticketId','Task\x20created:','emit','trigger:browser:url','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','adminId','catch','toUpperCase','message','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','length','email','userId','User\x20found:','userEmail','adminEmail','Requested\x20Resource\x20not\x20Found','error','/api/lookup?q=','&f=','&entities=contact','find','contacts','contactNumber','mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','POST'];(function(_0x58d5ac,_0x11c4bc){var _0x37985c=function(_0x419671){while(--_0x419671){_0x58d5ac['push'](_0x58d5ac['shift']());}};_0x37985c(++_0x11c4bc);}(_0x79b8,0x71));var _0x879b=function(_0xd47916,_0x4be2a2){_0xd47916=_0xd47916-0x0;var _0x30759c=_0x79b8[_0xd47916];return _0x30759c;};'use strict';var _=require(_0x879b('0x0'));var rp=require('request-promise');var md5=require(_0x879b('0x1'));var util=require(_0x879b('0x2'));var moment=require('moment');var Promise=require(_0x879b('0x3'));var Redis=require(_0x879b('0x4'));var intUtil=require('./util');var config=require(_0x879b('0x5'));var logger=require(_0x879b('0x6'))(_0x879b('0x7'));config[_0x879b('0x8')]=_[_0x879b('0x9')](config[_0x879b('0x8')],{'host':_0x879b('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x879b('0x8')]));function getAdminId(_0x1220ad,_0x4fd035,_0x348b04,_0xcadd81){return new Promise(function(_0x5de001,_0x53732c){var _0x20b99c=![];var _0x2b0b81={'method':_0x879b('0xb'),'uri':_0xcadd81+_0x879b('0xc'),'json':!![]};_0x2b0b81['headers']=_0x348b04;logger[_0x879b('0xd')](_0x879b('0xe'));return rp(_0x2b0b81)[_0x879b('0xf')](function(_0xfe0b2f){if(_0xfe0b2f){var _0x2bf8d6=_0xfe0b2f[_0x879b('0x10')];var _0x299f97=null;for(_0x299f97=0x0;_0x299f97<_0x2bf8d6['length'];_0x299f97++){if(_0x2bf8d6[_0x299f97]['email']===_0x1220ad['adminEmail']){_0x1220ad[_0x879b('0x11')]=_0x2bf8d6[_0x299f97]['id'];_0x20b99c=!![];}}if(_0x20b99c){logger[_0x879b('0xd')]('Admin\x20found:',_0x1220ad[_0x879b('0x11')]);_0x5de001(_0x1220ad);}else{_0x53732c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x53732c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x879b('0x12')](function(_0x34c86a){logger['error']('['+[_0x4fd035[_0x879b('0x13')]()]+']',_0x34c86a[_0x879b('0x14')]);_0x53732c(_0x34c86a);});});}function getUser(_0x199a1a,_0x336cc5,_0x48c765){return function(_0x33178a){return new Promise(function(_0x5f3fc1,_0x371f06){var _0x5a6579={'method':_0x879b('0xb'),'uri':_0x48c765+_0x879b('0xc'),'json':!![]};_0x5a6579['headers']=_0x336cc5;logger[_0x879b('0xd')](_0x879b('0x15'));return rp(_0x5a6579)[_0x879b('0xf')](function(_0x4cfa37){if(_0x4cfa37){var _0x4e9855=_0x4cfa37[_0x879b('0x10')];var _0x447b23=![];var _0x30897f=null;if(_0x33178a[_0x879b('0x16')]!==null){logger[_0x879b('0xd')](_0x879b('0x17'),_0x33178a[_0x879b('0x16')]);_0x33178a['userEmail']=_0x33178a[_0x879b('0x16')];for(_0x30897f=0x0;_0x30897f<_0x4e9855[_0x879b('0x18')];_0x30897f++){if(_0x4e9855[_0x30897f][_0x879b('0x19')]===_0x33178a[_0x879b('0x16')]){_0x447b23=!![];_0x33178a[_0x879b('0x1a')]=_0x4e9855[_0x30897f]['id'];logger[_0x879b('0xd')](_0x879b('0x1b'),_0x33178a[_0x879b('0x1a')]);}}}if(!_0x447b23){logger[_0x879b('0xd')]('Admin\x20selected');_0x33178a[_0x879b('0x1c')]=_0x33178a[_0x879b('0x1d')];_0x33178a[_0x879b('0x1a')]=_0x33178a[_0x879b('0x11')];_0x447b23=!![];}if(_0x447b23){_0x5f3fc1(_0x33178a);}else{_0x371f06({'statusCode':0x194,'message':_0x879b('0x1e')});}}else{_0x371f06({'statusCode':0x194,'message':_0x879b('0x1e')});}})[_0x879b('0x12')](function(_0x1b99c3){logger[_0x879b('0x1f')]('['+[_0x199a1a['toUpperCase']()]+']',_0x1b99c3[_0x879b('0x14')]);_0x371f06(_0x1b99c3);});});};}function searchContact(_0x959d0f,_0x2ee5d6,_0x5d9db8,_0x3572d1){return new Promise(function(_0x1d2c4e,_0x3e3af9){var _0x1b42e8={'method':_0x879b('0xb'),'headers':_0x2ee5d6,'uri':_0x959d0f+_0x879b('0x20')+_0x3572d1+_0x879b('0x21')+_0x5d9db8+_0x879b('0x22'),'json':!![]};rp(_0x1b42e8)['then'](function(_0x12f452){var _0x59c614=_[_0x879b('0x23')](_0x12f452[_0x879b('0x24')][_0x879b('0x24')],[_0x5d9db8,_0x3572d1]);_0x1d2c4e(_0x59c614);})[_0x879b('0x12')](function(_0x14a41a){_0x3e3af9(_0x14a41a);});});}function getEndUser(_0xe6c134,_0x30c944,_0x11679a){return function(_0xfedc3b){return new Promise(function(_0x4fbbbe,_0x226327){logger[_0x879b('0xd')](util['format']('Searching\x20contact\x20with\x20phone\x20%s',_0xfedc3b[_0x879b('0x25')]));searchContact(_0x11679a,_0x30c944,_0x879b('0x26'),_0xfedc3b[_0x879b('0x25')])[_0x879b('0xf')](function(_0x5e4d47){if(_0x5e4d47){_0xfedc3b['endUserId']=_0x5e4d47['id'];logger[_0x879b('0xd')]('Contact\x20found\x20mobile_number:',_0xfedc3b[_0x879b('0x27')]);return _0x4fbbbe(_0xfedc3b);}searchContact(_0x11679a,_0x30c944,_0x879b('0x28'),_0xfedc3b['contactNumber'])[_0x879b('0xf')](function(_0xb14f72){if(_0xb14f72){_0xfedc3b[_0x879b('0x27')]=_0xb14f72['id'];logger[_0x879b('0xd')](_0x879b('0x29'),_0xfedc3b[_0x879b('0x27')]);return _0x4fbbbe(_0xfedc3b);}createEndUser(_0xfedc3b,_0xe6c134,_0x30c944,_0x11679a)[_0x879b('0xf')](function(_0x383b62){logger[_0x879b('0xd')]('Contact\x20created:',_0x383b62['endUserId']);return _0x4fbbbe(_0x383b62);});});})[_0x879b('0x12')](function(_0x4b74a2){_0x226327(_0x4b74a2);});});};}function createEndUser(_0x2ac2b2,_0x9196ff,_0x53b4b5,_0x2df3e9){return new Promise(function(_0x200ed9,_0x44759d){var _0x59311d=moment();var _0x49722b={'method':_0x879b('0x2a'),'uri':_0x2df3e9+_0x879b('0x2b'),'body':{'contact':{'last_name':_0x2ac2b2[_0x879b('0x25')],'work_number':_0x2ac2b2['contactNumber'],'mobile_number':_0x2ac2b2['contactNumber'],'owner_id':_0x2ac2b2['userId'],'created_at':_0x59311d['format'](_0x879b('0x2c'))}},'json':!![]};_0x49722b[_0x879b('0x2d')]=_0x53b4b5;logger[_0x879b('0xd')](_0x879b('0x2e'));return rp(_0x49722b)[_0x879b('0xf')](function(_0x2192d9){_0x2ac2b2[_0x879b('0x27')]=_0x2192d9[_0x879b('0x2f')]['id'];_0x200ed9(_0x2ac2b2);})[_0x879b('0x12')](function(_0x508cbb){logger[_0x879b('0x1f')]('['+[_0x9196ff[_0x879b('0x13')]()]+']',_0x508cbb[_0x879b('0x14')]);_0x44759d(_0x508cbb[_0x879b('0x14')]);});});}function getTicket(_0x2ecc52,_0x4f6ba5,_0xc37314,_0x2a3cff,_0x1b3d7a){return function(_0x4dae36){logger[_0x879b('0xd')]('Creating\x20new\x20task');return new Promise(function(_0x3254c4,_0x2c14ba){var _0x21adbf=moment();var _0x55a8c9={'method':_0x879b('0x2a'),'uri':_0xc37314+'/api/tasks','body':{'title':intUtil[_0x879b('0x30')](_0x2a3cff[_0x879b('0x31')],_0x1b3d7a,'\x20'),'description':intUtil[_0x879b('0x30')](_0x2a3cff[_0x879b('0x32')],_0x1b3d7a,'\x0a'),'owner_id':_0x4dae36[_0x879b('0x1a')],'creater_id':_0x4dae36[_0x879b('0x11')],'targetable_id':_0x4dae36[_0x879b('0x27')],'targetable_type':_0x879b('0x33'),'created_at':_0x21adbf[_0x879b('0x34')](_0x879b('0x2c')),'due_date':_0x21adbf['add'](0x1e,'m')[_0x879b('0x34')](_0x879b('0x2c'))},'json':!![]};_0x55a8c9[_0x879b('0x2d')]=_0x4f6ba5;return rp(_0x55a8c9)[_0x879b('0xf')](function(_0x50da0f){_0x4dae36[_0x879b('0x35')]=_0x50da0f['task']['id'];logger[_0x879b('0xd')](_0x879b('0x36'),_0x4dae36[_0x879b('0x35')]);_0x3254c4(_0x4dae36);})['catch'](function(_0x410b77){logger[_0x879b('0x1f')]('['+[_0x2ecc52[_0x879b('0x13')]()]+']',_0x410b77['message']);_0x2c14ba(_0x410b77[_0x879b('0x14')]);});});};}function emit(_0x37eeb1,_0x117702,_0x54b454){var _0x3c3792={'uri':_0x37eeb1+'/contacts/'+_0x54b454};io['to'](util[_0x879b('0x34')]('user:%s',_0x117702))[_0x879b('0x37')](_0x879b('0x38'),_0x3c3792);}exports['cs']=function(_0x576299,_0xce4b52,_0xe55c6a,_0x5a705d,_0x1cd7c9,_0x5d26b2,_0xd431e0,_0x34719d){var _0x477728={};var _0x2462b8={'Authorization':'Token\x20token='+_0x5d26b2[_0x879b('0x39')]};_0x5d26b2[_0x879b('0x3a')]=intUtil['stripTrailingSlash'](_0x5d26b2[_0x879b('0x3a')]);_0x5d26b2[_0x879b('0x3b')]=intUtil[_0x879b('0x3c')](_0x5d26b2[_0x879b('0x3b')]);var _0x29a190=_0x5d26b2[_0x879b('0x3a')];_0x477728[_0x879b('0x1d')]=_0x5d26b2[_0x879b('0x3d')];_0x477728['contactNumber']=_0x34719d[_0x879b('0x3e')]()===_0x879b('0x3f')?_0xce4b52['destcalleridnum']:_0xce4b52['calleridnum'];_0x477728[_0x879b('0x40')]=_0x34719d===_0x879b('0x41')||_0x34719d==='unmanaged'?'queue':_0x879b('0x3f');if(_0x5a705d){_0x477728[_0x879b('0x16')]=_0x5a705d[_0x879b('0x19')];}var _0x48fab8=util['format'](_0x879b('0x42'),_0x5d26b2[_0x879b('0x3b')],_0xce4b52[_0x879b('0x43')],md5(_0xce4b52['uniqueid']));if(_0x1cd7c9&&_0x1cd7c9['monitor_format']){logger[_0x879b('0xd')](_0x879b('0x44'),_0x879b('0x45'));_0xce4b52[_0x879b('0x46')]=_0x48fab8;}else if(_0xd431e0&&_0xd431e0['recordingFormat']&&_0xd431e0[_0x879b('0x47')]!==_0x879b('0x48')){logger['info'](_0x879b('0x49'),_0x879b('0x45'));_0xce4b52[_0x879b('0x46')]=_0x48fab8;}else{_0xce4b52[_0x879b('0x46')]='';}return getAdminId(_0x477728,_0x34719d,_0x2462b8,_0x29a190)['then'](getUser(_0x34719d,_0x2462b8,_0x29a190))[_0x879b('0xf')](getEndUser(_0x34719d,_0x2462b8,_0x29a190))['then'](getTicket(_0x34719d,_0x2462b8,_0x29a190,_0xe55c6a,_0xce4b52))[_0x879b('0xf')](function(_0x67aa70){logger[_0x879b('0xd')](util[_0x879b('0x34')]('The\x20ticket\x20ID\x20is:\x20%s',_0x67aa70[_0x879b('0x35')]));if(_0x34719d!==_0x879b('0x4a')){logger[_0x879b('0xd')]('['+[_0x34719d[_0x879b('0x13')]()]+']',_0x879b('0x4b'));emit(_0x29a190,_0x5a705d['name'],_0x67aa70[_0x879b('0x27')]);}})['catch'](function(_0x5eaaaa){logger[_0x879b('0x1f')]('['+[_0x34719d[_0x879b('0x13')]()]+_0x879b('0x4c'),util[_0x879b('0x4d')](_0x5eaaaa,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x0c28=['getString','Subjects','Descriptions','Contact','add','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','emit','Token\x20token=','apiKey','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','message','/api/selector/owners','headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','length','userId','User\x20found:','Admin\x20selected','userEmail','catch','toUpperCase','&f=','find','format','contactNumber','Contact\x20found\x20mobile_number:','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task'];(function(_0x2d1cf4,_0x2ea9ee){var _0x554a7c=function(_0x55cc39){while(--_0x55cc39){_0x2d1cf4['push'](_0x2d1cf4['shift']());}};_0x554a7c(++_0x2ea9ee);}(_0x0c28,0xc0));var _0x80c2=function(_0x200d53,_0x621288){_0x200d53=_0x200d53-0x0;var _0x37c2a6=_0x0c28[_0x200d53];return _0x37c2a6;};'use strict';var _=require(_0x80c2('0x0'));var rp=require(_0x80c2('0x1'));var md5=require('md5');var util=require(_0x80c2('0x2'));var moment=require(_0x80c2('0x3'));var Promise=require(_0x80c2('0x4'));var Redis=require(_0x80c2('0x5'));var intUtil=require(_0x80c2('0x6'));var config=require(_0x80c2('0x7'));var logger=require(_0x80c2('0x8'))(_0x80c2('0x9'));config[_0x80c2('0xa')]=_[_0x80c2('0xb')](config[_0x80c2('0xa')],{'host':_0x80c2('0xc'),'port':0x18eb});var io=require(_0x80c2('0xd'))(new Redis(config['redis']));function getAdminId(_0x22f21a,_0x29ff11,_0x3b9d3c,_0x2af11f){return new Promise(function(_0x33120b,_0x4d010a){var _0xaddf87=![];var _0x5db294={'method':_0x80c2('0xe'),'uri':_0x2af11f+'/api/selector/owners','json':!![]};_0x5db294['headers']=_0x3b9d3c;logger[_0x80c2('0xf')](_0x80c2('0x10'));return rp(_0x5db294)[_0x80c2('0x11')](function(_0x249431){if(_0x249431){var _0x52837e=_0x249431[_0x80c2('0x12')];var _0xe2dc2f=null;for(_0xe2dc2f=0x0;_0xe2dc2f<_0x52837e['length'];_0xe2dc2f++){if(_0x52837e[_0xe2dc2f][_0x80c2('0x13')]===_0x22f21a[_0x80c2('0x14')]){_0x22f21a[_0x80c2('0x15')]=_0x52837e[_0xe2dc2f]['id'];_0xaddf87=!![];}}if(_0xaddf87){logger['info'](_0x80c2('0x16'),_0x22f21a['adminId']);_0x33120b(_0x22f21a);}else{_0x4d010a({'statusCode':0x194,'message':_0x80c2('0x17')});}}else{_0x4d010a({'statusCode':0x194,'message':_0x80c2('0x17')});}})['catch'](function(_0x12265b){logger[_0x80c2('0x18')]('['+[_0x29ff11['toUpperCase']()]+']',_0x12265b[_0x80c2('0x19')]);_0x4d010a(_0x12265b);});});}function getUser(_0x13a850,_0x5ae79d,_0x499c09){return function(_0x433a01){return new Promise(function(_0x229476,_0x44b101){var _0x16c81c={'method':_0x80c2('0xe'),'uri':_0x499c09+_0x80c2('0x1a'),'json':!![]};_0x16c81c[_0x80c2('0x1b')]=_0x5ae79d;logger[_0x80c2('0xf')](_0x80c2('0x1c'));return rp(_0x16c81c)['then'](function(_0x28041c){if(_0x28041c){var _0x3fb834=_0x28041c[_0x80c2('0x12')];var _0x41257c=![];var _0x165167=null;if(_0x433a01[_0x80c2('0x1d')]!==null){logger['info'](_0x80c2('0x1e'),_0x433a01[_0x80c2('0x1d')]);_0x433a01['userEmail']=_0x433a01[_0x80c2('0x1d')];for(_0x165167=0x0;_0x165167<_0x3fb834[_0x80c2('0x1f')];_0x165167++){if(_0x3fb834[_0x165167][_0x80c2('0x13')]===_0x433a01[_0x80c2('0x1d')]){_0x41257c=!![];_0x433a01[_0x80c2('0x20')]=_0x3fb834[_0x165167]['id'];logger['info'](_0x80c2('0x21'),_0x433a01['userId']);}}}if(!_0x41257c){logger[_0x80c2('0xf')](_0x80c2('0x22'));_0x433a01[_0x80c2('0x23')]=_0x433a01['adminEmail'];_0x433a01[_0x80c2('0x20')]=_0x433a01[_0x80c2('0x15')];_0x41257c=!![];}if(_0x41257c){_0x229476(_0x433a01);}else{_0x44b101({'statusCode':0x194,'message':_0x80c2('0x17')});}}else{_0x44b101({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x80c2('0x24')](function(_0x5589c4){logger['error']('['+[_0x13a850[_0x80c2('0x25')]()]+']',_0x5589c4['message']);_0x44b101(_0x5589c4);});});};}function searchContact(_0x501671,_0x2a9a89,_0x20b18,_0x56aeb8){return new Promise(function(_0x258037,_0x4f8cce){var _0x4acb18={'method':'GET','headers':_0x2a9a89,'uri':_0x501671+'/api/lookup?q='+_0x56aeb8+_0x80c2('0x26')+_0x20b18+'&entities=contact','json':!![]};rp(_0x4acb18)[_0x80c2('0x11')](function(_0x1f3f8c){var _0x563043=_[_0x80c2('0x27')](_0x1f3f8c['contacts']['contacts'],[_0x20b18,_0x56aeb8]);_0x258037(_0x563043);})[_0x80c2('0x24')](function(_0x39ae46){_0x4f8cce(_0x39ae46);});});}function getEndUser(_0x540166,_0x3e1584,_0xd95072){return function(_0x29d689){return new Promise(function(_0x1e33b3,_0x4bd3b0){logger[_0x80c2('0xf')](util[_0x80c2('0x28')]('Searching\x20contact\x20with\x20phone\x20%s',_0x29d689[_0x80c2('0x29')]));searchContact(_0xd95072,_0x3e1584,'mobile_number',_0x29d689[_0x80c2('0x29')])[_0x80c2('0x11')](function(_0x21ac34){if(_0x21ac34){_0x29d689['endUserId']=_0x21ac34['id'];logger[_0x80c2('0xf')](_0x80c2('0x2a'),_0x29d689[_0x80c2('0x2b')]);return _0x1e33b3(_0x29d689);}searchContact(_0xd95072,_0x3e1584,'work_number',_0x29d689['contactNumber'])[_0x80c2('0x11')](function(_0x1bfeb9){if(_0x1bfeb9){_0x29d689[_0x80c2('0x2b')]=_0x1bfeb9['id'];logger[_0x80c2('0xf')](_0x80c2('0x2c'),_0x29d689[_0x80c2('0x2b')]);return _0x1e33b3(_0x29d689);}createEndUser(_0x29d689,_0x540166,_0x3e1584,_0xd95072)[_0x80c2('0x11')](function(_0x97d7b){logger['info'](_0x80c2('0x2d'),_0x97d7b[_0x80c2('0x2b')]);return _0x1e33b3(_0x97d7b);});});})[_0x80c2('0x24')](function(_0x3e360c){_0x4bd3b0(_0x3e360c);});});};}function createEndUser(_0x45e9b8,_0x33e0e8,_0x4fd356,_0x49b28b){return new Promise(function(_0x5d6c95,_0x46f980){var _0x3cba80=moment();var _0x5d812c={'method':_0x80c2('0x2e'),'uri':_0x49b28b+_0x80c2('0x2f'),'body':{'contact':{'last_name':_0x45e9b8[_0x80c2('0x29')],'work_number':_0x45e9b8['contactNumber'],'mobile_number':_0x45e9b8[_0x80c2('0x29')],'owner_id':_0x45e9b8[_0x80c2('0x20')],'created_at':_0x3cba80['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x5d812c[_0x80c2('0x1b')]=_0x4fd356;logger[_0x80c2('0xf')](_0x80c2('0x30'));return rp(_0x5d812c)[_0x80c2('0x11')](function(_0x279006){_0x45e9b8[_0x80c2('0x2b')]=_0x279006[_0x80c2('0x31')]['id'];_0x5d6c95(_0x45e9b8);})[_0x80c2('0x24')](function(_0x272e22){logger['error']('['+[_0x33e0e8[_0x80c2('0x25')]()]+']',_0x272e22['message']);_0x46f980(_0x272e22[_0x80c2('0x19')]);});});}function getTicket(_0x55c560,_0x595edb,_0x242585,_0x209e09,_0x1de019){return function(_0x414cea){logger[_0x80c2('0xf')](_0x80c2('0x32'));return new Promise(function(_0x12e4c1,_0x228ee8){var _0x558277=moment();var _0x2f4143={'method':'POST','uri':_0x242585+'/api/tasks','body':{'title':intUtil[_0x80c2('0x33')](_0x209e09[_0x80c2('0x34')],_0x1de019,'\x20'),'description':intUtil[_0x80c2('0x33')](_0x209e09[_0x80c2('0x35')],_0x1de019,'\x0a'),'owner_id':_0x414cea[_0x80c2('0x20')],'creater_id':_0x414cea[_0x80c2('0x15')],'targetable_id':_0x414cea['endUserId'],'targetable_type':_0x80c2('0x36'),'created_at':_0x558277[_0x80c2('0x28')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x558277[_0x80c2('0x37')](0x1e,'m')[_0x80c2('0x28')](_0x80c2('0x38'))},'json':!![]};_0x2f4143[_0x80c2('0x1b')]=_0x595edb;return rp(_0x2f4143)['then'](function(_0x22174e){_0x414cea[_0x80c2('0x39')]=_0x22174e[_0x80c2('0x3a')]['id'];logger[_0x80c2('0xf')]('Task\x20created:',_0x414cea[_0x80c2('0x39')]);_0x12e4c1(_0x414cea);})[_0x80c2('0x24')](function(_0x5480cd){logger[_0x80c2('0x18')]('['+[_0x55c560[_0x80c2('0x25')]()]+']',_0x5480cd[_0x80c2('0x19')]);_0x228ee8(_0x5480cd['message']);});});};}function emit(_0x510496,_0x4c8f60,_0x1e956e){var _0x763acb={'uri':_0x510496+_0x80c2('0x3b')+_0x1e956e};io['to'](util[_0x80c2('0x28')]('user:%s',_0x4c8f60))[_0x80c2('0x3c')]('trigger:browser:url',_0x763acb);}exports['cs']=function(_0x54181f,_0x16b608,_0x35dea3,_0x279fc5,_0x2bde8f,_0x3fc803,_0x2d1d2c,_0x339d17){var _0x34bfab={};var _0x24a47d={'Authorization':_0x80c2('0x3d')+_0x3fc803[_0x80c2('0x3e')]};_0x3fc803[_0x80c2('0x3f')]=intUtil['stripTrailingSlash'](_0x3fc803['remoteUri']);_0x3fc803[_0x80c2('0x40')]=intUtil['stripTrailingSlash'](_0x3fc803[_0x80c2('0x40')]);var _0x16bdc0=_0x3fc803[_0x80c2('0x3f')];_0x34bfab[_0x80c2('0x14')]=_0x3fc803[_0x80c2('0x41')];_0x34bfab[_0x80c2('0x29')]=_0x339d17[_0x80c2('0x42')]()===_0x80c2('0x43')?_0x16b608[_0x80c2('0x44')]:_0x16b608['calleridnum'];_0x34bfab['callDirection']=_0x339d17===_0x80c2('0x45')||_0x339d17==='unmanaged'?_0x80c2('0x45'):_0x80c2('0x43');if(_0x279fc5){_0x34bfab[_0x80c2('0x1d')]=_0x279fc5[_0x80c2('0x13')];}var _0x3e18eb=util[_0x80c2('0x28')](_0x80c2('0x46'),_0x3fc803[_0x80c2('0x40')],_0x16b608[_0x80c2('0x47')],md5(_0x16b608[_0x80c2('0x47')]));if(_0x2bde8f&&_0x2bde8f['monitor_format']){logger[_0x80c2('0xf')](_0x80c2('0x48'),_0x80c2('0x49'));_0x16b608['recordingURL']=_0x3e18eb;}else if(_0x2d1d2c&&_0x2d1d2c[_0x80c2('0x4a')]&&_0x2d1d2c[_0x80c2('0x4a')]!=='none'){logger['info']('[OUTBOUND]',_0x80c2('0x49'));_0x16b608[_0x80c2('0x4b')]=_0x3e18eb;}else{_0x16b608['recordingURL']='';}return getAdminId(_0x34bfab,_0x339d17,_0x24a47d,_0x16bdc0)['then'](getUser(_0x339d17,_0x24a47d,_0x16bdc0))[_0x80c2('0x11')](getEndUser(_0x339d17,_0x24a47d,_0x16bdc0))[_0x80c2('0x11')](getTicket(_0x339d17,_0x24a47d,_0x16bdc0,_0x35dea3,_0x16b608))[_0x80c2('0x11')](function(_0x51b8ce){logger[_0x80c2('0xf')](util[_0x80c2('0x28')](_0x80c2('0x4c'),_0x51b8ce['ticketId']));if(_0x339d17!==_0x80c2('0x4d')){logger[_0x80c2('0xf')]('['+[_0x339d17[_0x80c2('0x25')]()]+']',_0x80c2('0x4e'));emit(_0x16bdc0,_0x279fc5['name'],_0x51b8ce[_0x80c2('0x2b')]);}})[_0x80c2('0x24')](function(_0x3c1cf7){logger['error']('['+[_0x339d17[_0x80c2('0x25')]()]+_0x80c2('0x4f'),util[_0x80c2('0x50')](_0x3c1cf7,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 58e0dd9..cc49f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a8f=['find','Configurations','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zendesk','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','%s\x20account\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./freshsales','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','data1','toLowerCase'];(function(_0x15ef48,_0x2f90a5){var _0x146840=function(_0x4abaaf){while(--_0x4abaaf){_0x15ef48['push'](_0x15ef48['shift']());}};_0x146840(++_0x2f90a5);}(_0x5a8f,0x1be));var _0xf5a8=function(_0x2fc5db,_0x2253b1){_0x2fc5db=_0x2fc5db-0x0;var _0x1ef11b=_0x5a8f[_0x2fc5db];return _0x1ef11b;};'use strict';var _=require(_0xf5a8('0x0'));var util=require(_0xf5a8('0x1'));var zendesk=require(_0xf5a8('0x2'));var salesforce=require(_0xf5a8('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xf5a8('0x4'));var zoho=require(_0xf5a8('0x5'));var desk=require(_0xf5a8('0x6'));var vtiger=require(_0xf5a8('0x7'));var servicenow=require(_0xf5a8('0x8'));var dynamics365=require('./dynamics365');var freshsales=require(_0xf5a8('0x9'));var integrations=['zendesk',_0xf5a8('0xa'),_0xf5a8('0xb'),_0xf5a8('0xc'),_0xf5a8('0xd'),_0xf5a8('0xe'),_0xf5a8('0xf'),_0xf5a8('0x10'),_0xf5a8('0x11'),_0xf5a8('0x12')];exports[_0xf5a8('0x13')]=function(_0xab7d5,_0x22ad75,_0x1bc8b3,_0x2274cd,_0x16853c,_0x5695e8){if(_0x1bc8b3){if(_['includes'](integrations,_0xab7d5[_0xf5a8('0x14')][_0xf5a8('0x15')]())){try{var _0x36bbcd=null;var _0x3653f8='';var _0x599772=_0x1bc8b3[_0xab7d5[_0xf5a8('0x14')][_0xf5a8('0x15')]()];if(_0x599772){var _0x633f56=_0x599772[_0xab7d5['data2']];if(_0x633f56){var _0x548d4e=_[_0xf5a8('0x16')](_0x633f56[_0xf5a8('0x17')],{'id':parseInt(_0xab7d5['data3'],0xa)});if(_0x548d4e){if(_0x2274cd){if(_0x16853c&&_0x22ad75[_0xf5a8('0x18')]){_0x3653f8='queue';}else if(_0x22ad75[_0xf5a8('0x19')]){_0x3653f8=_0xf5a8('0x1a');}else{console[_0xf5a8('0x1b')](_0xf5a8('0x1c'),_0x22ad75);}}else{_0x3653f8=_0xf5a8('0x1d');}switch(_0xab7d5[_0xf5a8('0x14')][_0xf5a8('0x15')]()){case _0xf5a8('0x1e'):zendesk[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case _0xf5a8('0xa'):salesforce[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case _0xf5a8('0xb'):sugarcrm[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case'freshdesk':freshdesk[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case _0xf5a8('0xd'):zoho[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case _0xf5a8('0xe'):desk[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case _0xf5a8('0xf'):vtiger[_0x3653f8](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8);break;case'freshsales':freshsales['cs'](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8,_0x3653f8);break;case _0xf5a8('0x12'):servicenow['cs'](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8,_0x3653f8);break;case'dynamics365':dynamics365['cs'](_0xab7d5,_0x22ad75,_0x548d4e,_0x2274cd,_0x16853c,_0x633f56,_0x5695e8,_0x3653f8);break;default:console[_0xf5a8('0x1b')](_0xf5a8('0x1f'));}}else{_0x36bbcd=require('../../../../config/logger')(_0xab7d5[_0xf5a8('0x14')][_0xf5a8('0x15')]());_0x36bbcd[_0xf5a8('0x20')](_0xf5a8('0x21'),util[_0xf5a8('0x22')](_0xf5a8('0x23'),_0xab7d5['data1'][_0xf5a8('0x15')](),_0xab7d5[_0xf5a8('0x24')]));}}else{_0x36bbcd=require('../../../../config/logger')(_0xab7d5['data1'][_0xf5a8('0x15')]());_0x36bbcd['error'](_0xf5a8('0x21'),util[_0xf5a8('0x22')](_0xf5a8('0x25'),_0xab7d5[_0xf5a8('0x14')][_0xf5a8('0x15')](),_0xab7d5[_0xf5a8('0x26')]));}}else{}}catch(_0x497548){console[_0xf5a8('0x20')](_0x497548);}}}};
\ No newline at end of file
+var _0x6797=['./vtiger','./dynamics365','./freshsales','salesforce','freshdesk','zoho','desk','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zendesk','vtiger','unknown\x20integration','../../../../config/logger','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','error','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk'];(function(_0x42a643,_0x1be806){var _0xcdbbd5=function(_0x448a43){while(--_0x448a43){_0x42a643['push'](_0x42a643['shift']());}};_0xcdbbd5(++_0x1be806);}(_0x6797,0x94));var _0x7679=function(_0x59c345,_0x278e1e){_0x59c345=_0x59c345-0x0;var _0xa5c38a=_0x6797[_0x59c345];return _0xa5c38a;};'use strict';var _=require(_0x7679('0x0'));var util=require(_0x7679('0x1'));var zendesk=require(_0x7679('0x2'));var salesforce=require(_0x7679('0x3'));var sugarcrm=require(_0x7679('0x4'));var freshdesk=require(_0x7679('0x5'));var zoho=require(_0x7679('0x6'));var desk=require(_0x7679('0x7'));var vtiger=require(_0x7679('0x8'));var servicenow=require('./servicenow');var dynamics365=require(_0x7679('0x9'));var freshsales=require(_0x7679('0xa'));var integrations=['zendesk',_0x7679('0xb'),'sugarcrm',_0x7679('0xc'),_0x7679('0xd'),_0x7679('0xe'),'vtiger',_0x7679('0xf'),_0x7679('0x10'),_0x7679('0x11')];exports[_0x7679('0x12')]=function(_0x228bbe,_0x24e5b7,_0x1f4207,_0x5a7433,_0x45ecfe,_0x22e45e){if(_0x1f4207){if(_[_0x7679('0x13')](integrations,_0x228bbe[_0x7679('0x14')][_0x7679('0x15')]())){try{var _0x3ff7ff=null;var _0x25c020='';var _0x474e3a=_0x1f4207[_0x228bbe['data1'][_0x7679('0x15')]()];if(_0x474e3a){var _0x593d69=_0x474e3a[_0x228bbe[_0x7679('0x16')]];if(_0x593d69){var _0x2e504b=_['find'](_0x593d69[_0x7679('0x17')],{'id':parseInt(_0x228bbe[_0x7679('0x18')],0xa)});if(_0x2e504b){if(_0x5a7433){if(_0x45ecfe&&_0x24e5b7['queue']){_0x25c020=_0x7679('0x19');}else if(_0x24e5b7[_0x7679('0x1a')]){_0x25c020=_0x7679('0x1b');}else{console[_0x7679('0x1c')](_0x7679('0x1d'),_0x24e5b7);}}else{_0x25c020=_0x7679('0x1e');}switch(_0x228bbe[_0x7679('0x14')][_0x7679('0x15')]()){case _0x7679('0x1f'):zendesk[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case _0x7679('0xb'):salesforce[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case'sugarcrm':sugarcrm[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case _0x7679('0xc'):freshdesk[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case _0x7679('0xd'):zoho[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case'desk':desk[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case _0x7679('0x20'):vtiger[_0x25c020](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e);break;case _0x7679('0x10'):freshsales['cs'](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e,_0x25c020);break;case _0x7679('0x11'):servicenow['cs'](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e,_0x25c020);break;case _0x7679('0xf'):dynamics365['cs'](_0x228bbe,_0x24e5b7,_0x2e504b,_0x5a7433,_0x45ecfe,_0x593d69,_0x22e45e,_0x25c020);break;default:console[_0x7679('0x1c')](_0x7679('0x21'));}}else{_0x3ff7ff=require(_0x7679('0x22'))(_0x228bbe['data1'][_0x7679('0x15')]());_0x3ff7ff['error'](_0x7679('0x23'),util[_0x7679('0x24')](_0x7679('0x25'),_0x228bbe[_0x7679('0x14')][_0x7679('0x15')](),_0x228bbe[_0x7679('0x18')]));}}else{_0x3ff7ff=require(_0x7679('0x22'))(_0x228bbe[_0x7679('0x14')][_0x7679('0x15')]());_0x3ff7ff[_0x7679('0x26')]('[EXEC]',util[_0x7679('0x24')]('%s\x20account\x20#%s\x20not\x20found',_0x228bbe['data1']['toLowerCase'](),_0x228bbe['data2']));}}else{}}catch(_0x121ac2){console[_0x7679('0x26')](_0x121ac2);}}}};
\ No newline at end of file
index d2334fa..2722d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5584=['password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','none','[OUTBOUND]','email','Fields','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','instanceUrl','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','calleridname',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','getString','Descriptions','ticketType','Task','endUserType','contact','WhoId','account','ContactId','AccountId','leadId','info','create','isNil','validateEmail','sobject','User','find','execute','length','Email','Agent\x20%s\x20found.','resolve','Name','identity','then','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','cloneDeep','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','lead','first','Phone','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Caller\x20-\x20%s','<unknown>','No\x20Company','upperFirst','forEach','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name'];(function(_0x5b1a00,_0x21f827){var _0x10b188=function(_0x316dff){while(--_0x316dff){_0x5b1a00['push'](_0x5b1a00['shift']());}};_0x10b188(++_0x21f827);}(_0x5584,0xa9));var _0x4558=function(_0x103605,_0x1f1415){_0x103605=_0x103605-0x0;var _0xeb2b20=_0x5584[_0x103605];return _0xeb2b20;};'use strict';var _=require('lodash');var rp=require(_0x4558('0x0'));var moment=require(_0x4558('0x1'));var BPromise=require(_0x4558('0x2'));var md5=require('md5');var jsforce=require(_0x4558('0x3'));var util=require(_0x4558('0x4'));var Redis=require('ioredis');var intUtil=require(_0x4558('0x5'));var config=require(_0x4558('0x6'));var logger=require(_0x4558('0x7'))(_0x4558('0x8'));config[_0x4558('0x9')]=_[_0x4558('0xa')](config[_0x4558('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x4558('0xb'))(new Redis(config[_0x4558('0x9')]));function emit(_0x536e53,_0x137a83,_0x25e9b0){io['to'](_0x536e53)['emit'](_0x137a83,_0x25e9b0);}function getTicket(_0x14604b,_0x559628,_0x1cbbf7,_0x56f557,_0x2309e2,_0x370b69,_0x715a74,_0x2a2b51){var _0x8431a8=Object['assign']({},{'OwnerId':_0x559628['id'],'Subject':intUtil[_0x4558('0xc')](_0x56f557['Subjects'],_0x2309e2,'\x20'),'Description':intUtil[_0x4558('0xc')](_0x56f557[_0x4558('0xd')],_0x2309e2,'\x0a')},getCustomFields(_0x370b69,_0x2309e2));if(_0x1cbbf7){if(_0x56f557[_0x4558('0xe')]===_0x4558('0xf')){_0x8431a8['ActivityDate']=moment['utc']();_0x8431a8['IsReminderSet']=![];_0x8431a8['IsRecurrence']=![];if(_0x1cbbf7[_0x4558('0x10')]===_0x4558('0x11')||_0x1cbbf7[_0x4558('0x10')]==='lead'){_0x8431a8[_0x4558('0x12')]=_0x1cbbf7['id'];}else if(_0x1cbbf7['endUserType']===_0x4558('0x13')){_0x8431a8['WhatId']=_0x1cbbf7['id'];}}else if(_0x56f557[_0x4558('0xe')]==='Case'){if(_0x1cbbf7[_0x4558('0x10')]===_0x4558('0x11')){_0x8431a8[_0x4558('0x14')]=_0x1cbbf7['id'];}else if(_0x1cbbf7['endUserType']===_0x4558('0x13')){_0x8431a8[_0x4558('0x15')]=_0x1cbbf7['id'];}else if(_0x1cbbf7[_0x4558('0x10')]==='lead'&&_0x56f557[_0x4558('0x16')]){_0x8431a8[_0x56f557[_0x4558('0x16')]]=_0x1cbbf7['id'];}else{logger[_0x4558('0x17')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x715a74['sobject'](_0x56f557[_0x4558('0xe')])[_0x4558('0x18')](_0x8431a8);}function getUser(_0x502bc5,_0x38cb46,_0xb1a92e){if(!_[_0x4558('0x19')](_0x38cb46)&&intUtil[_0x4558('0x1a')](_0x38cb46)){var _0x51c11f={'Email':_0x38cb46};var _0x402611={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xb1a92e[_0x4558('0x1b')](_0x4558('0x1c'))[_0x4558('0x1d')](_0x51c11f,_0x402611)[_0x4558('0x1e')]()['then'](function(_0x3d02eb){if(_0x3d02eb[_0x4558('0x1f')]){var _0x563b9c=_['find'](_0x3d02eb,function(_0x1a501c){return _0x1a501c[_0x4558('0x20')]===_0x38cb46;});if(_0x563b9c){logger[_0x4558('0x17')](_0x4558('0x21'),_0x38cb46);return BPromise[_0x4558('0x22')]({'id':_0x563b9c['Id'],'name':_0x563b9c[_0x4558('0x23')]});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x38cb46);return _0xb1a92e[_0x4558('0x24')]()[_0x4558('0x25')](function(_0x1704be){return BPromise[_0x4558('0x22')]({'id':_0x1704be['user_id'],'name':_0x1704be[_0x4558('0x26')]});});}});}else{logger[_0x4558('0x17')](_0x4558('0x27'),_0x38cb46);return _0xb1a92e[_0x4558('0x24')]()[_0x4558('0x25')](function(_0x21018a){return BPromise[_0x4558('0x22')]({'id':_0x21018a[_0x4558('0x28')],'name':_0x21018a[_0x4558('0x26')]});});}}function getEndUser(_0x7f5fc4,_0x31e1d3,_0x229013,_0x13d3b3,_0x17518c){var _0x5a9d69={'$or':{'Phone':_0x13d3b3}};var _0xd065eb={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x4558('0x22')]()['then'](function(){logger['info'](_0x4558('0x29'),_0x13d3b3,_0x31e1d3[_0x4558('0x2a')]);switch(_0x31e1d3['moduleSearch']){case _0x4558('0x2b'):var _0xc3bfa2=_['cloneDeep'](_0x5a9d69);if(_0x31e1d3[_0x4558('0x2c')]){var _0x128e04={};_0x128e04[_0x31e1d3[_0x4558('0x2c')]]=_0x13d3b3;_[_0x4558('0x2d')](_0xc3bfa2[_0x4558('0x2e')],_0x128e04);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x2f'))[_0x4558('0x1d')](_0xc3bfa2,_0xd065eb)['execute']()[_0x4558('0x25')](function(_0x38e126){if(_0x38e126&&_0x38e126[_0x4558('0x1f')]){return _0x38e126;}else{var _0x5e5174=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3[_0x4558('0x31')]){var _0x40f737={};_0x40f737[_0x31e1d3[_0x4558('0x31')]]=_0x13d3b3;_[_0x4558('0x2d')](_0x5e5174[_0x4558('0x2e')],_0x40f737);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x32'))[_0x4558('0x1d')](_0x5e5174,_0xd065eb);}});case _0x4558('0x33'):var _0x479238=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3[_0x4558('0x34')]){var _0x128e04={};_0x128e04[_0x31e1d3[_0x4558('0x34')]]=_0x13d3b3;_['merge'](_0x479238[_0x4558('0x2e')],_0x128e04);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x35'))[_0x4558('0x1d')](_0x479238,_0xd065eb)[_0x4558('0x1e')]()[_0x4558('0x25')](function(_0xb8340f){if(_0xb8340f&&_0xb8340f[_0x4558('0x1f')]){return _0xb8340f;}else{var _0x47dd15=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3[_0x4558('0x2c')]){var _0x20aa35={};_0x20aa35[_0x31e1d3['additionalSearchContact']]=_0x13d3b3;_[_0x4558('0x2d')](_0x47dd15[_0x4558('0x2e')],_0x20aa35);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x2f'))[_0x4558('0x1d')](_0x47dd15,_0xd065eb)[_0x4558('0x25')](function(_0x119644){if(_0x119644&&_0x119644[_0x4558('0x1f')]){return _0x119644;}else{var _0x5a84e0=_['cloneDeep'](_0x5a9d69);if(_0x31e1d3['additionalSearchLead']){var _0x59eaee={};_0x59eaee[_0x31e1d3[_0x4558('0x31')]]=_0x13d3b3;_['merge'](_0x5a84e0[_0x4558('0x2e')],_0x59eaee);}return _0x17518c['sobject'](_0x4558('0x32'))[_0x4558('0x1d')](_0x5a84e0,_0xd065eb);}});}});case'contact':var _0xc3bfa2=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3[_0x4558('0x2c')]){var _0x128e04={};_0x128e04[_0x31e1d3[_0x4558('0x2c')]]=_0x13d3b3;_[_0x4558('0x2d')](_0xc3bfa2[_0x4558('0x2e')],_0x128e04);}return _0x17518c[_0x4558('0x1b')]('Contact')[_0x4558('0x1d')](_0xc3bfa2,_0xd065eb)[_0x4558('0x1e')]();case _0x4558('0x36'):var _0x58aa6e=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3['additionalSearchLead']){var _0x128e04={};_0x128e04[_0x31e1d3[_0x4558('0x31')]]=_0x13d3b3;_[_0x4558('0x2d')](_0x58aa6e[_0x4558('0x2e')],_0x128e04);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x32'))[_0x4558('0x1d')](_0x58aa6e,_0xd065eb);case'account':var _0x479238=_[_0x4558('0x30')](_0x5a9d69);if(_0x31e1d3[_0x4558('0x34')]){var _0x128e04={};_0x128e04[_0x31e1d3[_0x4558('0x34')]]=_0x13d3b3;_[_0x4558('0x2d')](_0x479238['$or'],_0x128e04);}return _0x17518c[_0x4558('0x1b')](_0x4558('0x35'))[_0x4558('0x1d')](_0x479238,_0xd065eb);default:return null;}})[_0x4558('0x25')](function(_0x3fcaf4){if(_0x3fcaf4&&_0x3fcaf4['length']){var _0x4b4e67=_[_0x4558('0x37')](_0x3fcaf4);if(_0x4b4e67){return BPromise['resolve']({'id':_0x4b4e67['Id'],'name':_0x4b4e67[_0x4558('0x23')],'phone':_0x4b4e67[_0x4558('0x38')],'endUserType':_0x4b4e67['attributes']['type'][_0x4558('0x39')]()});}}})[_0x4558('0x25')](function(_0x1406c5){if(_0x1406c5){logger[_0x4558('0x17')](_0x4558('0x3a'),_0x1406c5[_0x4558('0x10')],_0x13d3b3);return BPromise['resolve'](_0x1406c5);}else{logger[_0x4558('0x17')](_0x4558('0x3b'),_0x13d3b3);var _0x5e6d1d={'Phone':_0x13d3b3};if(_0x31e1d3[_0x4558('0x3c')]){if(_0x31e1d3['moduleCreate']===_0x4558('0x11')){logger[_0x4558('0x17')](_0x4558('0x3d'),_0x13d3b3,_0x31e1d3[_0x4558('0x3c')]);_0x5e6d1d[_0x4558('0x3e')]=_0x229013!=='<unknown>'?_0x229013:util[_0x4558('0x3f')](_0x4558('0x40'),_0x13d3b3);}else if(_0x31e1d3[_0x4558('0x3c')]===_0x4558('0x36')){logger[_0x4558('0x17')](_0x4558('0x3d'),_0x13d3b3,_0x31e1d3[_0x4558('0x3c')]);_0x5e6d1d['LastName']=_0x229013!==_0x4558('0x41')?_0x229013:util['format'](_0x4558('0x40'),_0x13d3b3);_0x5e6d1d['Company']=_0x4558('0x42');}else if(_0x31e1d3['moduleCreate']===_0x4558('0x13')){logger[_0x4558('0x17')](_0x4558('0x3d'),_0x13d3b3,_0x31e1d3[_0x4558('0x3c')]);_0x5e6d1d['Name']=_0x229013!==_0x4558('0x41')?_0x229013:util[_0x4558('0x3f')](_0x4558('0x40'),_0x13d3b3);}else{return null;}}return _0x17518c[_0x4558('0x1b')](_[_0x4558('0x43')](_0x31e1d3[_0x4558('0x3c')]))[_0x4558('0x18')](_0x5e6d1d)[_0x4558('0x25')](function(_0x543dff){return BPromise[_0x4558('0x22')]({'id':_0x543dff['id'],'endUserType':_0x31e1d3[_0x4558('0x3c')]});});}});}function getCustomFields(_0x421b4c,_0xd87b1c){var _0x474ceb={};if(_0x421b4c[_0x4558('0x1f')]>0x0){_[_0x4558('0x44')](_0x421b4c,function(_0x105517){if(_['includes'](['string',_0x4558('0x45')],_0x105517[_0x4558('0x46')])&&_0x105517['idField']){_0x474ceb[_0x105517[_0x4558('0x47')]]=_0x105517[_0x4558('0x48')]['toString']();}else if(_0x105517[_0x4558('0x46')]===_0x4558('0x49')&&_0x105517['variableName']&&_0x105517[_0x4558('0x47')]){_0xd87b1c[_0x105517[_0x4558('0x4a')]]&&(_0x474ceb[_0x105517[_0x4558('0x47')]]=_0xd87b1c[_0x105517[_0x4558('0x4a')]][_0x4558('0x4b')]());}else if(_0x105517['type']===_0x4558('0x4c')&&_0x105517[_0x4558('0x4d')]&&_0x105517[_0x4558('0x4d')][_0x4558('0x4e')]&&_0x105517[_0x4558('0x47')]){_0xd87b1c[_0x105517[_0x4558('0x4d')]['name'][_0x4558('0x39')]()]&&(_0x474ceb[_0x105517[_0x4558('0x47')]]=_0xd87b1c[_0x105517['Variable'][_0x4558('0x4e')][_0x4558('0x39')]()][_0x4558('0x4b')]());}});}return _0x474ceb;}function getConnection(_0x42df53){var _0x80c1c0=_0x42df53[_0x4558('0x4f')][_0x4558('0x50')](_0x42df53[_0x4558('0x51')]);var _0x3f1b5a=new jsforce[(_0x4558('0x52'))]({'oauth2':{'loginUrl':_0x42df53[_0x4558('0x53')]||_0x4558('0x54'),'clientId':_0x42df53[_0x4558('0x55')],'clientSecret':_0x42df53[_0x4558('0x56')]}});return _0x3f1b5a['login'](_0x42df53[_0x4558('0x57')],_0x80c1c0)['then'](function(){logger['info'](_0x4558('0x58'));return _0x3f1b5a;});}exports[_0x4558('0x59')]=function(_0x1f6065,_0x3a49f2,_0x4531a3,_0x3a438f,_0x20cc34,_0x51ebb2){var _0x5d155f,_0x1699aa,_0x5ed596,_0x103fb1;_0x51ebb2[_0x4558('0x5a')]=intUtil[_0x4558('0x5b')](_0x51ebb2[_0x4558('0x5a')]);_0x51ebb2[_0x4558('0x53')]=intUtil[_0x4558('0x5b')](_0x51ebb2[_0x4558('0x53')]);if(_0x20cc34&&_0x20cc34['monitor_format']){logger[_0x4558('0x17')](_0x4558('0x5c'),_0x4558('0x5d'));_0x3a49f2[_0x4558('0x5e')]=util['format'](_0x4558('0x5f'),_0x51ebb2[_0x4558('0x5a')],_0x3a49f2[_0x4558('0x60')],md5(_0x3a49f2[_0x4558('0x60')]));}else{_0x3a49f2[_0x4558('0x5e')]='';}return getConnection(_0x51ebb2)[_0x4558('0x25')](function(_0x3ce130){_0x103fb1=_0x3ce130;return getUser(_0x51ebb2,_0x3a438f['email'],_0x103fb1);})['then'](function(_0x3ec8fc){_0x5d155f=_0x3ec8fc;return getEndUser(_0x51ebb2,_0x4531a3,_0x3a49f2['calleridname'],_0x3a49f2[_0x4558('0x61')],_0x103fb1);})[_0x4558('0x25')](function(_0x2af17c){_0x1699aa=_0x2af17c;return getTicket(_0x51ebb2,_0x5d155f,_0x1699aa,_0x4531a3,_0x3a49f2,_0x4531a3['Fields'],_0x103fb1,_0x4558('0x59'));})[_0x4558('0x25')](function(_0x82f3fa){_0x5ed596=_0x82f3fa;logger[_0x4558('0x17')](_0x4558('0x62'),_0x5ed596['id']);logger[_0x4558('0x17')](_0x4558('0x63'),_0x5ed596['id'],_0x3a438f[_0x4558('0x4e')],_0x51ebb2[_0x4558('0x46')]);switch(_0x51ebb2[_0x4558('0x46')]){case'integrationTab':emit(util[_0x4558('0x3f')](_0x4558('0x64'),_0x3a438f['name']),_0x4558('0x65'),{'recordId':_0x5ed596['id']});break;case _0x4558('0x66'):emit(util[_0x4558('0x3f')](_0x4558('0x64'),_0x3a438f[_0x4558('0x4e')]),_0x4558('0x67'),{'uri':util[_0x4558('0x3f')](_0x4558('0x68'),_0x103fb1['instanceUrl'],_0x5ed596['id'])});break;default:logger[_0x4558('0x69')](_0x4558('0x6a'));}})[_0x4558('0x6b')](function(_0x3aef91){logger[_0x4558('0x69')]('[QUEUE]',_0x3aef91);});};exports[_0x4558('0x6c')]=function(_0x1fb71d,_0xfb79bd,_0x3a8536,_0x4c386a,_0x23563d,_0x19f3dd,_0x4151bf){var _0x247b72,_0x55babb,_0x239ab9,_0x30835d;_0x19f3dd['serverUrl']=intUtil[_0x4558('0x5b')](_0x19f3dd['serverUrl']);_0x19f3dd['remoteUri']=intUtil[_0x4558('0x5b')](_0x19f3dd['remoteUri']);if(_0x4151bf&&_0x4151bf[_0x4558('0x6d')]&&_0x4151bf[_0x4558('0x6d')]!==_0x4558('0x6e')){logger[_0x4558('0x17')](_0x4558('0x6f'),_0x4558('0x5d'));_0xfb79bd[_0x4558('0x5e')]=util['format'](_0x4558('0x5f'),_0x19f3dd[_0x4558('0x5a')],_0xfb79bd[_0x4558('0x60')],md5(_0xfb79bd[_0x4558('0x60')]));}return getConnection(_0x19f3dd)[_0x4558('0x25')](function(_0xffb78d){_0x30835d=_0xffb78d;return getUser(_0x19f3dd,_0x4c386a[_0x4558('0x70')],_0x30835d);})[_0x4558('0x25')](function(_0x36ebca){_0x247b72=_0x36ebca;return getEndUser(_0x19f3dd,_0x3a8536,_0xfb79bd['destcalleridname'],_0xfb79bd['destcalleridnum'],_0x30835d);})['then'](function(_0x319b1c){_0x55babb=_0x319b1c;return getTicket(_0x19f3dd,_0x247b72,_0x55babb,_0x3a8536,_0xfb79bd,_0x3a8536[_0x4558('0x71')],_0x30835d,_0x4558('0x6c'));})[_0x4558('0x25')](function(_0x21afe8){_0x239ab9=_0x21afe8;logger[_0x4558('0x17')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x239ab9['id']);logger[_0x4558('0x17')](_0x4558('0x72'),_0x239ab9['id'],_0x4c386a[_0x4558('0x4e')],_0x19f3dd[_0x4558('0x46')]);switch(_0x19f3dd[_0x4558('0x46')]){case _0x4558('0x73'):emit(util[_0x4558('0x3f')]('user:%s',_0x4c386a[_0x4558('0x4e')]),'trigger:salesforce:display',{'recordId':_0x239ab9['id']});break;case _0x4558('0x66'):emit(util['format'](_0x4558('0x64'),_0x4c386a['name']),_0x4558('0x67'),{'uri':util[_0x4558('0x3f')](_0x4558('0x68'),_0x30835d[_0x4558('0x74')],_0x239ab9['id'])});break;default:logger[_0x4558('0x69')]('[OUTBOUND]',_0x4558('0x75'));}})[_0x4558('0x6b')](function(_0x34703a){logger[_0x4558('0x69')]('[OUTBOUND]',_0x34703a);});};exports[_0x4558('0x76')]=function(_0x200ab6,_0x1e8aa5,_0x120362,_0x418eed,_0x17ad2e,_0x35508d){var _0x45ec49,_0x4cad32,_0x8747f9,_0x2f38fa;_0x35508d[_0x4558('0x5a')]=intUtil[_0x4558('0x5b')](_0x35508d[_0x4558('0x5a')]);_0x35508d[_0x4558('0x53')]=intUtil[_0x4558('0x5b')](_0x35508d['remoteUri']);if(_0x17ad2e&&_0x17ad2e[_0x4558('0x77')]){logger[_0x4558('0x17')]('['+_0x1e8aa5[_0x4558('0x78')][_0x4558('0x79')]()+']',_0x4558('0x5d'));_0x1e8aa5[_0x4558('0x5e')]=util[_0x4558('0x3f')](_0x4558('0x5f'),_0x35508d[_0x4558('0x5a')],_0x1e8aa5[_0x4558('0x60')],md5(_0x1e8aa5[_0x4558('0x60')]));}else{_0x1e8aa5[_0x4558('0x5e')]='';}return getConnection(_0x35508d)[_0x4558('0x25')](function(_0x532932){_0x2f38fa=_0x532932;if(!_[_0x4558('0x19')](_0x418eed)){return getUser(_0x35508d,_0x418eed['name'],_0x2f38fa);}else{return getUser(_0x35508d,null,_0x2f38fa);}})[_0x4558('0x25')](function(_0x34ffed){_0x45ec49=_0x34ffed;return getEndUser(_0x35508d,_0x120362,_0x1e8aa5[_0x4558('0x7a')],_0x1e8aa5['calleridnum'],_0x2f38fa);})[_0x4558('0x25')](function(_0xb391d3){_0x4cad32=_0xb391d3;return getTicket(_0x35508d,_0x45ec49,_0x4cad32,_0x120362,_0x1e8aa5,_0x120362[_0x4558('0x71')],_0x2f38fa);})['then'](function(_0x314b01){_0x8747f9=_0x314b01;logger[_0x4558('0x17')]('['+_0x1e8aa5['lastevent'][_0x4558('0x79')]()+']\x20Ticket\x20%s\x20created.',_0x8747f9['id']);logger[_0x4558('0x17')]('['+_0x1e8aa5['lastevent'][_0x4558('0x79')]()+_0x4558('0x7b'),_0x35508d[_0x4558('0x46')]);})[_0x4558('0x6b')](function(_0x496437){logger['error']('['+_0x1e8aa5[_0x4558('0x78')]['toUpperCase']()+']',_0x496437);});};
\ No newline at end of file
+var _0xd540=['cloneDeep','additionalSearchContact','$or','additionalSearchLead','merge','Lead','additionalSearchAccount','Account','Contact','first','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','forEach','includes','string','idField','content','variable','variableName','customVariable','Variable','name','toLowerCase','securityToken','Connection','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','serverUrl','remoteUri','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','email','calleridname','calleridnum','Fields','queue','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','bluebird','jsforce','util','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','ticketType','Case','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','find','execute','then','length','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','resolve','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch'];(function(_0x19cbde,_0x379fd5){var _0x104633=function(_0x501a22){while(--_0x501a22){_0x19cbde['push'](_0x19cbde['shift']());}};_0x104633(++_0x379fd5);}(_0xd540,0xc8));var _0x0d54=function(_0xcaecd3,_0x2d0193){_0xcaecd3=_0xcaecd3-0x0;var _0x5da8a1=_0xd540[_0xcaecd3];return _0x5da8a1;};'use strict';var _=require(_0x0d54('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0d54('0x1'));var md5=require('md5');var jsforce=require(_0x0d54('0x2'));var util=require(_0x0d54('0x3'));var Redis=require('ioredis');var intUtil=require(_0x0d54('0x4'));var config=require(_0x0d54('0x5'));var logger=require(_0x0d54('0x6'))(_0x0d54('0x7'));config[_0x0d54('0x8')]=_[_0x0d54('0x9')](config[_0x0d54('0x8')],{'host':_0x0d54('0xa'),'port':0x18eb});var io=require(_0x0d54('0xb'))(new Redis(config[_0x0d54('0x8')]));function emit(_0x40788e,_0x1772fb,_0x38171d){io['to'](_0x40788e)['emit'](_0x1772fb,_0x38171d);}function getTicket(_0x1fa9cd,_0x57e5b6,_0x8f2802,_0x86adb5,_0x2a6844,_0x1f2c0e,_0x3ba93b,_0x1f8ac9){var _0x47da03=Object[_0x0d54('0xc')]({},{'OwnerId':_0x57e5b6['id'],'Subject':intUtil[_0x0d54('0xd')](_0x86adb5['Subjects'],_0x2a6844,'\x20'),'Description':intUtil['getString'](_0x86adb5[_0x0d54('0xe')],_0x2a6844,'\x0a')},getCustomFields(_0x1f2c0e,_0x2a6844));if(_0x8f2802){if(_0x86adb5['ticketType']===_0x0d54('0xf')){_0x47da03[_0x0d54('0x10')]=moment[_0x0d54('0x11')]();_0x47da03[_0x0d54('0x12')]=![];_0x47da03[_0x0d54('0x13')]=![];if(_0x8f2802[_0x0d54('0x14')]===_0x0d54('0x15')||_0x8f2802[_0x0d54('0x14')]===_0x0d54('0x16')){_0x47da03[_0x0d54('0x17')]=_0x8f2802['id'];}else if(_0x8f2802['endUserType']===_0x0d54('0x18')){_0x47da03[_0x0d54('0x19')]=_0x8f2802['id'];}}else if(_0x86adb5[_0x0d54('0x1a')]===_0x0d54('0x1b')){if(_0x8f2802[_0x0d54('0x14')]===_0x0d54('0x15')){_0x47da03['ContactId']=_0x8f2802['id'];}else if(_0x8f2802[_0x0d54('0x14')]===_0x0d54('0x18')){_0x47da03[_0x0d54('0x1c')]=_0x8f2802['id'];}else if(_0x8f2802['endUserType']===_0x0d54('0x16')&&_0x86adb5[_0x0d54('0x1d')]){_0x47da03[_0x86adb5[_0x0d54('0x1d')]]=_0x8f2802['id'];}else{logger[_0x0d54('0x1e')](_0x0d54('0x1f'));}}}return _0x3ba93b[_0x0d54('0x20')](_0x86adb5[_0x0d54('0x1a')])[_0x0d54('0x21')](_0x47da03);}function getUser(_0x3e6fea,_0x5edd6c,_0x2bc6cd){if(!_[_0x0d54('0x22')](_0x5edd6c)&&intUtil['validateEmail'](_0x5edd6c)){var _0x2a823c={'Email':_0x5edd6c};var _0x4ae91a={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2bc6cd[_0x0d54('0x20')]('User')[_0x0d54('0x23')](_0x2a823c,_0x4ae91a)[_0x0d54('0x24')]()[_0x0d54('0x25')](function(_0x5e76c4){if(_0x5e76c4[_0x0d54('0x26')]){var _0x483ccc=_['find'](_0x5e76c4,function(_0x31f9ad){return _0x31f9ad['Email']===_0x5edd6c;});if(_0x483ccc){logger[_0x0d54('0x1e')](_0x0d54('0x27'),_0x5edd6c);return BPromise['resolve']({'id':_0x483ccc['Id'],'name':_0x483ccc[_0x0d54('0x28')]});}}else{logger[_0x0d54('0x1e')](_0x0d54('0x29'),_0x5edd6c);return _0x2bc6cd[_0x0d54('0x2a')]()['then'](function(_0x5c1b45){return BPromise['resolve']({'id':_0x5c1b45[_0x0d54('0x2b')],'name':_0x5c1b45[_0x0d54('0x2c')]});});}});}else{logger['info'](_0x0d54('0x29'),_0x5edd6c);return _0x2bc6cd[_0x0d54('0x2a')]()['then'](function(_0x1ed834){return BPromise[_0x0d54('0x2d')]({'id':_0x1ed834[_0x0d54('0x2b')],'name':_0x1ed834[_0x0d54('0x2c')]});});}}function getEndUser(_0x451ac2,_0x38c91a,_0x22e007,_0xb13321,_0x5d5c4a){var _0x3b16db={'$or':{'Phone':_0xb13321}};var _0xda3d9b={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x0d54('0x2d')]()['then'](function(){logger[_0x0d54('0x1e')](_0x0d54('0x2e'),_0xb13321,_0x38c91a[_0x0d54('0x2f')]);switch(_0x38c91a[_0x0d54('0x2f')]){case'contact_lead':var _0x408b70=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x31')]){var _0x503e44={};_0x503e44[_0x38c91a['additionalSearchContact']]=_0xb13321;_['merge'](_0x408b70[_0x0d54('0x32')],_0x503e44);}return _0x5d5c4a[_0x0d54('0x20')]('Contact')[_0x0d54('0x23')](_0x408b70,_0xda3d9b)[_0x0d54('0x24')]()['then'](function(_0x20d0a7){if(_0x20d0a7&&_0x20d0a7[_0x0d54('0x26')]){return _0x20d0a7;}else{var _0x16e485=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x33')]){var _0x2181d1={};_0x2181d1[_0x38c91a['additionalSearchLead']]=_0xb13321;_[_0x0d54('0x34')](_0x16e485[_0x0d54('0x32')],_0x2181d1);}return _0x5d5c4a[_0x0d54('0x20')](_0x0d54('0x35'))[_0x0d54('0x23')](_0x16e485,_0xda3d9b);}});case'account_contact_lead':var _0x401a4b=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x36')]){var _0x503e44={};_0x503e44[_0x38c91a[_0x0d54('0x36')]]=_0xb13321;_[_0x0d54('0x34')](_0x401a4b[_0x0d54('0x32')],_0x503e44);}return _0x5d5c4a[_0x0d54('0x20')](_0x0d54('0x37'))[_0x0d54('0x23')](_0x401a4b,_0xda3d9b)[_0x0d54('0x24')]()[_0x0d54('0x25')](function(_0x4e2dc4){if(_0x4e2dc4&&_0x4e2dc4[_0x0d54('0x26')]){return _0x4e2dc4;}else{var _0x2b15b5=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x31')]){var _0x12bcbd={};_0x12bcbd[_0x38c91a[_0x0d54('0x31')]]=_0xb13321;_[_0x0d54('0x34')](_0x2b15b5[_0x0d54('0x32')],_0x12bcbd);}return _0x5d5c4a[_0x0d54('0x20')](_0x0d54('0x38'))[_0x0d54('0x23')](_0x2b15b5,_0xda3d9b)[_0x0d54('0x25')](function(_0x54466a){if(_0x54466a&&_0x54466a[_0x0d54('0x26')]){return _0x54466a;}else{var _0x3fedcc=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x33')]){var _0x10f44a={};_0x10f44a[_0x38c91a[_0x0d54('0x33')]]=_0xb13321;_[_0x0d54('0x34')](_0x3fedcc[_0x0d54('0x32')],_0x10f44a);}return _0x5d5c4a[_0x0d54('0x20')](_0x0d54('0x35'))[_0x0d54('0x23')](_0x3fedcc,_0xda3d9b);}});}});case _0x0d54('0x15'):var _0x408b70=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x31')]){var _0x503e44={};_0x503e44[_0x38c91a[_0x0d54('0x31')]]=_0xb13321;_[_0x0d54('0x34')](_0x408b70[_0x0d54('0x32')],_0x503e44);}return _0x5d5c4a['sobject'](_0x0d54('0x38'))[_0x0d54('0x23')](_0x408b70,_0xda3d9b)[_0x0d54('0x24')]();case _0x0d54('0x16'):var _0x4c167a=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x33')]){var _0x503e44={};_0x503e44[_0x38c91a[_0x0d54('0x33')]]=_0xb13321;_[_0x0d54('0x34')](_0x4c167a[_0x0d54('0x32')],_0x503e44);}return _0x5d5c4a[_0x0d54('0x20')](_0x0d54('0x35'))['find'](_0x4c167a,_0xda3d9b);case _0x0d54('0x18'):var _0x401a4b=_[_0x0d54('0x30')](_0x3b16db);if(_0x38c91a[_0x0d54('0x36')]){var _0x503e44={};_0x503e44[_0x38c91a[_0x0d54('0x36')]]=_0xb13321;_[_0x0d54('0x34')](_0x401a4b[_0x0d54('0x32')],_0x503e44);}return _0x5d5c4a['sobject'](_0x0d54('0x37'))[_0x0d54('0x23')](_0x401a4b,_0xda3d9b);default:return null;}})[_0x0d54('0x25')](function(_0x385e79){if(_0x385e79&&_0x385e79[_0x0d54('0x26')]){var _0x4bbef6=_[_0x0d54('0x39')](_0x385e79);if(_0x4bbef6){return BPromise[_0x0d54('0x2d')]({'id':_0x4bbef6['Id'],'name':_0x4bbef6[_0x0d54('0x28')],'phone':_0x4bbef6['Phone'],'endUserType':_0x4bbef6[_0x0d54('0x3a')][_0x0d54('0x3b')]['toLowerCase']()});}}})[_0x0d54('0x25')](function(_0x251133){if(_0x251133){logger['info'](_0x0d54('0x3c'),_0x251133['endUserType'],_0xb13321);return BPromise[_0x0d54('0x2d')](_0x251133);}else{logger[_0x0d54('0x1e')](_0x0d54('0x3d'),_0xb13321);var _0x55abc4={'Phone':_0xb13321};if(_0x38c91a[_0x0d54('0x3e')]){if(_0x38c91a['moduleCreate']==='contact'){logger[_0x0d54('0x1e')](_0x0d54('0x3f'),_0xb13321,_0x38c91a['moduleCreate']);_0x55abc4[_0x0d54('0x40')]=_0x22e007!==_0x0d54('0x41')?_0x22e007:util[_0x0d54('0x42')]('Caller\x20-\x20%s',_0xb13321);}else if(_0x38c91a[_0x0d54('0x3e')]===_0x0d54('0x16')){logger[_0x0d54('0x1e')](_0x0d54('0x3f'),_0xb13321,_0x38c91a[_0x0d54('0x3e')]);_0x55abc4[_0x0d54('0x40')]=_0x22e007!=='<unknown>'?_0x22e007:util[_0x0d54('0x42')](_0x0d54('0x43'),_0xb13321);_0x55abc4['Company']='No\x20Company';}else if(_0x38c91a[_0x0d54('0x3e')]===_0x0d54('0x18')){logger['info'](_0x0d54('0x3f'),_0xb13321,_0x38c91a[_0x0d54('0x3e')]);_0x55abc4[_0x0d54('0x28')]=_0x22e007!=='<unknown>'?_0x22e007:util[_0x0d54('0x42')](_0x0d54('0x43'),_0xb13321);}else{return null;}}return _0x5d5c4a[_0x0d54('0x20')](_['upperFirst'](_0x38c91a['moduleCreate']))[_0x0d54('0x21')](_0x55abc4)[_0x0d54('0x25')](function(_0x34ee6d){return BPromise[_0x0d54('0x2d')]({'id':_0x34ee6d['id'],'endUserType':_0x38c91a[_0x0d54('0x3e')]});});}});}function getCustomFields(_0x3ae327,_0x2d3ef){var _0x36635b={};if(_0x3ae327[_0x0d54('0x26')]>0x0){_[_0x0d54('0x44')](_0x3ae327,function(_0x4e776f){if(_[_0x0d54('0x45')]([_0x0d54('0x46'),'picklist'],_0x4e776f[_0x0d54('0x3b')])&&_0x4e776f[_0x0d54('0x47')]){_0x36635b[_0x4e776f['idField']]=_0x4e776f[_0x0d54('0x48')]['toString']();}else if(_0x4e776f['type']===_0x0d54('0x49')&&_0x4e776f[_0x0d54('0x4a')]&&_0x4e776f[_0x0d54('0x47')]){_0x2d3ef[_0x4e776f['variableName']]&&(_0x36635b[_0x4e776f[_0x0d54('0x47')]]=_0x2d3ef[_0x4e776f[_0x0d54('0x4a')]]['toString']());}else if(_0x4e776f[_0x0d54('0x3b')]===_0x0d54('0x4b')&&_0x4e776f[_0x0d54('0x4c')]&&_0x4e776f[_0x0d54('0x4c')][_0x0d54('0x4d')]&&_0x4e776f[_0x0d54('0x47')]){_0x2d3ef[_0x4e776f[_0x0d54('0x4c')][_0x0d54('0x4d')][_0x0d54('0x4e')]()]&&(_0x36635b[_0x4e776f[_0x0d54('0x47')]]=_0x2d3ef[_0x4e776f[_0x0d54('0x4c')]['name']['toLowerCase']()]['toString']());}});}return _0x36635b;}function getConnection(_0x3587db){var _0x406c51=_0x3587db['password']['concat'](_0x3587db[_0x0d54('0x4f')]);var _0x425b49=new jsforce[(_0x0d54('0x50'))]({'oauth2':{'loginUrl':_0x3587db['remoteUri']||_0x0d54('0x51'),'clientId':_0x3587db[_0x0d54('0x52')],'clientSecret':_0x3587db[_0x0d54('0x53')]}});return _0x425b49[_0x0d54('0x54')](_0x3587db[_0x0d54('0x55')],_0x406c51)[_0x0d54('0x25')](function(){logger['info'](_0x0d54('0x56'));return _0x425b49;});}exports['queue']=function(_0x4bf588,_0x1ce858,_0x28696f,_0x271375,_0x56ad7a,_0x5b4b9a){var _0x138114,_0x5f3877,_0x1691fd,_0x19f574;_0x5b4b9a[_0x0d54('0x57')]=intUtil['stripTrailingSlash'](_0x5b4b9a[_0x0d54('0x57')]);_0x5b4b9a[_0x0d54('0x58')]=intUtil[_0x0d54('0x59')](_0x5b4b9a[_0x0d54('0x58')]);if(_0x56ad7a&&_0x56ad7a[_0x0d54('0x5a')]){logger['info'](_0x0d54('0x5b'),_0x0d54('0x5c'));_0x1ce858[_0x0d54('0x5d')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b4b9a[_0x0d54('0x57')],_0x1ce858[_0x0d54('0x5e')],md5(_0x1ce858[_0x0d54('0x5e')]));}else{_0x1ce858['recordingURL']='';}return getConnection(_0x5b4b9a)[_0x0d54('0x25')](function(_0x57679c){_0x19f574=_0x57679c;return getUser(_0x5b4b9a,_0x271375[_0x0d54('0x5f')],_0x19f574);})[_0x0d54('0x25')](function(_0x4ce588){_0x138114=_0x4ce588;return getEndUser(_0x5b4b9a,_0x28696f,_0x1ce858[_0x0d54('0x60')],_0x1ce858[_0x0d54('0x61')],_0x19f574);})['then'](function(_0x197e23){_0x5f3877=_0x197e23;return getTicket(_0x5b4b9a,_0x138114,_0x5f3877,_0x28696f,_0x1ce858,_0x28696f[_0x0d54('0x62')],_0x19f574,_0x0d54('0x63'));})[_0x0d54('0x25')](function(_0x5ee871){_0x1691fd=_0x5ee871;logger[_0x0d54('0x1e')](_0x0d54('0x64'),_0x1691fd['id']);logger[_0x0d54('0x1e')](_0x0d54('0x65'),_0x1691fd['id'],_0x271375[_0x0d54('0x4d')],_0x5b4b9a[_0x0d54('0x3b')]);switch(_0x5b4b9a[_0x0d54('0x3b')]){case _0x0d54('0x66'):emit(util[_0x0d54('0x42')](_0x0d54('0x67'),_0x271375['name']),'trigger:salesforce:display',{'recordId':_0x1691fd['id']});break;case _0x0d54('0x68'):emit(util['format'](_0x0d54('0x67'),_0x271375[_0x0d54('0x4d')]),_0x0d54('0x69'),{'uri':util[_0x0d54('0x42')](_0x0d54('0x6a'),_0x19f574[_0x0d54('0x6b')],_0x1691fd['id'])});break;default:logger[_0x0d54('0x6c')](_0x0d54('0x6d'));}})[_0x0d54('0x6e')](function(_0x276469){logger[_0x0d54('0x6c')](_0x0d54('0x5b'),_0x276469);});};exports[_0x0d54('0x6f')]=function(_0x395669,_0x62539b,_0x3e6cf8,_0x319935,_0x3bdd3b,_0x20e599,_0x4d1505){var _0x2d1922,_0x2b2d78,_0x1c8bd1,_0x25ecfd;_0x20e599[_0x0d54('0x57')]=intUtil[_0x0d54('0x59')](_0x20e599['serverUrl']);_0x20e599['remoteUri']=intUtil['stripTrailingSlash'](_0x20e599[_0x0d54('0x58')]);if(_0x4d1505&&_0x4d1505[_0x0d54('0x70')]&&_0x4d1505[_0x0d54('0x70')]!=='none'){logger[_0x0d54('0x1e')](_0x0d54('0x71'),_0x0d54('0x5c'));_0x62539b['recordingURL']=util[_0x0d54('0x42')](_0x0d54('0x72'),_0x20e599['serverUrl'],_0x62539b['uniqueid'],md5(_0x62539b[_0x0d54('0x5e')]));}return getConnection(_0x20e599)['then'](function(_0x2e337){_0x25ecfd=_0x2e337;return getUser(_0x20e599,_0x319935[_0x0d54('0x5f')],_0x25ecfd);})[_0x0d54('0x25')](function(_0x53405b){_0x2d1922=_0x53405b;return getEndUser(_0x20e599,_0x3e6cf8,_0x62539b[_0x0d54('0x73')],_0x62539b[_0x0d54('0x74')],_0x25ecfd);})[_0x0d54('0x25')](function(_0x44c1f4){_0x2b2d78=_0x44c1f4;return getTicket(_0x20e599,_0x2d1922,_0x2b2d78,_0x3e6cf8,_0x62539b,_0x3e6cf8['Fields'],_0x25ecfd,_0x0d54('0x6f'));})[_0x0d54('0x25')](function(_0xaf8974){_0x1c8bd1=_0xaf8974;logger[_0x0d54('0x1e')](_0x0d54('0x75'),_0x1c8bd1['id']);logger[_0x0d54('0x1e')](_0x0d54('0x76'),_0x1c8bd1['id'],_0x319935[_0x0d54('0x4d')],_0x20e599[_0x0d54('0x3b')]);switch(_0x20e599[_0x0d54('0x3b')]){case _0x0d54('0x66'):emit(util[_0x0d54('0x42')](_0x0d54('0x67'),_0x319935[_0x0d54('0x4d')]),'trigger:salesforce:display',{'recordId':_0x1c8bd1['id']});break;case'newTab':emit(util[_0x0d54('0x42')]('user:%s',_0x319935[_0x0d54('0x4d')]),_0x0d54('0x69'),{'uri':util[_0x0d54('0x42')](_0x0d54('0x6a'),_0x25ecfd['instanceUrl'],_0x1c8bd1['id'])});break;default:logger[_0x0d54('0x6c')](_0x0d54('0x71'),'Salesforce\x20account\x20type\x20not\x20recognized');}})['catch'](function(_0x39bc9c){logger[_0x0d54('0x6c')](_0x0d54('0x71'),_0x39bc9c);});};exports[_0x0d54('0x77')]=function(_0x113fc6,_0x5c4df1,_0x133a31,_0xc3d8d5,_0x5f31ef,_0x3a1d4a){var _0x2023af,_0x611f75,_0x5a2e45,_0x2f87a8;_0x3a1d4a[_0x0d54('0x57')]=intUtil['stripTrailingSlash'](_0x3a1d4a[_0x0d54('0x57')]);_0x3a1d4a[_0x0d54('0x58')]=intUtil[_0x0d54('0x59')](_0x3a1d4a[_0x0d54('0x58')]);if(_0x5f31ef&&_0x5f31ef[_0x0d54('0x5a')]){logger[_0x0d54('0x1e')]('['+_0x5c4df1[_0x0d54('0x78')]['toUpperCase']()+']',_0x0d54('0x5c'));_0x5c4df1[_0x0d54('0x5d')]=util[_0x0d54('0x42')](_0x0d54('0x72'),_0x3a1d4a['serverUrl'],_0x5c4df1[_0x0d54('0x5e')],md5(_0x5c4df1[_0x0d54('0x5e')]));}else{_0x5c4df1[_0x0d54('0x5d')]='';}return getConnection(_0x3a1d4a)[_0x0d54('0x25')](function(_0x549301){_0x2f87a8=_0x549301;if(!_[_0x0d54('0x22')](_0xc3d8d5)){return getUser(_0x3a1d4a,_0xc3d8d5[_0x0d54('0x4d')],_0x2f87a8);}else{return getUser(_0x3a1d4a,null,_0x2f87a8);}})[_0x0d54('0x25')](function(_0x2db067){_0x2023af=_0x2db067;return getEndUser(_0x3a1d4a,_0x133a31,_0x5c4df1['calleridname'],_0x5c4df1[_0x0d54('0x61')],_0x2f87a8);})[_0x0d54('0x25')](function(_0x2ac548){_0x611f75=_0x2ac548;return getTicket(_0x3a1d4a,_0x2023af,_0x611f75,_0x133a31,_0x5c4df1,_0x133a31[_0x0d54('0x62')],_0x2f87a8);})[_0x0d54('0x25')](function(_0x12ed53){_0x5a2e45=_0x12ed53;logger['info']('['+_0x5c4df1[_0x0d54('0x78')][_0x0d54('0x79')]()+_0x0d54('0x7a'),_0x5a2e45['id']);logger[_0x0d54('0x1e')]('['+_0x5c4df1[_0x0d54('0x78')][_0x0d54('0x79')]()+_0x0d54('0x7b'),_0x3a1d4a[_0x0d54('0x3b')]);})[_0x0d54('0x6e')](function(_0x4c0667){logger['error']('['+_0x5c4df1[_0x0d54('0x78')][_0x0d54('0x79')]()+']',_0x4c0667);});};
\ No newline at end of file
index b175b8a..9fb5c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf573=['inspect','lodash','bluebird','request-promise','util','md5','../../../../config/logger','servicenow','redis','defaults','localhost','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','picklist','type','nameField','customField','toLowerCase','toString','string','idField','content','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number','label','?sysparm_query=name%3D','label_entry','Incident','ticketId','Incident\x20-\x20','all','push','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...'];(function(_0x356da6,_0x13d56b){var _0x361f4e=function(_0x139e3f){while(--_0x139e3f){_0x356da6['push'](_0x356da6['shift']());}};_0x361f4e(++_0x13d56b);}(_0xf573,0x145));var _0x3f57=function(_0x58f710,_0x4d4149){_0x58f710=_0x58f710-0x0;var _0x137162=_0xf573[_0x58f710];return _0x137162;};'use strict';var _=require(_0x3f57('0x0'));var Promise=require(_0x3f57('0x1'));var rp=require(_0x3f57('0x2'));var util=require(_0x3f57('0x3'));var md5=require(_0x3f57('0x4'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x3f57('0x5'))(_0x3f57('0x6'));config[_0x3f57('0x7')]=_[_0x3f57('0x8')](config[_0x3f57('0x7')],{'host':_0x3f57('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3f57('0x7')]));function getAdminUser(_0x5ab03b,_0x44e70a,_0x5afe0c,_0xe165b4,_0x382ea1,_0x67d8dc){return new Promise(function(_0x4c367e,_0x37fb58){var _0xbe476d={'method':'GET','uri':_0xe165b4+_0x3f57('0xa')+'&'+_0x382ea1+'&'+_0x67d8dc,'auth':_0x44e70a,'json':!![]};return rp(_0xbe476d)[_0x3f57('0xb')](function(_0x775a15){if(_0x775a15[_0x3f57('0xc')][_0x3f57('0xd')]>0x0){_0x5afe0c[_0x3f57('0xe')]=_0x775a15[_0x3f57('0xc')][0x0][_0x3f57('0xf')];}logger[_0x3f57('0x10')]('['+[_0x5ab03b['toUpperCase']()]+_0x3f57('0x11'),_0x5afe0c);_0x4c367e(_0x5afe0c);})[_0x3f57('0x12')](function(_0x24a34b){logger[_0x3f57('0x13')]('['+[_0x5ab03b[_0x3f57('0x14')]()]+']',_0x24a34b[_0x3f57('0x15')]);_0x37fb58(_0x24a34b[_0x3f57('0x15')]);});});}function getUser(_0x213db4,_0x333652,_0x14b2b7,_0x95dbfc,_0x410f5e){return function(_0x4e1568){logger[_0x3f57('0x10')]('['+[_0x213db4[_0x3f57('0x14')]()]+_0x3f57('0x16'),_0x4e1568);return new Promise(function(_0x1571fb,_0x487abc){if(intUtil[_0x3f57('0x17')](_0x4e1568[_0x3f57('0x18')])){var _0x575ae0={'method':_0x3f57('0x19'),'uri':_0x14b2b7+_0x3f57('0x1a')+_0x4e1568[_0x3f57('0x18')]+'&'+_0x95dbfc+'&'+_0x410f5e,'auth':_0x333652,'json':!![]};logger[_0x3f57('0x10')]('['+[_0x213db4[_0x3f57('0x14')]()]+_0x3f57('0x1b'),_0x575ae0);return rp(_0x575ae0)['then'](function(_0x121d14){logger[_0x3f57('0x10')]('['+[_0x213db4[_0x3f57('0x14')]()]+_0x3f57('0x1c'),_0x121d14);if(_0x121d14[_0x3f57('0xc')][_0x3f57('0xd')]>0x0&&String(_0x121d14[_0x3f57('0xc')][0x0]['active'])===_0x3f57('0x1d')){_0x4e1568[_0x3f57('0x1e')]=_0x121d14[_0x3f57('0xc')][0x0]['sys_id'];}else{_0x4e1568[_0x3f57('0x1e')]=_0x4e1568['adminId'];_0x4e1568[_0x3f57('0x18')]=_0x4e1568[_0x3f57('0x1f')];}logger[_0x3f57('0x10')]('['+[_0x213db4[_0x3f57('0x14')]()]+_0x3f57('0x20'),_0x4e1568);_0x1571fb(_0x4e1568);})[_0x3f57('0x12')](function(_0x4271b1){logger[_0x3f57('0x13')]('['+[_0x213db4['toUpperCase']()]+']',_0x4271b1['message']);_0x487abc(_0x4271b1['message']);});}else{logger['info']('['+[_0x213db4['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x4e1568[_0x3f57('0x1e')]=_0x4e1568[_0x3f57('0xe')];_0x4e1568[_0x3f57('0x18')]=_0x4e1568['adminEmail'];_0x1571fb(_0x4e1568);}});};}function createEndUser(_0x1f690f,_0x1ba665,_0x2863c3,_0x10c264,_0x401b78){logger[_0x3f57('0x10')]('['+[_0x1f690f[_0x3f57('0x14')]()]+'],\x20createEndUser\x20input\x20crm',_0x2863c3);return new Promise(function(_0x526401,_0x22e639){var _0x1d3030={'method':_0x3f57('0x21'),'uri':_0x10c264+_0x3f57('0x22')+_0x401b78,'body':{'user_name':_0x2863c3[_0x3f57('0x23')],'roles':_0x3f57('0x24'),'first_name':_0x2863c3[_0x3f57('0x23')],'active':_0x3f57('0x1d'),'date_format':_0x3f57('0x25'),'phone':_0x2863c3['endUserNumber']},'auth':_0x1ba665,'json':!![]};return rp(_0x1d3030)[_0x3f57('0xb')](function(_0x5153a7){logger[_0x3f57('0x10')]('['+[_0x1f690f['toUpperCase']()]+_0x3f57('0x26'),_0x5153a7['result']);_0x2863c3[_0x3f57('0x27')]=_0x5153a7['result'][_0x3f57('0xf')];_0x526401(_0x2863c3);})[_0x3f57('0x12')](function(_0x4938be){logger[_0x3f57('0x13')]('['+[_0x1f690f[_0x3f57('0x14')]()]+']',_0x4938be['message']);_0x22e639(_0x4938be[_0x3f57('0x15')]);});});}function getEndUser(_0x502216,_0x547ffa,_0x6f806f,_0x198e21,_0x58a192){return function(_0x2489a8){logger[_0x3f57('0x10')]('['+[_0x502216['toUpperCase']()]+_0x3f57('0x28'),_0x2489a8);return new Promise(function(_0x4606a6,_0x2965ae){var _0x57282d={'method':'GET','uri':_0x6f806f+_0x3f57('0x29')+_0x2489a8[_0x3f57('0x23')]+'&'+_0x198e21+'&'+_0x58a192,'auth':_0x547ffa,'json':!![]};return rp(_0x57282d)[_0x3f57('0xb')](function(_0x5b0127){if(_0x5b0127[_0x3f57('0xc')]['length']>0x0){_0x2489a8[_0x3f57('0x27')]=_0x5b0127[_0x3f57('0xc')][0x0][_0x3f57('0xf')];logger[_0x3f57('0x10')]('['+[_0x502216['toUpperCase']()]+'],\x20getEndUser\x20crm',_0x2489a8);_0x4606a6(_0x2489a8);}else{return createEndUser(_0x502216,_0x547ffa,_0x2489a8,_0x6f806f,_0x198e21)[_0x3f57('0xb')](function(_0x2d13c8){logger[_0x3f57('0x10')]('['+[_0x502216['toUpperCase']()]+_0x3f57('0x2a'),_0x2d13c8);_0x4606a6(_0x2d13c8);});}})['catch'](function(_0x3b2633){logger[_0x3f57('0x13')]('['+[_0x502216[_0x3f57('0x14')]()]+']',_0x3b2633[_0x3f57('0x15')]);_0x2965ae(_0x3b2633[_0x3f57('0x15')]);});});};}function getCustomFields(_0x40b232,_0xc524e5){var _0x57ecf2={};if(_0x40b232[_0x3f57('0xd')]>0x0){_[_0x3f57('0x2b')](_0x40b232,function(_0x3db7dc){if(_['includes'](['string',_0x3f57('0x2c')],_0x3db7dc[_0x3f57('0x2d')])&&_0x3db7dc[_0x3f57('0x2e')]&&!_0x3db7dc[_0x3f57('0x2f')]){_0x57ecf2[_0x3db7dc[_0x3f57('0x2e')][_0x3f57('0x30')]()]=_0x3db7dc['content'][_0x3f57('0x31')]();}else if(_['includes']([_0x3f57('0x32'),_0x3f57('0x2c')],_0x3db7dc[_0x3f57('0x2d')])&&_0x3db7dc[_0x3f57('0x33')]&&_0x3db7dc[_0x3f57('0x2f')]){_0x57ecf2[_0x3db7dc[_0x3f57('0x33')][_0x3f57('0x30')]()]=_0x3db7dc[_0x3f57('0x34')][_0x3f57('0x31')]();}else if(_0x3db7dc['type']===_0x3f57('0x35')&&_0x3db7dc[_0x3f57('0x36')]&&_0x3db7dc[_0x3f57('0x33')]&&_0x3db7dc[_0x3f57('0x2f')]){_0x57ecf2[_0x3db7dc['idField'][_0x3f57('0x30')]()]=_0xc524e5[_0x3db7dc[_0x3f57('0x36')]][_0x3f57('0x31')]();}else if(_0x3db7dc['type']===_0x3f57('0x37')&&_0x3db7dc[_0x3f57('0x38')]&&_0x3db7dc[_0x3f57('0x38')][_0x3f57('0x39')]&&_0x3db7dc['idField']&&_0x3db7dc['customField']){_0x57ecf2[_0x3db7dc[_0x3f57('0x33')][_0x3f57('0x30')]()]=_0xc524e5[_0x3db7dc[_0x3f57('0x38')][_0x3f57('0x39')][_0x3f57('0x30')]()][_0x3f57('0x31')]();}});}return _0x57ecf2;}function getTicket(_0x25dc45,_0x1b6fec,_0x3553f4,_0x44d4fc,_0x150146,_0x4350a3){return function(_0x549861){logger[_0x3f57('0x10')]('['+[_0x25dc45[_0x3f57('0x14')]()]+_0x3f57('0x3a'),_0x549861);return new Promise(function(_0x5cbcd2,_0x299188){var _0xad2528=_0x25dc45['toLowerCase']()===_0x3f57('0x3b')?_0x549861[_0x3f57('0x1e')]:_0x549861['endUserId'];var _0x433846={'method':'POST','uri':_0x3553f4+_0x3f57('0x3c')+'?'+_0x4350a3,'body':Object[_0x3f57('0x3d')]({},{'active':_0x3f57('0x1d'),'caller_id':_0xad2528,'assigned_to':_0x549861[_0x3f57('0x1e')],'short_description':intUtil[_0x3f57('0x3e')](_0x44d4fc[_0x3f57('0x3f')],_0x150146,'\x20'),'description':intUtil[_0x3f57('0x3e')](_0x44d4fc[_0x3f57('0x40')],_0x150146,'\x0a')},getCustomFields(_0x44d4fc['Fields'],_0x150146)),'auth':_0x1b6fec,'json':!![]};return rp(_0x433846)[_0x3f57('0xb')](function(_0x564b43){logger[_0x3f57('0x10')]('['+[_0x25dc45[_0x3f57('0x14')]()]+_0x3f57('0x41'),_0x564b43[_0x3f57('0xc')]);_0x549861['ticketId']=_0x564b43['result'][_0x3f57('0xf')];_0x549861[_0x3f57('0x42')]=_0x564b43['result'][_0x3f57('0x43')];logger['info']('['+[_0x25dc45[_0x3f57('0x14')]()]+']\x20getTicket\x20crm',_0x549861);_0x5cbcd2(_0x549861);})[_0x3f57('0x12')](function(_0x135ae6){logger[_0x3f57('0x13')]('['+[_0x25dc45[_0x3f57('0x14')]()]+']',_0x135ae6[_0x3f57('0x15')]);_0x299188(_0x135ae6[_0x3f57('0x15')]);});});};}function createRemoteTag(_0xe648fc,_0x1da861,_0x52d493,_0x42f9c6){return new Promise(function(_0x2ee504,_0x3f6b37){var _0x54afd2={'method':_0x3f57('0x21'),'uri':_0x52d493+_0x3f57('0x44')+'?'+_0x42f9c6,'body':{'short_description':_0xe648fc,'global':!![],'active':!![],'name':_0xe648fc},'auth':_0x1da861,'json':!![]};return rp(_0x54afd2)[_0x3f57('0xb')](function(_0x42e75e){var _0x1a6692=_0x42e75e[_0x3f57('0xc')][_0x3f57('0xf')];_0x2ee504(_0x1a6692);});});}function getRemoteTag(_0x2e80a0,_0x11c225,_0x9017f,_0x4f1e39,_0x14ff40){return new Promise(function(_0x33c07e,_0x22a1f6){var _0xbd73bf={'method':_0x3f57('0x19'),'uri':_0x9017f+_0x3f57('0x44')+_0x3f57('0x45')+_0x2e80a0+'&'+_0x4f1e39,'auth':_0x11c225,'json':!![]};return rp(_0xbd73bf)['then'](function(_0x4094d5){if(_0x4094d5['result'][_0x3f57('0xd')]>0x0){var _0x1eadc4=_0x4094d5[_0x3f57('0xc')][0x0][_0x3f57('0xf')];_0x33c07e(_0x1eadc4);}else{return createRemoteTag(_0x2e80a0,_0x11c225,_0x9017f,_0x4f1e39)[_0x3f57('0xb')](function(_0x3359c3){_0x33c07e(_0x3359c3);});}});});}function assignTagToIncident(_0x534ff6,_0x4f8c99,_0x197bb9,_0xc395ce,_0x2b001e){return new Promise(function(_0x5c9d76,_0x420568){var _0xd377e9={'method':_0x3f57('0x21'),'uri':_0x197bb9+_0x3f57('0x46')+'?'+_0x2b001e,'body':{'label':_0x534ff6,'table':_0x3f57('0x3c'),'id_type':_0x3f57('0x47'),'table_key':_0xc395ce[_0x3f57('0x48')],'title':_0x3f57('0x49')+_0xc395ce['ticketNumber'],'id_display':_0xc395ce['ticketNumber']},'auth':_0x4f8c99,'json':!![]};return rp(_0xd377e9)[_0x3f57('0xb')](function(_0x15aa95){_0x5c9d76();})[_0x3f57('0x12')](function(){_0x5c9d76();});});}function manageTags(_0x41b631,_0x2df1bb,_0x2ca488,_0x10c02b,_0x3b5921,_0x4cee85,_0x275350){return new Promise(function(_0x3f3d3d,_0x13672d){var _0x5313c4=[];_0x2df1bb[_0x3f57('0x2b')](function(_0x57b54b){_0x5313c4['push'](getRemoteTag(_0x57b54b,_0x2ca488,_0x10c02b,_0x4cee85,_0x275350));});return Promise[_0x3f57('0x4a')](_0x5313c4)[_0x3f57('0xb')](function(_0x23af92){if(_0x23af92['length']){logger[_0x3f57('0x10')]('['+[_0x41b631[_0x3f57('0x14')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x23af92);var _0x5ae88a=[];_0x23af92['forEach'](function(_0x44e136){_0x5ae88a[_0x3f57('0x4b')](assignTagToIncident(_0x44e136,_0x2ca488,_0x10c02b,_0x3b5921,_0x4cee85));});return Promise[_0x3f57('0x4a')](_0x5ae88a)['then'](function(){_0x3f3d3d();})[_0x3f57('0x12')](function(){_0x3f3d3d();});}else{_0x3f3d3d();}});});}function getTags(_0x271d1a,_0x583d40,_0x384370,_0x151264,_0x417c54,_0x35061c){return function(_0x2111cf){return new Promise(function(_0x1f42e9,_0x5ec44f){var _0x5d0a9d=[];var _0x4fe372=_0x151264[_0x3f57('0x4c')];if(_0x4fe372&&_0x4fe372[_0x3f57('0xd')]>0x0){_0x5d0a9d=_[_0x3f57('0x4d')](_0x4fe372,_0x3f57('0x39'));}if(_0x5d0a9d[_0x3f57('0xd')]>0x0){return manageTags(_0x271d1a,_0x5d0a9d,_0x583d40,_0x384370,_0x2111cf,_0x417c54,_0x35061c)[_0x3f57('0xb')](function(){_0x1f42e9(_0x2111cf);});}else{_0x1f42e9(_0x2111cf);}});};}function emit(_0x425eb9,_0x3224d4,_0x3dc1a7){var _0x3b5fc3='%26sysparm_record_target%3Dincident'+_0x3f57('0x4e')+_0x3f57('0x4f')+_0x3f57('0x50');var _0x52c3b3={'uri':_0x425eb9+_0x3f57('0x51')+_0x3dc1a7+_0x3b5fc3};io['to'](util[_0x3f57('0x52')]('user:%s',_0x3224d4))[_0x3f57('0x53')](_0x3f57('0x54'),_0x52c3b3);}exports['cs']=function(_0x1c818f,_0x4ddf43,_0x3ab665,_0x2846b0,_0x3fda0c,_0x3a4ad5,_0x5d789e,_0x12de5e){var _0x4503b0={};var _0x58126c={'user':_0x3a4ad5['username'],'pass':_0x3a4ad5['password']};var _0x431638='sysparm_limit=1';var _0x5c57d3=_0x3f57('0x55');_0x3a4ad5[_0x3f57('0x56')]=intUtil[_0x3f57('0x57')](_0x3a4ad5[_0x3f57('0x56')]);_0x3a4ad5[_0x3f57('0x58')]=intUtil[_0x3f57('0x57')](_0x3a4ad5[_0x3f57('0x58')]);var _0x32a8f2=util[_0x3f57('0x52')](_0x3f57('0x59'),_0x3a4ad5[_0x3f57('0x56')]);_0x4503b0[_0x3f57('0x18')]=!_[_0x3f57('0x5a')](_0x2846b0)?_0x2846b0[_0x3f57('0x5b')]:null;_0x4503b0[_0x3f57('0x1f')]=_0x3a4ad5['email'];_0x4503b0['endUserNumber']=_0x12de5e[_0x3f57('0x30')]()===_0x3f57('0x3b')?_0x4ddf43[_0x3f57('0x5c')]:_0x4ddf43[_0x3f57('0x5d')];_0x4503b0['callDirection']=_0x12de5e===_0x3f57('0x5e')||_0x12de5e===_0x3f57('0x5f')?_0x3f57('0x5e'):'outbound';var _0x394908=util[_0x3f57('0x52')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3a4ad5[_0x3f57('0x58')],_0x4ddf43[_0x3f57('0x60')],md5(_0x4ddf43[_0x3f57('0x60')]));if(_0x3fda0c&&_0x3fda0c[_0x3f57('0x61')]){logger[_0x3f57('0x10')](_0x3f57('0x62'),_0x3f57('0x63'));_0x4ddf43[_0x3f57('0x64')]=_0x394908;}else if(_0x5d789e&&_0x5d789e[_0x3f57('0x65')]&&_0x5d789e[_0x3f57('0x65')]!==_0x3f57('0x66')){logger[_0x3f57('0x10')](_0x3f57('0x67'),_0x3f57('0x63'));_0x4ddf43[_0x3f57('0x64')]=_0x394908;}else{_0x4ddf43[_0x3f57('0x64')]='';}return getAdminUser(_0x12de5e,_0x58126c,_0x4503b0,_0x32a8f2,_0x5c57d3,_0x431638)[_0x3f57('0xb')](getUser(_0x12de5e,_0x58126c,_0x32a8f2,_0x5c57d3,_0x431638))[_0x3f57('0xb')](getEndUser(_0x12de5e,_0x58126c,_0x32a8f2,_0x5c57d3,_0x431638))[_0x3f57('0xb')](getTicket(_0x12de5e,_0x58126c,_0x32a8f2,_0x3ab665,_0x4ddf43,_0x5c57d3))[_0x3f57('0xb')](function(_0x5c47b9){logger['info'](util[_0x3f57('0x52')](_0x3f57('0x68'),_0x5c47b9[_0x3f57('0x48')]));logger[_0x3f57('0x10')](util['format'](_0x3f57('0x69'),_0x12de5e));if(_0x12de5e!==_0x3f57('0x5f')){logger['info']('['+[_0x12de5e[_0x3f57('0x14')]()]+']',_0x3f57('0x6a'));emit(_0x3a4ad5[_0x3f57('0x56')],_0x2846b0[_0x3f57('0x39')],_0x5c47b9[_0x3f57('0x48')]);}})[_0x3f57('0x12')](function(_0x1afbcf){logger[_0x3f57('0x13')]('['+[_0x12de5e[_0x3f57('0x14')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x3f57('0x6b')](_0x1afbcf,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x9e51=['catch','error','message','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','result','length','active','true','userId','adminEmail','],\x20getUser\x20crm','toUpperCase',']\x20using\x20admin\x20profile','sys_user?','endUserNumber','System','],\x20EndUser\x20schema','endUserId','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','string','type','nameField','toString','picklist','idField','customField','toLowerCase','variable','variableName','customVariable','Variable','name','outbound','POST','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','label','?sysparm_query=name%3D','Incident','ticketId','Incident\x20-\x20','ticketNumber','forEach','push','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','serverUrl','%s/api/now/table/','remoteUri','email','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','unmanaged',']\x20Error\x20running\x20ServiceNow\x20integration','lodash','bluebird','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','socket.io-emitter','sys_user?sysparm_query=user_name%3Dadmin','then','adminId','sys_id','info','],\x20getAdminUser\x20crm'];(function(_0x54b52c,_0x309561){var _0x30ec22=function(_0x1296be){while(--_0x1296be){_0x54b52c['push'](_0x54b52c['shift']());}};_0x30ec22(++_0x309561);}(_0x9e51,0x129));var _0x19e5=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0x9e51[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0x19e5('0x0'));var Promise=require(_0x19e5('0x1'));var rp=require(_0x19e5('0x2'));var util=require(_0x19e5('0x3'));var md5=require(_0x19e5('0x4'));var Redis=require('ioredis');var intUtil=require(_0x19e5('0x5'));var config=require(_0x19e5('0x6'));var logger=require(_0x19e5('0x7'))(_0x19e5('0x8'));config[_0x19e5('0x9')]=_[_0x19e5('0xa')](config[_0x19e5('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x19e5('0xb'))(new Redis(config['redis']));function getAdminUser(_0x7baf7,_0x556977,_0x41fb2b,_0x88d870,_0xc9df,_0x200349){return new Promise(function(_0x46eddc,_0x3808a3){var _0x2c638c={'method':'GET','uri':_0x88d870+_0x19e5('0xc')+'&'+_0xc9df+'&'+_0x200349,'auth':_0x556977,'json':!![]};return rp(_0x2c638c)[_0x19e5('0xd')](function(_0x334e75){if(_0x334e75['result']['length']>0x0){_0x41fb2b[_0x19e5('0xe')]=_0x334e75['result'][0x0][_0x19e5('0xf')];}logger[_0x19e5('0x10')]('['+[_0x7baf7['toUpperCase']()]+_0x19e5('0x11'),_0x41fb2b);_0x46eddc(_0x41fb2b);})[_0x19e5('0x12')](function(_0x38d9d4){logger[_0x19e5('0x13')]('['+[_0x7baf7['toUpperCase']()]+']',_0x38d9d4[_0x19e5('0x14')]);_0x3808a3(_0x38d9d4[_0x19e5('0x14')]);});});}function getUser(_0x3f5a36,_0x24cb95,_0x400cc1,_0x1e0fc9,_0x42897c){return function(_0x47e5da){logger[_0x19e5('0x10')]('['+[_0x3f5a36['toUpperCase']()]+'],\x20getUser\x20input\x20crm',_0x47e5da);return new Promise(function(_0x5546b5,_0x141439){if(intUtil[_0x19e5('0x15')](_0x47e5da[_0x19e5('0x16')])){var _0x26f3ad={'method':_0x19e5('0x17'),'uri':_0x400cc1+_0x19e5('0x18')+_0x47e5da[_0x19e5('0x16')]+'&'+_0x1e0fc9+'&'+_0x42897c,'auth':_0x24cb95,'json':!![]};logger[_0x19e5('0x10')]('['+[_0x3f5a36['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x26f3ad);return rp(_0x26f3ad)['then'](function(_0xc0bf38){logger[_0x19e5('0x10')]('['+[_0x3f5a36['toUpperCase']()]+_0x19e5('0x19'),_0xc0bf38);if(_0xc0bf38[_0x19e5('0x1a')][_0x19e5('0x1b')]>0x0&&String(_0xc0bf38['result'][0x0][_0x19e5('0x1c')])===_0x19e5('0x1d')){_0x47e5da[_0x19e5('0x1e')]=_0xc0bf38['result'][0x0]['sys_id'];}else{_0x47e5da[_0x19e5('0x1e')]=_0x47e5da['adminId'];_0x47e5da[_0x19e5('0x16')]=_0x47e5da[_0x19e5('0x1f')];}logger[_0x19e5('0x10')]('['+[_0x3f5a36['toUpperCase']()]+_0x19e5('0x20'),_0x47e5da);_0x5546b5(_0x47e5da);})[_0x19e5('0x12')](function(_0x4b5e56){logger['error']('['+[_0x3f5a36[_0x19e5('0x21')]()]+']',_0x4b5e56[_0x19e5('0x14')]);_0x141439(_0x4b5e56[_0x19e5('0x14')]);});}else{logger[_0x19e5('0x10')]('['+[_0x3f5a36['toUpperCase']()]+_0x19e5('0x22'));_0x47e5da['userId']=_0x47e5da[_0x19e5('0xe')];_0x47e5da[_0x19e5('0x16')]=_0x47e5da['adminEmail'];_0x5546b5(_0x47e5da);}});};}function createEndUser(_0x961f08,_0x4be655,_0x4bec56,_0x2d639a,_0x5c81ae){logger['info']('['+[_0x961f08[_0x19e5('0x21')]()]+'],\x20createEndUser\x20input\x20crm',_0x4bec56);return new Promise(function(_0x32fa36,_0x20fe56){var _0x551438={'method':'POST','uri':_0x2d639a+_0x19e5('0x23')+_0x5c81ae,'body':{'user_name':_0x4bec56[_0x19e5('0x24')],'roles':'user','first_name':_0x4bec56[_0x19e5('0x24')],'active':_0x19e5('0x1d'),'date_format':_0x19e5('0x25'),'phone':_0x4bec56[_0x19e5('0x24')]},'auth':_0x4be655,'json':!![]};return rp(_0x551438)[_0x19e5('0xd')](function(_0xa247f){logger[_0x19e5('0x10')]('['+[_0x961f08[_0x19e5('0x21')]()]+_0x19e5('0x26'),_0xa247f[_0x19e5('0x1a')]);_0x4bec56[_0x19e5('0x27')]=_0xa247f[_0x19e5('0x1a')][_0x19e5('0xf')];_0x32fa36(_0x4bec56);})[_0x19e5('0x12')](function(_0x3e2660){logger[_0x19e5('0x13')]('['+[_0x961f08[_0x19e5('0x21')]()]+']',_0x3e2660[_0x19e5('0x14')]);_0x20fe56(_0x3e2660[_0x19e5('0x14')]);});});}function getEndUser(_0x1f93b9,_0x3561ca,_0x23a87c,_0x467346,_0x558e30){return function(_0x252e63){logger[_0x19e5('0x10')]('['+[_0x1f93b9['toUpperCase']()]+'],\x20getEndUser\x20input\x20crm',_0x252e63);return new Promise(function(_0x145c0f,_0x369dd1){var _0x18658e={'method':'GET','uri':_0x23a87c+_0x19e5('0x28')+_0x252e63['endUserNumber']+'&'+_0x467346+'&'+_0x558e30,'auth':_0x3561ca,'json':!![]};return rp(_0x18658e)[_0x19e5('0xd')](function(_0x2db672){if(_0x2db672[_0x19e5('0x1a')][_0x19e5('0x1b')]>0x0){_0x252e63[_0x19e5('0x27')]=_0x2db672[_0x19e5('0x1a')][0x0]['sys_id'];logger[_0x19e5('0x10')]('['+[_0x1f93b9['toUpperCase']()]+_0x19e5('0x29'),_0x252e63);_0x145c0f(_0x252e63);}else{return createEndUser(_0x1f93b9,_0x3561ca,_0x252e63,_0x23a87c,_0x467346)[_0x19e5('0xd')](function(_0x1dc9d9){logger[_0x19e5('0x10')]('['+[_0x1f93b9[_0x19e5('0x21')]()]+_0x19e5('0x2a'),_0x1dc9d9);_0x145c0f(_0x1dc9d9);});}})[_0x19e5('0x12')](function(_0xe5ff0){logger[_0x19e5('0x13')]('['+[_0x1f93b9['toUpperCase']()]+']',_0xe5ff0['message']);_0x369dd1(_0xe5ff0[_0x19e5('0x14')]);});});};}function getCustomFields(_0x38123c,_0x448d16){var _0x4306c2={};if(_0x38123c['length']>0x0){_['forEach'](_0x38123c,function(_0x3a771e){if(_[_0x19e5('0x2b')]([_0x19e5('0x2c'),'picklist'],_0x3a771e[_0x19e5('0x2d')])&&_0x3a771e['nameField']&&!_0x3a771e['customField']){_0x4306c2[_0x3a771e[_0x19e5('0x2e')]['toLowerCase']()]=_0x3a771e['content'][_0x19e5('0x2f')]();}else if(_['includes']([_0x19e5('0x2c'),_0x19e5('0x30')],_0x3a771e['type'])&&_0x3a771e[_0x19e5('0x31')]&&_0x3a771e[_0x19e5('0x32')]){_0x4306c2[_0x3a771e[_0x19e5('0x31')][_0x19e5('0x33')]()]=_0x3a771e['content']['toString']();}else if(_0x3a771e['type']===_0x19e5('0x34')&&_0x3a771e['variableName']&&_0x3a771e[_0x19e5('0x31')]&&_0x3a771e['customField']){_0x4306c2[_0x3a771e[_0x19e5('0x31')][_0x19e5('0x33')]()]=_0x448d16[_0x3a771e[_0x19e5('0x35')]][_0x19e5('0x2f')]();}else if(_0x3a771e[_0x19e5('0x2d')]===_0x19e5('0x36')&&_0x3a771e[_0x19e5('0x37')]&&_0x3a771e[_0x19e5('0x37')][_0x19e5('0x38')]&&_0x3a771e[_0x19e5('0x31')]&&_0x3a771e[_0x19e5('0x32')]){_0x4306c2[_0x3a771e[_0x19e5('0x31')][_0x19e5('0x33')]()]=_0x448d16[_0x3a771e[_0x19e5('0x37')][_0x19e5('0x38')][_0x19e5('0x33')]()][_0x19e5('0x2f')]();}});}return _0x4306c2;}function getTicket(_0x286469,_0x242b7b,_0xd94c24,_0x14eed2,_0x35671c,_0x1e9aba){return function(_0xa3dd37){logger[_0x19e5('0x10')]('['+[_0x286469[_0x19e5('0x21')]()]+']\x20getTicket\x20input\x20crm',_0xa3dd37);return new Promise(function(_0x720946,_0x34d184){var _0x3c7810=_0x286469[_0x19e5('0x33')]()===_0x19e5('0x39')?_0xa3dd37['userId']:_0xa3dd37[_0x19e5('0x27')];var _0x42c543={'method':_0x19e5('0x3a'),'uri':_0xd94c24+_0x19e5('0x3b')+'?'+_0x1e9aba,'body':Object[_0x19e5('0x3c')]({},{'active':_0x19e5('0x1d'),'caller_id':_0x3c7810,'assigned_to':_0xa3dd37['userId'],'short_description':intUtil[_0x19e5('0x3d')](_0x14eed2['Subjects'],_0x35671c,'\x20'),'description':intUtil[_0x19e5('0x3d')](_0x14eed2[_0x19e5('0x3e')],_0x35671c,'\x0a')},getCustomFields(_0x14eed2[_0x19e5('0x3f')],_0x35671c)),'auth':_0x242b7b,'json':!![]};return rp(_0x42c543)[_0x19e5('0xd')](function(_0x3bcd07){logger[_0x19e5('0x10')]('['+[_0x286469[_0x19e5('0x21')]()]+_0x19e5('0x40'),_0x3bcd07[_0x19e5('0x1a')]);_0xa3dd37['ticketId']=_0x3bcd07[_0x19e5('0x1a')][_0x19e5('0xf')];_0xa3dd37['ticketNumber']=_0x3bcd07[_0x19e5('0x1a')]['number'];logger[_0x19e5('0x10')]('['+[_0x286469[_0x19e5('0x21')]()]+']\x20getTicket\x20crm',_0xa3dd37);_0x720946(_0xa3dd37);})['catch'](function(_0x185315){logger['error']('['+[_0x286469[_0x19e5('0x21')]()]+']',_0x185315[_0x19e5('0x14')]);_0x34d184(_0x185315['message']);});});};}function createRemoteTag(_0x248c26,_0x5aad38,_0xe6c587,_0x2a446b){return new Promise(function(_0x455b12,_0x119098){var _0xf89278={'method':'POST','uri':_0xe6c587+'label'+'?'+_0x2a446b,'body':{'short_description':_0x248c26,'global':!![],'active':!![],'name':_0x248c26},'auth':_0x5aad38,'json':!![]};return rp(_0xf89278)[_0x19e5('0xd')](function(_0x5223ef){var _0x27c0e0=_0x5223ef[_0x19e5('0x1a')]['sys_id'];_0x455b12(_0x27c0e0);});});}function getRemoteTag(_0x16f30e,_0x1d126b,_0x402e2a,_0x17c118,_0x2990ea){return new Promise(function(_0x4f467e,_0x2b4de9){var _0x256fd2={'method':_0x19e5('0x17'),'uri':_0x402e2a+_0x19e5('0x41')+_0x19e5('0x42')+_0x16f30e+'&'+_0x17c118,'auth':_0x1d126b,'json':!![]};return rp(_0x256fd2)[_0x19e5('0xd')](function(_0x3f2a87){if(_0x3f2a87[_0x19e5('0x1a')]['length']>0x0){var _0x2c7793=_0x3f2a87[_0x19e5('0x1a')][0x0][_0x19e5('0xf')];_0x4f467e(_0x2c7793);}else{return createRemoteTag(_0x16f30e,_0x1d126b,_0x402e2a,_0x17c118)[_0x19e5('0xd')](function(_0xfa9c28){_0x4f467e(_0xfa9c28);});}});});}function assignTagToIncident(_0x1554fc,_0x5ab62d,_0x2334e9,_0x4ba439,_0x4d0782){return new Promise(function(_0x397710,_0x352596){var _0x391b8c={'method':'POST','uri':_0x2334e9+'label_entry'+'?'+_0x4d0782,'body':{'label':_0x1554fc,'table':'incident','id_type':_0x19e5('0x43'),'table_key':_0x4ba439[_0x19e5('0x44')],'title':_0x19e5('0x45')+_0x4ba439[_0x19e5('0x46')],'id_display':_0x4ba439[_0x19e5('0x46')]},'auth':_0x5ab62d,'json':!![]};return rp(_0x391b8c)[_0x19e5('0xd')](function(_0x4c0755){_0x397710();})[_0x19e5('0x12')](function(){_0x397710();});});}function manageTags(_0x4552b2,_0x66f54d,_0x4c38cb,_0x10bc6d,_0x3e9b8c,_0x185faf,_0x4fd64e){return new Promise(function(_0x3734f1,_0x2aea4a){var _0x26143b=[];_0x66f54d[_0x19e5('0x47')](function(_0x394c0b){_0x26143b[_0x19e5('0x48')](getRemoteTag(_0x394c0b,_0x4c38cb,_0x10bc6d,_0x185faf,_0x4fd64e));});return Promise[_0x19e5('0x49')](_0x26143b)[_0x19e5('0xd')](function(_0x358627){if(_0x358627[_0x19e5('0x1b')]){logger[_0x19e5('0x10')]('['+[_0x4552b2[_0x19e5('0x21')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x358627);var _0x4f6d6c=[];_0x358627['forEach'](function(_0x3c17a6){_0x4f6d6c[_0x19e5('0x48')](assignTagToIncident(_0x3c17a6,_0x4c38cb,_0x10bc6d,_0x3e9b8c,_0x185faf));});return Promise[_0x19e5('0x49')](_0x4f6d6c)['then'](function(){_0x3734f1();})[_0x19e5('0x12')](function(){_0x3734f1();});}else{_0x3734f1();}});});}function getTags(_0xff9a29,_0x4e5b64,_0x195fc5,_0x1a6a04,_0x4983e9,_0x4ac78e){return function(_0x451c25){return new Promise(function(_0x1b1d88,_0x397df7){var _0x502e6e=[];var _0x443b96=_0x1a6a04['Tags'];if(_0x443b96&&_0x443b96[_0x19e5('0x1b')]>0x0){_0x502e6e=_[_0x19e5('0x4a')](_0x443b96,_0x19e5('0x38'));}if(_0x502e6e[_0x19e5('0x1b')]>0x0){return manageTags(_0xff9a29,_0x502e6e,_0x4e5b64,_0x195fc5,_0x451c25,_0x4983e9,_0x4ac78e)[_0x19e5('0xd')](function(){_0x1b1d88(_0x451c25);});}else{_0x1b1d88(_0x451c25);}});};}function emit(_0x5e6b6b,_0x36435f,_0x2d8e86){var _0x598b36=_0x19e5('0x4b')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x19e5('0x4c')+'%255EORDERBYDESCnumber';var _0x26c3e3={'uri':_0x5e6b6b+_0x19e5('0x4d')+_0x2d8e86+_0x598b36};io['to'](util[_0x19e5('0x4e')](_0x19e5('0x4f'),_0x36435f))[_0x19e5('0x50')](_0x19e5('0x51'),_0x26c3e3);}exports['cs']=function(_0x391b46,_0x518ec9,_0x817742,_0x47c9c8,_0x35cfe8,_0x449ba0,_0x455860,_0x47dad3){var _0x7cee8e={};var _0x42376e={'user':_0x449ba0[_0x19e5('0x52')],'pass':_0x449ba0['password']};var _0x15b6ad=_0x19e5('0x53');var _0x33c7cb=_0x19e5('0x54');_0x449ba0['remoteUri']=intUtil[_0x19e5('0x55')](_0x449ba0['remoteUri']);_0x449ba0['serverUrl']=intUtil[_0x19e5('0x55')](_0x449ba0[_0x19e5('0x56')]);var _0x404cd5=util['format'](_0x19e5('0x57'),_0x449ba0[_0x19e5('0x58')]);_0x7cee8e[_0x19e5('0x16')]=!_['isNil'](_0x47c9c8)?_0x47c9c8['email']:null;_0x7cee8e[_0x19e5('0x1f')]=_0x449ba0[_0x19e5('0x59')];_0x7cee8e[_0x19e5('0x24')]=_0x47dad3[_0x19e5('0x33')]()===_0x19e5('0x39')?_0x518ec9[_0x19e5('0x5a')]:_0x518ec9['calleridnum'];_0x7cee8e[_0x19e5('0x5b')]=_0x47dad3===_0x19e5('0x5c')||_0x47dad3==='unmanaged'?_0x19e5('0x5c'):'outbound';var _0x21b060=util[_0x19e5('0x4e')](_0x19e5('0x5d'),_0x449ba0[_0x19e5('0x56')],_0x518ec9[_0x19e5('0x5e')],md5(_0x518ec9[_0x19e5('0x5e')]));if(_0x35cfe8&&_0x35cfe8[_0x19e5('0x5f')]){logger[_0x19e5('0x10')](_0x19e5('0x60'),_0x19e5('0x61'));_0x518ec9['recordingURL']=_0x21b060;}else if(_0x455860&&_0x455860[_0x19e5('0x62')]&&_0x455860[_0x19e5('0x62')]!==_0x19e5('0x63')){logger[_0x19e5('0x10')](_0x19e5('0x64'),_0x19e5('0x61'));_0x518ec9[_0x19e5('0x65')]=_0x21b060;}else{_0x518ec9[_0x19e5('0x65')]='';}return getAdminUser(_0x47dad3,_0x42376e,_0x7cee8e,_0x404cd5,_0x33c7cb,_0x15b6ad)[_0x19e5('0xd')](getUser(_0x47dad3,_0x42376e,_0x404cd5,_0x33c7cb,_0x15b6ad))['then'](getEndUser(_0x47dad3,_0x42376e,_0x404cd5,_0x33c7cb,_0x15b6ad))[_0x19e5('0xd')](getTicket(_0x47dad3,_0x42376e,_0x404cd5,_0x817742,_0x518ec9,_0x33c7cb))['then'](function(_0x252f88){logger[_0x19e5('0x10')](util[_0x19e5('0x4e')](_0x19e5('0x66'),_0x252f88['ticketId']));logger['info'](util[_0x19e5('0x4e')]('call\x20direction:\x20%s',_0x47dad3));if(_0x47dad3!==_0x19e5('0x67')){logger[_0x19e5('0x10')]('['+[_0x47dad3['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x449ba0[_0x19e5('0x58')],_0x47c9c8[_0x19e5('0x38')],_0x252f88[_0x19e5('0x44')]);}})[_0x19e5('0x12')](function(_0x301d43){logger[_0x19e5('0x13')]('['+[_0x47dad3['toUpperCase']()]+_0x19e5('0x68'),util['inspect'](_0x301d43,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2b0f47d..0f0777f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x893b=['ioredis','./util','sugarcrm','redis','POST','emit','info','name','getString','Subjects','assigned_user_id','created_by','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','Contacts','parent_name','length','forEach','variableName','push','idField','set_entry','JSON','stringify','format','Basic\x20%s','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','find','entry_list','name_value_list','value','Agent\x20found!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','debug','map','nameField','toLowerCase','content','type','string','customField','custom_fields','variable','customVariable','Variable','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Calls','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridnum','Fields','Inbound','Ticket\x20created!','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','unmanaged','lastevent','toUpperCase','calleridname','The\x20Enduser\x20ID\x20is:','md5','util'];(function(_0x60977a,_0x1d84e6){var _0x49be42=function(_0x5b6bc5){while(--_0x5b6bc5){_0x60977a['push'](_0x60977a['shift']());}};_0x49be42(++_0x1d84e6);}(_0x893b,0x157));var _0xb893=function(_0x174791,_0x2bff9c){_0x174791=_0x174791-0x0;var _0x37eac8=_0x893b[_0x174791];return _0x37eac8;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require('bluebird');var md5=require(_0xb893('0x0'));var util=require(_0xb893('0x1'));var Redis=require(_0xb893('0x2'));var intUtil=require(_0xb893('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0xb893('0x4'));config['redis']=_['defaults'](config[_0xb893('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':_0xb893('0x6'),'json':!![]};function emit(_0x534cac,_0x181b68,_0x4f1532){io['to'](_0x534cac)[_0xb893('0x7')](_0x181b68,_0x4f1532);}function getTicket(_0x2071bb,_0x2cbadb,_0x5b5246,_0x4b55fc,_0x17c8b5,_0x5d37b7,_0x5064f1,_0x3276ef){logger[_0xb893('0x8')]('Creating\x20new\x20ticket...');var _0x3e6267=new Date();var _0x92b8e4=[{'name':_0xb893('0x9'),'value':intUtil[_0xb893('0xa')](_0x4b55fc[_0xb893('0xb')],_0x17c8b5,'\x20')},{'name':_0xb893('0xc'),'value':_0x2cbadb['id']},{'name':_0xb893('0xd'),'value':_0x2cbadb['id']},{'name':'description','value':intUtil[_0xb893('0xa')](_0x4b55fc[_0xb893('0xe')],_0x17c8b5,'\x0a')},{'name':_0xb893('0xf'),'value':_0x3e6267[_0xb893('0x10')]()['slice'](0x0,0x13)[_0xb893('0x11')]('T','\x20')},{'name':_0xb893('0x12'),'value':'0'},{'name':_0xb893('0x13'),'value':'15'},{'name':_0xb893('0x14'),'value':_0x5b5246['id']},{'name':'parent_type','value':_0xb893('0x15')},{'name':_0xb893('0x16'),'value':_0x5b5246['name']},{'name':'direction','value':_0x3276ef}];if(_0x5d37b7[_0xb893('0x17')]){_[_0xb893('0x18')](_0x5d37b7,function(_0x5f182d){if(_0x17c8b5[_0x5f182d[_0xb893('0x19')]]){_0x92b8e4[_0xb893('0x1a')]({'name':_0x5f182d[_0xb893('0x1b')],'value':_0x17c8b5[_0x5f182d[_0xb893('0x19')]]});}});}return request({'form':{'method':_0xb893('0x1c'),'input_type':_0xb893('0x1d'),'response_type':'JSON','rest_data':JSON[_0xb893('0x1e')]({'session':_0x5064f1['id'],'module_name':'Calls','name_value_list':_0x92b8e4})}});}function getAuth(_0x189b63){return util[_0xb893('0x1f')](_0xb893('0x20'),new Buffer(_0x189b63['apiKey']+':X')[_0xb893('0x21')](_0xb893('0x22')));}function getServerInfo(_0x5f2b0e){return request({'form':{'method':_0xb893('0x23'),'input_type':'JSON','response_type':'JSON','rest_data':JSON[_0xb893('0x1e')]({'session':_0x5f2b0e['id']})}});}function getUser(_0x50899a,_0x34b2b1,_0x35c7a7){if(!_[_0xb893('0x24')](_0x34b2b1)){logger[_0xb893('0x8')](_0xb893('0x25'),_0x34b2b1);return request({'form':{'method':_0xb893('0x26'),'input_type':_0xb893('0x1d'),'response_type':'JSON','rest_data':JSON[_0xb893('0x1e')]({'session':_0x35c7a7['id'],'module_name':_0xb893('0x27'),'query':util['format'](_0xb893('0x28'),_0x34b2b1),'order_by':'','offset':'0','select_fields':['id',_0xb893('0x9'),_0xb893('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xb893('0x2a')](function(_0x439290){if(_0x439290['entry_list'][_0xb893('0x17')]){var _0x4bf9f4=_[_0xb893('0x2b')](_0x439290[_0xb893('0x2c')],function(_0x4e0fbc){return _0x4e0fbc[_0xb893('0x2d')]['user_name'][_0xb893('0x2e')]===_0x34b2b1;});if(_0x4bf9f4){logger['info'](_0xb893('0x2f'));return BPromise[_0xb893('0x30')]({'id':_0x4bf9f4[_0xb893('0x2d')]['id']['value'],'name':_0x4bf9f4[_0xb893('0x2d')][_0xb893('0x9')][_0xb893('0x2e')]});}}logger[_0xb893('0x8')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0xb893('0x30')]({'id':_0x35c7a7[_0xb893('0x2d')][_0xb893('0x31')][_0xb893('0x2e')],'name':_0x35c7a7[_0xb893('0x2d')][_0xb893('0x29')][_0xb893('0x2e')]});});}else{logger[_0xb893('0x8')](_0xb893('0x32'));return BPromise[_0xb893('0x30')]({'id':_0x35c7a7[_0xb893('0x2d')][_0xb893('0x31')][_0xb893('0x2e')],'name':_0x35c7a7['name_value_list'][_0xb893('0x29')][_0xb893('0x2e')]});}}function getEndUser(_0x4d988f,_0x39f4b9,_0x5f1f37,_0x3078d4){logger[_0xb893('0x8')]('Searching\x20enduser\x20with\x20phone',_0x5f1f37);return request({'form':{'method':_0xb893('0x26'),'input_type':_0xb893('0x1d'),'response_type':_0xb893('0x1d'),'rest_data':JSON[_0xb893('0x1e')]({'session':_0x3078d4['id'],'module_name':_0xb893('0x15'),'query':util[_0xb893('0x1f')](_0xb893('0x33'),_0x5f1f37),'order_by':'','offset':'0','select_fields':['id',_0xb893('0x9'),_0xb893('0x34')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xb893('0x2a')](function(_0xde6351){if(_0xde6351[_0xb893('0x2c')][_0xb893('0x17')]){var _0x4b3a37=_[_0xb893('0x2b')](_0xde6351[_0xb893('0x2c')],function(_0x5a1276){return _0x5a1276[_0xb893('0x2d')][_0xb893('0x34')][_0xb893('0x2e')]===_0x5f1f37;});if(_0x4b3a37){logger[_0xb893('0x8')](_0xb893('0x35'));return BPromise[_0xb893('0x30')]({'id':_0x4b3a37['name_value_list']['id'][_0xb893('0x2e')],'name':_0x4b3a37[_0xb893('0x2d')][_0xb893('0x9')][_0xb893('0x2e')],'phone':_0x4b3a37['name_value_list'][_0xb893('0x34')][_0xb893('0x2e')]});}}else{logger['info'](_0xb893('0x36'));return request({'form':{'method':_0xb893('0x1c'),'input_type':_0xb893('0x1d'),'response_type':_0xb893('0x1d'),'rest_data':JSON[_0xb893('0x1e')]({'session':_0x3078d4['id'],'module_name':_0xb893('0x15'),'name_value_list':[{'name':_0xb893('0x37'),'value':_0x39f4b9!==_0xb893('0x38')?_0x39f4b9:util[_0xb893('0x1f')](_0xb893('0x39'),_0x5f1f37)},{'name':_0xb893('0x34'),'value':_0x5f1f37}]})}})['then'](function(_0x5871d1){logger['info']('Enduser\x20created.');return BPromise[_0xb893('0x30')]({'id':_0x5871d1['id'],'name':_0x5871d1[_0xb893('0x2c')][_0xb893('0x37')][_0xb893('0x2e')],'phone':_0x5871d1[_0xb893('0x2c')][_0xb893('0x34')][_0xb893('0x2e')]});});}});}function request(_0x577cc1){logger[_0xb893('0x3a')]('[HTTP]',JSON['stringify'](_0x577cc1));return rp(_['merge'](def,_0x577cc1));}function getTags(_0x4a4128,_0x90ca57){var _0x392fff=[];if(_0x4a4128&&_0x4a4128['length']>0x0){_0x392fff=_[_0xb893('0x3b')](_0x4a4128,_0x90ca57);}return _0x392fff;}function getCustomFields(_0x200c8e,_0x27d3c0){var _0x4bb467=[];var _0x15148b={'custom_fields':[]};if(_0x200c8e[_0xb893('0x17')]>0x0){_[_0xb893('0x18')](_0x200c8e,function(_0x13b39c){if(_0x13b39c['type']==='string'&&_0x13b39c[_0xb893('0x3c')]&&!_0x13b39c['customField']){_0x15148b[_0x13b39c['nameField'][_0xb893('0x3d')]()]=_0x13b39c[_0xb893('0x3e')][_0xb893('0x21')]();}else if(_0x13b39c[_0xb893('0x3f')]===_0xb893('0x40')&&_0x13b39c[_0xb893('0x1b')]&&_0x13b39c[_0xb893('0x41')]){_0x15148b[_0xb893('0x42')][_0xb893('0x1a')]({'id':_0x13b39c['idField'],'value':_0x13b39c[_0xb893('0x3e')][_0xb893('0x21')]()});}else if(_0x13b39c['type']===_0xb893('0x43')&&_0x13b39c[_0xb893('0x19')]&&_0x13b39c[_0xb893('0x1b')]&&_0x13b39c[_0xb893('0x41')]){_0x27d3c0[_0x13b39c[_0xb893('0x19')]]&&_0x15148b[_0xb893('0x42')]['push']({'id':_0x13b39c[_0xb893('0x1b')],'value':_0x27d3c0[_0x13b39c[_0xb893('0x19')]]['toString']()});}else if(_0x13b39c[_0xb893('0x3f')]===_0xb893('0x44')&&_0x13b39c[_0xb893('0x45')]&&_0x13b39c[_0xb893('0x45')][_0xb893('0x9')]&&_0x13b39c[_0xb893('0x1b')]&&_0x13b39c[_0xb893('0x41')]){_0x27d3c0[_0x13b39c[_0xb893('0x45')]['name'][_0xb893('0x3d')]()]&&_0x15148b[_0xb893('0x42')]['push']({'id':_0x13b39c[_0xb893('0x1b')],'value':_0x27d3c0[_0x13b39c[_0xb893('0x45')]['name'][_0xb893('0x3d')]()][_0xb893('0x21')]()});}});}return _0x15148b;}function getConnection(_0x130609){return request({'method':_0xb893('0x6'),'form':{'method':'login','input_type':_0xb893('0x1d'),'response_type':_0xb893('0x1d'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x130609[_0xb893('0x46')],'password':_0x130609[_0xb893('0x47')],'encryption':_0xb893('0x48')},'application':_0xb893('0x49')})}})[_0xb893('0x2a')](function(_0x36f98e){var _0x1ef1ec=_0x36f98e;if(_0x1ef1ec['id']){def[_0xb893('0x4a')]=_0x1ef1ec['id'];return BPromise[_0xb893('0x30')](_0x1ef1ec);}else{throw new Error(util[_0xb893('0x1f')]('Account\x20%d\x20is\x20not\x20valid',_0x130609['id']));}});}function setRelationship(_0x3611ad,_0x1f53c9,_0x25c1db,_0x29b70c){return request({'form':{'method':'set_relationship','input_type':_0xb893('0x1d'),'response_type':_0xb893('0x1d'),'rest_data':JSON[_0xb893('0x1e')]({'session':_0x3611ad['id'],'module_name':_0xb893('0x4b'),'module_id':_0x25c1db['id'],'link_field_name':_0x29b70c,'related_ids':[_0x1f53c9['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x46d8b7,_0x258ca1,_0xba8a00,_0x335be1,_0x3e831a,_0x4acd04){var _0x4651d8,_0x1af4dd,_0x504a2a,_0x411dab;_0x4acd04[_0xb893('0x4c')]=intUtil[_0xb893('0x4d')](_0x4acd04['remoteUri']);_0x4acd04[_0xb893('0x4e')]=intUtil[_0xb893('0x4d')](_0x4acd04[_0xb893('0x4e')]);def[_0xb893('0x4f')]=util[_0xb893('0x1f')](_0xb893('0x50'),_0x4acd04[_0xb893('0x4c')]);if(_0x3e831a&&_0x3e831a[_0xb893('0x51')]){logger['info'](_0xb893('0x52'),_0xb893('0x53'));_0x258ca1[_0xb893('0x54')]=util[_0xb893('0x1f')](_0xb893('0x55'),_0x4acd04[_0xb893('0x4e')],_0x258ca1['uniqueid'],md5(_0x258ca1[_0xb893('0x56')]));}else{_0x258ca1[_0xb893('0x54')]='';}return getConnection(_0x4acd04)[_0xb893('0x2a')](function(_0x1149c5){_0x411dab=_0x1149c5;return getUser(_0x4acd04,_0x335be1['name'],_0x411dab);})[_0xb893('0x2a')](function(_0x283b19){_0x4651d8=_0x283b19;logger[_0xb893('0x8')]('The\x20User\x20ID\x20is:',_0x4651d8['id']);return getEndUser(_0x4acd04,_0x258ca1['calleridname'],_0x258ca1[_0xb893('0x57')],_0x411dab);})[_0xb893('0x2a')](function(_0x3419f8){_0x1af4dd=_0x3419f8;logger[_0xb893('0x8')]('The\x20Enduser\x20ID\x20is:',_0x1af4dd['id']);return getTicket(_0x4acd04,_0x4651d8,_0x1af4dd,_0xba8a00,_0x258ca1,_0xba8a00[_0xb893('0x58')],_0x411dab,_0xb893('0x59'));})['then'](function(_0x84f3ac){_0x504a2a=_0x84f3ac;logger[_0xb893('0x8')](_0xb893('0x5a'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x504a2a['id']);return setRelationship(_0x411dab,_0x4651d8,_0x504a2a,_0xb893('0x5b'));})[_0xb893('0x2a')](function(){return setRelationship(_0x411dab,_0x1af4dd,_0x504a2a,_0xb893('0x5c'));})['then'](function(){return getServerInfo(_0x411dab);})[_0xb893('0x2a')](function(_0x2dd354){var _0x5dcf2b=parseInt(_0x2dd354[_0xb893('0x5d')][_0xb893('0x5e')](0x0));var _0x55f885=util[_0xb893('0x1f')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x4acd04[_0xb893('0x4c')],_0x504a2a['id']);if(_0x5dcf2b>0x6){_0x55f885=util[_0xb893('0x1f')](_0xb893('0x5f'),_0x4acd04[_0xb893('0x4c')],_0x504a2a['id']);}logger[_0xb893('0x8')]('[QUEUE]',_0xb893('0x60'));emit(util[_0xb893('0x1f')](_0xb893('0x61'),_0x335be1['name']),_0xb893('0x62'),{'uri':_0x55f885});})[_0xb893('0x63')](function(_0x2c3b2f){logger[_0xb893('0x64')](_0xb893('0x52'),JSON[_0xb893('0x1e')](_0x2c3b2f));});};exports['outbound']=function(_0x5572c3,_0x4743fe,_0x4f7776,_0x4f1dbf,_0xd99ef,_0x6194ca,_0x4e48a7){var _0x19a2bb,_0xd836ef,_0x59a054,_0x4ba086;_0x6194ca[_0xb893('0x4c')]=intUtil[_0xb893('0x4d')](_0x6194ca[_0xb893('0x4c')]);_0x6194ca[_0xb893('0x4e')]=intUtil[_0xb893('0x4d')](_0x6194ca['serverUrl']);def['uri']=util['format'](_0xb893('0x50'),_0x6194ca[_0xb893('0x4c')]);if(_0x4e48a7&&_0x4e48a7[_0xb893('0x65')]&&_0x4e48a7[_0xb893('0x65')]!==_0xb893('0x66')){logger[_0xb893('0x8')](_0xb893('0x67'),_0xb893('0x53'));_0x4743fe[_0xb893('0x54')]=util[_0xb893('0x1f')](_0xb893('0x55'),_0x6194ca['serverUrl'],_0x4743fe[_0xb893('0x56')],md5(_0x4743fe[_0xb893('0x56')]));}return getConnection(_0x6194ca)[_0xb893('0x2a')](function(_0x38f082){_0x4ba086=_0x38f082;return getUser(_0x6194ca,_0x4f1dbf[_0xb893('0x9')],_0x4ba086);})[_0xb893('0x2a')](function(_0x52e73c){_0x19a2bb=_0x52e73c;logger['info'](_0xb893('0x68'),_0x19a2bb['id']);return getEndUser(_0x6194ca,_0x4743fe[_0xb893('0x69')],_0x4743fe[_0xb893('0x6a')],_0x4ba086);})[_0xb893('0x2a')](function(_0x2b79b3){_0xd836ef=_0x2b79b3;logger['info']('The\x20Enduser\x20ID\x20is:',_0xd836ef['id']);return getTicket(_0x6194ca,_0x19a2bb,_0xd836ef,_0x4f7776,_0x4743fe,_0x4f7776['Fields'],_0x4ba086,_0xb893('0x6b'));})[_0xb893('0x2a')](function(_0x24130e){_0x59a054=_0x24130e;logger[_0xb893('0x8')](_0xb893('0x5a'));logger[_0xb893('0x8')](_0xb893('0x6c'),_0x59a054['id']);return setRelationship(_0x4ba086,_0x19a2bb,_0x59a054,_0xb893('0x5b'));})[_0xb893('0x2a')](function(){return setRelationship(_0x4ba086,_0xd836ef,_0x59a054,_0xb893('0x5c'));})[_0xb893('0x2a')](function(){return getServerInfo(_0x4ba086);})[_0xb893('0x2a')](function(_0x2744eb){var _0x473d3a=parseInt(_0x2744eb[_0xb893('0x5d')][_0xb893('0x5e')](0x0));var _0x3915e4=util['format'](_0xb893('0x6d'),_0x6194ca[_0xb893('0x4c')],_0x59a054['id']);if(_0x473d3a>0x6){_0x3915e4=util[_0xb893('0x1f')](_0xb893('0x5f'),_0x6194ca[_0xb893('0x4c')],_0x59a054['id']);}logger[_0xb893('0x8')](_0xb893('0x67'),_0xb893('0x60'));emit(util[_0xb893('0x1f')]('user:%s',_0x4f1dbf[_0xb893('0x9')]),'trigger:browser:url',{'uri':_0x3915e4});})[_0xb893('0x63')](function(_0x5b5fea){logger['error'](_0xb893('0x67'),JSON[_0xb893('0x1e')](_0x5b5fea));});};exports[_0xb893('0x6e')]=function(_0x573b67,_0x269118,_0x4d5092,_0x3fb13c,_0x584d2a,_0x43dba1){var _0xb5f51e,_0x458e37,_0x212835,_0x5b350f;_0x43dba1[_0xb893('0x4c')]=intUtil['stripTrailingSlash'](_0x43dba1[_0xb893('0x4c')]);_0x43dba1[_0xb893('0x4e')]=intUtil[_0xb893('0x4d')](_0x43dba1[_0xb893('0x4e')]);def[_0xb893('0x4f')]=util[_0xb893('0x1f')](_0xb893('0x50'),_0x43dba1[_0xb893('0x4c')]);if(_0x584d2a&&_0x584d2a['monitor_format']){logger[_0xb893('0x8')]('['+_0x269118[_0xb893('0x6f')][_0xb893('0x70')]()+']',_0xb893('0x53'));_0x269118[_0xb893('0x54')]=util[_0xb893('0x1f')](_0xb893('0x55'),_0x43dba1['serverUrl'],_0x269118[_0xb893('0x56')],md5(_0x269118[_0xb893('0x56')]));}else{_0x269118[_0xb893('0x54')]='';}return getConnection(_0x43dba1)[_0xb893('0x2a')](function(_0x5eb484){_0x5b350f=_0x5eb484;if(!_[_0xb893('0x24')](_0x3fb13c)){return getUser(_0x43dba1,_0x3fb13c[_0xb893('0x9')],_0x5b350f);}else{return getUser(_0x43dba1,null,_0x5b350f);}})[_0xb893('0x2a')](function(_0x17eb60){_0xb5f51e=_0x17eb60;logger['info']('The\x20User\x20ID\x20is:',_0xb5f51e['id']);return getEndUser(_0x43dba1,_0x269118[_0xb893('0x71')],_0x269118[_0xb893('0x57')],_0x5b350f);})[_0xb893('0x2a')](function(_0x65a7b0){_0x458e37=_0x65a7b0;logger['info'](_0xb893('0x72'),_0x458e37['id']);return getTicket(_0x43dba1,_0xb5f51e,_0x458e37,_0x4d5092,_0x269118,_0x4d5092[_0xb893('0x58')],_0x5b350f,_0xb893('0x59'));})[_0xb893('0x2a')](function(_0xbe4743){_0x212835=_0xbe4743;logger[_0xb893('0x8')](_0xb893('0x5a'));logger[_0xb893('0x8')](_0xb893('0x6c'),_0x212835['id']);return setRelationship(_0x5b350f,_0xb5f51e,_0x212835,_0xb893('0x5b'));})[_0xb893('0x2a')](function(){return setRelationship(_0x5b350f,_0x458e37,_0x212835,_0xb893('0x5c'));})[_0xb893('0x2a')](function(){return getServerInfo(_0x5b350f);})[_0xb893('0x63')](function(_0x347ca8){logger[_0xb893('0x64')]('['+_0x269118['lastevent'][_0xb893('0x70')]()+']',JSON[_0xb893('0x1e')](_0x347ca8));});};
\ No newline at end of file
+var _0xe963=['push','idField','Calls','format','apiKey','toString','base64','get_server_info','JSON','stringify','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','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!','first_name','<unknown>','debug','[HTTP]','merge','type','string','nameField','customField','toLowerCase','custom_fields','content','variable','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','users','contacts','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','catch','error','outbound','uri','recordingFormat','none','destcalleridname','destcalleridnum','Fields','Outbound','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','unmanaged','lastevent','toUpperCase','isNil','The\x20Ticket\x20ID\x20is:','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','getString','Subjects','assigned_user_id','created_by','description','Descriptions','slice','replace','duration_minutes','parent_type','Contacts','name','direction','length','forEach','variableName'];(function(_0x3649a6,_0x2004a5){var _0x55f5e5=function(_0xedd7e5){while(--_0xedd7e5){_0x3649a6['push'](_0x3649a6['shift']());}};_0x55f5e5(++_0x2004a5);}(_0xe963,0x151));var _0x3e96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe963[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3e96('0x0'));var rp=require(_0x3e96('0x1'));var BPromise=require('bluebird');var md5=require(_0x3e96('0x2'));var util=require(_0x3e96('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x3e96('0x4'));var logger=require(_0x3e96('0x5'))('sugarcrm');config[_0x3e96('0x6')]=_[_0x3e96('0x7')](config[_0x3e96('0x6')],{'host':_0x3e96('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3e96('0x6')]));var def={'method':_0x3e96('0x9'),'json':!![]};function emit(_0xf1f29d,_0x42a76b,_0x3f3013){io['to'](_0xf1f29d)[_0x3e96('0xa')](_0x42a76b,_0x3f3013);}function getTicket(_0xef1c2b,_0x4c91b2,_0x878a3a,_0x1db077,_0x17868a,_0x528dc9,_0x2e5680,_0x2196e5){logger[_0x3e96('0xb')](_0x3e96('0xc'));var _0x47d077=new Date();var _0x432208=[{'name':'name','value':intUtil[_0x3e96('0xd')](_0x1db077[_0x3e96('0xe')],_0x17868a,'\x20')},{'name':_0x3e96('0xf'),'value':_0x4c91b2['id']},{'name':_0x3e96('0x10'),'value':_0x4c91b2['id']},{'name':_0x3e96('0x11'),'value':intUtil['getString'](_0x1db077[_0x3e96('0x12')],_0x17868a,'\x0a')},{'name':'date_start','value':_0x47d077['toISOString']()[_0x3e96('0x13')](0x0,0x13)[_0x3e96('0x14')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':_0x3e96('0x15'),'value':'15'},{'name':'parent_id','value':_0x878a3a['id']},{'name':_0x3e96('0x16'),'value':_0x3e96('0x17')},{'name':'parent_name','value':_0x878a3a[_0x3e96('0x18')]},{'name':_0x3e96('0x19'),'value':_0x2196e5}];if(_0x528dc9[_0x3e96('0x1a')]){_[_0x3e96('0x1b')](_0x528dc9,function(_0x3bc42e){if(_0x17868a[_0x3bc42e[_0x3e96('0x1c')]]){_0x432208[_0x3e96('0x1d')]({'name':_0x3bc42e[_0x3e96('0x1e')],'value':_0x17868a[_0x3bc42e[_0x3e96('0x1c')]]});}});}return request({'form':{'method':'set_entry','input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x2e5680['id'],'module_name':_0x3e96('0x1f'),'name_value_list':_0x432208})}});}function getAuth(_0x2b10f8){return util[_0x3e96('0x20')]('Basic\x20%s',new Buffer(_0x2b10f8[_0x3e96('0x21')]+':X')[_0x3e96('0x22')](_0x3e96('0x23')));}function getServerInfo(_0x3698f9){return request({'form':{'method':_0x3e96('0x24'),'input_type':'JSON','response_type':_0x3e96('0x25'),'rest_data':JSON[_0x3e96('0x26')]({'session':_0x3698f9['id']})}});}function getUser(_0x32e0c6,_0x5b393e,_0x91225b){if(!_['isNil'](_0x5b393e)){logger[_0x3e96('0xb')](_0x3e96('0x27'),_0x5b393e);return request({'form':{'method':_0x3e96('0x28'),'input_type':_0x3e96('0x25'),'response_type':_0x3e96('0x25'),'rest_data':JSON['stringify']({'session':_0x91225b['id'],'module_name':_0x3e96('0x29'),'query':util[_0x3e96('0x20')](_0x3e96('0x2a'),_0x5b393e),'order_by':'','offset':'0','select_fields':['id','name',_0x3e96('0x2b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3e96('0x2c')](function(_0x449441){if(_0x449441[_0x3e96('0x2d')][_0x3e96('0x1a')]){var _0x5489b5=_[_0x3e96('0x2e')](_0x449441[_0x3e96('0x2d')],function(_0x3d3ca0){return _0x3d3ca0[_0x3e96('0x2f')][_0x3e96('0x2b')][_0x3e96('0x30')]===_0x5b393e;});if(_0x5489b5){logger[_0x3e96('0xb')](_0x3e96('0x31'));return BPromise['resolve']({'id':_0x5489b5[_0x3e96('0x2f')]['id'][_0x3e96('0x30')],'name':_0x5489b5[_0x3e96('0x2f')][_0x3e96('0x18')][_0x3e96('0x30')]});}}logger[_0x3e96('0xb')](_0x3e96('0x32'));return BPromise[_0x3e96('0x33')]({'id':_0x91225b[_0x3e96('0x2f')]['user_id'][_0x3e96('0x30')],'name':_0x91225b[_0x3e96('0x2f')][_0x3e96('0x2b')][_0x3e96('0x30')]});});}else{logger[_0x3e96('0xb')](_0x3e96('0x34'));return BPromise['resolve']({'id':_0x91225b[_0x3e96('0x2f')][_0x3e96('0x35')][_0x3e96('0x30')],'name':_0x91225b[_0x3e96('0x2f')][_0x3e96('0x2b')][_0x3e96('0x30')]});}}function getEndUser(_0xbad9e5,_0x1d4f20,_0x376cc1,_0x2dbe3a){logger[_0x3e96('0xb')](_0x3e96('0x36'),_0x376cc1);return request({'form':{'method':_0x3e96('0x28'),'input_type':'JSON','response_type':_0x3e96('0x25'),'rest_data':JSON[_0x3e96('0x26')]({'session':_0x2dbe3a['id'],'module_name':_0x3e96('0x17'),'query':util[_0x3e96('0x20')](_0x3e96('0x37'),_0x376cc1),'order_by':'','offset':'0','select_fields':['id',_0x3e96('0x18'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x52853a){if(_0x52853a['entry_list'][_0x3e96('0x1a')]){var _0x4564ea=_[_0x3e96('0x2e')](_0x52853a['entry_list'],function(_0x20645b){return _0x20645b[_0x3e96('0x2f')][_0x3e96('0x38')][_0x3e96('0x30')]===_0x376cc1;});if(_0x4564ea){logger[_0x3e96('0xb')](_0x3e96('0x39'));return BPromise[_0x3e96('0x33')]({'id':_0x4564ea[_0x3e96('0x2f')]['id'][_0x3e96('0x30')],'name':_0x4564ea[_0x3e96('0x2f')][_0x3e96('0x18')][_0x3e96('0x30')],'phone':_0x4564ea['name_value_list'][_0x3e96('0x38')][_0x3e96('0x30')]});}}else{logger[_0x3e96('0xb')](_0x3e96('0x3a'));return request({'form':{'method':'set_entry','input_type':_0x3e96('0x25'),'response_type':_0x3e96('0x25'),'rest_data':JSON[_0x3e96('0x26')]({'session':_0x2dbe3a['id'],'module_name':_0x3e96('0x17'),'name_value_list':[{'name':_0x3e96('0x3b'),'value':_0x1d4f20!==_0x3e96('0x3c')?_0x1d4f20:util[_0x3e96('0x20')]('Caller\x20-\x20%s',_0x376cc1)},{'name':'phone_home','value':_0x376cc1}]})}})[_0x3e96('0x2c')](function(_0x9a7315){logger['info']('Enduser\x20created.');return BPromise[_0x3e96('0x33')]({'id':_0x9a7315['id'],'name':_0x9a7315['entry_list']['first_name'][_0x3e96('0x30')],'phone':_0x9a7315[_0x3e96('0x2d')][_0x3e96('0x38')]['value']});});}});}function request(_0x1dbc98){logger[_0x3e96('0x3d')](_0x3e96('0x3e'),JSON[_0x3e96('0x26')](_0x1dbc98));return rp(_[_0x3e96('0x3f')](def,_0x1dbc98));}function getTags(_0x4803be,_0x1a2af3){var _0x4e9524=[];if(_0x4803be&&_0x4803be['length']>0x0){_0x4e9524=_['map'](_0x4803be,_0x1a2af3);}return _0x4e9524;}function getCustomFields(_0x353309,_0x24e1d8){var _0x5e80f3=[];var _0x366e8d={'custom_fields':[]};if(_0x353309['length']>0x0){_[_0x3e96('0x1b')](_0x353309,function(_0x2dc255){if(_0x2dc255[_0x3e96('0x40')]===_0x3e96('0x41')&&_0x2dc255[_0x3e96('0x42')]&&!_0x2dc255[_0x3e96('0x43')]){_0x366e8d[_0x2dc255[_0x3e96('0x42')][_0x3e96('0x44')]()]=_0x2dc255['content']['toString']();}else if(_0x2dc255[_0x3e96('0x40')]===_0x3e96('0x41')&&_0x2dc255[_0x3e96('0x1e')]&&_0x2dc255[_0x3e96('0x43')]){_0x366e8d[_0x3e96('0x45')][_0x3e96('0x1d')]({'id':_0x2dc255[_0x3e96('0x1e')],'value':_0x2dc255[_0x3e96('0x46')]['toString']()});}else if(_0x2dc255[_0x3e96('0x40')]===_0x3e96('0x47')&&_0x2dc255[_0x3e96('0x1c')]&&_0x2dc255['idField']&&_0x2dc255[_0x3e96('0x43')]){_0x24e1d8[_0x2dc255[_0x3e96('0x1c')]]&&_0x366e8d[_0x3e96('0x45')]['push']({'id':_0x2dc255[_0x3e96('0x1e')],'value':_0x24e1d8[_0x2dc255['variableName']]['toString']()});}else if(_0x2dc255[_0x3e96('0x40')]===_0x3e96('0x48')&&_0x2dc255[_0x3e96('0x49')]&&_0x2dc255['Variable'][_0x3e96('0x18')]&&_0x2dc255[_0x3e96('0x1e')]&&_0x2dc255['customField']){_0x24e1d8[_0x2dc255['Variable'][_0x3e96('0x18')][_0x3e96('0x44')]()]&&_0x366e8d[_0x3e96('0x45')][_0x3e96('0x1d')]({'id':_0x2dc255['idField'],'value':_0x24e1d8[_0x2dc255['Variable'][_0x3e96('0x18')][_0x3e96('0x44')]()][_0x3e96('0x22')]()});}});}return _0x366e8d;}function getConnection(_0x330143){return request({'method':_0x3e96('0x9'),'form':{'method':_0x3e96('0x4a'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x330143[_0x3e96('0x4b')],'password':_0x330143[_0x3e96('0x4c')],'encryption':_0x3e96('0x4d')},'application':_0x3e96('0x4e')})}})[_0x3e96('0x2c')](function(_0x257d1b){var _0x140705=_0x257d1b;if(_0x140705['id']){def['sessionID']=_0x140705['id'];return BPromise['resolve'](_0x140705);}else{throw new Error(util[_0x3e96('0x20')](_0x3e96('0x4f'),_0x330143['id']));}});}function setRelationship(_0x346fbf,_0x3ef0b5,_0x26aa1b,_0x136eff){return request({'form':{'method':_0x3e96('0x50'),'input_type':'JSON','response_type':_0x3e96('0x25'),'rest_data':JSON['stringify']({'session':_0x346fbf['id'],'module_name':'Calls','module_id':_0x26aa1b['id'],'link_field_name':_0x136eff,'related_ids':[_0x3ef0b5['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x1bb508,_0x11b745,_0x5da954,_0x55f6bf,_0x4e93ba,_0x257caa){var _0x5d7dd4,_0x31946a,_0x10c02c,_0x56134d;_0x257caa[_0x3e96('0x51')]=intUtil[_0x3e96('0x52')](_0x257caa[_0x3e96('0x51')]);_0x257caa['serverUrl']=intUtil[_0x3e96('0x52')](_0x257caa['serverUrl']);def['uri']=util[_0x3e96('0x20')](_0x3e96('0x53'),_0x257caa[_0x3e96('0x51')]);if(_0x4e93ba&&_0x4e93ba[_0x3e96('0x54')]){logger['info'](_0x3e96('0x55'),_0x3e96('0x56'));_0x11b745[_0x3e96('0x57')]=util[_0x3e96('0x20')](_0x3e96('0x58'),_0x257caa[_0x3e96('0x59')],_0x11b745['uniqueid'],md5(_0x11b745[_0x3e96('0x5a')]));}else{_0x11b745[_0x3e96('0x57')]='';}return getConnection(_0x257caa)['then'](function(_0x287430){_0x56134d=_0x287430;return getUser(_0x257caa,_0x55f6bf[_0x3e96('0x18')],_0x56134d);})['then'](function(_0x264922){_0x5d7dd4=_0x264922;logger[_0x3e96('0xb')](_0x3e96('0x5b'),_0x5d7dd4['id']);return getEndUser(_0x257caa,_0x11b745[_0x3e96('0x5c')],_0x11b745[_0x3e96('0x5d')],_0x56134d);})['then'](function(_0x2b7ae2){_0x31946a=_0x2b7ae2;logger[_0x3e96('0xb')](_0x3e96('0x5e'),_0x31946a['id']);return getTicket(_0x257caa,_0x5d7dd4,_0x31946a,_0x5da954,_0x11b745,_0x5da954['Fields'],_0x56134d,_0x3e96('0x5f'));})[_0x3e96('0x2c')](function(_0x4b6abc){_0x10c02c=_0x4b6abc;logger[_0x3e96('0xb')](_0x3e96('0x60'));logger[_0x3e96('0xb')]('The\x20Ticket\x20ID\x20is:',_0x10c02c['id']);return setRelationship(_0x56134d,_0x5d7dd4,_0x10c02c,_0x3e96('0x61'));})[_0x3e96('0x2c')](function(){return setRelationship(_0x56134d,_0x31946a,_0x10c02c,_0x3e96('0x62'));})[_0x3e96('0x2c')](function(){return getServerInfo(_0x56134d);})[_0x3e96('0x2c')](function(_0x5067a8){var _0x3271a5=parseInt(_0x5067a8['version'][_0x3e96('0x63')](0x0));var _0x17b15a=util[_0x3e96('0x20')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x257caa[_0x3e96('0x51')],_0x10c02c['id']);if(_0x3271a5>0x6){_0x17b15a=util[_0x3e96('0x20')](_0x3e96('0x64'),_0x257caa[_0x3e96('0x51')],_0x10c02c['id']);}logger[_0x3e96('0xb')](_0x3e96('0x55'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3e96('0x20')](_0x3e96('0x65'),_0x55f6bf[_0x3e96('0x18')]),'trigger:browser:url',{'uri':_0x17b15a});})[_0x3e96('0x66')](function(_0x34c82d){logger[_0x3e96('0x67')](_0x3e96('0x55'),JSON[_0x3e96('0x26')](_0x34c82d));});};exports[_0x3e96('0x68')]=function(_0x4d271c,_0x47c242,_0x43a70f,_0x6b953b,_0x2389b0,_0x7e5ec2,_0x398f20){var _0x11a2b1,_0x27b9cf,_0x42e29b,_0x3ce7e6;_0x7e5ec2['remoteUri']=intUtil[_0x3e96('0x52')](_0x7e5ec2[_0x3e96('0x51')]);_0x7e5ec2[_0x3e96('0x59')]=intUtil[_0x3e96('0x52')](_0x7e5ec2[_0x3e96('0x59')]);def[_0x3e96('0x69')]=util[_0x3e96('0x20')](_0x3e96('0x53'),_0x7e5ec2['remoteUri']);if(_0x398f20&&_0x398f20[_0x3e96('0x6a')]&&_0x398f20[_0x3e96('0x6a')]!==_0x3e96('0x6b')){logger['info']('[OUTBOUND]',_0x3e96('0x56'));_0x47c242['recordingURL']=util[_0x3e96('0x20')](_0x3e96('0x58'),_0x7e5ec2[_0x3e96('0x59')],_0x47c242[_0x3e96('0x5a')],md5(_0x47c242[_0x3e96('0x5a')]));}return getConnection(_0x7e5ec2)[_0x3e96('0x2c')](function(_0xae2644){_0x3ce7e6=_0xae2644;return getUser(_0x7e5ec2,_0x6b953b[_0x3e96('0x18')],_0x3ce7e6);})[_0x3e96('0x2c')](function(_0x46757d){_0x11a2b1=_0x46757d;logger[_0x3e96('0xb')](_0x3e96('0x5b'),_0x11a2b1['id']);return getEndUser(_0x7e5ec2,_0x47c242[_0x3e96('0x6c')],_0x47c242[_0x3e96('0x6d')],_0x3ce7e6);})[_0x3e96('0x2c')](function(_0x5cac1d){_0x27b9cf=_0x5cac1d;logger[_0x3e96('0xb')]('The\x20Enduser\x20ID\x20is:',_0x27b9cf['id']);return getTicket(_0x7e5ec2,_0x11a2b1,_0x27b9cf,_0x43a70f,_0x47c242,_0x43a70f[_0x3e96('0x6e')],_0x3ce7e6,_0x3e96('0x6f'));})['then'](function(_0x1b0483){_0x42e29b=_0x1b0483;logger[_0x3e96('0xb')](_0x3e96('0x60'));logger[_0x3e96('0xb')]('The\x20Ticket\x20ID\x20is:',_0x42e29b['id']);return setRelationship(_0x3ce7e6,_0x11a2b1,_0x42e29b,_0x3e96('0x61'));})[_0x3e96('0x2c')](function(){return setRelationship(_0x3ce7e6,_0x27b9cf,_0x42e29b,_0x3e96('0x62'));})[_0x3e96('0x2c')](function(){return getServerInfo(_0x3ce7e6);})[_0x3e96('0x2c')](function(_0x13617a){var _0x3891a9=parseInt(_0x13617a[_0x3e96('0x70')][_0x3e96('0x63')](0x0));var _0xc8ee50=util[_0x3e96('0x20')](_0x3e96('0x71'),_0x7e5ec2[_0x3e96('0x51')],_0x42e29b['id']);if(_0x3891a9>0x6){_0xc8ee50=util[_0x3e96('0x20')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x7e5ec2['remoteUri'],_0x42e29b['id']);}logger[_0x3e96('0xb')](_0x3e96('0x72'),_0x3e96('0x73'));emit(util[_0x3e96('0x20')](_0x3e96('0x65'),_0x6b953b[_0x3e96('0x18')]),_0x3e96('0x74'),{'uri':_0xc8ee50});})['catch'](function(_0x56608f){logger[_0x3e96('0x67')](_0x3e96('0x72'),JSON[_0x3e96('0x26')](_0x56608f));});};exports[_0x3e96('0x75')]=function(_0x5f2f5f,_0x5b296f,_0x38a9b0,_0x554709,_0x4f5db8,_0x4a2dbe){var _0x37a3d7,_0x487d8d,_0x25d255,_0x27c855;_0x4a2dbe['remoteUri']=intUtil[_0x3e96('0x52')](_0x4a2dbe[_0x3e96('0x51')]);_0x4a2dbe[_0x3e96('0x59')]=intUtil[_0x3e96('0x52')](_0x4a2dbe[_0x3e96('0x59')]);def[_0x3e96('0x69')]=util[_0x3e96('0x20')](_0x3e96('0x53'),_0x4a2dbe['remoteUri']);if(_0x4f5db8&&_0x4f5db8[_0x3e96('0x54')]){logger['info']('['+_0x5b296f[_0x3e96('0x76')][_0x3e96('0x77')]()+']',_0x3e96('0x56'));_0x5b296f['recordingURL']=util[_0x3e96('0x20')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2dbe['serverUrl'],_0x5b296f[_0x3e96('0x5a')],md5(_0x5b296f[_0x3e96('0x5a')]));}else{_0x5b296f[_0x3e96('0x57')]='';}return getConnection(_0x4a2dbe)[_0x3e96('0x2c')](function(_0x3fc012){_0x27c855=_0x3fc012;if(!_[_0x3e96('0x78')](_0x554709)){return getUser(_0x4a2dbe,_0x554709[_0x3e96('0x18')],_0x27c855);}else{return getUser(_0x4a2dbe,null,_0x27c855);}})['then'](function(_0x2c8682){_0x37a3d7=_0x2c8682;logger['info'](_0x3e96('0x5b'),_0x37a3d7['id']);return getEndUser(_0x4a2dbe,_0x5b296f[_0x3e96('0x5c')],_0x5b296f[_0x3e96('0x5d')],_0x27c855);})[_0x3e96('0x2c')](function(_0x3fdf33){_0x487d8d=_0x3fdf33;logger['info'](_0x3e96('0x5e'),_0x487d8d['id']);return getTicket(_0x4a2dbe,_0x37a3d7,_0x487d8d,_0x38a9b0,_0x5b296f,_0x38a9b0[_0x3e96('0x6e')],_0x27c855,_0x3e96('0x5f'));})[_0x3e96('0x2c')](function(_0x3afb71){_0x25d255=_0x3afb71;logger[_0x3e96('0xb')]('Ticket\x20created!');logger[_0x3e96('0xb')](_0x3e96('0x79'),_0x25d255['id']);return setRelationship(_0x27c855,_0x37a3d7,_0x25d255,'users');})[_0x3e96('0x2c')](function(){return setRelationship(_0x27c855,_0x487d8d,_0x25d255,_0x3e96('0x62'));})[_0x3e96('0x2c')](function(){return getServerInfo(_0x27c855);})[_0x3e96('0x66')](function(_0x1848a0){logger['error']('['+_0x5b296f[_0x3e96('0x76')][_0x3e96('0x77')]()+']',JSON[_0x3e96('0x26')](_0x1848a0));});};
\ No newline at end of file
index 1df3241..1c14c89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded9=['util','length','sortBy','type','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','string','key','format','keyContent','%s:\x20%s','stripTrailingSlash','slice','substring','validateEmail','isNil','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xded9,0x151));var _0x9ded=function(_0x3b73cb,_0x294dc5){_0x3b73cb=_0x3b73cb-0x0;var _0x379fb9=_0xded9[_0x3b73cb];return _0x379fb9;};'use strict';var _=require(_0x9ded('0x0'));var util=require(_0x9ded('0x1'));exports['getString']=function(_0x22d68c,_0x4d2310,_0x55dc37){var _0x4548fa=[];if(_0x22d68c[_0x9ded('0x2')]>0x0){var _0x2692e3=_[_0x9ded('0x3')](_0x22d68c,['id']);for(var _0x93945c=0x0;_0x93945c<_0x2692e3[_0x9ded('0x2')];_0x93945c++){var _0xe712bf=_0x2692e3[_0x93945c];if(_0xe712bf[_0x9ded('0x4')]==='string'){_0x4548fa[_0x9ded('0x5')](_0xe712bf[_0x9ded('0x6')]);}else if(_0xe712bf[_0x9ded('0x4')]===_0x9ded('0x7')&&_0xe712bf[_0x9ded('0x8')]){_0x4d2310[_0xe712bf[_0x9ded('0x8')]]&&_0x4548fa[_0x9ded('0x5')](_0x4d2310[_0xe712bf['variableName']][_0x9ded('0x9')]());}else if(_0xe712bf['type']===_0x9ded('0xa')&&_0xe712bf[_0x9ded('0xb')]&&_0xe712bf[_0x9ded('0xb')][_0x9ded('0xc')]){_0x4d2310[_0xe712bf[_0x9ded('0xb')]['name'][_0x9ded('0xd')]()]&&_0x4548fa[_0x9ded('0x5')](_0x4d2310[_0xe712bf[_0x9ded('0xb')][_0x9ded('0xc')][_0x9ded('0xd')]()]['toString']());}else if(_0xe712bf[_0x9ded('0x4')]===_0x9ded('0xe')){if(_0xe712bf[_0x9ded('0xf')]===_0x9ded('0x10')&&_0xe712bf[_0x9ded('0x11')]){_0x4548fa['push'](util[_0x9ded('0x12')]('%s:\x20%s',_0xe712bf['key'],_0xe712bf[_0x9ded('0x13')]));}else if(_0xe712bf[_0x9ded('0xf')]==='variable'&&_0xe712bf[_0x9ded('0x8')]&&_0xe712bf[_0x9ded('0x11')]){_0x4d2310[_0xe712bf[_0x9ded('0x8')]]&&_0x4548fa[_0x9ded('0x5')](util['format'](_0x9ded('0x14'),_0xe712bf[_0x9ded('0x11')],_0x4d2310[_0xe712bf[_0x9ded('0x8')]]));}else if(_0xe712bf[_0x9ded('0xf')]===_0x9ded('0xa')&&_0xe712bf[_0x9ded('0xb')]&&_0xe712bf[_0x9ded('0xb')][_0x9ded('0xc')]&&_0xe712bf[_0x9ded('0x11')]){_0x4d2310[_0xe712bf[_0x9ded('0xb')][_0x9ded('0xc')][_0x9ded('0xd')]()]&&_0x4548fa[_0x9ded('0x5')](util['format'](_0x9ded('0x14'),_0xe712bf[_0x9ded('0x11')],_0x4d2310[_0xe712bf['Variable'][_0x9ded('0xc')][_0x9ded('0xd')]()]));}}}}return _0x4548fa['join'](_0x55dc37);};exports[_0x9ded('0x15')]=function(_0x4c9f2c){var _0x1d84c0=_0x4c9f2c[_0x9ded('0x16')](-0x1);if(_0x1d84c0==='/'){_0x4c9f2c=_0x4c9f2c[_0x9ded('0x17')](0x0,_0x4c9f2c['lastIndexOf'](_0x1d84c0));}return _0x4c9f2c;};exports[_0x9ded('0x18')]=function(_0x29c503){if(!_[_0x9ded('0x19')](_0x29c503)&&_0x29c503!==''){var _0x22f3db=/^(([^<>()\[\]\\.,;:\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 _0x22f3db['test'](String(_0x29c503)[_0x9ded('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x8527=['Variable','name','toLowerCase','keyValue','keyType','key','%s:\x20%s','keyContent','format','join','stripTrailingSlash','slice','substring','isNil','test','lodash','length','sortBy','type','string','content','variable','variableName','push','toString','customVariable'];(function(_0x6dbd7e,_0x541122){var _0x2cb261=function(_0x58f1ee){while(--_0x58f1ee){_0x6dbd7e['push'](_0x6dbd7e['shift']());}};_0x2cb261(++_0x541122);}(_0x8527,0x147));var _0x7852=function(_0x18b5e8,_0x51e875){_0x18b5e8=_0x18b5e8-0x0;var _0x25baed=_0x8527[_0x18b5e8];return _0x25baed;};'use strict';var _=require(_0x7852('0x0'));var util=require('util');exports['getString']=function(_0x5b04a8,_0x3f7bdc,_0x140d61){var _0x2b0078=[];if(_0x5b04a8[_0x7852('0x1')]>0x0){var _0x5f4fac=_[_0x7852('0x2')](_0x5b04a8,['id']);for(var _0x20ebd2=0x0;_0x20ebd2<_0x5f4fac[_0x7852('0x1')];_0x20ebd2++){var _0x595d50=_0x5f4fac[_0x20ebd2];if(_0x595d50[_0x7852('0x3')]===_0x7852('0x4')){_0x2b0078['push'](_0x595d50[_0x7852('0x5')]);}else if(_0x595d50['type']===_0x7852('0x6')&&_0x595d50[_0x7852('0x7')]){_0x3f7bdc[_0x595d50[_0x7852('0x7')]]&&_0x2b0078[_0x7852('0x8')](_0x3f7bdc[_0x595d50[_0x7852('0x7')]][_0x7852('0x9')]());}else if(_0x595d50[_0x7852('0x3')]===_0x7852('0xa')&&_0x595d50[_0x7852('0xb')]&&_0x595d50[_0x7852('0xb')][_0x7852('0xc')]){_0x3f7bdc[_0x595d50[_0x7852('0xb')]['name'][_0x7852('0xd')]()]&&_0x2b0078[_0x7852('0x8')](_0x3f7bdc[_0x595d50[_0x7852('0xb')][_0x7852('0xc')][_0x7852('0xd')]()][_0x7852('0x9')]());}else if(_0x595d50[_0x7852('0x3')]===_0x7852('0xe')){if(_0x595d50[_0x7852('0xf')]==='string'&&_0x595d50[_0x7852('0x10')]){_0x2b0078[_0x7852('0x8')](util['format'](_0x7852('0x11'),_0x595d50['key'],_0x595d50[_0x7852('0x12')]));}else if(_0x595d50[_0x7852('0xf')]===_0x7852('0x6')&&_0x595d50['variableName']&&_0x595d50[_0x7852('0x10')]){_0x3f7bdc[_0x595d50['variableName']]&&_0x2b0078[_0x7852('0x8')](util[_0x7852('0x13')](_0x7852('0x11'),_0x595d50['key'],_0x3f7bdc[_0x595d50['variableName']]));}else if(_0x595d50[_0x7852('0xf')]==='customVariable'&&_0x595d50[_0x7852('0xb')]&&_0x595d50['Variable']['name']&&_0x595d50[_0x7852('0x10')]){_0x3f7bdc[_0x595d50[_0x7852('0xb')][_0x7852('0xc')][_0x7852('0xd')]()]&&_0x2b0078[_0x7852('0x8')](util['format']('%s:\x20%s',_0x595d50[_0x7852('0x10')],_0x3f7bdc[_0x595d50[_0x7852('0xb')][_0x7852('0xc')][_0x7852('0xd')]()]));}}}}return _0x2b0078[_0x7852('0x14')](_0x140d61);};exports[_0x7852('0x15')]=function(_0x5c3a1c){var _0x35e29a=_0x5c3a1c[_0x7852('0x16')](-0x1);if(_0x35e29a==='/'){_0x5c3a1c=_0x5c3a1c[_0x7852('0x17')](0x0,_0x5c3a1c['lastIndexOf'](_0x35e29a));}return _0x5c3a1c;};exports['validateEmail']=function(_0x31a912){if(!_[_0x7852('0x18')](_0x31a912)&&_0x31a912!==''){var _0xb0f1ba=/^(([^<>()\[\]\\.,;:\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 _0xb0f1ba[_0x7852('0x19')](String(_0x31a912)[_0x7852('0xd')]());}else{return![];}};
\ No newline at end of file
index 0622985..b21a91c 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(_0xc6423f,_0x1ef2f9){var _0x5414b5=function(_0x4c1fd3){while(--_0x4c1fd3){_0xc6423f['push'](_0xc6423f['shift']());}};_0x5414b5(++_0x1ef2f9);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'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 _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index bc2bac4..08efad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d3d=['none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','Authorization','calleridname','The\x20Ticket\x20ID\x20is:','inspect','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','format','%s/tickets.json','remoteUri','merge','Tags','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Enduser\x20created.','authType','password','username','%s/token:%s','token','base64','debug','[HTTP]','stringify','defaults','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','custom_fields','push','variable','variableName','customVariable','Variable','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x7d3d,0x160));var _0xd7d3=function(_0xbc4560,_0x4020b8){_0xbc4560=_0xbc4560-0x0;var _0x298cfb=_0x7d3d[_0xbc4560];return _0x298cfb;};'use strict';var _=require(_0xd7d3('0x0'));var rp=require(_0xd7d3('0x1'));var md5=require(_0xd7d3('0x2'));var util=require(_0xd7d3('0x3'));var Redis=require(_0xd7d3('0x4'));var intUtil=require(_0xd7d3('0x5'));var config=require(_0xd7d3('0x6'));var logger=require(_0xd7d3('0x7'))(_0xd7d3('0x8'));config[_0xd7d3('0x9')]=_['defaults'](config[_0xd7d3('0x9')],{'host':_0xd7d3('0xa'),'port':0x18eb});var io=require(_0xd7d3('0xb'))(new Redis(config['redis']));function emit(_0x57ace4,_0x530490,_0x2c09f8){io['to'](_0x57ace4)[_0xd7d3('0xc')](_0x530490,_0x2c09f8);}var headers={'Content-Type':_0xd7d3('0xd'),'Accept':_0xd7d3('0xd')};function getTicket(_0x2a4fde,_0x508a0d,_0x37da97,_0x240e01,_0x4f6e93){logger[_0xd7d3('0xe')]('Creating\x20new\x20ticket...');return request({'uri':util[_0xd7d3('0xf')](_0xd7d3('0x10'),_0x2a4fde[_0xd7d3('0x11')]),'method':'POST','body':{'ticket':_[_0xd7d3('0x12')]({'requester_id':_0x37da97['id'],'submitter_id':_0x508a0d?_0x508a0d['id']:undefined,'assignee_id':_0x508a0d?_0x508a0d['id']:undefined,'tags':getTags(_0x240e01[_0xd7d3('0x13')],_0xd7d3('0x14')),'subject':intUtil[_0xd7d3('0x15')](_0x240e01['Subjects'],_0x4f6e93,'\x20'),'description':intUtil['getString'](_0x240e01[_0xd7d3('0x16')],_0x4f6e93,'\x0a'),'comment':{'public':![],'body':intUtil[_0xd7d3('0x15')](_0x240e01['Descriptions'],_0x4f6e93,'\x0a')}},getCustomFields(_0x240e01[_0xd7d3('0x17')],_0x4f6e93))}})[_0xd7d3('0x18')](function(_0x51e282){logger[_0xd7d3('0xe')](_0xd7d3('0x19'));return _0x51e282[_0xd7d3('0x1a')];});}function getUser(_0x4b8934,_0x5a43e8){if(intUtil['validateEmail'](_0x5a43e8)){logger[_0xd7d3('0xe')](_0xd7d3('0x1b'),_0x5a43e8);return request({'uri':util[_0xd7d3('0xf')](_0xd7d3('0x1c'),_0x4b8934[_0xd7d3('0x11')]),'qs':{'query':util[_0xd7d3('0xf')](_0xd7d3('0x1d'),_0x5a43e8)}})[_0xd7d3('0x18')](function(_0x446b4b){if(_0x446b4b[_0xd7d3('0x1e')]){logger[_0xd7d3('0xe')]('Agent\x20found!');return _['find'](_0x446b4b[_0xd7d3('0x1f')],{'email':_0x5a43e8,'role':_0xd7d3('0x20')});}else{logger['info'](_0xd7d3('0x21'));return request({'uri':util['format'](_0xd7d3('0x22'),_0x4b8934['remoteUri'])})[_0xd7d3('0x18')](function(_0x540c26){logger['info']('Admin\x20account\x20selected.');return _0x540c26[_0xd7d3('0x23')];});}});}else{logger[_0xd7d3('0xe')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd7d3('0xf')]('%s/users/me.json',_0x4b8934[_0xd7d3('0x11')])})['then'](function(_0xe403f9){logger[_0xd7d3('0xe')](_0xd7d3('0x24'));return _0xe403f9[_0xd7d3('0x23')];});}}function getEndUser(_0x13342f,_0x633f3,_0x1c2fdf){logger[_0xd7d3('0xe')](_0xd7d3('0x25'),_0x1c2fdf);return request({'uri':util['format'](_0xd7d3('0x1c'),_0x13342f[_0xd7d3('0x11')]),'qs':{'query':util[_0xd7d3('0xf')](_0xd7d3('0x26'),_0x1c2fdf)}})['then'](function(_0x5c5edf){var _0x5c1ab3;if(_0x5c5edf[_0xd7d3('0x1f')][_0xd7d3('0x27')]){_0x5c5edf['results']=_[_0xd7d3('0x28')](_0x5c5edf['results'],{'suspended':![],'role':'end-user'});if(_0x5c5edf[_0xd7d3('0x1f')][_0xd7d3('0x27')]){_0x5c1ab3=_[_0xd7d3('0x29')](_0x5c5edf['results']);}}if(_0x5c1ab3){logger['info']('Enduser\x20found!');return _0x5c1ab3;}else{logger[_0xd7d3('0xe')](_0xd7d3('0x2a'));return request({'uri':util[_0xd7d3('0xf')](_0xd7d3('0x2b'),_0x13342f[_0xd7d3('0x11')]),'method':'POST','body':{'user':{'role':_0xd7d3('0x2c'),'name':util[_0xd7d3('0xf')]('Caller\x20-\x20%s',_0x633f3||_0x1c2fdf),'phone':_0x1c2fdf}}})['then'](function(_0x28af5e){logger['info'](_0xd7d3('0x2d'));return _0x28af5e['user'];});}});}function getAuth(_0x4305b9){var _0x24682f;if(_0x4305b9[_0xd7d3('0x2e')]===_0xd7d3('0x2f')){_0x24682f=util[_0xd7d3('0xf')]('%s:%s',_0x4305b9[_0xd7d3('0x30')],_0x4305b9[_0xd7d3('0x2f')]);}else if(_0x4305b9['authType']==='token'){_0x24682f=util['format'](_0xd7d3('0x31'),_0x4305b9[_0xd7d3('0x30')],_0x4305b9[_0xd7d3('0x32')]);}return util[_0xd7d3('0xf')]('Basic\x20%s',new Buffer(_0x24682f)['toString'](_0xd7d3('0x33')));}function request(_0x4f4e83){logger[_0xd7d3('0x34')](_0xd7d3('0x35'),JSON[_0xd7d3('0x36')](_0x4f4e83));return rp(_[_0xd7d3('0x37')](_0x4f4e83,{'method':_0xd7d3('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x172e22,_0x5587a3){var _0x3a4220=[];if(_0x172e22&&_0x172e22[_0xd7d3('0x27')]>0x0){_0x3a4220=_[_0xd7d3('0x39')](_0x172e22,_0x5587a3);}return _0x3a4220;}function getCustomFields(_0x55683b,_0x12e9f7){var _0xf5a2ee=[];var _0x1ba4e3={'custom_fields':[]};if(_0x55683b[_0xd7d3('0x27')]>0x0){_[_0xd7d3('0x3a')](_0x55683b,function(_0x329b02){if(_[_0xd7d3('0x3b')]([_0xd7d3('0x3c'),_0xd7d3('0x3d')],_0x329b02[_0xd7d3('0x3e')])&&_0x329b02[_0xd7d3('0x3f')]&&!_0x329b02[_0xd7d3('0x40')]){_0x1ba4e3[_0x329b02[_0xd7d3('0x3f')][_0xd7d3('0x41')]()]=_0x329b02[_0xd7d3('0x42')][_0xd7d3('0x43')]();}else if(_[_0xd7d3('0x3b')]([_0xd7d3('0x3c'),'picklist'],_0x329b02[_0xd7d3('0x3e')])&&_0x329b02[_0xd7d3('0x44')]&&_0x329b02[_0xd7d3('0x40')]){_0x1ba4e3[_0xd7d3('0x45')][_0xd7d3('0x46')]({'id':_0x329b02['idField'],'value':_0x329b02[_0xd7d3('0x42')][_0xd7d3('0x43')]()});}else if(_0x329b02[_0xd7d3('0x3e')]===_0xd7d3('0x47')&&_0x329b02['variableName']&&_0x329b02[_0xd7d3('0x44')]&&_0x329b02['customField']){_0x12e9f7[_0x329b02[_0xd7d3('0x48')]]&&_0x1ba4e3[_0xd7d3('0x45')][_0xd7d3('0x46')]({'id':_0x329b02[_0xd7d3('0x44')],'value':_0x12e9f7[_0x329b02[_0xd7d3('0x48')]]['toString']()});}else if(_0x329b02['type']===_0xd7d3('0x49')&&_0x329b02[_0xd7d3('0x4a')]&&_0x329b02[_0xd7d3('0x4a')][_0xd7d3('0x14')]&&_0x329b02[_0xd7d3('0x44')]&&_0x329b02['customField']){_0x12e9f7[_0x329b02[_0xd7d3('0x4a')][_0xd7d3('0x14')]['toLowerCase']()]&&_0x1ba4e3[_0xd7d3('0x45')][_0xd7d3('0x46')]({'id':_0x329b02['idField'],'value':_0x12e9f7[_0x329b02[_0xd7d3('0x4a')][_0xd7d3('0x14')][_0xd7d3('0x41')]()][_0xd7d3('0x43')]()});}});}return _0x1ba4e3;}exports['queue']=function(_0x50f73b,_0x2b9b47,_0xdd2e20,_0x6e4cbe,_0x547e5b,_0x21c3f0){var _0x2c80e0,_0x5d326a;_0x21c3f0[_0xd7d3('0x11')]=intUtil[_0xd7d3('0x4b')](_0x21c3f0[_0xd7d3('0x11')]);_0x21c3f0[_0xd7d3('0x4c')]=intUtil[_0xd7d3('0x4b')](_0x21c3f0[_0xd7d3('0x4c')]);if(_0x547e5b&&_0x547e5b['monitor_format']){logger[_0xd7d3('0xe')](_0xd7d3('0x4d'),'Recording\x20is\x20enabled!');_0x2b9b47[_0xd7d3('0x4e')]=util[_0xd7d3('0xf')](_0xd7d3('0x4f'),_0x21c3f0[_0xd7d3('0x4c')],_0x2b9b47[_0xd7d3('0x50')],md5(_0x2b9b47[_0xd7d3('0x50')]));}else{_0x2b9b47[_0xd7d3('0x4e')]='';}headers['Authorization']=getAuth(_0x21c3f0);return getUser(_0x21c3f0,_0x6e4cbe[_0xd7d3('0x51')])['then'](function(_0x23b319){_0x2c80e0=_0x23b319;logger[_0xd7d3('0xe')]('The\x20User\x20ID\x20is:',_0x2c80e0['id']);return getEndUser(_0x21c3f0,_0x2b9b47['calleridname'],_0x2b9b47[_0xd7d3('0x52')]);})[_0xd7d3('0x18')](function(_0x4875e0){_0x5d326a=_0x4875e0;logger[_0xd7d3('0xe')](_0xd7d3('0x53'),_0x5d326a['id']);return getTicket(_0x21c3f0,_0x2c80e0,_0x5d326a,_0xdd2e20,_0x2b9b47);})[_0xd7d3('0x18')](function(_0x291c8f){if(_0x291c8f){logger[_0xd7d3('0xe')]('The\x20Ticket\x20ID\x20is:',_0x291c8f['id']);switch(_0x21c3f0['type']){case _0xd7d3('0x54'):logger[_0xd7d3('0xe')]('[QUEUE]',_0xd7d3('0x55'));return request({'uri':util[_0xd7d3('0xf')](_0xd7d3('0x56'),_0x21c3f0['remoteUri'],_0x2c80e0['id'],_0x291c8f['id']),'method':_0xd7d3('0x57')});case _0xd7d3('0x58'):logger[_0xd7d3('0xe')](_0xd7d3('0x4d'),_0xd7d3('0x59'));emit(util['format'](_0xd7d3('0x5a'),_0x6e4cbe['name']),_0xd7d3('0x5b'),{'uri':util[_0xd7d3('0xf')](_0xd7d3('0x5c'),_0x21c3f0[_0xd7d3('0x11')][_0xd7d3('0x5d')](_0xd7d3('0x5e'),''),_0x291c8f['id'])});break;default:logger[_0xd7d3('0x5f')]('[QUEUE]',_0xd7d3('0x60'));}}})[_0xd7d3('0x61')](function(_0x516b36){logger[_0xd7d3('0x5f')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x516b36,{'showHidden':!![],'depth':null}));});};exports[_0xd7d3('0x62')]=function(_0xfe9d0b,_0x102f87,_0x551535,_0xfad4dc,_0x184d88,_0x1eab22,_0x5f46f1){var _0x18d95f,_0x10f15b;_0x1eab22[_0xd7d3('0x11')]=intUtil[_0xd7d3('0x4b')](_0x1eab22[_0xd7d3('0x11')]);_0x1eab22[_0xd7d3('0x4c')]=intUtil['stripTrailingSlash'](_0x1eab22[_0xd7d3('0x4c')]);if(_0x5f46f1&&_0x5f46f1[_0xd7d3('0x63')]&&_0x5f46f1[_0xd7d3('0x63')]!==_0xd7d3('0x64')){logger[_0xd7d3('0xe')](_0xd7d3('0x65'),'Recording\x20is\x20enabled!');_0x102f87[_0xd7d3('0x4e')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1eab22[_0xd7d3('0x4c')],_0x102f87['uniqueid'],md5(_0x102f87[_0xd7d3('0x50')]));}headers['Authorization']=getAuth(_0x1eab22);return getUser(_0x1eab22,_0xfad4dc[_0xd7d3('0x51')])[_0xd7d3('0x18')](function(_0x6d59dc){_0x18d95f=_0x6d59dc;logger[_0xd7d3('0xe')](_0xd7d3('0x66'),_0x18d95f['id']);return getEndUser(_0x1eab22,_0x102f87[_0xd7d3('0x67')],_0x102f87['destcalleridnum']);})[_0xd7d3('0x18')](function(_0x5c2dac){_0x10f15b=_0x5c2dac;logger[_0xd7d3('0xe')](_0xd7d3('0x53'),_0x10f15b['id']);return getTicket(_0x1eab22,_0x18d95f,_0x10f15b,_0x551535,_0x102f87);})['then'](function(_0x40c53b){if(_0x40c53b){logger['info']('The\x20Ticket\x20ID\x20is:',_0x40c53b['id']);switch(_0x1eab22['type']){case _0xd7d3('0x54'):logger[_0xd7d3('0xe')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xd7d3('0xf')](_0xd7d3('0x56'),_0x1eab22[_0xd7d3('0x11')],_0x18d95f['id'],_0x40c53b['id']),'method':_0xd7d3('0x57')});case _0xd7d3('0x58'):logger['info'](_0xd7d3('0x65'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0xfad4dc[_0xd7d3('0x14')]),_0xd7d3('0x5b'),{'uri':util[_0xd7d3('0xf')](_0xd7d3('0x5c'),_0x1eab22['remoteUri'][_0xd7d3('0x5d')](_0xd7d3('0x5e'),''),_0x40c53b['id'])});break;default:logger['error'](_0xd7d3('0x65'),_0xd7d3('0x60'));}}})[_0xd7d3('0x61')](function(_0x4a6615){logger[_0xd7d3('0x5f')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x4a6615,{'showHidden':!![],'depth':null}));});};exports[_0xd7d3('0x68')]=function(_0x39fa9e,_0x2a687e,_0xf6a2d9,_0x52d489,_0x2061a3,_0x12a3ee){var _0x2bdfbe,_0xebc575;_0x12a3ee[_0xd7d3('0x11')]=intUtil[_0xd7d3('0x4b')](_0x12a3ee[_0xd7d3('0x11')]);_0x12a3ee[_0xd7d3('0x4c')]=intUtil[_0xd7d3('0x4b')](_0x12a3ee['serverUrl']);if(_0x2061a3&&_0x2061a3[_0xd7d3('0x69')]){logger['info']('['+_0x2a687e[_0xd7d3('0x6a')][_0xd7d3('0x6b')]()+']',_0xd7d3('0x6c'));_0x2a687e[_0xd7d3('0x4e')]=util['format'](_0xd7d3('0x4f'),_0x12a3ee[_0xd7d3('0x4c')],_0x2a687e[_0xd7d3('0x50')],md5(_0x2a687e['uniqueid']));}else{_0x2a687e[_0xd7d3('0x4e')]='';}headers[_0xd7d3('0x6d')]=getAuth(_0x12a3ee);return getUser(_0x12a3ee)['then'](function(_0x32ec09){_0x2bdfbe=_0x32ec09;logger[_0xd7d3('0xe')]('The\x20User\x20ID\x20is:',_0x2bdfbe['id']);return getEndUser(_0x12a3ee,_0x2a687e[_0xd7d3('0x6e')],_0x2a687e[_0xd7d3('0x52')]);})['then'](function(_0x1ba66f){_0xebc575=_0x1ba66f;logger[_0xd7d3('0xe')](_0xd7d3('0x53'),_0xebc575['id']);return getTicket(_0x12a3ee,_0x2bdfbe,_0xebc575,_0xf6a2d9,_0x2a687e);})[_0xd7d3('0x18')](function(_0x520421){if(_0x520421){logger['info'](_0xd7d3('0x6f'),_0x520421['id']);}})[_0xd7d3('0x61')](function(_0x1fa83f){logger[_0xd7d3('0x5f')]('['+_0x2a687e[_0xd7d3('0x6a')][_0xd7d3('0x6b')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xd7d3('0x70')](_0x1fa83f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb48c=['%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','Authorization','destcalleridname','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','emit','application/json','%s/tickets.json','remoteUri','POST','merge','Tags','getString','Subjects','Descriptions','Fields','info','ticket','validateEmail','%s/search.json','format','type:user\x20role:agent\x20email:%s','then','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','map','forEach','string','picklist','type','nameField','includes','idField','customField','custom_fields','content','variable','variableName','push','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...'];(function(_0x168b7d,_0x5a906f){var _0x388531=function(_0x4460f8){while(--_0x4460f8){_0x168b7d['push'](_0x168b7d['shift']());}};_0x388531(++_0x5a906f);}(_0xb48c,0x164));var _0xcb48=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xb48c[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xcb48('0x0'));var util=require(_0xcb48('0x1'));var Redis=require(_0xcb48('0x2'));var intUtil=require(_0xcb48('0x3'));var config=require(_0xcb48('0x4'));var logger=require('../../../../config/logger')('zendesk');config[_0xcb48('0x5')]=_[_0xcb48('0x6')](config[_0xcb48('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcb48('0x5')]));function emit(_0x544f83,_0x1df420,_0x5e84ed){io['to'](_0x544f83)[_0xcb48('0x7')](_0x1df420,_0x5e84ed);}var headers={'Content-Type':_0xcb48('0x8'),'Accept':'application/json'};function getTicket(_0x4026ad,_0x28bbc6,_0x1b117e,_0x90c6e8,_0x2d65a2){logger['info']('Creating\x20new\x20ticket...');return request({'uri':util['format'](_0xcb48('0x9'),_0x4026ad[_0xcb48('0xa')]),'method':_0xcb48('0xb'),'body':{'ticket':_[_0xcb48('0xc')]({'requester_id':_0x1b117e['id'],'submitter_id':_0x28bbc6?_0x28bbc6['id']:undefined,'assignee_id':_0x28bbc6?_0x28bbc6['id']:undefined,'tags':getTags(_0x90c6e8[_0xcb48('0xd')],'name'),'subject':intUtil[_0xcb48('0xe')](_0x90c6e8[_0xcb48('0xf')],_0x2d65a2,'\x20'),'description':intUtil[_0xcb48('0xe')](_0x90c6e8['Descriptions'],_0x2d65a2,'\x0a'),'comment':{'public':![],'body':intUtil[_0xcb48('0xe')](_0x90c6e8[_0xcb48('0x10')],_0x2d65a2,'\x0a')}},getCustomFields(_0x90c6e8[_0xcb48('0x11')],_0x2d65a2))}})['then'](function(_0x41b3ef){logger[_0xcb48('0x12')]('Ticket\x20created!');return _0x41b3ef[_0xcb48('0x13')];});}function getUser(_0x30703a,_0x4dff5b){if(intUtil[_0xcb48('0x14')](_0x4dff5b)){logger[_0xcb48('0x12')]('Getting\x20agent\x20with\x20email',_0x4dff5b);return request({'uri':util['format'](_0xcb48('0x15'),_0x30703a[_0xcb48('0xa')]),'qs':{'query':util[_0xcb48('0x16')](_0xcb48('0x17'),_0x4dff5b)}})[_0xcb48('0x18')](function(_0x33e81f){if(_0x33e81f['count']){logger['info'](_0xcb48('0x19'));return _[_0xcb48('0x1a')](_0x33e81f[_0xcb48('0x1b')],{'email':_0x4dff5b,'role':_0xcb48('0x1c')});}else{logger[_0xcb48('0x12')](_0xcb48('0x1d'));return request({'uri':util['format'](_0xcb48('0x1e'),_0x30703a[_0xcb48('0xa')])})[_0xcb48('0x18')](function(_0x119e74){logger[_0xcb48('0x12')]('Admin\x20account\x20selected.');return _0x119e74[_0xcb48('0x1f')];});}});}else{logger[_0xcb48('0x12')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xcb48('0x16')](_0xcb48('0x1e'),_0x30703a['remoteUri'])})[_0xcb48('0x18')](function(_0x2d0899){logger[_0xcb48('0x12')](_0xcb48('0x20'));return _0x2d0899[_0xcb48('0x1f')];});}}function getEndUser(_0x194068,_0x410512,_0x23a417){logger[_0xcb48('0x12')](_0xcb48('0x21'),_0x23a417);return request({'uri':util[_0xcb48('0x16')](_0xcb48('0x15'),_0x194068[_0xcb48('0xa')]),'qs':{'query':util[_0xcb48('0x16')]('type:user\x20role:end-user\x20phone:%s',_0x23a417)}})[_0xcb48('0x18')](function(_0x5595c2){var _0x491de1;if(_0x5595c2[_0xcb48('0x1b')][_0xcb48('0x22')]){_0x5595c2[_0xcb48('0x1b')]=_[_0xcb48('0x23')](_0x5595c2['results'],{'suspended':![],'role':_0xcb48('0x24')});if(_0x5595c2[_0xcb48('0x1b')]['length']){_0x491de1=_[_0xcb48('0x25')](_0x5595c2[_0xcb48('0x1b')]);}}if(_0x491de1){logger['info'](_0xcb48('0x26'));return _0x491de1;}else{logger[_0xcb48('0x12')](_0xcb48('0x27'));return request({'uri':util[_0xcb48('0x16')]('%s/users.json',_0x194068[_0xcb48('0xa')]),'method':_0xcb48('0xb'),'body':{'user':{'role':_0xcb48('0x24'),'name':util[_0xcb48('0x16')](_0xcb48('0x28'),_0x410512||_0x23a417),'phone':_0x23a417}}})['then'](function(_0x482eb5){logger['info'](_0xcb48('0x29'));return _0x482eb5['user'];});}});}function getAuth(_0x40ea51){var _0x2cbaef;if(_0x40ea51[_0xcb48('0x2a')]===_0xcb48('0x2b')){_0x2cbaef=util['format'](_0xcb48('0x2c'),_0x40ea51[_0xcb48('0x2d')],_0x40ea51['password']);}else if(_0x40ea51[_0xcb48('0x2a')]===_0xcb48('0x2e')){_0x2cbaef=util[_0xcb48('0x16')](_0xcb48('0x2f'),_0x40ea51[_0xcb48('0x2d')],_0x40ea51[_0xcb48('0x2e')]);}return util[_0xcb48('0x16')](_0xcb48('0x30'),new Buffer(_0x2cbaef)[_0xcb48('0x31')](_0xcb48('0x32')));}function request(_0x225c5d){logger[_0xcb48('0x33')](_0xcb48('0x34'),JSON[_0xcb48('0x35')](_0x225c5d));return rp(_[_0xcb48('0x6')](_0x225c5d,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x32830d,_0x21f15c){var _0x45f0da=[];if(_0x32830d&&_0x32830d[_0xcb48('0x22')]>0x0){_0x45f0da=_[_0xcb48('0x36')](_0x32830d,_0x21f15c);}return _0x45f0da;}function getCustomFields(_0x499cea,_0x2bbf9b){var _0x55c61e=[];var _0x20aa87={'custom_fields':[]};if(_0x499cea[_0xcb48('0x22')]>0x0){_[_0xcb48('0x37')](_0x499cea,function(_0x81a37a){if(_['includes']([_0xcb48('0x38'),_0xcb48('0x39')],_0x81a37a[_0xcb48('0x3a')])&&_0x81a37a[_0xcb48('0x3b')]&&!_0x81a37a['customField']){_0x20aa87[_0x81a37a[_0xcb48('0x3b')]['toLowerCase']()]=_0x81a37a['content']['toString']();}else if(_[_0xcb48('0x3c')](['string',_0xcb48('0x39')],_0x81a37a['type'])&&_0x81a37a[_0xcb48('0x3d')]&&_0x81a37a[_0xcb48('0x3e')]){_0x20aa87[_0xcb48('0x3f')]['push']({'id':_0x81a37a[_0xcb48('0x3d')],'value':_0x81a37a[_0xcb48('0x40')][_0xcb48('0x31')]()});}else if(_0x81a37a[_0xcb48('0x3a')]===_0xcb48('0x41')&&_0x81a37a[_0xcb48('0x42')]&&_0x81a37a[_0xcb48('0x3d')]&&_0x81a37a[_0xcb48('0x3e')]){_0x2bbf9b[_0x81a37a[_0xcb48('0x42')]]&&_0x20aa87[_0xcb48('0x3f')][_0xcb48('0x43')]({'id':_0x81a37a[_0xcb48('0x3d')],'value':_0x2bbf9b[_0x81a37a['variableName']][_0xcb48('0x31')]()});}else if(_0x81a37a['type']===_0xcb48('0x44')&&_0x81a37a[_0xcb48('0x45')]&&_0x81a37a[_0xcb48('0x45')][_0xcb48('0x46')]&&_0x81a37a['idField']&&_0x81a37a[_0xcb48('0x3e')]){_0x2bbf9b[_0x81a37a[_0xcb48('0x45')][_0xcb48('0x46')][_0xcb48('0x47')]()]&&_0x20aa87[_0xcb48('0x3f')][_0xcb48('0x43')]({'id':_0x81a37a[_0xcb48('0x3d')],'value':_0x2bbf9b[_0x81a37a[_0xcb48('0x45')]['name']['toLowerCase']()][_0xcb48('0x31')]()});}});}return _0x20aa87;}exports[_0xcb48('0x48')]=function(_0x162c8c,_0x5b1811,_0x306dc5,_0x4909fa,_0x3ba035,_0x137a38){var _0x57aaba,_0x1d8f9c;_0x137a38[_0xcb48('0xa')]=intUtil[_0xcb48('0x49')](_0x137a38[_0xcb48('0xa')]);_0x137a38[_0xcb48('0x4a')]=intUtil[_0xcb48('0x49')](_0x137a38['serverUrl']);if(_0x3ba035&&_0x3ba035[_0xcb48('0x4b')]){logger[_0xcb48('0x12')](_0xcb48('0x4c'),_0xcb48('0x4d'));_0x5b1811[_0xcb48('0x4e')]=util[_0xcb48('0x16')](_0xcb48('0x4f'),_0x137a38[_0xcb48('0x4a')],_0x5b1811[_0xcb48('0x50')],md5(_0x5b1811[_0xcb48('0x50')]));}else{_0x5b1811[_0xcb48('0x4e')]='';}headers['Authorization']=getAuth(_0x137a38);return getUser(_0x137a38,_0x4909fa[_0xcb48('0x51')])[_0xcb48('0x18')](function(_0x1bda5a){_0x57aaba=_0x1bda5a;logger[_0xcb48('0x12')](_0xcb48('0x52'),_0x57aaba['id']);return getEndUser(_0x137a38,_0x5b1811[_0xcb48('0x53')],_0x5b1811[_0xcb48('0x54')]);})[_0xcb48('0x18')](function(_0x2c2df2){_0x1d8f9c=_0x2c2df2;logger[_0xcb48('0x12')]('The\x20Enduser\x20ID\x20is:',_0x1d8f9c['id']);return getTicket(_0x137a38,_0x57aaba,_0x1d8f9c,_0x306dc5,_0x5b1811);})[_0xcb48('0x18')](function(_0x388da5){if(_0x388da5){logger[_0xcb48('0x12')](_0xcb48('0x55'),_0x388da5['id']);switch(_0x137a38[_0xcb48('0x3a')]){case _0xcb48('0x56'):logger['info'](_0xcb48('0x4c'),_0xcb48('0x57'));return request({'uri':util[_0xcb48('0x16')](_0xcb48('0x58'),_0x137a38[_0xcb48('0xa')],_0x57aaba['id'],_0x388da5['id']),'method':_0xcb48('0xb')});case _0xcb48('0x59'):logger['info'](_0xcb48('0x4c'),_0xcb48('0x5a'));emit(util['format'](_0xcb48('0x5b'),_0x4909fa[_0xcb48('0x46')]),_0xcb48('0x5c'),{'uri':util['format'](_0xcb48('0x5d'),_0x137a38[_0xcb48('0xa')]['replace'](_0xcb48('0x5e'),''),_0x388da5['id'])});break;default:logger[_0xcb48('0x5f')](_0xcb48('0x4c'),_0xcb48('0x60'));}}})[_0xcb48('0x61')](function(_0xd06045){logger[_0xcb48('0x5f')](_0xcb48('0x62'),util[_0xcb48('0x63')](_0xd06045,{'showHidden':!![],'depth':null}));});};exports[_0xcb48('0x64')]=function(_0x3f45fa,_0x41661e,_0x4df310,_0x5ab892,_0x39d326,_0x1cf6c8,_0x324b10){var _0x3fec1b,_0xea0622;_0x1cf6c8[_0xcb48('0xa')]=intUtil[_0xcb48('0x49')](_0x1cf6c8[_0xcb48('0xa')]);_0x1cf6c8[_0xcb48('0x4a')]=intUtil[_0xcb48('0x49')](_0x1cf6c8['serverUrl']);if(_0x324b10&&_0x324b10[_0xcb48('0x65')]&&_0x324b10['recordingFormat']!==_0xcb48('0x66')){logger[_0xcb48('0x12')]('[OUTBOUND]',_0xcb48('0x4d'));_0x41661e[_0xcb48('0x4e')]=util[_0xcb48('0x16')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1cf6c8['serverUrl'],_0x41661e[_0xcb48('0x50')],md5(_0x41661e['uniqueid']));}headers[_0xcb48('0x67')]=getAuth(_0x1cf6c8);return getUser(_0x1cf6c8,_0x5ab892[_0xcb48('0x51')])[_0xcb48('0x18')](function(_0x2ffe1e){_0x3fec1b=_0x2ffe1e;logger[_0xcb48('0x12')](_0xcb48('0x52'),_0x3fec1b['id']);return getEndUser(_0x1cf6c8,_0x41661e[_0xcb48('0x68')],_0x41661e['destcalleridnum']);})[_0xcb48('0x18')](function(_0x375abd){_0xea0622=_0x375abd;logger[_0xcb48('0x12')](_0xcb48('0x69'),_0xea0622['id']);return getTicket(_0x1cf6c8,_0x3fec1b,_0xea0622,_0x4df310,_0x41661e);})[_0xcb48('0x18')](function(_0x5b992a){if(_0x5b992a){logger[_0xcb48('0x12')](_0xcb48('0x55'),_0x5b992a['id']);switch(_0x1cf6c8[_0xcb48('0x3a')]){case _0xcb48('0x56'):logger[_0xcb48('0x12')](_0xcb48('0x6a'),_0xcb48('0x57'));return request({'uri':util[_0xcb48('0x16')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x1cf6c8[_0xcb48('0xa')],_0x3fec1b['id'],_0x5b992a['id']),'method':'POST'});case'newTab':logger[_0xcb48('0x12')](_0xcb48('0x6a'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xcb48('0x5b'),_0x5ab892[_0xcb48('0x46')]),_0xcb48('0x5c'),{'uri':util[_0xcb48('0x16')](_0xcb48('0x5d'),_0x1cf6c8[_0xcb48('0xa')][_0xcb48('0x6b')](_0xcb48('0x5e'),''),_0x5b992a['id'])});break;default:logger[_0xcb48('0x5f')](_0xcb48('0x6a'),_0xcb48('0x60'));}}})[_0xcb48('0x61')](function(_0x5f23d8){logger[_0xcb48('0x5f')](_0xcb48('0x6c'),util[_0xcb48('0x63')](_0x5f23d8,{'showHidden':!![],'depth':null}));});};exports[_0xcb48('0x6d')]=function(_0x638f1b,_0x4094c2,_0x3594e8,_0x2e5988,_0x21f696,_0x5f1cf1){var _0x358db0,_0x4fbb36;_0x5f1cf1[_0xcb48('0xa')]=intUtil[_0xcb48('0x49')](_0x5f1cf1[_0xcb48('0xa')]);_0x5f1cf1[_0xcb48('0x4a')]=intUtil[_0xcb48('0x49')](_0x5f1cf1[_0xcb48('0x4a')]);if(_0x21f696&&_0x21f696[_0xcb48('0x4b')]){logger[_0xcb48('0x12')]('['+_0x4094c2[_0xcb48('0x6e')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x4094c2[_0xcb48('0x4e')]=util[_0xcb48('0x16')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5f1cf1[_0xcb48('0x4a')],_0x4094c2['uniqueid'],md5(_0x4094c2[_0xcb48('0x50')]));}else{_0x4094c2[_0xcb48('0x4e')]='';}headers[_0xcb48('0x67')]=getAuth(_0x5f1cf1);return getUser(_0x5f1cf1)['then'](function(_0x715562){_0x358db0=_0x715562;logger['info'](_0xcb48('0x52'),_0x358db0['id']);return getEndUser(_0x5f1cf1,_0x4094c2[_0xcb48('0x53')],_0x4094c2[_0xcb48('0x54')]);})[_0xcb48('0x18')](function(_0x1d0008){_0x4fbb36=_0x1d0008;logger['info'](_0xcb48('0x69'),_0x4fbb36['id']);return getTicket(_0x5f1cf1,_0x358db0,_0x4fbb36,_0x3594e8,_0x4094c2);})[_0xcb48('0x18')](function(_0x37c29b){if(_0x37c29b){logger[_0xcb48('0x12')](_0xcb48('0x55'),_0x37c29b['id']);}})[_0xcb48('0x61')](function(_0x14b6dd){logger[_0xcb48('0x5f')]('['+_0x4094c2['lastevent']['toUpperCase']()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0xcb48('0x63')](_0x14b6dd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index ae48ef7..d70f42f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406c=['Last_Name','$se_module','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','merge','Fields','POST','/crm/v2/Calls','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','zoho.eu','destcalleridnum','Outbound','unmanaged','toUpperCase','lodash','md5','util','moment','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','expires_in','access_token','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','catch','error','Failing\x20creating\x20the\x20access_token','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','first_name','last_name','code','SUCCESS','details','Error:\x20','log','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','Owner','role','administrator','Subject','getString','Description','Descriptions','Who_Id','Full_Name','First_Name'];(function(_0x3e9d61,_0x320c31){var _0x5c9190=function(_0x1e48ab){while(--_0x1e48ab){_0x3e9d61['push'](_0x3e9d61['shift']());}};_0x5c9190(++_0x320c31);}(_0x406c,0xda));var _0xc406=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x406c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc406('0x0'));var rp=require('request-promise');var md5=require(_0xc406('0x1'));var util=require(_0xc406('0x2'));var intUtil=require('./util');var moment=require(_0xc406('0x3'));var Redis=require(_0xc406('0x4'));var BPromise=require(_0xc406('0x5'));var config=require(_0xc406('0x6'));var logger=require('../../../../config/logger')(_0xc406('0x7'));config[_0xc406('0x8')]=_[_0xc406('0x9')](config[_0xc406('0x8')],{'host':_0xc406('0xa'),'port':0x18eb});var io=require(_0xc406('0xb'))(new Redis(config[_0xc406('0x8')]));function emit(_0x12a05b,_0x3abcda,_0x49e6d2){io['to'](_0x12a05b)[_0xc406('0xc')](_0x3abcda,_0x49e6d2);}function request(_0x503aa){logger[_0xc406('0xd')](_0xc406('0xe'),JSON[_0xc406('0xf')](_0x503aa));return rp(_0x503aa);}function getCustomFields(_0x3b0c8d,_0xe632db){var _0x1b4230={};if(_0x3b0c8d[_0xc406('0x10')]>0x0){_[_0xc406('0x11')](_0x3b0c8d,function(_0xf457de){if(_[_0xc406('0x12')]([_0xc406('0x13'),'picklist'],_0xf457de[_0xc406('0x14')])&&_0xf457de[_0xc406('0x15')]){_0x1b4230[_0xf457de[_0xc406('0x15')]]=_0xf457de[_0xc406('0x16')][_0xc406('0x17')]();}else if(_0xf457de[_0xc406('0x14')]===_0xc406('0x18')&&_0xf457de[_0xc406('0x19')]&&_0xf457de['idField']&&_0xe632db[_0xf457de[_0xc406('0x19')]]){_0x1b4230[_0xf457de['idField']]=_0xe632db[_0xf457de['variableName']]['toString']();}else if(_0xf457de[_0xc406('0x14')]===_0xc406('0x1a')&&_0xf457de['Variable']&&_0xf457de[_0xc406('0x1b')]['name']&&_0xf457de['idField']&&_0xe632db[_0xf457de[_0xc406('0x1b')][_0xc406('0x1c')][_0xc406('0x1d')]()]){_0x1b4230[_0xf457de[_0xc406('0x15')]]=_0xe632db[_0xf457de[_0xc406('0x1b')][_0xc406('0x1c')][_0xc406('0x1d')]()]['toString']();}});}return _0x1b4230;}function getName(_0x209836){if(_0x209836[_0xc406('0x1e')]('\x20')>0x0){var _0x303af4=_0x209836[_0xc406('0x1f')](/ (.+)/);if(_0x303af4[0x1]){return _0x303af4;}}return[_0x209836,_0x209836];}var accountsTokens={};function getAccessToken(_0x5dd6a6){return new Promise(function(_0x31211d,_0x3e1a59){if(!_['isNil'](accountsTokens[_0x5dd6a6['id']])&&!_[_0xc406('0x20')](accountsTokens[_0x5dd6a6['id']]['access_token'])){if(moment()['isBefore'](accountsTokens[_0x5dd6a6['id']][_0xc406('0x21')])){_0x31211d(accountsTokens[_0x5dd6a6['id']][_0xc406('0x22')]);}}var _0x13fe66;switch(_0x5dd6a6['zone']){case'US':_0x13fe66=_0xc406('0x23');break;case'AU':_0x13fe66=_0xc406('0x24');break;case'EU':_0x13fe66='https://accounts.zoho.eu';break;case'IN':_0x13fe66=_0xc406('0x25');break;case'CN':_0x13fe66=_0xc406('0x26');break;default:_0x13fe66=_0xc406('0x27');break;}var _0x57b135={'method':'POST','uri':_0x13fe66+_0xc406('0x28'),'qs':{'refresh_token':_0x5dd6a6[_0xc406('0x29')],'client_id':_0x5dd6a6[_0xc406('0x2a')],'client_secret':_0x5dd6a6[_0xc406('0x2b')],'grant_type':_0xc406('0x2c')},'json':!![]};return rp(_0x57b135)[_0xc406('0x2d')](function(_0x3a81b3){accountsTokens[_0x5dd6a6['id']]={'access_token':_0x3a81b3[_0xc406('0x22')],'expires_in':moment()[_0xc406('0x2e')](_0x3a81b3[_0xc406('0x21')],'seconds')};_0x31211d(_0x3a81b3[_0xc406('0x22')]);})[_0xc406('0x2f')](function(_0x39bddc){logger[_0xc406('0x30')](_0xc406('0x31'),_0x39bddc['stack']);_0x3e1a59(_0x39bddc);});});}function getUser(_0x55033b,_0x3d7744,_0x151612,_0x446b47){logger[_0xc406('0x32')]('Search\x20user');return request({'method':_0xc406('0x33'),'uri':util[_0xc406('0x34')](_0xc406('0x35'),_0x3d7744),'qs':{'type':_0xc406('0x36')},'headers':{'Authorization':_0xc406('0x37')+_0x55033b},'json':!![]})[_0xc406('0x2d')](function(_0x27e251){if(_0x27e251[_0xc406('0x38')]){var _0x372bd1=-0x1;if(_[_0xc406('0x39')](_0x27e251[_0xc406('0x38')])){if(!_[_0xc406('0x20')](_0x446b47)){_0x372bd1=_[_0xc406('0x3a')](_0x27e251[_0xc406('0x38')],function(_0x5e9e70){return _0x5e9e70[_0xc406('0x3b')]===_0x446b47;});}if(_0x372bd1>=0x0){logger[_0xc406('0x32')](_0xc406('0x3c'));}else{logger[_0xc406('0x32')](_0xc406('0x3d'));_0x372bd1=_[_0xc406('0x3a')](_0x27e251[_0xc406('0x38')],function(_0x1e0591){return _0x1e0591[_0xc406('0x3e')]['name']===_0xc406('0x3f');});}return _0x27e251[_0xc406('0x38')][_0x372bd1];}else{if(_0x27e251[_0xc406('0x40')]['profile'][_0xc406('0x1c')]===_0xc406('0x3f')){logger[_0xc406('0x32')](_0xc406('0x3d'));user=_0x27e251[_0xc406('0x40')];return user;}else{logger[_0xc406('0x30')](_0xc406('0x41'),JSON['stringify'](_0x27e251));throw new Error(_0xc406('0x42')+JSON[_0xc406('0xf')](_0x27e251));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0xc406('0xf')](_0x27e251));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xc406('0xf')](_0x27e251));}})['catch'](function(_0x197522){console[_0xc406('0x30')](_0x197522);});}function getZohoUser(_0x2bfc35,_0x3fa6c3){return new BPromise(function(_0x2b1d3d,_0x46981d){request(_0x2bfc35)[_0xc406('0x2d')](function(_0x1a9be8){var _0x38dc07=null;if(_0x1a9be8){_0x38dc07=_0x1a9be8[_0xc406('0x43')][0x0];_0x38dc07[_0xc406('0x44')]=_0x3fa6c3;}_0x2b1d3d(_0x38dc07);})['catch'](function(_0x319732){_0x46981d(_0x319732);});});}function createEndUser(_0x1832eb,_0x36c235,_0x398f9a,_0x509034,_0x5337e8,_0x27dea7){var _0x398f9a=getName(_0x398f9a);return request({'method':'POST','uri':_0xc406('0x45')+_0x36c235+_0xc406('0x46')+_[_0xc406('0x47')](_0x27dea7[_0xc406('0x48')])+'s','body':{'data':[{'Last_Name':_0x398f9a[0x1],'First_Name':_0x398f9a[0x0],'Phone':_0x509034,'Owner':{'name':!_[_0xc406('0x20')](_0x5337e8['role'][_0xc406('0x1c')])?_0x5337e8['role']['name']:!_[_0xc406('0x20')](_0x5337e8[_0xc406('0x49')])?_0x5337e8['first_name']+'\x20'+_0x5337e8['last_name']:_0x5337e8[_0xc406('0x4a')],'id':_0x5337e8['id']}}]},'headers':{'Authorization':_0xc406('0x37')+_0x1832eb},'json':!![]})[_0xc406('0x2d')](function(_0x344654){if(_0x344654&&_0x344654[_0xc406('0x43')][0x0][_0xc406('0x4b')]===_0xc406('0x4c')){var _0x2e3a4b=_0x344654[_0xc406('0x43')][0x0][_0xc406('0x4d')];_0x2e3a4b[_0xc406('0x44')]=_[_0xc406('0x47')](_0x27dea7[_0xc406('0x48')])+'s';return _0x2e3a4b;}logger[_0xc406('0x30')]('The\x20failing\x20result\x20is',JSON[_0xc406('0xf')](data));throw new Error(_0xc406('0x4e')+JSON['stringify'](data));})['catch'](function(_0x801378){console[_0xc406('0x4f')]('CREATE\x20ERROR',_0x801378);});}function getEndUser(_0x3f0146,_0x2bd7a4,_0x10480e,_0x2873ed,_0x24da45,_0x27411f,_0x553dcb){var _0x5b1aed={'method':_0xc406('0x33'),'uri':'','headers':{'Authorization':_0xc406('0x37')+_0x3f0146},'json':!![]};switch(_0x553dcb['moduleSearch']){case _0xc406('0x50'):_0x5b1aed['uri']=_0xc406('0x45')+_0x2bd7a4+_0xc406('0x51')+_0x24da45+'))';return getZohoUser(_0x5b1aed,_0xc406('0x52'))[_0xc406('0x2d')](function(_0x4d94c3){if(_0x4d94c3)return _0x4d94c3;_0x5b1aed[_0xc406('0x53')]=_0xc406('0x45')+_0x2bd7a4+_0xc406('0x54')+_0x24da45+'))';return getZohoUser(_0x5b1aed,_0xc406('0x55'))['then'](function(_0x1a706b){if(_0x1a706b)return _0x1a706b;if(_0x553dcb[_0xc406('0x48')]!=_0xc406('0x56')){return createEndUser(_0x3f0146,_0x2bd7a4,_0x2873ed,_0x24da45,_0x27411f,_0x553dcb);}else{return{};}});});break;case _0xc406('0x57'):_0x5b1aed[_0xc406('0x53')]=_0xc406('0x45')+_0x2bd7a4+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x24da45+'))';return getZohoUser(_0x5b1aed,'Contacts')[_0xc406('0x2d')](function(_0x25a9db){if(_0x25a9db)return _0x25a9db;if(_0x553dcb['moduleCreate']!=_0xc406('0x56')){return createEndUser(_0x3f0146,_0x2bd7a4,_0x2873ed,_0x24da45,_0x27411f,_0x553dcb);}else{return{};}});break;case _0xc406('0x58'):_0x5b1aed[_0xc406('0x53')]=_0xc406('0x45')+_0x2bd7a4+_0xc406('0x54')+_0x24da45+'))';return getZohoUser(_0x5b1aed,'Leads')[_0xc406('0x2d')](function(_0x4a9d87){if(_0x4a9d87)return _0x4a9d87;if(_0x553dcb['moduleCreate']!=_0xc406('0x56')){return createEndUser(_0x3f0146,_0x2bd7a4,_0x2873ed,_0x24da45,_0x27411f,_0x553dcb);}else{return{};}});break;}}function getCall(_0x50e0eb,_0x38f209,_0x3e708d,_0xdeee3e,_0x51ed72,_0x2df25d,_0x14a744,_0x2a5eb0){logger[_0xc406('0x32')](_0xc406('0x59'));var _0x5f0da0={};_0x5f0da0[_0xc406('0x5a')]={'name':!_['isNil'](_0xdeee3e[_0xc406('0x5b')]['name'])&&!_[_0xc406('0x20')](_0xdeee3e['profile'][_0xc406('0x1c')])&&_0xdeee3e[_0xc406('0x3e')][_0xc406('0x1c')]===_0xc406('0x5c')?_0xdeee3e[_0xc406('0x5b')][_0xc406('0x1c')]:!_[_0xc406('0x20')](_0xdeee3e[_0xc406('0x49')])?_0xdeee3e['first_name']+'\x20'+_0xdeee3e[_0xc406('0x4a')]:_0xdeee3e['last_name'],'id':_0xdeee3e['id']};_0x5f0da0[_0xc406('0x5d')]=intUtil[_0xc406('0x5e')](_0x2df25d['Subjects'],_0x14a744,'\x20');_0x5f0da0[_0xc406('0x5f')]=intUtil[_0xc406('0x5e')](_0x2df25d[_0xc406('0x60')],_0x14a744,'\x0a');if(_0x51ed72['enduserType']===_0xc406('0x52')){_0x5f0da0[_0xc406('0x61')]={'name':!_[_0xc406('0x20')](_0x51ed72[_0xc406('0x62')])?_0x51ed72[_0xc406('0x62')]:!_[_0xc406('0x20')](_0x51ed72[_0xc406('0x63')])?_0x51ed72[_0xc406('0x63')]+'\x20'+_0x51ed72[_0xc406('0x64')]:_0x51ed72[_0xc406('0x64')],'id':_0x51ed72['id']};}if(_0x51ed72[_0xc406('0x44')]===_0xc406('0x55')){_0x5f0da0['What_Id']={'name':!_[_0xc406('0x20')](_0x51ed72['Full_Name'])?_0x51ed72['Full_Name']:!_[_0xc406('0x20')](_0x51ed72[_0xc406('0x63')])?_0x51ed72[_0xc406('0x63')]+'\x20'+_0x51ed72['Last_Name']:_0x51ed72['Last_Name'],'id':_0x51ed72['id']};_0x5f0da0[_0xc406('0x65')]=_[_0xc406('0x47')](_0x51ed72[_0xc406('0x44')]);}if(_0x14a744['talktime']){_0x5f0da0[_0xc406('0x66')]=moment[_0xc406('0x67')](parseInt(_0x14a744[_0xc406('0x68')])*0x3e8)['format'](_0xc406('0x69'));}else if(_0x14a744[_0xc406('0x6a')]&&_0x14a744[_0xc406('0x6b')]){_0x5f0da0[_0xc406('0x66')]=moment[_0xc406('0x67')](moment(_0x14a744[_0xc406('0x6b')],_0xc406('0x6c'))[_0xc406('0x6d')](moment(_0x14a744[_0xc406('0x6e')],_0xc406('0x6c'))))[_0xc406('0x34')]('mm:ss');}switch(_0x14a744[_0xc406('0x6f')]){case _0xc406('0x70'):_0x5f0da0[_0xc406('0x71')]=_0xc406('0x72');break;case _0xc406('0x73'):case _0xc406('0x74'):_0x5f0da0['Call_Result']=_0xc406('0x75');break;case'rejected':_0x5f0da0[_0xc406('0x71')]='Rejected';break;case _0xc406('0x76'):_0x5f0da0[_0xc406('0x71')]='Abandoned';break;case _0xc406('0x77'):_0x5f0da0[_0xc406('0x71')]=_0xc406('0x78');default:}_0x5f0da0['Call_Start_Time']=(_0x2a5eb0===_0xc406('0x79')?moment(_0x14a744['starttime'])[_0xc406('0x34')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x14a744[_0xc406('0x7a')])[_0xc406('0x34')](_0xc406('0x6c')))||moment()['format'](_0xc406('0x6c'));_0x5f0da0[_0xc406('0x7b')]=_0x2a5eb0||_0xc406('0x7c');_0x5f0da0=_[_0xc406('0x7d')](_0x5f0da0,getCustomFields(_0x2df25d[_0xc406('0x7e')],_0x14a744));return request({'method':_0xc406('0x7f'),'uri':_0xc406('0x45')+_0x38f209+_0xc406('0x80'),'headers':{'Authorization':_0xc406('0x37')+_0x50e0eb},'body':{'data':[_0x5f0da0]},'json':!![]})['then'](function(_0x43fb62){if(_0x43fb62&&_0x43fb62['data'][0x0][_0xc406('0x4b')]===_0xc406('0x4c')){logger['info']('Call\x20created!');return{'id':_0x43fb62[_0xc406('0x43')][0x0][_0xc406('0x4d')]['id']};}})[_0xc406('0x2f')](function(_0x5a830a){logger['info'](_0xc406('0x81'),_0x5a830a['stack']);console[_0xc406('0x4f')]('err',_0x5a830a);});}exports[_0xc406('0x82')]=function(_0xec8459,_0x513548,_0x36a11d,_0x2c28c4,_0x23b39b,_0x2a2bed){var _0x2c19ea,_0x3d2fdc,_0x1b8e6a;_0x2a2bed[_0xc406('0x83')]=intUtil[_0xc406('0x84')](_0x2a2bed[_0xc406('0x83')]);_0x2a2bed[_0xc406('0x85')]=intUtil[_0xc406('0x84')](_0x2a2bed['serverUrl']);if(_0x23b39b&&_0x23b39b[_0xc406('0x86')]){logger[_0xc406('0x32')](_0xc406('0x87'),_0xc406('0x88'));_0x513548[_0xc406('0x89')]=_0x2a2bed['serverUrl']+_0xc406('0x8a')+_0x513548['uniqueid']+_0xc406('0x8b')+md5(_0x513548[_0xc406('0x8c')]);}else{_0x513548[_0xc406('0x89')]='';}var _0x4600a8=_0x2a2bed[_0xc406('0x83')]==='zoho.eu'?'eu':_0xc406('0x8d');return getAccessToken(_0x2a2bed)[_0xc406('0x2d')](function(_0x20d21d){_0x1b8e6a=_0x20d21d;return getUser(_0x1b8e6a,_0x4600a8,_0x2a2bed,_0x2c28c4[_0xc406('0x3b')]);})['then'](function(_0x1e51fa){_0x2c19ea=_0x1e51fa;logger[_0xc406('0x32')](_0xc406('0x8e'),_0x2c19ea['id']);return getEndUser(_0x1b8e6a,_0x4600a8,_0x2a2bed,_0x513548[_0xc406('0x8f')],_0x513548[_0xc406('0x90')],_0x2c19ea,_0x36a11d);})[_0xc406('0x2d')](function(_0x573a96){_0x3d2fdc=_0x573a96;return getCall(_0x1b8e6a,_0x4600a8,_0x2a2bed,_0x2c19ea,_0x3d2fdc,_0x36a11d,_0x513548,_0xc406('0x7c'));})[_0xc406('0x2d')](function(_0x20ad3d){if(_0x20ad3d){logger['info'](_0xc406('0x91'),_0x20ad3d['id']);logger[_0xc406('0x32')](_0xc406('0x87'),_0xc406('0x92'));emit(util[_0xc406('0x34')](_0xc406('0x93'),_0x2c28c4['name']),_0xc406('0x94'),{'uri':_0xc406('0x95')+_0x2a2bed[_0xc406('0x83')]+_0xc406('0x96')+_0x20ad3d['id']});}})[_0xc406('0x2f')](function(_0x7dbba8){logger['error'](_0xc406('0x87'),JSON[_0xc406('0xf')](_0x7dbba8));});};exports[_0xc406('0x79')]=function(_0x15f39a,_0x430e96,_0x55f476,_0x5a0f64,_0x38a42c,_0x3f4b32,_0x35c1aa){var _0x3fbeaf,_0x29f2c6,_0x2afbdb;_0x3f4b32[_0xc406('0x83')]=intUtil[_0xc406('0x84')](_0x3f4b32[_0xc406('0x83')]);_0x3f4b32[_0xc406('0x85')]=intUtil[_0xc406('0x84')](_0x3f4b32[_0xc406('0x85')]);if(_0x35c1aa&&_0x35c1aa[_0xc406('0x97')]&&_0x35c1aa[_0xc406('0x97')]!==_0xc406('0x98')){logger[_0xc406('0x32')](_0xc406('0x99'),_0xc406('0x88'));_0x430e96['recordingURL']=_0x3f4b32['serverUrl']+_0xc406('0x8a')+_0x430e96['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x430e96['uniqueid']);}var _0xeb494a=_0x3f4b32[_0xc406('0x83')]===_0xc406('0x9a')?'eu':_0xc406('0x8d');return getAccessToken(_0x3f4b32)[_0xc406('0x2d')](function(_0x57e35a){_0x2afbdb=_0x57e35a;return getUser(_0x2afbdb,_0xeb494a,_0x3f4b32,_0x5a0f64[_0xc406('0x3b')]);})[_0xc406('0x2d')](function(_0x2c1611){_0x3fbeaf=_0x2c1611;logger[_0xc406('0x32')](_0xc406('0x8e'),_0x3fbeaf['id']);return getEndUser(_0x2afbdb,_0xeb494a,_0x3f4b32,_0x430e96['destcalleridname'],_0x430e96[_0xc406('0x9b')],_0x3fbeaf,_0x55f476);})[_0xc406('0x2d')](function(_0x16158c){_0x29f2c6=_0x16158c;return getCall(_0x2afbdb,_0xeb494a,_0x3f4b32,_0x3fbeaf,_0x29f2c6,_0x55f476,_0x430e96,_0xc406('0x9c'));})[_0xc406('0x2d')](function(_0x494043){if(_0x494043){logger['info']('The\x20Call\x20ID\x20is:',_0x494043['id']);logger['info']('[OUTBOUND]',_0xc406('0x92'));emit(util[_0xc406('0x34')](_0xc406('0x93'),_0x5a0f64['name']),_0xc406('0x94'),{'uri':_0xc406('0x95')+_0x3f4b32[_0xc406('0x83')]+_0xc406('0x96')+_0x494043['id']});}})[_0xc406('0x2f')](function(_0x3e91bd){logger[_0xc406('0x30')](_0xc406('0x99'),JSON[_0xc406('0xf')](_0x3e91bd));});};exports[_0xc406('0x9d')]=function(_0x47aea1,_0x524f87,_0x1718e1,_0x320e41,_0x3d6f16,_0x2cb55e){var _0x3b76d3,_0x30558e,_0x1b8305;_0x2cb55e[_0xc406('0x83')]=intUtil[_0xc406('0x84')](_0x2cb55e[_0xc406('0x83')]);_0x2cb55e[_0xc406('0x85')]=intUtil['stripTrailingSlash'](_0x2cb55e[_0xc406('0x85')]);if(_0x3d6f16&&_0x3d6f16[_0xc406('0x86')]){logger[_0xc406('0x32')]('['+_0x524f87['lastevent'][_0xc406('0x9e')]()+']',_0xc406('0x88'));_0x524f87[_0xc406('0x89')]=_0x2cb55e[_0xc406('0x85')]+_0xc406('0x8a')+_0x524f87[_0xc406('0x8c')]+'/downloads?type=uniqueid&token='+md5(_0x524f87['uniqueid']);}else{_0x524f87[_0xc406('0x89')]='';}var _0x574538=_0x2cb55e[_0xc406('0x83')]==='zoho.eu'?'eu':_0xc406('0x8d');return getAccessToken(_0x2cb55e)[_0xc406('0x2d')](function(_0x572ef4){_0x1b8305=_0x572ef4;return getUser(_0x1b8305,_0x574538,_0x2cb55e);})[_0xc406('0x2d')](function(_0x213b5a){_0x3b76d3=_0x213b5a;logger[_0xc406('0x32')](_0xc406('0x8e'),_0x3b76d3['id']);return getEndUser(_0x1b8305,_0x574538,_0x2cb55e,_0x524f87['calleridname'],_0x524f87[_0xc406('0x90')],_0x3b76d3,_0x1718e1);})[_0xc406('0x2d')](function(_0xf54b0d){_0x30558e=_0xf54b0d;return getCall(_0x1b8305,_0x574538,_0x2cb55e,_0x3b76d3,_0x30558e,_0x1718e1,_0x524f87,_0xc406('0x7c'));})['then'](function(_0x3c1341){if(_0x3c1341){logger[_0xc406('0x32')]('The\x20Call\x20ID\x20is:',_0x3c1341['id']);}})[_0xc406('0x2f')](function(_0x14af1d){logger[_0xc406('0x30')]('['+_0x524f87[_0xc406('0x6f')][_0xc406('0x9e')]()+']',JSON[_0xc406('0xf')](_0x14af1d));});};
\ No newline at end of file
+var _0x3b59=['lodash','request-promise','md5','util','./util','moment','bluebird','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','stringify','length','includes','picklist','type','idField','content','variable','variableName','toString','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.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','catch','error','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','email','Agent\x20found!','Using\x20the\x20admin\x20account!','findIndex','profile','user','Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','Error:\x20','log','CREATE\x20ERROR','moduleSearch','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','contact','lead','Leads','nothing','Creating\x20new\x20call...','administrator','Subjects','Description','Descriptions','Full_Name','Last_Name','What_Id','First_Name','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','starttime','Call_Result','Called','complete','connect','Answered','rejected','Rejected','Abandoned','timeout','Timeout','Call_Start_Time','outbound','Call_Type','merge','/crm/v2/Calls','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','destcalleridname','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent'];(function(_0x469a5b,_0x26f1fa){var _0x2a2667=function(_0x3cdfc4){while(--_0x3cdfc4){_0x469a5b['push'](_0x469a5b['shift']());}};_0x2a2667(++_0x26f1fa);}(_0x3b59,0x9c));var _0x93b5=function(_0x387ec1,_0xa73770){_0x387ec1=_0x387ec1-0x0;var _0x4ca6fe=_0x3b59[_0x387ec1];return _0x4ca6fe;};'use strict';var _=require(_0x93b5('0x0'));var rp=require(_0x93b5('0x1'));var md5=require(_0x93b5('0x2'));var util=require(_0x93b5('0x3'));var intUtil=require(_0x93b5('0x4'));var moment=require(_0x93b5('0x5'));var Redis=require('ioredis');var BPromise=require(_0x93b5('0x6'));var config=require('../../../../config/environment');var logger=require(_0x93b5('0x7'))(_0x93b5('0x8'));config[_0x93b5('0x9')]=_[_0x93b5('0xa')](config['redis'],{'host':_0x93b5('0xb'),'port':0x18eb});var io=require(_0x93b5('0xc'))(new Redis(config[_0x93b5('0x9')]));function emit(_0x484849,_0x8e475e,_0x31c39a){io['to'](_0x484849)[_0x93b5('0xd')](_0x8e475e,_0x31c39a);}function request(_0x176049){logger[_0x93b5('0xe')]('[HTTP]',JSON[_0x93b5('0xf')](_0x176049));return rp(_0x176049);}function getCustomFields(_0x13ebc9,_0x7787e5){var _0x3b864b={};if(_0x13ebc9[_0x93b5('0x10')]>0x0){_['forEach'](_0x13ebc9,function(_0x134c99){if(_[_0x93b5('0x11')](['string',_0x93b5('0x12')],_0x134c99[_0x93b5('0x13')])&&_0x134c99[_0x93b5('0x14')]){_0x3b864b[_0x134c99[_0x93b5('0x14')]]=_0x134c99[_0x93b5('0x15')]['toString']();}else if(_0x134c99[_0x93b5('0x13')]===_0x93b5('0x16')&&_0x134c99['variableName']&&_0x134c99[_0x93b5('0x14')]&&_0x7787e5[_0x134c99[_0x93b5('0x17')]]){_0x3b864b[_0x134c99[_0x93b5('0x14')]]=_0x7787e5[_0x134c99['variableName']][_0x93b5('0x18')]();}else if(_0x134c99['type']==='customVariable'&&_0x134c99[_0x93b5('0x19')]&&_0x134c99['Variable'][_0x93b5('0x1a')]&&_0x134c99[_0x93b5('0x14')]&&_0x7787e5[_0x134c99[_0x93b5('0x19')]['name']['toLowerCase']()]){_0x3b864b[_0x134c99['idField']]=_0x7787e5[_0x134c99[_0x93b5('0x19')][_0x93b5('0x1a')][_0x93b5('0x1b')]()][_0x93b5('0x18')]();}});}return _0x3b864b;}function getName(_0x1c4019){if(_0x1c4019[_0x93b5('0x1c')]('\x20')>0x0){var _0x2dd622=_0x1c4019[_0x93b5('0x1d')](/ (.+)/);if(_0x2dd622[0x1]){return _0x2dd622;}}return[_0x1c4019,_0x1c4019];}var accountsTokens={};function getAccessToken(_0x352cbe){return new Promise(function(_0x3ba1bc,_0x5c1172){if(!_['isNil'](accountsTokens[_0x352cbe['id']])&&!_[_0x93b5('0x1e')](accountsTokens[_0x352cbe['id']][_0x93b5('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x352cbe['id']][_0x93b5('0x20')])){_0x3ba1bc(accountsTokens[_0x352cbe['id']][_0x93b5('0x1f')]);}}var _0x2e9e75;switch(_0x352cbe[_0x93b5('0x21')]){case'US':_0x2e9e75=_0x93b5('0x22');break;case'AU':_0x2e9e75=_0x93b5('0x23');break;case'EU':_0x2e9e75=_0x93b5('0x24');break;case'IN':_0x2e9e75=_0x93b5('0x25');break;case'CN':_0x2e9e75=_0x93b5('0x26');break;default:_0x2e9e75=_0x93b5('0x24');break;}var _0xf7b6fc={'method':_0x93b5('0x27'),'uri':_0x2e9e75+_0x93b5('0x28'),'qs':{'refresh_token':_0x352cbe[_0x93b5('0x29')],'client_id':_0x352cbe[_0x93b5('0x2a')],'client_secret':_0x352cbe[_0x93b5('0x2b')],'grant_type':_0x93b5('0x2c')},'json':!![]};return rp(_0xf7b6fc)[_0x93b5('0x2d')](function(_0x4977df){accountsTokens[_0x352cbe['id']]={'access_token':_0x4977df[_0x93b5('0x1f')],'expires_in':moment()[_0x93b5('0x2e')](_0x4977df[_0x93b5('0x20')],_0x93b5('0x2f'))};_0x3ba1bc(_0x4977df[_0x93b5('0x1f')]);})[_0x93b5('0x30')](function(_0x2dad64){logger[_0x93b5('0x31')]('Failing\x20creating\x20the\x20access_token',_0x2dad64[_0x93b5('0x32')]);_0x5c1172(_0x2dad64);});});}function getUser(_0x239f96,_0x54bc50,_0xf7fc9c,_0x4e4212){logger[_0x93b5('0x33')](_0x93b5('0x34'));return request({'method':_0x93b5('0x35'),'uri':util[_0x93b5('0x36')](_0x93b5('0x37'),_0x54bc50),'qs':{'type':_0x93b5('0x38')},'headers':{'Authorization':_0x93b5('0x39')+_0x239f96},'json':!![]})[_0x93b5('0x2d')](function(_0x8504b8){if(_0x8504b8[_0x93b5('0x3a')]){var _0x5a5fa7=-0x1;if(_[_0x93b5('0x3b')](_0x8504b8['users'])){if(!_['isNil'](_0x4e4212)){_0x5a5fa7=_['findIndex'](_0x8504b8['users'],function(_0x361a8f){return _0x361a8f[_0x93b5('0x3c')]===_0x4e4212;});}if(_0x5a5fa7>=0x0){logger[_0x93b5('0x33')](_0x93b5('0x3d'));}else{logger[_0x93b5('0x33')](_0x93b5('0x3e'));_0x5a5fa7=_[_0x93b5('0x3f')](_0x8504b8[_0x93b5('0x3a')],function(_0x9314ef){return _0x9314ef[_0x93b5('0x40')][_0x93b5('0x1a')]==='Administrator';});}return _0x8504b8['users'][_0x5a5fa7];}else{if(_0x8504b8[_0x93b5('0x41')][_0x93b5('0x40')][_0x93b5('0x1a')]===_0x93b5('0x42')){logger[_0x93b5('0x33')](_0x93b5('0x3e'));user=_0x8504b8['user'];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x8504b8));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x93b5('0xf')](_0x8504b8));}}}else{logger[_0x93b5('0x31')](_0x93b5('0x43'),JSON[_0x93b5('0xf')](_0x8504b8));throw new Error(_0x93b5('0x44')+JSON[_0x93b5('0xf')](_0x8504b8));}})[_0x93b5('0x30')](function(_0x1e0d77){console[_0x93b5('0x31')](_0x1e0d77);});}function getZohoUser(_0x2f52ea,_0x5400b9){return new BPromise(function(_0x585798,_0x48320d){request(_0x2f52ea)[_0x93b5('0x2d')](function(_0x394400){var _0x1a6d5b=null;if(_0x394400){_0x1a6d5b=_0x394400[_0x93b5('0x45')][0x0];_0x1a6d5b[_0x93b5('0x46')]=_0x5400b9;}_0x585798(_0x1a6d5b);})[_0x93b5('0x30')](function(_0x5ef62a){_0x48320d(_0x5ef62a);});});}function createEndUser(_0x27800e,_0x192dab,_0x392005,_0x5d5134,_0x1cf514,_0x426403){var _0x392005=getName(_0x392005);return request({'method':'POST','uri':_0x93b5('0x47')+_0x192dab+_0x93b5('0x48')+_[_0x93b5('0x49')](_0x426403[_0x93b5('0x4a')])+'s','body':{'data':[{'Last_Name':_0x392005[0x1],'First_Name':_0x392005[0x0],'Phone':_0x5d5134,'Owner':{'name':!_['isNil'](_0x1cf514[_0x93b5('0x4b')][_0x93b5('0x1a')])?_0x1cf514[_0x93b5('0x4b')][_0x93b5('0x1a')]:!_[_0x93b5('0x1e')](_0x1cf514[_0x93b5('0x4c')])?_0x1cf514[_0x93b5('0x4c')]+'\x20'+_0x1cf514[_0x93b5('0x4d')]:_0x1cf514['last_name'],'id':_0x1cf514['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x27800e},'json':!![]})[_0x93b5('0x2d')](function(_0x290e26){if(_0x290e26&&_0x290e26[_0x93b5('0x45')][0x0][_0x93b5('0x4e')]===_0x93b5('0x4f')){var _0x91e907=_0x290e26[_0x93b5('0x45')][0x0][_0x93b5('0x50')];_0x91e907[_0x93b5('0x46')]=_[_0x93b5('0x49')](_0x426403['moduleCreate'])+'s';return _0x91e907;}logger[_0x93b5('0x31')]('The\x20failing\x20result\x20is',JSON[_0x93b5('0xf')](data));throw new Error(_0x93b5('0x51')+JSON[_0x93b5('0xf')](data));})['catch'](function(_0x36b5c0){console[_0x93b5('0x52')](_0x93b5('0x53'),_0x36b5c0);});}function getEndUser(_0x47024f,_0x9e3b46,_0x15bd34,_0x359483,_0x4fdc11,_0x28adc6,_0x1bca7c){var _0x3fd00d={'method':_0x93b5('0x35'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x47024f},'json':!![]};switch(_0x1bca7c[_0x93b5('0x54')]){case'contact_lead':_0x3fd00d['uri']='https://www.zohoapis.'+_0x9e3b46+_0x93b5('0x55')+_0x4fdc11+'))';return getZohoUser(_0x3fd00d,_0x93b5('0x56'))[_0x93b5('0x2d')](function(_0x19717d){if(_0x19717d)return _0x19717d;_0x3fd00d[_0x93b5('0x57')]=_0x93b5('0x47')+_0x9e3b46+_0x93b5('0x58')+_0x4fdc11+'))';return getZohoUser(_0x3fd00d,'Leads')[_0x93b5('0x2d')](function(_0x152187){if(_0x152187)return _0x152187;if(_0x1bca7c[_0x93b5('0x4a')]!='nothing'){return createEndUser(_0x47024f,_0x9e3b46,_0x359483,_0x4fdc11,_0x28adc6,_0x1bca7c);}else{return{};}});});break;case _0x93b5('0x59'):_0x3fd00d[_0x93b5('0x57')]=_0x93b5('0x47')+_0x9e3b46+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x4fdc11+'))';return getZohoUser(_0x3fd00d,'Contacts')['then'](function(_0x2911fd){if(_0x2911fd)return _0x2911fd;if(_0x1bca7c['moduleCreate']!='nothing'){return createEndUser(_0x47024f,_0x9e3b46,_0x359483,_0x4fdc11,_0x28adc6,_0x1bca7c);}else{return{};}});break;case _0x93b5('0x5a'):_0x3fd00d['uri']=_0x93b5('0x47')+_0x9e3b46+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x4fdc11+'))';return getZohoUser(_0x3fd00d,_0x93b5('0x5b'))['then'](function(_0x5b90cf){if(_0x5b90cf)return _0x5b90cf;if(_0x1bca7c[_0x93b5('0x4a')]!=_0x93b5('0x5c')){return createEndUser(_0x47024f,_0x9e3b46,_0x359483,_0x4fdc11,_0x28adc6,_0x1bca7c);}else{return{};}});break;}}function getCall(_0x3938af,_0x1a51d1,_0x27c467,_0x53b4c1,_0x4b6792,_0x49c5fd,_0x21c070,_0xe7b552){logger[_0x93b5('0x33')](_0x93b5('0x5d'));var _0x50415c={};_0x50415c['Owner']={'name':!_[_0x93b5('0x1e')](_0x53b4c1['role'][_0x93b5('0x1a')])&&!_[_0x93b5('0x1e')](_0x53b4c1[_0x93b5('0x40')]['name'])&&_0x53b4c1[_0x93b5('0x40')]['name']===_0x93b5('0x5e')?_0x53b4c1[_0x93b5('0x4b')][_0x93b5('0x1a')]:!_[_0x93b5('0x1e')](_0x53b4c1[_0x93b5('0x4c')])?_0x53b4c1['first_name']+'\x20'+_0x53b4c1['last_name']:_0x53b4c1[_0x93b5('0x4d')],'id':_0x53b4c1['id']};_0x50415c['Subject']=intUtil['getString'](_0x49c5fd[_0x93b5('0x5f')],_0x21c070,'\x20');_0x50415c[_0x93b5('0x60')]=intUtil['getString'](_0x49c5fd[_0x93b5('0x61')],_0x21c070,'\x0a');if(_0x4b6792['enduserType']===_0x93b5('0x56')){_0x50415c['Who_Id']={'name':!_[_0x93b5('0x1e')](_0x4b6792['Full_Name'])?_0x4b6792[_0x93b5('0x62')]:!_[_0x93b5('0x1e')](_0x4b6792['First_Name'])?_0x4b6792['First_Name']+'\x20'+_0x4b6792[_0x93b5('0x63')]:_0x4b6792[_0x93b5('0x63')],'id':_0x4b6792['id']};}if(_0x4b6792[_0x93b5('0x46')]==='Leads'){_0x50415c[_0x93b5('0x64')]={'name':!_[_0x93b5('0x1e')](_0x4b6792[_0x93b5('0x62')])?_0x4b6792[_0x93b5('0x62')]:!_[_0x93b5('0x1e')](_0x4b6792[_0x93b5('0x65')])?_0x4b6792['First_Name']+'\x20'+_0x4b6792[_0x93b5('0x63')]:_0x4b6792[_0x93b5('0x63')],'id':_0x4b6792['id']};_0x50415c['$se_module']=_[_0x93b5('0x49')](_0x4b6792[_0x93b5('0x46')]);}if(_0x21c070[_0x93b5('0x66')]){_0x50415c[_0x93b5('0x67')]=moment[_0x93b5('0x68')](parseInt(_0x21c070[_0x93b5('0x66')])*0x3e8)[_0x93b5('0x36')](_0x93b5('0x69'));}else if(_0x21c070[_0x93b5('0x6a')]&&_0x21c070[_0x93b5('0x6b')]){_0x50415c[_0x93b5('0x67')]=moment[_0x93b5('0x68')](moment(_0x21c070['endtime'],_0x93b5('0x6c'))['diff'](moment(_0x21c070[_0x93b5('0x6d')],_0x93b5('0x6c'))))[_0x93b5('0x36')](_0x93b5('0x69'));}switch(_0x21c070['lastevent']){case'called':_0x50415c[_0x93b5('0x6e')]=_0x93b5('0x6f');break;case _0x93b5('0x70'):case _0x93b5('0x71'):_0x50415c[_0x93b5('0x6e')]=_0x93b5('0x72');break;case _0x93b5('0x73'):_0x50415c['Call_Result']=_0x93b5('0x74');break;case'abandoned':_0x50415c[_0x93b5('0x6e')]=_0x93b5('0x75');break;case _0x93b5('0x76'):_0x50415c['Call_Result']=_0x93b5('0x77');default:}_0x50415c[_0x93b5('0x78')]=(_0xe7b552===_0x93b5('0x79')?moment(_0x21c070[_0x93b5('0x6d')])['format'](_0x93b5('0x6c')):moment(_0x21c070['agentcalledAt'])[_0x93b5('0x36')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x93b5('0x36')](_0x93b5('0x6c'));_0x50415c[_0x93b5('0x7a')]=_0xe7b552||'Inbound';_0x50415c=_[_0x93b5('0x7b')](_0x50415c,getCustomFields(_0x49c5fd['Fields'],_0x21c070));return request({'method':'POST','uri':_0x93b5('0x47')+_0x1a51d1+_0x93b5('0x7c'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3938af},'body':{'data':[_0x50415c]},'json':!![]})[_0x93b5('0x2d')](function(_0x4a3aea){if(_0x4a3aea&&_0x4a3aea[_0x93b5('0x45')][0x0]['code']===_0x93b5('0x4f')){logger[_0x93b5('0x33')]('Call\x20created!');return{'id':_0x4a3aea[_0x93b5('0x45')][0x0][_0x93b5('0x50')]['id']};}})[_0x93b5('0x30')](function(_0x3afa27){logger[_0x93b5('0x33')](_0x93b5('0x7d'),_0x3afa27[_0x93b5('0x32')]);console['log'](_0x93b5('0x7d'),_0x3afa27);});}exports[_0x93b5('0x7e')]=function(_0x2dea19,_0x4c5b26,_0x2ef917,_0x46fb41,_0x27c96e,_0x52be2f){var _0x54cd59,_0x415f74,_0x16c86e;_0x52be2f[_0x93b5('0x7f')]=intUtil[_0x93b5('0x80')](_0x52be2f['host']);_0x52be2f[_0x93b5('0x81')]=intUtil['stripTrailingSlash'](_0x52be2f[_0x93b5('0x81')]);if(_0x27c96e&&_0x27c96e[_0x93b5('0x82')]){logger['info'](_0x93b5('0x83'),'Recording\x20is\x20enabled!');_0x4c5b26[_0x93b5('0x84')]=_0x52be2f['serverUrl']+_0x93b5('0x85')+_0x4c5b26[_0x93b5('0x86')]+'/downloads?type=uniqueid&token='+md5(_0x4c5b26[_0x93b5('0x86')]);}else{_0x4c5b26['recordingURL']='';}var _0x2ad617=_0x52be2f[_0x93b5('0x7f')]===_0x93b5('0x87')?'eu':_0x93b5('0x88');return getAccessToken(_0x52be2f)[_0x93b5('0x2d')](function(_0x4cb341){_0x16c86e=_0x4cb341;return getUser(_0x16c86e,_0x2ad617,_0x52be2f,_0x46fb41['email']);})[_0x93b5('0x2d')](function(_0x208044){_0x54cd59=_0x208044;logger[_0x93b5('0x33')](_0x93b5('0x89'),_0x54cd59['id']);return getEndUser(_0x16c86e,_0x2ad617,_0x52be2f,_0x4c5b26[_0x93b5('0x8a')],_0x4c5b26[_0x93b5('0x8b')],_0x54cd59,_0x2ef917);})[_0x93b5('0x2d')](function(_0x44a567){_0x415f74=_0x44a567;return getCall(_0x16c86e,_0x2ad617,_0x52be2f,_0x54cd59,_0x415f74,_0x2ef917,_0x4c5b26,_0x93b5('0x8c'));})[_0x93b5('0x2d')](function(_0x50ce80){if(_0x50ce80){logger['info'](_0x93b5('0x8d'),_0x50ce80['id']);logger[_0x93b5('0x33')](_0x93b5('0x83'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x93b5('0x36')](_0x93b5('0x8e'),_0x46fb41[_0x93b5('0x1a')]),_0x93b5('0x8f'),{'uri':_0x93b5('0x90')+_0x52be2f[_0x93b5('0x7f')]+_0x93b5('0x91')+_0x50ce80['id']});}})[_0x93b5('0x30')](function(_0x2cd0fd){logger[_0x93b5('0x31')]('[QUEUE]',JSON[_0x93b5('0xf')](_0x2cd0fd));});};exports[_0x93b5('0x79')]=function(_0x208cef,_0x484bf3,_0x137e26,_0x36db71,_0x418297,_0x32beff,_0xbf9626){var _0x325281,_0x522103,_0x4bde1f;_0x32beff[_0x93b5('0x7f')]=intUtil[_0x93b5('0x80')](_0x32beff[_0x93b5('0x7f')]);_0x32beff[_0x93b5('0x81')]=intUtil[_0x93b5('0x80')](_0x32beff[_0x93b5('0x81')]);if(_0xbf9626&&_0xbf9626[_0x93b5('0x92')]&&_0xbf9626[_0x93b5('0x92')]!==_0x93b5('0x93')){logger[_0x93b5('0x33')](_0x93b5('0x94'),'Recording\x20is\x20enabled!');_0x484bf3[_0x93b5('0x84')]=_0x32beff[_0x93b5('0x81')]+_0x93b5('0x85')+_0x484bf3[_0x93b5('0x86')]+_0x93b5('0x95')+md5(_0x484bf3['uniqueid']);}var _0x541977=_0x32beff[_0x93b5('0x7f')]===_0x93b5('0x87')?'eu':_0x93b5('0x88');return getAccessToken(_0x32beff)['then'](function(_0x373c6a){_0x4bde1f=_0x373c6a;return getUser(_0x4bde1f,_0x541977,_0x32beff,_0x36db71[_0x93b5('0x3c')]);})[_0x93b5('0x2d')](function(_0x12f07d){_0x325281=_0x12f07d;logger[_0x93b5('0x33')](_0x93b5('0x89'),_0x325281['id']);return getEndUser(_0x4bde1f,_0x541977,_0x32beff,_0x484bf3[_0x93b5('0x96')],_0x484bf3[_0x93b5('0x97')],_0x325281,_0x137e26);})[_0x93b5('0x2d')](function(_0x3f3cb8){_0x522103=_0x3f3cb8;return getCall(_0x4bde1f,_0x541977,_0x32beff,_0x325281,_0x522103,_0x137e26,_0x484bf3,_0x93b5('0x98'));})[_0x93b5('0x2d')](function(_0x1dc286){if(_0x1dc286){logger[_0x93b5('0x33')](_0x93b5('0x8d'),_0x1dc286['id']);logger['info'](_0x93b5('0x94'),_0x93b5('0x99'));emit(util[_0x93b5('0x36')](_0x93b5('0x8e'),_0x36db71[_0x93b5('0x1a')]),_0x93b5('0x8f'),{'uri':_0x93b5('0x90')+_0x32beff['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x1dc286['id']});}})[_0x93b5('0x30')](function(_0x46a1aa){logger['error']('[OUTBOUND]',JSON[_0x93b5('0xf')](_0x46a1aa));});};exports[_0x93b5('0x9a')]=function(_0x3a86e0,_0x2199b7,_0x321eca,_0x5ad132,_0x355b1a,_0x114e7d){var _0x55ea7c,_0x49635b,_0x5ceecb;_0x114e7d['host']=intUtil[_0x93b5('0x80')](_0x114e7d[_0x93b5('0x7f')]);_0x114e7d['serverUrl']=intUtil['stripTrailingSlash'](_0x114e7d[_0x93b5('0x81')]);if(_0x355b1a&&_0x355b1a[_0x93b5('0x82')]){logger[_0x93b5('0x33')]('['+_0x2199b7[_0x93b5('0x9b')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x2199b7[_0x93b5('0x84')]=_0x114e7d[_0x93b5('0x81')]+'/api/voice/recordings/'+_0x2199b7['uniqueid']+_0x93b5('0x95')+md5(_0x2199b7[_0x93b5('0x86')]);}else{_0x2199b7['recordingURL']='';}var _0x180a60=_0x114e7d['host']===_0x93b5('0x87')?'eu':_0x93b5('0x88');return getAccessToken(_0x114e7d)[_0x93b5('0x2d')](function(_0x1091a6){_0x5ceecb=_0x1091a6;return getUser(_0x5ceecb,_0x180a60,_0x114e7d);})[_0x93b5('0x2d')](function(_0xd5f46f){_0x55ea7c=_0xd5f46f;logger[_0x93b5('0x33')]('The\x20User\x20ID\x20is:',_0x55ea7c['id']);return getEndUser(_0x5ceecb,_0x180a60,_0x114e7d,_0x2199b7['calleridname'],_0x2199b7['calleridnum'],_0x55ea7c,_0x321eca);})[_0x93b5('0x2d')](function(_0x3d1659){_0x49635b=_0x3d1659;return getCall(_0x5ceecb,_0x180a60,_0x114e7d,_0x55ea7c,_0x49635b,_0x321eca,_0x2199b7,_0x93b5('0x8c'));})[_0x93b5('0x2d')](function(_0x10fa31){if(_0x10fa31){logger['info'](_0x93b5('0x8d'),_0x10fa31['id']);}})[_0x93b5('0x30')](function(_0x304a07){logger[_0x93b5('0x31')]('['+_0x2199b7[_0x93b5('0x9b')]['toUpperCase']()+']',JSON['stringify'](_0x304a07));});};
\ No newline at end of file
index e238c1d..b104969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29ef=['util','mustache','../../../../config/logger','exec','data2','Script','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'];(function(_0x5cd8c2,_0x4bc8ee){var _0x4d2440=function(_0xd55420){while(--_0xd55420){_0x5cd8c2['push'](_0x5cd8c2['shift']());}};_0x4d2440(++_0x4bc8ee);}(_0x29ef,0x1ce));var _0xf29e=function(_0x1347f8,_0x233feb){_0x1347f8=_0x1347f8-0x0;var _0x218368=_0x29ef[_0x1347f8];return _0x218368;};'use strict';var util=require(_0xf29e('0x0'));var sh=require('shelljs');var Mustache=require(_0xf29e('0x1'));var logger=require(_0xf29e('0x2'))('trigger');exports[_0xf29e('0x3')]=function(_0x429796,_0x12eec3){var _0x47341b=_0x429796[_0xf29e('0x4')]?_0x429796['data2']:_0xf29e('0x5');var _0x2c9f64=_0x429796[_0xf29e('0x6')]?Mustache['render'](_0x429796[_0xf29e('0x6')],_0x12eec3):_0x12eec3;sh[_0xf29e('0x3')](_0x2c9f64,function(_0x23b7ac,_0x2c2625,_0x15f57b){if(_0x23b7ac!==0x0){logger[_0xf29e('0x7')](util[_0xf29e('0x8')](_0xf29e('0x9'),_0x47341b,_0x2c9f64,_0x23b7ac,_0x15f57b));}else{logger['info'](util['format'](_0xf29e('0xa'),_0x47341b,_0x2c9f64,_0x2c2625));}});};
\ No newline at end of file
+var _0x11cb=['mustache','../../../../config/logger','exec','data2','Script','render','data3','error','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','format','util','shelljs'];(function(_0x103270,_0x13ceac){var _0xa433b0=function(_0x1fee92){while(--_0x1fee92){_0x103270['push'](_0x103270['shift']());}};_0xa433b0(++_0x13ceac);}(_0x11cb,0x1d2));var _0xb11c=function(_0x2e16c1,_0x26ab1c){_0x2e16c1=_0x2e16c1-0x0;var _0x4456d7=_0x11cb[_0x2e16c1];return _0x4456d7;};'use strict';var util=require(_0xb11c('0x0'));var sh=require(_0xb11c('0x1'));var Mustache=require(_0xb11c('0x2'));var logger=require(_0xb11c('0x3'))('trigger');exports[_0xb11c('0x4')]=function(_0x3e878c,_0x553a6b){var _0x450b29=_0x3e878c[_0xb11c('0x5')]?_0x3e878c['data2']:_0xb11c('0x6');var _0x2b0951=_0x3e878c['data3']?Mustache[_0xb11c('0x7')](_0x3e878c[_0xb11c('0x8')],_0x553a6b):_0x553a6b;sh[_0xb11c('0x4')](_0x2b0951,function(_0x2f5a62,_0x3cb191,_0xad6996){if(_0x2f5a62!==0x0){logger[_0xb11c('0x9')](util['format'](_0xb11c('0xa'),_0x450b29,_0x2b0951,_0x2f5a62,_0xad6996));}else{logger[_0xb11c('0xb')](util[_0xb11c('0xc')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x450b29,_0x2b0951,_0x3cb191));}});};
\ No newline at end of file
index f08592d..c4b9319 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d6b=['data2','data5','headers','data6','parse','stack','GET','DELETE','POST','data7','error','body','stringify','then','isNil','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','format','statusCode','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d6b,0x14b));var _0xb1d6=function(_0x57966a,_0x477964){_0x57966a=_0x57966a-0x0;var _0x191765=_0x1d6b[_0x57966a];return _0x191765;};'use strict';var rp=require(_0xb1d6('0x0'));var util=require(_0xb1d6('0x1'));var _=require(_0xb1d6('0x2'));var Mustache=require(_0xb1d6('0x3'));var logger=require(_0xb1d6('0x4'))(_0xb1d6('0x5'));exports[_0xb1d6('0x6')]=function(_0xf1f962,_0x3247d9){var _0x5d749a,_0x413ea1;var _0x3a5a74={'method':_0xf1f962[_0xb1d6('0x7')][_0xb1d6('0x8')](),'uri':Mustache[_0xb1d6('0x9')](_0xf1f962[_0xb1d6('0xa')],_0x3247d9),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xf1f962[_0xb1d6('0xb')])==='number'&&parseInt(_0xf1f962['data5'])>=0x1&&parseInt(_0xf1f962['data5'])<=0xa?parseInt(_0xf1f962[_0xb1d6('0xb')])*0x3e8:0x5*0x3e8};try{_0x3a5a74[_0xb1d6('0xc')]=_0xf1f962[_0xb1d6('0xd')]?JSON[_0xb1d6('0xe')](Mustache['render'](_0xf1f962[_0xb1d6('0xd')],_0x3247d9)):{};}catch(_0x3a1ce2){logger['error'](_0x3a1ce2[_0xb1d6('0xf')]);}switch(_0xf1f962['data1'][_0xb1d6('0x8')]()){case _0xb1d6('0x10'):case _0xb1d6('0x11'):_0x5d749a=null;_0x3a5a74['qs']=_0x3247d9;break;case _0xb1d6('0x12'):case'PUT':if(_0xf1f962[_0xb1d6('0x13')]){try{_0x5d749a=JSON[_0xb1d6('0xe')](Mustache['render'](_0xf1f962[_0xb1d6('0x13')],_0x3247d9));_0x3a5a74['body']=_0x5d749a;}catch(_0x49952e){logger[_0xb1d6('0x14')](_0x49952e[_0xb1d6('0xf')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x5d749a=_0x3247d9;_0x3a5a74[_0xb1d6('0x15')]=_0x5d749a;}break;}logger['info'](util['format']('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0xf1f962[_0xb1d6('0x7')],_0xf1f962[_0xb1d6('0xa')],JSON[_0xb1d6('0x16')](_0x3a5a74)));rp(_0x3a5a74)[_0xb1d6('0x17')](function(_0x55bdc0){_0x5d749a=!_[_0xb1d6('0x18')](_0x5d749a)?',\x20request\x20body:\x20'+_0x5d749a:'';_0x413ea1=typeof _0x55bdc0[_0xb1d6('0x15')]==='object'?JSON['stringify'](_0x55bdc0[_0xb1d6('0x15')]):_0x55bdc0[_0xb1d6('0x15')];logger[_0xb1d6('0x19')](util['format'](_0xb1d6('0x1a'),_0xf1f962[_0xb1d6('0x7')],_0xf1f962[_0xb1d6('0xa')],_0x55bdc0['statusCode'],_0x413ea1));})[_0xb1d6('0x1b')](function(_0x58860d){logger['error'](util[_0xb1d6('0x1c')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0xf1f962['data1'],_0xf1f962[_0xb1d6('0xa')],_0x58860d[_0xb1d6('0x1d')],_0x58860d['name'],_0x58860d[_0xb1d6('0x1e')]));});};
\ No newline at end of file
+var _0x919e=['object','%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','statusCode','name','lodash','mustache','../../../../config/logger','trigger','data1','toUpperCase','render','data5','headers','data6','error','GET','PUT','data7','parse','body','stack','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','stringify','then',',\x20request\x20body:\x20'];(function(_0x265ee5,_0x2b8b13){var _0x5dcef4=function(_0x4a2528){while(--_0x4a2528){_0x265ee5['push'](_0x265ee5['shift']());}};_0x5dcef4(++_0x2b8b13);}(_0x919e,0x9c));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xe919('0x0'));var Mustache=require(_0xe919('0x1'));var logger=require(_0xe919('0x2'))(_0xe919('0x3'));exports['exec']=function(_0x178428,_0x13421a){var _0x379ebf,_0x572555;var _0x44ce77={'method':_0x178428[_0xe919('0x4')][_0xe919('0x5')](),'uri':Mustache[_0xe919('0x6')](_0x178428['data2'],_0x13421a),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x178428[_0xe919('0x7')])==='number'&&parseInt(_0x178428[_0xe919('0x7')])>=0x1&&parseInt(_0x178428[_0xe919('0x7')])<=0xa?parseInt(_0x178428['data5'])*0x3e8:0x5*0x3e8};try{_0x44ce77[_0xe919('0x8')]=_0x178428[_0xe919('0x9')]?JSON['parse'](Mustache[_0xe919('0x6')](_0x178428[_0xe919('0x9')],_0x13421a)):{};}catch(_0x3f2045){logger[_0xe919('0xa')](_0x3f2045['stack']);}switch(_0x178428[_0xe919('0x4')][_0xe919('0x5')]()){case _0xe919('0xb'):case'DELETE':_0x379ebf=null;_0x44ce77['qs']=_0x13421a;break;case'POST':case _0xe919('0xc'):if(_0x178428[_0xe919('0xd')]){try{_0x379ebf=JSON[_0xe919('0xe')](Mustache[_0xe919('0x6')](_0x178428[_0xe919('0xd')],_0x13421a));_0x44ce77[_0xe919('0xf')]=_0x379ebf;}catch(_0x5acafc){logger[_0xe919('0xa')](_0x5acafc[_0xe919('0x10')]);logger['error']('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x379ebf=_0x13421a;_0x44ce77['body']=_0x379ebf;}break;}logger[_0xe919('0x11')](util[_0xe919('0x12')](_0xe919('0x13'),_0x178428[_0xe919('0x4')],_0x178428[_0xe919('0x14')],JSON[_0xe919('0x15')](_0x44ce77)));rp(_0x44ce77)[_0xe919('0x16')](function(_0x341d53){_0x379ebf=!_['isNil'](_0x379ebf)?_0xe919('0x17')+_0x379ebf:'';_0x572555=typeof _0x341d53[_0xe919('0xf')]===_0xe919('0x18')?JSON[_0xe919('0x15')](_0x341d53[_0xe919('0xf')]):_0x341d53['body'];logger[_0xe919('0x11')](util[_0xe919('0x12')](_0xe919('0x19'),_0x178428['data1'],_0x178428[_0xe919('0x14')],_0x341d53['statusCode'],_0x572555));})[_0xe919('0x1a')](function(_0x32e663){logger[_0xe919('0xa')](util[_0xe919('0x12')](_0xe919('0x1b'),_0x178428[_0xe919('0x4')],_0x178428['data2'],_0x32e663[_0xe919('0x1c')],_0x32e663[_0xe919('0x1d')],_0x32e663['message']));});};
\ No newline at end of file
index 7f2c04d..b1e03e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b95=['rpc','exports','jayson/promise','bluebird','../../config/logger','routing','Request','request','debug','error','message','result'];(function(_0x266709,_0x3773d2){var _0x377963=function(_0x34badf){while(--_0x34badf){_0x266709['push'](_0x266709['shift']());}};_0x377963(++_0x3773d2);}(_0x2b95,0x18e));var _0x52b9=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x2b95[_0x5a3cf0];return _0x5a64ee;};'use strict';var jayson=require(_0x52b9('0x0'));var BPromise=require(_0x52b9('0x1'));var logger=require(_0x52b9('0x2'))(_0x52b9('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x52b9('0x4')]=function(_0x4a4dfe,_0x3e125c){return new BPromise(function(_0x3c863,_0x329159){return client[_0x52b9('0x5')](_0x4a4dfe,_0x3e125c)['then'](function(_0x1e695f){logger[_0x52b9('0x6')]('rpc',_0x52b9('0x3'),_0x4a4dfe,_0x3e125c,_0x1e695f);if(_0x1e695f[_0x52b9('0x7')]){logger['error']('rpc',_0x52b9('0x3'),_0x4a4dfe,_0x1e695f[_0x52b9('0x7')][_0x52b9('0x8')],_0x3e125c);return _0x329159(_0x1e695f[_0x52b9('0x7')][_0x52b9('0x8')]);}else{return _0x3c863(_0x1e695f[_0x52b9('0x9')]);}})['catch'](function(_0x23c62d){logger[_0x52b9('0x7')](_0x52b9('0xa'),'routing',_0x4a4dfe,_0x23c62d,_0x3e125c);return _0x329159(_0x23c62d);});});};module[_0x52b9('0xb')]=client;
\ No newline at end of file
+var _0xbf54=['error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client','http','Request','then','rpc'];(function(_0x2303d6,_0x596c2b){var _0x126d54=function(_0xfeb17d){while(--_0xfeb17d){_0x2303d6['push'](_0x2303d6['shift']());}};_0x126d54(++_0x596c2b);}(_0xbf54,0xf3));var _0x4bf5=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xbf54[_0x5bd426];return _0x23a7eb;};'use strict';var jayson=require(_0x4bf5('0x0'));var BPromise=require(_0x4bf5('0x1'));var logger=require(_0x4bf5('0x2'))(_0x4bf5('0x3'));var client=jayson[_0x4bf5('0x4')][_0x4bf5('0x5')]({'port':0x2329});client[_0x4bf5('0x6')]=function(_0x18df2e,_0x973b06){return new BPromise(function(_0x8093e6,_0x2dfab0){return client['request'](_0x18df2e,_0x973b06)[_0x4bf5('0x7')](function(_0x2b2324){logger['debug'](_0x4bf5('0x8'),_0x4bf5('0x3'),_0x18df2e,_0x973b06,_0x2b2324);if(_0x2b2324[_0x4bf5('0x9')]){logger[_0x4bf5('0x9')](_0x4bf5('0x8'),'routing',_0x18df2e,_0x2b2324['error'][_0x4bf5('0xa')],_0x973b06);return _0x2dfab0(_0x2b2324[_0x4bf5('0x9')][_0x4bf5('0xa')]);}else{return _0x8093e6(_0x2b2324[_0x4bf5('0xb')]);}})[_0x4bf5('0xc')](function(_0x4b2489){logger[_0x4bf5('0x9')]('rpc','routing',_0x18df2e,_0x4b2489,_0x973b06);return _0x2dfab0(_0x4b2489);});});};module[_0x4bf5('0xd')]=client;
\ No newline at end of file
index f261e77..2fa436a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb8d=['error','./server','./rpc/mailAccount','./rpc/setting','email','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch'];(function(_0x123634,_0x254c76){var _0x29adaf=function(_0xacd892){while(--_0xacd892){_0x123634['push'](_0x123634['shift']());}};_0x29adaf(++_0x254c76);}(_0xeb8d,0x1d5));var _0xdeb8=function(_0x249447,_0x164fe4){_0x249447=_0x249447-0x0;var _0x1dc995=_0xeb8d[_0x249447];return _0x1dc995;};'use strict';var server=require(_0xdeb8('0x0'));var Realtime=require('./realtime');var EmailChannel=require('./lib/email');var mailAccount=require(_0xdeb8('0x1'));var setting=require(_0xdeb8('0x2'));var logger=require('../../config/logger')(_0xdeb8('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()[_0xdeb8('0x4')](mailAccount[_0xdeb8('0x5')]())[_0xdeb8('0x4')](realtime[_0xdeb8('0x6')]())[_0xdeb8('0x4')](function(){email[_0xdeb8('0x7')](realtime[_0xdeb8('0x8')]);return realtime;});}function main(){return server[_0xdeb8('0x9')](realtime,email)[_0xdeb8('0x4')](function(){return initRealtime();})[_0xdeb8('0x4')](function(){return setting['getSettings']();})[_0xdeb8('0x4')](function(_0x5cdb16){return setInterval(initRealtime,_0x5cdb16[_0xdeb8('0xa')]*0x3e8);})[_0xdeb8('0xb')](function(_0x170c99){logger[_0xdeb8('0xc')]('Email\x20service\x20initialization',_0x170c99);});}main();
\ No newline at end of file
+var _0xa95c=['getSettings','catch','error','./server','./realtime','./lib/email','../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh','listen'];(function(_0x2e641b,_0x1b03ae){var _0x3f15a9=function(_0x2ba7db){while(--_0x2ba7db){_0x2e641b['push'](_0x2e641b['shift']());}};_0x3f15a9(++_0x1b03ae);}(_0xa95c,0x73));var _0xca95=function(_0x1af2a5,_0x39026d){_0x1af2a5=_0x1af2a5-0x0;var _0x127269=_0xa95c[_0x1af2a5];return _0x127269;};'use strict';var server=require(_0xca95('0x0'));var Realtime=require(_0xca95('0x1'));var EmailChannel=require(_0xca95('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require('./rpc/setting');var logger=require(_0xca95('0x3'))(_0xca95('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xca95('0x5')]()[_0xca95('0x6')](mailAccount[_0xca95('0x7')]())[_0xca95('0x6')](realtime[_0xca95('0x8')]())['then'](function(){email[_0xca95('0x9')](realtime['mailAccounts']);return realtime;});}function main(){return server[_0xca95('0xa')](realtime,email)[_0xca95('0x6')](function(){return initRealtime();})[_0xca95('0x6')](function(){return setting[_0xca95('0xb')]();})[_0xca95('0x6')](function(_0x2df22d){return setInterval(initRealtime,_0x2df22d['loginMailFrequency']*0x3e8);})[_0xca95('0xc')](function(_0x33c107){logger[_0xca95('0xd')]('Email\x20service\x20initialization',_0x33c107);});}main();
\ No newline at end of file
index 9a82953..50ce2fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5549=['lastSync','sendMail','verifySmtp','Smtp','verify','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','name','active','status','Imap','total','isNil','stringify','emit','mailAccount:update','prototype','hasOwnProperty','service','provider','custom','email','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','disabled','messageStatus','connected','messages','lastName','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s'];(function(_0x5113bd,_0x2d727b){var _0x333f77=function(_0x3ca7ad){while(--_0x3ca7ad){_0x5113bd['push'](_0x5113bd['shift']());}};_0x333f77(++_0x2d727b);}(_0x5549,0x18e));var _0x9554=function(_0x36c579,_0x8dbd81){_0x36c579=_0x36c579-0x0;var _0xa6c98c=_0x5549[_0x36c579];return _0xa6c98c;};'use strict';var _=require(_0x9554('0x0'));var moment=require(_0x9554('0x1'));var BPromise=require(_0x9554('0x2'));var md5=require(_0x9554('0x3'));var Redis=require(_0x9554('0x4'));var config=require(_0x9554('0x5'));var logger=require(_0x9554('0x6'))('email');config['redis']=_[_0x9554('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9554('0x8'))(new Redis(config['redis']));var EmailImap=require(_0x9554('0x9'));var EmailSmtp=require(_0x9554('0xa'));var mailAccount=require(_0x9554('0xb'));var md5Accounts={};function EmailChannel(_0x5303f7){logger[_0x9554('0xc')](_0x9554('0xd'));this[_0x9554('0xe')]=_0x5303f7[_0x9554('0xe')];this[_0x9554('0xf')]={};this[_0x9554('0x10')]=new EmailSmtp();}EmailChannel['prototype']['emit']=function(_0x11804d){var _0x2b0abe=this[_0x9554('0xe')][_0x11804d];var _0x5f4d5c={'id':_0x2b0abe['id'],'name':_0x2b0abe[_0x9554('0x11')],'key':_0x2b0abe['key'],'active':_0x2b0abe[_0x9554('0x12')],'Imap':{'status':_0x2b0abe['Imap'][_0x9554('0x13')],'messageStatus':_0x2b0abe[_0x9554('0x14')]['messageStatus'],'total':_0x2b0abe[_0x9554('0x14')][_0x9554('0x15')]}};if(_[_0x9554('0x16')](md5Accounts[_0x11804d])){md5Accounts[_0x11804d]={};}var _0x5b09a1=md5(JSON[_0x9554('0x17')](_0x5f4d5c));if(md5Accounts[_0x11804d][_0x9554('0x3')]!==_0x5b09a1){md5Accounts[_0x11804d]['md5']=_0x5b09a1;io[_0x9554('0x18')](_0x9554('0x19'),_0x5f4d5c);}};EmailChannel[_0x9554('0x1a')]['refresh']=function(_0x411b65){for(var _0x404d51 in _0x411b65){if(_0x411b65[_0x9554('0x1b')](_0x404d51)){if(_0x411b65[_0x404d51]['Imap']&&_0x411b65[_0x404d51][_0x9554('0x12')]){var _0x372ca4=_0x411b65[_0x404d51][_0x9554('0x14')];if(!_0x372ca4[_0x9554('0x1c')]&&_0x411b65[_0x404d51][_0x9554('0x1d')]!==_0x9554('0x1e'))_0x372ca4[_0x9554('0x1c')]=_0x411b65[_0x404d51][_0x9554('0x1d')];if(!this['imapAccounts'][_0x9554('0x1b')](_0x372ca4['id'])){this[_0x9554('0xf')][_0x372ca4['id']]=new EmailImap(_0x372ca4,_0x411b65[_0x404d51][_0x9554('0x1f')]);this[_0x9554('0xf')][_0x372ca4['id']]['on'](_0x9554('0x20'),this[_0x9554('0x21')][_0x9554('0x22')](this,_0x404d51));this[_0x9554('0xf')][_0x372ca4['id']]['on'](_0x9554('0x1f'),this[_0x9554('0x23')]['bind'](this,_0x404d51));this[_0x9554('0xf')][_0x372ca4['id']]['on'](_0x9554('0x24'),this[_0x9554('0x25')][_0x9554('0x22')](this,_0x404d51));this[_0x9554('0xf')][_0x372ca4['id']]['on'](_0x9554('0x26'),this[_0x9554('0x27')]['bind'](this,_0x404d51));}}else{if(_[_0x9554('0x16')](this['mailAccounts'][_0x404d51]['Imap'])){this['mailAccounts'][_0x404d51][_0x9554('0x14')]={};}this['mailAccounts'][_0x404d51]['Imap'][_0x9554('0x13')]=_0x9554('0x28');this[_0x9554('0xe')][_0x404d51][_0x9554('0x14')][_0x9554('0x29')]='';this['emit'](_0x404d51);}}}};EmailChannel['prototype'][_0x9554('0x21')]=function(_0x303404,_0x3ec11c){if(this[_0x9554('0xe')][_0x303404]){this[_0x9554('0xe')][_0x303404][_0x9554('0x14')][_0x9554('0x13')]=_0x9554('0x2a');this[_0x9554('0xe')][_0x303404]['Imap'][_0x9554('0x29')]=_0x3ec11c[_0x9554('0x11')];if(_0x3ec11c[_0x9554('0x2b')]){this[_0x9554('0xe')][_0x303404][_0x9554('0x14')][_0x9554('0x15')]=_0x3ec11c['messages']['total'];}return this[_0x9554('0x18')](_0x303404);}};EmailChannel[_0x9554('0x1a')][_0x9554('0x23')]=function(_0x195084,_0x2e4c8a){logger[_0x9554('0xc')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x2e4c8a['firstName'],_0x2e4c8a[_0x9554('0x2c')],_0x2e4c8a['from'],_0x195084);if(this[_0x9554('0xe')][_0x195084]){return mailAccount[_0x9554('0x2d')](_0x195084,_0x2e4c8a)[_0x9554('0x2e')](function(_0x24da8a){if(_0x24da8a){logger[_0x9554('0xc')](_0x9554('0x2f'));}})[_0x9554('0x30')](function(_0x53efac){logger['error'](_0x9554('0x31'),JSON[_0x9554('0x17')](_0x53efac));});}};EmailChannel[_0x9554('0x1a')][_0x9554('0x25')]=function(_0x223200){if(this[_0x9554('0xe')][_0x223200]&&this[_0x9554('0xe')][_0x223200][_0x9554('0x14')]){if(this[_0x9554('0xf')][this['mailAccounts'][_0x223200][_0x9554('0x14')]['id']]){delete this[_0x9554('0xf')][this[_0x9554('0xe')][_0x223200][_0x9554('0x14')]['id']];}this[_0x9554('0xe')][_0x223200]['Imap'][_0x9554('0x32')]=moment();this[_0x9554('0x18')](_0x223200);}};EmailChannel['prototype']['handleImapError']=function(_0x4dd7a5,_0x3f7c35){if(this['mailAccounts'][_0x4dd7a5]){this[_0x9554('0xe')][_0x4dd7a5][_0x9554('0x14')][_0x9554('0x13')]=_0x9554('0x26');this[_0x9554('0xe')][_0x4dd7a5][_0x9554('0x14')][_0x9554('0x29')]=_0x3f7c35;return this[_0x9554('0x18')](_0x4dd7a5);}};EmailChannel[_0x9554('0x1a')][_0x9554('0x33')]=function(_0x41e257,_0x256f06){return this[_0x9554('0x10')]['send'](_0x41e257,_0x256f06);};EmailChannel[_0x9554('0x1a')][_0x9554('0x34')]=function(_0x3b697d){var _0x444fb9=this;if(this['mailAccounts'][_0x3b697d['id']]){if(_[_0x9554('0x16')](this['mailAccounts'][_0x3b697d['id']][_0x9554('0x35')])){this[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')]={};}this[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')][_0x9554('0x32')]=moment();return new BPromise(function(_0xb7c0bc,_0x2ab131){return _0x444fb9[_0x9554('0x10')][_0x9554('0x36')](_0x3b697d)['then'](function(_0x5677a5){_0x444fb9[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')][_0x9554('0x13')]='verified';_0x444fb9[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')][_0x9554('0x29')]='';_0x444fb9[_0x9554('0x18')](_0x3b697d['id']);_0xb7c0bc(_0x5677a5);})['catch'](function(_0x4cbfc4){_0x444fb9[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')][_0x9554('0x13')]='error';_0x444fb9[_0x9554('0xe')][_0x3b697d['id']][_0x9554('0x35')]['messageStatus']=_0x4cbfc4;_0x444fb9[_0x9554('0x18')](_0x3b697d['id']);_0x2ab131(_0x4cbfc4);});});}return this['smtp'][_0x9554('0x36')](_0x3b697d);};module[_0x9554('0x37')]=EmailChannel;
\ No newline at end of file
+var _0x962a=['md5','../../../config/environment','../../../config/logger','email','redis','defaults','localhost','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','emit','name','key','Imap','status','messageStatus','total','isNil','stringify','prototype','refresh','hasOwnProperty','active','service','custom','provider','imapAccounts','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','disabled','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','send','verifySmtp','Smtp','verified','verify','exports','lodash','moment','bluebird'];(function(_0x38a122,_0x3bfa3d){var _0x211f55=function(_0x3bcd94){while(--_0x3bcd94){_0x38a122['push'](_0x38a122['shift']());}};_0x211f55(++_0x3bfa3d);}(_0x962a,0xe5));var _0xa962=function(_0x5c2d9b,_0x3b0fb4){_0x5c2d9b=_0x5c2d9b-0x0;var _0x4dc12b=_0x962a[_0x5c2d9b];return _0x4dc12b;};'use strict';var _=require(_0xa962('0x0'));var moment=require(_0xa962('0x1'));var BPromise=require(_0xa962('0x2'));var md5=require(_0xa962('0x3'));var Redis=require('ioredis');var config=require(_0xa962('0x4'));var logger=require(_0xa962('0x5'))(_0xa962('0x6'));config[_0xa962('0x7')]=_[_0xa962('0x8')](config[_0xa962('0x7')],{'host':_0xa962('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa962('0x7')]));var EmailImap=require('./imap');var EmailSmtp=require(_0xa962('0xa'));var mailAccount=require(_0xa962('0xb'));var md5Accounts={};function EmailChannel(_0x368e0e){logger[_0xa962('0xc')](_0xa962('0xd'));this[_0xa962('0xe')]=_0x368e0e[_0xa962('0xe')];this['imapAccounts']={};this[_0xa962('0xf')]=new EmailSmtp();}EmailChannel['prototype'][_0xa962('0x10')]=function(_0x37a824){var _0x2af16d=this[_0xa962('0xe')][_0x37a824];var _0x3ad32f={'id':_0x2af16d['id'],'name':_0x2af16d[_0xa962('0x11')],'key':_0x2af16d[_0xa962('0x12')],'active':_0x2af16d['active'],'Imap':{'status':_0x2af16d[_0xa962('0x13')][_0xa962('0x14')],'messageStatus':_0x2af16d[_0xa962('0x13')][_0xa962('0x15')],'total':_0x2af16d['Imap'][_0xa962('0x16')]}};if(_[_0xa962('0x17')](md5Accounts[_0x37a824])){md5Accounts[_0x37a824]={};}var _0x4940cf=md5(JSON[_0xa962('0x18')](_0x3ad32f));if(md5Accounts[_0x37a824][_0xa962('0x3')]!==_0x4940cf){md5Accounts[_0x37a824]['md5']=_0x4940cf;io[_0xa962('0x10')]('mailAccount:update',_0x3ad32f);}};EmailChannel[_0xa962('0x19')][_0xa962('0x1a')]=function(_0x218b60){for(var _0x5cedbe in _0x218b60){if(_0x218b60[_0xa962('0x1b')](_0x5cedbe)){if(_0x218b60[_0x5cedbe][_0xa962('0x13')]&&_0x218b60[_0x5cedbe][_0xa962('0x1c')]){var _0x1bc581=_0x218b60[_0x5cedbe][_0xa962('0x13')];if(!_0x1bc581[_0xa962('0x1d')]&&_0x218b60[_0x5cedbe]['provider']!==_0xa962('0x1e'))_0x1bc581[_0xa962('0x1d')]=_0x218b60[_0x5cedbe][_0xa962('0x1f')];if(!this['imapAccounts']['hasOwnProperty'](_0x1bc581['id'])){this[_0xa962('0x20')][_0x1bc581['id']]=new EmailImap(_0x1bc581,_0x218b60[_0x5cedbe][_0xa962('0x6')]);this['imapAccounts'][_0x1bc581['id']]['on'](_0xa962('0x21'),this[_0xa962('0x22')][_0xa962('0x23')](this,_0x5cedbe));this['imapAccounts'][_0x1bc581['id']]['on'](_0xa962('0x6'),this[_0xa962('0x24')][_0xa962('0x23')](this,_0x5cedbe));this[_0xa962('0x20')][_0x1bc581['id']]['on'](_0xa962('0x25'),this[_0xa962('0x26')][_0xa962('0x23')](this,_0x5cedbe));this[_0xa962('0x20')][_0x1bc581['id']]['on'](_0xa962('0x27'),this['handleImapError'][_0xa962('0x23')](this,_0x5cedbe));}}else{if(_[_0xa962('0x17')](this[_0xa962('0xe')][_0x5cedbe][_0xa962('0x13')])){this[_0xa962('0xe')][_0x5cedbe]['Imap']={};}this[_0xa962('0xe')][_0x5cedbe]['Imap']['status']=_0xa962('0x28');this[_0xa962('0xe')][_0x5cedbe][_0xa962('0x13')][_0xa962('0x15')]='';this[_0xa962('0x10')](_0x5cedbe);}}}};EmailChannel[_0xa962('0x19')]['handleImapBox']=function(_0x3f197d,_0x1f3be5){if(this[_0xa962('0xe')][_0x3f197d]){this['mailAccounts'][_0x3f197d][_0xa962('0x13')][_0xa962('0x14')]=_0xa962('0x29');this[_0xa962('0xe')][_0x3f197d]['Imap']['messageStatus']=_0x1f3be5['name'];if(_0x1f3be5[_0xa962('0x2a')]){this[_0xa962('0xe')][_0x3f197d]['Imap'][_0xa962('0x16')]=_0x1f3be5[_0xa962('0x2a')][_0xa962('0x16')];}return this['emit'](_0x3f197d);}};EmailChannel[_0xa962('0x19')][_0xa962('0x24')]=function(_0x379c28,_0x5c380d){logger['info'](_0xa962('0x2b'),_0x5c380d['firstName'],_0x5c380d[_0xa962('0x2c')],_0x5c380d[_0xa962('0x2d')],_0x379c28);if(this[_0xa962('0xe')][_0x379c28]){return mailAccount['notify'](_0x379c28,_0x5c380d)[_0xa962('0x2e')](function(_0x5a5119){if(_0x5a5119){logger['info'](_0xa962('0x2f'));}})['catch'](function(_0x37657e){logger[_0xa962('0x27')](_0xa962('0x30'),JSON['stringify'](_0x37657e));});}};EmailChannel[_0xa962('0x19')][_0xa962('0x26')]=function(_0x1049f9){if(this[_0xa962('0xe')][_0x1049f9]&&this[_0xa962('0xe')][_0x1049f9][_0xa962('0x13')]){if(this[_0xa962('0x20')][this[_0xa962('0xe')][_0x1049f9][_0xa962('0x13')]['id']]){delete this[_0xa962('0x20')][this[_0xa962('0xe')][_0x1049f9][_0xa962('0x13')]['id']];}this[_0xa962('0xe')][_0x1049f9]['Imap'][_0xa962('0x31')]=moment();this[_0xa962('0x10')](_0x1049f9);}};EmailChannel[_0xa962('0x19')][_0xa962('0x32')]=function(_0x256961,_0x93ef7d){if(this[_0xa962('0xe')][_0x256961]){this[_0xa962('0xe')][_0x256961]['Imap'][_0xa962('0x14')]=_0xa962('0x27');this['mailAccounts'][_0x256961][_0xa962('0x13')]['messageStatus']=_0x93ef7d;return this[_0xa962('0x10')](_0x256961);}};EmailChannel[_0xa962('0x19')][_0xa962('0x33')]=function(_0x5079d5,_0x237d15){return this[_0xa962('0xf')][_0xa962('0x34')](_0x5079d5,_0x237d15);};EmailChannel[_0xa962('0x19')][_0xa962('0x35')]=function(_0x443c21){var _0x132f1e=this;if(this[_0xa962('0xe')][_0x443c21['id']]){if(_[_0xa962('0x17')](this[_0xa962('0xe')][_0x443c21['id']][_0xa962('0x36')])){this['mailAccounts'][_0x443c21['id']]['Smtp']={};}this[_0xa962('0xe')][_0x443c21['id']][_0xa962('0x36')][_0xa962('0x31')]=moment();return new BPromise(function(_0x2ebed7,_0x6bc146){return _0x132f1e[_0xa962('0xf')]['verify'](_0x443c21)['then'](function(_0x3cdc8d){_0x132f1e[_0xa962('0xe')][_0x443c21['id']]['Smtp']['status']=_0xa962('0x37');_0x132f1e[_0xa962('0xe')][_0x443c21['id']][_0xa962('0x36')][_0xa962('0x15')]='';_0x132f1e[_0xa962('0x10')](_0x443c21['id']);_0x2ebed7(_0x3cdc8d);})['catch'](function(_0x160910){_0x132f1e[_0xa962('0xe')][_0x443c21['id']][_0xa962('0x36')]['status']='error';_0x132f1e[_0xa962('0xe')][_0x443c21['id']][_0xa962('0x36')][_0xa962('0x15')]=_0x160910;_0x132f1e[_0xa962('0x10')](_0x443c21['id']);_0x6bc146(_0x160910);});});}return this['smtp'][_0xa962('0x38')](_0x443c21);};module[_0xa962('0x39')]=EmailChannel;
\ No newline at end of file
index 95ce22c..baa68a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b0=['inherits','prototype','connTimeout','authTimeout','service','user','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchError','closeBox','handleFetchMessage','body','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','handleEnd','textCode','hasOwnProperty','exports','lodash','util','imap','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','account','getAccount','once','ready','handleReady','end','error','handleError','bind','connect'];(function(_0x4ebb5d,_0x1e92b6){var _0x5abafd=function(_0x2e1f57){while(--_0x2e1f57){_0x4ebb5d['push'](_0x4ebb5d['shift']());}};_0x5abafd(++_0x1e92b6);}(_0x41b0,0xaf));var _0x041b=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x41b0[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0x041b('0x0'));var util=require(_0x041b('0x1'));var Imap=require(_0x041b('0x2'));var simpleParser=require(_0x041b('0x3'))[_0x041b('0x4')];var Iconv=require(_0x041b('0x5'))[_0x041b('0x6')];var EventEmitter=require(_0x041b('0x7'))[_0x041b('0x8')];var utils=require(_0x041b('0x9'));var logger=require(_0x041b('0xa'))(_0x041b('0xb'));function EmailImap(_0x5020cb,_0x34ac34){this[_0x041b('0xc')]=_0x5020cb[_0x041b('0xc')];this[_0x041b('0xd')]=this[_0x041b('0xe')](_0x5020cb,_0x34ac34);this[_0x041b('0x2')]=new Imap(this[_0x041b('0xd')]);this[_0x041b('0x2')][_0x041b('0xf')](_0x041b('0x10'),this[_0x041b('0x11')]['bind'](this));this['imap']['once'](_0x041b('0x12'),this['handleEnd']['bind'](this));this[_0x041b('0x2')]['on'](_0x041b('0x13'),this[_0x041b('0x14')][_0x041b('0x15')](this));this[_0x041b('0x2')][_0x041b('0x16')]();}util[_0x041b('0x17')](EmailImap,EventEmitter);EmailImap[_0x041b('0x18')][_0x041b('0xe')]=function(_0x584618,_0x415536){var _0x454c11={'connTimeout':_0x584618[_0x041b('0x19')]?_0x584618[_0x041b('0x19')]*0x3e8:0x2710,'authTimeout':_0x584618[_0x041b('0x1a')]?_0x584618[_0x041b('0x1a')]*0x3e8:0x1388};if(_0x584618[_0x041b('0x1b')]){_0x454c11[_0x041b('0x1c')]=_0x584618['user'];if(_0x584618['modernAuthentication']){_0x454c11[_0x041b('0x1d')]=utils[_0x041b('0x1e')](_0x584618[_0x041b('0x1f')][_0x041b('0x20')],_0x584618[_0x041b('0x1c')]);}else{_0x454c11[_0x041b('0x21')]=_0x584618[_0x041b('0x21')];}}else{if(_0x584618[_0x041b('0x22')]){_0x454c11['user']=_0x584618['user'];_0x454c11['password']=_0x584618[_0x041b('0x21')];}}_0x454c11[_0x041b('0xb')]=_0x415536||_0x584618[_0x041b('0x1c')]||_0x041b('0x23');_0x454c11[_0x041b('0x24')]=_0x584618[_0x041b('0x24')];_0x454c11[_0x041b('0x25')]=_0x584618[_0x041b('0x25')]||0x3e1;if(_0x584618[_0x041b('0x26')]){_0x454c11[_0x041b('0x26')]=!![];}else{_0x454c11['tls']=![];_0x454c11[_0x041b('0x27')]=_0x041b('0x28');}return _0x454c11;};EmailImap[_0x041b('0x18')][_0x041b('0x11')]=function(){this[_0x041b('0x2')][_0x041b('0x29')](this[_0x041b('0xc')],![],this[_0x041b('0x2a')][_0x041b('0x15')](this));};EmailImap[_0x041b('0x18')]['handleOpenBox']=function(_0x1a20b3,_0x3fcc5c){if(_0x1a20b3){this[_0x041b('0x14')](_0x1a20b3,!![]);}else{this[_0x041b('0x2b')]('box',_0x3fcc5c);this[_0x041b('0x2c')]();}};EmailImap[_0x041b('0x18')][_0x041b('0x2d')]=function(_0x23b529){if(_0x23b529){this[_0x041b('0x14')](_0x23b529,!![]);}else{this[_0x041b('0x2')][_0x041b('0x12')]();}};EmailImap['prototype'][_0x041b('0x2c')]=function(){this[_0x041b('0x2')][_0x041b('0x2e')]([_0x041b('0x2f')],this[_0x041b('0x30')][_0x041b('0x15')](this));};EmailImap[_0x041b('0x18')]['handleReadUnseen']=function(_0x71293c,_0x46ddc8){if(_0x71293c){this[_0x041b('0x14')](_0x71293c,!![]);}else{if(_0x46ddc8[_0x041b('0x31')]){try{var _0x21fab7=this['imap'][_0x041b('0x32')](_0x46ddc8,{'bodies':'','markSeen':!![]});_0x21fab7['on'](_0x041b('0x33'),this['handleFetchMessage'][_0x041b('0x15')](this));_0x21fab7['once'](_0x041b('0x13'),this[_0x041b('0x34')][_0x041b('0x15')](this));_0x21fab7['once'](_0x041b('0x12'),this['handleFetchEnd'][_0x041b('0x15')](this));}catch(_0x53f9cf){logger['error'](_0x53f9cf);}}else{this['imap'][_0x041b('0x35')](!![],this[_0x041b('0x2d')][_0x041b('0x15')](this));}}};EmailImap[_0x041b('0x18')][_0x041b('0x36')]=function(_0x39ea0d){_0x39ea0d['on'](_0x041b('0x37'),this[_0x041b('0x38')]['bind'](this));_0x39ea0d[_0x041b('0xf')](_0x041b('0x39'),this['handleMessageAttributes'][_0x041b('0x15')](this));_0x39ea0d['once'](_0x041b('0x12'),this[_0x041b('0x3a')][_0x041b('0x15')](this));};EmailImap[_0x041b('0x18')][_0x041b('0x38')]=function(_0x324e2e){simpleParser(_0x324e2e,{'Iconv':Iconv},this[_0x041b('0x3b')]['bind'](this));};EmailImap[_0x041b('0x18')]['handleMessageAttributes']=function(){};EmailImap[_0x041b('0x18')][_0x041b('0x3a')]=function(){};EmailImap[_0x041b('0x18')][_0x041b('0x3b')]=function(_0x166011,_0x13b156){if(_0x166011){logger[_0x041b('0x13')](_0x166011);}else{var _0x2fc968=this;utils[_0x041b('0x3c')](this[_0x041b('0xd')],_0x13b156,function(_0x420ac0){_0x2fc968[_0x041b('0x2b')]('email',_0x420ac0);});}};EmailImap['prototype'][_0x041b('0x3d')]=function(){this[_0x041b('0x2')][_0x041b('0x35')](!![],this['handleCloseBox'][_0x041b('0x15')](this));};EmailImap[_0x041b('0x18')]['handleFetchError']=function(_0x8e4f1c){this[_0x041b('0x14')](_0x8e4f1c);this[_0x041b('0x2')][_0x041b('0x35')](!![],this['handleCloseBox'][_0x041b('0x15')](this));};EmailImap[_0x041b('0x18')][_0x041b('0x3e')]=function(){this[_0x041b('0x2b')](_0x041b('0x12'));};EmailImap[_0x041b('0x18')][_0x041b('0x14')]=function(_0x507990,_0x3ec963){logger['error'](_0x041b('0x14'),this[_0x041b('0xd')][_0x041b('0xb')],JSON['stringify'](_0x507990));var _0x4d01e3='';if(_0x507990){if(_0x507990[_0x041b('0x3f')]){_0x4d01e3=_0x507990[_0x041b('0x3f')];}else{for(var _0x394559 in _0x507990){if(_0x507990[_0x041b('0x40')](_0x394559)){_0x4d01e3+=_['upperFirst'](_0x394559)+':\x20'+_0x507990[_0x394559]+'\x0a';}}}}if(_0x3ec963){this['imap'][_0x041b('0x12')]();}else{this[_0x041b('0x2b')]('error',_0x4d01e3);this[_0x041b('0x2b')](_0x041b('0x12'));}};module[_0x041b('0x41')]=EmailImap;
\ No newline at end of file
+var _0xfa5e=['attributes','handleMessageAttributes','handleMessageEnd','emit','textCode','hasOwnProperty','upperFirst','exports','lodash','imap','simpleParser','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','mailbox','account','handleReady','bind','once','end','handleEnd','error','prototype','getAccount','connTimeout','authTimeout','service','user','generateXOAuth2Token','CloudProvider','data5','password','email','anonymous@xcally.com','host','port','tls','required','openBox','handleOpenBox','handleError','readUnseen','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchEnd','closeBox','handleCloseBox','body','handleMessageBody'];(function(_0x5185d0,_0x12466d){var _0x40ec75=function(_0x5e464d){while(--_0x5e464d){_0x5185d0['push'](_0x5185d0['shift']());}};_0x40ec75(++_0x12466d);}(_0xfa5e,0x78));var _0xefa5=function(_0x1d74de,_0x41ffd4){_0x1d74de=_0x1d74de-0x0;var _0x54808b=_0xfa5e[_0x1d74de];return _0x54808b;};'use strict';var _=require(_0xefa5('0x0'));var util=require('util');var Imap=require(_0xefa5('0x1'));var simpleParser=require('mailparser')[_0xefa5('0x2')];var Iconv=require(_0xefa5('0x3'))[_0xefa5('0x4')];var EventEmitter=require(_0xefa5('0x5'))[_0xefa5('0x6')];var utils=require(_0xefa5('0x7'));var logger=require(_0xefa5('0x8'))('email');function EmailImap(_0x2fbce2,_0x483108){this[_0xefa5('0x9')]=_0x2fbce2[_0xefa5('0x9')];this[_0xefa5('0xa')]=this['getAccount'](_0x2fbce2,_0x483108);this[_0xefa5('0x1')]=new Imap(this[_0xefa5('0xa')]);this[_0xefa5('0x1')]['once']('ready',this[_0xefa5('0xb')][_0xefa5('0xc')](this));this[_0xefa5('0x1')][_0xefa5('0xd')](_0xefa5('0xe'),this[_0xefa5('0xf')]['bind'](this));this[_0xefa5('0x1')]['on'](_0xefa5('0x10'),this['handleError'][_0xefa5('0xc')](this));this['imap']['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xefa5('0x11')][_0xefa5('0x12')]=function(_0x2fd4e6,_0x47959b){var _0xb406a7={'connTimeout':_0x2fd4e6[_0xefa5('0x13')]?_0x2fd4e6['connTimeout']*0x3e8:0x2710,'authTimeout':_0x2fd4e6['authTimeout']?_0x2fd4e6[_0xefa5('0x14')]*0x3e8:0x1388};if(_0x2fd4e6[_0xefa5('0x15')]){_0xb406a7['user']=_0x2fd4e6[_0xefa5('0x16')];if(_0x2fd4e6['modernAuthentication']){_0xb406a7['xoauth2']=utils[_0xefa5('0x17')](_0x2fd4e6[_0xefa5('0x18')][_0xefa5('0x19')],_0x2fd4e6[_0xefa5('0x16')]);}else{_0xb406a7[_0xefa5('0x1a')]=_0x2fd4e6['password'];}}else{if(_0x2fd4e6['authentication']){_0xb406a7[_0xefa5('0x16')]=_0x2fd4e6[_0xefa5('0x16')];_0xb406a7[_0xefa5('0x1a')]=_0x2fd4e6['password'];}}_0xb406a7[_0xefa5('0x1b')]=_0x47959b||_0x2fd4e6[_0xefa5('0x16')]||_0xefa5('0x1c');_0xb406a7['host']=_0x2fd4e6[_0xefa5('0x1d')];_0xb406a7[_0xefa5('0x1e')]=_0x2fd4e6['port']||0x3e1;if(_0x2fd4e6[_0xefa5('0x1f')]){_0xb406a7[_0xefa5('0x1f')]=!![];}else{_0xb406a7['tls']=![];_0xb406a7['autotls']=_0xefa5('0x20');}return _0xb406a7;};EmailImap[_0xefa5('0x11')]['handleReady']=function(){this[_0xefa5('0x1')][_0xefa5('0x21')](this[_0xefa5('0x9')],![],this[_0xefa5('0x22')][_0xefa5('0xc')](this));};EmailImap['prototype'][_0xefa5('0x22')]=function(_0x20298e,_0x4514de){if(_0x20298e){this[_0xefa5('0x23')](_0x20298e,!![]);}else{this['emit']('box',_0x4514de);this[_0xefa5('0x24')]();}};EmailImap[_0xefa5('0x11')]['handleCloseBox']=function(_0x178726){if(_0x178726){this[_0xefa5('0x23')](_0x178726,!![]);}else{this[_0xefa5('0x1')]['end']();}};EmailImap[_0xefa5('0x11')][_0xefa5('0x24')]=function(){this['imap']['search']([_0xefa5('0x25')],this[_0xefa5('0x26')][_0xefa5('0xc')](this));};EmailImap[_0xefa5('0x11')][_0xefa5('0x26')]=function(_0x218283,_0x4f4e1c){if(_0x218283){this[_0xefa5('0x23')](_0x218283,!![]);}else{if(_0x4f4e1c[_0xefa5('0x27')]){try{var _0x7aa8c9=this[_0xefa5('0x1')][_0xefa5('0x28')](_0x4f4e1c,{'bodies':'','markSeen':!![]});_0x7aa8c9['on'](_0xefa5('0x29'),this[_0xefa5('0x2a')][_0xefa5('0xc')](this));_0x7aa8c9[_0xefa5('0xd')](_0xefa5('0x10'),this['handleFetchError']['bind'](this));_0x7aa8c9[_0xefa5('0xd')](_0xefa5('0xe'),this[_0xefa5('0x2b')][_0xefa5('0xc')](this));}catch(_0x50e654){logger[_0xefa5('0x10')](_0x50e654);}}else{this['imap'][_0xefa5('0x2c')](!![],this[_0xefa5('0x2d')][_0xefa5('0xc')](this));}}};EmailImap[_0xefa5('0x11')][_0xefa5('0x2a')]=function(_0x48e03d){_0x48e03d['on'](_0xefa5('0x2e'),this[_0xefa5('0x2f')][_0xefa5('0xc')](this));_0x48e03d[_0xefa5('0xd')](_0xefa5('0x30'),this[_0xefa5('0x31')][_0xefa5('0xc')](this));_0x48e03d[_0xefa5('0xd')](_0xefa5('0xe'),this['handleMessageEnd'][_0xefa5('0xc')](this));};EmailImap['prototype'][_0xefa5('0x2f')]=function(_0x23dad7){simpleParser(_0x23dad7,{'Iconv':Iconv},this['handleSimpleParser'][_0xefa5('0xc')](this));};EmailImap['prototype'][_0xefa5('0x31')]=function(){};EmailImap[_0xefa5('0x11')][_0xefa5('0x32')]=function(){};EmailImap[_0xefa5('0x11')]['handleSimpleParser']=function(_0x4d7366,_0x4ba0eb){if(_0x4d7366){logger['error'](_0x4d7366);}else{var _0x1ecb36=this;utils['parser'](this[_0xefa5('0xa')],_0x4ba0eb,function(_0x178cde){_0x1ecb36[_0xefa5('0x33')](_0xefa5('0x1b'),_0x178cde);});}};EmailImap[_0xefa5('0x11')][_0xefa5('0x2b')]=function(){this[_0xefa5('0x1')][_0xefa5('0x2c')](!![],this[_0xefa5('0x2d')][_0xefa5('0xc')](this));};EmailImap['prototype']['handleFetchError']=function(_0x44efaa){this[_0xefa5('0x23')](_0x44efaa);this[_0xefa5('0x1')]['closeBox'](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0xefa5('0x11')][_0xefa5('0xf')]=function(){this[_0xefa5('0x33')](_0xefa5('0xe'));};EmailImap['prototype']['handleError']=function(_0x44f7a7,_0x5b28a4){logger['error'](_0xefa5('0x23'),this[_0xefa5('0xa')][_0xefa5('0x1b')],JSON['stringify'](_0x44f7a7));var _0x10e044='';if(_0x44f7a7){if(_0x44f7a7[_0xefa5('0x34')]){_0x10e044=_0x44f7a7[_0xefa5('0x34')];}else{for(var _0x59ca9e in _0x44f7a7){if(_0x44f7a7[_0xefa5('0x35')](_0x59ca9e)){_0x10e044+=_[_0xefa5('0x36')](_0x59ca9e)+':\x20'+_0x44f7a7[_0x59ca9e]+'\x0a';}}}}if(_0x5b28a4){this[_0xefa5('0x1')]['end']();}else{this[_0xefa5('0x33')](_0xefa5('0x10'),_0x10e044);this[_0xefa5('0x33')](_0xefa5('0xe'));}};module[_0xefa5('0x37')]=EmailImap;
\ No newline at end of file
index 57e07c6..705ac57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1833=['toString','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','createTransport','use','compile','sendMail'];(function(_0x51ab8e,_0x24ddb9){var _0x109723=function(_0x13fd56){while(--_0x13fd56){_0x51ab8e['push'](_0x51ab8e['shift']());}};_0x109723(++_0x24ddb9);}(_0x1833,0x1f3));var _0x3183=function(_0x56e13e,_0x3754cd){_0x56e13e=_0x56e13e-0x0;var _0x148751=_0x1833[_0x56e13e];return _0x148751;};'use strict';var nodemailer=require(_0x3183('0x0'));var inlineBase64=require(_0x3183('0x1'));function EmailSmtp(){}EmailSmtp[_0x3183('0x2')]['send']=function(_0x475286,_0x378279){return new Promise(function(_0x1cd3af,_0x310f74){var _0x49c0f6=nodemailer[_0x3183('0x3')](_0x475286);_0x49c0f6[_0x3183('0x4')](_0x3183('0x5'),inlineBase64());_0x49c0f6[_0x3183('0x6')](_0x378279,function(_0x3bc4ef,_0x563425){if(_0x3bc4ef){_0x310f74(_0x3bc4ef[_0x3183('0x7')]());}else{_0x1cd3af(_0x563425);}});});};EmailSmtp[_0x3183('0x2')][_0x3183('0x8')]=function(_0x54c70b){return new Promise(function(_0x32c407,_0x1db009){var _0x33446b=nodemailer['createTransport'](_0x54c70b);_0x33446b[_0x3183('0x8')](function(_0x27826c,_0x3ed12e){if(_0x27826c){_0x1db009(_0x27826c[_0x3183('0x7')]());}else{if(_0x3ed12e){_0x32c407(_0x3ed12e);}else{_0x1db009(_0x3183('0x9'));}}});});};module[_0x3183('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0x0caf=['toString','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','verify'];(function(_0xba0192,_0x36af3a){var _0x17c536=function(_0x443d3a){while(--_0x443d3a){_0xba0192['push'](_0xba0192['shift']());}};_0x17c536(++_0x36af3a);}(_0x0caf,0x1a7));var _0xf0ca=function(_0x264221,_0xfc86ae){_0x264221=_0x264221-0x0;var _0x522aa5=_0x0caf[_0x264221];return _0x522aa5;};'use strict';var nodemailer=require(_0xf0ca('0x0'));var inlineBase64=require(_0xf0ca('0x1'));function EmailSmtp(){}EmailSmtp[_0xf0ca('0x2')][_0xf0ca('0x3')]=function(_0x2916d7,_0x28abac){return new Promise(function(_0x12011f,_0x1ad847){var _0xe81adf=nodemailer[_0xf0ca('0x4')](_0x2916d7);_0xe81adf[_0xf0ca('0x5')](_0xf0ca('0x6'),inlineBase64());_0xe81adf[_0xf0ca('0x7')](_0x28abac,function(_0x588768,_0x311bfb){if(_0x588768){_0x1ad847(_0x588768['toString']());}else{_0x12011f(_0x311bfb);}});});};EmailSmtp[_0xf0ca('0x2')][_0xf0ca('0x8')]=function(_0x4e895a){return new Promise(function(_0x390132,_0x1439a2){var _0x2226e5=nodemailer[_0xf0ca('0x4')](_0x4e895a);_0x2226e5[_0xf0ca('0x8')](function(_0x41c2a6,_0x2639d5){if(_0x41c2a6){_0x1439a2(_0x41c2a6[_0xf0ca('0x9')]());}else{if(_0x2639d5){_0x390132(_0x2639d5);}else{_0x1439a2(_0xf0ca('0xa'));}}});});};module[_0xf0ca('0xb')]=EmailSmtp;
\ No newline at end of file
index 4844d22..9653b80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9daf=['inReplyTo','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','BodyHTML','<p>Empty\x20message</p>','Attachments','generateXOAuth2Token','auth=Bearer\x20','utf-8','toString','base64','lodash','path','util','node-tnef','../../../config/logger','email','head','value','address','anonymous','generate','@xcally.com','name','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','test','html','replace','includes','<img','attachments','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','body','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','attach','type','attachment','attachment-','format','%s-%s','now','root','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9daf,0x134));var _0xf9da=function(_0x51821c,_0x2e39c5){_0x51821c=_0x51821c-0x0;var _0x20bde8=_0x9daf[_0x51821c];return _0x20bde8;};'use strict';var _=require(_0xf9da('0x0'));var moment=require('moment');var random=require('randomstring');var fs=require('fs');var path=require(_0xf9da('0x1'));var util=require(_0xf9da('0x2'));var tnef=require(_0xf9da('0x3'));var logger=require(_0xf9da('0x4'))(_0xf9da('0x5'));var config=require('../../../config/environment');function getAddress(_0x21119e){var _0x4e4116=_[_0xf9da('0x6')](_0x21119e[_0xf9da('0x7')]);return _0x4e4116&&_0x4e4116[_0xf9da('0x8')]?_0x4e4116[_0xf9da('0x8')]:_0xf9da('0x9')+random[_0xf9da('0xa')](0x6)+_0xf9da('0xb');}function getFirstName(_0x1f9054){var _0x3c2fce=_[_0xf9da('0x6')](_0x1f9054['value']);if(_0x3c2fce&&_0x3c2fce[_0xf9da('0xc')]){if(_0x3c2fce[_0xf9da('0xc')]==_0x3c2fce[_0xf9da('0x8')]){return _0x3c2fce[_0xf9da('0xc')]['substring'](0x0,_0x3c2fce[_0xf9da('0xc')][_0xf9da('0xd')]('@'));}var _0x935c48=_0x3c2fce[_0xf9da('0xc')][_0xf9da('0xe')](/\s+/);return _0x935c48[_0xf9da('0xf')]>0x1?_0x935c48[_0xf9da('0x10')](0x0,-0x1)[_0xf9da('0x11')]('\x20'):_0x3c2fce[_0xf9da('0xc')];}return _0xf9da('0x12');}function getLastName(_0x2829d7){var _0x5dff6f=_['head'](_0x2829d7[_0xf9da('0x7')]);if(_0x5dff6f&&_0x5dff6f[_0xf9da('0xc')]){var _0x426f9d=_0x5dff6f['name'][_0xf9da('0xe')](/\s+/);return _0x426f9d[_0xf9da('0xf')]>0x1?_0x426f9d[_0xf9da('0x13')]():'';}return'';}function getMails(_0x4ef590,_0x26844b){var _0x4263ee='';for(var _0x2b2234=0x0;_0x2b2234<_0x26844b[_0xf9da('0x7')][_0xf9da('0xf')];_0x2b2234+=0x1){if(_0x26844b[_0xf9da('0x7')][_0x2b2234]['address']!==_0x4ef590){if(!_[_0xf9da('0x14')](_0x4263ee)){_0x4263ee+=',';}_0x4263ee+=_0x26844b[_0xf9da('0x7')][_0x2b2234][_0xf9da('0xc')]||_0x26844b[_0xf9da('0x7')][_0x2b2234][_0xf9da('0x8')]||'';_0x4263ee+='\x20<';_0x4263ee+=_0x26844b[_0xf9da('0x7')][_0x2b2234][_0xf9da('0x8')]?_0x26844b[_0xf9da('0x7')][_0x2b2234][_0xf9da('0x8')]:_0xf9da('0x9')+random[_0xf9da('0xa')](0x6)+_0xf9da('0xb');_0x4263ee+='>';}}return _0x4263ee;}function parseEmail(_0xeb0305,_0x5da137,_0x27bf96){if(_0x5da137['html']){var _0x1d6001=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1d6001[_0xf9da('0x15')](_0x5da137[_0xf9da('0x16')])){_0x5da137['html']=_0x5da137[_0xf9da('0x16')][_0xf9da('0x17')](_0x1d6001,'');}if(_0x5da137['html'][_0xf9da('0x18')](_0xf9da('0x19'))){var _0x33fbb8=[];_0x5da137[_0xf9da('0x1a')]['forEach'](_0x3eba04=>{_0x33fbb8[_0xf9da('0x1b')](_0x3eba04[_0xf9da('0x1c')]);});var _0x5087ba=/<img.*? _SRC(.*?)[^>]+>/g;var _0x26b32c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x2588e0=_0x5da137[_0xf9da('0x16')][_0xf9da('0x17')](_0x26b32c,'_SRC');var _0x53d407=_0x2588e0[_0xf9da('0x17')](_0x5087ba,'_IMG');for(let _0x542f20=0x0;_0x542f20<_0x33fbb8['length'];_0x542f20++){var _0x57e484=_0x53d407[_0xf9da('0x17')](_0xf9da('0x1d'),_0xf9da('0x1e')+_0x33fbb8[_0x542f20]+'\x20]</span>');_0x53d407=_0x57e484;}_0x5da137[_0xf9da('0x16')]=_0x53d407;}_0x27bf96[_0xf9da('0x1f')]=_0x5da137[_0xf9da('0x16')];}else{_0x27bf96[_0xf9da('0x1f')]=_0x5da137['textAsHtml'];}if(_0x27bf96[_0xf9da('0x1f')]){_0x27bf96['body']=_0x27bf96['body'][_0xf9da('0x17')](/<a\s+/gi,_0xf9da('0x20'));}if(_0x5da137['to']){_0x27bf96[_0xf9da('0x21')]['originTo']=getMails(null,_0x5da137['to']);var _0x5715a0=getMails(_0xeb0305[_0xf9da('0x5')],_0x5da137['to']);if(!_['isEmpty'](_0x5715a0)){_0x27bf96['message']['cc']+=_0x5715a0;}}if(_0x5da137['cc']){_0x27bf96[_0xf9da('0x21')]['originCc']=getMails(null,_0x5da137['cc']);var _0x57069f=getMails(_0xeb0305[_0xf9da('0x5')],_0x5da137['cc']);if(!_[_0xf9da('0x14')](_0x57069f)){if(!_['isEmpty'](_0x27bf96[_0xf9da('0x21')]['cc'])){_0x27bf96[_0xf9da('0x21')]['cc']+=',';}_0x27bf96[_0xf9da('0x21')]['cc']+=_0x57069f;}}if(!_['includes'](_0x27bf96[_0xf9da('0x21')][_0xf9da('0x22')],_0xeb0305[_0xf9da('0x5')])&&!_['includes'](_0x27bf96[_0xf9da('0x21')][_0xf9da('0x23')],_0xeb0305[_0xf9da('0x5')])){_0x27bf96['message']['bcc']=_0xeb0305[_0xf9da('0x5')];}if(_0x5da137[_0xf9da('0x1a')]&&_0x5da137[_0xf9da('0x1a')]['length']){_0x27bf96[_0xf9da('0x21')][_0xf9da('0x24')]=_0x5da137[_0xf9da('0x1a')][_0xf9da('0xf')];for(var _0x48bb38=0x0,_0x58b6cb,_0x125805,_0x6d8d83;_0x48bb38<_0x5da137[_0xf9da('0x1a')][_0xf9da('0xf')];_0x48bb38+=0x1){if(_0x5da137['attachments'][_0x48bb38][_0xf9da('0x25')]===_0xf9da('0x26')){_0x6d8d83=_0x5da137[_0xf9da('0x1a')][_0x48bb38][_0xf9da('0x1c')]||_0xf9da('0x27')+_0x48bb38;_0x58b6cb=util[_0xf9da('0x28')](_0xf9da('0x29'),Date[_0xf9da('0x2a')](),_0x6d8d83);_0x125805=path[_0xf9da('0x11')](config[_0xf9da('0x2b')],'server/files/attachments/',_0x58b6cb);fs[_0xf9da('0x2c')](_0x125805,_0x5da137[_0xf9da('0x1a')][_0x48bb38][_0xf9da('0x2d')]);_0x27bf96[_0xf9da('0x21')]['attachments']['push']({'name':_0x6d8d83,'basename':_0x58b6cb,'type':_0x5da137['attachments'][_0x48bb38][_0xf9da('0x2e')],'filepath':_0x125805});}}}if(_0x5da137['headerLines']&&_0x5da137[_0xf9da('0x2f')][_0xf9da('0xf')]>0x0){var _0x2a8f7e=[_0xf9da('0x30'),_0xf9da('0x31'),_0xf9da('0x32')];for(var _0x26755f=0x0;_0x26755f<_0x5da137['headerLines']['length'];_0x26755f++){var _0x4b5ce4=_[_0xf9da('0xd')](_0x2a8f7e,_0x5da137[_0xf9da('0x2f')][_0x26755f][_0xf9da('0x33')]);if(_0x4b5ce4>=0x0){_0x27bf96[_0xf9da('0x34')]=!![];}}}return _0x27bf96;}exports[_0xf9da('0x35')]=function(_0x599a95,_0x105179,_0x1646d1){var _0x18ff7a={'from':getAddress(_0x105179['from']),'firstName':getFirstName(_0x105179[_0xf9da('0x36')]),'lastName':getLastName(_0x105179[_0xf9da('0x36')]),'mapKey':_0xf9da('0x5'),'message':{'from':getMails(_0x599a95[_0xf9da('0x5')],_0x105179['from']),'to':_0x599a95[_0xf9da('0x5')],'cc':'','subject':_0x105179[_0xf9da('0x37')]||'','messageId':_0x105179[_0xf9da('0x38')],'inReplyTo':_0x105179[_0xf9da('0x39')],'sentAt':moment(_0x105179['date'])[_0xf9da('0x28')](_0xf9da('0x3a')),'attach':![],'attachments':[]}};if(!_0x105179[_0xf9da('0x16')]&&!_0x105179[_0xf9da('0x3b')]){var _0x2403cc=_[_0xf9da('0x3c')](_0x105179[_0xf9da('0x1a')],{'contentType':_0xf9da('0x3d')});if(_0x2403cc[_0xf9da('0xf')]){logger[_0xf9da('0x3e')](util[_0xf9da('0x28')](_0xf9da('0x3f'),_0x105179[_0xf9da('0x38')]));tnef['parseBuffer'](_[_0xf9da('0x40')](_0x2403cc)[_0xf9da('0x2d')],function(_0xdc5c62,_0x12205a){if(_0x12205a){_0x105179[_0xf9da('0x16')]=_0x12205a[_0xf9da('0x41')]||_0xf9da('0x42');if(_0x12205a[_0xf9da('0x43')]){for(var _0x1f28a0=0x0;_0x1f28a0<_0x12205a[_0xf9da('0x43')][_0xf9da('0xf')];_0x1f28a0++){var _0x2efdca=_0x12205a['Attachments'][_0x1f28a0];_0x18ff7a['message'][_0xf9da('0x1a')]['push']({'filename':_0x2efdca['Title'],'content':Buffer['from'](_0x2efdca['Data'])});}}}_0x1646d1(parseEmail(_0x599a95,_0x105179,_0x18ff7a));});}else{_0x105179['html']=_0xf9da('0x42');_0x1646d1(parseEmail(_0x599a95,_0x105179,_0x18ff7a));}}else{_0x1646d1(parseEmail(_0x599a95,_0x105179,_0x18ff7a));}};exports[_0xf9da('0x44')]=function(_0x456ae3,_0x504d80){var _0xd058b8=['user='+(_0x504d80||''),_0xf9da('0x45')+_0x456ae3,'',''];return Buffer['from'](_0xd058b8['join']('\ 1'),_0xf9da('0x46'))[_0xf9da('0x47')](_0xf9da('0x48'));};
\ No newline at end of file
+var _0x3ee3=['<img','attachments','forEach','push','filename','replace','_SRC','_IMG','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','includes','bcc','type','attachment','attachment-','format','%s-%s','root','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Title','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','length','join','Anonymous','isEmpty','html','test'];(function(_0x2637ac,_0x377857){var _0x4a5758=function(_0x5d5043){while(--_0x5d5043){_0x2637ac['push'](_0x2637ac['shift']());}};_0x4a5758(++_0x377857);}(_0x3ee3,0x1d9));var _0x33ee=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x3ee3[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x33ee('0x0'));var moment=require(_0x33ee('0x1'));var random=require(_0x33ee('0x2'));var fs=require('fs');var path=require(_0x33ee('0x3'));var util=require(_0x33ee('0x4'));var tnef=require(_0x33ee('0x5'));var logger=require(_0x33ee('0x6'))(_0x33ee('0x7'));var config=require('../../../config/environment');function getAddress(_0x4a8622){var _0x2921ab=_[_0x33ee('0x8')](_0x4a8622[_0x33ee('0x9')]);return _0x2921ab&&_0x2921ab[_0x33ee('0xa')]?_0x2921ab[_0x33ee('0xa')]:_0x33ee('0xb')+random[_0x33ee('0xc')](0x6)+_0x33ee('0xd');}function getFirstName(_0x568cae){var _0x213659=_['head'](_0x568cae[_0x33ee('0x9')]);if(_0x213659&&_0x213659['name']){if(_0x213659['name']==_0x213659['address']){return _0x213659[_0x33ee('0xe')][_0x33ee('0xf')](0x0,_0x213659['name'][_0x33ee('0x10')]('@'));}var _0x246989=_0x213659[_0x33ee('0xe')][_0x33ee('0x11')](/\s+/);return _0x246989[_0x33ee('0x12')]>0x1?_0x246989['slice'](0x0,-0x1)[_0x33ee('0x13')]('\x20'):_0x213659[_0x33ee('0xe')];}return _0x33ee('0x14');}function getLastName(_0x4d0cec){var _0x43fb57=_[_0x33ee('0x8')](_0x4d0cec[_0x33ee('0x9')]);if(_0x43fb57&&_0x43fb57[_0x33ee('0xe')]){var _0x757a0=_0x43fb57[_0x33ee('0xe')]['split'](/\s+/);return _0x757a0[_0x33ee('0x12')]>0x1?_0x757a0['pop']():'';}return'';}function getMails(_0x19f993,_0x4e72e9){var _0x2b79d1='';for(var _0x1ef46e=0x0;_0x1ef46e<_0x4e72e9['value'][_0x33ee('0x12')];_0x1ef46e+=0x1){if(_0x4e72e9[_0x33ee('0x9')][_0x1ef46e]['address']!==_0x19f993){if(!_[_0x33ee('0x15')](_0x2b79d1)){_0x2b79d1+=',';}_0x2b79d1+=_0x4e72e9[_0x33ee('0x9')][_0x1ef46e][_0x33ee('0xe')]||_0x4e72e9[_0x33ee('0x9')][_0x1ef46e]['address']||'';_0x2b79d1+='\x20<';_0x2b79d1+=_0x4e72e9[_0x33ee('0x9')][_0x1ef46e][_0x33ee('0xa')]?_0x4e72e9['value'][_0x1ef46e][_0x33ee('0xa')]:_0x33ee('0xb')+random['generate'](0x6)+_0x33ee('0xd');_0x2b79d1+='>';}}return _0x2b79d1;}function parseEmail(_0x13c451,_0xe1ada6,_0x367464){if(_0xe1ada6[_0x33ee('0x16')]){var _0x557496=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x557496[_0x33ee('0x17')](_0xe1ada6[_0x33ee('0x16')])){_0xe1ada6['html']=_0xe1ada6[_0x33ee('0x16')]['replace'](_0x557496,'');}if(_0xe1ada6[_0x33ee('0x16')]['includes'](_0x33ee('0x18'))){var _0xdc0db1=[];_0xe1ada6[_0x33ee('0x19')][_0x33ee('0x1a')](_0x327b81=>{_0xdc0db1[_0x33ee('0x1b')](_0x327b81[_0x33ee('0x1c')]);});var _0x31fd90=/<img.*? _SRC(.*?)[^>]+>/g;var _0x53371e=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0xa43b9c=_0xe1ada6[_0x33ee('0x16')][_0x33ee('0x1d')](_0x53371e,_0x33ee('0x1e'));var _0x4008f7=_0xa43b9c[_0x33ee('0x1d')](_0x31fd90,_0x33ee('0x1f'));for(let _0x54ee59=0x0;_0x54ee59<_0xdc0db1[_0x33ee('0x12')];_0x54ee59++){var _0x44e965=_0x4008f7[_0x33ee('0x1d')](_0x33ee('0x1f'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0xdc0db1[_0x54ee59]+'\x20]</span>');_0x4008f7=_0x44e965;}_0xe1ada6[_0x33ee('0x16')]=_0x4008f7;}_0x367464['body']=_0xe1ada6[_0x33ee('0x16')];}else{_0x367464[_0x33ee('0x20')]=_0xe1ada6[_0x33ee('0x21')];}if(_0x367464[_0x33ee('0x20')]){_0x367464[_0x33ee('0x20')]=_0x367464[_0x33ee('0x20')][_0x33ee('0x1d')](/<a\s+/gi,_0x33ee('0x22'));}if(_0xe1ada6['to']){_0x367464[_0x33ee('0x23')][_0x33ee('0x24')]=getMails(null,_0xe1ada6['to']);var _0x5cdf3f=getMails(_0x13c451[_0x33ee('0x7')],_0xe1ada6['to']);if(!_['isEmpty'](_0x5cdf3f)){_0x367464['message']['cc']+=_0x5cdf3f;}}if(_0xe1ada6['cc']){_0x367464[_0x33ee('0x23')][_0x33ee('0x25')]=getMails(null,_0xe1ada6['cc']);var _0x19a029=getMails(_0x13c451['email'],_0xe1ada6['cc']);if(!_[_0x33ee('0x15')](_0x19a029)){if(!_[_0x33ee('0x15')](_0x367464[_0x33ee('0x23')]['cc'])){_0x367464[_0x33ee('0x23')]['cc']+=',';}_0x367464[_0x33ee('0x23')]['cc']+=_0x19a029;}}if(!_[_0x33ee('0x26')](_0x367464[_0x33ee('0x23')][_0x33ee('0x24')],_0x13c451[_0x33ee('0x7')])&&!_[_0x33ee('0x26')](_0x367464[_0x33ee('0x23')][_0x33ee('0x25')],_0x13c451[_0x33ee('0x7')])){_0x367464[_0x33ee('0x23')][_0x33ee('0x27')]=_0x13c451['email'];}if(_0xe1ada6[_0x33ee('0x19')]&&_0xe1ada6['attachments']['length']){_0x367464['message']['attach']=_0xe1ada6[_0x33ee('0x19')][_0x33ee('0x12')];for(var _0x2e1f47=0x0,_0x17c5d1,_0x330d20,_0x355324;_0x2e1f47<_0xe1ada6[_0x33ee('0x19')][_0x33ee('0x12')];_0x2e1f47+=0x1){if(_0xe1ada6[_0x33ee('0x19')][_0x2e1f47][_0x33ee('0x28')]===_0x33ee('0x29')){_0x355324=_0xe1ada6['attachments'][_0x2e1f47][_0x33ee('0x1c')]||_0x33ee('0x2a')+_0x2e1f47;_0x17c5d1=util[_0x33ee('0x2b')](_0x33ee('0x2c'),Date['now'](),_0x355324);_0x330d20=path['join'](config[_0x33ee('0x2d')],'server/files/attachments/',_0x17c5d1);fs[_0x33ee('0x2e')](_0x330d20,_0xe1ada6[_0x33ee('0x19')][_0x2e1f47][_0x33ee('0x2f')]);_0x367464['message'][_0x33ee('0x19')][_0x33ee('0x1b')]({'name':_0x355324,'basename':_0x17c5d1,'type':_0xe1ada6[_0x33ee('0x19')][_0x2e1f47][_0x33ee('0x30')],'filepath':_0x330d20});}}}if(_0xe1ada6[_0x33ee('0x31')]&&_0xe1ada6[_0x33ee('0x31')][_0x33ee('0x12')]>0x0){var _0x228069=[_0x33ee('0x32'),_0x33ee('0x33'),_0x33ee('0x34')];for(var _0x5571f6=0x0;_0x5571f6<_0xe1ada6[_0x33ee('0x31')][_0x33ee('0x12')];_0x5571f6++){var _0x2258b0=_[_0x33ee('0x10')](_0x228069,_0xe1ada6[_0x33ee('0x31')][_0x5571f6][_0x33ee('0x35')]);if(_0x2258b0>=0x0){_0x367464[_0x33ee('0x36')]=!![];}}}return _0x367464;}exports['parser']=function(_0x5e4ec6,_0x4a526f,_0x1903ca){var _0x22585a={'from':getAddress(_0x4a526f[_0x33ee('0x37')]),'firstName':getFirstName(_0x4a526f[_0x33ee('0x37')]),'lastName':getLastName(_0x4a526f['from']),'mapKey':_0x33ee('0x7'),'message':{'from':getMails(_0x5e4ec6[_0x33ee('0x7')],_0x4a526f[_0x33ee('0x37')]),'to':_0x5e4ec6[_0x33ee('0x7')],'cc':'','subject':_0x4a526f['subject']||'','messageId':_0x4a526f[_0x33ee('0x38')],'inReplyTo':_0x4a526f[_0x33ee('0x39')],'sentAt':moment(_0x4a526f['date'])[_0x33ee('0x2b')](_0x33ee('0x3a')),'attach':![],'attachments':[]}};if(!_0x4a526f[_0x33ee('0x16')]&&!_0x4a526f[_0x33ee('0x21')]){var _0x1359e7=_['filter'](_0x4a526f[_0x33ee('0x19')],{'contentType':_0x33ee('0x3b')});if(_0x1359e7[_0x33ee('0x12')]){logger['info'](util['format'](_0x33ee('0x3c'),_0x4a526f[_0x33ee('0x38')]));tnef[_0x33ee('0x3d')](_[_0x33ee('0x3e')](_0x1359e7)[_0x33ee('0x2f')],function(_0x1b3f39,_0x328538){if(_0x328538){_0x4a526f[_0x33ee('0x16')]=_0x328538['BodyHTML']||_0x33ee('0x3f');if(_0x328538[_0x33ee('0x40')]){for(var _0x29388a=0x0;_0x29388a<_0x328538[_0x33ee('0x40')][_0x33ee('0x12')];_0x29388a++){var _0x188f4e=_0x328538[_0x33ee('0x40')][_0x29388a];_0x22585a[_0x33ee('0x23')][_0x33ee('0x19')][_0x33ee('0x1b')]({'filename':_0x188f4e[_0x33ee('0x41')],'content':Buffer['from'](_0x188f4e['Data'])});}}}_0x1903ca(parseEmail(_0x5e4ec6,_0x4a526f,_0x22585a));});}else{_0x4a526f[_0x33ee('0x16')]=_0x33ee('0x3f');_0x1903ca(parseEmail(_0x5e4ec6,_0x4a526f,_0x22585a));}}else{_0x1903ca(parseEmail(_0x5e4ec6,_0x4a526f,_0x22585a));}};exports[_0x33ee('0x42')]=function(_0x1bb4ce,_0x3dad22){var _0x4dbcd3=[_0x33ee('0x43')+(_0x3dad22||''),_0x33ee('0x44')+_0x1bb4ce,'',''];return Buffer['from'](_0x4dbcd3[_0x33ee('0x13')]('\ 1'),_0x33ee('0x45'))['toString'](_0x33ee('0x46'));};
\ No newline at end of file
index d304f3b..203e8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc70=['active','Imap','Smtp','exports','name','key','SERV'];(function(_0x687ddc,_0x2092fa){var _0x441991=function(_0x49c6a6){while(--_0x49c6a6){_0x687ddc['push'](_0x687ddc['shift']());}};_0x441991(++_0x2092fa);}(_0xfc70,0xb3));var _0x0fc7=function(_0x1d0aa5,_0x2c1683){_0x1d0aa5=_0x1d0aa5-0x0;var _0x5be57f=_0xfc70[_0x1d0aa5];return _0x5be57f;};'use strict';var _=require('lodash');function MailAccount(_0x6f9cb6){this['id']=_0x6f9cb6['id']||0x0;this[_0x0fc7('0x0')]=_0x6f9cb6[_0x0fc7('0x0')]||'Service';this['key']=_0x6f9cb6[_0x0fc7('0x1')]||_0x0fc7('0x2');this['active']=_0x6f9cb6[_0x0fc7('0x3')]||![];this[_0x0fc7('0x4')]=_0x6f9cb6['Imap']||[];this[_0x0fc7('0x5')]=_0x6f9cb6[_0x0fc7('0x5')]||[];}module[_0x0fc7('0x6')]=MailAccount;
\ No newline at end of file
+var _0x93a8=['Smtp','name','Service','key','SERV','active','Imap'];(function(_0x1dd83b,_0xb402d){var _0x2bc75f=function(_0x547b4d){while(--_0x547b4d){_0x1dd83b['push'](_0x1dd83b['shift']());}};_0x2bc75f(++_0xb402d);}(_0x93a8,0x6a));var _0x893a=function(_0x21181a,_0x2641d1){_0x21181a=_0x21181a-0x0;var _0x380d95=_0x93a8[_0x21181a];return _0x380d95;};'use strict';var _=require('lodash');function MailAccount(_0x29933b){this['id']=_0x29933b['id']||0x0;this[_0x893a('0x0')]=_0x29933b['name']||_0x893a('0x1');this[_0x893a('0x2')]=_0x29933b[_0x893a('0x2')]||_0x893a('0x3');this[_0x893a('0x4')]=_0x29933b[_0x893a('0x4')]||![];this['Imap']=_0x29933b[_0x893a('0x5')]||[];this[_0x893a('0x6')]=_0x29933b[_0x893a('0x6')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 946bbbd..02e0928 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x417f=['../model/mailAccount','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','merge','exports','lodash'];(function(_0x3ed203,_0x4e3a3c){var _0x558502=function(_0x454c3b){while(--_0x454c3b){_0x3ed203['push'](_0x3ed203['shift']());}};_0x558502(++_0x4e3a3c);}(_0x417f,0x1f3));var _0xf417=function(_0x946135,_0xa44a75){_0x946135=_0x946135-0x0;var _0x2ce758=_0x417f[_0x946135];return _0x2ce758;};'use strict';var _=require(_0xf417('0x0'));var MailAccount=require(_0xf417('0x1'));var Realtime=function(){this[_0xf417('0x2')]={};};function freeIsNotKey(_0x2ba1a2,_0x19e9f6,_0x5e0d47){var _0x47a674=_['mapKeys'](_0x2ba1a2,function(_0x25f064,_0x3b749b){return _0x25f064[_0x5e0d47];});for(var _0x35c969 in _0x19e9f6){if(_0x19e9f6[_0xf417('0x3')](_0x35c969)){if(!_0x47a674[_0x35c969]){delete _0x19e9f6[_0x35c969];}}}}Realtime[_0xf417('0x4')][_0xf417('0x5')]=function(_0x2d4bb7,_0x2fb51a){for(var _0x2dd26d in _0x2fb51a){if(_0x2d4bb7[_0xf417('0x3')](_0x2dd26d)){_0x2d4bb7[_0x2dd26d]=_0x2fb51a[_0x2dd26d];}}};Realtime[_0xf417('0x4')][_0xf417('0x6')]=function(){var _0x41cf69=this;return function(_0x5ad5b6){if(_0x5ad5b6){freeIsNotKey(_0x5ad5b6,_0x41cf69[_0xf417('0x2')],'id');for(var _0x49ddaf=0x0,_0x67ab46={},_0x30f6c4={};_0x49ddaf<_0x5ad5b6[_0xf417('0x7')];_0x49ddaf+=0x1){_0x67ab46=_0x5ad5b6[_0x49ddaf];if(_['isUndefined'](_0x41cf69[_0xf417('0x2')][_0x67ab46['id']])){_0x41cf69[_0xf417('0x2')][_0x67ab46['id']]=new MailAccount(_0x67ab46);}else{_[_0xf417('0x8')](_0x41cf69[_0xf417('0x2')][_0x67ab46['id']],_0x67ab46);}}}return _0x41cf69[_0xf417('0x2')];};};module[_0xf417('0x9')]=Realtime;
\ No newline at end of file
+var _0x303d=['prototype','initMailAccounts','length','isUndefined','merge','exports','../model/mailAccount','mailAccounts','hasOwnProperty'];(function(_0x2ddcef,_0x580d38){var _0x4de05c=function(_0x5ee8dc){while(--_0x5ee8dc){_0x2ddcef['push'](_0x2ddcef['shift']());}};_0x4de05c(++_0x580d38);}(_0x303d,0xe7));var _0xd303=function(_0x5c33d4,_0x3621db){_0x5c33d4=_0x5c33d4-0x0;var _0x76150=_0x303d[_0x5c33d4];return _0x76150;};'use strict';var _=require('lodash');var MailAccount=require(_0xd303('0x0'));var Realtime=function(){this[_0xd303('0x1')]={};};function freeIsNotKey(_0x56fb64,_0x151ef2,_0x586a13){var _0x5983fe=_['mapKeys'](_0x56fb64,function(_0x39d699,_0x599a10){return _0x39d699[_0x586a13];});for(var _0x50d7ec in _0x151ef2){if(_0x151ef2['hasOwnProperty'](_0x50d7ec)){if(!_0x5983fe[_0x50d7ec]){delete _0x151ef2[_0x50d7ec];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x4030fa,_0x33ba6a){for(var _0x40d40d in _0x33ba6a){if(_0x4030fa[_0xd303('0x2')](_0x40d40d)){_0x4030fa[_0x40d40d]=_0x33ba6a[_0x40d40d];}}};Realtime[_0xd303('0x3')][_0xd303('0x4')]=function(){var _0x43cd3e=this;return function(_0x26b58c){if(_0x26b58c){freeIsNotKey(_0x26b58c,_0x43cd3e[_0xd303('0x1')],'id');for(var _0x825632=0x0,_0x52fa1d={},_0x539e36={};_0x825632<_0x26b58c[_0xd303('0x5')];_0x825632+=0x1){_0x52fa1d=_0x26b58c[_0x825632];if(_[_0xd303('0x6')](_0x43cd3e[_0xd303('0x1')][_0x52fa1d['id']])){_0x43cd3e[_0xd303('0x1')][_0x52fa1d['id']]=new MailAccount(_0x52fa1d);}else{_[_0xd303('0x7')](_0x43cd3e[_0xd303('0x1')][_0x52fa1d['id']],_0x52fa1d);}}}return _0x43cd3e['mailAccounts'];};};module[_0xd303('0x8')]=Realtime;
\ No newline at end of file
index 9b50de2..1893890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac41=['TemplateId','MailServerIn','Imap','CloudProvider','type','data5','MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','provider','service','email','key','ListId'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xac41,0xdd));var _0x1ac4=function(_0x4649fd,_0x1416c6){_0x4649fd=_0x4649fd-0x0;var _0x44fa4d=_0xac41[_0x4649fd];return _0x44fa4d;};'use strict';var client=require(_0x1ac4('0x0'));exports[_0x1ac4('0x1')]=function(){return function(){return client[_0x1ac4('0x2')](_0x1ac4('0x3'),{'options':{'attributes':['id',_0x1ac4('0x4'),_0x1ac4('0x5'),_0x1ac4('0x6'),_0x1ac4('0x7'),'active',_0x1ac4('0x8'),_0x1ac4('0x9'),_0x1ac4('0xa')],'raw':![],'include':[{'model':_0x1ac4('0xb'),'as':_0x1ac4('0xc'),'include':[{'model':_0x1ac4('0xd'),'attributes':['id',_0x1ac4('0x4'),_0x1ac4('0x6'),_0x1ac4('0xe'),_0x1ac4('0xf')],'as':_0x1ac4('0xd')}]},{'model':_0x1ac4('0x10'),'as':_0x1ac4('0x11'),'include':[{'model':_0x1ac4('0xd'),'attributes':['id',_0x1ac4('0x4'),_0x1ac4('0x6'),'type',_0x1ac4('0xf')],'as':'CloudProvider'}]}]},'log':_0x1ac4('0x12')});};};exports[_0x1ac4('0x13')]=function(_0x48d830,_0x395f61){return client[_0x1ac4('0x2')]('NotifyMailAccount',{'account':{'id':_0x48d830},'body':_0x395f61,'log':_0x1ac4('0x14')});};
\ No newline at end of file
+var _0x5e9c=['service','data5','MailServerOut','type','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','provider','email','active','TemplateId','Imap','CloudProvider','name'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x5e9c,0x17c));var _0xc5e9=function(_0x586541,_0x29ed35){_0x586541=_0x586541-0x0;var _0x521dd3=_0x5e9c[_0x586541];return _0x521dd3;};'use strict';var client=require(_0xc5e9('0x0'));exports[_0xc5e9('0x1')]=function(){return function(){return client[_0xc5e9('0x2')](_0xc5e9('0x3'),{'options':{'attributes':['id','name',_0xc5e9('0x4'),'service',_0xc5e9('0x5'),_0xc5e9('0x6'),'key','ListId',_0xc5e9('0x7')],'raw':![],'include':[{'model':'MailServerIn','as':_0xc5e9('0x8'),'include':[{'model':_0xc5e9('0x9'),'attributes':['id',_0xc5e9('0xa'),_0xc5e9('0xb'),'type',_0xc5e9('0xc')],'as':_0xc5e9('0x9')}]},{'model':_0xc5e9('0xd'),'as':'Smtp','include':[{'model':_0xc5e9('0x9'),'attributes':['id',_0xc5e9('0xa'),_0xc5e9('0xb'),_0xc5e9('0xe'),_0xc5e9('0xc')],'as':'CloudProvider'}]}]},'log':'getMailAccount'});};};exports[_0xc5e9('0xf')]=function(_0x10f00e,_0x47cbf1){return client['Request'](_0xc5e9('0x10'),{'account':{'id':_0x10f00e},'body':_0x47cbf1,'log':_0xc5e9('0x10')});};
\ No newline at end of file
index e24786f..db9c6f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa62e=['loginMailFrequency','GetSettings','Request','ShowSetting'];(function(_0x2cec8d,_0x1b65dd){var _0x557486=function(_0x46fc9f){while(--_0x46fc9f){_0x2cec8d['push'](_0x2cec8d['shift']());}};_0x557486(++_0x1b65dd);}(_0xa62e,0x192));var _0xea62=function(_0x32020b,_0x55d30a){_0x32020b=_0x32020b-0x0;var _0x34915b=_0xa62e[_0x32020b];return _0x34915b;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xea62('0x0')](_0xea62('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xea62('0x2')]},'log':_0xea62('0x3')});};
\ No newline at end of file
+var _0x8456=['../client','ShowSetting','loginMailFrequency','GetSettings'];(function(_0x4e3f2f,_0x530b38){var _0x1c9d7a=function(_0x2c08f5){while(--_0x2c08f5){_0x4e3f2f['push'](_0x4e3f2f['shift']());}};_0x1c9d7a(++_0x530b38);}(_0x8456,0x12c));var _0x6845=function(_0x546492,_0x5ad15c){_0x546492=_0x546492-0x0;var _0xdfb683=_0x8456[_0x546492];return _0xdfb683;};'use strict';var client=require(_0x6845('0x0'));exports['getSettings']=function(){return client['Request'](_0x6845('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x6845('0x2')]},'log':_0x6845('0x3')});};
\ No newline at end of file
index b96f5c2..ce01d3a 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(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 31e858a..5f7c120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3545=['exports','http','express','sticky-session','ioredis','../../config/environment','createServer','listen','port','socket.io','websocket','polling','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!'];(function(_0x4bfbda,_0x332198){var _0x3811c8=function(_0x3233c7){while(--_0x3233c7){_0x4bfbda['push'](_0x4bfbda['shift']());}};_0x3811c8(++_0x332198);}(_0x3545,0xd9));var _0x5354=function(_0x330141,_0x1dd290){_0x330141=_0x330141-0x0;var _0x1b68a2=_0x3545[_0x330141];return _0x1b68a2;};'use strict';var _=require('lodash');var http=require(_0x5354('0x0'));var express=require(_0x5354('0x1'));var sticky=require(_0x5354('0x2'));var Redis=require(_0x5354('0x3'));var config=require(_0x5354('0x4'));var app=express();var server=http[_0x5354('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0x5354('0x6')](server,config[_0x5354('0x7')])){var socketio=require(_0x5354('0x8'))(server,{'transports':[_0x5354('0x9'),_0x5354('0xa')]});config['redis']=_['defaults'](config[_0x5354('0xb')],{'host':_0x5354('0xc'),'port':0x18eb});socketio[_0x5354('0xd')](require(_0x5354('0xe'))({'pubClient':new Redis(config[_0x5354('0xb')]),'subClient':new Redis(config[_0x5354('0xb')])}));require(_0x5354('0xf'))[_0x5354('0x10')]();require(_0x5354('0x11'))[_0x5354('0x10')](socketio);require(_0x5354('0x12'))[_0x5354('0x10')](app);require(_0x5354('0x13'))[_0x5354('0x10')](app);}else{server[_0x5354('0x14')](_0x5354('0x15'),function(){console['log'](_0x5354('0x16'),config[_0x5354('0x7')]);});}exports=module[_0x5354('0x17')]=app;
\ No newline at end of file
+var _0x5280=['listen','port','socket.io','websocket','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','ioredis','../../config/environment','createServer'];(function(_0x244b6a,_0x57c79c){var _0x29f866=function(_0x448ff8){while(--_0x448ff8){_0x244b6a['push'](_0x244b6a['shift']());}};_0x29f866(++_0x57c79c);}(_0x5280,0x1c7));var _0x0528=function(_0x41ecfc,_0x54f670){_0x41ecfc=_0x41ecfc-0x0;var _0x4cdc47=_0x5280[_0x41ecfc];return _0x4cdc47;};'use strict';var _=require(_0x0528('0x0'));var http=require(_0x0528('0x1'));var express=require('express');var sticky=require('sticky-session');var Redis=require(_0x0528('0x2'));var config=require(_0x0528('0x3'));var app=express();var server=http[_0x0528('0x4')](app);server['timeout']=0xdbba0;if(sticky[_0x0528('0x5')](server,config[_0x0528('0x6')])){var socketio=require(_0x0528('0x7'))(server,{'transports':[_0x0528('0x8'),'polling']});config[_0x0528('0x9')]=_['defaults'](config[_0x0528('0x9')],{'host':_0x0528('0xa'),'port':0x18eb});socketio[_0x0528('0xb')](require(_0x0528('0xc'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x0528('0x9')])}));require(_0x0528('0xd'))['default']();require('../../config/socketio')['default'](socketio);require('../../config/express')[_0x0528('0xe')](app);require('../../routes')[_0x0528('0xe')](app);}else{server[_0x0528('0xf')](_0x0528('0x10'),function(){console[_0x0528('0x11')](_0x0528('0x12'),config[_0x0528('0x6')]);});}exports=module[_0x0528('0x13')]=app;
\ No newline at end of file
index 33eb0db..d1dbc68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ab8=['request','then','rpc','error','message','result','catch','exports','bluebird','../../config/logger','routing','http','Request'];(function(_0x99868f,_0xbdb8e7){var _0x27a71b=function(_0x41feca){while(--_0x41feca){_0x99868f['push'](_0x99868f['shift']());}};_0x27a71b(++_0xbdb8e7);}(_0x6ab8,0x1cf));var _0x86ab=function(_0x5e65a1,_0x270a4e){_0x5e65a1=_0x5e65a1-0x0;var _0x5b4c64=_0x6ab8[_0x5e65a1];return _0x5b4c64;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x86ab('0x0'));var logger=require(_0x86ab('0x1'))(_0x86ab('0x2'));var client=jayson['client'][_0x86ab('0x3')]({'port':0x2329});client[_0x86ab('0x4')]=function(_0x1230fb,_0x2a80ff){return new BPromise(function(_0x390a18,_0x743ae2){return client[_0x86ab('0x5')](_0x1230fb,_0x2a80ff)[_0x86ab('0x6')](function(_0x38c348){logger['debug'](_0x86ab('0x7'),_0x86ab('0x2'),_0x1230fb,_0x2a80ff,_0x38c348);if(_0x38c348['error']){logger[_0x86ab('0x8')](_0x86ab('0x7'),_0x86ab('0x2'),_0x1230fb,_0x38c348[_0x86ab('0x8')][_0x86ab('0x9')],_0x2a80ff);return _0x743ae2(_0x38c348[_0x86ab('0x8')][_0x86ab('0x9')]);}else{return _0x390a18(_0x38c348[_0x86ab('0xa')]);}})[_0x86ab('0xb')](function(_0x4a0ffa){logger['error'](_0x86ab('0x7'),_0x86ab('0x2'),_0x1230fb,_0x4a0ffa,_0x2a80ff);return _0x743ae2(_0x4a0ffa);});});};module[_0x86ab('0xc')]=client;
\ No newline at end of file
+var _0x5440=['exports','jayson/promise','../../config/logger','routing','then','debug','error','rpc','message','result','catch'];(function(_0x1a6462,_0x1087e2){var _0x11565e=function(_0x1a62f4){while(--_0x1a62f4){_0x1a6462['push'](_0x1a6462['shift']());}};_0x11565e(++_0x1087e2);}(_0x5440,0x109));var _0x0544=function(_0x1b32f8,_0x49a419){_0x1b32f8=_0x1b32f8-0x0;var _0x5f5137=_0x5440[_0x1b32f8];return _0x5f5137;};'use strict';var jayson=require(_0x0544('0x0'));var BPromise=require('bluebird');var logger=require(_0x0544('0x1'))(_0x0544('0x2'));var client=jayson['client']['http']({'port':0x2329});client['Request']=function(_0x57062b,_0x1472ed){return new BPromise(function(_0x1e44f6,_0x30ce7b){return client['request'](_0x57062b,_0x1472ed)[_0x0544('0x3')](function(_0x6a0840){logger[_0x0544('0x4')]('rpc',_0x0544('0x2'),_0x57062b,_0x1472ed,_0x6a0840);if(_0x6a0840[_0x0544('0x5')]){logger[_0x0544('0x5')](_0x0544('0x6'),_0x0544('0x2'),_0x57062b,_0x6a0840[_0x0544('0x5')][_0x0544('0x7')],_0x1472ed);return _0x30ce7b(_0x6a0840[_0x0544('0x5')][_0x0544('0x7')]);}else{return _0x1e44f6(_0x6a0840[_0x0544('0x8')]);}})[_0x0544('0x9')](function(_0x2f64ae){logger['error'](_0x0544('0x6'),'routing',_0x57062b,_0x2f64ae,_0x1472ed);return _0x30ce7b(_0x2f64ae);});});};module[_0x0544('0xa')]=client;
\ No newline at end of file
index 5b8bcbb..094a992 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf667=['initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/interval','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xf667,0x72));var _0x7f66=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0xf667[_0x58dc25];return _0x21b0a7;};'use strict';var BPromise=require(_0x7f66('0x0'));var server=require(_0x7f66('0x1'));var Realtime=require(_0x7f66('0x2'));var user=require('./rpc/user');var interval=require(_0x7f66('0x3'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x7f66('0x4'));var mailQueue=require(_0x7f66('0x5'));var faxQueue=require(_0x7f66('0x6'));var whatsappQueue=require(_0x7f66('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x7f66('0x8')]()[_0x7f66('0x9')](user[_0x7f66('0xa')]())[_0x7f66('0x9')](realtime['initAgents']())[_0x7f66('0x9')](interval[_0x7f66('0xb')]())['then'](realtime[_0x7f66('0xc')]())[_0x7f66('0x9')](openchannelQueue[_0x7f66('0xd')]())['then'](realtime['initOpenchannelQueues']())['then'](chatQueue[_0x7f66('0xe')]())[_0x7f66('0x9')](realtime[_0x7f66('0xf')]())[_0x7f66('0x9')](smsQueue[_0x7f66('0x10')]())[_0x7f66('0x9')](realtime[_0x7f66('0x11')]())['then'](mailQueue[_0x7f66('0x12')]())[_0x7f66('0x9')](realtime[_0x7f66('0x13')]())[_0x7f66('0x9')](faxQueue[_0x7f66('0x14')]())[_0x7f66('0x9')](realtime[_0x7f66('0x15')]())[_0x7f66('0x9')](whatsappQueue[_0x7f66('0x16')]())['then'](realtime[_0x7f66('0x17')]())[_0x7f66('0x9')](function(){return realtime;});}function main(){return server[_0x7f66('0x18')](realtime)[_0x7f66('0x9')](function(_0x4bb7f5){return initRealtime();})['then'](function(_0x151861){return setInterval(initRealtime,0x1388);})[_0x7f66('0x19')](function(_0x370bea){console[_0x7f66('0x1a')](_0x370bea);});}main();
\ No newline at end of file
+var _0x72f6=['./rpc/faxQueue','resolve','initAgents','then','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue'];(function(_0x1d60b3,_0x65a805){var _0x2c5d8c=function(_0x4a252f){while(--_0x4a252f){_0x1d60b3['push'](_0x1d60b3['shift']());}};_0x2c5d8c(++_0x65a805);}(_0x72f6,0x125));var _0x672f=function(_0x153e29,_0x14b328){_0x153e29=_0x153e29-0x0;var _0x1efb66=_0x72f6[_0x153e29];return _0x1efb66;};'use strict';var BPromise=require('bluebird');var server=require(_0x672f('0x0'));var Realtime=require(_0x672f('0x1'));var user=require(_0x672f('0x2'));var interval=require(_0x672f('0x3'));var openchannelQueue=require(_0x672f('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x672f('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x672f('0x6'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x672f('0x7')]()['then'](user['getAgents']())['then'](realtime[_0x672f('0x8')]())[_0x672f('0x9')](interval['getIntervals']())[_0x672f('0x9')](realtime[_0x672f('0xa')]())[_0x672f('0x9')](openchannelQueue[_0x672f('0xb')]())[_0x672f('0x9')](realtime[_0x672f('0xc')]())['then'](chatQueue[_0x672f('0xd')]())[_0x672f('0x9')](realtime[_0x672f('0xe')]())['then'](smsQueue[_0x672f('0xf')]())['then'](realtime['initSmsQueues']())[_0x672f('0x9')](mailQueue[_0x672f('0x10')]())[_0x672f('0x9')](realtime['initMailQueues']())[_0x672f('0x9')](faxQueue[_0x672f('0x11')]())[_0x672f('0x9')](realtime[_0x672f('0x12')]())[_0x672f('0x9')](whatsappQueue[_0x672f('0x13')]())[_0x672f('0x9')](realtime['initWhatsappQueues']())['then'](function(){return realtime;});}function main(){return server[_0x672f('0x14')](realtime)[_0x672f('0x9')](function(_0x2971f5){return initRealtime();})[_0x672f('0x9')](function(_0x142ef6){return setInterval(initRealtime,0x1388);})[_0x672f('0x15')](function(_0x355517){console[_0x672f('0x16')](_0x355517);});}main();
\ No newline at end of file
index 2ad6f3f..b9ecf1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x2e0bfd,_0x27e787){var _0x202119=function(_0x5bc1f2){while(--_0x5bc1f2){_0x2e0bfd['push'](_0x2e0bfd['shift']());}};_0x202119(++_0x27e787);}(_0x814b,0x1a2));var _0xb814=function(_0x12c263,_0x2d9bce){_0x12c263=_0x12c263-0x0;var _0x192cd7=_0x814b[_0x12c263];return _0x192cd7;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x326f,0xd1));var _0xf326=function(_0xc24bb5,_0x535253){_0xc24bb5=_0xc24bb5-0x0;var _0x5f0ca2=_0x326f[_0xc24bb5];return _0x5f0ca2;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index 234a78d..be3bd84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee3=['jayson/promise','client','http','then','error','message','result','catch','SendMail','bluebird'];(function(_0xbf25a4,_0x1cf487){var _0x4ed96c=function(_0x166dc0){while(--_0x166dc0){_0xbf25a4['push'](_0xbf25a4['shift']());}};_0x4ed96c(++_0x1cf487);}(_0x0ee3,0x1cb));var _0x30ee=function(_0x1dc4e9,_0x17f0f1){_0x1dc4e9=_0x1dc4e9-0x0;var _0x64e0f3=_0x0ee3[_0x1dc4e9];return _0x64e0f3;};'use strict';var BPromise=require(_0x30ee('0x0'));var jayson=require(_0x30ee('0x1'));var client=jayson[_0x30ee('0x2')][_0x30ee('0x3')]({'port':0x232b});function request(_0x2de786,_0x1a5714){return new BPromise(function(_0x4546da,_0x484f7b){return client['request'](_0x2de786,_0x1a5714)[_0x30ee('0x4')](function(_0x1a37f7){if(_0x1a37f7[_0x30ee('0x5')]){return _0x484f7b(_0x1a37f7[_0x30ee('0x5')][_0x30ee('0x6')]);}else{return _0x4546da(_0x1a37f7[_0x30ee('0x7')]);}})[_0x30ee('0x8')](function(_0x564775){return _0x484f7b(_0x564775);});});}exports['sendMailMessage']=function(_0x434990,_0x5e4c37){return request(_0x30ee('0x9'),{'account':_0x434990,'message':_0x5e4c37});};
\ No newline at end of file
+var _0xacc9=['result','sendMailMessage','SendMail','bluebird','jayson/promise','http','request','error'];(function(_0x3fda68,_0x47e67e){var _0x2a2ff4=function(_0x155525){while(--_0x155525){_0x3fda68['push'](_0x3fda68['shift']());}};_0x2a2ff4(++_0x47e67e);}(_0xacc9,0x163));var _0x9acc=function(_0x3844ae,_0x2de1f7){_0x3844ae=_0x3844ae-0x0;var _0x4b6d1e=_0xacc9[_0x3844ae];return _0x4b6d1e;};'use strict';var BPromise=require(_0x9acc('0x0'));var jayson=require(_0x9acc('0x1'));var client=jayson['client'][_0x9acc('0x2')]({'port':0x232b});function request(_0x47c5d1,_0x54a3b7){return new BPromise(function(_0x2eff3d,_0x2c0789){return client[_0x9acc('0x3')](_0x47c5d1,_0x54a3b7)['then'](function(_0x475cbf){if(_0x475cbf[_0x9acc('0x4')]){return _0x2c0789(_0x475cbf[_0x9acc('0x4')]['message']);}else{return _0x2eff3d(_0x475cbf[_0x9acc('0x5')]);}})['catch'](function(_0x435e1d){return _0x2c0789(_0x435e1d);});});}exports[_0x9acc('0x6')]=function(_0x2c2f79,_0x3ebf6b){return request(_0x9acc('0x7'),{'account':_0x2c2f79,'message':_0x3ebf6b});};
\ No newline at end of file
index 3773929..ccf0d70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8c4=['mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','mailPause','whatsappCurrentCapacity','busyQueue','chatWaitingInteractions','mailWaitingInteractions','md5','emit','user:save','exports','lodash','moment','ioredis','../../../config/environment','redis','defaults','name','online','voicePause','chatPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity'];(function(_0x4b9ff6,_0x3d8527){var _0x3570dc=function(_0x3dab31){while(--_0x3dab31){_0x4b9ff6['push'](_0x4b9ff6['shift']());}};_0x3570dc(++_0x3d8527);}(_0xd8c4,0x79));var _0x4d8c=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xd8c4[_0x4a747d];return _0x3a5b5c;};'use strict';var _=require(_0x4d8c('0x0'));var moment=require(_0x4d8c('0x1'));var md5=require('md5');var Redis=require(_0x4d8c('0x2'));var config=require(_0x4d8c('0x3'));config[_0x4d8c('0x4')]=_[_0x4d8c('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4d8c('0x4')]));function Agent(_0x46e5a4){this['id']=_0x46e5a4['id']||0x0;this['name']=_0x46e5a4[_0x4d8c('0x6')]||'';this[_0x4d8c('0x7')]=_0x46e5a4['online']||!![];this['voicePause']=_0x46e5a4[_0x4d8c('0x8')]||![];this[_0x4d8c('0x9')]=_0x46e5a4[_0x4d8c('0x9')]||![];this['mailPause']=_0x46e5a4['mailPause']||![];this[_0x4d8c('0xa')]=_0x46e5a4[_0x4d8c('0xa')]||![];this['smsPause']=_0x46e5a4[_0x4d8c('0xb')]||![];this[_0x4d8c('0xc')]=_0x46e5a4[_0x4d8c('0xc')]||![];this[_0x4d8c('0xd')]='unknown';this[_0x4d8c('0xe')]=0x0;this['chatCapacity']=_0x46e5a4[_0x4d8c('0xf')]||0x0;this[_0x4d8c('0x10')]=0x0;this[_0x4d8c('0x11')]=_0x4d8c('0x12');this[_0x4d8c('0x13')]=0x0;this[_0x4d8c('0x14')]=_0x46e5a4[_0x4d8c('0x14')]||0x0;this[_0x4d8c('0x15')]=0x0;this[_0x4d8c('0x16')]='unknown';this[_0x4d8c('0x17')]=0x0;this[_0x4d8c('0x18')]=_0x46e5a4['faxCapacity']||0x0;this[_0x4d8c('0x19')]=0x0;this['smsStatus']=_0x4d8c('0x12');this[_0x4d8c('0x1a')]=0x0;this[_0x4d8c('0x1b')]=_0x46e5a4['smsCapacity']||0x0;this[_0x4d8c('0x1c')]=0x0;this[_0x4d8c('0x1d')]=_0x4d8c('0x12');this[_0x4d8c('0x1e')]=0x0;this[_0x4d8c('0x1f')]=_0x46e5a4[_0x4d8c('0x1f')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x4d8c('0x20')]=_0x4d8c('0x12');this[_0x4d8c('0x21')]=0x0;this[_0x4d8c('0x22')]=_0x46e5a4[_0x4d8c('0x22')]||0x0;this[_0x4d8c('0x23')]=0x0;this[_0x4d8c('0x24')]=![];this['busyQueue']=undefined;this['md5']='';this['chatWaitingInteractions']={};this[_0x4d8c('0x25')]={};this['mailWaitingInteractions']={};this[_0x4d8c('0x26')]={};this[_0x4d8c('0x27')]={};this[_0x4d8c('0x28')]={};this[_0x4d8c('0x29')]();}Agent[_0x4d8c('0x2a')][_0x4d8c('0x2b')]=function(_0x409184){if(this[_0x409184+_0x4d8c('0x2c')]>0x0){if(this[_0x409184+_0x4d8c('0x2d')]>0x0&&this[_0x409184+'CurrentCapacity']>=this[_0x409184+_0x4d8c('0x2d')]){return _0x4d8c('0x2e');}else{return _0x4d8c('0x2f');}}else{return _0x4d8c('0x30');}};Agent[_0x4d8c('0x2a')][_0x4d8c('0x29')]=function(){var _0x12b67a=[_0x4d8c('0x31'),_0x4d8c('0x32'),_0x4d8c('0x33'),_0x4d8c('0x34'),_0x4d8c('0x35'),_0x4d8c('0x36')];for(var _0x156659=0x0;_0x156659<_0x12b67a[_0x4d8c('0x37')];_0x156659+=0x1){var _0xc96067=this[_0x4d8c('0x2b')](_0x12b67a[_0x156659]);if(this[_0x12b67a[_0x156659]+_0x4d8c('0x38')]!==_0xc96067){this[_0x12b67a[_0x156659]+_0x4d8c('0x39')]=_[_0x4d8c('0x3a')](moment()[_0x4d8c('0x3b')]('x'));}this[_0x12b67a[_0x156659]+_0x4d8c('0x38')]=_0xc96067;}var _0x2003cb={'id':this['id'],'name':this[_0x4d8c('0x6')],'online':this[_0x4d8c('0x7')],'voicePause':this[_0x4d8c('0x8')],'chatPause':this[_0x4d8c('0x9')],'mailPause':this[_0x4d8c('0x3c')],'smsPause':this['smsPause'],'faxPause':this[_0x4d8c('0xa')],'openchannelPause':this['openchannelPause'],'chatStatus':this['chatStatus'],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0x4d8c('0xf')],'chatCurrentCapacity':this[_0x4d8c('0x10')],'mailStatus':this[_0x4d8c('0x11')],'mailStatusTime':this[_0x4d8c('0x13')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x4d8c('0x15')],'faxStatus':this[_0x4d8c('0x16')],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x4d8c('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x4d8c('0x1b')],'smsCurrentCapacity':this[_0x4d8c('0x1c')],'whatsappStatus':this[_0x4d8c('0x1d')],'whatsappStatusTime':this[_0x4d8c('0x1e')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x4d8c('0x3d')],'openchannelStatus':this[_0x4d8c('0x20')],'openchannelStatusTime':this[_0x4d8c('0x21')],'openchannelCapacity':this[_0x4d8c('0x22')],'openchannelCurrentCapacity':this[_0x4d8c('0x23')],'busy':this[_0x4d8c('0x24')],'busyQueue':this[_0x4d8c('0x3e')],'chatWaitingInteractions':this[_0x4d8c('0x3f')],'faxWaitingInteractions':this[_0x4d8c('0x25')],'mailWaitingInteractions':this[_0x4d8c('0x40')],'openchannelWaitingInteractions':this[_0x4d8c('0x26')],'smsWaitingInteractions':this[_0x4d8c('0x27')],'whatsappWaitingInteractions':this[_0x4d8c('0x28')]};var _0x2aec88=md5(JSON['stringify'](_0x2003cb));if(this['md5']!==_0x2aec88){this[_0x4d8c('0x41')]=_0x2aec88;io[_0x4d8c('0x42')](_0x4d8c('0x43'),_0x2003cb);}};module[_0x4d8c('0x44')]=Agent;
\ No newline at end of file
+var _0x56fc=['busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','chat','openchannel','fax','sms','length','Status','StatusTime','toNumber','format','smsPause','faxStatus','smsStatusTime','smsCapacity','whatsappStatus','openchannelStatusTime','openchannelWaitingInteractions','stringify','emit','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity'];(function(_0x35cf6b,_0x13de33){var _0xf92309=function(_0x3dbea7){while(--_0x3dbea7){_0x35cf6b['push'](_0x35cf6b['shift']());}};_0xf92309(++_0x13de33);}(_0x56fc,0xe7));var _0xc56f=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x56fc[_0x5c351c];return _0x26f3b3;};'use strict';var _=require('lodash');var moment=require(_0xc56f('0x0'));var md5=require(_0xc56f('0x1'));var Redis=require(_0xc56f('0x2'));var config=require(_0xc56f('0x3'));config[_0xc56f('0x4')]=_[_0xc56f('0x5')](config[_0xc56f('0x4')],{'host':_0xc56f('0x6'),'port':0x18eb});var io=require(_0xc56f('0x7'))(new Redis(config[_0xc56f('0x4')]));function Agent(_0x52f897){this['id']=_0x52f897['id']||0x0;this[_0xc56f('0x8')]=_0x52f897[_0xc56f('0x8')]||'';this[_0xc56f('0x9')]=_0x52f897['online']||!![];this[_0xc56f('0xa')]=_0x52f897[_0xc56f('0xa')]||![];this[_0xc56f('0xb')]=_0x52f897[_0xc56f('0xb')]||![];this['mailPause']=_0x52f897[_0xc56f('0xc')]||![];this[_0xc56f('0xd')]=_0x52f897['faxPause']||![];this['smsPause']=_0x52f897['smsPause']||![];this[_0xc56f('0xe')]=_0x52f897['openchannelPause']||![];this[_0xc56f('0xf')]=_0xc56f('0x10');this[_0xc56f('0x11')]=0x0;this[_0xc56f('0x12')]=_0x52f897[_0xc56f('0x12')]||0x0;this[_0xc56f('0x13')]=0x0;this[_0xc56f('0x14')]='unknown';this[_0xc56f('0x15')]=0x0;this[_0xc56f('0x16')]=_0x52f897['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']='unknown';this[_0xc56f('0x17')]=0x0;this[_0xc56f('0x18')]=_0x52f897[_0xc56f('0x18')]||0x0;this[_0xc56f('0x19')]=0x0;this[_0xc56f('0x1a')]='unknown';this['smsStatusTime']=0x0;this['smsCapacity']=_0x52f897['smsCapacity']||0x0;this[_0xc56f('0x1b')]=0x0;this['whatsappStatus']=_0xc56f('0x10');this[_0xc56f('0x1c')]=0x0;this[_0xc56f('0x1d')]=_0x52f897[_0xc56f('0x1d')]||0x0;this[_0xc56f('0x1e')]=0x0;this[_0xc56f('0x1f')]='unknown';this['openchannelStatusTime']=0x0;this[_0xc56f('0x20')]=_0x52f897['openchannelCapacity']||0x0;this['openchannelCurrentCapacity']=0x0;this[_0xc56f('0x21')]=![];this[_0xc56f('0x22')]=undefined;this[_0xc56f('0x1')]='';this[_0xc56f('0x23')]={};this[_0xc56f('0x24')]={};this[_0xc56f('0x25')]={};this['openchannelWaitingInteractions']={};this[_0xc56f('0x26')]={};this[_0xc56f('0x27')]={};this[_0xc56f('0x28')]();}Agent[_0xc56f('0x29')][_0xc56f('0x2a')]=function(_0x5be21c){if(this[_0x5be21c+_0xc56f('0x2b')]>0x0){if(this[_0x5be21c+_0xc56f('0x2c')]>0x0&&this[_0x5be21c+_0xc56f('0x2b')]>=this[_0x5be21c+_0xc56f('0x2c')]){return'maxcapacity';}else{return _0xc56f('0x2d');}}else{return _0xc56f('0x2e');}};Agent[_0xc56f('0x29')]['updateRealtime']=function(){var _0x381fd3=['mail',_0xc56f('0x2f'),_0xc56f('0x30'),_0xc56f('0x31'),_0xc56f('0x32'),'whatsapp'];for(var _0x230f00=0x0;_0x230f00<_0x381fd3[_0xc56f('0x33')];_0x230f00+=0x1){var _0x3bed5c=this[_0xc56f('0x2a')](_0x381fd3[_0x230f00]);if(this[_0x381fd3[_0x230f00]+_0xc56f('0x34')]!==_0x3bed5c){this[_0x381fd3[_0x230f00]+_0xc56f('0x35')]=_[_0xc56f('0x36')](moment()[_0xc56f('0x37')]('x'));}this[_0x381fd3[_0x230f00]+_0xc56f('0x34')]=_0x3bed5c;}var _0x35c44e={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0xc56f('0xa')],'chatPause':this['chatPause'],'mailPause':this[_0xc56f('0xc')],'smsPause':this[_0xc56f('0x38')],'faxPause':this[_0xc56f('0xd')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xc56f('0xf')],'chatStatusTime':this[_0xc56f('0x11')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0xc56f('0x13')],'mailStatus':this[_0xc56f('0x14')],'mailStatusTime':this[_0xc56f('0x15')],'mailCapacity':this[_0xc56f('0x16')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0xc56f('0x39')],'faxStatusTime':this[_0xc56f('0x17')],'faxCapacity':this[_0xc56f('0x18')],'faxCurrentCapacity':this[_0xc56f('0x19')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0xc56f('0x3a')],'smsCapacity':this[_0xc56f('0x3b')],'smsCurrentCapacity':this[_0xc56f('0x1b')],'whatsappStatus':this[_0xc56f('0x3c')],'whatsappStatusTime':this[_0xc56f('0x1c')],'whatsappCapacity':this[_0xc56f('0x1d')],'whatsappCurrentCapacity':this[_0xc56f('0x1e')],'openchannelStatus':this[_0xc56f('0x1f')],'openchannelStatusTime':this[_0xc56f('0x3d')],'openchannelCapacity':this[_0xc56f('0x20')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this['busy'],'busyQueue':this[_0xc56f('0x22')],'chatWaitingInteractions':this[_0xc56f('0x23')],'faxWaitingInteractions':this[_0xc56f('0x24')],'mailWaitingInteractions':this['mailWaitingInteractions'],'openchannelWaitingInteractions':this[_0xc56f('0x3e')],'smsWaitingInteractions':this[_0xc56f('0x26')],'whatsappWaitingInteractions':this[_0xc56f('0x27')]};var _0x28c5c8=md5(JSON[_0xc56f('0x3f')](_0x35c44e));if(this['md5']!==_0x28c5c8){this['md5']=_0x28c5c8;io[_0xc56f('0x40')]('user:save',_0x35c44e);}};module[_0xc56f('0x41')]=Agent;
\ No newline at end of file
index 9df5665..fcbcf8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8c4=['lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime','length','online','loggedIn','chatPause','available','paused','stringify','format','chat:queue:%s','emit','chat_queue:save'];(function(_0x23fbd4,_0x14d8d){var _0x59576b=function(_0x17bcb1){while(--_0x17bcb1){_0x23fbd4['push'](_0x23fbd4['shift']());}};_0x59576b(++_0x14d8d);}(_0xa8c4,0x91));var _0x4a8c=function(_0x467ab9,_0x16af40){_0x467ab9=_0x467ab9-0x0;var _0x3362d8=_0xa8c4[_0x467ab9];return _0x3362d8;};'use strict';var _=require(_0x4a8c('0x0'));var md5=require(_0x4a8c('0x1'));var util=require('util');var Redis=require(_0x4a8c('0x2'));var config=require(_0x4a8c('0x3'));config[_0x4a8c('0x4')]=_[_0x4a8c('0x5')](config[_0x4a8c('0x4')],{'host':_0x4a8c('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4a8c('0x4')]));function ChatQueue(_0x1a371f){this['id']=_0x1a371f['id']||0x0;this[_0x4a8c('0x7')]=_0x1a371f[_0x4a8c('0x7')]||'';this[_0x4a8c('0x8')]=_0x1a371f[_0x4a8c('0x8')]||0xa;this[_0x4a8c('0x9')]=_0x1a371f['strategy']||'beepall';this[_0x4a8c('0xa')]=_0x1a371f['Agents'];this[_0x4a8c('0xb')]={};this[_0x4a8c('0xc')]=0x0;this['md5']='';this[_0x4a8c('0xd')]();this['updateRealtime']();}ChatQueue[_0x4a8c('0xe')][_0x4a8c('0xd')]=function(){var _0x1c7a0e=this['mapAgentsId'][_0x4a8c('0xf')];this['mapAgentsId']=_[_0x4a8c('0x10')](this['Agents'],'id');this['mapAgentsId'][_0x4a8c('0xf')]=_0x1c7a0e;};ChatQueue[_0x4a8c('0xe')][_0x4a8c('0x11')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x5f1cf1=0x0;_0x5f1cf1<this[_0x4a8c('0xa')][_0x4a8c('0x12')];_0x5f1cf1+=0x1){if(this[_0x4a8c('0xa')][_0x5f1cf1][_0x4a8c('0x13')]){this[_0x4a8c('0x14')]+=0x1;}if(this[_0x4a8c('0xa')][_0x5f1cf1][_0x4a8c('0x15')]){this['paused']+=0x1;}}this[_0x4a8c('0x16')]=this[_0x4a8c('0x14')]-this[_0x4a8c('0x17')];this[_0x4a8c('0x16')]=this['available']>=0x0?this[_0x4a8c('0x16')]:0x0;var _0x387921={'id':this['id'],'available':this['available'],'loggedIn':this[_0x4a8c('0x14')],'name':this['name'],'paused':this[_0x4a8c('0x17')],'waiting':this['waiting']};var _0x425113=md5(JSON[_0x4a8c('0x18')](_0x387921));if(this[_0x4a8c('0x1')]!==_0x425113){this[_0x4a8c('0x1')]=_0x425113;io['to'](util[_0x4a8c('0x19')](_0x4a8c('0x1a'),_0x387921[_0x4a8c('0x7')]))[_0x4a8c('0x1b')](_0x4a8c('0x1c'),_0x387921);}};module['exports']=ChatQueue;
\ No newline at end of file
+var _0xd94b=['strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','chatPause','available','stringify','md5','chat:queue:%s','exports','lodash','ioredis','defaults','redis','localhost','socket.io-emitter','name','timeout'];(function(_0x17c483,_0xc69535){var _0x112bdb=function(_0x19adb9){while(--_0x19adb9){_0x17c483['push'](_0x17c483['shift']());}};_0x112bdb(++_0xc69535);}(_0xd94b,0x157));var _0xbd94=function(_0x4440f3,_0x3d1418){_0x4440f3=_0x4440f3-0x0;var _0x426de2=_0xd94b[_0x4440f3];return _0x426de2;};'use strict';var _=require(_0xbd94('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xbd94('0x1'));var config=require('../../../config/environment');config['redis']=_[_0xbd94('0x2')](config[_0xbd94('0x3')],{'host':_0xbd94('0x4'),'port':0x18eb});var io=require(_0xbd94('0x5'))(new Redis(config['redis']));function ChatQueue(_0x19f17f){this['id']=_0x19f17f['id']||0x0;this['name']=_0x19f17f[_0xbd94('0x6')]||'';this[_0xbd94('0x7')]=_0x19f17f[_0xbd94('0x7')]||0xa;this[_0xbd94('0x8')]=_0x19f17f['strategy']||_0xbd94('0x9');this[_0xbd94('0xa')]=_0x19f17f[_0xbd94('0xa')];this[_0xbd94('0xb')]={};this[_0xbd94('0xc')]=0x0;this['md5']='';this[_0xbd94('0xd')]();this[_0xbd94('0xe')]();}ChatQueue[_0xbd94('0xf')][_0xbd94('0xd')]=function(){var _0x290948=this['mapAgentsId'][_0xbd94('0x10')];this[_0xbd94('0xb')]=_[_0xbd94('0x11')](this[_0xbd94('0xa')],'id');this[_0xbd94('0xb')]['_rr']=_0x290948;};ChatQueue[_0xbd94('0xf')][_0xbd94('0xe')]=function(){this[_0xbd94('0x12')]=0x0;this[_0xbd94('0x13')]=0x0;for(var _0x55c51b=0x0;_0x55c51b<this[_0xbd94('0xa')]['length'];_0x55c51b+=0x1){if(this[_0xbd94('0xa')][_0x55c51b][_0xbd94('0x14')]){this[_0xbd94('0x12')]+=0x1;}if(this[_0xbd94('0xa')][_0x55c51b][_0xbd94('0x15')]){this[_0xbd94('0x13')]+=0x1;}}this['available']=this['loggedIn']-this['paused'];this[_0xbd94('0x16')]=this[_0xbd94('0x16')]>=0x0?this['available']:0x0;var _0xf0dd67={'id':this['id'],'available':this[_0xbd94('0x16')],'loggedIn':this[_0xbd94('0x12')],'name':this[_0xbd94('0x6')],'paused':this['paused'],'waiting':this['waiting']};var _0x2b76e1=md5(JSON[_0xbd94('0x17')](_0xf0dd67));if(this[_0xbd94('0x18')]!==_0x2b76e1){this[_0xbd94('0x18')]=_0x2b76e1;io['to'](util['format'](_0xbd94('0x19'),_0xf0dd67[_0xbd94('0x6')]))['emit']('chat_queue:save',_0xf0dd67);}};module[_0xbd94('0x1a')]=ChatQueue;
\ No newline at end of file
index e431cf0..46c2b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfea7=['format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util','ioredis','defaults','redis','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','paused','length','online','faxPause','loggedIn','available','stringify'];(function(_0x4d86dc,_0x1b8520){var _0x19b295=function(_0xfc0f73){while(--_0xfc0f73){_0x4d86dc['push'](_0x4d86dc['shift']());}};_0x19b295(++_0x1b8520);}(_0xfea7,0xf5));var _0x7fea=function(_0x5236e1,_0x359d66){_0x5236e1=_0x5236e1-0x0;var _0x32ba3a=_0xfea7[_0x5236e1];return _0x32ba3a;};'use strict';var _=require(_0x7fea('0x0'));var md5=require(_0x7fea('0x1'));var util=require(_0x7fea('0x2'));var Redis=require(_0x7fea('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x7fea('0x4')](config[_0x7fea('0x5')],{'host':_0x7fea('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7fea('0x5')]));function FaxQueue(_0x420281){this['id']=_0x420281['id']||0x0;this[_0x7fea('0x7')]=_0x420281[_0x7fea('0x7')]||'';this['timeout']=_0x420281[_0x7fea('0x8')]||0xa;this['strategy']=_0x420281[_0x7fea('0x9')]||_0x7fea('0xa');this[_0x7fea('0xb')]=_0x420281[_0x7fea('0xb')];this[_0x7fea('0xc')]={};this[_0x7fea('0xd')]=0x0;this[_0x7fea('0x1')]='';this[_0x7fea('0xe')]();this[_0x7fea('0xf')]();}FaxQueue['prototype'][_0x7fea('0xe')]=function(){var _0x1f8c45=this['mapAgentsId'][_0x7fea('0x10')];this['mapAgentsId']=_[_0x7fea('0x11')](this[_0x7fea('0xb')],'id');this['mapAgentsId'][_0x7fea('0x10')]=_0x1f8c45;};FaxQueue['prototype'][_0x7fea('0xf')]=function(){this['loggedIn']=0x0;this[_0x7fea('0x12')]=0x0;for(var _0x12f9bd=0x0;_0x12f9bd<this[_0x7fea('0xb')][_0x7fea('0x13')];_0x12f9bd+=0x1){if(this[_0x7fea('0xb')][_0x12f9bd][_0x7fea('0x14')]){this['loggedIn']+=0x1;}if(this[_0x7fea('0xb')][_0x12f9bd][_0x7fea('0x15')]){this[_0x7fea('0x12')]+=0x1;}}this['available']=this[_0x7fea('0x16')]-this['paused'];this['available']=this[_0x7fea('0x17')]>=0x0?this['available']:0x0;var _0x247111={'id':this['id'],'available':this[_0x7fea('0x17')],'loggedIn':this[_0x7fea('0x16')],'name':this[_0x7fea('0x7')],'paused':this['paused'],'waiting':this[_0x7fea('0xd')]};var _0x4cb141=md5(JSON[_0x7fea('0x18')](_0x247111));if(this['md5']!==_0x4cb141){this[_0x7fea('0x1')]=_0x4cb141;io['to'](util[_0x7fea('0x19')](_0x7fea('0x1a'),_0x247111[_0x7fea('0x7')]))[_0x7fea('0x1b')](_0x7fea('0x1c'),_0x247111);}};module[_0x7fea('0x1d')]=FaxQueue;
\ No newline at end of file
+var _0x098d=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','md5','updateRouting','updateRealtime','_rr','mapAgentsId','loggedIn','faxPause','paused','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','util'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x098d,0x72));var _0xd098=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x098d[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0xd098('0x0'));var md5=require('md5');var util=require(_0xd098('0x1'));var Redis=require(_0xd098('0x2'));var config=require(_0xd098('0x3'));config[_0xd098('0x4')]=_[_0xd098('0x5')](config[_0xd098('0x4')],{'host':_0xd098('0x6'),'port':0x18eb});var io=require(_0xd098('0x7'))(new Redis(config[_0xd098('0x4')]));function FaxQueue(_0x5ce22c){this['id']=_0x5ce22c['id']||0x0;this[_0xd098('0x8')]=_0x5ce22c[_0xd098('0x8')]||'';this['timeout']=_0x5ce22c[_0xd098('0x9')]||0xa;this[_0xd098('0xa')]=_0x5ce22c['strategy']||_0xd098('0xb');this[_0xd098('0xc')]=_0x5ce22c['Agents'];this['mapAgentsId']={};this[_0xd098('0xd')]=0x0;this[_0xd098('0xe')]='';this[_0xd098('0xf')]();this[_0xd098('0x10')]();}FaxQueue['prototype'][_0xd098('0xf')]=function(){var _0x3f8ffd=this['mapAgentsId'][_0xd098('0x11')];this['mapAgentsId']=_['map'](this[_0xd098('0xc')],'id');this[_0xd098('0x12')][_0xd098('0x11')]=_0x3f8ffd;};FaxQueue['prototype'][_0xd098('0x10')]=function(){this[_0xd098('0x13')]=0x0;this['paused']=0x0;for(var _0x1f018f=0x0;_0x1f018f<this[_0xd098('0xc')]['length'];_0x1f018f+=0x1){if(this['Agents'][_0x1f018f]['online']){this['loggedIn']+=0x1;}if(this[_0xd098('0xc')][_0x1f018f][_0xd098('0x14')]){this[_0xd098('0x15')]+=0x1;}}this[_0xd098('0x16')]=this[_0xd098('0x13')]-this['paused'];this['available']=this['available']>=0x0?this[_0xd098('0x16')]:0x0;var _0x3df1b9={'id':this['id'],'available':this[_0xd098('0x16')],'loggedIn':this[_0xd098('0x13')],'name':this[_0xd098('0x8')],'paused':this[_0xd098('0x15')],'waiting':this[_0xd098('0xd')]};var _0x10cddd=md5(JSON[_0xd098('0x17')](_0x3df1b9));if(this['md5']!==_0x10cddd){this[_0xd098('0xe')]=_0x10cddd;io['to'](util[_0xd098('0x18')](_0xd098('0x19'),_0x3df1b9[_0xd098('0x8')]))[_0xd098('0x1a')](_0xd098('0x1b'),_0x3df1b9);}};module[_0xd098('0x1c')]=FaxQueue;
\ No newline at end of file
index 6984531..0fd6d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f1=['name','Intervals'];(function(_0x288641,_0x37d1ea){var _0x4b98e2=function(_0x393a2b){while(--_0x393a2b){_0x288641['push'](_0x288641['shift']());}};_0x4b98e2(++_0x37d1ea);}(_0xd2f1,0x164));var _0x1d2f=function(_0x14cab6,_0x2d6b31){_0x14cab6=_0x14cab6-0x0;var _0x1116a8=_0xd2f1[_0x14cab6];return _0x1116a8;};'use strict';function Interval(_0x1ea25e){this['id']=_0x1ea25e['id']||0x0;this[_0x1d2f('0x0')]=_0x1ea25e[_0x1d2f('0x0')]||'';this[_0x1d2f('0x1')]=_0x1ea25e[_0x1d2f('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x0967=['exports','name','Intervals'];(function(_0xf30651,_0x964c8){var _0x5382a0=function(_0x29d618){while(--_0x29d618){_0xf30651['push'](_0xf30651['shift']());}};_0x5382a0(++_0x964c8);}(_0x0967,0x10f));var _0x7096=function(_0x3c5579,_0x4c0f0e){_0x3c5579=_0x3c5579-0x0;var _0x355464=_0x0967[_0x3c5579];return _0x355464;};'use strict';function Interval(_0x17dd4b){this['id']=_0x17dd4b['id']||0x0;this[_0x7096('0x0')]=_0x17dd4b['name']||'';this[_0x7096('0x1')]=_0x17dd4b[_0x7096('0x1')]||{};}module[_0x7096('0x2')]=Interval;
\ No newline at end of file
index 1089b6b..25e6618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa657=['mapAgentsId','updateRouting','updateRealtime','_rr','map','prototype','loggedIn','length','online','mailPause','paused','available','waiting','format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x23ee52,_0x573027){var _0x23349f=function(_0x3bbfdb){while(--_0x3bbfdb){_0x23ee52['push'](_0x23ee52['shift']());}};_0x23349f(++_0x573027);}(_0xa657,0x8a));var _0x7a65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa657[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7a65('0x0'));var md5=require(_0x7a65('0x1'));var util=require('util');var Redis=require(_0x7a65('0x2'));var config=require(_0x7a65('0x3'));config[_0x7a65('0x4')]=_[_0x7a65('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x7a65('0x6'))(new Redis(config[_0x7a65('0x4')]));function MailQueue(_0xdfde9){this['id']=_0xdfde9['id']||0x0;this[_0x7a65('0x7')]=_0xdfde9[_0x7a65('0x7')]||'';this[_0x7a65('0x8')]=_0xdfde9[_0x7a65('0x8')]||0xa;this[_0x7a65('0x9')]=_0xdfde9['strategy']||_0x7a65('0xa');this[_0x7a65('0xb')]=_0xdfde9[_0x7a65('0xb')];this[_0x7a65('0xc')]={};this['waiting']=0x0;this[_0x7a65('0x1')]='';this[_0x7a65('0xd')]();this[_0x7a65('0xe')]();}MailQueue['prototype'][_0x7a65('0xd')]=function(){var _0x5c4644=this[_0x7a65('0xc')][_0x7a65('0xf')];this[_0x7a65('0xc')]=_[_0x7a65('0x10')](this[_0x7a65('0xb')],'id');this['mapAgentsId'][_0x7a65('0xf')]=_0x5c4644;};MailQueue[_0x7a65('0x11')][_0x7a65('0xe')]=function(){this[_0x7a65('0x12')]=0x0;this['paused']=0x0;for(var _0x24cfec=0x0;_0x24cfec<this[_0x7a65('0xb')][_0x7a65('0x13')];_0x24cfec+=0x1){if(this[_0x7a65('0xb')][_0x24cfec][_0x7a65('0x14')]){this[_0x7a65('0x12')]+=0x1;}if(this['Agents'][_0x24cfec][_0x7a65('0x15')]){this[_0x7a65('0x16')]+=0x1;}}this[_0x7a65('0x17')]=this['loggedIn']-this['paused'];this[_0x7a65('0x17')]=this[_0x7a65('0x17')]>=0x0?this['available']:0x0;var _0x18cc46={'id':this['id'],'available':this['available'],'loggedIn':this[_0x7a65('0x12')],'name':this[_0x7a65('0x7')],'paused':this[_0x7a65('0x16')],'waiting':this[_0x7a65('0x18')]};var _0x3128e6=md5(JSON['stringify'](_0x18cc46));if(this['md5']!==_0x3128e6){this[_0x7a65('0x1')]=_0x3128e6;io['to'](util[_0x7a65('0x19')](_0x7a65('0x1a'),_0x18cc46[_0x7a65('0x7')]))[_0x7a65('0x1b')](_0x7a65('0x1c'),_0x18cc46);}};module[_0x7a65('0x1d')]=MailQueue;
\ No newline at end of file
+var _0x559b=['length','online','loggedIn','mailPause','available','format','emit','mail_queue:save','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','paused'];(function(_0x46bbb4,_0x1f29c8){var _0x5ebc36=function(_0x4cb9fc){while(--_0x4cb9fc){_0x46bbb4['push'](_0x46bbb4['shift']());}};_0x5ebc36(++_0x1f29c8);}(_0x559b,0x14c));var _0xb559=function(_0x19c216,_0x4f6d89){_0x19c216=_0x19c216-0x0;var _0x204b58=_0x559b[_0x19c216];return _0x204b58;};'use strict';var _=require('lodash');var md5=require(_0xb559('0x0'));var util=require(_0xb559('0x1'));var Redis=require('ioredis');var config=require(_0xb559('0x2'));config[_0xb559('0x3')]=_[_0xb559('0x4')](config[_0xb559('0x3')],{'host':_0xb559('0x5'),'port':0x18eb});var io=require(_0xb559('0x6'))(new Redis(config[_0xb559('0x3')]));function MailQueue(_0xcac8af){this['id']=_0xcac8af['id']||0x0;this['name']=_0xcac8af['name']||'';this[_0xb559('0x7')]=_0xcac8af[_0xb559('0x7')]||0xa;this[_0xb559('0x8')]=_0xcac8af['strategy']||_0xb559('0x9');this[_0xb559('0xa')]=_0xcac8af[_0xb559('0xa')];this[_0xb559('0xb')]={};this[_0xb559('0xc')]=0x0;this[_0xb559('0x0')]='';this[_0xb559('0xd')]();this[_0xb559('0xe')]();}MailQueue[_0xb559('0xf')][_0xb559('0xd')]=function(){var _0x4b35ff=this[_0xb559('0xb')]['_rr'];this[_0xb559('0xb')]=_[_0xb559('0x10')](this[_0xb559('0xa')],'id');this[_0xb559('0xb')][_0xb559('0x11')]=_0x4b35ff;};MailQueue[_0xb559('0xf')][_0xb559('0xe')]=function(){this['loggedIn']=0x0;this[_0xb559('0x12')]=0x0;for(var _0x599410=0x0;_0x599410<this[_0xb559('0xa')][_0xb559('0x13')];_0x599410+=0x1){if(this[_0xb559('0xa')][_0x599410][_0xb559('0x14')]){this[_0xb559('0x15')]+=0x1;}if(this['Agents'][_0x599410][_0xb559('0x16')]){this[_0xb559('0x12')]+=0x1;}}this['available']=this[_0xb559('0x15')]-this[_0xb559('0x12')];this[_0xb559('0x17')]=this[_0xb559('0x17')]>=0x0?this[_0xb559('0x17')]:0x0;var _0x39ea8b={'id':this['id'],'available':this[_0xb559('0x17')],'loggedIn':this[_0xb559('0x15')],'name':this['name'],'paused':this[_0xb559('0x12')],'waiting':this[_0xb559('0xc')]};var _0x1000f4=md5(JSON['stringify'](_0x39ea8b));if(this[_0xb559('0x0')]!==_0x1000f4){this[_0xb559('0x0')]=_0x1000f4;io['to'](util[_0xb559('0x18')]('mail:queue:%s',_0x39ea8b['name']))[_0xb559('0x19')](_0xb559('0x1a'),_0x39ea8b);}};module['exports']=MailQueue;
\ No newline at end of file
index 1d759ce..542c06b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xc4aa[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x203b12,_0x428209){var _0x306913=function(_0x577a6f){while(--_0x577a6f){_0x203b12['push'](_0x203b12['shift']());}};_0x306913(++_0x428209);}(_0x814b,0x1a2));var _0xb814=function(_0x3e9ef3,_0x21a7e4){_0x3e9ef3=_0x3e9ef3-0x0;var _0x333748=_0x814b[_0x3e9ef3];return _0x333748;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 98bc13f..c8bb451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984b=['updateRealtime','prototype','_rr','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','emit','sms_queue:save','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting'];(function(_0x5d2bfc,_0xb8606b){var _0x2a737f=function(_0x32da0b){while(--_0x32da0b){_0x5d2bfc['push'](_0x5d2bfc['shift']());}};_0x2a737f(++_0xb8606b);}(_0x984b,0xee));var _0xb984=function(_0x23b3e4,_0x5e8714){_0x23b3e4=_0x23b3e4-0x0;var _0x478939=_0x984b[_0x23b3e4];return _0x478939;};'use strict';var _=require('lodash');var md5=require('md5');var util=require('util');var Redis=require(_0xb984('0x0'));var config=require(_0xb984('0x1'));config[_0xb984('0x2')]=_['defaults'](config['redis'],{'host':_0xb984('0x3'),'port':0x18eb});var io=require(_0xb984('0x4'))(new Redis(config['redis']));function SmsQueue(_0x4f91b1){this['id']=_0x4f91b1['id']||0x0;this[_0xb984('0x5')]=_0x4f91b1[_0xb984('0x5')]||'';this['timeout']=_0x4f91b1[_0xb984('0x6')]||0xa;this[_0xb984('0x7')]=_0x4f91b1['strategy']||_0xb984('0x8');this['Agents']=_0x4f91b1[_0xb984('0x9')];this[_0xb984('0xa')]={};this[_0xb984('0xb')]=0x0;this[_0xb984('0xc')]='';this[_0xb984('0xd')]();this[_0xb984('0xe')]();}SmsQueue[_0xb984('0xf')][_0xb984('0xd')]=function(){var _0x16d46f=this[_0xb984('0xa')][_0xb984('0x10')];this[_0xb984('0xa')]=_['map'](this[_0xb984('0x9')],'id');this['mapAgentsId'][_0xb984('0x10')]=_0x16d46f;};SmsQueue[_0xb984('0xf')]['updateRealtime']=function(){this[_0xb984('0x11')]=0x0;this[_0xb984('0x12')]=0x0;for(var _0x564d24=0x0;_0x564d24<this[_0xb984('0x9')][_0xb984('0x13')];_0x564d24+=0x1){if(this['Agents'][_0x564d24][_0xb984('0x14')]){this[_0xb984('0x11')]+=0x1;}if(this['Agents'][_0x564d24][_0xb984('0x15')]){this['paused']+=0x1;}}this[_0xb984('0x16')]=this[_0xb984('0x11')]-this[_0xb984('0x12')];this[_0xb984('0x16')]=this['available']>=0x0?this[_0xb984('0x16')]:0x0;var _0x35bd75={'id':this['id'],'available':this[_0xb984('0x16')],'loggedIn':this[_0xb984('0x11')],'name':this[_0xb984('0x5')],'paused':this[_0xb984('0x12')],'waiting':this['waiting']};var _0x2492f4=md5(JSON[_0xb984('0x17')](_0x35bd75));if(this[_0xb984('0xc')]!==_0x2492f4){this[_0xb984('0xc')]=_0x2492f4;io['to'](util[_0xb984('0x18')](_0xb984('0x19'),_0x35bd75['name']))[_0xb984('0x1a')](_0xb984('0x1b'),_0x35bd75);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0xfa2b=['strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x2c4b06,_0x2e9683){var _0x341c4d=function(_0x379cef){while(--_0x379cef){_0x2c4b06['push'](_0x2c4b06['shift']());}};_0x341c4d(++_0x2e9683);}(_0xfa2b,0x1b7));var _0xbfa2=function(_0x10278a,_0x233827){_0x10278a=_0x10278a-0x0;var _0x5143e6=_0xfa2b[_0x10278a];return _0x5143e6;};'use strict';var _=require(_0xbfa2('0x0'));var md5=require(_0xbfa2('0x1'));var util=require(_0xbfa2('0x2'));var Redis=require(_0xbfa2('0x3'));var config=require(_0xbfa2('0x4'));config[_0xbfa2('0x5')]=_[_0xbfa2('0x6')](config[_0xbfa2('0x5')],{'host':_0xbfa2('0x7'),'port':0x18eb});var io=require(_0xbfa2('0x8'))(new Redis(config[_0xbfa2('0x5')]));function SmsQueue(_0x2e8f3b){this['id']=_0x2e8f3b['id']||0x0;this[_0xbfa2('0x9')]=_0x2e8f3b[_0xbfa2('0x9')]||'';this[_0xbfa2('0xa')]=_0x2e8f3b[_0xbfa2('0xa')]||0xa;this['strategy']=_0x2e8f3b[_0xbfa2('0xb')]||'beepall';this[_0xbfa2('0xc')]=_0x2e8f3b[_0xbfa2('0xc')];this[_0xbfa2('0xd')]={};this[_0xbfa2('0xe')]=0x0;this[_0xbfa2('0x1')]='';this[_0xbfa2('0xf')]();this[_0xbfa2('0x10')]();}SmsQueue[_0xbfa2('0x11')][_0xbfa2('0xf')]=function(){var _0x4e0f1e=this['mapAgentsId']['_rr'];this[_0xbfa2('0xd')]=_[_0xbfa2('0x12')](this[_0xbfa2('0xc')],'id');this[_0xbfa2('0xd')][_0xbfa2('0x13')]=_0x4e0f1e;};SmsQueue[_0xbfa2('0x11')]['updateRealtime']=function(){this[_0xbfa2('0x14')]=0x0;this[_0xbfa2('0x15')]=0x0;for(var _0x458653=0x0;_0x458653<this[_0xbfa2('0xc')][_0xbfa2('0x16')];_0x458653+=0x1){if(this['Agents'][_0x458653][_0xbfa2('0x17')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x458653][_0xbfa2('0x18')]){this['paused']+=0x1;}}this['available']=this[_0xbfa2('0x14')]-this[_0xbfa2('0x15')];this['available']=this[_0xbfa2('0x19')]>=0x0?this[_0xbfa2('0x19')]:0x0;var _0x28fe6f={'id':this['id'],'available':this[_0xbfa2('0x19')],'loggedIn':this[_0xbfa2('0x14')],'name':this[_0xbfa2('0x9')],'paused':this[_0xbfa2('0x15')],'waiting':this['waiting']};var _0xb805f7=md5(JSON[_0xbfa2('0x1a')](_0x28fe6f));if(this[_0xbfa2('0x1')]!==_0xb805f7){this['md5']=_0xb805f7;io['to'](util[_0xbfa2('0x1b')](_0xbfa2('0x1c'),_0x28fe6f['name']))[_0xbfa2('0x1d')]('sms_queue:save',_0x28fe6f);}};module['exports']=SmsQueue;
\ No newline at end of file
index 9aea23b..7a30bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca1f=['md5','ioredis','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','whatsappPause','available','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash'];(function(_0x432c4b,_0x53fe69){var _0x3cda26=function(_0x3a3f38){while(--_0x3a3f38){_0x432c4b['push'](_0x432c4b['shift']());}};_0x3cda26(++_0x53fe69);}(_0xca1f,0x137));var _0xfca1=function(_0x21c9f1,_0x539121){_0x21c9f1=_0x21c9f1-0x0;var _0xac3118=_0xca1f[_0x21c9f1];return _0xac3118;};'use strict';var _=require(_0xfca1('0x0'));var md5=require(_0xfca1('0x1'));var util=require('util');var Redis=require(_0xfca1('0x2'));var config=require('../../../config/environment');config[_0xfca1('0x3')]=_[_0xfca1('0x4')](config[_0xfca1('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xfca1('0x5'))(new Redis(config[_0xfca1('0x3')]));function WhatsappQueue(_0x30b900){this['id']=_0x30b900['id']||0x0;this[_0xfca1('0x6')]=_0x30b900[_0xfca1('0x6')]||'';this['timeout']=_0x30b900[_0xfca1('0x7')]||0xa;this[_0xfca1('0x8')]=_0x30b900['strategy']||'beepall';this[_0xfca1('0x9')]=_0x30b900[_0xfca1('0x9')];this[_0xfca1('0xa')]={};this[_0xfca1('0xb')]=0x0;this['md5']='';this[_0xfca1('0xc')]();this[_0xfca1('0xd')]();}WhatsappQueue[_0xfca1('0xe')][_0xfca1('0xc')]=function(){var _0x3bffa6=this['mapAgentsId'][_0xfca1('0xf')];this[_0xfca1('0xa')]=_[_0xfca1('0x10')](this[_0xfca1('0x9')],'id');this[_0xfca1('0xa')][_0xfca1('0xf')]=_0x3bffa6;};WhatsappQueue['prototype']['updateRealtime']=function(){this[_0xfca1('0x11')]=0x0;this[_0xfca1('0x12')]=0x0;for(var _0x13e040=0x0;_0x13e040<this['Agents'][_0xfca1('0x13')];_0x13e040+=0x1){if(this[_0xfca1('0x9')][_0x13e040][_0xfca1('0x14')]){this[_0xfca1('0x11')]+=0x1;}if(this[_0xfca1('0x9')][_0x13e040][_0xfca1('0x15')]){this[_0xfca1('0x12')]+=0x1;}}this['available']=this[_0xfca1('0x11')]-this[_0xfca1('0x12')];this['available']=this[_0xfca1('0x16')]>=0x0?this['available']:0x0;var _0x18377e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xfca1('0x11')],'name':this[_0xfca1('0x6')],'paused':this[_0xfca1('0x12')],'waiting':this[_0xfca1('0xb')]};var _0x453bcc=md5(JSON['stringify'](_0x18377e));if(this[_0xfca1('0x1')]!==_0x453bcc){this[_0xfca1('0x1')]=_0x453bcc;io['to'](util['format'](_0xfca1('0x17'),_0x18377e['name']))[_0xfca1('0x18')](_0xfca1('0x19'),_0x18377e);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x21c2=['available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','ioredis','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','prototype','updateRouting','map','_rr','updateRealtime','loggedIn','length','paused'];(function(_0x57da7c,_0x2b3e88){var _0x96871d=function(_0x51bc38){while(--_0x51bc38){_0x57da7c['push'](_0x57da7c['shift']());}};_0x96871d(++_0x2b3e88);}(_0x21c2,0x130));var _0x221c=function(_0x2733e8,_0x10dbd9){_0x2733e8=_0x2733e8-0x0;var _0x1e58ce=_0x21c2[_0x2733e8];return _0x1e58ce;};'use strict';var _=require('lodash');var md5=require('md5');var util=require('util');var Redis=require(_0x221c('0x0'));var config=require('../../../config/environment');config[_0x221c('0x1')]=_[_0x221c('0x2')](config[_0x221c('0x1')],{'host':'localhost','port':0x18eb});var io=require(_0x221c('0x3'))(new Redis(config[_0x221c('0x1')]));function WhatsappQueue(_0x5a0949){this['id']=_0x5a0949['id']||0x0;this[_0x221c('0x4')]=_0x5a0949['name']||'';this['timeout']=_0x5a0949[_0x221c('0x5')]||0xa;this['strategy']=_0x5a0949[_0x221c('0x6')]||_0x221c('0x7');this[_0x221c('0x8')]=_0x5a0949[_0x221c('0x8')];this[_0x221c('0x9')]={};this[_0x221c('0xa')]=0x0;this[_0x221c('0xb')]='';this['updateRouting']();this['updateRealtime']();}WhatsappQueue[_0x221c('0xc')][_0x221c('0xd')]=function(){var _0x44257e=this['mapAgentsId']['_rr'];this[_0x221c('0x9')]=_[_0x221c('0xe')](this[_0x221c('0x8')],'id');this[_0x221c('0x9')][_0x221c('0xf')]=_0x44257e;};WhatsappQueue['prototype'][_0x221c('0x10')]=function(){this[_0x221c('0x11')]=0x0;this['paused']=0x0;for(var _0x19d3bb=0x0;_0x19d3bb<this[_0x221c('0x8')][_0x221c('0x12')];_0x19d3bb+=0x1){if(this[_0x221c('0x8')][_0x19d3bb]['online']){this[_0x221c('0x11')]+=0x1;}if(this[_0x221c('0x8')][_0x19d3bb]['whatsappPause']){this[_0x221c('0x13')]+=0x1;}}this[_0x221c('0x14')]=this[_0x221c('0x11')]-this['paused'];this['available']=this[_0x221c('0x14')]>=0x0?this[_0x221c('0x14')]:0x0;var _0x2489e3={'id':this['id'],'available':this[_0x221c('0x14')],'loggedIn':this[_0x221c('0x11')],'name':this['name'],'paused':this[_0x221c('0x13')],'waiting':this[_0x221c('0xa')]};var _0x666b68=md5(JSON[_0x221c('0x15')](_0x2489e3));if(this[_0x221c('0xb')]!==_0x666b68){this[_0x221c('0xb')]=_0x666b68;io['to'](util[_0x221c('0x16')](_0x221c('0x17'),_0x2489e3[_0x221c('0x4')]))[_0x221c('0x18')](_0x221c('0x19'),_0x2489e3);}};module[_0x221c('0x1a')]=WhatsappQueue;
\ No newline at end of file
index 7278cf9..403786f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x58c11a,_0x10a003){var _0x40cb30=function(_0x53fdbd){while(--_0x53fdbd){_0x58c11a['push'](_0x58c11a['shift']());}};_0x40cb30(++_0x10a003);}(_0xb10b,0x12a));var _0xbb10=function(_0x318309,_0x430ab9){_0x318309=_0x318309-0x0;var _0x4c25ff=_0xb10b[_0x318309];return _0x4c25ff;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'use strict';var 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 175d164..e0a3c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa983=['AddTagsToChatInteraction','addTagsToChatInteraction','../client','updateChatInteraction','addTags','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa983,0xb0));var _0x3a98=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa983[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x3a98('0x0'));exports['update']=function(_0x1ec642,_0x2fea5f){return client['Request']('UpdateChatInteraction',{'body':_0x2fea5f,'options':{'where':{'id':_0x1ec642}},'log':_0x3a98('0x1')});};exports[_0x3a98('0x2')]=function(_0x1269ad,_0x28a645){return client[_0x3a98('0x3')](_0x3a98('0x4'),{'body':_0x28a645,'options':{'where':{'id':_0x1269ad}},'log':_0x3a98('0x5')});};
\ No newline at end of file
+var _0xd246=['UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','../client','update','Request'];(function(_0x3e7771,_0x1162dd){var _0x52f473=function(_0x358eac){while(--_0x358eac){_0x3e7771['push'](_0x3e7771['shift']());}};_0x52f473(++_0x1162dd);}(_0xd246,0x154));var _0x6d24=function(_0x38d3bd,_0x49f837){_0x38d3bd=_0x38d3bd-0x0;var _0x19022c=_0xd246[_0x38d3bd];return _0x19022c;};'use strict';var client=require(_0x6d24('0x0'));exports[_0x6d24('0x1')]=function(_0x42c6e8,_0x57c581){return client[_0x6d24('0x2')](_0x6d24('0x3'),{'body':_0x57c581,'options':{'where':{'id':_0x42c6e8}},'log':_0x6d24('0x4')});};exports[_0x6d24('0x5')]=function(_0x226611,_0x36fc91){return client[_0x6d24('0x2')](_0x6d24('0x6'),{'body':_0x36fc91,'options':{'where':{'id':_0x226611}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 60af648..1b630c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4777=['Request','CreateChatMessage','createChatMessage','../client'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x4777,0x9f));var _0x7477=function(_0x44216d,_0x4938a7){_0x44216d=_0x44216d-0x0;var _0xeca523=_0x4777[_0x44216d];return _0xeca523;};'use strict';var client=require(_0x7477('0x0'));exports['create']=function(_0x3fe51b){return client[_0x7477('0x1')](_0x7477('0x2'),{'body':_0x3fe51b,'log':_0x7477('0x3')});};
\ No newline at end of file
+var _0x55eb=['createChatMessage','../client','Request','CreateChatMessage'];(function(_0x19aee6,_0x51be71){var _0x17bbc5=function(_0x103f6f){while(--_0x103f6f){_0x19aee6['push'](_0x19aee6['shift']());}};_0x17bbc5(++_0x51be71);}(_0x55eb,0x179));var _0xb55e=function(_0x387fac,_0x4c8581){_0x387fac=_0x387fac-0x0;var _0x2814a1=_0x55eb[_0x387fac];return _0x2814a1;};'use strict';var client=require(_0xb55e('0x0'));exports['create']=function(_0x33f1fd){return client[_0xb55e('0x1')](_0xb55e('0x2'),{'body':_0x33f1fd,'log':_0xb55e('0x3')});};
\ No newline at end of file
index 69c1adf..8162419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x812d=['getChatQueues','Request','GetChatQueue','name','timeout','strategy','User','Agents','online','chatPause'];(function(_0x29b435,_0x32e245){var _0x58b9c9=function(_0x52a04a){while(--_0x52a04a){_0x29b435['push'](_0x29b435['shift']());}};_0x58b9c9(++_0x32e245);}(_0x812d,0x6e));var _0xd812=function(_0x4e87f4,_0x31a044){_0x4e87f4=_0x4e87f4-0x0;var _0x132259=_0x812d[_0x4e87f4];return _0x132259;};'use strict';var client=require('../client');exports[_0xd812('0x0')]=function(){return function(){return client[_0xd812('0x1')](_0xd812('0x2'),{'options':{'raw':![],'attributes':['id',_0xd812('0x3'),_0xd812('0x4'),_0xd812('0x5')],'include':[{'model':_0xd812('0x6'),'as':_0xd812('0x7'),'attributes':['id','name',_0xd812('0x8'),_0xd812('0x9')]}]},'log':_0xd812('0x0')});};};
\ No newline at end of file
+var _0x097c=['name','timeout','strategy','User','chatPause','../client','getChatQueues','Request'];(function(_0x17b448,_0x108083){var _0x76d80c=function(_0x132a15){while(--_0x132a15){_0x17b448['push'](_0x17b448['shift']());}};_0x76d80c(++_0x108083);}(_0x097c,0x1d5));var _0xc097=function(_0xb232f2,_0x26b1f7){_0xb232f2=_0xb232f2-0x0;var _0xb52e52=_0x097c[_0xb232f2];return _0xb52e52;};'use strict';var client=require(_0xc097('0x0'));exports[_0xc097('0x1')]=function(){return function(){return client[_0xc097('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0xc097('0x3'),_0xc097('0x4'),_0xc097('0x5')],'include':[{'model':_0xc097('0x6'),'as':'Agents','attributes':['id',_0xc097('0x3'),'online',_0xc097('0x7')]}]},'log':_0xc097('0x1')});};};
\ No newline at end of file
index 2f54ca9..a80efdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1da6=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create'];(function(_0x3ea2cf,_0x269d78){var _0x535f53=function(_0x2d75a3){while(--_0x2d75a3){_0x3ea2cf['push'](_0x3ea2cf['shift']());}};_0x535f53(++_0x269d78);}(_0x1da6,0x7c));var _0x61da=function(_0xca8958,_0x25eed8){_0xca8958=_0xca8958-0x0;var _0x3d7165=_0x1da6[_0xca8958];return _0x3d7165;};'use strict';var client=require(_0x61da('0x0'));exports[_0x61da('0x1')]=function(_0x46c3f7){return client[_0x61da('0x2')](_0x61da('0x3'),{'body':_0x46c3f7,'log':_0x61da('0x3')});};exports[_0x61da('0x4')]=function(_0x39754a,_0xf7a566){return client[_0x61da('0x2')](_0x61da('0x5'),{'body':_0xf7a566,'options':{'where':{'uniqueid':_0x39754a},'order':[['id',_0x61da('0x6')]],'limit':0x1},'log':_0x61da('0x5')});};
\ No newline at end of file
+var _0x5d31=['CreateChatQueueReport','UpdateChatQueueReport','DESC','../client','create'];(function(_0xe87238,_0xb062c3){var _0x531750=function(_0x597a17){while(--_0x597a17){_0xe87238['push'](_0xe87238['shift']());}};_0x531750(++_0xb062c3);}(_0x5d31,0xb7));var _0x15d3=function(_0x4a2b3c,_0xc69f59){_0x4a2b3c=_0x4a2b3c-0x0;var _0x4b081b=_0x5d31[_0x4a2b3c];return _0x4b081b;};'use strict';var client=require(_0x15d3('0x0'));exports[_0x15d3('0x1')]=function(_0x255280){return client['Request'](_0x15d3('0x2'),{'body':_0x255280,'log':_0x15d3('0x2')});};exports['update']=function(_0x19b9b6,_0x526c77){return client['Request'](_0x15d3('0x3'),{'body':_0x526c77,'options':{'where':{'uniqueid':_0x19b9b6},'order':[['id',_0x15d3('0x4')]],'limit':0x1},'log':_0x15d3('0x3')});};
\ No newline at end of file
index 21d37cd..60a65c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x26efac,_0x21ab8a){var _0x8482e4=function(_0x14db32){while(--_0x14db32){_0x26efac['push'](_0x26efac['shift']());}};_0x8482e4(++_0x21ab8a);}(_0x7a54,0x106));var _0x47a5=function(_0x50f316,_0xac9609){_0x50f316=_0x50f316-0x0;var _0x281b16=_0x7a54[_0x50f316];return _0x281b16;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x1d4449,_0x495153){var _0x4dcde3=function(_0x36d549){while(--_0x36d549){_0x1d4449['push'](_0x1d4449['shift']());}};_0x4dcde3(++_0x495153);}(_0x7a54,0x106));var _0x47a5=function(_0x35faf2,_0x422c9c){_0x35faf2=_0x35faf2-0x0;var _0x139bc4=_0x7a54[_0x35faf2];return _0x139bc4;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index 5cb45bc..2c87d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7bf=['CreateFaxMessage','../client','create'];(function(_0x2672e7,_0x297824){var _0x2c5748=function(_0x36c183){while(--_0x36c183){_0x2672e7['push'](_0x2672e7['shift']());}};_0x2c5748(++_0x297824);}(_0xc7bf,0x88));var _0xfc7b=function(_0x4700a1,_0x17428f){_0x4700a1=_0x4700a1-0x0;var _0x1d6661=_0xc7bf[_0x4700a1];return _0x1d6661;};'use strict';var client=require(_0xfc7b('0x0'));exports[_0xfc7b('0x1')]=function(_0x269060){return client['Request'](_0xfc7b('0x2'),{'body':_0x269060,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x5dfc=['Request','createFaxMessage','../client','create'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x5dfc,0x96));var _0xc5df=function(_0x28b0a1,_0x99bd0a){_0x28b0a1=_0x28b0a1-0x0;var _0x21470c=_0x5dfc[_0x28b0a1];return _0x21470c;};'use strict';var client=require(_0xc5df('0x0'));exports[_0xc5df('0x1')]=function(_0x26c7f6){return client[_0xc5df('0x2')]('CreateFaxMessage',{'body':_0x26c7f6,'log':_0xc5df('0x3')});};
\ No newline at end of file
index c3507fb..b6b8823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa05=['timeout','User','online','faxPause','../client','getFaxQueues','name'];(function(_0x5ade35,_0x35cec6){var _0x21d317=function(_0x4369b1){while(--_0x4369b1){_0x5ade35['push'](_0x5ade35['shift']());}};_0x21d317(++_0x35cec6);}(_0xfa05,0x97));var _0x5fa0=function(_0x36e579,_0x4092c3){_0x36e579=_0x36e579-0x0;var _0x1289cf=_0xfa05[_0x36e579];return _0x1289cf;};'use strict';var client=require(_0x5fa0('0x0'));exports[_0x5fa0('0x1')]=function(){return function(){return client['Request']('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x5fa0('0x2'),_0x5fa0('0x3'),'strategy'],'include':[{'model':_0x5fa0('0x4'),'as':'Agents','attributes':['id',_0x5fa0('0x2'),_0x5fa0('0x5'),_0x5fa0('0x6')]}]},'log':_0x5fa0('0x1')});};};
\ No newline at end of file
+var _0xc8f1=['Agents','online','faxPause','getFaxQueues','Request','name','timeout','strategy','User'];(function(_0x39818b,_0x50f436){var _0x414568=function(_0x3953b0){while(--_0x3953b0){_0x39818b['push'](_0x39818b['shift']());}};_0x414568(++_0x50f436);}(_0xc8f1,0x67));var _0x1c8f=function(_0x16b606,_0x42fbc8){_0x16b606=_0x16b606-0x0;var _0x4f21c8=_0xc8f1[_0x16b606];return _0x4f21c8;};'use strict';var client=require('../client');exports['getFaxQueues']=function(){return function(){return client[_0x1c8f('0x0')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x1c8f('0x1'),_0x1c8f('0x2'),_0x1c8f('0x3')],'include':[{'model':_0x1c8f('0x4'),'as':_0x1c8f('0x5'),'attributes':['id',_0x1c8f('0x1'),_0x1c8f('0x6'),_0x1c8f('0x7')]}]},'log':_0x1c8f('0x8')});};};
\ No newline at end of file
index 1e9ed7e..84f4d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f82=['../client','create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC'];(function(_0x528bb5,_0x119c5b){var _0x58e8ca=function(_0x5a8077){while(--_0x5a8077){_0x528bb5['push'](_0x528bb5['shift']());}};_0x58e8ca(++_0x119c5b);}(_0x6f82,0x13b));var _0x26f8=function(_0x3048ea,_0x3838c2){_0x3048ea=_0x3048ea-0x0;var _0x1a13c4=_0x6f82[_0x3048ea];return _0x1a13c4;};'use strict';var client=require(_0x26f8('0x0'));exports[_0x26f8('0x1')]=function(_0x5286cf){return client[_0x26f8('0x2')](_0x26f8('0x3'),{'body':_0x5286cf,'log':_0x26f8('0x3')});};exports[_0x26f8('0x4')]=function(_0x14205d,_0x12f84d){return client[_0x26f8('0x2')](_0x26f8('0x5'),{'body':_0x12f84d,'options':{'where':{'uniqueid':_0x14205d},'order':[['id',_0x26f8('0x6')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0xf26b=['DESC','UpdateFaxQueueReport','create','CreateFaxQueueReport','Request'];(function(_0x341d7a,_0x189e7b){var _0x290d54=function(_0x114a0f){while(--_0x114a0f){_0x341d7a['push'](_0x341d7a['shift']());}};_0x290d54(++_0x189e7b);}(_0xf26b,0x66));var _0xbf26=function(_0x1d29ec,_0x3e7fed){_0x1d29ec=_0x1d29ec-0x0;var _0x2a2bf7=_0xf26b[_0x1d29ec];return _0x2a2bf7;};'use strict';var client=require('../client');exports[_0xbf26('0x0')]=function(_0xc9a3b5){return client['Request']('CreateFaxQueueReport',{'body':_0xc9a3b5,'log':_0xbf26('0x1')});};exports['update']=function(_0x1cc18f,_0x2b9922){return client[_0xbf26('0x2')]('UpdateFaxQueueReport',{'body':_0x2b9922,'options':{'where':{'uniqueid':_0x1cc18f},'order':[['id',_0xbf26('0x3')]],'limit':0x1},'log':_0xbf26('0x4')});};
\ No newline at end of file
index af19046..602c210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab0=['Interval','Intervals','../client','getIntervals','Request','GetInterval','name'];(function(_0x48262a,_0x2660d8){var _0x16f99c=function(_0x109690){while(--_0x109690){_0x48262a['push'](_0x48262a['shift']());}};_0x16f99c(++_0x2660d8);}(_0x4ab0,0x87));var _0x04ab=function(_0x43c9f8,_0x128d84){_0x43c9f8=_0x43c9f8-0x0;var _0x247b4b=_0x4ab0[_0x43c9f8];return _0x247b4b;};'use strict';var client=require(_0x04ab('0x0'));exports[_0x04ab('0x1')]=function(){return function(){return client[_0x04ab('0x2')](_0x04ab('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x04ab('0x4')],'include':[{'model':_0x04ab('0x5'),'as':_0x04ab('0x6'),'attributes':['id',_0x04ab('0x4'),'interval']}]},'log':_0x04ab('0x1')});};};
\ No newline at end of file
+var _0x6282=['interval','getIntervals','../client','Request','GetInterval','name','Interval','Intervals'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x6282,0x162));var _0x2628=function(_0x556345,_0xafb99d){_0x556345=_0x556345-0x0;var _0x266231=_0x6282[_0x556345];return _0x266231;};'use strict';var client=require(_0x2628('0x0'));exports['getIntervals']=function(){return function(){return client[_0x2628('0x1')](_0x2628('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x2628('0x3')],'include':[{'model':_0x2628('0x4'),'as':_0x2628('0x5'),'attributes':['id',_0x2628('0x3'),_0x2628('0x6')]}]},'log':_0x2628('0x7')});};};
\ No newline at end of file
index dec7625..ede46de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['AddTagsToMailInteraction','addTagsToChatInteraction','update','Request','UpdateMailInteraction','updateMailInteraction','addTags'];(function(_0x13f3f8,_0x42939c){var _0x22fa75=function(_0x5e8cad){while(--_0x5e8cad){_0x13f3f8['push'](_0x13f3f8['shift']());}};_0x22fa75(++_0x42939c);}(_0x14a0,0x8e));var _0x014a=function(_0x40b3b9,_0x224db8){_0x40b3b9=_0x40b3b9-0x0;var _0x55d813=_0x14a0[_0x40b3b9];return _0x55d813;};'use strict';var client=require('../client');exports[_0x014a('0x0')]=function(_0x451138,_0x4144ed){return client[_0x014a('0x1')](_0x014a('0x2'),{'body':_0x4144ed,'options':{'where':{'id':_0x451138}},'log':_0x014a('0x3')});};exports[_0x014a('0x4')]=function(_0x521a59,_0x57a522){return client[_0x014a('0x1')](_0x014a('0x5'),{'body':_0x57a522,'options':{'where':{'id':_0x521a59}},'log':_0x014a('0x6')});};
\ No newline at end of file
+var _0x5c3c=['AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','UpdateMailInteraction','updateMailInteraction','addTags','Request'];(function(_0x2afea8,_0x197607){var _0x479ce1=function(_0x4a4a3e){while(--_0x4a4a3e){_0x2afea8['push'](_0x2afea8['shift']());}};_0x479ce1(++_0x197607);}(_0x5c3c,0x132));var _0xc5c3=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x5c3c[_0x47a349];return _0x18ab75;};'use strict';var client=require(_0xc5c3('0x0'));exports[_0xc5c3('0x1')]=function(_0x11705d,_0x32103c){return client['Request'](_0xc5c3('0x2'),{'body':_0x32103c,'options':{'where':{'id':_0x11705d}},'log':_0xc5c3('0x3')});};exports[_0xc5c3('0x4')]=function(_0x2a3649,_0x2535e0){return client[_0xc5c3('0x5')](_0xc5c3('0x6'),{'body':_0x2535e0,'options':{'where':{'id':_0x2a3649}},'log':_0xc5c3('0x7')});};
\ No newline at end of file
index b838d9d..140a3f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c8=['Request','createMailMessage','../client','create'];(function(_0x146653,_0xccf82b){var _0x1172b6=function(_0x1bcedd){while(--_0x1bcedd){_0x146653['push'](_0x146653['shift']());}};_0x1172b6(++_0xccf82b);}(_0xc7c8,0x1ee));var _0x8c7c=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xc7c8[_0x57b54c];return _0x59cc19;};'use strict';var client=require(_0x8c7c('0x0'));exports[_0x8c7c('0x1')]=function(_0x56de5f){return client[_0x8c7c('0x2')]('CreateMailMessage',{'body':_0x56de5f,'log':_0x8c7c('0x3')});};
\ No newline at end of file
+var _0x5bf7=['../client','create','Request','CreateMailMessage'];(function(_0x34423a,_0x5eeca1){var _0xd82e74=function(_0x2cc409){while(--_0x2cc409){_0x34423a['push'](_0x34423a['shift']());}};_0xd82e74(++_0x5eeca1);}(_0x5bf7,0x174));var _0x75bf=function(_0x52c571,_0x380558){_0x52c571=_0x52c571-0x0;var _0x1743d7=_0x5bf7[_0x52c571];return _0x1743d7;};'use strict';var client=require(_0x75bf('0x0'));exports[_0x75bf('0x1')]=function(_0x25c7e6){return client[_0x75bf('0x2')](_0x75bf('0x3'),{'body':_0x25c7e6,'log':'createMailMessage'});};
\ No newline at end of file
index 098fa88..a1f6f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['name','strategy','Agents','getMailQueues','Request','GetMailQueue'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x2e65,0x1e3));var _0x52e6=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x2e65[_0xbd08b4];return _0x314f1e;};'use strict';var client=require('../client');exports[_0x52e6('0x0')]=function(){return function(){return client[_0x52e6('0x1')](_0x52e6('0x2'),{'options':{'raw':![],'attributes':['id',_0x52e6('0x3'),'timeout',_0x52e6('0x4')],'include':[{'model':'User','as':_0x52e6('0x5'),'attributes':['id',_0x52e6('0x3'),'online','mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0xb69c=['name','online','mailPause','../client','getMailQueues','GetMailQueue','timeout','strategy','User','Agents'];(function(_0x1d2195,_0x4b8096){var _0x4962cd=function(_0x301f5a){while(--_0x301f5a){_0x1d2195['push'](_0x1d2195['shift']());}};_0x4962cd(++_0x4b8096);}(_0xb69c,0x1d9));var _0xcb69=function(_0x5cf30e,_0x4b32eb){_0x5cf30e=_0x5cf30e-0x0;var _0x29d12e=_0xb69c[_0x5cf30e];return _0x29d12e;};'use strict';var client=require(_0xcb69('0x0'));exports[_0xcb69('0x1')]=function(){return function(){return client['Request'](_0xcb69('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xcb69('0x3'),_0xcb69('0x4')],'include':[{'model':_0xcb69('0x5'),'as':_0xcb69('0x6'),'attributes':['id',_0xcb69('0x7'),_0xcb69('0x8'),_0xcb69('0x9')]}]},'log':_0xcb69('0x1')});};};
\ No newline at end of file
index 2bad54d..820b1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a52=['create','Request','CreateMailQueueReport','update','../client'];(function(_0x2d1402,_0x249b4f){var _0x9927b2=function(_0x3a94df){while(--_0x3a94df){_0x2d1402['push'](_0x2d1402['shift']());}};_0x9927b2(++_0x249b4f);}(_0x8a52,0x1f3));var _0x28a5=function(_0x5d05b9,_0x376b07){_0x5d05b9=_0x5d05b9-0x0;var _0x172d74=_0x8a52[_0x5d05b9];return _0x172d74;};'use strict';var client=require(_0x28a5('0x0'));exports[_0x28a5('0x1')]=function(_0x1ec031){return client[_0x28a5('0x2')]('CreateMailQueueReport',{'body':_0x1ec031,'log':_0x28a5('0x3')});};exports[_0x28a5('0x4')]=function(_0x23142,_0x668513){return client[_0x28a5('0x2')]('UpdateMailQueueReport',{'body':_0x668513,'options':{'where':{'uniqueid':_0x23142},'order':[['id','DESC']],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x3aa2=['UpdateMailQueueReport','DESC','../client','Request','CreateMailQueueReport','update'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x3aa2,0xd4));var _0x23aa=function(_0x836465,_0x5442ae){_0x836465=_0x836465-0x0;var _0x2150ea=_0x3aa2[_0x836465];return _0x2150ea;};'use strict';var client=require(_0x23aa('0x0'));exports['create']=function(_0x2e2182){return client[_0x23aa('0x1')](_0x23aa('0x2'),{'body':_0x2e2182,'log':'CreateMailQueueReport'});};exports[_0x23aa('0x3')]=function(_0x89c0fe,_0x498321){return client[_0x23aa('0x1')](_0x23aa('0x4'),{'body':_0x498321,'options':{'where':{'uniqueid':_0x89c0fe},'order':[['id',_0x23aa('0x5')]],'limit':0x1},'log':_0x23aa('0x4')});};
\ No newline at end of file
index 62029e5..a117bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f01=['../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','AddTagsToOpenchannelInteraction','addTagsToChatInteraction'];(function(_0x43aa09,_0x114a4d){var _0x39ca58=function(_0x20cdc5){while(--_0x20cdc5){_0x43aa09['push'](_0x43aa09['shift']());}};_0x39ca58(++_0x114a4d);}(_0x4f01,0x1c2));var _0x14f0=function(_0x5266e2,_0x1f2a67){_0x5266e2=_0x5266e2-0x0;var _0x46e1a2=_0x4f01[_0x5266e2];return _0x46e1a2;};'use strict';var client=require(_0x14f0('0x0'));exports[_0x14f0('0x1')]=function(_0x52ad2e,_0x2809c9){return client['Request'](_0x14f0('0x2'),{'body':_0x2809c9,'options':{'where':{'id':_0x52ad2e}},'log':_0x14f0('0x3')});};exports['addTags']=function(_0x2ed47b,_0x33d545){return client['Request'](_0x14f0('0x4'),{'body':_0x33d545,'options':{'where':{'id':_0x2ed47b}},'log':_0x14f0('0x5')});};
\ No newline at end of file
+var _0xa85d=['AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0xa85d,0x16a));var _0xda85=function(_0x3c6741,_0x24c6f0){_0x3c6741=_0x3c6741-0x0;var _0x5d3310=_0xa85d[_0x3c6741];return _0x5d3310;};'use strict';var client=require(_0xda85('0x0'));exports[_0xda85('0x1')]=function(_0xcd3ea4,_0x593778){return client['Request'](_0xda85('0x2'),{'body':_0x593778,'options':{'where':{'id':_0xcd3ea4}},'log':_0xda85('0x3')});};exports[_0xda85('0x4')]=function(_0x14da72,_0x31c19d){return client[_0xda85('0x5')](_0xda85('0x6'),{'body':_0x31c19d,'options':{'where':{'id':_0x14da72}},'log':_0xda85('0x7')});};
\ No newline at end of file
index abe6c47..0866e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b7d=['../client','create','Request','createOpenchannelMessage'];(function(_0x75267d,_0x5d286c){var _0x21ccec=function(_0x1a3c1f){while(--_0x1a3c1f){_0x75267d['push'](_0x75267d['shift']());}};_0x21ccec(++_0x5d286c);}(_0x7b7d,0xc4));var _0xd7b7=function(_0x29a321,_0x4a01f7){_0x29a321=_0x29a321-0x0;var _0xaf1287=_0x7b7d[_0x29a321];return _0xaf1287;};'use strict';var client=require(_0xd7b7('0x0'));exports[_0xd7b7('0x1')]=function(_0x2f46eb){return client[_0xd7b7('0x2')]('CreateOpenchannelMessage',{'body':_0x2f46eb,'log':_0xd7b7('0x3')});};
\ No newline at end of file
+var _0x03f7=['Request','CreateOpenchannelMessage','createOpenchannelMessage','../client','create'];(function(_0x31254f,_0x48eddc){var _0x579a57=function(_0xf0ac31){while(--_0xf0ac31){_0x31254f['push'](_0x31254f['shift']());}};_0x579a57(++_0x48eddc);}(_0x03f7,0x161));var _0x703f=function(_0x530165,_0x3cca7e){_0x530165=_0x530165-0x0;var _0x282285=_0x03f7[_0x530165];return _0x282285;};'use strict';var client=require(_0x703f('0x0'));exports[_0x703f('0x1')]=function(_0x222895){return client[_0x703f('0x2')](_0x703f('0x3'),{'body':_0x222895,'log':_0x703f('0x4')});};
\ No newline at end of file
index db51af8..be84cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['timeout','strategy','User','online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name'];(function(_0x3fffdb,_0x18964c){var _0x5a9235=function(_0x303b08){while(--_0x303b08){_0x3fffdb['push'](_0x3fffdb['shift']());}};_0x5a9235(++_0x18964c);}(_0xadb5,0x8b));var _0x5adb=function(_0x18ef90,_0x537979){_0x18ef90=_0x18ef90-0x0;var _0x349e30=_0xadb5[_0x18ef90];return _0x349e30;};'use strict';var client=require(_0x5adb('0x0'));exports[_0x5adb('0x1')]=function(){return function(){return client[_0x5adb('0x2')](_0x5adb('0x3'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6')],'include':[{'model':_0x5adb('0x7'),'as':'Agents','attributes':['id',_0x5adb('0x4'),_0x5adb('0x8'),'openchannelPause']}]},'log':_0x5adb('0x1')});};};
\ No newline at end of file
+var _0x8bc6=['name','timeout','strategy','User','Agents','online','openchannelPause','GetOpenchannelQueue'];(function(_0x30e5c6,_0x7ab5d){var _0x14483a=function(_0x1e9564){while(--_0x1e9564){_0x30e5c6['push'](_0x30e5c6['shift']());}};_0x14483a(++_0x7ab5d);}(_0x8bc6,0x137));var _0x68bc=function(_0x5e6eac,_0x7d6b04){_0x5e6eac=_0x5e6eac-0x0;var _0x27afd9=_0x8bc6[_0x5e6eac];return _0x27afd9;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x68bc('0x0'),{'options':{'raw':![],'attributes':['id',_0x68bc('0x1'),_0x68bc('0x2'),_0x68bc('0x3')],'include':[{'model':_0x68bc('0x4'),'as':_0x68bc('0x5'),'attributes':['id',_0x68bc('0x1'),_0x68bc('0x6'),_0x68bc('0x7')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 01338d6..5b7d612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd506=['Request','UpdateOpenchannelQueueReport','DESC','../client','create','CreateOpenchannelQueueReport','update'];(function(_0x23f0e1,_0x11d94b){var _0x257f0d=function(_0xab63c7){while(--_0xab63c7){_0x23f0e1['push'](_0x23f0e1['shift']());}};_0x257f0d(++_0x11d94b);}(_0xd506,0x7a));var _0x6d50=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0xd506[_0x39096d];return _0x13da4f;};'use strict';var client=require(_0x6d50('0x0'));exports[_0x6d50('0x1')]=function(_0x4c9d38){return client['Request'](_0x6d50('0x2'),{'body':_0x4c9d38,'log':_0x6d50('0x2')});};exports[_0x6d50('0x3')]=function(_0x462bc7,_0x13a8c2){return client[_0x6d50('0x4')](_0x6d50('0x5'),{'body':_0x13a8c2,'options':{'where':{'uniqueid':_0x462bc7},'order':[['id',_0x6d50('0x6')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x8bd6=['../client','Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8bd6,0x1e0));var _0x68bd=function(_0x348b9c,_0x81df39){_0x348b9c=_0x348b9c-0x0;var _0x13ed5b=_0x8bd6[_0x348b9c];return _0x13ed5b;};'use strict';var client=require(_0x68bd('0x0'));exports['create']=function(_0x30dee0){return client[_0x68bd('0x1')](_0x68bd('0x2'),{'body':_0x30dee0,'log':_0x68bd('0x2')});};exports[_0x68bd('0x3')]=function(_0x3e9eec,_0x386818){return client[_0x68bd('0x1')](_0x68bd('0x4'),{'body':_0x386818,'options':{'where':{'uniqueid':_0x3e9eec},'order':[['id',_0x68bd('0x5')]],'limit':0x1},'log':_0x68bd('0x4')});};
\ No newline at end of file
index 8508bfa..de104f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37cc=['update','Request','UpdateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client'];(function(_0x73b1cd,_0x176535){var _0x243426=function(_0x1ee7c0){while(--_0x1ee7c0){_0x73b1cd['push'](_0x73b1cd['shift']());}};_0x243426(++_0x176535);}(_0x37cc,0x185));var _0xc37c=function(_0x2e8e7b,_0x5e4613){_0x2e8e7b=_0x2e8e7b-0x0;var _0x15fdab=_0x37cc[_0x2e8e7b];return _0x15fdab;};'use strict';var client=require(_0xc37c('0x0'));exports[_0xc37c('0x1')]=function(_0x461b6f,_0x3ba386){return client[_0xc37c('0x2')](_0xc37c('0x3'),{'body':_0x3ba386,'options':{'where':{'id':_0x461b6f}},'log':'updateSmsInteraction'});};exports['addTags']=function(_0x334d3c,_0x946e3b){return client[_0xc37c('0x2')](_0xc37c('0x4'),{'body':_0x946e3b,'options':{'where':{'id':_0x334d3c}},'log':_0xc37c('0x5')});};
\ No newline at end of file
+var _0xe700=['updateSmsInteraction','addTagsToSmsInteraction','../client','update','Request'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0xe700,0x16a));var _0x0e70=function(_0x66cac0,_0x3c9a38){_0x66cac0=_0x66cac0-0x0;var _0x8a0e4e=_0xe700[_0x66cac0];return _0x8a0e4e;};'use strict';var client=require(_0x0e70('0x0'));exports[_0x0e70('0x1')]=function(_0x245ff7,_0x1c63f0){return client[_0x0e70('0x2')]('UpdateSmsInteraction',{'body':_0x1c63f0,'options':{'where':{'id':_0x245ff7}},'log':_0x0e70('0x3')});};exports['addTags']=function(_0x20335e,_0x2cc22e){return client['Request']('AddTagsToSmsInteraction',{'body':_0x2cc22e,'options':{'where':{'id':_0x20335e}},'log':_0x0e70('0x4')});};
\ No newline at end of file
index 43485a1..0425b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf512=['createSmsMessage','../client','create'];(function(_0x4b3492,_0x273c83){var _0x238e25=function(_0x5b8cd3){while(--_0x5b8cd3){_0x4b3492['push'](_0x4b3492['shift']());}};_0x238e25(++_0x273c83);}(_0xf512,0x127));var _0x2f51=function(_0x2eaa8d,_0x12f7d1){_0x2eaa8d=_0x2eaa8d-0x0;var _0x16b6b0=_0xf512[_0x2eaa8d];return _0x16b6b0;};'use strict';var client=require(_0x2f51('0x0'));exports[_0x2f51('0x1')]=function(_0x4fa43b){return client['Request']('CreateSmsMessage',{'body':_0x4fa43b,'log':_0x2f51('0x2')});};
\ No newline at end of file
+var _0x9503=['CreateSmsMessage','Request'];(function(_0x2e0d05,_0x20cf24){var _0x46c076=function(_0x90ca12){while(--_0x90ca12){_0x2e0d05['push'](_0x2e0d05['shift']());}};_0x46c076(++_0x20cf24);}(_0x9503,0xbb));var _0x3950=function(_0x214873,_0x347ab0){_0x214873=_0x214873-0x0;var _0x26b7d4=_0x9503[_0x214873];return _0x26b7d4;};'use strict';var client=require('../client');exports['create']=function(_0x1921f3){return client[_0x3950('0x0')](_0x3950('0x1'),{'body':_0x1921f3,'log':'createSmsMessage'});};
\ No newline at end of file
index 69d8199..2bec80f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x358c36,_0x28fc15){var _0x46d384=function(_0x5ca9d9){while(--_0x5ca9d9){_0x358c36['push'](_0x358c36['shift']());}};_0x46d384(++_0x28fc15);}(_0x70e0,0x17b));var _0x070e=function(_0x33862a,_0x1ba439){_0x33862a=_0x33862a-0x0;var _0x354d85=_0x70e0[_0x33862a];return _0x354d85;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
+var _0xe706=['Agents','online','smsPause','../client','getSmsQueues','Request','name','timeout','strategy','User'];(function(_0x4a6662,_0x2ad0db){var _0x5f5691=function(_0x460d97){while(--_0x460d97){_0x4a6662['push'](_0x4a6662['shift']());}};_0x5f5691(++_0x2ad0db);}(_0xe706,0xa3));var _0x6e70=function(_0x268e0c,_0x1ef7d1){_0x268e0c=_0x268e0c-0x0;var _0x97a5fb=_0xe706[_0x268e0c];return _0x97a5fb;};'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 e5978c3..9bfdea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Request','CreateSmsQueueReport','update','UpdateSmsQueueReport'];(function(_0x5522a0,_0xcfa3f7){var _0x5d32d9=function(_0x523727){while(--_0x523727){_0x5522a0['push'](_0x5522a0['shift']());}};_0x5d32d9(++_0xcfa3f7);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'use strict';var client=require('../client');exports['create']=function(_0x1ffbbf){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'body':_0x1ffbbf,'log':_0x49c4('0x1')});};exports[_0x49c4('0x2')]=function(_0x2ad237,_0x4e0313){return client['Request'](_0x49c4('0x3'),{'body':_0x4e0313,'options':{'where':{'uniqueid':_0x2ad237},'order':[['id','DESC']],'limit':0x1},'log':_0x49c4('0x3')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x2d0d9f,_0x22c0d8){var _0x30243d=function(_0x29a92b){while(--_0x29a92b){_0x2d0d9f['push'](_0x2d0d9f['shift']());}};_0x30243d(++_0x22c0d8);}(_0xedd9,0xfc));var _0x9edd=function(_0x112363,_0x34a2bc){_0x112363=_0x112363-0x0;var _0x5dcedd=_0xedd9[_0x112363];return _0x5dcedd;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index 4955a5a..4c881b8 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(_0x4fcf63,_0x5d0237){var _0x3e267c=function(_0x488a01){while(--_0x488a01){_0x4fcf63['push'](_0x4fcf63['shift']());}};_0x3e267c(++_0x5d0237);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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(_0xd36ebc,_0x135565){var _0x4d0035=function(_0x2d40e7){while(--_0x2d40e7){_0xd36ebc['push'](_0xd36ebc['shift']());}};_0x4d0035(++_0x135565);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 aa498c7..d19bb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d19=['Request','UpdateWhatsappInteraction','updateWhatsappInteraction','AddTagsToWhatsappInteraction','../client','update'];(function(_0xcbda9,_0x2b4ce5){var _0x43ee21=function(_0x26ef92){while(--_0x26ef92){_0xcbda9['push'](_0xcbda9['shift']());}};_0x43ee21(++_0x2b4ce5);}(_0x6d19,0x160));var _0x96d1=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x6d19[_0x1928c9];return _0x51b5fb;};'use strict';var client=require(_0x96d1('0x0'));exports[_0x96d1('0x1')]=function(_0x110679,_0x36570a){return client[_0x96d1('0x2')](_0x96d1('0x3'),{'body':_0x36570a,'options':{'where':{'id':_0x110679}},'log':_0x96d1('0x4')});};exports['addTags']=function(_0x186315,_0x394a34){return client[_0x96d1('0x2')](_0x96d1('0x5'),{'body':_0x394a34,'options':{'where':{'id':_0x186315}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0xdbb1=['../client','Request','addTags'];(function(_0x57524e,_0x236f11){var _0x4a0867=function(_0x472b27){while(--_0x472b27){_0x57524e['push'](_0x57524e['shift']());}};_0x4a0867(++_0x236f11);}(_0xdbb1,0x105));var _0x1dbb=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xdbb1[_0x3511d3];return _0x5d6321;};'use strict';var client=require(_0x1dbb('0x0'));exports['update']=function(_0x53f27d,_0x4b55f7){return client[_0x1dbb('0x1')]('UpdateWhatsappInteraction',{'body':_0x4b55f7,'options':{'where':{'id':_0x53f27d}},'log':'updateWhatsappInteraction'});};exports[_0x1dbb('0x2')]=function(_0x483e15,_0xa1e321){return client[_0x1dbb('0x1')]('AddTagsToWhatsappInteraction',{'body':_0xa1e321,'options':{'where':{'id':_0x483e15}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 9064049..227b878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10d=['../client','create','Request'];(function(_0x212e57,_0x518557){var _0x5a04f0=function(_0x42820d){while(--_0x42820d){_0x212e57['push'](_0x212e57['shift']());}};_0x5a04f0(++_0x518557);}(_0xb10d,0x1e9));var _0xdb10=function(_0x1044ce,_0x412528){_0x1044ce=_0x1044ce-0x0;var _0x427fb2=_0xb10d[_0x1044ce];return _0x427fb2;};'use strict';var client=require(_0xdb10('0x0'));exports[_0xdb10('0x1')]=function(_0x433ddc){return client[_0xdb10('0x2')]('CreateWhatsappMessage',{'body':_0x433ddc,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x29f2=['create','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x22b7a8,_0x114b71){var _0x4390b8=function(_0x4bd28b){while(--_0x4bd28b){_0x22b7a8['push'](_0x22b7a8['shift']());}};_0x4390b8(++_0x114b71);}(_0x29f2,0x153));var _0x229f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29f2[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0x229f('0x0')]=function(_0x21ef0b){return client['Request'](_0x229f('0x1'),{'body':_0x21ef0b,'log':_0x229f('0x2')});};
\ No newline at end of file
index 601c015..738bcd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d3=['GetWhatsappQueue','name','timeout','strategy','User','Agents','online','whatsappPause','../client','getWhatsappQueues','Request'];(function(_0x3a2bd3,_0x4df97b){var _0x119eef=function(_0x4436dc){while(--_0x4436dc){_0x3a2bd3['push'](_0x3a2bd3['shift']());}};_0x119eef(++_0x4df97b);}(_0x39d3,0x194));var _0x339d=function(_0x138dda,_0x2bbb39){_0x138dda=_0x138dda-0x0;var _0x4a7e0c=_0x39d3[_0x138dda];return _0x4a7e0c;};'use strict';var client=require(_0x339d('0x0'));exports[_0x339d('0x1')]=function(){return function(){return client[_0x339d('0x2')](_0x339d('0x3'),{'options':{'raw':![],'attributes':['id',_0x339d('0x4'),_0x339d('0x5'),_0x339d('0x6')],'include':[{'model':_0x339d('0x7'),'as':_0x339d('0x8'),'attributes':['id','name',_0x339d('0x9'),_0x339d('0xa')]}]},'log':_0x339d('0x1')});};};
\ No newline at end of file
+var _0x7b08=['getWhatsappQueues','name','timeout','User','Agents','whatsappPause','../client'];(function(_0x537152,_0x3349ea){var _0x264820=function(_0x4a1e77){while(--_0x4a1e77){_0x537152['push'](_0x537152['shift']());}};_0x264820(++_0x3349ea);}(_0x7b08,0x1bf));var _0x87b0=function(_0x523b0a,_0x204b5f){_0x523b0a=_0x523b0a-0x0;var _0x555c37=_0x7b08[_0x523b0a];return _0x555c37;};'use strict';var client=require(_0x87b0('0x0'));exports[_0x87b0('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x87b0('0x2'),_0x87b0('0x3'),'strategy'],'include':[{'model':_0x87b0('0x4'),'as':_0x87b0('0x5'),'attributes':['id',_0x87b0('0x2'),'online',_0x87b0('0x6')]}]},'log':_0x87b0('0x1')});};};
\ No newline at end of file
index 2653f4a..cf12fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8706=['update','Request','UpdateWhatsappQueueReport','../client','create','CreateWhatsappQueueReport'];(function(_0x3207aa,_0xe86a72){var _0x51758f=function(_0x9ff790){while(--_0x9ff790){_0x3207aa['push'](_0x3207aa['shift']());}};_0x51758f(++_0xe86a72);}(_0x8706,0x18f));var _0x6870=function(_0x1c4317,_0x5a2d4f){_0x1c4317=_0x1c4317-0x0;var _0x22df22=_0x8706[_0x1c4317];return _0x22df22;};'use strict';var client=require(_0x6870('0x0'));exports[_0x6870('0x1')]=function(_0x4d2ecd){return client['Request'](_0x6870('0x2'),{'body':_0x4d2ecd,'log':_0x6870('0x2')});};exports[_0x6870('0x3')]=function(_0x18e633,_0x55b810){return client[_0x6870('0x4')](_0x6870('0x5'),{'body':_0x55b810,'options':{'where':{'uniqueid':_0x18e633},'order':[['id','DESC']],'limit':0x1},'log':_0x6870('0x5')});};
\ No newline at end of file
+var _0xe4b2=['../client','Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport'];(function(_0x3124f8,_0x1a8b23){var _0x5bab5f=function(_0x18b09b){while(--_0x18b09b){_0x3124f8['push'](_0x3124f8['shift']());}};_0x5bab5f(++_0x1a8b23);}(_0xe4b2,0x16e));var _0x2e4b=function(_0x3b88bb,_0x49b9df){_0x3b88bb=_0x3b88bb-0x0;var _0x4eb24e=_0xe4b2[_0x3b88bb];return _0x4eb24e;};'use strict';var client=require(_0x2e4b('0x0'));exports['create']=function(_0x111de9){return client[_0x2e4b('0x1')](_0x2e4b('0x2'),{'body':_0x111de9,'log':_0x2e4b('0x2')});};exports[_0x2e4b('0x3')]=function(_0x33829b,_0x3d6f6c){return client[_0x2e4b('0x1')]('UpdateWhatsappQueueReport',{'body':_0x3d6f6c,'options':{'where':{'uniqueid':_0x33829b},'order':[['id',_0x2e4b('0x4')]],'limit':0x1},'log':_0x2e4b('0x5')});};
\ No newline at end of file
index 93de1da..45aea43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad0e=['timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','log','[%s][QUEUE]\x20%s','validate','util','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','map','stop','find','agents'];(function(_0x2277af,_0x1c558b){var _0x342137=function(_0xb26fa4){while(--_0xb26fa4){_0x2277af['push'](_0x2277af['shift']());}};_0x342137(++_0x1c558b);}(_0xad0e,0x190));var _0xead0=function(_0x2f3a9f,_0x58e352){_0x2f3a9f=_0x2f3a9f-0x0;var _0x1c744d=_0xad0e[_0x2f3a9f];return _0x1c744d;};'use strict';var schema=require(_0xead0('0x0'));var _=require('lodash');var util=require(_0xead0('0x1'));var seqqueue=require('seq-queue');var logger=require(_0xead0('0x2'))(_0xead0('0x3'));var strategy=require(_0xead0('0x4'));var queue=schema({'name':{'type':_0xead0('0x5'),'required':!![],'message':_0xead0('0x6')},'timeout':{'type':_0xead0('0x7'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x547545,_0xf87d79,_0x2b4f65){return logger[_0xead0('0x8')](util[_0xead0('0x9')](_0xead0('0xa'),_0x547545,_0xf87d79[_0xead0('0xb')],_0x2b4f65));}function handleFindAgent(_0x546831){return function(_0x1eb713){return _0x1eb713[_0xead0('0xb')][_0xead0('0xc')]()===_0x546831[_0xead0('0xc')]();};}exports[_0xead0('0xd')]=function(_0x4bbce2,_0x461a25,_0x3f5311,_0x2c3fe5){return function(_0x2d4ccb){try{var _0x14b7be={'name':_0x461a25[0x0],'timeout':_0x461a25[0x1]};var _0x4799e6=queue['validate'](_0x14b7be,{'typecast':!![]});if(_0x4799e6['length']){logger[_0xead0('0xe')](_0xead0('0xf'),_0x4bbce2,_[_0xead0('0x10')](_0x4799e6,'message')['join'](',\x20'));_0x2d4ccb[_0xead0('0x11')]();}else{var _0x292a17=_[_0xead0('0x12')](_0x3f5311[_0xead0('0x13')],handleFindAgent(_0x14b7be[_0xead0('0xb')]));if(_0x292a17){var _0x590620=(_0x14b7be[_0xead0('0x14')]||0xa)*0x3e8;var _0x28f844,_0x518ccf;var _0x356b72=seqqueue[_0xead0('0x15')](_0x590620);_0x356b72['id']=_0x4bbce2;_0x356b72[_0xead0('0x16')]=_0x590620;_0x356b72['channel']=_0x2c3fe5[_0xead0('0x17')];writeLog(_0x4bbce2,_0x292a17,util['format'](_0xead0('0x18'),_0x590620));_0x3f5311[_0xead0('0x19')][_0x4bbce2]['on'](_0xead0('0x1a'),function(){logger[_0xead0('0x8')](_0xead0('0x1b'),_0x4bbce2);clearTimeout(_0x518ccf);_0x518ccf=undefined;_0x356b72[_0xead0('0x1c')]();if(_0x3f5311['rules'][_0x4bbce2]){delete _0x3f5311[_0xead0('0x19')][_0x4bbce2];}_0x2d4ccb[_0xead0('0x11')]();});_0x3f5311[_0xead0('0x19')][_0x4bbce2]['on'](_0xead0('0x1d'),function(){if(_0x3f5311[_0xead0('0x19')][_0x4bbce2]){delete _0x3f5311[_0xead0('0x19')][_0x4bbce2];}});_0x518ccf=setTimeout(function(){logger[_0xead0('0x8')](_0xead0('0x1e'),_0x4bbce2);clearTimeout(_0x518ccf);_0x356b72[_0xead0('0x1c')]();_0x2d4ccb[_0xead0('0x1f')]();},_0x590620);strategy[_0xead0('0x20')](_0x356b72,_0x292a17,_0x3f5311,_0x2c3fe5);}else{logger[_0xead0('0xe')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x4bbce2,_0x14b7be[_0xead0('0xb')]);_0x2d4ccb[_0xead0('0x11')]();}}}catch(_0x30eb9f){console[_0xead0('0x21')](_0x30eb9f);logger['error'](_0xead0('0x22'),_0x4bbce2,_0x30eb9f['stack']);_0x2d4ccb[_0xead0('0x11')]();}};};
\ No newline at end of file
+var _0xeae4=['atimeout','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','join','stop','find','agents','timeout','createQueue'];(function(_0x279f6d,_0x122316){var _0x5874a5=function(_0x4823ae){while(--_0x4823ae){_0x279f6d['push'](_0x279f6d['shift']());}};_0x5874a5(++_0x122316);}(_0xeae4,0x1c6));var _0x4eae=function(_0x3d2b1,_0x18c2f6){_0x3d2b1=_0x3d2b1-0x0;var _0x407d7f=_0xeae4[_0x3d2b1];return _0x407d7f;};'use strict';var schema=require(_0x4eae('0x0'));var _=require(_0x4eae('0x1'));var util=require(_0x4eae('0x2'));var seqqueue=require(_0x4eae('0x3'));var logger=require(_0x4eae('0x4'))('routing');var strategy=require(_0x4eae('0x5'));var queue=schema({'name':{'type':_0x4eae('0x6'),'required':!![],'message':_0x4eae('0x7')},'timeout':{'type':_0x4eae('0x8'),'message':_0x4eae('0x9')}});function writeLog(_0x3d3560,_0x30b9e8,_0xd28a8f){return logger[_0x4eae('0xa')](util[_0x4eae('0xb')](_0x4eae('0xc'),_0x3d3560,_0x30b9e8[_0x4eae('0xd')],_0xd28a8f));}function handleFindAgent(_0x7e6684){return function(_0x437c2c){return _0x437c2c[_0x4eae('0xd')][_0x4eae('0xe')]()===_0x7e6684[_0x4eae('0xe')]();};}exports[_0x4eae('0xf')]=function(_0x25bf92,_0x428ebb,_0x41ce69,_0x12b670){return function(_0x337a19){try{var _0x4bce4d={'name':_0x428ebb[0x0],'timeout':_0x428ebb[0x1]};var _0x382de0=queue[_0x4eae('0x0')](_0x4bce4d,{'typecast':!![]});if(_0x382de0[_0x4eae('0x10')]){logger[_0x4eae('0x11')](_0x4eae('0x12'),_0x25bf92,_[_0x4eae('0x13')](_0x382de0,'message')[_0x4eae('0x14')](',\x20'));_0x337a19[_0x4eae('0x15')]();}else{var _0x36ed1d=_[_0x4eae('0x16')](_0x41ce69[_0x4eae('0x17')],handleFindAgent(_0x4bce4d[_0x4eae('0xd')]));if(_0x36ed1d){var _0x895720=(_0x4bce4d[_0x4eae('0x18')]||0xa)*0x3e8;var _0x39c50e,_0x462021;var _0x5389db=seqqueue[_0x4eae('0x19')](_0x895720);_0x5389db['id']=_0x25bf92;_0x5389db[_0x4eae('0x1a')]=_0x895720;_0x5389db['channel']=_0x12b670[_0x4eae('0x1b')];writeLog(_0x25bf92,_0x36ed1d,util[_0x4eae('0xb')]('START:%s',_0x895720));_0x41ce69[_0x4eae('0x1c')][_0x25bf92]['on'](_0x4eae('0x1d'),function(){logger[_0x4eae('0xa')](_0x4eae('0x1e'),_0x25bf92);clearTimeout(_0x462021);_0x462021=undefined;_0x5389db['close']();if(_0x41ce69['rules'][_0x25bf92]){delete _0x41ce69['rules'][_0x25bf92];}_0x337a19[_0x4eae('0x15')]();});_0x41ce69[_0x4eae('0x1c')][_0x25bf92]['on'](_0x4eae('0x1f'),function(){if(_0x41ce69['rules'][_0x25bf92]){delete _0x41ce69[_0x4eae('0x1c')][_0x25bf92];}});_0x462021=setTimeout(function(){logger['info'](_0x4eae('0x20'),_0x25bf92);clearTimeout(_0x462021);_0x5389db[_0x4eae('0x21')]();_0x337a19[_0x4eae('0x22')]();},_0x895720);strategy[_0x4eae('0x23')](_0x5389db,_0x36ed1d,_0x41ce69,_0x12b670);}else{logger['error'](_0x4eae('0x24'),_0x25bf92,_0x4bce4d[_0x4eae('0xd')]);_0x337a19[_0x4eae('0x15')]();}}}catch(_0x4d8c85){console[_0x4eae('0x25')](_0x4d8c85);logger[_0x4eae('0x11')](_0x4eae('0x26'),_0x25bf92,_0x4d8c85[_0x4eae('0x27')]);_0x337a19['stop']();}};};
\ No newline at end of file
index 061fc54..dc12a14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc000=['next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','Message','create','then','body','catch','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','postText','providerName','providerResponse','stringify','dialogState','error','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.'];(function(_0x3e9aae,_0x3c4cd3){var _0x519d64=function(_0x445c75){while(--_0x445c75){_0x3e9aae['push'](_0x3e9aae['shift']());}};_0x519d64(++_0x3c4cd3);}(_0xc000,0x1b3));var _0x0c00=function(_0xc2dc2,_0x552d0b){_0xc2dc2=_0xc2dc2-0x0;var _0x53d97a=_0xc000[_0xc2dc2];return _0x53d97a;};'use strict';var _=require(_0x0c00('0x0'));var moment=require(_0x0c00('0x1'));var AWS=require('aws-sdk');var utils=require(_0x0c00('0x2'));var logger=require(_0x0c00('0x3'))(_0x0c00('0x4'));var rpc={'chatMessage':require(_0x0c00('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x0c00('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x0c00('0x7')),'whatsappMessage':require(_0x0c00('0x8'))};exports[_0x0c00('0x9')]=function(_0x88b01,_0x20fef2){return function(_0x1b70f8){try{if(!_[_0x0c00('0xa')](this['interaction'][_0x0c00('0xb')])){logger[_0x0c00('0xc')](_0x0c00('0xd'),_0x88b01,_0x0c00('0xe'));return _0x1b70f8[_0x0c00('0xf')]();}var _0x4c883f={'ContactId':this[_0x0c00('0x10')]['id'],'sentAt':moment()[_0x0c00('0x11')](_0x0c00('0x12')),'direction':_0x0c00('0x13')};if(this[_0x0c00('0x14')]===_0x0c00('0x15')||this[_0x0c00('0x14')]===_0x0c00('0x16')){_0x4c883f[_0x0c00('0x17')]=this[_0x0c00('0x18')]['phone'];}var _0x5e3a1c=this['channel'];if(_0x5e3a1c===_0x0c00('0x19')){_0x4c883f[_0x0c00('0x1a')]=this[_0x0c00('0x1b')]['id'];}else{_0x4c883f[_[_0x0c00('0x1c')](_0x5e3a1c)+_0x0c00('0x1d')]=this[_0x0c00('0x1b')]['id'];}_0x4c883f[_[_0x0c00('0x1c')](_0x5e3a1c)+'InteractionId']=this['interaction']['id'];if(this['interaction'][_0x0c00('0x1e')]){var _0x2676d6=_0x20fef2[0x4];if(!_[_0x0c00('0x1f')](_0x2676d6)){_0x4c883f['body']=utils['getMustacheRender'](_0x2676d6,this);return rpc[_0x5e3a1c+_0x0c00('0x20')][_0x0c00('0x21')](_0x4c883f)[_0x0c00('0x22')](function(_0x186455){logger[_0x0c00('0xc')](_0x0c00('0xd'),_0x88b01,_0x4c883f[_0x0c00('0x23')]);})[_0x0c00('0x24')](function(_0x3a0f2a){logger['error'](_0x0c00('0xd'),_0x88b01,JSON['stringify'](_0x3a0f2a));})[_0x0c00('0x25')](function(){logger['info'](_0x0c00('0x26'),_0x88b01);_0x1b70f8[_0x0c00('0x27')]();});}else{logger[_0x0c00('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x88b01);_0x1b70f8[_0x0c00('0x27')]();}}else{var _0x3f8771=this;var _0x1e5885=new AWS[(_0x0c00('0x28'))]({'accessKeyId':_0x20fef2[0x0],'secretAccessKey':_0x20fef2[0x1],'region':_0x20fef2[0x2]});var _0x276938={'botAlias':_0x0c00('0x29'),'botName':_0x20fef2[0x3],'inputText':this[_0x0c00('0x2a')][_0x0c00('0x23')],'userId':this[_0x0c00('0x14')]+':'+this[_0x0c00('0x18')]['id'][_0x0c00('0x2b')]()};_0x1e5885[_0x0c00('0x2c')](_0x276938,function(_0x2edf3e,_0x5d0b24){if(_0x2edf3e){logger['error'](_0x0c00('0xd'),_0x88b01,_0x2edf3e[_0x0c00('0x2a')]);_0x1b70f8[_0x0c00('0xf')]();}else if(_0x5d0b24&&_0x5d0b24['message']){_0x3f8771[_0x0c00('0x23')]['amazonlex']=_0x5d0b24;_0x4c883f[_0x0c00('0x23')]=_0x5d0b24['message'];_0x4c883f[_0x0c00('0x2d')]='amazonlex';_0x4c883f[_0x0c00('0x2e')]=JSON[_0x0c00('0x2f')](_0x5d0b24);return rpc[_0x5e3a1c+_0x0c00('0x20')][_0x0c00('0x21')](_0x4c883f)[_0x0c00('0x22')](function(_0x1e640e){logger[_0x0c00('0xc')](_0x0c00('0xd'),_0x88b01,_0x4c883f[_0x0c00('0x23')]);if(_0x5d0b24[_0x0c00('0x30')]=='Failed'){_0x1b70f8['next']();}else{_0x1b70f8['stop']();}})['catch'](function(_0x1c0063){logger[_0x0c00('0x31')]('[%s][AMAZONLEX]\x20%s',_0x88b01,JSON[_0x0c00('0x2f')](_0x1c0063));_0x1b70f8[_0x0c00('0xf')]();});}else{_0x1b70f8[_0x0c00('0xf')]();}});}}catch(_0x1c88cf){logger[_0x0c00('0x31')](_0x0c00('0xd'),_0x88b01,JSON[_0x0c00('0x2f')](_0x1c88cf));_0x1b70f8[_0x0c00('0x27')]();}};};
\ No newline at end of file
+var _0x3912=['../../rpc/whatsappMessage','consequence','isNil','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','out','channel','sms','whatsapp','ChatWebsiteId','upperFirst','AccountId','interaction','created','body','getMustacheRender','create','then','catch','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','toString','message','amazonlex','providerName','providerResponse','Message','error','lodash','aws-sdk','./utils','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage'];(function(_0x29e2af,_0x15e2b1){var _0x1ea06a=function(_0x34d736){while(--_0x34d736){_0x29e2af['push'](_0x29e2af['shift']());}};_0x1ea06a(++_0x15e2b1);}(_0x3912,0xc1));var _0x2391=function(_0xd7f8d8,_0x5448e9){_0xd7f8d8=_0xd7f8d8-0x0;var _0x5d5459=_0x3912[_0xd7f8d8];return _0x5d5459;};'use strict';var _=require(_0x2391('0x0'));var moment=require('moment');var AWS=require(_0x2391('0x1'));var utils=require(_0x2391('0x2'));var logger=require(_0x2391('0x3'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x2391('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x2391('0x5')),'faxMessage':require(_0x2391('0x6')),'whatsappMessage':require(_0x2391('0x7'))};exports[_0x2391('0x8')]=function(_0x512284,_0x569570){return function(_0x5465cc){try{if(!_[_0x2391('0x9')](this['interaction']['UserId'])){logger[_0x2391('0xa')](_0x2391('0xb'),_0x512284,_0x2391('0xc'));return _0x5465cc[_0x2391('0xd')]();}var _0x2f2f43={'ContactId':this['contact']['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x2391('0xe')};if(this[_0x2391('0xf')]===_0x2391('0x10')||this[_0x2391('0xf')]===_0x2391('0x11')){_0x2f2f43['phone']=this['interaction']['phone'];}var _0x418771=this['channel'];if(_0x418771==='chat'){_0x2f2f43[_0x2391('0x12')]=this['account']['id'];}else{_0x2f2f43[_[_0x2391('0x13')](_0x418771)+_0x2391('0x14')]=this['account']['id'];}_0x2f2f43[_[_0x2391('0x13')](_0x418771)+'InteractionId']=this[_0x2391('0x15')]['id'];if(this[_0x2391('0x15')][_0x2391('0x16')]){var _0x83496b=_0x569570[0x4];if(!_['isEmpty'](_0x83496b)){_0x2f2f43[_0x2391('0x17')]=utils[_0x2391('0x18')](_0x83496b,this);return rpc[_0x418771+'Message'][_0x2391('0x19')](_0x2f2f43)[_0x2391('0x1a')](function(_0x4e0aca){logger[_0x2391('0xa')](_0x2391('0xb'),_0x512284,_0x2f2f43[_0x2391('0x17')]);})[_0x2391('0x1b')](function(_0x25eba8){logger['error'](_0x2391('0xb'),_0x512284,JSON[_0x2391('0x1c')](_0x25eba8));})[_0x2391('0x1d')](function(){logger[_0x2391('0xa')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x512284);_0x5465cc['stop']();});}else{logger[_0x2391('0xa')](_0x2391('0x1e'),_0x512284);_0x5465cc[_0x2391('0x1f')]();}}else{var _0x4195e9=this;var _0x16e9f3=new AWS[(_0x2391('0x20'))]({'accessKeyId':_0x569570[0x0],'secretAccessKey':_0x569570[0x1],'region':_0x569570[0x2]});var _0x40fb76={'botAlias':'$LATEST','botName':_0x569570[0x3],'inputText':this['message'][_0x2391('0x17')],'userId':this[_0x2391('0xf')]+':'+this[_0x2391('0x15')]['id'][_0x2391('0x21')]()};_0x16e9f3['postText'](_0x40fb76,function(_0x5e361a,_0x524d94){if(_0x5e361a){logger['error']('[%s][AMAZONLEX]\x20%s',_0x512284,_0x5e361a['message']);_0x5465cc[_0x2391('0xd')]();}else if(_0x524d94&&_0x524d94[_0x2391('0x22')]){_0x4195e9['body'][_0x2391('0x23')]=_0x524d94;_0x2f2f43[_0x2391('0x17')]=_0x524d94['message'];_0x2f2f43[_0x2391('0x24')]=_0x2391('0x23');_0x2f2f43[_0x2391('0x25')]=JSON[_0x2391('0x1c')](_0x524d94);return rpc[_0x418771+_0x2391('0x26')]['create'](_0x2f2f43)['then'](function(_0x23f622){logger[_0x2391('0xa')](_0x2391('0xb'),_0x512284,_0x2f2f43[_0x2391('0x17')]);if(_0x524d94['dialogState']=='Failed'){_0x5465cc[_0x2391('0xd')]();}else{_0x5465cc['stop']();}})[_0x2391('0x1b')](function(_0x46542e){logger[_0x2391('0x27')](_0x2391('0xb'),_0x512284,JSON[_0x2391('0x1c')](_0x46542e));_0x5465cc[_0x2391('0xd')]();});}else{_0x5465cc['next']();}});}}catch(_0x50611b){logger['error'](_0x2391('0xb'),_0x512284,JSON['stringify'](_0x50611b));_0x5465cc[_0x2391('0x1f')]();}};};
\ No newline at end of file
index 00734de..f7f69b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd215=['consequence','channel','body','info','[%s][AUTOREPLY]\x20%s','next','created','interaction','autoreplyExecuted','One\x20Time\x20already\x20sent','format','out','getMustacheRender','message','from','mail','phone','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','headers','All','auto_reply','sendMailMessage','smtpOptions','create','then','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','resolve','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc'];(function(_0x454c12,_0x45c282){var _0x7bb4dc=function(_0x585c87){while(--_0x585c87){_0x454c12['push'](_0x454c12['shift']());}};_0x7bb4dc(++_0x45c282);}(_0xd215,0x17e));var _0x5d21=function(_0xd689b6,_0x58b558){_0xd689b6=_0xd689b6-0x0;var _0x5e1e16=_0xd215[_0xd689b6];return _0x5e1e16;};'use strict';var _=require(_0x5d21('0x0'));var moment=require(_0x5d21('0x1'));var utils=require(_0x5d21('0x2'));var logger=require('../../../../config/logger')(_0x5d21('0x3'));var rpc={'chatMessage':require(_0x5d21('0x4')),'openchannelMessage':require(_0x5d21('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x5d21('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x5d21('0x7')),'chatInteraction':require(_0x5d21('0x8')),'openchannelInteraction':require(_0x5d21('0x9')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0x5d21('0xa')),'faxInteraction':require(_0x5d21('0xb')),'whatsappInteraction':require(_0x5d21('0xc'))};var mailRpc=require(_0x5d21('0xd'));exports[_0x5d21('0xe')]=function(_0x276259,_0xb5e34d,_0x369e13,_0x5e4221){return function(_0x1240b7){try{var _0xc61e25=this[_0x5d21('0xf')];if(_0xc61e25==='mail'&&_0x5e4221[_0x5d21('0x10')]['isAutoreply']){logger[_0x5d21('0x11')](_0x5d21('0x12'),_0x276259,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x1240b7[_0x5d21('0x13')]();}if(_0xb5e34d[0x0]==='1'&&(_['isNil'](this['interaction']['created'])||!this['interaction'][_0x5d21('0x14')])){logger['info'](_0x5d21('0x12'),_0x276259,'Autoreply\x20already\x20sent');return _0x1240b7['next']();}if(_0xb5e34d[0x0]==='2'&&this[_0x5d21('0x15')][_0x5d21('0x16')]){logger[_0x5d21('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x276259,_0x5d21('0x17'));return _0x1240b7[_0x5d21('0x13')]();}var _0x50a299={'ContactId':this['contact']['id'],'sentAt':moment()[_0x5d21('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x5d21('0x19')};if(this[_0x5d21('0xf')]==='mail'){_0x50a299[_0x5d21('0x10')]=utils['getMustacheRender'](_0xb5e34d[0x2],this);}else{_0x50a299['body']=utils[_0x5d21('0x1a')](_0xb5e34d[0x1],this);}if(this['message']){_0x50a299['to']=this[_0x5d21('0x1b')][_0x5d21('0x1c')]||'';if(this[_0x5d21('0xf')]===_0x5d21('0x1d')&&_0xb5e34d[0x1]==='1'){_0x50a299['cc']=this[_0x5d21('0x1b')]['cc']||'';}_0x50a299[_0x5d21('0x1c')]=this[_0x5d21('0x1b')]['to']||'';_0x50a299[_0x5d21('0x1e')]=this['message'][_0x5d21('0x1e')]||'';_0x50a299['read']=!![];if(this[_0x5d21('0x1b')][_0x5d21('0x1f')]){_0x50a299['subject']='';_0x50a299[_0x5d21('0x1f')]+=_[_0x5d21('0x20')](this[_0x5d21('0x1b')][_0x5d21('0x1f')],_0x5d21('0x21'))?'':_0x5d21('0x22');_0x50a299[_0x5d21('0x1f')]+=this[_0x5d21('0x1b')]['subject'];}}if(this[_0x5d21('0xf')]===_0x5d21('0x23')){_0x50a299[_0x5d21('0x24')]=this[_0x5d21('0x25')]['id'];}else{_0x50a299[_[_0x5d21('0x26')](this[_0x5d21('0xf')])+'AccountId']=this[_0x5d21('0x25')]['id'];}_0x50a299[_[_0x5d21('0x26')](this[_0x5d21('0xf')])+_0x5d21('0x27')]=this[_0x5d21('0x15')]['id'];var _0x1b931a=this['interaction'];if(rpc[this[_0x5d21('0xf')]+_0x5d21('0x28')]){if(this[_0x5d21('0xf')]===_0x5d21('0x1d')){_0x50a299[_0x5d21('0x29')]=this[_0x5d21('0x1b')][_0x5d21('0x2a')];_0x50a299[_0x5d21('0x2b')]=_0x5d21('0x2c')+_[_0x5d21('0x2d')](_0x50a299[_0x5d21('0x10')],'<div\x20id=\x22xm-mail-content\x22',_0x5d21('0x2e'))+_0x5d21('0x2f');_0x50a299[_0x5d21('0x30')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x5d21('0x31'),'Precedence':_0x5d21('0x32')};return mailRpc[_0x5d21('0x33')](this[_0x5d21('0x25')][_0x5d21('0x34')],_0x50a299)['then'](function(_0x4fcbb6){logger[_0x5d21('0x11')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x276259);_0x50a299[_0x5d21('0x2a')]=_0x4fcbb6['message'][_0x5d21('0x2a')];return rpc[_0xc61e25+'Message'][_0x5d21('0x35')](_0x50a299);})[_0x5d21('0x36')](function(_0xe6c51c){logger[_0x5d21('0x11')]('[%s][AUTOREPLY]\x20%s',_0x276259,JSON[_0x5d21('0x37')](_0xe6c51c));})[_0x5d21('0x38')](function(_0x5a379a){logger[_0x5d21('0x39')](_0x5d21('0x3a'),_0x276259,JSON[_0x5d21('0x37')](_0x5a379a));})[_0x5d21('0x3b')](function(){Promise['resolve']()[_0x5d21('0x36')](function(){if(_0xb5e34d[0x0]!=='2'||_0x1b931a[_0x5d21('0x16')])return;return rpc[_0xc61e25+_0x5d21('0x3c')]['update'](_0x1b931a['id'],{'autoreplyExecuted':!![]})[_0x5d21('0x36')](function(_0x53fc0a){logger[_0x5d21('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x276259,JSON[_0x5d21('0x37')](_0x53fc0a));})['catch'](function(_0x5ab70e){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x276259,JSON[_0x5d21('0x37')](_0x5ab70e));});})[_0x5d21('0x36')](function(){_0x1240b7[_0x5d21('0x13')]();});});}else{return rpc[this['channel']+'Message'][_0x5d21('0x35')](_0x50a299)[_0x5d21('0x36')](function(){logger[_0x5d21('0x11')](_0x5d21('0x12'),_0x276259,_0x50a299['body']);})[_0x5d21('0x38')](function(_0x155a3f){logger['error']('[%s][AUTOREPLY]\x20%s',_0x276259,JSON[_0x5d21('0x37')](_0x155a3f));})[_0x5d21('0x3b')](function(){Promise[_0x5d21('0x3d')]()[_0x5d21('0x36')](function(){if(_0xb5e34d[0x0]!=='2'||_0x1b931a[_0x5d21('0x16')])return;return rpc[_0xc61e25+_0x5d21('0x3c')][_0x5d21('0x3e')](_0x1b931a['id'],{'autoreplyExecuted':!![]})['then'](function(_0x140348){logger[_0x5d21('0x11')](_0x5d21('0x3f'),_0x276259,JSON[_0x5d21('0x37')](_0x140348));})[_0x5d21('0x38')](function(_0x504f3d){logger[_0x5d21('0x39')](_0x5d21('0x40'),_0x276259,JSON[_0x5d21('0x37')](_0x504f3d));});})[_0x5d21('0x36')](function(){_0x1240b7[_0x5d21('0x13')]();});});}}}catch(_0x28fb0f){logger[_0x5d21('0x39')]('[%s][AUTOREPLY]\x20%s',_0x276259,JSON[_0x5d21('0x37')](_0x28fb0f));_0x1240b7[_0x5d21('0x41')]();}};};
\ No newline at end of file
+var _0x8d2c=['subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','AccountId','upperFirst','Message','inReplyTo','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','create','Interaction','update','stop','lodash','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','getMustacheRender','message','from','phone','read'];(function(_0x1de17a,_0x184677){var _0x3e5fba=function(_0x424882){while(--_0x424882){_0x1de17a['push'](_0x1de17a['shift']());}};_0x3e5fba(++_0x184677);}(_0x8d2c,0x1e5));var _0xc8d2=function(_0x11576e,_0x100aba){_0x11576e=_0x11576e-0x0;var _0x3e4b0f=_0x8d2c[_0x11576e];return _0x3e4b0f;};'use strict';var _=require(_0xc8d2('0x0'));var moment=require(_0xc8d2('0x1'));var utils=require('./utils');var logger=require(_0xc8d2('0x2'))(_0xc8d2('0x3'));var rpc={'chatMessage':require(_0xc8d2('0x4')),'openchannelMessage':require(_0xc8d2('0x5')),'mailMessage':require(_0xc8d2('0x6')),'smsMessage':require(_0xc8d2('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xc8d2('0x8')),'chatInteraction':require(_0xc8d2('0x9')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xc8d2('0xa')),'smsInteraction':require(_0xc8d2('0xb')),'faxInteraction':require(_0xc8d2('0xc')),'whatsappInteraction':require(_0xc8d2('0xd'))};var mailRpc=require(_0xc8d2('0xe'));exports[_0xc8d2('0xf')]=function(_0x33d1b5,_0x303c58,_0x6a9f9f,_0x4cb948){return function(_0x28b921){try{var _0x2982e4=this['channel'];if(_0x2982e4===_0xc8d2('0x10')&&_0x4cb948[_0xc8d2('0x11')][_0xc8d2('0x12')]){logger[_0xc8d2('0x13')](_0xc8d2('0x14'),_0x33d1b5,_0xc8d2('0x15'));return _0x28b921['next']();}if(_0x303c58[0x0]==='1'&&(_[_0xc8d2('0x16')](this[_0xc8d2('0x17')][_0xc8d2('0x18')])||!this[_0xc8d2('0x17')][_0xc8d2('0x18')])){logger['info'](_0xc8d2('0x14'),_0x33d1b5,_0xc8d2('0x19'));return _0x28b921['next']();}if(_0x303c58[0x0]==='2'&&this[_0xc8d2('0x17')][_0xc8d2('0x1a')]){logger[_0xc8d2('0x13')](_0xc8d2('0x1b'),_0x33d1b5,_0xc8d2('0x1c'));return _0x28b921[_0xc8d2('0x1d')]();}var _0x5583ec={'ContactId':this[_0xc8d2('0x1e')]['id'],'sentAt':moment()[_0xc8d2('0x1f')](_0xc8d2('0x20')),'direction':_0xc8d2('0x21')};if(this[_0xc8d2('0x22')]===_0xc8d2('0x10')){_0x5583ec[_0xc8d2('0x11')]=utils[_0xc8d2('0x23')](_0x303c58[0x2],this);}else{_0x5583ec[_0xc8d2('0x11')]=utils['getMustacheRender'](_0x303c58[0x1],this);}if(this[_0xc8d2('0x24')]){_0x5583ec['to']=this[_0xc8d2('0x24')][_0xc8d2('0x25')]||'';if(this[_0xc8d2('0x22')]===_0xc8d2('0x10')&&_0x303c58[0x1]==='1'){_0x5583ec['cc']=this[_0xc8d2('0x24')]['cc']||'';}_0x5583ec[_0xc8d2('0x25')]=this['message']['to']||'';_0x5583ec[_0xc8d2('0x26')]=this[_0xc8d2('0x24')][_0xc8d2('0x26')]||'';_0x5583ec[_0xc8d2('0x27')]=!![];if(this['message'][_0xc8d2('0x28')]){_0x5583ec[_0xc8d2('0x28')]='';_0x5583ec['subject']+=_[_0xc8d2('0x29')](this[_0xc8d2('0x24')][_0xc8d2('0x28')],_0xc8d2('0x2a'))?'':_0xc8d2('0x2b');_0x5583ec[_0xc8d2('0x28')]+=this['message']['subject'];}}if(this['channel']===_0xc8d2('0x2c')){_0x5583ec[_0xc8d2('0x2d')]=this[_0xc8d2('0x2e')]['id'];}else{_0x5583ec[_['upperFirst'](this[_0xc8d2('0x22')])+_0xc8d2('0x2f')]=this[_0xc8d2('0x2e')]['id'];}_0x5583ec[_[_0xc8d2('0x30')](this[_0xc8d2('0x22')])+'InteractionId']=this['interaction']['id'];var _0x4f4f9e=this[_0xc8d2('0x17')];if(rpc[this['channel']+_0xc8d2('0x31')]){if(this[_0xc8d2('0x22')]===_0xc8d2('0x10')){_0x5583ec[_0xc8d2('0x32')]=this[_0xc8d2('0x24')][_0xc8d2('0x33')];_0x5583ec[_0xc8d2('0x34')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0xc8d2('0x35')](_0x5583ec[_0xc8d2('0x11')],_0xc8d2('0x36'),_0xc8d2('0x37'))+_0xc8d2('0x38');_0x5583ec[_0xc8d2('0x39')]={'Auto-Submitted':_0xc8d2('0x3a'),'X-Auto-Response-Suppress':_0xc8d2('0x3b'),'Precedence':_0xc8d2('0x3c')};return mailRpc[_0xc8d2('0x3d')](this[_0xc8d2('0x2e')][_0xc8d2('0x3e')],_0x5583ec)[_0xc8d2('0x3f')](function(_0x51dd00){logger[_0xc8d2('0x13')](_0xc8d2('0x40'),_0x33d1b5);_0x5583ec[_0xc8d2('0x33')]=_0x51dd00[_0xc8d2('0x24')][_0xc8d2('0x33')];return rpc[_0x2982e4+_0xc8d2('0x31')]['create'](_0x5583ec);})[_0xc8d2('0x3f')](function(_0x42997f){logger[_0xc8d2('0x13')](_0xc8d2('0x14'),_0x33d1b5,JSON[_0xc8d2('0x41')](_0x42997f));})[_0xc8d2('0x42')](function(_0x2a1ecc){logger[_0xc8d2('0x43')](_0xc8d2('0x44'),_0x33d1b5,JSON['stringify'](_0x2a1ecc));})[_0xc8d2('0x45')](function(){Promise[_0xc8d2('0x46')]()[_0xc8d2('0x3f')](function(){if(_0x303c58[0x0]!=='2'||_0x4f4f9e[_0xc8d2('0x1a')])return;return rpc[_0x2982e4+'Interaction']['update'](_0x4f4f9e['id'],{'autoreplyExecuted':!![]})[_0xc8d2('0x3f')](function(_0x319fac){logger[_0xc8d2('0x13')](_0xc8d2('0x1b'),_0x33d1b5,JSON[_0xc8d2('0x41')](_0x319fac));})[_0xc8d2('0x42')](function(_0x2c3299){logger[_0xc8d2('0x43')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x33d1b5,JSON[_0xc8d2('0x41')](_0x2c3299));});})['then'](function(){_0x28b921[_0xc8d2('0x1d')]();});});}else{return rpc[this[_0xc8d2('0x22')]+'Message'][_0xc8d2('0x47')](_0x5583ec)['then'](function(){logger[_0xc8d2('0x13')](_0xc8d2('0x14'),_0x33d1b5,_0x5583ec[_0xc8d2('0x11')]);})[_0xc8d2('0x42')](function(_0x3b25cc){logger['error'](_0xc8d2('0x14'),_0x33d1b5,JSON[_0xc8d2('0x41')](_0x3b25cc));})[_0xc8d2('0x45')](function(){Promise[_0xc8d2('0x46')]()[_0xc8d2('0x3f')](function(){if(_0x303c58[0x0]!=='2'||_0x4f4f9e[_0xc8d2('0x1a')])return;return rpc[_0x2982e4+_0xc8d2('0x48')][_0xc8d2('0x49')](_0x4f4f9e['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4b3499){logger[_0xc8d2('0x13')](_0xc8d2('0x1b'),_0x33d1b5,JSON[_0xc8d2('0x41')](_0x4b3499));})['catch'](function(_0x56a461){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x33d1b5,JSON[_0xc8d2('0x41')](_0x56a461));});})[_0xc8d2('0x3f')](function(){_0x28b921[_0xc8d2('0x1d')]();});});}}}catch(_0xde02a2){logger[_0xc8d2('0x43')](_0xc8d2('0x14'),_0x33d1b5,JSON[_0xc8d2('0x41')](_0xde02a2));_0x28b921[_0xc8d2('0x4a')]();}};};
\ No newline at end of file
index eb560e0..03a573b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x270d=['moment','../../../../config/logger','routing','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','update','interaction','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','stringify','finally','stop','[%s][CLOSE]\x20%s'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x270d,0x118));var _0xd270=function(_0x5274d7,_0x4dc197){_0x5274d7=_0x5274d7-0x0;var _0x5c805b=_0x270d[_0x5274d7];return _0x5c805b;};'use strict';var moment=require(_0xd270('0x0'));var logger=require(_0xd270('0x1'))(_0xd270('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xd270('0x3')),'faxInteraction':require(_0xd270('0x4')),'whatsappInteraction':require(_0xd270('0x5'))};exports[_0xd270('0x6')]=function(_0x34f6a3,_0x1c0b1c,_0x360ff1,_0x3e854f){return function(_0x53a139){try{logger['info']('[%s][CLOSE]\x20reason\x20%s',_0x34f6a3,_0x1c0b1c[0x0]);var _0x4814e1={'closed':0x1,'closedAt':moment()[_0xd270('0x7')](_0xd270('0x8')),'closeReason':_0xd270('0x9'),'disposition':_0x1c0b1c[0x0]};if(rpc[_0x3e854f['channel']+'Interaction']){rpc[_0x3e854f[_0xd270('0xa')]+'Interaction'][_0xd270('0xb')](_0x3e854f[_0xd270('0xc')]['id'],_0x4814e1)['then'](function(_0x5bf727){logger[_0xd270('0xd')](_0xd270('0xe'),_0x34f6a3,_0x3e854f['interaction']['id']);})['catch'](function(_0x5e4ed3){logger[_0xd270('0xf')]('[%s][CLOSE]\x20%s',_0x34f6a3,JSON[_0xd270('0x10')](_0x5e4ed3));})[_0xd270('0x11')](function(){_0x53a139[_0xd270('0x12')]();});}}catch(_0x2733cc){logger[_0xd270('0xf')](_0xd270('0x13'),_0x34f6a3,JSON['stringify'](_0x2733cc));_0x53a139[_0xd270('0x12')]();}};};
\ No newline at end of file
+var _0xbb57=['../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment'];(function(_0x15c3f6,_0x2ec5da){var _0x92d8aa=function(_0x594b65){while(--_0x594b65){_0x15c3f6['push'](_0x15c3f6['shift']());}};_0x92d8aa(++_0x2ec5da);}(_0xbb57,0x1cd));var _0x7bb5=function(_0x5f24f1,_0xc51559){_0x5f24f1=_0x5f24f1-0x0;var _0x5a12bf=_0xbb57[_0x5f24f1];return _0x5a12bf;};'use strict';var moment=require(_0x7bb5('0x0'));var logger=require(_0x7bb5('0x1'))(_0x7bb5('0x2'));var rpc={'chatInteraction':require(_0x7bb5('0x3')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x7bb5('0x4')),'mailInteraction':require(_0x7bb5('0x5')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x7bb5('0x6')]=function(_0xd7bae4,_0x3599b7,_0x26b22c,_0x4319c9){return function(_0xf325ea){try{logger[_0x7bb5('0x7')](_0x7bb5('0x8'),_0xd7bae4,_0x3599b7[0x0]);var _0x2c5b86={'closed':0x1,'closedAt':moment()['format'](_0x7bb5('0x9')),'closeReason':_0x7bb5('0xa'),'disposition':_0x3599b7[0x0]};if(rpc[_0x4319c9['channel']+'Interaction']){rpc[_0x4319c9[_0x7bb5('0xb')]+_0x7bb5('0xc')][_0x7bb5('0xd')](_0x4319c9[_0x7bb5('0xe')]['id'],_0x2c5b86)['then'](function(_0x746e98){logger['info'](_0x7bb5('0xf'),_0xd7bae4,_0x4319c9[_0x7bb5('0xe')]['id']);})['catch'](function(_0x1e9334){logger[_0x7bb5('0x10')](_0x7bb5('0x11'),_0xd7bae4,JSON[_0x7bb5('0x12')](_0x1e9334));})[_0x7bb5('0x13')](function(){_0xf325ea[_0x7bb5('0x14')]();});}}catch(_0xe87228){logger[_0x7bb5('0x10')](_0x7bb5('0x11'),_0xd7bae4,JSON['stringify'](_0xe87228));_0xf325ea[_0x7bb5('0x14')]();}};};
\ No newline at end of file
index 57077c6..0289ede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b97=['InteractionId','created','isEmpty','body','getMustacheRender','Message','create','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','then','dialogflow','result','fulfillment','speech','providerName','providerResponse','metadata','endConversation','next','catch','lodash','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','upperFirst','AccountId','account'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9b97,0x11e));var _0x79b9=function(_0xd04cd2,_0x5a9975){_0xd04cd2=_0xd04cd2-0x0;var _0x12e175=_0x9b97[_0xd04cd2];return _0x12e175;};'use strict';var _=require(_0x79b9('0x0'));var moment=require('moment');var apiai=require(_0x79b9('0x1'));var md5=require(_0x79b9('0x2'));var utils=require(_0x79b9('0x3'));var logger=require(_0x79b9('0x4'))(_0x79b9('0x5'));var rpc={'chatMessage':require(_0x79b9('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x79b9('0x7')),'faxMessage':require(_0x79b9('0x8')),'whatsappMessage':require(_0x79b9('0x9'))};exports['consequence']=function(_0x2312c8,_0x234e33){return function(_0x581e1d){try{if(!_[_0x79b9('0xa')](this[_0x79b9('0xb')][_0x79b9('0xc')])){logger[_0x79b9('0xd')](_0x79b9('0xe'),_0x2312c8,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x581e1d['next']();}var _0x56679c={'ContactId':this[_0x79b9('0xf')]['id'],'sentAt':moment()[_0x79b9('0x10')](_0x79b9('0x11')),'direction':_0x79b9('0x12')};if(this[_0x79b9('0x13')]===_0x79b9('0x14')||this[_0x79b9('0x13')]===_0x79b9('0x15')){_0x56679c[_0x79b9('0x16')]=this[_0x79b9('0xb')]['phone'];}var _0x458174=this[_0x79b9('0x13')];if(_0x458174==='chat'){_0x56679c['ChatWebsiteId']=this['account']['id'];}else{_0x56679c[_[_0x79b9('0x17')](_0x458174)+_0x79b9('0x18')]=this[_0x79b9('0x19')]['id'];}_0x56679c[_[_0x79b9('0x17')](_0x458174)+_0x79b9('0x1a')]=this['interaction']['id'];if(this[_0x79b9('0xb')][_0x79b9('0x1b')]){var _0x340937=_0x234e33[0x2];if(!_[_0x79b9('0x1c')](_0x340937)){_0x56679c[_0x79b9('0x1d')]=utils[_0x79b9('0x1e')](_0x340937,this);return rpc[_0x458174+_0x79b9('0x1f')][_0x79b9('0x20')](_0x56679c)['then'](function(_0x54dc9d){logger[_0x79b9('0xd')]('[%s][DIALOGFLOW]\x20%s',_0x2312c8,_0x56679c['body']);})['catch'](function(_0x116aa5){logger[_0x79b9('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x2312c8,JSON[_0x79b9('0x22')](_0x116aa5));})[_0x79b9('0x23')](function(){logger[_0x79b9('0xd')](_0x79b9('0x24'),_0x2312c8);_0x581e1d['stop']();});}else{logger[_0x79b9('0xd')](_0x79b9('0x25'),_0x2312c8);_0x581e1d[_0x79b9('0x26')]();}}else{var _0x25006f=this;var _0x2dcf13=apiai(_0x234e33[0x0],{'language':_0x234e33[0x1]||'en'});return _0x2dcf13[_0x79b9('0x27')](this[_0x79b9('0x28')]['body'],{'sessionId':md5(this[_0x79b9('0xb')]['id'])})[_0x79b9('0x29')](function(_0x495971){_0x25006f['body'][_0x79b9('0x2a')]=_0x495971;_0x56679c[_0x79b9('0x1d')]=_0x495971[_0x79b9('0x2b')][_0x79b9('0x2c')][_0x79b9('0x2d')];_0x56679c[_0x79b9('0x2e')]=_0x79b9('0x2a');_0x56679c[_0x79b9('0x2f')]=JSON[_0x79b9('0x22')](_0x495971);return rpc[_0x458174+_0x79b9('0x1f')][_0x79b9('0x20')](_0x56679c)[_0x79b9('0x29')](function(_0x1b6e53){logger[_0x79b9('0xd')](_0x79b9('0xe'),_0x2312c8,_0x56679c[_0x79b9('0x1d')]);if(_0x495971[_0x79b9('0x2b')][_0x79b9('0x30')][_0x79b9('0x31')]){_0x581e1d[_0x79b9('0x32')]();}else{_0x581e1d[_0x79b9('0x26')]();}})[_0x79b9('0x33')](function(_0x531e7f){logger[_0x79b9('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x2312c8,JSON['stringify'](_0x531e7f));_0x581e1d['next']();});})[_0x79b9('0x33')](function(_0x53fc11){logger[_0x79b9('0x21')](_0x79b9('0xe'),_0x2312c8,_0x53fc11['message']);_0x581e1d['next']();});}}catch(_0x30fdb7){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x2312c8,JSON[_0x79b9('0x22')](_0x30fdb7));_0x581e1d['stop']();}};};
\ No newline at end of file
+var _0x0686=['info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','isEmpty','body','getMustacheRender','then','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','dialogflow','result','fulfillment','speech','providerName','create','metadata','endConversation','catch','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId'];(function(_0x1fc1f9,_0x454fb2){var _0x4987ca=function(_0x5e90dd){while(--_0x5e90dd){_0x1fc1f9['push'](_0x1fc1f9['shift']());}};_0x4987ca(++_0x454fb2);}(_0x0686,0x123));var _0x6068=function(_0x2b8322,_0x34c0ca){_0x2b8322=_0x2b8322-0x0;var _0x40b46f=_0x0686[_0x2b8322];return _0x40b46f;};'use strict';var _=require(_0x6068('0x0'));var moment=require(_0x6068('0x1'));var apiai=require(_0x6068('0x2'));var md5=require(_0x6068('0x3'));var utils=require(_0x6068('0x4'));var logger=require(_0x6068('0x5'))(_0x6068('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x6068('0x7')),'mailMessage':require(_0x6068('0x8')),'smsMessage':require(_0x6068('0x9')),'faxMessage':require(_0x6068('0xa')),'whatsappMessage':require(_0x6068('0xb'))};exports[_0x6068('0xc')]=function(_0x37489b,_0x171e21){return function(_0x3eb140){try{if(!_[_0x6068('0xd')](this['interaction'][_0x6068('0xe')])){logger[_0x6068('0xf')](_0x6068('0x10'),_0x37489b,_0x6068('0x11'));return _0x3eb140[_0x6068('0x12')]();}var _0x3d27cf={'ContactId':this[_0x6068('0x13')]['id'],'sentAt':moment()['format'](_0x6068('0x14')),'direction':_0x6068('0x15')};if(this[_0x6068('0x16')]===_0x6068('0x17')||this[_0x6068('0x16')]==='whatsapp'){_0x3d27cf[_0x6068('0x18')]=this[_0x6068('0x19')]['phone'];}var _0x406cab=this[_0x6068('0x16')];if(_0x406cab===_0x6068('0x1a')){_0x3d27cf[_0x6068('0x1b')]=this[_0x6068('0x1c')]['id'];}else{_0x3d27cf[_[_0x6068('0x1d')](_0x406cab)+_0x6068('0x1e')]=this[_0x6068('0x1c')]['id'];}_0x3d27cf[_[_0x6068('0x1d')](_0x406cab)+'InteractionId']=this[_0x6068('0x19')]['id'];if(this[_0x6068('0x19')]['created']){var _0x456dbb=_0x171e21[0x2];if(!_[_0x6068('0x1f')](_0x456dbb)){_0x3d27cf[_0x6068('0x20')]=utils[_0x6068('0x21')](_0x456dbb,this);return rpc[_0x406cab+'Message']['create'](_0x3d27cf)[_0x6068('0x22')](function(_0x1f0e7e){logger[_0x6068('0xf')](_0x6068('0x10'),_0x37489b,_0x3d27cf['body']);})['catch'](function(_0x1703ba){logger[_0x6068('0x23')](_0x6068('0x10'),_0x37489b,JSON[_0x6068('0x24')](_0x1703ba));})[_0x6068('0x25')](function(){logger[_0x6068('0xf')](_0x6068('0x26'),_0x37489b);_0x3eb140['stop']();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x37489b);_0x3eb140[_0x6068('0x27')]();}}else{var _0x138946=this;var _0x1b4f91=apiai(_0x171e21[0x0],{'language':_0x171e21[0x1]||'en'});return _0x1b4f91[_0x6068('0x28')](this[_0x6068('0x29')][_0x6068('0x20')],{'sessionId':md5(this[_0x6068('0x19')]['id'])})[_0x6068('0x22')](function(_0x5cf58c){_0x138946[_0x6068('0x20')][_0x6068('0x2a')]=_0x5cf58c;_0x3d27cf['body']=_0x5cf58c[_0x6068('0x2b')][_0x6068('0x2c')][_0x6068('0x2d')];_0x3d27cf[_0x6068('0x2e')]=_0x6068('0x2a');_0x3d27cf['providerResponse']=JSON[_0x6068('0x24')](_0x5cf58c);return rpc[_0x406cab+'Message'][_0x6068('0x2f')](_0x3d27cf)[_0x6068('0x22')](function(_0x256aaf){logger[_0x6068('0xf')](_0x6068('0x10'),_0x37489b,_0x3d27cf[_0x6068('0x20')]);if(_0x5cf58c[_0x6068('0x2b')][_0x6068('0x30')][_0x6068('0x31')]){_0x3eb140[_0x6068('0x12')]();}else{_0x3eb140['stop']();}})[_0x6068('0x32')](function(_0x2e6324){logger[_0x6068('0x23')](_0x6068('0x10'),_0x37489b,JSON[_0x6068('0x24')](_0x2e6324));_0x3eb140[_0x6068('0x12')]();});})[_0x6068('0x32')](function(_0x109829){logger['error'](_0x6068('0x10'),_0x37489b,_0x109829[_0x6068('0x29')]);_0x3eb140[_0x6068('0x12')]();});}}catch(_0x1ecf5d){logger[_0x6068('0x23')](_0x6068('0x10'),_0x37489b,JSON[_0x6068('0x24')](_0x1ecf5d));_0x3eb140[_0x6068('0x27')]();}};};
\ No newline at end of file
index d5f7512..b300338 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7181=['catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','all','stack','lodash','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then'];(function(_0x5b63a9,_0x558681){var _0x6aee68=function(_0x26e7d5){while(--_0x26e7d5){_0x5b63a9['push'](_0x5b63a9['shift']());}};_0x6aee68(++_0x558681);}(_0x7181,0xcd));var _0x1718=function(_0x32e94b,_0x38c7a7){_0x32e94b=_0x32e94b-0x0;var _0x3b1567=_0x7181[_0x32e94b];return _0x3b1567;};'use strict';var _=require(_0x1718('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x1718('0x1'));var moment=require(_0x1718('0x2'));var Promise=require(_0x1718('0x3'));var logger=require(_0x1718('0x4'))(_0x1718('0x5'));var utils=require(_0x1718('0x6'));var rpc={'chatMessage':require(_0x1718('0x7')),'openchannelMessage':require(_0x1718('0x8')),'mailMessage':require(_0x1718('0x9')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x1718('0xa')),'whatsappMessage':require(_0x1718('0xb'))};function createMessage(_0x1ed096,_0x33ad43,_0x3ef28b,_0x9ccc56){return new Promise(function(_0x4cb093,_0x357b86){var _0xe592d5=_[_0x1718('0xc')](_0x3ef28b);_0xe592d5[_0x1718('0xd')]=_0x9ccc56;return rpc[_0x33ad43+_0x1718('0xe')][_0x1718('0xf')](_0xe592d5)[_0x1718('0x10')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x1ed096,_0xe592d5[_0x1718('0xd')]);_0x4cb093();})[_0x1718('0x11')](function(_0x2bff60){logger[_0x1718('0x12')](_0x1718('0x13'),_0x1ed096,JSON[_0x1718('0x14')](_0x2bff60));_0x357b86(_0x2bff60);});});}exports['consequence']=function(_0x5e8272,_0x47a968){return function(_0x7f231a){try{if(!_[_0x1718('0x15')](this[_0x1718('0x16')][_0x1718('0x17')])){logger[_0x1718('0x18')]('[%s][DIALOGFLOWV2]\x20%s',_0x5e8272,_0x1718('0x19'));return _0x7f231a[_0x1718('0x1a')]();}var _0x344422={'ContactId':this[_0x1718('0x1b')]['id'],'sentAt':moment()[_0x1718('0x1c')](_0x1718('0x1d')),'direction':_0x1718('0x1e')};if(this[_0x1718('0x1f')]==='sms'||this[_0x1718('0x1f')]===_0x1718('0x20')){_0x344422['phone']=this[_0x1718('0x16')]['phone'];}var _0x397b13=this[_0x1718('0x1f')];if(_0x397b13===_0x1718('0x21')){_0x344422[_0x1718('0x22')]=this[_0x1718('0x23')]['id'];}else{_0x344422[_[_0x1718('0x24')](_0x397b13)+_0x1718('0x25')]=this[_0x1718('0x23')]['id'];}_0x344422[_[_0x1718('0x24')](_0x397b13)+_0x1718('0x26')]=this[_0x1718('0x16')]['id'];if(this[_0x1718('0x16')]['created']){var _0x5611d7=_0x47a968[0x4];if(!_[_0x1718('0x27')](_0x5611d7)){_0x344422[_0x1718('0xd')]=utils['getMustacheRender'](_0x5611d7,this);return rpc[_0x397b13+'Message']['create'](_0x344422)[_0x1718('0x10')](function(_0x4bfc1e){logger[_0x1718('0x18')](_0x1718('0x13'),_0x5e8272,_0x344422[_0x1718('0xd')]);})[_0x1718('0x11')](function(_0x37f3f0){logger[_0x1718('0x12')](_0x1718('0x13'),_0x5e8272,JSON[_0x1718('0x14')](_0x37f3f0));})[_0x1718('0x28')](function(){logger[_0x1718('0x18')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x5e8272);_0x7f231a[_0x1718('0x29')]();});}else{logger[_0x1718('0x18')](_0x1718('0x2a'),_0x5e8272);_0x7f231a[_0x1718('0x29')]();}}else{var _0x120e07=this;var _0xc79e1=_0x47a968[0x2]['replace'](/\\n/g,'\x0a');var _0x5ac90d={'credentials':{'private_key':_0xc79e1,'client_email':_0x47a968[0x1]}};var _0x2f47fe=new dialogflow[(_0x1718('0x2b'))](_0x5ac90d);var _0xc615f9=_0x2f47fe[_0x1718('0x2c')](_0x47a968[0x0],md5(_0x120e07['interaction']['id']));var _0x199d67={'session':_0xc615f9,'queryInput':{'text':{'text':_0x120e07[_0x1718('0x2d')]['body'],'languageCode':_0x47a968[0x3]||'en'}}};return _0x2f47fe['detectIntent'](_0x199d67)[_0x1718('0x10')](function(_0x5f2fde){if(_0x5f2fde&&_0x5f2fde[_0x1718('0x2e')]){_0x120e07[_0x1718('0xd')][_0x1718('0x2f')]=_0x5f2fde;var _0x126646=_0x5f2fde[0x0];var _0x1b2a57=_0x126646[_0x1718('0x30')][_0x1718('0x31')]&&_0x126646[_0x1718('0x30')][_0x1718('0x31')][_0x1718('0x32')]?_0x126646[_0x1718('0x30')][_0x1718('0x31')][_0x1718('0x32')][_0x1718('0x33')][_0x1718('0x34')]:![];_0x120e07[_0x1718('0xd')][_0x1718('0x35')]=_0x126646[_0x1718('0x30')]['action'];_0x120e07[_0x1718('0xd')][_0x1718('0x36')]=_0x126646[_0x1718('0x30')][_0x1718('0x37')];_0x120e07[_0x1718('0xd')][_0x1718('0x38')]=_0x126646[_0x1718('0x30')]['diagnosticInfo']&&_0x126646[_0x1718('0x30')][_0x1718('0x31')]['fields']?_0x126646[_0x1718('0x30')][_0x1718('0x31')][_0x1718('0x32')][_0x1718('0x33')][_0x1718('0x34')]:![];_0x120e07[_0x1718('0xd')][_0x1718('0x39')]=_0x126646[_0x1718('0x30')]['intent'][_0x1718('0x3a')];_0x120e07[_0x1718('0xd')][_0x1718('0x3b')]=_0x126646[_0x1718('0x30')][_0x1718('0x3c')][_0x1718('0x3d')];_0x120e07['body'][_0x1718('0x3e')]=_0x126646[_0x1718('0x30')][_0x1718('0x3c')][_0x1718('0x3f')];_0x120e07[_0x1718('0xd')][_0x1718('0x40')]=_0x126646[_0x1718('0x30')][_0x1718('0x41')];_0x120e07[_0x1718('0xd')][_0x1718('0x42')]=_0x126646[_0x1718('0x30')]['queryText'];_0x120e07[_0x1718('0xd')][_0x1718('0x43')]=_0x126646[_0x1718('0x30')][_0x1718('0x44')];_0x344422[_0x1718('0x45')]=_0x1718('0x2f');_0x344422[_0x1718('0x46')]=JSON[_0x1718('0x14')](_0x5f2fde);var _0x46bf59=[];for(var _0xdfe884=0x0;_0xdfe884<_0x5f2fde[_0x1718('0x2e')];_0xdfe884++){var _0xf9fc21=_0x5f2fde[_0xdfe884];if(_0xf9fc21&&_0xf9fc21[_0x1718('0x30')]&&_0xf9fc21[_0x1718('0x30')]['fulfillmentText']){_0x46bf59['push'](createMessage(_0x5e8272,_0x397b13,_0x344422,_0xf9fc21['queryResult'][_0x1718('0x47')]));}}return Promise[_0x1718('0x48')](_0x46bf59)['then'](function(){if(_0x1b2a57){_0x7f231a[_0x1718('0x1a')]();}else{_0x7f231a['stop']();}})[_0x1718('0x11')](function(_0xa4a62b){logger[_0x1718('0x12')](_0x1718('0x13'),_0x5e8272,JSON[_0x1718('0x14')](_0xa4a62b));_0x7f231a[_0x1718('0x1a')]();});}})['catch'](function(_0x3afb0c){logger['error'](_0x1718('0x13'),_0x5e8272,_0x3afb0c[_0x1718('0x2d')],_0x3afb0c[_0x1718('0x49')]);_0x7f231a['next']();});}}catch(_0x38fdda){logger[_0x1718('0x12')](_0x1718('0x13'),_0x5e8272,JSON[_0x1718('0x14')](_0x38fdda));_0x7f231a[_0x1718('0x29')]();}};};
\ No newline at end of file
+var _0x6889=['fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','isFallback','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','providerResponse','length','fulfillmentText','all','[%s][DIALOGFLOWV2]\x20%s','stack','lodash','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','info','catch','error','stringify','isNil','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','sms','channel','whatsapp','phone','chat','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','message','detectIntent','dialogflowV2','queryResult','diagnosticInfo'];(function(_0x53c5cf,_0x3ef208){var _0x3261aa=function(_0x69b1d){while(--_0x69b1d){_0x53c5cf['push'](_0x53c5cf['shift']());}};_0x3261aa(++_0x3ef208);}(_0x6889,0x117));var _0x9688=function(_0x427d3a,_0x23724c){_0x427d3a=_0x427d3a-0x0;var _0xe5c521=_0x6889[_0x427d3a];return _0xe5c521;};'use strict';var _=require(_0x9688('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x9688('0x1'));var moment=require(_0x9688('0x2'));var Promise=require(_0x9688('0x3'));var logger=require(_0x9688('0x4'))(_0x9688('0x5'));var utils=require(_0x9688('0x6'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x9688('0x7')),'mailMessage':require(_0x9688('0x8')),'smsMessage':require(_0x9688('0x9')),'faxMessage':require(_0x9688('0xa')),'whatsappMessage':require(_0x9688('0xb'))};function createMessage(_0x102340,_0x14005,_0x4de6c3,_0x1311bc){return new Promise(function(_0x24c168,_0x1783d9){var _0x318830=_[_0x9688('0xc')](_0x4de6c3);_0x318830[_0x9688('0xd')]=_0x1311bc;return rpc[_0x14005+'Message'][_0x9688('0xe')](_0x318830)[_0x9688('0xf')](function(){logger[_0x9688('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x102340,_0x318830[_0x9688('0xd')]);_0x24c168();})[_0x9688('0x11')](function(_0xd6110a){logger[_0x9688('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x102340,JSON[_0x9688('0x13')](_0xd6110a));_0x1783d9(_0xd6110a);});});}exports['consequence']=function(_0xed3328,_0x1ff1d9){return function(_0x15ba78){try{if(!_[_0x9688('0x14')](this[_0x9688('0x15')]['UserId'])){logger[_0x9688('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0xed3328,_0x9688('0x16'));return _0x15ba78[_0x9688('0x17')]();}var _0x4178e4={'ContactId':this[_0x9688('0x18')]['id'],'sentAt':moment()[_0x9688('0x19')](_0x9688('0x1a')),'direction':'out'};if(this['channel']===_0x9688('0x1b')||this[_0x9688('0x1c')]===_0x9688('0x1d')){_0x4178e4['phone']=this[_0x9688('0x15')][_0x9688('0x1e')];}var _0x47dce1=this[_0x9688('0x1c')];if(_0x47dce1===_0x9688('0x1f')){_0x4178e4['ChatWebsiteId']=this[_0x9688('0x20')]['id'];}else{_0x4178e4[_[_0x9688('0x21')](_0x47dce1)+_0x9688('0x22')]=this[_0x9688('0x20')]['id'];}_0x4178e4[_[_0x9688('0x21')](_0x47dce1)+'InteractionId']=this['interaction']['id'];if(this[_0x9688('0x15')][_0x9688('0x23')]){var _0x4c90f5=_0x1ff1d9[0x4];if(!_[_0x9688('0x24')](_0x4c90f5)){_0x4178e4['body']=utils[_0x9688('0x25')](_0x4c90f5,this);return rpc[_0x47dce1+'Message'][_0x9688('0xe')](_0x4178e4)['then'](function(_0x1ce4b8){logger[_0x9688('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0xed3328,_0x4178e4[_0x9688('0xd')]);})[_0x9688('0x11')](function(_0x43418e){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0xed3328,JSON[_0x9688('0x13')](_0x43418e));})[_0x9688('0x26')](function(){logger[_0x9688('0x10')](_0x9688('0x27'),_0xed3328);_0x15ba78[_0x9688('0x28')]();});}else{logger[_0x9688('0x10')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0xed3328);_0x15ba78[_0x9688('0x28')]();}}else{var _0xa64b2=this;var _0x586519=_0x1ff1d9[0x2]['replace'](/\\n/g,'\x0a');var _0xff4188={'credentials':{'private_key':_0x586519,'client_email':_0x1ff1d9[0x1]}};var _0xe39554=new dialogflow['SessionsClient'](_0xff4188);var _0x22314a=_0xe39554['sessionPath'](_0x1ff1d9[0x0],md5(_0xa64b2['interaction']['id']));var _0x2c3879={'session':_0x22314a,'queryInput':{'text':{'text':_0xa64b2[_0x9688('0x29')][_0x9688('0xd')],'languageCode':_0x1ff1d9[0x3]||'en'}}};return _0xe39554[_0x9688('0x2a')](_0x2c3879)[_0x9688('0xf')](function(_0x571d04){if(_0x571d04&&_0x571d04['length']){_0xa64b2['body'][_0x9688('0x2b')]=_0x571d04;var _0x2a7c1b=_0x571d04[0x0];var _0x443981=_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x2d')]&&_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x2d')][_0x9688('0x2e')]?_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x2d')]['fields'][_0x9688('0x2f')][_0x9688('0x30')]:![];_0xa64b2[_0x9688('0xd')][_0x9688('0x31')]=_0x2a7c1b['queryResult'][_0x9688('0x32')];_0xa64b2['body'][_0x9688('0x33')]=_0x2a7c1b[_0x9688('0x2c')]['allRequiredParamsPresent'];_0xa64b2[_0x9688('0xd')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x2a7c1b['queryResult'][_0x9688('0x2d')]&&_0x2a7c1b[_0x9688('0x2c')]['diagnosticInfo']['fields']?_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x2d')][_0x9688('0x2e')][_0x9688('0x2f')][_0x9688('0x30')]:![];_0xa64b2[_0x9688('0xd')][_0x9688('0x34')]=_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x35')][_0x9688('0x36')];_0xa64b2['body'][_0x9688('0x37')]=_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x35')]['displayName'];_0xa64b2[_0x9688('0xd')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x2a7c1b[_0x9688('0x2c')][_0x9688('0x35')][_0x9688('0x38')];_0xa64b2[_0x9688('0xd')]['DIALOGFLOWV2_LANGUAGECODE']=_0x2a7c1b[_0x9688('0x2c')]['languageCode'];_0xa64b2['body'][_0x9688('0x39')]=_0x2a7c1b[_0x9688('0x2c')]['queryText'];_0xa64b2[_0x9688('0xd')][_0x9688('0x3a')]=_0x2a7c1b[_0x9688('0x2c')]['intentDetectionConfidence'];_0x4178e4['providerName']=_0x9688('0x2b');_0x4178e4[_0x9688('0x3b')]=JSON[_0x9688('0x13')](_0x571d04);var _0x6256d5=[];for(var _0x4b8f0e=0x0;_0x4b8f0e<_0x571d04[_0x9688('0x3c')];_0x4b8f0e++){var _0x16abfe=_0x571d04[_0x4b8f0e];if(_0x16abfe&&_0x16abfe['queryResult']&&_0x16abfe[_0x9688('0x2c')][_0x9688('0x3d')]){_0x6256d5['push'](createMessage(_0xed3328,_0x47dce1,_0x4178e4,_0x16abfe['queryResult']['fulfillmentText']));}}return Promise[_0x9688('0x3e')](_0x6256d5)[_0x9688('0xf')](function(){if(_0x443981){_0x15ba78[_0x9688('0x17')]();}else{_0x15ba78[_0x9688('0x28')]();}})[_0x9688('0x11')](function(_0x49e49a){logger[_0x9688('0x12')](_0x9688('0x3f'),_0xed3328,JSON['stringify'](_0x49e49a));_0x15ba78[_0x9688('0x17')]();});}})[_0x9688('0x11')](function(_0x4abc56){logger[_0x9688('0x12')](_0x9688('0x3f'),_0xed3328,_0x4abc56[_0x9688('0x29')],_0x4abc56[_0x9688('0x40')]);_0x15ba78[_0x9688('0x17')]();});}}catch(_0x20a75a){logger[_0x9688('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0xed3328,JSON[_0x9688('0x13')](_0x20a75a));_0x15ba78[_0x9688('0x28')]();}};};
\ No newline at end of file
index 169ee5d..6c4be42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f9=['message','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','fromString','getMustacheRender','replace','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityTrue','priorityFalse','info','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found'];(function(_0x39758d,_0x346423){var _0x44ac11=function(_0x175008){while(--_0x175008){_0x39758d['push'](_0x39758d['shift']());}};_0x44ac11(++_0x346423);}(_0x78f9,0x1ab));var _0x978f=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x78f9[_0x3e112d];return _0x531c31;};'use strict';var schema=require(_0x978f('0x0'));var _=require(_0x978f('0x1'));var htmlToText=require(_0x978f('0x2'));var utils=require(_0x978f('0x3'));var logger=require(_0x978f('0x4'))('routing');var gotoif=schema({'condition':{'type':_0x978f('0x5'),'required':!![],'message':_0x978f('0x6')},'priorityTrue':{'type':_0x978f('0x7'),'message':_0x978f('0x8')},'priorityFalse':{'type':_0x978f('0x7'),'message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x567b2a,_0x15a539){return function(_0x5c99bc){try{var _0x3f6409={'condition':htmlToText[_0x978f('0x9')](utils[_0x978f('0xa')](_0x15a539[0x0],this),{'wordwrap':![]})[_0x978f('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x15a539[0x1],'priorityFalse':_0x15a539[0x2]};var _0x1197b3=gotoif[_0x978f('0x0')](_0x3f6409,{'typecast':!![]});if(_0x1197b3['length']){logger[_0x978f('0xc')](_0x978f('0xd'),_0x567b2a,_[_0x978f('0xe')](_0x1197b3,'message')[_0x978f('0xf')](',\x20'));_0x5c99bc[_0x978f('0x10')]();}else{try{var _0x1b9284=eval('('+_0x3f6409['condition']+')');var _0x4064f4=_0x1b9284?_0x3f6409[_0x978f('0x11')]:_0x3f6409[_0x978f('0x12')];logger[_0x978f('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x567b2a,_0x3f6409['condition'],_0x1b9284,_0x4064f4||_0x978f('0x14'));if(_0x4064f4){var _0x531c7a=_['findIndex'](_0x5c99bc[_0x978f('0x15')](),{'p':_0x4064f4});if(_0x531c7a>=0x0){logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x567b2a,_0x4064f4||'next',_0x531c7a);_0x5c99bc[_0x978f('0x14')](_0x531c7a);}else{logger[_0x978f('0x13')](_0x978f('0x16'),_0x567b2a,_0x4064f4||_0x978f('0x14'));_0x5c99bc[_0x978f('0x10')]();}}else{_0x5c99bc[_0x978f('0x14')]();}}catch(_0x254a5f){logger[_0x978f('0xc')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x567b2a,_0x254a5f[_0x978f('0x17')]);_0x5c99bc[_0x978f('0x10')]();}}}catch(_0x201431){logger[_0x978f('0xc')](_0x978f('0xd'),_0x567b2a,JSON[_0x978f('0x18')](_0x201431));_0x5c99bc[_0x978f('0x10')]();}};};
\ No newline at end of file
+var _0x1325=['validate','lodash','html-to-text','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','info','next','findIndex','rules','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0x1325,0x138));var _0x5132=function(_0x571378,_0x2f7d12){_0x571378=_0x571378-0x0;var _0x5185eb=_0x1325[_0x571378];return _0x5185eb;};'use strict';var schema=require(_0x5132('0x0'));var _=require(_0x5132('0x1'));var htmlToText=require(_0x5132('0x2'));var utils=require('./utils');var logger=require(_0x5132('0x3'))('routing');var gotoif=schema({'condition':{'type':_0x5132('0x4'),'required':!![],'message':_0x5132('0x5')},'priorityTrue':{'type':'number','message':_0x5132('0x6')},'priorityFalse':{'type':_0x5132('0x7'),'message':_0x5132('0x8')}});exports[_0x5132('0x9')]=function(_0x5ca2a2,_0x4418e9){return function(_0xe5ffdc){try{var _0x39bf93={'condition':htmlToText[_0x5132('0xa')](utils[_0x5132('0xb')](_0x4418e9[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4418e9[0x1],'priorityFalse':_0x4418e9[0x2]};var _0x4503cb=gotoif['validate'](_0x39bf93,{'typecast':!![]});if(_0x4503cb[_0x5132('0xc')]){logger[_0x5132('0xd')](_0x5132('0xe'),_0x5ca2a2,_[_0x5132('0xf')](_0x4503cb,_0x5132('0x10'))[_0x5132('0x11')](',\x20'));_0xe5ffdc[_0x5132('0x12')]();}else{try{var _0x34f61d=eval('('+_0x39bf93[_0x5132('0x13')]+')');var _0x936dd5=_0x34f61d?_0x39bf93['priorityTrue']:_0x39bf93['priorityFalse'];logger[_0x5132('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x5ca2a2,_0x39bf93[_0x5132('0x13')],_0x34f61d,_0x936dd5||_0x5132('0x15'));if(_0x936dd5){var _0x354253=_[_0x5132('0x16')](_0xe5ffdc[_0x5132('0x17')](),{'p':_0x936dd5});if(_0x354253>=0x0){logger[_0x5132('0x14')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x5ca2a2,_0x936dd5||_0x5132('0x15'),_0x354253);_0xe5ffdc[_0x5132('0x15')](_0x354253);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x5ca2a2,_0x936dd5||_0x5132('0x15'));_0xe5ffdc[_0x5132('0x12')]();}}else{_0xe5ffdc[_0x5132('0x15')]();}}catch(_0x13f5ae){logger[_0x5132('0xd')](_0x5132('0x18'),_0x5ca2a2,_0x13f5ae[_0x5132('0x10')]);_0xe5ffdc[_0x5132('0x12')]();}}}catch(_0x7423be){logger[_0x5132('0xd')](_0x5132('0xe'),_0x5ca2a2,JSON[_0x5132('0x19')](_0x7423be));_0xe5ffdc[_0x5132('0x12')]();}};};
\ No newline at end of file
index 4b00263..924ba98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x573f=['info','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','next','stop','[%s][GOTOP]\x20%s','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','map','message','join','priority','findIndex','rules'];(function(_0x2693c1,_0x3abd4d){var _0x43776c=function(_0x24b846){while(--_0x24b846){_0x2693c1['push'](_0x2693c1['shift']());}};_0x43776c(++_0x3abd4d);}(_0x573f,0x84));var _0xf573=function(_0x45a7be,_0x3396d5){_0x45a7be=_0x45a7be-0x0;var _0x1dbbd3=_0x573f[_0x45a7be];return _0x1dbbd3;};'use strict';var schema=require(_0xf573('0x0'));var _=require(_0xf573('0x1'));var logger=require(_0xf573('0x2'))(_0xf573('0x3'));var gotop=schema({'priority':{'type':_0xf573('0x4'),'required':!![],'message':_0xf573('0x5')}});exports[_0xf573('0x6')]=function(_0x50c60e,_0x469d86){return function(_0x4e5e08){try{var _0x22bc01={'priority':_0x469d86[0x0]};var _0x55447e=gotop[_0xf573('0x0')](_0x22bc01,{'typecast':!![]});if(_0x55447e[_0xf573('0x7')]){logger[_0xf573('0x8')]('[%s][GOTOP]\x20%s',_0x50c60e,_[_0xf573('0x9')](_0x55447e,_0xf573('0xa'))[_0xf573('0xb')](',\x20'));_0x4e5e08['stop']();}else{logger['info']('[%s][GOTOP]\x20priority\x20%s',_0x50c60e,_0x22bc01[_0xf573('0xc')]);if(_0x22bc01[_0xf573('0xc')]){var _0x563d9d=_[_0xf573('0xd')](_0x4e5e08[_0xf573('0xe')](),{'p':_0x22bc01['priority']});if(_0x563d9d>=0x0){logger[_0xf573('0xf')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x50c60e,_0x22bc01[_0xf573('0xc')]||'next',_0x563d9d);_0x4e5e08['next'](_0x563d9d);}else{logger[_0xf573('0xf')](_0xf573('0x10'),_0x50c60e,_0x22bc01[_0xf573('0xc')]||_0xf573('0x11'));_0x4e5e08[_0xf573('0x12')]();}}else{_0x4e5e08[_0xf573('0x11')]();}}}catch(_0x3e5691){logger[_0xf573('0x8')](_0xf573('0x13'),_0x50c60e,JSON[_0xf573('0x14')](_0x3e5691));_0x4e5e08[_0xf573('0x12')]();}};};
\ No newline at end of file
+var _0x5a49=['routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash'];(function(_0x5a8f9e,_0x345fab){var _0xb316e=function(_0x2392e9){while(--_0x2392e9){_0x5a8f9e['push'](_0x5a8f9e['shift']());}};_0xb316e(++_0x345fab);}(_0x5a49,0xbc));var _0x95a4=function(_0x4fbf0b,_0x33ce00){_0x4fbf0b=_0x4fbf0b-0x0;var _0x1c160f=_0x5a49[_0x4fbf0b];return _0x1c160f;};'use strict';var schema=require(_0x95a4('0x0'));var _=require(_0x95a4('0x1'));var logger=require('../../../../config/logger')(_0x95a4('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x95a4('0x3')}});exports[_0x95a4('0x4')]=function(_0x5bfedb,_0x4e0839){return function(_0x569f68){try{var _0x254a0f={'priority':_0x4e0839[0x0]};var _0x5a0159=gotop[_0x95a4('0x0')](_0x254a0f,{'typecast':!![]});if(_0x5a0159[_0x95a4('0x5')]){logger[_0x95a4('0x6')](_0x95a4('0x7'),_0x5bfedb,_[_0x95a4('0x8')](_0x5a0159,_0x95a4('0x9'))[_0x95a4('0xa')](',\x20'));_0x569f68[_0x95a4('0xb')]();}else{logger[_0x95a4('0xc')](_0x95a4('0xd'),_0x5bfedb,_0x254a0f[_0x95a4('0xe')]);if(_0x254a0f[_0x95a4('0xe')]){var _0x4e8a9c=_['findIndex'](_0x569f68['rules'](),{'p':_0x254a0f[_0x95a4('0xe')]});if(_0x4e8a9c>=0x0){logger[_0x95a4('0xc')](_0x95a4('0xf'),_0x5bfedb,_0x254a0f[_0x95a4('0xe')]||'next',_0x4e8a9c);_0x569f68[_0x95a4('0x10')](_0x4e8a9c);}else{logger['info'](_0x95a4('0x11'),_0x5bfedb,_0x254a0f[_0x95a4('0xe')]||'next');_0x569f68[_0x95a4('0xb')]();}}else{_0x569f68[_0x95a4('0x10')]();}}}catch(_0x181cba){logger[_0x95a4('0x6')]('[%s][GOTOP]\x20%s',_0x5bfedb,JSON[_0x95a4('0x12')](_0x181cba));_0x569f68[_0x95a4('0xb')]();}};};
\ No newline at end of file
index 4f11a4c..ef4f9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa1=['Message','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact','chat','ChatWebsiteId','account','upperFirst','channel','InteractionId','interaction'];(function(_0x4b630,_0x151f86){var _0x24f855=function(_0x2ead2a){while(--_0x2ead2a){_0x4b630['push'](_0x4b630['shift']());}};_0x24f855(++_0x151f86);}(_0xbfa1,0x140));var _0x1bfa=function(_0x2958a5,_0x97d841){_0x2958a5=_0x2958a5-0x0;var _0x1ca993=_0xbfa1[_0x2958a5];return _0x1ca993;};'use strict';var _=require(_0x1bfa('0x0'));var utils=require('./utils');var logger=require(_0x1bfa('0x1'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x1bfa('0x2')),'mailMessage':require(_0x1bfa('0x3')),'smsMessage':require(_0x1bfa('0x4')),'faxMessage':require(_0x1bfa('0x5')),'whatsappMessage':require(_0x1bfa('0x6'))};exports[_0x1bfa('0x7')]=function(_0x48cede,_0x78cdc){return function(_0x93d58d){try{var _0x190cbb={'body':utils['getMustacheRender'](_0x78cdc[0x0],this),'ContactId':this[_0x1bfa('0x8')]['id']};if(this['channel']===_0x1bfa('0x9')){_0x190cbb[_0x1bfa('0xa')]=this[_0x1bfa('0xb')]['id'];}else{_0x190cbb[_[_0x1bfa('0xc')](this['channel'])+'AccountId']=this[_0x1bfa('0xb')]['id'];}_0x190cbb[_[_0x1bfa('0xc')](this[_0x1bfa('0xd')])+_0x1bfa('0xe')]=this[_0x1bfa('0xf')]['id'];if(rpc[this[_0x1bfa('0xd')]+_0x1bfa('0x10')]){return rpc[this[_0x1bfa('0xd')]+_0x1bfa('0x10')]['create'](_0x190cbb)['then'](function(_0x268c74){logger['info'](_0x1bfa('0x11'),_0x48cede,_0x190cbb[_0x1bfa('0x12')]);_0x93d58d[_0x1bfa('0x13')]();})[_0x1bfa('0x14')](function(_0x42a6ee){logger[_0x1bfa('0x15')](_0x1bfa('0x11'),_0x48cede,JSON[_0x1bfa('0x16')](_0x42a6ee));_0x93d58d[_0x1bfa('0x17')]();});}}catch(_0x2f771d){logger['error'](_0x1bfa('0x11'),_0x48cede,JSON[_0x1bfa('0x16')](_0x2f771d));_0x93d58d[_0x1bfa('0x17')]();}};};
\ No newline at end of file
+var _0xac7a=['next','catch','error','[%s][MESSAGE]\x20%s','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','create','then','body'];(function(_0x5dfc2a,_0x1a953f){var _0x3f1a71=function(_0x15916){while(--_0x15916){_0x5dfc2a['push'](_0x5dfc2a['shift']());}};_0x3f1a71(++_0x1a953f);}(_0xac7a,0x128));var _0xaac7=function(_0x585748,_0x4a86fb){_0x585748=_0x585748-0x0;var _0x35816e=_0xac7a[_0x585748];return _0x35816e;};'use strict';var _=require(_0xaac7('0x0'));var utils=require(_0xaac7('0x1'));var logger=require(_0xaac7('0x2'))(_0xaac7('0x3'));var rpc={'chatMessage':require(_0xaac7('0x4')),'openchannelMessage':require(_0xaac7('0x5')),'mailMessage':require(_0xaac7('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xaac7('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xaac7('0x8')]=function(_0x1bcbe0,_0x4264b2){return function(_0x3be7be){try{var _0x2239bc={'body':utils[_0xaac7('0x9')](_0x4264b2[0x0],this),'ContactId':this[_0xaac7('0xa')]['id']};if(this[_0xaac7('0xb')]===_0xaac7('0xc')){_0x2239bc[_0xaac7('0xd')]=this[_0xaac7('0xe')]['id'];}else{_0x2239bc[_[_0xaac7('0xf')](this[_0xaac7('0xb')])+_0xaac7('0x10')]=this[_0xaac7('0xe')]['id'];}_0x2239bc[_[_0xaac7('0xf')](this[_0xaac7('0xb')])+_0xaac7('0x11')]=this[_0xaac7('0x12')]['id'];if(rpc[this[_0xaac7('0xb')]+_0xaac7('0x13')]){return rpc[this['channel']+_0xaac7('0x13')][_0xaac7('0x14')](_0x2239bc)[_0xaac7('0x15')](function(_0xe50e0){logger['info']('[%s][MESSAGE]\x20%s',_0x1bcbe0,_0x2239bc[_0xaac7('0x16')]);_0x3be7be[_0xaac7('0x17')]();})[_0xaac7('0x18')](function(_0x1f6e62){logger[_0xaac7('0x19')](_0xaac7('0x1a'),_0x1bcbe0,JSON[_0xaac7('0x1b')](_0x1f6e62));_0x3be7be[_0xaac7('0x1c')]();});}}catch(_0x5d4833){logger[_0xaac7('0x19')]('[%s][MESSAGE]\x20%s',_0x1bcbe0,JSON[_0xaac7('0x1b')](_0x5d4833));_0x3be7be['stop']();}};};
\ No newline at end of file
index a25240a..19163e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe26d=['consequence','info','[%s][NOOP]\x20%s','getMustacheRender','stringify','routing'];(function(_0x4cac40,_0x4295f8){var _0x38d0af=function(_0x2fca37){while(--_0x2fca37){_0x4cac40['push'](_0x4cac40['shift']());}};_0x38d0af(++_0x4295f8);}(_0xe26d,0x16d));var _0xde26=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe26d[_0x14add3];return _0x4a174f;};'use strict';var utils=require('./utils');var logger=require('../../../../config/logger')(_0xde26('0x0'));exports[_0xde26('0x1')]=function(_0xbb4b8e,_0x381c96){return function(_0x20eadd){try{logger[_0xde26('0x2')](_0xde26('0x3'),_0xbb4b8e,utils[_0xde26('0x4')](_0x381c96[0x0],this));_0x20eadd['next']();}catch(_0x4ef33d){logger['error'](_0xde26('0x3'),_0xbb4b8e,JSON[_0xde26('0x5')](_0x4ef33d));_0x20eadd['stop']();}};};
\ No newline at end of file
+var _0x23c7=['error','./utils','../../../../config/logger','routing','info','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x33a21a,_0x22d1a8){var _0x4c628e=function(_0x59edab){while(--_0x59edab){_0x33a21a['push'](_0x33a21a['shift']());}};_0x4c628e(++_0x22d1a8);}(_0x23c7,0x86));var _0x723c=function(_0x55944c,_0x157f0e){_0x55944c=_0x55944c-0x0;var _0x10edd7=_0x23c7[_0x55944c];return _0x10edd7;};'use strict';var utils=require(_0x723c('0x0'));var logger=require(_0x723c('0x1'))(_0x723c('0x2'));exports['consequence']=function(_0x977397,_0xcc8b7){return function(_0x4fa801){try{logger[_0x723c('0x3')](_0x723c('0x4'),_0x977397,utils[_0x723c('0x5')](_0xcc8b7[0x0],this));_0x4fa801['next']();}catch(_0x390fe0){logger[_0x723c('0x6')](_0x723c('0x4'),_0x977397,JSON['stringify'](_0x390fe0));_0x4fa801['stop']();}};};
\ No newline at end of file
index 5498e9a..2d47b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e7=['util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','account','from','joinAt','emit','clone','queue_id','queue','InteractionId','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','interaction','MessageId','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','timeout','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash'];(function(_0x34ca6c,_0x5dc3be){var _0x3e2d1a=function(_0x2290a5){while(--_0x2290a5){_0x34ca6c['push'](_0x34ca6c['shift']());}};_0x3e2d1a(++_0x5dc3be);}(_0xf5e7,0x189));var _0x7f5e=function(_0x5984bb,_0x56f02a){_0x5984bb=_0x5984bb-0x0;var _0x5351d8=_0xf5e7[_0x5984bb];return _0x5351d8;};'use strict';var schema=require(_0x7f5e('0x0'));var _=require(_0x7f5e('0x1'));var util=require(_0x7f5e('0x2'));var seqqueue=require(_0x7f5e('0x3'));var moment=require(_0x7f5e('0x4'));var Redis=require(_0x7f5e('0x5'));var config=require(_0x7f5e('0x6'));var logger=require(_0x7f5e('0x7'))(_0x7f5e('0x8'));var strategy=require('./strategy');config[_0x7f5e('0x9')]=_[_0x7f5e('0xa')](config['redis'],{'host':_0x7f5e('0xb'),'port':0x18eb});var io=require(_0x7f5e('0xc'))(new Redis(config[_0x7f5e('0x9')]));var attributes=['id','queue_id',_0x7f5e('0xd'),'queue',_0x7f5e('0xe'),_0x7f5e('0xf')];function emit(_0x5c6de4,_0x11e485,_0x3c7516){io['to'](_0x5c6de4)[_0x7f5e('0x10')](_0x11e485,_0x3c7516);}function emitChannelQueueInteraction(_0x194d0b,_0x5efbec,_0x37e2c3,_0x122554,_0x4e0d86,_0x4a9c66,_0x50224c,_0x374724){var _0x29067c=_[_0x7f5e('0x11')](_0x37e2c3);_0x29067c[_0x7f5e('0x12')]=_0x374724;_0x29067c[_0x7f5e('0x13')]=_0x5efbec;_0x29067c[_0x7f5e('0xd')]=_0x122554;_0x29067c['id']=_0x4e0d86;if(_0x4a9c66){attributes['push'](_['capitalize'](_0x194d0b)+_0x7f5e('0x14'));_0x50224c[util['format'](_0x7f5e('0x15'),_0x194d0b)][_0x4e0d86]=_[_0x7f5e('0x16')](_0x29067c,attributes);}else{delete _0x50224c[util[_0x7f5e('0x17')](_0x7f5e('0x15'),_0x194d0b)][_0x4e0d86];}emit(util['format'](_0x7f5e('0x18'),_0x194d0b,_0x5efbec),util[_0x7f5e('0x17')](_0x7f5e('0x19'),_0x194d0b,_0x4a9c66?'save':_0x7f5e('0x1a')),_[_0x7f5e('0x16')](_0x29067c,attributes));}var rpc={'openchannelQueueReport':require(_0x7f5e('0x1b')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x7f5e('0x1c')),'smsQueueReport':require(_0x7f5e('0x1d')),'faxQueueReport':require(_0x7f5e('0x1e')),'whatsappQueueReport':require(_0x7f5e('0x1f'))};var queue=schema({'name':{'type':_0x7f5e('0x20'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x7f5e('0x21'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0xf9fa11,_0x112940,_0x317f8c,_0xbe763a){if(_0xf9fa11&&_0x112940&&_0x317f8c){_0x112940[_0x7f5e('0x22')]+=0x1;var _0x17563a={'uniqueid':_0xf9fa11,'from':_0x317f8c[_0x7f5e('0x23')]?_0x317f8c[_0x7f5e('0x23')][_0x7f5e('0xe')]:'','joinAt':moment()['format'](_0x7f5e('0x24')),'ContactId':_0x317f8c[_0x7f5e('0x25')]?_0x317f8c[_0x7f5e('0x25')]['id']:null,'ListId':_0x317f8c[_0x7f5e('0x26')]?_0x317f8c[_0x7f5e('0x26')]['id']:null};_0x17563a[_['upperFirst'](_0x317f8c[_0x7f5e('0x27')])+_0x7f5e('0x28')]=_0x112940['id']||null;_0x17563a[_[_0x7f5e('0x29')](_0x317f8c['channel'])+_0x7f5e('0x14')]=_0x317f8c[_0x7f5e('0x2a')]?_0x317f8c[_0x7f5e('0x2a')]['id']:null;_0x17563a[_[_0x7f5e('0x29')](_0x317f8c[_0x7f5e('0x27')])+_0x7f5e('0x2b')]=_0x317f8c['message']?_0x317f8c[_0x7f5e('0x2c')]['id']:null;_0x17563a[_[_0x7f5e('0x29')](_0x317f8c[_0x7f5e('0x27')])+(_0x317f8c[_0x7f5e('0x27')]!==_0x7f5e('0x2d')?_0x7f5e('0x2e'):_0x7f5e('0x2f'))]=_0x317f8c[_0x7f5e('0xd')]?_0x317f8c[_0x7f5e('0xd')]['id']:null;logger[_0x7f5e('0x30')](util[_0x7f5e('0x17')](_0x7f5e('0x31'),_0xf9fa11,_0x112940['name']));emitChannelQueueInteraction(_0x317f8c[_0x7f5e('0x27')],_0x112940[_0x7f5e('0x32')],_0x17563a,_0x317f8c['account'][_0x7f5e('0x32')],_0x317f8c[_0x7f5e('0x2c')]['id'],!![],_0xbe763a,_0x112940['id']);if(rpc[_0x317f8c['channel']+_0x7f5e('0x33')]){return rpc[_0x317f8c[_0x7f5e('0x27')]+'QueueReport'][_0x7f5e('0x34')](_0x17563a)[_0x7f5e('0x35')](function(_0x4bd961){logger[_0x7f5e('0x36')](_0x7f5e('0x37'));});}}}function stopRouting(_0x75503c,_0x2317bb,_0x27d13b,_0x496b18){if(_0x75503c&&_0x2317bb){_0x2317bb[_0x7f5e('0x22')]-=0x1;var _0x15337c={'leaveAt':moment()[_0x7f5e('0x17')](_0x7f5e('0x24')),'acceptAt':moment()['format'](_0x7f5e('0x24')),'reason':_0x7f5e('0x38')};logger[_0x7f5e('0x30')](util[_0x7f5e('0x17')](_0x7f5e('0x39'),_0x75503c,_0x2317bb[_0x7f5e('0x32')]));emitChannelQueueInteraction(_0x27d13b[_0x7f5e('0x27')],_0x2317bb[_0x7f5e('0x32')],_0x27d13b[_0x7f5e('0x23')],_0x27d13b[_0x7f5e('0xd')]['name'],_0x27d13b[_0x7f5e('0x2c')]['id'],![],_0x496b18,_0x2317bb['id']);if(rpc[_0x27d13b[_0x7f5e('0x27')]+_0x7f5e('0x33')]){return rpc[_0x27d13b[_0x7f5e('0x27')]+_0x7f5e('0x33')][_0x7f5e('0x3a')](_0x75503c,_0x15337c)[_0x7f5e('0x35')](function(_0x446478){logger[_0x7f5e('0x36')](_0x7f5e('0x3b'));});}}}function endRouting(_0x409350,_0x2cd4ba,_0x472006,_0x122b39){if(_0x409350&&_0x2cd4ba){_0x2cd4ba[_0x7f5e('0x22')]-=0x1;var _0x57db71={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()['format'](_0x7f5e('0x24')),'reason':'timeout'};logger[_0x7f5e('0x30')](util[_0x7f5e('0x17')]('[%s][END:QUEUE][NAME:%s]',_0x409350,_0x2cd4ba[_0x7f5e('0x32')]));emitChannelQueueInteraction(_0x472006['channel'],_0x2cd4ba[_0x7f5e('0x32')],_0x472006[_0x7f5e('0x23')],_0x472006['account'][_0x7f5e('0x32')],_0x472006[_0x7f5e('0x2c')]['id'],![],_0x122b39);if(rpc[_0x472006['channel']+_0x7f5e('0x33')]){return rpc[_0x472006[_0x7f5e('0x27')]+_0x7f5e('0x33')][_0x7f5e('0x3a')](_0x409350,_0x57db71)[_0x7f5e('0x35')](function(_0x5ed1b2){logger['error']('update\x20queue\x20report');});}}}function handleFindQueue(_0xc1e392){return function(_0x4a0c52){return _0x4a0c52['name'][_0x7f5e('0x3c')]()===_0xc1e392[_0x7f5e('0x3c')]();};}exports[_0x7f5e('0x3d')]=function(_0x592fd1,_0x55655c,_0x258fba,_0x3a7f2){return function(_0x4ceb14){try{var _0x3a89c7={'name':_0x55655c[0x0],'timeout':_0x55655c[0x1]};var _0x453f9a=queue[_0x7f5e('0x0')](_0x3a89c7,{'typecast':!![]});if(_0x453f9a[_0x7f5e('0x3e')]){logger['error'](_0x7f5e('0x3f'),_0x592fd1,_['map'](_0x453f9a,_0x7f5e('0x2c'))[_0x7f5e('0x40')](',\x20'));_0x4ceb14[_0x7f5e('0x41')]();}else{var _0x4030d=_['find'](_0x258fba[_0x3a7f2[_0x7f5e('0x27')]+'Queues'],handleFindQueue(_0x3a89c7[_0x7f5e('0x32')]));if(_0x4030d){startRouting(_0x592fd1,_0x4030d,_0x3a7f2,_0x258fba);var _0xd17b91=(_0x4030d[_0x7f5e('0x42')]||0xa)*0x3e8;var _0x40c4a4=(_0x3a89c7[_0x7f5e('0x42')]||0x14)*0x3e8;var _0x3e09a3;if(_0xd17b91>_0x40c4a4){_0x40c4a4=_0xd17b91;}var _0x2f579f=seqqueue['createQueue'](_0xd17b91);_0x2f579f['id']=_0x592fd1;_0x2f579f[_0x7f5e('0x43')]=_0xd17b91;_0x2f579f[_0x7f5e('0x44')]=_0x40c4a4;_0x2f579f['channel']=_0x3a7f2[_0x7f5e('0x27')];_0x258fba[_0x7f5e('0x45')][_0x592fd1]['on'](_0x7f5e('0x46'),function(){logger[_0x7f5e('0x30')](_0x7f5e('0x47'),_0x592fd1);stopRouting(_0x592fd1,_0x4030d,_0x3a7f2,_0x258fba);clearTimeout(_0x3e09a3);_0x3e09a3=undefined;_0x2f579f[_0x7f5e('0x48')](!![]);if(_0x258fba[_0x7f5e('0x45')][_0x592fd1]){delete _0x258fba[_0x7f5e('0x45')][_0x592fd1];}_0x4ceb14[_0x7f5e('0x41')]();});_0x258fba['rules'][_0x592fd1]['on']('complete',function(){if(_0x258fba[_0x7f5e('0x45')][_0x592fd1]){delete _0x258fba[_0x7f5e('0x45')][_0x592fd1];}});_0x3e09a3=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x592fd1);endRouting(_0x592fd1,_0x4030d,_0x3a7f2,_0x258fba);clearTimeout(_0x3e09a3);_0x2f579f['close'](!![]);_0x4ceb14[_0x7f5e('0x49')]();},_0x40c4a4);switch(_0x4030d['strategy']){case _0x7f5e('0x4a'):strategy[_0x7f5e('0x4a')](_0x2f579f,_0x4030d,_0x258fba,_0x3a7f2);break;default:strategy[_0x7f5e('0x4b')](_0x2f579f,_0x4030d,_0x258fba,_0x3a7f2);}}else{logger['error'](_0x7f5e('0x4c'),_0x592fd1,_0x3a89c7['name']);_0x4ceb14[_0x7f5e('0x41')]();}}}catch(_0x1e6304){console[_0x7f5e('0x4d')](_0x1e6304);logger[_0x7f5e('0x36')](_0x7f5e('0x3f'),_0x592fd1,_0x1e6304[_0x7f5e('0x4e')]);_0x4ceb14[_0x7f5e('0x41')]();}};};
\ No newline at end of file
+var _0xbf3a=['capitalize','InteractionId','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','message','chat','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','update','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','log','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','from','joinAt','emit','clone','queue_id','queue','account','push'];(function(_0x5bd89a,_0x12aefb){var _0x2ceb2b=function(_0xda0832){while(--_0xda0832){_0x5bd89a['push'](_0x5bd89a['shift']());}};_0x2ceb2b(++_0x12aefb);}(_0xbf3a,0xe4));var _0xabf3=function(_0x303c30,_0x16edcb){_0x303c30=_0x303c30-0x0;var _0x43161b=_0xbf3a[_0x303c30];return _0x43161b;};'use strict';var schema=require('validate');var _=require(_0xabf3('0x0'));var util=require(_0xabf3('0x1'));var seqqueue=require(_0xabf3('0x2'));var moment=require(_0xabf3('0x3'));var Redis=require(_0xabf3('0x4'));var config=require(_0xabf3('0x5'));var logger=require(_0xabf3('0x6'))(_0xabf3('0x7'));var strategy=require(_0xabf3('0x8'));config[_0xabf3('0x9')]=_[_0xabf3('0xa')](config[_0xabf3('0x9')],{'host':_0xabf3('0xb'),'port':0x18eb});var io=require(_0xabf3('0xc'))(new Redis(config[_0xabf3('0x9')]));var attributes=['id','queue_id','account','queue',_0xabf3('0xd'),_0xabf3('0xe')];function emit(_0x42b44d,_0x5d00bb,_0x2e70a0){io['to'](_0x42b44d)[_0xabf3('0xf')](_0x5d00bb,_0x2e70a0);}function emitChannelQueueInteraction(_0xe2f972,_0x4b87cc,_0x9faf27,_0x57eb18,_0x527c8c,_0x236666,_0x248f5f,_0x2e842c){var _0x3904a1=_[_0xabf3('0x10')](_0x9faf27);_0x3904a1[_0xabf3('0x11')]=_0x2e842c;_0x3904a1[_0xabf3('0x12')]=_0x4b87cc;_0x3904a1[_0xabf3('0x13')]=_0x57eb18;_0x3904a1['id']=_0x527c8c;if(_0x236666){attributes[_0xabf3('0x14')](_[_0xabf3('0x15')](_0xe2f972)+_0xabf3('0x16'));_0x248f5f[util[_0xabf3('0x17')](_0xabf3('0x18'),_0xe2f972)][_0x527c8c]=_[_0xabf3('0x19')](_0x3904a1,attributes);}else{delete _0x248f5f[util[_0xabf3('0x17')]('%sQueuesWaitingInteractions',_0xe2f972)][_0x527c8c];}emit(util[_0xabf3('0x17')](_0xabf3('0x1a'),_0xe2f972,_0x4b87cc),util['format'](_0xabf3('0x1b'),_0xe2f972,_0x236666?_0xabf3('0x1c'):_0xabf3('0x1d')),_[_0xabf3('0x19')](_0x3904a1,attributes));}var rpc={'openchannelQueueReport':require(_0xabf3('0x1e')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xabf3('0x1f')),'faxQueueReport':require(_0xabf3('0x20')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xabf3('0x21'),'required':!![],'message':_0xabf3('0x22')},'timeout':{'type':'number','message':_0xabf3('0x23')}});function startRouting(_0x53d609,_0x59e4fa,_0x31ffa0,_0x1c8c91){if(_0x53d609&&_0x59e4fa&&_0x31ffa0){_0x59e4fa[_0xabf3('0x24')]+=0x1;var _0x2e144a={'uniqueid':_0x53d609,'from':_0x31ffa0['body']?_0x31ffa0[_0xabf3('0x25')][_0xabf3('0xd')]:'','joinAt':moment()[_0xabf3('0x17')](_0xabf3('0x26')),'ContactId':_0x31ffa0[_0xabf3('0x27')]?_0x31ffa0[_0xabf3('0x27')]['id']:null,'ListId':_0x31ffa0[_0xabf3('0x28')]?_0x31ffa0[_0xabf3('0x28')]['id']:null};_0x2e144a[_[_0xabf3('0x29')](_0x31ffa0[_0xabf3('0x2a')])+_0xabf3('0x2b')]=_0x59e4fa['id']||null;_0x2e144a[_[_0xabf3('0x29')](_0x31ffa0[_0xabf3('0x2a')])+_0xabf3('0x16')]=_0x31ffa0[_0xabf3('0x2c')]?_0x31ffa0[_0xabf3('0x2c')]['id']:null;_0x2e144a[_[_0xabf3('0x29')](_0x31ffa0[_0xabf3('0x2a')])+'MessageId']=_0x31ffa0[_0xabf3('0x2d')]?_0x31ffa0[_0xabf3('0x2d')]['id']:null;_0x2e144a[_[_0xabf3('0x29')](_0x31ffa0[_0xabf3('0x2a')])+(_0x31ffa0[_0xabf3('0x2a')]!==_0xabf3('0x2e')?_0xabf3('0x2f'):_0xabf3('0x30'))]=_0x31ffa0[_0xabf3('0x13')]?_0x31ffa0[_0xabf3('0x13')]['id']:null;logger[_0xabf3('0x31')](util[_0xabf3('0x17')](_0xabf3('0x32'),_0x53d609,_0x59e4fa['name']));emitChannelQueueInteraction(_0x31ffa0[_0xabf3('0x2a')],_0x59e4fa['name'],_0x2e144a,_0x31ffa0[_0xabf3('0x13')][_0xabf3('0x33')],_0x31ffa0['message']['id'],!![],_0x1c8c91,_0x59e4fa['id']);if(rpc[_0x31ffa0[_0xabf3('0x2a')]+_0xabf3('0x34')]){return rpc[_0x31ffa0[_0xabf3('0x2a')]+_0xabf3('0x34')][_0xabf3('0x35')](_0x2e144a)['catch'](function(_0x1a6f0a){logger[_0xabf3('0x36')](_0xabf3('0x37'));});}}}function stopRouting(_0x1886e2,_0x2b4963,_0xe4b61c,_0x5ce1f8){if(_0x1886e2&&_0x2b4963){_0x2b4963[_0xabf3('0x24')]-=0x1;var _0x25891c={'leaveAt':moment()['format'](_0xabf3('0x26')),'acceptAt':moment()[_0xabf3('0x17')](_0xabf3('0x26')),'reason':'accepted'};logger['info'](util[_0xabf3('0x17')](_0xabf3('0x38'),_0x1886e2,_0x2b4963[_0xabf3('0x33')]));emitChannelQueueInteraction(_0xe4b61c['channel'],_0x2b4963[_0xabf3('0x33')],_0xe4b61c[_0xabf3('0x25')],_0xe4b61c[_0xabf3('0x13')][_0xabf3('0x33')],_0xe4b61c[_0xabf3('0x2d')]['id'],![],_0x5ce1f8,_0x2b4963['id']);if(rpc[_0xe4b61c[_0xabf3('0x2a')]+_0xabf3('0x34')]){return rpc[_0xe4b61c[_0xabf3('0x2a')]+_0xabf3('0x34')][_0xabf3('0x39')](_0x1886e2,_0x25891c)[_0xabf3('0x3a')](function(_0x53fce7){logger['error'](_0xabf3('0x3b'));});}}}function endRouting(_0x3a36e3,_0x42166e,_0xe6ea0a,_0x54b2f8){if(_0x3a36e3&&_0x42166e){_0x42166e[_0xabf3('0x24')]-=0x1;var _0xe882e={'leaveAt':moment()['format'](_0xabf3('0x26')),'exitAt':moment()[_0xabf3('0x17')](_0xabf3('0x26')),'reason':_0xabf3('0x3c')};logger[_0xabf3('0x31')](util[_0xabf3('0x17')](_0xabf3('0x3d'),_0x3a36e3,_0x42166e[_0xabf3('0x33')]));emitChannelQueueInteraction(_0xe6ea0a[_0xabf3('0x2a')],_0x42166e[_0xabf3('0x33')],_0xe6ea0a[_0xabf3('0x25')],_0xe6ea0a[_0xabf3('0x13')][_0xabf3('0x33')],_0xe6ea0a['message']['id'],![],_0x54b2f8);if(rpc[_0xe6ea0a['channel']+_0xabf3('0x34')]){return rpc[_0xe6ea0a[_0xabf3('0x2a')]+_0xabf3('0x34')]['update'](_0x3a36e3,_0xe882e)[_0xabf3('0x3a')](function(_0x38ca0f){logger[_0xabf3('0x36')](_0xabf3('0x3b'));});}}}function handleFindQueue(_0x1515e3){return function(_0x514cd7){return _0x514cd7['name'][_0xabf3('0x3e')]()===_0x1515e3[_0xabf3('0x3e')]();};}exports[_0xabf3('0x3f')]=function(_0x28b9ee,_0x40db58,_0xef8652,_0x4923c5){return function(_0x467492){try{var _0x1d2394={'name':_0x40db58[0x0],'timeout':_0x40db58[0x1]};var _0x17a817=queue[_0xabf3('0x40')](_0x1d2394,{'typecast':!![]});if(_0x17a817[_0xabf3('0x41')]){logger[_0xabf3('0x36')](_0xabf3('0x42'),_0x28b9ee,_['map'](_0x17a817,_0xabf3('0x2d'))[_0xabf3('0x43')](',\x20'));_0x467492[_0xabf3('0x44')]();}else{var _0x3d9255=_[_0xabf3('0x45')](_0xef8652[_0x4923c5[_0xabf3('0x2a')]+_0xabf3('0x46')],handleFindQueue(_0x1d2394[_0xabf3('0x33')]));if(_0x3d9255){startRouting(_0x28b9ee,_0x3d9255,_0x4923c5,_0xef8652);var _0x5869b3=(_0x3d9255[_0xabf3('0x3c')]||0xa)*0x3e8;var _0x63a1b5=(_0x1d2394['timeout']||0x14)*0x3e8;var _0x3933e0;if(_0x5869b3>_0x63a1b5){_0x63a1b5=_0x5869b3;}var _0x150095=seqqueue[_0xabf3('0x47')](_0x5869b3);_0x150095['id']=_0x28b9ee;_0x150095['atimeout']=_0x5869b3;_0x150095['qtimeout']=_0x63a1b5;_0x150095[_0xabf3('0x2a')]=_0x4923c5['channel'];_0xef8652[_0xabf3('0x48')][_0x28b9ee]['on'](_0xabf3('0x49'),function(){logger[_0xabf3('0x31')](_0xabf3('0x4a'),_0x28b9ee);stopRouting(_0x28b9ee,_0x3d9255,_0x4923c5,_0xef8652);clearTimeout(_0x3933e0);_0x3933e0=undefined;_0x150095[_0xabf3('0x4b')](!![]);if(_0xef8652[_0xabf3('0x48')][_0x28b9ee]){delete _0xef8652[_0xabf3('0x48')][_0x28b9ee];}_0x467492[_0xabf3('0x44')]();});_0xef8652[_0xabf3('0x48')][_0x28b9ee]['on'](_0xabf3('0x4c'),function(){if(_0xef8652[_0xabf3('0x48')][_0x28b9ee]){delete _0xef8652['rules'][_0x28b9ee];}});_0x3933e0=setTimeout(function(){logger[_0xabf3('0x31')](_0xabf3('0x4d'),_0x28b9ee);endRouting(_0x28b9ee,_0x3d9255,_0x4923c5,_0xef8652);clearTimeout(_0x3933e0);_0x150095['close'](!![]);_0x467492[_0xabf3('0x4e')]();},_0x63a1b5);switch(_0x3d9255[_0xabf3('0x4f')]){case _0xabf3('0x50'):strategy[_0xabf3('0x50')](_0x150095,_0x3d9255,_0xef8652,_0x4923c5);break;default:strategy[_0xabf3('0x51')](_0x150095,_0x3d9255,_0xef8652,_0x4923c5);}}else{logger[_0xabf3('0x36')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x28b9ee,_0x1d2394[_0xabf3('0x33')]);_0x467492[_0xabf3('0x44')]();}}}catch(_0x2c3017){console[_0xabf3('0x52')](_0x2c3017);logger[_0xabf3('0x36')](_0xabf3('0x42'),_0x28b9ee,_0x2c3017['stack']);_0x467492[_0xabf3('0x44')]();}};};
\ No newline at end of file
index 5583b3c..e483c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['prototype','push','debug','[%s][AGENT]\x20try\x20with\x20%s','agents','routing','forcedOwnership','isAgentAvailable','busy','saveWaitingNotification','channel','showNotification','writeLog','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busyQueue','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','notificationId','agent','realtime','squeue','handleRun','bind','handleTimeout','handleDrained'];(function(_0x2e31c9,_0x4a28e3){var _0x219e6f=function(_0x392c91){while(--_0x392c91){_0x2e31c9['push'](_0x2e31c9['shift']());}};_0x219e6f(++_0x4a28e3);}(_0x7da7,0x10d));var _0x77da=function(_0x7b484,_0x195ad4){_0x7b484=_0x7b484-0x0;var _0x2ae1cf=_0x7da7[_0x7b484];return _0x2ae1cf;};'use strict';var _=require(_0x77da('0x0'));var uuid=require(_0x77da('0x1'));var util=require(_0x77da('0x2'));var logger=require('../../../../../config/logger')('routing');var Agent=function(_0x37667b,_0xaaefb1,_0x4f60c3,_0x3a9fa6){this[_0x77da('0x3')]=uuid['v4']();this['squeue']=_0x37667b;this[_0x77da('0x4')]=_0xaaefb1;this[_0x77da('0x5')]=_0x4f60c3;this['routing']=_0x3a9fa6;this[_0x77da('0x6')]['push'](this[_0x77da('0x7')][_0x77da('0x8')](this),this[_0x77da('0x9')][_0x77da('0x8')](this));this[_0x77da('0x6')]['on']('timeout',this[_0x77da('0x9')][_0x77da('0x8')](this));this[_0x77da('0x6')]['on']('drained',this[_0x77da('0xa')][_0x77da('0x8')](this));};Agent[_0x77da('0xb')][_0x77da('0xc')]=function(){this['squeue'][_0x77da('0xc')](this[_0x77da('0x7')][_0x77da('0x8')](this),this['handleTimeout']['bind'](this));};Agent[_0x77da('0xb')][_0x77da('0xa')]=function(){this['handleTimeout'](!![]);};Agent[_0x77da('0xb')][_0x77da('0x7')]=function(){logger[_0x77da('0xd')](_0x77da('0xe'),this['squeue']['id'],this[_0x77da('0x4')]['id']);if(_['isNil'](this[_0x77da('0x5')][_0x77da('0xf')][this[_0x77da('0x4')]['id']])){logger[_0x77da('0xd')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agent']['id']);setTimeout(this['push'][_0x77da('0x8')](this),0x3e8);}else{if(this[_0x77da('0x10')][_0x77da('0x11')]||util[_0x77da('0x12')](this[_0x77da('0x6')]['id'],this[_0x77da('0x5')][_0x77da('0xf')][this[_0x77da('0x4')]['id']],this['squeue']['channel'],![])){this[_0x77da('0x5')][_0x77da('0xf')][this['agent']['id']][_0x77da('0x13')]=!![];this[_0x77da('0x5')][_0x77da('0xf')][this['agent']['id']]['busyQueue']=undefined;util[_0x77da('0x14')](this['realtime'],this[_0x77da('0x10')],this[_0x77da('0x4')],this[_0x77da('0x6')][_0x77da('0x15')]);util[_0x77da('0x16')](this[_0x77da('0x3')],this[_0x77da('0x6')]['id'],this['realtime']['agents'][this[_0x77da('0x4')]['id']],null,this[_0x77da('0x10')]);util[_0x77da('0x17')](this[_0x77da('0x6')]['id'],this['realtime'][_0x77da('0xf')][this[_0x77da('0x4')]['id']],_0x77da('0x18')+(this[_0x77da('0x10')][_0x77da('0x11')]?':FORCED':''));}else{logger[_0x77da('0xd')](_0x77da('0x19'),this[_0x77da('0x6')]['id'],this[_0x77da('0x4')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent['prototype'][_0x77da('0x9')]=function(_0x30456a){if(_[_0x77da('0x1a')](this[_0x77da('0x5')][_0x77da('0xf')][this['agent']['id']])){return logger[_0x77da('0xd')](_0x77da('0x1b'),this[_0x77da('0x6')]['id'],this[_0x77da('0x4')]['id']);}else{logger[_0x77da('0xd')](_0x77da('0x1c'),this['squeue']['id'],this[_0x77da('0x4')]['id']);util[_0x77da('0x1d')](this[_0x77da('0x3')],this[_0x77da('0x6')]['id'],this[_0x77da('0x5')][_0x77da('0xf')][this[_0x77da('0x4')]['id']],null,this[_0x77da('0x10')]);this['realtime']['agents'][this[_0x77da('0x4')]['id']][_0x77da('0x13')]=![];this['realtime'][_0x77da('0xf')][this[_0x77da('0x4')]['id']][_0x77da('0x1e')]=undefined;util[_0x77da('0x1f')](this[_0x77da('0x5')],this[_0x77da('0x10')],this[_0x77da('0x4')],this['squeue'][_0x77da('0x15')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0x77da('0xf')][this['agent']['id']],_0x30456a?_0x77da('0x20'):_0x77da('0x21'));}if(!_0x30456a){setTimeout(this[_0x77da('0xc')][_0x77da('0x8')](this),0x3e8);}};function agent(_0x3c46d2,_0x3f0593,_0x43c20a,_0x501306){return new Agent(_0x3c46d2,_0x3f0593,_0x43c20a,_0x501306);}module[_0x77da('0x22')]=agent;
\ No newline at end of file
+var _0x84ab=['realtime','channel','busy','busyQueue','saveWaitingNotification','showNotification','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','agent','push','bind','handleTimeout','prototype','handleRun','handleDrained','debug','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x84ab,0x12f));var _0xb84a=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x84ab[_0x2a6809];return _0x11c371;};'use strict';var _=require(_0xb84a('0x0'));var uuid=require(_0xb84a('0x1'));var util=require(_0xb84a('0x2'));var logger=require(_0xb84a('0x3'))(_0xb84a('0x4'));var Agent=function(_0x512f13,_0xc83587,_0x18a4a5,_0x47b8e3){this[_0xb84a('0x5')]=uuid['v4']();this[_0xb84a('0x6')]=_0x512f13;this[_0xb84a('0x7')]=_0xc83587;this['realtime']=_0x18a4a5;this['routing']=_0x47b8e3;this['squeue'][_0xb84a('0x8')](this['handleRun'][_0xb84a('0x9')](this),this[_0xb84a('0xa')]['bind'](this));this[_0xb84a('0x6')]['on']('timeout',this[_0xb84a('0xa')][_0xb84a('0x9')](this));this[_0xb84a('0x6')]['on']('drained',this['handleDrained']['bind'](this));};Agent[_0xb84a('0xb')][_0xb84a('0x8')]=function(){this[_0xb84a('0x6')][_0xb84a('0x8')](this[_0xb84a('0xc')]['bind'](this),this[_0xb84a('0xa')][_0xb84a('0x9')](this));};Agent[_0xb84a('0xb')][_0xb84a('0xd')]=function(){this[_0xb84a('0xa')](!![]);};Agent[_0xb84a('0xb')][_0xb84a('0xc')]=function(){logger[_0xb84a('0xe')](_0xb84a('0xf'),this[_0xb84a('0x6')]['id'],this[_0xb84a('0x7')]['id']);if(_[_0xb84a('0x10')](this['realtime'][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']])){logger[_0xb84a('0xe')](_0xb84a('0x12'),this[_0xb84a('0x6')]['id'],this[_0xb84a('0x7')]['id']);setTimeout(this[_0xb84a('0x8')][_0xb84a('0x9')](this),0x3e8);}else{if(this[_0xb84a('0x4')][_0xb84a('0x13')]||util[_0xb84a('0x14')](this[_0xb84a('0x6')]['id'],this[_0xb84a('0x15')][_0xb84a('0x11')][this['agent']['id']],this[_0xb84a('0x6')][_0xb84a('0x16')],![])){this['realtime'][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']][_0xb84a('0x17')]=!![];this[_0xb84a('0x15')]['agents'][this['agent']['id']][_0xb84a('0x18')]=undefined;util[_0xb84a('0x19')](this[_0xb84a('0x15')],this[_0xb84a('0x4')],this[_0xb84a('0x7')],this[_0xb84a('0x6')][_0xb84a('0x16')]);util[_0xb84a('0x1a')](this[_0xb84a('0x5')],this[_0xb84a('0x6')]['id'],this[_0xb84a('0x15')][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']],null,this[_0xb84a('0x4')]);util[_0xb84a('0x1b')](this[_0xb84a('0x6')]['id'],this[_0xb84a('0x15')][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']],_0xb84a('0x1c')+(this[_0xb84a('0x4')][_0xb84a('0x13')]?_0xb84a('0x1d'):''));}else{logger[_0xb84a('0xe')](_0xb84a('0x1e'),this[_0xb84a('0x6')]['id'],this['agent']['id']);setTimeout(this['push'][_0xb84a('0x9')](this),0x3e8);}}};Agent[_0xb84a('0xb')]['handleTimeout']=function(_0x1f690a){if(_[_0xb84a('0x10')](this['realtime']['agents'][this[_0xb84a('0x7')]['id']])){return logger[_0xb84a('0xe')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xb84a('0x6')]['id'],this[_0xb84a('0x7')]['id']);}else{logger[_0xb84a('0xe')](_0xb84a('0x1f'),this[_0xb84a('0x6')]['id'],this[_0xb84a('0x7')]['id']);util[_0xb84a('0x20')](this[_0xb84a('0x5')],this['squeue']['id'],this[_0xb84a('0x15')]['agents'][this['agent']['id']],null,this[_0xb84a('0x4')]);this[_0xb84a('0x15')]['agents'][this['agent']['id']][_0xb84a('0x17')]=![];this[_0xb84a('0x15')][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']][_0xb84a('0x18')]=undefined;util[_0xb84a('0x21')](this[_0xb84a('0x15')],this[_0xb84a('0x4')],this['agent'],this[_0xb84a('0x6')][_0xb84a('0x16')]);util[_0xb84a('0x1b')](this[_0xb84a('0x6')]['id'],this[_0xb84a('0x15')][_0xb84a('0x11')][this[_0xb84a('0x7')]['id']],_0x1f690a?'STOP':_0xb84a('0x22'));}if(!_0x1f690a){setTimeout(this['push'][_0xb84a('0x9')](this),0x3e8);}};function agent(_0xb93cca,_0x2f7e6c,_0x4d04fb,_0x4af084){return new Agent(_0xb93cca,_0x2f7e6c,_0x4d04fb,_0x4af084);}module[_0xb84a('0x23')]=agent;
\ No newline at end of file
index 8b70b6c..c85c527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14aa=['realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busyQueue','saveWaitingNotification','hideNotification','STOP','removeWaitingNotification','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','queue','bind','timeout','handleTimeout','drained','handleDrained','push','handleRun','prototype','isNil','Agents','length'];(function(_0x197989,_0x140b24){var _0x429a4d=function(_0x3b2110){while(--_0x3b2110){_0x197989['push'](_0x197989['shift']());}};_0x429a4d(++_0x140b24);}(_0x14aa,0x1ce));var _0xa14a=function(_0x288742,_0x1cae8d){_0x288742=_0x288742-0x0;var _0x48e6e6=_0x14aa[_0x288742];return _0x48e6e6;};'use strict';var _=require(_0xa14a('0x0'));var uuid=require(_0xa14a('0x1'));var util=require('./util');var logger=require(_0xa14a('0x2'))(_0xa14a('0x3'));var Beepall=function(_0x37f1ee,_0x51a3a0,_0x37ead3,_0x144650){this[_0xa14a('0x4')]=uuid['v4']();this[_0xa14a('0x5')]=_0x37f1ee;this[_0xa14a('0x6')]=_0x51a3a0;this['realtime']=_0x37ead3;this['routing']=_0x144650;this[_0xa14a('0x5')]['push'](this['handleRun']['bind'](this),this['handleTimeout'][_0xa14a('0x7')](this));this['squeue']['on'](_0xa14a('0x8'),this[_0xa14a('0x9')][_0xa14a('0x7')](this));this[_0xa14a('0x5')]['on'](_0xa14a('0xa'),this[_0xa14a('0xb')][_0xa14a('0x7')](this));};Beepall['prototype']['push']=function(){this[_0xa14a('0x5')][_0xa14a('0xc')](this[_0xa14a('0xd')][_0xa14a('0x7')](this),this[_0xa14a('0x9')][_0xa14a('0x7')](this));};Beepall['prototype'][_0xa14a('0xb')]=function(){this['handleTimeout'](!![]);};Beepall[_0xa14a('0xe')][_0xa14a('0xd')]=function(){var _0x101083=!![];if(!_[_0xa14a('0xf')](this[_0xa14a('0x6')])&&!_[_0xa14a('0xf')](this[_0xa14a('0x6')][_0xa14a('0x10')])&&this['queue'][_0xa14a('0x10')]['length']>0x0){for(var _0x89787d=0x0,_0x2c97d5;_0x89787d<this[_0xa14a('0x6')][_0xa14a('0x10')][_0xa14a('0x11')];_0x89787d+=0x1){_0x2c97d5=this[_0xa14a('0x6')][_0xa14a('0x10')][_0x89787d]['id'];if(_[_0xa14a('0xf')](this[_0xa14a('0x12')][_0xa14a('0x13')][_0x2c97d5])){logger[_0xa14a('0x14')](_0xa14a('0x15'),this[_0xa14a('0x5')]['id'],_0x2c97d5);}else{if(util[_0xa14a('0x16')](this['squeue']['id'],this[_0xa14a('0x12')][_0xa14a('0x13')][_0x2c97d5],this['squeue'][_0xa14a('0x17')],!![])){_0x101083=![];util[_0xa14a('0x18')](this['squeue']['id'],this['realtime']['agents'][_0x2c97d5],_0xa14a('0x19'));this['realtime']['agents'][_0x2c97d5]['busy']=!![];this[_0xa14a('0x12')][_0xa14a('0x13')][_0x2c97d5][_0xa14a('0x1a')]=this[_0xa14a('0x6')]['name'];util[_0xa14a('0x1b')](this[_0xa14a('0x12')],this[_0xa14a('0x3')],this[_0xa14a('0x6')][_0xa14a('0x10')][_0x89787d],this['squeue'][_0xa14a('0x17')]);util['showNotification'](this[_0xa14a('0x4')],this[_0xa14a('0x5')]['id'],this[_0xa14a('0x12')][_0xa14a('0x13')][_0x2c97d5],this[_0xa14a('0x6')],this[_0xa14a('0x3')]);}}}if(_0x101083){logger['debug']('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xa14a('0x5')]['id']);setTimeout(this['push'][_0xa14a('0x7')](this),0x3e8);}}else{logger[_0xa14a('0x14')]('[%s][QUEUE]\x20EMPTY',this[_0xa14a('0x5')]['id']);setTimeout(this[_0xa14a('0xc')][_0xa14a('0x7')](this),0x3e8);}};Beepall[_0xa14a('0xe')][_0xa14a('0x9')]=function(_0x6b823e){if(!_[_0xa14a('0xf')](this[_0xa14a('0x6')])&&!_[_0xa14a('0xf')](this[_0xa14a('0x6')]['Agents'])){for(var _0x8c8913=0x0,_0x22af2b;_0x8c8913<this[_0xa14a('0x6')]['Agents'][_0xa14a('0x11')];_0x8c8913+=0x1){_0x22af2b=this['queue'][_0xa14a('0x10')][_0x8c8913]['id'];if(_[_0xa14a('0xf')](this['realtime'][_0xa14a('0x13')][_0x22af2b])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x22af2b);}else{util[_0xa14a('0x1c')](this[_0xa14a('0x4')],this[_0xa14a('0x5')]['id'],this[_0xa14a('0x12')][_0xa14a('0x13')][_0x22af2b],this['queue'],this[_0xa14a('0x3')]);util[_0xa14a('0x18')](this[_0xa14a('0x5')]['id'],this[_0xa14a('0x12')][_0xa14a('0x13')][_0x22af2b],_0x6b823e?_0xa14a('0x1d'):'TIMEOUT');this[_0xa14a('0x12')][_0xa14a('0x13')][_0x22af2b]['busy']=![];this[_0xa14a('0x12')]['agents'][_0x22af2b][_0xa14a('0x1a')]=undefined;util[_0xa14a('0x1e')](this[_0xa14a('0x12')],this[_0xa14a('0x3')],this[_0xa14a('0x12')][_0xa14a('0x13')][_0x22af2b],this[_0xa14a('0x5')][_0xa14a('0x17')]);}}}if(!_0x6b823e){setTimeout(this['push']['bind'](this),0x3e8);}};function beepall(_0xff8f9,_0x35f947,_0x5dbcda,_0x230391){return new Beepall(_0xff8f9,_0x35f947,_0x5dbcda,_0x230391);}module[_0xa14a('0x1f')]=beepall;
\ No newline at end of file
+var _0x0b9f=['timeout','drained','prototype','push','handleDrained','isNil','Agents','length','agents','debug','isAgentAvailable','channel','writeLog','busyQueue','name','showNotification','notificationId','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','STOP','TIMEOUT','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','squeue','queue','realtime','routing','handleRun','handleTimeout','bind'];(function(_0x2499b4,_0x50738d){var _0x159617=function(_0x196de3){while(--_0x196de3){_0x2499b4['push'](_0x2499b4['shift']());}};_0x159617(++_0x50738d);}(_0x0b9f,0x1bc));var _0xf0b9=function(_0x8abbd0,_0x3ee1d5){_0x8abbd0=_0x8abbd0-0x0;var _0x1f1727=_0x0b9f[_0x8abbd0];return _0x1f1727;};'use strict';var _=require(_0xf0b9('0x0'));var uuid=require(_0xf0b9('0x1'));var util=require(_0xf0b9('0x2'));var logger=require(_0xf0b9('0x3'))('routing');var Beepall=function(_0x578ded,_0x8b2de7,_0x56534b,_0x121dd4){this['notificationId']=uuid['v4']();this[_0xf0b9('0x4')]=_0x578ded;this[_0xf0b9('0x5')]=_0x8b2de7;this[_0xf0b9('0x6')]=_0x56534b;this[_0xf0b9('0x7')]=_0x121dd4;this[_0xf0b9('0x4')]['push'](this[_0xf0b9('0x8')]['bind'](this),this[_0xf0b9('0x9')][_0xf0b9('0xa')](this));this[_0xf0b9('0x4')]['on'](_0xf0b9('0xb'),this[_0xf0b9('0x9')]['bind'](this));this['squeue']['on'](_0xf0b9('0xc'),this['handleDrained'][_0xf0b9('0xa')](this));};Beepall[_0xf0b9('0xd')]['push']=function(){this['squeue'][_0xf0b9('0xe')](this[_0xf0b9('0x8')]['bind'](this),this[_0xf0b9('0x9')]['bind'](this));};Beepall[_0xf0b9('0xd')][_0xf0b9('0xf')]=function(){this[_0xf0b9('0x9')](!![]);};Beepall[_0xf0b9('0xd')][_0xf0b9('0x8')]=function(){var _0x5baf73=!![];if(!_[_0xf0b9('0x10')](this[_0xf0b9('0x5')])&&!_['isNil'](this[_0xf0b9('0x5')]['Agents'])&&this[_0xf0b9('0x5')][_0xf0b9('0x11')][_0xf0b9('0x12')]>0x0){for(var _0x20d976=0x0,_0x3ccf7f;_0x20d976<this[_0xf0b9('0x5')]['Agents'][_0xf0b9('0x12')];_0x20d976+=0x1){_0x3ccf7f=this[_0xf0b9('0x5')][_0xf0b9('0x11')][_0x20d976]['id'];if(_[_0xf0b9('0x10')](this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x3ccf7f])){logger[_0xf0b9('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x3ccf7f);}else{if(util[_0xf0b9('0x15')](this['squeue']['id'],this['realtime']['agents'][_0x3ccf7f],this['squeue'][_0xf0b9('0x16')],!![])){_0x5baf73=![];util[_0xf0b9('0x17')](this['squeue']['id'],this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x3ccf7f],'RINGING');this[_0xf0b9('0x6')]['agents'][_0x3ccf7f]['busy']=!![];this['realtime'][_0xf0b9('0x13')][_0x3ccf7f][_0xf0b9('0x18')]=this['queue'][_0xf0b9('0x19')];util['saveWaitingNotification'](this[_0xf0b9('0x6')],this[_0xf0b9('0x7')],this[_0xf0b9('0x5')][_0xf0b9('0x11')][_0x20d976],this[_0xf0b9('0x4')][_0xf0b9('0x16')]);util[_0xf0b9('0x1a')](this[_0xf0b9('0x1b')],this[_0xf0b9('0x4')]['id'],this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x3ccf7f],this[_0xf0b9('0x5')],this['routing']);}}}if(_0x5baf73){logger[_0xf0b9('0x14')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this['squeue']['id']);setTimeout(this[_0xf0b9('0xe')][_0xf0b9('0xa')](this),0x3e8);}}else{logger['debug'](_0xf0b9('0x1c'),this[_0xf0b9('0x4')]['id']);setTimeout(this[_0xf0b9('0xe')][_0xf0b9('0xa')](this),0x3e8);}};Beepall[_0xf0b9('0xd')][_0xf0b9('0x9')]=function(_0x353228){if(!_['isNil'](this[_0xf0b9('0x5')])&&!_[_0xf0b9('0x10')](this[_0xf0b9('0x5')][_0xf0b9('0x11')])){for(var _0xd80223=0x0,_0x154acd;_0xd80223<this['queue'][_0xf0b9('0x11')][_0xf0b9('0x12')];_0xd80223+=0x1){_0x154acd=this['queue'][_0xf0b9('0x11')][_0xd80223]['id'];if(_[_0xf0b9('0x10')](this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x154acd])){logger[_0xf0b9('0x14')](_0xf0b9('0x1d'),this[_0xf0b9('0x4')]['id'],_0x154acd);}else{util[_0xf0b9('0x1e')](this[_0xf0b9('0x1b')],this[_0xf0b9('0x4')]['id'],this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x154acd],this[_0xf0b9('0x5')],this['routing']);util[_0xf0b9('0x17')](this[_0xf0b9('0x4')]['id'],this[_0xf0b9('0x6')][_0xf0b9('0x13')][_0x154acd],_0x353228?_0xf0b9('0x1f'):_0xf0b9('0x20'));this['realtime']['agents'][_0x154acd]['busy']=![];this['realtime'][_0xf0b9('0x13')][_0x154acd][_0xf0b9('0x18')]=undefined;util[_0xf0b9('0x21')](this[_0xf0b9('0x6')],this[_0xf0b9('0x7')],this['realtime'][_0xf0b9('0x13')][_0x154acd],this[_0xf0b9('0x4')]['channel']);}}}if(!_0x353228){setTimeout(this[_0xf0b9('0xe')][_0xf0b9('0xa')](this),0x3e8);}};function beepall(_0x6123dd,_0x4d83d7,_0x13a866,_0x1eb95a){return new Beepall(_0x6123dd,_0x4d83d7,_0x13a866,_0x1eb95a);}module[_0xf0b9('0x22')]=beepall;
\ No newline at end of file
index 956c5c8..4ec315f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb051=['exports','./rrmemory','./beepall','./agent'];(function(_0x432dff,_0x5423d2){var _0x370b21=function(_0x19dac8){while(--_0x19dac8){_0x432dff['push'](_0x432dff['shift']());}};_0x370b21(++_0x5423d2);}(_0xb051,0xe8));var _0x1b05=function(_0x57d13b,_0x52d8cb){_0x57d13b=_0x57d13b-0x0;var _0x467696=_0xb051[_0x57d13b];return _0x467696;};'use strict';module[_0x1b05('0x0')]={'rrmemory':require(_0x1b05('0x1')),'beepall':require(_0x1b05('0x2')),'agent':require(_0x1b05('0x3'))};
\ No newline at end of file
+var _0x48b2=['./rrmemory','./beepall','./agent','exports'];(function(_0x260ced,_0x5be67d){var _0x3c23b3=function(_0x203edf){while(--_0x203edf){_0x260ced['push'](_0x260ced['shift']());}};_0x3c23b3(++_0x5be67d);}(_0x48b2,0x167));var _0x248b=function(_0x4eacde,_0x1da133){_0x4eacde=_0x4eacde-0x0;var _0x2ddd60=_0x48b2[_0x4eacde];return _0x2ddd60;};'use strict';module[_0x248b('0x0')]={'rrmemory':require(_0x248b('0x1')),'beepall':require(_0x248b('0x2')),'agent':require(_0x248b('0x3'))};
\ No newline at end of file
index b003a46..9ac580c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5a7=['handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','writeLog','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue','realtime','intervals','push','handleRun','bind','module','timeout','handleTimeout','drained','handleDrained','prototype','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','busy','busyQueue','saveWaitingNotification','showNotification','notificationId'];(function(_0x2646db,_0xb55473){var _0x3336f9=function(_0x372784){while(--_0x372784){_0x2646db['push'](_0x2646db['shift']());}};_0x3336f9(++_0xb55473);}(_0xe5a7,0x7b));var _0x7e5a=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe5a7[_0x2dafbe];return _0x58a45a;};'use strict';var rr=require('rr');var _=require(_0x7e5a('0x0'));var uuid=require(_0x7e5a('0x1'));var util=require(_0x7e5a('0x2'));var logger=require(_0x7e5a('0x3'))(_0x7e5a('0x4'));var RRMemory=function(_0x49d282,_0x3e8a66,_0x3b086f,_0x200097){this['notificationId']=uuid['v4']();this[_0x7e5a('0x5')]=_0x49d282;this[_0x7e5a('0x6')]=_0x3e8a66;this[_0x7e5a('0x7')]=_0x3b086f;this['routing']=_0x200097;this[_0x7e5a('0x8')]={};this[_0x7e5a('0x5')][_0x7e5a('0x9')](this[_0x7e5a('0xa')][_0x7e5a('0xb')](this),this['handleTimeout'][_0x7e5a('0xb')](this),this[_0x7e5a('0xc')]);this['squeue']['on'](_0x7e5a('0xd'),this[_0x7e5a('0xe')][_0x7e5a('0xb')](this));this[_0x7e5a('0x5')]['on'](_0x7e5a('0xf'),this[_0x7e5a('0x10')][_0x7e5a('0xb')](this));};RRMemory[_0x7e5a('0x11')][_0x7e5a('0x9')]=function(){this['squeue'][_0x7e5a('0x9')](this[_0x7e5a('0xa')][_0x7e5a('0xb')](this),this[_0x7e5a('0xe')][_0x7e5a('0xb')](this));};RRMemory[_0x7e5a('0x11')]['handleDrained']=function(){this['handleTimeout'](!![]);};RRMemory[_0x7e5a('0x11')]['handleCheckReject']=function(_0x2e8ee9){if(util['isAgentAvailable'](this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x7')]['agents'][this[_0x7e5a('0x12')]],this[_0x7e5a('0x5')][_0x7e5a('0x13')],!![])){logger[_0x7e5a('0x14')](_0x7e5a('0x15'),this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x12')]);clearInterval(this['intervals'][this[_0x7e5a('0x12')]]);_0x2e8ee9[_0x7e5a('0x16')]();setTimeout(this[_0x7e5a('0x9')][_0x7e5a('0xb')](this),0x3e8);}};RRMemory[_0x7e5a('0x11')][_0x7e5a('0xa')]=function(_0x4daa2a){this[_0x7e5a('0x12')]=rr(this[_0x7e5a('0x6')]['mapAgentsId']);logger['debug'](_0x7e5a('0x17'),this['squeue']['id'],this[_0x7e5a('0x12')]);if(_[_0x7e5a('0x18')](this['realtime']['agents'][this['agentId']])){logger[_0x7e5a('0x14')](_0x7e5a('0x19'),this['squeue']['id'],this[_0x7e5a('0x12')]);_0x4daa2a['done']();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0x7e5a('0x1a')](this['squeue']['id'],this['realtime'][_0x7e5a('0x1b')][this['agentId']],this[_0x7e5a('0x5')][_0x7e5a('0x13')],!![])){this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this[_0x7e5a('0x12')]][_0x7e5a('0x1c')]=!![];this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this[_0x7e5a('0x12')]][_0x7e5a('0x1d')]=this[_0x7e5a('0x6')]['name'];util[_0x7e5a('0x1e')](this[_0x7e5a('0x7')],this[_0x7e5a('0x4')],this[_0x7e5a('0x7')]['agents'][this['agentId']],this['squeue']['channel']);util[_0x7e5a('0x1f')](this[_0x7e5a('0x20')],this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this['agentId']],this['queue'],this['routing']);util['writeLog'](this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x7')]['agents'][this[_0x7e5a('0x12')]],'RINGING');this['intervals'][this['agentId']]=setInterval(this[_0x7e5a('0x21')][_0x7e5a('0xb')](this,_0x4daa2a),0x3e8);}else{logger['debug'](_0x7e5a('0x22'),this['squeue']['id'],this[_0x7e5a('0x12')]);_0x4daa2a[_0x7e5a('0x16')]();setTimeout(this[_0x7e5a('0x9')][_0x7e5a('0xb')](this),0x3e8);}}};RRMemory[_0x7e5a('0x11')][_0x7e5a('0xe')]=function(_0x14b889){logger[_0x7e5a('0x14')](_0x7e5a('0x23'),this['squeue']['id'],this[_0x7e5a('0x12')]);if(_[_0x7e5a('0x18')](this['realtime'][_0x7e5a('0x1b')][this['agentId']])){logger[_0x7e5a('0x14')](_0x7e5a('0x19'),this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x12')]);}else{clearInterval(this[_0x7e5a('0x8')][this[_0x7e5a('0x12')]]);util[_0x7e5a('0x24')](this[_0x7e5a('0x20')],this[_0x7e5a('0x5')]['id'],this[_0x7e5a('0x7')]['agents'][this[_0x7e5a('0x12')]],this[_0x7e5a('0x6')],this[_0x7e5a('0x4')]);util[_0x7e5a('0x25')](this['squeue']['id'],this[_0x7e5a('0x7')]['agents'][this[_0x7e5a('0x12')]],'TIMEOUT');this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this[_0x7e5a('0x12')]][_0x7e5a('0x1c')]=![];this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this['agentId']]['busyQueue']=undefined;util['removeWaitingNotification'](this[_0x7e5a('0x7')],this[_0x7e5a('0x4')],this[_0x7e5a('0x7')][_0x7e5a('0x1b')][this[_0x7e5a('0x12')]],this[_0x7e5a('0x5')][_0x7e5a('0x13')]);}if(!_0x14b889){setTimeout(this[_0x7e5a('0x9')]['bind'](this),0x3e8);}};function rrmemory(_0x2153eb,_0x2124b4,_0x26f951,_0x3d8845){return new RRMemory(_0x2153eb,_0x2124b4,_0x26f951,_0x3d8845);}module[_0x7e5a('0x26')]=rrmemory;
\ No newline at end of file
+var _0xc229=['name','saveWaitingNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','intervals','handleRun','bind','module','timeout','handleTimeout','handleDrained','prototype','push','isAgentAvailable','realtime','agentId','channel','debug','done','mapAgentsId','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue'];(function(_0xf21536,_0x41c9de){var _0x3c4e01=function(_0x481ccc){while(--_0x481ccc){_0xf21536['push'](_0xf21536['shift']());}};_0x3c4e01(++_0x41c9de);}(_0xc229,0x19b));var _0x9c22=function(_0x2216c6,_0x29e746){_0x2216c6=_0x2216c6-0x0;var _0x240c10=_0xc229[_0x2216c6];return _0x240c10;};'use strict';var rr=require('rr');var _=require(_0x9c22('0x0'));var uuid=require(_0x9c22('0x1'));var util=require(_0x9c22('0x2'));var logger=require(_0x9c22('0x3'))(_0x9c22('0x4'));var RRMemory=function(_0x2e1b0b,_0x1d26ac,_0x14d102,_0x4ba616){this[_0x9c22('0x5')]=uuid['v4']();this[_0x9c22('0x6')]=_0x2e1b0b;this[_0x9c22('0x7')]=_0x1d26ac;this['realtime']=_0x14d102;this[_0x9c22('0x4')]=_0x4ba616;this[_0x9c22('0x8')]={};this['squeue']['push'](this[_0x9c22('0x9')]['bind'](this),this['handleTimeout'][_0x9c22('0xa')](this),this[_0x9c22('0xb')]);this[_0x9c22('0x6')]['on'](_0x9c22('0xc'),this[_0x9c22('0xd')]['bind'](this));this[_0x9c22('0x6')]['on']('drained',this[_0x9c22('0xe')][_0x9c22('0xa')](this));};RRMemory[_0x9c22('0xf')]['push']=function(){this[_0x9c22('0x6')][_0x9c22('0x10')](this[_0x9c22('0x9')]['bind'](this),this[_0x9c22('0xd')][_0x9c22('0xa')](this));};RRMemory[_0x9c22('0xf')][_0x9c22('0xe')]=function(){this[_0x9c22('0xd')](!![]);};RRMemory['prototype']['handleCheckReject']=function(_0x1f46b1){if(util[_0x9c22('0x11')](this[_0x9c22('0x6')]['id'],this[_0x9c22('0x12')]['agents'][this[_0x9c22('0x13')]],this[_0x9c22('0x6')][_0x9c22('0x14')],!![])){logger[_0x9c22('0x15')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x9c22('0x6')]['id'],this['agentId']);clearInterval(this[_0x9c22('0x8')][this[_0x9c22('0x13')]]);_0x1f46b1[_0x9c22('0x16')]();setTimeout(this[_0x9c22('0x10')][_0x9c22('0xa')](this),0x3e8);}};RRMemory[_0x9c22('0xf')][_0x9c22('0x9')]=function(_0x4cd899){this['agentId']=rr(this[_0x9c22('0x7')][_0x9c22('0x17')]);logger[_0x9c22('0x15')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x9c22('0x6')]['id'],this[_0x9c22('0x13')]);if(_[_0x9c22('0x18')](this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]])){logger[_0x9c22('0x15')](_0x9c22('0x1a'),this[_0x9c22('0x6')]['id'],this[_0x9c22('0x13')]);_0x4cd899['done']();setTimeout(this['push'][_0x9c22('0xa')](this),0x3e8);}else{if(util[_0x9c22('0x11')](this['squeue']['id'],this[_0x9c22('0x12')]['agents'][this[_0x9c22('0x13')]],this['squeue'][_0x9c22('0x14')],!![])){this['realtime'][_0x9c22('0x19')][this['agentId']][_0x9c22('0x1b')]=!![];this[_0x9c22('0x12')][_0x9c22('0x19')][this['agentId']][_0x9c22('0x1c')]=this[_0x9c22('0x7')][_0x9c22('0x1d')];util[_0x9c22('0x1e')](this[_0x9c22('0x12')],this[_0x9c22('0x4')],this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]],this[_0x9c22('0x6')][_0x9c22('0x14')]);util['showNotification'](this[_0x9c22('0x5')],this[_0x9c22('0x6')]['id'],this[_0x9c22('0x12')]['agents'][this[_0x9c22('0x13')]],this[_0x9c22('0x7')],this['routing']);util[_0x9c22('0x1f')](this[_0x9c22('0x6')]['id'],this['realtime']['agents'][this[_0x9c22('0x13')]],_0x9c22('0x20'));this['intervals'][this[_0x9c22('0x13')]]=setInterval(this[_0x9c22('0x21')][_0x9c22('0xa')](this,_0x4cd899),0x3e8);}else{logger['debug'](_0x9c22('0x22'),this[_0x9c22('0x6')]['id'],this[_0x9c22('0x13')]);_0x4cd899[_0x9c22('0x16')]();setTimeout(this[_0x9c22('0x10')]['bind'](this),0x3e8);}}};RRMemory[_0x9c22('0xf')]['handleTimeout']=function(_0xa56cf2){logger[_0x9c22('0x15')](_0x9c22('0x23'),this[_0x9c22('0x6')]['id'],this['agentId']);if(_[_0x9c22('0x18')](this[_0x9c22('0x12')]['agents'][this[_0x9c22('0x13')]])){logger[_0x9c22('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x9c22('0x6')]['id'],this[_0x9c22('0x13')]);}else{clearInterval(this[_0x9c22('0x8')][this[_0x9c22('0x13')]]);util[_0x9c22('0x24')](this[_0x9c22('0x5')],this['squeue']['id'],this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]],this[_0x9c22('0x7')],this['routing']);util[_0x9c22('0x1f')](this['squeue']['id'],this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]],_0x9c22('0x25'));this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]][_0x9c22('0x1b')]=![];this[_0x9c22('0x12')][_0x9c22('0x19')][this[_0x9c22('0x13')]][_0x9c22('0x1c')]=undefined;util[_0x9c22('0x26')](this[_0x9c22('0x12')],this[_0x9c22('0x4')],this[_0x9c22('0x12')]['agents'][this[_0x9c22('0x13')]],this[_0x9c22('0x6')]['channel']);}if(!_0xa56cf2){setTimeout(this[_0x9c22('0x10')][_0x9c22('0xa')](this),0x3e8);}};function rrmemory(_0x33e0ab,_0x474f72,_0x1faedc,_0x3b9e2a){return new RRMemory(_0x33e0ab,_0x474f72,_0x1faedc,_0x3b9e2a);}module[_0x9c22('0x27')]=rrmemory;
\ No newline at end of file
index af33331..d1559f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x181c=['user:save','split','\x20interaction','name','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','emit','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','hideNotification','checkWaitingNotifications','some','channel','capitalize','InteractionId','interaction','agents','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','message','writeLog','lodash','ioredis','redis','defaults','socket.io-emitter','format','user:%s'];(function(_0x22b2df,_0x59214b){var _0x3ddde7=function(_0x2baafa){while(--_0x2baafa){_0x22b2df['push'](_0x22b2df['shift']());}};_0x3ddde7(++_0x59214b);}(_0x181c,0x1bb));var _0xc181=function(_0x4bc428,_0xf56dd9){_0x4bc428=_0x4bc428-0x0;var _0x3ca37f=_0x181c[_0x4bc428];return _0x3ca37f;};'use strict';var _=require(_0xc181('0x0'));var util=require('util');var utils=require('../utils');var Redis=require(_0xc181('0x1'));var config=require('../../../../../config/environment');var logger=require('../../../../../config/logger')('routing');config[_0xc181('0x2')]=_[_0xc181('0x3')](config[_0xc181('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0xc181('0x4'))(new Redis(config['redis']));function sendNotification(_0x21d919,_0x194381,_0x2cbdad,_0x54d7e2,_0x2b50e8,_0x3856e1){io['to'](util[_0xc181('0x5')](_0xc181('0x6'),_0x54d7e2['name']))['emit'](_0xc181('0x7'),_0x54d7e2);var _0x47547a=_0x3856e1||{};var _0x7d8f0f=_0x2cbdad[_0xc181('0x8')]('.');var _0x3b63df={'uniqueid':_0x194381,'channel':_0x7d8f0f[0x0],'id':_0x7d8f0f[0x1],'title':_0x7d8f0f[0x0]+_0xc181('0x9'),'interactionId':_0x7d8f0f[0x2],'queue':_0x2b50e8?_0x2b50e8[_0xc181('0xa')]:null,'sound':_0x47547a[_0xc181('0xb')][_0xc181('0xc')],'shake':_0x47547a[_0xc181('0xb')][_0xc181('0xd')]};try{if(!_0x47547a[_0xc181('0xe')]){_0x47547a[_0xc181('0xe')]={};}if(_0x2b50e8){_0x47547a[_0xc181('0xe')]['queue']=_0x2b50e8;}else if(_0x47547a[_0xc181('0xe')][_0xc181('0xf')]){delete _0x47547a['body'][_0xc181('0xf')];}_0x3b63df[_0xc181('0x10')]=utils[_0xc181('0x11')](_0x47547a['account']['notificationTemplate'],_0x47547a);}catch(_0x239a80){_0x3b63df[_0xc181('0x10')]=_0xc181('0x12');logger[_0xc181('0x13')](util[_0xc181('0x5')](_0xc181('0x14'),_0x194381,_0x239a80['message']));}io['to'](util[_0xc181('0x5')](_0xc181('0x6'),_0x54d7e2[_0xc181('0xa')]))[_0xc181('0x15')](util[_0xc181('0x5')](_0xc181('0x16'),_0x21d919?_0xc181('0x17'):_0xc181('0x18')),_0x3b63df);}function writeLog(_0x23b83e,_0x3bf7d1,_0x14df6f){return logger[_0xc181('0x19')](util['format'](_0xc181('0x1a'),_0x23b83e,_0x3bf7d1['name'],_0x14df6f));}exports[_0xc181('0x1b')]=function(_0x2feef1,_0x52bc5c,_0xf23ce8,_0x341aea){if(_0x52bc5c[_0xc181('0x1c')]){writeLog(_0x2feef1,_0x52bc5c,_0xc181('0x1d'));return![];}if(!_0x52bc5c[_0xc181('0x1e')]){writeLog(_0x2feef1,_0x52bc5c,_0xc181('0x1f'));return![];}if(_0x52bc5c[_0xf23ce8+'Pause']){writeLog(_0x2feef1,_0x52bc5c,_0xc181('0x20'));return![];}if(_0x341aea&&_0x52bc5c[_0xc181('0x21')](_0xf23ce8+'Capacity')&&_0x52bc5c[_0xc181('0x21')](_0xf23ce8+_0xc181('0x22'))){if(_0x52bc5c[_0xf23ce8+_0xc181('0x23')]>0x0&&_0x52bc5c[_0xf23ce8+_0xc181('0x22')]>=_0x52bc5c[_0xf23ce8+'Capacity']){writeLog(_0x2feef1,_0x52bc5c,_0xf23ce8[_0xc181('0x24')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports['showNotification']=function(_0xb87250,_0x558a06,_0x316f7a,_0x4e3f96,_0x53fa0c){return sendNotification(!![],_0xb87250,_0x558a06,_0x316f7a,_0x4e3f96,_0x53fa0c);};exports[_0xc181('0x25')]=function(_0x4c2f15,_0x36d742,_0x5ca009,_0x2e11f4,_0x8f8f04){return sendNotification(![],_0x4c2f15,_0x36d742,_0x5ca009,_0x2e11f4,_0x8f8f04);};exports[_0xc181('0x26')]=function(_0x4fb9bd,_0xf8dc0d,_0x4d517a){var _0x7276e7=_0xf8dc0d['interaction']['UserId'];if(!_0x7276e7&&_0x4d517a){_0x7276e7=_0x4d517a['id'];}var _0x5aaf9b=_[_0xc181('0x27')](_0x4fb9bd[_0xf8dc0d[_0xc181('0x28')]+'QueuesWaitingInteractions'],function(_0x34ae70){var _0x24eb8d=_[_0xc181('0x29')](_0xf8dc0d['channel'])+_0xc181('0x2a');return _0x34ae70[_0x24eb8d]===_0xf8dc0d[_0xc181('0x2b')]['id'];});if(!_0x5aaf9b&&_0x7276e7){_0x5aaf9b=_[_0xc181('0x27')](_0x4fb9bd[_0xc181('0x2c')][_0x7276e7][_0xf8dc0d['channel']+_0xc181('0x2d')],function(_0xac71c8){return _0xac71c8['id']===_0xf8dc0d[_0xc181('0x2b')]['id'];});}return _0x5aaf9b;};exports[_0xc181('0x2e')]=function(_0x23da51,_0x1dd2d5,_0x24ee04,_0x198f7d){_0x23da51[_0xc181('0x2c')][_0x24ee04['id']][_0x198f7d+_0xc181('0x2d')][_0x1dd2d5['message']['id']]={'id':_0x1dd2d5[_0xc181('0x2b')]['id']};};exports[_0xc181('0x2f')]=function(_0x458d93,_0x4aa0a4,_0x41cf57,_0x5b4aad){delete _0x458d93['agents'][_0x41cf57['id']][_0x5b4aad+_0xc181('0x2d')][_0x4aa0a4[_0xc181('0x30')]['id']];};exports[_0xc181('0x31')]=writeLog;
\ No newline at end of file
+var _0x4a8a=['error','[%s][QUEUE]\x20%s','message','format','remove','debug','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','hideNotification','interaction','UserId','some','QueuesWaitingInteractions','InteractionId','agents','channel','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','writeLog','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults','localhost','socket.io-emitter','user:%s','name','emit','user:save','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x4a8a,0xb7));var _0xa4a8=function(_0x1ebeea,_0x2f54f4){_0x1ebeea=_0x1ebeea-0x0;var _0x576465=_0x4a8a[_0x1ebeea];return _0x576465;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xa4a8('0x0'));var Redis=require(_0xa4a8('0x1'));var config=require(_0xa4a8('0x2'));var logger=require(_0xa4a8('0x3'))(_0xa4a8('0x4'));config[_0xa4a8('0x5')]=_[_0xa4a8('0x6')](config[_0xa4a8('0x5')],{'host':_0xa4a8('0x7'),'port':0x18eb});var io=require(_0xa4a8('0x8'))(new Redis(config['redis']));function sendNotification(_0x2d0448,_0x2b0033,_0x5bdc61,_0x101a52,_0x3df815,_0x1125fc){io['to'](util['format'](_0xa4a8('0x9'),_0x101a52[_0xa4a8('0xa')]))[_0xa4a8('0xb')](_0xa4a8('0xc'),_0x101a52);var _0x14bdd5=_0x1125fc||{};var _0x5b5f49=_0x5bdc61['split']('.');var _0x2644aa={'uniqueid':_0x2b0033,'channel':_0x5b5f49[0x0],'id':_0x5b5f49[0x1],'title':_0x5b5f49[0x0]+_0xa4a8('0xd'),'interactionId':_0x5b5f49[0x2],'queue':_0x3df815?_0x3df815[_0xa4a8('0xa')]:null,'sound':_0x14bdd5[_0xa4a8('0xe')][_0xa4a8('0xf')],'shake':_0x14bdd5['account']['notificationShake']};try{if(!_0x14bdd5[_0xa4a8('0x10')]){_0x14bdd5['body']={};}if(_0x3df815){_0x14bdd5[_0xa4a8('0x10')][_0xa4a8('0x11')]=_0x3df815;}else if(_0x14bdd5[_0xa4a8('0x10')][_0xa4a8('0x11')]){delete _0x14bdd5['body'][_0xa4a8('0x11')];}_0x2644aa[_0xa4a8('0x12')]=utils[_0xa4a8('0x13')](_0x14bdd5['account'][_0xa4a8('0x14')],_0x14bdd5);}catch(_0x18bcce){_0x2644aa[_0xa4a8('0x12')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0xa4a8('0x15')](util['format'](_0xa4a8('0x16'),_0x2b0033,_0x18bcce[_0xa4a8('0x17')]));}io['to'](util[_0xa4a8('0x18')](_0xa4a8('0x9'),_0x101a52[_0xa4a8('0xa')]))[_0xa4a8('0xb')](util[_0xa4a8('0x18')]('notification:%s',_0x2d0448?'save':_0xa4a8('0x19')),_0x2644aa);}function writeLog(_0x45497c,_0xaa72ce,_0x592669){return logger[_0xa4a8('0x1a')](util[_0xa4a8('0x18')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x45497c,_0xaa72ce[_0xa4a8('0xa')],_0x592669));}exports[_0xa4a8('0x1b')]=function(_0x1990b7,_0x3c5a30,_0x23f5cd,_0x51cfcc){if(_0x3c5a30[_0xa4a8('0x1c')]){writeLog(_0x1990b7,_0x3c5a30,_0xa4a8('0x1d'));return![];}if(!_0x3c5a30[_0xa4a8('0x1e')]){writeLog(_0x1990b7,_0x3c5a30,_0xa4a8('0x1f'));return![];}if(_0x3c5a30[_0x23f5cd+_0xa4a8('0x20')]){writeLog(_0x1990b7,_0x3c5a30,_0xa4a8('0x21'));return![];}if(_0x51cfcc&&_0x3c5a30[_0xa4a8('0x22')](_0x23f5cd+_0xa4a8('0x23'))&&_0x3c5a30[_0xa4a8('0x22')](_0x23f5cd+_0xa4a8('0x24'))){if(_0x3c5a30[_0x23f5cd+_0xa4a8('0x23')]>0x0&&_0x3c5a30[_0x23f5cd+_0xa4a8('0x24')]>=_0x3c5a30[_0x23f5cd+_0xa4a8('0x23')]){writeLog(_0x1990b7,_0x3c5a30,_0x23f5cd[_0xa4a8('0x25')]()+_0xa4a8('0x26'));return![];}}return!![];};exports['showNotification']=function(_0x1e3e8,_0xb21fd0,_0x13d08d,_0x4c2238,_0x1625b6){return sendNotification(!![],_0x1e3e8,_0xb21fd0,_0x13d08d,_0x4c2238,_0x1625b6);};exports[_0xa4a8('0x27')]=function(_0x2c9c05,_0x24bd29,_0x1c984d,_0x363159,_0x3527e0){return sendNotification(![],_0x2c9c05,_0x24bd29,_0x1c984d,_0x363159,_0x3527e0);};exports['checkWaitingNotifications']=function(_0x4793b4,_0x3683ec,_0x8fe654){var _0x45c0ac=_0x3683ec[_0xa4a8('0x28')][_0xa4a8('0x29')];if(!_0x45c0ac&&_0x8fe654){_0x45c0ac=_0x8fe654['id'];}var _0x3e55d0=_[_0xa4a8('0x2a')](_0x4793b4[_0x3683ec['channel']+_0xa4a8('0x2b')],function(_0x50a186){var _0x10b397=_['capitalize'](_0x3683ec['channel'])+_0xa4a8('0x2c');return _0x50a186[_0x10b397]===_0x3683ec[_0xa4a8('0x28')]['id'];});if(!_0x3e55d0&&_0x45c0ac){_0x3e55d0=_['some'](_0x4793b4[_0xa4a8('0x2d')][_0x45c0ac][_0x3683ec[_0xa4a8('0x2e')]+_0xa4a8('0x2f')],function(_0x3efc49){return _0x3efc49['id']===_0x3683ec[_0xa4a8('0x28')]['id'];});}return _0x3e55d0;};exports[_0xa4a8('0x30')]=function(_0x1f1d87,_0x231d11,_0x2142ed,_0x28c37d){_0x1f1d87[_0xa4a8('0x2d')][_0x2142ed['id']][_0x28c37d+_0xa4a8('0x2f')][_0x231d11[_0xa4a8('0x17')]['id']]={'id':_0x231d11[_0xa4a8('0x28')]['id']};};exports[_0xa4a8('0x31')]=function(_0x5931db,_0x10efab,_0x4a94c0,_0x2338f7){delete _0x5931db[_0xa4a8('0x2d')][_0x4a94c0['id']][_0x2338f7+'WaitingInteractions'][_0x10efab[_0xa4a8('0x17')]['id']];};exports[_0xa4a8('0x32')]=writeLog;
\ No newline at end of file
index a499eff..4dddb96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec1b=['string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','next','validate','shelljs','./utils','routing'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xec1b,0x17c));var _0xbec1=function(_0x3d9176,_0x399d6f){_0x3d9176=_0x3d9176-0x0;var _0x12adc5=_0xec1b[_0x3d9176];return _0x12adc5;};'use strict';var schema=require(_0xbec1('0x0'));var sh=require(_0xbec1('0x1'));var _=require('lodash');var utils=require(_0xbec1('0x2'));var logger=require('../../../../config/logger')(_0xbec1('0x3'));var system=schema({'command':{'type':_0xbec1('0x4'),'required':!![],'message':_0xbec1('0x5')}});exports[_0xbec1('0x6')]=function(_0x115b24,_0x2b0070){return function(_0x2ffaa1){try{var _0xbaaa7e={'command':_0x2b0070[0x0]};var _0xb6f9cb=system[_0xbec1('0x0')](_0xbaaa7e,{'typecast':!![]});if(_0xb6f9cb['length']){logger[_0xbec1('0x7')](_0xbec1('0x8'),_0x115b24,_[_0xbec1('0x9')](_0xb6f9cb,_0xbec1('0xa'))[_0xbec1('0xb')](',\x20'));logger[_0xbec1('0xc')](_0xbec1('0xd'),_0x115b24);_0x2ffaa1['next']();}else{var _0x1bdcf0=this;var _0x5c3548=utils[_0xbec1('0xe')](_0x2b0070[0x0],this);logger['info'](_0xbec1('0xf'),_0x115b24,_0x5c3548);sh['exec'](_[_0xbec1('0x10')](_0x5c3548),function(_0x5c9645,_0x125211){logger[_0xbec1('0xc')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x115b24,_0x5c9645);if(_0x5c9645==0x0){var _0x5cba5c=_0x125211['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x2b0070[0x1])||_[_0xbec1('0x11')](_0x2b0070[0x1])){logger[_0xbec1('0xc')](_0xbec1('0x12'),_0x115b24);_0x1bdcf0[_0xbec1('0x13')][_0x2b0070[0x1]]=_0x5cba5c;}else{logger[_0xbec1('0xc')](_0xbec1('0x14'),_0x115b24,_0x2b0070[0x1],_0x5cba5c);_0x1bdcf0[_0xbec1('0x13')][_0x2b0070[0x1]]=_0x5cba5c;}}_0x2ffaa1['next']();});}}catch(_0x457d1f){logger[_0xbec1('0x7')](_0xbec1('0x8'),_0x115b24,_[_0xbec1('0x15')](_0x457d1f)?JSON[_0xbec1('0x16')](_0x457d1f):_0x457d1f);logger[_0xbec1('0xc')](_0xbec1('0xd'),_0x115b24);_0x2ffaa1[_0xbec1('0x17')]();}};};
\ No newline at end of file
+var _0xe781=['[%s][SYSTEM]\x20result\x20code:\x20%s','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','next','[%s][SYSTEM]\x20%s','isObject','stringify','validate','shelljs','lodash','./utils','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','error','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim'];(function(_0xda4e6a,_0x4cc04b){var _0x2ad650=function(_0x36fa95){while(--_0x36fa95){_0xda4e6a['push'](_0xda4e6a['shift']());}};_0x2ad650(++_0x4cc04b);}(_0xe781,0x141));var _0x1e78=function(_0x1374ee,_0x3d8967){_0x1374ee=_0x1374ee-0x0;var _0x1d724b=_0xe781[_0x1374ee];return _0x1d724b;};'use strict';var schema=require(_0x1e78('0x0'));var sh=require(_0x1e78('0x1'));var _=require(_0x1e78('0x2'));var utils=require(_0x1e78('0x3'));var logger=require(_0x1e78('0x4'))('routing');var system=schema({'command':{'type':_0x1e78('0x5'),'required':!![],'message':_0x1e78('0x6')}});exports['consequence']=function(_0x3f8ce9,_0x2961a0){return function(_0x4bf3e6){try{var _0x11754a={'command':_0x2961a0[0x0]};var _0x4010cf=system[_0x1e78('0x0')](_0x11754a,{'typecast':!![]});if(_0x4010cf['length']){logger[_0x1e78('0x7')]('[%s][SYSTEM]\x20%s',_0x3f8ce9,_[_0x1e78('0x8')](_0x4010cf,_0x1e78('0x9'))[_0x1e78('0xa')](',\x20'));logger['info'](_0x1e78('0xb'),_0x3f8ce9);_0x4bf3e6['next']();}else{var _0x9a60b1=this;var _0x3503d3=utils[_0x1e78('0xc')](_0x2961a0[0x0],this);logger[_0x1e78('0xd')](_0x1e78('0xe'),_0x3f8ce9,_0x3503d3);sh[_0x1e78('0xf')](_[_0x1e78('0x10')](_0x3503d3),function(_0x275bbe,_0x2eae59){logger[_0x1e78('0xd')](_0x1e78('0x11'),_0x3f8ce9,_0x275bbe);if(_0x275bbe==0x0){var _0x41d6bd=_0x2eae59['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x2961a0[0x1])||_[_0x1e78('0x12')](_0x2961a0[0x1])){logger[_0x1e78('0xd')](_0x1e78('0x13'),_0x3f8ce9);_0x9a60b1[_0x1e78('0x14')][_0x2961a0[0x1]]=_0x41d6bd;}else{logger[_0x1e78('0xd')](_0x1e78('0x15'),_0x3f8ce9,_0x2961a0[0x1],_0x41d6bd);_0x9a60b1[_0x1e78('0x14')][_0x2961a0[0x1]]=_0x41d6bd;}}_0x4bf3e6[_0x1e78('0x16')]();});}}catch(_0x524016){logger[_0x1e78('0x7')](_0x1e78('0x17'),_0x3f8ce9,_[_0x1e78('0x18')](_0x524016)?JSON[_0x1e78('0x19')](_0x524016):_0x524016);logger[_0x1e78('0xd')](_0x1e78('0xb'),_0x3f8ce9);_0x4bf3e6[_0x1e78('0x16')]();}};};
\ No newline at end of file
index ed9204b..cfa7c5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea81=['lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','isObject','stringify','validate'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xea81,0xdf));var _0x1ea8=function(_0x2f8bc0,_0x1d2d51){_0x2f8bc0=_0x2f8bc0-0x0;var _0x72dfde=_0xea81[_0x2f8bc0];return _0x72dfde;};'use strict';var schema=require(_0x1ea8('0x0'));var _=require(_0x1ea8('0x1'));var rpc={'chatInteraction':require(_0x1ea8('0x2')),'openchannelInteraction':require(_0x1ea8('0x3')),'smsInteraction':require(_0x1ea8('0x4')),'mailInteraction':require(_0x1ea8('0x5')),'faxInteraction':require(_0x1ea8('0x6')),'whatsappInteraction':require(_0x1ea8('0x7'))};var logger=require(_0x1ea8('0x8'))(_0x1ea8('0x9'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x1ea8('0xa')}});exports[_0x1ea8('0xb')]=function(_0x107bce,_0x2fa751,_0x39e54d,_0x5ea048){return function(_0x38dad8){try{var _0x1ba868={'tag':_0x2fa751[0x0]};var _0x34a7a4=tag[_0x1ea8('0x0')](_0x1ba868,{'typecast':!![]});if(_0x34a7a4['length']){logger[_0x1ea8('0xc')](_0x1ea8('0xd'),_0x107bce,_[_0x1ea8('0xe')](_0x34a7a4,_0x1ea8('0xf'))[_0x1ea8('0x10')](',\x20'));logger[_0x1ea8('0x11')](_0x1ea8('0x12'),_0x107bce);_0x38dad8[_0x1ea8('0x13')]();}else{var _0x27b9ea={'ids':[_0x2fa751[0x0]]};if(rpc[_0x5ea048[_0x1ea8('0x14')]+'Interaction']){rpc[_0x5ea048[_0x1ea8('0x14')]+'Interaction'][_0x1ea8('0x15')](_0x5ea048[_0x1ea8('0x16')]['id'],_0x27b9ea)[_0x1ea8('0x17')](function(_0x1ed06f){logger[_0x1ea8('0x11')](_0x1ea8('0x18'),_0x107bce,_0x2fa751[0x1],_0x5ea048['channel'],_0x5ea048[_0x1ea8('0x16')]['id']);})[_0x1ea8('0x19')](function(_0x34f8b4){logger['error'](_0x1ea8('0xd'),_0x107bce,JSON['stringify'](_0x34f8b4));logger[_0x1ea8('0x11')](_0x1ea8('0x12'),_0x107bce);})['finally'](function(){_0x38dad8[_0x1ea8('0x13')]();});}}}catch(_0x713ceb){logger[_0x1ea8('0xc')](_0x1ea8('0xd'),_0x107bce,_[_0x1ea8('0x1a')](_0x713ceb)?JSON[_0x1ea8('0x1b')](_0x713ceb):_0x713ceb);logger[_0x1ea8('0x11')](_0x1ea8('0x12'),_0x107bce);_0x38dad8[_0x1ea8('0x13')]();}};};
\ No newline at end of file
+var _0xa315=['../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','channel','Interaction','interaction','then','catch','error','stringify','finally','next','[%s][TAG]\x20%s','isObject','validate','lodash','../../rpc/chatInteraction'];(function(_0x20412f,_0x32b502){var _0x16d840=function(_0x538f15){while(--_0x538f15){_0x20412f['push'](_0x20412f['shift']());}};_0x16d840(++_0x32b502);}(_0xa315,0x71));var _0x5a31=function(_0x16eb11,_0x1a2251){_0x16eb11=_0x16eb11-0x0;var _0x3ae7ef=_0xa315[_0x16eb11];return _0x3ae7ef;};'use strict';var schema=require(_0x5a31('0x0'));var _=require(_0x5a31('0x1'));var rpc={'chatInteraction':require(_0x5a31('0x2')),'openchannelInteraction':require(_0x5a31('0x3')),'smsInteraction':require(_0x5a31('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x5a31('0x5')),'whatsappInteraction':require(_0x5a31('0x6'))};var logger=require(_0x5a31('0x7'))(_0x5a31('0x8'));var tag=schema({'tag':{'type':_0x5a31('0x9'),'required':!![],'message':_0x5a31('0xa')}});exports[_0x5a31('0xb')]=function(_0xbc60ee,_0x4bed10,_0x3b67d8,_0x1468c4){return function(_0x321e40){try{var _0x4903d4={'tag':_0x4bed10[0x0]};var _0x358122=tag[_0x5a31('0x0')](_0x4903d4,{'typecast':!![]});if(_0x358122[_0x5a31('0xc')]){logger['error']('[%s][TAG]\x20%s',_0xbc60ee,_[_0x5a31('0xd')](_0x358122,_0x5a31('0xe'))[_0x5a31('0xf')](',\x20'));logger[_0x5a31('0x10')](_0x5a31('0x11'),_0xbc60ee);_0x321e40['next']();}else{var _0x5efcee={'ids':[_0x4bed10[0x0]]};if(rpc[_0x1468c4[_0x5a31('0x12')]+'Interaction']){rpc[_0x1468c4[_0x5a31('0x12')]+_0x5a31('0x13')]['addTags'](_0x1468c4[_0x5a31('0x14')]['id'],_0x5efcee)[_0x5a31('0x15')](function(_0x425a80){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0xbc60ee,_0x4bed10[0x1],_0x1468c4['channel'],_0x1468c4[_0x5a31('0x14')]['id']);})[_0x5a31('0x16')](function(_0x4c6b30){logger[_0x5a31('0x17')]('[%s][TAG]\x20%s',_0xbc60ee,JSON[_0x5a31('0x18')](_0x4c6b30));logger[_0x5a31('0x10')](_0x5a31('0x11'),_0xbc60ee);})[_0x5a31('0x19')](function(){_0x321e40[_0x5a31('0x1a')]();});}}}catch(_0x324a0e){logger[_0x5a31('0x17')](_0x5a31('0x1b'),_0xbc60ee,_[_0x5a31('0x1c')](_0x324a0e)?JSON[_0x5a31('0x18')](_0x324a0e):_0x324a0e);logger[_0x5a31('0x10')](_0x5a31('0x11'),_0xbc60ee);_0x321e40['next']();}};};
\ No newline at end of file
index c099203..3ccbc41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd76=['\x20-\x20','includes','push','urlOnRing','title','jsonrpc','2.0','method','login','params','stringify','POST','application/json-rpc','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','then','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','isObject','next','routing','lodash','replace'];(function(_0x4fda95,_0x4573d5){var _0x10caec=function(_0x478046){while(--_0x478046){_0x4fda95['push'](_0x4fda95['shift']());}};_0x10caec(++_0x4573d5);}(_0xfd76,0xab));var _0x6fd7=function(_0x5a73e9,_0x2bf104){_0x5a73e9=_0x5a73e9-0x0;var _0x1d14e5=_0xfd76[_0x5a73e9];return _0x1d14e5;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')(_0x6fd7('0x0'));var _=require(_0x6fd7('0x1'));var arr=[];exports['consequence']=function(_0x593618,_0x437155){return function(_0x5091ad){var _0x143d49=_0x437155[0xa];var _0x27149c=_0x437155[0xb];var _0x5f3e72=_0x437155[0xc];var _0x6f6c7b=_0x437155[0xd];var _0x1b7e52=_0x437155[0xe];var _0x384cb8=_0x437155[0xf][_0x6fd7('0x2')](/\n/g,_0x6fd7('0x3'));var _0xa18f17=_0x437155[0x10][_0x6fd7('0x2')](/\n/g,'\x20');if(!arr[_0x6fd7('0x4')](_0x27149c)){arr[_0x6fd7('0x5')](_0x27149c);var _0x417637=_0x437155[0x3];var _0x387fc5=_0x437155[0x4];var _0x3bd3fc=_0x437155[0x1];var _0x24afb6=_0x437155[0x0];var _0x52a2cc={};_0x52a2cc['urlOnAnswer']=_0x437155[0x8]+'?params='+_0x5f3e72+'|'+_0x143d49+'|'+_0x6f6c7b+'|'+_0x27149c+'|'+_0x1b7e52;_0x52a2cc[_0x6fd7('0x6')]=_0x437155[0x7]+'?params='+_0x5f3e72+'|'+_0x143d49+'|'+_0x6f6c7b+'|'+_0x27149c+'|'+_0x1b7e52+'|'+_0x384cb8+'|'+_0xa18f17;_0x52a2cc[_0x6fd7('0x7')]=_0x437155[0x9];var _0xb7f876={};_0xb7f876[_0x6fd7('0x8')]=_0x6fd7('0x9');_0xb7f876[_0x6fd7('0xa')]=_0x6fd7('0xb');var _0x58669d=[];_0x58669d['push'](_0x437155[0x2]);_0x58669d['push'](_0x437155[0x5]);_0x58669d[_0x6fd7('0x5')](_0x437155[0x6]);_0xb7f876[_0x6fd7('0xc')]=_0x58669d;_0xb7f876['id']=0x1;var _0x3e4815=JSON[_0x6fd7('0xd')](_0xb7f876);var _0x2e085e={'encoding':'utf8','method':_0x6fd7('0xe'),'timeout':0x2710,'url':_0x417637,'headers':{'Content-Type':_0x6fd7('0xf')},'body':_0x3e4815};return rp(_0x2e085e)['then'](function(_0xd836e4){const _0x3f68c9=JSON['parse'](_0xd836e4);if(!_0x3f68c9['result'][_0x6fd7('0x10')]){throw new Error(_0x6fd7('0x11'));}var _0x505a03=_0x27149c;var _0x4a2a9a=_0x6fd7('0x12')+_0x3bd3fc+'&serviceId='+_0x24afb6+_0x6fd7('0x13')+_0x505a03+_0x6fd7('0x14')+JSON['stringify'](_0x52a2cc);var _0x321852=_0x387fc5+'?'+_0x4a2a9a;return rp(_0x321852);})[_0x6fd7('0x15')](function(_0x105a5a){logger['info'](_0x6fd7('0x16'),_0x593618,_0x105a5a);_0x5091ad[_0x6fd7('0x17')]();})[_0x6fd7('0x18')](function(_0x10734b){logger[_0x6fd7('0x19')](_0x6fd7('0x1a'),_0x593618,_[_0x6fd7('0x1b')](_0x10734b)?JSON[_0x6fd7('0xd')](_0x10734b):_0x10734b);_0x5091ad[_0x6fd7('0x17')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x593618);_0x5091ad[_0x6fd7('0x1c')]();}};};
\ No newline at end of file
+var _0x7399=['isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','../../../../config/logger','routing','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','?params=','title','method','login','params','stringify','POST','application/json-rpc','then','parse','result','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','error','[%s][TVOX]\x20%s'];(function(_0x3aae39,_0x5702ed){var _0x5c267d=function(_0x77083d){while(--_0x77083d){_0x3aae39['push'](_0x3aae39['shift']());}};_0x5c267d(++_0x5702ed);}(_0x7399,0x1e3));var _0x9739=function(_0x50f008,_0x5abe67){_0x50f008=_0x50f008-0x0;var _0x5d5483=_0x7399[_0x50f008];return _0x5d5483;};'use strict';var rp=require('request-promise');var logger=require(_0x9739('0x0'))(_0x9739('0x1'));var _=require('lodash');var arr=[];exports[_0x9739('0x2')]=function(_0x5680fb,_0x26b86d){return function(_0x50465a){var _0x124ab3=_0x26b86d[0xa];var _0xf4bbe5=_0x26b86d[0xb];var _0xb3fedc=_0x26b86d[0xc];var _0x2694ef=_0x26b86d[0xd];var _0x4ab662=_0x26b86d[0xe];var _0x7faba7=_0x26b86d[0xf][_0x9739('0x3')](/\n/g,_0x9739('0x4'));var _0x58afe9=_0x26b86d[0x10][_0x9739('0x3')](/\n/g,'\x20');if(!arr[_0x9739('0x5')](_0xf4bbe5)){arr[_0x9739('0x6')](_0xf4bbe5);var _0x1a32ac=_0x26b86d[0x3];var _0x302c4b=_0x26b86d[0x4];var _0x17ac7b=_0x26b86d[0x1];var _0x301d1f=_0x26b86d[0x0];var _0x5503ca={};_0x5503ca[_0x9739('0x7')]=_0x26b86d[0x8]+'?params='+_0xb3fedc+'|'+_0x124ab3+'|'+_0x2694ef+'|'+_0xf4bbe5+'|'+_0x4ab662;_0x5503ca['urlOnRing']=_0x26b86d[0x7]+_0x9739('0x8')+_0xb3fedc+'|'+_0x124ab3+'|'+_0x2694ef+'|'+_0xf4bbe5+'|'+_0x4ab662+'|'+_0x7faba7+'|'+_0x58afe9;_0x5503ca[_0x9739('0x9')]=_0x26b86d[0x9];var _0x46b8e0={};_0x46b8e0['jsonrpc']='2.0';_0x46b8e0[_0x9739('0xa')]=_0x9739('0xb');var _0x4f1278=[];_0x4f1278[_0x9739('0x6')](_0x26b86d[0x2]);_0x4f1278['push'](_0x26b86d[0x5]);_0x4f1278[_0x9739('0x6')](_0x26b86d[0x6]);_0x46b8e0[_0x9739('0xc')]=_0x4f1278;_0x46b8e0['id']=0x1;var _0x50cd85=JSON[_0x9739('0xd')](_0x46b8e0);var _0x108328={'encoding':'utf8','method':_0x9739('0xe'),'timeout':0x2710,'url':_0x1a32ac,'headers':{'Content-Type':_0x9739('0xf')},'body':_0x50cd85};return rp(_0x108328)[_0x9739('0x10')](function(_0x4555fe){const _0x4ec715=JSON[_0x9739('0x11')](_0x4555fe);if(!_0x4ec715[_0x9739('0x12')]['logged']){throw new Error(_0x9739('0x13'));}var _0x421157=_0xf4bbe5;var _0x1947ec=_0x9739('0x14')+_0x17ac7b+'&serviceId='+_0x301d1f+_0x9739('0x15')+_0x421157+_0x9739('0x16')+JSON[_0x9739('0xd')](_0x5503ca);var _0x5e4a0c=_0x302c4b+'?'+_0x1947ec;return rp(_0x5e4a0c);})[_0x9739('0x10')](function(_0xd8e991){logger[_0x9739('0x17')](_0x9739('0x18'),_0x5680fb,_0xd8e991);_0x50465a['stop']();})['catch'](function(_0x226153){logger[_0x9739('0x19')](_0x9739('0x1a'),_0x5680fb,_[_0x9739('0x1b')](_0x226153)?JSON['stringify'](_0x226153):_0x226153);_0x50465a['stop']();});}else{logger[_0x9739('0x17')](_0x9739('0x1c'),_0x5680fb);_0x50465a[_0x9739('0x1d')]();}};};
\ No newline at end of file
index 00e2f22..a01abab 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(_0x29b54f,_0x459edd){var _0x1f0dd3=function(_0x191155){while(--_0x191155){_0x29b54f['push'](_0x29b54f['shift']());}};_0x1f0dd3(++_0x459edd);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x10fc4b,_0x103682){var _0x10a5c9=function(_0x549e50){while(--_0x549e50){_0x10fc4b['push'](_0x10fc4b['shift']());}};_0x10a5c9(++_0x103682);}(_0xe706,0xa3));var _0x6e70=function(_0x59bd64,_0x237f2b){_0x59bd64=_0x59bd64-0x0;var _0x378c0e=_0xe706[_0x59bd64];return _0x378c0e;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 233d1f3..6d1de53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7df6=['hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','./applications/utils','./applications/strategy/util','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel','message','interaction','isArray','applications','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','dialogflowv2','tag','TagId','getMustacheRender','account','notificationTemplate','ChatWebsiteId','body','%s:%s:%s','./interval','condition','./applications/','consequence','priority','info','Push\x20new\x20rule','execute','Applications\x20executed','stringify','matchPath','emit','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','error','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty'];(function(_0x5eacae,_0x21a3d9){var _0x228157=function(_0x297944){while(--_0x297944){_0x5eacae['push'](_0x5eacae['shift']());}};_0x228157(++_0x21a3d9);}(_0x7df6,0x1ec));var _0x67df=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x7df6[_0x673722];return _0x21249c;};'use strict';var _=require(_0x67df('0x0'));var util=require(_0x67df('0x1'));var path=require(_0x67df('0x2'));var fs=require('fs');var jayson=require(_0x67df('0x3'));var BPromise=require('bluebird');var utils=require(_0x67df('0x4'));var sUtils=require(_0x67df('0x5'));var logger=require(_0x67df('0x6'))(_0x67df('0x7'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x67df('0x8')),'chatQueueReport':require(_0x67df('0x9')),'smsQueueReport':require(_0x67df('0xa')),'faxQueueReport':require(_0x67df('0xb')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0xa3d943,_0x5a1a3d,_0x3c4888){return util[_0x67df('0xc')](_0x67df('0xd'),_0xa3d943,_0x5a1a3d||0x0,_0x3c4888||0x0);}function getIntervals(_0x496003,_0x2c04bd){var _0x2c3fa5=[];if(!_[_0x67df('0xe')](_0x2c04bd[_0x67df('0xf')])&&!_[_0x67df('0xe')](_0x496003[_0x2c04bd['IntervalId']])&&!_[_0x67df('0xe')](_0x496003[_0x2c04bd['IntervalId']][_0x67df('0x10')])){_0x2c3fa5=_[_0x67df('0x11')](_0x496003[_0x2c04bd['IntervalId']][_0x67df('0x10')],_0x67df('0x12'));}else if(!_[_0x67df('0xe')](_0x2c04bd[_0x67df('0x12')])){_0x2c3fa5=[_0x2c04bd[_0x67df('0x12')]];}return _0x2c3fa5;}exports[_0x67df('0x13')]=function(_0x1355de){_0x1355de[_0x67df('0x14')]={};return new BPromise(function(_0x4763c9,_0x1393bc){var _0x4f9f53={'Start':function(_0x5cadcc){var _0x2c2945=this;return new Promise(function(_0x5b6fe2,_0x3ddaa5){if(_0x5cadcc){try{var _0x464fb4=[];var _0x2fadca=getId(_0x5cadcc[_0x67df('0x15')],_0x5cadcc[_0x67df('0x16')]?_0x5cadcc[_0x67df('0x16')]['id']:0x0,_0x5cadcc[_0x67df('0x17')]?_0x5cadcc['interaction']['id']:0x0);var _0xd93d52=sUtils['checkWaitingNotifications'](_0x1355de,_0x5cadcc);if(!_0xd93d52&&_0x5cadcc['applications']&&_[_0x67df('0x18')](_0x5cadcc[_0x67df('0x19')])&&_0x5cadcc[_0x67df('0x19')][_0x67df('0x1a')]){for(var _0x1b0f77=0x0;_0x1b0f77<_0x5cadcc[_0x67df('0x19')][_0x67df('0x1a')];_0x1b0f77+=0x1){var _0x54b6d2=_0x5cadcc[_0x67df('0x19')][_0x1b0f77];if(fs[_0x67df('0x1b')](path[_0x67df('0x1c')](__dirname,_0x67df('0x19'),_0x54b6d2[_0x67df('0x1d')]+_0x67df('0x1e')))){var _0x3f2da8=[];switch(_0x54b6d2['app'][_0x67df('0x1f')]()){case _0x67df('0x20'):var _0x3984fb=_0x54b6d2[_0x67df('0x21')][_0x67df('0x22')](',');if(_0x5cadcc['channel']==='mail'){_0x3f2da8[_0x67df('0x23')](_0x3984fb[0x0]);_0x3f2da8[_0x67df('0x23')](_0x3984fb[0x1]);_0x3f2da8[_0x67df('0x23')](_0x3984fb['slice'](0x2,_0x3984fb[_0x67df('0x1a')])[_0x67df('0x1c')](','));}else{_0x3f2da8['push'](_0x3984fb[0x0]);_0x3f2da8[_0x67df('0x23')](_0x3984fb[_0x67df('0x24')](0x1,_0x3984fb['length'])['join'](','));}break;case _0x67df('0x25'):var _0x53fcd0=_0x54b6d2[_0x67df('0x21')]['split'](',');_0x3f2da8[_0x67df('0x23')](_0x53fcd0[0x0]);_0x3f2da8['push'](_0x53fcd0[0x1]);_0x3f2da8[_0x67df('0x23')](_0x53fcd0[_0x67df('0x24')](0x2,_0x53fcd0[_0x67df('0x1a')])[_0x67df('0x1c')](','));break;case _0x67df('0x26'):var _0x167f4a=_0x54b6d2['appdata'][_0x67df('0x22')](',');_0x3f2da8['push'](_0x167f4a[0x0]);_0x3f2da8[_0x67df('0x23')](_0x167f4a[0x1]);_0x3f2da8[_0x67df('0x23')](_0x167f4a[0x2]);_0x3f2da8[_0x67df('0x23')](_0x167f4a[0x3]);_0x3f2da8[_0x67df('0x23')](_0x167f4a[_0x67df('0x24')](0x4,_0x167f4a['length'])['join'](','));break;case'amazonlex':var _0x47bd7a=_0x54b6d2['appdata']['split'](',');_0x3f2da8[_0x67df('0x23')](_0x47bd7a[0x0]);_0x3f2da8['push'](_0x47bd7a[0x1]);_0x3f2da8[_0x67df('0x23')](_0x47bd7a[0x2]);_0x3f2da8[_0x67df('0x23')](_0x47bd7a[0x3]);_0x3f2da8[_0x67df('0x23')](_0x47bd7a[_0x67df('0x24')](0x4,_0x47bd7a[_0x67df('0x1a')])[_0x67df('0x1c')](','));break;case _0x67df('0x16'):_0x3f2da8[_0x67df('0x23')](_0x54b6d2[_0x67df('0x21')]);break;case _0x67df('0x27'):_0x3f2da8[_0x67df('0x23')](_0x54b6d2[_0x67df('0x28')]);_0x3f2da8[_0x67df('0x23')](_0x54b6d2[_0x67df('0x21')]);break;case'tvox':var _0x3037e3=utils[_0x67df('0x29')](_0x5cadcc[_0x67df('0x2a')][_0x67df('0x2b')],_0x5cadcc);var _0x21b0c5=_0x54b6d2[_0x67df('0x21')][_0x67df('0x22')](',');_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x0]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x1]);_0x3f2da8['push'](_0x21b0c5[0x2]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x3]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x4]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x5]);_0x3f2da8['push'](_0x21b0c5[0x6]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x7]);_0x3f2da8['push'](_0x21b0c5[0x8]);_0x3f2da8[_0x67df('0x23')](_0x21b0c5[0x9]);_0x3f2da8['push'](_0x21b0c5[0xa]);_0x3f2da8[_0x67df('0x23')](_0x5cadcc[_0x67df('0x17')]['id']);_0x3f2da8['push'](_0x5cadcc[_0x67df('0x16')]['id']);_0x3f2da8['push'](_0x54b6d2[_0x67df('0x2c')]);_0x3f2da8[_0x67df('0x23')](_0x5cadcc[_0x67df('0x17')]['ContactId']);_0x3f2da8[_0x67df('0x23')](_0x5cadcc[_0x67df('0x2d')]['body']);_0x3f2da8['push'](_0x3037e3);break;default:_0x3f2da8=_[_0x67df('0xe')](_0x54b6d2[_0x67df('0x21')])?[]:_0x54b6d2['appdata']['split'](',');}var _0x3b67c2={'id':util['format'](_0x67df('0x2e'),_0x2fadca,_0x54b6d2['id'],_0x54b6d2[_0x67df('0x1d')]),'condition':require(_0x67df('0x2f'))[_0x67df('0x30')](_0x2fadca,getIntervals(_0x1355de['intervals'],_0x54b6d2),_0x1355de),'consequence':require(_0x67df('0x31')+_0x54b6d2[_0x67df('0x1d')])[_0x67df('0x32')](_0x2fadca,_0x3f2da8,_0x1355de,_0x5cadcc),'p':_0x54b6d2[_0x67df('0x33')]||0x0};logger[_0x67df('0x34')](_0x67df('0x35'),_0x3b67c2['id'],'on\x20interval',getIntervals(_0x1355de['intervals'],_0x54b6d2)[_0x67df('0x1c')]('\x20|\x20'));_0x464fb4['push'](_0x3b67c2);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0x67df('0x1c')](__dirname,_0x67df('0x19'),_0x54b6d2[_0x67df('0x1d')]+'.js'));}}_0x1355de['rules'][_0x2fadca]=new RuleEngine(_0x464fb4);_0x1355de[_0x67df('0x14')][_0x2fadca][_0x67df('0x36')](_0x5cadcc,function(_0x39dd76){logger[_0x67df('0x34')](_0x67df('0x37'),JSON[_0x67df('0x38')](_0x39dd76[_0x67df('0x39')]));if(_0x1355de[_0x67df('0x14')][_0x2fadca]){_0x1355de[_0x67df('0x14')][_0x2fadca][_0x67df('0x3a')]('complete');}});return _0x5b6fe2({'code':0xc8,'message':_0x5cadcc});}else{if(_0xd93d52){logger['info'](util[_0x67df('0xc')](_0x67df('0x3b'),_0x2fadca));}else{logger['info'](_0x67df('0x3c'));}return _0x5b6fe2({'code':0xc8,'message':_0x5cadcc});}}catch(_0x3831b0){logger[_0x67df('0x3d')](_0x3831b0[_0x67df('0x3e')]);return _0x3ddaa5(_0x2c2945[_0x67df('0x3d')](0x1f4,_0x3831b0));}}return _0x3ddaa5(_0x67df('0x3f'));});},'AcceptMessage':function(_0x1e1186){var _0x3dc3d=this;return new Promise(function(_0x53a45d,_0xcc93de){if(_0x1e1186[_0x67df('0x40')]&&_0x1e1186['agent']['id']){if(_0x1355de[_0x67df('0x41')][_0x1e1186['agent']['id']]){_0x1355de[_0x67df('0x41')][_0x1e1186[_0x67df('0x40')]['id']][_0x67df('0x42')]=![];_0x1355de[_0x67df('0x41')][_0x1e1186[_0x67df('0x40')]['id']][_0x67df('0x43')]=undefined;}}if(_0x1e1186['message']&&_0x1e1186[_0x67df('0x16')]['id']){try{var _0x549058=getId(_0x1e1186['channel'],_0x1e1186[_0x67df('0x16')]?_0x1e1186[_0x67df('0x16')]['id']:0x0,_0x1e1186[_0x67df('0x17')]?_0x1e1186[_0x67df('0x17')]['id']:0x0);if(_0x1355de[_0x67df('0x14')][_0x549058]){_0x1355de[_0x67df('0x14')][_0x549058]['emit']('end');if(rpc[_0x1e1186['channel']+'QueueReport']){rpc[_0x1e1186[_0x67df('0x15')]+'QueueReport']['update'](_0x549058,{'UserId':_0x1e1186['message'][_0x67df('0x44')]})[_0x67df('0x45')](function(){logger[_0x67df('0x3d')](_0x67df('0x46'));});}}return _0x53a45d({'code':0xc8,'message':_0x1e1186});}catch(_0x1f142f){logger['error'](_0x1f142f[_0x67df('0x3e')]);return _0xcc93de(_0x3dc3d[_0x67df('0x3d')](0x1f4,_0x1f142f));}}logger[_0x67df('0x3d')](_0x67df('0x47'));return _0xcc93de(_0x3dc3d[_0x67df('0x3d')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x1a0972){var _0x2b4699=this;return new Promise(function(_0x45e7cb,_0x5acae3){if(_0x1a0972[_0x67df('0x40')]&&_0x1a0972[_0x67df('0x40')]['id']){try{if(_0x1355de[_0x67df('0x41')][_0x1a0972[_0x67df('0x40')]['id']]){_0x1355de['agents'][_0x1a0972['agent']['id']]['busy']=![];_0x1355de[_0x67df('0x41')][_0x1a0972[_0x67df('0x40')]['id']][_0x67df('0x43')]=undefined;}return _0x45e7cb({'code':0xc8,'message':_0x1a0972});}catch(_0x4d9fbd){logger[_0x67df('0x3d')](_0x4d9fbd['stack']);return _0x5acae3(_0x2b4699['error'](0x1f4,_0x4d9fbd));}}logger['error'](_0x67df('0x47'));return _0x5acae3(_0x2b4699[_0x67df('0x3d')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x60c151){var _0x2ea03a=this;return new Promise(function(_0x50e8ca,_0x55fdc7){if(_0x60c151[_0x67df('0x15')]&&_0x60c151[_0x67df('0x17')]&&_0x60c151['interaction']['id']){try{var _0x2663c9=getId(_0x60c151['channel'],_0x60c151[_0x67df('0x16')]?_0x60c151['message']['id']:0x0,_0x60c151['interaction']?_0x60c151[_0x67df('0x17')]['id']:0x0);if(_0x1355de[_0x67df('0x14')][_0x2663c9]){_0x1355de[_0x67df('0x14')][_0x2663c9][_0x67df('0x3a')]('end');}return _0x50e8ca({'code':0xc8,'message':_0x60c151});}catch(_0x54b1f9){logger[_0x67df('0x3d')](_0x54b1f9[_0x67df('0x3e')]);return _0x55fdc7(_0x2ea03a['error'](0x1f4,_0x54b1f9));}}logger[_0x67df('0x3d')](_0x67df('0x47'));return _0x55fdc7(_0x2ea03a[_0x67df('0x3d')](0x1f4,_0x67df('0x47')));});},'AgentCapacity':function(_0x3f3f2b){var _0x98dc96=this;return new Promise(function(_0x265121,_0x3ea816){if(_0x1355de[_0x67df('0x41')][_0x67df('0x48')](_0x3f3f2b['id'])){for(var _0x140a7e in _0x3f3f2b[_0x67df('0x49')]){if(_0x3f3f2b[_0x67df('0x49')][_0x67df('0x48')](_0x140a7e)){if(_0x1355de['agents'][_0x3f3f2b['id']][_0x67df('0x48')](_0x140a7e+_0x67df('0x4a'))){_0x1355de[_0x67df('0x41')][_0x3f3f2b['id']][_0x140a7e+'CurrentCapacity']=parseInt(_0x3f3f2b['capacity'][_0x140a7e],0xa);}}}_0x1355de[_0x67df('0x41')][_0x3f3f2b['id']][_0x67df('0x4b')]();return _0x265121({'code':0xc8,'message':_0x1355de['agents'][_0x3f3f2b['id']]});}else{return _0x3ea816(_0x98dc96[_0x67df('0x3d')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x19864f){return new Promise(function(_0x17e6e3){var _0x393501=_[_0x67df('0x4c')](_0x1355de['agents']);if(_0x19864f&&_0x19864f['id']){var _0x25e267=_['find'](_0x393501,function(_0x443224){return _0x443224['id']===_0x19864f['id'];});_0x17e6e3(_0x25e267);}else{_0x17e6e3({'count':_0x393501['length'],'rows':_0x393501});}});},'ChatQueues':function(){return new Promise(function(_0x8e0045){var _0x518a5b=[];for(var _0x3a1a42 in _0x1355de[_0x67df('0x4d')]){if(_0x1355de[_0x67df('0x4d')][_0x67df('0x48')](_0x3a1a42)){var _0x54bf65=_0x1355de[_0x67df('0x4d')][_0x3a1a42];var _0x8ea9d7={'id':_0x54bf65['id'],'available':_0x54bf65[_0x67df('0x4e')],'loggedIn':_0x54bf65[_0x67df('0x4f')],'name':_0x54bf65[_0x67df('0x50')],'paused':_0x54bf65[_0x67df('0x51')],'waiting':_0x54bf65[_0x67df('0x52')]};_0x518a5b[_0x67df('0x23')](_0x8ea9d7);}}_0x8e0045({'count':_0x518a5b['length'],'rows':_0x518a5b});});},'MailQueues':function(){return new Promise(function(_0x330ade){var _0x301c31=[];for(var _0x1ec4e7 in _0x1355de['mailQueues']){if(_0x1355de[_0x67df('0x53')][_0x67df('0x48')](_0x1ec4e7)){var _0x414c68=_0x1355de[_0x67df('0x53')][_0x1ec4e7];var _0x199bcc={'id':_0x414c68['id'],'available':_0x414c68['available'],'loggedIn':_0x414c68[_0x67df('0x4f')],'name':_0x414c68[_0x67df('0x50')],'paused':_0x414c68[_0x67df('0x51')],'waiting':_0x414c68[_0x67df('0x52')]};_0x301c31[_0x67df('0x23')](_0x199bcc);}}_0x330ade({'count':_0x301c31[_0x67df('0x1a')],'rows':_0x301c31});});},'OpenchannelQueues':function(){return new Promise(function(_0x3a20b9){var _0x243985=[];for(var _0x524605 in _0x1355de['openchannelQueues']){if(_0x1355de[_0x67df('0x54')][_0x67df('0x48')](_0x524605)){var _0x2f8040=_0x1355de[_0x67df('0x54')][_0x524605];var _0x4f6e79={'id':_0x2f8040['id'],'available':_0x2f8040[_0x67df('0x4e')],'loggedIn':_0x2f8040[_0x67df('0x4f')],'name':_0x2f8040[_0x67df('0x50')],'paused':_0x2f8040[_0x67df('0x51')],'waiting':_0x2f8040[_0x67df('0x52')]};_0x243985[_0x67df('0x23')](_0x4f6e79);}}_0x3a20b9({'count':_0x243985[_0x67df('0x1a')],'rows':_0x243985});});},'SmsQueues':function(){return new Promise(function(_0x1a8be4){var _0xb324b5=[];for(var _0x75ce1e in _0x1355de[_0x67df('0x55')]){if(_0x1355de[_0x67df('0x55')][_0x67df('0x48')](_0x75ce1e)){var _0x589f04=_0x1355de[_0x67df('0x55')][_0x75ce1e];var _0x52a280={'id':_0x589f04['id'],'available':_0x589f04[_0x67df('0x4e')],'loggedIn':_0x589f04[_0x67df('0x4f')],'name':_0x589f04['name'],'paused':_0x589f04[_0x67df('0x51')],'waiting':_0x589f04[_0x67df('0x52')]};_0xb324b5[_0x67df('0x23')](_0x52a280);}}_0x1a8be4({'count':_0xb324b5['length'],'rows':_0xb324b5});});},'FaxQueues':function(){return new Promise(function(_0x200298){var _0x1d0265=[];for(var _0x2ea871 in _0x1355de[_0x67df('0x56')]){if(_0x1355de[_0x67df('0x56')][_0x67df('0x48')](_0x2ea871)){var _0x52fcf8=_0x1355de[_0x67df('0x56')][_0x2ea871];var _0x415e3a={'id':_0x52fcf8['id'],'available':_0x52fcf8['available'],'loggedIn':_0x52fcf8[_0x67df('0x4f')],'name':_0x52fcf8[_0x67df('0x50')],'paused':_0x52fcf8[_0x67df('0x51')],'waiting':_0x52fcf8[_0x67df('0x52')]};_0x1d0265[_0x67df('0x23')](_0x415e3a);}}_0x200298({'count':_0x1d0265['length'],'rows':_0x1d0265});});},'WhatsappQueues':function(){return new Promise(function(_0x209856){var _0x14a7d0=[];for(var _0x5735e4 in _0x1355de[_0x67df('0x57')]){if(_0x1355de['whatsappQueues']['hasOwnProperty'](_0x5735e4)){var _0x3dc3a7=_0x1355de['whatsappQueues'][_0x5735e4];var _0x579e83={'id':_0x3dc3a7['id'],'available':_0x3dc3a7[_0x67df('0x4e')],'loggedIn':_0x3dc3a7[_0x67df('0x4f')],'name':_0x3dc3a7[_0x67df('0x50')],'paused':_0x3dc3a7[_0x67df('0x51')],'waiting':_0x3dc3a7['waiting']};_0x14a7d0[_0x67df('0x23')](_0x579e83);}}_0x209856({'count':_0x14a7d0[_0x67df('0x1a')],'rows':_0x14a7d0});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x3816b0){var _0x2bfdc0=_[_0x67df('0x4c')](_0x1355de[_0x67df('0x58')]);_0x3816b0({'count':_0x2bfdc0[_0x67df('0x1a')],'rows':_0x2bfdc0});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x218f3a){var _0x49975b=_[_0x67df('0x4c')](_0x1355de['mailQueuesWaitingInteractions']);_0x218f3a({'count':_0x49975b[_0x67df('0x1a')],'rows':_0x49975b});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x484828){var _0x2273ab=_[_0x67df('0x4c')](_0x1355de['openchannelQueuesWaitingInteractions']);_0x484828({'count':_0x2273ab[_0x67df('0x1a')],'rows':_0x2273ab});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x438113){var _0x43092d=_[_0x67df('0x4c')](_0x1355de[_0x67df('0x59')]);_0x438113({'count':_0x43092d['length'],'rows':_0x43092d});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x5239f0){var _0x35eb56=_[_0x67df('0x4c')](_0x1355de[_0x67df('0x5a')]);_0x5239f0({'count':_0x35eb56[_0x67df('0x1a')],'rows':_0x35eb56});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x26b61e){var _0x5890e1=_[_0x67df('0x4c')](_0x1355de[_0x67df('0x5b')]);_0x26b61e({'count':_0x5890e1[_0x67df('0x1a')],'rows':_0x5890e1});});}};var _0x5904dd=jayson['server'](_0x4f9f53)['http']();_0x5904dd['on']('error',function(_0x4226fe){logger[_0x67df('0x3d')](JSON[_0x67df('0x38')](_0x4226fe));return _0x1393bc(_0x4226fe);});_0x5904dd[_0x67df('0x13')](0x232c,'127.0.0.1',function(){console[_0x67df('0x5c')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x4763c9(_0x67df('0x5d')+0x232c);});});};
\ No newline at end of file
+var _0x843e=['end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','capacity','hasOwnProperty','updateRealtime','agent\x20not\x20found','values','find','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/utils','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','channel','message','interaction','checkWaitingNotifications','applications','length','existsSync','join','app','toLowerCase','autoreply','split','mail','push','slice','dialogflow','dialogflowv2','appdata','amazonlex','TagId','tvox','getMustacheRender','account','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','info','Push\x20new\x20rule','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','matchPath','rules','emit','complete','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busyQueue'];(function(_0x2ff5c3,_0x463245){var _0x48d820=function(_0x100928){while(--_0x100928){_0x2ff5c3['push'](_0x2ff5c3['shift']());}};_0x48d820(++_0x463245);}(_0x843e,0x8f));var _0xe843=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x843e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe843('0x0'));var util=require(_0xe843('0x1'));var path=require(_0xe843('0x2'));var fs=require('fs');var jayson=require(_0xe843('0x3'));var BPromise=require(_0xe843('0x4'));var utils=require(_0xe843('0x5'));var sUtils=require('./applications/strategy/util');var logger=require('../../../config/logger')(_0xe843('0x6'));var rpc={'openchannelQueueReport':require(_0xe843('0x7')),'mailQueueReport':require(_0xe843('0x8')),'chatQueueReport':require(_0xe843('0x9')),'smsQueueReport':require(_0xe843('0xa')),'faxQueueReport':require(_0xe843('0xb')),'whatsappQueueReport':require(_0xe843('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x3d0d26,_0x56041f,_0x3dac29){return util[_0xe843('0xd')](_0xe843('0xe'),_0x3d0d26,_0x56041f||0x0,_0x3dac29||0x0);}function getIntervals(_0x55a2df,_0x1e4b19){var _0x17c9b5=[];if(!_[_0xe843('0xf')](_0x1e4b19[_0xe843('0x10')])&&!_[_0xe843('0xf')](_0x55a2df[_0x1e4b19[_0xe843('0x10')]])&&!_[_0xe843('0xf')](_0x55a2df[_0x1e4b19[_0xe843('0x10')]][_0xe843('0x11')])){_0x17c9b5=_[_0xe843('0x12')](_0x55a2df[_0x1e4b19[_0xe843('0x10')]][_0xe843('0x11')],_0xe843('0x13'));}else if(!_[_0xe843('0xf')](_0x1e4b19[_0xe843('0x13')])){_0x17c9b5=[_0x1e4b19[_0xe843('0x13')]];}return _0x17c9b5;}exports[_0xe843('0x14')]=function(_0x1e670c){_0x1e670c['rules']={};return new BPromise(function(_0x14f145,_0x49c6f9){var _0x3c793b={'Start':function(_0x2a11c4){var _0x3a780b=this;return new Promise(function(_0x2a936e,_0xc136ca){if(_0x2a11c4){try{var _0x58e193=[];var _0x20daae=getId(_0x2a11c4[_0xe843('0x15')],_0x2a11c4[_0xe843('0x16')]?_0x2a11c4[_0xe843('0x16')]['id']:0x0,_0x2a11c4[_0xe843('0x17')]?_0x2a11c4[_0xe843('0x17')]['id']:0x0);var _0x558287=sUtils[_0xe843('0x18')](_0x1e670c,_0x2a11c4);if(!_0x558287&&_0x2a11c4[_0xe843('0x19')]&&_['isArray'](_0x2a11c4['applications'])&&_0x2a11c4[_0xe843('0x19')]['length']){for(var _0x1a7f7d=0x0;_0x1a7f7d<_0x2a11c4['applications'][_0xe843('0x1a')];_0x1a7f7d+=0x1){var _0x526573=_0x2a11c4[_0xe843('0x19')][_0x1a7f7d];if(fs[_0xe843('0x1b')](path[_0xe843('0x1c')](__dirname,'applications',_0x526573[_0xe843('0x1d')]+'.js'))){var _0x3d9ec3=[];switch(_0x526573[_0xe843('0x1d')][_0xe843('0x1e')]()){case _0xe843('0x1f'):var _0x22b78b=_0x526573['appdata'][_0xe843('0x20')](',');if(_0x2a11c4['channel']===_0xe843('0x21')){_0x3d9ec3[_0xe843('0x22')](_0x22b78b[0x0]);_0x3d9ec3[_0xe843('0x22')](_0x22b78b[0x1]);_0x3d9ec3['push'](_0x22b78b[_0xe843('0x23')](0x2,_0x22b78b[_0xe843('0x1a')])[_0xe843('0x1c')](','));}else{_0x3d9ec3[_0xe843('0x22')](_0x22b78b[0x0]);_0x3d9ec3[_0xe843('0x22')](_0x22b78b['slice'](0x1,_0x22b78b[_0xe843('0x1a')])[_0xe843('0x1c')](','));}break;case _0xe843('0x24'):var _0x5ea4d4=_0x526573['appdata'][_0xe843('0x20')](',');_0x3d9ec3[_0xe843('0x22')](_0x5ea4d4[0x0]);_0x3d9ec3[_0xe843('0x22')](_0x5ea4d4[0x1]);_0x3d9ec3['push'](_0x5ea4d4[_0xe843('0x23')](0x2,_0x5ea4d4[_0xe843('0x1a')])[_0xe843('0x1c')](','));break;case _0xe843('0x25'):var _0x17f051=_0x526573[_0xe843('0x26')][_0xe843('0x20')](',');_0x3d9ec3[_0xe843('0x22')](_0x17f051[0x0]);_0x3d9ec3['push'](_0x17f051[0x1]);_0x3d9ec3['push'](_0x17f051[0x2]);_0x3d9ec3['push'](_0x17f051[0x3]);_0x3d9ec3[_0xe843('0x22')](_0x17f051[_0xe843('0x23')](0x4,_0x17f051['length'])[_0xe843('0x1c')](','));break;case _0xe843('0x27'):var _0x4273df=_0x526573['appdata']['split'](',');_0x3d9ec3['push'](_0x4273df[0x0]);_0x3d9ec3['push'](_0x4273df[0x1]);_0x3d9ec3['push'](_0x4273df[0x2]);_0x3d9ec3[_0xe843('0x22')](_0x4273df[0x3]);_0x3d9ec3[_0xe843('0x22')](_0x4273df[_0xe843('0x23')](0x4,_0x4273df[_0xe843('0x1a')])['join'](','));break;case'message':_0x3d9ec3[_0xe843('0x22')](_0x526573[_0xe843('0x26')]);break;case'tag':_0x3d9ec3['push'](_0x526573[_0xe843('0x28')]);_0x3d9ec3[_0xe843('0x22')](_0x526573[_0xe843('0x26')]);break;case _0xe843('0x29'):var _0x5695ff=utils[_0xe843('0x2a')](_0x2a11c4[_0xe843('0x2b')]['notificationTemplate'],_0x2a11c4);var _0x5f3723=_0x526573['appdata'][_0xe843('0x20')](',');_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x0]);_0x3d9ec3['push'](_0x5f3723[0x1]);_0x3d9ec3['push'](_0x5f3723[0x2]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x3]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x4]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x5]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x6]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x7]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x8]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0x9]);_0x3d9ec3[_0xe843('0x22')](_0x5f3723[0xa]);_0x3d9ec3[_0xe843('0x22')](_0x2a11c4['interaction']['id']);_0x3d9ec3['push'](_0x2a11c4[_0xe843('0x16')]['id']);_0x3d9ec3[_0xe843('0x22')](_0x526573[_0xe843('0x2c')]);_0x3d9ec3[_0xe843('0x22')](_0x2a11c4['interaction'][_0xe843('0x2d')]);_0x3d9ec3[_0xe843('0x22')](_0x2a11c4[_0xe843('0x2e')][_0xe843('0x2e')]);_0x3d9ec3[_0xe843('0x22')](_0x5695ff);break;default:_0x3d9ec3=_[_0xe843('0xf')](_0x526573['appdata'])?[]:_0x526573[_0xe843('0x26')][_0xe843('0x20')](',');}var _0x3914a1={'id':util['format'](_0xe843('0x2f'),_0x20daae,_0x526573['id'],_0x526573['app']),'condition':require(_0xe843('0x30'))[_0xe843('0x31')](_0x20daae,getIntervals(_0x1e670c[_0xe843('0x32')],_0x526573),_0x1e670c),'consequence':require(_0xe843('0x33')+_0x526573[_0xe843('0x1d')])[_0xe843('0x34')](_0x20daae,_0x3d9ec3,_0x1e670c,_0x2a11c4),'p':_0x526573['priority']||0x0};logger[_0xe843('0x35')](_0xe843('0x36'),_0x3914a1['id'],'on\x20interval',getIntervals(_0x1e670c['intervals'],_0x526573)['join']('\x20|\x20'));_0x58e193['push'](_0x3914a1);}else{logger[_0xe843('0x37')](_0xe843('0x38'),path[_0xe843('0x1c')](__dirname,_0xe843('0x19'),_0x526573[_0xe843('0x1d')]+_0xe843('0x39')));}}_0x1e670c['rules'][_0x20daae]=new RuleEngine(_0x58e193);_0x1e670c['rules'][_0x20daae][_0xe843('0x3a')](_0x2a11c4,function(_0x484381){logger[_0xe843('0x35')](_0xe843('0x3b'),JSON['stringify'](_0x484381[_0xe843('0x3c')]));if(_0x1e670c[_0xe843('0x3d')][_0x20daae]){_0x1e670c[_0xe843('0x3d')][_0x20daae][_0xe843('0x3e')](_0xe843('0x3f'));}});return _0x2a936e({'code':0xc8,'message':_0x2a11c4});}else{if(_0x558287){logger[_0xe843('0x35')](util[_0xe843('0xd')](_0xe843('0x40'),_0x20daae));}else{logger['info'](_0xe843('0x41'));}return _0x2a936e({'code':0xc8,'message':_0x2a11c4});}}catch(_0x5d9b55){logger[_0xe843('0x37')](_0x5d9b55[_0xe843('0x42')]);return _0xc136ca(_0x3a780b[_0xe843('0x37')](0x1f4,_0x5d9b55));}}return _0xc136ca(_0xe843('0x43'));});},'AcceptMessage':function(_0x1fc283){var _0x577757=this;return new Promise(function(_0x453cee,_0x1619b7){if(_0x1fc283['agent']&&_0x1fc283[_0xe843('0x44')]['id']){if(_0x1e670c[_0xe843('0x45')][_0x1fc283['agent']['id']]){_0x1e670c['agents'][_0x1fc283[_0xe843('0x44')]['id']]['busy']=![];_0x1e670c['agents'][_0x1fc283[_0xe843('0x44')]['id']][_0xe843('0x46')]=undefined;}}if(_0x1fc283[_0xe843('0x16')]&&_0x1fc283[_0xe843('0x16')]['id']){try{var _0xe76309=getId(_0x1fc283[_0xe843('0x15')],_0x1fc283[_0xe843('0x16')]?_0x1fc283['message']['id']:0x0,_0x1fc283[_0xe843('0x17')]?_0x1fc283[_0xe843('0x17')]['id']:0x0);if(_0x1e670c[_0xe843('0x3d')][_0xe76309]){_0x1e670c[_0xe843('0x3d')][_0xe76309][_0xe843('0x3e')](_0xe843('0x47'));if(rpc[_0x1fc283[_0xe843('0x15')]+_0xe843('0x48')]){rpc[_0x1fc283['channel']+'QueueReport'][_0xe843('0x49')](_0xe76309,{'UserId':_0x1fc283['message'][_0xe843('0x4a')]})['catch'](function(){logger[_0xe843('0x37')](_0xe843('0x4b'));});}}return _0x453cee({'code':0xc8,'message':_0x1fc283});}catch(_0x7ec0f1){logger['error'](_0x7ec0f1['stack']);return _0x1619b7(_0x577757[_0xe843('0x37')](0x1f4,_0x7ec0f1));}}logger[_0xe843('0x37')](_0xe843('0x4c'));return _0x1619b7(_0x577757[_0xe843('0x37')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x484971){var _0xb00e64=this;return new Promise(function(_0x2a9b4c,_0x1de17b){if(_0x484971[_0xe843('0x44')]&&_0x484971['agent']['id']){try{if(_0x1e670c[_0xe843('0x45')][_0x484971[_0xe843('0x44')]['id']]){_0x1e670c[_0xe843('0x45')][_0x484971[_0xe843('0x44')]['id']][_0xe843('0x4d')]=![];_0x1e670c[_0xe843('0x45')][_0x484971[_0xe843('0x44')]['id']][_0xe843('0x46')]=undefined;}return _0x2a9b4c({'code':0xc8,'message':_0x484971});}catch(_0x3828b0){logger[_0xe843('0x37')](_0x3828b0[_0xe843('0x42')]);return _0x1de17b(_0xb00e64[_0xe843('0x37')](0x1f4,_0x3828b0));}}logger[_0xe843('0x37')](_0xe843('0x4c'));return _0x1de17b(_0xb00e64[_0xe843('0x37')](0x1f4,_0xe843('0x4c')));});},'AbandonInteraction':function(_0xe6601){var _0x68fc2d=this;return new Promise(function(_0x3f1326,_0x42c02b){if(_0xe6601[_0xe843('0x15')]&&_0xe6601['interaction']&&_0xe6601[_0xe843('0x17')]['id']){try{var _0x4c8622=getId(_0xe6601[_0xe843('0x15')],_0xe6601[_0xe843('0x16')]?_0xe6601[_0xe843('0x16')]['id']:0x0,_0xe6601[_0xe843('0x17')]?_0xe6601['interaction']['id']:0x0);if(_0x1e670c[_0xe843('0x3d')][_0x4c8622]){_0x1e670c[_0xe843('0x3d')][_0x4c8622][_0xe843('0x3e')](_0xe843('0x47'));}return _0x3f1326({'code':0xc8,'message':_0xe6601});}catch(_0x3a3301){logger[_0xe843('0x37')](_0x3a3301[_0xe843('0x42')]);return _0x42c02b(_0x68fc2d[_0xe843('0x37')](0x1f4,_0x3a3301));}}logger['error'](_0xe843('0x4c'));return _0x42c02b(_0x68fc2d[_0xe843('0x37')](0x1f4,_0xe843('0x4c')));});},'AgentCapacity':function(_0x373fd7){var _0x4613f3=this;return new Promise(function(_0x1b7304,_0x252eac){if(_0x1e670c[_0xe843('0x45')]['hasOwnProperty'](_0x373fd7['id'])){for(var _0xc035ca in _0x373fd7['capacity']){if(_0x373fd7[_0xe843('0x4e')][_0xe843('0x4f')](_0xc035ca)){if(_0x1e670c['agents'][_0x373fd7['id']][_0xe843('0x4f')](_0xc035ca+'CurrentCapacity')){_0x1e670c[_0xe843('0x45')][_0x373fd7['id']][_0xc035ca+'CurrentCapacity']=parseInt(_0x373fd7[_0xe843('0x4e')][_0xc035ca],0xa);}}}_0x1e670c[_0xe843('0x45')][_0x373fd7['id']][_0xe843('0x50')]();return _0x1b7304({'code':0xc8,'message':_0x1e670c[_0xe843('0x45')][_0x373fd7['id']]});}else{return _0x252eac(_0x4613f3[_0xe843('0x37')](0x1f4,_0xe843('0x51')));}});},'Agents':function(_0x7c9f7d){return new Promise(function(_0x38bab6){var _0x41cfa0=_[_0xe843('0x52')](_0x1e670c['agents']);if(_0x7c9f7d&&_0x7c9f7d['id']){var _0x375762=_[_0xe843('0x53')](_0x41cfa0,function(_0x4e1532){return _0x4e1532['id']===_0x7c9f7d['id'];});_0x38bab6(_0x375762);}else{_0x38bab6({'count':_0x41cfa0[_0xe843('0x1a')],'rows':_0x41cfa0});}});},'ChatQueues':function(){return new Promise(function(_0x17dfc4){var _0xf3bcfc=[];for(var _0x23d551 in _0x1e670c['chatQueues']){if(_0x1e670c['chatQueues']['hasOwnProperty'](_0x23d551)){var _0x6bb7dd=_0x1e670c['chatQueues'][_0x23d551];var _0x229c92={'id':_0x6bb7dd['id'],'available':_0x6bb7dd[_0xe843('0x54')],'loggedIn':_0x6bb7dd[_0xe843('0x55')],'name':_0x6bb7dd[_0xe843('0x56')],'paused':_0x6bb7dd[_0xe843('0x57')],'waiting':_0x6bb7dd[_0xe843('0x58')]};_0xf3bcfc[_0xe843('0x22')](_0x229c92);}}_0x17dfc4({'count':_0xf3bcfc['length'],'rows':_0xf3bcfc});});},'MailQueues':function(){return new Promise(function(_0x5e0162){var _0x12ee7e=[];for(var _0x5bf2a0 in _0x1e670c['mailQueues']){if(_0x1e670c[_0xe843('0x59')][_0xe843('0x4f')](_0x5bf2a0)){var _0x1e9804=_0x1e670c[_0xe843('0x59')][_0x5bf2a0];var _0x5d36a3={'id':_0x1e9804['id'],'available':_0x1e9804[_0xe843('0x54')],'loggedIn':_0x1e9804[_0xe843('0x55')],'name':_0x1e9804[_0xe843('0x56')],'paused':_0x1e9804[_0xe843('0x57')],'waiting':_0x1e9804[_0xe843('0x58')]};_0x12ee7e['push'](_0x5d36a3);}}_0x5e0162({'count':_0x12ee7e['length'],'rows':_0x12ee7e});});},'OpenchannelQueues':function(){return new Promise(function(_0x2584df){var _0x1ed376=[];for(var _0x5494aa in _0x1e670c[_0xe843('0x5a')]){if(_0x1e670c[_0xe843('0x5a')][_0xe843('0x4f')](_0x5494aa)){var _0x431d76=_0x1e670c[_0xe843('0x5a')][_0x5494aa];var _0x6bbb={'id':_0x431d76['id'],'available':_0x431d76['available'],'loggedIn':_0x431d76[_0xe843('0x55')],'name':_0x431d76[_0xe843('0x56')],'paused':_0x431d76[_0xe843('0x57')],'waiting':_0x431d76[_0xe843('0x58')]};_0x1ed376[_0xe843('0x22')](_0x6bbb);}}_0x2584df({'count':_0x1ed376['length'],'rows':_0x1ed376});});},'SmsQueues':function(){return new Promise(function(_0x390ea6){var _0x30f1c5=[];for(var _0x29c534 in _0x1e670c[_0xe843('0x5b')]){if(_0x1e670c[_0xe843('0x5b')][_0xe843('0x4f')](_0x29c534)){var _0x5b2789=_0x1e670c['smsQueues'][_0x29c534];var _0x275e8f={'id':_0x5b2789['id'],'available':_0x5b2789[_0xe843('0x54')],'loggedIn':_0x5b2789['loggedIn'],'name':_0x5b2789[_0xe843('0x56')],'paused':_0x5b2789['paused'],'waiting':_0x5b2789[_0xe843('0x58')]};_0x30f1c5[_0xe843('0x22')](_0x275e8f);}}_0x390ea6({'count':_0x30f1c5[_0xe843('0x1a')],'rows':_0x30f1c5});});},'FaxQueues':function(){return new Promise(function(_0xdca278){var _0x25053e=[];for(var _0x164da1 in _0x1e670c['faxQueues']){if(_0x1e670c[_0xe843('0x5c')]['hasOwnProperty'](_0x164da1)){var _0x508a86=_0x1e670c['faxQueues'][_0x164da1];var _0x8f1e29={'id':_0x508a86['id'],'available':_0x508a86[_0xe843('0x54')],'loggedIn':_0x508a86[_0xe843('0x55')],'name':_0x508a86[_0xe843('0x56')],'paused':_0x508a86['paused'],'waiting':_0x508a86[_0xe843('0x58')]};_0x25053e[_0xe843('0x22')](_0x8f1e29);}}_0xdca278({'count':_0x25053e[_0xe843('0x1a')],'rows':_0x25053e});});},'WhatsappQueues':function(){return new Promise(function(_0x1d6c92){var _0x183de4=[];for(var _0x251a1e in _0x1e670c[_0xe843('0x5d')]){if(_0x1e670c['whatsappQueues'][_0xe843('0x4f')](_0x251a1e)){var _0x36dca9=_0x1e670c[_0xe843('0x5d')][_0x251a1e];var _0x435ae2={'id':_0x36dca9['id'],'available':_0x36dca9['available'],'loggedIn':_0x36dca9[_0xe843('0x55')],'name':_0x36dca9[_0xe843('0x56')],'paused':_0x36dca9[_0xe843('0x57')],'waiting':_0x36dca9['waiting']};_0x183de4[_0xe843('0x22')](_0x435ae2);}}_0x1d6c92({'count':_0x183de4[_0xe843('0x1a')],'rows':_0x183de4});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x3272cc){var _0x226507=_[_0xe843('0x52')](_0x1e670c[_0xe843('0x5e')]);_0x3272cc({'count':_0x226507[_0xe843('0x1a')],'rows':_0x226507});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x5b34b0){var _0x2e58df=_[_0xe843('0x52')](_0x1e670c[_0xe843('0x5f')]);_0x5b34b0({'count':_0x2e58df[_0xe843('0x1a')],'rows':_0x2e58df});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x383d6a){var _0xd74d8a=_['values'](_0x1e670c[_0xe843('0x60')]);_0x383d6a({'count':_0xd74d8a[_0xe843('0x1a')],'rows':_0xd74d8a});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x2b042f){var _0x331af4=_[_0xe843('0x52')](_0x1e670c[_0xe843('0x61')]);_0x2b042f({'count':_0x331af4['length'],'rows':_0x331af4});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x456b8f){var _0x14996f=_[_0xe843('0x52')](_0x1e670c[_0xe843('0x62')]);_0x456b8f({'count':_0x14996f[_0xe843('0x1a')],'rows':_0x14996f});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x4f117d){var _0x3e35c3=_['values'](_0x1e670c[_0xe843('0x63')]);_0x4f117d({'count':_0x3e35c3[_0xe843('0x1a')],'rows':_0x3e35c3});});}};var _0x2ddf77=jayson[_0xe843('0x64')](_0x3c793b)[_0xe843('0x65')]();_0x2ddf77['on']('error',function(_0x1ca2ee){logger[_0xe843('0x37')](JSON[_0xe843('0x66')](_0x1ca2ee));return _0x49c6f9(_0x1ca2ee);});_0x2ddf77[_0xe843('0x14')](0x232c,_0xe843('0x67'),function(){console[_0xe843('0x68')](_0xe843('0x69'),0x232c);return _0x14f145(_0xe843('0x6a')+0x232c);});});};
\ No newline at end of file
index 5e73dd8..cf64ca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2127=['log','util','bluebird','lodash','routing','client','http','request','then','error','result','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','format','iftime\x20%s','message','indexOf','catch','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20'];(function(_0x387442,_0x22cf1c){var _0x4def6d=function(_0x33743d){while(--_0x33743d){_0x387442['push'](_0x387442['shift']());}};_0x4def6d(++_0x22cf1c);}(_0x2127,0x151));var _0x7212=function(_0x21f725,_0x9ae43e){_0x21f725=_0x21f725-0x0;var _0x21029e=_0x2127[_0x21f725];return _0x21029e;};'use strict';var util=require(_0x7212('0x0'));var BPromise=require(_0x7212('0x1'));var jayson=require('jayson/promise');var _=require(_0x7212('0x2'));var logger=require('../../../config/logger')(_0x7212('0x3'));var client=jayson[_0x7212('0x4')][_0x7212('0x5')]({'port':0x232a});function request(_0xac8734,_0x3c787e){return new BPromise(function(_0x3f364b,_0x1b9f31){return client[_0x7212('0x6')](_0xac8734,_0x3c787e)[_0x7212('0x7')](function(_0x58f14c){if(_0x58f14c[_0x7212('0x8')]){return _0x1b9f31(_0x58f14c['error']['message']);}else{return _0x3f364b(_0x58f14c[_0x7212('0x9')]);}})['catch'](function(_0x115717){return _0x1b9f31(_0x115717);});});}exports['condition']=function(_0x412302,_0x20c887,_0x154050){return function(_0x51a141){if(_0x154050[_0x7212('0xa')]&&!_0x154050['rules'][_0x412302]){logger[_0x7212('0xb')](_0x7212('0xc'),_0x412302);return _0x51a141[_0x7212('0xd')]();}var _0x5b3144=[];for(var _0x14b297=0x0;_0x14b297<_0x20c887[_0x7212('0xe')];_0x14b297+=0x1){_0x5b3144[_0x7212('0xf')](request('Command',{'command':util[_0x7212('0x10')](_0x7212('0x11'),_0x20c887[_0x14b297])})['then'](function(_0x1feafb){return _0x1feafb&&_0x1feafb[_0x7212('0x12')]&&_0x1feafb[_0x7212('0x12')][_0x7212('0x13')]('true')>=0x0?!![]:![];})[_0x7212('0x14')](function(_0x30b859){logger['error'](_0x7212('0x15'),_0x412302,_0x20c887[_0x14b297]);}));}BPromise[_0x7212('0x16')](_0x5b3144)[_0x7212('0x7')](function(_0x249de5){var _0x7c4ab0=_[_0x7212('0x17')](_0x249de5);logger[_0x7212('0xb')](_0x7212('0x18'),_0x412302,_0x20c887[_0x7212('0x19')](_0x7212('0x1a')),_0x7c4ab0);_0x51a141['when'](_0x7c4ab0);})[_0x7212('0x14')](function(_0x37669b){console[_0x7212('0x1b')](_0x37669b);logger[_0x7212('0x8')]('[%s][INTERVAL]\x20%s\x20%s',_0x412302,_0x20c887['join'](_0x7212('0x1a')),_0x37669b['stack']);_0x51a141[_0x7212('0xd')]();});};};
\ No newline at end of file
+var _0x94cb=['lodash','../../../config/logger','routing','client','request','then','error','message','result','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','indexOf','true','catch','all','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','log','join','stack','bluebird','jayson/promise'];(function(_0x34c939,_0x54199a){var _0x40d143=function(_0x11d5bf){while(--_0x11d5bf){_0x34c939['push'](_0x34c939['shift']());}};_0x40d143(++_0x54199a);}(_0x94cb,0xd6));var _0xb94c=function(_0x1b9025,_0x57ca6c){_0x1b9025=_0x1b9025-0x0;var _0x125c02=_0x94cb[_0x1b9025];return _0x125c02;};'use strict';var util=require('util');var BPromise=require(_0xb94c('0x0'));var jayson=require(_0xb94c('0x1'));var _=require(_0xb94c('0x2'));var logger=require(_0xb94c('0x3'))(_0xb94c('0x4'));var client=jayson[_0xb94c('0x5')]['http']({'port':0x232a});function request(_0x49338f,_0x3db709){return new BPromise(function(_0x5ba9fb,_0x1c62e2){return client[_0xb94c('0x6')](_0x49338f,_0x3db709)[_0xb94c('0x7')](function(_0x39787b){if(_0x39787b[_0xb94c('0x8')]){return _0x1c62e2(_0x39787b['error'][_0xb94c('0x9')]);}else{return _0x5ba9fb(_0x39787b[_0xb94c('0xa')]);}})['catch'](function(_0x472dfd){return _0x1c62e2(_0x472dfd);});});}exports['condition']=function(_0x586437,_0x4f3eee,_0x4c2f66){return function(_0x53791c){if(_0x4c2f66['rules']&&!_0x4c2f66[_0xb94c('0xb')][_0x586437]){logger[_0xb94c('0xc')](_0xb94c('0xd'),_0x586437);return _0x53791c[_0xb94c('0xe')]();}var _0x39c607=[];for(var _0x510fcf=0x0;_0x510fcf<_0x4f3eee['length'];_0x510fcf+=0x1){_0x39c607[_0xb94c('0xf')](request(_0xb94c('0x10'),{'command':util[_0xb94c('0x11')]('iftime\x20%s',_0x4f3eee[_0x510fcf])})[_0xb94c('0x7')](function(_0x218bea){return _0x218bea&&_0x218bea[_0xb94c('0x9')]&&_0x218bea[_0xb94c('0x9')][_0xb94c('0x12')](_0xb94c('0x13'))>=0x0?!![]:![];})[_0xb94c('0x14')](function(_0x1cd0b7){logger['error']('[%s][INTERVAL]\x20%s',_0x586437,_0x4f3eee[_0x510fcf]);}));}BPromise[_0xb94c('0x15')](_0x39c607)['then'](function(_0x5c0dcc){var _0x381906=_['some'](_0x5c0dcc);logger['info'](_0xb94c('0x16'),_0x586437,_0x4f3eee['join'](_0xb94c('0x17')),_0x381906);_0x53791c['when'](_0x381906);})[_0xb94c('0x14')](function(_0x22e1b5){console[_0xb94c('0x18')](_0x22e1b5);logger['error'](_0xb94c('0x16'),_0x586437,_0x4f3eee[_0xb94c('0x19')]('\x20|\x20'),_0x22e1b5[_0xb94c('0x1a')]);_0x53791c[_0xb94c('0xe')]();});};};
\ No newline at end of file
index f035f9c..c03bf79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7072=['acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','format','[%s][agents][agentcalled]','now','connectedlinename','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','holdtime','ringtime','talktime','push','error','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','reason','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','[%s][agents][agentcomplete]','transfereruniqueid','[%s][agents][blindtransfer]','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','agentcalledAt','secondtransfererlinkedid','transfer','ATTENDED','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','complete','util','./utils','info','uniqueid','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x7072,0x138));var _0x2707=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x7072[_0x2fc012];return _0x2891f9;};'use strict';var _=require('lodash');var util=require(_0x2707('0x0'));var utils=require(_0x2707('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x127e9c,_0x1bbc92){utils[_0x2707('0x2')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x127e9c[_0x2707('0x3')],_0x127e9c['channel'],_0x127e9c[_0x2707('0x4')],_0x127e9c[_0x2707('0x5')],_0x127e9c[_0x2707('0x6')],_0x127e9c[_0x2707('0x7')],_0x127e9c[_0x2707('0x8')],_0x127e9c[_0x2707('0x9')]));if(_0x127e9c[_0x2707('0x4')]){utils[_0x2707('0xa')](_0x127e9c[_0x2707('0x4')])[_0x2707('0xb')](function(_0x51ffc4){if(_0x51ffc4){_0x127e9c['type']=_0x51ffc4[_0x2707('0xc')];_0x127e9c[_0x2707('0xd')]=_0x127e9c[_0x2707('0xe')]?_0x51ffc4[_0x2707('0xf')]:![];_0x127e9c[_0x2707('0x10')]=_0x127e9c[_0x2707('0xd')]?_0x51ffc4[_0x2707('0x11')]:0x0;}utils[_0x2707('0x12')](_0x2707('0x13'),_0x127e9c);});}else{utils[_0x2707('0x12')](_0x2707('0x13'),_0x127e9c);}if(_0x1bbc92){delete transfers[_0x127e9c[_0x2707('0x3')]];}else{delete agents[_0x127e9c[_0x2707('0x14')]];}}exports['agentcalled']=function(_0x44c1d7){try{utils['debug'](util[_0x2707('0x15')](_0x2707('0x16'),_0x44c1d7[_0x2707('0x3')]),_0x44c1d7);agents[_0x44c1d7[_0x2707('0x14')]]=_0x44c1d7;agents[_0x44c1d7[_0x2707('0x14')]]['agentcalledAt']=utils[_0x2707('0x17')]();agents[_0x44c1d7[_0x2707('0x14')]][_0x2707('0x9')]='called';agents[_0x44c1d7[_0x2707('0x14')]][_0x2707('0x8')]=null;agents[_0x44c1d7[_0x2707('0x14')]][_0x2707('0x18')]=null;utils[_0x2707('0x2')](util[_0x2707('0x15')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x44c1d7[_0x2707('0x3')],agents[_0x44c1d7[_0x2707('0x14')]][_0x2707('0x5')],_0x44c1d7['destuniqueid']));}catch(_0x529936){utils['error'](util[_0x2707('0x15')](_0x2707('0x16'),_0x44c1d7[_0x2707('0x3')]),_0x529936);}};exports[_0x2707('0x19')]=function(_0x1a0e1a){try{if(!_[_0x2707('0x1a')](agents[_0x1a0e1a[_0x2707('0x14')]])){utils[_0x2707('0x1b')](util[_0x2707('0x15')](_0x2707('0x1c'),_0x1a0e1a[_0x2707('0x3')]),_0x1a0e1a);utils[_0x2707('0x2')](util[_0x2707('0x15')](_0x2707('0x1d'),_0x1a0e1a['uniqueid'],agents[_0x1a0e1a[_0x2707('0x14')]][_0x2707('0x5')],_0x1a0e1a[_0x2707('0x14')]));agents[_0x1a0e1a[_0x2707('0x14')]][_0x2707('0x19')]=!![];agents[_0x1a0e1a[_0x2707('0x14')]]['agentringnoanswerAt']=utils[_0x2707('0x17')]();agents[_0x1a0e1a[_0x2707('0x14')]][_0x2707('0x9')]=_0x2707('0x1e');agents[_0x1a0e1a[_0x2707('0x14')]]['reason']=_0x2707('0x1e');agents[_0x1a0e1a['destuniqueid']][_0x2707('0x1f')]=_0x1a0e1a[_0x2707('0x20')]?parseInt(_0x1a0e1a[_0x2707('0x20')])/0x3e8:0x0;agents[_0x1a0e1a['destuniqueid']][_0x2707('0x21')]=0x0;unanswered[_0x2707('0x22')](_0x1a0e1a[_0x2707('0x14')]);}}catch(_0x529be8){utils[_0x2707('0x23')](util[_0x2707('0x15')]('[%s][agents][agentringnoanswer]',_0x1a0e1a[_0x2707('0x3')]),_0x529be8);}};exports['queuecallerabandon']=function(_0x5aaffb){try{_[_0x2707('0x24')](agents,function(_0x4e0c93,_0x2a0d24){if(_0x4e0c93[_0x2707('0x3')]==_0x5aaffb[_0x2707('0x3')]&&!_[_0x2707('0x25')](unanswered,_0x4e0c93['destuniqueid'])){utils[_0x2707('0x1b')](util[_0x2707('0x15')](_0x2707('0x26'),_0x5aaffb[_0x2707('0x3')]),_0x5aaffb);utils[_0x2707('0x2')](util[_0x2707('0x15')](_0x2707('0x27'),_0x5aaffb[_0x2707('0x3')],_0x4e0c93[_0x2707('0x5')],_0x4e0c93['destuniqueid']));_0x4e0c93[_0x2707('0x19')]=!![];_0x4e0c93[_0x2707('0x28')]=utils['now']();_0x4e0c93['lastevent']='abandoned';_0x4e0c93['reason']='abandoned';_0x4e0c93[_0x2707('0x1f')]=_0x5aaffb['holdtime'];_0x4e0c93['talktime']=0x0;writeDB(_0x4e0c93);}});}catch(_0x4558bb){utils[_0x2707('0x23')](util['format'](_0x2707('0x26'),_0x5aaffb[_0x2707('0x3')]),_0x4558bb);}};exports['agentconnect']=function(_0x5e6b51){try{if(agents[_0x5e6b51[_0x2707('0x14')]]){utils[_0x2707('0x1b')](util['format']('[%s][agents][agentconnect]',_0x5e6b51[_0x2707('0x3')]),_0x5e6b51);utils[_0x2707('0x2')](util['format'](_0x2707('0x29'),_0x5e6b51[_0x2707('0x3')],agents[_0x5e6b51[_0x2707('0x14')]][_0x2707('0x5')],_0x5e6b51[_0x2707('0x14')]));agents[_0x5e6b51[_0x2707('0x14')]]['agentconnectAt']=utils[_0x2707('0x17')]();agents[_0x5e6b51[_0x2707('0x14')]][_0x2707('0x8')]=_0x5e6b51[_0x2707('0x8')];agents[_0x5e6b51[_0x2707('0x14')]][_0x2707('0x18')]=_0x5e6b51[_0x2707('0x18')];agents[_0x5e6b51['destuniqueid']][_0x2707('0x1f')]=_0x5e6b51[_0x2707('0x20')];agents[_0x5e6b51[_0x2707('0x14')]][_0x2707('0x9')]=_0x2707('0x2a');_[_0x2707('0x24')](agents,function(_0x3ed513,_0x39d9f6){if(_0x3ed513[_0x2707('0x14')]!=_0x5e6b51[_0x2707('0x14')]&&_0x3ed513[_0x2707('0x3')]==_0x5e6b51[_0x2707('0x3')]){_0x3ed513[_0x2707('0x21')]=0x0;_0x3ed513[_0x2707('0x1f')]=_0x5e6b51[_0x2707('0x20')];_0x3ed513[_0x2707('0x19')]=!![];_0x3ed513['agentringnoanswerAt']=utils[_0x2707('0x17')]();_0x3ed513[_0x2707('0x9')]='answered_elsewhere';_0x3ed513[_0x2707('0x2b')]='answered_elsewhere';_0x3ed513[_0x2707('0x2c')]=_0x5e6b51[_0x2707('0x14')];_0x3ed513[_0x2707('0x2d')]=_0x5e6b51[_0x2707('0x5')];writeDB(_0x3ed513);}});}}catch(_0x13e1c0){utils[_0x2707('0x23')](util[_0x2707('0x15')]('[%s][agents][agentconnect]',_0x5e6b51[_0x2707('0x3')]),_0x13e1c0);}};exports[_0x2707('0xe')]=function(_0x4c8dbf){try{if(!_[_0x2707('0x1a')](agents[_0x4c8dbf[_0x2707('0x14')]])){utils[_0x2707('0x1b')](util['format']('[%s][agents][agentcomplete]',_0x4c8dbf[_0x2707('0x3')]),_0x4c8dbf);utils[_0x2707('0x2')](util['format'](_0x2707('0x2e'),_0x4c8dbf['uniqueid'],agents[_0x4c8dbf[_0x2707('0x14')]][_0x2707('0x5')],_0x4c8dbf[_0x2707('0x14')]));agents[_0x4c8dbf[_0x2707('0x14')]]['agentcomplete']=!![];agents[_0x4c8dbf[_0x2707('0x14')]][_0x2707('0x2f')]=utils[_0x2707('0x17')]();agents[_0x4c8dbf[_0x2707('0x14')]][_0x2707('0x21')]=utils[_0x2707('0x30')](agents[_0x4c8dbf[_0x2707('0x14')]]['agentcompleteAt'],agents[_0x4c8dbf[_0x2707('0x14')]][_0x2707('0x31')]);agents[_0x4c8dbf[_0x2707('0x14')]][_0x2707('0x2b')]=_0x4c8dbf[_0x2707('0x2b')];agents[_0x4c8dbf['destuniqueid']][_0x2707('0x9')]='complete';writeDB(agents[_0x4c8dbf[_0x2707('0x14')]]);}}catch(_0x6ada76){utils['error'](util[_0x2707('0x15')](_0x2707('0x32'),_0x4c8dbf[_0x2707('0x3')]),_0x6ada76);}};exports['blindtransfer']=function(_0x1a8034){try{if(!_['isNil'](agents[_0x1a8034[_0x2707('0x33')]])){utils[_0x2707('0x1b')](util['format'](_0x2707('0x34'),_0x1a8034[_0x2707('0x3')]),_0x1a8034);utils[_0x2707('0x2')](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x1a8034[_0x2707('0x3')],agents[_0x1a8034[_0x2707('0x33')]][_0x2707('0x5')],agents[_0x1a8034[_0x2707('0x33')]][_0x2707('0x3')]));agents[_0x1a8034['transfereruniqueid']]['transfer']=!![];agents[_0x1a8034['transfereruniqueid']][_0x2707('0x35')]=_0x2707('0x36');agents[_0x1a8034[_0x2707('0x33')]][_0x2707('0x37')]=_0x1a8034[_0x2707('0x38')];agents[_0x1a8034['transfereruniqueid']][_0x2707('0x39')]=agents[_0x1a8034[_0x2707('0x33')]]['uniqueid'];}}catch(_0x482ed1){utils[_0x2707('0x23')](util[_0x2707('0x15')](_0x2707('0x34'),_0x1a8034['uniqueid']),_0x482ed1);}};exports[_0x2707('0x3a')]=function(_0x40a1a8){try{utils[_0x2707('0x1b')](util[_0x2707('0x15')]('[%s][agents][attendedtransfer]',_0x40a1a8[_0x2707('0x3b')]),_0x40a1a8);if(_0x40a1a8[_0x2707('0x3b')]==_0x40a1a8[_0x2707('0x3c')]){if(!_[_0x2707('0x1a')](agents[_0x40a1a8[_0x2707('0x3d')]])){utils[_0x2707('0x2')](util[_0x2707('0x15')](_0x2707('0x3e'),_0x40a1a8[_0x2707('0x3b')],agents[_0x40a1a8[_0x2707('0x3d')]]['membername']));agents[_0x40a1a8[_0x2707('0x3d')]]['transfer']=!![];agents[_0x40a1a8['secondtransfereruniqueid']][_0x2707('0x35')]='ATTENDED';agents[_0x40a1a8['secondtransfereruniqueid']][_0x2707('0x37')]=_0x40a1a8[_0x2707('0x3f')];agents[_0x40a1a8[_0x2707('0x3d')]][_0x2707('0x39')]=_0x40a1a8[_0x2707('0x3b')];}if(_0x40a1a8[_0x2707('0x40')]&&agents[_0x40a1a8[_0x2707('0x40')]]){agents[_0x40a1a8[_0x2707('0x40')]][_0x2707('0x41')]=0x1;transfers[_0x40a1a8[_0x2707('0x40')]]=_[_0x2707('0x42')](agents[_0x40a1a8['transfereeuniqueid']]);transfers[_0x40a1a8['transfereeuniqueid']]['calleridnum']=agents[_0x40a1a8[_0x2707('0x3d')]][_0x2707('0x7')];transfers[_0x40a1a8[_0x2707('0x40')]]['calleridname']=agents[_0x40a1a8['secondtransfereruniqueid']][_0x2707('0x43')];transfers[_0x40a1a8[_0x2707('0x40')]][_0x2707('0x44')]=utils[_0x2707('0x17')]();transfers[_0x40a1a8[_0x2707('0x40')]]['agentconnectAt']=utils['now']();transfers[_0x40a1a8[_0x2707('0x40')]][_0x2707('0x1f')]=0x0;transfers[_0x40a1a8[_0x2707('0x40')]][_0x2707('0x41')]=0x2;}}else if(_0x40a1a8[_0x2707('0x3d')]==_0x40a1a8[_0x2707('0x45')]){if(!_[_0x2707('0x1a')](agents[_0x40a1a8[_0x2707('0x3b')]])){utils[_0x2707('0x2')](util['format'](_0x2707('0x3e'),_0x40a1a8[_0x2707('0x3b')],agents[_0x40a1a8[_0x2707('0x3b')]][_0x2707('0x5')]));agents[_0x40a1a8[_0x2707('0x3b')]][_0x2707('0x46')]=!![];agents[_0x40a1a8['origtransfereruniqueid']]['transfertype']=_0x2707('0x47');agents[_0x40a1a8[_0x2707('0x3b')]]['transferexten']=_0x40a1a8['secondtransfererexten'];agents[_0x40a1a8['origtransfereruniqueid']]['transferuniqueid']=_0x40a1a8[_0x2707('0x3d')];}if(_0x40a1a8[_0x2707('0x48')]&&agents[_0x40a1a8['transfertargetuniqueid']]){agents[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x41')]=0x1;transfers[_0x40a1a8[_0x2707('0x48')]]=_['clone'](agents[_0x40a1a8['transfertargetuniqueid']]);transfers[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x7')]=agents[_0x40a1a8[_0x2707('0x3b')]][_0x2707('0x7')];transfers[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x43')]=agents[_0x40a1a8[_0x2707('0x3b')]]['calleridname'];transfers[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x44')]=utils[_0x2707('0x17')]();transfers[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x31')]=utils[_0x2707('0x17')]();transfers[_0x40a1a8['transfertargetuniqueid']][_0x2707('0x1f')]=0x0;transfers[_0x40a1a8[_0x2707('0x48')]][_0x2707('0x41')]=0x2;}}}catch(_0x142606){utils[_0x2707('0x23')](util[_0x2707('0x15')]('[%s][agents][attendedtransfer]',_0x40a1a8['origtransfereruniqueid']),_0x142606);}};exports[_0x2707('0x49')]=function(_0x2b0df0){try{utils[_0x2707('0x1b')](util[_0x2707('0x15')](_0x2707('0x4a'),_0x2b0df0[_0x2707('0x3')]),_0x2b0df0);if(agents[_0x2b0df0['uniqueid']]&&agents[_0x2b0df0['uniqueid']][_0x2707('0x2b')]==='timeout'){if(_0x2b0df0[_0x2707('0x4b')]==='21'){agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2b')]=_0x2707('0x4c');agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x9')]='rejected';}utils[_0x2707('0x2')](util['format'](_0x2707('0x4d'),_0x2b0df0[_0x2707('0x3')],agents[_0x2b0df0['uniqueid']][_0x2707('0x5')],agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2b')],agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x9')]));writeDB(agents[_0x2b0df0['uniqueid']]);var _0x3bfec3=unanswered[_0x2707('0x4e')](_0x2b0df0[_0x2707('0x3')]);if(_0x3bfec3>-0x1){unanswered[_0x2707('0x4f')](_0x3bfec3,0x1);}}if(transfers[_0x2b0df0[_0x2707('0x3')]]){transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0xe')]=!![];transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2f')]=utils[_0x2707('0x17')]();transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x21')]=utils[_0x2707('0x30')](transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2f')],transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x31')]);transfers[_0x2b0df0[_0x2707('0x3')]]['reason']=_0x2707('0x50');transfers[_0x2b0df0['uniqueid']]['lastevent']=_0x2707('0x51');utils[_0x2707('0x2')](util[_0x2707('0x15')](_0x2707('0x4d'),_0x2b0df0[_0x2707('0x3')],transfers[_0x2b0df0[_0x2707('0x3')]]['membername'],transfers[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2b')],transfers[_0x2b0df0[_0x2707('0x3')]]['lastevent']));writeDB(transfers[_0x2b0df0[_0x2707('0x3')]],!![]);}if(agents[_0x2b0df0[_0x2707('0x3')]]&&agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x31')]){agents[_0x2b0df0['uniqueid']][_0x2707('0xe')]=!![];agents[_0x2b0df0['uniqueid']][_0x2707('0x2f')]=utils[_0x2707('0x17')]();agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x21')]=utils[_0x2707('0x30')](agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2f')],agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x31')]);agents[_0x2b0df0['uniqueid']][_0x2707('0x2b')]=agents[_0x2b0df0['uniqueid']][_0x2707('0x46')]?_0x2707('0x46'):_0x2707('0x50');agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x9')]=_0x2707('0x51');utils['info'](util['format'](_0x2707('0x4d'),_0x2b0df0['uniqueid'],agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x5')],agents[_0x2b0df0[_0x2707('0x3')]][_0x2707('0x2b')],agents[_0x2b0df0['uniqueid']][_0x2707('0x9')]));writeDB(agents[_0x2b0df0[_0x2707('0x3')]]);}}catch(_0x17b7b7){utils['error'](util[_0x2707('0x15')](_0x2707('0x4a'),_0x2b0df0[_0x2707('0x3')]),_0x17b7b7);}};
\ No newline at end of file
+var _0x4fc2=['lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','calleridnum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','connectedlinenum','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','talktime','push','queuecallerabandon','includes','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','reason','abandoned','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','agentconnectAt','complete','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfertype','blind','transferexten','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agentcompleteAt','agent','diffTime','transfer'];(function(_0xad63a4,_0x1d06ee){var _0x427575=function(_0x358190){while(--_0x358190){_0xad63a4['push'](_0xad63a4['shift']());}};_0x427575(++_0x1d06ee);}(_0x4fc2,0x111));var _0x24fc=function(_0x404a11,_0x268dc0){_0x404a11=_0x404a11-0x0;var _0x435823=_0x4fc2[_0x404a11];return _0x435823;};'use strict';var _=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var utils=require(_0x24fc('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x4390a0,_0x5aaa74){utils[_0x24fc('0x3')](util[_0x24fc('0x4')](_0x24fc('0x5'),_0x4390a0['uniqueid'],_0x4390a0[_0x24fc('0x6')],_0x4390a0[_0x24fc('0x7')],_0x4390a0['membername'],_0x4390a0[_0x24fc('0x8')],_0x4390a0[_0x24fc('0x9')],_0x4390a0['connectedlinenum'],_0x4390a0[_0x24fc('0xa')]));if(_0x4390a0[_0x24fc('0x7')]){utils[_0x24fc('0xb')](_0x4390a0[_0x24fc('0x7')])[_0x24fc('0xc')](function(_0x47349b){if(_0x47349b){_0x4390a0['type']=_0x47349b[_0x24fc('0xd')];_0x4390a0[_0x24fc('0xe')]=_0x4390a0[_0x24fc('0xf')]?_0x47349b[_0x24fc('0x10')]:![];_0x4390a0[_0x24fc('0x11')]=_0x4390a0[_0x24fc('0xe')]?_0x47349b[_0x24fc('0x12')]:0x0;}utils[_0x24fc('0x13')]('CreateVoiceAgentReport',_0x4390a0);});}else{utils[_0x24fc('0x13')](_0x24fc('0x14'),_0x4390a0);}if(_0x5aaa74){delete transfers[_0x4390a0['uniqueid']];}else{delete agents[_0x4390a0[_0x24fc('0x15')]];}}exports[_0x24fc('0x16')]=function(_0x3f6d8b){try{utils[_0x24fc('0x17')](util[_0x24fc('0x4')](_0x24fc('0x18'),_0x3f6d8b['uniqueid']),_0x3f6d8b);agents[_0x3f6d8b[_0x24fc('0x15')]]=_0x3f6d8b;agents[_0x3f6d8b[_0x24fc('0x15')]][_0x24fc('0x19')]=utils[_0x24fc('0x1a')]();agents[_0x3f6d8b['destuniqueid']][_0x24fc('0xa')]='called';agents[_0x3f6d8b[_0x24fc('0x15')]][_0x24fc('0x1b')]=null;agents[_0x3f6d8b[_0x24fc('0x15')]][_0x24fc('0x1c')]=null;utils[_0x24fc('0x3')](util['format'](_0x24fc('0x1d'),_0x3f6d8b[_0x24fc('0x1e')],agents[_0x3f6d8b[_0x24fc('0x15')]][_0x24fc('0x1f')],_0x3f6d8b['destuniqueid']));}catch(_0x5eabee){utils[_0x24fc('0x20')](util[_0x24fc('0x4')]('[%s][agents][agentcalled]',_0x3f6d8b[_0x24fc('0x1e')]),_0x5eabee);}};exports[_0x24fc('0x21')]=function(_0xbf1d6b){try{if(!_[_0x24fc('0x22')](agents[_0xbf1d6b['destuniqueid']])){utils[_0x24fc('0x17')](util['format'](_0x24fc('0x23'),_0xbf1d6b['uniqueid']),_0xbf1d6b);utils[_0x24fc('0x3')](util[_0x24fc('0x4')](_0x24fc('0x24'),_0xbf1d6b['uniqueid'],agents[_0xbf1d6b[_0x24fc('0x15')]]['membername'],_0xbf1d6b[_0x24fc('0x15')]));agents[_0xbf1d6b[_0x24fc('0x15')]][_0x24fc('0x21')]=!![];agents[_0xbf1d6b[_0x24fc('0x15')]][_0x24fc('0x25')]=utils[_0x24fc('0x1a')]();agents[_0xbf1d6b[_0x24fc('0x15')]][_0x24fc('0xa')]=_0x24fc('0x26');agents[_0xbf1d6b[_0x24fc('0x15')]]['reason']=_0x24fc('0x26');agents[_0xbf1d6b[_0x24fc('0x15')]][_0x24fc('0x27')]=_0xbf1d6b['ringtime']?parseInt(_0xbf1d6b[_0x24fc('0x28')])/0x3e8:0x0;agents[_0xbf1d6b[_0x24fc('0x15')]][_0x24fc('0x29')]=0x0;unanswered[_0x24fc('0x2a')](_0xbf1d6b[_0x24fc('0x15')]);}}catch(_0x443796){utils['error'](util[_0x24fc('0x4')](_0x24fc('0x23'),_0xbf1d6b[_0x24fc('0x1e')]),_0x443796);}};exports[_0x24fc('0x2b')]=function(_0x9f7bbc){try{_['forIn'](agents,function(_0x55c27f,_0x4e6f73){if(_0x55c27f[_0x24fc('0x1e')]==_0x9f7bbc['uniqueid']&&!_[_0x24fc('0x2c')](unanswered,_0x55c27f[_0x24fc('0x15')])){utils[_0x24fc('0x17')](util[_0x24fc('0x4')]('[%s][agents][queuecallerabandon]',_0x9f7bbc[_0x24fc('0x1e')]),_0x9f7bbc);utils[_0x24fc('0x3')](util['format'](_0x24fc('0x2d'),_0x9f7bbc[_0x24fc('0x1e')],_0x55c27f['membername'],_0x55c27f['destuniqueid']));_0x55c27f[_0x24fc('0x21')]=!![];_0x55c27f['agentringnoanswerAt']=utils[_0x24fc('0x1a')]();_0x55c27f[_0x24fc('0xa')]='abandoned';_0x55c27f[_0x24fc('0x2e')]=_0x24fc('0x2f');_0x55c27f[_0x24fc('0x27')]=_0x9f7bbc[_0x24fc('0x27')];_0x55c27f[_0x24fc('0x29')]=0x0;writeDB(_0x55c27f);}});}catch(_0x1e205d){utils[_0x24fc('0x20')](util[_0x24fc('0x4')](_0x24fc('0x30'),_0x9f7bbc['uniqueid']),_0x1e205d);}};exports[_0x24fc('0x31')]=function(_0x4224f4){try{if(agents[_0x4224f4[_0x24fc('0x15')]]){utils[_0x24fc('0x17')](util[_0x24fc('0x4')]('[%s][agents][agentconnect]',_0x4224f4['uniqueid']),_0x4224f4);utils[_0x24fc('0x3')](util['format'](_0x24fc('0x32'),_0x4224f4[_0x24fc('0x1e')],agents[_0x4224f4[_0x24fc('0x15')]][_0x24fc('0x1f')],_0x4224f4['destuniqueid']));agents[_0x4224f4[_0x24fc('0x15')]]['agentconnectAt']=utils[_0x24fc('0x1a')]();agents[_0x4224f4[_0x24fc('0x15')]][_0x24fc('0x1b')]=_0x4224f4[_0x24fc('0x1b')];agents[_0x4224f4[_0x24fc('0x15')]]['connectedlinename']=_0x4224f4[_0x24fc('0x1c')];agents[_0x4224f4[_0x24fc('0x15')]][_0x24fc('0x27')]=_0x4224f4[_0x24fc('0x28')];agents[_0x4224f4['destuniqueid']][_0x24fc('0xa')]=_0x24fc('0x33');_['forIn'](agents,function(_0xf40435,_0x52df2e){if(_0xf40435[_0x24fc('0x15')]!=_0x4224f4[_0x24fc('0x15')]&&_0xf40435[_0x24fc('0x1e')]==_0x4224f4[_0x24fc('0x1e')]){_0xf40435[_0x24fc('0x29')]=0x0;_0xf40435[_0x24fc('0x27')]=_0x4224f4[_0x24fc('0x28')];_0xf40435[_0x24fc('0x21')]=!![];_0xf40435['agentringnoanswerAt']=utils[_0x24fc('0x1a')]();_0xf40435[_0x24fc('0xa')]=_0x24fc('0x34');_0xf40435['reason']=_0x24fc('0x34');_0xf40435[_0x24fc('0x35')]=_0x4224f4['destuniqueid'];_0xf40435[_0x24fc('0x36')]=_0x4224f4[_0x24fc('0x1f')];writeDB(_0xf40435);}});}}catch(_0x2c598c){utils['error'](util[_0x24fc('0x4')](_0x24fc('0x37'),_0x4224f4['uniqueid']),_0x2c598c);}};exports[_0x24fc('0xf')]=function(_0x169982){try{if(!_[_0x24fc('0x22')](agents[_0x169982[_0x24fc('0x15')]])){utils['debug'](util[_0x24fc('0x4')](_0x24fc('0x38'),_0x169982[_0x24fc('0x1e')]),_0x169982);utils[_0x24fc('0x3')](util[_0x24fc('0x4')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x169982[_0x24fc('0x1e')],agents[_0x169982[_0x24fc('0x15')]][_0x24fc('0x1f')],_0x169982[_0x24fc('0x15')]));agents[_0x169982['destuniqueid']][_0x24fc('0xf')]=!![];agents[_0x169982[_0x24fc('0x15')]]['agentcompleteAt']=utils['now']();agents[_0x169982[_0x24fc('0x15')]]['talktime']=utils['diffTime'](agents[_0x169982[_0x24fc('0x15')]]['agentcompleteAt'],agents[_0x169982[_0x24fc('0x15')]][_0x24fc('0x39')]);agents[_0x169982[_0x24fc('0x15')]]['reason']=_0x169982[_0x24fc('0x2e')];agents[_0x169982[_0x24fc('0x15')]][_0x24fc('0xa')]=_0x24fc('0x3a');writeDB(agents[_0x169982[_0x24fc('0x15')]]);}}catch(_0x6c6754){utils[_0x24fc('0x20')](util[_0x24fc('0x4')]('[%s][agents][agentcomplete]',_0x169982['uniqueid']),_0x6c6754);}};exports[_0x24fc('0x3b')]=function(_0x2f1a99){try{if(!_[_0x24fc('0x22')](agents[_0x2f1a99['transfereruniqueid']])){utils['debug'](util[_0x24fc('0x4')](_0x24fc('0x3c'),_0x2f1a99[_0x24fc('0x1e')]),_0x2f1a99);utils[_0x24fc('0x3')](util[_0x24fc('0x4')](_0x24fc('0x3d'),_0x2f1a99[_0x24fc('0x1e')],agents[_0x2f1a99[_0x24fc('0x3e')]][_0x24fc('0x1f')],agents[_0x2f1a99[_0x24fc('0x3e')]][_0x24fc('0x1e')]));agents[_0x2f1a99[_0x24fc('0x3e')]]['transfer']=!![];agents[_0x2f1a99[_0x24fc('0x3e')]][_0x24fc('0x3f')]=_0x24fc('0x40');agents[_0x2f1a99[_0x24fc('0x3e')]][_0x24fc('0x41')]=_0x2f1a99['extension'];agents[_0x2f1a99[_0x24fc('0x3e')]]['transferuniqueid']=agents[_0x2f1a99[_0x24fc('0x3e')]][_0x24fc('0x1e')];}}catch(_0x446c14){utils[_0x24fc('0x20')](util[_0x24fc('0x4')](_0x24fc('0x3c'),_0x2f1a99['uniqueid']),_0x446c14);}};exports[_0x24fc('0x42')]=function(_0xc2ba88){try{utils[_0x24fc('0x17')](util[_0x24fc('0x4')](_0x24fc('0x43'),_0xc2ba88[_0x24fc('0x44')]),_0xc2ba88);if(_0xc2ba88['origtransfereruniqueid']==_0xc2ba88[_0x24fc('0x45')]){if(!_[_0x24fc('0x22')](agents[_0xc2ba88[_0x24fc('0x46')]])){utils[_0x24fc('0x3')](util[_0x24fc('0x4')](_0x24fc('0x47'),_0xc2ba88[_0x24fc('0x44')],agents[_0xc2ba88['secondtransfereruniqueid']][_0x24fc('0x1f')]));agents[_0xc2ba88[_0x24fc('0x46')]]['transfer']=!![];agents[_0xc2ba88[_0x24fc('0x46')]][_0x24fc('0x3f')]=_0x24fc('0x48');agents[_0xc2ba88[_0x24fc('0x46')]][_0x24fc('0x41')]=_0xc2ba88[_0x24fc('0x49')];agents[_0xc2ba88['secondtransfereruniqueid']][_0x24fc('0x4a')]=_0xc2ba88['origtransfereruniqueid'];}if(_0xc2ba88[_0x24fc('0x4b')]&&agents[_0xc2ba88[_0x24fc('0x4b')]]){agents[_0xc2ba88['transfereeuniqueid']][_0x24fc('0x4c')]=0x1;transfers[_0xc2ba88['transfereeuniqueid']]=_[_0x24fc('0x4d')](agents[_0xc2ba88['transfereeuniqueid']]);transfers[_0xc2ba88[_0x24fc('0x4b')]][_0x24fc('0x9')]=agents[_0xc2ba88['secondtransfereruniqueid']][_0x24fc('0x9')];transfers[_0xc2ba88['transfereeuniqueid']][_0x24fc('0x4e')]=agents[_0xc2ba88[_0x24fc('0x46')]]['calleridname'];transfers[_0xc2ba88[_0x24fc('0x4b')]][_0x24fc('0x19')]=utils[_0x24fc('0x1a')]();transfers[_0xc2ba88[_0x24fc('0x4b')]][_0x24fc('0x39')]=utils['now']();transfers[_0xc2ba88[_0x24fc('0x4b')]][_0x24fc('0x27')]=0x0;transfers[_0xc2ba88[_0x24fc('0x4b')]][_0x24fc('0x4c')]=0x2;}}else if(_0xc2ba88[_0x24fc('0x46')]==_0xc2ba88['secondtransfererlinkedid']){if(!_['isNil'](agents[_0xc2ba88[_0x24fc('0x44')]])){utils[_0x24fc('0x3')](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0xc2ba88[_0x24fc('0x44')],agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x1f')]));agents[_0xc2ba88[_0x24fc('0x44')]]['transfer']=!![];agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x3f')]=_0x24fc('0x48');agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x41')]=_0xc2ba88[_0x24fc('0x4f')];agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x4a')]=_0xc2ba88[_0x24fc('0x46')];}if(_0xc2ba88[_0x24fc('0x50')]&&agents[_0xc2ba88[_0x24fc('0x50')]]){agents[_0xc2ba88[_0x24fc('0x50')]][_0x24fc('0x4c')]=0x1;transfers[_0xc2ba88[_0x24fc('0x50')]]=_[_0x24fc('0x4d')](agents[_0xc2ba88['transfertargetuniqueid']]);transfers[_0xc2ba88[_0x24fc('0x50')]][_0x24fc('0x9')]=agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x9')];transfers[_0xc2ba88[_0x24fc('0x50')]][_0x24fc('0x4e')]=agents[_0xc2ba88[_0x24fc('0x44')]][_0x24fc('0x4e')];transfers[_0xc2ba88['transfertargetuniqueid']][_0x24fc('0x19')]=utils[_0x24fc('0x1a')]();transfers[_0xc2ba88[_0x24fc('0x50')]][_0x24fc('0x39')]=utils['now']();transfers[_0xc2ba88[_0x24fc('0x50')]][_0x24fc('0x27')]=0x0;transfers[_0xc2ba88['transfertargetuniqueid']]['agententerreason']=0x2;}}}catch(_0x4f97b7){utils[_0x24fc('0x20')](util[_0x24fc('0x4')](_0x24fc('0x43'),_0xc2ba88[_0x24fc('0x44')]),_0x4f97b7);}};exports[_0x24fc('0x51')]=function(_0x1d0f06){try{utils['debug'](util[_0x24fc('0x4')](_0x24fc('0x52'),_0x1d0f06['uniqueid']),_0x1d0f06);if(agents[_0x1d0f06['uniqueid']]&&agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x2e')]===_0x24fc('0x26')){if(_0x1d0f06['cause']==='21'){agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x2e')]=_0x24fc('0x53');agents[_0x1d0f06['uniqueid']]['lastevent']='rejected';}utils['info'](util['format'](_0x24fc('0x54'),_0x1d0f06[_0x24fc('0x1e')],agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x1f')],agents[_0x1d0f06['uniqueid']][_0x24fc('0x2e')],agents[_0x1d0f06['uniqueid']][_0x24fc('0xa')]));writeDB(agents[_0x1d0f06['uniqueid']]);var _0x368e0a=unanswered[_0x24fc('0x55')](_0x1d0f06[_0x24fc('0x1e')]);if(_0x368e0a>-0x1){unanswered[_0x24fc('0x56')](_0x368e0a,0x1);}}if(transfers[_0x1d0f06[_0x24fc('0x1e')]]){transfers[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0xf')]=!![];transfers[_0x1d0f06['uniqueid']][_0x24fc('0x57')]=utils[_0x24fc('0x1a')]();transfers[_0x1d0f06[_0x24fc('0x1e')]]['talktime']=utils['diffTime'](transfers[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x57')],transfers[_0x1d0f06['uniqueid']][_0x24fc('0x39')]);transfers[_0x1d0f06[_0x24fc('0x1e')]]['reason']=_0x24fc('0x58');transfers[_0x1d0f06[_0x24fc('0x1e')]]['lastevent']=_0x24fc('0x3a');utils[_0x24fc('0x3')](util[_0x24fc('0x4')](_0x24fc('0x54'),_0x1d0f06[_0x24fc('0x1e')],transfers[_0x1d0f06[_0x24fc('0x1e')]]['membername'],transfers[_0x1d0f06['uniqueid']][_0x24fc('0x2e')],transfers[_0x1d0f06['uniqueid']][_0x24fc('0xa')]));writeDB(transfers[_0x1d0f06['uniqueid']],!![]);}if(agents[_0x1d0f06['uniqueid']]&&agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x39')]){agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0xf')]=!![];agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x57')]=utils[_0x24fc('0x1a')]();agents[_0x1d0f06[_0x24fc('0x1e')]]['talktime']=utils[_0x24fc('0x59')](agents[_0x1d0f06[_0x24fc('0x1e')]]['agentcompleteAt'],agents[_0x1d0f06['uniqueid']][_0x24fc('0x39')]);agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x2e')]=agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x5a')]?'transfer':_0x24fc('0x58');agents[_0x1d0f06[_0x24fc('0x1e')]]['lastevent']=_0x24fc('0x3a');utils[_0x24fc('0x3')](util[_0x24fc('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x1d0f06[_0x24fc('0x1e')],agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x1f')],agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0x2e')],agents[_0x1d0f06[_0x24fc('0x1e')]][_0x24fc('0xa')]));writeDB(agents[_0x1d0f06[_0x24fc('0x1e')]]);}}catch(_0x188edb){utils['error'](util[_0x24fc('0x4')](_0x24fc('0x52'),_0x1d0f06[_0x24fc('0x1e')]),_0x188edb);}};
\ No newline at end of file
index bf6ea3c..23d7c46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63d4=['starttime','localtwolinkedid','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','musiconholdstartAt','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','variable','xmd-callerid-preview','xmd-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','hangup','noop','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','then','request','CreateVoiceCallReport','recording','newchannel','debug','format','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','isNil','transfer','destinationchannel','answertime','disposition','toNumber','error','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x63d4,0x117));var _0x463d=function(_0x355bc2,_0x24864f){_0x355bc2=_0x355bc2-0x0;var _0x574d47=_0x63d4[_0x355bc2];return _0x574d47;};'use strict';var _=require(_0x463d('0x0'));var util=require(_0x463d('0x1'));var utils=require(_0x463d('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x463d('0x3'),_0x463d('0x4'),_0x463d('0x4'),_0x463d('0x3'),_0x463d('0x3'),'NO\x20ANSWER',_0x463d('0x5'),_0x463d('0x6'),'FAILED',_0x463d('0x4'),_0x463d('0x4')];var channels={};function writeDB(_0x2635aa){var _0x41dc01;if(transfers[_0x463d('0x7')][_0x2635aa['uniqueid']]){_0x41dc01=_0x2635aa[_0x463d('0x8')];_0x2635aa['uniqueid']=transfers[_0x463d('0x7')][_0x2635aa[_0x463d('0x8')]][_0x463d('0x9')];}utils[_0x463d('0xa')](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2635aa[_0x463d('0x8')],_0x2635aa['channel'],_0x2635aa[_0x463d('0xb')],_0x2635aa[_0x463d('0xc')],_0x2635aa[_0x463d('0xd')],_0x2635aa[_0x463d('0xe')],_0x2635aa[_0x463d('0xf')],_0x2635aa[_0x463d('0x10')]));if(_0x2635aa[_0x463d('0x11')]){utils['getUserByInternal'](_0x2635aa[_0x463d('0x11')])[_0x463d('0x12')](function(_0x436dba){if(_0x436dba){_0x2635aa['UserId']=_0x436dba['id'];}utils[_0x463d('0x13')](_0x463d('0x14'),_0x2635aa);});}else{utils[_0x463d('0x13')](_0x463d('0x14'),_0x2635aa);}if(channels[_0x2635aa[_0x463d('0x8')]]){delete channels[_0x2635aa[_0x463d('0x8')]];}else if(_0x41dc01&&channels[_0x41dc01]){if(!transfers['blinds'][_0x41dc01][_0x463d('0x15')])delete transfers['blinds'][_0x41dc01];delete channels[_0x41dc01];}}exports[_0x463d('0x16')]=function(_0x40cdb5){try{utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x19'),_0x40cdb5[_0x463d('0x8')]),_0x40cdb5);if(_0x40cdb5['uniqueid']==_0x40cdb5[_0x463d('0x1a')]&&_0x40cdb5[_0x463d('0x1b')]!=_0x463d('0x1c')){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x1d'),_0x40cdb5[_0x463d('0x8')],_0x40cdb5[_0x463d('0x1e')],_0x40cdb5[_0x463d('0x1f')]));channels[_0x40cdb5[_0x463d('0x8')]]={'uniqueid':_0x40cdb5[_0x463d('0x8')],'accountcode':_0x40cdb5[_0x463d('0x11')],'source':_0x40cdb5[_0x463d('0xe')],'destination':_0x40cdb5[_0x463d('0x1f')],'destinationcontext':_0x40cdb5[_0x463d('0x1e')],'channel':_0x40cdb5['channel'],'starttime':utils[_0x463d('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x463d('0x21')};}}catch(_0x1a2756){utils['error'](util['format'](_0x463d('0x19'),_0x40cdb5[_0x463d('0x8')]),_0x1a2756);}};exports['newstate']=function(_0x2efdb4){try{utils['debug'](util[_0x463d('0x18')](_0x463d('0x22'),_0x2efdb4[_0x463d('0x8')]),_0x2efdb4);if(!_['isNil'](channels[_0x2efdb4[_0x463d('0x8')]])&&_0x2efdb4[_0x463d('0x23')]==0x6){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x24'),_0x2efdb4[_0x463d('0x8')],_0x2efdb4[_0x463d('0x1e')],_0x2efdb4['channel']));if(_['isNil'](channels[_0x2efdb4[_0x463d('0x8')]]['systemanswertime'])){channels[_0x2efdb4[_0x463d('0x8')]][_0x463d('0x25')]=utils[_0x463d('0x20')]();}}else if(!_[_0x463d('0x26')](channels[_0x2efdb4['linkedid']])&&_0x2efdb4[_0x463d('0x23')]==0x6&&_0x2efdb4[_0x463d('0x1e')]!=_0x463d('0x27')){utils[_0x463d('0xa')](util[_0x463d('0x18')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2efdb4[_0x463d('0x8')],_0x2efdb4[_0x463d('0x1a')],_0x2efdb4['context'],_0x2efdb4[_0x463d('0x1b')]));channels[_0x2efdb4['linkedid']][_0x463d('0x11')]=_0x2efdb4[_0x463d('0x11')];channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x28')]=_0x2efdb4[_0x463d('0x1b')];if(_['isNil'](channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x29')])){channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x29')]=utils[_0x463d('0x20')]();}channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x2a')]=dispositions[_[_0x463d('0x2b')](_0x2efdb4[_0x463d('0x23')])]||_0x463d('0x5');}}catch(_0x118b08){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x22'),_0x2efdb4[_0x463d('0x8')]),_0x118b08);}};exports['hangup']=function(_0x153fab){try{if(!_[_0x463d('0x26')](channels[_0x153fab[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x2d'),_0x153fab[_0x463d('0x8')]),_0x153fab);if(_[_0x463d('0x26')](channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x2e')])){channels[_0x153fab[_0x463d('0x8')]]['callerid']=_0x153fab['calleridname']+'\x20<'+_0x153fab[_0x463d('0xe')]+'>';}utils[_0x463d('0xa')](util['format'](_0x463d('0x2f'),_0x153fab['uniqueid'],channels[_0x153fab['uniqueid']][_0x463d('0x2e')],_0x153fab['cause-txt']));channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x30')]=utils['now']();channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x31')]=utils[_0x463d('0x32')](channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x30')],channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x33')]);channels[_0x153fab['uniqueid']]['billableseconds']=channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x29')]?utils[_0x463d('0x32')](channels[_0x153fab['uniqueid']]['endtime'],channels[_0x153fab[_0x463d('0x8')]]['answertime']):0x0;writeDB(channels[_0x153fab[_0x463d('0x8')]]);}}catch(_0x42263b){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x2d'),_0x153fab[_0x463d('0x8')]),_0x42263b);}};exports['attendedtransfer']=function(_0x12ac2a){try{if(!_['isNil'](channels[_0x12ac2a[_0x463d('0x34')]])){utils[_0x463d('0x17')](util['format']('[%s][calls][attendedtransfer]',_0x12ac2a[_0x463d('0x35')]),_0x12ac2a);if(channels[_0x12ac2a[_0x463d('0x34')]]['channel']==_0x12ac2a['transfereechannel']){utils[_0x463d('0xa')](util['format'](_0x463d('0x36'),_0x12ac2a[_0x463d('0x35')],_0x12ac2a[_0x463d('0x34')],_0x12ac2a[_0x463d('0x37')]));channels[_0x12ac2a[_0x463d('0x34')]]['destinationchannel']=_0x12ac2a[_0x463d('0x37')];channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x38')]=_0x463d('0x39');}else if(channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x1b')]=_0x12ac2a[_0x463d('0x3a')]){utils[_0x463d('0xa')](util['format'](_0x463d('0x36'),_0x12ac2a['origtransfereruniqueid'],_0x12ac2a['localtwolinkedid'],_0x12ac2a['origtransfererchannel']));channels[_0x12ac2a['localtwolinkedid']][_0x463d('0x28')]=_0x12ac2a[_0x463d('0x3b')];channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x38')]=_0x463d('0x39');}}}catch(_0x100f68){utils[_0x463d('0x2c')](util['format'](_0x463d('0x3c'),_0x12ac2a['origtransfereruniqueid']),_0x100f68);}};exports[_0x463d('0x3d')]=function(_0x1ffbfe){try{if(!_[_0x463d('0x26')](channels[_0x1ffbfe[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x3e'),_0x1ffbfe[_0x463d('0x8')]),_0x1ffbfe);channels[_0x1ffbfe[_0x463d('0x8')]]['musiconholdstartAt']=utils[_0x463d('0x20')]();utils[_0x463d('0xa')](util[_0x463d('0x18')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x1ffbfe['uniqueid'],channels[_0x1ffbfe[_0x463d('0x8')]]['musiconholdstartAt']));}}catch(_0x929d8){utils[_0x463d('0x2c')](util[_0x463d('0x18')]('[%s][calls][musiconholdstart]',_0x1ffbfe[_0x463d('0x8')]),_0x929d8);}};exports[_0x463d('0x3f')]=function(_0x4abb94){try{if(!_['isNil'](channels[_0x4abb94[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x40'),_0x4abb94[_0x463d('0x8')]),_0x4abb94);if(!_[_0x463d('0x26')](channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x41')])){channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x42')]+=utils['diffTime'](utils['now'](),channels[_0x4abb94[_0x463d('0x8')]]['musiconholdstartAt']);utils['info'](util['format'](_0x463d('0x43'),_0x4abb94[_0x463d('0x8')],channels[_0x4abb94[_0x463d('0x8')]]['mohtime']));delete channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x41')];}}}catch(_0x48b92a){utils[_0x463d('0x2c')](util[_0x463d('0x18')]('[%s][calls][musiconholdstop]',_0x4abb94[_0x463d('0x8')]),_0x48b92a);}};exports[_0x463d('0x44')]=function(_0x115599){try{if(!_['isNil'](channels[_0x115599['uniqueid']])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x45'),_0x115599[_0x463d('0x8')]),_0x115599);if(!_[_0x463d('0x26')](_0x115599['variable'][_0x463d('0x46')])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x47'),_0x115599[_0x463d('0x8')],_0x115599[_0x463d('0x48')]));channels[_0x115599['uniqueid']][_0x463d('0x49')]=_0x115599['value'];}if(!_[_0x463d('0x26')](_0x115599['variable'][_0x463d('0x4a')])){utils['info'](util['format'](_0x463d('0x4b'),_0x115599[_0x463d('0x8')],_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x4c')]=_0x115599[_0x463d('0x48')];channels[_0x115599['uniqueid']][_0x463d('0x2e')]='\x22'+_0x115599['value']+_0x463d('0x4d')+_0x115599['value']+'>';}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x4f')])||!_['isNil'](_0x115599['variable']['xmd-callerid'])){utils['info'](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x115599[_0x463d('0x8')],!_['isNil'](_0x115599[_0x463d('0x4e')][_0x463d('0x4f')])?_0x463d('0x4f'):'xmd-callerid',_0x115599[_0x463d('0x48')]));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x2e')]=_0x115599[_0x463d('0x48')];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x50')])||!_[_0x463d('0x26')](_0x115599['variable']['xmcs-queue'])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x51'),_0x115599['uniqueid'],!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')]['xmd-queue'])?_0x463d('0x50'):_0x463d('0x52'),_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x53')]=_0x463d('0x54');channels[_0x115599[_0x463d('0x8')]][_0x463d('0x55')]=_0x115599[_0x463d('0x48')];channels[_0x115599[_0x463d('0x8')]][_0x463d('0xb')]=!![];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x56')])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x57'),_0x115599['uniqueid'],_0x115599[_0x463d('0x48')]));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x58')]=_0x115599['value'];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x59')])){utils['info'](util[_0x463d('0x18')](_0x463d('0x5a'),_0x115599[_0x463d('0x8')],_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x5b')]=_0x115599['value'];}if(!_['isNil'](_0x115599['variable'][_0x463d('0x5c')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x115599[_0x463d('0x8')],_0x115599[_0x463d('0x48')]));channels[_0x115599['uniqueid']][_0x463d('0x5d')]=_0x115599[_0x463d('0x48')];}if(!_['isNil'](_0x115599[_0x463d('0x4e')]['sipcallid'])){utils['info'](util[_0x463d('0x18')](_0x463d('0x5e'),_0x115599['uniqueid'],_0x115599['value']));channels[_0x115599['uniqueid']][_0x463d('0x5f')]=_0x115599['value'];}}}catch(_0x2e19b3){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x45'),_0x115599[_0x463d('0x8')]),_0x2e19b3);}};exports[_0x463d('0x60')]=function(_0x4f439b){try{if(!_[_0x463d('0x26')](channels[_0x4f439b['uniqueid']])){utils[_0x463d('0x17')](util['format'](_0x463d('0x61'),_0x4f439b[_0x463d('0x8')]),_0x4f439b);utils['info'](util[_0x463d('0x18')](_0x463d('0x62'),_0x4f439b[_0x463d('0x8')],_0x4f439b[_0x463d('0x63')],_0x4f439b[_0x463d('0x64')]));if(_0x4f439b['application'][_0x463d('0x65')]()==_0x463d('0x66')&&_[_0x463d('0x67')](_0x4f439b[_0x463d('0x64')]['toLowerCase'](),_0x463d('0x68'))){var _0x2cd216=_0x4f439b[_0x463d('0x64')]['split']('=');var _0x30d8aa=_0x2cd216[0x0][_0x463d('0x69')](_0x2cd216[0x0][_0x463d('0x6a')]('(')+0x1,_0x2cd216[0x0][_0x463d('0x6a')](')'));var _0x22585b=_0x2cd216[0x1];channels[_0x4f439b['uniqueid']][_0x30d8aa]=_0x22585b;}if(!_['includes']([_0x463d('0x6b'),_0x463d('0x6c'),'execif',_0x463d('0x66'),_0x463d('0x6d')],_0x4f439b['application'][_0x463d('0x65')]())){channels[_0x4f439b[_0x463d('0x8')]]['lastapplication']=_0x4f439b[_0x463d('0x63')];channels[_0x4f439b[_0x463d('0x8')]][_0x463d('0x55')]=_0x4f439b[_0x463d('0x64')];}}}catch(_0x52bf5e){utils['error'](util['format'](_0x463d('0x61'),_0x4f439b['uniqueid']),_0x52bf5e);}};
\ No newline at end of file
+var _0xb5dd=['gotoif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','format','[%s][calls][newchannel]','info','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','linkedid','destinationchannel','answertime','disposition','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime','endtime','starttime','billableseconds','error','attendedtransfer','localtwolinkedid','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','userfield','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][varset]','xmd-originatecalleridnum','value','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','variable','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','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','includes','execif'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xb5dd,0xd9));var _0xdb5d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb5dd[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xdb5d('0x0'));var util=require(_0xdb5d('0x1'));var utils=require(_0xdb5d('0x2'));var transfers=require(_0xdb5d('0x3'));var dispositions=[_0xdb5d('0x4'),'FAILED',_0xdb5d('0x5'),_0xdb5d('0x4'),_0xdb5d('0x4'),'NO\x20ANSWER',_0xdb5d('0x6'),_0xdb5d('0x7'),_0xdb5d('0x5'),_0xdb5d('0x5'),_0xdb5d('0x5')];var channels={};function writeDB(_0x89fa9e){var _0x344631;if(transfers[_0xdb5d('0x8')][_0x89fa9e[_0xdb5d('0x9')]]){_0x344631=_0x89fa9e[_0xdb5d('0x9')];_0x89fa9e['uniqueid']=transfers[_0xdb5d('0x8')][_0x89fa9e[_0xdb5d('0x9')]][_0xdb5d('0xa')];}utils['info'](util['format'](_0xdb5d('0xb'),_0x89fa9e[_0xdb5d('0x9')],_0x89fa9e[_0xdb5d('0xc')],_0x89fa9e['queue'],_0x89fa9e['membername'],_0x89fa9e[_0xdb5d('0xd')],_0x89fa9e[_0xdb5d('0xe')],_0x89fa9e[_0xdb5d('0xf')],_0x89fa9e[_0xdb5d('0x10')]));if(_0x89fa9e[_0xdb5d('0x11')]){utils[_0xdb5d('0x12')](_0x89fa9e[_0xdb5d('0x11')])['then'](function(_0x80d463){if(_0x80d463){_0x89fa9e[_0xdb5d('0x13')]=_0x80d463['id'];}utils[_0xdb5d('0x14')]('CreateVoiceCallReport',_0x89fa9e);});}else{utils[_0xdb5d('0x14')](_0xdb5d('0x15'),_0x89fa9e);}if(channels[_0x89fa9e[_0xdb5d('0x9')]]){delete channels[_0x89fa9e['uniqueid']];}else if(_0x344631&&channels[_0x344631]){if(!transfers['blinds'][_0x344631][_0xdb5d('0x16')])delete transfers['blinds'][_0x344631];delete channels[_0x344631];}}exports[_0xdb5d('0x17')]=function(_0x3769aa){try{utils[_0xdb5d('0x18')](util[_0xdb5d('0x19')](_0xdb5d('0x1a'),_0x3769aa[_0xdb5d('0x9')]),_0x3769aa);if(_0x3769aa[_0xdb5d('0x9')]==_0x3769aa['linkedid']&&_0x3769aa[_0xdb5d('0xc')]!='OutgoingSpoolFailed'){utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x1c'),_0x3769aa[_0xdb5d('0x9')],_0x3769aa[_0xdb5d('0x1d')],_0x3769aa['exten']));channels[_0x3769aa[_0xdb5d('0x9')]]={'uniqueid':_0x3769aa[_0xdb5d('0x9')],'accountcode':_0x3769aa['accountcode'],'source':_0x3769aa['calleridnum'],'destination':_0x3769aa[_0xdb5d('0x1e')],'destinationcontext':_0x3769aa[_0xdb5d('0x1d')],'channel':_0x3769aa['channel'],'starttime':utils[_0xdb5d('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xdb5d('0x4'),'amaflags':'DOCUMENTATION'};}}catch(_0x3894fa){utils['error'](util[_0xdb5d('0x19')]('[%s][calls][newchannel]',_0x3769aa[_0xdb5d('0x9')]),_0x3894fa);}};exports['newstate']=function(_0x485f61){try{utils[_0xdb5d('0x18')](util['format']('[%s][calls][newstate]',_0x485f61[_0xdb5d('0x9')]),_0x485f61);if(!_[_0xdb5d('0x20')](channels[_0x485f61[_0xdb5d('0x9')]])&&_0x485f61[_0xdb5d('0x21')]==0x6){utils[_0xdb5d('0x1b')](util['format'](_0xdb5d('0x22'),_0x485f61[_0xdb5d('0x9')],_0x485f61[_0xdb5d('0x1d')],_0x485f61[_0xdb5d('0xc')]));if(_[_0xdb5d('0x20')](channels[_0x485f61[_0xdb5d('0x9')]][_0xdb5d('0x23')])){channels[_0x485f61['uniqueid']][_0xdb5d('0x23')]=utils[_0xdb5d('0x1f')]();}}else if(!_[_0xdb5d('0x20')](channels[_0x485f61['linkedid']])&&_0x485f61['channelstate']==0x6&&_0x485f61[_0xdb5d('0x1d')]!='transfer'){utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x24'),_0x485f61[_0xdb5d('0x9')],_0x485f61[_0xdb5d('0x25')],_0x485f61['context'],_0x485f61['channel']));channels[_0x485f61[_0xdb5d('0x25')]][_0xdb5d('0x11')]=_0x485f61[_0xdb5d('0x11')];channels[_0x485f61[_0xdb5d('0x25')]][_0xdb5d('0x26')]=_0x485f61['channel'];if(_[_0xdb5d('0x20')](channels[_0x485f61[_0xdb5d('0x25')]][_0xdb5d('0x27')])){channels[_0x485f61[_0xdb5d('0x25')]][_0xdb5d('0x27')]=utils[_0xdb5d('0x1f')]();}channels[_0x485f61[_0xdb5d('0x25')]][_0xdb5d('0x28')]=dispositions[_[_0xdb5d('0x29')](_0x485f61['channelstate'])]||_0xdb5d('0x6');}}catch(_0x3a9cc5){utils['error'](util[_0xdb5d('0x19')](_0xdb5d('0x2a'),_0x485f61[_0xdb5d('0x9')]),_0x3a9cc5);}};exports[_0xdb5d('0x2b')]=function(_0x48dcc1){try{if(!_[_0xdb5d('0x20')](channels[_0x48dcc1[_0xdb5d('0x9')]])){utils['debug'](util[_0xdb5d('0x19')](_0xdb5d('0x2c'),_0x48dcc1[_0xdb5d('0x9')]),_0x48dcc1);if(_[_0xdb5d('0x20')](channels[_0x48dcc1['uniqueid']]['callerid'])){channels[_0x48dcc1[_0xdb5d('0x9')]][_0xdb5d('0x2d')]=_0x48dcc1[_0xdb5d('0x2e')]+'\x20<'+_0x48dcc1[_0xdb5d('0xe')]+'>';}utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x2f'),_0x48dcc1[_0xdb5d('0x9')],channels[_0x48dcc1[_0xdb5d('0x9')]][_0xdb5d('0x2d')],_0x48dcc1[_0xdb5d('0x30')]));channels[_0x48dcc1['uniqueid']]['endtime']=utils[_0xdb5d('0x1f')]();channels[_0x48dcc1[_0xdb5d('0x9')]]['duration']=utils[_0xdb5d('0x31')](channels[_0x48dcc1[_0xdb5d('0x9')]][_0xdb5d('0x32')],channels[_0x48dcc1['uniqueid']][_0xdb5d('0x33')]);channels[_0x48dcc1['uniqueid']][_0xdb5d('0x34')]=channels[_0x48dcc1[_0xdb5d('0x9')]]['answertime']?utils['diffTime'](channels[_0x48dcc1[_0xdb5d('0x9')]]['endtime'],channels[_0x48dcc1[_0xdb5d('0x9')]][_0xdb5d('0x27')]):0x0;writeDB(channels[_0x48dcc1[_0xdb5d('0x9')]]);}}catch(_0x125cdb){utils[_0xdb5d('0x35')](util[_0xdb5d('0x19')]('[%s][calls][hangup]',_0x48dcc1['uniqueid']),_0x125cdb);}};exports[_0xdb5d('0x36')]=function(_0x2a8f96){try{if(!_['isNil'](channels[_0x2a8f96[_0xdb5d('0x37')]])){utils[_0xdb5d('0x18')](util['format']('[%s][calls][attendedtransfer]',_0x2a8f96[_0xdb5d('0x38')]),_0x2a8f96);if(channels[_0x2a8f96[_0xdb5d('0x37')]]['channel']==_0x2a8f96[_0xdb5d('0x39')]){utils['info'](util[_0xdb5d('0x19')](_0xdb5d('0x3a'),_0x2a8f96[_0xdb5d('0x38')],_0x2a8f96[_0xdb5d('0x37')],_0x2a8f96['secondtransfererchannel']));channels[_0x2a8f96[_0xdb5d('0x37')]][_0xdb5d('0x26')]=_0x2a8f96['secondtransfererchannel'];channels[_0x2a8f96[_0xdb5d('0x37')]][_0xdb5d('0x3b')]='_attended';}else if(channels[_0x2a8f96[_0xdb5d('0x37')]]['channel']=_0x2a8f96['transfertargetchannel']){utils[_0xdb5d('0x1b')](util['format'](_0xdb5d('0x3a'),_0x2a8f96['origtransfereruniqueid'],_0x2a8f96[_0xdb5d('0x37')],_0x2a8f96[_0xdb5d('0x3c')]));channels[_0x2a8f96[_0xdb5d('0x37')]][_0xdb5d('0x26')]=_0x2a8f96[_0xdb5d('0x3c')];channels[_0x2a8f96[_0xdb5d('0x37')]]['userfield']='_attended';}}}catch(_0x1cf36c){utils[_0xdb5d('0x35')](util['format'](_0xdb5d('0x3d'),_0x2a8f96[_0xdb5d('0x38')]),_0x1cf36c);}};exports[_0xdb5d('0x3e')]=function(_0x3db21e){try{if(!_['isNil'](channels[_0x3db21e[_0xdb5d('0x9')]])){utils[_0xdb5d('0x18')](util[_0xdb5d('0x19')](_0xdb5d('0x3f'),_0x3db21e[_0xdb5d('0x9')]),_0x3db21e);channels[_0x3db21e['uniqueid']]['musiconholdstartAt']=utils[_0xdb5d('0x1f')]();utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x40'),_0x3db21e[_0xdb5d('0x9')],channels[_0x3db21e[_0xdb5d('0x9')]][_0xdb5d('0x41')]));}}catch(_0x4eee57){utils[_0xdb5d('0x35')](util[_0xdb5d('0x19')](_0xdb5d('0x3f'),_0x3db21e[_0xdb5d('0x9')]),_0x4eee57);}};exports[_0xdb5d('0x42')]=function(_0x5e62e2){try{if(!_['isNil'](channels[_0x5e62e2['uniqueid']])){utils['debug'](util[_0xdb5d('0x19')](_0xdb5d('0x43'),_0x5e62e2[_0xdb5d('0x9')]),_0x5e62e2);if(!_['isNil'](channels[_0x5e62e2[_0xdb5d('0x9')]][_0xdb5d('0x41')])){channels[_0x5e62e2[_0xdb5d('0x9')]][_0xdb5d('0x44')]+=utils[_0xdb5d('0x31')](utils[_0xdb5d('0x1f')](),channels[_0x5e62e2[_0xdb5d('0x9')]]['musiconholdstartAt']);utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x5e62e2[_0xdb5d('0x9')],channels[_0x5e62e2[_0xdb5d('0x9')]]['mohtime']));delete channels[_0x5e62e2[_0xdb5d('0x9')]][_0xdb5d('0x41')];}}}catch(_0x2435c4){utils[_0xdb5d('0x35')](util['format'](_0xdb5d('0x43'),_0x5e62e2[_0xdb5d('0x9')]),_0x2435c4);}};exports['varset']=function(_0x39d93c){try{if(!_['isNil'](channels[_0x39d93c['uniqueid']])){utils[_0xdb5d('0x18')](util[_0xdb5d('0x19')](_0xdb5d('0x45'),_0x39d93c['uniqueid']),_0x39d93c);if(!_[_0xdb5d('0x20')](_0x39d93c['variable'][_0xdb5d('0x46')])){utils[_0xdb5d('0x1b')](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x39d93c['uniqueid'],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c['uniqueid']]['source']=_0x39d93c[_0xdb5d('0x47')];}if(!_['isNil'](_0x39d93c['variable']['xmd-phone'])){utils['info'](util[_0xdb5d('0x19')](_0xdb5d('0x48'),_0x39d93c[_0xdb5d('0x9')],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x49')]=_0x39d93c[_0xdb5d('0x47')];channels[_0x39d93c[_0xdb5d('0x9')]]['callerid']='\x22'+_0x39d93c[_0xdb5d('0x47')]+_0xdb5d('0x4a')+_0x39d93c[_0xdb5d('0x47')]+'>';}if(!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x4c')])||!_[_0xdb5d('0x20')](_0x39d93c['variable'][_0xdb5d('0x4d')])){utils[_0xdb5d('0x1b')](util['format'](_0xdb5d('0x4e'),_0x39d93c[_0xdb5d('0x9')],!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x4c')])?'xmd-callerid-preview':_0xdb5d('0x4d'),_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x2d')]=_0x39d93c['value'];}if(!_['isNil'](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x4f')])||!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x50')])){utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x4e'),_0x39d93c['uniqueid'],!_['isNil'](_0x39d93c[_0xdb5d('0x4b')]['xmd-queue'])?_0xdb5d('0x4f'):_0xdb5d('0x50'),_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x51')]=_0xdb5d('0x52');channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x53')]=_0x39d93c[_0xdb5d('0x47')];channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x54')]=!![];}if(!_[_0xdb5d('0x20')](_0x39d93c['variable'][_0xdb5d('0x55')])){utils[_0xdb5d('0x1b')](util[_0xdb5d('0x19')](_0xdb5d('0x56'),_0x39d93c['uniqueid'],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x57')]=_0x39d93c[_0xdb5d('0x47')];}if(!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')]['xmd-cdrtype'])){utils['info'](util[_0xdb5d('0x19')](_0xdb5d('0x58'),_0x39d93c[_0xdb5d('0x9')],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c['uniqueid']][_0xdb5d('0x59')]=_0x39d93c[_0xdb5d('0x47')];}if(!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x5a')])){utils['info'](util[_0xdb5d('0x19')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x39d93c['uniqueid'],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c[_0xdb5d('0x9')]][_0xdb5d('0x5b')]=_0x39d93c[_0xdb5d('0x47')];}if(!_[_0xdb5d('0x20')](_0x39d93c[_0xdb5d('0x4b')][_0xdb5d('0x5c')])){utils['info'](util[_0xdb5d('0x19')](_0xdb5d('0x5d'),_0x39d93c[_0xdb5d('0x9')],_0x39d93c[_0xdb5d('0x47')]));channels[_0x39d93c['uniqueid']]['sipcallid']=_0x39d93c['value'];}}}catch(_0x1e70fe){utils['error'](util['format'](_0xdb5d('0x45'),_0x39d93c[_0xdb5d('0x9')]),_0x1e70fe);}};exports[_0xdb5d('0x5e')]=function(_0x495704){try{if(!_[_0xdb5d('0x20')](channels[_0x495704[_0xdb5d('0x9')]])){utils[_0xdb5d('0x18')](util[_0xdb5d('0x19')](_0xdb5d('0x5f'),_0x495704['uniqueid']),_0x495704);utils[_0xdb5d('0x1b')](util['format'](_0xdb5d('0x60'),_0x495704['uniqueid'],_0x495704[_0xdb5d('0x61')],_0x495704[_0xdb5d('0x62')]));if(_0x495704['application'][_0xdb5d('0x63')]()==_0xdb5d('0x64')&&_[_0xdb5d('0x65')](_0x495704[_0xdb5d('0x62')]['toLowerCase'](),_0xdb5d('0x66'))){var _0x5b3002=_0x495704['appdata']['split']('=');var _0x33c5fc=_0x5b3002[0x0][_0xdb5d('0x67')](_0x5b3002[0x0][_0xdb5d('0x68')]('(')+0x1,_0x5b3002[0x0][_0xdb5d('0x68')](')'));var _0x432bcb=_0x5b3002[0x1];channels[_0x495704[_0xdb5d('0x9')]][_0x33c5fc]=_0x432bcb;}if(!_[_0xdb5d('0x69')]([_0xdb5d('0x2b'),'noop',_0xdb5d('0x6a'),_0xdb5d('0x64'),_0xdb5d('0x6b')],_0x495704[_0xdb5d('0x61')]['toLowerCase']())){channels[_0x495704[_0xdb5d('0x9')]][_0xdb5d('0x51')]=_0x495704[_0xdb5d('0x61')];channels[_0x495704[_0xdb5d('0x9')]][_0xdb5d('0x53')]=_0x495704['appdata'];}}}catch(_0x4862ce){utils[_0xdb5d('0x35')](util[_0xdb5d('0x19')]('[%s][calls][newexten]',_0x495704[_0xdb5d('0x9')]),_0x4862ce);}};
\ No newline at end of file
index b5af208..768b7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f7b=['[core]\x20connected','fullybooted','error','[core]\x20error','close','[core]\x20close','./utils','connect','info'];(function(_0x24097a,_0x3baca2){var _0x3285f8=function(_0x1fa87f){while(--_0x1fa87f){_0x24097a['push'](_0x24097a['shift']());}};_0x3285f8(++_0x3baca2);}(_0x7f7b,0x1ad));var _0xb7f7=function(_0x25e3c,_0x4e1970){_0x25e3c=_0x25e3c-0x0;var _0x2353c3=_0x7f7b[_0x25e3c];return _0x2353c3;};'use strict';var utils=require(_0xb7f7('0x0'));exports[_0xb7f7('0x1')]=function(){utils[_0xb7f7('0x2')](_0xb7f7('0x3'));};exports['shutdown']=function(){utils[_0xb7f7('0x2')]('[core]\x20shutdown');};exports[_0xb7f7('0x4')]=function(){utils['info']('[core]\x20fullybooted');};exports['error']=function(_0x17eed3){utils[_0xb7f7('0x5')](_0xb7f7('0x6'),_0x17eed3);};exports[_0xb7f7('0x7')]=function(){utils[_0xb7f7('0x2')](_0xb7f7('0x8'));};exports['managerevent']=function(_0x5b2253){};
\ No newline at end of file
+var _0xdada=['info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','[core]\x20error','close','managerevent','./utils','connect'];(function(_0x1223d8,_0x48a9bd){var _0x47921a=function(_0x49e43f){while(--_0x49e43f){_0x1223d8['push'](_0x1223d8['shift']());}};_0x47921a(++_0x48a9bd);}(_0xdada,0x1a2));var _0xadad=function(_0x7aaba4,_0x228ac4){_0x7aaba4=_0x7aaba4-0x0;var _0xb08175=_0xdada[_0x7aaba4];return _0xb08175;};'use strict';var utils=require(_0xadad('0x0'));exports[_0xadad('0x1')]=function(){utils[_0xadad('0x2')]('[core]\x20connected');};exports[_0xadad('0x3')]=function(){utils[_0xadad('0x2')](_0xadad('0x4'));};exports[_0xadad('0x5')]=function(){utils['info'](_0xadad('0x6'));};exports['error']=function(_0x1f5562){utils['error'](_0xadad('0x7'),_0x1f5562);};exports[_0xadad('0x8')]=function(){utils[_0xadad('0x2')]('[core]\x20close');};exports[_0xadad('0x9')]=function(_0x5a8435){};
\ No newline at end of file
index 6d867e7..30c0856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba0=['called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','ANSWER','assign','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','calleridnum','cause-txt','complete','diffTime','holdtime','billableseconds','lodash','util','./utils','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstatus','request','newexten','format','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','cdr(routeid)','split','error','debug','isNil','variable','outboundrouteid','value','[%s][dials][varset]','dialbegin','starttime','now','lastevent'];(function(_0x24ff33,_0x2df8a8){var _0x2973d6=function(_0x3fb4b4){while(--_0x3fb4b4){_0x24ff33['push'](_0x24ff33['shift']());}};_0x2973d6(++_0x2df8a8);}(_0xdba0,0x1d5));var _0x0dba=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xdba0[_0xf50820];return _0x2a9b10;};'use strict';var _=require(_0x0dba('0x0'));var util=require(_0x0dba('0x1'));var utils=require(_0x0dba('0x2'));var dials={};function writeDB(_0x19fc6e){utils['info'](util['format'](_0x0dba('0x3'),_0x19fc6e[_0x0dba('0x4')],_0x19fc6e[_0x0dba('0x5')],_0x19fc6e['dialstring'],_0x19fc6e['calleridnum'],_0x19fc6e['connectedlinenum'],_0x19fc6e[_0x0dba('0x6')]));utils[_0x0dba('0x7')]('CreateVoiceDialReport',_0x19fc6e);delete dials[_0x19fc6e[_0x0dba('0x4')]];}exports[_0x0dba('0x8')]=function(_0x800fe5){try{utils['debug'](util[_0x0dba('0x9')](_0x0dba('0xa'),_0x800fe5[_0x0dba('0x4')]),_0x800fe5);utils[_0x0dba('0xb')](util[_0x0dba('0x9')](_0x0dba('0xc'),_0x800fe5['uniqueid'],_0x800fe5[_0x0dba('0xd')],_0x800fe5['appdata']));if(_0x800fe5[_0x0dba('0xd')][_0x0dba('0xe')]()==_0x0dba('0xf')&&_[_0x0dba('0x10')](_0x800fe5[_0x0dba('0x11')][_0x0dba('0xe')](),_0x0dba('0x12'))){var _0x19fbba=_0x800fe5[_0x0dba('0x11')][_0x0dba('0x13')]('=');dials[_0x800fe5[_0x0dba('0x4')]]={'routeId':_0x19fbba[0x1]};}}catch(_0x9acd7e){utils[_0x0dba('0x14')](util[_0x0dba('0x9')](_0x0dba('0xa'),_0x800fe5[_0x0dba('0x4')]),_0x9acd7e);}};exports['varset']=function(_0x5a66c0){try{utils[_0x0dba('0x15')](util[_0x0dba('0x9')]('[%s][dials][varset]',_0x5a66c0['uniqueid']),_0x5a66c0);if(!_[_0x0dba('0x16')](_0x5a66c0[_0x0dba('0x17')][_0x0dba('0x18')])){utils[_0x0dba('0xb')](util[_0x0dba('0x9')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x5a66c0[_0x0dba('0x4')],_0x5a66c0[_0x0dba('0x19')]));dials[_0x5a66c0[_0x0dba('0x4')]]={'routeId':_0x5a66c0[_0x0dba('0x19')]};}}catch(_0x73f45f){utils['error'](util['format'](_0x0dba('0x1a'),_0x5a66c0[_0x0dba('0x4')]),_0x73f45f);}};exports[_0x0dba('0x1b')]=function(_0x55067a){try{if(!_['isNil'](dials[_0x55067a[_0x0dba('0x4')]])){utils[_0x0dba('0x15')](util[_0x0dba('0x9')]('[%s][dials][dialbegin]',_0x55067a['uniqueid']),_0x55067a);dials[_0x55067a[_0x0dba('0x4')]]=_['assign'](dials[_0x55067a[_0x0dba('0x4')]],_0x55067a);dials[_0x55067a[_0x0dba('0x4')]][_0x0dba('0x1c')]=utils[_0x0dba('0x1d')]();dials[_0x55067a[_0x0dba('0x4')]][_0x0dba('0x1e')]=_0x0dba('0x1f');utils[_0x0dba('0xb')](util[_0x0dba('0x9')](_0x0dba('0x20'),_0x55067a[_0x0dba('0x4')],dials[_0x55067a[_0x0dba('0x4')]][_0x0dba('0x1c')]));}}catch(_0x5307f4){utils[_0x0dba('0x14')](util[_0x0dba('0x9')](_0x0dba('0x21'),_0x55067a[_0x0dba('0x4')]),_0x5307f4);}};exports[_0x0dba('0x22')]=function(_0xde84b6){try{if(!_[_0x0dba('0x16')](dials[_0xde84b6['uniqueid']])){utils[_0x0dba('0x15')](util[_0x0dba('0x9')](_0x0dba('0x23'),_0xde84b6[_0x0dba('0x4')]),_0xde84b6);dials[_0xde84b6[_0x0dba('0x4')]][_0x0dba('0x6')]=_0xde84b6[_0x0dba('0x6')];if(_0xde84b6[_0x0dba('0x6')]==_0x0dba('0x24')){dials[_0xde84b6[_0x0dba('0x4')]]=_[_0x0dba('0x25')](dials[_0xde84b6[_0x0dba('0x4')]],_0xde84b6);dials[_0xde84b6[_0x0dba('0x4')]]['answertime']=utils[_0x0dba('0x1d')]();dials[_0xde84b6['uniqueid']][_0x0dba('0x1e')]=_0x0dba('0x26');utils['info'](util['format'](_0x0dba('0x27'),_0xde84b6[_0x0dba('0x4')],_0xde84b6[_0x0dba('0x6')],dials[_0xde84b6[_0x0dba('0x4')]][_0x0dba('0x28')]));}else{utils[_0x0dba('0xb')](util[_0x0dba('0x9')](_0x0dba('0x29'),_0xde84b6[_0x0dba('0x4')],_0xde84b6[_0x0dba('0x6')]));}}}catch(_0x124049){utils[_0x0dba('0x14')](util[_0x0dba('0x9')](_0x0dba('0x23'),_0xde84b6[_0x0dba('0x4')]),_0x124049);}};exports[_0x0dba('0x2a')]=function(_0x5e3db8){try{if(!_[_0x0dba('0x16')](dials[_0x5e3db8[_0x0dba('0x4')]])){utils[_0x0dba('0x15')](util[_0x0dba('0x9')](_0x0dba('0x2b'),_0x5e3db8['uniqueid']),_0x5e3db8);utils[_0x0dba('0xb')](util[_0x0dba('0x9')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x5e3db8[_0x0dba('0x4')],_0x5e3db8[_0x0dba('0x2c')],_0x5e3db8['calleridname'],_0x5e3db8[_0x0dba('0x2d')]));dials[_0x5e3db8[_0x0dba('0x4')]]=_[_0x0dba('0x25')](dials[_0x5e3db8['uniqueid']],{'endtime':utils[_0x0dba('0x1d')](),'lastevent':_0x0dba('0x2e')});dials[_0x5e3db8[_0x0dba('0x4')]]['duration']=utils[_0x0dba('0x2f')](dials[_0x5e3db8[_0x0dba('0x4')]]['endtime'],dials[_0x5e3db8[_0x0dba('0x4')]]['starttime']);dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x30')]=utils['diffTime'](dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x28')]||dials[_0x5e3db8[_0x0dba('0x4')]]['endtime'],dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x1c')]);dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x31')]=dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x28')]?utils[_0x0dba('0x2f')](dials[_0x5e3db8[_0x0dba('0x4')]]['endtime'],dials[_0x5e3db8[_0x0dba('0x4')]][_0x0dba('0x28')]):0x0;writeDB(dials[_0x5e3db8['uniqueid']]);}}catch(_0x1487e6){utils[_0x0dba('0x14')](util[_0x0dba('0x9')](_0x0dba('0x2b'),_0x5e3db8[_0x0dba('0x4')]),_0x1487e6);}};
\ No newline at end of file
+var _0xad67=['debug','[%s][dials][newexten]','application','toLowerCase','startsWith','cdr(routeid)','appdata','split','error','varset','[%s][dials][varset]','isNil','outboundrouteid','value','dialbegin','[%s][dials][dialbegin]','assign','starttime','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialend]','ANSWER','answertime','now','connect','[%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','calleridnum','calleridname','complete','diffTime','endtime','billableseconds','util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','connectedlinenum','dialstatus'];(function(_0x565d5f,_0x2bf262){var _0x3a3b58=function(_0x3c783f){while(--_0x3c783f){_0x565d5f['push'](_0x565d5f['shift']());}};_0x3a3b58(++_0x2bf262);}(_0xad67,0x1e5));var _0x7ad6=function(_0x4dac30,_0x3b1e61){_0x4dac30=_0x4dac30-0x0;var _0x4ae741=_0xad67[_0x4dac30];return _0x4ae741;};'use strict';var _=require('lodash');var util=require(_0x7ad6('0x0'));var utils=require(_0x7ad6('0x1'));var dials={};function writeDB(_0x1261aa){utils[_0x7ad6('0x2')](util[_0x7ad6('0x3')](_0x7ad6('0x4'),_0x1261aa[_0x7ad6('0x5')],_0x1261aa[_0x7ad6('0x6')],_0x1261aa[_0x7ad6('0x7')],_0x1261aa['calleridnum'],_0x1261aa[_0x7ad6('0x8')],_0x1261aa[_0x7ad6('0x9')]));utils['request']('CreateVoiceDialReport',_0x1261aa);delete dials[_0x1261aa[_0x7ad6('0x5')]];}exports['newexten']=function(_0x3459d4){try{utils[_0x7ad6('0xa')](util[_0x7ad6('0x3')](_0x7ad6('0xb'),_0x3459d4[_0x7ad6('0x5')]),_0x3459d4);utils[_0x7ad6('0x2')](util[_0x7ad6('0x3')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x3459d4[_0x7ad6('0x5')],_0x3459d4['application'],_0x3459d4['appdata']));if(_0x3459d4[_0x7ad6('0xc')][_0x7ad6('0xd')]()=='set'&&_[_0x7ad6('0xe')](_0x3459d4['appdata'][_0x7ad6('0xd')](),_0x7ad6('0xf'))){var _0x18819c=_0x3459d4[_0x7ad6('0x10')][_0x7ad6('0x11')]('=');dials[_0x3459d4['uniqueid']]={'routeId':_0x18819c[0x1]};}}catch(_0x18d3b8){utils[_0x7ad6('0x12')](util[_0x7ad6('0x3')](_0x7ad6('0xb'),_0x3459d4[_0x7ad6('0x5')]),_0x18d3b8);}};exports[_0x7ad6('0x13')]=function(_0x5ea3c8){try{utils[_0x7ad6('0xa')](util[_0x7ad6('0x3')](_0x7ad6('0x14'),_0x5ea3c8['uniqueid']),_0x5ea3c8);if(!_[_0x7ad6('0x15')](_0x5ea3c8['variable'][_0x7ad6('0x16')])){utils[_0x7ad6('0x2')](util[_0x7ad6('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x5ea3c8[_0x7ad6('0x5')],_0x5ea3c8[_0x7ad6('0x17')]));dials[_0x5ea3c8[_0x7ad6('0x5')]]={'routeId':_0x5ea3c8[_0x7ad6('0x17')]};}}catch(_0x1a870d){utils[_0x7ad6('0x12')](util[_0x7ad6('0x3')](_0x7ad6('0x14'),_0x5ea3c8[_0x7ad6('0x5')]),_0x1a870d);}};exports[_0x7ad6('0x18')]=function(_0x23063a){try{if(!_[_0x7ad6('0x15')](dials[_0x23063a[_0x7ad6('0x5')]])){utils[_0x7ad6('0xa')](util[_0x7ad6('0x3')](_0x7ad6('0x19'),_0x23063a['uniqueid']),_0x23063a);dials[_0x23063a[_0x7ad6('0x5')]]=_[_0x7ad6('0x1a')](dials[_0x23063a['uniqueid']],_0x23063a);dials[_0x23063a['uniqueid']][_0x7ad6('0x1b')]=utils['now']();dials[_0x23063a[_0x7ad6('0x5')]][_0x7ad6('0x1c')]='called';utils[_0x7ad6('0x2')](util['format'](_0x7ad6('0x1d'),_0x23063a[_0x7ad6('0x5')],dials[_0x23063a[_0x7ad6('0x5')]][_0x7ad6('0x1b')]));}}catch(_0x2a34bb){utils['error'](util['format'](_0x7ad6('0x19'),_0x23063a[_0x7ad6('0x5')]),_0x2a34bb);}};exports['dialend']=function(_0x3028a8){try{if(!_['isNil'](dials[_0x3028a8[_0x7ad6('0x5')]])){utils['debug'](util[_0x7ad6('0x3')](_0x7ad6('0x1e'),_0x3028a8[_0x7ad6('0x5')]),_0x3028a8);dials[_0x3028a8[_0x7ad6('0x5')]]['dialstatus']=_0x3028a8['dialstatus'];if(_0x3028a8[_0x7ad6('0x9')]==_0x7ad6('0x1f')){dials[_0x3028a8[_0x7ad6('0x5')]]=_['assign'](dials[_0x3028a8[_0x7ad6('0x5')]],_0x3028a8);dials[_0x3028a8[_0x7ad6('0x5')]][_0x7ad6('0x20')]=utils[_0x7ad6('0x21')]();dials[_0x3028a8['uniqueid']][_0x7ad6('0x1c')]=_0x7ad6('0x22');utils[_0x7ad6('0x2')](util[_0x7ad6('0x3')](_0x7ad6('0x23'),_0x3028a8[_0x7ad6('0x5')],_0x3028a8['dialstatus'],dials[_0x3028a8[_0x7ad6('0x5')]][_0x7ad6('0x20')]));}else{utils[_0x7ad6('0x2')](util[_0x7ad6('0x3')](_0x7ad6('0x24'),_0x3028a8[_0x7ad6('0x5')],_0x3028a8[_0x7ad6('0x9')]));}}}catch(_0x47763d){utils[_0x7ad6('0x12')](util[_0x7ad6('0x3')](_0x7ad6('0x1e'),_0x3028a8[_0x7ad6('0x5')]),_0x47763d);}};exports['hangup']=function(_0x4d48e7){try{if(!_[_0x7ad6('0x15')](dials[_0x4d48e7[_0x7ad6('0x5')]])){utils[_0x7ad6('0xa')](util[_0x7ad6('0x3')](_0x7ad6('0x25'),_0x4d48e7[_0x7ad6('0x5')]),_0x4d48e7);utils[_0x7ad6('0x2')](util['format'](_0x7ad6('0x26'),_0x4d48e7['uniqueid'],_0x4d48e7[_0x7ad6('0x27')],_0x4d48e7[_0x7ad6('0x28')],_0x4d48e7['cause-txt']));dials[_0x4d48e7[_0x7ad6('0x5')]]=_[_0x7ad6('0x1a')](dials[_0x4d48e7[_0x7ad6('0x5')]],{'endtime':utils[_0x7ad6('0x21')](),'lastevent':_0x7ad6('0x29')});dials[_0x4d48e7[_0x7ad6('0x5')]]['duration']=utils[_0x7ad6('0x2a')](dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x2b')],dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x1b')]);dials[_0x4d48e7[_0x7ad6('0x5')]]['holdtime']=utils[_0x7ad6('0x2a')](dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x20')]||dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x2b')],dials[_0x4d48e7['uniqueid']][_0x7ad6('0x1b')]);dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x2c')]=dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x20')]?utils[_0x7ad6('0x2a')](dials[_0x4d48e7['uniqueid']][_0x7ad6('0x2b')],dials[_0x4d48e7[_0x7ad6('0x5')]][_0x7ad6('0x20')]):0x0;writeDB(dials[_0x4d48e7[_0x7ad6('0x5')]]);}}catch(_0x5e0ed4){utils[_0x7ad6('0x12')](util[_0x7ad6('0x3')](_0x7ad6('0x25'),_0x4d48e7['uniqueid']),_0x5e0ed4);}};
\ No newline at end of file
index c1ae0fd..ed30fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ec=['[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','util','xdr','disabled','env','asterisk','port','username','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./calls.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','debug','[%s][index][agentcalled]','uniqueid','[%s][index][agentringnoanswer]','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid'];(function(_0x19bf5f,_0x1ca6b9){var _0x237efa=function(_0x18f2a3){while(--_0x18f2a3){_0x19bf5f['push'](_0x19bf5f['shift']());}};_0x237efa(++_0x1ca6b9);}(_0x66ec,0x95));var _0xc66e=function(_0x23f8c8,_0xb536b9){_0x23f8c8=_0x23f8c8-0x0;var _0x3dc718=_0x66ec[_0x23f8c8];return _0x3dc718;};var AsteriskManager=require(_0xc66e('0x0'));var config=require(_0xc66e('0x1'));var utils=require('./utils');var util=require(_0xc66e('0x2'));var isXDREnabled=config[_0xc66e('0x3')]&&config[_0xc66e('0x3')][_0xc66e('0x4')]?!config[_0xc66e('0x3')]['disabled']:!![];var isProduction=config[_0xc66e('0x5')]==='production'||![];var isLocalAsterisk=config[_0xc66e('0x3')]&&config[_0xc66e('0x3')]['local']===!![]||![];var ami=new AsteriskManager(config[_0xc66e('0x6')][_0xc66e('0x7')],config[_0xc66e('0x6')]['ip'],config[_0xc66e('0x6')][_0xc66e('0x8')],config['asterisk']['password'],!![]);ami[_0xc66e('0x9')]();if(!isXDREnabled){utils[_0xc66e('0xa')](_0xc66e('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils['info'](_0xc66e('0xc'));}else{var agents=require('./agents.controller');var calls=require(_0xc66e('0xd'));var queues=require('./queues.controller');var recordings=require(_0xc66e('0xe'));var members=require(_0xc66e('0xf'));var dials=require(_0xc66e('0x10'));var transfers=require(_0xc66e('0x11'));var core=require(_0xc66e('0x12'));ami['on'](_0xc66e('0x13'),core[_0xc66e('0x13')]);ami['on']('shutdown',core[_0xc66e('0x14')]);ami['on'](_0xc66e('0x15'),core['fullybooted']);ami['on']('error',core[_0xc66e('0x16')]);ami['on'](_0xc66e('0x17'),core[_0xc66e('0x17')]);ami['on'](_0xc66e('0x18'),core[_0xc66e('0x18')]);ami['on'](_0xc66e('0x19'),function(_0x9aa5f2){try{utils['debug'](util[_0xc66e('0x1a')](_0xc66e('0x1b'),_0x9aa5f2[_0xc66e('0x1c')]),_0x9aa5f2);members[_0xc66e('0x19')](_0x9aa5f2);}catch(_0x53000c){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][devicestatechange]',_0x9aa5f2['device']),_0x53000c);}});ami['on']('agentcalled',function(_0x374899){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x1e'),_0x374899[_0xc66e('0x1f')]),_0x374899);agents['agentcalled'](_0x374899);}catch(_0x2a512f){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x1e'),_0x374899['uniqueid']),_0x2a512f);}});ami['on']('agentringnoanswer',function(_0x415dd3){try{utils['debug'](util[_0xc66e('0x1a')](_0xc66e('0x20'),_0x415dd3[_0xc66e('0x1f')]),_0x415dd3);agents[_0xc66e('0x21')](_0x415dd3);}catch(_0xf3feed){utils['error'](util[_0xc66e('0x1a')](_0xc66e('0x20'),_0x415dd3[_0xc66e('0x1f')]),_0xf3feed);}});ami['on'](_0xc66e('0x22'),function(_0x4ba0ae){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x23'),_0x4ba0ae[_0xc66e('0x1f')]),_0x4ba0ae);agents[_0xc66e('0x22')](_0x4ba0ae);queues['agentconnect'](_0x4ba0ae);}catch(_0x2a111d){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][agentconnect]',_0x4ba0ae[_0xc66e('0x1f')]),_0x2a111d);}});ami['on'](_0xc66e('0x24'),function(_0x47bd76){try{utils['debug'](util['format'](_0xc66e('0x25'),_0x47bd76[_0xc66e('0x1f')]),_0x47bd76);agents[_0xc66e('0x24')](_0x47bd76);queues[_0xc66e('0x24')](_0x47bd76);members['agentcomplete'](_0x47bd76);}catch(_0x17ba7e){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][agentcomplete]',_0x47bd76[_0xc66e('0x1f')]),_0x17ba7e);}});ami['on'](_0xc66e('0x26'),function(_0x1f76c8){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x27'),_0x1f76c8['uniqueid']),_0x1f76c8);agents['queuecallerabandon'](_0x1f76c8);queues['queuecallerabandon'](_0x1f76c8);}catch(_0x4d9a71){utils['error'](util[_0xc66e('0x1a')]('[%s][index][queuecallerabandon]',_0x1f76c8[_0xc66e('0x1f')]),_0x4d9a71);}});ami['on'](_0xc66e('0x28'),function(_0x5b029){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x29'),_0x5b029['uniqueid']),_0x5b029);queues[_0xc66e('0x28')](_0x5b029);recordings['queuecallerjoin'](_0x5b029);}catch(_0x1a9448){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x29'),_0x5b029['uniqueid']),_0x1a9448);}});ami['on']('queuecallerleave',function(_0x17d48b){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x2a'),_0x17d48b[_0xc66e('0x1f')]),_0x17d48b);queues[_0xc66e('0x2b')](_0x17d48b);}catch(_0x19dfbc){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x2a'),_0x17d48b[_0xc66e('0x1f')]),_0x19dfbc);}});ami['on'](_0xc66e('0x2c'),function(_0x49e8f8){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x2d'),_0x49e8f8[_0xc66e('0x1f')]),_0x49e8f8);queues[_0xc66e('0x2c')](_0x49e8f8);calls[_0xc66e('0x2c')](_0x49e8f8);}catch(_0x567e31){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][musiconholdstart]',_0x49e8f8['uniqueid']),_0x567e31);}});ami['on'](_0xc66e('0x2e'),function(_0x22b0ef){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')]('[%s][index][musiconholdstop]',_0x22b0ef[_0xc66e('0x1f')]),_0x22b0ef);queues[_0xc66e('0x2e')](_0x22b0ef);calls[_0xc66e('0x2e')](_0x22b0ef);}catch(_0x27c11d){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x2f'),_0x22b0ef[_0xc66e('0x1f')]),_0x27c11d);}});ami['on'](_0xc66e('0x30'),function(_0x8763a5){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x31'),_0x8763a5['uniqueid']),_0x8763a5);calls['newstate'](_0x8763a5);recordings[_0xc66e('0x30')](_0x8763a5);}catch(_0x17dd70){utils['error'](util[_0xc66e('0x1a')](_0xc66e('0x31'),_0x8763a5['uniqueid']),_0x17dd70);}});ami['on'](_0xc66e('0x32'),function(_0x2d9888){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x33'),_0x2d9888[_0xc66e('0x1f')]),_0x2d9888);calls['hangup'](_0x2d9888);recordings[_0xc66e('0x32')](_0x2d9888);dials[_0xc66e('0x32')](_0x2d9888);agents[_0xc66e('0x32')](_0x2d9888);queues['hangup'](_0x2d9888);}catch(_0xdf398){utils['error'](util[_0xc66e('0x1a')]('[%s][index][hangup]',_0x2d9888[_0xc66e('0x1f')]),_0xdf398);}});ami['on'](_0xc66e('0x34'),function(_0x4b5543){try{utils['debug'](util[_0xc66e('0x1a')](_0xc66e('0x35'),_0x4b5543[_0xc66e('0x1f')]),_0x4b5543);members['cdr'](_0x4b5543);}catch(_0x3514c8){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x35'),_0x4b5543[_0xc66e('0x1f')]),_0x3514c8);}});ami['on'](_0xc66e('0x36'),function(_0x29de45){try{utils[_0xc66e('0x1d')](util['format']('[%s][index][blindtransfer]',_0x29de45['uniqueid']),_0x29de45);queues[_0xc66e('0x36')](_0x29de45);agents[_0xc66e('0x36')](_0x29de45);transfers[_0xc66e('0x36')](_0x29de45);recordings[_0xc66e('0x36')](_0x29de45);}catch(_0x2ffbbc){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][blindtransfer]',_0x29de45['uniqueid']),_0x2ffbbc);}});ami['on'](_0xc66e('0x37'),function(_0x4d4090){try{utils['debug'](util[_0xc66e('0x1a')](_0xc66e('0x38'),_0x4d4090[_0xc66e('0x39')]),_0x4d4090);queues[_0xc66e('0x37')](_0x4d4090);transfers[_0xc66e('0x37')](_0x4d4090);agents['attendedtransfer'](_0x4d4090);calls[_0xc66e('0x37')](_0x4d4090);}catch(_0x1111fc){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x38'),_0x4d4090['origtransfereruniqueid']),_0x1111fc);}});ami['on']('varset',function(_0x1cfe46){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x3a'),_0x1cfe46[_0xc66e('0x1f')]),_0x1cfe46);queues[_0xc66e('0x3b')](_0x1cfe46);recordings[_0xc66e('0x3b')](_0x1cfe46);calls[_0xc66e('0x3b')](_0x1cfe46);dials[_0xc66e('0x3b')](_0x1cfe46);}catch(_0xc57fae){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')](_0xc66e('0x3a'),_0x1cfe46[_0xc66e('0x1f')]),_0xc57fae);}});ami['on'](_0xc66e('0x3c'),function(_0x245883){try{utils[_0xc66e('0x1d')](util['format'](_0xc66e('0x3d'),_0x245883[_0xc66e('0x1f')]),_0x245883);calls[_0xc66e('0x3c')](_0x245883);recordings[_0xc66e('0x3c')](_0x245883);dials[_0xc66e('0x3c')](_0x245883);}catch(_0xb22683){utils[_0xc66e('0x16')](util[_0xc66e('0x1a')]('[%s][index][newexten]',_0x245883[_0xc66e('0x1f')]),_0xb22683);}});ami['on'](_0xc66e('0x3e'),function(_0x5ca5d1){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')]('[%s][index][newchannel]',_0x5ca5d1[_0xc66e('0x1f')]),_0x5ca5d1);calls[_0xc66e('0x3e')](_0x5ca5d1);recordings['newchannel'](_0x5ca5d1);}catch(_0x243759){utils[_0xc66e('0x16')](util['format'](_0xc66e('0x3f'),_0x5ca5d1['uniqueid']),_0x243759);}});ami['on'](_0xc66e('0x40'),function(_0x26c6dd){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x41'),_0x26c6dd[_0xc66e('0x1f')]),_0x26c6dd);dials['dialbegin'](_0x26c6dd);}catch(_0x39e518){utils['error'](util['format'](_0xc66e('0x42'),_0x26c6dd[_0xc66e('0x1f')]),_0x39e518);}});ami['on'](_0xc66e('0x43'),function(_0x1d0df2){try{utils[_0xc66e('0x1d')](util[_0xc66e('0x1a')](_0xc66e('0x44'),_0x1d0df2[_0xc66e('0x1f')]),_0x1d0df2);dials[_0xc66e('0x43')](_0x1d0df2);}catch(_0x3ce209){utils[_0xc66e('0x16')](util['format'](_0xc66e('0x44'),_0x1d0df2['uniqueid']),_0x3ce209);}});}
\ No newline at end of file
+var _0x48b7=['fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','uniqueid','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','[%s][index][newexten]','newexten','newchannel','[%s][index][newchannel]','dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','production','port','asterisk','username','password','info','./agents.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x48b7,0xb1));var _0x748b=function(_0x2bda2b,_0xc5bb5d){_0x2bda2b=_0x2bda2b-0x0;var _0x50dbb2=_0x48b7[_0x2bda2b];return _0x50dbb2;};var AsteriskManager=require(_0x748b('0x0'));var config=require(_0x748b('0x1'));var utils=require(_0x748b('0x2'));var util=require(_0x748b('0x3'));var isXDREnabled=config['xdr']&&config[_0x748b('0x4')]['disabled']?!config[_0x748b('0x4')][_0x748b('0x5')]:!![];var isProduction=config['env']===_0x748b('0x6')||![];var isLocalAsterisk=config[_0x748b('0x4')]&&config[_0x748b('0x4')]['local']===!![]||![];var ami=new AsteriskManager(config['asterisk'][_0x748b('0x7')],config['asterisk']['ip'],config[_0x748b('0x8')][_0x748b('0x9')],config[_0x748b('0x8')][_0x748b('0xa')],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0x748b('0xb')]('XDR\x20DISABLED');}else if(!isProduction&&!isLocalAsterisk){utils[_0x748b('0xb')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0x748b('0xc'));var calls=require('./calls.controller');var queues=require('./queues.controller');var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require(_0x748b('0xd'));var transfers=require(_0x748b('0xe'));var core=require(_0x748b('0xf'));ami['on']('connect',core[_0x748b('0x10')]);ami['on'](_0x748b('0x11'),core['shutdown']);ami['on']('fullybooted',core[_0x748b('0x12')]);ami['on']('error',core[_0x748b('0x13')]);ami['on'](_0x748b('0x14'),core[_0x748b('0x14')]);ami['on'](_0x748b('0x15'),core[_0x748b('0x15')]);ami['on'](_0x748b('0x16'),function(_0x8cdbf2){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x19'),_0x8cdbf2[_0x748b('0x1a')]),_0x8cdbf2);members[_0x748b('0x16')](_0x8cdbf2);}catch(_0x389a2a){utils['error'](util[_0x748b('0x18')](_0x748b('0x19'),_0x8cdbf2[_0x748b('0x1a')]),_0x389a2a);}});ami['on']('agentcalled',function(_0x648128){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x1b'),_0x648128['uniqueid']),_0x648128);agents['agentcalled'](_0x648128);}catch(_0x2cff9e){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x1b'),_0x648128['uniqueid']),_0x2cff9e);}});ami['on'](_0x748b('0x1c'),function(_0x10cd24){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x1d'),_0x10cd24[_0x748b('0x1e')]),_0x10cd24);agents['agentringnoanswer'](_0x10cd24);}catch(_0x1b54e7){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x1d'),_0x10cd24[_0x748b('0x1e')]),_0x1b54e7);}});ami['on'](_0x748b('0x1f'),function(_0x2262ef){try{utils[_0x748b('0x17')](util[_0x748b('0x18')]('[%s][index][agentconnect]',_0x2262ef[_0x748b('0x1e')]),_0x2262ef);agents[_0x748b('0x1f')](_0x2262ef);queues[_0x748b('0x1f')](_0x2262ef);}catch(_0x4be33c){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x20'),_0x2262ef[_0x748b('0x1e')]),_0x4be33c);}});ami['on']('agentcomplete',function(_0x2bb3f6){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x21'),_0x2bb3f6[_0x748b('0x1e')]),_0x2bb3f6);agents[_0x748b('0x22')](_0x2bb3f6);queues[_0x748b('0x22')](_0x2bb3f6);members[_0x748b('0x22')](_0x2bb3f6);}catch(_0x5b07d0){utils['error'](util[_0x748b('0x18')](_0x748b('0x21'),_0x2bb3f6['uniqueid']),_0x5b07d0);}});ami['on'](_0x748b('0x23'),function(_0x4c22cc){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x24'),_0x4c22cc['uniqueid']),_0x4c22cc);agents[_0x748b('0x23')](_0x4c22cc);queues[_0x748b('0x23')](_0x4c22cc);}catch(_0x21d972){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x24'),_0x4c22cc['uniqueid']),_0x21d972);}});ami['on'](_0x748b('0x25'),function(_0x48fb6b){try{utils[_0x748b('0x17')](util['format']('[%s][index][queuecallerjoin]',_0x48fb6b[_0x748b('0x1e')]),_0x48fb6b);queues[_0x748b('0x25')](_0x48fb6b);recordings[_0x748b('0x25')](_0x48fb6b);}catch(_0x312d25){utils[_0x748b('0x13')](util['format'](_0x748b('0x26'),_0x48fb6b[_0x748b('0x1e')]),_0x312d25);}});ami['on'](_0x748b('0x27'),function(_0x20c3bb){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x28'),_0x20c3bb[_0x748b('0x1e')]),_0x20c3bb);queues[_0x748b('0x27')](_0x20c3bb);}catch(_0xfb92ad){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x28'),_0x20c3bb[_0x748b('0x1e')]),_0xfb92ad);}});ami['on'](_0x748b('0x29'),function(_0x2031be){try{utils['debug'](util[_0x748b('0x18')](_0x748b('0x2a'),_0x2031be['uniqueid']),_0x2031be);queues[_0x748b('0x29')](_0x2031be);calls[_0x748b('0x29')](_0x2031be);}catch(_0x5cbf28){utils['error'](util[_0x748b('0x18')](_0x748b('0x2a'),_0x2031be['uniqueid']),_0x5cbf28);}});ami['on'](_0x748b('0x2b'),function(_0x1e4502){try{utils[_0x748b('0x17')](util[_0x748b('0x18')]('[%s][index][musiconholdstop]',_0x1e4502['uniqueid']),_0x1e4502);queues[_0x748b('0x2b')](_0x1e4502);calls[_0x748b('0x2b')](_0x1e4502);}catch(_0x301625){utils['error'](util['format'](_0x748b('0x2c'),_0x1e4502['uniqueid']),_0x301625);}});ami['on']('newstate',function(_0x35497d){try{utils[_0x748b('0x17')](util['format'](_0x748b('0x2d'),_0x35497d[_0x748b('0x1e')]),_0x35497d);calls[_0x748b('0x2e')](_0x35497d);recordings[_0x748b('0x2e')](_0x35497d);}catch(_0x25e682){utils[_0x748b('0x13')](util[_0x748b('0x18')]('[%s][index][newstate]',_0x35497d[_0x748b('0x1e')]),_0x25e682);}});ami['on']('hangup',function(_0x49fa0e){try{utils[_0x748b('0x17')](util['format'](_0x748b('0x2f'),_0x49fa0e['uniqueid']),_0x49fa0e);calls[_0x748b('0x30')](_0x49fa0e);recordings['hangup'](_0x49fa0e);dials[_0x748b('0x30')](_0x49fa0e);agents[_0x748b('0x30')](_0x49fa0e);queues[_0x748b('0x30')](_0x49fa0e);}catch(_0x309f9e){utils[_0x748b('0x13')](util[_0x748b('0x18')]('[%s][index][hangup]',_0x49fa0e['uniqueid']),_0x309f9e);}});ami['on']('cdr',function(_0x4d5cdc){try{utils[_0x748b('0x17')](util[_0x748b('0x18')]('[%s][index][cdr]',_0x4d5cdc['uniqueid']),_0x4d5cdc);members[_0x748b('0x31')](_0x4d5cdc);}catch(_0x20ec06){utils['error'](util[_0x748b('0x18')](_0x748b('0x32'),_0x4d5cdc[_0x748b('0x1e')]),_0x20ec06);}});ami['on']('blindtransfer',function(_0x1ab0d3){try{utils['debug'](util['format'](_0x748b('0x33'),_0x1ab0d3[_0x748b('0x1e')]),_0x1ab0d3);queues['blindtransfer'](_0x1ab0d3);agents[_0x748b('0x34')](_0x1ab0d3);transfers[_0x748b('0x34')](_0x1ab0d3);recordings[_0x748b('0x34')](_0x1ab0d3);}catch(_0x4623a4){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x33'),_0x1ab0d3[_0x748b('0x1e')]),_0x4623a4);}});ami['on'](_0x748b('0x35'),function(_0x29ceda){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x36'),_0x29ceda[_0x748b('0x37')]),_0x29ceda);queues[_0x748b('0x35')](_0x29ceda);transfers[_0x748b('0x35')](_0x29ceda);agents[_0x748b('0x35')](_0x29ceda);calls[_0x748b('0x35')](_0x29ceda);}catch(_0x1722c4){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x36'),_0x29ceda[_0x748b('0x37')]),_0x1722c4);}});ami['on'](_0x748b('0x38'),function(_0x56f0cc){try{utils[_0x748b('0x17')](util['format']('[%s][index][varset]',_0x56f0cc[_0x748b('0x1e')]),_0x56f0cc);queues[_0x748b('0x38')](_0x56f0cc);recordings[_0x748b('0x38')](_0x56f0cc);calls[_0x748b('0x38')](_0x56f0cc);dials['varset'](_0x56f0cc);}catch(_0x4abe0f){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x39'),_0x56f0cc[_0x748b('0x1e')]),_0x4abe0f);}});ami['on']('newexten',function(_0x5b40c9){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x3a'),_0x5b40c9[_0x748b('0x1e')]),_0x5b40c9);calls[_0x748b('0x3b')](_0x5b40c9);recordings[_0x748b('0x3b')](_0x5b40c9);dials[_0x748b('0x3b')](_0x5b40c9);}catch(_0x37fb3c){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x3a'),_0x5b40c9[_0x748b('0x1e')]),_0x37fb3c);}});ami['on'](_0x748b('0x3c'),function(_0x4bd59f){try{utils[_0x748b('0x17')](util['format'](_0x748b('0x3d'),_0x4bd59f[_0x748b('0x1e')]),_0x4bd59f);calls[_0x748b('0x3c')](_0x4bd59f);recordings[_0x748b('0x3c')](_0x4bd59f);}catch(_0x13a120){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x3d'),_0x4bd59f[_0x748b('0x1e')]),_0x13a120);}});ami['on'](_0x748b('0x3e'),function(_0x3ec931){try{utils[_0x748b('0x17')](util[_0x748b('0x18')]('[%s][index][dialbegin]',_0x3ec931[_0x748b('0x1e')]),_0x3ec931);dials[_0x748b('0x3e')](_0x3ec931);}catch(_0x219f5a){utils[_0x748b('0x13')](util[_0x748b('0x18')]('[%s]dialbegin',_0x3ec931[_0x748b('0x1e')]),_0x219f5a);}});ami['on'](_0x748b('0x3f'),function(_0x1ee13e){try{utils[_0x748b('0x17')](util[_0x748b('0x18')](_0x748b('0x40'),_0x1ee13e['uniqueid']),_0x1ee13e);dials[_0x748b('0x3f')](_0x1ee13e);}catch(_0x2a0ea5){utils[_0x748b('0x13')](util[_0x748b('0x18')](_0x748b('0x40'),_0x1ee13e['uniqueid']),_0x2a0ea5);}});}
\ No newline at end of file
index 6719d82..15eee62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a1=['Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','membername','then','name','internal','request','getUserByName','split','CreateMemberReport','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','uniqueid','state','BUSY','voice','TALKING','now','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','type','source','destination','lodash','util','./utils'];(function(_0x697af3,_0xb78e5a){var _0x1bd657=function(_0x5ce9a5){while(--_0x5ce9a5){_0x697af3['push'](_0x697af3['shift']());}};_0x1bd657(++_0xb78e5a);}(_0x60a1,0x9f));var _0x160a=function(_0x299074,_0x3b7d84){_0x299074=_0x299074-0x0;var _0x5f2aba=_0x60a1[_0x299074];return _0x5f2aba;};'use strict';var _=require(_0x160a('0x0'));var util=require(_0x160a('0x1'));var utils=require(_0x160a('0x2'));var members={};var exclude=[_0x160a('0x3'),_0x160a('0x4')];function writeDB(_0x3c3f28){utils[_0x160a('0x5')](util[_0x160a('0x6')](_0x160a('0x7'),_0x3c3f28['uniqueid'],_0x3c3f28[_0x160a('0x8')],_0x3c3f28[_0x160a('0x9')],_0x3c3f28[_0x160a('0xa')],_0x3c3f28[_0x160a('0xb')],_0x3c3f28['type']));if(_0x3c3f28['interface']){utils['getUserByInterface'](_0x3c3f28[_0x160a('0x8')])[_0x160a('0xc')](function(_0x47aa53){if(_0x47aa53){_0x3c3f28[_0x160a('0xb')]=_0x47aa53[_0x160a('0xd')];_0x3c3f28[_0x160a('0xe')]=_0x47aa53[_0x160a('0xe')];utils[_0x160a('0xf')]('CreateMemberReport',_0x3c3f28);}else{utils[_0x160a('0x10')](_0x3c3f28['interface'][_0x160a('0x11')]('/')[0x1])['then'](function(_0x8ec851){if(_0x8ec851){_0x3c3f28['membername']=_0x8ec851['name'];_0x3c3f28[_0x160a('0xe')]=_0x8ec851[_0x160a('0xe')];utils['request'](_0x160a('0x12'),_0x3c3f28);}});}})[_0x160a('0x13')](function(_0x49a342){utils[_0x160a('0x14')](util[_0x160a('0x6')](_0x160a('0x15'),_0x3c3f28['uniqueid']),_0x49a342);});}delete members[_0x3c3f28[_0x160a('0x8')]];}function startsWith(_0x3245da,_0x128a1f){return _[_0x160a('0x16')](_0x3245da,function(_0x40ba10){return _[_0x160a('0x17')](_0x128a1f,_0x40ba10);});}exports[_0x160a('0x18')]=function(_0x41bb89){try{utils[_0x160a('0x19')](util['format'](_0x160a('0x1a'),members[_0x41bb89[_0x160a('0x1b')]]?members[_0x41bb89[_0x160a('0x1b')]][_0x160a('0x1c')]:_0x41bb89[_0x160a('0x1b')]),_0x41bb89);utils['info'](util[_0x160a('0x6')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x41bb89[_0x160a('0x1b')]]?members[_0x41bb89[_0x160a('0x1b')]][_0x160a('0x1c')]:_0x41bb89[_0x160a('0x1b')],_0x41bb89[_0x160a('0x1d')],_0x41bb89['device']));switch(_0x41bb89[_0x160a('0x1d')]){case'INUSE':case _0x160a('0x1e'):if(!startsWith(exclude,_0x41bb89[_0x160a('0x1b')])){members[_0x41bb89[_0x160a('0x1b')]]={'channel':_0x160a('0x1f'),'interface':_0x41bb89[_0x160a('0x1b')],'type':_0x160a('0x20'),'enterAt':utils[_0x160a('0x21')](),'role':'agent'};}break;case _0x160a('0x22'):if(!_[_0x160a('0x23')](members[_0x41bb89['device']])){members[_0x41bb89['device']][_0x160a('0x24')]=utils[_0x160a('0x21')]();members[_0x41bb89['device']][_0x160a('0x25')]=utils[_0x160a('0x26')](members[_0x41bb89[_0x160a('0x1b')]][_0x160a('0x24')],members[_0x41bb89['device']][_0x160a('0x27')]);if(members[_0x41bb89[_0x160a('0x1b')]][_0x160a('0x1c')]){writeDB(members[_0x41bb89['device']]);}}break;default:break;}}catch(_0x464aa2){utils[_0x160a('0x14')](util[_0x160a('0x6')](_0x160a('0x1a'),members[_0x41bb89[_0x160a('0x1b')]]?members[_0x41bb89[_0x160a('0x1b')]][_0x160a('0x1c')]:_0x41bb89['device']),_0x464aa2);}};exports[_0x160a('0x28')]=function(_0x4bb436){try{if(!_[_0x160a('0x23')](members[_0x4bb436[_0x160a('0x8')]])){utils['debug'](util[_0x160a('0x6')]('[%s][members][agentcomplete]',_0x4bb436[_0x160a('0x1c')]),_0x4bb436);utils['info'](util[_0x160a('0x6')](_0x160a('0x29'),_0x4bb436[_0x160a('0x1c')],_0x4bb436[_0x160a('0x8')],_0x4bb436[_0x160a('0x2a')]));members[_0x4bb436[_0x160a('0x8')]]=_[_0x160a('0x2b')](members[_0x4bb436['interface']],{'data4':_0x4bb436[_0x160a('0x2a')],'uniqueid':_0x4bb436[_0x160a('0x1c')]});}}catch(_0x139dbb){utils[_0x160a('0x14')](util['format'](_0x160a('0x2c'),_0x4bb436[_0x160a('0x1c')]),_0x139dbb);}};exports[_0x160a('0x2d')]=function(_0x2e1aee){try{utils[_0x160a('0x19')](util[_0x160a('0x6')](_0x160a('0x2e'),_0x2e1aee[_0x160a('0x1c')]),_0x2e1aee);if(_0x2e1aee['channel']){var _0x29874b=_0x2e1aee[_0x160a('0x9')]['split']('-')[0x0];if(!_[_0x160a('0x23')](members[_0x29874b])){members[_0x29874b]=_[_0x160a('0x2b')](members[_0x29874b],{'data1':members[_0x29874b][_0x160a('0x2f')]||_0x2e1aee['type'],'data2':members[_0x29874b][_0x160a('0xa')]||_0x2e1aee['source'],'data3':members[_0x29874b][_0x160a('0x30')]||_0x2e1aee['destination'],'uniqueid':members[_0x29874b]['uniqueid']||_0x2e1aee[_0x160a('0x1c')]});utils[_0x160a('0x5')](util[_0x160a('0x6')](_0x160a('0x31'),_0x2e1aee['uniqueid'],members[_0x29874b][_0x160a('0x2f')],members[_0x29874b][_0x160a('0xa')],members[_0x29874b]['data3']));if(members[_0x29874b][_0x160a('0x24')]){writeDB(members[_0x29874b]);}}}if(_0x2e1aee[_0x160a('0x32')]){var _0x19a408=_0x2e1aee[_0x160a('0x32')][_0x160a('0x11')]('-')[0x0];if(!_['isNil'](members[_0x19a408])){members[_0x19a408]=_[_0x160a('0x2b')](members[_0x19a408],{'data1':members[_0x19a408]['data1']||_0x2e1aee[_0x160a('0x33')],'data2':members[_0x19a408]['data2']||_0x2e1aee[_0x160a('0x34')],'data3':members[_0x19a408][_0x160a('0x30')]||_0x2e1aee[_0x160a('0x35')],'uniqueid':members[_0x19a408][_0x160a('0x1c')]||_0x2e1aee['uniqueid']});utils[_0x160a('0x5')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x2e1aee[_0x160a('0x1c')],members[_0x19a408][_0x160a('0x2f')],members[_0x19a408]['data2'],members[_0x19a408][_0x160a('0x30')]));if(members[_0x19a408][_0x160a('0x24')]){writeDB(members[_0x19a408]);}}}}catch(_0x27605f){utils['error'](util[_0x160a('0x6')](_0x160a('0x2e'),_0x2e1aee[_0x160a('0x1c')]),_0x27605f);}};
\ No newline at end of file
+var _0x5ce1=['debug','[%s][members][devicestatechange]','device','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','now','agent','isNil','exitAt','duration','enterAt','error','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data3','destination','data1','destinationchannel','source','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','./utils','Local/_attended@transfer','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','internal','request','getUserByName','split','name','catch','some','startsWith','devicestatechange'];(function(_0x1063e5,_0x4d0ed2){var _0x55809d=function(_0x1badc9){while(--_0x1badc9){_0x1063e5['push'](_0x1063e5['shift']());}};_0x55809d(++_0x4d0ed2);}(_0x5ce1,0x1e7));var _0x15ce=function(_0x415084,_0x4ff2b0){_0x415084=_0x415084-0x0;var _0x53e9e0=_0x5ce1[_0x415084];return _0x53e9e0;};'use strict';var _=require(_0x15ce('0x0'));var util=require(_0x15ce('0x1'));var utils=require(_0x15ce('0x2'));var members={};var exclude=[_0x15ce('0x3'),_0x15ce('0x4')];function writeDB(_0x26bbee){utils['info'](util[_0x15ce('0x5')](_0x15ce('0x6'),_0x26bbee[_0x15ce('0x7')],_0x26bbee[_0x15ce('0x8')],_0x26bbee[_0x15ce('0x9')],_0x26bbee[_0x15ce('0xa')],_0x26bbee[_0x15ce('0xb')],_0x26bbee[_0x15ce('0xc')]));if(_0x26bbee[_0x15ce('0x8')]){utils['getUserByInterface'](_0x26bbee[_0x15ce('0x8')])[_0x15ce('0xd')](function(_0x49d81d){if(_0x49d81d){_0x26bbee[_0x15ce('0xb')]=_0x49d81d['name'];_0x26bbee['internal']=_0x49d81d[_0x15ce('0xe')];utils[_0x15ce('0xf')]('CreateMemberReport',_0x26bbee);}else{utils[_0x15ce('0x10')](_0x26bbee[_0x15ce('0x8')][_0x15ce('0x11')]('/')[0x1])[_0x15ce('0xd')](function(_0x1f42f6){if(_0x1f42f6){_0x26bbee['membername']=_0x1f42f6[_0x15ce('0x12')];_0x26bbee[_0x15ce('0xe')]=_0x1f42f6[_0x15ce('0xe')];utils[_0x15ce('0xf')]('CreateMemberReport',_0x26bbee);}});}})[_0x15ce('0x13')](function(_0x4b8273){utils['error'](util[_0x15ce('0x5')]('[%s][members][writeDB]',_0x26bbee['uniqueid']),_0x4b8273);});}delete members[_0x26bbee[_0x15ce('0x8')]];}function startsWith(_0x274968,_0x4cfcbf){return _[_0x15ce('0x14')](_0x274968,function(_0x4dd91c){return _[_0x15ce('0x15')](_0x4cfcbf,_0x4dd91c);});}exports[_0x15ce('0x16')]=function(_0x2a2bd2){try{utils[_0x15ce('0x17')](util[_0x15ce('0x5')](_0x15ce('0x18'),members[_0x2a2bd2[_0x15ce('0x19')]]?members[_0x2a2bd2['device']][_0x15ce('0x7')]:_0x2a2bd2['device']),_0x2a2bd2);utils[_0x15ce('0x1a')](util[_0x15ce('0x5')](_0x15ce('0x1b'),members[_0x2a2bd2['device']]?members[_0x2a2bd2['device']]['uniqueid']:_0x2a2bd2[_0x15ce('0x19')],_0x2a2bd2[_0x15ce('0x1c')],_0x2a2bd2[_0x15ce('0x19')]));switch(_0x2a2bd2[_0x15ce('0x1c')]){case _0x15ce('0x1d'):case _0x15ce('0x1e'):if(!startsWith(exclude,_0x2a2bd2[_0x15ce('0x19')])){members[_0x2a2bd2[_0x15ce('0x19')]]={'channel':_0x15ce('0x1f'),'interface':_0x2a2bd2[_0x15ce('0x19')],'type':'TALKING','enterAt':utils[_0x15ce('0x20')](),'role':_0x15ce('0x21')};}break;case'NOT_INUSE':if(!_[_0x15ce('0x22')](members[_0x2a2bd2[_0x15ce('0x19')]])){members[_0x2a2bd2[_0x15ce('0x19')]][_0x15ce('0x23')]=utils['now']();members[_0x2a2bd2[_0x15ce('0x19')]][_0x15ce('0x24')]=utils['diffTime'](members[_0x2a2bd2['device']][_0x15ce('0x23')],members[_0x2a2bd2[_0x15ce('0x19')]][_0x15ce('0x25')]);if(members[_0x2a2bd2[_0x15ce('0x19')]][_0x15ce('0x7')]){writeDB(members[_0x2a2bd2[_0x15ce('0x19')]]);}}break;default:break;}}catch(_0x163c63){utils[_0x15ce('0x26')](util[_0x15ce('0x5')](_0x15ce('0x18'),members[_0x2a2bd2['device']]?members[_0x2a2bd2[_0x15ce('0x19')]]['uniqueid']:_0x2a2bd2[_0x15ce('0x19')]),_0x163c63);}};exports['agentcomplete']=function(_0x1077d4){try{if(!_[_0x15ce('0x22')](members[_0x1077d4[_0x15ce('0x8')]])){utils[_0x15ce('0x17')](util[_0x15ce('0x5')]('[%s][members][agentcomplete]',_0x1077d4[_0x15ce('0x7')]),_0x1077d4);utils[_0x15ce('0x1a')](util[_0x15ce('0x5')](_0x15ce('0x27'),_0x1077d4[_0x15ce('0x7')],_0x1077d4[_0x15ce('0x8')],_0x1077d4[_0x15ce('0x28')]));members[_0x1077d4[_0x15ce('0x8')]]=_[_0x15ce('0x29')](members[_0x1077d4['interface']],{'data4':_0x1077d4['queue'],'uniqueid':_0x1077d4[_0x15ce('0x7')]});}}catch(_0x1b3708){utils[_0x15ce('0x26')](util[_0x15ce('0x5')](_0x15ce('0x2a'),_0x1077d4[_0x15ce('0x7')]),_0x1b3708);}};exports[_0x15ce('0x2b')]=function(_0x31f68e){try{utils['debug'](util[_0x15ce('0x5')](_0x15ce('0x2c'),_0x31f68e[_0x15ce('0x7')]),_0x31f68e);if(_0x31f68e[_0x15ce('0x9')]){var _0x42bf07=_0x31f68e['channel'][_0x15ce('0x11')]('-')[0x0];if(!_['isNil'](members[_0x42bf07])){members[_0x42bf07]=_[_0x15ce('0x29')](members[_0x42bf07],{'data1':members[_0x42bf07]['data1']||_0x31f68e[_0x15ce('0xc')],'data2':members[_0x42bf07][_0x15ce('0xa')]||_0x31f68e['source'],'data3':members[_0x42bf07][_0x15ce('0x2d')]||_0x31f68e[_0x15ce('0x2e')],'uniqueid':members[_0x42bf07][_0x15ce('0x7')]||_0x31f68e[_0x15ce('0x7')]});utils['info'](util[_0x15ce('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x31f68e['uniqueid'],members[_0x42bf07][_0x15ce('0x2f')],members[_0x42bf07]['data2'],members[_0x42bf07][_0x15ce('0x2d')]));if(members[_0x42bf07][_0x15ce('0x23')]){writeDB(members[_0x42bf07]);}}}if(_0x31f68e[_0x15ce('0x30')]){var _0x37509d=_0x31f68e[_0x15ce('0x30')][_0x15ce('0x11')]('-')[0x0];if(!_[_0x15ce('0x22')](members[_0x37509d])){members[_0x37509d]=_[_0x15ce('0x29')](members[_0x37509d],{'data1':members[_0x37509d][_0x15ce('0x2f')]||_0x31f68e['type'],'data2':members[_0x37509d][_0x15ce('0xa')]||_0x31f68e[_0x15ce('0x31')],'data3':members[_0x37509d][_0x15ce('0x2d')]||_0x31f68e[_0x15ce('0x2e')],'uniqueid':members[_0x37509d]['uniqueid']||_0x31f68e[_0x15ce('0x7')]});utils[_0x15ce('0x1a')](util['format'](_0x15ce('0x32'),_0x31f68e[_0x15ce('0x7')],members[_0x37509d][_0x15ce('0x2f')],members[_0x37509d][_0x15ce('0xa')],members[_0x37509d][_0x15ce('0x2d')]));if(members[_0x37509d][_0x15ce('0x23')]){writeDB(members[_0x37509d]);}}}}catch(_0x9cdca1){utils[_0x15ce('0x26')](util[_0x15ce('0x5')](_0x15ce('0x2c'),_0x31f68e[_0x15ce('0x7')]),_0x9cdca1);}};
\ No newline at end of file
index f1e78be..2725bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0b=['secondtransfererlinkedid','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','transfertargetuniqueid','calleridname','holdtime','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','util','format','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','type','CreateVoiceQueueReport','request','transfereduniqueid','[%s][queues][queuecallerjoin]','info','position','assign','now','error','hangup','isNil','debug','queuecallerleaveAt','queuecallerexit','queuecallercomplete','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][hangup]','[%s][queues][varset]','variable','queuestatus','value','CONTINUE','queuecallerabandon','queuecallerabandonAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','diffTime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','assigned','queuecallercompleteAt','transfer','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','origtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER'];(function(_0x2c7eb8,_0x13b430){var _0x3d8060=function(_0x3dfd4e){while(--_0x3dfd4e){_0x2c7eb8['push'](_0x2c7eb8['shift']());}};_0x3d8060(++_0x13b430);}(_0x1c0b,0x7e));var _0xb1c0=function(_0x1574ec,_0x2201fc){_0x1574ec=_0x1574ec-0x0;var _0x47f1ba=_0x1c0b[_0x1574ec];return _0x47f1ba;};'use strict';var _=require(_0xb1c0('0x0'));var util=require(_0xb1c0('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x33823f){utils['info'](util[_0xb1c0('0x2')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x33823f[_0xb1c0('0x3')],_0x33823f['channel'],_0x33823f[_0xb1c0('0x4')],_0x33823f[_0xb1c0('0x5')],_0x33823f[_0xb1c0('0x6')],_0x33823f[_0xb1c0('0x7')],_0x33823f[_0xb1c0('0x8')]));if(_0x33823f['queue']){utils['getVoiceQueueByName'](_0x33823f[_0xb1c0('0x4')])['then'](function(_0x187dec){if(_0x187dec){_0x33823f[_0xb1c0('0x9')]=_0x187dec[_0xb1c0('0x9')];}utils['request'](_0xb1c0('0xa'),_0x33823f);});}else{utils[_0xb1c0('0xb')](_0xb1c0('0xa'),_0x33823f);}if(_0x33823f[_0xb1c0('0xc')]){delete queues[_0x33823f[_0xb1c0('0xc')]];}else{delete queues[_0x33823f[_0xb1c0('0x3')]];}}exports['queuecallerjoin']=function(_0x4a99ca){try{utils['debug'](util[_0xb1c0('0x2')](_0xb1c0('0xd'),_0x4a99ca[_0xb1c0('0x3')]),_0x4a99ca);utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x4a99ca['uniqueid'],_0x4a99ca[_0xb1c0('0x4')],_0x4a99ca[_0xb1c0('0xf')]));queues[_0x4a99ca[_0xb1c0('0x3')]]=_[_0xb1c0('0x10')](_0x4a99ca,{'originalposition':_0x4a99ca[_0xb1c0('0xf')],'queuecallerjoinAt':utils[_0xb1c0('0x11')](),'mohtime':0x0});}catch(_0x15556e){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')]('[%s][queues][queuecallerjoin]',_0x4a99ca[_0xb1c0('0x3')]),_0x15556e);}};exports[_0xb1c0('0x13')]=function(_0x26a9ac){try{if(!_[_0xb1c0('0x14')](queues[_0x26a9ac['uniqueid']])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')]('[%s][queues][hangup]',_0x26a9ac[_0xb1c0('0x3')]),_0x26a9ac);if(queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0x16')]){if(!queues[_0x26a9ac[_0xb1c0('0x3')]]['queuecallerabandon']&&!queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0x17')]){queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0x18')]=!![];queues[_0x26a9ac[_0xb1c0('0x3')]]['queuecallercompleteAt']=utils[_0xb1c0('0x11')]();queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0x8')]='COMPLETEDBYAGENT';}utils['info'](util[_0xb1c0('0x2')](_0xb1c0('0x19'),_0x26a9ac[_0xb1c0('0x3')],queues[_0x26a9ac['uniqueid']][_0xb1c0('0x1a')],queues[_0x26a9ac[_0xb1c0('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x26a9ac[_0xb1c0('0x3')]]);}else if(queues[_0x26a9ac[_0xb1c0('0x3')]]['transfereduniqueid']){utils['info'](util[_0xb1c0('0x2')](_0xb1c0('0x1b'),_0x26a9ac[_0xb1c0('0x3')],queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0x1a')],queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0xc')]));queues[queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0xc')]]=queues[_0x26a9ac[_0xb1c0('0x3')]];queues[queues[_0x26a9ac[_0xb1c0('0x3')]][_0xb1c0('0xc')]][_0xb1c0('0x1c')]=0x2;delete queues[_0x26a9ac['uniqueid']];}}}catch(_0x41d8a0){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x1d'),_0x26a9ac[_0xb1c0('0x3')]),_0x41d8a0);}};exports['varset']=function(_0x4ece05){try{utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')](_0xb1c0('0x1e'),_0x4ece05[_0xb1c0('0x3')]),_0x4ece05);if(!_['isNil'](_0x4ece05[_0xb1c0('0x1f')][_0xb1c0('0x20')])&&_0x4ece05[_0xb1c0('0x21')]['toUpperCase']()!==_0xb1c0('0x22')){if(!_[_0xb1c0('0x14')](queues[_0x4ece05[_0xb1c0('0x3')]])){queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x24')]=null;queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x17')]=!![];queues[_0x4ece05[_0xb1c0('0x3')]]['queuecallerexitAt']=utils['now']();queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x8')]=_0x4ece05[_0xb1c0('0x21')][_0xb1c0('0x25')]();utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x26'),_0x4ece05['uniqueid'],queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x1a')],_0x4ece05[_0xb1c0('0x21')],queues[_0x4ece05[_0xb1c0('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x4ece05[_0xb1c0('0x3')]]);}}else if(!_[_0xb1c0('0x14')](_0x4ece05[_0xb1c0('0x1f')][_0xb1c0('0x27')])){if(!_[_0xb1c0('0x14')](queues[_0x4ece05[_0xb1c0('0x3')]])&&!queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x23')]){queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x4ece05['uniqueid']][_0xb1c0('0x24')]=null;queues[_0x4ece05['uniqueid']][_0xb1c0('0x17')]=!![];queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x28')]=utils[_0xb1c0('0x11')]();queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x8')]=_0xb1c0('0x29');utils[_0xb1c0('0xe')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x4ece05['uniqueid'],queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x1a')],_0x4ece05[_0xb1c0('0x21')],queues[_0x4ece05[_0xb1c0('0x3')]][_0xb1c0('0x8')]));}}}catch(_0x2ede3a){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x1e'),_0x4ece05[_0xb1c0('0x3')]),_0x2ede3a);}};exports[_0xb1c0('0x23')]=function(_0x596a6b){try{if(!_[_0xb1c0('0x14')](queues[_0x596a6b[_0xb1c0('0x3')]])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')](_0xb1c0('0x2a'),_0x596a6b[_0xb1c0('0x3')]),_0x596a6b);queues[_0x596a6b[_0xb1c0('0x3')]]['queuecallerexit']=![];queues[_0x596a6b[_0xb1c0('0x3')]]['queuecallerexitAt']=null;queues[_0x596a6b[_0xb1c0('0x3')]][_0xb1c0('0x23')]=!![];queues[_0x596a6b['uniqueid']][_0xb1c0('0x24')]=utils['now']();queues[_0x596a6b[_0xb1c0('0x3')]][_0xb1c0('0x8')]=_0xb1c0('0x2b');utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x2c'),_0x596a6b[_0xb1c0('0x3')],queues[_0x596a6b[_0xb1c0('0x3')]][_0xb1c0('0x1a')],queues[_0x596a6b[_0xb1c0('0x3')]][_0xb1c0('0x8')]));}}catch(_0x19f12b){utils['error'](util[_0xb1c0('0x2')]('[%s][queues][queuecallerabandon]',_0x596a6b[_0xb1c0('0x3')]),_0x19f12b);}};exports[_0xb1c0('0x2d')]=function(_0x2687c0){try{if(!_[_0xb1c0('0x14')](queues[_0x2687c0[_0xb1c0('0x3')]])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')](_0xb1c0('0x2e'),_0x2687c0['uniqueid']),_0x2687c0);utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x2f'),_0x2687c0[_0xb1c0('0x3')],queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x1a')],_0x2687c0['connectedlinenum'],_0x2687c0[_0xb1c0('0x30')]));queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x2d')]=!![];queues[_0x2687c0[_0xb1c0('0x3')]]['queuecallerleaveAt']=utils['now']();queues[_0x2687c0[_0xb1c0('0x3')]]['holdtime']=utils[_0xb1c0('0x31')](queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x16')],queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x32')]);queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0xf')]=_0x2687c0[_0xb1c0('0xf')];queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x33')]=_0x2687c0[_0xb1c0('0x33')];queues[_0x2687c0[_0xb1c0('0x3')]][_0xb1c0('0x34')]=_0x2687c0[_0xb1c0('0x34')];queues[_0x2687c0[_0xb1c0('0x3')]]['connectedlinename']=_0x2687c0[_0xb1c0('0x30')];}}catch(_0x2c7f84){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x2e'),_0x2687c0['uniqueid']),_0x2c7f84);}};exports[_0xb1c0('0x35')]=function(_0x1107a9){try{if(!_[_0xb1c0('0x14')](queues[_0x1107a9['uniqueid']])){utils['debug'](util[_0xb1c0('0x2')](_0xb1c0('0x36'),_0x1107a9[_0xb1c0('0x3')]),_0x1107a9);utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x37'),_0x1107a9['uniqueid'],queues[_0x1107a9[_0xb1c0('0x3')]][_0xb1c0('0x1a')],_0x1107a9[_0xb1c0('0x38')],_0x1107a9[_0xb1c0('0x39')]));queues[_0x1107a9[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x1107a9[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x1107a9['uniqueid']]['queuecallerabandonAt']=null;queues[_0x1107a9[_0xb1c0('0x3')]]['queuecallerexit']=![];queues[_0x1107a9[_0xb1c0('0x3')]][_0xb1c0('0x8')]=null;queues[_0x1107a9[_0xb1c0('0x3')]]['queuecallerexitAt']=null;queues[_0x1107a9[_0xb1c0('0x3')]]['assigned']=!![];queues[_0x1107a9['uniqueid']][_0xb1c0('0x7')]=_0x1107a9[_0xb1c0('0x39')];queues[_0x1107a9[_0xb1c0('0x3')]][_0xb1c0('0x5')]=_0x1107a9['membername'];}}catch(_0x71c585){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x36'),_0x1107a9[_0xb1c0('0x3')]),_0x71c585);}};exports[_0xb1c0('0x3a')]=function(_0x4ca60d){try{if(!_[_0xb1c0('0x14')](queues[_0x4ca60d['uniqueid']])){if(queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x16')]){utils['debug'](util[_0xb1c0('0x2')](_0xb1c0('0x3b'),_0x4ca60d[_0xb1c0('0x3')]),_0x4ca60d);queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x23')]=![];queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x24')]=null;queues[_0x4ca60d['uniqueid']][_0xb1c0('0x17')]=![];queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x28')]=null;queues[_0x4ca60d['uniqueid']][_0xb1c0('0x3c')]=!![];queues[_0x4ca60d['uniqueid']]['lastAssignedTo']=_0x4ca60d[_0xb1c0('0x38')];queues[_0x4ca60d['uniqueid']][_0xb1c0('0x18')]=!![];queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x3d')]=utils[_0xb1c0('0x11')]();if(_0x4ca60d['reason']==_0xb1c0('0x3e')){if(!queues[_0x4ca60d['uniqueid']][_0xb1c0('0x3e')]){queues[_0x4ca60d[_0xb1c0('0x3')]]['queuecallerexitreason']='TRANSFER';}}else{queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x8')]=_0xb1c0('0x3f')+_0x4ca60d[_0xb1c0('0x40')]['toUpperCase']();}utils[_0xb1c0('0xe')](util['format'](_0xb1c0('0x41'),_0x4ca60d['uniqueid'],queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x1a')],_0x4ca60d[_0xb1c0('0x38')],queues[_0x4ca60d[_0xb1c0('0x3')]][_0xb1c0('0x8')]));writeDB(queues[_0x4ca60d[_0xb1c0('0x3')]]);}}}catch(_0x2aa419){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x3b'),_0x4ca60d['uniqueid']),_0x2aa419);}};exports[_0xb1c0('0x42')]=function(_0x460820){try{if(!_[_0xb1c0('0x14')](queues[_0x460820['transfereeuniqueid']])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')]('[%s][queues][blindtransfer]',_0x460820[_0xb1c0('0x3')]),_0x460820);queues[_0x460820[_0xb1c0('0x43')]][_0xb1c0('0x3e')]=!![];queues[_0x460820['transfereeuniqueid']][_0xb1c0('0x44')]=_0xb1c0('0x45');queues[_0x460820['transfereeuniqueid']][_0xb1c0('0x46')]=_0x460820[_0xb1c0('0x47')];queues[_0x460820[_0xb1c0('0x43')]][_0xb1c0('0x48')]=_0x460820[_0xb1c0('0x43')];queues[_0x460820[_0xb1c0('0x43')]][_0xb1c0('0x8')]=_0xb1c0('0x49');utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x4a'),_0x460820[_0xb1c0('0x3')],queues[_0x460820[_0xb1c0('0x43')]][_0xb1c0('0x1a')],_0x460820[_0xb1c0('0x43')],_0x460820[_0xb1c0('0x47')]));}}catch(_0x28e3c7){utils['error'](util[_0xb1c0('0x2')](_0xb1c0('0x4b'),_0x460820[_0xb1c0('0x3')]),_0x28e3c7);}};exports['attendedtransfer']=function(_0x995877){try{utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')]('[%s][queues][attendedtransfer]',_0x995877[_0xb1c0('0x4c')]),_0x995877);if(_0x995877[_0xb1c0('0x4c')]==_0x995877['origtransfererlinkedid']){if(!_[_0xb1c0('0x14')](queues[_0x995877['secondtransfererlinkedid']])){utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x4d'),_0x995877[_0xb1c0('0x4c')],queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x1a')],_0x995877[_0xb1c0('0x4f')]));queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x3e')]=!![];queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x44')]=_0xb1c0('0x50');queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x46')]=_0x995877[_0xb1c0('0x4f')];queues[_0x995877['secondtransfererlinkedid']][_0xb1c0('0x48')]=_0x995877[_0xb1c0('0x4c')];queues[_0x995877[_0xb1c0('0x4e')]]['queuecallerexitreason']=_0xb1c0('0x51');}if(!_[_0xb1c0('0x14')](queues[_0x995877[_0xb1c0('0x52')]])){if(_0x995877[_0xb1c0('0x53')]&&queues[_0x995877[_0xb1c0('0x53')]]){queues[_0x995877[_0xb1c0('0x53')]][_0xb1c0('0x1c')]=0x1;queues[_0x995877[_0xb1c0('0x43')]]=_['clone'](queues[_0x995877[_0xb1c0('0x53')]]);queues[_0x995877[_0xb1c0('0x43')]]['transfereduniqueid']=_0x995877[_0xb1c0('0x54')];queues[_0x995877[_0xb1c0('0x43')]][_0xb1c0('0x1c')]=0x2;queues[_0x995877['transfereeuniqueid']][_0xb1c0('0x6')]=queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x6')];queues[_0x995877[_0xb1c0('0x43')]][_0xb1c0('0x55')]=queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x55')];queues[_0x995877['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0xb1c0('0x11')]();queues[_0x995877[_0xb1c0('0x43')]][_0xb1c0('0x16')]=utils[_0xb1c0('0x11')]();queues[_0x995877['transfereeuniqueid']][_0xb1c0('0x56')]=0x0;queues[_0x995877[_0xb1c0('0x43')]][_0xb1c0('0x57')]=0x0;utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x58'),_0x995877[_0xb1c0('0x4c')],queues[_0x995877['transfereeuniqueid']][_0xb1c0('0x1a')],queues[_0x995877[_0xb1c0('0x43')]]['calleridnum'],queues[_0x995877[_0xb1c0('0x43')]][_0xb1c0('0x55')]));}else{utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x59'),_0x995877[_0xb1c0('0x4c')],queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x1a')],_0x995877[_0xb1c0('0x4e')]));queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0xc')]=_0x995877[_0xb1c0('0x4e')];}}}else if(_0x995877[_0xb1c0('0x5a')]==_0x995877['secondtransfererlinkedid']){if(!_[_0xb1c0('0x14')](queues[_0x995877['origtransfererlinkedid']])){utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x5b'),_0x995877['origtransfereruniqueid'],queues[_0x995877['origtransfererlinkedid']]['name'],_0x995877[_0xb1c0('0x5a')],_0x995877[_0xb1c0('0x5c')]));queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x3e')]=!![];queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x44')]='ATTENDED';queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x46')]=_0x995877['secondtransfererexten'];queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x48')]=_0x995877[_0xb1c0('0x5a')];queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x8')]=_0xb1c0('0x51');}if(!_[_0xb1c0('0x14')](queues[_0x995877[_0xb1c0('0x4e')]])){if(_0x995877['transfertargetlinkedid']&&queues[_0x995877[_0xb1c0('0x5d')]]){queues[_0x995877[_0xb1c0('0x5d')]][_0xb1c0('0x1c')]=0x1;queues[_0x995877[_0xb1c0('0x54')]]=_[_0xb1c0('0x5e')](queues[_0x995877['transfertargetlinkedid']]);queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0xc')]=_0x995877[_0xb1c0('0x54')];queues[_0x995877['transfertargetuniqueid']][_0xb1c0('0x1c')]=0x2;queues[_0x995877['transfertargetuniqueid']]['calleridnum']=queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x6')];queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0x55')]=queues[_0x995877[_0xb1c0('0x52')]][_0xb1c0('0x55')];queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0x32')]=utils[_0xb1c0('0x11')]();queues[_0x995877[_0xb1c0('0x54')]]['queuecallerleaveAt']=utils[_0xb1c0('0x11')]();queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0x56')]=0x0;queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0x57')]=0x0;utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x995877[_0xb1c0('0x4c')],queues[_0x995877[_0xb1c0('0x54')]]['name'],queues[_0x995877['transfertargetuniqueid']][_0xb1c0('0xc')],queues[_0x995877[_0xb1c0('0x54')]][_0xb1c0('0x6')],queues[_0x995877[_0xb1c0('0x54')]]['calleridname']));}else{utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x59'),_0x995877['origtransfereruniqueid'],queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0x1a')],_0x995877[_0xb1c0('0x52')]));queues[_0x995877[_0xb1c0('0x4e')]][_0xb1c0('0xc')]=_0x995877['origtransfererlinkedid'];}}}}catch(_0x787a11){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x5f'),_0x995877['origtransfereruniqueid']),_0x787a11);}};exports[_0xb1c0('0x60')]=function(_0x2f120e){try{if(!_[_0xb1c0('0x14')](queues[_0x2f120e[_0xb1c0('0x3')]])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')](_0xb1c0('0x61'),_0x2f120e[_0xb1c0('0x3')]),_0x2f120e);queues[_0x2f120e['uniqueid']][_0xb1c0('0x62')]=utils[_0xb1c0('0x11')]();utils[_0xb1c0('0xe')](util[_0xb1c0('0x2')](_0xb1c0('0x63'),_0x2f120e[_0xb1c0('0x3')],queues[_0x2f120e[_0xb1c0('0x3')]][_0xb1c0('0x1a')],queues[_0x2f120e[_0xb1c0('0x3')]][_0xb1c0('0x62')]));}}catch(_0x5eca68){utils[_0xb1c0('0x12')](util[_0xb1c0('0x2')](_0xb1c0('0x61'),_0x2f120e['uniqueid']),_0x5eca68);}};exports['musiconholdstop']=function(_0x2e436e){try{if(!_[_0xb1c0('0x14')](queues[_0x2e436e[_0xb1c0('0x3')]])){if(!_['isNil'](queues[_0x2e436e[_0xb1c0('0x3')]]['musiconholdstartAt'])){utils[_0xb1c0('0x15')](util[_0xb1c0('0x2')]('[%s][queues][musiconholdstop]',_0x2e436e[_0xb1c0('0x3')]),_0x2e436e);queues[_0x2e436e['uniqueid']][_0xb1c0('0x57')]+=utils[_0xb1c0('0x31')](utils['now'](),queues[_0x2e436e['uniqueid']]['musiconholdstartAt']);utils[_0xb1c0('0xe')](util['format'](_0xb1c0('0x64'),_0x2e436e[_0xb1c0('0x3')],queues[_0x2e436e[_0xb1c0('0x3')]]['name'],queues[_0x2e436e[_0xb1c0('0x3')]][_0xb1c0('0x57')]));delete queues[_0x2e436e['uniqueid']]['musiconholdstartAt'];}}}catch(_0xb3408b){utils['error'](util[_0xb1c0('0x2')](_0xb1c0('0x65'),_0x2e436e['uniqueid']),_0xb3408b);}};
\ No newline at end of file
+var _0x01ec=['position','assign','now','error','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','destaccountcode','assigned','membername','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','transferuniqueid','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','getVoiceQueueByName','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','uniqueid','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s'];(function(_0x5ff027,_0x451702){var _0x2ca147=function(_0x54f4c0){while(--_0x54f4c0){_0x5ff027['push'](_0x5ff027['shift']());}};_0x2ca147(++_0x451702);}(_0x01ec,0x12a));var _0xc01e=function(_0x22c8f6,_0x1df7e0){_0x22c8f6=_0x22c8f6-0x0;var _0xbabe4e=_0x01ec[_0x22c8f6];return _0xbabe4e;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xc01e('0x0'));var queues={};function writeDB(_0x2c68b8){utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x3'),_0x2c68b8['uniqueid'],_0x2c68b8[_0xc01e('0x4')],_0x2c68b8['queue'],_0x2c68b8[_0xc01e('0x5')],_0x2c68b8[_0xc01e('0x6')],_0x2c68b8[_0xc01e('0x7')],_0x2c68b8[_0xc01e('0x8')]));if(_0x2c68b8[_0xc01e('0x9')]){utils[_0xc01e('0xa')](_0x2c68b8['queue'])['then'](function(_0x1da97b){if(_0x1da97b){_0x2c68b8[_0xc01e('0xb')]=_0x1da97b['type'];}utils[_0xc01e('0xc')](_0xc01e('0xd'),_0x2c68b8);});}else{utils[_0xc01e('0xc')](_0xc01e('0xd'),_0x2c68b8);}if(_0x2c68b8[_0xc01e('0xe')]){delete queues[_0x2c68b8['transfereduniqueid']];}else{delete queues[_0x2c68b8['uniqueid']];}}exports[_0xc01e('0xf')]=function(_0x1056ce){try{utils[_0xc01e('0x10')](util[_0xc01e('0x2')](_0xc01e('0x11'),_0x1056ce[_0xc01e('0x12')]),_0x1056ce);utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x13'),_0x1056ce[_0xc01e('0x12')],_0x1056ce[_0xc01e('0x9')],_0x1056ce[_0xc01e('0x14')]));queues[_0x1056ce['uniqueid']]=_[_0xc01e('0x15')](_0x1056ce,{'originalposition':_0x1056ce[_0xc01e('0x14')],'queuecallerjoinAt':utils[_0xc01e('0x16')](),'mohtime':0x0});}catch(_0x30728a){utils[_0xc01e('0x17')](util[_0xc01e('0x2')](_0xc01e('0x11'),_0x1056ce[_0xc01e('0x12')]),_0x30728a);}};exports['hangup']=function(_0x4c4f09){try{if(!_[_0xc01e('0x18')](queues[_0x4c4f09['uniqueid']])){utils[_0xc01e('0x10')](util['format'](_0xc01e('0x19'),_0x4c4f09['uniqueid']),_0x4c4f09);if(queues[_0x4c4f09['uniqueid']][_0xc01e('0x1a')]){if(!queues[_0x4c4f09[_0xc01e('0x12')]]['queuecallerabandon']&&!queues[_0x4c4f09[_0xc01e('0x12')]][_0xc01e('0x1b')]){queues[_0x4c4f09['uniqueid']][_0xc01e('0x1c')]=!![];queues[_0x4c4f09['uniqueid']][_0xc01e('0x1d')]=utils[_0xc01e('0x16')]();queues[_0x4c4f09['uniqueid']][_0xc01e('0x8')]=_0xc01e('0x1e');}utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x1f'),_0x4c4f09[_0xc01e('0x12')],queues[_0x4c4f09[_0xc01e('0x12')]][_0xc01e('0x20')],queues[_0x4c4f09[_0xc01e('0x12')]]['queuecallerexitreason']));writeDB(queues[_0x4c4f09[_0xc01e('0x12')]]);}else if(queues[_0x4c4f09[_0xc01e('0x12')]][_0xc01e('0xe')]){utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x21'),_0x4c4f09[_0xc01e('0x12')],queues[_0x4c4f09['uniqueid']]['name'],queues[_0x4c4f09['uniqueid']][_0xc01e('0xe')]));queues[queues[_0x4c4f09[_0xc01e('0x12')]]['transfereduniqueid']]=queues[_0x4c4f09[_0xc01e('0x12')]];queues[queues[_0x4c4f09[_0xc01e('0x12')]][_0xc01e('0xe')]][_0xc01e('0x22')]=0x2;delete queues[_0x4c4f09[_0xc01e('0x12')]];}}}catch(_0x30522a){utils[_0xc01e('0x17')](util['format'](_0xc01e('0x19'),_0x4c4f09[_0xc01e('0x12')]),_0x30522a);}};exports[_0xc01e('0x23')]=function(_0x44c115){try{utils[_0xc01e('0x10')](util[_0xc01e('0x2')]('[%s][queues][varset]',_0x44c115[_0xc01e('0x12')]),_0x44c115);if(!_[_0xc01e('0x18')](_0x44c115[_0xc01e('0x24')][_0xc01e('0x25')])&&_0x44c115[_0xc01e('0x26')][_0xc01e('0x27')]()!==_0xc01e('0x28')){if(!_[_0xc01e('0x18')](queues[_0x44c115[_0xc01e('0x12')]])){queues[_0x44c115['uniqueid']][_0xc01e('0x29')]=![];queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x2a')]=null;queues[_0x44c115['uniqueid']][_0xc01e('0x1b')]=!![];queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x2b')]=utils['now']();queues[_0x44c115['uniqueid']][_0xc01e('0x8')]=_0x44c115[_0xc01e('0x26')][_0xc01e('0x27')]();utils['info'](util[_0xc01e('0x2')](_0xc01e('0x2c'),_0x44c115['uniqueid'],queues[_0x44c115[_0xc01e('0x12')]]['name'],_0x44c115[_0xc01e('0x26')],queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x8')]));writeDB(queues[_0x44c115[_0xc01e('0x12')]]);}}else if(!_[_0xc01e('0x18')](_0x44c115[_0xc01e('0x24')]['queueposition'])){if(!_['isNil'](queues[_0x44c115['uniqueid']])&&!queues[_0x44c115[_0xc01e('0x12')]]['queuecallerabandon']){queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x29')]=![];queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x2a')]=null;queues[_0x44c115['uniqueid']][_0xc01e('0x1b')]=!![];queues[_0x44c115[_0xc01e('0x12')]]['queuecallerexitAt']=utils[_0xc01e('0x16')]();queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x8')]=_0xc01e('0x2d');utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x2e'),_0x44c115['uniqueid'],queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x20')],_0x44c115[_0xc01e('0x26')],queues[_0x44c115[_0xc01e('0x12')]][_0xc01e('0x8')]));}}}catch(_0x3780ed){utils['error'](util[_0xc01e('0x2')](_0xc01e('0x2f'),_0x44c115['uniqueid']),_0x3780ed);}};exports[_0xc01e('0x29')]=function(_0x3be4c3){try{if(!_[_0xc01e('0x18')](queues[_0x3be4c3['uniqueid']])){utils[_0xc01e('0x10')](util[_0xc01e('0x2')]('[%s][queues][queuecallerabandon]',_0x3be4c3[_0xc01e('0x12')]),_0x3be4c3);queues[_0x3be4c3[_0xc01e('0x12')]][_0xc01e('0x1b')]=![];queues[_0x3be4c3[_0xc01e('0x12')]]['queuecallerexitAt']=null;queues[_0x3be4c3['uniqueid']][_0xc01e('0x29')]=!![];queues[_0x3be4c3['uniqueid']]['queuecallerabandonAt']=utils['now']();queues[_0x3be4c3['uniqueid']][_0xc01e('0x8')]=_0xc01e('0x30');utils[_0xc01e('0x1')](util['format'](_0xc01e('0x31'),_0x3be4c3[_0xc01e('0x12')],queues[_0x3be4c3[_0xc01e('0x12')]][_0xc01e('0x20')],queues[_0x3be4c3[_0xc01e('0x12')]]['queuecallerexitreason']));}}catch(_0x5e527a){utils['error'](util['format']('[%s][queues][queuecallerabandon]',_0x3be4c3[_0xc01e('0x12')]),_0x5e527a);}};exports[_0xc01e('0x32')]=function(_0x3bb465){try{if(!_['isNil'](queues[_0x3bb465[_0xc01e('0x12')]])){utils[_0xc01e('0x10')](util[_0xc01e('0x2')](_0xc01e('0x33'),_0x3bb465['uniqueid']),_0x3bb465);utils[_0xc01e('0x1')](util['format'](_0xc01e('0x34'),_0x3bb465[_0xc01e('0x12')],queues[_0x3bb465[_0xc01e('0x12')]][_0xc01e('0x20')],_0x3bb465[_0xc01e('0x35')],_0x3bb465[_0xc01e('0x36')]));queues[_0x3bb465['uniqueid']][_0xc01e('0x32')]=!![];queues[_0x3bb465['uniqueid']][_0xc01e('0x1a')]=utils[_0xc01e('0x16')]();queues[_0x3bb465['uniqueid']][_0xc01e('0x37')]=utils[_0xc01e('0x38')](queues[_0x3bb465['uniqueid']][_0xc01e('0x1a')],queues[_0x3bb465['uniqueid']]['queuecallerjoinAt']);queues[_0x3bb465[_0xc01e('0x12')]][_0xc01e('0x14')]=_0x3bb465[_0xc01e('0x14')];queues[_0x3bb465[_0xc01e('0x12')]][_0xc01e('0x39')]=_0x3bb465['count'];queues[_0x3bb465[_0xc01e('0x12')]]['connectedlinenum']=_0x3bb465[_0xc01e('0x35')];queues[_0x3bb465[_0xc01e('0x12')]]['connectedlinename']=_0x3bb465[_0xc01e('0x36')];}}catch(_0x516049){utils[_0xc01e('0x17')](util['format']('[%s][queues][queuecallerleave]',_0x3bb465['uniqueid']),_0x516049);}};exports[_0xc01e('0x3a')]=function(_0x434492){try{if(!_['isNil'](queues[_0x434492['uniqueid']])){utils[_0xc01e('0x10')](util['format'](_0xc01e('0x3b'),_0x434492[_0xc01e('0x12')]),_0x434492);utils[_0xc01e('0x1')](util['format'](_0xc01e('0x3c'),_0x434492[_0xc01e('0x12')],queues[_0x434492['uniqueid']]['name'],_0x434492['membername'],_0x434492[_0xc01e('0x3d')]));queues[_0x434492[_0xc01e('0x12')]][_0xc01e('0x29')]=![];queues[_0x434492[_0xc01e('0x12')]]['queuecallerabandon']=![];queues[_0x434492[_0xc01e('0x12')]]['queuecallerabandonAt']=null;queues[_0x434492[_0xc01e('0x12')]][_0xc01e('0x1b')]=![];queues[_0x434492['uniqueid']][_0xc01e('0x8')]=null;queues[_0x434492['uniqueid']]['queuecallerexitAt']=null;queues[_0x434492[_0xc01e('0x12')]][_0xc01e('0x3e')]=!![];queues[_0x434492[_0xc01e('0x12')]][_0xc01e('0x7')]=_0x434492['destaccountcode'];queues[_0x434492[_0xc01e('0x12')]][_0xc01e('0x5')]=_0x434492[_0xc01e('0x3f')];}}catch(_0x4862a5){utils[_0xc01e('0x17')](util[_0xc01e('0x2')]('[%s][queues][agentconnect]',_0x434492[_0xc01e('0x12')]),_0x4862a5);}};exports[_0xc01e('0x40')]=function(_0x4ceddb){try{if(!_[_0xc01e('0x18')](queues[_0x4ceddb[_0xc01e('0x12')]])){if(queues[_0x4ceddb['uniqueid']][_0xc01e('0x1a')]){utils[_0xc01e('0x10')](util[_0xc01e('0x2')](_0xc01e('0x41'),_0x4ceddb[_0xc01e('0x12')]),_0x4ceddb);queues[_0x4ceddb['uniqueid']][_0xc01e('0x29')]=![];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x29')]=![];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x2a')]=null;queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x1b')]=![];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x2b')]=null;queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x3e')]=!![];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x5')]=_0x4ceddb[_0xc01e('0x3f')];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x1c')]=!![];queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x1d')]=utils[_0xc01e('0x16')]();if(_0x4ceddb[_0xc01e('0x42')]==_0xc01e('0x43')){if(!queues[_0x4ceddb['uniqueid']][_0xc01e('0x43')]){queues[_0x4ceddb['uniqueid']]['queuecallerexitreason']='TRANSFER';}}else{queues[_0x4ceddb[_0xc01e('0x12')]]['queuecallerexitreason']=_0xc01e('0x44')+_0x4ceddb[_0xc01e('0x42')][_0xc01e('0x27')]();}utils[_0xc01e('0x1')](util['format'](_0xc01e('0x45'),_0x4ceddb[_0xc01e('0x12')],queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x20')],_0x4ceddb['membername'],queues[_0x4ceddb[_0xc01e('0x12')]][_0xc01e('0x8')]));writeDB(queues[_0x4ceddb['uniqueid']]);}}}catch(_0x41d4d5){utils[_0xc01e('0x17')](util[_0xc01e('0x2')](_0xc01e('0x41'),_0x4ceddb['uniqueid']),_0x41d4d5);}};exports[_0xc01e('0x46')]=function(_0x1ee5ad){try{if(!_['isNil'](queues[_0x1ee5ad['transfereeuniqueid']])){utils[_0xc01e('0x10')](util[_0xc01e('0x2')](_0xc01e('0x47'),_0x1ee5ad[_0xc01e('0x12')]),_0x1ee5ad);queues[_0x1ee5ad[_0xc01e('0x48')]][_0xc01e('0x43')]=!![];queues[_0x1ee5ad[_0xc01e('0x48')]][_0xc01e('0x49')]=_0xc01e('0x4a');queues[_0x1ee5ad[_0xc01e('0x48')]][_0xc01e('0x4b')]=_0x1ee5ad['extension'];queues[_0x1ee5ad['transfereeuniqueid']]['transferuniqueid']=_0x1ee5ad['transfereeuniqueid'];queues[_0x1ee5ad[_0xc01e('0x48')]]['queuecallerexitreason']=_0xc01e('0x4c');utils['info'](util['format'](_0xc01e('0x4d'),_0x1ee5ad[_0xc01e('0x12')],queues[_0x1ee5ad[_0xc01e('0x48')]][_0xc01e('0x20')],_0x1ee5ad[_0xc01e('0x48')],_0x1ee5ad[_0xc01e('0x4e')]));}}catch(_0x958fef){utils['error'](util[_0xc01e('0x2')]('[%s][queues][blindtransfer]',_0x1ee5ad[_0xc01e('0x12')]),_0x958fef);}};exports[_0xc01e('0x4f')]=function(_0x5df897){try{utils[_0xc01e('0x10')](util[_0xc01e('0x2')]('[%s][queues][attendedtransfer]',_0x5df897[_0xc01e('0x50')]),_0x5df897);if(_0x5df897['origtransfereruniqueid']==_0x5df897[_0xc01e('0x51')]){if(!_['isNil'](queues[_0x5df897[_0xc01e('0x52')]])){utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x53'),_0x5df897[_0xc01e('0x50')],queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0x20')],_0x5df897[_0xc01e('0x54')]));queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0x43')]=!![];queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0x49')]=_0xc01e('0x55');queues[_0x5df897[_0xc01e('0x52')]]['transferexten']=_0x5df897['origtransfererexten'];queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0x56')]=_0x5df897[_0xc01e('0x50')];queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0x8')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x5df897[_0xc01e('0x51')]])){if(_0x5df897['transfereelinkedid']&&queues[_0x5df897[_0xc01e('0x57')]]){queues[_0x5df897[_0xc01e('0x57')]][_0xc01e('0x22')]=0x1;queues[_0x5df897[_0xc01e('0x48')]]=_[_0xc01e('0x58')](queues[_0x5df897['transfereelinkedid']]);queues[_0x5df897['transfereeuniqueid']][_0xc01e('0xe')]=_0x5df897[_0xc01e('0x59')];queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x22')]=0x2;queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x6')]=queues[_0x5df897['secondtransfererlinkedid']][_0xc01e('0x6')];queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x5a')]=queues[_0x5df897[_0xc01e('0x52')]]['calleridname'];queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x5b')]=utils['now']();queues[_0x5df897[_0xc01e('0x48')]]['queuecallerleaveAt']=utils['now']();queues[_0x5df897['transfereeuniqueid']][_0xc01e('0x37')]=0x0;queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x5c')]=0x0;utils[_0xc01e('0x1')](util[_0xc01e('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x5df897[_0xc01e('0x50')],queues[_0x5df897[_0xc01e('0x48')]][_0xc01e('0x20')],queues[_0x5df897['transfereeuniqueid']][_0xc01e('0x6')],queues[_0x5df897[_0xc01e('0x48')]]['calleridname']));}else{utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x5d'),_0x5df897[_0xc01e('0x50')],queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x20')],_0x5df897[_0xc01e('0x52')]));queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0xe')]=_0x5df897[_0xc01e('0x52')];}}}else if(_0x5df897['secondtransfereruniqueid']==_0x5df897[_0xc01e('0x52')]){if(!_['isNil'](queues[_0x5df897[_0xc01e('0x51')]])){utils['info'](util[_0xc01e('0x2')](_0xc01e('0x5e'),_0x5df897['origtransfereruniqueid'],queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x20')],_0x5df897[_0xc01e('0x5f')],_0x5df897[_0xc01e('0x60')]));queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x43')]=!![];queues[_0x5df897[_0xc01e('0x51')]]['transfertype']=_0xc01e('0x55');queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x4b')]=_0x5df897[_0xc01e('0x60')];queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x56')]=_0x5df897[_0xc01e('0x5f')];queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x8')]=_0xc01e('0x61');}if(!_[_0xc01e('0x18')](queues[_0x5df897[_0xc01e('0x52')]])){if(_0x5df897['transfertargetlinkedid']&&queues[_0x5df897[_0xc01e('0x62')]]){queues[_0x5df897[_0xc01e('0x62')]][_0xc01e('0x22')]=0x1;queues[_0x5df897[_0xc01e('0x59')]]=_[_0xc01e('0x58')](queues[_0x5df897[_0xc01e('0x62')]]);queues[_0x5df897['transfertargetuniqueid']][_0xc01e('0xe')]=_0x5df897[_0xc01e('0x59')];queues[_0x5df897['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x6')]=queues[_0x5df897[_0xc01e('0x51')]][_0xc01e('0x6')];queues[_0x5df897[_0xc01e('0x59')]]['calleridname']=queues[_0x5df897['origtransfererlinkedid']][_0xc01e('0x5a')];queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x5b')]=utils[_0xc01e('0x16')]();queues[_0x5df897[_0xc01e('0x59')]]['queuecallerleaveAt']=utils['now']();queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x37')]=0x0;queues[_0x5df897[_0xc01e('0x59')]]['mohtime']=0x0;utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x63'),_0x5df897[_0xc01e('0x50')],queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x20')],queues[_0x5df897['transfertargetuniqueid']][_0xc01e('0xe')],queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x6')],queues[_0x5df897[_0xc01e('0x59')]][_0xc01e('0x5a')]));}else{utils['info'](util['format'](_0xc01e('0x5d'),_0x5df897[_0xc01e('0x50')],queues[_0x5df897[_0xc01e('0x52')]]['name'],_0x5df897[_0xc01e('0x51')]));queues[_0x5df897[_0xc01e('0x52')]][_0xc01e('0xe')]=_0x5df897[_0xc01e('0x51')];}}}}catch(_0x627b2c){utils[_0xc01e('0x17')](util[_0xc01e('0x2')]('[%s][queues][attendedtransfer]',_0x5df897[_0xc01e('0x50')]),_0x627b2c);}};exports[_0xc01e('0x64')]=function(_0x37cc86){try{if(!_[_0xc01e('0x18')](queues[_0x37cc86['uniqueid']])){utils[_0xc01e('0x10')](util[_0xc01e('0x2')]('[%s][queues][musiconholdstart]',_0x37cc86[_0xc01e('0x12')]),_0x37cc86);queues[_0x37cc86[_0xc01e('0x12')]][_0xc01e('0x65')]=utils[_0xc01e('0x16')]();utils[_0xc01e('0x1')](util[_0xc01e('0x2')](_0xc01e('0x66'),_0x37cc86[_0xc01e('0x12')],queues[_0x37cc86[_0xc01e('0x12')]][_0xc01e('0x20')],queues[_0x37cc86[_0xc01e('0x12')]]['musiconholdstartAt']));}}catch(_0x46db59){utils[_0xc01e('0x17')](util[_0xc01e('0x2')]('[%s][queues][musiconholdstart]',_0x37cc86[_0xc01e('0x12')]),_0x46db59);}};exports[_0xc01e('0x67')]=function(_0x5a0d97){try{if(!_[_0xc01e('0x18')](queues[_0x5a0d97[_0xc01e('0x12')]])){if(!_[_0xc01e('0x18')](queues[_0x5a0d97['uniqueid']]['musiconholdstartAt'])){utils[_0xc01e('0x10')](util[_0xc01e('0x2')](_0xc01e('0x68'),_0x5a0d97[_0xc01e('0x12')]),_0x5a0d97);queues[_0x5a0d97[_0xc01e('0x12')]][_0xc01e('0x5c')]+=utils[_0xc01e('0x38')](utils['now'](),queues[_0x5a0d97['uniqueid']]['musiconholdstartAt']);utils['info'](util[_0xc01e('0x2')](_0xc01e('0x69'),_0x5a0d97[_0xc01e('0x12')],queues[_0x5a0d97[_0xc01e('0x12')]][_0xc01e('0x20')],queues[_0x5a0d97[_0xc01e('0x12')]][_0xc01e('0x5c')]));delete queues[_0x5a0d97[_0xc01e('0x12')]][_0xc01e('0x65')];}}}catch(_0x430d1b){utils['error'](util[_0xc01e('0x2')](_0xc01e('0x68'),_0x5a0d97['uniqueid']),_0x430d1b);}};
\ No newline at end of file
index ae5eb0b..d870864 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a82=['error','newstate','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','replace','.wav49','find','monitors','push','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','set','startsWith','toLowerCase','cdr','split','substring','[%s][recordings][queuecallerjoin]\x20queue:%s','[%s][recordings][queuecallerjoin]','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereruniqueid','recording','lodash','util','./utils','[%s][recordings][writeDB]','uniqueid','blinds','accountcode','then','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','info','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel'];(function(_0x4397a9,_0x4f54c4){var _0x34db6b=function(_0x186f55){while(--_0x186f55){_0x4397a9['push'](_0x4397a9['shift']());}};_0x34db6b(++_0x4f54c4);}(_0x4a82,0x1b1));var _0x24a8=function(_0x9a1d7e,_0x425c1d){_0x9a1d7e=_0x9a1d7e-0x0;var _0x2a3935=_0x4a82[_0x9a1d7e];return _0x2a3935;};'use strict';var _=require(_0x24a8('0x0'));var util=require(_0x24a8('0x1'));var utils=require(_0x24a8('0x2'));var transfers=require('./transfers.controller');var recordings={};function writeDB(_0x20e86b){var _0x3afc10;utils['info'](util['format'](_0x24a8('0x3'),_0x20e86b[_0x24a8('0x4')]));if(transfers[_0x24a8('0x5')][_0x20e86b[_0x24a8('0x4')]]){_0x3afc10=_0x20e86b[_0x24a8('0x4')];_0x20e86b[_0x24a8('0x4')]=transfers['blinds'][_0x20e86b[_0x24a8('0x4')]]['transfereeuniqueid'];}if(_0x20e86b['accountcode']){utils['getUserByInternal'](_0x20e86b[_0x24a8('0x6')])[_0x24a8('0x7')](function(_0x23b148){if(_0x23b148){_0x20e86b['membername']=_0x23b148[_0x24a8('0x8')];_0x20e86b[_0x24a8('0x9')]=_0x23b148['id'];}utils['request']('CreateVoiceRecording',_0x20e86b);});}else{utils[_0x24a8('0xa')](_0x24a8('0xb'),_0x20e86b);}if(_0x3afc10)delete transfers[_0x24a8('0x5')][_0x3afc10];}exports[_0x24a8('0xc')]=function(_0x21df57){try{utils[_0x24a8('0xd')](util['format'](_0x24a8('0xe'),_0x21df57['uniqueid']),_0x21df57);if(_0x21df57['uniqueid']==_0x21df57[_0x24a8('0xf')]){utils[_0x24a8('0x10')](util[_0x24a8('0x11')](_0x24a8('0x12'),_0x21df57[_0x24a8('0x4')],_0x21df57[_0x24a8('0x13')],_0x21df57[_0x24a8('0x14')]));recordings[_0x21df57['uniqueid']]={'uniqueid':_0x21df57[_0x24a8('0x4')],'accountcode':_0x21df57['accountcode'],'exten':_0x21df57[_0x24a8('0x14')],'context':_0x21df57[_0x24a8('0x13')],'channel':_0x21df57[_0x24a8('0x15')],'monitors':[]};}}catch(_0x2b1a72){utils[_0x24a8('0x16')](util[_0x24a8('0x11')]('[%s][recordings][newchannel]',_0x21df57[_0x24a8('0x4')]),_0x2b1a72);}};exports[_0x24a8('0x17')]=function(_0x2b7f8a){try{utils[_0x24a8('0xd')](util['format']('[%s][recordings][newstate]',_0x2b7f8a[_0x24a8('0x4')]),_0x2b7f8a);if(!_[_0x24a8('0x18')](recordings[_0x2b7f8a[_0x24a8('0x4')]])&&_0x2b7f8a['channelstate']==0x6){utils[_0x24a8('0x10')](util['format'](_0x24a8('0x19'),_0x2b7f8a[_0x24a8('0x4')],_0x2b7f8a['context'],_0x2b7f8a[_0x24a8('0x15')]));}else if(!_['isNil'](recordings[_0x2b7f8a[_0x24a8('0xf')]])&&_0x2b7f8a['channelstate']==0x6&&_0x2b7f8a[_0x24a8('0x13')]!=_0x24a8('0x1a')){utils[_0x24a8('0x10')](util[_0x24a8('0x11')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2b7f8a[_0x24a8('0x4')],_0x2b7f8a['linkedid'],_0x2b7f8a[_0x24a8('0x13')],_0x2b7f8a[_0x24a8('0x15')]));recordings[_0x2b7f8a['linkedid']][_0x24a8('0x6')]=_0x2b7f8a[_0x24a8('0x6')];}}catch(_0x3ff580){utils[_0x24a8('0x16')](util[_0x24a8('0x11')]('[%s][recordings][newstate]',_0x2b7f8a['uniqueid']),_0x3ff580);}};exports['varset']=function(_0x536dea){try{if(!_[_0x24a8('0x18')](_0x536dea['variable'])&&!_[_0x24a8('0x18')](_0x536dea[_0x24a8('0x1b')][_0x24a8('0x1c')])){utils[_0x24a8('0xd')](util[_0x24a8('0x11')](_0x24a8('0x1d'),_0x536dea[_0x24a8('0x4')]),_0x536dea);utils[_0x24a8('0x10')](util[_0x24a8('0x11')](_0x24a8('0x1e'),_0x536dea[_0x24a8('0x4')],_0x536dea[_0x24a8('0x1b')],_0x536dea['value']));if(_['endsWith'](_0x536dea[_0x24a8('0x1f')],'.wav49')){_0x536dea[_0x24a8('0x1f')]=_0x536dea[_0x24a8('0x1f')][_0x24a8('0x20')](_0x24a8('0x21'),'.WAV');}if(recordings[_0x536dea[_0x24a8('0xf')]]){var _0x1ca399=_[_0x24a8('0x22')](recordings[_0x536dea[_0x24a8('0xf')]][_0x24a8('0x23')],{'value':_0x536dea[_0x24a8('0x1f')]});if(_[_0x24a8('0x18')](_0x1ca399)){recordings[_0x536dea['linkedid']][_0x24a8('0x23')][_0x24a8('0x24')]({'value':_0x536dea['value']});}}}}catch(_0x5cc8d1){utils['error'](util[_0x24a8('0x11')](_0x24a8('0x1d'),_0x536dea['uniqueid']),_0x5cc8d1);}};exports[_0x24a8('0x25')]=function(_0x3fbfb3){try{if(!_['isNil'](recordings[_0x3fbfb3[_0x24a8('0x4')]])){utils['debug'](util[_0x24a8('0x11')](_0x24a8('0x26'),_0x3fbfb3[_0x24a8('0x4')]),_0x3fbfb3);utils[_0x24a8('0x10')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x3fbfb3[_0x24a8('0x4')],_0x3fbfb3[_0x24a8('0x27')],_0x3fbfb3[_0x24a8('0x28')],_0x3fbfb3[_0x24a8('0x29')]));recordings[_0x3fbfb3[_0x24a8('0x4')]][_0x24a8('0x27')]=_0x3fbfb3[_0x24a8('0x27')];recordings[_0x3fbfb3[_0x24a8('0x4')]][_0x24a8('0x28')]=_0x3fbfb3[_0x24a8('0x28')];recordings[_0x3fbfb3['uniqueid']]['connectedlinenum']=_0x3fbfb3[_0x24a8('0x2a')];recordings[_0x3fbfb3[_0x24a8('0x4')]]['connectedlinename']=_0x3fbfb3[_0x24a8('0x2b')];if(recordings[_0x3fbfb3[_0x24a8('0x4')]][_0x24a8('0x2c')]==_0x24a8('0x2d')&&recordings[_0x3fbfb3[_0x24a8('0x4')]]['accountcode']){recordings[_0x3fbfb3[_0x24a8('0x4')]][_0x24a8('0x2a')]=recordings[_0x3fbfb3['uniqueid']]['accountcode'];recordings[_0x3fbfb3['uniqueid']]['connectedlinename']='';}recordings[_0x3fbfb3[_0x24a8('0x4')]]['monitors']['forEach'](function(_0x556bd4){var _0x238289=_[_0x24a8('0x2e')](recordings[_0x3fbfb3['uniqueid']]);_0x238289['value']=_0x556bd4[_0x24a8('0x1f')];writeDB(_0x238289);});delete recordings[_0x3fbfb3['uniqueid']];}}catch(_0x1b650f){utils[_0x24a8('0x16')](util[_0x24a8('0x11')](_0x24a8('0x26'),_0x3fbfb3[_0x24a8('0x4')]),_0x1b650f);}};exports[_0x24a8('0x2f')]=function(_0x8bbf22){try{if(!_['isNil'](recordings[_0x8bbf22[_0x24a8('0x4')]])){utils[_0x24a8('0xd')](util[_0x24a8('0x11')](_0x24a8('0x30'),_0x8bbf22['uniqueid']),_0x8bbf22);utils[_0x24a8('0x10')](util[_0x24a8('0x11')](_0x24a8('0x31'),_0x8bbf22[_0x24a8('0x4')],_0x8bbf22['application'],_0x8bbf22[_0x24a8('0x32')]));if(_0x8bbf22['application']['toLowerCase']()==_0x24a8('0x33')&&_[_0x24a8('0x34')](_0x8bbf22[_0x24a8('0x32')][_0x24a8('0x35')](),_0x24a8('0x36'))){var _0x2d0f15=_0x8bbf22[_0x24a8('0x32')][_0x24a8('0x37')]('=');var _0x4e2d18=_0x2d0f15[0x0][_0x24a8('0x38')](_0x2d0f15[0x0]['lastIndexOf']('(')+0x1,_0x2d0f15[0x0]['lastIndexOf'](')'));var _0x17224b=_0x2d0f15[0x1];recordings[_0x8bbf22['uniqueid']][_0x4e2d18]=_0x17224b;}}}catch(_0x454fab){utils[_0x24a8('0x16')](util[_0x24a8('0x11')](_0x24a8('0x30'),_0x8bbf22[_0x24a8('0x4')]),_0x454fab);}};exports['queuecallerjoin']=function(_0x2f13f0){try{if(!_[_0x24a8('0x18')](recordings[_0x2f13f0[_0x24a8('0x4')]])){utils[_0x24a8('0xd')](util[_0x24a8('0x11')]('[%s][recordings][queuecallerjoin]',_0x2f13f0[_0x24a8('0x4')]),_0x2f13f0);utils[_0x24a8('0x10')](util['format'](_0x24a8('0x39'),_0x2f13f0['uniqueid'],_0x2f13f0['queue']));recordings[_0x2f13f0[_0x24a8('0x4')]]['queue']=_0x2f13f0['queue'];}}catch(_0x442e1a){utils['error'](util['format'](_0x24a8('0x3a'),_0x2f13f0['uniqueid']),_0x442e1a);}};exports['blindtransfer']=function(_0x1a1c97){try{utils[_0x24a8('0xd')](util[_0x24a8('0x11')](_0x24a8('0x3b'),_0x1a1c97['uniqueid']),_0x1a1c97);utils['info'](util[_0x24a8('0x11')](_0x24a8('0x3c'),_0x1a1c97['uniqueid'],_0x1a1c97[_0x24a8('0x3d')],_0x1a1c97['transferercalleridname'],_0x1a1c97[_0x24a8('0x3e')],_0x1a1c97['transfereecalleridname']));if(recordings[_0x1a1c97['transfereruniqueid']]&&transfers[_0x24a8('0x5')][_0x1a1c97[_0x24a8('0x3f')]]){transfers[_0x24a8('0x5')][_0x1a1c97[_0x24a8('0x3f')]][_0x24a8('0x40')]=!![];}}catch(_0x26144e){utils['error'](util[_0x24a8('0x11')]('[%s][recordings][blindtransfer]',_0x1a1c97[_0x24a8('0x4')]),_0x26144e);}};
\ No newline at end of file
+var _0xc1e3=['recording','lodash','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','getUserByInternal','accountcode','then','membername','name','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','varset','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','set','toLowerCase','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','blindtransfer','[%s][recordings][blindtransfer]','transfereecalleridname','transfereruniqueid'];(function(_0x2f54b6,_0x3cc6cb){var _0x169f21=function(_0x4dac27){while(--_0x4dac27){_0x2f54b6['push'](_0x2f54b6['shift']());}};_0x169f21(++_0x3cc6cb);}(_0xc1e3,0x1b1));var _0x3c1e=function(_0x30d202,_0x2809ad){_0x30d202=_0x30d202-0x0;var _0x52d5e1=_0xc1e3[_0x30d202];return _0x52d5e1;};'use strict';var _=require(_0x3c1e('0x0'));var util=require(_0x3c1e('0x1'));var utils=require(_0x3c1e('0x2'));var transfers=require(_0x3c1e('0x3'));var recordings={};function writeDB(_0x166a69){var _0x1f14ea;utils[_0x3c1e('0x4')](util[_0x3c1e('0x5')](_0x3c1e('0x6'),_0x166a69[_0x3c1e('0x7')]));if(transfers[_0x3c1e('0x8')][_0x166a69[_0x3c1e('0x7')]]){_0x1f14ea=_0x166a69[_0x3c1e('0x7')];_0x166a69['uniqueid']=transfers[_0x3c1e('0x8')][_0x166a69[_0x3c1e('0x7')]][_0x3c1e('0x9')];}if(_0x166a69['accountcode']){utils[_0x3c1e('0xa')](_0x166a69[_0x3c1e('0xb')])[_0x3c1e('0xc')](function(_0x3e5fc8){if(_0x3e5fc8){_0x166a69[_0x3c1e('0xd')]=_0x3e5fc8[_0x3c1e('0xe')];_0x166a69['UserId']=_0x3e5fc8['id'];}utils[_0x3c1e('0xf')](_0x3c1e('0x10'),_0x166a69);});}else{utils['request']('CreateVoiceRecording',_0x166a69);}if(_0x1f14ea)delete transfers[_0x3c1e('0x8')][_0x1f14ea];}exports[_0x3c1e('0x11')]=function(_0x2a4c00){try{utils[_0x3c1e('0x12')](util['format'](_0x3c1e('0x13'),_0x2a4c00[_0x3c1e('0x7')]),_0x2a4c00);if(_0x2a4c00[_0x3c1e('0x7')]==_0x2a4c00[_0x3c1e('0x14')]){utils[_0x3c1e('0x4')](util['format'](_0x3c1e('0x15'),_0x2a4c00[_0x3c1e('0x7')],_0x2a4c00[_0x3c1e('0x16')],_0x2a4c00[_0x3c1e('0x17')]));recordings[_0x2a4c00[_0x3c1e('0x7')]]={'uniqueid':_0x2a4c00[_0x3c1e('0x7')],'accountcode':_0x2a4c00[_0x3c1e('0xb')],'exten':_0x2a4c00[_0x3c1e('0x17')],'context':_0x2a4c00[_0x3c1e('0x16')],'channel':_0x2a4c00[_0x3c1e('0x18')],'monitors':[]};}}catch(_0x4988d3){utils[_0x3c1e('0x19')](util['format']('[%s][recordings][newchannel]',_0x2a4c00['uniqueid']),_0x4988d3);}};exports[_0x3c1e('0x1a')]=function(_0x111278){try{utils[_0x3c1e('0x12')](util[_0x3c1e('0x5')](_0x3c1e('0x1b'),_0x111278[_0x3c1e('0x7')]),_0x111278);if(!_[_0x3c1e('0x1c')](recordings[_0x111278['uniqueid']])&&_0x111278[_0x3c1e('0x1d')]==0x6){utils[_0x3c1e('0x4')](util['format'](_0x3c1e('0x1e'),_0x111278[_0x3c1e('0x7')],_0x111278['context'],_0x111278[_0x3c1e('0x18')]));}else if(!_[_0x3c1e('0x1c')](recordings[_0x111278[_0x3c1e('0x14')]])&&_0x111278['channelstate']==0x6&&_0x111278[_0x3c1e('0x16')]!='transfer'){utils[_0x3c1e('0x4')](util[_0x3c1e('0x5')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x111278[_0x3c1e('0x7')],_0x111278[_0x3c1e('0x14')],_0x111278['context'],_0x111278['channel']));recordings[_0x111278[_0x3c1e('0x14')]][_0x3c1e('0xb')]=_0x111278['accountcode'];}}catch(_0x365db9){utils[_0x3c1e('0x19')](util[_0x3c1e('0x5')]('[%s][recordings][newstate]',_0x111278[_0x3c1e('0x7')]),_0x365db9);}};exports[_0x3c1e('0x1f')]=function(_0x1a5142){try{if(!_[_0x3c1e('0x1c')](_0x1a5142[_0x3c1e('0x20')])&&!_['isNil'](_0x1a5142[_0x3c1e('0x20')]['mixmonitor_filename'])){utils[_0x3c1e('0x12')](util[_0x3c1e('0x5')](_0x3c1e('0x21'),_0x1a5142['uniqueid']),_0x1a5142);utils['info'](util[_0x3c1e('0x5')](_0x3c1e('0x22'),_0x1a5142[_0x3c1e('0x7')],_0x1a5142[_0x3c1e('0x20')],_0x1a5142[_0x3c1e('0x23')]));if(_['endsWith'](_0x1a5142[_0x3c1e('0x23')],_0x3c1e('0x24'))){_0x1a5142['value']=_0x1a5142[_0x3c1e('0x23')][_0x3c1e('0x25')](_0x3c1e('0x24'),_0x3c1e('0x26'));}if(recordings[_0x1a5142[_0x3c1e('0x14')]]){var _0x18e13e=_[_0x3c1e('0x27')](recordings[_0x1a5142[_0x3c1e('0x14')]][_0x3c1e('0x28')],{'value':_0x1a5142[_0x3c1e('0x23')]});if(_[_0x3c1e('0x1c')](_0x18e13e)){recordings[_0x1a5142['linkedid']]['monitors'][_0x3c1e('0x29')]({'value':_0x1a5142['value']});}}}}catch(_0x225426){utils[_0x3c1e('0x19')](util[_0x3c1e('0x5')](_0x3c1e('0x21'),_0x1a5142[_0x3c1e('0x7')]),_0x225426);}};exports[_0x3c1e('0x2a')]=function(_0x4c2af5){try{if(!_[_0x3c1e('0x1c')](recordings[_0x4c2af5['uniqueid']])){utils['debug'](util[_0x3c1e('0x5')](_0x3c1e('0x2b'),_0x4c2af5[_0x3c1e('0x7')]),_0x4c2af5);utils[_0x3c1e('0x4')](util[_0x3c1e('0x5')](_0x3c1e('0x2c'),_0x4c2af5[_0x3c1e('0x7')],_0x4c2af5['calleridnum'],_0x4c2af5[_0x3c1e('0x2d')],_0x4c2af5[_0x3c1e('0x2e')]));recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x2f')]=_0x4c2af5[_0x3c1e('0x2f')];recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x2d')]=_0x4c2af5[_0x3c1e('0x2d')];recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x30')]=_0x4c2af5[_0x3c1e('0x30')];recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x31')]=_0x4c2af5[_0x3c1e('0x31')];if(recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x32')]==_0x3c1e('0x33')&&recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0xb')]){recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x30')]=recordings[_0x4c2af5[_0x3c1e('0x7')]]['accountcode'];recordings[_0x4c2af5[_0x3c1e('0x7')]][_0x3c1e('0x31')]='';}recordings[_0x4c2af5['uniqueid']]['monitors'][_0x3c1e('0x34')](function(_0x21b938){var _0x431963=_['clone'](recordings[_0x4c2af5[_0x3c1e('0x7')]]);_0x431963[_0x3c1e('0x23')]=_0x21b938[_0x3c1e('0x23')];writeDB(_0x431963);});delete recordings[_0x4c2af5[_0x3c1e('0x7')]];}}catch(_0x412d41){utils[_0x3c1e('0x19')](util[_0x3c1e('0x5')](_0x3c1e('0x2b'),_0x4c2af5[_0x3c1e('0x7')]),_0x412d41);}};exports[_0x3c1e('0x35')]=function(_0x28c0dc){try{if(!_['isNil'](recordings[_0x28c0dc[_0x3c1e('0x7')]])){utils[_0x3c1e('0x12')](util[_0x3c1e('0x5')](_0x3c1e('0x36'),_0x28c0dc[_0x3c1e('0x7')]),_0x28c0dc);utils['info'](util['format'](_0x3c1e('0x37'),_0x28c0dc[_0x3c1e('0x7')],_0x28c0dc['application'],_0x28c0dc[_0x3c1e('0x38')]));if(_0x28c0dc['application']['toLowerCase']()==_0x3c1e('0x39')&&_['startsWith'](_0x28c0dc['appdata'][_0x3c1e('0x3a')](),_0x3c1e('0x3b'))){var _0x5c9b01=_0x28c0dc[_0x3c1e('0x38')][_0x3c1e('0x3c')]('=');var _0x296874=_0x5c9b01[0x0][_0x3c1e('0x3d')](_0x5c9b01[0x0][_0x3c1e('0x3e')]('(')+0x1,_0x5c9b01[0x0][_0x3c1e('0x3e')](')'));var _0x392fe2=_0x5c9b01[0x1];recordings[_0x28c0dc[_0x3c1e('0x7')]][_0x296874]=_0x392fe2;}}}catch(_0x52f8d8){utils['error'](util[_0x3c1e('0x5')](_0x3c1e('0x36'),_0x28c0dc['uniqueid']),_0x52f8d8);}};exports[_0x3c1e('0x3f')]=function(_0x270ee1){try{if(!_[_0x3c1e('0x1c')](recordings[_0x270ee1[_0x3c1e('0x7')]])){utils[_0x3c1e('0x12')](util[_0x3c1e('0x5')]('[%s][recordings][queuecallerjoin]',_0x270ee1[_0x3c1e('0x7')]),_0x270ee1);utils[_0x3c1e('0x4')](util[_0x3c1e('0x5')](_0x3c1e('0x40'),_0x270ee1[_0x3c1e('0x7')],_0x270ee1[_0x3c1e('0x41')]));recordings[_0x270ee1[_0x3c1e('0x7')]]['queue']=_0x270ee1[_0x3c1e('0x41')];}}catch(_0x3e3930){utils[_0x3c1e('0x19')](util[_0x3c1e('0x5')](_0x3c1e('0x42'),_0x270ee1[_0x3c1e('0x7')]),_0x3e3930);}};exports[_0x3c1e('0x43')]=function(_0xeabf6f){try{utils['debug'](util['format'](_0x3c1e('0x44'),_0xeabf6f[_0x3c1e('0x7')]),_0xeabf6f);utils[_0x3c1e('0x4')](util[_0x3c1e('0x5')]('[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0xeabf6f[_0x3c1e('0x7')],_0xeabf6f['transferercalleridnum'],_0xeabf6f['transferercalleridname'],_0xeabf6f['transfereecalleridnum'],_0xeabf6f[_0x3c1e('0x45')]));if(recordings[_0xeabf6f[_0x3c1e('0x46')]]&&transfers[_0x3c1e('0x8')][_0xeabf6f['transfereruniqueid']]){transfers[_0x3c1e('0x8')][_0xeabf6f[_0x3c1e('0x46')]][_0x3c1e('0x47')]=!![];}}catch(_0xfeb3e2){utils[_0x3c1e('0x19')](util[_0x3c1e('0x5')]('[%s][recordings][blindtransfer]',_0xeabf6f[_0x3c1e('0x7')]),_0xfeb3e2);}};
\ No newline at end of file
index 475c578..bcc0039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f5f=['info','type','attended','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','format','[%s][transfers][blindtransfer]','uniqueid','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetlinkedid','lodash','util'];(function(_0x23aa88,_0x41e647){var _0x2e3cea=function(_0x4c0537){while(--_0x4c0537){_0x23aa88['push'](_0x23aa88['shift']());}};_0x2e3cea(++_0x41e647);}(_0x7f5f,0xa6));var _0xf7f5=function(_0x5afadd,_0x454f31){_0x5afadd=_0x5afadd-0x0;var _0x1e25c4=_0x7f5f[_0x5afadd];return _0x1e25c4;};'use strict';var _=require(_0xf7f5('0x0'));var util=require(_0xf7f5('0x1'));var utils=require('./utils');function writeDB(_0x15a4bd){utils[_0xf7f5('0x2')](util['format']('[%s][transfers][writeDB]\x20type:%s',_0x15a4bd[_0xf7f5('0x3')]===_0xf7f5('0x4')?_0x15a4bd[_0xf7f5('0x5')]:_0x15a4bd['uniqueid'],_0x15a4bd[_0xf7f5('0x3')]));utils[_0xf7f5('0x6')](_0xf7f5('0x7'),_0x15a4bd);}exports[_0xf7f5('0x8')]={};exports[_0xf7f5('0x9')]=function(_0x1ab069){try{utils[_0xf7f5('0xa')](util[_0xf7f5('0xb')](_0xf7f5('0xc'),_0x1ab069[_0xf7f5('0xd')]),_0x1ab069);utils[_0xf7f5('0x2')](util[_0xf7f5('0xb')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x1ab069['uniqueid'],_0x1ab069[_0xf7f5('0xe')],_0x1ab069['transferercalleridname'],_0x1ab069[_0xf7f5('0xf')],_0x1ab069[_0xf7f5('0x10')]));_0x1ab069[_0xf7f5('0x3')]='blind';exports[_0xf7f5('0x8')][_0x1ab069[_0xf7f5('0x11')]]=_0x1ab069;writeDB(_0x1ab069);}catch(_0x57fd03){utils[_0xf7f5('0x12')](util[_0xf7f5('0xb')](_0xf7f5('0xc'),_0x1ab069[_0xf7f5('0xd')]),_0x57fd03);}};exports[_0xf7f5('0x13')]=function(_0xeb1bc7){try{utils[_0xf7f5('0xa')](util[_0xf7f5('0xb')](_0xf7f5('0x14'),_0xeb1bc7[_0xf7f5('0x5')]),_0xeb1bc7);utils[_0xf7f5('0x2')](util['format'](_0xf7f5('0x15'),_0xeb1bc7[_0xf7f5('0x5')],_0xeb1bc7['origtransferercalleridnum'],_0xeb1bc7['origtransferercalleridname'],_0xeb1bc7[_0xf7f5('0x16')],_0xeb1bc7[_0xf7f5('0x17')]));_0xeb1bc7=_[_0xf7f5('0x18')](_0xeb1bc7,{'transfererchannel':_0xeb1bc7[_0xf7f5('0x19')],'transferercalleridnum':_0xeb1bc7[_0xf7f5('0x1a')],'transferercalleridname':_0xeb1bc7[_0xf7f5('0x1b')],'transfererconnectedlinenum':_0xeb1bc7['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0xeb1bc7[_0xf7f5('0x1c')],'transfereraccountcode':_0xeb1bc7[_0xf7f5('0x1d')],'transferercontext':_0xeb1bc7[_0xf7f5('0x1e')],'transfererexten':_0xeb1bc7[_0xf7f5('0x1f')],'transfererlinkedid':_0xeb1bc7[_0xf7f5('0x20')],'context':_0xeb1bc7[_0xf7f5('0x21')],'extension':_0xeb1bc7['origtransfererexten'],'type':_0xf7f5('0x4')});if(_[_0xf7f5('0x22')](_0xeb1bc7[_0xf7f5('0x23')])){_0xeb1bc7=_[_0xf7f5('0x18')](_0xeb1bc7,{'transfereechannel':_0xeb1bc7[_0xf7f5('0x24')],'transfereecalleridnum':_0xeb1bc7['transfertargetcalleridnum'],'transfereecalleridname':_0xeb1bc7[_0xf7f5('0x17')],'transfereeconnectedlinenum':_0xeb1bc7[_0xf7f5('0x25')],'transfereeconnectedlinename':_0xeb1bc7[_0xf7f5('0x26')],'transfereeaccountcode':_0xeb1bc7[_0xf7f5('0x27')],'transfereecontext':_0xeb1bc7[_0xf7f5('0x28')],'transfereeexten':_0xeb1bc7['transfertargetexten'],'transfereelinkedid':_0xeb1bc7[_0xf7f5('0x29')]});}writeDB(_0xeb1bc7);}catch(_0x12d111){utils['error'](util['format']('[%s][transfers][attendedtransfer]',_0xeb1bc7[_0xf7f5('0x5')]),_0x12d111);}};
\ No newline at end of file
+var _0xac08=['transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','origtransfereruniqueid','lodash','./utils','format','[%s][transfers][writeDB]\x20type:%s','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','transferercalleridname','transfereecalleridnum','type','transfereruniqueid','error','[%s][transfers][attendedtransfer]','info','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten'];(function(_0x32bebd,_0x17ca38){var _0xcb84d2=function(_0x3bead2){while(--_0x3bead2){_0x32bebd['push'](_0x32bebd['shift']());}};_0xcb84d2(++_0x17ca38);}(_0xac08,0xf8));var _0x8ac0=function(_0x1ff9c0,_0x3f6505){_0x1ff9c0=_0x1ff9c0-0x0;var _0x3c08d3=_0xac08[_0x1ff9c0];return _0x3c08d3;};'use strict';var _=require(_0x8ac0('0x0'));var util=require('util');var utils=require(_0x8ac0('0x1'));function writeDB(_0x54acca){utils['info'](util[_0x8ac0('0x2')](_0x8ac0('0x3'),_0x54acca['type']===_0x8ac0('0x4')?_0x54acca['origtransfereruniqueid']:_0x54acca[_0x8ac0('0x5')],_0x54acca['type']));utils[_0x8ac0('0x6')](_0x8ac0('0x7'),_0x54acca);}exports[_0x8ac0('0x8')]={};exports[_0x8ac0('0x9')]=function(_0x5b78a5){try{utils[_0x8ac0('0xa')](util['format'](_0x8ac0('0xb'),_0x5b78a5[_0x8ac0('0x5')]),_0x5b78a5);utils['info'](util[_0x8ac0('0x2')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x5b78a5[_0x8ac0('0x5')],_0x5b78a5['transferercalleridnum'],_0x5b78a5[_0x8ac0('0xc')],_0x5b78a5[_0x8ac0('0xd')],_0x5b78a5['transfereecalleridname']));_0x5b78a5[_0x8ac0('0xe')]='blind';exports[_0x8ac0('0x8')][_0x5b78a5[_0x8ac0('0xf')]]=_0x5b78a5;writeDB(_0x5b78a5);}catch(_0x16c84f){utils[_0x8ac0('0x10')](util['format'](_0x8ac0('0xb'),_0x5b78a5['uniqueid']),_0x16c84f);}};exports['attendedtransfer']=function(_0x4f04e7){try{utils[_0x8ac0('0xa')](util[_0x8ac0('0x2')](_0x8ac0('0x11'),_0x4f04e7['origtransfereruniqueid']),_0x4f04e7);utils[_0x8ac0('0x12')](util[_0x8ac0('0x2')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x4f04e7['origtransfereruniqueid'],_0x4f04e7[_0x8ac0('0x13')],_0x4f04e7['origtransferercalleridname'],_0x4f04e7[_0x8ac0('0x14')],_0x4f04e7[_0x8ac0('0x15')]));_0x4f04e7=_[_0x8ac0('0x16')](_0x4f04e7,{'transfererchannel':_0x4f04e7[_0x8ac0('0x17')],'transferercalleridnum':_0x4f04e7[_0x8ac0('0x13')],'transferercalleridname':_0x4f04e7['origtransferercalleridname'],'transfererconnectedlinenum':_0x4f04e7[_0x8ac0('0x18')],'transfererconnectedlinename':_0x4f04e7[_0x8ac0('0x19')],'transfereraccountcode':_0x4f04e7[_0x8ac0('0x1a')],'transferercontext':_0x4f04e7[_0x8ac0('0x1b')],'transfererexten':_0x4f04e7[_0x8ac0('0x1c')],'transfererlinkedid':_0x4f04e7[_0x8ac0('0x1d')],'context':_0x4f04e7[_0x8ac0('0x1e')],'extension':_0x4f04e7[_0x8ac0('0x1f')],'type':'attended'});if(_['isNil'](_0x4f04e7[_0x8ac0('0x20')])){_0x4f04e7=_['assign'](_0x4f04e7,{'transfereechannel':_0x4f04e7[_0x8ac0('0x21')],'transfereecalleridnum':_0x4f04e7[_0x8ac0('0x14')],'transfereecalleridname':_0x4f04e7['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x4f04e7[_0x8ac0('0x22')],'transfereeconnectedlinename':_0x4f04e7[_0x8ac0('0x23')],'transfereeaccountcode':_0x4f04e7[_0x8ac0('0x24')],'transfereecontext':_0x4f04e7[_0x8ac0('0x25')],'transfereeexten':_0x4f04e7[_0x8ac0('0x26')],'transfereelinkedid':_0x4f04e7['transfertargetlinkedid']});}writeDB(_0x4f04e7);}catch(_0x4b252b){utils[_0x8ac0('0x10')](util[_0x8ac0('0x2')](_0x8ac0('0x11'),_0x4f04e7[_0x8ac0('0x27')]),_0x4b252b);}};
\ No newline at end of file
index 9084129..76c4ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516a=['subtractTime','format','sumTime','now','YYYY-MM-DD\x20HH:mm:ss','isBefore','moment','client','http','xdr','info','inspect','debug','error','request','[utils][request]\x20name:%s','GetUser','internal','name','then','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds'];(function(_0x246d42,_0x5e7c6e){var _0x2c3fcb=function(_0x3a83aa){while(--_0x3a83aa){_0x246d42['push'](_0x246d42['shift']());}};_0x2c3fcb(++_0x5e7c6e);}(_0x516a,0xe2));var _0xa516=function(_0x1c9947,_0x51a22a){_0x1c9947=_0x1c9947-0x0;var _0x1526ca=_0x516a[_0x1c9947];return _0x1526ca;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var moment=require(_0xa516('0x0'));var util=require('util');var client=jayson[_0xa516('0x1')][_0xa516('0x2')]({'port':0x2329});var logger=require('../../config/logger')(_0xa516('0x3'));exports[_0xa516('0x4')]=function(_0x2b2dd5,_0x522a93){logger[_0xa516('0x4')](_0x2b2dd5,_0x522a93?util[_0xa516('0x5')](_0x522a93,{'showHidden':![],'depth':null}):'');};exports[_0xa516('0x6')]=function(_0x18b544,_0x2b5bcb){logger[_0xa516('0x6')](_0x18b544,_0x2b5bcb?util[_0xa516('0x5')](_0x2b5bcb,{'showHidden':![],'depth':null}):'');};exports[_0xa516('0x7')]=function(_0x9c30f6,_0x320ab6){logger[_0xa516('0x7')](_0x9c30f6,_0x320ab6?util[_0xa516('0x5')](_0x320ab6,{'showHidden':![],'depth':null}):'');};exports[_0xa516('0x8')]=function(_0x5b9aae,_0x1c991e){return client[_0xa516('0x8')](_0x5b9aae,{'body':_0x1c991e})['then'](function(_0x2f10ec){logger[_0xa516('0x6')](_0xa516('0x9'),_0x5b9aae,_0x2f10ec?util[_0xa516('0x5')](_0x2f10ec,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x4b105f){logger[_0xa516('0x7')](_0xa516('0x9'),_0x5b9aae,_0x4b105f?util[_0xa516('0x5')](_0x4b105f,{'showHidden':![],'depth':null}):'');});};function getUser(_0x23e367){return client['request'](_0xa516('0xa'),{'options':{'raw':!![],'attributes':['id',_0xa516('0xb'),_0xa516('0xc'),'interface'],'where':_0x23e367,'limit':0x1}})[_0xa516('0xd')](function(_0x2d4bf1){logger[_0xa516('0x6')](_0xa516('0xe'),JSON[_0xa516('0xf')](_0x23e367),_0x2d4bf1?util[_0xa516('0x5')](_0x2d4bf1,{'showHidden':![],'depth':null}):'');return _0x2d4bf1[_0xa516('0x10')][_0xa516('0x11')]?_0x2d4bf1['result'][0x0]:null;});}exports[_0xa516('0x12')]=function(_0x2bd304){return new BPromise(function(_0x3d7030,_0x5be145){if(_0x2bd304){return getUser({'internal':_0x2bd304})['then'](function(_0x45b6de){logger[_0xa516('0x4')](_0xa516('0x13'),_0x2bd304,_0x45b6de?_0xa516('0x14'):_0xa516('0x15'));return _0x3d7030(_0x45b6de);})[_0xa516('0x16')](function(_0x30807a){logger[_0xa516('0x7')](_0xa516('0x17'),_0x30807a?util[_0xa516('0x5')](_0x30807a,{'showHidden':![],'depth':null}):'');return _0x3d7030(null);});}return _0x3d7030(null);});};exports[_0xa516('0x18')]=function(_0x46043f){return new BPromise(function(_0x2212ec,_0x306a5b){if(_0x46043f){return getUser({'interface':_0x46043f})[_0xa516('0xd')](function(_0x422bee){logger[_0xa516('0x4')](_0xa516('0x19'),_0x46043f,_0x422bee?_0xa516('0x14'):_0xa516('0x15'));return _0x2212ec(_0x422bee);})[_0xa516('0x16')](function(_0x51dd72){logger[_0xa516('0x7')](_0xa516('0x1a'),_0x51dd72?util[_0xa516('0x5')](_0x51dd72,{'showHidden':![],'depth':null}):'');return _0x2212ec(null);});}return _0x2212ec(null);});};exports['getUserByName']=function(_0x361f54){return new BPromise(function(_0xfdf7cb,_0x141186){if(_0x361f54){return getUser({'name':_0x361f54})[_0xa516('0xd')](function(_0x228969){logger[_0xa516('0x4')](_0xa516('0x1b'),_0x361f54,_0x228969?_0xa516('0x14'):'notfound');return _0xfdf7cb(_0x228969);})[_0xa516('0x16')](function(_0x354ed6){logger[_0xa516('0x7')](_0xa516('0x1c'),_0x354ed6?util[_0xa516('0x5')](_0x354ed6,{'showHidden':![],'depth':null}):'');return _0xfdf7cb(null);});}return _0xfdf7cb(null);});};exports[_0xa516('0x1d')]=function(_0x4cf00f){return new BPromise(function(_0x932493,_0xbfb0f9){if(_0x4cf00f){return client['request']('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0xa516('0xc'),_0xa516('0x1e'),_0xa516('0x1f'),'acwTimeout'],'where':{'name':_0x4cf00f},'limit':0x1}})[_0xa516('0xd')](function(_0x2fed69){logger['debug'](_0xa516('0x20'),_0x4cf00f,_0x2fed69?util['inspect'](_0x2fed69,{'showHidden':![],'depth':null}):'');logger[_0xa516('0x4')](_0xa516('0x21'),_0x4cf00f,_0x2fed69?_0xa516('0x14'):_0xa516('0x15'));return _0x932493(_0x2fed69['result'][_0xa516('0x11')]?_0x2fed69[_0xa516('0x10')][0x0]:null);})[_0xa516('0x16')](function(_0x1b7824){logger[_0xa516('0x7')](_0xa516('0x22'),_0x1b7824?util[_0xa516('0x5')](_0x1b7824,{'showHidden':![],'depth':null}):'');return _0x932493(null);});}return _0x932493(null);});};exports[_0xa516('0x23')]=function(_0x2ae9f3,_0x438a53){return moment(_0x2ae9f3)[_0xa516('0x24')](_0x438a53,_0xa516('0x25'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xa516('0x26')]=function(_0x65738b,_0x32cbf3){return moment(_0x65738b)['subtract'](_0x32cbf3,_0xa516('0x25'))[_0xa516('0x27')]('YYYY-MM-DD\x20HH:mm:ss');};exports['diffTime']=function(_0x47d19d,_0x5a49a7){return moment(_0x47d19d)['diff'](moment(_0x5a49a7),_0xa516('0x25'));};exports[_0xa516('0x28')]=function(_0x2c1896,_0x1caf9a){return parseInt(_0x2c1896,0xa)+parseInt(_0x1caf9a,0xa);};exports[_0xa516('0x29')]=function(){return moment()[_0xa516('0x27')](_0xa516('0x2a'));};exports['isAfter']=function(_0x584823,_0x2e8de4){if(_0x2e8de4){return moment(_0x584823)['isAfter'](_0x2e8de4);}return!![];};exports[_0xa516('0x2b')]=function(_0xf3f685,_0x1d015e){if(_0x1d015e){return moment(_0xf3f685)['isBefore'](_0x1d015e);}else if(_0xf3f685){return!![];}return![];};
\ No newline at end of file
+var _0xfc9e=['acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','now','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','inspect','debug','error','[utils][request]\x20name:%s','catch','request','GetUser','name','interface','then','[utils][getUser]\x20where:%s','stringify','result','length','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','[utils][getUserByInternal]','info','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','found','[utils][getUserByName]','getVoiceQueueByName','acw'];(function(_0x321b0f,_0x244586){var _0x58368d=function(_0x127f17){while(--_0x127f17){_0x321b0f['push'](_0x321b0f['shift']());}};_0x58368d(++_0x244586);}(_0xfc9e,0x94));var _0xefc9=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0xfc9e[_0x5f42f1];return _0x5534ee;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xefc9('0x0'));var moment=require(_0xefc9('0x1'));var util=require(_0xefc9('0x2'));var client=jayson[_0xefc9('0x3')][_0xefc9('0x4')]({'port':0x2329});var logger=require(_0xefc9('0x5'))('xdr');exports['info']=function(_0x4fc0c3,_0x2974e0){logger['info'](_0x4fc0c3,_0x2974e0?util[_0xefc9('0x6')](_0x2974e0,{'showHidden':![],'depth':null}):'');};exports[_0xefc9('0x7')]=function(_0x49ec46,_0x5a60bb){logger[_0xefc9('0x7')](_0x49ec46,_0x5a60bb?util[_0xefc9('0x6')](_0x5a60bb,{'showHidden':![],'depth':null}):'');};exports[_0xefc9('0x8')]=function(_0x13a012,_0x33ed22){logger[_0xefc9('0x8')](_0x13a012,_0x33ed22?util['inspect'](_0x33ed22,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0xb924a7,_0x491939){return client['request'](_0xb924a7,{'body':_0x491939})['then'](function(_0x514343){logger['debug'](_0xefc9('0x9'),_0xb924a7,_0x514343?util[_0xefc9('0x6')](_0x514343,{'showHidden':![],'depth':null}):'');})[_0xefc9('0xa')](function(_0x5d6da2){logger[_0xefc9('0x8')](_0xefc9('0x9'),_0xb924a7,_0x5d6da2?util[_0xefc9('0x6')](_0x5d6da2,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4942b2){return client[_0xefc9('0xb')](_0xefc9('0xc'),{'options':{'raw':!![],'attributes':['id','internal',_0xefc9('0xd'),_0xefc9('0xe')],'where':_0x4942b2,'limit':0x1}})[_0xefc9('0xf')](function(_0x25455d){logger[_0xefc9('0x7')](_0xefc9('0x10'),JSON[_0xefc9('0x11')](_0x4942b2),_0x25455d?util[_0xefc9('0x6')](_0x25455d,{'showHidden':![],'depth':null}):'');return _0x25455d[_0xefc9('0x12')][_0xefc9('0x13')]?_0x25455d[_0xefc9('0x12')][0x0]:null;});}exports['getUserByInternal']=function(_0x463c63){return new BPromise(function(_0x1e28f8,_0x5dc119){if(_0x463c63){return getUser({'internal':_0x463c63})[_0xefc9('0xf')](function(_0x507e87){logger['info'](_0xefc9('0x14'),_0x463c63,_0x507e87?'found':_0xefc9('0x15'));return _0x1e28f8(_0x507e87);})['catch'](function(_0x16981d){logger[_0xefc9('0x8')](_0xefc9('0x16'),_0x16981d?util[_0xefc9('0x6')](_0x16981d,{'showHidden':![],'depth':null}):'');return _0x1e28f8(null);});}return _0x1e28f8(null);});};exports['getUserByInterface']=function(_0x2343dc){return new BPromise(function(_0x24b8df,_0xedb308){if(_0x2343dc){return getUser({'interface':_0x2343dc})[_0xefc9('0xf')](function(_0x54f118){logger[_0xefc9('0x17')](_0xefc9('0x18'),_0x2343dc,_0x54f118?'found':'notfound');return _0x24b8df(_0x54f118);})[_0xefc9('0xa')](function(_0x4f4065){logger[_0xefc9('0x8')](_0xefc9('0x19'),_0x4f4065?util[_0xefc9('0x6')](_0x4f4065,{'showHidden':![],'depth':null}):'');return _0x24b8df(null);});}return _0x24b8df(null);});};exports[_0xefc9('0x1a')]=function(_0x12d4f7){return new BPromise(function(_0x301a69,_0x48a250){if(_0x12d4f7){return getUser({'name':_0x12d4f7})[_0xefc9('0xf')](function(_0x48b422){logger['info'](_0xefc9('0x1b'),_0x12d4f7,_0x48b422?_0xefc9('0x1c'):_0xefc9('0x15'));return _0x301a69(_0x48b422);})[_0xefc9('0xa')](function(_0x7bc556){logger['error'](_0xefc9('0x1d'),_0x7bc556?util[_0xefc9('0x6')](_0x7bc556,{'showHidden':![],'depth':null}):'');return _0x301a69(null);});}return _0x301a69(null);});};exports[_0xefc9('0x1e')]=function(_0x597249){return new BPromise(function(_0x515420,_0x531791){if(_0x597249){return client[_0xefc9('0xb')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0xefc9('0xd'),'type',_0xefc9('0x1f'),_0xefc9('0x20')],'where':{'name':_0x597249},'limit':0x1}})[_0xefc9('0xf')](function(_0x34bbf6){logger[_0xefc9('0x7')]('[utils][getVoiceQueueByName]\x20name:%s',_0x597249,_0x34bbf6?util['inspect'](_0x34bbf6,{'showHidden':![],'depth':null}):'');logger[_0xefc9('0x17')](_0xefc9('0x21'),_0x597249,_0x34bbf6?_0xefc9('0x1c'):_0xefc9('0x15'));return _0x515420(_0x34bbf6[_0xefc9('0x12')]['length']?_0x34bbf6[_0xefc9('0x12')][0x0]:null);})[_0xefc9('0xa')](function(_0x4a9a19){logger[_0xefc9('0x8')](_0xefc9('0x22'),_0x4a9a19?util['inspect'](_0x4a9a19,{'showHidden':![],'depth':null}):'');return _0x515420(null);});}return _0x515420(null);});};exports[_0xefc9('0x23')]=function(_0x1484e1,_0x1cf88e){return moment(_0x1484e1)[_0xefc9('0x24')](_0x1cf88e,_0xefc9('0x25'))[_0xefc9('0x26')](_0xefc9('0x27'));};exports[_0xefc9('0x28')]=function(_0x775096,_0x2ae15c){return moment(_0x775096)[_0xefc9('0x29')](_0x2ae15c,'seconds')[_0xefc9('0x26')]('YYYY-MM-DD\x20HH:mm:ss');};exports['diffTime']=function(_0x221f18,_0x1652e4){return moment(_0x221f18)['diff'](moment(_0x1652e4),'seconds');};exports['sumTime']=function(_0x697eca,_0xf4302e){return parseInt(_0x697eca,0xa)+parseInt(_0xf4302e,0xa);};exports[_0xefc9('0x2a')]=function(){return moment()['format'](_0xefc9('0x27'));};exports[_0xefc9('0x2b')]=function(_0x2673e3,_0x166b5c){if(_0x166b5c){return moment(_0x2673e3)[_0xefc9('0x2b')](_0x166b5c);}return!![];};exports[_0xefc9('0x2c')]=function(_0xe74d15,_0x4d5328){if(_0x4d5328){return moment(_0xe74d15)[_0xefc9('0x2c')](_0x4d5328);}else if(_0xe74d15){return!![];}return![];};
\ No newline at end of file
index 77caf5d..45561fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd1=['method','headers','x-forwarded-for','url','statusCode','inspect','device','remoteAddress','responseTime','other','agent_id','agent_name','test','setupLoggers','express-winston','path','util','./loggers','fileLogger','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','role','name','ensureDir','then','user','no-user','data','timestamp','catch','api','auth','set','client-side-logger','use','logger','isEmpty','body','\x20body=%s','format'];(function(_0x21b037,_0x1f310a){var _0x20556c=function(_0x1855a9){while(--_0x1855a9){_0x21b037['push'](_0x21b037['shift']());}};_0x20556c(++_0x1f310a);}(_0xabd1,0x1e4));var _0x1abd=function(_0x405385,_0x56f573){_0x405385=_0x405385-0x0;var _0x43837b=_0xabd1[_0x405385];return _0x43837b;};var fs=require('fs-extra');var _=require('lodash');var ewinston=require(_0x1abd('0x0'));var path=require(_0x1abd('0x1'));var util=require(_0x1abd('0x2'));var fileLogger=require(_0x1abd('0x3'))[_0x1abd('0x4')];var safeTemplate=require(_0x1abd('0x5'))[_0x1abd('0x6')];var maskSensitiveData=require(_0x1abd('0x7'))[_0x1abd('0x8')];function ClientSideLogger(){function _0x214a5d(_0x4ec548){var _0xed3316=path[_0x1abd('0x9')](_0x1abd('0xa'),_0x1abd('0xb'),_0x1abd('0xc'));var _0x4c7032=path['join'](_0x1abd('0xd'),_0x4ec548[_0x1abd('0xe')]+'-'+_0x4ec548[_0x1abd('0xf')]);return fs[_0x1abd('0x10')](path[_0x1abd('0x9')](_0xed3316,_0x4c7032))[_0x1abd('0x11')](function(){var _0x382363=fileLogger(_0x1abd('0xd'),path[_0x1abd('0x9')](_0xed3316,_0x4c7032));return _0x382363;})['catch'](function(_0x35a28a){throw _0x35a28a;});}this['log']=function(_0x30fa1b,_0x5cb905,_0x41f37b,_0x49788d){return _0x214a5d(_0x30fa1b[_0x1abd('0x12')])['then'](function(_0x1dc4c0){var _0x2d19fb=_0x1dc4c0[_0x5cb905];return _0x2d19fb;})['then'](function(_0x4e266f){var _0x45a7ba=_0x30fa1b[_0x1abd('0x12')]?_0x30fa1b['user']['id']:_0x1abd('0x13');var _0x3e7266=_0x49788d[_0x1abd('0x14')];var _0x2f3a66=_0x49788d[_0x1abd('0x15')];var _0x3240a1=new Date(Number(_0x2f3a66));return _0x4e266f(_0x45a7ba,_0x3240a1,_0x41f37b,_0x3e7266);})[_0x1abd('0x16')](function(_0x563703){fileLogger(_0x1abd('0xd'))['error'](_0x563703);});};}function setupLoggers(_0x37f113){return new Promise(function(_0x4e50c7){var _0x5ee9b8=new ClientSideLogger();var _0x23665a=fileLogger(_0x1abd('0x17'));var _0x3bea5a=fileLogger(_0x1abd('0x18'));_0x37f113[_0x1abd('0x19')](_0x1abd('0x1a'),_0x5ee9b8);_0x37f113[_0x1abd('0x1b')](ewinston[_0x1abd('0x1c')]({'winstonInstance':_0x23665a,'meta':![],'statusLevels':!![],'msg':function(_0x199983,_0x5d8088){var _0x460a25='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x1abd('0x1d')](_0x199983[_0x1abd('0x1e')])){_0x460a25+=_0x1abd('0x1f');var _0x37cdc1=_0x199983[_0x1abd('0x1e')];maskSensitiveData(_0x37cdc1);}return safeTemplate(util[_0x1abd('0x20')](_0x460a25,_0x199983[_0x1abd('0x21')],_0x199983[_0x1abd('0x22')][_0x1abd('0x23')]?_0x199983[_0x1abd('0x22')][_0x1abd('0x23')]:_0x199983['connection']['remoteAddress']||_0x199983['ip'],_0x199983[_0x1abd('0x24')],_0x5d8088[_0x1abd('0x25')],_0x5d8088['responseTime'],_0x199983[_0x1abd('0x12')]?_0x199983['user']['id']:null,_0x199983[_0x1abd('0x12')]?_0x199983['user'][_0x1abd('0xf')]:null,_0x199983[_0x1abd('0x12')]?_0x199983[_0x1abd('0x12')][_0x1abd('0xe')]:null,_0x37cdc1?util[_0x1abd('0x26')](_0x37cdc1,![],null):''));}}));_0x37f113[_0x1abd('0x1b')](ewinston['logger']({'winstonInstance':_0x3bea5a,'meta':![],'statusLevels':!![],'msg':function(_0x404178,_0xcefdcf){var _0x5ac44e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x404178['body']&&_0x404178['body'][_0x1abd('0x27')]&&_0x404178[_0x1abd('0x1e')]['agent_id']){_0x5ac44e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x1abd('0x20')](_0x5ac44e,_0x404178['method'],_0x404178[_0x1abd('0x22')][_0x1abd('0x23')]?_0x404178['headers']['x-forwarded-for']:_0x404178['connection'][_0x1abd('0x28')]||_0x404178['ip'],_0x404178[_0x1abd('0x24')],_0xcefdcf[_0x1abd('0x25')],_0xcefdcf[_0x1abd('0x29')],_0x404178['user']?_0x404178[_0x1abd('0x12')]['id']:null,_0x404178[_0x1abd('0x12')]?_0x404178[_0x1abd('0x12')][_0x1abd('0xf')]:null,_0x404178[_0x1abd('0x12')]?_0x404178[_0x1abd('0x12')]['role']:null,_0x404178['body']&&_0x404178[_0x1abd('0x1e')]['device']?_0x404178['body']['device']:_0x1abd('0x2a'),_0x404178['body']&&_0x404178[_0x1abd('0x1e')][_0x1abd('0x2b')]?_0x404178['body'][_0x1abd('0x2b')]:'',_0x404178[_0x1abd('0x1e')]&&_0x404178[_0x1abd('0x1e')][_0x1abd('0x2c')]?_0x404178[_0x1abd('0x1e')][_0x1abd('0x2c')]:'');},'ignoreRoute':function(_0x144854){var _0x58da6f=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x58da6f[_0x1abd('0x2d')](_0x144854[_0x1abd('0x24')]);}}));return _0x4e50c7();});}exports[_0x1abd('0x2e')]=setupLoggers;
\ No newline at end of file
+var _0xaa81=['util','./loggers','fileLogger','./safe-template','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','name','ensureDir','catch','then','user','no-user','data','timestamp','error','api','auth','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','other','agent_name','test','setupLoggers','fs-extra','lodash','express-winston'];(function(_0x21920e,_0x2441dc){var _0x1932e3=function(_0xb4456){while(--_0xb4456){_0x21920e['push'](_0x21920e['shift']());}};_0x1932e3(++_0x2441dc);}(_0xaa81,0x195));var _0x1aa8=function(_0x1ce44b,_0x589111){_0x1ce44b=_0x1ce44b-0x0;var _0x53d9e6=_0xaa81[_0x1ce44b];return _0x53d9e6;};var fs=require(_0x1aa8('0x0'));var _=require(_0x1aa8('0x1'));var ewinston=require(_0x1aa8('0x2'));var path=require('path');var util=require(_0x1aa8('0x3'));var fileLogger=require(_0x1aa8('0x4'))[_0x1aa8('0x5')];var safeTemplate=require(_0x1aa8('0x6'))['safeTemplate'];var maskSensitiveData=require(_0x1aa8('0x7'))[_0x1aa8('0x8')];function ClientSideLogger(){function _0x997c20(_0xe9dec7){var _0x549b92=path[_0x1aa8('0x9')](_0x1aa8('0xa'),_0x1aa8('0xb'),_0x1aa8('0xc'));var _0x272967=path[_0x1aa8('0x9')](_0x1aa8('0xd'),_0xe9dec7['role']+'-'+_0xe9dec7[_0x1aa8('0xe')]);return fs[_0x1aa8('0xf')](path[_0x1aa8('0x9')](_0x549b92,_0x272967))['then'](function(){var _0x62b759=fileLogger(_0x1aa8('0xd'),path['join'](_0x549b92,_0x272967));return _0x62b759;})[_0x1aa8('0x10')](function(_0x27be03){throw _0x27be03;});}this[_0x1aa8('0xb')]=function(_0x3dbacb,_0x4211d8,_0x42c782,_0x5bb4bd){return _0x997c20(_0x3dbacb['user'])[_0x1aa8('0x11')](function(_0x5ef251){var _0x131957=_0x5ef251[_0x4211d8];return _0x131957;})[_0x1aa8('0x11')](function(_0x3cfc54){var _0x3bf5cf=_0x3dbacb[_0x1aa8('0x12')]?_0x3dbacb[_0x1aa8('0x12')]['id']:_0x1aa8('0x13');var _0x5dc1f1=_0x5bb4bd[_0x1aa8('0x14')];var _0x444e97=_0x5bb4bd[_0x1aa8('0x15')];var _0x458426=new Date(Number(_0x444e97));return _0x3cfc54(_0x3bf5cf,_0x458426,_0x42c782,_0x5dc1f1);})[_0x1aa8('0x10')](function(_0x4aecf4){fileLogger('client')[_0x1aa8('0x16')](_0x4aecf4);});};}function setupLoggers(_0x352b0c){return new Promise(function(_0x263ffb){var _0x5c0ca0=new ClientSideLogger();var _0x257427=fileLogger(_0x1aa8('0x17'));var _0x25989b=fileLogger(_0x1aa8('0x18'));_0x352b0c[_0x1aa8('0x19')](_0x1aa8('0x1a'),_0x5c0ca0);_0x352b0c[_0x1aa8('0x1b')](ewinston[_0x1aa8('0x1c')]({'winstonInstance':_0x257427,'meta':![],'statusLevels':!![],'msg':function(_0x1066e7,_0xdb16ca){var _0xd80640=_0x1aa8('0x1d');if(!_[_0x1aa8('0x1e')](_0x1066e7[_0x1aa8('0x1f')])){_0xd80640+=_0x1aa8('0x20');var _0xb9fc69=_0x1066e7[_0x1aa8('0x1f')];maskSensitiveData(_0xb9fc69);}return safeTemplate(util[_0x1aa8('0x21')](_0xd80640,_0x1066e7[_0x1aa8('0x22')],_0x1066e7['headers']['x-forwarded-for']?_0x1066e7[_0x1aa8('0x23')][_0x1aa8('0x24')]:_0x1066e7[_0x1aa8('0x25')][_0x1aa8('0x26')]||_0x1066e7['ip'],_0x1066e7[_0x1aa8('0x27')],_0xdb16ca[_0x1aa8('0x28')],_0xdb16ca[_0x1aa8('0x29')],_0x1066e7['user']?_0x1066e7[_0x1aa8('0x12')]['id']:null,_0x1066e7[_0x1aa8('0x12')]?_0x1066e7[_0x1aa8('0x12')][_0x1aa8('0xe')]:null,_0x1066e7[_0x1aa8('0x12')]?_0x1066e7[_0x1aa8('0x12')][_0x1aa8('0x2a')]:null,_0xb9fc69?util['inspect'](_0xb9fc69,![],null):''));}}));_0x352b0c[_0x1aa8('0x1b')](ewinston[_0x1aa8('0x1c')]({'winstonInstance':_0x25989b,'meta':![],'statusLevels':!![],'msg':function(_0x18a653,_0x48de7b){var _0xb013a0=_0x1aa8('0x2b');if(_0x18a653[_0x1aa8('0x1f')]&&_0x18a653[_0x1aa8('0x1f')][_0x1aa8('0x2c')]&&_0x18a653[_0x1aa8('0x1f')][_0x1aa8('0x2d')]){_0xb013a0=_0x1aa8('0x2e');}return util[_0x1aa8('0x21')](_0xb013a0,_0x18a653[_0x1aa8('0x22')],_0x18a653[_0x1aa8('0x23')][_0x1aa8('0x24')]?_0x18a653[_0x1aa8('0x23')][_0x1aa8('0x24')]:_0x18a653[_0x1aa8('0x25')][_0x1aa8('0x26')]||_0x18a653['ip'],_0x18a653[_0x1aa8('0x27')],_0x48de7b[_0x1aa8('0x28')],_0x48de7b[_0x1aa8('0x29')],_0x18a653[_0x1aa8('0x12')]?_0x18a653['user']['id']:null,_0x18a653['user']?_0x18a653[_0x1aa8('0x12')]['name']:null,_0x18a653[_0x1aa8('0x12')]?_0x18a653[_0x1aa8('0x12')][_0x1aa8('0x2a')]:null,_0x18a653[_0x1aa8('0x1f')]&&_0x18a653['body'][_0x1aa8('0x2c')]?_0x18a653[_0x1aa8('0x1f')][_0x1aa8('0x2c')]:_0x1aa8('0x2f'),_0x18a653[_0x1aa8('0x1f')]&&_0x18a653[_0x1aa8('0x1f')][_0x1aa8('0x2d')]?_0x18a653['body'][_0x1aa8('0x2d')]:'',_0x18a653[_0x1aa8('0x1f')]&&_0x18a653[_0x1aa8('0x1f')]['agent_name']?_0x18a653[_0x1aa8('0x1f')][_0x1aa8('0x30')]:'');},'ignoreRoute':function(_0x224fcd){var _0x4f4f23=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4f4f23[_0x1aa8('0x31')](_0x224fcd['url']);}}));return _0x263ffb();});}exports[_0x1aa8('0x32')]=setupLoggers;
\ No newline at end of file
index 27c5d8c..59b0a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9726=['startOf','day','endOf','isBetween','format','ddd','includes','dowCompare','date','daysInMonth','max','MMM','monthCompare','guess','isMoment','split','padStart','length','iftime','lodash','moment-timezone','map','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','isValid','locale','weekdaysShort','toLowerCase','slice','concat','exports','monthsShort','indexOf','circularMonthInterval','clone','hours','minutes','isBefore'];(function(_0x44454f,_0x4bfbe8){var _0x475150=function(_0x1cde13){while(--_0x1cde13){_0x44454f['push'](_0x44454f['shift']());}};_0x475150(++_0x4bfbe8);}(_0x9726,0xaf));var _0x6972=function(_0xfe363a,_0x59828b){_0xfe363a=_0xfe363a-0x0;var _0xdff98a=_0x9726[_0xfe363a];return _0xdff98a;};var _=require(_0x6972('0x0'));var moment=require(_0x6972('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0x6972('0x2')](function(_0x15a80b){return _0x15a80b['source'];})[_0x6972('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x6972('0x4');var EINVALID_DATE=_0x6972('0x5');function throwIfDateNotValid(_0x4fe2bf){if(!_0x4fe2bf[_0x6972('0x6')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x40a3e4){var _0x50091e=_0x40a3e4['split'](':')['map'](function(_0x9e2e2d){return parseInt(_0x9e2e2d,0xa);});var _0x2b6187=_0x50091e[0x0];var _0x5ad4b6=_0x50091e[0x1];if(_0x2b6187<0x0||_0x2b6187>0x17||_0x5ad4b6<0x0||_0x5ad4b6>0x3b){throw new Error(EINVALID_DATE);}return[_0x2b6187,_0x5ad4b6];}function circularDoWInterval(_0x38cd17,_0x447e9c){if(_0x38cd17===_0x447e9c){return[_0x38cd17];}else{var _0xdbde91=moment[_0x6972('0x7')]();moment[_0x6972('0x7')]('en');var _0x26e99f=moment[_0x6972('0x8')]()[_0x6972('0x2')](function(_0x2a7258){return _0x2a7258[_0x6972('0x9')]();});moment[_0x6972('0x7')](_0xdbde91);var _0x5df5a0=_0x26e99f['indexOf'](_0x38cd17);var _0x2e7137=_0x26e99f['indexOf'](_0x447e9c);if(_0x2e7137>_0x5df5a0){return _0x26e99f[_0x6972('0xa')](_0x5df5a0,_0x2e7137+0x1);}else{var _0x359b8e=_0x26e99f[_0x6972('0xa')](0x0,_0x2e7137+0x1);var _0x1badea=_0x26e99f[_0x6972('0xa')](_0x5df5a0);return _0x1badea[_0x6972('0xb')](_0x359b8e);}}}module[_0x6972('0xc')]['circularDoWInterval']=circularDoWInterval;function circularMonthInterval(_0x374744,_0x1ef6ff){if(_0x374744===_0x1ef6ff){return[_0x374744];}else{var _0x36c78e=moment[_0x6972('0x7')]();moment[_0x6972('0x7')]('en');var _0x4aac09=moment[_0x6972('0xd')]()['map'](function(_0x2a7ddd){return _0x2a7ddd[_0x6972('0x9')]();});moment['locale'](_0x36c78e);var _0x25d578=_0x4aac09['indexOf'](_0x374744);var _0xdaabe6=_0x4aac09[_0x6972('0xe')](_0x1ef6ff);if(_0xdaabe6>_0x25d578){return _0x4aac09['slice'](_0x25d578,_0xdaabe6+0x1);}else{var _0x3f2a28=_0x4aac09[_0x6972('0xa')](0x0,_0xdaabe6+0x1);var _0x226a6a=_0x4aac09[_0x6972('0xa')](_0x25d578);return _0x226a6a[_0x6972('0xb')](_0x3f2a28);}}}module[_0x6972('0xc')][_0x6972('0xf')]=circularMonthInterval;function parseDom(_0xa3afa6){var _0x14345e=parseInt(_0xa3afa6,0xa);if(_0x14345e<0x1||_0x14345e>0x1f){throw new Error(EINVALID_DATE);}return _0x14345e;}function timeCompare(_0x28330e,_0x2205d0,_0x5d55c6){var _0x2d1d93=_0x28330e[_0x6972('0x10')]();var _0x41ded7=extractTime(_0x2205d0);var _0x1f53ba=_0x41ded7[0x0];var _0x8daa75=_0x41ded7[0x1];var _0x1cf10d=_0x28330e[_0x6972('0x10')]()[_0x6972('0x11')](_0x1f53ba)[_0x6972('0x12')](_0x8daa75);throwIfDateNotValid(_0x1cf10d);var _0x28e50b=extractTime(_0x5d55c6);var _0x1f21eb=_0x28e50b[0x0];var _0x19882a=_0x28e50b[0x1];var _0x3d0292=_0x28330e['clone']()[_0x6972('0x11')](_0x1f21eb)['minutes'](_0x19882a);throwIfDateNotValid(_0x3d0292);if(_0x3d0292[_0x6972('0x13')](_0x1cf10d)){var _0x35a6d7=_0x2d1d93[_0x6972('0x10')]()[_0x6972('0x14')](_0x6972('0x15'));var _0x3ce24f=_0x2d1d93[_0x6972('0x10')]()[_0x6972('0x16')](_0x6972('0x15'));return _0x2d1d93[_0x6972('0x17')](_0x1cf10d,_0x3ce24f,undefined,'[]')||_0x2d1d93['isBetween'](_0x35a6d7,_0x3d0292,undefined,'[]');}else{return _0x2d1d93[_0x6972('0x17')](_0x1cf10d,_0x3d0292,undefined,'[]');}}module[_0x6972('0xc')]['timeCompare']=timeCompare;function dowCompare(_0x3509dc,_0x5584a7,_0x183305){var _0xeae0bd=_0x3509dc['locale']('en')[_0x6972('0x18')](_0x6972('0x19'))[_0x6972('0x9')]();return circularDoWInterval(_0x5584a7,_0x183305)[_0x6972('0x1a')](_0xeae0bd);}module[_0x6972('0xc')][_0x6972('0x1b')]=dowCompare;function domCompare(_0x22e311,_0x152fb0,_0xc5f967){var _0xce91ed=_0x22e311[_0x6972('0x1c')]();if(_0x152fb0===_0xc5f967){return _0xce91ed===_0x152fb0;}else{var _0x5add50=_0x22e311[_0x6972('0x1d')]();var _0x17c980=_0x152fb0<_0xc5f967;let _0x8f88a=![];var _0xeeb690=0x0;var _0x55ac2d=0x0;if(_0x17c980){_0xeeb690=Math[_0x6972('0x1e')](0x1,_0x152fb0);_0x55ac2d=Math['min'](_0xc5f967,_0x5add50);_0x8f88a=_0xce91ed>=_0xeeb690&&_0xce91ed<=_0x55ac2d;}else{_0xeeb690=Math['min'](_0x152fb0,_0x5add50);_0x55ac2d=Math['max'](0x1,_0xc5f967);_0x8f88a=_0xce91ed>=_0xeeb690||_0xce91ed<=_0x55ac2d;}return _0x8f88a;}}module[_0x6972('0xc')]['domCompare']=domCompare;function monthCompare(_0x24d16e,_0x100e2c,_0x4acf9e){var _0xd79379=_0x24d16e[_0x6972('0x7')]('en')['format'](_0x6972('0x1f'))[_0x6972('0x9')]();return circularMonthInterval(_0x100e2c,_0x4acf9e)[_0x6972('0x1a')](_0xd79379);}module[_0x6972('0xc')][_0x6972('0x20')]=monthCompare;function iftime(_0x434643,_0x504132=moment['tz'][_0x6972('0x21')](),_0x10c3fe=moment()){if(!validateRx['test'](_0x434643)){throw new Error(EINVALID_STRING);}else{var _0x25b889=(moment[_0x6972('0x22')](_0x10c3fe)?_0x10c3fe[_0x6972('0x10')]():moment(_0x10c3fe))['tz'](_0x504132)[_0x6972('0x7')]('en');throwIfDateNotValid(_0x25b889);var _0x18d9dd=_0x434643['split'](',');var _0x41942c=_0x18d9dd[0x0];var _0x20339a=_0x18d9dd[0x1];var _0x47aec8=_0x18d9dd[0x2];var _0x50744c=_0x18d9dd[0x3];let _0x4e76a8=!![];if(_0x41942c!=='*'){var _0x56901a=_0x41942c[_0x6972('0x23')]('-');var _0x34a5f3=_[_0x6972('0x24')](_0x56901a[0x0],0x5,'0');var _0xe00131=_0x56901a[_0x6972('0x25')]===0x2?_[_0x6972('0x24')](_0x56901a[0x1],0x5,'0'):_0x34a5f3;_0x4e76a8=timeCompare(_0x25b889,_0x34a5f3,_0xe00131);}let _0xa35759=!![];if(_0x20339a!=='*'){var _0x45b5bc=_0x20339a[_0x6972('0x23')]('-');var _0x2957a7=_0x45b5bc[0x0];var _0x4eb381=_0x45b5bc[_0x6972('0x25')]===0x2?_0x45b5bc[0x1]:_0x2957a7;_0xa35759=dowCompare(_0x25b889,_0x2957a7,_0x4eb381);}let _0x21a91a=!![];if(_0x47aec8!=='*'){var _0x4df26c=_0x47aec8[_0x6972('0x23')]('-');var _0x5c42b8=parseDom(_0x4df26c[0x0]);var _0x2cfa85=_0x4df26c[_0x6972('0x25')]===0x2?parseDom(_0x4df26c[0x1]):_0x5c42b8;_0x21a91a=domCompare(_0x25b889,_0x5c42b8,_0x2cfa85);}let _0x3d79b6=!![];if(_0x50744c!=='*'){var _0x2277a0=_0x50744c[_0x6972('0x23')]('-');var _0x2bfd13=_0x2277a0[0x0];var _0x2ba1fb=_0x2277a0[_0x6972('0x25')]===0x2?_0x2277a0[0x1]:_0x2277a0[0x0];_0x3d79b6=monthCompare(_0x25b889,_0x2bfd13,_0x2ba1fb);}return _0x4e76a8&&_0xa35759&&_0x21a91a&&_0x3d79b6;}}module[_0x6972('0xc')][_0x6972('0x26')]=iftime;
\ No newline at end of file
+var _0x0869=['split','padStart','length','lodash','moment-timezone','map','source','join','Interval\x20string\x20not\x20valid','Date\x20not\x20valid','isValid','locale','weekdaysShort','indexOf','slice','concat','circularDoWInterval','monthsShort','toLowerCase','exports','circularMonthInterval','clone','hours','isBefore','startOf','endOf','day','isBetween','timeCompare','ddd','includes','dowCompare','min','max','domCompare','format','MMM','monthCompare','guess','test'];(function(_0x586a5b,_0x13d925){var _0x1b4e04=function(_0x3d30ca){while(--_0x3d30ca){_0x586a5b['push'](_0x586a5b['shift']());}};_0x1b4e04(++_0x13d925);}(_0x0869,0x11b));var _0x9086=function(_0x5a0ff1,_0x2a26a9){_0x5a0ff1=_0x5a0ff1-0x0;var _0x5ddf7d=_0x0869[_0x5a0ff1];return _0x5ddf7d;};var _=require(_0x9086('0x0'));var moment=require(_0x9086('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0x9086('0x2')](function(_0x1300e1){return _0x1300e1[_0x9086('0x3')];})[_0x9086('0x4')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x9086('0x5');var EINVALID_DATE=_0x9086('0x6');function throwIfDateNotValid(_0x48314e){if(!_0x48314e[_0x9086('0x7')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x114566){var _0x302a65=_0x114566['split'](':')[_0x9086('0x2')](function(_0x592f29){return parseInt(_0x592f29,0xa);});var _0x561040=_0x302a65[0x0];var _0x60a1ae=_0x302a65[0x1];if(_0x561040<0x0||_0x561040>0x17||_0x60a1ae<0x0||_0x60a1ae>0x3b){throw new Error(EINVALID_DATE);}return[_0x561040,_0x60a1ae];}function circularDoWInterval(_0x17a3f3,_0x52be0e){if(_0x17a3f3===_0x52be0e){return[_0x17a3f3];}else{var _0x46b0d9=moment[_0x9086('0x8')]();moment['locale']('en');var _0x4cef7a=moment[_0x9086('0x9')]()['map'](function(_0xb141c4){return _0xb141c4['toLowerCase']();});moment[_0x9086('0x8')](_0x46b0d9);var _0x27ff64=_0x4cef7a[_0x9086('0xa')](_0x17a3f3);var _0x25b866=_0x4cef7a[_0x9086('0xa')](_0x52be0e);if(_0x25b866>_0x27ff64){return _0x4cef7a[_0x9086('0xb')](_0x27ff64,_0x25b866+0x1);}else{var _0xb99d35=_0x4cef7a[_0x9086('0xb')](0x0,_0x25b866+0x1);var _0x27b86f=_0x4cef7a[_0x9086('0xb')](_0x27ff64);return _0x27b86f[_0x9086('0xc')](_0xb99d35);}}}module['exports'][_0x9086('0xd')]=circularDoWInterval;function circularMonthInterval(_0x105ac4,_0x214125){if(_0x105ac4===_0x214125){return[_0x105ac4];}else{var _0x159a3b=moment[_0x9086('0x8')]();moment['locale']('en');var _0x410c9b=moment[_0x9086('0xe')]()['map'](function(_0x17c083){return _0x17c083[_0x9086('0xf')]();});moment[_0x9086('0x8')](_0x159a3b);var _0x57b844=_0x410c9b['indexOf'](_0x105ac4);var _0x644313=_0x410c9b[_0x9086('0xa')](_0x214125);if(_0x644313>_0x57b844){return _0x410c9b[_0x9086('0xb')](_0x57b844,_0x644313+0x1);}else{var _0x4d929d=_0x410c9b[_0x9086('0xb')](0x0,_0x644313+0x1);var _0x1b3f1d=_0x410c9b[_0x9086('0xb')](_0x57b844);return _0x1b3f1d['concat'](_0x4d929d);}}}module[_0x9086('0x10')][_0x9086('0x11')]=circularMonthInterval;function parseDom(_0x28f175){var _0x2fffee=parseInt(_0x28f175,0xa);if(_0x2fffee<0x1||_0x2fffee>0x1f){throw new Error(EINVALID_DATE);}return _0x2fffee;}function timeCompare(_0x1ec2e1,_0x7bbb7f,_0x376ec0){var _0x4af934=_0x1ec2e1[_0x9086('0x12')]();var _0x227ce6=extractTime(_0x7bbb7f);var _0x4e2634=_0x227ce6[0x0];var _0x457829=_0x227ce6[0x1];var _0x200c25=_0x1ec2e1[_0x9086('0x12')]()['hours'](_0x4e2634)['minutes'](_0x457829);throwIfDateNotValid(_0x200c25);var _0x44aacb=extractTime(_0x376ec0);var _0x1764c0=_0x44aacb[0x0];var _0x367b0f=_0x44aacb[0x1];var _0x2aa5f4=_0x1ec2e1[_0x9086('0x12')]()[_0x9086('0x13')](_0x1764c0)['minutes'](_0x367b0f);throwIfDateNotValid(_0x2aa5f4);if(_0x2aa5f4[_0x9086('0x14')](_0x200c25)){var _0x27d910=_0x4af934['clone']()[_0x9086('0x15')]('day');var _0x36e4b7=_0x4af934['clone']()[_0x9086('0x16')](_0x9086('0x17'));return _0x4af934['isBetween'](_0x200c25,_0x36e4b7,undefined,'[]')||_0x4af934['isBetween'](_0x27d910,_0x2aa5f4,undefined,'[]');}else{return _0x4af934[_0x9086('0x18')](_0x200c25,_0x2aa5f4,undefined,'[]');}}module[_0x9086('0x10')][_0x9086('0x19')]=timeCompare;function dowCompare(_0x5933b7,_0x2cc01d,_0x52cfb5){var _0x4c579f=_0x5933b7[_0x9086('0x8')]('en')['format'](_0x9086('0x1a'))[_0x9086('0xf')]();return circularDoWInterval(_0x2cc01d,_0x52cfb5)[_0x9086('0x1b')](_0x4c579f);}module[_0x9086('0x10')][_0x9086('0x1c')]=dowCompare;function domCompare(_0x57df08,_0x5a586e,_0x347fd1){var _0x1b7498=_0x57df08['date']();if(_0x5a586e===_0x347fd1){return _0x1b7498===_0x5a586e;}else{var _0x3b8f97=_0x57df08['daysInMonth']();var _0x176641=_0x5a586e<_0x347fd1;let _0x10bb18=![];var _0x18d38b=0x0;var _0x174628=0x0;if(_0x176641){_0x18d38b=Math['max'](0x1,_0x5a586e);_0x174628=Math[_0x9086('0x1d')](_0x347fd1,_0x3b8f97);_0x10bb18=_0x1b7498>=_0x18d38b&&_0x1b7498<=_0x174628;}else{_0x18d38b=Math[_0x9086('0x1d')](_0x5a586e,_0x3b8f97);_0x174628=Math[_0x9086('0x1e')](0x1,_0x347fd1);_0x10bb18=_0x1b7498>=_0x18d38b||_0x1b7498<=_0x174628;}return _0x10bb18;}}module[_0x9086('0x10')][_0x9086('0x1f')]=domCompare;function monthCompare(_0xe57a2c,_0x458bc4,_0x314a04){var _0x137ff7=_0xe57a2c[_0x9086('0x8')]('en')[_0x9086('0x20')](_0x9086('0x21'))[_0x9086('0xf')]();return circularMonthInterval(_0x458bc4,_0x314a04)[_0x9086('0x1b')](_0x137ff7);}module['exports'][_0x9086('0x22')]=monthCompare;function iftime(_0x571880,_0x3861b6=moment['tz'][_0x9086('0x23')](),_0xed1a70=moment()){if(!validateRx[_0x9086('0x24')](_0x571880)){throw new Error(EINVALID_STRING);}else{var _0x3d36d4=(moment['isMoment'](_0xed1a70)?_0xed1a70[_0x9086('0x12')]():moment(_0xed1a70))['tz'](_0x3861b6)['locale']('en');throwIfDateNotValid(_0x3d36d4);var _0x5d78f8=_0x571880[_0x9086('0x25')](',');var _0x39fbe6=_0x5d78f8[0x0];var _0xef92f1=_0x5d78f8[0x1];var _0xe75d41=_0x5d78f8[0x2];var _0x5dc3ba=_0x5d78f8[0x3];let _0xd8a4fc=!![];if(_0x39fbe6!=='*'){var _0x392313=_0x39fbe6['split']('-');var _0x24e3cd=_[_0x9086('0x26')](_0x392313[0x0],0x5,'0');var _0x5ec21b=_0x392313[_0x9086('0x27')]===0x2?_[_0x9086('0x26')](_0x392313[0x1],0x5,'0'):_0x24e3cd;_0xd8a4fc=timeCompare(_0x3d36d4,_0x24e3cd,_0x5ec21b);}let _0x1b8859=!![];if(_0xef92f1!=='*'){var _0xde56c=_0xef92f1['split']('-');var _0x2273af=_0xde56c[0x0];var _0x36f64f=_0xde56c[_0x9086('0x27')]===0x2?_0xde56c[0x1]:_0x2273af;_0x1b8859=dowCompare(_0x3d36d4,_0x2273af,_0x36f64f);}let _0x50ad74=!![];if(_0xe75d41!=='*'){var _0x1c5510=_0xe75d41[_0x9086('0x25')]('-');var _0x3749ad=parseDom(_0x1c5510[0x0]);var _0x5d140f=_0x1c5510[_0x9086('0x27')]===0x2?parseDom(_0x1c5510[0x1]):_0x3749ad;_0x50ad74=domCompare(_0x3d36d4,_0x3749ad,_0x5d140f);}let _0x4df9b5=!![];if(_0x5dc3ba!=='*'){var _0x34b99f=_0x5dc3ba[_0x9086('0x25')]('-');var _0x3aeb19=_0x34b99f[0x0];var _0x4de6d6=_0x34b99f['length']===0x2?_0x34b99f[0x1]:_0x34b99f[0x0];_0x4df9b5=monthCompare(_0x3d36d4,_0x3aeb19,_0x4de6d6);}return _0xd8a4fc&&_0x1b8859&&_0x50ad74&&_0x4df9b5;}}module[_0x9086('0x10')]['iftime']=iftime;
\ No newline at end of file
index 6bd2899..5c6d444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eda=['YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','{{{','}}}','meta','keys','stringify','transports','Console','warn','%s-%s','error','consoleLogger','fileLogger','path','util','winston','../config/environment','debugLevel','info','red','white','bold\x20white','gray','bold\x20blue','addColors','join','format','%s-%s.log','message','replace','[%s]\x20[%s]\x20%s\x20-\x20%s'];(function(_0xb7ae2a,_0x3a81f6){var _0x344984=function(_0x166257){while(--_0x166257){_0xb7ae2a['push'](_0xb7ae2a['shift']());}};_0x344984(++_0x3a81f6);}(_0x4eda,0x1bc));var _0xa4ed=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4eda[_0x321bb2];return _0x9c12ed;};'use strict';var path=require(_0xa4ed('0x0'));var util=require(_0xa4ed('0x1'));var moment=require('moment');var winston=require(_0xa4ed('0x2'));var config=require(_0xa4ed('0x3'));var debugLevel=config[_0xa4ed('0x4')]?config['debugLevel']['toLowerCase']():_0xa4ed('0x5');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':'redBG\x20white','error':_0xa4ed('0x6'),'warn':'bold\x20yellow','info':_0xa4ed('0x7'),'print':_0xa4ed('0x8'),'success':'bold\x20green','http':_0xa4ed('0x9'),'verbose':'bold\x20magenta','debug':_0xa4ed('0xa'),'silly':'bold\x20cyan'};winston[_0xa4ed('0xb')](XC_LOG_COLORS);function getLogFileName(_0x38b276,_0x2228d6,_0x3ee4bd){var _0xb145f2=_0x38b276||'/var/log/xcally';return path[_0xa4ed('0xc')](_0xb145f2,util[_0xa4ed('0xd')](_0xa4ed('0xe'),_0x2228d6,_0x3ee4bd));}function formatter(_0x594e0f,_0x2d1dbf){_0x2d1dbf[_0xa4ed('0xf')]=_0x2d1dbf[_0xa4ed('0xf')][_0xa4ed('0x10')](/@@{/g,'{{{')[_0xa4ed('0x10')](/}@@/g,'}}}')['replace'](/@{/g,'{{')[_0xa4ed('0x10')](/}@/g,'}}');return util[_0xa4ed('0xd')](_0xa4ed('0x11'),moment()[_0xa4ed('0xd')](_0xa4ed('0x12')),_0x2d1dbf[_0xa4ed('0x13')][_0xa4ed('0x14')](),_0x594e0f,_0x2d1dbf[_0xa4ed('0xf')]);}function fileFormat(_0x8c9466,_0x4e3523){_0x4e3523[_0xa4ed('0xf')]=_0x4e3523[_0xa4ed('0xf')][_0xa4ed('0x10')](/@@{/g,_0xa4ed('0x15'))[_0xa4ed('0x10')](/}@@/g,_0xa4ed('0x16'))[_0xa4ed('0x10')](/@{/g,'{{')[_0xa4ed('0x10')](/}@/g,'}}');var _0x2ad0e0=_0x4e3523[_0xa4ed('0x17')]&&Object[_0xa4ed('0x18')](_0x4e3523['meta'])['length']?'\x0a\x09'+JSON[_0xa4ed('0x19')](_0x4e3523['meta']):'';return util[_0xa4ed('0xd')]('[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s',moment()[_0xa4ed('0xd')](_0xa4ed('0x12')),_0x4e3523['level'][_0xa4ed('0x14')](),_0x8c9466,_0x4e3523[_0xa4ed('0xf')],_0x2ad0e0);}function consoleLogger(){var _0x35acbc=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa4ed('0x1a'))][(_0xa4ed('0x1b'))]({'level':_0xa4ed('0x1c'),'json':![],'formatter':function(_0x5b280e){return formatter('',_0x5b280e);}})]});return _0x35acbc;}function fileLogger(_0x1ba0c7,_0x1f1c6d){var _0x28688c=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa4ed('0x1a'))]['File']({'name':util[_0xa4ed('0xd')](_0xa4ed('0x1d'),_0x1ba0c7,_0xa4ed('0x1e')),'filename':getLogFileName(_0x1f1c6d,_0x1ba0c7,'error'),'level':_0xa4ed('0x1e'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x33f384){return fileFormat(_0x1ba0c7,_0x33f384);}}),new winston[(_0xa4ed('0x1a'))]['File']({'name':util[_0xa4ed('0xd')](_0xa4ed('0x1d'),_0x1ba0c7,debugLevel),'filename':getLogFileName(_0x1f1c6d,_0x1ba0c7,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x57afc2){return fileFormat(_0x1ba0c7,_0x57afc2);}}),new winston[(_0xa4ed('0x1a'))][(_0xa4ed('0x1b'))]({'level':'warn','json':![],'formatter':function(_0xa4570a){return fileFormat(_0x1ba0c7,_0xa4570a);}})]});return _0x28688c;}exports[_0xa4ed('0x1f')]=consoleLogger;exports[_0xa4ed('0x20')]=fileLogger;
\ No newline at end of file
+var _0x11a8=['%s-%s','error','File','consoleLogger','fileLogger','path','util','moment','winston','debugLevel','redBG\x20white','red','white','bold\x20white','bold\x20green','gray','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','format','%s-%s.log','message','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','{{{','meta','keys','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','transports','Console','warn','Logger'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x11a8,0xef));var _0x811a=function(_0x15bf0e,_0x1d2062){_0x15bf0e=_0x15bf0e-0x0;var _0x1f7592=_0x11a8[_0x15bf0e];return _0x1f7592;};'use strict';var path=require(_0x811a('0x0'));var util=require(_0x811a('0x1'));var moment=require(_0x811a('0x2'));var winston=require(_0x811a('0x3'));var config=require('../config/environment');var debugLevel=config[_0x811a('0x4')]?config[_0x811a('0x4')]['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0x811a('0x5'),'error':_0x811a('0x6'),'warn':'bold\x20yellow','info':_0x811a('0x7'),'print':_0x811a('0x8'),'success':_0x811a('0x9'),'http':_0x811a('0xa'),'verbose':'bold\x20magenta','debug':_0x811a('0xb'),'silly':_0x811a('0xc')};winston[_0x811a('0xd')](XC_LOG_COLORS);function getLogFileName(_0x10510a,_0x33dac3,_0x1d115e){var _0x4f9651=_0x10510a||_0x811a('0xe');return path[_0x811a('0xf')](_0x4f9651,util[_0x811a('0x10')](_0x811a('0x11'),_0x33dac3,_0x1d115e));}function formatter(_0x3bfed9,_0x5bcf7f){_0x5bcf7f[_0x811a('0x12')]=_0x5bcf7f[_0x811a('0x12')][_0x811a('0x13')](/@@{/g,'{{{')[_0x811a('0x13')](/}@@/g,_0x811a('0x14'))['replace'](/@{/g,'{{')[_0x811a('0x13')](/}@/g,'}}');return util[_0x811a('0x10')](_0x811a('0x15'),moment()[_0x811a('0x10')](_0x811a('0x16')),_0x5bcf7f[_0x811a('0x17')][_0x811a('0x18')](),_0x3bfed9,_0x5bcf7f['message']);}function fileFormat(_0x2239df,_0x672f27){_0x672f27[_0x811a('0x12')]=_0x672f27[_0x811a('0x12')][_0x811a('0x13')](/@@{/g,_0x811a('0x19'))[_0x811a('0x13')](/}@@/g,_0x811a('0x14'))[_0x811a('0x13')](/@{/g,'{{')[_0x811a('0x13')](/}@/g,'}}');var _0xc3d16b=_0x672f27[_0x811a('0x1a')]&&Object[_0x811a('0x1b')](_0x672f27[_0x811a('0x1a')])['length']?'\x0a\x09'+JSON[_0x811a('0x1c')](_0x672f27['meta']):'';return util['format'](_0x811a('0x1d'),moment()[_0x811a('0x10')](_0x811a('0x16')),_0x672f27[_0x811a('0x17')][_0x811a('0x18')](),_0x2239df,_0x672f27[_0x811a('0x12')],_0xc3d16b);}function consoleLogger(){var _0x40f29d=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x811a('0x1e'))][(_0x811a('0x1f'))]({'level':_0x811a('0x20'),'json':![],'formatter':function(_0x33c6b2){return formatter('',_0x33c6b2);}})]});return _0x40f29d;}function fileLogger(_0xa0c9ed,_0x30b72c){var _0x4ec72b=new winston[(_0x811a('0x21'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x811a('0x1e'))]['File']({'name':util[_0x811a('0x10')](_0x811a('0x22'),_0xa0c9ed,'error'),'filename':getLogFileName(_0x30b72c,_0xa0c9ed,_0x811a('0x23')),'level':_0x811a('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1434ed){return fileFormat(_0xa0c9ed,_0x1434ed);}}),new winston[(_0x811a('0x1e'))][(_0x811a('0x24'))]({'name':util[_0x811a('0x10')](_0x811a('0x22'),_0xa0c9ed,debugLevel),'filename':getLogFileName(_0x30b72c,_0xa0c9ed,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4955d0){return fileFormat(_0xa0c9ed,_0x4955d0);}}),new winston['transports'][(_0x811a('0x1f'))]({'level':_0x811a('0x20'),'json':![],'formatter':function(_0x47431f){return fileFormat(_0xa0c9ed,_0x47431f);}})]});return _0x4ec72b;}exports[_0x811a('0x25')]=consoleLogger;exports[_0x811a('0x26')]=fileLogger;
\ No newline at end of file
index b5dd75f..81357b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['length','isString','replace','}@@','includes','exports','lodash','newPassword','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','token','accessToken','authToken','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray'];(function(_0x44b3bd,_0x44c97d){var _0x1efc4a=function(_0x5d0205){while(--_0x5d0205){_0x44b3bd['push'](_0x44b3bd['shift']());}};_0x1efc4a(++_0x44c97d);}(_0x0295,0x1f0));var _0x5029=function(_0x22395a,_0x4a4fd0){_0x22395a=_0x22395a-0x0;var _0x436c90=_0x0295[_0x22395a];return _0x436c90;};var _=require(_0x5029('0x0'));var sensitiveFields=['username','password',_0x5029('0x1'),'apiKey','firstName',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7'),_0x5029('0x8'),_0x5029('0x9'),_0x5029('0xa'),'code','accessKey','tenantId',_0x5029('0xb'),'channelSecret',_0x5029('0xc'),'accessTokenSecret',_0x5029('0xd'),'consumerKey',_0x5029('0xe'),_0x5029('0xf'),_0x5029('0x10'),'calleridnum',_0x5029('0x11'),_0x5029('0x12'),_0x5029('0x13'),'privateKey',_0x5029('0x14'),_0x5029('0x15'),'key','user','pass','accountSid',_0x5029('0x16'),_0x5029('0x17'),_0x5029('0x18'),_0x5029('0x19'),_0x5029('0x1a')];function maskSensitiveData(_0x11c24b){const _0xe278b7=/(?!^)[\s\S](?!$)/g;if(_[_0x5029('0x1b')](_0x11c24b)){for(const _0x10bf55 in _0x11c24b){if(_[_0x5029('0x1c')](_0x11c24b[_0x10bf55])){for(let _0x457c73=0x0;_0x457c73<_0x11c24b[_0x10bf55][_0x5029('0x1d')];_0x457c73++){maskSensitiveData(_0x11c24b[_0x10bf55][_0x457c73]);}}else if(_[_0x5029('0x1b')](_0x11c24b[_0x10bf55])){maskSensitiveData(_0x11c24b[_0x10bf55]);}else if(_[_0x5029('0x1e')](_0x11c24b[_0x10bf55])){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](/{{{/g,'@@{')[_0x5029('0x1f')](/}}}/g,_0x5029('0x20'))[_0x5029('0x1f')](/{{/g,'@{')[_0x5029('0x1f')](/}}/g,'}@');if(_[_0x5029('0x21')](sensitiveFields,_0x10bf55)){_0x11c24b[_0x10bf55]=_0x11c24b[_0x10bf55][_0x5029('0x1f')](_0xe278b7,'*');}}}}}module[_0x5029('0x22')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0x66fa=['calleridnum','vidaooApiKey','privateKey','secretaccesskey','key','user','localstationid','oldPassword','isPlainObject','length','isString','replace','includes','exports','maskSensitiveData','lodash','username','newPassword','apiKey','firstName','lastName','street','phone','mobile','clientId','clientSecret','securityToken','code','accessKey','token','accessToken','authToken','calleridname'];(function(_0x549f54,_0x56ef2d){var _0xf9c194=function(_0x3fc239){while(--_0x3fc239){_0x549f54['push'](_0x549f54['shift']());}};_0xf9c194(++_0x56ef2d);}(_0x66fa,0x117));var _0xa66f=function(_0x603db0,_0x9a8425){_0x603db0=_0x603db0-0x0;var _0x51d5ec=_0x66fa[_0x603db0];return _0x51d5ec;};var _=require(_0xa66f('0x0'));var sensitiveFields=[_0xa66f('0x1'),'password',_0xa66f('0x2'),_0xa66f('0x3'),_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8'),'fax','email',_0xa66f('0x9'),_0xa66f('0xa'),_0xa66f('0xb'),_0xa66f('0xc'),_0xa66f('0xd'),'tenantId',_0xa66f('0xe'),'channelSecret',_0xa66f('0xf'),'accessTokenSecret',_0xa66f('0x10'),'consumerKey','consumerSecret','membername',_0xa66f('0x11'),_0xa66f('0x12'),'exten',_0xa66f('0x13'),'clientEmail',_0xa66f('0x14'),'accesskeyid',_0xa66f('0x15'),_0xa66f('0x16'),_0xa66f('0x17'),'pass','accountSid',_0xa66f('0x18'),'dsn','secret','registry',_0xa66f('0x19')];function maskSensitiveData(_0x452c37){const _0x267129=/(?!^)[\s\S](?!$)/g;if(_[_0xa66f('0x1a')](_0x452c37)){for(const _0xd348f9 in _0x452c37){if(_['isArray'](_0x452c37[_0xd348f9])){for(let _0x5510dc=0x0;_0x5510dc<_0x452c37[_0xd348f9][_0xa66f('0x1b')];_0x5510dc++){maskSensitiveData(_0x452c37[_0xd348f9][_0x5510dc]);}}else if(_[_0xa66f('0x1a')](_0x452c37[_0xd348f9])){maskSensitiveData(_0x452c37[_0xd348f9]);}else if(_[_0xa66f('0x1c')](_0x452c37[_0xd348f9])){_0x452c37[_0xd348f9]=_0x452c37[_0xd348f9][_0xa66f('0x1d')](/{{{/g,'@@{')[_0xa66f('0x1d')](/}}}/g,'}@@')['replace'](/{{/g,'@{')[_0xa66f('0x1d')](/}}/g,'}@');if(_[_0xa66f('0x1e')](sensitiveFields,_0xd348f9)){_0x452c37[_0xd348f9]=_0x452c37[_0xd348f9][_0xa66f('0x1d')](_0x267129,'*');}}}}}module[_0xa66f('0x1f')][_0xa66f('0x20')]=maskSensitiveData;
\ No newline at end of file
index b33db74..8365db1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['isArray','map','isPlainObject','keys','reduce','safeTemplate','lodash','replace'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0xbb7703,_0x259f68){_0xbb7703=_0xbb7703-0x0;var _0x4df869=_0xdd4f[_0xbb7703];return _0x4df869;};var _=require(_0xfdd4('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x51d240){return _0x51d240==='{{'?'{\x20{\x20':'\x20}\x20}';}function safeTemplate(_0x291ae7){var _0x19cda7=_0x291ae7;if(typeof _0x291ae7==='string'){_0x19cda7=_0x291ae7[_0xfdd4('0x1')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xfdd4('0x2')](_0x291ae7)){_0x19cda7=_0x291ae7[_0xfdd4('0x3')](function(_0x554e44){return safeTemplate(_0x554e44);});}else if(_[_0xfdd4('0x4')](_0x291ae7)){_0x19cda7=Object[_0xfdd4('0x5')](_0x291ae7)[_0xfdd4('0x6')](function(_0x307ac6,_0x3c72d4){_0x307ac6[_0x3c72d4]=safeTemplate(_0x291ae7[_0x3c72d4]);return _0x307ac6;},{});}return _0x19cda7;}module['exports'][_0xfdd4('0x7')]=safeTemplate;
\ No newline at end of file
+var _0x8952=['exports','safeTemplate','{\x20{\x20','\x20}\x20}','replace','isArray','map','isPlainObject','keys','reduce'];(function(_0x3d2d6f,_0x368872){var _0x5c0022=function(_0x408819){while(--_0x408819){_0x3d2d6f['push'](_0x3d2d6f['shift']());}};_0x5c0022(++_0x368872);}(_0x8952,0x17e));var _0x2895=function(_0x2d62de,_0x1d4df5){_0x2d62de=_0x2d62de-0x0;var _0xa69d77=_0x8952[_0x2d62de];return _0xa69d77;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2a7389){return _0x2a7389==='{{'?_0x2895('0x0'):_0x2895('0x1');}function safeTemplate(_0x2d485c){var _0x2454c5=_0x2d485c;if(typeof _0x2d485c==='string'){_0x2454c5=_0x2d485c[_0x2895('0x2')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x2895('0x3')](_0x2d485c)){_0x2454c5=_0x2d485c[_0x2895('0x4')](function(_0x5b28c6){return safeTemplate(_0x5b28c6);});}else if(_[_0x2895('0x5')](_0x2d485c)){_0x2454c5=Object[_0x2895('0x6')](_0x2d485c)[_0x2895('0x7')](function(_0x4ea619,_0x526c32){_0x4ea619[_0x526c32]=safeTemplate(_0x2d485c[_0x526c32]);return _0x4ea619;},{});}return _0x2454c5;}module[_0x2895('0x8')][_0x2895('0x9')]=safeTemplate;
\ No newline at end of file
index 2f1239d..894d7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe933=['../config/environment','resolve','server/app.json','isArray','apps','findIndex','name','string','env','NODE_PATH','updated','writeJSON','exports','fs-extra'];(function(_0x3cd9c7,_0x77b5fd){var _0xb61977=function(_0x115f03){while(--_0x115f03){_0x3cd9c7['push'](_0x3cd9c7['shift']());}};_0xb61977(++_0x77b5fd);}(_0xe933,0x179));var _0x3e93=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xe933[_0x344a3f];return _0x264712;};var fs=require(_0x3e93('0x0'));var path=require('path');var config=require(_0x3e93('0x1'));var root=config['root'];var APP_JSON_PATH=path[_0x3e93('0x2')](root,_0x3e93('0x3'));var NODEPATH=path[_0x3e93('0x2')](root,'legacy-libs');function setLegacyLibsNodeEnvPath(_0x310cae){let _0x18d609=![];if(Array[_0x3e93('0x4')](_0x310cae[_0x3e93('0x5')])){var _0x4b879c=_0x310cae[_0x3e93('0x5')][_0x3e93('0x6')](function(_0x2ffc61){return _0x2ffc61[_0x3e93('0x7')]==='motion2';});if(_0x4b879c>-0x1){var _0x44c1a9=_0x310cae[_0x3e93('0x5')][_0x4b879c];if(typeof _0x44c1a9['env']['NODE_PATH']!==_0x3e93('0x8')){_0x44c1a9[_0x3e93('0x9')][_0x3e93('0xa')]=NODEPATH;_0x18d609=!![];}}return{'appConfig':_0x310cae,'updated':_0x18d609};}}function updateAppConfig(_0x37f90f){return fs['pathExists'](APP_JSON_PATH)['then'](function(_0x7554d8){if(_0x7554d8){return fs['readJSON'](APP_JSON_PATH)['then'](function(_0x253b50){var _0x382874=setLegacyLibsNodeEnvPath(_0x253b50);if(_0x382874[_0x3e93('0xb')]){_0x37f90f['info']('Updating\x20app.json');return fs[_0x3e93('0xc')](APP_JSON_PATH,_0x253b50,{'spaces':0x2});}else{return Promise[_0x3e93('0x2')]();}});}else{return Promise[_0x3e93('0x2')]();}});}module[_0x3e93('0xd')]=updateAppConfig;
\ No newline at end of file
+var _0xc070=['then','updated','info','Updating\x20app.json','exports','fs-extra','path','../config/environment','server/app.json','resolve','legacy-libs','isArray','apps','findIndex','name','motion2','env','string','NODE_PATH','pathExists','readJSON'];(function(_0x449248,_0x39545b){var _0x4e03ac=function(_0x1265d8){while(--_0x1265d8){_0x449248['push'](_0x449248['shift']());}};_0x4e03ac(++_0x39545b);}(_0xc070,0x194));var _0x0c07=function(_0x48c2b7,_0x352f2c){_0x48c2b7=_0x48c2b7-0x0;var _0x1f82d4=_0xc070[_0x48c2b7];return _0x1f82d4;};var fs=require(_0x0c07('0x0'));var path=require(_0x0c07('0x1'));var config=require(_0x0c07('0x2'));var root=config['root'];var APP_JSON_PATH=path['resolve'](root,_0x0c07('0x3'));var NODEPATH=path[_0x0c07('0x4')](root,_0x0c07('0x5'));function setLegacyLibsNodeEnvPath(_0x2559d8){let _0x21c752=![];if(Array[_0x0c07('0x6')](_0x2559d8[_0x0c07('0x7')])){var _0x3ed485=_0x2559d8[_0x0c07('0x7')][_0x0c07('0x8')](function(_0x20e288){return _0x20e288[_0x0c07('0x9')]===_0x0c07('0xa');});if(_0x3ed485>-0x1){var _0x1309c7=_0x2559d8[_0x0c07('0x7')][_0x3ed485];if(typeof _0x1309c7[_0x0c07('0xb')]['NODE_PATH']!==_0x0c07('0xc')){_0x1309c7[_0x0c07('0xb')][_0x0c07('0xd')]=NODEPATH;_0x21c752=!![];}}return{'appConfig':_0x2559d8,'updated':_0x21c752};}}function updateAppConfig(_0xe51f48){return fs[_0x0c07('0xe')](APP_JSON_PATH)['then'](function(_0x5e6c47){if(_0x5e6c47){return fs[_0x0c07('0xf')](APP_JSON_PATH)[_0x0c07('0x10')](function(_0x4bee77){var _0x4bf65e=setLegacyLibsNodeEnvPath(_0x4bee77);if(_0x4bf65e[_0x0c07('0x11')]){_0xe51f48[_0x0c07('0x12')](_0x0c07('0x13'));return fs['writeJSON'](APP_JSON_PATH,_0x4bee77,{'spaces':0x2});}else{return Promise['resolve']();}});}else{return Promise[_0x0c07('0x4')]();}});}module[_0x0c07('0x14')]=updateAppConfig;
\ No newline at end of file